From 4bbaddda99e77c06d95dfe786a40b8106326a349 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 11 Mar 2026 11:39:42 +0300 Subject: [PATCH] checker: unexpected sizeof() result on union (fixes #23141) --- 01KKE0PH0SM8FXP4JZ39CKXFD7 | Bin 0 -> 153720 bytes vlib/v/ast/types.v | 51 ++++++++++++++++-- .../sizeof_packed_struct_union_const_test.v | 36 +++++++++++++ 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100755 01KKE0PH0SM8FXP4JZ39CKXFD7 create mode 100644 vlib/v/tests/sizeof_packed_struct_union_const_test.v diff --git a/01KKE0PH0SM8FXP4JZ39CKXFD7 b/01KKE0PH0SM8FXP4JZ39CKXFD7 new file mode 100755 index 0000000000000000000000000000000000000000..613c9a9934d6514d55f0ccc6675a1088ec074a2f GIT binary patch literal 153720 zcmeFa51f=&b^rei6T&mBgz!%S1eO&eyO4B)B*HeK46ZRi)EJ1yB)|qqDgYAolA_EAH?8InTW_ z&rEg+{`q}>{k>l0^;+h6?w@ndJ?GqW&pr3t`~2g7{P-6y34%nxzj6Fc=dbJRAb59I zlahj2{H^A%qvMUMuDs%gE7o1D)Y^Ymxi;wqZ-VnJ3U+i{d&OI>tpkh7NBaTZjyvzz_Kvr?%zAhS9K4S; zLFkJq(E_>~+Oz1PEt!xvwdQ?{eyHLI>& z)zN$^uPB+*b%=CHuzK{>K z_&w$DJK*Z*Jq|Ah${ss9Zhz~oTROJgw)t(hh;;S+?OGM}H*^*C{$g}1P&R@SYptt} zZoJ#SboAqC=3#eq+`ReD%~78I9}C`jD_t4joxY!2Zoloe+uz|K*26pRV1(aWd;xyr z@Eo?4+^YU~-I_OCb;WDeMA8uihg?4oxuU%5-|u}Wde>VV)+MMV$%*PoHkZ2h(i4eb z_l#(apGWq&-%bP%qcCzy#|66^gFwULjjG4Ljb}xFub_U0GP9%PQU4!!<+xzUC^_el zHlII@_tv|1+|l~>ZEtP8`R=#h%)9>0;ZJz{(SjX4gHODE=bqs$ZQuF&4PSjFY4iD` zY5vjjxY_n>v`hTMS&K-u{#kwyG}Ax9NzadJxMXYhVqTPIGLW3W(}W;>$2&LQxmDP_ zZOdx7_wyua4I{pZ4EEJ?rP2cHDBuj@Hd@ zzvcHfzvJdx?r7a|`^~qszU%fow%>WjEw}7wee32sw`^U~x^2gfyKcGYl}ndgvZVFS zt=sOn`JJ2ZxbyDTJGX2RS`j+IEBIAEyS|wS9;9n6?p=J-zq#)H;`QT#)l&Q~@^2&) zJbh|sqUTh5kR6y1lm{lH%U^qKu;i2;It=b>#Uwr$wan5TLvf7*tfsEvG0-0yizwX z`{o9Fx-%VpU*k8&Zx3l<=X$eucv)) zU$86n(M`Z8(jP>iyfPK!RkwK(zwMj)nx_Q$l{55A+AMxEn@Wez4!+=EmBU23yxP61 zOgKL1+?O zJT$W_-;$X4KyxB!v-T(p{3!+MpBNdLIgS2|OpC#qR)uw|gC#xC+kHO*H z;86D@aFnLMQ#)VNGt!=jc-bC2Ej|xIH}wPD^WZBy7YT20%8wum#`k{7#<-qS$U%3e zu{78al#flO-sE(CYY<#2*vuQ#;TL&n^3r)k&Tu)k^VK~g{a${?0VjowjWam=l8vSP z{qU-P6TA&NKjV3u>?i^EF9r7w{@`yZoYa-?>Hl-dzyrDDyizW?sZ`vV{ygu)KRzp> zYgZ6F6#cb}gv z%n8cj_^x$@%Yu9}GF@01GF>j!oNB2w=rEVCWGuE zWUG06P(HM|Yu)e6iTXZ2nE!R**#rJ9Q@TXk;bGTD(MoxP$*}k0#;CmY6B+8E|0(Q@x$tqC;E+JJUlcl*n=L6 z=t^A=H%Gh8t_|PjSaA1IwjS=i!1c1``>k;n$=(|D$T%l^)$xz~l_gV>g@c)SeFyvJ zEkDTkRUOHp#;6}Zi(=!>`pg&)@7~r|SPC@EKPg$I|Ik4AbVJvD@bJ{m_MQ>+W4+$B zG22LeXoKvv4bBN9vu)_XS{>W3u{M!0TODi0FLY7itkSF0mW_=!&d;tvUb`7n`_R39 zyu8NJVq+-RlwE0Q(HOG6e!D4KSPY$$jFTJPcPBGgE^-g53-~B%>Njr*^JIpSp3>U)9S_ zCo^xuk2<-xIfDKiBYp2LBDt^8%P~1erpp8Ld$1$Oj&uZV?_ivW4gq>XzX@~;cE=vI zV=_pZ_(dN(UrxH0Wx=@6-baz=7~VEkg){Pe*y;TF*btqPHO7R-j@o$-x@90qn@Mm} zUr58&c>gC~6P2^EW8)@1-_*`=;y>-=#s3j_@5W%cV&Ak!<%LTlw64s5nOfUO`O-hk zSzl1QdKZ1LAoo~Z<^rYH+B{X*TU|d@rqTv95$(mt5$G{OUx%RKFnwLUtKp+-c75fe zMbU|LwNXH}3(x{vp*(=h4kELac~yOd?WY<39i!t7{4*O?2<9uSvCqB6DzJKe! zBixmmliD?BJ?%aReY4@3ZOg}OV+2Gkr8Vux#vK>zQUw|swcUf(1AbNiUT zqj@pIbN@y+NAjH6M4s|D_6=aW%t$c)`p>7#2J+7DJJ`;1`$p{b4YJj?|Jd7fv9ugz zBy*}0&IqPx?GU2h0{#k_Ae-P_>xlpJ^O1)%PIEgpEiWX3OH{|`ioJQ_vxY zUT^kxbYrA1;fcxi2;<$_LPvet;bXQP>4rz9itj{kbAekA>FPs@dXbDIvZ-%x>+1!- zMY|@>=}B(vL$(@vpojX~OL@t&%7{K;>d0)P73n!>WcY)dqfG;Hk@xmJ{jzjyO05aD zx6r2A-tO?lCo^3z*Ce{uO$6>*#!0BLGdGwTJ`qeAf)>N9AD#uy_QXrJuRgMPc^n69 zg=kFxP1Kg?jr`@0Ve^RB*nMWhh`yq!WXtRn-c=VGOerK&y@_4v5Bw24A0+Md;(ao* zUH;Vb6TH7#;kjf0yWY)-1{)l~)%uuvqUC|Zj&E`N9G@#VY7JEs&d_7^xY9D?8MIgn zEmEl`XJhL^i&TXclx1y|&JR;(ZK7d&^N~f%>){)W_6WbXJA5ZO`SLOqo*l_lylzf) zBoD~&bI{Jy%Vh8+qm=L8gdC}zRDj$22m zWAvk*$;zavtT6vs+aYOMFBi1lbMj*}gYV7TYH4M2#fz0W1DW|5bE9PDP|QXUo>hBy zHEUD9KB&$=#d|(>blbhXC)WgrPC|p>LdvbZ(P_nJ9z5C-bX)prXD1d&58s z-Y*DFFn+I9dp7Q&<41X34P8ak4~eEK_weLOxvefQ>+*_&e{@vsdpNsY{(a=<-18s% zvj6!0qp4{TUWa3N6tCQUw3vv}J)Fa??z>diJ>$PMe2R@9JKFQNwdF%(UO1x{qB1K# ze00r@PZ|w8%w|^xU(xi{?zzL4A9>%=BOm(0$s?bA`sB7?AgVV$M$?gdkM`{OUnf&@ z4_RIzj{nHVjvhIu=VWnQl;_*q>e_fMZR~c>?UnXEaCFT-^qfpBc%lZ!oGaH>DfgbE zYbNhMxoy)|YRVmUT_VCGV7e@W4!F9st-@oR2Po3O$mg}SA ze>g6pAO6MZ&F)!iVe$XIX`g!kwr_mnWa^89H8`wx{6C$-x>OXg~9tEA@K39Km-(VWY=Q$DBMS&^N^`sF}y^U~}OW=gkK)?Wt#d>G#+ zEw;`%5bVAr`yHiK*Et8m4_{*I9P1nNTeD;eo$q}ZXSB|l)U|FBa1Af?yVl6LOe1Ua z#=h!!y^{6m3)dlI+4CFEi|ll7&$BKY)t-NBRaDM&Lq_Z1m_3gjc53I@tZ5V3-Lel; zjM;?z8;zyz_PKq7OPNn)Yb`~uol10Kr(vt{yfNrJ;`q;8LixF+gUNZzFM>Bk@(b|F z^ecV@*)BZ4QZ$p^FJhmC7oaZ}^S;=i*XucSE}KZD5*y1Xpk4f@^uKylhgXWis* z?0~jfJ83<2YUgWNM|%H4%rDoDPZzlOVfy5c0d8NxtsxFi?V6e+U4Bq-Fu#WKMQhPG zOffH#-$QdT3!e?9z^l%}RRMMz zID?~PsE2%h8;Vz%d^8lU4D#K{P58-g>^pX4I{#V0qy6swjg_=sYXjKGo-g;P(!fvc zZapiK8E?Z%rb6r<*%dAPs@>HUyYGk-wkY+fyr}N{${g0_@ zav2_(ZS)Jm?Kx;;d{qA~2s&50`Bri$dpK@~c|Q4mXVe$yJ6-a-1zX;Y0pH)9%7+Ki z4W2IlgEYq0B~hEs=7MK>kN<7u-S@ z=LLGj>{=V2@B;sRv_7MrU%R}7G=sG(=p5(l0?|fklBA*@D*&~5RP->P_&v6bl&TDFB+_^ z8~ZuO@lPTy__-o{lbm6HrpXMk0Uwdp#l?WO{ z6U(D-vahtZEJ|k3!P+;F5Bb#2_`V72qSl}dxoU&XCMRlNZLt46eZ;j@V{girN4nZ? z+5N}sT7t;O7VMh3zT$g~l__p}|GG8fqB7yGY3rqbD&;a&KdAO>@m1!JO+Y{PVon2EWhTpdDzkA)bgzv-j zY9B^{J1TBXsS0j4pCN9a{ttZM^e-G0x2g|qxB6adlYUWig=`JxhA%Qld{MeWelpV& zyBgPgrzHgW+B0+FEF< z#t8F)jTP*AVnn7hcedp`{Z?8%8&B}?!SLNtz1?;7h~=1W`5zuVU%Cd`3x_JK&qQSp z*TItgZ?KL;`MJ7$(dY&H6Y)Jgc&Pol{m;)`{zztS-^bgrl{3*C?qejZzl=|t%cHz0 z^81+1VQiXjvfb)nYa^4%O{HA&e8~WI=N#608%huVr}&2bo00uHr*C9Eve_@+sM)zy z|86X;K$(cgl$lla?@E6c*Gmtk8VdbYKkx7V3_ouxaG&3}e5?2KB6r2sTHkJbJ{5ek zD})EO$ETg{wLUw&8qGHmp1o&B<3|0E?v@>;dOeKUmZovp=5KE;VaFbw$i8`we&bsu z&Oo%dv9H(4Pu#wUGM1Nm@*|c9y?V+26#4QqwtV~65_A7Y%&(76tjFM_hTrP!t^v~4 zKu`8ouqii`UduCn`rd(Lq+5s~u(2&WU9=Jp%+Am=dc8WLvv%y2fU$#{dbhL$43I_q-;sdUOZ*4gI-tO=f|g>Y5KYR%h!db*yjH)0$vn+y{)!sJ6`q?C_|` zm#yIQnctnQ()nIL?`R(M{$OwzVvL&4IEJsaJ^97U;ro73Sek#N2jFeAAHloiFC{r~ z`w=%Wjs{6Z}JK3s4{j^Iea=e zQS|bQUvQw|(25|@wW4uV&?Y}*kutl_Ce96c)7*t@mczvBKCk(#fN#b2<}Rq}0ef#c z@{uBWs^jg%LLF@RA&qwEiF&!-8bo`|<~NcaLGCNMhH-A=1ih!Yv7&=JADpERo55Rf zEAb@Bv!DL??Jw;)wR0wZ$nn`+X57=-#|&05cee%Q#@m8?J4!$LB1cNcw%+t7ROgT4McjNlRnyz&}(b}H2)kX_@Yl}|oddB9Y%`eZ+-!^o)clk-) z$rtbMy{2p3?W6PlK+E7%@8Ja z(j#wKzIsL^6Q&D*H4(Xxeq4*aGIVuN4rhUz?6RxS&sRgQt9Yl+=v1?}mU&sBob>Ku z?1}A+p_W9$aPi8ZoN7W&Nh`Jki|4q^voNju>$-AtQ`8^He}O(V!>__;X+v`( z^m<(W3TV|lp_V==*H7!yW%P;nnm!RL!dj~A=bUCwALuIjSiPk&x)2-l0=g`QF20YG z$LJ&Jl|D{(v{4@yr=va+&tiRC%CGu(*$eylRqv;wt!C$^Du|BwU-rf1OZefds?k?D z7u&@6S|^%%T$(A1ZAaVi9ok4%D*h_uzS;Y$pzYx}?`X5)uUb#N@x*2VM{sZ8Z)9bn z+6J_||0SBkv0Z6HG>yxo_K?JT;h=I2P9{TSGCYD@Ekmw=r+mQ>otlAZ&(Nw_cq`q@ z1p6tHi9ts%gYEcvCOC-iH8{-p6>xBJDI82UgL^R<$hYT4|qBYE^EwkY87xVVx7Tw(EOXakNJ8PbJ7*s`?{{@=eNI^ z{mZkfvGByyV#me(YDZ;4r(?o!Q%WkJ`Xymi^qFxt{bJ zO2_c=XkYndu8r=@Y|`hHtc}!^Y*BXg0^lzM&&&7Hzba{rspF^7BiisOe zc9b5;5I3CMRC+W++;DQE*4Vc0Mpi0u_T9uI-aNS)H!L6Gshw|NPcs?uG+Etew{r$s z6F~Dv+UGGxZ=x;Q`FE`spm}C4@bO1M3+=D6mZfi$0hf@2UFzeAzFnoahJL z2Qr5)S9y)${j~cCJdiI&F|!;yUAHLKp2}3$jxpamYozMgmH%4w`dj%{-MY7)UhQW{ zubnSKuaC!Q_PtnpW74a=dd34keA(kyNRI1O{K9d@)atWr&hLEIjTP}kV{SiVbIngj z9(pyrKznO#Udw z?Dku|y+E77g*8^&zUQNOd94{3$L8mH-p!$LeCN`R;Yu5n>)h<@Wq%e-y7zSLyvMgA z8&U0`*L^$nXHvZW9YLRJ&XjIdoUC{uS`?Q?{TW&q%{#P>&#g;+d?2Jxh1(f3K8={? za946#YEt9Wu=|Va6zf9!Qw;~{Y{6S#@ESba&v@Oo5WcJghXn2NY<0kiIXI$$D|epq zl}3EXDi^0vyd6BiK|Z>*^fx?m>+)1nYLR?8A?sk%r|8GjgC90O%NEZYrTtZuR?)Fh z+ZOL58vLi|p!QhDH_eD>P~YA}+Ee@Tb8g2r3Xg1G9yU!}6s{5u;Ud%P$U*AOe|EIx z{O*&|=}C_R>BaX|(~tPrLzRE-gQJ(9{7@x*P3#;~>W&AGt{D}6HT_7e-PH7ljuz)e z_z+iN>z9J?nNdy0CXLc#bopI322u|aGdWs&k5$u;Osv99z44(@@#{HRO<&_Yt?RNz!(*wUfdXz>5NnqHxq$|EDG=@C8^nvq_F=c$XM^s#6*&e6@&PruSn(Hy|O z5_<69FIZnV-K6}1mFaxN_ZgeV2cgey?f0c*horInWFyMnKEHGfTc$g+q4Y24^+9kO zxDq{gak{NVwleFG(EC2f3olK#@!l!>2)z~QVbc8>m$j@__`9QJ{NCBJvy1JlORkL8 zB}MdSYCP}Y$U0?v@iKJz_k*^OdF1eT7n83x(A(_IbSAv4Ds2htl^5c1iS>D5y1bcv zffFZ29+poXHF$p6!P8!)$L~unP3;6f2yX9AK74t1^3N}~*xFY13*nFa zV#Ga|Z4M7ktO+CCVz@DfD{ZUOhb_XFG{5e)Ifi%n=PUb1<$Inn8=o}6&S~AXc||sb zd<o*rhtVvp{tN9~yi zPBV4fURtO2yuPk=F)%{WlXu&TxF$GJndf48>YwOT1Xd0_63p$#kf}d=ZsZ|P!vuR* zot{tPL%nS>+3|Yv>3MyVhe0{Rje4HfI-eLHLz*X9zuNrM|0=C*Vm5U9c=jEpvF|XQ zGe_eU!y6lW^B8-xS%=JKeRjjod)hzJ2kjpW_noD9jh_e2o9Cs8(>;ov+MQ%Q%9=En zxt>_7p!3IW9?T`LFWETBv%YdTSlW2T&ZCLWeJ-s#`EBIrqnAI8U2^dG^OkFTZ2y~C=Yt31UfQ`5o?5xjRLgnX;^i*)<C=W!(s`dy7;%x zi)avor8^4@mp@B%K2hO8wU5g0?oT|eGelbzFZ0AXoR^+cTFn_^?Q2_q`{(pAo~BF2 z<9|75E&0nq`~8fS9{QJ~f1zm$$$#aBawCBulO@?Jw>734O^?C)gKEIX;re zj*KMQSSQ&zIGv5V>TuR|NL93`zr0|gq>Y^ok!a0_l0-5 zaSIIf!}gD3<#J<`lkDf(uj|_#Mm{ao?SZ~Vb7&0zEDlKVG?jEG^UQJOA@K0BSBT*d z=YyVm+9hk8^{&VsZTfRw&?V<$dIUpbuMori@EEv@p2$k4Xf3>tx;2~9w+7MKE8FXj z!3zCee;n5s9PO=M1}w>F;ro#<*Vv+P^YSp7pe9zrl3Ch0f;4C9mr{>}XfzVMJfat75;131ba^UEgb2&kiib|AN2K zpF904^VhPchRv!mzb`YV^exhE2Uo!kCph0J&pot_3^$0@EsXghvKyBv;W zAl`-YDknL5(#cW82W%_yk;Cobk!{OYds#BRSMwBy;(6uAdVzX2-_g#$LKEvFHi7y$ z2(KookJyPi7p%E>aB;f4%l8qx!uN46X|GZr9X)Sz>%|dl%DAkICCdfob@fku^Lpk? zWLNbJf7g@g zwN@rh%Ej?*8q*#)cu72t?^=BD>pAl`KJwT0SMM^=xqp9G#gWIm*7dX>yhDB8=k%S; z8&AK=e5wQ3X|t!}lg1{odjYUfxIbXsp;rWZw1?v1NEaOP^AR?SY%<{drTQRRs+`X7 zzZCmP&&((EiQiN}ELBJ8FnHv^qj^#!bG7G^s<`XiJU(0e!O$MPaA6ha10i>V$mW#q z$#h6#kk@>uvMJeo*pdOhkJoW0h|W6n z?95cA8nY{ZXkh|-t=!3!ATDScK4omROGJa03J>x`mmQ(Q zk-h8Er^5L+&HI$&nck7hQ)b)p9HckT)4Sn;j3TS2f>b*HHpQae2oE~I>qhHOTXsYfXm|Q+Vb_WQ>J4_VzwYH8eML-edGJc`T7d7FefewM z{V@Xz8nTIW*U>@r!bHh8<9=X4GCP51wKH-L{6lw*yeoiL(Hd@*_ZJBd)^Mx+zNOw- zOXl2spn1Fitg+_u5L>hWT+zT{abo3jqs)u(^70cK9cVwSYk#Y6{~op9P}}}J$hBmZ zeyLsA62(}#O1pLCRMwXx-rxa?VfdS_{GEz5px;A(!y1G-=;?+cux(8oy>B0SmrLIP z4Yh_zMs~-@?GX-z+o`*Qbacc-ulq$yt+k*@5gLwWhX^Otwf+E0c9`Kw9noEQ9;0uA z&|s~{6P$|Ze!~;K`Zbkbmyc|BIBowmaH6i^1gtntk}JkzuOIV~+;WGS^!LoJ6=~t9 zm=$zDVFB{Gko0Mhyyo1!FB%i(+w9;M9i#ip;$sll!{~%-MThlEtNNPpnpI5x&u{-y z?vU<+Yp?qE2atW+A6s0j$7U;D2i)WXkKc1pq?~xQ*84KF2A|fI_jY@i=V3e@`}~m8 zrCP&R%CqM2I<_VqTief-vV|&n-ads!Lo>U?$7mfs&Cz@s`YYyxw>3F=9_QXMaIWlk z#c=~?zn=P4+ZP{9PGdMcIT{`4Z^LNm(C0SC&tHcQ1F|3DICvj%yuYj;6V>!ch9|@O z2534t&Ai~o2G5?JHGP@vWT3t;K0VeKuBwc9>he<5VNOJ@S{jh+ywTg&Bd^=hpdJq! zXW;l<_0Q@Do$sykIL~-8Jy%GA^907dvoY7kWi$!iW64!amW+?Uu{MD_?DUP{gxuBh zd8mpB}2d8q8@lnw=yt7}Le zF+0wm1wZC&h}Hhy7VMO8Rr*A~=ZWkN-uL@=^5u&S!N+VG@{eJ6=)R}LuT(sOyDJU5 ztj5+!R_|+*-jN>sd+flj`_BG)WSQ|SeeeQXBsT8-+A)_X{grr(ZF3-O znPxUpjx`T>L~E~wL0)kN(h;)RzcoJC!#u^FPe*AEZMpSVIp^Y4Dsa$c28TJu)^N-n z1_%8#NI(A`IKr{!{>HdYoWS~KLi*HveA$hhdomp*E1^IF3L5 zwDppTO=}>w-`(p)Y>(Y@iLd-CPEXl;w(2{#{#`T~Uo5d^_`$d%!}((8_U-4M&2Hj= z_7NLJxjmxmeBEt|?bsZr&neY!EQv05p0&TR?>fq=9A_R&2knfb>O{P;a-?x47+oKo zr%*Y^x97rDvcV6nkgr~8+V7!#TeCOw-ktpJ<%Ra>4q?fg@_WHGHK}?YsBks=MDjB? zt;mK6=CrH3@&SIbEn3?hkK(fIJP7tOvEJpu1?lpBd>W77&v=Jl|4Dvb%-cZbOSX6L zbz+9Zv!nd>(5BkvOwC7x|2LS|bDV$7xpfsdv(LfWA3mGRAcNWi_Oh32PuRH>-|icI zyU3L2sq-v-w4-}v)aUNxUZY2K{=JG=Mi=+iUOkWM=eYgE+hEf_7(BZq`-ZbMe^%lQ zAJn}v?5~p+#Ti<;`Af5}A|O^f4)tk^M>T{)8SMM`nHq zO@9PUwNFh9O}Ut?#_*-5cCFi?aTk~Kl|fq?S!h6aNXCs`bFd*Bp&4f@wO5DCwPCB3 z8^>4fQLXcN$PO6aa|+q;_nIC9@8j@LXB)#rY+r+S_WA4{X=HGno+WFtk1V#x)+*KV z#3p0Q#>(?-Yk4u-&GYNj&MSIGGGpBR*M3Gi;=%9? zbVLWd6HP|Z5f5@s=mk20bIBDQ!B}}Jyw{KWy_f4AZ_OR`PPB zu73ZnuH0|?a;ydYo~hMiP04u^^LOaImwo4+M`C-X^1G`o`VnvU0uL{~XPVR*&#JCa zdC|f4Oe37ROJ#PnXBz8+-B+qU#P>|=@@)>8!rju)Kh$1n(#_B9bNg@*n2$hX#Qznx zyLIOFApddX()QEomtW6`_dS`9jJ{V2ui|};_B3PV>uFtA-s2z`ic{BnVGDa0j^}>8 z8STN|P~9s9r=czQWa4|J$=SegeF2v3l_qcK3+~lkDR&f)Fc%~fmA%s9zp__)8FRjP zF`hdRyuRFVV|9;|aa+8st9Fm{GS>!mg|F?A#>(ZqKeeu$WIWe@ec$T%9w~IqiPo|G zxMpCA-j?py>cAfYkBSc}20KoFJ@@oS`#+!ZV;34!@4~#HZ>!(eis5{C44iY+6>W0R zR(+L^OTS95*&B_)3jN+_9LE?O?TzX#Kbx;ztdX_Dc<_6pe67RI#O#P z%|F|&Z*H*fFcV)baq3UNxAXCx-sEGbVsJ+5dxS$I&!e>?y6DfB^EzMvxSaLKe|Na5 z*G&$XJ2j`;nF!`2?SIAR6zUIqAMukHu`Xl28c1r*^Lp$HfBvHCi{bA4%6#{QpZs$3 z-GAUGsm`ZW9}VsNzdqkhELZ9B-}9ZDXa9S?UDS;#FTk zJk40^yAQ|*D*q^Rr}y*x4nDzA=eyYYF%JKn)4*Tm_X}e1UojT^OmyeA`4#cOXwOcx zDN6B%$T?BFo2kjpS3e-TrU35xc0tX)mHIy?^55v}mEW&cKf+{S-^-EDhC46p?p67K z%(oM}e_nkPt#bZMxbq>gj<@^&1XnbbZ^>wZuc-hn1V_Fm<>|hO3O$6A^FO%nZ7GgC zpQ2B!8McSIQ-*#jt>uCzKY}l)w^FyCy7)JYHux|6IkcMoKtJ8#q4VEHKi+HZ0dTaU zKVLAsg=ed~e+XL3pXt-BKlD%i(Oq8Fmsa|Mf98&Xwcec@`ID3KPwDI~erSAS#7ZlE_&_*I_gBad!}q|FLAE&&lvh!= zsc>%g!o}_mYv*q^nExKFp?A|}d=0I$9=ao&Zx!wl?pBtw%fuvG`{EtvUBQ97{8*>T zA95*W)3gXsJ{RwH}xA&K>p?=GwQ|*j&3+wu# z^9>I!#HY8IGt&4^f3Se>65*fv5&l!1BM?v3*G2TTd3;d5iF!@I72fi>Ap_9beajCX zDjw}#zIFCJ{sxi#W5_5z)^$JQ{oDN2+_gAL-8(4rkG?K^SKViLfAR%&72i*6|IQis zp~h!>kj)(U>b^no`jO<^(#PTFqsjA2pU9kF>PgNiiN4+VM6L&x(fsb;g66YI&8&fR zrbKI0$wy%s&+R%J5S=;4$Nms^ROF3*O|99U%z344_|uB;sV9kj);^1}Z-GzOm%d0@ zzkhL~y_uQdqFCqisB;~4-ctIk)j=kZi%-Yfx>s$zw6q4CdWc2V znSk!ho2heM>2vk4-`koUx-KXeA7fnnHU9qVSZ@)3^C5$c3?WDOW@_b^|uJrxKty$esQuqMnAENw~l)oxnzK1e?d}y5780o*EuV#$= zv^BeB5%&kh=`sG|?9fWu&j9Z|z*`Bt_H=nW@ZOt3o{8rjybOQnGSV+gm+vIKrv9bW zZ>2uI8r@6a?;*HRI3o+1Go)+Y4J>rA?G4u8bo0eo?J=yV$LlWOE(Gp+;9dt@#>XJz z-Sc?4&eKX57p>^<(FoEtTb@d9SSD%ufNpxhC=Lx0^{H0 zeIa-DqwBPnawa;UYf9I;`M@>2(68FF*$6Gz54Al8uUl*G8fcHrx75+Tf!{YZye6@4 z3NH?8{4I8Pq1)vr_dfIcu`yI{x7(LHh+bFRt#pyjWvSh#TA(A(;(yNV7gpdS3kH9h zgU|Ri_~;q=!0(U^qk6y<%;-+sy6;$`<20w|Dtm+6mjqnxmnmJ(sw=;J<^GPCJ*7Qk z-4S8ljeowry>`BLnr!T=wz;?OzOmZ8FKTo5 z3)1jga)({R{9yhZ`E{m>{=CQetGk_y zo}^z7&SS>o#M-almpA_ZOVqE!_5FeezF#L5tHb-NL>q9Gt*rfa_l>Ccue9{KnCDo# z;+4OjWj{3U#+Gbit^{TuG5LFl@y53r-P6+R_r`grp6v-LU(f1qf%q@+yfCecc>L(w zvY%wk5f}D?Z_CQYYn~F+d|S3ARw;&~@Uy#P+&6)YHZ5~a&R#$p?s@UFc{jc>;iWnM zmx6uEi^G1$Sgw1IekS((O7mK=R02fTfOWJiVwQ;4ExN! z6&m7izRmmmjj!&mV&;N>N0$2~&$JT&UvfM^`m4axr-`1XLnl{H_W=H$UHT~zODEFn~YI5)H;d!@~QLP@9Exl zH(1Qoel51huf^z(^s#IMeK)f4|3v*s@hn@Bb(wu@&frtu;G<{#8ei%9tJxop^BLU{ zA48tcS35r6d^$d(Po#%!9PzAnv}Qr4|H^z8&;AfT9(KA(yma&N7p#xKui;rT;-$YM z!`f$^<>}b#=}0}%QE^DRm!bjwvUfbE>4`-Th^|L;pAKb4r7Pu)uB_v<1{#&7F&jeb z*5jHV8T-0BO1epO{kYaR$Zd(fX$(#JC24DPO|n)>Mq@*F2FedGK1M4$(?T1mNwSqU z^`+2LjWc*|Cv8@c7wxp}vb&HR?GCm__YaG9`bLhY-II=Xn(y|t6HAea_OiJP+twPQ zm)2~e-`z3#3AW@??TA+P-5uL!o!h6gR!Xa}Rr=3jZ83$l#Z>OxIxE|=An`Qk@NErh zcWFU48-G*K&G4^<_M{gCU+u3jdd^{Qnl+rp=_JXYd!E8`=6viV_YU8+HnbQi=@WOR zT=f#<1>C>Yqwn^*d-XiLW`BN7@PTP~(2o2fSGhYZqI2vYCWhxDmxsW~_3PZRJ4eg8 z&Ul?CU7WAr?;}sKPy@+v*?|RJD}wPnb5@1ecjz4S?(hE)a>I8jnIju@XBG3L@K3PM zS0Ls?x>{=*eK%FGx}o2n&EsUJp+r8gT;{_ATd5&{un;7W5}WWA3B$yy6W#6U4P@}`m|p-R)2LS%KE{0 z*zIDMBe@Muq?{g?FTiL(8GR%C5cfrhrend3W!1g1`Z+by5gmO$ zjqISl6mtAa+brn%!c4}6vswNpunKMtjOzleC9lvGwnj%x|LOe2YQkET6Rzbbig-Z?qet2MUY@%{{B}ap~Fk!nlyFpywPg z=`(XhYS`naSPlF$wa7{BxYCj=nX2QAH-BcKvs%z3s>u<?e+Z_X@kN=w%>yP0`p3%sFqV-4*&5};?tAUB36;j(98umR z=|SiZ4DoC>JX5~t-UQvHpAR`drKMBvn}ZQu4F}+JSCx#kGp*d^iZE9Q$y5U z4Lv09YoVXVt48MAwg3DQ?y=zhN7jzspZN%~%i8}b#acdZ_sS7#$sA;9_ym7qX~bG) z&X3a4OS45wBSuTUF!bbG(dqc2?F_D8xAX08^99NV8CXExLh~Iw6<#pQ*67H1%^KbI z_7~#o!=5<~-~LAR(36AsW;Bl0s14|1v2Ezi!B+DNVw0rH2UK<`dCLNPclaRCYmX#} z=ge#lrqIf;$pz6bw=OH+)#=5WQ)nte$bJ)7(D^97cShnP)sGG%RS1J-Tyw=-Q%+{L}!+c?W|Te|#a=v-Vt zAB4xSx)5BEq1cT;y4bvIM@mUQ__>RP>fsrPQ#kq`HM z-M4o=X&Y(pUh2G?I@eQYW4ip?zRrE*zn8y#hq(vw;dFU?HeEjZ&$vJNK4|;i zTHYRdUDvwZ@Yau!BJ|gHp}ie=+e@MtI#1tAJRPs0oi|nK`&&MJ4e771(zn^ucNO%# z!qIohtZehFpd88Ui3E9^Z5_$FaL%zRLfHi~u&PtaPbLrC*`ZOb5{slS@JR|xx zQRV_i-+zL>si1s6^c^}LRrm1>tK9tNtd5ddy<1T>a5`J z8eqN&m}}t8>*38Rcyk53X@fT_YI&1>J^ud~Z)EqaK0CVO!t>)P@;O_L|GCPGuPE(m z($-h`pcqf?y26L-cu+*YEW_VL{8wRz^AWv^yGW4l<}9NHFXKw~GOl9nyAmDJUfY*L^yMeS-Bjdk4rSnj;`$rV z#fs$}TFhB%=smnR&3)7j56Cavi!6SMervC9=t}NiT1f0KJeru|8z51+hD9mTujG42 ztb6R&`DfTe$|Gm&RfXA_Gp;pu4K@k7S+)u5@v^>^!`x_R5p13xC9e68nNL&>z4lZ~ zVns!-t#Y;_^$vvl7Fs;C?zB=oxO9lV{q-*DiUxMq6?(0JPD{xz;O+=$*WDA7+1KmP zy*Je}6|Cnrtd|2p3y9YwPs!;2MX_5XEypVgdyiK&o^~3JX z;%tTHZk5s8Te&xjJMHb>L};V=Uv%0{zr%f(bAB9NBir(GpxfKDhc!(5;vMsl{2)44 z*;%B0jW?cczL0&Rcj3u%TakK0)bsw5INs05PK)|s-!<1*3b{M$Nk3o2@{AT8>9(yt zwlLOzv)gIIzUPhJfyWiv2~W)>^gl1#&6m~PTlBfYpK;vb@E+D0X5W#XJjPny*$8Ue z&*?SxQ>MCS$DG<*gvPRu@WJL+Ve^f-M@Ko?e)5Mdt1l;;Y_jgffUfvkCTb3)oc4~@ z2Y7s~(SkhIdr{wXUp;x2PTK)@*H!GX{;EIO+hV%g)!U-p-t5J0l3d7t+=~tQYR0YX zy1O~IRO6?N*>@Fq$h7P^Z{Jnc5q0*Rjh)ZUwsmc&`2pE6S)Uo%cEZW*J8ecCoB%U(-4WKXwnqw5pvW9@nG&v32=d+g)bV~-}e8#}Y1 z#5bPGh1Oaf8gz86dpPF5^*DMPYS`UBVR(V-8gTG7rN{L(N}GcWHrm`^xUN*%G}0L3 zhU?eBwShZ4bRRjkwb7sXd2j*xej)lE-Teb}_YbF`?-`Fn4Q|ZDY{r|w^^Q?+HQr2# zWYV8&*FJ#n3v=(3w<7Q2sinpFNx8Mm)!uH`evZnBr{Chdg{@&EPrztqE;zL__Kl#} zIMkX$V=Mc;y73nq2aJ^(AD(=7Ddtf5?&k4JyT8`{!e^nm^z3}*vX#tV+9wds(sj*K zPP4xd8(Z}_dY{7gfh|0L%I`0YC*!Ozv+7fL_gHx1Q>e#NdULn)D{8Kgo)5i`mT@ee zs?X}9w=ajBt`a}k-_1w5mw23Zz7M@?;+%2Z-}EhfBc`{=7jLB#{QVgBBi1i_2Ge=GlskU7>;I z9{gK{WKiBkpS6b7`FM0h-$RZDswWyS58M56HQ)O_1KD_s>-%k|>pSyArSGvh1OG>j zZ2W@pEj|ax@UP-;8s@&C8vbR@+~2g-=?Cv``UdNafvUd=`)jWGn|AZvwz2$8pK|wK z&i}9PZ#ocO+Gzf!!^DUcSc{rYUdWy<`q%6cbn&}l{ju>vo}UYCFAbe8nR*buNe6oU zy4(3cH3pTIVBA_By4Kg1uj!uH{ZOWB;k(L-_p-|@4c(=-Yi*!vOuyL!*i2FU-zMD! zdWp&_)&QQG-F=tiZK(G9|6J>QzS)SKF5A@k>wX-c>)tp&`==KF7@LDx^WSG_6`#z3 z;H(ANKeDvQC$n01`kDpE$?Q@=YyC_Vlccj;WBEsVlQ%Hu++Z+uLYy{$zO)t z4=#56VjdK|#H;D>su4QI=T?0qU2t{BfX6ZC{EVXiYX3}oHEp&>=UB`)&pDRywCU&G zFxKYJI0GVHM*Q4lFf^w{@=!fPa%$&6{A)p0@n(F7WzVUdPegYQ#pYCn z%Ol^e?4Q_J^W*Fyc&&3u_!g%Zmv-fK-aMGZS^-$arRh90-u`O(Hk~$XoKjXa(77jK zwir{JN^x8zBR9GA%(L@teL<|~q`Eb0bsZtvXde49W#ch{N;kOpOXS~|O~IPO$4(w- z%Dp`MFVyK4|H%sy;-oiv$#IZJB< zzrOJNeulQ0+w3kp&vT!r7%QJfJ@YwhZecBRVt}=ahZXOyx8n{0H!c^xKI85MI0QN` z|J3hfu^+1K#pKSz{EK>+qm+5HzD$309c8qGmcPk6a{h$&q(3D~8rL;zu3w|=KXkIE zGwTz8tuZ40$@aKIZIW(nA~UCL6W;s&9`>=tzzSEL<_;iiDt`yit54Uzm~F$_*W&P@ z@hR;?r-J9~TM{w<%Y)(To&SY#827)lXdF^!b=Al7V7NIdyS1+DJkf%9|E7R3>F)Q) z-Lm`W?k$g>T>Z~~e{%Kle?6HjcwGHG|9A1FqDc|NiuuguQnm!>1>eKGJKIv|3)jRwe7Qf5fEI+jNc5|8F z>DXNd%Ztp{vOT#AwN2mT(frNYt25*~$?-j@)n`R}mgbwB#P_n^2h8_TwgtPwjZ=Gn z0$T=uiui8t8xvCu7HQ&_?gANFhz$oG_U&bC>hRQSY`tY+^{xCuTMyg!afr#A zDg25`lP?p0O%Yh?ll))wvEs*Mzv%<1f5C1f?dU&C_e6HHKNoEALC{n-V4P-gJLOCB zh)-dBYRym^&l8&ioh?zozCA6EM&a#?^0j8Icv>I+sCScWf`()H;NSXV@I@~bprx&O zk*WBddGI3gtFs;!AG9u!odSQ%@2WXQX_fC$XsxBS3$&{E)mPaS_u z#ivf&E%K?;_KW(|saNr-$8fg0FQa$+9+k;${CgC!JTGUo70DI;0NKIjrvd(GKJvd6 zzbS(ak^gOzuV^1#utxQf|0?{it0Ou#$LDnRZKTW1CS`nSJeX}mxdeLSKg_=p%|F6x zRNc`of5cg=Rk&}ce_kIxU*dVWw+3IS-CM+(yS~l(d$R5YHvTToU2Oim#!rpD?R0hr zanf-c`|0MxBsK|tzVQ8?(ARnNlx{fl7GzYB^`JcJ|KId&FSP< z?MQy(`$9^)Pv0@+?knvZSRddgGQCcIIq8^CdqdE*FrkZl&9U0|ax&Z)$zF^0g=l|x zEEz@zARtKE)YIAydwnzV+V(5fTl`}6>c(6SpN0H)2iqBY@PzSJ zwbw@3o0VQ)t#bzpkV|4PJdbq$`m@}JVS3$SGsu52y-s_Ki_RLoPMXF5XDesR4{dUS zUphV}corzwzI9JBRm%I&9 zKPI3Bf25#`(6`{4?s@lZ?g4ftSwCX;1bzI7qJjo^_Yw?ZM|8 zmx~r|-X%V)E1%))Wf-vkukWyuFIsdz-?6-AT^Z9S@-4_O7|732Dd#BNvP}yYKpHsX!zCi3B<^udusV8L%DW3Nk&f_VM zG4>>51^+Jo(p7wq_C4Txc62t|(x#BMZ13#wtSC)!-(S~RK4>CaResi%Q|-?Lsni4i zK)TImU16{8y!81RKLK$5UiHk@kLuaDBHhDi`S(9~1{{aKC^)je1t)WUNp}nxF3gjK zhrlIK#YMi*JmqCa>swP=hxu<#iRSwIJy##u693A4^UeCyoO1ny4$P(WhhO$*jaT$d zXBI`T5PI>A;3u``r#=NuLH4u45r3NI9r+ZQm!A9s;UQY8%&H*!312_u>LWjvw>ik} z_4Scs#eJ#%J4n;I$jaOsWIyQZPjdBuPMmB&Etn0d-}YJ zG||U!5Ik@)TvtW7{)lyy-izXqWQHHN|f>Zyz$6Y8tv&&CGjEFD;)=S0e$+8MiVFjMsdd)tmVqD}W65G!&t z8lP1kdEB=gJrRJs=gPk)LrO{`a>TQl0vmW9LG( z{=iM~_etct{ipfp#o)r`>`(0e^e8UG(%640T3WQWj?!APKd`iDPpVn_6}wt2E~NR_ zhzmJH4Bt%PYMjj1US^Uwo2H=i({66iyN_e>_? z6kXC-`rSy6+I^Qb`H3iB_Mg=UUQPb08CL(zJ|DZTHh-$+zkz(=<@tVEoCaTRbyj(p z$Vm;%>;;yu`}0P}=@pjG-4s!NJx(X0eEAb9I3atd#c3aFO6Vk?owZqy(~@S(=bXUk zI6V>NYj4Zy*W+|ei`Ca0C!BOHT))wNL@eH>J=(+39*ovavSW+r2-yJWjp3R-ofnqP zyRv!8Zhw)oce}E8pF!C+SGMi6Wx><%1@GoWbq^`NuT+T2<@Vj%DNCB@(G@!nSAcI;p8O9|9zI6*83AKlqARa&Ht1XLkI&M43S7$lN#q}o z>H%{%@5k{YSY00WlT5?|BC$JS{^N)O8 zJlIq^#jo0EBnCpi0X9=fY2YS)XfIsp_@IgRnj4)%L{EDkvC4$3U9k!C<7ux_k9TWZ zFlR*lz#e3;e`8;QZ&4ady_4SpZ1(@>d0I5Wv{>yI`os)&u zjqpi4M$y_AdY1h^5}wD6~XvX+SQGEv^Oq`%DPLGv1$Cx(Y#W0?$qgYk~O>Wr?w zD;oI}kOT44r?EEoa$~%j6!~ITRnBU5loSuIyk>sGN%uEMhK&F4U2%1lc4EA~27IG3 zPDY@o*7jCb?Z?W#)|YkiB>p!i{h826*7t$0>T=d1|J%O2Xh<4oddd;*QOvNVIh>`Z zu=}^mZ)v_XX=(8?Y zUOoZ)9-QRW)oG2_F}n`C4INDzd(^J{V*}FJ=u7FsJI*tBHom=&!FWRZqOEk}KcEL? z2iE!+;<_W|M~6m=otAzNJJWgQ2=nI&_GR=h@}X=hJ*#tU;8$3XHs5_=A-}PGGFz`V z;UAX&`0iV6{z~{bE5RmDXM|e7F}!|T`reshEH()(yQZF9UI2Mm3yR{a#L$PW|q6UFCyMxsuTZW6tW`RoAW-sT2ijT_f>RCdkonOd{P&IiQct~Os| zWFM+;ehnU|4c5tOr=N2n(m(OC$jLBc>{{WyqaMDS*Q)beb-cvqE$$WK`y2C0KVV$^ zka3#gI~&>u)I8RL9Z~$|-r2>ggSPs4?FehN6!SrfeXrCK@)@hCOM^DWkP&CnhtDm0 zsdzlIE1zO7UVOv9RK8E;*09fbb-FFJB+(}Rq*?;>IKGaH(3j{5;FXKe6nN#vPQ~2E zWV&DdaPipCxd-}tzIY$u$NT5@J(`)@_lb7yhd_ooD@2)%ef!!s_U(s;kI?4FY41_^ z{=cNV&~ft9%Eza5DEBNywgvN+KNEVZzq;;Uo*iT6WuPzqg^gI=1$#rs9fZEJY<`vN_V_p(i=yZZ_vJGG+dK9pp|lw|Z-M*8G$V7wL@lZtWiv8?5(Zyq`;b)oGlI{?%_2W1Zi_=!<6b zg`PunMl(7?&yw$E^oEtSv0nAl)tn7)KS!~l?8&IV)I(?48P)a3?{%cL5X&+riuKkz z-*Sr5@wKXa;VSozkJa9Bx^2qyB+gDte9ez(x{uE`0rzMCTN#uv- z@JG3|<5|}%NaPLXUBLV(=adEWGRmz?Va#c3+uwc;(*MbZghT4{#T@^vrzx!G6pQtdDg0z=EKRy;U|` zkTrC~{n~q~q#;uwcP)n-)9()xTR)F|TPD7uTzCxmXOBjAp4vD5CP%hFe5}XqoVFR@ z&)hK5eok#Hdwd@4C$5IMPv@Qj&bDm)2jbDOKTStsd+N*rFt@WuVYZX(KgEbl9N%@6 zx%H#uJs>-vfG$Sg&==>6;60Jh8isiS*o&Wv=wap1tB0M9Z#E(Mzx$HN=i}QAWdnc* zF^@AShcmKHWaIwC0``p~S2)(c?u;uc!ulsAF{w2}x z;MvjyAJOA}-rnMDg%tcl*G4w8>QX*6->o@-@f^4*-_{@G316c(_#V>T%rU#w>=pbC zx|{M5XpUXnr+V^pTkH^YmhVCRxA_&EEH>coZGBta+T*u{kJdTNd4@A{s>iv<^M^cJ zdyyAXS9Vl=o#wk2ksje4Z>z~Aenk3W|N)ASX1Ah5KZg)X!wqW4`st$=dBOfZxDZF4`@za2E3Xz zM1R$;5HFaE*X6wb2mC_tGhD$B+#1wJvsLsyg}!5l8?8nw3yqa08$kS2Y=HR%^$eZm z5BvuDz}7n0Nd~vc*-_#%Wm?#8>7~5v)nYQWNHL?bYqTahn>!zBY@1{?rq;`qd{u^@ z@ExDpo^ap)vVJ0SW8tnlpw6_P*bxTD`kCy&FUNT%`X*UsO`>y8b3UeT07SNQslJ~o zWBsK3X#M;uG3mDNb0XO}Sl!<{AiLxL6a}}kmuKg`PmmVdFFO!CcTx6PrALx} z@}+n^emiB$HDljdxh3hg-7coe(xv-XA#d1udiVC9Y;Eqo+B1>1^(+}zJiN**0!A2g zO$`%^8e}U*_*HGg`ZGHoKjEbMEnep9?Nr8-Zwnp7c#6ZU`ry0_nv7`-U~i5kZ}qmY z{8zg3WHEB1I$HNyU2xJF+k^dXjn&T@3mNZCS`3%zkHZ!JEAcJlOW%22xfD8C+>1-+ z?0=qlx}qyAc5)%(mi*#E8}r*GukzoAW}SzAG`+-p%6(J$>$TSJ4@#zkRUdt!dhs$^FTIm;;$?gt_qXUr z`O3b;JYC~^X|MV$;{4E9-G>kTBN{)(7k4hu(OLPrvrD?>S?>4qzEQvT;eDfv{Qf&M z(t1$-&+l@EnKiEY59Q}H{<*v&dGcjipRhr`rPwvu3F@onB>IQl5cL`T$678wO>{|8 zMsumkXl|`5^9b!O@^s-jWL}aCDW;?HeL{H(Qb?alo30)yR8y}Ga@j+#3 z<{euto!^+eD0p^H!Uko4G(RejH z>*w0|d>O+v?z{V{$xYO6-FNXB&X7u$M&fjWMx*+MnJ?3#8#L1z|CSe{8|BPCiQ%%( z(~Uf{PwMGLy7x2O;OVBaq8n{`-*DQ~t-gFDH_*DV^qcY*%imeMzaI0g)#-fs15B@C z+hPOTn9zHW>dODL5UulrNs*61I=5NnWK&IX^(J8lOz6@+%mbREnmO}Qqi^GUqK~>) z-OF(Tez>vCo+fj2KeiG;~2P<-M$X{}plR z6`Rz@##Vg#nJV9&jh}0;m-mU$xhzipi{dyI0a$o`IWwZm8T zVGYbl5zKg>y!|S@rg0=1=**7FGM@4?@x_Z01@-Vi<;=Gk?c*DGya z8u`IArZp#PzEmCUqko9AR)*JH;NM&QUL&?{q$``?1!Y6>6T1@AklQ_hmv7QF9=@mZ z@;py=I!|kocps#@98DU;&-c=&xbDEG{eruSBwyIzc3083(e5hx>(ks-6q7^fz}Rdw zJ8wQT6fIwtpfA9`%gKD0fF8)I^^^Vd<6JNe-D6<#z76AlA6Dhd|RGaztQMAKB8;m7<4`C zbdGei@JiqdG5o0K=^OW9KKs3qheVTuWALG#Ci|f0_mRcXXreqWbTyi&eVt2F+vCP} z<&V-%g(kd@#iJ@sV*5TZ9gE!HZw}Cr*sI7`DiQfdTj*bEynDuWOJP@AnMpiPa?j}6 z6na+i1jH4TJB1XZtZG+q8Zit+nD1erfiK%pYTM70}+($awE)WY3O9 z_RP8=rTr+C$G%Om=FqeDqvrFcdkVU-4gcW#&;lDywz-vELqFC;>*JOstAN4Ylwh>5 z57pwzp#M`Bxo5^K?L>9am$VZ-qcc+IT-l%|v;4{yy+Sf0Jb>-(dF`R_{cG%0#-gn^ ztK;{{y77x`*LO)wR;N-&_#2MkqS#u~EtFg7eFo`x@82-B3COJmi;( z#&AqtV|)|O3?_a0=2xQr;NOqNBzo|$*Mse@PpoYWKc@%%-T4)~$e%7;kq4uV<{j|_ z-1Mt7%{kJ&|3U1B;Y%IEmo{{F{>!0*|K@@0?|6In*U?b(-*NUQ{CKzcdq*SXoglAb z+s5X=`1~hazUgpLd%{J&u0cmT>jz^btlR+(4|spT(~EIo{g5o+|E(#<`@O#0tXMhp zUQIdP-{s5At(I#O;+?R%_aIeUAN?vfr-9%D-1E7-TRV>#=9D9?0GEH1o$Uhj`$wd(i0L-xGI!+rf7 z++WhQj&uA`+{!Px@6Fz_?Rz&NBkcLF)3?M1W_IP*KsSxO-^l*=D7KI6x6|4_pZq0k zpEINpcBb`-J7L=@{G|Wl=jmbtJdHGt7Vx*j(J1(h(x~b;FuUUn`_%Jm_DTI2OeTAO z$MxwejFsOQ-}}|4-(1{-&RU|s7)y+&Y5ZdQooU>|Gnz|m?s-`ID8F{xgLFj?`bD}% zYrtP6j^ho#Mt}DH7wnI|m-DOgXZvrUKmHD-X68}k4di3j`mC^$XKZu-ZHCRnOhx{ej?!&B+x^=sxpNs9Ywuc; z?M=>Q9YjoXKXEI`jkK|`bS>rn2X`rSC!_N&-N_B4Zzyf7umA9ptnPj;-iR-vgZ0T` zY@gP2`8AZYJ~7v_AHuvE$^P4ci5yzoV=)=n{Z>uj(WGw-&J4;gr|&iR{T=WZ0RJlB zUk&^Pz+adyUkH4SCxgo#=SJXSTj2i#Hv60&_PN0OB=j1fzu&a@gLM8Jqi=MNna5Fd zzp#ex)j3u%qI~NWn+Y6RqdOi~i{`DI{bo+pnnk|Zkojy7yI*N9gAdVpuF>a7o3r8P ze)weTP2#Qbm6-nmoMfk#L^r#$fVR1#OJ{gYMy$`+p}GeQe?;eCwI1KEz(ngWKM07>p(7wG}{nW5@*pIQlYSx~yb(Z|E z__B14p7XBUs|gMM0@~NCPhz%<=qXx>Ze|~e#pOU9Z!ID*OO;Tyg z;h^s~@IB?(KDLkfIB#vS2b}P<2EUN?2Dlr3jPrcE`XAw4N&B5>YzfaL_qsjD`u1+E zZ*M}>Uct$ym7h>;r$sQ;_j-Jy{kBTmx*yW|?QxC4kdM&kX@3|RH>eM`mW}#Q;mLka zUwEiFL}ypTPxZfmTnNtZGvixa z4-s7IsK3a9&bhHJvp5E$2egpyc0cvC7v#s~h0;IhI?X@Qi<(F95k=>-rH^)?2cXTl zjC0|X0*6Rvry4ZRYWzvJn6HXHg!Ex>3w0P9N$RL=-*3@Xbq<;yjm1A}z2Vk};jZMg z)TG9#VfPo;5z8~1I#UDcRb!0L=DTY%`R>|zoZUY=Tj(EW-<#n+UHh)b{{Hj%Zr%CN z?_+)27?Y!Zza_H)yt#WG9_;h<%WTBA@9DO|o{etk0{bpo{|5F^HyGbu=k!!gY19*( zPrLDxql`~`iBF?kE^yx+BY*3;(cSEU&fxN$-but=Yu>?+QcheElr5e3zzIIRjr0{R z{lQDK37@`%^h<*>bI5byXZU9CRp@YJuJBQ}UoZXi|FHKSP*L?>zwjv_RcRtkVGxln zy%#AeC@KmHDheVDMQPHp0fGgwFm|zvO0j@g0I>lo*cGrB2Cxi*3Kn2g;O?9`qoe=l zdEfip_kL@AYkkaGXU@sV-pMaJ$xcqPlkA5!qk2!-;&-5@T_B%bA)nnLUp=6ma)CC` z73LUW-xpNw*pk?Hs54h=A-=H?AM_v4_%Hu#qs{#I)PYYE!d3@=O|Z?H4(FiEguW`@ zUkCgR;Bo@L@!)3-XQbG}87aol{+ff`z7FVX175#O7i6UkvU1##>iL8XbqbXiC?BW{ zAsxd3{lYIlPJEq=WDIfQ5U1EB`Xsa9j5wcyewRT!8!f@U zj0ngc^dHcdi-J84tkax<>JHkMlWLPipxl5TIRJyMWO2-54+cLKEi|4+`do-dW^8IJNR z-4E>D(Hx>*&jDn!lm1_vXZ@FqI3NdYdap04&VmgkYB$i?tQ00S4D|=8wNmIk>Q}8n z_D|r?pM&|weq1`}PdX3!p^c^V7PN`2C_hj;!!Jh=UaJV?G3aR2-^!x%sXqm?MtYpj zhx9a>tNR3cn!*MC$d8@kX#Hz18i6re=$HPv&x;h4GlI60hB$SQ4nb`{e{WR^7rn+( z059~@WzkwJ)JLcKTQvSuet7~vs=a~m(Y!X=D<&G`12Uu5YyP>8OJIB%^5Jicf5-{? zc1TX^`283G*)8PD4&vm?t`*{b4|3EATL^N5v%L6nyo^~>>(>4Y+CrL^k}J@oIWi>M zzh(an^*d0Xla|5Xd?fJn13#57mmy!O|I>C-@S8wTKg@zUkIKs*GC=(vK^aK=PA}?< zOZ@Je|B?ghlTYT$N01)+=6o5U{UAZ#QhV1@@&o+>-*DD^f9S_#L7kw|@sBbmFvm-%D-Sx}$AI03TH;ExHI!FL&dzL@{61m5xcZ|Z=T{~qk^ zS*yVYpr7vlAzj-F-_uA|H~DE-0gRwKF|eb$0X7BDmeOt=s?Udbs5%8u*-CyD>mxg^v%$V2pvhw4K5L&#Im8R#4EA9aL4 zedWi)|NiFi`zFvggt-l>E#mJBOzA0W3u!(2LPt#V@v^9wK7DbEfWPZ`M0<8~Cdzz*#MYK05+5kaXF3@_=w7E2G9-_TL z(V{(5{s`BVrrko*?m)D)6s@};EedxmO`A^Bu0gal6s@BmEy8O_)5g-YiHP<(MQbid zi^4UeX#;865JY>8qSY0o6|-VN{`1PG7xYhk5ZzUZjv+`V19WQqatw5?h_0HVL+e+6 zrC$l?6lgkAptD4DRTQ11Ae}nUN%6}rjZq8HR#LP`H?dEH&M9@|QvE^r2D<__`_N`% zAQues659jUZMc5I1-hN;45q>zzLBuCu%P%1TuA zUVuaGLH-v%WrqOz@f`9;ZI&o}&x7u1gRvMc;z#mD&on=*8R50Vf2=DbwI1Z3#vj0X zE%;`Ewg}oI)Q=RELE~0v>>0ixWuWhqPCqXf_M-YiE_}BL<)(Ba>?4+MI>L(LSuV<> ztA_7g6vlEfFHt2F4&N>PCtvJvnoq_{R1@e(KAnmej2p@3SF6zBfW0;B6`g-t#R{#_ z45i0w3U#?HuXJFn zq80Y>DEOjmRgmjzRp6oomoKz&O0ahf+^dz!P&-jTg8!E}Rt0j(R{1WHr{ zX{hC&^8);^FWlk){*25tBul7#TL(&5YZ-;4Q>Zf#-y-Wt3As&OL55ae<)9h zzsi#*2c8iI&QhoH)*zk@-?Bcz#{uC}I3T_^fCGhruE~6P z!oFHp=rE{qB#$k26m*XOf4bgK{+b|vSz6wZhcJ!|WkDA58Ok7pRr!k+`~p&~k)IsI z#}E4tf8*3-G6Y1J9m(dOz!Y zqzBTl#SB`;1>h&jZxetXl?@K?AS`VEaomFthvOr_?Ii?bXF^=6j1#;v&ep54=eUey zaf+bNuC>yh?KKW)#&I8@ZwNG(R|I%nfX`Kk%hsr}XX~xBp95(}VRIT6SZmWZcvSg? zbD(l6(fGt{YMeM9bR43iWGtX3njns5h(jJ^DX1s-aU*#(r>nErDzv<8g}A5g@Zw~r zk7U`<@gEnW^Bm?W{wRMi{_{uqQ~Im?sbh=Phx}RoIEEk>RQ?3!JgD|Dz|k7{{VIPD zcBNqXG{K|Uo{1#~&BOE{lMYV8%T zFYzz3{^Y{FgvM<(;B2^DNY^`(+tfz#Wc|*C+uY{DjX<)_b>!}YIA!><2EO02R%Nk2 z(KuU3?n!8C#z30cK!fBNj^tSn;XWq+taELZAWu~mjEh6OY4+@T7oc(Be*Hnqb3e$l z8u)5RF1w}Dp52yazx?0i3B1j~>-@Jo=`eZn9Km8gr*T%0+*h~xbxD;KLWld5gt45I z5uj&aZh+Q@{60?;UEV_}-K11T=@+1-^0#_6npdzu&wPLCJ=7(RCG<@a=rzTbyuQhm z7+$^OAUD)C=;JLeh!=RL19f+vfZG6DjD-lejbZ;#{x}c{!yNiM{CQ2}w#F8xDhSZq zL*2I$a6=yl#VaO=V+znjVKdf)3^*zCtlfkJ+J7a-izd(}uyY|l^8U)lddSD>;VjM$ z$j5t-kGYVKc`n?Q{CwO2`M3r6c0fMff_$t`vzMUdjp{Uq9Kqsjf$x zxN87+I-FCx32;{c?kvE)$%Q+Ek9!l~UIctmfV&iM*QD9Mq}PB`xLqL4S%4e(nt?AD z;m&g8HqbN^{z;C59ee%2PK+H0;fDN$=QNTdoLjsG@Du@_K)@5?!ZqUKSp#^yfX@f; z90NS3)9lLy@sN;~bif0A&A^v}@T5C(i-E?9FGq-96wYk=TaJ{B!H?}h_HsO2U>t{c z9#-1F$s1@XS*I(pns(E&wk5ekkgQz*qw8O3%SCk^&WlfhwC#Yjxj@=nUASC02ba>F zDUdb|;M0P%ZGp7qrrEFjBW)m;rI0q@YX&|yl(wag++>=jjriv>TaRR|0^zFtg=Z7W zdqox}5%6RI9u>f&=E8l*$CC(nB!Eu}@T>tmo6_w41o2b@Z!F*ezGmPXh492Wa%Tb! z%me>XW)Je~DYQ{A&X%o%3sK{2t)wC~#=}levq$}RHVGI+T&VtgbGibHy_A;g4}yCd z?0?x&j$C^PzZlZWuMNVR?_#)eI{6*0ff1dXxJcy^Ok>A?0 zJ3TqCkN!FfOpm|EAIJ}V`~9i=NuJ#>3uEY+DF- z>|c1)klbWgXul!03gEE?JY$`?HGDiCfJYDb3;~Y<;89DnpC*W>8hG6S5AZbu-!O#7 z-I41GG#~hSgVxc4b($Ji$AxLVA;W^PMX(W}>$C=7(4xy_x-^_sO3PJ+;2yaN;k!C= z4I%tPkXF8)7hT4wlG`<#`8;J0Yb>x1a$3cF{;R@he{xA3{X?$(}fDh@9 zTQt7iG`{_S?;YR+`akgvq3k!<^?>g&AKzdWyOG9MjdN`gK3hlbwZHNG7j1PR)KzvV z-pej^>aE@M=XsHueEk7_+NvAsLWiIFoIkAb^V%1`&zqF^TaWPD^lC{~(>)qnF3weg zJY~aPLrq2apE~666{ri6ERH3Vkz1+u>|>C=A}20Gw|sm zjCycp3r%we;rxfbatO@7v3((2|G)4QA(@G@I9h<`7~t^*JpNAHQa&Cnz~c^l9)Kqg z@D!!mI||~d23`%o1ANWEHwfX;aO7G7&HqtfIb96;Z?qh3ac(VYFI*sg*c0oI@sV64 zM=@l72K_g{?E<)6ow%8N+-iVZ1NgK6_ZGmNn`$pBh?@l5U<1+we9gf3UJ>X&057%AKlCH8!H!&8 zX!khjz()dKJ@7rI`Ral1u_JdO;v*foyMYh(a-qg@P`IGai$w#FPJ}bukWKn-obL1C z`vnri}P(>sJLW#ajE`OT#|DCWn7SM9l(O({DlMJ{0|(1F>9)S4rxYnBPeh9 z*Do69%o^4z$Js(5aR0!Cb^^e8MJyE(0DO-zQy(7KRG zv_Gh`$;Kdm6kD*<7PF`u&S&JGezqcT+$PFyB+iFYC5o zpR*{Hx6fM$;BFy!xE~_iLwnYOonSsGPvOpYk*6`kJp^GMCV*K1Fe?CN1;DHbm=!6^ zU2T9_k1DfV{+gh8z>H+e0X%3vhXeSY!hBA@2aVI?H_n@aI6VL-oDW8|zbz!Pe<>E# zv8Ki}LXkZqN$WfjuonT@wo1Sq+GZUb!jr?x`SNYu0`^{dus5b5UfypCmn~k7hBQ{x#^n;fvBGy0h4nOTJ5-ACuvWkw z+CK_wHTE0pBEb3_^0X1`9$VmQ!zio=5LO8YTMDp(u10HR)c9Bd6NMEpBCP1!Pq3__ zIs5taxKbt9y!Tg&{M8=(w&fS(L;KGGj8Y83fc5+^|Lfl~5#H$>w5QgQQO~$N$h@Nt+9|Nx zhI-XxhuoWy8?9M~bp1L+T z(HhqYO_SRhakMeaKYMbpo8`vZ0kPu_3wBOcd*we|6_d<*sk*TfNO<#(EjFZ z4U7f$qR{7nbp#*>JqU{f{RY&QqO->SSX1S~vwcPWpy$hxZii=(nP?&376a})`&iVr z^XRP6zQX7kwU?86o$5uAE$7RmdQm5_!dCu!VXPC`ctV{25f&W|)n7n;lV5Q`dO%J* zduS-1fQc&s^Mlw3(W&!CC{AUQsrE=#lJLF>@|EE@UsYX5(N7c$-Y2$Pac{&M+!WT7I@YbcpfA0Y$EV%A@FP?@a!P)>@4s+LEw3k z!1GjrXK#V$IRejq0?!Kso`ZSMV3vd#pIrt^#4t=O>*krod%L0e!$53ccLYE5O#f1$ z+`~~nseKzF-J|^T??B=95I+P#dkt@R6rafFe);E850{870F=6#6-oYtIxy2A`=3_!-5zw z0YPC&`i!tRMr>$Qe0UIJ0h3|xz%XG1L=~vO`iy|UxcGo@8_Wp946uI-5{nFo z#0|Js;lG{&%F7-2e?;mlaTVi*w4OoAwwF@}LrK}^HMsF+1@ zF-&Hx;evp;z))kuu-Mpmrh$p6v6-=9LU`B$!v*nS;c;P+z!)AC7!U`E851}r0i$1I z{t?WGsF-B`=zz$uK#b>L{HA3D2ZV*k$1t%7>K%RakBo{91lS4wF-+cj`tBbT5Ep8!iZrmjt`4r1~DR;iIj&8_HUs_GMPcKjJPOXIBHtQSot%s9?zG$Pgw&J4`=dOgJ+V2>-_!L5U#& ziwzG8WYVyyXB087a8XVghIVXRKunwiGcpL`)@S_5z$07`6(0#{{1Y(7aIpX1r=}vY zGx{Zm*#BM*(ebgNG#d1119=ewdsr=)!{E7o*h7I=HiOLfl%01@LeA<}zkMKp<$U zfIucx-njUfNT|Hw%vh+Is6?1Bf@1(OQqvfC>J=VM)v&D2Y(pG3uGY(=Pv5{}Gi918N{Dcnr|fV?ay8Wnf}#W@%<+ zYGG!D8CaW`n3`Ie7@1mFnVVT!np+uJVR13>Oe{DcJeG+WCH;?65D^efp@+LaGcrEH zKR6PU@~`LLI%E-~;-7t(NR$3w0g`|%VkY~?MbR=u*g^xKP6tOK)fyQV4plwcKRPbP z9%CTN1<7&DSa=347tj3VVkR&nc_DyTY-m_;9NZ(AaRG=lI)<5GLf?(yo@j*rs3-I~ z(G>lep+9rZ{jHT-!cBH8>2Cz@csyy7cPo|7vld^%}|mEiwvO(9p&(k#OS-p|F{sv z#>Jqp6R^0bSafOYfR2JY*b1>Xvv1lv?ONa)&f$2@0Isr34f4aK5<2^k+Jk{X= zi-?a4Kruq4MzseEsUjEZNBO_xYP&r0sM&?EqMwUiaM%M7k*x1Av^#aX} zEsQOVt&FXK$k+t*lZly$xrv2|rHPe^HLw|*g32;AGc`B0Fts$bGPQ<)jLl5UOwG*9 z%*`y2ZZornppDH<%uUVB%+1X$%t5i4TSH{V7A6*;_$EvzlAt*ouBF(YFW zQ!{f5ODpSu1%W}#;E>R;g^R)?BBP=g$Hd0PCnP2%FQL8*V7wZG@k*+Hk2?3LpASnG z&`$`H#t8Vf62chp$_Oq;jJN{Cv%nKwq9f6l1@D=9p#RWEha?t&W#eES4!;f@!-qql z4Wbw+BnHo77&ag7sbZMWZRD1~27QH(i}lhN9tuX0heu%eC{=Bl3TxDQ412L1 zBWia*8h2uN1}s221NZxI{|a}}T^Lro8}57Hz8CKMV9+2RBZn4XSW*dwmz~Biw{sZ& z^BknPyL6^(76J2fc^cQluY+%N<|-NDX* zy7T5XrBh-3AmtuR-@z`Aa!b*77!RS`u)h&?hy53+I}BS;_o4J1&TgUHuvZ0jNAsvC zUPbz@MBnjIC?yQag`WO9cfSUYo}vYMi7`Akk^_1gO^1i%fZXbTx&P1j(I5~nJh)+w z=x^XRAb|l13`k%=0s|5lkidWh1|%>bfdL5&NMJw$0}>dJz<>k>BrqU>0SOF9U_b%` z5*U!cfCL64Fd%^e2@FVJKmr327?8k#1O_B9Ab|l13`k%=0s|5lkidWh1|%>bfdL5& zNMJw$0}>dJz<>k>BrqU>0SOF9U_b%`5*U!cfCL64Fd%^e2@FVJKmz~&mH_M|IAVw* zsXA<^l#+~)sG7=P1$jAX5oJl)K@!5^u$!P2VQoB|w71bU89hQq$idKdl!2bsoksI-#AL2tl#EX82AN{B>&;tqw{U9vr z{#s%NwU+@W!HwE0K>A1nYy$`Z#7tF0n-w@Nk^V9V?y1)guh@Vhsf_x(S_AIu<|T~} zgh+z&PM>4LwgsF_A&r`K-~m7O*qmMHS1@+z(37rBOX9}-a+tDy# z!nYwlcE?@n9?XjwX?MKtoX3sy54IZ4n#4TWOJp5S z8z|c5ZOq?Q<`G7CCoaY?S6tyVO-IW#fAKXrJGl zr`89m+WOqx4qK;&W-=dHM_Zfb$v-x)*?ZqgYDrJ&k!?9v zJo&&5m%JZu+Xf8dZOec;s_|a0|715Z}@n8EwnsUZ=S zDi{XmWW1gwgE_80n>35`O#}-6>RgvDTD5HNT+s9YN{a&Qr?

|9$8W#0jfXyOU4OuOwu6%AsAAEz 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%0D6)Qx(Vr+&ZahspM*SoMAB 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 qRNt5!&K max_size { + max_size = field_size + } + if !is_packed && alignment > max_alignment { + max_alignment = alignment + } + } + if is_packed { + size = max_size + align = 1 + } else { + size = round_up(max_size, max_alignment) + align = max_alignment + } + } else { + mut max_alignment := if is_packed { 1 } else { 0 } + mut total_size := 0 + for field in info.fields { + field_size, alignment := t.type_size(field.typ) + if is_packed { + total_size += field_size + } else { + if alignment > max_alignment { + max_alignment = alignment + } + total_size = round_up(total_size, alignment) + field_size + } + } + if is_packed { + size = total_size + align = 1 + } else { + size = round_up(total_size, max_alignment) + align = max_alignment + } + } + } + .string, .multi_return { mut max_alignment := 0 mut total_size := 0 - types := if mut sym.info is Struct { - sym.info.fields.map(it.typ) + types := if sym.kind == .string { + (sym.info as Struct).fields.map(it.typ) } else { (sym.info as MultiReturn).types } diff --git a/vlib/v/tests/sizeof_packed_struct_union_const_test.v b/vlib/v/tests/sizeof_packed_struct_union_const_test.v new file mode 100644 index 000000000..3357aa56e --- /dev/null +++ b/vlib/v/tests/sizeof_packed_struct_union_const_test.v @@ -0,0 +1,36 @@ +module main + +@[packed] +struct DataRecord { + n_seq1 u8 + n_seq2 u8 + n_firstdata_a i32 + n_firstdata_b i32 + n_firstdata_c i32 + n_firstdata_d i32 +} + +const data_record_size = sizeof(DataRecord) + +@[packed] +union DataUnion { + data_struct DataRecord + data_bytes [data_record_size]u8 +} + +const union_record_size = sizeof(DataUnion) + +fn test_sizeof_on_packed_struct_in_union() { + assert data_record_size == 18 + assert sizeof(DataRecord) == 18 + assert union_record_size == 18 + assert sizeof(DataUnion) == 18 + + mut union_record := DataUnion{} + assert sizeof(union_record) == 18 + unsafe { + assert sizeof(union_record.data_struct) == 18 + assert sizeof(union_record.data_bytes) == 18 + assert sizeof(union_record.data_struct) == data_record_size + } +} -- 2.39.5