From 013927585a4c82010cd97d0eed9e686669a6caa1 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 13 Aug 2026 16:38:46 +0300 Subject: [PATCH 1/8] feat(button): update the topics content --- .../anatomy-content-light/button-lt-a.png | Bin 0 -> 80085 bytes .../content/en/images/button/button-do-1.png | Bin 0 -> 2997 bytes .../content/en/images/button/button-do-2.png | Bin 0 -> 3425 bytes .../content/en/images/button/button-do-3.png | Bin 0 -> 3425 bytes .../en/images/button/button-do-not-1.png | Bin 0 -> 3001 bytes .../en/images/button/button-do-not-2.png | Bin 0 -> 3508 bytes .../en/images/button/button-do-not-3.png | Bin 0 -> 6667 bytes .../src/assets/images/button/button-do-1.png | Bin 0 -> 2997 bytes .../src/assets/images/button/button-do-2.png | Bin 0 -> 3425 bytes .../src/assets/images/button/button-do-3.png | Bin 0 -> 3425 bytes .../assets/images/button/button-do-not-1.png | Bin 0 -> 3001 bytes .../assets/images/button/button-do-not-2.png | Bin 0 -> 3508 bytes .../assets/images/button/button-do-not-3.png | Bin 0 -> 6667 bytes .../content/en/components/inputs/button.mdx | 722 +++++++++++++++++- docs/xplat/src/content/en/toc.json | 3 - 15 files changed, 693 insertions(+), 32 deletions(-) create mode 100644 docs/angular/src/content/en/images/anatomy-content-light/button-lt-a.png create mode 100644 docs/angular/src/content/en/images/button/button-do-1.png create mode 100644 docs/angular/src/content/en/images/button/button-do-2.png create mode 100644 docs/angular/src/content/en/images/button/button-do-3.png create mode 100644 docs/angular/src/content/en/images/button/button-do-not-1.png create mode 100644 docs/angular/src/content/en/images/button/button-do-not-2.png create mode 100644 docs/angular/src/content/en/images/button/button-do-not-3.png create mode 100644 docs/xplat/src/assets/images/button/button-do-1.png create mode 100644 docs/xplat/src/assets/images/button/button-do-2.png create mode 100644 docs/xplat/src/assets/images/button/button-do-3.png create mode 100644 docs/xplat/src/assets/images/button/button-do-not-1.png create mode 100644 docs/xplat/src/assets/images/button/button-do-not-2.png create mode 100644 docs/xplat/src/assets/images/button/button-do-not-3.png diff --git a/docs/angular/src/content/en/images/anatomy-content-light/button-lt-a.png b/docs/angular/src/content/en/images/anatomy-content-light/button-lt-a.png new file mode 100644 index 0000000000000000000000000000000000000000..05656c6c3e148d3c1004f51829cfac5cd38d1c4a GIT binary patch literal 80085 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ⅈ5m*Eg{iY$}bI3F~40FSRF^% zz(@Ui10C#FDT4&$1qGDUthESRT}6m|1*WPatt@fzwVD!NLEAR?b_w1ka3mvoKlsqh z$%KyaF@aH8Fm1S^RUmtA=Udh8N}kR2vhxRL#{T|7x`pux=yV!NbIjHyY@ylqYr|~) zRAVKMu=?Mxq)Tm8R}|9p1^wr^MTf$XLT$3R`ms3PkNMgS<)LDhmm%D8B}tr#i;G(t z;j<4tgYvfx?76apW6jWU-#14ZC$|@D>MrJba6V1Db`%_wD}CW^(RjipB*A?q#8>bn z>vN0+qkg+S632&WmZde}!$}$l4UWX3*>RAZM$4+uwHDX6oG|I0cU?$Tfwdk^=bwwr8!?}j zh<=0)U2t~GOXEX6{EW(3#!?ccE-9y(Q1`?cJNhQOj)mPhD-J%{vyZo;DCo9zr|9m4 zfA6^gea%-9=Vv7JHD9l@b8T}*&|6{`{tsDS8CF%)ZG8x(lrBj@q)QrUBm|K>h;#^o zDBay6EhW+=Z~*D<5-I8K?(XJ%>*)L5d!OgqKl~xE_g*pQ9COSu*PcZg*?phpZnWuh z6ur*o<|t~^v3FuU9^Xl(Bm=~Siv6HZsXCt2{Kpf6^6z7Ptm+CZ$mm1sF(y27BK>h? zK>%F62cw!qIIT|r!ZL}M9|BXU8c)6RybW#=J!E-T1s{toSse#*sz$--B)FL9)m0|E zO?AM`bxU^6JYv<(&TjW-hIZwr50z79E+07=tsdUba@6bQOvv#b1cipCWJ4Y{r-f!8 z+ami*kINdG_BQE^RN)eG@7F8Ip&6#b1Y}g05CfPoX~WyFKqt}jntmzWM_v%fSVjYI zj>YsX8KVrtj1OK4g>2m1jn!RidAYrN_ga=1aS++2;r$3QR=)(M`3rs2uit!SrzfTN zo8Wh6{&9M)Oe`iuVF>mqjP~sbz@VL4sb#y7Ixl7-25E{E|qJ{J*bz-`W&_8g!4A}m7TX$6(^ zq$7J5(T?aHyMIjW1&a)Skm*w8J=nLCfuP)kIPK5(W^F)y(Xn`AR6}2+vby>^B3aq= z=w?rNt)TF0eeP-!XO`Qs2mbUekaHCiKY_PY&50iOG+muVzC(bryXe%LAMy9SK(3Hb z&?MYIO-!Y zvU!8>An#kAkeack2q{;xg^SjmzR5sSFn;0N!Q=9>bdIEC^R>xFnd{BYSt|R;-paen zi@tSFQ~Ir6hlp?pd0X|jJ~dJDj=)!Xn`V~9`Fz%?U*vDORHvRc(To^JhALV`S`&1C zi4X#rKLzm4EN?~>Zi4BVop%)+sGwA#l-{Y=I`9y>%k#d zdm8t`TBWCKG%)c+CTd0b@EnSLd@}DCAiS#B#JX2H^}X0s!V`A`=8P)^pY;@!l&Va@ zZFt}-UD1=EZkJ3HFRfN=RyO$wQH+}OO7^gpEM|l>|0WCB8EbNx^g7)4WZG-w^H9{B zA6A=1u%Wz#4QEr1`fMhF9N(1Um$gwOcLV*(r#wL_obPTHnf{e9W|UC z?cNV@-;;#W5P)p!MD{)Q-Sqjy#OARjtM_WR$(X)8zO4|AxaFS~z0vlSMuPC^VUpd3 zS$OU8laP>f0KmHCcy@krz7)bCV_uf!J$M2ro0<%dxGaSuru>`q7lEaKO(4{iDWjb> zi&QV)pOi*280k$F;dr9K9r6O+Zr5}?&^PI42bzOygiNVZrZ3yP?v%HK2h(HiR0lT5 z(GcVVAm<#~9`frrfP0sueJcd=ff8WUR#<6O;9!&q&vAl+kNQd#ejM9dv(1CD%fEBG zNFhj>%1TT@P>}D!P4~UL$!qq6TaM51AsBbE>X8|>!BG;t1!C=`uj98XrW-LbXH5HH z>+Dd>#PQj>U6t5(ZF3GfO0gMFt2n0gqNZo@Qoij&c_|k$-1u~|Hfzl4m{MOk@h@v` zPTiZgtlK>t$|#W3EUlquRe7o&sg872-?C61Qza$1h`7*IB!#zD9;9h=a=8GGgUh0M>zXZ`& zh*_|HJkR=H`c`%4C-Z8nNpivBPZL2K=StbJ>HL z0knc-C1Q9z`&rmm6KG>HIG=L6MT*c^jC}XBZ2OeYW1ea^C5*WDzf0Nl>gr0XwzgIa z-CT=48sn&v4l=QqBC9xP>-hO)N`@=VCeJFD2D6FQm4A2^_g*kW}lrQli)OBgBGwqd0IKG_OOo!}3Eg zM{RPHj#}C-e^3KQr0-eV)g|ZA%Yd<1NzHAjQZpzJ0|RXekYcp>nQy_`w3hd#egh2# zIEL}k?%hnb4NfU{jU51S|GgYcjE#Sd&&|!rE0Z{DAMrhfOr+%pV~fgGw#Q1pfLiTA z$vqUC#<(O52-AMYdpB=vz*ZK-m6ReVsHljyGWL(F5o@rvzW&-;oRyXJOIFs?L;b1; zpS2hd(EdIKE$;>D-2$9e(I4av55)qdE~Tj5X}>Dazq?)IZ^HBN@F1?*g_1{HtUMN0 zbiiDFk*OG~VtI`LB?cjIB02s*aCDMc$?B2t95wYTMD0pEY%3yF38v@Ey=O?=#bDa{ z?)3b{KLbY$N*pDm-ALE{&m#%l1&hmNYIt?@*K_2@wN8u*Eb$s61y^EBdC;OreU_#* zu4XY@Z?g8-OaTIeyii+l10y5JK(vdyt1H*WRx|cE0)ESxg^w(Rm>8p9ile%ITom2x z--`TO5L1jnm)cvArtz_{_iU`JZ)fz#Nl81MmQK&kf~^HullW4o`Ygl9Rud~M$oZ_S~nwAD(!co{R@On*%mF$B=sVSTbOIQEGzL`OLp zGON#_FEa3MTH;>fh4ofYvY39OsLXS>*N(;>tgF7c=1ebxX8}05@Aw|0(fP^-b zqzlE(ot<9_1=^FgGFp?^R)7-d>UM5&vMZuYOI!OkP^u>o1Mw)~#V_WGHbP;1efMbB z*Voz9Okz4ZmTly-R4M{rwllydderR6!;}*lAl9FeJU?ERk8o{qOvt!h3{&fHLH4gE9 zX`WKEPM=E8JY>@eQ=+RI_Mf< zZxCUh>Gy1GY_$brV`IO^mw=9IDaCCMczA4!>%I4Rp+`Y4s<-NAnlu0Kg5Qpzuis2* z@(4!!<(Bjq^}Mk7=l?scQ-hhZ+GUfhN8%3QRfh)$oOzv+%L~P@m~{+_F*~=1VM{2; zX`j()=+LBJL%jWv6s4I2pFK+t%)O74rOE^nKDI*rrozD4dY9o^kL$`})*d}Qy){ms zx7yletW3}UZG{&6T8p)h78a`nUT^!lB<(AlM^iER zHkNp94OMwR{DEjtu^G*no$KsQRBAo5Fk!~(4sIj`t;D`6xrlA~ z{Ed6@raH`3u+PD>nV4$@ih^#H=qQ-!m?ELaq(=9Xr0eMQppcpkGVGaqbCcadQ)7Ru zOh-ot6LH9DTgLYGcI_6S(j7=THR^BArf(o1W}@;Fzj^ZpmX+1MbUh-2c)Q~@@XefVj~8UhMoevK`L`J+Bqb3>zLZL(Gd4Ds!p6o99voEB{=`Fi zyekc1^fS688nPEo`~OGH9KrJXZpT#YBfS~pHxu56I5=qZ3=G_;%2s=nm}>0Dy1vPB zwHafhnORi&&c!||y0K5}v}Rp(bY)>tbPsczUeN6h8&6Bk`l;Zb2wx(rP=sPsv_i3F zt84I3Ny*83B9!Q(FO9|Z^{G=u{A=s#9L&-{m}g~YSN-^rMT3OMM;v0(^><0>Ngt>( z#~u|F7QRnVM!!5c!yfATO1s@OSPsZJ{Mx=3#1vBb=~32mgP9C$E*Q zZRza(x#FwOTz9=RsetB8|$I z&~*1$GaO;)Cfw#O;rjGF=fbn@r(8(RNopq0`88#4wTc8D%n2^w` zMeDa{(lxszK~kLyN zXDT~=<91*8_&tq>;-~K5_D*iyYpsT6SZ*K9#!u1fteh`u#?v_?5p*^Vrb%l?ap=u; z_K@aWzNfFvfN!;Zq8upGws??@28{B6$H>Ga0GnF$&-h(-HhlN<+rz#PbbKy8(~WFHGbXqWiA7;Jr=TrmFQkTS*#z^JAcn*?e?m!Wkf@z zr>8%u2B<`22ucbBn{k0S)MNLuFNTJOjB>Hi9!PP;|JsyBJfyy(eA?b^|LSy`mJoBb zpVUb6TVuhLcL3GL?BN=fMqCJC<)Hpy@ZH}2DuK4e|7=X}srLERI(0A9E*5)EnnBuM zOr^W~8BKo|58So6?ps`(AF4ROD3A)axJL!K%V+frQazg?La&wMn;CPUbxQ6U@Bx(` z@`FB~?=rKq_fu!&+j}xJ;f+w?jK!!lq&46MBB$8H zvZ~%&qPYS_SN@G6#4W%DqoimZVVI&9b#AM>#S>5=`uE=uZ-%hY(2E~2y{O{k>M|~= zkG-|pZ~LPZ33j3dvan1ERqmQML?V(vKn%U&T_haEn!~e;XSq;8#U=~9_s0So*&5#- zfK{1H6+vO)pB+GxX65>)wG}xYGc!LwpPsXO_)TRiC*ol{3Fc**U{EuP1OVmOy0~ao ztzOVQeor>K7+pk>pg`aLt>ai=bA}%DhkF6U{r7?rP{RhfFM_cR$A*F`@&1060`Y@` zm{j=9I*bt`@#bp0NyeMhe3DVZ1zoee+w2ngU9Eh_f}OFpPVN(_)3v?`+WyUPOzUO= zh(UK)cxdP+vhnfps!dN>*}y{1(WxouquA^J!q^L}&S)%i ztIF7zt-huJAqdc`|1Jvj)P9o3kT?YTkVJY0lO`XPZbMyd*)9c0FF+=Cof;J`P#onV zJ^NhtR55S7vxrFSOEc1f-(7M@O_5*Pdv{LK7!(u~9wDLpeQH5lDUBaohCY{ym3VckZvS*i+($!W!Venw^~+zmY8Cik(NuJPyyWPR z1ymXc`7MzK?AaBIV&;Dbvfw>?+{vWX*9YU+%7N)wr@l};ElQh0l(7+)_-H`eq5)rG zyA8ZJ$YR>azyKm)1e1obYdMaYrArcA!xuIlk!5^3i~THrarANaLgI&G|9wo}5S$w) z%n)->RUX2?8MwNt{hpFCR#gNrVNp%S#?H>q#@VSU=ETHAHU?*J2*S*~JAMp*7@V8y z+vVwExLz>K6X}pp9vmKi;^yYowST_-+klmLIAU=CW=?>)ZcMvk$%4$ovsbjRzgMBt z^{(najuyZ}PJ8vimi5lc>Qb{WTVZumW_LaZC;Q|??9dy5X zYD0dF=r-ZM{wOU2fp9&WsMYDxADhmLpK8LMf;D0C?X#pTKlj20(IM}V-hVQSEBGQ> zy%hCDf4cYJ;GjFYfwi@=b!_e@J{G_xoD@sZrst~wIiX z?Wu#8G)l@$_v>>F3R#B#Xz#_Jo<4Y}!rsPEK$aoX!jQi-KEpjBQ1s|OYqJ2kSz!>9 zcuVMbBGhy&1QW-qSnPCD9F;!|EK9w9l5n~CN}A&Z0~LM$qQkTY?Gn{WPQ(8sBqO)z zgEt(-ifI{1#p0qokNMnHt2Giw0Q5`Y+LChbsBtHQ>hpT(RqDOooOxa+;&1JRwgnq3AOTZ9t+p z1u#V_=0s94`jNbOcM@nfpG}=LH)8nccNP3H%qyn@yurv5_dE4Bk8uYWP(A>NFit_H zZXqaQX<+bp{&Sh$`B!K@8s;G5mUWG5=5X#W3Q z!@_|8?<5c7^BPWXb3m{BY|Koi#Ub}tJ3i@-CD|h*KCMO%2s~=i+}Wdk(LaET-8h3( zln59LWEgHv9;{J>k1zWLQpsBdDOx;v`e;{F4U**Kw>ta^~}sb$^;5DOxY1 zuYlv@B9fT|Y{UXVkoDUbzP$b?JeXn9=NjlqGkK&Q2Wvs-NRXIGg^Liw#GfTb%NF?S zfJzGUfPkYjcgRHbA(R@$tXH3Eh;kTB}19S}s%HbhxMN2|lXjk(wWRNN{leMX0F7eGwNkZ$(q5Ez_e zkun=y#j<_aGzbJLoYr+Li1VY?4Cyb=z+QwfBY{3I#`|z;u)=BKCS{ZFkr^fI?6`et z7A#bq3-<*^M&Pdq_TP{Az>BQt|W4V};tv4e6|5%3%`B^!~23jkUSQ$dF?W zy>qp;9?<{CB709lE#TWqt!pKD{^|qht#mzjPXe|RArexzq=aS zm}kPmp9+eKwvjxW^r=K#V{B_?vO6j(Dh8*f$okvN&CR1KEuQ@I)DpSSZdLye`!)e8 z4yj-UOlTtq+Da#XE<^`_?JmgA&j13(k%f?*5uW$w0g(%e){MGh0EClj9X=z>3|wjU z?#iz~3cWe$`Oy=m%2qjGM>zVGKc z0~!=PFK%w?8~1j0cyf_|QANGV8P+i@FUM>v?u{6-8mc&%(al-@P-tQWI5}~V=5>7s zRAeMo3tnAAXvOr=sN{=u+=jcWZTscl4-=A;dzGleWKMa&`bDvXCVb8Pz>hq_d!n%u z_G1{th%s`=&h%e@yyZMUn?tytD0ub<7c6EBB$WfQpjq>WD5*S;j;5h7iTgVWWQPRk zDU~1GiGkS>7XeZsvb>PiLNK4uNB68scRF%ED>Ph@C0{Ocs95xD?l%jiIv6ao#%H3s zy_+T(#i3CNR(gt__CSEOnFivL^C?CV_4~mFNVMCHo{9Ljp#obXuC%CQiN-9HN>I$X z6qQ7+E2dMkw{eNmd)pviHklPg1zNa@PO|#PrA>vz6sXM`m1g(o09MlS>2KQVG3FW> zDR0<+Z)2n4=;X9b;Cpgf;Oe-)>WfukF z_>o?iIOF6Rzx~p@ zZT|H5--bDZ{2%*Oxo~fUP|My|&a0^rg#Nf^6=eh?&Uh8nPN#eEdwyU--y;lcj?5`~ zfgf&`>zID-2TwgOCL(azayanC~x|AnP(;qV^9{;zn67fpZI2LtX^?Q~^o# zLVMwGvblwztB9*^6|VbH#Q}_T2vBL7=MZFlE-d^fS;PpyAPrIw(qsGNWUOs*VOASO z6GgZt+#s9s*1dc^&uz+7C!Fb;_50;P%iFpvoQ2w#@iVdU@A{MI!BY?(ZN&S3cDa2* zEp>}4ins0y(0m%)0tf0sh#6f^PY*i0r4ZzL>C9}-N@k2d8Ur6jc1Xh)8BR93ls1da zbQhMH+g_wE`Ka72`UxExrv75u62+tO=2~3J&@qYOU?mO-GULf>Lw27Q*#zbyYEWES z+WHWw*5#N!Yxo0IXr7wWvqbF-u_QR(?d8(>hc3OG+io<|5n-1(@CthV{Y`!#`(cji zqPyoOQBzyXTunJXI+`_YUul6=NZU^&16bZbsnd5*ZR?K$gy||Us~bv?CamHj(z6&N z`kVHHKP5Ru6RIg1aIY8TR^({!55c{GQ-6p7j7FINq&@jfV9y(eJ>SNKEEN79$U>%~ zrbd9AS2iDUsKB?^*~j6h&73ewePA9GyX9fd%XwZ_+C@(psUzmHd3p6~!ytLF!X z8P{ce;=mlcbO0;ltgWtwHC5RVxfF7CSGU4kLd~((lu(zRmwe$-mqXgZZhRMqGxiiR z6Ci5999<_#!Nt+^MKn791vTI|UQq?Jmd@XzOWS z9tZG?3+EP`6F_rg<9wN$({lli%VlGLhJgNSUqJukmWOhQX^#oMEe4y#x`j*MQg}@t zUyrPB(>=aYxq9vDVxd)(_%S}wb>h>RA`I3)FPBXFGWkuJmZ|R5-4h?TlT#bG2$VgG z6-`WxqXR8*FGs2TL5u@=W4Y+-SEc2_o~h=75_L9g+_K}P{FM*a$B)yquY*M`yA%gs z#uFQcM?2oIT&$&sz4OVji`uyk_v-f3ppXmskIE z3wxt?sGewS5 zZ|XGpg$kB!nM_>HD)w`46Ig}P&-bfRl4&PU5gVSnRteUx?~-89MC+>Cryqt75l1qk ze$!Xjh_WZ0wrlI<&RQ}|$9;a=#Z+3bOGMK%5vP(T;?d8t$ZP2uZd6pI>R97m@gMA? z0x0b3=q@^>oi}v&B^iT^T(k?6s{W%^Q!BiKUKc@)BfKI3krfkRi*sHq@8;T8Y_W`ZtZPdu|&F*PI@C4qwkg*4MFNdq0ZmLPSU0sbjZR zPxS{cv#2e}`;IS^&-Y0@D2h@|E#VA##Ms52OLIehp-nI6XHJi9&(ovrvn{@#g`6i! z#*+3scsgtN3>qCX(LIviHJ|iKa`j8moM`lPtV;>$&C!w9O|fN1+rM7Bo!(fKcE59x zeT=&he5j)yGi|B!G-cZI4Q*tngOk&G&T`%nkiFDebXrI>uAR{wYJ8$W2iZtC*l|0* zG)MJqr~r~%$bJzLAB#yHYO>*1+L)hmY%D^(;K)yo);tNEzI%d{C`E0{?KK9PY{1H) zA+1nGph+o@-OeT~!PA|8vBmeqC;A?(L%|8xpkC`(5Fw^-J(K@?@a{~Rfg<) zyG7}S56?D6PmS5#tFmHu`pkSOQv0>xyk{w1c$XR*Jen20N8sRll(M8Mc2rcklG+d^k z9~Mf&aSz(7R8f2vbQ$~D>&u);ZL#~*SpK!bqCx$GCeJL zY$4{v##w3O$4ilpp1IDJ-|~y6-7SMyUB9uOEgko3bHzUZm?6=s2yoA5XO4BCUP+IS z;jy{9o7LDTdUSmoHSGxi(O$IwSHTkWDkK#X!mY14*DR8{$vpN;hR<&UbB^NFn$GJ8 zFFVmr1e6GtQ&{`gLeQ64UX{`rViJo>!`aSkyl@1+V_ZGtiOc)??bxnfXP{xb&LCc!SbmiN(Z*jpWDfqquhK_>lYc3RX(Fa*Tz*(7$ zDead;RSwA=0VNN1$eWDX*{I|^tt?5;!Z`B!DY~Nd22>fBS>2vD3=`TI^O_Cv%8zs` zss|-A!3IsSe_l|8LoKS{J`@4?6d;5CYB^n#vs|gqLzeZDE@L`id3iazl#zxN(;=|w zm0NL>uV31_==q0Q+e=zD1^8FJnj>W0n{ltmCinA8tVy?&( z@5X+V--}qDLNinYt_Gz8Wx&2U%N?AHRyRpq4sIS%{yU|}qtYx-L2UvB-4o*N1oF|* zG8>};5y~HAwyhz`>i>9^Ft+Hf$0ulRQSw>E``%SAp`;?5=CjxQ4{?W%iJo3G%ZqMA zvDoj>jf_gn(bcHY$V1!=S~Ie33CYRHqqmGe*gDpvVNC1|1{)`rEQEqEtFKQHQR<(a zn`57IS*OIj@0XFAD>qU3+PVWIa#Uuq+@6+=?yyVIJSU2wdTr@`MV6Nyjf&5ys!gW_ zu&>y<96WjrCC=+Fo@Fg`#NrdL?zZ#{eBfOV)P2>znYQ?;(%Av3SNRv~Pv2fcKXCli z%TlVuR?WPUuC?BXK2KN7mz&os9lm#7L!Eyrw2s~eQb`1I}U%2tXQmz!b3?1b(G_vM@t@zU08 zyaMR@7t%H+`|t3QudT#hr}qtAQCCy@aUAj&4QDkqC@lAThSlE#p+)>he;Nl1o&l?- ze_T2Oc;wk}cccgw+@0^aH`k~6UkRDKI^=%U>HqQ9^@tiXr!oJtD2TznmX?-sGI9NV zpFzK6%+NU@!t76Lgf0^s+^O@UE#Ik#(hrosEU5`JBRlryvNFHUQXvj${{`~@q{Kup zGXPg?+H0j!E}iX8>jcRM%79J))=~7YiVGus#$2dQ?xs&=&~{f(H*0bJSSud~P%=NU z?c7(GzTV`fY#U)p$R&KmB|SdG@9?q=O0hPBfp)l8`Cy#Ou9jK9B#j8i3#4(W%xd3{ zoA$3r8_MtUE&4moT_|H}8_#_Gs^NC~rmqstIyU)(-+X0rpsG6@a$UsCub*q0aZsIK zGfxWm7BoH^Uuk$$+Fy>d?cuh4{hqICBmS#yYEeG(;)X3NT9bx=@E^F9%lstM#qD~C z#)jC;F$ZjJ@wnfuI_!6x0q09lx*A$P9t57JpzzXBl)b}3ls8O)KH5DBx64A3fQ*-c z)MhG_DtH2EXHdqg{lgKuXe5yaHs$j}&fR;|BZ6lE{o4l{1WGBVLq17}>YV86uW0*b z3=eJ0z07dcTNWy*3G`sS$6nW$$-b`S>1ruTB?~YQ%k2G4l8;xAD)DKP45{)TAGkf| zoG_tjxHg!^ir=`f5+%bf1sOM`OU?4ciNbJAzA5E@v_d6Ane;sJRsHs48^;Q@u6>fS zZI(E!&%c9x)Ps=(fmm5;m876KTHl2~zsSgeFW9)=ltj#){+a>+6GH@EK*Ds@ma2Rc zR@JFiZOc-$e3`F;?EU-m*<#DmzW3`%E~rOg`u;%WsdJ>qo+MnmKm73F`idS&)$0;G zJ=R?}o3vYu(Fm2Pmg4y4SlW4#RMmMQ4mG*0VrrDX{2t_@`k6jo;#2S0?p0eDClbWP z2|2Sy!CyGo>%@7F`M&jrB^w|FK-r5aQxp}6kUQc$^ z&104Q{G#eG$abNxBT(}7#crJCj)kZ;277v9(K+a_nhHaDqD=s=7^{||k#4dsZk**8 z;cHX-DrAGI=81~ zI}AR*cXGGtk&nl$4?>c|j;3=_lyB(v zA$?hFeJ7n%+8BMi@BUQLX%IeE7Wck&on7s>m-H+pvp^*HxX_eHb1%kVto=czR#A`< z8sS+-e+NczslQI~ZOw7aX)2rY>s6bhm)FfK(f6dn`#@(H9g^6AB9syA#>WL&?y%tG*n_=!YHc?Kg@g zUcCyz{>I148>B$*hwI~q;;&<~mu5rMqJ>_(+o4!w#bG$uFp--uHyJ)Z=^(J9vmO{C z`Wv;cdv&?RXw4Mzc``@;6)1GntA1}DzLBA3(k`b3!cTOFoYVso#Y;mqYXLh9QA zLkHLAJ-XB^&l}%Xs6O00(m#;W zzAe)aTeGtBQdqo;9Z|eN8g(i{gi!TT`l0{$*;azNQvVt;R`@k^J1EazTC>F5RcG;pd)F<0$fa_*O}e8& z=l7OJcK5~`it>bBmmkdPL_}`;w#`v2{gzaY@WQo4-c;y*WC3m|OGJNpQ-kJv6iB4RVF`EmAWRSC($ex0j-znGP( z1&`=32^%|m_Y>Lh&ec^DLrr3!m!F)SeGSCVX^oAIHz)2xxQ%NA8y6SV3j>TcA~NjH zm{p7kx4bz>Xd(n|(b^->7SlE^%Jegj_2G#Y%Ls1S4!%o0IN47uMl+V%;Te|!KOi_l zMXVU-p{OW+Hx_Huex_?IlP4`|o%6==-p%A+CkPElFC1rxAqpfjy-HCeoQSB#ymaxs zjU0P=nq$DL;g%>*N27Zx@*xZ#u{r&(UoR6dpW#9si; zH}6j+6-Rmhr0UJj<`K26qm?nA35~pa|5h&T?B>X^S(`|{F5gZ;R9p_V9gDIJqW+k% zM8$BVlsbou>vZd*{aQqmR0UgLnR1KXX38^ch_wOG+|bUef#qyn83l=ID zIez|v4HCLFxz~$V?-Q`0)FlLtTRTijUTosmy!!#e(zm8t~|2XEd%w*2_>LQ<|8B6gkA=&7wW8Ckm##P0gt zj{Ytwx`$5hJol$-P}F^xXFb~EXAn)4ex?3{L+{u1ysKmInOSBx>W~qcS42k|3X?Lmem{5cOv!C|x+$eAU@AegFPIm2L5VFfb&o@TCuC zCYrRW`x8ze!@3!;Vs;e1Dp7LDIr^Ovlz_SE%m2MOr)D2e&>|utTx4Ne1LB~3`psms zSe%g%AC!(W8X9In%{X?e)$jG!X8M8dM{9md!S`e$_-9|JYk#I4J#l_?<(^zlO>NFh zB{0jxT1R3!HQ!`Giq=HNWL;sL<5;0|c*aIpK6>2s&FLBn6iS(TclH*nO>s7ltCUT& z*0PjMY5*!t$3#fO*HvJ&aD|)f)4AbCuXwVr$S!QJ zz?NlDN>0a`zeuE9_t+|#f7<`HE8PNVpc>rsDfc4B=h33~0Zmqy(^bjU;4^zWgc=Ks zoV-_W@}4Ll!au0RDlMU+NwI77O>&9AU+_?SUxLEOAfjlrBkGzhQpqndeY!uyHDR6o`7Q!CJ4! zYNm&CaJl{(NMV$=T6Tr8zige&0a5qUtUpz^Kr_?1f4)BLG(#NPZnT$|;hWC@VY%e$)4$#C`(G=Y5NkFZJl5x+zzl1; zBu>6A^Qu@5s-o67K7TM>xV$w5DSlFplb&E3-+D{qn*mhvwCak%Cq>3L0+SM1i*Q6) z8Wb}&x%zJo<2H`Y?^3qo4A$4*0^ z9Iv-We9E{QR{=Ym+W4t}@v3!8{mOP+&Ky-to&?)v54w4Z=e4-|XZuiLn$u-ghUia< z#dPxd_S1M~vY3D&!f7#FV}JAIXjf~K0Z>u^^0z{({E*&p9g&p$-*y2iqHf?Hg-8T*AZW_Qp??G2PyG2~0{i=9#={-LiUg2fh^1T!?Wbs<>q|3r7a#s|GwXO^2hPQSx`{lpc0m~=KS$R zTd$Dab#WV>ay1WE+U91>b7?ANagK|L0_~}Q?e_rPn;tYZTiNQL4T&e2GO{m5d{4I=_utd**Oj zLD}I(&%?~5ut?*6h6E802=ZkJDE4RdB>pVEh?&W^DD>>_?uIn)p(nAPH-BLglf!!> zCK)|`@QCYDbsQCY$Y*x3TNU(s0U^{nbEdmmUvDp{uFC5e+8Y>nSCbKG9nE*F)6jWXHSp2-gT{?x*r~3+|9SVlyfY($zGW z`Qu%-LlgBKzd2Ixs#z!j`#ola}5F=;S&x(yce>ty{ zGQ*Q}j^de0`O7i2mu*PQWu3g7WPPMj3ueA0v2j48??et4dybK&rJ76VH20;wU3zkC zj9!8KD`>gf`q(sIgpvU=6k-a#(>YBah~vHo6b)$bAi6i(O{`iiPwsv@)ZS3P%Ewpb zMG!!+uS=sSJ;d(`xFpOlBwgxXY9nX?2_kmQcX*%^W?PWe*dDa@2J{M}%l0?ae)0_y7(i;YL|fChIgK-Y%yfQy1b8it5J5&F{eee*J@cCDmGCaqC z9MAbHEA9pKQwH_GEYb5Id`-ITC8;>X%q~~}9dE=ft@o^!zP@aL$^n&jJ?zT2A0JAP ziXL)POF)&%fOgMNcY+A?O?^O3po7dS(nq&KTDJmyEW z?#A=RT-=HnJvm&c8?}@9&^4zcf`B0>>1*>jt`2N!fMw{=zQ17^j^>JqJx^AD%7u+` zekoL?Ubs4LUFiotlXK7|0{Sa!hG06Nv##dW3Aktg4~_f#`?o8pst5A8hvly< z0}vlwUPpo=|&An%-T!BJ?_DJ9>yjyDx=(Ob)`jsl2EvWMZgXxp$V$oYLFPd&L{9Bl{WR)Gpkp|a zL~U$nC{c9_lCV>IP-1p3#hpz_{QjMDREA$7Rt2&z$4b9>X{DRpGk@KP9qLMqJ%I{= zi4i;CHCtkkaVSSVm8u~U6+goVMmiFhaMkO%6W`15({eOSX!fE^E#{N~lVX}g^%(mcLF*x=F-;O2if_Wt z%L|_6U~dn4UFV_?b?KWtBGX)dhN>A7sz1TT9~0S0s8@RronQABr^6pyRK~`%ewqhJ ztI6qUmi4u@6DbhV#eN{#_@;$fK>^a6#Jadd&w8VHN_3K|nvJu&=Md!oh^qZoZ^b7d z`R+*EV-noyQkTIBP}J9htM~paQzAkS1sN?KX@S3@{%t@}%kU@5JqHH|8?GV%uLYTP@4=spp;8Z7}9Q^rGgzNpA?4CTsIcK#jeUUiM&u-;hS_|CW z2+gZ*0U(hmK{2+tq@&@iW#B&de5Mcsn#Z&DBY=@0+`d8ji+`-9>E$ z9vD-jh6A(p?(V##4Uqkkdw22HcQ4~V9ze93tJK2ycRz#5b0x$KLWuCO1IrLKLho6i z4i-c{NcaWy1;n|!zPo=KS;k4_Zjetsnl&A9b-U8z0TW64~e7wu>TJf+#%NH>aA<2R7Sh?}!d> znxj~XT#t8~@~n7|PRg_j9(Du}SGtU*WR_l{N|G)`0gmiY4>j2gj3=jq|4)3#e z78FxjR)mNC3Tl?kp?!S+-V5~}`agrxDK;|d6aGNrQ8ZWXQj(JMKM{hX~yl zTqHZ_NU510lvLi}131ey^vevu4^_;r!eQ`<0rGzIU5_XXLE4?o6YMXelFu1_w{1VTgUHfN!cy4H7~I$Ez9I zzQ{$%YRv}+s>}6RmW%0Hg$EuRqi_@%o5Y3am9(;jurFt#7Vi&!hqRuIK$AOB?Z*{a zCr)*J3Un^5$tGXnI8G5~aYx4-+)Iu0vCkfOH$|#%tDoo}u2XN{!q&-j zu~|9h)4$|KF#c?(C{pAUCl6lz`8)MA(Lk_;l$M*gX)qaCu@$^7U)lBaaf{LQ0Ex@- zed#5`7cJv7bYeMSTDPBoN?AubA?0cAlR;2}Bcwf%^fmjb9tQh*3j{|n5iVo$RU`$q z&7I3RJ)5Q3_i=`E^i8r z52cKvZqym~j>w~@f)Vv9x^)Kb-g9`}I+*Z&fC4RFPO%At#iFld`lAA&Rnl zSXn4bC{;p0P)EN%1o=Dlyb_R=N+WLA*xI&T3DCchd!^Tx8RbV3L82SAwC*`yR$0|t zOMQan`f7sl!6=q=(*#Fy$>1tZ110snxAWsn*ak%ztT;pjgLf000R{dUUudpU=U*PU z^rLL0J!={mO(x%G3eB~q(KIP28&DUFcRzQz`GxB9X&y`th`9ZO4AZeXedZmP-rHUpAmdhVAYA*u3Nmh$2 zl2NzRk0)qJ3@hsmUqQ4Ty)a~|cSF0bwUSVtLc}WZ!q5~pBDlTTiNzP0veuZiBsU$J z=`fP#Bm_N0GWY~$JuNzxB-HTYKmSbg8dy2^4PVmhH(T-6f8jG222JqXcaPnv;tAw? z$5kPs0QAEIMb;qLt6(c;KDP01xg1atQJ@->;lee3W8XvykHhte74qT-Z-fVXe7iBSGN0Bm!>@5q4*GNVfs3v*?%4i67cf>6;R z&26t=<3TTnEj5NsN|J&0Mvx+gIMb(u_W*r$S}lBg7J83b;EH^;lrM=*w)YPy=}04;ktNOqR58nx&LLXRv%Pv!8;q4Lrd!0-SEjZ(u&JD}^}M~al<;>jn)P=Ex)Hi{ zWMqR?m29S%r}e4+4%g{z6uEJ2IpkXf2}eNp!pyFDAX^?xOPm3JYgoN3EwNpX6PB<;6w}Z5 zEPOYfFl81Ifxsq4h-gUO0A4EQ(eykithd*cM?NLWb&-3jp-$a(e*VW~o^Pe2$|!c~ zw_^{0)SO*9+hC;HqlD+qsqKVhbgWatKu}{a$ZJjGAk|Eu352HeE>6{-sfzA;GjIyi z?Te)xuP}7~DKUdnE};6x_p@VzwXZCkvgp-}ASa7#)*+TWcp!!mV}-VZMVPWKzBoFj zmAMh_NcSLLHDw~;=TdB6pjUR}$@~MfU&<@RY+8!0YXI*LmU9D{O$Oj)CybCw9wR_b zNtbv5tnH9HZ^=SXUhkD-Re{!gT}L<8!fJ_K_{8XFt}fm@@8%-`OiSbMrJB+k!Ld|* zVK&%`BErJS1*x}fx82WmmjU^w^(pK>M$v!yB5C3}f^+#xFb4rPX79)c&f!pKP&*75 zreF!!e*r2o=qGaQ1lw2%GFw_&d<42TH#Z|n*<`acd4o;}`>slQJY_W|{6=~mGaDXO z=Q`QFI4r^o5~h#kea>SE_Pwv*TxCYO@lsGxBtmmjR`Xrr#%(#VFY$iT@N$m7u@;DK z^PY!KIU4hdwhw~-1z2S>c$m#7z#}~Y6OAnlUFdjhAfcatewhdkrK3~7WQ0oB$ViHg zKICK7b`w`Jqht=9&5n&%dionF?x1S0ZrWb-Lp(Q``q-d2$@YmIm*llP5*!=!6GNM) zMcG<`Ss$fId0H78OHR*HMXd+*=C8+^ZYiF(sP3tnmyHV3FR+WgDR^+NDI_Trr@pSl zD|QbZo5^X%=GU_%&4879j?Nce0w7N<)24E)Rqa)r`KNpb6^VmWPB=YbTQ;V@I}uDb zcD`$5PL}SU_9VZYx?=obMzXZJ8a3<&ri{tzdyV#zKcGgLVY0KcQ`0Apr3n(T#+7dW z9Ly>jg2oKmPj+&$D2qC@P?~v4L_fdKF!?JYx-_4BHMde|;%+)Z8v+i3B8N87#_|^F+U9 zcF))QRxKQ8>Ngi1@o`+jxro6}1t{^<=QAc$oH3)Urr^Oj`kjAF9bZ@KBVoHEnyTog zg(Q5R zr8YE}?-_o69F2Yw*UphUD$Rh?&-n4_*7EFXbv!|cCqY$QTDFn4U40QOU5k#5#~xm5loQXLg4ng~QX7;q<5fr|E-(WXHFx;5m|!xqy|z--JAD03vMIh;E>d2>C&i7@mST$dZ^(A9zAI2V-P}HzHgR2c+U1_* zYBaI`LOinwRE;lxYv9{|+x1M3M^hho!>KIxh5@)jo-ZI5%K%suw~vY7*&l-4#3o-7 z?<&p7Gnck48fIlw2h2%v;3bmmL%i(M#| z%ug#e+7WdCTy033DLOFFY)$k|*$0D+_1mlK~EDf45t?W02IAx zv+-I^*IQHn-8dh^Vv#bjX0n}zkL4VRPc7|QQ-_Qp>+!VNYn{}ENGUM^V05#QU(#&-4YXCM`r(O$ z5;~3K za<9NLD-`{}6N)D3v6m}H2_K~2z4jjxD0((Cou|j3V10Tqvx9okjC{)ynxP3axA?AP!1ZI|Mp80J%|hx#kbqsf{62%VsL+6XotiZBa$pA8wz%48_hgTgY)m7Nt& zH^*KF+URtL7E)N83Nub;ls+158mmMpS?8i+KN>(7?I69c)iRJXQ=*~G4%?Ru>SnWv*K4%Gfr`#kjn=fFbl+cV`A zCam|D()-@Wi}(&~Z=C+xFj77`g+1)l@2eHh`*DxMPx3 zZ9f@e$a9aj9(Lb)S65IF9Jk;w+|BHqFC|%C(|T7{((JLCmC*1bP`rUGWalaBcFE7H zq)R2JhbG&zS=AhE6y;<&@y3pfM-omui(0Ku%mx?z3sbivbm$t<3NP9=8rHj0XCWKD zN@1pJ?pHV}BK>CS|2TiKJYsk}8ETKvG=nCyO(GhkX(V;+K2tY{-KG?|9Dk``{u1fR z)iWvdmmG=x^`rzBljFH`Mjoh`pE7-k{DZBjI#;aN7r*;X!-r4-w_5i@HQTn%Lk<~< zK<9U4EJ*sbSD_lKYtnR99~S_|8;|rq1#fpR3@gidY%0xNW-|zgy-{ z9<4l6@KP@>E@r4Zj+_-Ae;BKNHAK-2O`Po@rZjnJJD3b&;L;*ZLoT}?dq#&YQXYw7 zKq#0!+WrpCaMs*MTGbwZ+@zixkCg}alTV*+KqId&bb86#G4nKOe^%0rQtwJV&NI?d zo|pTbrysVp;{wkuH_k(~F?(?~&kC>mob?g)z5Px;Y2P=<3dB^`;BN5W$sh7~$N6)c zf25xvq)E06%gw@*C<3*YLEp?u;f$FL1_fo2$3SdU%OCZ8Mf3+v2l=VQLqXSx<6sI1 ze8&9QmWK6G-@sO%V$(iDcILjgT4o1Pb@F`uF0&`*5hsFL)*jRVy_1P2Sc9sd3*!EK zCTDZ-9X7p>ZrOtA`&{t1XviyCU@L59PnM|NO!&G-Cckajsq@3^{X=%g$dz!TI#pUO zZnA@39MvZ$d2A(FrjItq=~kv1dz0Rmw@|IdlEnkdp?{mzu8Z92_)Okj$hlu)g!%Bj z7okatN6~xV!bg;4<8QhpN8Ci-=ky0l$Pdmk^_AnVmKxc~OxK^PpX##zU4tycr0I>c zQ)*m1i=-OlE_+YYb5+OvZjH}t{u=B&?KWx3*%VSK&^7WL!(GOdo`vH?VRpfJca%fT z+x))H>A<xS*u{aY?DFRkBrVbb(huo%#@v$vP) zI9g547{J_n_Le!o2*`p={w%U$wCe~l5;9gZhvsP+!7Go-J>CY1t7_go*u-*g#|v9} zfHrEZyA6eC^IdiIo`!~iSIyJaU#(c8C&3TEP=3xuq_Hm_%t~^$4_@l3nqSQxlf5lU z(tqYx{ZUuEceiJ#v~I*xP17XFwX485O=5@YbUXRH$m&n@fLMtBXs09B;3Az|){i_R z4O#;?S-&wf9f{hV`)RaIUu0O&ajRBsY(aS4$IrF+^JP1cj&>EiNx zJ3Dr^<7mRZTo1AC{Ez22id9GR!Hy?{si!M>&r;q5W}=bsSG+Y&=r%2nZ`*CwyI^=A zomx;B_$mBIl+E^<>;BHwU6E%w2fACOOC?fw6D@jhZVXL97XZ1Nc|SlPs)Qa!#M?{UW za@b2Pdz9Q7imc%YvCpj`xO~1kXxWTZpFq=P?m;9yZ=|&OCzy^e=(92Y6Hec6)*l%) zN@5cwrJbT{8A{3e>1`*55KE5m^5Z_I%*-&yzya8yQ5t^~mFt3#2 zE-u=fK=@O2wMs;8|5v`3cquEV*@A296 zuhShD6u%8Q2|#4j^^G(dymTeHUO-&^IXI&S(+Iec5{G#xB2EMgai|Bw=`f6MF2MIbG$7-Y-t99g}coITj!{B!SP zODM?-{XZwr%0bLQ`1FjK zA%jnxRFabA&y9a}#-E6|xHth!wh188 zTSb$*yC&A}0$UJgxaa`Hq!2|B+OF>I%#ea%e(=+LLobn3ENekO3}SBGKrJV7?IDkK zAW`AGY>GM0oHy&T9D2FP=$m_bx+67yJoq_yrNiAP;jBsGd`h}0>qqnbrR>%P5aLi2 zE*ZU9{V|N{H1qI2tyH$q;gyT+uATIK9XMv}SvmGKOVb z4mQY`%PFW38^@=RUqUm-sJR*E$c6QgqOn7m3ud#?^IDr6u8+i=6vzc-Y+*}iAiNvM z6-A^U6gB_&ftI)wae(ApSo{HaoXzLWa{&Kb7Di~df>%n<+iOa$!CFOvNh&#ZHaF)* zrPLiA-e@Nl7}wx^TnzeIKum180uIrw;bX?? z0^iEFu0}F$*4pcR8Dk;zcspIJMq?)XOj?jX#Q|2VD;A-#)0ip>x)ta9>iX2Rpv9^K zLkKOwWC2#pOt5Ci9D1=g!6-YeS^QTg20CKJuY|Su_9)CI4c+2gl_3rW%iRV#f&C7Ryg6(guo$uCz#+*T!ba>8LcLU^+?bgaPF`5G z9=rf*TJGU9WOcQ?rs%)hj2qY)<#B2(_wgFuw$1WkYw}h$$aGHJ*&RJ5e~~KwDfuDE zGgN2LOWB!DE)v}|se#B)x{t&uRDF7ihkNkd6A}_gAgg}p;_{9&1g&Z#qCOBdNNRa} zf_l4f-`IEuTwZZ>rx`z%ms99Yzo`E*zoLQHAXj8D=W4Y>Ihb7fIB)0s#7#D{H;1Bb ze+oLs%PwCjlhYZ3D0y&y0s)D<}THSgx%WcqEqQr+@w zHr;dco1WHgo#bD0H1rOEJh$!kiJ zL+s9++XJOu^fDYWx0?-*UY)`aoZjcwrz{gDlcvekN=iuhnBq)JRaQA<_3T+iZ2J@6 zD&r2z;c_z*OrUGgQWK(vxdFRQzmEQk8{s&PrU$%1Bn6-iScVQyD&XaShg9|T^?m4^ zFPWd8x9{u!{akB`*YWME_P)8pPyYMQ{4Jjv=#H_gYT$;;qNT(F6A$iM8KApz2 z%~-h-i*HEBkFOJx@QX9aFYOMPX`T+b(RHH|tZLf7iTP2W=x;FlTh3i41Ns?*?L1bjy1{qmP_HrTW$L z!_CNR0Y}fzLRCo7q@tCtV4Cx&Cb15ntePZx1cI6r(8Y;{$5`<{)354P$j;mXuCbxn zAK);!eed4zZD#AOx=bI@X*w{_eLgFtbJD&%jha&TdwG4~ z4VQpYZ~>gHz(jzt?Xzp&!GoJ@x;5&^j=@}a63w)cPf~*T+ zFW#5<+eol6h#B+bhBjl)|JuW_MMp;`f)^5FAV+pYVRrVlrejQu-rGdVdzV;xpVfu+ z{=A-=dEZ+qx0B;$69INCpE_ce2^d=<{H+)m5&;Ea;L!TE{YlkVHaMGAio{!|$Gn!g zCEB5P5OQaCI+b9h5m+!P>4FCiuxODu2PXy8VDgqj^0f}losK;a8uMtv2WLF!Y==ly zC4E^shz3?m5nrdhq}%j64QJMcSzL5s&nv8C9hJYUp--)p$Py|f;v~RnLeHqNP$|Y_l5gKPj+~$xG z$uz>z)dX*{nU4sZ3lRJK4!~;If{iQ-w8W{@R`&KeKtltctDe4s2ado&G1w}#6w@*x z1T#D=$#c}T=$1dI!Y6mwcb}Dkf7@u>wBRUMc)H=178h&4(6D)iCVLrD3O7bB{9Ws8 zQZ{u>Q$URZYOlEF_ug4eA;uZQLP%SqHPblOXEwU0*Fvx8UOZw%JmCFb4;vEwH~?>u zJcAjUCS=qd#&)4TRndfQzZmQ9`R{3+4((feKj6Rh-CWB@hDYjy&L1JBpctAP*)vep z5MipRsVTd4S3LUkCwCFOK3#B>_4V}?IAVJ$ZYPFc{}T=8y^^Ka8hwyRUhd+y+y9wd zAqA6)ZlZ?lKIh~pRBS>DDbM`LSv?)7Gg0=#;P5domx<#3sW-pt>%f5$%&y9)#o5Ij zFKi=TCPVDKM?=niTD}A4Oyxt87H)F!mvO=0$lG4W~+w`Ly+#6NOZXx_Qh5%vCN-RnPewK$OfLt?VKA{-t|m%)Lzb3i`(iWfl`Q2$5?w-pV8e}to7!uyViNmA9ihI+o_ER&^E%*m<_ zhy>79`YRadm>#gXKO2TU8zhN~_(NGrjFCb0H@^x{gc_uFYom!6$8PvX%O3SNc=9)` zpAk<#sk*K=X|*2yQ0|G=rTk`LVbW%IGmwRd(Gs;mFc71<)CziA z2b!TL^h<*2kAtvsvsOSOGl}&j%W^~e)b)s#1k&7@%)h_8S4@}c!k@r3QvKfIlFKhn z<=lW;^7jh(OhZraaF->z5ZkRdJNuE_Up5n>!l+oV^>og7;pv%849B-2XS@DR9HJ>M zRqyXKUGYtce3^E?FwR+oTY;p%BY?K!UO;=@jX->xg%EXkt4Cat>eA3s64r$SXFB*x z4S~Rx_Q}^(f#DE~?hF-^Fw=5tI+9+3V`{U~VLbm0BQ))gt~1|%5?D^(TcI{Vn_2&G z{r|h(3LT6YOB(!TsiN=O;s=Io{kS7(ufW(3+%QbChCTo_f?sqjJest5Iq`@-y{FBz z@gv)?$jzh#m8eop`-kg47E=eNur*m&Zf5ZCi;A|!zDJ7;yu7?zA7oTj8Jcx=bc90q zaSG6_Y`OsNy%#*W_xi8q7Vfx zis_G5b$6RrJT%Av~$@N+EIh@Jfv?`I&{GD@juk4J1_UOUH^XJ#pvZNOuvHwmuaAqE28BpKs>H& zT>$t%{Q^wS_z8N{Ifka+&)nU6fL=^Q?DP{su82;^#8uyGvyZ-<#?Jf0AQ!q$AE9^8GGJX@Fxh1>Th+Sq~v95!bt^vK7&CCvHRwj z^Q4N^>0QB<|C=H4VEJ5(Z=Dep)%VrY=n0+ z>+Kmy8zMUwj~LEKd@oZs)A)Mf3k>nBGZ(J(CyFt3FWn>M{${on^X0SGMU8jw^>N*| zush!2#Xd%bCvj-gQqQ8aTOMoU5WG4cwIeCF4+9=yqM9PW$11T&iscm*IvlZoU-t%7 z?$Y3;v2{mMci3KM;`jV^3lK5*GPMN3XTA9FI`hNqQY0-MUEct7JP03U*H7WOEr(VI z;fA8w?tiZa)0vY;GtjjdrDm=alN8RipJh+_%fdwe82M&oYikSmY_>Eq?P9JAB>EKX zmk}||KW;tssrs-U(!^xspnrPm@+#<3bm^Fa&q!t+x2(-U+#?bN*$7pnGoA#4`MKig zo8=AbCv9Mv{z!G`jQp6*ivraVvdan@aj%K8p}Pt-5z-vumI2q z=MT9sQ(ba#^N_rsP?unnNlUT1ynL;GTmue!sVAUQz>&Xep_L`3cLy&+%Wg+sJoqe> z`EM|c?UAUgY8PRUi}gl7z0~V`?9t;5(wJ=%t?^Gy*x#KEdgH}ByDZhw294;;ioc|! z#1=hRt#EgDm*PbdIWBhp`6k1;a|BQ-1&@leJ1qR?T1wn0sVt1&m3c?~{@i)FQbM7k zw;BVN3ikS;An!A=ryQ`7V)!D&-2cnec!Ew@7Or|v!=RQn6Z_Z%&~SiZe{~x zTqEzde8^wE<`)HiA)(>Y?y=iAjaGt6I%bbdeiUd{2%HT19Au$RmWIh+F8H|Jp zLykGUF5+c&7tRQeR=dCc=ib4|<>1ncM4$%pzW%FDexmQdw3DL@((@U6s)WjM=~y^1Uy>^1k{m`j1aYv^?%%4f=TB$VhEMhhEah0Mts3Ne)m- zz*xzl5W~(8~yHy{1XUb>R^^4gW7vS}q^Br{V` z9fJD*U67*5EJ4n@%tb>aC6G2txe?&Gg``Wd98(!=X2OVu=K)}DLH|JxgO*}K%-BA3w9;A5Y`c_}Z^9aK7Bul- z5u2zB0f{_fgZ`ARy>zhm`@OC4VdzVn5ns9l%>Qr=dRZEKS?yIh`c7*tP+@m%P*>GI zgiPw++strT3sNNQ{rTPq2a=b6|ISimtv`%cu zhD-qUOx84`JXUGf_9BvxbZ4du*_auie4QDFspT`~D1nJGztme&zKMwd@P$?oO`UU| z_57=el^%2=_mI5&%BG~HtW3aR-w?I|Rf zpWujfFpV=Q_qqs&QBMbrIY%l$~sVj*F{2&}Q^v)xAnw6E6Qs@L!_8>=ld%tDd|9wds(8(K&V6uL_n3nMNe$v{Py1)E-? z9Y!uV>_a+(?|=nu&7aU~)A3DX62SkcSG%uIBJuwRpu(JgPIRYBTWXwyqF5>0irBuCG)>&^N?pr~E?VU3>+FNMkJW zfG7kPCV{B~xwc2|j+mGjd!pJ>vrDj6ode)B=rw{cy>>7|4?8g~OJn0Qe(+4O|EcZL z;v$p7G$2z+FgAkpDNR(diMiHqb?kt`rILE)YUh9_EB|QSAaQQ=09y9avjtXm9?e?P zEzGh)ag^C@K)cFZiCgbd{{0?*$VsWoxCmAkv3?9AU@IeEZs8~n{vc+~v#s+AF?Dx- zH&-nAoP%!S0_~ZueosFC_X;;^#w)Kim6UMwuL3EOQ&_%hU?ASH%lScXzPbubON8tM z)(D>x-(O&J0?+Vsd~#9}kQcx{3euHoiM%1lkvGwxf2`QAM2X+ln;ZP|C!x-M$ajt! zVXWpKT$+ZAJ`0T&mL|=(gl)gHp9~ZdC_xd@shal5U2!r8?W7snut@Z`o0Z9K9QZfu z@IPCneUtk4f#4sc1TA$fY+lOC)Dps9*37(D%M{SxhMI$vN}$pUC;d*zoFCaODR-nr zdOh_GM5GhlN#~>%9qq*NTjg(W6tj)ZLusCBoBS-dpTt(%7Ir1U5B>nmiz4G2Ix(Kf z=s(jy+S5~4RD{M8X{jJXhCywAjLmmI|3Cr<#NnwQOln)&@|hxmG^|gdvLMXCo&YnT ztx%sAJzvClDtXP~)EvDuk(7q#U2_=B>Ih8{pYR~wXWF|$;u>yp@-6AUF_6szJn_$E z1H9z+y1gM=JaqM8SnmdGtq`{D)xjXnnpWe zOGSla>rfiARDVmwJ6+)W)<{SXFQF-;+h${B^&76RITSTgyi8OIF_MO zLe)?5-&ua0R3wOsH%WPaSirh#`(LOE@QOlLEf0Z4>GVkjpvYZOeIb~Fsd=LhFPwT# zTJ6j{=o>o!?~`&}z^D7PO%}-tqp8$lwOV4|U&O(g{rOW_lB;3ALNY+^A|y=juy7%J z@=B=YwpFqi(+`2DXP6%_gUWDRfV=kjd%VGjG0-<+rv;o;D75;A#z@Su48>2_}ZxwJ9 zo^X(fWrK}__;r`);zlqa*F}6e)DC=LQEO(#aN6&98mCJsMuy)4MNPDYp|PYX406{2 zn(nDoZmwU{4R18+0Z6ln!C}j}nMsQ-hefg=L;B7mYwJ5nq1lkSc?}tGDMI7sG3wXT zUmt$?gup*h0 z*E1!4fhqTRFi$yjKc9g&1evlENwcNEJWf`2gEyN4rh!&-Q4lRY@e73j_mrg z-C{RfA7|%o2ySR5T%9qG3Ez$xF` z-Myclp1vI9A+Aa$XsnfE8`8{Qoo?^mZY_;zxBE%H)XvpB|2j!>LyQ^VQKaK-Uw;?V z+Gdkj1%(t$`^dfK=8ZJ$KX~AOjYtz9r68EsQFCU^~3l)FVR>MWuh4 zg8j6_YbMxX(}weyr-FD9>sIg)laA54wwxSIg@Q66v3=TeWhh1jcrxd&t&AgwZTudF z4#npQ(m9DJAp}~2sinWuVawP`e%U8} z^o{~DAt{3POT>dGy6L)N^I=H87p#5HqHy)dL*!?}dh1;9Sd0IQ99ACaRB{x)*gu$) zHw9E9X1=?9dTzg2U@q@WYQw@k8Yva|)V8xHv)E@1B z-UG$7gOvfCs#|Br>+$)zp;+0U3kp;LTykcV@e|u#5<9=!j8k{}0o~bkbdD+ASDRL~ zdwx_CTd?l5+Xcq}G#2dp{7Tkq_f3b__rv=7^gNIE>>WD0(Stb~kky46m{~)C)xJON z<=BOiLNBP_#6--#IKvO9?mh3&pF%Gp^QW;|$0NVG^GHtz>O&u(Gx6S-aavz5-BW4T z4vAkZ&XW~-$svdaF+p{d?;W!PY`vB@xQ2V|yR|dENAh~J*AHe!|JzFQa#;(14<+=1 zLNvo&;LzzH1*^UN>c<@*8lc<~V1E-g$b3Txe4{<+G)K%!Mnpyuu<~;-zkM~KqJzq0 zf=rt{vibYOM8-PsikYKZ4xUz}_kkwxx_Z^t)Oh>CjG^JazSz~p z#TGbShCt(51?g7};AdNRWGky->R?}{mi41b%CyV%CN3e*KZ&Kr~^T$)SD%cSi6~5ah_*s znwx0YcTZJ7K%ns0r;gms`)=7bAH-H`0mGuaJXY`X)BUHj9-yr6+$ytK9=vw#+EKG} z-(EC$x?E_=v>=X{!tsPy^7OCvw{9eMHB(EnE9uAaxEE-u8|YwU4#MLHdb-EEsfUg3 zY8}r$*TvdUEncaTdJX+=tL*-QhP*bwS>dJc z$A88~9aPiZGDVa01_WbaeC~952rxE{wyxU|$&}+`GJvbTTX-)ycmU+sbh7XmJ31(HAim3@8Y!r#2?mf&jw*y?1l3h4O!&y`^;%$Cm+23T^K z>?<+>T%yn|+qr=^@NIkXQ|t*cUMApYci7jt;9yo(BkQDK$TcLBh11QEzd4J)FvE07 zUywIz6OxagoP2>MOBIaqD!Mc3IBApZS6}aGZ(qnxb!lr*(r3`Fzj)5k_lxI5MP1jS z|3Q=Ac;+}H;ly$Zq==2rmj*e{?>kJcpL;DboJskoAGZVb{0)tZ@h$$1E4zFaz%X{hD&vH|*HcDqQNe1sKQ_F0i9t#s7WP0v{NPty$1HKaDl9 zgi4^JTn4D~esW66%mX_BVQj+F5gBvBvDvN$0i+mDg!L1qP}y&lgR;7jM3<01;vpSF z+ZZ(|n5;nAe+)y*_gY(3${}Qfp2!8*B7@-C0dsvdBLwMLif5)A>&1n9&t%N@&ky|V z&nH6Y@m=flh6jemIg-}!qWWNx1&F8!apVUc&&}QS7CCF%DNOgbU-dujF7>rFENiPo z)#$GBCJ&qWr1PRg@{-IGX)D?wB`F!XM-VLQ0^k`y6uomF+4L#(=rm!lL8rkFR@`oK z#YFyD1);B5htc7c8iMHc;XRMdquv?R+yU8G%=N2U3{~qoOUSyMb0L1}S4iLoac$J37k$Ta&$b&q=dY6#8)NYiclyqz z!$Xf0KYB~iXVc;FiSxyI&U2lSCFQ>&Q!E6xfAI#|CUTXGnG|b@77u<=-+vUeTxD0n zit)zGorGo|Egq-~z)d4eaNrB`zKdAiVc+?+s7f1u$#zUg-R z0UvwIL=VIFC4TM8?>cN}c4MCI;Y}LNms-@=-IpBj2`aIBlDOUWI4;(4TXJ!TrTl5( zehK&T;0OP8c%M_e129y#Xh6tdjo9@BPOx?_rzAcD4O{ zo#**5NGS5w8u9k=ceuaov41^gSoi;OPBV3C_Px{JMPuDd!lkWRXx-Ltjf;3D3c2kg zo+g)VtQC{aMT(2<0 zPp1lM%JTUf1p`N{I~ZJ8g_edgNvP0AYk-PuFj}XKzL5MofAubi-YaH+JNIgP#K>iV zv8OUL4_ySbg5)tWctG_lz1ousv)!28UbaB-26Mne6bBzgO0f8EhM7g#eESI}^iNZm z#wT-Oxcu-JrKs`{c+SwTT~ib_uu~&0C9Lkd|C3Cv|PFlI80O z3LBAOoUg+hOW1hj8vNoj%gHRh)GU_5n#Ir+mNt=rqus=fFucjGRKDGEv7n~n;E=?P z=%@D7nOV}pKR)p8FY_^Rl=w&8cD!AS_a;%($S;Lc_X#Hd%m=e!^4=B)JoQ9RWmei4 z;-$*3>ONxgT=h=&@h9aIyI;!7BZ>6F!~*S2Pz^*AY~I>om79x9dbgLLm)`b)gM9SK;f z_aaaBI;$`(?g#30i2f2ijuTV1s_K_{v$isx{5AM~kzqgiMm6cohn{1pTHo6Fjk9K0 zGv_}%&gW74hmL!1Ph3RTZ@a9@d5xmn$zUWnDM#!`5not`3;sy?0XUop4^{-b5k)1SVxNj%yYkz&h^cX7~rUX*2Vw)I}tDolf}*Y`|NF< zoT3Uioy!Ru6HoCKmlk6iNwZJr(K?bFQa-5u1)IPCA0W4vsmKd#Fm3ONh}Ps zS_fqY9Z#36joYlh^2IGz?R-w09o!lkVWM_x8ESX%zG=LvVi|YKVBFUaVPZ9jy?x`t8ILeU*6bUXd&|_{d;50HsW_Jp zJ}GkcGRm7uay6yorNOZdDlxN1O)Pxzqhp!2;M?!BGF2zaFzhIw+2t@^?%Ny9=Ta^@ zRTe#dJIIoZQb_t3$+@7|vCLvQxb>XR(rjFpu=6y5d#kvOoDJ}U(kjuMv9u!l86vB} zIe~54S^LGIIWIH*U&k-Z27N*FkGZaE+#eVF!YeEz?MFZPMZ>CXdBSs^Xz4Uv zY-ht_UnTeO&$P$+^r?o&xzM-c^8m?nA-#No<&nW$FB*|1R|PH8kPcz`G?1d_ezl4d zOY7x(52uhy;dIOrnJV-N9{1W8@gz-?`hVH{L9=zRIXzPTn@$Ji%c|$CA<9ZLsB73u zcSXQn@o(jfB-1_kcZ~(8$o=DTDP6k(c=r}Y+}*|pT@{}{PgU60WUYGtt$6Oc`}#`c zrSZ~4HjA)@2EbC2_^0?W=%pi>82%Nc*uDefO)0|yp`9m(ZdvZlEZLu-`EuhuJzvec zAHejS5IHPJn_f3D8C&p^;4YxO>zqF}yT}UVeol4zN+l|vl{@|5dwBpc@$|>G{!n9D zZ0D~kYYoBlRRXS`1Y(v@Ns8(dDmZd#55B3b-ok=q2+IMxy~GkcSuV!BT!yGJLNsyPtZ|=hY5-9&!LWeFBtB8%Y8IB>7kUwr$9pvTH{0EFZ<9Z5 zNgPv)HlsJ~?5Kg_XfmXWz%ZQ{>5$ltdXla_Gle&6?B z>uNeTb4iXoP5=LqieY2E-qlgca_p!|cmCZ3DzjtSBXv$UIW%wHEnaW=dGTkE5_3l6 zR@c-F^i`|oH_u*qEk8$^et>PX&XQWevdD)7l$0p)>&Rj&AO2++$`$SNG|!N zAF`cKeUIz~c!7yznca=#Igo}~c|S>Sq+(?7-MGTYjYW5I$j4k{`oDl>x81f-WRD&UL= zBGRiMMS4{dN>Ef(N@P@ulqeZRx`2e503t*Q5PIl61PDb4A%u|R-N8BMInVET|Adn- zAm+YzTkBfaT6^uaLwygTXW<&J#zKD6@yJ5F4Z}yYk!TNJgq>2iXb$c}g(NG%hIc&) zOD)R`S~?dt6WD(DWO?B?8^ziv-$C(RT^Vjaw`+CfKau68kjny$p1ttH}2S&x` zC+gG76ocLng0hCxZb?haNoT-mFPK9ZC)Jc(PDsPLov?k%X z%p#!zP2yj|@@dqNti~YUtL7G@yUC`c(E*fk{T~_)szHk)T??`8dM|}lwAilAHaRo6 zmt#h)A$-;)UpaVcf`ekhMtKKUxW$vyx*{*{(W%{|ywAGrHt0>p%D}fUbkKtjwfe`i za^^p@1ZlUH78F!}Ki(PyShA*v?%Zx9vu5mCo`eygKtXP1MWw`EHN<#l0 zlb`VVkJ#AQM_$HH36kN)zy7i>F6M0=tIa=RUh6rL@)L-PwgGr7zL0;*-r*%-B{B<* z2e(z)c%5iCVx(z(`&@9RVN*@S`G>Leuqa2>LPrG;L{vu666N7LjlB)~BpeR58BfUt z<*EA#445%KU*dHHto*WT+8I*H|}`_D^n~+ zc|`@)DJT56{m^+QUldu`lsJ@z?jCTT)~Tb|rnuuM8FTa_3t^5$gw*-Ff2mpBQK75c za?M`s75Y}*x^z9>4V#I`+A96vn*#2FV%+}809&Te#+?~09`61oZ?Pulp}V(CqHQzS zf2YXzAd6o^tX{SjYm@bE^(DbUD0Fj})`-JrGM@|-ui;zi>a+%(QMe;rk5~*Pv%6~j z=;Exrhwfu{acAgSU*VF$zBPG2zYhJaEqur)#S70XdmGC|PEVTFa*@B*@>T%xsyj8x zD+&$!8O;kK;xop0aC`oh776ak$0ZIg&d-;ERN>%x9H_4sdcB8Af7e^P25xdTwM-x? z$ji@tltItNkaN8V;GR?QW0|R`9RR|54KiCxE-YT|HoQ==y{Y!*#`TGv|A^1IgPb2k zJ>kF@2#&1p0!eUQPqgLcf42K+$C>L=m8*xR&fNr+w%5jEgu8YM>*$k<9J+7ql)MLS zC=-&uP44RpsRz}!)4tuV{3W$;X3ig6K`bu!E`fK%{%OzTib>eR$a>AsZY z#D0^xIk-(PeU33JG#}7pAxW4x6!hSNj)Xbw@ugE+;420WeRd`EOU8+Us_#dEG8}HEOPVKU8 z4Oybh1a4IufbCu3?j!xi=l@73%Y0rseJ5<>xvYM3x7JWH^^P|CemL&+&#(3c&V3h# zCFW2bd^f*y4n%lzr@ zkDr++svpBXi#rqGp4>DbJ<@ypTG&^?7wxnjTBi*&xlB;JUW%%FJIk~#iiv;c=aE6U z;vp8$|1{++O>QR%=JAueJ1&h-lQM=&G?r*Hz>z)rvX9~&pgV1P&lv!YhFrzmKdJ78UK6zVdeGS#j&YB^u;;wSPXFHScKh zswiUPVWWt+;c4l;lS2128iX2l93%s;Tth_Tn-z0X|DY*tmud**ytIBJv7UGaR7KSM ze#+tgF-~o5R?h`Zt2a;3Rss&0-;?$+Q}f(D!zHj|7Vl6?4?q1)-wf$^=p+S0uAB6# z(g)Wz17|Ace5B9(+IVUhY|Tj=8~o*g$|?J~*2V&8(H5xIVQa*Cc28&2<|uub#d=K% zC5^!ygLG5inXLWDt+1#9nkGYQhCvbu)^CPin^8(XclxjVYzhBMqb6sZr+tjjgIvul zw20%>oxcZpaw0OpI3Wq;pwI3s{bT+{jzUod`+lvu800?os>ru0_l88(#Q+;C3w^q6 z8+Y>Ijz>05?si%vMYx^TEk%(NA|}p%_=`#Fdn7m9o$-EfgXKFth*~AJO~Hq>+1i@L zFkU4%?lYPa9Fn7qvEgo2uZ-pX?Rhcy=t!>K?5I0JJC*FcE{Z47$nX&?jrV)+7|+{R zc*G}CBfv6J_66Klt_a%=$ zy&Ph3PDm_*#~uT050vLG1<}STaBu`&-PdbSHc$Y|GztFYSJAz@Hq->fJ*_=@eiBzgtdK zJ@~+BkuCmuuZ}$uG8V}k0GU$=-9Yv=hgEioX7JvMWh_?U4v_~A5dD8Xo^oJ6xaVh) z_vbADi6U1%2TGL(MMXJEY6d-wIj$D_2Z(?6VSR;AwqC~s#KZcMMV>#O*NZ(HrY9af!M-?> zEI#h(=hsJUxGz+c*Rm-q|4-C?X=->6Y>fj40qu)f-((jD1O zH6jaLQ*d#`SVRVX2EMXsMasE!N!%|m*$P`;zH;Hrmv>}UQzG$gAIvm|YFhO1>A;yS zYoWv4h8jj%#WuylS<1xZWR1n&b_TbIH|MWQiXh6-x)5PCH)ydY{dYtonYsokG8{f`$@;`w8^~E=z z^T(!{SCV7uxAdra*

X2Y36ZCJtHaAaQ>FqqTRC-(#RJ`KMnQo92sZ-`<*84Ye}=}9g89dge(7*;x;Aj!PVk~NC5;6L13NsCPBMolsVg9r@&#y65|94# zoyMEfl|g5ng0Ea0xocJ3bze$l^mvN!OAQqHm1!p7`&4dCjh#SHSgncz^vT-<{U_In zzK>ss{8f_iGs;mUGy5!;pehbsw*rQk@ zd!-=1DUEWTmQV~IfJ=)1twfx9jh=~@_OKgh|D-kh&QWSvSWA$SRcs?ExpXtHo7OVW zw^@EKG<1%j-A!||BKd05zSizZuZR=*6u2zbm4*t3e)ab+ANe{^w|eV@2TNXBCs~F4 ztW2KX%k;zqof3$vTumQ9y*uvScedD6j)@8E$v+bHm5mmfrjMzykH`KF2S47?9WPAz_9p)Y zY-|k{+blgf9(j&m=)Gt%3#5esjC-NkD;F?>2sT@l;gpVy&TrM0{f&NN4Tpo$K+nYqJtIC$o+OYPq}prb*C9c4Xv)@qc~cc zBmx}+QlcZB9DD#=`s@@jnIJb0^%s~rI_6Zry+BLJr>q36-ZiUe)B2@7$l41xA2~W8 z{dEAXwzzC>kOU?4PW7zaNPYQfP^f)%j_`qjNkK7pXJyGMuhLT&U6NzSM_|Is!L>^w zPj|(Jx8jSK4jwjZG__@=thy8LD{9I{H*n7BzHOwo{6`gawu;F%OfOuZ8;pZ!E7c&n zJ-CjD^0J%XA6?6FU?)2|)m~{w^zHz$i2zk?&Twtch zxwS%HDg7R?0T091D!|!Q`D9J@rzoUE4;y)3&75xfPgEpfg$t`EA#p_;YOwZN9z3ho z6kJOX46f>36t_A`@haqR-CE+#;Fc1huq-&`l~tugGy6d;oc`YNp8d6(<%G2h;C%ND zhmcUSpr0ziRZAwGJ)Z>VQ-BTrf6O=JjnXLx;p;K`cVA9$>3!c!Aka}yo7CD1l+@J; zy@sKwHxHH-In*>y>=r@=sme>(PS(%X*F#Xg$tF*f1a~-AROF(MD^)mb){z)X+PbOIC=l8x@ysWqpkzmxF?XmME75}Q~b5z z5u#i4x8B+(b~zpUWxUq1_oZe3dE(eptg3plSc9!iQudRZxKf$kKCUKn>v8aGV`uB? zSP(NKlO&Lu38RkDb*SP&S!t{+X(LL@p^{a&UJ>!-1iE4rA={pzDFTAeu8QL?yXmZ0 zy|uT&Qg3G>VKSi#8%mm*17a3M(6HG@YC+Rge=0cjkn-VYln=k4TMV6J4=s$;ZO-Sf z08U<8kr-j`U#vOkxCdRTb9R{ypDI6HktEe?QSlTNF)if{l5ub!Ep>G(IO{|H#gz5e z?9;^Ov|Qp}jBjQ(y!m2o9&@v&r^hz2|Mj9d$~uMaHWHM{D1{S~oK()==#5l13dtWj zNzJc#Q5vaYpG={pC^gFAel`xC9;ja6_|9k{DD6SFb^R+R9*-)A)~pR_5d({&Lbb`L zU|f|joATAI%$M})79mk0zp6M}$=1=Nc>SuG#DS#68xm5~^-G{|#I_*povo}_Wil*+7^PIoBOLZ9dJ4?j~9);T)nJ&epth|tIRcmETf6_ThyPJq*&C_i?k%aV8~Gy{OeUOQFiM37bzf6=doE}6ivo?4s~8BZp(MDWxD~y5&%hC30&DYC5ymP4lNg zzMwm1>aCZcj%ZHW=FJe#d;5n}AUIVcVt$pUVvghBrS{tQmRghQEmekJ(Wx>B8*YZB zug9VyZ&fk)VXyevqSiwWgf^S#m#fuzQXbJVW{tmX^IWeNb7S|^` z1=2qDJhtQ~(U%LxPG527L|-pt(5e$-A0rth)_oKf*pLkz@R6t`o-1OzBtSL|x&GGs>KXjfkF51K-e=y2u zPibBxZk>wcQj^$tFHE^loV|yib_#pxUY*_T8Zsq+2=^L!nrV@EEG0B|W=`H5m%R9j z{%QbgQ!(sUq@H8tCLcUzNok3`R`Ti7OG@SkT0itwQ7bv$)%!FJ+#)a(sLV9QUQ;D` z;p)n^Y?8S$Q8=>znp#_^`_S!xYOQw6IS>CaD!x^V5}Eium1^s!*m$W5MY~I4(bkEs zSjkKUu@bL3aS6qk;3|%z{<+30@B;T#pTNM9jI1n$RXt)V(E}cI0p~-Lqt12bg!`rr z5rbu+9>;R^VplW1o-|(~iQ`IMXANnIwi4+%)ou>qgi8`9Xk?fXZsFD2I<8Ndpf zomhRL#c?{2TpXN4oSw?aT72Qw#-jJPMJCgVmdI-CEz~ zv)(=wZ}7Tx>+M!Js0Cg~@x*8bSwGf{0hPN-pp+7&49!_s zbz*xXeJLy|nzv%-k1G!v2_@sq+fq*Dj7FAkwUm<`*(T+Quh5&hXxpkq?9k`{E}Xf_ z&%B`2lHBs{5SQVk@KF{JiJDCel=GniUyB6IRAkUT^x?LIxeYMucFI`p&EmQjG~O7G zjZ_4CMvN+ZKXo$81jn`4qgJtI(yf+i>FrP|hzTM&#gx1)St$2=Yzl0nL0Ey;O4>5^ zkL3S8`c2s~6yXsRw3;dScsP(Cv3%R}J;JvtZ#gKm&a#~Nr^Dl6lOkH1`j~wiwJI}D z$R_2LoKsQ$Irg7^QYoZGi#9H%wm7A&l)5<<#axJB6Y1v=?q))mj#Br&G78B8n8D#WzbA zs*Kywl-AJcS&u4VM=(C92QCO7AwMKX>>DHD7H6WqhTcvKa+=;O8!2lG8o0SgeC4$H z&PmIPoRLf`Zb|kX@g|x^Op3@>aeRhqDO!1<>+>%#wUo_#mn{vVS#Lgba}*aIzG${M z&E*P)Zi=*adCPyY~X9sM5H1nm3!e*p*+JYBd7dcQ%3@#y7s zEOnkc9H>_liMv3Wk@2R0g9b$HrAkaKt*E9C977KJQYhY(uf92(1LMr~dO2wR;$$LQ zj9VWp7c6j(#tb?>&g%2Svt~{=ifKOEJ}aGgIOXm_e~GQH)GDKvBIA1e?+<-7*wWG) z5o;Kz1CcSkSt^9ynwFjdNwiKifGQEGXe7Rty;Kw2Q*6)lQed`gFTb>ax5(M`z0Gs- z52>%?F?msmU6%N@uB)2+t^Ehn{qZ*IMyhrkG31p0w2V8>jK;Tel)d>lwGZ=uVNxib z-rkH-i!=n0vf8WTtvNW(pCuovpbuj{$*mQh&oE5>&4@)z8Vky-THx~`@gqfK$$=~j ziE!dpVI8BQ56tkUsZDX%Oqz#fe&j3mEqSALwjz&GS3rr%OK$7jLte$(IwfKH+>V=M z=~S&BsQZ4v?A1Mavc+Ql=#;pH0xd~O(%o*W6UyoIDp!=ErH1AXD$bW$EFR-cA-7QF z;%4$GizwR^wx*G}Y;alx&Zc-df~uY0%WcCF&1ijkD^E=excrmUtb4qrv93A$l)2jFDi8K`D(3^OrLWD5 zUc~xVxCupP;I5`TYFS5=p8A!Jv0WZiz@xO-qxnfrcgZe=xK7^iqkJK zGZsU#t78ueTtk;GXYl~h_bzs9qr+%5$EiGeaqY@=`q($!iqY@9h%dkb-s7U0Sami$ z9#xN&WRgxrO1i?grdN9rh|t1y-^7qXZ9+cBVW!0LRSr41mu2g&J;QBb+E&3RoA0QyLHhm^iU0iROHI$RcKe%hw+M>9nr)ayE^`eX^3WAc(ALnFWB#PmtfM2%-@=>dqluS4&uO?(J6WSN`n9G z@sN>49I!vs_a1vsHwvLQdvXxPoNwr@Kb9GSAErNLR3PMyF34|oD-U0vUVEP*-B{Qb zs!p~lRza&T3(Vxkh*0~SQf_@;8K>JD?eWd8o~Dx?YA7oKFYZ}e=VPR6&K+! zI^$j5tn5~n)wW5|2^~7JQA<2Bs%k|Z&dUff+Cja*_x@LopEr9{mQ%Va0~?CHO2!*K_D zxqDOUX`laaJ1*8c@w~0T#q=GWGvOESgA8%Cwjy0>9a9H4uFX$vcXnlM0T$Do!iChk zrR{z5;x*=v-nY@WCZgS=-xP@K?R6L+XH*Eu_3U^os5&i=rbh0O2wKaJWUm*x{d^iq zjpS&gd>g-<_$lQSD#B6T+!94zWz4VGGHxUyQkb|ytRMt0O8(MOIGRLHCQc)QvJl*6 z8bevLa6v$Ao?Tuo$njn8ORC6#Igu!|)jkv*k5{coq0I`w5N5geInI zIm&BT^VrWP7Vj;EEREW>N*>A^ zs)2p>$BhP4O(Nshh8Bj`gK-R0w+n0qCiJ7O9=*i{$zb@_3A@A)kuPKL4pvO&ftrY^IxT zP`HZB>tc$$Vt=Q$OgkP1NRA_0uW-_MMmboK!c0}h(dPO^bhVwx17b6-rD`3|*e}|<(EsS~3h|tvC zc|=p*Xe95_kN-iu{6z{sm0DmmVyS8BP?3@4HXG~Q(i~ar11I|S(F%!MoT*tTwAshxtQPm)dOZ_0r)XYWXN5-G{xqY8fgU;`&indy~8Hq51bQ>6U=5`?d1|xY|5q5Vu)Pk5@6z zkUt^ z$Er<>)>+V+^_SF<3?4u>UVjEJoyFtnvqdpk>SMC1qxTGW@U=`?kEy=&>q51$Vztn_ z2OyCC{mV-zejbXC92y4f%0?H6N;HprJo!7Fai7q3z0vvDt@F_VquxrVHBLx<{=1Fx zxDeT+Ch(J9)AR8zI8iVi_V^)c5B7M%Pz_e4KoT=wHi~_``^p}&W`TqN%~I__O&fU+ zsG~TDz(tC|_NgSub$@h=?RD)}(wMhC5o#Q7yNn<>x>g;tCwxE@-isHKr9GKz(=sU_ z_qDnD^p_0ks2TMJT5A{FlRT&mBcgYuJl>P}c(Kfk=GDl8^`8%bNvii|TEBQt?hmee(C+@?e+&<^Kj}Nc|?pRMiO@7SZs%*;&TD zN8Tl5T;{RBx%Pz0Bg;Z&m+5+=68%rjNCFijdwmbneEh97+-_?h^d@M)76M17xRJpZ z$b;}ui5sJ4zo*>#{lzg0yjiG>*!{GIbxAp5eTiDwu&RIKVAyPw_>Jaca^!J@K%eMN znntniYc~n3>Elm-Tp;#(lIe-)1~mz}#(Mly4cK*6pAn_M?c1hY&-Y(AC$6`qbHZ}Q zoh{fG*dNr!I9StkG>g}0cMQrr=7^9S$S& z0P>*CSPgcpfcOzkQ}cXT;`gwj`jv-=;+~2T`+Fm)%Y$_>%!E5iKHOU<%%RUG`tJ@D z8^!mhNTKT7!-bcIW}-Ylbys1Jo1xv|MoY|71T*CN#Hox!)IS{FH_)eRHwF86E?A{X zbZmL|$4wzSUj2HUyKby+P8^lzEd5a@H0bjW7Diyf=C|Tb`Ihdc@~VARt(zH%DU4(R zNVL4l#=C{NN2mGPulCpf1m2RLLa^@y5A{^cc!zepIj&(X9dP5qr2}mrFYA&J_a7tJ z3Fplvw$6&t4;~oI82VBl+2i)CtRV@(F(?yi{OMTRs^C7-7iVq8vTJHo8u=hb5PKCK z^~U>S0kv&tZ;Rlb-`jU5y{5>KpqWJjhL?ukfRir9q9V1&_i|ri=2gQoRGER1-b<(` zJ9IwK)C)u3hw=V?`8Mk_Q>Eg^|B@Uw#5oyB3O8P~=BUY>*pbt4z6WktAZ7RxW+<~~ zr)7+0DX$=g9h&Oyzz;nB z^KsS(Swjxg{TIQ%KeE;c|3^X&Z5Lwu*ViEsEffCrl>hO0Gqvl#U-|F6{E&$M3d8n1 z{8vf%)9_zm_^&W*&%l3$;osAs*kRo~p#_mo<~l(JJ%nc6e1fl>T})zOT(ZI;e|UC0e!xqXvhS0cSb)m#?a z=LdXVDoKdtK4Hx-M;sP0C48BVsMV@F2EKZJ>4#y*4wmQWEVJfz*TF$ei@>)qNPx|j z>pqB2;pm6ohyr;=%$pUFB~>Ojmmg=vfAcokC^-k7b~QkPo2?{6cu@4+Uz}+1-uDJf6C**qdX05BbW(I0a*bpOz! z|JZ5$31US6tFSQ0zIhp5TLv?^20K16?K!NW!Y|O+;l4S=e<}atdbL^-(jTTitS9FE z!bqwmx8Ee5U$9+2{l|+Pl08l^=Unic+R&yi-AYQD(BgK*J)q0J;NI6Cv)o)6=&og% zg7V);(eizTNjG*Z8%r?;L-9Gw0qX&IQ`qh}J+IH0&6>w5s*#`02S1d~Cmk}`5C{Fz z`qTOFcC5zsmB9)s==`kEeY0rdB=jm|yv4qbIyx`WRC3J2P5cR2Gz%2?hxE&BPHj(e z#~Fraw!yFyV;~2U(C+wf{z`_e#!)c8?0xY++4H5K(jG_wY#pr8z@8dEq02)v$oOQ2jovgNH|6Bed|_T2c>nmHv;ThH8VHJun_I1d`>W8l=!GR+75*4I zlz>FmKUy3OezVEe54h8k*XCF0s>Xjd2s|tKqwQm0g4J6n9{KI-H{;X6olh%1#oGzM zTHx|ki1k>4N_Vf5RIq(fc{xT&S0&0R3%onPZH-VI&(#3$vQHZcUq+oyY^o%x^@r9R zK=7N+Jav9Qq`*Ivb$z)d&AupCgWlc={v3VvEiCHYk7*Bbv;HIpJ+OI3@(BMhICa#48#vSCSnJ09%sORLTrusZ7eN#p6PCA{)!zAW$)zo zmevU!v)Ne>Rtv3m%B>TqCGwY!AOcmfe<5BshGT&(83b zMXU0gk^c>hzBawnxF|VSqb%Yi_>=Q7&Px6dAnyxyXFVtVs_;9u*N&*L$shYCzAcHl zy9|HZ=CtQpT+HG-(C2P&;O32kJ&+^kpr+PjY^7|YE7U0JUg7NGw zNZga+=Q0`mkM37q=vFZgbay+Goso+t)cn>Gr1i{2YxUwsHzf<4o~p|?k={@5yhfYy zpmZ0;Z{z<)#d=M?#ITC$T-BbH=VZIB8s##1FPxt4tkW4{2hJl*bm)a)t29$WNpS@u zJk14}p$9(=I`if|48QNk66vV78x!VN12J)q*mwQ#w!)|k01~3lcXU=*dPwyx6=b#f zg+c%RKUUI}zcdyQzC9M|7Q! zfjwXeVz!sy0+8?vEgC=D-w#qS;SKP?Ps7Roa3^JFFD5*12;Xlno&7}Gb@jE#XH31u zFQ6(z)ahc$>e8)?pT4Xa`9GTqHd54h@a>V#x?P=wkt8bx%(pN`^{ylRcdO%IdEOWy zBj`V5%BF@X{zN%(kJy`jXpU(Xs2Orn@nwx-w$9;n=r0m)Gvc0plb$N~uUPV`fLIYh zt&twf6sEydpB|LCdE(>Mo);*i{0y8Izii+v%Kyx^27Zv(uV!erfAlBF`O%;YoetrW zPe#HWpU9w$ygz5>rY4k^=OEmO2dI$v``Dj{EGR?dag7-kO*ey#rEuENI0zNe>8hP8Cf&>q{5U}0mL`3EPR=>(r%kLswu`A zt;Ci3lm#vx6v(qrccRe=7^m>C5jcPSHXOR(Sq|8OP1I;PT1`2Zgsm?A}cxmX$2t5$k5awZ_3 z1patTtY&>FE?Z}C0B>+8u6Il-&}+gP;-jMd6Xc|Par-CAjbCE%5o2HPuwr^*oFZgq z@T_pEY1pqWn=|Q?xk!3g>jKVq8q`T&(GA>4lFmLdYTK57R)Wudz?RR(%r-G`&d8K- z2+`{I1j@kD59L_{Sh%aEYmQ?&Xr3@@w~UNi(i&3KvSlRciTulSIH#xXg+yN{xoi4K zpIaHSIfIJN;ErE%f-_O(?4wQy&2^GweA9BBau6#V30E6*4dp}2G5^geJN@m^mfV%G z^_kyEX6WT;T#rn?KDIu>nG03C*?YoZ7({hHW{w1~efS1b^yr8J5L?c!Qba97FqZZXCH-Ih?bx1CrqL(!0A;nU&VS;Z0j1COQ}jp08GepGnto*LK75`+w2A*a>Xz zB>Kc|CF^SZT&ouVQH}mv+}s_O^hEHXq{Sr8z5wZ~6AIzVcj4IL1I(W^=Z&P7)Tz z6`uN@vRvbAeF3Bi8P%-^)PB$5If-vXhzY2kv(tSb3v5X#5W1;CiifMX!dF|%(AH}A z%pL!9Akq2V5txZ?{u2NO$FiDESm+4Fq-6v^mL$>&B@1B8>TMouP2k?J|HcY|My?N=a!@E#iWn zsB2pssYn5e8VT1E%{e-=^G(b%z?aIUi#O?>J|gDOFyz)a3wA;i*N;=Too>*;eFuUC zIUlt~sQ7DJ=ce4Y%~+@Bec6L?LRw%IU3d!(o`=xdz$!=b4em3Iqf-U(J6AS8zu3{C z1p0sdXm?3MYt%Z`$Rr&G55#2qyw2t$C#3lWccZV9PqUqeUpC=7e-S%=^cs7K8zRo_ zitIei1pCk-1E3NZD$@Fbo7h4%=RRaMRRX;5i+o9f_~z=Y;)ATM%qq`U%I^U#M6dh} z!-sA|^)YEaRJW|+w>2CG*2PGW^S_jP>Cr{<3-ncSc7-W{uii)dMS)!@(WnCv$PU%x zN9Box2l%H(uH?l-Idzz8(e3;S0bMtJL|DIdAejt208qOWGd@D~5H zOw3m?yDVF9uOV0PiR9MgrC#dZx_jJ*M%kOg6Ys<3$8;oB!u`dnw(cV%OvR(7pL#w5 z)+4`;0HD2kdQ+FVKTb$x#j{rpw#{avh4?C)ossD4yj})_#@1cfB)$Xo;`C7`ucqG1 z>DV?@43Ln@%Roo}*w)b%rEUFwtV^yL?}-tPq>S9^#BcfB0;^=b#g&yxsbi*iV00}# z_zm7>8asN#a1d4k3cg0sS~;K{p%d-otbyhuY;cs4oZTt z68~eC-8!E^RhR#dK3_pDsvDY+&d>J<6vY9^IMfB0XI#)!Ysi;X^M=h9jVNp(WbhiW zidQnZNw>Kg450j})k~a9In)$G_`A;J)twgn1%3DL1r;_|v4B?k7&rseN;foN$9Uk6 zh`Ms8gJ~w{YCn%p7ms%<=}yssC=Du(RR9TJ#>G-Dwqsv0H}#2&UeVny1VAwRsUdm}zj8IoFbbOPi(!Msx1!hh^J<~?-CMQ!! z!DNs3*nIgw%#My5fJ^9mjIdeZ0K%ezN8pkXv$9IewlO|NJG*WhRQ;4st|6Uk^_O_H z_iBCtn#HT`Hrjoo!tgAZV*MIm*iW{Eovget;I2NrBCySF-aI<<6XZ?I67O@d{dYpH z5q|UXw&DKI-kyz{>o;_VvFTDdZRpxcvp?0ZnelHl_|(g1vtySUC^mN5Cx9&P=(x!5 zrR_5z%{2;pvIG?3tENw*%!OgAmqYY(w%79De@w8!@GnDGqV$wnUetA$Hbl0h0uA-d z@1C*FtXPyzcHBF}eUPHM|4 z8XhXVz_?GF%$0_sBJUv)(>koF9!{A6UqCxGA04^|T4_%HH`qmlXnjh()d|R%>wGm+ zIMWfS*U1+t$fu-E1NGrAZ&R~0kMdplj-U7)Km9C7$yNrLfrwag@*e|{ic)L7m-|2H z8QoWN-THzA0GpDHE+T*f`(1#e%5O6R$ft*3pC$TFC3NHKPu~D1oR3^liKH7Dws*6j zIqSEF0CN7vw0;`Eq3fg*BNx@lnbd|@{4c>{TR6~|f^EK$Xxo9I8Rkp)O6nkh%%w=! zz~=IqxXQXswl(BaG^qIbb4jVI-d#B(JNs5Z3Yo|Z+X0($&K!8$S$q!VFY&{#FJ#w! zmtE;^mSs3o?)3E;?|;_S>SjSX+%res+cJrnt1zF!M+ zm{!_yw(YjYKsi;QcPw}I$t5Seq7ZTpA4>i9adyHe>xq!{v+e^>FtMI74&mr$G9H-U zlw}aJS9w-C-yb<8TrJ<|lEp>+ejo-Tou^mN1&ssK_Pp;IpsTB~xu8^guDlB1K#+KK zz!KhUx3(eUa#m~7<#V>M-rB38hX&fc>p(Drfo-ZdEB9KoEOLEg+0oMaQ$+*=H`7_H zD~{6JqT$Bx#4W_lrM26C6zIo;4Y264Gy7r5!#+)yWup#*{?#Atf{sP}U;{5oXD@py zA!j4sew=MkpO(K7y&(4c*Dn8{`&K92p&4} z{#sgI-A70CDT&S1$iRg$J&Cw6q^7O2lQGG-$%UbNzWykPZ$M78)QVH_5P9qLveJ8a5HCy*Cm;u{3!7rwYyhIxl#H^b#1*eh3yCH6pkp5~_I_LpqMjL#31 zAo90WeiqO+oquTCc0iMWF?bI{n2V#etCzlB%oL7WKg^!`!Bp+;FtacqJkalQd_4ll zMPf$Qtxi`bw3ue({LW>R2a-2t#d$ix;d8{Nc03eM#rCZX6lIQF*N6BdJq6yAe4C;L z?xjeBg{9siAr}lh0|UeV@q?9IlGUEU7$}^PdtD7ZTDah21=Rlh`xciow$5WCFzuj0 zFvsP7))yFtCpqO~$24`>$IPLX3WIMer6JgkMBsIfC4qomCF0B(6yK}QFhy>8{qRG? zDUb5*F5AQ_zjuvu@Ugy7sJ_~PNaVEJi*J?3x)6_mpd>u$JRq4D%~i|~5exUmoBW{J z-+=?*Vn3U$Y))Q`f2SUG%ua#r)NL_D6M@+A<1-p#b1$R^SKT_XH@~>lt}j;c*YXUA zHC+ASd0{PeBn;q4pAx}mj>gs@>F29uAP_r$!k@CAvpp=F`f+Q23aZq7AE`X1+2ZMu zF;~t3i18DE+4`DSD`5;~=eU;!-&;K&&)w+#`-j55mYKoG#az2-tOG)|A1N(;y9~kU zDm2s2$_1=~)4k0P`tyAIH zJ;X%G=w5LjK@7iket;6ty5#Myti3W7NXI;p23kIN>m2r}V4TU=R#H+o70+UKo--&Z z{9LVHu>e?-S<9p|gBtenP`o>!hxJWBfUj%|@N+QKquR;P1o@E3G=GDVaDSih7x~iQ zOM`D@axn4j>6`@;VL~xM(qZkZ6`C)liOBIQu5kYpN^lCMJHOJ?Y2RN3TP1`RH!<(E)>K3iz{khGSGkrVO z_3v%R#_R?HKW^3>w$D0!)HSHrlkcnApWv*>{s>_<&dNIZioD?S>OoBR+a|u&Yo9PD z;hfHRe0&%VUNX}Qh&@#C)-gTHVwe9kQ8KiVT>wZAMdE4W9-j#^> zaS%Zj8y_W&iIBM5B4Ie;HOsDni240lylbELhT5_!GkqhYnT<18N7c-^W?G z`eRfyyQ&#$#=W!s)~vLL2dsBM>W|d$4%GcZz^|v%+JmR_O~1I-F@|>32k-^G$>z1w zvv0kei8#ywqT++n!lR<)e2Zvhh}@do-eRbKMDaLi___APr?X(orzdy0O(>Fu4_lZ( zVwZG|AJyfPpB?zJUD$YF-vd@0BmI<~^+WByQW3s<91!~*x#jZXMNNEParyIAAbsHC zo(@Zcdl%#QFL=l9+h!77uReMLj@Tc?H)&Ucy>8*>zlaMymd(e0(CTsf^nwh?O+PIb=KYvZCwDM@zWSYo@3!`}k^TKqA-(++oQ1*J-b zn`uQSz}(hbWW)5HZHv8qUbnRA<-@@Zug*@Uc7n6@o+VA5RTw9BTiE!4I<271E;0Z0 z&)Eb#HzedL%Mjvoh(G_U8IECcTUW~G8lw2c;OcuZFuf~$$bl%3TN1_HK8Z*PmESlN zr&Q&&-NSrf(cZn+3vd9ienLPGN%{&`ma9gtI}0>s2V(0W9}V~;CZ@o?%1t`Q*OYqg zgqeW3b1wV$HiMNrFq(o?^c(-P_wn(NBX8aQWz$r{yR$8Xa5M?HGWkd7 zoyz>c0SK_w{9^$1BY{j2H~?3{I41Qv1ONPP0G&e~}553mbqSkhIze7w7) zNkL5x@!S70Dmh1&_D63MaOWwxHpM2IH1va(mOury*C_5?sx{j_W3xEV|^ z#;brFH%N!!KfTo`KR;G;@<`(=i=o?MJ0SWg#)n56{je_CM@~67NAQu!%E-}--t+l> zJIb$1HoOF8g5Jt7GY0SQ)ZG^F@js_`=bn}n+@pJ}m^lbgz1j`l^~gqj=u7Eyg^vJ~ zc0}jP)){M+2Y551KG;s9%%BUeI6rs-#37q+sv!17-3L&QIy}2$IAG5yddcQ>F&-&v zvMZf(dHHl5#O?}!q<(P+*4z1kQr%u~Ztm=>c-&hz`G3P{{Ye`Kk zxglqPe!GDBvH9enuBviGI~fU*v$ZY#RX@vo?B$Q9Fm%edyF{x>vE?+fpjuJQf-6%V zp>-D@DtA;g1t>qH`O&t*29&f%B?d(JT*Mg2HUGaoc~xisiH#v4`sUW}Kc3a=TjZ^J z@8JJG(p&EicaJeJr!KJluZ{lis+41Jp>9ARbgl^PLsw5%i?Y+-V+4r}X_g-{u6a&pnz<}8?NaB(XJm;n@qQ1)B z9XeR+0vrlhU$wu^W=D~$OiwWPai#^Jq7$aCp%;;g4ln+l6rAd@rRElB8=Ao(;M~gA z=Suprp+`0Xr~M5WqTGPV9|m?*8QJWrIqT!I=B!)f9m&9RM}U*u8^r~BPyXET?X0CD zFx+=EKw9rkc3gU~-yGG#zaIw`K@O)O_ryR<0#3Mv z_dhiv;@ey|gKPT>S*{2bK-ObmKVzoGW5kT{g(6V<6ag9vr#hZc;$s7qZ@??~WDO+| za=@zKM-?#5?0Mg2zRG>SgbA_h?v@9x=sz2D+?{&NDTGGzeIw<5_~ zNK5Vg)+WB%eY4@YQx+L1feX5URRt1Q@fNv&aSeP2E?+JIJ5ECvQ&$vH9mo~_g9KAyZAlK0;UiLvfF2ORxJ0tYgHGhi$J z$=#|0?oRYJ+*oB0_xoH7Lk{y~coGDuHaK;A`LoBnUeE6(oFlt~j==oiDm)1=(1h%We6N=j;QRDr=r4l`hC>_@+z)Wx`nQ?%c;m#b zh&QY*$whYSYK#3mL?p`5qT#AJw4`iW>}o0d^oZ`&)xqiV;-Do*&-DXzLN8BSl_|** s+mrP6=qun_m0vY)Y>f34xC-|DmzQ!;k9qqwM+s!Vr>mdKI;Vst0HIcZW&i*H literal 0 HcmV?d00001 diff --git a/docs/angular/src/content/en/images/button/button-do-1.png b/docs/angular/src/content/en/images/button/button-do-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9243c7edbdbb7021f9f8d1fe824f652356ab37aa GIT binary patch literal 2997 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 +The {Platform} Button component lets you enable clickable elements that trigger actions in your {Platform} app. You get full control over button variants, styling, and sizes. The Button component also lets you handle clicks, toggle the button, and disable it when needed. -The {Platform} Button Component lets you enable clickable elements that trigger actions in your {Platform} app. You get full control over how you set button variants, configure styles for the wrapped element, and define sizes. The Button Component also gives flexibility through the {Platform} Button OnClick event, toggle the {Platform} button, disable the {Platform} button, and more. +## Live Demo + + + + - + -The {Platform} Button Component lets you enable clickable elements that trigger actions in your {Platform} app. You get full control over how you set button variants, configure styles for the wrapped element, and define sizes. The Button Component also gives flexibility through the {Platform} Button clicked callback, toggle the {Platform} button, disable the {Platform} button, and more. + -## {Platform} Button Example +## Anatomy - +The {Platform} Button renders its label and optional prefix and suffix content in the component shadow DOM. -## Usage + + + + +

+
+ A - Contained Button +
    +
  1. Icon (optional)
  2. +
  3. Label
  4. +
  5. Container
  6. +
+
+
+ B - Outlined Button +
    +
  1. Icon (optional)
  2. +
  3. Label
  4. +
  5. Container
  6. +
+
+
+ C - Flat Button +
    +
  1. Icon (optional)
  2. +
  3. Label
  4. +
+
+
+ D - Fab Icon Button +
    +
  1. Icon
  2. +
  3. Container
  4. +
+
+
+ +The Button renders its content inside the `base` CSS part. Use the default slot for the label and the `prefix` and `suffix` slots for optional content before and after the label. + +```text + +├── ::part(base) +├── prefix slot +├── default slot content +└── suffix slot + +``` + +## Getting Started + +To use the {Platform} Button, follow the [{ProductName} Getting Started](../general-getting-started.mdx) topic for the basic project setup, then register the component for your target platform. + +### Prerequisites and Version Compatibility + +Use a supported version of the {ProductName} package for your target framework. Keep the framework package, the Button package, and the theme package on the same release version. The examples below identify the framework and package used by each code block so that the snippets remain self-contained when read without the surrounding page context. + + + +For Angular using the **igniteui-angular** package, install the package: + +```cmd +npm install igniteui-angular +``` + +Then import the Button directive: + +```ts +import { IgxButtonModule } from 'igniteui-angular/directives'; +``` + +Add `IgxButtonModule` to the component `imports` collection, then use the `igxButton` directive in your template. + +```html + +``` + + -First, you need to install the {ProductName} by running the following command: +For Web Components using the **{PackageWebComponents}** package, install the package: ```cmd npm install {PackageWebComponents} @@ -55,7 +186,7 @@ For a complete introduction to the {ProductName}, read the [**Getting Started**] -First, you need to the install the corresponding {ProductName} npm package by running the following command: +For React using the **igniteui-react** package, install the package: ```cmd npm install igniteui-react @@ -72,7 +203,7 @@ import 'igniteui-webcomponents/themes/light/bootstrap.css'; -Before using the , you need to register it as follows: +For Blazor using the **IgniteUI.Blazor** package, register the Button module as follows: ```csharp // in Program.cs file @@ -114,12 +245,60 @@ The simplest way to start using the is as f -## Prefix / Suffix +## Usage + +Use the {Platform} Button to trigger an action, submit form data, or navigate to another page. Choose the appropriate button type and variant for the action, then add optional content such as icons when needed. + +### Content + +The Button content is placed in its default slot. Add the action label as the button content so that the purpose of the action is clear to all users. + + + +```html + +``` + + + + + +```html +Save changes +``` + + + + + + + + + + + + + + + +### Prefix / Suffix With `prefix` and `suffix` slots of the component, we can add different content before and after the main content of the button. We recommend using a `` element when adding simple text, symbols, or emojis, and an [``](../layouts/icon.mdx) component when adding icons to the `prefix` and `suffix` slots. + + +```html + +``` + + + ```tsx @@ -153,7 +332,19 @@ We recommend using a `` element when adding simple text, symbols, or emoji -## Type + + + + + + + + + + + + +### Type The button component will change its internal structure from a [` +``` + + + + + + + +```tsx + + + +``` + + + + + +```html + +``` + + + + + +```razor + +``` + + + + + + + + + +### States + +You may also insert each Button in a disabled state because they all support both Enabled and Disabled variants. In Figma, you can switch between the two using a boolean property in the properties panel. In code, use the `disabled` property or attribute when an action is not currently available. + + + +```html + +``` + + + + + + + +```tsx +Disabled +``` + + + + + +```html +Disabled +``` + + + + + +```razor +Disabled +``` + + + + + + + + + +### Interaction States + +In Figma the Enabled buttons support **Idle**, Hover, Focused and Focused & Hover states which can be switched between by changing the `State` property. In code, these interaction states are provided by the platform Button component and should preserve a visible focus indicator for keyboard users. + + +```html + +``` + + + + -## Button Sizing + + +```html +Ripple and focus states +``` + + + + + +### Layout Template + +Contained, Outlined, Flat, and Floating Action Buttons support flexible icon and label templates. In Figma, to show or hide the icons, you can use the `Left Icon` and `Right Icon` boolean properties. If you want to have an Icon Button, you can set the `Content` property to `Icon`. + + + +```html + + Span button + +``` + + + + + + + +```tsx + + + Save changes + + +``` + + + + + +```html + + + Save changes + + +``` + + + + + +```razor + + + Save changes + + +``` + + + + + + + + + +### Size Users can change the size of the using the `--ig-size` CSS variable. In the following example, we will add some radio buttons to display all size values. This way whenever one gets selected, we will change the size of the button. @@ -410,12 +828,37 @@ const onRadioChange = (e: IgrRadioChangeEventArgs) => { The result of implementing the above code should look like the following: - + + + + + + + + + + + + ### Download Setting the property will prompt the user to save the linked URL instead of navigating to it. + + +```html + +``` + + + ```tsx @@ -454,11 +897,98 @@ Setting the - + + + + + + + + + + + + +### Do/Don't + +**When to use:** Use Button for actions that change state, submit data, or trigger an application command. + +**When not to use:** Use [Icon Button](./icon-button.mdx) when the action is represented only by an icon and does not require a text label. + +
+ + + + + + + + + + + + + + + + + + + + + +
DoDon't
Button do example 1Button don't example 1
Button do example 2Button don't example 2
Button do example 3Button don't example 3
+
+ + +## Properties + +The {Platform} Button exposes platform-specific properties for controlling its content, appearance, and behavior. + + + +The Angular Button is provided as a directive and exposes the following properties. Use the API reference for the complete type definitions. + +| name | type | default | description | +| --- | --- | --- | --- | +| | string | `flat` | Sets the Button visual variant. | +| | string | `button` | Sets the native button type. | + + + + + +The {Platform} Button exposes the following properties. + +| Name | Type | Default | Description | +|--|--|--|--| +| | ButtonVariant | `contained` | Selects the Button visual variant. | +| | string | `button` | Sets the native button type when the component renders as a button. | +| | string | — | Sets the destination and uses the Button for navigation. | +| | string | — | Sets the relationship between the current document and the linked destination. | +| | string | — | Sets where the linked destination opens when `href` is set. | +| | string | — | Prompts the user to download the linked resource when `href` is set. | + ## Styling +Use the standard {ProductName} theme workflow and the Button styling variables and CSS parts to customize the component consistently with the rest of the application. + +### Sass Theming + +Use the standard {ProductName} theme workflow to customize the Button consistently with the rest of the application. + +### CSS Variables + +The Button exposes CSS variables that can be used to adjust its appearance and sizing. + +| Variable | What it changes | +|--|--| +| `--ig-size` | The Button size. | + +### Style Parts + The exposes three CSS parts which we can use for styling: |Name|Description| @@ -477,13 +1007,147 @@ igc-button::part(base) { } ``` - + + + + + + + + + + + + +### Styling with Tailwind + + + +You can style the Button using custom Tailwind utility classes. Make sure to [set up Tailwind](/themes/tailwind) first. + +Along with the Tailwind import in your global stylesheet, include the utility file: + +```scss +@import "tailwindcss"; +@use 'igniteui-theming/tailwind/utilities/material.css'; +``` + +Use the variant-specific classes such as `light-flat-button`, `light-contained-button`, `light-outlined-button`, and `light-fab-button`: + +```html + +``` + +The exclamation mark (`!`) ensures that the utility class takes precedence over the Button's default theme. + + + + + + + +You can style the Button with the custom Tailwind utility classes from `igniteui-theming`. Make sure to [set up Tailwind](/themes/tailwind) first, then import the Ignite UI utilities in your global stylesheet: + +```css +@import "tailwindcss"; +@import "igniteui-theming/tailwind/utilities/material.css"; +``` + + + +```jsx +Contained Button +``` + + + + + +```html +Contained Button +``` + + + + + +```razor +Contained Button +``` + + + +The exclamation mark (`!`) gives the Tailwind utility precedence over the Button's default theme styles. + + + + + +## Accessibility + +### Keyboard Interaction + +| Key | Action | +|--|--| +| Tab | Moves focus to the Button when it is keyboard-focusable. | +| Enter / Space | Activates the focused Button. | + +### Screen Readers / ARIA + +Provide an accessible label when the visible button content does not describe the action. + +### Accessibility Compliance + +This topic does not make a product-level WCAG, Section 508, or EN 301 549 conformance claim. Verify the rendered Button and its surrounding application against the accessibility requirements that apply to the target project. + +| Criterion | How the component supports the requirement | +|--|--| +| Keyboard operation | The Button can receive focus through the keyboard when it is keyboard-focusable, and Enter or Space activates the focused control. | +| Accessible name | The Button's visible label provides its name. Provide an accessible label in the surrounding usage when the visible content does not describe the action. | +| Link semantics | When `href` is set, use the Button as navigation and verify the resulting link name and destination in the rendered application. | + +## Troubleshooting + +### Why does the Button behave like a link? + +When `href` is set, the Button is used for navigation rather than for a command action. Remove `href` when the control should trigger application logic instead of navigating to a URL. + +### Why is the Button not keyboard-focusable? + +Check whether the Button is disabled or whether the surrounding application changes its focus behavior. Use a focusable Button for actions that must be available through keyboard navigation. + +### Known Limitations + +The Button has the following platform-independent boundaries: + +- Use a text label or another accessible naming mechanism for every action; an unlabeled icon-only Button does not communicate its purpose by itself. +- Setting `href` changes the Button from an action control to a navigation control. Use [Icon Button](./icon-button.mdx) for icon-only actions and verify its accessible name separately. +- The Button's visual appearance does not determine whether the surrounding application action is available or valid; application logic must provide that state and feedback. ## API References - - + +## Dependencies + +The Button requires the corresponding {Platform} package and theme stylesheet. The sizing example also uses the Radio and RadioGroup components. ## Additional Resources - [{ProductName} **Forums**]({ForumsLink}) - [{ProductName} **GitHub**]({GithubLink}) + +## Related Components + +- [Icon Button](./icon-button.mdx) is intended for icon-only actions. + +## FAQ + + + + Set the verified `variant` value such as `contained`, `outlined`, `flat`, or `fab`. + + + Set the verified `href` property to use the Button as a link. + + diff --git a/docs/xplat/src/content/en/toc.json b/docs/xplat/src/content/en/toc.json index 3d607d7a76..4bcb652f11 100644 --- a/docs/xplat/src/content/en/toc.json +++ b/docs/xplat/src/content/en/toc.json @@ -2434,9 +2434,6 @@ "href": "inputs/badge.mdx" }, { - "exclude": [ - "Angular" - ], "name": "Button", "href": "inputs/button.mdx" }, From 0d4e1a1a81627c1d12ddf027bf0e1cf7b02c31e5 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 13 Aug 2026 16:46:10 +0300 Subject: [PATCH 2/8] fix(button): remove button from angular topics --- .../src/content/en/components/button.mdx | 789 ------------------ 1 file changed, 789 deletions(-) delete mode 100644 docs/angular/src/content/en/components/button.mdx diff --git a/docs/angular/src/content/en/components/button.mdx b/docs/angular/src/content/en/components/button.mdx deleted file mode 100644 index 3e27a70f33..0000000000 --- a/docs/angular/src/content/en/components/button.mdx +++ /dev/null @@ -1,789 +0,0 @@ ---- -title: Angular Button Component - Ignite UI for Angular - MIT license -description: Enhance standard buttons with built-in text, images and more features using Ignite UI for Angular Button component. Try it now. -keywords: Angular Button component, Angular Button control, Ignite UI for Angular, UI controls, Angular widgets, web widgets, UI widgets, Angular, Native Angular Components Suite, Native Angular Controls, Angular UI Components, -license: MIT -llms: - description: "Angular Button directive is used for creating and adding actionable buttons to a web page/application." ---- - -import DocsAside from 'igniteui-astro-components/components/mdx/DocsAside.astro'; -import Sample from 'igniteui-astro-components/components/mdx/Sample.astro'; -import ApiLink from 'igniteui-astro-components/components/mdx/ApiLink.astro'; - -# Angular Button Overview - -Angular Button directive is used for creating and adding actionable buttons to a web page/application. There are different Angular Button types that are easy to customize and include several built-in features. By default, Angular Material uses native `
', - styleUrls: ['home.component.scss'], - standalone: true, - imports: [IgxButtonDirective] -}) -export class HomeComponent {} -``` - -Now that you have the Ignite UI for Angular Button module or directive imported, you can start using the `igxButton` directive on elements. - -## Angular Button Types - -### Flat Button - -Use the directive to add a simple flat button in your component template. Note that if you do not choose a type, by default it will be set to `flat`. - -```html - -``` - - - -### Contained Button - -All you have to do to create a contained button is to change the value of the `igxButton` property: - -```html - -``` - - - -### Outlined Button - -Analogically, we can switch to outlined type: - -```html - -``` - - - -### Icon Button - -As of version `17.1.0` the IgniteUI for Angular exposes a new `igxIconButton` directive intended to turn icons into fully functional buttons. You can read more about the [_Icon Button here_](/icon-button). - -```html - -``` - - - -This component uses Material Icons. Add the following link to your `index.html`: `` - - - - -### Floating Action Button - -We can create a floating action button and use an icon to display: - -```html - -``` - -To create an extended FAB, you can add any element prior to the `igx-icon`: - -```html - -``` - - -To get the extended FAB text styled properly, use `` or `
` tags. - - - - -## Examples - -### Angular Disable Button - -The `disabled` property can be used to make a button unclickable: - -```html - -``` - - - -### Ripple - -The directive adds a ripple effect to your buttons or other specified elements. You can easily change the default ripple color, position and duration, using its properties: - -```html - -``` - - - -### Span - -We can also use the `igxButton` directive to turn elements like `span` and `div` into Ignite UI for Angular styled buttons. The default colors can be customized via the `igxButtonColor` and the `igxButtonBackground` properties: - -```html - - Span - -``` - - - -## Size - -We can allow the user to choose the size of the `igxButton` by using the `--ig-size` custom CSS property. To do this, first we have to import the `IgxButtonGroupModule`, and then use the component to display size values. This way whenever one gets selected, we will update the **--ig-size** CSS property. - -```typescript -// app.module.ts -... -import { IgxButtonGroupModule } from 'igniteui-angular/button-group'; -// import { IgxButtonGroupModule } from '@infragistics/igniteui-angular'; for licensed package -@NgModule({ - imports: [ - ... - IgxButtonGroupModule - ... - ] -}) -``` - -```html -{/*buttons-density.component.html*/} - -... - -``` - -```typescript -// buttons-density.component.ts -public size = "large"; -public sizes; -public ngOnInit() { - this.sizes = [ - { label: 'large', selected: this.size === 'large', togglable: true }, - { label: 'medium', selected: this.size === 'medium', togglable: true }, - { label: 'small', selected: this.size === 'small', togglable: true } - ]; -} - -public selectSize(event: any) { - this.size = this.sizes[event.index].label; -} - -@HostBinding('style.--ig-size') -protected get sizeStyle() { - return `var(--ig-size-${this.size})`; -} -``` - -If all went well, you should see something like the following in the browser: - - - -
- -## Styling - -### Button Theme Property Map - -When you modify a primary property, all related dependent properties are updated automatically: - -
- - - - - - - - - -
- -
- -### Material Theme - -#### Flat Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | - -#### Contained Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-background | Focus background color | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $active-background | Active background color | -| | $active-foreground | Active foreground color | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | - -#### Outlined Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $border-color | The border color for outlined buttons. | -| | $hover-border-color | The border color for hovered outlined buttons. | -| | $focus-border-color | The border color for focused outlined buttons. | -| | $focus-visible-border-color | The border color for outlined buttons when focus is visible. | -| | $active-border-color | The border color for active outlined buttons. | - -#### FAB Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-background | Focus background color | -| | $focus-foreground | Foreground on focus | -| | $active-background | Active background color | -| | $active-foreground | Active foreground color | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | - -
- -
- -### Fluent Theme - -#### Flat Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | - -#### Contained Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $focus-background | Focus background color | -| | $active-background | Active background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-foreground | Foreground on focus | -| | $active-foreground | Active foreground color | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | - -#### Outlined Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered outlined button. | -| | $focus-background | Background color for focused outlined button. | -| | $focus-hover-background | Background color for outlined button on focus + hover. | -| | $active-background | Background color for active outlined button. | -| | $hover-foreground | Foreground color for hovered outlined button. | -| | $icon-color-hover | Icon color for hovered outlined button. | -| | $focus-foreground | Foreground color for focused outlined button. | -| | $focus-hover-foreground | Foreground color for outlined button on focus + hover. | -| | $active-foreground | Foreground color for active outlined button. | -| | $focus-visible-foreground | Foreground color for outlined button when focus is visible. | -| | $focus-visible-border-color | Border color for outlined button when focus is visible. | -| | $border-color | Border color for outlined button. | -| | $hover-border-color | Border color for hovered outlined button. | -| | $focus-border-color | Border color for focused outlined button. | -| | $active-border-color | Border color for active outlined button. | - -#### FAB Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $active-background | Active background color | -| | $active-foreground | Active foreground color | -| | $focus-background | Focus background color | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | - -
- -
- -### Bootstrap Theme - -#### Flat Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | -| | $disabled-foreground | Foreground color for disabled button | -| | $disabled-icon-color | Icon color for disabled button | -| | $shadow-color | Shadow color | - -#### Contained Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $focus-background | Focus background color | -| | $active-background | Active background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $active-foreground | Active foreground color | -| | $shadow-color | Shadow color | -| | $disabled-background | Disabled background color | -| | $disabled-foreground | Disabled foreground color | -| | $disabled-icon-color | Disabled icon color | - -#### Outlined Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | -| | $disabled-foreground | Foreground color for disabled button | -| | $disabled-icon-color | Icon color for disabled button | -| | $disabled-border-color | Border color for disabled button | -| | $hover-border-color | Hover border color | -| | $focus-border-color | Focus border color | -| | $active-border-color | Active border color | -| | $shadow-color | Shadow color | - -#### FAB Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $focus-background | Focus background color | -| | $active-background | Active background color | -| | $disabled-background | Disabled background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $active-foreground | Active foreground color | -| | $shadow-color | Shadow color | -| | $disabled-foreground | Disabled foreground color | -| | $disabled-icon-color | Disabled icon color | - -
- -
- -### Indigo Theme - -#### Flat Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $disabled-foreground | Disabled foreground color | -| | $disabled-icon-color | Disabled icon color | -| | $shadow-color | Shadow color | - -#### Contained Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $focus-background | Focus background color | -| | $active-background | Active background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $active-foreground | Active foreground color | -| | $shadow-color | Shadow color | -| | $disabled-background | Disabled background color | -| | $disabled-foreground | Disabled foreground color | -| | $disabled-icon-color | Disabled icon color | - -#### Outlined Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$foreground** | $hover-background | Background color for hovered button | -| | $focus-background | Background color for focused button | -| | $focus-hover-background | Background color for button on focus + hover | -| | $active-background | Background color for active button | -| | $hover-foreground | Foreground color for hovered button | -| | $icon-color-hover | Icon color for hovered button | -| | $focus-foreground | Foreground color for focused button | -| | $focus-hover-foreground | Foreground color for button on focus + hover | -| | $active-foreground | Foreground color for active button | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $focus-visible-border-color | Border color when focus is visible | -| | $border-color | Border color | -| | $hover-border-color | Hover border color | -| | $focus-border-color | Focus border color | -| | $active-border-color | Active border color | -| | $shadow-color | Shadow color | - -#### FAB Button - -| Primary Property | Dependent Property | Description | -|:--|:--|:--| -| **$background** | $foreground | Foreground based on background | -| | $icon-color | Icon color based on background | -| | $hover-background | Hover background color | -| | $focus-background | Focus background color | -| | $active-background | Active background color | -| | $disabled-background | Disabled background color | -| | $hover-foreground | Foreground on hover | -| | $icon-color-hover | Icon color on hover | -| | $focus-foreground | Foreground on focus | -| | $focus-hover-background | Focus + hover background | -| | $focus-hover-foreground | Foreground on focus + hover | -| | $focus-visible-background | Background when focus is visible | -| | $focus-visible-foreground | Foreground when focus is visible | -| | $active-foreground | Active foreground color | -| | $shadow-color | Shadow color | -| | $disabled-foreground | Disabled foreground color | -| | $disabled-icon-color | Disabled icon color | - -
- -
- -
- - -> **Note:** The resulting dependent properties may vary slightly depending on the selected theme (Material, Fluent, Bootstrap, Indigo). - -To style the button you can use our type-specific theme functions: , , , and . - -Each of them will target only the buttons of that specific type. - -To get started, first import the themes module, which includes all theme functions and component mixins: - -```scss -@use "igniteui-angular/theming" as *; - -// IMPORTANT: Prior to Ignite UI for Angular version 13 use: -// @import '~igniteui-angular/lib/core/styles/themes/index'; -``` - -Next, create a new theme that extends the type-specific theme function for the type of button you are styling. In this example, we will use the function and pass values to the `$foreground` and the `$background` parameters, along with their respective hover and active parameters. - -Given the following markup: - -```html -
- - -
-``` - -You can create the following theme: - -```scss -$custom-contained-theme: contained-button-theme( - $background: #f9f0ff, - $foreground: #722ed1, - $hover-background: #efdbff, - $hover-foreground: #9254de, - $active-foreground: #531dab, - $active-background: #dfc2fa, -); -``` - -Take a look at the section for a complete list of available parameters for styling the contained-type buttons. - -Finally, **include** the custom theme in your application: - -```scss -.my-contained-btn { - @include tokens($custom-contained-theme); -} -``` - -With the type-specific theme functions, styling buttons is much easier. - -For and functions, you only need to provide a color value to the `$background` parameter. All other button state and text colors (if they are not provided) will then be automatically generated and applied based on that value. - -The text color is determined by the newly added function, which calculates whether black or white provides better contrast against the supplied background color. - -For and functions, the button state colors are also automatically generated and applied, but they are derived from the supplied `$foreground` parameter instead of `$background`. - -In the sample below, you can see how using the button component with customized CSS variables allows you to create a design that visually resembles the button used in the [`Ant`](https://ant.design/components/button?theme=light#button-demo-color-variant) design system. - - - - -The sample uses the [Bootstrap Light](/themes/sass/schemas#predefined-schemas) schema. - - -### Styling with Tailwind - -You can style the `button` using our custom Tailwind utility classes. Make sure to [set up Tailwind](/themes/misc/tailwind-classes) first. - -Along with the tailwind import in your global stylesheet, you can apply the desired theme utilities as follows: - -```scss -@import "tailwindcss"; -... -@use 'igniteui-theming/tailwind/utilities/material.css'; -``` - -The utility file includes both `light` and `dark` theme variants. - -- Use `light-*` classes for the light theme. -- Use `dark-*` classes for the dark theme. -- Append the component name after the prefix. Because the button has types, the classes are used like so, e.g., `light-contained-button`, `light-flat-button` `dark-outlined-button`, `dark-fab-button`, etc. - -Once applied, these classes enable dynamic theme calculations. From there, you can override the generated CSS variables using `arbitrary properties`. After the colon, provide any valid CSS color format (HEX, CSS variable, RGB, etc.). - -You can find the full list of properties in the which reflect differently in the different variants, the primary property for the `flat` and `outlined` buttons is `$foreground` and for the `contained` and `fab` buttons is `$background`. The syntax is as follows: - -```html -
- -
- - - -
-
- - - -
-
- - - -
-
- - - -
-
-``` - - -The exclamation mark(`!`) is required to ensure the utility class takes precedence. Tailwind applies styles in layers, and without marking these styles as important, they will get overridden by the component’s default theme. - - -At the end your buttons should look like this: - - - -### Custom sizing - -You can change the button height either by using the `--size` variable, targeting the `button` directly: - -```scss -button { - --size: 50px; -} -``` - -Or you can use the universal `--ig-button-size` variable to target all instances: - -```html -
- - -
-``` - -```scss -.my-app { - --ig-button-size: 50px; -} -``` - -You can also use one of the predefined sizes, assigning it to the `--ig-size` variable. The available values for `--ig-size` are `--ig-size-small`, `--ig-size-medium`, and `--ig-size-large`: - -```scss -button { - --ig-size: var(--ig-size-large); -} -``` - -Learn more about it in the [Size](/display-density) article. - -
- -## API References -
-- -- -- -- -- -## Additional Resources - -
- -Our community is active and always welcoming to new ideas. - -- [Ignite UI for Angular **Forums**](https://www.infragistics.com/community/forums/f/ignite-ui-for-angular) -- [Ignite UI for Angular **GitHub**](https://github.com/IgniteUI/igniteui-angular) From 26f95082dbc1bbf9ac7755fbb79c0fa980d3cf7d Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 13 Aug 2026 16:52:48 +0300 Subject: [PATCH 3/8] fix(button): relative links --- docs/angular/src/content/en/components/dialog.mdx | 2 +- .../en/components/themes/misc/angular-material-theming.mdx | 2 +- .../content/en/components/themes/misc/bootstrap-theming.mdx | 2 +- docs/angular/src/content/en/components/time-picker.mdx | 2 +- docs/angular/src/content/en/components/toc.json | 2 +- docs/angular/src/content/en/components/tooltip.mdx | 2 +- docs/xplat/src/content/en/toc.json | 3 ++- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/angular/src/content/en/components/dialog.mdx b/docs/angular/src/content/en/components/dialog.mdx index 4ca3c0c1c1..637b27b59e 100644 --- a/docs/angular/src/content/en/components/dialog.mdx +++ b/docs/angular/src/content/en/components/dialog.mdx @@ -295,7 +295,7 @@ $my-dialog-theme: dialog-theme( ``` -In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](/components/inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). ```scss diff --git a/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx b/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx index 048e551909..d7cab8a3e3 100644 --- a/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx +++ b/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx @@ -415,7 +415,7 @@ Related topics: - [Component Themes](../sass/component-themes.mdx) - [Typography](../sass/typography.mdx) - [Avatar Component](../../avatar.mdx) -- [Button Component](../../button.mdx) +- [Button Component](/components/inputs/button) - [Dialog Component](../../dialog.mdx) - [Icon Component](../../icon.mdx) - [Expansion Panel Component](../../expansion-panel.mdx) diff --git a/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx b/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx index 27282e7fd7..9c93cfc707 100644 --- a/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx +++ b/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx @@ -368,7 +368,7 @@ Ignite UI for Angular exposes four default type scales for each of its themes, w - [Component Themes](/themes/sass/component-themes) - [Typography](/themes/sass/typography) - [Avatar Component](/avatar) -- [Button Component](/button) +- [Button Component](/components/inputs/button) - [Dialog Component](/dialog) - [Icon Component](/icon) - [List Component](/list) diff --git a/docs/angular/src/content/en/components/time-picker.mdx b/docs/angular/src/content/en/components/time-picker.mdx index 8757d00a47..6452e3cf35 100644 --- a/docs/angular/src/content/en/components/time-picker.mdx +++ b/docs/angular/src/content/en/components/time-picker.mdx @@ -408,7 +408,7 @@ $my-time-picker-theme: time-picker-theme( ``` -In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](/components/inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). Since the time picker window uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the time picker window that we want to style, we will provide a specific outlet where the dialog window will be placed in the DOM when it is visible. diff --git a/docs/angular/src/content/en/components/toc.json b/docs/angular/src/content/en/components/toc.json index 796c2396b8..622eadb32e 100644 --- a/docs/angular/src/content/en/components/toc.json +++ b/docs/angular/src/content/en/components/toc.json @@ -1950,7 +1950,7 @@ }, { "name": "Button", - "href": "button.mdx" + "href": "inputs/button.mdx" }, { "name": "Button Group", diff --git a/docs/angular/src/content/en/components/tooltip.mdx b/docs/angular/src/content/en/components/tooltip.mdx index 51fdaea73c..0072025caf 100644 --- a/docs/angular/src/content/en/components/tooltip.mdx +++ b/docs/angular/src/content/en/components/tooltip.mdx @@ -486,7 +486,7 @@ $dark-tooltip: tooltip-theme( ``` -In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](/button), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](/components/inputs/button), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). Since the tooltip uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the tooltip that we want to style, we will provide a specific outlet where the tooltip will be placed in the DOM when it is visible. diff --git a/docs/xplat/src/content/en/toc.json b/docs/xplat/src/content/en/toc.json index 4bcb652f11..4557974bea 100644 --- a/docs/xplat/src/content/en/toc.json +++ b/docs/xplat/src/content/en/toc.json @@ -2435,7 +2435,8 @@ }, { "name": "Button", - "href": "inputs/button.mdx" + "href": "inputs/button.mdx", + "updated": true }, { "exclude": [ From 94859a6ee695cf975daa4018afaeac0c081b13af Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 13 Aug 2026 17:14:25 +0300 Subject: [PATCH 4/8] fix(button): fix broken links --- docs/angular/src/content/en/components/dialog.mdx | 2 +- .../en/components/themes/misc/angular-material-theming.mdx | 2 +- .../content/en/components/themes/misc/bootstrap-theming.mdx | 2 +- docs/angular/src/content/en/components/themes/roundness.mdx | 2 +- docs/angular/src/content/en/components/time-picker.mdx | 2 +- docs/angular/src/content/en/components/tooltip.mdx | 2 +- docs/angular/src/content/en/grids_templates/row-editing.mdx | 4 ++-- docs/angular/src/content/en/grids_templates/search.mdx | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/angular/src/content/en/components/dialog.mdx b/docs/angular/src/content/en/components/dialog.mdx index 637b27b59e..a6d55654b5 100644 --- a/docs/angular/src/content/en/components/dialog.mdx +++ b/docs/angular/src/content/en/components/dialog.mdx @@ -295,7 +295,7 @@ $my-dialog-theme: dialog-theme( ``` -In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](/components/inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). + In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). ```scss diff --git a/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx b/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx index d7cab8a3e3..c382d7c00c 100644 --- a/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx +++ b/docs/angular/src/content/en/components/themes/misc/angular-material-theming.mdx @@ -415,7 +415,7 @@ Related topics: - [Component Themes](../sass/component-themes.mdx) - [Typography](../sass/typography.mdx) - [Avatar Component](../../avatar.mdx) -- [Button Component](/components/inputs/button) +- [Button Component](inputs/button) - [Dialog Component](../../dialog.mdx) - [Icon Component](../../icon.mdx) - [Expansion Panel Component](../../expansion-panel.mdx) diff --git a/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx b/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx index 9c93cfc707..d3b389b970 100644 --- a/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx +++ b/docs/angular/src/content/en/components/themes/misc/bootstrap-theming.mdx @@ -368,7 +368,7 @@ Ignite UI for Angular exposes four default type scales for each of its themes, w - [Component Themes](/themes/sass/component-themes) - [Typography](/themes/sass/typography) - [Avatar Component](/avatar) -- [Button Component](/components/inputs/button) +- [Button Component](inputs/button) - [Dialog Component](/dialog) - [Icon Component](/icon) - [List Component](/list) diff --git a/docs/angular/src/content/en/components/themes/roundness.mdx b/docs/angular/src/content/en/components/themes/roundness.mdx index b0ef36f9cc..070ec5704a 100644 --- a/docs/angular/src/content/en/components/themes/roundness.mdx +++ b/docs/angular/src/content/en/components/themes/roundness.mdx @@ -20,7 +20,7 @@ Many Ignite UI components have predefined minimum and maximum border-radius valu When you set `--ig-radius-factor` to 0, the component uses its minimum border-radius and will appear more block-like with sharp corners. When set to 1, the component uses its maximum predefined border-radius and will appear rounded. Here is a list of the components that have predefined minimum and maximum border-radius values and can be modified using the `--ig-radius-factor` variable:
-• [Action Strip](/action-strip) • [Button](/button) • [Button Group](/button-group) • [Calendar](/calendar) • [Card](/card) • [Carousel](/carousel) • [Checkbox](/checkbox) • [Chip](/chip) • [Combo](/combo) • [Date Picker](/date-picker) • [Date Range Picker](/date-range-picker) • [Grid](/grid/grid) • [Input Group](/input-group) • [Linear Progress](/linear-progress) • [List](/list) • [Month Picker](/month-picker) • [Navigation Drawer](/navdrawer) • [Radio](/radio-button) • [Ripple](/ripple) • [Snackbar](/snackbar) • [Switch](/switch) • [Toast](/toast) +• [Action Strip](/action-strip) • [Button](inputs/button) • [Button Group](/button-group) • [Calendar](/calendar) • [Card](/card) • [Carousel](/carousel) • [Checkbox](/checkbox) • [Chip](/chip) • [Combo](/combo) • [Date Picker](/date-picker) • [Date Range Picker](/date-range-picker) • [Grid](/grid/grid) • [Input Group](/input-group) • [Linear Progress](/linear-progress) • [List](/list) • [Month Picker](/month-picker) • [Navigation Drawer](/navdrawer) • [Radio](/radio-button) • [Ripple](/ripple) • [Snackbar](/snackbar) • [Switch](/switch) • [Toast](/toast) ## Usage diff --git a/docs/angular/src/content/en/components/time-picker.mdx b/docs/angular/src/content/en/components/time-picker.mdx index 6452e3cf35..cdda7aec8e 100644 --- a/docs/angular/src/content/en/components/time-picker.mdx +++ b/docs/angular/src/content/en/components/time-picker.mdx @@ -408,7 +408,7 @@ $my-time-picker-theme: time-picker-theme( ``` -In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](/components/inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). Since the time picker window uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the time picker window that we want to style, we will provide a specific outlet where the dialog window will be placed in the DOM when it is visible. diff --git a/docs/angular/src/content/en/components/tooltip.mdx b/docs/angular/src/content/en/components/tooltip.mdx index 0072025caf..d898c2fe1d 100644 --- a/docs/angular/src/content/en/components/tooltip.mdx +++ b/docs/angular/src/content/en/components/tooltip.mdx @@ -486,7 +486,7 @@ $dark-tooltip: tooltip-theme( ``` -In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](/components/inputs/button), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](inputs/button), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). Since the tooltip uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the tooltip that we want to style, we will provide a specific outlet where the tooltip will be placed in the DOM when it is visible. diff --git a/docs/angular/src/content/en/grids_templates/row-editing.mdx b/docs/angular/src/content/en/grids_templates/row-editing.mdx index 459dbf76f3..3d6044f05b 100644 --- a/docs/angular/src/content/en/grids_templates/row-editing.mdx +++ b/docs/angular/src/content/en/grids_templates/row-editing.mdx @@ -320,9 +320,9 @@ If you want the buttons to be part of the keyboard navigation, then each on of t Using the [Ignite UI for Angular Theme Library](/themes), we can greatly alter the Row Editing overlay. The Row Editing overlay is a composite element - its UI is comprised of a couple of other components: - [`igx-banner`](/banner) in order to render its contents - - [`igx-button`](/button)s are rendered in the default template (for the `Done` and `Cancel` buttons). + - [`igx-button`](inputs/button)s are rendered in the default template (for the `Done` and `Cancel` buttons). -In the below example, we will make use of those two components' styling options, [`button styling`](/button#styling) & [`banner-styling`](/banner#styling), to customize the experience of our {ComponentName}'s Row Editing. +In the below example, we will make use of those two components' styling options, [`button styling`](inputs/button#styling) & [`banner-styling`](/banner#styling), to customize the experience of our {ComponentName}'s Row Editing. We will also style the current cell's editor and background to make it more distinct. diff --git a/docs/angular/src/content/en/grids_templates/search.mdx b/docs/angular/src/content/en/grids_templates/search.mdx index c75a46a425..d0330d3f09 100644 --- a/docs/angular/src/content/en/grids_templates/search.mdx +++ b/docs/angular/src/content/en/grids_templates/search.mdx @@ -260,7 +260,7 @@ What if we would like to filter and sort our {ComponentTitle} or even to add and ### Adding icons By using some of our other components, we can create an enriched user interface and improve the overall design of our entire search bar! We can have a nice search or delete icon on the left of the search input, a couple of chips for our search options and some material design icons combined with nice ripple styled buttons for our navigation on the right. We can wrap these components inside an input group for a more refined design. -To do this, let's go and grab the [**IgxInputGroup**](/input-group), [**IgxIcon**](/icon), [**IgxRipple**](/ripple), [**IgxButton**](/button) and the [**IgxChip**](/chip) modules. +To do this, let's go and grab the [**IgxInputGroup**](/input-group), [**IgxIcon**](/icon), [**IgxRipple**](/ripple), [**IgxButton**](inputs/button) and the [**IgxChip**](/chip) modules. ```typescript // app.module.ts From 69200e0cc7be54c03984b7f3c209bb82c012bca2 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 13 Aug 2026 17:53:36 +0300 Subject: [PATCH 5/8] fix(button): update toc --- docs/angular/src/content/en/components/dialog.mdx | 2 +- docs/angular/src/content/en/components/time-picker.mdx | 2 +- docs/angular/src/content/en/components/tooltip.mdx | 2 +- docs/xplat/src/content/en/toc.json | 6 ------ 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/angular/src/content/en/components/dialog.mdx b/docs/angular/src/content/en/components/dialog.mdx index a6d55654b5..a07ecaafbf 100644 --- a/docs/angular/src/content/en/components/dialog.mdx +++ b/docs/angular/src/content/en/components/dialog.mdx @@ -295,7 +295,7 @@ $my-dialog-theme: dialog-theme( ``` - In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the dialog window's content (such as the [`IgxButton`](./inputs/button.mdx)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). ```scss diff --git a/docs/angular/src/content/en/components/time-picker.mdx b/docs/angular/src/content/en/components/time-picker.mdx index cdda7aec8e..1c17871361 100644 --- a/docs/angular/src/content/en/components/time-picker.mdx +++ b/docs/angular/src/content/en/components/time-picker.mdx @@ -408,7 +408,7 @@ $my-time-picker-theme: time-picker-theme( ``` -In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](inputs/button)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the time picker window's content (such as the [`IgxButton`](./inputs/button.mdx)), an additional theme should be created that is specific to the respective component and is placed under the dialog window's scope only (so it does not affect the rest of the application). Since the time picker window uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the time picker window that we want to style, we will provide a specific outlet where the dialog window will be placed in the DOM when it is visible. diff --git a/docs/angular/src/content/en/components/tooltip.mdx b/docs/angular/src/content/en/components/tooltip.mdx index d898c2fe1d..da8408e8b5 100644 --- a/docs/angular/src/content/en/components/tooltip.mdx +++ b/docs/angular/src/content/en/components/tooltip.mdx @@ -486,7 +486,7 @@ $dark-tooltip: tooltip-theme( ``` -In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](inputs/button), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). +In order to style any additional components that are used as part of the tooltip's content (such as [`IgxButton`](./inputs/button.mdx), [`IgxSwitch`](/switch), etc.), an additional theme should be created that is specific to the respective component and placed under the tooltip's scope only (so it does not affect the rest of the application). Since the tooltip uses the [`IgxOverlayService`](/overlay), in order for our custom theme to reach down the tooltip that we want to style, we will provide a specific outlet where the tooltip will be placed in the DOM when it is visible. diff --git a/docs/xplat/src/content/en/toc.json b/docs/xplat/src/content/en/toc.json index 4557974bea..37d952023a 100644 --- a/docs/xplat/src/content/en/toc.json +++ b/docs/xplat/src/content/en/toc.json @@ -2510,16 +2510,10 @@ "href": "inputs/dropdown.mdx" }, { - "exclude": [ - "Angular" - ], "name": "Icon", "href": "layouts/icon.mdx" }, { - "exclude": [ - "Angular" - ], "name": "Icon Button", "href": "inputs/icon-button.mdx" }, From 7bcc882b1c8e512450abf615c718be17ecbc2184 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Fri, 14 Aug 2026 19:31:27 +0300 Subject: [PATCH 6/8] feat(button): update topics content --- .../content/en/components/inputs/button.mdx | 121 ++++++------------ 1 file changed, 41 insertions(+), 80 deletions(-) diff --git a/docs/xplat/src/content/en/components/inputs/button.mdx b/docs/xplat/src/content/en/components/inputs/button.mdx index 3edba495cd..496a3a1f70 100644 --- a/docs/xplat/src/content/en/components/inputs/button.mdx +++ b/docs/xplat/src/content/en/components/inputs/button.mdx @@ -24,7 +24,6 @@ import buttonDoNot1 from '@xplat-images/button/button-do-not-1.png'; import buttonDoNot2 from '@xplat-images/button/button-do-not-2.png'; import buttonDoNot3 from '@xplat-images/button/button-do-not-3.png'; - # Button Component The {Platform} Button component lets you enable clickable elements that trigger actions in your {Platform} app. You get full control over button variants, styling, and sizes. The Button component also lets you handle clicks, toggle the button, and disable it when needed. @@ -33,13 +32,13 @@ The {Platform} Button component lets you enable clickable elements that trigger - + - + @@ -64,61 +63,63 @@ The {Platform} Button renders its label and optional prefix and suffix content i max-width: 520px; } - .button-anatomy-parts { + .button-anatomy-legend { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 20px; + column-gap: 48px; margin-bottom: 24px; } - .button-anatomy-parts strong { + .button-anatomy-legend div { + display: flex; + flex-direction: column; + gap: 8px; + } + + .button-anatomy-legend strong { + margin-bottom: 12px; + } + + .button-anatomy-legend span { display: block; - font-weight: 700; - margin-bottom: 20px; } - .button-anatomy-parts ol { - margin: 0; - padding-left: 16px; - font-size: 14px; - line-height: 20px; + @media (max-width: 768px) { + .button-anatomy-legend { + grid-template-columns: 1fr 1fr; + row-gap: 24px; + } } - .button-anatomy-parts li::marker { - color: #000; + @media (max-width: 480px) { + .button-anatomy-legend { + grid-template-columns: 1fr; + } } `} -
+
A - Contained Button -
    -
  1. Icon (optional)
  2. -
  3. Label
  4. -
  5. Container
  6. -
+ 1. Icon (optional) + 2. Label + 3. Container
B - Outlined Button -
    -
  1. Icon (optional)
  2. -
  3. Label
  4. -
  5. Container
  6. -
+ 4. Icon (optional) + 5. Label + 6. Container
C - Flat Button -
    -
  1. Icon (optional)
  2. -
  3. Label
  4. -
+ 7. Icon (optional) + 8. Label
D - Fab Icon Button -
    -
  1. Icon
  2. -
  3. Container
  4. -
+ 9. Icon + 10. Container
@@ -249,8 +250,6 @@ The simplest way to start using the is as f Use the {Platform} Button to trigger an action, submit form data, or navigate to another page. Choose the appropriate button type and variant for the action, then add optional content such as icons when needed. -### Content - The Button content is placed in its default slot. Add the action label as the button content so that the purpose of the action is clear to all users. @@ -269,20 +268,6 @@ The Button content is placed in its default slot. Add the action label as the bu - - - - - - - - - - - - -### Prefix / Suffix - With `prefix` and `suffix` slots of the component, we can add different content before and after the main content of the button. We recommend using a `` element when adding simple text, symbols, or emojis, and an [``](../layouts/icon.mdx) component when adding icons to the `prefix` and `suffix` slots. @@ -332,18 +317,6 @@ We recommend using a `` element when adding simple text, symbols, or emoji - - - - - - - - - - - - ### Type The button component will change its internal structure from a [`
``` - + @@ -574,7 +535,7 @@ As of version `17.1.0`, Ignite UI for Angular exposes the `igxIconButton` direct - + @@ -588,7 +549,7 @@ You may also insert each Button in a disabled state because they all support bot ``` - + @@ -618,7 +579,7 @@ You may also insert each Button in a disabled state because they all support bot - + @@ -634,7 +595,7 @@ In Figma the Enabled buttons support **Idle**, Hover, Focused and Focused & Hove ``` - + @@ -644,7 +605,7 @@ In Figma the Enabled buttons support **Idle**, Hover, Focused and Focused & Hove Ripple and focus states ``` - + From e071d14f8efcecdd4e2b9f277ccdc827ce0e4d01 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Mon, 17 Aug 2026 10:04:03 +0300 Subject: [PATCH 7/8] fix(button): update the topics content and samples sizes --- .../content/en/components/inputs/button.mdx | 126 ++++-------------- 1 file changed, 23 insertions(+), 103 deletions(-) diff --git a/docs/xplat/src/content/en/components/inputs/button.mdx b/docs/xplat/src/content/en/components/inputs/button.mdx index 496a3a1f70..74e0a309fb 100644 --- a/docs/xplat/src/content/en/components/inputs/button.mdx +++ b/docs/xplat/src/content/en/components/inputs/button.mdx @@ -621,7 +621,7 @@ Contained, Outlined, Flat, and Floating Action Buttons support flexible icon and ``` - + @@ -663,50 +663,20 @@ Contained, Outlined, Flat, and Floating Action Buttons support flexible icon and - + ### Size -Users can change the size of the using the `--ig-size` CSS variable. In the following example, we will add some radio buttons to display all size values. This way whenever one gets selected, we will change the size of the button. - - - -```ts -import { defineComponents, IgcButtonComponent, IgcRadioComponent, IgcRadioGroupComponent } from 'igniteui-webcomponents'; -defineComponents(IgcButtonComponent, IgcRadioComponent, IgcRadioGroupComponent); -``` - - +Users can change the size of the using the `--ig-size` CSS variable. ```html - - Small - Medium - Large - -``` - - - - - -```ts -this.radioGroup = document.getElementById('radio-group') as IgcRadioGroupComponent; -this.outlinedButton = document.getElementById('outlined-btn') as IgcButtonComponent; -this.flatButton = document.getElementById('flat-btn') as IgcButtonComponent; -this.containedButton = document.getElementById('contained-btn') as IgcButtonComponent; -this.fabButton = document.getElementById('fab-btn') as IgcButtonComponent; - -this.radioGroup.addEventListener('click', (radio: any) => { - this.outlinedButton.style.setProperty('--ig-size', `var(--ig-size-${radio.target.value})`); - this.flatButton.style.setProperty('--ig-size', `var(--ig-size-${radio.target.value})`); - this.containedButton.style.setProperty('--ig-size', `var(--ig-size-${radio.target.value})`); - this.fabButton.style.setProperty('--ig-size', `var(--ig-size-${radio.target.value})`); -}); + + Small + ``` @@ -714,40 +684,9 @@ this.radioGroup.addEventListener('click', (radio: any) => { ```tsx -import { IgrButton, IgrRadio, IgrRadioGroup } from 'igniteui-react'; - -const [size, setSize] = useState("small"); - -const onRadioChange = (e: IgrRadioChangeEventArgs) => { - setSize(e.detail.value); -}; - - - - Small - - - Medium - - - Large - - - -
- - Flat - - - Contained - - - Outlined - - - Fab - -
+ + Small + ```
@@ -755,50 +694,31 @@ const onRadioChange = (e: IgrRadioChangeEventArgs) => { ```razor - - Small - Medium - Large - - -@code { - private SizableComponentSize SizableComponentSize = SizableComponentSize.Large; - - protected override void OnInitialized() - { - } - - public void OnSmallClick(EventArgs e) - { - SizableComponentSize = SizableComponentSize.Small; - } + + Small + +``` - public void OnMediumClick(EventArgs e) - { - SizableComponentSize = SizableComponentSize.Medium; - } + - public void OnLargeClick(EventArgs e) - { - SizableComponentSize = SizableComponentSize.Large; - } +```css +.button-size-small { + --ig-size: var(--ig-size-small); } ``` - - The result of implementing the above code should look like the following: - + - + @@ -970,13 +890,13 @@ igc-button::part(base) { - + - + @@ -1003,7 +923,7 @@ Use the variant-specific classes such as `light-flat-button`, `light-contained-b The exclamation mark (`!`) ensures that the utility class takes precedence over the Button's default theme. - + @@ -1042,7 +962,7 @@ You can style the Button with the custom Tailwind utility classes from `igniteui The exclamation mark (`!`) gives the Tailwind utility precedence over the Button's default theme styles. - + From ab58051f4e090f9846229fb4606cf62c8f547a8a Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Mon, 17 Aug 2026 10:30:59 +0300 Subject: [PATCH 8/8] fix(button): fix layout template sample position --- docs/xplat/src/content/en/components/inputs/button.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/xplat/src/content/en/components/inputs/button.mdx b/docs/xplat/src/content/en/components/inputs/button.mdx index 74e0a309fb..41ce6cb337 100644 --- a/docs/xplat/src/content/en/components/inputs/button.mdx +++ b/docs/xplat/src/content/en/components/inputs/button.mdx @@ -621,7 +621,7 @@ Contained, Outlined, Flat, and Floating Action Buttons support flexible icon and ``` - + @@ -663,7 +663,7 @@ Contained, Outlined, Flat, and Floating Action Buttons support flexible icon and - +