From e5d71a6c827f6ba69dba10900af0978b24832a10 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Fri, 15 Nov 2024 14:41:15 +0100 Subject: [PATCH] LibWeb: Apply the paint transformation in SVGGradientElement In commit 1b82cb43c2db1686e2f36d826059698381ec2edc I accidentally removed the paint transformation altogether. The result was that zoomed-in SVGs, or SVG elements with a transformation applied could have their gradient coordinates misplaced significantly. This was also exposed in the `svg-text-effects` test by way of a slight visual difference. Add a new test that very clearly exposes the fixed issue by rotating the gradient coordinates by 45 degrees. --- .../LibWeb/Painting/SVGPathPaintable.cpp | 1 + Libraries/LibWeb/SVG/SVGGradientElement.cpp | 2 +- Libraries/LibWeb/SVG/SVGGradientElement.h | 1 + ...svg-gradient-paint-transformation-ref.html | 9 +++++++++ .../svg-gradient-paint-transformation-ref.png | Bin 0 -> 4488 bytes .../images/svg-text-effects-ref.png | Bin 13791 -> 17457 bytes .../svg-gradient-paint-transformation.html | 13 +++++++++++++ 7 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Screenshot/expected/svg-gradient-paint-transformation-ref.html create mode 100644 Tests/LibWeb/Screenshot/images/svg-gradient-paint-transformation-ref.png create mode 100644 Tests/LibWeb/Screenshot/input/svg-gradient-paint-transformation.html diff --git a/Libraries/LibWeb/Painting/SVGPathPaintable.cpp b/Libraries/LibWeb/Painting/SVGPathPaintable.cpp index 40eeb529748..fe2a14ad446 100644 --- a/Libraries/LibWeb/Painting/SVGPathPaintable.cpp +++ b/Libraries/LibWeb/Painting/SVGPathPaintable.cpp @@ -106,6 +106,7 @@ void SVGPathPaintable::paint(PaintContext& context, PaintPhase phase) const SVG::SVGPaintContext paint_context { .viewport = svg_viewport, .path_bounding_box = computed_path()->bounding_box(), + .paint_transform = paint_transform, }; auto fill_opacity = graphics_element.fill_opacity().value_or(1); diff --git a/Libraries/LibWeb/SVG/SVGGradientElement.cpp b/Libraries/LibWeb/SVG/SVGGradientElement.cpp index e65766a86da..e090a3feae4 100644 --- a/Libraries/LibWeb/SVG/SVGGradientElement.cpp +++ b/Libraries/LibWeb/SVG/SVGGradientElement.cpp @@ -84,7 +84,7 @@ Optional SVGGradientElement::gradient_transform_impl(HashT // The gradient transform, appropriately scaled and combined with the paint transform. Gfx::AffineTransform SVGGradientElement::gradient_paint_transform(SVGPaintContext const& paint_context) const { - Gfx::AffineTransform gradient_paint_transform; + Gfx::AffineTransform gradient_paint_transform = paint_context.paint_transform; auto const& bounding_box = paint_context.path_bounding_box; if (gradient_units() == SVGUnits::ObjectBoundingBox) { diff --git a/Libraries/LibWeb/SVG/SVGGradientElement.h b/Libraries/LibWeb/SVG/SVGGradientElement.h index bfd860ee2bd..81d6f9f5b01 100644 --- a/Libraries/LibWeb/SVG/SVGGradientElement.h +++ b/Libraries/LibWeb/SVG/SVGGradientElement.h @@ -19,6 +19,7 @@ namespace Web::SVG { struct SVGPaintContext { Gfx::FloatRect viewport; Gfx::FloatRect path_bounding_box; + Gfx::AffineTransform paint_transform; }; inline Painting::SVGGradientPaintStyle::SpreadMethod to_painting_spread_method(SpreadMethod spread_method) diff --git a/Tests/LibWeb/Screenshot/expected/svg-gradient-paint-transformation-ref.html b/Tests/LibWeb/Screenshot/expected/svg-gradient-paint-transformation-ref.html new file mode 100644 index 00000000000..c6408feecaf --- /dev/null +++ b/Tests/LibWeb/Screenshot/expected/svg-gradient-paint-transformation-ref.html @@ -0,0 +1,9 @@ + + diff --git a/Tests/LibWeb/Screenshot/images/svg-gradient-paint-transformation-ref.png b/Tests/LibWeb/Screenshot/images/svg-gradient-paint-transformation-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..92cd9fa76132c63c3ff51cf84b3e02d83a02445b GIT binary patch literal 4488 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 F0RWm52-yGt literal 0 HcmV?d00001 diff --git a/Tests/LibWeb/Screenshot/images/svg-text-effects-ref.png b/Tests/LibWeb/Screenshot/images/svg-text-effects-ref.png index 1abce3203ae5861feda66307d6d91410e0983fcf..2d7db64de6178067ead2e70ad27f8f9a3127d445 100644 GIT binary patch literal 17457 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>iVqjnp6%kcuU~vB7>EaktaqI0}_8Q@@ z|BrusubMf##Mmp^j43sL!oo#7KNTOe% zLx>#nas~#5h6Yv!28RPo3=9ehj3jaeHZUOTC7sI=!2q=vtQQA2G&m|M>Uf{*@jltz z_5bV6u`$dsoTPJl4(o$GTk`Mkn`c|SY}qoc({76kKRh_tZ~HA`wpp%)G00N|MrQf< z?rhJ$|K&@`*q8o1+BsEyuxCp{sv=e?Ncv^yhU_qM}RxoH>8~d(MSr zzO#L2n-wl%cwmyqBUZ34a#zXAqvG*zJi}vml>~0OGEFynSJ~TFH`88RSU5)mY|^Pe zKR>hc$-Ia&lj`-i`FLcOX|~>u2Tg6f((B^(R=v8iGHvtD^z-wC)qEbrFdlg6EUsAa zZ-!y=G28EV9>?WfS#fbs<>xDF!}6@l-gNZztO;Kq*YH@zrozC~bZhnZcXNV3mV`z* zIy%la%l-D|=3<@ug~w&}_x~v>DJfaOZdvf)z>|}c@7I36%f>79=Jxjf&0GvDItx}= zm%O-OdOhazkH`J-rB_4MH&*B6nXKZ_W&hLZ#;{41P?y5e$2B?(W)J z`}>>O?6W`hIXrJ|O7%WHP1jPFK|m;K14BjT)m2l|UrhaEpHP0k*8DjOgOe+_7=!#Q zlgv%k-}AnIy0p|A1`|~5S_F^+Tf1kAZyT9M>|9{+Xe{D@< zu~ponyt}(zEjLMGbnuXP!Z&9RC>Ug|%N`%=z4gD)P{OL@#f9zp_w8zb#T1=XP20S) zD1Q5rB`R84UO!jrw70fKt_^!Cs{LJ+i5KuXmz^FLGx;*dkvEKQ0zcOogNttGaJjncQle+XA=l*}cR;$Nq{`&Uz z^mcv*7M%xEG=9Ep=C`}BUfwL{#zbZJFR#`8=h;+$d-LYao2RFz-!DFId-CMTU%6#( zZh65dAmQa*YA%jx#;@pY}vazm3(uBzjmyirW^gMr-y-o zN$i1j6tA4kj?mR%pP!w*y*2y#jg85|LPG2I{mT0O;_F0Z_pEK<+pfqz0mc9NH@CKC zZ_m4XCA&|~cGm3K(Vh8qhue6+-zh$SVWIQ-{r`S>*&DA8U;jzBV>C-v8&5w|~=2qtvcn+jXP2U6Fa-XZ`NQy}i57PY;-GS+M#} z+@U#h=13Z+otba{|MPkK{~wRbYkxeEeQnLj^XI?YyuG}fUz`VIIM<@9rq^RGZ_B;y z+AS7ZA^uizN+;f4Ex)80wLNcbXTZga7yo^``hQgsbJ*8cSEsg!3kw_P-Pv(U zmto@c>C0;_RegPR^ytyj*VlBlw7Rs}8JwJCbwYG^?%cU?tljVT?XLU#Yp!*V7;t+ASXbNIS0ZsOYQZ@ArK6n`>2S z;}1#^OFSpPd6V<~@|-y`XWz|=b5fn48@=t!bMBYb*Uqi=;svFmbCO}JzaE#bule`$ zIXkaZ$YQtNXJ=>VY_2b^;XBo;BU(FWNjariLX_dJ)diyt@U3=>P*QqA^&MxH4qstg{Vk^WtZD72f65e*vmR^o_y76yYW4cC^)Iilzh8d8Hat@PVg3K# z^YSg&-pS@5AdKR!O**##=# zr_8pk{&u8OxL?jz>W`jtJKxnQuiso+dU{vs>nquO@^)+Hy*-z;RV&iHGwD_CrOTIv zg@m-820wZF^yrZzEIU7bdwYAfY4)erfIgAxDdmf`!AGSHq`xoyZzhS+x>F3R!d5jMr=%KP4jKt+mg1q^1*?|S-H>7 z&ySCsuWDsgb$*`hWOe_%i;G-arC+x%{ryIDj&*t7_jh+eiEc~gLI6I_oMP zyX5Ax<@4(`rmK2zcSg7bye$YT>hSqZRgz-R$pCJ-)WkCEo0lCH=EC!+`h6V zGI+CZRMf0A>92e1@`9K7SQ@9VbnBIxC;s=-Y5nH=h5!Hk&w~QMII` zB)OUoj(?XkGt4>uLTOFZr%#{Qc%`1a+pzg&PI!Fn*5%jV|NVaddybf>=+(vU{9pTK zeR`Vre&6pr7nhd0y>*iw-`!oFeGODk&ocd$#QQ7mQ03=mb7u-)-JI@!zQ{xP>y`EK z|98D!SN(41^J%)#Wp8e5TpPVz&ZgqS)9LYkUS5wrF*mGgZV25v!$+<3B8zI~*VotI zA82I0dGqG{`hS%TUl#L6D7*E%xVwA%`S6S4H?D+VztUfPeTuZ`x=TE>OlOY@e*PiT?G~;rf63X5C_$ zU;Az5{^=ZPlOCU&YyG;s=Ihn)*(RArxwp1lT^(Nj;(}wa_UW}n&sD!1H{Sc8ncwb& zDJKJmXsg@#MKNDbs?P@%qtV;*O4mzT7Crg>et*8foM{3zKR!Ivi`}JR|8;*?U!Ps! zqn3RUKW}VIPCqy2W#z016E@WUuj@X#$iC_DLj$SaSyRJShhDzEEM?8t*VpGCnH|45 zt#@DhMj_k(e?AMV`<1j`TrW2@1B(OqHT(IiK_&9G+}q2REV23dWb(X{r8A7v z&+Y&J_x1lhFq>_vZMv0T zWLDvqgVw&zcgx@3`+KkY{oRtwzVAww&M-`7d&$M%aKLK1PUI$+P93jxRgXH=&GPTP zDW2WREv{9lZg2m;WKZKV-`RTc`(o;k-%p($`>eRS_Ggj5{j7QWrU%Gx@Y^N2N=Um; z>wVU>HIe4`Yl`pgDg}jU+8GJ|s^CYDI|P+?1TZqNtl4~MmT9(J?U%q>UEkjP{eR1D zZ_5>x%YAxk>hzc*&#@eS+AC{EKyp@<}JUvD)jT6+)Yk8K)V2TrzuUqWr-Xd@cwGLsjGFu^ z>AW3|KLdC}zla7fGH~3y8T`5A{5;!J^`^&rrLS*Hc7NLY_5J<$zqdUntMN*iWW2hv zvi{%C=l1`??0>yj?A9x_^6`S_;rDC5&wa*o{MfN|vAe_S1ytKtnpgk*dj0DD(4fAw zto@fmj@116^72*q&Ud?BGv%zQJfHVV>n)f6Oy<(VGwL>{o}Sh#XB*{N%BUCkbanW) znimV(r=)ft{dCD&KTtt}pGrPLF`tLWKpK?~pU60vYRjSJV z=KlWwCVN+3xpL)z^or=>N?{evj3y%Aj?h@J+eRo$WvrOgHRiUROFHA8GReB~KU-R(Z zgX!^gJ3k(i=9jfPBCpHP(6AI#EN5I?^zrfW)!M1Qjgyb@obRjt_U7WBvRhj+r~bZI zR9u{XcGgq5#*(*Nue04KI^4$ls@y33oXq!MtlVNhe(Pw5t+^oMayiF1=?KTy{HZD* z53}zk<@BjD6UxdNoz^B~D$9nVk{e1S};o;e4xl%#jQ@_8vd-ZtW z`TeUUOfmve_a0uq@0XYT+q?V!ebujTJYYM0e)}ZxyRS`qgR;cqDi(gb@;Yj#S?;YR zb5?+Q5Osfl{ZiIgzVXujS@Cs0UH=Mg&AQ69=kNRd|Le4vA8*UKd1$^2LqkL9B)>Tp zAMcjmxBdBKGAOwAaXEN=dw2J>WzPS9f3NNj>Z|E`Uwm~{X!-rx@&-nS>9J)qt7@js zvP$QXFmQ-mEI0Yx<&DY5ZFVnTwv4S_C@DF4>YwS8CkMa0e?{2eW})Oq*)wsGk&&mT z>({?rIz4aS&$QaNZ1bzWzS^2_km=t&P>DO)F!R!qZMnDSJ=*bmneS{qX|p%I=J#%F zNOW#6S@7fM^ZEY2*8b9VTX1o0^!CTc``Pd9b!=ukCG~W9)$u-A>%5zro?dj9FSWn= z#q!_J=krDPmHhtpR^4w-h1UFyPP6)MncuJZ{G@Ml+1p#&@7G0puC}fE65#K$Lg#+z z_1N3nav$sSf{Lz6yZ1(`C)~{0_v2Bwy3dRcN5$h)($aoe|F|As|Mv4gqpe%EY+33( zecz{3+RE;IHLurhXWA3$+n&te6%u4_xASh{aoJb7^J>3Eehq%QeV*?3x3|mxe!Z?A zw{QqAr`%nE`|L6$k zzhj^v2^QU9mh9u>v%BoAiMD+0mx~Jg>-1+_0oBoLr|K`7N^2yZey{%h+u!f^^KWg* ze1C86yO!lFc3<1mYbA4Ux?1>W>rcB|LHal|cSXNdkTjhtA z7M8Ow-d|lE{`}dqUDLzYMwLFFTb@-WX_V4Y*CzIG)~krk%N(28a&K)3yti$4>g%o7 z^fZ_?zZpBCHi*X>U0{pWY`a@NgFsjrrw`tBNO!N8#9 zs>;45aIxFlTU)(3^QynUi``fAb4}!CHNQC(hk4CQUS2vHtYEFG>bm#zEYs{J`+u$C zaVsJ}ALh5`xIRbsdR+C|x@y%+yfPL6KUYSs_b;7w;_Ala;|~wFufCqKYDKnP>#keD z9}+_@FJ5)zg7MG0`mwu0jQQs7XJ=qIcdTLRlqpws6h1z1J7dwwZMnDmWUb3CF`mB5 zQ+(F+dP+*lk2|iMHK+1Twfp64U+E`ka>v*I{rcqOIKbS~Roc0Ym*Q%(q+{Z{+?+uQ5w?;D@D`Fz&=zRzqkU(bYhzdud6vFgYXP^l@jzhnQu zU!W@Jo!a)Qudi0B|7T=icph=!Q_tm3AFk&tUOxX}-tBF<#m~-swAuS|+3cEoau((9 zV!j5~ia-4H^z>Ap#rbT~1_=kE^Y<>DpLpRpyWqOankIYEw9S<_HYC0>ZEbD6U;qE_ z<9_>fOKep|v^M6Son?B;>wEs;!-uuM?+)1X^4whO_=<<*T8bU0q#Fd%SXT-h6m?*#7^Y z&wu{>Iod4_8nK(ln9^w9QBXRmt;Fn$^IhhSj*b;y);n`nK0e-G|M%3&&cJZ)ZNt*}{%T7K-^K1K`M5K#ljHlH;{NK&CnqM(Iuz3N_V)JbY3uj@tNJUL zb$#96`v2eSPfybgUUZ{fzRn`$gh1)pGYL%7jwW$_&DoN9`PssDIWC)`)#>Nwfd(i) zJw3hLXXYW*=t!@kC(Xrg>UnhH<|f^>+jL@{ez6||!&KKx;Vo9oLc+qPu4_RhvrBKn zx4D+Z&u(l?{;K_c*K576vko0P^y9~mM~{-u&$29j)+1qf=<^o$ez{o*%T;DfV5_SC z|M&afUtce~Y;kVqn|p+Ft^e1-!* z4}R$1vufYl=hx%wd5i9^i`|`dO{3C#^17DQhM5lzG`=#O)fBP)ZrSX#>GJh|443#X zlwT`d<{pW*9)su5yUth1Up%HND-V)ErRo~ut?po#YdcM}r_pGkjZc}Cc z-Fm1YcItohl)vv=OTJ8=Wc-2c$rl~NueldDt$uOI`R9G6g}Wv)F*qDp^`~L0){Fm_ zw&dP6(>b$xsiL*@?dQ{Gor-v+=k)NEYEM^J(E30lUyu2V>i+(kr*9F;M-IAdB(yN$#zR;&<=jP6yK7Dx{ zDAA;zp0@YbtJRC$`~N-ew>QyWDCt#yNjJj6_)!qgxtj}Z7`=nclRCdxPQBlun(tR? zV-S5sR;|rOZ{IK18*kRxTRH!nfA3gtjXtQ(iDk_G{q5~PsYPE*u5S4D=H}#?GhaU5 zzpSwE@9*#5ZSL-=+?>W-tG`faXHrtqx;>vx{eHiHfBE}+oSd8|PoA6}U$^s9$+tH* zXT4eaUqLZc@~FMQhFO-kd*^g|eKLvPS?_hq>DcjYr=%unq>G<2t}865i+g9_>GMA< z<=LvDspSW5ZEAhb%D@q^TsxsNpe^y`>E2(v`9Y)qua^J*{yyCP?Uj|mx3}eft*-t1 z_4@jKzh0f1s%^USY>rv>wh;cqL6;(ae|x)g$+=ezSFbF1Cm&KSqSbZjiLmzD7yX#yr~ad8@h>mle}`tKO`0QX zU6x_C<8hyLQ_aOAM_g+8ACz8?HBUb$^Yp6!9E*wb=GEP={a)xf_w1^z1$^6up7Msj ztM@9ZRKDi5^*ea>EQrH;4fteB-)M;5VigQECoj+uGR zjeyNYKe8gu&NlDw>kC`|(VS;>+SysJEPG53Z)jPabnVN_%fG+BU!Ol$Xx*|+)$jLy zzwB>+cX#=F&?xTG+t%gpY?6+2tc%@!?8uP^x=Ak=*>e3J(HbIhaP|1 zx7{e$*39zOe=Yypx_x5oIqNUE>qTu~c<|@T`6~y5zP!Hv{`dR+;p;a>=&-V~I=;KN z+<(5Pc38zctx9ck^Xt#28K<53Afg~^o)^@NP2T)qjCDVD{KCIK5ySF zbIc_1P>Xn6h2!31@hgK=4OG?DcTfNQ?d@vM(iK_T_NH!@n<%Vra^*#mfx3r!?VLli z`?^|px+zM#Y%Ex+>M6P*#-F={Q9FLhGcErEMQ4qEKJH(X?!Qlp!D7C|zm?*4M+@Km zDq8%nigWU$NxRD5>&2w5zB2Vrpy}2{LMH2J~-I?_0`qj^*g^_i@sm` zJ$AnI`T6$u6AXULsTZ)Y+iDdw@!>556G)WbzpEh{87 zuXc!-Cb{%R1TNn7;)3Igw(pD#91-ft-{0N+W%&5ithv_ZY?UobmMmH9-d{CO>*veM z{`OC$k4ir9*!(nh!mC+F0?aI#!yGFQbZzkJ-!5R<8}!v6P}%8S~WMq_eZH?racazn8wKOy`uCI%IeQmAj*1LsvCr=jt`7-3_fMU7;K9H#_;Z%?g9h`$exyZGHc-r=a}$g`#U)CrzDyG4WB?t(s9DnnDp4*;*)v!AE9rtW`R))L$r7!*6n6p+UPmy=m~QUh9By? zIT+{jrQG~&H#u8N(CulUP7L=sJ*U)%J3A+ef90_LI=$e=Q)O-0mGf_3-e1-cBdF%B zrWljFN`^CBBB~~jbIr>>Z|EnK~>D>04U48K9J)5f=k`8-> zg9oAGt|poMZQfL!c>LTc&WLBT?4Bu=eEaTsXqW%C=j>V6wl2Tzx-aIMrN++kkbhH_ zXlH*o3QBnv)vCv(V|tx$B}Pm&J!iXbYSGivPZ_;GWgXGtxY3b%Kl}3&{ZKpOj-2+K zt)K6Lb$F}pVwz?Z#Tm|X%1SRiJ^YZx_a9irf+6;3*z7_n$l73bsG(k8Jj ztHg9B?%&$fu=L)JoSUW(AG9&KU%&ckmQMZeQ^!9&d4K(M@bgp3YNvA73p^}!UG9Bk zZSs*VnUD5mf5cV+mHS* zKXUwjhpu(&*@vdDKTlG9^lEkM*<-8>po!a0SNqICL+QWR@1AzN=Mf=Nu%N0W);VI% zhwB}oJN7okc|;1mT0EWqaFKnE)4trbdoMe+SMIu#HqGWu@yAD88&g($SO@OwT@oqq zRI)qrBx6GZ>m0tVNxYk0pL6`$+w$(|TgNR4sqe~du5VUQ*A4J1`YLp4(H_CoTb7@< z{OCJNAYO0jV`ZArT8-MQD{cAJAVfcXo?`D=ztb~s8UN} zM0?qd`O*OeN{1yY!fFGO&VIfxaP`oFl@}jqUS6QXvhGU4io~AysM7(rU)=3j>g5+S zVdp9T13_!z&ZdF`)F|@M(it9}FQhll`RV@W?Q*GW^LoFfuhThkc3Nt9@9IZR8=uwg z?~VAVs~X$O7Rr5X8&_MR~qiG379bd_0(x~HJgv*eZJcfx_9fcpyoB}&cr1i2%0gg z)wO=Mio4XQJe4Um>dT*TUYer4#QD6`zMb(=KU*rE%LVG5`x&j7pnNTVKWBUMX$FRK zfj-}Qf;U-Me_#E^=DLg7QsrZF_ol7uGry^rvioy-X>(!L?Nhf)%Sf@Vx=OewtF)8S|SYo7eC z%Tt_g2R=7BzwT{lupPIh(z%Oo6G{x;U;Y-HcyT|UbZX?yK%p?j=iZABSbi@KnP{@7 zuOwM{W%Z^sam&9uDhhV}cv64r*r{ogiWg<1ipR39DShp-+%G1Xp+IjDE4TXl^-YVG z2OIxCv01DC>pAy{pC`VqSyOE9C$iQ)ZjZ_04v?J_I$ahvN2`Ziumb?5ug&`lCaSFH}?I2jw~ z*x}mFZD&0}{?bR`(|IaiD)k?p+wWb?8NOCyW=;OW>uISwPsymii%R)+y=Li(YeAnP zxlaG(usL^EJDInKYj&u2o>W?e*2Nv$n?J5DYkU2g<(}&~eUa$0ZlUT04Mz=h7!(o~ zdTl)Y=?Js?W$!n2mqQ~P0|K{wc(ZLz?{TLY>~5S9P8??qbo|d0g&+Qv>3Z^Wzu2!E zJ{_}qm$ZkwnC(3x@<8>D@H38wqNh*Y+j8Q*&>;bh%O7rhILph+ukNw+uy#k-&B{-c zi(Q+gkJc~i-lB80LDzHl%T=KQb6-cV?pvo*`85tP4Lyvx%v!^oB@|Dh0(T!I& z|Eb)boGNDdF0xwZM7U>{>5td)A$)t&a!+cn7s+DJ+_`G+_x;*${{5UdO=9Jt=_{@| z2_14@%J$uw&*o`y#>K4gZOLbtc3uol`o;CIXU4x%sg;*fH~n~L{rt;$P@S}@$@bc! zbbeV~U*&Z*kNSeI`n3JOvQ{kFsN%WQ&B+^8JS$Jk?we|}%}#wsgKDMGHNNs|5WUKho$r%QK_k? zPp9s@Q@Q-cM&~cDj~``YV9^QTtStN8az)wospw*_SRv`3mEBh6*Sh{LsVqv~oE5M$ z#Og|H(AH$#8}S>=_C7ioQ7G1IdB^?#g8iB$iykjMIp6i0jF8wR^`dFgSMPef=!@)Q zI=Son6XR)nlrGzSa6jG}-^IE+wRX{`$a{P9VmH?8toZCJD0~=d^(GzrGL5$do}E^) zGgUKd=1K+Yd-NDfPF=oL*+<^Qf0xC&ExappR_tE$QafgDoX8n%wWHEs9KAT?U#_YP zK755WP*c`tVcm)y&z3%QD-FFHEBvhGp7)A5s>i1v&k_Isa7WVGh-nY&^JLy%(>bYe z?4IhjeDS^2#gN$b*mZWB-u{5O>w?ZaES_~uGUoE?XX#5W8tlznE9hxBsej?SrQG!? zQ&~QDo%~q0yhd!*zk_mnef4W4LXCf>=%v+9mAb>_B=cNv`RzAvzgw-luU&Wky6=p~ z=~jo%K@3wt?q$k`ZL}a=ogTRJ>ttxG;cc%p$p1dw^h2ZzZ%e#2b?prN%Csuu* zP1nm?8?U9Yg|1&%aw=VLMSa1A(!_ondCA0ye(#(^vl9cZXH4+^A8FNE{BPR@rfDIk zRmyHKZ4IxS6t;ZXqnn0F*PSxo*1UXZ?b=)wlK{>orNzBjy-J5xOZHxtR=Gbt#`wTA zLAI62B^8y&wD_YpJ&~HRRd4a5o~aVqD>l>@Jl*st^}fjbFX~M{L$fo}} z72ax|RjbM#x%a*<@9SGr@R&RKuJT4N>2+T2ySpzvTVdanam1@=d&16lG9mXpR>=LF zH(P(1UGm&N4vv1`PV#t|w|Q^$U9zcCxLgELUpse{9}}I z_nzPIPx0kM#-PJ2die|%`wee?j?8_&?V4HPp~NXNYRzXC*gR5Ao^)_VhJmVUt7*QJ z{Ue>q`9I5!KYFw0*|ZPaEq$z8y_y|wx#`7&|1ybAMkfzh z+HaX~C?!$k+{xL#o9=upFHYf3=Gge-cFpmvzgsj4&i%R*F)hzyLf$HU)83~^YzEm^wwiQj>BVbV7z21jiAJfpNU>fZltY5OA{ov@d__arX+W5<5}y)_!Iuf@7s z{ok4Y{&GR&B=(L zW|gluav6ms^*C1FUhsX2#jhD(UzcxV|NV4*d=|H6!pkg^6>W*RTiZ*VmQ*ax%oct; zxpc|5i!ld4GsQPg2;DqrYqjFbI{$#i<_H zJAmoYuC7zP*E**39CJvOvN3+XqP|+`_Qz8*4sAasD)xls>W`4Mt;>R(D`l@v-Z4>t zfr07TO+BSe&M$K+Q<-=3F4a7=b3)*bXY;F)f0i9*X1`>2!a{Aj?~KQMu}ke$->WHl ze(MX{wA`C6ZrTCxo^mTXol^wqez0<$-J@DG`sUqnYzVLT3 zRC;fpX{{n_uXKLTvVw=s*CsjL_l=x z2fE%UcrDNSSgD-2py6xTt>k_giG2#y-xfZqT_wb_DRi6NtZ%~K*Xx(=IY(u9abqH zzk5{|Hogz<%+D-%pR}RlNWEm#{-ifQ!z-?v3X0oEie0~}A*lihk3U=y=fu`*Dp~qk zLuXt1bCKV2s$X7ruHP=Q=G(n{il^j`zqOpqw|{E3KF2d#8I5iC=IyHYt=o4YRnvD@ zk$rDL|CUK1Zyoo|T0dp&wQv(2?VUN>WPIzarfJt3m_BREK76|FwXKJD=-a!0Hyr7X zw%_V<^@HrxtSx3H`|nn~e4g0cKVx^j+`WRHlR?u1SQ!)&<~Be1b7jFk#pIL<7q6SW zRh#xrzwq2(O-%H)@W_0R)XxtqpM4DGe{2^r>EDls-@9Z)UFKY^JpSJ6Zt038OLW|S z?#sP!d9Rs?Vp-vAtB-2FoBP-3T~OG$dAbUp=#74n8_eu$HudYSPQG?*|J>&7$NIMU z)Y`3z>b<0~{Jrg$ng@pR(Lz$c_ug9k$|E+OXZ_{#CsH{ZO5^@9R8rJU+FgOXk+}5O}~#;^B!r^yL9aNk~y+P zfqoOJqtCp(2)pxtM>*oKwf9srMF88zodA}3&B7bak|DI-8 zFZb+>OHrl&e7#uB>lYe+ykI^1%06a$+F66(m(}0+A|`1CX8z*3p30Kt*fCH>NfVN(|fg!{mjEO`Ps2w3x2dVAKt+RS|aiJ^rq)WpSXOyr~2r7xa+yb zPZhy6HYb>8DBt$pRCZ|2r6sB-`F1K?-gR`KSI4>%+8!g)FCQ_Di`9*b*!wEO?Qvb?7ar(m^4Zer}BBROJk*`NDYnfotp{(3pJ%A}cAk)7Si zi|qC+xc8*WlUM1`*J@V@o?9hPZ(iOlo9(~uZ$#h%yHlSu=eJ(}vC7watLYXgGsAr! z@4xuxeE81GRh9gYWsP-W8bB`jxgx6hQ;BM|ublF2t|ptdqjwJ4y3Q-tPt5c_8<_oa z&H0tB`}0pn=LqauJ?Yi)ovY{P>G^yW-VhSoGOtIabNMS3Gqc~hGDgxN69ej%7rqXk z6jHU~D`R`&)jrc7Gr9vh=CaGM?t2w=_g_cqq3CI8;!<)mTz4^nhW^4oem#9TG*UV2 z<)5>z2g4Q>iDhf}y1$A$bct93MeP?!e->JCbXDgJhzi(_$oEn<-!N)N|Z1a<|)-~cy?`tA&1b<$nl&rax z0hC+Tuey4D+3HIlpE~JT%9R|*dVkCN+hx5}>!=^UcO@Ht&TUuye>VJ`VZ^)ked|9Y zbiQv${p4dF8@K0jW_lniqj&tJyP|7Te66QtON1>D(@9^-79afRMSCJ6Xqv`o)$3gx zPcK#GyA=2gWm7RmToZ*{4V6RH2;L6 zN_+Z^--`B(+IMD7vDvuBCh_e?HZNDPX2;3vYWR!F|K2G&GcEp6xkOm*b%pYW*dQ(>m~!k9_XMNe)w<@U?RU%gzFGO>S3a$b&sOLm@$4sX!9 zX$yH?TX|03<)-HQQsD0E`=-ZzSABnWn^*jw`pb{phx9ovcvo!rG2`FT-ggn<)3|KQ zSl%dw+;@FpdMNg4!O~L^pXUGb-lcxDBCB_r+`=%^m(v^tP9HRR;nlTD z@6e)}5<#v1HlLc`o_Ak!KYr4G*R_XCox95SXPv+KV8gF@Z8vlB;;o9j`L1xjkbL;> zeU$%|-i&8AZ7)e&Rb6%bz>d{_?s}}S;hX-0BVwN8yGb9U0{3lSr03+n;?u0%0oVJU z@^!qv^p|bTlT9x$tP0GA?;mA=?5gnR%Rr=Qpr75YEuT6e$ zoBnjo)>QM`mbWuxt~uNFCl>M^7TR>7C;IzWfxC~}ws!7|sh_~Tco*xAi60U+_B(!8 z3qLTa#9SzF<6@c&-jXVcvu zsmJAJx~~HzJ&{`CU#yx+x?;A{fS2}xqUKC>~q|H;lQPzn_iXwvhmnr zxNPpywHK~RmG&R;`fAE^+VsTT%`?O2b}~G^qpT8N{=xI#vonJADbsGqY}&urS5n~S zQpTNJ3=RjH+&e=>L|rb70wC#+L zo)`lIBe&y?&2cu@+}`~0yj}KGVBXK!-rmtubx*MF+s$$K&?MisSE-Vx%V)0UaK5r& zNw_l4MaFx9{V%#tzgm?2n~VRKR%@!rr0dgGUD#qAaNtwmGDpjx*)KlyTVMNRo9<`D z$PMZfwLY^`lY6Pt_wEwkfuN<@CofM?J-sX|R!OS2JLl(~{f{G+tUd2-byE$D+a6r` zW#!kPoQS&z^0kghTt0Q@(sPeB$=~+Ww3`{P)Y@6idpPLLr>m|zHgEVbxo3`R7Jz#8OgFas_PkZFs}8%LwUjUVTuJFcgW%^c zpPdeO<=5=l^`-qp*m+l#*tg~hmdAHaH!FW>%|83+y$I_~*#_^|xtEyFKfGbi)eR+6 zrLH7zFfkTNyZOe_EPdtqoY`-0C-3xMwv7MAw)z|AoY%{pyBD`YYRkJ-$ybexa?&=p zcr5-rY4^&!De6&IH%Z9l2><=Pb*r1n@@Gt-LCAW$s=%Hc)v`Q}DeLZVJDHW$-knjj zd|}n{1iqYYTlA%OK20`~S#7I*!u*Ers@?mgIr(2|nYLKA7oXghr&6+P&-A_}{Woe8 zF7(w-=3iQ0ZexBsPds(0L+kJ5t4r6eJUVk-lF!oX(d%bTyOowad&h?9*2n(;Sbya9 zEZ5_0#hRcQt`F+g&U^lCIB(~8-+%Leo_{yeyrUn!c60i!e0rDSiN{wAu4c$hT;v}< zX?x!IgLly;6<5v5MVD<_{`__yTjh#(7i0JC z(mH);+Px!BoVoqT_fx|(;}eeYt6-4ffv7jF1{O|PQt?VL>gJ=%*_%g=N@$hIab zaqBFXm<95kr2*HQuIg{Q_hpy(w#`R=$voHNj9(k+q|zqoezmJwUv*`e1*;PyLulV; z`;T*4jS~+Ze$+1B8ri||@K5Bn2L>~jOk|y;sB_}5h}fFjyZ>9YpL}2-<)yOHL!zto z;NQ&=X2)DgUWBLnO=$o1exs{=n*M~j@0FdVDNkYjp6u6Lxb;xd*W2s$E&j!Y-HH#J zt#c^#W@u%c-dd@JI;Yo75Yv>bI_ma)z1UsDQ#zhgVi_1h0=Fd0)f6)0MlnifzyMkg>PL@1ocxQHF+wR%4+JHND4!l)7Y28R&R&b$4VazRd3B zDnD2nU3T%lqui>n2&d)`yY}U&oZ;IL-v8o8^nU3by7DN2d)l=^(EL_yO3os z_UB^E-j=vh7yT~3hp$1|yHu~EgD;>wr&JBKoSua$UpKd+GlZRy=hR?Nydio0Zk#c`Whj`Wb=$ z|1EoFRTIttYB~u{ENoP(L-@Hg0|Qf-=z@8=?)Gx8BQh9IC*`f*Kk-7be&VuHV~FfkjtINm9J1#; zRGijaN!Yff^tz^Q_HHfSh>eN8x5M}E5AOZ{xP}?rsA4>wF1}EvYAKsH`_~rB#I_&5 zHk!wV{Jw1W_1|@yx+ym!=6>b{wL!QHe!o?kk`g)RhU#suCi@vDLzH#atW%ktr2N}# z?blLENs{4XSNzDld1yiVH!q1mVCDWx#w& z=U!~fCY2zz4ngfBy02X~FFcg+ga;&b$dgs4UEo;3#o8@1K1|<{x-sKQw=grqfy!f+ z>t<~(Xp_08EB8u??XD)9R`IL11J_5Kt&fLG8Z&D1={-x zl_j0a1PXkxyC(Oa|Z(9%>Q&NQ8kzZ-O%& zCEi5S3rdspP2OmEf%Mc4E_}fG2&|WME;tMkdP(Pk!w_sQSTE^ZaCw5zO9XcaChy@A e(H5ou`QPo870c_Nyo-T>fx*+&&t;ucLK6V%9{1${ literal 13791 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 E02VI{ + + + + + + + HI +