From da7d25687d74158feb12114c8d5b1b9daa8cc833 Mon Sep 17 00:00:00 2001 From: beer-1 <147697694+beer-1@users.noreply.github.com> Date: Mon, 26 Aug 2024 21:01:15 +0900 Subject: [PATCH] update simple map (#116) --- precompile/binaries/minlib/bit_vector.mv | Bin 1110 -> 1093 bytes precompile/binaries/minlib/capability.mv | Bin 1167 -> 1163 bytes precompile/binaries/minlib/code.mv | Bin 3126 -> 3086 bytes precompile/binaries/minlib/coin.mv | Bin 3300 -> 3293 bytes precompile/binaries/minlib/collection.mv | Bin 4863 -> 4842 bytes precompile/binaries/minlib/compare.mv | Bin 456 -> 453 bytes precompile/binaries/minlib/cosmos.mv | Bin 2415 -> 2395 bytes precompile/binaries/minlib/decimal128.mv | Bin 2556 -> 2553 bytes precompile/binaries/minlib/decimal256.mv | Bin 3681 -> 3678 bytes precompile/binaries/minlib/dex.mv | Bin 12805 -> 12705 bytes .../minlib/dispatchable_fungible_asset.mv | Bin 2394 -> 2346 bytes precompile/binaries/minlib/fixed_point32.mv | Bin 1454 -> 1450 bytes precompile/binaries/minlib/fixed_point64.mv | Bin 1580 -> 1576 bytes precompile/binaries/minlib/from_bcs.mv | Bin 838 -> 834 bytes precompile/binaries/minlib/function_info.mv | Bin 925 -> 925 bytes precompile/binaries/minlib/fungible_asset.mv | Bin 10427 -> 10358 bytes precompile/binaries/minlib/guid.mv | Bin 1054 -> 1052 bytes precompile/binaries/minlib/hex.mv | Bin 1393 -> 1366 bytes precompile/binaries/minlib/initia_nft.mv | Bin 3958 -> 3946 bytes precompile/binaries/minlib/managed_coin.mv | Bin 1415 -> 1377 bytes precompile/binaries/minlib/multisig.mv | Bin 5179 -> 5128 bytes precompile/binaries/minlib/nft.mv | Bin 3803 -> 3793 bytes .../binaries/minlib/object_code_deployment.mv | Bin 1460 -> 1434 bytes precompile/binaries/minlib/option.mv | Bin 1668 -> 1646 bytes .../binaries/minlib/primary_fungible_store.mv | Bin 3897 -> 3801 bytes precompile/binaries/minlib/query.mv | Bin 682 -> 680 bytes precompile/binaries/minlib/simple_map.mv | Bin 1523 -> 2184 bytes precompile/binaries/minlib/simple_nft.mv | Bin 3537 -> 3528 bytes .../binaries/minlib/soul_bound_token.mv | Bin 5005 -> 4991 bytes precompile/binaries/minlib/string.mv | Bin 1106 -> 1099 bytes precompile/binaries/minlib/table.mv | Bin 2103 -> 2051 bytes precompile/binaries/minlib/vector.mv | Bin 2335 -> 2299 bytes precompile/binaries/minlib/vip_score.mv | Bin 3478 -> 3475 bytes precompile/binaries/stdlib/bit_vector.mv | Bin 1110 -> 1093 bytes precompile/binaries/stdlib/capability.mv | Bin 1167 -> 1163 bytes precompile/binaries/stdlib/code.mv | Bin 3126 -> 3086 bytes precompile/binaries/stdlib/coin.mv | Bin 3310 -> 3303 bytes precompile/binaries/stdlib/collection.mv | Bin 4863 -> 4842 bytes precompile/binaries/stdlib/compare.mv | Bin 456 -> 453 bytes precompile/binaries/stdlib/cosmos.mv | Bin 2415 -> 2395 bytes precompile/binaries/stdlib/decimal128.mv | Bin 2622 -> 2619 bytes precompile/binaries/stdlib/decimal256.mv | Bin 3800 -> 3797 bytes precompile/binaries/stdlib/dex.mv | Bin 12805 -> 12705 bytes .../stdlib/dispatchable_fungible_asset.mv | Bin 2394 -> 2346 bytes precompile/binaries/stdlib/fixed_point32.mv | Bin 1454 -> 1450 bytes precompile/binaries/stdlib/fixed_point64.mv | Bin 1580 -> 1576 bytes precompile/binaries/stdlib/from_bcs.mv | Bin 838 -> 834 bytes precompile/binaries/stdlib/function_info.mv | Bin 925 -> 925 bytes precompile/binaries/stdlib/fungible_asset.mv | Bin 10427 -> 10358 bytes precompile/binaries/stdlib/guid.mv | Bin 1054 -> 1052 bytes precompile/binaries/stdlib/hex.mv | Bin 1393 -> 1366 bytes precompile/binaries/stdlib/initia_nft.mv | Bin 3958 -> 3946 bytes precompile/binaries/stdlib/managed_coin.mv | Bin 1415 -> 1377 bytes precompile/binaries/stdlib/minitswap.mv | Bin 21271 -> 21099 bytes precompile/binaries/stdlib/multisig.mv | Bin 5179 -> 5128 bytes precompile/binaries/stdlib/nft.mv | Bin 3803 -> 3793 bytes .../binaries/stdlib/object_code_deployment.mv | Bin 1459 -> 1433 bytes precompile/binaries/stdlib/option.mv | Bin 1668 -> 1646 bytes .../binaries/stdlib/primary_fungible_store.mv | Bin 3897 -> 3801 bytes precompile/binaries/stdlib/query.mv | Bin 682 -> 680 bytes precompile/binaries/stdlib/simple_map.mv | Bin 1523 -> 2184 bytes precompile/binaries/stdlib/simple_nft.mv | Bin 3537 -> 3528 bytes .../binaries/stdlib/soul_bound_token.mv | Bin 5005 -> 4991 bytes precompile/binaries/stdlib/stableswap.mv | Bin 12192 -> 12021 bytes precompile/binaries/stdlib/staking.mv | Bin 12179 -> 11748 bytes precompile/binaries/stdlib/string.mv | Bin 1106 -> 1099 bytes precompile/binaries/stdlib/table.mv | Bin 2103 -> 2051 bytes precompile/binaries/stdlib/vector.mv | Bin 2335 -> 2299 bytes .../initia_stdlib/sources/multisig.move | 2 +- .../initia_stdlib/sources/simple_map.move | 317 ++++++++++++------ .../minitia_stdlib/sources/multisig.move | 2 +- .../minitia_stdlib/sources/simple_map.move | 317 ++++++++++++------ 72 files changed, 416 insertions(+), 222 deletions(-) diff --git a/precompile/binaries/minlib/bit_vector.mv b/precompile/binaries/minlib/bit_vector.mv index 78e98478356d8968395964000ae9bb81346bf53e..ef4f3da092d12beb9d6c3614f50ee52f3c65c2c3 100644 GIT binary patch delta 248 zcmZ9Fy=p>15QXQ=?A~4HUf~MjUnL}+ArBzhg+R1YtOY^s?0o?%31}8l<{eVx0W5q4 zOTl-r4q3GcPVvn-GaSyr@BOA+Yq` delta 275 zcmZ9Gu}XtM5QKMj?!UY2o%jbr)Kmer6GcdGCD^DCu+&a4g7^-CrJ&pcSXfwF_y{(F zt*yP!VB!4{EHcF~`z<@{Tl|dogVjkmy^8M`x8Hb$Ju>EJ{QEg>gN7O$i2y%$R`7Cj2l&$J8DhECTeVU7!baI~zKpr7>9Xu{I-MD^ znzR^XnkKHhLz8XOKHQ$EVZ|he%oGy)t~pplKBL_AEJ1sGG9Y?!zixS8ykm^c_27@2sbxtIjmxEUFFn7Np(nOV4jnwa<) e%o#*1nR!^anYdZ(nZaBeCNoBE=E)nF?*jlOixXJ@ delta 136 zcmeC??B|>ysaVV2%QTINV=;?@z+sjwuC=V9+=o~>cuukYVB$T*!NGTGqSXO0CN>^! zCPq#MW^M)`$p%C`%xpZHc^FfeY=C0i%=S!79E=Q%OuW)uOoD9OjEp=iTrAeiEZjhC gOneOH3?i1yJgnSI+^qJ@V6F|586!8#aJT=_ce1z1_RyM2?lp@Wl-U+iS8;0W+DdufS8M!Fu}55q{7Y2 zG%_%e6*B`-5JW>WMfXDld&Zf?M*2%Ums3rz=%P~ z9K5qXu(ntfpiYdq7SxLEUeR6_N~0PDTa1=1r7u@fN_E=cokZqh!<3-)|C>1q@&Q&!xZYxF z+T0&Ny0yo(^x8uE+^=jiwPXJXX7~i8UdEI@9A!#L7ch1;`lo;|{)X9A06&p_Dy?BB r%>dubjo76+2EXlOkm^{BY+L@bvQJ5JVU3>w?-sCA)|C|9q1^lheo{P& delta 692 zcmZ8ev5FKy5bf&jn(3~potd7U*;`HAy9*ZYxRXVNITJY*1Tzr>e?ZK|z-SRM6=e)H z+C&Tl5d{MS!9XxkFfr3#FfuT(XPrGyyBoT?dG)H^tNY{E;|E8N{nF_Zd~e-%KS}P; zMzNrK2|X<)@}YQ^4t~7YI}6q%gzas(QaI!UoWhiyj@z_f;8Z4wFf5-5Io%fe)=u3; z?BgeNkuizW@tD+M{E@$3@llSbljml5y;R%}Zp87a=%xBd)# zZGZZc^8>=uWIICf8Io_RaNqf3rrvqePxkmmg(nKWgVV$ZiBSK~d>-M~p z3@^r5uS>?6y@Z!LN`b_z_~v#>D#X4EC4~eoCc6~vo{Qc2Af*G(oP8Wp;l>G`I82>2Ly*h}RR9GDl? zE@5N>+6CbAe_?th!cKV<2e(Fs*J^yXEM`hr799U6$>TVd*n=r`lOM9~NH?HQJuiL+ PyqUp%9tsZa8@~D*fOm8g=i=kyVGv^G;p1lD=F?^7;uN$HVzl7l;y+)P}|f~;JOiYx+?8+noee(Dw- delta 139 zcmWN=yAAdmHS=q;z9Rg@Xtrf;oXPpKZTOg3f*4G_f}jkt+Ae8VFjSDbo4Q(+xPi;`!!$M z)Tk7%s@w`?3mcNl|63pAjxCh2g|Vi+DQ}3-zLdlLPx7)I3(Q>(VpKR4AQM_}9<0d`ymYd{pvqk@3l zMq>|ZU`5b{UL~>bD(H_T#l{r(T!k6L#$w5Q|us^;$c+{ z7d@0`JRFOfdYDXI@TADH2O?srdnllS4tuCwfSNt{hKf5b zum|4+)a*fzEd=%u!OcAEK@gmb1nl8HSr0Q09I=N(Pq1|uIN?jNL0@fX-SSF->B delta 1035 zcmZwF&ui2`6bJB3W+pS4_wr^Y$+o-g!L7@-Xj$+FNI<+R2%bGyL=aK*;K7@)hkEcR z#y>!;XF-ZbFBQCc^Q<>f5c~`DC9SnxOb(e$-VF2kzI>nlo<3WdJW=MA`DpAn8fQ=a zYS{5#wA&tR;n%^QFLtIY{{7oazl6@Lkg`3W-dxSlrP3N(@GYzW6qfcMrhSvHr5U!L z($Q3Fp46!o+A8Z~x9UF&ygci)HdYzlQM8xk6%pF!a$+(F-P+xE@|-m(N+%(0f5NCx zq)NE=$s+ zzou$apMgYVYX3cnut7yvVE-0e&=6GL}@Lfg}#GauwE4pm2m50uI{kqM936 zo=J+0QFooe1Y%>+F~H3mp z)I&;RV5!CoG-PopJ2+BuI4CXWkh9&*Aw}Q-kOL^dGzAg?<9pj7eypd9cy|nckj_zj z&UjCrsU1GJfDs(y0TqW(HW^kBVJ<*H2~{bvb{cBVf*Mj=PIDI2_%1szGYgut2mpN+ zw?GU27zjCwdz2U0XTc-RVn74VB2Oo*K7D^N3*JxgACR(Ma?Waw&_qODnX~(7!&miq z(QJ>I*Y)ON!ws7YDh|xVjrL&KoU<7)usMQ-B}{C1<=Ga4GyN VUE%!7Y^o vexshT(w~ul@CG}ALQiBg2aA>@X&kwQ0xF^=@~hAFYcI-tKzFU@K_Zm=JNTq#pKYZvGeWKL?;uv$0%r2HAx*vL`b*P6Hbd27qD;LDS!}caJZsnuPX#97k@jv8$un z2Z>pIN&9r9ZT_L%`3v{ifcsqTpkeDdTf=QJ>#w-oCzg(0o!YM4)>2&#Kp2JqfB@tG z+?t}34yBQ6LI`7Eg3kd&6i9vV_Kz>3mI{_@#?!g+G8@mzOUlEMGX010>RDEEI(al; zK9+qXR-W~US)uM<`dhEb$lPG9QQ4K(RW)Yg;B+wF=HG0y@wjF@%1x+|9cch=rZV44 cGHhp2&AG_0YE($rM2iJ1T%I}afBQFo026gM>i_@% delta 788 zcmbu6&1x1g7=NJ#(M@w*BU}s!M+?@1)|#&v#A~ zgB7Pl(rFn7)w7x(oT=lxoE>DD$*1Djl4fzEw56nzf>U#)EE~_&V!V+avYfSld6mA+ zUU~{avJes9>s_%Tk3x|%)M>{G0o6$Xu_{@OCB+=TDsyN$MPpkYuff7+Wo(9Ure~C<{nyhj*A&?hsB8e;8{*bFHZ7a zZ;KWe12B{+07AeRfSV~g(?ctB%MgaavxJWU1Y{`3AwL?fq82jhnepNv(p4^&kA} EpT$)N}Meb*tSzEY97)m7*s^dB%6&e;ma3 z${)U+=~Rm&ASi~AOcVA<5pGu&7>$}KCJ;>4#1)S`b{nvS-E0ejl)NNv!FnE@6=6&~ zVP;6N!%CHJtGLQJ7j6o%!;}pm%D$Xh4@x2szC`~hFgf&YvE-H69xE|fT`qm|48lB)dd;?93Fa!Vq delta 502 zcmZ{gy-osA5QVwinR{i<>_)`w5-RZrJ7G}^T02YS73_@(jfJ7IG|_D18(0&f7CwN5 zjZa`Kc>`l&;Uer7inlq%e0TEA`K*1_uA|1Ge>3;xrIgl|$8>Atg;`(uBM6>vI*$}O zDUT)><)KwlR;ON^_zgM|BksVj!Z}l#y+~cMqZJhqRGPHTeNb2C!#wIrB1xx3?JRm* zs+?3*p|r<67*i~(@-{Lq-dBKth_Zi_PHbz)1rsUrG50x~DP5U`POu9kY|_b1TXdSM zoXu1QeEy$`g+ruPY?{*Uki|E%%DVY+c`EqHz=Pw$HFhiW=}(6qZj(j^R)arw@C6%J porVYyHhxzALffTMLBdbj02V=gT3P0FayNc>4|1nEFdpzFeFLAAEf6O|Kq0^<$50Ey-`)K(e_Lr5$% zp22tkHC8s>L4lR6e9aW|&3wOkpY`|pRa86nhxW!R++(Bof+NFUg!)a->*3vX@56-C zvZ;8fRZl@tiIJ%dCu|rG{E8r%mFz`|$-Wje;6MsZXyL#$u#<9-^g7U;mHv(jCV`3w zq}Uf@^4SvZ%8ZMTl*JQvm$>KNpqxTZL<)F{16ilpw@ta;%c=|wN{}-={GhqM# delta 427 zcmZ{gF;2r!42F4q_It#3q862;RF&FLC``0Ls8V5LL}Gv(1XW_;5J*LD>5Rk#3(dfQ zxC93Pb!FiSG!4xJUOf1-|KI;dYu=iK&D2gR_j-MXo$5PI6@3|$Z}Yb4Kiv&JAuv?Q zs;aJsT0l^YSTbb0a6yX9sjagyYOSbHOmZNe5D|MZY-7sc+Sok?qGZs6{-TX`MKJM1 zSl|dptW>#P!#!Sb(YY`Kb0|RIUSN2LB@znaC8ih@9&Xj2CRpdHCpsCd%=F-Dr9CdR zukq$TZO!avuB+`};B&%Vr0j6>IU&$jvM57Tc1D jYDNO~IcP2q6~I(YxWy?0B-EXy1|@f=F$EDngua{ diff --git a/precompile/binaries/minlib/dex.mv b/precompile/binaries/minlib/dex.mv index 38c58d12c44b8d907f90ceb30812f049dff1f7e5..3bf0e544af144789d3d0f37209eed257c6df56bb 100644 GIT binary patch delta 2815 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 TI)zDND3^y|K-XVBcF+F+`%?vR diff --git a/precompile/binaries/minlib/dispatchable_fungible_asset.mv b/precompile/binaries/minlib/dispatchable_fungible_asset.mv index 86d8f9a4cf0a5029ce2f079856553901050e7fc6..c0fe148054f3d72861b271109f68420bacff58dc 100644 GIT binary patch delta 727 zcmY*WO>PrW47UA#X2$kRGJ{GI8k(d{8$zgH1A1E|*dW+)2A13)hyzqb+4cgkWycBF zutwqph*gh(-$12wB>O$vpFQ8__pAHTUEZ61rsA8wh~;;l4}bGV$A9Xm*YyWqU$>v0 zUA;L(EOAkk=8uaGOE{T&EW@(v08j6GfU}&%RYt&rSw^gjg=HT0nawQUALR_3pX_FM zHKJGN>~6B9B&u+24!R`7mkJ}5D@g=wWUP#5ml?$m@h zni~8#!-xCucYFBuKfden0tAO1gh5T4oH+1uM0FTO)yVw=SIv5hei1wYyz2^!!PPzXptqCiS28cS4&0vWkY zk(!owK!Qie6Yv%=cNPK^aoQb?zWwH#Z{|MN=k>Bb{AP-C_tA$Ranya!?`-^#ye!kw zbAgHQ;#D0ZbYcrws#cj2gzQ*iqzWi_Aw&eyc%X ze{Z#gr*&k5B_KC4zCEk&c#n(^g{*$!#zHO-Y>Q|Jo~+kS*0hM0)B5R;m~E8Z1-J$M zTDmQzB{IEX-GTc(;roMwG)gn+Vy8OD;QiTO$cYs)~le zCH&5@Vc!8_}2vJ;M5{;*{eYx*)7_1v66)bZ2!|^cRB^fwAdQbt6=jP$Gs( z*Sik}5fHYXmJvnUGq7csW5mo2P0c*gTr?x`(W@clMI%8`FEK?m#F1wpPK2GC(476h zwiev_>Zo$y4*T3;Rg}QOp{GTLWvtans~^xqZ+=hIo6_Tixnxsa)7NA+blB}Hx~C*2 z8MW5cNNUGcx*y%)B_X=3n-U==GgSJn(%ZtmlgQIxOeb#+yAFF@Ha?xWqaXsq)ZN8b~7v-EfApigX diff --git a/precompile/binaries/minlib/fixed_point32.mv b/precompile/binaries/minlib/fixed_point32.mv index 2dbe431dee7af850b7ead784134e8fad33ea6e1e..4975febe370974d770cee8b239b27c3b5bc4e630 100644 GIT binary patch delta 137 zcmW;CF$%&!5Jusde`ayn86}Y*N}7n+8PIFkdj{`fWtv>TE}$UZ!}A10aIyW~d)Q#t zYPFr5ZyYaZiUDs)V+j5YADxa}d#ptS5K&cDs6rw!BT^)N_IJ$LVVtnm(r{?@FuYE( dLz_M2vY1gpm5Z~9@kW>b%Q@6WC1qt0(GO->5q1Co delta 141 zcmW;C!3n}Z6h+ZL@4wMu{wRqAQCt{tB^b~)va=4WumMq9a3>fL`>-LiaBzF>eOPCg zYQ7mB?=GBC7acwtd+*a}@a3q#Htmu@Q~_0zjv%2yoI{WxKFI6#!~{tVQCBQY_w^2@ f?}Kj9WRJN_$5Kd@m|!%lIs0D;eqmBdRzO64Z^{uf diff --git a/precompile/binaries/minlib/fixed_point64.mv b/precompile/binaries/minlib/fixed_point64.mv index 0ec951338cd6192c0e36e1184cbe4dfb2fffa9fd..144460a3109bffe6348e03babea09780a820c5d7 100644 GIT binary patch delta 132 zcmZ3(vw~-Wh@>ie`Z7k2UM2;BwM-Y7x&E@U@-(r1VdeccQP*FLnT3Uki3JE4`T3cE zh=qfJk&$KNv`b7vj66)-j9g5LEP~ujh7JZy+)SIRm|K~2f#O_188JQv0R|BsW*$av bW^P7h774H_9!6GaZU#X{peQ2~0|Ns9HEI$C delta 136 zcmZ3%vxaAah@>Wa_A*9}iA)Lt8<{RJb2YND^0cviVdecbQP*FJg@b{Gg^7s;2pIYK znScl=!pO+V!LV`CB_<&z9%gPPE@nj*L2hP42LmQ<=FMfytxUQ=aW0^Y7$1WGg9r}` e4-+>FHbO2+++950v@1Ui_fF!Ib{`NYWIH&J))#&af2e9Sy7Tr6D7$}DnR mOk6CJ1(+q|SlAdDAV7?Vg;kN8iIG)_m5ZB^i9v`#m;nG!{0-9p delta 88 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 delta 120 zcmbQkF^^+{h?FJ!WX2{Yj;YKF0$Z8SFmg4riu251JAL4_Wj!F2WCT>-5r%cO8gH44P<|x;7Wdmu)PPknot#1%+(pEO$a}w1}pyX~QZxX2uiECMv~>tJJy_ zhMt?Dzx1U-bx$`lv=59t<~?zO1}eLeqZh9{P+xZYrWm5nePj*FQ&U#EO`YPJ1y(cO zua10nTw`j_4jRbU+euJA5Xh70ZBd)-pauiiPlj1vhN@@2J7|@L0)I-mP@w=B{{Pc& L+N0m{X^QR_)chqj delta 487 zcmYk2ze)o^5XN_BXZH4HCXka5NP>T2Bw!^$W3L2!0}%x!jg>E86;jz6?g^}{E$!@l z1A8lNeFG-q16B~k& zX@I-z813x_7$It=iIc=G`yy(TOrlvqk`b5E#0ma|S1ccJeqdi>v*7@H>^Usw;LsND RbCB?_InaiQv`Hy}`v#z*CgcDB diff --git a/precompile/binaries/minlib/initia_nft.mv b/precompile/binaries/minlib/initia_nft.mv index 3ef0dc39d0b4b6f55a99c28203899935d5c502c2..8d7041e3c45db8b403da477ace792cff113d30e2 100644 GIT binary patch delta 528 zcmZvWyKWOv5Qb;YIeVSin;j=>Z+6+N*Bd9s#!*-}q6!ca8YGk|1>yzhkkZr9f=-t* z4MLQD0}3QcBzOq~qN8%bDp1mlKFxf;=Ko!MFW!u@OX+;ISFZayD&u$2H|ei?4PW(N zQE>IP{d_M)fO$FuwHRf9ORN zxp|NIUY1sQmDYJ(PVBl7)pR_~v;7H9(m_5*z1%C~g@~)THox$~A*ajRY+i`5xfIWA z3th5#wH7a(xkHv35wJ@Rdx5Pj_Q@rWd~I9X1SkSj0??WIs2zi}>B&%PVC5@Q(k4pt z#ZUWc1~F=nM3RW!-+)>B+5cQr<|!>tn&&@Yrg7hnaZwlgX(~c?Tqf zdkB88TQRMZ@qR7gzm>z~UvGe7&k`|rBF58OR>ww`CAVZ4pL@!)l{Qk&*0 z(wq0IueUo0aNOyFnDkafAAwknN|1GKY8*Y9 zpa*xt0kHX@W$w-d$a`WBJ+{hQ!0zWhz`BX(@oG<49nI~z(}gXFv!%5Uu2~BYcN3Gj z`H0yxZ5LV5F0*o2Ic3ETro}W%4=b$Nt*q7dGk+M*SzN@W`GqfCN0DncnCGle+*%)Y zBF$U&#Br2FkG2==g*)*`iY|e2$y2^|YN-Np$)})pWJ-WcqhNq-^Csx|A`~?!8A!7U zt{jQlBS?5I`Z9Mo{EbA8NzNd~+9#GItZ|87{EK)0kDE0u&c;szyId&>NG1Crt4V1U zk`}rBmIzg(S*?hxn8I4CL^X&gq6Wp3kVrbJDQ6U#FVy$7Tm`Puq_;olG2)Rq(Vy_x boa-@OHD35^r)%>$tS~j-!~M(rR(O)vc>Z#Q?{vEekT9BnYFc0~g#ucF zza(=~V%yhd3A`;$U*>Z|a;ato3W`ceB3GcCEV+CU%v8r*{U2I$Ejwdm_sSQz)sdWD omPgr62NDNT&W1sX5s9)M2OjixM<8B7mA^_pN;Z^~D0>0?0&0F8z5oCK delta 365 zcmY+8Jx&8b425ma*s~hX{tSO&6QM*&1d1XGL_uh1xdOM~2$U3Qi1q}~Z~(4A0S(l2 zAVk3}nCup4UB2h{>HG4xdRLED=pO08WUoAyU!GJec|-r6*#AmuW^bpZw zuz}SoFTr{)6;KGei{_}nB?k692fN3^O_^lcOQrGx6cm*r2dO|M3c2J1`GIz96RaAw zEj#ann-d;2_x1vJnooOtwL48Z+Ri8>oU%%q1ulCtN*W)(Q%(XEn<$D@EC{+n zG%GF`Sl23Dm(%bjJ&<2xHj(Ne6o@c#I~A6K**r?0{5ZYz6L^)gYuW~zX5rX&nOBr` zD=xTtkbNjssA^=x*w_w*NC|uHEVD?Evrc>tJ&ELPv1>DP*~s^i(=K1K?BlKQ;=cjBu{Y6@#QZQd;y6=^J=6-R^I0&sS9{*|TS6cF*IU`$&T1#s^-A5lo02;{zgUAu6P^@ds!j{)2#3urYXA zYeBS;TUc0GD%O@7Y|^Re72H6)WMSEv-TA)x=G&dghso~z_%mh){=oYm)!03)&z7(2 zzlL57K7sri?ibF=g-((UVSXQC#r(j_w($GJA19GAxqI7IB3H%0CU zjWG@#i$<6}w>#O%n$$9iCS59mR*@DXmJKTgwv}cL-Kt!LkKGgby+F1kwopZ(NQ5Of zV_{Lu_GR}rjJn;h0Pj<@WwMyPi0j)v@%XBdJmytD?ZF|iLbi;xYf(7$lOSzUBq4@P zFHs69rK0H6(K>DKgmBXb_R^C^`rL4zdu_(i!BNRjBHqP&*mAh#|KlRbhMJY6MguZZ zQz66F%Sa+u9C^Ss4|!Ch%q6LFE6645G=4Gt83VxO?oV;$BH>~##AMgVw`H)Dgv+7s z$V@7+gi1@n!o>|p8W7k6UYb5C7d1TWp4E@%lUG)JdLegSGRjKVTu@7P6K{7#@0_`h z54vl;s`F0dNg7MvdKGZ}JZxB1Rej diff --git a/precompile/binaries/minlib/nft.mv b/precompile/binaries/minlib/nft.mv index 8f229b3fd1755421cf2bc19dcec21149e711e983..4393d4321b35db4012fd9ce62678958602574779 100644 GIT binary patch delta 443 zcmYL^ziOK?6vd@0=}Mo@m27?fLnxRgF{z={&<=&KgZDt5p>)V=1lrYG;d=qUK?#A7 zG0?4BGL(YJkiJE>$Z5e62+rZBd(Pd??q=U#z21`l<$iP6$RXd#(eP3Jy7;qQ$+yuu zruF5gKl*JODS!il-CZ;~#9*}(u7Y*&FHdll=vVYUa@CEh()Abg(HRpg_t!MnboD?_ z{FR}=#fZ;d0<<(Bi7*0K5jaU1#pYNXtDs)aiDVfd+avb|L9_qos=|w$b{PG~>^t{i z2k;(f?ozdzeE$qtA1ko{ delta 459 zcmYL@J4!=A7=`CObLT%Z$=t*Tf@lmeO#)g7S44MUVQC@mL9n*gO1QhQ31Z^{tON@m zh+rpJxdJPl8->ik@Sigu|2dD#@5`4g(+{ zKI#~F;mA00s<~8f=bhp@J1|)r?(Fn&y512Rtwt0qf9vT`pNg$4l$7;E^p(ux&9nG6 zXO6&N<{ntPjGdzVj!29d!m5bAO}PJgW?`%ECt5WL6G_%*`R)^09#QlEgrH o-6F<~nw7O8^`W8y&)GZ;N!EK|QpzB$tU{348+WUa?Vs@U3rj&RcmMzZ diff --git a/precompile/binaries/minlib/object_code_deployment.mv b/precompile/binaries/minlib/object_code_deployment.mv index ddafe15e4aba7f85a80187d514d663b8265c327b..1cdc49ed823d5c144dc1df7d842363c60e2b48d6 100644 GIT binary patch delta 435 zcmX|*NlrsC42JCt&S1aSmsbjuc~}&LkbqToZ~|7GgDaFhni6i=Pr4bsnfx9{@*Tgh`FN-|(}3WI(E*KIg0Lox z5XTK7;6^(D-0BLLL9gX@w*s)Us%m#_9b?*03DSWEJRIwcu|9CjA=zPT?1mv>kC8wh zl1iP^+Gw^UIfk4KlHg;(vzTl)i~D$u6KB1cmpi<)Q;ZB53$|FH$BM?GgV9BX;tLVN z?^zXlm6saCH7l()<62u?wd{l#m`ak+28lVAEU8WBC|Mu_BOA_z7tXz@o@0?7 zZiRJ;Pr)?k5H^ok+v2j?RdUfYnI*OiCJIt`cE{j)KO+0r=_c$>po3BtpHd+G1F5LL J0&NWoqaS%DAFlua delta 455 zcmX|6Jx-i45S_6-{+StnyZ&Hzv&+vWP^P|~8@Akm5jiH0k{87Q~{ zS4f={H1S6^*z(L9y_xsMxAG`I=F2+_Pv*wP7y9U5X*It0&xU`+iGEMNG5`5lFRmj3 zZ6ybO;uyj#D?*%ih=7aH7;v}rU`AW5+$$4+{aHiH4|9y^6EmcP7VvP90RWjzh?1j*$g*Ezy5|Rp|>8=Ci8HKXZAWUqZ$D* z1v{+JV@2c8!SoA5q2fKlzcW>LE*lI=nF6Tqd^Oc(>Rffz3TbFkp(Kr6)WoTx_dEh1n& Nd~6Pk!jt{kOabtV96kU5 delta 210 zcmaFI)51GJQh5?1`wFHfj2t~I3Ic0b4lr}QVQ1(5%+AE~mHiA0??E0WzQYr(GZ=*? zE=dz+V&~#y0AWTpAi)A6CW|sEs4;@XnAo@(7&#fB;vhLr24-fE3|O3z@8@`M0GnJL^B&^o#8K%>OvM zn*2W7o%ww33d2>qEB~~=_W9GLr1jO)lOHZ`BG`>v1=!66L=RiH)xNV>fZJNC?cTE5 zy_H(+y9~YU&#Q!;HFfWHHSOMd{WjQ8d$3undo{vdle`b=u=~DtA8c)_KAczS8XXRM z+h8vb`|5$C9gT5Eck9T}?mfWqV2=!>_i-Nq9~=zTz>{HCUz6dXUUX{aHTa=R(9_w- zs62lu0$q&n13h}699}uDpI#kn%4>rr^Ys&~0Ul3I_4036L|TA1&o%bRc>(nHSP|)+ z@ykH(jxVZ`KE#LBr*wu?{Y1NHs=ugTt(mskV{><696R*B7KuspHmI`J)RlozEp=GS z##T+PAJ7Lf)vxBWPEIW75=L?=bCscn^TAXf*!L50ifF1|?8uwOFZk_E$4O?zF|cD> z?eNN)Wn>#EkYIo^m22CGlSHEucGV}ma~z5Q0b^=|Ix+f~326jOj}Q~J5TGLpG9yMo zO(X>aEpx^Dw^nZi6f>=0w4zq1SyU@B|55fLdS0Vz2}NB%Ai(G89mV`#I#VnHme#Zx zONXvai%opPBc1XvQy$;Q`P}p7m0w9+rF^IQTUOs|m@3*FZ9Z$`S^BgMeQeV-r&6$&78l&2y{4tJ>d(A)nHFhz81&QQGAHFIg&v3zFPRS9PEzQDgb-#R zKwL4S5L&7UM<=3{B(Ay(QDEQcQ6a59xG)r-vGt$*Zc(fk$leIM+wC+h#9xK|0 zq}udb6Y+&-C{Jf`7n|x@IkVlma*K*IZgLv86t_#%&`w&{n`5$ObGG$o^G5Ua_f~%t GPyPiii)4KO delta 1213 zcmZuvJ98XG5bk;I>~!zmtxq~xXFX0QpX@tX*84QJe5Z$H*;YZ7fxw{?DEmW=067sUJ$om+RK*58{rtYKXXnrP9~Qo7Eq`T_Khhsl_qx%x z-!(e*UmL#(|Lt^#ewqHpW&h0E+P_~8e>%S^KwqEDL3dk1I9QqE_~v{LW@RD9y+w|D z?dbMRDxB^&*~02Fr`N9Y*zIntt>55y{bqDGBEm*Bya}Apn=Yoe`m5}3H`$uXhn=-m z(C0h1IRm@v++%h(V&`CU3&fr69jPF>D|Q8l{lOjwVz`&aW3(6ekO!*C&49GNSx& z_z>hr!$)NyKNctDXY$BtOK3z2<@a(;YwMEoZ`n^|l~ZM1O=)FaT6Wc~PqpDP7o3a6 zj(Y@`(I~+-dgHm+8Qn=I7ZMX2<8%ra-rMR}0k7$mvQ&Pqp0{&}B#cEN4cm;ZukgGY zM`c?-OEbf?%H_6vsRvCKpI1F3#?oS7-~6o6rj`-}Owg9U`^6=L0!@%!lJHO@G>#R$ z>zcvU!h_&vj&lCpbe z-n3Hk==Hj{p+y+3Ax?$4EFq$dawN=8^2}it(i3mC&51+$lN&o-= diff --git a/precompile/binaries/minlib/query.mv b/precompile/binaries/minlib/query.mv index 6262f18ea3cbdd1165041bfae582b9b255efff8a..0ccc67c82bd3d125291153b472a124050d26260e 100644 GIT binary patch delta 63 zcmZ3*x`K6rxU?C2;R!~LolFXBH<=U#elZnry<(Q&X<|v`eLm4Bfti_uVdL~YjJ(Wz R%mNG|K!OoSOip0(0stZS4)Op1 delta 65 zcmZ3%x{7szxU>a(@d-wb-AoE>x0w_L{xB7Ayf*p7@qI(eAwA+Hk+o+$EFRfghX4lsC9E{U^fU+8i^E%o-8-(7K>ebWjkr} z2e|PQ5aPy}11Gp};tz1_op!Upy|1@gf9PQ0=row%bq7~xe3BkFdUldM?+6J1|(=zgz; zZ8#QmNv=4+W;0#xt-IBgOAbM|Hl6Y9?iB*lPIsFijCPT5h{0~HwzskiE9}UbWF9lx zX91B)_C4kGyQuX)FYU6+lp8So%hxn?Zcf!CtqSOCKsp}Pyf-6QaX{?$ z7oNfbjKL^cE<|AkAiNC1H3*z+qJ@9}Kmh2bx##WF?6$GCb7RFhFqfCkq1p|13#qagi!yD4;YN^WSmDA_){?emfH#i(z!HE^_y(P3cZ z!mAA{`CU-w?*a=yQuEp&BaZs*J6Qv-w)X2&haWB=mMrXOe5l=lgk06f1G`lD#Pa*3 zXQkmr4%I(Wu?HuHUxo8eNDt_DTKa|6|3r^l`u>~g*MS~B6-#YJ`mi+%e z0&Z-;=H9KP`0&FeXIzI^3Ki)v5bk%|-94T>Cyzyl%^r|oS;7huZ%za<3kXQ0&4O4VVR{onDJFb_y1RGwUzwM)CViayzirmDGHbH*=%_bNF8AZEi-Bf+ z{Qme+a{R%A@$t!{Wcb^jkZkR(X2%Fu8yB(dh}w7=ymyA*GDUz8@$f41Mg5 zA(qC3Iv(+uicm%tI|Wm2a6t$|M*>yN2B9d|AZ6*T~^NeHr>5 z5XYUc+={o&0c8lTg(XMizUg9y5Rq`>GXp%w2CsZO9CO^jjkqb+0N7F*^J`rUcc`~B z0PmP#M(l|M!Kx8=t-4Nh+b=n%MZ#pYayKq8htrZ_z7K@lW=LYiA7{ZMOuI<1&W*50)TFk*_^xFR_ z+M*Cx6&zbwKqCylC0;U6Pa~EBmj+Jd9b=beLcT0-%WbUv*c?#?Ur@4*)DfIDf<+=$ z{eg8Hgur1VxP`lWkDeGj_?6oEtB-+NQ4Of= z$DCM-6(@wy5f?%#E`+YQ5PI=d7U)SSnri^AJeda^G!bx^4}nJUA}Ix{vRw#k?d&Qc zY%Z~fTb&f(sf-9=yUS(06Z?G9ZuT}#dVKP;6(mLYe1J&$MLgv0-f7l`msuEJt?|%) zmc@g0*2DkvM;knkeG-$wBFw!9PRd zu|nhVioE@NO@HzjxVK>|=NU4d`xGwYjJpqOQE0UZ{ltJZMq67@W8W5xaYmnD;->mF uw%naQ!_-Yoip%b=ow~24#P-u%;Hn$jDf_KGm)@n+r?$vT#x(-q&pZH9oIg|m delta 554 zcmXAlJ#Q015Qb;w_U`s}_H4(*IQGVggB^b)vCnZ5FyTWAAE82uLX9cNVE{f?z{|)rPb_g0Pb#f0Vi7sI88F3!u3dNn91ux*xxR%62jpi z=0~=wz=(8IO(|Djdym!$#?gVG~vA|BANTH2-B12v$WezjsefZYBO1~kO{t*y8VaEhFZh-OZuCj@fTSyR!pq?w`^xt-!Q-!%7_)moN&65RrDgV#xfh_7;MID zZLSx}=A3ylXSnX4nRnRtSLPLt{G5ll>tFEOz?bH}4oC=z6K}vva4L8=g)=^ke)G*|kNl?hyZg3Q|H9nw?k5!cQ8WAy|78BF zv?o8NuY>a5=Vb-EM?jEqvqEUURUyv#d5^ej9tS~(DH1mH+k~xmjuN)f1wt+`0O2&a zXY1TC3oahFfKL`|ymZ1wa=9?t`RvLd2UmFs1iQ9q!RASzg0kzU04SN}oZMK?eRlJV z9pB1*Hd(fDYi8bF$;~^3xt&+{ZhDru_p)=uy*~otKFAEv!>mznm=-kE{ShoUP9XHT$>*JO%iARXW76DQ*K!%(7Rc66zS%uHn!9P>yH z{#X4bN4sT|Sk__2r9y&$6d5XXbR+{6=van6cd9~aUh`e4Q9CV*ldL2o-p*VZVaZvr zq@vSI$e0f@PsSKwj2vAQ=%J4ofeIy&iCvHkKn0mk=YRkN8ciI}dyvpt(Hk9iJett@ zzwVt95aielly{IGst)wbOZ64{W;1wN)QR~OtR18mVHbvG9POC>FtADKCve(4*Ne0J jzL(Gya44~(ANp~jJ}b1Hva;XL>U8{f{|Lrr8gKjo#l2GS delta 653 zcmaKnyKWOf6o%)_?CkFB8SmBh#x}(3*w~oFb_fJEiDN5Z!Zi>G;v%Jo2+{BYc>q8l z<_QojNFXFCC}@!ADe35_sA*t!lZcMy=%4TZW{&1h`)TKSwf2o!->tW3KZz3mb@YQd z&*F~!5I^<`pWiLIuv-V43>#%ayEA2CtTqL)MuLM)2Qd;ha9V_okF*I}>i{8V7=Ufm zxzMxH)!^)`27EH7US$DplfeYLOn_V1eaOpTuo3hI%04TYVak4Sae0FtF z*Vi(iO-|{!xo2KKotZasb1R$H%{V32t)*pR-B|%*-Ca^Z53{6}s0J;G1)i)d43nv$ z8q+P4p$&p4MK=>+N{;$<$3_WR$WNwi(A?qgf76!m4A)3Oa))<`5%O5Q2`g${`oPs~ z+51oXNiOfYDA5i4luHi@0#an?p%H}Acl{uefy0d{TZX*qSTe-WXlPtaO&RfKYRL#q zV^))L5T~{*@?I)r5hE-jM+!%K_00Ec|P`xV52q@BOepW9F zb1hOxP~C`qOER4*%`zL}gf2qiF3f*eP17 diff --git a/precompile/binaries/minlib/string.mv b/precompile/binaries/minlib/string.mv index 8694fec0471fec19229a8f495a8b8ae2a890cda5..198e411968a1245b9c2e21a70fa2716b930b5b55 100644 GIT binary patch delta 185 zcmXBNEe^s!5I|vOXJ>aiGYzcZuL?pN90J8v5I9c31;CKdG~9q2zzvW%I06bous9lO zKk?o@+`^%sZTtrw5Ux1tJn;m)C8vAZVR|g*7YdFImhT+!+=CZnBvz=fQIH{$I_e5S zqE1{j#A)uiHPfJ0f`HiQQ!gf()N7(FiEuRHt2M3`mW|lLwi(zIN)!_%Av@rvOO!P* OuEEqJqRAhsFD`#WeHXz1 delta 192 zcmXBNu?|5&5Cu@PvopIpGcT+}2o2#yC(-#8#rqefMnYbx^#}Zf==cgsh1v_n%}q{m z?=9ZrzCYSP_`n0=6~~`5GFhOW zA|wkM>MqV_QCbU2<~1p(&!LFwvMZvAsfucL8tV$H6^TNl>x!0Z?j diff --git a/precompile/binaries/minlib/table.mv b/precompile/binaries/minlib/table.mv index ced1ac57c5e3a01d8cdd87954d12e23c1ddc1cdd..8c1f76eb4056af9550477a5721c949b45f071fd6 100644 GIT binary patch delta 474 zcmaKoxlY4C5QgVi+wtzkb`p$}ki$8+!y%Bs2qEzRbhH#yNR+fRD561BpzY}BK$H}z zQt%SI0PlcA$J(T3i~Z*R_0P;|C(&*6&>Xywcjx?YY3!%bvwx5BO;*)Z3jHC!MR^js z!SwOy;U;8afFxqJfOnaK8~Fh+%U9 z0T$ayF=(lq=DFowTF8~8n#?Mb+sn3h;inzQhGYJu4b)JjfjL-vRrh`3Au)F}G^%^*ii;H;EWpj8X4aHoz4+-*b%POsTQ zfPOp71`WDN$_;x-W=CN^wd>&^v*To#=|<8YrTHYpR5nA*;;m$<(|)pYRAmn`gpD6q0b&@-jS>|peA34f+p0UaVO^sEvR6Zub6Xpf>m?t?qSDF kWd&n%Ame&$e>OY5v<;!9os_4#ZTzDwdm>M9WS-^r4Px# diff --git a/precompile/binaries/minlib/vector.mv b/precompile/binaries/minlib/vector.mv index 910195b92e2a96a3031c462fb43e7e324ad0c4be..d697ecd02095a3753ba0d412cbd3fd2e815a7aa5 100644 GIT binary patch delta 547 zcmZ9I&1w`u5XY;kKc>5@cQX6cvpX9#F)WxBlY{t!^i@zJo+W7A4YR_8M}4z{>=^tFM_58ZaO)FQ!5 n=JF{&bIaXG0T`Jc5W{_sRvjy z*-eGbH!#w~7tqHLG0;;zi-HyW=kM>F|8&v)t2!ROYhHXs`;uRgd!u&-C;E)zcb5tP zKtKc_P@-%sfGR|EaPn+oR@-^k>x(bSfvB%C53Ul8!|Z$Gyrn<(qGcq}!6fsl%zikn zZb=!n8I8+4G`W}R! z&!huf-=xl~4oFCNZf$~QQ*i?|OSKIk~ljV>gczi^Yh zd5W|2%sj?<`eYv9RvOv27}I-u6}Qu8+aB&5c=WVVeNT}++@+`k2fd0$4~l4lQ6t^R zm5h?#o6qGtn<_TioZVAbdNy5m%V?=Vf~mZ@oTevkweKOy)<6LRA5wt(L^J7by8r># RHd2q)5QtiV%k;rL`U4IZG#3B> diff --git a/precompile/binaries/minlib/vip_score.mv b/precompile/binaries/minlib/vip_score.mv index 966b38eead0f0141733c8c7c5cb2743fc20130eb..ad469d6e8f3818d48821d34229d5b4e2d9ace94f 100644 GIT binary patch delta 127 zcmbOxJz08!l>AmE_Ps0{SUKKuDzNo(DG99STF=ULkKdAKy1*7L-qRZ`b(y$0*|=EQ zIT+YEm^T+Qo#b+0=i%Vu;9^&13FYG8;pAfB;&5W;V&mZw;bP?B=40mObm9=<;pE}r b=Hlkz=H})Ul;!4NV`P8;F&>V|HM~*)ThCA69vgF8^4?z$Ub^rhX diff --git a/precompile/binaries/stdlib/bit_vector.mv b/precompile/binaries/stdlib/bit_vector.mv index 78e98478356d8968395964000ae9bb81346bf53e..ef4f3da092d12beb9d6c3614f50ee52f3c65c2c3 100644 GIT binary patch delta 248 zcmZ9Fy=p>15QXQ=?A~4HUf~MjUnL}+ArBzhg+R1YtOY^s?0o?%31}8l<{eVx0W5q4 zOTl-r4q3GcPVvn-GaSyr@BOA+Yq` delta 275 zcmZ9Gu}XtM5QKMj?!UY2o%jbr)Kmer6GcdGCD^DCu+&a4g7^-CrJ&pcSXfwF_y{(F zt*yP!VB!4{EHcF~`z<@{Tl|dogVjkmy^8M`x8Hb$Ju>EJ{QEg>gN7O$i2y%$R`7Cj2l&$J8DhECTeVU7!baI~zKpr7>9Xu{I-MD^ znzR^XnkKHhLz8XOKHQ$EVZ|he%oGy)t~pplKBL_AEJ1sGG9Y?!zixS8ykm^c_27@2sbxtIjmxEUFFn7Np(nOV4jnwa<) e%o#*1nR!^anYdZ(nZaBeCNoBE=E)nF?*jlOixXJ@ delta 136 zcmeC??B|>ysaVV2%QTINV=;?@z+sjwuC=V9+=o~>cuukYVB$T*!NGTGqSXO0CN>^! zCPq#MW^M)`$p%C`%xpZHc^FfeY=C0i%=S!79E=Q%OuW)uOoD9OjEp=iTrAeiEZjhC gOneOH3?i1yJgnSI+^qJ@V6F|586!8#aJT=_ce1z1_RyM2?lp@Wl-U+iS8;0W+DdufS8M!Fu}55q{7Y2 zG%_%e6*B`-5JW>WMfXDld&Zf?M*2%Ums3rz=%P~ z9K5qXu(ntfpiYdq7SxLEUeR6_N~0PDTa1=1r7u@fN_E=cokZqh!<3-)|C>1q@&Q&!xZYxF z+T0&Ny0yo(^x8uE+^=jiwPXJXX7~i8UdEI@9A!#L7ch1;`lo;|{)X9A06&p_Dy?BB r%>dubjo76+2EXlOkm^{BY+L@bvQJ5JVU3>w?-sCA)|C|9q1^lheo{P& delta 692 zcmZ8ev5FKy5bf&jn(3~potd7U*;`HAy9*ZYxRXVNITJY*1Tzr>e?ZK|z-SRM6=e)H z+C&Tl5d{MS!9XxkFfr3#FfuT(XPrGyyBoT?dG)H^tNY{E;|E8N{nF_Zd~e-%KS}P; zMzNrK2|X<)@}YQ^4t~7YI}6q%gzas(QaI!UoWhiyj@z_f;8Z4wFf5-5Io%fe)=u3; z?BgeNkuizW@tD+M{E@$3@llSbljml5y;R%}Zp87a=%xBd)# zZGZZc^8>=uWIICf8Io_RaNqf3rrvqePxkmmg(nKWgVV$ZiBSK~d>-M~p z3@^r5uS>?6y@Z!LN`b_z_~v#>D#X4EC4~eoCc6~vo{Qc2Af*G(oP8Wp;l>G`I82>2Ly*h}RR9GDl? zE@5N>+6CbAe_?th!cKV<2e(Fs*J^yXEM`hr799U6$>TVd*n=r`lOM9~NH?HQJuiL+ PyqUp%9tsZa8@~D*fOl=3?!_Ty|TI5^((DX{hPYYXh+|H{O*UPy=Mw$L6n-szG&{EIi*N;5Na zaxra=W8TN1&c(;Y!yv@W!^h3Q&8N%E#VKeZ#Aw08#c9FI!_UPp!~(<&-29WBdDLVS k_!unMco?}E1lidcc$j#YxtX|_1zEWm6&v<{_a#KaIpb)HY%T;`M6Lp(bjJ(CQ>4dQNhl`IR@_ z;aixy-dp=|jo$i6xcIMtQ<~Bv-E_UnRojxz+)sE32u_VbOLqC&H#gcd- ns7g%%LQ?+>L%X0+GjObE;>e;gj08!Lq)?!W9pHVH+BL0yL=+bE diff --git a/precompile/binaries/stdlib/collection.mv b/precompile/binaries/stdlib/collection.mv index 13b802526747aa8f731a770328396cc4acc656b0..47c5fe56c12d9a31007557c4b5d880f16893d2a8 100644 GIT binary patch delta 1082 zcmZvaKWh|06u@_OcK+dmHS=q;z9Rg@Xtrf;oXPpKZTOg3f*4G_f}jkt+Ae8VFjSDbo4Q(+xPi;`!!$M z)Tk7%s@w`?3mcNl|63pAjxCh2g|Vi+DQ}3-zLdlLPx7)I3(Q>(VpKR4AQM_}9<0d`ymYd{pvqk@3l zMq>|ZU`5b{UL~>bD(H_T#l{r(T!k6L#$w5Q|us^;$c+{ z7d@0`JRFOfdYDXI@TADH2O?srdnllS4tuCwfSNt{hKf5b zum|4+)a*fzEd=%u!OcAEK@gmb1nl8HSr0Q09I=N(Pq1|uIN?jNL0@fX-SSF->B delta 1035 zcmZwF&ui2`6bJB3W+pS4_wr^Y$+o-g!L7@-Xj$+FNI<+R2%bGyL=aK*;K7@)hkEcR z#y>!;XF-ZbFBQCc^Q<>f5c~`DC9SnxOb(e$-VF2kzI>nlo<3WdJW=MA`DpAn8fQ=a zYS{5#wA&tR;n%^QFLtIY{{7oazl6@Lkg`3W-dxSlrP3N(@GYzW6qfcMrhSvHr5U!L z($Q3Fp46!o+A8Z~x9UF&ygci)HdYzlQM8xk6%pF!a$+(F-P+xE@|-m(N+%(0f5NCx zq)NE=$s+ zzou$apMgYVYX3cnut7yvVE-0e&=6GL}@Lfg}#GauwE4pm2m50uI{kqM936 zo=J+0QFooe1Y%>+F~H3mp z)I&;RV5!CoG-PopJ2+BuI4CXWkh9&*Aw}Q-kOL^dGzAg?<9pj7eypd9cy|nckj_zj z&UjCrsU1GJfDs(y0TqW(HW^kBVJ<*H2~{bvb{cBVf*Mj=PIDI2_%1szGYgut2mpN+ zw?GU27zjCwdz2U0XTc-RVn74VB2Oo*K7D^N3*JxgACR(Ma?Waw&_qODnX~(7!&miq z(QJ>I*Y)ON!ws7YDh|xVjrL&KoU<7)usMQ-B}{C1<=Ga4GyN VUE%!7Y^o vexshT(w~ul@CG}ALQiBg2aA>@X&kwQ0xF^=@~hAFYcI-tKzFU@K_Zm=JNTq#pKYZvGeWKL?;uv$0%r2HAx*vL`b*P6Hbd27qD;LDS!}caJZsnuPX#97k@jv8$un z2Z>pIN&9r9ZT_L%`3v{ifcsqTpkeDdTf=QJ>#w-oCzg(0o!YM4)>2&#Kp2JqfB@tG z+?t}34yBQ6LI`7Eg3kd&6i9vV_Kz>3mI{_@#?!g+G8@mzOUlEMGX010>RDEEI(al; zK9+qXR-W~US)uM<`dhEb$lPG9QQ4K(RW)Yg;B+wF=HG0y@wjF@%1x+|9cch=rZV44 cGHhp2&AG_0YE($rM2iJ1T%I}afBQFo026gM>i_@% delta 788 zcmbu6&1x1g7=NJ#(M@w*BU}s!M+?@1)|#&v#A~ zgB7Pl(rFn7)w7x(oT=lxoE>DD$*1Djl4fzEw56nzf>U#)EE~_&V!V+avYfSld6mA+ zUU~{avJes9>s_%Tk3x|%)M>{G0o6$Xu_{@OCB+=TDsyN$MPpkYuff7+Wo(9Ure~C<{nyhj*A&?hsB8e;8{*bFHZ7a zZ;KWe12B{+07AeRfSV~g(?ctB%MgaavxJWU1Y{`3AwL?fq82jhnepNv(p4^&kA} EpT$)YU6oc83h#r+Y z`n=SM7E3@-3?Z2&9Fij3t9Xn?E#%`1#+zb`Lk`;wSjBF-3w}aQ9JOF8i_W?*#*Q#E zB-ml4%C|M#;EW4)gxF$A2N0%T)^ZO@!WY0J>|!inalBT{P5uxE+NzS9ADrYnOQGU delta 488 zcmZ{gy-osA5QVwinR{i<>_(LA5^ThuwNnkc?SQu&x6U{ch1|h}}5?c!! zpTL^OaQWFS6mN5i`R?SKGi|&#o}$*J|2D7Hjf{3T$Mj<4lUcub5(W>?oi_@dR7bP> z>d-1Ft5Yvd{61ZY5qIGmaL!bgFH)BtYfVK2wKnZ>AJmoAu!yFTNZLv0B#+*qDyKD7 zD4lT+#+1wIe1x2f&lMmbqWm9aGn)*#WFlq0=01l@rAM>Y33iQyO*@5YLN|rV?NVjH zcmJtaI7Dj2W*MChS$sRMtXmvcq=Kgg9vqjhvD;cr7ae-I0~#4v4gT1{muy^j8X`d0 dTCDtq?o=uz2|s58SOm>^W!cDW8;l41K|f=qD diff --git a/precompile/binaries/stdlib/decimal256.mv b/precompile/binaries/stdlib/decimal256.mv index 105c0eddc57509ede013165208b8ca5bb9cca992..ee9acdf076cdbb5d3c02ef749aac27adc8c1bfc5 100644 GIT binary patch delta 413 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 TI)zDND3^y|K-XVBcF+F+`%?vR diff --git a/precompile/binaries/stdlib/dispatchable_fungible_asset.mv b/precompile/binaries/stdlib/dispatchable_fungible_asset.mv index 86d8f9a4cf0a5029ce2f079856553901050e7fc6..c0fe148054f3d72861b271109f68420bacff58dc 100644 GIT binary patch delta 727 zcmY*WO>PrW47UA#X2$kRGJ{GI8k(d{8$zgH1A1E|*dW+)2A13)hyzqb+4cgkWycBF zutwqph*gh(-$12wB>O$vpFQ8__pAHTUEZ61rsA8wh~;;l4}bGV$A9Xm*YyWqU$>v0 zUA;L(EOAkk=8uaGOE{T&EW@(v08j6GfU}&%RYt&rSw^gjg=HT0nawQUALR_3pX_FM zHKJGN>~6B9B&u+24!R`7mkJ}5D@g=wWUP#5ml?$m@h zni~8#!-xCucYFBuKfden0tAO1gh5T4oH+1uM0FTO)yVw=SIv5hei1wYyz2^!!PPzXptqCiS28cS4&0vWkY zk(!owK!Qie6Yv%=cNPK^aoQb?zWwH#Z{|MN=k>Bb{AP-C_tA$Ranya!?`-^#ye!kw zbAgHQ;#D0ZbYcrws#cj2gzQ*iqzWi_Aw&eyc%X ze{Z#gr*&k5B_KC4zCEk&c#n(^g{*$!#zHO-Y>Q|Jo~+kS*0hM0)B5R;m~E8Z1-J$M zTDmQzB{IEX-GTc(;roMwG)gn+Vy8OD;QiTO$cYs)~le zCH&5@Vc!8_}2vJ;M5{;*{eYx*)7_1v66)bZ2!|^cRB^fwAdQbt6=jP$Gs( z*Sik}5fHYXmJvnUGq7csW5mo2P0c*gTr?x`(W@clMI%8`FEK?m#F1wpPK2GC(476h zwiev_>Zo$y4*T3;Rg}QOp{GTLWvtans~^xqZ+=hIo6_Tixnxsa)7NA+blB}Hx~C*2 z8MW5cNNUGcx*y%)B_X=3n-U==GgSJn(%ZtmlgQIxOeb#+yAFF@Ha?xWqaXsq)ZN8b~7v-EfApigX diff --git a/precompile/binaries/stdlib/fixed_point32.mv b/precompile/binaries/stdlib/fixed_point32.mv index 2dbe431dee7af850b7ead784134e8fad33ea6e1e..4975febe370974d770cee8b239b27c3b5bc4e630 100644 GIT binary patch delta 137 zcmW;CF$%&!5Jusde`ayn86}Y*N}7n+8PIFkdj{`fWtv>TE}$UZ!}A10aIyW~d)Q#t zYPFr5ZyYaZiUDs)V+j5YADxa}d#ptS5K&cDs6rw!BT^)N_IJ$LVVtnm(r{?@FuYE( dLz_M2vY1gpm5Z~9@kW>b%Q@6WC1qt0(GO->5q1Co delta 141 zcmW;C!3n}Z6h+ZL@4wMu{wRqAQCt{tB^b~)va=4WumMq9a3>fL`>-LiaBzF>eOPCg zYQ7mB?=GBC7acwtd+*a}@a3q#Htmu@Q~_0zjv%2yoI{WxKFI6#!~{tVQCBQY_w^2@ f?}Kj9WRJN_$5Kd@m|!%lIs0D;eqmBdRzO64Z^{uf diff --git a/precompile/binaries/stdlib/fixed_point64.mv b/precompile/binaries/stdlib/fixed_point64.mv index 0ec951338cd6192c0e36e1184cbe4dfb2fffa9fd..144460a3109bffe6348e03babea09780a820c5d7 100644 GIT binary patch delta 132 zcmZ3(vw~-Wh@>ie`Z7k2UM2;BwM-Y7x&E@U@-(r1VdeccQP*FLnT3Uki3JE4`T3cE zh=qfJk&$KNv`b7vj66)-j9g5LEP~ujh7JZy+)SIRm|K~2f#O_188JQv0R|BsW*$av bW^P7h774H_9!6GaZU#X{peQ2~0|Ns9HEI$C delta 136 zcmZ3%vxaAah@>Wa_A*9}iA)Lt8<{RJb2YND^0cviVdecbQP*FJg@b{Gg^7s;2pIYK znScl=!pO+V!LV`CB_<&z9%gPPE@nj*L2hP42LmQ<=FMfytxUQ=aW0^Y7$1WGg9r}` e4-+>FHbO2+++950v@1Ui_fF!Ib{`NYWIH&J))#&af2e9Sy7Tr6D7$}DnR mOk6CJ1(+q|SlAdDAV7?Vg;kN8iIG)_m5ZB^i9v`#m;nG!{0-9p delta 88 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 delta 120 zcmbQkF^^+{h?FJ!WX2{Yj;YKF0$Z8SFmg4riu251JAL4_Wj!F2WCT>-5r%cO8gH44P<|x;7Wdmu)PPknot#1%+(pEO$a}w1}pyX~QZxX2uiECMv~>tJJy_ zhMt?Dzx1U-bx$`lv=59t<~?zO1}eLeqZh9{P+xZYrWm5nePj*FQ&U#EO`YPJ1y(cO zua10nTw`j_4jRbU+euJA5Xh70ZBd)-pauiiPlj1vhN@@2J7|@L0)I-mP@w=B{{Pc& L+N0m{X^QR_)chqj delta 487 zcmYk2ze)o^5XN_BXZH4HCXka5NP>T2Bw!^$W3L2!0}%x!jg>E86;jz6?g^}{E$!@l z1A8lNeFG-q16B~k& zX@I-z813x_7$It=iIc=G`yy(TOrlvqk`b5E#0ma|S1ccJeqdi>v*7@H>^Usw;LsND RbCB?_InaiQv`Hy}`v#z*CgcDB diff --git a/precompile/binaries/stdlib/initia_nft.mv b/precompile/binaries/stdlib/initia_nft.mv index 3ef0dc39d0b4b6f55a99c28203899935d5c502c2..8d7041e3c45db8b403da477ace792cff113d30e2 100644 GIT binary patch delta 528 zcmZvWyKWOv5Qb;YIeVSin;j=>Z+6+N*Bd9s#!*-}q6!ca8YGk|1>yzhkkZr9f=-t* z4MLQD0}3QcBzOq~qN8%bDp1mlKFxf;=Ko!MFW!u@OX+;ISFZayD&u$2H|ei?4PW(N zQE>IP{d_M)fO$FuwHRf9ORN zxp|NIUY1sQmDYJ(PVBl7)pR_~v;7H9(m_5*z1%C~g@~)THox$~A*ajRY+i`5xfIWA z3th5#wH7a(xkHv35wJ@Rdx5Pj_Q@rWd~I9X1SkSj0??WIs2zi}>B&%PVC5@Q(k4pt z#ZUWc1~F=nM3RW!-+)>B+5cQr<|!>tn&&@Yrg7hnaZwlgX(~c?Tqf zdkB88TQRMZ@qR7gzm>z~UvGe7&k`|rBF58OR>ww`CAVZ4pL@!)l{Qk&*0 z(wq0IueUo0aNOyFnDkafAAwknN|1GKY8*Y9 zpa*xt0kHX@W$w-d$a`WBJ+{hQ!0zWhz`BX(@oG<49nI~z(}gXFv!%5Uu2~BYcN3Gj z`H0yxZ5LV5F0*o2Ic3ETro}W%4=b$Nt*q7dGk+M*SzN@W`GqfCN0DncnCGle+*%)Y zBF$U&#Br2FkG2==g*)*`iY|e2$y2^|YN-Np$)})pWJ-WcqhNq-^Csx|A`~?!8A!7U zt{jQlBS?5I`Z9Mo{EbA8NzNd~+9#GItZ|87{EK)0kDE0u&c;szyId&>NG1Crt4V1U zk`}rBmIzg(S*?hxn8I4CL^X&gq6Wp3kVrbJDQ6U#FVy$7Tm`Puq_;olG2)Rq(Vy_x boa-@OHD35^r)%>$tS~j-!~M(rR(O)vc>Z#Q?{vEekT9BnYFc0~g#ucF zza(=~V%yhd3A`;$U*>Z|a;ato3W`ceB3GcCEV+CU%v8r*{U2I$Ejwdm_sSQz)sdWD omPgr62NDNT&W1sX5s9)M2OjixM<8B7mA^_pN;Z^~D0>0?0&0F8z5oCK delta 365 zcmY+8Jx&8b425ma*s~hX{tSO&6QM*&1d1XGL_uh1xdOM~2$U3Qi1q}~Z~(4A0S(l2 zAVk3}nCup4UB2h{>HG4xdRLED=pO08WUoAyU!GJec|-r6*#AmuW^bpZw zuz}SoFTr{)6;KGei{_}nB?k692fN3^O_^lcOQrGx6cm*r2dO|M3c2J1`GIz96RaAw zEj#ann-d;2_x1vJnooOtwL48Z+Ri8>oU%%q1ulCtN zf@N$x5{EHDfS~{xAr66z1c>WfgdJleZyF@g_dLO z;$J7)eY5m#o`3X=dxiYkn&Y0nZsv{6*}r?}naNdDlZw#+(pe_%qgrqBiC{PVF5e#8K+(BF3Je zZtOfs3-JCFEhMI%wqMgTq=^YAF!3C94uR|QDc2WBx0A?zk#a5Qk z!>Yfa4cPxnnyJ`xzfEUuwBvVZW2(oiwDBza-FNA1V&V6x5;67zI=8^s52;#U{$EjT z(|L@3M4JU;e@$D6(T{0s5A$E6^Wm)5tuwtlXpPG0)B}x2P*3miq^KA2$AxcHp?$FKDY^ z{GVvW2cT&1OZp&@i2j8{fffGEvUB$D^aoYe@GF}Z@vo?>K&-OCTy zoIJqqw|w_;*Ja-Qs0Nqieo2Sz+5;SU%pT;A(c>5o@+U3-L)?mD5A&xmc!&7YcJ?{G za~8uR{Cav8<6*v+j$u5)_t101YV1+Ik3Nru$M`Mu1&ojLKenG8<pW+) zd9<&eZ@3_s>fGMj+}pRQvPo=d-qN>~cV4pX(sM^HAGu;vA-H^dCAi|dHp=#rBV^s``YGJt0 z`6b%YWWMQ5&PIM86_i856}}^U5Imw_HfCmgO4rSUnR7)(c=gGDW`=!DPDU`3h<8TP zS3_KK5jqap4@2{`Xd=(NB2F)7MFDJD6ns5*fE4|r-*g4H#&$twgtQ;kcYSSM3a%{X ze8GGnC3j9pmLg|1%UwY(6@qQ^b2-`T3lD6niA1+0^Xn%RpgPAqojD{$S7c^XkEy9{ zvq3GS1?GDyi35TZ&yjrYh>R4yrmEl5UjGi8V35`kcv6=%&$;5L-rt}_Kleo-`bqRC z7ziG-Is0|aX|_AOsXsy<=V_%|bw#(Sf{IkE8dOo0R9Q8uylPVw)vB75Qq8Kx{J3|% z^AT^S@v1{~+U#ic4Wg0Rmj0`$apJ=`d7(y_U7?tEJgG=K(lJjAOq6)L_M`*L`ZBDK zX;->=*lzgX_73juP|9DvG6!22D=Givdo-xC-sNWZ;CxzU4iEOx8Rk2KJ2$TGk}OY> z674F*a-=9}(5}}Z@eaGaBuPYQFUI zJceFex!vx-DYJ6=4ox!Nc={^&$tCIK{b)SQMB@wGNpFqvNclEv>QB_X@DxE^?lT02 zx(q*`iLDqBr}J7}q!u_|;H)4Fu%3ydMEbc*F`bF}Odymwu95mm;uTt_oTmsYBbY*K zCCW-GWjBJ@F2Gwtxg~ra*bikakrIB+N~z@$bPeCBx5UBXUM@4&2dVs(HUr0#NGvNl@vWIm3y2V0QQlBCT;FFL~}^q}HNHqVk=9Ljv&lA723@(i$tLt zt&F3okSFbF9r-HL;kI}cKR=fm$ZX|mRInnxid5)c$+V2t+IS(LZZs`f3JTM;JeEhbyi6kz+qZhE7s{S z45RfLGLjCJfdB%6RupDQr_SYCbfj`BDyC2xMxI9BQiXy@y7)|5@yoC!q9&`bbuYoa z=Dfo{H>a{bWDbv>R&zr) z$yX~j*10TDa5Cv_aFJPVY~5!Aj_A7s-WYD@NEM`#@15{uejym=!BG;UEtxWMP!&V? zNpYD;suB(&27HJBeo*A%qCTpmAwIA-KKGf4U|bqImlwT#huHtAnD`pz=4;U zYsZ$-N6hiD#jxm~$67$M!g!vv#qD&8oJxux#XjCozW9Z=?1fI;%usz{S%AmQ|9G~ zLAr7FHxoD0qMPU&guLQuV?n<`XW)r;>^&er<-!?gHT4<_QC_Y&wye8`NFh3Izqj~* z1w)bhJV|d*`>0~y2E-x`FbzO!p_IqA6@(eQT5#`)J^;`@6}-S~0UT?+aXAdo9Yi$V ztw~GtDfcodEl}W|ilqp{k^Xe+zL4IO$M^N_V@rTTZ(M z*Xgp>o;d}2P%JXr5=0v^Tawe=HR-q{ zj&>#!I&r<}WGQ+&Fb!aE754gKBys;-RoW|oy&eD_+(MauEY0;h=u>1aT`@v?&A}B5 zYrAkcOqQcIrPW>I5~>_`YdWi20FPS>w6#E63$(RBTMM+cKwArR+IrHCYc0^$0)4`Q zthWsoWFga9up=GkEC^S7AA|*AHjql^l!6V?+90hBd0;_`bhzf^5yh}jUbUCJ>qrUm zt|zak0)91q3b8xQB`d~g59}G*gdSlL)dC2FDF_4Uw}iz2yB3QfHZ`p1EUto9bPl2$ zfud3sR_!5ggOxv%iXT9dR2s~^6K!T{WsyE>wywOC_TiwS`O(V8Y3sGYSR&7Xd5*gl zAELQ=+h9(*A@f5P92QxF7RQBotM-w1zLmbst3vrtqzJnoH{V@TC3DVHKkYZ4oZ4P! z^U*>G=s_KPH-1#H`(}SJbs5nE=7QDz^pLq}^#M9$7OdIc{5iS}xra+BU;&p>0vzB! zNbK#?+`nd`HG795Tvtw;5FzJT1F$}s<8XVuFQNi* zxsXAj8D4W`5M8KvZU7mIG)*rFI+?EjCbG?J_R2E_-y(1?S?`v!JlTLBebu5@4xJ=& z+p|tmz=Bis+JQ3b-QKL5ax5%*y`hJN;jEV~^c20}&`&nH6InkwONrb_(Oag(?5k%@ GIsXHx?0eS$ delta 5178 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 diff --git a/precompile/binaries/stdlib/nft.mv b/precompile/binaries/stdlib/nft.mv index 8f229b3fd1755421cf2bc19dcec21149e711e983..4393d4321b35db4012fd9ce62678958602574779 100644 GIT binary patch delta 443 zcmYL^ziOK?6vd@0=}Mo@m27?fLnxRgF{z={&<=&KgZDt5p>)V=1lrYG;d=qUK?#A7 zG0?4BGL(YJkiJE>$Z5e62+rZBd(Pd??q=U#z21`l<$iP6$RXd#(eP3Jy7;qQ$+yuu zruF5gKl*JODS!il-CZ;~#9*}(u7Y*&FHdll=vVYUa@CEh()Abg(HRpg_t!MnboD?_ z{FR}=#fZ;d0<<(Bi7*0K5jaU1#pYNXtDs)aiDVfd+avb|L9_qos=|w$b{PG~>^t{i z2k;(f?ozdzeE$qtA1ko{ delta 459 zcmYL@J4!=A7=`CObLT%Z$=t*Tf@lmeO#)g7S44MUVQC@mL9n*gO1QhQ31Z^{tON@m zh+rpJxdJPl8->ik@Sigu|2dD#@5`4g(+{ zKI#~F;mA00s<~8f=bhp@J1|)r?(Fn&y512Rtwt0qf9vT`pNg$4l$7;E^p(ux&9nG6 zXO6&N<{ntPjGdzVj!29d!m5bAO}PJgW?`%ECt5WL6G_%*`R)^09#QlEgrH o-6F<~nw7O8^`W8y&)GZ;N!EK|QpzB$tU{348+WUa?Vs@U3rj&RcmMzZ diff --git a/precompile/binaries/stdlib/object_code_deployment.mv b/precompile/binaries/stdlib/object_code_deployment.mv index 5240b20a5f3f5a74b753452e12b90dfadae64205..611b9beb1a760c0f3bb5123d7d60a1eea0153cc2 100644 GIT binary patch delta 435 zcmX|*$xTB+42JDlJd6Ea-n)&W3m(U0vzgz=3!FLY#k}0$nZ3rykg;Hk6?&{_96A`CW+=W8 zA^e_YvFCZAL0sbkh;My0)i$oR)m6(*h=Hjj32l&=W66@*bb^uvGBC2?TzKx>o9a0h z>ETLPm-q-wgAQSBpS3M6t6e1*J(F2r%V4G;g=cpFuJ z(2xr}62(5&vCnbtq*n-3VC&7F;}wBF`AG9u7Ia^NS9 zAxyI(#94<3xH1|8u9Y6lXrYzsWdg7TWyB?MOd#K1K$!JW$|j+3^zu9dx~?RuO8AS^K_2K_A)S|8UZl{JFL)S zMdQ%H(jh~k;yuFmSyFc*KNyrU1yJAlYO2lDx$3GF($J(rNgBJTiBn;fP7Y92fk9A= zXpup=HC1bxPuds&`D;n;+{kns>Ig1(x_dEh1n& Nd~6Pk!jt{kOabtV96kU5 delta 210 zcmaFI)51GJQh5?1`wFHfj2t~I3Ic0b4lr}QVQ1(5%+AE~mHiA0??E0WzQYr(GZ=*? zE=dz+V&~#y0AWTpAi)A6CW|sEs4;@XnAo@(7&#fB;vhLr24-fE3|O3z@8@`M0GnJL^B&^o#8K%>OvM zn*2W7o%ww33d2>qEB~~=_W9GLr1jO)lOHZ`BG`>v1=!66L=RiH)xNV>fZJNC?cTE5 zy_H(+y9~YU&#Q!;HFfWHHSOMd{WjQ8d$3undo{vdle`b=u=~DtA8c)_KAczS8XXRM z+h8vb`|5$C9gT5Eck9T}?mfWqV2=!>_i-Nq9~=zTz>{HCUz6dXUUX{aHTa=R(9_w- zs62lu0$q&n13h}699}uDpI#kn%4>rr^Ys&~0Ul3I_4036L|TA1&o%bRc>(nHSP|)+ z@ykH(jxVZ`KE#LBr*wu?{Y1NHs=ugTt(mskV{><696R*B7KuspHmI`J)RlozEp=GS z##T+PAJ7Lf)vxBWPEIW75=L?=bCscn^TAXf*!L50ifF1|?8uwOFZk_E$4O?zF|cD> z?eNN)Wn>#EkYIo^m22CGlSHEucGV}ma~z5Q0b^=|Ix+f~326jOj}Q~J5TGLpG9yMo zO(X>aEpx^Dw^nZi6f>=0w4zq1SyU@B|55fLdS0Vz2}NB%Ai(G89mV`#I#VnHme#Zx zONXvai%opPBc1XvQy$;Q`P}p7m0w9+rF^IQTUOs|m@3*FZ9Z$`S^BgMeQeV-r&6$&78l&2y{4tJ>d(A)nHFhz81&QQGAHFIg&v3zFPRS9PEzQDgb-#R zKwL4S5L&7UM<=3{B(Ay(QDEQcQ6a59xG)r-vGt$*Zc(fk$leIM+wC+h#9xK|0 zq}udb6Y+&-C{Jf`7n|x@IkVlma*K*IZgLv86t_#%&`w&{n`5$ObGG$o^G5Ua_f~%t GPyPiii)4KO delta 1213 zcmZuvJ98XG5bk;I>~!zmtxq~xXFX0QpX@tX*84QJe5Z$H*;YZ7fxw{?DEmW=067sUJ$om+RK*58{rtYKXXnrP9~Qo7Eq`T_Khhsl_qx%x z-!(e*UmL#(|Lt^#ewqHpW&h0E+P_~8e>%S^KwqEDL3dk1I9QqE_~v{LW@RD9y+w|D z?dbMRDxB^&*~02Fr`N9Y*zIntt>55y{bqDGBEm*Bya}Apn=Yoe`m5}3H`$uXhn=-m z(C0h1IRm@v++%h(V&`CU3&fr69jPF>D|Q8l{lOjwVz`&aW3(6ekO!*C&49GNSx& z_z>hr!$)NyKNctDXY$BtOK3z2<@a(;YwMEoZ`n^|l~ZM1O=)FaT6Wc~PqpDP7o3a6 zj(Y@`(I~+-dgHm+8Qn=I7ZMX2<8%ra-rMR}0k7$mvQ&Pqp0{&}B#cEN4cm;ZukgGY zM`c?-OEbf?%H_6vsRvCKpI1F3#?oS7-~6o6rj`-}Owg9U`^6=L0!@%!lJHO@G>#R$ z>zcvU!h_&vj&lCpbe z-n3Hk==Hj{p+y+3Ax?$4EFq$dawN=8^2}it(i3mC&51+$lN&o-= diff --git a/precompile/binaries/stdlib/query.mv b/precompile/binaries/stdlib/query.mv index 6262f18ea3cbdd1165041bfae582b9b255efff8a..0ccc67c82bd3d125291153b472a124050d26260e 100644 GIT binary patch delta 63 zcmZ3*x`K6rxU?C2;R!~LolFXBH<=U#elZnry<(Q&X<|v`eLm4Bfti_uVdL~YjJ(Wz R%mNG|K!OoSOip0(0stZS4)Op1 delta 65 zcmZ3%x{7szxU>a(@d-wb-AoE>x0w_L{xB7Ayf*p7@qI(eAwA+Hk+o+$EFRfghX4lsC9E{U^fU+8i^E%o-8-(7K>ebWjkr} z2e|PQ5aPy}11Gp};tz1_op!Upy|1@gf9PQ0=row%bq7~xe3BkFdUldM?+6J1|(=zgz; zZ8#QmNv=4+W;0#xt-IBgOAbM|Hl6Y9?iB*lPIsFijCPT5h{0~HwzskiE9}UbWF9lx zX91B)_C4kGyQuX)FYU6+lp8So%hxn?Zcf!CtqSOCKsp}Pyf-6QaX{?$ z7oNfbjKL^cE<|AkAiNC1H3*z+qJ@9}Kmh2bx##WF?6$GCb7RFhFqfCkq1p|13#qagi!yD4;YN^WSmDA_){?emfH#i(z!HE^_y(P3cZ z!mAA{`CU-w?*a=yQuEp&BaZs*J6Qv-w)X2&haWB=mMrXOe5l=lgk06f1G`lD#Pa*3 zXQkmr4%I(Wu?HuHUxo8eNDt_DTKa|6|3r^l`u>~g*MS~B6-#YJ`mi+%e z0&Z-;=H9KP`0&FeXIzI^3Ki)v5bk%|-94T>Cyzyl%^r|oS;7huZ%za<3kXQ0&4O4VVR{onDJFb_y1RGwUzwM)CViayzirmDGHbH*=%_bNF8AZEi-Bf+ z{Qme+a{R%A@$t!{Wcb^jkZkR(X2%Fu8yB(dh}w7=ymyA*GDUz8@$f41Mg5 zA(qC3Iv(+uicm%tI|Wm2a6t$|M*>yN2B9d|AZ6*T~^NeHr>5 z5XYUc+={o&0c8lTg(XMizUg9y5Rq`>GXp%w2CsZO9CO^jjkqb+0N7F*^J`rUcc`~B z0PmP#M(l|M!Kx8=t-4Nh+b=n%MZ#pYayKq8htrZ_z7K@lW=LYiA7{ZMOuI<1&W*50)TFk*_^xFR_ z+M*Cx6&zbwKqCylC0;U6Pa~EBmj+Jd9b=beLcT0-%WbUv*c?#?Ur@4*)DfIDf<+=$ z{eg8Hgur1VxP`lWkDeGj_?6oEtB-+NQ4Of= z$DCM-6(@wy5f?%#E`+YQ5PI=d7U)SSnri^AJeda^G!bx^4}nJUA}Ix{vRw#k?d&Qc zY%Z~fTb&f(sf-9=yUS(06Z?G9ZuT}#dVKP;6(mLYe1J&$MLgv0-f7l`msuEJt?|%) zmc@g0*2DkvM;knkeG-$wBFw!9PRd zu|nhVioE@NO@HzjxVK>|=NU4d`xGwYjJpqOQE0UZ{ltJZMq67@W8W5xaYmnD;->mF uw%naQ!_-Yoip%b=ow~24#P-u%;Hn$jDf_KGm)@n+r?$vT#x(-q&pZH9oIg|m delta 554 zcmXAlJ#Q015Qb;w_U`s}_H4(*IQGVggB^b)vCnZ5FyTWAAE82uLX9cNVE{f?z{|)rPb_g0Pb#f0Vi7sI88F3!u3dNn91ux*xxR%62jpi z=0~=wz=(8IO(|Djdym!$#?gVG~vA|BANTH2-B12v$WezjsefZYBO1~kO{t*y8VaEhFZh-OZuCj@fTSyR!pq?w`^xt-!Q-!%7_)moN&65RrDgV#xfh_7;MID zZLSx}=A3ylXSnX4nRnRtSLPLt{G5ll>tFEOz?bH}4oC=z6K}vva4L8=g)=^ke)G*|kNl?hyZg3Q|H9nw?k5!cQ8WAy|78BF zv?o8NuY>a5=Vb-EM?jEqvqEUURUyv#d5^ej9tS~(DH1mH+k~xmjuN)f1wt+`0O2&a zXY1TC3oahFfKL`|ymZ1wa=9?t`RvLd2UmFs1iQ9q!RASzg0kzU04SN}oZMK?eRlJV z9pB1*Hd(fDYi8bF$;~^3xt&+{ZhDru_p)=uy*~otKFAEv!>mznm=-kE{ShoUP9XHT$>*JO%iARXW76DQ*K!%(7Rc66zS%uHn!9P>yH z{#X4bN4sT|Sk__2r9y&$6d5XXbR+{6=van6cd9~aUh`e4Q9CV*ldL2o-p*VZVaZvr zq@vSI$e0f@PsSKwj2vAQ=%J4ofeIy&iCvHkKn0mk=YRkN8ciI}dyvpt(Hk9iJett@ zzwVt95aielly{IGst)wbOZ64{W;1wN)QR~OtR18mVHbvG9POC>FtADKCve(4*Ne0J jzL(Gya44~(ANp~jJ}b1Hva;XL>U8{f{|Lrr8gKjo#l2GS delta 653 zcmaKnyKWOf6o%)_?CkFB8SmBh#x}(3*w~oFb_fJEiDN5Z!Zi>G;v%Jo2+{BYc>q8l z<_QojNFXFCC}@!ADe35_sA*t!lZcMy=%4TZW{&1h`)TKSwf2o!->tW3KZz3mb@YQd z&*F~!5I^<`pWiLIuv-V43>#%ayEA2CtTqL)MuLM)2Qd;ha9V_okF*I}>i{8V7=Ufm zxzMxH)!^)`27EH7US$DplfeYLOn_V1eaOpTuo3hI%04TYVak4Sae0FtF z*Vi(iO-|{!xo2KKotZasb1R$H%{V32t)*pR-B|%*-Ca^Z53{6}s0J;G1)i)d43nv$ z8q+P4p$&p4MK=>+N{;$<$3_WR$WNwi(A?qgf76!m4A)3Oa))<`5%O5Q2`g${`oPs~ z+51oXNiOfYDA5i4luHi@0#an?p%H}Acl{uefy0d{TZX*qSTe-WXlPtaO&RfKYRL#q zV^))L5T~{*@?I)r5hE-jM+!%K_00Ec|P`xV52q@BOepW9F zb1hOxP~C`qOER4*%`zL}gf2qiF3f*eP17 diff --git a/precompile/binaries/stdlib/stableswap.mv b/precompile/binaries/stdlib/stableswap.mv index b0389f9a55a0e0412544a4bacbca91200611ce69..94421e52f1362feb2b04ed2c86332fcc6a4a5f97 100644 GIT binary patch delta 2865 zcmZuzNsJv=6|FbbaPO=7_3Bss(cQm0-R+Lub~|>`aXEI7yKQ$AMlnQ*Kv5FJB2p3r zK|mlRUu+-~5#kZDL5M)apvVhkHXy-@1xO5H5MsrK1wmqi00}mT^ZxG%i$B!x#&gd- z_ulvQhyMBC7st!baq^eWn??HT#ijUfi^t1XC;uUO<>Z%z{qDwJ&*rZ@_`OSAIsC*E zk$O%fxIQoB6H)Yn_|&JP=tc3ge^hRX&-ky&$3*6b>c?z35vd|2Nclgjg@P#U&YI#> zDdlUuDx|-tKPvkEx<2dwq{r4^h%(`i0e$m6am+t%PWV^NW}JpD<$q!BUL{FshihSC z7Sf2A8(c*!5;UhBTw?6l#y?z9D#5RVkHVjn+TY&BX%?1?tv{CBKEW__Vkjw1s=q&q z!b7Tz|41?pv*++r?5r9%H2*9Ifz6WAy0xB>(SZp`JY|bk7%8N~qFbOh-5F zPydlmw+rEf)ws&k8XHqY8kWUuoU#ceeVZ1ljr0J$W)Y8~rgY63HhS5t#wwbBT)a+^ z&5Ep*8?uO6X{n4{YAq29mlZa!)v7|bx{$4A;+RuTD*yZ5Z>R6URE4E6wUj_I#D8RU zfa1m&9tB`Fu_-nk1{@PK0!K2(af?}t^&yV1d%X7wNI;NLx}q=S;+n7wJnS;gVzD=* zXLmAlm$_(8ve?~kj5xA+kq1P!prX{2xMN(DvUUrsfgPk)s!img&_dpJ(LXsjGu@!L zgq1tGF2c>!xenW7&xo0+Rn~IG_Nw6Y$nL4xGP9x=bA3%v*a$Ab#))4VkB;j@s^kz%Ub{%q zwhnWwB7ym^gtdQoygY{PNUrGH;ZC)q330d+BxhBJ3BItdNawgl4)JY>VFid!eo2`wY}?ybuZgnxQra^Gs9DGQ!8xWThY z@GI0EA-^!3l0y+WJbP4EnOQT(O@c83u0zzrNhfD6D=@y`-2Z*y%0glmG7y_+$fs>Y zo4ND33c7(-$iH`S^HiWzl3LLtP$)s3%)u{0P_wyeSRUGB<&Eo$59kYsUfs>QjpczS~fz(r=OM|X&yk+HgVtPNE1i8cd)#mjuOW2YJ$cvmF|1sv4qezGXYhrdIdv1Tq{(aeYY-t^Lz;)?Ack9wL12<(4@}MKg$h_0M%dEn9EYNWY)KZ`HnD;BV=G0 z<^8Qy&bQ#F0^wP3->u(a$@~bG2*`xEYX^wef&b}=m+yoQ5qy_Zo0#2sSt-_L@p!L! z`_b}NFbjfIIklal<6k;CoR&u@bcgm=wo6q=ozLKAm-UCKur=kjF;5;0I(PspbzX9f z-0VVz=IVgi9>{psOwA)qbKRGaqMN7e5UhD6TFYH|ZzvF@Kf6&o)JfZ;C2rGZtG^Y{9W8qEKZAY=IeMEf#$%C=Z37gu7DU33`L1GWaX&1N{Hk zSHdtv)AI-qlFRxrjITmafgt!c3!(GWUfbU7?s*@2az_=!(4*d7K%oRRH(C9HFfR)8 zK;dRE*!j<%8dc>CBr>UxZw~&e76juOLyEC`n_P;3{i!$nS5E&-yyPF=+*!qmgfqga0Pff+1cy-XBduC! ddUjqx(e%IETr&--YUBU4d53t$pFZ=k{{qIH{NMlp delta 3182 zcmZuzON=B(5v|P1tWQMNC#$=wdV03!-c&|Uz^2m}WZ7Y;ta0blWj69yq6*}Sao=^0zhC#xzm zGV(>li-`Q!N4|IcTl33*=kO2tYiabe#iiiSi);D67vCUyee>JGJhSzS-Q+hP{rN*3 zIroLzp8t#pF@9ah+n)Cg@#L30?^*HX<}tY^o@%}$Z{>zV5k+qB+qZ`NU!P58-#+12 z_`a{BPAlLCk*|Vw7go3{e5R<=%45a%1Jk_Wue8sR`n2dbFR1&P->Rj#ATSVY^@IVn zXF&>6%|F!p#jrWh8zN|K>Qhnda#m6Davq+4p>Mn0`AR55r`0rQHCL;R@d{v zuQnC=eu%#eKYo_wEjBEh8GaK)u{)yqTX6q!D~$m=$XC^&B~yf&{N_|Rzu`}8jGVz` z3ts!aXoU}VO!PO8hwBSC4F2kA=PMt7QGk7Fq7n*!5)N0>!)?yN?r?tsuhrcS!ne(< z;Xsmq_dnt5$@oettS}0rjL0*ZlnF?h&_pI?%>joLb7Xx(M3v#xuRXO8nMkkTRdk70 zO~jE}*PDUwO@3^!4oxOCwLB?Pua+jsJsX*f5*9X2Gm^x$pQ>7=ENjIH$IML4&GMCp zKY*=1RAXx{focx_1I#Hv(AkwEf5c)n1 z_rN~i_Sv%;{FiXbiH+r=J7%{ak0mQ82_YA<&)NbhBw;@L$hNyL^)HEsdZy$+eT+LI zGJ$@KJI*cTDts5HTl#U1MWBx&m1I<2)QL%ndt5f#gOhQ^x#@Go{pQACajb)>u$St6 z0iR2RFBqwXL|+o*jt5r&CxTn$F{`9rW>4sQv|)YZSvd!7m)=RYP;Y0ti)OplSsjC-bUl&K59*Tr zyN}Lqi}9Qputx))v!@BvqJoP;n|Tm%9?4@k=ZtM3%?aediET-PI%Z{tb!HZL$P2a~ zdYhhEqNP0O9-T!?Sqw2wswdy23 zdl$5cDC)8-IqIvTm!GEBG-@wh^-SdhVUnkTWloyRD=(q2H!GW8@sW5^S zg>{1OD2>|eiz#kP2U0i(k&s9(fA7VY+*dPV8b{xR(viCARw#i>6S;$@?xqCFW+sR7 zocFWZZz*e`$+ndsIc8&`uQ|%TS8p)XxMY{6NCgU*>O{euOeZ^F31)+R)B!)lMso|!}FHAg(x{B`X{*o6rp z+h%|L`iJ8rt~nL^`ut%X0PBuSfR|f`GMSNjBn^q38%6t|WcRQd96py#ZmcOdR~N`O z|6N}i6P#s%nNiiIQYDJOH8^$!#aP?=*umZZqjCi*ox)!V_H*B!BD2>I)KnGXd8oDO z?+xrF(>sQpn8twpLovmj5Hb8-8jA$Cl-kQwc1;JLmOCrzInjP1vYpCw^z-hMEnd?e zciIS4a9l+e5olMq?7hvb9|`?qp+AY7f?05{s3%$8I}m}hPjKd zpnWuFH|}&&2!-mr>t2^9-79Ne-5A7RDMuzx^G0mWjqNdS6-TCaOqV*ON9rj&%(D6v zWu`}|DfMS&LbDe*pqE(gq0$%ZLerT!v4q`E>#@GUG~v7j4U0(waAkS75Vhg1e2;5F zpUc{s49lhRa_y$Z*jsmg?>)x52Zy5100s98NgM|q$(p&n7@nbP36Lt&FQUV>~1Vm=hVS#)BDjNIDe3}WOj|4&^bry9D3_fqs6TuLfOFl znFO5yz>zlH*|t7Y?``d%MrT{$@JIxdIu~69EL?Be3!ST~j&BA=;a-7bGrNR48GEP_ zuw^nKC@f8m+eHc3xZ~QZa>;{*U;JtF&#ga-JI%}62U`L>LkB?+dx)vF2dQ8}Br4!G h`X%S19&TL>_Vk+3&Z;hr!qwuDod?9z%~y9m`#%yi1)%@{ diff --git a/precompile/binaries/stdlib/staking.mv b/precompile/binaries/stdlib/staking.mv index 4d637b4fb01ad7518f25173d84edcc3f824cc672..720fa737b8c5f98e820b955a7493a710c633b533 100644 GIT binary patch delta 3011 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 F?Y|xK0=NJG diff --git a/precompile/binaries/stdlib/string.mv b/precompile/binaries/stdlib/string.mv index 8694fec0471fec19229a8f495a8b8ae2a890cda5..198e411968a1245b9c2e21a70fa2716b930b5b55 100644 GIT binary patch delta 185 zcmXBNEe^s!5I|vOXJ>aiGYzcZuL?pN90J8v5I9c31;CKdG~9q2zzvW%I06bous9lO zKk?o@+`^%sZTtrw5Ux1tJn;m)C8vAZVR|g*7YdFImhT+!+=CZnBvz=fQIH{$I_e5S zqE1{j#A)uiHPfJ0f`HiQQ!gf()N7(FiEuRHt2M3`mW|lLwi(zIN)!_%Av@rvOO!P* OuEEqJqRAhsFD`#WeHXz1 delta 192 zcmXBNu?|5&5Cu@PvopIpGcT+}2o2#yC(-#8#rqefMnYbx^#}Zf==cgsh1v_n%}q{m z?=9ZrzCYSP_`n0=6~~`5GFhOW zA|wkM>MqV_QCbU2<~1p(&!LFwvMZvAsfucL8tV$H6^TNl>x!0Z?j diff --git a/precompile/binaries/stdlib/table.mv b/precompile/binaries/stdlib/table.mv index ced1ac57c5e3a01d8cdd87954d12e23c1ddc1cdd..8c1f76eb4056af9550477a5721c949b45f071fd6 100644 GIT binary patch delta 474 zcmaKoxlY4C5QgVi+wtzkb`p$}ki$8+!y%Bs2qEzRbhH#yNR+fRD561BpzY}BK$H}z zQt%SI0PlcA$J(T3i~Z*R_0P;|C(&*6&>Xywcjx?YY3!%bvwx5BO;*)Z3jHC!MR^js z!SwOy;U;8afFxqJfOnaK8~Fh+%U9 z0T$ayF=(lq=DFowTF8~8n#?Mb+sn3h;inzQhGYJu4b)JjfjL-vRrh`3Au)F}G^%^*ii;H;EWpj8X4aHoz4+-*b%POsTQ zfPOp71`WDN$_;x-W=CN^wd>&^v*To#=|<8YrTHYpR5nA*;;m$<(|)pYRAmn`gpD6q0b&@-jS>|peA34f+p0UaVO^sEvR6Zub6Xpf>m?t?qSDF kWd&n%Ame&$e>OY5v<;!9os_4#ZTzDwdm>M9WS-^r4Px# diff --git a/precompile/binaries/stdlib/vector.mv b/precompile/binaries/stdlib/vector.mv index 910195b92e2a96a3031c462fb43e7e324ad0c4be..d697ecd02095a3753ba0d412cbd3fd2e815a7aa5 100644 GIT binary patch delta 547 zcmZ9I&1w`u5XY;kKc>5@cQX6cvpX9#F)WxBlY{t!^i@zJo+W7A4YR_8M}4z{>=^tFM_58ZaO)FQ!5 n=JF{&bIaXG0T`Jc5W{_sRvjy z*-eGbH!#w~7tqHLG0;;zi-HyW=kM>F|8&v)t2!ROYhHXs`;uRgd!u&-C;E)zcb5tP zKtKc_P@-%sfGR|EaPn+oR@-^k>x(bSfvB%C53Ul8!|Z$Gyrn<(qGcq}!6fsl%zikn zZb=!n8I8+4G`W}R! z&!huf-=xl~4oFCNZf$~QQ*i?|OSKIk~ljV>gczi^Yh zd5W|2%sj?<`eYv9RvOv27}I-u6}Qu8+aB&5c=WVVeNT}++@+`k2fd0$4~l4lQ6t^R zm5h?#o6qGtn<_TioZVAbdNy5m%V?=Vf~mZ@oTevkweKOy)<6LRA5wt(L^J7by8r># RHd2q)5QtiV%k;rL`U4IZG#3B> diff --git a/precompile/modules/initia_stdlib/sources/multisig.move b/precompile/modules/initia_stdlib/sources/multisig.move index 9cbea4e4..727967f5 100644 --- a/precompile/modules/initia_stdlib/sources/multisig.move +++ b/precompile/modules/initia_stdlib/sources/multisig.move @@ -656,7 +656,7 @@ module initia_std::multisig { } #[test(account1 = @0x101, account2 = @0x102, account3 = @0x103)] - #[expected_failure(abort_code = 0x10000, location = simple_map)] + #[expected_failure(abort_code = 0x10001, location = simple_map)] fun duplicated_member( account1: signer, account2: signer, diff --git a/precompile/modules/initia_stdlib/sources/simple_map.move b/precompile/modules/initia_stdlib/sources/simple_map.move index afe08c43..df9d3418 100644 --- a/precompile/modules/initia_stdlib/sources/simple_map.move +++ b/precompile/modules/initia_stdlib/sources/simple_map.move @@ -1,17 +1,18 @@ -/// This module provides a solution for sorted maps, that is it has the properties that +/// This module provides a solution for unsorted maps, that is it has the properties that /// 1) Keys point to Values /// 2) Each Key must be unique -/// 3) A Key can be found within O(Log N) time -/// 4) The data is stored as a sorted by Key +/// 3) A Key can be found within O(N) time +/// 4) The keys are unsorted. /// 5) Adds and removals take O(N) time module initia_std::simple_map { use std::error; use std::option; use std::vector; - use initia_std::comparator; - const EKEY_ALREADY_EXISTS: u64 = 0; - const EKEY_NOT_FOUND: u64 = 1; + /// Map key already exists + const EKEY_ALREADY_EXISTS: u64 = 1; + /// Map key is not found + const EKEY_NOT_FOUND: u64 = 2; struct SimpleMap has copy, drop, store { data: vector>, @@ -22,130 +23,198 @@ module initia_std::simple_map { value: Value, } - public fun length(map: &SimpleMap): u64 { - vector::length(&map.data) + public fun length(self: &SimpleMap): u64 { + vector::length(&self.data) } - public fun create(): SimpleMap { + /// Create an empty SimpleMap. + public fun new(): SimpleMap { SimpleMap { data: vector::empty(), } } + /// Create a SimpleMap from a vector of keys and values. The keys must be unique. + public fun new_from( + keys: vector, values: vector, + ): SimpleMap { + let map = new(); + add_all(&mut map, keys, values); + map + } + + #[deprecated] + /// Create an empty SimpleMap. + /// This function is deprecated, use `new` instead. + public fun create(): SimpleMap { + new() + } + public fun borrow( - map: &SimpleMap, key: &Key, + self: &SimpleMap, + key: &Key, ): &Value { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), - ); + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); let idx = option::extract(&mut maybe_idx); - &vector::borrow(&map.data, idx).value + &vector::borrow(&self.data, idx).value } public fun borrow_mut( - map: &mut SimpleMap, key: &Key, + self: &mut SimpleMap, + key: &Key, ): &mut Value { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), - ); + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); let idx = option::extract(&mut maybe_idx); - &mut vector::borrow_mut(&mut map.data, idx).value + &mut vector::borrow_mut(&mut self.data, idx).value } public fun contains_key( - map: &SimpleMap, key: &Key, + self: &SimpleMap, + key: &Key, ): bool { - let (maybe_idx, _) = find(map, key); + let maybe_idx = find(self, key); option::is_some(&maybe_idx) } public fun destroy_empty( - map: SimpleMap + self: SimpleMap ) { - let SimpleMap { data } = map; + let SimpleMap { data } = self; vector::destroy_empty(data); } + /// Add a key/value pair to the map. The key must not already exist. public fun add( - map: &mut SimpleMap, + self: &mut SimpleMap, key: Key, value: Value, ) { - let (maybe_idx, maybe_placement) = find(map, &key); - assert!( - option::is_none(&maybe_idx), - error::invalid_argument(EKEY_ALREADY_EXISTS), - ); - - // Append to the end and then swap elements until the list is ordered again - vector::push_back(&mut map.data, Element { key, value }); + let maybe_idx = find(self, &key); + assert!(option::is_none(&maybe_idx), error::invalid_argument(EKEY_ALREADY_EXISTS)); - let placement = option::extract(&mut maybe_placement); - let end = vector::length(&map.data) - 1; - while (placement < end) { - vector::swap(&mut map.data, placement, end); - placement = placement + 1; - }; + vector::push_back(&mut self.data, Element { key, value }); } - public fun remove( - map: &mut SimpleMap, key: &Key, - ): (Key, Value) { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), + /// Add multiple key/value pairs to the map. The keys must not already exist. + public fun add_all( + self: &mut SimpleMap, + keys: vector, + values: vector, + ) { + vector::zip( + keys, values, + |key, value| { + add(self, key, value); + } ); + } - let placement = option::extract(&mut maybe_idx); - let end = vector::length(&map.data) - 1; - - while (placement < end) { - vector::swap( - &mut map.data, - placement, - placement + 1, - ); - placement = placement + 1; + /// Insert key/value pair or update an existing key to a new value + public fun upsert( + self: &mut SimpleMap, + key: Key, + value: Value + ): (std::option::Option, std::option::Option) { + let data = &mut self.data; + let len = vector::length(data); + let i = 0; + while (i < len) { + let element = vector::borrow(data, i); + if (&element.key == &key) { + vector::push_back(data, Element { key, value }); + vector::swap(data, i, len); + let Element { key, value } = vector::pop_back(data); + return (std::option::some(key), std::option::some(value)) + }; + i = i + 1; }; + vector::push_back(&mut self.data, Element { key, value }); + (std::option::none(), std::option::none()) + } - let Element { key, value } = vector::pop_back(&mut map.data); - (key, value) + /// Return all keys in the map. This requires keys to be copyable. + public fun keys(self: &SimpleMap): vector { + vector::map_ref( + &self.data, + |e| { + let e: &Element = e; + e.key + }, + ) } - fun find( - map: &SimpleMap, key: &Key, - ): (option::Option, option::Option) { - let length = vector::length(&map.data); + /// Return all values in the map. This requires values to be copyable. + public fun values(self: &SimpleMap): vector { + vector::map_ref( + &self.data, + |e| { + let e: &Element = e; + e.value + }, + ) + } - if (length == 0) { - return (option::none(), option::some(0)) - }; + /// Transform the map into two vectors with the keys and values respectively + /// Primarily used to destroy a map + public fun to_vec_pair( + self: SimpleMap + ): (vector, vector) { + let keys: vector = vector::empty(); + let values: vector = vector::empty(); + let SimpleMap { data } = self; + vector::for_each( + data, + |e| { + let Element { key, value } = e; + vector::push_back(&mut keys, key); + vector::push_back(&mut values, value); + }, + ); + (keys, values) + } - let left = 0; - let right = length; + /// For maps that cannot be dropped this is a utility to destroy them + /// using lambdas to destroy the individual keys and values. + public inline fun destroy( + self: SimpleMap, + dk: |Key|, + dv: |Value| + ) { + let (keys, values) = to_vec_pair(self); + vector::destroy(keys, |_k| dk(_k)); + vector::destroy(values, |_v| dv(_v)); + } - while (left != right) { - let mid = (left + right) / 2; - let potential_key = &vector::borrow(&map.data, mid).key; - if (comparator::is_smaller_than(&comparator::compare(potential_key, key))) { - left = mid + 1; - } else { - right = mid; + /// Remove a key/value pair from the map. The key must exist. + public fun remove( + self: &mut SimpleMap, + key: &Key, + ): (Key, Value) { + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); + let placement = option::extract(&mut maybe_idx); + let Element { key, value } = vector::swap_remove(&mut self.data, placement); + (key, value) + } + + fun find( + self: &SimpleMap, + key: &Key, + ): option::Option { + let leng = vector::length(&self.data); + let i = 0; + while (i < leng) { + let element = vector::borrow(&self.data, i); + if (&element.key == key) { + return option::some(i) }; + i = i + 1; }; - - if (left != length && key == &vector::borrow(&map.data, left).key) { - (option::some(left), option::none()) - } else { - (option::none(), option::some(left)) - } + option::none() } #[test] - public fun add_remove_many() { + public fun test_add_remove_many() { let map = create(); assert!(length(&map) == 0, 0); @@ -178,41 +247,45 @@ module initia_std::simple_map { } #[test] - public fun test_several() { + public fun test_add_all() { let map = create(); - add(&mut map, 6, 6); - add(&mut map, 1, 1); - add(&mut map, 5, 5); - add(&mut map, 2, 2); - add(&mut map, 3, 3); - add(&mut map, 0, 0); - add(&mut map, 7, 7); - add(&mut map, 4, 4); - - let idx = 0; - while (idx < vector::length(&map.data)) { - assert!( - idx == vector::borrow(&map.data, idx).key, - idx, - ); - idx = idx + 1; - }; - remove(&mut map, &0); + assert!(length(&map) == 0, 0); + add_all(&mut map, vector[1, 2, 3], vector[10, 20, 30]); + assert!(length(&map) == 3, 1); + assert!(borrow(&map, &1) == &10, 2); + assert!(borrow(&map, &2) == &20, 3); + assert!(borrow(&map, &3) == &30, 4); + remove(&mut map, &1); remove(&mut map, &2); remove(&mut map, &3); - remove(&mut map, &4); - remove(&mut map, &5); - remove(&mut map, &6); - remove(&mut map, &7); - destroy_empty(map); } + #[test] + public fun test_keys() { + let map = create(); + assert!(keys(&map) == vector[], 0); + add(&mut map, 2, 1); + add(&mut map, 3, 1); + + assert!(keys(&map) == vector[2, 3], 0); + } + + #[test] + public fun test_values() { + let map = create(); + assert!(values(&map) == vector[], 0); + add(&mut map, 2, 1); + add(&mut map, 3, 2); + + assert!(values(&map) == vector[1, 2], 0); + } + #[test] #[expected_failure] - public fun add_twice() { + public fun test_add_twice() { let map = create(); add(&mut map, 3, 1); add(&mut map, 3, 1); @@ -223,7 +296,7 @@ module initia_std::simple_map { #[test] #[expected_failure] - public fun remove_twice() { + public fun test_remove_twice() { let map = create(); add(&mut map, 3, 1); remove(&mut map, &3); @@ -231,4 +304,28 @@ module initia_std::simple_map { destroy_empty(map); } + + #[test] + public fun test_upsert_test() { + let map = create(); + // test adding 3 elements using upsert + upsert(&mut map, 1, 1); + upsert(&mut map, 2, 2); + upsert(&mut map, 3, 3); + + assert!(length(&map) == 3, 0); + assert!(contains_key(&map, &1), 1); + assert!(contains_key(&map, &2), 2); + assert!(contains_key(&map, &3), 3); + assert!(borrow(&map, &1) == &1, 4); + assert!(borrow(&map, &2) == &2, 5); + assert!(borrow(&map, &3) == &3, 6); + + // change mapping 1->1 to 1->4 + upsert(&mut map, 1, 4); + + assert!(length(&map) == 3, 7); + assert!(contains_key(&map, &1), 8); + assert!(borrow(&map, &1) == &4, 9); + } } diff --git a/precompile/modules/minitia_stdlib/sources/multisig.move b/precompile/modules/minitia_stdlib/sources/multisig.move index d65dd383..1c89016a 100644 --- a/precompile/modules/minitia_stdlib/sources/multisig.move +++ b/precompile/modules/minitia_stdlib/sources/multisig.move @@ -656,7 +656,7 @@ module minitia_std::multisig { } #[test(account1 = @0x101, account2 = @0x102, account3 = @0x103)] - #[expected_failure(abort_code = 0x10000, location = simple_map)] + #[expected_failure(abort_code = 0x10001, location = simple_map)] fun duplicated_member( account1: signer, account2: signer, diff --git a/precompile/modules/minitia_stdlib/sources/simple_map.move b/precompile/modules/minitia_stdlib/sources/simple_map.move index 5ba90407..8d4bae2e 100644 --- a/precompile/modules/minitia_stdlib/sources/simple_map.move +++ b/precompile/modules/minitia_stdlib/sources/simple_map.move @@ -1,17 +1,18 @@ -/// This module provides a solution for sorted maps, that is it has the properties that +/// This module provides a solution for unsorted maps, that is it has the properties that /// 1) Keys point to Values /// 2) Each Key must be unique -/// 3) A Key can be found within O(Log N) time -/// 4) The data is stored as a sorted by Key +/// 3) A Key can be found within O(N) time +/// 4) The keys are unsorted. /// 5) Adds and removals take O(N) time module minitia_std::simple_map { use std::error; use std::option; use std::vector; - use minitia_std::comparator; - const EKEY_ALREADY_EXISTS: u64 = 0; - const EKEY_NOT_FOUND: u64 = 1; + /// Map key already exists + const EKEY_ALREADY_EXISTS: u64 = 1; + /// Map key is not found + const EKEY_NOT_FOUND: u64 = 2; struct SimpleMap has copy, drop, store { data: vector>, @@ -22,130 +23,198 @@ module minitia_std::simple_map { value: Value, } - public fun length(map: &SimpleMap): u64 { - vector::length(&map.data) + public fun length(self: &SimpleMap): u64 { + vector::length(&self.data) } - public fun create(): SimpleMap { + /// Create an empty SimpleMap. + public fun new(): SimpleMap { SimpleMap { data: vector::empty(), } } + /// Create a SimpleMap from a vector of keys and values. The keys must be unique. + public fun new_from( + keys: vector, values: vector, + ): SimpleMap { + let map = new(); + add_all(&mut map, keys, values); + map + } + + #[deprecated] + /// Create an empty SimpleMap. + /// This function is deprecated, use `new` instead. + public fun create(): SimpleMap { + new() + } + public fun borrow( - map: &SimpleMap, key: &Key, + self: &SimpleMap, + key: &Key, ): &Value { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), - ); + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); let idx = option::extract(&mut maybe_idx); - &vector::borrow(&map.data, idx).value + &vector::borrow(&self.data, idx).value } public fun borrow_mut( - map: &mut SimpleMap, key: &Key, + self: &mut SimpleMap, + key: &Key, ): &mut Value { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), - ); + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); let idx = option::extract(&mut maybe_idx); - &mut vector::borrow_mut(&mut map.data, idx).value + &mut vector::borrow_mut(&mut self.data, idx).value } public fun contains_key( - map: &SimpleMap, key: &Key, + self: &SimpleMap, + key: &Key, ): bool { - let (maybe_idx, _) = find(map, key); + let maybe_idx = find(self, key); option::is_some(&maybe_idx) } public fun destroy_empty( - map: SimpleMap + self: SimpleMap ) { - let SimpleMap { data } = map; + let SimpleMap { data } = self; vector::destroy_empty(data); } + /// Add a key/value pair to the map. The key must not already exist. public fun add( - map: &mut SimpleMap, + self: &mut SimpleMap, key: Key, value: Value, ) { - let (maybe_idx, maybe_placement) = find(map, &key); - assert!( - option::is_none(&maybe_idx), - error::invalid_argument(EKEY_ALREADY_EXISTS), - ); - - // Append to the end and then swap elements until the list is ordered again - vector::push_back(&mut map.data, Element { key, value }); + let maybe_idx = find(self, &key); + assert!(option::is_none(&maybe_idx), error::invalid_argument(EKEY_ALREADY_EXISTS)); - let placement = option::extract(&mut maybe_placement); - let end = vector::length(&map.data) - 1; - while (placement < end) { - vector::swap(&mut map.data, placement, end); - placement = placement + 1; - }; + vector::push_back(&mut self.data, Element { key, value }); } - public fun remove( - map: &mut SimpleMap, key: &Key, - ): (Key, Value) { - let (maybe_idx, _) = find(map, key); - assert!( - option::is_some(&maybe_idx), - error::invalid_argument(EKEY_NOT_FOUND), + /// Add multiple key/value pairs to the map. The keys must not already exist. + public fun add_all( + self: &mut SimpleMap, + keys: vector, + values: vector, + ) { + vector::zip( + keys, values, + |key, value| { + add(self, key, value); + } ); + } - let placement = option::extract(&mut maybe_idx); - let end = vector::length(&map.data) - 1; - - while (placement < end) { - vector::swap( - &mut map.data, - placement, - placement + 1, - ); - placement = placement + 1; + /// Insert key/value pair or update an existing key to a new value + public fun upsert( + self: &mut SimpleMap, + key: Key, + value: Value + ): (std::option::Option, std::option::Option) { + let data = &mut self.data; + let len = vector::length(data); + let i = 0; + while (i < len) { + let element = vector::borrow(data, i); + if (&element.key == &key) { + vector::push_back(data, Element { key, value }); + vector::swap(data, i, len); + let Element { key, value } = vector::pop_back(data); + return (std::option::some(key), std::option::some(value)) + }; + i = i + 1; }; + vector::push_back(&mut self.data, Element { key, value }); + (std::option::none(), std::option::none()) + } - let Element { key, value } = vector::pop_back(&mut map.data); - (key, value) + /// Return all keys in the map. This requires keys to be copyable. + public fun keys(self: &SimpleMap): vector { + vector::map_ref( + &self.data, + |e| { + let e: &Element = e; + e.key + }, + ) } - fun find( - map: &SimpleMap, key: &Key, - ): (option::Option, option::Option) { - let length = vector::length(&map.data); + /// Return all values in the map. This requires values to be copyable. + public fun values(self: &SimpleMap): vector { + vector::map_ref( + &self.data, + |e| { + let e: &Element = e; + e.value + }, + ) + } - if (length == 0) { - return (option::none(), option::some(0)) - }; + /// Transform the map into two vectors with the keys and values respectively + /// Primarily used to destroy a map + public fun to_vec_pair( + self: SimpleMap + ): (vector, vector) { + let keys: vector = vector::empty(); + let values: vector = vector::empty(); + let SimpleMap { data } = self; + vector::for_each( + data, + |e| { + let Element { key, value } = e; + vector::push_back(&mut keys, key); + vector::push_back(&mut values, value); + }, + ); + (keys, values) + } - let left = 0; - let right = length; + /// For maps that cannot be dropped this is a utility to destroy them + /// using lambdas to destroy the individual keys and values. + public inline fun destroy( + self: SimpleMap, + dk: |Key|, + dv: |Value| + ) { + let (keys, values) = to_vec_pair(self); + vector::destroy(keys, |_k| dk(_k)); + vector::destroy(values, |_v| dv(_v)); + } - while (left != right) { - let mid = (left + right) / 2; - let potential_key = &vector::borrow(&map.data, mid).key; - if (comparator::is_smaller_than(&comparator::compare(potential_key, key))) { - left = mid + 1; - } else { - right = mid; + /// Remove a key/value pair from the map. The key must exist. + public fun remove( + self: &mut SimpleMap, + key: &Key, + ): (Key, Value) { + let maybe_idx = find(self, key); + assert!(option::is_some(&maybe_idx), error::invalid_argument(EKEY_NOT_FOUND)); + let placement = option::extract(&mut maybe_idx); + let Element { key, value } = vector::swap_remove(&mut self.data, placement); + (key, value) + } + + fun find( + self: &SimpleMap, + key: &Key, + ): option::Option { + let leng = vector::length(&self.data); + let i = 0; + while (i < leng) { + let element = vector::borrow(&self.data, i); + if (&element.key == key) { + return option::some(i) }; + i = i + 1; }; - - if (left != length && key == &vector::borrow(&map.data, left).key) { - (option::some(left), option::none()) - } else { - (option::none(), option::some(left)) - } + option::none() } #[test] - public fun add_remove_many() { + public fun test_add_remove_many() { let map = create(); assert!(length(&map) == 0, 0); @@ -178,41 +247,45 @@ module minitia_std::simple_map { } #[test] - public fun test_several() { + public fun test_add_all() { let map = create(); - add(&mut map, 6, 6); - add(&mut map, 1, 1); - add(&mut map, 5, 5); - add(&mut map, 2, 2); - add(&mut map, 3, 3); - add(&mut map, 0, 0); - add(&mut map, 7, 7); - add(&mut map, 4, 4); - - let idx = 0; - while (idx < vector::length(&map.data)) { - assert!( - idx == vector::borrow(&map.data, idx).key, - idx, - ); - idx = idx + 1; - }; - remove(&mut map, &0); + assert!(length(&map) == 0, 0); + add_all(&mut map, vector[1, 2, 3], vector[10, 20, 30]); + assert!(length(&map) == 3, 1); + assert!(borrow(&map, &1) == &10, 2); + assert!(borrow(&map, &2) == &20, 3); + assert!(borrow(&map, &3) == &30, 4); + remove(&mut map, &1); remove(&mut map, &2); remove(&mut map, &3); - remove(&mut map, &4); - remove(&mut map, &5); - remove(&mut map, &6); - remove(&mut map, &7); - destroy_empty(map); } + #[test] + public fun test_keys() { + let map = create(); + assert!(keys(&map) == vector[], 0); + add(&mut map, 2, 1); + add(&mut map, 3, 1); + + assert!(keys(&map) == vector[2, 3], 0); + } + + #[test] + public fun test_values() { + let map = create(); + assert!(values(&map) == vector[], 0); + add(&mut map, 2, 1); + add(&mut map, 3, 2); + + assert!(values(&map) == vector[1, 2], 0); + } + #[test] #[expected_failure] - public fun add_twice() { + public fun test_add_twice() { let map = create(); add(&mut map, 3, 1); add(&mut map, 3, 1); @@ -223,7 +296,7 @@ module minitia_std::simple_map { #[test] #[expected_failure] - public fun remove_twice() { + public fun test_remove_twice() { let map = create(); add(&mut map, 3, 1); remove(&mut map, &3); @@ -231,4 +304,28 @@ module minitia_std::simple_map { destroy_empty(map); } + + #[test] + public fun test_upsert_test() { + let map = create(); + // test adding 3 elements using upsert + upsert(&mut map, 1, 1); + upsert(&mut map, 2, 2); + upsert(&mut map, 3, 3); + + assert!(length(&map) == 3, 0); + assert!(contains_key(&map, &1), 1); + assert!(contains_key(&map, &2), 2); + assert!(contains_key(&map, &3), 3); + assert!(borrow(&map, &1) == &1, 4); + assert!(borrow(&map, &2) == &2, 5); + assert!(borrow(&map, &3) == &3, 6); + + // change mapping 1->1 to 1->4 + upsert(&mut map, 1, 4); + + assert!(length(&map) == 3, 7); + assert!(contains_key(&map, &1), 8); + assert!(borrow(&map, &1) == &4, 9); + } }