From 26905083dc31a761c3ff028ba8d055bb463de339 Mon Sep 17 00:00:00 2001 From: Souma <101255979+5ouma@users.noreply.github.com> Date: Fri, 8 Nov 2024 18:19:16 +0900 Subject: [PATCH] test(component): Add bio unit test Check whether the component is rendered as expected. --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ .gitignore | 2 ++ bun.lockb | Bin 189153 -> 212758 bytes package.json | 8 ++++++-- src/components/Bio/Bio.test.ts | 18 ++++++++++++++++++ vitest.config.ts | 10 ++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/components/Bio/Bio.test.ts create mode 100644 vitest.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 217fb26..0a33165 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,31 @@ jobs: - name: ๐๏ธ Biome Check run: bun run check:biome + test: + name: ๐งช Test + runs-on: Ubuntu-Latest + + steps: + - name: ๐ Checkout Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: ๐ Setup Bun with Cache + uses: ./.github/actions/setup-bun-with-cache + + - name: ๐งช Run Tests + run: bun run test:cov + + - name: โ๏ธ Upload Coverage + uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + - name: โ๏ธ Upload Test Results + if: ${{ !cancelled() }} + uses: codecov/test-results-action@9739113ad922ea0a9abb4b2c0f8bf6a4aa8ef820 # v1.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + build-check: name: ๐ ๏ธ Build Check runs-on: Ubuntu-Latest diff --git a/.gitignore b/.gitignore index ddce69b..f73f2bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ dist/ .astro/ +coverage/ +junit.xml diff --git a/bun.lockb b/bun.lockb index 67986d07f0dfb638a9c5ada08677cdffcacfebf4..94591fff84ed97f5fa9d3a4af94c2208f936d4ef 100755 GIT binary patch delta 42856 zcmeFacUTll_bxg;Fv5rks0hP|h@cn{B_kl9VnkF_6jW4_h>`@%;$V)LdTWV-h&kt+ zbIutRbIxI#(|K11!0*$2&hOsy-22b&hc$1lRjaC2ty)#xJ>5gyIb<~RN13Tkwbph` z8|S^f=jo$YN-t`@quOA-v$2Usyx+bXaN2&{`x9-l#`x(e=rB`G3#+UPHc|>)@ke7M zODhzak!k6v$w;U5icC!bF3?vfszN>zSOpjZv;j5+RtDCP&<JP^{uP?31iT>OHlP*w ze4r(80?<N-L^=``f!!o*0W=5iCSes|1@L7g`~-`Me*`oGRx?s4On~WW3Gq=d^akV* zWv0a@_K!_fD58@Sk^zdSG71I$GPmNREU>h(LZKtY)eumRLxGTGjza~uz*i_l`D0K! z@h+xfPpbgSfv*6h3X@?4b)W!9^~9z{M<ztZ#72Rq`dS0Y;6^~wH$piza8P7|E+IZG zT_IZ<hla?d{?M)pjDwlvLQ}}`msuAds3UU`+(Q-EfJa@Kz0=SnjBN-jG~mAiwZQv8 z3t%k?zkwmoYB|x6X_o$?;zKk<mU2=<aS6#$kqK!E^r2rIDo#wp2aa~grwRgq<bikm zI;BPZktj_O5DcUdb_dc3C&Q0qPE=%CY#k3bMMsJE15*A#p3}2v;ej4g+oORLH?@G| zr5>n~v}RNh^H;)X>TFZUsg-_7@jc^XV-$$eesR4NiamU!UR_<jojAB1fi!l0K&oXd zkV+l07hRbe8y7neJxYR{Y>Whw6<4c?E*?A}K0O+>uBa~dG}J-VYXB6if*fAW91f(h zO&0ZZnc+1Rit-S&0a7ry0ck9T*AiWqAYlg}RW!Y}Sb;V4XspbD)cpvl;TBQ@u0U!q zIy$*uQo2In1~<?UysRT)m=kqOr^sxD1XYk4n;tt5iq-3iezO9Sd^eChV_Q$`kpYlA z^BPDVa6rX`S|I5ka25^S<)To)NtyXT3QAWXh9<M3n`l4^cxN31aY(3vhup=A(}869 z3W=Wpr0Em^q#g$XX$Z2s#EKJul;2k3>jO!zs)Q;a1&SBSk%3wtvAy<aS4U%E2FuCy zYG1MEQ9v@_8jyzOBoHB*`4$DK;!Hny3D_M-4L1T(1J*!<L+1AeVoxstYk<Fxa#a3q zLs9QEklJ0>NYPZtSPwxZ2<8B(fuTS|b*4?A7z?w2RDi228u$^dk-@{8h_3&{hm^9= zJpf1Mo&}l%do+_m8%WwOftJ8KC{5iv4J7?tKw2fbwGhj-1X63urF<PH)>8}9kmMC5 z)B{ra*+GIoqcUTlNRf~Q0pT0)<$!~eV=!|RidzyN7c6!&1W1PXNO(%h-`H9#AD>od zKw5%A;n_xPXa(QGz$RoTw8-2XAkFVApb4-qki0Bg(Fr_R5d@@R_m^-$ulVR*by5<~ zv=j9m`E3RcW|<vCC)u_aqkS0v#=t^-B~;{2@@9rMx(Db3Ia2CyW>jiqbZnYJv9y!q zU?5o#5GDp#iqwLu)Utzwra+oeDha=!UgFDj7JH-*q<Z?qC&koB?x|QU@{KY*x`<u6 zE*WwjNHgb{go&}Kaj`B6MQm5GLO76CW`$*hXkaM+#?V5O3y#LETQ|`$%Yo#;CcLfM z#_WA}v5l0}<iwQpG{s;(L~WsQj}%*~0VJoU)Jcd>j89j*=7*~tbmuX?6t_EpG@y$m zoGRg939<SLkr@J{NNONqO$p5<<Rp9%E$S6Wcu2zaK<YuBh%T9vB*7pF<ACL$5Gr9~ z37sXh;loSYa1Q*S(sgy)62-0=B#BN6mM|M~ikq9@$=C}(8l`WL6RwtUkyL)Fgwees z6Z&94#!7q!kfKJeuXA6~SyFwaGm9GLosB$o=KaM*;&VT7O}GWLLh=1TOvub-KwAAK z0<j!q#sTet&45*aH6?i|pdI-8>EgA)At0?OizOTfr1A+sT6=;;dFf1NNl=l0V`QVt z$`FHN1dw{21gua3dw?$sz5|fF)e=a(&BV%1^7B9{mz)%v9-kPi2+0)X{o~VPaV4V| zJY1S9k?Fl+;kD>U3=xh5$WdOG*#-$?RNxIX2foh~D@;i4mqG=)LQcy-T_81-9-lNQ zEoG3x7CaeHUP25@JXM^6hWbY);8G<vrA}<$gx90Qa(93<3lz|&*zy@ehT;5}79SU% z)H7K@6{jR8Cp?D%H0jdPW9q~v^;g^hPYrvca+1FuD;jhUNQPeoQpITrk!iR<Q1pz6 zPX#DWj}!IB07)+$NHObxJThSa1b7tQ%d9d{RE!2vMO%T?Ghu2&IeC&e>$(HU6Si5R zLBc|Z{P?ukf#j*)kW={vlchNfPt@rXJE#N7Q3vG9%*6Pl_>{=Bv>?cJ)T1j?#EOpt z$x?a7$TLCa<p|$9O*BxRF=b&e^=v(QL<WupQV*;1qF%4av^qT#BI6Px`^46PcT$m0 zLyh%PCj`}O2<Xfe38bYT@hVu{dWINu@P^=#F*C(E(g&!8UOOPo6>lJwuPUJtkk+gB zC|?nHOF~p5)H5hDH7*V5)7i+S2KQu(u8U5H??+L@2N+xG(jlZ;59Wv=zYIvNF3c5Y z+;|}I8Nf0?hJ12^Wu7>NQgFqU9v_=JC^9jDT0ReXY2@z$Quj6a;tZAR$pKH}J|Fq0 zSC_eBzF6@L2xwdql4FDri|pN>>Qn4nAo_U~kmhVp+@jU#ml{78JOx4$45|t22&9f& zSR^h52Z59y06DqGNitjuq;cD}gbc*guvjV%=pqQH0ofqgBe98zv6$nE)Mes0L;$I0 z)1gllWiA&R><y%bN}~aC_xKg!n)iK<*s+H|8ZX%+f+w0luoD^7@Q77n!L#70BH4wq zXY5vs`RkESE)G~DRy=>s1}l>fM!E*)+{QXLDc5`dz}q`cwEEu9Y2*(3@T#{hUhXXQ zqu)~#zs)PJdW{-d<zRr}{MxHN`L!wdQTyGiel7XD<`zq%;v2Lw8~AjA#es_U?dBif z!uM&BY~wYu^`)dyRoZv#mo@3mna$tpjtJ6?tRC|4b<o|`HACaO>qZ}J(D7lwz3^65 zd=E4Uu{!#ZJ-4s7aZ}yi%|nNeD|=b5yXM_Rla&oBRkvD`(Z~IDDZlZt(^WN0bm9Jb zr`YSMmWo?%M@IGW`jl01V1;7?d}69}U6(TE(Tm&7#t*T+?X{dY)i&3~ow?}kdFs)D z+%=#6W<9R&wNc*f7V`3CO8B0as+^lIYIF*@7##8T*qxr8vR+z+w{Eh$%;g_H8((tM zlq;9e!OrAj+hGYiZ>-y}@?_%Vj|<woZMxL4)3x^Ho?ZzszctHyk6}jXC!MVQ=S})@ zK5fsBOYMBsqfNUeB#h#6ULVXz$+>b;cOk9R)Qsp^-UIhqRV%fldym^o2mMHPou_R$ zclq>Z70u6&4!!W)esHpBc<Z|R=WC81s37y-6S%c0RRgbuANFYXwB_gL&tp1=7W(cD zJo_+W#izd8*I(ZqwBY{aUR^g2$#`OOw9MHi2cn}-IlN2dZ}i%39CrOU|GnQ+x3g8B z4VY7Uz_w#O51kn}F@0D0=U=j-Q--yT9G7$KTa@BUqn{Rk@nPD`4Ue_;lw3HksqD|q z;KT8`jL*jBA-<rpzsgaCa}r-z*+)GEsYt{Q$J@5_(g)L>#Hu!><kV`UA_SR{fkM%R zQe00yyNbVRANVjn7up&_g`$IyN<^xiklKS(TOnnlmQ&r4YAwiC6{Wr+)k=^xLkx>4 zz9@AIsiu5xRbNA_<$i*lkyE_*0y}?hA+NFbSHFVX4RQnCwz4N@$7kF7b4h#wJ`eMn zYW|!#ACAxVd^SF(@CEoh$7`zlbNPIDb${g&6W*%2pQ<g^?{2(xbsuguuW|6_{^rB+ zIhxOQ@K-&@)b-_a9elVNyrzaf*Mkqo=K?+(pMUcOHT=~+nDjVJW~%sn2TyfBa30|F z1a1X5GOrY$Z|AAH1+E7lQQb!siTT}=T2viDs<V)?#Uc_Qq#}_D<gFci)T@!Ay7hV6 z`kt!C;2H_?Xsib=Vk_g}j@tfQMPB3R&-LQN9sO17v8=S@t#!VfC4bG)Pt^(QptsQO zN~FSsHZ(Ye_)=Y}P^5%*5hxlbf9@0?j?bTbHa=_f1y26zzPMCth1QgU6}!OsQEl8; zKD(~Jx{+42Mak#ed#cjG3BFXFN2;UHR*gy&73i&cFjAd`n(}LVsxN{gUm^JFdn!v? z^PQdj)LpC<iZ&3c_&ZLX+!(&V*`M3TYh3)*pKxVIoi4@O+Iy-S+rSy%^m(dkKDa1> zLse@1Dhfq?aC(Af18`wNxjWUM369F47HHlF*BqQm;2dpn=~cvy1Lq0Oh|jO$sXhUY zh7wMw;i>)!E&!Z9f5+KV<zE$fd~R(YbsD80=LGo@L2hmDqrQ$*J)tzLRT|mxRvvz; zHFm-nc=)KFAw^B;@pmeFs;lDCmt3GG7pVGz>%d!k_;45ba8G~EiqH1+SGB4p_|(Hk zH5Vyw%2z)@s-;kl9JC8}^P<62=NoV|hA<ctC5hM6_g5cv5FMi=W7Sn^pdDyn93#98 z!L$VfFFAUu4}uE@XDswRp(ds=IMHX@!TExN>G19caNWQOp`xBy3q}@kkALC3YnN<% zF*s^ZEcXE%IRJqHUpH|SM^i9eH4I!U-nzbz>Nrwug_Knt!A15yswAY`_`+&Fs`*G^ zIl-7HoW!o9FQ_dJTvOC7PN`Mk>hm;050N5wsf9@Js4K>WprsxLP8@BDnPcE+Ey9|E zu=TFTTh;ed|Ao<|&=CqKzt`ihRr6E(J1Z28Aw&dWX&3>np}<is*TGR#!rh49+X(C= zfup?Eu2?9FxYgi#f#U?t8ZeRuQWz$EFcYY|>K{lIuN1f3VT~a7!3672RMix4WToil zXW)7laiIvnjxwiO0j{%9!!oau#;7r`ip!*dD>n23xS|@=HDOLMrvn!y*UsJHvzz#H z_IyDTe|4CTIP{{cmx7~k5;+Z$Ex;KGgEA1D*q2BI<qL4F1x=cQJ`HHiEOho!>yV;$ zu>!aBGQ>cogAqgA%D<%XqrizKQTRUums+G5hT$fki{<u$8z^%sFAO4<=lVYCpGXyT zN*&p#D26+D8G;E!5phQAAqtB96b-J(GpcRidJ3NQMgf{U;#67*j;4e-&Ax#nPm~s> zS(7HBmxK^hPX>qPXuXK^(noN^5eSKvNFgc^r+474Vc;;5<XCW<!IAR}1;^?)6X&U+ zP<awKG93+L8CegG21L{>)m)5Pad^6cqX7}u()Hkq21HHPwnUz|KBs}Bl|bl>>JT__ z=9)vLwJ`spk)l?`&|CtJI*-zrIUgkst18x*W<lZ%#tGNSQ@tOY82B`gzJViG2(yaw z<HJMzxj}q3J`eK+_<YZ6+WB+C_;7rl;<NFo<qO*Rt9rrk#zOe)LyBq;S8zQnLs(A` zRxOdD-U%lw)huvWbP)sRk;2@kaD#1180{ozk!|(Bd4LnVh07*QsK0tCWC$mk&9Pp5 zHY83VV$X$hi8>V=wJ)5zxQ%>xM_lDVMk|N8;Ej54B-J3)s$$^01WO8$A`dEPom08D zmn}?2iY!F^)jYXXye7<FZH8eJEhAYoJ{z(LkkLq^hxVRy{S@x6RE6@L!~N7fLS=PY zLT46nG;!{NqvcQxi7E(e;>4)!22Kn*nxiwpdGLi!KI)T5xj+kpUBi?6!H0M8S9^C7 z2NFYP=c!HyN5Lze!q<Z%(+mU$d;=#2D1}3dFtMCC7e<1kJYkr)BfKWUU#$)o9VXV* z0vuT=ET`O9z5p7BB^mmFkgwWVT>OPP)V;wK)u`SH&I6?p^0?Z0OL@X%YurT~Hicl} zXmDh&ijRba`@ngNHo<#FT}4h$$V&l7{p9#a_;MjQ(R;MQ-33Q&NmfOOb;3Umo?JIR zJkp<A%V$UWtL`BOey!}wYoh$sy}QW)Mq{-N9OgRp7Crk34(l9E4_wj&cNa%T4BgQZ zhaTWsbr*4buA`4iiG`~XU+9S1WBgU4z~OqhijR6PQZ$C5SKopoTg4^BFH-Cyu6r>J z27;rI#w8uRu^pV~L5hj5;QZ+NT3tU%?kz<XzTg!iN6AOVdg)V^a1s8PFX-v7dJ;pc zMqy7Mm1iuS<ta6?D0QYNrR^!_#v#>G&|8O8b0PJ)DAh1dmW?k;ohwRda3T;(L>8r% z6{X%F)l{@4UQT5cr4AIO)V+mJfu+GkscA*2OGPP7A4yLgffPAPys_ZHiGe~P`W76{ z@wg(RRnIj+9C9@undW5(h7^T`RJD#cS{}Fue0Y+-T9YV_8e%HSQynC6;;8KhM{z1% z0+}VrbB@NNlf+>}eY_081V9l}4k7jy92PZ%7%o@UjgrL>E6wM7da8$mqkt|YoP+jA zoUk}>-+4`6f0b7X8Wq+rdcaNrC0zNd7m^&Dc;2}Q&KI0;YE)VEMf-d%uJ`&Pg_{hl z!$**!mPCD3s;G~45poSBP6$BUQ)H+4a|ihXeA@Dwbbs6@ho}3i=cb8{!^Fg$#~r>P z-CyO>U%2T__fcgb70wqT^$@90A>}hb&Yg)=dqMUDDcmqaujxR1O(~?-AQdU3Ob5xi ziAco>vWrN?3aR>oh1+hFomG_jh?H1ghas{BtB}HtI`qm6m1VI=bt0L1CsOqUKjyo6 z8A^<>YN#t^h^Hq*T0>Mh;F|K*xKy}{lsHUu`B`OH$pKA~IO$Rd9Ib{zbSd?9{Oloq z>Oh_7ZE?|`431RbZ3IpsII3DayJ<7Um=+i7?%*U%jM6G_V&LY3+do_!e;5w#8#sy$ zER&9&#!e#?in`!RDHIBv64Gk(rbE<*5c)zW7RUxi;UjVvz_l#mtVfC_VSUGmvI{sD zKElyQorP3Dk=7}2H2s7cRC=R?B?z|@^^q!Wr{6E!I&h-vY5o36WrP~YtIngv6%ErF zQ#KwPxdpXjB$j}~B7)nN7f4}g!#Of=jMxLL$Iu@JuDGs^;Ji>;ydZimX=1I^d8(_A z6*aM{PxDlF1xM`&mov)QV|l9#Kb2yfLeYS?&hSw+K+01{@kselN__<>X&z$y)Z@i2 z;e;3Csjd%>+$x^fvcNSGIzf&+0}gjwaHMtux+BPG>`sFtx8gb!T+NAM4Qd{zAXO?j zq2ubqNCiSmI4v7nO~P|@aHTQASgIT`!X4Cx5Oxq$sG<UJ&B0+wz_R0*CH52HfHNBp zj=BJkjPf!pVrUpXf)i~6r)oKwPHwb*OhSrW3b#3U8XpAbPfekHBg8S<uWYEco&q01 zTAGi<+7<?mN*GW~s;7b@&tUcN^fZ11jy!|nD1XjcEMIe~sDtT;Aw4Z|;#@GCCUyYx z1l?&0j%tHuvKM6qfPvG|&}newDB&_sU2eKq3~M%g(iR+PB4(UCji-VWJOm@))@il* zwvE+>5VnR2>}>00$cuG}3;95B)FC(=j#~Q*_ZVC|p%}H}{a4XUK}QCI3qv043-MH+ z2PfKxD-LDF8GL7*pR)4|el}p?4E~zVPqkpCuxjaiRNs)oT8dN%Qz$}&)O@7c2&p$k zseoDd211Z!Ar&N~uF5HO{cLeu6#N}bfJxw7VU8IendGUy1x}j!xRa<kTONH1lVor% z&=gO9`QW6<+r?9T4xAVAgsWz?dXCIt<dp5^@Uutxsqf{8D*;@I0yeqg-5ch&ou~3} zF5h{ypVD<MKYO&Fdiq@PD+~o6S;JF#VlHnr#!nfT$9D!i%j0K{@l)H)6I;i^3J13b zM~e(rRGeXtfFtJ%k)rg>=Vy=gQ!US@lR)lRAGLbE=yBmTOc^|%?>x>=y#>MmltDbh zoR9PQYvcTs^%w9~<Negh3&iyk(G`iW;lNQuU@5|2R$VAB{uBhM;K&Q;qL-H;7@9h$ z65mU`1~-Ja9^<3xvxtV1Qm>HeAuIuH7K^&V3Z<F>E|fHs9~M*JRgIU>7(<{wjZ_O% zDqKCN9F}6<(U;81o=f>_ll;`HA)s!+INTMy1ShV&m<h^S%lO$@e(H(K5IKTM<Ty{& z4R9@ZYn%tGEmtU-K#s|P*_s2clfcng=^eNrp$x5Dek&-Z$eIO6b%k8~!uBV)Mtp>` zkFw!P{@N5j)zp=As?HtlqkfN6AQW-AfePxcqDBj+_^5cKa3hJ-Wuy?YQ+(8JtHt5N z{dqM{<(Sp{>}h_gqY#RUMr&{_Clm=r3ab%L15=Rlr<C&a8vfdJ?{GtfLP10aAr>b^ zGf+iP1c;9RN62UJHnz0PMS=*UKy(liA59Fui?^UxW)wX^gmEA`euqlP<3WUdK%}1l zqN5~|JP}k1lm;>ZjR2`YV?lJ3K%GJ#f{7qK&}0xD|0hTdO%b$zMXC?$ns5-3!81Sx zAk1x{ojf2NdE^MPY@xu4NCgnu!ch{*K*XVN5Rx8ZNjM0}AOw)m07hCk2syrRfsKx| zH;TevkV<Wm<b<TR1w`_#AUaB7Iq=6plz#$52O*U^CE*z$<(~!70n`Z!=fP0M1rT-T zGKdOZ1(APlf#~=hQn}ldiQ~5LDIyK@LlD*T7({wcKy(mNJI~R+knw_~I0&i0D-c!i z9%KX(lq95lCDr!7K{fJ?phv1@Bz;0^*hJz@_=1^6oRZI7Bu0EWNlr+~@)BPXDUd86 zr+Ta;J$k>CR4d_w@~Z$T-%i5nK<bYp5Pym~_@I8&B}PP@5O8h~Pz7GVGQdC}=`@k# zEhN4r32_ioG6)}Lz^*_l-$Rl|N*D#C2I<{0!k$1=V1FPT{W**TSv&{=svtwc;S!Dp zQvNs~{uJZsLqbYUzz6kkDv<PeAdNr{kQ$r|q=S&ww8cQ0VJm=?wUSmG608GKMO%QR zxCclE9RN}+9+&vjK+?Yeq=S$ezAVYFOL!Yd<?jROASAs<5<UeQgV%kO6bLE#N#Y5q z;h#V<$N=4;9;xv`29yPostJ%PE=QRXQp5DNA&D&UL3$b>b<l={#n|l^0Tr~96n=+P zk-d~pNQTq|lAK<1B&-d@pP~*v40z+&Vu*W?2*>{$q}n~DdP*X7-y3qu_W@Eb{3Sgg zLQE2ntf7=aNCg^6d`Toxpp@SPNPIK;kdVqXm-1Uk*iy<Tq+~0JZ>5wLn_vj2U~386 zND3v9^4m)C-y!v^gOpE5$&M0FNaZ_8d=b)OPqJ`)(13N56bPw6cL{q)azaW*N%Ck( zPDsgEN#0YEmqe;BPLdPS(C|~2+heh_&JiOaS;{6P^%RLOi58HLmE`{yQH+HDixtAm ze>RjlNI!F+fty5;Kn|HA_3WRJraXfl>CXmIMRTNbge0FU@xMdT&y(_tkRpMOA^~_( zoCl-|7fAUfk@6Qx@{&lWiM5iPkjih6c)|+ck4U_XIyv$G6YBoUA~J-|7iT3)2`PDA z;{OTBGZ!TNOOiez$uCPhp%wVoKz)USLh-khQ4&e?0UzYT&p?h3UTq^>3jdI_32Ex; zL4`ue07yLjRELg#LaL&yr1w8S@lv>)RFIGwv;fjs#9ERQQhzH;Xd}r>Vp-(Zft<4H zNqWu_x{weDA=T?8@m_kk{vyl0A<*L^)`)9|zm#1PNvokGFNq{?EXfI}diu!|iCW=< z%np|Lwi33dOdP*K@sc%EQVau91>sTwLgG71d`Toxgd`^<J^Bq69fUO1drJJDQCz$J zQIQ6y4=SR|hE%D-l1QR{lAMqX=`ZnwG-c`6VssEvq)nFi$vQbv0x3BSA9SspBgub< z)KD(+X-M)Uy^=_VFO=lJLo!6SR8sgSqz0Blk36srNDZ%-$`Mj>6F#Uy`kfp#yc<Y* zdni*vk{^_K33Y;i8aON!I3nRuAjywQ1xg|{bQ*HP^HM$`@t1*A?y4jwBtr@$o{-k2 zyMi3!e^1IFq~t?<P*gvc<b+hg3yDWk2rddRItcwi%|QR-n|iuz|K;xg-@AHv1joO3 z^@1Dzy{rHCuAUYj9RJ?c|9e+2MuG>O-*EgBQqYvVn<stZ=_K~=U42J*f;?1oH!pd# z6Wz;E`ro^H@yd9t<e2|2kOt)6yL$O1{@=U$fA8wWMe5(XdMpe${=KWGyZe9d>M0if z`L4e9|KP5EL-^VXBLfC{y-94VJ`k$5w|(}=>gT~T-f=dw4i2}l)E|}<f3S+*yAO-< z7Fabq(5f(h=Z|28%4_3~oF?yXJ$8QDPyNEO`V6+pm9x}MU%YG2)2g?J+H05kZu>hf zd1~dwoy-m#y=bxK>-RG6msKd+HMP3-utS}-!yI?Gn%+>&&5Zq6&gMhE2*a+Y2CSPZ zKB)X*@&ji=;fqS@DGvSp<qE?N8x{B(UN{=}?n7^G`=!BsHacF;a+}%dRoeDt^R3mM zSGHd_(u_K0m)^M3`K1YsuaBG1+w1$nve|=b%+FY2%p%-iUh@2E+t1__S{0UUGk(<i zzc_<;r<Di&o!0gpJpIMbH$y`7TYuH_&z~HabiU%fl~4BTJs4jr)qGE#{$0Ayyz$nr zfc~Wgrx4AfCyDZ*zjk5g?dOf{E*&-0t5&e}O~4uRp?2jB8fw>C_?tQhJlZrk#9)o- zVt-Amd#5e3-=)6Jbm|gS=l$iR)n$5>sd(gra}{Rn4)dH-9`(#n?2nlKZozrCaf|Q2 zXPKGKudCXhe(`yhMLXq;s!J9&@rvE2{(jZMVbqRe@2d>*O6>9JvFEIcuX;8LY2LJi zc_T}jSNCRG6}A4hde=iTny+_@{qk*i^Q{B?l_xTn_ZSoLwO7?$)xWuo`?*$ATd5lT zsj%Hyk2zIuPhPh@wDowycCX&9`PhZ+BJ=j$(JQyQ;KBVPzFq?lyMKLmE6@7PF#p4k z$F&`H{=?<dGan`GtNkse^L)!aTlcRUc`)30(1VK;117$$U>)r^$$iMQ66VqKSNYJt zp6a!*W3yQXi`xzT7Cz&8WQ7S){%)7rUi0`F*!rIB^9d)@HYJ62SgQG)7v&iIXkvz6 z`zck8<L=&SHeidwLN$I#X_n{#^KLAjb7kzKpMPnZj;pW#=}Xfy)@hl;X4l;OqW^@j z(6M1AKF#K4)^fg}+1sSnoPrv@`|rN&IG~mP(iIh|*7B_FKJ!iq^Tw7m?>4`#&jZCo zmmZ7QHN&?Pt{q$c{#Nzb9-+P``cHjU<-3jP^igTY&K=QQ&VOS&GI>qc2WI)vcdFfu zpWpHDniIb3XFD-#Pneh2sovY*m<yF_W*YB)Klt?2uDQWaPo?Chh1qTM&?WSZykPP& zamkS$qZ_Qd{3xm6y@KFb)`dRHbk8#k%0&;Hwc|wz^W>-1<U#$~bx&X1;ucWx<wn-= z{Pu|h+jrTz&L!x{I6u3H8R7BQzvVjw&N((=vM$l7x%JiVgV!ewIG|0|a~NXjHF-i| zd8W)SQ87LCmJj_hcgnYEoPTM>-65}kF6dLGUf&g`Myo1jy;~YM{OX{u7yPCggggt1 zGX3b+SZDvV{fR2Kt&*+`Ef{iX;OD?ojY2C2l&E(i{pSGr(C^i!r!Gma%L1cHeYa&g z4m>sAbF0;sn%cgDy112fZuTU%cA3l1clkEqY?J%@eP3evChpAV9cf3$6&~H&$aH#* z)&3<ao>bD{ovn}6tTZa9P0I;Su5BCkXh2MZZ@V9i8Sk||`g@bVbO#3dmFal;L)qNr zZlP(nE~GtJrRvaRqyArmjRLN&UcGwmq`UMsfjqtGzu3r!{@85)2d&eqOmDKp^TgA% zU0I7)XMZ~V{d?A=HII8(kDO9}>yq<73jKR`p4mIDS3tssm)j=n+P}%|O^l1m<+EnP z{RdR9PFgo6m#o-J-Q~02rQ1(4d<<eH_i~D~TGF?m@BLXzb$XfYTJRQ+Po)oa4PN;C z?!f@7oD&v<%bv*zIO@E@&tP1c4%N%tzf1qXMmBg#$$IU)b~Z7v88&aOdzfm1a?!*t zj?;DRv<nCAk35|@z2D)e%)ukp_dfRU?Mt8cS7(@xh}oNy`6%(2`wop`o3Ux0X_xg& zR7|fx$cO&umJj25M0D_U-Zf##aq9-BpBz6`erDF@_Tz5sOgFQe=5%vZz}fMej=dQ2 zVD{zL+dQkatLox;dwqoBQ^#)cHQv1I`L0C8v>wQZ{-rc^d3JU|*kPN+{x2Rr+WT&J zxkmcAex?=~xeu&|g%0Sn>z-Sc^6D)oZ}l;M@1Jhlsr1z$FNZvPd|z?BT~Pe+WR~TP zId*Jkde{ryn~lRAo3Ng5tY7L?EUfv_KD=Y0&y~yRfe9|>-1RySyf8FuRrP_DOwvnD zw%hokNre`9Zyc|9^;v2A@?{C@=#3Bg&=08?Ho;sQ__5TUn}K=HTpu5~J^F2>t9SdY z|9Nh<dA8HUDba1db)4d++3jeu+qiJX!d=6j?#R&7AEqBtdu_v5uZE_qfe*~PaQou! zMUz681<kIwedca^lcSmSRy8{n;ooc7{!Kl<@4314QvEaE_H}vw(IeT)xslryMayT$ z`t@l0=vBdlteKt13@%~bjFRTre<(BzG@8=2zE#cmaVgF>=O<Sj(EHfh)V0P>+dg@h zXE63osZ)_b6*b=<?riL~Vy<;vk0TrEovfdDsMq}N)m)p`JI!9eyjBTe+aKBa9hznT z<<;@P3Eie$oHec9pe~&Qb&X!UF)6dY^7YU6ed_c}tYY18dXmkqV~tIBb-7wS#zp&K z)}zsHFIZEc$kE7Hq$}5nE%oJ$*&$ahh|6YXZV-eufS{in1asIv5*YeHP|Y2JT-Mhe zf~_RDM1nkK>j6P8f6iD};qBC|?A((Mw^A-tvYI_^Zl4z0LJu`}$gox?Mh&oO794PD zV9>S$`kTtOn~+u*r!D`;=Cl6lqYv|2JbGQzvgZ2W5~k65Cm;F?JJ!nf^?tqSQr3g< z&i0=^Z?8RE?}MJ5aguSvMYA&M?930j7c*$VA<c&}w|rw2xpw9^7hLTZTd&Nxdxl%5 zmw7T|H!}{vz-kx%9XrhTaB0^gyNAAPS-JaV$E%lJ9>=fw`R?0?eRYOh%Gh7dYT<z< zcO6<D?zg$o*&HYP%QN=89$I~l@~o<}Wy1v}%%ik?=yyvo++|YP^@;MyBBLWKof<is zuOIq+;*|kiDqXtKxnrvy?tgdNe7TjiCTVY_3X5*nY*^6w<nHXr^XqmoXk$LAg5#<( zY!{h#bJX0nFUmW2+cByzAbZpE+LLB4YyD!f?SteBjbolRJG*GtCkJ+CV?ca{B2SyX z#d^}}zv8>-Tlp)i+1jc{kFH;G!Ch3+yyx0)ff4r4EFZtPsrdFStj;E7#_pWYog=P) z9)8`v@r>s_)pkdk4IH5{xjJX)%h!wBRK0s-P3?Jy^6ExDZ>n|GJ+I6X8^XM{O`8Yl zuAdk=;_cgy{&DRi%*ro%c)~6^%5Kil)gB{%&Zx7xVW%G#y6ks5AIOdP`EtK9Ynkod z&P`Q|Q%sws9v)#=!h1_fnpdZA-rMbaj~-TawG3Q(@>>kIZ{mo7+v-Gpb8K3#{=K82 zx#@>agzkN!xscm9_UrB~duAtZTJyxN)}r|J6~=uI*>Y$%vu*_QV%znpvDhg$_}kCj ztIm}#yFKJ|ZZmEBb8{9&W!BHFKF0g2df4cW>wetsytnsXlLxoFZEk$)=h1rgg2oLi zw5qjw?Di7oEh}lB{(8^W5$(IAy<)qn-Kw=EdUe&$D{Jl>ywb8_#px|4ZSH?%#0I^u zHNI+An{S+cNAHMB=g7Vb%#wNyU*6JfUun0acN5qtGB0pwE2q5JoczPqn%nQW$Ur-7 z4+HbX!*;EY8I!u|)~%J%!$Ui^w*0hw{`FSddcUY`_u3}U);MshZ7I9>mK*FVm-HUJ zy(S;}Q-}7s?hzk#rRU1R-etX?b^p+Bm354E@0%~`nzci=4jQzk+sW!F!I7Ha9vvfF zJy^B4-j#3JOBOpBPyQNp{kmtfo@H1@W0?2qRc=LX*CQF9Z{F^_V()=wBa;qVtTL## zBUUdz+s!biul19SD<ZCrI#F+pwspb1(U$2O^TS)QExiBnO5X-I(_Sp$y;UX6n_qvf zXUp8Lb?i1c*U6vkyQcBY6)dG*3&X$cRzE4*{a$$Y=_f6=t_ahtwye>5`lF*`4dx_O z7_)NN1MkIG$DiN3HSh_m6A1GnRvRDab|~m<&46|p+oSGQbE>hj*TWY%uiNdk%HB71 zYx)M0+L7<Kmo{FR6M6PVjL-5O`d1DNKh&+%@^H^OUB14jHzegXZ%s+_?9aN!9(q># zrbmaUm(dMehn6`o)aY1vQf9{Z#;P(SJ5AmHSJvW(d#h_|-y7$%qyGB=&zl|^yCisl zV)nWC3+FUGgIlmdGH>a<4MCl_;GU}6X5TV8O(|1;@`qZ9E`9$p%P~&-Sf+FOrEC3y z;x_eik2I;=w9=`mZi}udUK9)-vM%UZUR?K!oBNb7kKRO-4}Gur@J2Zwj(y12`#a*& z6y<=6<H{Xh)2-2^d`JJ(GPZNgS{d&!HGdeUnKyk%!kC6ZXS?=}t@v^A$`zlVH0U$W z^?q9ememC2eGQGtI{SA(xik6aR#a=Yy!X0q9h7wgZXZoH%;?5{4yv(Ix4A|mBXx~; zP3AA3*r?0yP?Hy-wQZd%FPitx;Z2)dzY^wcC~2P0(HmKduk`LTS$p>Eh1+HkJsSpp zK658JV1>_o`_&KFWW^k_347l5*SL;4GsW`it@``aU-xzG`Z6^!ao>&6$JX`6`L-!% z$yB~Ljcj5ezBrA1YKqgydZ)8tlQ*<IzU|4nauq+!+njJRJ$lswi*uhHHe6|6Bk`lp z=HwaEn%VQ0FBde+%W$3%vSHx{&GZ8Sifcx`BX<R>OV~><bjpW*<<!$^>sMKaeG{J= zJ6*Ah%X@S<WA?CU{ik7l%5Ir6zvZOfc`Wh4PEFp$D+^zrUUqK6!zG3{NBwQN@bWXo z4%4GEma^PtaHrjw@{u!g-VdB*UBT<;fcmSwZjESur*5^)Gw+NWeP>jY4Q(Gk^f~4` zr+4}?<NlrBIbCY|Gi;WpWuHguSB$lKS@mgH3G=p<G_P)Vy<T%HTD0)^nzd}tv56aI z9c$C8cg2Q*cN=Wl`($2X%aw7xf?h=@XhK?lduS5Ut+eNcroqF*2NrmZUD7|%`{$+O zEVwz$i%k!^>zdqAe@5fICvI%K(YtBprlI9STLr!gOPG0b<W-|y5y`JRj(LA}P+5o2 zp9|Gp?biM%n4qauHe$iPJqH$sWtK2+M@jQk&#Q-|Rv&ynreKU)gN|=9=eex^6w)A2 z|9s`PfoFE-hOXbXeoUtpLp96F_F8gg_*K`%`y964n6+j~K=jnV&2>l4JY?U=JWGdz zm-{4CiXP=y&3DL$A(07B=2U-n<Y#UR&l9UZ_%74Tj$V1C)uJU&Vhpq9sSdQ>HU8Lk zO?%_%MjJg{yvBX#;90`FT_w$1J~eZfCS(2e$(27&SU>DY?*5S7KhiJHw@O)g_ODkz z>XzyH@kOoc%D0+5nYVV|a{K1`=-TYbrS?aZtyQIKOva~YubZ(|Enr^xn(8)xyVr8N zoO&%jGqXyD-NucJl46_R$vpo4WlMg0bhXC@uWmFdH{*fNvKg-VDTi8d7s@ypdk^0e zXYN_<bE^g=%-d7aywL+X1kW_=@T^~Xo1c^PtA5ol=sBb2Udx~7jLM!~GB0`X;d)2L zkGFNwJSul2ckI4Z<^uyWc6-@R_PN=7!;d$Yq6Q|jh?X$V=Sck8?kmp4>RulRsrmWg z>a#P)++A>Z`{o0WpPVfBIb=FNG3sV${AKUhX$Ql*t>v?_&#ZOi*3>K&Sby351&t21 zE@9rjlIGd;nzX6V@b-y8gT~EXWYN5=_pt7siz1BcRA{XZ+N|2!X-!00b?>~Mnxoe) z?yTWvveNNwt%ZTFyVn?~-Cx7KWqi;uW*h|bjvMEGYO%GJV}Vij-Od%Ps*azho3W_w z#M9m$gAVpsY;kajZ<~k4v24WOfrqZtENz(a*T#@O-EXy+(EoV+9EZ-$>8)pZojy>~ zyz>=J-&7fBygO~z)Pa30T2)HWk2ky@=N#S0E~8Gzx>eft&#h+A<$9QAiTR3gUoMx? zA9uJq>to{?*v#ng{oI`Bf-P(p%wwZHu+ki2=jeiUU@Kg~x_d%!gbnxPI&nu?0l_im z>;*W^#uJ=icL+|h`t<>)*ffIE><Pgc*3cUjJ#K@F7I~whbL<TXX0?SN)CYnKEZ+x$ z<{=PlqE+q^;~JpkWfo3wg{>pF%G7><0v1Vdjcp^i&dmG)H&{GDA=^iAlW76~w^(0- z+w2&@9cJ4QaF-1txW~>B+-Ef#0Uog71P@sO!6W9}81R^lCwRi{5Ikk|0|C$2G=k^s z3Be22unFKL%O-fm-VnTIEt&$}uzZ5I>@&eT7SasxH(N&Vo^j0qA6PiSN4AdO6H~VU zd}fgZU)VN+ugt6^;2Vo4_|Enb{9u|Oz)#i}pj0T?@gT0Fl2fv(t$<1;8%(IDWakO> zm8@1UP^Dxe2ums1H9`X=b7>7URI&+#Y9+f%SX#-v+W?J}Y&u~XC3{L}tYnSa0?R7d zY(f(ydrN4l+|n|Hi&Db1A)y@4&bH^;;#Zpb=JJ0e$Nx2S>YXM&h)rh8I&e!w)jX~< zdlSkrmA(f5xsR=D&#j<x%(oL~sPfX{pXqJMPvuPXSdTbF*8k*#zinMZFhTz3z9mgq zv1M8m*No%xwiHBj$$Bck?)ZHGwSJGCjYi9P?eQuo@$_3!eU{J*vcf35zem=%Dh1)% z-ViRqZ>R(lmvAIhM@A>7CgCia!TKg}<yG5KQKqOKby8$fa(oPagu(Vv?s+)GglZfq z)MzXJ%hCmz;y)3j2epHT3-7jNZUP#UZYOF;r4P0|Th)PMqEp~-FEYSb{-2$tC*cPq z)Uv-I9+V|kITC1Eq7%L;=)@fS&Pq+X3j|#|{7MrqDrPznl6Z<B7XJNyorJW8`1z$7 ziHDHbR{m#`j(Ot$cqF6ce>`~uGQq8a8%s}_C;r#PW%IVoP30=;l@#pm$2IQ!KN{da zE5jKbjHXKa2;?AE%bewWbw7TJ2kaAmJ3@<QHR%OFaWxgglinnx<1-XUhg9gDK03Zg zGI}eqsvuD)zDhEBic?FHeUoJL(jlH)(4kX&mxT1rrK2EIDCoHW{)*l>B=Jv4MusFv z2GSc0<k`}oBuS=(fXdQKr6(y9hn^&(m(EWkO=5jPhOaB>XEZz*Dz6fR!vFhJ%pffs zr6idN(laHQfg~dj&`TzC7)mnwLDO(Sg7}eS^gFk<NK+?EOS1Av@6btB)3A`$^bYM5 zNmd3jN}7XGk)WQNNP6`CWtt>2m1Oj*hj~boH_RlNCDQIvee@F_Y6EME@a{joSgk8B z3F$5KSx8eaD@ZadGzwp&sh8%GtP;|HNflO<WY&<)fQ*c{kYtsSmS3l)-w@%C{tvS7 zo-gTJi87s{3K)97nhI2s3fm$bC^cd&$*MxuRFYMeWOk4>mt;1O;g9|)v)~1)!&cI( zhIA10NWZEitB!OtCHVq}og_R;Ka0W<W}##&&U4k+#q(SR_WU|$sH0b_<3PPY@gRCg z+a1&c6bXs~MT25Mu^@U?+XhqxWDBYavIE(JXo6J-Ie=<_YJzHk=>2*VkSXXgEV&B0 z2EtYubrpq3+yvbQ-2vSN-2>eRJperfJpw%jJy9~J3!IgTM$?pqUf>$Dc^9~P?BWHk zm97bdO+f?D%0SQ{&|uII&`{7Y5XEICXgFvDXe4M9Xf$XHXe@}{0jKxHX*MQ;Xa=T$ z`hwP?{&k==ppM`>f#P6TJpG=E-sX1#)dg9CG$1RG7E}&Y9%KMA1gSx#K}I0@{m5d_ z5>OfN#-Q&=)2}0rfR2KWfsTVtfN1)k0-XWTk7cHUrYk)Wz(~;ars;ee7Ty8f1>FPP z2R#6t0G$Mlht34hL}q-6>!cfv<QPygC<&ARN(A)*(Mmw?Q*{P)0d)n@@43=ZO@GiJ z&|uII&`?kYXc#CHG#nHH-FBe%pk?5fgXmQ@FOUc5BBD-l2|{NuE+AJ>b&vz7251}d zwu5$nc7k?+_JH<+_JQ_;4uOt==x4cfPEH1;fck=(vEa*Gkgf}oT|x9h_#@C`&=U|n zi@pIW1l<JP0-XSD2kiju1g!wA2GJrm5i|*u57Xv@7NgFEpfJc>K&~KKoIF6DAo_L3 zCZ&S?yv#Mw9YTS_ptYcNAo?jy4rn%rf!?5^r=ZiI0?;+kb<hn^A&7p-*8t=P>H&%b zbpy2m%|!kJP%daBXcTBPXbdO-`5h=q8zbQc(t>DVqE(SrL0W<zbLbt2o=ee_9(Rxj z$Qe`~Q~`7xmBoR2fnq`QzW!0rG0+~+KG1Fu{Q_b-h*s4(poXAEdN?t8AyFShuf<$I zqaRVpC(vim7tlA*chC>ePtbGFEl><}qd?t3^sB+ikc|b61C0kw05ycXBPbB01ks7F z6o`IC`W*C<9u2)^>#lO;bw`mr2AT`X1I+``x9jsk^fmTEkT=K|M7OW>b&o$N0Mrmv z3S<DHFVU<)l|h!E1lZ9V)Dv_NeLMtO2wDVM3|ayT)Wb+LMWQ*#8{`A>1zm!%bT;Ea zu}IU;BAbAkg6L#=6Y^W2vmkniG7~flL|@bH1g!^c1hoJKfkHvyAbU_BRNW43_<<VG zNHjx*caYHw6i*7E1W*cyep*};R14$;Y5`sP{SRGd@SxtHAW%P4+7?&^l!|;hd(T7q z9Eg6AM>H2iCt+XE2<ZC*_tH|#gXj!98`J`{02xF9NXvyuIUjruh)$@@K=iAbxu6gb zHAZEqd=N;kqd8>b=(LT)msS!SrG5Lky7*ObtCAK!nC-+l(CiGlb{KRJL;=9I48O)T zGipn-pb<)te<>JsK=Surpo$=RzBURJ2BIfN^yqm!Xe?+XXar~sXgFvXh?zaW*8rJF zQLR)Pl_VrhdY^!5qmqPji^S7F+(8+VQSH)&?N73hbV){a&=XXev-Ief>Z3V49YoJ5 zXM?ioAvT2yRgedq3nHE}N!AIN3(5h}8Db7l)~CEc$PNIh1ABoKZu>#>Wf&P}0VEgY zgUB$dGXqGWNzYy8)34eWAh8g%7DQj^&IhdqEdebCEd>n*(U;{bK+8bOK`TL2hQ6hy z?^-F&w}9G#nt~|KH-jklH-Sh_vMMkv2uQk3$=#$(-!5(i?E_ISs5g5+yFj}^Rw(2J zl6!gxveTebpp&2zpyQxpprfE8pevwDpvIuHAp9vV;^P9SCemb(?j927kvIn;OUXjY zxC|;p9<9OkfyO`skQ$^<h<rUD2YQe6-=KG(*PvIRLQnzdDu~=p2c>U-u7j?D!0UwN zgEF5&@C5W2^bm9xL`tMgD*_e14Y~!o2YLXy50dj9AuU(@66qJ9=b&dG*$DEYtp67B zH#Gj#2pK?`vLf-6rXI-o#Qy+&0(}6H&PU)^&==5WkZizrq`!eEpGW~O{RC1SN~DYG zr13B55^^z}AxMFg=}bYD8UiVgTu*l^WIZjur9mb2DNTBmPvvEOy4sfOgjit;KE*+) zD223QL>BA$m>X(=`=m_yU+NojE>6x)Zpig!w;ppEclpZ!c_)El1$ke*ESto4uhaL~ zDmgbNXAdXmdWyzd%0J=!^|W*qq(<e={tK%O9cgBz<hr>!xjMNZ^jP9^PNSvEiPBJL zz9?z+Rhv=<P;eI&9<Y2U;CrndfJ$^S#_eY2tm<8AnNJ?D1$u5y^_*Pc1dhFa&RJ?r z$uZEl^B{NR%l%%Hq2UY-G^J&Izn~@u*5CzNbcJ3S=*`?5w7}5w;7918o_bEsF8-`9 z6u2NZk@Px25BIH^&;0i0ISkwOT+s7ys)v(5+d~R{p@93l%u1g!jW+ICIb1LaO=4~_ z<FBYFiy6O!UJmq3q4%_u<F4K}?=KMy6ZBTHhEU*kvM!`YGa5IsnO18W=9n0#d{J_) z7zk9SxW%SG!TpV-;Pt{gJHlYB87hJ+U7g&8`AB1U;7Z{0;g5#cBgY+O;hl=Ckm|05 zQOB)g=1;f2t(&iSYAV_4j1w?3dj%Uhvf2PGU2<!n7yMX#kB|IBwz`N;9LKu9;^MS7 zpg>;k^?7KfzW=6Xk^)+K#O_c<pV(Kbi0&Pz!Qp3=4(&%OGxRw)nM_qwVRc`lGxC;( z`#(8;T66Tp{9*+<dE$ONGi9;g))7OV<rU|2V;Lx_O@{(*&NIJEY-l&^LUzAmg$ZmO z6u5kLg7mgQ4|6;7RaoJSvMo1R6zg4JKS}Qu>+=?R@-~fa^tINBM*Ac6ISL$_0X10g z8|XD<*3jc(*l^-TvN;3`*qIU_2_+S&fLQz=>K6^bSI~kv)mYwJ&Xo&g(>#<KE{eS% z<K!I~&xI{N+v4xM2XHu9hp^bnY~OJjWocvP`wsE{--^SW#fdD$zd7sik<-`88xnqO zHRYA_eY;+$&eO@o-KoAJnC+oi632F-R;|2|;m-Qpk@K+ypNsYIMe{pukh%b&Pt!x1 zTo2i+&zyM`nji0wL-V59-GnB!_HEfF7Ns1{giZRwSt?CU*p0tAOU{OIpEz?BWz}US z?-3ONxSOUq@a*yI+3o8dXoa#Af9S2e-=d=D?t?F;_PrtGAP+YHECNNjF>Jtld_!tv z%2vLIJLK<wlV_bV88)sJgT9-S3)Tz-;4NxO-oo<Pir7VS&*yCx%_L9An^U?@j~=`) zcV32)b2k$^+nUw+0Ov$W>=w&IH_o2@abL31*-MekB0q4hb>!_Y)5bUdv2l_8P$<w? zz}WvZ%M@Sy?)$*m7WqW<Kj+W#KciExnDa+Ki4l|)*|3kCTgePOK)?`al#-K0=V~~? zvF5DaCr)3kbP;Rw3BCBOk%F&<nrK{H<h8RFYe2!#ke&O)xoYLjG<&p&HmW*4^cuP+ zEmdEc4Q$ZLyKCP0acXr9H{)4C|8ZKu%?j0Eq35O$G%c*_DW>83GcAU^+M&hm9kjjm zp({nC<O3<fO87wPYRSH_s$V!OuB4gNh*-49B_*qn!d-}F4SP$arDc0LTT@F}Q6Ed% zF4mCN@zbmeKr3%9n7+eoPw0ulA21Y=ON086O@V?thws-+(US$wqc#O~T(3vHMn1YN zZ^Kw;@6zjwES%$!LuW4()v`6FN{v?DX)=FN>fjxVt!aIBrigJ?xG}SDTrifP?%!aF zbjIkxetzdFvSr^mYi=Mr@(rs-Ew=7EjFh(!9ThsI*L#DS`-@u=6}Zu?wi>I8#7QuN zg=qdH6xu2(AQ>Q*V?BRxt+_pH(+@6=^P7>3Dmt=hN;nUTXCw>x35%0hAA+$A|4j=k z^Nct6{7=<d>;>tF;zKiRWyKjClva}T_XV%AJdHS1V!qUh)TUsIY&qL#iOO7Aq&3_v z?<AT(>_*jQ!}Q7BuHtw^uzh4_GTUVZ7|yP10W+A160m~RR4QG$1}p-cR^A5nNal)5 zv(_!DTU>|OuF|X~^D|Ida@On+6?0=#%u!6<3{_(?qg$EY6G{{dXK$!Y(Zj5V9?X@7 zrvuwp7C8xQjUHe)yF()=!E|OOj;G+lj?7sfZM|f%1kzx&Vw?&E!q_Q&z^_8d^^%Ge zYeSmVS-c9xe<{b#s$h^L+Rap@iWMX)#rn1KCaU`PX6?6cIO;-i1lqEEDkZ6lpq2Mp ztyFce^V+Y|218w1@&Ch(;*hWu1EpJ$YY(tJ2C!H30XtetX;qXZwc^Se8Y*42v>_^8 zj-0gB1Xv$VY+h_s9GhaO)VK><wnE`})f*pj4*pfS*o=G>t%RJkLn9uoU(=G-C&|EF zY`7&_|8*dw`6UU(k<<RUc1ce#Q=^qPkgZc`bhlYk_R3dRSSKVsFZNXp7fQX7w~Ot2 zzv1n@b2gVLHZ6kL8pAXxaMIbj(%>er6M%m(MhY;gUn|%fszZ!hJdrn|82qKP%&R<N zLaP0joL}{16)9FFt0YeBi&EvqUY1c>YUQnMBfWn%YjEY}ssHLzedYtRwDOj?+j`eB z$yAKEQ>^!Er}1i^8SKttyQnk2cI|h4l704TcYgKf|8bt^AjzO#OZ`@;Wp!{ikYiXz zyeKe)P7?Aay&I$B3QJW^?}si+tCn~cQL25}aZ{yBQMo9#&O)hS_00ZzUYuk)xW!%G z2e{(r5fy9#${L|c>BRKs86$dB`{#MFl5ypfu0>XeCl_~l%iw*bMoh4)@N`b`fE8^j z+$j3>;30F8igT=4ZaH*Z-i3IrxBVWgvsZf-D|Bb)pulCaX9Qw^%gccfoc}a%(z5Zt z)B7dLrErqw#xFxE>Pb;8<^0mT_RsTGnq*RVO0gjce`$mhmptvzhQhPH%pc=^9-6!( z{X?-!=CJM+F|zBSK+9I?Qax9-dGc*<vBGKO&{|k`+|qqH3medtv9zGwWvfsWcODcr z^7yeY6*0-BmG*a8>sSWVf3NX-DOG7+O1K{WrCw=z7PX91wwqSoDY}8<fI|zu?>G;0 zrKlI(Bx`Hst)wUCuMhp6aV8Xs?&3*Zy1bFDWTeXi;o8AfykMbq?S%#l>o1oKT6rV# z^%|R?edX;8P@{D3b(SULT&<P&r8byz%4NaW#6eK-`tR!qSME2b_D{@TtHhfybiJgJ zu1nZnEnNNUMTemGABM61CeTCCN+>#<t*8Xcd$3!?3F<}HJdW0)UU3t+G#G*_p#Nw@ zv_kfze1?{;6n^!IyoGjQ+Q7YQYWmUXP#TVIOjj8-ODA5*=Tc!2X4=3U(RIwtM(O7M z=c`qDqiw%#%AFTq8Qv;(eGJRBK{K;ih%45%vo^|dxD~%=qqN1%P<|EUJY+TicX{jW zGSi!MFdKCh=h9lZqo+gOoV&qc!y4@kk8CQ=iDQXWgK(cvft{(MRLPZ=6g^~@swju! zauDBmX;_LaI<=8aL|QAq@zZ2l%#J~6p5z=UU_@p2KX*&sQTxDl)52QMo>~+a#cO+2 zF~E3}ttxD@WnHQwZXDS%fHt#(`1KjzaS7La5w}yx;ig~s((3^;vxDAA*4+-JuCPIN zFnKon3QjBU>fPYo-gU=K-Ni2f=w?IllGU|`g1pUlt-8&>ed<!-EsXIL<N7O$wpRvM zlK1gGymso;>tkLT7F%1cGdpRItKQY@fxXhTPSL*J4b21A4qi4Dint-7JD<iF3Hs(Q zuUe*K?a{GOrg+_~Nj0Udwn<m<HfmzbU+Z>WJ4QoK>k}@+LfP<Y=u9k|Qw<Igz96i~ z9#m6WYvpagOXuFXHp<|ht58PhQ7*Ht4nH(ueX65l^2Xp}4QkE}Ua)?NV7D{w`4!7q z9x42%RTYXB5#gq|=%&(K<&JNN-m|_=%8Ja|L21nmW<Cz6phl$lRl$<+FJh}l)}Tu` zT7}?Sca{tVyrDPV0oL2FU8L?DEq>t<zs+~4TdBl{^c|IpGks6in7twOP-avEdU2AT zN2`;Y^QUhdT&y>U`9r~d5)|kw!1>FD^?qqs?R>F9o|H3Ae`T-kX5IsfbJnvgs{0TW z=!9_8pe<|qIB|cmLIK+c1-xl^o%FaEQSbW5o=u%+UfWl!XU<G&!UlP>^Qem7)Fw6+ zJ`^j++oAJ5&+U3=%^p{r6T%`;R4ebFK37|B`-Labor@I)vuRM^rm_{JC-1+$qG^0Y zs=q@{vEEL0i}cR3&oz~`)kpdW?>}XV3r{5nJP4&PeM9VzOb_mvrp2h#7XzBB%%W;3 zUF3yWxcPV0$~&9ysJ|yLvhR*s(5F=nqd1m*uZ7{8%A9MXwQLpy(8?R7?<?o?zI&_b zC!mfmn<&gzGaVG%<$a{(ZD5Prmv@?$H;P3LzIUOPve_vVRT?C*wvL!k!Hjc6ix-#{ zP)Xjpy~CQkbB?CBAETJG(#ZN^aab6EZxg8&Qx9BT%NtkA`_7`AbjIq;&QblrTb?;8 z%{jaGsbV}Criq>#wzXf{QLjrbm=Mll*D5eOC)`^7_G=_zh6}TUF1;s04_{a8ae^o0 zJ=iz>eEzny)$wZjcxHgF<=pTbJzcz{37P%!Wx%|1KZ<h_m~mZrS>D&ZRQmatgwyYo z#R`jALnz=Lr3;{vyf6I3Dc^Ip*qJ>o)+^PIO|7f6beDIMf7q~^;rqsc2a7f2z2-d~ zR(ZL6J=?T6Cyo`85%T8r9d7Q)AN%)kt73&^%&Z=a*w1PMwDRWmBZBh!JX=<}Rk7Y@ z)}8ds*`RuGOG~zj)a6a)7ltleo_(ToG{(insXi@wJ=h&mPhww5Pu{FvIoNpfgsP@= z4<LOBmBs2hLr;uIIcnHYXQh=^-r2tI;zC7#2Mw+FcsM|da3)*lj4_nAvfte<{($nw z1zM%?B!?72*iY1|k++zacXx&YJz#KAu#As*mW=m(?qrG&2IOs;g*JpL{`|m&Hms-D zHsn32r84NWyaT<w`7?4{op1`mlRdOUPn6{Cp^@XFgQt*1+t_12_~?|G_L}#nK0QJf z9y-uek~g@Q_m&nK5~lNe$!vMMYas`x8@x>vpH8+ZYUszCHdB8Yh#cv1QZZbd8uAX- zN*xWB;Lq~NqVK-t-LREK57TU=9C^R&;+(q3p+_q6&f3K}-pHXRA@ZKwFhP1Y*9JNC z?Yp>Zx6ZFkaiOlrGDViWVRvy(0&>VWdCTwOoWaN;r|y?F2`|nWDb?0@+JV&Sj&Xx3 z6kSE(=0Y%gTHVg<%wtZatH8-?1}|0D!_=u?$O-TB#f5sO#Uv-9;ELgoHcz`8=U$wX zgEIK?Khw<KrhJE-Z;vY!d2R)A=t7}X(2=~A*Io@N&WVo1nG1)omw6d%W)25=AWWRy zio){GA@=9-{d1XL-Cok`3CaCZC|u<2(qW0KPM9HzKZn?VkFWgb_0MJg2eZkKra4Vg z#h)9ZnUR(<NFi_MPIikITjEpBR)22q&vBcWHb58`&ZS$ym1~zD;GE&&<mObLnbuNP z(8<&2k88?5c<j$@{&{Hb;MFsVENSC;T?1hn3A6t-vS{kbd(#U!!ewJjY-~!M*uDw! z?)Au#F5`YT(&Ac4annCCL2)m<RTbX@P3U2_bYq<s9~Yn0Gg(1<+}EN_?u)a0@Io9- zy;6STW2dWXm?&`pC|v9+E{<hqU6huU?%~BUn(NL@o}Rc6c%lVqVDW{AUyo(2U6d}B z((&3^IcN+rYh8Ip8}$^_P75C{BFBtlIjBP^YFaAAI$J4Ek7Jcxan&Q-MY+n^VDns+ zwSCgYiw{nJ`^-&P=OQNvyGmq!lXjaITErSyd_G8p2CZH4KK0PR!)gk~vB;q-Re6hh zAx9XF*~r1upiFr$d*qPQJ@ASRa%fSzzB_2a{mH$$3T2#~aNhY{e3lZQ=d-8JI4j+s zPbK?NDP0uiuKDyg>v5gFBB8q+c=pfJ@6XHBf4(MRDlTAn&qPsnqBuThA4aVB)OY)O zG=yfz7xIrLdUncsX%*hO33Bkr2<Ki!6_la4uu<Oa7V`3C3UcU*71v48$f0-+-}6$H zbMr+F<WQKw?5)V51-?_r#o&my$LKpzXC1O|HcO08icg75OG_&?H6wbKH=WI}PLc^h zlf;JhT2(8xqkE6r$f1XM$oaDg9Z<#y4UIPKnvgJx%b|vx=z*1@J922CH08=Abg(nI zNasfB*<doV=&}9sGM9h+Y<$U0C?ptXn<ZA)c38sB8|yZ#6pRycetTge^pz%Coj$RH z&Zq79ajBiJS~445?Ty;VKLO^qW_j<?8RGe^JP!x-ijSsuMNcM9{<xsc+on<uTo<2) zD+lB(b?kJleYvMsipw;ZEKa}DPdZuq&zpqTGK3ZKw?5UIB2FA5xPS)l^}!5XO3sy& z^biE&O4k*~p+d8H?(*r+Dw>}kjU2iFhr6#Jhg`RG(2r!-dD@2hLX^-YRCb~msNWN~ zwJB8t>3OSo^`#g*RV?%A%aC6C!~R;N<f0+5KrIGI;#pH?UG<LLUUgORF}&cqJg88Z z#DpK%Ki6cQO36)tgeL26Zd1I(wQV0X$ZY4*Z=Tg^S^?i|tb&B@8h>*GBYlM|n9U+R zl;+ayhq-<|x{0UP8+5-ZhBt>ORDauB!Em`x|J|iO=lte|2ba}OIyijqG|>;?hdtUo zZTVSz!$-LGbKpdW51g33tNimXS#Y?tlK)}xg4w@a@Wi<n*(bJ6OnfT;z28%}v(E;g zHaF>_y*e+N(BwdL^eKmTsmP*fiRyYqrq$`05E;kc=(XKA?D}yk<W!IC_El<1;SDMI zNqRe1MNDi|KY9sz@<@f-9joJq1x?{3_Ggn?&k#GPPWC<gG-UP;d~XEr*LU(#+?v5& zx+*O_-a~_C>&j~t-S>THeU4s=sV}?~V>DBYFq3y|rj6g3dBr(ZXEI+moUy#2LF@QA zj}49XoPOJ_SfkxcmI4irKG2|t{@Z8AS~mNu_km)KG03q-PUw_?5vyC?wJXj^&t|*b zls)k~i)!x5INa!Dx#NCEd|Rv1o@{Z_uZdrA>16rc72yOLF?YNynaysv!>HfHw)CBr zbZ>0=o4~`pDV)C4Ls?0BOG`O_4!eyTX?$6QHytc0yDQeu5ht4cl<QN1-`s2qSJK4} zPE9-KFegvkZJvcjMRX~qPqqFJ`x_J#Ydk~_P1fb{1Nzu~IC!%-=NKE}iCfw4P@rko zyW`r0_e@8AMz_S%gQ9c}TZ_s)v^nD0^lsR*h#IEv+l$u^9tdwI<dj3%zZ_52i)<EW zP@EHx!+ucNj?kcS8s9D7`Nejl5*kU!sfnE00p0_%X0PsBT$bgqR$g%DGH7U_(J1$S z)p7N)aTHfPnW_mSP-2{GY<#hOc5J>hzSzNEiF3ImqAds&LsUUYQN4G!xm)}0cC))@ z#}y?eEo#C?NUVnWqcLt0f=N*v!iU^el-7`{MG6&4{=td*2Q+HaszM<3k4jMJ@6GI- z*C)r4y)*B<dGF18Z{EzloAZ{$GiL|ZL9<So;Fg>_D#m(nD)|d2D5<<~_<N_*g}H}U zFHLO5GDdVOiW>Ig3Gu-eoK6l*h{la<^|EgG>%|Fis1Kj%cLaQDSk0v9?*-N0e<8lu z%xc8GUUpa4kx6Bk&zD#KF}d=MWzsO6WcA~~kYX?2{(1eqA6}S}ml6@!xXv*t{!NUu z2;7pEf@|1?N%84MV3cAJVQpmH(b{A38&hMScGo-=t9=xf#YRSVm6jYmCf)*h^uUA? zHU7>!bCLckI95|sFl>N3UOBFo+#3&$PhYiNx&uNdZLrf?%<J{S3E^&n2~VF;Id*P; z>z9e0`)QMd`Do1S3Gs(bWsT>Jb3-4yC3*oSSOF8fb)@_5_g6LjtkO4_=t=Q|KFr|a zN%bkwXQ!?{uxiI~l)~l75$Q!Kvw(4A`3AD1GSVF@{`HcYP~exqc-M#wd1|cSsYkH! zDKQPtcAcD3(|zdXi=C|3GoTF>L7>fVfT37Qow@$<9m9FrHG>L<mcHiY=eMwkxHG}l zcAZ1y(flJ{{r+2Lb05;xE_$(A+zG*(yN*FRSqF~5b)H90DY;APT>g6M$$KRy++anz zKPAp5-~cICKe`5grIz}t2j9D`)qe4mq?cRD7%)-j^yH5J-o5mm#5Q2C7|4~uYKR_q zMI9dI;wvs)`tCGk{4P~hxR%{Q>*trrP+)gZ>ZvD4?J?nOEn{?m*F=vZw&@6Pd3)Xe zzLALI?rM)(ycCSYE4uHrI^icCzw$`w<2NyL`3i?+q<O>gpOB2^X_4H9XAo2D$fW3l z%;@hBh2*oVOK$${%1>_n2j)X3SRA&lp%rQSHfgIRXpTBxR7i{_&!{AD|J=m+=ca#6 zMNm3q!Oz-a!AR^GQ`^{v6(2l{>#O+bKPawjV?JuC-`~y}HeK1FPEmh;>a{Q4?SJ5< z|DaFt^EZE=wJLMZ<uB2%M*rl{&Zl>Mduw#;pkniQ;%nmd?d-nlq&ob^)Aq3G8d;MM z_so2?ompeoDMVXA7&C0`-hhn9RfEgd{Wd@QBXf^qrhV>@Iwrl5r_5qHM-A7oiYa?! zBsa<}j~DHX$=y=1Xce<sq#CJv1v@=ty1IuKd)<^@jNUuSciC>i@HMpLTX|1+yrSWF zIlGJ`L8eQZO2J7pgNXs?TLm*dT*w)YGs;oU(c@FDJ>ty^FInZGZG}NE=lhPx&agGL zWpG^CK}`#$5Fce(>?T=#0ZKl3yRdh%=9^II0SJG&tnY}kgRHSm3s#B(uNq`kV%1cm ztQ?oK1X@1J*xLfEw2U?k$#qTN*L_VLs||SrM4{gE4r{ql76ky8Pf^&(TI&P$+Nwb6 zre@l-TGKeAgoZh_6{<)80D&m9ME@hK^_F0Oax;*sp@%hTyb227gSgUcIn`VMrU#d= z5EOiPEi_%<vWwhwUE59P%=8d7#n!`YZB<a!z^I@l&f2Ucq6;K|>n86MhX+`5U73OH zN?8Fr+vOdi{|swxt`G>K3J3_-zsj2X7KwWhF9L-HXfwrRJl{wUrSL0^S++J3bTF!n z;OnKDRY6gPP^vtmCPtQbY&#FQZXyav9T@|1X$CmihUi|g`xzFC1eFFUE5ps=Fh|W= zv>!nv&M$9ZLyKL!J<eKYesYfOV>&s6atLTcJ@PURmY8EQmA0`2d$`70m|QVc%JaOH zS{&$_jtw7&={&pSrcGYJswemw$w1M0zUleg+>_3iGGf+e(PRi<((LE)CYMDMsh8$I z=*2xmLBXK11M*EeCqDZQtGlz@1&eZ<)2`4-<5R8yg<u||=!w`lR^J<jAV4v!0s^DZ zHcEqyyirV>8B9pa>s|<>(F=$;9i}>Ha0Z&kO|KA7S;Zh(-%qs}450^?MH#8%AR@|h zOk;>v1NYJ;*BwPtHM6c=DrT_2tbE1+4ebJh9@f+@*Dm1g&lAVqWzqIUQ9i^hjtC;J zyHWxMRDuv}!4gQjw&!urF-AnyMHanpzE1`W^`z(Ith}6=GKyKmPN85FGjgMm#gaC% zNPNC8{dj{!ffqf+!2#BKqpY6*BA;?0^;GZ#vH~J~rxtA>9%eN6(87&I!;sKWMS*?1 zB_bVw3J|cm$v4OZlL+}nW0j}iae1#AE|;an^^K1`)+j$g>yRz^Mkwbf>K?*d2>D&? zej1Bg7tp{@H+i?*oHmt10=RM;?zjsMfuN-28AjTR<KMuPtfVuP#p-Yj*E0<_E1no+ z(Z&j(Cv{c?9!GeK*>TpicL5)eNPb)vk4Q|>DQxt77e@m=VrBeXl0JfNTOS7T^q{B7 z9F9e1CFR`PiAVu7$%t!c3TcxO_qqVU#lQ@!7tft%d+5(Mm-dMM*VvXd<?Y18*TM|X zGKx|Sv3oyexBvv*7t$ajKk--AET-PXRhnK=^)YL1z-(1cE9VjnQ%Oadgq(7_rr|-_ z0!bwZen6dAd^F2qn?p%b4G7ay>Qqn+337^8awu(jSQmM@8^*#AxxFm}AS7re)w+5E z0lFz-KW8n~g`gG$gl<a2yx!pyUa6nX_lR>clKAIQ78QpE*t*{Gv}t%KvsZEmp>O~| qZC&hskHs1)_7jW>?JjUn`w!VV(Qt?@n_2lM_S3J=EPtO}iu@l%p%|9{ delta 28863 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 a3(dXmb%@m8@hYvjiPyw^om+XG_4|LI!)Ijx diff --git a/package.json b/package.json index 0d99c4f..3c4d18e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "build": "astro build", "preview": "astro preview", "check:astro": "astro check", - "check:biome": "biome check" + "check:biome": "biome check", + "test": "vitest run", + "test:cov": "vitest run --coverage" }, "dependencies": { "astro": "4.16.10", @@ -18,6 +20,8 @@ "@astrojs/check": "0.9.4", "@biomejs/biome": "1.9.4", "@types/node": "22.9.0", - "astrobook": "0.5.1" + "@vitest/coverage-v8": "2.1.4", + "astrobook": "0.5.1", + "vitest": "2.1.4" } } diff --git a/src/components/Bio/Bio.test.ts b/src/components/Bio/Bio.test.ts new file mode 100644 index 0000000..48aac20 --- /dev/null +++ b/src/components/Bio/Bio.test.ts @@ -0,0 +1,18 @@ +import { experimental_AstroContainer as AstroContainer } from "astro/container"; +import { describe, expect, test } from "vitest"; + +import Bio from "./Bio.astro"; +import * as stories from "./story.ts"; + +describe("Bio", () => { + for (const [name, props] of Object.entries(stories)) { + test(name, async () => { + const container: AstroContainer = await AstroContainer.create(); + const result: string = await container.renderToString(Bio, { props }); + + expect(result).toContain(`>${props.name}</span>`); + expect(result).toContain(`>${props.description}</span>`); + expect(result).toContain(`<img src="${props.icon}"`); + }); + } +}); diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..a5c3d58 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,10 @@ +/// <reference types="vitest" /> + +import { getViteConfig } from "astro/config"; + +export default getViteConfig({ + test: { + reporters: ["verbose", ["junit", { suiteName: "Component Tests" }]], + outputFile: "junit.xml", + }, +});