From f30538a7af19609a387fcf03eab7796551d82f26 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 31 Jul 2023 10:49:15 +0200 Subject: [PATCH 001/160] Version bump --- CHANGELOG.md | 2 ++ Makefile | 4 ++-- tests/speculos/test_configuration_cmd.py | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cd99025a..144cddeb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [1.10.4](https://github.com/ledgerhq/app-ethereum/compare/1.10.3...1.10.4) - 2023-XX-XX + ## [1.10.3](https://github.com/ledgerhq/app-ethereum/compare/1.10.2...1.10.3) - 2023-07-27 ### Added diff --git a/Makefile b/Makefile index 4715da52a..f0ae3d437 100644 --- a/Makefile +++ b/Makefile @@ -34,8 +34,8 @@ APP_LOAD_PARAMS += --path "1517992542'/1101353413'" APPVERSION_M=1 APPVERSION_N=10 -APPVERSION_P=3 -APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) +APPVERSION_P=4 +APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)-dev APP_LOAD_FLAGS= --appFlags 0xa40 --dep Ethereum:$(APPVERSION) ########################### diff --git a/tests/speculos/test_configuration_cmd.py b/tests/speculos/test_configuration_cmd.py index 8027b2cf8..36e4cede8 100644 --- a/tests/speculos/test_configuration_cmd.py +++ b/tests/speculos/test_configuration_cmd.py @@ -1,10 +1,10 @@ def test_configuration(cmd): if cmd.model == "nanos": - assert cmd.get_configuration() == (14, 1, 10, 3) + assert cmd.get_configuration() == (14, 1, 10, 4) if cmd.model == "nanox": - assert cmd.get_configuration() == (14, 1, 10, 3) + assert cmd.get_configuration() == (14, 1, 10, 4) if cmd.model == "nanosp": - assert cmd.get_configuration() == (14, 1, 10, 3) + assert cmd.get_configuration() == (14, 1, 10, 4) From 4f8dbe09b7483547c7c59b57a95b9dd478f885a2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 1 Aug 2023 11:24:41 +0200 Subject: [PATCH 002/160] Re-generated Stax golden snapshots for API_LEVEL 12 --- .../stax/domain_name_non_mainnet/00000.png | Bin 8607 -> 8691 bytes .../stax/domain_name_non_mainnet/00001.png | Bin 12824 -> 13104 bytes .../stax/domain_name_non_mainnet/00002.png | Bin 9538 -> 9597 bytes .../stax/domain_name_non_mainnet/00003.png | Bin 5086 -> 5467 bytes .../stax/domain_name_unknown_chain/00000.png | Bin 8607 -> 8691 bytes .../stax/domain_name_unknown_chain/00001.png | Bin 15045 -> 15439 bytes .../stax/domain_name_unknown_chain/00002.png | Bin 6933 -> 7014 bytes .../stax/domain_name_unknown_chain/00003.png | Bin 9538 -> 9597 bytes .../stax/domain_name_unknown_chain/00004.png | Bin 5086 -> 5467 bytes .../stax/domain_name_verbose_False/00000.png | Bin 8607 -> 8691 bytes .../stax/domain_name_verbose_False/00001.png | Bin 10942 -> 11161 bytes .../stax/domain_name_verbose_False/00002.png | Bin 9538 -> 9597 bytes .../stax/domain_name_verbose_False/00003.png | Bin 5086 -> 5467 bytes .../stax/domain_name_verbose_True/00000.png | Bin 8607 -> 8691 bytes .../stax/domain_name_verbose_True/00001.png | Bin 14741 -> 15199 bytes .../stax/domain_name_verbose_True/00002.png | Bin 7822 -> 7918 bytes .../stax/domain_name_verbose_True/00003.png | Bin 9538 -> 9597 bytes .../stax/domain_name_verbose_True/00004.png | Bin 5086 -> 5467 bytes .../stax/domain_name_wrong_addr/00000.png | Bin 8607 -> 8691 bytes .../stax/domain_name_wrong_addr/00001.png | Bin 15550 -> 15633 bytes .../stax/domain_name_wrong_addr/00002.png | Bin 9538 -> 9597 bytes .../stax/domain_name_wrong_addr/00003.png | Bin 5086 -> 5467 bytes 22 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00000.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00000.png index 795ca0c2a185ec1e7722d7540106a25979c5cf4f..f992e718a17c0a7952eb569a7d3a3ac7662fe27e 100644 GIT binary patch literal 8691 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 kD|~rRfK8+sp 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 diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00001.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00001.png index 661ea68efa75f3947e58200c587b153cf08f73a7..9c677e29b211524b3549cfed5c71a64e3ceac92a 100644 GIT binary patch literal 13104 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 Pn9PhUZ`a&%fBL@w`ChqM diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00002.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00002.png index 7f634cc4a8e9160c710a1271dffe84a1e4208ac9..bc1ca9382cfe2a299a5bfb35c76039d7a8ff0893 100644 GIT binary patch literal 9597 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 H_TWDNq$iJk literal 9538 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 diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00003.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00003.png index 7a05bf7b31c3fca94a4a464ad8709d1c20600e36..cd2f52759f160c3e2cf6822395ea675b8c84a851 100644 GIT binary patch delta 3463 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 W_hL-Xeg|0tu3wG^A8R@qfAhb*jea!% delta 3069 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 diff --git a/tests/ragger/snapshots/stax/domain_name_unknown_chain/00000.png b/tests/ragger/snapshots/stax/domain_name_unknown_chain/00000.png index 795ca0c2a185ec1e7722d7540106a25979c5cf4f..f992e718a17c0a7952eb569a7d3a3ac7662fe27e 100644 GIT binary patch literal 8691 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 kD|~rRfK8+sp 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 diff --git a/tests/ragger/snapshots/stax/domain_name_unknown_chain/00001.png b/tests/ragger/snapshots/stax/domain_name_unknown_chain/00001.png index 25278595239f5dad36d574d40b68a59e5512c75d..1cebd8d3005b8470eeca1f909012fd4d73dbb4b2 100644 GIT binary patch literal 15439 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

}X2neX@ZV>P=A4Cf`Fw45Uwy1Dl4Bkub_OqyN{7 zX^D#pvv27kY(L4!1QB^~{0`S>kiM+dZima(DOrcVxv!i*FIsWJQ3ubl-HYC+0kirj zXT8N@W#*cm8dNa0>{CK@YA19;eR3aZug8Rj;dJ*5R%VS^GD*6j&3V&jj)iBj_W}5- z{>$(DRk<$;jm%m{-g!&rS63e6P(`B`ItuQ^kRn{JkEj?aQhi)hD~yt7rZ#qTrGA=u z*5_11`2#GjdG}5|2FPW+9XSDW?~9){`CX!C>{X+p&3zzJH|%L|qMA0l^oG8S^AqrH zrNRMK;*Es?6>%#-EEjeVq5>Qt$%ZbeH&M|)b9-c7R(X*B02lYoiis)Oy*?pMJ?7s> z2k%9TBh7sn@}B8!bQGp)eX>XPNsJBU&G9l02x9=2n5T>}J?8d0JzggTcK~ju~N^Nqam)kY*w=zyK^6yqCT_t%QGL9@pQ|*HQKw3F_gj?!JzL70xz2IK^3u zU*z$qrf8o%9UkwTP5#rE+KG?eC~*`edG#zqF_D^*t=EBT%4yaK(z8oH+7G+> zG+$}g?43T5=TQ@SZtemCQjaWSXN0DU)2-CMnTDc@d&r$zXgTUN1VBYQYyIJi_^o#d37 zPN)H>4jh~9KepwQG*siF7MBnXvE01j?3|mxjVm+{&T_(Hv4r=Uo}(br0zr>k*XD&! zaXYmOXy6TFh@E&YzfHFBM?k}XQM!LF;#nyzINq2nbG^^W-FbL)G7~M7fqJMW*do93l*N z62p+|UPBFI#aB!peFHYfr0XYw*u!B2Dq0O!H_I%BpmU#n;3QkB-)U23tiMENc5{jq z8b{(IvGvn^_=XozYkI`3{|RL}pDCILW4RTHrBe?$wktopEK>KG2g^^EeYqD?mpLu$N1yW!RGizhZV6|p0;6=obl%WO7bYCmy{h24kfQ<0tL;um+>t}E&=Do9D zb@CpH3z5Qag%_Jfy>FPTP9I;{sOAoj{~N>b)Bw1tzd)+jq4jImenPX;#sCbX&`8y1 zy%E+oIdI1J+DNgfYzzbYR`PJgaNwLQk!MWx|I=p5@La1)+UH9Fo-h0>q^c@=JwPSK z))`yzTx7D}P^ZngxR%AjhCQkJY9)GrAXQj8Mp6fm>8D`-iNGNbEOeH6=xJSyj1ymw z3cb~w=h{iUzkyunJCWl8<7D}6CywP0JORS_86L)aWbA2#zz#uY(I-Qrv8rd1%v}Y}avI}SOdEQj*EM z^`N(O9D+@*<(h0rJMn+4rf=N%i#>~RfhGTX_(22|)s9O2s0;#CpKL0QFVNb>Ho+{E z<>Z&JZfgZ>$3ak(_EdeH$|>{U?Akj%x%fu@7$y{4z+&is`aN+;IW-kG4Ew{-Ujt9= zPl38Endv6aYQqv9xjivBu6wIaIpD{z9a7I|AUi9*`g-JlPK6R=5h)$CFsqJZ)ZbU&&Kk zmiIY#QN;Yzgd1H9l#mJtb!}~{rmLxJbw?vVq8HoS#noAN;rp4?<))A|aRyCCHvy?Z z<^?s3eU5QNm+Fv({snp_gU#pvPW1OQeP35npjDIKkV{EHSX<#XLa*YsjUm)CC32I?;m{N`B z#+68aE!u~j!k)%mU2psM#tMtdVzI6lZk)@l8X@Bg`!8x<*ACqnBs`jK7or850Uy)d zPx7Sb?C6C8OA9zZjL+GhcY-N$bGLlnFm4MnA}U<)Aw$A*jEkX zEj>r=XsdE=OeJFVaPkY%LxJwLo)e8TQz+||zpWHzdw&^|u9UW5Emp#)jLd>en78kv zzj!I5G4one4Jm<})eR?rEcYrpLvch?jMB*wJ>e9y!+jILen>QMa1uMzD2&cy$|Cg5 zR(%~FI@B~O|LN8^LLV>*lm^n~yU!myfc>pwhs)JqvPzFVvJ>6)<->+G>dyZs2pW`E9Rk=yjiFJzt+^1Qagfv33c-K^vm~ z?=T8$F+YL`tl||w#VX?3HiTg2D>gA-wt2tRzkP9w%9}6=QQ7^W-j&fVY~fz?laoTQ zA*&z#N~+33k5gVwk&!Y_I+hh24pj4tMF*qY9m0oA$9^a3;*h0cV)aZUCww%&rx76Q z^efbQGHXqwg1AHewt$X_w-F?9+f{3U?Z1Xvk`4a(+tc0$iD&H{>F=|BGXE{oA{Yzp z%ezjtoyxS|gix!q5=x+k>n;d|MmySP^&LMf)?=IhS+ppA@(C0V)TU9bsQASSV*0pB z^i+qSfau%G{r~AkuVgDF`vTYFMHzG#8A&czhtMO3Jo8ph)GJFx4x9P8Hh@;zSIm7v zoSioXEw4EK^6pYCk&J#e%lQq^!Wi-UMXIszCttmd76Rm$5!Y3uFnz3WZcQ0L~kqsErcZWK@jiC9$*K1$i&=P5*1>9ldjHNHO2vbLk&mK){!%woq(=4 z$+*GOT{Y>$lx=Ko)^l(=%_HUF!!Z_&o}}-0FXixZKqRNlrxBj=hxd=sD=S^9oOx$< z6dJ3Bdt0q5+YGJ)L*<4!tiV@+h711foM$)yx#e_2uMHB@{Fpq8xM)Bj`XU&;a{CEbnciK#>SPkJJQ91z;QhQBO=BhG%l*KHwt zZN%iUMQ~!&g>awwJ=r4qN{1>Uz(vRid8E+2tD>+wxb2qdXWHCZSdAGl!~3-zP7PZO zjiiUrbT+*bZHEp+=`LwXX03ScYx8h>G!p$Mji-9^rHBVmprqc1_q`|xl5`SneUvLi zYR!E8n+J4xrl+R?xCKDC-F(C6;gRUznsJ3ZiX}dLNKqJT9+$Z}9PDrT)TuIr&gF(~ zL;-pKWH~LE(sLt~mL1SPmjKKl_x7Ylp%+j(IR$B>sK7sxhSuGJR(t&l_NtP?+NZd@ z811hp2f^f_h2LRMFXoQ<9Zm#VI$WQM4y_hPWP#L`Ta@U3v-l)SJjfz*nWhsL-Qn)%6gE{$Ah9=WqO z%fCWJ)k7nDvW?}@*g;bN1I)<9cIImv*oNR!ZV);}aq%z+n!e;hhzMw@h&ue26%LtE zm%UpQx5O&;dBH0*3Z+fY!TZd$Snf$fZe)@4VvOr{67%_#(K+&>mqD5C)7_Fsm`iFc zOm#g6tOTwU;KSsh7@g!Hw}SrGWk^_1Zn_)oXEeDUWDS(I`duA8BQ793V(uyvc$X?N zAYU7450+?PaO0+$}cxH93Fgi&%$N-9H}7u@d_9~6QmmQswxNv(PX)MaM0ofQt+ z=r+I4l0sb8)Zz8tGcjLL@RV>;+mTFV&>DuT1CIi0`yf}yHp;KEQrhqWxd$6C_i!lK zjy4B*UR>7Xpn*8GBc2&$z62n2imCo3Fi<*dRZk9V8iGcC2L7_}eu=$cpZq z%VHHwq~IlvIl=l$7naU1pdEPtP2ODyvsyCqQI^ptd-#rIME4`}V6I$t$Vsije&b*A z1@jH|X90EQ!FTJ7oaXQr2Dy`CB(poRE2bF6qj|>IfOYn}^od+uTP=ezL9%q&*TdG3@%Do&Rkvn+5p4b4(~ zG;!_e8^IzVDL?_5^nBOI;6{9CKfD#cQyC|4;XTm5+DwijBB(!;2>QYMelR6PsuivM zjAMfKK)nnMZ#$U|9fZ*%gGwfTUXR+t>x}S>IouPYF{blu+ImlP&~uGjn6d~@Ea1|3 zf6kz(G?8ZV86bTTKgyv5FFXZ7Uy8J&l|TuAoIXwopy}8Zuq=oJw0XpC)7Xwy?V?tC z6YUT99yEb&)Z&9?AwZ*Z_uIDRL>j5J$r_3Hd_JQNGB^%siXjLqzt#26ku9Fi&JuxI ze_(gr8F`dX9(P(8y;GFqKwoCpv2p6J(^bQHXuF)4GlAl40^0o(skmOq<@+zq3fg(T zLJa@#*6q_8wqk@ph|B2Ox4Rc)G#3KjdEWl`SV8tre+ba{+i7#dm8knF16)3(>)YK+ zbBWK1SuUz!@AjMYVTla*XcKOjX?W^zh9>hgk(IG&ovW?lx4*Ko==r{<^+T^> z9FH#qR`)7W9#1lzF=hO%ct9oxOb{8$kA}gd6=S;_B3cj}Jlk$E@TAXzaPI2zcvIFR z-(vI&*VA@48f^3Y$0A!y*thw4VnEd@cqpy!3&viH}35WxU;kM zsM9z?!Oy~uwiwwmnL?&LDX_J*1uq;kHSI1R^u%7Eg4 z?4K)X&dzJX=#u*d%5Lb=Yf6p1R|hi9a9=ZT?APiJUd$+`RnSYbyb8a2C|nq<_cSkk zap;QmjZTyAXSccuHGtIwe*ZHf?KLu zxoRY>aCtu}E)xZ8240Mbfh|^zyprGWumcPj)-J{h(^};U9Ad}eIZ_*<-h&BA0x0!K zrTjnBtlMMtnV!qC1;>vxCTuDn7x-@eznpIW$==)lrGKaGP4nb5d~L36>;CZiJcW?= zpzXvfYDk-<`owS(4%zi#(w%?p*gNJZ+7{QE1;lOK(`3D&7@2W}RQmHbAu)z8SH}l+ z)E}Rj5&jwt>z@8;iUkCO_IdW&dFKLNS=3^4Gb6e8@%@{liOYV3neA ztz7&d(8OcFQyG>|0X#a|HTjUE3G{oHPS4Ses<8B{)V37gxVX67mKQ7}+8>~QG9y4j zqXcLVO@QGPO%UJ<1C+W^$twzP8~#s+OD^|Sgv^o`fj-Ia4{jXX0VFSYF|gF%?xwQ< z3k^^wXT$D=?t2cYNjmYaa{A|M*R@*N)rXR3WHEpRLrnb|uYZcv78?ECxePdAQ{ z$)m_S^p(h#`SGpzP?Lp8wT6w6kO_t0z39+)a~U8KAq}(t%a;e*cY!hK(>;g|OWy=7 z5OWCrg8-Yuv(LRc9{YSqg^GD0xR&RJ>Do3Km&IpuL^X-PVz5(Z`Y)izxGQEyCz_Uk zAtvOB{W+jxx9L_B zo(^bu4p4`2&+r0Pw)`=d)Ys~l=C<>4XtBxYi{ig3D~$s$?5o*moE4{vFDU0MAJ&Xo z>CHqQzBMlWqaf%Oa$x`c=?<5jmk0Uzy6sKB72*nh-g*NCRIM~B)nSVZg>}%~YLjNS z@3y3+&o;3e?teVB|6YP`IrRL|ug#A-c7IdIfR_smG~je_NF~|fGAO2O;Aq7QtrXTz zBhVjUz|In33@FJ`o9p4BQG$T{A7uyzqQ{-%;+zFn!;QkIHDhm>yUO8O_O7zAWJG3k zwa!W0j@N?z%a+5sHV(1GuO5DC==uZ<_<@#BNg|gcvjFd7sv(^?Ar-NEH`5ZRw8`Ta zfQg4qS>p5Ew=YJn+LY&|w(h0`z)SJ<+IP(cA0J}y-f!O`t11^F&ls!g<5lib@ap=b z#o<@aMHtJO_|^e83A}x0rT5PJB_5v=aP}-j!o4_t>aqUS>>n3b(zU6ys1342&OP8~ z++h01Z^-xAu%Bj)MF}#OHfCM{YDdHjAhy=Az(4v9fHVtOYbJprwvBjZY zYg(?~%^pc{(>j)m#BX+AuR;3!^5$vm4rH|YjUkp={7E(Nj+aQoPb*QjzCvwl&eehb zIvn+G#l^%EyLWm5cY8*#pZ~%f2Bd`U-A{_aUvFA$w~g-S+-(%5ZVlKaPgY6iuul=p zI{*YvEb-W#AfN;C(MvftA3+fFgbdwIUhJoLp9qLo6C~-^lDFz=0-!IOxn+a1VbASt zG8D5({-1Q)TPLnnagwU!w8~|p(e8nXxJvp`K$&ys!LwfY*2`hMeqExw55s6wP~< z>Ooj-8E;KTG)B`#7YV!#Zzt)MbkM73AzqK*R7dZ-KzrjMY<)MPr%n4gbu)$bw5|?J zEAU2X(hzQq-!3!1G_H%-5xxAZLwYOMR4$Dn#GL#T^?sWpMA@>KEhH)JS zNVQ36j{n%hzH>!C?itHn)m>DW85anlD_eg@radi##xeu#z$^S0?GG0loX*?P6s?QC z1YWb)&AKc9oqf{(b-v>NmNxPKZ(o0#w;=n=*}nV+y-8e3ZP!k%vPdKCuHBySuAhxgW# zjl;&9aBM@n8|=HiE5GMk$`%NdOOd%p=z26!uyx1P%{<(!cpHb74yIfbS}sRxnj zfgj&L>EZtT9AS2Ks&eYF^pcQe-)8{#(NZlK)hO;`2LN z;?s5R&y&^;W;p?VA|-j#3I)z^s*;0^@HRz7DIvef{u1DA%mq5q2eJ(gwY%YFZ0XV) z8J6!+#F3?=2IIg4Y23+B&XdD(ngBlX@*&Wmi`#t8YHmq8yL7n9V-V0v=OTMww9|WG_CGKj3Ha=I?jJkBHvQi6c#55OW`vYcnE)Q_<8A4T&Lq=FNYIp-r z(Nla)8>RK^+Q;;^jEyM9jZ9idYMAw&s#v0zZOqlM$WE8)Lm4{@b>%$)9ysF)xQ9(b zZ3v)MnMa=R+&iLXZC1o9oSZJFKONlCq+VRpFnEnJx-mF+7eD3*ASqy0jddc`h%EWl z=w{!938p7*+PX)6{zPA@#y9qGg!O0B5{?uWCaukdoGP$B^cfW^H+LN4IRk{&iUs?OqP+28(_NB=VWi$IISo4N+ z*6O)>`OT87m@h$qDRec`o}ryKGvv=mgknr=+Up;2L z=O@gQ2{8?{yt%Ps}hX%LngDVXeYwPQzS5!V!AR@9uUy?qSs!NJDlR%2Tlf0 zfA+YVD*)YQtfZuG>XbUy1ZI+c%D>C1b2y(~?ZV9N@kXg+W5T^D?fQ0r-PuoXq}526 z@KEyxdN#PRl8pkSmC%UXQCiGi8*Lk=b??#AgjQzw8(U|36A=ACM4r_IC@wR>J*Mcl z2BVPy$AxWFyxI&sv=8pTn0e6g_{VQ|gXodKZLGzS1@3`XtCeMsI z5z^-q`(~mubH(gvGf2*_7bKmi+%uZcEdSh{+1pKYoat*a8bfBikW8OEmMcCV{yU0P znjLK4D?ZixMdgIKuq0&zVqx)YxuhPXjeT(qKOJ_|cK2jY{&X}B2=wyUpgk+BceI)j zAKcv_@|;?717=ybbvr|rhvl=^&mT1 z56tw`;i_SqbI!*<{*2CVdlFq!S=rXs_QJ^@0x12i+`jgII;4kmo_(;vgGi~}({H{2 zIgN`SdKdv-s~aQh5|6xI7Vq6Fv~Bt zgt!51FDzgLoBY?s-%&(U*0Zi7Zs4?1D9RK&JEiroj=nS_^NY{tqll@Vx6uB_Du0AQ zG0UHbl8Lh)7dQPOz#azN@mWrGfWkwgU%Z1U3!y_9YCCT8H`g`BfIQxAp@z`Bv*oIX z@rOhy6&q$P>trh4<5inT$uzF@;Pd$Yi0Yz1Kt;|TA<8$ z1&vX@2dZuHcOP|}f82TJ(%f=AC}q7>UzBiBv3k#6SBtx1B@5iKvk~mL=~Gpdl~!KF zdhEXbE5Mz0DJXj@eg3%GV|E%y}5p(tZH;9Nsw%dl;)3<@}{ z#A?_+toitRtf_chN{due>bD|Qz&+J>eP!rFd^=z+1$>DqRvC&YwGmVaF+h&MtSStQ zDS@8H*N$BpwA~DiLyzKk&uCRy0gTzOi&!XEDvPRiA2<*23UKUrXc&5sQ<67DQ6>$d<;)Frb+!zVr~6 z(h5)2?{mYM+WMMSIN}9R7w5Kt=BT{9JW)K?djJJb-MG4|-9ga95lcA{v))zZf)K{R z2FTAj5j({|8A8HhYTNGGtrzyzBgj!krw%ihiTE_Cr4)*h?2^YqV#>lKUR9oFN64%l z?6~Y>_o8e*vPHMsZY_|<=hNN5-IV@wS9aVCgl|q+8+HfvflfWJS+2TIsF}U#`Rn1A zdJq69oB+|UJz=K|dVb7Lc46DydoCipx=Hom)^TOLyrdxM$@Vo@XCGSNY=ZTG{a6OsucQ=LeUN{XVoNRR4af^F6 z6cM71ymV^SK6M;*;N{uW2EGE>v642g=ow%#HJHE_CBjpO7vj#=27H+Hx1>$C0g~>W zC3afNQ;!_r$$%>lD1H5gTd)YTAvY&XJmKR{9hBEQBskgofq%nTY(m1$7JoE93cmh+ zmiw>Cl5xYy8D6)Epx*Q`EYm%7kK8plRf=j#?8jFY*hZLQDIzZQV6LJt5W`ckXJ8gK z6#yOD?&0)zTHMg6&hE_5^>5N891|t52SnNJbEo@P02k%AP1&DQn;<;hW2H9MYtQPL zT44i0Qa(ONP9jy**bh?13KX}?S+5}SDPJU+dtC>NXbfVlQ7x)GnWWTJJsLRl4cH*3 zOe!XuJvqC3mZD30*@1bg@$ERXww!Yk%5l;C4 zr{11)-TM?g)QR!vt!ar#6wffPVMmKDFv%B-^$XzFqavFJH;y@$_e8G|^_q zcX9 literal 15045 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 literal 6933 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 G?f(O>q>K^( literal 9538 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 diff --git a/tests/ragger/snapshots/stax/domain_name_unknown_chain/00004.png b/tests/ragger/snapshots/stax/domain_name_unknown_chain/00004.png index 7a05bf7b31c3fca94a4a464ad8709d1c20600e36..cd2f52759f160c3e2cf6822395ea675b8c84a851 100644 GIT binary patch delta 3463 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 W_hL-Xeg|0tu3wG^A8R@qfAhb*jea!% delta 3069 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_False/00000.png b/tests/ragger/snapshots/stax/domain_name_verbose_False/00000.png index 795ca0c2a185ec1e7722d7540106a25979c5cf4f..f992e718a17c0a7952eb569a7d3a3ac7662fe27e 100644 GIT binary patch literal 8691 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 kD|~rRfK8+sp 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_False/00001.png b/tests/ragger/snapshots/stax/domain_name_verbose_False/00001.png index 5e0c0a941e4f5ae45c5b4363de7a1b62a585bf1d..b12e252d4c954ee4a06b198a3262cd409d87591e 100644 GIT binary patch literal 11161 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_False/00002.png b/tests/ragger/snapshots/stax/domain_name_verbose_False/00002.png index 7f634cc4a8e9160c710a1271dffe84a1e4208ac9..bc1ca9382cfe2a299a5bfb35c76039d7a8ff0893 100644 GIT binary patch literal 9597 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 H_TWDNq$iJk literal 9538 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_False/00003.png b/tests/ragger/snapshots/stax/domain_name_verbose_False/00003.png index 7a05bf7b31c3fca94a4a464ad8709d1c20600e36..cd2f52759f160c3e2cf6822395ea675b8c84a851 100644 GIT binary patch delta 3463 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 W_hL-Xeg|0tu3wG^A8R@qfAhb*jea!% delta 3069 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_True/00000.png b/tests/ragger/snapshots/stax/domain_name_verbose_True/00000.png index 795ca0c2a185ec1e7722d7540106a25979c5cf4f..f992e718a17c0a7952eb569a7d3a3ac7662fe27e 100644 GIT binary patch literal 8691 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 kD|~rRfK8+sp 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_True/00001.png b/tests/ragger/snapshots/stax/domain_name_verbose_True/00001.png index ad8f077559185ed6d5ed737c4a342b719ca39a08..03184921cc05adf023f3092cf087bc6b41cab08d 100644 GIT binary patch literal 15199 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_True/00002.png b/tests/ragger/snapshots/stax/domain_name_verbose_True/00002.png index e64dacc0fa17a23f11fcaf4746b5bfac9dc56b93..d4429dd58f6bbc38360e7c332e74e7b7ac7245ac 100644 GIT binary patch literal 7918 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 literal 7822 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 G?f(O>q>K^( literal 9538 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 diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_True/00004.png b/tests/ragger/snapshots/stax/domain_name_verbose_True/00004.png index 7a05bf7b31c3fca94a4a464ad8709d1c20600e36..cd2f52759f160c3e2cf6822395ea675b8c84a851 100644 GIT binary patch delta 3463 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 W_hL-Xeg|0tu3wG^A8R@qfAhb*jea!% delta 3069 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 diff --git a/tests/ragger/snapshots/stax/domain_name_wrong_addr/00000.png b/tests/ragger/snapshots/stax/domain_name_wrong_addr/00000.png index 795ca0c2a185ec1e7722d7540106a25979c5cf4f..f992e718a17c0a7952eb569a7d3a3ac7662fe27e 100644 GIT binary patch literal 8691 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 kD|~rRfK8+sp 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 diff --git a/tests/ragger/snapshots/stax/domain_name_wrong_addr/00001.png b/tests/ragger/snapshots/stax/domain_name_wrong_addr/00001.png index 3e505d39daec60dd7f66f7b9c7e3c7e8ce937f39..4fdbc6255249607aa895f1fc66d936c2c877f144 100644 GIT binary patch literal 15633 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ⅇsam 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 H_TWDNq$iJk literal 9538 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 diff --git a/tests/ragger/snapshots/stax/domain_name_wrong_addr/00003.png b/tests/ragger/snapshots/stax/domain_name_wrong_addr/00003.png index 7a05bf7b31c3fca94a4a464ad8709d1c20600e36..cd2f52759f160c3e2cf6822395ea675b8c84a851 100644 GIT binary patch delta 3463 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 W_hL-Xeg|0tu3wG^A8R@qfAhb*jea!% delta 3069 zcmX|@dpy(oAIEc2PN&Q{^$W)(b-Ie9lS-INCnt^w33JO(V-d<`GPduDYMoP3r<~3r z%Tb1rX@*&|I(ZCGoVS)g>Fb|2diUHE|NY;tmFGu715B@r2viY7Uz>5Mm2Zsn%SVHCe+&d-i=jnG5R+ixVA95mf{bMf3Nb#9(eC|@k)kJFa{-1RT-SDNfHUuoiO z*6OyO*O)iP9J)VcvK1I?V@zO}4Vh39$JVNi#j-EyQD}5xaTUk9ntMV2ULO$WKhhQ~ z4mB(4luD&&PZo>Sa08p0tJdizQp>H(RVejJDOs%1FlJ7@S7`VItmin#+g{g~M)w?A z*kU0`q19$W%LWEryokXr_FV!&9A|ebEvCm6QQn;b(1^i%ip6#i0?rVjwV+Rkk%!Zm zJ=`)9&MUMOj%tclz6=zL-yVF^B5LNOh4uuRb$W`O8t?ja+H6|iHAOwQMlP2J^cgh@ zvJnaW#RGf2d~&$9r>7^~Ty@F)qFWhFeMPCx!)VS-^Wz($x&Ws>JDgF;*Znt)y@DPB zzNh+B%{atth!Pk_5uV(Goc&IYMpmxr^G)^669)r5Yzp#BL?RKJ&6Z=BU_60rQY13! zG-on-2QRcEYY1JH&Thou$;rvOMLXd+wM{!vnlPXuF@&F-`aL+Z>O)Lbkx0SXb5lKzh&B2(VaZZYN=|J+MEgR7;AY? z%V42v5F^9O)^A(?u(5L2HyFdIgAmow5)#l#o)qV90HQVd83p$NBqKfwJ|PlWtS<_` z%IEWG=`M_U#WoS1-PkcZx-Ox^pbb;6;$i{?-f!9LghnXAXqC|_pnc2^A?=XWGG;-4 ziF#`IPp?{MdNeN5+8mlZav-jHz&l?zv?vo12~(a(^W4F)7cuO5{=OufY4K^ zdyH-9Z(!&PaRLar{a**a$}rH!A(Tc32ZvC&#q_gq(Pl@FSz2UtwMXhvKg(Mu7!PM= zX6Al>&15nO1Ok~%rfn$?A^_uxt*gt+%Z86Hp?a@KKGKG^GmaT0Pf8yzkixdHDxg9$ zqtD39tRoWIRy*;s<5(WMc2U^=VsMTW0R6+so_RMY*+wW5wdy+_Lg+pl({U?UsRmuJ zaKoE0e#P#U6$uhTOv2sAozkSJY>?1Tn8CqwtG9clGswtd;6_&x-J33wug`3?5IuPF7sw=u z+oOFE?sj0TJLgcn4oWP`M>_<>w9O0$rowkMHa03W1wN!)bfqCvIIPDf*Qgr0@7x1) zVzbtL`4H9o)r;3taMu&{PdC?dy#X6<_2qc{D-ZXz<*jT=Ro6Wq?>AlS&;uxR30tOgE%uWESYj0&OaZwwnzRTj z;whZhA&6Sw(CBinhaH6Ma0x^WX{_^-dwrwE$g}^XnmoSZ7P7aKTJXC$%qx9jLSI9!R4vjh?MryuS|y&tut$ zd~f^U{|p0km){9Kwfwwm&yM@2O^yIjEg)MYXl#CdJ_?1(&llh#)u0~B@Z--@k63S7 zUey=)IF$78eikpTOifkF3UL9HjQILRGN@;70=RBqaDh;GR-7zeyyE$Inf=pO><5(h z*TyfpWjw@NLkPv8>H63N;kb)}ds%YrRatyQqCa5Z=nJc+?`K)STU?$tZe85(>! zT9N*1(h2R#igig(2LGl=uC}nSn4YURk&{7bU#gn=k;@AqbMHt5*$l5o^M_rytly80 zX13<$=DIM-dp9|q-f&X?8=1^kdF7vGzxaDBFn}0mPUz}RZW_A?3M{8Yb%CGUgp3Cm z$KFcr+Vq5xlFkAj+TNr@lY!B!tSp3ez{8^5*Au55VFRAyHv8u;OA;cDiKV+k8#iFx z?V>1==it5HfXzIaw0e6g%ajrxD?i|S@6;b&sf}rog&->gZng))TTH}X}{(%?$t9T55m6tx4ySd&Aafcf30&>H! zY@48hsbFp*5YIfO46_)$*1jq1vMFBX78By8w3>ran}LS%d=4qc2r)Mdohr zjk^ZRJM{}x_UjfEa3 zIg>4dH_KxDRr&yyua{Q@Tq(LSt^T~;YqtYPPS3}0XB-8xWsN4!Ya7gHSL_edAVXp} zc(wyj(gT*RpWGslNu}wGo{G7+>mp2>2Fr5EDg&<)ikEA_(Y<5eznSTFvxAg`tfR#? z_#X+_`+;JdU0hsLhA>-Q`YfaLEz@N3-e(@duhOBce#xKfO5S8e!!rcLPtCkT$X#+J zi3X^3$3bAR62Sj8%ho;`NSXH9-wj}x8D)cZ_D3e$#s^Xkfw$(-zv>i8r40=}+Z-J7 zT>y+POz=su$f4L@bx3osdrwl`|2g#ji>hIyTbT^QjN`$a$X2kXLh_gd_>t~6Qrf+zEXMhkk0 zYAu_ab!FgD(tQ)tU5@a}J9ygE2QJg7n?oX4LOT2EmzJOV{bTswl_p&DvUjIC2oMsJ inktJv-rtUvD*z_oiO}`O2L2lG1)d1`?)mY=!v6s=<+2q3 From 634527b3a8bfc45e566a48f28f1d0644ac9e8539 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 3 Aug 2023 10:59:40 +0200 Subject: [PATCH 003/160] QR code source path is now used explicitly --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index f0ae3d437..96ca6f0be 100644 --- a/Makefile +++ b/Makefile @@ -118,6 +118,7 @@ endif ifeq ($(TARGET_NAME),TARGET_STAX) DEFINES += NBGL_QRCODE +SDK_SOURCE_PATH += qrcode else DEFINES += HAVE_BAGL DEFINES += HAVE_UX_FLOW From e5c82d910ef4680f8b2b96137412088ca032b2ca Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 28 Jul 2023 11:00:23 +0200 Subject: [PATCH 004/160] [add] Python client packaging first draft --- .github/workflows/python-client.yml | 43 ++++++++++++++++++ client/.gitignore | 4 ++ client/MANIFEST.in | 1 + client/README.md | 28 ++++++++++++ client/pyproject.toml | 45 +++++++++++++++++++ .../ledger_app_clients/ethereum/__init__.py | 1 + .../ledger_app_clients/ethereum}/client.py | 12 +++-- .../ethereum}/command_builder.py | 13 ++++-- .../ethereum}/eip712/InputData.py | 16 +++---- .../ethereum/eip712/__init__.py | 1 + .../ethereum/eip712/struct.py | 1 + .../ledger_app_clients/ethereum}/keychain.py | 3 +- .../ethereum}/keychain/cal.pem | 0 .../ethereum}/keychain/domain_name.pem | 0 .../ethereum}/response_parser.py | 0 .../ledger_app_clients/ethereum}/settings.py | 2 +- .../src/ledger_app_clients/ethereum}/tlv.py | 0 .../00-simple_mail-data.json | 0 .../00-simple_mail-filter.json | 0 .../00-simple_mail.ini | 0 .../01-addresses_array_mail-data.json | 0 .../01-addresses_array_mail.ini | 0 .../02-recipients_array_mail-data.json | 0 .../02-recipients_array_mail.ini | 0 .../03-long_string-data.json | 0 .../03-long_string.ini | 0 .../04-long_bytes-data.json | 0 .../04-long_bytes.ini | 0 .../05-signed_ints-data.json | 0 .../05-signed_ints.ini | 0 .../06-boolean-data.json | 0 .../06-boolean.ini | 0 .../07-fixed_bytes-data.json | 0 .../07-fixed_bytes.ini | 0 .../08-opensea-data.json | 0 .../08-opensea-filter.json | 0 .../08-opensea.ini | 0 .../09-rarible-data.json | 0 .../09-rarible.ini | 0 .../10-multidimensional_arrays-data.json | 0 .../10-multidimensional_arrays.ini | 0 .../11-complex_structs-data.json | 0 .../11-complex_structs-filter.json | 0 .../11-complex_structs.ini | 0 .../12-sign_in-data.json | 0 .../12-sign_in-filter.json | 0 .../12-sign_in.ini | 0 .../13-empty_arrays-data.json | 0 .../13-empty_arrays.ini | 0 tests/ragger/requirements.txt | 2 +- tests/ragger/test_domain_name.py | 17 ++++--- tests/ragger/test_eip712.py | 31 +++++++------ 52 files changed, 177 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/python-client.yml create mode 100644 client/.gitignore create mode 100644 client/MANIFEST.in create mode 100644 client/README.md create mode 100644 client/pyproject.toml create mode 100644 client/src/ledger_app_clients/ethereum/__init__.py rename {tests/ragger/app => client/src/ledger_app_clients/ethereum}/client.py (95%) rename {tests/ragger/app => client/src/ledger_app_clients/ethereum}/command_builder.py (99%) rename {tests/ragger => client/src/ledger_app_clients/ethereum}/eip712/InputData.py (98%) create mode 100644 client/src/ledger_app_clients/ethereum/eip712/__init__.py rename tests/ragger/app/eip712.py => client/src/ledger_app_clients/ethereum/eip712/struct.py (99%) rename {tests/ragger => client/src/ledger_app_clients/ethereum}/keychain.py (99%) rename {tests/ragger => client/src/ledger_app_clients/ethereum}/keychain/cal.pem (100%) rename {tests/ragger => client/src/ledger_app_clients/ethereum}/keychain/domain_name.pem (100%) rename {tests/ragger/app => client/src/ledger_app_clients/ethereum}/response_parser.py (100%) rename {tests/ragger/app => client/src/ledger_app_clients/ethereum}/settings.py (98%) rename {tests/ragger/app => client/src/ledger_app_clients/ethereum}/tlv.py (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/00-simple_mail-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/00-simple_mail-filter.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/00-simple_mail.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/01-addresses_array_mail-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/01-addresses_array_mail.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/02-recipients_array_mail-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/02-recipients_array_mail.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/03-long_string-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/03-long_string.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/04-long_bytes-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/04-long_bytes.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/05-signed_ints-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/05-signed_ints.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/06-boolean-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/06-boolean.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/07-fixed_bytes-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/07-fixed_bytes.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/08-opensea-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/08-opensea-filter.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/08-opensea.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/09-rarible-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/09-rarible.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/10-multidimensional_arrays-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/10-multidimensional_arrays.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/11-complex_structs-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/11-complex_structs-filter.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/11-complex_structs.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/12-sign_in-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/12-sign_in-filter.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/12-sign_in.ini (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/13-empty_arrays-data.json (100%) rename tests/ragger/{eip712/input_files => eip712_input_files}/13-empty_arrays.ini (100%) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml new file mode 100644 index 000000000..658edb128 --- /dev/null +++ b/.github/workflows/python-client.yml @@ -0,0 +1,43 @@ +name: Python client checks, package build and deployment + +on: + workflow_dispatch: + push: + branches: + - develop + - master + pull_request: + +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v3 + - run: pip install flake8 + - name: Flake8 lint Python code + run: find client/src/ -type f -name '*.py' -exec flake8 --max-line-length=120 '{}' '+' + + mypy: + name: Type checking + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v3 + - run: pip install mypy + - name: Mypy type checking + run: mypy client/src + + build: + name: Building the package + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v3 + - run: pip install --upgrade pip build twine + - name: Build and test the package + run: | + cd client/ + python -m build . + python -m twine check dist/* diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 000000000..3051463d4 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,4 @@ +*egg-info +dist +*wheel +*~ diff --git a/client/MANIFEST.in b/client/MANIFEST.in new file mode 100644 index 000000000..65272bf50 --- /dev/null +++ b/client/MANIFEST.in @@ -0,0 +1 @@ +include src/ledger_app_clients/ethereum/keychain/* \ No newline at end of file diff --git a/client/README.md b/client/README.md new file mode 100644 index 000000000..7d8ca692d --- /dev/null +++ b/client/README.md @@ -0,0 +1,28 @@ +# Ethereum app Python client + +This package allows to communicate with the Ethereum application, either on a +real device, or emulated on Speculos. + +## Installation + +This package is deployed: + +- on `pypi.org` for the stable version. This version will work with the + application available on the `master` branch. + ```bash + pip install ledger_app_clients.ethereum` + ``` +- on `test.pypi.org` for the rolling release. This verison will work with the + application code on the `develop` branch. + ```bash + pip install --extra-index-url https://test.pypi.org/simple/ ledger_app_clients.ethereum` + ``` + +### Installation from sources + +You can install the client from this repo: + +```bash +cd client/ +pip install . +``` diff --git a/client/pyproject.toml b/client/pyproject.toml new file mode 100644 index 000000000..8993e8844 --- /dev/null +++ b/client/pyproject.toml @@ -0,0 +1,45 @@ +[build-system] +requires = [ + "setuptools>=45", + "setuptools_scm[toml]>=6.2", + "wheel" +] +build-backend = "setuptools.build_meta" + +[project] +name = "ledger_app_clients.ethereum" +authors = [ + { name = "Ledger", email = "hello@ledger.fr" } +] +description = "Ledger Ethereum Python client" +readme = { file = "README.md", content-type = "text/markdown" } +# license = { file = "LICENSE" } +classifiers = [ + "License :: OSI Approved :: Apache License 2.0", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Operating System :: POSIX :: Linux", + "Operating System :: Microsoft :: Windows", + "Operating System :: MacOS :: MacOS X", +] +dynamic = [ "version" ] +requires-python = ">=3.7" +dependencies = [ + "ragger[speculos]", + "simple-rlp", +] + +[tools.setuptools] +include-package-data = true + +[tool.setuptools.dynamic] +version = {attr = "ledger_app_clients.ethereum.__version__"} + +[project.urls] +Home = "https://github.com/LedgerHQ/app-ethereum" + +# [tool.setuptools_scm] +# write_to = "ledgerwallet/__version__.py" +# local_scheme = "no-local-version" diff --git a/client/src/ledger_app_clients/ethereum/__init__.py b/client/src/ledger_app_clients/ethereum/__init__.py new file mode 100644 index 000000000..f102a9cad --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/__init__.py @@ -0,0 +1 @@ +__version__ = "0.0.1" diff --git a/tests/ragger/app/client.py b/client/src/ledger_app_clients/ethereum/client.py similarity index 95% rename from tests/ragger/app/client.py rename to client/src/ledger_app_clients/ethereum/client.py index 616670c0a..f556d2d5c 100644 --- a/tests/ragger/app/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -1,16 +1,14 @@ -from enum import IntEnum, auto -from typing import Optional +import rlp +from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU + from .command_builder import CommandBuilder from .eip712 import EIP712FieldType +from .keychain import sign_data, Key from .tlv import format_tlv -from pathlib import Path -import keychain -import rlp -ROOT_SCREENSHOT_PATH = Path(__file__).parent.parent WEI_IN_ETH = 1e+18 @@ -134,7 +132,7 @@ def provide_domain_name(self, challenge: int, name: str, addr: bytes): payload += format_tlv(DOMAIN_NAME_TAG.DOMAIN_NAME, name) payload += format_tlv(DOMAIN_NAME_TAG.ADDRESS, addr) payload += format_tlv(DOMAIN_NAME_TAG.SIGNATURE, - keychain.sign_data(keychain.Key.DOMAIN_NAME, payload)) + sign_data(Key.DOMAIN_NAME, payload)) chunks = self._cmd_builder.provide_domain_name(payload) for chunk in chunks[:-1]: diff --git a/tests/ragger/app/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py similarity index 99% rename from tests/ragger/app/command_builder.py rename to client/src/ledger_app_clients/ethereum/command_builder.py index ae3f730f8..92d895dcb 100644 --- a/tests/ragger/app/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -1,8 +1,10 @@ -from enum import IntEnum, auto -from typing import Iterator, Optional -from .eip712 import EIP712FieldType -from ragger.bip import pack_derivation_path import struct +from enum import IntEnum +from ragger.bip import pack_derivation_path +from typing import Iterator + +from .eip712 import EIP712FieldType + class InsType(IntEnum): SIGN = 0x04 @@ -13,12 +15,14 @@ class InsType(IntEnum): GET_CHALLENGE = 0x20 PROVIDE_DOMAIN_NAME = 0x22 + class P1Type(IntEnum): COMPLETE_SEND = 0x00 PARTIAL_SEND = 0x01 SIGN_FIRST_CHUNK = 0x00 SIGN_SUBSQT_CHUNK = 0x80 + class P2Type(IntEnum): STRUCT_NAME = 0x00 STRUCT_FIELD = 0xff @@ -29,6 +33,7 @@ class P2Type(IntEnum): FILTERING_CONTRACT_NAME = 0x0f FILTERING_FIELD_NAME = 0xff + class CommandBuilder: _CLA: int = 0xE0 diff --git a/tests/ragger/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py similarity index 98% rename from tests/ragger/eip712/InputData.py rename to client/src/ledger_app_clients/ethereum/eip712/InputData.py index 6dd647131..68f8556e7 100644 --- a/tests/ragger/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -1,13 +1,13 @@ -#!/usr/bin/env python3 - +import hashlib import json -import sys import re -import hashlib -from app.client import EthAppClient, EIP712FieldType -import keychain -from typing import Callable import signal +import sys +from typing import Callable + +from ledger_app_clients.ethereum import keychain +from ledger_app_clients.ethereum.client import EthAppClient, EIP712FieldType + # global variables app_client: EthAppClient = None @@ -18,8 +18,6 @@ autonext_handler: Callable = None - - # From a string typename, extract the type and all the array depth # Input = "uint8[2][][4]" | "bool" # Output = ('uint8', [2, None, 4]) | ('bool', []) diff --git a/client/src/ledger_app_clients/ethereum/eip712/__init__.py b/client/src/ledger_app_clients/ethereum/eip712/__init__.py new file mode 100644 index 000000000..172091ccf --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/eip712/__init__.py @@ -0,0 +1 @@ +from .struct import EIP712FieldType # noqa diff --git a/tests/ragger/app/eip712.py b/client/src/ledger_app_clients/ethereum/eip712/struct.py similarity index 99% rename from tests/ragger/app/eip712.py rename to client/src/ledger_app_clients/ethereum/eip712/struct.py index f719c6ea8..19dbacc57 100644 --- a/tests/ragger/app/eip712.py +++ b/client/src/ledger_app_clients/ethereum/eip712/struct.py @@ -1,5 +1,6 @@ from enum import IntEnum, auto + class EIP712FieldType(IntEnum): CUSTOM = 0, INT = auto() diff --git a/tests/ragger/keychain.py b/client/src/ledger_app_clients/ethereum/keychain.py similarity index 99% rename from tests/ragger/keychain.py rename to client/src/ledger_app_clients/ethereum/keychain.py index 31914a4fb..523d1d1e0 100644 --- a/tests/ragger/keychain.py +++ b/client/src/ledger_app_clients/ethereum/keychain.py @@ -1,9 +1,10 @@ import os import hashlib -from ecdsa.util import sigencode_der from ecdsa import SigningKey +from ecdsa.util import sigencode_der from enum import Enum, auto + # Private key PEM files have to be named the same (lowercase) as their corresponding enum entries # Example: for an entry in the Enum named DEV, its PEM file must be at keychain/dev.pem class Key(Enum): diff --git a/tests/ragger/keychain/cal.pem b/client/src/ledger_app_clients/ethereum/keychain/cal.pem similarity index 100% rename from tests/ragger/keychain/cal.pem rename to client/src/ledger_app_clients/ethereum/keychain/cal.pem diff --git a/tests/ragger/keychain/domain_name.pem b/client/src/ledger_app_clients/ethereum/keychain/domain_name.pem similarity index 100% rename from tests/ragger/keychain/domain_name.pem rename to client/src/ledger_app_clients/ethereum/keychain/domain_name.pem diff --git a/tests/ragger/app/response_parser.py b/client/src/ledger_app_clients/ethereum/response_parser.py similarity index 100% rename from tests/ragger/app/response_parser.py rename to client/src/ledger_app_clients/ethereum/response_parser.py diff --git a/tests/ragger/app/settings.py b/client/src/ledger_app_clients/ethereum/settings.py similarity index 98% rename from tests/ragger/app/settings.py rename to client/src/ledger_app_clients/ethereum/settings.py index ec6bf78b4..2b44d45b6 100644 --- a/tests/ragger/app/settings.py +++ b/client/src/ledger_app_clients/ethereum/settings.py @@ -1,8 +1,8 @@ from enum import Enum, auto -from typing import List from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID, NavIns + class SettingID(Enum): BLIND_SIGNING = auto() DEBUG_DATA = auto() diff --git a/tests/ragger/app/tlv.py b/client/src/ledger_app_clients/ethereum/tlv.py similarity index 100% rename from tests/ragger/app/tlv.py rename to client/src/ledger_app_clients/ethereum/tlv.py diff --git a/tests/ragger/eip712/input_files/00-simple_mail-data.json b/tests/ragger/eip712_input_files/00-simple_mail-data.json similarity index 100% rename from tests/ragger/eip712/input_files/00-simple_mail-data.json rename to tests/ragger/eip712_input_files/00-simple_mail-data.json diff --git a/tests/ragger/eip712/input_files/00-simple_mail-filter.json b/tests/ragger/eip712_input_files/00-simple_mail-filter.json similarity index 100% rename from tests/ragger/eip712/input_files/00-simple_mail-filter.json rename to tests/ragger/eip712_input_files/00-simple_mail-filter.json diff --git a/tests/ragger/eip712/input_files/00-simple_mail.ini b/tests/ragger/eip712_input_files/00-simple_mail.ini similarity index 100% rename from tests/ragger/eip712/input_files/00-simple_mail.ini rename to tests/ragger/eip712_input_files/00-simple_mail.ini diff --git a/tests/ragger/eip712/input_files/01-addresses_array_mail-data.json b/tests/ragger/eip712_input_files/01-addresses_array_mail-data.json similarity index 100% rename from tests/ragger/eip712/input_files/01-addresses_array_mail-data.json rename to tests/ragger/eip712_input_files/01-addresses_array_mail-data.json diff --git a/tests/ragger/eip712/input_files/01-addresses_array_mail.ini b/tests/ragger/eip712_input_files/01-addresses_array_mail.ini similarity index 100% rename from tests/ragger/eip712/input_files/01-addresses_array_mail.ini rename to tests/ragger/eip712_input_files/01-addresses_array_mail.ini diff --git a/tests/ragger/eip712/input_files/02-recipients_array_mail-data.json b/tests/ragger/eip712_input_files/02-recipients_array_mail-data.json similarity index 100% rename from tests/ragger/eip712/input_files/02-recipients_array_mail-data.json rename to tests/ragger/eip712_input_files/02-recipients_array_mail-data.json diff --git a/tests/ragger/eip712/input_files/02-recipients_array_mail.ini b/tests/ragger/eip712_input_files/02-recipients_array_mail.ini similarity index 100% rename from tests/ragger/eip712/input_files/02-recipients_array_mail.ini rename to tests/ragger/eip712_input_files/02-recipients_array_mail.ini diff --git a/tests/ragger/eip712/input_files/03-long_string-data.json b/tests/ragger/eip712_input_files/03-long_string-data.json similarity index 100% rename from tests/ragger/eip712/input_files/03-long_string-data.json rename to tests/ragger/eip712_input_files/03-long_string-data.json diff --git a/tests/ragger/eip712/input_files/03-long_string.ini b/tests/ragger/eip712_input_files/03-long_string.ini similarity index 100% rename from tests/ragger/eip712/input_files/03-long_string.ini rename to tests/ragger/eip712_input_files/03-long_string.ini diff --git a/tests/ragger/eip712/input_files/04-long_bytes-data.json b/tests/ragger/eip712_input_files/04-long_bytes-data.json similarity index 100% rename from tests/ragger/eip712/input_files/04-long_bytes-data.json rename to tests/ragger/eip712_input_files/04-long_bytes-data.json diff --git a/tests/ragger/eip712/input_files/04-long_bytes.ini b/tests/ragger/eip712_input_files/04-long_bytes.ini similarity index 100% rename from tests/ragger/eip712/input_files/04-long_bytes.ini rename to tests/ragger/eip712_input_files/04-long_bytes.ini diff --git a/tests/ragger/eip712/input_files/05-signed_ints-data.json b/tests/ragger/eip712_input_files/05-signed_ints-data.json similarity index 100% rename from tests/ragger/eip712/input_files/05-signed_ints-data.json rename to tests/ragger/eip712_input_files/05-signed_ints-data.json diff --git a/tests/ragger/eip712/input_files/05-signed_ints.ini b/tests/ragger/eip712_input_files/05-signed_ints.ini similarity index 100% rename from tests/ragger/eip712/input_files/05-signed_ints.ini rename to tests/ragger/eip712_input_files/05-signed_ints.ini diff --git a/tests/ragger/eip712/input_files/06-boolean-data.json b/tests/ragger/eip712_input_files/06-boolean-data.json similarity index 100% rename from tests/ragger/eip712/input_files/06-boolean-data.json rename to tests/ragger/eip712_input_files/06-boolean-data.json diff --git a/tests/ragger/eip712/input_files/06-boolean.ini b/tests/ragger/eip712_input_files/06-boolean.ini similarity index 100% rename from tests/ragger/eip712/input_files/06-boolean.ini rename to tests/ragger/eip712_input_files/06-boolean.ini diff --git a/tests/ragger/eip712/input_files/07-fixed_bytes-data.json b/tests/ragger/eip712_input_files/07-fixed_bytes-data.json similarity index 100% rename from tests/ragger/eip712/input_files/07-fixed_bytes-data.json rename to tests/ragger/eip712_input_files/07-fixed_bytes-data.json diff --git a/tests/ragger/eip712/input_files/07-fixed_bytes.ini b/tests/ragger/eip712_input_files/07-fixed_bytes.ini similarity index 100% rename from tests/ragger/eip712/input_files/07-fixed_bytes.ini rename to tests/ragger/eip712_input_files/07-fixed_bytes.ini diff --git a/tests/ragger/eip712/input_files/08-opensea-data.json b/tests/ragger/eip712_input_files/08-opensea-data.json similarity index 100% rename from tests/ragger/eip712/input_files/08-opensea-data.json rename to tests/ragger/eip712_input_files/08-opensea-data.json diff --git a/tests/ragger/eip712/input_files/08-opensea-filter.json b/tests/ragger/eip712_input_files/08-opensea-filter.json similarity index 100% rename from tests/ragger/eip712/input_files/08-opensea-filter.json rename to tests/ragger/eip712_input_files/08-opensea-filter.json diff --git a/tests/ragger/eip712/input_files/08-opensea.ini b/tests/ragger/eip712_input_files/08-opensea.ini similarity index 100% rename from tests/ragger/eip712/input_files/08-opensea.ini rename to tests/ragger/eip712_input_files/08-opensea.ini diff --git a/tests/ragger/eip712/input_files/09-rarible-data.json b/tests/ragger/eip712_input_files/09-rarible-data.json similarity index 100% rename from tests/ragger/eip712/input_files/09-rarible-data.json rename to tests/ragger/eip712_input_files/09-rarible-data.json diff --git a/tests/ragger/eip712/input_files/09-rarible.ini b/tests/ragger/eip712_input_files/09-rarible.ini similarity index 100% rename from tests/ragger/eip712/input_files/09-rarible.ini rename to tests/ragger/eip712_input_files/09-rarible.ini diff --git a/tests/ragger/eip712/input_files/10-multidimensional_arrays-data.json b/tests/ragger/eip712_input_files/10-multidimensional_arrays-data.json similarity index 100% rename from tests/ragger/eip712/input_files/10-multidimensional_arrays-data.json rename to tests/ragger/eip712_input_files/10-multidimensional_arrays-data.json diff --git a/tests/ragger/eip712/input_files/10-multidimensional_arrays.ini b/tests/ragger/eip712_input_files/10-multidimensional_arrays.ini similarity index 100% rename from tests/ragger/eip712/input_files/10-multidimensional_arrays.ini rename to tests/ragger/eip712_input_files/10-multidimensional_arrays.ini diff --git a/tests/ragger/eip712/input_files/11-complex_structs-data.json b/tests/ragger/eip712_input_files/11-complex_structs-data.json similarity index 100% rename from tests/ragger/eip712/input_files/11-complex_structs-data.json rename to tests/ragger/eip712_input_files/11-complex_structs-data.json diff --git a/tests/ragger/eip712/input_files/11-complex_structs-filter.json b/tests/ragger/eip712_input_files/11-complex_structs-filter.json similarity index 100% rename from tests/ragger/eip712/input_files/11-complex_structs-filter.json rename to tests/ragger/eip712_input_files/11-complex_structs-filter.json diff --git a/tests/ragger/eip712/input_files/11-complex_structs.ini b/tests/ragger/eip712_input_files/11-complex_structs.ini similarity index 100% rename from tests/ragger/eip712/input_files/11-complex_structs.ini rename to tests/ragger/eip712_input_files/11-complex_structs.ini diff --git a/tests/ragger/eip712/input_files/12-sign_in-data.json b/tests/ragger/eip712_input_files/12-sign_in-data.json similarity index 100% rename from tests/ragger/eip712/input_files/12-sign_in-data.json rename to tests/ragger/eip712_input_files/12-sign_in-data.json diff --git a/tests/ragger/eip712/input_files/12-sign_in-filter.json b/tests/ragger/eip712_input_files/12-sign_in-filter.json similarity index 100% rename from tests/ragger/eip712/input_files/12-sign_in-filter.json rename to tests/ragger/eip712_input_files/12-sign_in-filter.json diff --git a/tests/ragger/eip712/input_files/12-sign_in.ini b/tests/ragger/eip712_input_files/12-sign_in.ini similarity index 100% rename from tests/ragger/eip712/input_files/12-sign_in.ini rename to tests/ragger/eip712_input_files/12-sign_in.ini diff --git a/tests/ragger/eip712/input_files/13-empty_arrays-data.json b/tests/ragger/eip712_input_files/13-empty_arrays-data.json similarity index 100% rename from tests/ragger/eip712/input_files/13-empty_arrays-data.json rename to tests/ragger/eip712_input_files/13-empty_arrays-data.json diff --git a/tests/ragger/eip712/input_files/13-empty_arrays.ini b/tests/ragger/eip712_input_files/13-empty_arrays.ini similarity index 100% rename from tests/ragger/eip712/input_files/13-empty_arrays.ini rename to tests/ragger/eip712_input_files/13-empty_arrays.ini diff --git a/tests/ragger/requirements.txt b/tests/ragger/requirements.txt index 34213d69f..b493e4864 100644 --- a/tests/ragger/requirements.txt +++ b/tests/ragger/requirements.txt @@ -1,4 +1,4 @@ ragger[speculos] pytest ecdsa -simple-rlp +./client/ diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index f137610db..05bcddfa5 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -1,12 +1,16 @@ import pytest -from ragger.error import ExceptionRAPDU -from ragger.firmware import Firmware +from pathlib import Path from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.error import ExceptionRAPDU from ragger.navigator import Navigator, NavInsID -from app.client import EthAppClient, StatusWord, ROOT_SCREENSHOT_PATH -from app.settings import SettingID, settings_toggle -import app.response_parser as ResponseParser -import struct + +import ledger_app_clients.ethereum.response_parser as ResponseParser +from ledger_app_clients.ethereum.client import EthAppClient, StatusWord +from ledger_app_clients.ethereum.settings import SettingID, settings_toggle + + +ROOT_SCREENSHOT_PATH = Path(__file__).parent # Values used across all tests CHAIN_ID = 1 @@ -73,7 +77,6 @@ def test_send_fund_wrong_challenge(firmware: Firmware, backend: BackendInterface, navigator: Navigator): app_client = EthAppClient(backend) - caught = False challenge = common(app_client) try: diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index 6ff0bc7b3..081695890 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -1,37 +1,42 @@ -import pytest -import os import fnmatch -from typing import List -from ragger.firmware import Firmware -from ragger.backend import BackendInterface -from ragger.navigator import Navigator, NavInsID -from app.client import EthAppClient -from app.settings import SettingID, settings_toggle -from eip712 import InputData -from pathlib import Path +import os +import pytest +import time from configparser import ConfigParser -import app.response_parser as ResponseParser from functools import partial -import time +from pathlib import Path +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator, NavInsID +from typing import List + +import ledger_app_clients.ethereum.response_parser as ResponseParser +from ledger_app_clients.ethereum.client import EthAppClient +from ledger_app_clients.ethereum.eip712 import InputData +from ledger_app_clients.ethereum.settings import SettingID, settings_toggle + BIP32_PATH = "m/44'/60'/0'/0/0" def input_files() -> List[str]: files = [] - for file in os.scandir("%s/eip712/input_files" % (os.path.dirname(__file__))): + for file in os.scandir("%s/eip712_input_files" % (os.path.dirname(__file__))): if fnmatch.fnmatch(file, "*-data.json"): files.append(file.path) return sorted(files) + @pytest.fixture(params=input_files()) def input_file(request) -> str: return Path(request.param) + @pytest.fixture(params=[True, False]) def verbose(request) -> bool: return request.param + @pytest.fixture(params=[False, True]) def filtering(request) -> bool: return request.param From 54b979186d220a7f9e4e82248ddf32f02670b0b4 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 28 Jul 2023 15:41:17 +0200 Subject: [PATCH 005/160] [clean] Linter / typing fixes --- .github/workflows/python-client.yml | 4 +- client/CHANGELOG.md | 12 +++ client/README.md | 6 +- client/pyproject.toml | 5 +- .../src/ledger_app_clients/ethereum/client.py | 34 +++++---- .../ethereum/command_builder.py | 18 ++--- .../ethereum/eip712/InputData.py | 73 ++++++++++++------- .../ledger_app_clients/ethereum/keychain.py | 8 +- .../ethereum/response_parser.py | 1 + .../ledger_app_clients/ethereum/settings.py | 19 +++-- client/src/ledger_app_clients/ethereum/tlv.py | 10 +-- 11 files changed, 117 insertions(+), 73 deletions(-) create mode 100644 client/CHANGELOG.md diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 658edb128..ca8f164aa 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -17,7 +17,7 @@ jobs: uses: actions/checkout@v3 - run: pip install flake8 - name: Flake8 lint Python code - run: find client/src/ -type f -name '*.py' -exec flake8 --max-line-length=120 '{}' '+' + run: (cd client && find src/ -type f -name '*.py' -exec flake8 --max-line-length=120 '{}' '+') mypy: name: Type checking @@ -27,7 +27,7 @@ jobs: uses: actions/checkout@v3 - run: pip install mypy - name: Mypy type checking - run: mypy client/src + run: (cd client && mypy src/) build: name: Building the package diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md new file mode 100644 index 000000000..9cdc9ea21 --- /dev/null +++ b/client/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2023-08-07 + +### Added + +- Initial version diff --git a/client/README.md b/client/README.md index 7d8ca692d..37da79a5b 100644 --- a/client/README.md +++ b/client/README.md @@ -10,12 +10,12 @@ This package is deployed: - on `pypi.org` for the stable version. This version will work with the application available on the `master` branch. ```bash - pip install ledger_app_clients.ethereum` + pip install ledger_app_clients.ethereum ``` -- on `test.pypi.org` for the rolling release. This verison will work with the +- on `test.pypi.org` for the rolling release. This version will work with the application code on the `develop` branch. ```bash - pip install --extra-index-url https://test.pypi.org/simple/ ledger_app_clients.ethereum` + pip install --extra-index-url https://test.pypi.org/simple/ ledger_app_clients.ethereum ``` ### Installation from sources diff --git a/client/pyproject.toml b/client/pyproject.toml index 8993e8844..bea18ff1a 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -40,6 +40,5 @@ version = {attr = "ledger_app_clients.ethereum.__version__"} [project.urls] Home = "https://github.com/LedgerHQ/app-ethereum" -# [tool.setuptools_scm] -# write_to = "ledgerwallet/__version__.py" -# local_scheme = "no-local-version" +[tool.mypy] +ignore_missing_imports = true diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index f556d2d5c..18d774fdf 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -2,6 +2,7 @@ from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU +from typing import List, Optional, Union from .command_builder import CommandBuilder from .eip712 import EIP712FieldType @@ -13,14 +14,15 @@ class StatusWord(IntEnum): - OK = 0x9000 - ERROR_NO_INFO = 0x6a00 - INVALID_DATA = 0x6a80 - INSUFFICIENT_MEMORY = 0x6a84 - INVALID_INS = 0x6d00 - INVALID_P1_P2 = 0x6b00 + OK = 0x9000 + ERROR_NO_INFO = 0x6a00 + INVALID_DATA = 0x6a80 + INSUFFICIENT_MEMORY = 0x6a84 + INVALID_INS = 0x6d00 + INVALID_P1_P2 = 0x6b00 CONDITION_NOT_SATISFIED = 0x6985 - REF_DATA_NOT_FOUND = 0x6a88 + REF_DATA_NOT_FOUND = 0x6a88 + class DOMAIN_NAME_TAG(IntEnum): STRUCTURE_TYPE = 0x01 @@ -39,10 +41,10 @@ def __init__(self, client: BackendInterface): self._client = client self._cmd_builder = CommandBuilder() - def _send(self, payload: bytearray): + def _send(self, payload: bytes): return self._client.exchange_async_raw(payload) - def response(self) -> RAPDU: + def response(self) -> Optional[RAPDU]: return self._client._last_async_response def eip712_send_struct_def_struct_name(self, name: str): @@ -52,7 +54,7 @@ def eip712_send_struct_def_struct_field(self, field_type: EIP712FieldType, type_name: str, type_size: int, - array_levels: [], + array_levels: List, key_name: str): return self._send(self._cmd_builder.eip712_send_struct_def_struct_field( field_type, @@ -68,7 +70,7 @@ def eip712_send_struct_impl_array(self, size: int): return self._send(self._cmd_builder.eip712_send_struct_impl_array(size)) def eip712_send_struct_impl_struct_field(self, raw_value: bytes): - chunks = self._cmd_builder.eip712_send_struct_impl_struct_field(raw_value) + chunks = self._cmd_builder.eip712_send_struct_impl_struct_field(bytearray(raw_value)) for chunk in chunks[:-1]: with self._send(chunk): pass @@ -102,7 +104,7 @@ def send_fund(self, to: bytes, amount: float, chain_id: int): - data = list() + data: List[Union[int, bytes]] = list() data.append(nonce) data.append(gas_price) data.append(gas_limit) @@ -123,12 +125,12 @@ def get_challenge(self): return self._send(self._cmd_builder.get_challenge()) def provide_domain_name(self, challenge: int, name: str, addr: bytes): - payload = format_tlv(DOMAIN_NAME_TAG.STRUCTURE_TYPE, 3) # TrustedDomainName + payload = format_tlv(DOMAIN_NAME_TAG.STRUCTURE_TYPE, 3) # TrustedDomainName payload += format_tlv(DOMAIN_NAME_TAG.STRUCTURE_VERSION, 1) - payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_KEY_ID, 0) # test key - payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_ALGO, 1) # secp256k1 + payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_KEY_ID, 0) # test key + payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_ALGO, 1) # secp256k1 payload += format_tlv(DOMAIN_NAME_TAG.CHALLENGE, challenge) - payload += format_tlv(DOMAIN_NAME_TAG.COIN_TYPE, 0x3c) # ETH in slip-44 + payload += format_tlv(DOMAIN_NAME_TAG.COIN_TYPE, 0x3c) # ETH in slip-44 payload += format_tlv(DOMAIN_NAME_TAG.DOMAIN_NAME, name) payload += format_tlv(DOMAIN_NAME_TAG.ADDRESS, addr) payload += format_tlv(DOMAIN_NAME_TAG.SIGNATURE, diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 92d895dcb..8f2dbfd12 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -1,7 +1,7 @@ import struct from enum import IntEnum from ragger.bip import pack_derivation_path -from typing import Iterator +from typing import List from .eip712 import EIP712FieldType @@ -41,7 +41,7 @@ def _serialize(self, ins: InsType, p1: int, p2: int, - cdata: bytearray = bytes()) -> bytes: + cdata: bytes = bytes()) -> bytes: header = bytearray() header.append(self._CLA) @@ -67,24 +67,24 @@ def eip712_send_struct_def_struct_field(self, field_type: EIP712FieldType, type_name: str, type_size: int, - array_levels: [], + array_levels: List, key_name: str) -> bytes: data = bytearray() typedesc = 0 typedesc |= (len(array_levels) > 0) << 7 - typedesc |= (type_size != None) << 6 + typedesc |= (type_size is not None) << 6 typedesc |= field_type data.append(typedesc) if field_type == EIP712FieldType.CUSTOM: data.append(len(type_name)) data += self._string_to_bytes(type_name) - if type_size != None: + if type_size is not None: data.append(type_size) if len(array_levels) > 0: data.append(len(array_levels)) for level in array_levels: - data.append(0 if level == None else 1) - if level != None: + data.append(0 if level is None else 1) + if level is not None: data.append(level) data.append(len(key_name)) data += self._string_to_bytes(key_name) @@ -107,7 +107,7 @@ def eip712_send_struct_impl_array(self, size: int) -> bytes: P2Type.ARRAY, data) - def eip712_send_struct_impl_struct_field(self, data: bytearray) -> Iterator[bytes]: + def eip712_send_struct_impl_struct_field(self, data: bytearray) -> List[bytes]: chunks = list() # Add a 16-bit integer with the data's byte length (network byte order) data_w_length = bytearray() @@ -193,7 +193,7 @@ def get_challenge(self) -> bytes: def provide_domain_name(self, tlv_payload: bytes) -> list[bytes]: chunks = list() - payload = struct.pack(">H", len(tlv_payload)) + payload = struct.pack(">H", len(tlv_payload)) payload += tlv_payload p1 = 1 while len(payload) > 0: diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index 68f8556e7..ac0877cf6 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -3,7 +3,7 @@ import re import signal import sys -from typing import Callable +from typing import Any, Callable, Dict, List, Optional from ledger_app_clients.ethereum import keychain from ledger_app_clients.ethereum.client import EthAppClient, EIP712FieldType @@ -11,11 +11,16 @@ # global variables app_client: EthAppClient = None -filtering_paths = None -current_path = list() -sig_ctx = {} +filtering_paths: Dict = {} +current_path: List[str] = list() +sig_ctx: Dict[str, Any] = {} -autonext_handler: Callable = None + +def default_handler(): + raise RuntimeError("Uninitialized handler") + + +autonext_handler: Callable = default_handler # From a string typename, extract the type and all the array depth @@ -55,29 +60,34 @@ def get_typesize(typename): return (typename, typesize) - def parse_int(typesize): return (EIP712FieldType.INT, int(typesize / 8)) + def parse_uint(typesize): return (EIP712FieldType.UINT, int(typesize / 8)) + def parse_address(typesize): return (EIP712FieldType.ADDRESS, None) + def parse_bool(typesize): return (EIP712FieldType.BOOL, None) + def parse_string(typesize): return (EIP712FieldType.STRING, None) + def parse_bytes(typesize): - if typesize != None: + if typesize is not None: return (EIP712FieldType.FIX_BYTES, typesize) return (EIP712FieldType.DYN_BYTES, None) + # set functions for each type -parsing_type_functions = {}; +parsing_type_functions = {} parsing_type_functions["int"] = parse_int parsing_type_functions["uint"] = parse_uint parsing_type_functions["address"] = parse_address @@ -86,7 +96,6 @@ def parse_bytes(typesize): parsing_type_functions["bytes"] = parse_bytes - def send_struct_def_field(typename, keyname): type_enum = None @@ -108,7 +117,6 @@ def send_struct_def_field(typename, keyname): return (typename, type_enum, typesize, array_lvls) - def encode_integer(value, typesize): data = bytearray() @@ -122,9 +130,9 @@ def encode_integer(value, typesize): if value == 0: data.append(0) else: - if value < 0: # negative number, send it as unsigned + if value < 0: # negative number, send it as unsigned mask = 0 - for i in range(typesize): # make a mask as big as the typesize + for i in range(typesize): # make a mask as big as the typesize mask = (mask << 8) | 0xff value &= mask while value > 0: @@ -133,42 +141,51 @@ def encode_integer(value, typesize): data.reverse() return data + def encode_int(value, typesize): return encode_integer(value, typesize) + def encode_uint(value, typesize): return encode_integer(value, typesize) + def encode_hex_string(value, size): data = bytearray() - value = value[2:] # skip 0x + value = value[2:] # skip 0x byte_idx = 0 while byte_idx < size: data.append(int(value[(byte_idx * 2):(byte_idx * 2 + 2)], 16)) byte_idx += 1 return data + def encode_address(value, typesize): return encode_hex_string(value, 20) + def encode_bool(value, typesize): return encode_integer(value, typesize) + def encode_string(value, typesize): data = bytearray() for char in value: data.append(ord(char)) return data + def encode_bytes_fix(value, typesize): return encode_hex_string(value, typesize) + def encode_bytes_dyn(value, typesize): # length of the value string # - the length of 0x (2) # / by the length of one byte in a hex string (2) return encode_hex_string(value, int((len(value) - 2) / 2)) + # set functions for each type encoding_functions = {} encoding_functions[EIP712FieldType.INT] = encode_int @@ -180,7 +197,6 @@ def encode_bytes_dyn(value, typesize): encoding_functions[EIP712FieldType.DYN_BYTES] = encode_bytes_dyn - def send_struct_impl_field(value, field): # Something wrong happened if this triggers if isinstance(value, list) or (field["enum"] == EIP712FieldType.CUSTOM): @@ -188,7 +204,6 @@ def send_struct_impl_field(value, field): data = encoding_functions[field["enum"]](value, field["typesize"]) - if filtering_paths: path = ".".join(current_path) if path in filtering_paths.keys(): @@ -199,8 +214,7 @@ def send_struct_impl_field(value, field): disable_autonext() - -def evaluate_field(structs, data, field, lvls_left, new_level = True): +def evaluate_field(structs, data, field, lvls_left, new_level=True): array_lvls = field["array_lvls"] if new_level: @@ -215,7 +229,7 @@ def evaluate_field(structs, data, field, lvls_left, new_level = True): return False current_path.pop() idx += 1 - if array_lvls[lvls_left - 1] != None: + if array_lvls[lvls_left - 1] is not None: if array_lvls[lvls_left - 1] != idx: print("Mismatch in array size! Got %d, expected %d\n" % (idx, array_lvls[lvls_left - 1]), @@ -232,7 +246,6 @@ def evaluate_field(structs, data, field, lvls_left, new_level = True): return True - def send_struct_impl(structs, data, structname): # Check if it is a struct we don't known if structname not in structs.keys(): @@ -244,6 +257,7 @@ def send_struct_impl(structs, data, structname): return False return True + # ledgerjs doesn't actually sign anything, and instead uses already pre-computed signatures def send_filtering_message_info(display_name: str, filters_count: int): global sig_ctx @@ -262,6 +276,7 @@ def send_filtering_message_info(display_name: str, filters_count: int): enable_autonext() disable_autonext() + # ledgerjs doesn't actually sign anything, and instead uses already pre-computed signatures def send_filtering_show_field(display_name): global sig_ctx @@ -281,12 +296,14 @@ def send_filtering_show_field(display_name): with app_client.eip712_filtering_show_field(display_name, sig): pass -def read_filtering_file(domain, message, filtering_file_path): + +def read_filtering_file(filtering_file_path: str): data_json = None with open(filtering_file_path) as data: data_json = json.load(data) return data_json + def prepare_filtering(filtr_data, message): global filtering_paths @@ -295,12 +312,14 @@ def prepare_filtering(filtr_data, message): else: filtering_paths = {} + def handle_optional_domain_values(domain): if "chainId" not in domain.keys(): domain["chainId"] = 0 if "verifyingContract" not in domain.keys(): domain["verifyingContract"] = "0x0000000000000000000000000000000000000000" + def init_signature_context(types, domain): global sig_ctx @@ -314,7 +333,7 @@ def init_signature_context(types, domain): for i in range(8): sig_ctx["chainid"].append(chainid & (0xff << (i * 8))) sig_ctx["chainid"].reverse() - schema_str = json.dumps(types).replace(" ","") + schema_str = json.dumps(types).replace(" ", "") schema_hash = hashlib.sha224(schema_str.encode()) sig_ctx["schema_hash"] = bytearray.fromhex(schema_hash.hexdigest()) @@ -322,22 +341,24 @@ def init_signature_context(types, domain): def next_timeout(_signum: int, _frame): autonext_handler() + def enable_autonext(): seconds = 1/4 - if app_client._client.firmware.device == 'stax': # Stax Speculos is slow + if app_client._client.firmware.device == 'stax': # Stax Speculos is slow interval = seconds * 3 else: interval = seconds signal.setitimer(signal.ITIMER_REAL, seconds, interval) + def disable_autonext(): signal.setitimer(signal.ITIMER_REAL, 0, 0) def process_file(aclient: EthAppClient, input_file_path: str, - filtering_file_path = None, - autonext: Callable = None) -> bool: + filtering_file_path: Optional[str] = None, + autonext: Optional[Callable] = None) -> bool: global sig_ctx global app_client global autonext_handler @@ -357,7 +378,7 @@ def process_file(aclient: EthAppClient, if filtering_file_path: init_signature_context(types, domain) - filtr = read_filtering_file(domain, message, filtering_file_path) + filtr = read_filtering_file(filtering_file_path) # send types definition for key in types.keys(): @@ -365,7 +386,7 @@ def process_file(aclient: EthAppClient, pass for f in types[key]: (f["type"], f["enum"], f["typesize"], f["array_lvls"]) = \ - send_struct_def_field(f["type"], f["name"]) + send_struct_def_field(f["type"], f["name"]) if filtering_file_path: with app_client.eip712_filtering_activate(): diff --git a/client/src/ledger_app_clients/ethereum/keychain.py b/client/src/ledger_app_clients/ethereum/keychain.py index 523d1d1e0..4e66b6a37 100644 --- a/client/src/ledger_app_clients/ethereum/keychain.py +++ b/client/src/ledger_app_clients/ethereum/keychain.py @@ -3,6 +3,7 @@ from ecdsa import SigningKey from ecdsa.util import sigencode_der from enum import Enum, auto +from typing import Dict # Private key PEM files have to be named the same (lowercase) as their corresponding enum entries @@ -11,14 +12,17 @@ class Key(Enum): CAL = auto() DOMAIN_NAME = auto() -_keys: dict[Key, SigningKey] = dict() + +_keys: Dict[Key, SigningKey] = dict() + # Open the corresponding PEM file and load its key in the global dict def _init_key(key: Key): global _keys with open("%s/keychain/%s.pem" % (os.path.dirname(__file__), key.name.lower())) as pem_file: _keys[key] = SigningKey.from_pem(pem_file.read(), hashlib.sha256) - assert (key in _keys) and (_keys[key] != None) + assert (key in _keys) and (_keys[key] is not None) + # Generate a SECP256K1 signature of the given data with the given key def sign_data(key: Key, data: bytes) -> bytes: diff --git a/client/src/ledger_app_clients/ethereum/response_parser.py b/client/src/ledger_app_clients/ethereum/response_parser.py index 5e73df498..26a2638d0 100644 --- a/client/src/ledger_app_clients/ethereum/response_parser.py +++ b/client/src/ledger_app_clients/ethereum/response_parser.py @@ -9,6 +9,7 @@ def signature(data: bytes) -> tuple[bytes, bytes, bytes]: return v, r, s + def challenge(data: bytes) -> int: assert len(data) == 4 return int.from_bytes(data, "big") diff --git a/client/src/ledger_app_clients/ethereum/settings.py b/client/src/ledger_app_clients/ethereum/settings.py index 2b44d45b6..d9d3ed597 100644 --- a/client/src/ledger_app_clients/ethereum/settings.py +++ b/client/src/ledger_app_clients/ethereum/settings.py @@ -1,6 +1,7 @@ from enum import Enum, auto from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID, NavIns +from typing import List, Union class SettingID(Enum): @@ -10,6 +11,7 @@ class SettingID(Enum): VERBOSE_EIP712 = auto() VERBOSE_ENS = auto() + def get_device_settings(device: str) -> list[SettingID]: if device == "nanos": return [ @@ -27,19 +29,22 @@ def get_device_settings(device: str) -> list[SettingID]: ] return [] + settings_per_page = 3 -def get_setting_position(device: str, setting: NavInsID) -> tuple[int, int]: - screen_height = 672 # px - header_height = 85 # px - footer_height = 124 # px + +def get_setting_position(device: str, setting: Union[NavInsID, SettingID]) -> tuple[int, int]: + screen_height = 672 # px + header_height = 85 # px + footer_height = 124 # px usable_height = screen_height - (header_height + footer_height) setting_height = usable_height // settings_per_page - index_in_page = get_device_settings(device).index(setting) % settings_per_page + index_in_page = get_device_settings(device).index(SettingID(setting)) % settings_per_page return 350, header_height + (setting_height * index_in_page) + (setting_height // 2) + def settings_toggle(fw: Firmware, nav: Navigator, to_toggle: list[SettingID]): - moves = list() + moves: List[Union[NavIns, NavInsID]] = list() settings = get_device_settings(fw.device) # Assume the app is on the home page if fw.device.startswith("nano"): @@ -49,7 +54,7 @@ def settings_toggle(fw: Firmware, nav: Navigator, to_toggle: list[SettingID]): if setting in to_toggle: moves += [NavInsID.BOTH_CLICK] moves += [NavInsID.RIGHT_CLICK] - moves += [NavInsID.BOTH_CLICK] # Back + moves += [NavInsID.BOTH_CLICK] # Back else: moves += [NavInsID.USE_CASE_HOME_SETTINGS] moves += [NavInsID.USE_CASE_SETTINGS_NEXT] diff --git a/client/src/ledger_app_clients/ethereum/tlv.py b/client/src/ledger_app_clients/ethereum/tlv.py index 2ff4cef7b..fd5dc109e 100644 --- a/client/src/ledger_app_clients/ethereum/tlv.py +++ b/client/src/ledger_app_clients/ethereum/tlv.py @@ -1,4 +1,5 @@ -from typing import Any +from typing import Union + def der_encode(value: int) -> bytes: # max() to have minimum length of 1 @@ -7,16 +8,15 @@ def der_encode(value: int) -> bytes: value_bytes = (0x80 | len(value_bytes)).to_bytes(1, 'big') + value_bytes return value_bytes -def format_tlv(tag: int, value: Any) -> bytes: + +def format_tlv(tag: int, value: Union[int, str, bytes]) -> bytes: if isinstance(value, int): # max() to have minimum length of 1 value = value.to_bytes(max(1, (value.bit_length() + 7) // 8), 'big') elif isinstance(value, str): value = value.encode() - if not isinstance(value, bytes): - print("Unhandled TLV formatting for type : %s" % (type(value))) - return None + assert isinstance(value, bytes), f"Unhandled TLV formatting for type : {type(value)}" tlv = bytearray() tlv += der_encode(tag) From 72586268fa8c93543aed661590dd2ff6279c132c Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 28 Jul 2023 19:07:55 +0200 Subject: [PATCH 006/160] [ci][add] Using the 'reusable_pypi_deployment' workflow for Pytho package deployment --- .github/workflows/python-client.yml | 30 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index ca8f164aa..8a063a477 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -6,7 +6,13 @@ on: branches: - develop - master + paths: + - ./client/ + - .github/workflows/python-client.yml pull_request: + paths: + - ./client/ + - .github/workflows/python-client.yml jobs: lint: @@ -29,15 +35,15 @@ jobs: - name: Mypy type checking run: (cd client && mypy src/) - build: - name: Building the package - runs-on: ubuntu-latest - steps: - - name: Clone - uses: actions/checkout@v3 - - run: pip install --upgrade pip build twine - - name: Build and test the package - run: | - cd client/ - python -m build . - python -m twine check dist/* + packaging: + needs: [lint, mypy] + if: github.event_name == 'push' + name: Build, test and deploy the Python package + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_pypi_deployment.yml@v1 + with: + package_directory: "client/" + stable_deployment: ${{ github.ref == 'refs/heads/master' }} + check_changelog_version: true + publish: ${{ github.event_name == 'push' }} + secrets: + pypi_token: ${{ github.ref == 'refs/heads/master' && secrets.PYPI_PUBLIC_API_TOKEN || secrets.TEST_PYPI_PUBLIC_API_TOKEN }} From 91bb889ced5a564941ae1d8ee16333d59fea350e Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Tue, 29 Aug 2023 10:55:12 +0200 Subject: [PATCH 007/160] [fix] Review corrections --- .github/workflows/python-client.yml | 1 - client/MANIFEST.in | 2 +- client/README.md | 9 +++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 8a063a477..984d51c92 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -37,7 +37,6 @@ jobs: packaging: needs: [lint, mypy] - if: github.event_name == 'push' name: Build, test and deploy the Python package uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_pypi_deployment.yml@v1 with: diff --git a/client/MANIFEST.in b/client/MANIFEST.in index 65272bf50..98060d13f 100644 --- a/client/MANIFEST.in +++ b/client/MANIFEST.in @@ -1 +1 @@ -include src/ledger_app_clients/ethereum/keychain/* \ No newline at end of file +include src/ledger_app_clients/ethereum/keychain/* diff --git a/client/README.md b/client/README.md index 37da79a5b..13c5a4c5f 100644 --- a/client/README.md +++ b/client/README.md @@ -1,6 +1,6 @@ -# Ethereum app Python client +# Python client for the Ledger Ethereum application -This package allows to communicate with the Ethereum application, either on a +This package allows to communicate with the Ledger Ethereum application, either on a real device, or emulated on Speculos. ## Installation @@ -9,11 +9,13 @@ This package is deployed: - on `pypi.org` for the stable version. This version will work with the application available on the `master` branch. + ```bash pip install ledger_app_clients.ethereum ``` - on `test.pypi.org` for the rolling release. This version will work with the - application code on the `develop` branch. + application available on the `develop` branch. + ```bash pip install --extra-index-url https://test.pypi.org/simple/ ledger_app_clients.ethereum ``` @@ -23,6 +25,5 @@ This package is deployed: You can install the client from this repo: ```bash -cd client/ pip install . ``` From 1453ab42945bdea017980e1ae611f6900214a98d Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Tue, 29 Aug 2023 15:22:48 +0200 Subject: [PATCH 008/160] [client][fix] Apache License 2.0 has a specific naming for OSI --- client/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/pyproject.toml b/client/pyproject.toml index bea18ff1a..775ff53d6 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -15,7 +15,7 @@ description = "Ledger Ethereum Python client" readme = { file = "README.md", content-type = "text/markdown" } # license = { file = "LICENSE" } classifiers = [ - "License :: OSI Approved :: Apache License 2.0", + "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", From 102dcb29a9ec1b03e5ccebab68ef79ee10e4a6d8 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Tue, 29 Aug 2023 15:45:59 +0200 Subject: [PATCH 009/160] [ci][fix] Trigger Python client build+deployment when changes in the 'client/' directory --- .github/workflows/python-client.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 984d51c92..9f5eeef9a 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -7,11 +7,11 @@ on: - develop - master paths: - - ./client/ + - ./client/** - .github/workflows/python-client.yml pull_request: paths: - - ./client/ + - ./client/** - .github/workflows/python-client.yml jobs: From a903e2db6e7d2260a35008cf976a83fccdb541aa Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 4 Aug 2023 18:17:09 +0200 Subject: [PATCH 010/160] Implemented the optional chain ID in the GET_ETH_PUBLIC_ADDRESS apdu --- doc/ethapp.adoc | 1 + src_features/getPublicKey/cmd_getPublicKey.c | 23 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/doc/ethapp.adoc b/doc/ethapp.adoc index 6997b9b1e..d61454a81 100644 --- a/doc/ethapp.adoc +++ b/doc/ethapp.adoc @@ -87,6 +87,7 @@ The address can be optionally checked on the device before being returned. | First derivation index (big endian) | 4 | ... | 4 | Last derivation index (big endian) | 4 +| Chain ID (big endian) (optional) | 8 |============================================================================================================================== 'Output data' diff --git a/src_features/getPublicKey/cmd_getPublicKey.c b/src_features/getPublicKey/cmd_getPublicKey.c index bc8bac6ce..42fc3bd28 100644 --- a/src_features/getPublicKey/cmd_getPublicKey.c +++ b/src_features/getPublicKey/cmd_getPublicKey.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" - +#include "utils.h" #include "feature_getPublicKey.h" #include "ethUtils.h" #include "common_ui.h" @@ -21,16 +21,16 @@ void handleGetPublicKey(uint8_t p1, } if ((p1 != P1_CONFIRM) && (p1 != P1_NON_CONFIRM)) { - THROW(0x6B00); + THROW(APDU_RESPONSE_INVALID_P1_P2); } if ((p2 != P2_CHAINCODE) && (p2 != P2_NO_CHAINCODE)) { - THROW(0x6B00); + THROW(APDU_RESPONSE_INVALID_P1_P2); } dataBuffer = parseBip32(dataBuffer, &dataLength, &bip32); if (dataBuffer == NULL) { - THROW(0x6a80); + THROW(APDU_RESPONSE_INVALID_DATA); } tmpCtx.publicKeyContext.getChaincode = (p2 == P2_CHAINCODE); @@ -51,12 +51,25 @@ void handleGetPublicKey(uint8_t p1, tmpCtx.publicKeyContext.address, &global_sha3, chainConfig->chainId); + + uint64_t chain_id = chainConfig->chainId; + if (dataLength >= sizeof(chain_id)) { + chain_id = u64_from_BE(dataBuffer, sizeof(chain_id)); + dataLength -= sizeof(chain_id); + dataBuffer += sizeof(chain_id); + } + + (void) dataBuffer; // to prevent dead increment warning + if (dataLength > 0) { + THROW(APDU_RESPONSE_INVALID_DATA); + } + #ifndef NO_CONSENT if (p1 == P1_NON_CONFIRM) #endif // NO_CONSENT { *tx = set_result_get_publicKey(); - THROW(0x9000); + THROW(APDU_RESPONSE_OK); } #ifndef NO_CONSENT else { From b05b16143d31511f29504c274ae525286946e1ca Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 9 Aug 2023 11:38:17 +0200 Subject: [PATCH 011/160] Now shows the network name in the Stax public address UI flow --- src/common_ui.h | 3 +- src_bagl/common_ui.c | 3 +- src_bagl/ui_domain_name.c | 2 +- src_bagl/ui_flow_signTx.c | 3 +- src_features/getPublicKey/cmd_getPublicKey.c | 6 ++- src_features/signTx/logic_signTx.c | 3 +- src_nbgl/ui_get_public_key.c | 52 +++++++++++++++----- 7 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/common_ui.h b/src/common_ui.h index e14f57baf..d4505972e 100644 --- a/src/common_ui.h +++ b/src/common_ui.h @@ -2,13 +2,14 @@ #define _COMMON_UI_H_ #include +#include void ui_idle(void); void ui_warning_contract_data(void); void ui_display_public_eth2(void); void ui_display_privacy_public_key(void); void ui_display_privacy_shared_secret(void); -void ui_display_public_key(void); +void ui_display_public_key(const uint64_t *chain_id); void ui_sign_712_v0(void); void ui_display_stark_public(void); void ui_confirm_selector(void); diff --git a/src_bagl/common_ui.c b/src_bagl/common_ui.c index e1449f0b3..19ff47e4d 100644 --- a/src_bagl/common_ui.c +++ b/src_bagl/common_ui.c @@ -28,7 +28,8 @@ void ui_display_privacy_shared_secret(void) { ux_flow_init(0, ux_display_privacy_shared_secret_flow, NULL); } -void ui_display_public_key(void) { +void ui_display_public_key(const uint64_t *chain_id) { + (void) chain_id; ux_flow_init(0, ux_display_public_flow, NULL); } diff --git a/src_bagl/ui_domain_name.c b/src_bagl/ui_domain_name.c index 599133d2f..31215469d 100644 --- a/src_bagl/ui_domain_name.c +++ b/src_bagl/ui_domain_name.c @@ -1,6 +1,6 @@ #ifdef HAVE_DOMAIN_NAME -#include "ux.h" +#include "ui_domain_name.h" #include "domain_name.h" ////////////////////////////////////////////////////////////////////// diff --git a/src_bagl/ui_flow_signTx.c b/src_bagl/ui_flow_signTx.c index 5d8e7b394..137b134fc 100644 --- a/src_bagl/ui_flow_signTx.c +++ b/src_bagl/ui_flow_signTx.c @@ -158,6 +158,7 @@ UX_STEP_NOCB( .title = "Max Fees", .text = strings.common.maxFee, }); + UX_STEP_NOCB( ux_approval_network_step, bnnn_paging, @@ -240,7 +241,7 @@ void ux_approve_tx(bool fromPlugin) { } uint64_t chain_id = get_tx_chain_id(); - if (chainConfig->chainId == ETHEREUM_MAINNET_CHAINID && chain_id != chainConfig->chainId) { + if ((chainConfig->chainId == ETHEREUM_MAINNET_CHAINID) && (chain_id != chainConfig->chainId)) { ux_approval_tx_flow[step++] = &ux_approval_network_step; } diff --git a/src_features/getPublicKey/cmd_getPublicKey.c b/src_features/getPublicKey/cmd_getPublicKey.c index 42fc3bd28..bca0a88f1 100644 --- a/src_features/getPublicKey/cmd_getPublicKey.c +++ b/src_features/getPublicKey/cmd_getPublicKey.c @@ -21,9 +21,11 @@ void handleGetPublicKey(uint8_t p1, } if ((p1 != P1_CONFIRM) && (p1 != P1_NON_CONFIRM)) { + PRINTF("Error: Unexpected P1 (%u)!\n", p1); THROW(APDU_RESPONSE_INVALID_P1_P2); } if ((p2 != P2_CHAINCODE) && (p2 != P2_NO_CHAINCODE)) { + PRINTF("Error: Unexpected P2 (%u)!\n", p2); THROW(APDU_RESPONSE_INVALID_P1_P2); } @@ -61,6 +63,7 @@ void handleGetPublicKey(uint8_t p1, (void) dataBuffer; // to prevent dead increment warning if (dataLength > 0) { + PRINTF("Error: Leftover unwanted data (%u bytes long)!\n", dataLength); THROW(APDU_RESPONSE_INVALID_DATA); } @@ -78,7 +81,8 @@ void handleGetPublicKey(uint8_t p1, "0x%.*s", 40, tmpCtx.publicKeyContext.address); - ui_display_public_key(); + // don't unnecessarily pass the current app's chain ID + ui_display_public_key(chainConfig->chainId == chain_id ? NULL : &chain_id); *flags |= IO_ASYNCH_REPLY; } diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index a107439f5..10ac87fb8 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -266,6 +266,7 @@ static void nonce_to_string(const txInt256_t *nonce, char *out, size_t out_size) static void get_network_as_string(char *out, size_t out_size) { uint64_t chain_id = get_tx_chain_id(); const char *name = get_network_name_from_chain_id(&chain_id); + if (name == NULL) { // No network name found so simply copy the chain ID as the network name. u64_to_string(chain_id, out, out_size); @@ -504,7 +505,7 @@ void finalizeParsing(bool direct) { sizeof(strings.common.nonce)); PRINTF("Nonce: %s\n", strings.common.nonce); - // Prepare chainID field + // Prepare network field get_network_as_string(strings.common.network_name, sizeof(strings.common.network_name)); PRINTF("Network: %s\n", strings.common.network_name); diff --git a/src_nbgl/ui_get_public_key.c b/src_nbgl/ui_get_public_key.c index 5966737ea..0ee3283de 100644 --- a/src_nbgl/ui_get_public_key.c +++ b/src_nbgl/ui_get_public_key.c @@ -2,27 +2,57 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "ui_nbgl.h" +#include "network.h" -static void reviewReject(void) { +static void cancel_send(void) { io_seproxyhal_touch_address_cancel(NULL); } -static void confirmTransation(void) { +static void confirm_send(void) { io_seproxyhal_touch_address_ok(NULL); } -static void reviewChoice(bool confirm) { +static void confirm_addr(void) { + // display a status page and go back to main + nbgl_useCaseStatus("ADDRESS\nVERIFIED", true, confirm_send); +} + +static void reject_addr(void) { + nbgl_useCaseStatus("Address verification\ncancelled", false, cancel_send); +} + +static void review_choice(bool confirm) { if (confirm) { - // display a status page and go back to main - nbgl_useCaseStatus("ADDRESS\nVERIFIED", true, confirmTransation); + confirm_addr(); } else { - nbgl_useCaseStatus("Address verification\ncancelled", false, reviewReject); + reject_addr(); } } -static void buildScreen(void) { - nbgl_useCaseAddressConfirmation(strings.common.fullAddress, reviewChoice); +static void display_addr(void) { + nbgl_useCaseAddressConfirmation(strings.common.fullAddress, review_choice); +} + +void ui_display_public_key(const uint64_t *chain_id) { + // - if a chain_id is given and it's - known, we specify its network name + // - unknown, we don't specify anything + // - if no chain_id is given we specify the APPNAME (legacy behaviour) + strlcpy(g_stax_shared_buffer, "Verify ", sizeof(g_stax_shared_buffer)); + if (chain_id != NULL) { + if (chain_is_ethereum_compatible(chain_id)) { + strlcat(g_stax_shared_buffer, + get_network_name_from_chain_id(chain_id), + sizeof(g_stax_shared_buffer)); + strlcat(g_stax_shared_buffer, "\n", sizeof(g_stax_shared_buffer)); + } + } else { + strlcat(g_stax_shared_buffer, APPNAME "\n", sizeof(g_stax_shared_buffer)); + } + strlcat(g_stax_shared_buffer, "address", sizeof(g_stax_shared_buffer)); + nbgl_useCaseReviewStart(get_app_icon(false), + g_stax_shared_buffer, + NULL, + "Cancel", + display_addr, + reject_addr); } -void ui_display_public_key(void) { - buildScreen(); -} \ No newline at end of file From 0461928355240d890f2012d2aa7da75f8295d711 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 9 Aug 2023 10:42:38 +0200 Subject: [PATCH 012/160] Updated Ragger client for get pub key --- .../src/ledger_app_clients/ethereum/client.py | 10 ++++++ .../ethereum/command_builder.py | 15 ++++++++ .../ethereum/response_parser.py | 36 +++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 18d774fdf..6f6cdbc0a 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -124,6 +124,16 @@ def send_fund(self, def get_challenge(self): return self._send(self._cmd_builder.get_challenge()) + def get_public_addr(self, + display: bool = True, + chaincode: bool = False, + bip32_path: str = "m/44'/60'/0'/0/0", + chain_id: Optional[int] = None): + return self._send(self._cmd_builder.get_public_addr(display, + chaincode, + bip32_path, + chain_id)) + def provide_domain_name(self, challenge: int, name: str, addr: bytes): payload = format_tlv(DOMAIN_NAME_TAG.STRUCTURE_TYPE, 3) # TrustedDomainName payload += format_tlv(DOMAIN_NAME_TAG.STRUCTURE_VERSION, 1) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 8f2dbfd12..a67767189 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -1,5 +1,6 @@ import struct from enum import IntEnum +from typing import Optional from ragger.bip import pack_derivation_path from typing import List @@ -7,6 +8,7 @@ class InsType(IntEnum): + GET_PUBLIC_ADDR = 0x02 SIGN = 0x04 EIP712_SEND_STRUCT_DEF = 0x1a EIP712_SEND_STRUCT_IMPL = 0x1c @@ -204,3 +206,16 @@ def provide_domain_name(self, tlv_payload: bytes) -> list[bytes]: payload = payload[0xff:] p1 = 0 return chunks + + def get_public_addr(self, + display: bool, + chaincode: bool, + bip32_path: str, + chain_id: Optional[int]) -> bytes: + payload = pack_derivation_path(bip32_path) + if chain_id is not None: + payload += struct.pack(">Q", chain_id) + return self._serialize(InsType.GET_PUBLIC_ADDR, + int(display), + int(chaincode), + payload) diff --git a/client/src/ledger_app_clients/ethereum/response_parser.py b/client/src/ledger_app_clients/ethereum/response_parser.py index 26a2638d0..a00205cbe 100644 --- a/client/src/ledger_app_clients/ethereum/response_parser.py +++ b/client/src/ledger_app_clients/ethereum/response_parser.py @@ -13,3 +13,39 @@ def signature(data: bytes) -> tuple[bytes, bytes, bytes]: def challenge(data: bytes) -> int: assert len(data) == 4 return int.from_bytes(data, "big") + +def pk_addr(data: bytes, has_chaincode: bool = False): + idx = 0 + + if len(data) < (idx + 1): + return None + pk_len = data[idx] + idx += 1 + + if len(data) < (idx + pk_len): + return None + pk = data[idx:idx + pk_len] + idx += pk_len + + if len(data) < (idx + 1): + return None + addr_len = data[idx] + idx += 1 + + if len(data) < (idx + addr_len): + return None + addr = data[idx:idx + addr_len] + idx += addr_len + + if has_chaincode: + if len(data) < (idx + 32): + return None + chaincode = data[idx:idx + 32] + idx += 32 + else: + chaincode = None + + if idx != len(data): + return None + + return pk, addr.decode(), chaincode From 04d20399350d0ccebdda396b7e5bd2acd1176a8a Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 9 Aug 2023 10:42:52 +0200 Subject: [PATCH 013/160] Ragger tests for get pub key --- .../ragger/snapshots/nanos/get_pk_1/00000.png | Bin 0 -> 360 bytes .../ragger/snapshots/nanos/get_pk_1/00001.png | Bin 0 -> 466 bytes .../ragger/snapshots/nanos/get_pk_1/00002.png | Bin 0 -> 486 bytes .../ragger/snapshots/nanos/get_pk_1/00003.png | Bin 0 -> 406 bytes .../ragger/snapshots/nanos/get_pk_1/00004.png | Bin 0 -> 341 bytes .../ragger/snapshots/nanos/get_pk_1/00005.png | Bin 0 -> 349 bytes .../snapshots/nanos/get_pk_137/00000.png | Bin 0 -> 360 bytes .../snapshots/nanos/get_pk_137/00001.png | Bin 0 -> 466 bytes .../snapshots/nanos/get_pk_137/00002.png | Bin 0 -> 486 bytes .../snapshots/nanos/get_pk_137/00003.png | Bin 0 -> 406 bytes .../snapshots/nanos/get_pk_137/00004.png | Bin 0 -> 341 bytes .../snapshots/nanos/get_pk_137/00005.png | Bin 0 -> 349 bytes .../ragger/snapshots/nanos/get_pk_2/00000.png | Bin 0 -> 360 bytes .../ragger/snapshots/nanos/get_pk_2/00001.png | Bin 0 -> 466 bytes .../ragger/snapshots/nanos/get_pk_2/00002.png | Bin 0 -> 486 bytes .../ragger/snapshots/nanos/get_pk_2/00003.png | Bin 0 -> 406 bytes .../ragger/snapshots/nanos/get_pk_2/00004.png | Bin 0 -> 341 bytes .../ragger/snapshots/nanos/get_pk_2/00005.png | Bin 0 -> 349 bytes .../ragger/snapshots/nanos/get_pk_5/00000.png | Bin 0 -> 360 bytes .../ragger/snapshots/nanos/get_pk_5/00001.png | Bin 0 -> 466 bytes .../ragger/snapshots/nanos/get_pk_5/00002.png | Bin 0 -> 486 bytes .../ragger/snapshots/nanos/get_pk_5/00003.png | Bin 0 -> 406 bytes .../ragger/snapshots/nanos/get_pk_5/00004.png | Bin 0 -> 341 bytes .../ragger/snapshots/nanos/get_pk_5/00005.png | Bin 0 -> 349 bytes .../snapshots/nanos/get_pk_None/00000.png | Bin 0 -> 360 bytes .../snapshots/nanos/get_pk_None/00001.png | Bin 0 -> 466 bytes .../snapshots/nanos/get_pk_None/00002.png | Bin 0 -> 486 bytes .../snapshots/nanos/get_pk_None/00003.png | Bin 0 -> 406 bytes .../snapshots/nanos/get_pk_None/00004.png | Bin 0 -> 341 bytes .../snapshots/nanos/get_pk_None/00005.png | Bin 0 -> 349 bytes .../snapshots/nanos/get_pk_rejected/00000.png | Bin 0 -> 360 bytes .../snapshots/nanos/get_pk_rejected/00001.png | Bin 0 -> 466 bytes .../snapshots/nanos/get_pk_rejected/00002.png | Bin 0 -> 486 bytes .../snapshots/nanos/get_pk_rejected/00003.png | Bin 0 -> 406 bytes .../snapshots/nanos/get_pk_rejected/00004.png | Bin 0 -> 341 bytes .../snapshots/nanos/get_pk_rejected/00005.png | Bin 0 -> 340 bytes .../snapshots/nanos/get_pk_rejected/00006.png | Bin 0 -> 349 bytes .../snapshots/nanosp/get_pk_1/00000.png | Bin 0 -> 400 bytes .../snapshots/nanosp/get_pk_1/00001.png | Bin 0 -> 748 bytes .../snapshots/nanosp/get_pk_1/00002.png | Bin 0 -> 364 bytes .../snapshots/nanosp/get_pk_1/00003.png | Bin 0 -> 382 bytes .../snapshots/nanosp/get_pk_137/00000.png | Bin 0 -> 400 bytes .../snapshots/nanosp/get_pk_137/00001.png | Bin 0 -> 748 bytes .../snapshots/nanosp/get_pk_137/00002.png | Bin 0 -> 364 bytes .../snapshots/nanosp/get_pk_137/00003.png | Bin 0 -> 382 bytes .../snapshots/nanosp/get_pk_2/00000.png | Bin 0 -> 400 bytes .../snapshots/nanosp/get_pk_2/00001.png | Bin 0 -> 748 bytes .../snapshots/nanosp/get_pk_2/00002.png | Bin 0 -> 364 bytes .../snapshots/nanosp/get_pk_2/00003.png | Bin 0 -> 382 bytes .../snapshots/nanosp/get_pk_5/00000.png | Bin 0 -> 400 bytes .../snapshots/nanosp/get_pk_5/00001.png | Bin 0 -> 748 bytes .../snapshots/nanosp/get_pk_5/00002.png | Bin 0 -> 364 bytes .../snapshots/nanosp/get_pk_5/00003.png | Bin 0 -> 382 bytes .../snapshots/nanosp/get_pk_None/00000.png | Bin 0 -> 400 bytes .../snapshots/nanosp/get_pk_None/00001.png | Bin 0 -> 748 bytes .../snapshots/nanosp/get_pk_None/00002.png | Bin 0 -> 364 bytes .../snapshots/nanosp/get_pk_None/00003.png | Bin 0 -> 382 bytes .../nanosp/get_pk_rejected/00000.png | Bin 0 -> 400 bytes .../nanosp/get_pk_rejected/00001.png | Bin 0 -> 748 bytes .../nanosp/get_pk_rejected/00002.png | Bin 0 -> 364 bytes .../nanosp/get_pk_rejected/00003.png | Bin 0 -> 365 bytes .../nanosp/get_pk_rejected/00004.png | Bin 0 -> 382 bytes .../ragger/snapshots/nanox/get_pk_1/00000.png | Bin 0 -> 400 bytes .../ragger/snapshots/nanox/get_pk_1/00001.png | Bin 0 -> 748 bytes .../ragger/snapshots/nanox/get_pk_1/00002.png | Bin 0 -> 364 bytes .../ragger/snapshots/nanox/get_pk_1/00003.png | Bin 0 -> 381 bytes .../snapshots/nanox/get_pk_137/00000.png | Bin 0 -> 400 bytes .../snapshots/nanox/get_pk_137/00001.png | Bin 0 -> 748 bytes .../snapshots/nanox/get_pk_137/00002.png | Bin 0 -> 364 bytes .../snapshots/nanox/get_pk_137/00003.png | Bin 0 -> 381 bytes .../ragger/snapshots/nanox/get_pk_2/00000.png | Bin 0 -> 400 bytes .../ragger/snapshots/nanox/get_pk_2/00001.png | Bin 0 -> 748 bytes .../ragger/snapshots/nanox/get_pk_2/00002.png | Bin 0 -> 364 bytes .../ragger/snapshots/nanox/get_pk_2/00003.png | Bin 0 -> 381 bytes .../ragger/snapshots/nanox/get_pk_5/00000.png | Bin 0 -> 400 bytes .../ragger/snapshots/nanox/get_pk_5/00001.png | Bin 0 -> 748 bytes .../ragger/snapshots/nanox/get_pk_5/00002.png | Bin 0 -> 364 bytes .../ragger/snapshots/nanox/get_pk_5/00003.png | Bin 0 -> 381 bytes .../snapshots/nanox/get_pk_None/00000.png | Bin 0 -> 400 bytes .../snapshots/nanox/get_pk_None/00001.png | Bin 0 -> 748 bytes .../snapshots/nanox/get_pk_None/00002.png | Bin 0 -> 364 bytes .../snapshots/nanox/get_pk_None/00003.png | Bin 0 -> 381 bytes .../snapshots/nanox/get_pk_rejected/00000.png | Bin 0 -> 400 bytes .../snapshots/nanox/get_pk_rejected/00001.png | Bin 0 -> 748 bytes .../snapshots/nanox/get_pk_rejected/00002.png | Bin 0 -> 364 bytes .../snapshots/nanox/get_pk_rejected/00003.png | Bin 0 -> 366 bytes .../snapshots/nanox/get_pk_rejected/00004.png | Bin 0 -> 381 bytes .../ragger/snapshots/stax/get_pk_1/00000.png | Bin 0 -> 8677 bytes .../ragger/snapshots/stax/get_pk_1/00001.png | Bin 0 -> 13880 bytes .../ragger/snapshots/stax/get_pk_1/00002.png | Bin 0 -> 4615 bytes .../snapshots/stax/get_pk_137/00000.png | Bin 0 -> 8941 bytes .../snapshots/stax/get_pk_137/00001.png | Bin 0 -> 13880 bytes .../snapshots/stax/get_pk_137/00002.png | Bin 0 -> 4615 bytes .../snapshots/stax/get_pk_137/00003.png | Bin 0 -> 10883 bytes .../ragger/snapshots/stax/get_pk_2/00000.png | Bin 0 -> 7644 bytes .../ragger/snapshots/stax/get_pk_2/00001.png | Bin 0 -> 13880 bytes .../ragger/snapshots/stax/get_pk_2/00002.png | Bin 0 -> 4615 bytes .../ragger/snapshots/stax/get_pk_2/00003.png | Bin 0 -> 10883 bytes .../ragger/snapshots/stax/get_pk_5/00000.png | Bin 0 -> 8650 bytes .../ragger/snapshots/stax/get_pk_5/00001.png | Bin 0 -> 13880 bytes .../ragger/snapshots/stax/get_pk_5/00002.png | Bin 0 -> 4615 bytes .../ragger/snapshots/stax/get_pk_5/00003.png | Bin 0 -> 10883 bytes .../snapshots/stax/get_pk_None/00000.png | Bin 0 -> 8677 bytes .../snapshots/stax/get_pk_None/00001.png | Bin 0 -> 13880 bytes .../snapshots/stax/get_pk_None/00002.png | Bin 0 -> 4615 bytes .../snapshots/stax/get_pk_rejected/00000.png | Bin 0 -> 8677 bytes .../snapshots/stax/get_pk_rejected/00001.png | Bin 0 -> 13880 bytes .../snapshots/stax/get_pk_rejected/00002.png | Bin 0 -> 6545 bytes tests/ragger/test_get_address.py | 80 ++++++++++++++++++ 109 files changed, 80 insertions(+) create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_1/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_137/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_2/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_5/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_None/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00000.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00001.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00002.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00003.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00004.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00005.png create mode 100644 tests/ragger/snapshots/nanos/get_pk_rejected/00006.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_2/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_2/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_2/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_2/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_None/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_None/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_None/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_None/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_rejected/00000.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_rejected/00001.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_rejected/00002.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_rejected/00003.png create mode 100644 tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_2/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_2/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_2/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_2/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_None/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_None/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_None/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_None/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_rejected/00000.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_rejected/00001.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_rejected/00002.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_rejected/00003.png create mode 100644 tests/ragger/snapshots/nanox/get_pk_rejected/00004.png create mode 100644 tests/ragger/snapshots/stax/get_pk_1/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_1/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_1/00002.png create mode 100644 tests/ragger/snapshots/stax/get_pk_137/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_137/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_137/00002.png create mode 100644 tests/ragger/snapshots/stax/get_pk_137/00003.png create mode 100644 tests/ragger/snapshots/stax/get_pk_2/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_2/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_2/00002.png create mode 100644 tests/ragger/snapshots/stax/get_pk_2/00003.png create mode 100644 tests/ragger/snapshots/stax/get_pk_5/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_5/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_5/00002.png create mode 100644 tests/ragger/snapshots/stax/get_pk_5/00003.png create mode 100644 tests/ragger/snapshots/stax/get_pk_None/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_None/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_None/00002.png create mode 100644 tests/ragger/snapshots/stax/get_pk_rejected/00000.png create mode 100644 tests/ragger/snapshots/stax/get_pk_rejected/00001.png create mode 100644 tests/ragger/snapshots/stax/get_pk_rejected/00002.png create mode 100644 tests/ragger/test_get_address.py diff --git a/tests/ragger/snapshots/nanos/get_pk_1/00000.png b/tests/ragger/snapshots/nanos/get_pk_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_1/00001.png b/tests/ragger/snapshots/nanos/get_pk_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_1/00002.png b/tests/ragger/snapshots/nanos/get_pk_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_1/00005.png b/tests/ragger/snapshots/nanos/get_pk_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_137/00000.png b/tests/ragger/snapshots/nanos/get_pk_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_137/00001.png b/tests/ragger/snapshots/nanos/get_pk_137/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_137/00002.png b/tests/ragger/snapshots/nanos/get_pk_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_137/00005.png b/tests/ragger/snapshots/nanos/get_pk_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_2/00000.png b/tests/ragger/snapshots/nanos/get_pk_2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_2/00001.png b/tests/ragger/snapshots/nanos/get_pk_2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_2/00002.png b/tests/ragger/snapshots/nanos/get_pk_2/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_2/00005.png b/tests/ragger/snapshots/nanos/get_pk_2/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_5/00000.png b/tests/ragger/snapshots/nanos/get_pk_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_5/00001.png b/tests/ragger/snapshots/nanos/get_pk_5/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_5/00002.png b/tests/ragger/snapshots/nanos/get_pk_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_5/00005.png b/tests/ragger/snapshots/nanos/get_pk_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_None/00000.png b/tests/ragger/snapshots/nanos/get_pk_None/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_None/00001.png b/tests/ragger/snapshots/nanos/get_pk_None/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_None/00002.png b/tests/ragger/snapshots/nanos/get_pk_None/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_None/00005.png b/tests/ragger/snapshots/nanos/get_pk_None/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanos/get_pk_rejected/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..63778c4169411ca4774809154a96dc72f5c42bae GIT binary patch literal 360 zcmV-u0hj)XP)HURZg zU#;!I6v}uC14u>Wzu%t~M|bV2960SMuqve?yps9TMsY)35@zlRZ#{(u_c+YW+skW+ zRW*^TdY7SAq%~6f8N`9)aj`tn3$qBo0APUMk}s(as$%#nVC88;7=_~UiasD8G*2TI zf_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanos/get_pk_rejected/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0b047e75aafac4f15cbfd4add321d3d995e081 GIT binary patch literal 466 zcmV;@0WJQCP)D>5a`KcI6Z7e_$*%zVORGGmR5^QX z3J;Q80ldHuiRdHKapwvCmvB*Pn#Ui%p_u+p?gZ%G)O2qc3%=6(^rQf2YrfU{4@7V^ zyniu>!JXg~x|2^QFT!wj@j4z*Zevy0ocFe(sJg<7644A((lSiETq=`AdG{`2_gYV1 zu&)_lwrE7{N?+68De|<8oDI0Xc`cdV2#8T#TrAu-zh`)|R%=Djrf`#ZVL`QkWyP--q z4aBi3zM*si-07*qo IM6N<$f&qcqkN^Mx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanos/get_pk_rejected/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..94d88887fe7d97130a0f67875d241a6a32129e0d GIT binary patch literal 486 zcmV@P)M2pgFDGAbSK|I7S~YrO1yfBtC)I$vu~5ql%XXRRf+0bZ5D=2M7QQD6WUi; z$Gz4rARE<0wcaZ`+XW)SRI~Pgmz2G_&AO?-lD@O83Fc$@=FF+~kdcFBqRR2GiByI|{)-kly?NE=5n}17vUC zWeg*3PwBNZo?Jk#Md|eqz}tI*EJnY_matS`f*tt;B)>N_vVd8FDpL@f!eX-@FIVeC zMBBQb$FOwROwmEbDZ+ACNnBpC*PlyLP{;kS+!8ZSj4=tH&W-;QK;L8K=M;8kuRX#i z3BKm#VT>)zWwDnvG7D`#!g5lJ@#Om5xzE|Dpm|f>y-_guNbl230nltd)%z2Ya5cPt zF^IuPkcCEabh414-olH;n5jT1A8SWSjVte^jPND@BGUMmM7<)Umt~ZZ$}GQ^ZPg@C zE_oAf<~|jLW=52wJ&MLgo3Tpq2cgZ-R){v_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00005.png b/tests/ragger/snapshots/nanos/get_pk_rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/get_pk_1/00000.png b/tests/ragger/snapshots/nanosp/get_pk_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 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 FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..a58590b988714545e7960f7f400f360ffc5de41f GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~oCI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/get_pk_137/00000.png b/tests/ragger/snapshots/nanox/get_pk_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 zcmV;B0dM|^P)CI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/get_pk_2/00000.png b/tests/ragger/snapshots/nanox/get_pk_2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 zcmV;B0dM|^P)CI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/get_pk_5/00000.png b/tests/ragger/snapshots/nanox/get_pk_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 zcmV;B0dM|^P)CI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/get_pk_None/00000.png b/tests/ragger/snapshots/nanox/get_pk_None/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 zcmV;B0dM|^P)CI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanox/get_pk_rejected/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a487005a859c0e4cfa0212a67f75a4794d81978c GIT binary patch literal 400 zcmV;B0dM|^P)CI7!~g&QfPa@`!PrJQ5_gtexv+u#;<7n?ZA>=8WP3sS)E3>Z zE!xY!9dS=7B}gQ@x;^0FVDIF?`GpenfZ9e>)xCO*lgBykAKe#*G9mk>o6EkWtAGi$ zGexMpHiozruqDn$Y{#w$*~F;G!$#0S7$x##_JEJys@+nJ)BK}UfHaSYH}BKlb~|vz<*qUayO&UL-bn@O u0WKrm9KB3jyJN~A3;+NC0000$MC1WGrw>UKISsS`00007u7=|{uJYqJL>;_j6^mDZaHv=f!Zm84=;W@WI$E@? zOXjo13J}f$=YCrcPmfy>oyqz=pbXelj|U}k`r5r`WdQCcf2M*fr`MH{dFs^JGyjxQ zein}H=LB`1w6;@gM(@7~6G8|fgnTFQF*Lj`ii-?*s=Lqo;29CQ$BGimF!ie8RCb;& z`xI#qsnXJOz@Cv3>xWtea%@gX9iT?r;2%L+3wp-f4{Ugo>Y?-Y^t^=kH1B7i7*{*} z8MAuES*v@rZP`(*r%;0$_MZ-b5Z`@6vz<@tt$Ao)ZffX!tQ=i$M=Ig;|9A#V(Yz3m z<&{=LuTJlEKsu2tpq_e2!m$=xIaNH-2H(@c1u)Fgeo`!0cdDGfj3(=pB#n*!ByiuEY zT?;pPwZ^gp(J4D+Q57T|c>w^WG@Q`l>@ot`WPYe5)KHP;vQq}B-{Yy2c~&CDP5som zPXqv8u%Wz+gE#ESC!M*d2QvWpA70dk>i!{0`nv*qYZ$t2+t9pcTtWyTgphYL`zuP0 zmZ{zzvNc1+6p>)xjHMTJJ*d6-x>OhH@xtAdhw^7%d*$}R!0Uihwa#o8BjKhFANsH0trV`x|tIb44GF_aKO e2qA=!Qp$h7N+MYG_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_1/00000.png b/tests/ragger/snapshots/stax/get_pk_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..759339003be1e34d8109a940f3c43973474c079f GIT binary patch literal 8677 zcmeHtc{E#V+qWvM)=(`irRbo_(@-@N!%@X?G}LjlRAXw5k)Y;8D2iilwN+wj^^}$h zH3W&6TO|n9Qj&bazIP=!#s`(#Lg-f*Qrxix~ zlRO6-5&Nmf@{ZLAf#TKn*|q~Gz~TO}=R#`czvZ#5M|=B(uU=K4ZJD+i|Ed{$*Z!E` zj#}E;tUE^p+$ML6q5A~#(%S`3C;r|3UW30e@ZZ2dCtnvbqBBqji`T#EF};H+8%H#f zvBHy*@k!vyiV8Rd2ahDs>R1Vp79P`s6%|^SBvLHK!pT))lVb5ns6Gz0bs3MS8#jKZ z6=f!LV!6y8gM*`N0~1A?6ylQzCy81g=fTT=ws)fQ-fc|(z_LDqsG{*nyuA4>1&M=Y z-qRW)AZk2#)btzA)bUiXjL->$?kO010gv^^EL`8uI9(H5nNK5jO|Q&jrk0L6H}y^j z=ONr&;1sQ`Ecv6(&Vy^~jB4^c7;)9ZvssvEEa%cB9G{dl2x-BL;?!TVoio}yucU(` zql-fwb#l+t)O4%cdwDE_Pn@d>ZlEZs-f}vwZ+T~*py*8k>8UBBb?o zK(Wp~D4Zc1XAy5uZ zWUeJQ>J>m7q`7Z2CS}w?w>`Gdj34y(YA;DSq&1D`P9=@AHNob^%#AZ2H-40$hf!#f zc(Txmz21)4Hv5s!dPP>0>&pa^)>Y%>|d>K2TUQzdrg$~L)U zN0buVJ3*~%HkVfmN_lK7bEG}R(>Zr8wyn+Aa&=S$bbCsop4aLwowRTUKkHJgts70X;}}O;ch4GVkZQ+L>)wUGOM0r@yBd{I`cVUb9c3w3J}mfX zd=e=~*`E^8NNFCieyse4Wh7?NXro(n!$Ddhy9Y#C%rPd9vBI64GMes42#VHSb@&_( zb#n5_O?2@)fJ-Y4?y0d#KWKhkI*H&jqQhFBF!ofj$q|-nT8YnF$a3k_)Tw*-)*x%i z)!Ri;A|ReXo{ua^$zIQf?AKQ z`^$-bpLEbMv{jWIX-m)DKLkhcSe8k;i3l(|TA`NsYb>i46#A?{#krc?L}#Cb^~8i7 z3K6DrA@m`Q%e1aC|3K}&Yc9dIx{x}`QgU|0uQ?CuJDvPIrvsvkvv(vcWs|$uzgIK; zHe1P|ykPYY07^q;)-h$h9O{S1C$VzGSJ7V&?`J%>{quaOsvP7jN_==nXU(tveMrCY z0njg^qPA-XCQ$v3lVlhXIl1#k?*Hijp>4*^^x{ zM>(>==LALdQ%n7PdWN{@WbEG8MocJ63%CN9sM!-_^Uk<2pU!dDFfnQ}t=Oz*!ytqh}0i47=aI(3iX7)a=CE!A?RrVP# z^T)$G2-E)JO=j8!PX?}kCtli${Bj^(_1j$s;hqAV#8KrN12KtVlvWb2H&=<5xr@fi}o#(Sg)~c|v zKH;i*yA3-vTLNbFf)h`RBustpn|^%Ua+Py(Q6t6Ez!$Br)mIx6wr*Gcn74b+s0evc z*+y%djk@l=!Q*dN53NS+-Re1O5PO}!iZy)=*pE#ybCTY+BI9~3rK_Vg_Ugs59xj^B zg+HsgNyNb+bD6^{$fHh9`4&vxjvx4_^P<##5~pP;0!;gJ9zVEoFiu?|trQq^F;kq( zsi;_F&943|FnN>iNvpi(0ofQ1?Uem!ZX<3R6n~pbs}r;B+r_ zYHrVkl+=RaIJ5T;mFQNT$-2WS1)O((E#F)!^hou|`zL{c&PBWBD3_6eLot(yOhUvB z`B3KrfFWo7ndB+kv)cUPT}8#Ui)tc*BfWi`mWm22YsNq?vuWChan88h_Nz`NoIkGF zU>n%+0ta8RQvB>wZ}EV5zL;t0pfju)h+za9d_`x^{+v-tB`9sX>LDTw#kz(Q;}F6; z>&qg7b!`j_3QpG+NjKqPnb9Gq>|?a)eDKf61{VHHz?{Ur z^*-zvYr*CkolciIIE?jb+uFFa;`hEk{n-|2o6lcz%WSBqxK%yYHFw11XJb&zyLF_= zb~cPM8Z$FCHa1VF{PNv=JsMgv+PM{?a(Dbh8VRm;*G2Dk2cK7{Yy%xDA6bYp#>eHS zRLK^osq913vuC5)=xi#CajoFi(B4%w zQZ2~V^~-6IzBX#bgoWoVadSz)@!hZ;3ELuVHYLXKKFBoI^oRUe`dT#&k3}7P!9_So zBVeTZLDQZK2Xc9Q`BpGZDUAGWI`H?#gUpD8*utRl%}?188dm#BHSRN^3it&@x)Z;n z#Jn9Mo7>>jV1iNPUKg{!$1T0frllxuQ}kO6YLa(nduE42#TR8HM=mFTP5VylV820?9#od|<;W zY0-46b@zA2Z)BRS-^B$9s`1(s-Fr4Y)6F%Ea=k0kETUq-7XqtUe9N8uc0j)^+5H^1 z0Eq~sCQT2do864U2CDI!M2X107kf80i`-Ly5aXnI-blU4lvz=huwM)N?*=1%&!VSEe9|Pxx-io(pdx zUO^EGxf#C3RGP(+9d-G}gB!OsY5aS zDtR}Gcgd}C(e!_HKREfT62DdtCXi$kL`Ckcf1|9qbP-~t{&blc^z z+uYsV<94ya+AiCz{|VjHros5X^RshZ9?j~4!LtuJsCO5Ar}a{KMqL=nPbWr z%(#}eb6_VY+ABF=_+p|(q_c1?v}h_8S$iI zFRfohRetHad-YV0rGs&$9PYx;KhJT765FC?H-^h1-->|*S>g?FSkG<6HQUN|#~9?Z z74`9pjwKObiOI?GBlxz*Gz62^%2#k?6A?Z8j0IWnZ_$$lKcte+#3$)nJX?XR`DlL# zG3KX(@1MQp9CX&^Sg0^9!!_jT;h@xZq?Cj7<<_i5>t~Yp#RNtF-%TYeR)=?+cv=L@ zxB2ecCrAR^j~{Ct*#KanQaF2+_zF}b_J1>jn}^>2;q*l(ldp@>6q_|@je3Nw06y2$ zIO#7q)hwv%DE5?4eDqA_X2Z9=fTFm=a2^X!>3ZRh!Ls`8DTCwZ$Q+53M6_)E=DV-y zX63cdMciy1q|L4m@m`tT%u#0k_9fip);~zKB_&D)qKuMAHJB3Vc+cu;R9IZzrL5UW z>q6c@w?USD`ABn-(K9V`$y3=qsN)@?XKQqBZ(shbDVFl;JHFVj;)%E6QRj3LKK={u zq=SBqUHQmbc1E(N0melp4ihH(i)h-E?onq!s{0l3gy$gJP!(>hbJS1w1zh&b9$nsJ zm5|UbbfhfskcoD!R0c2hR1c3ox&68pI#3mzqZ|$ei2Cg6ycI_?sSXqh^G+;NJ?#3* z?TxVIO05WJ-v(9DqqO;F8*c)Kh_Li z*EKn}8dYz;fXh1}-9ZB8QfOCRs%m8)OGyw(Xon&QflSPiYFb-6BdDZM?184-E)20z7p}n`-c{LG52xr1%vZ%g$HvE)$%SO~wpVXi)I1^)Ho-9lo82ju zfKw)hY;wA{-2z8+c6WF|(w0C#w}&`i7phJ_k(*WvdaRtk(_v2d;a3OqTl$bgzBW0di~I)DfM`e5;_z0E`dOjbP!Co<4PaSUEOiS5qz z1{AqMq5S{`>JxT|w&YIb=OZ1zTOawnWVsR+cF4Vmg1c94?ebDxf%`{&Bze6MwKA#h z%?xgIclt83)Rb^KxSTas?<5+$z1^b-T?YlG+qgt zPw7b|dy^qZfE|Y!L4-zUYPI*Xd_SC1wPKFj+t13PZ};yleun2EfOBv?4xF>eNtc;r z;q6B1^@Y{4W*5qPsBRGwobBXc9h;nQVMfi3=kX1-RkqLAJeOP`g`9TXGd93WCQzjR z2!r~T^cy0z>@|f=$f8}r9rltM8sL=XfsZi{^1bxRpEPUtw&-OaL0>)EBE9Fo@DBv; zN;?1D{$7Lsc?@iG77w>P?V276r@j9&W3YkVmHEzj_fM^W)54G4UBpini@ZezV9MZ> z^vcavrJmJGpUZ*dmCj8({ga;^TR2=)QPH$>11&b9WSIm#w4=Z}O#M|8|3 z*X+tw(_)DMZX-GbnubUMh!nd!qV$bwcizV9mh)d<3eMClzZpXqosxizL=`_%?tL7v z_9BLEKe9I7(9S>VeCY)XkAq*>f&sqV^HN=Hq&LUY&i%{V(Qv4w5Xox%+Ar=PQ@&c6 zzVGCB{NQ%z+Q(~)PY91-`d|>4NCn&$pyjRKjV{)Q%u0MYX#TM54ewPDC4xZ1WRVe# z+82_KCQrXFd$6EC4nfDo9TAOy0xA-fVRQ;T$ym?qigk zJ5SBWn_#|2=xbqa)Hk7J`Y81}N1rJ=O|33?T<>!HiP4dIILx|<>iKiP=gy8F*Q)i} z%hM1?isEHo6b0Ay6k68n(^H4?qZezA|H%iEkQ*2 z?hP|(X?uBrl=nuqtooZqqls>4GrY9PCf;pT2LeI$d|OPgU+{joS+0P(wU||)3)aoB z9Z_1u14PTUBJGSIEB~6A*ILyu$M`Y3(pOOJka&3%N6)HaZ``-0}v}WxIjeUMVRVQh(=y_IL{_ z#AiIS?%b$X)_zJ$}b+(rPM zA8j#ZK0A@sDw8eNk=`z&7ZHf#Ydi85`muct;P7;VERHdIPrLtWbHqV<9sBTWk=)J& zWU);0w4)+vb<)q%Bs047z9GH8KN$yqsfziTTj0O!lh$HWsVT-Z(@-I4p?+^x*VQf= zslOix>5utn$lR@IT6l$j{3B@h2`uva2_KK)qLOgL>*2*e0Iy<~zYuP$F>@49PCIn7 zm;sd0SQ5EvYBGzk=r2wbFP7IvCY9@gwBI?V=RbOz4`6LQHv88YwXj1aK|dd~`AZG! z?MlhC==Sudnan(i?bbunOO)Px`+Vv7f2oGArYl+xtzc!lj(I3v`@8to5yDl|rCjJcwo^IKX{#jOpAu&_&XZFr%m5`O2v-Jvhhv zHvwYFhc~(w+yLYoF1pS*tyDEF;q*TR$GPZY?|k$aaBD`iu(@VT*jzJBlMSvL;>UL=^qVK?kXAD}m=6?~7UuV>Uw3&5m9&=QUq(#yiajF-E z2ZekTm(j1Wx`|~?@ZaLG_~cPS9WpQo~|31x(sCQT8+$hwGVX-ndHqHL{=T=Mi9CdyU} z-)0E5Ui*iq?1ojfM%wJxCDwTxt(L_ogH!$KZo9*9LcUDIfn>@~?Qt09gV@*E5lQEu z<(XIbL(nlG9F_U^Cv{S^JIk1w;wTFry$L`GLBS>h>ftETr1?=`Nfy=6a7Px8M=AS2 zY-$u509~;?tRcu67{~Pk;z;D~01#@SHL7XXeBpKDdG$ZgW?8c<)n5X_Z4-bZiB=_? zk`Em$RUI54mPW6~i@epBv3$hlLC3%~>6_?!WG?6364xOo6^ z%Pp_<#mU!NmRJQym;CH#A=megDwzYQ4XuC+LlSYEsU@-B>$-VC7t2_9d9Yu^3BPK& z=;9zfdCFT(;hCyQOfeG>2iWW&ZLpG3iobYCJ31qNFXSuRd_v*k!HFGu0gKWDcq}b< zF!)wi@QrxrIMg6cF&FB`^nB{QU^l2$dEC;I3u~iu8E<9=B%MpVycl=@9f+odDj$wl zh{r(5!m^#)(xI-EFr)l0fG!XI_&)G07eKY+;$9^TRrQaN2_wa9;vD0U3qtaNXVkM* zP+ie5>JZ$u7i-vJIJ{R109X(}2-;K+7yLzH6q&y-DOF9TA8OIpmOBm*m=vWv^Gd^P zH|ME|a$V!sa*|g(_B}NJ{|P4lrhodE;>-W>tc>0L-JQal4!@ph0sg)rU}I@_6??@a G;XeS84)QAi literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_1/00001.png b/tests/ragger/snapshots/stax/get_pk_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 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 O0AzF3y77`<+W!DI@85_3 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_137/00001.png b/tests/ragger/snapshots/stax/get_pk_137/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 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 Ldb{=}?D2mCKHFqS literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_2/00000.png b/tests/ragger/snapshots/stax/get_pk_2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f70d46476413de0a08462d7a6546566dac79a0fd GIT binary patch literal 7644 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_2/00001.png b/tests/ragger/snapshots/stax/get_pk_2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 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 Ldb{=}?D2mCKHFqS literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_5/00000.png b/tests/ragger/snapshots/stax/get_pk_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8726e42fa25b177e3fdef95851e0f1667105d80a GIT binary patch literal 8650 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_5/00001.png b/tests/ragger/snapshots/stax/get_pk_5/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 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 Ldb{=}?D2mCKHFqS literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_None/00000.png b/tests/ragger/snapshots/stax/get_pk_None/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..759339003be1e34d8109a940f3c43973474c079f GIT binary patch literal 8677 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 G;XeS84)QAi literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_None/00001.png b/tests/ragger/snapshots/stax/get_pk_None/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 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 G;XeS84)QAi literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00001.png b/tests/ragger/snapshots/stax/get_pk_rejected/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..16af88b199acb4357b8042efb651ae5367fe634e GIT binary patch literal 13880 zcmeHuc{r4P+^=NK)@Dhz=ZO-sWXqlkA!Hf5L4{BxTgDcOvi2wwBYU=ChAd5H3`(Uk z6Jm^QOj0wx8`D^ZFeskZy-~C-a%l-JOqm9@B*#kU0 zJYu$&FS+pW?0dq)!&@oD3+yp=>TcrU(ciVbWa)PA#WIQ11vj039rzJN64SO1cy?bU zK-e=KTB&kV*qay1qjFx@h4^ce>I<1j_QDXS;Ekqx)HF=dmRc!|2%k z(^A6CXe1rIk?e0}dyp^43*16Hmyb9NYP(lX<@6j7vAKP7_zUDN9Vq)eB3#|Hu1vA3kuv1(|P$V8VSN**0MUtN7?Sz zHdQDH7TN$VCx$5qb(CuVt8V8tdKRRohsiUoxvd{@?E{+|3^k(EfX7(+Bw9z+1g)RdGD&<4V?)SA!m8!ag&Qk?i&Y=opHHk;OX6Qj@ajN*@Zsy&wTbAuzRm{wMv zenj_OltO7l^6TCA;(;+9NIEsxOcqj3eLA8yJouINL)7?$R3U9?($|C#5C zo{yM)P*zB;^zCo^Yhsd>h0^EO8mw>8=uc`?!{mFkZ(b85vkL~U%Va{#gS_A(kDHT> zDuy6;pyt9dRwHlrMhFoLKhW-emhnD9Ed&vWw09B+co8qG!E^6X)>WSW!fcvbQn7uj zk#0PAmaFvckkgyR%`*rIYf!q9%=#1R0#`BJyZs*EM;;HLyBmh z>_BE!tGYK8v92sp_-IkDCC;FZcPC}^bo2O!|8sHV(HhHb*>jkZ(g(p=R^cErn|m&waKoMP zkp&?X-Da}A)CXNsZ(vB`X6$(LiorHF{prD9ZDa-pzD9cnO~^l;KcD6QJgCHcv5uxx zGvqiPi#UE0(R6J_5Z_5eFTu6E@W8}+M+@~2!@Xik+K#UiQ!~`Uel@s<$z&!^Su&*p z9vq8@k61JEa*9!zwI=4?sUAgo4lGoCDBPd1l|YO!c?V0_^_OI-H^*g{gNWwThG)ML zX17jv9z7A}Y46suVvQJhHS$z>N#Wyj335&jAQbdYZOS_6$+SoBtFB-puy;fu3RZB$0%{1!q@j_A@wk`*4cWtT}gsx zhEX|Qr)0JYF&D<+f^R=YBjYh;o6sHhJyXZVdvwKAdQ%Ir3CR|)d{WnFhcg|D4b7>( z`Pv`%7jKkYeJG5Y0IQ?r#9>IoqqAFAUW8TRS(Z$mJ1^FBJO(S@KB#+)d8_1ieC*{% zCp}bt8@R;-)yg}Snc4OcfH>}IdU_)^iMYZ*MnG;zoc(T&{cx#s@`%B@@C;M(o|y7NabET<5POGMT|v ztB;8$vALE++t@|&9}kS97u3qRL*X-}8LcTOA5+rM;}&!?)pA#&E)?yJ7$ZL)tnKo( zEnJ8-N4Bhfrjj_fhLLk3l<{LE^)YG&m-sW+1T-Z6UbBY%(dtYrD)Vt!I)}Rh!NPhC zf|mmhv}cdK2!sX^>7at7DBaYjBuSKc_{D;SHG!Q6~)&IC=eJKzjfM z)ubLvq_ckAeYHVS5}L8FSy5gtY2VUY7*_14QWWjK${K$dxWMUQZ~|o%3I^ctALk4t zGNO79GFJp7Vs8(Z7hP#0?Mng@Mg|SFO`^d!^WWqI@A9r25`hpi@n|uPOq(8jV{;1DKkMB>X@c8% zd}XbcP}J+pYl55A+nX&_{ra2rnC%FW>27Gl=38W-Lw?i4naq@7Q-@i|WS;p?Z@~qa z0+IDn&dAM=#h{^@EzyYM7l}>yGTe)h z_CAXBS*jO^upDP!_3Y}&;74kzx2pwpMUb6NSt5kL!<@8;lyOGnEuG1^aYXG zcohWvi!UxK(W=74I&W62E^;{Wx==04HH7qZFp9;};9u}9xLvp8Hrnz=0qtrw`8PWz zviy7ahG1t(%ZXyS-ieHlA+e;Gx3H78hY7Nv-e5od=JAIhu0M@9oz!+QJirVAsVxql zV4B8e4^QbOM@WrR`(&_trG|B7>|OwOVC~*5saqqw=iHrlLB!~KS-0PmNM@-=%Zdp9 zIG23f&7jjjfbrGs?o3i0)%rks->cSqku8ECtCuTnAe0V=%cZe!v?5B6O4N|g@eNbi zfn|aATUT{kaVY}!;W@Fhyl*^4hC$TX#yY-n4lwK>Fl>s)iDVeZhR6z{q>VwMf{A=9 zc`v`ltb1KyeiVfn-zTNT_L58Iz30!l7bVyPm~}ydG(+37JV_NTRJkq1yo>P}oGZu2 zM4LHWq;*LNb1k{I$s=l(*VNa_&w9ztm6y(K@?dkgHewMgy-zL{1vQoz)p;wnBwq?p zq_v#|eXj~>SszY1WKWB=n2m^wY&*UXE&$R2yJS|qUv|s!Hf`kz&}7_03Gm#s`cETd zd$Y@|UvEwet|mxHG;0j5Up$wtG>l4+|C03cAC99nK18T4l=h~*2=ehc#PcacD)6XP z#(_pkr6NPY%6T`$x)F1!vA1*(M2y`%b=ac&?dT(wSm^*L=BC+98$}Irc_?rgPT!)r zONf{z*Wx|@?3fhi9)EBqeqe;TIRlxYVNPy@kQ7GO*2Znl#5yFIDq!NuRI}w!@Aas| zTWi{)K9Mlm&b{b#OT#BIsUvSxl0A81Ir#CA)%B5(L2++kNT&p3!F@OJ)>oJBS?afu z?==J9AXjklORQz3~_|ymb z3xa+9`-2XuoE&a0JsMRB4eIhn;M_AI%2);`$cy%|jG6$XdL*3^LE~a_17+Yr&HuK? zTM%qS^7h-s7+UYusYmsBU)x?%LQ0v$)DW-N-iU8{%Vat5HI;=(iT>5O_Z0Ebfk(Ur zKA}fMEFuJ-25!hgH<$7#`=8-LKF68qeHhzv9c9@gLuR*BkK$*Hs#U|rSpZ-xIg7WE zEOwsuwPx-!1sXdtR$CO$e@iO%hs5`Fm1X9(CDX?mg^=@!tMb0T`Rt>)#N(1zeKj85 z74Iyf1rvKV_tWRv4RICX>}K4OuFt$H@8C=dV(1_D2vn(gVd;>Vfyn6A8d4Z0p&rf9 zaowo*f_8-L!!c;g%2rEY&CJ;#Vc6a0p93c1N$cEyQM<^o2jsH zV2S#+Y+UKcTHTZQ# zF|6pimd|QwecLp3Ax)oHD6V$CLQB3Q$mUs9fhD1-R>U;MUJP-3gZx%b!h(%He#OZk zI$%*TtWym{AM#yN5)vTvu_SsDwLUXvl3=g49IoOX$A;jCH8ZMW=Ep`7UTPfmj6Sni z$-7>1Z(;8$&G)WSb9K1(xZ9sBrXd-`xgs|Z3Zo>H*EJg5sh{lKJgh4bK3sn*L+NJz zIgcYtaTq#__J~Pm!JQ`2P95QDO1L9nL*fz;JD8zI*=Qs{?`(1A#!JB8vlNheqm}O@Kt$GNl7SQdCFhqmm&an0 zjmv^}zg0oedZz~40D@!3otWC7W48q$dQy=WMCkGLqzxg;otM9mnz*(r&jBiCs93s* z0H>b;iVXB!G;|EXx&~YH*r|jI@8j{EK_vCLz~s30 z$%V}~;i{2u)Hk%Y&-q=a<2$!-q(;Jvv>>i~jGuF?c?C%SlAruFq&U_VpvacWv?x91 z3od`mftK?j+f>W8aI(q3tmVdUDX@zm6Vv>mB7AVeU)TXiFpiJ2^q*P9TQ#|DMGlzj zHmsgF*E5wwFTuDr)kb`$zKMK%>}Rl;E3uDI@?OQRHb*ZK{~AeWK@iju>gJoN;an+i z7eginr@#8(%ygDH|9WfYZyawtq9gd9bv*zQ&8)AiJL_umbP+!iM+CsKxpdmo@R5A*q0^lj642SD$tIhE9)q_bVYlRBF+C| z!re3<4{zpiX#_Z-pzv}pXDcyKQ}520toH2@GBWElS}-;4l|Z{$H*`2k%uXGffX;LU zfr37cKBCJ=$z}nOw4rsLXy{08YtQYcS(r0R_*c40GQ~CZS>(6qkFlldKYw}9a5Kt! zPP}nJuXi?oe~eQu2%crE-#Pat735g|w7ilv?%_`QlI%Zvsx;nK5l){nrE<0na;A@j zsh(K(4RuoQPOw*f>SddnKo6vxoQuN{@|H;vMB{Ns;wyq5ghgJ7)(P@57@ErcgaK$6 zJ5M4jtn&-AyAzs-1><$J5LvHE+-(cHoxD%$YBu^f9|Z^n!)MKo74^5hvMlA#51npJ ztSu=YPmDb$=S^*qm_Xe#eYb>qu9M2wyzwyB6>IJwiJE&Sg4g?{9{`DYN`hD91$)Zjx)Z=Lt91djA+{Hs4yg;cv;*oB&d)fycn+X)!s9FcD zq+NMjxLoUKqG>Sd)0slV@*yi{xq4@?6*4U9;!Hn(=*jXP^5|L1{-B5w2FA$@XR2T z)~v|hdi|jEx?P2agKN`9I5@SwArOfu`uV)TdNJ}x;l@!u%R*%>xwhe2)ojBhtcwD& z)XKKH@PneuLtPbIX7fwI#*VsPH-T|0CL#z$oNM1m+fZG&Vs|h{Ky&)&C-xi;ZitW+5!jZtkiv{Nj)?3xDHGW8L1FH z1NweUga`MFKTUt(J}UUn>f&J->p{6Dx1v-Vt-QiHAz&F`{<)5Yk*ijvL6oz8ua2V; z1>I$@c=~dKBM!r0g75?%&gkM8)saAP^}zNn!?N(N+B7_xiZ&bg2|~Y%uk^+9G5jMF5=R=PSBJ|@G1DQ}NhIfqMryrl+!Miskjv*_N< zXUa??)$!)7X6xu8ZD%#llq-+CCOshGil@hLe8 zSAd!`Zddpk?Q5%G?)EiTl*uYDIHC8vWAb(KA5q5vzV@R$#Uv44dP*-nbcT%F9|Uyh zv2r#cU6cAdt0Cm(l`h35lUK@qT`#B!>(9Lg7I(MZbbmKz-+b|S;Xk(=LpqoNBZR%M75uUn`RkNrVZS$shf7zC)oE!Dw{ActL`)g%Mtq|_1v(lq# zxm^)HgGR~sOEEls+vPLL&2T%#cWEGX>yXa3~0bet`c+ELxJMn3$ecMBT(cp>}!Y2=@=`qzo*j>Lgmv1QJi# zWXgIJVn&>v*EQBeZQYR>>pu)jrsBcMx+_>Oq)GOpD^HL%$S{w_FFPQDhEp!(Rf`YU+FnKRkj`NfUBAHYYd8K^)DPo zKkraIV0M|{0U%0Bkwye6WfntfJgI|wAHKWwE=La zO(P!T=X{jg^5K{pPeAaHVph<&gLfh`X?6~t!#KeYiWj!^eJ>u`icht zwgQQT)C3I45wDhiJ^aUG72*D?K~Y1R07G1qMTTdD;`h0zjZ5<;R3{-BSzXpjnXqRowhAn+q`a zp#Or;E0>j=0D(vmC}rE`+3Ion6WrE(fBS>+k~A+MrLF{_E=MScQvM-RsZ(XA@!|nw zwohU-jI4j%7M3wpdV*A1A=@DOL+#$cwdi`yDsl- z_F^Zn03(Yvy7o1rF22Gf++n)BNk=F>tCTTUg2^HtcGTd}t_cxzm&pv9h_`p%p&31Z zJDFYX+<{4|4+O>7KYPgv>roOyuk2F6d9;-!uAwiGykAKIdQ3e<^bC*o^9p6#p1E5c zXi+OJqTG6|@LGdO;36js`*YfC{v-IlM$54*RuXNqu|@O4AI{I@KGgnEEaOb!zP=0p zX>|Xeu5fE-oKnhxHa$7^kdmj|K#OMjWxjEq2S+K_R_q^mr1H6I;Tx`<>OV?RsND%J zpk?&keRVh6??AK;Tcxvfu`G{-OLJs9y4RMGghXC#XhIa^8Ui~jQ}+$kZ|JqZ{?J3b zBsLg4j+?x`dV>PC0W|?k`fk;ceUTT4uN%U=8Unczp%3FP0{i=Zn|?dM$i}rD^n58f zD_at@wbA!CVs+<}#`5%j`@ayYlnJY%7I6*7x91N=SB?|6W`V;>;w3CBU=DbpC8h!Q zI7k~*_ae)9`eRfnqB<~R;MwjF=#p@(yuMrKSE|D z0Q>fm2^yJ9mgv8OA-#6=BF2XE+a#+Ar9ZT%eTZsav0(b)9|9_t{|VbdszwVKyA?_Q zaLCpCnet->2k#)48CXuGJfkwbu$^SaDb2-!H>3zZo1Hk!ZN~~~*L>@N{?$0l89z$> z@(?5AnN07T>7RIOU>uXZ}S`VW`8OgoJB)hxvazZdnQwx4K~s!usa zDQnw`63WRDC_M-Kv~o<4`$0Zb?{8C!iXpVw zIX%ki1l#R&g;#1^3p2{qSlPC^j-5<~Gy%!lkaRiJK)4C+Vzb!K_`)ew$sX631F4A($?a4z$RC6hlYb%J5mX^WbB9ozwWAY98$ zzc?FbjN`Y2a-cQEpO!yGkt;fjRf9>YoN*Wpc9z%QBlvuN*fZ{qwQBEY+bJ5>W|Wu! zh^u|lx5Y!h?X3eybAyvys0`>iy(z|JxX%Wqc`zTD%upD-T$bey4a(}bbZX4Hx*+>R z_V3D5!!2|Rxp}qh>fs_7bJKT^svSKPoYDfG1=MwEFi`A+e=hWn>Q_>}7f>!VeprNE zX`*`%Z3xdF?-^vjXNK%b0UB4c`esirnNdno4erg|M0&Y~JKh4Rc+=$};!$#jy@R?C ze2lqqru)x?9x`M8+-rCq#Fn+lZ-xT$uwxgQ0g{VPekiU_&yXrJK`R4ANRo~S1WP{wo*AMy^*(ncvV$iR2J<={-y^%L;8COvU~0L^k012 zwoZ2Qx&D6Z4j5%K0$*d0_ua30_zrLjZXYM&P)vJZmlWM9EdpXbK15(1-=Jp5E z+*kp>7LPIq=c5k;8(dBRia46nFuNS5<^ZTl5hx%Pbnf%H?%^l)l)AZgPcH-jnTWZg z0-%pi!R0Py<4$<> z-Yi!gd+u2p$&%18OC@{)N~lEmBfz%+j!PEkGj^lNu~lq;eBj>&puBt8fOMJo|1+aF|0UPPm2 zO+^+vV>f-gsge04Lle^cxd?F((bX981J5iDCSoMl@$G4dmeRpbtfBUrOqTGvRxg^e zap#<`rgZG*6$sWn62OA3{SDz1+VGh{7cm`={+jg{_S*MTaW z#JJW?zpt$&leaq+-TKiI#}<*rMN0JF*6j}LJLfa>Gwp|3jg+h5YBtKOV@7ikFAO}M zU4Mx&`VsiPGH<5`0g0{8?9_|))7rA4ofN~@I2Op4eS2EF(hvlCIGopJI4gHw& zP0aQa>mfnCKz96Fov9=5{a768LJ99lvO5Llp`R9Ix}}^64`reF<}l~!cTYP=H2-V8vtpg`1KZdr06O zyYKI+`&M3A6QxvQseqIbfA<6P^;zAnSPOOox(erq78hB^%m=EJVd{WN* z-R^RDP*Y{-l>73R6x8G`=196X0ahS8)g!W_7JRx>!qL@0&{bo!036 z7ChH9j(fVb+;3@H|Eo73;2-xsY47#EdRw9MxwX7GG|AOYsL6I?;J$;`|LLoS@F#UW zyl`I@aN$xUfQFl=JE;2KtzhxJt&Yk4X?w@^9J;t;o*jZCDnjY1*?_*-@~1~Jb511Z z0kzmrYW9aE+!H9fKtak?9sC_*Y}PAddGN&$6)?#4dO-nET{Zig9?O(*w+m1&sLv0$ zsMy}E_}nDTzdO%K0kGBdLXx>fm$Li54Gxx?02EGcB8F7%rO^G}S2((tEZpn_kWL^_ zKK>=#VCWT@!D3rGAGP|2!6~QmTLSGmpd!R!lDz|0)uL5!Wqn)PJq&sW93Iw7ZpwXB zec2;y#i==DQ41ugo>bp;m|}iC01GMWW9Hs(fZGv*t^_C7Zz2z81_GJ_!+_s1VB=Xy z64`M7AUiqw^>{Dd!_9VvVL%N?J`i~g`lRcKXT|#^?Qdl>QY2ImC;>(Sqoxs);OPhy zjWoX|!yQOvBGq!2o-+7EbvB=hj7vl&4?Yog25E?hF3V>T46FLQx-6PTd2dtPUt|yMiNaCFPzqJ5VHJ3oaz&AQb5eT)aY$7+Mh3-FOiseBG zkNlS4rAOz|=f=GP2*rRz8R4sY4kuf(390zIYk$*ZxjtFH$-}r5mzzKDi3L==UDkao z{Nb}~PMLkQxlQ;G`yyH;NK73MfGm4fysjmZ*pxzKb`SnK`=iN6(rWJJK#-R^vD4_4 zW`R-OR?TkX{>zpD$>O?}TcbL}rNnQiwKWe6L}@)NasP9HZ=5=uwN;s<(?Uu(C${Rn zw+&KeCY1mTA>f*-Yg}=o9f_W&Mf5ERH4jyB;>T>cG7&6xZ;#tL#+wCc@d9!s|^#5Oz+!Lh4?m569(pA!Qsq3N^MjR0k^AI zn!aVQb>jJ;6{s>@NqZo0(ejE`*J-igu-E?plU#QE4>kk9-sTmAhIqiZr|w2W&)za{ z&kJpzZ1`sd;3zWAv}>5ii94wpm`^14M8Sad8V0~j3(;MT5S!fP3v>mg%b5T0D?+@W zVdgo~(hCLCgGmOlktI79RkLOh`|jODKIn?J(BQEzRS#V8h3!B8#AttxofOYt_p9?_ z|I<|uM6mb6{}sVNbgOy&ujrN%2DbX1`>66Y>?MN6y>g#~_$8hi2H5aDwObo*?DM}l zvOjfFR;q+Qsi;;W0rmhmVEXTYAHsqh-7wD^Qvc>2i$>ea!TS`KLIwXYw^~1Gd_Q5v z98L+VHvxWFd`fX_$lQMK_+B~_$<%-1)hBrGbDHV&(+WZ7oG(wS_dN!CQt$ohbB250 zKi6V*%ip#CTSM4Bm+p&V^B>Y`5Bl_(BxW_Z%>Lba^qR;$L&g!%m*f1<3%B+$zLTo$ z5-@!(>tFuvx*q}=dhu;muT?Lc^^bpF_pE7^21CJ9%1d3kulr4!;{VBa403k?lnHKW z(G=h@-Kf|z&G({ZcvfW`F8ueu)v%KoyKmLa3o2>l46WTV6iVl&>`wjd;06tX2JNNJ zgH|I=IT=BRJjvBaIzG52|MuwI9l$L?HG>0$ud_b}}2n8r{Ow)gD%&M)+MG*AR<-Faxum=^4JLeWUfIU5o zCSnahzNiYN_s@M#nEiFv2r&NoApi}DD#>TbB-OQP?Ah}zgm~G{ten?hAYdUwyx*S! zrDA{zhucNc^&EWaNBk@RjU|bjWS$jxbL9*WP`V>!{(!qK4)Y=EmLqv94+Qdh3KRwN z3eJ^dnN^(wG~V}7ruUZ5%kt9u~_R1w^C=P>hn>dHBW+m0HbTd@TcfXuGZn<)v$G|HAn8v+YC1*f(UxsGffR z;Fm*X?t1{WklK~+#vpI?AZI>Ay`XL`$LaRkhp4BqKtjzD^{yYoR=R%uPn13tgBGzR zmf{X}ks=^=Oco`_@?dd0p~c4e2KL&ACyw8=MM%&p6eSiaNlfV3!N&rjT< z-$qSSLI(iZe5ZA)AeiL9t+ELyW@-7gR;#*Yne~XJvE~%Y;n59rz^5W*RpofpaY(4F z9Iw}b#>I5pHaH$`=Lg{9dJTEyzkxe5f0^ap3D6jhd0oZN`B>XR`lpNcE|z|lNbjU? zl>*{FEWr6_t=m z4gR_da4IMo@O}vqBG;{82?ww3AU=%6n!QS^vq|&*@Me!GaP**?*4Pii06LEl);W1= zY#}L0K2twwKhr>ohL!pL f+g_3Svpec7%m|lt%mv;E@3R~T? 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 MT|Lhe&V}Xv7j4ZP#{d8T literal 0 HcmV?d00001 diff --git a/tests/ragger/test_get_address.py b/tests/ragger/test_get_address.py new file mode 100644 index 000000000..33ab5f8df --- /dev/null +++ b/tests/ragger/test_get_address.py @@ -0,0 +1,80 @@ +import pytest +from typing import Optional +from pathlib import Path +from ragger.error import ExceptionRAPDU +from ragger.firmware import Firmware +from ragger.backend import BackendInterface +from ragger.navigator import Navigator, NavInsID +from ledger_app_clients.ethereum.client import EthAppClient, StatusWord +from ledger_app_clients.ethereum.settings import SettingID, settings_toggle +import ledger_app_clients.ethereum.response_parser as ResponseParser +from ragger.bip import calculate_public_key_and_chaincode, CurveChoice + +ROOT_SCREENSHOT_PATH = Path(__file__).parent + +@pytest.fixture(params=[True, False]) +def with_chaincode(request) -> bool: + return request.param + +@pytest.fixture(params=[None, 1, 2, 5, 137]) +def chain(request) -> Optional[int]: + return request.param + +def get_moves(firmware: Firmware, + navigator: BackendInterface, + chain: Optional[int] = None, + reject: bool = False): + moves = list() + + if firmware.is_nano: + moves += [ NavInsID.RIGHT_CLICK ] + if firmware.device == "nanos": + moves += [ NavInsID.RIGHT_CLICK ] * 3 + else: + moves += [ NavInsID.RIGHT_CLICK ] + if reject: + moves += [ NavInsID.RIGHT_CLICK ] + moves += [ NavInsID.BOTH_CLICK ] + else: + moves += [ NavInsID.USE_CASE_REVIEW_TAP ] + if chain is not None and chain > 1: + moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP ] + if reject: + moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL ] + else: + moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM ] + + return moves + +def test_get_pk_rejected(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator): + app_client = EthAppClient(backend) + + try: + with app_client.get_public_addr(): + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + "get_pk_rejected", + get_moves(firmware, navigator, reject=True)) + except ExceptionRAPDU as e: + assert e.status == StatusWord.CONDITION_NOT_SATISFIED + else: + assert False # An exception should have been raised + +def test_get_pk(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + with_chaincode: bool, + chain: Optional[int]): + app_client = EthAppClient(backend) + + with app_client.get_public_addr(chaincode=with_chaincode, chain_id=chain): + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + "get_pk_%s" % (chain), + get_moves(firmware, navigator, chain=chain)) + pk, addr, chaincode = ResponseParser.pk_addr(app_client.response().data, with_chaincode) + ref_pk, ref_chaincode = calculate_public_key_and_chaincode(curve=CurveChoice.Secp256k1, + path="m/44'/60'/0'/0/0") + assert pk.hex() == ref_pk + if with_chaincode: + assert chaincode.hex() == ref_chaincode From 7efb86180425d3f576c7f8bdd9ef925def013fb5 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 4 Aug 2023 15:00:48 +0200 Subject: [PATCH 014/160] Removed chain ID restrictions from SET_PLUGIN and PROVIDE_NFT_INFORMATION apdus --- .../provideNFTInformation/cmd_provideNFTInfo.c | 10 +++++----- src_features/setPlugin/cmd_setPlugin.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 303009540..1971134df 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -140,13 +140,13 @@ void handleProvideNFTInformation(uint8_t p1, PRINTF("Address: %.*H\n", ADDRESS_LENGTH, workBuffer + offset); offset += ADDRESS_LENGTH; - uint64_t chainId = u64_from_BE(workBuffer + offset, CHAIN_ID_SIZE); + uint64_t chain_id = u64_from_BE(workBuffer + offset, CHAIN_ID_SIZE); // this prints raw data, so to have a more meaningful print, display // the buffer before the endianness swap - PRINTF("ChainID: %.*H\n", sizeof(chainId), (workBuffer + offset)); - if ((chainConfig->chainId != 0) && (chainConfig->chainId != chainId)) { - PRINTF("Chain ID token mismatch\n"); - THROW(0x6A80); + PRINTF("ChainID: %.*H\n", sizeof(chain_id), (workBuffer + offset)); + if (!chain_is_ethereum_compatible(&chain_id)) { + PRINTF("Unsupported chain ID!\n"); + THROW(APDU_RESPONSE_INVALID_DATA); } offset += CHAIN_ID_SIZE; diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 8cdb8066d..d4ca3c1c9 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -169,13 +169,13 @@ void handleSetPlugin(uint8_t p1, PRINTF("Selector: %.*H\n", SELECTOR_SIZE, tokenContext->methodSelector); offset += SELECTOR_SIZE; - uint64_t chainId = u64_from_BE(workBuffer + offset, CHAIN_ID_SIZE); + uint64_t chain_id = u64_from_BE(workBuffer + offset, CHAIN_ID_SIZE); // this prints raw data, so to have a more meaningful print, display // the buffer before the endianness swap - PRINTF("ChainID: %.*H\n", sizeof(chainId), (workBuffer + offset)); - if ((chainConfig->chainId != 0) && (chainConfig->chainId != chainId)) { - PRINTF("Chain ID token mismatch\n"); - THROW(0x6A80); + PRINTF("ChainID: %.*H\n", sizeof(chain_id), (workBuffer + offset)); + if (!chain_is_ethereum_compatible(&chain_id)) { + PRINTF("Unsupported chain ID!\n"); + THROW(APDU_RESPONSE_INVALID_DATA); } offset += CHAIN_ID_SIZE; From 72c19e0222c36f03b0b4992fef5da45e2662afee Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 11 Aug 2023 17:59:42 +0200 Subject: [PATCH 015/160] Renamed NFT_TEST_KEY to NFT_STAGING_KEY --- .github/workflows/ci-workflow.yml | 6 +++--- Makefile | 8 ++++---- .../provideNFTInformation/cmd_provideNFTInfo.c | 10 +++++----- src_features/setPlugin/cmd_setPlugin.c | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index d5cf7959e..b1259e738 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -114,9 +114,9 @@ jobs: - name: Build testing binaries run: | mkdir tests/speculos/elfs - make clean && make -j DEBUG=1 NFT_TESTING_KEY=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.elf - make clean && make -j DEBUG=1 NFT_TESTING_KEY=1 BOLOS_SDK=$NANOX_SDK && mv bin/app.elf tests/speculos/elfs/nanox.elf - make clean && make -j DEBUG=1 NFT_TESTING_KEY=1 BOLOS_SDK=$NANOSP_SDK && mv bin/app.elf tests/speculos/elfs/nanosp.elf + make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.elf + make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOX_SDK && mv bin/app.elf tests/speculos/elfs/nanox.elf + make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOSP_SDK && mv bin/app.elf tests/speculos/elfs/nanosp.elf - name: Upload app binaries uses: actions/upload-artifact@v3 diff --git a/Makefile b/Makefile index 96ca6f0be..b984e4b7e 100644 --- a/Makefile +++ b/Makefile @@ -150,10 +150,10 @@ endif # NFTs ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += HAVE_NFT_SUPPORT -# Enable the NFT testing key -NFT_TESTING_KEY:=0 -ifneq ($(NFT_TESTING_KEY),0) -DEFINES += HAVE_NFT_TESTING_KEY +# Enable the NFT staging key +NFT_STAGING_KEY:=0 +ifneq ($(NFT_STAGING_KEY),0) +DEFINES += HAVE_NFT_STAGING_KEY endif endif diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 1971134df..f6655b968 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -19,8 +19,8 @@ #define MIN_DER_SIG_SIZE 67 #define MAX_DER_SIG_SIZE 72 -#define TEST_NFT_METADATA_KEY 0 -#define PROD_NFT_METADATA_KEY 1 +#define STAGING_NFT_METADATA_KEY 0 +#define PROD_NFT_METADATA_KEY 1 #define ALGORITHM_ID_1 1 @@ -29,7 +29,7 @@ #define VERSION_1 1 static const uint8_t LEDGER_NFT_METADATA_PUBLIC_KEY[] = { -#ifdef HAVE_NFT_TESTING_KEY +#ifdef HAVE_NFT_STAGING_KEY 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, @@ -156,8 +156,8 @@ void handleProvideNFTInformation(uint8_t p1, PRINTF("KeyID: %d\n", keyId); switch (keyId) { -#ifdef HAVE_NFT_TESTING_KEY - case TEST_NFT_METADATA_KEY: +#ifdef HAVE_NFT_STAGING_KEY + case STAGING_NFT_METADATA_KEY: #endif case PROD_NFT_METADATA_KEY: rawKey = (uint8_t *) LEDGER_NFT_METADATA_PUBLIC_KEY; diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index d4ca3c1c9..76c5a0b44 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -46,7 +46,7 @@ typedef enum AlgorithmID { // Only used for signing NFT plugins (ERC721 and ERC1155) static const uint8_t LEDGER_NFT_SELECTOR_PUBLIC_KEY[] = { -#ifdef HAVE_NFT_TESTING_KEY +#ifdef HAVE_NFT_STAGING_KEY 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, @@ -185,7 +185,7 @@ void handleSetPlugin(uint8_t p1, PRINTF("KeyID: %d\n", keyId); switch (keyId) { -#ifdef HAVE_NFT_TESTING_KEY +#ifdef HAVE_NFT_STAGING_KEY case TEST_PLUGIN_KEY: #endif case PROD_PLUGIN_KEY: From e0ea3697f6fba936473d3b0d336970f42afe76ed Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 16 Aug 2023 10:37:41 +0200 Subject: [PATCH 016/160] Renamed CAL_TEST_KEY to CAL_STAGING_KEY & CAL_CI_KEY to CAL_TEST_KEY --- .github/workflows/ci-workflow.yml | 2 +- Makefile | 14 ++++++++++---- src/tokens.h | 18 +++++++----------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index b1259e738..c260b3519 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -171,7 +171,7 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 with: upload_app_binaries_artifact: "ragger_elfs" - flags: "DEBUG=1 CAL_CI_KEY=1 DOMAIN_NAME_TEST_KEY=1" + flags: "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1" jobs-ragger-tests: name: Run Ragger tests diff --git a/Makefile b/Makefile index b984e4b7e..efc8f6b41 100644 --- a/Makefile +++ b/Makefile @@ -169,12 +169,18 @@ endif # CryptoAssetsList key CAL_TEST_KEY:=0 -CAL_CI_KEY:=0 ifneq ($(CAL_TEST_KEY),0) -DEFINES += HAVE_CAL_TEST_KEY + DEFINES += HAVE_CAL_TEST_KEY endif -ifneq ($(CAL_CI_KEY),0) -DEFINES += HAVE_CAL_CI_KEY +CAL_STAGING_KEY:=0 +ifneq ($(CAL_STAGING_KEY),0) + # Key used by the staging CAL + DEFINES += HAVE_CAL_STAGING_KEY +endif +ifneq (,$(filter $(DEFINES),HAVE_CAL_TEST_KEY)) + ifneq (, $(filter $(DEFINES),HAVE_CAL_STAGING_KEY)) + $(error Multiple alternative CAL keys set at once) + endif endif # ENS diff --git a/src/tokens.h b/src/tokens.h index 1a261c3b8..feeecb8c9 100644 --- a/src/tokens.h +++ b/src/tokens.h @@ -43,24 +43,20 @@ extern tokenDefinition_t const TOKENS_EXTRA[NUM_TOKENS_EXTRA]; #ifndef HAVE_TOKENS_LIST -#if defined(HAVE_CAL_TEST_KEY) && defined(HAVE_CAL_CI_KEY) -#error "CAL key contradiction, two alternative keys selected at once" -#endif - static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { #if defined(HAVE_CAL_TEST_KEY) - // test key 2019-01-11 03:07PM (erc20signer) - 0x04, 0x20, 0xda, 0x62, 0x00, 0x3c, 0x0c, 0xe0, 0x97, 0xe3, 0x36, 0x44, 0xa1, 0x0f, - 0xe4, 0xc3, 0x04, 0x54, 0x06, 0x9a, 0x44, 0x54, 0xf0, 0xfa, 0x9d, 0x4e, 0x84, 0xf4, - 0x50, 0x91, 0x42, 0x9b, 0x52, 0x20, 0xaf, 0x9e, 0x35, 0xc0, 0xb2, 0xd9, 0x28, 0x93, - 0x80, 0x13, 0x73, 0x07, 0xde, 0x4d, 0xd1, 0xd4, 0x18, 0x42, 0x8c, 0xf2, 0x1a, 0x93, - 0xb3, 0x35, 0x61, 0xbb, 0x09, 0xd8, 0x8f, 0xe5, 0x79 -#elif defined(HAVE_CAL_CI_KEY) 0x04, 0x4c, 0xca, 0x8f, 0xad, 0x49, 0x6a, 0xa5, 0x04, 0x0a, 0x00, 0xa7, 0xeb, 0x2f, 0x5c, 0xc3, 0xb8, 0x53, 0x76, 0xd8, 0x8b, 0xa1, 0x47, 0xa7, 0xd7, 0x05, 0x4a, 0x99, 0xc6, 0x40, 0x56, 0x18, 0x87, 0xfe, 0x17, 0xa0, 0x96, 0xe3, 0x6c, 0x3b, 0x52, 0x3b, 0x24, 0x4f, 0x3e, 0x2f, 0xf7, 0xf8, 0x40, 0xae, 0x26, 0xc4, 0xe7, 0x7a, 0xd3, 0xbc, 0x73, 0x9a, 0xf5, 0xde, 0x6f, 0x2d, 0x77, 0xa7, 0xb6 +#elif defined(HAVE_CAL_STAGING_KEY) + // staging key 2019-01-11 03:07PM (erc20signer) + 0x04, 0x20, 0xda, 0x62, 0x00, 0x3c, 0x0c, 0xe0, 0x97, 0xe3, 0x36, 0x44, 0xa1, 0x0f, + 0xe4, 0xc3, 0x04, 0x54, 0x06, 0x9a, 0x44, 0x54, 0xf0, 0xfa, 0x9d, 0x4e, 0x84, 0xf4, + 0x50, 0x91, 0x42, 0x9b, 0x52, 0x20, 0xaf, 0x9e, 0x35, 0xc0, 0xb2, 0xd9, 0x28, 0x93, + 0x80, 0x13, 0x73, 0x07, 0xde, 0x4d, 0xd1, 0xd4, 0x18, 0x42, 0x8c, 0xf2, 0x1a, 0x93, + 0xb3, 0x35, 0x61, 0xbb, 0x09, 0xd8, 0x8f, 0xe5, 0x79 #else // production key 2019-01-11 03:07PM (erc20signer) 0x04, 0x5e, 0x6c, 0x10, 0x20, 0xc1, 0x4d, 0xc4, 0x64, 0x42, 0xfe, 0x89, 0xf9, 0x7c, From 684e19b06f6dc02dbeae131953a069b5da9a1f84 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 29 Aug 2023 16:33:46 +0200 Subject: [PATCH 017/160] New SET_PLUGIN test key --- Makefile | 6 ++++++ client/src/ledger_app_clients/ethereum/keychain.py | 1 + .../ledger_app_clients/ethereum/keychain/set_plugin.pem | 8 ++++++++ src_features/setPlugin/cmd_setPlugin.c | 8 +++++++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 client/src/ledger_app_clients/ethereum/keychain/set_plugin.pem diff --git a/Makefile b/Makefile index efc8f6b41..c33ca427e 100644 --- a/Makefile +++ b/Makefile @@ -147,6 +147,12 @@ ifneq ($(BYPASS_SIGNATURES),0) DEFINES += HAVE_BYPASS_SIGNATURES endif +# Enable the SET_PLUGIN test key +SET_PLUGIN_TEST_KEY:=0 +ifneq ($(SET_PLUGIN_TEST_KEY),0) +DEFINES += HAVE_SET_PLUGIN_TEST_KEY +endif + # NFTs ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += HAVE_NFT_SUPPORT diff --git a/client/src/ledger_app_clients/ethereum/keychain.py b/client/src/ledger_app_clients/ethereum/keychain.py index 4e66b6a37..b6021af5c 100644 --- a/client/src/ledger_app_clients/ethereum/keychain.py +++ b/client/src/ledger_app_clients/ethereum/keychain.py @@ -11,6 +11,7 @@ class Key(Enum): CAL = auto() DOMAIN_NAME = auto() + SET_PLUGIN = auto() _keys: Dict[Key, SigningKey] = dict() diff --git a/client/src/ledger_app_clients/ethereum/keychain/set_plugin.pem b/client/src/ledger_app_clients/ethereum/keychain/set_plugin.pem new file mode 100644 index 000000000..6e84a2115 --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/keychain/set_plugin.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BgUrgQQACg== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHQCAQEEIBErwcYvqeKSOlmQ/j3xPkVcwFf+j1aiMsA+RabczvN7oAcGBSuBBAAK +oUQDQgAEwFW8Ts8FXi2FCF01Eno95nBcf4hQVc1wceh2cb8ZH+M8yPAavC8ofIGa +FIq+G1gd8bSUCvXU3DpOa2AZF3ErNw== +-----END EC PRIVATE KEY----- diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 76c5a0b44..6d3757a1e 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -46,7 +46,13 @@ typedef enum AlgorithmID { // Only used for signing NFT plugins (ERC721 and ERC1155) static const uint8_t LEDGER_NFT_SELECTOR_PUBLIC_KEY[] = { -#ifdef HAVE_NFT_STAGING_KEY +#if defined(HAVE_SET_PLUGIN_TEST_KEY) + 0x04, 0xc0, 0x55, 0xbc, 0x4e, 0xcf, 0x05, 0x5e, 0x2d, 0x85, 0x08, 0x5d, 0x35, 0x12, + 0x7a, 0x3d, 0xe6, 0x70, 0x5c, 0x7f, 0x88, 0x50, 0x55, 0xcd, 0x70, 0x71, 0xe8, 0x76, + 0x71, 0xbf, 0x19, 0x1f, 0xe3, 0x3c, 0xc8, 0xf0, 0x1a, 0xbc, 0x2f, 0x28, 0x7c, 0x81, + 0x9a, 0x14, 0x8a, 0xbe, 0x1b, 0x58, 0x1d, 0xf1, 0xb4, 0x94, 0x0a, 0xf5, 0xd4, 0xdc, + 0x3a, 0x4e, 0x6b, 0x60, 0x19, 0x17, 0x71, 0x2b, 0x37 +#elif defined(HAVE_NFT_STAGING_KEY) 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, From 60b73eeab18e996e46043c8d1d37c374d79c99d7 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 29 Aug 2023 16:34:33 +0200 Subject: [PATCH 018/160] New NFT metadata test key --- Makefile | 19 ++++++++++++++----- .../ledger_app_clients/ethereum/keychain.py | 1 + .../ethereum/keychain/nft.pem | 8 ++++++++ .../cmd_provideNFTInfo.c | 10 ++++++++-- 4 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 client/src/ledger_app_clients/ethereum/keychain/nft.pem diff --git a/Makefile b/Makefile index c33ca427e..f970facbd 100644 --- a/Makefile +++ b/Makefile @@ -155,12 +155,21 @@ endif # NFTs ifneq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_NFT_SUPPORT -# Enable the NFT staging key -NFT_STAGING_KEY:=0 -ifneq ($(NFT_STAGING_KEY),0) -DEFINES += HAVE_NFT_STAGING_KEY + DEFINES += HAVE_NFT_SUPPORT + NFT_TEST_KEY:=0 + ifneq ($(NFT_TEST_KEY),0) + DEFINES += HAVE_NFT_TEST_KEY + endif + NFT_STAGING_KEY:=0 + ifneq ($(NFT_STAGING_KEY),0) + # Key used by the staging backend + DEFINES += HAVE_NFT_STAGING_KEY + endif endif +ifneq (,$(filter $(DEFINES),HAVE_NFT_TEST_KEY)) + ifneq (, $(filter $(DEFINES),HAVE_NFT_STAGING_KEY)) + $(error Multiple alternative NFT keys set at once) + endif endif # Dynamic memory allocator diff --git a/client/src/ledger_app_clients/ethereum/keychain.py b/client/src/ledger_app_clients/ethereum/keychain.py index b6021af5c..433d65234 100644 --- a/client/src/ledger_app_clients/ethereum/keychain.py +++ b/client/src/ledger_app_clients/ethereum/keychain.py @@ -12,6 +12,7 @@ class Key(Enum): CAL = auto() DOMAIN_NAME = auto() SET_PLUGIN = auto() + NFT = auto() _keys: Dict[Key, SigningKey] = dict() diff --git a/client/src/ledger_app_clients/ethereum/keychain/nft.pem b/client/src/ledger_app_clients/ethereum/keychain/nft.pem new file mode 100644 index 000000000..de6d21a29 --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/keychain/nft.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BgUrgQQACg== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHQCAQEEIK69Gt4o0bzkOaEwUE5X2tI+Ks80FQi785Co+6woU9hioAcGBSuBBAAK +oUQDQgAEPPtfsxkF9L052dU1pAwmqrUcXX0yGbKKyUK5gPsgbPswtRzC3iEZrAOO +uw191lQXcCBKPO06eeKLMvu2cmRowA== +-----END EC PRIVATE KEY----- diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index f6655b968..9068b1ee0 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -29,13 +29,19 @@ #define VERSION_1 1 static const uint8_t LEDGER_NFT_METADATA_PUBLIC_KEY[] = { -#ifdef HAVE_NFT_STAGING_KEY +#if defined(HAVE_NFT_TEST_KEY) + 0x04, 0x3c, 0xfb, 0x5f, 0xb3, 0x19, 0x05, 0xf4, 0xbd, 0x39, 0xd9, 0xd5, 0x35, 0xa4, + 0x0c, 0x26, 0xaa, 0xb5, 0x1c, 0x5d, 0x7d, 0x32, 0x19, 0xb2, 0x8a, 0xc9, 0x42, 0xb9, + 0x80, 0xfb, 0x20, 0x6c, 0xfb, 0x30, 0xb5, 0x1c, 0xc2, 0xde, 0x21, 0x19, 0xac, 0x03, + 0x8e, 0xbb, 0x0d, 0x7d, 0xd6, 0x54, 0x17, 0x70, 0x20, 0x4a, 0x3c, 0xed, 0x3a, 0x79, + 0xe2, 0x8b, 0x32, 0xfb, 0xb6, 0x72, 0x64, 0x68, 0xc0 +#elif defined(HAVE_NFT_STAGING_KEY) 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, 0xf5, 0xc6, 0xdf, 0x13, 0x15, 0x8d, 0x28, 0xcc, 0x12, 0xd1, 0xdd, 0xa6, 0xec, 0xe9, 0x46, 0xb8, 0x9d, 0x5c, 0x05, 0x49, 0x92, 0x59, 0xc4 -#else +#else // production key 0x04, 0x98, 0x8d, 0xa6, 0xb2, 0x46, 0xf2, 0x8e, 0x77, 0xc1, 0xba, 0xb6, 0x75, 0xcb, 0x2a, 0x27, 0x44, 0xf7, 0xf5, 0xce, 0xc5, 0x6a, 0xe6, 0xe0, 0x32, 0x23, 0x33, 0x7b, 0x57, 0x94, 0xcd, 0x6a, 0xe0, 0x7d, 0x48, 0xb3, 0x0d, 0xb9, 0xcc, 0xb4, 0x0f, 0x5a, From 4b6e19292cd24ef447d449a41730d8326c862072 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 6 Sep 2023 11:32:20 +0200 Subject: [PATCH 019/160] Fix Makefile assignments --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index f970facbd..22cda9ecb 100644 --- a/Makefile +++ b/Makefile @@ -136,19 +136,19 @@ endif endif # Enables direct data signing without having to specify it in the settings. Useful when testing with speculos. -ALLOW_DATA:=0 +ALLOW_DATA?=0 ifneq ($(ALLOW_DATA),0) DEFINES += HAVE_ALLOW_DATA endif # Bypass the signature verification for setExternalPlugin, setPlugin, provideERC20TokenInfo and provideNFTInfo calls -BYPASS_SIGNATURES:=0 +BYPASS_SIGNATURES?=0 ifneq ($(BYPASS_SIGNATURES),0) DEFINES += HAVE_BYPASS_SIGNATURES endif # Enable the SET_PLUGIN test key -SET_PLUGIN_TEST_KEY:=0 +SET_PLUGIN_TEST_KEY?=0 ifneq ($(SET_PLUGIN_TEST_KEY),0) DEFINES += HAVE_SET_PLUGIN_TEST_KEY endif @@ -156,11 +156,11 @@ endif # NFTs ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += HAVE_NFT_SUPPORT - NFT_TEST_KEY:=0 + NFT_TEST_KEY?=0 ifneq ($(NFT_TEST_KEY),0) DEFINES += HAVE_NFT_TEST_KEY endif - NFT_STAGING_KEY:=0 + NFT_STAGING_KEY?=0 ifneq ($(NFT_STAGING_KEY),0) # Key used by the staging backend DEFINES += HAVE_NFT_STAGING_KEY @@ -183,11 +183,11 @@ DEFINES += HAVE_EIP712_FULL_SUPPORT endif # CryptoAssetsList key -CAL_TEST_KEY:=0 +CAL_TEST_KEY?=0 ifneq ($(CAL_TEST_KEY),0) DEFINES += HAVE_CAL_TEST_KEY endif -CAL_STAGING_KEY:=0 +CAL_STAGING_KEY?=0 ifneq ($(CAL_STAGING_KEY),0) # Key used by the staging CAL DEFINES += HAVE_CAL_STAGING_KEY @@ -201,7 +201,7 @@ endif # ENS ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += HAVE_DOMAIN_NAME -DOMAIN_NAME_TEST_KEY:=0 +DOMAIN_NAME_TEST_KEY?=0 ifneq ($(DOMAIN_NAME_TEST_KEY),0) DEFINES += HAVE_DOMAIN_NAME_TEST_KEY endif From c6453e8781e246c44ad40b831bf11b2c36380b6a Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 28 Aug 2023 15:22:54 +0200 Subject: [PATCH 020/160] Fixes NFT allowance wording on Stax --- src_plugins/erc1155/erc1155_plugin.c | 5 +++++ src_plugins/erc721/erc721_plugin.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src_plugins/erc1155/erc1155_plugin.c b/src_plugins/erc1155/erc1155_plugin.c index 4c530daaf..1ba22b1de 100644 --- a/src_plugins/erc1155/erc1155_plugin.c +++ b/src_plugins/erc1155/erc1155_plugin.c @@ -108,7 +108,12 @@ static void handle_query_contract_id(void *parameters) { switch (context->selectorIndex) { case SET_APPROVAL_FOR_ALL: +#ifdef HAVE_NBGL + strlcpy(msg->version, "manage", msg->versionLength); + strlcat(msg->name, " allowance", msg->nameLength); +#else strlcpy(msg->version, "Allowance", msg->versionLength); +#endif break; case SAFE_TRANSFER: strlcpy(msg->version, "Transfer", msg->versionLength); diff --git a/src_plugins/erc721/erc721_plugin.c b/src_plugins/erc721/erc721_plugin.c index 12a0a92ec..f942fba4d 100644 --- a/src_plugins/erc721/erc721_plugin.c +++ b/src_plugins/erc721/erc721_plugin.c @@ -116,7 +116,12 @@ static void handle_query_contract_id(void *parameters) { switch (context->selectorIndex) { case SET_APPROVAL_FOR_ALL: case APPROVE: +#ifdef HAVE_NBGL + strlcpy(msg->version, "manage", msg->versionLength); + strlcat(msg->name, " allowance", msg->nameLength); +#else strlcpy(msg->version, "Allowance", msg->versionLength); +#endif break; case SAFE_TRANSFER: case SAFE_TRANSFER_DATA: From 0d801ef0332f04ad0cf5209017e290706547588c Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 16 Aug 2023 15:03:53 +0200 Subject: [PATCH 021/160] Fix error on signature computation for SET_PLUGIN --- doc/ethapp.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ethapp.adoc b/doc/ethapp.adoc index d61454a81..4e5c646e3 100644 --- a/doc/ethapp.adoc +++ b/doc/ethapp.adoc @@ -528,7 +528,7 @@ The plugin names `ERC20`, `ERC721` and `ERC1155` are reserved. Additional plugin The signature is computed on -type || version || len(pluginName) || pluginName || address || selector || chainId || keyId || algorithmId || len(signature) || signature +type || version || len(pluginName) || pluginName || address || selector || chainId || keyId || algorithmId #### Coding From 96ae8222eeef37d3886530b414d92ff4c5dd7b83 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 29 Aug 2023 16:49:52 +0200 Subject: [PATCH 022/160] Ragger app client now has proper generic sign methods --- .../src/ledger_app_clients/ethereum/client.py | 95 +++++++++++++++---- tests/ragger/test_domain_name.py | 58 +++++------ 2 files changed, 104 insertions(+), 49 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 6f6cdbc0a..2c3302651 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -11,7 +11,14 @@ WEI_IN_ETH = 1e+18 +GWEI_IN_ETH = 1e+9 +class TxData: + selector: bytes + parameters: list[bytes] + def __init__(self, selector: bytes, params: list[bytes]): + self.selector = selector + self.parameters = params class StatusWord(IntEnum): OK = 0x9000 @@ -96,31 +103,79 @@ def eip712_filtering_message_info(self, name: str, filters_count: int, sig: byte def eip712_filtering_show_field(self, name: str, sig: bytes): return self._send(self._cmd_builder.eip712_filtering_show_field(name, sig)) - def send_fund(self, - bip32_path: str, - nonce: int, - gas_price: int, - gas_limit: int, - to: bytes, - amount: float, - chain_id: int): - data: List[Union[int, bytes]] = list() - data.append(nonce) - data.append(gas_price) - data.append(gas_limit) - data.append(to) - data.append(int(amount * WEI_IN_ETH)) - data.append(bytes()) - data.append(chain_id) - data.append(bytes()) - data.append(bytes()) - - chunks = self._cmd_builder.sign(bip32_path, rlp.encode(data)) + def _sign(self, bip32_path: str, raw_tx: bytes): + chunks = self._cmd_builder.sign(bip32_path, raw_tx) for chunk in chunks[:-1]: with self._send(chunk): pass return self._send(chunks[-1]) + def _data_to_payload(self, data: TxData) -> bytes: + payload = bytearray(data.selector) + for param in data.parameters: + payload += param.rjust(32, b'\x00') + return payload + + def _sign_common(self, + tx: list, + gas_price: float, + gas_limit: int, + destination: bytes, + amount: float, + data: TxData): + tx.append(int(gas_price * GWEI_IN_ETH)) + tx.append(gas_limit) + tx.append(destination) + if amount > 0: + tx.append(int(amount * WEI_IN_ETH)) + else: + tx.append(bytes()) + if data is not None: + tx.append(self._data_to_payload(data)) + else: + tx.append(bytes()) + return tx + + def sign_legacy(self, + bip32_path: str, + nonce: int, + gas_price: float, + gas_limit: int, + destination: bytes, + amount: float, + chain_id: int, + data: TxData = None): + tx = list() + tx.append(nonce) + tx = self._sign_common(tx, gas_price, gas_limit, destination, amount, data) + tx.append(chain_id) + tx.append(bytes()) + tx.append(bytes()) + return self._sign(bip32_path, rlp.encode(tx)) + + def sign_1559(self, + bip32_path: str, + chain_id: int, + nonce: int, + max_prio_gas_price: float, + max_gas_price: float, + gas_limit: int, + destination: bytes, + amount: float, + data: TxData = None, + access_list = list()): + tx = list() + tx.append(chain_id) + tx.append(nonce) + tx.append(int(max_prio_gas_price * GWEI_IN_ETH)) + tx = self._sign_common(tx, max_gas_price, gas_limit, destination, amount, data) + tx.append(access_list) + tx.append(False) + tx.append(bytes()) + tx.append(bytes()) + # prefix with transaction type + return self._sign(bip32_path, b'\x02' + rlp.encode(tx)) + def get_challenge(self): return self._send(self._cmd_builder.get_challenge()) diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 05bcddfa5..8db6fca4f 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -20,7 +20,7 @@ ALGO_ID = 1 BIP32_PATH = "m/44'/60'/0'/0/0" NONCE = 21 -GAS_PRICE = 13000000000 +GAS_PRICE = 13 GAS_LIMIT = 21000 AMOUNT = 1.22 @@ -50,13 +50,13 @@ def test_send_fund(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.send_fund(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - CHAIN_ID): + with app_client.sign_legacy(BIP32_PATH, + NONCE, + GAS_PRICE, + GAS_LIMIT, + ADDR, + AMOUNT, + CHAIN_ID): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 4 @@ -101,13 +101,13 @@ def test_send_fund_wrong_addr(firmware: Firmware, addr = bytearray(ADDR) addr.reverse() - with app_client.send_fund(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - addr, - AMOUNT, - CHAIN_ID): + with app_client.sign_legacy(BIP32_PATH, + NONCE, + GAS_PRICE, + GAS_LIMIT, + addr, + AMOUNT, + CHAIN_ID): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 4 @@ -130,13 +130,13 @@ def test_send_fund_non_mainnet(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.send_fund(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - 5): + with app_client.sign_legacy(BIP32_PATH, + NONCE, + GAS_PRICE, + GAS_LIMIT, + ADDR, + AMOUNT, + 5): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 5 @@ -159,13 +159,13 @@ def test_send_fund_unknown_chain(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.send_fund(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - 9): + with app_client.sign_legacy(BIP32_PATH, + NONCE, + GAS_PRICE, + GAS_LIMIT, + ADDR, + AMOUNT, + 9): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 5 From 171b31d3a325d10da16dde63e9924e7ae9d48d31 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 7 Sep 2023 16:11:49 +0200 Subject: [PATCH 023/160] Added SET_PLUGIN and PROVIDE_NFT_METADATA to Ragger client + a function signature to selector helper function --- client/pyproject.toml | 1 + .../src/ledger_app_clients/ethereum/client.py | 65 +++++++++++++++++++ .../ethereum/command_builder.py | 48 ++++++++++++++ .../src/ledger_app_clients/ethereum/utils.py | 4 ++ 4 files changed, 118 insertions(+) create mode 100644 client/src/ledger_app_clients/ethereum/utils.py diff --git a/client/pyproject.toml b/client/pyproject.toml index 775ff53d6..7b1e8f645 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -29,6 +29,7 @@ requires-python = ">=3.7" dependencies = [ "ragger[speculos]", "simple-rlp", + "pysha3", ] [tools.setuptools] diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 2c3302651..f8b98e2fa 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -206,3 +206,68 @@ def provide_domain_name(self, challenge: int, name: str, addr: bytes): with self._send(chunk): pass return self._send(chunks[-1]) + + def set_plugin(self, + plugin_name: str, + contract_addr: bytes, + selector: bytes, + chain_id: int, + type_: int = 1, + version: int = 1, + key_id: int = 2, + algo_id: int = 1, + sig: Optional[bytes] = None): + if sig is None: + # Temporarily get a command with an empty signature to extract the payload and + # compute the signature on it + tmp = self._cmd_builder.set_plugin(type_, + version, + plugin_name, + contract_addr, + selector, + chain_id, + key_id, + algo_id, + bytes()) + # skip APDU header & empty sig + sig = sign_data(Key.SET_PLUGIN, tmp[5:-1]) + return self._send(self._cmd_builder.set_plugin(type_, + version, + plugin_name, + contract_addr, + selector, + chain_id, + key_id, + algo_id, + sig)) + + def provide_nft_metadata(self, + collection: str, + addr: bytes, + chain_id: int, + type_: int = 1, + version: int = 1, + key_id: int = 1, + algo_id: int = 1, + sig: Optional[bytes] = None): + if sig is None: + # Temporarily get a command with an empty signature to extract the payload and + # compute the signature on it + tmp = self._cmd_builder.provide_nft_information(type_, + version, + collection, + addr, + chain_id, + key_id, + algo_id, + bytes()) + # skip APDU header & empty sig + sig = sign_data(Key.NFT, tmp[5:-1]) + return self._send(self._cmd_builder.provide_nft_information(type_, + version, + collection, + addr, + chain_id, + key_id, + algo_id, + sig)) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index a67767189..e63f061a9 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -10,6 +10,8 @@ class InsType(IntEnum): GET_PUBLIC_ADDR = 0x02 SIGN = 0x04 + PROVIDE_NFT_INFORMATION = 0x14 + SET_PLUGIN = 0x16 EIP712_SEND_STRUCT_DEF = 0x1a EIP712_SEND_STRUCT_IMPL = 0x1c EIP712_SEND_FILTERING = 0x1e @@ -219,3 +221,49 @@ def get_public_addr(self, int(display), int(chaincode), payload) + + def set_plugin(self, + type_: int, + version: int, + plugin_name: str, + contract_addr: bytes, + selector: bytes, + chain_id: int, + key_id: int, + algo_id: int, + sig: bytes) -> bytes: + payload = bytearray() + payload.append(type_) + payload.append(version) + payload.append(len(plugin_name)) + payload += plugin_name.encode() + payload += contract_addr + payload += selector + payload += struct.pack(">Q", chain_id) + payload.append(key_id) + payload.append(algo_id) + payload.append(len(sig)) + payload += sig + return self._serialize(InsType.SET_PLUGIN, 0x00, 0x00, payload) + + def provide_nft_information(self, + type_: int, + version: int, + collection_name: str, + addr: bytes, + chain_id: int, + key_id: int, + algo_id: int, + sig: bytes): + payload = bytearray() + payload.append(type_) + payload.append(version) + payload.append(len(collection_name)) + payload += collection_name.encode() + payload += addr + payload += struct.pack(">Q", chain_id) + payload.append(key_id) + payload.append(algo_id) + payload.append(len(sig)) + payload += sig + return self._serialize(InsType.PROVIDE_NFT_INFORMATION, 0x00, 0x00, payload) diff --git a/client/src/ledger_app_clients/ethereum/utils.py b/client/src/ledger_app_clients/ethereum/utils.py new file mode 100644 index 000000000..aa3c710d5 --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/utils.py @@ -0,0 +1,4 @@ +import sha3 + +def get_selector_from_function(fn: str) -> bytes: + return sha3.keccak_256(fn.encode()).digest()[0:4] From 52c027075307c6892e27cb11943fe0abf0e2afb9 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 23 Aug 2023 11:49:35 +0200 Subject: [PATCH 024/160] New NFT Ragger test --- .github/workflows/ci-workflow.yml | 2 +- .../erc1155_safeBatchTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../erc1155_safeBatchTransferFrom_1/00001.png | Bin 0 -> 372 bytes .../erc1155_safeBatchTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../erc1155_safeBatchTransferFrom_1/00003.png | Bin 0 -> 592 bytes .../erc1155_safeBatchTransferFrom_1/00004.png | Bin 0 -> 823 bytes .../erc1155_safeBatchTransferFrom_1/00005.png | Bin 0 -> 494 bytes .../erc1155_safeBatchTransferFrom_1/00006.png | Bin 0 -> 436 bytes .../erc1155_safeBatchTransferFrom_1/00007.png | Bin 0 -> 472 bytes .../erc1155_safeBatchTransferFrom_1/00008.png | Bin 0 -> 382 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 538 bytes .../00004.png | Bin 0 -> 804 bytes .../00005.png | Bin 0 -> 494 bytes .../00006.png | Bin 0 -> 411 bytes .../00007.png | Bin 0 -> 459 bytes .../00008.png | Bin 0 -> 472 bytes .../00009.png | Bin 0 -> 382 bytes .../erc1155_safeBatchTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../erc1155_safeBatchTransferFrom_5/00001.png | Bin 0 -> 372 bytes .../erc1155_safeBatchTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../erc1155_safeBatchTransferFrom_5/00003.png | Bin 0 -> 538 bytes .../erc1155_safeBatchTransferFrom_5/00004.png | Bin 0 -> 846 bytes .../erc1155_safeBatchTransferFrom_5/00005.png | Bin 0 -> 494 bytes .../erc1155_safeBatchTransferFrom_5/00006.png | Bin 0 -> 383 bytes .../erc1155_safeBatchTransferFrom_5/00007.png | Bin 0 -> 436 bytes .../erc1155_safeBatchTransferFrom_5/00008.png | Bin 0 -> 472 bytes .../erc1155_safeBatchTransferFrom_5/00009.png | Bin 0 -> 382 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 328 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 592 bytes .../00004.png | Bin 0 -> 823 bytes .../00005.png | Bin 0 -> 264 bytes .../00006.png | Bin 0 -> 322 bytes .../00007.png | Bin 0 -> 436 bytes .../00008.png | Bin 0 -> 472 bytes .../00009.png | Bin 0 -> 365 bytes .../00010.png | Bin 0 -> 382 bytes .../erc1155_safeTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_1/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_1/00003.png | Bin 0 -> 592 bytes .../erc1155_safeTransferFrom_1/00004.png | Bin 0 -> 823 bytes .../erc1155_safeTransferFrom_1/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_1/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_1/00007.png | Bin 0 -> 436 bytes .../erc1155_safeTransferFrom_1/00008.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_1/00009.png | Bin 0 -> 382 bytes .../erc1155_safeTransferFrom_137/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_137/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_137/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_137/00003.png | Bin 0 -> 538 bytes .../erc1155_safeTransferFrom_137/00004.png | Bin 0 -> 804 bytes .../erc1155_safeTransferFrom_137/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_137/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_137/00007.png | Bin 0 -> 411 bytes .../erc1155_safeTransferFrom_137/00008.png | Bin 0 -> 459 bytes .../erc1155_safeTransferFrom_137/00009.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_137/00010.png | Bin 0 -> 382 bytes .../erc1155_safeTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_5/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_5/00003.png | Bin 0 -> 538 bytes .../erc1155_safeTransferFrom_5/00004.png | Bin 0 -> 846 bytes .../erc1155_safeTransferFrom_5/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_5/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_5/00007.png | Bin 0 -> 383 bytes .../erc1155_safeTransferFrom_5/00008.png | Bin 0 -> 436 bytes .../erc1155_safeTransferFrom_5/00009.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_5/00010.png | Bin 0 -> 382 bytes .../erc1155_setApprovalForAll_1/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_1/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_1/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_1/00003.png | Bin 0 -> 592 bytes .../erc1155_setApprovalForAll_1/00004.png | Bin 0 -> 823 bytes .../erc1155_setApprovalForAll_1/00005.png | Bin 0 -> 436 bytes .../erc1155_setApprovalForAll_1/00006.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_1/00007.png | Bin 0 -> 382 bytes .../erc1155_setApprovalForAll_137/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_137/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_137/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_137/00003.png | Bin 0 -> 533 bytes .../erc1155_setApprovalForAll_137/00004.png | Bin 0 -> 804 bytes .../erc1155_setApprovalForAll_137/00005.png | Bin 0 -> 411 bytes .../erc1155_setApprovalForAll_137/00006.png | Bin 0 -> 459 bytes .../erc1155_setApprovalForAll_137/00007.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_137/00008.png | Bin 0 -> 382 bytes .../erc1155_setApprovalForAll_5/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_5/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_5/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_5/00003.png | Bin 0 -> 533 bytes .../erc1155_setApprovalForAll_5/00004.png | Bin 0 -> 846 bytes .../erc1155_setApprovalForAll_5/00005.png | Bin 0 -> 383 bytes .../erc1155_setApprovalForAll_5/00006.png | Bin 0 -> 436 bytes .../erc1155_setApprovalForAll_5/00007.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_5/00008.png | Bin 0 -> 382 bytes .../nanosp/erc721_approve_1/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_approve_1/00001.png | Bin 0 -> 345 bytes .../nanosp/erc721_approve_1/00002.png | Bin 0 -> 565 bytes .../nanosp/erc721_approve_1/00003.png | Bin 0 -> 562 bytes .../nanosp/erc721_approve_1/00004.png | Bin 0 -> 810 bytes .../nanosp/erc721_approve_1/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_approve_1/00006.png | Bin 0 -> 436 bytes .../nanosp/erc721_approve_1/00007.png | Bin 0 -> 472 bytes .../nanosp/erc721_approve_1/00008.png | Bin 0 -> 382 bytes .../nanosp/erc721_approve_137/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_approve_137/00001.png | Bin 0 -> 345 bytes .../nanosp/erc721_approve_137/00002.png | Bin 0 -> 565 bytes .../nanosp/erc721_approve_137/00003.png | Bin 0 -> 450 bytes .../nanosp/erc721_approve_137/00004.png | Bin 0 -> 743 bytes .../nanosp/erc721_approve_137/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_approve_137/00006.png | Bin 0 -> 411 bytes .../nanosp/erc721_approve_137/00007.png | Bin 0 -> 459 bytes .../nanosp/erc721_approve_137/00008.png | Bin 0 -> 472 bytes .../nanosp/erc721_approve_137/00009.png | Bin 0 -> 382 bytes .../nanosp/erc721_approve_5/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_approve_5/00001.png | Bin 0 -> 345 bytes .../nanosp/erc721_approve_5/00002.png | Bin 0 -> 565 bytes .../nanosp/erc721_approve_5/00003.png | Bin 0 -> 486 bytes .../nanosp/erc721_approve_5/00004.png | Bin 0 -> 790 bytes .../nanosp/erc721_approve_5/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_approve_5/00006.png | Bin 0 -> 383 bytes .../nanosp/erc721_approve_5/00007.png | Bin 0 -> 436 bytes .../nanosp/erc721_approve_5/00008.png | Bin 0 -> 472 bytes .../nanosp/erc721_approve_5/00009.png | Bin 0 -> 382 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 328 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 550 bytes .../00004.png | Bin 0 -> 810 bytes .../00005.png | Bin 0 -> 264 bytes .../00006.png | Bin 0 -> 436 bytes .../00007.png | Bin 0 -> 472 bytes .../00008.png | Bin 0 -> 365 bytes .../00009.png | Bin 0 -> 382 bytes .../erc721_safeTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../erc721_safeTransferFrom_1/00001.png | Bin 0 -> 328 bytes .../erc721_safeTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../erc721_safeTransferFrom_1/00003.png | Bin 0 -> 550 bytes .../erc721_safeTransferFrom_1/00004.png | Bin 0 -> 810 bytes .../erc721_safeTransferFrom_1/00005.png | Bin 0 -> 264 bytes .../erc721_safeTransferFrom_1/00006.png | Bin 0 -> 436 bytes .../erc721_safeTransferFrom_1/00007.png | Bin 0 -> 472 bytes .../erc721_safeTransferFrom_1/00008.png | Bin 0 -> 382 bytes .../erc721_safeTransferFrom_137/00000.png | Bin 0 -> 414 bytes .../erc721_safeTransferFrom_137/00001.png | Bin 0 -> 328 bytes .../erc721_safeTransferFrom_137/00002.png | Bin 0 -> 537 bytes .../erc721_safeTransferFrom_137/00003.png | Bin 0 -> 430 bytes .../erc721_safeTransferFrom_137/00004.png | Bin 0 -> 743 bytes .../erc721_safeTransferFrom_137/00005.png | Bin 0 -> 264 bytes .../erc721_safeTransferFrom_137/00006.png | Bin 0 -> 411 bytes .../erc721_safeTransferFrom_137/00007.png | Bin 0 -> 459 bytes .../erc721_safeTransferFrom_137/00008.png | Bin 0 -> 472 bytes .../erc721_safeTransferFrom_137/00009.png | Bin 0 -> 382 bytes .../erc721_safeTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../erc721_safeTransferFrom_5/00001.png | Bin 0 -> 328 bytes .../erc721_safeTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../erc721_safeTransferFrom_5/00003.png | Bin 0 -> 464 bytes .../erc721_safeTransferFrom_5/00004.png | Bin 0 -> 790 bytes .../erc721_safeTransferFrom_5/00005.png | Bin 0 -> 264 bytes .../erc721_safeTransferFrom_5/00006.png | Bin 0 -> 383 bytes .../erc721_safeTransferFrom_5/00007.png | Bin 0 -> 436 bytes .../erc721_safeTransferFrom_5/00008.png | Bin 0 -> 472 bytes .../erc721_safeTransferFrom_5/00009.png | Bin 0 -> 382 bytes .../erc721_setApprovalForAll_1/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_1/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_1/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_1/00003.png | Bin 0 -> 553 bytes .../erc721_setApprovalForAll_1/00004.png | Bin 0 -> 810 bytes .../erc721_setApprovalForAll_1/00005.png | Bin 0 -> 436 bytes .../erc721_setApprovalForAll_1/00006.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_1/00007.png | Bin 0 -> 382 bytes .../erc721_setApprovalForAll_137/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_137/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_137/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_137/00003.png | Bin 0 -> 436 bytes .../erc721_setApprovalForAll_137/00004.png | Bin 0 -> 743 bytes .../erc721_setApprovalForAll_137/00005.png | Bin 0 -> 411 bytes .../erc721_setApprovalForAll_137/00006.png | Bin 0 -> 459 bytes .../erc721_setApprovalForAll_137/00007.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_137/00008.png | Bin 0 -> 382 bytes .../erc721_setApprovalForAll_5/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_5/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_5/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_5/00003.png | Bin 0 -> 468 bytes .../erc721_setApprovalForAll_5/00004.png | Bin 0 -> 790 bytes .../erc721_setApprovalForAll_5/00005.png | Bin 0 -> 383 bytes .../erc721_setApprovalForAll_5/00006.png | Bin 0 -> 436 bytes .../erc721_setApprovalForAll_5/00007.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_5/00008.png | Bin 0 -> 382 bytes .../nanosp/erc721_transferFrom_1/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_transferFrom_1/00001.png | Bin 0 -> 328 bytes .../nanosp/erc721_transferFrom_1/00002.png | Bin 0 -> 537 bytes .../nanosp/erc721_transferFrom_1/00003.png | Bin 0 -> 550 bytes .../nanosp/erc721_transferFrom_1/00004.png | Bin 0 -> 810 bytes .../nanosp/erc721_transferFrom_1/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_transferFrom_1/00006.png | Bin 0 -> 436 bytes .../nanosp/erc721_transferFrom_1/00007.png | Bin 0 -> 472 bytes .../nanosp/erc721_transferFrom_1/00008.png | Bin 0 -> 382 bytes .../nanosp/erc721_transferFrom_137/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_transferFrom_137/00001.png | Bin 0 -> 328 bytes .../nanosp/erc721_transferFrom_137/00002.png | Bin 0 -> 537 bytes .../nanosp/erc721_transferFrom_137/00003.png | Bin 0 -> 430 bytes .../nanosp/erc721_transferFrom_137/00004.png | Bin 0 -> 743 bytes .../nanosp/erc721_transferFrom_137/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_transferFrom_137/00006.png | Bin 0 -> 411 bytes .../nanosp/erc721_transferFrom_137/00007.png | Bin 0 -> 459 bytes .../nanosp/erc721_transferFrom_137/00008.png | Bin 0 -> 472 bytes .../nanosp/erc721_transferFrom_137/00009.png | Bin 0 -> 382 bytes .../nanosp/erc721_transferFrom_5/00000.png | Bin 0 -> 414 bytes .../nanosp/erc721_transferFrom_5/00001.png | Bin 0 -> 328 bytes .../nanosp/erc721_transferFrom_5/00002.png | Bin 0 -> 537 bytes .../nanosp/erc721_transferFrom_5/00003.png | Bin 0 -> 464 bytes .../nanosp/erc721_transferFrom_5/00004.png | Bin 0 -> 790 bytes .../nanosp/erc721_transferFrom_5/00005.png | Bin 0 -> 264 bytes .../nanosp/erc721_transferFrom_5/00006.png | Bin 0 -> 383 bytes .../nanosp/erc721_transferFrom_5/00007.png | Bin 0 -> 436 bytes .../nanosp/erc721_transferFrom_5/00008.png | Bin 0 -> 472 bytes .../nanosp/erc721_transferFrom_5/00009.png | Bin 0 -> 382 bytes .../erc1155_safeBatchTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../erc1155_safeBatchTransferFrom_1/00001.png | Bin 0 -> 372 bytes .../erc1155_safeBatchTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../erc1155_safeBatchTransferFrom_1/00003.png | Bin 0 -> 592 bytes .../erc1155_safeBatchTransferFrom_1/00004.png | Bin 0 -> 823 bytes .../erc1155_safeBatchTransferFrom_1/00005.png | Bin 0 -> 494 bytes .../erc1155_safeBatchTransferFrom_1/00006.png | Bin 0 -> 434 bytes .../erc1155_safeBatchTransferFrom_1/00007.png | Bin 0 -> 472 bytes .../erc1155_safeBatchTransferFrom_1/00008.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 372 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 538 bytes .../00004.png | Bin 0 -> 804 bytes .../00005.png | Bin 0 -> 494 bytes .../00006.png | Bin 0 -> 411 bytes .../00007.png | Bin 0 -> 460 bytes .../00008.png | Bin 0 -> 472 bytes .../00009.png | Bin 0 -> 381 bytes .../erc1155_safeBatchTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../erc1155_safeBatchTransferFrom_5/00001.png | Bin 0 -> 372 bytes .../erc1155_safeBatchTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../erc1155_safeBatchTransferFrom_5/00003.png | Bin 0 -> 538 bytes .../erc1155_safeBatchTransferFrom_5/00004.png | Bin 0 -> 846 bytes .../erc1155_safeBatchTransferFrom_5/00005.png | Bin 0 -> 494 bytes .../erc1155_safeBatchTransferFrom_5/00006.png | Bin 0 -> 383 bytes .../erc1155_safeBatchTransferFrom_5/00007.png | Bin 0 -> 434 bytes .../erc1155_safeBatchTransferFrom_5/00008.png | Bin 0 -> 472 bytes .../erc1155_safeBatchTransferFrom_5/00009.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 328 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 592 bytes .../00004.png | Bin 0 -> 823 bytes .../00005.png | Bin 0 -> 264 bytes .../00006.png | Bin 0 -> 322 bytes .../00007.png | Bin 0 -> 434 bytes .../00008.png | Bin 0 -> 472 bytes .../00009.png | Bin 0 -> 366 bytes .../00010.png | Bin 0 -> 381 bytes .../erc1155_safeTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_1/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_1/00003.png | Bin 0 -> 592 bytes .../erc1155_safeTransferFrom_1/00004.png | Bin 0 -> 823 bytes .../erc1155_safeTransferFrom_1/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_1/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_1/00007.png | Bin 0 -> 434 bytes .../erc1155_safeTransferFrom_1/00008.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_1/00009.png | Bin 0 -> 381 bytes .../erc1155_safeTransferFrom_137/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_137/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_137/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_137/00003.png | Bin 0 -> 538 bytes .../erc1155_safeTransferFrom_137/00004.png | Bin 0 -> 804 bytes .../erc1155_safeTransferFrom_137/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_137/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_137/00007.png | Bin 0 -> 411 bytes .../erc1155_safeTransferFrom_137/00008.png | Bin 0 -> 460 bytes .../erc1155_safeTransferFrom_137/00009.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_137/00010.png | Bin 0 -> 381 bytes .../erc1155_safeTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../erc1155_safeTransferFrom_5/00001.png | Bin 0 -> 328 bytes .../erc1155_safeTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../erc1155_safeTransferFrom_5/00003.png | Bin 0 -> 538 bytes .../erc1155_safeTransferFrom_5/00004.png | Bin 0 -> 846 bytes .../erc1155_safeTransferFrom_5/00005.png | Bin 0 -> 264 bytes .../erc1155_safeTransferFrom_5/00006.png | Bin 0 -> 322 bytes .../erc1155_safeTransferFrom_5/00007.png | Bin 0 -> 383 bytes .../erc1155_safeTransferFrom_5/00008.png | Bin 0 -> 434 bytes .../erc1155_safeTransferFrom_5/00009.png | Bin 0 -> 472 bytes .../erc1155_safeTransferFrom_5/00010.png | Bin 0 -> 381 bytes .../erc1155_setApprovalForAll_1/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_1/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_1/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_1/00003.png | Bin 0 -> 594 bytes .../erc1155_setApprovalForAll_1/00004.png | Bin 0 -> 823 bytes .../erc1155_setApprovalForAll_1/00005.png | Bin 0 -> 434 bytes .../erc1155_setApprovalForAll_1/00006.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_1/00007.png | Bin 0 -> 381 bytes .../erc1155_setApprovalForAll_137/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_137/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_137/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_137/00003.png | Bin 0 -> 532 bytes .../erc1155_setApprovalForAll_137/00004.png | Bin 0 -> 804 bytes .../erc1155_setApprovalForAll_137/00005.png | Bin 0 -> 411 bytes .../erc1155_setApprovalForAll_137/00006.png | Bin 0 -> 460 bytes .../erc1155_setApprovalForAll_137/00007.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_137/00008.png | Bin 0 -> 381 bytes .../erc1155_setApprovalForAll_5/00000.png | Bin 0 -> 414 bytes .../erc1155_setApprovalForAll_5/00001.png | Bin 0 -> 345 bytes .../erc1155_setApprovalForAll_5/00002.png | Bin 0 -> 602 bytes .../erc1155_setApprovalForAll_5/00003.png | Bin 0 -> 532 bytes .../erc1155_setApprovalForAll_5/00004.png | Bin 0 -> 846 bytes .../erc1155_setApprovalForAll_5/00005.png | Bin 0 -> 383 bytes .../erc1155_setApprovalForAll_5/00006.png | Bin 0 -> 434 bytes .../erc1155_setApprovalForAll_5/00007.png | Bin 0 -> 472 bytes .../erc1155_setApprovalForAll_5/00008.png | Bin 0 -> 381 bytes .../nanox/erc721_approve_1/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_approve_1/00001.png | Bin 0 -> 345 bytes .../nanox/erc721_approve_1/00002.png | Bin 0 -> 565 bytes .../nanox/erc721_approve_1/00003.png | Bin 0 -> 561 bytes .../nanox/erc721_approve_1/00004.png | Bin 0 -> 810 bytes .../nanox/erc721_approve_1/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_approve_1/00006.png | Bin 0 -> 434 bytes .../nanox/erc721_approve_1/00007.png | Bin 0 -> 472 bytes .../nanox/erc721_approve_1/00008.png | Bin 0 -> 381 bytes .../nanox/erc721_approve_137/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_approve_137/00001.png | Bin 0 -> 345 bytes .../nanox/erc721_approve_137/00002.png | Bin 0 -> 565 bytes .../nanox/erc721_approve_137/00003.png | Bin 0 -> 448 bytes .../nanox/erc721_approve_137/00004.png | Bin 0 -> 743 bytes .../nanox/erc721_approve_137/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_approve_137/00006.png | Bin 0 -> 411 bytes .../nanox/erc721_approve_137/00007.png | Bin 0 -> 460 bytes .../nanox/erc721_approve_137/00008.png | Bin 0 -> 472 bytes .../nanox/erc721_approve_137/00009.png | Bin 0 -> 381 bytes .../nanox/erc721_approve_5/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_approve_5/00001.png | Bin 0 -> 345 bytes .../nanox/erc721_approve_5/00002.png | Bin 0 -> 565 bytes .../nanox/erc721_approve_5/00003.png | Bin 0 -> 485 bytes .../nanox/erc721_approve_5/00004.png | Bin 0 -> 790 bytes .../nanox/erc721_approve_5/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_approve_5/00006.png | Bin 0 -> 383 bytes .../nanox/erc721_approve_5/00007.png | Bin 0 -> 434 bytes .../nanox/erc721_approve_5/00008.png | Bin 0 -> 472 bytes .../nanox/erc721_approve_5/00009.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 414 bytes .../00001.png | Bin 0 -> 328 bytes .../00002.png | Bin 0 -> 537 bytes .../00003.png | Bin 0 -> 550 bytes .../00004.png | Bin 0 -> 810 bytes .../00005.png | Bin 0 -> 264 bytes .../00006.png | Bin 0 -> 434 bytes .../00007.png | Bin 0 -> 472 bytes .../00008.png | Bin 0 -> 366 bytes .../00009.png | Bin 0 -> 381 bytes .../nanox/erc721_safeTransferFrom_1/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_safeTransferFrom_1/00001.png | Bin 0 -> 328 bytes .../nanox/erc721_safeTransferFrom_1/00002.png | Bin 0 -> 537 bytes .../nanox/erc721_safeTransferFrom_1/00003.png | Bin 0 -> 550 bytes .../nanox/erc721_safeTransferFrom_1/00004.png | Bin 0 -> 810 bytes .../nanox/erc721_safeTransferFrom_1/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_safeTransferFrom_1/00006.png | Bin 0 -> 434 bytes .../nanox/erc721_safeTransferFrom_1/00007.png | Bin 0 -> 472 bytes .../nanox/erc721_safeTransferFrom_1/00008.png | Bin 0 -> 381 bytes .../erc721_safeTransferFrom_137/00000.png | Bin 0 -> 414 bytes .../erc721_safeTransferFrom_137/00001.png | Bin 0 -> 328 bytes .../erc721_safeTransferFrom_137/00002.png | Bin 0 -> 537 bytes .../erc721_safeTransferFrom_137/00003.png | Bin 0 -> 430 bytes .../erc721_safeTransferFrom_137/00004.png | Bin 0 -> 743 bytes .../erc721_safeTransferFrom_137/00005.png | Bin 0 -> 264 bytes .../erc721_safeTransferFrom_137/00006.png | Bin 0 -> 411 bytes .../erc721_safeTransferFrom_137/00007.png | Bin 0 -> 460 bytes .../erc721_safeTransferFrom_137/00008.png | Bin 0 -> 472 bytes .../erc721_safeTransferFrom_137/00009.png | Bin 0 -> 381 bytes .../nanox/erc721_safeTransferFrom_5/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_safeTransferFrom_5/00001.png | Bin 0 -> 328 bytes .../nanox/erc721_safeTransferFrom_5/00002.png | Bin 0 -> 537 bytes .../nanox/erc721_safeTransferFrom_5/00003.png | Bin 0 -> 464 bytes .../nanox/erc721_safeTransferFrom_5/00004.png | Bin 0 -> 790 bytes .../nanox/erc721_safeTransferFrom_5/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_safeTransferFrom_5/00006.png | Bin 0 -> 383 bytes .../nanox/erc721_safeTransferFrom_5/00007.png | Bin 0 -> 434 bytes .../nanox/erc721_safeTransferFrom_5/00008.png | Bin 0 -> 472 bytes .../nanox/erc721_safeTransferFrom_5/00009.png | Bin 0 -> 381 bytes .../erc721_setApprovalForAll_1/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_1/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_1/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_1/00003.png | Bin 0 -> 552 bytes .../erc721_setApprovalForAll_1/00004.png | Bin 0 -> 810 bytes .../erc721_setApprovalForAll_1/00005.png | Bin 0 -> 434 bytes .../erc721_setApprovalForAll_1/00006.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_1/00007.png | Bin 0 -> 381 bytes .../erc721_setApprovalForAll_137/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_137/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_137/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_137/00003.png | Bin 0 -> 436 bytes .../erc721_setApprovalForAll_137/00004.png | Bin 0 -> 743 bytes .../erc721_setApprovalForAll_137/00005.png | Bin 0 -> 411 bytes .../erc721_setApprovalForAll_137/00006.png | Bin 0 -> 460 bytes .../erc721_setApprovalForAll_137/00007.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_137/00008.png | Bin 0 -> 381 bytes .../erc721_setApprovalForAll_5/00000.png | Bin 0 -> 414 bytes .../erc721_setApprovalForAll_5/00001.png | Bin 0 -> 345 bytes .../erc721_setApprovalForAll_5/00002.png | Bin 0 -> 602 bytes .../erc721_setApprovalForAll_5/00003.png | Bin 0 -> 469 bytes .../erc721_setApprovalForAll_5/00004.png | Bin 0 -> 790 bytes .../erc721_setApprovalForAll_5/00005.png | Bin 0 -> 383 bytes .../erc721_setApprovalForAll_5/00006.png | Bin 0 -> 434 bytes .../erc721_setApprovalForAll_5/00007.png | Bin 0 -> 472 bytes .../erc721_setApprovalForAll_5/00008.png | Bin 0 -> 381 bytes .../nanox/erc721_transferFrom_1/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_transferFrom_1/00001.png | Bin 0 -> 328 bytes .../nanox/erc721_transferFrom_1/00002.png | Bin 0 -> 537 bytes .../nanox/erc721_transferFrom_1/00003.png | Bin 0 -> 550 bytes .../nanox/erc721_transferFrom_1/00004.png | Bin 0 -> 810 bytes .../nanox/erc721_transferFrom_1/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_transferFrom_1/00006.png | Bin 0 -> 434 bytes .../nanox/erc721_transferFrom_1/00007.png | Bin 0 -> 472 bytes .../nanox/erc721_transferFrom_1/00008.png | Bin 0 -> 381 bytes .../nanox/erc721_transferFrom_137/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_transferFrom_137/00001.png | Bin 0 -> 328 bytes .../nanox/erc721_transferFrom_137/00002.png | Bin 0 -> 537 bytes .../nanox/erc721_transferFrom_137/00003.png | Bin 0 -> 430 bytes .../nanox/erc721_transferFrom_137/00004.png | Bin 0 -> 743 bytes .../nanox/erc721_transferFrom_137/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_transferFrom_137/00006.png | Bin 0 -> 411 bytes .../nanox/erc721_transferFrom_137/00007.png | Bin 0 -> 460 bytes .../nanox/erc721_transferFrom_137/00008.png | Bin 0 -> 472 bytes .../nanox/erc721_transferFrom_137/00009.png | Bin 0 -> 381 bytes .../nanox/erc721_transferFrom_5/00000.png | Bin 0 -> 414 bytes .../nanox/erc721_transferFrom_5/00001.png | Bin 0 -> 328 bytes .../nanox/erc721_transferFrom_5/00002.png | Bin 0 -> 537 bytes .../nanox/erc721_transferFrom_5/00003.png | Bin 0 -> 464 bytes .../nanox/erc721_transferFrom_5/00004.png | Bin 0 -> 790 bytes .../nanox/erc721_transferFrom_5/00005.png | Bin 0 -> 264 bytes .../nanox/erc721_transferFrom_5/00006.png | Bin 0 -> 383 bytes .../nanox/erc721_transferFrom_5/00007.png | Bin 0 -> 434 bytes .../nanox/erc721_transferFrom_5/00008.png | Bin 0 -> 472 bytes .../nanox/erc721_transferFrom_5/00009.png | Bin 0 -> 381 bytes .../erc1155_safeBatchTransferFrom_1/00000.png | Bin 0 -> 10847 bytes .../erc1155_safeBatchTransferFrom_1/00001.png | Bin 0 -> 15844 bytes .../erc1155_safeBatchTransferFrom_1/00002.png | Bin 0 -> 18205 bytes .../erc1155_safeBatchTransferFrom_1/00003.png | Bin 0 -> 11831 bytes .../erc1155_safeBatchTransferFrom_1/00004.png | Bin 0 -> 5467 bytes .../00000.png | Bin 0 -> 10847 bytes .../00001.png | Bin 0 -> 15322 bytes .../00002.png | Bin 0 -> 18579 bytes .../00003.png | Bin 0 -> 8608 bytes .../00004.png | Bin 0 -> 11833 bytes .../00005.png | Bin 0 -> 5467 bytes .../erc1155_safeBatchTransferFrom_5/00000.png | Bin 0 -> 10847 bytes .../erc1155_safeBatchTransferFrom_5/00001.png | Bin 0 -> 15322 bytes .../erc1155_safeBatchTransferFrom_5/00002.png | Bin 0 -> 18449 bytes .../erc1155_safeBatchTransferFrom_5/00003.png | Bin 0 -> 7918 bytes .../erc1155_safeBatchTransferFrom_5/00004.png | Bin 0 -> 11833 bytes .../erc1155_safeBatchTransferFrom_5/00005.png | Bin 0 -> 5467 bytes .../00000.png | Bin 0 -> 10385 bytes .../00001.png | Bin 0 -> 15845 bytes .../00002.png | Bin 0 -> 14736 bytes .../00003.png | Bin 0 -> 7918 bytes .../00004.png | Bin 0 -> 11363 bytes .../00005.png | Bin 0 -> 8186 bytes .../00006.png | Bin 0 -> 5076 bytes .../stax/erc1155_safeTransferFrom_1/00000.png | Bin 0 -> 10385 bytes .../stax/erc1155_safeTransferFrom_1/00001.png | Bin 0 -> 15845 bytes .../stax/erc1155_safeTransferFrom_1/00002.png | Bin 0 -> 14736 bytes .../stax/erc1155_safeTransferFrom_1/00003.png | Bin 0 -> 7918 bytes .../stax/erc1155_safeTransferFrom_1/00004.png | Bin 0 -> 11363 bytes .../stax/erc1155_safeTransferFrom_1/00005.png | Bin 0 -> 5467 bytes .../erc1155_safeTransferFrom_137/00000.png | Bin 0 -> 10385 bytes .../erc1155_safeTransferFrom_137/00001.png | Bin 0 -> 15322 bytes .../erc1155_safeTransferFrom_137/00002.png | Bin 0 -> 15205 bytes .../erc1155_safeTransferFrom_137/00003.png | Bin 0 -> 10755 bytes .../erc1155_safeTransferFrom_137/00004.png | Bin 0 -> 11363 bytes .../erc1155_safeTransferFrom_137/00005.png | Bin 0 -> 5467 bytes .../stax/erc1155_safeTransferFrom_5/00000.png | Bin 0 -> 10385 bytes .../stax/erc1155_safeTransferFrom_5/00001.png | Bin 0 -> 15322 bytes .../stax/erc1155_safeTransferFrom_5/00002.png | Bin 0 -> 15278 bytes .../stax/erc1155_safeTransferFrom_5/00003.png | Bin 0 -> 9898 bytes .../stax/erc1155_safeTransferFrom_5/00004.png | Bin 0 -> 11363 bytes .../stax/erc1155_safeTransferFrom_5/00005.png | Bin 0 -> 5467 bytes .../erc1155_setApprovalForAll_1/00000.png | Bin 0 -> 11662 bytes .../erc1155_setApprovalForAll_1/00001.png | Bin 0 -> 16309 bytes .../erc1155_setApprovalForAll_1/00002.png | Bin 0 -> 15040 bytes .../erc1155_setApprovalForAll_1/00003.png | Bin 0 -> 12590 bytes .../erc1155_setApprovalForAll_1/00004.png | Bin 0 -> 5467 bytes .../erc1155_setApprovalForAll_137/00000.png | Bin 0 -> 11662 bytes .../erc1155_setApprovalForAll_137/00001.png | Bin 0 -> 15786 bytes .../erc1155_setApprovalForAll_137/00002.png | Bin 0 -> 18248 bytes .../erc1155_setApprovalForAll_137/00003.png | Bin 0 -> 12590 bytes .../erc1155_setApprovalForAll_137/00004.png | Bin 0 -> 5467 bytes .../erc1155_setApprovalForAll_5/00000.png | Bin 0 -> 11662 bytes .../erc1155_setApprovalForAll_5/00001.png | Bin 0 -> 15786 bytes .../erc1155_setApprovalForAll_5/00002.png | Bin 0 -> 17523 bytes .../erc1155_setApprovalForAll_5/00003.png | Bin 0 -> 12590 bytes .../erc1155_setApprovalForAll_5/00004.png | Bin 0 -> 5467 bytes .../snapshots/stax/erc721_approve_1/00000.png | Bin 0 -> 11662 bytes .../snapshots/stax/erc721_approve_1/00001.png | Bin 0 -> 15853 bytes .../snapshots/stax/erc721_approve_1/00002.png | Bin 0 -> 15995 bytes .../snapshots/stax/erc721_approve_1/00003.png | Bin 0 -> 12590 bytes .../snapshots/stax/erc721_approve_1/00004.png | Bin 0 -> 5467 bytes .../stax/erc721_approve_137/00000.png | Bin 0 -> 11662 bytes .../stax/erc721_approve_137/00001.png | Bin 0 -> 14141 bytes .../stax/erc721_approve_137/00002.png | Bin 0 -> 15648 bytes .../stax/erc721_approve_137/00003.png | Bin 0 -> 8608 bytes .../stax/erc721_approve_137/00004.png | Bin 0 -> 12592 bytes .../stax/erc721_approve_137/00005.png | Bin 0 -> 5467 bytes .../snapshots/stax/erc721_approve_5/00000.png | Bin 0 -> 11662 bytes .../snapshots/stax/erc721_approve_5/00001.png | Bin 0 -> 14770 bytes .../snapshots/stax/erc721_approve_5/00002.png | Bin 0 -> 16035 bytes .../snapshots/stax/erc721_approve_5/00003.png | Bin 0 -> 7918 bytes .../snapshots/stax/erc721_approve_5/00004.png | Bin 0 -> 12592 bytes .../snapshots/stax/erc721_approve_5/00005.png | Bin 0 -> 5467 bytes .../00000.png | Bin 0 -> 10385 bytes .../00001.png | Bin 0 -> 15491 bytes .../00002.png | Bin 0 -> 15995 bytes .../00003.png | Bin 0 -> 11361 bytes .../00004.png | Bin 0 -> 8186 bytes .../00005.png | Bin 0 -> 5076 bytes .../stax/erc721_safeTransferFrom_1/00000.png | Bin 0 -> 10385 bytes .../stax/erc721_safeTransferFrom_1/00001.png | Bin 0 -> 15491 bytes .../stax/erc721_safeTransferFrom_1/00002.png | Bin 0 -> 15995 bytes .../stax/erc721_safeTransferFrom_1/00003.png | Bin 0 -> 11361 bytes .../stax/erc721_safeTransferFrom_1/00004.png | Bin 0 -> 5467 bytes .../erc721_safeTransferFrom_137/00000.png | Bin 0 -> 10385 bytes .../erc721_safeTransferFrom_137/00001.png | Bin 0 -> 13762 bytes .../erc721_safeTransferFrom_137/00002.png | Bin 0 -> 15648 bytes .../erc721_safeTransferFrom_137/00003.png | Bin 0 -> 8608 bytes .../erc721_safeTransferFrom_137/00004.png | Bin 0 -> 11363 bytes .../erc721_safeTransferFrom_137/00005.png | Bin 0 -> 5467 bytes .../stax/erc721_safeTransferFrom_5/00000.png | Bin 0 -> 10385 bytes .../stax/erc721_safeTransferFrom_5/00001.png | Bin 0 -> 14406 bytes .../stax/erc721_safeTransferFrom_5/00002.png | Bin 0 -> 16035 bytes .../stax/erc721_safeTransferFrom_5/00003.png | Bin 0 -> 7918 bytes .../stax/erc721_safeTransferFrom_5/00004.png | Bin 0 -> 11363 bytes .../stax/erc721_safeTransferFrom_5/00005.png | Bin 0 -> 5467 bytes .../stax/erc721_setApprovalForAll_1/00000.png | Bin 0 -> 11662 bytes .../stax/erc721_setApprovalForAll_1/00001.png | Bin 0 -> 15934 bytes .../stax/erc721_setApprovalForAll_1/00002.png | Bin 0 -> 15380 bytes .../stax/erc721_setApprovalForAll_1/00003.png | Bin 0 -> 12590 bytes .../stax/erc721_setApprovalForAll_1/00004.png | Bin 0 -> 5467 bytes .../erc721_setApprovalForAll_137/00000.png | Bin 0 -> 11662 bytes .../erc721_setApprovalForAll_137/00001.png | Bin 0 -> 14221 bytes .../erc721_setApprovalForAll_137/00002.png | Bin 0 -> 17872 bytes .../erc721_setApprovalForAll_137/00003.png | Bin 0 -> 12590 bytes .../erc721_setApprovalForAll_137/00004.png | Bin 0 -> 5467 bytes .../stax/erc721_setApprovalForAll_5/00000.png | Bin 0 -> 11662 bytes .../stax/erc721_setApprovalForAll_5/00001.png | Bin 0 -> 14853 bytes .../stax/erc721_setApprovalForAll_5/00002.png | Bin 0 -> 17653 bytes .../stax/erc721_setApprovalForAll_5/00003.png | Bin 0 -> 12590 bytes .../stax/erc721_setApprovalForAll_5/00004.png | Bin 0 -> 5467 bytes .../stax/erc721_transferFrom_1/00000.png | Bin 0 -> 10385 bytes .../stax/erc721_transferFrom_1/00001.png | Bin 0 -> 15491 bytes .../stax/erc721_transferFrom_1/00002.png | Bin 0 -> 15995 bytes .../stax/erc721_transferFrom_1/00003.png | Bin 0 -> 11361 bytes .../stax/erc721_transferFrom_1/00004.png | Bin 0 -> 5467 bytes .../stax/erc721_transferFrom_137/00000.png | Bin 0 -> 10385 bytes .../stax/erc721_transferFrom_137/00001.png | Bin 0 -> 13762 bytes .../stax/erc721_transferFrom_137/00002.png | Bin 0 -> 15648 bytes .../stax/erc721_transferFrom_137/00003.png | Bin 0 -> 8608 bytes .../stax/erc721_transferFrom_137/00004.png | Bin 0 -> 11363 bytes .../stax/erc721_transferFrom_137/00005.png | Bin 0 -> 5467 bytes .../stax/erc721_transferFrom_5/00000.png | Bin 0 -> 10385 bytes .../stax/erc721_transferFrom_5/00001.png | Bin 0 -> 14406 bytes .../stax/erc721_transferFrom_5/00002.png | Bin 0 -> 16035 bytes .../stax/erc721_transferFrom_5/00003.png | Bin 0 -> 7918 bytes .../stax/erc721_transferFrom_5/00004.png | Bin 0 -> 11363 bytes .../stax/erc721_transferFrom_5/00005.png | Bin 0 -> 5467 bytes tests/ragger/test_nft.py | 377 ++++++++++++++++++ 573 files changed, 378 insertions(+), 1 deletion(-) create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00010.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00010.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00010.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_1/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_137/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_approve_5/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00010.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00010.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00010.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_1/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_137/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_approve_5/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_1/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_137/00009.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00006.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00007.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00008.png create mode 100644 tests/ragger/snapshots/nanox/erc721_transferFrom_5/00009.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00006.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_137/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_approve_5/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_1/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_1/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_1/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_1/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_1/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_137/00005.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00000.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00001.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00002.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00003.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00004.png create mode 100644 tests/ragger/snapshots/stax/erc721_transferFrom_5/00005.png create mode 100644 tests/ragger/test_nft.py diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index c260b3519..4700a0cb5 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -171,7 +171,7 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 with: upload_app_binaries_artifact: "ragger_elfs" - flags: "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1" + flags: "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" jobs-ragger-tests: name: Run Ragger tests diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00000.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00002.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00005.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d80bd066e15d136f5819e9f35e4a92c240708 GIT binary patch literal 494 zcmVHWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00002.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00004.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6e50574d2da66737ecf835876940a85d420812d6 GIT binary patch literal 804 zcmV+<1Ka$GP)c5JggMH&Jdjghoe!owf*b#trUQ<_+EW8I`EkV3w1%DUWMaVga zdr=Y&EmuQ=mr-ftsiQi&YAZ|TvU~;HQ%`kt(~VWm0_T38g>qo4pCu<(Koj6{!MO@j zP(eC!>g?Zt(%CEs=kdbxEKSDd=InS@owE;NLI@#*knbc= zL&I}mmCUKFoD5IaK@LPnUzVt+j;b1%b-zxNs?h4R4gb_0Rz{ku!ddGDF3Cwn$nV;* zsa6gUBU;v`3|u`)uTd@%3;C^sCsqW*M#$2^)0Kjq1-&B{^ ze>051Nw^E0ByciguoUTD=-p5!u`3S*vW|cBwM_ZV%L<{AVcEnb5JWUpPt?)=s(K%H>-C|pId1c9G^C+nep!`()znPUsa)2yvdPe!kXI;JqRM`0qA-)^HVMKj#Agz5}X0Y0HiN5uat-H*-D!eH?k?a|P!EFjq>HZRM|E iOhXAFgb+f=xAPAy&SBBkGvX8g0000HWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00008.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_137/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00002.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00004.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..417f99b1061e5bff9011cc767bd92f32a77a736d GIT binary patch literal 846 zcmV-U1F`&xP)1=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00005.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d80bd066e15d136f5819e9f35e4a92c240708 GIT binary patch literal 494 zcmVHWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00008.png b/tests/ragger/snapshots/nanosp/erc1155_safeBatchTransferFrom_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00008.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000MjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00010.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..a58590b988714545e7960f7f400f360ffc5de41f GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00008.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6e50574d2da66737ecf835876940a85d420812d6 GIT binary patch literal 804 zcmV+<1Ka$GP)c5JggMH&Jdjghoe!owf*b#trUQ<_+EW8I`EkV3w1%DUWMaVga zdr=Y&EmuQ=mr-ftsiQi&YAZ|TvU~;HQ%`kt(~VWm0_T38g>qo4pCu<(Koj6{!MO@j zP(eC!>g?Zt(%CEs=kdbxEKSDd=InS@owE;NLI@#*knbc= zL&I}mmCUKFoD5IaK@LPnUzVt+j;b1%b-zxNs?h4R4gb_0Rz{ku!ddGDF3Cwn$nV;* zsa6gUBU;v`3|u`)uTd@%3;C^sCsqW*M#$2^)0Kjq1-&B{^ ze>051Nw^E0ByciguoUTD=-p5!u`3S*vW|cBwM_ZV%L<{AVcEnb5JWUpPt?)=s(K%H>-C|pId1c9G^C+nep!`()znPUsa)2yvdPe!kXI;JqRM`0qA-)^HVMKj#Agz5}X0Y0HiN5uat-H*-D!eH?k?a|P!EFjq>HZRM|E iOhXAFgb+f=xAPAy&SBBkGvX8g0000|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00009.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_137/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00003.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00004.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..417f99b1061e5bff9011cc767bd92f32a77a736d GIT binary patch literal 846 zcmV-U1F`&xP)1=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00006.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00007.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00008.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00009.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_5/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 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 Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00006.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 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 B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00007.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAy^565{WS9P*SUkB4yibQaaDVQI_I2Hs$W>9$WbCQm-JpvRiTmj zSsO+`lN_fL0hL}<@zMvLoR?@~`PW`%`)iz#5zvh2p@{RpzcZ(EdYO)xX@OJFTWUU0 zZRBYSJ7;sXwBz8DO<#meLG?@8%Rt04T-ENt$SLE%SV$s7jeru-b2~O!b|t4;u2p6u zO6q;VvHRu|sV;H$og8Vr>^UU`43SC$IYyNj% zMVx%ebG0t@YI+1TJFTwBSZ`H+&qcIdu=ftl+fC0000000000000000Ac1=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00005.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00007.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_1/00003.png b/tests/ragger/snapshots/nanosp/erc721_approve_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..acfaef10ac328ac445333bacd9d5c376f358866b GIT binary patch literal 562 zcmV-20?qx2P)j zWIb{x+v>`gn=Sbro|$vrZI#a-#Afpr_qRkprSzDt(X**bDLLo5hUAFcm{M3qt(H^@ z4dJL4dxm7Hq-|r#8?S&S%DCwC{6tOP{PajB5eWIKEo}6nt``GtN@i9-b4Q2vh2I&c z|>Nvmq?|ikjJiYA5a2z{I81qN)o;r*}stGWi|Q zY^l+?-Q3uc1}> zJB3voJV(W|*a!6UI@REm9Gtw&Fb)`B3+t=CeK6t)#jF{0fz|N6PD2T}M1Nd-T|wuTufd+;)k!*G=p`__M^FEO8Yfzpkvwby?IEpqfCvaQ$_#E71J<*j!F_p?a0> z(zWuC<#JYSl`+?TNvL>QmakK->sT_KL)Vt_c`0M2)9`LJhgY*_Iv3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_1/00005.png b/tests/ragger/snapshots/nanosp/erc721_approve_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_approve_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_1/00007.png b/tests/ragger/snapshots/nanosp/erc721_approve_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_137/00003.png b/tests/ragger/snapshots/nanosp/erc721_approve_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..91b78f3d4aac17d0966cfc0a25cdcba1c73aaa22 GIT binary patch literal 450 zcmV;z0X_bSP)SH8GYy6bNMg!ENbt)h~#@Hy^=1>G&mi#JW~B& zC3rN8I78`FrG1;5y!jnaq&hd+TwYZ3kY`V%O9mqSwjNxmMa?WG(oC(~0mT(Pv@ZIS z>5PnFm3XxmC$hLwxYn1TCRI<=81<~XdStO6n0-X8EJ1ma^~b=%TdSL@Dm2=>d1ax+ z&wye{9c|m3n|h>w$%8v*y^_UfQT<2M`1TL?cP-ul7&ZS-*r0dkQ2@Xp^5e}e2c8q; zuNEpFwqW-dnlJPIR&h@Z{r`eCwBCz5!2ZzN-2tl@pM%3EAiS8fJO`#HAdKDh_g}{6 z;16pZ?KyN7U&Gma2se6Sr=yX2-$&zU8dUH||907*qoM6N<$g4eChmH+?% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_137/00004.png b/tests/ragger/snapshots/nanosp/erc721_approve_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec458c274d19e72049bff3843bda758cfef2332 GIT binary patch literal 743 zcmV?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_137/00006.png b/tests/ragger/snapshots/nanosp/erc721_approve_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_137/00008.png b/tests/ragger/snapshots/nanosp/erc721_approve_137/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00003.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1738e51b115fd6101b30544786b9c39f955e25ef GIT binary patch literal 486 zcmV@P)n0OR{K~NsHbI(`n2yBEc66_oR006MutGi_gK^^hl8=D-F z>5-M<+114?zLKBrmfrj0TIJt260bSteM|P8bHBrTwA|Do1n+(N49O$%#+1P_YiXqF zun^ojierZ4RLN`Wo4o!fAWL0bYjgjmn#XZkBArNt{Incgs72LLbPQ7(`2=L|=%)L^ zJ{V)<5mty-&tk_Y{!_Tdm!K+DPgIU9_gy(MTM#b0M2###=^)F?z`#?hld3Az+Pr#X zpuuZEwxqVUto5F!!0zv+Yk6ll|1vVY!FLN~=e9Bdj~D8Y%xR@4>Bc-4ZnWr);{Z zuw@Q5?1mb5ie{IBxDlJaJh;s($!^zqf0@3O%f6?ZN0kn)%)poBA_!~FcuhO!06VJ?DoJJzrXsxn000000000000000 c006)=f2y8=NQ;@@=>Px#07*qoM6N<$f}?2SYXATM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00004.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..694eda50792ccc1e60ca5d49862d45214fd67835 GIT binary patch literal 790 zcmV+x1L^#UP)zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00005.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00006.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00007.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00008.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00003.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..41e5dad2e132395a454c134a8f0eac68f4019f9f GIT binary patch literal 550 zcmV+>0@?kEP)Kdu?e)adT$j`{~bu9B9pz2YNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77VpokCP$mFgmQit}Dp z7P94QrZB+dBPfe3+09JuklMS7n~$YwN05!fiLCikDwCAEo4yuVI2mj}y;y6tN0002s+bI8;Wiz!tU^8ec`{J$Y;H%Fm*YKPmXj3gt=|S9x z6Nz1HPCl~6n~aPioS~q4oA+m&5f_inxZ?87t2f>kk z2~|%o@_lyeK9NkPo7z@6ZxzgR8rkiZ@NV%;=L351#eBvo^sQVJnI0^K@&W(=00000 o000000000000000001oG4;VfMh3#*A3;+NC07*qoM6N<$f>b>H^#A|> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00004.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00007.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000MjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00009.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..a58590b988714545e7960f7f400f360ffc5de41f GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00003.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..41e5dad2e132395a454c134a8f0eac68f4019f9f GIT binary patch literal 550 zcmV+>0@?kEP)Kdu?e)adT$j`{~bu9B9pz2YNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77VpokCP$mFgmQit}Dp z7P94QrZB+dBPfe3+09JuklMS7n~$YwN05!fiLCikDwCAEo4yuVI2mj}y;y6tN0002s+bI8;Wiz!tU^8ec`{J$Y;H%Fm*YKPmXj3gt=|S9x z6Nz1HPCl~6n~aPioS~q4oA+m&5f_inxZ?87t2f>kk z2~|%o@_lyeK9NkPo7z@6ZxzgR8rkiZ@NV%;=L351#eBvo^sQVJnI0^K@&W(=00000 o000000000000000001oG4;VfMh3#*A3;+NC07*qoM6N<$f>b>H^#A|> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00004.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00007.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..74c9ac0e731c4a58420b27bc0763d7739cf718ba GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=luba4!+nDh2VblwpK9*2vW zSLbf{uex!1okFDEdM35b&UZh%jM$`4WdEoEX}?{oyS>NoR3XPg`DsjFHmbfX;t%?~ zuIf$QwOMz=s;0fTd2-jGM@(B%rr$`|(05&Z^9cc`ZE~r*Bo?=np7KakKKf$G)socJ zn)kVLqfRY9>j6^pR9)6=(z-c!1g(;{Zof7wG`jb88T*u%*20PhZwBalP4~QBbnWn) zFQM%l5d zFy&R%_WTdFhu+I>=>BY4@snxE*{bu|52_eb9^cz{{aGdNzYk$APPnI+x$UpmySL^4 z$|L>@4<&lKofZ5kv+De+9zopr05F@&vH$=8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec458c274d19e72049bff3843bda758cfef2332 GIT binary patch literal 743 zcmV?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00008.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_137/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00003.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7d224d3f74314f30500e8628b34a3b8060afc2 GIT binary patch literal 464 zcmV;>0WbcEP)m&9J?0|{Bi5HPQ(y63A+4JHth20kAE007{)A9u+ZWBwdMXosZ$ z`FSR(yN2B6RqdJg=PP!s=_=9P&f38_05$3o>kO9h@}P_z%c8vLJ zPlfFozE*knFxTVUVULmWt9vPMq4(Z`cE8`Zw*-#4uo^nFShP=ClvaCfzP*GQ7iNID zyK;rxmw53eP-*AG&w<;7@KseTV80000zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00007.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00008.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAM#_T0Q9YD$80`7W|fK@eoYO?X3E=TQIvh;lx&%I1)K!sh7RIH;_~A#y{!i#p6L zu-LG3375>l%^F5a=$8wFcB;%=#JaZ3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KA@{tr- zm)s&&Bd>#|WX9k8D?}vKCjY#glmvB3*?HQ%T9ecv1QDqloR{RYBoB_|XOYDVJHhw5 zUAgdWJF(@@&O{d5brIaj zlKNcW_T21IF(k^dyo=Q-2uc_H6L#qAJPH6j6mDXOn+rosYpAZxz)XI-9p|J~!bH zHStr?#9@^towmqlQ+?KIQln80+v#fQxZE0Ju&c#Zq0Owf5ATHT1poj50000000000 e00000%=`m+j8gv{|IeNP0000?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00007.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAs;y>~KsBTPm2v*-cSbs=m)jY0Ti_IQNzEs! zjXZ79kF4G;`*|?4>5Gsl$X;asHV|`0`#U8~?u zme_T{w(I5{sV;H$#1U@zj`X{*YLIM?4cf-2E#5R<=56xGwnMCML)sX4caAruwXaTxj_^?6_gDh`_5qU z6trLj?DN{vZn{-p&xO(>U_uI1Hz{RFtI+9Qg>!Dg7tI^p`Kw<0ZKZkD6Pkk#C@L2| ztu3-J=O6d9vJbFw7Q#g%(+8nwUH||9000000000000000Aj}&`hHiLbZAJY60000< KMNUMnLSTZaYRq2% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00004.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..694eda50792ccc1e60ca5d49862d45214fd67835 GIT binary patch literal 790 zcmV+x1L^#UP)zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00005.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00007.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00003.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..41e5dad2e132395a454c134a8f0eac68f4019f9f GIT binary patch literal 550 zcmV+>0@?kEP)Kdu?e)adT$j`{~bu9B9pz2YNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77VpokCP$mFgmQit}Dp z7P94QrZB+dBPfe3+09JuklMS7n~$YwN05!fiLCikDwCAEo4yuVI2mj}y;y6tN0002s+bI8;Wiz!tU^8ec`{J$Y;H%Fm*YKPmXj3gt=|S9x z6Nz1HPCl~6n~aPioS~q4oA+m&5f_inxZ?87t2f>kk z2~|%o@_lyeK9NkPo7z@6ZxzgR8rkiZ@NV%;=L351#eBvo^sQVJnI0^K@&W(=00000 o000000000000000001oG4;VfMh3#*A3;+NC07*qoM6N<$f>b>H^#A|> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00004.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00005.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00007.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00003.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..74c9ac0e731c4a58420b27bc0763d7739cf718ba GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=luba4!+nDh2VblwpK9*2vW zSLbf{uex!1okFDEdM35b&UZh%jM$`4WdEoEX}?{oyS>NoR3XPg`DsjFHmbfX;t%?~ zuIf$QwOMz=s;0fTd2-jGM@(B%rr$`|(05&Z^9cc`ZE~r*Bo?=np7KakKKf$G)socJ zn)kVLqfRY9>j6^pR9)6=(z-c!1g(;{Zof7wG`jb88T*u%*20PhZwBalP4~QBbnWn) zFQM%l5d zFy&R%_WTdFhu+I>=>BY4@snxE*{bu|52_eb9^cz{{aGdNzYk$APPnI+x$UpmySL^4 z$|L>@4<&lKofZ5kv+De+9zopr05F@&vH$=8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00004.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec458c274d19e72049bff3843bda758cfef2332 GIT binary patch literal 743 zcmV?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00006.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf2tc5@pvQRF6_~%B*-_+k zD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPA zYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%STm4JTfEqoUYIxk$ExK_2>7^!f~y@biNAUV0#GjnBi^bPJ~yJtZD zH_IT)Ia?)XUcP2^_cF5c=@dRwMjf%$&*7F#J-i-EJ><@^I5>9wEb#|4gG}_zD4{0$ z#+U<7WFb#HhdmKq0000000000000000002sF&|Eyf-&SkBkuqJ002ovPDHLkV1j5? B(Ww9c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00008.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_137/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00003.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7d224d3f74314f30500e8628b34a3b8060afc2 GIT binary patch literal 464 zcmV;>0WbcEP)m&9J?0|{Bi5HPQ(y63A+4JHth20kAE007{)A9u+ZWBwdMXosZ$ z`FSR(yN2B6RqdJg=PP!s=_=9P&f38_05$3o>kO9h@}P_z%c8vLJ zPlfFozE*knFxTVUVULmWt9vPMq4(Z`cE8`Zw*-#4uo^nFShP=ClvaCfzP*GQ7iNID zyK;rxmw53eP-*AG&w<;7@KseTV80000zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00005.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00006.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00007.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..70c1b9a68f5fb1ee090966199cb58a891b0a5ad4 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00008.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..570ce28d53e82ac396ba25c370110058f3a638f9 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~ovpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00002.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00005.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d80bd066e15d136f5819e9f35e4a92c240708 GIT binary patch literal 494 zcmVHWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00002.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00004.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6e50574d2da66737ecf835876940a85d420812d6 GIT binary patch literal 804 zcmV+<1Ka$GP)c5JggMH&Jdjghoe!owf*b#trUQ<_+EW8I`EkV3w1%DUWMaVga zdr=Y&EmuQ=mr-ftsiQi&YAZ|TvU~;HQ%`kt(~VWm0_T38g>qo4pCu<(Koj6{!MO@j zP(eC!>g?Zt(%CEs=kdbxEKSDd=InS@owE;NLI@#*knbc= zL&I}mmCUKFoD5IaK@LPnUzVt+j;b1%b-zxNs?h4R4gb_0Rz{ku!ddGDF3Cwn$nV;* zsa6gUBU;v`3|u`)uTd@%3;C^sCsqW*M#$2^)0Kjq1-&B{^ ze>051Nw^E0ByciguoUTD=-p5!u`3S*vW|cBwM_ZV%L<{AVcEnb5JWUpPt?)=s(K%H>-C|pId1c9G^C+nep!`()znPUsa)2yvdPe!kXI;JqRM`0qA-)^HVMKj#Agz5}X0Y0HiN5uat-H*-D!eH?k?a|P!EFjq>HZRM|E iOhXAFgb+f=xAPAy&SBBkGvX8g0000HWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*>PW<2FVjInt|Gg`l&SO@?Dj^p*6~=Ggi({_s4<^kB(#D`rz zoHn7-I>}f$FgVPoSftr9`0RfDW2xtRetr^6=s)H4t!K_(p>ILI>>ka!x428SY<-Z< zl~ZS5uA8Ud-s|()KR6>Rs@^DRgV5#+Uh2I*JZ+0A89^>bfQH0gTe~DWM4fa=n`8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00002.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2760ee07d046d793261866b0138e4fd1c579a GIT binary patch literal 537 zcmV+!0_OdRP)SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00004.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..417f99b1061e5bff9011cc767bd92f32a77a736d GIT binary patch literal 846 zcmV-U1F`&xP)1=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00005.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d80bd066e15d136f5819e9f35e4a92c240708 GIT binary patch literal 494 zcmVHWT-%AaMG$$xKp(Wz*vEg3oIEE|>A zHi)`qL#_0=_*s0u!wyI3Zc1stPH$UnA6wCiyw8EGrn=O+B||xGQ&Dd~bq_h*)E3nA9ykq1s1Ah64BKm4SY31x zJKKNVC>whI>A1{Ibrh;|@ABJ&3b-D}VFIcf$PGngM%U-yk*SCg_MCIiR`eS%F{LY? z%83WZTlAWP&QFqueXyZ=^>4n1e1_&AGy12g3^k*FGUnh)>_S&M7-Z%k6vGPu00000 k0000000000004yf12rjvgE=_@*8l(j07*qoM6N<$f(c>aL;wH) literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00007.png b/tests/ragger/snapshots/nanox/erc1155_safeBatchTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00007.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1-rejected/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..950fd72aaea19c12ebe953827e63d1da749c1441 GIT binary patch literal 592 zcmV-W0zI1bzF zG$^k}l7=JXnrGEB&R@*!w$eqSy`8m!-~hA`Q_N{x+Lw*O@;DAL9(B5uQZ_TnIL$o8 zlu6ZewO1Fv0iPE2ZsRd7?aRjeRcYo)S9h+5GNT%;HD;=ppJ^+gPH%KXHWs(KD4pP( z%OXN=_o=rKVDc8!OW9?EcQQiP+7%2wmZoh%bsa`!>Q`NN(v@y7*P;j~!2!sVrCiHh zXFEGWZY*0`5j^Sq#l*ZeE?)ou0Dx~Ku7;L~L)fe{a+k7n=^m3P?D&rm2US&IMc6_2 z=|}Y`0oO_qEwNDj?N*x^0ec-)cQryQg{{}_#F%TU)@EFY#+F{@nccSBHeRzDB)}dq z&QrRoH25VUP&DXJK0Q}Fc@^28;(UvfUyHSi0!C7jInSaPY0J#DJN2_|48P8i` z@7Ww|$JWgCA7Sl%OvLdlDLa={&od8dFQeHfD>{n-P*J*NQBN@dE$$lwsJV3)0>MQm zGX_hkyLXNn8e>rGYz2ITLiv2AtCdfXU;}Jh0pcggr7BsslphC0&6u|O-T2kYfKE9c z?KZZ(nmGPi)jQ4$``-->_v1Tu3DnTdY+C{988q)mmx`%VQVke$mIVL+0000000000 e00000cnALsF(B(E^GVnM00007?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00007.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_1/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6e50574d2da66737ecf835876940a85d420812d6 GIT binary patch literal 804 zcmV+<1Ka$GP)c5JggMH&Jdjghoe!owf*b#trUQ<_+EW8I`EkV3w1%DUWMaVga zdr=Y&EmuQ=mr-ftsiQi&YAZ|TvU~;HQ%`kt(~VWm0_T38g>qo4pCu<(Koj6{!MO@j zP(eC!>g?Zt(%CEs=kdbxEKSDd=InS@owE;NLI@#*knbc= zL&I}mmCUKFoD5IaK@LPnUzVt+j;b1%b-zxNs?h4R4gb_0Rz{ku!ddGDF3Cwn$nV;* zsa6gUBU;v`3|u`)uTd@%3;C^sCsqW*M#$2^)0Kjq1-&B{^ ze>051Nw^E0ByciguoUTD=-p5!u`3S*vW|cBwM_ZV%L<{AVcEnb5JWUpPt?)=s(K%H>-C|pId1c9G^C+nep!`()znPUsa)2yvdPe!kXI;JqRM`0qA-)^HVMKj#Agz5}X0Y0HiN5uat-H*-D!eH?k?a|P!EFjq>HZRM|E iOhXAFgb+f=xAPAy&SBBkGvX8g0000|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00007.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_137/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00000.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00003.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..402128bbda124fab3f7e4b827ae8cfd25cf6c2d6 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xc>EaktG3V{f*uEA8o`!Vu zV&V7oD(^S(t1Zd&)@7Y@^U3ddJm31o0$#sn1?pn>U}2wn_Os3HuZ1!jZ>TD)PoFbQ zcgu|MqsHfVFZ&kp;?%|T$y=L~7^_yOP7|5-sVKlx?)bu2iFfBdzj>s|KyRau!KIb2 z&t>s`jK1(P(SLT&hAGpV-%b-by<_vqvkJDmu2q>9Z~dfmoAFxhgbuYe%XXcd`zY%4 zsY4mR?r4fc)Ufm_1)Et;mTddBF6q<8EpIqB6|zj+xxFpT=tuTKMN13)9Rr>zv z!tU6dg}kRG&TH-2U1MOnmOn2Z==6sF9^0f>#cdAT%gX$ZtrjBb8+eWoZkPnt+<@X1)w?Pl?hg#F(&q&SxprI#mfRn9Zl z-4W2dw=W{?JZtak8XMdGjdK?soDq9=hYw4he&Qz2nd#pZC)X6c(Q>GJeNtX_-6Nmv zw%>MNTVOhG<-t?(M(002)iv0-lKa`rrHig>5uv{~G^vlK-x4No7aA zMNU3;cjeZP9ve3-*jK|_r+ByLYLF)*mxZVH^NCDXA|jb3Qa@_4INwp3DV5Xu1r(_m aAm=fEXWVVYZb!~ikesKhpUXO@geCxOH}iD> literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00004.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..417f99b1061e5bff9011cc767bd92f32a77a736d GIT binary patch literal 846 zcmV-U1F`&xP)1=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00006.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..55ce94fdd721fdfb8ade0be25c4531a0cbd21c0e GIT binary patch literal 322 zcmV-I0lof-P)XV>2Q~cNdsWc<+x;2b^h#rqcuf0EfFIKD)IRFXwsQ?%-ztR)Z{Vy@r}H7RvSD=l$9IFg<7R zrv`CY9KVS0E>vQh8gT`z8m)C~rN#>AGj!WYI>MK^Mgew}yG=?fKySf)XR=5^Z0>RJ zuOfec>(ml6l3t7hEqtN{s6f$PecDH9s%XP$=Q|ukPfj8r7HW#A(XCx7L-f@ z22*G`$CK15KD=$MKU37(B+LF`R#Gkd2UCMgx=<$H;Y`vC0000000000006tW1Bgw# U`|7NXr~m)}07*qoM6N<$f;-oXE&u=k literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00007.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00008.png b/tests/ragger/snapshots/nanox/erc1155_safeTransferFrom_5/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00000.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KA;~0x@C2@)bn6v=r2M_P*Acvh9Rm@cMN%#HIosw0;XYFckrlJsz!4+gXs?a@1n5u7ke(S+FR3AtYn~^KPakMJ4 zOxbURy`?zl9gR|`f?mg}lB(`d|6kg8o_SDv8O@kP1d9o%QVB~?q?mvf>*fGTmR2DU zbb`zrgi?lg=Nqx<@3nou0r;m(S1X?&!8+Ks0>qW1t4fwF`QxCd`Pg5M24Yt$9XjQ> zw`J@R;|{Z0sql{T!nO&x7?D=qQ6*4AH?wU8RL`JyMd~W1MoHCS%vlxy0000000000 g000000N@>b0|u1~?w0uAhX4Qo07*qoM6N<$f;A)(=l}o! literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00004.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5906d19670483bbdca21b03b527ea852b494fe6e GIT binary patch literal 823 zcmV-71IYY|P)7?pftUHm7OLi@+n=P@CxWf||_bkMB zf?1><&FKtuu}nHDVQ(@6&Cc5bGL7f^&!9(dr}nl?W-DPlK%%LDCgH*nWro+g z>YBU9GuyEMqNSdWM(CRN1C?IV*nuC$dB(@YQm0cppq?c4rRXf;v(+k|@ym)ea>pFM z-Xb&88Q47?3(#&cvxU3%u*QwAa@{qZRZissw88C4Lxqw1!b<@Wl}V3+wbL>CsiISB zI!%^s@)RZrZjc%M$1p<8=syhC;7xc6y-5;euEADxcssrunpXBY<%$JNvtpD;uhjIF zjvQ~hB5hH`?-X8x(7OXRCPne79R<4HIKh#pl7UKaky;Z#-B6?~#9gM~-M!Q!{vKRg z$>Y}YR)lA(-Jxc8Gc5~ox=Tu5#vI05(Z6QC8JB)*ObFb=YU_2~_VCcUfml3j&{UVr z8Im2~H3(O+FzGU%w8+Q<$$|OyMl4x?t^Ll+N}0wSX%&3rp5)kkH%3h7IcZ)LsKlv` ze!zOx+UI|o#(1Vo$*y6f)(9bl5JE`H#$U?gwCNh&R@7Rc*ioGF8?l*^Cr!5xjC$bj_)&P4hbVQ&3k2)%f!qu>v~LVt6_0t_?U?KH(`V2sbrN&pxfDl3mA%u`0#ecoe%Sp5F(P{ty002ovPDHLkV1ke` Bow5J` literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00000.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 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 O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00000.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KA(MsD%-us$yfLcIQX4?P&0001P=jXbKec#ncDJ7_K zNVX%7P^Tg15E;3`?{yQUlw&sX^Ve}CL7P%}{N@SL%=9H_H~9 z9aUf3hcH#Lxq1=n|=^KnFnx=xQ%DG#~uk}*q+`s&G?3$(HtN?Z8IsKppdl$~g znlqDhbUwW&`gVo}eX?2+!A8O+63tZ1D+Sp_Cb)AX_JZP)kvg;7U#a_Qe9!;xR>Yf| zJe$?jYtbvf3|ec**>9D+e>#jP_TItlZU!ISiuL~NltzNa%~w0dJ;jNHdU+1Mkgmt( zTuA^XFq}5+M*=X%${4^Xi>nX}apGiRkP7Yv0000000000000000000000000NaG)a W!p01=e--~;Y}@a$JYg}$`+eHQi3!-}HFYP+!qfq43;IiT@VTj84>87O zEDFM*ZB$m0ZB$2B&&rauY~KNC>8XzH8d&8l=h`2uq3qc1cgdSOpbO`A@$(df zmebcZU2s{=Vv;tHV)X+S}@*%9(f~v@#$G^}EVRV!EU#CGEf~)~pI(yhX z0p&JqN|H-r(V2i&;vd5NVCxB}YMBW*vgTZ;Wh0wYl}pcq@{vkOt;}%8Kn-0qCTVMo zCJEEY^!_mvSJV54;T*gPqtKf)oXk1cigd3_4aM4IE(Ez9D6tM`AfdFn*OiH@3W{vS zsWez-lW8jwEM*DMCI=KvPbHNu=HI?xT(Z!TIh##;`tvhBOHql%7oTNex>zsG_c!ff zWCE&|)YCF>#ITCzIrqz$uvUZWYC6n~dS&FX1`nFRAqYeaX^@#W>uuT^OQx{{wkAbg z@677K@O^l=9#zCwZJK7iO*d&w!1Dc@nd$nx2I(9ZjwJKm4IKNyu&QHaNMYWG`)8M)P+CkxI8OM zWSk{j{Y&}hd9a)En?s6}YWaoSy8}E}+GLkz`R;DGdIBstK8(hq;crg~A%qY@2>Dff Y0rii}h9PsPnE(I)07*qoM6N<$f+vubhX4Qo literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00005.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanox/erc1155_setApprovalForAll_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_1/00000.png b/tests/ragger/snapshots/nanox/erc721_approve_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_1/00003.png b/tests/ragger/snapshots/nanox/erc721_approve_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..02c6fc77c678018d9c7aa18109073ea834a0aece GIT binary patch literal 561 zcmV-10?z%3P)j zWIb{x+v>`gn=Sbro|$vrZI#a-#Afpr_qRkprSzDt(X**bDLLo5hUAFcm{M3qt(H^@ z4dJL4dxm7Hq-|r#8?S&S%DCwC{6tOP{PajB5eWIKEo}6nt``GtN@i9-b4Q2vh2I&c zF;8G}ZEMduGzNb~S#i91>1Dnfo;S(EFss4GAtI))`Sr26oa{pND&3`P zTLpIUi00000NkvXXu0mjfYWN0Z literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_1/00004.png b/tests/ragger/snapshots/nanox/erc721_approve_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_1/00005.png b/tests/ragger/snapshots/nanox/erc721_approve_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_1/00006.png b/tests/ragger/snapshots/nanox/erc721_approve_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_137/00000.png b/tests/ragger/snapshots/nanox/erc721_approve_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_137/00003.png b/tests/ragger/snapshots/nanox/erc721_approve_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef9c7d272ed0950728f083763881e6d9648ea48 GIT binary patch literal 448 zcmV;x0YCnUP)m@uj!SYVO}de2wJ6{*BSb{ql#008iIU(+K~O6p3C(Kw_; z)>qys|96$ln=|>I9vNdSxysKQ$vNkF|H$lz5Pp__qh(X4lwyqa8Io7z#+1Qw*6K+0 zg`MEhD#{AUrINYLE#CYIXi~|I4v!CNc&^hD8N@`$zxIPWz38%vi87^?C!o2bhxUcN z7-M7!>%^1jniOZA!6O^u=)*6FHsEVsuRoNBW!beR3_!zW>S q0RR9100000000000001hm-z*GoMq3J0lL8e0000?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_137/00006.png b/tests/ragger/snapshots/nanox/erc721_approve_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00000.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`8=4k~qilJA@sU%&_gGX5K;Gl^nEN*LL6K0$6uGOox1r;cAH6SP{;id{AlLpyym&z& zgskCc6j8i2qA=!4CC9-#msUDlGs*Am5YWY;?X+6>5ud-@*t1aog2#5;R3`N?fsXc zvYkh^pf|aM&nv*2vVVBH2XsARn!^Yogb+dqA!YsnPsapaGDMc200000NkvXXu0mjf D?ZgVM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00003.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..994363ff0dde82f765349429e090fd47359e956e GIT binary patch literal 485 zcmVn0OR{K~NsHbI(`n2nPg~W9%FN006MutGi_gK^^hl8=D-F z>5-M6=|m#rr{&;6Evk;9W0=y&DbGIT=g}pHMnb5QCPZg8>)N;b|86GRG9@&ks?yzd4{I|RZx5jl#(CkOqbW>r= z9IP%u&b(7JyA;HY*!1PWZC*)syUzQ|^sQX>J>69L3RtiN)a@>P-FSA;sPBYpZo-xH z&Yt}2o$%Y7j(R~ln1CoV@MXCO!kTZqrk!(uomB{xBr^w7kzN1*000000000000000 b0AQLwNS1*}3Rj@000000NkvXXu0mjfan|H$ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00004.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..694eda50792ccc1e60ca5d49862d45214fd67835 GIT binary patch literal 790 zcmV+x1L^#UP)zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00005.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00006.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_approve_5/00007.png b/tests/ragger/snapshots/nanox/erc721_approve_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00000.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00003.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d7a7b57272ba2cd4d82030ecfb02fc77f2cbc3 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xf>EaktG3V_}@4mwdJPy{2 z@2PyZ7b>6Ws`A9}!41AGTdML!1OLlV)_}4LlRu8wpUgkds+BVqDNcr{vNl>zRG^40#mNN;g`#*lH$F3 zYN2iYuIt|(J@v~fZ@9mpt1M;D)m=VEgf}1WtNk4NrXeq1zf*4g@~6cfnbn3mrz>ks z+RQhlNJ-r-`In@smN&aR=^6V>lUJWlx2<`-=pN%Mffwf#-X8bXUckqGc&<%rl>WT@ z-cuDCpYl9HFJ9OxFSKf2*puIHuGK2dJZG?VZP7ig881sV-PV10_tDIA>|Y*q|Lh5V m5xrBx$TouODaf}NAmW(3WF=ecOo8o7Kyse0elF{r5}E+Y!21mV literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00004.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1-rejected/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000j&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00000.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00003.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d7a7b57272ba2cd4d82030ecfb02fc77f2cbc3 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xf>EaktG3V_}@4mwdJPy{2 z@2PyZ7b>6Ws`A9}!41AGTdML!1OLlV)_}4LlRu8wpUgkds+BVqDNcr{vNl>zRG^40#mNN;g`#*lH$F3 zYN2iYuIt|(J@v~fZ@9mpt1M;D)m=VEgf}1WtNk4NrXeq1zf*4g@~6cfnbn3mrz>ks z+RQhlNJ-r-`In@smN&aR=^6V>lUJWlx2<`-=pN%Mffwf#-X8bXUckqGc&<%rl>WT@ z-cuDCpYl9HFJ9OxFSKf2*puIHuGK2dJZG?VZP7ig881sV-PV10_tDIA>|Y*q|Lh5V m5xrBx$TouODaf}NAmW(3WF=ecOo8o7Kyse0elF{r5}E+Y!21mV literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00004.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00006.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00000.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..74c9ac0e731c4a58420b27bc0763d7739cf718ba GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=luba4!+nDh2VblwpK9*2vW zSLbf{uex!1okFDEdM35b&UZh%jM$`4WdEoEX}?{oyS>NoR3XPg`DsjFHmbfX;t%?~ zuIf$QwOMz=s;0fTd2-jGM@(B%rr$`|(05&Z^9cc`ZE~r*Bo?=np7KakKKf$G)socJ zn)kVLqfRY9>j6^pR9)6=(z-c!1g(;{Zof7wG`jb88T*u%*20PhZwBalP4~QBbnWn) zFQM%l5d zFy&R%_WTdFhu+I>=>BY4@snxE*{bu|52_eb9^cz{{aGdNzYk$APPnI+x$UpmySL^4 z$|L>@4<&lKofZ5kv+De+9zopr05F@&vH$=8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec458c274d19e72049bff3843bda758cfef2332 GIT binary patch literal 743 zcmV?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00006.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00000.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00003.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7d224d3f74314f30500e8628b34a3b8060afc2 GIT binary patch literal 464 zcmV;>0WbcEP)m&9J?0|{Bi5HPQ(y63A+4JHth20kAE007{)A9u+ZWBwdMXosZ$ z`FSR(yN2B6RqdJg=PP!s=_=9P&f38_05$3o>kO9h@}P_z%c8vLJ zPlfFozE*knFxTVUVULmWt9vPMq4(Z`cE8`Zw*-#4uo^nFShP=ClvaCfzP*GQ7iNID zyK;rxmw53eP-*AG&w<;7@KseTV80000zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00006.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00007.png b/tests/ragger/snapshots/nanox/erc721_safeTransferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00000.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAgua} zqSnZ>7Pe&dZE5?#lS_XRl7fPqeZmZtg}OG#F3)U6R0NzJJ$GW0eeX!B*R>KZt&+Rd zdL`_3Zr%~KCC$*-)^In+L(bM$WP6jtltxgp*~9p)Bj zZ0I=~m+ZmK8b+(pE*CoWRGGPmb#Enxz~~Ui>lwy>{jsa0RXe30_zM`a%%z^4rdo3- z^H25JZtO-<83BHU%G#FlvR8K^9-BRSZ0GAlKy`1sjHXvvDwr;osrtdrw_iy}Eoe08 z{EIcD`T5%N1Y49M3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00000.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAmlQWxUHpnJaB)QJq3M{^ti006-4e&!z$V=S(O5R|v% z$ok47QW`P`&6OFy^N$E2Vr$OUlm6?$Mf}jxmN1>ITaza+b*8biEf@Jn$s= zSr^QJCOJ{7x<*&Wq^RISHWfZtoS$>HQom6+`LG1P$I!92V<{}p ziTGxb;r_m=_vQ@n-}QcHz*U@&!R7;yUaol_1J?tPU!P6>m32M_|9DGObLecoee<~q zf5^m7qM5^#CUslnv#CC_n$&2N!*;q_Ixe@y80>1XRcJHo?ZZ2vdjS9d0000000000 e0000005g9Vgi`-i8_dE00000?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00000.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*}6ba4!+nDh2#AYZcrPebDN zH)?zTPpq15J3)Yn>qJY`_j>;Byx@gL^G{hCIyUp$z z?+!PyrzXzk-?!x*usr+mUEgLFnZVHHJ3mfo@VY22D9*b4i6&$J6CFms_R7}HEI?Bj z_MdvTrSSSo=T^hC&kUiW6Zdz0UANo5PcNM5QOb@xewQQdEWFY$?&jvXEu4O<-D&=1 zhN-G6K4t!lnzyI&->=`AcjEq+Hfiapr$grPndlI00000fa@^aP|xGDY;#dWdN@T_N18(Nxz^JU9Y#?B8aGec zgXhIvwz+OYp42ncz6jk_+*^tJJ5Q}IVgbFBOYzM8lSJ`?q}41V2lC=s#8VBNktX#$ zMOD(408JDVb74}eS=;arlJ&2BVNi*5AV=#N|BMwd@Pf_hKMMMlL;61(it%pR63{&> zZwIR+Y*Nd3H#`CCWM;wf)Naq(_um8Rj2cfX&OVKtz2w+e;Ng;q5fo$gO#8P zt;7%+Ik*%lZ_N$$KU&3!M0QO3G2KVnK#R=T@Q>NqxDuhenjBNg*`KAvD*aKHmo~6O9-@lnuf5>wuYO!cK(j~xtH;^z-xz6}UWR+jFvlrKYSzA* zPgEUQ>f$=GxmsTLgUG5cT&5tW&OT5KH4ELAL0%Hm7+xcw^ysl2o4j@=QZ3gixGt4! zt=^Kb+rD{6s!5D(xr)~=2u2@x65dd6KMDYNy!lhJefCAq-UWTZ>Kb$uacb^Qnh!O- zQ%@Ds{MC}-bq-&vo;}n<(`49fr2N{uD$>4FkoOa8eL%aU4Wg%@!~9CmdnzagKJ`0; z;3;Uq2-xSfWqs(@d_Ct%kAQ$K&^)A+DZNCau?%At;hXC9Zv0iR{kGD*>wxN@0gA?r zht)+EV*YVYE874oXCd5FGHu|B>IDD*0000000000000000NlI*=5KCz?+*#;00000 LNkvXXu0mjf)40>i literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00004.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..694eda50792ccc1e60ca5d49862d45214fd67835 GIT binary patch literal 790 zcmV+x1L^#UP)zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00005.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanox/erc721_setApprovalForAll_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00000.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00003.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d7a7b57272ba2cd4d82030ecfb02fc77f2cbc3 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@Xf>EaktG3V_}@4mwdJPy{2 z@2PyZ7b>6Ws`A9}!41AGTdML!1OLlV)_}4LlRu8wpUgkds+BVqDNcr{vNl>zRG^40#mNN;g`#*lH$F3 zYN2iYuIt|(J@v~fZ@9mpt1M;D)m=VEgf}1WtNk4NrXeq1zf*4g@~6cfnbn3mrz>ks z+RQhlNJ-r-`In@smN&aR=^6V>lUJWlx2<`-=pN%Mffwf#-X8bXUckqGc&<%rl>WT@ z-cuDCpYl9HFJ9OxFSKf2*puIHuGK2dJZG?VZP7ig881sV-PV10_tDIA>|Y*q|Lh5V m5xrBx$TouODaf}NAmW(3WF=ecOo8o7Kyse0elF{r5}E+Y!21mV literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00004.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..185581ea3bac2e919b5f2b3a9feae1ccebf40bc2 GIT binary patch literal 810 zcmV+_1J(SAP)3`I#QH}U&KsR?wz}r>C(#>PbD#iK($5m;oIZ}oft!pu zz?6vSI!Y6D_82E{mP?z69B!`~c6E4;3tV2{y#j5(5#?_t)-DSUhbtmy#4>Ur|h7#A#HsA=qi2i~}Wt&R7*C z*N81IEDJ%qZ9E%l&V=t}{nDM`-6TJcfMBT;V4lA$YG^h`&vYO@exDH4V$Bjz=U%25 z(>za`I&()w2qAsJ2B^iIHNe>x%LY~G`9H2)7oe!AEl7i>>ZsZXTSbGZby?EC-;Lq@g2taa~ o6Q8T%wd{~6LI@#*5JLVG-^#F%Mb#;H4*&oF07*qoM6N<$f`40lbpQYW literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00005.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00006.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_1/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00000.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00003.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..74c9ac0e731c4a58420b27bc0763d7739cf718ba GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=luba4!+nDh2VblwpK9*2vW zSLbf{uex!1okFDEdM35b&UZh%jM$`4WdEoEX}?{oyS>NoR3XPg`DsjFHmbfX;t%?~ zuIf$QwOMz=s;0fTd2-jGM@(B%rr$`|(05&Z^9cc`ZE~r*Bo?=np7KakKKf$G)socJ zn)kVLqfRY9>j6^pR9)6=(z-c!1g(;{Zof7wG`jb88T*u%*20PhZwBalP4~QBbnWn) zFQM%l5d zFy&R%_WTdFhu+I>=>BY4@snxE*{bu|52_eb9^cz{{aGdNzYk$APPnI+x$UpmySL^4 z$|L>@4<&lKofZ5kv+De+9zopr05F@&vH$=8 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00004.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec458c274d19e72049bff3843bda758cfef2332 GIT binary patch literal 743 zcmV?P)}{ zi<~fMyc-<6jbb68Pu9@My|QI2(|5qV^sKGD;eAqc!H zON#@t(!p0eQ7Okb1==b(5k{nNq(u&=O}5}FuIL9)jZEu5M#j{%{=?7*D`6B`Nx{hU!BnJq zTYejA6mXhfaLePM{7O4_YWG&@sVN4kr%h^nDvA{R8tSGpt;dDiwNkujimMHdf`pTD zEeOnL8ki@!pHAI;^lMa`f&=2BlHKjTC}yWfk+MN}w)otVi+=YhT2RZ1ako|M0IdbF zOAl4g6fD6_K;r z#NDdSdB*utwi`O&XWxyEp@a}Z2qFK1iT{+ZqIlMnEm|gAD~F`nV^s?x$G%w07JpNf zixFu-|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00006.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_137/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebda50679f0ae00483252143ca02b6f539d34e GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x0ba4!+nDh2#^rmJ7o`#28 zipviDn|>tj*8`KuMZ#%*o?HHZUlOA2E080?2-LN$x+2!%c}>oeDJ9=;+`HL0H$126 zS6p4(xya%&_4<3V6Xq1#^5m`w_SzM_<@9rhb=!~je0=Qm^}zSNqDuD|r387Gx~cCy znQoM#B>YwL?6k9Ugbg|_o|$ubkMXg(H~XYtsWk*T=Z9wA)qvIOKJfJYnP{I8-OJ6nSNXkSo~Bcj zsBf=;q=Oh^tK@c_ zAJ*gVwfY8T`bBY9D?30$VvNP$4e!G_#WbHHKgl!V#T1E@q@e zM5Cz}=Jl9`d7}?J&50eCpn6V(W9+y3Lw{4$kXL0E7H9qYU|9zgi%C6lLnBgGThZgz z+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct8&jdEC&kw+T>BCR008)(re#CxFG;h+ z{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}ipLz@L34_k|zmr#}PmLV3?q{&%wjGmk zYR7>#+sqDFn^bv7y==~XG^ZJ$H*Nj_u#eN=rmWG#N0^)o(wl3&Gj~=;-(ep6y#w;U zSq6Fb*)D75?PoT3FC#mjPU2HCW{a(QPPb&{<#k);C7%q7lWX^1CH{bBkcqw6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00000.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..487ea10fcfeb2f3e6b79239459672251d49addd7 GIT binary patch literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?Yj*NZe%~CWfG*OPo;i-j_O-xVE4x(*ytjw|n)zfm3qM^Fc~!IW3PH z=3&G7^uB>>R8cN7G`M%~8~Dv(y@wMl0ef=JL30x+0gXjJr4(YpS&Ni_M+%mJpk>|= zECB!jJVXC(X!Xzb!Z-auExGj4Gr3kE;j(mP_ElSOM$PyQq6$PO@+x6nNKV|U z#l4(~Y5SpCCZ^*LJP2>B+6ihm$fAFnjZlmJ&E%jbt58n|L6(ER5?%lR0000000000 a_?s`=hm}oltDK<#0000SE+*m~!ucl0Z>Z{TnNhe7zY8kI4 z6(Bj7+Hfqr+p_lU_kcXD@+rkQr=r%f$?3mW0x{vXIyGWl6d(OtenMk~=$T5w1`dNzi&vKsg@Y{Ibl1u1MfR(Dh&2|qcdc;(R0RR91 b0KheWZY9!(95A2n00000NkvXXu0mjfGaB@+ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00003.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7d224d3f74314f30500e8628b34a3b8060afc2 GIT binary patch literal 464 zcmV;>0WbcEP)m&9J?0|{Bi5HPQ(y63A+4JHth20kAE007{)A9u+ZWBwdMXosZ$ z`FSR(yN2B6RqdJg=PP!s=_=9P&f38_05$3o>kO9h@}P_z%c8vLJ zPlfFozE*knFxTVUVULmWt9vPMq4(Z`cE8`Zw*-#4uo^nFShP=ClvaCfzP*GQ7iNID zyK;rxmw53eP-*AG&w<;7@KseTV80000zTX-1YO+mh71)q!bGUS|x zu_zgb*0Uke)2LQbWV()S>e`ZPSv~`fq1SbE=*1dmkz@ayhT5>zYsr%{AOtyGcwQB0 zuddRB67AN6zJ!*rJjSQaV#wks*I`u+|t<`P9 z9TX4D5yqA2tv11GBwmSWu-yBq2q6elmzkO_mX*wB&$cfj5jc~WK- zUfPe(bYiu*kP!n0oJ+DYuLkrCp-#dxamkJsFoIJ23^l`50~XKA*<{>_Y**Jf5D=O| zd}g*{!1AFDUd73AzYZ2+VDaz`xUs^&ZkIjhw-7=IA;cyu{H6RkLVLb!t|Wo2 zA;_DGA40jzrf`^&+;d~T#nr?pyeqHGp042iI)Km4ZhIN4X1fmXLJgTf#+RS?H2rPt z)dAj}WX4%cT-wCxHG6e{g%2Y$UyUAQuWcy*)vPYGon$W$jPGR%A%qY@2=RaT28!So U{J=*fYybcN07*qoM6N<$f~W^}00000 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00005.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b0804b03ea2cda8e74479c6a6f93a84fb738e1cb GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qs+Hg978JRyuA_4*JL2T8esZv z$?y0}Z;tW{HMg`cGGd|S5*9We|H3B}jnaPH~o$h#0#9rx|H@vhsy-b>bQ zsE=m-{)V$AO(5R>MY&v0M~BAMgSypBkHxP4P888i@Y>$8IsK!zDEEw;U!t>@noW2g zs`DVEORQi+s$Ft=yyI$Ky8=drguRdd&b%>MuZmUWb~U4Gz3ZHIrb(I#Gnppwa^Ltp zGwhDjo=f)+q@1{P|BT0#OZR8+8Qp9(vTQf*6bJeO3jRG~EV&o4XVbMlkY5=*UHx3v IIVCg!05n2t#Q*>R literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00006.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..93112b3ab44e4f2fda4db252509cc196086ddfe4 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#BHtkep0-4j zdo91^SC)S~p49BHJ!?zqFT4F}f!k|X&9XH?T6cI~>vT=AUa|Gn>9-c2n3T?2l%BQS zJHI32Y~4xS-%MQ{J(o9}-F0o1{_c;TY$hImeCf=`w=R#5oR8(wUdQ0;viM5LE9Xi* zx5AL5KPO65B8nKxj6S`wygYT|{7u*L_w1ovS;^lz1}|X7OvSf z+x3+G0T1WQ@`Ys={_`GvYk(e{b*WT#)t^JoP z;)!4C*^OBcSXHTQ3DBky85}Sb4q9e0CCc*{Qv*} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00007.png b/tests/ragger/snapshots/nanox/erc721_transferFrom_5/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00000.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a052cf5b74706d730be43c5feead7a557acdb44e GIT binary patch literal 10847 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

jSm)y+6O~-AW2{%#+ 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00003.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3add68c8a13365c084fbdc6be14be7c79ec5d7b8 GIT binary patch literal 11831 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

G-Tu<;Xo%T$QHxw(z`Nkcv+a1+ z?6?MRsDr4fsVQ)tx@6xLoo%|N_6zBXqQ~APyWO+ORk|BJyELc5?!ATlq+iz}%XeS) zZ|YkVov|ISFMXAxocN zS0*xUcREn=@8PcKZwwZG>N~rGS964;4mvAL;ol^WFSMbwk1wA>B?iATqOCm)@34cA zYR7{*Jg}>6a;G)f#~7eY>f1LGwKdsVtY!EP-FAy>#-6UgMVE09Es$Yo)Mw8Pw7-B_ zxi^q14CGV-Bx=JtJO&%3$1do-hhlN=s=lthVKYC9v$LSWxp&@ByM|ZRy-nkYYbth^ z;?O_V*8MWoIt<+6ga;ezFlFU6=OKx{s)xd)6*H)=ZDoX~W6c}UV6b06ZSnCeY(>t; z{l@u?>VnkSTh70Das!x6J(fSi<88ghqdLgY@2iQm9mPhhQ*kCVMr%aNPu234VAT@W zwZ`2|kQ$LuRwmm=XPym$B|H}9g z(@FAeJWSKTB7lOfThHAM^~9UhKTPlSlfx_t>o)pqIO$L?efMigk7ltuwiD->=$G;1 z)~sGw^9?rO0G%t~I0zMUKs;3k^)3)LR}>xm1Gj{SePD7#sHARtQK7tg;<3%irA8Sd z77p3+K$a60f(q7J9ceU#8v@yr@sH6>XhR?MYCS1$cv3fm7Hp z5D{}A7Bw!h?=cmfU*L2}BYxub>Xp2?dc*cOLDGa#p0!uhPPxJhsy>RofJpe`m^0M{ zeJ_6Oh{%l-l(#u%ktLC7NIHIsl|p?R_Oc2e*Y_(+YQF`Wo#s^Z;%}A4$>|qr!bqjT z#`Ougv(MPqn}|=WM>j3z+WNNe@UToF!v*~Qt*3Zt^0s!mx$%KS{JxUpuk58_t zX_;Oo60cDL_}N3^2SV>z9dXGtEF)@G(IO3XR!|pSf`>0ku?r4zC_J~(f6%LfHBwv2 zGMjc+<^kQ8oDh_Z=5E;6Z0I|uGI}WHh)&(4b?ryI-c$D`{k0_nj_A{WD2t~@{?|N4 zFBbHWD@H9sO^(89UGUcA3Qh<&kKT4;pNNjg4`WpH+gCbL?N62HF}hE1PwbA+Fq38t zzh{x|CmFl>>Vl78kWBmO<(9p6>CvD@qHvw^;QV{}a11$GoaQQ8Ur}CeQdM)_sJ`^q zhoy#%@H1Y;SmCSk={04zvqGSbz#rD7Y)1YW{L!AW z!q|(C(b!w9l{p5(H1@u7G$woUicLHvZ*q3`My~G$==L^=wWlsP?f;>&9sr>g@6QN7 zJL!5*Ddk(diEZ`#11gr-S6&#G(l69=yHR=YXWQX!G+9JD+`Qmi$va9NqNiQo�K_ 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®<-yVCtTpXYn?IBh$oqg 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 Def^t} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00004.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 Js_wWx`)|3ga2@~v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00002.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ebba918e05de05139fedfaa763c6f268ec1dbe77 GIT binary patch literal 18579 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 Pq2g%gdamZz%Xj_{ATU(} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00004.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34b4c38254fd9c44df481a1abc9184d98f7bb471 GIT binary patch literal 11833 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 E4c+>kHUIzs literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 Js_wWx`)|3ga2@~v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00002.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..013c76cfba055f0f6da627407d8eeba28b1e71b1 GIT binary patch literal 18449 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00003.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..637827a1104c492bafa18f3c3100591f2fa053f0 GIT binary patch literal 7918 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00004.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..34b4c38254fd9c44df481a1abc9184d98f7bb471 GIT binary patch literal 11833 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 E4c+>kHUIzs literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 +38R&HWIKubK=R!m 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 GkN*c$9u?XE literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00002.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3fbaffe1f5285dbcde35ab0bafda6bdb41f727 GIT binary patch literal 14736 zcmdVBc{r4P*gs4vmC{|2NVFibm3P$0xMs`8$Nz$lZ_n!kdw?@~)@@aMe7g4L*RI})c(p=f< zsFGuu?Qw{2YHBxK>s#FCS3idwaH)Z|{@NJ%1ejZ#nVYOOQe$kuogz{_q27 z*2-W%D)F&Fs~j^(6a0NprtbfJFg^Xx!O3yo z@4pav|9nJf*D?B8hYr?RKeLahPLHI0s((0v3iW`^{aVW(JL04`RvQ!Kz#q|~=?A5x zZnbu7ypw)3>Ij<=IJu#$4l?PvfL-LXamC3hIJI7BG*;U^ z>ly!Hm~QP-YXB8j%@|%B(Z5Q?K_C^o=vK9{0W~TvtFw~P>Vq0Y{9Pp9t5(pY+-qxB z2B&Vvu+)<%8ej+neMQ^nKA(x5u+kuIW#b{*A@4?d2{$vlF+KKOkbk!A7($XXC!J;M zgFBiG=fz|^puCPu0EQ@uZG z?tzYoX`Sh@UUQT?EL-LoW@R7~Jp7966|%?7V<6=IxUP-J3U_m6RX#Fvz9oQc(J=A6 zO(%s7!cTNqRLrb;%etY;Xb$D`?w$J7O7mtqE1ZzOh3>d_8!#IVUM!!ENSbN(LDee} zh@5mKiwgNf870Z4Lh}23~Ns!#w>)eW(B<0`zI`oX5KWxW|Wg77EWwdS{26QtqDC z%n30pz-}va2wGGOFP7BUk07E!QdN~h=HGS2f9&86DV5$q&jY5=KHOWs942F4?88B1 z$mOM6^yyym%|YMPOKoMG<(O4XY53g761+-M6;j;%bdj-k5Lsoj@kE`JeuPzeiTt64 zPjmlV@XVsKh^dI_5LR6;Xqe8%f-g1^;=W7B2Q+;g?- zo+y?3Ncgyh84aCNaT{>AsQ8l;_9F_gP)EOj<@Kmf zF&|3qG1NaaN2P$|6ODuI0yCFFi#DtQvjSgIfQZE3y#gvAqqY0}&9r$55_ujl-m4E8 z6P4-`IKTm!iZI7TYI<0x(--v&zRR?yd=6O&9X=th(iUomfR9 z{s8=1(CJLx9n}mQhb7iPVj;gQI)k6JXr7v5o_E`|>yNbdT${13zNDb+ zfc;?9m$!AVDl7ZiYnf*u96ZTFd{hs(6PMdIe{VKYC49vI`%cCDyqQ>5jM85_HJFCc zT`Z~0k^O`2wEHS@f%EGT4(j@59ecfP&Soo#MuLwyZ0c0WaVWbH2j@_B-T z>eco2z|B>{T@@qhDJ1@Vm~0pEC>Yk@z)b4CwQh(^ z(3FXOnldRfQ?`jk3;BlT>6_ck7R9oYJT|+S?&H~0?_aE(U-uN;+c8-rpYT`#Jj~!M zwM?)AGk!&Yq?iSnO1*Zfjf~(H=&W8!-k<itux8xH|3qV_gd3=@`85(Xl>&_%JMK zBWCejO2Uun2lBnPsum8~Lq@N6cQ_nQ1gH=Bw#yhBoMqbzfn=9H1cQekMn~s%oahx= zaXLa)5Q}L6&cwu6ggCwnQi^^J9$v_9wq1H?h=)_bLq9Oi-D)m!ZFE+DDh6dANN`mq z8r>xtg;J*du%p{CV;3PJrnGU+)vt8tfwgvv^pfz$@eImrhvTGF>QnS~sNNB52>wzu z(fLflXO*@2`S~z{ZuYW{QjW+3r%`}4KTq0-^$J|2C46e|pr^?1 z2~@N&>5%jU`(lli$)F#7<7di;p1U-K2S1MqnrXw<%ywvdQ%N(Sdcd$6+9P?r%U({+0omq+_r#q!U&n$aR``OF z8rgTZh!&435Judg2jJIK$-(7zHR!Ofxr$n-k~!GomqWTrY!JC#iOe2e)R@Wf_fr(i zHiVwJm^v3%90CRi~L1}{R6mZSq0(! zTc^bVBalf4l${tRhSbXkk*Cb%AT{X7ueqbz1xb%uS9KPBnddg-wE zpyr1|{E~|WkOW(+dWV zWnfd+=rmFBZPO)}iLwJidDUT?zo|G(ID3+YraJ?j=M?2ge0$Pf%;K# zquXiX-@J9#DJ6ZV9Je|mXMS+zLwV_9^T>Vlao^5?sZ%SVF3ka!VU{(sql)aqYm%ai zx8I<@B8f|L_i}dQ)65-t-vt6U@UL?>D;+n~^7aS`IrO69JYr0kVNHapUf#%EOcWg9 z{&Ie0A;=AFOuX1O+9vJLY$)rlk(}j1)OXjY&Bjo>XhVMYIG>i=*Q6c4-hR^pWfMNu z_f`5vdQwW1qkqQD$6kLvRH%FBHoK#QEy+3sor~z|omE4QnlBjmok=tFD%;SP8w>vq z7#T}#(@w>bW(sF2qWW@;T!^G?Z&zg)ewOgQ{>M|=R?E5(FZz&X`J%xcU{Q%X7Q=J_ z3&nojDDd9N(``)fgf$2`4BCOaWaBt&y4LHRr!#G8*88gpr$Z*2quyrO&e5DR)?enr zXeRWF|Bn5B?!=(}oyiiby9LJBP6^({S_Exye9Z3ye7!1)Q1urI@xDJOlR!8vm!F%{YZ~xAu}I$hxPkF#-?xem z^^{TeVN4_g_bp%pc8gd)Fbx`aWf2i8Y|Aw0xlv8H$-R2)xhP$z}6Jvvvk)-h{n`x|c&jr?HQM`#|E zy9OKu(*|jnM{Z*PgPC3Cvv#D@vu6Db4&JXn9Yyd=xOqt<#cjMOJ~j5I>ROYaGpZ~& z4?mwg&Rb{6Cn8CIqejW+cIdPOEs4eI1j0hX_13&T#dap-%*wt6kDbp(JHh^A&o=`# z{P-Gu8WS|5XxXfj!);4h5Il;v397gi{WX$On_%bZ%o=SoX#3vDZlhjjVAFEFzAYS| zdiN>LgZa2nHZ=jIDbjmoYuhV%#xqpsd2wLC!l5)Db7{&l!tqM&9LHJtW>rNz3Y%AW z;BvV*aXg}NU`#5)==%Pa8nf-gsfL^mi*-Z0fa6PME()b7BsYAvpW(3z{3jX?8{=FH zB71kxrBg{b`0NEnuAv&bv(5s@0hI*U_}~e5n4IF>F$4g+kTn6XuG_f7)6h_~6*b@9 z{(Y8h23i#V;P*3uW6uOhZU#OcKi+m%<+gOPLDK+;%u%8}xwc?O9hj-SD9W1~DuOj*SODl6ZBaV$b!1OS@KHXi3oT)uoo%dw^!il+L1P*O{ z#pk`JnD5RG%xRF)eJm=ch4+SuJ=#{VYk2u$Vo{NN9|{Qm`1_v?vWe7KR!rl#rT@>r z-Tk!9pB8Zhh8(LeyaY*)4$OvlIv9NnF8$yzT{u-0kX#d95*6szJAY|99pTvQ7~{!t zjx_vrXU!RmjyA2=e?!zCie7lHApVNuavQube=nA4=P+ai$ zN25s48U|-#^L@+Fuk)Li11VJFVGZzbBV2Kmc6KV=Q}{$)Ygaw-)5iHOdn~o%`c&6h z!KtdT_q{(=?WJRUDW@Z6m6Lh0>5h_}LU1W4Uv2g-dr6d!&*eW+nJXF%Z->7irN4n4 zUEr(D2hxA#rR^n+$o)HQ2L@6P*-o*{@@&>N9#R6&|1riuES$@3(8lgqdfrTTU(%QG zTt1T2rrG^4)E-rq(TV|I#ahxra#;#%R3xlTKIWs4=F&N`cN zxTtU5tS3O-3(E#aClqo(9|p(gMQNL_zaX?%ki_-Rr%0dvt<*D6d?+dV?w&-P~E zYQ`8Gq;g`{tFie~0ooIvh2;LS&FugPrbJwk^{dWMLhro&Zb^5p(lB@&keD)V~3_2 znICv!fSJya3L%K4?R&r!P$)++gJLgU(i@{}JpX*TvN0YQ86>iD0@{#c#5<|5J9cxC z^StQe7TztpU>B{N5<aj1PdF7l)Z;pITy{HN83lTfgJ8LTvA1cLBfv>$8D3h}Ci}p}Ybgm!O14|y+ zr=Em8fAaIrUI6z^xmIzaI_QD;yx5Ken8FLqwOuFFoyJ&K;*!qe{>o<9i6ChM!)IDOZP?2l z!vU$O8x_0!iw80b<2R+PEVaV2ioE<0crEP`{38Cr`uvwmwS8q4s4`eKjB||ij7H5_ zlm;;M`caH*o|eWn=Y);s_2nNn_shJ($uBqISQhew-E)drUw}^m;_?jD>CDS;9Usf~ z`gqgu7W@SJd>^^9t`WE{RJ|7Cc>T`2_U>xL%lR-?P+4p{<^pwFQ&n~147AGM0Waz! z0arSzJn8iGr_mvU{x63L1|EW>xE&8ES5*h1Klkas%JyG&Fy&T1kE%L|@xe48-$eVR zkQxkwL*1r#c>hP~nsRUgwf2 znd-}y&rj14@`_EtqW(%z?Z!|X=%t3jt%7l}84sKXcfeiZz1m0VQ-fZf_#3QL9P>^3 zlhOM)TY{#@_MrC(0IS*El$cu7@~P#dcl%7+<4P9B9l_F+wfExmI z%O2DmuigS-bW&!IS>BdLj{a^zQiOD+QYm}up+P#5-^G;3Ax;C!MFz^S_89-{8RqVG zjB17^`1V*+RLbZNTWUnHK5SUl%Yls5;kLu`Jc8`);c#*QxOo_Flhp z`+Vn~kfTsWS?ZvCVmklabinojeI{;k)bWBNuqXx8wqQ-q2de~yj+V=wCT!h66Gx3= zxc$GLhZbmWp1^F~40kfGuCzd>eJPEN9jQD>L=09b#d=>SnendXSX30r2MF|q^zk6t z((y|d+rc0bl*Hs7h0juaThu4P0bqNXr6xW1_C*01wGcBV+@ z!EXixp^)+f-?ZGv1AU6H0s_Uf>h6wy{w`b|iNrHl{VA-0XGJM=@BO=dwY1RV9zd zOOFKt3)2KF_PM=fR9e-|xvrk~9dpsyN+Mz>}*b!`n{O%4I1_0Cbkrs_W${k-gRqH z$csK9XDzvsvc(h@EI>xTWnVqtkhFdfBiqaREPvE~aq5Lm=-++J7zqc#(mNuiL&d0W<=c_E@|B@IUN)&{CgHl7G@pc%IA9Pm3lE#NYb;82kT%sq?Qn*KjZsm zHzRdUbVVF$sReI*OE*|6H;nQQxIz8)}&1ar^kHpplX% z`TU>$=UA)fS#-;VGU>{i%wUks$9YbqpTV^XxFb9F7Ta^}p31|p!U^^8V?VB=*Zn;i ztIa7S5D&9nLfX-Psp_4pF|*K+0H&ONtul|VZc6%8uR-Sx zZ!%TC68(``x9lsvtBnIqq}i1AfHC%&NGFrgTn%u4PJ8I2HMa`5$HQFx9QS1# z=Jc`Q8nt}~uc68!(d9nA`LAefu=Qn)F2}KspP;c=4f3>7FVbtI>3D$!#hc@Muh23q z&AF^a5NVILI0^7R0HTOe)W0skSdCZ+sc~$$Ob$^L?vp(VPiu_62EZe)=F5cK$?a=^ z_2c6|PnpiO9)Se*(-ywm{0gBQRci3Kmp^3)Hr8hUrE#JVzfTVlXEOY$C!T;=M@Pr3bR?P_B@$=(84q{2Gmsgz{8g>7+zG6;m$vyFzXggp!`l zXiTky{Y-62z-@|5_+>d=bDchd)g7WqPMsmGu0}MH%7Nrrt&woR7p)qaXf$z06lQ*>Jpk*Bc$@NlLD$tejZ|Qpi)e z2YqjLX?a+7r9JylJ~62;-hXZKw5y*VrS`iq!R>LGPpfsnf&uV(fG*4v_JA!RUqRB$ zhwpsuW^YVV`$o3?f=`EqbAakRaP|fso*}b{J)*owL^&)hJBgUuWP7BiKJ9+n_Oc2B zK>%r+$v_lb=EuzVq~6%sVErvvkjA9UJ`7nl4xfB9u9{I+(e#kLrY`2^Bwm{kgW)cD*x#7FCE@N$)sqZ%($k*JdE448(F_?M51@>h!doXT!jL{S&s+8i! z-R=zTotjy#U6Qa7(Pc)WZHNxeZ=lUd$Qr3%eL`&mq}kxbmAIG_zn$hyMl}-;uaYj; z4RkKe1SN(n>5`z!pY65qg-9}s+X{wqoA52(NxyI7ZWw8!{B zRn?lt+-a9J#_On_q`$LlJz$?spO};^J*s?F?21NmOx)Q=Vh*~s-%T|UPDhD4HE_qs z!ZvZ}e~`u+6%2=tzi4ldsX!n{MBUr>w1)$9>5R@4i<_dfzqTSvz_Jk@WmsV5^2NtI zy+m6mG*ia>etV)tdfjGBCDZa?f2z!Lne&KeG#Dl;P5ZtkxPiJ-uT+fN*Y*xr@0pdA zpZvWxZVZnY5JgV_LrdD)%CJ$LexTC`KTTS_wYFB>w;F+AI8-`VN4cEigJ)QUSNv>_ zDl=}Rvk-w3Rb%^piNTLUVcGA4fL7A|tRAr)};Ncsy!ky}HP0YOxx?*X}>@#H! ziH>*b+@xNrEs{@1FVn{^XLkNqks&WU`vL z_nb2K{?MSNgsLVQBOg9of`O$A(u(+Yj-95|UPI55X6h<0aesuD-a(b6oV&w%^5N`{ zOL>CX&({I=Is(*sI)TzWfS1iO{6G*ObD!rGT+}>FFBqwP{L$`fPUO(Ag!^SA1X74E zU)z2@nJ)mMXY5flPj|We=_)hr&S$D9zrPpTP)V5_!o4j%1*75s3x&vi(?KI$v;j$k zYHg;ism*d2!7JN4EebtKPYKDtYMu@icc<*_e*u(Wv=8z8yD8=Svk%ASJdb#WgJUmE z-AX3&qC`xCBvTEo_jHy4G8Un265r!absGPFy=>*nI#w503S;CS?c#hwK%OH3Nlj;A zcV}zM-~QyI*tc?VkTFgGzKVfNiWm6hg{415fTWC!jLa4JsvKJqJg!52_W)nA9tu8^ zrC{!9f{TYMBioTJ4LyfQL3c&sH@F~jX@W;7g!S)t(i@iy zO3Cvf5a6|VHp=TCZH0Z!zDK)(fOyBe3TSXEo(1FpR_6VtepHIDQR}XX^eBR+(LaEC z$;QE{z?*kyp&;vJC}bma;R4^zzY-}wW#;Clqe2s%bw*U)4^`#^qz-^0Y+s=TjNw)m zLlcW`?5;jEv}D-s%BBEa*g&h|9GJ-a)d-E-a^Tyvvzm@I4(T$sb@g_A26g^-Y(!}7 z%HxRu-#SU|?C|NAuyYz)V(q(1a{uWAfv6|yNTm*mNs;Or6#;#R`(pmi108?^KVew} zJQl!qUaG3RaQ&ptNFEan)v{290Rw_lT3i7|I5^|`do3_P{B-o`e* z#NYrX0Pq7{x2j4t)$E=(;p({1*&EwfUj(5jVZSfpLTBq`u0y@92W&`cuN^+v75KK- z@@m8gM=ARD)W*Z?Do={Hz`>gC>DTJLl2bll&waU~De52Z8$`Xmevy(!!zlwsabmd0 zDkU0!$g#}19e(O6SF2m8SEe_NkdJmwxQ|kwi)^Q^EVTj%tJPUfU_2+Z)l&O56-TGj zZA5^!>zk9wRv1Bdh0>`XSM~lJ&=P+NkkROQJ>=S>p@5?~FE%&(ywzF1hD&_QNM4^l z{?q{H%s*}ytkwS+^5LCrodnVJVCNl0`qrdud1Lj<7QMr-`Yo{672SJee(H{(ZJ@o(;3bR5NO7YN#tX zKzDnSVk+>!#^4cdhqc?wO18(3KQ!y_iIJ&42UfvfMozkxd8!hyx1D&-|C)3+?G`GrVy`=ut;8( z`dZJiy&~EU^Th&dZ`_D8PnHgmd}3P(ciaX6imr5-y(jr%8Atst3#uGwnDE%4A={++ znz6BdRyHCQ3hE85N5ietzX!Lxu;Y^(|9%M=5OjU>u~w5aJ|Oh+uo!8Lj>#nGFJ^N}!%!onSCE3zl5o{b6?;3{uYaBxWy z8#ylX+RQ6F=R8(-;|<(#Banp-^3QB}QIWLrnXyCoF&UTsG&k2l140*tf)G5}2+Ksi#Wa~sm6pllCx?w5Rn#3Dd9J05M3 zmYiI4LyPiC2YlPf9ub)7{5La{d)J@UHZlFco4OvV2h){zDQdBaMDNzOcWJ+^O|aJk zV1$7rDd;!+yk;YFv2S2)NI~v|V(C(=6bcH^t;=^aBC+i_pp=Jzwta>*fKouIcMyBo zD+iHObfdlplw6*D{sd#+rP9jEq1!0|BY$x3m!~JEr^JR7e@|s+9~AV3st#);GpE%E z)4z48-i`(?whCWZ+*ZT$UQxpuv}a&jkKyfMn#A~OMCO17p}MyNP}$;xN~Z4htN0)c z3lIh#whBXg+W{hOPgP}lO4nfWl4k3d3io2n(h^{{%1@JFn0N_F@4KLfdim>{K-c-! z&o|*9fd2Gkn4_eY0$DvEH4&2ui#a;N60CyP^~@2e^#p>eEj{g3zD;7*)t@djt_C$R zDJyyDLusSn@0OTvPi0Y3CsNkOY%OLaYA3YHrgeLEynIUbA|%kw;?fzWtiGpe;cw`PWCmn~WbH1f2MK~*pKcpTXi ze5&%vN7b!mYP5SCadhuSvA$X8$5u0c;KpF+AZASW@2uT33!$-f%t+=!#fq@lkl3Q< z(c76NjO61ApNa0I<)_{E@YLK$Jwm3}P_(Zd2%);6t7TzdP^Yqo;SoxEx8(+bq;%FB zW*vimVoBu}>ZLqKWb(h5qZ+XtWt09U{roaF6OKroF_0=|HxoU%3 z<^!mx2ceAWQ{KnhZ=&Z3wCZXGEucJh)Z?x-OI&_bUi_khS7v);|Ga-r%LHzFXD0>l z$4Ed(sq$k6R9DMrs@|9$xAWM zEGlHooqs}8=*fVWd_1x5`@@X1BjDi@pCz479xn-p({dUu(%GbaalhU^z9rXde0x9p4kfpj-_z2}FXlvrInz=?Kgri=kt zRC?Cr#7q3l=O~9KO`U~?#o-YS-Jq0Y6c||#5>q_Q*_2BAWd}U3GxuO@K#Dh8HRywx zA;{i8={7RS5A_oCkABp{>Qco%;lTDd3+tB(NO*uf`e^Hh2?B`vsxgG&#?tZC# zx(q-pIr~E(vb$e+_*OWz%qP<}NYc!v@!Pu&>Ol2?kt^@?y9Otf9O<n<4EwhYJ%lRZ?acoJ+geD$fB4e@7<}!?~N$ zOM5b8a<7OvtE9NKH;pskTD<9*k;eC+E)4i^&|3h!f*MBeof@8QH{o>sB(WQ zZj)ZPuk|8sM=@T`e8}lz$@NlyPZ3jQcGJ9jhD8C9K1mp?`{InwOV~}7oBo3)^L(ax zv%;_oa|V#_)+?!VYuCbZhZlAxlzPiP>uY#Ol05Z2-dO%xjR?(|LqlT$>0`}Um7yqB z7Pw7Y?NQxbSS5b2mWEUc_yLJBba)1*pu&bZ}KV2x_J_P{kHH zi*r@KcujV*fAu{qY1H1QFB#P+IFMw;4FXih4pU|SbHMSBnc=JQrub& z+=65^(dAb7Umn2Ze$!D&>{`|yB{8{Nyk=cWUZG{;4*QetYo5xGE;7V!df`qwVb4-) zwk4uh@ZDS_pcl`w1rKj+urH>#^~f>qa8;v=x96b#*&fIfo~qI(_w*(imH}CJ#@gXL z@r0_bliB>J+3x1u1G_srOyX0YgNv;^K(@b2-98w@hAG80 zo!{g4>TXeXEQ87iq<_TdO+c}3vXV5|;1TNV)Z>ft^mX(XBG9aU0^2i`deb`$jf})7 z4ek+er!fd*6oI{Me(83w&1lD3@_HWmK7GD?R_ttTSz1}5WHHcyUslQbELWP@=pv^~ ziFJ-n7(u|nkwArGVRb3`VE%=as!hw6#5*1^iwsyQAXNV6*)Y!9d;Cm6&Yo&C7SPk} zpJ+FnES>KH*xilo?Px%Rp1o*P6Y$jGw#BIRm=5}Ss*tvI?=0CBsHT9m8@sc0g_NHM zf3QJ_T|B*lFMPjLEl_%gYq4+64ch$&Nk?hhvC{1H0irzzS_#NGglp4#kb+ktK5x!w zqd#7{@w-Dr!!HYiK^ot?CPe2xDm7FOo`DWHrJ$j^rh;)&Pd$W>jM4x8$2FTi+}l{@ zUprsBUw2QhWQ{lac#0rM#=MB+b@a%~^;|9~@Ez{5U~}SB8k6~q7B{M|aaT&*bEUw% zoB?zo8%vO+uog=fj}ENnP<|&WS#Da=la#3Y_&Vplql<0 z9Gy=2M2y7KnZ(hOXPS|jPT`!BVUr&}g>tV0F?G|a=6lHy;Cl66rlJn^PZvYq14Mv$ zD=1Y~Qu|w~VbI8~Tnw2cu+T15FrAhmhoiVB2_F5moLo^FSV!LyOB!#sXci^qs`J_` zc0;Dv!QV^RUQ<0d+9{y|;+2_t4B7p5_pH)4o$L3#f4k&r zzh|e$P6Y*pJq{OtzO10IB}+j;@!1YV;1`fv3rRsir@`Upb60K_3b~@hVF=GESaJrl ztNOO}ZEHpC)ZfqA-TF58n}b{Ib{zio+t0u^iT=SI+_wAlWY9Y+Fx%V2r*`JgqKmc1 zZ7mC!p(hO$+FCXwU$-gjK2m+__%~{M@3kww-s^MrpyI9_=YzL|>@fa*cdF8_djHhL zB5faA%=*d~up;jbVVjquQJzx3lW{|7wr**{vul}B%IK0wRkA?Nad}9CUmfa z(I>B2O`o2fP0y{j<Bwn`8NAb#IDi)Aa!lAW^NqQYifo$ z{wm7WdE%#7m(=?R8~&(Dc{FcK5i%qk4CyldD#P{*8roY0m zo~`wYrprUAN--z?$prsP>jn%vUZhe{249w@^qOZPb{v0)rBotXp#-cmp;vAqppFVr z7u=oov%9aybHb8e!t+;?@g)%rekmBuTXEde)v;+49qoSPL1du%1$R&2L;2-R+GW2C zyOLVt^x`b9y{|L28u^n4!Fm1WE{>$McjZ*SN}c{~pA;qe9m66CSTy-)d~0djfxYhn z6(h|xN>^t*G+)emvdHz(a6Wy#=}yJQc4K(xn$z%!5b@M4<-P@idpN9~3Q{E$+onkqpF?&1DJ z_V%HSiC7A!^t4m<=x9`p&x=8hVKqlMP1VV;1E0$xGHI@~>y#h4;1Q9e zr28nnK;wf$;h6tqJyGshDcd=I_5K7jd)CuaD3OYjxU(($u>_7sMf}yH+dssEv@_qX zil?Tg`f}k0-JvIa$%6th$gPl|H6v<#(ehCwVN9Gvj({|ca~WlDP)e0J3Aa!RcCd|M zBwrFf-B-Sa#&tE=#fl|6NV-BVuj5D&PTU72TvDyEHwlO}lHlpSzuc*ZUy<>4yw=zw zt282xKJ(dPD9RLZY`tLifDg>K%!zUe z;;24Xj=!J*)lLz_#OLWZUPjHJXx-QQ@_Intj(Hv-e)WhH72Zi1bQ|)U4SuezW zKiri77UQMoWVMev|nO|YG_^)S%f{LS^% zU9d59)3sn1LT{hUA@Y4XolC-po@u%8hgwOI-_9)5qiNCZAI&V2hhDXtsHb1ZPjKT* zDX(-KGJnR?-bz}bwduLE4kB@795=Dq=F=i3XmG>HB*e>7Q~&vdyRTd(s{vWGvxetP zJS)G%&OHZ!KTuX zBOR0|CsO@`;)^8R%Tb4PUdKpMTAVdLG^qPv4%(#wc{;FI&ase_;Q1YgO6y*no9Ir3 z&dP8!Sm5C5wNc;vkH;Qz9TbvAWQjiT4^N^=;&_Jzg=*Pn1jSmz$53hEWH&!PKj$&( zLD3O2`OG&#RAknG4~{m0qJgz~%G^W7pn8S;w)3xxkM>--GVQp;UU@M;j-g{Q7?yTc z{YZK5`7Y8CmE6Y&3MVp*7hdPjYftG^pO zoD6prvj=~-E2*zPHsMaK%(;igne-l8WS#78c~W0@OKuE5;SH$Q@k4So}y zzN^r&n>MK2y)5yyx}gC2ZGI!9rDz4tyl(qNv}Tg#y+aEr(Hm1*C|v3&xWO@@zdm>F z`o>c3C54**^Ko=zJe*1p`5tV#A%FN=og)kv9rrFs>GYS#HrDXUrCxKPnX}DWKP0!g zcJi&78>~08)|jybwj-e8mm;sb@mE2Q%ixWiU#cpN8C{{VO!ZrfrN3Af*i!2JD({Kb zghG?28Y|o-ut~H?(qY%u(xTNE(&Q0zGG3O~Qaia_Ey!5Sp5f(*T-seE-e<;G`0C0V z9d%V20`_w3yI&7ivvyQSBocYFPJy%j6uzdQZ~fzEU5v{JgW*JYCr%ZQMf-VribNtX zQ@_|6!yHU2`OOA;F!OEN)?e4ftWF*|vn_EKTP&4`P}y(BZ+Lo2We{wL3`N7SrwCL{ z328O8b82xFMPtGYvK`hy94;a^XhSBINTq10!N*k%VaY0la8Nsa&n;G|29{TH|A^ zM$qpzD@ZJ4Pw{nOzB&UoI+;Nm)Mv3j(Z*j$6MCSNaS;W}N_38JTU9W1QxY3<^5EIq z2kvx`=xB>eQk~Z@i#ZE^$ezb$xA41YE4DZ&Z@b%-vwes2iy>yK1{YG2G zwzdlEF24YO}P-)>rGMxcw1G0x+hu^{n)Dn=rQe?|%Yko2le!Slv+j^C1|Q#G_*q zpn0x@^v=&l72NU0-OA0a_190yXhdSF5j^@N`l)8jK&xMI(>2w|PxbE%M3kcs%HS+2 zCxvd?=RE+Zj?jn1g+C$^Bgjbt$QxU513)6j;jf%tVn&95ZZu_A@xT6QC@76=4${zj{Hsp>qfztqw%JZupsrOblW+D@ig zyla=PZS__jsRmXf+S-{kRw9q2dfPV`9csIuOLhwemZA?|KC*oG#CmhW-=X*#R6?Op zR(?rKh~yYNK}THOwlCGwEfx%tbvN78`I6SN zOVth?nrDB+4;-%sH#1_E%C`wYZeYDn6B83(4^LEW&U#~A)B!bJLB8jsrn`!@g;`+n z_~Ng5BFEr8dn!<9kXzl%NVBbT>EPg?`NcySc4RUch<2=#14piWBC0mzYVS54ZQeCv zD3;4dT}dT|&Hq;D##E^I*6sQDTCY07C1a$0J( z!zCCevu+)VQZehRe<8i{h(e**{5Uf-u4G}`xbid==_@&gMx(8hoN9=~UE2u1&H<&m zu)oH@fxYc|ewew&p7n>nQ>)S{*wkl}WRG>d%LVDhM;Wo^8h5Xs%Ka8F5Cb9qynFcf zn%jTF>-=}N|DKQhZ*Kpa+kX{Q{C@~+15Dk*dyk_1l0VtO)X(m^Zoc;G@_OB}RF>3g z`rvAVADC(~^0=K^D#HW~iqi@J@7xu-pe*DARu3?l#tb%3EYkwN1e!W|?2JT8B^$PcRs)trnFZ)*R4C-l#POPQrF)8)Jw@ zMp-YMu#(mK;*NHP9Y2_(nfZ2n#9L_lGQa^Juj?c1t{qB-MCXS!_#tDD%l2}%Ti{&j zLjhyzA-)}lfj-L|9FPOs<6jjHLtGvJkrV@|Bv`WSO5D-0CQpTbH87_Z`#Kq- z0c2}{DTO0Uv+p*=4_j(vT()d58;_GbwqzYpyHLXsF68Ly^cl+f@kZKL@>imDuO!Xa zg80wV#K)0=Q-`XS&DR$f}N+e1+~(!=}+vS2M{ys;0)SnN#$*G|Od{Zt1= zw#p)HbR?NKF4IdqY)bo+T3NCub<2vRIO8H%;=A>C}4uD_IT)M2eK`6GC3s#^QEJ57Cu1Vr1Rpn(q%#7iyQ<+yx-06 zgCV4Vc^PXkF{6a$hhAEX#-php_mEt+BM;`nZ9bYa5foZkxz=|+nNQw)YtI8E$+S=< z3oDVI3fG>;yK8GZm%7?xncz-9KoJd&(KuRei9~lHInfQh#%&zN-*Gh4I51kMH#QEy zi$1rmhX_q&?o_U@2LZmF zs-T{bYl@1Xf{?u7^kX0vRo`rs;k~?STY=4MPx=Fp`J4UyL91n+8};4bK4eOK%rJf7 z(u**fW<*AD*L-GUu-m??w zUw@86#NB^`Rn_O}&dh;CdF9{$(=NvimGb94{p28AR3#%qdOuShz$ds~<~fK*vnDx%M)6 zo_->J0?Govj0CtGfRD_XfCiyU$8|ET6D}^C)0Xc|FMdg!*2|n&83oj%4|e}PFd7a! zA2>KZ-!w(BF^O|?`r-jNPK)&$C(=8A2)ZJ~`}wi+lFl|CfrGzf2{x*4YLqsrPXy6( z<5Z_L;8$x}A%eau*FZ0c#Nq8va|ROw{sgaojIx})VdDi*49a@nHeu#Cbh-YX>s`X+ z?`^MpHB5WsE~z`6^4$suPb|}Uv{HKTJILtRKKYvXXU-fLIybO)t0pSbX-x>As>ApL`lDfDJ0L(i;n^|x};#s z+==r){j-$(e?NS{c7cO{6YH-06y?&p@(TO`n~7*21oQyFp5zpB4WO>&OmtcRL=aHV z-xCe1Yi{{1xr&RB0Cb@EXjv~mq9G|hPJTgA@Pb<9QK9AO*$>=f+z7C*wYRMsUREw1 zgGl%NFkc|;nuzsQ9O%HRs*hZGVF-A0p!+Z}B}Fzj)7sVs^@?+(0;Y5^jKU17>thW? zp*R_IiU;AdP$-PU#1s~%iEC<&gP_nJdhh->KzYZe7UA)uqob_KYQS7L&d0!f*It2h z+BIH)mq^428=Vcn=pKDQ1^h1rbi6`9h37Nwd3P|%03>EoP|}=psRg(ONjlqq13pu}{4zD|%|`gen~pl)<-ihG5b`~O!gc_!bcOan zI^d0@Ru?=O2XK}ga0ARYM|k6Xx#1Xaxnp?EiX~!&)#c{qCL5w6zJ37+mYJEEz2sy8 z6PPtfD2gil^4!-l&sjw^}V1u2G}u#;dHiwHjqwv`+M(;(r=c3S0Ap^v&V|I z=g4~V6|J8bwb%!{=x3we>ZupG5(s`6^Ia;}j`E#%EXRX}?N7vrtj9EFz*0n|9&Xd* z1~cyR&^r?NeXVnN6Zgz}e-)n8g~jRC4XCn23ZOwj9Q&jt)&8tg?e0K;9;xEBwfv4! z*+BXHPgMjW(Ze5lsj-*1o+Kr&xy*itf6p9w4IFZ&Gs}Wzvz)E1fou+k)4isuS?6O6 z$^c;EYVPvw)}Xk}%;6#y1M`>9;gH)-zkeZpJ580(kH77v3}cHIhYOd}FSuU;#N3ae zi+qt5Em6>&eTTg2X$N$*Kiuu%-s@0T4F_hbpS^rA0)$(xNC4g-2!)yWB0cNY-b8Cp z;Y}M;#!2osAB8B~B5L5!Gne2%pi%0)+Ksnj(rEzG#AU>d6jDo1w?t95J-BAYPYR1e z6o+3nOgR=z=MnsogJ$<}t^~$J?WQ2H@^#-F*!wb8DI{5x0E!0pyXt2r?@%9fOKaEo zal=)FqAf{t?S8PgYMYFeRY%E%8z8IKfZ88o?(sF?)6;yup?0(%q?U^SFdTsFE4`Y} zo5ySpb)I;@$LhywNDjiCfStI>i*?d?5bFy#ca|danqqaHQb5PuTtp4V?I0c`2hpo$!b>L_02&Q6C=zL*WBIA42qLh6I2I=>g3c<+i9Q>QGuY$VBl-%o zL~gldU1b0RUYV$fNXun2%Vp53b=xjt(s0V~ddi;_@{W_M6a? zi2xMMu!-DU?(*T1q9ajex)b`CD9Zv5%2cx*d;7d?^5?H}s`IMJHfQmIL$x*w6&cnh z&2R5)zgL(MC&6ScTDJI^PMVIjE(M&?g^*)cENtgcUwjAIFm;Y>z-RXvP4$r+?b@Mc z!e=96^VQMa%C`RK=Ot467`0UK&@dwo68CC<@>WGb-BVazSSUD3odr`7)O8s){qZj! coVE$Y;*8UGQ?-Hj*a{98Tz{_mDfssP09M$q%>V!Z literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00004.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..9d261148b71ba30aa1b899c216415154b470fa1c GIT binary patch literal 8186 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 Jb`AdMKLBbBQ%?W@ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1-rejected/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..cebc8beded3da2cc390e824ea38eac4f84cbf349 GIT binary patch literal 5076 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 +38R&HWIKubK=R!m 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 GkN*c$9u?XE literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00002.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3fbaffe1f5285dbcde35ab0bafda6bdb41f727 GIT binary patch literal 14736 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00004.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 +38R&HWIKubK=R!m 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 Js_wWx`)|3ga2@~v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00002.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c735e5bdf231a5cd7c64af68376aa38d5f32b1a6 GIT binary patch literal 15205 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 J`nJon{|o8%+%o_G literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..31f14901211918dea807cd961a78258afdb07cb6 GIT binary patch literal 10755 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 W)UfjY=>ZgXf=rDqZ`NIRP5K`P$Lccx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 +38R&HWIKubK=R!m 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 Js_wWx`)|3ga2@~v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00002.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ef32816b2d772def41dd5cf5abd755d0525955 GIT binary patch literal 15278 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00001.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d77ef275e523bd9b30d275f053d4497f9afa9760 GIT binary patch literal 16309 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00001.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..783fdcab34951d78beb11bcaa49b292b6c506743 GIT binary patch literal 15786 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 I-Ff;y0GR{$M*si- literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00002.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2889b8092be2f5e071ca631740dd0b74796030e4 GIT binary patch literal 18248 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 IKZ6DRFUq>kaR2}S literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00003.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea90064d21bea31826c5f4895a99f733e539158 GIT binary patch literal 12590 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00001.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..783fdcab34951d78beb11bcaa49b292b6c506743 GIT binary patch literal 15786 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 I-Ff;y0GR{$M*si- literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00002.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..50a0880d93dffe1e1e65150ef663bcdbbd8e413b GIT binary patch literal 17523 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 IDO*SUUwcTjz5oCK literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00003.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea90064d21bea31826c5f4895a99f733e539158 GIT binary patch literal 12590 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_1/00001.png b/tests/ragger/snapshots/stax/erc721_approve_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..a479dee566779308f4a19eae801e2c25b87351cb GIT binary patch literal 15853 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 R+ql_u9~j=Rxa;upzW~9W^K1YB literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_1/00002.png b/tests/ragger/snapshots/stax/erc721_approve_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7ce097e67b0a90fc92e6e58960ecb3ec800dd9 GIT binary patch literal 15995 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 Oj1BMKuD|8>?0*47iA!Hj2*(QUb#C*## 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00001.png b/tests/ragger/snapshots/stax/erc721_approve_137/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1c9537163974cb6e9150be6f833a79dadfd5d4 GIT binary patch literal 14141 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 PxIo6{H{M@&ee%BmuHLBb literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00002.png b/tests/ragger/snapshots/stax/erc721_approve_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4e99e678674a65bb8ea7cc0b69ef5a7fcf78bf14 GIT binary patch literal 15648 zcmc(`XIN8R+bxP-X^-^IqX-B{@4bVegx*58fP#Ru06`MzQbI2h2%rcN zLPu&y5P<{;5Fv!nvls8R_ji8m>-;!hc~7`>c`d`5WzGAZ;~rzoclx>-tmiq;Gchr- zYCd~v$i#Hw0}~VTr?bq!9eKUhawaB4lIGLL#vvcq@N3!mZH#SSqI@K4HGeg~vz9&Z z({ZK#q{w6K=qrUM1s`jDxN@Mf!<8d6%k*eQt~<1yXH9-aT~_BwbaMWKTHyqyUyFzB z2m%w+A2s_EXHUnR`s?P&>(Ta?%$Z(3{{=@6;}&~pp2vTZEz-=D^Ke`&a$Fz=P%NqG)jzo*$gdF*;3ixOJ3>-b9{ zIvc)s*Q7@{^+Jc_V5Er>=#+h}+nMW3&(;4ebN)a7W)Hllx^i_(9>fDnY<^Nn2TmFn zP)#?~Dt!>&TkDD2o|FDEq3rM~tij6)>asPLe;-zbw}&V%0`zZ1G@g4S>FD1 zU?#}lGs0TYIrkSwR_5iFhKzF@8U}nR##hyX<@~&US`RD-)b<)hvgbdL=Skj!sM$=! zb>@{l%zb*?NpECFeEx$$YBA{GcC3pXt1xX7(#C#}@)mPw+6Wo3nn55iLT-Zl4Yl^#ZVn@%YTu-ML`?&0bC5nPxNB-Q74 zaq{4^;hKQjtdjBroYr%YBn>`>4_g2HPK^tLPvJ^h{1Jz0E4IotWgUP`_>2FdAG$6$b$;^<>Vj{~`R+n76)fVjDArm13k!m&b7tXHmM>*KdLdq9 z{0XA4qjcQ-N(_I2(xRuY%tfSc9y#T{q0K~2fA?P6me;;#_h$z(NB5VoB*jSzJ+%%} zlCLWOV;s+`Qg!}=X$sx1>ra4uC_%E02fuXN-4p7v?9Z9(UatFMvKX{tVOrZT(!{^E zgsN;gj6I&b)mt&wZn1XqdcS+Nm>+yL)mm1<>W!hq3VwC{O}hby!qUp*XGr$@k@zE4 z^}k15ceQ_b#lgi&bP2LXJN3t~S`qJsJcba?lNLp;Ssrga;!wy!M-oZm z^(N|0%lMQOi*aWNSLf%R=m~n^{k#tY6>gQoj)~jry|vF#AzK1K7&hTF+0i__LygFb z2@S5iQZ=fk$m<2R_Z~v!evon+@%IA$SU1b##>; z##kKO9j}}q>px!zRhFFC2>IAZff}^P^?&>(hZsa_xTf-9<~Qb63)noyIb2OY4wk_qzIM{$PRPtg_@vR`w6jQ0xziFPT8 zV2EH5L=U+eBjqkrl5HW&o?I`f!(ErGRITLpK7T1(xvIWj$b!GRuga8gXmRxoZD3$6 zsAW|Px#(umhzB>}kh>fXZw59(p7Y*<1s}m-0xO-fs5?m=oO>W{%by=3fbJ5VL*cy1 z80v1gA`h|)g>`sx?mfOA1l`MDG-)9Lx0SI9!TnFjxe?!D@VN$p4YQPld|94k(|DzW zYuVNPWDDi$KF8X&CuBGGO^fNkX6ruhpHXQuz);~eR%hVNC6H~x=;Wxry@f#5uE$i% z$L#&z@DA%Rx-8k%&NRN|;#a!`lZWI57F3x7>N?U;*8mMF-Mklj?-idivfiw(q&8n6O^g z8C|m2RGc7{S$|21x}i4Q;;?@h*@RnOj;KV|dxgp8#x}Zb!h6-~AH;7-PXr>(3e#8C zgi^4ohRTK+Azv9ZIy}grD4IgS=nYvQ$L*$y=lPBuSKrIT#Z#{C$F>CT<)uzA;#_dft z`gs@D*^AW>*T%omC}s0c2q)K9#uk*MqHq~FVBzQXGX(3q%LiVnR8)GHM86QHr0z!E=2Y3U>C)aiEHa<)ZpZ(K@9NX zxui;|yQ>lvb4N?h;k(FPpR2{qUZx~;QI17H5Ov*mu{=kMdI3{Ip)+{c$Jr`MrDBp z%fSV@1I;}}DPnRN9P}}e`lIaqbG8b#?V=X1O&jxwDD;itimD2$U&NleXKJ;<`!vlL zM}ei^9=%fU4(CeNs6$PJJy|)J`RX^jMx;t<-AQ5t+R+|Z3=x&r)$#<^m0eZhOu?kAyorGxjiFGM0PI^VYS;ON}vr^Kcg5Vougwjk#sNoD27|j zU{n%;Kx}#!rO#i%+{LxVn~^(5D(Z#}Ui~d_+dVks=xI*-=Oo?_0$UDBTss0pJAUf| zcC2IL3$9MinSLb%rK==1P#LkfRX2F@6+9$zF6%^Yap^u=xW`1F4lLAu7Bk}}ejE-9 zEC+pvdrDwr=I&}r9;o872fO$D`}_wwqj`v@)Dm2c*PdCI0XiN^Fp{As9~?aF;MjI) zpC$Ln=js;lEEiZ40rcyYxAqC7YcC zmKHBuRh1YJn!nmkHHGqDQ1La6BCo$136D3ToCLCzAqT2xyy%8Fb=3=|&Mv&p?d}b{ zO0c|`O*yQs)@YWlI%AH!Q&hIB^NX}OZKQm zY^z|)W(5wSCw2Ndo3PDyeArbY(!L*`(c}8=l+XZJs?BiBEg4MUSL{i$rBwL@DCldAkT z+dsc5mW4xAFntlb2L}f`$Dbi?lnorSH8kD-G%Kj|YsCp#WV@=>m!CJ*9>nCS^s7|2 zfTXtPYB-MSE4vWmzj)wupNnthiXYoyxH*q1mtEL&?3G0ef?vipbp`j&jKUM|jpJvM=1XIt z)+K@099`}Er*4pkOHEG@z%mj@l!AxN4N8)<_@F%9{s9IIQrJHR;-%h=R)a=a@D0a%i;N*g@rRE84GSoQo=D-Y*RzcG`8?4be^x0bDp;GuxAKIuFn%5aY z9Q{$ewv69D5vhvJbaMF$KpHW6TVL(xm?oYqAisQxD|p7|FF|4NtJZP}6>qnBrq~6(u+JRwb!x^o`uow`H{s_Q z0!iQ|E3)J`Max3E`aUJ$CMVagFJdIZEm=qlzGC_@7X}_&sWj715ZV)m(j4sZq-z8E zalx?Sv{~4^Y&Gf3_<@&gXIy9?O68y-8u~h z0V?a@fosh0u<{6hRqHd=a!yqeKq^N(C2P}E_SF~L(qb=Y9n8^1!isDcn8sEAbKF9A zYE_xthsb+DSJgCAvj&-Y#J3t1j8gf~*zCWnT7MtRSx+C7oNbE8k5nlU+g}C3E!#DVMAr=WN$>vb`MEi%tnT3mVy~CQ1nnCRwfz2^kCYk&SYP@o2%q)@?+ zsUNtfxv3(L@i!{7#M+llgYFM1taQCak7jw(SC0zyBCAT~JuJ&QN-W&huuv;+mo*vb zbG&UzlZP;|!za1tsscYsRJ|e;6eT$g%FJf*3sPRyD28i)2)!gGRW;b1Giq)l!EV!2aLaa4!)XTAuYwj8YTAcBDiMf6+DF zzQ6RaE1c=8O&wi`V8$MRoj?8n>Nvu=8L!c06}d7w*Se``&%@o_aA^S!^fjm&ac$8E zEndC>f?Zd;BM5?~&OhAm^tuT%FDc||8+j=~pLq1Q+dwP33_-CxY!(fUlo~H}DQ=I_ zSm>+*r7*YaDcyrw?%!Q3ZhxUPm2(nm;e*e7p#a(0%3KNYZjt-+vsa4x@!jc*Ys()) zTf)oCTuo|j4-xJ9X-V=g`}3t)CJutQGHb%vXXU7t+$(0Ci++#9#I{XkUS}tdoZ+*1 zve!wt;D8Qq171-0=JD(4>hmM7#fPSKj5JI9j8XdO3qE4oGOeu;W%7rue?Um;xZKRl zc#Oa2I?%e#9bjC=b5xOy&e`ki(Wu^SDN~V@xT`ZNjICHP48{@r$P(Qeg0w#`xHugU zd_A8G>&mjpYc~gs$^e#(0uU@!cH_3d?VTdpd@rO zo;Pjvi?uaHIc&DBU%9!5m)5rb{HLhrFNh3r4w~gLtWn(@`prEYfS?kPzP2(sD&de> zDE@9ydI7l!cUEe5*5!97Yw#2^ZcX3WgTgWq3&HcNGN;G&tMm=7YLx;ISk_c)jUFa=nW_<)C=@I~q8;EPb?vk9 z&xs`B961Y3{|hcrMe5GUc8Od!YJ@LRZ>MzT;EQ7{2F#7fZU?>V?9|BHl3d%nVU0 z%&RkvIOKDH%e9$6Yh*GeB**n*Jp2dV_IMzy!Cp96({o<7GajN;=X8xLKP*in)XnQx z0k~`AyZY+ubYn)8Y>;{8ug`9=iWt|rl&CFbP>1vSr%+wdXDYIHRunlO3-U*eoLYAU z6F!D2W!Eizdt^qERqRt?^~wX<>eY`Kl)Fc)iqLJg(0k>hGV}zI1%g!`{@u>co8k#3 zPYRR+Y5Z`PN*Y9{09YQ)k(J^dLC@(Y&j0H}CVRZtB@T8OQr!z8oB9)Fc*`Bj%2s@2 zx!B_J&T&mQO7Su|=0YKBCMK-8V?@ugCc{v%O%7_d@aY+Bc%p)GNCGY(GkXsm=BgYpHh<%|_3~%30|2n+Kd6W&4V{Xt^K*!}0MJAc%+KKy5qmxNg!<}huY-@^O0Cml zVLJBT{-5R#{BHmDx1w=E+cSsC(pRibR1BoAyC{<{gZMhO!JYKhAWfpjbv*3dZ7A^hb%@Vd%cY&&^A-tmpP>>ZkRK0)d8% zWAqe`Ghd(I?M>yFKzc~*)=+fpIvN9??L8d6F@sbR5vMGWx|M{BK*3Ev#`nTY)|G$d z)x#947|Rn8gbEU*V6F~4JyCBTqbGasx-~Fk{vqWZD27LNaKimTfBL$OXy$qo**|j% zU|-gwC+xaAGj!p>mNYE|#323^Xz5aTR#_-K8GYgtPHbIwyN9Z*c$jWz0acngB3wxT zN-`sjD?0lysK}ohx9`6_5c*&?m22hzsrkk3rFdMcm5!(?pQiXqZA#>Zh4|4mPoSa- z=1fAHO1Tk0(||~V^0Eq5n)NqzAMrr==s*Tq{eM6TqHN9#TGP0Is8Ks<37$s9oMO80 z+l2O?=0dwIDg0OWhE-B93KQ26lO!d6c7&#+d-)2gvP?@wR|qT4IKu;oI3^j9=gnco zWc1DRXUDYkxX{7y;DdvA5ka$uzakjOhXBA6e5F;I7xy(MmPfOZ(8TikMTXIDfJhX& zrw5-5=k0mj!P#KKj+jKxQsRhcJa|1mXMba*qpCJM?T?RamUqxW>AQY2Kly1>v`(Xe z(6pyC5vNMqe^ypDg21-4hLs!G+1a6PeNImeCXELo?bvLgi{K{zb~ww92o&j%opCBu zsqly*A<%YPjKaAOd21jfPWHu5pslOS@VcvQ4BFA`#DQ0n6;;o)-(yKl9BA6vKHIHI z@+DW*ptZMSUO8WZExTNhn(IfJt5$H#eTh{R6(*KhXiyJ4#b_ zu8Z$T=pokd$N|k_k~ZoC~?}RAYirzrHH}`gYBvRd7 z`7AlaCm?NEWm!h}T<+tMz%hj?i&xZJMJHOD-msA8Xte^*g;6nMl8JIdpriP{t&NMa zRKsY!LfB(KHS|^(vB3bPMO^0`kdG*{?Z9jRX^NMZ7x;&3&~qoYR=+|`?`LX^2%`!o z5fnM%=rl`S7_MUk;38`B?>)G4t#R~= z72u-#I!3qdxR|=NwYR%9)&-P&k@M@V2LQ6?NFRGx+z*x|$Y4im<%4$ux1RebBa$)m zyWwrNRm5j+`dua5)NpI2n0^2!dP>U+kx@qn2a=d{<}46C2N4x-y?T4EJfK|LSV{*V zSh}~Dat26L5~<{1KR`Z^qwK+Xo52y9g1bq_Ns2`$|ceG*5ZtXdmg;Xt)y8a!oBSJ$_y`$*JgPWP3Xv>}si|-qm|imi{b3?w);& z3>B{Pgf{`f0Jbaw!Si%}vte_O93(vpUcehY`-?taeSP?7K1-eMZlUC&>}5#3dw-D1 zLXfDI&gsWs;x1m|hN+W&e1u^qCMFOnQAY>61^ajrFWkyCi+4`M34PaWo1K%_|G;C4 z;vCuV2}aN&@Z0|8r!SH^S8P&v>f8xE!VAM@n-sz$YZH^@zo@N?w?n)sx6EBn2WrGY zU3QP@C>}^9;q|rb!F=f=^M!x@K9+F)s%AR*>c4Q~dZbuh ztBfR89CP8SGbfc>f_P!7CEajSJ-ZgDEfU#$D!;?%@O=m0%yB)(f?vezsw$e%oMc zVrP;uHL#gdTp9)uy5C!yp2@T)P+k?pa0C!vEhEhemG`KVGnP**MXP6HuIp|h8WVQX2ad0xWsYKK^jBdhj8XrwGxS(zVu6yPY)F~VFbn|SPW zX-Ba94D|iBCyeML`{j1*_?Mwf{tV^r7M4N!`y7OZ)I~eQ&+3;yOn>z&E`wObZ=%b} zhHyrEk?QLMC*Ty#n4)yZD+4yaWaoueo68*#Q%dK^red&4#$3j+WuQpW?XG5O4Ly*> z{5uuE>-mR~?NgrcX7z*_D%T-dcH&lHdad}6igU0#<>`N23~ODd-?orEv5{r4MSx>4T!fWX`y8B6bH$^vzD$aAp) z!aRc>*RHT(HY3cBBQKTDBD{wwvYFq*+?NYb%dm@2EKitsev8Q}0%V2Tb&wh?1BkCp#mv=&BdODivjD9V6{TTNm=45? z!BsEmoConq7$+_ayPz1RCbzd{pCEHLd>TcLo%tla) z5*OPQlTdgGNWR{#1z!n*@o6ezPegZG>OARTE=4MS{NjbfgUu!axiG-nH%{eCWrGCm zrVWTGWgnOwInYAMpif5!?%YL>Y1SpTC6}=$R>?SBFk0+ zU0tW0=Hd6%cs_@=;3hJ&e5IokSKnzELU_!ytbmS!&lxO@9Jx&LvkO=lE> z+)Zbu0gK6GSwmooX~%C2y@};e^_tPBC<1dcX?Z3bFK~em6fOw|lQmnF!%wI`P zLKXpG)wo;qzh6BQvS%eH1}{usX0enR}I_GuqA1HMxOL% ztIQdbk?*OU)Ky-QL({~49Uv))8~S#EDn?HYd|!Nj3RdslGf z5gI|EhXD$)%cz&U$7%~8!O9z4ug>;S-e%`x(`>$(v(I>>Afv#1}KL-{bIru|a z{)*2BQmXBW7O)HXQLvrxdp+qH(*KnCC5Ul#aOrtn+50p2NovF$-Nl@hoT<@m+czxb!dQX~I}C{7%=e-VBY3bt)r*1JiU;vU*Dw4U zJNPFJu$c7y3&+V77Z$?^20Q?`Q?ragHi~xkRML!^!Kwy9rc!N4kgdcZZJW*DHIlae~b<4gm>lC}^@n1bEr%1l-on5HJjG<`@?J*v{>eam{Tf!4CNt9ar;*b5)%ZZj$5t)xzz^gzJfB+M)O67Bz}>OGo2^Ti)Dg=}n3@N7zaHc8 zhUsI6Sk=jvb3=cG21S+=Gt{=fJ-YV?i!7^n%Ixug6fbV~F#=RL6PtJ`BN zBFHDZO&780UktPY?{&Iq$12+eiZQin*{gL=DN8y#04|g$c6_PKQ+fqLR{$N3S&M}H z2J@F!k~`=AuFnS^xU*>cpnB_VZ!xH?t*xSch4fdBk!7F3sq5Up{?3k9`JCNp*WT8) zFm+{f=uPL`5Wdj`=*1`AP|MCs({{&%W({1_B3c>_|=M^T9k)P-ObTi0*4 zm&`j<#eVW#-F*9Uee%KK*2{HaUoN{UvpSZRCa)KSVkdmkD1fZVG|Q`Ma1sbs3_=~t z$K?v|?^8}i$0^6>hxAw4g@V*@jecSYq_a%fkxNwobW3%i+MV4#_7+SE^ebVupHE(3 zLP!3(+ym!w8p8Xt9%_O+pizTSyKhM5WuUMVpC+(U=Ozj;9EulHj=cl@Ks_02d)|Z1 z!(RB>AIU1KPRrgopSSbo1pYe+#nsmUxu9+UIBbhS!14}l9{@LvI#pb67P}H%GO^Za z`FfZ0Xt1G9Sy4IfwLJv4DmWQjxr~qFYX9X##kG1txP` z&P4SV_NZ{y-IJq_5Pjc;3xk%74iQEXZioU%lY5u zlK=ONWdk?~5Zz=5b-^{V3t(%7lja3H2de-8y&M3@-XV%dTaEUbC&yD)P+%Bw&e@mC z&0_oYTFuWuZj5g#-=G~00tqfFd$_v@ph-cRYEJCpWpiyqt!y`4Tw|b(fTm-vE(oR^ zF`AF61XR#}?Et$Tc0EJ7i=m=Y!XqpFm&~r~zx$E$RwOlj6 z2kV97N!AcLv#2c@{BV#eLlz3Ze9>b^Gp_S7DlU!B0KoFUWuY9dFCfcT)7}+4C?i8& zIEo}W)%oiX8}_DyT5^pyw(N3><+#{fER<(1_y)^HLSOX?#5!A%J~yTurs7fUsc=g29jiAjne&M6Wm{@8*c9xXOfx zRPzim%f_$+23Xm&A~gJhzFAgWOl7RJmGoSsa8!hBttZjaHqEn6vM-Er^|vlsmYFON zD0W%vn!R5js5Woiy|gX+)kEQefu0_ZP?teQZKMP<83RBtuk*Czwik=*(w3^DlITPu z`j3JoyYUJ%)C^j@oILY_rf}I@MSY}~^W?(c#%EIOc6yrje=vuYpWDn+&8adx6u^<>>O@>#Xi!XB zH>&$x8rCydV}#m!?{eJ6giarOd70lyD9sG8iSObIB#bdBHA&)3BL_27^=A>;BQTrf z`G3lf@dM~b{V;K2i?TIAHC>DQ(9N0R;`PQmU; z!dTrBBV1!nzdAeQ+2~Kyllroy4;4f0nd(RgzfI7w)h<47n zylpMaFzjXcJ_0Zv!q`m8jze*p|&DF>b7ZQoXu@ zMSZ!cbAgJYj;w${;*&VTq={|}?>!3DetbISV7Z?u8gq0*%>e46g1*J{=O#dn{+HR%|BGz-|9XS$ zCaGgILDTa-rS5@)imjhHq?E|~3jEgr9y(PvDZ@}R^||flasZ&r7+iI+04(cUI^X?G zOlUM3aL5Ku0{rGBG9;P1)u*L&?$wNF3z}T*st5c+T1Pe8-hs!7{n!Do$%VO~dq9Yd zf5M1f_P#U-Jcc_0aMgB>v{;LdLWMPh6?tyVdX5IQWUK)h2>Y+^{)V8HNeP{o+|85u zHT?jec49?O9@ z3Y==tiovW5UY&1uP?}lCRoULzy7Pa6T3jq#q19VK*`rHG)56&90R>4HpfXT!`K-MY z)DoCUgqt%0Tk!Bfw}^+9+SQxdf`IKXY@!wq29RaL;rRC_GX3?!SX9fex^1=I{*A68 z(2Du$!jYPd4{VQh;)2Yrg-{&p+IE+>vI&>0hFr!2}szJ~AJb1oSU-lz3D= zZIX-H`5^xI1RAQ6yP)!bG^QF;;rhk`8B(vx(K8mi9)~9cHwk0=qyeL0(gqkf!SS)J zDLmX1W!TIrBCRvZr@3(V9}^SP=ER35vd&h#OXUNacWp0K4r*_2N4^W3xoBg!g)ke4 z`AoT+TOi|hIZ2nlS?E)xN3*d^)IXkZQe5Yq`21qf(a~WJ-#h2Dz_R_Sh$26KVQH*5 z`a)VJ`-PZAHQrGZlb#I$krcu^(#J}6(wGK=Y<-q-bhM6+1FS^W4 z3Z(1JyGirH*qX*j_$X>Z0%a&XM*aNPWyu zQ5nWC7a$U%GoFtty#4A=XqgSU>!AkFvQ1WWkrq`BcGl+V_-|aIdRD6Fmb0UBE`?joeQdW?$eDJsUMfki6Ls#bRWfEj|Gb`ZtSdC+u8JW8Aq!u z7Hc)ivtau7^^O&8PSNCxb-ivsmx0*e5-BCr*sM2*8G-?Wu0Zwu0!`UBQ#FoBpHd=! zua9-E1px;IX6{8CkW7Fh4w;0o-xZh>-M*eN*uY1*@nWnYwv(>0&ER3#d(% z89Jq4ybVwz9m6R6l5xq7mw|onBH$?IO1izltL*!eaX)ep!?M)IgP2PxxZl|5oOp(P zC%t>Jp~?V!l+fjD&2ODB-xs>ms>SdpQ2iD@Q{AR}8VNTqAV#u$EXLhxYt%N*v*-|R z>wI&QI3w?Oc=qO-4v4gW$biI|=O?_QJ0Oj~Sw{_M+#0jfa2(BZ;p*SF{zpjv|JQwJ cp276Ca<)CNL5u;Md}h*A(|ua`#Qx>~0=xK}+W-In literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00003.png b/tests/ragger/snapshots/stax/erc721_approve_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..97b18b86b54200adb4234080033deadcffc1c506 GIT binary patch literal 8608 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 Pq2g%gdamZz%Xj_{ATU(} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00004.png b/tests/ragger/snapshots/stax/erc721_approve_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..19d9295680544f10be004e8ffba3a129340f89f4 GIT binary patch literal 12592 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 ZLfW9hL7guiz&|0l%uFne(U)Bx{x9NDC0hUh literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00005.png b/tests/ragger/snapshots/stax/erc721_approve_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00001.png b/tests/ragger/snapshots/stax/erc721_approve_5/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..675b1ae48ea9e41ecc627b61a4bd8a0cc4ce1aab GIT binary patch literal 14770 zcmeHuX*65y->!}xRne*e$NZoKN|W^0F!ZCC%n_+L~?bQUlw&+fIk>J?}pJ_wj$@4eMQ@ z{!b-DL`3`}w=i?F;q*wYE+5184Go3{wuNimU!dK?`G1WvITcU2qsRaBMDu@<;r~0P zkYyJ_#mvbilxpDSROr(8cw)(C*iK(RKCu&7S9L9+w8awepJ! zI}#ME-HMPR$~P37V%hFni#Ld!F=FZ-$bk^^4+zNSS}3Y;{{w~FK;^EP*mGBCtJ!69 zUICck)5}rdLs-6c#&d~RKUJVZ`gzfg8Dh|f{c}fo{~p?i5wD#8 z9PXds7B+gB@*K1JYIDXNK zIN`Sh@gEWMyaPWy>^aMe_78=JO77;}yz&tHd?39$m?+kZvSGVa7B53g$W#T-hHrwC(V*_-}bfCx0kpN8{C)_k5tnTbD5@h7++MJ@lle;S26W@ zbX{%wjTnP&E_W*j?$`U-K^8yi6-F0_7jUdTHBUq~h z{Aw)qe={h3Z6^f#6I-gT1zq_hjdgf}UFhcHl5Sm7FBF3mk>~1lM6A76y@5aS%IB0L zB5R|R-^dMU&baZ>tAOj;PV36Mb!G8fTW?;venuH1^F*c4qnU}IuR=-{h*sYStzxPj z&3KB4RWCG24LM0laz{Tn2_H$@z*EMUx63_YXa_E=Wp!hGWkB0Y%k~$Jj*jIESN9V^#>?%~YmAK_JCW0Vt${9Nk&RN(h5W&<-}#ji zN=v263@t5Rhex7F20^foQ*-Mc2uMbm)QP_D?RBY`H=w!dswp2O(%MYNl$_?^boB6w zwhM|>gmb4k;vJQQ5aphoot-e3N6=bQ@|F+Wzvo6-3jvA}YJ2R|7P-3EwLwY~s1Qlj zQ#Jb4ez3dS?ocn955oMsQPU_r*pF>&E)KMnE9#1ujUGu0WZD&#S2lH1p$buGl@z|3 zC=KC7RFN2jfh&wk3ohoW-1;!HR{q;FJ~*-@$|*R%y(m?-VWQbU13e}xinK=?kFARg zmIbo-rX9u?0y$t0@Ha%P7YEBcr=lhf9Av)9os9g`3oT-*_K8}kD3TuVO@OQDn6}sc zfO;M*YnRjb>8aWYlW)hoji19t^)13`dk$1qln#2k^X~h>7veU0rH7NZkv9abq2TZ( z(v-bG1(c!ZKMM?)^BYrbUbhEpe5F_6tY^wy$;0AC zt1p+g^7fs(-lR>%BWdm@72?O#jLLX*o!R^U^b+0na1FrgEF&MnA@KWiG|9Nv} z!>O(HO0<6MVDqc_8%A6;-5U=6Cu?FQQ>JK&aftVJKj;bHkVAsW7r)!-KuKZ` zJAxwfYWObfaL=K|Y$r-P=tIExlU{QJ83gQ9P5$0rxKQ^%pLO22h`S|<iaWVfYFgfVb6w%ca&%X|+ZRf(JSSsFKPVDZ zdoVOqeaGbVi!rU;T@@ubT(WGU#f#SOa973gIdk8yixcH2VtyT$_mZ+2jzUiu6Vq&+ zOTR-#(_fvl_FIlt9t9O{-j?;Km2uVw8eKh-2j5(s>E^S4oL@Y|K*Fyrt^7{2tw^=t z`Qq1_=~uY#-odzUqF*~lxl@s*Eg2lQxH?I5;;R(unU1&Mc7oUL*FL#>0V8JO)b?ht z$8#;>tK0-_?rX!ziYU1;op9y_#0Q6Z9k6ru_^GHEH^P)-|LW0F%nS*FYmTc#o?^1) z1P`akHiz~O%empy-!shhsTUN6Op+=UO+#2tNf2QA!Kk3xXkkRSWE1Wz|In+~auqJq zfrw$KTHz=tc}^u|4rDxd^np5W{B-Zwl-yuuiL163`3A4K$8;x{XW$WZFLo?NF5>r) z#j+zA|CvKtq-Usxj~gw!H|M_d@yRA5sYFI0)n)0Z0Uk8uuh`Yq6%R87w&$3Vo>>+- ze9iLEiX!)G(^^G^Bn>`oDXckfrl+1nkd9ZOuR?Vmh~Z^kvbUnt_?7)DXQfcvfvY#w z#uJi}GczqfXWWiHFQRK^#PzK(A@k+1+rUYPx^=}4LZ65mOPL+G!d+h&x_<Gteo(SR5rH|i-;mlPtrv}OGlRmHt3HDA8ryT-;Q193ky}!G)vomSu z%^I<5m~bd(1h6b-k@cPqx)TERRbC#|E8M+)Z7;_Bl=4&mx$5idOMIL173g!K$Ti^6 zt9DwOg-LfKm93h$$NBd%MXBWm{z}9k{sE7X;Z4R{2T<8}1=oi;w^oK=T$MsWe%?#h z23sbkQ-mn)4{HSC?fCdybxqa9G>P&`PeDgIBQF#M2;G-KQ% zXC=q;Vm0Gry3U)ce~wgma|ZLt=(>HtCV;qn*K>$=-1drL1F<$bUZ@358I54l`*e}p z`a6{1U;Do*Ja;$qeu^Tqv2Pgy#bSLq)g>lXg~95k%#4aAP9gLI5D=+xw2JKGg%8x- zp2z$3UN9$OCzG4}uTxtMoOWbgg+f-1=E7jNZ{rkwb-d~c-pY^pY__Ajn5-Y$^?JhA z2b)g?+wUGs{ZDkq`eK;znT82;s11t97e%Y9mbGLDVUj(N-L{>E)|TULO>(Ro373s6 z+FZ8R!?NzW*b@MRhYqbI`L!|UQ>zFFHQdk@X2z3y(0GyCGjDNuxmsBQ2JcWYK>4(x7D6&tjUJI!2fVEX9Sq6aId37w}tFKKn>Ge6jr=`6~x zh#k{H7iPQ1q}hULDdoa%4?b129&S7b{b);zDgur2I4n1SPccv9&sb+;zkCl0@VJPV zT1x56FZwe4cM@4bx5;~rgcWY45YT^3A$U<5aiwg+`7%=K1k*n!rJKL!oOK1> zvlU>?sFLUSCOtR8^jau6ajEZb2q(A(v@Z4`>ZO{1h_#IneUd2Lm)scO zFYpW0-^l_0NbL$uw2>~Gm@KOxwXg2#ctzBXb-=9QW(C}*1F7RebDf10RN`hJ?z^gkNNeLo_eW- zp4lfVf-CR$rZb<;B2%{V9;9}qM&dSmrhT|7kyy=4?zm1RQDkW-=m*gLYKm0Cqp$hz z^}O~5lYdXWJ?uT8YB7?p60?xn<Qtp-In!J{=41KY)(q=JeK6Eo8G_xaIfWN5?99F-Hw% zCi#+T>XlT+&{*iROJ(#C0_Ob=Q(Y9ybyYc5>M#p~P zO1ZCo?M<^)F-q5I>jjY^k@@wuxdEqw<|~WibtB>h>A-kP8RVl%%!+42*`j3=lsO*V z_e5%$ojdE|nr5vqfFaaIu9gjR6qdXj=xksRyn|otdslBt5iUJ!WY=G;~y<*4eAJM=M%FsCkZ)DkLBLa_Y)i zx&uIzUA|7fk^}PX>N=DA_{7}Wz()MbOce`U+fd!U`_S1blM0Kx@&G|hKtVYL0G0Jw zLWw#enExYI<2>w5T6W$7VAGygYgJXrOn7hwd?ruVp!I>6w8JN*^SS zr95Oc0!q#l*g#qDy)#^7{=vE#&w1VVKLjFmoF?tS!Gdb9u5@i*Y&%Gs`XUawZ1;$D zdB)k1<8SqIl4ai?+6>c@ncZONRDA#@0M_!)p_fj^2*5gc%>d^ z_S^bYyKj2cQMDf(7Ez*nd^TPJyq$M8$Ye6+p9}b9Sl$#|z1oNm4C&5@7~h4 z>?Z*&N)3C<%gg@)aQwR}D_yyq6I0kttyTE74!YuCbuVnr(vr*f_5PvBl5^&$NuT*! z%-vo7DJ7KRW3aF}Ga8%XthxV+H8*+QO&E@gD{c=LMSgweVx8))aI<*m4Cht2n*Bs1 zFUj!pi?I~dR>k1gIcZa?hnJHbF1i`I6;Sf+z2VC+uu#OK3i8p_vME6Fqcw8-(tb2P zx4G`%Ao1(ux&EW4X+CRbJS2z4%)X}C5*uS&;d?`4C)EAoQqXCE5%)AwT$n@(&`JGm z{aPWYDQ;6$XGj$Jh`!~%cz%jYPBPT5HJ_wSsZ%JM(0DEOiWWcfA8;GH?SZs&tEjJx z%ACfu?=www_xnN5doRY+5L`8@EqxbSnshWo?&!A#QEgQR$z!JmWdRB~G%l0y>0#4Y z80=MNB{G$uR3E4GLESFu9hV|%Vkh|V=UR2UeNO=|uiE(jZrG+P!euG?bmnn#oQ%)S zHxuu}oHR)t72pdeu8Op8H2%iLaaKmD!BqYuW}6}6>b7PyO8&uYFDJTT8p5r_TE@vl zR;ViL2|%s}+G}glLrbu~UVcy^THt_CaoAot@#Xn+Mwg^XXtz z3*%NMFCO3fS0#1pS@*6=p-HBig@vNAi=UgM0yiPz#`(wb&A!()Ybw>n8on33-}-5* zdPX9Dzj3NHjjN~?+2l<<;`^%-oi@d1r`f>fboG0c@PD!jF!#1~N1pF~LaE2VLiALN zW-)GYQ5%vmAFg#^U=*`pX_3de!60S3~al;!@#3Kp3b+>*`%Gxww4msvlp#I z-=*IILC=}p8zsw!x$P&zE2sQ+o^c*wJ>@%w2pWliJMGjf35ECxH~H+~u@_-=wgTqF zh=^ahyvGkN%ATn4i}#R{FR*)XUN=BRP$nA-$j;m&({?Xnvx%)ZeSB~$vCyQVXZDAf z+1giNN|9KYa^UEv?ymXsG2;=+2_@Z)E^mqPdBNuay4d?VEuUre~(N@Yag z4I15V*4T6YVATX8hEH-}`=p&QFW}{<5z>!Rsk;+#*#h*A7ps&nuHKS`+jG*Q2NqV8 zvwlhf7aehpKI_MI?FnSs&g+E`dw5h-Uzh9MC2y}oDu}hS6Cr?rw=gq{spvzs__`uP z?ERJU=hjsgUpP61^XMAmbJFWU#)Y|?%j1Wa-iKum2Omd)6^cg0gTGOca$uKJ(p@ua z2bDDMu~G4(angd;i(_^GKXC6kvb-L;WMq(5xnS}WfK==CXUz?r4(T9P&gS`LA4No2 znS48^2P{_emxR&_@Z>6~g#Jd5cU_g&uay_+3%W#!3j`pzWH4YT)|skOJ(2yn3y~_~GA7n{54qy}iBdKUaf$m|A<+p@&u9 zrGJPG4dc#c*B<*lmT{v-46;{oEWeymbgLQu**iM-At3}0LU*kp;ab$sx1HJ=&XI%F zj13CXY}s(=m9u@RU9yU_%?)`o9-&k0%t=7N;Z_Zi{RDuUZKjun$&Q66Qt3D;MihJ< zAeY5o6#6a~U?Onqv00|OuZtDjHOnS|qLhvUj8Gs~R_#&j+*}`YNrUgjiL1qOFS_(^ zJWY?D_#5?&3I!%3^waIU^7x)v7#b$y$Y*`(2j)+Z0q;DM3@nM2O2`mLa|JMqM@8=asI5G_{@bQnrvU6Ga`Ay~YRrKwY zTF<l|8vSuw(`H*D zyqNdjmEZXiS8up|iSDXj&a(@-6)S$^y0HZ_Vy2~5kYng$n(O2T(8 z0;*s!TqgZKAw;=mVO=UA?&ryEGsH>h3R19E@q&{zs(u9B+BCQ+$jUD>vmtElM6Mo3 ztQ3HZSr(eEOIsGlN%`e+_8pL)Dv0s|_rb<*!-vgRJ!6r+-bzMO-lq9JrUZ(#r+*h* zviDOa^u7&ZR5`ej8K%+VD}Z@l5x&5BxT2}B7|=9SRpk~r(Vg#KHq}Cn?rP;;5rb@K zh=514#QN^hM0XX2#G^)6&je}+7rv2$oK@`@ykd;^X(g(pgrW+YDs2!U0;w(&o)aB2 zYgF-tWGoigMiH~XVH>1-C6-=LrDv6UT3VXaU|+qQrmyATzN}nyw|FBp<=5&<6h6fs zPH^i3ba*?Ngh%Ti5AD&WCqH=+p(v7)F;K?ae3&7Y-eW!Fn=FdSPr4pj{CaCsc$~TK za4;kZxm+(ZmW->W6Eso-b zL9;Ye8XsJ+d9zkNJ8AFs5%=W`Mvi>>%#yFYw(3(&%xqbczI^W^ZZ!640}x8sU#U{u zjKa8s2v;$YYZ2Ka0n9U3vqi<+ox{CGmH2c;moN6OyMp74u@wh8ksdDa0 zT+&%9CnyA4TUm;8NuLGRMtnUTb+FvqhYaZNckfZ z9f{q2Z=Yh+F%A8VSr^BFiq~G7((?rc*e!V=UU3ZEdBLIce-b>RP+^G!+VHAKnPYhp(>Az-!7o zx#RTgpw_3KL>8D-JSd9hzpQY!$Ryu(E@Yp4&aq>ty$(=E*JKk0`(3R*dPk=yZv>^M zOGk^oM54oOpRd=g?ec>^3$+0Oq&->oqU1(aSD0RMq^jHdImKuLr+q>%8xZH9G^=Q1 zA+&5~j7Um1jC+S8<)P`_pM4KSC5`dL!w~l9ONW;==WRIyi$xXIZpWc7G#`&UZS8+9 z%>3*&_wH3fF#FSr|D=iJd|AW;Ew*LRh9Zx=uisU_hI^q%2fJH;n9R_Pz359g6dOpj z(1iP>!h`EWwC~Y-(OpE;dURKpHz(!-jPI#TbAwys+PNN0m#2hF4U0hCH4wjpr);kJ z9y&Ppp`00MgRrkBg!&)*Euzf{_+75IG|YEK7~^{j(-KS5VuZtQCX`BJ;{`f|+uIs&J~MW#7JW@w8vHot8gR)E}rN zw=t?Z9u|=m{61Y1aH=mu4eUf}72`J6K*sUBM<$S8Z9W0O9?)mKb1ML$#D8Zv9mq3O zD6M1l-sk!7=?Gq2nNbnBl{h%`SCG|JHn3_9BfI(x739$)E+QeiW&pxs?nk3YMhbTx z1uunES5+;mrOavIxB)Qn#Co2NJs2N~Zi1Gq%mVry{mCC-7dBl(rP1&!t$wJmu9uBkT<;nwI}>nU|ZM;?)c~X zS(?9r?B(AoS7x|mLtRn!UejR-w}2<7jgd?kX`kMpwnkzAB@UbTA`!R z)n@H5^jweX^uVm#eQ%L@=!qQBoKmSh*}U?~{SSrGIu_$cj(B?@n`Tz<+O%Kv=_S9a zLMxq_L#Fat!l^{+-TSj&03g}lrW(||DWk9%h6k1BE0j+p{b=^}Zofgl?Wa&!Q!-ly zGA86yX*Ewx`a_LMHctbyO+p4o!r}Spm3YehMXPN1<|&uHzL}D2wuy%M=Hn52<9@E+ z;)W)OX7cw1Faa528`mT*Qa_a(a*DX1Uv3jj_-=Q>!vmSvVPjgtqOLF^&fP+hh7{CG zq)zPEhuRZ>0#1LUG%mDJ!$BfGn)UiPNSPp3= zs)~5vK>(CzGMO}5rYBd}TX8$<^6CZfaqUxJ3u68&U~^FTzYbhtiMIPg)8(#s3g&u; zMMXvJz|YwHG3=Z*2l9VbRJegeVva&w_Y?rA)bCVP{StZ%loTY-ZwWobH2CcH;lW~hC|`r6B~aRGoAimB*n`ogYb?GItw=sffCg)H zd{T31)d>N5qXh=TSqCJ$p@QQb9~;l<70xD+{6c|^_ds4A>K*D;KzT{mHwd*VBT;_y zz!o2e79-(rH8xX>ti>Smn`24;9FP9THj73^NJ;m}OhUZUc+thRfhr_}xP5i2y9&W- z*^%w?WSy*yxS*mV8eX&pMKwwn##F5)sx?Ug;cRAAl}swkopj0gQj~P9f;MQNeb{?a z8AYTfls0e{LRdvRyG0@#lM%AUcwlINBc#%fB*;F|)L*Qp{@N!{V_Q~sPNY+4SF_(` zJMj8l200LDs%`QGdNL*kIh{}C-SyXYPCcSF!_IjLKl_j5mn?C#OH*DIhmk z{Gh{hC(oTtcVVkF|0DAXu40_^o3lGtCk+O4v&z^(%{hDe_hbasDDK{Y6qAeE4s?cJ zqnu&wpbc$BS-t+rwYH{`J-a%U_EFA5!v25Nq^5H3V3r;EpL%hIa^#m!`X~XX0O4hv! z#Fq4a&qka1^XEu$agIuM|K(b?fd+suZJrnu+AReuQv|{>nrut39vf}8oOrwOBmZ^> z<-fy%_+QaU`v2$QzmBW-f4de3j8(4fiUJ(D#kW`nK@Jzh$bKtg)%>X`y71@%$bm$B zCVs}+uxh#8Gp{1?OF#j6hqDD^MhFqaKr%WG-V*T4asZum35M7M)!1_5o{hh1#NT>) ziKzM#CqfFvUInSR+R!(Q6My}2w?Q&ipeRDuu0h=NeKVfXPnT;C~c6hQHSPj*@D zkI!woS(jxNAeimCvs&8?G$vBwODy-)*hjYb4mM;<3mW@qB~hyTANdj`AoBiM#)o%3 z+gO%m%95r?-|H+YNufyDwf^xhFBI|s^QD)Oa{A~*zECQry^dP4D+cLrZ0_3pL(T0d z+d%GCy?H0E+%*5}sK0#m?!mz-Z;LMqpy+d8NQMSZ&+SpGM#@~NRKbQ^{bhfp6qoQO z`X?JiZc7!*IQMnVZAN-EwN|l(=u2z?j7ojCcTQ84EqT6xm8`aPZr08g(wXR!+>(%t zKh^sHLF^%g=8lsIeV@#D#zQol8_rtckjJvmO5apVe^&;>fQmpUjV}&_9iFY!(D|@&(z77WmGThpnKC0(xcC(srYI&hN z#j=bu5=chp0ZMr!)^z56eMNPl!E_e>q2?dBJ-H@iSQ5Jh7=8gm7Le~U<1+Nnw6;d+ zrU=u~t(ON$MFUqXqwdr#a02Tsqt7Xipe5k%RFG{K^JuK81PVnUWfk*!kP6bZMMc zp$+f$HE^a+Q}94U@#uDWw94V-!uE>4-g4YTwSkDkPmrLQ70CG%2xfle!A_q8%XvTh zjI}@DZrHp!3Lb!5XElrfz6%PqVAow(7vAVb1@3B;j=*x)9_0U3)0*BKC~+wKB=YvW z?A}T-v-dM&I_>oord=Z+c9nKfJ?=`x1cOv)7UJd zPT637Vb7bM+*Xzg9MWW)+?eyp z%;cea0(y&T{YUkg>*?SZpo*)7feQH#Q&`;(a(BxQ_j$QS=W2|qw~ZAsy};9;!JSCN zq&3#>0x(&|e*}Q?x@DlZgDPxC(e#yjd1msa<|$INIi#E(>OR0@_VY2YTwWw_ zV14FBwnLTXRq)URlbo0V+`b7$%gRXx)RM1pgGo{E_oJ7j!tkfiZ=l z$m8y@Ixcs?vtC@Zu<0=$`3%KCIZf4OLyEEm`_p;AV$ zb{E9VU3pyqJJkN-e}rbr%}W2nd({_u%x}rup{>@kO{enyzxygD3|ZC$sMzu@$u6dEs%7DM#2Xem;z)E|i!Y8G#8_8J!Gnx5 z9@FyxkCI!{t3Ngy07}Bot=n2!0#rlS>^{$z*(YI)#XY_=*3SVqx-|vZ0F>Z7K0AQG zgC`E`NG-m2kQt9S8HSP{Y!%?AA@n4hy zY2d97P|nB7?D-2!od^6EiXwt>!=GR>kPPg?Wfnp-X+K&P9s@W7fm1bhzT8vo%?bZ( zF%FUM5ofI5e6#NY88=BY_nD!8s4vJEPn7ckTvfzyQuR7=v~tD15s;?g@m5QY-*)Od zJo3s(uZ@1)?`a=0?Xf52`3NwnNB2XH;x(71x2KlY<> zwC~eB@>8y|E?>QA8pXEi&5wZ(7r?F_`hcM*l(6XdO~Vecun;I0U)pqBvTGFd$B15U zj#!{VgIZ>6taIve)5+nC8%g0?y7YYVb8O>4)6`@H+o{9eY2b!|GmqA8nZiE`b5ZuE zQ){BEb)4+oV!e-A6_KGmAG7#$<(e1JHp9uHvnT(8@e9#W7j}LnuCxLlBsEP*V_^(h zujW%3pe4zMRYt^G_CT3+5t*>O1w~D=KixSu#YBtPFdI_l#UTGE4kRkn4YG4Of%oils$&3;ysJ&#Nu;SUkPiN(IK2EE;N$ScCbgNcqC=P#aBI=a5NnL5 zeoeOt+^d#toPmK=nruBM0FMf@kbY3Y-^4zg*v${(u_i2!zewC4y9fVR14vyZ;_hQ= z0HbMTRmlb-o=7PV@*-TXvbXGi@J!6T)k*+NgD}DjDF+BjK96k>i-ziR<2rw4D#*%v zX!M)E*QoF<+2f>Q@4Usixi^ffOw;Dvd>8OP!O1gkB7~Y7qS!fMbS$v_JhbWOq(B~I zNGVukC8d+O5bnn)Nhtk25UMVmO5Z>;-3JounrGsy@?C8*!~)O$U3Ja9%XsQY!x?J@ zaY!SPx)NYPBkdm?KzWq{6oL%`B5MVYn9V@ca2`XKHJ%%6R6lL6Texq({o-4x6rCCM zXUFXw?5ji0_DPWMiLicMrz+#TXd24?&h*{cOAUABW++uv^Gr$2^yyfgQ-liSB9Rqj z@&XQrGY;aezBp+g1&3pquPImlv4t&$N2>@LJ@=Teu5X_CT7&4eJsq=EP*941=NBIW zDt_de+yJ%0xLrQeR73@`JbfHAIM(@%UnxI%URMwkUQ_{(jE+9u()1YSYft#|8H}$v zgx@02JY?@*4bsVbo;&QPt?~K~bUWV=sT0C7uRoScC6uw`J&|+XgJ;YM$fo)AFpz*M zWn3pmaJ_)U?VM^}h;ygN=kFlq9HZXuFWS^jDjoK|{m{WpUSai*Uu~jurybiH3n)%B zKwbjOZM8v>wUl@@LjydnS;gV&0B0*V_P2KfP&Zjy1Ee%Kkv2rt`kz^*D$2*;R=UUqxG6tTskr}fcC0@FQN3Ev?0qB z8qX`77dX3eBEk(pnpiTCUaG@L`v}Y3c3O0vwCEX>ls_2foAfsv?D_Aza-KsvqO&wg zKTPI#T6tw|u_nkFW<+)Qp5*In`s6%Xfwa%bJW?I%_2HrXz$7^H6d<~-QXpGH)Qzs) z%S_+O+|{EKKEWL126n5Jiy(QE@0tHO43xZU;RZd(Ou%r6{(NThya$erA-a(u;`bp&4f2| z@Xz3l4K}wL_kqn`2&cMT8xlE`dD^<(%@h~D@Z#zZky}n^+YB-J s%h)f_n92)1FvY+VIm!Po^CDd94QVFVaeoQ;7LyI4YjUSf+v(YV0|p2E#sB~S literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00002.png b/tests/ragger/snapshots/stax/erc721_approve_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..186b27cd4af645b70c7bb9f5152340ecab64e171 GIT binary patch literal 16035 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00003.png b/tests/ragger/snapshots/stax/erc721_approve_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..637827a1104c492bafa18f3c3100591f2fa053f0 GIT binary patch literal 7918 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00004.png b/tests/ragger/snapshots/stax/erc721_approve_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..19d9295680544f10be004e8ffba3a129340f89f4 GIT binary patch literal 12592 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 ZLfW9hL7guiz&|0l%uFne(U)Bx{x9NDC0hUh literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00005.png b/tests/ragger/snapshots/stax/erc721_approve_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 +38R&HWIKubK=R!m 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 Jb`AdMKLBbBQ%?W@ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00005.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_1-rejected/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cebc8beded3da2cc390e824ea38eac4f84cbf349 GIT binary patch literal 5076 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 +38R&HWIKubK=R!m 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 +38R&HWIKubK=R!m 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00002.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4e99e678674a65bb8ea7cc0b69ef5a7fcf78bf14 GIT binary patch literal 15648 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00003.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..97b18b86b54200adb4234080033deadcffc1c506 GIT binary patch literal 8608 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 Pq2g%gdamZz%Xj_{ATU(} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00004.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 zcmeHLSyYqRnxzCq5JO2_MUg<&wG~kO6Z4?zOu6rTebF54~1D_&=WSob#Xa zop0}NuYEfh7O>vb%GAKXVExe}2TvLpd~?shVAaF5tAG(Gyrb5@VB=qp9z1Y5qe3Q> zBR(duRcEsJf}g5yhOIias`Qubu_iDRf0L7|iof4}#3cB7u`?G}hpnIf$?sr*_afGs zXuW>iVj$)3_k2C13zu$ zN}m^w>KAPOEA~&o-CagF{#ke6wE|okp7=k2pV8$eWKuct%3<63WpXH+Vs!RKIjZ=0G0=7W7QSQ%90%9A6}LBn=9NjL!MX z!sQibjzL8GC{K_QO>ZG%#X7v zlJH4>R%WJ^`d-)BE2tXmGJzA1jHwtrAKC##(MFtit3)C+yd0uUy zjwHpF4_YWRno(Nyo5g#JX3zI_d<@~Ilfo^d`&fIKE@5n^!Kq-88g;oe=+(Nx!^pNs zkZyk72?Hez##2@3f}V3Der-%<426%4Fd}U|5O+@YNQMILhhP8b5t%$OmjRtyUdE36 zg3ZdRleRxlT=q&H_FA{%-eL!sH`PLQ zUzGAGDr%XW7(YKV)6n6``8_?#W7~Tm%a&*~TDzS6VG+v{u&xa^HUvj^j_Wt}D|oa= zCwA0G+f#OIKQDWFB_kGrD7jlEV&_TTn6Rm&nd7FL%66%>xV~50aja0IBArGoEESF$ zg1XI~V~yBdO+lF!YDix#`U(ky)O`GvcEjiTLRVkId#WCT2EDyVNt*|cBZ{{_nJ%&k z7JJ=$CDMD+H>s+t3e4Vghwk*vt+2pKi7{@M+!;e!tB|2K_A3F-- zICg)R$%(K?6zvjC0DNNS!MO(+(%}9KjnCyhj}t6LXbvh9$CV!Es~V3^@cf24r&KQ+ z`OHi?#n#pquD{H+G4#&%7=E(A%p5uM4hbccA|ciwb8~awoE6>NL=T6<5ekKr7-pV_ zpUC$eW6oo1)dbgc>8fGwRz2!XK%)=)YFo!L4Ufm$`ewW8dG68;q(Ug2Ld)_N|5);y zw!=!gpqZ{J0l?c9IVKW`#>P|}$+G`)>sWi9+lQbOW2DKj9YhzQ(Hdtn!kI1Pu<&Cbn8|P`)EWdF(@RSetXwAZ3g+ld zJ5oeu&&UZrL<(Ojj;&qJ7C}sz*bGe%XaQrThKP@}nu>a#L5OFX!qQq>QFLKEHQcd` zlh8l)3=(HTA(Q2W80yG;Jz*o~#EG7Xx%TtL>nx^GbfRyLyC~AJ47iK8KR7&Bk*`!| zeY*W1CV43oBN61rV)J<5FPznZuw01Q{Gia%}ehJ?zd#y9xOGtWzN2}2l!!NG#KNOlhJo4#n>>(BKzq{ z9Bfs$b^OrgHY8d7C>#bWs}UyCbUiP#221DKt4gDy*o6+h%dfaA0^{Pl4^}>I*lZ~R ztqEgmj$w1^WSxFU{dZ%@w4jMrfvoG!CpXEhVyUT_*}04ddlLPTi`C4FHIoU(oT5rB zc=U$))kI^rS^Cu}gAc910sJd;S+^8lI+dR!s?|?M%f7h~qxvvyD8T$a2&zjxk=v}V z!G0URB@43|OZqDfIaVqDQdRoHLX-o=>oSy}TK~+Yk(s7Yc2$-3L(&}Mt_TGz16F&t z2sGTKrrG{kS)F3Cix-MWS1Al+C69UWvPErkWV&P1)rDYvi{ou{<{u>}v7=*e&i*jA ze-wp3Ng}8tm;bH$8s8BK%PQLe zOrA#a$>Jd=eWw4`dMm8G+of%y0uqU&5skuysMcd7CzzxJ0{(&-0}Wc#CFbk4(H+Ak zPXMnxFd&EsG(3I;`P+W5PAZko;zH7+&^C(7D)&662(RjpoH2{KTuJ*<2g&I}7p|BX zJqM6B+=NM>2HYj?_61)nRdm7M)RKRu@B!u}aU=K(JRUEbDX-uyu2i|B%RQIh$3h8= zj*fizfZctrL>4r0)*bKd>&r~90bO`8$ay*RyEKJ6>at+_LiJnvAE zP#{rWlejzFMMuBWaf!a#<(27M(l6~kTAZu6uwK`KJ)u;|9P-j<>eA=Vasb*-!IY?B zNfw8pHia}A4eOCGmgMf6t=rtT&ut7Kn9fdb`pQ*L>lwKmmtyU$mPGf&T%Zfbgu-Rb zf;17w8Uog~Gnr1~8Ch9L4STY^Y|L@~)Xw2Rr9$zR@o^~)>Oh-KDn5j63Tp`^z-Y!E z_@D2yOUcB`hD@7 zaq;ca{JvGUV)e#PIS6IbIhSIT6J(+wA3`_r+l@G~ z^Dw)eEX`>BtFE(u)KS2N0bBEK8`;CvOLg)a9jcJGxanS~_CRz59Z!I-*(wWqZ7yn4 z?TFhrJ?*I$PqX_@@zbfBcr+=AOl}rQ{AUg$N@cm{z{ApX7cvi-)ZGR&{*rPTN_z`E zzncY6DQW+^C9#n`Hw}8}ZR1FiMrDmgH86Yb3y#4Lzwditln6)=d4S%PE*xZqhbLKx zcOBQF=$)ONQS~9)8>DOTX zf?UM(b&eouK;MBq|5BTkLmkOCAASje(uFhLtmeFp0gWdeHr-KYF@(t;cuq1+x(CCl zlEC5coT=H@x$ISW>zc#%gw!HZO+UrRcIl5^-&jW`t8!0pHW=bL)mb%*v$M`wR!T|Y zb+-qBA+(`0KJZHKvSzVah>!S+GZH~=(ZI?&jrTMg3$sW7@`)0fP|D3gpjBC=}i)&8W z2=ba*DlGvfd^z3Yv8y&0v?b`rurs5AU_(2LGVg=7%^ZZ!($^q z-iH;lpEJXLi!`@Cf%K=e#j2CsrCCg+*vH#@NIzWZFPK8q0^)2xHv?L9Slcv-*Df<$ z*gS`3hV%@gtc8*p884`Os62>35DIW>eYWS%D-;T#2wF)nir-M=`Q`b)-DF@7lX?iK z9Tzq!fEo}75KPM1tg)6#1dP}AxxHwM)&{{}P%5cHSrvft1kjDlYu6xA@MluZ)YL_$ zC}(NzQF@eoQOh$N$aTPA-xwKl4h>UdJ^@qp z6}Yt%oyc%4sP4>vm>>C00$iNvyDY~1wM?0xtHsH-}ifYy`Hbf^Znuw~E;J$3yQ~m4nX-6(@+dHI z#-2WLy94;ce&SXPk0cYj&aI!6{#}z+)!tjW_Vy#y$7}canY+BKE#@i5>C1O0F}v-EeT@wZYM&&57FZ!a1)USF|e9_$dR`Z7%NivKRL zjDtb7m_EInAhQ%eq)AnnxbL@VR}U$0;^jbEe6i1(Sa79ebiLn4E!7O8*@7kET<3P8 zjdh(Xc)Qb+*EJ*BsriS&q{^_aAee>lVyDebi;<&tGHSz*Fj#54BQG$rs!Qpgm=AnM z6NP`1>#MWS-jw z_{fV`IF;uCd>{K~{!bK^E1roTb+Ib2cRS1kH)fT`LjGs38KZO+qlA3gnAp)3{7^(d z??TZ>7V6J@IjVY!e5P@lBnFd!V2OQZ8%fj_OSQJ%Weu0xjN$ICDlJ{yZgkh#9%TdB zyM%tBw>h1C_JwET2!s_D)+ni$!c;F(j`SzyoNhYLCn|7KAq^2di|VM-L9d?dN%Z}0 zqqL<+Eq#jzj#CsG{V@Ohqd=gK$!U^aguOuZ$!`60NpPN-i{P|%>FSrn!k>{^9=7g| z1JuaonTcT2RLvEMDh1=SdJg#U;A=%9OM0u5vWZ=r-NLyy*q#(#UcZu4Jmuf;>uI*6 zAwTC_m-h45n^{tvw}p~nJr8|nOG`^Zm})!5T2L(^^_P_p+|K;0p8drhld&oVn>0xs zp07kx+&V3y`I#qoRF%`Cc#y&QZ_zxa$l_FaO|2dvqYT+dDO8X(NVe-bJWpLbNpGy) zp;4Hcp=gIvXS1B`Fvxd&%DyM>0!tgknDDLT;&6Admx-!TJZKWGY6@2uIY)_t9xR!T3YB0WYv{8-@Bq>qnv%=!frmp(9QuJU=HaZL_q~4oR<5a6XNE z3cZ+E*eR)m=NUG?&3(sCr2nN`2jf^()l=N)=BtvH)K-i-%fDv6ddl$SgnhyOmhB>92`4Kp3Ray0LO|oR z!csUVlsWdS}pXM;CHE-i3z=csDc<2~51Le>KuI@vcjA$@_+)g|`I;7JmMEc>;I4qV?L;-$IZ@Z{-JFEqL z?V(74S&2>N4k@T<@*~<_u2SyItT5|Pa{b*#p|@EbEKvmb zSMCKnWWrX%^C|SondE{8k1I>Hobyd!&UzM0EqC#C`}9EduzcEddd1~ap9y7}Br>@jzijHM71Sf)-x)W`W}^Ap2Ada4K)L*U%ZROgi5JI%e;4dYOJ@*-N^BH(aJj8cMsT7G7q1(%F?Yuzskf z?uNkqf>e^xWVCt;o%s_P?IoP8r{?0T3^U5UlL4yC5?EBvzuf*R+N2gG!M32DpAU;> z_xro5{j?t2TC|5H(bndKsSpa{1+Xq_g#jP==l$+ zQ83fBsA9pDu)vVj8s4Kn4%ROUKV41)8lYUKP~i#2*?8=Mt zkptIevjaAZ7%`iVLf3@%)(>F8RMC=qrBZ9u> zD5~i!U4KBLob1bfxIGdHFW`fY{1ZmfMc*G)AjXa;dW-WNQVOe2K3e~6XU|DR!?&`T zktfIGUPPVZLZK+d9Z13Ss3!ZwLc!dQ+-oDU>r&j&8>!X>CD>N#KBVyrvsCVt_|@jCF6$z-ISwOsZWUcG)CD0&n^*eg&_j$L z{k{|Ts1{c{=Eq^*`IC1dpBcwJ1o+Zb%F_Q`J5DPn=wq(E@OMrQC{swpilzRDM7}6 z7I>#0&g}$gJ&zJJFCQJ_A*$WA`A}mx=|QWZ6-;>|wn7SaBHJiA_EnU7&7b!J5sD^4 zL)5n|?Noy!wd;A|2v`43G=Hs+T%7IJmkeVbCSZj#C107W;hiQby3LFSJBXi7=$@}K zLhR+L4qpHCr{arLL^?M+h%RPBr&~_Wn7F0Bs~|tFomvlRuJ(btKfej+`kzgYBl^+3 z3bn>I)%dc{*@)p^1@^7T#Wm}$90OJF+NsE>C@!0 zS>-OSElU`wmnURXC~!tHiGsy8JzFjbm5?^P7}_!1UN@K>_ye}V?i92FXDujwe5z8j7IbwU z`>j6{mc27Yke@}{$eb1|85QoY-f0Fq6pq+4O(YGs?1!&2oU^eDj3Y+JQ%%0UaJYW> z|`2c zF-jyI3qJGPB9h#HL`6gw##ARRE><1PSpO>GCQ+xt$@#p4{rKaTlB<1%TluZB-1i0T zi&|9SVDUK{i?heNPBX+MY0lN_qAlmQ3uODU=#`n6O2fggbP^|PdW6qXK={JXogLbn zZ~37|{h?S#hx$JAU#Tqo49Qv*hHP_jXZ}y2NuSIg@6!qf`8^A*3z*C2D5=8k)1@5ixpZYV|RU5WSEy%Tg6+xXL=GQ%*t}26Syd;9gpkLsO6VwtU-t^ zBd4w-osOfTAMZtN*tad#3v{F_w7CCb9pqE&rDP>~f1XJIP$fzcu8+<N{!Salr&I{b4OCiQwQx~zVf!w#!*||Gd%${DH}|r28%pm zW1eMI_45~tllxo;cA;m)5~Sxf*U+0}GG^?GNU#GUDr%|~Lq0e<5~C+$XZ(R>XVN?P znzZj;n+^RH(ku!JvCSY7iHG>>Im44?o`gLz*{56*hei>6)ehft7b_4p?%l~v$)3~; z19?Nu|D_pLl7PBtjhl3J1{L4)(B67{KT<2tY{Wc+`yNw9#aOw8uJ$KRb9~%I+ybrFpIu#)K#X z+IY7L4=#7Q0!Yz7#qgyePie9BK4H7*FDSAJ5jV+jpDLv|Vcc6WCf`#PPjfAhbZcne zZxd&V&7Cd7SNUt4gWbGIsNWNOqUg5I8$a(XDP>qgq`I9 z?nPwQ`w`^TymoIfO+-{<3t#YE;=G+5GzF_+x53_Nx;DybbpPQ%ii#=h)f<{e$D5`5 zJWNW?-a27Zu>7`nS6JG)*~$e94L=bs9aKqA)cr?_JzOD}cH4RY!(^KQJ~3Kf!5KH{ zt5!y;Tg+}2fdA8dcOcgQ`=_4h-%xCLj!7p?^80H^i*W?gxa@ZT99i8e^%54cl?wpC z(TxA_xo$fyM~y(p#b*z>8Og1a9$%eV6T^*TtB+?)yMPYT{SXIPN(-BJ{@Q zy%UhrvAZEA?#T|J={_C{BW3Pa?}x@bvno={8OG!Bb4-}h3?C*vBboO5VB=F`;yz603a(3$|fzsl8QXO+*WqA)rT$Ixg)D7pq7&?BrTUJnXy@aPT5#Y;?gKc=$iTa*NrN#XAmPp)=C);-sUjdql4Y6 zhP+;~NLIrnY_v+*y&uNEBM;xLYCF1XygazRJkxZSK6S;-IIFRopD8xV=gSTJxKxh) zPa;Wu<~9l9(l<3!9l_o^-fy!TpqyKqwB@P7?j!*ugwJ;m?_@x}ze7l2ARBXMuIBOU zy{0;|yp|kTsAk4J5Sf^RQbCx_@CVHhR~H4Ibjc=rIs4m@=Ix1vVFf7!#BlB?dk{Sb z!V90`dc<*0V_5Dx+|0Lm(RU`H4pX5Q^aB2NCMn@xEIpm)|CXQYOCIBvy#Dz`%N3ui z7B^C@&n+8jS<$h&{+je;Mngc0Db?U8Q#7@IU%zWPNGNC0am3mkRffH?^88tx^o1jj zb|MwC9tKxo-`4gcY|`jCYesP^+A840!sy#~^V>m)1Q*X}g>zeMpvhm5Os7t?#|0`v z;!?`u(P9&(MnziydX{;{x@uIi#|em=T(?`UF>;`W-KlFA8M@g(e^U3Qto9X2czzZ^ zUFUhkg1TC(P4kR@FENjG;+FIL@uW6a>x{pXo#4CFjxMM5_<8>ZyDFxAi=T>R{QSov zj2wvS1l6T*|9IVDK+#60{ysRk-`w)Mfd?8m#dTX*@>Ccrr$}#1Y3T4A#h7;%<^Z zsC#w-f_$1aM{k=^hzx$n;0?`sBl+US;5=~QFP%#bVsHe2Ot5W6E1E5abOxH$-6k&_ zb^&0G-xPW@0g{&41RTG0(z6&6@8M*S*X8=RCGu};=s(jUOFnjVh)KPh0mBE|$RsUJ z(hgL?4IXg(#e2fo#=5d{jAa? z?{))Pk~6kWx@6WW1BO${CrKIpD&##ZiX@ujcE&$;9I%x)d<%9U)bnlB0a?2t(`0=H z8kL2+_jUk{;&|e0E1$!(Gd@*3QbgUN8y9}7e@zl_IWmv z0eIehaEi#(E$p}&sBSe(3=c81K!`Blj z9}_)h{r=+hH?Z*FtLsxAeE~YHHdV4+;q&^%Fyjqu8F|_yJh-UOM1JpHjm7uvfPgnG zjlS7gH@V2L>3Y>0_955*_&21>`<0N4WtqK@$b;v(fLF06Q*Zcoc*mUP^B|#H=N1l7 z(#OvWJ<-XRc29eR7?we>rZ<+0>kRlBFQ4*=4R$crpC3;aeiU5Ykd_=&S{9y<5B3Yt zoVW$F0wjB}RDhoea7m@I^uzTm9yH{CSe-vyyABl+zIQN`aAbNjf;JK1~qA+234 z@Mo6umUmaP9Dnt!+h&NS>W7mj>Np({3Wv*l%h~mtt}<#yjvuTWHIPp$@hZt|}!|j-s|9r2Dh!Z)}BE;sU&We7dgh+p1*O6P#>3!TYarRTTmXp zbAQ(Mte$++=o(Six%K6Tx5{juT~JZows`^K<|Pi1a_O&0II!!jkjFg}c|PHMW-2*K zWtabWyu% +38R&HWIKubK=R!m z(+A@?uJiA_nZ5-}lLQzH;GBeLQY+*ZAG2U@ ze!erHZU`NJb|-0!=U0_MwGg zMO_MCt{cVUw;P}9|F%BMj8}Io12q1dR8wbSO7prG*9c?(!OPisFD{IU@0jcNbX9nD zjYR?Nc~8Tw^sU_k^WQmYXZ)!6#<>cxJOBEblATK#tMsEk22v&YG13?Q*QNrEA7g4K zw9Z9APkoK^baXg1xBJQEKQp}kZ}%|tA@WIYVf$;Y3?0G8KuOfUU6yo$0Y56q^xwSy zq4i(-(m2y24kSQU@} z-j&Mk+o2VJkR5pvfj|^sNp=E)@$*lbwt{qcwmMt+V^x!8b~w5f5(_IU<+0RhpiT>^ za+$36!v|xKHdNBvJIix#9PqoxqIPpTJtOTkKsik3X!>k%B?p)*k1&r{9$c@8+K$ed zP3B7yRe|HS5T3j#il$u>YzGwNrJ-xJ~e#hgz%{7YU2 zvpdOU9(^yCQKJ-l-M4-VK9?t@zJD&>#o9W~#}Ky@sinCbD$QT)<=*q~2k|M`#|hSM z8X0JD))W-7Efy2kA*?D2UE!<_ozsoz+~g91YX5G{iM&mESrSqgPtAC$dGDbS%!6-~d{y{4w%fCgx+QELBwOuczQfoX7ELk^)8gfvmz= zCvPf}+K*Wd(kd{0{<|$;VgaPT=Ck+Nhr*>ieTj{6syk%)s|gsfQMTUD$vpzPR~r1+ z)%e~iUkZ+3h+`|aaEk@Ru}R}(KysbHP*9hGNKQ~^i`nNP@?OJ%tPOjA5blivP`*`f z;7uKdn9!}ce{Fz2(JnwNI+b1g8SE)gewcr#w%rL%Qnm3~PeyxjJM-ji;_LkAWPD|3 z!+NEsvRZ#MVAv>db}RTI-Cf7V|AY_!BT-`OVsjPc_w80t-TPzLc3RYZk^YeLvW96d zw*ABN2{`V}0`S$SZ_(%Ne9!6uMzdZF8kKh#f)k5L?zj&aXCTaav?Y8!8iCN{%V`v9 z{-BO<1hclhPkO}H3NFj~X_eN@h%A0>98BYWZko3A*AK+kZ{YDZJWOe(BcHVp8{E?Y zz@RKn`gScWck4J0yQZuHwCs0!#@D$XS}w|lq^f^Rw`V&B_)$y3s@V77-NVCcgsa{9 zgEc=Ww1*<%srr@|kWG868x7zjsj7Rr&JHq}pOypQ=jZ$z;3%Y!p2f>Lc~t&2;7M=G z>-_@!l5TVXs-R`-uWH*$9d?I%+%S&EtC?EjgK;X-Z$BtW30RXV4|V8%Bd$bJ+44yq zXv6E`M3Ex;;q0c|+YxCj^}}Hh&Xt7q8F^Lgm3xH>x&ExhYlEf$R(cqGEEXbfZJY7^ zf!gA=|M?Wx>SAA}iNvs$p<$EufP7MjA5moUJKP1}TLAY05VUVLm881ykB8CcgKXh` zT-L++J+JU%W#}IL5bzK1_{y3#!M zQjN#G5?O6!Z9R3e{6S5p4yQ8dF#CG`SKHTr4L&nsji%c6*zZOXB`CC z-Ibci&ZvAEBPQ&x^?LvB5~)xRfJiy(4)%I#z^X^5^I z&{JQ<+L+k+dK1TI&N?yoEin8+RxQF`!$Ce1qigIP=!@T(wwVg>Nq!_##b0FD_;jY) zHTB)==!K*4ZWUAW65NhK!9F$KB}^lah4KO}#tO(l%f+ll*I-;vJY*2%)S{{B|3Trf z^-TZvex%ypo(1Me&17c;`^J0`v=`XU&?kpo6yv+T;1sp+^H0ui4=u5do!ucJv2a|E znW5PBTr4049lu_^Z2jQ+QrZ{*y7kg`t}$8g_tzG271^!*a1J0#X_G-20w>1>st g>VMttyWhvtsG;$0)crJIt09A-o|!J{mh+SU0ab$@eE&Aas@B8)Sd7tO`ex^714|8L| zBjQJRcz6WCCcj(p@a)Ut;o*IGm>2j)+oGe2heuNo{QHf&;f0LJ&$-2S$cgS-u7SLF z4&ON(0{orfO?)Z+;IR1P#PiZ7hfh3?{~B9I995EWExrG`W8Y4 zSh~D_1~PZ2I(c}mipCxMO^{dMPw@k%c&;A?@%SFI=NUO)$Mfcf+rB@Z;CNpi`ft2o zmDYaxx17w(Obsk&W_4wIJxagJA3Xk3cVj!(YjMU^z3FrJKaEhToRqvD!gKl4KY#f@ z@pt_f&h56wOb3A;Oj5Iu$Fp=ZX2fWxaR&DZxXQ}Pw~OUDAA$<$n`umeuTs~1++IVF zvdNo)BsCkGi{SfRXN)WnUaHtjf5!F|#?3Vq0A*}!EJaTmU7Km=`Q;OxXTH()wyIKm z_~44qeFb(5Wd_Q0aTpH?wM%dgyCG zgp*sYmzdEr)o(XG{`ECW+L>qPQlJ1xOL|PqzRY0p3;w{@$VgUQA_13DY!XrX5yaD? z!DmYgD*F8-YMI9$xRk$yfXhA&R^-XR97No+1n#4=w0;;k9#|m)#rt!IRbV4AD8*y@ z*5Gv9=OORL$$-T+ms&F0WaDY1_rC8xf!i%hph~ZrDlfdfc;FLrCPX_rsfzuh4S^4N zV88D>Yrg&ZnUMPZ;Xm3Zgavre7ye~C$Ac2treS7{cn!Z`j_~@qJ;K~Bi<`5t$@RJ< zte7LuBiQ8}?N*aDu4a~`%wBP1NwmZbk}~B^!!F|+K&G1*|2NabD`HN5a%_|AQdZ89 z3Wf(Z|8rxFnkk&5MrTo?U>+Fuws|?pLo8Z&#$owf4^6FfJ48D)CJTZDreMxjInR`? zp%2dPnZ6pxcvDW51D|mDt|=je5&+f^H)f-DscBqVpwNr5)Ql<|`W2FEI1q?&axDfH z%#UcFCX=WMW>{=E9lkR;rB=7SAk<1_Oj#{bq~u1h8g<*m64UHiSo?YnP=(4+_l(og zfSNokCoRm5WE`osoJ;EYt7{B`%t*&OfS@M7*4Mop(a@-8We^)14%fv+w}?n(z%bP4 zA`QVyuC?U8na|r8g(F&}m+`|L*vWv`T6!Lg)o?YEEZ9mk!85?drfg96v^nJ@IFl`ov9Norf4|ob@3D zo*uBHNK2Om|7g>f%xoyQYqP$-9@^<*cnXq2ak4KM>K%+~q>RNv9j~EjJ*T@MCaqj0 z3(`pbS6F+#N2g|nPj$4eFyMIPoJbq3V`Nv1%m)T-WeO+dTZm2Q|F~26cl2rI7KRDsE@tD(>ovnc)C~$Xsww z2!3?h%8!|Z`usKjeCa5$`tw-li0cF1roa|hH^JUde551-+3k0Z-RF*3Nf@XhQ)@QnhMZRjq9v2oKowUPwz z)%DGi0@rKr$dAW+RAr4PHCG8+FdTdzmYK;`T~)8+#p`rltMiuB^vxuHFX#=3qjIak z*)P)DY0QGM`YHmwaX~bU5EkD7ack|&+8=2#L`@jE6)Rj^ANgF6__QEvT;GiJ!X>KR zL!sl7|08;np)=XWMvIms=2!BTdCQs1zS^1Kn_dRFDWZl)!db#xr&K&$ukw zzuCC`g8xchs!!A(J}rqO<8x@aM>Mirsci`R&{2y*9CQZS`f)UPyh{~5Clx@zi9=&< z{Ay1x>>6);sQmD2L85XacZNdw14>Y!lHy0iqxZj?J4S8171xZyYelkttcHnA#9hDms&o8C^qf&Sz(aBf6ri||j>`NI{_A?Iesw)=FXn_G+u?AU7Eo8rI;5~;K_ zvz6tzS(W^PjlfX-7)^o|C*=lEvgclC#?7^`!(_}zmQrhJ2yNM;{MCK5zCY)sP*jZ- zGarZf@|kFc=|PmBq}8ItjHppPl`&gK*b!su=89M?hHHPiRQib@g{_ZdYmPbiCe>l4 z$Igwp`o$_1O7==8i`XxZZBI9C=yA{BH(}BCi6rcIotyATDa1RM+UUGGygvu~8*or4 zdqwhmo?-TYiFJwf%|elUXPQYu%1s(3G=1+(oqCLw3FDXu!Te~&^;q9sx1(TS{tY-^ z9l4sIM!6i~32{Plu5`J_6cq6Zri~g_OP|rqm{Btu;<3{?#j*ADXJpNTX=>8VBsqag zYE?|(gR1%GVx^l6?<{w)Mz-jiYC*jCq&n5b56(G`GxOj)XGq zRkb?SY-ON%X(4aDGKv+5EJ8c)Sn#rhrQ_gD8OcsXRWoiu)v zaI4Lj>!GGw(ksY`+9eqYMv-toIa1NhnLAZ#a%7<;dW*~y2xd|rd|3!-F zSu34*)ePMZ*f>{s@R`5c=A$z9hddF2?(igGoFF}7DM|^mUeGn2JL;=Zv>4I3EP<5x z1$04ISJ$o>?$-JunNIidso|Drc+}{b(HD0N63Eyx_(=yv7laqhiXxRY3FWVFt|d$T z{Q+)^#(Qh{ERhX;X^SkDHKK#5BPRGO0Q7*}e*G7p;ka2Y!M~+X?Zs3vcA6R72^`@* zAKzV#8K&b_5m>Rt4xoB;{K>w0F5~%Mn&^wd z70o@%3;Fu=KNU)C?_hTan{KvC&(9JVutp~Z20U>DX>bwzZ7H7}R;CIE&fmm)?ePy0ne5~Bu&E_NPZl(utI*c%LkQBvmQJuwSG>m$eJ3)t6AEjXWOoD zB$#M5v!JxqJF4$O?fBvJmHl8Ht3ER8NGCmWYHTsCGI(g1UbAkmT_+i9+;LT-FvumA z`$fxC??iX3SeUCZN6}0JfOdZ4`l+bI^rIl(S|3`HCliCBep@&oG8NMMb8&rKzpJ2Z zAxlZZDzf#S_C_xVpQwA?=O$yZ!0s0PL+1XC?fzyAwT8Q3lDYu#j30qTn7OSh!PiC? zp^}+>NzwIFCw{cOU2KDhYmLE&M22{2YIPHm_3PgpwW4KGxeeo(tb^#5rX0Vy)Z^)~ zFWlT1krdM_`wM9AuBP&x;u%aZ{<8l+NqGjh@7*;18&>HaQ37Y{5|d~a3wTIJ0ba0+stl!fzNP1X#?86dilMpYl)B1k>iOY06v6$ zB&e(cC~)`dFQ&1i{Z2^IQoHfaa5I|gev=WoAHVwnI5SutS~a8a4znUcx`Y+AAO7uD zlfBzetcg8hE}~O?S1IL!nKk_WuhsD9w>)fYfc=TGsF)1E%tOi`$bnZ$5=ZjMU0Cc= z-)Vvs(AP0k1};?MdVNO)LBGMT!Dp~#L9t>nZxj7UZG|-?{i4A>+kdfD}fLP}+&wqz#su$*fyn@9zqt1%MQcOyqYkdu1a=$V#_I#)W>IW{^v zwDw!ZMW!Zz~| zKggI03-zBB_j`8?}LSzWsIo`e(ET%BQhaIgn3ndS3J8tLbW$wG}9+ENZCHIrxt z0L;9fi@>D+24+iLY}8|*6;hTcrEYJQq}&y*peDmvo1M%4Wr!j1^sTZrHeHQCIP zTIr(|e7JMUY7sO{>S<$d8~W-fjdVoVcPS9~!rCX_lB;6N1%Z-7cNzs~0T}$8ie~|U za@f7kHn(xO2AyQX0j|y?H%3~V*UoJ0a5Sx9$Yyy{x|wrsN!ie(h9&Q#0l;?eq=h9z z{t8CZAFLnljLj21&;zF(bY%!PeWgbELR#;Q%Rg-dv5uA=uDCupj1>MRe_(VD+IsH_ z0Mzv7j;|Z|P4%$!&=}ZTobT>|^#$EE0Z^>{jd`u&Cgboiil~+1(qyedO3(BoO^GG! zHX-NF>E?_%q+Mp$MigNSu4dm&vn3CBD{XA zB-RsM-LS&rX(j6Ko5n8+@ypAayS0ArD8zZYUj7~>cGDN-QCO@1Yez|pQVeEL89ASj$G zTX__A^sXFvoVLK`Dej{s<)GaKJpewmqv~6J&gDU17S?%W`B~k+gKNw#gR4Lf^g$T> zUie-tk`M}IWNMi{&_S6)ki9_?eL={w_DOTB6%53VmhkXPQnT19lfw z(ZBRdpyJ$pC>>QkYCt@FV6dm^jn7uhHlAKEw)u&X6;KD(Z+jw&lSF6pS4l2 zTQ{~;+b*+f91$wq?EqTG*y+~=onv)f!cdziQ6nSE!FP`X4}&5XIBY}tpxKn7IF@h) z$~jxML6&`TQ;1{E!+54CJvUEyj1ElOJfgktTI;CjmLJ0)KRe4YsnzT01oKs(ZCnCy zCWpNXye0uV7C(Yb=){a~h%b3!&q9NrwIbZ-on&KUVq&8H{=~$v%~)$Q5P8DN*}I7& zSN_`R-AKrY7C7w#*^dWK^nZZ2T5M*|&QM|fD7uUlx?9xk=Su2GsXnQUZwRbd68WaaFdv9y%QtrF{!j zy1nqof#uK?cwFS)K{j%v*Ncn!kIDj}HQbs#$QFnCKag#zc_@_y^HvIv%zyL6Okw|T zgRVLozv%?^vQ+^7G%pC^%!DP{js=l0%!KDu)VClBD$ShU_#jsBrZ1x|GNO#Q02Qh@ znZqOO$8vD8FNoG&%YkKKvKm%1iT%Ac;Q2XKLTiy0{sAtJ@b{fij{n$UN z3^IGzZ|M*}2xIKu`OelnzW;t#HCxFuu3U*R>lkT#HquwQl>On9Fo@@cKxQT1e^QGM zU+};V3g#9oh(p_p${>I;0Dt#Kwk#Yi+$Cb|26sTro8JLvHwB(=|D$GN`SuPsL@^zC z<`1TqMGS2D;rA}-X#inSxrw@8_3JvASX^`%3|-aYtUvP}C%jUOg9bz}g+aTMWhJ9M z9`j1E5juuMXFs6nNLlFN-{Ue@i*deE$JUJ!S>G#*6#$|>2i1}gVqY2Gd|I~x<*bT9 zkjt=k(n5%)M4{}Dd%u7wg*nh~W+2b}0=pcyM_H777Xazlj`#ghBH69oG754OYUp|4jQ@o4+znm2ggwL zIx?rlu3uYWfnpGk+9wALQi?yaCbluw&g8O#pEv4S)Xe7mOSE*!v{Pch16QFU3Y=5G9T04}6*(*UU)b0}w%6k_NdgkWw&ZuZ50;jcJ&9^vbbBKl~ZNh^M%ci2xeKUp__ zbcqEJ#YrMQmkP+ykc$+VGl;hbR}2JD7uB4*p(>_h*QTWw0-8?0Q%H$xo}Nq8yYebJ zB4}#dQhrC%^l9wCg{1h!b;m7oBdDPBhNaDy&8QeJ_}_5!XQ0^eEu1+^kO$M_ZIt(T_~N z*HQfpuXqT7x@gRuS1i*JsLA2Ae66~{3JkywVg-c()#8=vSo#fz7m!vLJ6Q#I= zYxyjo1Pts(@tKR)dlb?>dE2R4A!T~wO-k{DM#>AVJTEO+NH^|h83c>P4pwv$+GW;& z8Ttwc`xN+H#A~t9PyN3;A-qc1K01?VAykp=vMgZ^nqO#J;=AuxbnQQ#*JCoe=NNuG z^vfC|n#rUvhi@ItJZNNNLauD`Zj+lcnIZC&ZPYP8Fk4yqqiwkZOU6cxCqKbK-Q@`j zA>z53(!k}B6s2sbSeozr0>i6VK^s`%t^nAZoEyRNyY2yyb~CLxi-eK!?;(6!QMI^; z?dVfP+0;iaOx?cIR{B3K8~6-HnA8A{(^kh?g_hyRSH;nZpRvTam5F1QOQUX{-T^i9 z9NKb0E#Jpb0g6D_#|J@53MDPB|7eYNcGLPZaB)wYr=LZCOg~kua64NzW5!aZr5nF5 zN|Cml_34=`*u+nvP6CJdc}|#r-%F8yovkG>Me3}qYyi!DUI~&Yhlu}@^@RI2aWxCs zipthDxgG6XPh8$J41qPlvQO6tkZ_YuJz(oh22||gfj5;uqV(x-eWjKkZCCKaQwG#p zP-$hQW(F$B;RWbzWhM9d=xLDEo<+0%!HcBk<#6l3sTjoH%Q3qt+ZOO=j4VAJPW1(m z)Bu4yX0ti#3q(2CQZ$yHA^m-L7)1ChO|!Mkl^ z0LFO1ht0TPTp=Rv0M%S@z0P883Hu=9@VeX9z|v_=xJYxe=mJ}c0)(ql<_>`A&4@-wXW3bo2om$zR=^{?eg?0rQhnubJn@1O`qKyd-xn z@$?Ld**D0WkZovy4^?C?&&e%=c-CG$M;-n)#@v9TfjRdT+nR5g4A3Y@?{s57FMjKn zd^X?8_V1*&9d($q=QmmKU^^ZXKke5^@t@^$Gof|yi^KcATPQ->CtRT1Gp4ZN@n(B zOvU!5JD1FaAwK)#~37HLP)YI{L?g7I-Bb)M^_xD7N;$)aQ zwEJ&E#i|rixG~B}IXic*l{3=dd7i(@dD5=?xS35UageGiqjxhV6NwK^O8i@+y{AIO z%ri!0<+ccCS}cy=Rt)T3Wm=mKio8&*n|(C1pwS$i?&M5HC0!QL{!pwi(69t4Z+_qR zh9acKY)fkZhL|?J8txysPpsjr(KE4^$^tUyrW=(9vn=+V@tZfi8O$}Kxn0l_@Mb#& zLp$|ecWC+whk0{CZi~t3N9`ESYmwXTcnBS(E?$IO_bnu={r&s$btdPGo1@XxEUDn& z3E55)lum0}qSTj7Mt%XrRTl+qpKM8LIfUiJhvxTAoG7XNJR;OUX~!kS9>LkG^4TK1 z8k|~`&%CX?owz+_Hw`A5a-MH*MyWqZTq0BZg4l{MgA6@0XEL4T(7P}H((7yAJ8H$k z0=hqt0-$Nmc?qIMpW!$^@mzK)x(LyqxL1`0NWtXbkDabdB?hEqlH`^wsg~>)c{gNj zgNycj5K2-5I-d7%%!fg2F3%zfPVa{<;pm}H8s@$~UwUD8s_wrtYeGshT zd!k>aR7^wKgm*>%v^>>1^F08QL)-jLylMim_i}(~N{p98%0|zo+>0E0B_deHaD&yc z6;(7^OM3^+dZn~x&QO_tjj>MZUu~e<>Y*H?R_{+PEg(GNY3AP>2M8xP zhPXnnxUh263AkiFLQQbgd{e^nHL>;O;2M0|?ADFli$yH#B+g=AxbG^C_s`aqV@LjV znT5w6S=XmJMR8q^aS_0Iz?wKsx1ciEY-RF$lkfMog&<0m~J6tLzSGM77>J zT)(KQGP|#&9D=07UHPmX5GuQ};091?@%M0Dgcn843{5w()OEg59yRW7XbVg&(3ZNu z*|Tu{>Ex9L9`>DaQX!Gf+63*IlbQlm+#E~`FLt=pqT16t@-|5Um_-niDgq2|G6227 zNPVG8)FFP$f8Nj9hP6|~+zDlHLhU*i^3gxfi9)zZblmf2`1P7IWWn2}hX(_847)2U z0W_lB$EmheBuRW9Q5#~?x`vcnOF(#9S8N#J6$D8nT9EEM0!C3=tGs)d_{A6Sw0#~! zbQ=X7D8MxvHU18WXlfUUOwM!YrZVQYhob;GspRfV?uy;@c026?*}(y=LQcE^1WYb@ zaUI%flIqs!68YGp*)jjzc_Irx2kbb&=k;#9Mhdx=*-1WW1ZV(&HqU^m4joJWjNMSe zH|#Z8maf5`b2h!O`t{fj#oWcA{g0Lv;36l@Jv^tU=*IydD79wt$`o^BzINF0xoazF z!L#gMjjiF-;TL@!N%25$8f=YzPcPgFlUpH=(`O22kUi6GJAeSBn*c~XJ2{i9&&wcm zcaM+KuY6i^>_(>&ca;2N8&IjfQj36`-J=~ISPKj+$KXTIV4Spz_dHHzlInm6HFwjv zR>&P%l8kOO7||Hi;mY)`-e5|>Rqkd^45WS6`ewcVKBEMEg4NeI6~ps ztE=G?0UE_el-23duL=uPBTeaQ(Y55zheE-Cg& zFlKYlSt%Gl#ZZUzn?m-Uooc8yN_Xuo7 zcSh4Z`}e62vL()A*ycSr2++M1k5@yiCIPzXCc`|?=^)l2M(1gGE zu5WJk*B$B@E>r>qznP=)-GmufQ}dJa@N)|iiD~C|<;E3tOpBhWWen3p?)L!o zf+24iX<$JfrQ{j(yB!biJ!U^%80VE_;($P*K%vfIhY%4>KbZMV!+n-cg0xN6AT!yDLv#t++M!GKx`CSH7dj7NKDBFT%b z&^kfhtlEAdT)`;BVMXc}mUDw<8T|fU4uJLoEP1R}*Hlw(=n)-i<>Goo`=n6+dCuXs z$^45$Z-B|&+kyzyvVDP9nK;XG9gjUEt)>Z)HiMWqu@np`hfUU2J=~!N zj_18<4%=U@C`)7kFrDIGm{G|t&@NF(Eza`WC}b@YJ}yc3-xt1>OWO37la9O2901sF zvBJ_#pHE#r9a#DW>Bz;`kTxpAygWxWqzW~IgPz)iH(B?~ah~k5Rd$xC*hNc8F2?EF zcphF5e2VTa!oCj#8lZ~QD{BVv-OGF-SmB+V$_e*F$}Jx?L9GqDA=)R6o_RSSyrBM? zv-gGrFzxrQFj&#x?2koTM}+qX`NG6sDaC-OOCm@QeCTBR`z(0~-J=k?0olScJZT6$ zg+2NEnvaAny?Niy{NbDgyRDUbw_A<{i(J&={ZVk|%8BP^lQP=;%>pJbIe%oiFy#bP z$rFWI7A_P>f=7Rj;2aIw_c>we@JhI$TXa;^M+2ALQJ%X6n^|>lfycyMB-gG-OlrmH zRp0phGMI<<*I-;c*4D$?yG_tf5 z4RkDyy(`gIFf>1D8V3}k-Q3GpMrM$aW!ENMRD#qRHm}aw+sOGL<-pmHPX801Ebv_B z1>@kK<$&1Qg>vd`v|``sCA2s%#yTIp7Z!iMZfYr9*Ve`>?2A0Of#ScU9PLb|GHivS z04Z(h%mp)2xf#D!fJ!5PxES4k=RG@j<-ytXP23&-yuP4&q6yaev(BDgGn$CpW_d!x zV3Q43(aZb3_9P#nrEzpD0Aof1L_&GKIm0HqN`(}uQM+GeSF5K{K>ZM5pb~&+%7P^D zLL`mOkd*%SmZCN`Uo`5E_tj6f$~Bw2Qeo}6a_CLJJ-uWnO5ea)p#2^~DZ`^*E>c61 zb48^--(A!QFvu?zy}c{7>))51o1GCG`Fi#PgcZ-HRE+^z@Y*BFqs*X!}1OMOqw zNYA~*8s0pRsha|4$Y}45wC*+)SkC|Qb1RA{Sh|bivmXAwLZnz@sSKf{C)<#v_7HUJ zRqh;mZnYq+1)ZCHTI+J*xukfeolS0&bsC|6D+3P*KTnX5C-S=T_*tV}G$=M&y8*P~ zjForr*1F2v&gsqFnm=3}=38{(xg2hGe%Ld5^2=~kBcF}tEk;fbZB8eWo3ySBjHnD` zs#RvPdsV(>d-9g)o5eQP*AauC3R^kXO}p@600D8j(zK;<+&)kSGIx~s=Xbv+AC!St#$0@S@3G!+PkxztuwI@Xfs?VNkpLzd%))3SrI8;tW)$%#u0t1oIpzRf8!W6N+ra#Go$ zI%Gc>t7!*ZN$V?lM{dRT{qeOu&AH+j94)mcw2dw{i>+mO*`SBeH5CfClEJuK)|tcDud36A59%!L$tSH*8n=PbQfl7)*F0V;3FtGElHwb z7ci(5zDPco+PUIkcR4-;G(OX~)h6!sdRVR5?sg(MsQu~1s6umjLQsdDGkM-=N+T{> zYq_cYx~A&VqUx4VnBNOv)8~LKMsbvZ+uRN(*%(EM6IfS{P;3nP!P%V*ksY=7xPwmj z^IYzugCvAA??QhZ)RaB&zs(lYB+EWIoQ07Tf)^@-3{yV164UfA%Q*js?-$H;?J1G0 z_S5@$&>ZEIVqGGw^9;|5L{j{Jb4#h-02Y5`B`_bi{E&&l%jr9j8@y4jW_#?Ky|^a> zBW3$%wSd*I9&v6jT2oGfY+d-)JkS7ux0K>Hd(QsK@`ugS$L%|TFuDE0^Rk775acN* zFNXmG#7<2Bvh3}mLQ1x5@=SPda%>CM%smD-DF4(BpuEB%tuD0|n5p#$l)4YN4TxuR z?o$CN4@CEF%n$okR1;`D5r82_J^F4au-GaK29luLPHk6#19zLZ*0u@=Tf-6|Nb@({ z)QjM5z73ZHqvzSLT#;oC2<{G7XOH zdKX|hAX|J?e!R4@Rn73&eYTG4ztzc^Wz5sk&=i>XJKtYYLj0T;hTVJi#&z0NpZx%T z)+I8OK%LHPwX!aCBCEbR+FA~LU#fg9l%K}jU{7p|6m$Xf3qN-sX5=Ge9`hO!0ffM4 zUX2uh&H8Mjk`uJlRDbFQ)^=xw6?wJ8_1^)p*+x{y!LR4*A~u0su{8V8nuPLLr!A#aQ2M27Emt zFLhIp$l8Xsu5lAN@-X(aE)fuv`~TpKyq|sqFbaTC$D2s>%{v!vnnVswg)(Z~Z$-+2 zFF1__NaSBi>f(T?HLNG9jk(^F>k-Z5CRUQ~$5X$_^H$lpx;fX{iCke9ZDpJuj2c#B z6hLp*G~S&L<=90d8sno|A&5tfl#dw?y8_1V%Y9;O0uP@i4}P4z4n0w9;mI&oLK1fj?tqBp+bsF z-X9uIB25VDO|JeMSk4?gK+5o>(X<#7rYp%<(7_P1G@Ku_uMer?8)U(=vcEYX2(Yuw z2i;`q*hHi1;2DqvBbeedKSHo1kB0#e7E zL_frIWfs4Ay9jVodGH0w?9z`OTJ$T%eEvf;-TR~*QA&u{?-&bp1#g9og~|?V1$|uJ zY8s8=bPU*8s{em0G&HT-Ckj0CmB1429ecwZ2jz93apR20VmiMcr0 z*f=17klEer-sgpP&+RM=Jj6&ha`g?A40z(MXGm0j3^I8^`2~b$vDr$2#u<>a9@zP&j^?iTwm)4UU4&#$A^QP*z1QYyeg} z%#Ri|`I_F%-rNKNyTJQ1G~FaJa^?@8+mNmNQ+@asLDTF2u^3?l5T9 zhfXP^6c2gNba`R|zhR|M6Uyq0y(tgV*|^8-sKNL1Cq)i;OCa>rCZa9?&jP_vCu>$q zJMo|nSG%Bb4SkB^?eX+O!Vn~Kl@h(bENKL&Id+Q8WA|BWc+#NWpiVm}5wFx!$WZkS z>!dN!G8Ke+=bgP>J9K>*g+rzpc3)b`I2m~$eN6;IlmvD?VB$$FsCKBEkpR00ZdMqq zg999}Q%Ur+FK?0sTXUTwS9x^;Jl)5gWQZ&(!}}C;q+Pjb(z69cJ~7^7d@U8o7mS2O zNJ{IT{$|iQ^L-`t7vGd5Zf*Ujn535PeIGF5-6}4t<{Eo4Z!Dn4C$(SG^qnXX&034e z?b+CjE0-~57?5BsbG`OQDdHmLc%gj%rLtc_`^{q1h4@{EB)@;$lyMW~UHq~%tyL>= z_24$ofzhgq;0t;U6aJ^qr0Q4O$&~-u|G@qK+8cAdyZbSQJ?EF1)q8IY@_>!Ze}8+^ H?eYHt2g@`} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00002.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..186b27cd4af645b70c7bb9f5152340ecab64e171 GIT binary patch literal 16035 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00003.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..637827a1104c492bafa18f3c3100591f2fa053f0 GIT binary patch literal 7918 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00004.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 zcmeHtc{r4B+dopsTFJgtgfcYtZP123m zjx#YaaU0*beus&P`85+0%R6=!pherfxtxg!bkX?wmAg-JDbv$gHKu|k&S6O!%-XD6 z%-7oZz=vPe*IolZ*qN`s=96aiaOt6L*K^X=ztEbop*AHB@Y!ueE$Re(v29mM3#XU+8EOf}QTEC2o*s(3023JL`M zPqcME@p3Z0pJKyQ0<(8Yv1F3iC~T`4UJh%)xEC?$^~tj&)UtpRO4$UwjyfsgxIsh5 z+g{}hS${bF6s9X*eM6oJ6@Jqx!H%^utmPZphjQM9F+0cH;~?OrbV^D zQndITNyk~1wFk81j&mp`NRQ>Qq*NQ=MK%qKuWgvz>76+RJs>7p*y@I|tH4uXT{w%r zGH08egOY)A)=?*cOJVFsvyT1@s0!~BJVIcG{3_wm*?|L-gQWy^MsbhAl!+gZKy^T-M7Oh=n^#@_yPaU0vYYA_0dD@Py@%Ty|L+U-l} z*}q#B;)j>+;y1%NpYvXGa=vApnpr?@nxTaFgShl~qhrV4xYC-*LEi+tMI{Q?#_y=0*gw68#;NnxUlUYpsQ`w$3M_M<1A0+(dbyCI>v

zz5Rq$K;p4>UR=4AAr!iSAzon>C`qfI*sDOXt4J$U)do>(mFfn)dPB+74*D$hNq*V z*zk*)q{`M-{V;;kF|(^v?%tP6ihBK+cr=bNRGS(?(DvCSG=9N?1Q7wh*C7RV`)DoK zp!<)F$*IEok4{C$il#~{rJc#aMlHs7;gYAEZaB>Xv(gYt?$%5)8!1EaxE%!FcNgbj z%Z~Z{qOJX*vrviG#iC+u+OHHv8kp-+h6%sHFgCvGijy-xJ~+ACCEbm3B|lB)C!Bz* zS$P5(u(=(f3Jf?VPC=4^M-{H4^|7Dg;*!c9_Jpl$hez~^L>vM7w=o6MFQ%m=;+)gn z5)E@-ROYBv$h{mO1@f^jzTJy#B~Tl$uxXsI{;cq_5P{g=-(Q(6vfw{$Fw4N$7mM5~ zKf^viqRl=6S4kV!jQjqEly-}|@L3C;XMfg&q(L$)czzcK`4)S5)18Ac)3jz)Gs<~v z&6KaYa)&9u!Kq`9W;vCH#EZ5umx?~U0(12j)PMl{gEz2B@UWrx4@@w-OvmtgzwF1?>8SOwgNZ4zr_DTgCD zt1D+b-#cz^l_?k5C@{H*)W)kVE-zkmln}V$Z#9qPb0y)iAwCxy2!!y2mAZkj+ZhL$W1tf^BX^j z>&gc$Xr`)q0u|`l-MSwtiHvP#w`go zkmTJQQf-M$)J&qlc{|pg0Coo)Z8)LfAP6EMO6{-dqr(Yw6e!$e)<~K03pRts{?_u7 zfGSAxQZOImpwPEvwy^vRw=5EDi^a{xufcYyXMz&qEHvTx_6i@r!Fn&twG(<0RqF0Gwgj~6FRBV#`&aR z`*>#|1B>v|-kREEhoV(2>T2#SSsL{0L0OJqY*)tMJ$!IJ36_tos(Bx>E+aWIpde#> z2VV!eU{v;9@cY;Wj}lxLX**vJL~AS4Ed}B|1uAo*@;+&GYeZd{IB-T|o?PuiYgBlM~glXs1 zPg05uRz6Mp>6E7>5m!Rc(|&jjbp_+p%`n~S#qdy%76*FWmvY4Y%6pVlQ+a25eECT4 zs$}&7Y=&NyYg#|n5DLq$x>r8S+heOI%DJhlR$*A+$3 zrb`#6(w~MANw4@qYwnnReHh^rFU?~v#+l7{F7rHgzGA1Cv1M3%7fH@8FJ3&JF`Xex zPEq4GaK?WVk<9NwyYTYA4lB42r&W)kPWorvYbPJvgU%NO>lILli+}vZBjzo{x1WsJ za&>^QHMAW&egk55T}%DAzNjQIfrUIFGWzq6=s0-Mafbe)*1Xk-}um2=lry=9vz4}qzRcfYm4iu=)qqsIbzlt4W35k9tKak za9wQMg?gY92H$rg{H*F+-;9Q}I8@<@XmD?hDjmJGN!)7jODlg#!JFwmm~l9b`W z9YNxK(%k~Y8sd{@R#??ma5o8GS1{z!#B*kmRM*hyD|gb}@=3<2fSu&f=`(1Z#SaSD z-*kE?dis_SYbYvaYatdBl@4GpeY(KU6op<~UYc(60_u~sqbg6i0{gQw>^$+;?D3_; zOH?Y3b*(Bodl5}aqpG(r!5L_Cw z5!{7k_2TTesL@x3e&6YEo0`B&pH;qZC8|}ZW`4pk%?%(QBXH9*W!F@v@fp(!SkXQ@0y`EpV*#P0LXlZY|=j7o$_+MonT zI|4IKH1S7{?#BQ}W8B;V`WD%ytP!i36sRfYz7#28u88l&L7`diD<4Cz@2ghEZ0Vc$ z6=XO5QV22dcS=}Hs~@{zpXAR`(S!^|=ly{^YRCvAm3BMemV%b;Dw}dXQnF1v1e!rn zx;Xilb9A~@z2|ZD%9zBcdn8da{-nnE^%5o9+A8Ub4|^~}4XPZJU9r8c^@**k^l;kIo{j3Fh>;ug zuF$%>j1I7`Rmq&DUvubB_fK7W8WgFB!1_4M|#jkQ5I8LbanaaNx!YmJkmSWc|#P^?Y;YW2EZa4)WdfCJ1Ctwf&kzm|P26MSx z9&GVR*E%+&nppVll~Ep-^;%0?D1|B5ueWIy(k;8#?0G zz}VZPh$=Wc?mT$My~fT$wkRDoKDH@sJd|l~Wmujat-htg$z*yt?a{Hs3k^E{t0`9| zr$EOb&qPMKL{y$x9b{U~rvlUfk7Q@ z+XR(|*>*6vhsO${+uGSu*+wU;f(8oMg4sb4*+Be>yw2^lDa>ABg{9d^yg8S45V>YZ zC`4S;sm$Ma?cK~7z3C0aSmEz(S+3vcVr)$;EYYin4w=q%FmHSc}-X-g)TFtJXAUJXpPe=9isW+rXNV!eqCS0GZ zW8nRfnhzJ6VPBht;%561gG)im<~Pz2mM*tGG$GxXhowQ-p_MW!Bah8&#!bRSrCRV5 z&x!oGa)}SSh8bA5pRG>%sl&f=NHD!X}6+0T zd)^XoPJb7qx@NfTY`-IJj%z6uy zffrvRQZ#OM{mGknX{_=Vjo_wR6W4VrQ?x)1)?Avk=Q5xH(oygXiE@@Clo5!2g9v z^b1U0agm%c)PeV%ZAX2Vwi82JHt*Sm6X^ZMkw8Ljt2pdxGdjKwQcF=aLxFq_M(&y) zd+8b<`xkL+b-UrfmHta(=DfHyiMI2&aY`rTi`b0Z%L#FB3^hl5$wx(dFPvLm4$GG3-lf zv2NuXy*nCCHy`)YAi`j^v&}2YypDtXc?34rQPJm!r*55u91acT&SBFvkh z@OM090Zx_hu}=6m$;+rKwH8?K3uxA1ckciN{?xUUqH9; zs-l_yrnRIzM(XTVvpwVl&UN2%gy0EY_Zf)g@K z7&3y|-CxXSewl?RR^WY9Ozldf(^u<-RZL`Fr+B8nO1JTpRy1>MAZ0Zgch#6smV&hR z{`|RaA#G-$l2W_9Qf5;(=g^M#VKWO4%bEpy6W-8&8d4f9cSpgGY=FIFjCwNcHSoTV z-@^-tk9h4};QK+)J5c1tA$?wRU&5Bu~6iiEqXQ0qrA7FAK2??P{HFyT-#oTH*}^_r71OjeBM# zow*@LrehL$Pzf8^rzTf5b3$uE8tZN-1`IrYvVQk4ZS_3K@-GtCV1wVJvni;-c;}b%$)OO5?gKPH@(|j$!u*t}O5^#p_=@Pex|!MOLk@lcCT`z|nb(0dRB+6}wh;*n>c9G4||(i*FGpA6((96-`y{ zsrj?Qz`!ngm-f34N8Wo4**9?jvOnWgFQ}H>wX`*29ntHZuv(4rwo}TA(MoMWgbPZt z;Y4=;v8tq?e6LeHLOMH!;Mp+gu9L)@ZEfzqPedFz^$zjGbpb`R@pl|fWTxA@E>RECMmTVMF6MN zhlAW%6XmmZ?2g<=Ei*GS_GUI7WetEL)LF=)SqVXa69_?b_`H_Yr)Skwi!V3L_^OwL zjf_hsCtr7hOA+X19bn^=D$?G~n_+vCE_L_&?Pm@w(u;MIRM}Y+ta#TnS;!^;<*^ip ze}JCOMm7-FJ$Zk$cM~tp(tB%6y{`>{n|-z!=&;WKq2u+|O;|%eN|c2h4$B8NqL^3S zIQ0yBJ6LRICbX{oR%zOww!7Sf7c#R}Kw9_X?cFKChX^Yo>U2R&+ir+~#W&u^jvL{e zfoU8dLwmR^uy6yx_Gstr)wwCBrZF$xNLd!nTl@xYHaG7pKv3VxE*YiqCDB@o!~_&^ zv;}(ItT8+2kN(AD2|!NS?@nVd&}-Re@?+ZC4_pX>EvCTQ1T{@I=n}*EthWyYX25oj z$JYSuWItXPwmx*-!c}`(vLIbTWbcDluMkA;4)ip%vdVy)v-kBq!mIygx#izP^89Bt zq5mn9+z%8Z1!=dSg_s^qMkNtr0E>CR)b{Y-%fEFU65~%jc6N3e8~ZlH;8%4gIh{1cScbIsy4$kreu$uP@Umto+2ny}-T53X) zV026i$YkdW4T2B$xG;2bh0XwI|L%Y}O+7Ilsv?gViF4xl9Es#H&<*|I6_$rvf1>Jx zX?&FK<~~c?ftWD2gWsHvbJm=t$b8_5?*J{>Ji{(LIOx8Vfkm6dkb{|d&%?8Xc}0?U z!tMev>h8u33+)h|ffeg|B3fXC?{)yqw{Qa>Qc2!vSo zI$WQfg+Q0I@i?UGa!wmssJ{1*H9pzhRPE^yASTQHY{2IYii!n*znKMr4lq|4;=b-4 zx;QfWjC@`I6bd_hPD|!@;mRBP9}t`y!R=C?{Nh(Im#p2#uVl58-d@hT`T~(}t7#j7 ze-GC%)qK;M-+*KzopH3=@w~5Hn2)AJaxxWLjj02Wq{HNz^OBCt?{RRHx7evu5x>Jc zcy6KZF}RQEK`w1&KkE;kN}rUjAOnDBbJLXs!`!dz10z#<554@=ArZp69Hg|2`Pi?Awoa>>^ zfoo6|sK>kTdU`hutZ+Ic8g^fv?7kJhrA^uLBC){xyn&UrbNY?hP%8W3upgm^EwIA_ zaG2mMtZ3`Pb=@&-Fd+8~`|5;GP+o$HQ0qSaO{st2aPlOLg{+v^rc82WnDTAyIPp$P zu!Dy67Z{NwZA#deSJ7%P$6YSLI~XpJOIzXsfu_5??#s!P{_*IMakkLF?$+_zVb`&3 zv*vf;4%=Mc7iR4UgsD`!p0n>3d2wRuX${D1xWpgQWPdaVtFrZ#^@@i^x*bu}Qk{|c z>cZq@n0AAw;)NmUh(yC2Y58m|4k z{o)pGOz_k>HyZ#1_yO?Z`3gmBNq#cZWhf&VrX_?(lz|edPJ39>@d?s~xJS-mxw4Dy6D{ zuu--TZ;Q06`x@c+9ravxYWAF8`{8RE?fw?M*gFOzi?}MA8skzZw@dbhJwHGEs9Krp zb}W6Gu5{ZH93?W`?OQeMCoz$)BufI8YZ2xk*6o#j^U3($l(GwfNr$+5?5}K&6G~Nr zb~$8|VtnbyD;;!aTaC_BwywaOvIPZD8}%OQ|XH&C3qjeAA?>`CQo7^Qq{SQ^kT%trDA}-&f}bd8lkYG zNY}S+FjRJ2Eb7$F@cUW`+#r>^fS?=_+85cXLHGlIj+ofwM7i4IDGa9-w8!cLAW1?D z#ElRcLuWGBbwuHd%kNbbyD8C_oc={B)qLV<&2J@fXKPGB)QtUWEl@~(To-r%%*7iI zWM(1U54Mx|8v6*a_?I>wV%;U(6Zt%De*n_!7q{?((Xl))#!&YRCxH&!on11t=_go3 zQ=o`4#gWd`QO#FGmu5nZQg$3SrjM*G9OGfcXVKm%s8=H^Y0d9xT>iM-A?H3Rn z+D`ElOF1f+vg9VSf_*xRM20-zF~8(edWSK1!WyTtX8uQrCh;j&og;Q?k025AQ0ACt ztAXFH_-7fpKxtJ&-WX@kP%Cpe()yEH+|IzUr51+rI5v`E@ z=#8+Eq>Zht3OZfY#l!JHgYi1D_zLZwbTF&H%(vXT5qI-vQ7S%L?$pAZm?!nXW}v45 zec!Kv4DgVAJ^g)8bXdscdADSR-=<3&yA%RcJiw6(OO4X4xgo!vqh|^}`KWTV+Pi3n zgj;9r%}EKK2d`M##^TsP-qwVH{PdZf(1P182++`SnO;rm=7+q(xTD=W^tS7??W-ih zDK5zr|gX$lF|! zgG3(%B@Fe2nSJ5_IR*T18~rS!iOxuaOL} z7sI0h3nC|u)732&A(H@Pp5VURq zj*c9p?{QGuCt>;B`l~JM6&5Qc1ysfrzKVPD-2s4)LLgAifW&K$AI`QS666zm2hNk5 z{0=4>+Gk@$TYC-R1plgeq+#(&3Aw35ft->sUANiO{cs!1Q&B(s&A#KnD6Kl#>tt9y ze!qMtMvdp^!efq(LA~~&Nw-TbyFMM@W_k2%Svi`4W9IzC}=~ zK@S^1{?pA}p$?!hBIGywyTrC-H9qSMY%%Sc`yCKhN1@yR2?b}#tQs7^?R}#=RH}?0 z)>b4GYKrl=8}GzBC}x1LeW6c;;%w44;qknerT`ua{E9f{`VsCm_XGm;18nTo&R~1g z+pe$=825svt?%F>T_9{q`C29Qr4s)+hpdsCbx676;pRH6AG^eug8-A*JbKT9U&d}l zf3r@oFD!yUwSC+kE?TTyHAz@T*_~g(npw7MCM|TpdJypN|EkJa;TkW0?a%fB^7=PljtoF2jIbxYaDy5lkS=9>XxU~K{l(R9^3^y(C zviG0x{@d>iQSHckQxorB%zIyBd<~&8s=-_o^}GBAM~Fb3#-|J_M9)Qi_XBaXVd4xs z@K+L;VEGzJllDeT>MTCza5SFy=hOb)dgw_?{io^|IT(|dfC-VF4hN_Bz0>dzIFfhs zvDIap^v7kZ>&%}l`1khqw2~~LBi?mD)k#fR03w;Nn+EK#cL!J%4TkLj8*Hdlumr&^ z&}0=-24W?(?ENwLh~139vk~a&keQAR_N68Oan`gdN6ZIlQ|JsZS8{hz8DHYm;W(Ki zC#_Y^Rr{rx{P>M(yX2Rzph57t2vlrMPYQ&`P5a5hW}Ezk;`a5) zo4a4a(z&V>u*x_Z0LCsFyWLboB>g?H%n?OW`N9!CYkEq_%Lqd{qh;FuVxCzN@djf7 zIg%7rrFE^h#ut<&{o=yBy=_!XPfBz-Be^=f44^brv-+Q4*KMPQ0z|DVFNj8~NtI+Y z<}A_8Qah29oMiNd-PkC3^DrpU;bgG`hhd(FpbJoaOX3q@6~!q%1<8WvZmk6WhDm^* zPu6Le{P}x#yHbDY^Je8}kho^jFy>D5lF;a&hm%goxk1)ZYf0 z<0CejDfRRg>%FSzwwiAFiPFwCR$hR;ULS`aDd}#eYx{N9SF?S7Igqm2!O6>Zk2Lrw zOSvK-VpZE7NWU(dAOd~yYoi`oeu0TWvehz0#+tFypB^N?ONpG@8tKqXN+=YPSW?+< z!B7D;8)k0jqJ0@3EUK0iEq^am!S~zU5XzkHSb$Wlmt-QC3r9lzy|6<8X(J&sCZ4>K zUqL`U5(N!OHsYH4D=M(-`?|(@a;`+%#^x(w2^hXTF%{x67p-JOoT=0&eok~$kO3Ge z6j!d62B};uY9P5;42IuPp}2<62qh>PxwN~DDa%cX+{=K;1qLM{BA6h8SWn$Nn* zofijNczWR{u=`buu>6g0%HxWUE&=pyVlImekO}_Fb%_7JHM$3auklaNr8t)-K=Ck> NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00001.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..d64e222d509209767f38a3bf4906fe9b323eecd1 GIT binary patch literal 15934 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 op=l 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 T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00001.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..36791d88583ed90ab757e69b62aa1575ec02f164 GIT binary patch literal 14221 zcmeHuc{E$=->>SZs#=O;C`U`F25qT%IIWs$Dr$%-T2o`5NeOjIovNa=K}gilsCkG` zHI~yFLQ-N1CDn*jBMnj^LfqZ+yYE`>{p+svuJ^w0U3cA`f5O`PdG>zx^L(GrlqWZB z&4rFi9p&TW6SB0p?!d>lFPo2#|J4zG;6HkH9o2k%+P5sPU%eGq#F$$sDDB$Z3}5O> z6lzdxP`voh$4kKNPxvdv`vMMszW80yLSSAPkLCFDU;q6Tiqqwp74!1ZU+V=5*SBN=_xMZ$-9K#+ zzN^DEDKzj!`yB^8M^~PAx$Vp91~-p|FID?qrR zrYPALT6xHOmN}dY%sHo@9$b%@@dfamS7BN zJQ}Gm7}I_l3p7M|Nt7xtc6EB$+&!jglT%(72>k>)H~Q(gK7={#O>63XSBDh)5z|gw zUL@ytHA^-9x(2EWvXqIxnAkdd#U>ZM{Gd}ySoU~Y6G%AiktB-HR8ytWKB}N_c?F(X z^GN_nGzP;rkYy{@)eEuwUZJxV4YAI>f!7_XH1kK= zpYjF!)nCl?R*JGtY6#7A^>h;=U*jV*S_oR9eGz*I`^bWHMPWUTZ*GW-lhe73F-=vR z!@0=8vuNY{vTHRL2`s#p+jz0Fck78BQILo$lD5$V!YFAD@L%p3SIbI7@o=mTkd=P8 zg3U@v6u3*>v$T%oN3`9CkYB8<~CEcZQSYENrk$2;5Imgz^^pOsfkWkj=)9l5rz zHHQ{Ywr91?GKvz()2atn4_J*vX}`BWl^R6`=868PCXnR)&BDU(q19=bhvT6VvbbPPykfCK#X@UsZiOR=F_ zcHA}MvV!_|j!>BQ~qJ&TY-cBnYGlFjrd_heBlfEVVdtt5)FAKwpE%;jUb+G z6U+bX{9xHAS%1|Y1vwQd}2Rktt+Fea1FGXzMwAUkZ2&QZ#2|YF!Mmt1hF4Ei?d}#j>z7xM zNWuvB`$1ZT#AP2|;5H83=PP}xjcU^pQOv{$iL=68~P=dBTFhChQz%{blH^Q#x*?zFk16_FASfpTfc(J$cN z%O?pPWsT;Q-JcHJCkHT6kd2d?Z_J-*rcUXtWc7tmgpUCO%XX<#&l=`u{N*__ob0=q z%bl;C!-fa6?nQ}v)Vp9FcGjDCXm)(o{L|p<^QHSy{Flnv2}Z^{UlD#UFjgi3hT;Jp zBmx`x=UaC*k}+HVXl3VZ{iNQDkruUm*8}WN#k@N9s}~wecef%m6)nKt8Qm<{kCT~3 z#Rkf$#{3cICfd7l&Yvo;F69v-ySZYiFUknDw5Z+n$1tA;imx^|e4Km$8t=IL=)UN- zvphDIep3!LgBhQ(F0`2Mo$fgbV*c#yK|sI0G4w18m25v4l7%^Ec`xQiNNXVCW1Sw- z*6-$LUGm9wV41MZj>{NcQI~L#-YvTBouw>|lGK*R!Vu_7Wn1i?n{g$i1w16}U0rom zM3<7rq}d(vvv+k2$OFL%DH~$``*i`ON`4%7x}svqjdqjO(l8vbi@eP;nl-tG&RaC_ zl?~nNJen}tHe{G&!CaU6}nmWsfE0USk9utrTM~xSaZs*iB|`vRxBtmOZO({nyG|dO=}E#fGd$dYCKa zlWLoq$=oh2d2DHgII(WVpZo^h ziD+xq=h&V|8J}<8*3n8zQYxQpxz8H%Fw^mT1T2nj!FEqMhYJM6Ul1m=y>rrbHrwrP z>1WHaVB3CFD5)$+QE8*l;Ku0L`E8S1|A{G+@6v11ywcY|vCjQGq> zH}?rLPLIWAkXW`Wou?f1|4zY(ngonEGK_!wr(MDi_v+#_-}%8sOv>ZPd%gq9`FTZ( z&8M^aHEk$5nG_uxM~(LrnIF2eFSo>4u*yRVvS%PqQ%@mUnZgG#`KOcQu_o5C9jx)~ zDbB@keq36E27S`#? zSmxxD=cU=3R};nLOzrJYtsmNtJM30J*|sm&->5d2zzf z>_KCtA}G2YiA6fTDN}B$M~^|_Lj~g@MpF|36S`M)S55chy1Tk~I~*2`P)r~Y@NV3! z`3x-kGBS%>e6${B%Tj5Yj|0PDw|$fTh`}kA$6(!H3I7~0*hX;STv4N(a3!pkK(HgN zcQJi5zqB{LBGpfRDLw|#cGAO;P(&}Yr`zam!bYh)6?LA{d*ELDWS|8jJMuQn`1-9L|Nunxm_ zEp_q~o3nPh`g)od7$)Pak$kGD$q+-UfS4*J4mUdAvQ%f4k^7Pz&-Cb_*b> zF($)&+SZvC1oUik4qx3fQq|4Jc54AMb=2mVYi-|Gpwh3*_t+2t9Q_Ly|Or zFZlS6v+w@U5j5Bl!vUL+dTe5bY6Yigrc1O(9?NK(F}2SRgi8slk7~EDd7qb@$cI|} zt2ePF=ce?EGu;tb!`r)er2~R$`^S=__axVP-NQaYcR1a6@OStLUUB%Q&^Xj#dEtZq zx$bWuDzCVgTTz`dZq)H(wTCQ{Sp|z=1$;Tgtv{^WHklO7ilIa5W{m8P)Wo~^>CQ+D zz%maq@17NXI>W>;O`5W1@vyb9WC3+OZw@sAQcSiXMh(awuQV(sAkDquz9v5q8YOJb z$b~Xif7br2ok1*s@^+Uko-W_@Ng0oMVC%IJ4E;GqrhaB_3Um7(SiPaYtD~bKKPOCf2TU;2#moL~_ zb@)F>h4VRGDVb;p0DjxV+;SA4DB*6DEf~I}X9H~Z>gw$`Yu%4o@pe~pEX%}05N2A| zyh2}6A1)E^>fz)BoHt_zTtZe##$F2`YM$;Q^#vB9*T~?pyGAvGsYn3LY#uJio%dti>4#^0Lsz!Yn1=v*U2a}M{x!8#>@)CYRmBD$0w_)Vy{zHie~vRSWFvhSW*JL+k0{-;P%lp3{wAgr z$78Qcki$W+ct-Gc)Q`n%03DvzF8#nC$Wy!f3xo~rv?`|q1SE4I zt?#PTGbbk)3>H2AItD|^Z!bVYRPG2bA1&wy7W>Mq1m2;2mZ4QR(zB@(a2IM%bc5U4 zAka=u1zcFMZN-QmaZ2mhdCyvB_Oojvu<&2-52uQoO|!9JEQB?Lo>K9Aq?}$=r6+TI z>|k#F4K87}c}CuF1fTe6@me46tEs)uHqOtWypCR9UyskvcMpv9Hk>7s!UQWBn%~2Y zG<|+{tE}#}=~n3b`$;Mc=SQ%oJ#36TmaSC*2?#CU6Ebq&;;{}X;A>-x(2g{@vFwQW z;^z3jr|1(0V!39u^4QJdSfvfJPt9(SMQs{PV!*!DepO;7DR$OVmC!HY8Yp!|^vAc8 z|3JQpQN`wNDh#Pk@b_vxsTXJ{Xk8af{$rTe&VW7=mWY`TrJWXIJSxHXOE~aW)w)oH z6{*1bL+1G>XS*4*GC#_`=Jlqv@;8abd~{>MWUq{!@}M^uALpJRo^++LNS`AcLnVpI z_p`bRQKsZq8MJezxq;LkjPyz2{efS4H;ZB1t^=)HM;5%$ESq*cO;-w;1uCBmA+TZL zHX1_$?Eq>8;0zlBtN2|l&x)P3n|UpOIf<8x5XYT#pkI9Mb}DsO+uGbqXhEQcvi5c^ zq;)o!{C=5qHa9S|wUA}{)92HhRHic`PUN%Eb>uT)kakwQkuL!M=0qIy7nfrF_Sp#r z0`=$G$OYE2-M8DR$AZzs*U4vJ{rg73;4VM0UPYf`JDhg#B zj24Brc4;A(o~DlL75;3vJ>`+~KhYOmJ)QObPW=>)`qlWpNdVJXgDBHGMc+s;5+*6h zV;^@$`WSX!Y*@MaH9KN&pNy-%w^u>MPV778Y|FoZUHD-x?t}x~fGTsSb#_GNBGOw~ z9*YD}@LcU#&#%@G!k&N7pn%HRA+SFH#svFQ2X~opJw4m4FQ}IDd!mUK0QOj%4lZ3tZ9q;xG)(wfm`u~D;)<)mBGb!Wg_|b>t6RwQY_NP9iXnSXkZxu=}U?UGsW=En+ zH2{FXH1>XnDOoJaZpj1C+4i|GCCl}&p9SZ#G28dS!7992qN=zXH%N0LDDL%YWE7TIgpOzuyoerXx1>LBfu26 z1CuH2?iO_jyxk1-RXz;rt6R%M)Cx**YscpdX)n^qePv}*rOH(iL!{k=OqtMrX>x+M9FAU|$?yNmM4 zQik(^(6f;?j#sl3A&GD$ILEm+_!tE`^3oTGaCF11ab+74t?SOavd&;9cC zy3J3mRXx2xsn-A8DtTNVc-fx4MsAEip_t2Lp|-aJ?z0zJiaEx>Vf4>oY|Mp2x7M0P z{kIOPm;~f`B~iH7`nyt|Vz9|nPfyRJf8d)Px&Q9oNKxaY2bvYW=eU3+Ks-z*rPXmw zq17wG1ILlsGZO)dhi3pjPHrL9%5&GUXQm2ckI@(Gc9>ap7bEv{r4v_{Qpcq*dBi&Iry2(>cyq;CS@e%#4AT4+Qpej|(j*|5bqKz@rtf%RY7d_ zBeVkOr2CLOHfGw;fJi&0n>L<4I8|KWd|&(TqR(v}^)Z64JMr0WtXnw>c)3KbKCz%f z9xH2-_*V8l50k=p+}!phgB8~}O<*9u3*=jHczOUhI8aIbg6%OQG;MBz$?{_=BQQg-{2^&40s zYv|j~8l~rKQbaH<`J5^`?K!ZeEej-Xgd513N25Ph(Pusn+xp3>ZMvxp9ETvx9=LkP zTKpSGJ7fLtLE6mWnQ6y(d8}PaoY%e{_qR@l|3NwJqhlz`SMALy)6s0)uBJ_-9&&gj zHAi8Pm9X_PpC1QE+%ETSuB_#2+)#;_v%uN~#+D)EKyH8W??Zq)>{mXxqk*t17Vs~uLn@EaD0C&b0 zDXklD_lq{v%qx2SS*d!%iYsKZ#B44lI;aii_<>z}V?{a0SlWTEP}%vMr@a++_e&nw zpkYNCGHvq+kPU>nUGur%S1?*(PeeTHUl0P@3T>a8?`&O=#9mzGf)e3j7}5YxIR;pt zcUm3qOrZ~s#$sB4H6B!^tFPtKru&4Xeag4qF(ml1Rq#({9e6)MA=B-*EgQH{&0L5J z9FU$Zb5=IvHTquJ!F^+%2G#ULMCwz!G%`@%`@nXmZe%x7ZNCEA!a}`>gO%4l*wTs!A|&qs9Oi60Eo!b^ z_^kOudg*V8&#IKufjtBq35I+7D;)!cB9`cMT+s}@L+@H~wi};peo9XugO*8-!e`5`RdJzjKDeVzB^+jY8=|EiB*PI}}zIfq9s#12eWN zY8CG>iEL@eQCKS$2gGw2|0wTdJ;yh~$tn6yEU#;d$7vQloJ{StEuyUHsDxh&*k{0Q zwo)J`c?2viP<>04X8<`01E3_?hyc$N^@bfDE5Ol~VMGh>(!=IlmsC6 zKIn|G)v+K(b(1~SBnVVGKW<+~Z5Cy13ol{tTu}A8{R;(4nf@}rpwztmaTh|T6r&U@ zMaHC#f)1}b&o^2f;Y0rC8FKk7#E%N%^1`z(Wy(XW1bE@q{6dS^`QQ7Ur=r1djjrZ^ zCbB{MHKTrcZopPf4`}HasO{=b--oX{D5{a6lar;9(XpDoh2Nzoq2?2NF93&wG^c69 zMPo`qI5gz(O7(&jKPF$JVN4SnYERU(adKjCCw;(Ll&5C)Q93dP1rwS=vAS1=gMDW= z^A66Fi;}6$g#Ztg5fi@sNAgZTYFYQpc5K>rolGi0K=tgmb+t!7qVE){%_}cWvueQN z^xJ<78P+zSA;XU?;~95z84G$yMFwM&c>o;Oo0-n@jm=RQ8!$xLiaPUme0myMKBGAj z(uxsYQLtP$kmKbUTju;)F^>LEWM;>dg5?&|`rhkqk!_O}7V19Ux!ut1c87qV6uI!*H5NO#E{u+bq zn*#sxF(HVL9h*9tBY(X$i2EnlK&3RGeuR3b!y-$uUC;wwAz(l;TZkD${Li7ep0DFY-tiGxWWTg?I z9e^Cuw<3n zy2py5G|W2ED(Np27zs?EsHvVipI2h&e-|1spk<|^3(2RoMFq*h_lJJ{;4i?njTrPf z2sw2OY-fLJEc&vdt?-*#n4X=~@A5RfS#9Jv0nAVMW(jq20w_Q9hS|0mGWdW8^+U4L zRJ1?AB9mjE);t`VT@qWMLS26K()YYj!B4r!uc7PLiNGM(0CxZzc@4sy%gQXY^&}73 zRXCCfQ4d?!n|hjNuV$t>8tRLgHoDc8PihoiwP=d6Ek^`x>B)6%vU^9jPT#YrsE_Qc zsw#CkV(OvwO|4=~Pk1IRoM@@%$v%Kfdp{cTB}ML?$>e!lb470~YMr&BOhmIT8oyro zERB{N_@sX;4(v6!VqPEuF_v8yyuPeiKny^gd$L?Z5{COqin#VoLDWLM?4ASm?$X;< z2`v_c(N9${A&;w4?rsfZPhmZgiXw?_>pz^u1oi-b;$`RD$kds{j@d`N)t;{ z7dY_1*NbHQNh4{Yp9lXWPa&ZeVpwBD^|B8W#Wj zwse(qCHlI`KEoq5Q`yB|1~z;YP{VPK2sHDP<>C1g$s1A;wFlei8HSl^Cd~RdtuMhR zUDb1aCH;4k?dPe8AAGAP{=VJ|;cRV4iGAo=83%;_s#V zFqUn0rxy(|0yxT#0^aVgqw^;8mmU>>b<=GvIkf6AU$K0b{6XD@xbXmHAd8evt(&4N z4vhc_1`wOam+~O5rz!Wtlb3)ykv6*V;7(mp5C1%={Q!JUC%`zqeQuZ^iXwQ}dhJsg zhQe3Fbn^SUn18$9nTn|Yq?|syTeFf}!HAiyOQ+}%BEdC=H^dy&W`k_c&oIy6n()#H zl&umbN7E)(VL|K9p4{Q--pl>L{u=$5;p|=(C#Z#!V3Y-$!$-7JCtAo%uGai>1xtTB z(VmVa1FQRPzakvbb8Q)r!s)}^;OWSxG3|qXGxsqsgco%Wf~Pjf-AUZ}%MaUzC0$MJ z{|*Q3{V-^;3B9l_>54XAvMd7bZ@NuXC>KZ3F)9Z13R0A9u7d8Kcj!V$t44hetqo## zI?J3@$^%RA^^O<-83Z4_{W#5FpKs>8In8I_9wX$G-;EW(oXdl*p7S3$i+^-3fMw8X zqC$uyl4|G(Gx3HufD5SUq!*uh?!)lCQNrJi8uwoHtS1l0L;OpRc>xLyAS#A_-FHMY zNwB)!<-XMUaGBZU*MC};;^E#o3fIL}53u$$`-dSBnZZQ4C_jS(T2JADPNWq$rPw&B ztGknyIS~f4xvlyz87>6MJ&CTI&;@@s zE@#xp2R!@pAUx}(!V~wS*Lrc8xVaFCCO^K!r@;KVU?6iG2#DBqH<8NRU?tvmdeMLp zWpF)5ArJRK6T1U*;7f+Tdsr;+yl=sa@NUH&(3nKSkk4K;fow#u`Y)5I!V}S|Ww(;{ zcntT4x|5jsQ|8_-#%L21Ryg#=tTIp z&eqailNa3#dqS~aE-f`z800y8b2lQe3<$^qDykN+n$Mo!);>9&=@JhZ+kmb|SyMJ) z#!NJyKIrx8;C>urrn!D{Y-#V(E86zJ0+mr$ig_=b^kzWJ@8N6J*{7GvM#E)j(z5&a%UtWcnG2XC5jh$Yk|X)$%zU&Uq#L;+eyJg4ChI zHpIWfi_pu{WOB+2VCdbZu)5OIvGbxmBH{q3szL5>6O1CY9r=>QJJd_s`aQWc9lne2 zcUr5+jF@nl!?rN~hb;yB>0vrL+IH}G1fHwH$1C*vA)>b#JHP^b$YHJs9}nXfa#ze$ z9&^;^bGpWTK0nP!uR(_N(j6tfzYY>a_hAXZiZq!~yejEe7?e+cjJsQ2s?%a=>u5J#W^kDTZU zgfkf8$6jHK{N4$k#7eGs{Ri>SFy#v4+gj_eyB>ss#6liZIb zFppgI>YQE(ds8(eTVI` ziOj`U34gH*RnouaJrnB^Kws$?3u(<=SWx)I2Z)-P-nw4f@Vu*+z&h!rRaM*KT3>Zq z4o{U&N(RmbX^s7@L70s0oMiyAMqljRJY36%a1hBy?xVM-skqjKjM6tCE6ie__C$a8 zOyi=>U{CihdhtDko^n{VCJz{%j4)E)DiE9F-Pb?sIi~DdKZQ0tV;+BJijf*T=A%I& zGQ>&1-F#|JtNTTwmY5Wa_P+CZ&4Aa2Mqd8zR4xc?JxDRQ@A>_y!sJ^OY1OB#=3fxq z4P}n|f@hegBTG^@fP5BUb!02-tpHpZ4GxVpAR6)8tOpzN-bj&3N zqarN#RU~wJSjC%1#Pn9{NGj}I@wUqydFuvsWW0UB^CD{cf*%K|%p9q4$w|CUb42#r zwM+VLd+zTapIv9$J|^WpLSU`*z@{`Gn}PpGXo4mZ^)Lr=;*&o zsdoX=rj8l-58K#gu%qd(QK=b>pNxgWm+m4{h9- zrM#VY#j1NqAJ?>^XxzLVdZxj{Y;36Dz~boCq37MJxk*3HURVh_H}Hrjb4i|F+$grC z659L34>O{o#f$a&wEJPEzs(=ehwls&l@}V=*yq$~+*qXU1hQX*Y83)}gSNcr0zIdJ zUi#aS`=Xd;Q?R75Wa`!V3m^gnW?2A40~aKV32~pJP_{r_y-{@I?XeUu*3qf?S^b$YK9kf(Mg3it74jVd1a55^q+ zvk*(C*_|mTr_Ki#F1isl6T;MgcDsc3a03uaQF>UpEFb_yRIof(&k571ajyOqS~8Z+ zB5I!`IKioa7j(+>A7j)d6rXf5d7`>5@X1SC2tqciAJX`1yYOD_p0FW~N1rye&rt}M zA-r8>PPSecmb=Ij_(}r8yQlA{<>C4|W82)(wcwnPZZe^Z)UxqFbr$e!Xm_?^>9b;h zE37Lgv;C>}0YIZ!9MB$IK4UIKDJi+TySsjhJ}riZ=#?B*&r=YP`y6=E_0ja5ZcQ5u zh|Ap!J!Kkw2S`zqE&;MB1Ob_=Ucio3uDCZr5bPwb^Ec0FPJPFHAinuBO?h@xq6Npt4vo8DaQO|d(Feox*TK^N#v%%a%uX}TUAanABYaw_+B>5$+ zZ7%F0)ztoHFw|eX+1o;A|DPzcv|Y7BUE3gTE$b1hMhoDqy9Qyxubu%d3DnFoCOL{4 z=ixLU&jSo7d!H9CB_@%1cyhk>tgdAaWi77Fy=Ar*>|pc>;7UftBji;B0)ZAuCWr0y z;x84^I6zWgGN2d%7$vQ<41krKctV-(NXN)R>PcyJo!Y}eSqhdu!n4oLVis3jihaAI z6T|$lV>RvWYHWSRj>#1t;a8%-v`}wQ%X=yy!L97#{Ry^1pkY?FZ=zd<3_|vtim9Nx zo*@WT_xh;_ui31^mVAMzctapr6uHZI1{4vz86d>4UL#k(%X3Fq?{%xM_(N8-uLJ-M zKl+h15e;z1QO=89rJ3Q8M!AeqWnc@osjgZdekbJ-i00RwJK7Fj`zBWS7XssVkQ(;Jp#xyBDw-M0nw6d#@IJ~q~=ME0&oNDx0Re9 ziAhQNf`x$P_*$pKIWzeUT>pHr!^tV4N-g19ko~FlIkoiCcXfNb-9m*Y zKDm)^gp)Q>*@gaCD5|jaB6K(GgzKYxW)v8{zMG4(p!Le9(fiz3jHF`G1u~h8?7n+c z-oyp?ww~y_J@8MS8j50W#uI;++WIcYXqB&4Z1B78Wq7XQ4VAp){}7PybOZeWcGkuF z&{syiTMO}-h&F6dZ%F~HTIk9Ca1?FX7$C~Y3{Zi`?O)j@Aft0D=i`f_Tc>&dY7kaz ztlG_&d?ho=X;J?jDQIQEK{6=4)M8t`%vrxMXFtBL)J^1LL|Py zlxyxOV_$v+;DtZaMPwOEGE@Z0~Zq5 ztR&t%Ml=!jh;Y?>lCtwQcFH5NZFn>s}k{2jGUDqecn_5^)y9@nOP` z!i$FGY@?u$Ee%R<)A0pAc&WR|K+MryO>$|a*glQUh++LK*Q3R7Jb`tqHDw*kA9(p) zisSVD3+!W3l1d@PhQKTa!~tWXe_SvE4LGwb?QlGmkD?RfCWF#&E)&;UbckV$2+F*D z{tUu=WU3v!v1qJESLi+&ey_ZOnZW1Df zA|)Uo1c)?4fY3Y(_q}JFe|L<1#=iTE6MjJYnrqGZ&ZoV+d#bBJN6ktN0)gl>pQt_q zfi5J0Ko|eLdJ%X;PVZAC2&9&wsrtw;FlRG&HmFkJmd8l=8KvoiI<318l5RYqYP*d1 z`(qKw-}}KvOXPurH7d8AM3po!lF%^Nrd2okZw9|JS7#b53mUOv3a z47z+Nk^wR1evf-a(`g_+w?eAUa70EAB%w9Y)|c)FTTuZ{P+geS(6bKaz6r8m-&Wi>BmLT zXFE|E0&tsho!oBx9c~?;$#8@N%W^kK5Dxq(L4iUvdL7wZBm$iY)!nF+ zNhkzz!NBZ z&`{{&Aw5VuXyZ{uA(ZbHNN0IkW1`3yB$DMs!wl+ixCRDYrMyf7ioDQ!@ukf_b)dVq z|8IKeaG_x&SGSZe_P0Xf@^|(UK5D|3YtHZzXI8Z_a;V4bzAejKyB^<*hwig^82nl{ z6O>y7L|b2HGvSA8akrcrTCSJ=XST)2NbS#N#|>9Lbc?%M-A0E8eASj^NoJHdSK5Rp zLaDJWoBjyWyFv+wfl*p1DxR7aqyh$;KAvqU#X46>CYLySW-vFWD5r3X`jivoG;a{? z7}cQZL93=y&7>=!69?n#ReZ4(72gVSc%kX-edhjHawu~_mcr=q0y+kUQjqsrKxF9 zUOon2;_Q#Wg?C%uk0ZZ@{|w42DgWTl=YW+c#g5Sa5TR7Oq`lnl^$F*}5EHegug@r# zmuB0{AEcSWsAd}^M2u0@V=z`?ud1#znC`zmnwbr#kT`WBxWr3oZEiM-6mm_;(F0V9E64;g4Nc%J|+ zO-e{y1|-@|Ku;{%s8Ks=%&A5l_&1}CA9G15Wj#Nd4alXLtay< zeaQ(Hh9MA*+;j@30TM0c4iP%``9^GEQo)dl=Wj6b#IkJlZiU0UCwX{WefBWSv;3O` z6D*7Q`>T&wiFjHOgmU@YI0pD@#!D3ekqhFtdoWIZy*E7d)`hlS6|CIq;1E--AOtr~ zn<|gYwdjeew^!@!cpdC1eBVAOY&0t`6MwhLd45hiY}E9d7PesnJHB#3;S!A;a%*>3 z-SRL_`5p=`RdTjA*|01pb4_QMhxXu@pJf1^?(fyjyJwm#DiTV5qWV70>J~RtMqJ~K z9SeyWf!L82sJkRNq&^K>DrO2p7}Lsr2&BApn5Ezxk|hCwdE=Y6w#Am>D033`?A4n; zqXuN+YAEBWfAu8m8X2uxm`-U*9_7`?(l(Bs4++;%rtgoW*_-JmjMHrL^YbCt(C~1rVw6pV>iNo0(!+Tf zGLPqH6}=1gljUig5Y^gD=GN@*eb(*7d|{({xU7eMNoIcgz!~l$2f+@;@X* z!Iqa%4Q^&4FF8leq3I8;+i5Oh1)x%OcgCPdwBM!;NcrY@F@2@N_g_#*qf7JPmsEzm zn3BDuxIn&8le(Ff>I$tya`uaGlmzOMMk@CR@skO~UfESWHeM~An)P+xh6E*qh45MR zM_C@trKfU=qI|z)ZrQI|y3X#0D!KN_%~XCje_ydG;V7kh3Sm^!Ov#LCA^#xT z9H@_H*rjko)5-ad#TrpG2I(tPan%@nW|cK+h~ zidv=GvBDWhEtu6iqsz!o&EES? z(Dccy+}Tb4X`SjlqQU}D$~GrM)l3V06gV0+Xa{nw4H}D-LZ|2!uT>S85S~8s+3;?+ zKmm)1EpZ6B;;q0@?SR`9DWDiM_F>h=J(qPk0G=1VCF?Wg)-=C%ljE01zXasqI1HLT zv^@5#KE^Yd3TBnKLV=olQZa;g+7@_7DMbi6k7 zi&Xz>;A3@{Gh?yx+spJK3H~kT~*_08Q-;piZ13ri>GpWiUQej+E&Ue$B&T zQEy6|CA9PzXG~y=>Sw~phE^NkQn$`J2j(}YwYck*VxI=_Oc^qd74m%(oARq>DR!Qb zH{n96d{eU1QmA?iFM&aiz?A5ASA9lFND+*~Oj!$Sn4aa!gn8BU>2(IB7g(EYf>kv} zqb5cQm|C;q?I&9U)cGM;Zq1L}#>=RnIzM)w=d4J#XO$W#e&Pn$)z+EBW*p_50Dt&% ziw65RFYn&l#G+z4vs&Y_*oHYE4`(i}t$ryIY~FfFtj;s)fJFWQZg&!dw2y z!)G8@fQN){1${tU1GDD@u{y~1vjfQ!&~9#UI+2@@O#k2gbb1Jy{R-0_@?S)JgL z43k;+(9Q894U4Js&`fgqt*1k_-bfxyA>KOT8a$%1bDgfMG_;<~P@%0eT-Xer_v4oX z72vB@+jco;9ph2eGJDS*fm5m3`x`2BV=iFoXhNr@wdtsGTCo9)B+doj51OC(k1ygg zbupx;5UEZaQ4A_aINtE%i?v%@ltM~5Aj&7(;;Uj*J|CZ2rNcZmn;5dC!+Hl<;PN*g zmd^9BI+kBC7qRy9X!LrVHMPo1J$V{F)n%4mOt}>XM+ew=)*YXE%;RE+4;j#v#V#An zz@~4*MN;_K|wLT5IvnyBn0df66~ zo{eT}ba4yI+vPw6?u*@~V`H)(RwjWn{N%cteja}E;tRGR;G%3VbT?3kDCNh57QMk> z^vL%$Qwn5fc-_iuYM2?q7#oHUI$g)rnoTWLHah0rqyTu+x%y)#_G|Yo3yqBJSJ@?^ zirPBN&TNF^{X)K<+N6$}0i$APINH%*s(G0z|BsD^{4eRCuwpMD|Q{(Z+50n=!2R^pkKkjsyT=!*dE>5&NqSAXSe0^bI zL0L(u1D0fIz?P+Ma7Uw44rbX9()}~an0)*~W{*edPcMMamzPy8(aIhOnXaap1`g?W z61HN#%?*@G|AUp7afwVA?|9B79^#3W*f5ZVJ4z)OPwt*!2a|itt*keCw<^*?#BBecb5RSgvFNXYdUL@)ur3`g;!USJ)l~ z-`G+cYI`?=aQV|4o@YiAPiM2T_UEVcSB;vULfA9)()5meGNBm<2L}L|ZEcm#{kpkC z)?rxj5cu3wOo_d?(b=u?z+yvP-pppLl+567Qa$LwA-`Da2MukdYz>)L;kTl-|p5<+c6YTug3(75q=*81ZLp=9lgq;~G zrwNWQJE;;9HfJ#C@JE$*LM>h(-e*aM@tHbuIXfYAU774kY|!O#&3+XVF9GOaSm^<)_S>y#O`ayq zjXq6qfiwN8DS?WEXrvO_XO3SCR1^Nl;(MiL-N()5QDU`U1mqL^Zyk1|Qgo8#UXPrn zA0O5J)VM_7t5RD|wK{=EN`NGU6aIyIgd}f z%(*q#IgPP86@0M`VA$tJGhc0O(QY|gsr(_f0m`($!s;O*bz#O6X*ISojVMC>Wb(DG zchUE1En)-|=R#L2v0s=~5|2^1;gX3xWXPrNg1r?e^l9Dd_)4W-Blz1Z0|uR5G2Y7^ zW9;q6hS){kEbez92a#Fv#22f>I3lmY_aeumU>fB{lwkc5ixdp%Zw@(e4e85{e!iW0 zD$+C6Go`nrD`q%4vO4h-PJJey;L&Pcd4~YyM^aDz?6|5jdLd!kyGt&i2snWa08HIK z@!qtR3^Cao$RHKigrQw?3aGZhNS=K7a$p^vX7WU=wl|wxKhOI1R=1mTrqb?*r{s;t zVqv-ou2XwiG1a40ajJ=3dfGWpXIk80?ym9jeDAb3dD@<%+}Ju3u@(C#SLETAs}xYn zIuIz`&Q=)=dP(}hT|WRmq451ev=yLfJ2- zisa9hs}4=?4B&zo9B9rdrLoV5L_D60xpE7xGmjkam#Zp}&M4%Yt9E$sUGQc{?s}vb zC$rU(68L1rdmSyUnKG{^f}blHxD(2VTvckp&6!rS?w8B@1Re&`xu?0Z&xxtl+Cbut zFHs=D8+}g0ov!vN+$z~m_2LNDfkUfn46~m?B21XT;tK=vo008$&!w-dT7CO0PC>Xr zM^#2|n1^_k~^VvEO40PM;a4kFxO|YA7>9BhuNK(%!T9 z!so5CSx%7~Z;wNjv;is-8XCH%Mb2qs9q6#*36xt(kM&8|4Q>6Rty#SQ?` z>M<_){o@>==SmGK6QX)l8yszR9N}0=f1V+BKM_06+eBZ?mSEWL_Pm7ICc`K_`|`OA z_f{+WO>4FrN(zeK!%!IlONbRros_-1fopt|=qHE6(AzhQ`47OYb@FPHCJ^ z{az`R9xA6zT3F#l>MFn#t-T$F#1@)JJHW3Y5MND!I5%R zTtE9~>?c;2VlZ-!IJq^4j&XkeT&j1=oVy0GqmuZF?7_Lg!P>L%*?XZxjrCJ@#v4q> z#?QH1ZqkzFAFIO?fnfx+TC2lLjOoIxaMpjAz=D}w51Qlvrs3Uw2tFEpHyf821ml>Q z(+;Rc|Dif#-p>PvZaNOz%sY!F_bZ?0xcL@WgV_ok^B!fHRM| zHXU2id{Y=XSe;>^r6!EWyznr z&pcw8IqlJDAlj{3XBZI8Qy0TCiaz+KHW>!FkZIc?tPD+mcPFFx5sueU*CK#|eRZO5 z3NDK%zs0NEyBcEj5YCzmgXZDW+sB1wbJ~=Yl$_y8p{y|qzf!qbBq`Q?vYDNCMilLm z=g{Lkt>)WRC!W{9#A->yD~)-RdL14pg>3;*+@!Q;==RCypKV*r zw}U;ig+#^=#T>2$(-7;p9fglBXAj)0>YX|bmo6U4sf6D=KM@@ZkmMM<;lui=Lg zu%-5Bgj-bN=5?Zv$!b&fMmg!m5nUuq7jAXsg-#XR^PLq6L#x3w`{}?wOh#iMY^`K( z#e%T+aHOxNv(`e}H@Gym>x|%1b_+Ot)ZLpl*tb(q6ZKfIYY?Q!%oVC9!J zV^smPpaBdhRLe36%jX2Qv*|54#oB(w!_fkBu(jrkw5ma_Pj)VOIk~{{qn0#f5BdONjah8 zVEuPD#Gb|F1xzZR}Z3@XG9yp<{{$U4_co{A?5s?(h?IBl_Snh$VB|< zX{Yo{e)44Jf}51*-y0_o^>xo%;1A?%~e&)sW^>@*yZoz z^j>M-tV3w3x_LD1&@0)o*pS)P{!?!`K?Yl0C*LU#)E9d6XR~a+Igi!`uuz}R^H&QJ z!c~YD2;3aIjkiU>L8_3TPIJQz=>;bS6GZUTWu7^p@Pv9NnsOhIH>F-sRDoG)?8l!IWHSq@i3*(fum9Utu=WJ%wUiQDqN!Tjifk ziFOjIl^j$caq|A1sLlzCz0*gL9@>?(EY&wXu+Qj}sx`oA$0+|hO9xjcGln?6snFBm zJQEeSzf2X~nQP8tekUKa&=ylIu}NU&uf{0)VJXi^p03_?svHqhP2ny|kKg;z=x}n~4T4?EingDsSnbbMpKbB8Y;_kLA}aD4 z+(d_chVSLH`6PuFZI?$mIV#4;D%xGY=q?Sj?7avwy_QgM<$u@qnUu?T`n5WOD^Yxk zncxIWqcjoV z`Dxp_q5&Kdz@mfoeJ&oDS|BtsiI4}~YtYJQv#PbU|2gssO?<+0b+YW4;#_@5_X5K} z=fbu}AG)(su19&`x60?fMVq`|hZQ}m$vFx2M%zj5hU(eqK?Oxa%>D8Tty&~>zSD7h zXefsM5>_Iu(TC76+1HD~6FpjeI58J?YU`@rz*uR#6+WIFqk60d7cK1*V{WG5PAMn7eE1YaC1 z%wM-=8&hmn0oa(x9Y} z4Ch0-mka36k)#)$zo=flsj-oS*vrYGF~f$OdauMYE{1YXFp6EK`7ssTQOVZt6)M9v zKRyKCz*B%w1T7z5vnHQZZBwPSBz8$Uj|c+zq*QWbb5;0bV?V`i683>+Z6ulO8&+!2J&lx*Ak-sb`){nistf@+E6f2#P6CuIf3K zItO_{#!g)%CpP3w zK0G`m;xYNk5x(=dLU(iY@G~}p?q~^Q&S#Cf^VgRPu6}Km0p`OMJD>Ec5ap`*_v20z zCn?aR>e`>%R-82z6^6qK%4Etz+=*_lm}D7&Jy;Aa_sy~SV^`j1FC(%RWVsn*3)^rWIDUa?!|mWsVafPToJZ}Ht8|eB1lizA zaAZ`QA{d3Xb&NgCph2`>;`3aJJ>9UYN=UfO$)PH96S#E0WOS*gTdLdg#Aq+q9hv}M zO8ABDpeKNTPy1hDQk$CA>6T*GeZ?3qvr{*^bt%6BrkL-N0to#1bEMIfpOI0pQbPOCS`G z6-Y_dDxH4hXF27kC_y77aocUSMLKr*=;;M`i5FuJHPk3g?+M8C^`GkG=XrQMvE3Pt z^S}pv>v+!vDbk_;Fl7LTiSR{8Lx^NDi<&;XWOh?3wh--jQ*CTFP(n`|Abw)yhUvvw zQ;RRk2xiMJ7wBW6_}^-#{0#EQyZcZw_FRzUpudt_QOL)pF~98(Si>pYi~T__$yJiv zj6&C3S8RW@xCbCCEvLLyL*ONvDR1ST`;s+DfIr&(J4O;;?G;j+jknYW4!EBB1;93M zovBuHv8mn2j0Lyx5$e#zqtCzH%IiTRq?Y2&HQLx*wm%J>rjGlGi?yGI)YD z>>o?HM=q*ym5dyZ7Hd|g7&c5NN<-7LqRnSpyx7c*&2NoU+jtrKvZY0_4)kl>>9lLnHQ5wzm%l$_W@qr{UFLAP=0Z_NNeJ%PJ~)<1$S(2H>4}Tn zOQ`-?i1}A6!Co{{qAuZBm89b;cvNd6OMQ1AE{UxTqI+d_p{n0Z<#91z?73HLl!xy; zwfLyY^FBD@w?(uz*3d#)?Y(NI16(tms2avC=>xZ@kzw>1m-}~g4v0*|H6FFTmXn;H zxPLS2Rm1I-F^>dl2;Gg`8>hj~(SFyHN#j*5?i2k!Q@21obscY*)W*WQ0njHVBEdTV zX#n3j8oAjVJ=2m_tSH*-aGCe~|u1O5dO6n5KL)Qf6YkE+&fTpkCv9sp=(fPAU|9PfL4&`R88?_WF=l zfY|WfH;G#5bN_zA-13E~%2-71ZPacqzb4KrpYdNpxR+A?0M||83$UGw;@$=b6p<$y zQ#|Zod~oECNYl(mI~Ez}S3F$3Dy(@!zY|cmcOlI@?^KTqN89vj4|D}IfeEzEZ1da; z+uc<-keX9d{m0M-`BPFM#o1lV>jRF?Q!HdO@)s-3aJucuyo`{*OZ zHS5W&##OuA5h+`rZx>$j#m;|eIMEk`0>*6XLk6b=RRd#zmzmyiy!0TSz>TD@S0d=l zRH`SnnL(?4_Za`Hf=6{bd0WA9#t)S=v~~VTh&O#020FY4gg$_EeDL#8DxlFPjTMXG zHvPR-ee&=ysBjt>bRuCT!mW_28}a9CGY`rD`r$ZW-&G}UQ0=2Pa4p-PS^;#DUBzdb zfh-Q$^_5%C^lF?2l2bo0jWMtP3L>W&ukL{kiIJ)KafLE$^bMJTO8Fu2z_imVO|6kF zafZX7@RB02XOcQ8{jB-G>@qYerXWz3RcwSRNkagIErnZ6fB5>ow`eSvMz8urVTAyT zn6^k~;Vq(q6CLB3A8=yL=&`}xmkpesqcDwOq5uTf_D)F^uvG8q@T}6pAD9B~f@`P4U{I^tDdY-Q%c5hW*9TiiA>C2~ zBO}d}UkAs4WeeE14eL)Ce^~z{pF2f0wy}j@34mi%8!!X~Hlzr4)+0X+oh|*vueDn# zrd{R6FGre1hF(I`q1SOE7fKLW=LsZ)M&j24X#U2UkF!psy*ehM$ zeQsrfa4X|p-TU-_Gu72rN_(4os_(;va796SD%k3ia)MdtoS#1r#K2N4Rpj?Ul23XN z4$H}fY$(t#D7iLNpXF^iC1*cL_oU}5$<=0ppY(RNP0_MW@_I3o_{K5ht9s0L$ zYw8e(d?Pu%ABl9k@8=B07Cv!G0QWw_H8qH@*pzXr)KJBZ+YJZUR+(Js*lco^X_Kg$8+o;+wvjRyZzIdQ!J8mowe)w~sYv%jP7l7er)3fMX~dcTd_$4>mS z!{#?S26t`-z06;dae><>Eau5ltme1L3VcxZRrpTQkXCaT?lfqnZ8B|U2JIMJMzUql zk>6&!z9@417iP#85oca941t$ej_mM{d?gtH-=?fq$5qtI&<_6PFMk@crrmkZ*YVU> z&iN<-b1Ly-YPf;`uzXrrlZz1O%qu*}rd$Jtl>iv_WNimS1IxG1djfS&dx5;n+VP_S z--y%0!=%m!4%jz+i(iFi8-N3SWYu8acWsg}Fb@x;eP%%Or_-_T&*rk_t|kbvb;&I( z_})R+oA))Dl{rf_J%}=H42Yw78SyF~;Ci|99%IKwv1G5Mq_?4`2jaP9L|NTi25BAd z5Um+mPiX+)eNXxM6TV?)3d;pPT<5=c9waQ!ZaV7P93;@8F}_t8uiz2l2~a>`P)4VW1RGL?a842;e292OaAbUr6fK{vw z@4k5vc=?|fRa^i;Lx%1@1&P+OT@rn##+Pz4|`jUD~3M^ljJS3L<7-& z`4tL#lF6-UIR$JC0p40iEw^QGy5VxURipXmC`oc+^M#BAvPXscdGYoY68n=B)7P8gsd4Xu&08Zdcs&*X5v=T7ES>io z{zl-2vvdZByyhh0^Ii%3ItXd^sCdc7bbY8^` z_uD(4u}7`bT*3NNq{SE4`q1b2aHgf%O;}cD2!&MsX#8a_C+VW0(VJunk=SM)+zNNz zR%m=CQ|GEt3ir^m7XoL7ACA+sV{!F%%($AxUFkplQw(|8z+~9r!&FOkp7$E(Gqbyz zH+-ICm#l|(KSX+a>t8s7Ox~yh!XN^!O@J1=}FJL=xr%7QL&LmjBhfPmkc<%!M##gCE%Upm}dH@`G8 za)@9LjGo&*5Ze}B^t;$4A4LiBFlMY;o9%v7GM`n!cOVoq90aJZ)rIT6a`RxRNE~ z8@QuS7xj1>!_8d=XD%x8_ zzWB$KX`Po8o6iQL-QeoVL}Ld#!3}dw5a>$fcFcn)9!q1NOl~=l#6tkU3z`;Q+~6@| zeAAX&{9+A%8~wCaT9onBg@C1lZAN^!^^v6qtFiH zOc+b$Ymj}AAkw?*3bsMPLNC-z6a_h3joH(?1`39TJ(0PPn;IS@nodW)DL`>e;?LeW z0A&8p)Rq6w$ogLZ7@a1v!AM0sd6fV5Y;k4p%Ab_0!Dg?G%B?t$Jaeuv*k|!v!M?-uNpsMh9C&@LEercAfFn(mJGl%@Ag0`{f8>N9O&+9af5K% zz0>f8JJJyBJl#~9B*=I;VPOayE*x>BDM)Ab2gi+NYtuxb@ zZX`>w3PW%@47W!*Tw6O1+$i|u@K3>?4bi==>snX|0Kcq0HPj7{Uv6_|Wv_l>InyG9 z{FZE%k(kKPcmho?b~ZaNAW3m}Vo>WWx#>>>f49hyN2`23hE*ElBWvDTA<%iYyX)1x zfSz^FUB|`E@6G1}4(FLUG3T?-Y1RrxmWf$KJRZ@L~Wu%3$wj?d3s3 z@JILwE_tGcD)=;eniX5{={3V=5cEhlp^-ayFJYKI%q#5hQq4(<3v74lAeKkv?I@Hkkm?9u& zxlES*c3tYUw{47y-^}@YDPmd&|G?}E0vhExB#gYDBueyr4-oJLymXE)y|4LZMp|d9 zF*mWu;7HhhC6EW2w>vZ~GX78?kZmBV+qHW|EPBPZe2oJ+ssWuumRe2Fa7ScF!cKQKS?@MJ)>^JrCZ_mJBPI#O?Tuhgr>wZoVyk_q39d-bdRi);sEzS0f^^JQHVkWdVpmM6WfD|CX*b=vqURnqvClGs~V*G z`FqLw8}73%R8xUP@bDX3d(E>U{=c&LyQPj)06~Phu(VnN{i)*ohFx!(-2^mH3G95a z`)y=LWN|B0A+gHZXrTYm2=Ak?mpVitv3^3RlHMV;(<9W})FF?3=icA5=221c%-k7) z3s!Q&qACG@2e<*WH!(n;5zr2Y-rVMBr~y*!Red>IHjvVs6KiYM0anE<^)rU7k=V)W z;M;LB?q3$1;laV*gvCONDGp^Z4r^6i=6zqsk6*9*1Ni`!*kw~m0Os@PD}*nwMe zVY|-ZSEolh$cRn5D(S=AEMN*{ua|A9>H|_yDOd_plv-eqt~`}qYAPO6Yf*ndVVPIY znLaPhKA{(Q7p3*DSxr>p7olfE046a)3z$!gnj%hv!AIoFzK(V&oziRoK>Arr_v z>tnfq)wbycMu+=YX?!Nw;)ANRLaADH#j?v`u2sn-kR%`6f0P@wckp&hUPza=bIp84 zVkj@s_)AWkA0QY1opHoacyp0li8uP=$w6oK`4|P$%|@ogRjB--Uq9W@S-wu=DohB2 z+gnL@mx@};INrwU4;&c}zTZ0gp&O-mqT@7?n2*+jwn)j3UY2{W!rREb03Qk;%jF(P za?FC=CY8ex`I(9lWif!tJ^u`?Lv9}HK0{0+UptvsOJQagi5I}~DDW`xawS4A$}fsN zvX~O7f*AQzw9tIeCw2ww#kPGABAx;81iBbrPf6QNN9XFf0HgKbPOXqZFR*pu!?fSX zqHLFycG8;(G5aF(GlFpy5CQ-)Y}OV#i$Rej(n45mhx|=is&w+lBL(%m4PcR{wm#X? zZRq!!Lo_HA1VDo`0IG+dbbxH5CGYP`jr}~o7!gVmtRi0r;U2O+2z_e&NyHpL?XtFdOv`x)k-GG<(YfG{rM_gd0d{avc_ z^{UegceLUMO5%a6Ce}BSOsfL0AlWbJ(IXO&qRN?a;`cabe!$yO;#A_7hAc1VOWs?_ zzj^v#%~ChT;W;IUC+fV}?1iD?{{g*c|0S5?zq6U{|MCHyY)?=e8s%W{E$*C@NTNc* zGVcd`esK)}yUutnxQF^dZ8Wb{Jpkec&hVJt^X{(`s+IaOf?UEfw`N{GDR|GgqCz0Z zXWTEhWIZmH5*cM9qzPbHjPqh55K(kka;}0-$+}O`V>*knd0LCF?Spb2nai0a0u=RiER2!eE>7O*T zf9AaCL09|ph0O5Yixlp^U3WwEzL^C(V*EU>iueFkhOh3%P`zwBk5_ej3xE-L^3G-? z(7-N{k701NRnKSuy2xf6{Fm$7pV&Y|&c$$vpM6?%i@N^cXZ%@*(t;0el@?Rc*VS36 zV8pkO*TE}raBy#OJA9^Wl=*0s#<9%(=+4qiv} z#R|Ll$>omgvZTe)zCt!M-KeV2;-Tg=uE>ZPNl+7jWmN(mV}(HDRvn|M=|do~y}Sz; zT-9nSV?|aGHDDxaER|NVaC2pXUc?e}6EF28mWN4|Z^(?3CO8Gi_qX%J{DZ~Fd!ilf# z>ve=XLK;qvzBal!3M=2_Z=^+qL{Qg1Q)atNNb}9OI&eADO&H?%yu%D7jV=FdXPBRp zgVb9kOB1XqdxKewj7BoKPStN!&tcVFze+&1e~fPiF^0LKXWCC30E>Pk#`q85!y~UX zH{`rzqn*C{J39ZQJ(2snE6=c6YeLy@hhmH4>Ti|0k5D9=>SDwdosRBI59I*VxIgZV zZ?Z>2b|If-?T07+TOZiR0?z$jQIfB>Fh&(W4i4H7Cd&#GuZn|dB1vN7QlbDYUAYD( znC$k%o^*||G9gHM6Y@A8Z-^B$S$2*T|G}VOZpDsVBe4-#7VCb(l3~_p0tB0b zaoQa;Yq9A`+JP~u)la+qg-b`qx4QG@Irtnu9BOJMeoLGR4Mz04%Eklo@=+Bq0D2qX37kZ$LQWt1m1VmUlMF*&3b<*?V4r$R?pyAWH zL1<{3l7;{qPPq7Op}!Gu2f;`-z4o^DxVTScM(~oe*#Q6}Z5oyo^PJ__U2xXy=loXs zC!h$)H{tswKOgyB3;l?P8S3y%ZWlhk6s5>?&0CVcJOXx-fIx)`dqXtdCU7aWf1uB~U_cUmq?QR`z)t_4(ib%OU@t&`kax`yYw*JaKk3QT%eO$sHLVa_>)w--U4Dzx~5or1LZZ zB*nq|3(&~gIIXJx0UrcS$Hra76jxLLgn=(Mwory6u~vAr`)Z`*6RZT6VCP3?v-A~- z>52+~O&?nVUB_4neZ~ixK;@5o6(OwxDR?N-8MWgEI5Uw-HB*GXNrY7`_8D`rJV#>O ztyu>IPD>UDmNxu-Eg-7p`7GO91y>DmYXZKbYAK!ah_?(mHPBMQ84Pue3JXD{~va(uk7EC zOvE7ArtIOeN5zJ~f;kwT5&vFx9(+Quu#fC7K_w6Wh;Xw#j(M$_;u|r+i*o5XKF!0o zPk$Dhg+-5%XB03)gY48m7+zMF1%9JzVH-C-_lh*N=^xT=(IjZbZ+etgvVNYy1{NaF zJ5YIIZ1X6_Q48pj6*&Ca^#md7VUZ3?aNunPncg*xYNOB&c{}|wVK-9t&bQ;akik>2 zlAey|k*-&b^YA5$|BeCSDuJL{W?$HoI-bky>M>9n%-k*K*7-YlAfneW@4xSMVJ*^z zZs{5Tp68E~%41i8!aJ=1rDgiU9@ET!d}6S73in@Y=`_6d-bysk4~kqV+}=^ZJj_6T zm7in(zR?$y2WT=APko%10u_MgXE#f@fGus+uK4~weA*8^`P4HJkSpInmY=8`;ek<* z=4Bwps15?jWwPl&Z3TPrD@~;2aFPw+(lFg3mKN+rmZX-fKOLs>s(!ZaN38A|7FbO3 zaG?S)v9BAkW5!Nk%@GI^S4*FI*aFgp(eS2!CBx?HIeb(0@*s3%Lm(bnt}g`Y6j?vZ zEO7>?Zg7N{_1H$Xz1913!CL}C=D~#E*m!WKM0R+50*@~p zH<{A_#3zqdB=ICrq2kfctYfXs)l_g~^WCeH_73mN&L%M+ph!2nlzf26N^}K&H|H2M zx?kxGueYz4{O%@Ic?kRSAjx7r5_h-(;rM1ApZ{u!k;g%MK&Xv~adu-vRN5V#) zmmZlLg_R3u#I4&r=nc-jt*{(UCf|etK@lKLh0Fg%Pr>2cUI+iYhZ1v-udxTZq3Nnj z46lweAbshkjoz;qcDfe|NlsuNTUs zuX$Wsijc1}uM4*9gCRvK!_@tzj!(C4Ym$!q+kLD*;?jTnYSi)cCB2|t?T=l5bf4Id zo9F}9H6X|3DV=!%Ma8PNbD|I1N{j} zMc&rsIPU3rPb$cPzUgZqGa8eQx1~>D*yY@k+4yt48@~^dn_6DxkQJyiN|BV}*l~`p zZ?7HmI2-xwVEVvhfmguVQvbO1(nb;Ru^iOX(f$_(KeJ6XJ}L#+A!Hj2*(QUb#C*## z*=3BW#4v*)#%QL|d+Yl=@B7dD9LMv=@AtgN@y=iOeb2po?$3O#>%7kMyynRb>&wCd z(gHj@Ji-=NOmFh=?D~s`XZK6~-M|sU>+RJ%JQ_?3(+hTyFP6!qT=cb^1dnm&xZPp= zVf=@8C)_*c&M&C3z1yE(i({=*qAc0BP5*usDV)dsaQh`9Z@1UB_MJp|1|zD{I%Q zzoNn;80F#q%$_HUiS9aH%L7_biZ^rI75V75q}#WB6`AjgZ*?o|a%$S65T4UM`cAh- z)LMln2zyJodTq94DM)T@pZja+toLXG9++gc2bsZ2Bi0bB=U$ur1^;l;<3!^YjR!jZ zu3*Lc3M%H2VAsbig+w#&U6IeSg=Cc)dD`Dqs|_4$1fKdx>Rbj47{nB*?=KjSGUD`VJU<9jr<}C@^ViDFFT4k!P-qq$0(=my&ND8OG19vQ z1^XJVai1w#xJ)oqg-nFvA1RsHy!wryvm?Ry*BV=3K1oSi2{Q;J#UbpGV5EHfqn@zB zBd=I;g2(IYg~ldkVmmN?T7s6x>g%7zm%F7a3iZ7^4m`AL$uFoeApe*MlrR2~Pcvsq zhK5s1@-!H|cbXpr_VWx?w@7!$=2J-PdS{!icm(5m2Lc)5q@Fqe&AHypEWdu8VN_`9 z?twp23qAvj+#CNWm%Z0jxEh@_6VY$(?os|ZrA;~Mjk5H*7&K=#*GN-iQ?Bsy4sZ~UV~)sXVE*NmL_u6JJZ%w{Zb|0BS|y|3B^da@)t7?Be3kM=zkX-A{4 zGOv#zjHS(|(d^b^KVOtD-k*EFuhinP#T0Pu#djsjd*4+SHx^uB7?q!>*Ld=I!WEJk zg)`-ZeSL1d5$^AzCKW}|++%g|>4@%8vJG61CsF1BN}B9MnAJ?3g(oEw&4dL{*tK0R z*p`vgGE{H1qo*7F@&Lwsz(!&*|0sPVj-A#^Av(KXasP94g3b&xTtwUY$bF27aP@xV zaV0~nlppkT9d$0%OV<&tomRN0#X|iKZ`*T0qcdhpnosiN>i|wvNBNy8`R`}jcxMn~ z9jm$tditK8%fN`=E#1Zj7^QlRUDV+;g1l}oJfF&POg$1uq%`cM-0OPBKY=J!){1_Q zqFf(o8hSkPTGz2#;QmXHC2@U2g}VMT#w0Xe#QXsCuoT|~2qe3&N7h7|??NFJL(hYt zzc&2<*Ma&pgqSKe63Z+OsBa;dAOVbM4P1wzgZf65_c2RolS#9aOWm{=;`$_x`El_ zCzT!^=%f6y1e-W1vtW~=0m+iH8*gJ?Yu>uhylX&a=!JE~M7Es5x9hS5cE!QN_7jL% z*QM0iHyFS9=jiie2)TsfpE&e=-KnP&^h|vCwaXb|qV)kz&B9C-G!iQD2xDG#OmN=W z%*I(Qd$U&V{?Vhgt75*;NT`Ha0kQb53zqBR+a#+?YH1BpkT+A1lpl|{3529_QW&^u z1wCk)M{3q^7sz{<)4kq4s5nd&W0n>hl@72_y_)WOeW5v}Lqjt!SANW})MgKB$N+&5 zLzyU*E%%b;ExfQ3AQgV^G+t>w{>%^R_aU_)h1ZpPHNRN!Nfv%X&b&`34j_fOeBIgA zog0P&w>$s@w8oUi_gJBw$lN287P26_OSJ#IyT=h!sjNRqk1@Fq{GjWdr(w0tycOpj z5RuTQxaR9o!i=Lz2*ylQQ;{hXblmpOpF_WA0`*BPZcbPK zemmi%`@5r!$IqyUnB7;#AfwTn9PVP6K=-E@a!UY^S01@>xj*g?X2N0Vidpc_E#ygo ze!X^wJt*V%$+KJAy4DpLt;=|Z8xWDqD8mBh30(@#wJrrYqJwam*a=n2&8;UJdWNa% zD-AKJLmg-4=*P%XWA$kCFhYe8JgkF|CA@g4oYejGWmH2dp_IXyzg|W~A`9za?)>j2 zyyVrk_mQUffqV5pF~IM<}F zm{bDlqv1AD=lJh$njbRrSm`h)hkhQgNH_g$S9#rcL+R#lrfOVvwW+l*hNq!8DPQBZdDxw_EH#1&2~hYThfbsGD!XxMieI@Do` zKQoFd)e(vaz>)&K*y^=?-*AkfsP_$n-KFWk-Gv%!$1DU`K8@f-nQT%{3U4EKr7MtMkOL1br5K}1alwzv;eK^?nIBsMP%U;vU$rE)8hz6R3C$4pZV#RLBhG3-e66f z0~KZ5uQ1g6v~DXf<{m?!hQp2RaIIBKodvQnn8@*7;+WH>Y&lM4Ip@f{@nc8w*j;p| zNYbVFv0QuLRg-7mgziQ)>DX&VhbE+TG=Pk<^-3R>a%_VxmJ0fZyQg4=o)!)!t=^}k zh_0HUpjXBC;INizN8jh;fmqUV_(+>ZQpu-@woT^jW=G&npF^ZNder-djx$kTc`JtP zY=gI)o!qMA$+E`5K9{dkhUHZ~AP_bMFKX5-X4H91`x>nDXOs_d$_X!%&qTz-xyvGN zD2zLKh1M0Dt3yN9HwJ!THVXPzjDpC@!%Ik?=mmlF66FR^a>+s@IMtQHS(smV(4w4F zR8-XcRl`ec`u6^T5kZtfRsddryYT`fT~EsyY;Dxof2B)#4MSAw#J=4~H67kHmqx>6bKcCxwxC?g`XPHeiSh%yL zj-PyMdbzRceIZxtriCg-7Q@>z;YSiYN<*)vghe+z%$JkGbjmAiHnIdL!-_ill0_7P z=C_82dh#gspgu#+X*4?h5R_da*4OY(!}%2lX^6ntb6p^r@>A%+q)P10DykoyvlW!; z=&4x{uCa+5(UYknt*ORCCYWoHc5$N4%W&hZWzFmiMGLBDkBe!*xU*rSd-E@Z>?z`U zQISHkxl27#$v*~KpiNVL5h6TWdD>5hs3;Kd0ki0o_i*0f!YKzQ8;SW$tZi0J=X2V@ zZ=1UnXoBL!3|tn{PS+Pp0zx+2TBCGk$l>C8H%&+vk+2qHqK;V0YV94|-!Gm=31?7_ z;FW;)(UOsFBV$m)F0-`8C&I#wMX{ZfYTFcA(yzX`;RPh@?RxgLJj>gRviLrhw`~Rg zfJ~O|%+0v`>^h=~N9pU&e}h7M&BOa=s-v7Mak&Art#FJ2Y#vK;E21>zXJ<6*-MD#^3NY zYfh-(WfZ=&?WTvfS>0J^9-*0p{}$8EymqE|T&N~`LMa1<&0ci6m{*Q6A_U87zs#O` z@s(JHO3Xzn*(DHh8!n4l?GA~Z^4-nMLEVGU0(_;#Z5XiVk%a)t;k&z8DBYtALrT@r zLhplR`Qqi%aHEIh(*(NfgG(#%(SL8)=>G~}DCs%|#2;^|B+rPTn4c0GKr%tbwigj@ zNt;IwW`?0`w)$Nm`i=|ErBQz0LRM4Keh&Am>olFv$`j4CoO?+3@>+cAF4+5RMX zgJ#^(Mkn7dGxby2N;=en*t3J$(TEx8Vidx?cAi*tjwZUPxB8Ufdk}vS0wK(N){!1nWi?QZ`v@@wdj3QIYbbT2Cvn-JvxD{WMpufbkjhOXP0)R zhw97V%d0eXZjxac!27S4Bs3o$JEOxGc%|kj8@VZaFL6i9cxl1^-_$QCKb+sC{M~TP zSjmk1lSS^?_3&7|eI`6N%A^37%W6yJ<-e36_Kyy7`yj@&nQvgLia|w;yrE_#fL4i^BbmWzyD(?4Njf%884Fzf6r6XJD zrPa1Sz>F7`sAZ1)-D;+B$QX-DS{`p3S<~VhmzEc(0q*TMbY&#$8+xFN7VTd|MRqIs zE4=6yz1{-qLy+<54?PT4dEO58=e@>pxF#`9G##sbyZttfeZ|nzVe}LA_UYwSNO}ZN zC3Q+uqSxJl(&RsI4;+v9HdK;bE@Dkw|7H-VUb_}3OYpvpp33z$;dc#qeCFD$O@B(A zeW@b5m;j(KIwR%G_x3UJ?^rhuz=7SB&(&4?P9G6C4?Hf~@ZCH|O z>g?d|g@bx6Lm&$u{pqe2BD4Tw%v`o;#EeQkLv?sXxt@WkctN`pazyvh>CKvM6VxLW z3rl)h^c%|&`wWAD$S{U^n=I749{xJk>=P4)puH+&M}I8T8AH@wpWhT-8M6s2-0TrJ zJYIin9@|;xG}RJ72p)Y~mGgN8zIhmmAZ{bMzoO^ zaPsWWT^anKw=;;!QA7uYVdQj)HcDy`F7vU+zT>~X+s}$G3(V$6PDJ`?n~Zh^kExbP z!)zqv(g-Y!HFhXrYeLJihtZyhGeeA5$!BW*AXYSN|HMBGla*iAkv$ zeEI``p|;m(G)<_cccGS$lq@w1`kIiFc-f8Bh&;Kb+PUlvuh2Hh3OGLCM1F4knT2b0 zXawcE+ST0anvz7lVixR_{A|XMN(SXy@mt9{r-If~q*hyrp1F|47dFDhH{$Z6NzdV* z1F=T(X(~Y={u;>Qyg39?&^Z(J`B2eH;7oj0fFmd0{R z$59T7aFaWZ5d6;>-Vrv>@Hrzuy2n(7C^iEdA;J~Njr2`4$k)0Gt9dQEYw)U z$bwVu8*`VTh4$w@k>5Lz+@zm4So{CMf@khj=WeA|RvN4bi;JeS^EdV5zI>zh)(;=$ z$Lz2VIsDRrI&=5hTJnJrynMhLKV+06*-aeEOC6LYEav-#yAL=O%sd>l6+cs)5Tvdh zmHc>-)!%g!NIj~+#MTx}smdW_9&DaIgGzjmogMNQz?h7blrM3R$^GLx(J0W zmw!=MP@%8=37*M9m-p5-Tv35ldVKA!vM)xS0GQyY*ghQQ{jnWA`ag5;f2Bb`t&8r@ z#$lfUF?HSt717cAem=x}5y_EP)xAa*q7Su}f10~f=lMmorfR3=+sL*`8Hx*fHnT_y zeCBVG?;b`1QVZqJMXlxxT-y(ySLz|RDJ_w}6<%M;%a=*MaZl<34;B)A3bj)M078o; zF^w~+kzkQ?TU1+=OU5TV$k@-A*hfH_1O8xXU;-ebIYx*t~H&m}nbu z*Pf_sTjv9lG#hF+Y;$N1{PoA0=lj3V|%#l8wVPgu0Ox?NSLRgfICg1@1>v6?JFEh<&%GXXr99(ZZIWm&5BKO~%@8 z!R#d-A+<(XT&ZTAF>?9FS=$K&XGOcLh_-?YjJ{u@9M<-xar~tZqrG%(!^+;4Rzmy3 zHPh@v=m2r-f13Fu6aZs|U)sM~D;p3i7VABAoLcUW#)oXi;E0+y@t_GzvGMSA6N@)% z?=RT`G;py9Y&jWmN|(4kB~ud3HnjBI!tKPnmNZJqnzR z4YL^>fK|F90=%W(V~wNO)x7j=#zZCebDu!X(2CFmLZ-1_4ZkyU77u6;*xQ|y{91rF|G}mxOo?)N9BYu; zI3r_Q=*GQ+Z%;sUQr5u}bvn`q#QmT&l}VqbE6Jnv8^@+Fw$qFVxsNFk)Uo>hK=-kF ztz1r{X5C8N9i1-HK3A{Yf}(frR(jQ^3aM5UopmqYpyr<#*p>C@;mQ!b&9MdOr(T1b zgy4jV-&gp?x!XZ~@0QLZV_!x4tXFtco&5TT)@dJS22XBf5d}d7dzN|euMPVe`hP5N zr*mvBru2d@m2LuO^JKB7 zo)GgdL3J(dNpQhDk$(6LX^wV5c1nPcPDRqd)qNiA$a@K zDl0&QX;(q4MxRM~cP)h~RsDN~-ef;vSSpkUq^)p}>82#q$hJY@E)(Aa7u2)~uv#Xgrh>s&W6yLKCh4l`g@ zgq-DP1=S#d+sN?X?&|LqDJN&wNkZ zTW&Q?i*E%)iG>Z+19aHESWd0<;l)6K`{#e-pR}m~A{aRk3oIr#FFc*Eki;m zBXnr_lM5y2{TsKIt3mp09~zmcxqk5m6-l4uN)PUdKU|8=Kn$U{A~LrMjUr?(KdLhc zELFalNf=x3s(Yq|XH=(G4$}mlekjRIfUYC<(9ZRaDxF3*S)?yGk04+9-lUz$ zqBEx^;+yABI{ofl>9W_?8Ke)mwu!W<2Z=iB>?hqn`l%xR)vYYp&;mG2%6}%0aE+34 zZT*E~+qiq7%2NLcCKi8nh%FO3e{p>Jmfw`U4=lVD&~K9qyFj6og4&aqf*F-ZT{Mlm z$h;eUC+kc?*pksEMNG45Ic1xQpH3sCI-J)|s9y zBI1&UT4fNdR+HT_&8OCn7xt=5t>^zzUN2Vz0RDi&y!1e%ZX&EXajQzMa<7Mw-P_o> zIG`FJ64Rca`7Nk9+;QD2=1Z@7tX?u8v&#bfE77A;#J};~?Lqk7BpPOX&*4b=3@)b^ zs0g0v1nY!*QCfnCpB~rm(TDlCQB;qx6aK~~%kf<}oG||ZUhQWZ9gP8?zr$5#tQVg) zGd)H@o=ttyCG8n|Kwlopd#V^f{x)1s`{tD)hY!N-WkRe_Q8y#ctcrD-Qs`Gyavt^r zk#8Kev@M1*lk2E9x|1YUnAy&({72 zp!YQBrjY0qr^l+h1;xC$mA-Y{j@LZ~pz{f=^32T{&l}ylTLMqmly$sD176-_Q*Bx1 zX4d@!(5~d-|MuTIP?E zl;i(2Nia5^0oNVMH~*(!VrKq9wZq46GFSfWvL$zX1@6jCp6jsfV-m2es&inXQ}{PP zlDnB$7C=g!1sg`&NYF$H0I0gYy5e-#q)0tG84jx$IW5#3A+;}yxo7#p93YxlnqZEn z&T>Kk((3wS;r*RF+LOKp=T|%cBJ5$~&v}K*-SjxDcC%3R4LNZBRBRi0#^v}lLncyr z(N}W%4tSmpgJmgMc~mqc##|XIffLr+Q5QV@{df zBE#Q?2XxL{7N)C27G_g_wpqqo+1>#v8SHecxv*g5gW5;;VOYoZ!sai%0+k+st7m4j zW8uQG=5QD)5<@p>><9HVfJOv`?z@{4ttHH|f<0|Ifgw zEQ)!xWs+()-0x}pg5N>MtU2V&C8rdOSMaWp>`rSW+g?AevqP<3ewZJGy4I4$*8`UC zFDCKEmvJhbCzhSdVd_wgdha01qOTXx3J-ddQEg_741B{P+bbI3?T*-dn-aLCpC6GU zl#fq3B%s~i`?+OOu?Brr|9C%d?=3urI3TQ?bWuNm-CLRusV{5ybP5v-3-_uDjj{dc zy^?VnE~9*%D$P7?miLf;yJ?Y~zM%G6X=_4|x9`Y^etMUz@}~%qnf4as)rqvTRuql< zrxLG*MfJ2Sh@DRQMx|2k8uZKD3Yx#-_PKm110NI9v;Dq)sQ+Mr{kSE;V{!Yr2`me6 zpf>6A@j4pdj|dmtx#tRZwGH-WRn@gReN<_g3o`_WP)jAo&sd@l(Dv9>LGQcU8_uR` zJD*Xro_^j-KCsgJH)8P)Jm4qjYnZ56|LPEP(<|s(%l93rzqASHZ1CV~Bd-+OPm-|G zeY6@M)Okl(39qFBNmMSV`^hTCX?kEXYh*F3jr_4esQVKO6>6^AO>=2wktpfIT>jKWB)e+F(xyVN+5(LX-!i?Iy2-UPV(5nXwxe+V+0w6JFXBZTxOc@&~**0`d~| zzzm*lIjcdZD~8BY!`lYJkyX@;Tr)Oo)*w# zQCV62oAjWbnX+rDu`)S!-{5|9w4#o==oUUG+<~Y}Wk%_y{T$r8SW415pVIAH@ia=z z9F`@@yjA67@<*WG(QB$6wSRL|`f?=hn?a$020Mj@vzNkGRYOn8r}(n*5zNdmpm9bw zB;@15LnKM7-drw~mRd>#)n?$^vV42h@V|mKk8!U)$f~{akss9l%%pM)-TuzUXZ+j1 zjFtZWHD3q>5b*$`Y<6w(Y&`OKdUEbsIN!K~Wx8p~)#Q@O;L`8^s5U3YSx{l{;)Avs zx7T-c_IJ9>hA++6YpwVASYLIYtY{H%I{+Q6#}^=-q5#@*F~te~%wC=OEVD)`KtdM; z9jEL&Nh3%(#ud45{W@_}vxf?4;0JxlK;882zzhPdG&^E?{eFd!4Cb)#vHE+pTle~- zm?!@OXN3>Ad~hsY1tDc0E;7WL zKk%R5^0`0C^6j=$TqcivNr{J%lnh?;QkBOpE&o?&=AR1UePj^CPwuC23QkUs z&phhdZR&Wcr9~Vf08}QMxXCF;yVHD=&bCH*u$;G zX#gn7-eV#w0*9I4&IA5T|08UuY@+B&2Y-!4e|ZrdS4aiSN5`z47CuOUa5s>RaD@}? zc_wwfcH!1AKry4>_lR7d-g2lNMUXcy%KO@(2buz+-@uK78xqG&qC15dz41Nad2jA) z#p&$lESxN!HCT>d>esyH4Z`LF9U}7f9WL`axXy7F_cC=ke>hmSv0!*YDW;7)Whqk# z?Tj`o7}gm}^z_=F@+-teA5dtU0m~ln;O2s^)hv|f&U0d;#mj3@&$xQ4Z;^%i^^>2Y zd4&1w>%MjkUw+)myKhR+JLn3P75l9{qExWPN`3WE{2T`l3;xu&@4_dCAA_LVgujLt z#AGYOa-1}Smy?&UgQ9`%uM4S&73z~{o&exh@m)A_V1b)ffhV3pMY?8{A$b;xJ`FOs z?~#n&XMimwOF$L^VX;0ta7IeuomYwfa8AYm&tsS$w5E3f2woaQ&l# z8JhZ&#{KSqE{{$0Uz(VfiE2umHSiV9&pcr~x6!QLKruXL&;f@@rU4Ta_|Rz(h?dwg|N`h9yQ_YS-o)N69{XW>QHQ5646KwF>2jB3*HQ1&2K z8(yY96@*G=f{DShh=WJ_8hT@+Z;N)Bx(@)2FNYJnJFB)=J>zHvpiQ2{)cyjU6g^vU8vO2Iy|T3w+}Sh$KgDtvWBzNR!g&?I=q?Ehi6^!oyr$J^<@{sAW<` zHtlkzR7(H{&)9AzEf?1KRDEqWv-u+(TPs0wZ=Qlw)N#!?0UtfF>mxsQ@z)S4%ahot zfC%2$W{1#&WtB~-i>ijR+u8i5lS(w<5@xu+L~FT63@`5;TshahR0ecS=;ksb`~LI& z)MVnDj|Qr*YmgZ-X3t=x3Ac!`P>-qQ@Wk$~F(xe4PMi5kVS-xz^IMF$?8|~T6Ybnh5_C6?98N5Yvt-`pHDf@Gv(8xA zhThA}s|gkB1{U#1ueh%LE!g;Cm^A(tHs~Avm{f|3M{2(oU3xiw&+^>D6Q+tG|Aql5 z^!A%=)ABkX+FC{pYW`zc^2Wnc9dtyW#LIx+V5$i|Ea99&Ee2}paX^pk7j#%^m_lKs zLA_yOLbX$Z?k4e4B7Her=C%bQby?b#bDR@U^=yT2++SxuRl~@>|9}p<=nZOfHOz1h zX#yVhVYg%GJLJX6c{coBOMt$wEU!+&m+u$d~_>d|C$=RG)MRkHKUH(oS-!9>n zOOlYP#b;wAlDEVG1!oZn_WE-1*N{=Fb?4)_Z@_|gBR>E7Ow?*x`GZOzSOXpe#%($* zVHcBo{9h==WX7NH*@(>?N&ESv;)H@>?7W!!l-R5nB9N0J{crha!2cC|eyLmX YepHV9?K}?r4}!~kO6Z4?zOu6rTebF54~1D_&=WSob#Xa zop0}NuYEfh7O>vb%GAKXVExe}2TvLpd~?shVAaF5tAG(Gyrb5@VB=qp9z1Y5qe3Q> zBR(duRcEsJf}g5yhOIias`Qubu_iDRf0L7|iof4}#3cB7u`?G}hpnIf$?sr*_afGs zXuW>iVj$)3_k2C13zu$ zN}m^w>KAPOEA~&o-CagF{#ke6wE|okp7=k2pV8$eWKuct%3<63WpXH+Vs!RKIjZ=0G0=7W7QSQ%90%9A6}LBn=9NjL!MX z!sQibjzL8GC{K_QO>ZG%#X7v zlJH4>R%WJ^`d-)BE2tXmGJzA1jHwtrAKC##(MFtit3)C+yd0uUy zjwHpF4_YWRno(Nyo5g#JX3zI_d<@~Ilfo^d`&fIKE@5n^!Kq-88g;oe=+(Nx!^pNs zkZyk72?Hez##2@3f}V3Der-%<426%4Fd}U|5O+@YNQMILhhP8b5t%$OmjRtyUdE36 zg3ZdRleRxlT=q&H_FA{%-eL!sH`PLQ zUzGAGDr%XW7(YKV)6n6``8_?#W7~Tm%a&*~TDzS6VG+v{u&xa^HUvj^j_Wt}D|oa= zCwA0G+f#OIKQDWFB_kGrD7jlEV&_TTn6Rm&nd7FL%66%>xV~50aja0IBArGoEESF$ zg1XI~V~yBdO+lF!YDix#`U(ky)O`GvcEjiTLRVkId#WCT2EDyVNt*|cBZ{{_nJ%&k z7JJ=$CDMD+H>s+t3e4Vghwk*vt+2pKi7{@M+!;e!tB|2K_A3F-- zICg)R$%(K?6zvjC0DNNS!MO(+(%}9KjnCyhj}t6LXbvh9$CV!Es~V3^@cf24r&KQ+ z`OHi?#n#pquD{H+G4#&%7=E(A%p5uM4hbccA|ciwb8~awoE6>NL=T6<5ekKr7-pV_ zpUC$eW6oo1)dbgc>8fGwRz2!XK%)=)YFo!L4Ufm$`ewW8dG68;q(Ug2Ld)_N|5);y zw!=!gpqZ{J0l?c9IVKW`#>P|}$+G`)>sWi9+lQbOW2DKj9YhzQ(Hdtn!kI1Pu<&Cbn8|P`)EWdF(@RSetXwAZ3g+ld zJ5oeu&&UZrL<(Ojj;&qJ7C}sz*bGe%XaQrThKP@}nu>a#L5OFX!qQq>QFLKEHQcd` zlh8l)3=(HTA(Q2W80yG;Jz*o~#EG7Xx%TtL>nx^GbfRyLyC~AJ47iK8KR7&Bk*`!| zeY*W1CV43oBN61rV)J<5FPznZuw01Q{Gia%}ehJ?zd#y9xOGtWzN2}2l!!NG#KNOlhJo4#n>>(BKzq{ z9Bfs$b^OrgHY8d7C>#bWs}UyCbUiP#221DKt4gDy*o6+h%dfaA0^{Pl4^}>I*lZ~R ztqEgmj$w1^WSxFU{dZ%@w4jMrfvoG!CpXEhVyUT_*}04ddlLPTi`C4FHIoU(oT5rB zc=U$))kI^rS^Cu}gAc910sJd;S+^8lI+dR!s?|?M%f7h~qxvvyD8T$a2&zjxk=v}V z!G0URB@43|OZqDfIaVqDQdRoHLX-o=>oSy}TK~+Yk(s7Yc2$-3L(&}Mt_TGz16F&t z2sGTKrrG{kS)F3Cix-MWS1Al+C69UWvPErkWV&P1)rDYvi{ou{<{u>}v7=*e&i*jA ze-wp3Ng}8tm;bH$8s8BK%PQLe zOrA#a$>Jd=eWw4`dMm8G+of%y0uqU&5skuysMcd7CzzxJ0{(&-0}Wc#CFbk4(H+Ak zPXMnxFd&EsG(3I;`P+W5PAZko;zH7+&^C(7D)&662(RjpoH2{KTuJ*<2g&I}7p|BX zJqM6B+=NM>2HYj?_61)nRdm7M)RKRu@B!u}aU=K(JRUEbDX-uyu2i|B%RQIh$3h8= zj*fizfZctrL>4r0)*bKd>&r~90bO`8$ay*RyEKJ6>at+_LiJnvAE zP#{rWlejzFMMuBWaf!a#<(27M(l6~kTAZu6uwK`KJ)u;|9P-j<>eA=Vasb*-!IY?B zNfw8pHia}A4eOCGmgMf6t=rtT&ut7Kn9fdb`pQ*L>lwKmmtyU$mPGf&T%Zfbgu-Rb zf;17w8Uog~Gnr1~8Ch9L4STY^Y|L@~)Xw2Rr9$zR@o^~)>Oh-KDn5j63Tp`^z-Y!E z_@D2yOUcB`hD@7 zaq;ca{JvGUV)e#PIS6IbIhSIT6J(+wA3`_r+l@G~ z^Dw)eEX`>BtFE(u)KS2N0bBEK8`;CvOLg)a9jcJGxanS~_CRz59Z!I-*(wWqZ7yn4 z?TFhrJ?*I$PqX_@@zbfBcr+=AOl}rQ{AUg$N@cm{z{ApX7cvi-)ZGR&{*rPTN_z`E zzncY6DQW+^C9#n`Hw}8}ZR1FiMrDmgH86Yb3y#4Lzwditln6)=d4S%PE*xZqhbLKx zcOBQF=$)ONQS~9)8>DOTX zf?UM(b&eouK;MBq|5BTkLmkOCAASje(uFhLtmeFp0gWdeHr-KYF@(t;cuq1+x(CCl zlEC5coT=H@x$ISW>zc#%gw!HZO+UrRcIl5^-&jW`t8!0pHW=bL)mb%*v$M`wR!T|Y zb+-qBA+(`0KJZHKvSzVah>!S+GZH~=(ZI?&jrTMg3$sW7@`)0fP|D3gpjBC=}i)&8W z2=ba*DlGvfd^z3Yv8y&0v?b`rurs5AU_(2LGVg=7%^ZZ!($^q z-iH;lpEJXLi!`@Cf%K=e#j2CsrCCg+*vH#@NIzWZFPK8q0^)2xHv?L9Slcv-*Df<$ z*gS`3hV%@gtc8*p884`Os62>35DIW>eYWS%D-;T#2wF)nir-M=`Q`b)-DF@7lX?iK z9Tzq!fEo}75KPM1tg)6#1dP}AxxHwM)&{{}P%5cHSrvft1kjDlYu6xA@MluZ)YL_$ zC}(NzQF@eoQOh$N$aTPA-xwKl4h>UdJ^@qp z6}Yt%oyc%4sP4>vm>>C00$iNvyDY~1`X=WJ(WrfsjQK8EZMg~mPw)_6lED(KZWc&8OxBEG{dBc z!C=TTF*AgWWz5WZ{NDFm=g;%UdtK+8>pJhuAM?yy_jBKK-_L!2Kg;*~;#6&oA-J1%zM7d@-aDmJ$BHfGmM?nM<)r`HNgjOg2LwD>r2S99Qf zt4ALl9ZoLxx@O0Nur*5c_Pe4F)D|`m^UUbpw@=os4$H;Gu7B~&I z$2r@qB4;+X+|(ZScSjSBT;^lvc`U{u%%;f&VtXiH&-U|7J=;eU*F(1x|GU9|ufzW@ z`@!A?rvb(pbO=RVRNJZ0HM`Tf**TFsF5dDuOh z(TM3Vos(|Q<(6&r{J-k;X@o%?>DbVxT zI4T3*Q7h9_FU-zE{-eRDtaP^*wl#5eI|6lyaS=)84e3$l0!>vB@vFZPwZ3AokB7np z>_6c#OAl;ph|YqYhU`3%6_wvyx-Lz&mTpT%o~y4fXx>_~vRcz$z2@rHex$}g+2Ips zLQ>Me(FeON0p@G^!oYv{{%gS5T4+ir4Z;NigxkDukB zGnnCeHTIUBYVfDIr9}J%Z9y&YJhu$WRsZ!&B<6;zn{Y>6SHS(+om(zS9`m?nB z3H#jJLP^nFjqUs1%wT3W>F8BM!lUHdv<~zo6>J#LHL!w?@G^+Q zH=l}L14KF60E{DV!66eH8*`{L^{VC~$*B4DaJ?Gs~?QNwP8j5z<3fUsHNGFN;1L# zOU0KSTWS`~K*_{Wb2H@61_~tq)66%d^25L%K5*~7=hr8Ob~ue^egCk0o`KLeRi>Vb z2?yE=_0O)|{t_}}oL!Lp{zURwEVZxZci-osfeR~|;JZReFBFz*#X3vdU3d;Jy)%0* zmnkc1aW0H+WMAX2YjdgZH=U!P%X~cMI+9fW=x_A#j+Y)i?i|9xw{SmShUR93@E#nB zMPaAf!Oen!GY4nFNhFzOh{+N`J=Q;A|H(X4R$V;VP2@*J(!p1J!TlUj)MFa~d;4C` zzE>nQ*HawAwzJZUsygga2Zu#(;JWTpHy`7M;|Cp&^4h+qJfj^tIFDk{*@=u}&UW^v z6OuG1`1%x6fFUAI*xTp*tXv3L`!|eO`St91YAB_dRHyfR-rIjK@wnedkp2H<&?T0V z5w+wZ=VKpx52-(c_pBglMYkUo|BXko81(HmB66F~XhO3e(Q#c;MsJuW&admVpZA3q zVM*ROf60%!CQA_y>aZ71JP_l=#IkA%U{*EA{$}-;D7F%6_TzLUpdHgEkrkP;y2V(mqyEpi$9ZPpa{31l znv&tP;=nfZ;+xo5u1@-U#fJnft|w)_1MHVBLNMUH{c))Ne zB_GKMGC~7PKLT9%ishMVx%sO@ZslFi2G!-B#%XN5ak*(+=3pme>I>iV&U3kPA0H9n zoS*T)_UFZ!UtM~i21*nWwOLA#i)oVCRTPZfhjrzDyf1}?U$@rK>77-QDkF{;#; zzKhol@rBpgzXYKTj&MDB2YcNNGT&TX3>76DBVBnrA7wzZ%PCu43~jIy@%G3- z&5tY15nmZ#3#nrFlLA1wC5mE%KljajUdF|mWsZ~KNIQk&xeYa8W1q%`V;zhY>ud4k zas2D&^W)s9y51dmm(zL6MHn9LCTf`0XKufhE(>q~!8ICxZ|^9n#e7lehrO$=xO)&~ zTqz)^?Cw#zgm@K%L#8|rmUHx~H1UbxxAYA=3reh$T)jMAgrj#k+%d$vyD^dnv^gSg z_Nx;jjr%bd(e>bBPHNmNEyEh8QNQ_B#9RZr-u6x;2i@Pf`12nM`%c@W3uI?+Pp{Cj z95*N=lTw0nfj)-6ccEE`B>TdpfN8G#Sc-StYm{*Kyc^r9P1L1P5D))sKY4cJt|g8)|D!7MpQp_VcFVb$||8ZLfgmb=XbWzp-T_8Bvff)|3>f}^kS@0e%-mb z*unENc^6k}*wL%ukt<>}3ZqUY<~luQ&95@em!C&LX&@ch->=%f+_@^z!YK53P`qoB zeCsWYa4=*XJ6iPETEWe%Q+%6}za`$&)J9kr#Plx%paTq8r_WjJ@J{zK zHFLcD`|QeI;4u(3mqOlh%wC-3Sn?0Cb-Nh-#}8J$M={>Mkb|E6A^hh1U09@6?{4gA z&ankC>Tl6%E+RtRrQlmn%A+SR-BFbe6*r1RQ@-=?eUF+eRua5Yux%laU}vv{A6m;n zbbCxR=6H24Vo-vntMzGNu;~%#hVW@$OKxh07p403Se)^>oFiixO}H;*K5TtBHbnWE zX0FQj#J#qq@zZZnOD#dgfrK&sUf^WCe+58gzU$K7--V=2da7GpiLY3NeV*S609@P@ z6V?(t3nMtQP!`gD>CyWDLYXfnUR-?)C4p*~ICnoAvT;Zgya@y)Su=`cqb)FgP_=l> zw78#F?FjFpXe>uhjs9kT1#h+5kM|R-rLV5>#kbLIniK^)?Mwl z-;0*iw5>5t9ulZai?gV|Mr0Eq6ms?B6+by81TMDTo zbyxG~zNJxR#^&;>S^XjVv+rBUh>VPkAuj;z1t&o|ruFRhBonvK?&V0^r}5*IH4+v@7a9ZAerUYS zmn&6vQ@#z|e#SdgN7e)1#l5q){Tu_ZgeIC|N+T%id(QdBwLPbiz%~LEDtIT9o}ilm zumFE8XwLU1g58u)!A*HVws~S7F4ariq2_SBP8`)8rCtq~nDApqHy;DLZgC2~Y;O_? zrKcBo+1TXu{aihgQ~u_jO@x6IvgI(kZ%Rmz!=#9`xs6pWQM}~mPoQmX;ubol1d*Sf zLM3#%3W#5fUK;voXnx5_`+2IuUywG@MPYbrO-gr8D;NR{S^hMoV>Ixg(Uc4C-J_ea zrL#nXOym&QyO)@IzrMDg0!Ou*JRH!awx~Zuvm#c8!Al+X#$!fX?N_o!!Oj z=p@9Q>6-QKGD@4TKdMmA`Qh)g?5F__7(;)yKP=J)nc+%lO>PKzynVV)Dbf4OL?ae& zEX*PkW4JkUT({5Cf(D@Hm}PRu(@D*dlb8`ws=3d$0T2^;%bL8yq07v8xXAL`sSV2B? zcC!50|8Qu&%f<@$a!(>Dp7F5;W|_Uk#>)uHctPiQZ@Kh&S+jlP9=w9Hmx;hNYuQa( z8$gH>S~pTQPs%P$pW*tUQMjLwiKrd=d*>^_LyTVslxc{&KTx|^=Bu}>uDWSQ!r0in z^$!&?b;uqBZMX|?6iE^y3MnUdYv6f)Um`~~u2xoV!AxexSg%*=X6h`&%`&6n^AXtn z@VEOPr-=ZJOn$&TK4FW-FUx}h^$!L4H>&{r!Y*~oOKEv&u`m9 zhFlzoR|l9qDRO09gkwx*O2{5hj%X~IV9g!=5?f0%!)`% zmlSGH|C7Bx0TKBaJ^`DfL!jWG=)fHIb_^$HT=394iJE)FR3NJ|K@~E5fsAU zW#zc#(DnkXH);EuchPw--_THbvpd-knD1~0#9{Iur55!*rd;HNfYQs&``?EDS$y+l z|Ka*_cxYvo<*Cq#m2PH@B^<0?d_~Aqet0hda#0uExVanqFCURCOjLRiWa?`8<^?xS zAZ*-2a?cxxJgrUs!(xRyO~lantZB2-i{z(~xBM)Zdez4;i=BQsvSyjP;@$ocOheyi zuCONnFPT}f^P*b0)$3-g0T2JDr)wUr4t9%&ZcuP{u+gK0RqNcc{-%|+y7lNhI<%gx z?CG%9q?{-vdDEZ%WHfIQH(u0CzU6U3cTC@FsWfxTmDexoEC5$z7mqG28hJ@?ULtY& zI#jZfRa<^ifwylk72Vj7F}!8i&2XT72juB82dwSfE1 zcxh>A0+rS)&cjar$07`%DZN2K>VL`u2t!`;ogKtAaM!E@mer*F50TI{9fqx$}R8^Q_rfCuU}BT84v5E23_Oq0NvXhHW;fS8Jdf z=hveQq!?|6zdBCXXN;{qUnXWOtvMDI+qw`>+86nG13`MIMW;TyX4wDpY$>;yB5NKZ zFMUFdl_zS?1O9viy*U-#d>2_NlcDz8rR0*8&JOL)BRR8Q21+KL4ommW7Iy=p=VFez zL$*UU;8n;1r#J@<86F(~2G%P)TIcWS0PT9vp1czUSk$pY-Gnx6@9-y6czG;BqT|Tg z3(7CUS&DO91dO@=+N#&s^~$5}h0q0__+!S$5|WC^_&S#jPVWR^4es@#$=2z>HYAKC zB@PWb?&sQ!5atk`0ZfjKlYl<~aGaRGSMd=9>e$N$G5QIC&NJ|*QTOwQ2BZ`q$Cn#j z{u=K|UQ7}bp2=niFlN`B!NczxZ>l(dbekJ8tNI@Q%2vqq(wBrWmdv;*ObZgWSj{4D z>1qAjtah+`-DsytUEBDtv^OQ1XD3jDo0GB~6AzP!G660D7D-$Ss#M{FvqXrpW_x^Q z(dX*-B~fa}PqA@TyO~;l3F)jZ^}?`Po&$lt?VX(sBwi?pf_Hf=og_c^kqR~M6Npm! zSs!a;WYj$$Syfb8OD^-Jr2gXzkH2evx9AF_Hg6!rfVQu+>9-alv8~_(A81bHRO$4h z^(shWiJo~sgho5vA6VeR8#4(J&VVRaE4LOJDyXVd-b}nq+-v`cvbi$nB&Pw}hAsZ} zquG4cPxU-KKkOm`jprW8hB(0X^y>uE4c*S0WipdlK@nrasF;6Qe3Dhts^)LVembQuo z(iU1VAl^PEJ5@BYqj0l!SIxwG=19IjXEy2KU}H^siO(O!jf|bt`CLrs_h*_IX8er5 z7WO>GZ~^79u%?(|S)NsJm=>g@4ZdqLs$50i-`AklX@ITDaf_jVbwIbpa zG0x_v&YTSKI#Vs#@I$?(RnH5>HZ;hQ!7icFJ39VFVQ(&hB zQUN=Jy!EKv3F8FDeKewVAJGJj)QJLEwwZ!^p6k$;c{Ld0`P#O^E$?o#OF1BBFa1O5 z?5IwDOKMlD*QoZVF~gTM8Jd=dJ6V31;Y*yxNsxShd}XF=9@3YF`bm69ckXya3;A_V zw=hm~Txs3oggr}r{7ut+VJPP}hRif)zHxdB{3)K?0z&sb*C4qGnbOE;cC@Dn>uIFz zX^sSEsixvWQSjefjfU;kF4!v3Q@{S`Hf?+i9JuAGP&m=t%dZ(z%sa4}VVd*8yM`jfJxT-g`Xw=SK`eL;7&+&&-|iIR6{ zX~ncF@@@ZM85vyQ1}%vlY#^18_+8HL#Ebf@b*#5 z@X4^W#j-BgWNX}z$MQN?HMg}8;Mr24;v6Q{LS~s5mQ6EWw9f_~VPiuJ+N>FV&{+QP zB!E}TZ)D8`x!+e-7W8DEdBu%!m80(pCl-JG1@87``-!QcVF2>4rfYaOmk<6Fux!#^)g;n-*xd(HF5691b!HR+CQ440BfN;(Xk?7tGY^AWfgC(-SPu;n>1@K7_f6{ z$r|9H>s#XP8B+`N`wzncbw))RiBEgra=ceN+;%9xFpxm)1I*iGDkhwoPmJ}W`}(`YTll6Oh#LGM;l7o)|ki|f_>m*hd^lhR z05D~xc6_Yfs2K|O-8v0kaV>Tm^7XPCH7U$R?v66 zpWhv$9lwr9-PJy?KY!R|f62S!qeJ#vh(k7{h!pBhICVYdg8uCf9g{*mn`3rsUT{F= z$P6yGh^o{y1<^CSgU|W*gS95KX*ZJ_&TcT=y&bYi?QtQxB4Q&m#bf|ZGj5bmMv)Tr zW_S~}jJ1!X#hvMna*e)l#nf5@8krim_F6S^FnUIi86RlnsGDyPwVm1Zr@{0*VIhW{ z?6K^u-Lg~-uR(yPBPLx_v-zX{;~sX6{TEBxQt@&9s_KpIeX@VM=c4G?Iv zvPyk{O?>#PB-O-&$kN?q`D6DjlEd%U3oFXQf0O({Xu?a_Gy z4;1mxhz3{!Wu+`OcEhzsDcysPSq9RiaK)4YoRV4Qv(x8&;7h?e*R0==cIWX-@PL*w z`cj44YuljY9>=V^L6w!2zVI_#ji8u2FXBI{@4F0XpR$GNLuWklIp9wrI<- zkeITM%f;Eg9YoZomiRba%;)&KKw-Ar^s}5+r__tm8c&Ck-RYZqE~nMoB)8Ah z7gZ~!03@n*Pca3EP;uYe4oF(*96;t5z6gX!SlP;bnD!I~thI0EZLne7~iN3J1OqYU(P6{SnM zfb3qEgUehhpwQGM`8k)R(n}Q6=XKKiRNtKR@_)1}l=ULL*bPK<~U&Kn1*ayuY30Vy) zkdUkc%!mMqib$O%bH`JrZYxUKHKy<$h=U$aHQ7<`n1c4h?+flha^j2k>{5Z$$m9&P zItdu%nl%u<0Ol4pa(lxk*uXAR7D_gQOZ5_GvLK#{$<1#mc(6J6LR+*~j!>`{kqW&- zd|lvNFRYNb;DXz39#2Vqo3?@~ZRYH#ts?Igm6T-kJd*dl!P~7F#r#`kUB=LCvg)$3 ztn3|lb5C#IoQ5eP?XE|?X$y2l&u($zTvnAbh=|lJ|2LgCtAZmmxQpumHrYf+ukw_l`v_51-I$CId2)+iiGS6I4 z(spE6aE#$@I_f4qHW*krv%!blfl52fx@wv{_)B`u?ZA3oqmSP>SKy-sv9;dWzFbbv z+QNoeSp~p8y=uSN7L{8fJMH@B>&n3lyNPRUgqp(gRQ$%xGOM8%~_TJJx+ZyvsRne|5f+f=6( z$v>wZQ48>C-oEdv(GyhYB_=`1Om%Ii+>REAHmlM}CmCOm z2mH%B6PlW$SS8IfcLha{>yq|?q-)K+nA=Q-Uwg#+)w7bRw4LgP+UpY^b<(M6nR5{a z7k=sQE2A_0B(S5cHM-wW^7TO|XIk@7?*xyy>veyclOYD;ExCU^hn%YYf6@)lt(O8$ zTsQM1bKhV@3zo(+1NZRi?Vf+bOot@9=@{P`tl)fS#`T}oRoVR7E#SwIrqbE$8)x9& zIqXqJ5C6|q)~ve-aM;)wc8IX4QjrHPU>sD9%~cFAE&uP&S&j+0P7w1e--88ASxb55Vgu)%M6H38K2z_Jn)dx-6ZFtgdBB<#21v5dc`{}hqI$YJ( z%$`f$&$|vAQjc_Kd;a-Uth<&odSuL7ctWPqIS;jH(b*;IL5XfNg8~$NGbJwWK?{RuVv4z``$Yrztrh6 zmM3vgmO|Rp#fGVu#=gUox5D-E*8cn}ug4=l!Q4p_mbmaXLLP6+MX*E$>R+X7@f@hK z82bgfvEoOo@LS_kpOi^CH_-=O{A!^KqgGMcdXEo-Y%3!G^I+yj@5M^p7`8-UP96yn zM#bPy<3VXHr!k?wbfoe_dpj*FFl1WWp0XV`Dirr7xQ#IQA^;h<;x7N4y6AKvr+0Ci zCyUg6_v>_^H~-`jKcqJ@+DON{VM#fy%UYXyh_?h6=SXNp#xulX(aaPrk1)#V#52zU z+?_A;HF#gUg!M~i*Bv_6;i%SP!ZSFU%uHp>L?Si7RIPh}v{(-`wI0VEUoF;EVU#hn zTE}J007yw?i*VMbQ_Bq5#1mR>3zUgD%~w zKjF%Q&WFIbucZh&=NB&r0B@h1@gdN##m0b|)zU5B+i!v4;x|EB;JZ!SsX50v6EstG z%gBiAc`L_ri6@C+2+Lu=bSA!CfVsP?8+9CK_<;=gi+5Y?k~8kvv=G;T_eE@|~pp=2jb^>2+5el8Y8=d(89w`>WmZLR&?ebA1#om_pY zVBAg}khjz)J6!5)^@Ss9^UKsKWZx>af7FBhM~AeCZpRt6ga~op%CBk&;u>}J&a(fp zCzmHLYM+NPJC}HU;RAV%ipTDL%^!^Xly4FZ0vAu{#0 zU*;i!UVCvss@RXd6r5AULqMTWBoZkeDSdxwKN_t6Gw)7ieA&Rds+ZHJIL8?lZ#E;I z1>{aiSm~Il_UWTJcv2lBpGFvW2jfiyI2bCY?9<)&JPhXRF_9Ib0cS7|G(9SSGiBIw zOI}>!i)z?RUG)5mf>TFK>Iu~SHcC3!Kx^Ui#3|ZWP)F^EwEcIN^t|y-_a{9s`x>7m z=UaI)4-T7OS|7ZLQ}ua|*djM5rn4mOR+Q8q0aSx%v7wghqv1}M&FlU=F^{W6B$ii; z$EEEPul6mzb{l54FNb$Ms4L3;IXixV^&cIDE7S|WH~aK-y1_l;-Rt;Y%+bE-z(}KF zhD_WNRvfjy8!OeRFdQx6Dw1rO))&^lQucx``i(O(DiS(%(`_$C28=^5x*v039bB2{e@+d;j`wkNeO6bCt*QEVfe$lk*VC T!h1lSHJh2K<+a)?u2234&AtsM literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00001.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..49d18f1b7420c67d45d2e1fd3a69c1f01fb49da1 GIT binary patch literal 14853 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00002.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..acad067d040c78bae7cd3847ac287c46d42968ef GIT binary patch literal 17653 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00003.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea90064d21bea31826c5f4895a99f733e539158 GIT binary patch literal 12590 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 +38R&HWIKubK=R!m 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 +38R&HWIKubK=R!m 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_137/00002.png b/tests/ragger/snapshots/stax/erc721_transferFrom_137/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4e99e678674a65bb8ea7cc0b69ef5a7fcf78bf14 GIT binary patch literal 15648 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_137/00003.png b/tests/ragger/snapshots/stax/erc721_transferFrom_137/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..97b18b86b54200adb4234080033deadcffc1c506 GIT binary patch literal 8608 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 Pq2g%gdamZz%Xj_{ATU(} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_137/00004.png b/tests/ragger/snapshots/stax/erc721_transferFrom_137/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc721_transferFrom_137/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 zcmeHLSyYqRnxzCq5JO2_MUg<&wG~kO6Z4?zOu6rTebF54~1D_&=WSob#Xa zop0}NuYEfh7O>vb%GAKXVExe}2TvLpd~?shVAaF5tAG(Gyrb5@VB=qp9z1Y5qe3Q> zBR(duRcEsJf}g5yhOIias`Qubu_iDRf0L7|iof4}#3cB7u`?G}hpnIf$?sr*_afGs zXuW>iVj$)3_k2C13zu$ zN}m^w>KAPOEA~&o-CagF{#ke6wE|okp7=k2pV8$eWKuct%3<63WpXH+Vs!RKIjZ=0G0=7W7QSQ%90%9A6}LBn=9NjL!MX z!sQibjzL8GC{K_QO>ZG%#X7v zlJH4>R%WJ^`d-)BE2tXmGJzA1jHwtrAKC##(MFtit3)C+yd0uUy zjwHpF4_YWRno(Nyo5g#JX3zI_d<@~Ilfo^d`&fIKE@5n^!Kq-88g;oe=+(Nx!^pNs zkZyk72?Hez##2@3f}V3Der-%<426%4Fd}U|5O+@YNQMILhhP8b5t%$OmjRtyUdE36 zg3ZdRleRxlT=q&H_FA{%-eL!sH`PLQ zUzGAGDr%XW7(YKV)6n6``8_?#W7~Tm%a&*~TDzS6VG+v{u&xa^HUvj^j_Wt}D|oa= zCwA0G+f#OIKQDWFB_kGrD7jlEV&_TTn6Rm&nd7FL%66%>xV~50aja0IBArGoEESF$ zg1XI~V~yBdO+lF!YDix#`U(ky)O`GvcEjiTLRVkId#WCT2EDyVNt*|cBZ{{_nJ%&k z7JJ=$CDMD+H>s+t3e4Vghwk*vt+2pKi7{@M+!;e!tB|2K_A3F-- zICg)R$%(K?6zvjC0DNNS!MO(+(%}9KjnCyhj}t6LXbvh9$CV!Es~V3^@cf24r&KQ+ z`OHi?#n#pquD{H+G4#&%7=E(A%p5uM4hbccA|ciwb8~awoE6>NL=T6<5ekKr7-pV_ zpUC$eW6oo1)dbgc>8fGwRz2!XK%)=)YFo!L4Ufm$`ewW8dG68;q(Ug2Ld)_N|5);y zw!=!gpqZ{J0l?c9IVKW`#>P|}$+G`)>sWi9+lQbOW2DKj9YhzQ(Hdtn!kI1Pu<&Cbn8|P`)EWdF(@RSetXwAZ3g+ld zJ5oeu&&UZrL<(Ojj;&qJ7C}sz*bGe%XaQrThKP@}nu>a#L5OFX!qQq>QFLKEHQcd` zlh8l)3=(HTA(Q2W80yG;Jz*o~#EG7Xx%TtL>nx^GbfRyLyC~AJ47iK8KR7&Bk*`!| zeY*W1CV43oBN61rV)J<5FPznZuw01Q{Gia%}ehJ?zd#y9xOGtWzN2}2l!!NG#KNOlhJo4#n>>(BKzq{ z9Bfs$b^OrgHY8d7C>#bWs}UyCbUiP#221DKt4gDy*o6+h%dfaA0^{Pl4^}>I*lZ~R ztqEgmj$w1^WSxFU{dZ%@w4jMrfvoG!CpXEhVyUT_*}04ddlLPTi`C4FHIoU(oT5rB zc=U$))kI^rS^Cu}gAc910sJd;S+^8lI+dR!s?|?M%f7h~qxvvyD8T$a2&zjxk=v}V z!G0URB@43|OZqDfIaVqDQdRoHLX-o=>oSy}TK~+Yk(s7Yc2$-3L(&}Mt_TGz16F&t z2sGTKrrG{kS)F3Cix-MWS1Al+C69UWvPErkWV&P1)rDYvi{ou{<{u>}v7=*e&i*jA ze-wp3Ng}8tm;bH$8s8BK%PQLe zOrA#a$>Jd=eWw4`dMm8G+of%y0uqU&5skuysMcd7CzzxJ0{(&-0}Wc#CFbk4(H+Ak zPXMnxFd&EsG(3I;`P+W5PAZko;zH7+&^C(7D)&662(RjpoH2{KTuJ*<2g&I}7p|BX zJqM6B+=NM>2HYj?_61)nRdm7M)RKRu@B!u}aU=K(JRUEbDX-uyu2i|B%RQIh$3h8= zj*fizfZctrL>4r0)*bKd>&r~90bO`8$ay*RyEKJ6>at+_LiJnvAE zP#{rWlejzFMMuBWaf!a#<(27M(l6~kTAZu6uwK`KJ)u;|9P-j<>eA=Vasb*-!IY?B zNfw8pHia}A4eOCGmgMf6t=rtT&ut7Kn9fdb`pQ*L>lwKmmtyU$mPGf&T%Zfbgu-Rb zf;17w8Uog~Gnr1~8Ch9L4STY^Y|L@~)Xw2Rr9$zR@o^~)>Oh-KDn5j63Tp`^z-Y!E z_@D2yOUcB`hD@7 zaq;ca{JvGUV)e#PIS6IbIhSIT6J(+wA3`_r+l@G~ z^Dw)eEX`>BtFE(u)KS2N0bBEK8`;CvOLg)a9jcJGxanS~_CRz59Z!I-*(wWqZ7yn4 z?TFhrJ?*I$PqX_@@zbfBcr+=AOl}rQ{AUg$N@cm{z{ApX7cvi-)ZGR&{*rPTN_z`E zzncY6DQW+^C9#n`Hw}8}ZR1FiMrDmgH86Yb3y#4Lzwditln6)=d4S%PE*xZqhbLKx zcOBQF=$)ONQS~9)8>DOTX zf?UM(b&eouK;MBq|5BTkLmkOCAASje(uFhLtmeFp0gWdeHr-KYF@(t;cuq1+x(CCl zlEC5coT=H@x$ISW>zc#%gw!HZO+UrRcIl5^-&jW`t8!0pHW=bL)mb%*v$M`wR!T|Y zb+-qBA+(`0KJZHKvSzVah>!S+GZH~=(ZI?&jrTMg3$sW7@`)0fP|D3gpjBC=}i)&8W z2=ba*DlGvfd^z3Yv8y&0v?b`rurs5AU_(2LGVg=7%^ZZ!($^q z-iH;lpEJXLi!`@Cf%K=e#j2CsrCCg+*vH#@NIzWZFPK8q0^)2xHv?L9Slcv-*Df<$ z*gS`3hV%@gtc8*p884`Os62>35DIW>eYWS%D-;T#2wF)nir-M=`Q`b)-DF@7lX?iK z9Tzq!fEo}75KPM1tg)6#1dP}AxxHwM)&{{}P%5cHSrvft1kjDlYu6xA@MluZ)YL_$ zC}(NzQF@eoQOh$N$aTPA-xwKl4h>UdJ^@qp z6}Yt%oyc%4sP4>vm>>C00$iNvyDY~1wM?0xtHsH-}ifYy`Hbf^Znuw~E;J$3yQ~m4nX-6(@+dHI z#-2WLy94;ce&SXPk0cYj&aI!6{#}z+)!tjW_Vy#y$7}canY+BKE#@i5>C1O0F}v-EeT@wZYM&&57FZ!a1)USF|e9_$dR`Z7%NivKRL zjDtb7m_EInAhQ%eq)AnnxbL@VR}U$0;^jbEe6i1(Sa79ebiLn4E!7O8*@7kET<3P8 zjdh(Xc)Qb+*EJ*BsriS&q{^_aAee>lVyDebi;<&tGHSz*Fj#54BQG$rs!Qpgm=AnM z6NP`1>#MWS-jw z_{fV`IF;uCd>{K~{!bK^E1roTb+Ib2cRS1kH)fT`LjGs38KZO+qlA3gnAp)3{7^(d z??TZ>7V6J@IjVY!e5P@lBnFd!V2OQZ8%fj_OSQJ%Weu0xjN$ICDlJ{yZgkh#9%TdB zyM%tBw>h1C_JwET2!s_D)+ni$!c;F(j`SzyoNhYLCn|7KAq^2di|VM-L9d?dN%Z}0 zqqL<+Eq#jzj#CsG{V@Ohqd=gK$!U^aguOuZ$!`60NpPN-i{P|%>FSrn!k>{^9=7g| z1JuaonTcT2RLvEMDh1=SdJg#U;A=%9OM0u5vWZ=r-NLyy*q#(#UcZu4Jmuf;>uI*6 zAwTC_m-h45n^{tvw}p~nJr8|nOG`^Zm})!5T2L(^^_P_p+|K;0p8drhld&oVn>0xs zp07kx+&V3y`I#qoRF%`Cc#y&QZ_zxa$l_FaO|2dvqYT+dDO8X(NVe-bJWpLbNpGy) zp;4Hcp=gIvXS1B`Fvxd&%DyM>0!tgknDDLT;&6Admx-!TJZKWGY6@2uIY)_t9xR!T3YB0WYv{8-@Bq>qnv%=!frmp(9QuJU=HaZL_q~4oR<5a6XNE z3cZ+E*eR)m=NUG?&3(sCr2nN`2jf^()l=N)=BtvH)K-i-%fDv6ddl$SgnhyOmhB>92`4Kp3Ray0LO|oR z!csUVlsWdS}pXM;CHE-i3z=csDc<2~51Le>KuI@vcjA$@_+)g|`I;7JmMEc>;I4qV?L;-$IZ@Z{-JFEqL z?V(74S&2>N4k@T<@*~<_u2SyItT5|Pa{b*#p|@EbEKvmb zSMCKnWWrX%^C|SondE{8k1I>Hobyd!&UzM0EqC#C`}9EduzcEddd1~ap9y7}Br>@jzijHM71Sf)-x)W`W}^Ap2Ada4K)L*U%ZROgi5JI%e;4dYOJ@*-N^BH(aJj8cMsT7G7q1(%F?Yuzskf z?uNkqf>e^xWVCt;o%s_P?IoP8r{?0T3^U5UlL4yC5?EBvzuf*R+N2gG!M32DpAU;> z_xro5{j?t2TC|5H(bndKsSpa{1+Xq_g#jP==l$+ zQ83fBsA9pDu)vVj8s4Kn4%ROUKV41)8lYUKP~i#2*?8=Mt zkptIevjaAZ7%`iVLf3@%)(>F8RMC=qrBZ9u> zD5~i!U4KBLob1bfxIGdHFW`fY{1ZmfMc*G)AjXa;dW-WNQVOe2K3e~6XU|DR!?&`T zktfIGUPPVZLZK+d9Z13Ss3!ZwLc!dQ+-oDU>r&j&8>!X>CD>N#KBVyrvsCVt_|@jCF6$z-ISwOsZWUcG)CD0&n^*eg&_j$L z{k{|Ts1{c{=Eq^*`IC1dpBcwJ1o+Zb%F_Q`J5DPn=wq(E@OMrQC{swpilzRDM7}6 z7I>#0&g}$gJ&zJJFCQJ_A*$WA`A}mx=|QWZ6-;>|wn7SaBHJiA_EnU7&7b!J5sD^4 zL)5n|?Noy!wd;A|2v`43G=Hs+T%7IJmkeVbCSZj#C107W;hiQby3LFSJBXi7=$@}K zLhR+L4qpHCr{arLL^?M+h%RPBr&~_Wn7F0Bs~|tFomvlRuJ(btKfej+`kzgYBl^+3 z3bn>I)%dc{*@)p^1@^7T#Wm}$90OJF+NsE>C@!0 zS>-OSElU`wmnURXC~!tHiGsy8JzFjbm5?^P7}_!1UN@K>_ye}V?i92FXDujwe5z8j7IbwU z`>j6{mc27Yke@}{$eb1|85QoY-f0Fq6pq+4O(YGs?1!&2oU^eDj3Y+JQ%%0UaJYW> z|`2c zF-jyI3qJGPB9h#HL`6gw##ARRE><1PSpO>GCQ+xt$@#p4{rKaTlB<1%TluZB-1i0T zi&|9SVDUK{i?heNPBX+MY0lN_qAlmQ3uODU=#`n6O2fggbP^|PdW6qXK={JXogLbn zZ~37|{h?S#hx$JAU#Tqo49Qv*hHP_jXZ}y2NuSIg@6!qf`8^A*3z*C2D5=8k)1@5ixpZYV|RU5WSEy%Tg6+xXL=GQ%*t}26Syd;9gpkLsO6VwtU-t^ zBd4w-osOfTAMZtN*tad#3v{F_w7CCb9pqE&rDP>~f1XJIP$fzcu8+<N{!Salr&I{b4OCiQwQx~zVf!w#!*||Gd%${DH}|r28%pm zW1eMI_45~tllxo;cA;m)5~Sxf*U+0}GG^?GNU#GUDr%|~Lq0e<5~C+$XZ(R>XVN?P znzZj;n+^RH(ku!JvCSY7iHG>>Im44?o`gLz*{56*hei>6)ehft7b_4p?%l~v$)3~; z19?Nu|D_pLl7PBtjhl3J1{L4)(B67{KT<2tY{Wc+`yNw9#aOw8uJ$KRb9~%I+ybrFpIu#)K#X z+IY7L4=#7Q0!Yz7#qgyePie9BK4H7*FDSAJ5jV+jpDLv|Vcc6WCf`#PPjfAhbZcne zZxd&V&7Cd7SNUt4gWbGIsNWNOqUg5I8$a(XDP>qgq`I9 z?nPwQ`w`^TymoIfO+-{<3t#YE;=G+5GzF_+x53_Nx;DybbpPQ%ii#=h)f<{e$D5`5 zJWNW?-a27Zu>7`nS6JG)*~$e94L=bs9aKqA)cr?_JzOD}cH4RY!(^KQJ~3Kf!5KH{ zt5!y;Tg+}2fdA8dcOcgQ`=_4h-%xCLj!7p?^80H^i*W?gxa@ZT99i8e^%54cl?wpC z(TxA_xo$fyM~y(p#b*z>8Og1a9$%eV6T^*TtB+?)yMPYT{SXIPN(-BJ{@Q zy%UhrvAZEA?#T|J={_C{BW3Pa?}x@bvno={8OG!Bb4-}h3?C*vBboO5VB=F`;yz603a(3$|fzsl8QXO+*WqA)rT$Ixg)D7pq7&?BrTUJnXy@aPT5#Y;?gKc=$iTa*NrN#XAmPp)=C);-sUjdql4Y6 zhP+;~NLIrnY_v+*y&uNEBM;xLYCF1XygazRJkxZSK6S;-IIFRopD8xV=gSTJxKxh) zPa;Wu<~9l9(l<3!9l_o^-fy!TpqyKqwB@P7?j!*ugwJ;m?_@x}ze7l2ARBXMuIBOU zy{0;|yp|kTsAk4J5Sf^RQbCx_@CVHhR~H4Ibjc=rIs4m@=Ix1vVFf7!#BlB?dk{Sb z!V90`dc<*0V_5Dx+|0Lm(RU`H4pX5Q^aB2NCMn@xEIpm)|CXQYOCIBvy#Dz`%N3ui z7B^C@&n+8jS<$h&{+je;Mngc0Db?U8Q#7@IU%zWPNGNC0am3mkRffH?^88tx^o1jj zb|MwC9tKxo-`4gcY|`jCYesP^+A840!sy#~^V>m)1Q*X}g>zeMpvhm5Os7t?#|0`v z;!?`u(P9&(MnziydX{;{x@uIi#|em=T(?`UF>;`W-KlFA8M@g(e^U3Qto9X2czzZ^ zUFUhkg1TC(P4kR@FENjG;+FIL@uW6a>x{pXo#4CFjxMM5_<8>ZyDFxAi=T>R{QSov zj2wvS1l6T*|9IVDK+#60{ysRk-`w)Mfd?8m#dTX*@>Ccrr$}#1Y3T4A#h7;%<^Z zsC#w-f_$1aM{k=^hzx$n;0?`sBl+US;5=~QFP%#bVsHe2Ot5W6E1E5abOxH$-6k&_ zb^&0G-xPW@0g{&41RTG0(z6&6@8M*S*X8=RCGu};=s(jUOFnjVh)KPh0mBE|$RsUJ z(hgL?4IXg(#e2fo#=5d{jAa? z?{))Pk~6kWx@6WW1BO${CrKIpD&##ZiX@ujcE&$;9I%x)d<%9U)bnlB0a?2t(`0=H z8kL2+_jUk{;&|e0E1$!(Gd@*3QbgUN8y9}7e@zl_IWmv z0eIehaEi#(E$p}&sBSe(3=c81K!`Blj z9}_)h{r=+hH?Z*FtLsxAeE~YHHdV4+;q&^%Fyjqu8F|_yJh-UOM1JpHjm7uvfPgnG zjlS7gH@V2L>3Y>0_955*_&21>`<0N4WtqK@$b;v(fLF06Q*Zcoc*mUP^B|#H=N1l7 z(#OvWJ<-XRc29eR7?we>rZ<+0>kRlBFQ4*=4R$crpC3;aeiU5Ykd_=&S{9y<5B3Yt zoVW$F0wjB}RDhoea7m@I^uzTm9yH{CSe-vyyABl+zIQN`aAbNjf;JK1~qA+234 z@Mo6umUmaP9Dnt!+h&NS>W7mj>Np({3Wv*l%h~mtt}<#yjvuTWHIPp$@hZt|}!|j-s|9r2Dh!Z)}BE;sU&We7dgh+p1*O6P#>3!TYarRTTmXp zbAQ(Mte$++=o(Six%K6Tx5{juT~JZows`^K<|Pi1a_O&0II!!jkjFg}c|PHMW-2*K zWtabWyu% +38R&HWIKubK=R!m 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 H?eYHt2g@`} literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00002.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..186b27cd4af645b70c7bb9f5152340ecab64e171 GIT binary patch literal 16035 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00003.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..637827a1104c492bafa18f3c3100591f2fa053f0 GIT binary patch literal 7918 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00004.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4e974b40bcc58f4beeecf9b3b1559363f47d75 GIT binary patch literal 11363 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 NvB9nD$g57z{tIT=YZL$g literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2f52759f160c3e2cf6822395ea675b8c84a851 GIT binary patch literal 5467 zcmeHLSyYqRnxzCq5JO2_MUg<&wG~kO6Z4?zOu6rTebF54~1D_&=WSob#Xa zop0}NuYEfh7O>vb%GAKXVExe}2TvLpd~?shVAaF5tAG(Gyrb5@VB=qp9z1Y5qe3Q> zBR(duRcEsJf}g5yhOIias`Qubu_iDRf0L7|iof4}#3cB7u`?G}hpnIf$?sr*_afGs zXuW>iVj$)3_k2C13zu$ zN}m^w>KAPOEA~&o-CagF{#ke6wE|okp7=k2pV8$eWKuct%3<63WpXH+Vs!RKIjZ=0G0=7W7QSQ%90%9A6}LBn=9NjL!MX z!sQibjzL8GC{K_QO>ZG%#X7v zlJH4>R%WJ^`d-)BE2tXmGJzA1jHwtrAKC##(MFtit3)C+yd0uUy zjwHpF4_YWRno(Nyo5g#JX3zI_d<@~Ilfo^d`&fIKE@5n^!Kq-88g;oe=+(Nx!^pNs zkZyk72?Hez##2@3f}V3Der-%<426%4Fd}U|5O+@YNQMILhhP8b5t%$OmjRtyUdE36 zg3ZdRleRxlT=q&H_FA{%-eL!sH`PLQ zUzGAGDr%XW7(YKV)6n6``8_?#W7~Tm%a&*~TDzS6VG+v{u&xa^HUvj^j_Wt}D|oa= zCwA0G+f#OIKQDWFB_kGrD7jlEV&_TTn6Rm&nd7FL%66%>xV~50aja0IBArGoEESF$ zg1XI~V~yBdO+lF!YDix#`U(ky)O`GvcEjiTLRVkId#WCT2EDyVNt*|cBZ{{_nJ%&k z7JJ=$CDMD+H>s+t3e4Vghwk*vt+2pKi7{@M+!;e!tB|2K_A3F-- zICg)R$%(K?6zvjC0DNNS!MO(+(%}9KjnCyhj}t6LXbvh9$CV!Es~V3^@cf24r&KQ+ z`OHi?#n#pquD{H+G4#&%7=E(A%p5uM4hbccA|ciwb8~awoE6>NL=T6<5ekKr7-pV_ zpUC$eW6oo1)dbgc>8fGwRz2!XK%)=)YFo!L4Ufm$`ewW8dG68;q(Ug2Ld)_N|5);y zw!=!gpqZ{J0l?c9IVKW`#>P|}$+G`)>sWi9+lQbOW2DKj9YhzQ(Hdtn!kI1Pu<&Cbn8|P`)EWdF(@RSetXwAZ3g+ld zJ5oeu&&UZrL<(Ojj;&qJ7C}sz*bGe%XaQrThKP@}nu>a#L5OFX!qQq>QFLKEHQcd` zlh8l)3=(HTA(Q2W80yG;Jz*o~#EG7Xx%TtL>nx^GbfRyLyC~AJ47iK8KR7&Bk*`!| zeY*W1CV43oBN61rV)J<5FPznZuw01Q{Gia%}ehJ?zd#y9xOGtWzN2}2l!!NG#KNOlhJo4#n>>(BKzq{ z9Bfs$b^OrgHY8d7C>#bWs}UyCbUiP#221DKt4gDy*o6+h%dfaA0^{Pl4^}>I*lZ~R ztqEgmj$w1^WSxFU{dZ%@w4jMrfvoG!CpXEhVyUT_*}04ddlLPTi`C4FHIoU(oT5rB zc=U$))kI^rS^Cu}gAc910sJd;S+^8lI+dR!s?|?M%f7h~qxvvyD8T$a2&zjxk=v}V z!G0URB@43|OZqDfIaVqDQdRoHLX-o=>oSy}TK~+Yk(s7Yc2$-3L(&}Mt_TGz16F&t z2sGTKrrG{kS)F3Cix-MWS1Al+C69UWvPErkWV&P1)rDYvi{ou{<{u>}v7=*e&i*jA ze-wp3Ng}8tm;bH$8s8BK%PQLe zOrA#a$>Jd=eWw4`dMm8G+of%y0uqU&5skuysMcd7CzzxJ0{(&-0}Wc#CFbk4(H+Ak zPXMnxFd&EsG(3I;`P+W5PAZko;zH7+&^C(7D)&662(RjpoH2{KTuJ*<2g&I}7p|BX zJqM6B+=NM>2HYj?_61)nRdm7M)RKRu@B!u}aU=K(JRUEbDX-uyu2i|B%RQIh$3h8= zj*fizfZctrL>4r0)*bKd>&r~90bO`8$ay*RyEKJ6>at+_LiJnvAE zP#{rWlejzFMMuBWaf!a#<(27M(l6~kTAZu6uwK`KJ)u;|9P-j<>eA=Vasb*-!IY?B zNfw8pHia}A4eOCGmgMf6t=rtT&ut7Kn9fdb`pQ*L>lwKmmtyU$mPGf&T%Zfbgu-Rb zf;17w8Uog~Gnr1~8Ch9L4STY^Y|L@~)Xw2Rr9$zR@o^~)>Oh-KDn5j63Tp`^z-Y!E z_@D2yOUcB`hD@7 zaq;ca{JvGUV)e#PIS6IbIhSIT6J(+wA3`_r+l@G~ z^Dw)eEX`>BtFE(u)KS2N0bBEK8`;CvOLg)a9jcJGxanS~_CRz59Z!I-*(wWqZ7yn4 z?TFhrJ?*I$PqX_@@zbfBcr+=AOl}rQ{AUg$N@cm{z{ApX7cvi-)ZGR&{*rPTN_z`E zzncY6DQW+^C9#n`Hw}8}ZR1FiMrDmgH86Yb3y#4Lzwditln6)=d4S%PE*xZqhbLKx zcOBQF=$)ONQS~9)8>DOTX zf?UM(b&eouK;MBq|5BTkLmkOCAASje(uFhLtmeFp0gWdeHr-KYF@(t;cuq1+x(CCl zlEC5coT=H@x$ISW>zc#%gw!HZO+UrRcIl5^-&jW`t8!0pHW=bL)mb%*v$M`wR!T|Y zb+-qBA+(`0KJZHKvSzVah>!S+GZH~=(ZI?&jrTMg3$sW7@`)0fP|D3gpjBC=}i)&8W z2=ba*DlGvfd^z3Yv8y&0v?b`rurs5AU_(2LGVg=7%^ZZ!($^q z-iH;lpEJXLi!`@Cf%K=e#j2CsrCCg+*vH#@NIzWZFPK8q0^)2xHv?L9Slcv-*Df<$ z*gS`3hV%@gtc8*p884`Os62>35DIW>eYWS%D-;T#2wF)nir-M=`Q`b)-DF@7lX?iK z9Tzq!fEo}75KPM1tg)6#1dP}AxxHwM)&{{}P%5cHSrvft1kjDlYu6xA@MluZ)YL_$ zC}(NzQF@eoQOh$N$aTPA-xwKl4h>UdJ^@qp z6}Yt%oyc%4sP4>vm>>C00$iNvyDY~1 list[NavInsID]: + moves = list() + if is_nano: + moves += [ NavInsID.RIGHT_CLICK ] * nano_steps + if reject: + moves += [ NavInsID.RIGHT_CLICK ] + moves += [ NavInsID.BOTH_CLICK ] + else: + moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * stax_steps + if reject: + moves += [ + NavInsID.USE_CASE_REVIEW_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM + ] + else: + moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + return moves + +def snapshot_test_name(nft_type: str, fn: str, chain_id: int, reject: bool) -> str: + name = "%s_%s_%s" % (nft_type, fn.split("(")[0], str(chain_id)) + if reject: + name += "-rejected" + return name + +def common_test_nft(fw: Firmware, + back: BackendInterface, + nav: Navigator, + collec: NFTCollection, + action: Action, + reject: bool, + plugin_name: str): + app_client = EthAppClient(back) + selector = get_selector_from_function(action.fn) + + if app_client._client.firmware.name == "nanos": + pytest.skip("Not supported on LNS") + with app_client.set_plugin(plugin_name, + collec.addr, + selector, + 1): + pass + with app_client.provide_nft_metadata(collec.name, collec.addr, collec.chain_id): + pass + with app_client.sign_legacy(BIP32_PATH, + NONCE, + GAS_PRICE, + GAS_LIMIT, + collec.addr, + 0, + collec.chain_id, + action.data_fn(action)): + nav.navigate_and_compare(ROOT_SCREENSHOT_PATH, + snapshot_test_name(plugin_name.lower(), + action.fn, + collec.chain_id, + reject), + action.nav_fn(fw.is_nano, + collec.chain_id, + reject)) + +def common_test_nft_reject(test_fn: Callable, + fw: Firmware, + back: BackendInterface, + nav: Navigator, + collec: NFTCollection, + action: Action): + try: + test_fn(fw, back, nav, collec, action, True) + except ExceptionRAPDU as e: + assert e.status == StatusWord.CONDITION_NOT_SATISFIED + else: + assert False # An exception should have been raised + +# ERC-721 + +ERC721_PLUGIN = "ERC721" +ERC721_SAFE_TRANSFER_FROM_DATA = "safeTransferFrom(address,address,uint256,bytes)" +ERC721_SAFE_TRANSFER_FROM = "safeTransferFrom(address,address,uint256)" +ERC721_TRANSFER_FROM = "transferFrom(address,address,uint256)" +ERC721_APPROVE = "approve(address,uint256)" +ERC721_SET_APPROVAL_FOR_ALL = "setApprovalForAll(address,bool)" + +## data formatting functions + +def data_erc721_transfer_from(action: Action) -> TxData: + return TxData( + get_selector_from_function(action.fn), + [ + FROM, + TO, + struct.pack(">H", NFTS[0][0]) + ] + ) + +def data_erc721_safe_transfer_from_data(action: Action) -> TxData: + txd = data_erc721_transfer_from(action) + txd.parameters += [ DATA ] + return txd + +def data_erc721_approve(action: Action) -> TxData: + return TxData( + get_selector_from_function(action.fn), + [ + TO, + struct.pack(">H", NFTS[0][0]) + ] + ) + +def data_erc721_set_approval_for_all(action: Action) -> TxData: + return TxData( + get_selector_from_function(action.fn), + [ + TO, + struct.pack("b", False) + ] + ) + +## ui nav functions + +def nav_erc721_transfer_from(is_nano: bool, + chain_id: int, + reject: bool) -> list[NavInsID]: + nano_steps = 7 + stax_steps = 3 + if chain_id != 1: + nano_steps += 1 + stax_steps += 1 + return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + +def nav_erc721_approve(is_nano: bool, + chain_id: int, + reject: bool) -> list[NavInsID]: + nano_steps = 7 + stax_steps = 3 + if chain_id != 1: + nano_steps += 1 + stax_steps += 1 + return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + +def nav_erc721_set_approval_for_all(is_nano: bool, + chain_id: int, + reject: bool) -> list[NavInsID]: + nano_steps = 6 + if chain_id != 1: + nano_steps += 1 + return common_nav_nft(is_nano, nano_steps, 3, reject) + +collecs_721 = [ + NFTCollection(bytes.fromhex("bc4ca0eda7647a8ab7c2061c2e118a18a936f13d"), + "Bored Ape Yacht Club", + 1), + NFTCollection(bytes.fromhex("670fd103b1a08628e9557cd66b87ded841115190"), + "y00ts", + 137), + NFTCollection(bytes.fromhex("2909cf13e458a576cdd9aab6bd6617051a92dacf"), + "goerlirocks", + 5) +] +actions_721 = [ + Action(ERC721_SAFE_TRANSFER_FROM_DATA, + data_erc721_safe_transfer_from_data, + nav_erc721_transfer_from), + Action(ERC721_SAFE_TRANSFER_FROM, + data_erc721_transfer_from, + nav_erc721_transfer_from), + Action(ERC721_TRANSFER_FROM, + data_erc721_transfer_from, + nav_erc721_transfer_from), + Action(ERC721_APPROVE, + data_erc721_approve, + nav_erc721_approve), + Action(ERC721_SET_APPROVAL_FOR_ALL, + data_erc721_set_approval_for_all, + nav_erc721_set_approval_for_all) +] + + +@pytest.fixture(params=collecs_721) +def collec_721(request) -> NFTCollection: + return request.param +@pytest.fixture(params=actions_721) +def action_721(request) -> Action: + return request.param + +def test_erc721(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + collec_721: NFTCollection, + action_721: Action, + reject: bool = False): + common_test_nft(firmware, + backend, + navigator, + collec_721, + action_721, + reject, + ERC721_PLUGIN) + +def test_erc721_reject(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator): + common_test_nft_reject(test_erc721, + firmware, + backend, + navigator, + collecs_721[0], + actions_721[0]) + +# ERC-1155 + +ERC1155_PLUGIN = "ERC1155" +ERC1155_SAFE_TRANSFER_FROM = "safeTransferFrom(address,address,uint256,uint256,bytes)" +ERC1155_SAFE_BATCH_TRANSFER_FROM = "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)" +ERC1155_SET_APPROVAL_FOR_ALL = "setApprovalForAll(address,bool)" + +## data formatting functions + +def data_erc1155_safe_transfer_from(action: Action) -> TxData: + return TxData( + get_selector_from_function(action.fn), + [ + FROM, + TO, + struct.pack(">H", NFTS[0][0]), + struct.pack(">H", NFTS[0][1]), + DATA + ] + ) + +def data_erc1155_safe_batch_transfer_from(action: Action) -> TxData: + data = TxData( + get_selector_from_function(action.fn), + [ + FROM, + TO + ]) + data.parameters += [ int(32 * 4).to_bytes(8, "big") ] # token_ids offset + data.parameters += [int(32 * (4 + len(NFTS) + 1)).to_bytes(8, "big") ] # amounts offset + data.parameters += [ int(len(NFTS)).to_bytes(8, "big") ] # token_ids length + for nft in NFTS: + data.parameters += [ struct.pack(">H", nft[0]) ] # token_id + data.parameters += [ int(len(NFTS)).to_bytes(8, "big") ] # amounts length + for nft in NFTS: + data.parameters += [ struct.pack(">H", nft[1]) ] # amount + return data + +def data_erc1155_set_approval_for_all(action: Action) -> TxData: + return TxData( + get_selector_from_function(action.fn), + [ + TO, + struct.pack("b", False) + ] + ) + +## ui nav functions + +def nav_erc1155_safe_transfer_from(is_nano: bool, + chain_id: int, + reject: bool) -> list: + nano_steps = 8 + if chain_id != 1: + nano_steps += 1 + return common_nav_nft(is_nano, nano_steps, 4, reject) + +def nav_erc1155_safe_batch_transfer_from(is_nano: bool, + chain_id: int, + reject: bool) -> list: + nano_steps = 7 + stax_steps = 3 + if chain_id != 1: + nano_steps += 1 + stax_steps += 1 + return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + +def nav_erc1155_set_approval_for_all(is_nano: bool, + chain_id: int, + reject: bool) -> list: + nano_steps = 6 + if chain_id != 1: + nano_steps += 1 + return common_nav_nft(is_nano, nano_steps, 3, reject) + +collecs_1155 = [ + NFTCollection(bytes.fromhex("495f947276749ce646f68ac8c248420045cb7b5e"), + "OpenSea Shared Storefront", + 1), + NFTCollection(bytes.fromhex("2953399124f0cbb46d2cbacd8a89cf0599974963"), + "OpenSea Collections", + 137), + NFTCollection(bytes.fromhex("f4910c763ed4e47a585e2d34baa9a4b611ae448c"), + "OpenSea Collections", + 5) +] +actions_1155 = [ + Action(ERC1155_SAFE_TRANSFER_FROM, + data_erc1155_safe_transfer_from, + nav_erc1155_safe_transfer_from), + Action(ERC1155_SAFE_BATCH_TRANSFER_FROM, + data_erc1155_safe_batch_transfer_from, + nav_erc1155_safe_batch_transfer_from), + Action(ERC1155_SET_APPROVAL_FOR_ALL, + data_erc1155_set_approval_for_all, + nav_erc1155_set_approval_for_all) +] +@pytest.fixture(params=collecs_1155) +def collec_1155(request) -> bool: + return request.param +@pytest.fixture(params=actions_1155) +def action_1155(request) -> Action: + return request.param + +def test_erc1155(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + collec_1155: NFTCollection, + action_1155: Action, + reject: bool = False): + common_test_nft(firmware, + backend, + navigator, + collec_1155, + action_1155, + reject, + ERC1155_PLUGIN) + +def test_erc1155_reject(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator): + common_test_nft_reject(test_erc1155, + firmware, + backend, + navigator, + collecs_1155[0], + actions_1155[0]) From ad2786efe01e27ecd32c7e5b84f8e2c46616a712 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Wed, 4 Oct 2023 14:51:40 +0200 Subject: [PATCH 025/160] Add a PRINTF of amounts in ERR_SILENT_MODE_CHECK_FAILED --- src_features/signTx/logic_signTx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index 10ac87fb8..c8143a0c1 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -473,6 +473,8 @@ void finalizeParsing(bool direct) { // Ensure the values are the same that the ones that have been previously validated if (strcmp(strings.common.fullAmount, displayBuffer) != 0) { PRINTF("ERR_SILENT_MODE_CHECK_FAILED, amount check failed\n"); + PRINTF("Expected %s\n", strings.common.fullAmount); + PRINTF("Received %s\n", displayBuffer); THROW(ERR_SILENT_MODE_CHECK_FAILED); } } else { From b1b2d5ecbb683745d4b91547d6f617cc3e39de0b Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 12 Sep 2023 12:02:18 +0200 Subject: [PATCH 026/160] Removed kUSD & Tobalaba --- glyphs/stax_kusd_64px.gif | Bin 283 -> 0 bytes icons/nanos_app_kusd.gif | Bin 1132 -> 0 bytes icons/nanox_app_kusd.gif | Bin 1125 -> 0 bytes icons/stax_app_kusd.gif | Bin 133 -> 0 bytes makefile_conf/chain/kusd.mk | 3 --- makefile_conf/chain/tobalaba.mk | 3 --- src/chainConfig.h | 2 -- src/main.c | 12 ------------ src/tokens.c | 4 ---- src/tokens.h | 4 ---- 10 files changed, 28 deletions(-) delete mode 100644 glyphs/stax_kusd_64px.gif delete mode 100644 icons/nanos_app_kusd.gif delete mode 100644 icons/nanox_app_kusd.gif delete mode 100644 icons/stax_app_kusd.gif delete mode 100644 makefile_conf/chain/kusd.mk delete mode 100644 makefile_conf/chain/tobalaba.mk diff --git a/glyphs/stax_kusd_64px.gif b/glyphs/stax_kusd_64px.gif deleted file mode 100644 index b1873066271049ed21e7bfe9a4ebe80834ead365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$KiNk%w1VL$*t0Du4h00030|NkNR1ONa4001li0000$06+i$0`iQHsmtvT zqnxzb%K+XSXbw`|7naXxrWvZH>`1mDY_M|qdbgR!d!-BXeivKNMih~b!KCuT^f@89 zT65YM!gSIFP4?ZQt_m^P)!bTF=`%X2L0ZScu^NLE&tv-e!Tcq0=hs&U80dvarN*Uq zsCeRraOL=TxPxeCS$OkkxG9Hewg-y!M*|v4RFx{3gxYHAC-iA4o1nRQ`$t>rxr>_$ z94tIcYHNJ_Yuws(8=I^Q7;WeaIovZy4XeGK>zo|s8qQTm&DIMZ{c@gF)lQr~j@@_) hKdagfdtbK1->>dooPQYzt}y5Yp~8g>8wMx<06TLhgWLcB diff --git a/icons/nanos_app_kusd.gif b/icons/nanos_app_kusd.gif deleted file mode 100644 index 8adc23bdd136352692b6189bd8e1d11a7300f862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ?wbhEHb6krfwXkY+=|Ns9h{^ySH4N!1NEJ*~?Hue<-iOJciB??KY>6v-9O7C~? zS5nAKu~iB;^)>JRtPXT0NVp4u-iLDaQ zr4TRV7Ql_oE7k*hM=v=)SHB{$K;KZ$0OTc@LSJ9}N^^7Js*6j4QW5UOYH)E#WkITb zP-=00X;E@2P`NV5ssbzLqSVBa{GyQj{2W*)24v)yucqiS6q^qmz?V9Vygr+M=vuo#mdpu$<5Ki%+1os!pP9j)xyHn)Y8S-$<@uo zz|_RTzyPM#B|o_|H#M&WrZ)wy*W3W7UQmL_Edbi=l3J8mmYU*Ll%J~r_PA9hZnwDL zG!Lpb1*cogTyg5v2RcR{6un5%4HE*UArKRuc!3;v@=whJruiaZ;%5B+@9&@AzkdGs z{_X3R&!0Yic>nJ0o7b;izIguZ>66Eg9zM8#@9v%3w{G6Je(ma&%a<-*IDhW!nbW6E zo;ZH&=#j&R4j$OQZ||PnyLRr_zHRH4&6_rESif%Vn$@dTu2{Zo>5|2Z7A}}SZ|F(<6Xm4w6X>Mw4sIRN7sjjN5C@(85DK083$j{5o$mNlr>kh>weniH?el2oDPl2@VPj@b~le@%HlcaCdVB#;Bu%y`8O%wUwoXxtXbn zv5}#HzMig*ww9)bx|*trvXY{Lyqv6zw3MWTxR|Jju#lhtKOZj-Hy0-dI~ywtGZP~N zgW^vXaABbXB0*&b1CwG;|H{*M85+3_?L5}5vdF(#$*JDS!M3b>+1fiHzMp)QSsAPW DyCaR3 diff --git a/icons/nanox_app_kusd.gif b/icons/nanox_app_kusd.gif deleted file mode 100644 index 6c8d03b869f6e95ecec941b8f11d3ce3dc0cab05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1125 zcmZ?wbhEHbTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFlEiTau_y zk(-lOY*k^al$esAlxhWJ=cbk<>MJRLRg`4gDmj8A6e4^B6rA&mQWZ?~%yg3tO$-#w zE%gk|3`|T7brg&Y49)coO!W=SbPWux3@ogS3>Bb2$vOKg>t6#hd!kXryZHLq9?>>0h}{9OHt!~%UoJp+)3AU@44@b$&7G&dKl z8WTK@=NlI zGx7@*oSi{IW}%?ro0y!L2NcundS0ve;2nVDkc=<4L=Xkq4N zX=Gt!Xy|HT;c9B>;_T$=W@2D!^54S10H)a`Ke;qFHLnDwIR&oS+yJH-SuaQ{C@p}3 z1Q@_YnPsUdZbkXI3SfU*Wg@u+)hRA8(@>lOb_qml3Qm`px#HBT4|Iz@dR#+9fXN3W z2}!lU^a>*tT}-@bnN{ORL|_ix|4e)aOj^Jh<= zJbv`>!To!8@7%t1^TzdSSFc>Ybn(LZb7#+-K6UcM@nc7i96ogL!2W%E_w3%abI0~= zTeoc9v~k1wb!*qGUbS+?@?}exEMBy5!Tfo1=ggipbH?;(Q>RRxG;umQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+eT53viQer}UTx?8qRAfYWSZGLa zP+)++pRbR%m#2rjn=3Fr9UbiLY;CNqEG^8SdvHp diff --git a/icons/stax_app_kusd.gif b/icons/stax_app_kusd.gif deleted file mode 100644 index 18b1a1c5ea722b40213b15f6c76033354a5ab79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmZ?wbhEHbRA5kGXkY+=|Ns9h{$v3&bwDIYhJh)jr+?+@1N?#o8`ouSUSjp=WGRo> zgh!uSmosj9ni}jmryVl0EMhmIl}@Tz_dw)?TOSXN1LP g>oy%W`;hl$^P=Y0D>lsyU4Q?B_@$Whi@6!B0oFn~7XSbN diff --git a/makefile_conf/chain/kusd.mk b/makefile_conf/chain/kusd.mk deleted file mode 100644 index 38cf6cd53..000000000 --- a/makefile_conf/chain/kusd.mk +++ /dev/null @@ -1,3 +0,0 @@ -APP_LOAD_PARAMS += --path "44'/91927009'" -DEFINES += CHAINID_UPCASE=\"KUSD\" CHAINID_COINNAME=\"KUSD\" CHAIN_KIND=CHAIN_KIND_KUSD CHAIN_ID=1 -APPNAME = "kUSD" \ No newline at end of file diff --git a/makefile_conf/chain/tobalaba.mk b/makefile_conf/chain/tobalaba.mk deleted file mode 100644 index 92aa14519..000000000 --- a/makefile_conf/chain/tobalaba.mk +++ /dev/null @@ -1,3 +0,0 @@ -APP_LOAD_PARAMS += --path "44'/401697'" -DEFINES += CHAINID_UPCASE=\"TOBALABA\" CHAINID_COINNAME=\"TOBALABA\" CHAIN_KIND=CHAIN_KIND_TOBALABA CHAIN_ID=401697 -APPNAME = "Tobalaba" \ No newline at end of file diff --git a/src/chainConfig.h b/src/chainConfig.h index 070de4961..28331448a 100644 --- a/src/chainConfig.h +++ b/src/chainConfig.h @@ -31,7 +31,6 @@ typedef enum chain_kind_e { CHAIN_KIND_RSK, CHAIN_KIND_UBIQ, CHAIN_KIND_WANCHAIN, - CHAIN_KIND_KUSD, CHAIN_KIND_PIRL, CHAIN_KIND_AKROMA, CHAIN_KIND_MUSICOIN, @@ -46,7 +45,6 @@ typedef enum chain_kind_e { CHAIN_KIND_REOSC, CHAIN_KIND_HPB, CHAIN_KIND_TOMOCHAIN, - CHAIN_KIND_TOBALABA, CHAIN_KIND_DEXON, CHAIN_KIND_VOLTA, CHAIN_KIND_ENERGYWEBCHAIN, diff --git a/src/main.c b/src/main.c index 3399b8614..d5aa2deb7 100644 --- a/src/main.c +++ b/src/main.c @@ -182,9 +182,6 @@ extraInfo_t *getKnownToken(uint8_t *contractAddress) { case CHAIN_KIND_WANCHAIN: numTokens = NUM_TOKENS_WANCHAIN; break; - case CHAIN_KIND_KUSD: - numTokens = NUM_TOKENS_KUSD; - break; case CHAIN_KIND_MUSICOIN: numTokens = NUM_TOKENS_MUSICOIN; break; @@ -224,9 +221,6 @@ extraInfo_t *getKnownToken(uint8_t *contractAddress) { case CHAIN_KIND_MOONRIVER: numTokens = NUM_TOKENS_MOONRIVER; break; - case CHAIN_KIND_TOBALABA: - numTokens = NUM_TOKENS_TOBALABA; - break; case CHAIN_KIND_DEXON: numTokens = NUM_TOKENS_DEXON; break; @@ -341,9 +335,6 @@ extraInfo_t *getKnownToken(uint8_t *contractAddress) { case CHAIN_KIND_WANCHAIN: currentToken = (tokenDefinition_t *) PIC(&TOKENS_WANCHAIN[i]); break; - case CHAIN_KIND_KUSD: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_KUSD[i]); - break; case CHAIN_KIND_MUSICOIN: currentToken = (tokenDefinition_t *) PIC(&TOKENS_MUSICOIN[i]); break; @@ -383,9 +374,6 @@ extraInfo_t *getKnownToken(uint8_t *contractAddress) { case CHAIN_KIND_MOONRIVER: currentToken = (tokenDefinition_t *) PIC(&TOKENS_MOONRIVER[i]); break; - case CHAIN_KIND_TOBALABA: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_TOBALABA[i]); - break; case CHAIN_KIND_DEXON: currentToken = (tokenDefinition_t *) PIC(&TOKENS_DEXON[i]); break; diff --git a/src/tokens.c b/src/tokens.c index a513758bd..dd597e489 100644 --- a/src/tokens.c +++ b/src/tokens.c @@ -146,8 +146,6 @@ const tokenDefinition_t const TOKENS_EXPANSE[NUM_TOKENS_EXPANSE] = {}; const tokenDefinition_t const TOKENS_WANCHAIN[NUM_TOKENS_WANCHAIN] = {}; -const tokenDefinition_t const TOKENS_KUSD[NUM_TOKENS_KUSD] = {}; - const tokenDefinition_t const TOKENS_MUSICOIN[NUM_TOKENS_MUSICOIN] = {}; const tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO] = {}; @@ -166,8 +164,6 @@ const tokenDefinition_t const TOKENS_HPB[NUM_TOKENS_HPB] = {}; const tokenDefinition_t const TOKENS_TOMOCHAIN[NUM_TOKENS_TOMOCHAIN] = {}; -const tokenDefinition_t const TOKENS_TOBALABA[NUM_TOKENS_TOBALABA] = {}; - const tokenDefinition_t const TOKENS_DEXON[NUM_TOKENS_DEXON] = {}; const tokenDefinition_t const TOKENS_VOLTA[NUM_TOKENS_VOLTA] = {}; diff --git a/src/tokens.h b/src/tokens.h index feeecb8c9..7851ea50d 100644 --- a/src/tokens.h +++ b/src/tokens.h @@ -83,7 +83,6 @@ static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { #define NUM_TOKENS_UBIQ 6 #define NUM_TOKENS_EXPANSE 0 #define NUM_TOKENS_WANCHAIN 0 -#define NUM_TOKENS_KUSD 0 #define NUM_TOKENS_MUSICOIN 0 #define NUM_TOKENS_CALLISTO 0 #define NUM_TOKENS_ETHERGEM 0 @@ -93,7 +92,6 @@ static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { #define NUM_TOKENS_REOSC 0 #define NUM_TOKENS_HPB 0 #define NUM_TOKENS_TOMOCHAIN 0 -#define NUM_TOKENS_TOBALABA 0 #define NUM_TOKENS_DEXON 0 #define NUM_TOKENS_VOLTA 0 #define NUM_TOKENS_ENERGYWEBCHAIN 0 @@ -135,7 +133,6 @@ extern tokenDefinition_t const TOKENS_RSK[NUM_TOKENS_RSK]; extern tokenDefinition_t const TOKENS_UBIQ[NUM_TOKENS_UBIQ]; extern tokenDefinition_t const TOKENS_EXPANSE[NUM_TOKENS_EXPANSE]; extern tokenDefinition_t const TOKENS_WANCHAIN[NUM_TOKENS_WANCHAIN]; -extern tokenDefinition_t const TOKENS_KUSD[NUM_TOKENS_KUSD]; extern tokenDefinition_t const TOKENS_MUSICOIN[NUM_TOKENS_MUSICOIN]; extern tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO]; extern tokenDefinition_t const TOKENS_ETHERGEM[NUM_TOKENS_ETHERGEM]; @@ -145,7 +142,6 @@ extern tokenDefinition_t const TOKENS_MIX[NUM_TOKENS_MIX]; extern tokenDefinition_t const TOKENS_REOSC[NUM_TOKENS_REOSC]; extern tokenDefinition_t const TOKENS_HPB[NUM_TOKENS_HPB]; extern tokenDefinition_t const TOKENS_TOMOCHAIN[NUM_TOKENS_TOMOCHAIN]; -extern tokenDefinition_t const TOKENS_TOBALABA[NUM_TOKENS_TOBALABA]; extern tokenDefinition_t const TOKENS_DEXON[NUM_TOKENS_DEXON]; extern tokenDefinition_t const TOKENS_VOLTA[NUM_TOKENS_VOLTA]; extern tokenDefinition_t const TOKENS_ENERGYWEBCHAIN[NUM_TOKENS_ENERGYWEBCHAIN]; From b8e3b4b67af0dbdbb436c43aec777d4d442360db Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 12 Sep 2023 13:24:49 +0200 Subject: [PATCH 027/160] Fixed Wanchain's chain ID https://chainlist.org/chain/888 --- makefile_conf/chain/wanchain.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile_conf/chain/wanchain.mk b/makefile_conf/chain/wanchain.mk index 4407e93c5..cfe84437a 100644 --- a/makefile_conf/chain/wanchain.mk +++ b/makefile_conf/chain/wanchain.mk @@ -1,3 +1,3 @@ APP_LOAD_PARAMS += --path "44'/5718350'" -DEFINES += CHAINID_UPCASE=\"WAN\" CHAINID_COINNAME=\"WAN\" CHAIN_KIND=CHAIN_KIND_WANCHAIN CHAIN_ID=1 -APPNAME = "Wanchain" \ No newline at end of file +DEFINES += CHAINID_UPCASE=\"WAN\" CHAINID_COINNAME=\"WAN\" CHAIN_KIND=CHAIN_KIND_WANCHAIN CHAIN_ID=888 +APPNAME = "Wanchain" From 14ba60c79738fa5a537e3351cf2a9dbc389514f8 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 12 Sep 2023 13:43:27 +0200 Subject: [PATCH 028/160] Icons now use chain ID in filenames --- Makefile | 12 ++++++------ ...lux_espace_64px.gif => stax_chain_1030_64px.gif} | Bin ...thundercore_64px.gif => stax_chain_108_64px.gif} | Bin ...x_moonbeam_64px.gif => stax_chain_1284_64px.gif} | Bin ..._moonriver_64px.gif => stax_chain_1285_64px.gif} | Bin ..._ether1_64px.gif => stax_chain_1313114_64px.gif} | Bin ...tax_polygon_64px.gif => stax_chain_137_64px.gif} | Bin .../{stax_flare_64px.gif => stax_chain_14_64px.gif} | Bin ...ax_atheios_64px.gif => stax_chain_1620_64px.gif} | Bin ...flare_coston_64px.gif => stax_chain_16_64px.gif} | Bin ...{stax_cube_64px.gif => stax_chain_1818_64px.gif} | Bin ...x_ethergem_64px.gif => stax_chain_1987_64px.gif} | Bin .../{stax_bttc_64px.gif => stax_chain_199_64px.gif} | Bin ...tax_songbird_64px.gif => stax_chain_19_64px.gif} | Bin ...stax_ethereum_64px.gif => stax_chain_1_64px.gif} | Bin ...x_akroma_64px.gif => stax_chain_200625_64px.gif} | Bin ...racoin_64px.gif => stax_chain_20531811_64px.gif} | Bin ...estnet_64px.gif => stax_chain_20531812_64px.gif} | Bin ...{stax_dexon_64px.gif => stax_chain_237_64px.gif} | Bin ..._webchain_64px.gif => stax_chain_24484_64px.gif} | Bin ...s_sigma1_64px.gif => stax_chain_246529_64px.gif} | Bin ...tis_tau1_64px.gif => stax_chain_246785_64px.gif} | Bin ...rgywebchain_64px.gif => stax_chain_246_64px.gif} | Bin ...{stax_oasys_64px.gif => stax_chain_248_64px.gif} | Bin ..._kardiachain_64px.gif => stax_chain_24_64px.gif} | Bin .../{stax_hpb_64px.gif => stax_chain_269_64px.gif} | Bin ...stax_reosc_64px.gif => stax_chain_2894_64px.gif} | Bin ...{stax_expanse_64px.gif => stax_chain_2_64px.gif} | Bin .../{stax_rsk_64px.gif => stax_chain_30_64px.gif} | Bin ...hersocial_64px.gif => stax_chain_31102_64px.gif} | Bin ...pirl_64px.gif => stax_chain_3125659152_64px.gif} | Bin ..._rsk_testnet_64px.gif => stax_chain_31_64px.gif} | Bin ...stax_shiden_64px.gif => stax_chain_336_64px.gif} | Bin ...{stax_ropsten_64px.gif => stax_chain_3_64px.gif} | Bin ...tobalaba_64px.gif => stax_chain_401697_64px.gif} | Bin ...x_xdcnetwork_64px.gif => stax_chain_50_64px.gif} | Bin ...othemnetwork_64px.gif => stax_chain_51_64px.gif} | Bin .../{stax_bsc_64px.gif => stax_chain_56_64px.gif} | Bin ...{stax_astar_64px.gif => stax_chain_592_64px.gif} | Bin .../{stax_goerli_64px.gif => stax_chain_5_64px.gif} | Bin ...stax_gochain_64px.gif => stax_chain_60_64px.gif} | Bin ...reum_classic_64px.gif => stax_chain_61_64px.gif} | Bin ..._multivac_64px.gif => stax_chain_62621_64px.gif} | Bin ...stax_ellaism_64px.gif => stax_chain_64_64px.gif} | Bin .../{stax_okc_64px.gif => stax_chain_66_64px.gif} | Bin ...stax_shyft_64px.gif => stax_chain_7341_64px.gif} | Bin ...tax_volta_64px.gif => stax_chain_73799_64px.gif} | Bin .../{stax_mix_64px.gif => stax_chain_76_64px.gif} | Bin ...usicoin_64px.gif => stax_chain_7762959_64px.gif} | Bin ...{stax_wethio_64px.gif => stax_chain_78_64px.gif} | Bin ...ax_callisto_64px.gif => stax_chain_820_64px.gif} | Bin .../{stax_meter_64px.gif => stax_chain_82_64px.gif} | Bin ..._id4good_64px.gif => stax_chain_846000_64px.gif} | Bin ...ax_wanchain_64px.gif => stax_chain_888_64px.gif} | Bin ...ax_tomochain_64px.gif => stax_chain_88_64px.gif} | Bin .../{stax_ubiq_64px.gif => stax_chain_8_64px.gif} | Bin .../{stax_poa_64px.gif => stax_chain_99_64px.gif} | Bin ...nanos_app_ethereum.gif => nanos_app_chain_1.gif} | Bin ..._conflux_espace.gif => nanos_app_chain_1030.gif} | Bin ..._app_thundercore.gif => nanos_app_chain_108.gif} | Bin ...os_app_moonbeam.gif => nanos_app_chain_1284.gif} | Bin ...s_app_moonriver.gif => nanos_app_chain_1285.gif} | Bin ...s_app_ether1.gif => nanos_app_chain_1313114.gif} | Bin ...anos_app_polygon.gif => nanos_app_chain_137.gif} | Bin .../{nanos_app_flare.gif => nanos_app_chain_14.gif} | Bin ..._app_flare_coston.gif => nanos_app_chain_16.gif} | Bin ...nos_app_atheios.gif => nanos_app_chain_1620.gif} | Bin ...{nanos_app_cube.gif => nanos_app_chain_1818.gif} | Bin ...anos_app_songbird.gif => nanos_app_chain_19.gif} | Bin ...os_app_ethergem.gif => nanos_app_chain_1987.gif} | Bin .../{nanos_app_bttc.gif => nanos_app_chain_199.gif} | Bin ...{nanos_app_expanse.gif => nanos_app_chain_2.gif} | Bin ...os_app_akroma.gif => nanos_app_chain_200625.gif} | Bin ...p_tecracoin.gif => nanos_app_chain_20531811.gif} | Bin ...ecratestnet.gif => nanos_app_chain_20531812.gif} | Bin ...{nanos_app_dexon.gif => nanos_app_chain_237.gif} | Bin ...s_app_kardiachain.gif => nanos_app_chain_24.gif} | Bin ...s_app_webchain.gif => nanos_app_chain_24484.gif} | Bin ..._artis_sigma1.gif => nanos_app_chain_246529.gif} | Bin ...pp_artis_tau1.gif => nanos_app_chain_246785.gif} | Bin ...{nanos_app_oasys.gif => nanos_app_chain_248.gif} | Bin .../{nanos_app_hpb.gif => nanos_app_chain_269.gif} | Bin ...nanos_app_reosc.gif => nanos_app_chain_2894.gif} | Bin .../{nanos_app_goerli.gif => nanos_app_chain_3.gif} | Bin icons/{nanos_app_rsk.gif => nanos_app_chain_30.gif} | Bin ...s_app_rsk_testnet.gif => nanos_app_chain_31.gif} | Bin ...pp_ethersocial.gif => nanos_app_chain_31102.gif} | Bin ..._app_pirl.gif => nanos_app_chain_3125659152.gif} | Bin ...nanos_app_shiden.gif => nanos_app_chain_336.gif} | Bin ..._app_tobalaba.gif => nanos_app_chain_401697.gif} | Bin ...{nanos_app_ropsten.gif => nanos_app_chain_5.gif} | Bin ...pp_apothemnetwork.gif => nanos_app_chain_50.gif} | Bin ...os_app_xdcnetwork.gif => nanos_app_chain_51.gif} | Bin icons/{nanos_app_bsc.gif => nanos_app_chain_56.gif} | Bin ...{nanos_app_astar.gif => nanos_app_chain_592.gif} | Bin ...nanos_app_gochain.gif => nanos_app_chain_60.gif} | Bin ..._ethereum_classic.gif => nanos_app_chain_61.gif} | Bin ...s_app_multivac.gif => nanos_app_chain_62621.gif} | Bin ...nanos_app_ellaism.gif => nanos_app_chain_64.gif} | Bin icons/{nanos_app_okc.gif => nanos_app_chain_66.gif} | Bin ...nanos_app_shyft.gif => nanos_app_chain_7341.gif} | Bin ...anos_app_volta.gif => nanos_app_chain_73799.gif} | Bin icons/{nanos_app_mix.gif => nanos_app_chain_76.gif} | Bin ...app_musicoin.gif => nanos_app_chain_7762959.gif} | Bin ...{nanos_app_wethio.gif => nanos_app_chain_78.gif} | Bin icons/{nanos_app_ubiq.gif => nanos_app_chain_8.gif} | Bin .../{nanos_app_meter.gif => nanos_app_chain_82.gif} | Bin ...nos_app_callisto.gif => nanos_app_chain_820.gif} | Bin ...s_app_id4good.gif => nanos_app_chain_846000.gif} | Bin ...nos_app_tomochain.gif => nanos_app_chain_88.gif} | Bin ...nos_app_wanchain.gif => nanos_app_chain_888.gif} | Bin icons/{nanos_app_poa.gif => nanos_app_chain_99.gif} | Bin ...nanox_app_ethereum.gif => nanox_app_chain_1.gif} | Bin ..._conflux_espace.gif => nanox_app_chain_1030.gif} | Bin ..._app_thundercore.gif => nanox_app_chain_108.gif} | Bin ...ox_app_moonbeam.gif => nanox_app_chain_1284.gif} | Bin ...x_app_moonriver.gif => nanox_app_chain_1285.gif} | Bin ...x_app_ether1.gif => nanox_app_chain_1313114.gif} | Bin ...anox_app_polygon.gif => nanox_app_chain_137.gif} | Bin .../{nanox_app_flare.gif => nanox_app_chain_14.gif} | Bin ..._app_flare_coston.gif => nanox_app_chain_16.gif} | Bin ...nox_app_atheios.gif => nanox_app_chain_1620.gif} | Bin ...{nanox_app_cube.gif => nanox_app_chain_1818.gif} | Bin ...anox_app_songbird.gif => nanox_app_chain_19.gif} | Bin ...ox_app_ethergem.gif => nanox_app_chain_1987.gif} | Bin .../{nanox_app_bttc.gif => nanox_app_chain_199.gif} | Bin ...{nanox_app_expanse.gif => nanox_app_chain_2.gif} | Bin ...ox_app_akroma.gif => nanox_app_chain_200625.gif} | Bin ...p_tecracoin.gif => nanox_app_chain_20531811.gif} | Bin ...ecratestnet.gif => nanox_app_chain_20531812.gif} | Bin ...{nanox_app_dexon.gif => nanox_app_chain_237.gif} | Bin ...x_app_kardiachain.gif => nanox_app_chain_24.gif} | Bin ...x_app_webchain.gif => nanox_app_chain_24484.gif} | Bin ..._artis_sigma1.gif => nanox_app_chain_246529.gif} | Bin ...pp_artis_tau1.gif => nanox_app_chain_246785.gif} | Bin ...{nanox_app_oasys.gif => nanox_app_chain_248.gif} | Bin .../{nanox_app_hpb.gif => nanox_app_chain_269.gif} | Bin ...nanox_app_reosc.gif => nanox_app_chain_2894.gif} | Bin .../{nanox_app_goerli.gif => nanox_app_chain_3.gif} | Bin icons/{nanox_app_rsk.gif => nanox_app_chain_30.gif} | Bin ...x_app_rsk_testnet.gif => nanox_app_chain_31.gif} | Bin ...pp_ethersocial.gif => nanox_app_chain_31102.gif} | Bin ..._app_pirl.gif => nanox_app_chain_3125659152.gif} | Bin ...nanox_app_shiden.gif => nanox_app_chain_336.gif} | Bin ...{nanox_app_ropsten.gif => nanox_app_chain_5.gif} | Bin ...pp_apothemnetwork.gif => nanox_app_chain_50.gif} | Bin ...ox_app_xdcnetwork.gif => nanox_app_chain_51.gif} | Bin icons/{nanox_app_bsc.gif => nanox_app_chain_56.gif} | Bin ...{nanox_app_astar.gif => nanox_app_chain_592.gif} | Bin ...nanox_app_gochain.gif => nanox_app_chain_60.gif} | Bin ..._ethereum_classic.gif => nanox_app_chain_61.gif} | Bin ...x_app_multivac.gif => nanox_app_chain_62621.gif} | Bin ...nanox_app_ellaism.gif => nanox_app_chain_64.gif} | Bin icons/{nanox_app_okc.gif => nanox_app_chain_66.gif} | Bin ...nanox_app_shyft.gif => nanox_app_chain_7341.gif} | Bin ...anox_app_volta.gif => nanox_app_chain_73799.gif} | Bin icons/{nanox_app_mix.gif => nanox_app_chain_76.gif} | Bin ...app_musicoin.gif => nanox_app_chain_7762959.gif} | Bin ...{nanox_app_wethio.gif => nanox_app_chain_78.gif} | Bin icons/{nanox_app_ubiq.gif => nanox_app_chain_8.gif} | Bin .../{nanox_app_meter.gif => nanox_app_chain_82.gif} | Bin ...nox_app_callisto.gif => nanox_app_chain_820.gif} | Bin ...x_app_id4good.gif => nanox_app_chain_846000.gif} | Bin ...nox_app_tomochain.gif => nanox_app_chain_88.gif} | Bin ...nox_app_wanchain.gif => nanox_app_chain_888.gif} | Bin icons/{nanox_app_poa.gif => nanox_app_chain_99.gif} | Bin .../{stax_app_ethereum.gif => stax_app_chain_1.gif} | Bin ...p_conflux_espace.gif => stax_app_chain_1030.gif} | Bin ...x_app_thundercore.gif => stax_app_chain_108.gif} | Bin ...tax_app_moonbeam.gif => stax_app_chain_1284.gif} | Bin ...ax_app_moonriver.gif => stax_app_chain_1285.gif} | Bin ...ax_app_ether1.gif => stax_app_chain_1313114.gif} | Bin ...{stax_app_polygon.gif => stax_app_chain_137.gif} | Bin icons/{stax_app_flare.gif => stax_app_chain_14.gif} | Bin ...x_app_flare_coston.gif => stax_app_chain_16.gif} | Bin ...stax_app_atheios.gif => stax_app_chain_1620.gif} | Bin .../{stax_app_cube.gif => stax_app_chain_1818.gif} | Bin ...{stax_app_songbird.gif => stax_app_chain_19.gif} | Bin ...tax_app_ethergem.gif => stax_app_chain_1987.gif} | Bin icons/{stax_app_bttc.gif => stax_app_chain_199.gif} | Bin .../{stax_app_expanse.gif => stax_app_chain_2.gif} | Bin ...tax_app_akroma.gif => stax_app_chain_200625.gif} | Bin ...pp_tecracoin.gif => stax_app_chain_20531811.gif} | Bin ...tecratestnet.gif => stax_app_chain_20531812.gif} | Bin .../{stax_app_dexon.gif => stax_app_chain_237.gif} | Bin ...ax_app_kardiachain.gif => stax_app_chain_24.gif} | Bin ...ax_app_webchain.gif => stax_app_chain_24484.gif} | Bin ...pp_energywebchain.gif => stax_app_chain_246.gif} | Bin ...p_artis_sigma1.gif => stax_app_chain_246529.gif} | Bin ...app_artis_tau1.gif => stax_app_chain_246785.gif} | Bin .../{stax_app_oasys.gif => stax_app_chain_248.gif} | Bin icons/{stax_app_hpb.gif => stax_app_chain_269.gif} | Bin .../{stax_app_reosc.gif => stax_app_chain_2894.gif} | Bin .../{stax_app_ropsten.gif => stax_app_chain_3.gif} | Bin icons/{stax_app_rsk.gif => stax_app_chain_30.gif} | Bin ...ax_app_rsk_testnet.gif => stax_app_chain_31.gif} | Bin ...app_ethersocial.gif => stax_app_chain_31102.gif} | Bin ...x_app_pirl.gif => stax_app_chain_3125659152.gif} | Bin .../{stax_app_shiden.gif => stax_app_chain_336.gif} | Bin ...x_app_tobalaba.gif => stax_app_chain_401697.gif} | Bin icons/{stax_app_goerli.gif => stax_app_chain_5.gif} | Bin ...tax_app_xdcnetwork.gif => stax_app_chain_50.gif} | Bin ...app_apothemnetwork.gif => stax_app_chain_51.gif} | Bin icons/{stax_app_bsc.gif => stax_app_chain_56.gif} | Bin .../{stax_app_astar.gif => stax_app_chain_592.gif} | Bin .../{stax_app_gochain.gif => stax_app_chain_60.gif} | Bin ...p_ethereum_classic.gif => stax_app_chain_61.gif} | Bin ...ax_app_multivac.gif => stax_app_chain_62621.gif} | Bin .../{stax_app_ellaism.gif => stax_app_chain_64.gif} | Bin icons/{stax_app_okc.gif => stax_app_chain_66.gif} | Bin .../{stax_app_shyft.gif => stax_app_chain_7341.gif} | Bin ...{stax_app_volta.gif => stax_app_chain_73799.gif} | Bin icons/{stax_app_mix.gif => stax_app_chain_76.gif} | Bin ..._app_musicoin.gif => stax_app_chain_7762959.gif} | Bin .../{stax_app_wethio.gif => stax_app_chain_78.gif} | Bin icons/{stax_app_ubiq.gif => stax_app_chain_8.gif} | Bin icons/{stax_app_meter.gif => stax_app_chain_82.gif} | Bin ...stax_app_callisto.gif => stax_app_chain_820.gif} | Bin ...ax_app_id4good.gif => stax_app_chain_846000.gif} | Bin ...stax_app_tomochain.gif => stax_app_chain_88.gif} | Bin ...stax_app_wanchain.gif => stax_app_chain_888.gif} | Bin icons/{stax_app_poa.gif => stax_app_chain_99.gif} | Bin 222 files changed, 6 insertions(+), 6 deletions(-) rename glyphs/{stax_conflux_espace_64px.gif => stax_chain_1030_64px.gif} (100%) rename glyphs/{stax_thundercore_64px.gif => stax_chain_108_64px.gif} (100%) rename glyphs/{stax_moonbeam_64px.gif => stax_chain_1284_64px.gif} (100%) rename glyphs/{stax_moonriver_64px.gif => stax_chain_1285_64px.gif} (100%) rename glyphs/{stax_ether1_64px.gif => stax_chain_1313114_64px.gif} (100%) rename glyphs/{stax_polygon_64px.gif => stax_chain_137_64px.gif} (100%) rename glyphs/{stax_flare_64px.gif => stax_chain_14_64px.gif} (100%) rename glyphs/{stax_atheios_64px.gif => stax_chain_1620_64px.gif} (100%) rename glyphs/{stax_flare_coston_64px.gif => stax_chain_16_64px.gif} (100%) rename glyphs/{stax_cube_64px.gif => stax_chain_1818_64px.gif} (100%) rename glyphs/{stax_ethergem_64px.gif => stax_chain_1987_64px.gif} (100%) rename glyphs/{stax_bttc_64px.gif => stax_chain_199_64px.gif} (100%) rename glyphs/{stax_songbird_64px.gif => stax_chain_19_64px.gif} (100%) rename glyphs/{stax_ethereum_64px.gif => stax_chain_1_64px.gif} (100%) rename glyphs/{stax_akroma_64px.gif => stax_chain_200625_64px.gif} (100%) rename glyphs/{stax_tecracoin_64px.gif => stax_chain_20531811_64px.gif} (100%) rename glyphs/{stax_tecratestnet_64px.gif => stax_chain_20531812_64px.gif} (100%) rename glyphs/{stax_dexon_64px.gif => stax_chain_237_64px.gif} (100%) rename glyphs/{stax_webchain_64px.gif => stax_chain_24484_64px.gif} (100%) rename glyphs/{stax_artis_sigma1_64px.gif => stax_chain_246529_64px.gif} (100%) rename glyphs/{stax_artis_tau1_64px.gif => stax_chain_246785_64px.gif} (100%) rename glyphs/{stax_energywebchain_64px.gif => stax_chain_246_64px.gif} (100%) rename glyphs/{stax_oasys_64px.gif => stax_chain_248_64px.gif} (100%) rename glyphs/{stax_kardiachain_64px.gif => stax_chain_24_64px.gif} (100%) rename glyphs/{stax_hpb_64px.gif => stax_chain_269_64px.gif} (100%) rename glyphs/{stax_reosc_64px.gif => stax_chain_2894_64px.gif} (100%) rename glyphs/{stax_expanse_64px.gif => stax_chain_2_64px.gif} (100%) rename glyphs/{stax_rsk_64px.gif => stax_chain_30_64px.gif} (100%) rename glyphs/{stax_ethersocial_64px.gif => stax_chain_31102_64px.gif} (100%) rename glyphs/{stax_pirl_64px.gif => stax_chain_3125659152_64px.gif} (100%) rename glyphs/{stax_rsk_testnet_64px.gif => stax_chain_31_64px.gif} (100%) rename glyphs/{stax_shiden_64px.gif => stax_chain_336_64px.gif} (100%) rename glyphs/{stax_ropsten_64px.gif => stax_chain_3_64px.gif} (100%) rename glyphs/{stax_tobalaba_64px.gif => stax_chain_401697_64px.gif} (100%) rename glyphs/{stax_xdcnetwork_64px.gif => stax_chain_50_64px.gif} (100%) rename glyphs/{stax_apothemnetwork_64px.gif => stax_chain_51_64px.gif} (100%) rename glyphs/{stax_bsc_64px.gif => stax_chain_56_64px.gif} (100%) rename glyphs/{stax_astar_64px.gif => stax_chain_592_64px.gif} (100%) rename glyphs/{stax_goerli_64px.gif => stax_chain_5_64px.gif} (100%) rename glyphs/{stax_gochain_64px.gif => stax_chain_60_64px.gif} (100%) rename glyphs/{stax_ethereum_classic_64px.gif => stax_chain_61_64px.gif} (100%) rename glyphs/{stax_multivac_64px.gif => stax_chain_62621_64px.gif} (100%) rename glyphs/{stax_ellaism_64px.gif => stax_chain_64_64px.gif} (100%) rename glyphs/{stax_okc_64px.gif => stax_chain_66_64px.gif} (100%) rename glyphs/{stax_shyft_64px.gif => stax_chain_7341_64px.gif} (100%) rename glyphs/{stax_volta_64px.gif => stax_chain_73799_64px.gif} (100%) rename glyphs/{stax_mix_64px.gif => stax_chain_76_64px.gif} (100%) rename glyphs/{stax_musicoin_64px.gif => stax_chain_7762959_64px.gif} (100%) rename glyphs/{stax_wethio_64px.gif => stax_chain_78_64px.gif} (100%) rename glyphs/{stax_callisto_64px.gif => stax_chain_820_64px.gif} (100%) rename glyphs/{stax_meter_64px.gif => stax_chain_82_64px.gif} (100%) rename glyphs/{stax_id4good_64px.gif => stax_chain_846000_64px.gif} (100%) rename glyphs/{stax_wanchain_64px.gif => stax_chain_888_64px.gif} (100%) rename glyphs/{stax_tomochain_64px.gif => stax_chain_88_64px.gif} (100%) rename glyphs/{stax_ubiq_64px.gif => stax_chain_8_64px.gif} (100%) rename glyphs/{stax_poa_64px.gif => stax_chain_99_64px.gif} (100%) rename icons/{nanos_app_ethereum.gif => nanos_app_chain_1.gif} (100%) rename icons/{nanos_app_conflux_espace.gif => nanos_app_chain_1030.gif} (100%) rename icons/{nanos_app_thundercore.gif => nanos_app_chain_108.gif} (100%) rename icons/{nanos_app_moonbeam.gif => nanos_app_chain_1284.gif} (100%) rename icons/{nanos_app_moonriver.gif => nanos_app_chain_1285.gif} (100%) rename icons/{nanos_app_ether1.gif => nanos_app_chain_1313114.gif} (100%) rename icons/{nanos_app_polygon.gif => nanos_app_chain_137.gif} (100%) rename icons/{nanos_app_flare.gif => nanos_app_chain_14.gif} (100%) rename icons/{nanos_app_flare_coston.gif => nanos_app_chain_16.gif} (100%) rename icons/{nanos_app_atheios.gif => nanos_app_chain_1620.gif} (100%) rename icons/{nanos_app_cube.gif => nanos_app_chain_1818.gif} (100%) rename icons/{nanos_app_songbird.gif => nanos_app_chain_19.gif} (100%) rename icons/{nanos_app_ethergem.gif => nanos_app_chain_1987.gif} (100%) rename icons/{nanos_app_bttc.gif => nanos_app_chain_199.gif} (100%) rename icons/{nanos_app_expanse.gif => nanos_app_chain_2.gif} (100%) rename icons/{nanos_app_akroma.gif => nanos_app_chain_200625.gif} (100%) rename icons/{nanos_app_tecracoin.gif => nanos_app_chain_20531811.gif} (100%) rename icons/{nanos_app_tecratestnet.gif => nanos_app_chain_20531812.gif} (100%) rename icons/{nanos_app_dexon.gif => nanos_app_chain_237.gif} (100%) rename icons/{nanos_app_kardiachain.gif => nanos_app_chain_24.gif} (100%) rename icons/{nanos_app_webchain.gif => nanos_app_chain_24484.gif} (100%) rename icons/{nanos_app_artis_sigma1.gif => nanos_app_chain_246529.gif} (100%) rename icons/{nanos_app_artis_tau1.gif => nanos_app_chain_246785.gif} (100%) rename icons/{nanos_app_oasys.gif => nanos_app_chain_248.gif} (100%) rename icons/{nanos_app_hpb.gif => nanos_app_chain_269.gif} (100%) rename icons/{nanos_app_reosc.gif => nanos_app_chain_2894.gif} (100%) rename icons/{nanos_app_goerli.gif => nanos_app_chain_3.gif} (100%) rename icons/{nanos_app_rsk.gif => nanos_app_chain_30.gif} (100%) rename icons/{nanos_app_rsk_testnet.gif => nanos_app_chain_31.gif} (100%) rename icons/{nanos_app_ethersocial.gif => nanos_app_chain_31102.gif} (100%) rename icons/{nanos_app_pirl.gif => nanos_app_chain_3125659152.gif} (100%) rename icons/{nanos_app_shiden.gif => nanos_app_chain_336.gif} (100%) rename icons/{nanos_app_tobalaba.gif => nanos_app_chain_401697.gif} (100%) rename icons/{nanos_app_ropsten.gif => nanos_app_chain_5.gif} (100%) rename icons/{nanos_app_apothemnetwork.gif => nanos_app_chain_50.gif} (100%) rename icons/{nanos_app_xdcnetwork.gif => nanos_app_chain_51.gif} (100%) rename icons/{nanos_app_bsc.gif => nanos_app_chain_56.gif} (100%) rename icons/{nanos_app_astar.gif => nanos_app_chain_592.gif} (100%) rename icons/{nanos_app_gochain.gif => nanos_app_chain_60.gif} (100%) rename icons/{nanos_app_ethereum_classic.gif => nanos_app_chain_61.gif} (100%) rename icons/{nanos_app_multivac.gif => nanos_app_chain_62621.gif} (100%) rename icons/{nanos_app_ellaism.gif => nanos_app_chain_64.gif} (100%) rename icons/{nanos_app_okc.gif => nanos_app_chain_66.gif} (100%) rename icons/{nanos_app_shyft.gif => nanos_app_chain_7341.gif} (100%) rename icons/{nanos_app_volta.gif => nanos_app_chain_73799.gif} (100%) rename icons/{nanos_app_mix.gif => nanos_app_chain_76.gif} (100%) rename icons/{nanos_app_musicoin.gif => nanos_app_chain_7762959.gif} (100%) rename icons/{nanos_app_wethio.gif => nanos_app_chain_78.gif} (100%) rename icons/{nanos_app_ubiq.gif => nanos_app_chain_8.gif} (100%) rename icons/{nanos_app_meter.gif => nanos_app_chain_82.gif} (100%) rename icons/{nanos_app_callisto.gif => nanos_app_chain_820.gif} (100%) rename icons/{nanos_app_id4good.gif => nanos_app_chain_846000.gif} (100%) rename icons/{nanos_app_tomochain.gif => nanos_app_chain_88.gif} (100%) rename icons/{nanos_app_wanchain.gif => nanos_app_chain_888.gif} (100%) rename icons/{nanos_app_poa.gif => nanos_app_chain_99.gif} (100%) rename icons/{nanox_app_ethereum.gif => nanox_app_chain_1.gif} (100%) rename icons/{nanox_app_conflux_espace.gif => nanox_app_chain_1030.gif} (100%) rename icons/{nanox_app_thundercore.gif => nanox_app_chain_108.gif} (100%) rename icons/{nanox_app_moonbeam.gif => nanox_app_chain_1284.gif} (100%) rename icons/{nanox_app_moonriver.gif => nanox_app_chain_1285.gif} (100%) rename icons/{nanox_app_ether1.gif => nanox_app_chain_1313114.gif} (100%) rename icons/{nanox_app_polygon.gif => nanox_app_chain_137.gif} (100%) rename icons/{nanox_app_flare.gif => nanox_app_chain_14.gif} (100%) rename icons/{nanox_app_flare_coston.gif => nanox_app_chain_16.gif} (100%) rename icons/{nanox_app_atheios.gif => nanox_app_chain_1620.gif} (100%) rename icons/{nanox_app_cube.gif => nanox_app_chain_1818.gif} (100%) rename icons/{nanox_app_songbird.gif => nanox_app_chain_19.gif} (100%) rename icons/{nanox_app_ethergem.gif => nanox_app_chain_1987.gif} (100%) rename icons/{nanox_app_bttc.gif => nanox_app_chain_199.gif} (100%) rename icons/{nanox_app_expanse.gif => nanox_app_chain_2.gif} (100%) rename icons/{nanox_app_akroma.gif => nanox_app_chain_200625.gif} (100%) rename icons/{nanox_app_tecracoin.gif => nanox_app_chain_20531811.gif} (100%) rename icons/{nanox_app_tecratestnet.gif => nanox_app_chain_20531812.gif} (100%) rename icons/{nanox_app_dexon.gif => nanox_app_chain_237.gif} (100%) rename icons/{nanox_app_kardiachain.gif => nanox_app_chain_24.gif} (100%) rename icons/{nanox_app_webchain.gif => nanox_app_chain_24484.gif} (100%) rename icons/{nanox_app_artis_sigma1.gif => nanox_app_chain_246529.gif} (100%) rename icons/{nanox_app_artis_tau1.gif => nanox_app_chain_246785.gif} (100%) rename icons/{nanox_app_oasys.gif => nanox_app_chain_248.gif} (100%) rename icons/{nanox_app_hpb.gif => nanox_app_chain_269.gif} (100%) rename icons/{nanox_app_reosc.gif => nanox_app_chain_2894.gif} (100%) rename icons/{nanox_app_goerli.gif => nanox_app_chain_3.gif} (100%) rename icons/{nanox_app_rsk.gif => nanox_app_chain_30.gif} (100%) rename icons/{nanox_app_rsk_testnet.gif => nanox_app_chain_31.gif} (100%) rename icons/{nanox_app_ethersocial.gif => nanox_app_chain_31102.gif} (100%) rename icons/{nanox_app_pirl.gif => nanox_app_chain_3125659152.gif} (100%) rename icons/{nanox_app_shiden.gif => nanox_app_chain_336.gif} (100%) rename icons/{nanox_app_ropsten.gif => nanox_app_chain_5.gif} (100%) rename icons/{nanox_app_apothemnetwork.gif => nanox_app_chain_50.gif} (100%) rename icons/{nanox_app_xdcnetwork.gif => nanox_app_chain_51.gif} (100%) rename icons/{nanox_app_bsc.gif => nanox_app_chain_56.gif} (100%) rename icons/{nanox_app_astar.gif => nanox_app_chain_592.gif} (100%) rename icons/{nanox_app_gochain.gif => nanox_app_chain_60.gif} (100%) rename icons/{nanox_app_ethereum_classic.gif => nanox_app_chain_61.gif} (100%) rename icons/{nanox_app_multivac.gif => nanox_app_chain_62621.gif} (100%) rename icons/{nanox_app_ellaism.gif => nanox_app_chain_64.gif} (100%) rename icons/{nanox_app_okc.gif => nanox_app_chain_66.gif} (100%) rename icons/{nanox_app_shyft.gif => nanox_app_chain_7341.gif} (100%) rename icons/{nanox_app_volta.gif => nanox_app_chain_73799.gif} (100%) rename icons/{nanox_app_mix.gif => nanox_app_chain_76.gif} (100%) rename icons/{nanox_app_musicoin.gif => nanox_app_chain_7762959.gif} (100%) rename icons/{nanox_app_wethio.gif => nanox_app_chain_78.gif} (100%) rename icons/{nanox_app_ubiq.gif => nanox_app_chain_8.gif} (100%) rename icons/{nanox_app_meter.gif => nanox_app_chain_82.gif} (100%) rename icons/{nanox_app_callisto.gif => nanox_app_chain_820.gif} (100%) rename icons/{nanox_app_id4good.gif => nanox_app_chain_846000.gif} (100%) rename icons/{nanox_app_tomochain.gif => nanox_app_chain_88.gif} (100%) rename icons/{nanox_app_wanchain.gif => nanox_app_chain_888.gif} (100%) rename icons/{nanox_app_poa.gif => nanox_app_chain_99.gif} (100%) rename icons/{stax_app_ethereum.gif => stax_app_chain_1.gif} (100%) rename icons/{stax_app_conflux_espace.gif => stax_app_chain_1030.gif} (100%) rename icons/{stax_app_thundercore.gif => stax_app_chain_108.gif} (100%) rename icons/{stax_app_moonbeam.gif => stax_app_chain_1284.gif} (100%) rename icons/{stax_app_moonriver.gif => stax_app_chain_1285.gif} (100%) rename icons/{stax_app_ether1.gif => stax_app_chain_1313114.gif} (100%) rename icons/{stax_app_polygon.gif => stax_app_chain_137.gif} (100%) rename icons/{stax_app_flare.gif => stax_app_chain_14.gif} (100%) rename icons/{stax_app_flare_coston.gif => stax_app_chain_16.gif} (100%) rename icons/{stax_app_atheios.gif => stax_app_chain_1620.gif} (100%) rename icons/{stax_app_cube.gif => stax_app_chain_1818.gif} (100%) rename icons/{stax_app_songbird.gif => stax_app_chain_19.gif} (100%) rename icons/{stax_app_ethergem.gif => stax_app_chain_1987.gif} (100%) rename icons/{stax_app_bttc.gif => stax_app_chain_199.gif} (100%) rename icons/{stax_app_expanse.gif => stax_app_chain_2.gif} (100%) rename icons/{stax_app_akroma.gif => stax_app_chain_200625.gif} (100%) rename icons/{stax_app_tecracoin.gif => stax_app_chain_20531811.gif} (100%) rename icons/{stax_app_tecratestnet.gif => stax_app_chain_20531812.gif} (100%) rename icons/{stax_app_dexon.gif => stax_app_chain_237.gif} (100%) rename icons/{stax_app_kardiachain.gif => stax_app_chain_24.gif} (100%) rename icons/{stax_app_webchain.gif => stax_app_chain_24484.gif} (100%) rename icons/{stax_app_energywebchain.gif => stax_app_chain_246.gif} (100%) rename icons/{stax_app_artis_sigma1.gif => stax_app_chain_246529.gif} (100%) rename icons/{stax_app_artis_tau1.gif => stax_app_chain_246785.gif} (100%) rename icons/{stax_app_oasys.gif => stax_app_chain_248.gif} (100%) rename icons/{stax_app_hpb.gif => stax_app_chain_269.gif} (100%) rename icons/{stax_app_reosc.gif => stax_app_chain_2894.gif} (100%) rename icons/{stax_app_ropsten.gif => stax_app_chain_3.gif} (100%) rename icons/{stax_app_rsk.gif => stax_app_chain_30.gif} (100%) rename icons/{stax_app_rsk_testnet.gif => stax_app_chain_31.gif} (100%) rename icons/{stax_app_ethersocial.gif => stax_app_chain_31102.gif} (100%) rename icons/{stax_app_pirl.gif => stax_app_chain_3125659152.gif} (100%) rename icons/{stax_app_shiden.gif => stax_app_chain_336.gif} (100%) rename icons/{stax_app_tobalaba.gif => stax_app_chain_401697.gif} (100%) rename icons/{stax_app_goerli.gif => stax_app_chain_5.gif} (100%) rename icons/{stax_app_xdcnetwork.gif => stax_app_chain_50.gif} (100%) rename icons/{stax_app_apothemnetwork.gif => stax_app_chain_51.gif} (100%) rename icons/{stax_app_bsc.gif => stax_app_chain_56.gif} (100%) rename icons/{stax_app_astar.gif => stax_app_chain_592.gif} (100%) rename icons/{stax_app_gochain.gif => stax_app_chain_60.gif} (100%) rename icons/{stax_app_ethereum_classic.gif => stax_app_chain_61.gif} (100%) rename icons/{stax_app_multivac.gif => stax_app_chain_62621.gif} (100%) rename icons/{stax_app_ellaism.gif => stax_app_chain_64.gif} (100%) rename icons/{stax_app_okc.gif => stax_app_chain_66.gif} (100%) rename icons/{stax_app_shyft.gif => stax_app_chain_7341.gif} (100%) rename icons/{stax_app_volta.gif => stax_app_chain_73799.gif} (100%) rename icons/{stax_app_mix.gif => stax_app_chain_76.gif} (100%) rename icons/{stax_app_musicoin.gif => stax_app_chain_7762959.gif} (100%) rename icons/{stax_app_wethio.gif => stax_app_chain_78.gif} (100%) rename icons/{stax_app_ubiq.gif => stax_app_chain_8.gif} (100%) rename icons/{stax_app_meter.gif => stax_app_chain_82.gif} (100%) rename icons/{stax_app_callisto.gif => stax_app_chain_820.gif} (100%) rename icons/{stax_app_id4good.gif => stax_app_chain_846000.gif} (100%) rename icons/{stax_app_tomochain.gif => stax_app_chain_88.gif} (100%) rename icons/{stax_app_wanchain.gif => stax_app_chain_888.gif} (100%) rename icons/{stax_app_poa.gif => stax_app_chain_99.gif} (100%) diff --git a/Makefile b/Makefile index 22cda9ecb..b7fc635ac 100644 --- a/Makefile +++ b/Makefile @@ -65,15 +65,15 @@ DEFINES += $(DEFINES_LIB) #prepare hsm generation ifeq ($(TARGET_NAME),TARGET_NANOS) -ICONNAME=icons/nanos_app_$(CHAIN).gif +ICONNAME=icons/nanos_app_$(CHAIN_ID).gif else ifeq ($(TARGET_NAME),TARGET_STAX) -ICONNAME=icons/stax_app_$(CHAIN).gif -DEFINES += ICONGLYPH=C_stax_$(CHAIN)_64px -DEFINES += ICONBITMAP=C_stax_$(CHAIN)_64px_bitmap -DEFINES += ICONGLYPH_SMALL=C_stax_$(CHAIN) +ICONNAME=icons/stax_app_$(CHAIN_ID).gif +DEFINES += ICONGLYPH=C_stax_$(CHAIN_ID)_64px +DEFINES += ICONBITMAP=C_stax_$(CHAIN_ID)_64px_bitmap +DEFINES += ICONGLYPH_SMALL=C_stax_$(CHAIN_ID) GLYPH_FILES += $(ICONNAME) else -ICONNAME=icons/nanox_app_$(CHAIN).gif +ICONNAME=icons/nanox_app_$(CHAIN_ID).gif endif ################ diff --git a/glyphs/stax_conflux_espace_64px.gif b/glyphs/stax_chain_1030_64px.gif similarity index 100% rename from glyphs/stax_conflux_espace_64px.gif rename to glyphs/stax_chain_1030_64px.gif diff --git a/glyphs/stax_thundercore_64px.gif b/glyphs/stax_chain_108_64px.gif similarity index 100% rename from glyphs/stax_thundercore_64px.gif rename to glyphs/stax_chain_108_64px.gif diff --git a/glyphs/stax_moonbeam_64px.gif b/glyphs/stax_chain_1284_64px.gif similarity index 100% rename from glyphs/stax_moonbeam_64px.gif rename to glyphs/stax_chain_1284_64px.gif diff --git a/glyphs/stax_moonriver_64px.gif b/glyphs/stax_chain_1285_64px.gif similarity index 100% rename from glyphs/stax_moonriver_64px.gif rename to glyphs/stax_chain_1285_64px.gif diff --git a/glyphs/stax_ether1_64px.gif b/glyphs/stax_chain_1313114_64px.gif similarity index 100% rename from glyphs/stax_ether1_64px.gif rename to glyphs/stax_chain_1313114_64px.gif diff --git a/glyphs/stax_polygon_64px.gif b/glyphs/stax_chain_137_64px.gif similarity index 100% rename from glyphs/stax_polygon_64px.gif rename to glyphs/stax_chain_137_64px.gif diff --git a/glyphs/stax_flare_64px.gif b/glyphs/stax_chain_14_64px.gif similarity index 100% rename from glyphs/stax_flare_64px.gif rename to glyphs/stax_chain_14_64px.gif diff --git a/glyphs/stax_atheios_64px.gif b/glyphs/stax_chain_1620_64px.gif similarity index 100% rename from glyphs/stax_atheios_64px.gif rename to glyphs/stax_chain_1620_64px.gif diff --git a/glyphs/stax_flare_coston_64px.gif b/glyphs/stax_chain_16_64px.gif similarity index 100% rename from glyphs/stax_flare_coston_64px.gif rename to glyphs/stax_chain_16_64px.gif diff --git a/glyphs/stax_cube_64px.gif b/glyphs/stax_chain_1818_64px.gif similarity index 100% rename from glyphs/stax_cube_64px.gif rename to glyphs/stax_chain_1818_64px.gif diff --git a/glyphs/stax_ethergem_64px.gif b/glyphs/stax_chain_1987_64px.gif similarity index 100% rename from glyphs/stax_ethergem_64px.gif rename to glyphs/stax_chain_1987_64px.gif diff --git a/glyphs/stax_bttc_64px.gif b/glyphs/stax_chain_199_64px.gif similarity index 100% rename from glyphs/stax_bttc_64px.gif rename to glyphs/stax_chain_199_64px.gif diff --git a/glyphs/stax_songbird_64px.gif b/glyphs/stax_chain_19_64px.gif similarity index 100% rename from glyphs/stax_songbird_64px.gif rename to glyphs/stax_chain_19_64px.gif diff --git a/glyphs/stax_ethereum_64px.gif b/glyphs/stax_chain_1_64px.gif similarity index 100% rename from glyphs/stax_ethereum_64px.gif rename to glyphs/stax_chain_1_64px.gif diff --git a/glyphs/stax_akroma_64px.gif b/glyphs/stax_chain_200625_64px.gif similarity index 100% rename from glyphs/stax_akroma_64px.gif rename to glyphs/stax_chain_200625_64px.gif diff --git a/glyphs/stax_tecracoin_64px.gif b/glyphs/stax_chain_20531811_64px.gif similarity index 100% rename from glyphs/stax_tecracoin_64px.gif rename to glyphs/stax_chain_20531811_64px.gif diff --git a/glyphs/stax_tecratestnet_64px.gif b/glyphs/stax_chain_20531812_64px.gif similarity index 100% rename from glyphs/stax_tecratestnet_64px.gif rename to glyphs/stax_chain_20531812_64px.gif diff --git a/glyphs/stax_dexon_64px.gif b/glyphs/stax_chain_237_64px.gif similarity index 100% rename from glyphs/stax_dexon_64px.gif rename to glyphs/stax_chain_237_64px.gif diff --git a/glyphs/stax_webchain_64px.gif b/glyphs/stax_chain_24484_64px.gif similarity index 100% rename from glyphs/stax_webchain_64px.gif rename to glyphs/stax_chain_24484_64px.gif diff --git a/glyphs/stax_artis_sigma1_64px.gif b/glyphs/stax_chain_246529_64px.gif similarity index 100% rename from glyphs/stax_artis_sigma1_64px.gif rename to glyphs/stax_chain_246529_64px.gif diff --git a/glyphs/stax_artis_tau1_64px.gif b/glyphs/stax_chain_246785_64px.gif similarity index 100% rename from glyphs/stax_artis_tau1_64px.gif rename to glyphs/stax_chain_246785_64px.gif diff --git a/glyphs/stax_energywebchain_64px.gif b/glyphs/stax_chain_246_64px.gif similarity index 100% rename from glyphs/stax_energywebchain_64px.gif rename to glyphs/stax_chain_246_64px.gif diff --git a/glyphs/stax_oasys_64px.gif b/glyphs/stax_chain_248_64px.gif similarity index 100% rename from glyphs/stax_oasys_64px.gif rename to glyphs/stax_chain_248_64px.gif diff --git a/glyphs/stax_kardiachain_64px.gif b/glyphs/stax_chain_24_64px.gif similarity index 100% rename from glyphs/stax_kardiachain_64px.gif rename to glyphs/stax_chain_24_64px.gif diff --git a/glyphs/stax_hpb_64px.gif b/glyphs/stax_chain_269_64px.gif similarity index 100% rename from glyphs/stax_hpb_64px.gif rename to glyphs/stax_chain_269_64px.gif diff --git a/glyphs/stax_reosc_64px.gif b/glyphs/stax_chain_2894_64px.gif similarity index 100% rename from glyphs/stax_reosc_64px.gif rename to glyphs/stax_chain_2894_64px.gif diff --git a/glyphs/stax_expanse_64px.gif b/glyphs/stax_chain_2_64px.gif similarity index 100% rename from glyphs/stax_expanse_64px.gif rename to glyphs/stax_chain_2_64px.gif diff --git a/glyphs/stax_rsk_64px.gif b/glyphs/stax_chain_30_64px.gif similarity index 100% rename from glyphs/stax_rsk_64px.gif rename to glyphs/stax_chain_30_64px.gif diff --git a/glyphs/stax_ethersocial_64px.gif b/glyphs/stax_chain_31102_64px.gif similarity index 100% rename from glyphs/stax_ethersocial_64px.gif rename to glyphs/stax_chain_31102_64px.gif diff --git a/glyphs/stax_pirl_64px.gif b/glyphs/stax_chain_3125659152_64px.gif similarity index 100% rename from glyphs/stax_pirl_64px.gif rename to glyphs/stax_chain_3125659152_64px.gif diff --git a/glyphs/stax_rsk_testnet_64px.gif b/glyphs/stax_chain_31_64px.gif similarity index 100% rename from glyphs/stax_rsk_testnet_64px.gif rename to glyphs/stax_chain_31_64px.gif diff --git a/glyphs/stax_shiden_64px.gif b/glyphs/stax_chain_336_64px.gif similarity index 100% rename from glyphs/stax_shiden_64px.gif rename to glyphs/stax_chain_336_64px.gif diff --git a/glyphs/stax_ropsten_64px.gif b/glyphs/stax_chain_3_64px.gif similarity index 100% rename from glyphs/stax_ropsten_64px.gif rename to glyphs/stax_chain_3_64px.gif diff --git a/glyphs/stax_tobalaba_64px.gif b/glyphs/stax_chain_401697_64px.gif similarity index 100% rename from glyphs/stax_tobalaba_64px.gif rename to glyphs/stax_chain_401697_64px.gif diff --git a/glyphs/stax_xdcnetwork_64px.gif b/glyphs/stax_chain_50_64px.gif similarity index 100% rename from glyphs/stax_xdcnetwork_64px.gif rename to glyphs/stax_chain_50_64px.gif diff --git a/glyphs/stax_apothemnetwork_64px.gif b/glyphs/stax_chain_51_64px.gif similarity index 100% rename from glyphs/stax_apothemnetwork_64px.gif rename to glyphs/stax_chain_51_64px.gif diff --git a/glyphs/stax_bsc_64px.gif b/glyphs/stax_chain_56_64px.gif similarity index 100% rename from glyphs/stax_bsc_64px.gif rename to glyphs/stax_chain_56_64px.gif diff --git a/glyphs/stax_astar_64px.gif b/glyphs/stax_chain_592_64px.gif similarity index 100% rename from glyphs/stax_astar_64px.gif rename to glyphs/stax_chain_592_64px.gif diff --git a/glyphs/stax_goerli_64px.gif b/glyphs/stax_chain_5_64px.gif similarity index 100% rename from glyphs/stax_goerli_64px.gif rename to glyphs/stax_chain_5_64px.gif diff --git a/glyphs/stax_gochain_64px.gif b/glyphs/stax_chain_60_64px.gif similarity index 100% rename from glyphs/stax_gochain_64px.gif rename to glyphs/stax_chain_60_64px.gif diff --git a/glyphs/stax_ethereum_classic_64px.gif b/glyphs/stax_chain_61_64px.gif similarity index 100% rename from glyphs/stax_ethereum_classic_64px.gif rename to glyphs/stax_chain_61_64px.gif diff --git a/glyphs/stax_multivac_64px.gif b/glyphs/stax_chain_62621_64px.gif similarity index 100% rename from glyphs/stax_multivac_64px.gif rename to glyphs/stax_chain_62621_64px.gif diff --git a/glyphs/stax_ellaism_64px.gif b/glyphs/stax_chain_64_64px.gif similarity index 100% rename from glyphs/stax_ellaism_64px.gif rename to glyphs/stax_chain_64_64px.gif diff --git a/glyphs/stax_okc_64px.gif b/glyphs/stax_chain_66_64px.gif similarity index 100% rename from glyphs/stax_okc_64px.gif rename to glyphs/stax_chain_66_64px.gif diff --git a/glyphs/stax_shyft_64px.gif b/glyphs/stax_chain_7341_64px.gif similarity index 100% rename from glyphs/stax_shyft_64px.gif rename to glyphs/stax_chain_7341_64px.gif diff --git a/glyphs/stax_volta_64px.gif b/glyphs/stax_chain_73799_64px.gif similarity index 100% rename from glyphs/stax_volta_64px.gif rename to glyphs/stax_chain_73799_64px.gif diff --git a/glyphs/stax_mix_64px.gif b/glyphs/stax_chain_76_64px.gif similarity index 100% rename from glyphs/stax_mix_64px.gif rename to glyphs/stax_chain_76_64px.gif diff --git a/glyphs/stax_musicoin_64px.gif b/glyphs/stax_chain_7762959_64px.gif similarity index 100% rename from glyphs/stax_musicoin_64px.gif rename to glyphs/stax_chain_7762959_64px.gif diff --git a/glyphs/stax_wethio_64px.gif b/glyphs/stax_chain_78_64px.gif similarity index 100% rename from glyphs/stax_wethio_64px.gif rename to glyphs/stax_chain_78_64px.gif diff --git a/glyphs/stax_callisto_64px.gif b/glyphs/stax_chain_820_64px.gif similarity index 100% rename from glyphs/stax_callisto_64px.gif rename to glyphs/stax_chain_820_64px.gif diff --git a/glyphs/stax_meter_64px.gif b/glyphs/stax_chain_82_64px.gif similarity index 100% rename from glyphs/stax_meter_64px.gif rename to glyphs/stax_chain_82_64px.gif diff --git a/glyphs/stax_id4good_64px.gif b/glyphs/stax_chain_846000_64px.gif similarity index 100% rename from glyphs/stax_id4good_64px.gif rename to glyphs/stax_chain_846000_64px.gif diff --git a/glyphs/stax_wanchain_64px.gif b/glyphs/stax_chain_888_64px.gif similarity index 100% rename from glyphs/stax_wanchain_64px.gif rename to glyphs/stax_chain_888_64px.gif diff --git a/glyphs/stax_tomochain_64px.gif b/glyphs/stax_chain_88_64px.gif similarity index 100% rename from glyphs/stax_tomochain_64px.gif rename to glyphs/stax_chain_88_64px.gif diff --git a/glyphs/stax_ubiq_64px.gif b/glyphs/stax_chain_8_64px.gif similarity index 100% rename from glyphs/stax_ubiq_64px.gif rename to glyphs/stax_chain_8_64px.gif diff --git a/glyphs/stax_poa_64px.gif b/glyphs/stax_chain_99_64px.gif similarity index 100% rename from glyphs/stax_poa_64px.gif rename to glyphs/stax_chain_99_64px.gif diff --git a/icons/nanos_app_ethereum.gif b/icons/nanos_app_chain_1.gif similarity index 100% rename from icons/nanos_app_ethereum.gif rename to icons/nanos_app_chain_1.gif diff --git a/icons/nanos_app_conflux_espace.gif b/icons/nanos_app_chain_1030.gif similarity index 100% rename from icons/nanos_app_conflux_espace.gif rename to icons/nanos_app_chain_1030.gif diff --git a/icons/nanos_app_thundercore.gif b/icons/nanos_app_chain_108.gif similarity index 100% rename from icons/nanos_app_thundercore.gif rename to icons/nanos_app_chain_108.gif diff --git a/icons/nanos_app_moonbeam.gif b/icons/nanos_app_chain_1284.gif similarity index 100% rename from icons/nanos_app_moonbeam.gif rename to icons/nanos_app_chain_1284.gif diff --git a/icons/nanos_app_moonriver.gif b/icons/nanos_app_chain_1285.gif similarity index 100% rename from icons/nanos_app_moonriver.gif rename to icons/nanos_app_chain_1285.gif diff --git a/icons/nanos_app_ether1.gif b/icons/nanos_app_chain_1313114.gif similarity index 100% rename from icons/nanos_app_ether1.gif rename to icons/nanos_app_chain_1313114.gif diff --git a/icons/nanos_app_polygon.gif b/icons/nanos_app_chain_137.gif similarity index 100% rename from icons/nanos_app_polygon.gif rename to icons/nanos_app_chain_137.gif diff --git a/icons/nanos_app_flare.gif b/icons/nanos_app_chain_14.gif similarity index 100% rename from icons/nanos_app_flare.gif rename to icons/nanos_app_chain_14.gif diff --git a/icons/nanos_app_flare_coston.gif b/icons/nanos_app_chain_16.gif similarity index 100% rename from icons/nanos_app_flare_coston.gif rename to icons/nanos_app_chain_16.gif diff --git a/icons/nanos_app_atheios.gif b/icons/nanos_app_chain_1620.gif similarity index 100% rename from icons/nanos_app_atheios.gif rename to icons/nanos_app_chain_1620.gif diff --git a/icons/nanos_app_cube.gif b/icons/nanos_app_chain_1818.gif similarity index 100% rename from icons/nanos_app_cube.gif rename to icons/nanos_app_chain_1818.gif diff --git a/icons/nanos_app_songbird.gif b/icons/nanos_app_chain_19.gif similarity index 100% rename from icons/nanos_app_songbird.gif rename to icons/nanos_app_chain_19.gif diff --git a/icons/nanos_app_ethergem.gif b/icons/nanos_app_chain_1987.gif similarity index 100% rename from icons/nanos_app_ethergem.gif rename to icons/nanos_app_chain_1987.gif diff --git a/icons/nanos_app_bttc.gif b/icons/nanos_app_chain_199.gif similarity index 100% rename from icons/nanos_app_bttc.gif rename to icons/nanos_app_chain_199.gif diff --git a/icons/nanos_app_expanse.gif b/icons/nanos_app_chain_2.gif similarity index 100% rename from icons/nanos_app_expanse.gif rename to icons/nanos_app_chain_2.gif diff --git a/icons/nanos_app_akroma.gif b/icons/nanos_app_chain_200625.gif similarity index 100% rename from icons/nanos_app_akroma.gif rename to icons/nanos_app_chain_200625.gif diff --git a/icons/nanos_app_tecracoin.gif b/icons/nanos_app_chain_20531811.gif similarity index 100% rename from icons/nanos_app_tecracoin.gif rename to icons/nanos_app_chain_20531811.gif diff --git a/icons/nanos_app_tecratestnet.gif b/icons/nanos_app_chain_20531812.gif similarity index 100% rename from icons/nanos_app_tecratestnet.gif rename to icons/nanos_app_chain_20531812.gif diff --git a/icons/nanos_app_dexon.gif b/icons/nanos_app_chain_237.gif similarity index 100% rename from icons/nanos_app_dexon.gif rename to icons/nanos_app_chain_237.gif diff --git a/icons/nanos_app_kardiachain.gif b/icons/nanos_app_chain_24.gif similarity index 100% rename from icons/nanos_app_kardiachain.gif rename to icons/nanos_app_chain_24.gif diff --git a/icons/nanos_app_webchain.gif b/icons/nanos_app_chain_24484.gif similarity index 100% rename from icons/nanos_app_webchain.gif rename to icons/nanos_app_chain_24484.gif diff --git a/icons/nanos_app_artis_sigma1.gif b/icons/nanos_app_chain_246529.gif similarity index 100% rename from icons/nanos_app_artis_sigma1.gif rename to icons/nanos_app_chain_246529.gif diff --git a/icons/nanos_app_artis_tau1.gif b/icons/nanos_app_chain_246785.gif similarity index 100% rename from icons/nanos_app_artis_tau1.gif rename to icons/nanos_app_chain_246785.gif diff --git a/icons/nanos_app_oasys.gif b/icons/nanos_app_chain_248.gif similarity index 100% rename from icons/nanos_app_oasys.gif rename to icons/nanos_app_chain_248.gif diff --git a/icons/nanos_app_hpb.gif b/icons/nanos_app_chain_269.gif similarity index 100% rename from icons/nanos_app_hpb.gif rename to icons/nanos_app_chain_269.gif diff --git a/icons/nanos_app_reosc.gif b/icons/nanos_app_chain_2894.gif similarity index 100% rename from icons/nanos_app_reosc.gif rename to icons/nanos_app_chain_2894.gif diff --git a/icons/nanos_app_goerli.gif b/icons/nanos_app_chain_3.gif similarity index 100% rename from icons/nanos_app_goerli.gif rename to icons/nanos_app_chain_3.gif diff --git a/icons/nanos_app_rsk.gif b/icons/nanos_app_chain_30.gif similarity index 100% rename from icons/nanos_app_rsk.gif rename to icons/nanos_app_chain_30.gif diff --git a/icons/nanos_app_rsk_testnet.gif b/icons/nanos_app_chain_31.gif similarity index 100% rename from icons/nanos_app_rsk_testnet.gif rename to icons/nanos_app_chain_31.gif diff --git a/icons/nanos_app_ethersocial.gif b/icons/nanos_app_chain_31102.gif similarity index 100% rename from icons/nanos_app_ethersocial.gif rename to icons/nanos_app_chain_31102.gif diff --git a/icons/nanos_app_pirl.gif b/icons/nanos_app_chain_3125659152.gif similarity index 100% rename from icons/nanos_app_pirl.gif rename to icons/nanos_app_chain_3125659152.gif diff --git a/icons/nanos_app_shiden.gif b/icons/nanos_app_chain_336.gif similarity index 100% rename from icons/nanos_app_shiden.gif rename to icons/nanos_app_chain_336.gif diff --git a/icons/nanos_app_tobalaba.gif b/icons/nanos_app_chain_401697.gif similarity index 100% rename from icons/nanos_app_tobalaba.gif rename to icons/nanos_app_chain_401697.gif diff --git a/icons/nanos_app_ropsten.gif b/icons/nanos_app_chain_5.gif similarity index 100% rename from icons/nanos_app_ropsten.gif rename to icons/nanos_app_chain_5.gif diff --git a/icons/nanos_app_apothemnetwork.gif b/icons/nanos_app_chain_50.gif similarity index 100% rename from icons/nanos_app_apothemnetwork.gif rename to icons/nanos_app_chain_50.gif diff --git a/icons/nanos_app_xdcnetwork.gif b/icons/nanos_app_chain_51.gif similarity index 100% rename from icons/nanos_app_xdcnetwork.gif rename to icons/nanos_app_chain_51.gif diff --git a/icons/nanos_app_bsc.gif b/icons/nanos_app_chain_56.gif similarity index 100% rename from icons/nanos_app_bsc.gif rename to icons/nanos_app_chain_56.gif diff --git a/icons/nanos_app_astar.gif b/icons/nanos_app_chain_592.gif similarity index 100% rename from icons/nanos_app_astar.gif rename to icons/nanos_app_chain_592.gif diff --git a/icons/nanos_app_gochain.gif b/icons/nanos_app_chain_60.gif similarity index 100% rename from icons/nanos_app_gochain.gif rename to icons/nanos_app_chain_60.gif diff --git a/icons/nanos_app_ethereum_classic.gif b/icons/nanos_app_chain_61.gif similarity index 100% rename from icons/nanos_app_ethereum_classic.gif rename to icons/nanos_app_chain_61.gif diff --git a/icons/nanos_app_multivac.gif b/icons/nanos_app_chain_62621.gif similarity index 100% rename from icons/nanos_app_multivac.gif rename to icons/nanos_app_chain_62621.gif diff --git a/icons/nanos_app_ellaism.gif b/icons/nanos_app_chain_64.gif similarity index 100% rename from icons/nanos_app_ellaism.gif rename to icons/nanos_app_chain_64.gif diff --git a/icons/nanos_app_okc.gif b/icons/nanos_app_chain_66.gif similarity index 100% rename from icons/nanos_app_okc.gif rename to icons/nanos_app_chain_66.gif diff --git a/icons/nanos_app_shyft.gif b/icons/nanos_app_chain_7341.gif similarity index 100% rename from icons/nanos_app_shyft.gif rename to icons/nanos_app_chain_7341.gif diff --git a/icons/nanos_app_volta.gif b/icons/nanos_app_chain_73799.gif similarity index 100% rename from icons/nanos_app_volta.gif rename to icons/nanos_app_chain_73799.gif diff --git a/icons/nanos_app_mix.gif b/icons/nanos_app_chain_76.gif similarity index 100% rename from icons/nanos_app_mix.gif rename to icons/nanos_app_chain_76.gif diff --git a/icons/nanos_app_musicoin.gif b/icons/nanos_app_chain_7762959.gif similarity index 100% rename from icons/nanos_app_musicoin.gif rename to icons/nanos_app_chain_7762959.gif diff --git a/icons/nanos_app_wethio.gif b/icons/nanos_app_chain_78.gif similarity index 100% rename from icons/nanos_app_wethio.gif rename to icons/nanos_app_chain_78.gif diff --git a/icons/nanos_app_ubiq.gif b/icons/nanos_app_chain_8.gif similarity index 100% rename from icons/nanos_app_ubiq.gif rename to icons/nanos_app_chain_8.gif diff --git a/icons/nanos_app_meter.gif b/icons/nanos_app_chain_82.gif similarity index 100% rename from icons/nanos_app_meter.gif rename to icons/nanos_app_chain_82.gif diff --git a/icons/nanos_app_callisto.gif b/icons/nanos_app_chain_820.gif similarity index 100% rename from icons/nanos_app_callisto.gif rename to icons/nanos_app_chain_820.gif diff --git a/icons/nanos_app_id4good.gif b/icons/nanos_app_chain_846000.gif similarity index 100% rename from icons/nanos_app_id4good.gif rename to icons/nanos_app_chain_846000.gif diff --git a/icons/nanos_app_tomochain.gif b/icons/nanos_app_chain_88.gif similarity index 100% rename from icons/nanos_app_tomochain.gif rename to icons/nanos_app_chain_88.gif diff --git a/icons/nanos_app_wanchain.gif b/icons/nanos_app_chain_888.gif similarity index 100% rename from icons/nanos_app_wanchain.gif rename to icons/nanos_app_chain_888.gif diff --git a/icons/nanos_app_poa.gif b/icons/nanos_app_chain_99.gif similarity index 100% rename from icons/nanos_app_poa.gif rename to icons/nanos_app_chain_99.gif diff --git a/icons/nanox_app_ethereum.gif b/icons/nanox_app_chain_1.gif similarity index 100% rename from icons/nanox_app_ethereum.gif rename to icons/nanox_app_chain_1.gif diff --git a/icons/nanox_app_conflux_espace.gif b/icons/nanox_app_chain_1030.gif similarity index 100% rename from icons/nanox_app_conflux_espace.gif rename to icons/nanox_app_chain_1030.gif diff --git a/icons/nanox_app_thundercore.gif b/icons/nanox_app_chain_108.gif similarity index 100% rename from icons/nanox_app_thundercore.gif rename to icons/nanox_app_chain_108.gif diff --git a/icons/nanox_app_moonbeam.gif b/icons/nanox_app_chain_1284.gif similarity index 100% rename from icons/nanox_app_moonbeam.gif rename to icons/nanox_app_chain_1284.gif diff --git a/icons/nanox_app_moonriver.gif b/icons/nanox_app_chain_1285.gif similarity index 100% rename from icons/nanox_app_moonriver.gif rename to icons/nanox_app_chain_1285.gif diff --git a/icons/nanox_app_ether1.gif b/icons/nanox_app_chain_1313114.gif similarity index 100% rename from icons/nanox_app_ether1.gif rename to icons/nanox_app_chain_1313114.gif diff --git a/icons/nanox_app_polygon.gif b/icons/nanox_app_chain_137.gif similarity index 100% rename from icons/nanox_app_polygon.gif rename to icons/nanox_app_chain_137.gif diff --git a/icons/nanox_app_flare.gif b/icons/nanox_app_chain_14.gif similarity index 100% rename from icons/nanox_app_flare.gif rename to icons/nanox_app_chain_14.gif diff --git a/icons/nanox_app_flare_coston.gif b/icons/nanox_app_chain_16.gif similarity index 100% rename from icons/nanox_app_flare_coston.gif rename to icons/nanox_app_chain_16.gif diff --git a/icons/nanox_app_atheios.gif b/icons/nanox_app_chain_1620.gif similarity index 100% rename from icons/nanox_app_atheios.gif rename to icons/nanox_app_chain_1620.gif diff --git a/icons/nanox_app_cube.gif b/icons/nanox_app_chain_1818.gif similarity index 100% rename from icons/nanox_app_cube.gif rename to icons/nanox_app_chain_1818.gif diff --git a/icons/nanox_app_songbird.gif b/icons/nanox_app_chain_19.gif similarity index 100% rename from icons/nanox_app_songbird.gif rename to icons/nanox_app_chain_19.gif diff --git a/icons/nanox_app_ethergem.gif b/icons/nanox_app_chain_1987.gif similarity index 100% rename from icons/nanox_app_ethergem.gif rename to icons/nanox_app_chain_1987.gif diff --git a/icons/nanox_app_bttc.gif b/icons/nanox_app_chain_199.gif similarity index 100% rename from icons/nanox_app_bttc.gif rename to icons/nanox_app_chain_199.gif diff --git a/icons/nanox_app_expanse.gif b/icons/nanox_app_chain_2.gif similarity index 100% rename from icons/nanox_app_expanse.gif rename to icons/nanox_app_chain_2.gif diff --git a/icons/nanox_app_akroma.gif b/icons/nanox_app_chain_200625.gif similarity index 100% rename from icons/nanox_app_akroma.gif rename to icons/nanox_app_chain_200625.gif diff --git a/icons/nanox_app_tecracoin.gif b/icons/nanox_app_chain_20531811.gif similarity index 100% rename from icons/nanox_app_tecracoin.gif rename to icons/nanox_app_chain_20531811.gif diff --git a/icons/nanox_app_tecratestnet.gif b/icons/nanox_app_chain_20531812.gif similarity index 100% rename from icons/nanox_app_tecratestnet.gif rename to icons/nanox_app_chain_20531812.gif diff --git a/icons/nanox_app_dexon.gif b/icons/nanox_app_chain_237.gif similarity index 100% rename from icons/nanox_app_dexon.gif rename to icons/nanox_app_chain_237.gif diff --git a/icons/nanox_app_kardiachain.gif b/icons/nanox_app_chain_24.gif similarity index 100% rename from icons/nanox_app_kardiachain.gif rename to icons/nanox_app_chain_24.gif diff --git a/icons/nanox_app_webchain.gif b/icons/nanox_app_chain_24484.gif similarity index 100% rename from icons/nanox_app_webchain.gif rename to icons/nanox_app_chain_24484.gif diff --git a/icons/nanox_app_artis_sigma1.gif b/icons/nanox_app_chain_246529.gif similarity index 100% rename from icons/nanox_app_artis_sigma1.gif rename to icons/nanox_app_chain_246529.gif diff --git a/icons/nanox_app_artis_tau1.gif b/icons/nanox_app_chain_246785.gif similarity index 100% rename from icons/nanox_app_artis_tau1.gif rename to icons/nanox_app_chain_246785.gif diff --git a/icons/nanox_app_oasys.gif b/icons/nanox_app_chain_248.gif similarity index 100% rename from icons/nanox_app_oasys.gif rename to icons/nanox_app_chain_248.gif diff --git a/icons/nanox_app_hpb.gif b/icons/nanox_app_chain_269.gif similarity index 100% rename from icons/nanox_app_hpb.gif rename to icons/nanox_app_chain_269.gif diff --git a/icons/nanox_app_reosc.gif b/icons/nanox_app_chain_2894.gif similarity index 100% rename from icons/nanox_app_reosc.gif rename to icons/nanox_app_chain_2894.gif diff --git a/icons/nanox_app_goerli.gif b/icons/nanox_app_chain_3.gif similarity index 100% rename from icons/nanox_app_goerli.gif rename to icons/nanox_app_chain_3.gif diff --git a/icons/nanox_app_rsk.gif b/icons/nanox_app_chain_30.gif similarity index 100% rename from icons/nanox_app_rsk.gif rename to icons/nanox_app_chain_30.gif diff --git a/icons/nanox_app_rsk_testnet.gif b/icons/nanox_app_chain_31.gif similarity index 100% rename from icons/nanox_app_rsk_testnet.gif rename to icons/nanox_app_chain_31.gif diff --git a/icons/nanox_app_ethersocial.gif b/icons/nanox_app_chain_31102.gif similarity index 100% rename from icons/nanox_app_ethersocial.gif rename to icons/nanox_app_chain_31102.gif diff --git a/icons/nanox_app_pirl.gif b/icons/nanox_app_chain_3125659152.gif similarity index 100% rename from icons/nanox_app_pirl.gif rename to icons/nanox_app_chain_3125659152.gif diff --git a/icons/nanox_app_shiden.gif b/icons/nanox_app_chain_336.gif similarity index 100% rename from icons/nanox_app_shiden.gif rename to icons/nanox_app_chain_336.gif diff --git a/icons/nanox_app_ropsten.gif b/icons/nanox_app_chain_5.gif similarity index 100% rename from icons/nanox_app_ropsten.gif rename to icons/nanox_app_chain_5.gif diff --git a/icons/nanox_app_apothemnetwork.gif b/icons/nanox_app_chain_50.gif similarity index 100% rename from icons/nanox_app_apothemnetwork.gif rename to icons/nanox_app_chain_50.gif diff --git a/icons/nanox_app_xdcnetwork.gif b/icons/nanox_app_chain_51.gif similarity index 100% rename from icons/nanox_app_xdcnetwork.gif rename to icons/nanox_app_chain_51.gif diff --git a/icons/nanox_app_bsc.gif b/icons/nanox_app_chain_56.gif similarity index 100% rename from icons/nanox_app_bsc.gif rename to icons/nanox_app_chain_56.gif diff --git a/icons/nanox_app_astar.gif b/icons/nanox_app_chain_592.gif similarity index 100% rename from icons/nanox_app_astar.gif rename to icons/nanox_app_chain_592.gif diff --git a/icons/nanox_app_gochain.gif b/icons/nanox_app_chain_60.gif similarity index 100% rename from icons/nanox_app_gochain.gif rename to icons/nanox_app_chain_60.gif diff --git a/icons/nanox_app_ethereum_classic.gif b/icons/nanox_app_chain_61.gif similarity index 100% rename from icons/nanox_app_ethereum_classic.gif rename to icons/nanox_app_chain_61.gif diff --git a/icons/nanox_app_multivac.gif b/icons/nanox_app_chain_62621.gif similarity index 100% rename from icons/nanox_app_multivac.gif rename to icons/nanox_app_chain_62621.gif diff --git a/icons/nanox_app_ellaism.gif b/icons/nanox_app_chain_64.gif similarity index 100% rename from icons/nanox_app_ellaism.gif rename to icons/nanox_app_chain_64.gif diff --git a/icons/nanox_app_okc.gif b/icons/nanox_app_chain_66.gif similarity index 100% rename from icons/nanox_app_okc.gif rename to icons/nanox_app_chain_66.gif diff --git a/icons/nanox_app_shyft.gif b/icons/nanox_app_chain_7341.gif similarity index 100% rename from icons/nanox_app_shyft.gif rename to icons/nanox_app_chain_7341.gif diff --git a/icons/nanox_app_volta.gif b/icons/nanox_app_chain_73799.gif similarity index 100% rename from icons/nanox_app_volta.gif rename to icons/nanox_app_chain_73799.gif diff --git a/icons/nanox_app_mix.gif b/icons/nanox_app_chain_76.gif similarity index 100% rename from icons/nanox_app_mix.gif rename to icons/nanox_app_chain_76.gif diff --git a/icons/nanox_app_musicoin.gif b/icons/nanox_app_chain_7762959.gif similarity index 100% rename from icons/nanox_app_musicoin.gif rename to icons/nanox_app_chain_7762959.gif diff --git a/icons/nanox_app_wethio.gif b/icons/nanox_app_chain_78.gif similarity index 100% rename from icons/nanox_app_wethio.gif rename to icons/nanox_app_chain_78.gif diff --git a/icons/nanox_app_ubiq.gif b/icons/nanox_app_chain_8.gif similarity index 100% rename from icons/nanox_app_ubiq.gif rename to icons/nanox_app_chain_8.gif diff --git a/icons/nanox_app_meter.gif b/icons/nanox_app_chain_82.gif similarity index 100% rename from icons/nanox_app_meter.gif rename to icons/nanox_app_chain_82.gif diff --git a/icons/nanox_app_callisto.gif b/icons/nanox_app_chain_820.gif similarity index 100% rename from icons/nanox_app_callisto.gif rename to icons/nanox_app_chain_820.gif diff --git a/icons/nanox_app_id4good.gif b/icons/nanox_app_chain_846000.gif similarity index 100% rename from icons/nanox_app_id4good.gif rename to icons/nanox_app_chain_846000.gif diff --git a/icons/nanox_app_tomochain.gif b/icons/nanox_app_chain_88.gif similarity index 100% rename from icons/nanox_app_tomochain.gif rename to icons/nanox_app_chain_88.gif diff --git a/icons/nanox_app_wanchain.gif b/icons/nanox_app_chain_888.gif similarity index 100% rename from icons/nanox_app_wanchain.gif rename to icons/nanox_app_chain_888.gif diff --git a/icons/nanox_app_poa.gif b/icons/nanox_app_chain_99.gif similarity index 100% rename from icons/nanox_app_poa.gif rename to icons/nanox_app_chain_99.gif diff --git a/icons/stax_app_ethereum.gif b/icons/stax_app_chain_1.gif similarity index 100% rename from icons/stax_app_ethereum.gif rename to icons/stax_app_chain_1.gif diff --git a/icons/stax_app_conflux_espace.gif b/icons/stax_app_chain_1030.gif similarity index 100% rename from icons/stax_app_conflux_espace.gif rename to icons/stax_app_chain_1030.gif diff --git a/icons/stax_app_thundercore.gif b/icons/stax_app_chain_108.gif similarity index 100% rename from icons/stax_app_thundercore.gif rename to icons/stax_app_chain_108.gif diff --git a/icons/stax_app_moonbeam.gif b/icons/stax_app_chain_1284.gif similarity index 100% rename from icons/stax_app_moonbeam.gif rename to icons/stax_app_chain_1284.gif diff --git a/icons/stax_app_moonriver.gif b/icons/stax_app_chain_1285.gif similarity index 100% rename from icons/stax_app_moonriver.gif rename to icons/stax_app_chain_1285.gif diff --git a/icons/stax_app_ether1.gif b/icons/stax_app_chain_1313114.gif similarity index 100% rename from icons/stax_app_ether1.gif rename to icons/stax_app_chain_1313114.gif diff --git a/icons/stax_app_polygon.gif b/icons/stax_app_chain_137.gif similarity index 100% rename from icons/stax_app_polygon.gif rename to icons/stax_app_chain_137.gif diff --git a/icons/stax_app_flare.gif b/icons/stax_app_chain_14.gif similarity index 100% rename from icons/stax_app_flare.gif rename to icons/stax_app_chain_14.gif diff --git a/icons/stax_app_flare_coston.gif b/icons/stax_app_chain_16.gif similarity index 100% rename from icons/stax_app_flare_coston.gif rename to icons/stax_app_chain_16.gif diff --git a/icons/stax_app_atheios.gif b/icons/stax_app_chain_1620.gif similarity index 100% rename from icons/stax_app_atheios.gif rename to icons/stax_app_chain_1620.gif diff --git a/icons/stax_app_cube.gif b/icons/stax_app_chain_1818.gif similarity index 100% rename from icons/stax_app_cube.gif rename to icons/stax_app_chain_1818.gif diff --git a/icons/stax_app_songbird.gif b/icons/stax_app_chain_19.gif similarity index 100% rename from icons/stax_app_songbird.gif rename to icons/stax_app_chain_19.gif diff --git a/icons/stax_app_ethergem.gif b/icons/stax_app_chain_1987.gif similarity index 100% rename from icons/stax_app_ethergem.gif rename to icons/stax_app_chain_1987.gif diff --git a/icons/stax_app_bttc.gif b/icons/stax_app_chain_199.gif similarity index 100% rename from icons/stax_app_bttc.gif rename to icons/stax_app_chain_199.gif diff --git a/icons/stax_app_expanse.gif b/icons/stax_app_chain_2.gif similarity index 100% rename from icons/stax_app_expanse.gif rename to icons/stax_app_chain_2.gif diff --git a/icons/stax_app_akroma.gif b/icons/stax_app_chain_200625.gif similarity index 100% rename from icons/stax_app_akroma.gif rename to icons/stax_app_chain_200625.gif diff --git a/icons/stax_app_tecracoin.gif b/icons/stax_app_chain_20531811.gif similarity index 100% rename from icons/stax_app_tecracoin.gif rename to icons/stax_app_chain_20531811.gif diff --git a/icons/stax_app_tecratestnet.gif b/icons/stax_app_chain_20531812.gif similarity index 100% rename from icons/stax_app_tecratestnet.gif rename to icons/stax_app_chain_20531812.gif diff --git a/icons/stax_app_dexon.gif b/icons/stax_app_chain_237.gif similarity index 100% rename from icons/stax_app_dexon.gif rename to icons/stax_app_chain_237.gif diff --git a/icons/stax_app_kardiachain.gif b/icons/stax_app_chain_24.gif similarity index 100% rename from icons/stax_app_kardiachain.gif rename to icons/stax_app_chain_24.gif diff --git a/icons/stax_app_webchain.gif b/icons/stax_app_chain_24484.gif similarity index 100% rename from icons/stax_app_webchain.gif rename to icons/stax_app_chain_24484.gif diff --git a/icons/stax_app_energywebchain.gif b/icons/stax_app_chain_246.gif similarity index 100% rename from icons/stax_app_energywebchain.gif rename to icons/stax_app_chain_246.gif diff --git a/icons/stax_app_artis_sigma1.gif b/icons/stax_app_chain_246529.gif similarity index 100% rename from icons/stax_app_artis_sigma1.gif rename to icons/stax_app_chain_246529.gif diff --git a/icons/stax_app_artis_tau1.gif b/icons/stax_app_chain_246785.gif similarity index 100% rename from icons/stax_app_artis_tau1.gif rename to icons/stax_app_chain_246785.gif diff --git a/icons/stax_app_oasys.gif b/icons/stax_app_chain_248.gif similarity index 100% rename from icons/stax_app_oasys.gif rename to icons/stax_app_chain_248.gif diff --git a/icons/stax_app_hpb.gif b/icons/stax_app_chain_269.gif similarity index 100% rename from icons/stax_app_hpb.gif rename to icons/stax_app_chain_269.gif diff --git a/icons/stax_app_reosc.gif b/icons/stax_app_chain_2894.gif similarity index 100% rename from icons/stax_app_reosc.gif rename to icons/stax_app_chain_2894.gif diff --git a/icons/stax_app_ropsten.gif b/icons/stax_app_chain_3.gif similarity index 100% rename from icons/stax_app_ropsten.gif rename to icons/stax_app_chain_3.gif diff --git a/icons/stax_app_rsk.gif b/icons/stax_app_chain_30.gif similarity index 100% rename from icons/stax_app_rsk.gif rename to icons/stax_app_chain_30.gif diff --git a/icons/stax_app_rsk_testnet.gif b/icons/stax_app_chain_31.gif similarity index 100% rename from icons/stax_app_rsk_testnet.gif rename to icons/stax_app_chain_31.gif diff --git a/icons/stax_app_ethersocial.gif b/icons/stax_app_chain_31102.gif similarity index 100% rename from icons/stax_app_ethersocial.gif rename to icons/stax_app_chain_31102.gif diff --git a/icons/stax_app_pirl.gif b/icons/stax_app_chain_3125659152.gif similarity index 100% rename from icons/stax_app_pirl.gif rename to icons/stax_app_chain_3125659152.gif diff --git a/icons/stax_app_shiden.gif b/icons/stax_app_chain_336.gif similarity index 100% rename from icons/stax_app_shiden.gif rename to icons/stax_app_chain_336.gif diff --git a/icons/stax_app_tobalaba.gif b/icons/stax_app_chain_401697.gif similarity index 100% rename from icons/stax_app_tobalaba.gif rename to icons/stax_app_chain_401697.gif diff --git a/icons/stax_app_goerli.gif b/icons/stax_app_chain_5.gif similarity index 100% rename from icons/stax_app_goerli.gif rename to icons/stax_app_chain_5.gif diff --git a/icons/stax_app_xdcnetwork.gif b/icons/stax_app_chain_50.gif similarity index 100% rename from icons/stax_app_xdcnetwork.gif rename to icons/stax_app_chain_50.gif diff --git a/icons/stax_app_apothemnetwork.gif b/icons/stax_app_chain_51.gif similarity index 100% rename from icons/stax_app_apothemnetwork.gif rename to icons/stax_app_chain_51.gif diff --git a/icons/stax_app_bsc.gif b/icons/stax_app_chain_56.gif similarity index 100% rename from icons/stax_app_bsc.gif rename to icons/stax_app_chain_56.gif diff --git a/icons/stax_app_astar.gif b/icons/stax_app_chain_592.gif similarity index 100% rename from icons/stax_app_astar.gif rename to icons/stax_app_chain_592.gif diff --git a/icons/stax_app_gochain.gif b/icons/stax_app_chain_60.gif similarity index 100% rename from icons/stax_app_gochain.gif rename to icons/stax_app_chain_60.gif diff --git a/icons/stax_app_ethereum_classic.gif b/icons/stax_app_chain_61.gif similarity index 100% rename from icons/stax_app_ethereum_classic.gif rename to icons/stax_app_chain_61.gif diff --git a/icons/stax_app_multivac.gif b/icons/stax_app_chain_62621.gif similarity index 100% rename from icons/stax_app_multivac.gif rename to icons/stax_app_chain_62621.gif diff --git a/icons/stax_app_ellaism.gif b/icons/stax_app_chain_64.gif similarity index 100% rename from icons/stax_app_ellaism.gif rename to icons/stax_app_chain_64.gif diff --git a/icons/stax_app_okc.gif b/icons/stax_app_chain_66.gif similarity index 100% rename from icons/stax_app_okc.gif rename to icons/stax_app_chain_66.gif diff --git a/icons/stax_app_shyft.gif b/icons/stax_app_chain_7341.gif similarity index 100% rename from icons/stax_app_shyft.gif rename to icons/stax_app_chain_7341.gif diff --git a/icons/stax_app_volta.gif b/icons/stax_app_chain_73799.gif similarity index 100% rename from icons/stax_app_volta.gif rename to icons/stax_app_chain_73799.gif diff --git a/icons/stax_app_mix.gif b/icons/stax_app_chain_76.gif similarity index 100% rename from icons/stax_app_mix.gif rename to icons/stax_app_chain_76.gif diff --git a/icons/stax_app_musicoin.gif b/icons/stax_app_chain_7762959.gif similarity index 100% rename from icons/stax_app_musicoin.gif rename to icons/stax_app_chain_7762959.gif diff --git a/icons/stax_app_wethio.gif b/icons/stax_app_chain_78.gif similarity index 100% rename from icons/stax_app_wethio.gif rename to icons/stax_app_chain_78.gif diff --git a/icons/stax_app_ubiq.gif b/icons/stax_app_chain_8.gif similarity index 100% rename from icons/stax_app_ubiq.gif rename to icons/stax_app_chain_8.gif diff --git a/icons/stax_app_meter.gif b/icons/stax_app_chain_82.gif similarity index 100% rename from icons/stax_app_meter.gif rename to icons/stax_app_chain_82.gif diff --git a/icons/stax_app_callisto.gif b/icons/stax_app_chain_820.gif similarity index 100% rename from icons/stax_app_callisto.gif rename to icons/stax_app_chain_820.gif diff --git a/icons/stax_app_id4good.gif b/icons/stax_app_chain_846000.gif similarity index 100% rename from icons/stax_app_id4good.gif rename to icons/stax_app_chain_846000.gif diff --git a/icons/stax_app_tomochain.gif b/icons/stax_app_chain_88.gif similarity index 100% rename from icons/stax_app_tomochain.gif rename to icons/stax_app_chain_88.gif diff --git a/icons/stax_app_wanchain.gif b/icons/stax_app_chain_888.gif similarity index 100% rename from icons/stax_app_wanchain.gif rename to icons/stax_app_chain_888.gif diff --git a/icons/stax_app_poa.gif b/icons/stax_app_chain_99.gif similarity index 100% rename from icons/stax_app_poa.gif rename to icons/stax_app_chain_99.gif From 015842d4e547671665b2fd67e737c330e27a08b2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 12 Sep 2023 15:07:07 +0200 Subject: [PATCH 029/160] Simplified adding new clones Removed dead code from the app (was safeguarded by #ifdefs of macros that weren't defined) --- Makefile | 15 +- makefile_conf/chain/akroma.mk | 3 +- makefile_conf/chain/apothemnetwork.mk | 3 +- makefile_conf/chain/artis_sigma1.mk | 3 +- makefile_conf/chain/artis_tau1.mk | 3 +- makefile_conf/chain/astar.mk | 3 +- makefile_conf/chain/atheios.mk | 3 +- makefile_conf/chain/bsc.mk | 3 +- makefile_conf/chain/bttc.mk | 5 +- makefile_conf/chain/callisto.mk | 3 +- makefile_conf/chain/conflux_espace.mk | 3 +- makefile_conf/chain/cube.mk | 3 +- makefile_conf/chain/dexon.mk | 3 +- makefile_conf/chain/ellaism.mk | 3 +- makefile_conf/chain/energywebchain.mk | 3 +- makefile_conf/chain/ether1.mk | 3 +- makefile_conf/chain/ethereum.mk | 3 +- makefile_conf/chain/ethereum_classic.mk | 3 +- makefile_conf/chain/ethergem.mk | 3 +- makefile_conf/chain/ethersocial.mk | 3 +- makefile_conf/chain/expanse.mk | 3 +- makefile_conf/chain/flare.mk | 3 +- makefile_conf/chain/flare_coston.mk | 3 +- makefile_conf/chain/gochain.mk | 3 +- makefile_conf/chain/goerli.mk | 3 +- makefile_conf/chain/hpb.mk | 3 +- makefile_conf/chain/id4good.mk | 3 +- makefile_conf/chain/kardiachain.mk | 3 +- makefile_conf/chain/meter.mk | 3 +- makefile_conf/chain/mix.mk | 3 +- makefile_conf/chain/moonbeam.mk | 3 +- makefile_conf/chain/moonriver.mk | 3 +- makefile_conf/chain/multivac.mk | 3 +- makefile_conf/chain/musicoin.mk | 3 +- makefile_conf/chain/oasys.mk | 3 +- makefile_conf/chain/okc.mk | 3 +- makefile_conf/chain/pirl.mk | 3 +- makefile_conf/chain/poa.mk | 3 +- makefile_conf/chain/polygon.mk | 3 +- makefile_conf/chain/reosc.mk | 3 +- makefile_conf/chain/ropsten.mk | 3 +- makefile_conf/chain/rsk.mk | 3 +- makefile_conf/chain/rsk_testnet.mk | 3 +- makefile_conf/chain/shiden.mk | 3 +- makefile_conf/chain/shyft.mk | 3 +- makefile_conf/chain/songbird.mk | 3 +- makefile_conf/chain/tecracoin.mk | 3 +- makefile_conf/chain/tecratestnet.mk | 3 +- makefile_conf/chain/thundercore.mk | 3 +- makefile_conf/chain/tomochain.mk | 3 +- makefile_conf/chain/ubiq.mk | 3 +- makefile_conf/chain/volta.mk | 3 +- makefile_conf/chain/wanchain.mk | 3 +- makefile_conf/chain/webchain.mk | 3 +- makefile_conf/chain/wethio.mk | 3 +- makefile_conf/chain/xdcnetwork.mk | 3 +- src/chainConfig.h | 54 --- src/main.c | 314 ------------------ src/tokens.c | 162 --------- src/tokens.h | 107 ------ .../cmd_getAppConfiguration.c | 2 - src_features/signTx/cmd_signTx.c | 2 +- 62 files changed, 119 insertions(+), 704 deletions(-) diff --git a/Makefile b/Makefile index b7fc635ac..01d89c277 100644 --- a/Makefile +++ b/Makefile @@ -55,6 +55,7 @@ else $(error Unsupported CHAIN - use $(SUPPORTED_CHAINS)) endif CFLAGS += -DAPPNAME=\"$(APPNAME)\" +DEFINES += CHAINID_COINNAME=\"$(TICKER)\" CHAIN_ID=$(CHAIN_ID) ######### # Other # @@ -65,15 +66,15 @@ DEFINES += $(DEFINES_LIB) #prepare hsm generation ifeq ($(TARGET_NAME),TARGET_NANOS) -ICONNAME=icons/nanos_app_$(CHAIN_ID).gif +ICONNAME=icons/nanos_app_chain_$(CHAIN_ID).gif else ifeq ($(TARGET_NAME),TARGET_STAX) -ICONNAME=icons/stax_app_$(CHAIN_ID).gif -DEFINES += ICONGLYPH=C_stax_$(CHAIN_ID)_64px -DEFINES += ICONBITMAP=C_stax_$(CHAIN_ID)_64px_bitmap -DEFINES += ICONGLYPH_SMALL=C_stax_$(CHAIN_ID) +ICONNAME=icons/stax_app_chain_$(CHAIN_ID).gif +DEFINES += ICONGLYPH=C_stax_chain_$(CHAIN_ID)_64px +DEFINES += ICONBITMAP=C_stax_chain_$(CHAIN_ID)_64px_bitmap +DEFINES += ICONGLYPH_SMALL=C_stax_chain_$(CHAIN_ID) GLYPH_FILES += $(ICONNAME) else -ICONNAME=icons/nanox_app_$(CHAIN_ID).gif +ICONNAME=icons/nanox_app_chain_$(CHAIN_ID).gif endif ################ @@ -223,8 +224,6 @@ ifneq ($(NOCONSENT),) DEFINES += NO_CONSENT endif -#DEFINES += HAVE_TOKENS_LIST # Do not activate external ERC-20 support yet - ############## # Compiler # ############## diff --git a/makefile_conf/chain/akroma.mk b/makefile_conf/chain/akroma.mk index 27d91e109..68c935fa4 100644 --- a/makefile_conf/chain/akroma.mk +++ b/makefile_conf/chain/akroma.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/200625'" -DEFINES += CHAINID_UPCASE=\"AKA\" CHAINID_COINNAME=\"AKA\" CHAIN_KIND=CHAIN_KIND_AKROMA CHAIN_ID=200625 +TICKER = "AKA" +CHAIN_ID = 200625 APPNAME = "Akroma" \ No newline at end of file diff --git a/makefile_conf/chain/apothemnetwork.mk b/makefile_conf/chain/apothemnetwork.mk index 23816b5ab..57dc45ba5 100644 --- a/makefile_conf/chain/apothemnetwork.mk +++ b/makefile_conf/chain/apothemnetwork.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/550'" -DEFINES += CHAINID_UPCASE=\"APOTHEMNETWORK\" CHAINID_COINNAME=\"TXDC\" CHAIN_KIND=CHAIN_KIND_APOTHEMNETWORK CHAIN_ID=51 +TICKER = "TXDC" +CHAIN_ID = 51 APPNAME = "ApothemNetwork" diff --git a/makefile_conf/chain/artis_sigma1.mk b/makefile_conf/chain/artis_sigma1.mk index 2170e486c..766bd321c 100644 --- a/makefile_conf/chain/artis_sigma1.mk +++ b/makefile_conf/chain/artis_sigma1.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/246529'" -DEFINES += CHAINID_UPCASE=\"ARTISSIGMA1\" CHAINID_COINNAME=\"ATS\" CHAIN_KIND=CHAIN_KIND_ARTIS_SIGMA1 CHAIN_ID=246529 +TICKER = "ATS" +CHAIN_ID = 246529 APPNAME = "ARTIS sigma1" \ No newline at end of file diff --git a/makefile_conf/chain/artis_tau1.mk b/makefile_conf/chain/artis_tau1.mk index 3316dc2c8..dd0d981ae 100644 --- a/makefile_conf/chain/artis_tau1.mk +++ b/makefile_conf/chain/artis_tau1.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/246785'" -DEFINES += CHAINID_UPCASE=\"ARTISTAU1\" CHAINID_COINNAME=\"ATS\" CHAIN_KIND=CHAIN_KIND_ARTIS_TAU1 CHAIN_ID=246785 +TICKER = "ATS" +CHAIN_ID = 246785 APPNAME = "ARTIS tau1" \ No newline at end of file diff --git a/makefile_conf/chain/astar.mk b/makefile_conf/chain/astar.mk index 0f8bbe934..4faf0c6e5 100644 --- a/makefile_conf/chain/astar.mk +++ b/makefile_conf/chain/astar.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/810'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ASTAR\" CHAINID_COINNAME=\"ASTR\" CHAIN_KIND=CHAIN_KIND_ASTAR CHAIN_ID=592 +TICKER = "ASTR" +CHAIN_ID = 592 APPNAME = "Astar EVM" diff --git a/makefile_conf/chain/atheios.mk b/makefile_conf/chain/atheios.mk index 111852dbd..e7e9ef555 100644 --- a/makefile_conf/chain/atheios.mk +++ b/makefile_conf/chain/atheios.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/1620'" -DEFINES += CHAINID_UPCASE=\"ATHEIOS\" CHAINID_COINNAME=\"ATH\" CHAIN_KIND=CHAIN_KIND_ATHEIOS CHAIN_ID=1620 +TICKER = "ATH" +CHAIN_ID = 1620 APPNAME = "Atheios" \ No newline at end of file diff --git a/makefile_conf/chain/bsc.mk b/makefile_conf/chain/bsc.mk index 7c8f00d85..dc70e0bcc 100644 --- a/makefile_conf/chain/bsc.mk +++ b/makefile_conf/chain/bsc.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"BSC\" CHAINID_COINNAME=\"BNB\" CHAIN_KIND=CHAIN_KIND_BSC CHAIN_ID=56 +TICKER = "BNB" +CHAIN_ID = 56 APPNAME = "Binance Smart Chain" \ No newline at end of file diff --git a/makefile_conf/chain/bttc.mk b/makefile_conf/chain/bttc.mk index af96c73bf..9e82b675e 100644 --- a/makefile_conf/chain/bttc.mk +++ b/makefile_conf/chain/bttc.mk @@ -1,3 +1,4 @@ -APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"BTTC\" CHAINID_COINNAME=\"BTT\" CHAIN_KIND=CHAIN_KIND_BTTC CHAIN_ID=199 +APP_LOAD_PARAMS += --path "44'/60'" +TICKER = "BTT" +CHAIN_ID = 199 APPNAME = "BTTC" \ No newline at end of file diff --git a/makefile_conf/chain/callisto.mk b/makefile_conf/chain/callisto.mk index ec068db87..1147dc9c8 100644 --- a/makefile_conf/chain/callisto.mk +++ b/makefile_conf/chain/callisto.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/820'" -DEFINES += CHAINID_UPCASE=\"CALLISTO\" CHAINID_COINNAME=\"CLO\" CHAIN_KIND=CHAIN_KIND_CALLISTO CHAIN_ID=820 +TICKER = "CLO" +CHAIN_ID = 820 APPNAME = "Callisto" \ No newline at end of file diff --git a/makefile_conf/chain/conflux_espace.mk b/makefile_conf/chain/conflux_espace.mk index ba6728944..6efc293af 100644 --- a/makefile_conf/chain/conflux_espace.mk +++ b/makefile_conf/chain/conflux_espace.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"CONFLUX\" CHAINID_COINNAME=\"CFX\" CHAIN_KIND=CHAIN_KIND_CONFLUX_ESPACE CHAIN_ID=1030 +TICKER = "CFX" +CHAIN_ID = 1030 APPNAME = "Conflux eSpace" \ No newline at end of file diff --git a/makefile_conf/chain/cube.mk b/makefile_conf/chain/cube.mk index 6eff7742f..7ac424cf6 100644 --- a/makefile_conf/chain/cube.mk +++ b/makefile_conf/chain/cube.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"CUBE\" CHAINID_COINNAME=\"CUBE\" CHAIN_KIND=CHAIN_KIND_CUBE CHAIN_ID=1818 +TICKER = "CUBE" +CHAIN_ID = 1818 APPNAME = "Cube" \ No newline at end of file diff --git a/makefile_conf/chain/dexon.mk b/makefile_conf/chain/dexon.mk index 9d9a4a5bb..c892e3533 100644 --- a/makefile_conf/chain/dexon.mk +++ b/makefile_conf/chain/dexon.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/237'" -DEFINES += CHAINID_UPCASE=\"DEXON\" CHAINID_COINNAME=\"DXN\" CHAIN_KIND=CHAIN_KIND_DEXON CHAIN_ID=237 +TICKER = "DXN" +CHAIN_ID = 237 APPNAME = "DEXON" \ No newline at end of file diff --git a/makefile_conf/chain/ellaism.mk b/makefile_conf/chain/ellaism.mk index c47ad84b0..1bd55896d 100644 --- a/makefile_conf/chain/ellaism.mk +++ b/makefile_conf/chain/ellaism.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/163'" -DEFINES += CHAINID_UPCASE=\"ELLA\" CHAINID_COINNAME=\"ELLA\" CHAIN_KIND=CHAIN_KIND_ELLAISM CHAIN_ID=64 +TICKER = "ELLA" +CHAIN_ID = 64 APPNAME = "Ellaism" \ No newline at end of file diff --git a/makefile_conf/chain/energywebchain.mk b/makefile_conf/chain/energywebchain.mk index 1024857d0..6de07e2c3 100644 --- a/makefile_conf/chain/energywebchain.mk +++ b/makefile_conf/chain/energywebchain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/246'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ENERGYWEBCHAIN\" CHAINID_COINNAME=\"EWT\" CHAIN_KIND=CHAIN_KIND_ENERGYWEBCHAIN CHAIN_ID=246 +TICKER = "EWT" +CHAIN_ID = 246 APPNAME = "EnergyWebChain" diff --git a/makefile_conf/chain/ether1.mk b/makefile_conf/chain/ether1.mk index 21b9a9ff0..9efc01588 100644 --- a/makefile_conf/chain/ether1.mk +++ b/makefile_conf/chain/ether1.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/1313114'" -DEFINES += CHAINID_UPCASE=\"ETHER1\" CHAINID_COINNAME=\"ETHO\" CHAIN_KIND=CHAIN_KIND_ETHER1 CHAIN_ID=1313114 +TICKER = "ETHO" +CHAIN_ID = 1313114 APPNAME = "Ether-1" \ No newline at end of file diff --git a/makefile_conf/chain/ethereum.mk b/makefile_conf/chain/ethereum.mk index 73c0c163a..6d52a8b8b 100644 --- a/makefile_conf/chain/ethereum.mk +++ b/makefile_conf/chain/ethereum.mk @@ -1,6 +1,7 @@ # Lock the application on its standard path for 1.5. Please complain if non compliant APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ETHEREUM\" CHAINID_COINNAME=\"ETH\" CHAIN_KIND=CHAIN_KIND_ETHEREUM CHAIN_ID=1 +TICKER = "ETH" +CHAIN_ID = 1 # Starkware integration APP_LOAD_PARAMS += --path "2645'/579218131'" DEFINES += HAVE_STARKWARE diff --git a/makefile_conf/chain/ethereum_classic.mk b/makefile_conf/chain/ethereum_classic.mk index 2c72c664c..ac44b6ab5 100644 --- a/makefile_conf/chain/ethereum_classic.mk +++ b/makefile_conf/chain/ethereum_classic.mk @@ -1,4 +1,5 @@ # Also allows ETC to access the ETH derivation path to recover forked assets APP_LOAD_PARAMS += --path "44'/61'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ETC\" CHAINID_COINNAME=\"ETC\" CHAIN_KIND=CHAIN_KIND_ETHEREUM_CLASSIC CHAIN_ID=61 +TICKER = "ETC" +CHAIN_ID = 61 APPNAME = "Ethereum Classic" \ No newline at end of file diff --git a/makefile_conf/chain/ethergem.mk b/makefile_conf/chain/ethergem.mk index 6eeb421b4..6c819762b 100644 --- a/makefile_conf/chain/ethergem.mk +++ b/makefile_conf/chain/ethergem.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/1987'" -DEFINES += CHAINID_UPCASE=\"ETHERGEM\" CHAINID_COINNAME=\"EGEM\" CHAIN_KIND=CHAIN_KIND_ETHERGEM CHAIN_ID=1987 +TICKER = "EGEM" +CHAIN_ID = 1987 APPNAME = "EtherGem" \ No newline at end of file diff --git a/makefile_conf/chain/ethersocial.mk b/makefile_conf/chain/ethersocial.mk index cbba79577..bbf512c76 100644 --- a/makefile_conf/chain/ethersocial.mk +++ b/makefile_conf/chain/ethersocial.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/31102'" -DEFINES += CHAINID_UPCASE=\"ETHERSOCIAL\" CHAINID_COINNAME=\"ESN\" CHAIN_KIND=CHAIN_KIND_ETHERSOCIAL CHAIN_ID=31102 +TICKER = "ESN" +CHAIN_ID = 31102 APPNAME = "Ethersocial" \ No newline at end of file diff --git a/makefile_conf/chain/expanse.mk b/makefile_conf/chain/expanse.mk index 36226ef9a..f2ee9952e 100644 --- a/makefile_conf/chain/expanse.mk +++ b/makefile_conf/chain/expanse.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/40'" -DEFINES += CHAINID_UPCASE=\"EXPANSE\" CHAINID_COINNAME=\"EXP\" CHAIN_KIND=CHAIN_KIND_EXPANSE CHAIN_ID=2 +TICKER = "EXP" +CHAIN_ID = 2 APPNAME = "Expanse" \ No newline at end of file diff --git a/makefile_conf/chain/flare.mk b/makefile_conf/chain/flare.mk index 565b5bb71..36339eea1 100644 --- a/makefile_conf/chain/flare.mk +++ b/makefile_conf/chain/flare.mk @@ -1,5 +1,6 @@ APP_LOAD_PARAMS += --path "44'/554'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"FLARE\" CHAINID_COINNAME=\"FLR\" CHAIN_KIND=CHAIN_KIND_FLARE CHAIN_ID=14 +TICKER = "FLR" +CHAIN_ID = 14 # Pending review parameters APP_LOAD_PARAMS += --tlvraw 9F:01 diff --git a/makefile_conf/chain/flare_coston.mk b/makefile_conf/chain/flare_coston.mk index f546f00a8..0d6bddf5d 100644 --- a/makefile_conf/chain/flare_coston.mk +++ b/makefile_conf/chain/flare_coston.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/554'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"FLARE\" CHAINID_COINNAME=\"FLR\" CHAIN_KIND=CHAIN_KIND_FLARE CHAIN_ID=16 +TICKER = "FLR" +CHAIN_ID = 16 APPNAME = "Flare Coston" \ No newline at end of file diff --git a/makefile_conf/chain/gochain.mk b/makefile_conf/chain/gochain.mk index eca804c6c..180b2fd67 100644 --- a/makefile_conf/chain/gochain.mk +++ b/makefile_conf/chain/gochain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/6060'" -DEFINES += CHAINID_UPCASE=\"GOCHAIN\" CHAINID_COINNAME=\"GO\" CHAIN_KIND=CHAIN_KIND_GOCHAIN CHAIN_ID=60 +TICKER = "GO" +CHAIN_ID = 60 APPNAME = "GoChain" \ No newline at end of file diff --git a/makefile_conf/chain/goerli.mk b/makefile_conf/chain/goerli.mk index fe6bd8815..1de903909 100644 --- a/makefile_conf/chain/goerli.mk +++ b/makefile_conf/chain/goerli.mk @@ -1,5 +1,6 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ETHEREUM\" CHAINID_COINNAME=\"ETH\" CHAIN_KIND=CHAIN_KIND_ETHEREUM CHAIN_ID=5 +TICKER = "ETH" +CHAIN_ID = 5 # Starkware integration APP_LOAD_PARAMS += --path "2645'/579218131'" DEFINES += HAVE_STARKWARE diff --git a/makefile_conf/chain/hpb.mk b/makefile_conf/chain/hpb.mk index 475abf2ea..60fb3c137 100644 --- a/makefile_conf/chain/hpb.mk +++ b/makefile_conf/chain/hpb.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/269'" -DEFINES += CHAINID_UPCASE=\"HPB\" CHAINID_COINNAME=\"HPB\" CHAIN_KIND=CHAIN_KIND_HPB CHAIN_ID=269 +TICKER = "HPB" +CHAIN_ID = 269 APPNAME = "HPB" \ No newline at end of file diff --git a/makefile_conf/chain/id4good.mk b/makefile_conf/chain/id4good.mk index 57a50cb34..4abac3043 100644 --- a/makefile_conf/chain/id4good.mk +++ b/makefile_conf/chain/id4good.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/161803'" -DEFINES += CHAINID_UPCASE=\"ID4GOOD\" CHAINID_COINNAME=\"A4G\" CHAIN_KIND=CHAIN_KIND_ID4GOOD CHAIN_ID=846000 +TICKER = "A4G" +CHAIN_ID = 846000 APPNAME = "ID4Good" diff --git a/makefile_conf/chain/kardiachain.mk b/makefile_conf/chain/kardiachain.mk index bff1af84f..cc76d38d6 100644 --- a/makefile_conf/chain/kardiachain.mk +++ b/makefile_conf/chain/kardiachain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"KARDIACHAIN\" CHAINID_COINNAME=\"KAI\" CHAIN_KIND=CHAIN_KIND_KARDIACHAIN CHAIN_ID=24 +TICKER = "KAI" +CHAIN_ID = 24 APPNAME = "KardiaChain" \ No newline at end of file diff --git a/makefile_conf/chain/meter.mk b/makefile_conf/chain/meter.mk index fcf2f364f..2a7412013 100644 --- a/makefile_conf/chain/meter.mk +++ b/makefile_conf/chain/meter.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"METER\" CHAINID_COINNAME=\"MTR\" CHAIN_KIND=CHAIN_KIND_METER CHAIN_ID=82 +TICKER = "MTR" +CHAIN_ID = 82 APPNAME = "Meter" \ No newline at end of file diff --git a/makefile_conf/chain/mix.mk b/makefile_conf/chain/mix.mk index 0c9264af7..c180cc90b 100644 --- a/makefile_conf/chain/mix.mk +++ b/makefile_conf/chain/mix.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/76'" -DEFINES += CHAINID_UPCASE=\"MIX\" CHAINID_COINNAME=\"MIX\" CHAIN_KIND=CHAIN_KIND_MIX CHAIN_ID=76 +TICKER = "MIX" +CHAIN_ID = 76 APPNAME = "Mix" \ No newline at end of file diff --git a/makefile_conf/chain/moonbeam.mk b/makefile_conf/chain/moonbeam.mk index c243367ea..5822f8f1f 100644 --- a/makefile_conf/chain/moonbeam.mk +++ b/makefile_conf/chain/moonbeam.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" --path "44'/1284'" -DEFINES += CHAINID_UPCASE=\"MOONBEAM\" CHAINID_COINNAME=\"GLMR\" CHAIN_KIND=CHAIN_KIND_MOONBEAM CHAIN_ID=1284 +TICKER = "GLMR" +CHAIN_ID = 1284 APPNAME = "Moonbeam" \ No newline at end of file diff --git a/makefile_conf/chain/moonriver.mk b/makefile_conf/chain/moonriver.mk index 02341311f..441371573 100644 --- a/makefile_conf/chain/moonriver.mk +++ b/makefile_conf/chain/moonriver.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" --path "44'/1285'" -DEFINES += CHAINID_UPCASE=\"MOONRIVER\" CHAINID_COINNAME=\"MOVR\" CHAIN_KIND=CHAIN_KIND_MOONRIVER CHAIN_ID=1285 +TICKER = "MOVR" +CHAIN_ID = 1285 APPNAME = "Moonriver" \ No newline at end of file diff --git a/makefile_conf/chain/multivac.mk b/makefile_conf/chain/multivac.mk index 043299b43..c5b527047 100644 --- a/makefile_conf/chain/multivac.mk +++ b/makefile_conf/chain/multivac.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"MULTIVAC\" CHAINID_COINNAME=\"MTV\" CHAIN_KIND=CHAIN_KIND_MULTIVAC CHAIN_ID=62621 +TICKER = "MTV" +CHAIN_ID = 62621 APPNAME = "MultiVAC" diff --git a/makefile_conf/chain/musicoin.mk b/makefile_conf/chain/musicoin.mk index 46ede3997..188bebb6e 100644 --- a/makefile_conf/chain/musicoin.mk +++ b/makefile_conf/chain/musicoin.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/184'" -DEFINES += CHAINID_UPCASE=\"MUSICOIN\" CHAINID_COINNAME=\"MUSIC\" CHAIN_KIND=CHAIN_KIND_MUSICOIN CHAIN_ID=7762959 +TICKER = "MUSIC" +CHAIN_ID = 7762959 APPNAME = "Musicoin" \ No newline at end of file diff --git a/makefile_conf/chain/oasys.mk b/makefile_conf/chain/oasys.mk index 0e2dc183d..7fc384faf 100644 --- a/makefile_conf/chain/oasys.mk +++ b/makefile_conf/chain/oasys.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/685'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"OASYS\" CHAINID_COINNAME=\"OAS\" CHAIN_KIND=CHAIN_KIND_OASYS CHAIN_ID=248 +TICKER = "OAS" +CHAIN_ID = 248 APPNAME = "Oasys" diff --git a/makefile_conf/chain/okc.mk b/makefile_conf/chain/okc.mk index d520276d4..6ed8042b3 100644 --- a/makefile_conf/chain/okc.mk +++ b/makefile_conf/chain/okc.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"OKC\" CHAINID_COINNAME=\"OKT\" CHAIN_KIND=CHAIN_KIND_OKC CHAIN_ID=66 +TICKER = "OKT" +CHAIN_ID = 66 APPNAME = "OKXChain" \ No newline at end of file diff --git a/makefile_conf/chain/pirl.mk b/makefile_conf/chain/pirl.mk index e4a73e497..3f30261cb 100644 --- a/makefile_conf/chain/pirl.mk +++ b/makefile_conf/chain/pirl.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/164'" -DEFINES += CHAINID_UPCASE=\"PIRL\" CHAINID_COINNAME=\"PIRL\" CHAIN_KIND=CHAIN_KIND_PIRL CHAIN_ID=3125659152 +TICKER = "PIRL" +CHAIN_ID = 3125659152 APPNAME = "Pirl" \ No newline at end of file diff --git a/makefile_conf/chain/poa.mk b/makefile_conf/chain/poa.mk index 6526b2b7d..c415c2640 100644 --- a/makefile_conf/chain/poa.mk +++ b/makefile_conf/chain/poa.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"POA\" CHAINID_COINNAME=\"POA\" CHAIN_KIND=CHAIN_KIND_POA CHAIN_ID=99 +TICKER = "POA" +CHAIN_ID = 99 APPNAME = "POA" \ No newline at end of file diff --git a/makefile_conf/chain/polygon.mk b/makefile_conf/chain/polygon.mk index c6f6e0f96..9bdf2dc60 100644 --- a/makefile_conf/chain/polygon.mk +++ b/makefile_conf/chain/polygon.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"POLYGON\" CHAINID_COINNAME=\"MATIC\" CHAIN_KIND=CHAIN_KIND_POLYGON CHAIN_ID=137 +TICKER = "MATIC" +CHAIN_ID = 137 APPNAME = "Polygon" \ No newline at end of file diff --git a/makefile_conf/chain/reosc.mk b/makefile_conf/chain/reosc.mk index 256d37fe2..9f9cedfbd 100644 --- a/makefile_conf/chain/reosc.mk +++ b/makefile_conf/chain/reosc.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/2894'" -DEFINES += CHAINID_UPCASE=\"REOSC\" CHAINID_COINNAME=\"REOSC\" CHAIN_KIND=CHAIN_KIND_REOSC CHAIN_ID=2894 +TICKER = "REOSC" +CHAIN_ID = 2894 APPNAME = "REOSC" \ No newline at end of file diff --git a/makefile_conf/chain/ropsten.mk b/makefile_conf/chain/ropsten.mk index 384d18b9e..d3415ad9e 100644 --- a/makefile_conf/chain/ropsten.mk +++ b/makefile_conf/chain/ropsten.mk @@ -1,5 +1,6 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"ETHEREUM\" CHAINID_COINNAME=\"ETH\" CHAIN_KIND=CHAIN_KIND_ETHEREUM CHAIN_ID=3 +TICKER = "ETH" +CHAIN_ID = 3 # Starkware integration APP_LOAD_PARAMS += --path "2645'/579218131'" DEFINES += HAVE_STARKWARE diff --git a/makefile_conf/chain/rsk.mk b/makefile_conf/chain/rsk.mk index 33df17ba6..dad8f56fb 100644 --- a/makefile_conf/chain/rsk.mk +++ b/makefile_conf/chain/rsk.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/137'" --path "44'/00'" -DEFINES += CHAINID_UPCASE=\"RSK\" CHAINID_COINNAME=\"RBTC\" CHAIN_KIND=CHAIN_KIND_RSK CHAIN_ID=30 +TICKER = "RBTC" +CHAIN_ID = 30 APPNAME = "RSK" \ No newline at end of file diff --git a/makefile_conf/chain/rsk_testnet.mk b/makefile_conf/chain/rsk_testnet.mk index 76fe1ecd4..2142f7cdf 100644 --- a/makefile_conf/chain/rsk_testnet.mk +++ b/makefile_conf/chain/rsk_testnet.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/37310'" -DEFINES += CHAINID_UPCASE=\"RSKTESTNET\" CHAINID_COINNAME=\"RBTC\" CHAIN_KIND=CHAIN_KIND_RSK CHAIN_ID=31 +TICKER = "RBTC" +CHAIN_ID = 31 APPNAME = "RSK Test" \ No newline at end of file diff --git a/makefile_conf/chain/shiden.mk b/makefile_conf/chain/shiden.mk index 1a561f1eb..bda1c9d74 100644 --- a/makefile_conf/chain/shiden.mk +++ b/makefile_conf/chain/shiden.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/809'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"SHIDEN\" CHAINID_COINNAME=\"SDN\" CHAIN_KIND=CHAIN_KIND_SHIDEN CHAIN_ID=336 +TICKER = "SDN" +CHAIN_ID = 336 APPNAME = "Shiden EVM" diff --git a/makefile_conf/chain/shyft.mk b/makefile_conf/chain/shyft.mk index c30ec7f61..b578933a6 100644 --- a/makefile_conf/chain/shyft.mk +++ b/makefile_conf/chain/shyft.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"SHYFT\" CHAINID_COINNAME=\"SHFT\" CHAIN_KIND=CHAIN_KIND_SHYFT CHAIN_ID=7341 +TICKER = "SHFT" +CHAIN_ID = 7341 APPNAME = "Shyft" \ No newline at end of file diff --git a/makefile_conf/chain/songbird.mk b/makefile_conf/chain/songbird.mk index c2c1e7bfb..bc11a41a7 100644 --- a/makefile_conf/chain/songbird.mk +++ b/makefile_conf/chain/songbird.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/554'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"SONGBIRD\" CHAINID_COINNAME=\"SGB\" CHAIN_KIND=CHAIN_KIND_SONGBIRD CHAIN_ID=19 +TICKER = "SGB" +CHAIN_ID = 19 APPNAME = "Songbird" \ No newline at end of file diff --git a/makefile_conf/chain/tecracoin.mk b/makefile_conf/chain/tecracoin.mk index e51df374a..eabc8261f 100644 --- a/makefile_conf/chain/tecracoin.mk +++ b/makefile_conf/chain/tecracoin.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/554'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"TECRA\" CHAINID_COINNAME=\"TCR\" CHAIN_KIND=CHAIN_KIND_TECRA CHAIN_ID=20531812 +TICKER = "TCR" +CHAIN_ID = 20531812 APPNAME = "TecraCoin" \ No newline at end of file diff --git a/makefile_conf/chain/tecratestnet.mk b/makefile_conf/chain/tecratestnet.mk index 8091b8967..d97ab8198 100644 --- a/makefile_conf/chain/tecratestnet.mk +++ b/makefile_conf/chain/tecratestnet.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/554'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"TECRATESTNET\" CHAINID_COINNAME=\"TCR\" CHAIN_KIND=CHAIN_KIND_TECRA CHAIN_ID=20531811 +TICKER = "TCR" +CHAIN_ID = 20531811 APPNAME = "TecraTestnet" \ No newline at end of file diff --git a/makefile_conf/chain/thundercore.mk b/makefile_conf/chain/thundercore.mk index 7676978a4..a7a4dddd3 100644 --- a/makefile_conf/chain/thundercore.mk +++ b/makefile_conf/chain/thundercore.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/1001'" -DEFINES += CHAINID_UPCASE=\"THUNDERCORE\" CHAINID_COINNAME=\"TT\" CHAIN_KIND=CHAIN_KIND_THUNDERCORE CHAIN_ID=108 +TICKER = "TT" +CHAIN_ID = 108 APPNAME = "ThunderCore" \ No newline at end of file diff --git a/makefile_conf/chain/tomochain.mk b/makefile_conf/chain/tomochain.mk index b0cb90ce9..953830836 100644 --- a/makefile_conf/chain/tomochain.mk +++ b/makefile_conf/chain/tomochain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/889'" -DEFINES += CHAINID_UPCASE=\"TOMOCHAIN\" CHAINID_COINNAME=\"TOMO\" CHAIN_KIND=CHAIN_KIND_TOMOCHAIN CHAIN_ID=88 +TICKER = "TOMO" +CHAIN_ID = 88 APPNAME = "TomoChain" \ No newline at end of file diff --git a/makefile_conf/chain/ubiq.mk b/makefile_conf/chain/ubiq.mk index fe86d7f7b..62a4ba127 100644 --- a/makefile_conf/chain/ubiq.mk +++ b/makefile_conf/chain/ubiq.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/108'" -DEFINES += CHAINID_UPCASE=\"UBIQ\" CHAINID_COINNAME=\"UBQ\" CHAIN_KIND=CHAIN_KIND_UBIQ CHAIN_ID=8 +TICKER = "UBQ" +CHAIN_ID = 8 APPNAME = "Ubiq" \ No newline at end of file diff --git a/makefile_conf/chain/volta.mk b/makefile_conf/chain/volta.mk index e30ca2d26..28f7c5610 100644 --- a/makefile_conf/chain/volta.mk +++ b/makefile_conf/chain/volta.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/73799'" --path "44'/60'" -DEFINES += CHAINID_UPCASE=\"VOLTA\" CHAINID_COINNAME=\"VOLTA\" CHAIN_KIND=CHAIN_KIND_VOLTA CHAIN_ID=73799 +TICKER = "VOLTA" +CHAIN_ID = 73799 APPNAME = "Volta" \ No newline at end of file diff --git a/makefile_conf/chain/wanchain.mk b/makefile_conf/chain/wanchain.mk index cfe84437a..66b6d82da 100644 --- a/makefile_conf/chain/wanchain.mk +++ b/makefile_conf/chain/wanchain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/5718350'" -DEFINES += CHAINID_UPCASE=\"WAN\" CHAINID_COINNAME=\"WAN\" CHAIN_KIND=CHAIN_KIND_WANCHAIN CHAIN_ID=888 +TICKER = "WAN" +CHAIN_ID = 888 APPNAME = "Wanchain" diff --git a/makefile_conf/chain/webchain.mk b/makefile_conf/chain/webchain.mk index f81d5b8a0..3a7da247c 100644 --- a/makefile_conf/chain/webchain.mk +++ b/makefile_conf/chain/webchain.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/227'" -DEFINES += CHAINID_UPCASE=\"WEBCHAIN\" CHAINID_COINNAME=\"WEB\" CHAIN_KIND=CHAIN_KIND_WEBCHAIN CHAIN_ID=24484 +TICKER = "WEB" +CHAIN_ID = 24484 APPNAME = "Webchain" \ No newline at end of file diff --git a/makefile_conf/chain/wethio.mk b/makefile_conf/chain/wethio.mk index 06fe6f99e..fc491dffa 100644 --- a/makefile_conf/chain/wethio.mk +++ b/makefile_conf/chain/wethio.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/77777'" -DEFINES += CHAINID_UPCASE=\"WETHIO\" CHAINID_COINNAME=\"ZYN\" CHAIN_KIND=CHAIN_KIND_WETHIO CHAIN_ID=78 +TICKER = "ZYN" +CHAIN_ID = 78 APPNAME = "Wethio" \ No newline at end of file diff --git a/makefile_conf/chain/xdcnetwork.mk b/makefile_conf/chain/xdcnetwork.mk index 4be443a45..9118483ac 100644 --- a/makefile_conf/chain/xdcnetwork.mk +++ b/makefile_conf/chain/xdcnetwork.mk @@ -1,3 +1,4 @@ APP_LOAD_PARAMS += --path "44'/60'" --path "44'/550'" -DEFINES += CHAINID_UPCASE=\"XDCNETWORK\" CHAINID_COINNAME=\"XDC\" CHAIN_KIND=CHAIN_KIND_XDCNETWORK CHAIN_ID=50 +TICKER = "XDC" +CHAIN_ID = 50 APPNAME = "XDC Network" diff --git a/src/chainConfig.h b/src/chainConfig.h index 28331448a..9c5490757 100644 --- a/src/chainConfig.h +++ b/src/chainConfig.h @@ -22,63 +22,9 @@ #include "os.h" -typedef enum chain_kind_e { - CHAIN_KIND_ETHEREUM, - CHAIN_KIND_MOONRIVER, - CHAIN_KIND_ETHEREUM_CLASSIC, - CHAIN_KIND_EXPANSE, - CHAIN_KIND_POA, - CHAIN_KIND_RSK, - CHAIN_KIND_UBIQ, - CHAIN_KIND_WANCHAIN, - CHAIN_KIND_PIRL, - CHAIN_KIND_AKROMA, - CHAIN_KIND_MUSICOIN, - CHAIN_KIND_CALLISTO, - CHAIN_KIND_ETHERSOCIAL, - CHAIN_KIND_ELLAISM, - CHAIN_KIND_ETHER1, - CHAIN_KIND_ETHERGEM, - CHAIN_KIND_ATHEIOS, - CHAIN_KIND_GOCHAIN, - CHAIN_KIND_MIX, - CHAIN_KIND_REOSC, - CHAIN_KIND_HPB, - CHAIN_KIND_TOMOCHAIN, - CHAIN_KIND_DEXON, - CHAIN_KIND_VOLTA, - CHAIN_KIND_ENERGYWEBCHAIN, - CHAIN_KIND_ARTIS_SIGMA1, - CHAIN_KIND_ARTIS_TAU1, - CHAIN_KIND_WEBCHAIN, - CHAIN_KIND_THUNDERCORE, - CHAIN_KIND_FLARE, - CHAIN_KIND_BSC, - CHAIN_KIND_SONGBIRD, - CHAIN_KIND_POLYGON, - CHAIN_KIND_SHYFT, - CHAIN_KIND_CONFLUX_ESPACE, - CHAIN_KIND_MOONBEAM, - CHAIN_KIND_BTTC, - CHAIN_KIND_KARDIACHAIN, - CHAIN_KIND_WETHIO, - CHAIN_KIND_OKC, - CHAIN_KIND_CUBE, - CHAIN_KIND_SHIDEN, - CHAIN_KIND_ASTAR, - CHAIN_KIND_XDCNETWORK, - CHAIN_KIND_METER, - CHAIN_KIND_MULTIVAC, - CHAIN_KIND_TECRA, - CHAIN_KIND_APOTHEMNETWORK, - CHAIN_KIND_ID4GOOD, - CHAIN_KIND_OASYS -} chain_kind_t; - typedef struct chain_config_s { char coinName[10]; // ticker uint64_t chainId; - chain_kind_t kind; } chain_config_t; #define ETHEREUM_MAINNET_CHAINID 1 diff --git a/src/main.c b/src/main.c index d5aa2deb7..9ff804105 100644 --- a/src/main.c +++ b/src/main.c @@ -145,319 +145,6 @@ unsigned short io_exchange_al(unsigned char channel, unsigned short tx_len) { extraInfo_t *getKnownToken(uint8_t *contractAddress) { union extraInfo_t *currentItem = NULL; -#ifdef HAVE_TOKENS_LIST - uint32_t numTokens = 0; - uint32_t i; - switch (chainConfig->kind) { - case CHAIN_KIND_AKROMA: - numTokens = NUM_TOKENS_AKROMA; - break; - case CHAIN_KIND_ETHEREUM: - numTokens = NUM_TOKENS_ETHEREUM; - break; - case CHAIN_KIND_ETHEREUM_CLASSIC: - numTokens = NUM_TOKENS_ETHEREUM_CLASSIC; - break; - case CHAIN_KIND_PIRL: - numTokens = NUM_TOKENS_PIRL; - break; - case CHAIN_KIND_POA: - numTokens = NUM_TOKENS_POA; - break; - case CHAIN_KIND_ARTIS_SIGMA1: - numTokens = NUM_TOKENS_ARTIS_SIGMA1; - break; - case CHAIN_KIND_ARTIS_TAU1: - numTokens = NUM_TOKENS_ARTIS_TAU1; - break; - case CHAIN_KIND_RSK: - numTokens = NUM_TOKENS_RSK; - break; - case CHAIN_KIND_EXPANSE: - numTokens = NUM_TOKENS_EXPANSE; - break; - case CHAIN_KIND_UBIQ: - numTokens = NUM_TOKENS_UBIQ; - break; - case CHAIN_KIND_WANCHAIN: - numTokens = NUM_TOKENS_WANCHAIN; - break; - case CHAIN_KIND_MUSICOIN: - numTokens = NUM_TOKENS_MUSICOIN; - break; - case CHAIN_KIND_CALLISTO: - numTokens = NUM_TOKENS_CALLISTO; - break; - case CHAIN_KIND_ETHERSOCIAL: - numTokens = NUM_TOKENS_ETHERSOCIAL; - break; - case CHAIN_KIND_ELLAISM: - numTokens = NUM_TOKENS_ELLAISM; - break; - case CHAIN_KIND_ETHER1: - numTokens = NUM_TOKENS_ETHER1; - break; - case CHAIN_KIND_ETHERGEM: - numTokens = NUM_TOKENS_ETHERGEM; - break; - case CHAIN_KIND_ATHEIOS: - numTokens = NUM_TOKENS_ATHEIOS; - break; - case CHAIN_KIND_GOCHAIN: - numTokens = NUM_TOKENS_GOCHAIN; - break; - case CHAIN_KIND_MIX: - numTokens = NUM_TOKENS_MIX; - break; - case CHAIN_KIND_REOSC: - numTokens = NUM_TOKENS_REOSC; - break; - case CHAIN_KIND_HPB: - numTokens = NUM_TOKENS_HPB; - break; - case CHAIN_KIND_TOMOCHAIN: - numTokens = NUM_TOKENS_TOMOCHAIN; - break; - case CHAIN_KIND_MOONRIVER: - numTokens = NUM_TOKENS_MOONRIVER; - break; - case CHAIN_KIND_DEXON: - numTokens = NUM_TOKENS_DEXON; - break; - case CHAIN_KIND_VOLTA: - numTokens = NUM_TOKENS_VOLTA; - break; - case CHAIN_KIND_ENERGYWEBCHAIN: - numTokens = NUM_TOKENS_ENERGYWEBCHAIN; - break; - case CHAIN_KIND_WEBCHAIN: - numTokens = NUM_TOKENS_WEBCHAIN; - break; - case CHAIN_KIND_THUNDERCORE: - numTokens = NUM_TOKENS_THUNDERCORE; - break; - case CHAIN_KIND_FLARE: - numTokens = NUM_TOKENS_FLARE; - break; - case CHAIN_KIND_BSC: - numTokens = NUM_TOKENS_BSC; - break; - case CHAIN_KIND_SONGBIRD: - numTokens = NUM_TOKENS_SONGBIRD; - break; - case CHAIN_KIND_POLYGON: - numTokens = NUM_TOKENS_POLYGON; - break; - case CHAIN_KIND_SHYFT: - numTokens = NUM_TOKENS_SHYFT; - break; - case CHAIN_KIND_CONFLUX_ESPACE: - numTokens = NUM_TOKENS_CONFLUX_ESPACE; - break; - case CHAIN_KIND_MOONBEAM: - numTokens = NUM_TOKENS_MOONBEAM; - break; - case CHAIN_KIND_KARDIACHAIN: - numTokens = NUM_TOKENS_KARDIACHAIN; - break; - case CHAIN_KIND_BTTC: - numTokens = NUM_TOKENS_BTTC; - break; - case CHAIN_KIND_WETHIO: - numTokens = NUM_TOKENS_WETHIO; - break; - case CHAIN_KIND_OKC: - numTokens = NUM_TOKENS_OKC; - break; - case CHAIN_KIND_CUBE: - numTokens = NUM_TOKENS_CUBE; - break; - case CHAIN_KIND_SHIDEN: - numTokens = NUM_TOKENS_SHIDEN; - break; - case CHAIN_KIND_ASTAR: - numTokens = NUM_TOKENS_ASTAR; - break; - case CHAIN_KIND_XDCNETWORK: - numTokens = NUM_TOKENS_XDCNETWORK; - break; - case CHAIN_KIND_METER: - numTokens = NUM_TOKENS_METER; - break; - case CHAIN_KIND_MULTIVAC: - numTokens = NUM_TOKENS_MULTIVAC; - break; - case CHAIN_KIND_TECRA: - numTokens = NUM_TOKENS_TECRA; - break; - case CHAIN_KIND_APOTHEMNETWORK: - numTokens = NUM_TOKENS_APOTHEMNETWORK; - break; - case CHAIN_KIND_ID4GOOD: - numTokens = NUM_TOKENS_ID4GOOD; - break; - case CHAIN_KIND_OASYS: - numTokens = NUM_TOKENS_OASYS; - break; - } - for (i = 0; i < numTokens; i++) { - switch (chainConfig->kind) { - case CHAIN_KIND_AKROMA: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_AKROMA[i]); - break; - case CHAIN_KIND_ETHEREUM: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ETHEREUM[i]); - break; - case CHAIN_KIND_ETHEREUM_CLASSIC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ETHEREUM_CLASSIC[i]); - break; - case CHAIN_KIND_PIRL: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_PIRL[i]); - break; - case CHAIN_KIND_POA: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_POA[i]); - break; - case CHAIN_KIND_ARTIS_SIGMA1: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ARTIS_SIGMA1[i]); - break; - case CHAIN_KIND_ARTIS_TAU1: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ARTIS_TAU1[i]); - break; - case CHAIN_KIND_RSK: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_RSK[i]); - break; - case CHAIN_KIND_EXPANSE: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_EXPANSE[i]); - break; - case CHAIN_KIND_UBIQ: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_UBIQ[i]); - break; - case CHAIN_KIND_WANCHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_WANCHAIN[i]); - break; - case CHAIN_KIND_MUSICOIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_MUSICOIN[i]); - break; - case CHAIN_KIND_CALLISTO: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_CALLISTO[i]); - break; - case CHAIN_KIND_ETHERSOCIAL: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ETHERSOCIAL[i]); - break; - case CHAIN_KIND_ELLAISM: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ELLAISM[i]); - break; - case CHAIN_KIND_ETHER1: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ETHER1[i]); - break; - case CHAIN_KIND_ETHERGEM: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ETHERGEM[i]); - break; - case CHAIN_KIND_ATHEIOS: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ATHEIOS[i]); - break; - case CHAIN_KIND_GOCHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_GOCHAIN[i]); - break; - case CHAIN_KIND_MIX: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_MIX[i]); - break; - case CHAIN_KIND_REOSC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_REOSC[i]); - break; - case CHAIN_KIND_HPB: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_HPB[i]); - break; - case CHAIN_KIND_TOMOCHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_TOMOCHAIN[i]); - break; - case CHAIN_KIND_MOONRIVER: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_MOONRIVER[i]); - break; - case CHAIN_KIND_DEXON: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_DEXON[i]); - break; - case CHAIN_KIND_VOLTA: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_VOLTA[i]); - break; - case CHAIN_KIND_ENERGYWEBCHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ENERGYWEBCHAIN[i]); - break; - case CHAIN_KIND_WEBCHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_WEBCHAIN[i]); - break; - case CHAIN_KIND_THUNDERCORE: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_THUNDERCORE[i]); - break; - case CHAIN_KIND_FLARE: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_FLARE[i]); - break; - case CHAIN_KIND_BSC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_BSC[i]); - break; - case CHAIN_KIND_SONGBIRD: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_SONGBIRD[i]); - break; - case CHAIN_KIND_POLYGON: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_POLYGON[i]); - break; - case CHAIN_KIND_SHYFT: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_SHYFT[i]); - break; - case CHAIN_KIND_CONFLUX_ESPACE: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_CONFLUX_ESPACE[i]); - break; - case CHAIN_KIND_MOONBEAM: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_MOONBEAM[i]); - break; - case CHAIN_KIND_BTTC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_BTTC[i]); - break; - case CHAIN_KIND_KARDIACHAIN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_KARDIACHAIN[i]); - break; - case CHAIN_KIND_WETHIO: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_WETHIO[i]); - break; - case CHAIN_KIND_OKC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_OKC[i]); - break; - case CHAIN_KIND_CUBE: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_CUBE[i]); - break; - case CHAIN_KIND_SHIDEN: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_SHIDEN[i]); - break; - case CHAIN_KIND_ASTAR: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ASTAR[i]); - break; - case CHAIN_KIND_XDCNETWORK: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_XDCNETWORK[i]); - break; - case CHAIN_KIND_METER: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_METER[i]); - break; - case CHAIN_KIND_MULTIVAC: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_MULTIVAC[i]); - break; - case CHAIN_KIND_TECRA: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_TECRA[i]); - break; - case CHAIN_KIND_APOTHEMNETWORK: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_APOTHEMNETWORK[i]); - break; - case CHAIN_KIND_ID4GOOD: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_ID4GOOD[i]); - break; - case CHAIN_KIND_OASYS: - currentToken = (tokenDefinition_t *) PIC(&TOKENS_OASYS[i]); - break; - } - if (memcmp(currentToken->address, tmpContent.txContent.destination, ADDRESS_LENGTH) == 0) { - return currentToken; - } - } -#endif // Works for ERC-20 & NFT tokens since both structs in the union have the // contract address aligned for (uint8_t i = 0; i < MAX_ITEMS; i++) { @@ -938,7 +625,6 @@ void init_coin_config(chain_config_t *coin_config) { memset(coin_config, 0, sizeof(chain_config_t)); strcpy(coin_config->coinName, CHAINID_COINNAME); coin_config->chainId = CHAIN_ID; - coin_config->kind = CHAIN_KIND; } void coin_main(libargs_t *args) { diff --git a/src/tokens.c b/src/tokens.c index dd597e489..a750d9f08 100644 --- a/src/tokens.c +++ b/src/tokens.c @@ -59,165 +59,3 @@ const tokenDefinition_t TOKENS_EXTRA[NUM_TOKENS_EXTRA] = { }; #endif - -#ifdef HAVE_TOKENS_LIST - -#include "tokens.h" - -// Example of custom tokens (not actually used by the main ethereum app). -// Format of a token is: `{address, ticker, decimals}`. -const tokenDefinition_t const TOKENS_ETHEREUM[NUM_TOKENS_ETHEREUM] = { - {{0xdb, 0x25, 0xf2, 0x11, 0xab, 0x05, 0xb1, 0xc9, 0x7d, 0x59, - 0x55, 0x16, 0xf4, 0x57, 0x94, 0x52, 0x8a, 0x80, 0x7a, 0xd8}, - "EURS", - 2}, - {{0xa7, 0x44, 0x76, 0x44, 0x31, 0x19, 0xA9, 0x42, 0xdE, 0x49, - 0x85, 0x90, 0xFe, 0x1f, 0x24, 0x54, 0xd7, 0xD4, 0xaC, 0x0d}, - "GNT", - 18}, -}; - -const tokenDefinition_t const TOKENS_AKROMA[NUM_TOKENS_AKROMA] = {}; - -const tokenDefinition_t const TOKENS_ELLAISM[NUM_TOKENS_ELLAISM] = { - {{0x99, 0x1e, 0x7f, 0xe4, 0xb0, 0x5f, 0x2b, 0x3d, 0xb1, 0xd7, - 0x88, 0xe7, 0x05, 0x96, 0x3f, 0x5d, 0x64, 0x7b, 0x00, 0x44}, - "MINING", - 18}, -}; - -const tokenDefinition_t const TOKENS_ETHEREUM_CLASSIC[NUM_TOKENS_ETHEREUM_CLASSIC] = { - {{0x6F, 0x6D, 0xEb, 0x5d, 0xb0, 0xC4, 0x99, 0x4A, 0x82, 0x83, - 0xA0, 0x1D, 0x6C, 0xFe, 0xEB, 0x27, 0xFc, 0x3b, 0xBe, 0x9C}, - "Smart", - 0}, - {{0x08, 0x5f, 0xb4, 0xf2, 0x40, 0x31, 0xea, 0xed, 0xbc, 0x2b, - 0x61, 0x1a, 0xa5, 0x28, 0xf2, 0x23, 0x43, 0xeb, 0x52, 0xdb}, - "BEC", - 8}, - {{0x5a, 0xce, 0x17, 0xf8, 0x7c, 0x73, 0x91, 0xe5, 0x79, 0x2a, - 0x76, 0x83, 0x06, 0x9a, 0x80, 0x25, 0xb8, 0x3b, 0xbd, 0x85}, - "PLAY", - 0}, - {{0x6A, 0xDa, 0x6F, 0x48, 0xC8, 0x15, 0x68, 0x95, 0x02, 0xC4, - 0x3e, 0xC1, 0xa5, 0x9F, 0x1b, 0x5D, 0xD3, 0xC0, 0x4E, 0x1F}, - "UNV", - 18}, -}; - -const tokenDefinition_t const TOKENS_ETHERSOCIAL[NUM_TOKENS_ETHERSOCIAL] = {}; - -const tokenDefinition_t const TOKENS_ETHER1[NUM_TOKENS_ETHER1] = {}; - -const tokenDefinition_t const TOKENS_PIRL[NUM_TOKENS_PIRL] = {}; - -const tokenDefinition_t const TOKENS_POA[NUM_TOKENS_POA] = {}; - -const tokenDefinition_t const TOKENS_RSK[NUM_TOKENS_RSK] = {}; - -const tokenDefinition_t const TOKENS_UBIQ[NUM_TOKENS_UBIQ] = { - {{0xd2, 0x45, 0x20, 0x7c, 0xfb, 0xf6, 0xeb, 0x6f, 0x34, 0x97, - 0x0d, 0xb2, 0xa8, 0x07, 0xab, 0x1d, 0x17, 0x8f, 0xde, 0x6c}, - "APX", - 8}, - {{0xff, 0x3b, 0xf0, 0x57, 0xad, 0xf3, 0xb0, 0xe0, 0x15, 0xb6, - 0x46, 0x53, 0x31, 0xa6, 0x23, 0x6e, 0x55, 0x68, 0x82, 0x74}, - "BEER", - 0}, - {{0x08, 0x53, 0x3d, 0x6a, 0x06, 0xce, 0x36, 0x52, 0x98, 0xb1, - 0x2e, 0xf9, 0x2e, 0xb4, 0x07, 0xcb, 0xa8, 0xaa, 0x82, 0x73}, - "CEFS", - 8}, - {{0x94, 0xad, 0x7e, 0x41, 0xc1, 0xd4, 0x40, 0x22, 0xc4, 0xf4, - 0x7c, 0xb1, 0xba, 0x01, 0x9f, 0xd1, 0xa0, 0x22, 0xc5, 0x36}, - "DOT", - 8}, - {{0x4b, 0x48, 0x99, 0xa1, 0x0f, 0x3e, 0x50, 0x7d, 0xb2, 0x07, - 0xb0, 0xee, 0x24, 0x26, 0x02, 0x9e, 0xfa, 0x16, 0x8a, 0x67}, - "QWARK", - 8}, - {{0x5e, 0x17, 0x15, 0xbb, 0x79, 0x80, 0x5b, 0xd6, 0x72, 0x72, - 0x97, 0x60, 0xb3, 0xf7, 0xf3, 0x4d, 0x6f, 0x48, 0x50, 0x98}, - "RICKS", - 8}, -}; - -const tokenDefinition_t const TOKENS_EXPANSE[NUM_TOKENS_EXPANSE] = {}; - -const tokenDefinition_t const TOKENS_WANCHAIN[NUM_TOKENS_WANCHAIN] = {}; - -const tokenDefinition_t const TOKENS_MUSICOIN[NUM_TOKENS_MUSICOIN] = {}; - -const tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO] = {}; - -const tokenDefinition_t const TOKENS_ETHERGEM[NUM_TOKENS_ETHERGEM] = {}; - -const tokenDefinition_t const TOKENS_ATHEIOS[NUM_TOKENS_ATHEIOS] = {}; - -const tokenDefinition_t const TOKENS_GOCHAIN[NUM_TOKENS_GOCHAIN] = {}; - -const tokenDefinition_t const TOKENS_MIX[NUM_TOKENS_MIX] = {}; - -const tokenDefinition_t const TOKENS_REOSC[NUM_TOKENS_REOSC] = {}; - -const tokenDefinition_t const TOKENS_HPB[NUM_TOKENS_HPB] = {}; - -const tokenDefinition_t const TOKENS_TOMOCHAIN[NUM_TOKENS_TOMOCHAIN] = {}; - -const tokenDefinition_t const TOKENS_DEXON[NUM_TOKENS_DEXON] = {}; - -const tokenDefinition_t const TOKENS_VOLTA[NUM_TOKENS_VOLTA] = {}; - -const tokenDefinition_t const TOKENS_ENERGYWEBCHAIN[NUM_TOKENS_ENERGYWEBCHAIN] = {}; - -const tokenDefinition_t const TOKENS_ARTIS_SIGMA1[NUM_TOKENS_ARTIS_SIGMA1] = {}; - -const tokenDefinition_t const TOKENS_ARTIS_TAU1[NUM_TOKENS_ARTIS_TAU1] = {}; - -const tokenDefinition_t const TOKENS_WEBCHAIN[NUM_TOKENS_WEBCHAIN] = {}; - -const tokenDefinition_t const TOKENS_THUNDERCORE[NUM_TOKENS_THUNDERCORE] = {}; - -const tokenDefinition_t const TOKENS_FLARE[NUM_TOKENS_FLARE] = {}; - -const tokenDefinition_t const TOKENS_BSC[NUM_TOKENS_BSC] = {}; - -const tokenDefinition_t const TOKENS_SONGBIRD[NUM_TOKENS_SONGBIRD] = {}; - -const tokenDefinition_t const TOKENS_MOONRIVER[NUM_TOKENS_MOONRIVER] = {}; - -const tokenDefinition_t const TOKENS_POLYGON[NUM_TOKENS_POLYGON] = {}; - -const tokenDefinition_t const TOKENS_SHYFT[NUM_TOKENS_SHYFT] = {}; - -const tokenDefinition_t const TOKENS_CONFLUX_ESPACE[NUM_TOKENS_CONFLUX_ESPACE] = {}; - -const tokenDefinition_t const TOKENS_MOONBEAM[NUM_TOKENS_MOONBEAM] = {}; - -const tokenDefinition_t const TOKENS_BTTC[NUM_TOKENS_BTTC] = {}; - -const tokenDefinition_t const TOKENS_KARDIACHAIN[NUM_TOKENS_KARDIACHAIN] = {}; - -const tokenDefinition_t const TOKENS_WETHIO[NUM_TOKENS_WETHIO] = {}; - -const tokenDefinition_t const TOKENS_OKC[NUM_TOKENS_OKC] = {}; - -const tokenDefinition_t const TOKENS_CUBE[NUM_TOKENS_CUBE] = {}; - -const tokenDefinition_t const TOKENS_ASTAR[NUM_TOKENS_ASTAR] = {}; - -const tokenDefinition_t const TOKENS_SHIDEN[NUM_TOKENS_SHIDEN] = {}; - -const tokenDefinition_t const TOKENS_XDCNETWORK[NUM_TOKENS_XDCNETWORK] = {}; - -const tokenDefinition_t const TOKENS_METER[NUM_TOKENS_METER] = {}; - -const tokenDefinition_t const TOKENS_MULTIVAC[NUM_TOKENS_MULTIVAC] = {}; - -const tokenDefinition_t const TOKENS_TECRA[NUM_TOKENS_TECRA] = {}; - -const tokenDefinition_t const TOKENS_APOTHEMNETWORK[NUM_TOKENS_APOTHEMNETWORK] = {}; - -const tokenDefinition_t const TOKENS_OASYS[NUM_TOKENS_OASYS] = {}; - -#endif diff --git a/src/tokens.h b/src/tokens.h index 7851ea50d..9ffab3a43 100644 --- a/src/tokens.h +++ b/src/tokens.h @@ -41,8 +41,6 @@ extern tokenDefinition_t const TOKENS_EXTRA[NUM_TOKENS_EXTRA]; #endif -#ifndef HAVE_TOKENS_LIST - static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { #if defined(HAVE_CAL_TEST_KEY) 0x04, 0x4c, 0xca, 0x8f, 0xad, 0x49, 0x6a, 0xa5, 0x04, 0x0a, 0x00, 0xa7, 0xeb, 0x2f, @@ -67,109 +65,4 @@ static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { #endif }; -#else - -// These defines need to follow tokens.c - -#define NUM_TOKENS_AKROMA 0 -#define NUM_TOKENS_ELLAISM 1 -#define NUM_TOKENS_ETHEREUM 2 -#define NUM_TOKENS_ETHEREUM_CLASSIC 4 -#define NUM_TOKENS_ETHERSOCIAL 0 -#define NUM_TOKENS_ETHER1 0 -#define NUM_TOKENS_PIRL 0 -#define NUM_TOKENS_POA 0 -#define NUM_TOKENS_RSK 0 -#define NUM_TOKENS_UBIQ 6 -#define NUM_TOKENS_EXPANSE 0 -#define NUM_TOKENS_WANCHAIN 0 -#define NUM_TOKENS_MUSICOIN 0 -#define NUM_TOKENS_CALLISTO 0 -#define NUM_TOKENS_ETHERGEM 0 -#define NUM_TOKENS_ATHEIOS 0 -#define NUM_TOKENS_GOCHAIN 0 -#define NUM_TOKENS_MIX 0 -#define NUM_TOKENS_REOSC 0 -#define NUM_TOKENS_HPB 0 -#define NUM_TOKENS_TOMOCHAIN 0 -#define NUM_TOKENS_DEXON 0 -#define NUM_TOKENS_VOLTA 0 -#define NUM_TOKENS_ENERGYWEBCHAIN 0 -#define NUM_TOKENS_ARTIS_SIGMA1 0 -#define NUM_TOKENS_ARTIS_TAU1 0 -#define NUM_TOKENS_WEBCHAIN 0 -#define NUM_TOKENS_THUNDERCORE 0 -#define NUM_TOKENS_FLARE 0 -#define NUM_TOKENS_BSC 0 -#define NUM_TOKENS_SONGBIRD 0 -#define NUM_TOKENS_MOONRIVER 0 -#define NUM_TOKENS_POLYGON 0 -#define NUM_TOKENS_SHYFT 0 -#define NUM_TOKENS_CONFLUX_ESPACE 0 -#define NUM_TOKENS_MOONBEAM 0 -#define NUM_TOKENS_BTTC 0 -#define NUM_TOKENS_KARDIACHAIN 0 -#define NUM_TOKENS_WETHIO 0 -#define NUM_TOKENS_OKC 0 -#define NUM_TOKENS_CUBE 0 -#define NUM_TOKENS_ASTAR 0 -#define NUM_TOKENS_SHIDEN 0 -#define NUM_TOKENS_XDCNETWORK 0 -#define NUM_TOKENS_METER 0 -#define NUM_TOKENS_MULTIVAC 0 -#define NUM_TOKENS_TECRA 0 -#define NUM_TOKENS_APOTHEMNETWORK 0 -#define NUM_TOKENS_OASYS 0 - -extern tokenDefinition_t const TOKENS_AKROMA[NUM_TOKENS_AKROMA]; -extern tokenDefinition_t const TOKENS_ELLAISM[NUM_TOKENS_ELLAISM]; -extern tokenDefinition_t const TOKENS_ETHEREUM[NUM_TOKENS_ETHEREUM]; -extern tokenDefinition_t const TOKENS_ETHEREUM_CLASSIC[NUM_TOKENS_ETHEREUM_CLASSIC]; -extern tokenDefinition_t const TOKENS_ETHERSOCIAL[NUM_TOKENS_ETHERSOCIAL]; -extern tokenDefinition_t const TOKENS_ETHER1[NUM_TOKENS_ETHER1]; -extern tokenDefinition_t const TOKENS_PIRL[NUM_TOKENS_PIRL]; -extern tokenDefinition_t const TOKENS_POA[NUM_TOKENS_POA]; -extern tokenDefinition_t const TOKENS_RSK[NUM_TOKENS_RSK]; -extern tokenDefinition_t const TOKENS_UBIQ[NUM_TOKENS_UBIQ]; -extern tokenDefinition_t const TOKENS_EXPANSE[NUM_TOKENS_EXPANSE]; -extern tokenDefinition_t const TOKENS_WANCHAIN[NUM_TOKENS_WANCHAIN]; -extern tokenDefinition_t const TOKENS_MUSICOIN[NUM_TOKENS_MUSICOIN]; -extern tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO]; -extern tokenDefinition_t const TOKENS_ETHERGEM[NUM_TOKENS_ETHERGEM]; -extern tokenDefinition_t const TOKENS_ATHEIOS[NUM_TOKENS_ATHEIOS]; -extern tokenDefinition_t const TOKENS_GOCHAIN[NUM_TOKENS_GOCHAIN]; -extern tokenDefinition_t const TOKENS_MIX[NUM_TOKENS_MIX]; -extern tokenDefinition_t const TOKENS_REOSC[NUM_TOKENS_REOSC]; -extern tokenDefinition_t const TOKENS_HPB[NUM_TOKENS_HPB]; -extern tokenDefinition_t const TOKENS_TOMOCHAIN[NUM_TOKENS_TOMOCHAIN]; -extern tokenDefinition_t const TOKENS_DEXON[NUM_TOKENS_DEXON]; -extern tokenDefinition_t const TOKENS_VOLTA[NUM_TOKENS_VOLTA]; -extern tokenDefinition_t const TOKENS_ENERGYWEBCHAIN[NUM_TOKENS_ENERGYWEBCHAIN]; -extern tokenDefinition_t const TOKENS_ARTIS_SIGMA1[NUM_TOKENS_ARTIS_SIGMA1]; -extern tokenDefinition_t const TOKENS_ARTIS_TAU1[NUM_TOKENS_ARTIS_TAU1]; -extern tokenDefinition_t const TOKENS_WEBCHAIN[NUM_TOKENS_WEBCHAIN]; -extern tokenDefinition_t const TOKENS_THUNDERCORE[NUM_TOKENS_THUNDERCORE]; -extern tokenDefinition_t const TOKENS_FLARE[NUM_TOKENS_FLARE]; -extern tokenDefinition_t const TOKENS_BSC[NUM_TOKENS_BSC]; -extern tokenDefinition_t const TOKENS_SONGBIRD[NUM_TOKENS_SONGBIRD]; -extern tokenDefinition_t const TOKENS_MOONRIVER[NUM_TOKENS_MOONRIVER]; -extern tokenDefinition_t const TOKENS_POLYGON[NUM_TOKENS_POLYGON]; -extern tokenDefinition_t const TOKENS_SHYFT[NUM_TOKENS_SHYFT]; -extern tokenDefinition_t const TOKENS_CONFLUX_ESPACE[NUM_TOKENS_CONFLUX_ESPACE]; -extern tokenDefinition_t const TOKENS_MOONBEAM[NUM_TOKENS_MOONBEAM]; -extern tokenDefinition_t const TOKENS_BTTC[NUM_TOKENS_BTTC]; -extern tokenDefinition_t const TOKENS_KARDIACHAIN[NUM_TOKENS_KARDIACHAIN]; -extern tokenDefinition_t const TOKENS_WETHIO[NUM_TOKENS_WETHIO]; -extern tokenDefinition_t const TOKENS_CUBE[NUM_TOKENS_CUBE]; -extern tokenDefinition_t const TOKENS_ASTAR[NUM_TOKENS_ASTAR]; -extern tokenDefinition_t const TOKENS_SHIDEN[NUM_TOKENS_SHIDEN]; -extern tokenDefinition_t const TOKENS_XDCNETWORK[NUM_TOKENS_XDCNETWORK]; -extern tokenDefinition_t const TOKENS_METER[NUM_TOKENS_METER]; -extern tokenDefinition_t const TOKENS_MULTIVAC[NUM_TOKENS_MULTIVAC]; -extern tokenDefinition_t const TOKENS_TECRA[NUM_TOKENS_TECRA]; -extern tokenDefinition_t const TOKENS_APOTHEMNETWORK[NUM_TOKENS_APOTHEMNETWORK]; -extern tokenDefinition_t const TOKENS_OASYS[NUM_TOKENS_OASYS]; - -#endif /* HAVE_TOKENS_LIST */ - #endif // _TOKENS_H_ diff --git a/src_features/getAppConfiguration/cmd_getAppConfiguration.c b/src_features/getAppConfiguration/cmd_getAppConfiguration.c index 39489b73c..fe0130ee3 100644 --- a/src_features/getAppConfiguration/cmd_getAppConfiguration.c +++ b/src_features/getAppConfiguration/cmd_getAppConfiguration.c @@ -13,9 +13,7 @@ void handleGetAppConfiguration(uint8_t p1, UNUSED(dataLength); UNUSED(flags); G_io_apdu_buffer[0] = (N_storage.dataAllowed ? APP_FLAG_DATA_ALLOWED : 0x00); -#ifndef HAVE_TOKENS_LIST G_io_apdu_buffer[0] |= APP_FLAG_EXTERNAL_TOKEN_NEEDED; -#endif #ifdef HAVE_STARKWARE G_io_apdu_buffer[0] |= APP_FLAG_STARKWARE; G_io_apdu_buffer[0] |= APP_FLAG_STARKWARE_V2; diff --git a/src_features/signTx/cmd_signTx.c b/src_features/signTx/cmd_signTx.c index d42631b7c..0eb1d1c43 100644 --- a/src_features/signTx/cmd_signTx.c +++ b/src_features/signTx/cmd_signTx.c @@ -72,7 +72,7 @@ void handleSign(uint8_t p1, txResult = processTx(&txContext, workBuffer, dataLength, - (chainConfig->kind == CHAIN_KIND_WANCHAIN ? TX_FLAG_TYPE : 0)); + (chainConfig->chainId == 888 ? TX_FLAG_TYPE : 0)); // Wanchain exception switch (txResult) { case USTREAM_SUSPENDED: break; From eeb52344df1e48463f5d1de4b69e9e8d52eebae9 Mon Sep 17 00:00:00 2001 From: tdejoigny-ledger Date: Tue, 11 Jul 2023 17:23:49 +0200 Subject: [PATCH 030/160] ETH plugin SDK : Move some parts from plugin boilerplate to Eth plugin SDK to ease the plugins development, remove throw and fix the CI issues --- src/utils.c | 7 +-- src/utils.h | 2 +- src_common/ethUtils.c | 86 ++++++++++++++++++++++-------- src_common/ethUtils.h | 10 ++-- src_features/signTx/logic_signTx.c | 16 +++--- src_plugins_sdk/plugin_main.c | 68 +++++++++++++++++++++++ src_plugins_sdk/plugin_main.h | 19 +++++++ tools/build_sdk.py | 24 +++++++-- 8 files changed, 192 insertions(+), 40 deletions(-) create mode 100644 src_plugins_sdk/plugin_main.c create mode 100644 src_plugins_sdk/plugin_main.h diff --git a/src/utils.c b/src/utils.c index 2c553b4a8..3926bf25e 100644 --- a/src/utils.c +++ b/src/utils.c @@ -116,7 +116,7 @@ bool uint256_to_decimal(const uint8_t *value, size_t value_len, char *out, size_ return true; } -void amountToString(const uint8_t *amount, +bool amountToString(const uint8_t *amount, uint8_t amount_size, uint8_t decimals, const char *ticker, @@ -125,7 +125,7 @@ void amountToString(const uint8_t *amount, char tmp_buffer[100] = {0}; if (uint256_to_decimal(amount, amount_size, tmp_buffer, sizeof(tmp_buffer)) == false) { - THROW(EXCEPTION_OVERFLOW); + return false; } uint8_t amount_len = strnlen(tmp_buffer, sizeof(tmp_buffer)); @@ -141,10 +141,11 @@ void amountToString(const uint8_t *amount, out_buffer + ticker_len, out_buffer_size - ticker_len - 1, decimals) == false) { - THROW(EXCEPTION_OVERFLOW); + return false; } out_buffer[out_buffer_size - 1] = '\0'; + return true; } bool parse_swap_config(const uint8_t *config, uint8_t config_len, char *ticker, uint8_t *decimals) { diff --git a/src/utils.h b/src/utils.h index 504c1b139..c276b6dd2 100644 --- a/src/utils.h +++ b/src/utils.h @@ -34,7 +34,7 @@ uint64_t u64_from_BE(const uint8_t* in, uint8_t size); bool uint256_to_decimal(const uint8_t* value, size_t value_len, char* out, size_t out_len); -void amountToString(const uint8_t* amount, +bool amountToString(const uint8_t* amount, uint8_t amount_len, uint8_t decimals, const char* ticker, diff --git a/src_common/ethUtils.c b/src_common/ethUtils.c index e66e0d2e5..0eb8ca372 100644 --- a/src_common/ethUtils.c +++ b/src_common/ethUtils.c @@ -117,30 +117,59 @@ bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, b return true; } -void getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context) { +bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context) { uint8_t hashAddress[INT256_LENGTH]; - cx_keccak_init(sha3Context, 256); - cx_hash((cx_hash_t *) sha3Context, CX_LAST, publicKey->W + 1, 64, hashAddress, 32); + + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + publicKey->W + 1, + 64, + hashAddress, + 32) != CX_OK) { + return false; + } + memmove(out, hashAddress + 12, 20); + return true; } -void getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, +bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, char *out, cx_sha3_t *sha3Context, uint64_t chainId) { uint8_t hashAddress[INT256_LENGTH]; - cx_keccak_init(sha3Context, 256); - cx_hash((cx_hash_t *) sha3Context, CX_LAST, publicKey->W + 1, 64, hashAddress, 32); - getEthAddressStringFromBinary(hashAddress + 12, out, sha3Context, chainId); + + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + publicKey->W + 1, + 64, + hashAddress, + 32) != CX_OK) { + return false; + } + + if (!getEthAddressStringFromBinary(hashAddress + 12, out, sha3Context, chainId)) { + return false; + } + + return true; } -void u64_to_string(uint64_t src, char *dst, uint8_t dst_size) { +bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size) { // Copy the numbers in ASCII format. uint8_t i = 0; do { // Checking `i + 1` to make sure we have enough space for '\0'. if (i + 1 >= dst_size) { - THROW(0x6502); + return false; } dst[i] = src % 10 + '0'; src /= 10; @@ -160,9 +189,10 @@ void u64_to_string(uint64_t src, char *dst, uint8_t dst_size) { i--; j++; } + return true; } -void getEthAddressStringFromBinary(uint8_t *address, +bool getEthAddressStringFromBinary(uint8_t *address, char *out, cx_sha3_t *sha3Context, uint64_t chainId) { @@ -182,7 +212,9 @@ void getEthAddressStringFromBinary(uint8_t *address, break; } if (eip1191) { - u64_to_string(chainId, (char *) locals_union.tmp, sizeof(locals_union.tmp)); + if (!u64_to_string(chainId, (char *) locals_union.tmp, sizeof(locals_union.tmp))) { + return false; + } offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); strlcat((char *) locals_union.tmp + offset, "0x", sizeof(locals_union.tmp) - offset); offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); @@ -192,13 +224,18 @@ void getEthAddressStringFromBinary(uint8_t *address, locals_union.tmp[offset + 2 * i] = HEXDIGITS[(digit >> 4) & 0x0f]; locals_union.tmp[offset + 2 * i + 1] = HEXDIGITS[digit & 0x0f]; } - cx_keccak_init(sha3Context, 256); - cx_hash((cx_hash_t *) sha3Context, - CX_LAST, - locals_union.tmp, - offset + 40, - locals_union.hashChecksum, - 32); + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + locals_union.tmp, + offset + 40, + locals_union.hashChecksum, + 32) != CX_OK) { + return false; + } for (i = 0; i < 40; i++) { uint8_t digit = address[i / 2]; if ((i % 2) == 0) { @@ -218,24 +255,31 @@ void getEthAddressStringFromBinary(uint8_t *address, } } out[40] = '\0'; + + return true; } /* Fills the `out` buffer with the lowercase string representation of the pubkey passed in as binary format by `in`. (eg: uint8_t*:0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB -> char*:"0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB\0" ) `sha3` context doesn't have have to be initialized prior to call.*/ -void getEthDisplayableAddress(uint8_t *in, +bool getEthDisplayableAddress(uint8_t *in, char *out, size_t out_len, cx_sha3_t *sha3, uint64_t chainId) { if (out_len < 43) { strlcpy(out, "ERROR", out_len); - return; + return false; } out[0] = '0'; out[1] = 'x'; - getEthAddressStringFromBinary(in, out + 2, sha3, chainId); + if (!getEthAddressStringFromBinary(in, out + 2, sha3, chainId)) { + strlcpy(out, "ERROR", out_len); + return false; + } + + return true; } bool adjustDecimals(const char *src, diff --git a/src_common/ethUtils.h b/src_common/ethUtils.h index 870253351..294224301 100644 --- a/src_common/ethUtils.h +++ b/src_common/ethUtils.h @@ -40,21 +40,21 @@ bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, b bool rlpCanDecode(uint8_t *buffer, uint32_t bufferLength, bool *valid); -void getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context); +bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context); -void getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, +bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, char *out, cx_sha3_t *sha3Context, uint64_t chainId); -void u64_to_string(uint64_t src, char *dst, uint8_t dst_size); +bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size); -void getEthAddressStringFromBinary(uint8_t *address, +bool getEthAddressStringFromBinary(uint8_t *address, char *out, cx_sha3_t *sha3Context, uint64_t chainId); -void getEthDisplayableAddress(uint8_t *in, +bool getEthDisplayableAddress(uint8_t *in, char *out, size_t out_len, cx_sha3_t *sha3, diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index c8143a0c1..c84e9d108 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -463,12 +463,16 @@ void finalizeParsing(bool direct) { // Format the amount in a temporary buffer, if in swap case compare it with validated // amount, else commit it - amountToString(tmpContent.txContent.value.value, - tmpContent.txContent.value.length, - decimals, - ticker, - displayBuffer, - sizeof(displayBuffer)); + if (!amountToString(tmpContent.txContent.value.value, + tmpContent.txContent.value.length, + decimals, + ticker, + displayBuffer, + sizeof(displayBuffer))) { + PRINTF("OVERFLOW, amount to string failed\n"); + THROW(EXCEPTION_OVERFLOW); + } + if (G_called_from_swap) { // Ensure the values are the same that the ones that have been previously validated if (strcmp(strings.common.fullAmount, displayBuffer) != 0) { diff --git a/src_plugins_sdk/plugin_main.c b/src_plugins_sdk/plugin_main.c new file mode 100644 index 000000000..06bd3a49f --- /dev/null +++ b/src_plugins_sdk/plugin_main.c @@ -0,0 +1,68 @@ +/***************************************************************************** + * Ledger Plugins SDK. + * (c) 2023 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +// Calls the ethereum app. +void call_app_ethereum() { + unsigned int libcall_params[5]; + libcall_params[0] = (unsigned int) "Ethereum"; + libcall_params[1] = 0x100; + libcall_params[2] = RUN_APPLICATION; + libcall_params[3] = (unsigned int) NULL; +#ifdef HAVE_NBGL + caller_app_t capp; + const char name[] = APPNAME; + nbgl_icon_details_t icon_details; + uint8_t bitmap[sizeof(ICONBITMAP)]; + + memcpy(&icon_details, &ICONGLYPH, sizeof(ICONGLYPH)); + memcpy(&bitmap, &ICONBITMAP, sizeof(bitmap)); + icon_details.bitmap = (const uint8_t *) bitmap; + capp.name = (const char *) name; + capp.icon = &icon_details; + libcall_params[4] = (unsigned int) &capp; +#else + libcall_params[4] = (unsigned int) NULL; +#endif + os_lib_call((unsigned int *) &libcall_params); +} + +// Low-level main for plugins. +__attribute__((section(".boot"))) int main(int arg0) { + // Exit critical section + __asm volatile("cpsie i"); + + os_boot(); + + check_api_level(CX_COMPAT_APILEVEL); + + // Check if plugin is called from the dashboard. + if (!arg0) { + // Called from dashboard, launch Ethereum app + call_app_ethereum(); + return 0; + } else { + // Not called from dashboard: called from the ethereum app! + // launch plugin main + plugin_main(arg0); + } + + // Call `os_lib_end`, go back to the ethereum app. + os_lib_end(); + + // Will not get reached. + return 0; +} \ No newline at end of file diff --git a/src_plugins_sdk/plugin_main.h b/src_plugins_sdk/plugin_main.h new file mode 100644 index 000000000..5801aa9bf --- /dev/null +++ b/src_plugins_sdk/plugin_main.h @@ -0,0 +1,19 @@ +/***************************************************************************** + * Ledger Plugins SDK. + * (c) 2023 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +// applicative main for plugins +void plugin_main(int arg0); \ No newline at end of file diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 552bb25cf..6cc1e83b4 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -5,7 +5,7 @@ required to exchange information with ethereum external plugins. It should always be launched from app-ethereum: -python3 ethereum-plugin-sdk/build_sdk.py +python3 tools/build_sdk.py ''' @@ -88,6 +88,7 @@ def merge_headers(sources, nodes_to_extract): '#include "cx.h"', '#ifdef HAVE_NBGL', '#include "nbgl_types.h"', + '#include "glyphs.h"', '#endif' ] @@ -159,7 +160,8 @@ def merge_c_files(sources, nodes_to_extract): "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", - "src/swap_lib_calls.h" + "src/swap_lib_calls.h", + "src_plugins_sdk/plugin_main.h" ] nodes_to_extract = { "#define": ["MAX_TICKER_LEN", "ADDRESS_LENGTH", "INT256_LENGTH", "WEI_TO_ETHER", "SELECTOR_SIZE", "PARAMETER_LENGTH", "RUN_APPLICATION", "COLLECTION_NAME_MAX_LEN"], @@ -168,7 +170,20 @@ def merge_c_files(sources, nodes_to_extract): "typedef union": ["extraInfo_t"], "__attribute__((no_instrument_function)) inline": ["int allzeroes"], "const": ["HEXDIGITS"], - "fn": ["void getEthAddressStringFromBinary", "void getEthAddressFromKey", "void getEthDisplayableAddress", "bool adjustDecimals", "bool uint256_to_decimal", "void amountToString", "void u64_to_string", "void copy_address", "void copy_parameter", "bool U2BE_from_parameter", "bool U4BE_from_parameter"] + "fn": ["bool getEthAddressStringFromBinary", + "bool getEthAddressFromKey", + "bool getEthDisplayableAddress", + "bool adjustDecimals", + "bool uint256_to_decimal", + "bool amountToString", + "bool u64_to_string", + "void copy_address", + "void copy_parameter", + "bool U2BE_from_parameter", + "bool U4BE_from_parameter", + "void plugin_main", + "void call_app_ethereum", + "int main"] } merge_headers(headers_to_merge, nodes_to_extract) @@ -179,6 +194,7 @@ def merge_c_files(sources, nodes_to_extract): c_files_to_merge = [ "src/utils.c", "src_common/ethUtils.c", - "src/eth_plugin_internal.c" + "src/eth_plugin_internal.c", + "src_plugins_sdk/plugin_main.c" ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From 5d1d16c2dee970a24f60b7a419f2d3b34b6038d9 Mon Sep 17 00:00:00 2001 From: tdejoigny-ledger Date: Fri, 4 Aug 2023 13:43:03 +0200 Subject: [PATCH 031/160] Update the ragger app client to support "set external plugin" APDU and take into account PR review remarks --- .../src/ledger_app_clients/ethereum/client.py | 29 ++++++------ .../ethereum/command_builder.py | 17 +++++++ src_plugins_sdk/plugin_main.c | 46 +++++++++++++------ src_plugins_sdk/plugin_main.h | 2 +- 4 files changed, 65 insertions(+), 29 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index f8b98e2fa..150cfb9f3 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -2,7 +2,7 @@ from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU -from typing import List, Optional, Union +from typing import List, Optional from .command_builder import CommandBuilder from .eip712 import EIP712FieldType @@ -30,8 +30,7 @@ class StatusWord(IntEnum): CONDITION_NOT_SATISFIED = 0x6985 REF_DATA_NOT_FOUND = 0x6a88 - -class DOMAIN_NAME_TAG(IntEnum): +class DomainNameTag(IntEnum): STRUCTURE_TYPE = 0x01 STRUCTURE_VERSION = 0x02 CHALLENGE = 0x12 @@ -52,7 +51,7 @@ def _send(self, payload: bytes): return self._client.exchange_async_raw(payload) def response(self) -> Optional[RAPDU]: - return self._client._last_async_response + return self._client.last_async_response def eip712_send_struct_def_struct_name(self, name: str): return self._send(self._cmd_builder.eip712_send_struct_def_struct_name(name)) @@ -190,15 +189,15 @@ def get_public_addr(self, chain_id)) def provide_domain_name(self, challenge: int, name: str, addr: bytes): - payload = format_tlv(DOMAIN_NAME_TAG.STRUCTURE_TYPE, 3) # TrustedDomainName - payload += format_tlv(DOMAIN_NAME_TAG.STRUCTURE_VERSION, 1) - payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_KEY_ID, 0) # test key - payload += format_tlv(DOMAIN_NAME_TAG.SIGNER_ALGO, 1) # secp256k1 - payload += format_tlv(DOMAIN_NAME_TAG.CHALLENGE, challenge) - payload += format_tlv(DOMAIN_NAME_TAG.COIN_TYPE, 0x3c) # ETH in slip-44 - payload += format_tlv(DOMAIN_NAME_TAG.DOMAIN_NAME, name) - payload += format_tlv(DOMAIN_NAME_TAG.ADDRESS, addr) - payload += format_tlv(DOMAIN_NAME_TAG.SIGNATURE, + payload = format_tlv(DomainNameTag.STRUCTURE_TYPE, 3) # TrustedDomainName + payload += format_tlv(DomainNameTag.STRUCTURE_VERSION, 1) + payload += format_tlv(DomainNameTag.SIGNER_KEY_ID, 0) # test key + payload += format_tlv(DomainNameTag.SIGNER_ALGO, 1) # secp256k1 + payload += format_tlv(DomainNameTag.CHALLENGE, challenge) + payload += format_tlv(DomainNameTag.COIN_TYPE, 0x3c) # ETH in slip-44 + payload += format_tlv(DomainNameTag.DOMAIN_NAME, name) + payload += format_tlv(DomainNameTag.ADDRESS, addr) + payload += format_tlv(DomainNameTag.SIGNATURE, sign_data(Key.DOMAIN_NAME, payload)) chunks = self._cmd_builder.provide_domain_name(payload) @@ -271,3 +270,7 @@ def provide_nft_metadata(self, key_id, algo_id, sig)) + + + def external_plugin_setup(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes): + return self._send(self._cmd_builder.external_plugin_setup(plugin_name, contract_address, method_selelector, sig)) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index e63f061a9..caed1d9f7 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -1,3 +1,6 @@ +# documentation about APDU format is available here: +# https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc + import struct from enum import IntEnum from typing import Optional @@ -18,6 +21,7 @@ class InsType(IntEnum): EIP712_SIGN = 0x0c GET_CHALLENGE = 0x20 PROVIDE_DOMAIN_NAME = 0x22 + EXTERNAL_PLUGIN_SETUP = 0x12 class P1Type(IntEnum): @@ -178,6 +182,19 @@ def eip712_filtering_show_field(self, name: str, sig: bytes) -> bytes: P2Type.FILTERING_FIELD_NAME, self._eip712_filtering_send_name(name, sig)) + def external_plugin_setup(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes) -> bytes: + data = bytearray() + data.append(len(plugin_name)) + data += self._string_to_bytes(plugin_name) + data += contract_address + data += method_selelector + data += sig + + return self._serialize(InsType.EXTERNAL_PLUGIN_SETUP, + P1Type.COMPLETE_SEND, + 0x00, + data) + def sign(self, bip32_path: str, rlp_data: bytes) -> list[bytes]: apdus = list() payload = pack_derivation_path(bip32_path) diff --git a/src_plugins_sdk/plugin_main.c b/src_plugins_sdk/plugin_main.c index 06bd3a49f..881ad709b 100644 --- a/src_plugins_sdk/plugin_main.c +++ b/src_plugins_sdk/plugin_main.c @@ -49,20 +49,36 @@ __attribute__((section(".boot"))) int main(int arg0) { check_api_level(CX_COMPAT_APILEVEL); - // Check if plugin is called from the dashboard. - if (!arg0) { - // Called from dashboard, launch Ethereum app - call_app_ethereum(); - return 0; - } else { - // Not called from dashboard: called from the ethereum app! - // launch plugin main - plugin_main(arg0); - } + BEGIN_TRY { + TRY { + // Check if plugin is called from the dashboard. + if (!arg0) { + // Called from dashboard, launch Ethereum app + call_app_ethereum(); + + // Will not get reached. + __builtin_unreachable(); + + os_sched_exit(-1); - // Call `os_lib_end`, go back to the ethereum app. - os_lib_end(); + } else { + // Not called from dashboard: called from the ethereum app! + // launch plugin main + plugin_main(arg0); + } - // Will not get reached. - return 0; -} \ No newline at end of file + // Call `os_lib_end`, go back to the ethereum app. + os_lib_end(); + + // Will not get reached. + __builtin_unreachable(); + } + CATCH_OTHER(e) { + PRINTF("Exiting following exception: %d\n", e); + } + FINALLY { + os_lib_end(); + } + } + END_TRY; +} diff --git a/src_plugins_sdk/plugin_main.h b/src_plugins_sdk/plugin_main.h index 5801aa9bf..a120c5a7b 100644 --- a/src_plugins_sdk/plugin_main.h +++ b/src_plugins_sdk/plugin_main.h @@ -16,4 +16,4 @@ *****************************************************************************/ // applicative main for plugins -void plugin_main(int arg0); \ No newline at end of file +void plugin_main(int arg0); From d7bf69b56cdb71069c621ff9364ea6c69e96152d Mon Sep 17 00:00:00 2001 From: tdejoigny-ledger Date: Mon, 18 Sep 2023 11:45:49 +0200 Subject: [PATCH 032/160] take into account PR remarks on Ethereum python client --- client/src/ledger_app_clients/ethereum/client.py | 14 ++++++++++++-- .../ledger_app_clients/ethereum/command_builder.py | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 150cfb9f3..d2015a1aa 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -271,6 +271,16 @@ def provide_nft_metadata(self, algo_id, sig)) + def set_external_plugin(self, + plugin_name: str, + contract_address: bytes, + method_selelector: bytes, + sig: Optional[bytes] = None): + if sig is None: + # Temporarily get a command with an empty signature to extract the payload and + # compute the signature on it + tmp = self._cmd_builder.set_external_plugin(plugin_name, contract_address, method_selelector, bytes()) - def external_plugin_setup(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes): - return self._send(self._cmd_builder.external_plugin_setup(plugin_name, contract_address, method_selelector, sig)) + # skip APDU header & empty sig + sig = sign_data(Key.SET_PLUGIN, tmp[5:-1]) + return self._send(self._cmd_builder.set_external_plugin(plugin_name, contract_address, method_selelector, sig)) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index caed1d9f7..4170a3086 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -182,7 +182,7 @@ def eip712_filtering_show_field(self, name: str, sig: bytes) -> bytes: P2Type.FILTERING_FIELD_NAME, self._eip712_filtering_send_name(name, sig)) - def external_plugin_setup(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes) -> bytes: + def set_external_plugin(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes) -> bytes: data = bytearray() data.append(len(plugin_name)) data += self._string_to_bytes(plugin_name) From 9a9e946b50e39e58a4966531ddff5b557139fd3b Mon Sep 17 00:00:00 2001 From: tdejoigny-ledger Date: Tue, 19 Sep 2023 16:02:47 +0200 Subject: [PATCH 033/160] remove obsolete function check_api_level --- src_plugins_sdk/plugin_main.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src_plugins_sdk/plugin_main.c b/src_plugins_sdk/plugin_main.c index 881ad709b..c793cf8b4 100644 --- a/src_plugins_sdk/plugin_main.c +++ b/src_plugins_sdk/plugin_main.c @@ -47,8 +47,6 @@ __attribute__((section(".boot"))) int main(int arg0) { os_boot(); - check_api_level(CX_COMPAT_APILEVEL); - BEGIN_TRY { TRY { // Check if plugin is called from the dashboard. From 49da32af8e1eeb975dca0c5f226a1f5981d80f25 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 5 Oct 2023 15:01:58 +0200 Subject: [PATCH 034/160] Added missing return value checks following recent changes --- src/handle_check_address.c | 10 +- src/handle_get_printable_amount.c | 14 +-- src/handle_swap_sign_transaction.c | 28 +++--- src_bagl/ui_flow_stark_sign.c | 17 +++- src_features/getPublicKey/cmd_getPublicKey.c | 10 +- .../cmd_performPrivacyOperation.c | 10 +- src_features/signMessageEIP712/ui_logic.c | 12 ++- src_features/signTx/logic_signTx.c | 15 ++- src_nbgl/ui_stark_transfer.c | 12 ++- src_plugins/erc1155/erc1155_ui.c | 91 ++++++++++-------- src_plugins/erc20/erc20_plugin.c | 26 +++--- src_plugins/erc721/erc721_ui.c | 92 +++++++++++-------- src_plugins/eth2/eth2_plugin.c | 27 +++--- src_plugins/starkware/starkware_plugin.c | 56 ++++++----- 14 files changed, 254 insertions(+), 166 deletions(-) diff --git a/src/handle_check_address.c b/src/handle_check_address.c index 7950f7ea9..ef6d5edc4 100644 --- a/src/handle_check_address.c +++ b/src/handle_check_address.c @@ -53,10 +53,12 @@ int handle_check_address(check_address_parameters_t* params, chain_config_t* cha ZERO(locals_union2); cx_ecfp_generate_pair(CX_CURVE_256K1, &locals_union2.publicKey, &locals_union1.privateKey, 1); ZERO(locals_union1); - getEthAddressStringFromKey(&locals_union2.publicKey, - locals_union1.address, - &local_sha3, - chain_config->chainId); + if (!getEthAddressStringFromKey(&locals_union2.publicKey, + locals_union1.address, + &local_sha3, + chain_config->chainId)) { + THROW(CX_INVALID_PARAMETER); + } ZERO(locals_union2); uint8_t offset_0x = 0; diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index 715c85d10..a890ff5fe 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -33,11 +33,13 @@ int handle_get_printable_amount(get_printable_amount_parameters_t* params, chain } } - amountToString(params->amount, - params->amount_length, - decimals, - ticker, - params->printable_amount, - sizeof(params->printable_amount)); + if (!amountToString(params->amount, + params->amount_length, + decimals, + ticker, + params->printable_amount, + sizeof(params->printable_amount))) { + THROW(EXCEPTION_OVERFLOW); + } return 1; } diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 604b8a26c..789cbdd14 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -35,22 +35,26 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti PRINTF("Error while parsing config\n"); return false; } - amountToString(sign_transaction_params->amount, - sign_transaction_params->amount_length, - decimals, - ticker, - stack_data.fullAmount, - sizeof(stack_data.fullAmount)); + if (!amountToString(sign_transaction_params->amount, + sign_transaction_params->amount_length, + decimals, + ticker, + stack_data.fullAmount, + sizeof(stack_data.fullAmount))) { + THROW(EXCEPTION_OVERFLOW); + } // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap strlcpy(ticker, config->coinName, MAX_TICKER_LEN); decimals = WEI_TO_ETHER; - amountToString(sign_transaction_params->fee_amount, - sign_transaction_params->fee_amount_length, - decimals, - ticker, - stack_data.maxFee, - sizeof(stack_data.maxFee)); + if (!amountToString(sign_transaction_params->fee_amount, + sign_transaction_params->fee_amount_length, + decimals, + ticker, + stack_data.maxFee, + sizeof(stack_data.maxFee))) { + THROW(EXCEPTION_OVERFLOW); + } // Full reset the global variables os_explicit_zero_BSS_segment(); diff --git a/src_bagl/ui_flow_stark_sign.c b/src_bagl/ui_flow_stark_sign.c index 548e8808f..03174c79b 100644 --- a/src_bagl/ui_flow_stark_sign.c +++ b/src_bagl/ui_flow_stark_sign.c @@ -4,6 +4,7 @@ #include "ui_callbacks.h" #include "ethUtils.h" #include "starkDisplayUtils.h" +#include "apdu_constants.h" // clang-format off UX_STEP_NOCB(ux_stark_limit_order_1_step, @@ -78,6 +79,16 @@ UX_FLOW(ux_stark_limit_order_flow, &ux_stark_limit_order_7_step, &ux_stark_limit_order_8_step); +static void stark_format_address(void) { + if (!getEthDisplayableAddress(dataContext.starkContext.conditionAddress, + strings.tmp.tmp, + sizeof(strings.tmp.tmp), + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } +} + ////////////////////////////////////////////////////////////////////// // clang-format off UX_STEP_NOCB(ux_stark_transfer_1_step, @@ -167,11 +178,7 @@ UX_STEP_NOCB_INIT( UX_STEP_NOCB_INIT( ux_stark_conditional_transfer_8_step, bnnn_paging, - getEthDisplayableAddress(dataContext.starkContext.conditionAddress, - strings.tmp.tmp, - sizeof(strings.tmp.tmp), - &global_sha3, - chainConfig->chainId), + stark_format_address(), { .title = "Cond. Address", .text = strings.tmp.tmp diff --git a/src_features/getPublicKey/cmd_getPublicKey.c b/src_features/getPublicKey/cmd_getPublicKey.c index bca0a88f1..eae16d5a4 100644 --- a/src_features/getPublicKey/cmd_getPublicKey.c +++ b/src_features/getPublicKey/cmd_getPublicKey.c @@ -49,10 +49,12 @@ void handleGetPublicKey(uint8_t p1, explicit_bzero(&privateKey, sizeof(privateKey)); explicit_bzero(privateKeyData, sizeof(privateKeyData)); io_seproxyhal_io_heartbeat(); - getEthAddressStringFromKey(&tmpCtx.publicKeyContext.publicKey, - tmpCtx.publicKeyContext.address, - &global_sha3, - chainConfig->chainId); + if (!getEthAddressStringFromKey(&tmpCtx.publicKeyContext.publicKey, + tmpCtx.publicKeyContext.address, + &global_sha3, + chainConfig->chainId)) { + THROW(CX_INVALID_PARAMETER); + } uint64_t chain_id = chainConfig->chainId; if (dataLength >= sizeof(chain_id)) { diff --git a/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c b/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c index 5cb95527c..aebb98774 100644 --- a/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c +++ b/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c @@ -62,10 +62,12 @@ void handlePerformPrivacyOperation(uint8_t p1, (tmpCtx.publicKeyContext.getChaincode ? tmpCtx.publicKeyContext.chainCode : NULL)); cx_ecfp_init_private_key(CX_CURVE_256K1, privateKeyData, 32, &privateKey); cx_ecfp_generate_pair(CX_CURVE_256K1, &tmpCtx.publicKeyContext.publicKey, &privateKey, 1); - getEthAddressStringFromKey(&tmpCtx.publicKeyContext.publicKey, - tmpCtx.publicKeyContext.address, - &global_sha3, - chainConfig->chainId); + if (!getEthAddressStringFromKey(&tmpCtx.publicKeyContext.publicKey, + tmpCtx.publicKeyContext.address, + &global_sha3, + chainConfig->chainId)) { + THROW(CX_INVALID_PARAMETER); + } if (p2 == P2_PUBLIC_ENCRYPTION_KEY) { decodeScalar(privateKeyData, privateKeyDataSwapped); cx_ecfp_init_private_key(CX_CURVE_Curve25519, privateKeyDataSwapped, 32, &privateKey); diff --git a/src_features/signMessageEIP712/ui_logic.c b/src_features/signMessageEIP712/ui_logic.c index e6f7b6a64..aa7dcd8cf 100644 --- a/src_features/signMessageEIP712/ui_logic.c +++ b/src_features/signMessageEIP712/ui_logic.c @@ -198,11 +198,13 @@ static bool ui_712_format_addr(const uint8_t *const data, uint8_t length) { return false; } if (ui_712_field_shown()) { - getEthDisplayableAddress((uint8_t *) data, - strings.tmp.tmp, - sizeof(strings.tmp.tmp), - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress((uint8_t *) data, + strings.tmp.tmp, + sizeof(strings.tmp.tmp), + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } } return true; } diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index c84e9d108..5c47e643f 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -1,3 +1,4 @@ +#include #include "shared_context.h" #include "utils.h" #include "feature_signTx.h" @@ -9,7 +10,7 @@ #include "ethUtils.h" #include "common_ui.h" #include "ui_callbacks.h" -#include +#include "apdu_constants.h" #define ERR_SILENT_MODE_CHECK_FAILED 0x6001 @@ -189,7 +190,9 @@ static void address_to_string(uint8_t *in, cx_sha3_t *sha3, uint64_t chainId) { if (in_len != 0) { - getEthDisplayableAddress(in, out, out_len, sha3, chainId); + if (!getEthDisplayableAddress(in, out, out_len, sha3, chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } } else { strlcpy(out, "Contract", out_len); } @@ -269,7 +272,9 @@ static void get_network_as_string(char *out, size_t out_size) { if (name == NULL) { // No network name found so simply copy the chain ID as the network name. - u64_to_string(chain_id, out, out_size); + if (!u64_to_string(chain_id, out, out_size)) { + THROW(0x6502); + } } else { // Network name found, simply copy it. strlcpy(out, name, out_size); @@ -294,7 +299,9 @@ static void get_public_key(uint8_t *out, uint8_t outLength) { cx_ecfp_generate_pair(CX_CURVE_256K1, &publicKey, &privateKey, 1); explicit_bzero(&privateKey, sizeof(privateKey)); explicit_bzero(privateKeyData, sizeof(privateKeyData)); - getEthAddressFromKey(&publicKey, out, &global_sha3); + if (!getEthAddressFromKey(&publicKey, out, &global_sha3)) { + THROW(CX_INVALID_PARAMETER); + } } /* Local implmentation of strncasecmp, workaround of the segfaulting base implem diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c index d7decfbca..bb41e1eb9 100644 --- a/src_nbgl/ui_stark_transfer.c +++ b/src_nbgl/ui_stark_transfer.c @@ -65,11 +65,13 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { } if (page == 1) { if (context.conditional) { - getEthDisplayableAddress(dataContext.starkContext.conditionAddress, - condAddressBuffer, - sizeof(condAddressBuffer), - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(dataContext.starkContext.conditionAddress, + condAddressBuffer, + sizeof(condAddressBuffer), + &global_sha3, + chainConfig->chainId)) { + return false; + } pairs[0].item = "Cond. Address"; pairs[0].value = condAddressBuffer; diff --git a/src_plugins/erc1155/erc1155_ui.c b/src_plugins/erc1155/erc1155_ui.c index 43067045f..72ea2230d 100644 --- a/src_plugins/erc1155/erc1155_ui.c +++ b/src_plugins/erc1155/erc1155_ui.c @@ -14,11 +14,13 @@ static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc1155_context_t } else { strlcpy(msg->title, "Revoke", msg->titleLength); } - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "To Manage ALL", msg->titleLength); @@ -26,11 +28,13 @@ static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc1155_context_t break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; default: PRINTF("Unsupported screen index %d\n", msg->screenIndex); @@ -43,11 +47,13 @@ static void set_transfer_ui(ethQueryContractUI_t *msg, erc1155_context_t *contex switch (msg->screenIndex) { case 0: strlcpy(msg->title, "To", msg->titleLength); - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "Collection Name", msg->titleLength); @@ -55,22 +61,28 @@ static void set_transfer_ui(ethQueryContractUI_t *msg, erc1155_context_t *contex break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 3: strlcpy(msg->title, "NFT ID", msg->titleLength); - uint256_to_decimal(context->tokenId, - sizeof(context->tokenId), - msg->msg, - msg->msgLength); + if (!uint256_to_decimal(context->tokenId, + sizeof(context->tokenId), + msg->msg, + msg->msgLength)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 4: strlcpy(msg->title, "Quantity", msg->titleLength); - tostring256(&context->value, 10, msg->msg, msg->msgLength); + if (!tostring256(&context->value, 10, msg->msg, msg->msgLength)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; default: PRINTF("Unsupported screen index %d\n", msg->screenIndex); @@ -85,11 +97,13 @@ static void set_batch_transfer_ui(ethQueryContractUI_t *msg, erc1155_context_t * switch (msg->screenIndex) { case 0: strlcpy(msg->title, "To", msg->titleLength); - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "Collection Name", msg->titleLength); @@ -97,15 +111,20 @@ static void set_batch_transfer_ui(ethQueryContractUI_t *msg, erc1155_context_t * break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 3: strlcpy(msg->title, "Total Quantity", msg->titleLength); - tostring256(&context->value, 10, &quantity_str[0], sizeof(quantity_str)); + if (!tostring256(&context->value, 10, &quantity_str[0], sizeof(quantity_str))) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } snprintf(msg->msg, msg->msgLength, "%s from %d NFT IDs", diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index 220e05f9d..33380dbee 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -201,12 +201,14 @@ void erc20_plugin_call(int message, void *parameters) { strlcpy(msg->msg, "Unlimited ", msg->msgLength); strlcat(msg->msg, context->ticker, msg->msgLength); } else { - amountToString(context->amount, - sizeof(context->amount), - context->decimals, - context->ticker, - msg->msg, - 100); + if (!amountToString(context->amount, + sizeof(context->amount), + context->decimals, + context->ticker, + msg->msg, + 100)) { + THROW(EXCEPTION_OVERFLOW); + } } msg->result = ETH_PLUGIN_RESULT_OK; break; @@ -216,11 +218,13 @@ void erc20_plugin_call(int message, void *parameters) { strlcpy(msg->msg, context->contract_name, msg->msgLength); } else { strlcpy(msg->title, "Address", msg->titleLength); - getEthDisplayableAddress(context->destinationAddress, - msg->msg, - msg->msgLength, - msg->pluginSharedRW->sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->destinationAddress, + msg->msg, + msg->msgLength, + msg->pluginSharedRW->sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } } msg->result = ETH_PLUGIN_RESULT_OK; diff --git a/src_plugins/erc721/erc721_ui.c b/src_plugins/erc721/erc721_ui.c index 8fc4c599e..caaf39578 100644 --- a/src_plugins/erc721/erc721_ui.c +++ b/src_plugins/erc721/erc721_ui.c @@ -10,11 +10,13 @@ static void set_approval_ui(ethQueryContractUI_t *msg, erc721_context_t *context switch (msg->screenIndex) { case 0: strlcpy(msg->title, "Allow", msg->titleLength); - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "To Manage Your", msg->titleLength); @@ -22,18 +24,22 @@ static void set_approval_ui(ethQueryContractUI_t *msg, erc721_context_t *context break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 3: strlcpy(msg->title, "NFT ID", msg->titleLength); - uint256_to_decimal(context->tokenId, - sizeof(context->tokenId), - msg->msg, - msg->msgLength); + if (!uint256_to_decimal(context->tokenId, + sizeof(context->tokenId), + msg->msg, + msg->msgLength)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; default: PRINTF("Unsupported screen index %d\n", msg->screenIndex); @@ -50,11 +56,13 @@ static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc721_context_t } else { strlcpy(msg->title, "Revoke", msg->titleLength); } - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "To Manage ALL", msg->titleLength); @@ -62,11 +70,13 @@ static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc721_context_t break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; default: PRINTF("Unsupported screen index %d\n", msg->screenIndex); @@ -79,11 +89,13 @@ static void set_transfer_ui(ethQueryContractUI_t *msg, erc721_context_t *context switch (msg->screenIndex) { case 0: strlcpy(msg->title, "To", msg->titleLength); - getEthDisplayableAddress(context->address, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->address, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 1: strlcpy(msg->title, "Collection Name", msg->titleLength); @@ -91,18 +103,22 @@ static void set_transfer_ui(ethQueryContractUI_t *msg, erc721_context_t *context break; case 2: strlcpy(msg->title, "NFT Address", msg->titleLength); - getEthDisplayableAddress(msg->item1->nft.contractAddress, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(msg->item1->nft.contractAddress, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; case 3: strlcpy(msg->title, "NFT ID", msg->titleLength); - uint256_to_decimal(context->tokenId, - sizeof(context->tokenId), - msg->msg, - msg->msgLength); + if (!uint256_to_decimal(context->tokenId, + sizeof(context->tokenId), + msg->msg, + msg->msgLength)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + } break; default: PRINTF("Unsupported screen index %d\n", msg->screenIndex); diff --git a/src_plugins/eth2/eth2_plugin.c b/src_plugins/eth2/eth2_plugin.c index c93c82ec6..352a9f3cc 100644 --- a/src_plugins/eth2/eth2_plugin.c +++ b/src_plugins/eth2/eth2_plugin.c @@ -117,11 +117,14 @@ void eth2_plugin_call(int message, void *parameters) { // Use a temporary buffer to store the string representation. char tmp[ETH2_DEPOSIT_PUBKEY_LENGTH]; - getEthDisplayableAddress((uint8_t *) context->deposit_address, - tmp, - sizeof(tmp), - msg->pluginSharedRW->sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress((uint8_t *) context->deposit_address, + tmp, + sizeof(tmp), + msg->pluginSharedRW->sha3, + chainConfig->chainId)) { + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } // Copy back the string to the global variable. strlcpy(context->deposit_address, tmp, ETH2_DEPOSIT_PUBKEY_LENGTH); @@ -200,12 +203,14 @@ void eth2_plugin_call(int message, void *parameters) { uint8_t decimals = WEI_TO_ETHER; char *ticker = chainConfig->coinName; strlcpy(msg->title, "Amount", msg->titleLength); - amountToString(tmpContent.txContent.value.value, - tmpContent.txContent.value.length, - decimals, - ticker, - msg->msg, - 100); + if (!amountToString(tmpContent.txContent.value.value, + tmpContent.txContent.value.length, + decimals, + ticker, + msg->msg, + 100)) { + THROW(EXCEPTION_OVERFLOW); + } msg->result = ETH_PLUGIN_RESULT_OK; } break; case 1: { // Deposit pubkey screen diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index 634ea4e53..d0ee269fd 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -6,6 +6,7 @@ #include "stark_utils.h" #include "utils.h" #include "ethUtils.h" +#include "apdu_constants.h" #ifdef HAVE_STARKWARE @@ -352,11 +353,13 @@ void starkware_print_asset_contract(char *destination, size_t destinationLength) if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { tokenDefinition_t *token = &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - getEthDisplayableAddress(token->address, - destination, - destinationLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(token->address, + destination, + destinationLength, + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } } else { strlcpy(destination, "UNKNOWN", destinationLength); } @@ -380,7 +383,12 @@ void starkware_get_source_address(char *destination) { io_seproxyhal_io_heartbeat(); destination[0] = '0'; destination[1] = 'x'; - getEthAddressStringFromKey(&publicKey, destination + 2, &global_sha3, chainConfig->chainId); + if (!getEthAddressStringFromKey(&publicKey, + destination + 2, + &global_sha3, + chainConfig->chainId)) { + THROW(CX_INVALID_PARAMETER); + } destination[42] = '\0'; } @@ -716,11 +724,13 @@ void starkware_plugin_call(int message, void *parameters) { if (is_deversify_contract(tmpContent.txContent.destination)) { strlcpy(msg->msg, "DeversiFi", msg->msgLength); } else { - getEthDisplayableAddress(tmpContent.txContent.destination, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(tmpContent.txContent.destination, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } } msg->result = ETH_PLUGIN_RESULT_OK; break; @@ -730,11 +740,13 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: case STARKWARE_REGISTER_AND_DEPOSIT_ETH: strlcpy(msg->title, "From ETH Address", msg->titleLength); - getEthDisplayableAddress(context->amount, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->amount, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } break; case STARKWARE_ESCAPE: strlcpy(msg->title, "Amount", msg->titleLength); @@ -806,11 +818,13 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_WITHDRAW_TO: case STARKWARE_WITHDRAW_NFT_TO: strlcpy(msg->title, "To ETH Address", msg->titleLength); - getEthDisplayableAddress(context->amount, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId); + if (!getEthDisplayableAddress(context->amount, + msg->msg, + msg->msgLength, + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } break; case STARKWARE_WITHDRAW_AND_MINT: strlcpy(msg->title, "Asset Contract", msg->titleLength); From 3e09ee0cff94decb5a9285d9fa1016265a139756 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 5 Oct 2023 15:02:16 +0200 Subject: [PATCH 035/160] Moved more of the plugins main.c code to the SDK + updated SDK script Also fixed flake8 warnings --- .../plugin_main.c => src_plugin_sdk/main.c | 51 +++++++++++++++++-- src_plugins_sdk/plugin_main.h | 19 ------- tools/build_sdk.py | 45 +++++++++++----- 3 files changed, 78 insertions(+), 37 deletions(-) rename src_plugins_sdk/plugin_main.c => src_plugin_sdk/main.c (57%) delete mode 100644 src_plugins_sdk/plugin_main.h diff --git a/src_plugins_sdk/plugin_main.c b/src_plugin_sdk/main.c similarity index 57% rename from src_plugins_sdk/plugin_main.c rename to src_plugin_sdk/main.c index c793cf8b4..76c3d4dac 100644 --- a/src_plugins_sdk/plugin_main.c +++ b/src_plugin_sdk/main.c @@ -1,6 +1,6 @@ /***************************************************************************** - * Ledger Plugins SDK. - * (c) 2023 Ledger SAS. + * Ledger Plugin SDK + * (c) 2023 Ledger SAS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,17 @@ * limitations under the License. *****************************************************************************/ +#include "eth_internals.h" +#include "eth_plugin_interface.h" + +// Functions implemented by the plugin +void handle_init_contract(ethPluginInitContract_t *parameters); +void handle_provide_parameter(ethPluginProvideParameter_t *parameters); +void handle_finalize(ethPluginFinalize_t *parameters); +void handle_provide_token(ethPluginProvideInfo_t *parameters); +void handle_query_contract_id(ethQueryContractID_t *parameters); +void handle_query_contract_ui(ethQueryContractUI_t *parameters); + // Calls the ethereum app. void call_app_ethereum() { unsigned int libcall_params[5]; @@ -40,6 +51,33 @@ void call_app_ethereum() { os_lib_call((unsigned int *) &libcall_params); } +// Function to dispatch calls from the ethereum app. +static void dispatch_call(int message, void *parameters) { + switch (message) { + case ETH_PLUGIN_INIT_CONTRACT: + handle_init_contract(parameters); + break; + case ETH_PLUGIN_PROVIDE_PARAMETER: + handle_provide_parameter(parameters); + break; + case ETH_PLUGIN_FINALIZE: + handle_finalize(parameters); + break; + case ETH_PLUGIN_PROVIDE_INFO: + handle_provide_token(parameters); + break; + case ETH_PLUGIN_QUERY_CONTRACT_ID: + handle_query_contract_id(parameters); + break; + case ETH_PLUGIN_QUERY_CONTRACT_UI: + handle_query_contract_ui(parameters); + break; + default: + PRINTF("Unhandled message %d\n", message); + break; + } +} + // Low-level main for plugins. __attribute__((section(".boot"))) int main(int arg0) { // Exit critical section @@ -61,8 +99,13 @@ __attribute__((section(".boot"))) int main(int arg0) { } else { // Not called from dashboard: called from the ethereum app! - // launch plugin main - plugin_main(arg0); + const unsigned int *args = (unsigned int *) arg0; + + // If `ETH_PLUGIN_CHECK_PRESENCE` is set, this means the caller is just trying to + // know whether this app exists or not. We can skip `paraswap_plugin_call`. + if (args[0] != ETH_PLUGIN_CHECK_PRESENCE) { + dispatch_call(args[0], (void *) args[1]); + } } // Call `os_lib_end`, go back to the ethereum app. diff --git a/src_plugins_sdk/plugin_main.h b/src_plugins_sdk/plugin_main.h deleted file mode 100644 index a120c5a7b..000000000 --- a/src_plugins_sdk/plugin_main.h +++ /dev/null @@ -1,19 +0,0 @@ -/***************************************************************************** - * Ledger Plugins SDK. - * (c) 2023 Ledger SAS. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ - -// applicative main for plugins -void plugin_main(int arg0); diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 6cc1e83b4..bc3af58cc 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -10,6 +10,7 @@ ''' import os +import shutil def extract_from_headers(sources, nodes_to_extract): @@ -28,12 +29,12 @@ def extract_from_headers(sources, nodes_to_extract): if key in line and value in line: node += [line] unclosed_curvy_brackets = line.count('{') - line.count('}') - if unclosed_curvy_brackets == False: + if not unclosed_curvy_brackets: break elif (key == "fn" and value in line) or unclosed_parantheses: node += [line] unclosed_parantheses = line.find(")") == -1 - if unclosed_parantheses == False: + if not unclosed_parantheses: break elif unclosed_curvy_brackets: node += [line] @@ -150,7 +151,8 @@ def merge_c_files(sources, nodes_to_extract): if __name__ == "__main__": - # some nodes will be extracted from these headers and merged into a new one, copied to sdk + # some nodes will be extracted from these headers and merged into a new + # one, copied to sdk headers_to_merge = [ "src/tokens.h", "src/chainConfig.h", @@ -160,13 +162,23 @@ def merge_c_files(sources, nodes_to_extract): "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", - "src/swap_lib_calls.h", - "src_plugins_sdk/plugin_main.h" + "src/swap_lib_calls.h", ] nodes_to_extract = { - "#define": ["MAX_TICKER_LEN", "ADDRESS_LENGTH", "INT256_LENGTH", "WEI_TO_ETHER", "SELECTOR_SIZE", "PARAMETER_LENGTH", "RUN_APPLICATION", "COLLECTION_NAME_MAX_LEN"], + "#define": ["MAX_TICKER_LEN", + "ADDRESS_LENGTH", + "INT256_LENGTH", + "WEI_TO_ETHER", + "SELECTOR_SIZE", + "PARAMETER_LENGTH", + "RUN_APPLICATION", + "COLLECTION_NAME_MAX_LEN"], "typedef enum": [], - "typedef struct": ["tokenDefinition_t", "txInt256_t", "txContent_t", "nftInfo_t", "caller_app_t"], + "typedef struct": ["tokenDefinition_t", + "txInt256_t", + "txContent_t", + "nftInfo_t", + "caller_app_t"], "typedef union": ["extraInfo_t"], "__attribute__((no_instrument_function)) inline": ["int allzeroes"], "const": ["HEXDIGITS"], @@ -180,21 +192,26 @@ def merge_c_files(sources, nodes_to_extract): "void copy_address", "void copy_parameter", "bool U2BE_from_parameter", - "bool U4BE_from_parameter", - "void plugin_main", - "void call_app_ethereum", - "int main"] + "bool U4BE_from_parameter"] } merge_headers(headers_to_merge, nodes_to_extract) - # this header will be stripped from all #include related to previously merged headers, then copied to sdk + # this header will be stripped from all #include related to previously + # merged headers, then copied to sdk copy_header("src/eth_plugin_interface.h", headers_to_merge) # extract and merge function bodies c_files_to_merge = [ "src/utils.c", "src_common/ethUtils.c", - "src/eth_plugin_internal.c", - "src_plugins_sdk/plugin_main.c" + "src/eth_plugin_internal.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) + + files_to_copy = [ + "main.c", + ] + + for file in files_to_copy: + shutil.copyfile("src_plugin_sdk/" + file, + "ethereum-plugin-sdk/include/" + file) From 6126bb65139030a1c3e89342b7bab726d77af966 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 9 Oct 2023 17:58:28 +0200 Subject: [PATCH 036/160] Added a find_selector function to the plugin SDK --- src_plugin_sdk/utils.c | 28 ++++++++++++++++++++++++++++ src_plugin_sdk/utils.h | 27 +++++++++++++++++++++++++++ tools/build_sdk.py | 2 ++ 3 files changed, 57 insertions(+) create mode 100644 src_plugin_sdk/utils.c create mode 100644 src_plugin_sdk/utils.h diff --git a/src_plugin_sdk/utils.c b/src_plugin_sdk/utils.c new file mode 100644 index 000000000..059430efd --- /dev/null +++ b/src_plugin_sdk/utils.c @@ -0,0 +1,28 @@ +/***************************************************************************** + * Ledger Plugin SDK + * (c) 2023 Ledger SAS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "utils.h" + +bool find_selector(uint32_t selector, const uint32_t *array, size_t size, size_t *idx) { + for (size_t i = 0; i < size; ++i) { + if (selector == array[i]) { + if (idx != NULL) *idx = i; + return true; + } + } + return false; +} diff --git a/src_plugin_sdk/utils.h b/src_plugin_sdk/utils.h new file mode 100644 index 000000000..e2816f91d --- /dev/null +++ b/src_plugin_sdk/utils.h @@ -0,0 +1,27 @@ +/***************************************************************************** + * Ledger Plugin SDK + * (c) 2023 Ledger SAS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#ifndef UTILS_H_ +#define UTILS_H_ + +#include +#include +#include + +bool find_selector(uint32_t selector, const uint32_t *array, size_t size, size_t *idx); + +#endif // UTILS_H_ diff --git a/tools/build_sdk.py b/tools/build_sdk.py index bc3af58cc..225ef5d39 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -210,6 +210,8 @@ def merge_c_files(sources, nodes_to_extract): files_to_copy = [ "main.c", + "utils.c", + "utils.h", ] for file in files_to_copy: From 31f0d7f034488895f4c263df50207184296c324e Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 11 Sep 2023 10:00:46 +0200 Subject: [PATCH 037/160] App now has all the network icons and can use them when needed --- Makefile | 10 +++ src_nbgl/network_icons.c | 20 ++++++ src_nbgl/network_icons.h | 9 +++ src_nbgl/ui_approve_tx.c | 8 ++- src_nbgl/ui_get_public_key.c | 12 ++-- tests/ragger/test_domain_name.py | 2 + tools/gen_networks.py | 117 +++++++++++++++++++++++++++++++ 7 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 src_nbgl/network_icons.c create mode 100644 src_nbgl/network_icons.h create mode 100755 tools/gen_networks.py diff --git a/Makefile b/Makefile index 01d89c277..866a50cdc 100644 --- a/Makefile +++ b/Makefile @@ -300,6 +300,16 @@ test: install_tests run_tests unit-test: make -C tests/unit +ifeq ($(TARGET_NAME),TARGET_STAX) + NETWORK_ICONS_FILE = $(GEN_SRC_DIR)/net_icons.gen.c + NETWORK_ICONS_DIR = $(shell dirname "$(NETWORK_ICONS_FILE)") + +$(NETWORK_ICONS_FILE): + $(shell python3 tools/gen_networks.py "$(NETWORK_ICONS_DIR)") + + APP_SOURCE_FILES += $(NETWORK_ICONS_FILE) +endif + # import generic rules from the sdk include $(BOLOS_SDK)/Makefile.rules diff --git a/src_nbgl/network_icons.c b/src_nbgl/network_icons.c new file mode 100644 index 000000000..8f7a4532e --- /dev/null +++ b/src_nbgl/network_icons.c @@ -0,0 +1,20 @@ +#include "os_utils.h" +#include "os_pic.h" +#include "net_icons.gen.h" + +/** + * Get the network icon from a given chain ID + * + * Loops onto the generated \ref g_network_icons array until a chain ID matches. + * + * @param[in] chain_id network's chain ID + * @return the network icon if found, \ref NULL otherwise + */ +const nbgl_icon_details_t *get_network_icon_from_chain_id(const uint64_t *chain_id) { + for (size_t i = 0; i < ARRAYLEN(g_network_icons); ++i) { + if ((uint64_t) PIC(g_network_icons[i].chain_id) == *chain_id) { + return PIC(g_network_icons[i].icon); + } + } + return NULL; +} diff --git a/src_nbgl/network_icons.h b/src_nbgl/network_icons.h new file mode 100644 index 000000000..0a85afebf --- /dev/null +++ b/src_nbgl/network_icons.h @@ -0,0 +1,9 @@ +#ifndef NETWORK_ICONS_H_ +#define NETWORK_ICONS_H_ + +#include +#include "nbgl_types.h" + +const nbgl_icon_details_t *get_network_icon_from_chain_id(const uint64_t *chain_id); + +#endif // NETWORK_ICONS_H_ diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index a6253c35d..b3ddffb3f 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -7,6 +7,7 @@ #include "ui_signing.h" #include "plugins.h" #include "domain_name.h" +#include "network_icons.h" #define TEXT_TX "transaction" // 1 more than actually displayed on screen, because of calculations in StaticReview @@ -190,7 +191,12 @@ static const nbgl_icon_details_t *get_tx_icon(void) { } } } else { - icon = get_app_icon(false); + uint64_t chain_id = get_tx_chain_id(); + if (chain_id == chainConfig->chainId) { + icon = get_app_icon(false); + } else { + icon = get_network_icon_from_chain_id(&chain_id); + } } return icon; } diff --git a/src_nbgl/ui_get_public_key.c b/src_nbgl/ui_get_public_key.c index 0ee3283de..b3c495342 100644 --- a/src_nbgl/ui_get_public_key.c +++ b/src_nbgl/ui_get_public_key.c @@ -3,6 +3,7 @@ #include "ui_callbacks.h" #include "ui_nbgl.h" #include "network.h" +#include "network_icons.h" static void cancel_send(void) { io_seproxyhal_touch_address_cancel(NULL); @@ -34,6 +35,8 @@ static void display_addr(void) { } void ui_display_public_key(const uint64_t *chain_id) { + const nbgl_icon_details_t *icon; + // - if a chain_id is given and it's - known, we specify its network name // - unknown, we don't specify anything // - if no chain_id is given we specify the APPNAME (legacy behaviour) @@ -45,14 +48,11 @@ void ui_display_public_key(const uint64_t *chain_id) { sizeof(g_stax_shared_buffer)); strlcat(g_stax_shared_buffer, "\n", sizeof(g_stax_shared_buffer)); } + icon = get_network_icon_from_chain_id(chain_id); } else { strlcat(g_stax_shared_buffer, APPNAME "\n", sizeof(g_stax_shared_buffer)); + icon = get_app_icon(false); } strlcat(g_stax_shared_buffer, "address", sizeof(g_stax_shared_buffer)); - nbgl_useCaseReviewStart(get_app_icon(false), - g_stax_shared_buffer, - NULL, - "Cancel", - display_addr, - reject_addr); + nbgl_useCaseReviewStart(icon, g_stax_shared_buffer, NULL, "Cancel", display_addr, reject_addr); } diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 8db6fca4f..074051481 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -24,10 +24,12 @@ GAS_LIMIT = 21000 AMOUNT = 1.22 + @pytest.fixture(params=[False, True]) def verbose(request) -> bool: return request.param + def common(app_client: EthAppClient) -> int: if app_client._client.firmware.device == "nanos": pytest.skip("Not supported on LNS") diff --git a/tools/gen_networks.py b/tools/gen_networks.py new file mode 100755 index 000000000..99b378da0 --- /dev/null +++ b/tools/gen_networks.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 + +import os +import sys +import re +import argparse + + +class Network: + chain_id: int + name: str + ticker: str + + def __init__(self, chain_id: int, name: str, ticker: str): + self.chain_id = chain_id + self.name = name + self.ticker = ticker + + +def get_network_glyph_name(net: Network) -> str: + return "stax_chain_%u_64px" % (net.chain_id) + + +def get_header() -> str: + return """\ +/* + * Generated by %s + */ + +""" % (sys.argv[0]) + + +def gen_icons_array_inc(networks: list[Network], path: str) -> bool: + with open(path + ".h", "w") as out: + print(get_header() + """\ +#ifndef NETWORK_ICONS_GENERATED_H_ +#define NETWORK_ICONS_GENERATED_H_ + +#include +#include "nbgl_types.h" + +typedef struct { + uint64_t chain_id; + const nbgl_icon_details_t *icon; +} network_icon_t; + +extern const network_icon_t g_network_icons[%u]; + +#endif // NETWORK_ICONS_GENERATED_H_ \ +""" % (len(networks)), file=out) + return True + + +def gen_icons_array_src(networks: list[Network], path: str) -> bool: + with open(path + ".c", "w") as out: + print(get_header() + """\ +#include "glyphs.h" +#include "%s.h" + +const network_icon_t g_network_icons[%u] = {\ +""" % (os.path.basename(path), len(networks)), file=out) + + for net in networks: + glyph_name = get_network_glyph_name(net) + if os.path.isfile("glyphs/%s.gif" % (glyph_name)): + print(" "*4, end="", file=out) + print("{.chain_id = %u, .icon = &C_%s}, // %s" % (net.chain_id, + glyph_name, + net.name), + file=out) + + print("};", file=out) + return True + + +def gen_icons_array(networks: list[Network], path: str) -> bool: + path += "/net_icons.gen" + if not gen_icons_array_inc(networks, path) or \ + not gen_icons_array_src(networks, path): + return False + return True + + +def network_icon_exists(net: Network) -> bool: + return os.path.isfile("glyphs/%s.gif" % (get_network_glyph_name(net))) + + +def main(output_dir: str) -> bool: + networks: list[Network] = list() + + # get chain IDs and network names + expr = r"{\.chain_id = ([0-9]*), \.name = \"(.*)\", \.ticker = \"(.*)\"}," + with open("src_common/network.c") as f: + for line in f.readlines(): + line = line.strip() + if line.startswith("{") and line.endswith("},"): + m = re.search(expr, + line) + assert(m.lastindex == 3) + networks.append(Network(int(m.group(1)), + m.group(2), + m.group(3))) + + networks.sort(key=lambda x: x.chain_id) + + if not gen_icons_array(list(filter(network_icon_exists, networks)), + output_dir): + return False + return True + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("OUTPUT_DIR") + args = parser.parse_args() + assert os.path.isdir(args.OUTPUT_DIR) + quit(0 if main(args.OUTPUT_DIR) else 1) From 4bcd61edc927fb0f7b10a6d5777f0be02449c385 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 14 Sep 2023 18:28:40 +0200 Subject: [PATCH 038/160] Ragger Stax snapshot update --- .../stax/domain_name_non_mainnet/00000.png | Bin 8691 -> 7984 bytes .../stax/domain_name_non_mainnet/00002.png | Bin 9597 -> 8915 bytes .../stax/domain_name_unknown_chain/00000.png | Bin 8691 -> 7724 bytes .../stax/domain_name_unknown_chain/00003.png | Bin 9597 -> 8665 bytes .../00000.png | Bin 10847 -> 10786 bytes .../00004.png | Bin 11833 -> 11770 bytes .../erc1155_safeBatchTransferFrom_5/00000.png | Bin 10847 -> 10172 bytes .../erc1155_safeBatchTransferFrom_5/00004.png | Bin 11833 -> 11155 bytes .../erc1155_safeTransferFrom_137/00000.png | Bin 10385 -> 10324 bytes .../erc1155_safeTransferFrom_137/00004.png | Bin 11363 -> 11298 bytes .../stax/erc1155_safeTransferFrom_5/00000.png | Bin 10385 -> 9712 bytes .../stax/erc1155_safeTransferFrom_5/00004.png | Bin 11363 -> 10685 bytes .../erc1155_setApprovalForAll_137/00000.png | Bin 11662 -> 11597 bytes .../erc1155_setApprovalForAll_137/00003.png | Bin 12590 -> 12528 bytes .../erc1155_setApprovalForAll_5/00000.png | Bin 11662 -> 10988 bytes .../erc1155_setApprovalForAll_5/00003.png | Bin 12590 -> 11914 bytes .../stax/erc721_approve_137/00000.png | Bin 11662 -> 11597 bytes .../stax/erc721_approve_137/00004.png | Bin 12592 -> 12530 bytes .../snapshots/stax/erc721_approve_5/00000.png | Bin 11662 -> 10988 bytes .../snapshots/stax/erc721_approve_5/00004.png | Bin 12592 -> 11916 bytes .../erc721_safeTransferFrom_137/00000.png | Bin 10385 -> 10324 bytes .../erc721_safeTransferFrom_137/00004.png | Bin 11363 -> 11298 bytes .../stax/erc721_safeTransferFrom_5/00000.png | Bin 10385 -> 9712 bytes .../stax/erc721_safeTransferFrom_5/00004.png | Bin 11363 -> 10685 bytes .../erc721_setApprovalForAll_137/00000.png | Bin 11662 -> 11597 bytes .../erc721_setApprovalForAll_137/00003.png | Bin 12590 -> 12528 bytes .../stax/erc721_setApprovalForAll_5/00000.png | Bin 11662 -> 10988 bytes .../stax/erc721_setApprovalForAll_5/00003.png | Bin 12590 -> 11914 bytes .../stax/erc721_transferFrom_137/00000.png | Bin 10385 -> 10324 bytes .../stax/erc721_transferFrom_137/00004.png | Bin 11363 -> 11298 bytes .../stax/erc721_transferFrom_5/00000.png | Bin 10385 -> 9712 bytes .../stax/erc721_transferFrom_5/00004.png | Bin 11363 -> 10685 bytes .../snapshots/stax/get_pk_137/00000.png | Bin 8941 -> 8875 bytes .../ragger/snapshots/stax/get_pk_2/00000.png | Bin 7644 -> 6654 bytes .../ragger/snapshots/stax/get_pk_5/00000.png | Bin 8650 -> 7956 bytes 35 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00000.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00000.png index f992e718a17c0a7952eb569a7d3a3ac7662fe27e..0108042c1a152dd4ed028f75523e396e235ec0ee 100644 GIT binary patch literal 7984 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 btH=x5O@T-ExT*kO!ewl&9WM~h2i*Q2rO(56 literal 8691 zcmeHti#yZ*`@ck~94bNxounF3&Zl)!sqpsJn2=LQ%pqnD*+M8{MUhk9QH14~ISg}N z42xlynL`XShZcryzOO#N>-zl%zu)(JeXsX+J+EtfzV>?Ve%`z9$9+E@&%ON1;-=Vs zx%~nH0%B&juKz6{u>sRiDWU*+h^xWIj7?<_%MWNy2 z8pnV9=jkjW8x^a3+*#ys)N|$Iw?uf{8gyZG?1e+~*tEcGeArvGpoFw8P-F}o>J+}i#=<&5n3$#(1C|-vht9BeFGF87wa^q%A0I&=MpB8wBA_wYJHv=q5d=XY>7`0cX#;v30lMrwX%d+6 zP9EM-@54Ll6-YKH*>Cecj3c_Qq#UfSm3z(n@=N|1Ik8zYd+BSB zhjr?VL3=whH#SBdL-VZO@fAPnnCdW8_frg2^RlT$%+#tTO&Lc;EunkqXd~xa&XX#F z2Xqz0?t+Qf>PnO3Lh zrWTNktfF`vd453YXKl@HlcZ_#e2|{P5J>fbTx5(qH)&l%6u4J9m!5MZ^t|7nI~q+Z4nhT-)gFw#M}g6TeZ90 zkX8>8zY&M_unRWHnbun`zDM?YcdB#d$p|ZWDJ55RoK7z;$|W2NJP3V%+AJ9hD=wfBQGl3-e?Dfxxl3qb}z zV3pq#MBuXN$ZyqMHH5I_QLIS4%bO%u=lwSp-hRTFXnFc6q>$@NMf`tL=?bJe=4PYIulb4+gXYG^`h>x)`xFe>ToSnbg0>;3p25L9Yh+Z3~ z#)bFA#o!WY1I5fb)%`M-Lyp>o#MzojyU@yIWn)oPZ5%DBLs|M{S($@uEdNrsE^tZW zMA^#gQ)V7IqOBUAnEU^{{i2Unzm)VRE6buX#jcGLo=br_E_xf%R7i9dNcIE+)^TF%wA)B*FIezG^L+Vu8d5}I1NFgEU`;izD{ zmB%6WyN5jU%)CTh;lNV5#$CIhuT+i;92JuOA2^0=y{K3i)iX`-qMq~Y>wOq3j2QrC zrH%Vm@9;M0s2yH4%{RwUT4dr`dNGJ-DIC{2Ig9<|6=sr?c91`ii;ZOgj?o;G>q;;x0-_mytBv5+2B34@^X<9Wt zBY$7iKPAla&QYwfB0AVlQ?yktiL7-DlTmrQ)-DyS;4t(>fy6U9$3w*ue58CKemY1DleMe3ECWN93f({CKWvnmv)?D-S@p2>AxPJ1gbJeT>WvX62 zD8$SBr4-UW|f1zKi!9ktBk32HmI;jzS`>x-2-)g20W%%4vw`M8R zzTsH9{Z-FJ#+~FgCknSAjQ#8=wXRo=GMWw^a*~2lnDE6X52y5&p0{UJ(#)N2-YAge zxw&4^9K*)B=vh5e7Wrkg{FHevBAUJRIYYG{>I~OuqYsx`kJ7s>j&cKiFsX-LWqFWs zTC!W4(r0rL;yrl3FLt{O))FkXIEW$4I3s>CDXv%D(WZq2 zETWCy@48ezn1fQ($UZ8w z+^w_(7c9Oc)fjk!hIv%u?aYu}L%-x#Jz5kvX2_S8X^j}y=Zp!`b}gi}fn)aAQV_Pz z=C3*%AC$V=iCawcruLrWo|bs9PADRg8RIigjyjA+9kv*t8)p94jF8zo)T6!CcL{o^ z5#h=APmVmYCWKnJSIRAUULM%(7YuKd^FCtH);zJgaZ7U#Wk&iDEQOCnw~syFjMRqe zrniC#d(xh=F^a@D?WP&lS9c1I8hT^kbo6)kNbSHxU%4HQL;WR`UZ;!LlKAg`_<8z# z^O^Ec9-$yJfAyLMDNsJfK`MqW6u42~H?D`Om*t;ZsKds;!xenUFU)LG`n~MCLIO=X zF3F{N=jmqT7cxg#)tYV*-2n@nyyh*{?M}lZ;5P>-H<*L7Ca{R#GF+^2&Sgz}IQf*$3OZ zwL1cQti^rX6O7YU_4|2GO`MFDrpQ`7=fIX{&T?%EaH_T7MV*o9^9^>dkjJ`=Exp?V zd3HLHnV_U;KaMnhGUB6?ZOA(oO*(FI0lXr2tOPPA=}62 zG-CcGG|QiEYQL z2X1rR2r;;xr{!G(%AHLMWsmWvUmU|^ThqV;so4$cWe&wZgl$mH&F}XnxS*GZy@HJt zX)X&JQB?ceNrdT1e@?$RX5Z4s*UBQnI2xB%8Lt{YCYPDN$>I2K`l8z|sDD)2oBg2o z!jw{nq<4^Zo05Ft`DCBN>zfUWJcP~`xSoE-*hw~4U4~mQxb)b>=z*y1o(<&Z36fC- zo_5W%dHKD4SxGxLgXk>%)Sh@cK9{|@7}asa$8I0byBmstLm=BcB%WT{pJVKq7%W_c zH?^-oguZF|l@qX5n$xlDAr~$TgFyWJ{4#qy78O(FPy8hnV;JUZGG6YhIkq?iQTYA% z@luZOCf%VSV|v!H1qan$V6j+~Qm1H1&=)|>r#TTXcyZ;1hftK{y@bFmL)h#byZ!X4|&&9>M%y4+`F0#^HhOLAl zwb93u|Fl#RnuFpavu{F8!uPtSx~~h3ac>qISX;d6$O_R~Y<3OuSkCdw4sM3-BXAg~ zm2L4tr}vqjEsPwJo2Q*ks=Hk(j@D~T(Sg>tGv4EwQ+ng9V64FoyB9>f&C&nO1_F&) zxdE<6lv*fgWZ&@4$RAoBnm^0}2-^|VmVd2-fs^sySGPB}@NZ7jpi(9kwk*>F(ca%mJ=7V( zT!2+L_1SKm2^VSIGT)nXgIgT0IlH<&vyL|#{l2|?RNR9!G)!Ob=$oHcI{Oj4%*|PT z(@^J=So-sV7)T)g!B;bpiI_uBfrkhG9sl~^e_0H0w-*KL-vR{@%j)Uu*Ai=8k?&$t ziU5ihuPh=S*IG%80;sy7A==D=8q8mz}m{j#9sXh?rQ@`wg;! z-sah1+@Am@7~78)FHlpji-uEm(%x#1QyAVSDRkT3K5E2duVDk0B0cv zZ(6-&)S`aqnpe_%zfM-tmsxEZ0Sa`?Z78l&ZDD#k59~(8Zu7>$J9(z)#= z8pMj;#lRs~dHL9nFbp^#`BX`XL4%d=@e*>xtm|F|97}~!v2m>*Q=->TZpi~WK*HJ) z{y|aikbEA}kJf4>)gGWg2#}2pZh2+ym+h((a8L;Dh&Eq*?lOlc8L7{1#Il0DAx0Z8 zveq__A7V5+!KKn&gCrG}v1>cU#_FN!?yW z<*(K-K-zMUNTZA4M|>7@Y4e*Ex37F)l$f}BhLg2;FC%Q+19@bg+z1k1{o^;T1dTs! zc9GUm9(L0+_)c-Is)O-NNflJG21M)?1hj{wmP~o=xmnj`clp7>5@}N_$U8g>dO#af z@G^JKU+-t=c&*o?P%XU==gkh|*B+XqClJe>7j>jsM{n~PC7(U2sVW}TQghuO7`1~4 zkf#jhbIO%!aV1>xFyFB~nHo{N`$NN4Q z+-Q*>|DX6ITyJN)_hx6~4q+?v5Y*Bd@~-Oa6n)IRc-}X!^oLfD^K?+yPpcI}@5V4S zuwC*g%g`SS%h#Qa6F);d5B_*wZt%i!QU<)_c0d86G8{+NpSl_x);1LFy?NZAZ?Owx z#i3j-*iKm^v0r`|<@+B;r1-9CnBJ*tRxKYizYyxW4rIiL57)@CK6Ux$)_}q40DeZd z+^S^j6&$c;dO?LB2Z5Li*)Z(oBad{4-|)mFxw##K34Gew?B08v2J7lw^wp}(-jOJo z8BYv*tv1w=HgYC9`VOzWl+Q3HE1+-6Csz43Urt%^ssK@abl{GDI`Rleb%1fS=Rc4< zpR7;WR!fsr`kuI+K`e_vxG5WpB;EPI(Bb2(lby$laltr8&*1QT8k|e9iVnmE`L!2X z<_WovsKJ#ZHCH46KDYF`CUIfs#g&6?0o=EgC-pjyp_XobQf2I(8#-F%DW^KytbAL? zU@z)FLlg*XCz(nrYs_qhGT>uWF!;>D%*W_w78?)7RsGGovWYJJvy10&(AIQiN1Yrj z4}cQgu2{-y-HXx{OS{yu>5!6quQ4kVoyZ-%rHX3pAb@#!{+1jcD(h~$q2^(1cS*)u zel4u@7T4<0VH2kvF%(%P7si*9d8$q5j*4hM%R538ZS_ZfO17py`@a%RYAkM4rKvbq z;?A>%7qcUu1wNqV{y#}KJA1D98!6^EiVD=Q=*lAfS`opT0uwqJ&;L974N@OKA}Azv z;iVz08hA{S2UH2J1B|MOCh!?9vK;{mrhQYVWlYOQe4>;*t#dmZfKjkm0wg%nyvt)wc9`->jYb;VnBV$P!Wkzjc?I#2$-ViV9$>Uck`k+ zzV3EN*YBH88*4Xu8SIMF_Wj4i;|3F0MD|!$I%Bg=5|1r+45)QzWW=?~K89ACS^>(y zq93zmczGjOn9t$VIH+%^Ya~qz2TsoCs!qj)s|$Kd;kn0O|LAA^;pXZdrN&LsDBgFL>VE8b3ARL8|b<{EW8y zfj&;2KbZ9;h-0rA$SPi}ZdUSjEjLRRU1Fq%3jk&L%gZJ}bcx=Zey3c^oWx+yJXy6A zKeX}bKZOgHuHyX`T2QR$O3e~_-@KDJS{Bz0$O zu-)OGZDOs1dNgra1}HA@{ppNa!$&e0-kU$3f=e@(`Z@A&iei(p0nN`lV;0~@N4Z`2 z>$q}#e%v2S0&1@#MKZ5smc)z|gl8NX+^L zUJE)dtH1iLIQL8?%@-9daw=25Pqd-4N^}|Un>(c1L;TfMO^zt}B!&reCaqXXEE+g4 zVg&cXD|;p5;PA@gf-NqI4CHrMP0+;p zaH^}5OXUdk!E>N}^Wsv0NAwy<{((IOAkT0|+`Wpfx3qiN_;q04fzsQ7>S`CBHPxZD zA&auWSq2hO2-gw5;>=3JNgJXbAYupLwDbzq{kGq6Lwu36lah!HrOA!IkD+gRU&O7Z zvMGGiZJ29$i4R~|NJBTx0q+MKmcZ!8mWBc+0sUi}!x{Fib|YqiOTFWQ^S>446bC$& z*Hs?_t0|%O5`%GoZ#iqsH1N`xUo@5Rf7bIUFJUT+MDertg9v4@nv&CHV^sr*IvT#E zb>;U8$el{g?kQs8uJ84i8TG5zvyTX0dCl1TeG=y;i59D!TilO&nCe8ClK{l z@C9ry>Gem1P0csSDaiSjiZT~-a26Einn7Q(oB~z5VI8tgy?>In57YkWu=*qd!#Vi~ zlT(A*&>*qdn?}a{p8Wa%g&Y#2*>lREbhl`0nf3Jh8aFtlEvcca#HoI-p)W>**YGBP ze&$I)OuaYD=^NdrJeqWPtMz7iJgTcg0cVW9dDrL#ik+CpR+`G$3=^PGE_sIhbd*Hg z{&nPn;`>V7CC6>s#p=z3cGt1f+;ftiy*(R{UNFORJgJ_^wF|C@pvflahr2byM)Xr? zxbw)C%PEu_DJ!_m-N$NCLSr#aTfY32tYrla;d%iajMk4%kB1eBhbB`BR2 kD|~rRfJj%6j-W&c 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 H_TWDNq$iJk diff --git a/tests/ragger/snapshots/stax/domain_name_unknown_chain/00000.png b/tests/ragger/snapshots/stax/domain_name_unknown_chain/00000.png index f992e718a17c0a7952eb569a7d3a3ac7662fe27e..74fa840cc9ada8dc029bdf896ac9ddc36a6ce08a 100644 GIT binary patch literal 7724 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 S1b*3IGcmHb)^OD$`F{XjnEKlQ literal 9597 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 G?f(O>q>K^( diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00000.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00000.png index a052cf5b74706d730be43c5feead7a557acdb44e..793dc7ce8ef3ae655230e047c1e788e8de86169a 100644 GIT binary patch literal 10786 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 literal 10847 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

5KpimU+@Nx~fv(vu=Y*bDsD|XE z0>6((bN6TcT+&eMjcj8tdOWAjTJMGF(%!7*E_|X!D`|E5^aK^6=V@s({CiAR-&DuD zX`{IKDOF|rQqHQ4!ZKqFU}=8K@)X8Sb?=$(VXY-_9MzxPdAPu#)iVh*dQ#qEXyzb}E(XJdnm$in!4$KSKG=w_VX} z(u99fpGM`GL)}+M0boq418hK6-S=~>D#87zU_a8B+vzakkTWA{eKb4EP+{vPCJd z*_Au!=i%93d@MxV#-bWoSe`YC88`;?uc*ysEGtY`Y`Qbktj7rms{e_a=RbjoaCEFJ Y&f$WrqZ1sc>1NW?HNIPW$0^~z0C()Sga7~l literal 11833 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 E4c+>kHUIzs diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00000.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00000.png index a052cf5b74706d730be43c5feead7a557acdb44e..2f11ba6e65e19ed62cd7980e4f528d54f4b5132c 100644 GIT binary patch literal 10172 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 literal 11833 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 E4c+>kHUIzs diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00000.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00000.png index 4db1d2e9f33e7464ef8dd2a75f7bd0d94a73b7a4..84aef9b75f5b1c2b951c832ef82801e95d4f8f4a 100644 GIT binary patch literal 10324 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 literal 10385 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 +38R&HWIKubK=R!m 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 HJHGrMwN!}a literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00000.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00000.png index 4db1d2e9f33e7464ef8dd2a75f7bd0d94a73b7a4..b4c13a184ebc7516a341b8a37965693c57a121d6 100644 GIT binary patch literal 9712 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 literal 10385 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 +38R&HWIKubK=R!m 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 literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00000.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00000.png index 3507984ef23b94b9e71a8368997b1e199c4859f8..ea3b0441ceeab2e91aeec816b755bafcedc52046 100644 GIT binary patch literal 11597 zcmeI2cTiJp*X|KeK&py#0i{C(q=S^l0vI45(#6n}-b-kqhy|3Yp!A}E;h{GH2~s5V z01*%Z#1LtTKp;Y-hVpHn_nkR^erM*)d}q#_H#3>ZPIm5n@8rJMx~|_^FYlTfvY!<= zOGih?4!(2y9v$7OS9Emr@0jU&?FQCvSXlerkE^p*R@cd*}?58KiBFh28T<3Rs=FdOMuUHk>C`@M|pvK7rd# zZnz;+bADlS6*))QExd2V7k`7R)Kh>lPAa|hVWlrl1(G2iVPO8=#4gjZ>uElQ1VYyc z!vckhOr>%pFjS4yqlpCPY}XmMI(yOMu5K}CN})z7Ra;~fcyBUd5cDmFCHdX`9t$*G=PzdhAs>dJqoRqlu353?h zxX&qOi-RXr5>WGAtmpK&fKRl9I9TO>x!S3fQHAx`##YJ1aP&Dl%Txc#)<`X@ z&~xUK=abY*l)N0z40=G)=8|MX6-#F}Z9j&874NxN!uc!*X}oVfDd)r;_Z$p^!u`&u zgvn6<;`_`N_xv0T>feGJaSLuDwNcBqq2uF5-8n-o~jOi*vSm zc(=w)z0)^@nI}|I_+b)ZGU^a9Sf#rP%ZI+*U%fZ4=RVUbIEhm%R6k>2{!Im9&byWSF&(@}xx`!Xly;Iiu`ce9< zXMUut_2)5RMxFwzl zg#iLPv7awb}5{p zL>f7Z(hs|M_{oSFo3X)elD-tw8osd-*f+s&3m9i*b=s8LZ3*YWuv(uIgxvgmKV2N0 z-V+G&#i&5at(+z4S<_TvZ5g&@K!0U$oiL+bF>TF1JZHO?pj~pb`fBvDF!NJh(Yhb2 zw7KA{tyiRTkF_07rRh64=SNWA=`|1AvpQNU9zJ56GLs4uO-siei8sd=4H>i4>T<=) zJq{P8Un@gXqr4Q$6ctQVC#8YW!uG8)KakXU^m_7{E+jbf>6;7nYjd5U+;p0cC4MHO z71&Uy`7S;=Z5GJQL$h>o$iz}a$B)pPo(x0yCm3l#E-qWX^bV=m{>;l010V|u_LT7R zu5M;vI>A{D?nBy`mHKX0F5B!k;^0D3*@WlE=N`h$w*Up zd6}vcPsA>EGn_3PI85m3elQN*-njR}umsHf|4Qy$vpeXZ(2nsR9t#L52LH`c)j`2| z7VSVNyEH;)?8)&Fypzz`2D)j;-Gs>7t}$y=^TPG*XNIUPFp9 z&o&q2R#9jb6-%=&eDQ%oWu991FDaL2iGzjuON_m7Q!01D+6oR!YP@9(xb;zI$kn~C zrk?rysN)MNuskks&2irm2Nz2VTusgyp7SqJ=1{MePDIwwI?N_QY#$?QaLsS+9$i4F zSs>ncJ{sKOrS_{pbe4I?(>$jx>YL{xj_rt9U#E7Xp;%&N)gy$7k*op{u}ucT>uKgE zPT{XVf{dvv`%#6nXGu5TieaeptK%vO6h}6#0y&6RrqF5P+D{oilntm=Vv1Sw@*+#vZwSb5W$}#2bfw{Z%#pnn zIK32vrtbStT7D2j&^hqQ;I3(JlZoHJ1u!Ip=dju9fS4s7$}s0{H9dMGBy3e+hm0x` zgB#GoC~NlxCxm!R@0nbRO-gbOn%Hj({>BlOx=$Ncm<0t?T=Xf@Lk+!CBprH4xXRwn z2L%utEC%;C6)1s7Jl^ihXrwEF*!HeriRLU4R7U-S>WHcTjZiUEBUdKU^NTX=-PZmFNnbT`>q z4w69!h0q5#YgE={X&*G|Sw-&@!AaDJ5KmU4pXHs`^L|8iCNZq73atO+uVyA7mG$z6 zx)RSkiPfBxYm;+c6>7|bjv882-!v0S7LMKJei#CEiyK$t_oG=3M+|dTjUfkxb~M$H zOO@{1mZ>25@%;0%jw9df#Hwk|x8+%@a=cY0ru#{MZorbmThZp7A-n%by@IUSh&MqO z4=cFzqz!LsaG6)%S^dlK_DUu1C`BQ@J+ayMgNtiTd6}n|WF6B{9_yj9ad<{v-}2DU zl$y2KW>uQ+kflhlP`_J}k6q><@3-c43ZXMYygqE8#K>o4&tc{gCi$6q-1?*2_P@eH^70eSxd$JYl#g_lKig5MZGGuN6j;>Alrd~s z$iwIS9aIXRP;pP%-&{d%Ty{*$;0~>vIF!zb9dK=+*+e$+p|sw#7Fj2{A2dFqSGE)C zSJ3sMbvRaAuWcix&yqmtToHQ$c?eA*j#0NzAUaOEHQH5Mn_hEp?B?D3m;lmwIwX)8 ztbK`t$-;TYuVwUYO#jd57sty?)+MNqXCY1zXIizJ`8;!nM$+%SRlF$OM!OYH#KH;? z<(_vza`QSG^v>v^dQ;Tr;#58=Cd?$@v)ar+~&B zLY0!Lk*kwt>8t|F6{gDI3S7c$LnD?k)AM3(mjDMSJIMXo(#|E#k%|hXgmOHqyqQdS zg)D|z7U~p{op{{7%-nqO01F6S;U>dhBzN0~kKv?T%&(fGrE_^K_| zC3M79h1Fpy=wac zyQJ^kTdEpdji8L{KZu0;%O)%QDJ!k2&AzA8<-7n$^GP_2e{qmE6kGu$-lpF2ByWq1k_kS4T+=gXG@-0=6pcd#BA2Q}Rhe*H3{?Z>Q)CT@Y&N zJ{E?Gxe`&__47-C>&$Y{rsL<}Gb&d%ls=X5q2zb$r9Q0&XlQUIZfUazzR?D@WXKB( zY&bW6f-1QtJxezq<4!7p8%aA7eqB#5%}eZt?^I}eIESQcjSVkHF?0?!9G;7Youua} zmJ&jK`}K%eCCltODrB{QhX!a^Hl_@?_Yz^N$Nc2??whZLVaM1oj03c}kFu0-hKDYt z!#;znOWolA2#M@*DBQE^`D}Jq7*E?+pc~?{Rj|S~eReV}>^u5%{8gOsU$75C|z~P;^*2Z;*3kCq?CKQ zxT_sU7BT96=7&qU_pU3G)mzc=cbxOXWUePAK4eE&RmtHbj?}7g#%uN`UUdJ?Hg^-^bT3T91lcD zwPhGNPO(tlOyv)kxL4(%_rJ-5)5WRkQ8TND@NteW^NbONd1>))?P&IVzN3o~z*tBD zTjFoQ!trihPLgEJ#)E=O4i@kr+0=D^XW8I&9fcAJBDdhKSe@>R=*aLbiPVQV zL8~E=?EK#?vD?+Xwmb#u)qcc6l`%b4idPd7S(6u|79d4$Tpv~-8%?Oiu8mE-dJqZs zxwTR_+3xgADsJ0|F;kbw7J&`-zOMV|$EOfuuvn#Z;(91;ZZbzLR}WI-HnI|ey#Lvr zqSK|rTm{Vgps?`Vgj<9$_9bA=nV$elCz*8cYI4Th0lV#?ZjFVN#4RV!A*(-yE7hEj z;iCP{UX5w474KMX!Pk(J`}!Z|-9cNcyPKIF;pYH)gHe!mc-(aWBAVnOr`U>rhhi%yz1r{{;SX;(wZHN73xTR1tofcf z4uQ5f)E1cS(%Q>;Kd;4SCb*`&jAt|De<`3^_JZD?0Mt;FR zmqw)AFD$Zl#IS%cO^wot2;zMqTeP*in)C1RXX0;8HkE8d&Rsjn;ScA|eO4Q)A(U@; zo!wq*i|^^Yge>*h)3U5_IY6<4S+1a!%FgcZOn&f;)Gb0c3^#y)br0r9KmjHsxak^( zI=_-b9KreTz_F!pNnal1w_!xMwfz&{>?^YGM-2T_xfczZm=v+eW2Bt`F>*^kp z$sJ7AgVe(=|9Qj9b-#j-4z`Vtzu3Jy4Y?U*2F3ce-~cmf#@^PFpsIKu%1X~lu&}b) zI-6E34JaI)gZC8LdZ>4wEu@{1QRIc><&Ns@NZ+)KhJ=ur*xz~wmqeZm@N`_IT|W3i zXv@tvbbW1&yo>5qm#V%=yKx`TcU(-!ns1l?u1PXCVdEll#CK<|ocH0?~x`ZJ-${FXLJnTKZ z2AQaQ`@Ms*hEz+_OeyvtKCrUN;icEvhMT8VKI?8Z@;KIsLa$)SmCwR>2Icz-{P{xX zo_U}fd^C;oUa$18$j^5j?=;m@b58zL`$j&nbwSTzXbT>W@Cx3uTZ8V}y-Ec&$s z>#8bT2q8l21_9YwlL^ADN+%kmT{(HtsgXJeVv4q1Boj#6kw4o*aeFxH=$Tt+T1MUfu99+;I}R+DFpk`iy4u9tZrsVGjw?8o4zd=$ zAP2vOe`&ECvNP#X)&sz^BdmwTsGr^R zCF$L?5E0*F4dF@g&ky8X?NSX&H91S98%{bvbtXJ)X5sFz8(h=N*Jv|2W4F`57vTOl z8tE9)%-|j3Z{~}itQKA`RnAkJeeXue7@Iz-_c(tr&3;Q++^9g2t=0jS8+%gX&f<32 z0(xhM0I9rMw>1!x^3L7V^kP~2t4jN;S9^f`DVrR+ zh~)^(%L$+6Iv(Vk3g}%4IiQlve(g?@)Y)TChTj(k?SEcFHv6uB`xIMGBv=$o1$BPR zpAS{f#Dl*zSKoe$*K?JuyD$=R6B@lf0m;(_GEAU0c_+7Z(llf?7_y9Lj|Irf@WYjD z<|?^j=^<)V8~)6VyWILf7A7R_Xg>V3ima&^icu$^W{h_%eHQ@NRsck*E6$cyZ!g%M zXH<&guX?0MaQQ80_jypA{V_0dVXJlJfAhYiMtfS7Xq!g?BJ5_ ztLSy@#49Y0!E-$Nm*4hhT_Y7{D0$`@flEIk=v{X=MbZF0wu&^J_~!Gi?()tMq@(kL z8Y$i)2GIVAR4I@S0fi)a6U5QGsGKU-F1WL*_7;pkRFV$5g zCpr*nRjSk2vxd|=$G#i)*pB=1+h5uE1u6Pht|4{*7^^W8r>vQdZTLH*k=wGT@2!!DmR@4l?A zS)24~!uvHHYIU56g9+-l+r&-&ekFG>T83NSS-q%&5q&pr=tfGOd)YvsKrTKEQP157 z4xYWS(0y|-SMef-D&FlYL06>Mo2&8{|p z%9`&J1uiwc`eT&l1&SAK>@ry+<=>}%@03LK_-nC0%Cy%Dn$mzhowK+)w`5oya%_z* zxHW#Vof-Y%^q+!m?z8_CasN}y{%i7#D-FVINlXD#5Mmh9={K)^e{gSCSg}Qg?w>+frp6V z`Az03!^FjD-Qa@`f1Fz46;g;%`qHvK>uj@*aGE*yC5{Aa?GYHECW}@ocYbY6V2j(n zW7=L`QPJ%CRCJ($43Ri^->vw4J(MDUS~#uifH|5F1|@mcZb$ng+aE3b=vzhQH&>Vd z0G?YP9XTWZu6A_8G3g_5sicFl+*tzeYc$`v=?5hTIGhlAhkg42%b_lpSnO-xR;im< zjQ4XF`3=Rc@4`LzgwhN(uiX~vx2Zfo?x&OlNO=@LtwT>Z4L~n{K)M_t)c)4zO~@fmP$Kq0vq|_}RAgSw znh9qXp1l+Aw`_=8*-tn6;@6_QeNGeCRwHQYlOdb8QY1VzklJ7J41tG1kKT&E>`W2c z=5P-MR~Ac~=qw|e?p*i;GIo!HL5&UPCsPDqu=HTXNSw}}0V*)x!o=Nqt9l1T z_iI<+_sMZdZ&L*NK73@Nb=0mM6c)R@=!%r`G)#_Bi9BYjG)Ek%Hkw7>F|8Qudt<3} zXuLBVqan1Vot5SXMgQDpnsD5ZNh3VuU7L~K7pv}0C;{)q_~MLodie@`Dxf_2uT{J< z*$aO?0A=VMU>@!NUL9z-j@`;B9UfN{Il8lG5UoMKRuG@X{NZffC*;Rz%djR(0{O

ZRO7v^KtH?|>{llzQk7bHlWPHtusS8&>L2=Y#GL;X204_n??p-73qHIX5n`6`HAq)kl4og zh>ex)gQ_kBJ#10nD03b57t%(}4dEa61ce&=K%I780jI>2`A5eSs zf4C~SBeI6vVa%kKCwHAC;!BjR`d`Yj+53HI)@c1`l)a)_=|J4jUtM{$40(DB<-&vMC$}i0~ClZ@9 z-P?vIcaPi}Sx{d$B4*Y@m5y;TU`5IpGy(M`2kLi`?KtKAzpfz$nJAV%=pgvDxP85q zEk1v|ljElENb}uSsrvA!DNCCYA4{SB9fQGNTEe`W zYybjW66l8mh(C3!oP~@F%+jg;V)w(cXiQ4G+L<3?a8**rPMKFuaQjI3^`5!M`3}M_ zme`m=kG#&l(;_3+8l5m2AByUS71>CJvYOjKZ^x;BH%X1pBbr%$LB|q4Jl1|e#DAch zOB48?YmPaT`qOeU2W6xCw4wK>?c-p>g{}+szoz$ptA~p+27}_7fe`FBwX5U!UGRv6 zKfU)LnqXt4dI-eCKp{i(kKu#*<~}VrQRZ=#tLUJJbDQ@8K#yG$Wd`&b&_dI@|B|^1 z;F;j6Rm&Z^OcyZ0R_0s${{6_tSSbvMQg(%%lViF3l$XI=IpwzcS7=Iq9ExgPd-Z%p^ z$Jq1o^>03D{RQ;*Z1%SE#;GRZe=NQEBD$pP;A)2lpzw+%VYdq)zLvFedL*S&~{`B;zhrq>|d z(uwg!xnjdJaam{yhy|R}*gs1rWu+D}@p~$w43S(s;8$h>V{w$vnjb&BkY^UwhF=L$ zDl2Yel3w|4SKNyh0tjnlnwIu3g8biKM^ zeizDLX7Dc??EE?#?xQqUSR8xKXPXrn33zT-${kulI*;tU+(#h(CeD@>z#SXY?ctX=AQ!SKB`-Y zgQ@HlFa@EHtWz<$^lESVuA{lMy3hCz`z7>UkqSbxd|&)l`nSiQ(i>h7}dFlwH7*M)=9zR>mHe z9;vz4Gfpv_v&9ZdcbWvw*xQ#3w@ z8Z#njwp1nkPisS`YnazU`DNbGnmR+b8Cc4E*OU36;U1!bB=fKa2=4J|-+)+qbeXnp zzF0>jpGv+`CmBJH7OwRuI$y}7-4p23=WfQHU8qdKem;lm7XBe?V2Gqi?J!OK{2CDP zD7!J%PYbG$l~g97s@06{+({s}7^Z|s)$x>oKRv_OyQIB)9kVb$iNgC~RZ?P0F^3V0 z8h*KMzY8@;fsdW}v{X4T7c285)t1adQ49E)K(Xii8!0Lf45?9O3E~|)9+T0VI%n*` zDbjoEP!=7ux~07_-+Jz3^@1UZ(4$A)q(juYkNz6SlMFT5N@n65o)K)RIpU}J9=p`@ z*{~G#1`{7dJ1idt#}JnX@VGT^rJOL4$#&M(HX5Qpn=~C* M-}H9PO{XXS1qQmP`Tzg` literal 11662 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 T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00003.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00003.png index 4ea90064d21bea31826c5f4895a99f733e539158..5aa28c72c386074e1e29124f4d6cbf8ce6b032f6 100644 GIT binary patch literal 12528 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 literal 12590 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 T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00003.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00003.png index 4ea90064d21bea31826c5f4895a99f733e539158..c51949c59dc0ddebb4ef0fd6cd16c72217cf336d 100644 GIT binary patch literal 11914 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 literal 12590 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 M-}H9PO{XXS1qQmP`Tzg` literal 11662 zcmeHtc{r4B+^?jNB}uZY>`X=WJ(WrfsjQK8EZMg~mPw)_6lED(KZWc&8OxBEG{dBc z!C=TTF*AgWWz5WZ{NDFm=g;%UdtK+8>pJhuAM?yy_jBKK-_L!2Kg;*~;#6&oA-J1%zM7d@-aDmJ$BHfGmM?nM<)r`HNgjOg2LwD>r2S99Qf zt4ALl9ZoLxx@O0Nur*5c_Pe4F)D|`m^UUbpw@=os4$H;Gu7B~&I z$2r@qB4;+X+|(ZScSjSBT;^lvc`U{u%%;f&VtXiH&-U|7J=;eU*F(1x|GU9|ufzW@ z`@!A?rvb(pbO=RVRNJZ0HM`Tf**TFsF5dDuOh z(TM3Vos(|Q<(6&r{J-k;X@o%?>DbVxT zI4T3*Q7h9_FU-zE{-eRDtaP^*wl#5eI|6lyaS=)84e3$l0!>vB@vFZPwZ3AokB7np z>_6c#OAl;ph|YqYhU`3%6_wvyx-Lz&mTpT%o~y4fXx>_~vRcz$z2@rHex$}g+2Ips zLQ>Me(FeON0p@G^!oYv{{%gS5T4+ir4Z;NigxkDukB zGnnCeHTIUBYVfDIr9}J%Z9y&YJhu$WRsZ!&B<6;zn{Y>6SHS(+om(zS9`m?nB z3H#jJLP^nFjqUs1%wT3W>F8BM!lUHdv<~zo6>J#LHL!w?@G^+Q zH=l}L14KF60E{DV!66eH8*`{L^{VC~$*B4DaJ?Gs~?QNwP8j5z<3fUsHNGFN;1L# zOU0KSTWS`~K*_{Wb2H@61_~tq)66%d^25L%K5*~7=hr8Ob~ue^egCk0o`KLeRi>Vb z2?yE=_0O)|{t_}}oL!Lp{zURwEVZxZci-osfeR~|;JZReFBFz*#X3vdU3d;Jy)%0* zmnkc1aW0H+WMAX2YjdgZH=U!P%X~cMI+9fW=x_A#j+Y)i?i|9xw{SmShUR93@E#nB zMPaAf!Oen!GY4nFNhFzOh{+N`J=Q;A|H(X4R$V;VP2@*J(!p1J!TlUj)MFa~d;4C` zzE>nQ*HawAwzJZUsygga2Zu#(;JWTpHy`7M;|Cp&^4h+qJfj^tIFDk{*@=u}&UW^v z6OuG1`1%x6fFUAI*xTp*tXv3L`!|eO`St91YAB_dRHyfR-rIjK@wnedkp2H<&?T0V z5w+wZ=VKpx52-(c_pBglMYkUo|BXko81(HmB66F~XhO3e(Q#c;MsJuW&admVpZA3q zVM*ROf60%!CQA_y>aZ71JP_l=#IkA%U{*EA{$}-;D7F%6_TzLUpdHgEkrkP;y2V(mqyEpi$9ZPpa{31l znv&tP;=nfZ;+xo5u1@-U#fJnft|w)_1MHVBLNMUH{c))Ne zB_GKMGC~7PKLT9%ishMVx%sO@ZslFi2G!-B#%XN5ak*(+=3pme>I>iV&U3kPA0H9n zoS*T)_UFZ!UtM~i21*nWwOLA#i)oVCRTPZfhjrzDyf1}?U$@rK>77-QDkF{;#; zzKhol@rBpgzXYKTj&MDB2YcNNGT&TX3>76DBVBnrA7wzZ%PCu43~jIy@%G3- z&5tY15nmZ#3#nrFlLA1wC5mE%KljajUdF|mWsZ~KNIQk&xeYa8W1q%`V;zhY>ud4k zas2D&^W)s9y51dmm(zL6MHn9LCTf`0XKufhE(>q~!8ICxZ|^9n#e7lehrO$=xO)&~ zTqz)^?Cw#zgm@K%L#8|rmUHx~H1UbxxAYA=3reh$T)jMAgrj#k+%d$vyD^dnv^gSg z_Nx;jjr%bd(e>bBPHNmNEyEh8QNQ_B#9RZr-u6x;2i@Pf`12nM`%c@W3uI?+Pp{Cj z95*N=lTw0nfj)-6ccEE`B>TdpfN8G#Sc-StYm{*Kyc^r9P1L1P5D))sKY4cJt|g8)|D!7MpQp_VcFVb$||8ZLfgmb=XbWzp-T_8Bvff)|3>f}^kS@0e%-mb z*unENc^6k}*wL%ukt<>}3ZqUY<~luQ&95@em!C&LX&@ch->=%f+_@^z!YK53P`qoB zeCsWYa4=*XJ6iPETEWe%Q+%6}za`$&)J9kr#Plx%paTq8r_WjJ@J{zK zHFLcD`|QeI;4u(3mqOlh%wC-3Sn?0Cb-Nh-#}8J$M={>Mkb|E6A^hh1U09@6?{4gA z&ankC>Tl6%E+RtRrQlmn%A+SR-BFbe6*r1RQ@-=?eUF+eRua5Yux%laU}vv{A6m;n zbbCxR=6H24Vo-vntMzGNu;~%#hVW@$OKxh07p403Se)^>oFiixO}H;*K5TtBHbnWE zX0FQj#J#qq@zZZnOD#dgfrK&sUf^WCe+58gzU$K7--V=2da7GpiLY3NeV*S609@P@ z6V?(t3nMtQP!`gD>CyWDLYXfnUR-?)C4p*~ICnoAvT;Zgya@y)Su=`cqb)FgP_=l> zw78#F?FjFpXe>uhjs9kT1#h+5kM|R-rLV5>#kbLIniK^)?Mwl z-;0*iw5>5t9ulZai?gV|Mr0Eq6ms?B6+by81TMDTo zbyxG~zNJxR#^&;>S^XjVv+rBUh>VPkAuj;z1t&o|ruFRhBonvK?&V0^r}5*IH4+v@7a9ZAerUYS zmn&6vQ@#z|e#SdgN7e)1#l5q){Tu_ZgeIC|N+T%id(QdBwLPbiz%~LEDtIT9o}ilm zumFE8XwLU1g58u)!A*HVws~S7F4ariq2_SBP8`)8rCtq~nDApqHy;DLZgC2~Y;O_? zrKcBo+1TXu{aihgQ~u_jO@x6IvgI(kZ%Rmz!=#9`xs6pWQM}~mPoQmX;ubol1d*Sf zLM3#%3W#5fUK;voXnx5_`+2IuUywG@MPYbrO-gr8D;NR{S^hMoV>Ixg(Uc4C-J_ea zrL#nXOym&QyO)@IzrMDg0!Ou*JRH!awx~Zuvm#c8!Al+X#$!fX?N_o!!Oj z=p@9Q>6-QKGD@4TKdMmA`Qh)g?5F__7(;)yKP=J)nc+%lO>PKzynVV)Dbf4OL?ae& zEX*PkW4JkUT({5Cf(D@Hm}PRu(@D*dlb8`ws=3d$0T2^;%bL8yq07v8xXAL`sSV2B? zcC!50|8Qu&%f<@$a!(>Dp7F5;W|_Uk#>)uHctPiQZ@Kh&S+jlP9=w9Hmx;hNYuQa( z8$gH>S~pTQPs%P$pW*tUQMjLwiKrd=d*>^_LyTVslxc{&KTx|^=Bu}>uDWSQ!r0in z^$!&?b;uqBZMX|?6iE^y3MnUdYv6f)Um`~~u2xoV!AxexSg%*=X6h`&%`&6n^AXtn z@VEOPr-=ZJOn$&TK4FW-FUx}h^$!L4H>&{r!Y*~oOKEv&u`m9 zhFlzoR|l9qDRO09gkwx*O2{5hj%X~IV9g!=5?f0%!)`% zmlSGH|C7Bx0TKBaJ^`DfL!jWG=)fHIb_^$HT=394iJE)FR3NJ|K@~E5fsAU zW#zc#(DnkXH);EuchPw--_THbvpd-knD1~0#9{Iur55!*rd;HNfYQs&``?EDS$y+l z|Ka*_cxYvo<*Cq#m2PH@B^<0?d_~Aqet0hda#0uExVanqFCURCOjLRiWa?`8<^?xS zAZ*-2a?cxxJgrUs!(xRyO~lantZB2-i{z(~xBM)Zdez4;i=BQsvSyjP;@$ocOheyi zuCONnFPT}f^P*b0)$3-g0T2JDr)wUr4t9%&ZcuP{u+gK0RqNcc{-%|+y7lNhI<%gx z?CG%9q?{-vdDEZ%WHfIQH(u0CzU6U3cTC@FsWfxTmDexoEC5$z7mqG28hJ@?ULtY& zI#jZfRa<^ifwylk72Vj7F}!8i&2XT72juB82dwSfE1 zcxh>A0+rS)&cjar$07`%DZN2K>VL`u2t!`;ogKtAaM!E@mer*F50TI{9fqx$}R8^Q_rfCuU}BT84v5E23_Oq0NvXhHW;fS8Jdf z=hveQq!?|6zdBCXXN;{qUnXWOtvMDI+qw`>+86nG13`MIMW;TyX4wDpY$>;yB5NKZ zFMUFdl_zS?1O9viy*U-#d>2_NlcDz8rR0*8&JOL)BRR8Q21+KL4ommW7Iy=p=VFez zL$*UU;8n;1r#J@<86F(~2G%P)TIcWS0PT9vp1czUSk$pY-Gnx6@9-y6czG;BqT|Tg z3(7CUS&DO91dO@=+N#&s^~$5}h0q0__+!S$5|WC^_&S#jPVWR^4es@#$=2z>HYAKC zB@PWb?&sQ!5atk`0ZfjKlYl<~aGaRGSMd=9>e$N$G5QIC&NJ|*QTOwQ2BZ`q$Cn#j z{u=K|UQ7}bp2=niFlN`B!NczxZ>l(dbekJ8tNI@Q%2vqq(wBrWmdv;*ObZgWSj{4D z>1qAjtah+`-DsytUEBDtv^OQ1XD3jDo0GB~6AzP!G660D7D-$Ss#M{FvqXrpW_x^Q z(dX*-B~fa}PqA@TyO~;l3F)jZ^}?`Po&$lt?VX(sBwi?pf_Hf=og_c^kqR~M6Npm! zSs!a;WYj$$Syfb8OD^-Jr2gXzkH2evx9AF_Hg6!rfVQu+>9-alv8~_(A81bHRO$4h z^(shWiJo~sgho5vA6VeR8#4(J&VVRaE4LOJDyXVd-b}nq+-v`cvbi$nB&Pw}hAsZ} zquG4cPxU-KKkOm`jprW8hB(0X^y>uE4c*S0WipdlK@nrasF;6Qe3Dhts^)LVembQuo z(iU1VAl^PEJ5@BYqj0l!SIxwG=19IjXEy2KU}H^siO(O!jf|bt`CLrs_h*_IX8er5 z7WO>GZ~^79u%?(|S)NsJm=>g@4ZdqLs$50i-`AklX@ITDaf_jVbwIbpa zG0x_v&YTSKI#Vs#@I$?(RnH5>HZ;hQ!7icFJ39VFVQ(&hB zQUN=Jy!EKv3F8FDeKewVAJGJj)QJLEwwZ!^p6k$;c{Ld0`P#O^E$?o#OF1BBFa1O5 z?5IwDOKMlD*QoZVF~gTM8Jd=dJ6V31;Y*yxNsxShd}XF=9@3YF`bm69ckXya3;A_V zw=hm~Txs3oggr}r{7ut+VJPP}hRif)zHxdB{3)K?0z&sb*C4qGnbOE;cC@Dn>uIFz zX^sSEsixvWQSjefjfU;kF4!v3Q@{S`Hf?+i9JuAGP&m=t%dZ(z%sa4}VVd*8yM`jfJxT-g`Xw=SK`eL;7&+&&-|iIR6{ zX~ncF@@@ZM85vyQ1}%vlY#^18_+8HL#Ebf@b*#5 z@X4^W#j-BgWNX}z$MQN?HMg}8;Mr24;v6Q{LS~s5mQ6EWw9f_~VPiuJ+N>FV&{+QP zB!E}TZ)D8`x!+e-7W8DEdBu%!m80(pCl-JG1@87``-!QcVF2>4rfYaOmk<6Fux!#^)g;n-*xd(HF5691b!HR+CQ440BfN;(Xk?7tGY^AWfgC(-SPu;n>1@K7_f6{ z$r|9H>s#XP8B+`N`wzncbw))RiBEgra=ceN+;%9xFpxm)1I*iGDkhwoPmJ}W`}(`YTll6Oh#LGM;l7o)|ki|f_>m*hd^lhR z05D~xc6_Yfs2K|O-8v0kaV>Tm^7XPCH7U$R?v66 zpWhv$9lwr9-PJy?KY!R|f62S!qeJ#vh(k7{h!pBhICVYdg8uCf9g{*mn`3rsUT{F= z$P6yGh^o{y1<^CSgU|W*gS95KX*ZJ_&TcT=y&bYi?QtQxB4Q&m#bf|ZGj5bmMv)Tr zW_S~}jJ1!X#hvMna*e)l#nf5@8krim_F6S^FnUIi86RlnsGDyPwVm1Zr@{0*VIhW{ z?6K^u-Lg~-uR(yPBPLx_v-zX{;~sX6{TEBxQt@&9s_KpIeX@VM=c4G?Iv zvPyk{O?>#PB-O-&$kN?q`D6DjlEd%U3oFXQf0O({Xu?a_Gy z4;1mxhz3{!Wu+`OcEhzsDcysPSq9RiaK)4YoRV4Qv(x8&;7h?e*R0==cIWX-@PL*w z`cj44YuljY9>=V^L6w!2zVI_#ji8u2FXBI{@4F0XpR$GNLuWklIp9wrI<- zkeITM%f;Eg9YoZomiRba%;)&KKw-Ar^s}5+r__tm8c&Ck-RYZqE~nMoB)8Ah z7gZ~!03@n*Pca3EP;uYe4oF(*96;t5z6gX!SlP;bnD!I~thI0EZLne7~iN3J1OqYU(P6{SnM zfb3qEgUehhpwQGM`8k)R(n}Q6=XKKiRNtKR@_)1}l=ULL*bPK<~U&Kn1*ayuY30Vy) zkdUkc%!mMqib$O%bH`JrZYxUKHKy<$h=U$aHQ7<`n1c4h?+flha^j2k>{5Z$$m9&P zItdu%nl%u<0Ol4pa(lxk*uXAR7D_gQOZ5_GvLK#{$<1#mc(6J6LR+*~j!>`{kqW&- zd|lvNFRYNb;DXz39#2Vqo3?@~ZRYH#ts?Igm6T-kJd*dl!P~7F#r#`kUB=LCvg)$3 ztn3|lb5C#IoQ5eP?XE|?X$y2l&u($zTvnAbh=|lJ|2LgCtAZmmxQpumHrYf+ukw_l`v_51-I$CId2)+iiGS6I4 z(spE6aE#$@I_f4qHW*krv%!blfl52fx@wv{_)B`u?ZA3oqmSP>SKy-sv9;dWzFbbv z+QNoeSp~p8y=uSN7L{8fJMH@B>&n3lyNPRUgqp(gRQ$%xGOM8%~_TJJx+ZyvsRne|5f+f=6( z$v>wZQ48>C-oEdv(GyhYB_=`1Om%Ii+>REAHmlM}CmCOm z2mH%B6PlW$SS8IfcLha{>yq|?q-)K+nA=Q-Uwg#+)w7bRw4LgP+UpY^b<(M6nR5{a z7k=sQE2A_0B(S5cHM-wW^7TO|XIk@7?*xyy>veyclOYD;ExCU^hn%YYf6@)lt(O8$ zTsQM1bKhV@3zo(+1NZRi?Vf+bOot@9=@{P`tl)fS#`T}oRoVR7E#SwIrqbE$8)x9& zIqXqJ5C6|q)~ve-aM;)wc8IX4QjrHPU>sD9%~cFAE&uP&S&j+0P7w1e--88ASxb55Vgu)%M6H38K2z_Jn)dx-6ZFtgdBB<#21v5dc`{}hqI$YJ( z%$`f$&$|vAQjc_Kd;a-Uth<&odSuL7ctWPqIS;jH(b*;IL5XfNg8~$NGbJwWK?{RuVv4z``$Yrztrh6 zmM3vgmO|Rp#fGVu#=gUox5D-E*8cn}ug4=l!Q4p_mbmaXLLP6+MX*E$>R+X7@f@hK z82bgfvEoOo@LS_kpOi^CH_-=O{A!^KqgGMcdXEo-Y%3!G^I+yj@5M^p7`8-UP96yn zM#bPy<3VXHr!k?wbfoe_dpj*FFl1WWp0XV`Dirr7xQ#IQA^;h<;x7N4y6AKvr+0Ci zCyUg6_v>_^H~-`jKcqJ@+DON{VM#fy%UYXyh_?h6=SXNp#xulX(aaPrk1)#V#52zU z+?_A;HF#gUg!M~i*Bv_6;i%SP!ZSFU%uHp>L?Si7RIPh}v{(-`wI0VEUoF;EVU#hn zTE}J007yw?i*VMbQ_Bq5#1mR>3zUgD%~w zKjF%Q&WFIbucZh&=NB&r0B@h1@gdN##m0b|)zU5B+i!v4;x|EB;JZ!SsX50v6EstG z%gBiAc`L_ri6@C+2+Lu=bSA!CfVsP?8+9CK_<;=gi+5Y?k~8kvv=G;T_eE@|~pp=2jb^>2+5el8Y8=d(89w`>WmZLR&?ebA1#om_pY zVBAg}khjz)J6!5)^@Ss9^UKsKWZx>af7FBhM~AeCZpRt6ga~op%CBk&;u>}J&a(fp zCzmHLYM+NPJC}HU;RAV%ipTDL%^!^Xly4FZ0vAu{#0 zU*;i!UVCvss@RXd6r5AULqMTWBoZkeDSdxwKN_t6Gw)7ieA&Rds+ZHJIL8?lZ#E;I z1>{aiSm~Il_UWTJcv2lBpGFvW2jfiyI2bCY?9<)&JPhXRF_9Ib0cS7|G(9SSGiBIw zOI}>!i)z?RUG)5mf>TFK>Iu~SHcC3!Kx^Ui#3|ZWP)F^EwEcIN^t|y-_a{9s`x>7m z=UaI)4-T7OS|7ZLQ}ua|*djM5rn4mOR+Q8q0aSx%v7wghqv1}M&FlU=F^{W6B$ii; z$EEEPul6mzb{l54FNb$Ms4L3;IXixV^&cIDE7S|WH~aK-y1_l;-Rt;Y%+bE-z(}KF zhD_WNRvfjy8!OeRFdQx6Dw1rO))&^lQucx``i(O(DiS(%(`_$C28=^5x*v039bB2{e@+d;j`wkNeO6bCt*QEVfe$lk*VC T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00004.png b/tests/ragger/snapshots/stax/erc721_approve_137/00004.png index 19d9295680544f10be004e8ffba3a129340f89f4..1fc04a35aece8f75a788a761940a577b4ceb13f8 100644 GIT binary patch literal 12530 zcmd^mX*gTm`>vv`nNBE52UV?5RkNTIs-`MIXbf#pLk%V7P_3awXtiQ0T53uVV^dM# zm6mFd8dGDcN)VB1L=eN-egEg<*LCt`@0G0Vy|UKY&vQTbedpOtYco+H z86h4X9#Qk_*KYCf?0L?^!}~^n7kEeC<|BrON4?qn+GYEQ*Nn-@W;A&Gy~iAGQdIqh z`>RK%-36U^QEyJ)7re=f;sIJWAHVv6dmcX5{p-w0-iHfy=aFx>_+Jew@~^)v^N~&x zB($0H)U;N%nBLDpzob+pV zwl*4m%j}6sGvTu+J(9cE{q-zw>TBNL#fiKmOAL3L&~sx?OwMWE)J9(QXQO<74_T4_ z9^M}P_fXyZ?`O@>e-FvKN^U>*mk&oLXO4y|dD2he{O{*~NMirvv-bz1tja?xwyJEK zadL;p(t-H%t1M4QepM2@jcRPvFmjtz;y+W>4D_!z|NaF;5aKD*3NCLsdP~7=nzy!g zq08e1l*dbh)NZRG+%7kV*G%r=Rc}6eK31uL$I@?Vob(*Zqom0d-TDIJv4j4U?7k=Y z$Q-mPAp~@%qoRAH_^5k6-tXUEiS9Ys%#+rzTC!-a!c(Gp%!x-`=07vP{}-0<|Fc`n zw1rFYxSb=jNV7k6`=*0_gPD_`<3;!-Q4WydjTpjhH8{*5J*4?|hkDw~`sD0m9!5wm3YaGl0*SvUg3~B+#bdvexwx^@=Ekd zFiK*O#M+7gJNrUv==$l0lHShfqORXM=0c%si4czq%qgEsFdtkMvwR04DW}NC(qpLP zdduE}U3EtY-&QI66*pSyRnRy`L?R`urCt5zzf z^qq5(>+;DnwSDKDS};%MjZZuaU&GQX>czb|V4Ke*o7j&WzbSs=E6_<;Xt@!IUOe*cS^E_%FgPi`Ma-+_ z6C#pV-QQj6A@Lca;eVc(x_cm#IGZyV2`8rl<&>xALQmFy(;RF9 zhH1DoUECrR_WJa-K}*WMeV2n;CP9={&CWqSU%`ds*{e?(ax=k@G zuuiM%u)KfpXWZlC$|)z)XAWc^LTkUlI|rrL?-7en)E?&CV}2hP()2|UXmlRC6Sdzi z8%EX!XVrUt)lFZh>);gttqMIpo<0L2>AO7LOj2*$Qzy+UEIyyEN`XW8p38RpfPHY` z+hT4bvwrG| zJ$|zi1)~@n8*fs_8FTpMkEIE6F@};XYKw4f*8!{TCv;Ef;{eq1WZ!t&Tm9p zfx~9Cx`+XHh6Q%C_zlKRs$k2TZ>vEdk%hEK*TW|0^fK2_xibR14UAk`vvW3+>zliH zWc!YE62jzx-7|klSMN{>{wO_$sClL$nT4+*s;3oKwAxbW!xPa+JgqSw$Q!FRiJR}_ z3lGb9WPBZofEIWkl%bRfx81z6J z=H&-h>^S3nh%_YtC;Op>5jL(jJNs~y5r&nl>k7cptE~0Y8>mbU7eW2rsA#U8kM!&& z2lRP0EciWfgs{2XakcIb2S?!BT&~}mc+MX%ldEiI=eIPD2b1IC;uvn3xELLW#b{qA zq*4D`!sdkSy1kFn0q%4U{{RVl*dv;q7YTm-*g)VSfdN zClrmlP0=zg3qGxBEXGY9)>V^V9u9UBXPGr#n31C*#ec)%0Zclh8-|Z44A+%QDW1=- zW6D8mcRO`;x)>2r@fhRxYQQyF=-#8x4HS}$^{~lLp$z}`7OFVER zplU=4N%R$dd|cr1;DSAcJ^N6vh^+tU{W#;fg;Q^Pz2#D5;kNg0RmUR3+m$j7WoFV= zAAThfr-Pbr4^3Aa2_JDPq*d-QL)_&pJU87g?stWcGS4OC)rY8j(CA-9YE@|iVco8O zX}bRQsmbPqqhHzDa9E&rKCsCN^mL&Y-4v(8pBF-Xmpaktp2@&T!E2wik9r4u7CBJ)vR?S+dhXx)TAodXP=IT}j9dWN36< z0_K=hO`E*JT7yn5Ojqpiky9ZF*?I znH>&+MBT^es}xVkI9_29Z)Mw9-CmV!DE5Yy?37h&-=fR_`vjQ0SnSUG+l*Q82IE3D z5MT7ARF+TrHp~s=?oFM=(jrZ4x3;z_v=$#DRXk>hi?40Xrl0#sE6CKFvMh_gp_VcU zrRMizkAyyKf?*w5U&l{ajJVx^3kFBW+prU#eG7+?bkQZT4HA-Sg4v_(NlBwNZIc1Rm8Ni$ zosF1))sLVbYzw8{(~X?W**~rQLuaqBl01>PA?n;LedfmZ`~KP*q}O#Xj+JoG@>1vk zuki>@1b9*5dVsjW7e{1h;Fbf%H%>Z<@pWiA=zfo1vr|>@wpFya@kf`dR8J1#)O*#{ zCQwvo=cJf?&1!&%VL0%B7He7!Y63uE6R*9!teAhd>L-VcMf=F9$x5@c3$HLux* z>K7C%Yk2!m7pA9On_>*dIL(ml0HnoD*^u6q$#ov;5hvXEgX>qZ1r8iDj`#(;?so@$ zyW8>MFpbgh=v>0-d(aVF2$+14FACjT7pKNB=t)y~d&ihQ5MG*!z>c-auZ=~~WCW|M z-G&rH<+|XL#mYZ*mkq!j>h^q(3t{#6u1k4kwucv1D(qm>D^-IFLmzDIsfPD9D`a=x zb24SBwJ#rV843tYCPd9&g`$u+*RyZ&=S{dG&u-ue$}yf;w5)1qjcuz|kluP{SB%eG z)}tDFUwFDHwa;hTmKR%e9!qy-oTk84%N@?#3$uVOi(*=DT?v_*&Yt;L@7Ps+V9as< z$Q__wFWGSq7I*jB8_`oFT1xcK5VYIY-paTxm<%W#Vp2a z&s`MeNxSqih!^P+5biorvhP7io%C-ZU#CO&Ck}kvv}h}~_IcsZo?78yW!fav8-1}d zRZ^8)$oKp3U&`VC7(var6k2>Z7+HuZe^+6!OK8!3q|QH5{0HnvF1OQR#fAs-c-%k8 z`(J#9RYzh4>dl6`^7hgng3B3NqtY(1PJ1Shx z%+Pa$umvWwSJBTsq{F7rH?1mluC*1ri4cEJtG-Ld)?A>>KD5nW`U?bnCE3M5-33%# zO=D*kZFTr4Pn%W-6lLUyJ` zn?t&h$*Z|zHrCn}#f3`a8`srH4X`3u!7U)Q-(K{iavr%6Ho z=V}9RF^{ooco}% z0o1@hLQGEJ5^TIwGuoZ6qde!TsfJ|Ij&BUJ_lcee5k&f04@xOs;U9@NOLfiD*L`yQ z`e0*gV`qy`Uf$bEU+=t);}K0K(CSFD3pxa6WafObyf<{D!de^se8wSs7pGsTV-+V< zNL$eL+mCAgrJRyd{9!Tx$g%ySxtTdf;+vF@9m1a&aZiWeS1I)ud zeQ_gv=274)2Zf#jv#LVON)0sgxIj|i`iJ3B&byw9wUxA{3d0F^#yi*A`5&}4ufsd?O$?ad4gBSPOJJ}rhaDg$lu z;H8A8OY~!dtXtjA(nJ}DPcgbqZdl|7-iWMw%^UXun(W)=x9}+##+mNcU|se`W{o*g z3RgylD_=$}GEYPg*i)K}a>sQ(IGQy_j!6l-I}uZIs5^uJ9}3)%Y`4GMNGUmoZTV5? zDH>fvp%bMU2Bkl^1o?!OpNlf$iAydpYKKAgT@B7h8PyB#zDFF3Z#p?Q?a?hoVJ7d|11M#Q7w}@roYk=V6?RUK(D*yf4 z)vt?^($nVds?XXp%@j^BWda{`Cd=s7;7jdKshDSO$L>xIFKFi(TFHA^p*+P?yY9AT zUvsa1x-pDfO`F#yx!|o=k7%dQytXdyjHt<~>P!0rCL6TWq0x&XRh{$Iw3O7`U{sJv z53vNx9RIaW13~ImVtPc26xD-7(fr%^>KYvd0l6!Tk(ZFV3)3FS*Z4Oc8 zCG}_JKa#BKzKNHN2>=1mSj{1(S_xOSA1ptxE2IHnq>Xz1W8Lvu$diu=H-sbO&kxj>dvE?ZKdd0*rz1(@2Ig!dg08 z7E5eTovV1PihQwb;d@)OL_b58NRSmRQWt?xtx5ttf5^a1N?5n#xnH7Ln@3pih6vlk zr9OFO3k#tGQi5T9p69z;<9aqf3{SdHsEutKsMI1^;*ApJ6o4kU%k|92k&SO^3^TLj zMrlS<{`_vllMgweLc9xU>|QPX+Rke0z$>&$!K|BW<0SA$lTW{+z1+`f3TB7t7s%kk zd~u;e4@AbwD^`z*d7UqXNbn;KPAl6U)j!Bw zx}^HPi?X(dCj)f)PN*?$^2+E-E!z=SP0v)&$A((fxN84IpK6E@mTP^9UFL8c5khNw z4xwol1?jh^%YQ=zKrvY3xSa}PU7>ex%%76&A;Yn4yBiw|vSEQ@e(sI&J$M%psx>t%^&V@KUmUj`*21>( zSEHRUq!3${)wYf3IodXf#mV+QCb$iJ1Az5{s`b zlW8p6-VsL~!L03A8=?fJ*yZt}o;fm{&C-y;aW?l+U5U4}^LypUiM(Qf_clRVaIGhHa~ zLYh~V$ZPt;=K1}*-;Jdp@B0jW2o92OD4Wu zsR`iMnmbn4?d1;bL#2)Tl3Ds~CTj=c2u$NFs8?MwnSGSdDo)x$NFoZI3>8hc8Ii6i z&qZnVqTHBP*YnvVMGU~e;kS<@d7wN!p^_#ZM(Lrzo)wiuKD4SWoVfj}66{Q#ln(qdx!FEnT0rqJQ*;Y|qidM-u zD22pn&kb*DA@@aa+x=SDv1L^A|MCnR4UPvEe zfw`*+&)V_S-3QQ|W6Ic!P^SNmrsc5W$H@SnyfD*uMq;wmKf&>(4Q~+bIu115bf|o5 zk?h6A`TqUynsL3`tWBl-t{B?X@;E-(WpdQKT&KF>YVX9Ef;!9*6OZ?%+^@e^2(9K7 zIign$6>rE<;0lGJG25UIk>^^m!rd`2+?d>{jGjFc_(W;`_|Y2!hvuJ+!>qCX^|Z)> zW4GoKi{`G#2Q>MfKzUZGqf)uA-a2pR8OV4(U_OeQygFS0f=1fZwo0Qlv1u%k)MEiUo$RXQ@-e;8_g?ld`WN?uL!KQr>bx)OtjD zxpp(tj)iEOWM~CpWcz*khO_hMb}G^627B|&`OyXtcP_O^uxfWE(p9dDyFC^BTG9OR zap|4a26o!?SJu|U=A4;#XS~%$Z#AtT+^j~G%_aEHrKx3GoT?oPu2A~+B&&z(5*mB5 zL}#Ni-iHr2ra|#)h}1<;-<&)4h8m06XNu1+Rvu^z{8^J)Lyu}0^~breC{8P2CelXa z!BS_~u^Y#bn@ZaF3SVABDEAy`IN;BHgqt2KVd?Q_=qX>PUFDRYG+Nh2G%VDujVP2$ z>jMzLG$vzQ(cFGE_`>FQzjv0>NoYlMBc9iDZKa6p-4*-?EKa-`Xy4*h_e-g5YEfZ; zJ|tB?cM;c$_HQ}>7kk`Xo#!cFa^+^Q|pD*uXvM&}hz5Xc3hF}Z^gW9MH8D=4h zcp3QH9c|9Dvt$-PH&B_3y?w0P4&{rM0#yNzqp)%%3vc`8b*3hn9C7j+=)OHo)B%HX z){R#)D-{^&f)?BGBKoOX+h~pRKYczHw-UO^8i9-T;|!SA7@M%oTciY1S)@NA1>Ib!oTMZona#BtQ zjYKH4He=dY59JQUd)|#b;3)5edU+E_{;!2F~2~8XV+o_xJ{?LBK5JZ8d6iZ zis1aM8}5?|lM2Py3UTJSenQX9i)}vql2%t_Sr%;%FH7WvpZ!*>T%YC#hv7gLA!?H! z>pzxOj|{n>2Hv-PFDht1+R}agR`%!60C-**!lim{QLahCKFnX{KDo#Z4_O%dJY*4PTTu)wimS$=eD=PW`HM(2v0kXI(|_(kl^KF`&=hr~Zn) zFD3r3E5QF<-1UD{rv86nkn7~&*QD7$%XfI%@9ydW%HDKK>K>kqentNOPH}#>wS|Xg z?hlPzlsq`WD@*#x)sI#BpJU~puy6K7nVY9OIRALNI)Q!!~r;r%qlF{j%r04gUKPV@XV9d|ExrSi^%CSa(|VL)#abMd<x7g)c1vGPp{Q)3h4h&19M_s5GvX-l_>FQ(cs4JlY+y0A4ci=ol#%?s&rf)7Lx5JK zp!Su%;uM|7szptcUJI zA`_fla(3>{dJ7te8+QdiK0g0?b{g7ItgN4L67C$d4(;fy#3kvbyHO=u2&IvQ6xTci zZk2I}J^3wAYweks5j)CTEZxA7D++QeOjNb2ty~+A%1?m9c6WBx*!O6WJ6tX%IaoBb z)fG2hjXtj_m(k^&tv&H;ynfVw^RHIVWCqf-!|In_0;N=~{a-EPD`^%;Df>|Tq!wYc zi(Y!eoKe+eKzT;7x<~^^g;cMcLY#h6J{o|tK~7CE!lI&@dVoL;vODs8JJvYHr-tqY zMR`IGn=Bpy#HKcx;UXX0Y>W{-?7nmo-YBcAvPM)iLolR>|MK&)%CR%PElEo+70v&E zIbdd}ev^(HPPr~^x=Aq@@Cbxx3zE!a4&{?B?AL5^@tzaJnwAg;)-DXbZMAGbjOkrg zXmtY6@)_w?RYd5yrtUXVaoUHLny5x$syILO+4{ZIB;8|q>w z6Su)jKZ|T1=(@+fezRxhA36L3LC~b}EH{>>(Hr$oLcCU#%jS3C%2*MZ^J@&rR-4VQ zW%LZjaBlqY=zdNRv2FAN@l(M1IZ5R-1hS;M&fE!-6>u$Qe;R-wi}D))2?6gjs3SjF z_1MZY{XzfbZ==Z4z7^54`OP*-uX=A4_GvBJr2rLh|NTMs>3-N9i{IFze5B}ifr{~Z zH{USjK1M!ZJ+Dy+$s>61pBKxT*X(*fF9EOw0K*96^oirq7tJ=mYTqkbot=^69tsn` zXc6kH*N{#e*glK+0|p)$2Bnv;TLb)+gV36Nt`Kxl7epGOO#B^;o}3u4Ss&QKC{fBN zTBPr)9rbB)uqUuhUC*gm-_GisJh0sP1-{@jTeSh24ze*x+n$f&*69Sfq!jBGSR)4< zAf-tM{I&DTojn4nzLuDVLiQe?*{5P4gugNTz;e89knvCd0b(j+0S|q*K@*q zzEG>{{pt!Bt1NWvDx!JIesm;;EC(LyQ)-5*cp~FxrMqsqJ(c@Q!8|weqQK#j6{L*u z!JY$7eM957AX$s0o7>xr*FP%t^Pum;PSc}WjjGB#W_uDc3my7=`7Fe<&}j7Ju@JC4 z`+OYr4LWT5iVc(k=juzd7IVwzA5{Pl-GjaPUbDh3p#W)wSo?MqH8XdK$_R@#DuT$~ zRE@cACOyI=yD`+Tp9A&=~J;^)euj9vRtPfn5+@= zF8c0jlFXfv@2`W$2f8MNs2o5s$ty$CCqbq(5JQ+}iE~^FYqKP~Fcog{Vh6NYvuFJw zYI4V;Y{Ca4S`|V(vejE5t9PGX53e4{KlUg=%&sal6YOE@af7tM#Ov!#=JzFqluP&zFW#usa zpBuHPO8Uw<7!2Ptwbv~McZLpcJrMX%S)@MiS8|}+>E{P%hl3G=P-czWl zjp%}#GY-&q!&OH0nOcLUw#3IXTL|~!*qFC0j$jhjnD^k-7}wJP1~3{u<2e!oH_c1< zYZ80}SC&_y$Q_p8HKOrZsrJ$Efoy2%ksP4s z^_yO*P9u|BN}si*bZN&N=9B{KXm{zJF!i-oC&Igu^Hh zh+g_kWFZ}Y$a-sZGc0ju&tTDU6sm0D7%ZhY;sYn8SQ>XPD>PWn#?>DP0XJvCa$3nlHCVW^sJDagY#vz^b zX>}1G^7h?i4PBG#0u~u$aqMIbeX&UsRkG+e_ttM&)NqW*0yic1etl8+aDD8|XkdZD zYu76D2tY0c_|U|MpBp~1=6Apn+Rvq2Nlx8xaErct9`Mi*&YJa%D`&+{Zb6EEfjry- z77xmc?T5SPW9j%DvCt4bPiUB08!QJ+9OIk6 zR?fW(foyNE%2}$cGtL>k7u*1Wlmoy{fFJc78vY&0zWK(qp`*$HJoe_r&}hqb1oWbzrq7y0wK5cAOZ2?{~YsmZ&m@La>R2uReir32g>mli0(ix^s zP6kkNoVu*2XFpG~(0AJx^v%5&dUF#>?aX0Ef?8dNEAf>5pG<8-jf#$SRiYO;9107Z zWre(oSReBq3q*ZR@~F`9SpCy~$z8O#Z4eM6nMJ-#_s}bP5$x?Jfcd*=WY@}};kv44hg&p<4GFS1L+All5xWv8# zq|t51oK|}PHfiOuBS_PJMLum%Nes!<-RdczXjpN$O6GS)*4Pvn`*sdMS_j|^*vKWv7SeD6oIr+4cM=J=cD)B1k9V zH^ME0yezA3cyEeZdtf|8uN|@=w-8YDUEZnSDsfnqD8r>y64`)K>wK%=Zp)Hi(Y-b+ zt$~7e8Kly*v{zS(-eXhtAsksA@U9grFP%apk?Gu6fFPoL(hAr=j}Iv6^w7J@9{QAr z&w{l?oDZ9*=xF4a{uOi5+{sd?mL^*9mh?KZ4&eYZ4I=K^% z+y4z=cs0q)NGrHRF=Qgb{mWED7$al}H=X+V{_E4PQ)jp)L@`fFp}!Yl5oy>f*OzaE|a!3RjiEU*px%fklP u59q3gD)Ke2X-U$5#M}SBBu#b|WLefZPi?o6ojyEl|K zl=tY~_y;Fkc_sJ8A3t%CS7h&Ft`paI2QKxaD!ZMHzmHIisJ1%$KKnwfIt%qukYo&( z>&6a+w2$jSB`=7}T?ESY@pv8A(@U;_hSJ-$C~-$jAF{11-uh;ym`>re1l>11tC z2%mj<*3@kUK^eAp#2+BW`9Z;ao$0oGAkCUpCR<-=-ic-=J$5rbg*)2eSgDzeUbmC({864w$E`v z$3Nt+dR;?CKjH8EoGF)J;1 zo|d9wRTACxMjxEz1%Z9tLsZSu?6P>|Qae9br^z2fJKuvqhS(`*4nebTHZjU>-lQ88 z7`wXRj@5wA!6Np@J;`D1cNVNdCC-NTnYy}_O(nM~CcaaY+z^3g&*d1Xt8K|N9D+tn zZs>~j*FR4xR_Bg;lAs)1mim^S9oPB6V}a3x0q%bcc(~Vf>i~DAcso5pEbhsH=R$2L z)OE(qF}R_m=}ekfDvM6q_uyz3a)tU{lp08EhS)Fl)%!=e=AdaRPSEJnd-<*5We}$c z2&9r_<8lrbn_d<2aO3BzvZaUf9}kq6JvEyKuD$%BSaJV{ilT=6YjlIMQ*~<3rY4*r z8If3HcIelamYZRIPAU?SWc7U(m!FSlA17IP>To4UJwi&79Po4MDRZ8QNdyx?{!=!s zH}iL-WHj_uTWn})2EW{ZF(0xLTgp358;ND5_K*pVuGd`u9G##sLiLwW*4{Foqr;uO zp15607b)QdJ>NiHNb%6NM`@-OENL*2zr$MhT~h0a-j?JMKmFF99ob%XZ(8>I`Bv^( zI7!Q*c7m3+ulp)6;t$JrG5!WA9%Gla*bN|$yNfTUGwoB3#S+N%`^gVFKk!b#OB6Mt zJ|f9CM;eEoj=a^j@8Wy-8e~q`*i@oy{ERjVi4!tC1U)Lja|r^;>g|>`lH|EmKta=T zA*ip7Kftx1UNr%Rl9kvBlMU)!48n^6BU%U7qG_PsQN;s{V(Mh#+~jf>^%W`Tm0n8! z*`(r0I+H4-c}b-2Xy+5vkJrL)e8Zw8lS_Z%YRT6}w9L|Q=6k!;w1}xxv<9nQmaw5` z^7L7Sn;YsluQc8&R>CC6sIXtW`26Pk=(p;3E;a4xml}FySw4{^Blqp5G@ey{_^9m! ze9n0}W$qo?ci|=K;uu^ezUU_w^-z2I`2;Nk7k1-nx`=R{zeAHCLkWd|iakM_R-WKr za5S-URLR<^k$HIhc+HxK4>STQW|B`Ry6=SHIQcY6YZIGW0_9{)wX_-cFEAt?CaGZvrLt_qiRw> zAViZVN~Fs?q`3<&?FLA>?+3Lv>QAS5L4DrDW`y8|VvqV4Gam7RZ;08C@kRc`P^YiE zyV~=^p1>^+0RgQxt@b@eU^g=N38V%uO79WwyXfk63|S)WN7SKD9sob;{NS!%Wwl_z zegH%y^f@-`(N8`nJE%C29&!Y);De6hA9w;^WTPOJ#P*I>(6-i0&7NNC60>^(?m;}_ znY!T5d$N;HpZIs+@V_d3Gag{kG;B=x**dFeL)*3XI3O>InNT{46;UW3R~C>nH+DZE zMum1t@^8M--lkj#l4j$6uew*C>#g7T=_qExR>lXRC#oojwmwW@X-F<-pb``P)Nw?Ev1uCs4X^UDU`2kFq+it59F06E*#E}hXWa&ur&Ehk8 zBwwFSo83O7;m4%8?Hz5)^7NJ!9Nh(oNJgZ7zT<>88S7k|j2O{^J5B6{D*5*IvrQfS zl#SK;=#-)MbMv$lB#E&)6lxf*gby0lf=lCHy;e-@`uaMuJ_TPwXD{3=r63RmwJ=xS z4-+0TE~87bCNFkc^KCOdThLPYw>x&)d$|1Y;bV29a%fuf$n}nSc8qsybf%}z!IZhi zsCfnuVm6R@y_7ka7;pogGO%@9Eu!#Jj0?N{S zqpo~nF{qb{-9ldAeYjsi7w^BchS zmuvES6Df!VY#Dv*Yc0NWTzmZ8=)f->Pk8>~lD4=u)y`ms; z%c$NnLDD4fQk7e!f?kSfyjyPByek{r4ut2<6fl|_F?lCN#J`hFkckmpc_m*&3Q z>oaKkKIFgb`!iPw?t}??rO3(-{P=iS;$(yFRnR3Ap(y&i%sONd@c0lw4I$t%L6VvWoqmnWQWMeRa?X}D{rA}M39ZIt=khtTwZ^E<#PAZQ9kMrcL z2)!fI@8uR)mT#>M4O!mm|ApSn?^`tpBqp@AyixJ=yXEJ+nVewJ3 zVq#%oVb@nR50RO>2m43(k#d>-!~vI7@h>^rs1Ad`t+h;gj~8-CuUdz&0VeQw)uCzf zW-3`pLa#Y77v>M!YS!&P9VYF)?Y*XKSD1{p5mXvE^<3OBxN9l&dYZA!EVbcQ91yIM z_eXV4eaTs{V1Fj0CzvR&J|-$wwZR*E*0S zBp0}_Jv`K%ORfX;>a)+HP-#b?tYVSg`VVT3Z`cTZIM$Zq1j&${MhzrZV0Kqg-RQhE zzeIa?^`c<4RqTk4R3&j;ISw+xSdXxY6?RNmJH{enxM zA#4;D$~Bof)gcu8qM`YkRK-`pf^!vTeYFVkeEy%%OAfh@7wj&bv2(BzTgbpzXI6K- zq#pjZwO5YHFIq&$W+H5~eK15IWWy}gN@j=bE^l;E1+?Mu>(NH4@b%1=o`HjXqPgTS zI{6q*0eBw`Dalq68Y$>BM{Rf}DA-UK(?PDXPNpXQ>YX26M8Mu}WZlR$ze_KT>t%Xb zm-F^ZWopmfj?K%eB`CR-yq)?R6w+fF);C)f=~#iy@t-4Y{H%^W-eR~c@1i~2zV1+i z;^62QCF}B$N_Bc?w|g=za5^etGe8iTMPepT%D%4k9MaTT4O7Dox2kW>)K?$p{kEID z1+E~S@?yeY^sA4&hdYfuLStw91rfN%%yFdT!{fYNYP@?xGPm+&O_|iri4tU?!x(-1 z9Z!?`gc43l?n~=lT3D;ay~U;xs!`Z)5zUMn=ZeM!s-q?p(vg^~C5OwoWk>^jkhJFO ztm#)@38lz{9E5^RJOR7uw4~8ym(U^G)x;RkJ`ByrRhZp{0gE0{0H7SMtBZ-$KE61l zP!%QcF-V#xPBs-gdPFvrud6PoqyiW9_okKZFMqm%w!MGc$>s{utPqkhm{1Rr3N*C7 z40lP~I(9fC6lt~H=M2%cUvw;q^!*mRmYn)?xKC-1KQV@MUJ_|go^kacI2PB2_HD}Y zBg*PEVUIUB_I?L`@7vc zH7nedUk6=XqpETe^-BTff3rBg>FC%wEqebO6?^H3E$IgdyK2U3Gv5EEfveG_mwDp`aNmx4LQd!>BEPCled;@3s0*#)ZZ;&+;ajmeD^ZibPJoR3Ee(HD0 zh-O+zmGuuW{gpX#g)Mu(ieVT$#^exJ##=|$HF(A)W%;Usd)p6P8wve}>hGjR`4v(S zT?&43ueyY9HiLTMBwX5KH@!8k_XB;oZ?SBSQM3b9%i_RZ-^~+W(X=!e?Nps@T3IE6 z77kQN9g^gz4OgHv`48L!$HBi16=#(RSrRtB=>@3PtOrQrz3!r>bG(dro&BGlyD?|g zmt1RGBF`$q11OA2Pd@j(ZH)B0#*%6=QuuIAPk&%K&Qs+)??W&l5aR&L^a>3tlXp(+ zw9iO6ND}c?!|OMu7J~`>puGAX(_cA(+OkWt*GgN1I(4sC2`>zsvL%c~On{zI5F@(L zv($Lzn_~}G4gytXOqElP_Jt<{3t;DjPW!RDu1j6D$ZJXqL3*WWo;}8Frv@L*Thm*u z7@~5@+`!(&!#d4FATw{>na*YcG#_oqSTSork4n5iwtGZ6pMxoRK)d3zg%8kZP3kTa zlw;+K%Q_mgTPxuQ^n-xNFoby-EmprB{yNs=9UTg%zA0cueJ;=%gV)?#*b-bFvkEBK z>gGE-UUy;v(^2a%-RzGK8hu}x`su85m%T(&;UfvAfUCcK2-XRtu^Nr^ZDGIoVlEh3nN^5e(2M?9v-*Ta3O77iGRl*});g zTS<#pS=Ll%Ixpz`EWBbA-cF_)I9#EQ66*y^y=^fccyI3YwcyDFvv?5`5x$y6qn$xx z%B7MpD>0c=JQHn+8HyjdqvboSC8I2x%5WBqYdW!D7yH`V7z3Lfh8Ne?y#*-=boE4_ zldA`w{{Ud9^(_iT6{zl6tidNHNz8%1#%Cv7bzwFjPOmF>tay2rYZ_(xpX_%ay)>L+ zVq5GQKzYtK)ekzS#gT6q`MV`Qi$0{3PX1Q(UcA;JzvT?E#agU;K6vSsm0;1W*t{s> zOV6nQjDc*bQXq)88nU!t3W4Nz%tn5>34yRVxb@Ya(c_GV;iTV$na5#)%=HMzt(p1d zv7C}ICYv)KY~|mHLaAh#N0D>;+-wuNiq_GryQ5F}P_DinZ`iq#c3l+%b3Ju*(=I#{ zITk*$=#cZy)M;q3?WK3b_jUv)@h2A6_J6S8g)7CeOQD6C3M<55qiC$WE#25J-zYtG z!^e5iyX->-w|uD9)U~FDbZ7)8>;KLd5ou3y5ruM72Bh&zdA?z;{SNuFj|Z$p&lSZ7 zs%l0iJzZk0S2k1{Z^HTl!ZGH|I!TW8N96CPz{1^)#wCIbb102cl6#I7R!pSkzHQlX#M zM)hT3F)x6ay6BAzZ}0iI5Nx`HV9P3N-yjLlhFZ!7=kL|Je^IWk+^zXGvn-N_Vgp~y zE)fG>_!;H7h7y6)LjH46izyx3`osH;YVciha|CdO$Ct9Q6{1h8BlM1*@Vf{J;~oVAuvG zScl)YB`8|gdc(v`hT8O79bIGq{m{hfJ9ag_khNKUc^gN@je^Y%bJkjMX}(Ot`~;rwWL%%TsBsE85{8^Pooj@~pf zd$<1aiZwt3mkPn=li_Ey2^-T=#ZfGMbN4Oo1;lJbxT}OA_EV$@^=oB5C$;O0DcjyH z-@#Bni_QjEr7PUuOX4HOFp^cpP1~VQRB)zx`KpIj1t#E94Shm?psDCC_$Z97PHZOf zYk7n7EtA9Hrz+Ix&n~7EvJJ}Oc1R~ z_*l^)gEt$ok>Os@OiwDlmUidGn2gW?($0_ngehIQt5`CGq|E0)DF z2Ph4*Qq~17oO`&ocz6eS13XcyC3#5H7fMx{^lrSCG+MWLVj68dLl2kvoE%OWtLqDJ z9jnvGVK=DPuGZeu>Lea;_Q=UE{Lp5hQ+1|*VnNp0@bC$2`iX{J+lU&j2-eveTZ9hw z=-tK##h3rS#xu^@3GDr_d=U}zCdzxG+^zET*FUsQ^CTl^ayyg256a)S!i{^Y-&^1J zW05nHZFM!(=y-p-|7syccM7~*mtIKI4)6TP3OC zk$2PCM%oi_BFR}4gFTeL;D~Iww_1oo>6;%hc~M|!F%pQ|&go=bNSSl2otRs{3q*$r zFsrewsj!~=p0G^$XXh;=gBH>bpmcWWoRq>k_~sLUn-p;^}Eqc_x(7@5F(kh0jd@rZ)u`Q0E-p}=YOk}&&N^W;<-mmDY*z2{{E`R3| zs$=Sp4j+R4uJb4Q9mTckSugckfO`45)=IlV`W~Tb3Ek8SJ);U|QH^G4i;g3RH$Jzi z=Q3%G>4~_eh0_kddsaJbb+ra){m!jIt*U{-_F4yt504L)$Gy3e2^(4jhf4U(=HhRV zvu|v?vTq%CEl^tSJH^1@t`D)KLKZHM&)o5yw)KXEwE+5UQb8vugq&Y<8l69@^rVxj zb{~;@tM_!RQ7}t9%BYY*UI~!kBvL^b`y&T9wax?2ae3Xbetk8oH@fE5BLHpr#iGyX z6BcpiOc|&bnDO-pX_fn#p7r_=m&cvd(-q9m8o9F6=P`4nxplqB{r;{Zx7f<tR1_*@Im*;--s}Hx|^oah_qZ*@=1jy{t0RKvGs}S;Q_;7c?bAKWgJ-+W~1Z@_Z z-2+qvFSLTR!aT^$frP=Qb^CN--Y#V2W32eUF-bB!myX6SeDbXFHI9lx1JK{@EH&1H zOP!q=BO}hIJnNKnk2$0(3*|mj1R#Gaw!3ZX+K}BR!M0KXW{9whfqQ2822~;CD>5k; z^NGMSj$GamL7K?4R~fT4uJr#ZI|S7_n2_zlN(KatHuE@fp7)*aY>Cai^?-WUUloTD zgQq_l=*f-reciaCvUT-L-9o^R^ifasdMgOWY&n30BP-*SB80Jrk@HOU{ z6c5u9L?t^sRo=@l;=!r#spYi4?bZWbjAxc*Y|Xmg>e|~JaLTH*{VfXUbgg&X}$5bt%`iyKED@F8*h(;&H-B~uYqGqYQR>~JK)$^ z9boI}AaG0({Ex+9l5c2CX?`s4qU)Z#wLSMr+d{AWQ)zaxkvACE5u}BGyb%v{*>%*6 zAH~Th|FKEXH(vnP9mzBO$1yRx@Tkh}^Eat$e|A~oyL|=D>TRx@u$>cPu*}K}V1h%~ zH$alRolxpeOqm1gM_Gwch4BEWI={K*aNnpPoNsL5;Hm1+no>kT7UgHFd7OpyJ)n}o%(R#a@<%+XdGZj3v2QDA`qIN!;RbZ| zOssZWxUkH5ESiEq(~KJWK)v;#5q^P(uBHS_F_X+7cdHIy2oyv{LvRk|pncv`Wc0+=*^JBK2dAywc#=ZuxdC$3f0JXyM+ z6O&oDvDN_U1$uliQ^H}O&P0e+jyxP89M-XH*9JhIg7Jisho$lNRQ)3`n=7IW(qN$W z)-xd^Mx?jUfPo!ba6b;L=I8|00 zSeOHVodF3fTrJHyNSZc1xS6fS1Qd)Q=_+J#v+rl4XT^%W8u*|OYJP#Z04sNy5nr=! z!=LM&r{qC+tTQuBMR>23g3F49I&mM z7oIJUhf6%dr`gss)jTO*jk>OTvX8sx4h~J|7gS8Vtn1I}DanJ>mA1J%go=cQc~pi( zTYvUiO+V`?rFfGf$vA70`8H`lRjzE?je&DqBv+MMrncuD>H|cmxdQELDAo&Td#uX9k6mr` z=TkHtI>yzC(zTJ8B8zI4yi|0n2csIW=j+7M&QBk)`E_g$&Kq!Dm7xbd`-R*P&W zi5SUVYPC1=qCKpb+gy$)EECxEYz^%&(?6LxvJ~1%`dly2HONGUm})orgdP+n7R_wk zEdJVDG}u_*d<^PE#$U9!)S+FPI^|e41=ec+R`9BJQapW556BrQ9!H$LE?}@8WG>A) z*8Zndsgv$7rB``0^HRo$&--MOyK9b2C-+(V)>fWTDX3?ASjHap1;VY#8R}RO&B6xFp$+{INr;b7EaX?WN z>S>EyIH7+W(1rY@VcqRAeV3d)4 zHTRu#1-kT7AQP>y=L4{52`&NhqtP~_w}Ee>$VW_A4U4V&zw`<&ZwWViwFpIh!59vYVF z-)L4*QT3bnsE(1mXS$&xDdxbyK~$8ymZ|VIE-=iFph#gvYN!4j*uPXl)VP@30tCnpx@PNDxb7{vsd_XEcTmTfu0&GnToZQz*Sa3Ps=9zuyEmwj8MQh zqa7UldGRrVs8MGslR`}?A%JSqajls?Ju0|gfmH!mYI|W+v5ji`;O#yB zt$)@+_u#q@1OkY7K%;DKee!%9;$&J<&UzTnxSe^Laq{(~;)@BgSar^cC3LGaR} z)>)Ug_p}anIL(DEFVtylbbDJ~cbzP6=5sj&9j(LVBOD?D+HyJB!SjW!D&s{)wS>Qz zHV8USK5&|fm#~j5blv`S>bQD01yauo`jU>k?bVJR0IW2-VtU;{xsi0nu;7Wh2Q}Ld z`XU*p{{v?Q4>^6ZFIof6P`<3`o9`|P?Ob@;TRp~i!*!2?ykf&Yxc>5KpMA?;z)4P0 zgz7)=pVvIq7is=}$00U@OSZV!%|Jp5r+%f-p!sN@xohErthpU2?G=}GH##H&6#bxno&4u>$0qm4XVGl4Jis9$YuoO$poQ%iXL7DmR`P~}q#N>wClsPvNz>+1 z1<;Nt{rq9Au>^OIgUP>wopb?(wh3t213kF;z#G+zWjPD%m?+V*YUB%!&f0rKfo|R8 zR1}vWk8SPO&f%+1TeuHQ^LqteqcCH>wS|}PS6isA9f_M~<6uF94F@g_+Wi;+-NpYk zyeJ}F5t{9w9<-9Qj2RFPaD7`qfv-}YMREB9w~Fh;k^=HwH1geXbPB>bvlPL#SU5O9 z=X^xadtLx-DQP^S03g5RHgbzAVdf(?zvJ1s!m@kh!0ok<$sUtT&dAam%~7y+P`mRV z6-?jQk2vmo4|H{GqVLMYj8tS}!knIua9+kK!}-l7)q1l21-*7Cq^5UcW@dOm4s|w) zE1$R885x&BX%UjxsKISLbWWjRk=6s*7^`y}?9VFP->?t3nNbBm{G)d2xJ27LOnuArOF;EJgSJdN%G6 z(kG$Z8@y}y0StwvP8NlB!ux!*l=^(SC-?Wi8PI8T@nhnIH;`n%D}b#}ZB{w)WC&}3 zqv=_yIvt2iVt@%j((uE_d+U2*qV5WJ8oTxb#+RedhkShPK_!zV5CWI@UoZ2BUh4!N<2fIojw8Ue5iR+ zNjmjvhD5VJ8%N)1BCZrvdslvKGO_w29a}0ua&Di2l-F`h*#4j0F&iU4_V8BYE6NgC zDS!yx&}swMfn}CXs|qWJvD#R?XA_InJ;hA0e+k!cj_F_BKd^eCYq=C~O=#yZB6|Px z{ZyplnvMskZm5yyQYJ58#0i)1u@JZEm9T`auhB+KitE4kqv$?u10LlUquk22FA$Zr{rM;xmSlKJTU; zDCF+D9pkcEAljNo^{W44S#rmDrr2o-KZ}zBze88yy_tg91sZhZ^i%(C=`X0zlu)^X z2)#P}g!n3lc^3k zJi-V(?9FOJ({{;=h2vbh^o35SYjmpdddc#^;g5Y#rNk%>*PN6 z)jXgdyu%y88`q>05;2g=UG_luqH9fmko4H8-u|$-t3wG*I>CI|$&&w;{|5YD!RME1 ZLfW9hL7guiz&|0l%uFne(U)Bx{x9NDC0hUh diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00000.png b/tests/ragger/snapshots/stax/erc721_approve_5/00000.png index 3507984ef23b94b9e71a8368997b1e199c4859f8..7a48edd5ee8c958ec3f47b10aa0c26accf8c461c 100644 GIT binary patch literal 10988 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 T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00004.png b/tests/ragger/snapshots/stax/erc721_approve_5/00004.png index 19d9295680544f10be004e8ffba3a129340f89f4..107ce91bfdd004e836de96f02ae3106fb745addf 100644 GIT binary patch literal 11916 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 AhX4Qo literal 12592 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 ZLfW9hL7guiz&|0l%uFne(U)Bx{x9NDC0hUh diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00000.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00000.png index 4db1d2e9f33e7464ef8dd2a75f7bd0d94a73b7a4..84aef9b75f5b1c2b951c832ef82801e95d4f8f4a 100644 GIT binary patch literal 10324 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 literal 10385 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 +38R&HWIKubK=R!m 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 HJHGrMwN!}a literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00000.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00000.png index 4db1d2e9f33e7464ef8dd2a75f7bd0d94a73b7a4..b4c13a184ebc7516a341b8a37965693c57a121d6 100644 GIT binary patch literal 9712 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 literal 10385 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 +38R&HWIKubK=R!m z(+A@?uJiA_nZ5-}lLQzH;GBeLQY+*ZAG2U@ ze!erHZU`NJb|-0!=U0_MwGg zMO_MCt{cVUw;P}9|F%BMj8}Io12q1dR8wbSO7prG*9c?(!OPisFD{IU@0jcNbX9nD zjYR?Nc~8Tw^sU_k^WQmYXZ)!6#<>cxJOBEblATK#tMsEk22v&YG13?Q*QNrEA7g4K zw9Z9APkoK^baXg1xBJQEKQp}kZ}%|tA@WIYVf$;Y3?0G8KuOfUU6yo$0Y56q^xwSy zq4i(-(m2y24kSQU@} z-j&Mk+o2VJkR5pvfj|^sNp=E)@$*lbwt{qcwmMt+V^x!8b~w5f5(_IU<+0RhpiT>^ za+$36!v|xKHdNBvJIix#9PqoxqIPpTJtOTkKsik3X!>k%B?p)*k1&r{9$c@8+K$ed zP3B7yRe|HS5T3j#il$u>YzGwNrJ-xJ~e#hgz%{7YU2 zvpdOU9(^yCQKJ-l-M4-VK9?t@zJD&>#o9W~#}Ky@sinCbD$QT)<=*q~2k|M`#|hSM z8X0JD))W-7Efy2kA*?D2UE!<_ozsoz+~g91YX5G{iM&mESrSqgPtAC$dGDbS%!6-~d{y{4w%fCgx+QELBwOuczQfoX7ELk^)8gfvmz= zCvPf}+K*Wd(kd{0{<|$;VgaPT=Ck+Nhr*>ieTj{6syk%)s|gsfQMTUD$vpzPR~r1+ z)%e~iUkZ+3h+`|aaEk@Ru}R}(KysbHP*9hGNKQ~^i`nNP@?OJ%tPOjA5blivP`*`f z;7uKdn9!}ce{Fz2(JnwNI+b1g8SE)gewcr#w%rL%Qnm3~PeyxjJM-ji;_LkAWPD|3 z!+NEsvRZ#MVAv>db}RTI-Cf7V|AY_!BT-`OVsjPc_w80t-TPzLc3RYZk^YeLvW96d zw*ABN2{`V}0`S$SZ_(%Ne9!6uMzdZF8kKh#f)k5L?zj&aXCTaav?Y8!8iCN{%V`v9 z{-BO<1hclhPkO}H3NFj~X_eN@h%A0>98BYWZko3A*AK+kZ{YDZJWOe(BcHVp8{E?Y zz@RKn`gScWck4J0yQZuHwCs0!#@D$XS}w|lq^f^Rw`V&B_)$y3s@V77-NVCcgsa{9 zgEc=Ww1*<%srr@|kWG868x7zjsj7Rr&JHq}pOypQ=jZ$z;3%Y!p2f>Lc~t&2;7M=G z>-_@!l5TVXs-R`-uWH*$9d?I%+%S&EtC?EjgK;X-Z$BtW30RXV4|V8%Bd$bJ+44yq zXv6E`M3Ex;;q0c|+YxCj^}}Hh&Xt7q8F^Lgm3xH>x&ExhYlEf$R(cqGEEXbfZJY7^ zf!gA=|M?Wx>SAA}iNvs$p<$EufP7MjA5moUJKP1}TLAY05VUVLm881ykB8CcgKXh` zT-L++J+JU%W#}IL5bzK1_{y3#!M zQjN#G5?O6!Z9R3e{6S5p4yQ8dF#CG`SKHTr4L&nsji%c6*zZOXB`CC z-Ibci&ZvAEBPQ&x^?LvB5~)xRfJiy(4)%I#z^X^5^I z&{JQ<+L+k+dK1TI&N?yoEin8+RxQF`!$Ce1qigIP=!@T(wwVg>Nq!_##b0FD_;jY) zHTB)==!K*4ZWUAW65NhK!9F$KB}^lah4KO}#tO(l%f+ll*I-;vJY*2%)S{{B|3Trf z^-TZvex%ypo(1Me&17c;`^J0`v=`XU&?kpo6yv+T;1sp+^H0ui4=u5do!ucJv2a|E znW5PBTr4049lu_^Z2jQ+QrZ{*y7kg`t}$8g_tzG271^!*a1J0#X_G-20w>1>st g>VMttyWhvtsG;$0)crJIt09A-o|!J{mh+SU0ab$@eEEHxC3v1VdciK(U-gHk*-w&tl6HP2I1B6v_* zp=kvv8mXoz5z$6s2zqXPe!sKUS!ccHUF*E({Qh|TbH~2-eeb=ly|3%~?$32UF*Vlb zILUXCiHV8B;I5826Vs8WOiau#Sebzq6_cKNCZ_9;4Ro~bhZU3YFyojZAg6cT#;#5!G?nr-4_$(Io_44KeJm91oU^$YRR^Zy1>Nl{lz#`^`%Ddz%ggn z!HmJH?M$ie*^esRxnpmphIn%p0K*E+@7?n}!aMyMi+*a$bX;ziB^tP0cJHRHEO7hG zdG*I}W6T@fD}vNF{h>_Kg_~M+nYO|_vC&o0_thcCULb0Zo??m+`rkM8zhE{0{~RJs zlOn~mt2BvwsfP`J`=1w9;~?u} zSw8Qf=c(X-oV#J0f9_GjR!g&tl|}QuW0Yj!sU`&!RVwqN<@)6lvvGDtzuJI*dDk{>;*U9hex zZ{n;L@+u5i4`T*pBue)CpT8%Spy-xt7Oem8F(pAEwRNE3FxEJK5!s)zOtGKP>x(G{+3mnPVe=i2|(&9LU?IKVlZ`};u+5R9BC;PXp z{|fNp)n+Sv%&Tj$_l|^t)t|3A^ZO3Rsb4oQ6j&eU4zA@0X?|dai2KJPmJQ3%_@E|X z-17grsQ2IS6B3)Q8JF&lb#v#c?TC9{B9Dq=sMwW`U!-7_#qjyIz39GQJBNQWl&!1_ z=j=9U`NO}%JHav4pc2weph)K#(Ihd{^bxl+ES0#F^6j0So4-(aza~<;z2W!2aBi|O z^Nz8#OP||==LMT*3B7VgDAolT+<*E!PP6&o>8)lLQ0ep z7tE%9(mt%GKyAWHin?=_!woXSN*+i*>~c^jO51cN!;muUU;;w!9cuO1XuwMi1TJf8nd4!_AhSXFLiaCI(0@uC3BBU_UY zedB72!YW;}$1bn&e)Xy$T@Gs%)^(AbNY!QP%-;RCPOA&LW$Pjx7j&OhK?#VZ4b`q3sg&`}DU9^8SaG zwOA^WY{o@@^j5SELE`NWMqzoyGlsm0IMS4ci{YG#U-wGhq>pW(m6DtxGMZC7@@(UZs+b@uQsqzdVjH;GJ1M|dp(uUM zt{K;9RDxL^_oPD4Uh+{Wnq7TKR6^qY5OeZrAl2u_^;2~orc&eMYDhm!QnQSn5p{+o zfd7GQuJDt+)X0(th1Wpx61KqWk_P`U$P_j()O-uFWG{;PFe&hDAPz9@RGML}15V!B zX#9c{Qrcu%$op;ESktqdUNuzch@jXNnuY~?kPn=I(41&~ycJV_xS1XhbkGs>^uc0t1sXF;Vy!Rx)?_=@j zY&y#z#ywRz*6J5*Iw2x{2z&mK&QtmAl^sv!k=W>U$7bAYCrxZ&kO+a5O&*(8Z4vbQ zm|ilQyb()CJH4R`w{b<{!Ob|RrI8+_(W-t5I)yq#4D8BhI2P>&6oC=%EZ?k>sswNP zG$-4JqbubgH(oh;d*7I9N4jx0k-tOi=GsNZsGs)`D;ZZMhi3ino_2iY)d!wyr{_|J zec+DH$}z~J>syhT!e(5SNf{bzEb?m$(dY8GQ;ABY_J+^_58Wi`!?%;Ed@TzX$lJ)KGVYHSUTM zKc}u)F=m-Sa5{gRMC(RNHo%-aCDy{h49pk%b&bf^W*4nI^>{g6FJ+1)zh7=Ip8tt> z+W%9{Y!3I2D)?Oy<)Q!_9H& zw%RpLlR`qK1=ybbg~<1qS$HTWFsz1I9EEp2*MPHK>kqa&eb(mJCqKl}NRLtdOO&jC z4dW`{QP|>V+#RV?uL%?!sne+0;j|eS;20!Ygc85ua|_uC@|$z-VGgf%BBDNF=6QQ7 z4ZKcs`)U%_epH^e_Kq2xkZUAYzoj}@I~Npb^N%R=bH)d2hF;6_UL*jqt*kN7QfGeE zTAPs}f-vE5*gT0W$F=EFK}EhV-;W?ztjxHOc;f?nAR>?Y4KV`7>_jy=Hg*@)kPD4` zx$ounl`MPM(y3G-d%0sI>w$^O_4IhrlgQ75+opMvv)1QwUb$CqN`kZ*_0E~~tASmg zLg!(&?K|e9l0#D$G^Ti}w6So>{k!tePCLmw^z5;SN!3C_uV1auJD?_+^({u3-+UXw z1{n+2qRuTHkQeNk(ExHA7*o@M~%{^x>OL*v0Dxkv&qwcRNL$?^Hok#8wpNxB< zFC$kFc6IwMyjJ2stjy7v3v9PpIVf5^8?9u22kW~95_)ByA89*w!l+$9?elj$U&Ol7 zdl)i}sFY3|TyS3ZzD40|Q-!H)_e!gOpP>0s-jYOmtd}6bvL+3>An~)8Yu|5fY}CAp zQm>W0@7BR0}9c4XI7k2vB4D12!J?;&5!n46uX zrIWSOGfCZ&c~&RfLybDeIJ|qzwHfVr|B>*;8v5MT)Mn0xcM{yEc24MD3VRbO&o=UO zdB+dI*x7;bNxC@gxW3@nILS=1T&CI{rxhDlPpoyz+D)-{w3ga3y*N?$_^24D%P}%2 zgMD_%^X8WelP$+h3(u$ofaMHgrgYSfPO6YYYuF3toom1rL-Inh7AC|RynIj`11yzz%d@;;Zx#47br zKfW+f5`bjSU=n3flA!i$Xny;j{E(4=C_)Sj)|h@t9vk+KAKYg1cV4$4vl(LVmrP0g zqQN!U2WQKUw!OUG6aJ=$H*sOG?!!)$g2~<7Itz&L%W^UIBUs@c2PsbzIH6hH>*sYU zZ&5Dld%&ME$;}Z@S1$pPBDXJY|E_Tbq@?W%tD(sSIJ|=HrrM0FhezZIezT2GC~e&B zcaI$Zd1hv|K14Dj*jI(MQor8QcDk*)^O$#Xz6`rR!XBNjrl!Mt8Z@AMBiXgfp-@HF zps)(PII-?1IPKXEiO~5D#LClt#^iKU|mY?;V0hxQ5-y%?+wpJ0W z-oCmo2zuk(m0I7r{df~ch-QMB66jBum^|8BK0^~{DR{+LVI|nJB&1l_pq75WPGQ#i zR;9UHvP)f9FQsU)T>{-UwpL4F%s5pZ^~i%E@uSRuhG`0#@m`PqQ$_(;LD66}Oub{j zhFRrBkM=nYy#3YFictNR6h^0+*L&*fyQn^b_nns=OIKLCDGjzRA&TRJ-yLz1Z;EHI zv)c2NE#eQaS2i4cjE&sc6-Umq!+Kc{VQa=eR)ffJg5tHEohU#5uFWiA1K*MMNu94s z#+fg7n`%osxZZJ|0+cEKhku{P*7rOO5dj+idLFTDP|PF1@oGbPlsCW~sQUqCg` zBH${|>&6i`1-XlUC&XhqCCjqxuAO!qB{&faL2$4ZhmlCoRnU$%AbLPqqrY{sfWbM- zsp~bz&mNvQ&Y9<-b@g)5_IYRz6u3w{5mSc>HXRT`E+_UE@-WzI$+vI%zta>&_TfIe z5S899Jgfot@&kh2GX>a>0Y%{@zYY#y(y8#*`F|J*6+Q+Gq$?TUV=uLnG1O!~b$rOZ z@fwEOCUMIWU9DFKr2pimKH)U*}j1X$6@_gT+hVhR1HopBr4TB?vtl;;f{h?rd_1DPPAFHQL z8z(zHJAWz)wlk<`rc3T@wLkMc-Cj4}FE-+!2QfWX^v5pn4#nMRQYVX6rZBxx(v0h! zZDG}lYb)#Ehb?$lhksxhj6aH!rs2Lk0PU0=9P%)9UGcjl)9%iE@rma?%@o=|p)i?3)ZNI_6nREwYRSOj|s*jwa>Un04{A%k{988w89@en4@G#6{6jtC`rf>!b9b_1h@2i^RSEUk@ z5i(*$Rz=G%ChPi52L3kAt%AIE6%^z;C-7ji|JOj!LO4dF z;HSX>e(}00ear$x3V$0lJ*Gh8D%h*vbPdV$s+wV_+1#skKRbO2m^)OEavHp#0ZJQzGNm4^j-diNc$2*d?`I8vbw=X?a3^zl2cUO#P50{~ z?Il>_pm)qgZF6H7z5XT1cHStkb?F7+j9-~J?4gX^uM0Fy6kQmpAGR>MRp*wq@#gAG z#;011oncQ+KcVFE31n4i{qB%JlyKo=f)`>A0^u#peW4~*v)L40V_mWwuler6EuE|l zBfzzum5j?PL87O@gbt_4bAN>$dqi{ms+7Cjjy_+sOrT&7wmno|&Z-V2xh}ZWXaBEz8L`xgf?N-BtA{{g2-)5B- zvD5euoxr|rUrrNaL-P}U|<|W zNbKJQmn;K4R|Zv{8*80;?DFYHI|Z8X9P?o3goS+6wZg|vzDRswcV;r997L;&eDyW! zj155wExVKSnP-1~K+T;w#mt)UM05cWiwRgw5fEF!-F+I8>T-5N0b{&sVwuazmW|E29H&N~ zS`kwJBMAFHtCatGAOG)=@Ban^`q$(6|HVljD5V2*hTzD~6t>uzVJcdS({kbqk5L) z!ewrI7VZ}lVP=;2(J0rHe&*}~(YiYO;yXS-7e1`MWeACqCOPbKM5RZuF?EYOo{w85 z^wyIb#57Aus7-&vxMX80f(zJsOWv;_B306YkB*H^j$sY&IoxGFl`nJwXp^`Bw56AK zoXfh95A@S@w0i!#FB9BZ)zM=)*T@-Jbw&$D&h29@tdpZf7fJUw;1`W zIlTU%e`DhQBDf9BFtr1ykQ{FCFV8jFfX6<`|6QxuP`K=XIu}p5@_Q4L?74uP{sw7u zq{n?b$@C@U#xK@5=T8Yp;P`56gbPu}MAC^szCTz9FClfub3r)ijC~5FnW%I~0+T{{ zPNY+hk+oWFBod<>bOGwOz@MStzLa$8nt>~KFSt3L>k9iFTNmC$bqzo5)rU&#<|WDi z=Ak?7!H_7V&TGPh4bzEt>|r0m#&GojSt!M%6JIx}Vn$O)-A$yzjKB#x3|qdMS+F%OgLK=(wH27*qz|v^4-0&~2f4%7`|kjis@(m;9m zn?ooFZ8qcVl?DKxoGzRI5JLx8OTlxRTJuU=L-6oo_E_s2cCzL zY0l>vlvxWXXGYV##P`kO`=&;AQX$zY{An79=1SsI5IwuPw<`neR=W+AeX^!q`O&MS`|D`zX>SVbT?(uHYdmQ zcPqh$*hy;7;DRY0jx8UO>&9hHR^|{>XM}q+%z@mVq5h(FR;67!EQe1(()Y5eKpm-L zuDbJ-+|7Ex(y&MKjESL_<{>*I+717%ChyA=Rf7}YR};K{R*9Aom9);Nb>eDNc}{$Q z?_;y8Awl~Yb77BY+2+m#L2VJDtc<9ZBtHa8?n>!TcpvOJ4CUP4zlxFu&7QihdAyRR zh%-f56y$M>HnO_3)?Y`Ck9{v3m^e$Rf8a8B7rN&lVHjqW$hJ1>9GF zw^f0#VZq3g3fVX5Z&}YkBy$Bue(-gBqi`s~OX~WBaIs!32$!uBnkM;IpB}pe znr}qH@v&KxDTxYqa87Pod}Mcs+?Px{x*h&9rWZXn^ zngEFfkF6kdDqM0c)tm1MR8(iEMf9}-F53`WJr%2}I?~^!8f!lsRFu_YwA_TchgCs3 zltluDni!(?NTBbr%P;=4@F=1dD~Ht-f+9#(uIY~!ZI;a~{#@INq*8z}fxsd0bS|SF zoqE>h{Rc+oa@VH$Z`4&%S25#JZ`CH1haQCTdA>ImBSRL)6k5hiYXJ|$-(>91@BLKd zsH>Zn9?R4^9*@fO>-*9UVmm zKXy6bjzJ->+{q{Va8$Y!1BDOHB(dZ*J{^X@AAtpZbj}Oy@5PeuWpt_w7;ZgVul#sP zcBr94b)R1O1jW-!xy+fQlwL`~OX-pI>lB$fFj`PT=_k1f)JpnQD#EM##20iYKmGKr zZ(2pZ0L%vJBjk(V=d{Y;Livz$;U%F+d<2V?uW~&Wz4z?$s92D2w%+N-E?%M5TVl&U!a6WJv&UE3 z857#WE|wO0f{z1G;L_E1nb$9WRhsuhXq{ovx*~p&2p0KrAw?-&l`}QEqFn6TuwqwA zC2>X!t%&koe@TVM)I7^_)VsDhmzOJ9_%QpTzLTxJC1H z-1BdX??+he5i%M;uBSU#wq;&#s-I`DD--QB@O0V)c0I77| z>6)#^N4&{x3EueW8s!>@PA-pMA<`` z)W}(KL*(l+8r;)5EGApND8*dP_Y!paz6Xz6AZ5hr@RVA=yV??KLN_Ro2S0!IH^g%0 z)~LGXJt^==<7p&p(oEYE6?n$TSSd#XOY-@}O2W31`@($F%z~(Uw?c^K4rS z?wo#RPeWZ#(C;+gT<~Ce^NmnTtZk96C#upprivgOTYXnA(Nj!b;&xKO{myxN zb||1JD2>qZKW?%~+%8yg^X4=YVU@UD332t-`2DN(hpV^W?_cWYrJAqd)PhE@w8Ub} zl8dBv~6i@AT=KuG?@qeap|L^)XO*5ScQ2bDyqfCMfqLMLhB1P&rlbT-E znSc2wBmYs8(gedxoTTyqEnp&^9H;sD(tdd8ktG0vQFk2R_z*|JmO6%nS^}8a9GQQF zZBQnic%VDf0aUS?ap^=K#2oR*_WIW-A?A9slI3&aol%4g;%g_LNr+>JFyJ@xDtT|4{zcU zUAEUA6y0c_?{+s^g~k4c0396sdH2dlBmFe4Z5EJV89^gLu{VH~FmeX4 z>a28uL8}aVy95#_`LQ`iYkU9w()aEd>Q|-rZEFve@ZZrqVamOwwB%m1T`!gumzT zz)F0oTLQhN-nd`38pvXr(hr^Fva!uAc-TsSLZ$O*+r5Mi_Y6#~p$8ZdGj*cN@KbhC z)nfn>J@M`HTXhxvK&Amyf0kx_DhQ|?C8U@Yxd?gO}2cD0W2VBGYDdHX<)J@|8>)g_ik%i)1%uYj-<0g9E91c;|HD_VP*#gY}cI9i#$l*J(#u=g9P}EnGmc8YT~2xg4Ge zsRMR+Wc{_vN? zX^&3o4rGUkWjg3(?N!1@fT4uu89vA&DosR(Lp$-B-tV8H7tQT{0$&VhYjo1A^Z6lN z-M>yE^H!rYjIw4@5o^7)XTTnYf@WA7j@(3zVej=(R)X8S8A~K7b)HvK(9RhjIs*>q zk(lX@J4Qx^Qh4grY=;Y|aFA zS#*>4{S(~xac*+axE4h-klvUp(C(PfA~|P!sOjh z=6c1#$M8=A;&fKNm1|94_0)1PbQ}Gd240iIh|cxs+#1TMItoOV`$VrUSK8!2;yn** z$@vrkMf3dCkF0|m5vamL!#+zdYIsElYe#O29dG@U_wH z#bG_dzFC~gGn5@3I_j7{+-`rF_&UT%GJ<$x!N%@=aT3)Mrn#&NPLEpMTM2DTQyeZw zfBYU``wH!f5lmKQm)r4?W2^Q&9sF(g>;@N5OQ3HQUq5m0$mQ7n!oub72_dvQvcLWN nU?HFKu}$D0_%F*y2bcW|9weBI3WNZkWilD)8tXJ^JIDPS4+|m2 literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00000.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00000.png index 3507984ef23b94b9e71a8368997b1e199c4859f8..ea3b0441ceeab2e91aeec816b755bafcedc52046 100644 GIT binary patch literal 11597 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 M-}H9PO{XXS1qQmP`Tzg` literal 11662 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 T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00003.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00003.png index 4ea90064d21bea31826c5f4895a99f733e539158..5aa28c72c386074e1e29124f4d6cbf8ce6b032f6 100644 GIT binary patch literal 12528 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 literal 12590 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 T!h1lSHJh2K<+a)?u2234&AtsM diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00003.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00003.png index 4ea90064d21bea31826c5f4895a99f733e539158..c51949c59dc0ddebb4ef0fd6cd16c72217cf336d 100644 GIT binary patch literal 11914 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 literal 12590 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 literal 10385 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 +38R&HWIKubK=R!m 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 HJHGrMwN!}a literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00000.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00000.png index 4db1d2e9f33e7464ef8dd2a75f7bd0d94a73b7a4..b4c13a184ebc7516a341b8a37965693c57a121d6 100644 GIT binary patch literal 9712 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 literal 10385 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 +38R&HWIKubK=R!m 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 literal 11363 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 NvB9nD$g57z{tIT=YZL$g diff --git a/tests/ragger/snapshots/stax/get_pk_137/00000.png b/tests/ragger/snapshots/stax/get_pk_137/00000.png index 21af7289f1299fe994230ff28d4d408f0ab41d5b..9e93052a4f883fa034b0089bc0308af333ccecd2 100644 GIT binary patch literal 8875 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 literal 8941 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 O0AzF3y77`<+W!DI@85_3 diff --git a/tests/ragger/snapshots/stax/get_pk_2/00000.png b/tests/ragger/snapshots/stax/get_pk_2/00000.png index f70d46476413de0a08462d7a6546566dac79a0fd..123dc8cc1b1d626bada5da7eb96f6607a62276df 100644 GIT binary patch literal 6654 zcmeHMYgCfy+IFh3rZQ`$sa;m=#=H{&Y78gb>GZv#cyj?fKOcf+p5jXwsoC3b@Kd;QkAqH zJNkz8&j2dh<}2z(huu#+e)G8R@nZMKjY(@ZuDETs`?rmMU$yxkvTT~->GrzE~pwoqJ?uvJ$@F(f( zY)Rb7$w}Zag%@pKVwkbepICCMpc$^uiG!*KjsOL;VpdIUNIUH=FIvrZn!Vw+7{MN! zhXzNwP|Mo?=*XysUEILK!Ax(l%j#`WMlQw$X-DdU)6b)UU&Cuf%QD*0oCDkjTQ2Tr z==-);BljI)&Q?d(_|^e?S6A=PA(2R3mws$W5@DBDjSHviLZ5|)hvz(ox^Sv7w`G(a7%jxixgq0_75*(dOWg@74}?dmQaoTBS}A*o+v|~eSY8*_qSNGjj=pI zG9N8hcRp;DwO^f6ZHuz-r3*2Ah|OKsTiY-}@8OWQd9LjD>72d`e@wFy$rFN#dQ}R= z^9%w}ap)3Pew{5%L5duFxBo%4E8O*Xiux@xf#OAUu3Ro|8?6F2FguRC{92VFVI~m& z<%PGA4~k`ncsV*Op~vgZ^`Yd5b_Ow z(o@({ag!h{V{BF~q5bOmrn-Lti-L@Hi|rn}X4q3- zqZCFMfs@CBjX z{4%vlQLQwwS)y8?im)8LmuYG{r1fIp^Y($*B2q0Qwo&|h_XkyqQ3^MHt<29SSBm2u z+0sPtF;Z#LU|iAROXSJLiLEuJt#)}I7XlwTq3Q-Ls^`4x>=dS3WdO#2t0Run`fOB| z|Jss!+T>;Q_9g)jXcj^C6y9rMe>ea0a0Uztd)ceCgJ*pSvJn%?cp5C#Ow1>`n3P#Y7IS6-n_h85EHjxPoGUQw)?C4q8lAhmpS1} z{JMqstPEJ>Lz}O5Y{&-Ma@v7=5v*~XVliV-#nucBt6$2ijwVQer4AF-$HrH9*Wb4# z>ie9R&$GC8#xoH3wZEAh_*KAiw2AuEI}AIyrW)=!MZ=80`pkih497cy{l{IxhkyQ5 zr+g=l`sl6%Sfj0+$vb-N$l(r$@@c{Dlvf8IDF^{XAiYc^q5;5eqNSer9DWjkNTV-2 zImn~g<~+9LD!qb{BID=zu}MA+JZ(q!DB!&zV;*m0OF~PB8zbOU;$UziRF}>nq^IlV z$GR0yR9T3mpP`i~@iJR9_aJKz{Hx`4LyD^X+^WW=u?N$E=*+50Bu|=!b@vcUl_j2gKLJ;sQTYkAhefEE892 zQ)@EvWb-c(hyfbeG_gb+V)i!w5R86fO_pCz)BQRch+2!)r2-qZFH+b>unuaq+I{tV z_v;CIS8Y8yfGTYQApZpa>KIEZE6f<=yyhJl0@09E3IO`q#yBdl4eT$_ePE=ev-#V7 zV=J|QB-dK~$e*Zlrr+*S_;KPYFPV~^>HB`k9EkzX(y?0Mw#m$2Hk3_*!6sTcsyj*< zL6_T4e7sN(wsuchK{Itjr6;U`w*KCG1%?b`IzpeA=Y4(~X~7)NQsidty!Z^fGh$&h zdjCn{-J`&tzQVWBjRyH)U*R|wL=1`u3~R(H*NIFhq)5H&=Kj4=vicZ+4!#p{3!B%O z;dx<~1WhRHRNSTW*AGV0YfR9-ij1jh1_SN`MJ@@x!6FbKu=EWn1 znM;JQO!OmX?(wJ17L`XXrajw-w|F6r=v83S-F89r9m8ZFo8{ibkYXoXSF)~QLb$Wk zkB)BN)*(?vH;N#DkF=5Cwg(~i;E)MbgytR?aVnCvc0>iQ${#IvmT{HJxR7Fr%8}2(iMp?StY4+H3b7+) z9w@*f*KN58&Z4I|4SHtwseA0@kLI4ivNsqP-`PRBGH5vOhaH_dPn*JDmCD-_4>zvy zsQc&9RqOs*{wl#=Q}E>=jMaLfUyvHYYuPm!$@P_}-Uh>M)iUz~6J)5T18leCdZE`r z&eXxqNtoHMMtEJl4e{iO@0c;aB}f`L8d}?c=m}{HCz%$@UqJ_+fr0oUD?H|sb)+w ztK$#+iLQYG`xWta#wSXah89CBDWFcvdNO7gG17TS;h`mJ#+t#*!z3;SSru;I@?(8bYDS9mlU!b*WPyZzDl&bO-t{=uuj75w zOZaV+MZQL-BimVCKp;dQO}`paxpG3Vpm-b{+Oj`~nQ-KAY0*`2M@#YG&WmvwX=!IX z+6+Q4Kb?*hUMm~Q1*TDw-Ugq9X~^qY{KMx-?XMp1XG#*n7kE_G6+@!zkm@{ZPA03u zj3q4ftg(KY?Yv{d^4bd~dxKh?tSfhKStv69x>0PK?Zy;_y1msYNiY z$KnnQ2k5?HzYX4fX6#<)bX5>nZl51Gtlh8Je4{DUVkU_#tz35pJ@YOEJ*>*8pl)A( zfy9-kuvN3Jkghe#C$2nCO*q zP&)N=?v?XiTpKe%2;B?nnF@6SgCRJ>ODNpuIc)3gbPv*_priY2+3Enm2SpM7x-5pA z9;$+uM!E|WVYg9hlGI6xXp-Fp`bZe@T-OWsy&eig?!UNvWH8kx*s@WYD0Dt;%r{gH ze7;&P8%ctex;yWrrJXkj$ui@9VnffBh5MGFc>i14qg6qfXHHn#<((8ne5Sx>3TNg% z9o;R34j1eY&ulKPFEe);NxLrrwyodpWU$v@Di!jT;B@@?_NA z!U>nkZ|)l1ZC@SQ+)*@U*#eTDGoL0+Mc*Lh&>!*Q>S&}t=%PNz56>Mw*xH-?Z+ z?(ZLrvTA3@{K?D#q1V^B#F(i*ue4b|X*mjHZDOnx3{|E%TH<3qdw-njg5Q+;_=!@t zJAymkv@OcrN9TDH(^gSp0p?*}a@SByN6nyea0~=eBqAc;;$ZyM2;%R>6UmjE&JI6t zfGm*5Oc*Vu_yg@B(Nx}+N}nmPvt68wL9*UGN@3I}0lx|bw%u+t^)o-VX<=9Q<((U{ z4PgY-O`!W4TF=bt+!@Y_*6hQDy-M&*nT}TcJXn-UNtssSPme;n4vdUZ39n==1<#SD ze>oYZwqHnmKMVbx*o`l~nub4zo&FBGch!G8ggGO~Nt-!DYu5KCbU%>2&|kZiZQ8Oi zEAp$THUELd07`X`{A;4k+ElfV_meBrzWn4J*!>@S5q z10;)=ofLjx^VrfYrvnfJSM1X?6LT5g45s#Dr9xq#3sVoe7nMTArTQChf~07+6b6TH zJ>Bn+7l}{v`=;ZLDn-8}Bhm&Bf(#E%1PtT8x2)C-ib$`6kfQHT2NcV3Fj>4KNO2p* zK6K%8pI!79w6_OFL`xu$$AL1R+u+j-qH@obbBF;h*E?V{D4<}pNm?{gR1pVCQ!1c& zH^3)Cy1 zgV9omn~!s(sFw7VC>@uE|Kp3z^OV8px^#{A0E@IFTvnSq_^M}OvVU2n%mvLO#SJ@9 z!h+H}8l?PzUAW7zFt>qxZ+LLb)?rZPf06nm&+yDqP#b$&9i{O6oKDoWuk6%~UQY#U zq>WRhunA@Ny2l6|{L}%o?4znn9M2TT>*lv(_J|k^#z1V7M0NdKE-`;e{jml`2CW6q zDakLA91ND_MB=Zt+Gh$m*FXcok#gMk7?jQ>-Ct;_f)p4DG}0#-A^kD}VPx~Z6s+@b z=6d;qL9BcGo`?szGZ7cdtaWzamTJN|RVXshI*f5~$4jn(*g#z02hm?{*5tdbEQbTV zR)fq0RwO^wIyhp8f*#15VkL6In-eI*``bD;wU*J3@3?5sMP;O?Z?`RR8cTu>HKv~0 z6C807_PfmW9eC094t(Bk%wL6U%_-Q7zoqSx*S}5Yv}=|r;N^>1>saC===lIb1_KdN z>??d{0#$Lh``1;BgU6Lg(2Hrkt)b8CcpUpSUDlV1``BC!0j;SoAfpyXbK2W0ODdKH z=XQnVz5Pea$qhjgW@aQv0yO!U#7B1LD-gpO$McT7^-6AUFa5Xt`m#>uu-`^jV0+ZcCS;$VB z;@0;zfXWFp0_LRV#%=4<&KA;tnMq*-KTTpnUn!p6YD+S`R!&CAt<-K$dC@{zY0;Lj zXF+KlphFZ{b}-^@Bz~*)F%h?+O>>jdd8u`)(`u!zWX9N2y%LLr#JIhc zGA{Y&&q$D<@uH9Y4N=iQNa%nJm9_7#hTLM+z{k^rShPmk-nW-4+Qt>x-{n4j#EWK2 z?a*N%#nl4`Ng8Ha%&B?WKrB}0+9@io@f-lD4+-*nZjcD4eQ7bQPq64f9b0n>R7<7b luK15Y*#82Q*QS*_%V@60)}Lqvzw4NtIqi3<<{y!_{tJh-TuA@` literal 7644 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 diff --git a/tests/ragger/snapshots/stax/get_pk_5/00000.png b/tests/ragger/snapshots/stax/get_pk_5/00000.png index 8726e42fa25b177e3fdef95851e0f1667105d80a..2400ed1a1efab59f3b70835aea8aa162dafb647e 100644 GIT binary patch literal 7956 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 literal 8650 zcmeHtc~p|yzqfhJG|e(Srj}{tRGDecf^w{5{miK{3kMt%H3c;XoJ~zlb2!Ix07T0Q zPdH=_IN+32l%ix54yZV!hy!S-q=w$7bJx1--aqbL>s{|!_kI63u=axWu=n?Q_TJy& z^Z9HtuQ*)Vw^wUwm^(%4b~ zp_QB-)?e@N%MV+xqPrS;z}rg_Dq5%pd|VTKq^9vNNq+qM5f`(z%&zS5{I7gLh| zjMF+c0kOXNCTww6SMOG*|4k8*+2ge$@74Zk|E$43KJb6x1GVj~H4CkYQD>IZC3J#c z)+~@Gmls_p_Q^trpe}{>bVK`a@X<2Zp|-=KQio6XerhukzJRhU zLl>smAAk(#;Jv>7|kknPRv4qpvXsopblGXw9tmBkbkl(Er9)qnRe1uJxMDICyv0~1r=KA3LS-fQ4?TQ83xji!Xflg9GZ zT|6K^fK`RBBejg` z--vK4e2$*+QotlvmurveSG}IHIv{U7S>rOeMxkWHblc^tOKFBq9`eD1;F9Ez)OU4L zro<3nBK!?-l&x2xA97~^?EG$=A!jXHB%v>NMu%FUZgW6vHWD_NL4Lh-tkp?%G!1uB z3cr8O^1h}$o%a$n{st&VLp!IE0};%q(zi#&tQ6Cc4ruY~OrlF+ORv3L72O|C+)A$$4+-Qpb>B6cJLr?CohAP8y~l+H$UX~2MA#97 zyj@ZsySoqKlGkPUj|8t!Xv*EU5;{8alvlVJJypJ9tvC=c3hp%@>azRQfC#89;cam( zs3`rsU8iNCP>rl|w8{mRK&iF+vX}w`6TWZ`7z2dl;bx}(*BI#`vE;OUcC{~iBq3b=jmwCLlR-?&RQEV4r=nP=U zp!yWQS>Qjoo0nc;OgbIm{4wFm-W?n?~`$gWWAF5j;(}t zcU=~&ow+o-T^-Wo=AWi+v+0@1t0@RG$GuBAnN?08B;u9bGN*^GTju(rHpU>kj&>_D zPOaZ-f)N7Q{Nax6NyG8iOBRirNw;F5WNjYhfNlwL{tE+Eg@)m;J~u(9`qfpu?qEY;nV# zr>B59NcXuRxvF^-BBEmdi+h>CBU~&B)d;VPF^Em$3f6vY1qWjKt2WX{H809r4=yy; zpRcHlHpeAaA%n6bC10Isy%#hbLQsN~Lh0*!5ZI|Evm-LZT?OhNX6|rI7N~cyE;uRC z?=y1;YYNmeRS+Ne@l{gOK+kvkYN9O5>}l@>LOtne)1!yKYxjO~_moQM%Dz7n<5B3x zB!(TqdiW=)@MTNs8dVD;QNf7f5e=f3C*3gWM7Vj&tPgtQQD%pSV!BJ=@LxUr_~2;- zb2et2SUr3x{LirdByp@NTT(a$&DEWZ4UbJjCWS6u8yLC?$(??Ee4VLESy_vXbiB^g z=b)Sk1k86!b(>EoOxM8$c*)k>wuF^2Sa9E4Gc}OE- zi%nA% z_hz*s_N3;n1XkYk_Xu;GgBIvR&~m4M0KDoB?V7Iwg=l7d-zL$8Rst%IrWqL*inE1tV-BZJ zdZFM`!7XtGp{*3bm89j~532=-wntNk9j^&OBcnE4DCn+{1F&vHb3%Dyk#{R3AWqvR ze|3)^S+60`lu@(-rnT1*e?_?lcis#@-R=)1xyAcgELq(z|BL?Y+qTRQQ@K@0DzfM= z&g&XUj}wjP;BvceB+WmLTMG^Ld17&fa?!Dalj|oScJ$xI{p*;RA!$ za}sJuqYQpQp24iID;d66CFuVuZqm8A^NPfNH#9_K+67?n5EN&tzueHi?^zCiW6{`u z@sIWNK@NMA`Sobct32Z-RcvZt)5a7<$v_s04GW>4?ETc<1HU;}bjPuD42cpriPPqJ zpg*Tfjg$Ri)7Fn925c6vW4Iq6TE*|Ei>~S30gQ%)&hKIG>>?yhrah{gRJ5BQrtFa& zSWy4^?i96Jkl%$KDtZ-669_lX=)@88BAd<0mDX3Q2(9dx(=vnmRsE^IO9j~i&RsvS zzPDm4RYfRyDFKq?m`8HLTlk>}kXeg%6{qEROIpkG;n|UtsGJ<^>$;aQCHi}k8#M&R zD)iG4FYWdzgl%1Z8N*6vo;I`%c3OC1{M15uHW6cnYA8O0jB0+lCj-6cHk$^UTmu&D zv2C+P_)Sa<0_j{Il7lPbDw&#^ZE;3Dp0sE5^V{^KRb!9m#MPI^9a>cr%(c9lgZB;D zp#+!9;|3qWCXE0KYPH62S`C=Cg_0Mb1L?DCLnjufzbvh93E%v995Ul@r7jYxr|!>| zYe0a);3HQ21%@o??}B0}XJ)^~Pv)C?{Rk+}9P zzK1;x=wn}4FU*>zS6l4WSpvFYWK(#%2WZ+y$g7BJ-V|7q-hwiO{<+}?#C$^lOBSL* zal&_>$FyQl%Ca{3#cp5BtBV~j{jMv(UaUrugp@3;O7&0Zg~n%iCqfha+7IM*1+#29WZA!+jj{_K@pi$CH0 zm(GIvg@ug>mMrwJk91HR?!grUN-VW{C-nl%CVv#!#P(p`38A|rf%-WS=kgxRnN$Ts z!ZuIT=^XxHR;MOGb(2#Ss!)an!v3dq(R=$)-z&7U>@^L2PS0+j;lG(nq?BzS?wduC zaAuOzrsKD6RCq@*s8^xOZaK4>R{V*N88U+c6@MpmHBlVEel8gN2A`c5BYfD|u(ufi z5(=PSC!R3F?jrQ*Do(kSr@Spcmk}4t{;}L&f**8s{{^Oj!ga_1a$NpBLQ(_3fw zyj$;r6#as>L@jFW!>5$0WmBQS9|t znUl*Ev6pG8*PMSA)T2*|)IUI95D4P7=(3H5mX90G0wce%GL@wt*FATNey1eH>*Y>o zmh~RBMXO1eLq^*05*`PVpHFi47s+hLhC4gU*%$QAoRft<=xt5@veACcq!yUW#7lH* zoMEvG{dwE?{=T!PQwD$ck_=61G?Yl`o$=}aN+66nz1pdWU|tG4;;CCiAm|o72t+pX z)_(~Kb2$vv9Ekt-yp1k%Cswu?Ip#kj5SUAhjo0kNz5XtvXpbCRB$viq<^RR^<>G#2Jc=wMfEky8+#jW4@>W_ijj+Uw5}f=D3h;5BA8Z5IMrL% zUtwY&ZdnF_Ku{!D=NID7k+Ac-R8>{EZu(_ka|V#qjQVRL$#tRm{>F81=i=E{R`N6za7cjW${+Upgzel4jiZsFh~A!a}$ zqA3X_@SnGPp$fjT@L+;7cd)~}2{Gf4S10af&V3QUD_u~GTOP;Mg*P+L_TE{EatBbN z6MrmBxDV(pp%arj?9Dw+JT09*0tGe*l!4wtdSDk&34SiXstXf&iC5@`@b?^A86@@j z=1p~ApKPDnexDlMy0fX$&~K5>bwkoBA=7Q)uul3hSEqGk(egqky;)Q9F={-rNDvpw zO|E0j@3vm<`3{l{r604&FW1g0e_uy!kQp^TU*VeHIumhp(Is{FXr^| zXR$i;Lu_&i7|qP4UMfBb55J5CJ){QlzklRurxcy{+VzK3(SiS(c>Z$|`se#UYxBS8 z1KCMsu;ivYmSs$0JIVD3rGvNgTS8*>Pdz{Y=0%uWkaUL*CO1C+$tqh&7~WRc5uk(l zeCv7w1i%G5b3B7)CqEa=j@f*x40+kcnY=DhbtcVwuG9>{WJIcnS+OGkX@ycb`z0~~ zd^A<djvv5`!bkRa9&re zB!X#dZ!q8q{kY@6l3rql(NP`kQ*5@lP?7#^#T;hd#izZghmyeXz(;70TDwjXh?^0I11` z$NgN)>9g!ve5CXph3e69C)(RRPFn+t#E`5mN-?pMh23cYo$$n8{R963kyl*b9*EiQ z(WT$2pQZ~HhJojK!jXZM?PQe)wC4GasNkkFtG|JpmL6qTzKuwJP(Bx2t7B_$B^p&B zJ~p=alMCQv$|ba4t^Z`korCS?@#a39gP%(0 zoNnnwIQF?CvD(OMkDb8wPV{koGtz{UxzereKuW0sGqfIFu^AS)nTlW*`nBK*b0=y` zKdhb*XDNe|Hv6=hI~X(kxW5D8b^oKl2)mG&^5{ap3i^k(wYdsukEGh^8M!qyaS5&! z)uZ$5X0uuAJ=)E|#=r__YGuw^Z;F~84&(PwOH;QHoksVsixF_Cbp>VLFm^b5O8oMf zx476aF^0j~Sy_x`*VODMA7Anp{Kl*UVJ>>E#Qn#~my7HjXs1&0njzrQme${k+5?O% zf>%{Ac%{V>2O9X>HoOm&)N>kGr;{eGLI*Jhy|`iCP86fZ5ZB)!pY0f<1c%n5y%ZeS z_xBBRl-y23W~?L1hZ!#A-+0MZ0L*>tA$!wsxlcs zRh{KbId0fQ*;UIq3T+eRKz>--kOJ^HM8uS?PVb%LwdOpG5_G&RF5=yYDZJ(>T7;up z7IWfRyWQ|fr2j)KKWU}{-0E~1-G|xmgMXO#dJV;`B(()%_#44+Uxb_fM~!$u^<3Xd zfDLX5$G2Z1XV;`llkrM^vo;ump7AzgcCg9w5u)(NkJSX0N{kKtGj)gi`3+VuSEJKw z{E>|t0nn~f&q>ABtR#}e_4xNOJM2b{RE0? z5;7U7?3kERe-}8bafE2(>tS_Zm9-Rv!6V#Qf>gC)kNTPgG}ee&;mF1m9LKWBoI!SlmfVPEw&MRr~YMljJ`d+cV;U6rq-ok z*WFfE7-P~ycp=Pjh%f;ADvdS~fhEPgK%W0eZ(C}D!k>gDTpU_m ztnl`KPrb-wv;F<;-E#1Oj71fBS!hUq>8Cv7MoS0;aXa{JyG8(9*7aKG&+A0Lel~wd zXabblh}Y%X=Wva}#E?%weK*Y|cLMYcBPN;Bb?XM*(1288eKotUy*y@33K*!Hb(|$& z5`n{yPS$=n1E^aDwo4!L5pMR>^UyBw8?ZrKR}X)*O)ues!4c5$2JzFQ)nqKs(>Qp+>R<6l61}3eNWl^Xe<(a2-6BB*@EAB=i@+3qkMS z23H9#7A-dc#k8pRIh}B>x_V)4#06RU$BZ~|(u2+RM=wc_+XgT%NA+#@WtOs^2f8{J zRAYHtz^RZr%$O&A3P^(GJGibmgQr)$6~`04Co45z_;YEyk0!X1O`Lx@FQFrHZtkGy jA67pZ$NzF$+1bq7`isn{i~|0nA!1|g@O#a9uatiS9EkXJ From f61fbc0b03b66399a7dcf9a571b0d8a91246ad5d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 11:31:21 +0200 Subject: [PATCH 039/160] [create-pull-request] automated change (#475) Co-authored-by: apaillier-ledger --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index b9777e7a8..06ca39d60 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit b9777e7a81a9c33b3f8997ffa23396fa2b3f861d +Subproject commit 06ca39d60a14111966c28ad114886c8683264075 From d414819b04ee780956ab80b8c477e8509f115264 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 19 Oct 2023 11:42:03 +0200 Subject: [PATCH 040/160] Revert plugin SDK version --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 06ca39d60..b9777e7a8 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 06ca39d60a14111966c28ad114886c8683264075 +Subproject commit b9777e7a81a9c33b3f8997ffa23396fa2b3f861d From bdec1cdc8c3c8441ea39a2922c5ffb321b738f66 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 19 Oct 2023 11:40:48 +0200 Subject: [PATCH 041/160] Added missing plugin SDK changes --- src_plugin_sdk/CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ src_plugin_sdk/README.md | 18 ++++++++++++++++++ src_plugin_sdk/main.c | 2 +- tools/build_sdk.py | 9 ++++++++- 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src_plugin_sdk/CHANGELOG.md create mode 100644 src_plugin_sdk/README.md diff --git a/src_plugin_sdk/CHANGELOG.md b/src_plugin_sdk/CHANGELOG.md new file mode 100644 index 000000000..d01453e61 --- /dev/null +++ b/src_plugin_sdk/CHANGELOG.md @@ -0,0 +1,36 @@ +# Ethereum Plugin SDK changelog + +| Icon | Impact | +|----------------------|-------------------------------| +| :rotating_light: | Breaks build | +| :warning: | Breaks compatibility with app | + +## [latest](/) - 2023/10/19 + +### Changed + +* Now only uses *\_no\_throw* functions, SDK functions now return a boolean +(keeps the guidelines enforcer happy) + +### Added + +* *main* & *dispatch\_call* functions are now part of the SDK and don't need to +be implemented by each plugin :rotating_light: + +## [b9777e7](/../../commit/b9777e7) - 2023/05/16 + +### Added + +* Stax support with information passed from plugin to app-ethereum (with caller app struct) + +## [a4b971f](/../../commit/a4b971f) - 2023/01/24 + +### Changed + +* Removed end space in tickers :warning: + +## [81eb658](/../../commit/81eb658) - 2022/11/17 + +### Added + +* *U2BE\_from\_parameter* & *U4BE\_from\_parameter* safe functions diff --git a/src_plugin_sdk/README.md b/src_plugin_sdk/README.md new file mode 100644 index 000000000..b183cab3b --- /dev/null +++ b/src_plugin_sdk/README.md @@ -0,0 +1,18 @@ +# ethereum-plugin-sdk + +This repository is meant to be linked as submodule and used in external plugins working with [app-ethereum](https://github.com/LedgerHQ/app-ethereum). +It is composed of a few headers containing definitions about app-ethereum's internal transaction parsing state and some structures to communicate via shared memory. + +## Updating this SDK + +This SDK is updated at (app-ethereum) build time every time one of app-ethereum internals structures of interest are modified. +If this SDK gets updated, it is possible that all plugins must be recompiled (and eventually updated to work again with the update) with this new SDK. +Be careful, and weight your choices. + +## Manual build + +If for some reasons you want to rebuild this SDK manually from [app-ethereum](https://github.com/LedgerHQ/app-ethereum) (reminder: it is rebuild automatically when building app-ethereum itself): + +```shell +$> python3 tools/build_sdk.py +``` diff --git a/src_plugin_sdk/main.c b/src_plugin_sdk/main.c index 76c3d4dac..f06a2bb60 100644 --- a/src_plugin_sdk/main.c +++ b/src_plugin_sdk/main.c @@ -27,7 +27,7 @@ void handle_query_contract_id(ethQueryContractID_t *parameters); void handle_query_contract_ui(ethQueryContractUI_t *parameters); // Calls the ethereum app. -void call_app_ethereum() { +static void call_app_ethereum() { unsigned int libcall_params[5]; libcall_params[0] = (unsigned int) "Ethereum"; libcall_params[1] = 0x100; diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 225ef5d39..9f5775c32 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -213,7 +213,14 @@ def merge_c_files(sources, nodes_to_extract): "utils.c", "utils.h", ] - for file in files_to_copy: shutil.copyfile("src_plugin_sdk/" + file, "ethereum-plugin-sdk/include/" + file) + + files_to_copy = [ + "CHANGELOG.md", + "README.md", + ] + for file in files_to_copy: + shutil.copyfile("src_plugin_sdk/" + file, + "ethereum-plugin-sdk/" + file) From 379ccc0801926944e7517f1ab900ad9d4e84da0a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 11:51:01 +0200 Subject: [PATCH 042/160] [create-pull-request] automated change (#477) Co-authored-by: apaillier-ledger --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index b9777e7a8..1fe4085d0 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit b9777e7a81a9c33b3f8997ffa23396fa2b3f861d +Subproject commit 1fe4085d04a88f4238103a4ed3db1484fdb69c63 From 437f8a5679c641f85648211c2ac65fe5bd9bb6bc Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 27 Oct 2023 17:16:15 +0200 Subject: [PATCH 043/160] Fix python-client github job trigger --- .github/workflows/python-client.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 9f5eeef9a..cb3139673 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -7,11 +7,11 @@ on: - develop - master paths: - - ./client/** + - client/** - .github/workflows/python-client.yml pull_request: paths: - - ./client/** + - client/** - .github/workflows/python-client.yml jobs: From a82b61ff8e5258cf44e898de9e6b61aa6b195bc1 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 27 Oct 2023 17:28:29 +0200 Subject: [PATCH 044/160] Fix mypy and flake8 --- .../src/ledger_app_clients/ethereum/client.py | 18 +++++++++++------- .../ethereum/command_builder.py | 4 ++-- .../ethereum/response_parser.py | 1 + .../src/ledger_app_clients/ethereum/utils.py | 1 + 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index d2015a1aa..bd7544788 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -2,7 +2,7 @@ from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU -from typing import List, Optional +from typing import List, Optional, Union from .command_builder import CommandBuilder from .eip712 import EIP712FieldType @@ -13,13 +13,16 @@ WEI_IN_ETH = 1e+18 GWEI_IN_ETH = 1e+9 + class TxData: selector: bytes parameters: list[bytes] + def __init__(self, selector: bytes, params: list[bytes]): self.selector = selector self.parameters = params + class StatusWord(IntEnum): OK = 0x9000 ERROR_NO_INFO = 0x6a00 @@ -30,6 +33,7 @@ class StatusWord(IntEnum): CONDITION_NOT_SATISFIED = 0x6985 REF_DATA_NOT_FOUND = 0x6a88 + class DomainNameTag(IntEnum): STRUCTURE_TYPE = 0x01 STRUCTURE_VERSION = 0x02 @@ -121,7 +125,7 @@ def _sign_common(self, gas_limit: int, destination: bytes, amount: float, - data: TxData): + data: Optional[TxData]): tx.append(int(gas_price * GWEI_IN_ETH)) tx.append(gas_limit) tx.append(destination) @@ -143,8 +147,8 @@ def sign_legacy(self, destination: bytes, amount: float, chain_id: int, - data: TxData = None): - tx = list() + data: Optional[TxData] = None): + tx: List[Union[int, bytes]] = list() tx.append(nonce) tx = self._sign_common(tx, gas_price, gas_limit, destination, amount, data) tx.append(chain_id) @@ -161,9 +165,9 @@ def sign_1559(self, gas_limit: int, destination: bytes, amount: float, - data: TxData = None, - access_list = list()): - tx = list() + data: Optional[TxData] = None, + access_list=list()): + tx: List[Union[int, bytes]] = list() tx.append(chain_id) tx.append(nonce) tx.append(int(max_prio_gas_price * GWEI_IN_ETH)) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 4170a3086..63ab0ae7b 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -182,12 +182,12 @@ def eip712_filtering_show_field(self, name: str, sig: bytes) -> bytes: P2Type.FILTERING_FIELD_NAME, self._eip712_filtering_send_name(name, sig)) - def set_external_plugin(self, plugin_name: str, contract_address: bytes, method_selelector: bytes, sig: bytes) -> bytes: + def set_external_plugin(self, plugin_name: str, contract_address: bytes, selector: bytes, sig: bytes) -> bytes: data = bytearray() data.append(len(plugin_name)) data += self._string_to_bytes(plugin_name) data += contract_address - data += method_selelector + data += selector data += sig return self._serialize(InsType.EXTERNAL_PLUGIN_SETUP, diff --git a/client/src/ledger_app_clients/ethereum/response_parser.py b/client/src/ledger_app_clients/ethereum/response_parser.py index a00205cbe..641e1bbc9 100644 --- a/client/src/ledger_app_clients/ethereum/response_parser.py +++ b/client/src/ledger_app_clients/ethereum/response_parser.py @@ -14,6 +14,7 @@ def challenge(data: bytes) -> int: assert len(data) == 4 return int.from_bytes(data, "big") + def pk_addr(data: bytes, has_chaincode: bool = False): idx = 0 diff --git a/client/src/ledger_app_clients/ethereum/utils.py b/client/src/ledger_app_clients/ethereum/utils.py index aa3c710d5..e6177455e 100644 --- a/client/src/ledger_app_clients/ethereum/utils.py +++ b/client/src/ledger_app_clients/ethereum/utils.py @@ -1,4 +1,5 @@ import sha3 + def get_selector_from_function(fn: str) -> bytes: return sha3.keccak_256(fn.encode()).digest()[0:4] From f72d6fa8de99ad859625735d955256532ae40f54 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 30 Oct 2023 13:02:50 +0100 Subject: [PATCH 045/160] Add job checking the version bump --- .github/workflows/python-client.yml | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index cb3139673..af7a0e792 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -1,3 +1,4 @@ +--- name: Python client checks, package build and deployment on: @@ -35,6 +36,50 @@ jobs: - name: Mypy type checking run: (cd client && mypy src/) + get-develop-version: + name: Get develop version + runs-on: ubuntu-latest + if: ${{ github.event_name == 'pull_request' && github.base_ref == 'develop' }} + outputs: + develop_version: ${{ steps.get-version.outputs.develop_version }} + steps: + - name: Check Out Code + uses: actions/checkout@v3 + with: + ref: develop + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.12.0 + - name: Get version + id: get-version + env: + PYTHONPATH: client/src/ledger_app_clients + run: | + echo "develop_version=$(python -c 'from ethereum import __version__; print(__version__)')" >> $GITHUB_OUTPUT + + version-check: + name: Check Version when opening a PR against develop + runs-on: ubuntu-latest + needs: get-develop-version + steps: + - name: Check Out Code + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.12.0 + - name: Check Version Bump + env: + DEVELOP_VERSION: ${{needs.get-develop-version.outputs.develop_version}} + PYTHONPATH: client/src/ledger_app_clients + run: | + current_version=$(python -c "from ethereum import __version__; print(__version__)") + if [[ "$current_version" == "$DEVELOP_VERSION" ]]; then + echo "Version in __init__.py hasn't been bumped. Please bump the version before merging." + exit 1 + fi + packaging: needs: [lint, mypy] name: Build, test and deploy the Python package From cc4becdaec7889547fa35c6b4e68e44f656b4ab7 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 30 Oct 2023 13:04:29 +0100 Subject: [PATCH 046/160] Bump eth python client version --- client/CHANGELOG.md | 6 ++++++ client/src/ledger_app_clients/ethereum/__init__.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index 9cdc9ea21..e45b41701 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.0] - 2023-30-10 + +### Added + +- Update the ragger app client to support "set external plugin" APDU + ## [0.0.1] - 2023-08-07 ### Added diff --git a/client/src/ledger_app_clients/ethereum/__init__.py b/client/src/ledger_app_clients/ethereum/__init__.py index f102a9cad..3dc1f76bc 100644 --- a/client/src/ledger_app_clients/ethereum/__init__.py +++ b/client/src/ledger_app_clients/ethereum/__init__.py @@ -1 +1 @@ -__version__ = "0.0.1" +__version__ = "0.1.0" From 09306575f4a6ebb74ac60562b60365215fe0102c Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 6 Nov 2023 16:42:55 +0100 Subject: [PATCH 047/160] Automatically open PRs on all eth plugins when SDK is updated --- .github/workflows/pr_on_all_plugins.yml | 209 ++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 .github/workflows/pr_on_all_plugins.yml diff --git a/.github/workflows/pr_on_all_plugins.yml b/.github/workflows/pr_on_all_plugins.yml new file mode 100644 index 000000000..88e1275ad --- /dev/null +++ b/.github/workflows/pr_on_all_plugins.yml @@ -0,0 +1,209 @@ +--- +name: Auto update sdk + +on: + workflow_dispatch: + # TODO add auto trigger once finalized + +jobs: + build-repositories-matrix: + name: Build repo matrix + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} + steps: + - name: List plugin repositories + id: list-repos + run: | + # Retrieve the list of repositories from LedgerHQ organization + raw_repo_list=$(gh repo list LedgerHQ -L 2000 \ + --json name \ + --json isPrivate \ + --json isArchived \ + --jq '.[] | select(.isPrivate == false and .isArchived == false and select(.name | startswith("app-plugin-"))) | .name') + # Format the repository list as a JSON array + formatted_repo_list="[" + while IFS= read -r repo; do + formatted_repo_list+="\"$repo\", " + done < <(echo "$raw_repo_list") + formatted_repo_list=${formatted_repo_list%%, }"]" + echo "Formatted Repository List: $formatted_repo_list" + # Set output + echo "repo_list=$formatted_repo_list" >> $GITHUB_OUTPUT + outputs: + repo-matrix: ${{ steps.list-repos.outputs.repo_list }} + + + get-sdk-ref: + name: Get latest SDK reference + runs-on: ubuntu-latest + steps: + - name: Checkout SDK repository + uses: actions/checkout@v3 + with: + repository: LedgerHQ/ethereum-plugin-sdk + ref: develop + - name: Retrieve SDK reference + id: get-hash + run: | + # Get the short SHA reference of the latest commit in the SDK repository + sdk_ref=$(git rev-parse --short HEAD) + echo "SDK Reference: $sdk_ref" + # Set output + echo "sdk_ref=$sdk_ref" >> $GITHUB_OUTPUT + outputs: + sdk_ref: ${{ steps.get-hash.outputs.sdk_ref }} + + + open-issue: + name: Open SDK update summary issue + runs-on: ubuntu-latest + needs: get-sdk-ref + env: + GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} + steps: + - name: Create 'auto' label if missing + run: | + if [[ -z $(gh label list --repo ${{ github.repository }} --search auto) ]]; then + gh label create 'auto' --repo ${{ github.repository }} --color 'b4a8d1' --description 'Automatically created' + fi + - name: Open SDK Update Issue + id: open-issue + run: | + # Create a new issue with the SDK reference in the SDK repository + issue_url=$(gh issue create \ + --repo ${{ github.repository }} \ + --label auto \ + --title "Bumping Eth plugin SDK to latest version ${{ needs.get-sdk-ref.outputs.sdk_ref }}" \ + --body "Placeholder") + echo "Issue URL: $issue_url" + # Set output + echo "issue_url=$issue_url" >> $GITHUB_OUTPUT + outputs: + issue_url: ${{ steps.open-issue.outputs.issue_url }} + + + open-prs: + name: Open pull requests + runs-on: ubuntu-latest + needs: [build-repositories-matrix, open-issue, get-sdk-ref] + strategy: + fail-fast: false + matrix: + repo: ${{ fromJSON(needs.build-repositories-matrix.outputs.repo-matrix) }} + env: + GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} + + steps: + - name: Checkout plugin repository + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + uses: actions/checkout@v3 + with: + repository: LedgerHQ/${{ matrix.repo }} + submodules: recursive + ref: develop + # by default the action uses fetch-depth = 1, which creates + # shallow repositories from which we can't push + fetch-depth: 0 + # needed, else the push inside the action will use default credentials + # instead of provided ones + persist-credentials: false + + - name: Update submodule + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + run: | + cd ethereum-plugin-sdk/ + git checkout ${{ needs.get-sdk-ref.outputs.sdk_ref }} + + - name: Commit changes + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + id: commit-changes + run: | + # Set credentials for commit creation + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + # Branch name and title will be unique by design + branch_name="auto/bump_sdk_to_${{ needs.get-sdk-ref.outputs.sdk_ref }}" + title="[auto-update] Bump SDK to latest develop version ${{ needs.get-sdk-ref.outputs.sdk_ref }}" + echo "Branch Name: $branch_name" + echo "Title: $title" + git status + git commit -am "$title" + # Set output + echo "title=$title" >> $GITHUB_OUTPUT + echo "branch_name=$branch_name" >> $GITHUB_OUTPUT + + - name: Push commit + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.CI_BOT_TOKEN }} + branch: ${{ steps.commit-changes.outputs.branch_name }} + repository: LedgerHQ/${{ matrix.repo }} + + - name: Create 'auto' label if missing + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + run: | + if [[ -z $(gh label list --search auto) ]]; then + gh label create 'auto' --color 'b4a8d1' --description 'Automatically created' + fi + + - name: Create pull request and commment on SDK issue + # TODO: remove restriction once finalized + if: matrix.repo == 'app-plugin-uniswap-test2' + run: | + # Create the PR with a placeholder body. Will be consolidated at a later step + pr_url=$(gh pr create \ + --base 'develop' \ + --head '${{ steps.commit-changes.outputs.branch_name }}' \ + --label 'auto' \ + --title '${{ steps.commit-changes.outputs.title }}' \ + --body 'Created by a Github workflow') + echo "Pull request URL: $pr_url" + # Log the url of the PR in the issue on SDK side. We'll collect them from the issue later + gh issue comment "${{ needs.open-issue.outputs.issue_url }}" --body "OPENED $pr_url" + + + clean-issue: + name: Clean SDK update summary issue + runs-on: ubuntu-latest + needs: [get-sdk-ref, open-issue, open-prs] + if: success() || failure() + env: + GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} + steps: + - name: Collect all comments on the SDK issue + run: | + # Get the full text of the issue: metadata + title + rich comments + content="$(gh issue view --comments "${{ needs.open-issue.outputs.issue_url }}")" + # New header of the issue body + header="Bumping Ethereum plugin SDK to latest version ${{ needs.get-sdk-ref.outputs.sdk_ref }} for all Ethereum plugins:" + # Filter the full text of the issue to collect only the PR urls + lines="" + while IFS= read -r line; do + if [[ "$line" =~ "OPENED" ]]; then + lines+=$(echo "$line" | cut -d ' ' -f2)$'\n' + fi + done < <(echo "$content") + # Use print to resolve the '\n' chars + new_body="$(printf "$header\n$lines")" + echo "New issue body: $new_body" + # Set the consolidated body of the issue + gh issue edit "${{ needs.open-issue.outputs.issue_url }}" --body "$new_body" + + - name: Clean comments on the SDK issue + run: | + # gh api uses id instead of url + issue_id="$(basename "${{ needs.open-issue.outputs.issue_url }}")" + # Get url of all comments on the issue + comment_urls="$(gh api "repos/${{ github.repository }}/issues/${issue_id}/comments" --jq '.[].url')" + # Delete each comment using the Github REST api + while IFS= read -r url; do + echo "Deleting comment: $comment_urls" + gh api -X DELETE "$url" + done < <(echo "$comment_urls") From 72c7d4cfb5ab4c187c68aa358ce56e0b6580fc62 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 6 Nov 2023 17:40:34 +0100 Subject: [PATCH 048/160] Hotfix workflow name --- .github/workflows/pr_on_all_plugins.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_on_all_plugins.yml b/.github/workflows/pr_on_all_plugins.yml index 88e1275ad..38d11601c 100644 --- a/.github/workflows/pr_on_all_plugins.yml +++ b/.github/workflows/pr_on_all_plugins.yml @@ -1,5 +1,5 @@ --- -name: Auto update sdk +name: Open PRs in Ethereum plugins to update SDK on: workflow_dispatch: From 790f6d1b583353b1e31f81fc2b84ede30377acb7 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 6 Nov 2023 17:46:44 +0100 Subject: [PATCH 049/160] Enable PR on all plugins workflow for all plugins --- .github/workflows/pr_on_all_plugins.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/pr_on_all_plugins.yml b/.github/workflows/pr_on_all_plugins.yml index 38d11601c..d8a83534f 100644 --- a/.github/workflows/pr_on_all_plugins.yml +++ b/.github/workflows/pr_on_all_plugins.yml @@ -96,8 +96,6 @@ jobs: steps: - name: Checkout plugin repository - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' uses: actions/checkout@v3 with: repository: LedgerHQ/${{ matrix.repo }} @@ -111,15 +109,11 @@ jobs: persist-credentials: false - name: Update submodule - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' run: | cd ethereum-plugin-sdk/ git checkout ${{ needs.get-sdk-ref.outputs.sdk_ref }} - name: Commit changes - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' id: commit-changes run: | # Set credentials for commit creation @@ -137,8 +131,6 @@ jobs: echo "branch_name=$branch_name" >> $GITHUB_OUTPUT - name: Push commit - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' uses: ad-m/github-push-action@master with: github_token: ${{ secrets.CI_BOT_TOKEN }} @@ -146,16 +138,12 @@ jobs: repository: LedgerHQ/${{ matrix.repo }} - name: Create 'auto' label if missing - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' run: | if [[ -z $(gh label list --search auto) ]]; then gh label create 'auto' --color 'b4a8d1' --description 'Automatically created' fi - name: Create pull request and commment on SDK issue - # TODO: remove restriction once finalized - if: matrix.repo == 'app-plugin-uniswap-test2' run: | # Create the PR with a placeholder body. Will be consolidated at a later step pr_url=$(gh pr create \ From dd1bb56ac71e51f805e0862ff9fdbbfa02ed3ce2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 30 Oct 2023 14:50:09 +0100 Subject: [PATCH 050/160] Added a standard plugin Makefile --- src_plugin_sdk/standard_plugin.mk | 73 +++++++++++++++++++++++++++++++ tools/build_sdk.py | 1 + 2 files changed, 74 insertions(+) create mode 100644 src_plugin_sdk/standard_plugin.mk diff --git a/src_plugin_sdk/standard_plugin.mk b/src_plugin_sdk/standard_plugin.mk new file mode 100644 index 000000000..6a2023f2e --- /dev/null +++ b/src_plugin_sdk/standard_plugin.mk @@ -0,0 +1,73 @@ +# **************************************************************************** +# Ledger Ethereum Plugin SDK +# (c) 2023 Ledger SAS. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# **************************************************************************** + +ifeq ($(BOLOS_SDK),) +$(error Environment variable BOLOS_SDK is not set) +endif + +# Prevent compilation of BAGL/NBGL +# Has to be before any SDK include +DISABLE_UI = 1 + +include $(BOLOS_SDK)/Makefile.defines + +APPVERSION ?= "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" + +# Application source files +APP_SOURCE_PATH += src ethereum-plugin-sdk + +# Application icons following guidelines: +# https://developers.ledger.com/docs/embedded-app/design-requirements/#device-icon +NORMAL_NAME ?= $(shell echo -n "$(APPNAME)" | tr " ." "_" | tr "[:upper:]" "[:lower:]") +ICON_NANOS = icons/nanos_app_$(NORMAL_NAME).gif +ICON_NANOX = icons/nanox_app_$(NORMAL_NAME).gif +ICON_NANOSP = $(ICON_NANOX) +ICON_STAX = icons/stax_app_$(NORMAL_NAME).gif + +ifeq ($(TARGET_NAME),TARGET_STAX) + DEFINES += ICONGLYPH=C_stax_$(NORMAL_NAME)_64px + DEFINES += ICONBITMAP=C_stax_$(NORMAL_NAME)_64px_bitmap +endif + +CURVE_APP_LOAD_PARAMS = secp256k1 + +PATH_APP_LOAD_PARAMS ?= "44'/60'" + +VARIANT_PARAM = COIN +VARIANTS_VALUES ?= $(NORMAL_NAME) + +HAVE_APPLICATION_FLAG_LIBRARY = 1 + +DISABLE_STANDARD_APP_FILES = 1 +DISABLE_STANDARD_SNPRINTF = 1 +DISABLE_STANDARD_USB = 1 +DISABLE_STANDARD_WEBUSB = 1 +DISABLE_STANDARD_BAGL_UX_FLOW = 1 + +# Required for PRINTFs to compile +ifeq ($(DEBUG),0) + DISABLE_STANDARD_SEPROXYHAL = 1 +endif + +# So the plugin can still access the necessary NBGL types and pass its icon to +# the Ethereum app +ifeq ($(TARGET_NAME),TARGET_STAX) + DEFINES += HAVE_NBGL + INCLUDES_PATH += $(BOLOS_SDK)/lib_nbgl/include $(BOLOS_SDK)/lib_ux_stax +endif + +include $(BOLOS_SDK)/Makefile.standard_app diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 9f5775c32..dfda9be77 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -220,6 +220,7 @@ def merge_c_files(sources, nodes_to_extract): files_to_copy = [ "CHANGELOG.md", "README.md", + "standard_plugin.mk", ] for file in files_to_copy: shutil.copyfile("src_plugin_sdk/" + file, From 66c5d5407a07082f879ad25841eb195709d25fe2 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 6 Nov 2023 18:12:06 +0100 Subject: [PATCH 051/160] QOL changes to eth plugin interface --- src/eth_plugin_interface.h | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/eth_plugin_interface.h b/src/eth_plugin_interface.h index 5bf54992a..9832ee814 100644 --- a/src/eth_plugin_interface.h +++ b/src/eth_plugin_interface.h @@ -8,16 +8,16 @@ #include "shared_context.h" // Interface version. To be updated everytime we introduce breaking changes to the plugin interface. -typedef enum { +typedef enum eth_plugin_interface_version_e { ETH_PLUGIN_INTERFACE_VERSION_1 = 1, ETH_PLUGIN_INTERFACE_VERSION_2 = 2, ETH_PLUGIN_INTERFACE_VERSION_3 = 3, ETH_PLUGIN_INTERFACE_VERSION_4 = 4, ETH_PLUGIN_INTERFACE_VERSION_5 = 5, - ETH_PLUGIN_INTERFACE_VERSION_LATEST = 6 + ETH_PLUGIN_INTERFACE_VERSION_LATEST = 6, } eth_plugin_interface_version_t; -typedef enum { +typedef enum eth_plugin_msg_e { ETH_PLUGIN_INIT_CONTRACT = 0x0101, ETH_PLUGIN_PROVIDE_PARAMETER = 0x0102, @@ -25,11 +25,11 @@ typedef enum { ETH_PLUGIN_PROVIDE_INFO = 0x0104, ETH_PLUGIN_QUERY_CONTRACT_ID = 0x0105, ETH_PLUGIN_QUERY_CONTRACT_UI = 0x0106, - ETH_PLUGIN_CHECK_PRESENCE = 0x01FF + ETH_PLUGIN_CHECK_PRESENCE = 0x01FF, } eth_plugin_msg_t; -typedef enum { +typedef enum eth_plugin_result_e { // Unsuccesful return values ETH_PLUGIN_RESULT_ERROR = 0x00, ETH_PLUGIN_RESULT_UNAVAILABLE = 0x01, @@ -39,14 +39,14 @@ typedef enum { ETH_PLUGIN_RESULT_SUCCESSFUL = 0x03, // Used for comparison ETH_PLUGIN_RESULT_OK = 0x04, ETH_PLUGIN_RESULT_OK_ALIAS = 0x05, - ETH_PLUGIN_RESULT_FALLBACK = 0x06 + ETH_PLUGIN_RESULT_FALLBACK = 0x06, } eth_plugin_result_t; -typedef enum { +typedef enum eth_ui_type_e { ETH_UI_TYPE_AMOUNT_ADDRESS = 0x01, - ETH_UI_TYPE_GENERIC = 0x02 + ETH_UI_TYPE_GENERIC = 0x02, } eth_ui_type_t; @@ -54,21 +54,21 @@ typedef void (*PluginCall)(int, void *); // Shared objects, read-write -typedef struct ethPluginSharedRW_t { +typedef struct ethPluginSharedRW_s { cx_sha3_t *sha3; } ethPluginSharedRW_t; // Shared objects, read-only -typedef struct ethPluginSharedRO_t { +typedef struct ethPluginSharedRO_s { txContent_t *txContent; } ethPluginSharedRO_t; // Init Contract -typedef struct ethPluginInitContract_t { +typedef struct ethPluginInitContract_s { uint8_t interfaceVersion; uint8_t result; @@ -86,7 +86,7 @@ typedef struct ethPluginInitContract_t { // Provide parameter -typedef struct ethPluginProvideParameter_t { +typedef struct ethPluginProvideParameter_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; uint8_t *pluginContext; @@ -99,7 +99,7 @@ typedef struct ethPluginProvideParameter_t { // Finalize -typedef struct ethPluginFinalize_t { +typedef struct ethPluginFinalize_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; uint8_t *pluginContext; @@ -127,7 +127,7 @@ typedef struct ethPluginFinalize_t { // Provide token -typedef struct ethPluginProvideInfo_t { +typedef struct ethPluginProvideInfo_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; uint8_t *pluginContext; @@ -146,7 +146,7 @@ typedef struct ethPluginProvideInfo_t { // This is always called on the non aliased contract -typedef struct ethQueryContractID_t { +typedef struct ethQueryContractID_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; uint8_t *pluginContext; @@ -162,7 +162,7 @@ typedef struct ethQueryContractID_t { // Query Contract UI -typedef struct ethQueryContractUI_t { +typedef struct ethQueryContractUI_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; union extraInfo_t *item1; @@ -180,4 +180,9 @@ typedef struct ethQueryContractUI_t { } ethQueryContractUI_t; +// Helper to check that the plugin context structure is not bigger than 5 * 32 +#define PLUGIN_CONTEXT_SIZE (5 * INT256_LENGTH) +#define ASSERT_SIZEOF_PLUGIN_CONTEXT(s) \ + _Static_assert(sizeof(s) <= PLUGIN_CONTEXT_SIZE, "Plugin context structure is too big.") + #endif // _ETH_PLUGIN_INTERFACE_H_ From 41ef631d63775e05dcbdbea336db98ea11fbe7af Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 6 Nov 2023 19:24:25 +0100 Subject: [PATCH 052/160] Improve plugin interface file --- src/eth_plugin_interface.h | 111 ++++++++++++++++++++++++------------- src/eth_plugin_internal.h | 1 + 2 files changed, 74 insertions(+), 38 deletions(-) diff --git a/src/eth_plugin_interface.h b/src/eth_plugin_interface.h index 9832ee814..fc8f23978 100644 --- a/src/eth_plugin_interface.h +++ b/src/eth_plugin_interface.h @@ -1,3 +1,5 @@ +// clang-format off + #ifndef _ETH_PLUGIN_INTERFACE_H_ #define _ETH_PLUGIN_INTERFACE_H_ @@ -7,7 +9,14 @@ #include "tokens.h" #include "shared_context.h" -// Interface version. To be updated everytime we introduce breaking changes to the plugin interface. +/************************************************************************************************* + * Comments provided in this file are quick reminders on the usage of the plugin interface * + * Reading the real plugin documentation is GREATLY recommended. * + * You can find the latest version here: * + * https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp_plugins.adoc * + *************************************************************************************************/ + +// Interface version. Will be updated every time a breaking change in the interface is introduced. typedef enum eth_plugin_interface_version_e { ETH_PLUGIN_INTERFACE_VERSION_1 = 1, ETH_PLUGIN_INTERFACE_VERSION_2 = 2, @@ -17,20 +26,26 @@ typedef enum eth_plugin_interface_version_e { ETH_PLUGIN_INTERFACE_VERSION_LATEST = 6, } eth_plugin_interface_version_t; -typedef enum eth_plugin_msg_e { +// Codes for the different requests Ethereum can send to the plugin +// The dispatch is handled by the SDK itself, the plugin code does not have to handle it +typedef enum eth_plugin_msg_e { + // Codes for actions the Ethereum app can ask the plugin to perform ETH_PLUGIN_INIT_CONTRACT = 0x0101, ETH_PLUGIN_PROVIDE_PARAMETER = 0x0102, ETH_PLUGIN_FINALIZE = 0x0103, ETH_PLUGIN_PROVIDE_INFO = 0x0104, ETH_PLUGIN_QUERY_CONTRACT_ID = 0x0105, ETH_PLUGIN_QUERY_CONTRACT_UI = 0x0106, - ETH_PLUGIN_CHECK_PRESENCE = 0x01FF, + // Special request: the Ethereum app is checking if we are installed on the device + ETH_PLUGIN_CHECK_PRESENCE = 0x01FF, } eth_plugin_msg_t; + +// Reply codes when responding to the Ethereum application typedef enum eth_plugin_result_e { - // Unsuccesful return values + // Unsuccessful return values ETH_PLUGIN_RESULT_ERROR = 0x00, ETH_PLUGIN_RESULT_UNAVAILABLE = 0x01, ETH_PLUGIN_RESULT_UNSUCCESSFUL = 0x02, // Used for comparison @@ -40,37 +55,57 @@ typedef enum eth_plugin_result_e { ETH_PLUGIN_RESULT_OK = 0x04, ETH_PLUGIN_RESULT_OK_ALIAS = 0x05, ETH_PLUGIN_RESULT_FALLBACK = 0x06, - } eth_plugin_result_t; -typedef enum eth_ui_type_e { +// Format of UI the Ethereum application has to use for this plugin +typedef enum eth_ui_type_e { + // If uiType is UI_AMOUNT_ADDRESS, Ethereum will use the amount/address UI + // the amount and address provided by the plugin will be used + // If tokenLookup1 is set, the amount is provided for this token ETH_UI_TYPE_AMOUNT_ADDRESS = 0x01, - ETH_UI_TYPE_GENERIC = 0x02, + // If uiType is UI_TYPE_GENERIC, Ethereum will use the dedicated ETH plugin UI + // the ETH application provides tokens if requested then prompts for each UI field + // The first field is forced by the ETH app to be the name + version of the plugin handling the + // request. The last field is the fee amount + ETH_UI_TYPE_GENERIC = 0x02, } eth_ui_type_t; -typedef void (*PluginCall)(int, void *); - -// Shared objects, read-write +// Scratch objects and utilities available to the plugin READ-WRITE typedef struct ethPluginSharedRW_s { cx_sha3_t *sha3; - } ethPluginSharedRW_t; -// Shared objects, read-only +// Transaction data available to the plugin READ-ONLY typedef struct ethPluginSharedRO_s { txContent_t *txContent; - } ethPluginSharedRO_t; + +// Plugin-only memory allocated by the Ethereum application and used by the plugin. +#define PLUGIN_CONTEXT_SIZE (5 * INT256_LENGTH) +// It is recommended to cast the raw uin8_t array to a structure meaningfull for your plugin +// Helper to check that the actual plugin context structure is not bigger than the allocated memory +#define ASSERT_SIZEOF_PLUGIN_CONTEXT(s) \ + _Static_assert(sizeof(s) <= PLUGIN_CONTEXT_SIZE, "Plugin context structure is too big.") + + +/* + * HANDLERS AND PARAMETERS + * Parameters associated with the requests the Ethereum application can ask the plugin to perform + * The plugin SDK will automatically call the relevant handler for the received code, so the plugin + * has to define each of the handler functions declared below. + */ + + // Init Contract typedef struct ethPluginInitContract_s { - uint8_t interfaceVersion; - uint8_t result; + eth_plugin_interface_version_t interfaceVersion; + eth_plugin_result_t result; // in ethPluginSharedRW_t *pluginSharedRW; @@ -83,26 +118,30 @@ typedef struct ethPluginInitContract_s { char *alias; // 29 bytes alias if ETH_PLUGIN_RESULT_OK_ALIAS set } ethPluginInitContract_t; +// void handle_init_contract(ethPluginInitContract_t *parameters); + // Provide parameter typedef struct ethPluginProvideParameter_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; + uint8_t *pluginContext; // PLUGIN_CONTEXT_SIZE const uint8_t *parameter; // 32 bytes parameter uint32_t parameterOffset; - uint8_t result; + eth_plugin_result_t result; } ethPluginProvideParameter_t; +// void handle_provide_parameter(ethPluginProvideParameter_t *parameters); + // Finalize typedef struct ethPluginFinalize_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; + uint8_t *pluginContext; // PLUGIN_CONTEXT_SIZE uint8_t *tokenLookup1; // set by the plugin if a token should be looked up uint8_t *tokenLookup2; @@ -111,26 +150,20 @@ typedef struct ethPluginFinalize_s { const uint8_t *address; // set to the destination address if uiType is UI_AMOUNT_ADDRESS. Set // to the user's address if uiType is UI_TYPE_GENERIC - uint8_t uiType; + eth_ui_type_t uiType; uint8_t numScreens; // ignored if uiType is UI_AMOUNT_ADDRESS - uint8_t result; + eth_plugin_result_t result; } ethPluginFinalize_t; +// void handle_finalize(ethPluginFinalize_t *parameters); -// If uiType is UI_AMOUNT_ADDRESS, the amount and address provided by the plugin will be used -// If tokenLookup1 is set, the amount is provided for this token - -// if uiType is UI_TYPE_GENERIC, the ETH application provides tokens if requested then prompts -// for each UI field -// The first field is forced by the ETH app to be the name + version of the plugin handling the -// request The last field is the fee amount // Provide token typedef struct ethPluginProvideInfo_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; + uint8_t *pluginContext; // PLUGIN_CONTEXT_SIZE union extraInfo_t *item1; // set by the ETH application, to be saved by the plugin union extraInfo_t *item2; @@ -138,9 +171,11 @@ typedef struct ethPluginProvideInfo_s { uint8_t additionalScreens; // Used by the plugin if it needs to display additional screens // based on the information received from the token definitions. - uint8_t result; + eth_plugin_result_t result; } ethPluginProvideInfo_t; +// void handle_provide_token(ethPluginProvideInfo_t *parameters); + // Query Contract name and version @@ -149,16 +184,18 @@ typedef struct ethPluginProvideInfo_s { typedef struct ethQueryContractID_s { ethPluginSharedRW_t *pluginSharedRW; ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; + uint8_t *pluginContext; // PLUGIN_CONTEXT_SIZE char *name; size_t nameLength; char *version; size_t versionLength; - uint8_t result; + eth_plugin_result_t result; } ethQueryContractID_t; +// void handle_query_contract_id(ethQueryContractID_t *parameters); + // Query Contract UI @@ -168,7 +205,7 @@ typedef struct ethQueryContractUI_s { union extraInfo_t *item1; union extraInfo_t *item2; char network_ticker[MAX_TICKER_LEN]; - uint8_t *pluginContext; + uint8_t *pluginContext; // PLUGIN_CONTEXT_SIZE uint8_t screenIndex; char *title; @@ -176,13 +213,11 @@ typedef struct ethQueryContractUI_s { char *msg; size_t msgLength; - uint8_t result; + eth_plugin_result_t result; } ethQueryContractUI_t; - -// Helper to check that the plugin context structure is not bigger than 5 * 32 -#define PLUGIN_CONTEXT_SIZE (5 * INT256_LENGTH) -#define ASSERT_SIZEOF_PLUGIN_CONTEXT(s) \ - _Static_assert(sizeof(s) <= PLUGIN_CONTEXT_SIZE, "Plugin context structure is too big.") +// void handle_query_contract_ui(ethQueryContractUI_t *parameters); #endif // _ETH_PLUGIN_INTERFACE_H_ + +// clang-format on diff --git a/src/eth_plugin_internal.h b/src/eth_plugin_internal.h index 2d2ca0369..956cec4b8 100644 --- a/src/eth_plugin_internal.h +++ b/src/eth_plugin_internal.h @@ -21,6 +21,7 @@ bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); typedef bool (*PluginAvailableCheck)(void); +typedef void (*PluginCall)(int, void *); typedef struct internalEthPlugin_t { PluginAvailableCheck availableCheck; From 480e40ae28999ed40e092ca53d9efeb8f7276061 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 9 Nov 2023 14:34:08 +0100 Subject: [PATCH 053/160] Rationalize CI --- .github/workflows/auto-author-assign.yml | 1 + .github/workflows/build-workflow.yml | 34 ---------- .github/workflows/ci-workflow.yml | 84 +++++++++++++++--------- .github/workflows/lint-workflow.yml | 36 +++++----- .github/workflows/sdk-generation.yml | 1 + .github/workflows/swap-ci-workflow.yml | 5 +- 6 files changed, 75 insertions(+), 86 deletions(-) delete mode 100644 .github/workflows/build-workflow.yml diff --git a/.github/workflows/auto-author-assign.yml b/.github/workflows/auto-author-assign.yml index a6255c9ef..82adf1738 100644 --- a/.github/workflows/auto-author-assign.yml +++ b/.github/workflows/auto-author-assign.yml @@ -1,3 +1,4 @@ +--- name: 'Auto Author Assign' on: diff --git a/.github/workflows/build-workflow.yml b/.github/workflows/build-workflow.yml deleted file mode 100644 index 1eb105d87..000000000 --- a/.github/workflows/build-workflow.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Compilation - -on: - push: - branches: - - master - pull_request: - branches: - - master - - develop - workflow_dispatch: - -jobs: - nano_release_build: - name: Build release application for NanoS, X and S+ - strategy: - matrix: - sdk: ["$NANOS_SDK", "$NANOX_SDK", "$NANOSP_SDK"] - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - name: Clone - uses: actions/checkout@v3 - - - name: Build Ethereum - run: | - make -j BOLOS_SDK=${{ matrix.sdk }} - - - name: Build an altcoin - run: | - make clean - make -j BOLOS_SDK=${{ matrix.sdk }} CHAIN=polygon diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 4700a0cb5..a15a89615 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -1,39 +1,19 @@ +--- name: Tests on: + workflow_dispatch: push: - branches: - - master - pull_request: branches: - master - develop - workflow_dispatch: + pull_request: jobs: - scan-build: - name: Clang Static Analyzer - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - steps: - - uses: actions/checkout@v3 - - - name: Build with Clang Static Analyzer - run: | - make clean - scan-build --use-cc=clang -analyze-headers -enable-checker security -enable-checker unix -enable-checker valist -o scan-build --status-bugs make default - - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: scan-build - path: scan-build - -# ===================================================== -# ZEMU TESTS -# ===================================================== + # ===================================================== + # ZEMU TESTS + # ===================================================== building_for_e2e_zemu_tests: name: Building binaries for E2E Zemu tests @@ -97,9 +77,9 @@ jobs: - name: Run zemu tests run: cd tests/zemu/ && yarn test -# ===================================================== -# SPECULOS TESTS -# ===================================================== + # ===================================================== + # SPECULOS TESTS + # ===================================================== building_for_e2e_speculos_tests: @@ -162,9 +142,9 @@ jobs: pytest --model ${{ matrix.model }} --path ./elfs/${{ matrix.model }}.elf --display headless -# ===================================================== -# RAGGER TESTS -# ===================================================== + # ===================================================== + # RAGGER TESTS + # ===================================================== build_ragger_elfs: name: Build app for Ragger tests @@ -180,3 +160,43 @@ jobs: with: download_app_binaries_artifact: "ragger_elfs" test_dir: tests/ragger + + # ===================================================== + # STATIC ANALYSIS + # ===================================================== + + # Static analysis on the main ETH chain is covered by the guidelines enforcer + scan-build: + name: Clang Static Analyzer on altcoin + runs-on: ubuntu-latest + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + strategy: + fail-fast: false + matrix: + device: ["nanos", "nanos2", "nanox", "stax"] + + steps: + - name: Clone + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Build with Clang Static Analyzer + run: | + eval "BOLOS_SDK=\$$(echo ${{ matrix.device }} | tr [:lower:] [:upper:])_SDK" && \ + echo "BOLOS_SDK value will be: ${BOLOS_SDK}" && \ + make -j ENABLE_SDK_WERROR=1 BOLOS_SDK=${BOLOS_SDK} CHAIN=polygon scan-build + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: scan-build + path: scan-build + + - name: Upload scan result + if: failure() + uses: actions/upload-artifact@v3 + with: + name: scan-build + path: scan-build diff --git a/.github/workflows/lint-workflow.yml b/.github/workflows/lint-workflow.yml index 7b980758e..ca32687e5 100644 --- a/.github/workflows/lint-workflow.yml +++ b/.github/workflows/lint-workflow.yml @@ -1,26 +1,26 @@ +--- name: Code style check +# This workflow will run linting checks to ensure a level of uniformization among all Ledger applications. +# +# The presence of this workflow is mandatory as a minimal level of linting is required. +# You are however free to modify the content of the .clang-format file and thus the coding style of your application. +# We simply ask you to not diverge too much from the linting of the Boilerplate application. + on: + workflow_dispatch: push: branches: - - master + - master + - main + - develop pull_request: - branches: - - master - - develop jobs: - job_lint: - name: Lint - runs-on: ubuntu-latest - - steps: - - name: Clone - uses: actions/checkout@v3 - - - name: Lint - uses: DoozyX/clang-format-lint-action@v0.14 - with: - source: "./" - extensions: "h,c" - clangFormatVersion: 12.0.1 + check_linting: + name: Check linting using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_lint.yml@v1 + with: + source: './' + extensions: 'h,c' + version: 12 diff --git a/.github/workflows/sdk-generation.yml b/.github/workflows/sdk-generation.yml index 9d26eb31a..b563e0f7c 100644 --- a/.github/workflows/sdk-generation.yml +++ b/.github/workflows/sdk-generation.yml @@ -1,3 +1,4 @@ +--- name: Updating the SDK on: diff --git a/.github/workflows/swap-ci-workflow.yml b/.github/workflows/swap-ci-workflow.yml index 3999224cf..022fe5a02 100644 --- a/.github/workflows/swap-ci-workflow.yml +++ b/.github/workflows/swap-ci-workflow.yml @@ -1,11 +1,12 @@ +--- name: Swap functional tests on: workflow_dispatch: push: branches: - - master - - develop + - master + - develop pull_request: jobs: From e45a0f7eb569d3c224dc5767066f60b1c7bf37f6 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 9 Nov 2023 14:35:33 +0100 Subject: [PATCH 054/160] Fix lint issue --- src/eth_plugin_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/eth_plugin_internal.h b/src/eth_plugin_internal.h index 956cec4b8..f7031eca5 100644 --- a/src/eth_plugin_internal.h +++ b/src/eth_plugin_internal.h @@ -21,7 +21,7 @@ bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); typedef bool (*PluginAvailableCheck)(void); -typedef void (*PluginCall)(int, void *); +typedef void (*PluginCall)(int, void*); typedef struct internalEthPlugin_t { PluginAvailableCheck availableCheck; From bf2a4076aa8ca0aae07c76d6e3a29523e79f95ee Mon Sep 17 00:00:00 2001 From: fbeutin-ledger Date: Thu, 9 Nov 2023 14:51:33 +0000 Subject: [PATCH 055/160] [create-pull-request] automated change --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 1fe4085d0..4d8e04480 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 1fe4085d04a88f4238103a4ed3db1484fdb69c63 +Subproject commit 4d8e04480530cd14dd670a0a6405bca992d16942 From dd28b24b380145d6bf3f551160d8e31f77dfaed3 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 9 Nov 2023 16:21:23 +0100 Subject: [PATCH 056/160] Add a workaround for Github API refusing to open PRs too quickly --- .github/workflows/pr_on_all_plugins.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/pr_on_all_plugins.yml b/.github/workflows/pr_on_all_plugins.yml index d8a83534f..8ab943992 100644 --- a/.github/workflows/pr_on_all_plugins.yml +++ b/.github/workflows/pr_on_all_plugins.yml @@ -136,6 +136,7 @@ jobs: github_token: ${{ secrets.CI_BOT_TOKEN }} branch: ${{ steps.commit-changes.outputs.branch_name }} repository: LedgerHQ/${{ matrix.repo }} + force: true - name: Create 'auto' label if missing run: | @@ -145,6 +146,9 @@ jobs: - name: Create pull request and commment on SDK issue run: | + # Github limits the number of possible PR being opened in a given time window. + # As suggested in the Github documentation, put a 1 second sleep between each POST call + sleep ${{ strategy.job-index }} # Create the PR with a placeholder body. Will be consolidated at a later step pr_url=$(gh pr create \ --base 'develop' \ From b0b23648df1062a185a6f5f0e6bf892b524a9497 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 9 Nov 2023 16:58:06 +0100 Subject: [PATCH 057/160] Increase sleep timer and prevent issue cleanup if matrix fails --- .github/workflows/pr_on_all_plugins.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_on_all_plugins.yml b/.github/workflows/pr_on_all_plugins.yml index 8ab943992..3db1bbe03 100644 --- a/.github/workflows/pr_on_all_plugins.yml +++ b/.github/workflows/pr_on_all_plugins.yml @@ -147,8 +147,10 @@ jobs: - name: Create pull request and commment on SDK issue run: | # Github limits the number of possible PR being opened in a given time window. - # As suggested in the Github documentation, put a 1 second sleep between each POST call - sleep ${{ strategy.job-index }} + # The limits are 20 creation per minute and 150 per hour. + # As suggested in the Github documentation, put a sleep between each POST call + # 3 seconds should be sufficient but let's sleep 4 seconds just in case. + sleep $((4 * ${{ strategy.job-index }})) # Create the PR with a placeholder body. Will be consolidated at a later step pr_url=$(gh pr create \ --base 'develop' \ @@ -165,7 +167,6 @@ jobs: name: Clean SDK update summary issue runs-on: ubuntu-latest needs: [get-sdk-ref, open-issue, open-prs] - if: success() || failure() env: GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} steps: From ad0b953fe85baf25181f21e9fab970f28c424e32 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 15 Nov 2023 16:13:49 +0100 Subject: [PATCH 058/160] Fix incorrect assumption on max possible chain ID size --- src/shared_context.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/shared_context.h b/src/shared_context.h index f83320cb5..c87f286a0 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -176,14 +176,15 @@ typedef enum { #endif } contract_call_t; -#define NETWORK_STRING_MAX_SIZE 16 +// must be able to hold in decimal up to : floor(MAX_UINT64 / 2) - 36 +#define NETWORK_STRING_MAX_SIZE 19 typedef struct txStringProperties_s { char fullAddress[43]; char fullAmount[79]; // 2^256 is 78 digits long char maxFee[50]; char nonce[8]; // 10M tx per account ought to be enough for everybody - char network_name[NETWORK_STRING_MAX_SIZE]; + char network_name[NETWORK_STRING_MAX_SIZE + 1]; } txStringProperties_t; #ifdef TARGET_NANOS From 40f067220f8a9b4213bce02e0809087d486310a6 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 26 Oct 2023 16:15:36 +0200 Subject: [PATCH 059/160] Makefile indentation and rationalization --- Makefile | 229 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 116 insertions(+), 113 deletions(-) diff --git a/Makefile b/Makefile index 866a50cdc..a2f9b02de 100644 --- a/Makefile +++ b/Makefile @@ -16,13 +16,13 @@ #******************************************************************************* ifeq ($(BOLOS_SDK),) -$(error Environment variable BOLOS_SDK is not set) + $(error Environment variable BOLOS_SDK is not set) endif include $(BOLOS_SDK)/Makefile.defines DEFINES_LIB = USE_LIB_ETHEREUM -APP_LOAD_PARAMS= --curve secp256k1 $(COMMON_LOAD_PARAMS) +APP_LOAD_PARAMS = --curve secp256k1 $(COMMON_LOAD_PARAMS) # Allow the app to use path 45 for multi-sig (see BIP45). APP_LOAD_PARAMS += --path "45'" # Samsung temporary implementation for wallet ID on 0xda7aba5e/0xc1a551c5 @@ -32,27 +32,27 @@ APP_LOAD_PARAMS += --path "1517992542'/1101353413'" # Define Version # ################## -APPVERSION_M=1 -APPVERSION_N=10 -APPVERSION_P=4 -APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)-dev -APP_LOAD_FLAGS= --appFlags 0xa40 --dep Ethereum:$(APPVERSION) +APPVERSION_M = 1 +APPVERSION_N = 10 +APPVERSION_P = 4 +APPVERSION = $(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)-dev +APP_LOAD_FLAGS = --appFlags 0xa40 --dep Ethereum:$(APPVERSION) ########################### # Set Chain environnement # ########################### ifeq ($(CHAIN),) -CHAIN=ethereum + CHAIN = ethereum endif -SUPPORTED_CHAINS=$(shell find makefile_conf/chain/ -type f -name '*.mk'| sed 's/.*\/\(.*\).mk/\1/g' | sort) +SUPPORTED_CHAINS = $(shell find makefile_conf/chain/ -type f -name '*.mk'| sed 's/.*\/\(.*\).mk/\1/g' | sort) # Check if chain is available ifeq ($(shell test -s ./makefile_conf/chain/$(CHAIN).mk && echo -n yes), yes) -include ./makefile_conf/chain/$(CHAIN).mk + include ./makefile_conf/chain/$(CHAIN).mk else -$(error Unsupported CHAIN - use $(SUPPORTED_CHAINS)) + $(error Unsupported CHAIN - use $(SUPPORTED_CHAINS)) endif CFLAGS += -DAPPNAME=\"$(APPNAME)\" DEFINES += CHAINID_COINNAME=\"$(TICKER)\" CHAIN_ID=$(CHAIN_ID) @@ -66,15 +66,15 @@ DEFINES += $(DEFINES_LIB) #prepare hsm generation ifeq ($(TARGET_NAME),TARGET_NANOS) -ICONNAME=icons/nanos_app_chain_$(CHAIN_ID).gif + ICONNAME = icons/nanos_app_chain_$(CHAIN_ID).gif else ifeq ($(TARGET_NAME),TARGET_STAX) -ICONNAME=icons/stax_app_chain_$(CHAIN_ID).gif -DEFINES += ICONGLYPH=C_stax_chain_$(CHAIN_ID)_64px -DEFINES += ICONBITMAP=C_stax_chain_$(CHAIN_ID)_64px_bitmap -DEFINES += ICONGLYPH_SMALL=C_stax_chain_$(CHAIN_ID) -GLYPH_FILES += $(ICONNAME) + ICONNAME = icons/stax_app_chain_$(CHAIN_ID).gif + DEFINES += ICONGLYPH=C_stax_chain_$(CHAIN_ID)_64px + DEFINES += ICONBITMAP=C_stax_chain_$(CHAIN_ID)_64px_bitmap + DEFINES += ICONGLYPH_SMALL=C_stax_chain_$(CHAIN_ID) + GLYPH_FILES += $(ICONNAME) else -ICONNAME=icons/nanox_app_chain_$(CHAIN_ID).gif + ICONNAME = icons/nanox_app_chain_$(CHAIN_ID).gif endif ################ @@ -86,82 +86,85 @@ all: default # Platform # ############ -DEFINES += OS_IO_SEPROXYHAL -DEFINES += HAVE_SPRINTF HAVE_SNPRINTF_FORMAT_U -DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU -DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) -DEFINES += BUILD_YEAR=\"$(shell date +%Y)\" +DEFINES += OS_IO_SEPROXYHAL +DEFINES += HAVE_SPRINTF HAVE_SNPRINTF_FORMAT_U +DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU +DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) +DEFINES += BUILD_YEAR=\"$(shell date +%Y)\" # U2F -DEFINES += HAVE_U2F HAVE_IO_U2F -DEFINES += U2F_PROXY_MAGIC=\"w0w\" -DEFINES += USB_SEGMENT_SIZE=64 -DEFINES += BLE_SEGMENT_SIZE=32 #max MTU, min 20 -DEFINES += UNUSED\(x\)=\(void\)x -DEFINES += APPVERSION=\"$(APPVERSION)\" +DEFINES += HAVE_U2F HAVE_IO_U2F +DEFINES += U2F_PROXY_MAGIC=\"w0w\" +DEFINES += USB_SEGMENT_SIZE=64 +DEFINES += BLE_SEGMENT_SIZE=32 #max MTU, min 20 +DEFINES += APPVERSION=\"$(APPVERSION)\" -#WEBUSB_URL = www.ledgerwallet.com -#DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=$(shell echo -n $(WEBUSB_URL) | wc -c) WEBUSB_URL=$(shell echo -n $(WEBUSB_URL) | sed -e "s/./\\\'\0\\\',/g") +#WEBUSB_URL = www.ledgerwallet.com +#DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=$(shell echo -n $(WEBUSB_URL) | wc -c) WEBUSB_URL=$(shell echo -n $(WEBUSB_URL) | sed -e "s/./\\\'\0\\\',/g") -DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" +DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" ifneq (,$(filter $(TARGET_NAME),TARGET_NANOX TARGET_STAX)) -DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000 -DEFINES += HAVE_BLE_APDU # basic ledger apdu transport over BLE -SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl + DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000 + DEFINES += HAVE_BLE_APDU # basic ledger apdu transport over BLE + SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl endif ifeq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 + DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 else -DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 + DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 endif ifeq ($(TARGET_NAME),TARGET_STAX) -DEFINES += NBGL_QRCODE -SDK_SOURCE_PATH += qrcode + DEFINES += NBGL_QRCODE + SDK_SOURCE_PATH += qrcode else -DEFINES += HAVE_BAGL -DEFINES += HAVE_UX_FLOW -ifeq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_WALLET_ID_SDK -DEFINES += BAGL_WIDTH=128 BAGL_HEIGHT=32 -else -DEFINES += HAVE_GLO096 -DEFINES += BAGL_WIDTH=128 BAGL_HEIGHT=64 -DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX -endif + DEFINES += HAVE_BAGL + DEFINES += HAVE_UX_FLOW + ifeq ($(TARGET_NAME),TARGET_NANOS) + DEFINES += HAVE_WALLET_ID_SDK + DEFINES += BAGL_WIDTH=128 BAGL_HEIGHT=32 + else + DEFINES += HAVE_GLO096 + DEFINES += BAGL_WIDTH=128 BAGL_HEIGHT=64 + DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature + DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX + DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX + DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX + endif endif +#################### +# Enabled Features # +#################### + # Enables direct data signing without having to specify it in the settings. Useful when testing with speculos. -ALLOW_DATA?=0 +ALLOW_DATA ?= 0 ifneq ($(ALLOW_DATA),0) -DEFINES += HAVE_ALLOW_DATA + DEFINES += HAVE_ALLOW_DATA endif # Bypass the signature verification for setExternalPlugin, setPlugin, provideERC20TokenInfo and provideNFTInfo calls -BYPASS_SIGNATURES?=0 +BYPASS_SIGNATURES ?= 0 ifneq ($(BYPASS_SIGNATURES),0) -DEFINES += HAVE_BYPASS_SIGNATURES + DEFINES += HAVE_BYPASS_SIGNATURES endif # Enable the SET_PLUGIN test key -SET_PLUGIN_TEST_KEY?=0 +SET_PLUGIN_TEST_KEY ?= 0 ifneq ($(SET_PLUGIN_TEST_KEY),0) -DEFINES += HAVE_SET_PLUGIN_TEST_KEY + DEFINES += HAVE_SET_PLUGIN_TEST_KEY endif # NFTs ifneq ($(TARGET_NAME),TARGET_NANOS) DEFINES += HAVE_NFT_SUPPORT - NFT_TEST_KEY?=0 + NFT_TEST_KEY ?= 0 ifneq ($(NFT_TEST_KEY),0) DEFINES += HAVE_NFT_TEST_KEY endif - NFT_STAGING_KEY?=0 + NFT_STAGING_KEY ?= 0 ifneq ($(NFT_STAGING_KEY),0) # Key used by the staging backend DEFINES += HAVE_NFT_STAGING_KEY @@ -175,112 +178,112 @@ endif # Dynamic memory allocator ifneq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_DYN_MEM_ALLOC + DEFINES += HAVE_DYN_MEM_ALLOC endif # EIP-712 ifneq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_EIP712_FULL_SUPPORT + DEFINES += HAVE_EIP712_FULL_SUPPORT endif # CryptoAssetsList key -CAL_TEST_KEY?=0 +CAL_TEST_KEY ?= 0 ifneq ($(CAL_TEST_KEY),0) + # Key used in our test framework DEFINES += HAVE_CAL_TEST_KEY endif -CAL_STAGING_KEY?=0 +CAL_STAGING_KEY ?= 0 ifneq ($(CAL_STAGING_KEY),0) # Key used by the staging CAL DEFINES += HAVE_CAL_STAGING_KEY endif ifneq (,$(filter $(DEFINES),HAVE_CAL_TEST_KEY)) ifneq (, $(filter $(DEFINES),HAVE_CAL_STAGING_KEY)) + # Can't use both the staging and testing keys $(error Multiple alternative CAL keys set at once) endif endif # ENS ifneq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_DOMAIN_NAME -DOMAIN_NAME_TEST_KEY?=0 -ifneq ($(DOMAIN_NAME_TEST_KEY),0) -DEFINES += HAVE_DOMAIN_NAME_TEST_KEY -endif + DEFINES += HAVE_DOMAIN_NAME + DOMAIN_NAME_TEST_KEY ?= 0 + ifneq ($(DOMAIN_NAME_TEST_KEY),0) + DEFINES += HAVE_DOMAIN_NAME_TEST_KEY + endif endif # Enabling debug PRINTF ifneq ($(DEBUG),0) -DEFINES += HAVE_STACK_OVERFLOW_CHECK -ifeq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += HAVE_PRINTF PRINTF=screen_printf -else -DEFINES += HAVE_PRINTF PRINTF=mcu_usb_printf -endif + DEFINES += HAVE_STACK_OVERFLOW_CHECK + ifeq ($(TARGET_NAME),TARGET_NANOS) + DEFINES += HAVE_PRINTF PRINTF=screen_printf + else + DEFINES += HAVE_PRINTF PRINTF=mcu_usb_printf + endif else -DEFINES += PRINTF\(...\)= + DEFINES += PRINTF\(...\)= endif ifneq ($(NOCONSENT),) -DEFINES += NO_CONSENT + DEFINES += NO_CONSENT endif ############## # Compiler # ############## + ifneq ($(BOLOS_ENV),) -$(info BOLOS_ENV=$(BOLOS_ENV)) -CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ -GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ + $(info BOLOS_ENV=$(BOLOS_ENV)) + CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ + GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ else -$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) + $(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) endif ifeq ($(CLANGPATH),) -$(info CLANGPATH is not set: clang will be used from PATH) + $(info CLANGPATH is not set: clang will be used from PATH) endif ifeq ($(GCCPATH),) -$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) + $(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) endif -CC := $(CLANGPATH)clang - -CFLAGS += -Wno-format-invalid-specifier -Wno-format-extra-args - -AS := $(GCCPATH)arm-none-eabi-gcc - -LD := $(GCCPATH)arm-none-eabi-gcc -LDLIBS += -lm -lgcc -lc +CC := $(CLANGPATH)clang +CFLAGS += -Wno-format-invalid-specifier -Wno-format-extra-args +AS := $(GCCPATH)arm-none-eabi-gcc +LD := $(GCCPATH)arm-none-eabi-gcc +LDLIBS += -lm -lgcc -lc # import rules to compile glyphs(/pone) include $(BOLOS_SDK)/Makefile.glyphs ### variables processed by the common makefile.rules of the SDK to grab source files and include dirs -APP_SOURCE_PATH += src_common src src_features src_plugins -SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f +APP_SOURCE_PATH += src_common src src_features src_plugins +SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f ifeq ($(TARGET_NAME),TARGET_STAX) -APP_SOURCE_PATH += src_nbgl + APP_SOURCE_PATH += src_nbgl else -SDK_SOURCE_PATH += lib_ux -APP_SOURCE_PATH += src_bagl + SDK_SOURCE_PATH += lib_ux + APP_SOURCE_PATH += src_bagl endif ### initialize plugin SDK submodule if needed, rebuild it, and warn if a difference is noticed ifeq ($(CHAIN),ethereum) -ifneq ($(shell git submodule status | grep '^[-+]'),) -$(info INFO: Need to reinitialize git submodules) -$(shell git submodule update --init) -endif + ifneq ($(shell git submodule status | grep '^[-+]'),) + $(info INFO: Need to reinitialize git submodules) + $(shell git submodule update --init) + endif -# rebuild SDK -$(shell python3 tools/build_sdk.py) + # rebuild SDK + $(shell python3 tools/build_sdk.py) -# check if a difference is noticed (fail if it happens in CI build) -ifneq ($(shell git status | grep 'ethereum-plugin-sdk'),) -ifneq ($(JENKINS_URL),) -$(error ERROR: please update ethereum-plugin-sdk submodule first) -else -$(warning WARNING: please update ethereum-plugin-sdk submodule first) -endif -endif + # check if a difference is noticed (fail if it happens in CI build) + ifneq ($(shell git status | grep 'ethereum-plugin-sdk'),) + ifneq ($(JENKINS_URL),) + $(error ERROR: please update ethereum-plugin-sdk submodule first) + else + $(warning WARNING: please update ethereum-plugin-sdk submodule first) + endif + endif endif load: all @@ -301,13 +304,13 @@ unit-test: make -C tests/unit ifeq ($(TARGET_NAME),TARGET_STAX) - NETWORK_ICONS_FILE = $(GEN_SRC_DIR)/net_icons.gen.c - NETWORK_ICONS_DIR = $(shell dirname "$(NETWORK_ICONS_FILE)") +NETWORK_ICONS_FILE = $(GEN_SRC_DIR)/net_icons.gen.c +NETWORK_ICONS_DIR = $(shell dirname "$(NETWORK_ICONS_FILE)") $(NETWORK_ICONS_FILE): $(shell python3 tools/gen_networks.py "$(NETWORK_ICONS_DIR)") - APP_SOURCE_FILES += $(NETWORK_ICONS_FILE) +APP_SOURCE_FILES += $(NETWORK_ICONS_FILE) endif # import generic rules from the sdk From 84d0ce2b8022aae8fb326d4880eb7f6ced02941f Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 26 Oct 2023 16:27:36 +0200 Subject: [PATCH 060/160] Misc modifications from previous review --- .../cmd_provide_domain_name.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src_features/provideDomainName/cmd_provide_domain_name.c b/src_features/provideDomainName/cmd_provide_domain_name.c index e1d14a49c..51e9daca8 100644 --- a/src_features/provideDomainName/cmd_provide_domain_name.c +++ b/src_features/provideDomainName/cmd_provide_domain_name.c @@ -205,10 +205,13 @@ static bool handle_challenge(const s_tlv_data *data, s_domain_name_info *domain_name_info, s_sig_ctx *sig_ctx) { uint32_t value; - (void) domain_name_info; (void) sig_ctx; - return get_uint_from_data(data, &value) && (value == get_challenge()); + + if (!get_uint_from_data(data, &value)) { + return false; + } + return (value == get_challenge()); } /** @@ -223,8 +226,8 @@ static bool handle_sign_key_id(const s_tlv_data *data, s_domain_name_info *domain_name_info, s_sig_ctx *sig_ctx) { uint32_t value; - (void) domain_name_info; + if (!get_uint_from_data(data, &value) || (value > UINT8_MAX)) { return false; } @@ -247,7 +250,10 @@ static bool handle_sign_algo(const s_tlv_data *data, (void) domain_name_info; (void) sig_ctx; - return get_uint_from_data(data, &value) && (value == ALGO_SECP256K1); + if (!get_uint_from_data(data, &value)) { + return false; + } + return (value == ALGO_SECP256K1); } /** @@ -338,7 +344,10 @@ static bool handle_coin_type(const s_tlv_data *data, (void) domain_name_info; (void) sig_ctx; - return get_uint_from_data(data, &value) && (value == SLIP_44_ETHEREUM); + if (!get_uint_from_data(data, &value)) { + return false; + } + return (value == SLIP_44_ETHEREUM); } /** From d8da84da65a491b8ab2213fb6f84c90adad27894 Mon Sep 17 00:00:00 2001 From: abonnaudet-ledger <71646516+abonnaudet-ledger@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:59:31 +0100 Subject: [PATCH 061/160] Stax: Adapt for API LEVEL 14 (#499) --- src_nbgl/ui_sign_712.c | 3 ++- src_nbgl/ui_sign_message.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src_nbgl/ui_sign_712.c b/src_nbgl/ui_sign_712.c index 4d9aae7a3..f53add1ec 100644 --- a/src_nbgl/ui_sign_712.c +++ b/src_nbgl/ui_sign_712.c @@ -30,7 +30,8 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { strings.tmp.tmp, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, - &len); + &len, + false); strings.tmp.tmp[len] = '\0'; pair.item = strings.tmp.tmp2; diff --git a/src_nbgl/ui_sign_message.c b/src_nbgl/ui_sign_message.c index 6d85f80e8..a44687269 100644 --- a/src_nbgl/ui_sign_message.c +++ b/src_nbgl/ui_sign_message.c @@ -47,7 +47,8 @@ static bool display_message(nbgl_pageContent_t *content) { (char *) g_stax_shared_buffer, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, - &len); + &len, + false); stringsTmpTmpIdx = len - eip191MessageIdx; eip191MessageIdx = len; From de82990e14db62d95aa0bb76b1f5d8648f63c5f0 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 9 Nov 2023 15:29:52 +0100 Subject: [PATCH 062/160] Added the Web3.py library as a dependency to the python client --- client/pyproject.toml | 3 +-- tests/ragger/requirements.txt | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/client/pyproject.toml b/client/pyproject.toml index 7b1e8f645..92295741b 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -28,8 +28,7 @@ dynamic = [ "version" ] requires-python = ">=3.7" dependencies = [ "ragger[speculos]", - "simple-rlp", - "pysha3", + "web3~=6.0", ] [tools.setuptools] diff --git a/tests/ragger/requirements.txt b/tests/ragger/requirements.txt index b493e4864..1149a7528 100644 --- a/tests/ragger/requirements.txt +++ b/tests/ragger/requirements.txt @@ -1,4 +1,3 @@ -ragger[speculos] pytest ecdsa ./client/ From 62215e3e5f091bce423b140bcadd256e712afd36 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 9 Nov 2023 15:30:21 +0100 Subject: [PATCH 063/160] Now uses Web3.py to get function selectors --- client/src/ledger_app_clients/ethereum/utils.py | 5 ----- tests/ragger/test_nft.py | 16 ++++++++-------- 2 files changed, 8 insertions(+), 13 deletions(-) delete mode 100644 client/src/ledger_app_clients/ethereum/utils.py diff --git a/client/src/ledger_app_clients/ethereum/utils.py b/client/src/ledger_app_clients/ethereum/utils.py deleted file mode 100644 index e6177455e..000000000 --- a/client/src/ledger_app_clients/ethereum/utils.py +++ /dev/null @@ -1,5 +0,0 @@ -import sha3 - - -def get_selector_from_function(fn: str) -> bytes: - return sha3.keccak_256(fn.encode()).digest()[0:4] diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index bba13cf3a..1a96a53ea 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -7,7 +7,7 @@ from ragger.navigator import Navigator, NavInsID from ledger_app_clients.ethereum.client import EthAppClient, TxData, StatusWord from ledger_app_clients.ethereum.settings import SettingID, settings_toggle -from ledger_app_clients.ethereum.utils import get_selector_from_function +from eth_utils import function_signature_to_4byte_selector import struct @@ -72,7 +72,7 @@ def common_test_nft(fw: Firmware, reject: bool, plugin_name: str): app_client = EthAppClient(back) - selector = get_selector_from_function(action.fn) + selector = function_signature_to_4byte_selector(action.fn) if app_client._client.firmware.name == "nanos": pytest.skip("Not supported on LNS") @@ -126,7 +126,7 @@ def common_test_nft_reject(test_fn: Callable, def data_erc721_transfer_from(action: Action) -> TxData: return TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ FROM, TO, @@ -141,7 +141,7 @@ def data_erc721_safe_transfer_from_data(action: Action) -> TxData: def data_erc721_approve(action: Action) -> TxData: return TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ TO, struct.pack(">H", NFTS[0][0]) @@ -150,7 +150,7 @@ def data_erc721_approve(action: Action) -> TxData: def data_erc721_set_approval_for_all(action: Action) -> TxData: return TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ TO, struct.pack("b", False) @@ -259,7 +259,7 @@ def test_erc721_reject(firmware: Firmware, def data_erc1155_safe_transfer_from(action: Action) -> TxData: return TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ FROM, TO, @@ -271,7 +271,7 @@ def data_erc1155_safe_transfer_from(action: Action) -> TxData: def data_erc1155_safe_batch_transfer_from(action: Action) -> TxData: data = TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ FROM, TO @@ -288,7 +288,7 @@ def data_erc1155_safe_batch_transfer_from(action: Action) -> TxData: def data_erc1155_set_approval_for_all(action: Action) -> TxData: return TxData( - get_selector_from_function(action.fn), + function_signature_to_4byte_selector(action.fn), [ TO, struct.pack("b", False) From eaf9cf8b16b82634e416fb3c2b8722200385eaa2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 10 Nov 2023 11:50:24 +0100 Subject: [PATCH 064/160] New sign method that uses Web3.py Removed old ones --- .../src/ledger_app_clients/ethereum/client.py | 98 ++++--------------- 1 file changed, 17 insertions(+), 81 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index bd7544788..b6bb62466 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -2,25 +2,14 @@ from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU -from typing import List, Optional, Union +from typing import List, Optional from .command_builder import CommandBuilder from .eip712 import EIP712FieldType from .keychain import sign_data, Key from .tlv import format_tlv - -WEI_IN_ETH = 1e+18 -GWEI_IN_ETH = 1e+9 - - -class TxData: - selector: bytes - parameters: list[bytes] - - def __init__(self, selector: bytes, params: list[bytes]): - self.selector = selector - self.parameters = params +from web3 import Web3 class StatusWord(IntEnum): @@ -106,79 +95,26 @@ def eip712_filtering_message_info(self, name: str, filters_count: int, sig: byte def eip712_filtering_show_field(self, name: str, sig: bytes): return self._send(self._cmd_builder.eip712_filtering_show_field(name, sig)) - def _sign(self, bip32_path: str, raw_tx: bytes): - chunks = self._cmd_builder.sign(bip32_path, raw_tx) + def sign(self, + bip32_path: str, + tx_params: dict): + tx = Web3().eth.account.create().sign_transaction(tx_params).rawTransaction + prefix = bytes() + suffix = [] + if tx[0] in [0x01, 0x02]: + prefix = tx[:1] + tx = tx[len(prefix):] + else: # legacy + if "chainId" in tx_params: + suffix = [int(tx_params["chainId"]), bytes(), bytes()] + decoded = rlp.decode(tx)[:-3] # remove already computed signature + tx = prefix + rlp.encode(decoded + suffix) + chunks = self._cmd_builder.sign(bip32_path, tx) for chunk in chunks[:-1]: with self._send(chunk): pass return self._send(chunks[-1]) - def _data_to_payload(self, data: TxData) -> bytes: - payload = bytearray(data.selector) - for param in data.parameters: - payload += param.rjust(32, b'\x00') - return payload - - def _sign_common(self, - tx: list, - gas_price: float, - gas_limit: int, - destination: bytes, - amount: float, - data: Optional[TxData]): - tx.append(int(gas_price * GWEI_IN_ETH)) - tx.append(gas_limit) - tx.append(destination) - if amount > 0: - tx.append(int(amount * WEI_IN_ETH)) - else: - tx.append(bytes()) - if data is not None: - tx.append(self._data_to_payload(data)) - else: - tx.append(bytes()) - return tx - - def sign_legacy(self, - bip32_path: str, - nonce: int, - gas_price: float, - gas_limit: int, - destination: bytes, - amount: float, - chain_id: int, - data: Optional[TxData] = None): - tx: List[Union[int, bytes]] = list() - tx.append(nonce) - tx = self._sign_common(tx, gas_price, gas_limit, destination, amount, data) - tx.append(chain_id) - tx.append(bytes()) - tx.append(bytes()) - return self._sign(bip32_path, rlp.encode(tx)) - - def sign_1559(self, - bip32_path: str, - chain_id: int, - nonce: int, - max_prio_gas_price: float, - max_gas_price: float, - gas_limit: int, - destination: bytes, - amount: float, - data: Optional[TxData] = None, - access_list=list()): - tx: List[Union[int, bytes]] = list() - tx.append(chain_id) - tx.append(nonce) - tx.append(int(max_prio_gas_price * GWEI_IN_ETH)) - tx = self._sign_common(tx, max_gas_price, gas_limit, destination, amount, data) - tx.append(access_list) - tx.append(False) - tx.append(bytes()) - tx.append(bytes()) - # prefix with transaction type - return self._sign(bip32_path, b'\x02' + rlp.encode(tx)) - def get_challenge(self): return self._send(self._cmd_builder.get_challenge()) From 8bab762147c49e6ba4f9d190ad39509cfe45cca8 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 20 Nov 2023 14:21:19 +0100 Subject: [PATCH 065/160] Now returns public address as bytes --- client/src/ledger_app_clients/ethereum/response_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/ledger_app_clients/ethereum/response_parser.py b/client/src/ledger_app_clients/ethereum/response_parser.py index 641e1bbc9..a50ae0184 100644 --- a/client/src/ledger_app_clients/ethereum/response_parser.py +++ b/client/src/ledger_app_clients/ethereum/response_parser.py @@ -49,4 +49,4 @@ def pk_addr(data: bytes, has_chaincode: bool = False): if idx != len(data): return None - return pk, addr.decode(), chaincode + return pk, bytes.fromhex(addr.decode()), chaincode From bd41a1460dc80896b0dce702e86f9577da7eeeed Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 20 Nov 2023 18:00:33 +0100 Subject: [PATCH 066/160] Added the RLP weakness workaround in client --- client/src/ledger_app_clients/ethereum/client.py | 2 +- .../ethereum/command_builder.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index b6bb62466..5cce4f37d 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -109,7 +109,7 @@ def sign(self, suffix = [int(tx_params["chainId"]), bytes(), bytes()] decoded = rlp.decode(tx)[:-3] # remove already computed signature tx = prefix + rlp.encode(decoded + suffix) - chunks = self._cmd_builder.sign(bip32_path, tx) + chunks = self._cmd_builder.sign(bip32_path, tx, suffix) for chunk in chunks[:-1]: with self._send(chunk): pass diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 63ab0ae7b..61ebec928 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -195,17 +195,27 @@ def set_external_plugin(self, plugin_name: str, contract_address: bytes, selecto 0x00, data) - def sign(self, bip32_path: str, rlp_data: bytes) -> list[bytes]: + def sign(self, bip32_path: str, rlp_data: bytes, vrs: list) -> list[bytes]: apdus = list() payload = pack_derivation_path(bip32_path) payload += rlp_data p1 = P1Type.SIGN_FIRST_CHUNK while len(payload) > 0: + chunk_size = 0xff + + # TODO: Fix the app & remove this, issue #409 + if len(vrs) == 3: + if len(payload) > chunk_size: + import rlp + diff = len(rlp.encode(vrs)) - (len(payload) - chunk_size) + if diff > 0: + chunk_size -= diff + apdus.append(self._serialize(InsType.SIGN, p1, 0x00, - payload[:0xff])) - payload = payload[0xff:] + payload[:chunk_size])) + payload = payload[chunk_size:] p1 = P1Type.SIGN_SUBSQT_CHUNK return apdus From ceb1cfaf4b6abfe54cfb625f458eb37ef8cf539c Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 20 Nov 2023 17:55:14 +0100 Subject: [PATCH 067/160] New util functions in python client - recover_message / recover_transaction - get_selector_from_data --- .../src/ledger_app_clients/ethereum/utils.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 client/src/ledger_app_clients/ethereum/utils.py diff --git a/client/src/ledger_app_clients/ethereum/utils.py b/client/src/ledger_app_clients/ethereum/utils.py new file mode 100644 index 000000000..f538403c7 --- /dev/null +++ b/client/src/ledger_app_clients/ethereum/utils.py @@ -0,0 +1,41 @@ +from eth_account import Account +from eth_account.messages import encode_defunct, encode_typed_data +import rlp + + +def get_selector_from_data(data: str) -> bytes: + raw_data = bytes.fromhex(data[2:]) + return raw_data[:4] + + +def recover_message(msg, vrs: tuple) -> bytes: + if isinstance(msg, dict): # EIP-712 + smsg = encode_typed_data(full_message=msg) + else: # EIP-191 + smsg = encode_defunct(primitive=msg) + addr = Account.recover_message(smsg, vrs) + return bytes.fromhex(addr[2:]) + + +# TODO: Figure out why it doesn't work for non-legacy transactions +def recover_transaction(tx_params, vrs: tuple) -> bytes: + raw_tx = Account.create().sign_transaction(tx_params).rawTransaction + prefix = bytes() + if raw_tx[0] in [0x01, 0x02]: + prefix = raw_tx[:1] + raw_tx = raw_tx[len(prefix):] + if prefix == bytes(): + # v is returned on one byte only so it might have overflowed + # in that case, we will reconstruct it to its full value + if "chainId" in tx_params: + trunc_chain_id = tx_params["chainId"] + while trunc_chain_id.bit_length() > 32: + trunc_chain_id >>= 8 + target = tx_params["chainId"] * 2 + 35 + trunc_target = trunc_chain_id * 2 + 35 + diff = vrs[0][0] - (trunc_target & 0xff) + vrs = (target + diff, vrs[1], vrs[2]) + decoded = rlp.decode(raw_tx) + reencoded = rlp.encode(decoded[:-3] + list(vrs)) + addr = Account.recover_transaction(prefix + reencoded) + return bytes.fromhex(addr[2:]) From b90d660a69d2d72ce29ff1940e23be10ab1d65f3 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 20 Nov 2023 14:35:47 +0100 Subject: [PATCH 068/160] Improved NFT tests Now uses the ERC 721/1155 ABIs, gets selector automatically, and actually verifies the signature --- tests/ragger/abis/erc1155.json | 276 +++++++++++++++++++++++++++++++++ tests/ragger/abis/erc721.json | 268 ++++++++++++++++++++++++++++++++ tests/ragger/test_nft.py | 218 +++++++++++--------------- 3 files changed, 634 insertions(+), 128 deletions(-) create mode 100644 tests/ragger/abis/erc1155.json create mode 100644 tests/ragger/abis/erc721.json diff --git a/tests/ragger/abis/erc1155.json b/tests/ragger/abis/erc1155.json new file mode 100644 index 000000000..3c53ad8c2 --- /dev/null +++ b/tests/ragger/abis/erc1155.json @@ -0,0 +1,276 @@ +[ + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "ApprovalForAll", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + }, + { + "indexed" : false, + "internalType" : "uint256[]", + "name" : "_values", + "type" : "uint256[]" + } + ], + "name" : "TransferBatch", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + }, + { + "indexed" : false, + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + } + ], + "name" : "TransferSingle", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : false, + "internalType" : "string", + "name" : "_value", + "type" : "string" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + } + ], + "name" : "URI", + "type" : "event" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + } + ], + "name" : "balanceOf", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address[]", + "name" : "_owners", + "type" : "address[]" + }, + { + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + } + ], + "name" : "balanceOfBatch", + "outputs" : [ + { + "internalType" : "uint256[]", + "name" : "", + "type" : "uint256[]" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + } + ], + "name" : "isApprovedForAll", + "outputs" : [ + { + "internalType" : "bool", + "name" : "", + "type" : "bool" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + }, + { + "internalType" : "uint256[]", + "name" : "_values", + "type" : "uint256[]" + }, + { + "internalType" : "bytes", + "name" : "_data", + "type" : "bytes" + } + ], + "name" : "safeBatchTransferFrom", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + }, + { + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + }, + { + "internalType" : "bytes", + "name" : "_data", + "type" : "bytes" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "setApprovalForAll", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + } +] diff --git a/tests/ragger/abis/erc721.json b/tests/ragger/abis/erc721.json new file mode 100644 index 000000000..e00d5ca3f --- /dev/null +++ b/tests/ragger/abis/erc721.json @@ -0,0 +1,268 @@ +[ + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_approved", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "Approval", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "ApprovalForAll", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "Transfer", + "type" : "event" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_approved", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "approve", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + } + ], + "name" : "balanceOf", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "getApproved", + "outputs" : [ + { + "internalType" : "address", + "name" : "", + "type" : "address" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + } + ], + "name" : "isApprovedForAll", + "outputs" : [ + { + "internalType" : "bool", + "name" : "", + "type" : "bool" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "ownerOf", + "outputs" : [ + { + "internalType" : "address", + "name" : "", + "type" : "address" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + }, + { + "internalType" : "bytes", + "name" : "data", + "type" : "bytes" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "setApprovalForAll", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "transferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + } +] diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index 1a96a53ea..be22144a8 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -1,17 +1,21 @@ import pytest +from typing import Optional, Any from pathlib import Path from typing import Callable from ragger.error import ExceptionRAPDU from ragger.firmware import Firmware from ragger.backend import BackendInterface from ragger.navigator import Navigator, NavInsID -from ledger_app_clients.ethereum.client import EthAppClient, TxData, StatusWord -from ledger_app_clients.ethereum.settings import SettingID, settings_toggle -from eth_utils import function_signature_to_4byte_selector -import struct +from ledger_app_clients.ethereum.client import EthAppClient, StatusWord +import ledger_app_clients.ethereum.response_parser as ResponseParser +from ledger_app_clients.ethereum.utils import get_selector_from_data, recover_transaction +from web3 import Web3 +import json +import os ROOT_SCREENSHOT_PATH = Path(__file__).parent +ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) BIP32_PATH = "m/44'/60'/0'/0/0" NONCE = 21 @@ -21,23 +25,25 @@ TO = bytes.fromhex("0099887766554433221100998877665544332211") NFTS = [ (1, 3), (5, 2), (7, 4) ] # tuples of (token_id, amount) DATA = "Some data".encode() +DEVICE_ADDR: Optional[bytes] = None class NFTCollection: addr: bytes name: str chain_id: int - def __init__(self, addr: bytes, name: str, chain_id: int): + def __init__(self, addr: bytes, name: str, chain_id: int, contract): self.addr = addr self.name = name self.chain_id = chain_id + self.contract = contract class Action: - fn: str - data_fn: Callable + fn_name: str + fn_args: list[Any] nav_fn: Callable - def __init__(self, fn: str, data_fn: Callable, nav_fn: Callable): - self.fn = fn - self.data_fn = data_fn + def __init__(self, fn_name: str, fn_args: list[Any], nav_fn: Callable): + self.fn_name = fn_name + self.fn_args = fn_args self.nav_fn = nav_fn def common_nav_nft(is_nano: bool, nano_steps: int, stax_steps: int, reject: bool) -> list[NavInsID]: @@ -59,7 +65,7 @@ def common_nav_nft(is_nano: bool, nano_steps: int, stax_steps: int, reject: bool return moves def snapshot_test_name(nft_type: str, fn: str, chain_id: int, reject: bool) -> str: - name = "%s_%s_%s" % (nft_type, fn.split("(")[0], str(chain_id)) + name = "%s_%s_%s" % (nft_type, fn, str(chain_id)) if reject: name += "-rejected" return name @@ -71,34 +77,48 @@ def common_test_nft(fw: Firmware, action: Action, reject: bool, plugin_name: str): + global DEVICE_ADDR app_client = EthAppClient(back) - selector = function_signature_to_4byte_selector(action.fn) if app_client._client.firmware.name == "nanos": pytest.skip("Not supported on LNS") + + if DEVICE_ADDR is None: # to only have to request it once + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + data = collec.contract.encodeABI(action.fn_name, action.fn_args) with app_client.set_plugin(plugin_name, collec.addr, - selector, - 1): + get_selector_from_data(data), + collec.chain_id): pass with app_client.provide_nft_metadata(collec.name, collec.addr, collec.chain_id): pass - with app_client.sign_legacy(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - collec.addr, - 0, - collec.chain_id, - action.data_fn(action)): + tx_params = { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": collec.addr, + "value": 0, + "chainId": collec.chain_id, + "data": data, + } + with app_client.sign(BIP32_PATH, tx_params): nav.navigate_and_compare(ROOT_SCREENSHOT_PATH, snapshot_test_name(plugin_name.lower(), - action.fn, + action.fn_name, collec.chain_id, reject), action.nav_fn(fw.is_nano, collec.chain_id, reject)) + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_transaction(tx_params, vrs) + assert addr == DEVICE_ADDR + def common_test_nft_reject(test_fn: Callable, fw: Firmware, @@ -116,48 +136,14 @@ def common_test_nft_reject(test_fn: Callable, # ERC-721 ERC721_PLUGIN = "ERC721" -ERC721_SAFE_TRANSFER_FROM_DATA = "safeTransferFrom(address,address,uint256,bytes)" -ERC721_SAFE_TRANSFER_FROM = "safeTransferFrom(address,address,uint256)" -ERC721_TRANSFER_FROM = "transferFrom(address,address,uint256)" -ERC721_APPROVE = "approve(address,uint256)" -ERC721_SET_APPROVAL_FOR_ALL = "setApprovalForAll(address,bool)" - -## data formatting functions - -def data_erc721_transfer_from(action: Action) -> TxData: - return TxData( - function_signature_to_4byte_selector(action.fn), - [ - FROM, - TO, - struct.pack(">H", NFTS[0][0]) - ] - ) -def data_erc721_safe_transfer_from_data(action: Action) -> TxData: - txd = data_erc721_transfer_from(action) - txd.parameters += [ DATA ] - return txd - -def data_erc721_approve(action: Action) -> TxData: - return TxData( - function_signature_to_4byte_selector(action.fn), - [ - TO, - struct.pack(">H", NFTS[0][0]) - ] +with open("%s/erc721.json" % (ABIS_FOLDER)) as file: + contract_erc721 = Web3().eth.contract( + abi=json.load(file), + address=bytes(20) ) -def data_erc721_set_approval_for_all(action: Action) -> TxData: - return TxData( - function_signature_to_4byte_selector(action.fn), - [ - TO, - struct.pack("b", False) - ] - ) - -## ui nav functions +# ui nav functions def nav_erc721_transfer_from(is_nano: bool, chain_id: int, @@ -190,30 +176,33 @@ def nav_erc721_set_approval_for_all(is_nano: bool, collecs_721 = [ NFTCollection(bytes.fromhex("bc4ca0eda7647a8ab7c2061c2e118a18a936f13d"), "Bored Ape Yacht Club", - 1), + 1, + contract_erc721), NFTCollection(bytes.fromhex("670fd103b1a08628e9557cd66b87ded841115190"), "y00ts", - 137), + 137, + contract_erc721), NFTCollection(bytes.fromhex("2909cf13e458a576cdd9aab6bd6617051a92dacf"), "goerlirocks", - 5) + 5, + contract_erc721), ] actions_721 = [ - Action(ERC721_SAFE_TRANSFER_FROM_DATA, - data_erc721_safe_transfer_from_data, + Action("safeTransferFrom", + [FROM, TO, NFTS[0][0], DATA], nav_erc721_transfer_from), - Action(ERC721_SAFE_TRANSFER_FROM, - data_erc721_transfer_from, + Action("safeTransferFrom", + [FROM, TO, NFTS[0][0]], nav_erc721_transfer_from), - Action(ERC721_TRANSFER_FROM, - data_erc721_transfer_from, + Action("transferFrom", + [FROM, TO, NFTS[0][0]], nav_erc721_transfer_from), - Action(ERC721_APPROVE, - data_erc721_approve, + Action("approve", + [TO, NFTS[0][0]], nav_erc721_approve), - Action(ERC721_SET_APPROVAL_FOR_ALL, - data_erc721_set_approval_for_all, - nav_erc721_set_approval_for_all) + Action("setApprovalForAll", + [TO, False], + nav_erc721_set_approval_for_all), ] @@ -251,51 +240,15 @@ def test_erc721_reject(firmware: Firmware, # ERC-1155 ERC1155_PLUGIN = "ERC1155" -ERC1155_SAFE_TRANSFER_FROM = "safeTransferFrom(address,address,uint256,uint256,bytes)" -ERC1155_SAFE_BATCH_TRANSFER_FROM = "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)" -ERC1155_SET_APPROVAL_FOR_ALL = "setApprovalForAll(address,bool)" - -## data formatting functions - -def data_erc1155_safe_transfer_from(action: Action) -> TxData: - return TxData( - function_signature_to_4byte_selector(action.fn), - [ - FROM, - TO, - struct.pack(">H", NFTS[0][0]), - struct.pack(">H", NFTS[0][1]), - DATA - ] - ) -def data_erc1155_safe_batch_transfer_from(action: Action) -> TxData: - data = TxData( - function_signature_to_4byte_selector(action.fn), - [ - FROM, - TO - ]) - data.parameters += [ int(32 * 4).to_bytes(8, "big") ] # token_ids offset - data.parameters += [int(32 * (4 + len(NFTS) + 1)).to_bytes(8, "big") ] # amounts offset - data.parameters += [ int(len(NFTS)).to_bytes(8, "big") ] # token_ids length - for nft in NFTS: - data.parameters += [ struct.pack(">H", nft[0]) ] # token_id - data.parameters += [ int(len(NFTS)).to_bytes(8, "big") ] # amounts length - for nft in NFTS: - data.parameters += [ struct.pack(">H", nft[1]) ] # amount - return data - -def data_erc1155_set_approval_for_all(action: Action) -> TxData: - return TxData( - function_signature_to_4byte_selector(action.fn), - [ - TO, - struct.pack("b", False) - ] +with open("%s/erc1155.json" % (ABIS_FOLDER)) as file: + contract_erc1155 = Web3().eth.contract( + abi=json.load(file), + address=bytes(20) ) -## ui nav functions + +# ui nav functions def nav_erc1155_safe_transfer_from(is_nano: bool, chain_id: int, @@ -326,24 +279,33 @@ def nav_erc1155_set_approval_for_all(is_nano: bool, collecs_1155 = [ NFTCollection(bytes.fromhex("495f947276749ce646f68ac8c248420045cb7b5e"), "OpenSea Shared Storefront", - 1), + 1, + contract_erc1155), NFTCollection(bytes.fromhex("2953399124f0cbb46d2cbacd8a89cf0599974963"), "OpenSea Collections", - 137), + 137, + contract_erc1155), NFTCollection(bytes.fromhex("f4910c763ed4e47a585e2d34baa9a4b611ae448c"), "OpenSea Collections", - 5) + 5, + contract_erc1155), ] actions_1155 = [ - Action(ERC1155_SAFE_TRANSFER_FROM, - data_erc1155_safe_transfer_from, + Action("safeTransferFrom", + [FROM, TO, NFTS[0][0], NFTS[0][1], DATA], nav_erc1155_safe_transfer_from), - Action(ERC1155_SAFE_BATCH_TRANSFER_FROM, - data_erc1155_safe_batch_transfer_from, + Action("safeBatchTransferFrom", + [ + FROM, + TO, + list(map(lambda nft: nft[0], NFTS)), + list(map(lambda nft: nft[1], NFTS)), + DATA + ], nav_erc1155_safe_batch_transfer_from), - Action(ERC1155_SET_APPROVAL_FOR_ALL, - data_erc1155_set_approval_for_all, - nav_erc1155_set_approval_for_all) + Action("setApprovalForAll", + [TO, False], + nav_erc1155_set_approval_for_all), ] @pytest.fixture(params=collecs_1155) def collec_1155(request) -> bool: From f30546f8f584ffc0626a3ea8b26f2498d4eaacd4 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 20 Nov 2023 14:30:47 +0100 Subject: [PATCH 069/160] Updated ENS tests to use the new sign function --- tests/ragger/test_domain_name.py | 66 ++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 074051481..6b5b22dc2 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -9,6 +9,8 @@ from ledger_app_clients.ethereum.client import EthAppClient, StatusWord from ledger_app_clients.ethereum.settings import SettingID, settings_toggle +from web3 import Web3 + ROOT_SCREENSHOT_PATH = Path(__file__).parent @@ -52,13 +54,15 @@ def test_send_fund(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.sign_legacy(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - CHAIN_ID): + with app_client.sign(BIP32_PATH, + { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": CHAIN_ID + }): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 4 @@ -103,13 +107,15 @@ def test_send_fund_wrong_addr(firmware: Firmware, addr = bytearray(ADDR) addr.reverse() - with app_client.sign_legacy(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - addr, - AMOUNT, - CHAIN_ID): + with app_client.sign(BIP32_PATH, + { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": bytes(addr), + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": CHAIN_ID + }): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 4 @@ -132,13 +138,15 @@ def test_send_fund_non_mainnet(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.sign_legacy(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - 5): + with app_client.sign(BIP32_PATH, + { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": 5 + }): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 5 @@ -161,13 +169,15 @@ def test_send_fund_unknown_chain(firmware: Firmware, with app_client.provide_domain_name(challenge, NAME, ADDR): pass - with app_client.sign_legacy(BIP32_PATH, - NONCE, - GAS_PRICE, - GAS_LIMIT, - ADDR, - AMOUNT, - 9): + with app_client.sign(BIP32_PATH, + { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": 9 + }): moves = list() if firmware.device.startswith("nano"): moves += [ NavInsID.RIGHT_CLICK ] * 5 From 711b083f69c3cf0bece892447bc3d10e54c16b83 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 21 Nov 2023 11:24:05 +0100 Subject: [PATCH 070/160] flake8 fixes --- tests/ragger/test_domain_name.py | 46 +++++++-------- tests/ragger/test_eip712.py | 36 ++++++------ tests/ragger/test_get_address.py | 26 +++++---- tests/ragger/test_nft.py | 98 ++++++++++++++++++++------------ 4 files changed, 118 insertions(+), 88 deletions(-) diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 6b5b22dc2..36637a368 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -65,15 +65,15 @@ def test_send_fund(firmware: Firmware, }): moves = list() if firmware.device.startswith("nano"): - moves += [ NavInsID.RIGHT_CLICK ] * 4 + moves += [NavInsID.RIGHT_CLICK] * 4 if verbose: - moves += [ NavInsID.RIGHT_CLICK ] - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * 2 + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 if verbose: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, "domain_name_verbose_" + str(verbose), moves) @@ -91,7 +91,7 @@ def test_send_fund_wrong_challenge(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.INVALID_DATA else: - assert False # An exception should have been raised + assert False # An exception should have been raised def test_send_fund_wrong_addr(firmware: Firmware, @@ -118,11 +118,11 @@ def test_send_fund_wrong_addr(firmware: Firmware, }): moves = list() if firmware.device.startswith("nano"): - moves += [ NavInsID.RIGHT_CLICK ] * 4 - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] * 4 + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * 2 - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, "domain_name_wrong_addr", moves) @@ -149,11 +149,11 @@ def test_send_fund_non_mainnet(firmware: Firmware, }): moves = list() if firmware.device.startswith("nano"): - moves += [ NavInsID.RIGHT_CLICK ] * 5 - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] * 5 + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * 2 - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, "domain_name_non_mainnet", moves) @@ -180,11 +180,11 @@ def test_send_fund_unknown_chain(firmware: Firmware, }): moves = list() if firmware.device.startswith("nano"): - moves += [ NavInsID.RIGHT_CLICK ] * 5 - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] * 5 + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * 3 - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 3 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, "domain_name_unknown_chain", moves) @@ -202,7 +202,7 @@ def test_send_fund_domain_too_long(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.INVALID_DATA else: - assert False # An exception should have been raised + assert False # An exception should have been raised def test_send_fund_domain_invalid_character(firmware: Firmware, @@ -217,7 +217,7 @@ def test_send_fund_domain_invalid_character(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.INVALID_DATA else: - assert False # An exception should have been raised + assert False # An exception should have been raised def test_send_fund_uppercase(firmware: Firmware, @@ -232,7 +232,7 @@ def test_send_fund_uppercase(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.INVALID_DATA else: - assert False # An exception should have been raised + assert False # An exception should have been raised def test_send_fund_domain_non_ens(firmware: Firmware, @@ -247,4 +247,4 @@ def test_send_fund_domain_non_ens(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.INVALID_DATA else: - assert False # An exception should have been raised + assert False # An exception should have been raised diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index 081695890..f6eb242bd 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -52,16 +52,16 @@ def test_eip712_legacy(firmware: Firmware, bytes.fromhex('eb4221181ff3f1a83ea7313993ca9218496e424604ba9492bb4052c03d5c3df8')): moves = list() if firmware.device.startswith("nano"): - moves += [ NavInsID.RIGHT_CLICK ] + moves += [NavInsID.RIGHT_CLICK] if firmware.device == "nanos": screens_per_hash = 4 else: screens_per_hash = 2 - moves += [ NavInsID.RIGHT_CLICK ] * screens_per_hash * 2 - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] * screens_per_hash * 2 + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * 2 - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate(moves) v, r, s = ResponseParser.signature(app_client.response().data) @@ -74,9 +74,9 @@ def test_eip712_legacy(firmware: Firmware, def autonext(fw: Firmware, nav: Navigator): moves = list() if fw.device.startswith("nano"): - moves = [ NavInsID.RIGHT_CLICK ] + moves = [NavInsID.RIGHT_CLICK] else: - moves = [ NavInsID.USE_CASE_REVIEW_TAP ] + moves = [NavInsID.USE_CASE_REVIEW_TAP] nav.navigate(moves, screen_change_before_first_instruction=False, screen_change_after_last_instruction=False) @@ -113,24 +113,22 @@ def test_eip712_new(firmware: Firmware, assert InputData.process_file(app_client, input_file, filter_file, - partial(autonext, firmware, navigator)) == True + partial(autonext, firmware, navigator)) with app_client.eip712_sign_new(BIP32_PATH, verbose): - time.sleep(0.5) # tight on timing, needed by the CI otherwise might fail sometimes + # tight on timing, needed by the CI otherwise might fail sometimes + time.sleep(0.5) + moves = list() if firmware.device.startswith("nano"): - if not verbose and not filtering: # need to skip the message hash - moves = [ NavInsID.RIGHT_CLICK ] * 2 - moves += [ NavInsID.BOTH_CLICK ] + if not verbose and not filtering: # need to skip the message hash + moves = [NavInsID.RIGHT_CLICK] * 2 + moves += [NavInsID.BOTH_CLICK] else: - if not verbose and not filtering: # need to skip the message hash - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + if not verbose and not filtering: # need to skip the message hash + moves += [NavInsID.USE_CASE_REVIEW_TAP] + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] navigator.navigate(moves) v, r, s = ResponseParser.signature(app_client.response().data) - #print("[signature]") - #print("v = %s" % (v.hex())) - #print("r = %s" % (r.hex())) - #print("s = %s" % (s.hex())) assert v == bytes.fromhex(config["signature"]["v"]) assert r == bytes.fromhex(config["signature"]["r"]) diff --git a/tests/ragger/test_get_address.py b/tests/ragger/test_get_address.py index 33ab5f8df..46c290a1b 100644 --- a/tests/ragger/test_get_address.py +++ b/tests/ragger/test_get_address.py @@ -6,20 +6,22 @@ from ragger.backend import BackendInterface from ragger.navigator import Navigator, NavInsID from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -from ledger_app_clients.ethereum.settings import SettingID, settings_toggle import ledger_app_clients.ethereum.response_parser as ResponseParser from ragger.bip import calculate_public_key_and_chaincode, CurveChoice ROOT_SCREENSHOT_PATH = Path(__file__).parent + @pytest.fixture(params=[True, False]) def with_chaincode(request) -> bool: return request.param + @pytest.fixture(params=[None, 1, 2, 5, 137]) def chain(request) -> Optional[int]: return request.param + def get_moves(firmware: Firmware, navigator: BackendInterface, chain: Optional[int] = None, @@ -27,25 +29,26 @@ def get_moves(firmware: Firmware, moves = list() if firmware.is_nano: - moves += [ NavInsID.RIGHT_CLICK ] + moves += [NavInsID.RIGHT_CLICK] if firmware.device == "nanos": - moves += [ NavInsID.RIGHT_CLICK ] * 3 + moves += [NavInsID.RIGHT_CLICK] * 3 else: - moves += [ NavInsID.RIGHT_CLICK ] + moves += [NavInsID.RIGHT_CLICK] if reject: - moves += [ NavInsID.RIGHT_CLICK ] - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] + moves += [NavInsID.USE_CASE_REVIEW_TAP] if chain is not None and chain > 1: - moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP ] + moves += [NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP] if reject: - moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL ] + moves += [NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL] else: - moves += [ NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM ] + moves += [NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM] return moves + def test_get_pk_rejected(firmware: Firmware, backend: BackendInterface, navigator: Navigator): @@ -59,7 +62,8 @@ def test_get_pk_rejected(firmware: Firmware, except ExceptionRAPDU as e: assert e.status == StatusWord.CONDITION_NOT_SATISFIED else: - assert False # An exception should have been raised + assert False # An exception should have been raised + def test_get_pk(firmware: Firmware, backend: BackendInterface, diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index be22144a8..17430c1fc 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -23,53 +23,63 @@ GAS_LIMIT = 21000 FROM = bytes.fromhex("1122334455667788990011223344556677889900") TO = bytes.fromhex("0099887766554433221100998877665544332211") -NFTS = [ (1, 3), (5, 2), (7, 4) ] # tuples of (token_id, amount) +NFTS = [(1, 3), (5, 2), (7, 4)] # tuples of (token_id, amount) DATA = "Some data".encode() DEVICE_ADDR: Optional[bytes] = None -class NFTCollection: + +class NFTCollection: addr: bytes name: str chain_id: int + def __init__(self, addr: bytes, name: str, chain_id: int, contract): self.addr = addr self.name = name self.chain_id = chain_id self.contract = contract -class Action: + +class Action: fn_name: str fn_args: list[Any] nav_fn: Callable + def __init__(self, fn_name: str, fn_args: list[Any], nav_fn: Callable): self.fn_name = fn_name self.fn_args = fn_args self.nav_fn = nav_fn -def common_nav_nft(is_nano: bool, nano_steps: int, stax_steps: int, reject: bool) -> list[NavInsID]: + +def common_nav_nft(is_nano: bool, + nano_steps: int, + stax_steps: int, + reject: bool) -> list[NavInsID]: moves = list() if is_nano: - moves += [ NavInsID.RIGHT_CLICK ] * nano_steps + moves += [NavInsID.RIGHT_CLICK] * nano_steps if reject: - moves += [ NavInsID.RIGHT_CLICK ] - moves += [ NavInsID.BOTH_CLICK ] + moves += [NavInsID.RIGHT_CLICK] + moves += [NavInsID.BOTH_CLICK] else: - moves += [ NavInsID.USE_CASE_REVIEW_TAP ] * stax_steps + moves += [NavInsID.USE_CASE_REVIEW_TAP] * stax_steps if reject: moves += [ NavInsID.USE_CASE_REVIEW_REJECT, NavInsID.USE_CASE_CHOICE_CONFIRM ] else: - moves += [ NavInsID.USE_CASE_REVIEW_CONFIRM ] + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] return moves + def snapshot_test_name(nft_type: str, fn: str, chain_id: int, reject: bool) -> str: name = "%s_%s_%s" % (nft_type, fn, str(chain_id)) if reject: name += "-rejected" return name + def common_test_nft(fw: Firmware, back: BackendInterface, nav: Navigator, @@ -131,10 +141,11 @@ def common_test_nft_reject(test_fn: Callable, except ExceptionRAPDU as e: assert e.status == StatusWord.CONDITION_NOT_SATISFIED else: - assert False # An exception should have been raised + assert False # An exception should have been raised # ERC-721 + ERC721_PLUGIN = "ERC721" with open("%s/erc721.json" % (ABIS_FOLDER)) as file: @@ -155,6 +166,7 @@ def nav_erc721_transfer_from(is_nano: bool, stax_steps += 1 return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + def nav_erc721_approve(is_nano: bool, chain_id: int, reject: bool) -> list[NavInsID]: @@ -165,6 +177,7 @@ def nav_erc721_approve(is_nano: bool, stax_steps += 1 return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + def nav_erc721_set_approval_for_all(is_nano: bool, chain_id: int, reject: bool) -> list[NavInsID]: @@ -173,19 +186,20 @@ def nav_erc721_set_approval_for_all(is_nano: bool, nano_steps += 1 return common_nav_nft(is_nano, nano_steps, 3, reject) + collecs_721 = [ NFTCollection(bytes.fromhex("bc4ca0eda7647a8ab7c2061c2e118a18a936f13d"), - "Bored Ape Yacht Club", - 1, - contract_erc721), + "Bored Ape Yacht Club", + 1, + contract_erc721), NFTCollection(bytes.fromhex("670fd103b1a08628e9557cd66b87ded841115190"), - "y00ts", - 137, - contract_erc721), + "y00ts", + 137, + contract_erc721), NFTCollection(bytes.fromhex("2909cf13e458a576cdd9aab6bd6617051a92dacf"), - "goerlirocks", - 5, - contract_erc721), + "goerlirocks", + 5, + contract_erc721), ] actions_721 = [ Action("safeTransferFrom", @@ -209,16 +223,19 @@ def nav_erc721_set_approval_for_all(is_nano: bool, @pytest.fixture(params=collecs_721) def collec_721(request) -> NFTCollection: return request.param + + @pytest.fixture(params=actions_721) def action_721(request) -> Action: return request.param + def test_erc721(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator, - collec_721: NFTCollection, - action_721: Action, - reject: bool = False): + backend: BackendInterface, + navigator: Navigator, + collec_721: NFTCollection, + action_721: Action, + reject: bool = False): common_test_nft(firmware, backend, navigator, @@ -227,9 +244,10 @@ def test_erc721(firmware: Firmware, reject, ERC721_PLUGIN) + def test_erc721_reject(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): + backend: BackendInterface, + navigator: Navigator): common_test_nft_reject(test_erc721, firmware, backend, @@ -237,6 +255,7 @@ def test_erc721_reject(firmware: Firmware, collecs_721[0], actions_721[0]) + # ERC-1155 ERC1155_PLUGIN = "ERC1155" @@ -258,6 +277,7 @@ def nav_erc1155_safe_transfer_from(is_nano: bool, nano_steps += 1 return common_nav_nft(is_nano, nano_steps, 4, reject) + def nav_erc1155_safe_batch_transfer_from(is_nano: bool, chain_id: int, reject: bool) -> list: @@ -268,6 +288,7 @@ def nav_erc1155_safe_batch_transfer_from(is_nano: bool, stax_steps += 1 return common_nav_nft(is_nano, nano_steps, stax_steps, reject) + def nav_erc1155_set_approval_for_all(is_nano: bool, chain_id: int, reject: bool) -> list: @@ -276,19 +297,20 @@ def nav_erc1155_set_approval_for_all(is_nano: bool, nano_steps += 1 return common_nav_nft(is_nano, nano_steps, 3, reject) + collecs_1155 = [ NFTCollection(bytes.fromhex("495f947276749ce646f68ac8c248420045cb7b5e"), - "OpenSea Shared Storefront", - 1, - contract_erc1155), + "OpenSea Shared Storefront", + 1, + contract_erc1155), NFTCollection(bytes.fromhex("2953399124f0cbb46d2cbacd8a89cf0599974963"), - "OpenSea Collections", - 137, - contract_erc1155), + "OpenSea Collections", + 137, + contract_erc1155), NFTCollection(bytes.fromhex("f4910c763ed4e47a585e2d34baa9a4b611ae448c"), - "OpenSea Collections", - 5, - contract_erc1155), + "OpenSea Collections", + 5, + contract_erc1155), ] actions_1155 = [ Action("safeTransferFrom", @@ -307,13 +329,18 @@ def nav_erc1155_set_approval_for_all(is_nano: bool, [TO, False], nav_erc1155_set_approval_for_all), ] + + @pytest.fixture(params=collecs_1155) def collec_1155(request) -> bool: return request.param + + @pytest.fixture(params=actions_1155) def action_1155(request) -> Action: return request.param + def test_erc1155(firmware: Firmware, backend: BackendInterface, navigator: Navigator, @@ -328,6 +355,7 @@ def test_erc1155(firmware: Firmware, reject, ERC1155_PLUGIN) + def test_erc1155_reject(firmware: Firmware, backend: BackendInterface, navigator: Navigator): From 620167633b5c4bc50a27d8d4bdad027b5e05a954 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 17 Nov 2023 11:50:47 +0100 Subject: [PATCH 071/160] Modified EIP712 function to take dictionaries directly instead of filenames --- .../src/ledger_app_clients/ethereum/client.py | 2 +- .../ethereum/eip712/InputData.py | 107 ++++++++---------- tests/ragger/test_eip712.py | 31 ++--- 3 files changed, 68 insertions(+), 72 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 5cce4f37d..eff127f0e 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -75,7 +75,7 @@ def eip712_send_struct_impl_struct_field(self, raw_value: bytes): pass return self._send(chunks[-1]) - def eip712_sign_new(self, bip32_path: str, verbose: bool): + def eip712_sign_new(self, bip32_path: str): return self._send(self._cmd_builder.eip712_sign_new(bip32_path)) def eip712_sign_legacy(self, diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index ac0877cf6..47e7c35e0 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -3,6 +3,7 @@ import re import signal import sys +import copy from typing import Any, Callable, Dict, List, Optional from ledger_app_clients.ethereum import keychain @@ -297,13 +298,6 @@ def send_filtering_show_field(display_name): pass -def read_filtering_file(filtering_file_path: str): - data_json = None - with open(filtering_file_path) as data: - data_json = json.load(data) - return data_json - - def prepare_filtering(filtr_data, message): global filtering_paths @@ -355,62 +349,61 @@ def disable_autonext(): signal.setitimer(signal.ITIMER_REAL, 0, 0) -def process_file(aclient: EthAppClient, - input_file_path: str, - filtering_file_path: Optional[str] = None, +def process_data(aclient: EthAppClient, + data_json: dict, + filters: Optional[dict] = None, autonext: Optional[Callable] = None) -> bool: global sig_ctx global app_client global autonext_handler + # deepcopy because this function modifies the dict + data_json = copy.deepcopy(data_json) app_client = aclient - with open(input_file_path, "r") as data: - data_json = json.load(data) - domain_typename = "EIP712Domain" - message_typename = data_json["primaryType"] - types = data_json["types"] - domain = data_json["domain"] - message = data_json["message"] - - if autonext: - autonext_handler = autonext - signal.signal(signal.SIGALRM, next_timeout) - - if filtering_file_path: - init_signature_context(types, domain) - filtr = read_filtering_file(filtering_file_path) - - # send types definition - for key in types.keys(): - with app_client.eip712_send_struct_def_struct_name(key): - pass - for f in types[key]: - (f["type"], f["enum"], f["typesize"], f["array_lvls"]) = \ - send_struct_def_field(f["type"], f["name"]) - - if filtering_file_path: - with app_client.eip712_filtering_activate(): - pass - prepare_filtering(filtr, message) - - # send domain implementation - with app_client.eip712_send_struct_impl_root_struct(domain_typename): - enable_autonext() - disable_autonext() - if not send_struct_impl(types, domain, domain_typename): - return False + domain_typename = "EIP712Domain" + message_typename = data_json["primaryType"] + types = data_json["types"] + domain = data_json["domain"] + message = data_json["message"] + + if autonext: + autonext_handler = autonext + signal.signal(signal.SIGALRM, next_timeout) + + if filters: + init_signature_context(types, domain) + + # send types definition + for key in types.keys(): + with app_client.eip712_send_struct_def_struct_name(key): + pass + for f in types[key]: + (f["type"], f["enum"], f["typesize"], f["array_lvls"]) = \ + send_struct_def_field(f["type"], f["name"]) - if filtering_file_path: - if filtr and "name" in filtr: - send_filtering_message_info(filtr["name"], len(filtering_paths)) - else: - send_filtering_message_info(domain["name"], len(filtering_paths)) - - # send message implementation - with app_client.eip712_send_struct_impl_root_struct(message_typename): - enable_autonext() - disable_autonext() - if not send_struct_impl(types, message, message_typename): - return False + if filters: + with app_client.eip712_filtering_activate(): + pass + prepare_filtering(filters, message) + + # send domain implementation + with app_client.eip712_send_struct_impl_root_struct(domain_typename): + enable_autonext() + disable_autonext() + if not send_struct_impl(types, domain, domain_typename): + return False + + if filters: + if filters and "name" in filters: + send_filtering_message_info(filters["name"], len(filtering_paths)) + else: + send_filtering_message_info(domain["name"], len(filtering_paths)) + + # send message implementation + with app_client.eip712_send_struct_impl_root_struct(message_typename): + enable_autonext() + disable_autonext() + if not send_struct_impl(types, message, message_typename): + return False return True diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index f6eb242bd..aa2afb99d 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -9,6 +9,7 @@ from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID from typing import List +import json import ledger_app_clients.ethereum.response_parser as ResponseParser from ledger_app_clients.ethereum.client import EthAppClient @@ -92,10 +93,14 @@ def test_eip712_new(firmware: Firmware, else: test_path = "%s/%s" % (input_file.parent, "-".join(input_file.stem.split("-")[:-1])) conf_file = "%s.ini" % (test_path) - filter_file = None + filters = None if filtering: - filter_file = "%s-filter.json" % (test_path) + try: + with open("%s-filter.json" % (test_path)) as f: + filters = json.load(f) + except (IOError, json.decoder.JSONDecodeError) as e: + pytest.skip("Filter file error: %s" % (e.strerror)) config = ConfigParser() config.read(conf_file) @@ -106,15 +111,15 @@ def test_eip712_new(firmware: Firmware, assert "r" in config["signature"] assert "s" in config["signature"] - if not filtering or Path(filter_file).is_file(): - if verbose: - settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) + if verbose: + settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) - assert InputData.process_file(app_client, - input_file, - filter_file, + with open(input_file) as file: + assert InputData.process_data(app_client, + json.load(file), + filters, partial(autonext, firmware, navigator)) - with app_client.eip712_sign_new(BIP32_PATH, verbose): + with app_client.eip712_sign_new(BIP32_PATH): # tight on timing, needed by the CI otherwise might fail sometimes time.sleep(0.5) @@ -130,8 +135,6 @@ def test_eip712_new(firmware: Firmware, navigator.navigate(moves) v, r, s = ResponseParser.signature(app_client.response().data) - assert v == bytes.fromhex(config["signature"]["v"]) - assert r == bytes.fromhex(config["signature"]["r"]) - assert s == bytes.fromhex(config["signature"]["s"]) - else: - pytest.skip("No filter file found") + assert v == bytes.fromhex(config["signature"]["v"]) + assert r == bytes.fromhex(config["signature"]["r"]) + assert s == bytes.fromhex(config["signature"]["s"]) From 58ea0e5cab7b145a121bb7130018b34cff56be90 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 17 Nov 2023 14:01:26 +0100 Subject: [PATCH 072/160] Added EIP-191 to the client --- .../src/ledger_app_clients/ethereum/client.py | 7 +++++++ .../ethereum/command_builder.py | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index eff127f0e..2ef41ff6d 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -224,3 +224,10 @@ def set_external_plugin(self, # skip APDU header & empty sig sig = sign_data(Key.SET_PLUGIN, tmp[5:-1]) return self._send(self._cmd_builder.set_external_plugin(plugin_name, contract_address, method_selelector, sig)) + + def personal_sign(self, path: str, msg: bytes): + chunks = self._cmd_builder.personal_sign(path, msg) + for chunk in chunks[:-1]: + with self._send(chunk): + pass + return self._send(chunks[-1]) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 61ebec928..e460461a2 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -13,6 +13,7 @@ class InsType(IntEnum): GET_PUBLIC_ADDR = 0x02 SIGN = 0x04 + PERSONAL_SIGN = 0x08 PROVIDE_NFT_INFORMATION = 0x14 SET_PLUGIN = 0x16 EIP712_SEND_STRUCT_DEF = 0x1a @@ -294,3 +295,19 @@ def provide_nft_information(self, payload.append(len(sig)) payload += sig return self._serialize(InsType.PROVIDE_NFT_INFORMATION, 0x00, 0x00, payload) + + def personal_sign(self, path: str, msg: bytes): + payload = pack_derivation_path(path) + payload += struct.pack(">I", len(msg)) + payload += msg + chunks = list() + p1 = P1Type.SIGN_FIRST_CHUNK + while len(payload) > 0: + chunk_size = 0xff + chunks.append(self._serialize(InsType.PERSONAL_SIGN, + p1, + 0x00, + payload[:chunk_size])) + payload = payload[chunk_size:] + p1 = P1Type.SIGN_SUBSQT_CHUNK + return chunks From edad008ed1d649eda899aaf8b12ec76f34926c90 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 21 Nov 2023 14:20:22 +0100 Subject: [PATCH 073/160] Fix signature generation for SET_EXTERNAL_PLUGIN in client --- client/src/ledger_app_clients/ethereum/client.py | 2 +- src_features/setExternalPlugin/cmd_setExternalPlugin.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 2ef41ff6d..6981f86ed 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -222,7 +222,7 @@ def set_external_plugin(self, tmp = self._cmd_builder.set_external_plugin(plugin_name, contract_address, method_selelector, bytes()) # skip APDU header & empty sig - sig = sign_data(Key.SET_PLUGIN, tmp[5:-1]) + sig = sign_data(Key.CAL, tmp[5:]) return self._send(self._cmd_builder.set_external_plugin(plugin_name, contract_address, method_selelector, sig)) def personal_sign(self, path: str, msg: bytes): diff --git a/src_features/setExternalPlugin/cmd_setExternalPlugin.c b/src_features/setExternalPlugin/cmd_setExternalPlugin.c index 4a9435600..49e827a87 100644 --- a/src_features/setExternalPlugin/cmd_setExternalPlugin.c +++ b/src_features/setExternalPlugin/cmd_setExternalPlugin.c @@ -48,7 +48,9 @@ void handleSetExternalPlugin(uint8_t p1, workBuffer + payload_size, dataLength - payload_size)) { #ifndef HAVE_BYPASS_SIGNATURES - PRINTF("Invalid plugin signature %.*H\n", payload_size, workBuffer); + PRINTF("Invalid plugin signature %.*H\n", + dataLength - payload_size, + workBuffer + payload_size); THROW(0x6A80); #endif } From c65db6f3076f8bbe1f54b0466039f97f4a436cc7 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 24 Nov 2023 17:02:18 +0100 Subject: [PATCH 074/160] Removed old type hinting --- client/src/ledger_app_clients/ethereum/client.py | 4 ++-- client/src/ledger_app_clients/ethereum/command_builder.py | 5 ++--- .../src/ledger_app_clients/ethereum/eip712/InputData.py | 8 ++++---- client/src/ledger_app_clients/ethereum/keychain.py | 3 +-- client/src/ledger_app_clients/ethereum/settings.py | 4 ++-- tests/ragger/test_eip712.py | 3 +-- 6 files changed, 12 insertions(+), 15 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 6981f86ed..0833486f6 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -2,7 +2,7 @@ from enum import IntEnum from ragger.backend import BackendInterface from ragger.utils import RAPDU -from typing import List, Optional +from typing import Optional from .command_builder import CommandBuilder from .eip712 import EIP712FieldType @@ -53,7 +53,7 @@ def eip712_send_struct_def_struct_field(self, field_type: EIP712FieldType, type_name: str, type_size: int, - array_levels: List, + array_levels: list, key_name: str): return self._send(self._cmd_builder.eip712_send_struct_def_struct_field( field_type, diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index e460461a2..cba06a5c9 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -5,7 +5,6 @@ from enum import IntEnum from typing import Optional from ragger.bip import pack_derivation_path -from typing import List from .eip712 import EIP712FieldType @@ -76,7 +75,7 @@ def eip712_send_struct_def_struct_field(self, field_type: EIP712FieldType, type_name: str, type_size: int, - array_levels: List, + array_levels: list, key_name: str) -> bytes: data = bytearray() typedesc = 0 @@ -116,7 +115,7 @@ def eip712_send_struct_impl_array(self, size: int) -> bytes: P2Type.ARRAY, data) - def eip712_send_struct_impl_struct_field(self, data: bytearray) -> List[bytes]: + def eip712_send_struct_impl_struct_field(self, data: bytearray) -> list[bytes]: chunks = list() # Add a 16-bit integer with the data's byte length (network byte order) data_w_length = bytearray() diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index 47e7c35e0..1d0263af3 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -4,7 +4,7 @@ import signal import sys import copy -from typing import Any, Callable, Dict, List, Optional +from typing import Any, Callable, Optional from ledger_app_clients.ethereum import keychain from ledger_app_clients.ethereum.client import EthAppClient, EIP712FieldType @@ -12,9 +12,9 @@ # global variables app_client: EthAppClient = None -filtering_paths: Dict = {} -current_path: List[str] = list() -sig_ctx: Dict[str, Any] = {} +filtering_paths: dict = {} +current_path: list[str] = list() +sig_ctx: dict[str, Any] = {} def default_handler(): diff --git a/client/src/ledger_app_clients/ethereum/keychain.py b/client/src/ledger_app_clients/ethereum/keychain.py index 433d65234..0fc6712b1 100644 --- a/client/src/ledger_app_clients/ethereum/keychain.py +++ b/client/src/ledger_app_clients/ethereum/keychain.py @@ -3,7 +3,6 @@ from ecdsa import SigningKey from ecdsa.util import sigencode_der from enum import Enum, auto -from typing import Dict # Private key PEM files have to be named the same (lowercase) as their corresponding enum entries @@ -15,7 +14,7 @@ class Key(Enum): NFT = auto() -_keys: Dict[Key, SigningKey] = dict() +_keys: dict[Key, SigningKey] = dict() # Open the corresponding PEM file and load its key in the global dict diff --git a/client/src/ledger_app_clients/ethereum/settings.py b/client/src/ledger_app_clients/ethereum/settings.py index d9d3ed597..6bd73e91e 100644 --- a/client/src/ledger_app_clients/ethereum/settings.py +++ b/client/src/ledger_app_clients/ethereum/settings.py @@ -1,7 +1,7 @@ from enum import Enum, auto from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID, NavIns -from typing import List, Union +from typing import Union class SettingID(Enum): @@ -44,7 +44,7 @@ def get_setting_position(device: str, setting: Union[NavInsID, SettingID]) -> tu def settings_toggle(fw: Firmware, nav: Navigator, to_toggle: list[SettingID]): - moves: List[Union[NavIns, NavInsID]] = list() + moves: list[Union[NavIns, NavInsID]] = list() settings = get_device_settings(fw.device) # Assume the app is on the home page if fw.device.startswith("nano"): diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index aa2afb99d..ec4a22af1 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -8,7 +8,6 @@ from ragger.backend import BackendInterface from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID -from typing import List import json import ledger_app_clients.ethereum.response_parser as ResponseParser @@ -20,7 +19,7 @@ BIP32_PATH = "m/44'/60'/0'/0/0" -def input_files() -> List[str]: +def input_files() -> list[str]: files = [] for file in os.scandir("%s/eip712_input_files" % (os.path.dirname(__file__))): if fnmatch.fnmatch(file, "*-data.json"): From 67a472d27037d3bfeb1bf3cd0b5c030dbbfb0cf2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 27 Nov 2023 15:02:16 +0100 Subject: [PATCH 075/160] Bumped python client version --- client/src/ledger_app_clients/ethereum/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/ledger_app_clients/ethereum/__init__.py b/client/src/ledger_app_clients/ethereum/__init__.py index 3dc1f76bc..d3ec452c3 100644 --- a/client/src/ledger_app_clients/ethereum/__init__.py +++ b/client/src/ledger_app_clients/ethereum/__init__.py @@ -1 +1 @@ -__version__ = "0.1.0" +__version__ = "0.2.0" From 9ba04468a0290dbd2dfc5ca6fc07de7e6c56ab1d Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 1 Dec 2023 16:15:48 +0100 Subject: [PATCH 076/160] [add] ledger_app.toml manifest --- .github/workflows/ci-workflow.yml | 1 - ledger_app.toml | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 ledger_app.toml diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index a15a89615..b785a7ee5 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -159,7 +159,6 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_ragger_tests.yml@v1 with: download_app_binaries_artifact: "ragger_elfs" - test_dir: tests/ragger # ===================================================== # STATIC ANALYSIS diff --git a/ledger_app.toml b/ledger_app.toml new file mode 100644 index 000000000..4a815e598 --- /dev/null +++ b/ledger_app.toml @@ -0,0 +1,8 @@ +[app] +build_directory = "./" +sdk = "C" +devices = ["nanos", "nanox", "nanos+", "stax"] + +[tests] +unit_directory = "./tests/unit" +pytest_directory = "./tests/ragger" From ec7e385d78308bd089eff5f7db2e1410e606b6e1 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 1 Dec 2023 16:35:14 +0100 Subject: [PATCH 077/160] Fix stax build for API_LEVEL < 14 --- src_nbgl/ui_sign_712.c | 4 ++++ src_nbgl/ui_sign_message.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src_nbgl/ui_sign_712.c b/src_nbgl/ui_sign_712.c index f53add1ec..e1163f70c 100644 --- a/src_nbgl/ui_sign_712.c +++ b/src_nbgl/ui_sign_712.c @@ -30,8 +30,12 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { strings.tmp.tmp, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, +#if API_LEVEL >= 14 &len, false); +#else + &len); +#endif strings.tmp.tmp[len] = '\0'; pair.item = strings.tmp.tmp2; diff --git a/src_nbgl/ui_sign_message.c b/src_nbgl/ui_sign_message.c index a44687269..d2f1f1c7d 100644 --- a/src_nbgl/ui_sign_message.c +++ b/src_nbgl/ui_sign_message.c @@ -47,8 +47,12 @@ static bool display_message(nbgl_pageContent_t *content) { (char *) g_stax_shared_buffer, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, +#if API_LEVEL >= 14 &len, false); +#else + &len); +#endif stringsTmpTmpIdx = len - eip191MessageIdx; eip191MessageIdx = len; From 5a488f1d0a8840c18c29b72395221603a8fbf3ca Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 1 Dec 2023 17:24:31 +0100 Subject: [PATCH 078/160] Updated the client changelog --- client/CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index e45b41701..44b265b40 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2023-12-01 + +### Added + +- New generic `sign` function that uses the Web3.py library + +### Removed + +- `sign_legacy` & `sign_1559` functions + +### Fixed + +- Now uses the proper signing key for the `SET_EXTERNAL_PLUGIN` APDU + +### Changed + +- `get_public_addr` now returns address as `bytes` instead of `str` + ## [0.1.0] - 2023-30-10 ### Added From 774efda4e454c962467b385cd5374822fef9eac7 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 1 Dec 2023 17:25:58 +0100 Subject: [PATCH 079/160] Fixed date format in client changelog --- client/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index 44b265b40..278db6895 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -23,13 +23,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `get_public_addr` now returns address as `bytes` instead of `str` -## [0.1.0] - 2023-30-10 +## [0.1.0] - 2023-10-30 ### Added - Update the ragger app client to support "set external plugin" APDU -## [0.0.1] - 2023-08-07 +## [0.0.1] - 2023-07-08 ### Added From cc0f963b517a8117e694d623b1a1222010700222 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 1 Dec 2023 18:43:30 +0100 Subject: [PATCH 080/160] Hotfix fix for API_LEVEL_14 fix --- src_nbgl/ui_sign_712.c | 2 +- src_nbgl/ui_sign_message.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src_nbgl/ui_sign_712.c b/src_nbgl/ui_sign_712.c index e1163f70c..ad4f07f92 100644 --- a/src_nbgl/ui_sign_712.c +++ b/src_nbgl/ui_sign_712.c @@ -30,7 +30,7 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { strings.tmp.tmp, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, -#if API_LEVEL >= 14 +#if (API_LEVEL == 0 || API_LEVEL >= 14) &len, false); #else diff --git a/src_nbgl/ui_sign_message.c b/src_nbgl/ui_sign_message.c index d2f1f1c7d..a85d98b90 100644 --- a/src_nbgl/ui_sign_message.c +++ b/src_nbgl/ui_sign_message.c @@ -47,7 +47,7 @@ static bool display_message(nbgl_pageContent_t *content) { (char *) g_stax_shared_buffer, SCREEN_WIDTH - (2 * BORDER_MARGIN), NB_MAX_LINES_IN_REVIEW, -#if API_LEVEL >= 14 +#if (API_LEVEL == 0 || API_LEVEL >= 14) &len, false); #else From 60d1d97667f5dbf9ad578ad96068340feeaffeaf Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 1 Dec 2023 19:50:07 +0100 Subject: [PATCH 081/160] Return to Exchange when failing to sign in swap mode --- src/handle_swap_sign_transaction.c | 1 + src/main.c | 15 +++++++++++++++ src/shared_context.h | 1 + src_features/signTx/logic_signTx.c | 11 +++++++++++ 4 files changed, 28 insertions(+) diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 789cbdd14..495586a3b 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -80,6 +80,7 @@ void handle_swap_sign_transaction(chain_config_t* config) { chainConfig = config; reset_app_context(); G_called_from_swap = true; + G_swap_response_ready = false; io_seproxyhal_init(); if (N_storage.initialized != 0x01) { diff --git a/src/main.c b/src/main.c index 9ff804105..f8a623211 100644 --- a/src/main.c +++ b/src/main.c @@ -53,6 +53,7 @@ cx_sha3_t global_sha3; uint8_t appState; uint16_t apdu_response_code; bool G_called_from_swap; +bool G_swap_response_ready; pluginType_t pluginType; #ifdef HAVE_STARKWARE bool quantumSet; @@ -78,6 +79,7 @@ void reset_app_context() { // PRINTF("!!RESET_APP_CONTEXT\n"); appState = APP_STATE_IDLE; G_called_from_swap = false; + G_swap_response_ready = false; pluginType = OLD_INTERNAL; #ifdef HAVE_STARKWARE quantumSet = false; @@ -456,6 +458,7 @@ void handleApdu(unsigned int *flags, unsigned int *tx) { THROW(EXCEPTION_IO_RESET); } CATCH_OTHER(e) { + bool quit_now = G_called_from_swap && G_swap_response_ready; switch (e & 0xF000) { case 0x6000: // Wipe the transaction context and report the exception @@ -476,6 +479,18 @@ void handleApdu(unsigned int *flags, unsigned int *tx) { G_io_apdu_buffer[*tx] = sw >> 8; G_io_apdu_buffer[*tx + 1] = sw; *tx += 2; + + // If we are in swap mode and have validated a TX, we send it and immediately quit + if (quit_now) { + if (io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, *tx) == 0) { + // In case of success, the apdu is sent immediatly and eth exits + // Reaching this code means we encountered an error + finalize_exchange_sign_transaction(false); + } else { + PRINTF("Unrecoverable\n"); + os_sched_exit(-1); + } + } } FINALLY { } diff --git a/src/shared_context.h b/src/shared_context.h index c87f286a0..08e48d6c0 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -215,6 +215,7 @@ extern cx_sha3_t global_sha3; extern const internalStorage_t N_storage_real; extern bool G_called_from_swap; +extern bool G_swap_response_ready; typedef enum { EXTERNAL, // External plugin, set by setExternalPlugin. diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index 5c47e643f..08f031c7d 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -433,6 +433,15 @@ void finalizeParsing(bool direct) { } } + if (G_called_from_swap) { + if (G_swap_response_ready) { + // Unreachable given current return to exchange mechanism. Safeguard against regression + PRINTF("FATAL: safety against double sign triggered\n"); + os_sched_exit(-1); + } + G_swap_response_ready = true; + } + // User has just validated a swap but ETH received apdus about a non standard plugin / contract if (G_called_from_swap && !use_standard_UI) { PRINTF("ERR_SILENT_MODE_CHECK_FAILED, G_called_from_swap\n"); @@ -504,6 +513,8 @@ void finalizeParsing(bool direct) { // Ensure the values are the same that the ones that have been previously validated if (strcmp(strings.common.maxFee, displayBuffer) != 0) { PRINTF("ERR_SILENT_MODE_CHECK_FAILED, fees check failed\n"); + PRINTF("Expected %s\n", strings.common.maxFee); + PRINTF("Received %s\n", displayBuffer); THROW(ERR_SILENT_MODE_CHECK_FAILED); } } else { From 8e3fd4233ae2118333af2da58436d48f3b0cecc4 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 1 Dec 2023 12:35:17 +0100 Subject: [PATCH 082/160] Add STACK_CANARY for Ethereum and clones not using standard path --- makefile_conf/chain/ethereum.mk | 3 ++- makefile_conf/chain/goerli.mk | 3 ++- makefile_conf/chain/ropsten.mk | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/makefile_conf/chain/ethereum.mk b/makefile_conf/chain/ethereum.mk index 6d52a8b8b..16e4b8cae 100644 --- a/makefile_conf/chain/ethereum.mk +++ b/makefile_conf/chain/ethereum.mk @@ -11,4 +11,5 @@ APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 APPNAME = "Ethereum" DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa40 \ No newline at end of file +DEFINES += HAVE_BOLOS_APP_STACK_CANARY +APP_LOAD_FLAGS=--appFlags 0xa40 diff --git a/makefile_conf/chain/goerli.mk b/makefile_conf/chain/goerli.mk index 1de903909..1f8e37d53 100644 --- a/makefile_conf/chain/goerli.mk +++ b/makefile_conf/chain/goerli.mk @@ -12,4 +12,5 @@ APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 APPNAME = "Eth Goerli" DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa40 \ No newline at end of file +DEFINES += HAVE_BOLOS_APP_STACK_CANARY +APP_LOAD_FLAGS=--appFlags 0xa40 diff --git a/makefile_conf/chain/ropsten.mk b/makefile_conf/chain/ropsten.mk index d3415ad9e..793a31417 100644 --- a/makefile_conf/chain/ropsten.mk +++ b/makefile_conf/chain/ropsten.mk @@ -12,4 +12,5 @@ APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 APPNAME = "Eth Ropsten" DEFINES_LIB= -APP_LOAD_FLAGS=--appFlags 0xa40 \ No newline at end of file +DEFINES += HAVE_BOLOS_APP_STACK_CANARY +APP_LOAD_FLAGS=--appFlags 0xa40 From f64addc0d2165833fbcf38d6beab24846c60bdde Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 1 Dec 2023 12:38:48 +0100 Subject: [PATCH 083/160] Remove THROW from lib mode handlers and remove associated TRY CATCH context --- src/handle_check_address.c | 61 ++++++++++++++++++++---------- src/handle_check_address.h | 6 +-- src/handle_get_printable_amount.c | 11 +++--- src/handle_get_printable_amount.h | 6 +-- src/handle_swap_sign_transaction.c | 12 +++--- src/handle_swap_sign_transaction.h | 2 +- src/main.c | 48 +++++++---------------- 7 files changed, 72 insertions(+), 74 deletions(-) diff --git a/src/handle_check_address.c b/src/handle_check_address.c index ef6d5edc4..3fdb1f12e 100644 --- a/src/handle_check_address.c +++ b/src/handle_check_address.c @@ -4,18 +4,18 @@ #include "ethUtils.h" #include "string.h" -#define ZERO(x) memset(&x, 0, sizeof(x)) +#define ZERO(x) explicit_bzero(&x, sizeof(x)) -int handle_check_address(check_address_parameters_t* params, chain_config_t* chain_config) { +void handle_check_address(check_address_parameters_t* params, chain_config_t* chain_config) { + params->result = 0; PRINTF("Params on the address %d\n", (unsigned int) params); PRINTF("Address to check %s\n", params->address_to_check); PRINTF("Inside handle_check_address\n"); if (params->address_to_check == 0) { PRINTF("Address to check == 0\n"); - return 0; + return; } - uint8_t i; const uint8_t* bip32_path_ptr = params->address_parameters; uint8_t bip32PathLength = *(bip32_path_ptr++); cx_sha3_t local_sha3; @@ -27,37 +27,55 @@ int handle_check_address(check_address_parameters_t* params, chain_config_t* cha char address[51]; } locals_union1; union group2 { - uint8_t privateKeyData[32]; + uint8_t privateKeyData[64]; cx_ecfp_public_key_t publicKey; } locals_union2; if ((bip32PathLength < 0x01) || (bip32PathLength > MAX_BIP32_PATH) || (bip32PathLength * 4 != params->address_parameters_length - 1)) { PRINTF("Invalid path\n"); - return 0; + return; } - for (i = 0; i < bip32PathLength; i++) { + for (uint8_t i = 0; i < bip32PathLength; i++) { locals_union1.bip32Path[i] = U4BE(bip32_path_ptr, 0); bip32_path_ptr += 4; } - os_perso_derive_node_bip32(CX_CURVE_256K1, - locals_union1.bip32Path, - bip32PathLength, - locals_union2.privateKeyData, - NULL); + if (os_derive_bip32_no_throw(CX_CURVE_256K1, + locals_union1.bip32Path, + bip32PathLength, + locals_union2.privateKeyData, + NULL) != CX_OK) { + ZERO(locals_union1); + ZERO(locals_union2); + return; + } + ZERO(locals_union1); - cx_ecfp_init_private_key(CX_CURVE_256K1, - locals_union2.privateKeyData, - 32, - &locals_union1.privateKey); + if (cx_ecfp_init_private_key_no_throw(CX_CURVE_256K1, + locals_union2.privateKeyData, + 32, + &locals_union1.privateKey) != CX_OK) { + ZERO(locals_union1); + ZERO(locals_union2); + return; + } ZERO(locals_union2); - cx_ecfp_generate_pair(CX_CURVE_256K1, &locals_union2.publicKey, &locals_union1.privateKey, 1); + if (cx_ecfp_generate_pair_no_throw(CX_CURVE_256K1, + &locals_union2.publicKey, + &locals_union1.privateKey, + 1) != CX_OK) { + ZERO(locals_union1); + ZERO(locals_union2); + return; + } ZERO(locals_union1); if (!getEthAddressStringFromKey(&locals_union2.publicKey, locals_union1.address, &local_sha3, chain_config->chainId)) { - THROW(CX_INVALID_PARAMETER); + ZERO(locals_union1); + ZERO(locals_union2); + return; } ZERO(locals_union2); @@ -68,8 +86,9 @@ int handle_check_address(check_address_parameters_t* params, chain_config_t* cha if (strcmp(locals_union1.address, params->address_to_check + offset_0x) != 0) { PRINTF("Addresses don't match\n"); - return 0; + } else { + PRINTF("Addresses match\n"); + params->result = 1; } - PRINTF("Addresses match\n"); - return 1; + ZERO(locals_union1); } diff --git a/src/handle_check_address.h b/src/handle_check_address.h index 4267a3035..92db829c5 100644 --- a/src/handle_check_address.h +++ b/src/handle_check_address.h @@ -4,7 +4,7 @@ #include "swap_lib_calls.h" #include "chainConfig.h" -int handle_check_address(check_address_parameters_t* check_address_params, - chain_config_t* chain_config); +void handle_check_address(check_address_parameters_t* check_address_params, + chain_config_t* chain_config); -#endif // _HANDLE_CHECK_ADDRESS_H_ \ No newline at end of file +#endif // _HANDLE_CHECK_ADDRESS_H_ diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index a890ff5fe..ced188a31 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -7,13 +7,14 @@ #include #include -int handle_get_printable_amount(get_printable_amount_parameters_t* params, chain_config_t* config) { +void handle_get_printable_amount(get_printable_amount_parameters_t* params, + chain_config_t* config) { uint8_t decimals; char ticker[MAX_TICKER_LEN]; memset(params->printable_amount, 0, sizeof(params->printable_amount)); if (params->amount_length > 32) { PRINTF("Amount is too big, 32 bytes max but buffer has %u bytes", params->amount_length); - return 0; + return; } // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap @@ -29,7 +30,7 @@ int handle_get_printable_amount(get_printable_amount_parameters_t* params, chain ticker, &decimals)) { PRINTF("Error while parsing config\n"); - return 0; + return; } } @@ -39,7 +40,7 @@ int handle_get_printable_amount(get_printable_amount_parameters_t* params, chain ticker, params->printable_amount, sizeof(params->printable_amount))) { - THROW(EXCEPTION_OVERFLOW); + memset(params->printable_amount, 0, sizeof(params->printable_amount)); } - return 1; + return; } diff --git a/src/handle_get_printable_amount.h b/src/handle_get_printable_amount.h index 0bf20153b..b81729404 100644 --- a/src/handle_get_printable_amount.h +++ b/src/handle_get_printable_amount.h @@ -4,7 +4,7 @@ #include "swap_lib_calls.h" #include "chainConfig.h" -int handle_get_printable_amount(get_printable_amount_parameters_t* get_printable_amount_params, - chain_config_t* config); +void handle_get_printable_amount(get_printable_amount_parameters_t* get_printable_amount_params, + chain_config_t* config); -#endif // _HANDLE_GET_PRINTABLE_AMOUNT_H_ \ No newline at end of file +#endif // _HANDLE_GET_PRINTABLE_AMOUNT_H_ diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 495586a3b..7161833c1 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -41,7 +41,7 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti ticker, stack_data.fullAmount, sizeof(stack_data.fullAmount))) { - THROW(EXCEPTION_OVERFLOW); + return false; } // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap @@ -53,7 +53,7 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti ticker, stack_data.maxFee, sizeof(stack_data.maxFee))) { - THROW(EXCEPTION_OVERFLOW); + return false; } // Full reset the global variables @@ -71,9 +71,10 @@ void __attribute__((noreturn)) finalize_exchange_sign_transaction(bool is_succes os_lib_end(); } -void handle_swap_sign_transaction(chain_config_t* config) { - UX_INIT(); +void __attribute__((noreturn)) handle_swap_sign_transaction(chain_config_t* config) { #ifdef HAVE_NBGL + // On Stax, display a spinner at startup + UX_INIT(); nbgl_useCaseSpinner("Signing"); #endif // HAVE_NBGL @@ -93,10 +94,9 @@ void handle_swap_sign_transaction(chain_config_t* config) { nvm_write((void*) &N_storage, (void*) &storage, sizeof(internalStorage_t)); } + PRINTF("USB power ON/OFF\n"); USB_power(0); USB_power(1); - // ui_idle(); - PRINTF("USB power ON/OFF\n"); #ifdef HAVE_BLE // grab the current plane mode setting G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); diff --git a/src/handle_swap_sign_transaction.h b/src/handle_swap_sign_transaction.h index d34a6d860..2c20f1eb5 100644 --- a/src/handle_swap_sign_transaction.h +++ b/src/handle_swap_sign_transaction.h @@ -6,6 +6,6 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transaction_params, chain_config_t* config); -void handle_swap_sign_transaction(chain_config_t* config); +void __attribute__((noreturn)) handle_swap_sign_transaction(chain_config_t* config); void __attribute__((noreturn)) finalize_exchange_sign_transaction(bool is_success); diff --git a/src/main.c b/src/main.c index f8a623211..7a4c2e165 100644 --- a/src/main.c +++ b/src/main.c @@ -731,57 +731,35 @@ void coin_main(libargs_t *args) { app_exit(); } -static void library_main_helper(libargs_t *args) { - check_api_level(CX_COMPAT_APILEVEL); +void library_main(libargs_t *args) { + chain_config_t coin_config; + if (args->chain_config == NULL) { + // We have been started directly by Exchange, not by a Clone. Init default chain + init_coin_config(&coin_config); + args->chain_config = &coin_config; + } + PRINTF("Inside a library \n"); switch (args->command) { case CHECK_ADDRESS: - // ensure result is zero if an exception is thrown - args->check_address->result = 0; - args->check_address->result = - handle_check_address(args->check_address, args->chain_config); + handle_check_address(args->check_address, args->chain_config); break; case SIGN_TRANSACTION: if (copy_transaction_parameters(args->create_transaction, args->chain_config)) { // never returns handle_swap_sign_transaction(args->chain_config); + } else { + // Failed to copy, non recoverable + os_sched_exit(-1); } break; case GET_PRINTABLE_AMOUNT: - // ensure result is zero if an exception is thrown (compatibility breaking, disabled - // until LL is ready) - // args->get_printable_amount->result = 0; - // args->get_printable_amount->result = handle_get_printable_amount(args->get_printable_amount, args->chain_config); break; default: break; } -} - -void library_main(libargs_t *args) { - chain_config_t coin_config; - if (args->chain_config == NULL) { - init_coin_config(&coin_config); - args->chain_config = &coin_config; - } - volatile bool end = false; - /* This loop ensures that library_main_helper and os_lib_end are called - * within a try context, even if an exception is thrown */ - while (1) { - BEGIN_TRY { - TRY { - if (!end) { - library_main_helper(args); - } - os_lib_end(); - } - FINALLY { - end = true; - } - } - END_TRY; - } + os_lib_end(); } __attribute__((section(".boot"))) int main(int arg0) { From 172338698533accdf5b81f4da0a1332ecd856547 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 4 Dec 2023 14:41:46 +0100 Subject: [PATCH 084/160] Split clone main and ethereum main, add comments and remove unnecessary lines --- src/main.c | 81 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/src/main.c b/src/main.c index 7a4c2e165..f5ca89c5f 100644 --- a/src/main.c +++ b/src/main.c @@ -762,69 +762,77 @@ void library_main(libargs_t *args) { os_lib_end(); } -__attribute__((section(".boot"))) int main(int arg0) { -#ifdef USE_LIB_ETHEREUM +/* Eth clones do not actually contain any logic, they delegate everything to the ETH application. + * Start Eth in lib mode with the correct chain config + */ +__attribute__((noreturn)) void clone_main(libargs_t *args) { + PRINTF("Starting in clone_main\n"); BEGIN_TRY { TRY { unsigned int libcall_params[5]; chain_config_t local_chainConfig; init_coin_config(&local_chainConfig); - PRINTF("Hello from Eth-clone\n"); - check_api_level(CX_COMPAT_APILEVEL); - // delegate to Ethereum app/lib libcall_params[0] = (unsigned int) "Ethereum"; libcall_params[1] = 0x100; - libcall_params[2] = RUN_APPLICATION; libcall_params[3] = (unsigned int) &local_chainConfig; -#ifdef HAVE_NBGL - const char app_name[] = APPNAME; - caller_app_t capp; - nbgl_icon_details_t icon_details; - uint8_t bitmap[sizeof(ICONBITMAP)]; - - memcpy(&icon_details, &ICONGLYPH, sizeof(ICONGLYPH)); - memcpy(&bitmap, &ICONBITMAP, sizeof(bitmap)); - icon_details.bitmap = (const uint8_t *) bitmap; - capp.name = app_name; - capp.icon = &icon_details; - libcall_params[4] = (unsigned int) &capp; -#else - libcall_params[4] = NULL; -#endif // HAVE_NBGL - if (arg0) { - // call as a library - libcall_params[2] = ((unsigned int *) arg0)[1]; - libcall_params[4] = ((unsigned int *) arg0)[3]; // library arguments + // Clone called by Exchange, forward the request to Ethereum + if (args != NULL) { + if (args->id != 0x100) { + os_sched_exit(0); + } + libcall_params[2] = args->command; + libcall_params[4] = (unsigned int) args->get_printable_amount; os_lib_call((unsigned int *) &libcall_params); - ((unsigned int *) arg0)[0] = libcall_params[1]; + // Ethereum fulfilled the request and returned to us. We return to Exchange. os_lib_end(); } else { - // launch coin application - libcall_params[1] = 0x100; // use the Init call, as we won't exit + // Clone called from Dashboard, start Ethereum + libcall_params[2] = RUN_APPLICATION; +// On Stax, forward our icon to Ethereum +#ifdef HAVE_NBGL + const char app_name[] = APPNAME; + caller_app_t capp; + nbgl_icon_details_t icon_details; + uint8_t bitmap[sizeof(ICONBITMAP)]; + + memcpy(&icon_details, &ICONGLYPH, sizeof(ICONGLYPH)); + memcpy(&bitmap, &ICONBITMAP, sizeof(bitmap)); + icon_details.bitmap = (const uint8_t *) bitmap; + capp.name = app_name; + capp.icon = &icon_details; + libcall_params[4] = (unsigned int) &capp; +#else + libcall_params[4] = 0; +#endif // HAVE_NBGL os_lib_call((unsigned int *) &libcall_params); + // Ethereum should not return to us + os_sched_exit(-1); } } FINALLY { } } END_TRY; - // no return -#else + + // os_lib_call will raise if Ethereum application is not installed. Do not try to recover. + os_sched_exit(-1); +} + +int ethereum_main(libargs_t *args) { // exit critical section __asm volatile("cpsie i"); // ensure exception will work as planned os_boot(); - if (!arg0) { + if (args == NULL) { // called from dashboard as standalone eth app coin_main(NULL); return 0; } - libargs_t *args = (libargs_t *) arg0; if (args->id != 0x100) { app_exit(); return 0; @@ -838,6 +846,13 @@ __attribute__((section(".boot"))) int main(int arg0) { // called as ethereum or altcoin library library_main(args); } -#endif return 0; } + +__attribute__((section(".boot"))) int main(int arg0) { +#ifdef USE_LIB_ETHEREUM + clone_main((libargs_t *) arg0); +#else + return ethereum_main((libargs_t *) arg0); +#endif +} From 180f321eb472bf95f9edd97013458eab6999ccb6 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 5 Dec 2023 18:19:59 +0100 Subject: [PATCH 085/160] Fixed plugin SDK compatibility with ledger_assert --- src_plugin_sdk/standard_plugin.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src_plugin_sdk/standard_plugin.mk b/src_plugin_sdk/standard_plugin.mk index 6a2023f2e..0fd12d163 100644 --- a/src_plugin_sdk/standard_plugin.mk +++ b/src_plugin_sdk/standard_plugin.mk @@ -57,6 +57,8 @@ DISABLE_STANDARD_SNPRINTF = 1 DISABLE_STANDARD_USB = 1 DISABLE_STANDARD_WEBUSB = 1 DISABLE_STANDARD_BAGL_UX_FLOW = 1 +DISABLE_DEBUG_LEDGER_ASSERT = 1 +DISABLE_DEBUG_THROW = 1 # Required for PRINTFs to compile ifeq ($(DEBUG),0) From 0f2d026b4018efa6ef699f620e30cfbee7ac4523 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 6 Dec 2023 14:31:50 +0100 Subject: [PATCH 086/160] Renamed plugin SDK utils to plugin_utils to prevent filename conflicts in plugins --- src_plugin_sdk/{utils.c => plugin_utils.c} | 2 +- src_plugin_sdk/{utils.h => plugin_utils.h} | 0 tools/build_sdk.py | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename src_plugin_sdk/{utils.c => plugin_utils.c} (97%) rename src_plugin_sdk/{utils.h => plugin_utils.h} (100%) diff --git a/src_plugin_sdk/utils.c b/src_plugin_sdk/plugin_utils.c similarity index 97% rename from src_plugin_sdk/utils.c rename to src_plugin_sdk/plugin_utils.c index 059430efd..42ecef09d 100644 --- a/src_plugin_sdk/utils.c +++ b/src_plugin_sdk/plugin_utils.c @@ -15,7 +15,7 @@ * limitations under the License. *****************************************************************************/ -#include "utils.h" +#include "plugin_utils.h" bool find_selector(uint32_t selector, const uint32_t *array, size_t size, size_t *idx) { for (size_t i = 0; i < size; ++i) { diff --git a/src_plugin_sdk/utils.h b/src_plugin_sdk/plugin_utils.h similarity index 100% rename from src_plugin_sdk/utils.h rename to src_plugin_sdk/plugin_utils.h diff --git a/tools/build_sdk.py b/tools/build_sdk.py index dfda9be77..a2763248e 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -210,8 +210,8 @@ def merge_c_files(sources, nodes_to_extract): files_to_copy = [ "main.c", - "utils.c", - "utils.h", + "plugin_utils.c", + "plugin_utils.h", ] for file in files_to_copy: shutil.copyfile("src_plugin_sdk/" + file, From 6c1567ae92df4459ecfc4cd45696b39830fc2214 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 5 Dec 2023 18:20:12 +0100 Subject: [PATCH 087/160] Updated plugin SDK changelog --- src_plugin_sdk/CHANGELOG.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src_plugin_sdk/CHANGELOG.md b/src_plugin_sdk/CHANGELOG.md index d01453e61..f0bbbe9a7 100644 --- a/src_plugin_sdk/CHANGELOG.md +++ b/src_plugin_sdk/CHANGELOG.md @@ -5,7 +5,25 @@ | :rotating_light: | Breaks build | | :warning: | Breaks compatibility with app | -## [latest](/) - 2023/10/19 +## [latest](/) - 2023/12/06 + +### Fixed + +* standard\_plugin build ([this PR on the SDK](https://github.com/LedgerHQ/ledger-secure-sdk/pull/473) had broken it) + +### Changed + +* utils renamed to plugin\_utils to prevent filename conflicts in plugins + +## [4d8e044](/../../commit/4d8e044) - 2023/11/09 + +### Added + +* standard\_plugin Makefile so plugins can use it & have a really small Makefile +with only the relevant information +* Comments in the plugin interface header file + +## [1fe4085](/../../commit/1fe4085) - 2023/10/19 ### Changed From 266dae0c71bdba52dff1eb4b211c0fa03d264af7 Mon Sep 17 00:00:00 2001 From: apaillier-ledger Date: Wed, 6 Dec 2023 14:30:16 +0000 Subject: [PATCH 088/160] [create-pull-request] automated change --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 4d8e04480..052a26860 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 4d8e04480530cd14dd670a0a6405bca992d16942 +Subproject commit 052a26860c9b5e8b721152f57af44a0fda8fb92a From eb00fca1f44846e9bdbb6517dea06446e418688b Mon Sep 17 00:00:00 2001 From: Sarah GLINER Date: Thu, 7 Dec 2023 15:11:13 +0100 Subject: [PATCH 089/160] client: add symlink to install dependencies from ragger folder --- tests/ragger/client | 1 + 1 file changed, 1 insertion(+) create mode 120000 tests/ragger/client diff --git a/tests/ragger/client b/tests/ragger/client new file mode 120000 index 000000000..96cd109b0 --- /dev/null +++ b/tests/ragger/client @@ -0,0 +1 @@ +../../client \ No newline at end of file From bb2c8412acbbc7ac976d4b1cbcb30417b958d3c1 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 7 Dec 2023 16:15:24 +0100 Subject: [PATCH 090/160] Fix standard plugin makefile improperly setting variant value --- src_plugin_sdk/standard_plugin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_plugin_sdk/standard_plugin.mk b/src_plugin_sdk/standard_plugin.mk index 0fd12d163..5409d2939 100644 --- a/src_plugin_sdk/standard_plugin.mk +++ b/src_plugin_sdk/standard_plugin.mk @@ -48,7 +48,7 @@ CURVE_APP_LOAD_PARAMS = secp256k1 PATH_APP_LOAD_PARAMS ?= "44'/60'" VARIANT_PARAM = COIN -VARIANTS_VALUES ?= $(NORMAL_NAME) +VARIANT_VALUES ?= $(NORMAL_NAME) HAVE_APPLICATION_FLAG_LIBRARY = 1 From 0cf5a258962eb35f998d75dab794579a0af4103b Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 7 Dec 2023 16:35:55 +0100 Subject: [PATCH 091/160] Added a null-check in the plugin SDK's dispatch_call --- src_plugin_sdk/main.c | 48 +++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src_plugin_sdk/main.c b/src_plugin_sdk/main.c index f06a2bb60..b36171f21 100644 --- a/src_plugin_sdk/main.c +++ b/src_plugin_sdk/main.c @@ -53,28 +53,32 @@ static void call_app_ethereum() { // Function to dispatch calls from the ethereum app. static void dispatch_call(int message, void *parameters) { - switch (message) { - case ETH_PLUGIN_INIT_CONTRACT: - handle_init_contract(parameters); - break; - case ETH_PLUGIN_PROVIDE_PARAMETER: - handle_provide_parameter(parameters); - break; - case ETH_PLUGIN_FINALIZE: - handle_finalize(parameters); - break; - case ETH_PLUGIN_PROVIDE_INFO: - handle_provide_token(parameters); - break; - case ETH_PLUGIN_QUERY_CONTRACT_ID: - handle_query_contract_id(parameters); - break; - case ETH_PLUGIN_QUERY_CONTRACT_UI: - handle_query_contract_ui(parameters); - break; - default: - PRINTF("Unhandled message %d\n", message); - break; + if (parameters != NULL) { + switch (message) { + case ETH_PLUGIN_INIT_CONTRACT: + handle_init_contract(parameters); + break; + case ETH_PLUGIN_PROVIDE_PARAMETER: + handle_provide_parameter(parameters); + break; + case ETH_PLUGIN_FINALIZE: + handle_finalize(parameters); + break; + case ETH_PLUGIN_PROVIDE_INFO: + handle_provide_token(parameters); + break; + case ETH_PLUGIN_QUERY_CONTRACT_ID: + handle_query_contract_id(parameters); + break; + case ETH_PLUGIN_QUERY_CONTRACT_UI: + handle_query_contract_ui(parameters); + break; + default: + PRINTF("Unhandled message %d\n", message); + break; + } + } else { + PRINTF("Received null parameters\n"); } } From cce38525a0e69496f2cef234833a5834a6747d08 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 7 Dec 2023 16:41:17 +0100 Subject: [PATCH 092/160] Updated plugin SDK changelog --- src_plugin_sdk/CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src_plugin_sdk/CHANGELOG.md b/src_plugin_sdk/CHANGELOG.md index f0bbbe9a7..a1c0f99a9 100644 --- a/src_plugin_sdk/CHANGELOG.md +++ b/src_plugin_sdk/CHANGELOG.md @@ -5,11 +5,13 @@ | :rotating_light: | Breaks build | | :warning: | Breaks compatibility with app | -## [latest](/) - 2023/12/06 +## [latest](/) - 2023/12/07 ### Fixed * standard\_plugin build ([this PR on the SDK](https://github.com/LedgerHQ/ledger-secure-sdk/pull/473) had broken it) +* Broken variant auto-setting in the standard\_plugin Makefile +* Missing null-check on parameters received by the plugins ### Changed From 98e1041020143accabbfe549c02e9456730abf11 Mon Sep 17 00:00:00 2001 From: apaillier-ledger Date: Thu, 7 Dec 2023 15:54:32 +0000 Subject: [PATCH 093/160] [create-pull-request] automated change --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 052a26860..3b7e7adf4 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 052a26860c9b5e8b721152f57af44a0fda8fb92a +Subproject commit 3b7e7adf4f7e512434779cc7dbd9d0ede6d6c132 From 794d266f23b9a01868173762fafbcd15684df456 Mon Sep 17 00:00:00 2001 From: Victor Forgeoux <100780559+vforgeoux-ledger@users.noreply.github.com> Date: Fri, 8 Dec 2023 16:43:18 +0100 Subject: [PATCH 094/160] Add Stax icons for EVM chains (#512) * add 64 px stax icons for evm chains in network.c * fix chain_id 9001 filename --- glyphs/stax_chain_100_64px.gif | Bin 0 -> 734 bytes glyphs/stax_chain_10200_64px.gif | Bin 0 -> 734 bytes glyphs/stax_chain_106_64px.gif | Bin 0 -> 444 bytes glyphs/stax_chain_1088_64px.gif | Bin 0 -> 720 bytes glyphs/stax_chain_10_64px.gif | Bin 0 -> 654 bytes glyphs/stax_chain_1101_64px.gif | Bin 0 -> 543 bytes glyphs/stax_chain_11297108109_64px.gif | Bin 0 -> 448 bytes glyphs/stax_chain_196_64px.gif | Bin 0 -> 271 bytes glyphs/stax_chain_2222_64px.gif | Bin 0 -> 470 bytes glyphs/stax_chain_245022926_64px.gif | Bin 0 -> 587 bytes glyphs/stax_chain_245022934_64px.gif | Bin 0 -> 587 bytes glyphs/stax_chain_250_64px.gif | Bin 0 -> 661 bytes glyphs/stax_chain_25_64px.gif | Bin 0 -> 610 bytes glyphs/stax_chain_288_64px.gif | Bin 0 -> 504 bytes glyphs/stax_chain_321_64px.gif | Bin 0 -> 835 bytes glyphs/stax_chain_369_64px.gif | Bin 0 -> 596 bytes glyphs/stax_chain_39797_64px.gif | Bin 0 -> 421 bytes glyphs/stax_chain_40_64px.gif | Bin 0 -> 880 bytes glyphs/stax_chain_4201_64px.gif | Bin 0 -> 493 bytes glyphs/stax_chain_42161_64px.gif | Bin 0 -> 798 bytes glyphs/stax_chain_42220_64px.gif | Bin 0 -> 836 bytes glyphs/stax_chain_42_64px.gif | Bin 0 -> 493 bytes glyphs/stax_chain_43114_64px.gif | Bin 0 -> 586 bytes glyphs/stax_chain_44787_64px.gif | Bin 0 -> 836 bytes glyphs/stax_chain_4919_64px.gif | Bin 0 -> 780 bytes glyphs/stax_chain_4_64px.gif | Bin 0 -> 561 bytes glyphs/stax_chain_534352_64px.gif | Bin 0 -> 701 bytes glyphs/stax_chain_534353_64px.gif | Bin 0 -> 701 bytes glyphs/stax_chain_534354_64px.gif | Bin 0 -> 701 bytes glyphs/stax_chain_57_64px.gif | Bin 0 -> 618 bytes glyphs/stax_chain_58008_64px.gif | Bin 0 -> 561 bytes glyphs/stax_chain_62320_64px.gif | Bin 0 -> 836 bytes glyphs/stax_chain_8217_64px.gif | Bin 0 -> 660 bytes glyphs/stax_chain_8453_64px.gif | Bin 0 -> 440 bytes glyphs/stax_chain_9001_64px.gif | Bin 0 -> 480 bytes 35 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 glyphs/stax_chain_100_64px.gif create mode 100644 glyphs/stax_chain_10200_64px.gif create mode 100644 glyphs/stax_chain_106_64px.gif create mode 100644 glyphs/stax_chain_1088_64px.gif create mode 100644 glyphs/stax_chain_10_64px.gif create mode 100644 glyphs/stax_chain_1101_64px.gif create mode 100644 glyphs/stax_chain_11297108109_64px.gif create mode 100644 glyphs/stax_chain_196_64px.gif create mode 100644 glyphs/stax_chain_2222_64px.gif create mode 100644 glyphs/stax_chain_245022926_64px.gif create mode 100644 glyphs/stax_chain_245022934_64px.gif create mode 100644 glyphs/stax_chain_250_64px.gif create mode 100644 glyphs/stax_chain_25_64px.gif create mode 100644 glyphs/stax_chain_288_64px.gif create mode 100644 glyphs/stax_chain_321_64px.gif create mode 100644 glyphs/stax_chain_369_64px.gif create mode 100644 glyphs/stax_chain_39797_64px.gif create mode 100644 glyphs/stax_chain_40_64px.gif create mode 100644 glyphs/stax_chain_4201_64px.gif create mode 100644 glyphs/stax_chain_42161_64px.gif create mode 100644 glyphs/stax_chain_42220_64px.gif create mode 100644 glyphs/stax_chain_42_64px.gif create mode 100644 glyphs/stax_chain_43114_64px.gif create mode 100644 glyphs/stax_chain_44787_64px.gif create mode 100644 glyphs/stax_chain_4919_64px.gif create mode 100644 glyphs/stax_chain_4_64px.gif create mode 100644 glyphs/stax_chain_534352_64px.gif create mode 100644 glyphs/stax_chain_534353_64px.gif create mode 100644 glyphs/stax_chain_534354_64px.gif create mode 100644 glyphs/stax_chain_57_64px.gif create mode 100644 glyphs/stax_chain_58008_64px.gif create mode 100644 glyphs/stax_chain_62320_64px.gif create mode 100644 glyphs/stax_chain_8217_64px.gif create mode 100644 glyphs/stax_chain_8453_64px.gif create mode 100644 glyphs/stax_chain_9001_64px.gif diff --git a/glyphs/stax_chain_100_64px.gif b/glyphs/stax_chain_100_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..87d0da7320abded673928c16a8d7a9f208904ec1 GIT binary patch literal 734 zcmV<40wMiJNk%w1VL$*t0J8u9udlCgaBxsiP(VOH5D*YxU|=vXFd!fxfPjGA-QDl+ z@4vslkdTm{pPv8#0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j-;h5 zOko^O>l}lCEJ|rh3NsLH@4JIW;ucyIc)w(_FeGjg17+&~8yt{Irt_jeU|ocQux3d# z3alSuOGy}fgunu1{2iLk#+QH~ixLHJ4NeF?19&BXK5I6GU<_;zdOeIIj#G$R327~r zAPqeRnQU%7gCS8a0g)D$4g(?zZ!VsZt_FS}vXrb3x49gE6T7swp?+E$fd#{}om;;X zfv_40F3dR24z-rY(k^ouf!EEvCD9V&E!Y>G^bZSuK)R5M zTm@p!KKx5(h|7;AXUg^CKu?SWcVO-X3^joTJA~W+D0*XfV1hOW`zE+@0B@s%kJ`9V zs0dC%03QP>2*4?UK@XVnD$sN>(C1GJ1zVh233Q^$kq^`*%;&;@1x_uB{%D#|!q6UC zdz7s3qvetbo6Na7fGkP4n?5Z3uqpwo!3Sw+t;HkN#n=ZY9mxF=4nP*PcKz~IatdRQ z!9Linyqj0-;v|*&wz%r{X%Ya4El)6aF9yr)K!63KNeJY;pod)oz6VZWVDM#;h0{q6FhG<*$K7vJgtYM@rA0~{)um8L z|B?dl7sQj?dyureeQfXT|DbkUzyFu{{pW&`43dqg{*fl7j5(-jK z--H;h6HJC2x=^7|9cCyK7pjHm-(MXhV4#Uo5bz-eRI%vaatg`l--sPdW@Av@?5Ktl z)cM!~0R-MqnT(?JqN9lOIiX00hxAfLfcAxPo|J7gaAAuBFwi8H2Q7er09J@)KmiQU Q0Op!(w&~`Z6GQ+2J93*t9RL6T literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_10200_64px.gif b/glyphs/stax_chain_10200_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..87d0da7320abded673928c16a8d7a9f208904ec1 GIT binary patch literal 734 zcmV<40wMiJNk%w1VL$*t0J8u9udlCgaBxsiP(VOH5D*YxU|=vXFd!fxfPjGA-QDl+ z@4vslkdTm{pPv8#0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j-;h5 zOko^O>l}lCEJ|rh3NsLH@4JIW;ucyIc)w(_FeGjg17+&~8yt{Irt_jeU|ocQux3d# z3alSuOGy}fgunu1{2iLk#+QH~ixLHJ4NeF?19&BXK5I6GU<_;zdOeIIj#G$R327~r zAPqeRnQU%7gCS8a0g)D$4g(?zZ!VsZt_FS}vXrb3x49gE6T7swp?+E$fd#{}om;;X zfv_40F3dR24z-rY(k^ouf!EEvCD9V&E!Y>G^bZSuK)R5M zTm@p!KKx5(h|7;AXUg^CKu?SWcVO-X3^joTJA~W+D0*XfV1hOW`zE+@0B@s%kJ`9V zs0dC%03QP>2*4?UK@XVnD$sN>(C1GJ1zVh233Q^$kq^`*%;&;@1x_uB{%D#|!q6UC zdz7s3qvetbo6Na7fGkP4n?5Z3uqpwo!3Sw+t;HkN#n=ZY9mxF=4nP*PcKz~IatdRQ z!9Linyqj0-;v|*&wz%r{X%Ya4El)6aF9yr)K!63KNeJY;pod)oz6VZWVDM#;h0{q6FhG<*$K7vJgtYM@rA0~{)um8L z|B?dl7sQj?dyureeQfXT|DbkUzyFu{{pW&`43dqg{*fl7j5(-jK z--H;h6HJC2x=^7|9cCyK7pjHm-(MXhV4#Uo5bz-eRI%vaatg`l--sPdW@Av@?5Ktl z)cM!~0R-MqnT(?JqN9lOIiX00hxAfLfcAxPo|J7gaAAuBFwi8H2Q7er09J@)KmiQU Q0Op!(w&~`Z6GQ+2J93*t9RL6T literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_106_64px.gif b/glyphs/stax_chain_106_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3a1c0daf07346244230e8a6239890a230159f67 GIT binary patch literal 444 zcmV;t0Ym;rNk%w1VL$*t0J8u9At51faBxsiP=J7dU|?XszrWw#-|z455D*YRKtQjr zub`lykdTni&(8n=0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j$~<` zXsWJk3o=72&vb3ycs?u^(%zty+hT4B^U!5;O-ycWeY0 zHVcA!&2GEj@OYcys@w1QynfGj847@bf`f#GhJ;xoRAgLABTS4{UnK@&kxyqP1D8$% zC@s;jK6p+k-+kU^d!n?h164MPZ-AO=LfDgi?YB3nX}EMY?hAg8#( zD+@!p9MEwezi96q>si$Msb8wS`w(k{fw9LPb+cg#Z08Nktd;87asKXiP!{lh>l zT%U13%2`0ytd9hEKmu5R_(L8adO_?-z(;P~o?Ag_j7{+8z?(w}BmoxWcaj3aALT&7 zYFR;`g8(3bSfp9WiN}^XiIgPR(HShncMz mRwemot-Me`6>fIY60suP;zPfS% literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_1088_64px.gif b/glyphs/stax_chain_1088_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..933d35dd1b9b931d1ae6cc3ffb902054a9aa6b64 GIT binary patch literal 720 zcmV;>0x$hXNk%w1VL$*t0J8u9U|?WSP*8Aia6mvn5D*YBFfbq>Al%&CzrVll@9%(s zfRK=oprD|yude_A0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j--_! z3s4wN>lj0zAW3OU$ubab@4ExW;TA#wc)w&4FeGjc1Eo~TbY2pQsaC46QVxZ!IB94) z8OX8PMOZkq>v*qggUjy@`pAyI>p=^51_1+Mcnl#2X<`NnW)cSt3<>~IVg!#IENTKC z2@IA~1vMRfS_Ft8rb&Mp2V(>RnI8hDvlakjw;u^x15aZBM4?g$8o9o^AP8H+7_V9e z##RBRq!tX(${Z&Zidt?L#7Wb8u@==+zb5M28elCAxYicTN(Lndn-13#|c$oK^VuBOHZvNjiBzLn>PfOc%aQQRq(!J`Yjk z_((yN2Wa?eIUuP)r^*UbT6VC9Z@>U|6ZA>3uu;P`XayEXjD$d$(xpH>9@E3aKmh~- z(n!4UQVGf_1Sf=njwTk(wBR<$(F-irmA%N*LLe#YC?IQk)`2lFMgs_-!A))t zp%nhwMAxE|0D~U}v#KWsvxL6^^o`K`quhi9j+5|2?O*@^L?{3NxXgjHkA5A+n0}B2 z#sax%E6D5-xPoLYka2{OE6oG~29p2`@8S7$>Li&E5HK`Io&{)Xl-X8N;L+<25XHc) zu-7Ca(H*WUamP^Ic@E&!4W22_$Ls3VVbBBoC$Sl;T6{nH+#Zf=V37!GO^iFr5}AcG$-nEqd_Vix^gy&x$lUP@WePpoj+n z3gG6&0ps0q7mpbgc?kf!A^9CBY7j8M0zx{O!3hcwl9E>dEWntRV1_B?m}Gho0RTJJ C5hHd0 literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_10_64px.gif b/glyphs/stax_chain_10_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebd55a1e64a1b60c617733f1a697df49efeaaec4 GIT binary patch literal 654 zcmV;90&)FENk%w1VL$*t0J8u9BqSt2KtOPCa8OWCU|?Vn5D?$r-@m`V@9*z`fPj#Y zkk8N0prD|yudo0A{{R30A^8LV00000EC2ui06+jh000F4(8)=wy*TU5yZ>M)j--Vg z3IPC5`vAd^97t(Ph!PZT@4Eqp;TAd&c)w(lFeGja0i{&RbY2jNsaBe>QVguE_y=e@ z8OX8PRZuvy>v*qggUjy^`pAyI>p=>Af)5NK25EzG1!f&#iFg1t9ej^|9R`(yiyQ=* zg8@&Ti3b{;qJjh&n5TjTk`@eN0SYuYMvguJ4F|lvybTFaQf?Q*QUIhF2Btm(9AHYI zCR$}20zbqX2)Jyo69-e(90-UH$sFKG=M$7Zg%k=b0DlhGJrw~fFbfn2O4$0>1osCn1)Lh~E}YSfB)e1#Uh6*4Yb5flq^y?kHF!V?j!Rhd#Us zbYW0}u{JQ1w2Y=OR|Q8ezZe*5p}~}$Nia%C*TdNae+e&vyvI<<$%EJ^702EEMdq8&$-wK?Q1gUAD zfq>Bke0`P^yWeP5Y8X}Ui+qhkug&i$x8ORumglODTmLcr!tCunx~>HazVL@b<$sj^ zurhrMfFHg`7w!E7(@U7J8}*Uz5oCK literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_1101_64px.gif b/glyphs/stax_chain_1101_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..662cab037dde9544521f41d3404f28ddb6aeb5b7 GIT binary patch literal 543 zcmV+)0^t2eNk%w1VL$*t0J8u9A|fJVV`ETIP(VOHzrVkLfPmlM-|z455D*ZMkdU9B zpMQUUudlDq&(8n=0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j$~<` zXsWJkc_d0J9|ht#KrE*UaQ`^Nu0$9BkB)$F_&EfSP)C8uq1mF)92LXxVZVUo_EG#g z241X^>NEowlEpQOm=4oW#Nt3PJih@u1b|`{26#sZf>8qm96eEsM_L~XP?A87Aq7a7 zKbjz%MgS zoC9+k*7=+8WlshLIt(JjU;v;u3XEuJkSGCS1{z{BX&TX zbmdE-J&j0W7K=A5fW?s$bBdUm?FRyZ8H9!)S~LJ34N7J5%r>Awhp0RG+00V%B@mq+ zPCm$oL{A8;VdG6OAfVS%5NJDyrJz7S0IMV7a+te9Z$h;!pn%-~iC>E-ls5h>w<8>o zFcjTE=~_ZE6kigofMHVOOP!9#jyR=477KvIK<M)j+!wf zPO7eK3ls(k5^Zg}hs@D;e*+9%<^b>+Yl)oD(l|O<0OfMRds+dA=|o`dIaVZir~ zmpg6u3IY`4Bho;HH2~=85#?TjWf(JR+^A8`hGM>Lgb+y3E@TKA+f4d%;85jA&#CG2&SkAbmol#MUCEQ2~?;Gq)Bi3D5=w_iXcg?rihW%2iKxn q9ef3eoH0u%rOz-7y~uip_70028}hs3P_ literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_196_64px.gif b/glyphs/stax_chain_196_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..5368f8a438f1f771b127061fce082f4ee094d5ad GIT binary patch literal 271 zcmV+q0r37uNk%w1VL$*t0FeLy0RaL2{{8>}0RR90A^8LV00000EC2ui06+jh0008u zoR6u??GK}zwA!15-n?_{g`Ogo8fc1S8lr5szTYLoS-rV>KC~LC%qNy+T2#3trR!rYQKlc`hBW@_XGu421hs{ zc$g-qD3RERm42HZu*o^b_qpIHipN+wM~7-airQNGnh-EM3u@w5Vw+nS z%6b}!W~%D=D+#P>OdRaHe9Xo?9ATU+UHq$zd|lm4eQDi{{XEc3`5o=et&N@yzRiAK Vp56`tP;Y;af4{oV-;Y`V06TlRe=-07 literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_2222_64px.gif b/glyphs/stax_chain_2222_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..882dacd56d5f7cfbe54d47aa714652e3c9b0a021 GIT binary patch literal 470 zcmV;{0V)1RNk%w1VL$*t0J8u9U|?Vn5D@S0@893w%F4=caBv_XAV5GskB^U~rKK=1 zFi=oXe}8{~fPer10RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j+tYg zC}|A_>Y9c3rYg0}s3FL>Q%{YaDKPj5e-DDtga93DtYysE`yH0L(32Eg7PVE9a@iDZ zLs21sbOtG~yHVTI6@KMmP-5vQv-2KlJ!>^{8*f5cg@7D&J$EXG7<*($50Wb_YL=Ib z8Jax?kc&7S1$?8VGaQsc44e{}5(5ECgs`#?pg5wiv7QvCUcSGj7zli?#GS?~wVTV# zs}=&gGriG!?#AFFT6e`ZbgBJ!0DR}W)hE_d;6#mH7kPk#lBqdPfWpO0K3L1NG zbcs;|NE{;Z)YRbcMSzo$US3#vt))(n9b)3R^=IdXG4)i*6VcPf&!A2@TuEfqh|mmz zmNrES0&2*kQ%NvbaurNg4_hm`C5y(|iz!~;dN7NVie3-&a1hB$cSKy4JpOv{Cj>9N M$B-jS1`z=OJG*?$p8x;= literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_245022926_64px.gif b/glyphs/stax_chain_245022926_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..e79f76f7ecaff85371499e158d72d2bce3d4b3ae GIT binary patch literal 587 zcmV-R0<`@{Nk%w1VL$*t0J8u9P*6~QettkeKoAfRU|?V%ARsU>Fo1x7-rnA!p`q{Z z@4vslkdTm{pP&E#{{R30A^8LV00000EC2ui06+jh000F4(8)=wy*TU5yZ>M)j-;h5 z3}F;c`xF9jEJ|rh3L^||@4JEo;ucyEc)w(lFeGje0;N>SbY2vPsaAThQV@o%I9X^q z6UedJHDEZi>v*qggUjy^`pAyI>p={Cf)5EH2x)_I17;m8iG2n&9ej^|9SD_!iyQ=* zg91-t1)Wj_2dAj1sE$($8l+lX0aP8Zv>2FTbhAsfTLY374P$z|J_Np7ZWmFy6vi&d zoMNCRYJU#U57Ha9Qot4q*A~#+uVbzilvCIe#^xE`Qp*$o;}^W}81hQ`&CVER>AS!$ zi2)0&wzPXT&_cl<1uU#t_$8SbiT7?i{DE-{JsaBirgRijh)75&2-TF_uoA;MB@rux z8PhU@0E!Y`CaFeYqmP;xqTtl|1Av7HRVg{uX!dDKzEfOL!53TV?#080o%R+37S=%LG~g3lIj$10%%wxI;5W%CYp0JiVh zEu#oXo=jP?764j*7@ly*Qy<3{=z9Kvvx0(|qsPSb&^h%l&>Duh*7EVg$=NMRZ@BGR zHwWIHeRp7x+0%dqUJxYoWB@iu&jSvK_2K}*-!TH5C%>*_0D-I2GazUX_nQC))5C8# ZaR7jTgar%`U_e8?{rmXy>n{-j06R7F{Zs$| literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_245022934_64px.gif b/glyphs/stax_chain_245022934_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..e79f76f7ecaff85371499e158d72d2bce3d4b3ae GIT binary patch literal 587 zcmV-R0<`@{Nk%w1VL$*t0J8u9P*6~QettkeKoAfRU|?V%ARsU>Fo1x7-rnA!p`q{Z z@4vslkdTm{pP&E#{{R30A^8LV00000EC2ui06+jh000F4(8)=wy*TU5yZ>M)j-;h5 z3}F;c`xF9jEJ|rh3L^||@4JEo;ucyEc)w(lFeGje0;N>SbY2vPsaAThQV@o%I9X^q z6UedJHDEZi>v*qggUjy^`pAyI>p={Cf)5EH2x)_I17;m8iG2n&9ej^|9SD_!iyQ=* zg91-t1)Wj_2dAj1sE$($8l+lX0aP8Zv>2FTbhAsfTLY374P$z|J_Np7ZWmFy6vi&d zoMNCRYJU#U57Ha9Qot4q*A~#+uVbzilvCIe#^xE`Qp*$o;}^W}81hQ`&CVER>AS!$ zi2)0&wzPXT&_cl<1uU#t_$8SbiT7?i{DE-{JsaBirgRijh)75&2-TF_uoA;MB@rux z8PhU@0E!Y`CaFeYqmP;xqTtl|1Av7HRVg{uX!dDKzEfOL!53TV?#080o%R+37S=%LG~g3lIj$10%%wxI;5W%CYp0JiVh zEu#oXo=jP?764j*7@ly*Qy<3{=z9Kvvx0(|qsPSb&^h%l&>Duh*7EVg$=NMRZ@BGR zHwWIHeRp7x+0%dqUJxYoWB@iu&jSvK_2K}*-!TH5C%>*_0D-I2GazUX_nQC))5C8# ZaR7jTgar%`U_e8?{rmXy>n{-j06R7F{Zs$| literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_250_64px.gif b/glyphs/stax_chain_250_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bd472407222b85ab2b8e35269af6b4969b2d648 GIT binary patch literal 661 zcmV;G0&4w7Nk%w1VL$*t0J8u9At51eZ*Q-!uMiLrP*70a-Q8edV86e=@9*!RprD_h zpOBD{KtMo%fPer10RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j-*x? zgEJUK>2jwd&kpV|M~7 zFO&{MQaUn-2Qr^CPcKMAQj`N)N+kMR-16qDn zKnYD%6pX#^F!_Q41`G%+;FDpsht@Z2cfkEZ zHwWG>d~X0=LbwLvB#dW3K0^7F&S659wyQ6U^9cX|w4ekay5_neQV4j^Nt~3u<6Y2| zP;hadaNrO3n4?(T2*;yE6iA_cLOP!NL}Q*pCNnJ1#b=^ukWoF}B_;$&5?xh@Ljy=? v1Of&QG#45b)KY~>4R(On0UPoa;s|xnAjgT0prAqkMzJX4j5O9bV*~&@K&=in literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_25_64px.gif b/glyphs/stax_chain_25_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc4db196b96a2e94f267273356519e6583f53621 GIT binary patch literal 610 zcmV-o0-gOwNk%w1VL$*t0J8u9-QC@bi;HP#X|J!ZN=ix$3=DdDdYqh`78VvRE-qPF zS;E4?J3BieAt3+&0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)jwA;p z1W>LYAULq2sBC=&MI0l6?LUKrZs=o{)N+|yC2 z0Xs8dxfD-xrHI=4arH);=veJ zpfnjLV@D83{ z3Vo7dpmKG>3mplCshO2{-{Wxi3Sx-ktMd>-8W!vX0{3Z#)>M)j+eol zXsWJjA_xURZYFErEIea1?)!qkuG0G%ZHD2bcx?^C;-9#APO^eoagFuFdH-#g3C;$itl9QB`l?VVSjDI)| z2MwU1qNAjv2br58Vh#(XuCJsE42dTSpRl;N3qhPI0J*@h3l0i)9!vI0~lZuGv#cXJAcTm7Jz~T1}-aE&APSg*RVrG0029Ww&no< literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_321_64px.gif b/glyphs/stax_chain_321_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..2805c9ddc22af9017daf8a0f41dc8da3f2576db4 GIT binary patch literal 835 zcmV-J1HAl4Nk%w1VL$*t0J8u9aBy&6UtdsAP(VOH5D*X`ARsU>Fo1x7!NI}r@9&?V zpRcd4kdTny-`@ZL0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j$~<` z$f2%m+cM{v5Ke91IF7{Pk^esfFEj%hZHnP#ckvy8g@&@yC@?FD!td zV>x#tag-99H$qf72aZ63Ba=2#ur&t=ot`*v6Q4hGA&)kz4+FVbkq@&DT@MRSejTPZ z1%t$t38qY=HK-EWKgS()ILi$H0sywv4sT93oyiC}3m?4OR0<60H37i;j^2%;)tJ^H z9*$cNisWigZ(XN$1EnYo)&by!W;hs#yAf(5MN6FjHq45GLEjq#xhOQ$H9=n{4c?Yn zNYJ2Wg9ORudC4L3fx$i*Al4W_w5ZXe12FlU;Eg2(mjo4Und)vrGK3NuD0LvLLPM%X zx<0UoK_~&NF2VkY`ar0I1`1Xnz$wu{fdXy7?Nob&oT`mc;ylv;i0@jJ#nj=mp?3-g zk2Ms)LZEMu;|?g@jCH4N@a2*?gk-MK&+}&sKkcMOP`HNW4POnvl+aKRuLBqzRN|0Y z_6>4d0Vq5>h9pg!H7$7aUBi_Gw>NEuxtWkGV& zW>IqkKc;lyUP~at_ko4|xnzKWyYZ*f1Lxr|53^tKxVqi{okS)F8=W(n$$M92aMFz}k1I0*2b8-MM)j$~<` zXv!T-8oW-O4*-V?J>s9y8QNRRXF{;c5(s`6xLmSR;L?;(WYOG0;NOlz6zfg`5zyJRL1}H)S1OPiO!v%Bz literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_39797_64px.gif b/glyphs/stax_chain_39797_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..21a2d302ac54f64c920c8ed6121a4068c53aa40c GIT binary patch literal 421 zcmV;W0b2e?Nk%w1VL$*t0J8u9e}8{~fPl}>&%eLF@9*!BkdTj$k6&M3pP!#lP*C6B z-yk3$00030|Nj6000000A^8LV00000EC2ui06+jh000F4u*pfQy*TU5yZ>M)jwGin zi&C!O$uKD^YwioHb3WDft>?U+@3#sHheVO_h)jBx%%+pJh(=>ms@00kTA*87*DC>s z#W=G0j8<3K=P_~pS_}m5tsI!=;^)okyR%R=&bQ!Lz%y6;Pkd z6vk1=Wy5um*g^uPq8D@v7TY}o76i_}(#h_MX7Tgty4Otj>w(Yy$uZ(@ zpDcm)@)WH1VV;YHdSYo|_zWDv5&7ChERm7k#v&I|EgB?|uOr5g{3z;}WfEi@0RvDb z0R$)5BRGD@q{OLAq7#~)d`rcM( Pg@FxAwyfD45dZ)?sP@71 literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_40_64px.gif b/glyphs/stax_chain_40_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..151d58d07306c990ea5cba1acad482653034e1d2 GIT binary patch literal 880 zcmV-$1CRViNk%w1VL$*t0J8u9W@TktSy|1@%!`SMt*fg^L`3H0M)j-ldyDumB(!ZXton!E7>J!)SDHL~aa&fR^WMLZ!lnxIwjE za)2$j`vVuk;|9S@!EUv?o)g-N!s7=HRaOFNczJ7GQbTcL2VwxykGCSDX}Wj=0wMwdw4SxK zp&ks!$1qw&HUtH;(X)dcD=XN!y(IP(P4$} zKs$p58-&9k?;n7LRv0*_)vh9deh$akGh?8Ef{GviKQ7DAaNfv)6bKlsxRRd*1J>rb zL^%OK$eRZ?J}8v&B+Ur|K;E22Axq2{KQGw4`7ywmYu9`xl|X>$$D9@lWhY*(7-|| zEnR;ySR7b^<2-lC|CQ~{@9GoH;v zPv6_QW0Nk*#zEYv1A^zqo07JJvuGVCKYdmJ8yBwWFqnQ?EQ1|ikb_Y#-@>9dN9B`wUjC70)!TtXPyWkx?_NB_W1!faFR); zp@b%ID1ai0xMzYPr1OcOl2Tgfr6MvYppgeuDZ&8J3@YlOmL@7Iqb~~d6BdL{I;o+S z#)@cwr6MroX1MP9YNDCSnkZkT)iH`4sJ#-J=xGZWr)p9ssNl?~fy~Kbv*3m+?zk94 G0027~O?)2! literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_4201_64px.gif b/glyphs/stax_chain_4201_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..f91bcb14068c99f15aeb911b3ef5650613cc41f6 GIT binary patch literal 493 zcmVM)j%1c7 zK;bwIu$1t&5Nll*Z>&qmVE;G7u5|DLkE_682uc``(3+CTQP84T92J95VZSTwmS+T; z9e^b>Avn9GYMAr-eiIC^g}2Ukh(Setf;Vv-2YZ8p1%(-hiI0Aa7Xgrv0~-gGl|mVm zbprwhqNAh+Wo`l*4Rs723Uvho(du(CXM&oI07{T>x`w zhbJuee*7!3fLy;U31ZYclJEyL64nG-I76VFAvYD8e-spP@LD`K3q6bj`7oP^iQY2o z`*N|vD`FW|y$QErrJDvC+I%WSR6sgo8s2G2ORD j#T>eT^$S@8;2#8dR{pR6fX)Ig6mK3)y0qyX5dZ)?s}ao% literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_42161_64px.gif b/glyphs/stax_chain_42161_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..8be1020d9063892b93fcfd2e5b67cc2c279e8747 GIT binary patch literal 798 zcmV+(1L6EfNk%w1VL$*t0J8u9fPjGS@9%JMa6mvnBO@bEPfrjK5Wl~_U|?X~-QAy` zpP-M)j^uU> zhBF*x+a-e|&q(6lRRE-O?*KNOi@}=>Vm-n_NILll4T*yAj50kip8*i40I0p%Rii7) z1l>yl;d2OrV+zr?;$)M{_~QVc5m+BnRabX2TWKL*K4LC9ZD=iPk8mP$J#{#RGD;$R zPk>i~Nmd;IT3mV(41F>H9SS~>8375kwG_6sh-z#-3>|>9ngIz7)Jf3z^PS6`FfXL@_<)`adp=lJ(20Sk1*Z;JbW9R1jM0%V zOJ1-Ru;Gk6>|_`?IDzT~s}#(h8LCWzDIXNC9<7?RLfWSs+eDM_k510LZ~IQzYQ*kL z3L0myZHm|e+^!BKkgXv1M@z6s#ZrK1W2x5%0$2nn7I13i3YQtf#Hv*VvXpv3^A(NK zhZWZ0*6w+f+d(`Fn{DEy>wsc0;S}6jR&07quPIn9 z%vE{j2du_jkBHv;bkUs^Xl^4>i>fwxQDz^@Y%&bSTzNu0u-y!*6%&#K>~Nsb0ODQJ zTMvL#H`fDyWwnP!t;MtmRy4J@Uk}1*=teT{ZLnY)4ips>Q;rcNK{4Wd&;Ue+*bp8C z>@`LnjMqr@3XiP-WWjv>wP8SjAtb;ekv3K!lMh@>sTL|ONJ3>j7OeJ!gYLB836%zR zN2D-gi1L_HL_V3yVlM)AL6BQcriYh);6&ICbd))#1ZVn@N1-yXIVc8hCVHKmi@s2& cAzVg^1y&SVI)W1hD5~kFpoS_c2oV4PJ4qN-v;Y7A literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_42220_64px.gif b/glyphs/stax_chain_42220_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b1370cec119d3c0a57e3dd023d04cce05194a34 GIT binary patch literal 836 zcmV-K1H1f3Nk%w1VL$*t0J8u9p`f54ARtszQM)j$~&j z10o1aD-?rrlys#OY^(2jkr*{nBF8K81b|u4qi7hPMnPi989=Yb1(0en6tLi4Td0yMN>6jJd-t+ zI|7s-2|59#0SF5V0|W}89F02wGz|d`wzdKdy1NYv35pvAL@ury2L-pc0ldt*Ngty; z1R)0tw8^;5+Rq)DJ)*nV4$Iow2nrnpMa2{b1G@s^x#i{4!NUxg8r8fE*a52)2z0Zc z0KEpXHo$5zAec2?wQQAogy8@HdI>YA+d(nIJ7%^20_ezC@uD_+7!(}QKtP+w9r`pV zK%fm>#g!GcS>q9NA5CTjTt(uM;U_NyUU+_B)QlvBp*vDGL;Ap5i=M^|G6VJistXK8 zcPUxGqalbU%obcwxue0_W+*+i==k9wFG_M56u9tl7u{$&1c)%h4CMr?49vD`W>bQJ zB8}^&t>CpqWC>__DMGxLS~Ed_b>N*`Auj{28?^36bJobAr40*K2QfU2~t2v7$MrCgKQi0rd9{lgyGLW zdI5Mr0*o!C9TYV>u%8HC0M+6I2ekCWKdyx!ATJj#r2qg36kw1k$?4Ld2Tc}Mg8{wu z5(IjM)j%1c7 zK;bwIu$1t&5Nll*Z>&qmVE;G7u5|DLkE_682uc``(3+CTQP84T92J95VZSTwmS+T; z9e^b>Avn9GYMAr-eiIC^g}2Ukh(Setf;Vv-2YZ8p1%(-hiI0Aa7Xgrv0~-gGl|mVm zbprwhqNAh+Wo`l*4Rs723Uvho(du(CXM&oI07{T>x`w zhbJuee*7!3fLy;U31ZYclJEyL64nG-I76VFAvYD8e-spP@LD`K3q6bj`7oP^iQY2o z`*N|vD`FW|y$QErrJDvC+I%WSR6sgo8s2G2ORD j#T>eT^$S@8;2#8dR{pR6fX)Ig6mK3)y0qyX5dZ)?s}ao% literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_43114_64px.gif b/glyphs/stax_chain_43114_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d2c01de3a7f5cee6109b158f949f3e6bbeb6653 GIT binary patch literal 586 zcmV-Q0=4}|Nk%w1VL$*t0J8u9>gwu^jg3l5O0u%DX=!N<4GnsFdKMNIE-o%vSy>_? zB0D=f*4EZ)YHI)g{{R30A^8LV00000EC2ui06+jh000F4(8)=wy*TU5yZ>M)j-&+) zhM*iz`y9wZ3_xj1fPoZl@4JWq;}#kSc)w&)FeGjm2&GiYbY1|2saD#sQW%P@IC*F~ z1IV%3RWLZS>v)fFYsl}eE(wmu(?te-1!-~tAq<3T2Q^W51!f&Ac!mxGeF`-ld~yO5 z34MA`eGiZTiE57=0)3qoc6bP)cx4xocLN%$lNgqGtrrY^2O5oX1(_BBeU!X?ZWqOI z3mkp1CVh|?g2)rSoE+Y_7O!!%8@hPU6bpBM8p@-;6VYSC9JY807WiY#8Sta*QIKOz z0|S0|EXc`rft(8g=+r1&BM(C`AFV#EnK&lZIUnZtOl_=yP>Q<@;ad0uxJBTEFk)P0 z;3v}oJt+kzM4aLe1Ire;Dx{P$twNxdkuYM=s3lZ4F$~B3i0VM3mY@`@QsHoMj)qN2 zxXsf-mBP-N`=;cia8yY}U_W|Z7}`TFj#Dnw@j_@<=#;WMdlX1Opg~~*hzs9raiD?W z$Bz$}Z1I)?-BFm!N?4597gxNU7j|$Mx}66AFiXopn*ovPI37Rze62OV literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_44787_64px.gif b/glyphs/stax_chain_44787_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b1370cec119d3c0a57e3dd023d04cce05194a34 GIT binary patch literal 836 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 EJE1f1xBvhE literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_58008_64px.gif b/glyphs/stax_chain_58008_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..503a95f051979ee8966b6f0e899288f5609ab6d5 GIT binary patch literal 561 zcmV-10?z$MNk%w1VL$*t0J8u9^78T|BqZhK<(Zk8e}8^WO-x>1Ue3M)j%0Tn zWjYQ8puVQl3~-GBj;siFKOwnB!{F;3ax!6}2m=g|!iK`dOeK&>p`%*DVWUD6SM>aX ziDS?an~fsU9w)mkoWeQRIXJq#X9ROWdtrVUWqN}{g%)dpi9&CS5?+CHU^|izd6kbs z1d@%Moeg4shoYS=exazHG;oxa4g>+CQaov!fd&c;3k$WKXk4sVybQ>{zrl&6MRIHe z1<2IC%FBtWOsvw?)z{Yn%tEg|u?ExL-{9cmxII7)$Likf_QAt72L$u<_4fA~EU`hr zpFw~K^T9}v&fq$P;mY+8P|zVYh}Q^EsUpCDMQae=3pg{fQBy;D5J^!u(E|X21SJO? zyysve0DjM&IHQP?oq=~w3ScU-W`MH;Cqe#Fa8#&*NKE26fJuSj#bpu!@KT`Q6BlSX z4s7IUP2&V7T)7r_$B~Uu3LQmOb((f$611s27^^7a9X z!)n>yDTd@RWUf#b;l*;9tJh3m*>wJyX#$`?o$X56?BFus(hmgZfSee1h0v}2uC>ib zwBLceE9mn3IXDHdh$S1Ba60$UM)j$~&j z10o1aD-?rrlys#OY^(2jkr*{nBF8K81b|u4qi7hPMnPi989=Yb1(0en6tLi4Td0yMN>6jJd-t+ zI|7s-2|59#0SF5V0|W}89F02wGz|d`wzdKdy1NYv35pvAL@ury2L-pc0ldt*Ngty; z1R)0tw8^;5+Rq)DJ)*nV4$Iow2nrnpMa2{b1G@s^x#i{4!NUxg8r8fE*a52)2z0Zc z0KEpXHo$5zAec2?wQQAogy8@HdI>YA+d(nIJ7%^20_ezC@uD_+7!(}QKtP+w9r`pV zK%fm>#g!GcS>q9NA5CTjTt(uM;U_NyUU+_B)QlvBp*vDGL;Ap5i=M^|G6VJistXK8 zcPUxGqalbU%obcwxue0_W+*+i==k9wFG_M56u9tl7u{$&1c)%h4CMr?49vD`W>bQJ zB8}^&t>CpqWC>__DMGxLS~Ed_b>N*`Auj{28?^36bJobAr40*K2QfU2~t2v7$MrCgKQi0rd9{lgyGLW zdI5Mr0*o!C9TYV>u%8HC0M+6I2ekCWKdyx!ATJj#r2qg36kw1k$?4Ld2Tc}Mg8{wu z5(IjK%K;PfrdU|>g5D+jhFd!fx@9*!gudlzq zzt7LlprD|TkdOcX0RR90A^8LV00000EC2ui06+jh000F4@X1N5y*TU5yZ>M)j-)p@ zg&`2hP`+K@%(P=PF05Ba?K=U*Zm0Me0lA^6A~PBZ$_|4;IXRt&WYoeqR2bK5LAd<_ zD~7PsfGAVIjzv{%WVvM_08EmJ z5|%RulqHUXbBCS}pfpgVK6-elqn~L$m?EWT6t!xpt3CoFxp5Q=eZIUuWFNz@5`0(4 zVVlfOj1q=dq7}bR1+yB%GmvUo+{srBQdiUy0Ac2p=vToT;xpG)SX!#{Vc=%81vC;* zk-sp@xTp!hW8XPRG}K+VN8{E5V+8qilf+PAIZi+S3etjD!+=LM*B)e}AyUG@KF%Z@ z(vqv?185{?Sm@JE!n+zaaprWelTN-@{8X(RO0)ueUC68KE(WoYzqWt)HMi}aPHk25cEJkon&?I9u}Ci zP(Ek%+8p4wA9@&hi1|#rmcS2IzX<-_`3HhQ0$6qTgMA~+Wnf6e=|I403$jAl4g&xO ukpK;DQ6YpmVF<_ti~Mwm01Zs|Az%#v@EA}A1i*rcC&nn_j5NLw0RTJm3>+i? literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_8453_64px.gif b/glyphs/stax_chain_8453_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..43c3075fe84d09ee96d760f701aa064c405aef3b GIT binary patch literal 440 zcmV;p0Z0BvNk%w1VL$*t0J8u9P*6}25fMN@Kp-F>FfcIR-`~BxyM)j--Vc z$w3TH`wRk*7-c;niQw-1E-VFG$e`;PkB6Xe!zdn~#^myXP(ZKG#+1TfVZXhBa+v^| zdjXoTac=XpHMV=+f{)~Mx*dei(-$EOeuDvH90gv3c?2H^ii&#~1&@k_98Q#Z0viUI zk7^j0o^%S5qm>94R;Pmr7zC_?n--I?egUZ!3$}xx6RW&*t`(xeX9pIE#%+uh4bRZg z($mz{&#-L+TOp2a+aTR--;HzQ9^q#e*6Zxm*k{@m%FAZ66vgyd02aXcV37`X`7`57 zLal*ca>+x8#hx>UR{&i&2+@ckViluk=#-JiMGN?47$W1;(Z$CL{U8FwfMDLhcpf-1 zv;?9I!-5|A&|8_)AI}duZT+knEP%u%h++{qS)M)j$~<` zXsWJk>%MR-&vb3yc&?9x5*!GJFd-Nib{B>~$ZRqX3AfYGfO z0t+2s>kLSz7lO5k0I&)KgP}}fKi?$<20jTvO=%+oP6vP?1Plv)VGam9SB)Kl3v-iB z4I`2cpB@DY0*0Meqah57m=~o>shz7KvP=OQ1pv2U2mz2`2S+0Ymly^Ms8<3F#193_ z4gq{30gD!~odOEg6JSEaCInZx6Uov{+}>uC3Mj3f5(d3Z2@UM9-6@<*1H8T#Ji}pZ zmb!gNuFXOq5Dt}v_#8fvvuz-p0->B(oPu%I02TR-K2Tg35=4MXBn+gRgs22L0VEU| zY_jn~0V@nffSbt#!7C5f4kY4vg^@KOc0>^MmD2+OSuH~-T-xR*g#rT%B^alN00BOE zOc@-5NfRogG6?)Ih#-rAenYIfAkY9V(FG-8JhGcgK+PLU#{N~qAiyah2o3~5D6z5Q W$B-jSo=my2<;$2eYu*ea0suQY53z~> literal 0 HcmV?d00001 From b3d96d1b863b9b5460d47f9fb40989fa8fc9ff14 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 8 Dec 2023 17:11:22 +0100 Subject: [PATCH 095/160] Use standard app crypto helper to simplify io_seproxyhal_touch_tx_ok --- Makefile | 3 ++ src_features/signTx/ui_common_signTx.c | 48 +++++++++++--------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index a2f9b02de..119abfd1c 100644 --- a/Makefile +++ b/Makefile @@ -266,6 +266,9 @@ else APP_SOURCE_PATH += src_bagl endif +# Allow usage of function from lib_standard_app/crypto_helpers.c +APP_SOURCE_FILES += ${BOLOS_SDK}/lib_standard_app/crypto_helpers.c + ### initialize plugin SDK submodule if needed, rebuild it, and warn if a difference is noticed ifeq ($(CHAIN),ethereum) ifneq ($(shell git submodule status | grep '^[-+]'),) diff --git a/src_features/signTx/ui_common_signTx.c b/src_features/signTx/ui_common_signTx.c index e57bb2125..67db7261c 100644 --- a/src_features/signTx/ui_common_signTx.c +++ b/src_features/signTx/ui_common_signTx.c @@ -1,3 +1,4 @@ +#include "lib_standard_app/crypto_helpers.h" #include "os_io_seproxyhal.h" #include "shared_context.h" #include "utils.h" @@ -5,30 +6,21 @@ #include "handle_swap_sign_transaction.h" unsigned int io_seproxyhal_touch_tx_ok(__attribute__((unused)) const bagl_element_t *e) { - uint8_t privateKeyData[INT256_LENGTH]; - uint8_t signature[100]; - cx_ecfp_private_key_t privateKey; - uint32_t tx = 0; + uint32_t info = 0; int err; - io_seproxyhal_io_heartbeat(); - os_perso_derive_node_bip32(CX_CURVE_256K1, - tmpCtx.transactionContext.bip32.path, - tmpCtx.transactionContext.bip32.length, - privateKeyData, - NULL); - cx_ecfp_init_private_key(CX_CURVE_256K1, privateKeyData, 32, &privateKey); - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - unsigned int info = 0; - io_seproxyhal_io_heartbeat(); - cx_ecdsa_sign(&privateKey, - CX_RND_RFC6979 | CX_LAST, - CX_SHA256, - tmpCtx.transactionContext.hash, - sizeof(tmpCtx.transactionContext.hash), - signature, - sizeof(signature), - &info); - explicit_bzero(&privateKey, sizeof(privateKey)); + if (bip32_derive_ecdsa_sign_rs_hash_256(CX_CURVE_256K1, + tmpCtx.transactionContext.bip32.path, + tmpCtx.transactionContext.bip32.length, + CX_RND_RFC6979 | CX_LAST, + CX_SHA256, + tmpCtx.transactionContext.hash, + sizeof(tmpCtx.transactionContext.hash), + G_io_apdu_buffer + 1, + G_io_apdu_buffer + 1 + 32, + &info) != CX_OK) { + THROW(0x6F00); + } + if (txContext.txType == EIP1559 || txContext.txType == EIP2930) { if (info & CX_ECCINFO_PARITY_ODD) { G_io_apdu_buffer[0] = 1; @@ -57,13 +49,13 @@ unsigned int io_seproxyhal_touch_tx_ok(__attribute__((unused)) const bagl_elemen G_io_apdu_buffer[0] += 2; } } - format_signature_out(signature); - tx = 65; - G_io_apdu_buffer[tx++] = 0x90; - G_io_apdu_buffer[tx++] = 0x00; + + // Write status code at parity_byte + r + s + G_io_apdu_buffer[1 + 64] = 0x90; + G_io_apdu_buffer[1 + 64 + 1] = 0x00; // Send back the response, do not restart the event loop - err = io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, tx); + err = io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 1 + 64 + 2); if (G_called_from_swap) { PRINTF("G_called_from_swap\n"); From c35398240516da6268c540598e4eb15e31be2f1c Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 8 Dec 2023 17:26:44 +0100 Subject: [PATCH 096/160] During signature, move parsing and swap fields checking away from main flow --- src_features/signTx/logic_signTx.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index 08f031c7d..b5bb87552 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -319,13 +319,14 @@ static int strcasecmp_workaround(const char *str1, const char *str2) { return 0; } -void finalizeParsing(bool direct) { +__attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool *use_standard_UI) { char displayBuffer[50]; uint8_t decimals = WEI_TO_ETHER; uint64_t chain_id = get_tx_chain_id(); const char *ticker = get_displayable_ticker(&chain_id); ethPluginFinalize_t pluginFinalize; - bool use_standard_UI = true; + + *use_standard_UI = true; // Verify the chain if (chainConfig->chainId != ETHEREUM_MAINNET_CHAINID) { @@ -396,7 +397,7 @@ void finalizeParsing(bool direct) { switch (pluginFinalize.uiType) { case ETH_UI_TYPE_GENERIC: // Use the dedicated ETH plugin UI - use_standard_UI = false; + *use_standard_UI = false; tmpContent.txContent.dataPresent = false; // Add the number of screens + the number of additional screens to get the total // number of screens needed. @@ -405,7 +406,7 @@ void finalizeParsing(bool direct) { break; case ETH_UI_TYPE_AMOUNT_ADDRESS: // Use the standard ETH UI as this plugin uses the amount/address UI - use_standard_UI = true; + *use_standard_UI = true; tmpContent.txContent.dataPresent = false; if ((pluginFinalize.amount == NULL) || (pluginFinalize.address == NULL)) { PRINTF("Incorrect amount/address set by plugin\n"); @@ -443,7 +444,7 @@ void finalizeParsing(bool direct) { } // User has just validated a swap but ETH received apdus about a non standard plugin / contract - if (G_called_from_swap && !use_standard_UI) { + if (G_called_from_swap && !*use_standard_UI) { PRINTF("ERR_SILENT_MODE_CHECK_FAILED, G_called_from_swap\n"); THROW(ERR_SILENT_MODE_CHECK_FAILED); } @@ -457,7 +458,7 @@ void finalizeParsing(bool direct) { } // Prepare destination address and amount to display - if (use_standard_UI) { + if (*use_standard_UI) { // Format the address in a temporary buffer, if in swap case compare it with validated // address, else commit it address_to_string(tmpContent.txContent.destination, @@ -532,11 +533,14 @@ void finalizeParsing(bool direct) { // Prepare network field get_network_as_string(strings.common.network_name, sizeof(strings.common.network_name)); PRINTF("Network: %s\n", strings.common.network_name); +} +void finalizeParsing(bool direct) { + bool use_standard_UI; bool no_consent_check; - - // If called from swap, the user as already validated a standard transaction - // We have already checked the fields of this transaction above + finalize_parsing_helper(direct, &use_standard_UI); + // If called from swap, the user has already validated a standard transaction + // And we have already checked the fields of this transaction above no_consent_check = G_called_from_swap && use_standard_UI; #ifdef NO_CONSENT From 611587832f5817229f78ec82391f93e4292de4c7 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 18 Dec 2023 17:26:53 +0100 Subject: [PATCH 097/160] Fix comparison for token ticker length being off by one --- .../provideErc20TokenInformation/cmd_provideTokenInfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c index 496c54ada..ff55f7d2d 100644 --- a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c +++ b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c @@ -127,7 +127,7 @@ void handleProvideErc20TokenInformation(uint8_t p1, } tickerLength = workBuffer[offset++]; dataLength--; - if ((tickerLength + 1) >= sizeof(token->ticker)) { + if ((tickerLength + 1) > sizeof(token->ticker)) { THROW(0x6A80); } if (dataLength < tickerLength + 20 + 4 + 4) { From 3f28abbb3e8771f90815e0c7789897a54c9ea936 Mon Sep 17 00:00:00 2001 From: vbouzon Date: Tue, 2 Jan 2024 16:27:24 +0100 Subject: [PATCH 098/160] Update installation section of client readme --- client/README.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/client/README.md b/client/README.md index 13c5a4c5f..00be10a05 100644 --- a/client/README.md +++ b/client/README.md @@ -3,23 +3,6 @@ This package allows to communicate with the Ledger Ethereum application, either on a real device, or emulated on Speculos. -## Installation - -This package is deployed: - -- on `pypi.org` for the stable version. This version will work with the - application available on the `master` branch. - - ```bash - pip install ledger_app_clients.ethereum - ``` -- on `test.pypi.org` for the rolling release. This version will work with the - application available on the `develop` branch. - - ```bash - pip install --extra-index-url https://test.pypi.org/simple/ ledger_app_clients.ethereum - ``` - ### Installation from sources You can install the client from this repo: From 9475112d45871ae1ac2d8b39f8f2103a6fb8f6d7 Mon Sep 17 00:00:00 2001 From: Victor Forgeoux <100780559+vforgeoux-ledger@users.noreply.github.com> Date: Fri, 5 Jan 2024 11:52:00 +0100 Subject: [PATCH 099/160] Merge network addition PRs (#516) * add Bitcichain network (44'/60') * Rename Astar EVM (custom) * Remove unnecessary nano icons for Bitcichain * Add Core network (44'/60') * Udpate Scroll network ticker and add Stax icons (44'/60') * Add Bitrock network (44'/60') * Add Numbers network (44'/60') * Add Linea network (44'/60') * rename Bitrock stax glyph file * resolves too many colors error on Bitrock Stax glyph --- glyphs/stax_chain_10507_64px.gif | Bin 0 -> 718 bytes glyphs/stax_chain_1116_64px.gif | Bin 0 -> 706 bytes glyphs/stax_chain_1907_64px.gif | Bin 0 -> 725 bytes glyphs/stax_chain_534351_64px.gif | Bin 0 -> 1736 bytes glyphs/stax_chain_534352_64px.gif | Bin 701 -> 1736 bytes glyphs/stax_chain_534353_64px.gif | Bin 701 -> 1736 bytes glyphs/stax_chain_59144_64px.gif | Bin 0 -> 414 bytes glyphs/stax_chain_7171_64px.gif | Bin 0 -> 763 bytes makefile_conf/chain/astar.mk | 2 +- src_common/network.c | 11 ++++++++--- 10 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 glyphs/stax_chain_10507_64px.gif create mode 100644 glyphs/stax_chain_1116_64px.gif create mode 100644 glyphs/stax_chain_1907_64px.gif create mode 100644 glyphs/stax_chain_534351_64px.gif create mode 100644 glyphs/stax_chain_59144_64px.gif create mode 100644 glyphs/stax_chain_7171_64px.gif diff --git a/glyphs/stax_chain_10507_64px.gif b/glyphs/stax_chain_10507_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..287008fb9bcfd9b5223c73650203cc877327be1a GIT binary patch literal 718 zcmV;<0x|tZNk%w1VL$*t0P_w25D*&~86+twGdny)N=i~&TViu`dVG9>j*gSDv9-Rw z!O_vv-{0W;{QUp_{{R30A^8LV^#K3?EC2ui06+jh000F4(8)=wy*TU5yZ>M)j$~<` zXnHct;w~(srb~htMM3O)VIT?EEL1xb1Ob3@$qWbvzr~QlKpdIa>{38LNT-*?RZGqW zx-zh2aS)W>T0tS97AN6&>;N%M5b}Un0tjg+2?K$NTLxbyhl-E@0SAR6evy%bB?|?Z zm;!Vo2X~&31dSgFZl#d{1|bZcte>GCs#;J6y1O{5S_HhiMx;xws2Z_k29**v2#8t- z$IZS>ptjXauN8g;HPBdmVcANP9tUOH6PE=tk4@qhx4+XC3xCQKmjLa}_~r4qkyCPQ z!#pkO_VFvEFhD?k1C>0yfPfg5Z3_M^)Q8U@hJ#uE`e`umW}Cu|6z)lyNUh9(dJ~eR zTldeKJpvxbl_`ipW;0cu@fpfQU&fBaz9_!x1e29-0p5fB=t-qCPZ zn_dj#C4&_O@~Q$Tx<;%v3@*%aQEF5zTL(-_!Zm=FViE#MzZSde6Cnl#TIuSzx?dI{``0l3yB^Rfeih_)RgZTwvMa)hccV9i~e$p9OSRtvgY0W+343DT># z5fKWI_37Jau^v{769M@1BYAUQKYoh@k#`w;fV1R5-v)&hmWR+;Rp+4NTD1elHkXOnUtl*0tW0?iX3#+Q6r2H64l}i z3?y&>0cthj-j6d1S-=1`N^&1CURM)j$~<` z8*-p*S`b6Aw)A8W0ssUtQnLr#E~{!V?7n7IsmW~vQIG~25yjo6^T+zJG2!qSj$)fhaLr) zQ>j9geUFx(##sOaAO!+X*?!x|HfD932|?jS-XGxZ>V(ef5_vkg6VdM9PTj+VtkUpj zQ6mZbu)KrzZ(#ysl^9v6M&MvVfbbgPaieeIxQh<|Ie_%z=2K(4A048l9??gVm-n zvr5`ZH3QdBL&N%vO13LOU}y!XMe4yoyGk{0UN{?fF5a1cf4ViRr*F};0&<}zS@r&(;5F_2(@2tZ6efnMn~rzk(xx|F(VFsvEc9>gBFy43yiWI(hkBJ+)vLT2zk^>i7 o&GiUIHKC*-Bs4KjXU~yr%#jY01-^hHlvGw}<&{`wc}D~QJMb_v?f?J) literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_1907_64px.gif b/glyphs/stax_chain_1907_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..543f164ae78f1f84d819f02bfa339eb0792187d9 GIT binary patch literal 725 zcmV;`0xJDSNk%w1VL$*t0P_z30RaIX9~~_&EkdTq1qoS>@ zt-rs*($dl0-roNH{{R2~A^8LV00000EC2ui06+jh000F3@X1N5y*TU5yZ>M)j+JAc zXsWJk>z>vt&omp?c;4Q#QW%I|qLE?*4M>ARhvK~$1AtT-SfmisX@SUeI8zOUB9SNr zvQh$h9YqhU-7ks}sMpcc`yCG$6c7wLawiQ3e20j60tJCJgM1-%nE2+4hc z4b#*P3=9R51Y9<^Gf-IsFNM%(0^BRH)&v6V&;#f!k(BW%>a2VNGx&JtF6s&pZIiK} z+!TL1ys=0iu$~HFd=Pf?^@1U#MlP})TJ}%j3XA>`F|tsw>Cmf$6kUMCBTi*WJ_9?Z zY_Sr}r!iu3CO|;IV4jmGo4p8#$d1uHi9pFvS5p_BPYzW8^y!p}(xo0%@T>Zi0MLm- zT@dA(C?;45GRBf^7!>VLs%xj1wU;$T(>%lq=ry4C$AMzVBpEpSK*n7u@Ng;USyUv9 zx}y*!p3%TS(sYnds5KXLMT2=TG0z-Hbux{uSp+!tlG()OaGh5$K%`n~YX=a6trpwZ z_UIK0B*)fDd$l?!0+PSm&Ej)$-(fQ`n5I#RL>Y!?i;j*9+I7!is&CxxmNIB61$LGJ z0_0B+#)$%0f?j@H_Cs(v&3*iv#k07G%!Ef@VFbMdAQ}g>MPMdv9Eiq#O|;g4cn$&( z0E7|thr(fT32>Eyyj5u7BEy*=%4bLw6<+`X_@O|F{Begu7zos8Mldzj_}5biC@`HM zx1DgFg&#T)oEtC__Dd3c9S~0#Kp?=^S2?KD#g%kvh~<`9%E;xHF_IwWm}Hh|=9y?t H5CH%?p#nO( literal 0 HcmV?d00001 diff --git a/glyphs/stax_chain_534351_64px.gif b/glyphs/stax_chain_534351_64px.gif new file mode 100644 index 0000000000000000000000000000000000000000..27e944552f0803360bf29e0674c00b007069c3cd GIT binary patch literal 1736 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 Date: Wed, 10 Jan 2024 15:17:01 +0000 Subject: [PATCH 100/160] [auto] Update screenshot --- .../nanosp/domain_name_non_mainnet/00004.png | Bin 436 -> 434 bytes .../nanosp/domain_name_non_mainnet/00006.png | Bin 382 -> 381 bytes .../nanosp/domain_name_unknown_chain/00004.png | Bin 436 -> 434 bytes .../nanosp/domain_name_unknown_chain/00006.png | Bin 382 -> 381 bytes .../nanosp/domain_name_verbose_False/00003.png | Bin 436 -> 434 bytes .../nanosp/domain_name_verbose_False/00005.png | Bin 382 -> 381 bytes .../nanosp/domain_name_verbose_True/00004.png | Bin 436 -> 434 bytes .../nanosp/domain_name_verbose_True/00006.png | Bin 382 -> 381 bytes .../nanosp/domain_name_wrong_addr/00003.png | Bin 436 -> 434 bytes .../nanosp/domain_name_wrong_addr/00005.png | Bin 382 -> 381 bytes .../erc1155_safeBatchTransferFrom_1/00006.png | Bin 436 -> 434 bytes .../erc1155_safeBatchTransferFrom_1/00008.png | Bin 382 -> 381 bytes .../erc1155_safeBatchTransferFrom_137/00007.png | Bin 459 -> 460 bytes .../erc1155_safeBatchTransferFrom_137/00009.png | Bin 382 -> 381 bytes .../erc1155_safeBatchTransferFrom_5/00007.png | Bin 436 -> 434 bytes .../erc1155_safeBatchTransferFrom_5/00009.png | Bin 382 -> 381 bytes .../00007.png | Bin 436 -> 434 bytes .../00009.png | Bin 365 -> 366 bytes .../00010.png | Bin 382 -> 381 bytes .../nanosp/erc1155_safeTransferFrom_1/00007.png | Bin 436 -> 434 bytes .../nanosp/erc1155_safeTransferFrom_1/00009.png | Bin 382 -> 381 bytes .../erc1155_safeTransferFrom_137/00008.png | Bin 459 -> 460 bytes .../erc1155_safeTransferFrom_137/00010.png | Bin 382 -> 381 bytes .../nanosp/erc1155_safeTransferFrom_5/00008.png | Bin 436 -> 434 bytes .../nanosp/erc1155_safeTransferFrom_5/00010.png | Bin 382 -> 381 bytes .../erc1155_setApprovalForAll_1/00003.png | Bin 592 -> 594 bytes .../erc1155_setApprovalForAll_1/00005.png | Bin 436 -> 434 bytes .../erc1155_setApprovalForAll_1/00007.png | Bin 382 -> 381 bytes .../erc1155_setApprovalForAll_137/00003.png | Bin 533 -> 532 bytes .../erc1155_setApprovalForAll_137/00006.png | Bin 459 -> 460 bytes .../erc1155_setApprovalForAll_137/00008.png | Bin 382 -> 381 bytes .../erc1155_setApprovalForAll_5/00003.png | Bin 533 -> 532 bytes .../erc1155_setApprovalForAll_5/00006.png | Bin 436 -> 434 bytes .../erc1155_setApprovalForAll_5/00008.png | Bin 382 -> 381 bytes .../snapshots/nanosp/erc721_approve_1/00003.png | Bin 562 -> 561 bytes .../snapshots/nanosp/erc721_approve_1/00006.png | Bin 436 -> 434 bytes .../snapshots/nanosp/erc721_approve_1/00008.png | Bin 382 -> 381 bytes .../nanosp/erc721_approve_137/00003.png | Bin 450 -> 448 bytes .../nanosp/erc721_approve_137/00007.png | Bin 459 -> 460 bytes .../nanosp/erc721_approve_137/00009.png | Bin 382 -> 381 bytes .../snapshots/nanosp/erc721_approve_5/00003.png | Bin 486 -> 485 bytes .../snapshots/nanosp/erc721_approve_5/00007.png | Bin 436 -> 434 bytes .../snapshots/nanosp/erc721_approve_5/00009.png | Bin 382 -> 381 bytes .../00003.png | Bin 550 -> 550 bytes .../00006.png | Bin 436 -> 434 bytes .../00008.png | Bin 365 -> 366 bytes .../00009.png | Bin 382 -> 381 bytes .../nanosp/erc721_safeTransferFrom_1/00003.png | Bin 550 -> 550 bytes .../nanosp/erc721_safeTransferFrom_1/00006.png | Bin 436 -> 434 bytes .../nanosp/erc721_safeTransferFrom_1/00008.png | Bin 382 -> 381 bytes .../erc721_safeTransferFrom_137/00007.png | Bin 459 -> 460 bytes .../erc721_safeTransferFrom_137/00009.png | Bin 382 -> 381 bytes .../nanosp/erc721_safeTransferFrom_5/00007.png | Bin 436 -> 434 bytes .../nanosp/erc721_safeTransferFrom_5/00009.png | Bin 382 -> 381 bytes .../nanosp/erc721_setApprovalForAll_1/00003.png | Bin 553 -> 552 bytes .../nanosp/erc721_setApprovalForAll_1/00005.png | Bin 436 -> 434 bytes .../nanosp/erc721_setApprovalForAll_1/00007.png | Bin 382 -> 381 bytes .../erc721_setApprovalForAll_137/00003.png | Bin 436 -> 436 bytes .../erc721_setApprovalForAll_137/00006.png | Bin 459 -> 460 bytes .../erc721_setApprovalForAll_137/00008.png | Bin 382 -> 381 bytes .../nanosp/erc721_setApprovalForAll_5/00003.png | Bin 468 -> 469 bytes .../nanosp/erc721_setApprovalForAll_5/00006.png | Bin 436 -> 434 bytes .../nanosp/erc721_setApprovalForAll_5/00008.png | Bin 382 -> 381 bytes .../nanosp/erc721_transferFrom_1/00003.png | Bin 550 -> 550 bytes .../nanosp/erc721_transferFrom_1/00006.png | Bin 436 -> 434 bytes .../nanosp/erc721_transferFrom_1/00008.png | Bin 382 -> 381 bytes .../nanosp/erc721_transferFrom_137/00007.png | Bin 459 -> 460 bytes .../nanosp/erc721_transferFrom_137/00009.png | Bin 382 -> 381 bytes .../nanosp/erc721_transferFrom_5/00007.png | Bin 436 -> 434 bytes .../nanosp/erc721_transferFrom_5/00009.png | Bin 382 -> 381 bytes .../ragger/snapshots/nanosp/get_pk_1/00003.png | Bin 382 -> 381 bytes .../snapshots/nanosp/get_pk_137/00003.png | Bin 382 -> 381 bytes .../ragger/snapshots/nanosp/get_pk_2/00003.png | Bin 382 -> 381 bytes .../ragger/snapshots/nanosp/get_pk_5/00003.png | Bin 382 -> 381 bytes .../snapshots/nanosp/get_pk_None/00003.png | Bin 382 -> 381 bytes .../snapshots/nanosp/get_pk_rejected/00003.png | Bin 365 -> 366 bytes .../snapshots/nanosp/get_pk_rejected/00004.png | Bin 382 -> 381 bytes 77 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/ragger/snapshots/nanosp/domain_name_non_mainnet/00004.png b/tests/ragger/snapshots/nanosp/domain_name_non_mainnet/00004.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpPV-0__5jB!4tXL_t(|obB3M4uUWggyExcC+vSoXD>c9AxK+NNJwY!|DH5f zQqS}jFaiJo000000001hjLgi;YoBU*&+fn#%_`fKzAy`5S(fr*SMK%g+Q5Zb0MW|8 zxB3zBn%#km>IKKK`r$YOie0%)s~^4rJcerky-nDTWdPe|_^ zZ|I#keKYt8ATuqF6U|Oq^!$k3*m)GHKOY&)M+Wne0sf27-O%mi8#z;!_V%Yw9qR+d z`<^TcKC}GH?!b`dv zk6Zv{vkh9gndMc6<}wUO9Xc(j|DNyg+>kf~aQ< ke*gdg00000007+Y3sw)mR9g3FCIA2c07*qoM6N<$f+Jg>jsO4v diff --git a/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00010.png b/tests/ragger/snapshots/nanosp/erc1155_safeTransferFrom_1-rejected/00010.png index a58590b988714545e7960f7f400f360ffc5de41f..657887225857cf48be8a8daed2cb3e89d4b29ece 100644 GIT binary patch delta 354 zcmeyz^p|OZO1+Dxi(^Q|oVPcl`3@-vI0Po$;rtyhRQ<8JMIk?%eObZz=}8L@T*!1t zWzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt=H&1kwbMB!3x6L_t(|ob8%Xa>XDBMbl1q;{KPEz4Rl~jDw04Mbq@0uNRBd zhlqOfjspMy003Y)ALB00^As&9C1aP{vTWJHHH>@=mX;Ad$6ch9?$P9*{~UJ`lqnU* zSDb50QlICUQYyc2-jc79-1us5Sqg`W@m?mZfGYVqbtF{!L4S0==D=ckWFgM~+A`K3 z;|N&+)r|gC#@WBW(b8C6+!^C0umt5)qc7@-h>;~0x@C2@)bn6v=r2M_P*Acvh9Rm@ zcMN%#HIosw0;XYFcYpAxSE@#HH-qU8{p0AiOmREdefnW^io;kbqNP4s6iwZsPu*1RQ>D-9 z=EM*vs$U}j`PB{3Ah-MR^Cx1P(wGf zZ3R@%pfYzw>MEv2N!4M@Srz~Q000000000000000;2nGe29*o$miXX@00000NkvXX Hu0mjf%Dxe* delta 567 zcmV-70?7T+1kePKB!3r4L_t(|ob8%Xa)lraMQx`$VgE~VFa2=pFabguh){dZ*OP`6 zLx6boH~;_u00186W8B4go}wkCWbATVmMu%ThLMlK(lWy5xQmq1J(~RYpW{w~GNt19 zigRsA>hnBPO63jbE%_?Rjj#5WrEsViuVumtsFJT!M?$3^M1S{d4lI^O7UKM`Eo1#M zj*t~l&FEicoc;cdmd5SHoiT0#x1cU!KM^sq#6q{Mo|bwZJQ@0nkS(aZN&Ogz7{gIi z2a08$2g*SbLDUMkGTK+M<$Xsi#c?f+l`JXif^F;O9T8JvoXb^2RY726!jtfZwCYg+ z0LYnh1_bT7gMX!7sT$2a45mBukE7c%#qD7C>BZ<2hp|#bOMSE`nz}=ux~V)*l|HMN z#|pWkgOY3FfvEdKG`1c`E!nMfpEBmE69;R=IHSyPTeh-K@l);Y7)f-#ubBY**(GF| zmVna=Q}u1nZ#@`?>H{faF>(bsN~8g@tOMW>hYHs`GXdrgA(xFq1dwYy!pC%gBN`-gS3oE}3J;tP!ckB|Vp^I6z z0;)CWy)Ywn6;q?6>M*931poj500000000000001Z2j6I&3+`9QV@3b~002ovPDHLk FV1h!U3xogw diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_1/00005.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtI4cK)aj0iT6KJ@3J3e8iGjCO4~`^`a^h*Ks64n^JlF z<(ZBo^}g?=l=g+?h+HL7xQ_QEl|e`NSr)7S6S+<&5~_Sq>VGu`5y?%sSpM1*_P^$l zvI5ME9?H1*`v)b1*ZjiXXzV^D4M2%tID}s z$*=WN=G?#hcI=v^?G<)N9czz;g^*YslGemArpCj41Zr!R&4Z zAKi-e{_K=Sg2v5PJH|c5iG+H24!)4C$L3r~046Y;Htk0OFvrRmz$lBW5DanRWMYsC w?gan<00000000000000000000002niAA`ciByI3)c>n+a07*qoM6N<$f_gRXs{jB1 delta 507 zcmVm*H1hM;xr3k%sW^Xe zReORu=bTciUs$HdQ6e*!^j=O?p^^Dn8%98r9H$cjm0ncw(tih@oR?@~`PW`%`)iz# z5zvh2p@{RpzcZ(EdYO)xX@OJFTWUU0ZRBYSJ7;sXwBz8DO<#meLG?@8%Rt04T-ENt z$SLE%SV$s7jeru-b2~O!b|t4;u2p6uO6q;VvHRu|sV;H$4rRvq%f61?Gjxm*ppHCmKd8jsfzvbQnn61HJiTAE>lsS4MO{TWFA^>hXw8Cg zQ$h43<6Joc?}Gd}J@d@=_6l8B{cHYrUqzgJ$#bk`_1T;IXuEf`N;+UdqtT|@kq(%%vkx$8^DKlR xZyK3C2u1S(0000000000000000001C{sHC6#w14|d%gew002ovPDHLkV1mGP^c?^I diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00006.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_137/00006.png index 487579e6af95c187cb4770c5162033c7ca067d2b..73d6bb75dd17795b52d92c61e8783219b9c847f8 100644 GIT binary patch delta 434 zcmV;j0ZsnP1Iz=EB!81hL_t(|obB0da)clZfMMF%n{fXl^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtI4cK)aj0iT6KJ@3J3e8iGjCO4~`^`a^h*Ks64n^JlF z<(ZBo^}g?=l=g+?h+HL7xQ_QEl|e`NSr)7S6S+<&5~_Sq>VGu`5y?%sSpM1*_P^$l zvI5ME9?H1*`v)b1*ZjiXXzV^D4M2%tID}s z$*=WN=G?#hcI=v^?G<)N9czz;g^*YslGemArpCj41Zr!R&4Z zAKi-e{_K=Sg2v5PJH|c5iG+H24!)4C$L3r~046Y;Htk0OFvrRmz$lBW5DanRWMYsC w?gan<00000000000000000000002niAA`ciByI3)c>n+a07*qoM6N<$f_gRXs{jB1 delta 507 zcmVm*H1hM;xr3k%sW^Xe zReORu=bTciUs$HdQ6e*!^j=O?p^^Dn8%98r9H$cjm0ncw(tih@oR?@~`PW`%`)iz# z5zvh2p@{RpzcZ(EdYO)xX@OJFTWUU0ZRBYSJ7;sXwBz8DO<#meLG?@8%Rt04T-ENt z$SLE%SV$s7jeru-b2~O!b|t4;u2p6uO6q;VvHRu|sV;H$4rRvq%f61?Gjxm*ppHCmKd8jsfzvbQnn61HJiTAE>lsS4MO{TWFA^>hXw8Cg zQ$h43<6Joc?}Gd}J@d@=_6l8B{cHYrUqzgJ$#bk`_1T;IXuEf`N;+UdqtT|@kq(%%vkx$8^DKlR xZyK3C2u1S(0000000000000000001C{sHC6#w14|d%gew002ovPDHLkV1mGP^c?^I diff --git a/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanosp/erc1155_setApprovalForAll_5/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt8gX8mKK#W6J>O4CY_5{RSp-tn_cUyu*;>Y{;%=lomr+P zH_A@cKG=V9g1hn8Hzrp}}GyxT6>D?7b2***nj9vFmgGFptk4(mSmqA89$&#YRqky=jHEgK1;c!(Xox z!WaDfx^d^6H%?!*?k>%Ks(5;~+FRk?n4RCeosM4KR5Ld#_V}ciGP|}-IqxlLJh!cU zwdI~!wwHf4$kZ6lzu3BOs^5f@2bT)OF<=1=r++Y)er1VpHoN!$B<<A`t>SiFUhb}D z^i%di&dQ5B@7}pF>8Ypgn=`u}x^7wdPdTLK@54I%$=VEydgix?KY8(AgMpz%bN!i1 zl2Y;)ByCl!TSH}R+>dU)!T#m5)zt@6WajKSW56dS=lOj7q=~CL-fi8dC=gq(wD;f4 zk1<=Nq;jmE+I_g6a$@n!seZ^z}&@@8Yu7omAbv@ZzG+?Al8ze{4Q7SEo=^asRqCCrcx*h%T7r zu(#lE=?3i!e}3JF@he+cHTB)4t)C`5EegwxooaZ!&T~aY)U@@%YhOng&2_#$?Ng;@ z^0Lbx@=V*qH>X?4PiWSEX1wdd_Dh^bmODfaaWh~61(NmG4zWb|`v!s~Jzf1=);T3K F0RUYnuu}j4 diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_approve_1/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCN1PT2pF*h@c{FsdL}V3G)W&sWA3 zsl-Ee90C9U0PuES(<4(#>Pn2!IHW|@SKcZAca_YWGx?q#8DlKD%Fi3gIp=x*$n1v@ zewKfuWmBh=VvO|}l2_!$l)-Y=>PYp4o#4?b$_mM)lDW+--hccFXi~|I4v!CNc&^hD z8N@`$zxIPWz38%vi87^?C!o2bhxUcN7-M7!>%^uqiyRnElF?=NUW`@MMr{7=2# z6R?W&H8^|$@{2joYv6hT^4#5j|K)rQ{_vKl<)O3r8qViU_#zWOi53o1y6I^}K1=nP z)lH3}9MOuKhrHmB=$A^ypho7Fz#O&edpYB z`7ib?YVW;>5PnFm3XxmC$hLwxYn1TCRI<=81<~XdStO6 zn0-X8EJ1ma^~b=%TdSL@Dm2=>d1ax+&wye{9c|m3n|h>w$%8v*y^_UfQT<2M`1TL? zcP-ul7&ZS-*ngmR=TQK_A@bwRE(e|yU SC750S0000^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt)KF7Ro$-Z;$ zcla4Ci#mkhy-%+pc|%RiBROeco`#04*j?)t9 zL?Yy;<={dss*a*#n9|5AAiJWQ)`fjA#>gYA5U;Mqj#2!laE&iPQnqKRo~RsI)?I%& zGFuQXdy5)bf+j8Yj&7(b)Y`myWT3(KfNV)^ZCjn2a%6Z*gN?IZ7)5JQ{UR#A_H^$x z_zFO){wLuJI{Q5e0C*0|^R4j=+ui$D&;xF>bGIT=g}pHMnb5QCPZg8>)N;b|86GRG z9@&ks?yzd4{I|RZx5jl#(CkOqbW?v}%N(pOLC(BWG`keUjo9?%!EIhicDv5|%k-^W z_C4KH`U+UE1k~*=ecgC=(5UZ(Yi`1o^v<6A?49u2oQ`@yI+%bcGw@}(2*R3gyr!LV zfSpwcl_WCaThMb%Ms3{x8U1Z3~%ru)J^7-QrSR)|;6V#g@{Q@F;Lpej{QRE{k7T{(X; zTM#b0M2###=^)F?z`#?hld3Az+Pr#XpuuZEwxqVUto5F!!0zv+Yk6ll|1vVY!FL zN~=e9Bdj~D8Y%xR@4>Bc-4ZnWr)+<^sjy`ZHtdEPcZz10g18ZzzC5_iE6Hxxd4HL{ zmCL@Tn@T?c3vL0m+@-G@&kh>(b+~2`uB3PN&4>$ diff --git a/tests/ragger/snapshots/nanosp/erc721_approve_5/00007.png b/tests/ragger/snapshots/nanosp/erc721_approve_5/00007.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt!y%k@(~n8mh5IGcL?oW#m&dkv?HjE!-%Z=Qz(;=yPLiiSvW~Hpx!KUFNgly*%s=e zTp3yLxbp{-(|Y6f1poj5_%_OaX4wp_Cu}-RMPIyC9c=YEp|}-@HcCO(RY<5R}&J4<2fI8V%LTp*?@P*Y@J& zPHK06-=KbUnGm<600000NkvXXu0mjfy4CF% delta 497 zcmV9B9pz2 zYNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77Vpoqs}9VU_A4cZ%~~Ru;15 zYo;*3fo!-DcA6vAZSx9PU%71h!crj zY)(G1#+!_cB7dBrpn9A4XPglikIuN_^3AI^-E`tq13_uc|KOpfr`b@w9PIhiy!IC_ zcaq%!af2$_o^h*nnMfq&h#mjtyVwEE-d>VDUQf&Ckka?!SeEnpYz%K?$uu;(>Egv2 zn7D1;iJ2c{hEbniHe_8F^$t*nKywD^KVGbWIvgB#@@f>aULxNbmGM;MQp-l===u){ zRZlPSeRk_UkxZwX+EzJl70h%R+3l9_Zt+a#1A6eqe8wsCty~nD9xR3O0ssI200000 n00000000000000004(DV7(NDt?QeVx00000NkvXXu0mjfO@HtJ diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpPV-0__5jB!4tXL_t(|obB3M4uUWggyExcC+vSoXD>c9AxK+NNJwY!|DH5f zQqS}jFaiJo000000001hjLgi;YoBU*&+fn#%_`fKzAy`5S(fr*SMK%g+Q5Zb0MW|8 zxB3zBn%#km>IKKK`r$YOie0%)s~^4rJcerky-nDTWdPe|_^ zZ|I#keKYt8ATuqF6U|Oq^!$k3*m)GHKOY&)M+Wne0sf27-O%mi8#z;!_V%Yw9qR+d z`<^TcKC}GH?!b`dv zk6Zv{vkh9gndMc6<}wUO9Xc(j|DNyg+>kf~aQ< ke*gdg00000007+Y3sw)mR9g3FCIA2c07*qoM6N<$f+Jg>jsO4v diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00009.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1-rejected/00009.png index a58590b988714545e7960f7f400f360ffc5de41f..657887225857cf48be8a8daed2cb3e89d4b29ece 100644 GIT binary patch delta 354 zcmeyz^p|OZO1+Dxi(^Q|oVPcl`3@-vI0Po$;rtyhRQ<8JMIk?%eObZz=}8L@T*!1t zWzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt!y%k@(~n8mh5IGcL?oW#m&dkv?HjE!-%Z=Qz(;=yPLiiSvW~Hpx!KUFNgly*%s=e zTp3yLxbp{-(|Y6f1poj5_%_OaX4wp_Cu}-RMPIyC9c=YEp|}-@HcCO(RY<5R}&J4<2fI8V%LTp*?@P*Y@J& zPHK06-=KbUnGm<600000NkvXXu0mjfy4CF% delta 497 zcmV9B9pz2 zYNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77Vpoqs}9VU_A4cZ%~~Ru;15 zYo;*3fo!-DcA6vAZSx9PU%71h!crj zY)(G1#+!_cB7dBrpn9A4XPglikIuN_^3AI^-E`tq13_uc|KOpfr`b@w9PIhiy!IC_ zcaq%!af2$_o^h*nnMfq&h#mjtyVwEE-d>VDUQf&Ckka?!SeEnpYz%K?$uu;(>Egv2 zn7D1;iJ2c{hEbniHe_8F^$t*nKywD^KVGbWIvgB#@@f>aULxNbmGM;MQp-l===u){ zRZlPSeRk_UkxZwX+EzJl70h%R+3l9_Zt+a#1A6eqe8wsCty~nD9xR3O0ssI200000 n00000000000000004(DV7(NDt?QeVx00000NkvXXu0mjfO@HtJ diff --git a/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_safeTransferFrom_1/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtO7AK+{fd;{A{0UHXw}hDAj*l65=pePvxl zR3J)@0{{R30N`=H?yJZ-tCp0Kv&$t}w!DSY3~7U>gua}qSnZ>7Pe&dZE5?#lS_XRl7fPqeZmZtg}OG# zF3)U6R0NzJJ$GW0eeX!B*R>KZt&+RddL`_3Zr%~KCC z$*-)^In+L(bAR-1>=ah(;JG2*MIGiAXl&>?8<*_C%^F6l(JmJ{^;DU;h;?rzhQR0$ z$Lkr!fBmtmq*XhmANUIxvdpEPou*oIDDzMC*>3DcQW*h$h05BN^0HTVA|9JPdTi(G zL_l?KyNsq+St^(=mZ|!|&bMDlNG)hI==_T{r1|;U@_z(dlp^Ful|6~uMI8Yu36uku z9|gMt)sK$V;baynN9hh-Dj%}EYSPuw=xe_u)OuQ$?-Q;2ShAev)V7-QR>mx+GP~U- zyqi7C`G7t6$9zT>`mb~rnLP-FD%PDHLkV1k0;{gVIy delta 528 zcmV+r0`L8(1gQj&B!BQpL_t(|ob8!ilEWYffU`S$6Yqbd++`m!+o7O{Mq0b`eNQPx zf(rhS;{X5v004M7U-wO%=cy#6lwgyGrj@*f%MIy6L~@7k`zA^$4{zl2$MFaP8&Y}v z@FL_H-8FZB2%YqE3BJ*@2pvoVr`F}MB5zRvkvHZ8C?ElOo zB?GDvJrr^A{s%RK%gc1cOp~|-by4ey8l%Wq_?p$-(vO2z4*f;S5@b8+Zvz=V9OiW3 zXv#QnHj)goGT@5nxf7dgdq-1k*Gk!m5_>M#_T0Q9YD$80`7W|fK@eoYO?X3E=TQIv zh;lx&%I1)K!hh!I-8iVM#vyV;yo)-_EwI?Ia|xHs!Oa>*OX!yigLbOST*SJ!5=UY5 z702@#CVu_#tE5#wWgNr{7_!Wzo`bG>eX#3K_1PD8Gs$K^+@SKdW!$#vb|m6+#Eu_) zoeZeXZI{vIRh9~-i)E^Qu=DL#l2QvAO}hAC4OxDDZGU-!ElLscqspG-&7#f#wFuZ3 z+mC`>h3ZGg>g(hxWZ%+#wKYEExol;2t zhj;U5IUg_w|CrBMh5jp@L1qq8VR!)m000000000000000000000002e_yu&T@p+Tj S9(Vu%00{s|MNUMnLSTZ|fBrZC diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00005.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_1/00005.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtE`N^0APhj!%&0qI|4U*o^MQ&yJW?0p#Gre=+SG{*m`8IQ0002M z?SAGT5o0W_gbA>?f2=jG%gs7uPu%kI&dqK+|!5b6fY zD{_{|;B>tgSv>G0_*oasfF?Ol2MQ{@6}P7`&_o`hi{-Dq;D7V4c1&hKv!cJMIDPw- zk;>&|xMGGGEgnZuMObz9`KsXnus)M%8$cDh}s)9Xfx~W u!#kmS0RR91000000000000000Gk+I^QvX#O%)$Tw00{s|MNUMnLSTZyRKZ{X delta 400 zcmV;B0dM}a1GEE>E`PGZAPj)vdd8h(|4U*o=Yf$ypctXCf%(5D#k9jET;wI0x?l!0<@0nPq2#4_JdS}T^2oY4|Me`m|9{nv$qZ;_^j8_DZ@)59 zxx5T#%rL_x=%ZpiDf&p$7yZcQZrRU+Uv_~8}WbvUZiK_@cLgU&``!D`^f!%CWqQ)hP%{7yJ`;=1ye?+!|xBtHoBK&8)W% u?}Y9J0000000000000000002Y`~!K6QvV(Q&z=AP00{s|MNUMnLSTZ7TgLYQ diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00006.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_137/00006.png index 487579e6af95c187cb4770c5162033c7ca067d2b..73d6bb75dd17795b52d92c61e8783219b9c847f8 100644 GIT binary patch delta 434 zcmV;j0ZsnP1Iz=EB!81hL_t(|obB0da)clZfMMF%n{fXl^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt8}fK+#M!J7NDzVlVwb6Ilil57dTK_k6X~ zp@etHaR2}S0O5Y-v&cECl$4V3k~6YSS)vp}mcf!T<29c}O6e?({QNj)C#buWpI^VM zEuA{&oKmW9SfwuYO!c zK(j~xtH;^z-xz6}UWR+jFvlrKYSzA*PgEUQ>f$=GxmsTLgUG5cT&5tW&OT5KH4ELA zL0%Hm7+xcw^ysl2o4j@=QZ3gixGt4!t=^Kb+rD{6s!5D(xr)~=2u2@x65dd6KMDYN zy!lhJefCAq-hTys!Ri`x6me?qPnr)ky;DyW)BM$v;dKsQtDZg7L(^o~ZKV9#yDHMY zQ;_!)Y<)nxqz$5{pu_x1&wDB;2R`*XgWxG>!3fyrwPk(i)_gtZN{@hmF3>!rlqtPL zqp=KQ7U7%f^=|xCul=^tz3YJLpaF`;jfd4m7GnN!Pc$pr04rx9+*C4c;EL)600000 l00000000000002oyaDEKZg}qx3F-g<002ovPDHLkV1fq_(iQ*! delta 442 zcmV;r0Y(1R1JnbMB!8PpL_t(|obB0Bl7k=&fMK_@H{t$A;x2t)*2yG*S!n<}|M%3= zNEHGi9tQvb05ILpcojKkRgzM29&$$7k|oM%$aCd2CwQ$7jDRXRPH!Ys`lAjneShGIJVX=AUt7WbuW>>~ zKsBTPm2v*-cSbs=m)jY0Ti_IQNzEs!jXZ79kF4G;`*|?4>5Gsl$X;asHV|`0`#U8~?ume_T{w(I5{sV;H$+6~$zeXw9R)VV@~ diff --git a/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00006.png b/tests/ragger/snapshots/nanosp/erc721_setApprovalForAll_5/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt!y%k@(~n8mh5IGcL?oW#m&dkv?HjE!-%Z=Qz(;=yPLiiSvW~Hpx!KUFNgly*%s=e zTp3yLxbp{-(|Y6f1poj5_%_OaX4wp_Cu}-RMPIyC9c=YEp|}-@HcCO(RY<5R}&J4<2fI8V%LTp*?@P*Y@J& zPHK06-=KbUnGm<600000NkvXXu0mjfy4CF% delta 497 zcmV9B9pz2 zYNhxc(CJ}Mn~1QKmy7i$DHd^OiyJ|DY+CE}tf>`e+77Vpoqs}9VU_A4cZ%~~Ru;15 zYo;*3fo!-DcA6vAZSx9PU%71h!crj zY)(G1#+!_cB7dBrpn9A4XPglikIuN_^3AI^-E`tq13_uc|KOpfr`b@w9PIhiy!IC_ zcaq%!af2$_o^h*nnMfq&h#mjtyVwEE-d>VDUQf&Ckka?!SeEnpYz%K?$uu;(>Egv2 zn7D1;iJ2c{hEbniHe_8F^$t*nKywD^KVGbWIvgB#@@f>aULxNbmGM;MQp-l===u){ zRZlPSeRk_UkxZwX+EzJl70h%R+3l9_Zt+a#1A6eqe8wsCty~nD9xR3O0ssI200000 n00000000000000004(DV7(NDt?QeVx00000NkvXXu0mjfO@HtJ diff --git a/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00006.png b/tests/ragger/snapshots/nanosp/erc721_transferFrom_1/00006.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt^_YcuqYpgIiGLlJpn6V(W9+y3Lw{4$ zkXL0E7H9qYU|9zgi%C6lLnBgGThZgz+Eujf+y{%7pz#o2>KHSKoye|Qf5L`KP`=ct z8&jdEC&kw+T>BCR008)(re#CxFG;h+{4z>(Q`pJd^jo}oGr{_J9?2T*xLY+h?{y}i zpLz@L34_k|zkicgs85X?wC-oHdddQP`w z=H+!;<|UsDi<4{jUnTy4W{`=#8za<2-x+B*-_+kD|Z#68_$7r3K|dbsfkg8*omxH{s{}Fpgh$G z^+DYaS<%n-W3|!uAq)Tj@IOtfhSqPAYK!`2w2@6=r*6|9@$AV2?d5r-YP8~RRo%ST zm4JTfEqoUYI)5)*ow`E()yRj|`3$yPwqh|(thmr-n>hi#MU{utX>;zS8QlSL(&`@o z>lmqU%)NxkwIDgU)-!Wub@UDHW4mWS{x{1Y%Q;&mXI{Q$b@wu|^XU{mQ$`)J)z9IU zOg+3FOFiVyvN$+){VeeZG=og^%_yNJ`o@?8Ph=raJSvAh5nccQ000000000000000 b0N^nnPMv}=zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M BtF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|zj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Btzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Btzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Btzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Btzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Btzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpPV-0__5jB!4tXL_t(|obB3M4uUWggyExcC+vSoXD>c9AxK+NNJwY!|DH5f zQqS}jFaiJo000000001hjLgi;YoBU*&+fn#%_`fKzAy`5S(fr*SMK%g+Q5Zb0MW|8 zxB3zBn%#km>IKKK`r$YOie0%)s~^4rJcerky-nDTWdPe|_^ zZ|I#keKYt8ATuqF6U|Oq^!$k3*m)GHKOY&)M+Wne0sf27-O%mi8#z;!_V%Yw9qR+d z`<^TcKC}GH?!b`dv zk6Zv{vkh9gndMc6<}wUO9Xc(j|DNyg+>kf~aQ< ke*gdg00000007+Y3sw)mR9g3FCIA2c07*qoM6N<$f+Jg>jsO4v diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png index a58590b988714545e7960f7f400f360ffc5de41f..657887225857cf48be8a8daed2cb3e89d4b29ece 100644 GIT binary patch delta 354 zcmeyz^p|OZO1+Dxi(^Q|oVPcl`3@-vI0Po$;rtyhRQ<8JMIk?%eObZz=}8L@T*!1t zWzj4-;J5hht#0pj z^#9@1sLK;CE54XuefJROGCRgZUbWXBk9~WeThLU0Q`4iWuO>iVr1K`D#hTWitG2LJbl{xH#~Rq+?=K-+vfC})E&6F z@5lAeSDtRMVcZx!aqGa5zhIs*He8&r_HtpZV5M#|^ ydh?e5zlAMgw-$Yhy2~hY*m8O9PiA<4-2TmASuS-mz3kmhkeH{dpUXO@geCwORjDih delta 355 zcmV-p0i6E*0{#M!B!5LoL_t(|obB0Lj>8}fKv7h6C+vSo*-Jl=BFejIj2*b=t7QrS z431!&0{{R30000000000t2mD1&x+StxcuCugjtw2gZ3x=t=)mIIr82&3gasIFTM9k ztvJ}>Yq8eI6W5XNfa2$NVK)~Iw$m+~VCoJy*I=?9Z*2eG27f1*or0w2C%&Rd-3tH!000000001BFCQGdAO*0P-ogL?002ovPDHLkV1g;M Bt Date: Mon, 15 Jan 2024 17:42:41 +0100 Subject: [PATCH 101/160] udpate the client README.md file --- client/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/README.md b/client/README.md index 00be10a05..eedef6a94 100644 --- a/client/README.md +++ b/client/README.md @@ -3,9 +3,17 @@ This package allows to communicate with the Ledger Ethereum application, either on a real device, or emulated on Speculos. -### Installation from sources +## Installation from pypi.org -You can install the client from this repo: +You can install the client from `pypi.org`: + + ```bash + pip install ledger_app_clients.ethereum + ``` + +## Installation from sources + +You can also install the client from this repo: ```bash pip install . From c8c15b395c5133aabf9905e098b65769b0d827f9 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 31 Jan 2024 15:57:45 +0100 Subject: [PATCH 102/160] Regenerated Speculos tests snapshots --- .../eip1559/nanox/sign_eip_1559/00003.png | Bin 413 -> 412 bytes .../eip2930/nanox/sign_eip_2930/00004.png | Bin 418 -> 416 bytes .../nanox/sign_eip_712_hashed_msg/00005.png | Bin 463 -> 457 bytes .../sign_eip_712_hashed_msg_reject/00005.png | Bin 463 -> 457 bytes .../nanox/test_transfer_batch_erc1155/00006.png | Bin 464 -> 462 bytes .../erc1155/nanox/transfer_erc1155/00008.png | Bin 464 -> 463 bytes .../erc721/nanox/transfer_erc721/00006.png | Bin 463 -> 461 bytes .../nanox/reject_get_public_key/00003.png | Bin 365 -> 366 bytes .../nanox/blind_and_nonce_display/00001.png | Bin 446 -> 442 bytes .../nanox/blind_and_nonce_display/00005.png | Bin 436 -> 434 bytes .../sign/nanox/blind_simple/00001.png | Bin 446 -> 442 bytes .../sign/nanox/blind_simple/00004.png | Bin 436 -> 434 bytes .../dai_coin_type_on_network_5234/00004.png | Bin 436 -> 434 bytes .../sign/nanox/limit_nonce/00003.png | Bin 399 -> 399 bytes .../sign/nanox/nonce_display/00004.png | Bin 436 -> 434 bytes .../screenshots/sign/nanox/reject/00003.png | Bin 436 -> 434 bytes .../screenshots/sign/nanox/reject/00005.png | Bin 365 -> 366 bytes .../screenshots/sign/nanox/simple/00003.png | Bin 436 -> 434 bytes 18 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00003.png b/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00003.png index 1a7a3f353ef9df5e6c50b15c6d3936a1fd6d3874..a1e3cc0f72c9673cbedefe81df5dc672f0133c44 100644 GIT binary patch delta 385 zcmV-{0e=3S1DpepB!6Q`L_t(|obA|KmV+P+fZ@!X*$Mk!QuZ4blCV1LCes9Y1W&;8bT#Cx&` zX{c&r_No0CxD7zInUphE8ksuVOT2FFU0LtOW8l06ji>n3z*Lji$*kA@BMWXp=~ffH zu@tg6TYjsJz7Jsl0D$jgR1NJ{VA96y)v0qXEN_>FbYJh2OT;yLVz^a20?0000000000 f000000Mq;f<(oTCj!9%`00000NkvXXu0mjfAZfsc delta 386 zcmV-|0e$|Q1DykqB!6T{L_t(|obA|Al7k=&fML4Rn{fXlBI1rU)KW3hR|>vrC9nm;1r zk4qh=AABU{>Hdu88xeP5&rY2eHB%yzvYCD{kE0IelTP?=4u7mzg6d}??0dhp9_gMU zLLN#TEPiUg25t*b6q9=AhDN5|oh4njYF9D4@ftXnpz##HwJ>TDJDK&WKViWVl$V-B zeNp#QR>awERtJ4w!TLQ^Icfq9JG_y_ak@EIy&{g_d5r!;;c}& z8P2+xZN+BXA$$9V!8~>+;lVcY;nurT_JidD3}#JjpWWESN>FO+=l%UlTdo<`H~x)u zRg?CVWIEH0e+8*GPZ~MVLF5}e(d%m_ne3ZUQcd=au?C)~LY{aJdm_C60000000000 g00000006)=|6G7RPZXlBQUCw|07*qoM6N<$f{R diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00004.png b/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00004.png index f1733ce4439048d91290ca00d4fe3ab236547921..1039cd005cc6a8dde590a139eaa39c1852e93379 100644 GIT binary patch delta 389 zcmV;00eb$T1E2$tB!6c~L_t(|obB0La>F1DKvCMsPT2pFw3mK(%ursIV~}Wb&zA=$ z!jS;mBm@8e0KnXreU~C~9K;xVEpNws7{}hr`vPYALwQd;3m_sf#$xb>-^2OHX+A~t z)1{6x4z7tg-M4Xn8u1j)?9_Q_W=cd-Hq#gLIL*eq(*?ig!heoSP(3HYIre+?NS`Sp z>n^eMhom}U|One|$K!iGywzSJad zOobxOk>6&c?@bs00N^vN-3=XYyyT6=8&mx_ICxX7Pfcn0509t4=lAhr{$P7fb4q_O z-l%x~91H(}-OvCVM1>-j%LmzEbmdFjnvGhfY{!E_(G1nq+YY-a9s zlgywO&E97bq&Ti4T(&g(t;0@F$b-|Ep_^o~Z>EuIvTuwUcw!au#C_Nk=>-4)00000 j00000000000G9ayX=y#=vGGc)00000NkvXXu0mjfl7qUN delta 392 zcmV;30eAkO1EK?vB!6j1L_t(|obB0Bl7k=&fML3`H{t$A%3b!sk)aR}S4i0H|2;Wq zLz^H94FLcE05JEm?@~mLgBWA0<<~JE#_u+ixG`~g0 zZAsBn8xc?8%ubybHB%yzvY9@Z$59*eP8a-|3x7LKLG?Wm&avOBN4lnn zkcUzmi?jAMa4SGDnbadUG%|I!mvr2kyNce8Yv4Quji>llVbmmcGV3+}gbk;le5y&* z2X#MXMV#YewbAz>3;+P|nbz)x_BUSg#$v@(zYca*s`aTUE&t*5w6$XDzvg$g=SEJA zAM`gWp0C44?0>i!XJDTZy?iA+xO;3f-0ph*Ptm321sMG5>aLkD^?1}UO00000 m00000000000002X`~cuTK;&Gz^(FuS002ovPDHLkU;%;!x4RJl diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00005.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00005.png index c9da92b60a9314d8252cfcd68c1cd10acaf07bb1..e7ffedd90f5279e10fd67907e6122c12c1bbafd7 100644 GIT binary patch delta 431 zcmV;g0Z{(W1IYuBB!7@eL_t(|obB3Ca>F1DMNzerop}FCVlVw*Mx_Xd<4J;Ede5hu z#Il4b$TkB2000000DuchDW#O%Q9R&#cL2|%mHO&)3gFp4j$>~m4-qTCY=#ldzR4A! z>S~~yeUmGIr`VG&oqaR=+8w|ZaTXHIzRBGIRhMqv>}!)-@_z#W0APxR-Amm`Z_ezO zhUqW=r@`mED)n>^wO4fWLn<5k8hwp+*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEv zn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2Z zCt{yO@|m#fhJQR$5C8x;ZQClS?O6_+mvIYr?TF3aq&u_Ad$pbW0B?-M4v80Ln5p3t+nos;t9XI19+uesc)`R0L^|WWp5-;NmhW_43jkblCA(v zSA)FSmvjZt6l>B`XJ15qb_Z~VpM{cUU(($HO_%Px+0QNAl7Aln002`g?B41@dShn4 z8j^qcKMg+SRb@~2kiDXt9?G(zZ_&4ChfSe&Es>ja8l-41$VME{IyOzQ?Ue@1yRzZ^ zH{)W~!1tfC>juYNH#BJt?4%T&zcu@Ibg0WXI2uYRp~7D9ao)DXaZqF1DMNzerop}FCVlVw*Mx_Xd<4J;Ede5hu z#Il4b$TkB2000000DuchDW#O%Q9R&#cL2|%mHO&)3gFp4j$>~m4-qTCY=#ldzR4A! z>S~~yeUmGIr`VG&oqaR=+8w|ZaTXHIzRBGIRhMqv>}!)-@_z#W0APxR-Amm`Z_ezO zhUqW=r@`mED)n>^wO4fWLn<5k8hwp+*c7VQlDSFeL7Ml1+K3Zc$L1++d!-5U?%MEv zn{hd75c|*Sy20_M8!B3Zc2Y_%-kP`W6B3uv5sEp6+7}?3cGS-jo%#RmC+k+Iq6=2Z zCt{yO@|m#fhJQR$5C8x;ZQClS?O6_+mvIYr?TF3aq&u_Ad$pbW0B?-M4v80Ln5p3t+nos;t9XI19+uesc)`R0L^|WWp5-;NmhW_43jkblCA(v zSA)FSmvjZt6l>B`XJ15qb_Z~VpM{cUU(($HO_%Px+0QNAl7Aln002`g?B41@dShn4 z8j^qcKMg+SRb@~2kiDXt9?G(zZ_&4ChfSe&Es>ja8l-41$VME{IyOzQ?Ue@1yRzZ^ zH{)W~!1tfC>juYNH#BJt?4%T&zcu@Ibg0WXI2uYRp~7D9ao)DXaZqF1DKvB}kPT2pF*h@b=W(Xiz=IJ)~e0gvx zT=6iLa{vGUz;dtkU4{^j3-7(u(j2oh&U)|N4=~an%6qhP073}f`)u;M&*^;RG+iS0 z zgfvvOF}u5d47LqGwwaVO*9n=r+e^Hb_O7h=#bdB}3$my9*1%MgsAP86{^K6F1*Ka} z)UXt?I7fb~jeB3h0002rsl6Ji7gf^6>}#kz>M38L<*lqmFC3LmtCV1+7QJfQU&?JH zoz3+lyi$6z+<#Iolqb>aeM26s*%OO#U#06y*tq)or%C@~v~5A7dRKG}fU(Q!jyX#8 zW#EdJjZ}5eTco#%T!WL_7`Iec48OW=`AA3jKNf-7XSbN0000000000 e00000nC2Jz)^;0pSr_mC0000=EYtaiw<=rYJ*jkHTwe2tE zHmZFM>05ZE^nYeKr5q@CqSyO|+*q?G7URB3*O##I?dyL``fsCc3L4eBqH6$*U5Yd2 zDB@z^ip8c@bKXGG4oq4qv%MMQnyY1xLR z*VwnA%Er_ZXJBN-MS5qimT*dv$^J4zs>%LhjKNOKLN7aAB$+Xoiu3{i0000000000 g00000007hc0&=@~8%mo%?EnA(07*qoM6N<$fIN3m}q7y>mk&Qlq2f<5unxqfcIg#VN=i;-Q66gJ?u{RsIPNOhIL; z$qrl!qMt3kYUA3QFaQ9+|8%?>Y8O??M)5XOKk6B8q4lX&i#iSQZfsP9jL&#lTJyhA z>)G6Xgf~iWo|7X16Mr{hXJz>OHaRejGS}s5kC}S58)f2eVi{hTGT!55Pj8WXY;qUFd#k71x z{EtiBkKMVa&&z#J9?v80!XBMEE^4GwN;#VOhh;x%V>##ze}7HK6H`$AOoaX3Z>>kZ zM)Xj2r8bJQ^VeY60*GW%-?^a?snJpLaVvL;(I>CL;uPc$@zBDkK{O(}D*uEBrl2y_ zWa^9B4w>j@yI5^p`w|8K0QjGdS3~WhO4%rOL-nVgu?wwFwOZ6^h`q5<5i+jvw6x}b zqt3w`JVSU4eTF)F?u7U5 zwF1DKvA{Rov{BUv6p^$%qTo$FfV&@&sT~Q zkqBGZst5o80I=N8`YFBl#|!6NY2G$(fxrFWF3a??X1j2X&n6pq_NXuYbAl#1fQV6LOyWrS%B! zi6ZDw*}>@O`Zd_L08ueX&s-^Fs&$s|x>UQO*%z`c$3+dq5ccv57#NYMIe4%u! zZr{-xow$34^nZxaa;SV!`c(fTdho<%T)%l8h2ddGJ_%PgiU*!PrT8`FE3|-&kvG{` zf=YjmDnT_B@3z;MpmbLkwE^^JYIcA0am~0UX?8Aeu{z@q7cW51l>Pr(ms}wZUnyIo zTQ{E8Jz&U>($TCqv$scxkz}&JOeWQ2e=*izC#uj+7c5C;4W=T!000000000000000 d0002MH2+b3d|XTiGtvM6002ovPDHLkV1l~r)5-t< delta 437 zcmV;m0ZRVO1J47HB!8AkL_t(|obB0da)clZfMMF{O}PJ&xJ!RHGAx7$@)4bVpI;W; zup2Z8bq)Xk0NCzlf0rSIuPjvl-v=5)WC`)lD(?#xb^7co;IgqY3v!8DH8n0C70*MD4iVhJjr33uN6weg78 zWD(L(VqPX1-8c z9O-ZL%1+$9Q-5iTvgOctQ2W&Q5$JX5RpM<2Ht*QLzP74_n{HQdV7H9SJ2&W{O>~ABan(S}J7+9hTSuVOrGGnk5=>-4)0000000000 f000000G9a&$Wwn@lYILz00000NkvXXu0mjfDC*PA diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png b/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png index c9222461cdd3ea49c300c4820e3704d33b9a3838..e90cd9db37ed7e4c669da0b1abe6e4a823770f3c 100644 GIT binary patch delta 339 zcmaFM^p0tQO1-J4i(^Q|oVPclR~<4CX?>`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpPV-0__5jB!4tXL_t(|obB3M4uUWggyExcC+vSoXD>c9AxK+NNJwY!|DH5f zQqS}jFaiJo000000001hjLgi;YoBU*&+fn#%_`fKzAy`5S(fr*SMK%g+Q5Zb0MW|8 zxB3zBn%#km>IKKK`r$YOie0%)s~^4rJcerky-nDTWdPe|_^ zZ|I#keKYt8ATuqF6U|Oq^!$k3*m)GHKOY&)M+Wne0sf27-O%mi8#z;!_V%Yw9qR+d z`<^TcKC}GH?!b`dv zk6Zv{vkh9gndMc6<}wUO9Xc(j|DNyg+>kf~aQ< ke*gdg00000007+Y3sw)mR9g3FCIA2c07*qoM6N<$f+Jg>jsO4v diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00001.png b/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00001.png index 9901736504e1dc93fdf161b16cb0fb89081ebf60..b4d7befa33b9304c25944d4d386104df54beef65 100644 GIT binary patch delta 395 zcmV;60d)Sp1G)o{BrAbQL_t(|obB3Cl7k=+MNwnTPT2pF*vov7ak@YWD#~kf&zF@@ zR@*Hg=#fttf9`$noxrPS6u@f_$dc~223`yB7%mI2dcQmE1TG8kB(Ko{>{h?iLkPD; z(uMCH5JGU5@r<(qd>rWA%>+NA131N9x&Z)yES@VaRi^iq{jIaE$zn}`r60@VmQ#sb zT9)K_>kko?ken`qLkRZXdKW-5`*rq(a5{*8R@>;Xe>IrPpQP*>XR>BeBadZ6{U3rf zYhZ`_T?DTs*_;C=)fzlW*-i7^P{9s+jOK-uQK@f7pXrf@hc5sC09;MwyCD0pxU2{F zKFiDQJ*d;%GP{T9XDQ{rzm>X(-8fl&Td>t2JJoep(L!h?-1yDma`15reXBuvs(~a5 zU~@V)Rg(Kj6kuwoLB|PJYOWTY140BrAnUL_t(|obB3Cl7k=+MNwnTPT2pF*vov7ak@YZD#~kf&zF^0 zR@*Hg;E_)lf1Z8sjlipC6u@f>$dc~223`yB7%mI2`n)@B1TG8kB(Ko{?6&=+hY)Uy zqzm6IAcWv9;~8fK_}J0A8wq|!2XKnJbOQhYS-e+Vs!Z=I`&(yTlf{|>OFx#!Ete9x zwJgbV?GF(fAvv7}hY;+u^)7&B_P5y$;dBuHte&I8f7W0wf0DARpUF;>>Uk_1>VFrc zSp(bM?;?0FNp%dERBP}gWi!oJLj@b`F`740My0+SeWpbo?!Ev30B|*x?}F^h;xZrH z`z|lL_MlF4$?P7YpQV)R{#I%tcHv}ox1e@HcB$*`qJ_{*xbd6A<>2EIdhLYrQUgg8 zz~*#pStR$9D8STEgN_5N)L1=!3~1bp>zFT*)FIXu@F9iSq0001v_yue2>Yg1Qd?Nq=002ovPDHLkV1f`JzOn!S diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00005.png b/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00005.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|{h?iLkPD; z(uMCH5JGU5@r<(qd>rWA%>+NA131N9x&Z)yES@VaRi^iq{jIaE$zn}`r60@VmQ#sb zT9)K_>kko?ken`qLkRZXdKW-5`*rq(a5{*8R@>;Xe>IrPpQP*>XR>BeBadZ6{U3rf zYhZ`_T?DTs*_;C=)fzlW*-i7^P{9s+jOK-uQK@f7pXrf@hc5sC09;MwyCD0pxU2{F zKFiDQJ*d;%GP{T9XDQ{rzm>X(-8fl&Td>t2JJoep(L!h?-1yDma`15reXBuvs(~a5 zU~@V)Rg(Kj6kuwoLB|PJYOWTY140BrAnUL_t(|obB3Cl7k=+MNwnTPT2pF*vov7ak@YZD#~kf&zF^0 zR@*Hg;E_)lf1Z8sjlipC6u@f>$dc~223`yB7%mI2`n)@B1TG8kB(Ko{?6&=+hY)Uy zqzm6IAcWv9;~8fK_}J0A8wq|!2XKnJbOQhYS-e+Vs!Z=I`&(yTlf{|>OFx#!Ete9x zwJgbV?GF(fAvv7}hY;+u^)7&B_P5y$;dBuHte&I8f7W0wf0DARpUF;>>Uk_1>VFrc zSp(bM?;?0FNp%dERBP}gWi!oJLj@b`F`740My0+SeWpbo?!Ev30B|*x?}F^h;xZrH z`z|lL_MlF4$?P7YpQV)R{#I%tcHv}ox1e@HcB$*`qJ_{*xbd6A<>2EIdhLYrQUgg8 zz~*#pStR$9D8STEgN_5N)L1=!3~1bp>zFT*)FIXu@F9iSq0001v_yue2>Yg1Qd?Nq=002ovPDHLkV1f`JzOn!S diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00004.png b/tests/speculos/screenshots/sign/nanox/blind_simple/00004.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|e~RBKjG9Cvvr+vg9k2z}t)}?kQE1{U`BevF zU%~(Y0N1p!8*1;I)Pv0@PrsfsJ~jJOCm7jhbvs&s+v{{=f6a61WCyk*ZpK~8_Ls18 z`}g~OoAdFcZe+Uv&iD5j>DM!beVOrN9ZJ1MjsNc>p1if_-4hIx zO!lWyQcd6~ delta 363 zcmV-x0hIoa1CIlcEq_50f-np~(du}U-v3CsiwlNMZPQQ{6NLX(STNND0yHH6006+< z&3{S}SvGRcqmhqeei_H#Bl-vI>5uYWL>53qa?Z`kn_f@nC8zZzGJm=BaqQqTF?V-& zo^M88r8PT!Uerv9NXcgTVjV{vtS9}!zu9oa7Svx8X+8Hx^?xYGG!g1h>R_|izXo9i zXqriX=B7cW-kqgvk9t=#yK@bKThM%p-ztonL?g3N{U;r;1=X#lP;bm8L+zE5da!xr>7VC}SIvIc2}bsLx*fgp*w5+4`r6E{lWo|JxEOaS+i${? z%fH{R+nmo#>SVSHFxkJF1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V|`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpPV-0__5jB!4tXL_t(|obB3M4uUWggyExcC+vSoXD>c9AxK+NNJwY!|DH5f zQqS}jFaiJo000000001hjLgi;YoBU*&+fn#%_`fKzAy`5S(fr*SMK%g+Q5Zb0MW|8 zxB3zBn%#km>IKKK`r$YOie0%)s~^4rJcerky-nDTWdPe|_^ zZ|I#keKYt8ATuqF6U|Oq^!$k3*m)GHKOY&)M+Wne0sf27-O%mi8#z;!_V%Yw9qR+d z`<^TcKC}GH?!b`dv zk6Zv{vkh9gndMc6<}wUO9Xc(j|DNyg+>kf~aQ< ke*gdg00000007+Y3sw)mR9g3FCIA2c07*qoM6N<$f+Jg>jsO4v diff --git a/tests/speculos/screenshots/sign/nanox/simple/00003.png b/tests/speculos/screenshots/sign/nanox/simple/00003.png index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..1bcb78761fd15fd94377813eb932cf0245af596a 100644 GIT binary patch delta 408 zcmV;J0cZZS1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4B!7EJL_t(|obA|Al7k=&fML4Rn{fXlahH8?WLOd)Z3)=*|DGJQ zK!Zk12mk;8z;ciEL#C9DgBWA0}S2_?g`BFMRCt|E^k7p52;f#)qiyEnvQjTW+VcCz`SPts&Z+`}^n1bXp5zc$RwI2DJ zs)w>GwXr(8ehs!QK$T47of{gFdUce1+{#_m=!@52a|*JD_@#wWgV>4euKW`&n1aew zlc_K2e#okRj*HdCy)R(^0Dyb)t%mjsFJ)u(#U!_boi9~+YS_}L$jYgH@!quc#nj*C zcgk~?Q&akt|BC2V| Date: Mon, 15 Jan 2024 17:00:20 +0100 Subject: [PATCH 103/160] Decommision src_common prior to reintroducing it for files common between eth and plugins --- {src_common => src}/ethUstream.c | 0 {src_common => src}/ethUstream.h | 0 {src_common => src}/ethUtils.c | 0 {src_common => src}/ethUtils.h | 0 {src_common => src}/hash_bytes.c | 0 {src_common => src}/hash_bytes.h | 0 {src_common => src}/mem.c | 0 {src_common => src}/mem.h | 0 {src_common => src}/mem_utils.c | 0 {src_common => src}/mem_utils.h | 0 {src_common => src}/network.c | 0 {src_common => src}/network.h | 0 {src_common => src}/plugins.c | 0 {src_common => src}/plugins.h | 0 {src_common => src}/starkDisplayUtils.c | 0 {src_common => src}/starkDisplayUtils.h | 0 {src_common => src}/uint128.c | 0 {src_common => src}/uint128.h | 0 {src_common => src}/uint256.c | 0 {src_common => src}/uint256.h | 0 {src_common => src}/uint_common.c | 0 {src_common => src}/uint_common.h | 0 tools/build_sdk.py | 6 +++--- 23 files changed, 3 insertions(+), 3 deletions(-) rename {src_common => src}/ethUstream.c (100%) rename {src_common => src}/ethUstream.h (100%) rename {src_common => src}/ethUtils.c (100%) rename {src_common => src}/ethUtils.h (100%) rename {src_common => src}/hash_bytes.c (100%) rename {src_common => src}/hash_bytes.h (100%) rename {src_common => src}/mem.c (100%) rename {src_common => src}/mem.h (100%) rename {src_common => src}/mem_utils.c (100%) rename {src_common => src}/mem_utils.h (100%) rename {src_common => src}/network.c (100%) rename {src_common => src}/network.h (100%) rename {src_common => src}/plugins.c (100%) rename {src_common => src}/plugins.h (100%) rename {src_common => src}/starkDisplayUtils.c (100%) rename {src_common => src}/starkDisplayUtils.h (100%) rename {src_common => src}/uint128.c (100%) rename {src_common => src}/uint128.h (100%) rename {src_common => src}/uint256.c (100%) rename {src_common => src}/uint256.h (100%) rename {src_common => src}/uint_common.c (100%) rename {src_common => src}/uint_common.h (100%) diff --git a/src_common/ethUstream.c b/src/ethUstream.c similarity index 100% rename from src_common/ethUstream.c rename to src/ethUstream.c diff --git a/src_common/ethUstream.h b/src/ethUstream.h similarity index 100% rename from src_common/ethUstream.h rename to src/ethUstream.h diff --git a/src_common/ethUtils.c b/src/ethUtils.c similarity index 100% rename from src_common/ethUtils.c rename to src/ethUtils.c diff --git a/src_common/ethUtils.h b/src/ethUtils.h similarity index 100% rename from src_common/ethUtils.h rename to src/ethUtils.h diff --git a/src_common/hash_bytes.c b/src/hash_bytes.c similarity index 100% rename from src_common/hash_bytes.c rename to src/hash_bytes.c diff --git a/src_common/hash_bytes.h b/src/hash_bytes.h similarity index 100% rename from src_common/hash_bytes.h rename to src/hash_bytes.h diff --git a/src_common/mem.c b/src/mem.c similarity index 100% rename from src_common/mem.c rename to src/mem.c diff --git a/src_common/mem.h b/src/mem.h similarity index 100% rename from src_common/mem.h rename to src/mem.h diff --git a/src_common/mem_utils.c b/src/mem_utils.c similarity index 100% rename from src_common/mem_utils.c rename to src/mem_utils.c diff --git a/src_common/mem_utils.h b/src/mem_utils.h similarity index 100% rename from src_common/mem_utils.h rename to src/mem_utils.h diff --git a/src_common/network.c b/src/network.c similarity index 100% rename from src_common/network.c rename to src/network.c diff --git a/src_common/network.h b/src/network.h similarity index 100% rename from src_common/network.h rename to src/network.h diff --git a/src_common/plugins.c b/src/plugins.c similarity index 100% rename from src_common/plugins.c rename to src/plugins.c diff --git a/src_common/plugins.h b/src/plugins.h similarity index 100% rename from src_common/plugins.h rename to src/plugins.h diff --git a/src_common/starkDisplayUtils.c b/src/starkDisplayUtils.c similarity index 100% rename from src_common/starkDisplayUtils.c rename to src/starkDisplayUtils.c diff --git a/src_common/starkDisplayUtils.h b/src/starkDisplayUtils.h similarity index 100% rename from src_common/starkDisplayUtils.h rename to src/starkDisplayUtils.h diff --git a/src_common/uint128.c b/src/uint128.c similarity index 100% rename from src_common/uint128.c rename to src/uint128.c diff --git a/src_common/uint128.h b/src/uint128.h similarity index 100% rename from src_common/uint128.h rename to src/uint128.h diff --git a/src_common/uint256.c b/src/uint256.c similarity index 100% rename from src_common/uint256.c rename to src/uint256.c diff --git a/src_common/uint256.h b/src/uint256.h similarity index 100% rename from src_common/uint256.h rename to src/uint256.h diff --git a/src_common/uint_common.c b/src/uint_common.c similarity index 100% rename from src_common/uint_common.c rename to src/uint_common.c diff --git a/src_common/uint_common.h b/src/uint_common.h similarity index 100% rename from src_common/uint_common.h rename to src/uint_common.h diff --git a/tools/build_sdk.py b/tools/build_sdk.py index a2763248e..7ca0f91da 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -157,8 +157,8 @@ def merge_c_files(sources, nodes_to_extract): "src/tokens.h", "src/chainConfig.h", "src/utils.h", - "src_common/ethUstream.h", - "src_common/ethUtils.h", + "src/ethUstream.h", + "src/ethUtils.h", "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", @@ -203,7 +203,7 @@ def merge_c_files(sources, nodes_to_extract): # extract and merge function bodies c_files_to_merge = [ "src/utils.c", - "src_common/ethUtils.c", + "src/ethUtils.c", "src/eth_plugin_internal.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From 6fe2d92d3b86c12e43d3428d98c7b4c7f9a3c0f1 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 17:12:49 +0100 Subject: [PATCH 104/160] Remove unused files from plugin-sdk generation --- src_plugin_sdk/LICENSE | 201 +++++++++++++++++++++++++++++++++++++++++ tools/build_sdk.py | 2 +- 2 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 src_plugin_sdk/LICENSE diff --git a/src_plugin_sdk/LICENSE b/src_plugin_sdk/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/src_plugin_sdk/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 7ca0f91da..40791814e 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -155,7 +155,6 @@ def merge_c_files(sources, nodes_to_extract): # one, copied to sdk headers_to_merge = [ "src/tokens.h", - "src/chainConfig.h", "src/utils.h", "src/ethUstream.h", "src/ethUtils.h", @@ -220,6 +219,7 @@ def merge_c_files(sources, nodes_to_extract): files_to_copy = [ "CHANGELOG.md", "README.md", + "LICENSE", "standard_plugin.mk", ] for file in files_to_copy: From 6430c8f463f7cd97ad55dc76d9f1b5ab976376bf Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 17:17:29 +0100 Subject: [PATCH 105/160] Read RUN_APPLICATION from sdk --- src/handle_get_printable_amount.c | 6 +++-- src/handle_swap_sign_transaction.c | 1 + src/swap_utils.c | 43 ++++++++++++++++++++++++++++++ src/swap_utils.h | 22 +++++++++++++++ src/utils.c | 20 -------------- src/utils.h | 2 -- src_plugin_sdk/main.c | 1 + tools/build_sdk.py | 2 -- 8 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 src/swap_utils.c create mode 100644 src/swap_utils.h diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index ced188a31..208b76bd9 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -1,11 +1,13 @@ +#include +#include + +#include "swap_utils.h" #include "handle_get_printable_amount.h" #include "shared_context.h" #include "ethUtils.h" #include "utils.h" #include "uint256.h" #include "string.h" -#include -#include void handle_get_printable_amount(get_printable_amount_parameters_t* params, chain_config_t* config) { diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 7161833c1..a2e71f238 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -1,6 +1,7 @@ #include "os_io_seproxyhal.h" #include "os.h" #include "ux.h" +#include "swap_utils.h" #include "handle_swap_sign_transaction.h" #include "shared_context.h" #include "utils.h" diff --git a/src/swap_utils.c b/src/swap_utils.c new file mode 100644 index 000000000..8cc005480 --- /dev/null +++ b/src/swap_utils.c @@ -0,0 +1,43 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include +#include +#include + +#include "tokens.h" +#include "swap_utils.h" + +bool parse_swap_config(const uint8_t *config, uint8_t config_len, char *ticker, uint8_t *decimals) { + uint8_t ticker_len, offset = 0; + if (config_len == 0) { + return false; + } + ticker_len = config[offset++]; + if (ticker_len == 0 || ticker_len > MAX_TICKER_LEN - 2 || config_len - offset < ticker_len) { + return false; + } + memcpy(ticker, config + offset, ticker_len); + offset += ticker_len; + ticker[ticker_len] = '\0'; + + if (config_len - offset < 1) { + return false; + } + *decimals = config[offset]; + return true; +} diff --git a/src/swap_utils.h b/src/swap_utils.h new file mode 100644 index 000000000..00af3d342 --- /dev/null +++ b/src/swap_utils.h @@ -0,0 +1,22 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#include + +bool parse_swap_config(const uint8_t* config, uint8_t config_len, char* ticker, uint8_t* decimals); diff --git a/src/utils.c b/src/utils.c index 3926bf25e..3db24b516 100644 --- a/src/utils.c +++ b/src/utils.c @@ -147,23 +147,3 @@ bool amountToString(const uint8_t *amount, out_buffer[out_buffer_size - 1] = '\0'; return true; } - -bool parse_swap_config(const uint8_t *config, uint8_t config_len, char *ticker, uint8_t *decimals) { - uint8_t ticker_len, offset = 0; - if (config_len == 0) { - return false; - } - ticker_len = config[offset++]; - if (ticker_len == 0 || ticker_len > MAX_TICKER_LEN - 2 || config_len - offset < ticker_len) { - return false; - } - memcpy(ticker, config + offset, ticker_len); - offset += ticker_len; - ticker[ticker_len] = '\0'; - - if (config_len - offset < 1) { - return false; - } - *decimals = config[offset]; - return true; -} diff --git a/src/utils.h b/src/utils.h index c276b6dd2..472ea513b 100644 --- a/src/utils.h +++ b/src/utils.h @@ -41,6 +41,4 @@ bool amountToString(const uint8_t* amount, char* out_buffer, size_t out_buffer_size); -bool parse_swap_config(const uint8_t* config, uint8_t config_len, char* ticker, uint8_t* decimals); - #endif // _UTILS_H_ diff --git a/src_plugin_sdk/main.c b/src_plugin_sdk/main.c index b36171f21..f3acb5463 100644 --- a/src_plugin_sdk/main.c +++ b/src_plugin_sdk/main.c @@ -17,6 +17,7 @@ #include "eth_internals.h" #include "eth_plugin_interface.h" +#include "lib_standard_app/swap_lib_calls.h" // RUN_APPLICATION // Functions implemented by the plugin void handle_init_contract(ethPluginInitContract_t *parameters); diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 40791814e..12f71e10d 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -161,7 +161,6 @@ def merge_c_files(sources, nodes_to_extract): "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", - "src/swap_lib_calls.h", ] nodes_to_extract = { "#define": ["MAX_TICKER_LEN", @@ -170,7 +169,6 @@ def merge_c_files(sources, nodes_to_extract): "WEI_TO_ETHER", "SELECTOR_SIZE", "PARAMETER_LENGTH", - "RUN_APPLICATION", "COLLECTION_NAME_MAX_LEN"], "typedef enum": [], "typedef struct": ["tokenDefinition_t", From 4d04d5113d3264ab101bf34d34322fd6a5185c0a Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 17:35:53 +0100 Subject: [PATCH 106/160] Extract data needed by plugin from ethUstream.h --- src/ethUstream.h | 30 ++++---------------------- src/eth_plugin_interface.h | 1 - src/tx_content.h | 43 ++++++++++++++++++++++++++++++++++++++ src/utils.c | 1 - src/utils.h | 4 ++++ tools/build_sdk.py | 2 +- 6 files changed, 52 insertions(+), 29 deletions(-) create mode 100644 src/tx_content.h diff --git a/src/ethUstream.h b/src/ethUstream.h index ed5aea364..73cfa401c 100644 --- a/src/ethUstream.h +++ b/src/ethUstream.h @@ -15,14 +15,15 @@ * limitations under the License. ********************************************************************************/ -#ifndef _ETHUSTREAM_H_ -#define _ETHUSTREAM_H_ +#pragma once #include #include #include "os.h" #include "cx.h" +#include "utils.h" +#include "tx_content.h" struct txContext_t; @@ -35,10 +36,7 @@ typedef enum customStatus_e { typedef customStatus_e (*ustreamProcess_t)(struct txContext_t *context); -#define TX_FLAG_TYPE 0x01 -#define ADDRESS_LENGTH 20 -#define INT128_LENGTH 16 -#define INT256_LENGTH 32 +#define TX_FLAG_TYPE 0x01 // First variant of every Tx enum. #define RLP_NONE 0 @@ -114,24 +112,6 @@ typedef enum parserStatus_e { USTREAM_CONTINUE // Used internally to signify we can keep on parsing } parserStatus_e; -typedef struct txInt256_t { - uint8_t value[INT256_LENGTH]; - uint8_t length; -} txInt256_t; - -typedef struct txContent_t { - txInt256_t gasprice; // Used as MaxFeePerGas when dealing with EIP1559 transactions. - txInt256_t startgas; // Also known as `gasLimit`. - txInt256_t value; - txInt256_t nonce; - txInt256_t chainID; - uint8_t destination[ADDRESS_LENGTH]; - uint8_t destinationLength; - uint8_t v[8]; - uint8_t vLength; - bool dataPresent; -} txContent_t; - typedef struct txContext_t { uint8_t currentField; cx_sha3_t *sha3; @@ -164,5 +144,3 @@ parserStatus_e processTx(txContext_t *context, parserStatus_e continueTx(txContext_t *context); void copyTxData(txContext_t *context, uint8_t *out, uint32_t length); uint8_t readTxByte(txContext_t *context); - -#endif // _ETHUSTREAM_H_ diff --git a/src/eth_plugin_interface.h b/src/eth_plugin_interface.h index fc8f23978..733912868 100644 --- a/src/eth_plugin_interface.h +++ b/src/eth_plugin_interface.h @@ -5,7 +5,6 @@ #include "os.h" #include "cx.h" -#include "ethUstream.h" #include "tokens.h" #include "shared_context.h" diff --git a/src/tx_content.h b/src/tx_content.h new file mode 100644 index 000000000..613700e51 --- /dev/null +++ b/src/tx_content.h @@ -0,0 +1,43 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#include +#include + +#include "os.h" +#include "cx.h" +#include "utils.h" + +typedef struct txInt256_t { + uint8_t value[INT256_LENGTH]; + uint8_t length; +} txInt256_t; + +typedef struct txContent_t { + txInt256_t gasprice; // Used as MaxFeePerGas when dealing with EIP1559 transactions. + txInt256_t startgas; // Also known as `gasLimit`. + txInt256_t value; + txInt256_t nonce; + txInt256_t chainID; + uint8_t destination[ADDRESS_LENGTH]; + uint8_t destinationLength; + uint8_t v[8]; + uint8_t vLength; + bool dataPresent; +} txContent_t; diff --git a/src/utils.c b/src/utils.c index 3db24b516..c88d3c235 100644 --- a/src/utils.c +++ b/src/utils.c @@ -18,7 +18,6 @@ #include #include -#include "ethUstream.h" #include "ethUtils.h" #include "uint128.h" #include "uint256.h" diff --git a/src/utils.h b/src/utils.h index 472ea513b..caf5246f2 100644 --- a/src/utils.h +++ b/src/utils.h @@ -22,6 +22,10 @@ #include "uint256.h" +#define ADDRESS_LENGTH 20 +#define INT128_LENGTH 16 +#define INT256_LENGTH 32 + #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) void array_hexstr(char* strbuf, const void* bin, unsigned int len); diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 12f71e10d..f61535e5a 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -156,7 +156,7 @@ def merge_c_files(sources, nodes_to_extract): headers_to_merge = [ "src/tokens.h", "src/utils.h", - "src/ethUstream.h", + "src/tx_content.h", "src/ethUtils.h", "src/shared_context.h", "src/eth_plugin_internal.h", From ca8700f47caa3de11b6596390ff59d74a09d361a Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 17:09:30 +0100 Subject: [PATCH 107/160] Split tokens file --- src/{tokens.c => extra_tokens.c} | 2 +- src/extra_tokens.h | 26 ++++++++++++ src/public_keys.h | 42 +++++++++++++++++++ src/tokens.h | 39 +---------------- .../cmd_provideTokenInfo.c | 2 +- .../setExternalPlugin/cmd_setExternalPlugin.c | 2 +- src_features/signMessageEIP712/filtering.c | 1 + 7 files changed, 74 insertions(+), 40 deletions(-) rename src/{tokens.c => extra_tokens.c} (98%) create mode 100644 src/extra_tokens.h create mode 100644 src/public_keys.h diff --git a/src/tokens.c b/src/extra_tokens.c similarity index 98% rename from src/tokens.c rename to src/extra_tokens.c index a750d9f08..9faefcbd3 100644 --- a/src/tokens.c +++ b/src/extra_tokens.c @@ -17,7 +17,7 @@ #ifdef HAVE_TOKENS_EXTRA_LIST -#include "tokens.h" +#include "extra_tokens.h" const tokenDefinition_t TOKENS_EXTRA[NUM_TOKENS_EXTRA] = { diff --git a/src/extra_tokens.h b/src/extra_tokens.h new file mode 100644 index 000000000..87fcb4a63 --- /dev/null +++ b/src/extra_tokens.h @@ -0,0 +1,26 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#ifdef HAVE_TOKENS_EXTRA_LIST + +#define NUM_TOKENS_EXTRA 8 + +extern tokenDefinition_t const TOKENS_EXTRA[NUM_TOKENS_EXTRA]; + +#endif diff --git a/src/public_keys.h b/src/public_keys.h new file mode 100644 index 000000000..d4a508b0d --- /dev/null +++ b/src/public_keys.h @@ -0,0 +1,42 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { +#if defined(HAVE_CAL_TEST_KEY) + 0x04, 0x4c, 0xca, 0x8f, 0xad, 0x49, 0x6a, 0xa5, 0x04, 0x0a, 0x00, 0xa7, 0xeb, 0x2f, + 0x5c, 0xc3, 0xb8, 0x53, 0x76, 0xd8, 0x8b, 0xa1, 0x47, 0xa7, 0xd7, 0x05, 0x4a, 0x99, + 0xc6, 0x40, 0x56, 0x18, 0x87, 0xfe, 0x17, 0xa0, 0x96, 0xe3, 0x6c, 0x3b, 0x52, 0x3b, + 0x24, 0x4f, 0x3e, 0x2f, 0xf7, 0xf8, 0x40, 0xae, 0x26, 0xc4, 0xe7, 0x7a, 0xd3, 0xbc, + 0x73, 0x9a, 0xf5, 0xde, 0x6f, 0x2d, 0x77, 0xa7, 0xb6 +#elif defined(HAVE_CAL_STAGING_KEY) + // staging key 2019-01-11 03:07PM (erc20signer) + 0x04, 0x20, 0xda, 0x62, 0x00, 0x3c, 0x0c, 0xe0, 0x97, 0xe3, 0x36, 0x44, 0xa1, 0x0f, + 0xe4, 0xc3, 0x04, 0x54, 0x06, 0x9a, 0x44, 0x54, 0xf0, 0xfa, 0x9d, 0x4e, 0x84, 0xf4, + 0x50, 0x91, 0x42, 0x9b, 0x52, 0x20, 0xaf, 0x9e, 0x35, 0xc0, 0xb2, 0xd9, 0x28, 0x93, + 0x80, 0x13, 0x73, 0x07, 0xde, 0x4d, 0xd1, 0xd4, 0x18, 0x42, 0x8c, 0xf2, 0x1a, 0x93, + 0xb3, 0x35, 0x61, 0xbb, 0x09, 0xd8, 0x8f, 0xe5, 0x79 +#else + // production key 2019-01-11 03:07PM (erc20signer) + 0x04, 0x5e, 0x6c, 0x10, 0x20, 0xc1, 0x4d, 0xc4, 0x64, 0x42, 0xfe, 0x89, 0xf9, 0x7c, + 0x0b, 0x68, 0xcd, 0xb1, 0x59, 0x76, 0xdc, 0x24, 0xf2, 0x4c, 0x31, 0x6e, 0x7b, 0x30, + 0xfe, 0x4e, 0x8c, 0xc7, 0x6b, 0x14, 0x89, 0x15, 0x0c, 0x21, 0x51, 0x4e, 0xbf, 0x44, + 0x0f, 0xf5, 0xde, 0xa5, 0x39, 0x3d, 0x83, 0xde, 0x53, 0x58, 0xcd, 0x09, 0x8f, 0xce, + 0x8f, 0xd0, 0xf8, 0x1d, 0xaa, 0x94, 0x97, 0x91, 0x83 +#endif +}; diff --git a/src/tokens.h b/src/tokens.h index 9ffab3a43..d839ceac4 100644 --- a/src/tokens.h +++ b/src/tokens.h @@ -15,11 +15,10 @@ * limitations under the License. ********************************************************************************/ -#ifndef _TOKENS_H_ -#define _TOKENS_H_ +#pragma once #include -#include "ethUstream.h" +#include "utils.h" #define MAX_TICKER_LEN 11 // 10 characters + '\0' #define MAX_ITEMS 2 @@ -32,37 +31,3 @@ typedef struct tokenDefinition_t { char ticker[MAX_TICKER_LEN]; uint8_t decimals; } tokenDefinition_t; - -#ifdef HAVE_TOKENS_EXTRA_LIST - -#define NUM_TOKENS_EXTRA 8 - -extern tokenDefinition_t const TOKENS_EXTRA[NUM_TOKENS_EXTRA]; - -#endif - -static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { -#if defined(HAVE_CAL_TEST_KEY) - 0x04, 0x4c, 0xca, 0x8f, 0xad, 0x49, 0x6a, 0xa5, 0x04, 0x0a, 0x00, 0xa7, 0xeb, 0x2f, - 0x5c, 0xc3, 0xb8, 0x53, 0x76, 0xd8, 0x8b, 0xa1, 0x47, 0xa7, 0xd7, 0x05, 0x4a, 0x99, - 0xc6, 0x40, 0x56, 0x18, 0x87, 0xfe, 0x17, 0xa0, 0x96, 0xe3, 0x6c, 0x3b, 0x52, 0x3b, - 0x24, 0x4f, 0x3e, 0x2f, 0xf7, 0xf8, 0x40, 0xae, 0x26, 0xc4, 0xe7, 0x7a, 0xd3, 0xbc, - 0x73, 0x9a, 0xf5, 0xde, 0x6f, 0x2d, 0x77, 0xa7, 0xb6 -#elif defined(HAVE_CAL_STAGING_KEY) - // staging key 2019-01-11 03:07PM (erc20signer) - 0x04, 0x20, 0xda, 0x62, 0x00, 0x3c, 0x0c, 0xe0, 0x97, 0xe3, 0x36, 0x44, 0xa1, 0x0f, - 0xe4, 0xc3, 0x04, 0x54, 0x06, 0x9a, 0x44, 0x54, 0xf0, 0xfa, 0x9d, 0x4e, 0x84, 0xf4, - 0x50, 0x91, 0x42, 0x9b, 0x52, 0x20, 0xaf, 0x9e, 0x35, 0xc0, 0xb2, 0xd9, 0x28, 0x93, - 0x80, 0x13, 0x73, 0x07, 0xde, 0x4d, 0xd1, 0xd4, 0x18, 0x42, 0x8c, 0xf2, 0x1a, 0x93, - 0xb3, 0x35, 0x61, 0xbb, 0x09, 0xd8, 0x8f, 0xe5, 0x79 -#else - // production key 2019-01-11 03:07PM (erc20signer) - 0x04, 0x5e, 0x6c, 0x10, 0x20, 0xc1, 0x4d, 0xc4, 0x64, 0x42, 0xfe, 0x89, 0xf9, 0x7c, - 0x0b, 0x68, 0xcd, 0xb1, 0x59, 0x76, 0xdc, 0x24, 0xf2, 0x4c, 0x31, 0x6e, 0x7b, 0x30, - 0xfe, 0x4e, 0x8c, 0xc7, 0x6b, 0x14, 0x89, 0x15, 0x0c, 0x21, 0x51, 0x4e, 0xbf, 0x44, - 0x0f, 0xf5, 0xde, 0xa5, 0x39, 0x3d, 0x83, 0xde, 0x53, 0x58, 0xcd, 0x09, 0x8f, 0xce, - 0x8f, 0xd0, 0xf8, 0x1d, 0xaa, 0x94, 0x97, 0x91, 0x83 -#endif -}; - -#endif // _TOKENS_H_ diff --git a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c index ff55f7d2d..5fd546bb4 100644 --- a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c +++ b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "tokens.h" +#include "public_keys.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_features/setExternalPlugin/cmd_setExternalPlugin.c b/src_features/setExternalPlugin/cmd_setExternalPlugin.c index 49e827a87..5960b8ad3 100644 --- a/src_features/setExternalPlugin/cmd_setExternalPlugin.c +++ b/src_features/setExternalPlugin/cmd_setExternalPlugin.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "tokens.h" +#include "public_keys.h" #include "eth_plugin_interface.h" #include "eth_plugin_internal.h" #include "common_ui.h" diff --git a/src_features/signMessageEIP712/filtering.c b/src_features/signMessageEIP712/filtering.c index 1ba40dccc..ff45a6eb9 100644 --- a/src_features/signMessageEIP712/filtering.c +++ b/src_features/signMessageEIP712/filtering.c @@ -4,6 +4,7 @@ #include "hash_bytes.h" #include "ethUstream.h" // INT256_LENGTH #include "apdu_constants.h" // APDU return codes +#include "public_keys.h" #include "context_712.h" #include "commands_712.h" #include "typed_data.h" From 82d776f771ad88c48a457f9854e7766fa5b21f4e Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 17:15:26 +0100 Subject: [PATCH 108/160] Remove macro unneeded by plugins from nft file --- src/eth_plugin_handler.h | 2 ++ src/nft.h | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/eth_plugin_handler.h b/src/eth_plugin_handler.h index acd982dc8..dab8ea46d 100644 --- a/src/eth_plugin_handler.h +++ b/src/eth_plugin_handler.h @@ -6,6 +6,8 @@ #define NO_EXTRA_INFO(ctx, idx) \ (allzeroes(&(ctx.transactionContext.extraInfo[idx]), sizeof(extraInfo_t))) +#define NO_NFT_METADATA (NO_EXTRA_INFO(tmpCtx, 1)) + void eth_plugin_prepare_init(ethPluginInitContract_t *init, const uint8_t *selector, uint32_t dataSize); diff --git a/src/nft.h b/src/nft.h index 43ee5d151..6404dc49a 100644 --- a/src/nft.h +++ b/src/nft.h @@ -1,14 +1,10 @@ -#ifndef _NFT_H_ -#define _NFT_H_ +#pragma once #include #define COLLECTION_NAME_MAX_LEN 70 -#define NO_NFT_METADATA (NO_EXTRA_INFO(tmpCtx, 1)) typedef struct nftInfo_t { uint8_t contractAddress[ADDRESS_LENGTH]; // must be first item char collectionName[COLLECTION_NAME_MAX_LEN + 1]; } nftInfo_t; - -#endif // _NFT_H_ From 04d0fde47a07c4557089758d87bd2acd060c8749 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 18:48:48 +0100 Subject: [PATCH 109/160] Move network features out of ethUtils --- src/ethUtils.c | 29 ----------------- src/ethUtils.h | 4 --- src/network.c | 31 +++++++++++++++++++ src/network.h | 7 +++-- .../cmd_provideNFTInfo.c | 1 + src_features/setPlugin/cmd_setPlugin.c | 1 + src_nbgl/ui_approve_tx.c | 1 + tools/gen_networks.py | 2 +- 8 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/ethUtils.c b/src/ethUtils.c index 0eb8ca372..38d21c9b9 100644 --- a/src/ethUtils.c +++ b/src/ethUtils.c @@ -348,32 +348,3 @@ bool adjustDecimals(const char *src, } return true; } - -// Returns the chain ID. Defaults to 0 if txType was not found (For TX). -uint64_t get_tx_chain_id(void) { - uint64_t chain_id = 0; - - switch (txContext.txType) { - case LEGACY: - chain_id = u64_from_BE(txContext.content->v, txContext.content->vLength); - break; - case EIP2930: - case EIP1559: - chain_id = u64_from_BE(tmpContent.txContent.chainID.value, - tmpContent.txContent.chainID.length); - break; - default: - PRINTF("Txtype `%d` not supported while generating chainID\n", txContext.txType); - break; - } - return chain_id; -} - -const char *get_displayable_ticker(const uint64_t *chain_id) { - const char *ticker = get_network_ticker_from_chain_id(chain_id); - - if (ticker == NULL) { - ticker = chainConfig->coinName; - } - return ticker; -} diff --git a/src/ethUtils.h b/src/ethUtils.h index 294224301..89a3c6346 100644 --- a/src/ethUtils.h +++ b/src/ethUtils.h @@ -84,10 +84,6 @@ static __attribute__((no_instrument_function)) inline int ismaxint(uint8_t *buf, return 1; } -uint64_t get_tx_chain_id(void); - -const char *get_displayable_ticker(const uint64_t *chain_id); - static const char HEXDIGITS[] = "0123456789abcdef"; #endif // _ETHUTILS_H_ diff --git a/src/network.c b/src/network.c index ce6dc6706..5430b85ea 100644 --- a/src/network.c +++ b/src/network.c @@ -2,6 +2,8 @@ #include "os_utils.h" #include "os_pic.h" #include "network.h" +#include "shared_context.h" +#include "utils.h" typedef struct network_info_s { const char *name; @@ -113,3 +115,32 @@ const char *get_network_ticker_from_chain_id(const uint64_t *chain_id) { bool chain_is_ethereum_compatible(const uint64_t *chain_id) { return get_network_from_chain_id(chain_id) != NULL; } + +// Returns the chain ID. Defaults to 0 if txType was not found (For TX). +uint64_t get_tx_chain_id(void) { + uint64_t chain_id = 0; + + switch (txContext.txType) { + case LEGACY: + chain_id = u64_from_BE(txContext.content->v, txContext.content->vLength); + break; + case EIP2930: + case EIP1559: + chain_id = u64_from_BE(tmpContent.txContent.chainID.value, + tmpContent.txContent.chainID.length); + break; + default: + PRINTF("Txtype `%d` not supported while generating chainID\n", txContext.txType); + break; + } + return chain_id; +} + +const char *get_displayable_ticker(const uint64_t *chain_id) { + const char *ticker = get_network_ticker_from_chain_id(chain_id); + + if (ticker == NULL) { + ticker = chainConfig->coinName; + } + return ticker; +} diff --git a/src/network.h b/src/network.h index 8361bcb9a..c6640d554 100644 --- a/src/network.h +++ b/src/network.h @@ -1,5 +1,4 @@ -#ifndef _NETWORK_H_ -#define _NETWORK_H_ +#pragma once #include #include @@ -9,4 +8,6 @@ const char *get_network_ticker_from_chain_id(const uint64_t *chain_id); bool chain_is_ethereum_compatible(const uint64_t *chain_id); -#endif // _NETWORK_H_ +uint64_t get_tx_chain_id(void); + +const char *get_displayable_ticker(const uint64_t *chain_id); diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 9068b1ee0..1c329b2bb 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -6,6 +6,7 @@ #include "utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" +#include "network.h" #define TYPE_SIZE 1 #define VERSION_SIZE 1 diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 6d3757a1e..1da01a102 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -6,6 +6,7 @@ #include "utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" +#include "network.h" // Supported internal plugins #define ERC721_STR "ERC721" diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index b3ddffb3f..ed5e0ae39 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -8,6 +8,7 @@ #include "plugins.h" #include "domain_name.h" #include "network_icons.h" +#include "network.h" #define TEXT_TX "transaction" // 1 more than actually displayed on screen, because of calculations in StaticReview diff --git a/tools/gen_networks.py b/tools/gen_networks.py index 99b378da0..7b7f9ab2f 100755 --- a/tools/gen_networks.py +++ b/tools/gen_networks.py @@ -90,7 +90,7 @@ def main(output_dir: str) -> bool: # get chain IDs and network names expr = r"{\.chain_id = ([0-9]*), \.name = \"(.*)\", \.ticker = \"(.*)\"}," - with open("src_common/network.c") as f: + with open("src/network.c") as f: for line in f.readlines(): line = line.strip() if line.startswith("{") and line.endswith("},"): From 1155bd2df0d3d2a78dd1cac47b1e78bc0c5f459a Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 18:50:25 +0100 Subject: [PATCH 110/160] Move rlp utils to dedicated file --- src/ethUstream.c | 2 +- src/ethUtils.c | 83 ---------------------------------- src/ethUtils.h | 15 ------- src/rlp_utils.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++ src/rlp_utils.h | 37 ++++++++++++++++ 5 files changed, 151 insertions(+), 99 deletions(-) create mode 100644 src/rlp_utils.c create mode 100644 src/rlp_utils.h diff --git a/src/ethUstream.c b/src/ethUstream.c index 81e607dc3..90f2f9954 100644 --- a/src/ethUstream.c +++ b/src/ethUstream.c @@ -19,7 +19,7 @@ #include #include "ethUstream.h" -#include "ethUtils.h" +#include "rlp_utils.h" #include "utils.h" #define MAX_INT256 32 diff --git a/src/ethUtils.c b/src/ethUtils.c index 38d21c9b9..02c57971d 100644 --- a/src/ethUtils.c +++ b/src/ethUtils.c @@ -34,89 +34,6 @@ #include "ethUstream.h" #include "network.h" -bool rlpCanDecode(uint8_t *buffer, uint32_t bufferLength, bool *valid) { - if (*buffer <= 0x7f) { - } else if (*buffer <= 0xb7) { - } else if (*buffer <= 0xbf) { - if (bufferLength < (1 + (*buffer - 0xb7))) { - return false; - } - if (*buffer > 0xbb) { - *valid = false; // arbitrary 32 bits length limitation - return true; - } - } else if (*buffer <= 0xf7) { - } else { - if (bufferLength < (1 + (*buffer - 0xf7))) { - return false; - } - if (*buffer > 0xfb) { - *valid = false; // arbitrary 32 bits length limitation - return true; - } - } - *valid = true; - return true; -} - -bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, bool *list) { - if (*buffer <= 0x7f) { - *offset = 0; - *fieldLength = 1; - *list = false; - } else if (*buffer <= 0xb7) { - *offset = 1; - *fieldLength = *buffer - 0x80; - *list = false; - } else if (*buffer <= 0xbf) { - *offset = 1 + (*buffer - 0xb7); - *list = false; - switch (*buffer) { - case 0xb8: - *fieldLength = *(buffer + 1); - break; - case 0xb9: - *fieldLength = (*(buffer + 1) << 8) + *(buffer + 2); - break; - case 0xba: - *fieldLength = (*(buffer + 1) << 16) + (*(buffer + 2) << 8) + *(buffer + 3); - break; - case 0xbb: - *fieldLength = (*(buffer + 1) << 24) + (*(buffer + 2) << 16) + - (*(buffer + 3) << 8) + *(buffer + 4); - break; - default: - return false; // arbitrary 32 bits length limitation - } - } else if (*buffer <= 0xf7) { - *offset = 1; - *fieldLength = *buffer - 0xc0; - *list = true; - } else { - *offset = 1 + (*buffer - 0xf7); - *list = true; - switch (*buffer) { - case 0xf8: - *fieldLength = *(buffer + 1); - break; - case 0xf9: - *fieldLength = (*(buffer + 1) << 8) + *(buffer + 2); - break; - case 0xfa: - *fieldLength = (*(buffer + 1) << 16) + (*(buffer + 2) << 8) + *(buffer + 3); - break; - case 0xfb: - *fieldLength = (*(buffer + 1) << 24) + (*(buffer + 2) << 16) + - (*(buffer + 3) << 8) + *(buffer + 4); - break; - default: - return false; // arbitrary 32 bits length limitation - } - } - - return true; -} - bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context) { uint8_t hashAddress[INT256_LENGTH]; diff --git a/src/ethUtils.h b/src/ethUtils.h index 89a3c6346..dce493a7a 100644 --- a/src/ethUtils.h +++ b/src/ethUtils.h @@ -25,21 +25,6 @@ #define KECCAK256_HASH_BYTESIZE 32 -/** - * @brief Decode an RLP encoded field - see - * https://github.com/ethereum/wiki/wiki/RLP - * @param [in] buffer buffer containing the RLP encoded field to decode - * @param [out] fieldLength length of the RLP encoded field - * @param [out] offset offset to the beginning of the RLP encoded field from the - * buffer - * @param [out] list true if the field encodes a list, false if it encodes a - * string - * @return true if the RLP header is consistent - */ -bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, bool *list); - -bool rlpCanDecode(uint8_t *buffer, uint32_t bufferLength, bool *valid); - bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context); bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, diff --git a/src/rlp_utils.c b/src/rlp_utils.c new file mode 100644 index 000000000..b8b3a8f65 --- /dev/null +++ b/src/rlp_utils.c @@ -0,0 +1,113 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +/** + * @brief Utilities for an Ethereum Hardware Wallet logic + * @file ethUtils.h + * @author Ledger Firmware Team + * @version 1.0 + * @date 8th of March 2016 + */ + +#include +#include +#include + +#include "rlp_utils.h" + +bool rlpCanDecode(uint8_t *buffer, uint32_t bufferLength, bool *valid) { + if (*buffer <= 0x7f) { + } else if (*buffer <= 0xb7) { + } else if (*buffer <= 0xbf) { + if (bufferLength < (1 + (*buffer - 0xb7))) { + return false; + } + if (*buffer > 0xbb) { + *valid = false; // arbitrary 32 bits length limitation + return true; + } + } else if (*buffer <= 0xf7) { + } else { + if (bufferLength < (1 + (*buffer - 0xf7))) { + return false; + } + if (*buffer > 0xfb) { + *valid = false; // arbitrary 32 bits length limitation + return true; + } + } + *valid = true; + return true; +} + +bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, bool *list) { + if (*buffer <= 0x7f) { + *offset = 0; + *fieldLength = 1; + *list = false; + } else if (*buffer <= 0xb7) { + *offset = 1; + *fieldLength = *buffer - 0x80; + *list = false; + } else if (*buffer <= 0xbf) { + *offset = 1 + (*buffer - 0xb7); + *list = false; + switch (*buffer) { + case 0xb8: + *fieldLength = *(buffer + 1); + break; + case 0xb9: + *fieldLength = (*(buffer + 1) << 8) + *(buffer + 2); + break; + case 0xba: + *fieldLength = (*(buffer + 1) << 16) + (*(buffer + 2) << 8) + *(buffer + 3); + break; + case 0xbb: + *fieldLength = (*(buffer + 1) << 24) + (*(buffer + 2) << 16) + + (*(buffer + 3) << 8) + *(buffer + 4); + break; + default: + return false; // arbitrary 32 bits length limitation + } + } else if (*buffer <= 0xf7) { + *offset = 1; + *fieldLength = *buffer - 0xc0; + *list = true; + } else { + *offset = 1 + (*buffer - 0xf7); + *list = true; + switch (*buffer) { + case 0xf8: + *fieldLength = *(buffer + 1); + break; + case 0xf9: + *fieldLength = (*(buffer + 1) << 8) + *(buffer + 2); + break; + case 0xfa: + *fieldLength = (*(buffer + 1) << 16) + (*(buffer + 2) << 8) + *(buffer + 3); + break; + case 0xfb: + *fieldLength = (*(buffer + 1) << 24) + (*(buffer + 2) << 16) + + (*(buffer + 3) << 8) + *(buffer + 4); + break; + default: + return false; // arbitrary 32 bits length limitation + } + } + + return true; +} diff --git a/src/rlp_utils.h b/src/rlp_utils.h new file mode 100644 index 000000000..7da158836 --- /dev/null +++ b/src/rlp_utils.h @@ -0,0 +1,37 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#include +#include +#include + +/** + * @brief Decode an RLP encoded field - see + * https://github.com/ethereum/wiki/wiki/RLP + * @param [in] buffer buffer containing the RLP encoded field to decode + * @param [out] fieldLength length of the RLP encoded field + * @param [out] offset offset to the beginning of the RLP encoded field from the + * buffer + * @param [out] list true if the field encodes a list, false if it encodes a + * string + * @return true if the RLP header is consistent + */ +bool rlpDecodeLength(uint8_t *buffer, uint32_t *fieldLength, uint32_t *offset, bool *list); + +bool rlpCanDecode(uint8_t *buffer, uint32_t bufferLength, bool *valid); From 3d9da0dd161c8cad3292f188fec247b56ae0679c Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 18:52:12 +0100 Subject: [PATCH 111/160] Move basic utility functions from ethUtils to main utils file --- src/ethUtils.c | 267 ------------------ src/ethUtils.h | 74 ----- src/eth_plugin_handler.c | 1 - src/eth_plugin_internal.c | 1 - src/handle_check_address.c | 1 - src/handle_get_printable_amount.c | 1 - src/stark_crypto.c | 1 - src/stark_utils.c | 1 - src/uint128.c | 2 +- src/uint256.c | 1 - src/utils.c | 233 ++++++++++++++- src/utils.h | 72 ++++- src_bagl/ui_flow_signMessage712_v0.c | 1 - src_bagl/ui_flow_signTx.c | 1 - src_bagl/ui_flow_stark_sign.c | 1 - src_features/getPublicKey/cmd_getPublicKey.c | 1 - .../cmd_performPrivacyOperation.c | 1 - src_features/signMessageEIP712/commands_712.c | 1 - src_features/signMessageEIP712/field_hash.c | 1 - src_features/signMessageEIP712/path.c | 1 - src_features/signMessageEIP712/type_hash.c | 1 - src_features/signMessageEIP712/ui_logic.c | 3 +- .../signMessageEIP712_v0/cmd_signMessage712.c | 1 - src_features/signTx/logic_signTx.c | 1 - .../cmd_stark_provideQuantum.c | 1 - src_features/stark_sign/cmd_stark_sign.c | 1 - src_nbgl/ui_approve_tx.c | 1 - src_nbgl/ui_sign_712_v0.c | 1 - src_nbgl/ui_stark_transfer.c | 1 - src_plugins/erc1155/erc1155_plugin.c | 1 - .../erc1155/erc1155_provide_parameters.c | 1 - src_plugins/erc1155/erc1155_ui.c | 1 - src_plugins/erc20/erc20_plugin.c | 1 - src_plugins/erc721/erc721_plugin.c | 1 - src_plugins/erc721/erc721_ui.c | 1 - src_plugins/eth2/eth2_plugin.c | 1 - src_plugins/starkware/starkware_plugin.c | 1 - tools/build_sdk.py | 2 - 38 files changed, 294 insertions(+), 390 deletions(-) delete mode 100644 src/ethUtils.c delete mode 100644 src/ethUtils.h diff --git a/src/ethUtils.c b/src/ethUtils.c deleted file mode 100644 index 02c57971d..000000000 --- a/src/ethUtils.c +++ /dev/null @@ -1,267 +0,0 @@ -/******************************************************************************* - * Ledger Ethereum App - * (c) 2016-2019 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -/** - * @brief Utilities for an Ethereum Hardware Wallet logic - * @file ethUtils.h - * @author Ledger Firmware Team - * @version 1.0 - * @date 8th of March 2016 - */ - -#include -#include -#include - -#include "shared_context.h" -#include "utils.h" -#include "ethUtils.h" -#include "chainConfig.h" -#include "ethUstream.h" -#include "network.h" - -bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context) { - uint8_t hashAddress[INT256_LENGTH]; - - if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { - return false; - } - - if (cx_hash_no_throw((cx_hash_t *) sha3Context, - CX_LAST, - publicKey->W + 1, - 64, - hashAddress, - 32) != CX_OK) { - return false; - } - - memmove(out, hashAddress + 12, 20); - return true; -} - -bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, - char *out, - cx_sha3_t *sha3Context, - uint64_t chainId) { - uint8_t hashAddress[INT256_LENGTH]; - - if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { - return false; - } - - if (cx_hash_no_throw((cx_hash_t *) sha3Context, - CX_LAST, - publicKey->W + 1, - 64, - hashAddress, - 32) != CX_OK) { - return false; - } - - if (!getEthAddressStringFromBinary(hashAddress + 12, out, sha3Context, chainId)) { - return false; - } - - return true; -} - -bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size) { - // Copy the numbers in ASCII format. - uint8_t i = 0; - do { - // Checking `i + 1` to make sure we have enough space for '\0'. - if (i + 1 >= dst_size) { - return false; - } - dst[i] = src % 10 + '0'; - src /= 10; - i++; - } while (src); - - // Null terminate string - dst[i] = '\0'; - - // Revert the string - i--; - uint8_t j = 0; - while (j < i) { - char tmp = dst[i]; - dst[i] = dst[j]; - dst[j] = tmp; - i--; - j++; - } - return true; -} - -bool getEthAddressStringFromBinary(uint8_t *address, - char *out, - cx_sha3_t *sha3Context, - uint64_t chainId) { - // save some precious stack space - union locals_union { - uint8_t hashChecksum[INT256_LENGTH]; - uint8_t tmp[51]; - } locals_union; - - uint8_t i; - bool eip1191 = false; - uint32_t offset = 0; - switch (chainId) { - case 30: - case 31: - eip1191 = true; - break; - } - if (eip1191) { - if (!u64_to_string(chainId, (char *) locals_union.tmp, sizeof(locals_union.tmp))) { - return false; - } - offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); - strlcat((char *) locals_union.tmp + offset, "0x", sizeof(locals_union.tmp) - offset); - offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); - } - for (i = 0; i < 20; i++) { - uint8_t digit = address[i]; - locals_union.tmp[offset + 2 * i] = HEXDIGITS[(digit >> 4) & 0x0f]; - locals_union.tmp[offset + 2 * i + 1] = HEXDIGITS[digit & 0x0f]; - } - if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { - return false; - } - - if (cx_hash_no_throw((cx_hash_t *) sha3Context, - CX_LAST, - locals_union.tmp, - offset + 40, - locals_union.hashChecksum, - 32) != CX_OK) { - return false; - } - for (i = 0; i < 40; i++) { - uint8_t digit = address[i / 2]; - if ((i % 2) == 0) { - digit = (digit >> 4) & 0x0f; - } else { - digit = digit & 0x0f; - } - if (digit < 10) { - out[i] = HEXDIGITS[digit]; - } else { - int v = (locals_union.hashChecksum[i / 2] >> (4 * (1 - i % 2))) & 0x0f; - if (v >= 8) { - out[i] = HEXDIGITS[digit] - 'a' + 'A'; - } else { - out[i] = HEXDIGITS[digit]; - } - } - } - out[40] = '\0'; - - return true; -} - -/* Fills the `out` buffer with the lowercase string representation of the pubkey passed in as binary -format by `in`. (eg: uint8_t*:0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB -> -char*:"0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB\0" ) -`sha3` context doesn't have have to be initialized prior to call.*/ -bool getEthDisplayableAddress(uint8_t *in, - char *out, - size_t out_len, - cx_sha3_t *sha3, - uint64_t chainId) { - if (out_len < 43) { - strlcpy(out, "ERROR", out_len); - return false; - } - out[0] = '0'; - out[1] = 'x'; - if (!getEthAddressStringFromBinary(in, out + 2, sha3, chainId)) { - strlcpy(out, "ERROR", out_len); - return false; - } - - return true; -} - -bool adjustDecimals(const char *src, - size_t srcLength, - char *target, - size_t targetLength, - uint8_t decimals) { - uint32_t startOffset; - uint32_t lastZeroOffset = 0; - uint32_t offset = 0; - if ((srcLength == 1) && (*src == '0')) { - if (targetLength < 2) { - return false; - } - target[0] = '0'; - target[1] = '\0'; - return true; - } - if (srcLength <= decimals) { - uint32_t delta = decimals - srcLength; - if (targetLength < srcLength + 1 + 2 + delta) { - return false; - } - target[offset++] = '0'; - target[offset++] = '.'; - for (uint32_t i = 0; i < delta; i++) { - target[offset++] = '0'; - } - startOffset = offset; - for (uint32_t i = 0; i < srcLength; i++) { - target[offset++] = src[i]; - } - target[offset] = '\0'; - } else { - uint32_t sourceOffset = 0; - uint32_t delta = srcLength - decimals; - if (targetLength < srcLength + 1 + 1) { - return false; - } - while (offset < delta) { - target[offset++] = src[sourceOffset++]; - } - if (decimals != 0) { - target[offset++] = '.'; - } - startOffset = offset; - while (sourceOffset < srcLength) { - target[offset++] = src[sourceOffset++]; - } - target[offset] = '\0'; - } - for (uint32_t i = startOffset; i < offset; i++) { - if (target[i] == '0') { - if (lastZeroOffset == 0) { - lastZeroOffset = i; - } - } else { - lastZeroOffset = 0; - } - } - if (lastZeroOffset != 0) { - target[lastZeroOffset] = '\0'; - if (target[lastZeroOffset - 1] == '.') { - target[lastZeroOffset - 1] = '\0'; - } - } - return true; -} diff --git a/src/ethUtils.h b/src/ethUtils.h deleted file mode 100644 index dce493a7a..000000000 --- a/src/ethUtils.h +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Ledger Ethereum App - * (c) 2016-2019 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#ifndef _ETHUTILS_H_ -#define _ETHUTILS_H_ - -#include - -#include "cx.h" -#include "chainConfig.h" - -#define KECCAK256_HASH_BYTESIZE 32 - -bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context); - -bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, - char *out, - cx_sha3_t *sha3Context, - uint64_t chainId); - -bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size); - -bool getEthAddressStringFromBinary(uint8_t *address, - char *out, - cx_sha3_t *sha3Context, - uint64_t chainId); - -bool getEthDisplayableAddress(uint8_t *in, - char *out, - size_t out_len, - cx_sha3_t *sha3, - uint64_t chainId); - -bool adjustDecimals(const char *src, - size_t srcLength, - char *target, - size_t targetLength, - uint8_t decimals); - -static __attribute__((no_instrument_function)) inline int allzeroes(const void *buf, size_t n) { - uint8_t *p = (uint8_t *) buf; - for (size_t i = 0; i < n; ++i) { - if (p[i]) { - return 0; - } - } - return 1; -} -static __attribute__((no_instrument_function)) inline int ismaxint(uint8_t *buf, int n) { - for (int i = 0; i < n; ++i) { - if (buf[i] != 0xff) { - return 0; - } - } - return 1; -} - -static const char HEXDIGITS[] = "0123456789abcdef"; - -#endif // _ETHUTILS_H_ diff --git a/src/eth_plugin_handler.c b/src/eth_plugin_handler.c index bb73e9e1f..17683f3fb 100644 --- a/src/eth_plugin_handler.c +++ b/src/eth_plugin_handler.c @@ -3,7 +3,6 @@ #include "eth_plugin_internal.h" #include "shared_context.h" #include "network.h" -#include "ethUtils.h" void eth_plugin_prepare_init(ethPluginInitContract_t *init, const uint8_t *selector, diff --git a/src/eth_plugin_internal.c b/src/eth_plugin_internal.c index 075f2ec58..74b25c6fa 100644 --- a/src/eth_plugin_internal.c +++ b/src/eth_plugin_internal.c @@ -1,6 +1,5 @@ #include #include "eth_plugin_internal.h" -#include "ethUtils.h" // allzeroes bool erc20_plugin_available_check(void); diff --git a/src/handle_check_address.c b/src/handle_check_address.c index 3fdb1f12e..45c8586fa 100644 --- a/src/handle_check_address.c +++ b/src/handle_check_address.c @@ -1,7 +1,6 @@ #include "handle_check_address.h" #include "os.h" #include "shared_context.h" -#include "ethUtils.h" #include "string.h" #define ZERO(x) explicit_bzero(&x, sizeof(x)) diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index 208b76bd9..4503abd42 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -4,7 +4,6 @@ #include "swap_utils.h" #include "handle_get_printable_amount.h" #include "shared_context.h" -#include "ethUtils.h" #include "utils.h" #include "uint256.h" #include "string.h" diff --git a/src/stark_crypto.c b/src/stark_crypto.c index ca738c930..898b3514a 100644 --- a/src/stark_crypto.c +++ b/src/stark_crypto.c @@ -3,7 +3,6 @@ #include "shared_context.h" #include "stark_utils.h" #include "utils.h" -#include "ethUtils.h" extraInfo_t *getKnownToken(uint8_t *contractAddress); diff --git a/src/stark_utils.c b/src/stark_utils.c index a585e0360..13cf5483f 100644 --- a/src/stark_utils.c +++ b/src/stark_utils.c @@ -2,7 +2,6 @@ #include "stark_crypto.h" #include "shared_context.h" -#include "ethUtils.h" #include "uint256.h" #include "uint_common.h" diff --git a/src/uint128.c b/src/uint128.c index 0663a24e0..88374585e 100644 --- a/src/uint128.c +++ b/src/uint128.c @@ -21,7 +21,7 @@ #include #include "uint128.h" #include "uint_common.h" -#include "ethUtils.h" // HEXDIGITS +#include "utils.h" // HEXDIGITS void readu128BE(const uint8_t *const buffer, uint128_t *const target) { UPPER_P(target) = readUint64BE(buffer); diff --git a/src/uint256.c b/src/uint256.c index 78511249a..f43588ab2 100644 --- a/src/uint256.c +++ b/src/uint256.c @@ -22,7 +22,6 @@ #include "uint256.h" #include "uint_common.h" #include "ethUstream.h" // INT256_LENGTH -#include "ethUtils.h" // HEXDIGITS void readu256BE(const uint8_t *const buffer, uint256_t *const target) { readu128BE(buffer, &UPPER_P(target)); diff --git a/src/utils.c b/src/utils.c index c88d3c235..1697214db 100644 --- a/src/utils.c +++ b/src/utils.c @@ -18,7 +18,6 @@ #include #include -#include "ethUtils.h" #include "uint128.h" #include "uint256.h" #include "tokens.h" @@ -72,6 +71,35 @@ uint64_t u64_from_BE(const uint8_t *in, uint8_t size) { return res; } +bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size) { + // Copy the numbers in ASCII format. + uint8_t i = 0; + do { + // Checking `i + 1` to make sure we have enough space for '\0'. + if (i + 1 >= dst_size) { + return false; + } + dst[i] = src % 10 + '0'; + src /= 10; + i++; + } while (src); + + // Null terminate string + dst[i] = '\0'; + + // Revert the string + i--; + uint8_t j = 0; + while (j < i) { + char tmp = dst[i]; + dst[i] = dst[j]; + dst[j] = tmp; + i--; + j++; + } + return true; +} + bool uint256_to_decimal(const uint8_t *value, size_t value_len, char *out, size_t out_len) { if (value_len > INT256_LENGTH) { // value len is bigger than INT256_LENGTH ?! @@ -115,6 +143,73 @@ bool uint256_to_decimal(const uint8_t *value, size_t value_len, char *out, size_ return true; } +bool adjustDecimals(const char *src, + size_t srcLength, + char *target, + size_t targetLength, + uint8_t decimals) { + uint32_t startOffset; + uint32_t lastZeroOffset = 0; + uint32_t offset = 0; + if ((srcLength == 1) && (*src == '0')) { + if (targetLength < 2) { + return false; + } + target[0] = '0'; + target[1] = '\0'; + return true; + } + if (srcLength <= decimals) { + uint32_t delta = decimals - srcLength; + if (targetLength < srcLength + 1 + 2 + delta) { + return false; + } + target[offset++] = '0'; + target[offset++] = '.'; + for (uint32_t i = 0; i < delta; i++) { + target[offset++] = '0'; + } + startOffset = offset; + for (uint32_t i = 0; i < srcLength; i++) { + target[offset++] = src[i]; + } + target[offset] = '\0'; + } else { + uint32_t sourceOffset = 0; + uint32_t delta = srcLength - decimals; + if (targetLength < srcLength + 1 + 1) { + return false; + } + while (offset < delta) { + target[offset++] = src[sourceOffset++]; + } + if (decimals != 0) { + target[offset++] = '.'; + } + startOffset = offset; + while (sourceOffset < srcLength) { + target[offset++] = src[sourceOffset++]; + } + target[offset] = '\0'; + } + for (uint32_t i = startOffset; i < offset; i++) { + if (target[i] == '0') { + if (lastZeroOffset == 0) { + lastZeroOffset = i; + } + } else { + lastZeroOffset = 0; + } + } + if (lastZeroOffset != 0) { + target[lastZeroOffset] = '\0'; + if (target[lastZeroOffset - 1] == '.') { + target[lastZeroOffset - 1] = '\0'; + } + } + return true; +} + bool amountToString(const uint8_t *amount, uint8_t amount_size, uint8_t decimals, @@ -146,3 +241,139 @@ bool amountToString(const uint8_t *amount, out_buffer[out_buffer_size - 1] = '\0'; return true; } + +bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context) { + uint8_t hashAddress[INT256_LENGTH]; + + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + publicKey->W + 1, + 64, + hashAddress, + 32) != CX_OK) { + return false; + } + + memmove(out, hashAddress + 12, 20); + return true; +} + +bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, + char *out, + cx_sha3_t *sha3Context, + uint64_t chainId) { + uint8_t hashAddress[INT256_LENGTH]; + + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + publicKey->W + 1, + 64, + hashAddress, + 32) != CX_OK) { + return false; + } + + if (!getEthAddressStringFromBinary(hashAddress + 12, out, sha3Context, chainId)) { + return false; + } + + return true; +} + +bool getEthAddressStringFromBinary(uint8_t *address, + char *out, + cx_sha3_t *sha3Context, + uint64_t chainId) { + // save some precious stack space + union locals_union { + uint8_t hashChecksum[INT256_LENGTH]; + uint8_t tmp[51]; + } locals_union; + + uint8_t i; + bool eip1191 = false; + uint32_t offset = 0; + switch (chainId) { + case 30: + case 31: + eip1191 = true; + break; + } + if (eip1191) { + if (!u64_to_string(chainId, (char *) locals_union.tmp, sizeof(locals_union.tmp))) { + return false; + } + offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); + strlcat((char *) locals_union.tmp + offset, "0x", sizeof(locals_union.tmp) - offset); + offset = strnlen((char *) locals_union.tmp, sizeof(locals_union.tmp)); + } + for (i = 0; i < 20; i++) { + uint8_t digit = address[i]; + locals_union.tmp[offset + 2 * i] = HEXDIGITS[(digit >> 4) & 0x0f]; + locals_union.tmp[offset + 2 * i + 1] = HEXDIGITS[digit & 0x0f]; + } + if (cx_keccak_init_no_throw(sha3Context, 256) != CX_OK) { + return false; + } + + if (cx_hash_no_throw((cx_hash_t *) sha3Context, + CX_LAST, + locals_union.tmp, + offset + 40, + locals_union.hashChecksum, + 32) != CX_OK) { + return false; + } + for (i = 0; i < 40; i++) { + uint8_t digit = address[i / 2]; + if ((i % 2) == 0) { + digit = (digit >> 4) & 0x0f; + } else { + digit = digit & 0x0f; + } + if (digit < 10) { + out[i] = HEXDIGITS[digit]; + } else { + int v = (locals_union.hashChecksum[i / 2] >> (4 * (1 - i % 2))) & 0x0f; + if (v >= 8) { + out[i] = HEXDIGITS[digit] - 'a' + 'A'; + } else { + out[i] = HEXDIGITS[digit]; + } + } + } + out[40] = '\0'; + + return true; +} + +/* Fills the `out` buffer with the lowercase string representation of the pubkey passed in as binary +format by `in`. (eg: uint8_t*:0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB -> +char*:"0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB\0" ) +`sha3` context doesn't have have to be initialized prior to call.*/ +bool getEthDisplayableAddress(uint8_t *in, + char *out, + size_t out_len, + cx_sha3_t *sha3, + uint64_t chainId) { + if (out_len < 43) { + strlcpy(out, "ERROR", out_len); + return false; + } + out[0] = '0'; + out[1] = 'x'; + if (!getEthAddressStringFromBinary(in, out + 2, sha3, chainId)) { + strlcpy(out, "ERROR", out_len); + return false; + } + + return true; +} diff --git a/src/utils.h b/src/utils.h index caf5246f2..d66c4a08c 100644 --- a/src/utils.h +++ b/src/utils.h @@ -15,34 +15,82 @@ * limitations under the License. ********************************************************************************/ -#ifndef _UTILS_H_ -#define _UTILS_H_ +#pragma once +#include #include +#include "os.h" +#include "cx.h" #include "uint256.h" #define ADDRESS_LENGTH 20 #define INT128_LENGTH 16 #define INT256_LENGTH 32 +#define KECCAK256_HASH_BYTESIZE 32 + +static const char HEXDIGITS[] = "0123456789abcdef"; + #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) -void array_hexstr(char* strbuf, const void* bin, unsigned int len); +void array_hexstr(char *strbuf, const void *bin, unsigned int len); -void convertUint128BE(const uint8_t* const data, uint32_t length, uint128_t* const target); -void convertUint256BE(const uint8_t* const data, uint32_t length, uint256_t* const target); -void convertUint64BEto128(const uint8_t* const data, uint32_t length, uint128_t* const target); +void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target); +void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target); +void convertUint64BEto128(const uint8_t *const data, uint32_t length, uint128_t *const target); -uint64_t u64_from_BE(const uint8_t* in, uint8_t size); +uint64_t u64_from_BE(const uint8_t *in, uint8_t size); -bool uint256_to_decimal(const uint8_t* value, size_t value_len, char* out, size_t out_len); +bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size); -bool amountToString(const uint8_t* amount, +bool uint256_to_decimal(const uint8_t *value, size_t value_len, char *out, size_t out_len); + +bool amountToString(const uint8_t *amount, uint8_t amount_len, uint8_t decimals, - const char* ticker, - char* out_buffer, + const char *ticker, + char *out_buffer, size_t out_buffer_size); -#endif // _UTILS_H_ +bool adjustDecimals(const char *src, + size_t srcLength, + char *target, + size_t targetLength, + uint8_t decimals); + +bool getEthAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *out, cx_sha3_t *sha3Context); + +bool getEthAddressStringFromKey(cx_ecfp_public_key_t *publicKey, + char *out, + cx_sha3_t *sha3Context, + uint64_t chainId); + +bool getEthAddressStringFromBinary(uint8_t *address, + char *out, + cx_sha3_t *sha3Context, + uint64_t chainId); + +bool getEthDisplayableAddress(uint8_t *in, + char *out, + size_t out_len, + cx_sha3_t *sha3, + uint64_t chainId); + +static __attribute__((no_instrument_function)) inline int allzeroes(const void *buf, size_t n) { + uint8_t *p = (uint8_t *) buf; + for (size_t i = 0; i < n; ++i) { + if (p[i]) { + return 0; + } + } + return 1; +} +static __attribute__((no_instrument_function)) inline int ismaxint(uint8_t *buf, int n) { + for (int i = 0; i < n; ++i) { + if (buf[i] != 0xff) { + return 0; + } + } + return 1; +} diff --git a/src_bagl/ui_flow_signMessage712_v0.c b/src_bagl/ui_flow_signMessage712_v0.c index 230852e81..9cdda7051 100644 --- a/src_bagl/ui_flow_signMessage712_v0.c +++ b/src_bagl/ui_flow_signMessage712_v0.c @@ -1,7 +1,6 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "common_712.h" -#include "ethUtils.h" void prepare_domain_hash_v0() { snprintf(strings.tmp.tmp, diff --git a/src_bagl/ui_flow_signTx.c b/src_bagl/ui_flow_signTx.c index 137b134fc..98a541841 100644 --- a/src_bagl/ui_flow_signTx.c +++ b/src_bagl/ui_flow_signTx.c @@ -7,7 +7,6 @@ #include "eth_plugin_handler.h" #include "ui_plugin.h" #include "common_ui.h" -#include "ethUtils.h" #include "plugins.h" #include "domain_name.h" #include "ui_domain_name.h" diff --git a/src_bagl/ui_flow_stark_sign.c b/src_bagl/ui_flow_stark_sign.c index 03174c79b..18905e608 100644 --- a/src_bagl/ui_flow_stark_sign.c +++ b/src_bagl/ui_flow_stark_sign.c @@ -2,7 +2,6 @@ #include "shared_context.h" #include "ui_callbacks.h" -#include "ethUtils.h" #include "starkDisplayUtils.h" #include "apdu_constants.h" diff --git a/src_features/getPublicKey/cmd_getPublicKey.c b/src_features/getPublicKey/cmd_getPublicKey.c index eae16d5a4..d3d149f1c 100644 --- a/src_features/getPublicKey/cmd_getPublicKey.c +++ b/src_features/getPublicKey/cmd_getPublicKey.c @@ -2,7 +2,6 @@ #include "apdu_constants.h" #include "utils.h" #include "feature_getPublicKey.h" -#include "ethUtils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c b/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c index aebb98774..c1f036947 100644 --- a/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c +++ b/src_features/performPrivacyOperation/cmd_performPrivacyOperation.c @@ -1,6 +1,5 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "ethUtils.h" #include "feature_performPrivacyOperation.h" #include "common_ui.h" diff --git a/src_features/signMessageEIP712/commands_712.c b/src_features/signMessageEIP712/commands_712.c index a1cc45f9a..8a21dc365 100644 --- a/src_features/signMessageEIP712/commands_712.c +++ b/src_features/signMessageEIP712/commands_712.c @@ -13,7 +13,6 @@ #include "schema_hash.h" #include "filtering.h" #include "common_712.h" -#include "ethUtils.h" // allzeroes #include "common_ui.h" // ui_idle /** diff --git a/src_features/signMessageEIP712/field_hash.c b/src_features/signMessageEIP712/field_hash.c index cc57dae1c..f0225d79b 100644 --- a/src_features/signMessageEIP712/field_hash.c +++ b/src_features/signMessageEIP712/field_hash.c @@ -8,7 +8,6 @@ #include "mem_utils.h" #include "shared_context.h" #include "ui_logic.h" -#include "ethUtils.h" // KECCAK256_HASH_BYTESIZE #include "context_712.h" // contract_addr #include "utils.h" // u64_from_BE #include "apdu_constants.h" // APDU response codes diff --git a/src_features/signMessageEIP712/path.c b/src_features/signMessageEIP712/path.c index 621d11dc5..3c823c9ce 100644 --- a/src_features/signMessageEIP712/path.c +++ b/src_features/signMessageEIP712/path.c @@ -8,7 +8,6 @@ #include "commands_712.h" #include "type_hash.h" #include "shared_context.h" -#include "ethUtils.h" #include "mem_utils.h" #include "ui_logic.h" #include "apdu_constants.h" // APDU response codes diff --git a/src_features/signMessageEIP712/type_hash.c b/src_features/signMessageEIP712/type_hash.c index 1e8da4b24..7b9515f86 100644 --- a/src_features/signMessageEIP712/type_hash.c +++ b/src_features/signMessageEIP712/type_hash.c @@ -7,7 +7,6 @@ #include "mem_utils.h" #include "type_hash.h" #include "shared_context.h" -#include "ethUtils.h" // KECCAK256_HASH_BYTESIZE #include "format_hash_field_type.h" #include "hash_bytes.h" #include "apdu_constants.h" // APDU response codes diff --git a/src_features/signMessageEIP712/ui_logic.c b/src_features/signMessageEIP712/ui_logic.c index aa7dcd8cf..45f78326f 100644 --- a/src_features/signMessageEIP712/ui_logic.c +++ b/src_features/signMessageEIP712/ui_logic.c @@ -7,8 +7,7 @@ #include "mem_utils.h" #include "os_io.h" #include "shared_context.h" -#include "ethUtils.h" // getEthDisplayableAddress -#include "utils.h" // uint256_to_decimal +#include "utils.h" // uint256_to_decimal #include "common_712.h" #include "context_712.h" // eip712_context_deinit #include "uint256.h" // tostring256 && tostring256_signed diff --git a/src_features/signMessageEIP712_v0/cmd_signMessage712.c b/src_features/signMessageEIP712_v0/cmd_signMessage712.c index deaab84f5..5de017ee9 100644 --- a/src_features/signMessageEIP712_v0/cmd_signMessage712.c +++ b/src_features/signMessageEIP712_v0/cmd_signMessage712.c @@ -3,7 +3,6 @@ #include "utils.h" #include "common_ui.h" #include "common_712.h" -#include "ethUtils.h" void handleSignEIP712Message_v0(uint8_t p1, uint8_t p2, diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index b5bb87552..ec50b71c7 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -7,7 +7,6 @@ #endif #include "eth_plugin_handler.h" #include "network.h" -#include "ethUtils.h" #include "common_ui.h" #include "ui_callbacks.h" #include "apdu_constants.h" diff --git a/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c b/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c index 1755c9307..614669d48 100644 --- a/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c +++ b/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c @@ -2,7 +2,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "ethUtils.h" #include "common_ui.h" void handleStarkwareProvideQuantum(uint8_t p1, diff --git a/src_features/stark_sign/cmd_stark_sign.c b/src_features/stark_sign/cmd_stark_sign.c index 311d9d701..7810f779d 100644 --- a/src_features/stark_sign/cmd_stark_sign.c +++ b/src_features/stark_sign/cmd_stark_sign.c @@ -4,7 +4,6 @@ #include "apdu_constants.h" #include "stark_utils.h" #include "poorstream.h" -#include "ethUtils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index ed5e0ae39..6d0457049 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -3,7 +3,6 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "ui_nbgl.h" -#include "ethUtils.h" #include "ui_signing.h" #include "plugins.h" #include "domain_name.h" diff --git a/src_nbgl/ui_sign_712_v0.c b/src_nbgl/ui_sign_712_v0.c index ec38eeaf7..0681009bc 100644 --- a/src_nbgl/ui_sign_712_v0.c +++ b/src_nbgl/ui_sign_712_v0.c @@ -2,7 +2,6 @@ #include "ui_nbgl.h" #include "common_712.h" #include "network.h" -#include "ethUtils.h" #include "ui_message_signing.h" #include "ui_signing.h" diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c index bb41e1eb9..40dca2307 100644 --- a/src_nbgl/ui_stark_transfer.c +++ b/src_nbgl/ui_stark_transfer.c @@ -4,7 +4,6 @@ #include "ui_nbgl.h" #include "ui_signing.h" #include "starkDisplayUtils.h" -#include "ethUtils.h" #include "network.h" #ifdef HAVE_STARKWARE diff --git a/src_plugins/erc1155/erc1155_plugin.c b/src_plugins/erc1155/erc1155_plugin.c index 1ba22b1de..cd7962694 100644 --- a/src_plugins/erc1155/erc1155_plugin.c +++ b/src_plugins/erc1155/erc1155_plugin.c @@ -3,7 +3,6 @@ #include #include "erc1155_plugin.h" #include "eth_plugin_internal.h" -#include "ethUtils.h" #include "eth_plugin_handler.h" static const uint8_t ERC1155_APPROVE_FOR_ALL_SELECTOR[SELECTOR_SIZE] = {0xa2, 0x2c, 0xb4, 0x65}; diff --git a/src_plugins/erc1155/erc1155_provide_parameters.c b/src_plugins/erc1155/erc1155_provide_parameters.c index 8b5e1cacd..8895396b8 100644 --- a/src_plugins/erc1155/erc1155_provide_parameters.c +++ b/src_plugins/erc1155/erc1155_provide_parameters.c @@ -4,7 +4,6 @@ #include "erc1155_plugin.h" #include "eth_plugin_internal.h" #include "utils.h" -#include "ethUtils.h" static void handle_safe_transfer(ethPluginProvideParameter_t *msg, erc1155_context_t *context) { uint8_t new_value[INT256_LENGTH]; diff --git a/src_plugins/erc1155/erc1155_ui.c b/src_plugins/erc1155/erc1155_ui.c index 72ea2230d..888fb2395 100644 --- a/src_plugins/erc1155/erc1155_ui.c +++ b/src_plugins/erc1155/erc1155_ui.c @@ -3,7 +3,6 @@ #include #include "erc1155_plugin.h" #include "eth_plugin_interface.h" -#include "ethUtils.h" #include "utils.h" static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc1155_context_t *context) { diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index 33380dbee..b5424da19 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -2,7 +2,6 @@ #include "eth_plugin_internal.h" #include "eth_plugin_handler.h" #include "shared_context.h" -#include "ethUtils.h" #include "ethUstream.h" #include "utils.h" diff --git a/src_plugins/erc721/erc721_plugin.c b/src_plugins/erc721/erc721_plugin.c index f942fba4d..3c8a5a6a7 100644 --- a/src_plugins/erc721/erc721_plugin.c +++ b/src_plugins/erc721/erc721_plugin.c @@ -4,7 +4,6 @@ #include "erc721_plugin.h" #include "eth_plugin_internal.h" #include "eth_plugin_interface.h" -#include "ethUtils.h" #include "eth_plugin_handler.h" static const uint8_t ERC721_APPROVE_SELECTOR[SELECTOR_SIZE] = {0x09, 0x5e, 0xa7, 0xb3}; diff --git a/src_plugins/erc721/erc721_ui.c b/src_plugins/erc721/erc721_ui.c index caaf39578..7c13778fe 100644 --- a/src_plugins/erc721/erc721_ui.c +++ b/src_plugins/erc721/erc721_ui.c @@ -3,7 +3,6 @@ #include #include "erc721_plugin.h" #include "eth_plugin_interface.h" -#include "ethUtils.h" #include "utils.h" static void set_approval_ui(ethQueryContractUI_t *msg, erc721_context_t *context) { diff --git a/src_plugins/eth2/eth2_plugin.c b/src_plugins/eth2/eth2_plugin.c index 352a9f3cc..24521e311 100644 --- a/src_plugins/eth2/eth2_plugin.c +++ b/src_plugins/eth2/eth2_plugin.c @@ -4,7 +4,6 @@ #include "eth_plugin_internal.h" #include "eth_plugin_handler.h" #include "shared_context.h" -#include "ethUtils.h" #include "utils.h" void getEth2PublicKey(uint32_t *bip32Path, uint8_t bip32PathLength, uint8_t *out); diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index d0ee269fd..d05c87777 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -5,7 +5,6 @@ #include "eth_plugin_internal.h" // TODO : rewrite as independant code #include "stark_utils.h" #include "utils.h" -#include "ethUtils.h" #include "apdu_constants.h" #ifdef HAVE_STARKWARE diff --git a/tools/build_sdk.py b/tools/build_sdk.py index f61535e5a..3b5c68ba6 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -157,7 +157,6 @@ def merge_c_files(sources, nodes_to_extract): "src/tokens.h", "src/utils.h", "src/tx_content.h", - "src/ethUtils.h", "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", @@ -200,7 +199,6 @@ def merge_c_files(sources, nodes_to_extract): # extract and merge function bodies c_files_to_merge = [ "src/utils.c", - "src/ethUtils.c", "src/eth_plugin_internal.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From ca9d5c9c779b9a94c619ea0a40fac94b1db83d79 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 19:08:19 +0100 Subject: [PATCH 112/160] Remove data needed by plugins from shared_context file --- src/caller_api.h | 34 ++++++++++++++++++++++++++++++++++ src/eth_plugin_interface.h | 1 - src/extra_info.h | 9 +++++++++ src/shared_context.h | 24 +++++------------------- src/swap_lib_calls.h | 1 + src/utils.h | 2 ++ src_nbgl/ui_approve_tx.c | 1 + src_nbgl/ui_idle.c | 1 + tools/build_sdk.py | 3 ++- 9 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 src/caller_api.h create mode 100644 src/extra_info.h diff --git a/src/caller_api.h b/src/caller_api.h new file mode 100644 index 000000000..7f769bee9 --- /dev/null +++ b/src/caller_api.h @@ -0,0 +1,34 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#ifdef HAVE_NBGL +#include "ux.h" +#endif + +typedef enum { CALLER_TYPE_CLONE, CALLER_TYPE_PLUGIN } e_caller_type; + +typedef struct caller_app_t { + const char *name; +#ifdef HAVE_NBGL + const nbgl_icon_details_t *icon; +#endif + char type; // does not have to be set by the caller app +} caller_app_t; + +extern caller_app_t *caller_app; diff --git a/src/eth_plugin_interface.h b/src/eth_plugin_interface.h index 733912868..6e7b43503 100644 --- a/src/eth_plugin_interface.h +++ b/src/eth_plugin_interface.h @@ -6,7 +6,6 @@ #include "os.h" #include "cx.h" #include "tokens.h" -#include "shared_context.h" /************************************************************************************************* * Comments provided in this file are quick reminders on the usage of the plugin interface * diff --git a/src/extra_info.h b/src/extra_info.h new file mode 100644 index 000000000..1221ef3f2 --- /dev/null +++ b/src/extra_info.h @@ -0,0 +1,9 @@ +#pragma once + +#include "tokens.h" +#include "nft.h" + +typedef union extraInfo_t { + tokenDefinition_t token; + nftInfo_t nft; +} extraInfo_t; diff --git a/src/shared_context.h b/src/shared_context.h index 08e48d6c0..c3d6cf60a 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -3,8 +3,13 @@ #include #include + +#include "os.h" +#include "cx.h" #include "ethUstream.h" #include "tokens.h" +#include "extra_info.h" +#include "tx_content.h" #include "chainConfig.h" #include "nft.h" #ifdef HAVE_NBGL @@ -13,8 +18,6 @@ #define MAX_BIP32_PATH 10 -#define WEI_TO_ETHER 18 - #define SELECTOR_LENGTH 4 #define PLUGIN_ID_LENGTH 30 @@ -95,11 +98,6 @@ typedef struct publicKeyContext_t { bool getChaincode; } publicKeyContext_t; -typedef union extraInfo_t { - tokenDefinition_t token; - nftInfo_t nft; -} extraInfo_t; - typedef struct transactionContext_t { bip32_path_t bip32; uint8_t hash[INT256_LENGTH]; @@ -226,16 +224,6 @@ typedef enum { extern pluginType_t pluginType; -typedef enum { CALLER_TYPE_CLONE, CALLER_TYPE_PLUGIN } e_caller_type; - -typedef struct caller_app_t { - const char *name; -#ifdef HAVE_NBGL - const nbgl_icon_details_t *icon; -#endif - char type; // does not have to be set by the caller app -} caller_app_t; - extern uint8_t appState; #ifdef HAVE_STARKWARE extern bool quantumSet; @@ -244,8 +232,6 @@ extern bool quantumSet; extern uint32_t eth2WithdrawalIndex; #endif -extern caller_app_t *caller_app; - void reset_app_context(void); const uint8_t *parseBip32(const uint8_t *dataBuffer, uint8_t *dataLength, bip32_path_t *bip32); diff --git a/src/swap_lib_calls.h b/src/swap_lib_calls.h index 287034707..c4675e303 100644 --- a/src/swap_lib_calls.h +++ b/src/swap_lib_calls.h @@ -10,6 +10,7 @@ #include "chainConfig.h" #include "shared_context.h" #include "stdint.h" +#include "caller_api.h" #define RUN_APPLICATION 1 diff --git a/src/utils.h b/src/utils.h index d66c4a08c..c70cf5a1a 100644 --- a/src/utils.h +++ b/src/utils.h @@ -24,6 +24,8 @@ #include "cx.h" #include "uint256.h" +#define WEI_TO_ETHER 18 + #define ADDRESS_LENGTH 20 #define INT128_LENGTH 16 #define INT256_LENGTH 32 diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index 6d0457049..7e2f59d39 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -6,6 +6,7 @@ #include "ui_signing.h" #include "plugins.h" #include "domain_name.h" +#include "caller_api.h" #include "network_icons.h" #include "network.h" diff --git a/src_nbgl/ui_idle.c b/src_nbgl/ui_idle.c index faa47ca99..56f559ea8 100644 --- a/src_nbgl/ui_idle.c +++ b/src_nbgl/ui_idle.c @@ -3,6 +3,7 @@ #include "ui_nbgl.h" #include "nbgl_use_case.h" #include "glyphs.h" +#include "caller_api.h" #include "network.h" char g_stax_shared_buffer[SHARED_BUFFER_SIZE] = {0}; diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 3b5c68ba6..c3ad100fb 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -157,9 +157,10 @@ def merge_c_files(sources, nodes_to_extract): "src/tokens.h", "src/utils.h", "src/tx_content.h", - "src/shared_context.h", "src/eth_plugin_internal.h", "src/nft.h", + "src/extra_info.h", + "src/caller_api.h", ] nodes_to_extract = { "#define": ["MAX_TICKER_LEN", From 294f88195b3e59e742d1fc3210f9d94319a8d62c Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 19:25:44 +0100 Subject: [PATCH 113/160] Extract data for external plugins from internal plugin file --- src/eth_plugin_handler.c | 1 + src/eth_plugin_interface.h | 1 + src/eth_plugin_internal.c | 29 +------------ src/eth_plugin_internal.h | 18 +------- src/plugin_utils.c | 42 +++++++++++++++++++ src/plugin_utils.h | 35 ++++++++++++++++ .../setExternalPlugin/cmd_setExternalPlugin.c | 1 + src_features/setPlugin/cmd_setPlugin.c | 1 + src_plugins/erc1155/erc1155_plugin.c | 1 + .../erc1155/erc1155_provide_parameters.c | 1 + src_plugins/erc1155/erc1155_ui.c | 1 + src_plugins/erc20/erc20_plugin.c | 1 + src_plugins/erc721/erc721_plugin.c | 1 + .../erc721/erc721_provide_parameters.c | 1 + src_plugins/erc721/erc721_ui.c | 1 + src_plugins/starkware/starkware_plugin.c | 1 + tools/build_sdk.py | 4 +- 17 files changed, 94 insertions(+), 46 deletions(-) create mode 100644 src/plugin_utils.c create mode 100644 src/plugin_utils.h diff --git a/src/eth_plugin_handler.c b/src/eth_plugin_handler.c index 17683f3fb..f7611bbc5 100644 --- a/src/eth_plugin_handler.c +++ b/src/eth_plugin_handler.c @@ -1,6 +1,7 @@ #include #include "eth_plugin_handler.h" #include "eth_plugin_internal.h" +#include "plugin_utils.h" #include "shared_context.h" #include "network.h" diff --git a/src/eth_plugin_interface.h b/src/eth_plugin_interface.h index 6e7b43503..28fd9b5e9 100644 --- a/src/eth_plugin_interface.h +++ b/src/eth_plugin_interface.h @@ -6,6 +6,7 @@ #include "os.h" #include "cx.h" #include "tokens.h" +#include "tx_content.h" /************************************************************************************************* * Comments provided in this file are quick reminders on the usage of the plugin interface * diff --git a/src/eth_plugin_internal.c b/src/eth_plugin_internal.c index 74b25c6fa..ddf61bbcc 100644 --- a/src/eth_plugin_internal.c +++ b/src/eth_plugin_internal.c @@ -1,38 +1,11 @@ #include #include "eth_plugin_internal.h" +#include "plugin_utils.h" bool erc20_plugin_available_check(void); void erc20_plugin_call(int message, void* parameters); -void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size) { - uint8_t copy_size = MIN(dst_size, ADDRESS_LENGTH); - memmove(dst, parameter + PARAMETER_LENGTH - copy_size, copy_size); -} - -void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size) { - uint8_t copy_size = MIN(dst_size, PARAMETER_LENGTH); - memmove(dst, parameter, copy_size); -} - -bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value) { - if (allzeroes(parameter, PARAMETER_LENGTH - sizeof(uint16_t))) { - *value = U2BE(parameter, PARAMETER_LENGTH - sizeof(uint16_t)); - return true; - } - - return false; -} - -bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value) { - if (allzeroes(parameter, PARAMETER_LENGTH - sizeof(uint32_t))) { - *value = U4BE(parameter, PARAMETER_LENGTH - sizeof(uint32_t)); - return true; - } - - return false; -} - #ifdef HAVE_STARKWARE void starkware_plugin_call(int message, void* parameters); #endif diff --git a/src/eth_plugin_internal.h b/src/eth_plugin_internal.h index f7031eca5..6cc09ce6b 100644 --- a/src/eth_plugin_internal.h +++ b/src/eth_plugin_internal.h @@ -1,25 +1,13 @@ -#ifndef _ETH_PLUGIN_INTERNAL_H_ -#define _ETH_PLUGIN_INTERNAL_H_ +#pragma once #include #include +#include "shared_context.h" #include "eth_plugin_interface.h" -#define SELECTOR_SIZE 4 -#define PARAMETER_LENGTH 32 - -void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); - -void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); - void erc721_plugin_call(int message, void* parameters); void erc1155_plugin_call(int message, void* parameters); -// Get the value from the beginning of the parameter (right to left) and check if the rest of it is -// zero -bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); -bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); - typedef bool (*PluginAvailableCheck)(void); typedef void (*PluginCall)(int, void*); @@ -49,5 +37,3 @@ extern const uint8_t* const STARKWARE_SELECTORS[NUM_STARKWARE_SELECTORS]; #endif extern internalEthPlugin_t const INTERNAL_ETH_PLUGINS[]; - -#endif // _ETH_PLUGIN_INTERNAL_H_ diff --git a/src/plugin_utils.c b/src/plugin_utils.c new file mode 100644 index 000000000..0731c6f12 --- /dev/null +++ b/src/plugin_utils.c @@ -0,0 +1,42 @@ +#include + +#include "utils.h" +#include "plugin_utils.h" + +void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size) { + uint8_t copy_size = MIN(dst_size, ADDRESS_LENGTH); + memmove(dst, parameter + PARAMETER_LENGTH - copy_size, copy_size); +} + +void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size) { + uint8_t copy_size = MIN(dst_size, PARAMETER_LENGTH); + memmove(dst, parameter, copy_size); +} + +bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value) { + if (allzeroes(parameter, PARAMETER_LENGTH - sizeof(uint16_t))) { + *value = U2BE(parameter, PARAMETER_LENGTH - sizeof(uint16_t)); + return true; + } + + return false; +} + +bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value) { + if (allzeroes(parameter, PARAMETER_LENGTH - sizeof(uint32_t))) { + *value = U4BE(parameter, PARAMETER_LENGTH - sizeof(uint32_t)); + return true; + } + + return false; +} + +bool find_selector(uint32_t selector, const uint32_t* array, size_t size, size_t* idx) { + for (size_t i = 0; i < size; ++i) { + if (selector == array[i]) { + if (idx != NULL) *idx = i; + return true; + } + } + return false; +} diff --git a/src/plugin_utils.h b/src/plugin_utils.h new file mode 100644 index 000000000..569c20272 --- /dev/null +++ b/src/plugin_utils.h @@ -0,0 +1,35 @@ +/***************************************************************************** + * Ledger + * (c) 2023 Ledger SAS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#pragma once + +#include +#include + +#define SELECTOR_SIZE 4 +#define PARAMETER_LENGTH 32 + +void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); + +void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); + +// Get the value from the beginning of the parameter (right to left) and check if the rest of it is +// zero +bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); +bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); + +bool find_selector(uint32_t selector, const uint32_t* array, size_t size, size_t* idx); diff --git a/src_features/setExternalPlugin/cmd_setExternalPlugin.c b/src_features/setExternalPlugin/cmd_setExternalPlugin.c index 5960b8ad3..13d1faf00 100644 --- a/src_features/setExternalPlugin/cmd_setExternalPlugin.c +++ b/src_features/setExternalPlugin/cmd_setExternalPlugin.c @@ -3,6 +3,7 @@ #include "public_keys.h" #include "eth_plugin_interface.h" #include "eth_plugin_internal.h" +#include "plugin_utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 1da01a102..3c533c50b 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -3,6 +3,7 @@ #include "tokens.h" #include "eth_plugin_interface.h" #include "eth_plugin_internal.h" +#include "plugin_utils.h" #include "utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_plugins/erc1155/erc1155_plugin.c b/src_plugins/erc1155/erc1155_plugin.c index cd7962694..b81aa8d5c 100644 --- a/src_plugins/erc1155/erc1155_plugin.c +++ b/src_plugins/erc1155/erc1155_plugin.c @@ -2,6 +2,7 @@ #include #include "erc1155_plugin.h" +#include "plugin_utils.h" #include "eth_plugin_internal.h" #include "eth_plugin_handler.h" diff --git a/src_plugins/erc1155/erc1155_provide_parameters.c b/src_plugins/erc1155/erc1155_provide_parameters.c index 8895396b8..6f9794315 100644 --- a/src_plugins/erc1155/erc1155_provide_parameters.c +++ b/src_plugins/erc1155/erc1155_provide_parameters.c @@ -2,6 +2,7 @@ #include #include "erc1155_plugin.h" +#include "plugin_utils.h" #include "eth_plugin_internal.h" #include "utils.h" diff --git a/src_plugins/erc1155/erc1155_ui.c b/src_plugins/erc1155/erc1155_ui.c index 888fb2395..823e15695 100644 --- a/src_plugins/erc1155/erc1155_ui.c +++ b/src_plugins/erc1155/erc1155_ui.c @@ -2,6 +2,7 @@ #include #include "erc1155_plugin.h" +#include "eth_plugin_internal.h" #include "eth_plugin_interface.h" #include "utils.h" diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index b5424da19..1701da066 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -2,6 +2,7 @@ #include "eth_plugin_internal.h" #include "eth_plugin_handler.h" #include "shared_context.h" +#include "plugin_utils.h" #include "ethUstream.h" #include "utils.h" diff --git a/src_plugins/erc721/erc721_plugin.c b/src_plugins/erc721/erc721_plugin.c index 3c8a5a6a7..bfe12cd9d 100644 --- a/src_plugins/erc721/erc721_plugin.c +++ b/src_plugins/erc721/erc721_plugin.c @@ -1,6 +1,7 @@ #ifdef HAVE_NFT_SUPPORT #include +#include "plugin_utils.h" #include "erc721_plugin.h" #include "eth_plugin_internal.h" #include "eth_plugin_interface.h" diff --git a/src_plugins/erc721/erc721_provide_parameters.c b/src_plugins/erc721/erc721_provide_parameters.c index ac5b8701d..18a19cb6e 100644 --- a/src_plugins/erc721/erc721_provide_parameters.c +++ b/src_plugins/erc721/erc721_provide_parameters.c @@ -1,6 +1,7 @@ #ifdef HAVE_NFT_SUPPORT #include "erc721_plugin.h" +#include "plugin_utils.h" #include "eth_plugin_internal.h" static void handle_approve(ethPluginProvideParameter_t *msg, erc721_context_t *context) { diff --git a/src_plugins/erc721/erc721_ui.c b/src_plugins/erc721/erc721_ui.c index 7c13778fe..c68fef1c2 100644 --- a/src_plugins/erc721/erc721_ui.c +++ b/src_plugins/erc721/erc721_ui.c @@ -2,6 +2,7 @@ #include #include "erc721_plugin.h" +#include "eth_plugin_internal.h" #include "eth_plugin_interface.h" #include "utils.h" diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index d05c87777..075dfbae6 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -4,6 +4,7 @@ #include "shared_context.h" // TODO : rewrite as independant code #include "eth_plugin_internal.h" // TODO : rewrite as independant code #include "stark_utils.h" +#include "plugin_utils.h" #include "utils.h" #include "apdu_constants.h" diff --git a/tools/build_sdk.py b/tools/build_sdk.py index c3ad100fb..0c4e7f31e 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -157,7 +157,7 @@ def merge_c_files(sources, nodes_to_extract): "src/tokens.h", "src/utils.h", "src/tx_content.h", - "src/eth_plugin_internal.h", + "src/plugin_utils.h", "src/nft.h", "src/extra_info.h", "src/caller_api.h", @@ -200,7 +200,7 @@ def merge_c_files(sources, nodes_to_extract): # extract and merge function bodies c_files_to_merge = [ "src/utils.c", - "src/eth_plugin_internal.c", + "src/plugin_utils.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From 39b02b82e5821f0de50a4159090560f0541ad63c Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Mon, 15 Jan 2024 19:37:36 +0100 Subject: [PATCH 114/160] Move functions and API needed by the plugins to the src_common directory --- {src => src_common}/caller_api.h | 0 {src => src_common}/eth_plugin_interface.h | 0 {src => src_common}/extra_info.h | 0 {src => src_common}/nft.h | 0 {src => src_common}/plugin_utils.c | 0 {src => src_common}/plugin_utils.h | 0 {src => src_common}/tokens.h | 0 {src => src_common}/tx_content.h | 0 {src => src_common}/utils.c | 0 {src => src_common}/utils.h | 0 tools/build_sdk.py | 20 ++++++++++---------- 11 files changed, 10 insertions(+), 10 deletions(-) rename {src => src_common}/caller_api.h (100%) rename {src => src_common}/eth_plugin_interface.h (100%) rename {src => src_common}/extra_info.h (100%) rename {src => src_common}/nft.h (100%) rename {src => src_common}/plugin_utils.c (100%) rename {src => src_common}/plugin_utils.h (100%) rename {src => src_common}/tokens.h (100%) rename {src => src_common}/tx_content.h (100%) rename {src => src_common}/utils.c (100%) rename {src => src_common}/utils.h (100%) diff --git a/src/caller_api.h b/src_common/caller_api.h similarity index 100% rename from src/caller_api.h rename to src_common/caller_api.h diff --git a/src/eth_plugin_interface.h b/src_common/eth_plugin_interface.h similarity index 100% rename from src/eth_plugin_interface.h rename to src_common/eth_plugin_interface.h diff --git a/src/extra_info.h b/src_common/extra_info.h similarity index 100% rename from src/extra_info.h rename to src_common/extra_info.h diff --git a/src/nft.h b/src_common/nft.h similarity index 100% rename from src/nft.h rename to src_common/nft.h diff --git a/src/plugin_utils.c b/src_common/plugin_utils.c similarity index 100% rename from src/plugin_utils.c rename to src_common/plugin_utils.c diff --git a/src/plugin_utils.h b/src_common/plugin_utils.h similarity index 100% rename from src/plugin_utils.h rename to src_common/plugin_utils.h diff --git a/src/tokens.h b/src_common/tokens.h similarity index 100% rename from src/tokens.h rename to src_common/tokens.h diff --git a/src/tx_content.h b/src_common/tx_content.h similarity index 100% rename from src/tx_content.h rename to src_common/tx_content.h diff --git a/src/utils.c b/src_common/utils.c similarity index 100% rename from src/utils.c rename to src_common/utils.c diff --git a/src/utils.h b/src_common/utils.h similarity index 100% rename from src/utils.h rename to src_common/utils.h diff --git a/tools/build_sdk.py b/tools/build_sdk.py index 0c4e7f31e..bda170a4b 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -154,13 +154,13 @@ def merge_c_files(sources, nodes_to_extract): # some nodes will be extracted from these headers and merged into a new # one, copied to sdk headers_to_merge = [ - "src/tokens.h", - "src/utils.h", - "src/tx_content.h", - "src/plugin_utils.h", - "src/nft.h", - "src/extra_info.h", - "src/caller_api.h", + "src_common/tokens.h", + "src_common/utils.h", + "src_common/tx_content.h", + "src_common/plugin_utils.h", + "src_common/nft.h", + "src_common/extra_info.h", + "src_common/caller_api.h", ] nodes_to_extract = { "#define": ["MAX_TICKER_LEN", @@ -195,12 +195,12 @@ def merge_c_files(sources, nodes_to_extract): # this header will be stripped from all #include related to previously # merged headers, then copied to sdk - copy_header("src/eth_plugin_interface.h", headers_to_merge) + copy_header("src_common/eth_plugin_interface.h", headers_to_merge) # extract and merge function bodies c_files_to_merge = [ - "src/utils.c", - "src/plugin_utils.c", + "src_common/utils.c", + "src_common/plugin_utils.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From 3bcf12ce1d83e25f530f3b7941d83f1b1907f933 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Tue, 16 Jan 2024 13:51:36 +0100 Subject: [PATCH 115/160] Rename utils to common_utils --- src/ethUstream.c | 2 +- src/ethUstream.h | 2 +- src/handle_get_printable_amount.c | 2 +- src/handle_swap_sign_transaction.c | 2 +- src/main.c | 2 +- src/network.c | 2 +- src/stark_crypto.c | 2 +- src/uint128.c | 2 +- src_bagl/ui_flow.c | 2 +- src_bagl/ui_flow_signTx.c | 2 +- src_common/{utils.c => common_utils.c} | 2 +- src_common/{utils.h => common_utils.h} | 0 src_common/plugin_utils.c | 2 +- src_common/tokens.h | 2 +- src_common/tx_content.h | 2 +- src_features/getPublicKey/cmd_getPublicKey.c | 2 +- src_features/provideDomainName/cmd_provide_domain_name.c | 2 +- src_features/provideNFTInformation/cmd_provideNFTInfo.c | 2 +- src_features/setPlugin/cmd_setPlugin.c | 2 +- src_features/signMessageEIP712/field_hash.c | 2 +- src_features/signMessageEIP712/sol_typenames.c | 2 +- src_features/signMessageEIP712/ui_logic.c | 2 +- src_features/signMessageEIP712_v0/cmd_signMessage712.c | 2 +- src_features/signTx/logic_signTx.c | 2 +- src_features/signTx/ui_common_signTx.c | 2 +- src_plugins/erc1155/erc1155_provide_parameters.c | 2 +- src_plugins/erc1155/erc1155_ui.c | 2 +- src_plugins/erc20/erc20_plugin.c | 2 +- src_plugins/erc721/erc721_ui.c | 2 +- src_plugins/eth2/eth2_plugin.c | 2 +- src_plugins/starkware/starkware_plugin.c | 2 +- tools/build_sdk.py | 4 ++-- 32 files changed, 32 insertions(+), 32 deletions(-) rename src_common/{utils.c => common_utils.c} (99%) rename src_common/{utils.h => common_utils.h} (100%) diff --git a/src/ethUstream.c b/src/ethUstream.c index 90f2f9954..3273c6596 100644 --- a/src/ethUstream.c +++ b/src/ethUstream.c @@ -20,7 +20,7 @@ #include "ethUstream.h" #include "rlp_utils.h" -#include "utils.h" +#include "common_utils.h" #define MAX_INT256 32 #define MAX_ADDRESS 20 diff --git a/src/ethUstream.h b/src/ethUstream.h index 73cfa401c..d14a42adc 100644 --- a/src/ethUstream.h +++ b/src/ethUstream.h @@ -22,7 +22,7 @@ #include "os.h" #include "cx.h" -#include "utils.h" +#include "common_utils.h" #include "tx_content.h" struct txContext_t; diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index 4503abd42..a2e333800 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -4,7 +4,7 @@ #include "swap_utils.h" #include "handle_get_printable_amount.h" #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" #include "uint256.h" #include "string.h" diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index a2e71f238..3b8be8342 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -4,7 +4,7 @@ #include "swap_utils.h" #include "handle_swap_sign_transaction.h" #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" #ifdef HAVE_NBGL #include "nbgl_use_case.h" #endif // HAVE_NBGL diff --git a/src/main.c b/src/main.c index f5ca89c5f..ac74de410 100644 --- a/src/main.c +++ b/src/main.c @@ -22,7 +22,7 @@ #include "os_io_seproxyhal.h" #include "glyphs.h" -#include "utils.h" +#include "common_utils.h" #include "swap_lib_calls.h" #include "handle_swap_sign_transaction.h" diff --git a/src/network.c b/src/network.c index 5430b85ea..eb25302d0 100644 --- a/src/network.c +++ b/src/network.c @@ -3,7 +3,7 @@ #include "os_pic.h" #include "network.h" #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" typedef struct network_info_s { const char *name; diff --git a/src/stark_crypto.c b/src/stark_crypto.c index 898b3514a..77571b6da 100644 --- a/src/stark_crypto.c +++ b/src/stark_crypto.c @@ -2,7 +2,7 @@ #include "shared_context.h" #include "stark_utils.h" -#include "utils.h" +#include "common_utils.h" extraInfo_t *getKnownToken(uint8_t *contractAddress); diff --git a/src/uint128.c b/src/uint128.c index 88374585e..54d8f6bd5 100644 --- a/src/uint128.c +++ b/src/uint128.c @@ -21,7 +21,7 @@ #include #include "uint128.h" #include "uint_common.h" -#include "utils.h" // HEXDIGITS +#include "common_utils.h" // HEXDIGITS void readu128BE(const uint8_t *const buffer, uint128_t *const target) { UPPER_P(target) = readUint64BE(buffer); diff --git a/src_bagl/ui_flow.c b/src_bagl/ui_flow.c index a98ce6bdc..17f7eed99 100644 --- a/src_bagl/ui_flow.c +++ b/src_bagl/ui_flow.c @@ -1,7 +1,7 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "common_ui.h" -#include "utils.h" +#include "common_utils.h" #define ENABLED_STR "Enabled" #define DISABLED_STR "Disabled" diff --git a/src_bagl/ui_flow_signTx.c b/src_bagl/ui_flow_signTx.c index 98a541841..eabdf9001 100644 --- a/src_bagl/ui_flow_signTx.c +++ b/src_bagl/ui_flow_signTx.c @@ -1,7 +1,7 @@ #include "shared_context.h" #include "ui_callbacks.h" #include "chainConfig.h" -#include "utils.h" +#include "common_utils.h" #include "feature_signTx.h" #include "network.h" #include "eth_plugin_handler.h" diff --git a/src_common/utils.c b/src_common/common_utils.c similarity index 99% rename from src_common/utils.c rename to src_common/common_utils.c index 1697214db..c24d53ad2 100644 --- a/src_common/utils.c +++ b/src_common/common_utils.c @@ -21,7 +21,7 @@ #include "uint128.h" #include "uint256.h" #include "tokens.h" -#include "utils.h" +#include "common_utils.h" void array_hexstr(char *strbuf, const void *bin, unsigned int len) { while (len--) { diff --git a/src_common/utils.h b/src_common/common_utils.h similarity index 100% rename from src_common/utils.h rename to src_common/common_utils.h diff --git a/src_common/plugin_utils.c b/src_common/plugin_utils.c index 0731c6f12..5216fdb0b 100644 --- a/src_common/plugin_utils.c +++ b/src_common/plugin_utils.c @@ -1,6 +1,6 @@ #include -#include "utils.h" +#include "common_utils.h" #include "plugin_utils.h" void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size) { diff --git a/src_common/tokens.h b/src_common/tokens.h index d839ceac4..9fd32df85 100644 --- a/src_common/tokens.h +++ b/src_common/tokens.h @@ -18,7 +18,7 @@ #pragma once #include -#include "utils.h" +#include "common_utils.h" #define MAX_TICKER_LEN 11 // 10 characters + '\0' #define MAX_ITEMS 2 diff --git a/src_common/tx_content.h b/src_common/tx_content.h index 613700e51..ffb0afcf8 100644 --- a/src_common/tx_content.h +++ b/src_common/tx_content.h @@ -22,7 +22,7 @@ #include "os.h" #include "cx.h" -#include "utils.h" +#include "common_utils.h" typedef struct txInt256_t { uint8_t value[INT256_LENGTH]; diff --git a/src_features/getPublicKey/cmd_getPublicKey.c b/src_features/getPublicKey/cmd_getPublicKey.c index d3d149f1c..c30addcb6 100644 --- a/src_features/getPublicKey/cmd_getPublicKey.c +++ b/src_features/getPublicKey/cmd_getPublicKey.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "utils.h" +#include "common_utils.h" #include "feature_getPublicKey.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_features/provideDomainName/cmd_provide_domain_name.c b/src_features/provideDomainName/cmd_provide_domain_name.c index 51e9daca8..ce72f4ec7 100644 --- a/src_features/provideDomainName/cmd_provide_domain_name.c +++ b/src_features/provideDomainName/cmd_provide_domain_name.c @@ -4,7 +4,7 @@ #include #include #include -#include "utils.h" // ARRAY_SIZE +#include "common_utils.h" // ARRAY_SIZE #include "apdu_constants.h" #include "domain_name.h" #include "challenge.h" diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 1c329b2bb..3e82d57dd 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -3,7 +3,7 @@ #include "shared_context.h" #include "apdu_constants.h" #include "tokens.h" -#include "utils.h" +#include "common_utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" #include "network.h" diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 3c533c50b..9575eb367 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -4,7 +4,7 @@ #include "eth_plugin_interface.h" #include "eth_plugin_internal.h" #include "plugin_utils.h" -#include "utils.h" +#include "common_utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" #include "network.h" diff --git a/src_features/signMessageEIP712/field_hash.c b/src_features/signMessageEIP712/field_hash.c index f0225d79b..af89be879 100644 --- a/src_features/signMessageEIP712/field_hash.c +++ b/src_features/signMessageEIP712/field_hash.c @@ -9,7 +9,7 @@ #include "shared_context.h" #include "ui_logic.h" #include "context_712.h" // contract_addr -#include "utils.h" // u64_from_BE +#include "common_utils.h" // u64_from_BE #include "apdu_constants.h" // APDU response codes #include "typed_data.h" #include "commands_712.h" diff --git a/src_features/signMessageEIP712/sol_typenames.c b/src_features/signMessageEIP712/sol_typenames.c index bf78f2639..6163e7fa9 100644 --- a/src_features/signMessageEIP712/sol_typenames.c +++ b/src_features/signMessageEIP712/sol_typenames.c @@ -7,7 +7,7 @@ #include "os_pic.h" #include "apdu_constants.h" // APDU response codes #include "typed_data.h" -#include "utils.h" // ARRAY_SIZE +#include "common_utils.h" // ARRAY_SIZE // Bit indicating they are more types associated to this typename #define TYPENAME_MORE_TYPE (1 << 7) diff --git a/src_features/signMessageEIP712/ui_logic.c b/src_features/signMessageEIP712/ui_logic.c index 45f78326f..96d8bdd17 100644 --- a/src_features/signMessageEIP712/ui_logic.c +++ b/src_features/signMessageEIP712/ui_logic.c @@ -7,7 +7,7 @@ #include "mem_utils.h" #include "os_io.h" #include "shared_context.h" -#include "utils.h" // uint256_to_decimal +#include "common_utils.h" // uint256_to_decimal #include "common_712.h" #include "context_712.h" // eip712_context_deinit #include "uint256.h" // tostring256 && tostring256_signed diff --git a/src_features/signMessageEIP712_v0/cmd_signMessage712.c b/src_features/signMessageEIP712_v0/cmd_signMessage712.c index 5de017ee9..058495e76 100644 --- a/src_features/signMessageEIP712_v0/cmd_signMessage712.c +++ b/src_features/signMessageEIP712_v0/cmd_signMessage712.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "utils.h" +#include "common_utils.h" #include "common_ui.h" #include "common_712.h" diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index ec50b71c7..abf3234b6 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -1,6 +1,6 @@ #include #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" #include "feature_signTx.h" #ifdef HAVE_STARKWARE #include "stark_utils.h" diff --git a/src_features/signTx/ui_common_signTx.c b/src_features/signTx/ui_common_signTx.c index 67db7261c..96eee2fe2 100644 --- a/src_features/signTx/ui_common_signTx.c +++ b/src_features/signTx/ui_common_signTx.c @@ -1,7 +1,7 @@ #include "lib_standard_app/crypto_helpers.h" #include "os_io_seproxyhal.h" #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" #include "common_ui.h" #include "handle_swap_sign_transaction.h" diff --git a/src_plugins/erc1155/erc1155_provide_parameters.c b/src_plugins/erc1155/erc1155_provide_parameters.c index 6f9794315..454f9a233 100644 --- a/src_plugins/erc1155/erc1155_provide_parameters.c +++ b/src_plugins/erc1155/erc1155_provide_parameters.c @@ -4,7 +4,7 @@ #include "erc1155_plugin.h" #include "plugin_utils.h" #include "eth_plugin_internal.h" -#include "utils.h" +#include "common_utils.h" static void handle_safe_transfer(ethPluginProvideParameter_t *msg, erc1155_context_t *context) { uint8_t new_value[INT256_LENGTH]; diff --git a/src_plugins/erc1155/erc1155_ui.c b/src_plugins/erc1155/erc1155_ui.c index 823e15695..a31dd966c 100644 --- a/src_plugins/erc1155/erc1155_ui.c +++ b/src_plugins/erc1155/erc1155_ui.c @@ -4,7 +4,7 @@ #include "erc1155_plugin.h" #include "eth_plugin_internal.h" #include "eth_plugin_interface.h" -#include "utils.h" +#include "common_utils.h" static void set_approval_for_all_ui(ethQueryContractUI_t *msg, erc1155_context_t *context) { switch (msg->screenIndex) { diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index 1701da066..5e40f0d8c 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -4,7 +4,7 @@ #include "shared_context.h" #include "plugin_utils.h" #include "ethUstream.h" -#include "utils.h" +#include "common_utils.h" typedef enum { ERC20_TRANSFER = 0, ERC20_APPROVE } erc20Selector_t; diff --git a/src_plugins/erc721/erc721_ui.c b/src_plugins/erc721/erc721_ui.c index c68fef1c2..e9480874a 100644 --- a/src_plugins/erc721/erc721_ui.c +++ b/src_plugins/erc721/erc721_ui.c @@ -4,7 +4,7 @@ #include "erc721_plugin.h" #include "eth_plugin_internal.h" #include "eth_plugin_interface.h" -#include "utils.h" +#include "common_utils.h" static void set_approval_ui(ethQueryContractUI_t *msg, erc721_context_t *context) { switch (msg->screenIndex) { diff --git a/src_plugins/eth2/eth2_plugin.c b/src_plugins/eth2/eth2_plugin.c index 24521e311..588199ea9 100644 --- a/src_plugins/eth2/eth2_plugin.c +++ b/src_plugins/eth2/eth2_plugin.c @@ -4,7 +4,7 @@ #include "eth_plugin_internal.h" #include "eth_plugin_handler.h" #include "shared_context.h" -#include "utils.h" +#include "common_utils.h" void getEth2PublicKey(uint32_t *bip32Path, uint8_t bip32PathLength, uint8_t *out); diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index 075dfbae6..e7a59e289 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -5,7 +5,7 @@ #include "eth_plugin_internal.h" // TODO : rewrite as independant code #include "stark_utils.h" #include "plugin_utils.h" -#include "utils.h" +#include "common_utils.h" #include "apdu_constants.h" #ifdef HAVE_STARKWARE diff --git a/tools/build_sdk.py b/tools/build_sdk.py index bda170a4b..bf1199587 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -155,7 +155,7 @@ def merge_c_files(sources, nodes_to_extract): # one, copied to sdk headers_to_merge = [ "src_common/tokens.h", - "src_common/utils.h", + "src_common/common_utils.h", "src_common/tx_content.h", "src_common/plugin_utils.h", "src_common/nft.h", @@ -199,7 +199,7 @@ def merge_c_files(sources, nodes_to_extract): # extract and merge function bodies c_files_to_merge = [ - "src_common/utils.c", + "src_common/common_utils.c", "src_common/plugin_utils.c", ] merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) From e64a04da514cccaacd2b23fc858312e82af3a4f2 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Tue, 16 Jan 2024 13:57:01 +0100 Subject: [PATCH 116/160] Remove unused big uint utilities from plugin sdk --- src/stark_crypto.c | 1 + src/uint128.c | 18 +++++++++++++++ src/uint128.h | 2 ++ src/uint256.c | 10 ++++++++- src/uint256.h | 1 + src_common/common_utils.c | 28 ------------------------ src_common/common_utils.h | 5 ----- src_features/signTx/logic_signTx.c | 1 + src_plugins/starkware/starkware_plugin.c | 1 + 9 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/stark_crypto.c b/src/stark_crypto.c index 77571b6da..f5b252013 100644 --- a/src/stark_crypto.c +++ b/src/stark_crypto.c @@ -2,6 +2,7 @@ #include "shared_context.h" #include "stark_utils.h" +#include "uint256.h" #include "common_utils.h" extraInfo_t *getKnownToken(uint8_t *contractAddress); diff --git a/src/uint128.c b/src/uint128.c index 54d8f6bd5..b720e35c1 100644 --- a/src/uint128.c +++ b/src/uint128.c @@ -290,3 +290,21 @@ bool tostring128_signed(const uint128_t *const number, } return tostring128(number, base, out, out_length); // positive value } + +void convertUint64BEto128(const uint8_t *const data, uint32_t length, uint128_t *const target) { + uint8_t tmp[INT128_LENGTH]; + int64_t value; + + value = u64_from_BE(data, length); + memset(tmp, ((value < 0) ? 0xff : 0), sizeof(tmp) - length); + memmove(tmp + sizeof(tmp) - length, data, length); + readu128BE(tmp, target); +} + +void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target) { + uint8_t tmp[INT128_LENGTH]; + + memset(tmp, 0, sizeof(tmp) - length); + memmove(tmp + sizeof(tmp) - length, data, length); + readu128BE(tmp, target); +} diff --git a/src/uint128.h b/src/uint128.h index e1166c20b..b857089c3 100644 --- a/src/uint128.h +++ b/src/uint128.h @@ -56,5 +56,7 @@ bool tostring128_signed(const uint128_t *const number, uint32_t base, char *const out, uint32_t out_length); +void convertUint64BEto128(const uint8_t *const data, uint32_t length, uint128_t *const target); +void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target); #endif // _UINT128_H_ diff --git a/src/uint256.c b/src/uint256.c index f43588ab2..8829c906d 100644 --- a/src/uint256.c +++ b/src/uint256.c @@ -21,7 +21,7 @@ #include #include "uint256.h" #include "uint_common.h" -#include "ethUstream.h" // INT256_LENGTH +#include "common_utils.h" // INT256_LENGTH void readu256BE(const uint8_t *const buffer, uint256_t *const target) { readu128BE(buffer, &UPPER_P(target)); @@ -289,3 +289,11 @@ bool tostring256_signed(const uint256_t *const number, } return tostring256(number, base, out, out_length); // positive value } + +void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target) { + uint8_t tmp[INT256_LENGTH]; + + memset(tmp, 0, sizeof(tmp) - length); + memmove(tmp + sizeof(tmp) - length, data, length); + readu256BE(tmp, target); +} diff --git a/src/uint256.h b/src/uint256.h index 97b8cfb1f..4addf7f78 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -57,5 +57,6 @@ bool tostring256_signed(const uint256_t *const number, uint32_t base, char *const out, uint32_t out_length); +void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target); #endif // _UINT256_H_ diff --git a/src_common/common_utils.c b/src_common/common_utils.c index c24d53ad2..92debc602 100644 --- a/src_common/common_utils.c +++ b/src_common/common_utils.c @@ -18,8 +18,6 @@ #include #include -#include "uint128.h" -#include "uint256.h" #include "tokens.h" #include "common_utils.h" @@ -32,32 +30,6 @@ void array_hexstr(char *strbuf, const void *bin, unsigned int len) { *strbuf = 0; // EOS } -void convertUint64BEto128(const uint8_t *const data, uint32_t length, uint128_t *const target) { - uint8_t tmp[INT128_LENGTH]; - int64_t value; - - value = u64_from_BE(data, length); - memset(tmp, ((value < 0) ? 0xff : 0), sizeof(tmp) - length); - memmove(tmp + sizeof(tmp) - length, data, length); - readu128BE(tmp, target); -} - -void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target) { - uint8_t tmp[INT128_LENGTH]; - - memset(tmp, 0, sizeof(tmp) - length); - memmove(tmp + sizeof(tmp) - length, data, length); - readu128BE(tmp, target); -} - -void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target) { - uint8_t tmp[INT256_LENGTH]; - - memset(tmp, 0, sizeof(tmp) - length); - memmove(tmp + sizeof(tmp) - length, data, length); - readu256BE(tmp, target); -} - uint64_t u64_from_BE(const uint8_t *in, uint8_t size) { uint8_t i = 0; uint64_t res = 0; diff --git a/src_common/common_utils.h b/src_common/common_utils.h index c70cf5a1a..fd198d95f 100644 --- a/src_common/common_utils.h +++ b/src_common/common_utils.h @@ -22,7 +22,6 @@ #include "os.h" #include "cx.h" -#include "uint256.h" #define WEI_TO_ETHER 18 @@ -38,10 +37,6 @@ static const char HEXDIGITS[] = "0123456789abcdef"; void array_hexstr(char *strbuf, const void *bin, unsigned int len); -void convertUint128BE(const uint8_t *const data, uint32_t length, uint128_t *const target); -void convertUint256BE(const uint8_t *const data, uint32_t length, uint256_t *const target); -void convertUint64BEto128(const uint8_t *const data, uint32_t length, uint128_t *const target); - uint64_t u64_from_BE(const uint8_t *in, uint8_t size); bool u64_to_string(uint64_t src, char *dst, uint8_t dst_size); diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index abf3234b6..de62f6cb7 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -5,6 +5,7 @@ #ifdef HAVE_STARKWARE #include "stark_utils.h" #endif +#include "uint256.h" #include "eth_plugin_handler.h" #include "network.h" #include "common_ui.h" diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index e7a59e289..427fca7f4 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -1,5 +1,6 @@ #include #include "os_io_seproxyhal.h" +#include "uint256.h" #include "eth_plugin_interface.h" #include "shared_context.h" // TODO : rewrite as independant code #include "eth_plugin_internal.h" // TODO : rewrite as independant code From 5bf5023e3540bf68dc16618ce0a2e07b33026814 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Tue, 16 Jan 2024 17:17:42 +0100 Subject: [PATCH 117/160] Merge nft and tokens into a single asset header --- src/shared_context.h | 4 +--- src/swap_utils.c | 2 +- src_common/{tokens.h => asset_info.h} | 18 ++++++++++++++++++ src_common/common_utils.c | 2 +- src_common/eth_plugin_interface.h | 2 +- src_common/extra_info.h | 9 --------- src_common/nft.h | 10 ---------- .../provideNFTInformation/cmd_provideNFTInfo.c | 2 +- src_features/setPlugin/cmd_setPlugin.c | 2 +- src_plugins/erc1155/erc1155_plugin.h | 2 +- src_plugins/erc721/erc721_plugin.h | 2 +- tools/build_sdk.py | 4 +--- 12 files changed, 27 insertions(+), 32 deletions(-) rename src_common/{tokens.h => asset_info.h} (78%) delete mode 100644 src_common/extra_info.h delete mode 100644 src_common/nft.h diff --git a/src/shared_context.h b/src/shared_context.h index c3d6cf60a..40113d3bb 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -7,11 +7,9 @@ #include "os.h" #include "cx.h" #include "ethUstream.h" -#include "tokens.h" -#include "extra_info.h" #include "tx_content.h" #include "chainConfig.h" -#include "nft.h" +#include "asset_info.h" #ifdef HAVE_NBGL #include "nbgl_types.h" #endif diff --git a/src/swap_utils.c b/src/swap_utils.c index 8cc005480..2fa4a5a56 100644 --- a/src/swap_utils.c +++ b/src/swap_utils.c @@ -19,7 +19,7 @@ #include #include -#include "tokens.h" +#include "asset_info.h" #include "swap_utils.h" bool parse_swap_config(const uint8_t *config, uint8_t config_len, char *ticker, uint8_t *decimals) { diff --git a/src_common/tokens.h b/src_common/asset_info.h similarity index 78% rename from src_common/tokens.h rename to src_common/asset_info.h index 9fd32df85..a2ce39332 100644 --- a/src_common/tokens.h +++ b/src_common/asset_info.h @@ -20,6 +20,17 @@ #include #include "common_utils.h" +// NFT + +#define COLLECTION_NAME_MAX_LEN 70 + +typedef struct nftInfo_t { + uint8_t contractAddress[ADDRESS_LENGTH]; // must be first item + char collectionName[COLLECTION_NAME_MAX_LEN + 1]; +} nftInfo_t; + +// TOKENS + #define MAX_TICKER_LEN 11 // 10 characters + '\0' #define MAX_ITEMS 2 @@ -31,3 +42,10 @@ typedef struct tokenDefinition_t { char ticker[MAX_TICKER_LEN]; uint8_t decimals; } tokenDefinition_t; + +// UNION + +typedef union extraInfo_t { + tokenDefinition_t token; + nftInfo_t nft; +} extraInfo_t; diff --git a/src_common/common_utils.c b/src_common/common_utils.c index 92debc602..84a424ea0 100644 --- a/src_common/common_utils.c +++ b/src_common/common_utils.c @@ -18,7 +18,7 @@ #include #include -#include "tokens.h" +#include "asset_info.h" #include "common_utils.h" void array_hexstr(char *strbuf, const void *bin, unsigned int len) { diff --git a/src_common/eth_plugin_interface.h b/src_common/eth_plugin_interface.h index 28fd9b5e9..9c93dfd72 100644 --- a/src_common/eth_plugin_interface.h +++ b/src_common/eth_plugin_interface.h @@ -5,7 +5,7 @@ #include "os.h" #include "cx.h" -#include "tokens.h" +#include "asset_info.h" #include "tx_content.h" /************************************************************************************************* diff --git a/src_common/extra_info.h b/src_common/extra_info.h deleted file mode 100644 index 1221ef3f2..000000000 --- a/src_common/extra_info.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "tokens.h" -#include "nft.h" - -typedef union extraInfo_t { - tokenDefinition_t token; - nftInfo_t nft; -} extraInfo_t; diff --git a/src_common/nft.h b/src_common/nft.h deleted file mode 100644 index 6404dc49a..000000000 --- a/src_common/nft.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include - -#define COLLECTION_NAME_MAX_LEN 70 - -typedef struct nftInfo_t { - uint8_t contractAddress[ADDRESS_LENGTH]; // must be first item - char collectionName[COLLECTION_NAME_MAX_LEN + 1]; -} nftInfo_t; diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 3e82d57dd..5ddcf1ea7 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -2,7 +2,7 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "tokens.h" +#include "asset_info.h" #include "common_utils.h" #include "common_ui.h" #include "os_io_seproxyhal.h" diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 9575eb367..f28c843e2 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -1,6 +1,6 @@ #include "shared_context.h" #include "apdu_constants.h" -#include "tokens.h" +#include "asset_info.h" #include "eth_plugin_interface.h" #include "eth_plugin_internal.h" #include "plugin_utils.h" diff --git a/src_plugins/erc1155/erc1155_plugin.h b/src_plugins/erc1155/erc1155_plugin.h index eb174bdc8..a60dab69b 100644 --- a/src_plugins/erc1155/erc1155_plugin.h +++ b/src_plugins/erc1155/erc1155_plugin.h @@ -7,7 +7,7 @@ #include #include "ethUstream.h" #include "uint256.h" -#include "nft.h" +#include "asset_info.h" // Internal plugin for EIP 1155: https://eips.ethereum.org/EIPS/eip-1155 diff --git a/src_plugins/erc721/erc721_plugin.h b/src_plugins/erc721/erc721_plugin.h index 62870fae5..685c5e9d0 100644 --- a/src_plugins/erc721/erc721_plugin.h +++ b/src_plugins/erc721/erc721_plugin.h @@ -6,7 +6,7 @@ #include #include #include "ethUstream.h" -#include "nft.h" +#include "asset_info.h" // Internal plugin for EIP 721: https://eips.ethereum.org/EIPS/eip-721 diff --git a/tools/build_sdk.py b/tools/build_sdk.py index bf1199587..746e0f281 100755 --- a/tools/build_sdk.py +++ b/tools/build_sdk.py @@ -154,12 +154,10 @@ def merge_c_files(sources, nodes_to_extract): # some nodes will be extracted from these headers and merged into a new # one, copied to sdk headers_to_merge = [ - "src_common/tokens.h", + "src_common/asset_info.h", "src_common/common_utils.h", "src_common/tx_content.h", "src_common/plugin_utils.h", - "src_common/nft.h", - "src_common/extra_info.h", "src_common/caller_api.h", ] nodes_to_extract = { From b3b9046a63013613d3f2027c1a6a9777c0f37a7e Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 18 Jan 2024 10:28:00 +0100 Subject: [PATCH 118/160] Update plugin sdk build script to only copy files instead of cherry-picking functions --- .github/workflows/sdk-generation.yml | 2 +- Makefile | 2 +- src_common/eth_plugin_interface.h | 10 +- src_common/plugin_utils.h | 2 + src_plugin_sdk/README.md | 2 +- src_plugin_sdk/plugin_utils.c | 28 ---- src_plugin_sdk/plugin_utils.h | 27 ---- src_plugin_sdk/{ => src}/main.c | 1 - tools/build_sdk.py | 222 --------------------------- tools/build_sdk.sh | 10 ++ 10 files changed, 21 insertions(+), 285 deletions(-) delete mode 100644 src_plugin_sdk/plugin_utils.c delete mode 100644 src_plugin_sdk/plugin_utils.h rename src_plugin_sdk/{ => src}/main.c (99%) delete mode 100755 tools/build_sdk.py create mode 100755 tools/build_sdk.sh diff --git a/.github/workflows/sdk-generation.yml b/.github/workflows/sdk-generation.yml index b563e0f7c..363c89b0e 100644 --- a/.github/workflows/sdk-generation.yml +++ b/.github/workflows/sdk-generation.yml @@ -26,7 +26,7 @@ jobs: persist-credentials: false - name: Build new SDK - run: python tools/build_sdk.py + run: ./tools/build_sdk.sh - name: Extract branch name shell: bash diff --git a/Makefile b/Makefile index 119abfd1c..a78c81300 100644 --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ ifeq ($(CHAIN),ethereum) endif # rebuild SDK - $(shell python3 tools/build_sdk.py) + $(shell ./tools/build_sdk.sh) # check if a difference is noticed (fail if it happens in CI build) ifneq ($(shell git status | grep 'ethereum-plugin-sdk'),) diff --git a/src_common/eth_plugin_interface.h b/src_common/eth_plugin_interface.h index 9c93dfd72..98218368a 100644 --- a/src_common/eth_plugin_interface.h +++ b/src_common/eth_plugin_interface.h @@ -1,11 +1,15 @@ // clang-format off -#ifndef _ETH_PLUGIN_INTERFACE_H_ -#define _ETH_PLUGIN_INTERFACE_H_ +#pragma once #include "os.h" #include "cx.h" + +// Include other header compatible with plugins #include "asset_info.h" +#include "caller_api.h" +#include "common_utils.h" +#include "plugin_utils.h" #include "tx_content.h" /************************************************************************************************* @@ -217,6 +221,4 @@ typedef struct ethQueryContractUI_s { } ethQueryContractUI_t; // void handle_query_contract_ui(ethQueryContractUI_t *parameters); -#endif // _ETH_PLUGIN_INTERFACE_H_ - // clang-format on diff --git a/src_common/plugin_utils.h b/src_common/plugin_utils.h index 569c20272..b37da7abc 100644 --- a/src_common/plugin_utils.h +++ b/src_common/plugin_utils.h @@ -20,6 +20,8 @@ #include #include +#include "eth_plugin_interface.h" + #define SELECTOR_SIZE 4 #define PARAMETER_LENGTH 32 diff --git a/src_plugin_sdk/README.md b/src_plugin_sdk/README.md index b183cab3b..a5c308d36 100644 --- a/src_plugin_sdk/README.md +++ b/src_plugin_sdk/README.md @@ -14,5 +14,5 @@ Be careful, and weight your choices. If for some reasons you want to rebuild this SDK manually from [app-ethereum](https://github.com/LedgerHQ/app-ethereum) (reminder: it is rebuild automatically when building app-ethereum itself): ```shell -$> python3 tools/build_sdk.py +$> ./tools/build_sdk.sh ``` diff --git a/src_plugin_sdk/plugin_utils.c b/src_plugin_sdk/plugin_utils.c deleted file mode 100644 index 42ecef09d..000000000 --- a/src_plugin_sdk/plugin_utils.c +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************** - * Ledger Plugin SDK - * (c) 2023 Ledger SAS - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ - -#include "plugin_utils.h" - -bool find_selector(uint32_t selector, const uint32_t *array, size_t size, size_t *idx) { - for (size_t i = 0; i < size; ++i) { - if (selector == array[i]) { - if (idx != NULL) *idx = i; - return true; - } - } - return false; -} diff --git a/src_plugin_sdk/plugin_utils.h b/src_plugin_sdk/plugin_utils.h deleted file mode 100644 index e2816f91d..000000000 --- a/src_plugin_sdk/plugin_utils.h +++ /dev/null @@ -1,27 +0,0 @@ -/***************************************************************************** - * Ledger Plugin SDK - * (c) 2023 Ledger SAS - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ - -#ifndef UTILS_H_ -#define UTILS_H_ - -#include -#include -#include - -bool find_selector(uint32_t selector, const uint32_t *array, size_t size, size_t *idx); - -#endif // UTILS_H_ diff --git a/src_plugin_sdk/main.c b/src_plugin_sdk/src/main.c similarity index 99% rename from src_plugin_sdk/main.c rename to src_plugin_sdk/src/main.c index f3acb5463..bd5b56c10 100644 --- a/src_plugin_sdk/main.c +++ b/src_plugin_sdk/src/main.c @@ -15,7 +15,6 @@ * limitations under the License. *****************************************************************************/ -#include "eth_internals.h" #include "eth_plugin_interface.h" #include "lib_standard_app/swap_lib_calls.h" // RUN_APPLICATION diff --git a/tools/build_sdk.py b/tools/build_sdk.py deleted file mode 100755 index 746e0f281..000000000 --- a/tools/build_sdk.py +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env python3 - -''' -This script extract a few specific definitions from app-ethereum that are -required to exchange information with ethereum external plugins. -It should always be launched from app-ethereum: - -python3 tools/build_sdk.py - -''' - -import os -import shutil - - -def extract_from_headers(sources, nodes_to_extract): - cat_sources = [] - for source in sources: - with open(source, 'r') as f: - cat_sources += f.readlines() - - sdk_body = [] - for key, values in nodes_to_extract.items(): - for value in values: - node = [] - unclosed_curvy_brackets = False - unclosed_parantheses = False - for line in cat_sources: - if key in line and value in line: - node += [line] - unclosed_curvy_brackets = line.count('{') - line.count('}') - if not unclosed_curvy_brackets: - break - elif (key == "fn" and value in line) or unclosed_parantheses: - node += [line] - unclosed_parantheses = line.find(")") == -1 - if not unclosed_parantheses: - break - elif unclosed_curvy_brackets: - node += [line] - unclosed_curvy_brackets += line.count( - '{') - line.count('}') - if unclosed_curvy_brackets: - continue - else: - break - - sdk_body += [''.join(node)] - - return '\n'.join(sdk_body) - - -def extract_from_c_files(sources, nodes_to_extract): - cat_sources = [] - for source in sources: - with open(source, 'r') as f: - cat_sources += f.readlines() - - sdk_body = [] - for node_name in nodes_to_extract: - node = [] - copying = False - wait_curvy_bracket = True - for line in cat_sources: - if node_name in line: - copying = True - node += [line] - unclosed_curvy_brackets = line.count('{') - line.count('}') - elif copying: - node += [line] - unclosed_curvy_brackets += line.count('{') - line.count('}') - if wait_curvy_bracket: - wait_curvy_bracket = line.count('}') == 0 - if unclosed_curvy_brackets != 0 or wait_curvy_bracket: - continue - else: - break - - sdk_body += [''.join(node)] - - return '\n'.join(sdk_body) - - -def merge_headers(sources, nodes_to_extract): - includes = [ - '#include ', - '#include ', - '#include "os.h"', - '#include "cx.h"', - '#ifdef HAVE_NBGL', - '#include "nbgl_types.h"', - '#include "glyphs.h"', - '#endif' - ] - - body = extract_from_headers(sources, nodes_to_extract) - - eth_internals_h = '\n\n'.join([ - "/* This file is auto-generated, don't edit it */", - "#pragma once", - '\n'.join(includes), - body - ]) - - with open("ethereum-plugin-sdk/include/eth_internals.h", 'w') as f: - f.write(eth_internals_h) - - -def copy_header(header_to_copy, merged_headers): - - merged_headers = [os.path.basename(path) for path in merged_headers] - - with open(header_to_copy, 'r') as f: - source = f.readlines() - - eth_plugin_interface_h = [ - "/* This file is auto-generated, don't edit it */\n"] - for line in source: - eth_plugin_interface_h += [line] - for header in merged_headers: - if header in line: - del eth_plugin_interface_h[-1] - break - - # add '#include "eth_internals.h"' - include_index = eth_plugin_interface_h.index('#include "cx.h"\n') - eth_plugin_interface_h.insert( - include_index+1, '#include "eth_internals.h"\n') - - # dump to file - with open("ethereum-plugin-sdk/include/eth_plugin_interface.h", 'w') as f: - f.writelines(eth_plugin_interface_h) - - -def merge_c_files(sources, nodes_to_extract): - includes = [ - '#include "eth_internals.h"' - ] - - body = extract_from_c_files(sources, nodes_to_extract) - - eth_internals_h = '\n\n'.join([ - "/* This file is auto-generated, don't edit it */", - '\n'.join(includes), - body - ]) - - with open("ethereum-plugin-sdk/include/eth_internals.c", 'w') as f: - f.write(eth_internals_h) - - -if __name__ == "__main__": - - # some nodes will be extracted from these headers and merged into a new - # one, copied to sdk - headers_to_merge = [ - "src_common/asset_info.h", - "src_common/common_utils.h", - "src_common/tx_content.h", - "src_common/plugin_utils.h", - "src_common/caller_api.h", - ] - nodes_to_extract = { - "#define": ["MAX_TICKER_LEN", - "ADDRESS_LENGTH", - "INT256_LENGTH", - "WEI_TO_ETHER", - "SELECTOR_SIZE", - "PARAMETER_LENGTH", - "COLLECTION_NAME_MAX_LEN"], - "typedef enum": [], - "typedef struct": ["tokenDefinition_t", - "txInt256_t", - "txContent_t", - "nftInfo_t", - "caller_app_t"], - "typedef union": ["extraInfo_t"], - "__attribute__((no_instrument_function)) inline": ["int allzeroes"], - "const": ["HEXDIGITS"], - "fn": ["bool getEthAddressStringFromBinary", - "bool getEthAddressFromKey", - "bool getEthDisplayableAddress", - "bool adjustDecimals", - "bool uint256_to_decimal", - "bool amountToString", - "bool u64_to_string", - "void copy_address", - "void copy_parameter", - "bool U2BE_from_parameter", - "bool U4BE_from_parameter"] - } - merge_headers(headers_to_merge, nodes_to_extract) - - # this header will be stripped from all #include related to previously - # merged headers, then copied to sdk - copy_header("src_common/eth_plugin_interface.h", headers_to_merge) - - # extract and merge function bodies - c_files_to_merge = [ - "src_common/common_utils.c", - "src_common/plugin_utils.c", - ] - merge_c_files(c_files_to_merge, nodes_to_extract["fn"]) - - files_to_copy = [ - "main.c", - "plugin_utils.c", - "plugin_utils.h", - ] - for file in files_to_copy: - shutil.copyfile("src_plugin_sdk/" + file, - "ethereum-plugin-sdk/include/" + file) - - files_to_copy = [ - "CHANGELOG.md", - "README.md", - "LICENSE", - "standard_plugin.mk", - ] - for file in files_to_copy: - shutil.copyfile("src_plugin_sdk/" + file, - "ethereum-plugin-sdk/" + file) diff --git a/tools/build_sdk.sh b/tools/build_sdk.sh new file mode 100755 index 000000000..f4ec6a382 --- /dev/null +++ b/tools/build_sdk.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Clean the sdk +find ./ethereum-plugin-sdk/ -mindepth 1 -maxdepth 1 ! -name .git -exec rm -r {} \; + +# Copy exclusive files +cp -r src_plugin_sdk/* ./ethereum-plugin-sdk/ + +# Copy common sources +cp -r src_common/* ./ethereum-plugin-sdk/src/ From e0c2ad7057de75a1cd702366e875d617c0dbb5c8 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 2 Feb 2024 10:36:59 +0100 Subject: [PATCH 119/160] Move all public keys to dedicated header --- src/public_keys.h | 61 +++++++++++++++++++ .../cmd_provide_domain_name.c | 17 +----- .../cmd_provideNFTInfo.c | 23 +------ src_features/setPlugin/cmd_setPlugin.c | 24 +------- 4 files changed, 64 insertions(+), 61 deletions(-) diff --git a/src/public_keys.h b/src/public_keys.h index d4a508b0d..d5964dbf4 100644 --- a/src/public_keys.h +++ b/src/public_keys.h @@ -40,3 +40,64 @@ static const uint8_t LEDGER_SIGNATURE_PUBLIC_KEY[] = { 0x8f, 0xd0, 0xf8, 0x1d, 0xaa, 0x94, 0x97, 0x91, 0x83 #endif }; + +static const uint8_t LEDGER_NFT_METADATA_PUBLIC_KEY[] = { +#if defined(HAVE_NFT_TEST_KEY) + 0x04, 0x3c, 0xfb, 0x5f, 0xb3, 0x19, 0x05, 0xf4, 0xbd, 0x39, 0xd9, 0xd5, 0x35, 0xa4, + 0x0c, 0x26, 0xaa, 0xb5, 0x1c, 0x5d, 0x7d, 0x32, 0x19, 0xb2, 0x8a, 0xc9, 0x42, 0xb9, + 0x80, 0xfb, 0x20, 0x6c, 0xfb, 0x30, 0xb5, 0x1c, 0xc2, 0xde, 0x21, 0x19, 0xac, 0x03, + 0x8e, 0xbb, 0x0d, 0x7d, 0xd6, 0x54, 0x17, 0x70, 0x20, 0x4a, 0x3c, 0xed, 0x3a, 0x79, + 0xe2, 0x8b, 0x32, 0xfb, 0xb6, 0x72, 0x64, 0x68, 0xc0 +#elif defined(HAVE_NFT_STAGING_KEY) + 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, + 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, + 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, + 0xf5, 0xc6, 0xdf, 0x13, 0x15, 0x8d, 0x28, 0xcc, 0x12, 0xd1, 0xdd, 0xa6, 0xec, 0xe9, + 0x46, 0xb8, 0x9d, 0x5c, 0x05, 0x49, 0x92, 0x59, 0xc4 +#else // production key + 0x04, 0x98, 0x8d, 0xa6, 0xb2, 0x46, 0xf2, 0x8e, 0x77, 0xc1, 0xba, 0xb6, 0x75, 0xcb, + 0x2a, 0x27, 0x44, 0xf7, 0xf5, 0xce, 0xc5, 0x6a, 0xe6, 0xe0, 0x32, 0x23, 0x33, 0x7b, + 0x57, 0x94, 0xcd, 0x6a, 0xe0, 0x7d, 0x48, 0xb3, 0x0d, 0xb9, 0xcc, 0xb4, 0x0f, 0x5a, + 0x02, 0xa1, 0x1a, 0x3a, 0xb9, 0x9d, 0x5f, 0x59, 0x5a, 0x3d, 0x50, 0xa0, 0xe1, 0x30, + 0x23, 0xfd, 0x0d, 0x95, 0x87, 0x92, 0xd7, 0x97, 0x01 +#endif +}; + +static const uint8_t DOMAIN_NAME_PUB_KEY[] = { +#ifdef HAVE_DOMAIN_NAME_TEST_KEY + 0x04, 0xb9, 0x1f, 0xbe, 0xc1, 0x73, 0xe3, 0xba, 0x4a, 0x71, 0x4e, 0x01, 0x4e, 0xbc, + 0x82, 0x7b, 0x6f, 0x89, 0x9a, 0x9f, 0xa7, 0xf4, 0xac, 0x76, 0x9c, 0xde, 0x28, 0x43, + 0x17, 0xa0, 0x0f, 0x4f, 0x65, 0x0f, 0x09, 0xf0, 0x9a, 0xa4, 0xff, 0x5a, 0x31, 0x76, + 0x02, 0x55, 0xfe, 0x5d, 0xfc, 0x81, 0x13, 0x29, 0xb3, 0xb5, 0x0b, 0xe9, 0x91, 0x94, + 0xfc, 0xa1, 0x16, 0x19, 0xe6, 0x5f, 0x2e, 0xdf, 0xea +#else + 0x04, 0x6a, 0x94, 0xe7, 0xa4, 0x2c, 0xd0, 0xc3, 0x3f, 0xdf, 0x44, 0x0c, 0x8e, 0x2a, + 0xb2, 0x54, 0x2c, 0xef, 0xbe, 0x5d, 0xb7, 0xaa, 0x0b, 0x93, 0xa9, 0xfc, 0x81, 0x4b, + 0x9a, 0xcf, 0xa7, 0x5e, 0xb4, 0xe5, 0x3d, 0x6f, 0x00, 0x25, 0x94, 0xbd, 0xb6, 0x05, + 0xd9, 0xb5, 0xbd, 0xa9, 0xfa, 0x4b, 0x4b, 0xf3, 0xa5, 0x49, 0x6f, 0xd3, 0x16, 0x4b, + 0xae, 0xf5, 0xaf, 0xcf, 0x90, 0xe8, 0x40, 0x88, 0x71 +#endif +}; + +// Only used for signing NFT plugins (ERC721 and ERC1155) +static const uint8_t LEDGER_NFT_SELECTOR_PUBLIC_KEY[] = { +#if defined(HAVE_SET_PLUGIN_TEST_KEY) + 0x04, 0xc0, 0x55, 0xbc, 0x4e, 0xcf, 0x05, 0x5e, 0x2d, 0x85, 0x08, 0x5d, 0x35, 0x12, + 0x7a, 0x3d, 0xe6, 0x70, 0x5c, 0x7f, 0x88, 0x50, 0x55, 0xcd, 0x70, 0x71, 0xe8, 0x76, + 0x71, 0xbf, 0x19, 0x1f, 0xe3, 0x3c, 0xc8, 0xf0, 0x1a, 0xbc, 0x2f, 0x28, 0x7c, 0x81, + 0x9a, 0x14, 0x8a, 0xbe, 0x1b, 0x58, 0x1d, 0xf1, 0xb4, 0x94, 0x0a, 0xf5, 0xd4, 0xdc, + 0x3a, 0x4e, 0x6b, 0x60, 0x19, 0x17, 0x71, 0x2b, 0x37 +#elif defined(HAVE_NFT_STAGING_KEY) + 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, + 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, + 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, + 0xf5, 0xc6, 0xdf, 0x13, 0x15, 0x8d, 0x28, 0xcc, 0x12, 0xd1, 0xdd, 0xa6, 0xec, 0xe9, + 0x46, 0xb8, 0x9d, 0x5c, 0x05, 0x49, 0x92, 0x59, 0xc4 +#else + 0x04, 0xd8, 0x62, 0x6e, 0x01, 0x9e, 0x55, 0x3e, 0x19, 0x69, 0x56, 0xf1, 0x17, 0x4d, + 0xcd, 0xb8, 0x9a, 0x1c, 0xda, 0xc4, 0x93, 0x90, 0x08, 0xbc, 0x79, 0x77, 0x33, 0x6d, + 0x78, 0x24, 0xee, 0xe3, 0xa2, 0x62, 0x24, 0x1a, 0x62, 0x73, 0x52, 0x3b, 0x09, 0xb8, + 0xd0, 0xce, 0x0d, 0x39, 0xe8, 0x60, 0xc9, 0x4d, 0x02, 0x53, 0x58, 0xdb, 0xdc, 0x25, + 0x92, 0xc7, 0xc6, 0x48, 0x0d, 0x39, 0xce, 0xbb, 0xa3 +#endif +}; diff --git a/src_features/provideDomainName/cmd_provide_domain_name.c b/src_features/provideDomainName/cmd_provide_domain_name.c index ce72f4ec7..3ec5b39d4 100644 --- a/src_features/provideDomainName/cmd_provide_domain_name.c +++ b/src_features/provideDomainName/cmd_provide_domain_name.c @@ -11,22 +11,7 @@ #include "mem.h" #include "hash_bytes.h" #include "network.h" - -static const uint8_t DOMAIN_NAME_PUB_KEY[] = { -#ifdef HAVE_DOMAIN_NAME_TEST_KEY - 0x04, 0xb9, 0x1f, 0xbe, 0xc1, 0x73, 0xe3, 0xba, 0x4a, 0x71, 0x4e, 0x01, 0x4e, 0xbc, - 0x82, 0x7b, 0x6f, 0x89, 0x9a, 0x9f, 0xa7, 0xf4, 0xac, 0x76, 0x9c, 0xde, 0x28, 0x43, - 0x17, 0xa0, 0x0f, 0x4f, 0x65, 0x0f, 0x09, 0xf0, 0x9a, 0xa4, 0xff, 0x5a, 0x31, 0x76, - 0x02, 0x55, 0xfe, 0x5d, 0xfc, 0x81, 0x13, 0x29, 0xb3, 0xb5, 0x0b, 0xe9, 0x91, 0x94, - 0xfc, 0xa1, 0x16, 0x19, 0xe6, 0x5f, 0x2e, 0xdf, 0xea -#else - 0x04, 0x6a, 0x94, 0xe7, 0xa4, 0x2c, 0xd0, 0xc3, 0x3f, 0xdf, 0x44, 0x0c, 0x8e, 0x2a, - 0xb2, 0x54, 0x2c, 0xef, 0xbe, 0x5d, 0xb7, 0xaa, 0x0b, 0x93, 0xa9, 0xfc, 0x81, 0x4b, - 0x9a, 0xcf, 0xa7, 0x5e, 0xb4, 0xe5, 0x3d, 0x6f, 0x00, 0x25, 0x94, 0xbd, 0xb6, 0x05, - 0xd9, 0xb5, 0xbd, 0xa9, 0xfa, 0x4b, 0x4b, 0xf3, 0xa5, 0x49, 0x6f, 0xd3, 0x16, 0x4b, - 0xae, 0xf5, 0xaf, 0xcf, 0x90, 0xe8, 0x40, 0x88, 0x71 -#endif -}; +#include "public_keys.h" #define P1_FIRST_CHUNK 0x01 #define P1_FOLLOWING_CHUNK 0x00 diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index 5ddcf1ea7..cde32159d 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -7,6 +7,7 @@ #include "common_ui.h" #include "os_io_seproxyhal.h" #include "network.h" +#include "public_keys.h" #define TYPE_SIZE 1 #define VERSION_SIZE 1 @@ -29,28 +30,6 @@ #define VERSION_1 1 -static const uint8_t LEDGER_NFT_METADATA_PUBLIC_KEY[] = { -#if defined(HAVE_NFT_TEST_KEY) - 0x04, 0x3c, 0xfb, 0x5f, 0xb3, 0x19, 0x05, 0xf4, 0xbd, 0x39, 0xd9, 0xd5, 0x35, 0xa4, - 0x0c, 0x26, 0xaa, 0xb5, 0x1c, 0x5d, 0x7d, 0x32, 0x19, 0xb2, 0x8a, 0xc9, 0x42, 0xb9, - 0x80, 0xfb, 0x20, 0x6c, 0xfb, 0x30, 0xb5, 0x1c, 0xc2, 0xde, 0x21, 0x19, 0xac, 0x03, - 0x8e, 0xbb, 0x0d, 0x7d, 0xd6, 0x54, 0x17, 0x70, 0x20, 0x4a, 0x3c, 0xed, 0x3a, 0x79, - 0xe2, 0x8b, 0x32, 0xfb, 0xb6, 0x72, 0x64, 0x68, 0xc0 -#elif defined(HAVE_NFT_STAGING_KEY) - 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, - 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, - 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, - 0xf5, 0xc6, 0xdf, 0x13, 0x15, 0x8d, 0x28, 0xcc, 0x12, 0xd1, 0xdd, 0xa6, 0xec, 0xe9, - 0x46, 0xb8, 0x9d, 0x5c, 0x05, 0x49, 0x92, 0x59, 0xc4 -#else // production key - 0x04, 0x98, 0x8d, 0xa6, 0xb2, 0x46, 0xf2, 0x8e, 0x77, 0xc1, 0xba, 0xb6, 0x75, 0xcb, - 0x2a, 0x27, 0x44, 0xf7, 0xf5, 0xce, 0xc5, 0x6a, 0xe6, 0xe0, 0x32, 0x23, 0x33, 0x7b, - 0x57, 0x94, 0xcd, 0x6a, 0xe0, 0x7d, 0x48, 0xb3, 0x0d, 0xb9, 0xcc, 0xb4, 0x0f, 0x5a, - 0x02, 0xa1, 0x1a, 0x3a, 0xb9, 0x9d, 0x5f, 0x59, 0x5a, 0x3d, 0x50, 0xa0, 0xe1, 0x30, - 0x23, 0xfd, 0x0d, 0x95, 0x87, 0x92, 0xd7, 0x97, 0x01 -#endif -}; - typedef bool verificationAlgo(const cx_ecfp_public_key_t *, int, cx_md_t, diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index f28c843e2..8c4a67e18 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -8,6 +8,7 @@ #include "common_ui.h" #include "os_io_seproxyhal.h" #include "network.h" +#include "public_keys.h" // Supported internal plugins #define ERC721_STR "ERC721" @@ -46,29 +47,6 @@ typedef enum AlgorithmID { ECC_SECG_P256K1__ECDSA_SHA_256 = 0x01, } AlgorithmID; -// Only used for signing NFT plugins (ERC721 and ERC1155) -static const uint8_t LEDGER_NFT_SELECTOR_PUBLIC_KEY[] = { -#if defined(HAVE_SET_PLUGIN_TEST_KEY) - 0x04, 0xc0, 0x55, 0xbc, 0x4e, 0xcf, 0x05, 0x5e, 0x2d, 0x85, 0x08, 0x5d, 0x35, 0x12, - 0x7a, 0x3d, 0xe6, 0x70, 0x5c, 0x7f, 0x88, 0x50, 0x55, 0xcd, 0x70, 0x71, 0xe8, 0x76, - 0x71, 0xbf, 0x19, 0x1f, 0xe3, 0x3c, 0xc8, 0xf0, 0x1a, 0xbc, 0x2f, 0x28, 0x7c, 0x81, - 0x9a, 0x14, 0x8a, 0xbe, 0x1b, 0x58, 0x1d, 0xf1, 0xb4, 0x94, 0x0a, 0xf5, 0xd4, 0xdc, - 0x3a, 0x4e, 0x6b, 0x60, 0x19, 0x17, 0x71, 0x2b, 0x37 -#elif defined(HAVE_NFT_STAGING_KEY) - 0x04, 0xf5, 0x70, 0x0c, 0xa1, 0xe8, 0x74, 0x24, 0xc7, 0xc7, 0xd1, 0x19, 0xe7, 0xe3, - 0xc1, 0x89, 0xb1, 0x62, 0x50, 0x94, 0xdb, 0x6e, 0xa0, 0x40, 0x87, 0xc8, 0x30, 0x00, - 0x7d, 0x0b, 0x46, 0x9a, 0x53, 0x11, 0xee, 0x6a, 0x1a, 0xcd, 0x1d, 0xa5, 0xaa, 0xb0, - 0xf5, 0xc6, 0xdf, 0x13, 0x15, 0x8d, 0x28, 0xcc, 0x12, 0xd1, 0xdd, 0xa6, 0xec, 0xe9, - 0x46, 0xb8, 0x9d, 0x5c, 0x05, 0x49, 0x92, 0x59, 0xc4 -#else - 0x04, 0xd8, 0x62, 0x6e, 0x01, 0x9e, 0x55, 0x3e, 0x19, 0x69, 0x56, 0xf1, 0x17, 0x4d, - 0xcd, 0xb8, 0x9a, 0x1c, 0xda, 0xc4, 0x93, 0x90, 0x08, 0xbc, 0x79, 0x77, 0x33, 0x6d, - 0x78, 0x24, 0xee, 0xe3, 0xa2, 0x62, 0x24, 0x1a, 0x62, 0x73, 0x52, 0x3b, 0x09, 0xb8, - 0xd0, 0xce, 0x0d, 0x39, 0xe8, 0x60, 0xc9, 0x4d, 0x02, 0x53, 0x58, 0xdb, 0xdc, 0x25, - 0x92, 0xc7, 0xc6, 0x48, 0x0d, 0x39, 0xce, 0xbb, 0xa3 -#endif -}; - // Verification function used to verify the signature typedef bool verificationAlgo(const cx_ecfp_public_key_t *, int, From d6d0c47ca45d72fdd888445072f7535856a83c6d Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Fri, 2 Feb 2024 11:14:05 +0100 Subject: [PATCH 120/160] Introduce an empty "eth_internals.h" file in the plugin sdk to not break compatibility --- src_plugin_sdk/src/eth_internals.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src_plugin_sdk/src/eth_internals.h diff --git a/src_plugin_sdk/src/eth_internals.h b/src_plugin_sdk/src/eth_internals.h new file mode 100644 index 000000000..60087eabc --- /dev/null +++ b/src_plugin_sdk/src/eth_internals.h @@ -0,0 +1,21 @@ +/******************************************************************************* + * Ledger Ethereum App + * (c) 2016-2019 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +// Empty file, introduced to not break compatibility following plugin-sdk structure rework +#warning "Deprecated file, the sdk sources have been rationalized in several dedicated files." From bc76a319202fec3470e3c82286b753b3b8a83b0e Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 2 Feb 2024 14:21:05 +0100 Subject: [PATCH 121/160] Updated plugin SDK changelog file --- src_plugin_sdk/CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src_plugin_sdk/CHANGELOG.md b/src_plugin_sdk/CHANGELOG.md index a1c0f99a9..39e92abbc 100644 --- a/src_plugin_sdk/CHANGELOG.md +++ b/src_plugin_sdk/CHANGELOG.md @@ -5,7 +5,13 @@ | :rotating_light: | Breaks build | | :warning: | Breaks compatibility with app | -## [latest](/) - 2023/12/07 +## [latest](/) - 2024/02/02 + +### Changed + +* The SDK source code has been split into multiple smaller files + +## [3b7e7ad](/../../commit/3b7e7ad) - 2023/12/07 ### Fixed From ac9532afd5c3eda0c2a655d1197051fd8da9a8f5 Mon Sep 17 00:00:00 2001 From: fbeutin-ledger Date: Fri, 2 Feb 2024 16:28:10 +0000 Subject: [PATCH 122/160] [create-pull-request] automated change --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 3b7e7adf4..225054932 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 3b7e7adf4f7e512434779cc7dbd9d0ede6d6c132 +Subproject commit 225054932c7acab8f83449abbf887c5563dc58c0 From 91352af57c8acc45eddaa18441acaa3e3561f2b0 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 5 Feb 2024 10:21:54 +0100 Subject: [PATCH 123/160] Improve error-handling of chain ID when parsing APDUs --- src/network.c | 12 ++++++++++++ src/network.h | 6 ++++++ .../cmd_provideTokenInfo.c | 10 ++++++---- .../provideNFTInformation/cmd_provideNFTInfo.c | 4 ++-- src_features/setPlugin/cmd_setPlugin.c | 4 ++-- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/network.c b/src/network.c index eb25302d0..4107abaa5 100644 --- a/src/network.c +++ b/src/network.c @@ -144,3 +144,15 @@ const char *get_displayable_ticker(const uint64_t *chain_id) { } return ticker; } + +/** + * Checks wether the app can support the given chain ID + * + * - If the given chain ID is the same as the app's one + * - If both chain IDs are present in the array of Ethereum-compatible networks + */ +bool app_compatible_with_chain_id(const uint64_t *chain_id) { + return ((chainConfig->chainId == *chain_id) || + (chain_is_ethereum_compatible(&chainConfig->chainId) && + chain_is_ethereum_compatible(chain_id))); +} diff --git a/src/network.h b/src/network.h index c6640d554..ccde23701 100644 --- a/src/network.h +++ b/src/network.h @@ -3,10 +3,16 @@ #include #include +#define UNSUPPORTED_CHAIN_ID_MSG(id) \ + do { \ + PRINTF("Unsupported chain ID: %u (app: %u)\n", id, chainConfig->chainId); \ + } while (0) + const char *get_network_name_from_chain_id(const uint64_t *chain_id); const char *get_network_ticker_from_chain_id(const uint64_t *chain_id); bool chain_is_ethereum_compatible(const uint64_t *chain_id); +bool app_compatible_with_chain_id(const uint64_t *chain_id); uint64_t get_tx_chain_id(void); diff --git a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c index 5fd546bb4..e7ae4fb69 100644 --- a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c +++ b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c @@ -3,6 +3,7 @@ #include "public_keys.h" #include "common_ui.h" #include "os_io_seproxyhal.h" +#include "network.h" #ifdef HAVE_CONTRACT_NAME_IN_DESCRIPTOR @@ -111,7 +112,7 @@ void handleProvideErc20TokenInformation(uint8_t p1, UNUSED(tx); uint32_t offset = 0; uint8_t tickerLength; - uint32_t chainId; + uint64_t chain_id; uint8_t hash[INT256_LENGTH]; cx_ecfp_public_key_t tokenKey; @@ -141,12 +142,13 @@ void handleProvideErc20TokenInformation(uint8_t p1, memmove(token->address, workBuffer + offset, 20); offset += 20; dataLength -= 20; + // TODO: Handle 64-bit long chain IDs token->decimals = U4BE(workBuffer, offset); offset += 4; dataLength -= 4; - chainId = U4BE(workBuffer, offset); - if ((chainConfig->chainId != ETHEREUM_MAINNET_CHAINID) && (chainConfig->chainId != chainId)) { - PRINTF("ChainId token mismatch: %d vs %d\n", chainConfig->chainId, chainId); + chain_id = U4BE(workBuffer, offset); + if (!app_compatible_with_chain_id(&chain_id)) { + UNSUPPORTED_CHAIN_ID_MSG(chain_id); THROW(0x6A80); } offset += 4; diff --git a/src_features/provideNFTInformation/cmd_provideNFTInfo.c b/src_features/provideNFTInformation/cmd_provideNFTInfo.c index cde32159d..e59c77b6f 100644 --- a/src_features/provideNFTInformation/cmd_provideNFTInfo.c +++ b/src_features/provideNFTInformation/cmd_provideNFTInfo.c @@ -130,8 +130,8 @@ void handleProvideNFTInformation(uint8_t p1, // this prints raw data, so to have a more meaningful print, display // the buffer before the endianness swap PRINTF("ChainID: %.*H\n", sizeof(chain_id), (workBuffer + offset)); - if (!chain_is_ethereum_compatible(&chain_id)) { - PRINTF("Unsupported chain ID!\n"); + if (!app_compatible_with_chain_id(&chain_id)) { + UNSUPPORTED_CHAIN_ID_MSG(chain_id); THROW(APDU_RESPONSE_INVALID_DATA); } offset += CHAIN_ID_SIZE; diff --git a/src_features/setPlugin/cmd_setPlugin.c b/src_features/setPlugin/cmd_setPlugin.c index 8c4a67e18..d4eb522c4 100644 --- a/src_features/setPlugin/cmd_setPlugin.c +++ b/src_features/setPlugin/cmd_setPlugin.c @@ -159,8 +159,8 @@ void handleSetPlugin(uint8_t p1, // this prints raw data, so to have a more meaningful print, display // the buffer before the endianness swap PRINTF("ChainID: %.*H\n", sizeof(chain_id), (workBuffer + offset)); - if (!chain_is_ethereum_compatible(&chain_id)) { - PRINTF("Unsupported chain ID!\n"); + if (!app_compatible_with_chain_id(&chain_id)) { + UNSUPPORTED_CHAIN_ID_MSG(chain_id); THROW(APDU_RESPONSE_INVALID_DATA); } offset += CHAIN_ID_SIZE; From bb23e7b7a5758fc30326f0c7a5361d4381e5810f Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 6 Feb 2024 10:40:56 +0100 Subject: [PATCH 124/160] Fix broken build for chains with extra tokens (testnets) --- src/extra_tokens.h | 2 ++ .../provideErc20TokenInformation/cmd_provideTokenInfo.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/extra_tokens.h b/src/extra_tokens.h index 87fcb4a63..f6b012c9a 100644 --- a/src/extra_tokens.h +++ b/src/extra_tokens.h @@ -17,6 +17,8 @@ #pragma once +#include "asset_info.h" + #ifdef HAVE_TOKENS_EXTRA_LIST #define NUM_TOKENS_EXTRA 8 diff --git a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c index e7ae4fb69..00665ad7c 100644 --- a/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c +++ b/src_features/provideErc20TokenInformation/cmd_provideTokenInfo.c @@ -3,6 +3,7 @@ #include "public_keys.h" #include "common_ui.h" #include "os_io_seproxyhal.h" +#include "extra_tokens.h" #include "network.h" #ifdef HAVE_CONTRACT_NAME_IN_DESCRIPTOR From a1c9c89ab3d2fcbd98a811523349ecb836477285 Mon Sep 17 00:00:00 2001 From: Pierre Pollastri Date: Tue, 6 Feb 2024 14:34:01 +0100 Subject: [PATCH 125/160] Fix broken link to developper portal in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0293c3194..637e3d306 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Ledger Blue is not maintained anymore, but the app can still be compiled for thi This app follows the specification available in the `doc/` folder. -To compile it and load it on a device, please check out our [developer portal](https://developers.ledger.com/docs/nano-app/introduction/). +To compile it and load it on a device, please check out our [developer portal](https://developers.ledger.com/docs/device-app/introduction). ### Plugins From 71e2281ddaae77a8ad889f9131af30ceb8cd0741 Mon Sep 17 00:00:00 2001 From: Xavier Chapron Date: Wed, 7 Feb 2024 10:42:50 +0100 Subject: [PATCH 126/160] standard_plugin.mk: Remove DISABLE_UI This is causing too many hurdles for too few perks. --- src_plugin_sdk/standard_plugin.mk | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src_plugin_sdk/standard_plugin.mk b/src_plugin_sdk/standard_plugin.mk index 5409d2939..f52c1327e 100644 --- a/src_plugin_sdk/standard_plugin.mk +++ b/src_plugin_sdk/standard_plugin.mk @@ -19,10 +19,6 @@ ifeq ($(BOLOS_SDK),) $(error Environment variable BOLOS_SDK is not set) endif -# Prevent compilation of BAGL/NBGL -# Has to be before any SDK include -DISABLE_UI = 1 - include $(BOLOS_SDK)/Makefile.defines APPVERSION ?= "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" @@ -60,16 +56,4 @@ DISABLE_STANDARD_BAGL_UX_FLOW = 1 DISABLE_DEBUG_LEDGER_ASSERT = 1 DISABLE_DEBUG_THROW = 1 -# Required for PRINTFs to compile -ifeq ($(DEBUG),0) - DISABLE_STANDARD_SEPROXYHAL = 1 -endif - -# So the plugin can still access the necessary NBGL types and pass its icon to -# the Ethereum app -ifeq ($(TARGET_NAME),TARGET_STAX) - DEFINES += HAVE_NBGL - INCLUDES_PATH += $(BOLOS_SDK)/lib_nbgl/include $(BOLOS_SDK)/lib_ux_stax -endif - include $(BOLOS_SDK)/Makefile.standard_app From 5e382ea13c385d07dd9bf8dc6eb9bdc56f1bfcd4 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 7 Feb 2024 10:56:24 +0100 Subject: [PATCH 127/160] Updated plugin SDK changelog file --- src_plugin_sdk/CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src_plugin_sdk/CHANGELOG.md b/src_plugin_sdk/CHANGELOG.md index 39e92abbc..90ead8d91 100644 --- a/src_plugin_sdk/CHANGELOG.md +++ b/src_plugin_sdk/CHANGELOG.md @@ -5,7 +5,13 @@ | :rotating_light: | Breaks build | | :warning: | Breaks compatibility with app | -## [latest](/) - 2024/02/02 +## [latest](/) - 2024/02/07 + +### Removed + +* UI disabler + +## [2250549](/../../commit/2250549) - 2024/02/02 ### Changed From 0939f9004cec79668decf51cac40e23fe7080e96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Feb 2024 13:31:12 +0100 Subject: [PATCH 128/160] Update the SDK submodule Co-authored-by: xchapron-ledger --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 225054932..0a98664de 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 225054932c7acab8f83449abbf887c5563dc58c0 +Subproject commit 0a98664deba849f05a51407d8a3edb05cd83d464 From b5e0c8759bb7ff648e2dd2f41c55843c7db5cf5f Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 5 Jan 2024 15:48:20 +0100 Subject: [PATCH 129/160] [ci] Eth client Python package only deployed on pypi.org --- .github/workflows/python-client.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index af7a0e792..d4bdd4adf 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -86,8 +86,8 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_pypi_deployment.yml@v1 with: package_directory: "client/" - stable_deployment: ${{ github.ref == 'refs/heads/master' }} + stable_deployment: true check_changelog_version: true publish: ${{ github.event_name == 'push' }} secrets: - pypi_token: ${{ github.ref == 'refs/heads/master' && secrets.PYPI_PUBLIC_API_TOKEN || secrets.TEST_PYPI_PUBLIC_API_TOKEN }} + pypi_token: secrets.PYPI_PUBLIC_API_TOKEN From 99ba4a9eed5352f3dcf7342d653e597ea6e57e2d Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Fri, 5 Jan 2024 16:42:58 +0100 Subject: [PATCH 130/160] [ci][client] Eth Python client automatically infer its version from tags --- .github/workflows/python-client.yml | 48 ++----------------- .gitignore | 2 +- client/pyproject.toml | 8 +++- .../ledger_app_clients/ethereum/__init__.py | 5 +- 4 files changed, 14 insertions(+), 49 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index d4bdd4adf..3b16e18d6 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -4,6 +4,8 @@ name: Python client checks, package build and deployment on: workflow_dispatch: push: + tags: + - 'client-*' branches: - develop - master @@ -36,50 +38,6 @@ jobs: - name: Mypy type checking run: (cd client && mypy src/) - get-develop-version: - name: Get develop version - runs-on: ubuntu-latest - if: ${{ github.event_name == 'pull_request' && github.base_ref == 'develop' }} - outputs: - develop_version: ${{ steps.get-version.outputs.develop_version }} - steps: - - name: Check Out Code - uses: actions/checkout@v3 - with: - ref: develop - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.12.0 - - name: Get version - id: get-version - env: - PYTHONPATH: client/src/ledger_app_clients - run: | - echo "develop_version=$(python -c 'from ethereum import __version__; print(__version__)')" >> $GITHUB_OUTPUT - - version-check: - name: Check Version when opening a PR against develop - runs-on: ubuntu-latest - needs: get-develop-version - steps: - - name: Check Out Code - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.12.0 - - name: Check Version Bump - env: - DEVELOP_VERSION: ${{needs.get-develop-version.outputs.develop_version}} - PYTHONPATH: client/src/ledger_app_clients - run: | - current_version=$(python -c "from ethereum import __version__; print(__version__)") - if [[ "$current_version" == "$DEVELOP_VERSION" ]]; then - echo "Version in __init__.py hasn't been bumped. Please bump the version before merging." - exit 1 - fi - packaging: needs: [lint, mypy] name: Build, test and deploy the Python package @@ -87,7 +45,7 @@ jobs: with: package_directory: "client/" stable_deployment: true - check_changelog_version: true + check_changelog_version: ${{ startsWith(github.ref,'refs/tags/') }} publish: ${{ github.event_name == 'push' }} secrets: pypi_token: secrets.PYPI_PUBLIC_API_TOKEN diff --git a/.gitignore b/.gitignore index 6779287da..49c5a992e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ build/ # Python *.pyc - +__version__.py # JS tests/node_modules diff --git a/client/pyproject.toml b/client/pyproject.toml index 92295741b..660206bc3 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -34,8 +34,12 @@ dependencies = [ [tools.setuptools] include-package-data = true -[tool.setuptools.dynamic] -version = {attr = "ledger_app_clients.ethereum.__version__"} +[tool.setuptools_scm] +version_file = "src/ledger_app_clients/ethereum/__version__.py" +local_scheme = "no-local-version" +root = "../" +git_describe_command = "git describe --dirty --tags --long --match client-*[0-9]*" +fallback_version = "0.0.0" [project.urls] Home = "https://github.com/LedgerHQ/app-ethereum" diff --git a/client/src/ledger_app_clients/ethereum/__init__.py b/client/src/ledger_app_clients/ethereum/__init__.py index d3ec452c3..ce05207b0 100644 --- a/client/src/ledger_app_clients/ethereum/__init__.py +++ b/client/src/ledger_app_clients/ethereum/__init__.py @@ -1 +1,4 @@ -__version__ = "0.2.0" +try: + from ledger_app_clients.ethereum.__version__ import __version__ # noqa +except ImportError: + __version__ = "unknown version" # noqa From 0836e42ae1022a86f9f3b711e161dd35f7334ee4 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Tue, 9 Jan 2024 09:30:06 +0100 Subject: [PATCH 131/160] v0.2.1 --- client/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index 278db6895..5aae46a34 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.1] - 2023-12-01 + +### Fixed + +- v0.2.0 version already published on pypi.org + ## [0.2.0] - 2023-12-01 ### Added From 08077ff252eadd47e7561185a5cd1ce4d89557f7 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Tue, 9 Jan 2024 11:39:45 +0100 Subject: [PATCH 132/160] [ci][fix] Falling back to explicit package build, test & publish rather than using the reusable workflow --- .github/workflows/python-client.yml | 53 ++++++++++++++++++++++------- client/pyproject.toml | 3 ++ 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 3b16e18d6..248c80405 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -24,9 +24,9 @@ jobs: steps: - name: Clone uses: actions/checkout@v3 - - run: pip install flake8 + - run: pip install flake8 flake8-pyproject - name: Flake8 lint Python code - run: (cd client && find src/ -type f -name '*.py' -exec flake8 --max-line-length=120 '{}' '+') + run: (cd client && flake8 src/) mypy: name: Type checking @@ -38,14 +38,43 @@ jobs: - name: Mypy type checking run: (cd client && mypy src/) - packaging: + package_and_deploy: + name: Build and deploy Ethereum Client Python package + runs-on: ubuntu-latest needs: [lint, mypy] - name: Build, test and deploy the Python package - uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_pypi_deployment.yml@v1 - with: - package_directory: "client/" - stable_deployment: true - check_changelog_version: ${{ startsWith(github.ref,'refs/tags/') }} - publish: ${{ github.event_name == 'push' }} - secrets: - pypi_token: secrets.PYPI_PUBLIC_API_TOKEN + steps: + + - name: Clone + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Build Python package + run: | + pip install --upgrade pip build twine + cd client/ + python -m build; + python -m twine check dist/* + pip install .; + echo "TAG_VERSION=$(python -c 'from ledger_app_clients.ethereum import __version__; print(__version__)')" >> "$GITHUB_ENV" + + - name: Check version against CHANGELOG + if: startsWith(github.ref, 'refs/tags/') + run: | + CHANGELOG_VERSION=$(grep -Po '(?<=## \[)(\d+\.)+[^\]]' client/CHANGELOG.md | head -n 1) + if [ "${{ env.TAG_VERSION }}" == "${CHANGELOG_VERSION}" ]; + then + echo 'Package and CHANGELOG versions match!'; + exit 0; + else + echo "Tag '${{ env.TAG_VERSION }}' and CHANGELOG '${CHANGELOG_VERSION}' versions mismatch!"; + exit 1; + fi + + - name: Publish Python package on pypi.org + if: success() && github.event_name == 'push' + run: (cd client && python -m twine upload --verbose dist/*) + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PUBLIC_API_TOKEN }} + TWINE_NON_INTERACTIVE: 1 diff --git a/client/pyproject.toml b/client/pyproject.toml index 660206bc3..3a91961d1 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -46,3 +46,6 @@ Home = "https://github.com/LedgerHQ/app-ethereum" [tool.mypy] ignore_missing_imports = true + +[tool.flake8] +max-line-length = 120 \ No newline at end of file From c84794b2571e5b168b240a04a1b12753402ec1d4 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 8 Feb 2024 15:07:49 +0100 Subject: [PATCH 133/160] get_displayable_ticker function now takes a given chain_config_t struct --- src/eth_plugin_handler.c | 4 +++- src/network.c | 4 ++-- src/network.h | 3 ++- src_features/signTx/logic_signTx.c | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/eth_plugin_handler.c b/src/eth_plugin_handler.c index f7611bbc5..c768c7e43 100644 --- a/src/eth_plugin_handler.c +++ b/src/eth_plugin_handler.c @@ -67,7 +67,9 @@ void eth_plugin_prepare_query_contract_UI(ethQueryContractUI_t *queryContractUI, queryContractUI->screenIndex = screenIndex; chain_id = get_tx_chain_id(); - strlcpy(queryContractUI->network_ticker, get_displayable_ticker(&chain_id), MAX_TICKER_LEN); + strlcpy(queryContractUI->network_ticker, + get_displayable_ticker(&chain_id, chainConfig), + sizeof(queryContractUI->network_ticker)); queryContractUI->title = title; queryContractUI->titleLength = titleLength; queryContractUI->msg = msg; diff --git a/src/network.c b/src/network.c index 4107abaa5..74c5feefe 100644 --- a/src/network.c +++ b/src/network.c @@ -136,11 +136,11 @@ uint64_t get_tx_chain_id(void) { return chain_id; } -const char *get_displayable_ticker(const uint64_t *chain_id) { +const char *get_displayable_ticker(const uint64_t *chain_id, const chain_config_t *chain_cfg) { const char *ticker = get_network_ticker_from_chain_id(chain_id); if (ticker == NULL) { - ticker = chainConfig->coinName; + ticker = chain_cfg->coinName; } return ticker; } diff --git a/src/network.h b/src/network.h index ccde23701..ee96347b5 100644 --- a/src/network.h +++ b/src/network.h @@ -2,6 +2,7 @@ #include #include +#include "chainConfig.h" #define UNSUPPORTED_CHAIN_ID_MSG(id) \ do { \ @@ -16,4 +17,4 @@ bool app_compatible_with_chain_id(const uint64_t *chain_id); uint64_t get_tx_chain_id(void); -const char *get_displayable_ticker(const uint64_t *chain_id); +const char *get_displayable_ticker(const uint64_t *chain_id, const chain_config_t *chain_cfg); diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index de62f6cb7..b40bfb9c4 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -200,7 +200,7 @@ static void address_to_string(uint8_t *in, static void raw_fee_to_string(uint256_t *rawFee, char *displayBuffer, uint32_t displayBufferSize) { uint64_t chain_id = get_tx_chain_id(); - const char *feeTicker = get_displayable_ticker(&chain_id); + const char *feeTicker = get_displayable_ticker(&chain_id, chainConfig); uint8_t tickerOffset = 0; uint32_t i; @@ -323,7 +323,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool char displayBuffer[50]; uint8_t decimals = WEI_TO_ETHER; uint64_t chain_id = get_tx_chain_id(); - const char *ticker = get_displayable_ticker(&chain_id); + const char *ticker = get_displayable_ticker(&chain_id, chainConfig); ethPluginFinalize_t pluginFinalize; *use_standard_UI = true; From 62d8b327d68b4706a4e866d0e73e1e5cfb04ce99 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 8 Feb 2024 15:10:59 +0100 Subject: [PATCH 134/160] Can now read a chain ID from the swap sub coin config --- src/handle_get_printable_amount.c | 28 ++++++++++++++-------------- src/handle_swap_sign_transaction.c | 10 +++++++--- src/swap_utils.c | 24 ++++++++++++++++++++---- src/swap_utils.h | 6 +++++- 4 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index a2e333800..a321b4f1c 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -7,32 +7,32 @@ #include "common_utils.h" #include "uint256.h" #include "string.h" +#include "network.h" void handle_get_printable_amount(get_printable_amount_parameters_t* params, chain_config_t* config) { - uint8_t decimals; char ticker[MAX_TICKER_LEN]; + uint8_t decimals; + uint64_t chain_id = 0; + memset(params->printable_amount, 0, sizeof(params->printable_amount)); if (params->amount_length > 32) { PRINTF("Amount is too big, 32 bytes max but buffer has %u bytes", params->amount_length); return; } - // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap + if (!parse_swap_config(params->coin_configuration, + params->coin_configuration_length, + ticker, + &decimals, + &chain_id)) { + PRINTF("Error while parsing config\n"); + return; + } + // If the amount is a fee, the ticker should be the chain's native currency if (params->is_fee) { - uint8_t ticker_len = strnlen(config->coinName, sizeof(config->coinName)); - memcpy(ticker, config->coinName, ticker_len); - ticker[ticker_len] = '\0'; + strlcpy(ticker, get_displayable_ticker(&chain_id, config), sizeof(ticker)); decimals = WEI_TO_ETHER; - } else { - // If the amount is *not* a fee, decimals and ticker are built from the given config - if (!parse_swap_config(params->coin_configuration, - params->coin_configuration_length, - ticker, - &decimals)) { - PRINTF("Error while parsing config\n"); - return; - } } if (!amountToString(params->amount, diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 3b8be8342..f0ca62178 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -5,6 +5,7 @@ #include "handle_swap_sign_transaction.h" #include "shared_context.h" #include "common_utils.h" +#include "network.h" #ifdef HAVE_NBGL #include "nbgl_use_case.h" #endif // HAVE_NBGL @@ -27,12 +28,15 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti return false; } - uint8_t decimals; char ticker[MAX_TICKER_LEN]; + uint8_t decimals; + uint64_t chain_id = 0; + if (!parse_swap_config(sign_transaction_params->coin_configuration, sign_transaction_params->coin_configuration_length, ticker, - &decimals)) { + &decimals, + &chain_id)) { PRINTF("Error while parsing config\n"); return false; } @@ -46,7 +50,7 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti } // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap - strlcpy(ticker, config->coinName, MAX_TICKER_LEN); + strlcpy(ticker, get_displayable_ticker(&chain_id, config), sizeof(ticker)); decimals = WEI_TO_ETHER; if (!amountToString(sign_transaction_params->fee_amount, sign_transaction_params->fee_amount_length, diff --git a/src/swap_utils.c b/src/swap_utils.c index 2fa4a5a56..8a5db8691 100644 --- a/src/swap_utils.c +++ b/src/swap_utils.c @@ -22,22 +22,38 @@ #include "asset_info.h" #include "swap_utils.h" -bool parse_swap_config(const uint8_t *config, uint8_t config_len, char *ticker, uint8_t *decimals) { +bool parse_swap_config(const uint8_t *config, + uint8_t config_len, + char *ticker, + uint8_t *decimals, + uint64_t *chain_id) { uint8_t ticker_len, offset = 0; + if (config_len == 0) { return false; } - ticker_len = config[offset++]; - if (ticker_len == 0 || ticker_len > MAX_TICKER_LEN - 2 || config_len - offset < ticker_len) { + ticker_len = config[offset]; + offset += sizeof(ticker_len); + if ((ticker_len == 0) || (ticker_len > (MAX_TICKER_LEN - 2)) || + ((config_len - offset) < (ticker_len))) { return false; } memcpy(ticker, config + offset, ticker_len); offset += ticker_len; ticker[ticker_len] = '\0'; - if (config_len - offset < 1) { + if ((config_len - offset) < 1) { return false; } *decimals = config[offset]; + offset += sizeof(*decimals); + + // the chain ID was adder later to the CAL swap subconfig + // so it is optional for retro-compatibility (as it might not be present) + if ((config_len - offset) >= sizeof(*chain_id)) { + PRINTF("Chain ID from the swap subconfig = 0x%.*h\n", sizeof(*chain_id), &config[offset]); + *chain_id = u64_from_BE(config + offset, sizeof(*chain_id)); + offset += sizeof(*chain_id); + } return true; } diff --git a/src/swap_utils.h b/src/swap_utils.h index 00af3d342..76ca90e56 100644 --- a/src/swap_utils.h +++ b/src/swap_utils.h @@ -19,4 +19,8 @@ #include -bool parse_swap_config(const uint8_t* config, uint8_t config_len, char* ticker, uint8_t* decimals); +bool parse_swap_config(const uint8_t* config, + uint8_t config_len, + char* ticker, + uint8_t* decimals, + uint64_t* chain_id); From 729214f239ae3b6d5cd9fec17f7a4c886863ee92 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 12 Feb 2024 14:31:04 +0100 Subject: [PATCH 135/160] get_displayable_ticker now returns a ??? ticker when it is unknown --- src/network.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/network.c b/src/network.c index 74c5feefe..24349c3df 100644 --- a/src/network.c +++ b/src/network.c @@ -11,6 +11,8 @@ typedef struct network_info_s { uint64_t chain_id; } network_info_t; +static const char *unknown_ticker = "???"; + // Mappping of chain ids to networks. static const network_info_t NETWORK_MAPPING[] = { {.chain_id = 1, .name = "Ethereum", .ticker = "ETH"}, @@ -140,7 +142,11 @@ const char *get_displayable_ticker(const uint64_t *chain_id, const chain_config_ const char *ticker = get_network_ticker_from_chain_id(chain_id); if (ticker == NULL) { - ticker = chain_cfg->coinName; + if (*chain_id == chain_cfg->chainId) { + ticker = chain_cfg->coinName; + } else { + ticker = unknown_ticker; + } } return ticker; } From 83d3b5b644b73f55dc5921b09fc0399c493e4d47 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 13 Feb 2024 14:25:51 +0100 Subject: [PATCH 136/160] Fix swap fees ticker fallback --- src/handle_get_printable_amount.c | 4 ++++ src/handle_swap_sign_transaction.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/handle_get_printable_amount.c b/src/handle_get_printable_amount.c index a321b4f1c..5a70e881c 100644 --- a/src/handle_get_printable_amount.c +++ b/src/handle_get_printable_amount.c @@ -31,6 +31,10 @@ void handle_get_printable_amount(get_printable_amount_parameters_t* params, } // If the amount is a fee, the ticker should be the chain's native currency if (params->is_fee) { + // fallback mechanism in the absence of chain ID in swap config + if (chain_id == 0) { + chain_id = config->chainId; + } strlcpy(ticker, get_displayable_ticker(&chain_id, config), sizeof(ticker)); decimals = WEI_TO_ETHER; } diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index f0ca62178..fc7167a56 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -49,6 +49,10 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti return false; } + // fallback mechanism in the absence of chain ID in swap config + if (chain_id == 0) { + chain_id = config->chainId; + } // If the amount is a fee, its value is nominated in ETH even if we're doing an ERC20 swap strlcpy(ticker, get_displayable_ticker(&chain_id, config), sizeof(ticker)); decimals = WEI_TO_ETHER; From 9ea5d428959ea179b1995ac2ab4c6cfa11508a26 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 12 Feb 2024 15:18:12 +0100 Subject: [PATCH 137/160] Update tests --- .../domain_name_unknown_chain/00001.png | Bin 368 -> 358 bytes .../domain_name_unknown_chain/00004.png | Bin 434 -> 420 bytes .../nanox/domain_name_unknown_chain/00001.png | Bin 368 -> 358 bytes .../nanox/domain_name_unknown_chain/00004.png | Bin 434 -> 420 bytes .../stax/domain_name_unknown_chain/00001.png | Bin 15439 -> 15552 bytes .../dai_coin_type_on_network_5234/00000.png | Bin 374 -> 0 bytes .../dai_coin_type_on_network_5234/00001.png | Bin 330 -> 0 bytes .../dai_coin_type_on_network_5234/00002.png | Bin 451 -> 0 bytes .../dai_coin_type_on_network_5234/00003.png | Bin 320 -> 0 bytes .../dai_coin_type_on_network_5234/00004.png | Bin 497 -> 0 bytes .../dai_coin_type_on_network_5234/00005.png | Bin 504 -> 0 bytes .../dai_coin_type_on_network_5234/00006.png | Bin 373 -> 0 bytes .../dai_coin_type_on_network_5234/00007.png | Bin 340 -> 0 bytes .../dai_coin_type_on_network_5234/00008.png | Bin 367 -> 0 bytes .../dai_coin_type_on_network_5234/00009.png | Bin 414 -> 0 bytes .../dai_coin_type_on_network_5234/00000.png | Bin 414 -> 0 bytes .../dai_coin_type_on_network_5234/00001.png | Bin 566 -> 0 bytes .../dai_coin_type_on_network_5234/00002.png | Bin 773 -> 0 bytes .../dai_coin_type_on_network_5234/00003.png | Bin 385 -> 0 bytes .../dai_coin_type_on_network_5234/00004.png | Bin 434 -> 0 bytes .../dai_coin_type_on_network_5234/00005.png | Bin 472 -> 0 bytes tests/speculos/test_sign_cmd.py | 84 ------------------ .../nanos_starkware_usdt_deposit/00012.png | Bin 357 -> 359 bytes .../nanos_starkware_usdt_deposit/00015.png | Bin 9 -> 414 bytes .../00001.png | Bin 330 -> 306 bytes .../00008.png | Bin 367 -> 360 bytes .../00011.png | Bin 9 -> 414 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 330 -> 0 bytes .../00002.png | Bin 451 -> 0 bytes .../00003.png | Bin 320 -> 0 bytes .../00004.png | Bin 497 -> 0 bytes .../00005.png | Bin 504 -> 0 bytes .../00006.png | Bin 373 -> 0 bytes .../00007.png | Bin 338 -> 0 bytes .../00008.png | Bin 367 -> 0 bytes .../00009.png | Bin 414 -> 0 bytes .../00010.png | Bin 340 -> 0 bytes .../00011.png | 1 - .../00012.png | Bin 349 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 566 -> 0 bytes .../00002.png | Bin 773 -> 0 bytes .../00003.png | Bin 390 -> 0 bytes .../00004.png | Bin 436 -> 0 bytes .../00005.png | Bin 472 -> 0 bytes .../00006.png | Bin 365 -> 0 bytes .../00007.png | 1 - .../00008.png | Bin 382 -> 0 bytes tests/zemu/src/send.test.js | 22 ----- 50 files changed, 108 deletions(-) delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00000.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00001.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00002.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00003.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00004.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00005.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00006.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00007.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00008.png delete mode 100644 tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00009.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00000.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00001.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00002.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00003.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00004.png delete mode 100644 tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00005.png mode change 120000 => 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00015.png mode change 120000 => 100644 tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00000.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00001.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00002.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00003.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00004.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00005.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00006.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00007.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00008.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00009.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00010.png delete mode 120000 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00011.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00012.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00000.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00001.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00002.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00003.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00004.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00005.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00006.png delete mode 120000 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00007.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00008.png diff --git a/tests/ragger/snapshots/nanosp/domain_name_unknown_chain/00001.png b/tests/ragger/snapshots/nanosp/domain_name_unknown_chain/00001.png index f9840e3ab2d8d3d0aa480d1bd85c972c3b916b9e..23d61ed8947ad7b4d2eb1dce9684c32aba4e40be 100644 GIT binary patch delta 331 zcmV-R0kr<`0_FmcB!4YQL_t(|obB0L62c%1K+)*96ZXHP?8Og8WO#L;wMp$gUz9>+ z0;Gx}0002MZKUEC{|*A8Dp0hie~BV=11h+Q#piS8-4LG0nt<}>WDkZCw~jPq@e3Ya3|v(kf-K4 zx%bq2#XOTNbCH7bq&(H7`4+8T7=!M&-FW~20Ja|11NbV=cE*==$6mb*kB`tWI34O; zj=#=(KDu!6Lu?P$^1-H-|7LyfuAd#?%UbkjZ@G&89*b?Cd000000000000000 d0001f<_*+m?g6ON-dO+u002ovPDHLkV1l)uo`C=W delta 341 zcmV-b0jmDy0`LNmB!4$aL_t(|obB0BvV$NDKvCN1PT2pFvX_1^Whexy7ERQ9zIZCi z1c@{+1ONa4;I>3WM65?);AuU85JJeIKWq;C%=gQB09_&yV@zSnjnvK;s7K0P)qSd4 zm6utuUjfydSpJz}S2n84^4Xt{D7)u&jL|mw!NUY3t76ec+uj-Are9@j;D9?Ujy<_w^2I7%qN@O>xq9*+ngAVL~u}Td!$W3K}0*PkETp>!hGD^*;(8 zveqpoz-{zHJ5B*6t5QCu-*)hbogTV;Nb65yhHj9F{$Z3*6a9lR2bRb}miP`^BD??q n0000000000000000KjhE$0O=}#(<_%00000NkvXXu0mjfy|0?W diff --git a/tests/ragger/snapshots/nanosp/domain_name_unknown_chain/00004.png b/tests/ragger/snapshots/nanosp/domain_name_unknown_chain/00004.png index 1bcb78761fd15fd94377813eb932cf0245af596a..c2a8d9070217b86acf192795163728ca4e81aad5 100644 GIT binary patch delta 394 zcmV;50d@Ye1Ed3xB!6p3L_t(|obB0Bl7k=&fZ=p!Z^HeLl)LPMBSQ%wb|rDw|9etw zgAEduiU0rr0PbG?U8?G~ky7fld>r$aar}KppTL#=P~Nl10Z`SHQg!jl`{lglw45UI z)5XRa2cL;~xi9DbW~80$*|B+PW=d6aHuD$DIL*eg(*?igz<(V}kew5&c#pc$FZ(8E~KMANI8^4N-!Yu-OlsdEz+$b`f~6yGU%V zr>vWIr=EYx_U4}|_Rvg=76xZx<6Pw+tWVW@xNefkzMDp>$-XnjAQDw568GUqq!$1H o00000000000000009fV+qQFNgYXzR200000NkvXXt^-0~g8q}fDgXcg delta 408 zcmV;J0cZZC1F{2F1DKvCMsPT2pF*h@b=W(ZFuMUoTW^X0)U z5P@Z^5C8xG0CPX~L#C9Dix}gmPPWA(+<9tS61s_m_1%cLUPPW6M&rla%w{Fpx} z&q;1cE+k_ue}BamS1iWeiu#wZ@IhAHWpZsY49Y1;eF22C?^eyUElY3RSJYnjO+jr~ z?MtEIwhQ1A>#jNlZJ*he!(1-em#4+ z0;Gx}0002MZKUEC{|*A8Dp0hie~BV=11h+Q#piS8-4LG0nt<}>WDkZCw~jPq@e3Ya3|v(kf-K4 zx%bq2#XOTNbCH7bq&(H7`4+8T7=!M&-FW~20Ja|11NbV=cE*==$6mb*kB`tWI34O; zj=#=(KDu!6Lu?P$^1-H-|7LyfuAd#?%UbkjZ@G&89*b?Cd000000000000000 d0001f<_*+m?g6ON-dO+u002ovPDHLkV1l)uo`C=W delta 341 zcmV-b0jmDy0`LNmB!4$aL_t(|obB0BvV$NDKvCN1PT2pFvX_1^Whexy7ERQ9zIZCi z1c@{+1ONa4;I>3WM65?);AuU85JJeIKWq;C%=gQB09_&yV@zSnjnvK;s7K0P)qSd4 zm6utuUjfydSpJz}S2n84^4Xt{D7)u&jL|mw!NUY3t76ec+uj-Are9@j;D9?Ujy<_w^2I7%qN@O>xq9*+ngAVL~u}Td!$W3K}0*PkETp>!hGD^*;(8 zveqpoz-{zHJ5B*6t5QCu-*)hbogTV;Nb65yhHj9F{$Z3*6a9lR2bRb}miP`^BD??q n0000000000000000KjhE$0O=}#(<_%00000NkvXXu0mjfy|0?W diff --git a/tests/ragger/snapshots/nanox/domain_name_unknown_chain/00004.png b/tests/ragger/snapshots/nanox/domain_name_unknown_chain/00004.png index 1bcb78761fd15fd94377813eb932cf0245af596a..c2a8d9070217b86acf192795163728ca4e81aad5 100644 GIT binary patch delta 394 zcmV;50d@Ye1Ed3xB!6p3L_t(|obB0Bl7k=&fZ=p!Z^HeLl)LPMBSQ%wb|rDw|9etw zgAEduiU0rr0PbG?U8?G~ky7fld>r$aar}KppTL#=P~Nl10Z`SHQg!jl`{lglw45UI z)5XRa2cL;~xi9DbW~80$*|B+PW=d6aHuD$DIL*eg(*?igz<(V}kew5&c#pc$FZ(8E~KMANI8^4N-!Yu-OlsdEz+$b`f~6yGU%V zr>vWIr=EYx_U4}|_Rvg=76xZx<6Pw+tWVW@xNefkzMDp>$-XnjAQDw568GUqq!$1H o00000000000000009fV+qQFNgYXzR200000NkvXXt^-0~g8q}fDgXcg delta 408 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 literal 15439 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

}X2neX@ZV>P=A4Cf`Fw45Uwy1Dl4Bkub_OqyN{7 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 diff --git a/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00000.png b/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00001.png b/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00001.png deleted file mode 100644 index 7ebda4f3adad095152f16d397131c7f7471ca83a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!^#P)A70&~wwBNIbjXovs+0D!jan;`@CO|a*boR8Sz=?Q!5 z`MR7?G$t31oVNRTHr1Xb-j(y8Tj%+LSdv~dJ#_VNSRW$_7bi_R@mfr}KZS)7y+O4s zf=4^mFG9A)nQn@>wus32o~CwbK{owvgDwF`J3DyOH~?vNGl__JEYmOXV~4QvUMANM z{~oNGq}BVn*CAiDt?GR;697%&!rr%r;A(ikGl;=R(1k{Fb+Qv48=RKpW(Q4vTPFO2|!`%tQ%d711)GU2*6{RR6IsdoDLerDbbIUQ1X*Y%zfRtSZt>P- zR98rsaf8&R8zXtO=g^AAERP(cMKnjd?1}>p;3>0IyR?D~ugNsmDGznoTD7$}r4_{2 zf|6d9<^~nci1SyUvvF7C)=ZWC?OI?k<@mfUoTErknu&c9Ry7xGjex`6HWfd0!Hl z^ryc0TbOl{{{39n4oD-~tfL>?B%l^>;?eg;7;22ZG31~ptU^5vzYmKAOR>P|&=8&c zRkP+Z0{vPLRCOvxpM+|&3x-8wkj(bsa5z?94OPY79XPJ?{W4%<000007{d!Z1i*;c Sb~u#)00004qvBJ+KYLdy}Tg`YuKtuykk|arz%w^wVUCQ{*)%Q&hezY82 z&EPjs%u{+jjhzZ0P0)S}S3}}^_5u*6-%HD~hW~O<`^({RC;mRsXvVVGsLbLCYVslY znkt=$Xy1P0ZdnHyV>&3hL{aZxS;y$<=8_aN(4HoTl+081n3zwW&HNKUe_=JxDNW2? z8^WDTJ^}oIA1$JfOvlv&{FiW9)Krg8zu_=_PV59YZPajY7y@7EeR|RcXfogG{Rbkr zI=z1}xd(TWS?EswJ9!bh>qi)=^^@lHEeavxQeL>DmtOn%izGf z)>9EwYA?~UOmr3+sTY$ywwM(sBv3DT0U}?*Q;W3z?;U6Ce+b=Q!e#}y9(KY({7{Fy z@6Uc7{ppkmDv=E+m4KoIx2maqHY1(h90*GEp+hWQ2E^`5(Qy4Hn^FsM+UD`Tc&G8r zM(s|{#Q~os8g5CBY(QW>Uhk|arzBuM~2k=$~ha82FQ00000NkvXXu0mjfvN__l diff --git a/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00005.png b/tests/speculos/screenshots/sign/nanos/dai_coin_type_on_network_5234/00005.png deleted file mode 100644 index fd3155c0d349a1236eb862c8f4f5fc3c3a981ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVL$5ClOG1itKBTNjbPGWxz9A5}p1 zjy2;k()38LrSYNxr54ibzW~490~9g(J+&-r^Vi@&?f~_Sago#$5lH3 z?AsBK%Q|2(RR>vyNG4^^0G4%(on~%1f(FhfJ6qDplhzo*r_z|24k-T}fWNTvn|2nn zB!nmPK7hqny_|4r$y}Ctv&KwA-%GeOC|9o9@6Jmy-*37nHQXB&g|GBJW?BHI^R3>W z5XIHu{hNt3c#=4Up5)ufA`Mj&M<7qvxQv<(s(Pdtv0I9%c_i0XGJ~hWXU_KwGUbvJ z+VWabxs@`OvSN3kQB`gi5Td< zCNdD0-g7XjD`DKo>IK-ssAV(6ZeuYnD{V^0ojtC0sWO?x-863hBI?UV_L4%&S(1iJ zdo|QGQ!>Uiv|U2pq8^4-y>Fv^0jj67HeW#4-vz`W+n0t`>yiJ)(l8{0 uN`KP)C0a|2oddYDBwFnQ@V4&YmO|a5C2Z9{!HHY}>h}gC3s^}|C`SlNBi2Mc6JQiNjM{?U}L#4V(|#TjI_WV@yI*-`KAJ`lgkgC@g2^rf?_0 z*1b%|Xkn7YR%T=#+74maX^C@n{N_9-cPeO})NnO24*ybp@)UrS&wo|lA&S&ce=>-{ zO0Wy9|6da#`0_VQA*0F%%cw3@j`N2qA<T=hyYZAARn_=u`ZbA zTb_K9XKx2g?$aprH$flJL;&h5fngjJ{7%hNue%Mh2#7^V%7IX0Yh7$O3NlV&vea)zL29Yr81+F@l939ahr7y#^E) m0B3&5nT84>gb+dq0Kf|$;kv3jg!mc&0000S;`r9!}Z(cNJS1~P!*jxMpR{sE^Ji<_{4 zed*0qQ4qS&;+ZHCjTOnZfM`Cq*|S3OQGx>sx>g*RZT2Rn}|-e zuOL%jc}ppk*!k1ga(Ebb%FtZ2n&~FAoLHd)#BAJ-QUMTj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00000.png b/tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*rzd`AnA zQc8#FU$enH_Wp?$ph?bo+qPXz$HV@7RH(j@t%`n%u4J_+;#WZNO_U#Z-N}cd+ELma zLN-61w{45newx7mJEwG^H9ms> zM7zkAYV3`(H_02ngj-($ov(j0eShy*!)FhVB;!1nUi}h}t>r7Ny3X^)lb=Tn(7I7O z+*RuNB|V%zIP=68TJno?={Af>M;HG0)bv^=v3u~}d+bt;8me>g%qzwK_nzFwp8dAw z;*`o|fZ{I?viE9{mTVYLXsBO~N#z{titqpc006MF#@$fK?ZF}p;>l3X5BGwCS>|e@ z#FK4>$64_*`oH3Asu^y^IDlM;e-(x%HU^FXSM?&?tHk}ux;C`ecLu=gSX6Lat5e?s%%i9aT`@9hm9L(b**iA zo+UCs1q)pJV?DGHk7o2q=I;S=!=}15NH6Gf_nw&(aE!ct6uh44))-l*iOrhN9})SQ zc<=m~;O>*rb{ehd^*3Qc2qA=!&m=2Dy9dRnm{YZUTkl6L_I7!t7#$a?w@!-PZtZIw zi|!tcA_EaAlM_EKrHx$`Sz2AF>#*yI`$O)V9RhO3E}VpK)s6Ah0j~Xb;j9=JC8KLL z5Fne>rRd{NKg55z;n-Z5042MNH>zVKFJom1M)N`tDFW=oUe)>^4ZN#)TrWq1V?(0v z?rCLV2W4%#{zn71op;v9+*cDHLKtL5|1q3UGx`t1IhYBbLNngb+dqA%FY=&*w%zyr@4#00000NkvXXu0mjf D0V!mH diff --git a/tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00003.png b/tests/speculos/screenshots/sign/nanox/dai_coin_type_on_network_5234/00003.png deleted file mode 100644 index 7037eb59e468baa2ac96cee2d9ba916d1145f8ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#V%}i|p0>pN zTfRH~Ppp~#*TGqYr%+pT_s!pbyaH~y$R7#N0%?=^E?Sx#x|V(El(MLPf4c)Gt!M2^ z&VRpr)!Os#o~Zv~bP0W)cq2X5D|5N?ZX3QQKO=S-#^syv|G5#a_*nXaP-ft^l2h`P zZ+Hs79Qh--`RRrSd^b{_th9VKd!zr(ulN5*C_eJO;PvB6gyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*86P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000OGkSG)#qC z3JOF3007>KTlw%~Cn9p2W~p)&Xz;Lz@9GZp<36IFF&u#Nr1s(-dt4~=5E@4o-r!yM z@dp*6YSb)Q;B89&rTCf7O)|jaHf@tgW=z&+VKNQFKmZh3C4U_yKed*s1#JwURS#~# zD-{CPi|!6L)n2SlomS>`PB3BQMmSfG9H5pGHDzs6QFRU?o_ERx*4a zKKB2wq*~R7$j<%Dw6rmGit{m)bVV9!WakG*Rfj(p3;i(mB`lo^aJ!*Tr%MbAKqQ%7 zRg8-L5sV2ygGKsp#mo{E)^zETK)NlsIb#mv^z}M9{iPH^>a@`I{*!HxyDVnLu~{4XxBV$olq z0f+zq0KApOvhjT*B3jm*rN~vJ!h;cC>knwhJffd*9DsAD4&v@xT2Ok3l@klE@Gipt zM-`IWq}pYH*U`L{@iUxBMnGU$b4lWI#N7H+4yJB62tY6@KUW~sfD9-89X@PWXFem;tj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq literal 0 HcmV?d00001 diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00001.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00001.png index 7ebda4f3adad095152f16d397131c7f7471ca83a..73ac9f618fe95bc4a1557b64fd02a981f1a28d93 100644 GIT binary patch delta 280 zcmV+z0q6e80-BYyz-NklH*qvh>5?xxI2A-LJOezIn3ndz=5&wmyXrQCC=T}qHo-F?s{ z0Ci;tFN_0FpKfLm5wB(16F+tdEAukDe);zxYLfoEuVV%I;4P~9^D*Wbcl0#cc4GljB}Lj--19uqNM+r#8Mw62!O$eRe}Hj e00024$pa9cwh^Sm{2kK(0000A70&~wwBNIbj zXovs+0D!jan;`@CO|a*boR8Sz=?Q!5`MR7?G$t31oVNRTHr1Xb-j(y8Tj%+LSdv~d zJ#_VNSRW$_7bi_R@mfr}KZS)7y+O4sf=4^mFG9A)nQn@>wttAo`JSeBX+bvqZi6lX zNIN@t(>MTWbu)>Gcr4Q|@neUu@?Iv_5C0ylnxxhHy4N9Jw5{rWG7|tz;lkdxhTv*= zzcYxzNYI5wa&@v39vhsN#Q4Hj41;xXfO!CVCHE-g=YW&00000n1KVNudw3&@9{4H0000i!rK#;YhV}Hp{ucd248^gzH;4^ro z!h+q!?GAgGAOZxg=n~87KX7iD@erQiTzWGVd7-`nMUkPt8X2jfzA{(?ORx)B@-H&0 zh7QU~8c$GmH|8}6MiGQnQ#(-a#IsN z6H-c#6(e9C^+u~>ji@*kSZ@pB>aS7_&6a{o%|X~-LJaA;|HStAr{tMCkuAO{_>B7i f00000fMNUqkXhLIWikY%00000NkvXXu0mjfd&`?` delta 340 zcmV-a0jvJ#0`CHlB!4zZL_t(|ob8!G5`!QNMX^)we_$7O!3;wQgrGp8{I}ASM*J~g zqH_QM09Iwwy!d%I=iIh)mL^w$3m%mCYEPga&k;SwZ~)?m+KYQ0>4DHg7@Sz>fVJ@V zA5=(AlVRBdI!5v@#?N#fk^!D==QfFK##DU@lW7H>x(tok!r`6K5ppD_9b>S;` zr9!}Z(cNJS1~P!*jxMpR{sE^Ji<_{4ed*0qQ4qS&;+ZHCjTOn zZfM`Cq*|S3OQGx>sx>g*RZT2Rn}|-euOL%jc}ppk*!k1gaH7 diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png deleted file mode 120000 index 489390ada..000000000 --- a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png +++ /dev/null @@ -1 +0,0 @@ -00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9156c31edf73cb072eaebf2db3fbe1ba5c612b GIT binary patch literal 414 zcmV;P0b%}$P)j~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq literal 0 HcmV?d00001 diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00000.png b/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00001.png b/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00001.png deleted file mode 100644 index 7ebda4f3adad095152f16d397131c7f7471ca83a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!^#P)A70&~wwBNIbjXovs+0D!jan;`@CO|a*boR8Sz=?Q!5 z`MR7?G$t31oVNRTHr1Xb-j(y8Tj%+LSdv~dJ#_VNSRW$_7bi_R@mfr}KZS)7y+O4s zf=4^mFG9A)nQn@>wus32o~CwbK{owvgDwF`J3DyOH~?vNGl__JEYmOXV~4QvUMANM z{~oNGq}BVn*CAiDt?GR;697%&!rr%r;A(ikGl;=R(1k{Fb+Qv48=RKpW(Q4vTPFO2|!`%tQ%d711)GU2*6{RR6IsdoDLerDbbIUQ1X*Y%zfRtSZt>P- zR98rsaf8&R8zXtO=g^AAERP(cMKnjd?1}>p;3>0IyR?D~ugNsmDGznoTD7$}r4_{2 zf|6d9<^~nci1SyUvvF7C)=ZWC?OI?k<@mfUoTErknu&c9Ry7xGjex`6HWfd0!Hl z^ryc0TbOl{{{39n4oD-~tfL>?B%l^>;?eg;7;22ZG31~ptU^5vzYmKAOR>P|&=8&c zRkP+Z0{vPLRCOvxpM+|&3x-8wkj(bsa5z?94OPY79XPJ?{W4%<000007{d!Z1i*;c Sb~u#)00004qvBJ+KYLdy}Tg`YuKtuykk|arz%w^wVUCQ{*)%Q&hezY82 z&EPjs%u{+jjhzZ0P0)S}S3}}^_5u*6-%HD~hW~O<`^({RC;mRsXvVVGsLbLCYVslY znkt=$Xy1P0ZdnHyV>&3hL{aZxS;y$<=8_aN(4HoTl+081n3zwW&HNKUe_=JxDNW2? z8^WDTJ^}oIA1$JfOvlv&{FiW9)Krg8zu_=_PV59YZPajY7y@7EeR|RcXfogG{Rbkr zI=z1}xd(TWS?EswJ9!bh>qi)=^^@lHEeavxQeL>DmtOn%izGf z)>9EwYA?~UOmr3+sTY$ywwM(sBv3DT0U}?*Q;W3z?;U6Ce+b=Q!e#}y9(KY({7{Fy z@6Uc7{ppkmDv=E+m4KoIx2maqHY1(h90*GEp+hWQ2E^`5(Qy4Hn^FsM+UD`Tc&G8r zM(s|{#Q~os8g5CBY(QW>Uhk|arzBuM~2k=$~ha82FQ00000NkvXXu0mjfvN__l diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00005.png b/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00005.png deleted file mode 100644 index fd3155c0d349a1236eb862c8f4f5fc3c3a981ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVL$5ClOG1itKBTNjbPGWxz9A5}p1 zjy2;k()38LrSYNxr54ibzW~490~9g(J+&-r^Vi@&?f~_Sago#$5lH3 z?AsBK%Q|2(RR>vyNG4^^0G4%(on~%1f(FhfJ6qDplhzo*r_z|24k-T}fWNTvn|2nn zB!nmPK7hqny_|4r$y}Ctv&KwA-%GeOC|9o9@6Jmy-*37nHQXB&g|GBJW?BHI^R3>W z5XIHu{hNt3c#=4Up5)ufA`Mj&M<7qvxQv<(s(Pdtv0I9%c_i0XGJ~hWXU_KwGUbvJ z+VWabxs@`OvSN3kQB`gi5Td< zCNdD0-g7XjD`DKo>IK-ssAV(6ZeuYnD{V^0ojtC0sWO?x-863hBI?UV_L4%&S(1iJ zdo|QGQ!>Uiv|U2pq8^4-y>Fv^0jj67HeW#4-vz`W+n0t`>yiJ)(l8{0 uN`KP)C0a|2oddYDBwFnQ@V4&YmO|a5C2Z9{!HHY}>h}gC3s^}|C`SlNBi2Mc6JQiNjM{?U}L#4V(|#TjI_WV@yI*-`KAJ`lgkgC@g2^rf?_0 z*1b%|Xkn7YR%T=#+74maX^C@n{N_9-cPeO})NnO24*ybp@)UrS&wo|lA&S&ce=>-{ zO0Wy9UtP)3`A2${{Mq{z=t|m+w_71%?9_3TkV!v z<&rBOS;`r9!}Z(cNJS1~P!*jxMpR{sE^Ji<_{4 zed*0qQ4qS&;+ZHCjTOnZfM`Cq*|S3OQGx>sx>g*RZT2Rn}|-e zuOL%jc}ppk*!k1ga(Ebb%FtZ2n&~FAoLHd)#BAJ-QUMTj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00010.png b/tests/zemu/snapshots/nanos_transfer_ethereum_5234_network/00010.png deleted file mode 100644 index 9c7e7049cb3e9bcfb1601ec510ee465d38229d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00000.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*rzd`AnA zQc8#FU$enH_Wp?$ph?bo+qPXz$HV@7RH(j@t%`n%u4J_+;#WZNO_U#Z-N}cd+ELma zLN-61w{45newx7mJEwG^H9ms> zM7zkAYV3`(H_02ngj-($ov(j0eShy*!)FhVB;!1nUi}h}t>r7Ny3X^)lb=Tn(7I7O z+*RuNB|V%zIP=68TJno?={Af>M;HG0)bv^=v3u~}d+bt;8me>g%qzwK_nzFwp8dAw z;*`o|fZ{I?viE9{mTVYLXsBO~N#z{titqpc006MF#@$fK?ZF}p;>l3X5BGwCS>|e@ z#FK4>$64_*`oH3Asu^y^IDlM;e-(x%HU^FXSM?&?tHk}ux;C`ecLu=gSX6Lat5e?s%%i9aT`@9hm9L(b**iA zo+UCs1q)pJV?DGHk7o2q=I;S=!=}15NH6Gf_nw&(aE!ct6uh44))-l*iOrhN9})SQ zc<=m~;O>*rb{ehd^*3Qc2qA=!&m=2Dy9dRnm{YZUTkl6L_I7!t7#$a?w@!-PZtZIw zi|!tcA_EaAlM_EKrHx$`Sz2AF>#*yI`$O)V9RhO3E}VpK)s6Ah0j~Xb;j9=JC8KLL z5Fne>rRd{NKg55z;n-Z5042MNH>zVKFJom1M)N`tDFW=oUe)>^4ZN#)TrWq1V?(0v z?rCLV2W4%#{zn71op;v9+*cDHLKtL5|1q3UGx`t1IhYBbLNngb+dqA%FY=&*w%zyr@4#00000NkvXXu0mjf D0V!mH diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00003.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00003.png deleted file mode 100644 index 0423eb5fc993cf5149de06d6af3eaea5e6724f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh3gW8Yx~9*4m5 zE6gAMbN>{Z*4V{iab&8R#HIgXnpv|?l=(dF0_tM8{MTh}MCfNnua$ew95>cacqZw) zf8+A+!B;13R4&x-w|o>GAe@nYXZErX{ko6` zY38#v?HKn8P1(hLwfkSbK)Kstb7r7#)(e^OezlnW=S1P5%WF*Te^BKw*)H+N?7L6t zHi-r6ekgp?FI)MyG~My$j>A{pXR4ivcBz+s_N4NIT(Q@#Wq+eCq?SHkFr7EyuT0K? z;EU6@ADwl}Heuzv%shr?`+sga`JY|t<8 diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00004.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00004.png deleted file mode 100644 index 70c1b9a68f5fb1ee090966199cb58a891b0a5ad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2V;G|{+o`%F- zmuDCJS1z1hTaXeVq>#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00005.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00005.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000MjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00007.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00008.png b/tests/zemu/snapshots/nanox_transfer_ethereum_5234_network/00008.png deleted file mode 100644 index a58590b988714545e7960f7f400f360ffc5de41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~o { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 10; - else clicks = 6; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_ethereum_5234_network', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "07a7982dfd16360c96a03467877d0cf9c36f799deff4dace250cdb18e28a3b90", - "s": "773318a93da2e32c1cf308ddd6add1e8c0d285973e541520a05fb4dc720e4fb1", - "v": "2908", - }); - })); -}); From ea1709b0ea658e512643c791b4cd9aacb5281410 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 13 Feb 2024 10:40:01 +0100 Subject: [PATCH 138/160] Completely remove old Starkware internal "plugin" --- makefile_conf/chain/ethereum.mk | 4 - makefile_conf/chain/goerli.mk | 6 - makefile_conf/chain/ropsten.mk | 6 - src/apdu_constants.h | 51 - src/common_ui.h | 4 - src/eth_plugin_internal.c | 75 +- src/eth_plugin_internal.h | 7 - src/main.c | 56 -- src/poorstream.c | 43 - src/poorstream.h | 21 - src/shared_context.h | 56 -- src/starkDisplayUtils.c | 17 - src/starkDisplayUtils.h | 6 - src/stark_crypto.c | 91 -- src/stark_crypto.h | 21 - src/stark_utils.c | 245 ----- src/stark_utils.h | 35 - src/ui_callbacks.h | 3 - src_bagl/common_ui.c | 26 - src_bagl/ui_flow.h | 30 - src_bagl/ui_flow_stark_getPublicKey.c | 46 - src_bagl/ui_flow_stark_sign.c | 234 ----- src_bagl/ui_flow_stark_unsafe_sign.c | 70 -- .../cmd_getAppConfiguration.c | 4 - src_features/signTx/logic_signTx.c | 3 - .../cmd_stark_getPublicKey.c | 66 -- .../feature_stark_getPublicKey.h | 8 - .../logic_stark_getPublicKey.c | 14 - .../ui_common_stark_getPublicKey.c | 19 - .../cmd_stark_provideQuantum.c | 64 -- src_features/stark_sign/cmd_stark_sign.c | 259 ----- .../stark_sign/ui_common_stark_sign.c | 36 - .../stark_unsafe_sign/cmd_stark_unsafe_sign.c | 55 - .../ui_common_stark_unsafe_sign.c | 42 - src_nbgl/ui_get_stark_public_key.c | 29 - src_nbgl/ui_stark_limit_order.c | 68 -- src_nbgl/ui_stark_transfer.c | 134 --- src_nbgl/ui_stark_unsafe_sign.c | 70 -- src_plugins/erc20/erc20_plugin.c | 17 - src_plugins/starkware/starkware_plugin.c | 944 ------------------ 40 files changed, 1 insertion(+), 2984 deletions(-) delete mode 100644 src/poorstream.c delete mode 100644 src/poorstream.h delete mode 100644 src/starkDisplayUtils.c delete mode 100644 src/starkDisplayUtils.h delete mode 100644 src/stark_crypto.c delete mode 100644 src/stark_crypto.h delete mode 100644 src/stark_utils.c delete mode 100644 src/stark_utils.h delete mode 100644 src_bagl/ui_flow_stark_getPublicKey.c delete mode 100644 src_bagl/ui_flow_stark_sign.c delete mode 100644 src_bagl/ui_flow_stark_unsafe_sign.c delete mode 100644 src_features/stark_getPublicKey/cmd_stark_getPublicKey.c delete mode 100644 src_features/stark_getPublicKey/feature_stark_getPublicKey.h delete mode 100644 src_features/stark_getPublicKey/logic_stark_getPublicKey.c delete mode 100644 src_features/stark_getPublicKey/ui_common_stark_getPublicKey.c delete mode 100644 src_features/stark_provideQuantum/cmd_stark_provideQuantum.c delete mode 100644 src_features/stark_sign/cmd_stark_sign.c delete mode 100644 src_features/stark_sign/ui_common_stark_sign.c delete mode 100644 src_features/stark_unsafe_sign/cmd_stark_unsafe_sign.c delete mode 100644 src_features/stark_unsafe_sign/ui_common_stark_unsafe_sign.c delete mode 100644 src_nbgl/ui_get_stark_public_key.c delete mode 100644 src_nbgl/ui_stark_limit_order.c delete mode 100644 src_nbgl/ui_stark_transfer.c delete mode 100644 src_nbgl/ui_stark_unsafe_sign.c delete mode 100644 src_plugins/starkware/starkware_plugin.c diff --git a/makefile_conf/chain/ethereum.mk b/makefile_conf/chain/ethereum.mk index 16e4b8cae..993c9306d 100644 --- a/makefile_conf/chain/ethereum.mk +++ b/makefile_conf/chain/ethereum.mk @@ -2,10 +2,6 @@ APP_LOAD_PARAMS += --path "44'/60'" TICKER = "ETH" CHAIN_ID = 1 -# Starkware integration -APP_LOAD_PARAMS += --path "2645'/579218131'" -DEFINES += HAVE_STARKWARE -DEFINES += STARK_BIP32_PATH_0=0x80000A55 STARK_BIP32_PATH_1=0xA2862AD3 # Allow to derive ETH 2 public keys APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 diff --git a/makefile_conf/chain/goerli.mk b/makefile_conf/chain/goerli.mk index 1f8e37d53..c01e6c9b8 100644 --- a/makefile_conf/chain/goerli.mk +++ b/makefile_conf/chain/goerli.mk @@ -1,12 +1,6 @@ APP_LOAD_PARAMS += --path "44'/60'" TICKER = "ETH" CHAIN_ID = 5 -# Starkware integration -APP_LOAD_PARAMS += --path "2645'/579218131'" -DEFINES += HAVE_STARKWARE -# Keep for Starkware Goerli tests -DEFINES += HAVE_TOKENS_EXTRA_LIST -DEFINES += STARK_BIP32_PATH_0=0x80000A55 STARK_BIP32_PATH_1=0xA2862AD3 # Allow to derive ETH 2 public keys APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 diff --git a/makefile_conf/chain/ropsten.mk b/makefile_conf/chain/ropsten.mk index 793a31417..d709186f8 100644 --- a/makefile_conf/chain/ropsten.mk +++ b/makefile_conf/chain/ropsten.mk @@ -1,12 +1,6 @@ APP_LOAD_PARAMS += --path "44'/60'" TICKER = "ETH" CHAIN_ID = 3 -# Starkware integration -APP_LOAD_PARAMS += --path "2645'/579218131'" -DEFINES += HAVE_STARKWARE -# Keep for Starkware Ropsten tests -DEFINES += HAVE_TOKENS_EXTRA_LIST -DEFINES += STARK_BIP32_PATH_0=0x80000A55 STARK_BIP32_PATH_1=0xA2862AD3 # Allow to derive ETH 2 public keys APP_LOAD_PARAMS += --path "12381/3600" --curve bls12381g1 DEFINES += HAVE_ETH2 diff --git a/src/apdu_constants.h b/src/apdu_constants.h index 7911d6b5b..07e41a300 100644 --- a/src/apdu_constants.h +++ b/src/apdu_constants.h @@ -5,8 +5,6 @@ #define APP_FLAG_DATA_ALLOWED 0x01 #define APP_FLAG_EXTERNAL_TOKEN_NEEDED 0x02 -#define APP_FLAG_STARKWARE 0x04 -#define APP_FLAG_STARKWARE_V2 0x08 #define CLA 0xE0 #define INS_GET_PUBLIC_KEY 0x02 @@ -47,26 +45,6 @@ #define APDU_RESPONSE_CONDITION_NOT_SATISFIED 0x6985 #define APDU_RESPONSE_REF_DATA_NOT_FOUND 0x6a88 -#ifdef HAVE_STARKWARE - -#define STARKWARE_CLA 0xF0 -#define STARKWARE_INS_GET_PUBLIC_KEY 0x02 -#define STARKWARE_INS_SIGN_MESSAGE 0x04 -#define STARKWARE_INS_PROVIDE_QUANTUM 0x08 -#define STARKWARE_INS_UNSAFE_SIGN 0x0A - -#define P1_STARK_ORDER 0x01 -#define P1_STARK_TRANSFER 0x02 -#define P1_STARK_ORDER_V2 0x03 -#define P1_STARK_TRANSFER_V2 0x04 -#define P1_STARK_CONDITIONAL_TRANSFER 0x05 - -#define STARK_ORDER_TYPE 0 -#define STARK_TRANSFER_TYPE 1 -#define STARK_CONDITIONAL_TRANSFER_TYPE 2 - -#endif - enum { OFFSET_CLA = 0, OFFSET_INS, OFFSET_P1, OFFSET_P2, OFFSET_LC, OFFSET_CDATA }; #define ERR_APDU_EMPTY 0x6982 @@ -151,35 +129,6 @@ void handleSetEth2WinthdrawalIndex(uint8_t p1, #endif -#ifdef HAVE_STARKWARE - -void handleStarkwareGetPublicKey(uint8_t p1, - uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - unsigned int *tx); -void handleStarkwareSignMessage(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - unsigned int *tx); -void handleStarkwareProvideQuantum(uint8_t p1, - uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - unsigned int *tx); -void handleStarkwareUnsafeSign(uint8_t p1, - uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - unsigned int *tx); - -#endif - extern uint16_t apdu_response_code; #endif // _APDU_CONSTANTS_H_ diff --git a/src/common_ui.h b/src/common_ui.h index d4505972e..97dabad7a 100644 --- a/src/common_ui.h +++ b/src/common_ui.h @@ -11,12 +11,8 @@ void ui_display_privacy_public_key(void); void ui_display_privacy_shared_secret(void); void ui_display_public_key(const uint64_t *chain_id); void ui_sign_712_v0(void); -void ui_display_stark_public(void); void ui_confirm_selector(void); void ui_confirm_parameter(void); -void ui_stark_limit_order(void); -void ui_stark_unsafe_sign(void); -void ui_stark_transfer(bool selfTransfer, bool conditional); // EIP-191 void ui_191_start(void); diff --git a/src/eth_plugin_internal.c b/src/eth_plugin_internal.c index ddf61bbcc..2cfe351eb 100644 --- a/src/eth_plugin_internal.c +++ b/src/eth_plugin_internal.c @@ -2,13 +2,8 @@ #include "eth_plugin_internal.h" #include "plugin_utils.h" -bool erc20_plugin_available_check(void); - void erc20_plugin_call(int message, void* parameters); -#ifdef HAVE_STARKWARE -void starkware_plugin_call(int message, void* parameters); -#endif #ifdef HAVE_ETH2 void eth2_plugin_call(int message, void* parameters); #endif @@ -27,83 +22,15 @@ const uint8_t* const ETH2_SELECTORS[NUM_ETH2_SELECTORS] = {ETH2_DEPOSIT_SELECTOR #endif -#ifdef HAVE_STARKWARE - -static const uint8_t STARKWARE_REGISTER_ID[SELECTOR_SIZE] = {0xdd, 0x24, 0x14, 0xd4}; -static const uint8_t STARKWARE_DEPOSIT_TOKEN_ID[SELECTOR_SIZE] = {0x25, 0x05, 0xc3, 0xd9}; -static const uint8_t STARKWARE_DEPOSIT_ETH_ID[SELECTOR_SIZE] = {0x00, 0xae, 0xef, 0x8a}; -static const uint8_t STARKWARE_DEPOSIT_CANCEL_ID[SELECTOR_SIZE] = {0x7d, 0xf7, 0xdc, 0x04}; -static const uint8_t STARKWARE_DEPOSIT_RECLAIM_ID[SELECTOR_SIZE] = {0xae, 0x87, 0x38, 0x16}; -static const uint8_t STARKWARE_WITHDRAW_ID[SELECTOR_SIZE] = {0x44, 0x1a, 0x3e, 0x70}; -static const uint8_t STARKWARE_FULL_WITHDRAWAL_ID[SELECTOR_SIZE] = {0xa9, 0x33, 0x10, 0xc4}; -static const uint8_t STARKWARE_FREEZE_ID[SELECTOR_SIZE] = {0x93, 0xc1, 0xe4, 0x66}; -static const uint8_t STARKWARE_ESCAPE_ID[SELECTOR_SIZE] = {0x9e, 0x3a, 0xda, 0xc4}; -static const uint8_t STARKWARE_VERIFY_ESCAPE_ID[SELECTOR_SIZE] = {0x2d, 0xd5, 0x30, 0x06}; - -static const uint8_t STARKWARE_WITHDRAW_TO_ID[SELECTOR_SIZE] = {0x14, 0xcd, 0x70, 0xe4}; -static const uint8_t STARKWARE_DEPOSIT_NFT_ID[SELECTOR_SIZE] = {0xae, 0x1c, 0xdd, 0xe6}; -static const uint8_t STARKWARE_DEPOSIT_NFT_RECLAIM_ID[SELECTOR_SIZE] = {0xfc, 0xb0, 0x58, 0x22}; -static const uint8_t STARKWARE_WITHDRAW_AND_MINT_ID[SELECTOR_SIZE] = {0xd9, 0x14, 0x43, 0xb7}; -static const uint8_t STARKWARE_WITHDRAW_NFT_ID[SELECTOR_SIZE] = {0x01, 0x9b, 0x41, 0x7a}; -static const uint8_t STARKWARE_WITHDRAW_NFT_TO_ID[SELECTOR_SIZE] = {0xeb, 0xef, 0x0f, 0xd0}; -static const uint8_t STARKWARE_REGISTER_AND_DEPOSIT_TOKEN_ID[SELECTOR_SIZE] = {0x10, - 0x82, - 0x08, - 0xcf}; -static const uint8_t STARKWARE_REGISTER_AND_DEPOSIT_ETH_ID[SELECTOR_SIZE] = {0xa7, - 0x78, - 0xc0, - 0xc3}; -static const uint8_t STARKWARE_PROXY_DEPOSIT_TOKEN_ID[SELECTOR_SIZE] = {0xdc, 0xca, 0xd5, 0x24}; -static const uint8_t STARKWARE_PROXY_DEPOSIT_ETH_ID[SELECTOR_SIZE] = {0x6c, 0xe5, 0xd9, 0x57}; - -const uint8_t* const STARKWARE_SELECTORS[NUM_STARKWARE_SELECTORS] = { - STARKWARE_REGISTER_ID, - STARKWARE_DEPOSIT_TOKEN_ID, - STARKWARE_DEPOSIT_ETH_ID, - STARKWARE_DEPOSIT_CANCEL_ID, - STARKWARE_DEPOSIT_RECLAIM_ID, - STARKWARE_WITHDRAW_ID, - STARKWARE_FULL_WITHDRAWAL_ID, - STARKWARE_FREEZE_ID, - STARKWARE_ESCAPE_ID, - STARKWARE_VERIFY_ESCAPE_ID, - STARKWARE_WITHDRAW_TO_ID, - STARKWARE_DEPOSIT_NFT_ID, - STARKWARE_DEPOSIT_NFT_RECLAIM_ID, - STARKWARE_WITHDRAW_AND_MINT_ID, - STARKWARE_WITHDRAW_NFT_ID, - STARKWARE_WITHDRAW_NFT_TO_ID, - STARKWARE_REGISTER_AND_DEPOSIT_TOKEN_ID, - STARKWARE_REGISTER_AND_DEPOSIT_ETH_ID, - STARKWARE_PROXY_DEPOSIT_TOKEN_ID, - STARKWARE_PROXY_DEPOSIT_ETH_ID}; - -#endif - // All internal alias names start with 'minus' const internalEthPlugin_t INTERNAL_ETH_PLUGINS[] = { - {erc20_plugin_available_check, - (const uint8_t**) ERC20_SELECTORS, - NUM_ERC20_SELECTORS, - "-erc20", - erc20_plugin_call}, + {NULL, (const uint8_t**) ERC20_SELECTORS, NUM_ERC20_SELECTORS, "-erc20", erc20_plugin_call}, #ifdef HAVE_ETH2 {NULL, (const uint8_t**) ETH2_SELECTORS, NUM_ETH2_SELECTORS, "-eth2", eth2_plugin_call}, -#endif - -#ifdef HAVE_STARKWARE - - {NULL, - (const uint8_t**) STARKWARE_SELECTORS, - NUM_STARKWARE_SELECTORS, - "-strk", - starkware_plugin_call}, - #endif {NULL, NULL, 0, "", NULL}}; diff --git a/src/eth_plugin_internal.h b/src/eth_plugin_internal.h index 6cc09ce6b..ea84e407d 100644 --- a/src/eth_plugin_internal.h +++ b/src/eth_plugin_internal.h @@ -29,11 +29,4 @@ extern const uint8_t* const ETH2_SELECTORS[NUM_ETH2_SELECTORS]; #endif -#ifdef HAVE_STARKWARE - -#define NUM_STARKWARE_SELECTORS 20 -extern const uint8_t* const STARKWARE_SELECTORS[NUM_STARKWARE_SELECTORS]; - -#endif - extern internalEthPlugin_t const INTERNAL_ETH_PLUGINS[]; diff --git a/src/main.c b/src/main.c index ac74de410..4f5ce6d7f 100644 --- a/src/main.c +++ b/src/main.c @@ -32,10 +32,6 @@ #include "challenge.h" #include "domain_name.h" -#ifdef HAVE_STARKWARE -#include "stark_crypto.h" -#endif - unsigned char G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; void ui_idle(void); @@ -55,9 +51,6 @@ uint16_t apdu_response_code; bool G_called_from_swap; bool G_swap_response_ready; pluginType_t pluginType; -#ifdef HAVE_STARKWARE -bool quantumSet; -#endif #ifdef HAVE_ETH2 uint32_t eth2WithdrawalIndex; @@ -81,9 +74,6 @@ void reset_app_context() { G_called_from_swap = false; G_swap_response_ready = false; pluginType = OLD_INTERNAL; -#ifdef HAVE_STARKWARE - quantumSet = false; -#endif #ifdef HAVE_ETH2 eth2WithdrawalIndex = 0; #endif @@ -232,52 +222,6 @@ void handleApdu(unsigned int *flags, unsigned int *tx) { #endif // HAVE_WALLET_ID_SDK -#ifdef HAVE_STARKWARE - - if (G_io_apdu_buffer[OFFSET_CLA] == STARKWARE_CLA) { - switch (G_io_apdu_buffer[OFFSET_INS]) { - case STARKWARE_INS_GET_PUBLIC_KEY: - handleStarkwareGetPublicKey(G_io_apdu_buffer[OFFSET_P1], - G_io_apdu_buffer[OFFSET_P2], - G_io_apdu_buffer + OFFSET_CDATA, - G_io_apdu_buffer[OFFSET_LC], - flags, - tx); - break; - case STARKWARE_INS_SIGN_MESSAGE: - handleStarkwareSignMessage(G_io_apdu_buffer[OFFSET_P1], - G_io_apdu_buffer[OFFSET_P2], - G_io_apdu_buffer + OFFSET_CDATA, - G_io_apdu_buffer[OFFSET_LC], - flags, - tx); - break; - case STARKWARE_INS_PROVIDE_QUANTUM: - handleStarkwareProvideQuantum(G_io_apdu_buffer[OFFSET_P1], - G_io_apdu_buffer[OFFSET_P2], - G_io_apdu_buffer + OFFSET_CDATA, - G_io_apdu_buffer[OFFSET_LC], - flags, - tx); - break; - case STARKWARE_INS_UNSAFE_SIGN: - handleStarkwareUnsafeSign(G_io_apdu_buffer[OFFSET_P1], - G_io_apdu_buffer[OFFSET_P2], - G_io_apdu_buffer + OFFSET_CDATA, - G_io_apdu_buffer[OFFSET_LC], - flags, - tx); - break; - default: - THROW(0x6D00); - break; - } - CLOSE_TRY; - return; - } - -#endif - if (G_io_apdu_buffer[OFFSET_CLA] != CLA) { THROW(0x6E00); } diff --git a/src/poorstream.c b/src/poorstream.c deleted file mode 100644 index 2dc2fa807..000000000 --- a/src/poorstream.c +++ /dev/null @@ -1,43 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "poorstream.h" - -void poorstream_init(poorstream_t *stream, uint8_t *buffer) { - memset((void *) stream, 0, sizeof(poorstream_t)); - stream->pointer = buffer; -} - -void poorstream_flush(poorstream_t *stream) { - // PRINTF("Flush\n"); - *(stream->pointer + 0) = (stream->accumulator >> 56); - *(stream->pointer + 1) = (stream->accumulator >> 48); - *(stream->pointer + 2) = (stream->accumulator >> 40); - *(stream->pointer + 3) = (stream->accumulator >> 32); - *(stream->pointer + 4) = (stream->accumulator >> 24); - *(stream->pointer + 5) = (stream->accumulator >> 16); - *(stream->pointer + 6) = (stream->accumulator >> 8); - *(stream->pointer + 7) = (stream->accumulator >> 0); -} - -void poorstream_write_bits(poorstream_t *stream, uint64_t bits, uint32_t num_bits) { - stream->offset += num_bits; - if (stream->offset < 64) { - stream->accumulator |= (bits << (64 - stream->offset)); - // PRINTF("ACC |= << %d\n", (64 - stream->offset)); - } else { - stream->offset -= 64; - stream->mask = ((1 << (num_bits - stream->offset)) - 1); - // PRINTF("Mask %lx\n", stream->mask); - // PRINTF("Offset %d\n", stream->offset); - stream->accumulator |= ((bits >> stream->offset) & stream->mask); - poorstream_flush(stream); - stream->accumulator = 0; - stream->pointer += 8; - if (stream->offset) { - stream->mask = ((1 << stream->offset) - 1); - stream->accumulator |= ((bits & stream->mask) << (64 - stream->offset)); - } - } -} - -#endif diff --git a/src/poorstream.h b/src/poorstream.h deleted file mode 100644 index 6ac17a527..000000000 --- a/src/poorstream.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _POORSTREAM_H_ -#define _POORSTREAM_H_ - -#include -#include -#include - -#include "os.h" - -typedef struct poorstream_t { - uint8_t *pointer; - uint32_t offset; - uint64_t mask; - uint64_t accumulator; -} poorstream_t; - -void poorstream_init(poorstream_t *stream, uint8_t *buffer); -void poorstream_flush(poorstream_t *stream); -void poorstream_write_bits(poorstream_t *stream, uint64_t bits, uint32_t num_bits); - -#endif // _POORSTREAM_H_ diff --git a/src/shared_context.h b/src/shared_context.h index 40113d3bb..4c1591404 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -40,21 +40,6 @@ typedef struct internalStorage_t { bool initialized; } internalStorage_t; -#ifdef HAVE_STARKWARE - -typedef enum starkQuantumType_e { - - STARK_QUANTUM_LEGACY = 0x00, - STARK_QUANTUM_ETH, - STARK_QUANTUM_ERC20, - STARK_QUANTUM_ERC721, - STARK_QUANTUM_MINTABLE_ERC20, - STARK_QUANTUM_MINTABLE_ERC721 - -} starkQuantumType_e; - -#endif - typedef struct tokenContext_t { char pluginName[PLUGIN_ID_LENGTH]; @@ -78,13 +63,6 @@ typedef struct tokenContext_t { uint8_t pluginStatus; -#ifdef HAVE_STARKWARE - uint8_t quantum[32]; - uint8_t mintingBlob[32]; - uint8_t quantumIndex; - uint8_t quantumType; -#endif - } tokenContext_t; _Static_assert((offsetof(tokenContext_t, pluginContext) % 4) == 0, "Plugin context not aligned"); @@ -129,27 +107,8 @@ typedef union { char tmp[100]; } tmpContent_t; -#ifdef HAVE_STARKWARE - -typedef struct starkContext_t { - uint8_t w1[32]; - uint8_t w2[32]; - uint8_t w3[32]; - uint8_t w4[32]; - uint8_t conditional; - uint8_t transferDestination[32]; - uint8_t fact[32]; - uint8_t conditionAddress[20]; -} starkContext_t; - -#endif - typedef union { tokenContext_t tokenContext; - -#ifdef HAVE_STARKWARE - starkContext_t starkContext; -#endif } dataContext_t; typedef enum { APP_STATE_IDLE, APP_STATE_SIGNING_TX, APP_STATE_SIGNING_MESSAGE } app_state_t; @@ -158,18 +117,6 @@ typedef enum { CONTRACT_NONE, CONTRACT_ERC20, CONTRACT_ALLOWANCE, -#ifdef HAVE_STARKWARE - CONTRACT_STARKWARE_REGISTER, - CONTRACT_STARKWARE_DEPOSIT_TOKEN, - CONTRACT_STARKWARE_DEPOSIT_ETH, - CONTRACT_STARKWARE_WITHDRAW, - CONTRACT_STARKWARE_DEPOSIT_CANCEL, - CONTRACT_STARKWARE_DEPOSIT_RECLAIM, - CONTRACT_STARKWARE_FULL_WITHDRAWAL, - CONTRACT_STARKWARE_FREEZE, - CONTRACT_STARKWARE_ESCAPE, - CONTRACT_STARKWARE_VERIFY_ESCAPE -#endif } contract_call_t; // must be able to hold in decimal up to : floor(MAX_UINT64 / 2) - 36 @@ -223,9 +170,6 @@ typedef enum { extern pluginType_t pluginType; extern uint8_t appState; -#ifdef HAVE_STARKWARE -extern bool quantumSet; -#endif #ifdef HAVE_ETH2 extern uint32_t eth2WithdrawalIndex; #endif diff --git a/src/starkDisplayUtils.c b/src/starkDisplayUtils.c deleted file mode 100644 index a59ae9927..000000000 --- a/src/starkDisplayUtils.c +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" - -void stark_sign_display_master_account() { - snprintf(strings.tmp.tmp, - sizeof(strings.tmp.tmp), - "0x%.*H", - 32, - dataContext.starkContext.transferDestination); -} - -void stark_sign_display_condition_fact() { - snprintf(strings.tmp.tmp, sizeof(strings.tmp.tmp), "0x%.*H", 32, dataContext.starkContext.fact); -} - -#endif \ No newline at end of file diff --git a/src/starkDisplayUtils.h b/src/starkDisplayUtils.h deleted file mode 100644 index 48399b82d..000000000 --- a/src/starkDisplayUtils.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef HAVE_STARKWARE - -void stark_sign_display_master_account(); -void stark_sign_display_condition_fact(); - -#endif \ No newline at end of file diff --git a/src/stark_crypto.c b/src/stark_crypto.c deleted file mode 100644 index f5b252013..000000000 --- a/src/stark_crypto.c +++ /dev/null @@ -1,91 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "stark_utils.h" -#include "uint256.h" -#include "common_utils.h" - -extraInfo_t *getKnownToken(uint8_t *contractAddress); - -static unsigned char const C_cx_Stark256_n[] = { - // n: 0x0800000000000010ffffffffffffffffb781126dcae7b2321e66a241adc64d2f - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xb7, 0x81, 0x12, 0x6d, 0xca, 0xe7, 0xb2, 0x32, 0x1e, 0x66, 0xa2, 0x41, 0xad, 0xc6, 0x4d, 0x2f}; - -// C_cx_secp256k1_n - (C_cx_secp256k1_n % C_cx_Stark256_n) -static unsigned char const STARK_DERIVE_BIAS[] = { - 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, - 0x38, 0xa1, 0x3b, 0x4b, 0x92, 0x0e, 0x94, 0x11, 0xae, 0x6d, 0xa5, 0xf4, 0x0b, 0x03, 0x58, 0xb1}; - -void starkDerivePrivateKey(uint32_t *bip32Path, uint32_t bip32PathLength, uint8_t *privateKeyData) { -#if 0 - // Sanity check - if (bip32Path[0] != STARK_BIP32_PATH_0) { - PRINTF("Invalid Stark derivation path %d\n", bip32Path[0]); - THROW(0x6a80); - } - os_perso_derive_node_bip32(CX_CURVE_256K1, bip32Path, bip32PathLength, privateKeyData, NULL); - PRINTF("Private key before processing %.*H\n", 32, privateKeyData); - // TODO - support additional schemes - cx_math_modm(privateKeyData, 32, C_cx_Stark256_n, 32); - PRINTF("Private key after processing %.*H\n", 32, privateKeyData); -#else - uint8_t tmp[33]; - uint8_t index = 0; - // Sanity check - if ((bip32PathLength < 2) || (bip32Path[0] != STARK_BIP32_PATH_0) || - (bip32Path[1] != STARK_BIP32_PATH_1)) { - PRINTF("Invalid Stark derivation path %d %d\n", bip32Path[0], bip32Path[1]); - THROW(0x6a80); - } - os_perso_derive_node_bip32(CX_CURVE_256K1, bip32Path, bip32PathLength, tmp, NULL); - PRINTF("Private key before processing %.*H\n", 32, tmp); - for (;;) { - tmp[32] = index; - cx_hash_sha256(tmp, 33, privateKeyData, 32); - PRINTF("Key hash %.*H\n", 32, privateKeyData); - if (cx_math_cmp(privateKeyData, STARK_DERIVE_BIAS, 32) < 0) { - cx_math_modm(privateKeyData, 32, C_cx_Stark256_n, 32); - break; - } - index++; - } - PRINTF("Key result %.*H\n", 32, privateKeyData); - -#endif -} - -void stark_get_amount_string(uint8_t *contractAddress, - uint8_t *quantum256, - uint8_t *amount64, - char *tmp100, - char *target100) { - uint256_t amountPre, quantum, amount; - uint8_t decimals; - char *ticker = chainConfig->coinName; - - PRINTF("stark_get_amount_string %.*H\n", 20, contractAddress); - - if (allzeroes(contractAddress, 20)) { - decimals = WEI_TO_ETHER; - PRINTF("stark_get_amount_string - ETH\n"); - } else { - tokenDefinition_t *token = &getKnownToken(contractAddress)->token; - if (token == NULL) { // caught earlier - THROW(0x6A80); - } - decimals = token->decimals; - ticker = (char *) token->ticker; - PRINTF("stark_get_amount_string - decimals %d ticker %s\n", decimals, ticker); - } - convertUint256BE(amount64, 8, &amountPre); - readu256BE(quantum256, &quantum); - mul256(&amountPre, &quantum, &amount); - tostring256(&amount, 10, tmp100, 100); - PRINTF("stark_get_amount_string - mul256 %s\n", tmp100); - strlcpy(target100, ticker, 100); - adjustDecimals(tmp100, strlen(tmp100), target100 + strlen(ticker), 100, decimals); - PRINTF("get_amount_string %s\n", target100); -} - -#endif // HAVE_STARK diff --git a/src/stark_crypto.h b/src/stark_crypto.h deleted file mode 100644 index 5ce1be31e..000000000 --- a/src/stark_crypto.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _STARK_CRYPTO_H_ -#define _STARK_CRYPTO_H_ - -#include -#include -#include - -#include "os.h" -#include "cx.h" - -/* EC points */ -#define FIELD_ELEMENT_SIZE (32) -#define EC_POINT_SIZE (2 * FIELD_ELEMENT_SIZE + 1) -typedef unsigned char FieldElement[FIELD_ELEMENT_SIZE]; -typedef unsigned char ECPoint[EC_POINT_SIZE]; - -void pedersen(FieldElement res, /* out */ - FieldElement a, - FieldElement b); - -#endif // _STARK_CRYPTO_H_ diff --git a/src/stark_utils.c b/src/stark_utils.c deleted file mode 100644 index 13cf5483f..000000000 --- a/src/stark_utils.c +++ /dev/null @@ -1,245 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "stark_crypto.h" -#include "shared_context.h" -#include "uint256.h" -#include "uint_common.h" - -#include "os_io_seproxyhal.h" - -#define SIGNATURE_MAX_LEN (72) - -static const ECPoint PEDERSEN_SHIFT[] = {{ - 0x04, - - 0x04, 0x9e, 0xe3, 0xeb, 0xa8, 0xc1, 0x60, 0x07, 0x00, 0xee, 0x1b, 0x87, 0xeb, 0x59, 0x9f, 0x16, - 0x71, 0x6b, 0x0b, 0x10, 0x22, 0x94, 0x77, 0x33, 0x55, 0x1f, 0xde, 0x40, 0x50, 0xca, 0x68, 0x04, - - 0x03, 0xca, 0x0c, 0xfe, 0x4b, 0x3b, 0xc6, 0xdd, 0xf3, 0x46, 0xd4, 0x9d, 0x06, 0xea, 0x0e, 0xd3, - 0x4e, 0x62, 0x10, 0x62, 0xc0, 0xe0, 0x56, 0xc1, 0xd0, 0x40, 0x5d, 0x26, 0x6e, 0x10, 0x26, 0x8a, -}}; - -static const ECPoint PEDERSEN_POINTS[4] = { - { - 0x04, - - 0x02, 0x34, 0x28, 0x7d, 0xcb, 0xaf, 0xfe, 0x7f, 0x96, 0x9c, 0x74, - 0x86, 0x55, 0xfc, 0xa9, 0xe5, 0x8f, 0xa8, 0x12, 0x0b, 0x6d, 0x56, - 0xeb, 0x0c, 0x10, 0x80, 0xd1, 0x79, 0x57, 0xeb, 0xe4, 0x7b, - - 0x03, 0xb0, 0x56, 0xf1, 0x00, 0xf9, 0x6f, 0xb2, 0x1e, 0x88, 0x95, - 0x27, 0xd4, 0x1f, 0x4e, 0x39, 0x94, 0x01, 0x35, 0xdd, 0x7a, 0x6c, - 0x94, 0xcc, 0x6e, 0xd0, 0x26, 0x8e, 0xe8, 0x9e, 0x56, 0x15, - }, - { - 0x04, - - 0x04, 0xfa, 0x56, 0xf3, 0x76, 0xc8, 0x3d, 0xb3, 0x3f, 0x9d, 0xab, - 0x26, 0x56, 0x55, 0x8f, 0x33, 0x99, 0x09, 0x9e, 0xc1, 0xde, 0x5e, - 0x30, 0x18, 0xb7, 0xa6, 0x93, 0x2d, 0xba, 0x8a, 0xa3, 0x78, - - 0x03, 0xfa, 0x09, 0x84, 0xc9, 0x31, 0xc9, 0xe3, 0x81, 0x13, 0xe0, - 0xc0, 0xe4, 0x7e, 0x44, 0x01, 0x56, 0x27, 0x61, 0xf9, 0x2a, 0x7a, - 0x23, 0xb4, 0x51, 0x68, 0xf4, 0xe8, 0x0f, 0xf5, 0xb5, 0x4d, - }, - { - 0x04, - - 0x04, 0xba, 0x4c, 0xc1, 0x66, 0xbe, 0x8d, 0xec, 0x76, 0x49, 0x10, - 0xf7, 0x5b, 0x45, 0xf7, 0x4b, 0x40, 0xc6, 0x90, 0xc7, 0x47, 0x09, - 0xe9, 0x0f, 0x3a, 0xa3, 0x72, 0xf0, 0xbd, 0x2d, 0x69, 0x97, - - 0x00, 0x40, 0x30, 0x1c, 0xf5, 0xc1, 0x75, 0x1f, 0x4b, 0x97, 0x1e, - 0x46, 0xc4, 0xed, 0xe8, 0x5f, 0xca, 0xc5, 0xc5, 0x9a, 0x5c, 0xe5, - 0xae, 0x7c, 0x48, 0x15, 0x1f, 0x27, 0xb2, 0x4b, 0x21, 0x9c, - }, - { - 0x04, - - 0x05, 0x43, 0x02, 0xdc, 0xb0, 0xe6, 0xcc, 0x1c, 0x6e, 0x44, 0xcc, - 0xa8, 0xf6, 0x1a, 0x63, 0xbb, 0x2c, 0xa6, 0x50, 0x48, 0xd5, 0x3f, - 0xb3, 0x25, 0xd3, 0x6f, 0xf1, 0x2c, 0x49, 0xa5, 0x82, 0x02, - - 0x01, 0xb7, 0x7b, 0x3e, 0x37, 0xd1, 0x35, 0x04, 0xb3, 0x48, 0x04, - 0x62, 0x68, 0xd8, 0xae, 0x25, 0xce, 0x98, 0xad, 0x78, 0x3c, 0x25, - 0x56, 0x1a, 0x87, 0x9d, 0xcc, 0x77, 0xe9, 0x9c, 0x24, 0x26, - }}; - -void accum_ec_mul(ECPoint *hash, uint8_t *buf, int len, int pedersen_idx) { - ECPoint tmp; - if (!allzeroes(buf, len)) { - uint8_t pad[32]; - memcpy(tmp, PEDERSEN_POINTS[pedersen_idx], sizeof(ECPoint)); - io_seproxyhal_io_heartbeat(); - memset(pad, 0, sizeof(pad)); - memmove(pad + 32 - len, buf, len); - cx_ecfp_scalar_mult(CX_CURVE_Stark256, tmp, sizeof(ECPoint), pad, sizeof(pad)); - io_seproxyhal_io_heartbeat(); - cx_ecfp_add_point(CX_CURVE_Stark256, *hash, *hash, tmp, sizeof(ECPoint)); - } -} - -void pedersen(FieldElement res, /* out */ - FieldElement a, - FieldElement b) { - ECPoint hash; - - memcpy(hash, PEDERSEN_SHIFT, sizeof(hash)); - - accum_ec_mul(&hash, a, 1, 1); - accum_ec_mul(&hash, a + 1, FIELD_ELEMENT_SIZE - 1, 0); - accum_ec_mul(&hash, b, 1, 3); - accum_ec_mul(&hash, b + 1, FIELD_ELEMENT_SIZE - 1, 2); - - memcpy(res, hash + 1, FIELD_ELEMENT_SIZE); -} - -void shift_stark_hash(FieldElement hash) { - uint256_t hash256, final_hash256; - readu256BE(hash, &hash256); - uint32_t bits_count = bits256(&hash256); - if (bits_count < 248) { - return; - } else if (bits_count >= 248 && bits_count % 8 >= 1 && bits_count % 8 <= 4) { - shiftl256(&hash256, 4, &final_hash256); - write_u64_be(hash, UPPER(UPPER_P((&final_hash256)))); - write_u64_be(hash + 8, LOWER(UPPER_P((&final_hash256)))); - write_u64_be(hash + 16, UPPER(LOWER_P((&final_hash256)))); - write_u64_be(hash + 24, LOWER(LOWER_P((&final_hash256)))); - return; - } else { - THROW(0x6A80); - } -} - -int stark_sign(uint8_t *signature, /* out */ - uint8_t *privateKeyData, - FieldElement token1, - FieldElement token2, - FieldElement msg, - FieldElement condition) { - unsigned int info = 0; - FieldElement hash; - cx_ecfp_private_key_t privateKey; - PRINTF("Stark sign msg w1 %.*H\n", 32, token1); - PRINTF("Stark sign msg w2 %.*H\n", 32, token2); - PRINTF("Stark sign w3 %.*H\n", 32, msg); - if (condition != NULL) { - PRINTF("Stark sign w4 %.*H\n", 32, condition); - } - pedersen(hash, token1, token2); - PRINTF("Pedersen hash 1 %.*H\n", 32, hash); - if (condition != NULL) { - pedersen(hash, hash, condition); - PRINTF("Pedersen hash condition %.*H\n", 32, hash); - } - pedersen(hash, hash, msg); - PRINTF("Pedersen hash 2 %.*H\n", 32, hash); - shift_stark_hash(hash); - cx_ecfp_init_private_key(CX_CURVE_Stark256, privateKeyData, 32, &privateKey); - io_seproxyhal_io_heartbeat(); - int signatureLength = cx_ecdsa_sign(&privateKey, - CX_RND_RFC6979 | CX_LAST, - CX_SHA256, - hash, - sizeof(hash), - signature, - SIGNATURE_MAX_LEN, - &info); - PRINTF("Stark signature %.*H\n", signatureLength, signature); - return signatureLength; -} - -// ERC20Token(address) -static const uint8_t ERC20_SELECTOR[] = {0xf4, 0x72, 0x61, 0xb0}; -// ETH() -static const uint8_t ETH_SELECTOR[] = {0x83, 0x22, 0xff, 0xf2}; -// ERC721Token(address, uint256) -static const uint8_t ERC721_SELECTOR[] = {0x02, 0x57, 0x17, 0x92}; -// MintableERC20Token(address) -static const uint8_t MINTABLE_ERC20_SELECTOR[] = {0x68, 0x64, 0x6e, 0x2d}; -// MintableERC721Token(address,uint256) -static const uint8_t MINTABLE_ERC721_SELECTOR[] = {0xb8, 0xb8, 0x66, 0x72}; -static const char NFT_ASSET_ID_PREFIX[] = {'N', 'F', 'T', ':', 0}; -static const char MINTABLE_ASSET_ID_PREFIX[] = {'M', 'I', 'N', 'T', 'A', 'B', 'L', 'E', ':', 0}; - -void compute_token_id(cx_sha3_t *sha3, - uint8_t *contractAddress, - uint8_t quantumType, - uint8_t *quantum, - uint8_t *mintingBlob, - bool assetTypeOnly, - uint8_t *output) { - uint8_t tmp[36]; - cx_keccak_init(sha3, 256); - if ((contractAddress != NULL) && (!allzeroes(contractAddress, 20))) { - const uint8_t *selector = NULL; - switch (quantumType) { - case STARK_QUANTUM_ERC20: - case STARK_QUANTUM_LEGACY: - selector = ERC20_SELECTOR; - break; - case STARK_QUANTUM_ERC721: - selector = ERC721_SELECTOR; - break; - case STARK_QUANTUM_MINTABLE_ERC20: - selector = MINTABLE_ERC20_SELECTOR; - break; - case STARK_QUANTUM_MINTABLE_ERC721: - selector = MINTABLE_ERC721_SELECTOR; - break; - default: - PRINTF("Unsupported quantum type %d\n", quantumType); - return; - } - PRINTF("compute_token_id for %.*H\n", 20, contractAddress); - memset(tmp, 0, sizeof(tmp)); - memmove(tmp, selector, 4); - memmove(tmp + 16, contractAddress, 20); - cx_hash((cx_hash_t *) sha3, 0, tmp, sizeof(tmp), NULL, 0); - } else { - PRINTF("compute_token_id for ETH\n"); - cx_hash((cx_hash_t *) sha3, 0, ETH_SELECTOR, sizeof(ETH_SELECTOR), NULL, 0); - } - if ((quantumType == STARK_QUANTUM_ERC721) || (quantumType == STARK_QUANTUM_MINTABLE_ERC721)) { - memset(tmp, 0, 32); - tmp[31] = 1; - PRINTF("compute_token_id quantum %.*H\n", 32, tmp); - cx_hash((cx_hash_t *) sha3, CX_LAST, tmp, 32, output, 32); - } else { - PRINTF("compute_token_id quantum %.*H\n", 32, quantum); - cx_hash((cx_hash_t *) sha3, CX_LAST, quantum, 32, output, 32); - } - if (!assetTypeOnly && - ((quantumType != STARK_QUANTUM_LEGACY) && (quantumType != STARK_QUANTUM_ETH) && - (quantumType != STARK_QUANTUM_ERC20))) { - const char *prefix = NULL; - output[0] &= 0x03; - cx_keccak_init(sha3, 256); - switch (quantumType) { - case STARK_QUANTUM_ERC721: - prefix = NFT_ASSET_ID_PREFIX; - break; - case STARK_QUANTUM_MINTABLE_ERC20: - case STARK_QUANTUM_MINTABLE_ERC721: - prefix = MINTABLE_ASSET_ID_PREFIX; - break; - default: - PRINTF("Unsupported non default quantum type %d\n", quantumType); - return; - } - cx_hash((cx_hash_t *) sha3, 0, (const uint8_t *) prefix, strlen(prefix), NULL, 0); - cx_hash((cx_hash_t *) sha3, 0, output, 32, NULL, 0); - cx_hash((cx_hash_t *) sha3, CX_LAST, mintingBlob, 32, output, 32); - } - if (!assetTypeOnly && ((quantumType == STARK_QUANTUM_MINTABLE_ERC20) || - (quantumType == STARK_QUANTUM_MINTABLE_ERC721))) { - output[0] = 0x04; - output[1] = 0x00; - } else { - output[0] &= 0x03; - } - PRINTF("compute_token_id computed token %.*H\n", 32, output); -} - -#endif // HAVE_STARK diff --git a/src/stark_utils.h b/src/stark_utils.h deleted file mode 100644 index 9ba69a2b9..000000000 --- a/src/stark_utils.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _STARK_UTILS_H_ -#define _STARK_UTILS_H_ - -#include -#include -#include - -#include "os.h" -#include "cx.h" -#include "stark_crypto.h" - -void compute_token_id(cx_sha3_t *sha3, - uint8_t *contractAddress, - uint8_t quantumType, - uint8_t *quantum, - uint8_t *mintingBlob, - bool assetTypeOnly, - uint8_t *output); - -void starkDerivePrivateKey(uint32_t *bip32Path, uint32_t bip32PathLength, uint8_t *privateKeyData); - -void stark_get_amount_string(uint8_t *contractAddress, - uint8_t *quantum256, - uint8_t *amount64, - char *tmp100, - char *target100); - -int stark_sign(uint8_t *signature, /* out */ - uint8_t *privateKeyData, - FieldElement token1, - FieldElement token2, - FieldElement msg, - FieldElement condition); - -#endif // _STARK_UTILS_H_ diff --git a/src/ui_callbacks.h b/src/ui_callbacks.h index 041f7173e..306340076 100644 --- a/src/ui_callbacks.h +++ b/src/ui_callbacks.h @@ -21,9 +21,6 @@ unsigned int io_seproxyhal_touch_data_cancel(const bagl_element_t *e); unsigned int io_seproxyhal_touch_eth2_address_ok(const bagl_element_t *e); unsigned int io_seproxyhal_touch_privacy_ok(const bagl_element_t *e); unsigned int io_seproxyhal_touch_privacy_cancel(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_stark_unsafe_sign_ok(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_stark_pubkey_ok(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_stark_ok(const bagl_element_t *e); void ui_warning_contract_data(void); diff --git a/src_bagl/common_ui.c b/src_bagl/common_ui.c index 19ff47e4d..dc6450496 100644 --- a/src_bagl/common_ui.c +++ b/src_bagl/common_ui.c @@ -37,32 +37,6 @@ void ui_sign_712_v0(void) { ux_flow_init(0, ux_sign_712_v0_flow, NULL); } -#ifdef HAVE_STARKWARE -void ui_display_stark_public(void) { - ux_flow_init(0, ux_display_stark_public_flow, NULL); -} -void ui_stark_limit_order(void) { - ux_flow_init(0, ux_stark_limit_order_flow, NULL); -} - -void ui_stark_unsafe_sign(void) { - ux_flow_init(0, ux_stark_unsafe_sign_flow, NULL); -} - -void ui_stark_transfer(bool selfTransfer, bool conditional) { - if (selfTransfer) { - ux_flow_init( - 0, - (conditional ? ux_stark_self_transfer_conditional_flow : ux_stark_self_transfer_flow), - NULL); - } else { - ux_flow_init(0, - (conditional ? ux_stark_transfer_conditional_flow : ux_stark_transfer_flow), - NULL); - } -} -#endif // HAVE_STARKWARE - void ui_confirm_selector(void) { ux_flow_init(0, ux_confirm_selector_flow, NULL); } diff --git a/src_bagl/ui_flow.h b/src_bagl/ui_flow.h index 184036b67..ae2590d90 100644 --- a/src_bagl/ui_flow.h +++ b/src_bagl/ui_flow.h @@ -30,34 +30,4 @@ extern const ux_flow_step_t* const ux_display_privacy_shared_secret_flow[]; extern const ux_flow_step_t* ux_approval_tx_flow[15]; -#ifdef HAVE_STARKWARE - -extern const ux_flow_step_t* const ux_display_stark_public_flow[]; - -extern const ux_flow_step_t* const ux_stark_limit_order_flow[]; - -extern const ux_flow_step_t* const ux_stark_transfer_flow[]; - -extern const ux_flow_step_t* const ux_stark_self_transfer_flow[]; - -extern const ux_flow_step_t* const ux_stark_transfer_conditional_flow[]; - -extern const ux_flow_step_t* const ux_stark_self_transfer_conditional_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_register_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_deposit_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_withdraw_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_verify_vault_id_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_escape_flow[]; - -extern const ux_flow_step_t* const ux_approval_starkware_verify_escape_flow[]; - -extern const ux_flow_step_t* const ux_stark_unsafe_sign_flow[]; - -#endif - #endif // _UI_FLOW_H_ diff --git a/src_bagl/ui_flow_stark_getPublicKey.c b/src_bagl/ui_flow_stark_getPublicKey.c deleted file mode 100644 index 958874fc2..000000000 --- a/src_bagl/ui_flow_stark_getPublicKey.c +++ /dev/null @@ -1,46 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "ui_callbacks.h" - -// clang-format off -UX_STEP_NOCB( - ux_display_stark_public_flow_1_step, - pnn, - { - &C_icon_eye, - "Verify", - "Stark key", - }); -UX_STEP_NOCB( - ux_display_stark_public_flow_2_step, - bnnn_paging, - { - .title = "Stark Key", - .text = strings.tmp.tmp, - }); -UX_STEP_CB( - ux_display_stark_public_flow_3_step, - pb, - io_seproxyhal_touch_stark_pubkey_ok(NULL), - { - &C_icon_validate_14, - "Approve", - }); -UX_STEP_CB( - ux_display_stark_public_flow_4_step, - pb, - io_seproxyhal_touch_address_cancel(NULL), - { - &C_icon_crossmark, - "Reject", - }); -// clang-format on - -UX_FLOW(ux_display_stark_public_flow, - &ux_display_stark_public_flow_1_step, - &ux_display_stark_public_flow_2_step, - &ux_display_stark_public_flow_3_step, - &ux_display_stark_public_flow_4_step); - -#endif diff --git a/src_bagl/ui_flow_stark_sign.c b/src_bagl/ui_flow_stark_sign.c deleted file mode 100644 index 18905e608..000000000 --- a/src_bagl/ui_flow_stark_sign.c +++ /dev/null @@ -1,234 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "ui_callbacks.h" -#include "starkDisplayUtils.h" -#include "apdu_constants.h" - -// clang-format off -UX_STEP_NOCB(ux_stark_limit_order_1_step, - pnn, - { - &C_icon_eye, - "Review", - "transaction", - }); - -UX_STEP_NOCB(ux_stark_limit_order_2_step, - bnnn_paging, - { - .title = "Limit", - .text = "Order" - }); - -UX_STEP_NOCB(ux_stark_limit_order_3_step, - bnnn_paging, - { - .title = "Trading", - .text = "Pair" - }); - -UX_STEP_NOCB(ux_stark_limit_order_4_step, - bnnn_paging, - { - .title = "Sell", - .text = strings.common.fullAmount - }); - -UX_STEP_NOCB(ux_stark_limit_order_5_step, - bnnn_paging, - { - .title = "Buy", - .text = strings.common.maxFee - }); - -UX_STEP_NOCB(ux_stark_limit_order_6_step, - bnnn_paging, - { - .title = "Token Account", - .text = strings.common.fullAddress - }); - -UX_STEP_CB( - ux_stark_limit_order_7_step, - pbb, - io_seproxyhal_touch_stark_ok(NULL), - { - &C_icon_validate_14, - "Accept", - "and send", - }); -UX_STEP_CB( - ux_stark_limit_order_8_step, - pb, - io_seproxyhal_touch_tx_cancel(NULL), - { - &C_icon_crossmark, - "Reject", - }); -// clang-format on - -UX_FLOW(ux_stark_limit_order_flow, - &ux_stark_limit_order_1_step, - &ux_stark_limit_order_2_step, - &ux_stark_limit_order_3_step, - &ux_stark_limit_order_4_step, - &ux_stark_limit_order_5_step, - &ux_stark_limit_order_6_step, - &ux_stark_limit_order_7_step, - &ux_stark_limit_order_8_step); - -static void stark_format_address(void) { - if (!getEthDisplayableAddress(dataContext.starkContext.conditionAddress, - strings.tmp.tmp, - sizeof(strings.tmp.tmp), - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); - } -} - -////////////////////////////////////////////////////////////////////// -// clang-format off -UX_STEP_NOCB(ux_stark_transfer_1_step, - pnn, - { - &C_icon_eye, - "Review", - "transaction", - }); - -UX_STEP_NOCB(ux_stark_transfer_2_step, - bnnn_paging, - { - .title = "Transfer", - .text = " " - }); - -UX_STEP_NOCB(ux_stark_self_transfer_2_step, - bnnn_paging, - { - .title = "Self", - .text = "Transfer" - }); - -UX_STEP_NOCB(ux_stark_conditional_transfer_2_step, - bnnn_paging, - { - .title = "Conditional", - .text = "Transfer" - }); - -UX_STEP_NOCB(ux_stark_self_conditional_transfer_2_step, - bnnn_paging, - { - .title = "Conditional", - .text = "Self Transfer" - }); - -UX_STEP_NOCB(ux_stark_transfer_3_step, - bnnn_paging, - { - .title = "Amount", - .text = tmpContent.tmp - }); - -UX_STEP_NOCB(ux_stark_transfer_4_step, - bnnn_paging, - { - .title = "Master Account", - .text = strings.tmp.tmp - }); - -UX_STEP_NOCB(ux_stark_transfer_5_step, - bnnn_paging, - { - .title = "Token Account", - .text = strings.tmp.tmp2 - }); - -UX_STEP_CB( - ux_stark_transfer_6_step, - pbb, - io_seproxyhal_touch_stark_ok(NULL), - { - &C_icon_validate_14, - "Accept", - "and send", - }); -UX_STEP_CB( - ux_stark_transfer_7_step, - pb, - io_seproxyhal_touch_tx_cancel(NULL), - { - &C_icon_crossmark, - "Reject", - }); - -UX_STEP_NOCB_INIT( - ux_stark_conditional_transfer_4_step, - bnnn_paging, - stark_sign_display_master_account(), - { - .title = "Master Account", - .text = strings.tmp.tmp - }); - -UX_STEP_NOCB_INIT( - ux_stark_conditional_transfer_8_step, - bnnn_paging, - stark_format_address(), - { - .title = "Cond. Address", - .text = strings.tmp.tmp - }); - -UX_STEP_NOCB_INIT( - ux_stark_conditional_transfer_9_step, - bnnn_paging, - stark_sign_display_condition_fact(), - { - .title = "Cond. Fact", - .text = strings.tmp.tmp - }); -// clang-format on - -UX_FLOW(ux_stark_transfer_flow, - &ux_stark_transfer_1_step, - &ux_stark_transfer_2_step, - &ux_stark_transfer_3_step, - &ux_stark_transfer_4_step, - &ux_stark_transfer_5_step, - &ux_stark_transfer_6_step, - &ux_stark_transfer_7_step); - -UX_FLOW(ux_stark_self_transfer_flow, - &ux_stark_transfer_1_step, - &ux_stark_self_transfer_2_step, - &ux_stark_transfer_3_step, - &ux_stark_transfer_5_step, - &ux_stark_transfer_6_step, - &ux_stark_transfer_7_step); - -UX_FLOW(ux_stark_transfer_conditional_flow, - &ux_stark_transfer_1_step, - &ux_stark_conditional_transfer_2_step, - &ux_stark_transfer_3_step, - &ux_stark_conditional_transfer_4_step, - &ux_stark_transfer_5_step, - &ux_stark_conditional_transfer_8_step, - &ux_stark_conditional_transfer_9_step, - &ux_stark_transfer_6_step, - &ux_stark_transfer_7_step); - -UX_FLOW(ux_stark_self_transfer_conditional_flow, - &ux_stark_transfer_1_step, - &ux_stark_self_conditional_transfer_2_step, - &ux_stark_transfer_3_step, - &ux_stark_transfer_5_step, - &ux_stark_conditional_transfer_8_step, - &ux_stark_conditional_transfer_9_step, - &ux_stark_transfer_6_step, - &ux_stark_transfer_7_step); - -#endif diff --git a/src_bagl/ui_flow_stark_unsafe_sign.c b/src_bagl/ui_flow_stark_unsafe_sign.c deleted file mode 100644 index 1c080582e..000000000 --- a/src_bagl/ui_flow_stark_unsafe_sign.c +++ /dev/null @@ -1,70 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "ui_callbacks.h" - -unsigned int io_seproxyhal_touch_stark_unsafe_sign_ok(const bagl_element_t *e); - -void stark_unsafe_sign_display_account() { - snprintf(strings.tmp.tmp, sizeof(strings.tmp.tmp), "0x%.*H", 32, dataContext.starkContext.w1); -} - -void stark_unsafe_sign_display_hash() { - snprintf(strings.tmp.tmp, sizeof(strings.tmp.tmp), "0x%.*H", 32, dataContext.starkContext.w2); -} - -// clang-format off -UX_STEP_NOCB(ux_stark_unsafe_sign_1_step, - pnn, - { - &C_icon_warning, - "StarkNet", - "Blind Sign", - }); - -UX_STEP_NOCB_INIT( - ux_stark_unsafe_sign_2_step, - bnnn_paging, - stark_unsafe_sign_display_account(), - { - .title = "From Account", - .text = strings.tmp.tmp - }); - -UX_STEP_NOCB_INIT( - ux_stark_unsafe_sign_3_step, - bnnn_paging, - stark_unsafe_sign_display_hash(), - { - .title = "Tx Hash", - .text = strings.tmp.tmp - }); - - -UX_STEP_CB( - ux_stark_unsafe_sign_4_step, - pbb, - io_seproxyhal_touch_stark_unsafe_sign_ok(NULL), - { - &C_icon_validate_14, - "Accept", - "and send", - }); -UX_STEP_CB( - ux_stark_unsafe_sign_5_step, - pb, - io_seproxyhal_touch_tx_cancel(NULL), - { - &C_icon_crossmark, - "Reject", - }); -// clang-format on - -UX_FLOW(ux_stark_unsafe_sign_flow, - &ux_stark_unsafe_sign_1_step, - &ux_stark_unsafe_sign_2_step, - &ux_stark_unsafe_sign_3_step, - &ux_stark_unsafe_sign_4_step, - &ux_stark_unsafe_sign_5_step); - -#endif diff --git a/src_features/getAppConfiguration/cmd_getAppConfiguration.c b/src_features/getAppConfiguration/cmd_getAppConfiguration.c index fe0130ee3..c882b115b 100644 --- a/src_features/getAppConfiguration/cmd_getAppConfiguration.c +++ b/src_features/getAppConfiguration/cmd_getAppConfiguration.c @@ -14,10 +14,6 @@ void handleGetAppConfiguration(uint8_t p1, UNUSED(flags); G_io_apdu_buffer[0] = (N_storage.dataAllowed ? APP_FLAG_DATA_ALLOWED : 0x00); G_io_apdu_buffer[0] |= APP_FLAG_EXTERNAL_TOKEN_NEEDED; -#ifdef HAVE_STARKWARE - G_io_apdu_buffer[0] |= APP_FLAG_STARKWARE; - G_io_apdu_buffer[0] |= APP_FLAG_STARKWARE_V2; -#endif G_io_apdu_buffer[1] = LEDGER_MAJOR_VERSION; G_io_apdu_buffer[2] = LEDGER_MINOR_VERSION; G_io_apdu_buffer[3] = LEDGER_PATCH_VERSION; diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index b40bfb9c4..b1ca0654a 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -2,9 +2,6 @@ #include "shared_context.h" #include "common_utils.h" #include "feature_signTx.h" -#ifdef HAVE_STARKWARE -#include "stark_utils.h" -#endif #include "uint256.h" #include "eth_plugin_handler.h" #include "network.h" diff --git a/src_features/stark_getPublicKey/cmd_stark_getPublicKey.c b/src_features/stark_getPublicKey/cmd_stark_getPublicKey.c deleted file mode 100644 index 760318828..000000000 --- a/src_features/stark_getPublicKey/cmd_stark_getPublicKey.c +++ /dev/null @@ -1,66 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "apdu_constants.h" -#include "stark_utils.h" -#include "feature_stark_getPublicKey.h" -#include "common_ui.h" -#include "os_io_seproxyhal.h" - -void handleStarkwareGetPublicKey(uint8_t p1, - uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - unsigned int *tx) { - bip32_path_t bip32; - cx_ecfp_private_key_t privateKey; - uint8_t privateKeyData[32]; - - reset_app_context(); - - if ((p1 != P1_CONFIRM) && (p1 != P1_NON_CONFIRM)) { - THROW(0x6B00); - } - - if (p2 != 0) { - THROW(0x6B00); - } - - dataBuffer = parseBip32(dataBuffer, &dataLength, &bip32); - - if (dataBuffer == NULL) { - THROW(0x6a80); - } - - io_seproxyhal_io_heartbeat(); - starkDerivePrivateKey(bip32.path, bip32.length, privateKeyData); - cx_ecfp_init_private_key(CX_CURVE_Stark256, privateKeyData, 32, &privateKey); - io_seproxyhal_io_heartbeat(); - cx_ecfp_generate_pair(CX_CURVE_Stark256, &tmpCtx.publicKeyContext.publicKey, &privateKey, 1); - explicit_bzero(&privateKey, sizeof(privateKey)); - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - io_seproxyhal_io_heartbeat(); -#ifndef NO_CONSENT - if (p1 == P1_NON_CONFIRM) -#endif // NO_CONSENT - { - *tx = set_result_get_stark_publicKey(); - THROW(0x9000); - } -#ifndef NO_CONSENT - else { - // prepare for a UI based reply - snprintf(strings.tmp.tmp, - sizeof(strings.tmp.tmp), - "0x%.*H", - 32, - tmpCtx.publicKeyContext.publicKey.W + 1); - ui_display_stark_public(); - - *flags |= IO_ASYNCH_REPLY; - } -#endif // NO_CONSENT -} - -#endif diff --git a/src_features/stark_getPublicKey/feature_stark_getPublicKey.h b/src_features/stark_getPublicKey/feature_stark_getPublicKey.h deleted file mode 100644 index 4859722c4..000000000 --- a/src_features/stark_getPublicKey/feature_stark_getPublicKey.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _STARK_GET_PUB_KEY_H_ -#define _STARK_GET_PUB_KEY_H_ - -#include "shared_context.h" - -uint32_t set_result_get_stark_publicKey(void); - -#endif // _STARK_GET_PUB_KEY_H_ diff --git a/src_features/stark_getPublicKey/logic_stark_getPublicKey.c b/src_features/stark_getPublicKey/logic_stark_getPublicKey.c deleted file mode 100644 index 9338cc470..000000000 --- a/src_features/stark_getPublicKey/logic_stark_getPublicKey.c +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include -#include "shared_context.h" -#include "feature_stark_getPublicKey.h" - -uint32_t set_result_get_stark_publicKey() { - uint32_t tx = 0; - memmove(G_io_apdu_buffer + tx, tmpCtx.publicKeyContext.publicKey.W, 65); - tx += 65; - return tx; -} - -#endif // HAVE_STARKWARE diff --git a/src_features/stark_getPublicKey/ui_common_stark_getPublicKey.c b/src_features/stark_getPublicKey/ui_common_stark_getPublicKey.c deleted file mode 100644 index 31b97144f..000000000 --- a/src_features/stark_getPublicKey/ui_common_stark_getPublicKey.c +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "common_ui.h" -#include "feature_stark_getPublicKey.h" - -unsigned int io_seproxyhal_touch_stark_pubkey_ok(__attribute__((unused)) const bagl_element_t *e) { - uint32_t tx = set_result_get_stark_publicKey(); - G_io_apdu_buffer[tx++] = 0x90; - G_io_apdu_buffer[tx++] = 0x00; - reset_app_context(); - // Send back the response, do not restart the event loop - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, tx); - // Display back the original UX - ui_idle(); - return 0; // do not redraw the widget -} - -#endif diff --git a/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c b/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c deleted file mode 100644 index 614669d48..000000000 --- a/src_features/stark_provideQuantum/cmd_stark_provideQuantum.c +++ /dev/null @@ -1,64 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "apdu_constants.h" -#include "common_ui.h" - -void handleStarkwareProvideQuantum(uint8_t p1, - __attribute__((unused)) uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - __attribute__((unused)) unsigned int *flags, - __attribute__((unused)) unsigned int *tx) { - size_t i = 0; - uint8_t expectedDataSize = 20 + 32; - uint8_t addressZero = 0; - tokenDefinition_t *currentToken = NULL; - if (appState != APP_STATE_IDLE) { - reset_app_context(); - } - switch (p1) { - case STARK_QUANTUM_LEGACY: - break; - case STARK_QUANTUM_ETH: - case STARK_QUANTUM_ERC20: - case STARK_QUANTUM_ERC721: - case STARK_QUANTUM_MINTABLE_ERC20: - case STARK_QUANTUM_MINTABLE_ERC721: - expectedDataSize += 32; - break; - default: - THROW(0x6B00); - } - if (dataLength != expectedDataSize) { - THROW(0x6700); - } - if (p1 == STARK_QUANTUM_LEGACY) { - addressZero = allzeroes((void *) dataBuffer, 20); - } - if ((p1 != STARK_QUANTUM_ETH) && !addressZero) { - for (i = 0; i < MAX_ITEMS; i++) { - currentToken = &tmpCtx.transactionContext.extraInfo[i].token; - if (tmpCtx.transactionContext.tokenSet[i] && - (memcmp(currentToken->address, dataBuffer, 20) == 0)) { - break; - } - } - if (i == MAX_ITEMS) { - PRINTF("Associated token not found\n"); - THROW(0x6A80); - } - } else { - i = MAX_ITEMS; - } - memmove(dataContext.tokenContext.quantum, dataBuffer + 20, 32); - if (p1 != STARK_QUANTUM_LEGACY) { - memmove(dataContext.tokenContext.mintingBlob, dataBuffer + 20 + 32, 32); - } - dataContext.tokenContext.quantumIndex = i; - dataContext.tokenContext.quantumType = p1; - quantumSet = true; - THROW(0x9000); -} - -#endif diff --git a/src_features/stark_sign/cmd_stark_sign.c b/src_features/stark_sign/cmd_stark_sign.c deleted file mode 100644 index 7810f779d..000000000 --- a/src_features/stark_sign/cmd_stark_sign.c +++ /dev/null @@ -1,259 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "apdu_constants.h" -#include "stark_utils.h" -#include "poorstream.h" -#include "common_ui.h" -#include "os_io_seproxyhal.h" - -#define U8BE(buf, off) \ - (uint64_t)((((uint64_t) U4BE(buf, off)) << 32) | (((uint64_t) U4BE(buf, off + 4)) & 0xFFFFFFFF)) -#define TMP_OFFSET 140 - -void handleStarkwareSignMessage(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - __attribute__((unused)) unsigned int *tx) { - uint8_t privateKeyData[INT256_LENGTH]; - uint32_t i; - uint8_t bip32PathLength; - uint8_t offset = 1; - cx_ecfp_private_key_t privateKey; - poorstream_t bitstream; - bool selfTransfer = false; - uint8_t order = 1; - uint8_t protocol = 2; - uint8_t preOffset, postOffset; - uint8_t zeroTest; - - // Initial checks - if (appState != APP_STATE_IDLE) { - reset_app_context(); - } - - if (dataLength < 1) { - PRINTF("Invalid data\n"); - THROW(0x6a80); - } - - bip32PathLength = *(dataBuffer); - - if ((bip32PathLength < 0x01) || (bip32PathLength > MAX_BIP32_PATH)) { - PRINTF("Invalid path\n"); - THROW(0x6a80); - } - switch (p1) { - case P1_STARK_ORDER: - protocol = 1; - break; - case P1_STARK_TRANSFER: - protocol = 1; - order = 0; - break; - case P1_STARK_ORDER_V2: - break; - case P1_STARK_TRANSFER_V2: - case P1_STARK_CONDITIONAL_TRANSFER: - order = 0; - break; - default: - THROW(0x6B00); - } - postOffset = (protocol == 2 ? 1 + 32 : 0); - preOffset = (protocol == 2 ? 1 : 0); - if (order) { - if (dataLength != (20 + 32 + 20 + 32 + 4 + 4 + 8 + 8 + 4 + 4 + 1 + 4 * bip32PathLength + - 2 * postOffset)) { - THROW(0x6700); - } - } else { - if (dataLength != (20 + 32 + 32 + 4 + 4 + 8 + 4 + 4 + 1 + 4 * bip32PathLength + postOffset + - (p1 == P1_STARK_CONDITIONAL_TRANSFER ? 32 + 20 : 0))) { - THROW(0x6700); - } - } - if (p2 != 0) { - THROW(0x6B00); - } - tmpCtx.transactionContext.bip32.length = bip32PathLength; - for (i = 0; i < bip32PathLength; i++) { - tmpCtx.transactionContext.bip32.path[i] = U4BE(dataBuffer, offset); - PRINTF("Storing path %d %d\n", i, tmpCtx.transactionContext.bip32.path[i]); - offset += 4; - } - // Discard the path to use part of dataBuffer as a temporary buffer - memmove(dataBuffer, dataBuffer + offset, dataLength - offset); - dataContext.starkContext.conditional = (p1 == P1_STARK_CONDITIONAL_TRANSFER); - if (dataContext.starkContext.conditional) { - memmove(dataContext.starkContext.fact, - dataBuffer + 20 + 32 + postOffset + 32 + 4 + 4 + 8 + 4 + 4, - 32); - memmove(dataContext.starkContext.conditionAddress, - dataBuffer + 20 + 32 + postOffset + 32 + 4 + 4 + 8 + 4 + 4 + 32, - 20); - PRINTF("Fact %.*H\n", 32, dataContext.starkContext.fact); - PRINTF("Address %.*H\n", 20, dataContext.starkContext.conditionAddress); - } - - zeroTest = allzeroes(dataBuffer + preOffset, 20); - if (zeroTest && (protocol == 2) && (dataBuffer[0] != STARK_QUANTUM_ETH)) { - PRINTF("stark - unexpected quantum descriptor type for null first address %d\n", - dataBuffer[0]); - THROW(0x6A80); - } - if (!zeroTest && getKnownToken(dataBuffer + preOffset) == NULL) { - PRINTF("stark - cannot process unknown token %.*H", 20, dataBuffer + preOffset); - THROW(0x6A80); - } - if (order) { - zeroTest = allzeroes(dataBuffer + 20 + 32 + postOffset + preOffset, 20); - if (zeroTest && (protocol == 2) && (dataBuffer[1 + 20 + 32 + 32] != STARK_QUANTUM_ETH)) { - PRINTF("stark - unexpected quantum descriptor type for null second address %d\n", - dataBuffer[1 + 20 + 32 + 32]); - THROW(0x6A80); - } - if (!zeroTest && getKnownToken(dataBuffer + 20 + 32 + postOffset + preOffset) == NULL) { - PRINTF("stark - cannot process unknown token %.*H", - 20, - dataBuffer + 20 + 32 + postOffset + preOffset); - THROW(0x6A80); - } - } - // Prepare the Stark parameters - io_seproxyhal_io_heartbeat(); - compute_token_id(&global_sha3, - dataBuffer + preOffset, - (protocol == 2 ? dataBuffer[0] : STARK_QUANTUM_LEGACY), - dataBuffer + preOffset + 20, - (protocol == 2 ? dataBuffer + 1 + 20 + 32 : NULL), - false, - dataContext.starkContext.w1); - if (order) { - io_seproxyhal_io_heartbeat(); - compute_token_id(&global_sha3, - dataBuffer + 20 + 32 + postOffset + preOffset, - (protocol == 2 ? dataBuffer[1 + 20 + 32 + 32] : STARK_QUANTUM_LEGACY), - dataBuffer + 20 + 32 + postOffset + preOffset + 20, - (protocol == 2 ? dataBuffer + 1 + 20 + 32 + 32 + 1 + 20 + 32 : NULL), - false, - dataContext.starkContext.w2); - offset = 20 + 32 + postOffset + 20 + 32 + postOffset; - } else { - memmove(dataContext.starkContext.w2, dataBuffer + 20 + 32 + postOffset, 32); - offset = 20 + 32 + postOffset + 32; - } - - poorstream_init(&bitstream, dataContext.starkContext.w3); - poorstream_write_bits(&bitstream, 0, 11); // padding - poorstream_write_bits(&bitstream, - (p1 == P1_STARK_CONDITIONAL_TRANSFER ? STARK_CONDITIONAL_TRANSFER_TYPE - : order ? STARK_ORDER_TYPE - : STARK_TRANSFER_TYPE), - 4); - poorstream_write_bits(&bitstream, U4BE(dataBuffer, offset), 31); - poorstream_write_bits(&bitstream, U4BE(dataBuffer, offset + 4), 31); - poorstream_write_bits(&bitstream, U8BE(dataBuffer, offset + 4 + 4), 63); - if (order) { - poorstream_write_bits(&bitstream, U8BE(dataBuffer, offset + 4 + 4 + 8), 63); - offset += 4 + 4 + 8 + 8; - } else { - poorstream_write_bits(&bitstream, 0, 63); - offset += 4 + 4 + 8; - } - poorstream_write_bits(&bitstream, U4BE(dataBuffer, offset), 31); - poorstream_write_bits(&bitstream, U4BE(dataBuffer, offset + 4), 22); - - PRINTF("stark w1 %.*H\n", 32, dataContext.starkContext.w1); - PRINTF("stark w2 %.*H\n", 32, dataContext.starkContext.w2); - PRINTF("stark w3 %.*H\n", 32, dataContext.starkContext.w3); - - if (dataContext.starkContext.conditional) { - cx_keccak_init(&global_sha3, 256); - cx_hash((cx_hash_t *) &global_sha3, - 0, - dataContext.starkContext.conditionAddress, - 20, - NULL, - 0); - cx_hash((cx_hash_t *) &global_sha3, - CX_LAST, - dataContext.starkContext.fact, - 32, - dataContext.starkContext.w4, - 32); - dataContext.starkContext.w4[0] &= 0x03; - PRINTF("stark w4 %.*H\n", 32, dataContext.starkContext.w4); - } - // Prepare the UI - if (order) { - io_seproxyhal_io_heartbeat(); - // amount to sell - stark_get_amount_string(dataBuffer + preOffset, - dataBuffer + preOffset + 20, - dataBuffer + 20 + 32 + postOffset + 20 + 32 + postOffset + 4 + 4, - (char *) (dataBuffer + TMP_OFFSET), - strings.common.fullAmount); - io_seproxyhal_io_heartbeat(); - // amount to buy - stark_get_amount_string( - dataBuffer + 20 + 32 + postOffset + preOffset, - dataBuffer + 20 + 32 + postOffset + preOffset + 20, - dataBuffer + 20 + 32 + postOffset + 20 + 32 + postOffset + 4 + 4 + 8, - (char *) (dataBuffer + TMP_OFFSET), - strings.common.maxFee); - // src vault ID - snprintf(strings.common.fullAddress, - sizeof(strings.common.fullAddress), - "%d", - U4BE(dataBuffer, 20 + 32 + postOffset + 20 + 32 + postOffset)); - } else { - cx_ecfp_public_key_t publicKey; - // Check if the transfer is a self transfer - io_seproxyhal_io_heartbeat(); - starkDerivePrivateKey(tmpCtx.transactionContext.bip32.path, - bip32PathLength, - privateKeyData); - cx_ecfp_init_private_key(CX_CURVE_Stark256, privateKeyData, 32, &privateKey); - io_seproxyhal_io_heartbeat(); - cx_ecfp_generate_pair(CX_CURVE_Stark256, &publicKey, &privateKey, 1); - explicit_bzero(&privateKey, sizeof(privateKey)); - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - io_seproxyhal_io_heartbeat(); - selfTransfer = (memcmp(publicKey.W + 1, dataBuffer + 20 + 32 + postOffset, 32) == 0); - PRINTF("self transfer %d\n", selfTransfer); - io_seproxyhal_io_heartbeat(); - // amount to transfer - stark_get_amount_string(dataBuffer + preOffset, - dataBuffer + preOffset + 20, - dataBuffer + 20 + 32 + postOffset + 32 + 4 + 4, - (char *) (dataBuffer + TMP_OFFSET), - tmpContent.tmp); - // dest vault ID - snprintf(strings.tmp.tmp2, - sizeof(strings.tmp.tmp2), - "%d", - U4BE(dataBuffer, 20 + 32 + postOffset + 32 + 4)); - if (!selfTransfer) { - memmove(dataContext.starkContext.transferDestination, - dataBuffer + 20 + 32 + postOffset, - 32); - snprintf(strings.tmp.tmp, - sizeof(strings.tmp.tmp), - "0x%.*H", - 32, - dataBuffer + 20 + 32 + postOffset); - } - } - if (order) { - ui_stark_limit_order(); - } else { - ui_stark_transfer(selfTransfer, dataContext.starkContext.conditional); - } - - *flags |= IO_ASYNCH_REPLY; -} - -#endif diff --git a/src_features/stark_sign/ui_common_stark_sign.c b/src_features/stark_sign/ui_common_stark_sign.c deleted file mode 100644 index a45f7f918..000000000 --- a/src_features/stark_sign/ui_common_stark_sign.c +++ /dev/null @@ -1,36 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "os_io_seproxyhal.h" -#include "shared_context.h" -#include "stark_utils.h" -#include "common_ui.h" - -unsigned int io_seproxyhal_touch_stark_ok(__attribute__((unused)) const bagl_element_t *e) { - uint8_t privateKeyData[32]; - uint8_t signature[72]; - uint32_t tx = 0; - io_seproxyhal_io_heartbeat(); - starkDerivePrivateKey(tmpCtx.transactionContext.bip32.path, - tmpCtx.transactionContext.bip32.length, - privateKeyData); - io_seproxyhal_io_heartbeat(); - stark_sign(signature, - privateKeyData, - dataContext.starkContext.w1, - dataContext.starkContext.w2, - dataContext.starkContext.w3, - (dataContext.starkContext.conditional ? dataContext.starkContext.w4 : NULL)); - G_io_apdu_buffer[0] = 0; - format_signature_out(signature); - tx = 65; - G_io_apdu_buffer[tx++] = 0x90; - G_io_apdu_buffer[tx++] = 0x00; - reset_app_context(); - // Send back the response, do not restart the event loop - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, tx); - // Display back the original UX - ui_idle(); - return 0; // do not redraw the widget -} - -#endif // HAVE_STARKWARE diff --git a/src_features/stark_unsafe_sign/cmd_stark_unsafe_sign.c b/src_features/stark_unsafe_sign/cmd_stark_unsafe_sign.c deleted file mode 100644 index 314fb22e4..000000000 --- a/src_features/stark_unsafe_sign/cmd_stark_unsafe_sign.c +++ /dev/null @@ -1,55 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "shared_context.h" -#include "apdu_constants.h" -#include "stark_utils.h" -#include "common_ui.h" -#include "os_io_seproxyhal.h" - -void handleStarkwareUnsafeSign(uint8_t p1, - uint8_t p2, - const uint8_t *dataBuffer, - uint8_t dataLength, - unsigned int *flags, - __attribute__((unused)) unsigned int *tx) { - uint8_t privateKeyData[INT256_LENGTH]; - cx_ecfp_public_key_t publicKey; - cx_ecfp_private_key_t privateKey; - - // Initial checks - if (appState != APP_STATE_IDLE) { - reset_app_context(); - } - - if ((p1 != 0) || (p2 != 0)) { - THROW(0x6B00); - } - - dataBuffer = parseBip32(dataBuffer, &dataLength, &tmpCtx.transactionContext.bip32); - - if (dataBuffer == NULL) { - THROW(0x6a80); - } - - if (dataLength != 32) { - THROW(0x6700); - } - - memmove(dataContext.starkContext.w2, dataBuffer, 32); - io_seproxyhal_io_heartbeat(); - starkDerivePrivateKey(tmpCtx.transactionContext.bip32.path, - tmpCtx.transactionContext.bip32.length, - privateKeyData); - cx_ecfp_init_private_key(CX_CURVE_Stark256, privateKeyData, 32, &privateKey); - io_seproxyhal_io_heartbeat(); - cx_ecfp_generate_pair(CX_CURVE_Stark256, &publicKey, &privateKey, 1); - explicit_bzero(&privateKey, sizeof(privateKey)); - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - io_seproxyhal_io_heartbeat(); - memmove(dataContext.starkContext.w1, publicKey.W + 1, 32); - ui_stark_unsafe_sign(); - - *flags |= IO_ASYNCH_REPLY; -} - -#endif diff --git a/src_features/stark_unsafe_sign/ui_common_stark_unsafe_sign.c b/src_features/stark_unsafe_sign/ui_common_stark_unsafe_sign.c deleted file mode 100644 index 4774627b8..000000000 --- a/src_features/stark_unsafe_sign/ui_common_stark_unsafe_sign.c +++ /dev/null @@ -1,42 +0,0 @@ -#ifdef HAVE_STARKWARE - -#include "os_io_seproxyhal.h" -#include "shared_context.h" -#include "stark_utils.h" -#include "common_ui.h" - -unsigned int io_seproxyhal_touch_stark_unsafe_sign_ok(__attribute__((unused)) - const bagl_element_t *e) { - cx_ecfp_private_key_t privateKey; - uint8_t privateKeyData[INT256_LENGTH]; - uint8_t signature[72]; - unsigned int info = 0; - uint32_t tx = 0; - io_seproxyhal_io_heartbeat(); - starkDerivePrivateKey(tmpCtx.transactionContext.bip32.path, - tmpCtx.transactionContext.bip32.length, - privateKeyData); - io_seproxyhal_io_heartbeat(); - cx_ecfp_init_private_key(CX_CURVE_Stark256, privateKeyData, 32, &privateKey); - cx_ecdsa_sign(&privateKey, - CX_RND_RFC6979 | CX_LAST, - CX_SHA256, - dataContext.starkContext.w2, - sizeof(dataContext.starkContext.w2), - signature, - sizeof(signature), - &info); - G_io_apdu_buffer[0] = 0; - format_signature_out(signature); - tx = 65; - G_io_apdu_buffer[tx++] = 0x90; - G_io_apdu_buffer[tx++] = 0x00; - reset_app_context(); - // Send back the response, do not restart the event loop - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, tx); - // Display back the original UX - ui_idle(); - return 0; // do not redraw the widget -} - -#endif // HAVE_STARKWARE diff --git a/src_nbgl/ui_get_stark_public_key.c b/src_nbgl/ui_get_stark_public_key.c deleted file mode 100644 index ce5778750..000000000 --- a/src_nbgl/ui_get_stark_public_key.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include "shared_context.h" -#include "ui_callbacks.h" -#include "ui_nbgl.h" - -static void reviewReject(void) { - io_seproxyhal_touch_address_cancel(NULL); -} - -static void confirmTransation(void) { - io_seproxyhal_touch_stark_pubkey_ok(NULL); -} - -static void reviewChoice(bool confirm) { - if (confirm) { - // display a status page and go back to main - nbgl_useCaseStatus("ADDRESS\nVERIFIED", true, confirmTransation); - } else { - nbgl_useCaseStatus("Address verification\ncancelled", false, reviewReject); - } -} - -static void buildScreen(void) { - nbgl_useCaseAddressConfirmation(strings.tmp.tmp, reviewChoice); -} - -void ui_display_stark_public(void) { - buildScreen(); -} \ No newline at end of file diff --git a/src_nbgl/ui_stark_limit_order.c b/src_nbgl/ui_stark_limit_order.c deleted file mode 100644 index 89cfdbf83..000000000 --- a/src_nbgl/ui_stark_limit_order.c +++ /dev/null @@ -1,68 +0,0 @@ -#include "common_ui.h" -#include "ui_signing.h" -#include "ui_nbgl.h" -#include "ui_callbacks.h" -#include "nbgl_use_case.h" -#include "network.h" - -#ifdef HAVE_STARKWARE - -static nbgl_layoutTagValue_t pairs[3]; - -static void reviewReject(void) { - io_seproxyhal_touch_tx_cancel(NULL); -} - -static void confirmTransation(void) { - io_seproxyhal_touch_stark_ok(NULL); -} - -static void reviewChoice(bool confirm) { - if (confirm) { - confirmTransation(); - } else { - reviewReject(); - } -} - -static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { - if (page == 0) { - pairs[0].item = "Sell"; - pairs[0].value = strings.common.fullAmount; - pairs[1].item = "Buy"; - pairs[1].value = strings.common.maxFee; - pairs[2].item = "Token Account"; - pairs[2].value = strings.common.fullAddress; - - content->type = TAG_VALUE_LIST; - content->tagValueList.nbPairs = 3; - content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; - } else if (page == 1) { - content->type = INFO_LONG_PRESS, content->infoLongPress.icon = get_app_icon(false); - content->infoLongPress.text = "Review stark limit order"; - content->infoLongPress.longPressText = SIGN_BUTTON; - } else { - return false; - } - // valid page so return true - return true; -} - -static void reviewContinue(void) { - nbgl_useCaseRegularReview(0, 2, REJECT_BUTTON, NULL, displayTransactionPage, reviewChoice); -} - -static void buildFirstPage(void) { - nbgl_useCaseReviewStart(get_app_icon(false), - "Review stark limit order", - NULL, - REJECT_BUTTON, - reviewContinue, - reviewReject); -} - -void ui_stark_limit_order(void) { - buildFirstPage(); -} - -#endif diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c deleted file mode 100644 index 40dca2307..000000000 --- a/src_nbgl/ui_stark_transfer.c +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include "shared_context.h" -#include "ui_callbacks.h" -#include "ui_nbgl.h" -#include "ui_signing.h" -#include "starkDisplayUtils.h" -#include "network.h" - -#ifdef HAVE_STARKWARE - -static nbgl_layoutTagValue_t pairs[3]; -static char condAddressBuffer[43]; -struct stark_transfer_context { - bool selfTransfer; - bool conditional; -}; - -static struct stark_transfer_context context; - -static void reviewReject(void) { - io_seproxyhal_touch_tx_cancel(NULL); -} - -static void confirmTransation(void) { - io_seproxyhal_touch_stark_ok(NULL); -} - -static void reviewChoice(bool confirm) { - if (confirm) { - confirmTransation(); - } else { - reviewReject(); - } -} - -static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { - uint8_t count = 0; - if (page == 0) { - pairs[count].item = "Amount"; - pairs[count].value = tmpContent.tmp; - count++; - - if (context.selfTransfer == false && context.conditional == false) { - pairs[count].item = "Master Account"; - pairs[count].value = strings.tmp.tmp; - count++; - } - if (context.conditional) { - stark_sign_display_master_account(); - pairs[count].item = "Master Account"; - pairs[count].value = strings.tmp.tmp; - count++; - } - - pairs[count].item = "Token Account"; - pairs[count].value = strings.tmp.tmp2; - count++; - - content->type = TAG_VALUE_LIST; - content->tagValueList.nbPairs = count; - content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; - - return true; - } - if (page == 1) { - if (context.conditional) { - if (!getEthDisplayableAddress(dataContext.starkContext.conditionAddress, - condAddressBuffer, - sizeof(condAddressBuffer), - &global_sha3, - chainConfig->chainId)) { - return false; - } - pairs[0].item = "Cond. Address"; - pairs[0].value = condAddressBuffer; - - stark_sign_display_condition_fact(); - pairs[1].item = "Cond. Address"; - pairs[1].value = strings.tmp.tmp; - - content->type = TAG_VALUE_LIST; - content->tagValueList.nbPairs = 2; - content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; - - return true; - } else { - page++; - } - } - if (page == 2) { - content->type = INFO_LONG_PRESS, content->infoLongPress.icon = get_app_icon(false); - content->infoLongPress.text = "Review transaction"; - content->infoLongPress.longPressText = SIGN_BUTTON; - return true; - } - - return false; -} - -static void reviewContinue(void) { - nbgl_useCaseRegularReview(0, - context.conditional ? 3 : 2, - REJECT_BUTTON, - NULL, - displayTransactionPage, - reviewChoice); -} - -void ui_stark_transfer(bool selfTransfer, bool conditional) { - context.selfTransfer = selfTransfer; - context.conditional = conditional; - char *subTitle; - if (conditional) { - if (selfTransfer) { - subTitle = (char *) "Conditional Self Transfer"; - } else { - subTitle = (char *) "Conditional Transfer"; - } - } else { - if (selfTransfer) { - subTitle = (char *) "Self Transfer"; - } else { - subTitle = (char *) "Transfer"; - } - } - nbgl_useCaseReviewStart(get_app_icon(false), - "Review stark\ntransaction", - subTitle, - REJECT_BUTTON, - reviewContinue, - reviewReject); -} - -#endif // #ifdef HAVE_STARKWARE diff --git a/src_nbgl/ui_stark_unsafe_sign.c b/src_nbgl/ui_stark_unsafe_sign.c deleted file mode 100644 index 45a8556db..000000000 --- a/src_nbgl/ui_stark_unsafe_sign.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "common_ui.h" -#include "ui_signing.h" -#include "ui_nbgl.h" -#include "ui_callbacks.h" -#include "nbgl_use_case.h" -#include "network.h" - -#ifdef HAVE_STARKWARE - -static nbgl_layoutTagValue_t pairs[2]; -static char from_account[64]; -static char message_hash[64]; - -static void reviewReject(void) { - io_seproxyhal_touch_tx_cancel(NULL); -} - -static void confirmTransation(void) { - io_seproxyhal_touch_stark_unsafe_sign_ok(NULL); -} - -static void reviewChoice(bool confirm) { - if (confirm) { - confirmTransation(); - } else { - reviewReject(); - } -} - -static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { - snprintf(from_account, sizeof(from_account), "0x%.*H", 32, dataContext.starkContext.w1); - snprintf(message_hash, sizeof(message_hash), "0x%.*H", 32, dataContext.starkContext.w2); - - if (page == 0) { - pairs[0].item = "From Account"; - pairs[0].value = from_account; - pairs[1].item = "Hash"; - pairs[1].value = message_hash; - content->type = TAG_VALUE_LIST; - content->tagValueList.nbPairs = 2; - content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; - } else if (page == 1) { - content->type = INFO_LONG_PRESS, content->infoLongPress.icon = get_app_icon(false); - content->infoLongPress.text = "Unsafe Stark Sign"; - content->infoLongPress.longPressText = SIGN_BUTTON; - } else { - return false; - } - // valid page so return true - return true; -} - -static void reviewContinue(void) { - nbgl_useCaseRegularReview(0, 2, REJECT_BUTTON, NULL, displayTransactionPage, reviewChoice); -} - -static void buildFirstPage(void) { - nbgl_useCaseReviewStart(get_app_icon(false), - "Unsafe Stark Sign", - NULL, - REJECT_BUTTON, - reviewContinue, - reviewReject); -} - -void ui_stark_unsafe_sign(void) { - buildFirstPage(); -} - -#endif // HAVE_STARKWARE diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index 5e40f0d8c..e5b1ba008 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -73,23 +73,6 @@ bool check_contract(erc20_parameters_t *context) { return false; } -bool erc20_plugin_available_check() { -#ifdef HAVE_STARKWARE - if (quantumSet) { - switch (dataContext.tokenContext.quantumType) { - case STARK_QUANTUM_LEGACY: - case STARK_QUANTUM_ETH: - case STARK_QUANTUM_ERC20: - case STARK_QUANTUM_MINTABLE_ERC20: - return true; - default: - return false; - } - } -#endif - return true; -} - void erc20_plugin_call(int message, void *parameters) { switch (message) { case ETH_PLUGIN_INIT_CONTRACT: { diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c deleted file mode 100644 index 427fca7f4..000000000 --- a/src_plugins/starkware/starkware_plugin.c +++ /dev/null @@ -1,944 +0,0 @@ -#include -#include "os_io_seproxyhal.h" -#include "uint256.h" -#include "eth_plugin_interface.h" -#include "shared_context.h" // TODO : rewrite as independant code -#include "eth_plugin_internal.h" // TODO : rewrite as independant code -#include "stark_utils.h" -#include "plugin_utils.h" -#include "common_utils.h" -#include "apdu_constants.h" - -#ifdef HAVE_STARKWARE - -typedef enum { - - STARKWARE_REGISTER = 0, - STARKWARE_DEPOSIT_TOKEN, - STARKWARE_DEPOSIT_ETH, - STARKWARE_DEPOSIT_CANCEL, - STARKWARE_DEPOSIT_RECLAIM, - STARKWARE_WITHDRAW, - STARKWARE_FULL_WITHDRAW, - STARKWARE_FREEZE, - STARKWARE_ESCAPE, - STARKWARE_VERIFY_ESCAPE, - STARKWARE_WITHDRAW_TO, - STARKWARE_DEPOSIT_NFT, - STARKWARE_DEPOSIT_NFT_RECLAIM, - STARKWARE_WITHDRAW_AND_MINT, - STARKWARE_WITHDRAW_NFT, - STARKWARE_WITHDRAW_NFT_TO, - STARKWARE_REGISTER_AND_DEPOSIT_TOKEN, - STARKWARE_REGISTER_AND_DEPOSIT_ETH, - STARKWARE_PROXY_DEPOSIT_TOKEN, - STARKWARE_PROXY_DEPOSIT_ETH, -} starkwareSelector_t; - -#ifndef HAVE_TOKENS_EXTRA_LIST - -static const uint8_t DEVERSIFI_CONTRACT[] = { - 0x02, - - 0x5d, 0x22, 0x04, 0x5d, 0xac, 0xea, 0xb0, 0x3b, 0x15, 0x80, - 0x31, 0xec, 0xb7, 0xd9, 0xd0, 0x6f, 0xad, 0x24, 0x60, 0x9b, - - 0x7d, 0xe1, 0xf0, 0x42, 0x04, 0xef, 0x29, 0x22, 0x9d, 0x84, - 0xe7, 0xc0, 0xc2, 0xd1, 0x21, 0x6c, 0x28, 0x64, 0x5a, 0x15}; - -#else - -static const uint8_t DEVERSIFI_CONTRACT[] = { - 0x02, 0xe7, 0x3a, 0x39, 0x4a, 0xde, 0x4d, 0x94, 0xa0, 0x73, 0x50, 0x2d, 0xa8, 0x70, - 0x3e, 0xa2, 0x34, 0x90, 0xdc, 0x7b, 0x6a, 0x69, 0xC6, 0x39, 0x2E, 0xb0, 0x2a, 0x28, - 0x82, 0x31, 0x41, 0x34, 0xc9, 0x8D, 0xDC, 0xBF, 0x73, 0xB7, 0xAd, 0xBa, 0xb1}; - -#endif - -// register : address (20), stark key (32), drop param 3 -// Registration -// Contract Name -// From ETH address -// Master account -// deposit token : stark key (32), verify assetType (32), vaultId (4), quantized Amount (32) -// Deposit -// Contract Name -// Master Account -// Token Account -// Amount -// deposit : stark key (32), verify assetType (32), vaultId (4) -// Flow similar to deposit -// deposit cancel, deposit reclaim : stark key (32), assetType (reclaim) / assetId (cancel) (32) -// ignored, vaultId(4) full withdrawal, freeze : stark key (32), vaultId (4) Cancel Deposit | -// Reclaim Deposit | Full Withdrawal | Freeze Contract Name Master Account Token Account -// withdrawal : stark key (32), verify assetType (32) -// Withdrawal -// Contract Name -// Master Account -// To Eth Address -// Token Symbol -// withdrawal to : stark key (32), verify assetType (32), address (20) -// Withdrawal To -// Contract Name -// Master Account -// To Eth Address -// Token Symbol -// escape : stark key (32), vaultId (4), verify assetType (32), quantized Amount (32) -// Escape -// Contract Name -// Amount -// Master Account -// Token Account -// verify escape : escapeProof (ignore) -// Verify Escape -// Contract Name -// deposit NFT : stark key (32), verify assetType (32), vault id (4), token id (32) -// Deposit -// Contract Name -// Master Account -// Token Account -// NFT Contract -// Token ID -// deposit NFT reclaim : stark key (32), verify assetType (32), vault id (4), token id (32) -// Reclaim Deposit -// Contract Name -// Master Account -// Token Account -// NFT Contract -// Token ID -// withdraw and mint : stark key (32), verify assetType (32), mintable blob (ignored variable) -// Withdrawal -// Contract Name -// Master Account -// Asset Contract -// withdraw NFT : stark key (32), verify assetType (32), token id (32) -// Withdrawal -// Contract Name -// Master Account -// To Eth Address -// NFT Contract -// Token ID -// withdraw NFT To : stark key (32), verify assetType (32), token id (32), address (20) -// Withdrawal To -// Contract Name -// Master Account -// To Eth Address -// NFT Contract -// Token ID -// register and deposit token : stark key (32), variable signature, verify assetType (32), vault Id -// (4), quantized amount (32), token address (20), quantum (32) Register and deposit Contract Name -// From ETH address -// Master account -// Token Account -// Amount -// register and deposit : stark key (32), variable signature, verify assetType (32), vault Id (4) -// flow similar to register and deposit -// deposit token proxy : stark key (32), verify assetType (32), vault Id (4), quantized Amount (32), -// token address (20), quantum (32) flow similar to deposit deposit proxy : stark key (32), verify -// assetType (32), vault Id (4) flow similar to deposit - -static const uint8_t STARKWARE_EXPECTED_DATA_SIZE[] = {0, - 4 + 32 + 32 + 32 + 32, - 4 + 32 + 32 + 32, - 4 + 32 + 32 + 32, - 4 + 32 + 32 + 32, - 4 + 32 + 32, - 4 + 32 + 32, - 4 + 32 + 32, - 4 + 32 + 32 + 32 + 32, - 0, - 4 + 32 + 32 + 32, - 4 + 32 + 32 + 32 + 32, - 4 + 32 + 32 + 32 + 32, - 0, - 4 + 32 + 32 + 32, - 4 + 32 + 32 + 32 + 32, - 0, - 0, - 4 + 32 + 32 + 32 + 32 + 32 + 32, - 4 + 32 + 32 + 32}; - -static const uint8_t STARKWARE_NUM_SCREENS[] = {4 - 1, 5 - 1, 5 - 1, 4 - 1, 4 - 1, 5 - 1, 4 - 1, - 4 - 1, 5 - 1, 2 - 1, 5 - 1, 6 - 1, 6 - 1, 4 - 1, - 6 - 1, 6 - 1, 6 - 1, 6 - 1, 5 - 1, 5 - 1}; - -typedef struct starkware_parameters_t { - uint8_t vaultId[4]; - uint8_t selectorIndex; - uint8_t starkKey[32]; - uint8_t amount[32]; - uint8_t validToken; - -} starkware_parameters_t; - -#define STARK_KEY_LENGTH (2 + length * 2 + 1) -#define VAULT_ID_LENGTH 10 - -bool is_deversify_contract(const uint8_t *address) { - uint32_t offset = 0; - uint8_t i; - - for (i = 0; i < DEVERSIFI_CONTRACT[0]; i++) { - if (memcmp(address, DEVERSIFI_CONTRACT + offset + 1, 20) == 0) { - return true; - } - offset += 20; - } - return false; -} - -// TODO : rewrite as independant code -bool starkware_verify_asset_id(uint8_t *tmp32, const uint8_t *tokenId, bool assetTypeOnly) { - if (quantumSet) { - cx_sha3_t sha3; - tokenDefinition_t *currentToken = NULL; - if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { - currentToken = - &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - } - cx_keccak_init(&sha3, 256); - compute_token_id(&sha3, - (currentToken != NULL ? currentToken->address : NULL), - dataContext.tokenContext.quantumType, - dataContext.tokenContext.quantum, - dataContext.tokenContext.mintingBlob, - assetTypeOnly, - tmp32); - if (memcmp(tokenId, tmp32, 32) != 0) { - PRINTF("Token ID not matching - computed %.*H\n", 32, tmp32); - PRINTF("Current quantum %.*H\n", 32, dataContext.tokenContext.quantum); - PRINTF("Requested %.*H\n", 32, tokenId); - return false; - } - } else { - PRINTF("Quantum not set\n"); - return false; - } - return true; -} - -bool starkware_verify_token(const uint8_t *token) { - if (quantumSet) { - if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { - tokenDefinition_t *currentToken = - &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - if (memcmp(token + 32 - 20, currentToken->address, 20) != 0) { - PRINTF("Token not matching got %.*H\n", 20, token + 32 - 20); - PRINTF("Current token %.*H\n", 20, currentToken->address); - return false; - } - } else { - PRINTF("Quantum not set\n"); - return false; - } - } else { - PRINTF("Quantum not set\n"); - return false; - } - return true; -} - -bool starkware_verify_quantum(const uint8_t *quantum) { - if (quantumSet) { - if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { - if (memcmp(quantum, dataContext.tokenContext.quantum, 32) != 0) { - PRINTF("Quantum not matching got %.*H\n", 32, quantum); - PRINTF("Current quantum %.*H\n", 32, dataContext.tokenContext.quantum); - return false; - } - } else { - PRINTF("Quantum not set\n"); - return false; - } - } else { - PRINTF("Quantum not set\n"); - return false; - } - return true; -} - -bool starkware_verify_nft_token_id(const uint8_t *tokenId) { - if (!quantumSet) { - PRINTF("Quantum not set\n"); - return false; - } - switch (dataContext.tokenContext.quantumType) { - case STARK_QUANTUM_ERC721: - case STARK_QUANTUM_MINTABLE_ERC721: - break; - default: - PRINTF("Unexpected quantum type for NFT token id check %d\n", - dataContext.tokenContext.quantumType); - return false; - } - if (memcmp(dataContext.tokenContext.quantum, tokenId, 32) != 0) { - PRINTF("Token ID not matching - expected %.*H\n", 32, dataContext.tokenContext.quantum); - PRINTF("Current token ID %.*H\n", 32, tokenId); - return false; - } - return true; -} - -void starkware_print_vault_id(uint32_t vaultId, char *destination, size_t max_length) { - if (VAULT_ID_LENGTH > max_length) { - os_sched_exit(EXCEPTION_OVERFLOW); - } - snprintf(destination, max_length, "%d", vaultId); -} - -void starkware_print_stark_key(uint8_t *starkKey, - size_t length, - char *destination, - size_t max_length) { - if (STARK_KEY_LENGTH > max_length) { - os_sched_exit(EXCEPTION_OVERFLOW); - } - snprintf(destination, max_length, "0x%.*H", length, starkKey); -} - -// TODO : rewrite as independant code -void starkware_print_amount(uint8_t *amountData, - char *destination, - size_t destinationLength, - bool forEscape) { - uint256_t amount, amountPre, quantum; - uint8_t decimals; - char *ticker = chainConfig->coinName; - - if ((amountData == NULL) || - (forEscape && (dataContext.tokenContext.quantumIndex == MAX_ITEMS))) { - decimals = WEI_TO_ETHER; - if (!forEscape) { - convertUint256BE(tmpContent.txContent.value.value, - tmpContent.txContent.value.length, - &amount); - } else { - readu256BE(amountData, &amountPre); - } - } else { - tokenDefinition_t *token = - &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - decimals = token->decimals; - ticker = token->ticker; - readu256BE(amountData, &amountPre); - } - if (amountData != NULL) { - readu256BE(dataContext.tokenContext.quantum, &quantum); - mul256(&amountPre, &quantum, &amount); - } - tostring256(&amount, 10, (char *) (G_io_apdu_buffer + 100), 100); - strlcpy(destination, ticker, destinationLength); - strlcat(destination, " ", destinationLength); - adjustDecimals((char *) (G_io_apdu_buffer + 100), - strlen((char *) (G_io_apdu_buffer + 100)), - destination + strlen(ticker) + 1, - destinationLength - strlen(ticker) - 1, - decimals); -} - -// TODO : rewrite as independant code -void starkware_print_ticker(char *destination, size_t destinationLength) { - char *ticker = chainConfig->coinName; - - if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { - tokenDefinition_t *token = - &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - ticker = token->ticker; - } - strlcpy(destination, ticker, destinationLength); -} - -// TODO : rewrite as independant code -void starkware_print_asset_contract(char *destination, size_t destinationLength) { - // token has been validated to be present previously - if (dataContext.tokenContext.quantumIndex != MAX_ITEMS) { - tokenDefinition_t *token = - &tmpCtx.transactionContext.extraInfo[dataContext.tokenContext.quantumIndex].token; - if (!getEthDisplayableAddress(token->address, - destination, - destinationLength, - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); - } - } else { - strlcpy(destination, "UNKNOWN", destinationLength); - } -} - -// TODO : rewrite as independant code -void starkware_get_source_address(char *destination) { - uint8_t privateKeyData[INT256_LENGTH]; - cx_ecfp_private_key_t privateKey; - cx_ecfp_public_key_t publicKey; - os_perso_derive_node_bip32(CX_CURVE_256K1, - tmpCtx.transactionContext.bip32.path, - tmpCtx.transactionContext.bip32.length, - privateKeyData, - NULL); - cx_ecfp_init_private_key(CX_CURVE_256K1, privateKeyData, 32, &privateKey); - io_seproxyhal_io_heartbeat(); - cx_ecfp_generate_pair(CX_CURVE_256K1, &publicKey, &privateKey, 1); - explicit_bzero(&privateKey, sizeof(privateKey)); - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - io_seproxyhal_io_heartbeat(); - destination[0] = '0'; - destination[1] = 'x'; - if (!getEthAddressStringFromKey(&publicKey, - destination + 2, - &global_sha3, - chainConfig->chainId)) { - THROW(CX_INVALID_PARAMETER); - } - destination[42] = '\0'; -} - -void starkware_plugin_call(int message, void *parameters) { - switch (message) { - case ETH_PLUGIN_INIT_CONTRACT: { - uint8_t i; - ethPluginInitContract_t *msg = (ethPluginInitContract_t *) parameters; - starkware_parameters_t *context = (starkware_parameters_t *) msg->pluginContext; - PRINTF("starkware plugin init\n"); - for (i = 0; i < NUM_STARKWARE_SELECTORS; i++) { - if (memcmp((const void *) PIC(STARKWARE_SELECTORS[i]), - msg->selector, - SELECTOR_SIZE) == 0) { - context->selectorIndex = i; - break; - } - } - if (i == NUM_STARKWARE_SELECTORS) { - PRINTF("Unknown selector %.*H\n", SELECTOR_SIZE, msg->selector); - break; - } - if (STARKWARE_EXPECTED_DATA_SIZE[context->selectorIndex] != 0) { - if (msg->dataSize != STARKWARE_EXPECTED_DATA_SIZE[context->selectorIndex]) { - PRINTF("Unexpected data size for command %d expected %d got %d\n", - context->selectorIndex, - STARKWARE_EXPECTED_DATA_SIZE[context->selectorIndex], - msg->dataSize); - break; - } - } - context->validToken = true; - msg->result = ETH_PLUGIN_RESULT_OK; - } break; - - case ETH_PLUGIN_PROVIDE_PARAMETER: { - ethPluginProvideParameter_t *msg = (ethPluginProvideParameter_t *) parameters; - starkware_parameters_t *context = (starkware_parameters_t *) msg->pluginContext; - PRINTF("starkware plugin provide parameter %d %.*H\n", - msg->parameterOffset, - 32, - msg->parameter); - // Ignore for verify escape - if (context->selectorIndex == STARKWARE_VERIFY_ESCAPE) { - msg->result = ETH_PLUGIN_RESULT_OK; - break; - } - switch (msg->parameterOffset) { - case 4: - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - memmove(context->amount, msg->parameter + 32 - 20, 20); - break; - - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_CANCEL: - case STARKWARE_DEPOSIT_RECLAIM: - case STARKWARE_WITHDRAW: - case STARKWARE_FULL_WITHDRAW: - case STARKWARE_FREEZE: - case STARKWARE_ESCAPE: - case STARKWARE_WITHDRAW_TO: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - case STARKWARE_WITHDRAW_AND_MINT: - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - memmove(context->starkKey, msg->parameter, 32); - break; - - default: - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32: - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - memmove(context->starkKey, msg->parameter, 32); - break; - - case STARKWARE_ESCAPE: - memmove(context->vaultId, msg->parameter + 32 - 4, 4); - break; - - case STARKWARE_DEPOSIT_CANCEL: - case STARKWARE_DEPOSIT_RECLAIM: - break; - - case STARKWARE_FULL_WITHDRAW: - case STARKWARE_FREEZE: - memmove(context->vaultId, msg->parameter + 32 - 4, 4); - break; - - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_WITHDRAW: - case STARKWARE_WITHDRAW_TO: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - case STARKWARE_WITHDRAW_AND_MINT: - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - context->validToken = - starkware_verify_asset_id(context->amount, msg->parameter, true); - break; - - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - // drop variable byte array signature offset - break; - - default: - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32 + 32: - switch (context->selectorIndex) { - case STARKWARE_ESCAPE: - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - context->validToken = - starkware_verify_asset_id(context->amount, msg->parameter, true); - break; - - case STARKWARE_DEPOSIT_CANCEL: - case STARKWARE_DEPOSIT_RECLAIM: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - memmove(context->vaultId, msg->parameter + 32 - 4, 4); - break; - - case STARKWARE_WITHDRAW_TO: - memmove(context->amount, msg->parameter + 32 - 20, 20); - break; - - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - context->validToken = starkware_verify_nft_token_id(msg->parameter); - break; - - default: - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32 + 32 + 32: - switch (context->selectorIndex) { - case STARKWARE_ESCAPE: - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - memmove(context->amount, msg->parameter, 32); - break; - - case STARKWARE_WITHDRAW_NFT_TO: - memmove(context->amount, msg->parameter + 32 - 20, 20); - break; - - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - context->validToken = starkware_verify_nft_token_id(msg->parameter); - break; - - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - memmove(context->vaultId, msg->parameter + 32 - 4, 4); - break; - - default: - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32 + 32 + 32 + 32: - switch (context->selectorIndex) { - switch (context->selectorIndex) { - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - memmove(context->amount, msg->parameter, 32); - break; - - case STARKWARE_PROXY_DEPOSIT_TOKEN: - context->validToken = starkware_verify_token(msg->parameter); - break; - - default: - break; - } - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32 + 32 + 32 + 32 + 32: - switch (context->selectorIndex) { - switch (context->selectorIndex) { - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - context->validToken = starkware_verify_token(msg->parameter); - break; - - case STARKWARE_PROXY_DEPOSIT_TOKEN: - context->validToken = starkware_verify_quantum(msg->parameter); - break; - - default: - break; - } - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4 + 32 + 32 + 32 + 32 + 32 + 32: - switch (context->selectorIndex) { - switch (context->selectorIndex) { - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - context->validToken = starkware_verify_quantum(msg->parameter); - break; - - default: - break; - } - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - default: - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - case STARKWARE_VERIFY_ESCAPE: - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - default: - PRINTF("Unhandled parameter offset\n"); - break; - } - } - } break; - - case ETH_PLUGIN_FINALIZE: { - ethPluginFinalize_t *msg = (ethPluginFinalize_t *) parameters; - starkware_parameters_t *context = (starkware_parameters_t *) msg->pluginContext; - PRINTF("starkware plugin finalize\n"); - if (!context->validToken) { - msg->result = ETH_PLUGIN_RESULT_FALLBACK; - } else { - msg->uiType = ETH_UI_TYPE_GENERIC; - msg->numScreens = STARKWARE_NUM_SCREENS[context->selectorIndex]; - msg->result = ETH_PLUGIN_RESULT_OK; - } - } break; - - case ETH_PLUGIN_QUERY_CONTRACT_ID: { - ethQueryContractID_t *msg = (ethQueryContractID_t *) parameters; - starkware_parameters_t *context = (starkware_parameters_t *) msg->pluginContext; - PRINTF("starkware query contract id\n"); - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - strlcpy(msg->name, "Register", msg->nameLength); - break; - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - strlcpy(msg->name, "Deposit", msg->nameLength); - break; - case STARKWARE_DEPOSIT_CANCEL: - strlcpy(msg->name, "Cancel Deposit", msg->nameLength); - break; - case STARKWARE_DEPOSIT_RECLAIM: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - strlcpy(msg->name, "Reclaim Deposit", msg->nameLength); - break; - case STARKWARE_WITHDRAW: - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_AND_MINT: - strlcpy(msg->name, "Withdrawal", msg->nameLength); - break; - case STARKWARE_FULL_WITHDRAW: - strlcpy(msg->name, "Full Withdrawal", msg->nameLength); - break; - case STARKWARE_FREEZE: - strlcpy(msg->name, "Freeze", msg->nameLength); - break; - case STARKWARE_ESCAPE: - strlcpy(msg->name, "Escape", msg->nameLength); - break; - case STARKWARE_VERIFY_ESCAPE: - strlcpy(msg->name, "Verify Escape", msg->nameLength); - break; - case STARKWARE_WITHDRAW_TO: - case STARKWARE_WITHDRAW_NFT_TO: - strlcpy(msg->name, "Withdrawal To", msg->nameLength); - break; - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - strlcpy(msg->name, "Register&Deposit", msg->nameLength); - break; - - default: - break; - } - strlcpy( - msg->version, - is_deversify_contract(tmpContent.txContent.destination) ? "DeversiFi" : "Starkware", - msg->versionLength); - msg->result = ETH_PLUGIN_RESULT_OK; - } break; - - case ETH_PLUGIN_QUERY_CONTRACT_UI: { - ethQueryContractUI_t *msg = (ethQueryContractUI_t *) parameters; - starkware_parameters_t *context = (starkware_parameters_t *) msg->pluginContext; - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "Contract Name", msg->titleLength); - if (is_deversify_contract(tmpContent.txContent.destination)) { - strlcpy(msg->msg, "DeversiFi", msg->msgLength); - } else { - if (!getEthDisplayableAddress(tmpContent.txContent.destination, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); - } - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case 1: - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - strlcpy(msg->title, "From ETH Address", msg->titleLength); - if (!getEthDisplayableAddress(context->amount, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); - } - break; - case STARKWARE_ESCAPE: - strlcpy(msg->title, "Amount", msg->titleLength); - starkware_print_amount(context->amount, msg->msg, msg->msgLength, true); - break; - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_CANCEL: - case STARKWARE_DEPOSIT_RECLAIM: - case STARKWARE_WITHDRAW: - case STARKWARE_FULL_WITHDRAW: - case STARKWARE_FREEZE: - case STARKWARE_VERIFY_ESCAPE: - case STARKWARE_WITHDRAW_TO: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - case STARKWARE_WITHDRAW_AND_MINT: - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - strlcpy(msg->title, "Master Account", msg->titleLength); - starkware_print_stark_key(context->starkKey, - sizeof(context->starkKey), - msg->msg, - msg->msgLength); - break; - default: - PRINTF("Unexpected screen %d for %d\n", - msg->screenIndex, - context->selectorIndex); - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case 2: - switch (context->selectorIndex) { - case STARKWARE_REGISTER: - case STARKWARE_ESCAPE: - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - strlcpy(msg->title, "Master Account", msg->titleLength); - starkware_print_stark_key(context->starkKey, - sizeof(context->starkKey), - msg->msg, - msg->msgLength); - break; - - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - case STARKWARE_DEPOSIT_CANCEL: - case STARKWARE_DEPOSIT_RECLAIM: - case STARKWARE_FULL_WITHDRAW: - case STARKWARE_FREEZE: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), - msg->msg, - msg->msgLength); - break; - case STARKWARE_WITHDRAW: - case STARKWARE_WITHDRAW_NFT: - strlcpy(msg->title, "To ETH Address", msg->titleLength); - starkware_get_source_address(msg->msg); - break; - case STARKWARE_WITHDRAW_TO: - case STARKWARE_WITHDRAW_NFT_TO: - strlcpy(msg->title, "To ETH Address", msg->titleLength); - if (!getEthDisplayableAddress(context->amount, - msg->msg, - msg->msgLength, - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); - } - break; - case STARKWARE_WITHDRAW_AND_MINT: - strlcpy(msg->title, "Asset Contract", msg->titleLength); - starkware_print_asset_contract(msg->msg, msg->msgLength); - break; - - default: - PRINTF("Unexpected screen %d for %d\n", - msg->screenIndex, - context->selectorIndex); - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 3: - switch (context->selectorIndex) { - case STARKWARE_ESCAPE: - strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), - msg->msg, - msg->msgLength); - break; - case STARKWARE_DEPOSIT_TOKEN: - case STARKWARE_DEPOSIT_ETH: - case STARKWARE_PROXY_DEPOSIT_TOKEN: - case STARKWARE_PROXY_DEPOSIT_ETH: - strlcpy(msg->title, "Amount", msg->titleLength); - starkware_print_amount( - (((context->selectorIndex == STARKWARE_DEPOSIT_ETH) || - (context->selectorIndex == STARKWARE_PROXY_DEPOSIT_ETH)) - ? NULL - : context->amount), - msg->msg, - msg->msgLength, - false); - break; - case STARKWARE_WITHDRAW: - case STARKWARE_WITHDRAW_TO: - strlcpy(msg->title, "Token Symbol", msg->titleLength); - starkware_print_ticker(msg->msg, msg->msgLength); - break; - - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - strlcpy(msg->title, "NFT Contract", msg->titleLength); - starkware_print_asset_contract(msg->msg, msg->msgLength); - break; - - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), - msg->msg, - msg->msgLength); - break; - - default: - PRINTF("Unexpected screen %d for %d\n", - msg->screenIndex, - context->selectorIndex); - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case 4: - switch (context->selectorIndex) { - case STARKWARE_WITHDRAW_NFT: - case STARKWARE_WITHDRAW_NFT_TO: - case STARKWARE_DEPOSIT_NFT: - case STARKWARE_DEPOSIT_NFT_RECLAIM: - strlcpy(msg->title, "TokenID", msg->titleLength); - starkware_print_stark_key(dataContext.tokenContext.quantum, - sizeof(dataContext.tokenContext.quantum), - msg->msg, - msg->msgLength); - break; - - case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: - case STARKWARE_REGISTER_AND_DEPOSIT_ETH: - strlcpy(msg->title, "Amount", msg->titleLength); - starkware_print_amount( - ((context->selectorIndex == STARKWARE_REGISTER_AND_DEPOSIT_ETH) - ? NULL - : context->amount), - msg->msg, - msg->msgLength, - false); - break; - - default: - PRINTF("Unexpected screen %d for %d\n", - msg->screenIndex, - context->selectorIndex); - break; - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - default: - PRINTF("Unexpected screen %d for %d\n", - msg->screenIndex, - context->selectorIndex); - break; - } - } break; - - default: - PRINTF("Unhandled message %d\n", message); - } -} - -#endif From a5dde47b90c59fa0a044d69d37b4d1947fe5207d Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 13 Feb 2024 15:29:25 +0100 Subject: [PATCH 139/160] Update doc --- doc/eth_contract_support_embedded.adoc | 59 +-- doc/eth_starkware_extensions.adoc | 348 -------------- doc/ethapp_plugins.adoc | 628 ++++++++++++------------- 3 files changed, 318 insertions(+), 717 deletions(-) delete mode 100644 doc/eth_starkware_extensions.adoc diff --git a/doc/eth_contract_support_embedded.adoc b/doc/eth_contract_support_embedded.adoc index 67c27c0c6..36a582c98 100644 --- a/doc/eth_contract_support_embedded.adoc +++ b/doc/eth_contract_support_embedded.adoc @@ -6,24 +6,24 @@ Application version 1.3.0 - 05th of July 2020 ## 1.3.0 - Initial release -## About +## About This document described how a specific device UI for a smart contract can be added in the current version of the Ethereum application, before plugins are added ## Standard support -The applications already includes dedicated UI support for those specific contract calls : +The applications already includes dedicated UI support for those specific contract calls : * ERC 20 approve(address, uint256) - implementation in *src_features/erc20_approval* * ERC 20 transfer(address, uint256) - implementation in *src_features/signTx* ## Requirements -The following data is necessary for a specific contract support +The following data is necessary for a specific contract support * Smart contract ABI (at least for calls that are to be supported by the application) -The following data is optional for a specific contract support +The following data is optional for a specific contract support * Contract address (can be optional if supported by multiple instances) @@ -38,60 +38,11 @@ The first four bytes of the call data for a function call specifies the function The following online tool can be used to compute selectors https://emn178.github.io/online-tools/keccak_256.html -## Limitations - - * The total number of parameters of a contract call is 4 (as defined in *src/shared_context.h* for tokenContext_t.data, each parameter being encoded as an uint256). Additional parameters can be supported if not required to handle the displaying logic (see "Also handle exception that only need to process the beginning of data" in *src_features/signTx/logic_signTx.c* for CONTRACT_STARKWARE_VERIFY_ESCAPE and CONTRACT_STARKWARE_REGISTER) - - * Non fixed size types (dynamic sized byte sequences, dynamic sized strings, variable length arrays) are not directly supported - -## Sample implementation of a function call - -This example describes how to implement a specific UI for a contract call. This exemple is using Starkex token deposit - *deposit(uint256 tokenId, uint256 vaultId, uint256 quantizedAmount)* - - - * Implement the specific UI logic in a new *src_features* subdirectory - note that strings.common.maxFee will be provisioned with the maximum fee to pay for this call - -``` -See src_features/stark_contract_deposit for this example -``` - - * Compute the selector - - -``` -keccak-256("deposit(uint256,uint256,uint256)") = 00aeef8a... -``` - - * Add an entry to the contract_call_t enum of *src/shared_context.h* for this function call - -``` -CONTRACT_STARKWARE_DEPOSIT_TOKEN -``` - - * Check for the selector being called and the arguments size in *src_features/signTx/logic_signTx.c* customProcessor function - additional logic can be applied (quantumSet in this example) - -```C -if ((context->currentFieldLength == STARKWARE_DEPOSIT_TOKEN_DATA_SIZE) && - (memcmp(context->workBuffer, STARKWARE_DEPOSIT_TOKEN_ID, 4) == 0) && - quantumSet) { - contractProvisioned = CONTRACT_STARKWARE_DEPOSIT_TOKEN; -} -``` - - * Call the dedicated UI at the end of the transaction parsing in *src_features/signTx/logic_signTx.c* finalizeParsing function - -```C -if (contractProvisioned == CONTRACT_STARKWARE_DEPOSIT_TOKEN) { - ux_flow_init(0, ux_approval_starkware_deposit_flow, NULL); - return; -} -``` - ## Using ERC 20 token tickers A UI implementation might want to convert an ERC 20 token contract address to a ticker for easier validation -2 tickers can be temporarily provisioned to the application by using the PROVIDE ERC 20 TOKEN INFORMATION APDU, described in *src_features/provideErc20TokenInformation* - the UI can then iterate on the provisioned tickers to display relevant information to the user +2 tickers can be temporarily provisioned to the application by using the PROVIDE ERC 20 TOKEN INFORMATION APDU, described in *src_features/provideErc20TokenInformation* - the UI can then iterate on the provisioned tickers to display relevant information to the user The same mechanism will be extended to support well known contract addresses in the future diff --git a/doc/eth_starkware_extensions.adoc b/doc/eth_starkware_extensions.adoc deleted file mode 100644 index 48e91fd8e..000000000 --- a/doc/eth_starkware_extensions.adoc +++ /dev/null @@ -1,348 +0,0 @@ -Ethereum application : Starkware extensions -============================================ -Ledger Firmware Team -Application version 1.5.0 - 4th of October 2020 - -## 1.3.0 - - Initial release - -## 1.5.0 - - Update with Starkex v2 APIs - -## About - -This specification describes the APDU messages interface implementing the Starkware extensions for the Ethereum appilcation - -## Modified general purpose APDUs - -### GET APP CONFIGURATION - -#### Description - -This command returns specific application configuration - -It is modified to notify Stark extensions support on flag 0x04 - -#### Coding - -'Command' - -[width="80%"] -|============================================================================================================================== -| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le* -| E0 | 06 | 00 | 00 | 00 | 04 -|============================================================================================================================== - -'Input data' - -None - -'Output data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Flags - 0x01 : arbitrary data signature enabled by user - - 0x02 : ERC 20 Token information needs to be provided externally - - 0x04 : Stark extensions are supported - - 0x08 : Stark protocol v2 is supported - | 01 -| Application major version | 01 -| Application minor version | 01 -| Application patch version | 01 -|============================================================================================================================== - - -## Additional APDUs - -Additional APDUs use the APDU CLA F0 - -### GET STARK PUBLIC KEY - -#### Description - -This command returns the public Stark key (X and Y coordinates) for the given BIP 32 path. - -The key can be optionally checked on the device before being returned - in that case, only the X coordinate is displayed, as this is what is used in the contract - -#### Coding - -'Command' - -[width="80%"] -|============================================================================================================================== -| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le* -| F0 | 02 | 00 : return address - - 01 : display address and confirm before returning - | 00 | variable | variable -|============================================================================================================================== - -'Input data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -|============================================================================================================================== - -'Output data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Stark key | 65 -|============================================================================================================================== - -### SIGN STARK MESSAGE - -#### Description - -This command signs an order or a transfer on the Starkware curve. - -The contract addressed associated to the token shall have be provisioned previously with the PROVIDE ERC 20 TOKEN INFORMATION command or this command will fail. - -The quantum type for v2 messages is encoded as p1 for the PROVIDE QUANTUM command - -#### Coding - -'Command' - -[width="80%"] -|============================================================================================================================== -| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le* -| F0 | 04 | - 01 : sign a Stark Order (protocol v1, handles ETH and regular ERC 20) - - 02 : sign a Stark Transfer (protocol v1, handles ETH and regular ERC 20) - - 03 : sign a Stark Order (since protocol v2) - - 04 : sign a Stark Transfer (since protocol v2) - - 05 : sign a Stark Conditional Transfer (since protocol v2) - - | 00 | variable | variable -|============================================================================================================================== - -'Input data for a Stark Order (v1)' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Contract address of the token to be sold (or 00..00 for ETH) | 20 -| Quantization of the token to be sold (big endian) | 32 -| Contract address of the token to be bought (or 00..00 for ETH) | 20 -| Quantization of the token to be bought (big endian) | 32 -| ID of the source vault (big endian encoded) | 4 -| ID of the destination vault (big endian encoded) | 4 -| Amount to be sold (big endian encoded) | 8 -| Amount to buy (big endian encoded) | 8 -| Transaction nonce (big endian encoded) | 4 -| Transaction timestamp (big endian encoded) | 4 -|============================================================================================================================== - -'Input data for a Stark Transfer (v1)' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Contract address of the token to be transferred (or 00..00 for ETH) | 20 -| Quantization of the token to be transferred (big endian) | 32 -| Token target public key | 32 -| ID of the source vault (big endian encoded) | 4 -| ID of the destination vault (big endian encoded) | 4 -| Amount to be transferred (big endian encoded) | 8 -| Transaction nonce (big endian encoded) | 4 -| Transaction timestamp (big endian encoded) | 4 -|============================================================================================================================== - -'Input data for a Stark Order (v2)' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Quantization type of the token to be sold | 1 -| Contract address of the token to be sold (or 00..00 for ETH) | 20 -| Quantization or Token ID of the token to be sold (big endian) | 32 -| Minting blob of the token to be sold (ignored if non mintable) | 32 -| Quantization type of the token to be bought | 1 -| Contract address of the token to be bought (or 00..00 for ETH) | 20 -| Quantization or Token ID of the token to be bought (big endian) | 32 -| Minting blob of the token to be bought (ignored if non mintable) | 32 -| ID of the source vault (big endian encoded) | 4 -| ID of the destination vault (big endian encoded) | 4 -| Amount to be sold (big endian encoded) | 8 -| Amount to buy (big endian encoded) | 8 -| Transaction nonce (big endian encoded) | 4 -| Transaction timestamp (big endian encoded) | 4 -|============================================================================================================================== - -'Input data for a Stark Transfer (v2)' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Quantization type of the token to be transferred | 1 -| Contract address of the token to be transferred (or 00..00 for ETH) | 20 -| Quantization or Token ID of the token to be transferred (big endian) | 32 -| Minting blob of the token to be transferred (ignored if non mintable) | 32 -| Token target public key | 32 -| ID of the source vault (big endian encoded) | 4 -| ID of the destination vault (big endian encoded) | 4 -| Amount to be transferred (big endian encoded) | 8 -| Transaction nonce (big endian encoded) | 4 -| Transaction timestamp (big endian encoded) | 4 -|============================================================================================================================== - -'Input data for a Stark Conditional Transfer' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Quantization type of the token to be transferred | 1 -| Contract address of the token to be transferred (or 00..00 for ETH) | 20 -| Quantization or Token ID of the token to be transferred (big endian) | 32 -| Minting blob of the token to be transferred (ignored if non mintable) | 32 -| Token target public key | 32 -| ID of the source vault (big endian encoded) | 4 -| ID of the destination vault (big endian encoded) | 4 -| Amount to be transferred (big endian encoded) | 8 -| Transaction nonce (big endian encoded) | 4 -| Transaction timestamp (big endian encoded) | 4 -| Conditional transfer fact (big endian) | 32 -| Conditional transfer L1 condition logic address | 20 -|============================================================================================================================== - -'Output data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| RFU (00) | 1 -| r | 32 -| s | 32 -|============================================================================================================================== - - -### PROVIDES QUANTUM - -#### Description - -This command provides quantization data used to compute a tokenId and provide additional information to the user before signing a transaction performing a deposit or withdrawal call on a Stark powered smart contract. - -It shall be called following a PROVIDE ERC 20 TOKEN INFORMATION command called for the associated contract - -#### Coding - -'Command' - -[width="80%"] -|============================================================================================================================== -| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le* -| F0 | 08 | - 00 : legacy (protocol v1, handles ETH and regular ERC 20) - - 01 : quantum encoded for ETH (since protocol v2) - - 02 : quantum encoded for a regular ERC 20 (since protocol v2) - - 03 : quantum encoded for a regular ERC 721 (since protocol v2) - - 04 : quantum encoded for a mintable ERC 20 (since protocol v2) - - 05 : quantum encoded for a mintable ERC 721 (since protocol v2) - - | 00 | variable | variable -|============================================================================================================================== - -'Legacy Input data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Contract address used in the next transaction | 20 -| Quantization to be used in the next transaction | 32 -|============================================================================================================================== - -'v2 Input data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Contract address used in the next transaction (ignored for ETH) | 20 -| Quantization to be used in the next transaction (ignored for ERC 721s) | 32 -| Minting blob to be used in the next transaction (ignored for non mintable) | 32 -|============================================================================================================================== - -'Output data' - -None - -### UNSAFE SIGN - -#### Description - -This command signs an arbitrary hash on the Starkware Curve after presenting the hash to the user. It is intended for speed of execution in case an unknown Stark model is pushed and should be avoided as much as possible. - -#### Coding - -'Command' - -[width="80%"] -|============================================================================================================================== -| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le* -| F0 | 0A | - 00 - | 00 | variable | variable -|============================================================================================================================== - -'Input data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| Number of BIP 32 derivations to perform (max 10) | 1 -| First derivation index (big endian) | 4 -| ... | 4 -| Last derivation index (big endian) | 4 -| Hash to sign | 32 -|============================================================================================================================== - -'Output data' - -[width="80%"] -|============================================================================================================================== -| *Description* | *Length* -| RFU (00) | 1 -| r | 32 -| s | 32 -|============================================================================================================================== - diff --git a/doc/ethapp_plugins.adoc b/doc/ethapp_plugins.adoc index a3bdbbe27..886928a4b 100644 --- a/doc/ethapp_plugins.adoc +++ b/doc/ethapp_plugins.adoc @@ -1,315 +1,313 @@ -Ethereum application Plugins : Technical Specifications -======================================================= -Ledger Firmware Team -Specification version 1.0 - 24th of September 2020 - - -## 1.0 - - Initial release - -## About - -This specification describes the plugin interface used to display a specific UI on device for Ethereum smart contracts. - -Feel free to checkout the ParaSwap plugin to see an actual implementation. Link: https://github.com/LedgerHQ/app-ethereum/blob/named-external-plugins/doc/ethapp_plugins.asc . - -## Flow overview - -When signing an Ethereum transaction containing data, the Ethereum application looks for a plugin using .either a selector list or the contract address. - -If a plugin is found, each network serialized data field (32 bytes) is passed to the plugin along with the field offset. The plugin can decide to stop the signature process if a data field isn't expected - -After all fields have been received, the plugin can report to the Ethereum application whether the full data is accepted, and the user interface model that'll be used to display the data - -### Amount/Address user interface - -In this model, the generic (without data) transaction display is used, with the amount and destination address replaced by data provided by the plugin - -### Generic user interface - -In this model, the plugin first reports a number of screens (2 lines of text, the second line being scrollable) to be displayed - -The Ethereum application will request each screen to be displayed to the plugin and let the user browse through them. - -The first screen being displayed is always a description of the plugin being used (name and version reported by the plugin), and the last screens include the transaction fees in ETH and a confirmation prompt - -### Code flow - -The plugin interfacing logic is described in _src/eth_plugin_interface.h_ - -The plugin common dispatcher is found in _src/eth_plugin_handler.c_ - -The plugin generic UI dispatcher is found in _src/eth_plugin_ui.c_ - -Sample internal plugins are provided in _src_plugins/_ - -## Creating a plugin - -### Creating an internal plugin - -Internal plugins are triggered on specific selectors. You can modify _src/eth_plugin_internal.c_ to add your mapping. - -Other specific mappings can be also added by modifying the common dispatcher - -### Creating an external plugin - -An external plugin is a library application named after the base64 encoding of the 20 bytes smart contract address - -## Detailed flow messages - -### Generic fields - -The following generic fields are present in all messages : - - * pluginSharedRW : scratch objects and utilities available to the plugin (can be read and written) - - * pluginSharedRO : transaction data available to the plugin (can only be read) - - * pluginContext : arbitrary data blob holding the plugin context, to be set and used by the plugin - - * result : return code set by the plugin following the message processing - -### ETH_PLUGIN_INIT_CONTRACT - -[source,C] ----- - -typedef struct ethPluginInitContract_t { - - // in - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; - uint32_t pluginContextLength; - uint8_t *selector; // 4 bytes selector - uint32_t dataSize; - - char *alias; // 29 bytes alias if ETH_PLUGIN_RESULT_OK_ALIAS set - - uint8_t result; - -} ethPluginInitContract_t; - ----- - -This message is sent when the selector of the data has been parsed. The following specific fields are filled when the plugin is called : - - * pluginContextLength : length of the data field available to store the plugin context - * selector : 4 bytes selector of the data field - * dataSize : size in bytes of the data field - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - * ETH_PLUGIN_RESULT_OK_ALIAS : if a base64 encoded alias of another plugin to call is copied to the _alias_ field. In this case, the dispatcher will follow the alias chain, and the original plugin will only be called to retrieve its name when using a generic user interface - * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one - -### ETH_PLUGIN_PROVIDE_PARAMETER - -[source,C] ----- - -typedef struct ethPluginProvideParameter_t { - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; - uint8_t *parameter; // 32 bytes parameter - uint32_t parameterOffset; - - uint8_t result; - -} ethPluginProvideParameter_t; - ----- - -This message is sent when a new 32 bytes component of the data field is available. The following specific fields are filled when the plugin is called : - - * parameter : pointer to the 32 bytes parameter being parsed - * parameterOffset : offset to this parameter from the beginning of the data field (starts at 4, following the selector) - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one - -There are already defined functions to extract data from a parameter: -[source,C] ----- -void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); -void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); - -// Get the value from the beginning of the parameter (right to left) and check if the rest of it is zero -bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); -bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); ----- - -### ETH_PLUGIN_FINALIZE - -[source,C] ----- - -typedef struct ethPluginFinalize_t { - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; - - uint8_t *itemLookup1; // set by the plugin if a token or an nft should be looked up - uint8_t *itemLookup2; - - uint8_t *amount; // set an uint256 pointer if uiType is UI_AMOUNT_ADDRESS - uint8_t *address; // set to the destination address if uiType is UI_AMOUNT_ADDRESS. Set to the user's address if uiType is UI_TYPE_GENERIC - - uint8_t uiType; - uint8_t numScreens; // ignored if uiType is UI_AMOUNT_ADDRESS - uint8_t result; - -} ethPluginFinalize_t; - ----- - -This message is sent when the data field has been fully parsed. The following specific fields can be filled by the plugin : - - * itemLookup1 : the pointer shall be set to a 20 bytes address to look up an ERC20 token or NFT if needed by the plugin - * itemLookup2 : the pointer shall be set to a 20 bytes address to look up an ERC20 token or NFT if needed by the plugin - * uiType : set to either ETH_UI_TYPE_AMOUNT_ADDRESS for an amount/address UI or ETH_UI_TYPE_GENERIC for a generic UI - -The following specific fields are filled by the plugin when returning an amount/address UI : - - * amount : set to a pointer to a 256 bits number - * address : set to a pointer to a 20 bytes address - -The following specific fields are filled by the plugin when returning a generic UI : - - * numScreens : number of screens handled by the plugin - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one - -### ETH_PLUGIN_PROVIDE_INFO - -[source,C] ----- - -typedef struct ethPluginProvideInfo_t { - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; - - union extraInfo *item1; // set by the ETH application, to be saved by the plugin - union extraInfo *item2; - - uint8_t additionalScreens; // Used by the plugin if it needs to display additional screens based on the information received. - - uint8_t result; - -} ethPluginProvideInfo_t; - ----- - -This message is sent if an information lookup was required by the plugin when parsing a finalize message. The following specific fields are filled when the plugin is called : - - * item1 : pointer to an union matching itemLookup1, or NULL if not found - * item2 : pointer to an union matching itemLookup2, or NULL if not found - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one - -### ETH_PLUGIN_QUERY_CONTRACT_ID - -[source,C] ----- - -typedef struct ethQueryContractID_t { - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - uint8_t *pluginContext; - - char *name; - uint32_t nameLength; - char *version; - uint32_t versionLength; - - uint8_t result; - -} ethQueryContractID_t; - ----- - -This message is sent after the parsing finalization and information lookups if requested if a generic UI is used. The following specific fields are provided when the plugin is called : - - * name : pointer to the name of the plugin, to be filled by the plugin - * nameLength : maximum name length - * version : pointer to the version of the plugin, to be filled by the plugin - * versionLength : maximum version length - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - -### ETH_PLUGIN_QUERY_CONTRACT_UI - -[source,C] ----- - -typedef struct ethQueryContractUI_t { - - ethPluginSharedRW_t *pluginSharedRW; - ethPluginSharedRO_t *pluginSharedRO; - union extraInfo_t *item1; - union extraInfo_t *item2; - char network_ticker[MAX_TICKER_LEN]; - uint8_t *pluginContext; - uint8_t screenIndex; - char *title; - uint32_t titleLength; - char *msg; - uint32_t msgLength; - - uint8_t result; - -} ethQueryContractUI_t; - ----- - -This message is sent when a plugin screen shall be displayed if a generic UI is used. The following specific fields are provided when the plugin is called : - - - * item1 : pointer to token / nft information - * item2 : pointer to token / nft information - * network_ticker : string that holds the network ticker - * screenIndex : index of the screen to display, starting from 0 - * title : pointer to the first line of the screen, to be filled by the plugin - * titleLength : maximum title length - * msg : pointer to the second line of the screen, to be filled by the plugin - * msgLength : maximum msg length - -The following return codes are expected, any other will abort the signing process : - - * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized - -## Caveats - -When setting a pointer from the plugin space, make sure to use an address that will be accessible from the Ethereum application (typically in the plugin RAM context, *not* on the plugin stack) - -Do not use data types that need to be aligned (such as uint32_t) in the plugin context. - -## TODOs - -Provide a sample callback mechanism for common plugin actions (amount to string, 256 bits number multiplication ...) to avoid duplicating code in the plugin space - -Provide external plugins samples - -Fully support Starkware as an independant application (APDU logic added) - -Support extra flags for the generic UI (fast confirmation on first screen, ...) - -Support extra plugin provisioning (signed list of associated smart contract addresses, ...) +Ethereum application Plugins : Technical Specifications +======================================================= +Ledger Firmware Team +Specification version 1.0 - 24th of September 2020 + + +## 1.0 + - Initial release + +## About + +This specification describes the plugin interface used to display a specific UI on device for Ethereum smart contracts. + +Feel free to checkout the ParaSwap plugin to see an actual implementation. Link: https://github.com/LedgerHQ/app-ethereum/blob/named-external-plugins/doc/ethapp_plugins.asc . + +## Flow overview + +When signing an Ethereum transaction containing data, the Ethereum application looks for a plugin using .either a selector list or the contract address. + +If a plugin is found, each network serialized data field (32 bytes) is passed to the plugin along with the field offset. The plugin can decide to stop the signature process if a data field isn't expected + +After all fields have been received, the plugin can report to the Ethereum application whether the full data is accepted, and the user interface model that'll be used to display the data + +### Amount/Address user interface + +In this model, the generic (without data) transaction display is used, with the amount and destination address replaced by data provided by the plugin + +### Generic user interface + +In this model, the plugin first reports a number of screens (2 lines of text, the second line being scrollable) to be displayed + +The Ethereum application will request each screen to be displayed to the plugin and let the user browse through them. + +The first screen being displayed is always a description of the plugin being used (name and version reported by the plugin), and the last screens include the transaction fees in ETH and a confirmation prompt + +### Code flow + +The plugin interfacing logic is described in _src/eth_plugin_interface.h_ + +The plugin common dispatcher is found in _src/eth_plugin_handler.c_ + +The plugin generic UI dispatcher is found in _src/eth_plugin_ui.c_ + +Sample internal plugins are provided in _src_plugins/_ + +## Creating a plugin + +### Creating an internal plugin + +Internal plugins are triggered on specific selectors. You can modify _src/eth_plugin_internal.c_ to add your mapping. + +Other specific mappings can be also added by modifying the common dispatcher + +### Creating an external plugin + +An external plugin is a library application named after the base64 encoding of the 20 bytes smart contract address + +## Detailed flow messages + +### Generic fields + +The following generic fields are present in all messages : + + * pluginSharedRW : scratch objects and utilities available to the plugin (can be read and written) + + * pluginSharedRO : transaction data available to the plugin (can only be read) + + * pluginContext : arbitrary data blob holding the plugin context, to be set and used by the plugin + + * result : return code set by the plugin following the message processing + +### ETH_PLUGIN_INIT_CONTRACT + +[source,C] +---- + +typedef struct ethPluginInitContract_t { + + // in + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + uint8_t *pluginContext; + uint32_t pluginContextLength; + uint8_t *selector; // 4 bytes selector + uint32_t dataSize; + + char *alias; // 29 bytes alias if ETH_PLUGIN_RESULT_OK_ALIAS set + + uint8_t result; + +} ethPluginInitContract_t; + +---- + +This message is sent when the selector of the data has been parsed. The following specific fields are filled when the plugin is called : + + * pluginContextLength : length of the data field available to store the plugin context + * selector : 4 bytes selector of the data field + * dataSize : size in bytes of the data field + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + * ETH_PLUGIN_RESULT_OK_ALIAS : if a base64 encoded alias of another plugin to call is copied to the _alias_ field. In this case, the dispatcher will follow the alias chain, and the original plugin will only be called to retrieve its name when using a generic user interface + * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one + +### ETH_PLUGIN_PROVIDE_PARAMETER + +[source,C] +---- + +typedef struct ethPluginProvideParameter_t { + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + uint8_t *pluginContext; + uint8_t *parameter; // 32 bytes parameter + uint32_t parameterOffset; + + uint8_t result; + +} ethPluginProvideParameter_t; + +---- + +This message is sent when a new 32 bytes component of the data field is available. The following specific fields are filled when the plugin is called : + + * parameter : pointer to the 32 bytes parameter being parsed + * parameterOffset : offset to this parameter from the beginning of the data field (starts at 4, following the selector) + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one + +There are already defined functions to extract data from a parameter: +[source,C] +---- +void copy_address(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); +void copy_parameter(uint8_t* dst, const uint8_t* parameter, uint8_t dst_size); + +// Get the value from the beginning of the parameter (right to left) and check if the rest of it is zero +bool U2BE_from_parameter(const uint8_t* parameter, uint16_t* value); +bool U4BE_from_parameter(const uint8_t* parameter, uint32_t* value); +---- + +### ETH_PLUGIN_FINALIZE + +[source,C] +---- + +typedef struct ethPluginFinalize_t { + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + uint8_t *pluginContext; + + uint8_t *itemLookup1; // set by the plugin if a token or an nft should be looked up + uint8_t *itemLookup2; + + uint8_t *amount; // set an uint256 pointer if uiType is UI_AMOUNT_ADDRESS + uint8_t *address; // set to the destination address if uiType is UI_AMOUNT_ADDRESS. Set to the user's address if uiType is UI_TYPE_GENERIC + + uint8_t uiType; + uint8_t numScreens; // ignored if uiType is UI_AMOUNT_ADDRESS + uint8_t result; + +} ethPluginFinalize_t; + +---- + +This message is sent when the data field has been fully parsed. The following specific fields can be filled by the plugin : + + * itemLookup1 : the pointer shall be set to a 20 bytes address to look up an ERC20 token or NFT if needed by the plugin + * itemLookup2 : the pointer shall be set to a 20 bytes address to look up an ERC20 token or NFT if needed by the plugin + * uiType : set to either ETH_UI_TYPE_AMOUNT_ADDRESS for an amount/address UI or ETH_UI_TYPE_GENERIC for a generic UI + +The following specific fields are filled by the plugin when returning an amount/address UI : + + * amount : set to a pointer to a 256 bits number + * address : set to a pointer to a 20 bytes address + +The following specific fields are filled by the plugin when returning a generic UI : + + * numScreens : number of screens handled by the plugin + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one + +### ETH_PLUGIN_PROVIDE_INFO + +[source,C] +---- + +typedef struct ethPluginProvideInfo_t { + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + uint8_t *pluginContext; + + union extraInfo *item1; // set by the ETH application, to be saved by the plugin + union extraInfo *item2; + + uint8_t additionalScreens; // Used by the plugin if it needs to display additional screens based on the information received. + + uint8_t result; + +} ethPluginProvideInfo_t; + +---- + +This message is sent if an information lookup was required by the plugin when parsing a finalize message. The following specific fields are filled when the plugin is called : + + * item1 : pointer to an union matching itemLookup1, or NULL if not found + * item2 : pointer to an union matching itemLookup2, or NULL if not found + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + * ETH_PLUGIN_RESULT_FALLBACK : if the signing logic should fallback to the generic one + +### ETH_PLUGIN_QUERY_CONTRACT_ID + +[source,C] +---- + +typedef struct ethQueryContractID_t { + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + uint8_t *pluginContext; + + char *name; + uint32_t nameLength; + char *version; + uint32_t versionLength; + + uint8_t result; + +} ethQueryContractID_t; + +---- + +This message is sent after the parsing finalization and information lookups if requested if a generic UI is used. The following specific fields are provided when the plugin is called : + + * name : pointer to the name of the plugin, to be filled by the plugin + * nameLength : maximum name length + * version : pointer to the version of the plugin, to be filled by the plugin + * versionLength : maximum version length + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + +### ETH_PLUGIN_QUERY_CONTRACT_UI + +[source,C] +---- + +typedef struct ethQueryContractUI_t { + + ethPluginSharedRW_t *pluginSharedRW; + ethPluginSharedRO_t *pluginSharedRO; + union extraInfo_t *item1; + union extraInfo_t *item2; + char network_ticker[MAX_TICKER_LEN]; + uint8_t *pluginContext; + uint8_t screenIndex; + char *title; + uint32_t titleLength; + char *msg; + uint32_t msgLength; + + uint8_t result; + +} ethQueryContractUI_t; + +---- + +This message is sent when a plugin screen shall be displayed if a generic UI is used. The following specific fields are provided when the plugin is called : + + + * item1 : pointer to token / nft information + * item2 : pointer to token / nft information + * network_ticker : string that holds the network ticker + * screenIndex : index of the screen to display, starting from 0 + * title : pointer to the first line of the screen, to be filled by the plugin + * titleLength : maximum title length + * msg : pointer to the second line of the screen, to be filled by the plugin + * msgLength : maximum msg length + +The following return codes are expected, any other will abort the signing process : + + * ETH_PLUGIN_RESULT_OK : if the plugin can be successfully initialized + +## Caveats + +When setting a pointer from the plugin space, make sure to use an address that will be accessible from the Ethereum application (typically in the plugin RAM context, *not* on the plugin stack) + +Do not use data types that need to be aligned (such as uint32_t) in the plugin context. + +## TODOs + +Provide a sample callback mechanism for common plugin actions (amount to string, 256 bits number multiplication ...) to avoid duplicating code in the plugin space + +Provide external plugins samples + +Support extra flags for the generic UI (fast confirmation on first screen, ...) + +Support extra plugin provisioning (signed list of associated smart contract addresses, ...) From 726ffc1ac739681d09b13be35768de2e6ba14dcc Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 13 Feb 2024 17:01:00 +0100 Subject: [PATCH 140/160] Update tests --- tests/speculos/test_configuration_cmd.py | 9 +--- .../nanos_starkware_usdt_deposit/00000.png | Bin 374 -> 0 bytes .../nanos_starkware_usdt_deposit/00001.png | Bin 359 -> 0 bytes .../nanos_starkware_usdt_deposit/00002.png | Bin 488 -> 0 bytes .../nanos_starkware_usdt_deposit/00003.png | Bin 477 -> 0 bytes .../nanos_starkware_usdt_deposit/00004.png | Bin 408 -> 0 bytes .../nanos_starkware_usdt_deposit/00005.png | Bin 391 -> 0 bytes .../nanos_starkware_usdt_deposit/00006.png | Bin 420 -> 0 bytes .../nanos_starkware_usdt_deposit/00007.png | Bin 429 -> 0 bytes .../nanos_starkware_usdt_deposit/00008.png | Bin 409 -> 0 bytes .../nanos_starkware_usdt_deposit/00009.png | Bin 313 -> 0 bytes .../nanos_starkware_usdt_deposit/00010.png | Bin 315 -> 0 bytes .../nanos_starkware_usdt_deposit/00011.png | Bin 281 -> 0 bytes .../nanos_starkware_usdt_deposit/00012.png | Bin 359 -> 0 bytes .../nanos_starkware_usdt_deposit/00013.png | Bin 414 -> 0 bytes .../nanos_starkware_usdt_deposit/00014.png | Bin 340 -> 0 bytes .../nanos_starkware_usdt_deposit/00015.png | Bin 414 -> 0 bytes .../nanos_starkware_usdt_deposit/00016.png | Bin 349 -> 0 bytes .../nanox_starkware_usdt_deposit/00000.png | Bin 414 -> 0 bytes .../nanox_starkware_usdt_deposit/00001.png | Bin 405 -> 0 bytes .../nanox_starkware_usdt_deposit/00002.png | Bin 735 -> 0 bytes .../nanox_starkware_usdt_deposit/00003.png | Bin 621 -> 0 bytes .../nanox_starkware_usdt_deposit/00004.png | Bin 479 -> 0 bytes .../nanox_starkware_usdt_deposit/00005.png | Bin 364 -> 0 bytes .../nanox_starkware_usdt_deposit/00006.png | Bin 379 -> 0 bytes .../nanox_starkware_usdt_deposit/00007.png | Bin 321 -> 0 bytes .../nanox_starkware_usdt_deposit/00008.png | Bin 433 -> 0 bytes .../nanox_starkware_usdt_deposit/00009.png | Bin 472 -> 0 bytes .../nanox_starkware_usdt_deposit/00010.png | Bin 365 -> 0 bytes .../nanox_starkware_usdt_deposit/00011.png | 1 - .../nanox_starkware_usdt_deposit/00012.png | Bin 382 -> 0 bytes tests/zemu/src/starkware.test.js | 40 ------------------ 32 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00000.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00001.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00002.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00003.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00004.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00005.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00006.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00007.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00008.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00009.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00010.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00011.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00012.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00013.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00014.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00015.png delete mode 100644 tests/zemu/snapshots/nanos_starkware_usdt_deposit/00016.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00000.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00001.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00002.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00003.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00004.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00005.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00006.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00007.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00008.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00009.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00010.png delete mode 120000 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00011.png delete mode 100644 tests/zemu/snapshots/nanox_starkware_usdt_deposit/00012.png delete mode 100644 tests/zemu/src/starkware.test.js diff --git a/tests/speculos/test_configuration_cmd.py b/tests/speculos/test_configuration_cmd.py index 36e4cede8..c27915612 100644 --- a/tests/speculos/test_configuration_cmd.py +++ b/tests/speculos/test_configuration_cmd.py @@ -1,10 +1,3 @@ def test_configuration(cmd): - if cmd.model == "nanos": - assert cmd.get_configuration() == (14, 1, 10, 4) - - if cmd.model == "nanox": - assert cmd.get_configuration() == (14, 1, 10, 4) - - if cmd.model == "nanosp": - assert cmd.get_configuration() == (14, 1, 10, 4) + assert cmd.get_configuration() == (2, 1, 10, 4) diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00000.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00001.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00001.png deleted file mode 100644 index 049c0d8476cb0e434cfa8d66ace208f854b01b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs=YP)5z#wgHv;Vv3C@TDnG1{gH006+hlB@+hS(mrlG^-4u(d|WG z3&3tw$1>$^EntA%UfF-C`KU*;*Qy_;d27tS*bpyTJ3zSjs8MJ)YI*m>?|Ap6$*63hnQOkkpfNqQ6?5er$A*2 z7noHnum+Zdk3ymGat`PG_E?r1*HIiPFQtr&b2N>!xG6=jB4wFvRkNqPz)6!YcHQmD zbzY`N8GNdKEz~<(E#=d0SFO?YvD*RE`%2gAnq$1gHqwP)-||_RSActRi>AGXu`97E6}8tkqE0(gfp*Hfs%0AFbKc;#XIA zv9A`rd{ytCRd;@yCNp>6OxcX==Ug!W*3-!TGL%$D_7@Xlu#>1lJNZoVp*&V^SL}Ti z>NF+l=C4D?2)g<@YU{Bnm0mr^9~*I+GkLQX-?maI#0r+>Gg;E zp|j6UzT+;)fGmJy_L)OFd9b&g$^p9-n129h(-h6z4O}$prc$dcOt~49fLoFKOVC87 zq*c}%TzIZyUd8jz0D5d$JA)J(k9)2JCe7Ui>Y##Z=cWCft?C$dIy~CeNC~>;;|ziz e2!bH^_xu4Hx~&z&^clba0000Z|Kzy}KDTEM02*mHt|L1rl&d*#IR+p

AA_N#8^&7h{4C-fP=IXt|c| zq%XC17h%mr`5hOkrjYHWA5m2Y3}(Tp`h9gv46cATc(QxQMX+EEY|=X#oVKMFUqcrR zK+*P!oz{@7EhQJ>Gp2t0Sn_P3#=n%UnB$KWK~g-#MUht(VQRHE9H zX4N9%^!TzALUvT0X)r00z!XQyCP@9ySH?~G3W*`LpGcfi$Cn7QOA)=Z=eNh{6%Q}t zIClCpwcF(sse?!a*#ltJlLwH?^YlKc-c%hmOGhnh?;BAmlFvdDLI@#*5MuKO%6y+n T?B?HV00000NkvXXu0mjfRjAv5 diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00004.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00004.png deleted file mode 100644 index 8aa3536956cd1dec5ac10e85a34715077480cecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY+P)G1!BhzzglXK~< zVE?PrG8cV*Jod1C=EcBP6pd*L{noy{11df!1_sx-ObS`;N0JMWIbK>^-xu%RWN$$(pV#bKri>?-~H2VCMUgtT=uXpk9OnywE1!0(z4zc16$FuzCX;r%Nm%Z#4|de0M&XJlv}dJ$G7a2k4|0Asi=?g zZ_Qw8WCIsw47E=_GBMdztV&H-Q)*9J)e>qn4AboKti43<3ZRWzDtU4w4?l9MIV<~8 ztfzBC0+8!VD%LiHqKQtshrfXt)s&(|;Eqj?3eY&2yfoK_V=shu1()0@0NTdKoX8Fm zMnci997s0Se$;HMt|E_R3B*no&LcxO|7J+Hc{u3}=Zn3YzTcyJ0IWIT{o5$G8s5Jd z#9$=Yg+}u2%G#tgtztDR7$2YLWzTkUKzoe;-RYQ#rMTxvq5`KSs200000QhEW9#GX$6@iMsp O0000C*2u0~;`~M%@hwg(L!hl+^R>$U^OeU>GK?H|7L;wH)K#lXD^SEevNbg+OfHYrg zPrb!q|4+Mde%kza9<=S_)}XFv+y6hxzuO)dB*$;GLk6ie8N@AYar(AT?X6Rnb13N} zzAhOojcnk-h>`Z$TP0>6WwWv*TvA#e_EJlzu{3^EV|Lh2dS`%aEQOLMM!0*5sphEc z2|v~`RK0000`**Ds^f~1k%zGNMcLR(Ur z#i!b>TJFVh-)LFma^N(SjrFqL8S2lsN;?C$ces)yDT2qRyeluAwwy!p=%nwO!`w;D zda)*&)D8DfUS8DXt?YW#lr^LFuth6XLVNsLyV=1RudVn zcA=hxp2J4p)ZbwpO7kJ1C2n_G{5_d*G#k*q9WC+yHkn290pSUlC8kkLz#c0AFk%ys zT87%63e#y0jd8eLgtKVQ$1E?GVXvV800000fQX2Gu(qJWSm52l00000NkvXXu0mjf DN1(rO diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00009.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00009.png deleted file mode 100644 index d242dc57515de93b14dbd054485897308b6d2cf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA64FfcNBx;TbZ%y~QGpwJ-&9+!g? z|Nnm=_lmK-lSSj=j45UJD<%ku@A73579w-8O2MA;;82>g*w|Hmtb}xwQ>FVdQ I&MBb@05%zi8vpW3Kt$}c@{?YJG$p8*?gwcS&{y^v zBuD`7ob;|jW^Yv6GF{1E(k5K&0D5D{3-uisiVXGLP^5m=n8tYaPz=+6eh3vzn3T$lnZTKI=k`Sx{jTC!j_{N-&C0;dOs$(Tpz2 ziQfQP-yWmYr|bz>N&@vMz66OcF!Q0b>iK2-(Pzs`(EtDd006+B*a30RlT6E802%-Q N002ovPDHLkV1i?Dh;;w} diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00011.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00011.png deleted file mode 100644 index 6c0730332de69c4b36de575419de5965d255c81b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmV+!0p|XRP)oCCejS|bL^z9X4Q005Yor`*R1XEgP&UVx<2iFgX` zEi>HU&E?@P}zX5Wqu+w`cjh+$%P7>_K@HsO0HyB)nZY5!@6x<SC-{-yYt&P_7F<2G%R zNM=mdXJIl8!$1HOStT7MKed*s1#JwURS#~#D-{CPi|!6L)n2SlomS z>`PB3BQMmSfG9H5pGHDzs6QFRU?o_ERx*4aKKB2wq*~R7$j<%Dw6rmGit{m)bVV9! zWakG*Rfj(p3;i(mB`lo^aJ!*Tr%MbAKqQ%7Rg8-L5sV2ygZgj9%n}sVbm@{nx-Gal zV-Dl=^*TBIr4&Kxw9xkclWmZ_V6p!i3IG5A004-H=m*9i4kMvM;gJ9U002ovPDHLk FV1iKVl=J`q diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00013.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00013.png deleted file mode 100644 index 1c9156c31edf73cb072eaebf2db3fbe1ba5c612b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)j~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00014.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00014.png deleted file mode 100644 index 9c7e7049cb3e9bcfb1601ec510ee465d38229d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!j~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00016.png b/tests/zemu/snapshots/nanos_starkware_usdt_deposit/00016.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00000.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*9qxynrE*YEzX_R`$S z_UZFBx7xjXtS=}VTm9R)_F+)}ZRJQ|M<4wSypCMqBGB23_I~Gx_{2R zyE-p80_rb4Jb%T}lX?do_^IhkNC(RZ39i5q#C%Mfi z=S23upAV;QSkqV|v|_naK^51nYhSN9o0^*0>1Un}3f;5nsGon;+CP_H$3~o;;8{O= w@(Ry-;9<691qT`%Ul6@Y|2UHx3vIVCg!00s%Rs{jB1 diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00002.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00002.png deleted file mode 100644 index 6735a0784eb960ea0c99395750bb87fc0dcf3ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 735 zcmV<50wDc~P)5OmE}cYwHprE zs(URD3s;R=!~9OxH;}QAP8Wg5*D0meP3Et3Z^>^95tpj6^sv=u)mmemH3GC}`etmZ zozW^m)b@QZD)#CW-5sM(}mR(Q_H4HXZFA{Y3a1857^i(Mm3F8$CDP_FJg%F^*Q0*MAJGvDHmkefYGncX#+NHqcWjwyVTtQ zxHN(ryH;9w03*FxZE>b8BcWYz;(35eNLcfFqZgj@2%Pb{M*!Zppw1-4#^a$Y!JC2I zg|?|mX&s$YY}pt(11;KWV2N%T@zWWg*NopUrx|2M|1v6}X7n$HeQ+n7h3$j#*37=I)xKPLecd{eue8GH!^nbWAU+E?7isH>5{Sy0$s`<5kIw!U7`t2#>vK_ z(hP1Hgor8`%xWE9hy*Hf!0W*Uy2Cw$7uk1KcMLd?aPy zF1YiRcNQHTaAi6-mX$Mfcc!DsW{d!R@S-Q~>fwyuWx6(1v-J7r2-^VHX}M$*dkjSg zA%qY@!u}~ANHtO6?uoTcp~)R&H%98Q*Ji0VbICK_gvZj82a7-ZtN%9C06chEIr`hm zBfyQF%uhU*MLQtm$<3<*axz8UxTlgvVOQN1Sac1*4W= R)%pMc002ovPDHLkV1g~OT?+sJ diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00003.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00003.png deleted file mode 100644 index 85f3a2b4cdbc022a329dced99125aaa190dfae4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)kuc@fw|HZ2*ig0g<~<;%1)ip}vD^lTv6Oil3esBSZHbm3<%DWP z#17g!ijfJ+=bUz`{xI(6!;j9WM{s`tMtK4N0N~s4?AqFS6c)|mg`8fUnsia#0u3<| z8eYUakMq1`JXyn;_WGsxq|39FUQVkcuF;gn8A=YSp>O>2bgZ(i8akx@ccx}b^h4_k7*hW`P_q%F zp!X8V$=VpI8A|*hLk~zs-k71pF_d=slw&9W000000Q2|*1}B-OdZa5S00000NkvXX Hu0mjfGJG55 diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00004.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00004.png deleted file mode 100644 index e56268e93dc8a16732654671f8f5b56f4b6d44eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)DCNhyIlO(!%MpjnpLjaxNf7{{{*Szob?55M6ZY|D9Wev zsFB)uaHX4_coC7F7)wmhOI!2eW@Wl=KLPnqQunjQ>+qtbzOcL8bYq=>8Sy$7J-3z8 zX^U~=-nz`J+$X>j%*snNE_b}pf@=pOi%tAJzKhJAYREb1e8D+J5QcEM+@ClZoW%!@4x7g|WyEm82LT7kd z8E?9LOZUYTZvBwFw@z!K828PpQ;fgo_I24B^N)p>eomY#HjmLb)a>@hm9ZZA$L%tC zO(i}GOV6=7D>6Blm4V?v{KM@D%NBnzQMkF@JmH~z;+X}ECo>$3q$Zp(dvN{y7X9zb z_Jq_o=S^Jsn`0v>lj%sBKedZjVsi6<_HZs_7hI@|Jt46Q$XP1M7Jzf1=);T3K F0RS?Lm}>w4 diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00006.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00006.png deleted file mode 100644 index 9fce3dc7d8480ec63409347f73c8e26b595d1a1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2#E?=_(Ps78! zo4z~#Ppq2$*Fe!%@TT|{?)RU))fF@sYjgqiFx(Cb4efpB+E87>?&6a5VtTLRypMG* zf}^jlKGeQt8G4K}|w$_y92B({_|$;TJ+GInSo*3$Cddnz8Tc;Z=9?BPw;oRh{6memf(g2 zt^&hq+rXUf62H>6R{x#hYs(w?>om`zY5$V41U$vNp4iEF?g0h@6nsdpV>rpWqH$Mo Qk{d|K)78&qol`;+0PQk{zyJUM diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00008.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00008.png deleted file mode 100644 index fcc883ef0cf6d0828f181c9b9bf892ffa91bbcf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP) zm@meO_n7?yu5_ck7c&PS=bTciCa?UT&Rb6P67esWHjW+K6Z3Mv!Toupo$T3Z^U}>! z&bef>d{M{gHtJ5_@Yftzu>`eiLiV{o8jtdsDuNExZLIFbkHNG7sESEDb7hdJv%Qq- zQSGXF4<3WbCCH!RQv=gYqLJBI^+y&gLAulw-3PUuvMSE@;cnyHhcEyDz<0XrG}Jz0 z(T&yS$awP`-ED(NZ_gFevWn5>$bO?Ywp8tIpxdqwd8(KJ7q46KFizZaU)G$AXI!}x zb{-TTP9J~vKfsj(;LJ|7T%tRHMiRbW4q!$1H000000000000000 b0C<}}PbYO_j-}Nd00000NkvXXu0mjfMbylE diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00009.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00009.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000MjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00011.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00011.png deleted file mode 120000 index 489390ada..000000000 --- a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00011.png +++ /dev/null @@ -1 +0,0 @@ -00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00012.png b/tests/zemu/snapshots/nanox_starkware_usdt_deposit/00012.png deleted file mode 100644 index a58590b988714545e7960f7f400f360ffc5de41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~o { - - // Provide USDT token info to the app - const usdt_info = byContractAddressAndChainId("0xdac17f958d2ee523a2206206994597c13d831ec7", 1); - await eth.provideERC20TokenInformation(usdt_info); - - // Provide Stark quantum - const quantization = new BigNumber(1); - await eth.starkProvideQuantum_v2( - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "erc20", - quantization, - null - ) - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f8b5018a0472698b413b43200000825208940102030405060708090a0b0c0d0e0f1011121314872bd72a24874000b8842505c3d9010101010101010102020202020202020303030303030303040404040404040402ce625e94458d39dd0bf3b45a843544dd4a14b8169045a3a3d15aa564b936c500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000030d40808080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 14; - else clicks = 10; - await sim.navigateAndCompareSnapshots('.', model.name + '_starkware_usdt_deposit', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "14c368c0d32e399470d6113cf796c5f4cd70300766337d8b0ba71ecad21b3d52", - "s": "4207c027959e84fc2242a1f4fd955603f137ba28f67268ffc91fef5d65071b0a", - "v": "1c", - }); - })); -}); From 77f5c9389ba9797ee1902656473b267fcd98487a Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 29 Jan 2024 17:28:08 +0100 Subject: [PATCH 141/160] EIP-712 addresses can now be displayed as a token ticker or a trusted domain name --- src_features/signMessageEIP712/ui_logic.c | 60 ++++++++++++++++++++--- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/src_features/signMessageEIP712/ui_logic.c b/src_features/signMessageEIP712/ui_logic.c index 96d8bdd17..5a169e9bc 100644 --- a/src_features/signMessageEIP712/ui_logic.c +++ b/src_features/signMessageEIP712/ui_logic.c @@ -16,6 +16,7 @@ #include "typed_data.h" #include "commands_712.h" #include "common_ui.h" +#include "domain_name.h" static t_ui_context *ui_ctx = NULL; @@ -184,6 +185,46 @@ static void ui_712_format_str(const uint8_t *const data, uint8_t length) { } } +/** + * Find a substitute token ticker for a given address + * + * @param[in] addr the given address + * @return the ticker name if found, \ref NULL otherwise + */ +static const char *get_address_token_ticker(const uint8_t *addr) { + tokenDefinition_t *token; + + // Loop over the received token informations + for (uint8_t token_idx = 0; token_idx < MAX_ITEMS; ++token_idx) { + if (tmpCtx.transactionContext.tokenSet[token_idx] == 1) { + token = &tmpCtx.transactionContext.extraInfo[token_idx].token; + if (memcmp(token->address, addr, ADDRESS_LENGTH) == 0) { + return token->ticker; + } + } + } + return NULL; +} + +/** + * Find a substitute (token ticker or domain name) for a given address + * + * @param[in] addr the given address + * @return the substitute if found, \ref NULL otherwise + */ +static const char *get_address_substitute(const uint8_t *addr) { + const char *str = NULL; + + str = get_address_token_ticker(addr); + if (str == NULL) { + if (has_domain_name(&eip712_context->chain_id, addr)) { + // No handling of the verbose domains setting + str = g_domain_name; + } + } + return str; +} + /** * Format a given data as a string representation of an address * @@ -196,13 +237,20 @@ static bool ui_712_format_addr(const uint8_t *const data, uint8_t length) { apdu_response_code = APDU_RESPONSE_INVALID_DATA; return false; } + if (ui_712_field_shown()) { - if (!getEthDisplayableAddress((uint8_t *) data, - strings.tmp.tmp, - sizeof(strings.tmp.tmp), - &global_sha3, - chainConfig->chainId)) { - THROW(APDU_RESPONSE_ERROR_NO_INFO); + const char *sub; + + if (!N_storage.verbose_eip712 && ((sub = get_address_substitute(data)) != NULL)) { + ui_712_set_value(sub, strlen(sub)); + } else { + if (!getEthDisplayableAddress((uint8_t *) data, + strings.tmp.tmp, + sizeof(strings.tmp.tmp), + &global_sha3, + chainConfig->chainId)) { + THROW(APDU_RESPONSE_ERROR_NO_INFO); + } } } return true; From 4ff2e4e1c7df57a34d638830d72bf7e39bf998b6 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 29 Jan 2024 17:27:18 +0100 Subject: [PATCH 142/160] Added provide_token_metadata to client --- .../src/ledger_app_clients/ethereum/client.py | 22 +++++++++++++++++++ .../ethereum/command_builder.py | 19 ++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 0833486f6..aa2b27b9f 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -231,3 +231,25 @@ def personal_sign(self, path: str, msg: bytes): with self._send(chunk): pass return self._send(chunks[-1]) + + def provide_token_metadata(self, + ticker: str, + addr: bytes, + decimals: int, + chain_id: int, + sig: Optional[bytes] = None): + if sig is None: + # Temporarily get a command with an empty signature to extract the payload and + # compute the signature on it + tmp = self._cmd_builder.provide_erc20_token_information(ticker, + addr, + decimals, + chain_id, + bytes()) + # skip APDU header & empty sig + sig = sign_data(Key.CAL, tmp[6:]) + return self._send(self._cmd_builder.provide_erc20_token_information(ticker, + addr, + decimals, + chain_id, + sig)) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index cba06a5c9..0ba0809bb 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -13,6 +13,7 @@ class InsType(IntEnum): GET_PUBLIC_ADDR = 0x02 SIGN = 0x04 PERSONAL_SIGN = 0x08 + PROVIDE_ERC20_TOKEN_INFORMATION = 0x0a PROVIDE_NFT_INFORMATION = 0x14 SET_PLUGIN = 0x16 EIP712_SEND_STRUCT_DEF = 0x1a @@ -310,3 +311,21 @@ def personal_sign(self, path: str, msg: bytes): payload = payload[chunk_size:] p1 = P1Type.SIGN_SUBSQT_CHUNK return chunks + + def provide_erc20_token_information(self, + ticker: str, + addr: bytes, + decimals: int, + chain_id: int, + sig: bytes) -> bytes: + payload = bytearray() + payload.append(len(ticker)) + payload += ticker.encode() + payload += addr + payload += struct.pack(">I", decimals) + payload += struct.pack(">I", chain_id) + payload += sig + return self._serialize(InsType.PROVIDE_ERC20_TOKEN_INFORMATION, + 0x00, + 0x00, + payload) From d24d630541e2e5841a2f6208bd59d6cab791716b Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 13 Feb 2024 17:45:17 +0100 Subject: [PATCH 143/160] Bumped client version --- client/CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index 5aae46a34..3d66d0b07 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.3.0] - 2024-02-13 + +### Added + +- New `provide_token_metadata` function + +### Fixed + +- Increased the delay between `autonext` callback calls for EIP-712 on Stax + ## [0.2.1] - 2023-12-01 ### Fixed From c8c6b9a2d1a742d044d66f970f3d51d43a162f21 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 30 Jan 2024 11:47:44 +0100 Subject: [PATCH 144/160] EIP-712 Ragger tests snapshots handling Also moved snapshots root path to a centralized/common file --- tests/ragger/constants.py | 3 +++ tests/ragger/test_domain_name.py | 12 +++++------- tests/ragger/test_eip712.py | 10 ++++++++++ tests/ragger/test_get_address.py | 8 +++----- tests/ragger/test_nft.py | 4 ++-- 5 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 tests/ragger/constants.py diff --git a/tests/ragger/constants.py b/tests/ragger/constants.py new file mode 100644 index 000000000..86b6304ee --- /dev/null +++ b/tests/ragger/constants.py @@ -0,0 +1,3 @@ +from pathlib import Path + +ROOT_SNAPSHOT_PATH = Path(__file__).parent diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 36637a368..71eea7bdb 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -1,9 +1,9 @@ import pytest -from pathlib import Path from ragger.backend import BackendInterface from ragger.firmware import Firmware from ragger.error import ExceptionRAPDU from ragger.navigator import Navigator, NavInsID +from constants import ROOT_SNAPSHOT_PATH import ledger_app_clients.ethereum.response_parser as ResponseParser from ledger_app_clients.ethereum.client import EthAppClient, StatusWord @@ -12,8 +12,6 @@ from web3 import Web3 -ROOT_SCREENSHOT_PATH = Path(__file__).parent - # Values used across all tests CHAIN_ID = 1 NAME = "ledger.eth" @@ -74,7 +72,7 @@ def test_send_fund(firmware: Firmware, if verbose: moves += [NavInsID.USE_CASE_REVIEW_TAP] moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "domain_name_verbose_" + str(verbose), moves) @@ -123,7 +121,7 @@ def test_send_fund_wrong_addr(firmware: Firmware, else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "domain_name_wrong_addr", moves) @@ -154,7 +152,7 @@ def test_send_fund_non_mainnet(firmware: Firmware, else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "domain_name_non_mainnet", moves) @@ -185,7 +183,7 @@ def test_send_fund_unknown_chain(firmware: Firmware, else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 3 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "domain_name_unknown_chain", moves) diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index ec4a22af1..46b4259bc 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -16,7 +16,17 @@ from ledger_app_clients.ethereum.settings import SettingID, settings_toggle +class SnapshotsConfig: + test_name: str + idx: int + + def __init__(self, test_name: str, idx: int = 0): + self.test_name = test_name + self.idx = idx + + BIP32_PATH = "m/44'/60'/0'/0/0" +snaps_config: Optional[SnapshotsConfig] = None def input_files() -> list[str]: diff --git a/tests/ragger/test_get_address.py b/tests/ragger/test_get_address.py index 46c290a1b..60cf4bb41 100644 --- a/tests/ragger/test_get_address.py +++ b/tests/ragger/test_get_address.py @@ -1,6 +1,5 @@ import pytest from typing import Optional -from pathlib import Path from ragger.error import ExceptionRAPDU from ragger.firmware import Firmware from ragger.backend import BackendInterface @@ -8,8 +7,7 @@ from ledger_app_clients.ethereum.client import EthAppClient, StatusWord import ledger_app_clients.ethereum.response_parser as ResponseParser from ragger.bip import calculate_public_key_and_chaincode, CurveChoice - -ROOT_SCREENSHOT_PATH = Path(__file__).parent +from constants import ROOT_SNAPSHOT_PATH @pytest.fixture(params=[True, False]) @@ -56,7 +54,7 @@ def test_get_pk_rejected(firmware: Firmware, try: with app_client.get_public_addr(): - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "get_pk_rejected", get_moves(firmware, navigator, reject=True)) except ExceptionRAPDU as e: @@ -73,7 +71,7 @@ def test_get_pk(firmware: Firmware, app_client = EthAppClient(backend) with app_client.get_public_addr(chaincode=with_chaincode, chain_id=chain): - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, "get_pk_%s" % (chain), get_moves(firmware, navigator, chain=chain)) pk, addr, chaincode = ResponseParser.pk_addr(app_client.response().data, with_chaincode) diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index 17430c1fc..87c1ac0c4 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -12,9 +12,9 @@ from web3 import Web3 import json import os +from constants import ROOT_SNAPSHOT_PATH -ROOT_SCREENSHOT_PATH = Path(__file__).parent ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) BIP32_PATH = "m/44'/60'/0'/0/0" @@ -116,7 +116,7 @@ def common_test_nft(fw: Firmware, "data": data, } with app_client.sign(BIP32_PATH, tx_params): - nav.navigate_and_compare(ROOT_SCREENSHOT_PATH, + nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, snapshot_test_name(plugin_name.lower(), action.fn_name, collec.chain_id, From faa2d3aabf14a56a4c131b215a8273caa5850dc2 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 29 Jan 2024 18:16:15 +0100 Subject: [PATCH 145/160] Ragger tests --- .../ethereum/eip712/InputData.py | 7 +- .../address_substitution.json | 29 ++++ .../eip712_address_substitution/00000.png | Bin 0 -> 472 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 414 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 338 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 336 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 324 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 364 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 472 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 371 bytes .../00003.png | Bin 0 -> 298 bytes .../00004.png | Bin 0 -> 285 bytes .../00005.png | Bin 0 -> 655 bytes .../00006.png | Bin 0 -> 433 bytes .../00007.png | Bin 0 -> 555 bytes .../00008.png | Bin 0 -> 709 bytes .../00009.png | Bin 0 -> 321 bytes .../00010.png | Bin 0 -> 774 bytes .../00011.png | Bin 0 -> 364 bytes .../00012.png | Bin 0 -> 381 bytes .../eip712_address_substitution/00000.png | Bin 0 -> 472 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 414 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 338 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 336 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 324 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 364 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 472 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 371 bytes .../00003.png | Bin 0 -> 298 bytes .../00004.png | Bin 0 -> 285 bytes .../00005.png | Bin 0 -> 655 bytes .../00006.png | Bin 0 -> 433 bytes .../00007.png | Bin 0 -> 555 bytes .../00008.png | Bin 0 -> 709 bytes .../00009.png | Bin 0 -> 321 bytes .../00010.png | Bin 0 -> 774 bytes .../00011.png | Bin 0 -> 364 bytes .../00012.png | Bin 0 -> 381 bytes .../eip712_address_substitution/00000.png | Bin 0 -> 8031 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 6969 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 6355 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 5665 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 5874 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 9258 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 5084 bytes .../00000.png | Bin 0 -> 8031 bytes .../00001.png | Bin 0 -> 7705 bytes .../00002.png | Bin 0 -> 6584 bytes .../00003.png | Bin 0 -> 5585 bytes .../00004.png | Bin 0 -> 5497 bytes .../00005.png | Bin 0 -> 9307 bytes .../00006.png | Bin 0 -> 7170 bytes .../00007.png | Bin 0 -> 7964 bytes .../00008.png | Bin 0 -> 12020 bytes .../00009.png | Bin 0 -> 5642 bytes .../00010.png | Bin 0 -> 12371 bytes .../00011.png | Bin 0 -> 9258 bytes .../00012.png | Bin 0 -> 5084 bytes tests/ragger/test_eip712.py | 144 +++++++++++++++--- 63 files changed, 151 insertions(+), 29 deletions(-) create mode 100644 tests/ragger/eip712_input_files/address_substitution.json create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00012.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00012.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index 1d0263af3..a19ccf3e8 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -337,12 +337,11 @@ def next_timeout(_signum: int, _frame): def enable_autonext(): - seconds = 1/4 if app_client._client.firmware.device == 'stax': # Stax Speculos is slow - interval = seconds * 3 + delay = 1.5 else: - interval = seconds - signal.setitimer(signal.ITIMER_REAL, seconds, interval) + delay = 1/4 + signal.setitimer(signal.ITIMER_REAL, delay, delay) def disable_autonext(): diff --git a/tests/ragger/eip712_input_files/address_substitution.json b/tests/ragger/eip712_input_files/address_substitution.json new file mode 100644 index 000000000..3cff494e8 --- /dev/null +++ b/tests/ragger/eip712_input_files/address_substitution.json @@ -0,0 +1,29 @@ +{ + "domain": { + "chainId": 1, + "name": "Token test", + "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", + "version": "1" + }, + "message": { + "from": "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa", + "to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", + "amount": "117", + "token": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + "primaryType": "Transfer", + "types": { + "EIP712Domain": [ + { "name": "name", "type": "string" }, + { "name": "version", "type": "string" }, + { "name": "chainId", "type": "uint256" }, + { "name": "verifyingContract", "type": "address" } + ], + "Transfer": [ + { "name": "from", "type": "address" }, + { "name": "to", "type": "address" }, + { "name": "amount", "type": "uint256" }, + { "name": "token", "type": "address" } + ] + } +} diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000x3ba4!+nDh2#^rmJ7o`%Hg zW!8!Ry-&rRYc`(gv*SgG%F4g{)mgjDCMG4`2I+qqw{g0-psn6gmU}1lg#>3e9F?Dc zC`I~{j8w>`N3%e(L9ni~mkKVA(6YQ14| zlPzlL(_1^&md@4r#v9r9Ufi^C^5?h-U;t-ZAP{Zof^ELT3xk~lc${APg_A2#ZAa|pKOjk$B!@=g85H=Gyd zibWSK-TuqOjD2UA^XylD*S~*Nf2O}-#qoo0E#h+0ZtiV7sPaat{)4FBy)!F5Yf zzszfNF@Bj~)}s9qmK{gd2P|n;nA{vK7zcD3GI(J2|I!43gUT}xi-LqbUHx3vIVCg! E0Dqgfm;e9( literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e9adb7c1d97fe855b51b4959b8e5dd43beaab5cb GIT binary patch literal 338 zcmV-Y0j>UtP)YMofNAg{IfrMxi2t+`+lJ^#oGcf%E8=PSP0D#*)qIck!T5I!3DJ5i2 zzFMtyS&5{6qj%sOQ$5mM5I@m7aDp-YG5T~@M*0FQ6VFwH^aaQ+eF2u8ey(94eF295 zy??Is0RV`%^9gqP*|Krb7BAJ&bHH>9zcZKjZuxr%eJ-W|O$y`N=5^k9I{&=;Rodm5}8nX0n^CW8N-%Jf6>4hR0ha-s> k0000000000001uY2cQ4mchRd&H2?qr07*qoM6N<$f-Vo4eEh4ZI1Tl}o6 zNhRhcJc1DeYSr%Z|~jet-0^w zbPmoHdPkFbDkfAFIZqLqV%`*AG>>tcN&nH>^A_QEv`^+LdQH$hHGNmkxd7@E$)dclxiT*9(Aip7j aA2ZEAeV^alyvFYmNYvBS&t;ucLK6UDv5k=c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6983285c24624ebde99cd01877237a671516fa43 GIT binary patch literal 324 zcmV-K0lWT*P)P@)+k$jgfEFlcoNftE&eQ%Wz6ixob;E-(t0D#ARjV|D1-}h=HrF1j% z>eY$-j4t5h2y~fn-w~?;SMrt7cBSf8c@5=urj%~pVXW`b1-w>9T&+>vrzxds^3j85 zs{K^-2DH1v)jmV74;spQz000000001hKl2Nk W9;9xsR+eP|0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000EaktG3V{gz`hm*o`%G7 zWAl&y+#l)vcDPj1D3-#N^{L*!N4djQ>#z(vP}hdL{t3~Vs+#kkTi!hs6Dy;+RK`)$ z#@%Cj*q!U@+bq2eExXiX?acbkvm;ZNClxB*ec-{~b!_pnm-!yrb}u&`@n%1_OMZV? zZB%XSO6~inChn5me|y&=y?XsRwg~=DTnb+OM ziEcpG8YmT+hg`Y6=xi@b_IY>tHRm^e6G{qy$N&H5wLtyJvuCs4y{z}vc~431zD)Bk ztMupF)$e-I%atAXE7m!z$0b)K8e}&W;q)k^UoA`A2;pBDM^7D9mR?US$D%%i#)sMV7T{9?9tbkyu*v$ zC$Y_Zk$;)P^y2*gTe~DWM4f Dk{idu literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..71834ce43012af5923f7bd568a947bbfc3c476b0 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WJba4!+nDh3gW6@y+9*4k7 zFMW6XpSZ(Y+{c8ADd`Q{$+z{ZZ?Ls-_;h%10(CKLxO#XubM4Y8bBZ;W#yy+!+E+8+ zy@_h>)WEeC`}SBHgeb3m|77_WsW8pV)h7Ad^^+?CQHqXGa}aZ@Ec(|Gwh*tbk+#e9rtjaxPZ?jncx?V`mm~aw_k~pI4FB!l zw*5W3h~FVrrle=xk<)SpD(?+)lIX0YlB2R MUHx3vIVCg!0N>@Gh5!Hn literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..25bfb06861285b56ddb2b859a1f2d024750d7f43 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QXf5C978JRyuIO=cUVDyH6ZG% zTJeA7!s&WCisC)OrYqT3zkl1b!TH|=$3-Fx3=dqlUW>~9rnRHL{|)Pu+{121eiZJX ze%r%ki)Fj;vF)YGzu9kBOgn#Py}o_3^yU7JbrQ+#nZ;I{qw-8E{_Fpoy8aETjCJR3 zp4;1Qf8ESJ{nXybEevNXQ+}syO54Z(bo+v$EBog67hS7AcF^?n=6Ci9x9>h*{ggz~*>`{DPbIRnD?AqKQpq^DhUYbv*oVwZc_x%1_=2eXDPv?*(_472O`JL_Y(nw8nyl1Cf;Ef8Cj^NnT|K7G`Hj`v@|s+ZU&*OW{(|*P-||m3 z&o1AxH=ehU>Dvo`&o5EuMD91-W|G}p{E^q=uIR2$uQ#l>w7YoUAL!i1xU7AFy>ZM< zwtE?!{|MI^^KvX>JZPeDV+*7I{>yCJ1=oMc-ypH+OTMx2)-UFVdQ&MBb@08{mI1^@s6 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..bb49e6dab8c96dc62f863b1fad7c06d6da735679 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|er&#V>5T?m-aXK&i=4@v2B<2{D^$< zVufmDewH#ZuX7YHc89m5AA4sw;N*4@wdLW_ugNvxsPMxi536M zq?WpUHE%Yw;4E7>xumPdFoH`z|9|fdHq(oV!cWUG-I;DIP_xQebVu)P$HaYNTO55$ zZn*4>y(M@lXOj!>TH#lE{_Va~qOH3p`3OAjYi6|Ysb?@-(aASkW4pI?QsPg;5)YV; zJ^Mk)gF#`=|NjkFb0+CJPIkCiB$$2F!d%hbFEGV>f#b8BgwKr*J=Q#I4-D$-8RYhH m+kTOd`XO-4Pz0otf#H<-Jyn^VXQJdkfOwv+elF{r5}E*?y(Y2% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d7e1524ad54d4ef68d258b2534e13a79754e09 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#bWy7UPebA@ zOY6e_-bwnk1!|L-Iz5;lefd9c&%|cO3C)^}KwYP6S&yBvJpHXu=CI(gQ%XV)?8z1VpKG&F6ax+&hf7+&PbDNIxzihA-)o5}rz5ITHhTY1IPrTL7?ULUg zQXBbqcTm{5QxmQF;&WpI^8d%y@NbY?6g~I4{#D7(p8`w$bfujhOFwvX;?sdwkCQL9 zy)MYRZhG_77sV61DzksQ)0|q@&;0L)aa!bT-^_-j4b$#MZ|>L_q#o z3&Jcw*V-zDJ0BMb-gSV}B73!Y%lS3;jY8wMNL5Y$Cmdd%mQh!+qB~-B(Aoc;|6_}L zFYj`jzg6tnn!6j19;`Hb%NSL^>`&=-U!%ARN9HBhPCSk&-Z^3WR8jeqFs*x%zqP9m z%v=53*79ros$Ge4dk%Jg+4uTprKa)8l=_)&t4{t)+H!ERMC-hgi7B@dv@UT29fJ&f ZJ~O{B@qF>TLEQ`_?CI*~vd$@?2>@N?!-N0; literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2191773cc1207ef058246a23188ceca2342bc2d8 GIT binary patch literal 555 zcmV+`0@VG9P)@xh$ss1VvJTmmikZuMC82>PsNqgfZN!wp>OQ~%EWwm@6+6+!W5No9}Ut6mN6RP-|l~D_5lC@002M>@my@sYpt2tFoeYYo^BlM zyIyO}%!X0pN8rP!U1>m#Yogs|cZCs<2*63F!HQ;gg%OYlkPYRFJH_G%#{8qP$;@UL z4c1hEtIXxko0$!x#+vVdA}S5RY#23i0eDV%!zog{CzZZJ#a0idQ<5x zs!2xnk5Nc9vVRz8pb5H=CY>ZhgRMx?J2N9RxF|zyP&zXsG`J{ZCJ9|0UkN`N^_gO1 zY&rPu7MeX4VEMK9F-FFgw&oVaArvLF%?vK`$VXOYl8~8kIu%g#9GnpvTpaH_-FGK8 z%jgI&Q)>nnWo&IY)jwzuo7++H--ozm(af>$9Q8#Wxf>{jnIsf<1ONa4001Ts|42XY z_(DiJusrX$k7Wn5mN0UywA=A8wggx>p42*M^%OM$X#a6fnd4zJD?mK3-0gT0O#yZv t_gv_>4;=w$^Ks8fM*si-00019&M!?|s>j(4WnBOO002ovPDHLkV1g(i>rVgx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..394eff681fe2041a832ef43e8911ba6509e32a51 GIT binary patch literal 709 zcmV;$0y_PPP)>Y4uIVBk4poGCE<%I>oN%w zLI@#*90zm^z0P^yAus1#Y8nmi)#T6AK5N>A>XB3yO2dq^th7zFQyLa?EG`3pw|rS& zZCL3!YKdLnHp!?1T38<0FOKwY@YAiK4q4({%_*dHWzt1}ot%w33dK8G~1m?(M6gs@j*#n~2)h zK9hl0Yt;b5B%=h>Xz~7S+x*CryIlc%bblJIZu)GigwIipcGQ52U@2lq_Iln`AX508 zGw#y>RNIIldkrbrYFBEt)VM8ocPgLQfKLnXYW>y;TXc_1h$Z)*D_7`RDl8jPE7T0;w^1b?O)YRaZytiA}ImK9x-YZLI@#* zkpIB4e^J8kT=Hy=D-d1DbIH|jFA%jy6_?!ls4Z|#W}}<%gvlr+&*dx*fU2W890bbX ztsSY`_B}RT0i{I!Y_z4hIwBYNQJ#;L0ceS-_8#qX*;>idV51eF5;a5DN}dLL1)!Sy r>Sv>dbn5ulld>ftgb+dq`H%bp+cV`DaUPO~00000NkvXXu0mjfy}d;v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..139d265572a5c3abfba0a635ee794e642b847283 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6%ba4!+nDh2VbWw|f0PBT$ zA!UdDO+OO%DX~@Q#TkqK8wclnPF>h>H9W8rsOg7z*4nMt-mLEE*pU+N;NlYB9psg* zvs7pItz!iT(!B3yTbwUgwXnLY|H#JKpLFZmHeOkG|3$fL_@mp;<#%m=YnHL-{GEs5 z{pZ+TKfca+R_Q-y#`jN4L~8=;82lsLP4g>$GH$8-v#@i;{J+=Nx9_gBF$X&F{U`Nn zO=VH_C49QGv%U5l54w}MRAZe^vd@>&`Tv!-U7q=`uKF^|hWjzx#p*l>dgu%eh z6F*RLj6v;J-HeNKKdt)5xK1qcEC1%etgH4jc#LMY8ddVA2gLzB1O-1#<3;vO{Zf{- Q*9auy>FVdQ&MBb@0GJ?-)Bpeg literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c74d61ab02f3604d1df53fc978c547e4e1b42 GIT binary patch literal 774 zcmV+h1Nr=kP)dp|prcKq1ulx{aPydU579S?UkfH)47W!)riDW4?_!BCcRw2lV34 ztywzZ4Zd(Z;-`@2gBX%5laYmht7+?XH`5~?!!uft7JG5|w|4WEmvRokVs5QJl-JDa z^mwVp>)l)cGkT|kH-%_6?r}r_Ii%WFQDcU@u~`ib%OiFUkurVj^nC|_ltJ5!c+4~x zz+67_KsrpT!dFZ!#zOzMQm!^b4~l8FqCi?P)#zkzYHVQ z%>H6ngPpJo?IcJtYcLg^-dGJ4^FuALCWSfyIf|pNE<7cU`Vod7L7%jnT%b65q@z9} zGHR3bh?^ndh4}X3Fs$8$peNz$_b)8Naq|lKb6r2HVI z*=5PbDJ4e=C4>+{2qBp^HS}4;lUyip`X@Ls2&%SyBJL+p6DdJ~vo@mTNyiLyHFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000x3ba4!+nDh2#^rmJ7o`%Hg zW!8!Ry-&rRYc`(gv*SgG%F4g{)mgjDCMG4`2I+qqw{g0-psn6gmU}1lg#>3e9F?Dc zC`I~{j8w>`N3%e(L9ni~mkKVA(6YQ14| zlPzlL(_1^&md@4r#v9r9Ufi^C^5?h-U;t-ZAP{Zof^ELT3xk~lc${APg_A2#ZAa|pKOjk$B!@=g85H=Gyd zibWSK-TuqOjD2UA^XylD*S~*Nf2O}-#qoo0E#h+0ZtiV7sPaat{)4FBy)!F5Yf zzszfNF@Bj~)}s9qmK{gd2P|n;nA{vK7zcD3GI(J2|I!43gUT}xi-LqbUHx3vIVCg! E0Dqgfm;e9( literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e9adb7c1d97fe855b51b4959b8e5dd43beaab5cb GIT binary patch literal 338 zcmV-Y0j>UtP)YMofNAg{IfrMxi2t+`+lJ^#oGcf%E8=PSP0D#*)qIck!T5I!3DJ5i2 zzFMtyS&5{6qj%sOQ$5mM5I@m7aDp-YG5T~@M*0FQ6VFwH^aaQ+eF2u8ey(94eF295 zy??Is0RV`%^9gqP*|Krb7BAJ&bHH>9zcZKjZuxr%eJ-W|O$y`N=5^k9I{&=;Rodm5}8nX0n^CW8N-%Jf6>4hR0ha-s> k0000000000001uY2cQ4mchRd&H2?qr07*qoM6N<$f-Vo4eEh4ZI1Tl}o6 zNhRhcJc1DeYSr%Z|~jet-0^w zbPmoHdPkFbDkfAFIZqLqV%`*AG>>tcN&nH>^A_QEv`^+LdQH$hHGNmkxd7@E$)dclxiT*9(Aip7j aA2ZEAeV^alyvFYmNYvBS&t;ucLK6UDv5k=c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6983285c24624ebde99cd01877237a671516fa43 GIT binary patch literal 324 zcmV-K0lWT*P)P@)+k$jgfEFlcoNftE&eQ%Wz6ixob;E-(t0D#ARjV|D1-}h=HrF1j% z>eY$-j4t5h2y~fn-w~?;SMrt7cBSf8c@5=urj%~pVXW`b1-w>9T&+>vrzxds^3j85 zs{K^-2DH1v)jmV74;spQz000000001hKl2Nk W9;9xsR+eP|0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000EaktG3V{gz`hm*o`%G7 zWAl&y+#l)vcDPj1D3-#N^{L*!N4djQ>#z(vP}hdL{t3~Vs+#kkTi!hs6Dy;+RK`)$ z#@%Cj*q!U@+bq2eExXiX?acbkvm;ZNClxB*ec-{~b!_pnm-!yrb}u&`@n%1_OMZV? zZB%XSO6~inChn5me|y&=y?XsRwg~=DTnb+OM ziEcpG8YmT+hg`Y6=xi@b_IY>tHRm^e6G{qy$N&H5wLtyJvuCs4y{z}vc~431zD)Bk ztMupF)$e-I%atAXE7m!z$0b)K8e}&W;q)k^UoA`A2;pBDM^7D9mR?US$D%%i#)sMV7T{9?9tbkyu*v$ zC$Y_Zk$;)P^y2*gTe~DWM4f Dk{idu literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..71834ce43012af5923f7bd568a947bbfc3c476b0 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WJba4!+nDh3gW6@y+9*4k7 zFMW6XpSZ(Y+{c8ADd`Q{$+z{ZZ?Ls-_;h%10(CKLxO#XubM4Y8bBZ;W#yy+!+E+8+ zy@_h>)WEeC`}SBHgeb3m|77_WsW8pV)h7Ad^^+?CQHqXGa}aZ@Ec(|Gwh*tbk+#e9rtjaxPZ?jncx?V`mm~aw_k~pI4FB!l zw*5W3h~FVrrle=xk<)SpD(?+)lIX0YlB2R MUHx3vIVCg!0N>@Gh5!Hn literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..25bfb06861285b56ddb2b859a1f2d024750d7f43 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QXf5C978JRyuIO=cUVDyH6ZG% zTJeA7!s&WCisC)OrYqT3zkl1b!TH|=$3-Fx3=dqlUW>~9rnRHL{|)Pu+{121eiZJX ze%r%ki)Fj;vF)YGzu9kBOgn#Py}o_3^yU7JbrQ+#nZ;I{qw-8E{_Fpoy8aETjCJR3 zp4;1Qf8ESJ{nXybEevNXQ+}syO54Z(bo+v$EBog67hS7AcF^?n=6Ci9x9>h*{ggz~*>`{DPbIRnD?AqKQpq^DhUYbv*oVwZc_x%1_=2eXDPv?*(_472O`JL_Y(nw8nyl1Cf;Ef8Cj^NnT|K7G`Hj`v@|s+ZU&*OW{(|*P-||m3 z&o1AxH=ehU>Dvo`&o5EuMD91-W|G}p{E^q=uIR2$uQ#l>w7YoUAL!i1xU7AFy>ZM< zwtE?!{|MI^^KvX>JZPeDV+*7I{>yCJ1=oMc-ypH+OTMx2)-UFVdQ&MBb@08{mI1^@s6 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..bb49e6dab8c96dc62f863b1fad7c06d6da735679 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|er&#V>5T?m-aXK&i=4@v2B<2{D^$< zVufmDewH#ZuX7YHc89m5AA4sw;N*4@wdLW_ugNvxsPMxi536M zq?WpUHE%Yw;4E7>xumPdFoH`z|9|fdHq(oV!cWUG-I;DIP_xQebVu)P$HaYNTO55$ zZn*4>y(M@lXOj!>TH#lE{_Va~qOH3p`3OAjYi6|Ysb?@-(aASkW4pI?QsPg;5)YV; zJ^Mk)gF#`=|NjkFb0+CJPIkCiB$$2F!d%hbFEGV>f#b8BgwKr*J=Q#I4-D$-8RYhH m+kTOd`XO-4Pz0otf#H<-Jyn^VXQJdkfOwv+elF{r5}E*?y(Y2% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d7e1524ad54d4ef68d258b2534e13a79754e09 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#bWy7UPebA@ zOY6e_-bwnk1!|L-Iz5;lefd9c&%|cO3C)^}KwYP6S&yBvJpHXu=CI(gQ%XV)?8z1VpKG&F6ax+&hf7+&PbDNIxzihA-)o5}rz5ITHhTY1IPrTL7?ULUg zQXBbqcTm{5QxmQF;&WpI^8d%y@NbY?6g~I4{#D7(p8`w$bfujhOFwvX;?sdwkCQL9 zy)MYRZhG_77sV61DzksQ)0|q@&;0L)aa!bT-^_-j4b$#MZ|>L_q#o z3&Jcw*V-zDJ0BMb-gSV}B73!Y%lS3;jY8wMNL5Y$Cmdd%mQh!+qB~-B(Aoc;|6_}L zFYj`jzg6tnn!6j19;`Hb%NSL^>`&=-U!%ARN9HBhPCSk&-Z^3WR8jeqFs*x%zqP9m z%v=53*79ros$Ge4dk%Jg+4uTprKa)8l=_)&t4{t)+H!ERMC-hgi7B@dv@UT29fJ&f ZJ~O{B@qF>TLEQ`_?CI*~vd$@?2>@N?!-N0; literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2191773cc1207ef058246a23188ceca2342bc2d8 GIT binary patch literal 555 zcmV+`0@VG9P)@xh$ss1VvJTmmikZuMC82>PsNqgfZN!wp>OQ~%EWwm@6+6+!W5No9}Ut6mN6RP-|l~D_5lC@002M>@my@sYpt2tFoeYYo^BlM zyIyO}%!X0pN8rP!U1>m#Yogs|cZCs<2*63F!HQ;gg%OYlkPYRFJH_G%#{8qP$;@UL z4c1hEtIXxko0$!x#+vVdA}S5RY#23i0eDV%!zog{CzZZJ#a0idQ<5x zs!2xnk5Nc9vVRz8pb5H=CY>ZhgRMx?J2N9RxF|zyP&zXsG`J{ZCJ9|0UkN`N^_gO1 zY&rPu7MeX4VEMK9F-FFgw&oVaArvLF%?vK`$VXOYl8~8kIu%g#9GnpvTpaH_-FGK8 z%jgI&Q)>nnWo&IY)jwzuo7++H--ozm(af>$9Q8#Wxf>{jnIsf<1ONa4001Ts|42XY z_(DiJusrX$k7Wn5mN0UywA=A8wggx>p42*M^%OM$X#a6fnd4zJD?mK3-0gT0O#yZv t_gv_>4;=w$^Ks8fM*si-00019&M!?|s>j(4WnBOO002ovPDHLkV1g(i>rVgx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..394eff681fe2041a832ef43e8911ba6509e32a51 GIT binary patch literal 709 zcmV;$0y_PPP)>Y4uIVBk4poGCE<%I>oN%w zLI@#*90zm^z0P^yAus1#Y8nmi)#T6AK5N>A>XB3yO2dq^th7zFQyLa?EG`3pw|rS& zZCL3!YKdLnHp!?1T38<0FOKwY@YAiK4q4({%_*dHWzt1}ot%w33dK8G~1m?(M6gs@j*#n~2)h zK9hl0Yt;b5B%=h>Xz~7S+x*CryIlc%bblJIZu)GigwIipcGQ52U@2lq_Iln`AX508 zGw#y>RNIIldkrbrYFBEt)VM8ocPgLQfKLnXYW>y;TXc_1h$Z)*D_7`RDl8jPE7T0;w^1b?O)YRaZytiA}ImK9x-YZLI@#* zkpIB4e^J8kT=Hy=D-d1DbIH|jFA%jy6_?!ls4Z|#W}}<%gvlr+&*dx*fU2W890bbX ztsSY`_B}RT0i{I!Y_z4hIwBYNQJ#;L0ceS-_8#qX*;>idV51eF5;a5DN}dLL1)!Sy r>Sv>dbn5ulld>ftgb+dq`H%bp+cV`DaUPO~00000NkvXXu0mjfy}d;v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..139d265572a5c3abfba0a635ee794e642b847283 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6%ba4!+nDh2VbWw|f0PBT$ zA!UdDO+OO%DX~@Q#TkqK8wclnPF>h>H9W8rsOg7z*4nMt-mLEE*pU+N;NlYB9psg* zvs7pItz!iT(!B3yTbwUgwXnLY|H#JKpLFZmHeOkG|3$fL_@mp;<#%m=YnHL-{GEs5 z{pZ+TKfca+R_Q-y#`jN4L~8=;82lsLP4g>$GH$8-v#@i;{J+=Nx9_gBF$X&F{U`Nn zO=VH_C49QGv%U5l54w}MRAZe^vd@>&`Tv!-U7q=`uKF^|hWjzx#p*l>dgu%eh z6F*RLj6v;J-HeNKKdt)5xK1qcEC1%etgH4jc#LMY8ddVA2gLzB1O-1#<3;vO{Zf{- Q*9auy>FVdQ&MBb@0GJ?-)Bpeg literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c74d61ab02f3604d1df53fc978c547e4e1b42 GIT binary patch literal 774 zcmV+h1Nr=kP)dp|prcKq1ulx{aPydU579S?UkfH)47W!)riDW4?_!BCcRw2lV34 ztywzZ4Zd(Z;-`@2gBX%5laYmht7+?XH`5~?!!uft7JG5|w|4WEmvRokVs5QJl-JDa z^mwVp>)l)cGkT|kH-%_6?r}r_Ii%WFQDcU@u~`ib%OiFUkurVj^nC|_ltJ5!c+4~x zz+67_KsrpT!dFZ!#zOzMQm!^b4~l8FqCi?P)#zkzYHVQ z%>H6ngPpJo?IcJtYcLg^-dGJ4^FuALCWSfyIf|pNE<7cU`Vod7L7%jnT%b65q@z9} zGHR3bh?^ndh4}X3Fs$8$peNz$_b)8Naq|lKb6r2HVI z*=5PbDJ4e=C4>+{2qBp^HS}4;lUyip`X@Ls2&%SyBJL+p6DdJ~vo@mTNyiLyHFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00000.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7c64769b176c514f251fa9f466298c59f18f49f3 GIT binary patch literal 8031 zcmeHsc~Fzto;ISQxPYw)G_pu*?ep`~er2x-;`A%uv4Nl3z$0D+Ksz2B|+=FZeq&D^P}nyR_UKdJZ4dEZm# zcb@0@J(yMOOBpB=t?b&nrN*`211|JiVt z@}YX_`k6emT2w!I}290w0byC%;WLANIJVN{yiAL@dN84*^6dzi$|WS{r`O- z#cz`h=KbC4)^C6+)?NP1oBjjPEpF912S)aBWJh|(C zF;^rz*bf`o#|WG{_iS>fcK`AsxQJNi(62{{Hd2%HE+2p=CAsStSUc(}XU@;h!&TCA zak!gW9TRR}xD#QbsYO zz~BUPOJWla7o8g00Ig8mlvo}u*QFqLiYELjjNL(<$a6Sc-yXB#emPgnEuDbdntHdq zYLchKKg^xk*#n`$EVWzBB}bfS!lZWakyE+7QR9si2lpN%nHr#)(?b~7b!C21`J~VK zej;9ek8&{>8(i3^o1-7K`b4N!B%)x!gyGjjJ4xxGgZ&N?n~7BqR(pD zHD*1f1+A~I$A;K$$Z`<^gVqT%mCIOFNhk4z>c&T#^1;hHGEg&RdNy5yF#0RC(@qLC zBI&#EQ~nK5b^GcHT}t_2OqZ>lLVDL_`;cb3d`+l)O{Rw`bR&}Of1dpz1U2KFPUCX9 z6pG!ZAddXWaO;6(UeL}I*tK(BUS7*JU=5t-&#ZDwce7ABFOI~}R{>U(L7up6h`0*= z-hETiR*Z-00)GWQuGJ8dT|m?cpRbn0@vk4&~b%qxiNUg{aEkB)ZE^a27g+LoX?p|hxxRlEwy(h zhx39=N!;?D1fFfE^c9;%5mWZo?EiKwswo9qmU)+YtT}QNjK7TaL>{PQ)X^7c#|&gs>O9L-5?cLOB?wb#a!{D&7*Z96$y*QT8IPHKPUua+2R^5QR6#aTT4ZP zK=%*-^S1EGh-P%>%`;Dw-`{=CAr9PG|Jd1gsse{AKlOQJJ=M?f#Dw(zC47WsFt6fR zi=(MpR@?3`XRi~zc~PcqZ$4X1z&ug!gE|LHS{R%Uu>37wBemo(^^&vK$qIRWhH6<( zOVP>|yO;fDme%j?vCR({A9oW!*=MenC5Lmw)M6~VdLq`pG>zcv#x{PCY;BcDMFaCI z1L*DSa;mmMB>8j(0QlgebDc!qr?wZW!)zl9-9nB+tL!M>z|I~gL0X}~F-K=Ed^!<{ zYWKp5T_TPv9w3~RD_-f+lYAPJl34qmb4EvFiQaze`o5&>VJ#kG`z7=3S{yBsc+nV7 zYCeMI3k7ss^v^4?c|iInDqswFdLZM4ly^(o}qj&NFtapU5gFOnE={cql=l-dwXtjwlLj z_nMcRxEHI}tcU=9ihPnvVtl$s6cb`yH*4k|eci$ti4=`i*Y~r##`c`1G%~t}6PH^V z{jr?(*iFeci{)#H!H5sfXMYwZp$&dcnVRibQ#n!J!H5_hr3dq8QFA<$lhl2Qc_e!D z;Ba|QsV0~o`FSpP49rnyYRGbxi_!{A&7$6TwhNlgCQd|%6;W@FnPN5FkfBXUjn33z zw3?}S+b_1y(D2j3+eq3XemQ%)U}Hi4lKX-vMWubo6_{gOHC~GM#oj1N`zvxk50=Em zN1{w&SYxB&e%I>JkS5UP$c?ev(LP3VorE-j?)7^@q~I2IM*=Pl8{2q-q1|ryP(Sg( zHDuPU+xhG(U%=lleKB1JDDGYgJC+F5T|O3EIUF2;+*h;zD=Don#%$i?QZ49zIacQ! z>-8OIQOjg2sStohvf}EO{i+jH$s00j&UbEPKYV{jaKFttvt6>5c3^UWOAh~zv{8ZP zyt9jZcnC`S$}@)eiA)WNNDxOVXHJiY#r0C@Z|?Z-%tR+^0Wco)YO#u+_MN7{rpgQ# zE7L{P@B?A^n5zJZfs$8({}e=30Vt5H10(C5f@Q*gFf7{q>qaybX? zZC;VvCt6&55^?_)b~xpmsGOV}HrN{8faqDo-6d~Syt*fo;h<`}S*~iDvkT8K8i(V8?AdMmPgC{2id$*2^H0M@!FiRzLxMA(nL_hB zc#pSB2_E^ghbFh{&)vf!-F2k5rW~$7|}ORq*zwz?E|*GZ>m1g%||)X(@Pw>0eRa4$q&dT zAbl8dS6j?dgiUWkA!w~4RAOTAJy)x|<=rL4S-l}meW60sljP~1*%i4>t3=HH3qXx8 zRvvTh9lvjMT;KK&q$Uixn@H&FKb1y00`;~t!;53+$=4*UJa;HO37qDPzS8PGDE}bk z#{@VWo|wos;YUDcfqq>mgb~Ko!~Zht!>Nd>v#{66WuD#ETvt1JxtIQibkh{FMT=3SP292;R@ z!f{4Xb?{2#I~_rXKmH&nwSEI2k)y= z)ozFybvN(8zYcsHJ8uP|&9kBskVt;oRZkk7Ct6xsVzFLe_R{KxjQW8tRKO(DxUhS! znilXrEmhVTe23D-8ZG~3I@+^R>riI5AJ78+UWE$*TG7xJ9F9pw#YcF1k@|pfF&Ff* zoE>(KIopnLg$PSQm{s%O!{N_iW0ODuPoxO@VRApT-!p5akn6ZTJw4CQ!#oWNCp=zw1r9 zNs53O)n-2gn*}Y;WN2V3QGdv@a=w8wCxeXoB$MoIPbQL#N=W#XI?uZkT?JlUTwJ7D zN!2~8QG$hskO5Fq0X`^TEUBG84~9S}v&&yHOfZK!cFo{Bo+C6wHW_4wkph=TKJiRW zt}K4;Eml$Sd#d+~W3Ist3s!F#iGM7*Gz{|rY8#rlSVbW-!WNX~-X3}9b{qf`b#G1c zRG!t}_?&a#{FejQBB>fVJya^SxPNYAqt&9_`Png7wo({jyaM6`tMNQ@%yg8`J+ve_V0m&!v4VA zUjOrj6`mf^%}c=4lfM!&&GOQfAa+$j?3!Ly0@1&Awd|I-#7j%esy4FEWo~U~`z`^i zSn>3A*G`=XGwsO-ouBApA=gbjZMPjBboj87Ck=2d0dE80e1c45wx1J<1DTD zl#smqJXY%Ho_s0<`g^|n1D;B7UO?eP(=S9Z@@t-?qy5iJ>7T*cKaehN!34619{|T2 zTtvvU#|{q$t?ubtxeI|bdDUmW1kkjmzhBGNCmCquIYdj+#~`C3Fcwv2t^t8$T`zCc zm2TBpQ3q22u3{V5Kp;SO4z`||k*~=y(#)Z|frpJCki3BL))K%!YZ#z|UV?+JWd8NrD znisgqRd8_7H;YL1?dEA4x_5LmXzztwHvB4gHpVy*w7rdvGe(wys)1%Vp{Y zKb9Otu%Y#rmX;P(-mY~;tKX77;-wb#2Qq8w7c&iOSf#+@IGXyDXmib+o|(a*=lZ`o zQ?THMH&KpC5D41c^jOw)-aykEfc$xE_8G|1@+7gYfHE6LvVbe`MxDp6mpk@ViUJTk zuc3E|sn(7QYnyGK$5TN82?W~BJ$ayQ`kp+UskioWuYDQzp0w8VYQ{k;3>B~{V5%EV z3CL$Wv~1nro;1k=x>KIsn!{SCKV|m(gFq5DX|o<6!O1^th1mm~Gqqz}SRK}*sbFN+ zRG2aPAb)Lh#4$lsmJK3}hrUYXxVX`{LL@m-%S_AqAUC3~(WBNiv-@Stu;J|B;F1Rr z(lC;4+UI;?PUX@oUZ_^pj+B<(31P?4J2_`|gQ^XbGhLXrm*8Dqpl_dV7jBkDh*FB} z_l)LHMl{2U0?AA=_VucK4g4nWmvTb3mz5;MB?9I75j$0&k1Nlra$&1ZEq8JN5vd+M z+fR%$un|~&-d;{wKCt<*UqRia=rv@WWh5`C$KhNYdb9Q8aGtLD0U;xk#tDAYfwzlH z5#M85@7d(H#~64!pN$FmRSSJ|sjR~^1?C{RlUB7aDh9?5#1gBWg|!y1U(Vn{m*?6M z0jO;&?x`ctcmh-4TVZvDTXHF>`nO8%NS(PNpv`{!$yypUwR8V~l>xFYi!_Acmj@g;rc0 z5vA{+Esix&biQR9Z*+5r|FGE{F9tF(gk|JByC1%h8;x;4RVr@Yl2bVAhS`A1awDP{ z6&Cl&OvPQU_af9%AReN}163ff8uwSZ%WtvX>&N{&?8k3gVI0Z6yutFVPtf71{xIWW>O2I}Kfki&W|76cl(f4t#6|5?VcqMk z#fk6T;O^DIML^#&7&O99ysfJoycLf<*&R^NPXfBBno`Z9y4%OD2_`8`dxV<9?AUfM z6Z;Do>PlHUpuDZuo+;v_7^qTrf_Voe^iqe(#Tt@rq|y!A9kubFXhQ$<->&Clefhz^ zAZ}JKB_KAqen2<0Vm(?{^=hf4O76Mcvp=qRMN8J)9BM~IWm{{4*@@JooRNl)niv?a z`kcl{f_a3Ni<;Lw>>CV=7D%|CGt&WN5zJ-h{cp5-+Iisz(FaR87sUG_LtFYguP}6l z{+=!4u|F{dM<01-=&&S0=Aud1@d^`DE4|Ive>nfjNffqb+*b4S#ax3wc+3E?U`r_KKXC-&bw zk6Jp%A=cqIQ?I6rzlOon)Zn5(5<`T|xnBNPzt(@ps~%{5+D>NxE_^&J!r;3DhoM$C zJZWcKv(<8XfVS`L$FE}1bfKk)w7yB~ z_FEd973a)GZvbuU;v(Kd-wI}fun&P+Io{3(@wB9(ma_H7jqIfuwTD)eKtkfo zJyUfBwpF_>WqVTH30?m?;MQV6;i!8~k#6w9(U81AKp;bD7ES)Q^Q%X3VKO_QKu3~x@kdW4~bqgqnn8nu=S~3FhVQt&Exc{#n1x$EL58u}atS6lpt*0xA zX{HAs-qtNjv+AkR0Zc5A9!qXx)shm;0QDVtW>P~x11YsEytVv0LM6HZ+O`&Z=m~fY z^SX}fO-5><^Qw)lLt`Ouz&_6`C75fvK`t7~eOiXa*x@gn^fNAgrO5foUp7;E=BrG% zGFHFjp4XXZxqx+ygKtlwUqj@C1v6z+c1DSi>H3}}$jw_mv*qYtO93klr0&Lk?~ z%GM!S?x~w66%`e`t~CIK zY`$h@SBYaHEUm;3<&mem)R5UJPx-AOxi-g6Zor@QH~}WTZE^AV!~L}6(1VSFoGuQ+ zntrsi+iy^FAJySF9{D7tvyYJR5~#loHvVzX%og;+U?(w(@#b??2Y#DiiQa8qv{D{) z*hxvMkaH757ks!`@B4*m;i0RX-sPK+HZsf2?wRRgMXla`H^7y#DR+eb8ahbqeebXs zN*FI879I>|XYDT^eC>S<--p}WGe|hKJKiqJ0?!&pRbDisZeZS}4 zZ(gojHtBED($d=E_UkWawY0P!Xlbo^`rR7fi9NKHqNQb^<@U?ZzSoLodE=H^t`B zH#NhtR2U4dg`Cr*$+WaAehm0&Px|^>`~SK9=UuQMn{rAH9aO5?5nK>+(b1BbaI7G8 zRD2yWN?u2aF63N(a+XsmLQ}agnDoR@mB_wdQgXOGB3uU1U9lbk2PB8a*$|o$Y=b5c z6T~bmuN2V`+}=p`@!l94x*V%>A>f6di#I5r3FUd;J@?u~u-tK`$zEZ>i?LCvunc}a zyx`P^_!a|F64W&vMKme)>4|LkSjme;CP`usq%4g#Bk1(uW<+6mbfHgwV)rFNxv;N( zON#HH^fvVDptSPe;VZhYZ^t^mJrg%z?V8#!G$Ry7&wIskQ<{RLaiGkSswy?8I=b-P z`G;riuFYROCS3kK=MBxXoE?pa!vp)KB{Ehy2I1~yM2K|g1{_N5KnLPfeH?kqD)^hKL`7o+u2FJXGmYSDTbt$!v;$S=y zV{_AUL!5evs}{a+&xXF->GCqHc1j|T;JE0Y)^yYF{Waz`DM1xFpG;m)`fJ&LBY$VL z3QH=s^Q)@5oI0ueT3GJb?^9zv2rxsp>U7(q7o%%3tNl zs}1gp&+=f5zA5 zEIXWbHOP-$EewJ)`aJ-LC5@_ju=EFMy|1tL-S?-Fo7SriZYjejcU>2Hd>Dv$&Y2Hy zO^J3KFkn2ez7Pi5C4j$t{bIx}Ag}x2kC9D5TP6dOL&+yRqo1K@FG0+b!z}wA^-Ux_ zlzMbJ^ITEEt785|t2q0h(WFK@<3#FwTh`3Zw_1I#RP}cz5?TU4tga=N{!$VKdFpa& z>JcZkP*}-eIWg<2s%jh#dbo4A&Bb116cKtTZy{5DW2xYoFGp?FY06X9zQn`_35hCd zoxko{JAqI8)ufh?zQ~5yC(g*{amNa(2Sq>MJo|>_Xl8!o*8(6+O;8x}R1X&SNZ#8; zMukti+h%uPOh}Tyxz@w$xf=hQeDs`F)M^ti79wS+I>?efcgf?;CaKRJGmuVT^LEDk z=6H+L8*@e*td@lxYhLYy+*D$tWWk7q4G}VEE8-L+D3Ox=9OdgGB zv`d5;t^D|0+#?_eC&@0}BhLH82*(FJn*bQ>KJJh4SSrDbEF82wsaT5z`ER^oC6*cb zahnOfN*{tdp_3H>XGSqyKLkj?sbffgW=ZN+FDCXOI4spAfCLTU@^a@ z)Cuyf=^Z+j-}+bMIcitQVIt0;wMTTC%joon!EDRaCmyK%@^f|CKc}syXg-~B4Nl8= z`%Kd*;wK*uP^CCRAh}3tSZ%-KQwF``*>8-hyzak3Yrj0MdGF$FnD&}eI$L!dd?pQr zazjp_z$;u-qT{?&Y!<)^z7leyjGwO7EDIu}SCXesq-@6n4qejbfi74fggT;kf za3Isc{$OgYd;6c0y)GN6Jf3P#_Hw)(fTcf&5z5`JSOO!MU)gudq3~R21;&h6$SVtU zw*T(W`kBGnaFy95S76~7Equ|gA>19&X$MmOlmwOO`#0Dt^QuJ(pcika^Q+)*GsMh% z-B>EFS<3Q>qLWA@A0}P$z91ddbh;1YLagd!RBg*UuqqK2BZDPy$#+#5EFMWQb0k1p} ziym0H@l&nZcYR7b@&-eyV{|9k8&#hSsvYd_?|0?1fSLx#70jCb7Wqsmnn!Zaf!+$Y z9d6uuC6#tmb^YD~RU85~UO9s+R#fnuel>aO9$qD1Z-R2?#}@YW;^s_e`Yd_B))*kz z$5o__339)<9G&*pp*owN&Kc`%)Xv!k+NayG=FRv2-2QRFKT+_{M)-f13s#hLoq5-x z*%Sn~U0zpJwdklxUs(NbZVO_55=oJ{w}ZD;2Um$`(S^1q_$d?&7H&nnL93BCT4sI` zAyufH_6necR8LiiXdq^szCP77fa;5fYl_*;h|ob7Z{1NZpdw&q;5o@{K`$~(0xa^w z88T?Xv}RZ(tK85{#Q`qOb<&8kei?E<$;$Oi^>}9I6uz zlQ4c|>W6hA0zh$THA?by);E@`!Yz5SLA$b&#u|cNunc}U!d&dF{KY)ip*1saA>9{9qK&J*|g5AYrDoA*mTmaDldZ5TH_G0}=yufp=3 z7JGLm|0yS@)h?B=?rGFnXKce{MMdZCNCDYE*cUH_zJ)kBJ=ZkqM76WZBETf1e7IlM$5PtkDbJ2=S>>j?DctJL-4ePq6WiQ`{z^WMvmhE zKQZ0JPxW?flQ+&i3Hum9qXD)l(=<(qW|0B>^23>c(WHKz-CKNeb84ml2BRt^Cw+aW z0%H=28+ZI*WG0Q9%lXKfXtpMhH|g2{HCc3fo;~JW*oG}<7_)s&p|f|Ogs_ix`NC^; z2rf_xJ$!cTPyqjkk*i^w=&Lfy@&0rU!@`ja#*g~C>Xoy~1gqAhq12X;nn6+0AV!w3 zq;N*Iul8K)qtCL5C~x6u*W0#J59XDe$bt(yC3Alz z%@NF);8*#|$DKu6dvZs2F1YYcb|}0A?zf^h#Y>Zfm&soKWMMGQ``v5$XrBMv1Tjq& z{s{_9ERw+|U&vgfic2_h_G!{HfVS(9r~HlKj9|$SrX>o9`C#xRsrANBRJSI5&>DNe zN5g|EJ)E>FjkVpl_)wWaKe8-qM!qxHWQ19~r>w;w@otA^Z&8vaQXrETST_kKPVro5 zl>8&*EF(|1VV*n++#o;y@){aFEnAvyOMNab8r}yLxMQQjd~MSvo7aiBNr`#t`%0DC zqi%z&d}qKAoHTIqM3>tYBlep2>e=1c@9XIvCqK6adlE-Az`tU`Kk7Uudy1GWbJyMZ z%Y*I9aX@HLxz9NPRHHpxH!=Vv3xh^ii4*{dSB5*i5S>(P^ybmKxgc z6A43Yl?v;oMxu4^b=t!+>4W@MO&5V&`cYl7nmaeqW;y)>>)t!HqS}Y7&(1o^tk;yV z7VX1#FYHwVT5HYK)Y|fB8g7DY{6S+UPUe5Iy7tCrDqB3x)vrmMbO|*t?xxL0v$GVE z_5%wwb_Z9ng18ljIgeorzF;RZ^vjzYX`R6eYoc|(gqc_66aISt{_pQZXrKGePj}AV z<_6?RVt{s;Wr&tlAKU zp8%d%1S?fw)t3g-Km^yuGY=lt-nvmvqScrf8`qfirGlZ)3H?)4<3U`t z9|a&pK;vANRyuqE7o1c5;^GakY;rgi5j-fp+;qk|Uzns=TwEMA1w`G<7h`SfL>bd2 ziYM@s1s;GVP!GEDO;0V=x${k@#PD8zp5T@r869wKMmVTntbI#@(|KxUf4rR`D;({; zLx7?Gx<&2Q+TIS>ps~&COOcuY>LNQ7&^3@;pIlJp`L?iJIgSC#~NP2QXw3IT(+8W&jn%Y)38wdtxarMuu&;JhbT9>jPC z?G59M$6rICgpu}urb@TF_HlyiMP`eK`6+ZK!>!DTW4tEr?AiBKRcI_$9C=Pi1vt{y zjksMIw;)}W&Trn1|AwDfsqxW4^CXV}UjEQO#$gW(sRVT2*qNGBfZUs_zWV)xJTU~| zkT{ieaDYy$^!yYY%3=JQSzixg)&tDANB=I9I-9dj$NfNLL!jdJ$sI-=UvPhew#u3x zdZyF#5pAT1RtA_Oi~ukw7C$H~Tz@Y@^;_s>01eJ`rh-jE$fDGXDg}X?(xG@Cb#rC^ zI+5uavkk0TdagFu$q5EaURt?A=Mn8KFb&7zV!596h2?vp^-rO7SO8N#nJ0#WcBv-3 zgcp7Aa2M}Z+aL4exa%o3qK+SI0Z@96oGpetfp1yWNWK6%m%~p?bip26{M^FA!s^-T zZtRktE8-Bw2ebMwa=b2b2r; z)g6!l^}2X4NtXXcvi-YHdI^UDc%gxKqpcaGRK3UWp)}CsB|!GIaa#P?QnwJ5wn1-x zpvdIi{{4Z=7?iIfS>w>a8nnu;H3r=Lc03+?8(2I%9A#&igT=?sCtpVqW%(_UZCTl? z>u`YZ=d-)vnPr;b6md#0^nt*)Lq~FNSo1%97)(pN34adBq}&Rb_PElAtC(MHUb{Oi z=VK+Qd;flu6UAQi%_sm_FgkBZo^>k~HNXi&fYm$lHW0Y#aAs2a2=$<3sOasN(xgnw h3wQo=CrKKe?eEmz2Qtxaz>%1in~T>kHK!ud{|lEl>P!Ft literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00002.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3100bcce085eca1d931f1e5f6f22aa72cffa65 GIT binary patch literal 6355 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 ZPCkOsu70uw__M<7bTIT(=U*>g`4^O0v;_bF literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00003.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..404c495539894757c43e33a5c0799dfcb9f8a6cb GIT binary patch literal 5665 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 IH0t{Q0Ju85O#lD@ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00005.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..726c927de78168fa07aa80608c7828216e71cc9c GIT binary patch literal 9258 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 N4D?KH!*4n#{ts`Zd}9Cr literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a8fd4eb09009370b79a8e7d92355e84bad3426 GIT binary patch literal 5084 zcmeHLZB&wJ-nXVQQ?sYesN#mc*DSArvuuui&##U|>JL*E_Gt=5P& z=+V(%u7+oJBMUv;!_`kypQ`bxH~!zi!MqfOTGoi#syg2YC@|D4RJFHuA2$jy4?(di=`_?+YS~ zpNlJQJfzFH>uu7bg;)N0IGo08=d_-fANKZS#rD!8Mj^=+=C*8xIu)06EorsdekG|} zuGi~5U6)j=i&)5|qsV<#@ovo{7v^t$Gs^NeFb#T+b652i8K6exRAb+7!?49X9`C|F zUxSFD?jo4+a}SwuP3CnX4a@xU5)@`mO=%ecS4bkBW7s$>7NX1hDLKe70f^IEMmwxg z4{i&)_yjpSH+Ov4tW+vl$f~*>J9h9Gv(>^hp;vE+ePahhl>dJD?L&13nM|J5=K8s9 z<#H36#OX?HUS2mi=E>uc@IGVK2cP9f5-+1C^aevLfgSsB9-p5Uv{1Vrm!H4$Xe%;5 zdlg(iIb};`#5FOK?@MobQdnyg6C8;l4Jn#;Qx}L+M?*Lt|RxpBi4sFOI}Z&|=Ao0YFJv+-P6){o?WY zK;zj}YK9P<3B-}T%G|C8QX_wSVkqu$0$0}i96PMNs4Eak>>~-GCwjBdvUr^6)fz zTOv=9c_Jbz`W<+%15?+#ySqJ^dEWkLKNoUwjRxae6RKvaF6*dOyW#FJ&f+b5or-(p zd_^XTu8Gd-gU%^3V5`)U;y|iXqn+j{#IrmVh;wC>f?5fs=!+ubX`RPKEGCml)U{)| zCgK!jT_mCF5_z#c^%q)Q5^jz!i@Qxkqg102b@9THgESY;uY=WfsiD9U_#{1YBz4m; za1H>7Gq?s3kabZdhvAneU|li0);r`82rwOap4MbEk$L2nE9e>3cwmhPC(CQE>K(t< zcD}L>#;LD{kD(Fbw-uqZ!(pjiN!*T#0hT6iT;-9~e#-Q-_6Bn)b0M?f^SjlP5oYbP zEwYf333A!>Zn+L?6u``7mMJYK2uGEw)#sZk>wM6&?%(7Am zwHh)uu!Y_7iwKI^DW4}lix@5kP9sHkDl0vl*YhQhze5T1LhGUDd^@$ykl_#$o}4+@ zewP-|(nf8levvy@acEPcMd_=1j0gKEeIEY@|B+N&oo^vQ@CS46YD-riR5I!++&>_8 zybdwDZh7yjolg~HE;|&V5jfmS9}p_zfp_nuzD=QYsX5vctQBH z`~glZuYx87_HhWUS54upNXr$3`I0fA@)Yn+K!~rEO+@IN#{tg$X?H2xk=LK&hc5dt zSTN?}DP9z;=$h4LL;T0gfH++p%r~v+7h11(^Cq^N7bIWR@|itX4D<5}4Tepl(OL*@ zTpKHMtdv85nJ+(23Qw`wWnY9{A(+gDfW36Q5U2?O+rfy77~cJs(w3L@SVZZQq7mj) z6bf}eM{zEJa4%1We`JUA8MEUW&g14heobqw45guY$_!d=d$b`jo)Pom867L!xqm7o z7*(0vGU5k?x`->H>I!S5Z!$xZzCIXWqP|X!eHcwVX^#|j0RYH(o&$HGkKakYIvZNg z@%O9kK#F>kvvSw>s?}>YkaIAqr-s z-s;ZC97oZGeTUu4;fzuI!tznmBcYTLO*bT%Z=F(t;55;Vvz2@hISX&wUisG(vA&(pO1?v-edAzkENnBWDa`^akG254dJU=HkM_!tCs9t7{?si;aO; zEVeM!(#NFLJAaduK8Lq`aD%g?tmy&QFd8m9 z^X(4NdGMG|J#Ho_>WKmnL~7EX)0?-e$!+B`IaxC=6Z%~PB$t$<#KDjzDy7sn#Wng4 z_A`AX8(&#hzl2NAG}AlMDHZCbm|ZGFe58^ih7m4} zp2~^FVYSri*6v2{g7UO)D?mzAWR9T4SU_@8-!rIfYiomf`Om(7{DXFNMesK5VrTWr z#l!hM@kg2p_J#~l9HWwLvJr4QRS0cBOWQ-}+StfV@Sq6XZHAIt77x0PZzCRC3@*^= z&xu$z-9u^}%)A`wQr(+e^!(SHxcPH4m31TeBlxccoLCA&y6SO&)G4R|+-s*}58l>c{g;@YVQkH* zA3Kty?|+g>QX!O6#im`h+-qB75>*h4X)PSF8`T^-6fUdS4|JZ@dDWb(Q7vpid-j#} zA1e5~4t5oi_1_o82eV7}!2LhujBgf@EcMBhq2fjXtd^Nx0ST-KYI;_-wNRm)%*Mvt z&|prc#NOdRgbJ0qY-D4;ZbX9#3k!3_a-AAMsie| zOzoG*^UYaOiDZylpJeH==X=FV%CB){+6}TyP76c)*~#DYx12wpIHF%g zamN8I|G?ep`~er2x-;`A%uv4Nl3z$0D+Ksz2B|+=FZeq&D^P}nyR_UKdJZ4dEZm# zcb@0@J(yMOOBpB=t?b&nrN*`211|JiVt z@}YX_`k6emT2w!I}290w0byC%;WLANIJVN{yiAL@dN84*^6dzi$|WS{r`O- z#cz`h=KbC4)^C6+)?NP1oBjjPEpF912S)aBWJh|(C zF;^rz*bf`o#|WG{_iS>fcK`AsxQJNi(62{{Hd2%HE+2p=CAsStSUc(}XU@;h!&TCA zak!gW9TRR}xD#QbsYO zz~BUPOJWla7o8g00Ig8mlvo}u*QFqLiYELjjNL(<$a6Sc-yXB#emPgnEuDbdntHdq zYLchKKg^xk*#n`$EVWzBB}bfS!lZWakyE+7QR9si2lpN%nHr#)(?b~7b!C21`J~VK zej;9ek8&{>8(i3^o1-7K`b4N!B%)x!gyGjjJ4xxGgZ&N?n~7BqR(pD zHD*1f1+A~I$A;K$$Z`<^gVqT%mCIOFNhk4z>c&T#^1;hHGEg&RdNy5yF#0RC(@qLC zBI&#EQ~nK5b^GcHT}t_2OqZ>lLVDL_`;cb3d`+l)O{Rw`bR&}Of1dpz1U2KFPUCX9 z6pG!ZAddXWaO;6(UeL}I*tK(BUS7*JU=5t-&#ZDwce7ABFOI~}R{>U(L7up6h`0*= z-hETiR*Z-00)GWQuGJ8dT|m?cpRbn0@vk4&~b%qxiNUg{aEkB)ZE^a27g+LoX?p|hxxRlEwy(h zhx39=N!;?D1fFfE^c9;%5mWZo?EiKwswo9qmU)+YtT}QNjK7TaL>{PQ)X^7c#|&gs>O9L-5?cLOB?wb#a!{D&7*Z96$y*QT8IPHKPUua+2R^5QR6#aTT4ZP zK=%*-^S1EGh-P%>%`;Dw-`{=CAr9PG|Jd1gsse{AKlOQJJ=M?f#Dw(zC47WsFt6fR zi=(MpR@?3`XRi~zc~PcqZ$4X1z&ug!gE|LHS{R%Uu>37wBemo(^^&vK$qIRWhH6<( zOVP>|yO;fDme%j?vCR({A9oW!*=MenC5Lmw)M6~VdLq`pG>zcv#x{PCY;BcDMFaCI z1L*DSa;mmMB>8j(0QlgebDc!qr?wZW!)zl9-9nB+tL!M>z|I~gL0X}~F-K=Ed^!<{ zYWKp5T_TPv9w3~RD_-f+lYAPJl34qmb4EvFiQaze`o5&>VJ#kG`z7=3S{yBsc+nV7 zYCeMI3k7ss^v^4?c|iInDqswFdLZM4ly^(o}qj&NFtapU5gFOnE={cql=l-dwXtjwlLj z_nMcRxEHI}tcU=9ihPnvVtl$s6cb`yH*4k|eci$ti4=`i*Y~r##`c`1G%~t}6PH^V z{jr?(*iFeci{)#H!H5sfXMYwZp$&dcnVRibQ#n!J!H5_hr3dq8QFA<$lhl2Qc_e!D z;Ba|QsV0~o`FSpP49rnyYRGbxi_!{A&7$6TwhNlgCQd|%6;W@FnPN5FkfBXUjn33z zw3?}S+b_1y(D2j3+eq3XemQ%)U}Hi4lKX-vMWubo6_{gOHC~GM#oj1N`zvxk50=Em zN1{w&SYxB&e%I>JkS5UP$c?ev(LP3VorE-j?)7^@q~I2IM*=Pl8{2q-q1|ryP(Sg( zHDuPU+xhG(U%=lleKB1JDDGYgJC+F5T|O3EIUF2;+*h;zD=Don#%$i?QZ49zIacQ! z>-8OIQOjg2sStohvf}EO{i+jH$s00j&UbEPKYV{jaKFttvt6>5c3^UWOAh~zv{8ZP zyt9jZcnC`S$}@)eiA)WNNDxOVXHJiY#r0C@Z|?Z-%tR+^0Wco)YO#u+_MN7{rpgQ# zE7L{P@B?A^n5zJZfs$8({}e=30Vt5H10(C5f@Q*gFf7{q>qaybX? zZC;VvCt6&55^?_)b~xpmsGOV}HrN{8faqDo-6d~Syt*fo;h<`}S*~iDvkT8K8i(V8?AdMmPgC{2id$*2^H0M@!FiRzLxMA(nL_hB zc#pSB2_E^ghbFh{&)vf!-F2k5rW~$7|}ORq*zwz?E|*GZ>m1g%||)X(@Pw>0eRa4$q&dT zAbl8dS6j?dgiUWkA!w~4RAOTAJy)x|<=rL4S-l}meW60sljP~1*%i4>t3=HH3qXx8 zRvvTh9lvjMT;KK&q$Uixn@H&FKb1y00`;~t!;53+$=4*UJa;HO37qDPzS8PGDE}bk z#{@VWo|wos;YUDcfqq>mgb~Ko!~Zht!>Nd>v#{66WuD#ETvt1JxtIQibkh{FMT=3SP292;R@ z!f{4Xb?{2#I~_rXKmH&nwSEI2k)y= z)ozFybvN(8zYcsHJ8uP|&9kBskVt;oRZkk7Ct6xsVzFLe_R{KxjQW8tRKO(DxUhS! znilXrEmhVTe23D-8ZG~3I@+^R>riI5AJ78+UWE$*TG7xJ9F9pw#YcF1k@|pfF&Ff* zoE>(KIopnLg$PSQm{s%O!{N_iW0ODuPoxO@VRApT-!p5akn6ZTJw4CQ!#oWNCp=zw1r9 zNs53O)n-2gn*}Y;WN2V3QGdv@a=w8wCxeXoB$MoIPbQL#N=W#XI?uZkT?JlUTwJ7D zN!2~8QG$hskO5Fq0X`^TEUBG84~9S}v&&yHOfZK!cFo{Bo+C6wHW_4wkph=TKJiRW zt}K4;Eml$Sd#d+~W3Ist3s!F#iGM7*Gz{|rY8#rlSVbW-!WNX~-X3}9b{qf`b#G1c zRG!t}_?&a#{FejQBB>fVJya^SxPNYAqt&9_`Png7wo({jyaM6`tMNQ@%yg8`J+ve_V0m&!v4VA zUjOrj6`mf^%}c=4lfM!&&GOQfAa+$j?3!Ly0@1&Awd|I-#7j%esy4FEWo~U~`z`^i zSn>3A*G`=XGwsO-ouBApA=gbjZMPjBboj87Ck=2d0dE80e1c45wx1J<1DTD zl#smqJXY%Ho_s0<`g^|n1D;B7UO?eP(=S9Z@@t-?qy5iJ>7T*cKaehN!34619{|T2 zTtvvU#|{q$t?ubtxeI|bdDUmW1kkjmzhBGNCmCquIYdj+#~`C3Fcwv2t^t8$T`zCc zm2TBpQ3q22u3{V5Kp;SO4z`||k*~=y(#)Z|frpJCki3BL))K%!YZ#z|UV?+JWd8NrD znisgqRd8_7H;YL1?dEA4x_5LmXzztwHvB4gHpVy*w7rdvGe(wys)1%Vp{Y zKb9Otu%Y#rmX;P(-mY~;tKX77;-wb#2Qq8w7c&iOSf#+@IGXyDXmib+o|(a*=lZ`o zQ?THMH&KpC5D41c^jOw)-aykEfc$xE_8G|1@+7gYfHE6LvVbe`MxDp6mpk@ViUJTk zuc3E|sn(7QYnyGK$5TN82?W~BJ$ayQ`kp+UskioWuYDQzp0w8VYQ{k;3>B~{V5%EV z3CL$Wv~1nro;1k=x>KIsn!{SCKV|m(gFq5DX|o<6!O1^th1mm~Gqqz}SRK}*sbFN+ zRG2aPAb)Lh#4$lsmJK3}hrUYXxVX`{LL@m-%S_AqAUC3~(WBNiv-@Stu;J|B;F1Rr z(lC;4+UI;?PUX@oUZ_^pj+B<(31P?4J2_`|gQ^XbGhLXrm*8Dqpl_dV7jBkDh*FB} z_l)LHMl{2U0?AA=_VucK4g4nWmvTb3mz5;MB?9I75j$0&k1Nlra$&1ZEq8JN5vd+M z+fR%$un|~&-d;{wKCt<*UqRia=rv@WWh5`C$KhNYdb9Q8aGtLD0U;xk#tDAYfwzlH z5#M85@7d(H#~64!pN$FmRSSJ|sjR~^1?C{RlUB7aDh9?5#1gBWg|!y1U(Vn{m*?6M z0jO;&?x`ctcmh-4TVZvDTXHF>`nO8%NS(PNpv`{!$yypUwR8V~l>xFYi!_Acmj@g;rc0 z5vA{+Esix&biQR9Z*+5r|FGE{F9tF(gk|JByC1%h8;x;4RVr@Yl2bVAhS`A1awDP{ z6&Cl&OvPQU_af9%AReN}163ff8uwSZ%WtvX>&N{&?8k3gVI0Z6yutFVPtf71{xIWW>O2I}Kfki&W|76cl(f4t#6|5?VcqMk z#fk6T;O^DIML^#&7&O99ysfJoycLf<*&R^NPXfBBno`Z9y4%OD2_`8`dxV<9?AUfM z6Z;Do>PlHUpuDZuo+;v_7^qTrf_Voe^iqe(#Tt@rq|y!A9kubFXhQ$<->&Clefhz^ zAZ}JKB_KAqen2<0Vm(?{^=hf4O76Mcvp=qRMN8J)9BM~IWm{{4*@@JooRNl)niv?a z`kcl{f_a3Ni<;Lw>>CV=7D%|CGt&WN5zJ-h{cp5-+Iisz(FaR87sUG_LtFYguP}6l z{+=!4u|F{dM<01-=&&S0=Aud1@d^`DE4|Ive>nfjNffqb+*b4S#ax3wc+3E?U`r_KKXC-&bw zk6Jp%A=cqIQ?I6rzlOon)Zn5(5<`T|xnBNPzt(@ps~%{5+D>NxE_^&J!r;3DhoM$C zJZWcKv(<8XfVS`L$FE}1bfKk)w7yB~ z_FEd973a)GZvbuU;v(Kd-wI}fun&P+Io{3(@wB9(ma_H7jqIfuwTD)eKtkfo zJyUfBwpF_>WqVTH30?m?;MQV6;i!8~k#6w9(U81AKp;bD7ES)Q^Q%X3VKO_QKu3~x@kdW4~bqgqnn8nu=S~3FhVQt&Exc{#n1x$EL58u}atS6lpt*0xA zX{HAs-qtNjv+AkR0Zc5A9!qXx)shm;0QDVtW>P~x11YsEytVv0LM6HZ+O`&Z=m~fY z^SX}fO-5><^Qw)lLt`Ouz&_6`C75fvK`t7~eOiXa*x@gn^fNAgrO5foUp7;E=BrG% zGFHFjp4XXZxqx+ygKtlwUqj@C1v6z+c1DSi>H3}}$jw_mv*qYtO93klr0&Lk?~ z%GM!S?x~w66%`e`t~CIK zY`$h@SBYaHEUm;3<&mem)R5UJPx-AOxi-g6Zor@QH~}WTZE^AV!~L}6(1VSFoGuQ+ zntrsi+iy^FAJySF9{D7tvyYJR5~#loHvVzX%og;+U?(w(@#b??2Y#DiiQa8qv{D{) z*hxvMkaH757ks!`@B4*m;i0RX-sPK+HZsf2?wRRgMXla`H^7y#DR+eb8ahbqeebXs zN*FI879I>|XYDT^eC>Sd=8MMdST-g7>k5ATQbUhk)~7ayMMT3qXS*8M#9@V|fS z!DW|ATI=-JX=rF@+1s7Js-dy$k%q?d=WCXOcdT6NN;NdLf3ZJ*_FD9_G0|8|Ut8bn zD^hFu>bH)U9UeLE+;?W}<>ikx_C4M7e5G3g^vCZ#k<``!>05s5#x`LNr-y!5$KF!% z{kN@OdWl?ed%&u9IZCySN<-trCgYtO8kWER>F?n`zXh|hI18q5tOIV7-@ZSqMI|q# zR*Y0DRVr1!e9f$}!k~;*A*`|HEJQ=xp$t#skeu?tiKjSNFBS^5=;Iyv3u~S0)LMzz zdUUiP@yRu4x0ai*1`Gbpfzv}R7QBqNpzdz2a2Jl%81vc#29NrFa!xo|;1b(?TZrSp znP|3fY)fj>5u8=7lY43Rk(v#JjfR-6xZ}CSce}B1GpkW+a5yVL&6t2U#n=-%mjc^x zorp4}=22dauuyr9y=kBA3a7LUKaCKV@6lOd)9ZZE6X{Il4^DhyAAMNM+HAy&c;kub zEH3_C5Xi797&(%|t3e~H1i|J(c>x@_>;A0%vdA`*Y@YuWU8Pbf${h`1I%?L573^)F zLzsY>Aaw-`!|T`CrE`>TY`j>D%9|s=buaV>6D>=-1KA=SGGUid}jWtZWC&>%lF3d+_r!!pV8go zFQd{Gr=26pY1}T#&BNkIq|Evz&~L|H)=SLRXd5B$XknjXK#M1!W*C!}w? zQ9_MVT9ELEXNbAf@b(ZUuQ3^X7o5YB!q7(7@(lJ%+F|F2fsPfyAY8M9dgW9ldg*_XD5%68-JGYG>h4f{RLVWC^Wx) zsBgYb>d%I(8AIP99?Z`Sdj`l=*l*YzrEvz&~>@3P( zIWigq6-~7_iPw7Y&E|d!RnX*H0;&WP(RH}u$Ziw7bK6w=;~LQ3fKUv?mWgYE@v56kZ+XuBf!AL9_HSOUeAG) zXhySkuS}S~?<-yAp{z1+K|JM68c$+Qqh?P;*hG(+bd9-rvQIhga%`-~KsMx41Yn0orJ7dG@vRzu0ti;s1dsR^v>ri=(l1Co7Q6*Fa zKDqU2jDW%ZR=9m6gsZAHJY@(m&=#F6is8o8o~u79RrG}w$CjLQ2QtBJ&+Lmmk8*zt zr?YcpNs2i;c+}SM2AkWG+unW!dPbD>9;Hz4@cQc}Q!jT#NiaiC$i${^KW4X!KP@8G z6Tbe!><&Ch?&P0_T^(ep##S2@JO~ovY{*o-pPNT-n&*$<*fr=Jo`0Y-=qgF*&`%6O zaF>H};b*&2vlK4(LVv`M_2lKJ03f5Ip6b|@@WJd)N96sk>%m`2stLOZU+rXludnNQp{87Bte#MFbl{=Nd1R8_7j2bwauOaBE(pUR!ncket9N*<0srcF@Xpbd z>(`un{eK;1SuWhz3`2PVcgTp8^w-uoAD>AN--opmsZ7IJR`RjatZIItd{5kj5h1PF zZ)tf&r7@KcykkN(7=BGf?3zHA^^SZ`$}H_Z9EUR3RV^;rDh`ljU$(lsx&m+{mrRq* z&CSs`U}CFV3~o!StTZ;YZtI^ye$k8oa^0cbfaDZL{1cVT(+?Ysb{P$Uv9&P~bK z9Zy+^Wij2oXD2zL@q993Az}z}#G$H~5JS{YpTo=g(Rjpi)^(HA4i5wJVvVdY{(dl1 znDOdx%1sVjrbwgH0?qSFLQjklsS9LVQX!eFS@@88qFEk15e?}ViL4)Gtm`!>w7URS7$O6JLx|J)?f70B2xP-` z)xZm(Ldh{@8>%&SRVz;IyKcNiL|vSHaAU`rlBx4^lN8kCJ9L!*Vq>FCzTN5fvgqK9 zDo)V{VDi|XIa0eS!6-PPA)If9+PPNTuSLB}4tnDW8etZ1WuWcn!epZJ`8D3m<`{L;J`b4+9d%il4YD&AcPKidAYu)3j2M;#5JuVkr%Ney;%=IS(uV_0x7RS zi%YY(B(+WK80aZLP!3NTQF|TkjmU<7H?Yi%-vd$oq@CPIupu?Ao*Sr-d>x_tL08fx zDBWi7xI2{>`5|LcoP%n;UpZOQ*~wzRSFoc=YO>#81X+!#Q=XJOQ&>o1^-W8(bQg+API zCN(naA9AZFa%rst6k1?&mq71ln7XV@Eqdxg<&yVsYcPtIXPQ3ZqWA@Mue9NKI5v%g>PO3SLrVmdTA4pA9#8#7*7FslCX7*(uk!;{n z#u5RA7jhOxE7PlxVwT@aevl@yBdg_WS82R}apG;Iak5V1<8f83r1G95CmTU%9Jgyc z5XAo_OLF9ERTa}F_KAxf)z$+#JrMsed}hNn*4iz9Wb95xidGu*GlX@EuEO?Iwa8}mCD|Ha!&R@3vmc0e&XH5VeQ?Mt2^P*G#U-V zOaJ9Tv2w4p8yYIpx@UWNHt7X*55r8gb!knGF?}N!7^k6ywxp%6@tuQ%gR$koquLZW zr`?B}$Wo58yQtDjo}zUh&R zZ3($CggMo-`{FvoGUn_Z36$=xqobqnDU~~v5@MqCfFmc7ib6#!-=gwsRG03BH-g}h z#md!UpIMK!h_My-Jg5wOljUvSK~X0QSj}YTI8w=M`rdlKbFSECcOsV|ykHO+{ zNibd3i}Y&kFJYDob5m5G(x#i?`k(9G8*!%TQD|l3s?f!W=$LxJ;{C$lFIxA)hVRK< z6Bp-C5)ujXF}2qV7f%XB@5c{B!bf@(2G2TW937kOmUPJYzV+%Qm0~;%PhNNeg@OUw z6+55SJV-}y1FF2BQ1Dzj382XKAzvHLo|nr*-gp-OiI{&b!=yM@Z3PY#V$^pe-I|aU z{CuM3>X1VTb8#P&8-I_o39>4v=M8l0feHERmHrUs$Wnwu`uhV$N4s2~Z6c0qo~WZ^ z+Q51Q25J*3V18>NKN30jvvvsXsoKw~pb*xUQ7`!Bmlm&(fGwl?b7TeK&UcXk@WR=Y zvr3VuGq@d*@I^NJ!0o-^x73vbsRpaV7ymf4>!-)Q%WkaM^3%P)hrhSrZ!h>e5dPog zf)BRjI1O>DBeYq>SKta-|>8_N-nr4+s8a@C`L66>`+v9uplMK9Dm*9nwr zng*_}u->eeVq;#qczWzv+~wxMV~ayCM_4qPtCd+l*_T75(O8|&YS1Gr6JDhfljlM; zB;LLN>-`_zGc^&*&2ZES1PjE*Z11=e3Dbr6LCQbH>J{D8rh%-qZ^b+pJP=8ANq%Be_XUF$~>ncP-wn5J?a|p z!^AuFi2sUpP6x`qcu%prN;RiE@ zoMYUk<`%xEp@kt#p?r#K%mblNq_*(h{(jc%A4`G6uwCU2HoLH-xmRp&9f5qt|*g2TN zx`v{IU>8>}P1PCBl(fT*tY2aVxT@z}Np#`<6~DclPC-}T&= z;Vqr8!`E0iN8$%7%x>{yRM$(lgk$Cxs$z%d$9pkW+Y1Ma!!If1uiV)plXSO=KF7S} z3Z<%lb$YX()s@+SM5~def3DRZhGh!3r#H*}WSp%x;_@nu6$%B|t}8Ay{`I12q?W=* zMa?{>>}V2K9iV4r-z=`Zs+@$lIhr!HK3hYdM=84lpL{s|s*3)}k$x7S&wb{Xas~tV ziB|3Yc{(-dSjY}>#LH)!$~qqpZA8+oR12rJUzE=EevBNZc4ZBZ-a4#hb&m-NQ?>_0 zl1StV7S0rjAbphaG}DluR3W%8XG_+%uM-y>lE^?|`_Qej%7SfXYQ#J490+Gd-~7^4 ziII$-I0aJ;v{qWkr9lqO&-M=?=_#|%>n$7Rov5Z8DZAd4COgt`00ygHkJW>Izdrp8 z>V`ke_o620X zn)i#=r#BCtd5!O-Z1!w=tNeCdf3TR5hFW$Dd?560o2lE3ywD?yDpPM$MvNumUsMaK z>y2R%xNua|SdbEISGAMRc|V-4*SvQ~LIoi$Pg+?4E}2UzrDCm-zT|G2XHyiGS4 zFB67(;1rWtw9{7|M^5qA95l4|);TpaN5U)39LG#rNh)|n+~v>=7h_y65@yx?bO+e7 zi!`5P_s+e&?=uTZXwHX;+B`~&nrA9{uEKrpjq^SinwZn^OI(s`P;^1O=5!$7)bp{O zqB*^2vwOnv*uDh;@VQ9&Y+J+jsG@=oJDA1;bIP5MQ`r2ByV!!GjxoGqkWi#Ke559(6xzCL1j*TYhf#9V6=I>Pq&)?InGM!jhfaJHc)W|MDg&YkMAwCoY2Yo6y%ik*-L>yH1 zw-_Rk$k$1_{H$?++o283qs%GAq*(fq9;`LFvv*{Ae08&!Suw(9v-^+m9an+{hLzmF z-0!K|BtGE=AEk8j;mFow%V7(jv+;$%}X#IaDW*w)4-#5^CE+fqKr1)*M$VpKyb? zIfCKMnQlIN#)YLm@62DApB@>7#@u$pxO-qtjZ=z#6s2L-4$l?Gmg-~nfAZP%#?!dV z@VDPTu1r-Q=0#KqFr5V1<7b6-t+ln^GY4i>losDBx-pM)qycAld)i(LX#kJ2#k1U< z(+gBG%MhfA`cs~vF`+-%-t}EPk7_zIA4%NyC8G9OdjL{~0Gqk4y3wZAx@a-vV_@D8 z=Fuux!ZaVOmUV4$9C%dD>5?qx3s)Zd$DkcPh%GcrD@OW{fON~|W9dvsl)u*sbrhVy z6iU~6|Jm{fuuTbi#l4)H54oX*$ul9j_lP{{-u)Ks9h($ zX&|a03`#C+*rQO9J9ex1SWk|+NVM!rAY<4hNp|3;GQ(RtJ?Cge2X`16cEbDJpirVu zo51&BT_{Uh5_yBFm?SI!o-E~u0h{g$)A0_ zfb;?AuOIYpw~yzqOI8R^OiJwv=5w9a#+1$x3K1XkU8v;PqlD0eCLgKy6Ms~LuEjpj zI;dARu(Hd#DWBomm0?ml~Fu~h+3wCfQpJBhrPP?`xoqM@AsEItRJ51de&Oc;pV=d`~G~_ z{R^JX`WuZl>ged`yPQ9JQAcOhBORU9f9S0Sdcd&eY8{=OSeLWE_#{0O^LfeRgOp#r z78T%C7`-^)^3gl7R_~WgoxP{@zFVF7>*-g(HKl%)FddPbd-SiY0MO_5yWO2|)tjFW z&mu&NDG*S&j)7DwVXV=?ZME35nYH@ecmFj1X%j53P^zPNwrnzl!yTB;bMktIC`aKT z9GF9G4DaT%#sZHw8=n|` zu6h$x-}ZUVqrb0pKbuU6;hw5Q;eCqcl7?#J0G0m zTa&mbBYpjIE(fuw^9AZU|D3K=N9lUk>b^)SZ_)W8N)*E@LS&}^d{#pxmPN}~o4h~<8DnJGpNf%&S^XeMSa<;uBTda^U2XCrdMKm=200Ff$ zP}rr*qwvKEexRRc#b}e7G8~64`%|-z@NsTX}j<;Yrvo@yInpe6#owZiQLhr0;4Q;qo>qzTOVQ5lA!y1Re8r#Xy5K#Sq2v(<`QOo<;X_}**udEXycmhi1_7O#oT%;4+IWbl&5UKp->|JLBmjVx>|`zj~l8-Fds@_ z+HrpE6$X{V;gHhHJ-84DhutHGZ#yqU?5oj4AR(YwDsNz5K%I_&!?9G|GxxoL{=rD5 zzyw{V&1}C$7DxpnBS8qnO4;vZ3z+!YM+7a8!beki;@~|u+xL>z(GTx%YEZ{q|9wCl zqXh|)Ad-ZaSc7tA@5IU)!A!%QJ}j!Dv9?8>F2Ig0GBGy(>V#-2?|tWC9NQW;6^p)p zsJC7iVWa%p>sinCCbOI}*xQs?`k~z=6)i0-m9Z1aj?28{MC|B_gYPREu0Lemlk`nW zEze|qHKN+PZBXC;Kz@6-X?)pltXCC4EbA^xZtqI5`_4})R-^zUfE?Dc##cG~eY~a; zMKeE0sxz0HKxMXn;BYv}lg<=|Bj)leIt3FMdQDy`7910q=ZsGUHd5iHFiDr%%;i7 z$;3oygb7njI7b}fRaNzr*Ure-)-CKil=G9v=vJ%Jq(8jh<JYGkftAOUV4|VbBp_OF_#C%$r+ueq|xX5WOR} zHP~n%c+MNw0cxvVqL}4KoV#s0*=#p3JR1LX3bq0CaSdVX5+Xai5}C*XgTEZi`Kb?> zM6#iAXy*E{6zrUV2Z5PeKgcUJTUtr8yWjvEilDYN>&!*RMZHh&O3qrb$%$6mOSDWuXTwPaP9MWsk3Ap=u zf!I;k{-lH9ODm2{^SbZ-_9aux-7Qip@tMGZ>OP@yR&d}6e5F0DsakFu_}bMpEu(@) z&mLl7b)*u5Vb+<>crDeA1>Tw01_WhQ70c-v>teWL?U>3Kx!&5xG`~Hr>53(8Qm}RK z!CF|_&u6IJY|?#$x@3~#S%x@>N>xh>k@iH+fM_u|>(f|z5E(k#39|Ipf^4Ejr-}o+ z)`|q$G|ueUTnQd7uuuIw;Y)n$qA@!a6 z?_vC=RP5+UHAYyQkhh0%+cNFNSG(qk!)Y`W%@!+293&8FkFQXv9^3`2>4yn71|2%9 z4+8t^q~#^K>Ro>tyedR*$9Gx(H2;|3A20YP5dPnt1%CxauO!~5-w!E=vp%#DvlRV9}u3bLZ{U(9pG4iAd%o38| zc;=NP`pqR^A50&_HYYe-ja~5Ic7!#?k2m^T^laL9kUh_Teij@n^j(~vk9!-;qX1B; zRa)hQLO_VYKi{{?AVl{A8Ld`BuHZp{R9QnG%$4X0`RUdxrAic@p6)s8#>({P}qk_6Sfl| zoE5`?9&$!hOyiJ+{v1te>jA9Hwz!k-+>L;UFPBWd^ibpGoT*PrhHHgjzC?w0EgRwT<$$D z*7T2iSu|2S=*GfjX9P6+{R@do^e#%6-IFVvYWFdUe}<41wNAa5E^u?k7oGPBzZu zUru&M5xMsj-LX!P7rLhY^7y3OBl@fAK$d~x-U*>ist8u~K3agP z`eNlS<`A&^d4m$^dBY)@HN~;1K=*d^T+Po=o?!_irxtC<)RMhd(+S2=jX)xhnF)hwkBknH+$RX$p8%9@~Q|eu2zv#`a zU2;H%k=Ltwe^AD@F(h20_2v*v=hXK=-3t!iB8;4N?Y~>?p}RPlc6R*C4c8=WHgPs_ zr08{EORISc=KiL{8S|hXL_-&ZV+E`7Oj|?BJoV$9b(wqpkETuyuhsa}g{*tzc<<}T ztyS{y%y0ewzWu-4V8a6_L(vk3v5s`*B%2ICyOgh!MD#xWpHwf$ZSj>aMM~gwHjzkg zNp%FI7+z=C&E=$$No2qdryGlSzv{ktaOc0(4pHLwU0Z8R08#I0LD@(0mHL4JWE7QG zVbzlI2++{DHUWj(ogPmraOhm!FHaw7t3*nGduZc6@B&vqcwentgtgd_3t%JgYYm;N zFdjd;GemvX$qOLt1 zIIm5OwVsaj)7rBqj-^Eb2{3-hn`4m^+H?hk4jmPX#oo|ur*G)zYQbP1UcS&J1r`h@W`G)tSc?bNj4N1)drbQY>@IdZdQnNscKp^Ok zy8zloZvkNxWGgExK7+ZK!VpL&Wy#8ZK!@22tc5407~idcqN$fjnb2JCcf`-V2glNx zR_yuN%OuYQ+Tv4Wvara{;^bhpWUf1+*I|%=!pEq zFuz5U4swkJn`|MXIa=$E&m-y9EY{O|?bn{P9LXx(=dbef+6F)(c7pEKK6ba<(vE~a z7}OFC-U+;BJb|Hw{qmDP)MwxhAB}tB1!Mrnz)5S_fFO{vsXu(g_)mkq{!lOc(MK(k zk@Y7Co`6EsEvsKlNfS2D@IN-wqwPKb>$(1DUD};RuE&9VG=3%8Rs>6QH7q7u01`#n z!KTz9OMgtDK}pl4S{gz1cfZ2BsQ+JDgdw8Vm%rgsKl{%yV|fXY$bq%eQimjv_}LDd zga&!c@)Al?KYs$Y;B~IWuC{#aZZNjOkcI}$$p#D)}1Xjl% z(1i{`ptpn7d&2MZrJ1wI>U8YF+-P>l1RLh7{4wi2JsS=e%U5L9<(3GF1^e6UjLeL@H65~MXy%i# a4*F@lbWCFbq(lakc-$DYd@q9apSEkUcP{%%mYl!8C%w$D#fz|Apw*{e*o3#)bI& zr8nc9%hY9~VUpxlUTo`F>4ar*!6Ib}K_0Tu(m_--3T4?ePa$4y;%fElI{D23eos$N zhCqrPOK_%ndV;gI2{8<7t+CFEYZ+B$_*P+_r(`MIiRT()pX4vdQ@mVFdK6~x(DGlS z6_L_9IIpmD zhP5!w3gW614>B_6TnF9T^$#3;K!@@9yJq`3bjjxHx|UoqMftKogQD|gwN0AccNe15 zGM{4IYVz4E820wFftzJdOOrGbyOb00aXOW(hsh%UM zP$8QN{8p9Ah@Kfq-PDretDV?xGEE{fl3u}ibeUR<=8=S1^0}{T#}Zc7eZ_y^Q`%o% zs25X4;*g#q3DCsWgdoNQn6L(b)tMxZp-QM@LUlI>^4p-D*pF{V) z?5R~9>iXLMIKMQ>^N$L<;i@Sh#R#%ZeM`9K??9Hr4~G)B*SEeq;RA~IF-;4;(PbM| z_{oUQ)9x+dD60uy&WZ^c#sGEt@ZN>^agtX@pTbHim9EhlRH_Z6N;;!EUS~;@X$3VL zQ7ZPfJQh97WtHCj9vcBELskm=Tf~%Pd(j=4Voz~#v4GO3pmhVWn6>JE$8wFIAlXK@ zWgGyvdXsn(c*JuNBYvhvowUv~&-D|o@C#MzzEbtauCF{cYi9Yb+fhgUo&NWRiK)%j zfUNpC9DUG$!M?TEk&RsOLQdeCjIn{4XvvjLpUs1=7Y-|}PizWfsYK1AVpXxV_we?1 zicN7dzAlbOg7ernQYX(E@JF3|g3U`{32a&$=@*gx7t;UFt=-z9q4%0X2C~jNIPGz&`!gDR#>UTd;4?Y; zZ{vdxyc5wz5&a0VMZrvOAzQRWA?EaGP*-7GxN{|eU}bHch_(wWiG&4kk!U_+wV6T` zEol;6ahqV=5#*#JTjssYbkqE{qD5=4HDU@0o_H%R3`Xw*6bbYowcXQSkZ6LkO~%LL?A+uO-(wtl<|a;dWRu z*qG?o489X(wnq0(r8%4QxJsZ_VYHOhq`tPe%=f2EAVZz-^2W_;y=;#4^DuT9wIJ#^ z!&BptI`0cfSB_6wC1$U$%yx?gv$u{G0m~wa@c}BxkS&(A5V1y=1=T}47x?<-=h-f{Q7*Kw#H2(R5L{Ju*NtF!DKR4P^3Bs~YPn~#*?(yGgeg)$; z=tUdblYX^&IN6S+nm%O$Fj=qKe)}%U^OOV0N@7V9P7pPmp-0YCt+gnBbV}a8ASu{uXNa`Bc$U+ zCU5qhLt=TE1&8s7MFSCSvqk>k+LS?Iw{8x0&u_8h%Z97&nETBphEtwlS*;>`JxdO! zyqJAmA6}9O?!URB-DsvebWtkwmiL)-pWiwbaCv7shI7+7qA^gdRu5IvHOCo4uC-}D)e6YE zLC?D6)dA$TQTBuDB@0DB^uBN2DLrY^Okja)mL|+<8<4if2W!a@t7qOS;Qje*=E$5- zwJ})Jx#CL;7=wpI1R~rz+HX--kXhM$HFc8M@P;D2H}gn-WAFW5y&la)0!9Ul#TXc; zFDP>V`7-1q;T|VUhU8ID_81_qs8lM2SnB{{312pBfL%)#Up7eruIBo_6LqC|ZDT*M z!f@?xQ`f<`MCZyVGpS6*{Kgchpy>mT6ut*G4h2F-ND>IWToCWjO{q{883|Q^fzHcl z?@IQd?j(pc!P>34Tu*|7HYksQlq!e8w5khiGC=&r6$Y{FYJ(LAz~A0>$_^hMK}zSUg`+dVa7#V+B4oE>jB&i>;z}^!!tehC(4j!$|!v%-JtfeBb6EVQOwf z4z1A@D5+9JM_9PFa~-G3(hHb?M!+<1#im|g;7WFlrVl%^IXG_?r{~ly7&*L&^;QVz zrB4z=vXe(b_XNsA^HdNBNIy<`%D$1KR|P?#XucYqqwH>$X`{@h(oUvnNHKTQl|T2K zvfTLN&W!ryBw|CD4d{%ob3QbwiMeY z?wXjKq)B7t&$sP`s^X8<>pW>zmf7|=4z9X-eO)U{{;f5J4``iNYb>+ z%gb{4B`J{oBhgD5orr@I9BP|etv#%o)up;ac8O>M*@7Dvmkl7 z)+<(kGl3~rx^YLC9bd~kbFf6p_vfo~bP8r4_02C3rx2JEt%X4N1W|yS1Lk*GO?!B+fxBu#J*DT`+J~JcZ@gS=Bgj@Bu=BY~)SAWDNUbXvkJ;B^3v!*5F($-NI zCsHJXkBtU!HebDPUKYYwpCw&yo?03^NZ;1A_OSoQACyb0_OF5Z(4a8NwRq|zI32cf zEhc;-%`#er&hdPkccN=e3N)Yg0d!j^1nW`OhbIsK)9?#+{4|q5E^^EJ(qXmxt&zM0*`3cv3!S^+Y6OU^g7n_df3++f=|=?8=PZ!02;(xFh* z^71X^$|gAPq4j;Y{SC(Clf@{6-N)5d@D@|~yQ;+ABZq)QW?s=`u00JA#+yCldxhCy zfn zN}A`Hhwx>pOBthD=X)q5tes$wp+KM#1xX zvy0l|p1jFB0WOVHghPf(x25nO4fr?|_GT}9#VFeKAJQ=!#w87%#5-O-SAe5h1K)2h Lo+JJ}GVgx?7LW|_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..249ca4f627b2b8f0d0ab033f389152f211a33d4a GIT binary patch literal 5497 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f59eb18e3c3244c43b9cf0ebc801a89d412e99 GIT binary patch literal 9307 zcmeHtdmz*O+rQgQQAj5_MfZ&)=R-MjOOkR34a1yABb3ADymZi=La32rC~C}^v0+J> z^VDKaBMocKHjE*S-_-YczR&af{rCOj`8|Jp|J~m2>wR6<`+8mP>v~vC#Dzx{N98!yf002+H zDxqRsTB)T5>E7dff9*#lgUx3F04v7;`JBdmUBi-x1v*z7rBxygqe1c+co&CSB(n5W zmSU{kbpQZ-fRuXnqsaAw(Kize=tr4|?Dt~77t{Y-L$u1$hR0)`UZP_V?FPk!Xb=mE zeK~oEE%S$zokc=$>u z^+h~UPk}vU2}dG>zX-&FNYGECs39(^r?^{YG%>Jp3{y?V$c0zfZn^?SJnlWt^pQ+y zPfR6;DH{TgScM;LRyh0V)`QRvtR@G-%!H}(#Q6Q8pt<_)&@J4Gi9^=A%fKye2P99= z4qM2->71q5tRc15QXK3*5QdK2vgR2rwwJas)>=dkJBF|0W1<$jj4WE`jw-y_?wgz^Pcb53jnQz;dFf2mYr7Jpwrgy!G^euAImXM!lhL_ zIaj?pO0t`0H6gvcUyjB3>GI9$)_yTy9zQXrk4`*qwg;u@^sL3Om_XJ~TqjQc8EFb- zHXpUM6jkll$z59hdiF1~IxrBU?W??qH6A&AMXbj%Nb7fH<0;30Wz}?l^c!p_qD(L9 zUCKV;Bp!1;q1jLJqHEgGY01Z@*MdG2JHGt<-MnRJQEB{K znsxjX*`|wNoENP<^g*!m>Qs&tp;7M}j1NGnTQo*7& zSx>;Uq?kDny#qIIs-CTh8k~2y?CEqEzf4XU{6lFyiNEYr@S2posMywA<`XzK`XZ;Q zcqHz&$y;P%%$#BE+(S^g;o_y9=iy^(UuJJ<2l{m_k&jQmnCiaMX4ic!kIW+m~d z!yQZ}(W|&5CVu-^`UOYDerSNiRMD$oQ}uLzobPOG} zXIMp??yIfmWIWThRViq7F>0E;;+^f%$trnBaa$l;e`~VfFrc(xeHNP9nWk3fLfrxsqwyhrq z=}La-c>l^`UIMFvL>#l}vB-|jWoADtt*tCAy2iPP4^7A(4f&Mc20dd_IS8G_ijFJi zB@-HZ-V->5(jo z$ngA4<3C0~9f|~&T%)2*k<6h!H7}x`x3{;ir2R9uDF&36Kei^KmC5A9MhC=GW+(hG z=Rx3SUG-?ZBP~oseJs}n@Z9%K+6VKSd*ws-nDu>M z?}}T-HbfUb_C9p4{me9Z@P1svW!XmS{wFU(iN(BSHmZ-@%xk@Rr**?0INY=K=^YGS zyi;%V$LC0)jU|<2CG@*P`$hN6A1Ww4)mMMrPRrWyotlo;jI{v5wn+eoPWO1#prF(* zT013J?0BU8dWT3%INbsB`vJuhx>Qy4SeXIj@oQitN zE@0s35)U#a8E3Z-tJq}4)T~me)VOy0R_<~bdNP7RXTIlzG7Q2|1=MS?B=tjXVeY-* zWec&>-|v0Wv*WtNwR?GZi*@HJ+CZ@&v?bkCJ8`6g>2-Z(G@U)#7n@!RE8KY#ap(2Z zOQ<5!THKmj%@$W2e-phl8mtJ(5y(3;Xy-?rDF*m32U zN5ShskdsLn_k3HL{_DyQYt?L7x7eb|LixPXNM(x0WFRh1zs;+LBaEILG-IYb*A9%^ z?@&P;CWfIsil|s`AVPF)?=RKhl|M}`U? zu3nc}AYx6z;2rc9#ekXkc93X-tt0u=AWlj!5FGnhM=iUqUhG{nAMt=Hd6S(%O;}P{u{r$inik~l5 zkKc@-J8+i6sQufJZ9`WWC`1+?Thy;QmlV?Esu-tAvjJO}_&P4?S3D4q)@x4__8^Rf&rJKv7Jm!o zj;J?JPAuch=9n8(Nq5F;6#m}>Ambsz#gRsZya3ND->r92OCRI26{Rp!)&s3mud72^ zV@?a*E`ju$5c11`rBLsA6Esi7zNUMWwx)>Y$g4REy0s=95s*ANvHK^4I9u(q^I9Uj zi`hs~sKJ9c`xqyLQmTi=x^4u>Q$H~)3#c5wEsxgb8@mwaBz3)UJoD>gz~0uBE$T#DAHFZrW8# zZ**IL5b4G%6^b(UHk%q*CId)KBEqPeni>|1HLZ-lsmAsM1MMLJjz>PWX^Ajy!TVl* z>mT_K^#o;%hdfk+*2=yc?MFo&*p44h3%T|Z+YkDbgnpgjr9F)O)E_!x=?ad2y^FMM z7xVwzpi}gFzv&H2r5VwtQKzcRc@`obxG)@fH(vc*?eA3J-xWwbVahJLJZFx1X;Mk8S5*UnO1}Z0tA9mr3!Z?^~ma87a+#q?V?j2j@p+vE-q`PqLVA!AZZ=pZJMv4+G?7k6<;UB!~5q%VpM1H0EH?JF@OEU&(a1 z`J)`IB-gafU$NasT8e~3RNtm)+hi?5vAnW;PB}m&sI7pS5WyhCW+;>| z_rP{jbSnPl6u0wlB5h9YdCAtK^H9uxmBU(*cVlJ<+6~07>pTBnXRziCYs1j_rW!Cf zVS+pUX|zVyiMJc2!#0`W26L}#Hqk@bh?(e+Wmz|-!(MwsvJdt(syOCF!E!`Zi9BwR z!G=dLq$k_PVdPX^YUK*zu@)NDB>McZd0S21(?W$}(~6h1yBp1ZFZRTCpABCEp^XU1 z;Jt5j36GqHK+Kx0?wbYF);7WvYiU$wH9LefwjkO;ccJRmPL-?_e9)Yqnzz@BA}qAP zn`&6fr0TjsnFLa3GT{xztEQcGv~SsCh;SFUXDcxbch$TVnie|!85_1Afk6zDtZbeT zc~JM{mk{V2Rtzhm+7Yj86`(xhGR6+gS6zGkM%wWE6WxXaBytf)es<7RGDU$kMlI z(pOAUJ{LvLKNa+%pnu+P|Fa0CeN7?P8)_y@5e5;$x=-A|C*)LCv_Ts9Q^L)RNPK0TZ|lP-oSGv2Y{W4 z7;U;*Q-hrjxc0Jl<9S|0N*`n}r7!Ig6kBNg-Z+Xe7W5CJJcd#wWXq>bapEbnPmWX+ zP%la1^n3pKuREg9H9IL#pBK>w$hV$Gq3|70V!xS4YXHrc++B-eJNRxf!nF>X!va*WwBz zS7*d*$uCBBnXSocBE-NVFGGl~h+a>$goCDF@xfpYZS zbEP;pCd^+JPcEjK721cn&ahA{5^7h5-`~8n4YxjJlT}gys&QSXHq4Yk2k@$YA1s33 zErsO4w>Pb~Lm#zz)hIY#pMAyOoUm1HEqB*zL8r_8-Aq8V{@R z=zjerXmC*Frbldo;4*@T=|Y!Wc*i(5dCDN2ZIT14*h(YEdDM6qdkoI>QB?m%&*|=_ zkVJ(d`wBy=R%IlXdTR zM80+fks@Z@#04y!n`4Wx`}e!n6rvWw=f5~vth%4By)gX{#^YRe7(;hj-fGFlI^a5f zS`jj&`nUc9o1?>2`D06PO8_=Wn`xwv4!N+=D{K3{q{Vi~BNAblnL5peUsp#lIUr0i z&`AALh#y-O>*;u81tgtPQn;8K@oanar_q8%JjdzcD*UI2BhEv%li^p_k#)Pslmeb> zfBjQ!^W7!dJJbyFWv6iTWREVHuH`;hn{fd2H@wwz_bRHIW>cFQMt-1@Oxkb9xNdvX zh_ry23*EUT>jhgNqxy?+uLO+0UQ>VIRkv%$NJfRLI4d}_=H$99R5AsKXr&6f4&9=MC#;H|+-Fpk}Ywo+bfBT?Y{;-}Mh@?PiDu*mK=9n19)NW~kt4=$F_0- zkjxJSKVCzmH^W((QsXM<$JP%SVaD4nxh<^RJ8#^_HxsIneT7Kbc#D3Au}%ZwDd}>t*woaYaw}*<*!NGyRC)oz&qxGuOt(S9bIq^&MXw|x&j?d zjF81Q*BEs;H;Wt7%<9IbLs4C`!+L|XsNnhMZGSWE8BnZ#zUq_^;!G7S#-wkxR{LZs zk1lwt_2j_7FdOV-TO=!B0RUJ!G{4n~QYHmVj(Sec-gvB0#0>$F@RYh!so410Fpbdt zU03RRxsvAY4^74;Bn2#h2+lJYEVw78E+eZj>j4~AG1p1$dnXjS*-P_5P@GkwHY*M_ zpD%F_5GtU?R=%lM1D7r_?bk3Ki)8^7?&J~nrYGVhmbG+GZZ!DOKbUhH%igl-HP4%} z*fM3QI00OPG9mM&q>f93JX+z5A^B{5>x;ia*m`y^aSDc8=haanSvwQ06&0~+E>NUQ zj*c9UK~d{Bw6i*v+;mdPdUgBtI-AJ2FuqKBXSk-Zd1Xzk`~^|lYo%uah$ysI-XxYa ztro#++4BkvDJps_voLF~)X_Nn;~R+pfQ|Y4Z;2DbEd!DYck-wb4vz}dviIW6dsj$U z)&9WIdb^K-Qn~BfHWd3%+2p2jrph@QzX=%>H!&R56g4wtbyWR8;>qG_aKG1%U!o3w z$QfQ7=l=N}?BJf}AfsMVO`qP zzw`pLoMnC1Tvlw0J3UCO2#HlPt{6?NV5;CU3+u^28&*E3ZjRm5-u`-7;i^$@u%L?; zL%OiUEWIlFiQr=<<*?@6#tIdW{K=8ImCa&cf0^-_>?5l5{<+NQ_b-_fuItOYBc8`2 zZb>qGQtnoc|Ky~RNN!R%ZUhW+U@2e0IM&-cnK^R4G^rFr$B~dc9_yneLVlK`X9woO zDwR4LJz%??l&8i~k!=}E-H_O*iiL|=a|vepb`3KuM(KTnbdR8mi}ump?@kDno^qdW zmSv^!!elO;e#OmKQ?CPbgFhNx%9%aiyntw*IjlI*Bn zDmxZ8v)AG=Z~8$c=pU4{@=1J*saA4{vvPbw-HfaQAYT6Pr`fv@^`b$0EqosF3hfV= zS_={3Wpe<4yT!s0lPrACk5P$|0B?u+Ii?#bl>5Xk&XDaf~cUQ z*{pnRwj}6v7uZ*X9aTq9hK^b!pC0g?g~wq}M}v0Q1anm6LjWK#G4Z(A{bl}&a1X#p zu{qqG@WfewH~h(9?3tEMzIS4yur~{irC8)2v&l+;!@X-iiaNe*GemeEsZ8e)LULO_jyE4;1|Mu}xgO=hCSxd{eJO=huDh4hs{dGK|^ptem z!r{qgcd&d0Wz6gv;aoYyX#K`tf1D(nJAz1X?wTvB_&Vw24Hwte1A8pQd49110Me?G zb9vJZ;bz47MX2%S-o#UG0utMJ$!zd5V|HlS3**cHO5oQgUsglGT9N|EjCtVM20ja) z#8df#VBn>I7mx`fhoC_qE(zu#;}%&h`u6^bTC>b5$;a@?e!lgs#4N>j3J;j~yTLH$ z1!i+|Hh>h3&K7JDs&YV2G8T2#yJkOYz_NPFPY6BI&bZLK8XD>Y0F1;fY$i0PCA@;R zsUpsN-dT80pf((TE@*EXr8%|5rV=)ss%X4H$Tj-2k86{x^>$e9oBMviE~+Gu7KS|w zZAz|X9mXQQMYN77XK4E6wlFdpdOEOTm1`2w#{Iee8s<0cSsF8Ef429b<@++bLgrn$;CxAvea2 z^=qqE%WfdVoznsaH>~baCYxzLuaoRa(hbKlqO$QSM$G&m(l`Of=jh|k8#{(SX0pWFWj DT3bZ= literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..8da1fa8c0805cb0edcf8839681994135572bdfb3 GIT binary patch literal 7170 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..26ca6796165df0fc68ba05a10bff3f188670d23e GIT binary patch literal 7964 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a88e3c4e013d63c6ef463e1df88f6bee0b9ca GIT binary patch literal 5642 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 N4D?KH!*4n#{ts`Zd}9Cr literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a8fd4eb09009370b79a8e7d92355e84bad3426 GIT binary patch literal 5084 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 str: + return "%s/eip712_input_files" % (os.path.dirname(__file__)) + + def input_files() -> list[str]: files = [] - for file in os.scandir("%s/eip712_input_files" % (os.path.dirname(__file__))): + for file in os.scandir(eip712_json_path()): if fnmatch.fnmatch(file, "*-data.json"): files.append(file.path) return sorted(files) @@ -87,7 +93,52 @@ def autonext(fw: Firmware, nav: Navigator): moves = [NavInsID.RIGHT_CLICK] else: moves = [NavInsID.USE_CASE_REVIEW_TAP] - nav.navigate(moves, screen_change_before_first_instruction=False, screen_change_after_last_instruction=False) + if snaps_config is not None: + nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, + snaps_config.test_name, + moves, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False, + snap_start_idx=snaps_config.idx) + snaps_config.idx += 1 + else: + nav.navigate(moves, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False) + + +def eip712_new_common(fw: Firmware, + nav: Navigator, + app_client: EthAppClient, + json_data: dict, + filters: Optional[dict], + verbose: bool): + assert InputData.process_data(app_client, + json_data, + filters, + partial(autonext, fw, nav)) + with app_client.eip712_sign_new(BIP32_PATH): + moves = list() + if fw.device.startswith("nano"): + # need to skip the message hash + if not verbose and filters is None: + moves = [NavInsID.RIGHT_CLICK] * 2 + moves += [NavInsID.BOTH_CLICK] + else: + time.sleep(1.5) + # need to skip the message hash + if not verbose and filters is None: + moves += [NavInsID.USE_CASE_REVIEW_TAP] + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] + if snaps_config is not None: + nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, + snaps_config.test_name, + moves, + snap_start_idx=snaps_config.idx) + snaps_config.idx += 1 + else: + nav.navigate(moves) + return ResponseParser.signature(app_client.response().data) def test_eip712_new(firmware: Firmware, @@ -124,26 +175,69 @@ def test_eip712_new(firmware: Firmware, settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) with open(input_file) as file: - assert InputData.process_data(app_client, - json.load(file), - filters, - partial(autonext, firmware, navigator)) - with app_client.eip712_sign_new(BIP32_PATH): - # tight on timing, needed by the CI otherwise might fail sometimes - time.sleep(0.5) - - moves = list() - if firmware.device.startswith("nano"): - if not verbose and not filtering: # need to skip the message hash - moves = [NavInsID.RIGHT_CLICK] * 2 - moves += [NavInsID.BOTH_CLICK] - else: - if not verbose and not filtering: # need to skip the message hash - moves += [NavInsID.USE_CASE_REVIEW_TAP] - moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate(moves) - v, r, s = ResponseParser.signature(app_client.response().data) - - assert v == bytes.fromhex(config["signature"]["v"]) - assert r == bytes.fromhex(config["signature"]["r"]) - assert s == bytes.fromhex(config["signature"]["s"]) + v, r, s = eip712_new_common(firmware, + navigator, + app_client, + json.load(file), + filters, + verbose) + + assert v == bytes.fromhex(config["signature"]["v"]) + assert r == bytes.fromhex(config["signature"]["r"]) + assert s == bytes.fromhex(config["signature"]["s"]) + + +def test_eip712_address_substitution(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + verbose: bool): + global snaps_config + + app_client = EthAppClient(backend) + if firmware.device == "nanos": + pytest.skip("Not supported on LNS") + else: + test_name = "eip712_address_substitution" + if verbose: + test_name += "_verbose" + snaps_config = SnapshotsConfig(test_name) + with open("%s/address_substitution.json" % (eip712_json_path())) as file: + data = json.load(file) + + with app_client.provide_token_metadata("DAI", + bytes.fromhex(data["message"]["token"][2:]), + 18, + 1): + pass + + with app_client.get_challenge(): + pass + challenge = ResponseParser.challenge(app_client.response().data) + with app_client.provide_domain_name(challenge, + "vitalik.eth", + bytes.fromhex(data["message"]["to"][2:])): + pass + + if verbose: + settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) + filters = None + else: + filters = { + "name": "Token test", + "fields": { + "amount": "Amount", + "token": "Token", + "to": "To", + } + } + + v, r, s = eip712_new_common(firmware, + navigator, + app_client, + data, + filters, + verbose) + + assert v == bytes.fromhex("1b") + assert r == bytes.fromhex("d4a0e058251cdc3845aaa5eb8409d8a189ac668db7c55a64eb3121b0db7fd8c0") + assert s == bytes.fromhex("3221800e4f45272c6fa8fafda5e94c848d1a4b90c442aa62afa8e8d6a9af0f00") From 5390c29944420b1f0398765d5f8da5466a359147 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 14 Feb 2024 15:57:24 +0100 Subject: [PATCH 146/160] Fixed Sepolia testnet chain ID --- glyphs/stax_chain_11155111_64px.gif | 1 + glyphs/stax_chain_58008_64px.gif | Bin 561 -> 0 bytes src/network.c | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) create mode 120000 glyphs/stax_chain_11155111_64px.gif delete mode 100644 glyphs/stax_chain_58008_64px.gif diff --git a/glyphs/stax_chain_11155111_64px.gif b/glyphs/stax_chain_11155111_64px.gif new file mode 120000 index 000000000..8ced0b781 --- /dev/null +++ b/glyphs/stax_chain_11155111_64px.gif @@ -0,0 +1 @@ +stax_chain_1_64px.gif \ No newline at end of file diff --git a/glyphs/stax_chain_58008_64px.gif b/glyphs/stax_chain_58008_64px.gif deleted file mode 100644 index 503a95f051979ee8966b6f0e899288f5609ab6d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561 zcmV-10?z$MNk%w1VL$*t0J8u9^78T|BqZhK<(Zk8e}8^WO-x>1Ue3M)j%0Tn zWjYQ8puVQl3~-GBj;siFKOwnB!{F;3ax!6}2m=g|!iK`dOeK&>p`%*DVWUD6SM>aX ziDS?an~fsU9w)mkoWeQRIXJq#X9ROWdtrVUWqN}{g%)dpi9&CS5?+CHU^|izd6kbs z1d@%Moeg4shoYS=exazHG;oxa4g>+CQaov!fd&c;3k$WKXk4sVybQ>{zrl&6MRIHe z1<2IC%FBtWOsvw?)z{Yn%tEg|u?ExL-{9cmxII7)$Likf_QAt72L$u<_4fA~EU`hr zpFw~K^T9}v&fq$P;mY+8P|zVYh}Q^EsUpCDMQae=3pg{fQBy;D5J^!u(E|X21SJO? zyysve0DjM&IHQP?oq=~w3ScU-W`MH;Cqe#Fa8#&*NKE26fJuSj#bpu!@KT`Q6BlSX z4s7IUP2&V7T)7r_$B~Uu3LQmOb((f$611s27^^7a9X z!)n>yDTd@RWUf#b;l*;9tJh3m*>wJyX#$`?o$X56?BFus(hmgZfSee1h0v}2uC>ib zwBLceE9mn3IXDHdh$S1Ba60$U Date: Wed, 14 Feb 2024 15:58:39 +0100 Subject: [PATCH 147/160] Added Holesky testnet --- glyphs/stax_chain_17000_64px.gif | 1 + src/network.c | 1 + 2 files changed, 2 insertions(+) create mode 120000 glyphs/stax_chain_17000_64px.gif diff --git a/glyphs/stax_chain_17000_64px.gif b/glyphs/stax_chain_17000_64px.gif new file mode 120000 index 000000000..8ced0b781 --- /dev/null +++ b/glyphs/stax_chain_17000_64px.gif @@ -0,0 +1 @@ +stax_chain_1_64px.gif \ No newline at end of file diff --git a/src/network.c b/src/network.c index 9ec63bbd9..1563c321f 100644 --- a/src/network.c +++ b/src/network.c @@ -85,6 +85,7 @@ static const network_info_t NETWORK_MAPPING[] = { {.chain_id = 10507, .name = "Numbers Protocol", .ticker = "NUM"}, {.chain_id = 59144, .name = "Linea", .ticker = "ETH"}, {.chain_id = 11155111, .name = "Sepolia", .ticker = "ETH"}, + {.chain_id = 17000, .name = "Holesky", .ticker = "ETH"}, }; static const network_info_t *get_network_from_chain_id(const uint64_t *chain_id) { From 9b1b9f78bf6a5c3a85200b99108b88f201319ee0 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 14 Feb 2024 16:38:26 +0100 Subject: [PATCH 148/160] Optimize Stax icons table code generation Now detects symlinks between glyphs to prevent duplicates --- tools/gen_networks.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/gen_networks.py b/tools/gen_networks.py index 7b7f9ab2f..7c91b17a0 100755 --- a/tools/gen_networks.py +++ b/tools/gen_networks.py @@ -4,6 +4,7 @@ import sys import re import argparse +from pathlib import Path class Network: @@ -62,7 +63,10 @@ def gen_icons_array_src(networks: list[Network], path: str) -> bool: for net in networks: glyph_name = get_network_glyph_name(net) - if os.path.isfile("glyphs/%s.gif" % (glyph_name)): + glyph_file = "glyphs/%s.gif" % (glyph_name) + if os.path.isfile(glyph_file): + if os.path.islink(glyph_file): + glyph_name = Path(os.path.realpath(glyph_file)).stem print(" "*4, end="", file=out) print("{.chain_id = %u, .icon = &C_%s}, // %s" % (net.chain_id, glyph_name, From f554c891b06ac9e61a1669e7ef39705413ef2f1d Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 16 Feb 2024 14:34:52 +0100 Subject: [PATCH 149/160] Updated changelog --- CHANGELOG.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 144cddeb7..0bfabaaa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [1.10.4](https://github.com/ledgerhq/app-ethereum/compare/1.10.3...1.10.4) - 2023-XX-XX +## [1.10.4](https://github.com/ledgerhq/app-ethereum/compare/1.10.3...1.10.4) - 2023-02-16 + +### Added + +- Addresses in EIP-712 messages can now be displayed as a token ticker or a trusted domain name if a match is found +- Stax app now has icons of the other supported EVM chains +- (network) Bitcichain +- (network) Core +- (network) Bitrock Mainnet +- (network) Numbers Protocol +- (network) Linea +- (network) Holesky + +### Removed + +- Starkware support +- (clone) kUSD +- (clone) Tobalaba + +### Changed + +- Can now clear-sign NFT operations on other EVM chains without a clone app +- Can now swap on other EVM chains without a clone app +- Improved RAM usage +- Now shows an explicit ??? ticker when it is unknown instead of falling back to the native chain ticker + +### Fixed + +- Refusal of transactions with very large chain IDs even within specs +- Refusal of 10 character-long token tickers +- (network) Wanchain chain ID +- (network) Sepolia chain ID ## [1.10.3](https://github.com/ledgerhq/app-ethereum/compare/1.10.2...1.10.3) - 2023-07-27 From 37989bd01bf88bc9a3ace946b73d3022663b11ef Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 16 Feb 2024 14:35:05 +0100 Subject: [PATCH 150/160] Removed -dev version suffix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a78c81300..b192be047 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ APP_LOAD_PARAMS += --path "1517992542'/1101353413'" APPVERSION_M = 1 APPVERSION_N = 10 APPVERSION_P = 4 -APPVERSION = $(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)-dev +APPVERSION = $(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) APP_LOAD_FLAGS = --appFlags 0xa40 --dep Ethereum:$(APPVERSION) ########################### From 50ba42d535a20d18d6122a275cd6eb35ec512914 Mon Sep 17 00:00:00 2001 From: Ledger App Tester Bot Date: Wed, 21 Feb 2024 14:14:32 +0000 Subject: [PATCH 151/160] [auto] Update screenshot --- .../stax/domain_name_non_mainnet/00003.png | Bin 5467 -> 6108 bytes .../stax/domain_name_unknown_chain/00004.png | Bin 5467 -> 6108 bytes .../stax/domain_name_verbose_False/00003.png | Bin 5467 -> 6108 bytes .../stax/domain_name_verbose_True/00004.png | Bin 5467 -> 6108 bytes .../stax/domain_name_wrong_addr/00003.png | Bin 5467 -> 6108 bytes .../eip712_address_substitution/00006.png | Bin 5084 -> 5599 bytes .../00012.png | Bin 5084 -> 5599 bytes .../erc1155_safeBatchTransferFrom_1/00004.png | Bin 5467 -> 6108 bytes .../00005.png | Bin 5467 -> 6108 bytes .../erc1155_safeBatchTransferFrom_5/00005.png | Bin 5467 -> 6108 bytes .../stax/erc1155_safeTransferFrom_1/00005.png | Bin 5467 -> 6108 bytes .../erc1155_safeTransferFrom_137/00005.png | Bin 5467 -> 6108 bytes .../stax/erc1155_safeTransferFrom_5/00005.png | Bin 5467 -> 6108 bytes .../erc1155_setApprovalForAll_1/00004.png | Bin 5467 -> 6108 bytes .../erc1155_setApprovalForAll_137/00004.png | Bin 5467 -> 6108 bytes .../erc1155_setApprovalForAll_5/00004.png | Bin 5467 -> 6108 bytes .../snapshots/stax/erc721_approve_1/00004.png | Bin 5467 -> 6108 bytes .../stax/erc721_approve_137/00005.png | Bin 5467 -> 6108 bytes .../snapshots/stax/erc721_approve_5/00005.png | Bin 5467 -> 6108 bytes .../stax/erc721_safeTransferFrom_1/00004.png | Bin 5467 -> 6108 bytes .../erc721_safeTransferFrom_137/00005.png | Bin 5467 -> 6108 bytes .../stax/erc721_safeTransferFrom_5/00005.png | Bin 5467 -> 6108 bytes .../stax/erc721_setApprovalForAll_1/00004.png | Bin 5467 -> 6108 bytes .../erc721_setApprovalForAll_137/00004.png | Bin 5467 -> 6108 bytes .../stax/erc721_setApprovalForAll_5/00004.png | Bin 5467 -> 6108 bytes .../stax/erc721_transferFrom_1/00004.png | Bin 5467 -> 6108 bytes .../stax/erc721_transferFrom_137/00005.png | Bin 5467 -> 6108 bytes .../stax/erc721_transferFrom_5/00005.png | Bin 5467 -> 6108 bytes .../ragger/snapshots/stax/get_pk_1/00002.png | Bin 4615 -> 5035 bytes .../snapshots/stax/get_pk_137/00002.png | Bin 4615 -> 5035 bytes .../ragger/snapshots/stax/get_pk_2/00002.png | Bin 4615 -> 5035 bytes .../ragger/snapshots/stax/get_pk_5/00002.png | Bin 4615 -> 5035 bytes .../snapshots/stax/get_pk_None/00002.png | Bin 4615 -> 5035 bytes 33 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/ragger/snapshots/stax/domain_name_non_mainnet/00003.png b/tests/ragger/snapshots/stax/domain_name_non_mainnet/00003.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/domain_name_unknown_chain/00004.png b/tests/ragger/snapshots/stax/domain_name_unknown_chain/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_False/00003.png b/tests/ragger/snapshots/stax/domain_name_verbose_False/00003.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/domain_name_verbose_True/00004.png b/tests/ragger/snapshots/stax/domain_name_verbose_True/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/domain_name_wrong_addr/00003.png b/tests/ragger/snapshots/stax/domain_name_wrong_addr/00003.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png index c1a8fd4eb09009370b79a8e7d92355e84bad3426..1c2d6cd43fb93981b52926d5707a7f063f78e5a2 100644 GIT binary patch delta 3723 zcmXAsd0bNI_s4TG%`$COE0_A(GLDK`x#WV=R92H|g$r)DWST2R?k2ai$r>|iG>ZP5~J>zsa<@#^SOGm7Cfuq`QZ>P{~roB96qmgHA{SuUFN6hzIi=O zIw8Z6TMwP-pGg_^zxQ=brOI?R=BQ0{tW%_F8xjwbPi^i=#*1bc24_;(?0%$ZO z`H-?pJ(tmZ4nP0&OIN3Q?&(BN@1d5aE;aRBm0>5P8^=&@pyOMzmC10-s6#Vwye|6>zUVIfVaQDjUfnI5ETBs( zw)H~2gJ$Q8OR_yxO_w#@v@*CDkee#NaQD zH--u@re$0=yrEm;$e&eyn&E^i*Ug*5jz+eV1DNw7F304!APL9KofUDng!gw|xg(*6Jb7xjp)cKwIA%jLw?_vO@ zU`%t7euIi2`Vdwz*`3c7Elh4x6oVDrj37EK;J6oj2`nBjGV`7a4LBG|6{^P>P?Y#r zCUG=V7rYbts58XcP$z?mU>?DxtDSr)lgUgVF?MCo*0<2;blveqfq=lp3GG_yKk~%Y zvQRn)JHQj>qGMx&EQ@#%%#-Q74GuKMoZ;Hze5uXQt~HA;3O zIN)g}li8p1Y*%^3eMYEaqutz%q50Q!GpWuE(#w4!zBZKx&_G3hg*TB}P3<|0QmM}x zsdPeEp5@*A6U^2?8(;53V4>RTfR)wNb_8*}8>XP$34CBS!;PbRN03MR>svTHOV~T= zV;(4Ts*xi?dM4}To|Ugn6f=z5(wLo}+dpn$MolL;Oh6yy)qau2pcl9HbQSNMx|et1 z6VVR%V06@LAq|Q}VvIDhI~9ryRd?P?7nHayjB&J|VW zWF4qgnu*F*7aS=tA*lGbo7*WAbJt&EO6RpTvX@dPM6yL zn|}2+S}A<<*%j|QI?l?yA(ktPUvih#1--pdUNABrGs7J0)XM7yW>>N2UJlZBRhimb zv8V(}pw+cWTRK#Nd*b9eW?B&v6s)?xp5z0Ea1u=r_5N|rsi1(M)b#XrI(=Qt8yFuC zDB5NAc%nlpm-|7=eb+DRHZPQV_TXC`XKFPvsCNP%5AA~x5s~vUh3mRADMR7>t$h*43z)@LPHVQ7@%{5BjG``ovCl(-u<&BJ?QH3d8#4xLdnl$Ty-Q{s-N&l}XijQC)|V(rGyd&-b8DVz>O%|2}n zPC)P7ajDri38pk6T2q}cYt{2x$JC8zl?hQ5SG!ARUk7Pwf$X+}Ln536=lXE9kq8 zdVh@Ba|A!_9`78Jz2!Gl%o^_K?`7?aKWl4HJCz4EE)>f~(orn=*WR0fil|*&trxhl zj;o?S*#g_DHd;FZur)OI+-{_k!xFS0h@7dZPHuLEWKjcF18dkfL~>7V$x~?{Lv?{t*toDDa^HZKa#(?i^WCB7Z%;2#BsEK5V$R$>DWHBenyW(7xedRuSkK2&-iX7zLG!c)4lDL*YcOUSRbyAV z;^a01pUl1g=4rB9rTiBYEh_z#xVjL?)ABGV)}AU?sMd(BBYad;Utw8TUj(_@UYg(# z+vb*#RzFj*em4^U>|IicF?vP%kEYtbZyfGNAh!U+?gDE@qN7os+ojg9;Ci2zgEt&2 zD*5wx1;^RN#dcc))Ya9*#DwBJo9HNn{@Py5iuRslMxNL=IXyG@zQFozqN62p4r+`c z1o(RoG1|jG+OgjLi4M07ty_n4_7RlKIPd!2)};{Z8jTb%1s%#Ifk2Q>jW_A{lCc5D zwMu_s_if(^zjPj_h}?zm5X(EFZpG)C&E%OQ^M^z-`-K9rSWJdn^x6ju?Iw1polzVw z9C|yG@J97$Kdehw_9>QE%hf{|;qD2$Cr}&c&}ne~x;^M0ug1J&bGRdkOASREZ3bz+ zEEPyHZ|K1Kr@!NW01o0G_|E?dN?b`0qAS%Ig2a;j>)VxjffXT>?aQ+*)ltk4YXeL- ziyHd)c6<85Nds;Fxtk!*44YKx-SykJeOToCSUW;wDH4fva=pUktDCziHgm!HgCcv% z7M@Lxw(-5D6vXRrU(6alX(1aUbnguoYv^LOWhDvtz$sYsd-O05Pk|AeS_y1suTwt~ zTrlZ0wz4ulZZ`}Kx%oA=bnEuI0N*KF)QNo+NxLrt({IG4ZPbquWJk)&!GG>$Kp(E| zp*0sbU22S<1oMnU04XW5m6b#QSmzC3Z`HMZCimw9AA&u!bpxgl&5m;;y`)zWlMbC* zfW_tICen+QrKP2nm6gTs0d`=S$B&a2

wKy{|_0DHogD85vH~cTD^%qNmefCfC7r zj)5%;RvJ~~?N{#u9$@|peFGyUWwbwz`EUm73iRK8m9a>Dcc4EJGboY;BfbadrtbmH z8^2f`W&9QkeZ7#FwgoX*d4VmX7sm|XYNmN}}ZnT2Cq)2t(I-lx>f2NE0%b#kn% ztOSzP+1Xi%q#44#abk6C4I0~XS#QQ&G=rwQmi6In>snh|XAv;Dfjf@)^e3R1QVmsQ=E0v)fU@-hxEi=`WlM4a-I6rpW%#zp_gM0F2 zZgKuY>Es2K4<{z132uQ0YH0e@0kz7rDrRMpUEhVx!gtmP0sX{X&iw=5=h#a zym-mOx(v&M;DYJr|CLIUCnKI+ygSLm1?Jk;m4QqakPGb^_K^SV(3tP^v^T~8AZ~0g zm3iP;CS}ITrKKyFMrkI&^GH4yrog4#b9935F9Q4hGU#fjU9Cx zs0btp4!XNqQoEGe0k`mQVwCnpc(=4@`cM%fxm?~8gJkJAlnBnVo{0$N59Hz2OqD`G z0V4f+$A4Z)r<(eXQfd}--}u+#b4wkK%42T&pRU}xJNmS33`Hq^rvdxr!2J+48}K)R ktfgkO@#zz1{SUwfl4of=uquf6u!XYbE<%RDFc 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

wKy{|_0DHogD85vH~cTD^%qNmefCfC7r zj)5%;RvJ~~?N{#u9$@|peFGyUWwbwz`EUm73iRK8m9a>Dcc4EJGboY;BfbadrtbmH z8^2f`W&9QkeZ7#FwgoX*d4VmX7sm|XYNmN}}ZnT2Cq)2t(I-lx>f2NE0%b#kn% ztOSzP+1Xi%q#44#abk6C4I0~XS#QQ&G=rwQmi6In>snh|XAv;Dfjf@)^e3R1QVmsQ=E0v)fU@-hxEi=`WlM4a-I6rpW%#zp_gM0F2 zZgKuY>Es2K4<{z132uQ0YH0e@0kz7rDrRMpUEhVx!gtmP0sX{X&iw=5=h#a zym-mOx(v&M;DYJr|CLIUCnKI+ygSLm1?Jk;m4QqakPGb^_K^SV(3tP^v^T~8AZ~0g zm3iP;CS}ITrKKyFMrkI&^GH4yrog4#b9935F9Q4hGU#fjU9Cx zs0btp4!XNqQoEGe0k`mQVwCnpc(=4@`cM%fxm?~8gJkJAlnBnVo{0$N59Hz2OqD`G z0V4f+$A4Z)r<(eXQfd}--}u+#b4wkK%42T&pRU}xJNmS33`Hq^rvdxr!2J+48}K)R ktfgkO@#zz1{SUwfl4of=uquf6u!XYbE<%RDFc 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_137/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc1155_safeBatchTransferFrom_5/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_1/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_137/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc1155_safeTransferFrom_5/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00004.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_1/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00004.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_137/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p#>&cE$`x{%vT~-}n!;sVn^H4^ul@V${onPJ%Q?w3yY+s(*s|wEW5xyBk>XRUcW&w_ zC!YLlIQ&`#EsIJi-n`lhV0L?mSTt^udIUe1M59o47x$&n57|JFyC0?Z4_%O|wJ+U~0Q^BvVee!TZ8VL}^+(c1GvQF!m@+^f*$_UJhl=G%)g6sy z>-^*N@(V?mUcOXdeQYD@h9@q2+dxpU78@5bTLoQE!$3CBwGzN`jC)&NUM^`aDk|cf zcHVmXpz`-2Rg+i|Sg4sHVBte;%mZLTfk0qkldRM)DwtN%`3VkH8Z{-z$B$-d0%a%jix443|Xplx-ojq zo5j1p;>PC(IzNUBP~<49xPJBlmRlspWoSA~tVLfg3x2g>=s2=H24a|>cfrDmLrF9Z zrm*+i=#h37E1oLAMVpd$98NqZe|M~ zo&-tY;^LxiySTFncV56-t7>s^7_roHNFJxaEX=)6M>zXib8Bp=*k528bm35@=-gRF7 z^h#C&0#SOWT+9M6HG4M%VdoO%j~ivQXs=x_kP+WBZcFZaGm0wqZz!emf%u7;bevND zLYK$m@$A9wg;8@4eYTGjEY&7FM-DF@FENjcj~_T_Fc^GXuOJX|o6H&*<7UaR#`IeG za3$0Cbh>qNR6ePyDxY-ap@b-1KFQwa5+YXo(st`mK$lMbu!v*Lj2yLu=~stqC7JLB z3S~dcioTxAzvw3A028i~$IS;hOyUW-Q;o&;FUil7nV*HlvBwXpB9^dYcK54@4=I$1 z2z^7k8O~J3@MhRQp4pPTwX}unVVKT!tFyd*K;LHa^Fha=M#? zvn{o-{yNMRG8U=(_!s?#-}Qy={>Jw-BNhXBdy$$s51jxICA*%?6x)VLeD1yy8@(A@ zH8s_R8{c#nY~2a@)SP=H*CCTDNYuKdI9nMXI|~!J4*!uWNFgz3 z`X#y$ToTtI<%29)*g%%f@ACe~$(EyZCylxDO0VlxomUrhesjG`hL5dccD90QXJ;2` zyvze^O?-2`MxHFNvPaLpL&Aw=NSF=8!otEISTQIkd%0Y$NF<`hv+});i2dI&m0mll zCwc3auA1cSFrwcCHu-U`ws$Vm2?T7%C$S1wcdg-S;A?sW0SXOv_= z5>+6RB-AbEiec+nxGY^SWC3ffg-L#DTQBZ=1|ywqj?8RpLo)zT5-rNPoSQr_{S209 zPNh&3MOfPCd;@U{_tdH0NoB|Rk`0zKXa>n2@D#^5mxH(Q4S+`FsS4EEoKJr~h)-LJ zz)FRA3AlVd^b2=wP(`r>WZ2dA8PmFYv>eRj;8ka4Zb#24wZ$PB$}2wak6`3qE8`k4@6> zwss^%`zR_Tq`X#?MmO}n%o!?Ec2t+e#&U|B{Fh(xR)l6HcOI;K+`P?73|SY+(Vf5n z_42MGNaHu-Y4qU9Hle)x_9qYNtr8iqe&fb-Sr7K71Rxh{SQl%jlFhiqRXFI_4ehJR zrk;(ctJAAKw1E`_R2p(_slIfnKS?!fpNy5Sz7VhZFk>Rb{yhY#&p4IWVywk|owPj% zyA4PFfsP!nl62Ym@m*__Pl^qHGq?@A`@!)f=Nt>A*cM7?@hV>gJ+*GWHF zKIEci2X1Y$#yNUivIoS4WHMPN9t#zr+fI;OLZqcI=ojobWXQ5UrNCg%aE_ch1-|s) zpfEbf zCiQf>gNb`*;F0|G%PTXtWM4Y`^munkQG=lscS^01JLRKh>ru+zxBy7?bZn_MB-Qdb z+_s2Lr{lbm$5TE1a}C?t4||t+r_~GPXpGlBl>pU$Siu=$EU)v($?T23Wc1wx+@SQtw<@?gw3J3fN+zH8_ zWdn(^0xQLRF6Ml(YshGe>^;AA58)V*`}Fh_FTp@O%3EQV{4|Wh!HpEk31~>V7NZGy zWUt7|q8Mh8>1Si(Iw+KJ_h_a$;pVk5>@yxP-tx5m_<}r-`EffzJ1AAt9K&{*a^>ek z9QLqvV-2smfBUDN3M~rUk^iTuW2kniUU8#S6aE%I(+Afdj*Dgxh@tCt$b(;7h}$*0 z6SvIFcxxpyoc_}S6m2V?E+bPYEn;cF>~TbyJntNIM22#s@R6xK?cm>DS|LXR`dgU! zeQXevJP~^Qeg6y76wqcU0*&qr(GWW-D%Dc5 z_oN=p=<4c+q`SOgM>0;I?um=H}+Y za?ccIvR*LV#?5B0{<r6s36)xM_6Rek`|I z8X6i3OwYZ}nybh7E{!_esukq*WTk0tkP2MShyV-=mt;wlfoSSpau~th{ zu6sNP3a=Y}od5!c<$m8n`&B7#XQUAdnjFG8@Hi=t#Pup4n9A|m)=w<$NrYFJUSeDUQ&3xKH%Y9ebus1|DSE|z`t`2F^SEFyNNBS zTOdBuOJ${Cz?U<!Kr*8^pI5t z?7+jyxzE{=_hKv@Pay-S?FrgcPgxF2E%Ed99X5_s1qi1Rb)W@1#LI#gAJ;ce5%kMU zHxA#ag(*9WC~u`^$0P}>9;%Nb5X3_KSAM$+=2a>cI0$Xz5b6_SHAA@yfhA28kU$M=yx7PtuUiQ;c^nDbLZ*3I{PO^Ux>oo-cNG&%QS W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00004.png b/tests/ragger/snapshots/stax/erc1155_setApprovalForAll_5/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p#>&cE$`x{%vT~-}n!;sVn^H4^ul@V${onPJ%Q?w3yY+s(*s|wEW5xyBk>XRUcW&w_ zC!YLlIQ&`#EsIJi-n`lhV0L?mSTt^udIUe1M59o47x$&n57|JFyC0?Z4_%O|wJ+U~0Q^BvVee!TZ8VL}^+(c1GvQF!m@+^f*$_UJhl=G%)g6sy z>-^*N@(V?mUcOXdeQYD@h9@q2+dxpU78@5bTLoQE!$3CBwGzN`jC)&NUM^`aDk|cf zcHVmXpz`-2Rg+i|Sg4sHVBte;%mZLTfk0qkldRM)DwtN%`3VkH8Z{-z$B$-d0%a%jix443|Xplx-ojq zo5j1p;>PC(IzNUBP~<49xPJBlmRlspWoSA~tVLfg3x2g>=s2=H24a|>cfrDmLrF9Z zrm*+i=#h37E1oLAMVpd$98NqZe|M~ zo&-tY;^LxiySTFncV56-t7>s^7_roHNFJxaEX=)6M>zXib8Bp=*k528bm35@=-gRF7 z^h#C&0#SOWT+9M6HG4M%VdoO%j~ivQXs=x_kP+WBZcFZaGm0wqZz!emf%u7;bevND zLYK$m@$A9wg;8@4eYTGjEY&7FM-DF@FENjcj~_T_Fc^GXuOJX|o6H&*<7UaR#`IeG za3$0Cbh>qNR6ePyDxY-ap@b-1KFQwa5+YXo(st`mK$lMbu!v*Lj2yLu=~stqC7JLB z3S~dcioTxAzvw3A028i~$IS;hOyUW-Q;o&;FUil7nV*HlvBwXpB9^dYcK54@4=I$1 z2z^7k8O~J3@MhRQp4pPTwX}unVVKT!tFyd*K;LHa^Fha=M#? zvn{o-{yNMRG8U=(_!s?#-}Qy={>Jw-BNhXBdy$$s51jxICA*%?6x)VLeD1yy8@(A@ zH8s_R8{c#nY~2a@)SP=H*CCTDNYuKdI9nMXI|~!J4*!uWNFgz3 z`X#y$ToTtI<%29)*g%%f@ACe~$(EyZCylxDO0VlxomUrhesjG`hL5dccD90QXJ;2` zyvze^O?-2`MxHFNvPaLpL&Aw=NSF=8!otEISTQIkd%0Y$NF<`hv+});i2dI&m0mll zCwc3auA1cSFrwcCHu-U`ws$Vm2?T7%C$S1wcdg-S;A?sW0SXOv_= z5>+6RB-AbEiec+nxGY^SWC3ffg-L#DTQBZ=1|ywqj?8RpLo)zT5-rNPoSQr_{S209 zPNh&3MOfPCd;@U{_tdH0NoB|Rk`0zKXa>n2@D#^5mxH(Q4S+`FsS4EEoKJr~h)-LJ zz)FRA3AlVd^b2=wP(`r>WZ2dA8PmFYv>eRj;8ka4Zb#24wZ$PB$}2wak6`3qE8`k4@6> zwss^%`zR_Tq`X#?MmO}n%o!?Ec2t+e#&U|B{Fh(xR)l6HcOI;K+`P?73|SY+(Vf5n z_42MGNaHu-Y4qU9Hle)x_9qYNtr8iqe&fb-Sr7K71Rxh{SQl%jlFhiqRXFI_4ehJR zrk;(ctJAAKw1E`_R2p(_slIfnKS?!fpNy5Sz7VhZFk>Rb{yhY#&p4IWVywk|owPj% zyA4PFfsP!nl62Ym@m*__Pl^qHGq?@A`@!)f=Nt>A*cM7?@hV>gJ+*GWHF zKIEci2X1Y$#yNUivIoS4WHMPN9t#zr+fI;OLZqcI=ojobWXQ5UrNCg%aE_ch1-|s) zpfEbf zCiQf>gNb`*;F0|G%PTXtWM4Y`^munkQG=lscS^01JLRKh>ru+zxBy7?bZn_MB-Qdb z+_s2Lr{lbm$5TE1a}C?t4||t+r_~GPXpGlBl>pU$Siu=$EU)v($?T23Wc1wx+@SQtw<@?gw3J3fN+zH8_ zWdn(^0xQLRF6Ml(YshGe>^;AA58)V*`}Fh_FTp@O%3EQV{4|Wh!HpEk31~>V7NZGy zWUt7|q8Mh8>1Si(Iw+KJ_h_a$;pVk5>@yxP-tx5m_<}r-`EffzJ1AAt9K&{*a^>ek z9QLqvV-2smfBUDN3M~rUk^iTuW2kniUU8#S6aE%I(+Afdj*Dgxh@tCt$b(;7h}$*0 z6SvIFcxxpyoc_}S6m2V?E+bPYEn;cF>~TbyJntNIM22#s@R6xK?cm>DS|LXR`dgU! zeQXevJP~^Qeg6y76wqcU0*&qr(GWW-D%Dc5 z_oN=p=<4c+q`SOgM>0;I?um=H}+Y za?ccIvR*LV#?5B0{<r6s36)xM_6Rek`|I z8X6i3OwYZ}nybh7E{!_esukq*WTk0tkP2MShyV-=mt;wlfoSSpau~th{ zu6sNP3a=Y}od5!c<$m8n`&B7#XQUAdnjFG8@Hi=t#Pup4n9A|m)=w<$NrYFJUSeDUQ&3xKH%Y9ebus1|DSE|z`t`2F^SEFyNNBS zTOdBuOJ${Cz?U<!Kr*8^pI5t z?7+jyxzE{=_hKv@Pay-S?FrgcPgxF2E%Ed99X5_s1qi1Rb)W@1#LI#gAJ;ce5%kMU zHxA#ag(*9WC~u`^$0P}>9;%Nb5X3_KSAM$+=2a>cI0$Xz5b6_SHAA@yfhA28kU$M=yx7PtuUiQ;c^nDbLZ*3I{PO^Ux>oo-cNG&%QS W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_approve_1/00004.png b/tests/ragger/snapshots/stax/erc721_approve_1/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_approve_137/00005.png b/tests/ragger/snapshots/stax/erc721_approve_137/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_approve_5/00005.png b/tests/ragger/snapshots/stax/erc721_approve_5/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00004.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_1/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_137/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc721_safeTransferFrom_5/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00004.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_1/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00004.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_137/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00004.png b/tests/ragger/snapshots/stax/erc721_setApprovalForAll_5/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_1/00004.png b/tests/ragger/snapshots/stax/erc721_transferFrom_1/00004.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_137/00005.png b/tests/ragger/snapshots/stax/erc721_transferFrom_137/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 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 W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/erc721_transferFrom_5/00005.png b/tests/ragger/snapshots/stax/erc721_transferFrom_5/00005.png index cd2f52759f160c3e2cf6822395ea675b8c84a851..a21279c8a0a89933b09833df3871d1ab2b36adf5 100644 GIT binary patch literal 6108 zcmeHL`CC%y`?kfFDRpL=v~rtPn?x+j9dT^4Ra?Xb7u3|;&0RpWw8kkjYRpJYsT`wF zao0gbGsiT^&BfoVu>>AMpKL*XOsMU(R)2&UN0y^W69S-0ySqoSUo8 z58Hmw($dm7dE)2=Ev*%IwX{|~Ubhlhad2;|(9$v}J9*T_Bkd7?g6|_5efr0FCuZzb z*kRC$(^r44Sq*YIJpf!RT!6dBtAFcU+{t`bx?$IKtnbe`#rER>`q^! zf8A1buMpuS!WHs~+cmR)pY}=7!Ho)|o*zri>dvs}=KWkGvS~H>ED~L)AEw^F>y)y4 zn!_n`4TcLsQN00K$BG}ojTdW*jyY#_yWywH*e{6+PPo3s>fBY2(rxoqo<>J&WaE+( zGiTyQGQ6`vDL;Xr3!#mp;*Uk$gm27`UY?p{kO=#GgNp-edvJV%=2fMX)w!AStoXAX z`R`xe2pklADl2Vqx$Iz4fN-yoIfN2!m(IG>$aaj~cn{Lu?X9HAf2f=Dg{lO-_}$*~ zNkpepYZ-m9Aox0cRq|H#l8JApP3KdBgr?{li#}(L0+KQ-LgL}^30d8pE$J+R=cDYv z_!^2C>!SI)qcyW-qpz4KzFzgliP0x#;+WUxnTazr6!z?!Cvrr&T6b%m7AiG3$#C8mdj+b{yJV3pT=+3 z40EW*o&NBe-|Zc}{9wayI<*}2=gzPCH?;`?>9uNmy0ddC5ita6eCpUarDYcPz?cu@ za5#d=EOx(8=#RaWc5FlE(|%IA(Fn-kLb+*YF!n*1xYv_P`EZM3#Cw-vk<)?GWW2p{ zrfT*uP*L4e*r-oQ=^?YP?%!P{YxpaBY*Atni6w5-Nf?V z)UMUJ^t-#-ua*e@8w~yrg`DHerf9JP8{t*Vxg$dBEgOkMqNXjN+N**=^7VuP3%VF( zckrMRX=l{L{>Ses#TIPZrg~k$_{`^5AwLm`$IH&w4;dRb?7*YYXkU=NIM@RQvpi14 zF7@h+wp&M`y+Ufe+b9(4-19I-h}DR~%8s6*>@UURoz)L{NvKbHkv7GAiYmmakTzp% zz*DIxZNiBOe+8eaJ>05IUCU19Fquq$;WZ*L0D+)2>@YMjF-f7kaV;Apb=xImr;rs2 z1-c_NHdE(Ox}zHP?D~vIBucQfyoy93!H2kfehkC}crqpZrDYAgN-dwkOF{+eZFU)sYVFMUQ+C_(nh08R;ufR0 zR6ITJcv)WNZ|rg`7HeQ&pr@zD*Ap!*d8m_Xy+Qi9ce>OJ0127w&;jWS;Nwu+qw?SU z9Z-fs4J*%>n3`4)M;*8Dns)$6TwZQTZ}o)1;%+b^8@)kA8WaizuV&I{H0}g;{IU3c zy*#R3-qakeu+m$TJq_kAeOXwDZ-mEy772Q3Z&Q@!>iOY>BXSfRjN{va5ioSzl|hFm zfKYjZabsiU7^_BAU1@(QN03_KBOTSonW_D@k8He6O-&c&ZJc6>KtO6A3EaO|GakP}GW0k1 z1`Fa(h2zZMi&8!}?=aP{ZX7B+lQI!a_OlUcC|G&?bYOvV^Bt;^7yRh!`y@dn)GKz; zYjj&v^cY1EACeqmSd=;O@?$3-AeBI+bHE|;pBNe2Yio>;ytb=}ZbYeg&^YHgW1@WDS^z*uk^ zX$$hKfC-!96#~}G%nUby><9Lh1c`m`i8>^L_7|p2>c!VARka6rkwwW*7R)&}TP~h# z;#8Y?vn%EPPFps9PED)lG;z=gR)vR*$rQ>2`o#GcNDZ@fxRo96+p#&KH0cse3a-|` z-1^$R>)-YlHJKYUa&yvw5;?A(yIoWmNDUz(wQVhjMB<4BTYj`nRB158Bo*;$8kdRb zxs*{W^}RRk`k~y@K*NVuNuQcTpwEsKoR88}4WNOvWhI0AYex-Qv8Tb#%GdxESI8HX zl_ne>R0Wn#Uhxj&N+c2h_S4hTJRa{c`-{pmgc4vYJ!PMS<_zcFkw%JIq=eD9Z*S6f zcX#KK=>Chiu<_bjS}T&)(bkp(d3eRn$VLhPFp}MmK&7P(4!{QQ0!%dG8o(*Ay3HDF^ zA(MISKhSweWWQLi^zv-@m z)?}OD16wv0H7~m;3X1dw^-9hG!eTn&Eu^uwI07uIsHpH?q~}-m3e}!{PokJWmQX;J z#Md|$rf3}fd9Fq<5OKffN;12|!=!R)Y3T!}UNacJ^yN#9ADGQ%QxReSaDWQXZ3Bdx ze=~(}kJKgU$ZzSRO;uL z#0;btK2t;aF475`5;tF63?$)LU)+XNLNTlQEe~dK`oD~**I%Y~yBJzC}AO@Ih0m3Xc zwrN3U49spspOQG+$PU5~ZQw<`0t8 zkM4EGn)@BC(}r&7rawd+B|p*afoXZ8^Z7+P!x^(#(P52D8sQ7YJh9cZpMQG6r#x@m zsAGrW+yxkeB+VpWgFlea$M6tut`)#)f2tpAo__Gm|B1#i`QdTs{byTQIDf^517>mm z%zj~vKeH3_W}BotnoU=r|Jq#WM&O!l_VV%)Zxt39R(e(x7Z;0qWc`PQ_s-t>)rVYc;EdyF9qWHVv`WEvV+{+^S=gW*Hl9c_*TI(mn ztZ~B*%3OunnLYV@iiP39qWsDem(X!bf%|1kmxjPJaeVI@KE_SzE`4m;@YZbnPUgRC z|3w`$y`i2v>%Hu^@ah8btail)6^DItlr=6C3XR?E2SPh_{qMbJUD>!MTY&45Wd&lC z3g!iDD0DJKx%13=+H<7+1Jl#Cu50E?jx+k2FLq#WjhgMu?hJ(DX<_yLBScG0y_31U z{MOsBdTxT8$Ef|xImTkMI~I27;E8&5s-(iT*_{zM`NNak>UiL^IKH6WgE&{3BOJg^ zx<6O`MR#GYmLC@n8UjKJeYG>VkYlF{IK=G)BroCkG=5L)wM~UTul#?VB;71GJ!`k| zN+do1Y77QRn~E!$a}+NR78+XE9eh5Z0k9Ew0L9LCDxi&V)2;i-pKN2t{Y)!!MeTfZ zK?tlWtLF%OxBwU-M4Rz%y3iC>%K9Ut>rwNE&#(w3;z?Q^f!`bR&7 z=!sa4fK>s=xaA=+qwb3k$U-c88iP&2IN2iszyl@u6)b znB2xhH%I(2wh>-1bBwh8)>Xi~ zM!qXeznw=&WnJ6Dc=07hs&~w&BHYew262%nRgMFX`LxR*Hhj9YYqBQP#MVfcy4@Eyhb{2B ztKJ?~?{kozjzWzpZti2d)dV+S&jJ1nM-8=)oP9F?jzw{!^BT5>G;W+L8bna=tF}5!6Ed>n6-l1M;(fLcxKPpBXMzYnWKB3DgCB;M-Cx= zugPc;Sv3QSTUmB>dQ}fSAP{L&Y&~L(?J-OLlpmh)%Gu&s^rlLDtep{SV!}ETC>N!z zt&L2!?}6gNhL9qfjCwPuV`8krvj^mB|KLNVsawrT2m}&6e;$QI0&SVn@+~?#*vY^1 zT>7M+-*k|zjC6}{PSWWYvD)pC$;4|j*yX+XFIU{?^nqJf_`*u>3L54Jozp7--6362Ym>x{ime`g~2%S1q2;e-QR(} zR!t&-)s6=svtOhVpGX{bUCIIC4?Db(02#s$0X@~bnrUfi32b+k{F<}y)wgax;&c5V zC8vT|)E_2>RuTw=!Eld^zXwQ=DNVyW2ZQN`GwZW;)?}lI-ny{9IAclL%VoV*$$^-3 z_ot9o?Pa{A(fbQI>6R^iKJ2~9$<=eV58Vj;=eQ5EZ|Y+1PFH0NybOWjnVHW!3^2Vb zOOMspT`oDB_;Z%HjNzKY9F6laL5wPRMXB>BiaQPt3)asS`C9itE-e;Ji%}B^39Y~h1LRII=MR|e z!zRe|bGx5H^gqcCrYvX!5RSS-A<`#Ayj%0myv69SQ0&1xUc7up!6NzJp3} zMg?vLZHKQTi^(iRK)`EGyiWx$DKf2~bGc0;Bg3ApP=^;$Sd4o-oWzEs_=S^0KmF;CbE;P8Iy-N@9`RKm9U zuS@p#>&cE$`x{%vT~-}n!;sVn^H4^ul@V${onPJ%Q?w3yY+s(*s|wEW5xyBk>XRUcW&w_ zC!YLlIQ&`#EsIJi-n`lhV0L?mSTt^udIUe1M59o47x$&n57|JFyC0?Z4_%O|wJ+U~0Q^BvVee!TZ8VL}^+(c1GvQF!m@+^f*$_UJhl=G%)g6sy z>-^*N@(V?mUcOXdeQYD@h9@q2+dxpU78@5bTLoQE!$3CBwGzN`jC)&NUM^`aDk|cf zcHVmXpz`-2Rg+i|Sg4sHVBte;%mZLTfk0qkldRM)DwtN%`3VkH8Z{-z$B$-d0%a%jix443|Xplx-ojq zo5j1p;>PC(IzNUBP~<49xPJBlmRlspWoSA~tVLfg3x2g>=s2=H24a|>cfrDmLrF9Z zrm*+i=#h37E1oLAMVpd$98NqZe|M~ zo&-tY;^LxiySTFncV56-t7>s^7_roHNFJxaEX=)6M>zXib8Bp=*k528bm35@=-gRF7 z^h#C&0#SOWT+9M6HG4M%VdoO%j~ivQXs=x_kP+WBZcFZaGm0wqZz!emf%u7;bevND zLYK$m@$A9wg;8@4eYTGjEY&7FM-DF@FENjcj~_T_Fc^GXuOJX|o6H&*<7UaR#`IeG za3$0Cbh>qNR6ePyDxY-ap@b-1KFQwa5+YXo(st`mK$lMbu!v*Lj2yLu=~stqC7JLB z3S~dcioTxAzvw3A028i~$IS;hOyUW-Q;o&;FUil7nV*HlvBwXpB9^dYcK54@4=I$1 z2z^7k8O~J3@MhRQp4pPTwX}unVVKT!tFyd*K;LHa^Fha=M#? zvn{o-{yNMRG8U=(_!s?#-}Qy={>Jw-BNhXBdy$$s51jxICA*%?6x)VLeD1yy8@(A@ zH8s_R8{c#nY~2a@)SP=H*CCTDNYuKdI9nMXI|~!J4*!uWNFgz3 z`X#y$ToTtI<%29)*g%%f@ACe~$(EyZCylxDO0VlxomUrhesjG`hL5dccD90QXJ;2` zyvze^O?-2`MxHFNvPaLpL&Aw=NSF=8!otEISTQIkd%0Y$NF<`hv+});i2dI&m0mll zCwc3auA1cSFrwcCHu-U`ws$Vm2?T7%C$S1wcdg-S;A?sW0SXOv_= z5>+6RB-AbEiec+nxGY^SWC3ffg-L#DTQBZ=1|ywqj?8RpLo)zT5-rNPoSQr_{S209 zPNh&3MOfPCd;@U{_tdH0NoB|Rk`0zKXa>n2@D#^5mxH(Q4S+`FsS4EEoKJr~h)-LJ zz)FRA3AlVd^b2=wP(`r>WZ2dA8PmFYv>eRj;8ka4Zb#24wZ$PB$}2wak6`3qE8`k4@6> zwss^%`zR_Tq`X#?MmO}n%o!?Ec2t+e#&U|B{Fh(xR)l6HcOI;K+`P?73|SY+(Vf5n z_42MGNaHu-Y4qU9Hle)x_9qYNtr8iqe&fb-Sr7K71Rxh{SQl%jlFhiqRXFI_4ehJR zrk;(ctJAAKw1E`_R2p(_slIfnKS?!fpNy5Sz7VhZFk>Rb{yhY#&p4IWVywk|owPj% zyA4PFfsP!nl62Ym@m*__Pl^qHGq?@A`@!)f=Nt>A*cM7?@hV>gJ+*GWHF zKIEci2X1Y$#yNUivIoS4WHMPN9t#zr+fI;OLZqcI=ojobWXQ5UrNCg%aE_ch1-|s) zpfEbf zCiQf>gNb`*;F0|G%PTXtWM4Y`^munkQG=lscS^01JLRKh>ru+zxBy7?bZn_MB-Qdb z+_s2Lr{lbm$5TE1a}C?t4||t+r_~GPXpGlBl>pU$Siu=$EU)v($?T23Wc1wx+@SQtw<@?gw3J3fN+zH8_ zWdn(^0xQLRF6Ml(YshGe>^;AA58)V*`}Fh_FTp@O%3EQV{4|Wh!HpEk31~>V7NZGy zWUt7|q8Mh8>1Si(Iw+KJ_h_a$;pVk5>@yxP-tx5m_<}r-`EffzJ1AAt9K&{*a^>ek z9QLqvV-2smfBUDN3M~rUk^iTuW2kniUU8#S6aE%I(+Afdj*Dgxh@tCt$b(;7h}$*0 z6SvIFcxxpyoc_}S6m2V?E+bPYEn;cF>~TbyJntNIM22#s@R6xK?cm>DS|LXR`dgU! zeQXevJP~^Qeg6y76wqcU0*&qr(GWW-D%Dc5 z_oN=p=<4c+q`SOgM>0;I?um=H}+Y za?ccIvR*LV#?5B0{<r6s36)xM_6Rek`|I z8X6i3OwYZ}nybh7E{!_esukq*WTk0tkP2MShyV-=mt;wlfoSSpau~th{ zu6sNP3a=Y}od5!c<$m8n`&B7#XQUAdnjFG8@Hi=t#Pup4n9A|m)=w<$NrYFJUSeDUQ&3xKH%Y9ebus1|DSE|z`t`2F^SEFyNNBS zTOdBuOJ${Cz?U<!Kr*8^pI5t z?7+jyxzE{=_hKv@Pay-S?FrgcPgxF2E%Ed99X5_s1qi1Rb)W@1#LI#gAJ;ce5%kMU zHxA#ag(*9WC~u`^$0P}>9;%Nb5X3_KSAM$+=2a>cI0$Xz5b6_SHAA@yfhA28kU$M=yx7PtuUiQ;c^nDbLZ*3I{PO^Ux>oo-cNG&%QS W57z9=w~$rf`uSMM(Z(YQ*Z&KmHGSIv diff --git a/tests/ragger/snapshots/stax/get_pk_1/00002.png b/tests/ragger/snapshots/stax/get_pk_1/00002.png index f59899e9aa967b23177d83aef0c8c2c9041eab91..13499fcc9366bb214269b05db05ce8ae4380ce24 100644 GIT binary patch delta 3143 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 diff --git a/tests/ragger/snapshots/stax/get_pk_137/00002.png b/tests/ragger/snapshots/stax/get_pk_137/00002.png index f59899e9aa967b23177d83aef0c8c2c9041eab91..13499fcc9366bb214269b05db05ce8ae4380ce24 100644 GIT binary patch delta 3143 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 diff --git a/tests/ragger/snapshots/stax/get_pk_2/00002.png b/tests/ragger/snapshots/stax/get_pk_2/00002.png index f59899e9aa967b23177d83aef0c8c2c9041eab91..13499fcc9366bb214269b05db05ce8ae4380ce24 100644 GIT binary patch delta 3143 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 diff --git a/tests/ragger/snapshots/stax/get_pk_5/00002.png b/tests/ragger/snapshots/stax/get_pk_5/00002.png index f59899e9aa967b23177d83aef0c8c2c9041eab91..13499fcc9366bb214269b05db05ce8ae4380ce24 100644 GIT binary patch delta 3143 zcmXAre>~Ic`^W1f#V153lFB(phx!;!rUDan796&QTpA z3>BiyHdc3A_eHnnl~i&=zm{eebj*;c&$p1{R0&B$ou6!DOiK;c&Rm-iPt7 z0|6m6kjg`YR1wybj5Ptsb#TFP_I2c{;i9dD3He}*{!qz61SPO#c|>+XNuIzzJ6{MX zwuZnDpyT z66Vf|7>6-W_T1sr#2uhK4nG!p^$XON_bq2CU$&c&jVsR!cCD5Hp=^s4kqxBy`JjCR zD@A_j9}zQew*Wpj>F;jEy*|63%$FxDHEsX56Dyse^k?4OiOXs5*>KnHg19SBOYFwL z=;yfCfdQ<+8%!tE)xovTdQ)CDY_>gK9n+RRHz+tyV+GRfp23mBG#~wR1ZOk4LfNdTp(nN-fKsX@_C3?J>l3&#|$w{#xPptrv;<$;pHT5t~X~$y?Lud~_jLEH;TH zZLNMH?R+Y|Y^nXI*XKblAd&tE00HIv?hj4gQIHwCG{(-#%1ZX{<{Au!;o)IV_4@&H z?UteMTR$vy+DR$gyEf?Z#>U2ZghaKN(*=he7=cmROEaF7mzPgn)#>#ke%$syLuO`Y zwM3;{-mtdF9rSiBEl`1v+W3Fg8Bg0e? z-s2i(#dIzS@(+?aWK^emRi$}V<;1j%VgZBBvp}JF8ZmarXI;AJ3U7GMn_{~f1Kz21)t{a z%OWm!vZT#aD#;AT7TDj7izP4S!~zUXZth?sBggVFp&u5h+`Tj&WGJ7u6_^TWUzPFY zNv!?7zm$(s;x`YqH8q|n>ARq1Fp3V^RglzWz~_r2vOoepYOyIft2po7|0mUrh8Z2u z#3ADC!$X(7h7AuyA08@0rYqhxJd9kN8yOkVFV9Vm*in^=Euj7$KL3>e*N+O3R&Cg| zF33F=KKrOLX;Ipj)8#I*-<|vB>1)|sX`*paCDCX!qFTiHnnYDQEP&N4+X)OBg|qa} z-9+~Jy6d_q+WLO0ss8Osp1R)fn3M#z!X*n$qo%Z?4l!TPa$toAdY+pvuH5VLERp}% zV1(6qVaz)J4C!`!*45<}c?4ohChrPPgV*A`s(2e!!D2oXOJFqAvkP%|wmwrJ7zhTQVte1`35D>qt1gVP!!%IXStqlHH0@S38|& zO2#<=?rxNJgc84;B3z!f(Tv^54cuqvp2i-AE2;eSt9#yklJ?D<|HH*-Udvd<&941> zz-nh_XKCVTne0AX;fNr1c6E6=5=4TPuwy8vTmS%=2=9N=Tb8=^y~4Ns?Tc zOlH*)f6*wG9nd}OQqqTIMAke=;q-JX6?q%EJEc*$Yc*US!bA0huav%%d1u=T%kilx z9K2R?P-WTpSuR$%vBIXf8SeINMR2hNYMMN(AtktZjI|`UMT^6$=3~~@`AYNK5&>-l zh8|IEG%xBG*9cPo;%|IV{+42m8v5n|{+AbxwL_BWB0&;sUVEN#;)mQ^*VJd)#trIv zKetR!`tmhwWa>W53q`70obBe}`8p$mlzh_rA)feJ?~!L9O?^Bp20ehdgHVNKm%j}{ zBIOua*m$1%@f3>^0q9)LARu=JAD;=>3##b5+25)x{SgQW;xQhQemQXpWIz%t%Dp@{ zxl*yPA`^OamxLP4<>Fea-u>0gBBZ-Xdq;o9P}inUBb4iALl^r^Jw=^c`EP+%&_}Zd@v-c_QV`6fT%@OC z*uqmKT+(VG$}c;MHh(3v>EqEbdXOq!H$9k{QRCMqnp4d||L5S+yhdUZ7CxS+#A#UJ zW3MKf3wJ4^ggN^Ok>@ife^JGs^e)g@M4?9>AI^rhz@ceaTwC<%MquDnY>&5u(2<{$ zQyJ2TAnGq7ex6j_wJDAR-DQ_(1S?$NEOd1EOB{&0yCvIw387Ow3;yaJxSt=0hSJFn zDz*Rg^d@%S#nnOL6l+)ReoKHuaqI5v3~n4yDwPRU2e*dzoE=OK3lW<0(WMzBLg>72 zyA1suzfaN%Y*6WAT=J(_l#z6hz(3)Km9If7*LBbJ=5%4ZE%4bQS-d;6+c!1bsKinh z#}8ErysA$7gS=&1Kz~kJSKwJ(rd9t}Sr{-j@?mC%u_r2K`ssZ89!E!2g<@bJd{yM% z?#Qh&K4XjVFZa#2_wo7XoCI5wvcl$eWcXyZe*go>h zo_5x5CeL$g^X=VL+shWXLK-`3r{bz$Thq($uW%zQ4;D@9!zdTdWm=e|UXV+!qQOP( zRjv04xx|vjEP-}=zAQQ8P6TdkK%BDAs-w3qm!@Bk>lStONSLGkZ_y?U1_S-cr+ip5 zl#35-|MZ8wwsrH+^7LMD0G*{M%vVP|k@TD0o4u!gWQ5r(3heVvw!DfA(Gen@n+iSk z(@W25XyX2IdI2TufIM!DR(axrpLjn%s_ErDpYAvAE&Nu8>D>`zzg>eMt z+FTS_7+Z7y91@xTjfaPaX%x8neX56eG!_Hf|I%y-x%_FuBH^@uzxF-I+T$>i><-PA zAjtu#23mJts%Ndpg8AxeROEfi_Mx{NC^i(9dhbw0@U&Rdk!m6VKB*+koLV{LQ66JW zbw}rS3au=k7-r)Z6T0(Pm%zDzzlSmjrdp&VMb>R=PHkl$%^2YyEZww#>Ap4|f<*G= zVRXiIa1(b~@sAt#QHcPSJ#17+wWDqs|1Mv9LoZjT!MA_nt@~<6eCz$h4YqSe%B~+q UasKLS>%bEf7;=(0{QD_F*s-jlt5#SQ}mnCZbeEFgwp0Wky%h%wkPtS-l);A?#3 zxpu4LUmszHlMw0~mwaHAg| z$iP;s)o;eFuIuiP?Dh5a+$Ar^WjdX{yu93Y;9{}3{0lap&$rv{@xYgtmn(lor_<@X zZhv|qVR-L>e+*XZ_}A;eej)YR#NR6r+nEiD);;S-QC@CxvcB@+`6*&z{zBCP`&+rUly|u z4-c!=YBrml9DBKX$BB7(cqr@8#bQy{b$?Y=`~ALYn)Q0!{?)_7!*;u^s_G^K84EM4 zkt0ApIL$F4zyf`?SOsc9XQ-FTKy1Tn8*YMtU^d5NES<`i2 z>+G%k+t0nI*Ihz(Z?X44#=|kJQ7d(5doi2Mmdj=P{W2YRm(rc4Y4-d5^+#%Y5A14> zg?&(6*X{J@+_hCz)m?{vd?4c?Sbw9|UB%pWrUp&ZG)?otC)IAZyXM8gj}I)%tA00k zU^1DsSGZoU&%FY0vgW-9G9H$MtK4-nog(f_cxo(g)Q$RvET21{P@xSd9hfWTYpHF%N(0b zCI_>g$z(E{&DsZ{X`08!$MRQY!}`hn6TJsABDOV*R(bMtw;H^@zLuZe@sP{A6Ix|> zcOydYf!)m(^}lt0&5k!cT)A=dcq2ut>`^$WuIqEZ*u4ib29|{5b#TPJ)eXVNSB1CL z{9F6YcGJ_%j}6V|^S8IRc7HSK@v*$7X&xRPo}Zs@IFKM&OCWA^VF z*fh=k{r%<55U=NLx7%~0s;ZjJW~+8X0`p3t|le-go4`gtTVU1LYQB_sv z{=@IRxuJF2V9n?AgVokoX1m?){(t_y{pNDHT&-50 zG?1?+SR+-YB)i?Ndw96(BU_^GZXK-SyU`xT-tYHqaF@&F#}8?**Xwrf^T&5Jw#6?K zrQQP>6-&Y~>K+5S?7jQWyRYKED_Fe;mO9)d0lVF9`Ts6l?6{u22Qn&VSYy;ZfOT?K zve|6f=l^>*H=I0>|9`0iZ@Xo@T-)WKm%NtC_a4Zo2-X;tV9jQ;lSiqZpP$=x;(KRU zWq$GA)miU>T_0J%mRm0iLlruM++>Lea zEpl~Tzr4I$I6%{T;77do4Sn0~_VMwt%tMb~qi8p*AD>31_drI%l5ljcJiJ~0_L_I_ zwo{3xr>ED~*En}Yr}w~5RaMn$wc2jC#}83m*X_MM8J*q(8HsNfw(~)RaulyUNBb8H zWGI$|#OpmLGMS2FNeGj{0Wg2V`LKpjJ_OTsTkQSdY&M&d56;2G7?|_z528HB z=JWZ5i4*ogY?e>4lfp`D@h>G5~ z*!#ix;|Zw`J_v(BSP~ASJUuRduwa>Ge9dXBpP!%a@9*FHS%-gv&1UoC$B&;se-3>| z{&tpx!ziD5v)}KVra8ANEbTbAUb{SLI(M~`$>d-{vET2@D(vCm;owaFlgZ@Z^IXeQ zcRrtYZ{@Bz_ zczt~>Kc;h^==ZK${NrZ`mJ8H%efg@&9XPp!EV@g=ciq+Ax7ho^DFr|I<2boC=j&M# z4yH_D&K+GY2ahL{$=7_QOPSO(O=Dr$HJ{Jhn(y~}3&Q~k)?k0iy5n3LuKa+)+bRpC zD_^Ahdt7Ud|sW&3~qzFga4vAFqR{tI{Y?(S~2T7Bg$zW2dlBm`?n2m5`>m+h{o_Rp7R zSQp-gvfJ&>JtvpT<-we;J7rib7N7BCzWzNrUvP^T9-M2KVGTvF1~#2e+vnAKy*_^3 z@bfk_oO|EgcDwzWEfmm$U=3_Go3+8}P6x{L>W>GKx|@GXKdxz-`}_M}zkYqjfwRl+ zEBuT~-uA)iy8M21K967xtR$)X!qfFf-1|Lq=JWZ%yNh?b-Fm%VE|*Qy9KSW^Ccg5u z&erE;MX-kARlOSa6Fx94?>rB$+a&9aE@RNMX-ifGSN<~2HY=N z?umUy$GU%eJ_Kthf;GGnrgHSX{qn!GhWZZ}ozu$}JTzI`iy{{8#+PYl6s diff --git a/tests/ragger/snapshots/stax/get_pk_None/00002.png b/tests/ragger/snapshots/stax/get_pk_None/00002.png index f59899e9aa967b23177d83aef0c8c2c9041eab91..13499fcc9366bb214269b05db05ce8ae4380ce24 100644 GIT binary patch delta 3143 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 From fc2599793c5b3d856c535b72bae501107ca3a4be Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Wed, 24 Jan 2024 17:26:07 +0100 Subject: [PATCH 152/160] Add use cases to manifest --- ledger_app.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ledger_app.toml b/ledger_app.toml index 4a815e598..5839919e8 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -3,6 +3,11 @@ build_directory = "./" sdk = "C" devices = ["nanos", "nanox", "nanos+", "stax"] +[use_cases] # Coherent build options that make sense for your application +debug = "DEBUG=1" +set_test_keys = "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" +cal_bypass = "DEBUG=1 BYPASS_SIGNATURES=1" + [tests] unit_directory = "./tests/unit" pytest_directory = "./tests/ragger" From 55e4ba15c12d202983918d068b6b50f5068e5229 Mon Sep 17 00:00:00 2001 From: Francois Beutin Date: Thu, 22 Feb 2024 13:12:26 +0100 Subject: [PATCH 153/160] Rename use_case use_test_keys in manifest --- ledger_app.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ledger_app.toml b/ledger_app.toml index 5839919e8..5c2fe3020 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -5,7 +5,7 @@ devices = ["nanos", "nanox", "nanos+", "stax"] [use_cases] # Coherent build options that make sense for your application debug = "DEBUG=1" -set_test_keys = "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" +use_test_keys = "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" cal_bypass = "DEBUG=1 BYPASS_SIGNATURES=1" [tests] From 63da10e20ee59036a0d2cd2e5625bb18e86ac586 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 26 Feb 2024 15:09:42 +0100 Subject: [PATCH 154/160] Fix recover_transaction function in Ragger client for non-legacy transactions --- .../src/ledger_app_clients/ethereum/utils.py | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/client/src/ledger_app_clients/ethereum/utils.py b/client/src/ledger_app_clients/ethereum/utils.py index f538403c7..2b50fe551 100644 --- a/client/src/ledger_app_clients/ethereum/utils.py +++ b/client/src/ledger_app_clients/ethereum/utils.py @@ -17,24 +17,22 @@ def recover_message(msg, vrs: tuple) -> bytes: return bytes.fromhex(addr[2:]) -# TODO: Figure out why it doesn't work for non-legacy transactions def recover_transaction(tx_params, vrs: tuple) -> bytes: raw_tx = Account.create().sign_transaction(tx_params).rawTransaction prefix = bytes() if raw_tx[0] in [0x01, 0x02]: prefix = raw_tx[:1] raw_tx = raw_tx[len(prefix):] - if prefix == bytes(): - # v is returned on one byte only so it might have overflowed - # in that case, we will reconstruct it to its full value - if "chainId" in tx_params: - trunc_chain_id = tx_params["chainId"] - while trunc_chain_id.bit_length() > 32: - trunc_chain_id >>= 8 - target = tx_params["chainId"] * 2 + 35 - trunc_target = trunc_chain_id * 2 + 35 - diff = vrs[0][0] - (trunc_target & 0xff) - vrs = (target + diff, vrs[1], vrs[2]) + # v is returned on one byte only so it might have overflowed + # in that case, we will reconstruct it to its full value + if "chainId" in tx_params: + trunc_chain_id = tx_params["chainId"] + while trunc_chain_id.bit_length() > 32: + trunc_chain_id >>= 8 + target = tx_params["chainId"] * 2 + 35 + trunc_target = trunc_chain_id * 2 + 35 + diff = vrs[0][0] - (trunc_target & 0xff) + vrs = (target + diff, vrs[1], vrs[2]) decoded = rlp.decode(raw_tx) reencoded = rlp.encode(decoded[:-3] + list(vrs)) addr = Account.recover_transaction(prefix + reencoded) From 682354ce654838febb429a6611c4c1b102c5d915 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 27 Feb 2024 16:20:26 +0100 Subject: [PATCH 155/160] Updated Ragger client changelog --- client/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index 3d66d0b07..094bcd627 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Increased the delay between `autonext` callback calls for EIP-712 on Stax +- `recover_transaction` util function for non-legacy transactions ## [0.2.1] - 2023-12-01 From 72e26947c341ecdfcec3ed68dfad41469d4c6f1f Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 8 Mar 2024 14:36:10 +0100 Subject: [PATCH 156/160] Fix blind-signing TX refusal Would refuse the APDU but then start a empty signature flow on the device Which would crash the device when accepted or rejected --- src_features/signTx/logic_signTx.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index b1ca0654a..bdacd7684 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -316,15 +316,13 @@ static int strcasecmp_workaround(const char *str1, const char *str2) { return 0; } -__attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool *use_standard_UI) { +__attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool *use_standard_UI) { char displayBuffer[50]; uint8_t decimals = WEI_TO_ETHER; uint64_t chain_id = get_tx_chain_id(); const char *ticker = get_displayable_ticker(&chain_id, chainConfig); ethPluginFinalize_t pluginFinalize; - *use_standard_UI = true; - // Verify the chain if (chainConfig->chainId != ETHEREUM_MAINNET_CHAINID) { uint64_t id = get_tx_chain_id(); @@ -334,7 +332,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool reset_app_context(); reportFinalizeError(direct); if (!direct) { - return; + return false; } } } @@ -358,7 +356,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool PRINTF("Plugin finalize call failed\n"); reportFinalizeError(direct); if (!direct) { - return; + return false; } } // Lookup tokens if requested @@ -384,7 +382,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool PRINTF("Plugin provide token call failed\n"); reportFinalizeError(direct); if (!direct) { - return; + return false; } } pluginFinalize.result = pluginProvideInfo.result; @@ -409,7 +407,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool PRINTF("Incorrect amount/address set by plugin\n"); reportFinalizeError(direct); if (!direct) { - return; + return false; } } memmove(tmpContent.txContent.value.value, pluginFinalize.amount, 32); @@ -425,7 +423,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool PRINTF("ui type %d not supported\n", pluginFinalize.uiType); reportFinalizeError(direct); if (!direct) { - return; + return false; } } } @@ -450,7 +448,7 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool reportFinalizeError(direct); ui_warning_contract_data(); if (!direct) { - return; + return false; } } @@ -530,12 +528,16 @@ __attribute__((noinline)) static void finalize_parsing_helper(bool direct, bool // Prepare network field get_network_as_string(strings.common.network_name, sizeof(strings.common.network_name)); PRINTF("Network: %s\n", strings.common.network_name); + return true; } void finalizeParsing(bool direct) { - bool use_standard_UI; + bool use_standard_UI = true; bool no_consent_check; - finalize_parsing_helper(direct, &use_standard_UI); + + if (!finalize_parsing_helper(direct, &use_standard_UI)) { + return; + } // If called from swap, the user has already validated a standard transaction // And we have already checked the fields of this transaction above no_consent_check = G_called_from_swap && use_standard_UI; From 5715827addbbe98e5d71772949c24febf43be8b0 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 8 Mar 2024 17:39:18 +0100 Subject: [PATCH 157/160] New basic signature (+ verification) ragger tests --- tests/ragger/test_sign.py | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tests/ragger/test_sign.py diff --git a/tests/ragger/test_sign.py b/tests/ragger/test_sign.py new file mode 100644 index 000000000..401be19a0 --- /dev/null +++ b/tests/ragger/test_sign.py @@ -0,0 +1,67 @@ +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator, NavInsID +from ledger_app_clients.ethereum.client import EthAppClient +import ledger_app_clients.ethereum.response_parser as ResponseParser +from ledger_app_clients.ethereum.utils import recover_transaction +from web3 import Web3 + + +# Values used across all tests +CHAIN_ID = 1 +ADDR = bytes.fromhex("0011223344556677889900112233445566778899") +BIP32_PATH = "m/44'/60'/0'/0/0" +NONCE = 21 +GAS_PRICE = 13 +GAS_LIMIT = 21000 +AMOUNT = 1.22 + + +def common(fw: Firmware, + back: BackendInterface, + nav: Navigator, + tx_params: dict): + app_client = EthAppClient(back) + + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + with app_client.sign(BIP32_PATH, tx_params): + if fw.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + end_text = "Accept" + else: + next_action = NavInsID.USE_CASE_REVIEW_TAP + confirm_action = NavInsID.USE_CASE_REVIEW_CONFIRM + end_text = "Sign" + nav.navigate_until_text(next_action, [confirm_action], end_text) + + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_transaction(tx_params, vrs) + assert addr == DEVICE_ADDR + + +def test_legacy(firmware: Firmware, backend: BackendInterface, navigator: Navigator): + common(firmware, backend, navigator, { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": CHAIN_ID + }) + + +def test_1559(firmware: Firmware, backend: BackendInterface, navigator: Navigator): + common(firmware, backend, navigator, { + "nonce": NONCE, + "maxFeePerGas": Web3.to_wei(145, "gwei"), + "maxPriorityFeePerGas": Web3.to_wei(1.5, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(AMOUNT, "ether"), + "chainId": CHAIN_ID + }) From 6414890b2f3516c15632cd0a4c3b955e85f8e701 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 8 Mar 2024 18:00:28 +0100 Subject: [PATCH 158/160] Added ERC-20 ABI & fixed indentation on other ABIs --- tests/ragger/abis/erc1155.json | 548 ++++++++++++++++----------------- tests/ragger/abis/erc20.json | 135 ++++++++ tests/ragger/abis/erc721.json | 532 ++++++++++++++++---------------- 3 files changed, 675 insertions(+), 540 deletions(-) create mode 100644 tests/ragger/abis/erc20.json diff --git a/tests/ragger/abis/erc1155.json b/tests/ragger/abis/erc1155.json index 3c53ad8c2..6f8e6ab25 100644 --- a/tests/ragger/abis/erc1155.json +++ b/tests/ragger/abis/erc1155.json @@ -1,276 +1,276 @@ [ - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "indexed" : false, - "internalType" : "bool", - "name" : "_approved", - "type" : "bool" - } - ], - "name" : "ApprovalForAll", - "type" : "event" - }, - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "indexed" : false, - "internalType" : "uint256[]", - "name" : "_ids", - "type" : "uint256[]" - }, - { - "indexed" : false, - "internalType" : "uint256[]", - "name" : "_values", - "type" : "uint256[]" - } - ], - "name" : "TransferBatch", - "type" : "event" - }, - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "indexed" : false, - "internalType" : "uint256", - "name" : "_id", - "type" : "uint256" - }, - { - "indexed" : false, - "internalType" : "uint256", - "name" : "_value", - "type" : "uint256" - } - ], - "name" : "TransferSingle", - "type" : "event" - }, - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : false, - "internalType" : "string", - "name" : "_value", - "type" : "string" - }, - { - "indexed" : true, - "internalType" : "uint256", - "name" : "_id", - "type" : "uint256" - } - ], - "name" : "URI", - "type" : "event" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_id", - "type" : "uint256" - } - ], - "name" : "balanceOf", - "outputs" : [ - { - "internalType" : "uint256", - "name" : "", - "type" : "uint256" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address[]", - "name" : "_owners", - "type" : "address[]" - }, - { - "internalType" : "uint256[]", - "name" : "_ids", - "type" : "uint256[]" - } - ], - "name" : "balanceOfBatch", - "outputs" : [ - { - "internalType" : "uint256[]", - "name" : "", - "type" : "uint256[]" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_operator", - "type" : "address" - } - ], - "name" : "isApprovedForAll", - "outputs" : [ - { - "internalType" : "bool", - "name" : "", - "type" : "bool" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "internalType" : "uint256[]", - "name" : "_ids", - "type" : "uint256[]" - }, - { - "internalType" : "uint256[]", - "name" : "_values", - "type" : "uint256[]" - }, - { - "internalType" : "bytes", - "name" : "_data", - "type" : "bytes" - } - ], - "name" : "safeBatchTransferFrom", - "outputs" : [], - "stateMutability" : "nonpayable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_id", - "type" : "uint256" - }, - { - "internalType" : "uint256", - "name" : "_value", - "type" : "uint256" - }, - { - "internalType" : "bytes", - "name" : "_data", - "type" : "bytes" - } - ], - "name" : "safeTransferFrom", - "outputs" : [], - "stateMutability" : "nonpayable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "internalType" : "bool", - "name" : "_approved", - "type" : "bool" - } - ], - "name" : "setApprovalForAll", - "outputs" : [], - "stateMutability" : "nonpayable", - "type" : "function" - } + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "ApprovalForAll", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + }, + { + "indexed" : false, + "internalType" : "uint256[]", + "name" : "_values", + "type" : "uint256[]" + } + ], + "name" : "TransferBatch", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + }, + { + "indexed" : false, + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + } + ], + "name" : "TransferSingle", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : false, + "internalType" : "string", + "name" : "_value", + "type" : "string" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + } + ], + "name" : "URI", + "type" : "event" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + } + ], + "name" : "balanceOf", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address[]", + "name" : "_owners", + "type" : "address[]" + }, + { + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + } + ], + "name" : "balanceOfBatch", + "outputs" : [ + { + "internalType" : "uint256[]", + "name" : "", + "type" : "uint256[]" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + } + ], + "name" : "isApprovedForAll", + "outputs" : [ + { + "internalType" : "bool", + "name" : "", + "type" : "bool" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256[]", + "name" : "_ids", + "type" : "uint256[]" + }, + { + "internalType" : "uint256[]", + "name" : "_values", + "type" : "uint256[]" + }, + { + "internalType" : "bytes", + "name" : "_data", + "type" : "bytes" + } + ], + "name" : "safeBatchTransferFrom", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_id", + "type" : "uint256" + }, + { + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + }, + { + "internalType" : "bytes", + "name" : "_data", + "type" : "bytes" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "setApprovalForAll", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + } ] diff --git a/tests/ragger/abis/erc20.json b/tests/ragger/abis/erc20.json new file mode 100644 index 000000000..301b94656 --- /dev/null +++ b/tests/ragger/abis/erc20.json @@ -0,0 +1,135 @@ +[ + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_spender", + "type" : "address" + } + ], + "name" : "allowance", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "remaining", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_spender", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + } + ], + "name" : "approve", + "outputs" : [ + { + "internalType" : "bool", + "name" : "success", + "type" : "bool" + } + ], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + } + ], + "name" : "balanceOf", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "balance", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [], + "name" : "totalSupply", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + } + ], + "name" : "transfer", + "outputs" : [ + { + "internalType" : "bool", + "name" : "success", + "type" : "bool" + } + ], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_value", + "type" : "uint256" + } + ], + "name" : "transferFrom", + "outputs" : [ + { + "internalType" : "bool", + "name" : "success", + "type" : "bool" + } + ], + "stateMutability" : "nonpayable", + "type" : "function" + } +] diff --git a/tests/ragger/abis/erc721.json b/tests/ragger/abis/erc721.json index e00d5ca3f..b6f583563 100644 --- a/tests/ragger/abis/erc721.json +++ b/tests/ragger/abis/erc721.json @@ -1,268 +1,268 @@ [ - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_approved", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "Approval", - "type" : "event" - }, - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "indexed" : false, - "internalType" : "bool", - "name" : "_approved", - "type" : "bool" - } - ], - "name" : "ApprovalForAll", - "type" : "event" - }, - { - "anonymous" : false, - "inputs" : [ - { - "indexed" : true, - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "indexed" : true, - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "Transfer", - "type" : "event" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_approved", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "approve", - "outputs" : [], - "stateMutability" : "payable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_owner", - "type" : "address" - } - ], - "name" : "balanceOf", - "outputs" : [ - { - "internalType" : "uint256", - "name" : "", - "type" : "uint256" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "getApproved", - "outputs" : [ - { - "internalType" : "address", - "name" : "", - "type" : "address" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_owner", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_operator", - "type" : "address" - } - ], - "name" : "isApprovedForAll", - "outputs" : [ - { - "internalType" : "bool", - "name" : "", - "type" : "bool" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "ownerOf", - "outputs" : [ - { - "internalType" : "address", - "name" : "", - "type" : "address" - } - ], - "stateMutability" : "view", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "safeTransferFrom", - "outputs" : [], - "stateMutability" : "payable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - }, - { - "internalType" : "bytes", - "name" : "data", - "type" : "bytes" - } - ], - "name" : "safeTransferFrom", - "outputs" : [], - "stateMutability" : "payable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_operator", - "type" : "address" - }, - { - "internalType" : "bool", - "name" : "_approved", - "type" : "bool" - } - ], - "name" : "setApprovalForAll", - "outputs" : [], - "stateMutability" : "nonpayable", - "type" : "function" - }, - { - "inputs" : [ - { - "internalType" : "address", - "name" : "_from", - "type" : "address" - }, - { - "internalType" : "address", - "name" : "_to", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "_tokenId", - "type" : "uint256" - } - ], - "name" : "transferFrom", - "outputs" : [], - "stateMutability" : "payable", - "type" : "function" - } + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_approved", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "Approval", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "indexed" : false, + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "ApprovalForAll", + "type" : "event" + }, + { + "anonymous" : false, + "inputs" : [ + { + "indexed" : true, + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "indexed" : true, + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "Transfer", + "type" : "event" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_approved", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "approve", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + } + ], + "name" : "balanceOf", + "outputs" : [ + { + "internalType" : "uint256", + "name" : "", + "type" : "uint256" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "getApproved", + "outputs" : [ + { + "internalType" : "address", + "name" : "", + "type" : "address" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_owner", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + } + ], + "name" : "isApprovedForAll", + "outputs" : [ + { + "internalType" : "bool", + "name" : "", + "type" : "bool" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "ownerOf", + "outputs" : [ + { + "internalType" : "address", + "name" : "", + "type" : "address" + } + ], + "stateMutability" : "view", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + }, + { + "internalType" : "bytes", + "name" : "data", + "type" : "bytes" + } + ], + "name" : "safeTransferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_operator", + "type" : "address" + }, + { + "internalType" : "bool", + "name" : "_approved", + "type" : "bool" + } + ], + "name" : "setApprovalForAll", + "outputs" : [], + "stateMutability" : "nonpayable", + "type" : "function" + }, + { + "inputs" : [ + { + "internalType" : "address", + "name" : "_from", + "type" : "address" + }, + { + "internalType" : "address", + "name" : "_to", + "type" : "address" + }, + { + "internalType" : "uint256", + "name" : "_tokenId", + "type" : "uint256" + } + ], + "name" : "transferFrom", + "outputs" : [], + "stateMutability" : "payable", + "type" : "function" + } ] From c193362d56053ab2a815772b7496b0f82dc7aab5 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 8 Mar 2024 17:47:55 +0100 Subject: [PATCH 159/160] New blind-sign ragger test --- tests/ragger/constants.py | 2 + .../nanos/blind-signed_approval/00000.png | Bin 0 -> 428 bytes .../nanos/blind-signed_approval/00001.png | Bin 0 -> 419 bytes .../nanos/blind-signed_approval/00002.png | Bin 0 -> 349 bytes .../nanosp/blind-signed_approval/00000.png | Bin 0 -> 587 bytes .../nanosp/blind-signed_approval/00001.png | Bin 0 -> 381 bytes .../nanox/blind-signed_approval/00000.png | Bin 0 -> 587 bytes .../nanox/blind-signed_approval/00001.png | Bin 0 -> 381 bytes .../stax/blind-signed_approval/00000.png | Bin 0 -> 13105 bytes .../stax/blind-signed_approval/00001.png | Bin 0 -> 10883 bytes tests/ragger/test_blind_sign.py | 55 ++++++++++++++++++ tests/ragger/test_nft.py | 5 +- 12 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 tests/ragger/snapshots/nanos/blind-signed_approval/00000.png create mode 100644 tests/ragger/snapshots/nanos/blind-signed_approval/00001.png create mode 100644 tests/ragger/snapshots/nanos/blind-signed_approval/00002.png create mode 100644 tests/ragger/snapshots/nanosp/blind-signed_approval/00000.png create mode 100644 tests/ragger/snapshots/nanosp/blind-signed_approval/00001.png create mode 100644 tests/ragger/snapshots/nanox/blind-signed_approval/00000.png create mode 100644 tests/ragger/snapshots/nanox/blind-signed_approval/00001.png create mode 100644 tests/ragger/snapshots/stax/blind-signed_approval/00000.png create mode 100644 tests/ragger/snapshots/stax/blind-signed_approval/00001.png create mode 100644 tests/ragger/test_blind_sign.py diff --git a/tests/ragger/constants.py b/tests/ragger/constants.py index 86b6304ee..0f375a71f 100644 --- a/tests/ragger/constants.py +++ b/tests/ragger/constants.py @@ -1,3 +1,5 @@ from pathlib import Path +import os ROOT_SNAPSHOT_PATH = Path(__file__).parent +ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) diff --git a/tests/ragger/snapshots/nanos/blind-signed_approval/00000.png b/tests/ragger/snapshots/nanos/blind-signed_approval/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..c2420afe1d5b2ea19c999ee43f90c67f120d4f5b GIT binary patch literal 428 zcmV;d0aN~oP)CI>TUk!C8`c(mGx8WRa z!xd`|I)kHai-|mfH_EU=@WQ<8?vt;iutXgsJ7fsT#RT=*@-kDbFv|(3aIfXRyfj@+?msfv|9!ih8`J$fW)Vn zz~CO>;T|BN_mLd%e%vjPJ%D;eMaiRY#At6&Lsw*_J&nWB{N+Jii(`R~LM#+7vH7^1 zF{YKPgOW#*A8m0f)G#fTs8dpVu7-&qzkS-3oiTU-^*<9k78P5Y>WHD!W4f~aS-%if z=ZR@VlnSwV`CZM!$c^HXr@$^f3+e?K9T@e1AEk+s4NtSE;t^;oLOod9f%9u_+g!V> zg-|*Hr>)vEHnNj9aru-OX(LJU#UxzW#2tv5bk|2oN7xMoGovT4Cs$JRS3(FO58w+7 Wi7X{&VtL~L0000&Y zgBND@G|SJC_g~fqbc0^sIaWU`>wufAelSi!%!3qtam)=vPiZv&K!Fpv#O{SmfokLJ zp87upO%wsYQqK)YLE>ZPF2NT+9(#mV<19*cgK44&97!^oMk`-llLWqi3*b+7J6;)f#rg;Z6 zj%lA#1coqYV>KeY%+@-9sUzLLDq<^u`9V=p&V$8RXc!x+7OAG zw)^arJc+=D-0$)sldm|!=|2NF`s5CFA)bPavHM@p0`xf59mjD7@&#R+4xnH^xfuWe N002ovPDHLkV1g%Zy?y`y literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanos/blind-signed_approval/00002.png b/tests/ragger/snapshots/nanos/blind-signed_approval/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ce795f34e8569e986af689fded3b59c9a8af2961 GIT binary patch literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/blind-signed_approval/00000.png b/tests/ragger/snapshots/nanosp/blind-signed_approval/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..11ea8a56bc60bd449386bb9fca08e76fedf58e0e GIT binary patch literal 587 zcmV-R0<`^!P)S}D{b#1o0q#G`|wuQS5382)wtbsZ$x!T z8b7$9HnG=lzlVLFx<${P6!qgz(YnI4qx6{=X_;q@`%ClIMm7U(NG4Lm_Q&#J1ZZ3e zyXyH$BR&LW=)3%m+QHAV#7M(%)%mQ=lVY6Ov82SGvAkBByJ8GzOnN}LRoi1@c3Sd@ zL)eHhZS?cAU9F$w-_DX#Mxd#s0eK$qpLo}IL8C3j{YD5OgsdbZV@<^j`&rM9)YB+7 zYZH)Z)TncR&?8brFCy+mswCOpR2L`emdEhH)?%IhOMz3CwxUy->rLA(r-*3Ow~Z_@ zEARM~*Qt|!hyA2_K(bE$kty;OzTxY+fMyp-fU^ztj3sY2!02En$sw;X-IP*99945Y ztDBzg0sh&>qbwR`mngtaky5_P{U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/blind-signed_approval/00000.png b/tests/ragger/snapshots/nanox/blind-signed_approval/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..11ea8a56bc60bd449386bb9fca08e76fedf58e0e GIT binary patch literal 587 zcmV-R0<`^!P)S}D{b#1o0q#G`|wuQS5382)wtbsZ$x!T z8b7$9HnG=lzlVLFx<${P6!qgz(YnI4qx6{=X_;q@`%ClIMm7U(NG4Lm_Q&#J1ZZ3e zyXyH$BR&LW=)3%m+QHAV#7M(%)%mQ=lVY6Ov82SGvAkBByJ8GzOnN}LRoi1@c3Sd@ zL)eHhZS?cAU9F$w-_DX#Mxd#s0eK$qpLo}IL8C3j{YD5OgsdbZV@<^j`&rM9)YB+7 zYZH)Z)TncR&?8brFCy+mswCOpR2L`emdEhH)?%IhOMz3CwxUy->rLA(r-*3Ow~Z_@ zEARM~*Qt|!hyA2_K(bE$kty;OzTxY+fMyp-fU^ztj3sY2!02En$sw;X-IP*99945Y ztDBzg0sh&>qbwR`mngtaky5_P{U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/blind-signed_approval/00000.png b/tests/ragger/snapshots/stax/blind-signed_approval/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7c13332b6ebd5b2edae1533c8fbb661eb1ff81b4 GIT binary patch literal 13105 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/blind-signed_approval/00001.png b/tests/ragger/snapshots/stax/blind-signed_approval/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ff1b3ab3f4dd6e51e46f9c6e0a2b36b8dd1f7b GIT binary patch literal 10883 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 Ldb{=}?D2mCKHFqS literal 0 HcmV?d00001 diff --git a/tests/ragger/test_blind_sign.py b/tests/ragger/test_blind_sign.py new file mode 100644 index 000000000..a4ed7679c --- /dev/null +++ b/tests/ragger/test_blind_sign.py @@ -0,0 +1,55 @@ +import json +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator, NavInsID +from ragger.error import ExceptionRAPDU +from ledger_app_clients.ethereum.client import EthAppClient +from web3 import Web3 +from constants import ROOT_SNAPSHOT_PATH, ABIS_FOLDER + + +# Token approval, would require loading the "internal plugin" & +# providing the token metadata from the CAL +def test_blind_sign(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator): + app_client = EthAppClient(backend) + + with open("%s/erc20.json" % (ABIS_FOLDER)) as file: + contract = Web3().eth.contract( + abi=json.load(file), + address=None + ) + data = contract.encodeABI("approve", [ + # Uniswap Protocol: Permit2 + bytes.fromhex("000000000022d473030f116ddee9f6b43ac78ba3"), + Web3.to_wei("2", "ether") + ]) + tx_params = { + "nonce": 235, + "maxFeePerGas": Web3.to_wei(100, "gwei"), + "maxPriorityFeePerGas": Web3.to_wei(10, "gwei"), + "gas": 44001, + # Maker: Dai Stablecoin + "to": bytes.fromhex("6b175474e89094c44da98b954eedeac495271d0f"), + "data": data, + "chainId": 1 + } + try: + with app_client.sign("m/44'/60'/0'/0/0", tx_params): + pass + except ExceptionRAPDU: + pass + else: + assert False + + moves = list() + if firmware.device.startswith("nano"): + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] + moves += [NavInsID.BOTH_CLICK] + else: + moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + "blind-signed_approval", + moves) diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index 87c1ac0c4..fd3987122 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -11,12 +11,9 @@ from ledger_app_clients.ethereum.utils import get_selector_from_data, recover_transaction from web3 import Web3 import json -import os -from constants import ROOT_SNAPSHOT_PATH +from constants import ROOT_SNAPSHOT_PATH, ABIS_FOLDER -ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) - BIP32_PATH = "m/44'/60'/0'/0/0" NONCE = 21 GAS_PRICE = 13 From 30067d6f7cd3a239910af7de7fccd65aee363577 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Fri, 8 Mar 2024 17:51:27 +0100 Subject: [PATCH 160/160] Updated release date in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bfabaaa0..9b3afd163 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [1.10.4](https://github.com/ledgerhq/app-ethereum/compare/1.10.3...1.10.4) - 2023-02-16 +## [1.10.4](https://github.com/ledgerhq/app-ethereum/compare/1.10.3...1.10.4) - 2023-03-08 ### Added