From f0df7263397c7bcf3350cb1a4b338ea4f2d80697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:14:57 +0200 Subject: [PATCH 1/4] IBX-10684: Document translation management --- docs/api/event_reference/event_reference.md | 1 + .../translations_management_events.md | 29 ++++++ docs/ibexa_products/editions.md | 1 + .../translations_management_flow.drawio | 1 + .../img/managing_translations_sxs_view.png | Bin 0 -> 79236 bytes .../img/translations_management_flow.png | Bin 0 -> 63076 bytes .../translations_management_guide.md | 89 ++++++++++++++++++ mkdocs.yml | 6 ++ 8 files changed, 127 insertions(+) create mode 100644 docs/api/event_reference/translations_management_events.md create mode 100644 docs/multisite/img/diagram_source/translations_management_flow.drawio create mode 100644 docs/multisite/img/managing_translations_sxs_view.png create mode 100644 docs/multisite/img/translations_management_flow.png create mode 100644 docs/multisite/translations_management/translations_management_guide.md diff --git a/docs/api/event_reference/event_reference.md b/docs/api/event_reference/event_reference.md index 6cc5792d69..49396a4264 100644 --- a/docs/api/event_reference/event_reference.md +++ b/docs/api/event_reference/event_reference.md @@ -37,6 +37,7 @@ For example, copying a content item is connected with two events: `BeforeCopyCon "api/event_reference/segmentation_events", "api/event_reference/site_events", "api/event_reference/taxonomy_events", + "api/event_reference/translations_management_events", "api/event_reference/trash_events", "api/event_reference/twig_component_events", "api/event_reference/url_events", diff --git a/docs/api/event_reference/translations_management_events.md b/docs/api/event_reference/translations_management_events.md new file mode 100644 index 0000000000..a94a153a0e --- /dev/null +++ b/docs/api/event_reference/translations_management_events.md @@ -0,0 +1,29 @@ +--- +description: Events that are triggered when working with taxonomy. +edition: lts-update +page_type: reference +--- + +# Translations management events + +The [Translations management](configure_translations_management.md) package dispatches events at two levels. + +## Translation events + +Translation events are thrown once per field value per translation operation. +They are used for logging, analytics, and observability. +Both events are read-only, you can't use them to override the translation result. + +| Event | Dispatched by | Dispatched when | Properties | +|---|---|---|----| +[`BeforeTranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-BeforeTranslateEvent.html) | `TranslationService` | Before a translation request is sent to the provider | `TranslationProviderInterface $provider`
`string $text`
`string $sourceLanguage`
`string $targetLanguage` | +| [`TranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-TranslateEvent.html) | `TranslationService` | After a translation response is received | `string $result`
`TranslationProviderInterface $provider`
`string $text`
`string $sourceLanguage`
`string $targetLanguage` | + +## Side-by-side creation events + +Side-by-side creation events are dispatched when a new translation draft is being prepared. + +| Event | Dispatched by | Dispatched when | Properties | +|---|---|---|---| +| [`OnContentSideBySideTranslationCreateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-SideBySide-Event-OnContentSideBySideTranslationCreateEvent.html) | `SideBySideTranslationService` | When a draft side-by-side translation of a content item is being created | `Request $request`
`Content $sourceContent`
`string $sourceLanguageCode`
`string $targetLanguageCode`
`?Content $targetDraft` | +| [`OnProductSideBySideTranslationCreateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-SideBySide-Event-OnProductSideBySideTranslationCreateEvent.html) | `SideBySideTranslationService` | When a draft side-by-side translation of a product is being created | `Request $request`
`ContentAwareProductInterface $sourceProduct`
`ContentAwareProductInterface $targetProduct`
`string $sourceLanguageCode`
`string $targetLanguageCode`
`?ProductUpdateData $productUpdateData` | diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index fc5296196e..5bc7c73bf9 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -71,3 +71,4 @@ The features brought by LTS Updates become standard parts of the next LTS releas | [Integrated help](integrated_help.md) | ✔ | ✔ | ✔ | | [MCP servers](mcp_guide.md) | ✔ | ✔ | ✔ | | [Shopping list](shopping_list_guide.md) | | | ✔ | +| [Translations management](translations_management_guide.md) | ✔ | ✔ | ✔ | diff --git a/docs/multisite/img/diagram_source/translations_management_flow.drawio b/docs/multisite/img/diagram_source/translations_management_flow.drawio new file mode 100644 index 0000000000..e289d5a54e --- /dev/null +++ b/docs/multisite/img/diagram_source/translations_management_flow.drawio @@ -0,0 +1 @@ +5Zptc6M2EIB/DTPtB2d4MRh/tB3Hcc5pPfW0l/uUkUEG9WTkCuGX+/WVQNiAyJn0iJ1cZzxjWEmw++xqWQk0a7TeTyjYhI/Eh1gzdX+vWbeaaRqGaWrip/sHKbFtJ5MEFPlSdhIs0DcohbqUJsiHcakjIwQztCkLPRJF0GMlGaCU7MrdVgSX77oBAVQECw9gVfoZ+SzMDdP1U8M9REEob+3asmEN8s5SEIfAJ7uCyBpr1ogSwrKj9X4EsaCXc8nG3b3QelSMwog1GTDIBmwBTqRtA3+NIqEZZDH/SzYCLgVRjAFDRLRsKNly/jSWJrBDzoWSJPKhuLShWcNdiBhcbIAnWnc8FLgsZGssm1cI4xHBhKZjLR9Ad+Vxecwo+QoLLY7nwuWKt6jGSXu3kDK4L4iksRNI1pDRA+8iW007GyEjr2PkIbUr+NGVsrDgQkfKgAyd4HjpE11+IAHXwx4qsMc+YtxMU6fwnwTGKfEI7qrI28RsQ9fv1mF2zaXlOC1h7l+T80jh/AeMCd7CuBC9mulgfs/hUhwF4ugXDKIg4VO3swFIOEXckM+AWHTm8wHzVMLd8Wur/litVqZXG/a+s3TslvxhdPWKP1R3HHNS0R29Ftxxp4b9noe3l0Z7HudgyWnyVIwg9ttNLJchXEks/QuG+0Thu4CRn8IlLybvj4i4fz3G9zUpxYMoSyk5YU5PIKUoCj5iCBvlHGFahpoj9DfiO1X4jijkRFO8gAaQdfLsLApHClbsAxI23Ssifvhe9bFFcBenj7zqUxFEIqrXxEc8N6fuCOGHr0+MbjmVWOYFHfFJzddgC7OLvkVsXwhpObS7NUQNu4ao3QLRmUo05LbE6e353fMIb/mxdyGwPfs82d4bkX1UyM6TJUZxCFte/V0EpeU0CNK6MrgNlLBmcS5FMUmol6+/M1H20NOK6xnol3YlVCspFAl5W96k+CGVzUYqD9+TylYjlUeqyndtq5wOHVAKDoUOG4IiFheuPBeC4jqiPNtdvWJ9dsETi6NmzfB0G+G5U/FMruZRW8lB2sjUBr1GlrSudr3bjlt/x8qukjEylHLUyfjXhofllsPD6Ff2987oVen/4/HkNPLCvRpP06vFU7PAmaoqP7yLDGFVFhF57dqaS91GfB5UPp+u5tL+f1V5djWV83r59To/XktnFPT8ER3iu0n09LsxGuyecNLJi7BCdq4WhnEINuLQSyg+DCnwvgpTzlWI5XJyhdHmXh5r9WVfDcsXK0G7slzpHMu+0gpQUyrBrtlCKVgL0vopQFp63Upa5Wj0+m/EsatwnM/+nEx/U2i+ClsbqKwyKkeNuNrFRxt7DrWkHIXUYno77gy/dMQ/b/lrOv787rDxRdyNfWVy7vm5KmxGHsAzsIR4TmKUbpVZt0vCGFlzNHmHAUaBaGCkQjKf7et9IN6j3yxBjLyb7nNaIDzH/JHwzLEN0/fq+o3bDu3jZD2+m3cU1k4N6jZeFNWi7v9/UNckhLqofrMnUJ7KC2hFkbGQp4SykAQkAnh8khbmu87PTn1mREBO6f4NGTvIrzhAwkiZPdwj9pRyteXZl0LL7V5eOT05FE7mkCJuN6RSptVVRWfrq+9N72LR9XK/qxVeDSqvn2RmHLfi258Z/PT0tU22Wjp9tGSN/wU= \ No newline at end of file diff --git a/docs/multisite/img/managing_translations_sxs_view.png b/docs/multisite/img/managing_translations_sxs_view.png new file mode 100644 index 0000000000000000000000000000000000000000..8a27800397a02b1754b83dd96ab186eb7c0549ff GIT binary patch literal 79236 zcmeFZWl$Vl6ef%e9wZPfK!Bh@0|~)B1b26b;1=A1LvR})IKkcB-3jjQ3{G&{Chz<1 zCR?>Xw!U9q)mHT|GfnsH?t9NY=iKLc&IHLw38NyvM23QbLKPMHC>&$fCj;J~?c{_7po)hHcY!Y-4OK*qBqgC}fX|3f&;ce;pr=EC*Gu39oSp^^1q-}G zKkZ9{`R~85893|qe-kjU4+HV+U?F|R-ZUDRKDfrCQ6y2_%lv$G4KpKu~Y zK>f8TAVMoow||Iqgtlh#w5oe z)78}#I$Cx7>oDM~Tnw1e(a|WNEk+UKd2yOdL?Zzha=yQ|EHXZRIS#4DZ-3wG3Nl6- zNga$#0>xi98Ns)UC=(GAhE?+V@0+TH0iF8HmGCXGFbte+kIYLM&J^vN<`fpvv8N`{ zWi(_tyWZ}EPfr%Z43PbKrWZ37b(|mQh^DW%x02W#S7RIt&+T}%$9Dce(4bTEvhU(R zR+*^J5yINr%IPoi2n}m^*D0#p^^Sz6BIK_ z&noV{3Jenr2=DzCOG`mYDx2bbBYN`dxb%b0e0iUIc0agio}BERyk&D;>X)6L5Bb%M zzyMtwE>fA8m|)`KIw}q{C$+aSnD$7imVZg8v>5*ckJ@-{TfW}(XICnQ@YT_gmofF2 z>owbM(y-g_eZe-fz0OaJi6NKfx-aB98&B<l44Sxhr-&122mLq8Pcd)v}rPSCfxX6IhmQ?T3S-C zuCKA{n^$lP^QkB)g9-|QLGbWus>9b3^zW24`y<}6J1#-(CI!I3+TaX>me^BbzGxj! zi8wks7MT%km);Kz4_DjuZAZhc!A=`|CW;6zC@64$>_QnC2z=hrIWjH1H(g?E5nx6j zXLD|?5>)&7_Kc3+q3q!sud7lyb47?xNlA%a?SyCY2P!iOq%|?q>HI7viY448Vx`!R zhDTd_l=hVe#mg-$6+5VPQM5?gnBtf@(_&hzAM?g@viR?BHtSnr zx{jIum@r!w7k76{t22$C_Ln zuZMzLq9|8a!IQ(94VziZ&950~Xgux*wEMH^6AimVR4L!@<@Vz7=;d;qZD3vN!Lha} z?v0QBFl?&{-t6p)runErks*qOpC_g`Ox5U(KVdw^e61KqHt1I z>cc53mVnPuqoBvl{&>0mHp8_{NkD_5fPgnr5tv@RcRif@wfpU_YS+i}o5b?ZeVFXd zdohwpj(gmf3y%>&B~nBjy~~dm#zoU?31^!cC$i8dH@pv&2xx>co-NnJ4W3t}>8BG| zynQ7I8Zlbe_r!xud*H;|fyet(IL;cU6FGctkH-DkCS|JoT}%yD5tro&^-tWlF&@Q< zo}Qw_ZhVQp4n}|J66Wkg;mnCsI_ov8L7)frf zBD^X!-q8qX(e|w1qm=kwc)&sOhGxMOZX(KZvA);tM@lTtP~xWcO#ttM(3I5-2`a(+ zn8)Vp`iVTO&)Yb38sv}e5R1gCmbnPZrV2HUv5ZwvBhX%P8Q5S{DN0aKP#{xYxLzKxKKDWT<#V}A z8&;)XJf**yK{4mRip>)~cOSq1xV5rbXYjg9#eS zdKpy&vLzB3n3&3(l@RGUIXKi-Ucy1fqr-WP99xmkCdPkAgsean5|z584G$<6MtMFQ zFrFU!T+UamD^lOxWG#QkfaZ+xx~mZu>hniUG}zlf8mqM-YryGID%2<%Ne}8CH<)3% z2Sdz@&RfDh`*chGdAeoq)A-&sB(ZEbzA=8-n^CCgY}R(MeCVuPc4EUDbvUH{u* z=;T5D3@-P6a{Ti_c_VBuzN@{0lC#D7?vO;1s2_#B%`lXfZ5ri!&`h0cWwRxcEx{pQp*)@M zk33_A&bIrGv^@IuzDGomNAskbUN&DrwEM2gQs=}t782DeKQmzUgo0Jab9z&?TqldY zf}hX%+_Yg+GiL<-l1D*lK9V2x{c1<95~WnA^5)fE_GG>yZQUmL0S5YF#IuPMgF}Br+AtaN* z+7p-pxQ}CYyzZaC3`vZs(u7n*^EGkru|bc{5KjmCg_&;Y_|Guqv1(zI(uA}q+n$D4 z&Xu?smTfgC^wM|jEzkji{H!!RLn8wN@)SwI-w-|V?@t0wZ{s}m8MIbxr+c3>+s$n= zyLKyJ5j!rkjM34R`qHb!Q+eFj9KEyDXDGD)2)^ zj#UVwt7aC91Jk9V)?Wb|sx;8;YzT&v80RI8=S{~^mR6IC1FznvS02A?f=}Wv&)w>F zy9o?>S2!gab=K-Ms2(ve<{kG-Cp}RWBGeHU^rDUSW8nCsQ&PY!H)xI(BVW3>D9+=P zc-*@|vH=$dnI;Cljn}C)=7zj%Y%1_e4kwFgNudz|X!vw?&EJhJKM&YrF4oymRW$F< zWwp)EQK~?%qND&2;BGl6CZrJAS=g=(s!{2uLcy%owrqp>n z+cx+R1Kv#0e4lAH-_rd4_MAnw&T`Qu$owVgw6UmIsV3Pc)W~^s9DUSf;bPz!_7#;+ei1N%(l?SJ zRAIE$4`NN#H^t}kZbd>zmxuI_s@A*JaXmx}57Bs~IZN0c)w)M$PM7k-;-}#t2ZEKg zZ=?5RX}c}$@4t;-!PLsPp$_FSDjg?}ApY#`B!)hu$Ra2{qR1uI=mj&VXP@AVTz2hL5#ZZ5n zqDgqW9c=BMBGVeC?2J%mHb#GclSgv>ab2x?-j~=06@wiJh7li%)MuLlv7H~bTP8^M zLvfBUG+0%>zek!@34XCiR9H$uRZ`iw><3XkmRKDLWXDhAhhUJ)%5oaEz+10#Q_g7S z2djy%aQORbW}d#JfI-1#@dM4Nx2{!AyTm=)ksj^ss)$ zL@Js1Y0r5f!fa$%aB)sfUjF^trsmDl^XcW@V8%zObRlNp${Ox5n~m zBDX3LSiabE@^UmzO?Hc|Ua%WQj!Q$X{xpQ7wPAT|NMlal`C+Z>7-%n!ynGNWu>4ZE z>&5M`{hfv}a-_VWI&CQb%u0#F`TS6#PTx~V%e?TU`Uuh^+4GyIa6*^Zdwv%Z#EGfY zygrie^s}$n?pe=~45Y&e^#!jTrIcgTON&FbSBI~dRl+%^e582^e%Mf%nI|rLHl7;S zX;Rhhn)=~=IJIm#3XxnW6O4~GA1)T7mM^hUj{7l|*|x{?!DWH1ElerU$EyLH_>H9& zopcHY3HrG7V=K)`tNW$O9YTC7J<B6kVQ^;|zp7Ajy*qyIQdH2w;#pR@i zvUw%UU$aTaoiEMZxT=5U-9ndAv6e-H+Wq0=^hTNRD>;ZfxG`(9XevI`to|}$G_~EH zZW=^fsB*<0anE10{kY^YO?hQ$dH7*AK;)Ul!b~TTFTuk8!*LJqKxw)Uz0^8wRe74_ zXU{g@I~_?MMbw70DzovqYM8^htctGqmAM9%8TbAP{C@Wm%dgfyPx14w*HWS|L6gBP z4_OE8Q`^~z8#l`u#yAy>TZ6Hp^4V(lWMpIp58hVx^UJA75AJ_QXiXT3ksSs(+|Fm2 zSy_n%k!PnIwX(Y9L7KUzl*#enEeeS*Hr#ro$3DI-)## zF-&z`!%~3_d~e@Zhjuk^x$HDZC2c?;`bT4}!|K+m-skDkM+661e#0zH?{i(kEFZsT zDt+D7zKWH!CbfJCDb^X~Xj^JB4qv!z?Wq2Nt5J81;{Xy(<)%6<&~70|tUbyKxyqa4v5qjJ`S}KJojR}5`4T0p{TCmcW<-L8pwH4c_^bVn%#&AgKF{Y! zy|hY%9ZbHhs(zp@Ym<(9{oKgdGc*(Ml3N13fNh_s|T_Wrd%^{zvkdW}W2Ym8%5 zcWvY8Sn#zsXl-LIWzn#&eDlJJf{sq%=HgJ3E+7K|LObtz_$t8@&v|uQ$UPjX`mX83 z9|HH7(kv@`Iw&u_q1}W2XZEZd@O3^{_J@|BtO`<(!PM;Q>dZB1h^4UgrpatZ!oosJ zi;j1o3QS=VLcXiwHbe5pmWTV9zTnCSKY9!G>d(c8toK9Q@C@8D=Wm#q1*qa!XTwCL z65?aXQp4)Mdse7nmX@Q5!ylreqt_fiHz$~9t1Kh2CRFbcc<~~X|EoIYk~_=*l*3%R zZ$+A!)UCroWmA=TR7eoV+Iy`rZ2LxgZVL7;t(oa&3w65^fkytzLruv_5_nL9TifI| zfAWkVUD8iSJ-#GT9>Wz2SmdU6pc5RbbD=QF_fGY7mH~H}&E%ub{F&ohO7!Y;8+cx) zPG~BNR!fC>d~A2?R-V;t=-YE^4{M?ORPS?%nVy&IG8oJxBacv%vvpFgcsgwwRxq<) zdcT3WA+2mhW#sUETd$;Ve#{d`^~!T_4w)Y&eLJxGrarxuh1*pv*&nTLT+ia}&OPfg z)YMDHYg%GmcE#Jj{KN|B%vGBdjrgCC$92S9 zM*Yu}na>1q#ohO<7@M7ATy8G)JANHM?zeAcsJ`iD^=%8cz+-7O8lZzC1|&;+TfOCe z!MV=(AqixD_O7Cm*S=Byb(1k2d)XjQjEJS8(x0ev&8abLmae7PZ!Sd$(!z_|x%6qs6u4t(#u+ z`G%ge<{n!Lt6m7Oe%3kC^1|+V1ChHt<@y7=%$y(h0MX{ywcfA{H|ZWln3TBPxMb&LAl5lx+J%A#lB7+nW~y9kBoaPoW)H=`0g%z>iZ7zT zU`o#i$nxgQ$vW;(cG|IssAw4^)#W0moZGYqK*W*$*AP6x;eDXud=gP9(c#3EIB%!6 zz9s-V9gJrer}X4e)Hpvo+tdMPcJx+#P#$tlC>KSIfK5$2z9oIX0<5a5Sit=jP`0qOy z1}zNC)dE>|zkg`rMqdvxmPGrq>!V=ZW3%hVapaG3+sT&zKH=M$%uaT>z%6GZ+Q^g7*=%`q71j&y5<5z?j7sIYDGkEjXt8?q$kQ%KxmyDe z_$qtIRBW+kgNUhV{sb~22BS2iYO`CG`CR4{N?&X$_oaML;OEz)OiZUOHOsN@jMofS zENc2!+G+*}tePpv{Ly2liq!gewLJv^xLeWN+k1n)iGhJZYOd0<=rSBrT6)Co1wduk z-llmeMA(~{s1U|0fM>gogKU)pjeDA3o_ ziz1W_bDfM*Xz}2#OP{u9K7v@0({pQjoK$RQ##Vd%xf1*e%E$6zRu|FxGS(tMH6@}t zI}2c=a@a(owpYi`@mW2*pAop_NZveN9^O)tEIA*+1_cGh%8qbR%yNuMi;0!Te`|R> zvqzG#Ie}>33pB@{Wl8o+r}B_Jy4*|d&NMeYBVew@Fz(bdFmo2cPr%2t+mGk^wQ`S1 zi22&{2C^(c*p@}Z#iij<9DP})7UzD8CK64#N<+OAA$c#=Ak^nJ4&< zA(>NLMI}C{LW+n}qz8>CQ*-`IR%ZPLN+In zvl*)5VoO_zE-^Q^#{GpV@mGzHJgN;w$!hPHqOP^wP1;`r#73cd%Mu;Yo4rr){EBbu z8X5-n+3gIc54q)7bHnZqYZy(MixDZFbCNkm8tQtC&m{yAI_5mz~oKUOuEBDTY6pV2jC5Q@DX&51gn+iR( z?&;V-iO8kpq5{bxEvLhN6d`pe4AOa{>xOlO0$Z_$^|*lTrFBi~-NFK)^J!2Iz18v8 zb4ps;@ws5g@#5;n(UI{QLeIOFl9Fh~VfMbEMM*a|w|&}=adFiMNaxUwe=eT@pK1x} zrxPh%^Ss)TMS06>eVitB8XkWR6>X$~7V$RWQ)57Y)KZCZa1X-E7iiE-`djAe2bYtg zj=c8HH+zt4xdI0Z_8-M+_mg5em%ElqLRcTAC&GxL5+W0T3sJjWj-snF6%*A(s+YlSJ2U5J2aLOsKcNWVGF|}A`c`8C?Z;6{M)-zf)+l7 zzC3?92g9^-a6n(BND>p{?E?|(fIr`CI42k+GD(9EB6~~NHitUVKdRsdJ$2gD)RbA& zE%R$08GE}J%#&y*y}Esab3}!rKUvC)wQ^YNa=eZwUoh@ z+N*9s{3e{{SfE6onJ%^8kasmxZ_z*`IEVc{F@DT2Y_j5UB`b%q-Wl_{^OVBl7-9dMk*+9P6|Tw5&sKU}9q%Zb1inx3=!}>Eej|`{7qS>^#hc39&`9N?7!2cJ>jq3 znK#_>)q#Hn1dPkG->{cSb* z^newZ-hQ5a`?nR`0gp@b_)ZV?Z`VGD37A-QI2iSB5ktQ;U}C4dWdE=6zZNS0U%Dl2 z46}D=2>b3oIEc>~SlGnG5gz^1^ARB-&u&SP{~a`HMqm_Aqt@O3H?I*VnWo`Q&dI4h zOhGQ9q%>uyydsCcv9ZxR`eRf%t5AG$Q*L{;Is#Zm^!2@oii&!j>uMtZMIt0KCkN8h zcf-2wJuj8aLvK8sRJT%V2W4ouch>sOW`Sx&C^EtM#5g8Cp4thVCAmG48aJcggRGg7 zkdUDL>a^X|L{CpH;gmjJS3;t&jMk~}eJaY-kN4AOfDL=?NkiSk+$j7S*ol^xmoHKI zfrW|rqzO=_d;B)Y#`H$?cs&FgJAw7=Nn+!5ieXK_Vme_~`*FB2Kpdk%dQ)}vd)+H;p8-? z0p|0sD25VQu(h?9<*;vOcgisFpOYqjuwasXj)^I^(_9DSmeEwwqCoUPChCbREHqEx zaL)$8O-90@;LN=%)NBAJal0yIk0j9_%vC>UWvxLuOaz1lNT?Qcq8x9t^6*a2PwG~_ zdm~&NEHeh8G9f_?gvoV^JRSq^I}i%lUoS?T9Io*(c^VGg|R*nlAzt2Arx#l4yLcJ zoh%b{wXv~zV+D3tuCv=N^h8BO>>WWcv{lW! z;h0&5!CSFK-wV-yyQ{Ac2*E;9o*G6JWlp=yPiv?UJe~=qq{ha^jfFapD!?Eb(b%q| zPS2COoq>y{nDk5MfaNG422#4%pDh5#+Eu%FbeuOCZ057r?oGU@JL!gGS;|C6ImG3^ z?T;iVZqcHetU4tYE-rp(sIQ;ZDfd|al+1Q3w#>t7A~%qolO@qISKxpMjyVDnTNv z6=jv#WR&56^32LOq#ly#aqptUh`Js_Ar2M=qI9Nghra_I(;HdSN#qFQ6qoj9R~MK5 zDU12o5q5TmyILRxkrWbp7ZlD*3$XJMP(uw;I%$;9$WS`N1GeeVcY;NgY4hWgQJaXkbj7L7Q4l~sUk+gbk>&tu@?GWJNPU`WtNrSj;HR9s53ilGoG zw8)LZqoA?<_BDI}?f`NhY&i0yhPAAly$Q-C;w+Tz$QY5Ft9ca~R?Ty>lHS2l{Hxk8 z^#I_L0$9MU9QI$H=VlR(*+Ez>qm1UP9QJ><;e6GpdgZd6%u!r<|LVQVP$Sgiq}h~7 z3$8wjNG@!59jR${&`FvYLg4noIews`Oj&+K>_Wg3d7r$i44qed#eg2;8@JLXsST!4 zjXKlVqOU&$34m2~J-ngFx9=T2(n)mI2MH}J>e$cljTjy;=DX@)QnR-yXZbLSVRXJ1 z?;MQ|GfOD%aC31L`bdjNlyXr@eb?xX+0Uh_CD%Pgf9{23uHn`gA`21K(XqfLaeb0a zfs~LpP*;zK?%>o$CO???%K0EJSG~^@E{EJ^8>~{V3KZ8XnDmQ$ zG%F2)_NS1Xzj}U+g{$C=3VvV|okxm;qN>ZwLQK98NdEc5#~)>Ca8|q5%O^m>NkZm> zsOWYm>_R!_WGAoD0!UO+oW*7}JHzb2ad}q<%j{CO9d$Hqvhu}`XbZ$bt1Zt0*ae;( z6>K-x%vh;jQkmoR<96+eke%g`9I1C79v&WG3g8uXf%V*hYMpCs;^&T5cySbo>+Q)Q z-Tq4a4{fPz&fg}K(?KYxAEnxSnR%{u^a*+`50|I=yIbK41{UhhKUI|3B%Cgh;)<>0;rR6SP;Cm~Ae*?Si@ZQP`@`dYQg zA$jt=sAjpswaxA(MAc}~>+@{0yKvjy$?r6ca-}Hxnosjro3=z6Y~|xXU*BX`zKm*K z@aNl$gE)Hinm*s4)cMy6jSNl_Nq2SU#^PTFTWg^&H$+pVt33AS{ep*X4h|0~y{cfd zln#jL$Xi2fppmw9*;BIai73y4?N3Z6_a?_=dKg2bRRVAIhT}fGa&~p?!^1|dwe0Gj zoWp%p#s#KR&&ImZH*){ff@*dfV=`Vu+;z24a?gUZlx^}DP-ZkZgXGQQmct;^7KO^X zv~ku4#`Q=q5xRYX!g12{>}`+_yR7v)*g#S$d_KAC8Nu4Axm^S(wkppE3brGOai*4T zSI8>5^`Ctr4&C^%gw0R0^rWG&PhheG^F4#h``MnfB39q83U?I@5=raFqOS1E6yF}6 zveA`ml%(?P2tZ|WOl@;q(j~g*)qbpTsLmN`>YtqKqU?=7);rY}=d4K=L=YFTE|vO5 zHGl=koeE}EbZ7HkBTPZ72)xDrL%&#b5iVL0jZ1ld^^DZ!6IESLcxuE(jKTmG)@HiTQA}?y;%uSM3niaYF*rv` ziFhVi=}|Kx)-qetgR#3mIT(pXdh7x2C6OQ(upgep9CMc z%G@o22}uQbCSM2h!(w3A1$ zfenm>yBXdX+JvT1voxl?muHUxhJS`ZjRLFbbA$Rtk(T)=Nv-0T@E2t;FT2xmgc_AV zk%p%Q3P`>!CJzRVHWaTlA}74weKUxp%oA26*{py;AMY2DS>OHTlD^M5*g~B`^C(;i z+F_)3^@He4rE>*Qhh29o{%9sJb8p(YF&O-siW@%BOD-D5s!0PYOzLEI2ugumgxYM> zgjm;axC#wA2YpbH)VmD+Ugpb}O8WjZ>43miCmZ(?$b@avn1+SxWwR_mnb_O52;x5?RP;Q}fRf02{16S#HcZbn3EmG>9{cq%#7 zp^T#(hi$K4yqsfealv@eOJL9bqa76Nza2d?;C{Jap^w~6j~E}FBlR6(Azjsex$7Q{ zRPM6p&G~u70-%dGSCF)N6n?gH!UTW8U{&!I&?F6eTm0*2dYVp5-ToPzaR{o!lSj5@ zf-$U)NIMG(34B`PE3AYgJ0?GqIIQv!9E2&v+i^ODL6Wcf!KEMVevnf|_N7LYjpO~7 zMz#RoFuY>^#d?SF;S&buQ>yS;XU@D967!!(Bk?TaH|M+hlx7P)Zd~t)$-h){6vt1( zClh1tftA4l_W88{8)qHb4s!0e31vQ>g045+3b?MZpNL=4J54P-_*l22^1KCx^t@vG zQvypj^R)J7EB;{UJ<#~A{j_F*}bdhmBw^cda6s7!{?) zajZ&)*Gyt~O?TZbM&w=@CD>356EW85d!MkC}24SqX*xX>hi zW+%&y4DDOzImO_C}{nKhy_94-t!`f-N?vt{u69fmHro)oYB1Y z>FSD`F-sY3?WNk;&B6*S0Do%@$djNkT3IP*Cp%%<`1 zcMEVTCp>CY$@WMb>dUm*az&K7U4H_DMMuac5T~mq**oK3NIa-%tCSqRWEYsfFW#5I z;*ofyMls~@!R66cJTj_^cVoY#Rc)|LMy_|VL)gjbS!pi)v{?2QV@;K9;khtO%T~38 z+5n)>m9$=2{`j?Cdu2H?vHlaASJvn#)0nV+aQqXrl|};n3%8g99!_7bcpaW{ROP+k zV{F=eQBD|<$ibHrlcEbptCrhl)z#Ip`AQRcO^{i}daJ~N=K=_9Lx)HD>Ib-+1Fg2M zWij{!p*Yu?XtB^8`-VM4{OaWVY_i2Un1UK>TG!@4+}=#+5!sRcS3=;sq;#C+-A#sI|-1_Go zuSa}n1Sq9b^1-Q#QCTS3)Ork?vbn;FEPn8jNd@Ls2*Vtf`+ zar&r=2N_~f+lICd_Q8c&=zF_Grn}(S{fe_y`*$+?4El-3RyXZ2MWBq@`6@2<7Qe$F zbQm5>h>COu4+#f`e8chP7d}L0v@c!WLBl0!7zyW@ipGlZH#6Yw^0Aa$?kZu0+mTU< z+ddLSJI1#?f9H+FvKNtFMms}o)EPrl-v_b!0LtiNg~Oo&KIMGd#D} z^ALDCJslf)PrX11s&vV#Fk|RT-~A->SVso1a(y>ydKdE^Iv#2_&Ezq@Q|I$2y-8aled!xC`C$VZ5QcSG6BgTDIr=w}d?K+tLtUrru6kn% z2QVF}@w9lSe!YC!JLxd3nvnQy_yfasqTYz>d?wHmj`v*HiG-TSotsWrG?M)sU6lk-2R1Xh(j**DfXO^!wzJ`xn=+`q&OhW?>Cm=-^y163lT{vVU-9F z6if~o4_HtpFn#%)pQ+5yL(~>mA+}iFsHC4u&#erl62BN%VAqp+2luaR(SJ`Q{v!0& zKNfAIC{3hzkWhscGnWCB?@jWC-b^Cpd3Z{az%k+&uL}wBA|`3vp;3hEaF5Z(VDH{aS+ z$a?JZFFb0ESX*1mMtmLjF9Fgo1U#I^j1$&V-%Sw0sH&<)#l{w)4mYKZ0tlu99TnBK zw;e#kuC1;zyr9QTTm2WfhXFbfxphVOA0(a_kc8Ea1_g9C%-gHT-*-Y1&ZnmK9ROQ{fqF1CcCP+VIB;}K z%nMO54#tNEk4kV%BDvKQY2dXd{+0h=@^ZG^@VDD$fGG{(3ju*Z8elyBRe&_7`FJv_oSK>%6!cBN>kcEp+v&xBJSMdW&>1AC9+Xel zc_{_u4b8tJWiBGLc6@po6A}{gZ7|CDpP~T;SeOvfJb3g-$)}1;uWzrRX#E>FVP+U5 zFtBKqi>90+$g$~p3yn9ownX@f)W(2RqH})!ww<7b7bY_L`*(-YGp>K+H!|;l`;zk6~e1Ei;?zX@o+V(aeAkP87CU!9fpi*< zeOGGX8dLdsRKrbd=5_hX`JKdXS;X-==2t`VTUSzVdN*`p9=aLl0m&L9|ILkST#q;M zl+r(I8sbbo*Xf0FI36Z-_M}$T43X_D0kc4Jn2TKbQCYi(j%xKKXy0-F=MuZZ&XMe* zDjiVEt5#*My2IA;jq-qXptLlDzoOzC8WUJg{)6$RStjb0T#jVpx(axv6a+hBF*c)*^~kx zvd2<(4-nHim@9W4P^!E5o??5~X`@x~us0aDNovRQB^VNZnIGj{IC4p8+x0sV?b1L<%vZkIV^@tJZiI^6YSW0X9 ziHVEjYHMo~fUFr4zrvvX_gerQF8{cGuYN%&Z;(4H<(8HfuepL;r9Tm;1IAs<2mV67 z2q3n^T!4`q&<+j5-tzCGbW@oR+FtClYvPGl6LqW@;b3Cwtxp!!EEKkPO?Fcw7DVWE zD*7pg;r|mVMC#19F|c*_w1a)Ie^8oUe2UNp%4z_G(jpGAH}@VX+s*lbS%LJp@nDo> zVvPcFiyqHE)%#w-SbW6cnptlnO9DYmU)cmD4w*(<=JFEYD{ilERLe+7+qRSz(mc5B zh*Q|jswZjbD$728dLMbX*w7DX7B_%QoTYhVf3le7cb&c0OVL&e8k&AWvocfP9@@6?3wE0*io7k z)(_ZAECasrVfukS22Vo(D1V$_M(dL~s*N1G!M1hgu?j`O*9dlrol&_bgune51B?n^ zzG4CRkRkTQy>YpVj$oLQ3YX!-=AJ`qAfs1TR(Tk7*CdLi+3&QF4@Nm0%5|}z=R3ty z7xKlv{u)bbK7AHP9)6oV$+(U8_^&LPPZrRs3I!ei^MeX} zq%hVUP4VaRvn#$zegeH$e!t^m+A|P?kq@IFPGijP?|*1|`=8_?ZVOJo5srTx=F?w3 zxF5utGMvw* zo!&iw2IwGkRVxM8Q=UULHWaEm*SGVd zsHAA5`65$DREhbW6U$SFz7U2YNV&Sbo&RvsmCSfhW{VQ_&c-GxR}XYMfB*u`F|TI{qjF;{C_QW58c4 z=6w6??q(|-)OB=pOsux;g%EX0xqt#)UtizA)Ku-riaW92fm22c2CqaXzI8;Es3eSt zlQNWmm0|ier=M^l<@(@JV-8bEia3Qxqj+^qg;p)ufT(r`l8Hn)8vPJ0;o&*Z>R3nB7V%kCC?; zBp)wibCUuf_;C-u2pLcN%E80*_4QST#CYK{0$x0q9mHHwPQk>YDL4Mk{s%gdwwMT> zGuPrGdF!v|eRnNTDh3&=(tc~GeMgr;qUc~OA@dlUj}M(2>EW)Q3!ITyK1 zBX@8dhUMX5lqwqQ`kEc>E`J)uf6wOk^#H!h1MpCFiAr^&C!c^pHvI&pbV-&oEV`fY z@m=i?Pr3mP+(TY_2Gyu>=1j%Ufmbfh8hp8p?v@GqA`H|C2>)j7|IHQ}7O&{-;Y2(e zd-_Kdr^R1OF_jYRPF#mk#af15{QPn_YK`E(W=lSv*Wf-OJ5HPeWpHoTcSQc^h$seQ z%xFdj(S&gMh!}i)tA8`W-!6s3D_@XA6z-$Tr)=b?a*MFF!(vNS+&U_rH&yLW8qfK? zsa+jWO|Q#*mSqFVy-VJf|8J{28fdSWU(Xf^vo^lzEbWsIrfO;~8Vr5Qib_tPV5n~s zYXhl9XY-%L&7~Kta8tN5B)N(zgHH(^*5+zFTlQz_c=P6s zVLt4kU zFV?8~)GeJvzC5U{!^p_+{dsqL%fo%@MMiJNcGxR!8c4G`BcNgjbGu&RaBJ?|1`xZy zCSbK-__D934TiAQ8xBkbCvVvRgEm0^_39?wC_7XCo8rP?uxxt}GB$ZGb>ZtCg+My>GO@Ao@qJD@O17}Gs}SFj z!}^>uyKsHUHf;_0W3_Fqg>BFp+jeqGaXmJ^mUorWqN6`SKRr8zs-LKoM}qU^_GCxh z$aS!t$W=;0WV+s-lgDBb$GTfv{i@nF-d*Z~JchtFQ~pxkjPkJ@MfP^f30k zmGfbye{&rG^P|j*W}q7y^Vljnc%6A*^LA zOsvhuW)yf7-=pSBFN2+#eqb#qV*~oI=NUeraD^*@g3B0bG5-VkRsDwXAb%OjJBxM| z(XmI%v#lJ4G2k~HkWj5&7tK}G=wnmxd@J~gUY)Qu3_ii5`4;3*ksWD!I`JlGq6Gj@ zZTDwvM90Do8y#v7=Bgr<=+$}wk48cIMpm22Q%Srp_HeOY)aT}WV=#ejw$d=zK4eu_ zcP!r!1yagszfV$SIvKSSk5|!H`FTmAWZsmP{~R(I4X9*h3_KgQ5(^FO4;Mrm&;9ha zE2I6YvV|`#*U}lyW&wS5>$h=oE(vAd51#`PNB|K}w1dU`MgbQWV&#*#RFNww_7f_B zXinHckwt^UQ6%^6MNmmI;VF<9W;q$wuK6ir6NQ5hF_Y|WoTG*w&n-gJUb zPcN)5Z`?T3p$KX=msW;}1X4H~f$4CoNu48UzWn zdgi+sUON&?1tt~Dfkd;Xzkhh%9(Ajbf*`S1 zDlz%$TUi^--QBLJ1kj7^?Bu9&T!3}k%7!w&tsq(>K*bZQGP#J`XVZXzfk~k7zWDCy z<~o#AxoPcbGtttBcR5k{o{mnpO{YP;N|^&5him>qJv;O(*5O-xE>Z~ziHp5%!~>3{ znZ7m=uAdq;u7$U^uEWf7yoHG&UejP4}@$mBY&dsR-%oUkc z1wjXOTETW$|B^CGUf)!c3FyHUIfi*%bp_2UPE%*B1i zIj!X{Z9c@>9lENOYkW)yOET(rByN{$ay-z-n@y=b91*dYn9Q3ExdQmcJ>9Eb4`j03 z+rOdSYHANTA0JK4AdU)iH_4};-5gB_U*mBQR;K9jqLbG?g4a}Ael#?$PtN$X-O<_Y zaIr;&3X-aFB*0QCf64av)7^qIRb{@Xr*F}|1_{s&!kjgKuUM$GEZDIZmrdg!!cjJJ zR67Sp_T!0aX>Gk~ikPf002k!0KnWUsS1fFE-~%=BX>Y&)rUdmnUPJjy;mv@ho3h5_c#iVW!$ji?k0>W%Q z#2f-l}`QXq20wvp~#PA7P7dFD`c-QR7;&utKB>{JQpcj+yu+PE-$Zq*Zf&aR$>$ofdSu=E%->tSKU zWqLSF+5|GG#Nm)wimkjvABwq~0~6wnoAM`x7xBkZPMxK9=Fl;?ZTvO${Q5}{BeLOf zRz^EO;g?X(zBn()T$um;;*ldHj5FMNvrJZAJkI5?_5ED$8aKJo%AeI3K}syJgfUpk}OT(h$O_R31*kK3wc0L4LaOp(-sarEr`oSQg^-X5FzO^RqZEbX z9EAbm5i4r!-^*N!;ZHmE^CLH$+eq@PxJmuufE{6sO_HVA?-e6wQ#oj`7} zAm9axkJxCLDBEPA(m%3RNv$3;Ed*X^FVL$1XoO(M;FXb(#Uegf?xs;{VBZGJqq@`+ zfF0Q5^VinURV)VXbp&y-slZJ>{f6opo*FJ8kx{NO5cpftG~7dsKMOPP{Oa&BE$yS; zJV$LZ%k9^ywKDey@pAiwS6=}QI1KT9J|u0PbDB%3^|)QRk%%QXV2e0fZj@?!+R@ry ztFPCbv|Qk*b{%x6mhIT^t;_=e8a6gVX@|KWrV??$L`pit^e zs~!%sxRL9jdcWsXXVB!~saSmzJQ0|xu%ho;{nkfGXXK z;@D1i=0&8bcIMWbDJJJR1w%{9%*Z}IG;va+URjlb<9hyPJAhSGS8oU*gvS4i6%-41 zyeno<==(^I2WY#+g!sda)Ilz9ZmQ2oeLSZi=}Uz2%}R(-meUzj1;zyiq|^C?^?yEZ z5_lJM8Mn3kK6$tZUTe>Zy++bFJML=nV1lC;`04##RYdfA1J<{;Wolyg!+9ptWmgzA z_Dz6llzp?EQqe)0tACJZva!3bFgDmyzMIO8zCn~8Sl8h-q_o2Pe%~cb1&I|4Cq0mH zU}+dfIAQ0fQE>G%wZAj>CXIG&R2riaa`N_0!jsnzrJr<83tz*+;pclnA6$3+@&-K*0c3w8#>bQKp&8aZ1_|iyE$J1x4@M9@KDwjct=h>Q%mi)u% z^EG`Tpyz;;%BQXBt{zBk*QH*&$SAiTKzr<}9&bOYAq_NGzCy3Hg_6kWQ;CZ)`$+766qD3>LgAwEJ3{ zSMZxB0(MmXGHyV)r0JKkd&wa1GVWhkHN7yn6Ahn9u;JTO0)~-k{5vd<$OGaEH{rD# z8AP`=pe~BQ;XDB_8NTUQbtT)fZ6u9V>*->y{gB#(*?E{aR3GNBJ(0K8s*O=C)zpMKD4)A4juDRHmR@3T`j%#ehh_&)r`zccPp1G7=V}J| z@Zb91F;ME8K<@&$Y)NUjN>o;N5Q9K#1@(3bM`5}M__$?AedLbQQDE})L}&MM__aU> zAs>Vg6%%pSBG{CR7lJY(BEnP?WOBQeq5oH=@NB^-pMWnACXQY8g@ltWgP12{$xx0OQA-A2&!r4h^eW!MIaqJ zq*%<;;`%3|cHDipUpC#w2AGos(pkOv$`Hn3g$Vt! zS8CxB7797ce38o(`AVlke=5{T``m^i@pLs|&vGpCT#^A!a|e23fX(>EZDMe-3BFTv z{zt@>FCy&r6SuK?PmgZH1X_WggMt9BJKm=acTdq( zS#ObH`!Zo~kumc(A7xIKHuZbg^O3%1%`0EHeQXvCJM#|qm^I| zdOu|o+BfKj369|Iv?jq(6#MDlZ=EyQoiP-yRb>CDPPb$%zdHXF^)?z|TK=rt^D#`* zh)6k$N>UPN7dpt&GK@Ajix`Sarl@o8GDN$eU~l8n-!5=QwnwbnMWFva!FAE@I$Ie; z&4fz`KEVq#6IJ#V5XE^Ap&Rouh(1!6;Kk5oV)#FBX5yn@Ya&3@ zl5-J=PtF6rZqmQDDLdlHe6g6-t{z^H$BzZQRcnLXFNj)}JBn|yO7S=nrw5`l{kM<-_SL5R277YPkuO@Km9>b+nY!9&uy0XgHVi#<;P>z{1nEe9U6HI-JPI=>NAAy=G%;5y3Ud=Dbkze|NC3Kvy19Qm>HdQdeF9_T zYlAs16QqR1RS$VJ>bSsm^W}c1$5-^;55`j5l@(NNZsNT>7I_OWR|%W6wjOp;j)v(Q zw3Z5KI;{re0AnERZUGh#4kt$%e!UQ2e+`$j458OeibEtMuIrZWuMX9u^I2Ii-{+VV z%6$T?AQ9r)&|Fx5>4Bxn0E;;pbcYPw=8VRd=%^?M4Kew0CODL42_p$WcOnCmK84Pc zw7V>n0{x}9yfRagVe4<-A0G;=5202XP8?ho4Q2DOM+YL8# z^>}xe;&yHLt4rXjo#8~*19XnFzdjtd^R*}#7xwHCMl zF$4Q%U_t*sJ`CIno);bD{~rAR(rxjBMJ5FZH-O={NAJ(=tu5#w!`J58i|%h=Xb9y| zJ3KBrnh2}@@57cPmp2szx}$V}MC-+(WT0rql9ZKI#&qmXaWtJ<%|SwB)KEa+qYgv% zrs$J6)LZ$U7?T5Z!Z)o&c=xz?zXBY9M(HJJr7|=eYo69tX8XLFy>MMgC%60BVaNC zJl}$kD#fQo^Xd{~6+n7TjZ{Zf&d3LB(f)|p1<;Asb!Xk18X6>-9LQzAP(r~#v|Nw0M?X*v2ozhl1oRAl&fpQ zw2juVcH8yQN&()pAPgcLIwGQ+&JV6Ux28ivI|1iYb7H3e|Dz{(bP~OhvHJ>O{3 zdIT&&pqoZ*sq~i$C%{U+zOg~PK#ih(WgD5nTbhRz@Z$N~1)+NLG1Fa9TjhHg9{)ri z%X@d;tF6r{@9sB%uX!UN$}{h0 zzHHX3BfEc^gTVL0KgAS z$?+P5Y5|-YmSQpBvGCm88cmkl5`=_7CpJ4)BFuW^0; zJI~!?uuz!3f};{Ett_|_JW3f75|g|}u3Zg-_aslR^EnD|qp8^V1Q_}~kF9!u%xa|F ztwy?^>NrGit_$>#c;CNAQQhpyb`v8skd9vPzft$6q9t)Gnw)8J+9Q?L1FyI;LIN z(9keU1iYZThCr}=stC41{&zSMKC;b@Xb!)WoE&q1m_DdfD1J5AJuB{9#?UX7y>hF5 zu93A_C%cKR^Z5q#+A`9?O=`liLHxEN=I$>%VMo*ANo};Dx|3p ztOES6)WfElNQ3XrPiDf`~wi^T_$NE3fckp-o3ITN1ZA{6nTK>~jk(`N;TsKv1Wt|Q0Hg#YBqhB!uScd1t z;OT}OOMZ5Cwy1~W)vp2{LAby{PvjzzCX+jdO|8_VD8dj47?hGrK8AV-AGr*kL6%zL{jrdV zX0kzDun@gKHIzlguCtX|xRhv5$wmzkqyhXJJ@z**soW;BPG^a}&D$YwO1HL1lbPJAJ_H6!S$n1D?&HRMIEH%nlEvt= zpmqomoAFO15Z|VA*mqeGg3WzbPtT1I;gelcY2q(htX%v z6KTcpyDa~e4gm-4Kn6n-$Ib5f?>~GF0)dP%=o}LN%R&67+l@;k;MapJ+4A{ciITX! zIXh3NxZVU-8F}AEr~?1`6b+gd!f}Nd)OJ9fa7@6PxdA{io zgm5f-pR1ahvq{Z-(DR2_)B>cyV4PcNn>-heR6})UOJ!uVWgz~VEmR!RrtA8lCZ&9Hq?;<5aLKF+9IJIG9;YiQW z0~r3s9fn5;;+obV;xClkgr7SE?Nge)u={B09IXhP`*S3xeT2npF#d@$obSqO&yL($}R`3OV80&RtmZ9t^ zgXZRxNfaHV<~5e;yg_AKXTU|nBAob16oZCJgq+=}Msj#X!$H~uO*%R{_eqkFQ3#s5 zS9kA@;$;@V6M#Y!trT_U2yE~ejks;)(2RcibB1kFS%tMa7oo+ub(JC%?>Brd$2#7r zZi-ua1W&WpifhOOgvor3uetrscPf|~S~s__9w)G2wbcSFK>rN>mtWTJQOy*xi3=*U z3FB@bxGUwqHcrcdDGSa{EYR*s6-k@kqe^N6o#Rj9+HTONME_G`{Q0H98v=I7BDYW^ zD4M8b(QHLiUe^)=$7TC7SV*%t6aK%dj57hSim%FtX~-XUiLae_BWhh7B{fQIzV77% zGf;-`9m2ngaaUr$rhHZNxxu4^pl{_Y*BE>Z1Q4m&H=LMqD-8#%qh+0#YX^r4nOvfN zTT0@t|9M5e5T3yTsbz88Nk`+^UBT#tX>k~O33|VO1;=D2K2QzA=Ev8#0J)Igiu>o^ z?2srP*pEQ<__`SVd2JKz5GVN^Lh3DA;d&gzFCq0Q^apVcN`F4W;dZRflF9GX@?>j% zcP;tlkT1nnjj`mLfAjgjH;0}W2@Q?1SA?v}@&QA`@zMdX*Z5phTRXUm|6KJ!RAg|7 zdoGC=T1R7aP5~Z>R%E@0|9T`HV$dBMem`6e4-bqtxoroFSPzYdp-v?f6=QlR$ltM- zLJ{2gS7yK$Fo30@iF@WMGUEK_>65NQgGwvgelJg~*Y%Q!z~iL6;rmrlqU%zAw9u&2 z_Dugw8k;Yh_`rYjg_M-M**arDU_VEI2?_7-#QLX>Bp?9^6$3md-nTmC0Zm_tlYJ#7 zlSOz==i991hF_-1ye`=vL_|^%&~)ZqSIjlh#M4CkaQ=NE%`hF3F}&tg(wVGU&Q=TW zpU=ymDFNiB^Lb-p?LY8fr_}vIY?2lu@oaGY0Ez_i$y#_}7@la)NjSf9#ce z#-Wr>ViDo0@Y_JYDQP}w)ax@b9g5p$4)>j0lH52gXMBshEfCqfgG);~x4usB@5iA9 zK`iY51LDfh0n(s{56~_Thb>&*qlq%4lfLH=2Xn;#%I)uAXfGy-1@*5v5aqiB^C1XI zN?kn4k&}}VPe{Uc7#antTU^MoVQEsrug9A59rC}v;ffEc&cuY`_)ZU<>~oW0x z9?hpFVVp0s%8v+1Tt1svcBK?MWhoa3coj#dzJiI9unM50Oz%GkDO0|qtU2ttJ+s^0 zP2eDl62O9a3llv%s~Ym<%igD$VS$h>&euoU52OF%CLsX>W~$GNW6sBgM`YE>B+!AT z{Cm{Ax|4$4++y5nkZ<9iWt$J?)-n|f58sf_OLx6Xuw-&(c9tB-)@0X?f8oY(SkI@H z9jy<%Sv6m6`Ewb##J<<)Dft*GAi&NG9FBv zR218m`Xh;pCLxRhoP?)#n)2aEcvRrHxgvu-26y?NwZ07|i#KQowoH_jl{F?V>3ds~ z?7QlR2-i4#8CgjtFbRP2MoHFT^#Z$fFrbdRksyh3&0N7T`O|df>5ek_sHvzVm+pjP zeElS;{d3IYWm0AZgOKZYC)R7M)DTALGay)_1{^|w1^AQl^6E%RO6FEpDggVOk$#}1 zK)V0CbZJxQ-_u;B_;*2l8lF;A(qU6~0VV8=0@*5@a)bKQ9KK7%xqC%seThKQd3E%I%b7liiNWzze6Z(S|G7Dm1dK*eD9~SO zCkNG^Nu%aB^Y4~2-uS#8+m#yB#W^PT0EwloXy+2qm$t@sFX=!6!*jm`vYhU@pKtS#m)Sv5bHn|kj zdJ~2%BrYXY+_x36t59(S*(N1Z|m_6?#03uFiZ-RkofeeIxapwc`e)m zrm&Vmmbo;msSO@R$M8sRPtEsF1QQMT2(H%1VGp7IzfZx_$rBRj5 zv1Vf~0vq;&zrWDk+1KlR&nLHq#!rdL#ZD0Z5^fqnj)y)$A|ljjTSE!7OU7dvt$jgo zn%_ec=?0rEcsboJa-AXKFO~|t>4PKj<7e4Y^M?i>&m8_``Hz>Z}WnevowhSK;h>FDR+}4WeDs{cN{ove3JS&SU3<1* z@%Hx4XB@+2*X_&wI8c?EC~0Q)J(rYXkk|4w0iDJsdU)|nufbI!=Ua}+aZ2;A`BI0i zJw}pcUYb3hEur5R6KS*A6q{5GKJxO9v|9^P}6oBHXY}@o5yd>Wa4v z|2!(E&ubvz_^@6?`g44nxFUj-f=mK%^b8~5mwo1=^M3N?MFq*$@qgFS+$_b##bs4# zu|$B4Vd^dH>NoCh$<=ICrj>&cH#$o9={-5yY?=!LXG_@Moc*3uUP;OF{oQ7NxJsUS zl|Aie?#eHj-s5skICHeiVNXL26mOxSqsF6Jsl`y(rkMK&@* zLc+$Kk8T%}Qsv?$tEkAxbf^@v3}r(|7Jrwe&!QctJt3(1tU-Mgs->vFR$a&JqR=SY z2bQTNCu#|)s%~zL_N^A<=#uL`I0OU~04j#97M2XJuBl3A#5Ab_H$xs00@H_yS)2@L z)ROYh8G|9P$)P!tjG^JAax#ow*RwNEFtd7OecH1c`TXBXNlox#g;E$`_xQh5&Z(94 zy#f4kohvOa&TKT3?~~|5;RkeiFj6LBp|0-kyoTH!?a0S;UYF4xMz;%NRQl0g^LChe z^m8NyoJa?cLvou$!is z|Es?PigG3mz#Kf)+DX)Zr{&*87#)H#D(tJFDfz#%UqFdUcs}A_Q1q|#TwfU}OMr>` zYjW~m&(6Q~%NQw8kueVk6~5*zf9nB11;LKOaO4N#$;nCLa2Xjj7n9RNfb{d{OLkub zDr|;=f7A2W>mdd+t#@J?uwRoOmuotnqS=`3bwc*$0_&+OBA=rU|LCfoL^HO_`#MC`p!E|MBd(o0KYN2Nj#E%jNa<${|6plc zME+h<68C1s6|+nCyN$z_w$RsPvcm~%UK#J$BB-wX{QSIWqQn|iQ_aw^upmGs_d^i! zkvtA6-to{Ux7X}KfFEMRk;48+U(4~XDz_j{B1%&ROPd6Qs9f1ax!*-p^bI7>9K!|O z%N^c}6_Az=tK>>7)E+NXHT$Jk22rpZ1!S(+!{QEx#6ievUoQWYyI6rBH8*C{=Tv?A znzi!qWyroJ5Ja@B@m*gmq22zdkKn~YRCmLEITivqOJ83fX!-GJE&!d>I5W6ycE47k z44x4BPkm`IT-ICf(kMV~>P4L>fR={Clj$q2LAuW1=j#hHHLI$k(#Rq(rrx0q~>90tL`&V1Kd8Xd+)e%Xvr?W5~l8JExdvDrLSu%B%5J zA>k4 z3`(Z7JG6g|Y(hUi0Fm1VheiBXUIqda1~~kZl5{8kUpu^CN3ZVjgO9Y4|_sXva9TqqE~+=W%b$r(B@}%bKwRwDU!xR&t*A#NvH25%D7RAH|ie z2FBOVP7Fu{{EX+vnG8`XkiQod#iT510_~&3fdR_%n;RRsK^v9i+S+<45tBT?hez@& zAa1N^_*=K7b!=Z=UEJHsi3?c-jx=+sO!kRM=to^^SWuleWp#~DUp;!O*o;J%Nx zz$+{*j?c*<1`L9;Le^;7 zSTUlRw&4}xLfl&!l3nFGqrPxH3Q2LYkw+rv3pOY&zr!qw=jWVmG%>M2MMOk|Z;O6D zC2`;t^b~Q^HoG>aC*&_Y%^HqfuxfS7{_?n8!Tr*@(V1K{ir7h=2F%mEg=69{*kDV9 z;4_4MKZ)}cyiYn!{p#5cFHm{b{PBBNy$0a_Ro5wIcwd6n&#loUJx zu@?^{J)6KZ|K=wkV^U0-|JlP+m7BXsh5#AOvy>073vxCT2D;_iRqx%`5X1@RcC8fb zMN)FUnsTW(ya|aes-s&wDc-2R`+>$&QN6%O)(yfo*so!EXRb+l#BI*G!_`iy6ZgEZ zF)}{|X^?=eH|ahON4Mve5Rf0E1;#lNGwBJeS4;y@9v)~7_T_xM6<}fEJl<@ZXP%B$xnu4dkFAa=Y^zj<>&T)R0}}Uac6|z|_Ns__J&+8^47`oYKZG z7Ga3dpI$aaT+_Lo-f2^vevIf}jf8bVuZYcTy7{q|8MA@|$LG{i4qoSZzYnYJmF{#j z4~S2UfBHjK9n{5}W|&QE8}{4OG#9DXgUz=Y6?oQ|q#n&*Rc`HO)^k7XXZ9}A+ql|p z7RYIH8bV-T-v96>!TpI^6BWi_#}@&COQa8h;^fB#)E6Vkyi41Hj7^D%Y+jT=^Eft{ zIbTZA(BH8z0a7TK%t~2J?cL#)Veh40efuEc5RSw;d{$#ek zk;oiX)#^D;nTTqoZ#(R-UE?2B6L+o6PokjOxLSje-tXdBK$;iXCJx2qXKYr4bsRS2 z=ZJKD3viD>?2oLfav0=xkrfj5&y&Vop><-;n^) zFPj#Xib0?7=J=G|t41VWJB75qNOAPyEihG8=1%o5*-J>SCD|y4?cmFPLf`FOt*d zIkw-;E&*N#62MNvF-1idI#e{`LH?p{x}{`hj@?~d%2<9&3*#)N;OO`l!F?E?|wQL!2G=!qSyWKwR4&=h1&fHgt6j@r3 zs$$Zp*B-EiK;L*`2Kx>9?!KgN9Xb$TGde@IUsMy0Pt)e&+sFq(yz;7c;9|*Gc;rVj zzQ-hb+e?Ev^2dEnVH-?Cv5a{<_ek9Oop?d2xl;D^!jjBVGp)I5@*~e4MQCVfIQRJv zsYKm#{5^my@qy$^)@jd^_MQhGf_fp!$sqJpfoyc5o|jI(Tqc^e+5%N?e?= zPRM)BDLFUsf4l(t!Um&y0$m5i<=8#y^s7a1yKT-Y4mePcc9#VP{J62O_pO&)hJ>td zfqg&oa5?P6hnym@SWe8g=z*QCwCiV=-GX67QKtjjRBluy=2*yvN{15%fsI8}k`^p? zE|=?V(vfGcPnJ%lt6XVc!u%}@s5Sf%x-ds*#U4LUY)ixm+HJ$r`yDt{;x6imG&_i3FJn#K3^k4V;P&E z)U>Tio_Iw!HVnzgs0M+Q4+DLemP6vSmj{g!`KQD3@-p$wYV|DT==fSzdlwdn*K$Is zR`_m56RYKxqijT6T!Mt^j%#vMeBtkV*g{(?2CrFb>ZE1YZlQ%bqu_pe9$~nU!js2f zh%$aq7N*mZwJagQAoKB*)YR=N3nTAm7IJr&WKpxh91$j|QoQSclQzW&QMj8^e!C7c z8w=&)%<@H_Bu6Pp$=aWQ%4oCiofrBxAR^DF|_RoP@}MJjeUzF8lnt4b$`k?0l+!AP%A$Y!u1a9yYr+Ze0| zA_k(KEnb~d+>c;5;RGZvu`S@KB0;;1dv}tytLzpCbim{_ zF0AM|RWJYr_fdZY4_?PM(XOaDg@HbsYi*?tV_p5l&Q*ZwWs)fCUU~04ayi29Bgjrp z$429xW9v`j5aqqD81_kKvEX=$Q9!JDG)Vcz@;x?cHV(Fjgyd>=FtMp&5F^~fH2#aFVF;l#T5#CmRtsx3B*^Axl&de368qM&6PgZBHdkC zvtiSXE&*H{DYKCS$E}$p~8ea(RcZATV>Q zBz5HedT3)(=_{6+&E*WKdRmxL)Ew6@p{w{pIIU7^(Y$Q^p3J&5eR6ivAVWcK>MNb~ zJos|mqT}it6q752S@!$1vonT*Nnh{2gK7sr!~1oDw2-P0V7k5Y>ovOjAtmDza1OfM zd-ncO)Td4V$y4Qh1Z)3z=CNYEk(9=}qDx8QE)r#VO(LRfuKq2_%w6RT(ObiQiy>%= zuaP8v6Otf1n#F!y#M~#67#q^Wo)NJ=|r9$ z=Gx=)q!RXEb+0a_2{IT_TNsmZ?dh7%MXReYu=|0|`pk6=ya#xs=(L4EX^WuLbZH9V z76F2-uf=EFw<%+Q`7^YtK;@4h7*?rhg zDsd|RVosM-pseQfkLu}N4F8dx$hx78UiKmF^zUD0~_|~%o3HcrA`QXo(sExY(Zwrv^Ae$yh5I3#uefx^)U95-w1f{H zOv2ND^HM!)x=8-;@pJfTs>E?T*E2-1w4n_J4-wlwuDJG8*>4|b)dXbctd4Hnu|g&C z!?ftgybmieIMckA`!T(yjgR33xTus&jEIouSz}VFY89hpZ_$B0OOd_Pe%y#_`_z($ z_e|Zw13e;881(=L?ZCd#I%;LL$jE(P_NDY5U$>H%SfIQ8%>Fe zAGV%404a$4{2ZoAnqs$;3#qtkTrKmKMu+^iWwg3sMIE8SJ$PnsQRK8PQLLvY`Dp^cQSCUJa|0}RJ#5}!<8IG$x7HtFpsx2i;08D1oe z57iK%I;&3TbUm9g&W$*$5&y4_-=-TL1yz!BH3AIPE3qGI6e=PFHkASR;SML9=auy0 z8!iBK4Q+34(w7v7Ap?R(igsD;Y;*7`!>rLluF4h*~ii0WJBBK-9fKRKt=ZOh6T?M`i>bk)Z8xi*;mDnM7)-*z{D?sc>PwbZ;$0haQ)~ zOunhoQM(iZ2gsy#oZ!U}LIwuWQ;WDG!JP%=AWGbUXb-+`R$!AV%u1aN@d7@ZXKN;x zFvvg7vOfNS$!tk{ISK88uqAyTRFl$sdy*UM%D10PRuVJJKS6b`Nu6L>;+@<@e1%Df zM_jxQ&j@(?xF^I{JLX`5Eq9}F)!Ew5k;;{fSkj39ZTLwL z$1ph{J*=yN=c=tAg#qcK-nkH^y)(BEOIQ*M)D6=|aP6w98owZo#+y}qTCQw74EVo@ z%TF?-L^KQXuSQS7#Rl5}8gx|o+FlvOHwI%dHplf{-_q7nNtASa>Q9%+AP;7(e*6~T z(#MmK7H1gZQ=4L4JpCrXv}g%($^RaLFlrtA2fuUyod#zVlQj!3uRw*lwIwULiP|LW zF^YEa5hUr}ewMj^`TN&#*l~u^(Gu2r@Wf)9Y&}D*ma+3SemQ;@{wibBV~A9TmdTH6 ze{})m)Sug?{YQzu$r?AwX|#JpXgY_~uY;@6#J(AiJD>xn4+8cA#VuQ z@O6WHp}kf-Va@21mjl@y;0;P(a;0_~G5foQGOR)9@_-jjysQe)+}qKB-Ub`$3c0x@ zCuf3QmeE6#4+LBl&cZm^Np-K1{l&OeB|v8VgWDK|>sq~Z-&$SCWapk)l|JtGiy6;+ ztkThh8R3?i^-z>aq&=mg$)AP;cnllmmjHY-csqkc^F2zMm9HC;a_UoiK$yX zt4vfw<+0rO8HCKX(&uqojCjrffIHv0E{B5k7L4K8P($MgZMEo=WQBh`JCwRug|Ur; zWK{=j&nr&2jsp?HM7&k}Tqj=v=doHT$@wHvNVi>FeSbtD?W&;4h``Llqz=GH(Y1PM zCG9#cwAVRS9wv%ZQLZMHj1#M(AgIfmPUVPyfoYU8V=%0qG2IwLzKk^4{2%quc5g#$ z<0(D~|BD`@E8+_lqK1x%`kx!Y3xKt~y#2qQ{@1N)6Ct$At)2qN13<@~Gk^lQdc-D z!24nOXlZE`_4H09(E#hIWm&@UV@7woKmc`$Nn7S=Jk4+dwko3sBpES*x2}UjL%-IQ zna#Up*2kksUbZELc?WC0@~Zd8)@APpNeL+#r(17b z@t1+r3IlY9hX^t~bXCi=i2&3g>fpd);qKf<* z3Ceud83wl2$)$YasZbhdw39M1DejD9kcBU*shFjzC@NB)!`K6jO%hJdMkWKHy0F24 zsIpNyPS@Lt+u|IP(X@rd)9|9QwQi}!#;xp<;o;%!^5=u${PwTm;mk(KO-)=>Q=3!y zvhiPsU<(yNou8H)0p$aEBArgm5N7iSN&!2qu|cvL@y z8EV1(R>yrAz)2G{naQLI7DG^UY8sgBiJ_r+rL8)vu7}olLy2var#ADH2OT6-gM&rC zS4+a5td6nhq)bfWVVU8!OI=o@VKg*~kbTr4j_n*c(Y z_=H&ux9dosm>{?vsTa;bZC&9yqeh+e8l9f!BjXfI*3a_d^4KX(&Wp2;_%W>y*HZ58 zDYsDLa1KeKp%bwk-w8nyv41I5?AXrVw!NQfquKjPsGzQF78tdXdBjMUgN%#}>~;UF zYNKQcY+8&HF2E!kZvxa8)X!(_&xuy|cGc4}v*wZH4s85-dH;Z3^Z}7`lE_Z*#-mrO(D~XO{1OXgkTEJkqdcwCGsJkyr z`n)KFYUR!L)Rx^tE%1uAx`INBvcEHg3w_g+$ujtOW(Y?8eYV&Rv{*bnrMtO_i;Rj< zVRqT6U?i1UY?67>_^N0L63^4bBrouD;CEJ1@$$n2Y;@yA2A`g>+C~ap>2L{ve1&BS zmVS_MIUayG5KSURMt^D*X+pxqCA!GHc(v~>suj^@4bTI4?4DbhR9M$P&A?tXj`8JU z#6eT3nk)f^BY9H0{RX3*$;^$WPaO;t=@W>UpvUElDj}NMio|3GgA=Q(1`t0~>Q`)r zc=(8PPqgY~b*4_EC9lqWd-+rkr7S&Ck#&oUsKb%Kf@r{DTv7ZKOo%{loooG<0cFNk z(f&i!C=Q?+iz{8KOAXOMQg#^IN&d`DNjYvtVCR+eRv;WFqOG05?cwfWe>s+8vyIj0 z-f>1$gv89??Pn5S=bcJA4TI`RmE_hPe>-8M*OS6#K4dSn zkg;;^-P>_z>JJa^A=G_p-D1Ya$7$Vf>C0E1W;nKulkovx53 zh_*=3xOVjXUiURESJ&JZ^G1=_?0nOh(^$pjRc+-VVLnkEPJ|3anq(|pPt?*`(QU%4 zt7nZpTP8`(KYcvZYvqBJv#%ayE+yoLJN_(+Sq|YBLg^$1LA`tV7h7TbXA3hkmj1g) zV89Bu`K*E70Xtt0UgL59u+Rck(=L~XDj8i;^#POiqN1dXdXbJa1zO4%Ae~tkldTT= z7Xk&v87^4GYJIW1Lw6TsOg!f( zU&>T@jNzxFJy)i2r5hbC@ld2nhoC|b${W5N1k^gJ8Q#~NwZ8FKL=Z!Yfva8so2Q}j z%dt|up}O??HD=Z(&Xn3dub4DYc}2sR}{_-&gGHRf^(&=t)0eVp6(ZgjfZCfp`Ir8G4kHO z2{qqmv$?KLwLFAv4j}zrHK@8$Am=Z}LT6d`X_K4P({|3qP6pQ@bxsa>C@!wgqLiL~ zo7n+=1$M$(uBaG?eNXy-*n7*My1I1>6E+?Q?oJ5q?(PyaxLa^{x8Uv;Jh%sU3+^7= z-QA&AzH{!ad(W?~uIj4puCC$_Th?5A$((b&bBt%0IaY^4YfCd#)d)XVGG~(dt(zt2 zW0+f5%yNNWD&?caAY#BT4`TAMa+n^FwP+*oY>L@CX-Y|-`@t{%du)yo&vGI&n zcoqB%8^xD7Wzv{SA>;kKF8-mHx_tts9+fHK9Ppnj_tRbfR!F*TNjFLbnM<`BD)lZe zhW=yH;Ej?aIE{tzZ_&el&v~%_noh(aS&07UDlston8X6M@2$AW^dB=J6u@+1EXsII z@_%~s`8Gv&>^hEkmNiDTR5tn?pPa2k2?NHQs_*#cR|d}N#)IdRF-zv6n0cJMUFP9U z58cmhi?NE4YBU+D)9`_A1P%NoFY4`sXDs6bHu$O*`6u3$6TMxl@oIF=BQf|puxaj| z4IaoBrnmp$ZVo~b)lW)RCap@U4%DE-AysbmO5R1#~E@JVL&kDt~eZ$HLFM(n`1vPe!|p} z;Sy>gTcV8Zv3vO&ds5QK)$l~z^7M^MfqSY+O-&_DXR#)Oi5m`jopiE%KF*;6>(A*A z2%dEsJ-tyy73X?LbG;KyXl13V5~ zRhPn`DMdx`=A}P>4iX*a;A=g;#7jg8g6OEAGwjxZ$bgLuNLp7qbs6Fx2$<<}D)0gD zEA7N}%n#(?u*H*{-DF56V}hV8xg4=$OGCrFB8r4VyifjS&J@;m3dG&m&^DUp_VyxP z)VBA=Acb_Xk`c@&TGKW@UM~6QpVqSvMGDualFk>ImiTnG5>?j(%=x?&U&SM@K5XzU zhAc(S^PW>Ns3{*+1i*-cCSK!w`n&`y)!*W;JQUv*obOHy1(m zF9h`kJIL-fsPI>3A3bC0_tuXqw*MvYC1uP5!ToIibem#jZi6E5{+8~_RLP=lLd?gv zTCd%_SqZ325~4dkf6dRF+;MgNSh>(u9}4e?@dU5_YMOKXy1IY1ElIqr^&j&inQ(LtBMgfaa3-3FfV_Knd;gR1`O70Q$UWO-1}f| z{jTYVzQ5&Ft8CorW~ttiu$PjWV2NWd*9@{Xo!0N;((HJxm(v&gWxX%QvOyS%F`lbS zz~iG0Qv=}`l;e-lHJ&-baa*JN8mahx(d>2@kI(HeJ6i@w*6y`@6`(zV{Jr>T=JxZY z1%i(#$nzIAKZJMTfFz_$FwrEo7@z`!|8oXbC+)~ZAw(-vSz^$skS{Foxem` zz33-c0i|IpuXhNpa+ANeZ#X^H$Sjqz@!}ZAp{aRx_U=eBAnlF^3?d=3{Ixo>hYf9!8&fS3aGx(L-Kx662K zT;kJtXVP2m_I}3bopaYt-=z!3ouyMA7j7rIJsU#6z0Ln(7V%@+r*Bvwx#I0`!Z#Ow z{OhppY0Ta6LrJF{0Qq!3dla~L$GxoZbqy48Zk~WWL9Fz>=Ucql{HE-?=5}pei}8Kc ze6jW2?`8AQ^c0Efc6r!SkK?0LW!3SjyH)m{<@R&N4#a8gq^-fqKGo(D$}sHD4}n&gL5&>mFJ;1ikC97uR*rfghv3aN9Ak1v=sPcA*5815|x|rY@oZ zt9T0NYt=w=Uu(ZC3Bsvj!^tpP8XsD|h;`1G;hCQ!pe@^H(~Tde9?SKdFsD{)i;fO8 zIfB)O=mFkK<^DO|ynCNsVeE6SS8H86xxPPWX=*}!R8&^JPHKD1VBOICzBbWF01+aX zt;LTu8mo7V=MF`h=$MlwBBHIJV0Oedd`|6Zl6${tGzX`ZwqTj&x;%`&f4bGU#h;V; z2GsDSxAs#^#G_0xmTJ3t=y3eEbr_^gt9XwdJi*lbp z+-(cJ)*U5yx7Z`tZy6Q9-D^EIsBhpU^u@g+V*E;<16gQmd(2G<*GCK6b-#9?4v!3z z@$<{guQY3_u6aaIQRoffUFV*5XkHQE@D?u}w9Fr$zh=M3c0ND*9?VQ5iv0!>WSyy| z(z_$RE~C*##oRY`DyXPfCzG8XzjOz3W6udi=YyaA$$onY$WPI8BzT%Xf8UUZ&v0$n ze>k>nqr%pXHa<`-d*C@%;q*CIY&GS!i7Zs{S(6cEW-wVnfmzh) zHSz-Prr)Ik97pc7LXl03lQc?}zZL6~bC@zXNtQof=UBi`3XNv)s6hpa&wX#iJAJq@ zpQ*bxPpLJ%b~dK<@M(aA2^ysEytD8UQqs|&bKDz`&oAW*xkJEX9LpAv-*R@2-X4&* z*r#&Ptv{*#CY$p2S-UoJ`Abzzp0&bJkvUB==|FT^or$T*aCsU_Wb)R*r4cvfT>=!Y ztF-j5n!6l`&Y$)S+SP*hK9cp#wFr=_y%PpqIyq50RMy5MZn9adQiZZv#*htxr5^+4 z1z1^SgSrG+D7n1QF(Xu|RHDq|=@-LHcqVpsaD@yn^YEhdQOiN3(C?vWOZm(d0(M5) zu+c3s!%Wt+@N>g<$5$pw3SZ4e%iw|My;tg=KZ^>F)*z92ou)G|ee4vfQ3MswkB;$1 zuNutU_Qo=e<{R%9jxT6o8$9pNQ_@(zrFwv!U`yuuY?anNe(*HuzU z4Kb@8vu_2necKy7bP(qun%%yrwyPL`|Ek~lN!0QOa^$6~ok+S|_7GDBZ?5ikY9kD+ zy#l%)4!4$i+XY9*)SrB`Km~U5Y0(*SH&355p9%8VB8aP{7R~E5q1H$rD1+Yq``y4V zL>8WL-yoAFV-@CfiI~pq)|wsnGTZO7>Pv6_P{9X52 zP(bEz&Ud`ikVG@8%YU#xiTS3>HfZYLFzN#bWUh3+Tu=xomRV*VI@+}FVsd%h6yp@< zTR)FNAPr_``F6veI_`}o5AeSizw9;257AV0knd0E#ZtT-(JU1bDU0y{@46f;fD!?p}+SI z)XRzpi|o|hSz4ZVDAV;1>>QfDQLcMk9XHs=VyYL9BO%T@{8k$9RRl*h=d-`6%dz!3 zxsH+ayCV`>Dk9MrMA|*|*1WgsZb;t=VP@{-fzTkds=@Z1qH6JDF_S-3LS^Ihv z!ROe|%9Rro3BGrtQ9G)CRjvwB$GRHdGaqgl+c=9)Pu#aKiiE~GBM5~ERB21(aq%hd z7_Rw79LB{8)cW^=Qd2Xn>#E(Uy>dQ%`N7!zK;8R+*>WDi+RSigd)2dkYBDPR6X|D> z{WW7#Q|ah_cyQC`LKycy<+v_pN#lE#yiX@mXcPyUdvN{SGYs6`8ayhF)jBi5&>sV} z%j2TD59d#LA{i5sv#7NiY*Sn?k{#;M0&%>7m~`$T7K@FhXYb|{~XCu&LPnErhDSk@+5dlJiQel(4mF)Km-D;k^k(^qpV8)jjG;f*?% zEo5AJGjG2+qu_ZW_4y6mpkU-Ba#+Y`MEuyN7HCrBIrDaatqtwpjr+&dsbQpqrCI!d zhPI6s(ACY1+y7cTbiSwX9AhD-&B+hJ(Xl2(ElaSywEFEI4Vj4vl08ZJdZEeaTj`>z z(w|f&G84d!=nq|~UhR;>B1qte{6UBypkWs=_+>j?$r+_=a;R(B<%Ic`jh|kX&B~b% z0&arFU_kl%c%4iVirEU*s$1Ynp0JUNOLFoht48~gOIl7RUOm75qBt}vwhic*qm81h zuG8aYDkQ3qaDvBaC-miFKp?60tVv{RHXy_W8bYiI=6%8UT@xq{&r(izJl#@6Ihceu z;Jn|52(Sx7Zv}c{L3;>1Ov#%p)loUj#FOpuJ`L!!x?1u$&cgE8oqODDPT-JGia(Q3 zDu1&e3cCkA3%y=DN> z)?}16A4l|lvtK%9n@DG2z*FfAWBm|wgZ*?@Z>c&`<$IlIAGh4%+$yUmrjtXx`<4TO z9o_(DuHpb9m+%xGKGKp=9TEz9Xk3Q~&z15+dG=&#dZe za~=;{BUR~_5q%00I#}aK zs~6+Utmc_SdIZ({C}0h&-n~?i z8b5~vGE(SqE7lw{dWPeciN7-H$ zr%4vAZ9mbN;XrVEXXgqj(mG9K;~bQL`mL=#VHQ6zQ;1UtOf)}eutP!o+ONupQUvA) z9NJRrO*J?U-9Iaq%tmBJq{n2ep|f_Al(dvB>zoGRsW}1X^Ms%M{j-8RPc9~tb<-46 zUQIwSKIk)U-y?O-mq~6W(>vOk!9T++U9eQh2tW{2(t>(gq0hl$TG}4}WN;9K4n`eI zF;8{NhDXzoka|#8P7%U(5{-@GCTqW0DyTl!*4(-o8X0;}HI>&q4@WZcI?p3@w`yzE6B7=T=SjlrZOGtTRZW1tWW(?D_ z4iOEAo%_Y{&=Ub{cjs^W>*;qW=P=sx24B8I;XvrrQB;2-tvLAWHQUWte`r}LfDne& zSZ+8~*wss+zWg@y{*YmdW0KW}W{n74Y-U^T=Za>Z)85DPFy4w+*O_TX+f1aVNPV{S z8m9OgUrGGJA+;#5-`4B2Ogzr4Z+qA^x#8Sy#@_^dIP4f_k^=A+FHoGA1}1Ikn*c?; zgb;yyjmHxaq*O1FN2uKoi84r~1>4{l2*2tD0_!&cF>;cbN_gI>L|XnA7>1iuJ&zar zX3sGlW_!a16emV@zv?h99Ql{Il-)JwW7%hH3=C`NCv^>sSDayZXXp>~l-#*(f7e*d zAg33p)w`5n#3tx5G~ZsI1!CXN-(NC}O-ytHQEy>QqMbxS+e}wiuhL+MCZC0)$RM|w zZd@U0vsDGp?q`yhB6)lDWl^YB{Y7fuA$ zEuywE9SzBhhF}pkoF%gjUg&kR&>T9Aj+1Xf zz1RNi+?h{57_Gr39|fO%*V~V+MszKl%otC$8?sKL*7Xrt*vaX8nPZcZ%w<~#;fIl| z#yD^rvpSs@EqVom!1-`~z5raDf{L>Zn=`QnJH#oWDI?Gd?AFcLv; zR$Jt6y1+zyE-%|aayfv+k<{me>k`8{r(5}+mrv>phGVoBA?R;-Z;|10AT7h7NX<%` z6BR5*&`n9tO8C5heTssaBXrPy@L@09#H560m?&%d{PL>a)<+A*v7s5i_!;&f26avc z8hj$)Hea%$=|BSYt9h^wf~xbe$BjUy&ePe!bD-bz6k(c+BnDV}pvIIO8bV(f#zsIu zH$83g1mCsi5a40$cpK}i(QvQl%d7}gq1^9yW>{A|9_l66Q`q>(=7+Shut9(Scl~oa zeQ)p+NW|O5_x}B*)5n~go&S^?`XySFJ{cvai>f`!?CdUs0k>FQu(zxjkEp4H}kqfmL@hVWR7I z#Pr;p<%_lcvXuL$AbUCE?_UlBO|@QE`R>b;fY3A?*J_@x7r|Pm9G$O?rIgaKfZE$%v0Zj3T|7@OfERl^#(QnF z?BR|hJJHtr)$+=e4_by|55Dbny!C37$eG^%4z4=Vs4MI#%5r1pTM#j{T2*%G@`Tn={LS$?KiTsg z0diA_fls%D7OS;|hQBbZ^@H@Bhln2phkA?FoV3yIGQDPz?f-1Wf<#AoTl~Nb{jE zehBI32^HhJun@!u!Mhc?mneaL4UfRmKBy62Fw~MW?d9{?z1sAv-5R)Lx z0q7lSR$x--q+sE34juzew3zr3t0;@9EXTLC@T(8E?gW!$6m2dgz9*CmQT^ftfQ_{>*79G-8HQl0^YCE{OV4q!K^11%Xa(9=xmnlHsOg2dS5rJl5Z zh@=s3;2nN1!`4n9?lS`W;Hzwwr!U=}<1^?+PR{SIY~c_t_nn4`d|AO+Cy*El147o1 z5l+)S1154(K#~ZT>ms1gs(P}NffAQ(TX%k-Z&0M^gRz};?~w^gY246sG|Vov|4$Vt zh-&{<(3_l6Ek$syok-X7cUN+D^7%wET-~PGMcIP4ev4dG|1|w*lWKc9=$4X_p+dq_ zwG>bSR(p{skNs~LM^;>;pfd9?MjLNz|QCxRflAiCo;wu-S1-X&VH;17I&c2KQ5Idn+0+`75no=safMp2SR~Q68G@NxI($(AGR3G!T*Fe$FUI1?0ydKmH@&A#-bE;i!%{5Q#NKP|8GXiqUPhq?s;thsCy)7Vr9D!AW3&yZ)fNg-jUF-$k5R#_B$Y86?iUGvf0pI$b?{E z!q?GibFSa0*vl z5nnuEQqX>uxcZgR4r5)iALpQ=trx zv!Bk`-}}r9`sSbaI#&4g8EvFTwcV=u%-5SG#L?dzMnlfR&kp%7fp#c3I3}8Ms#F$u zX~!Xau+f0%I2oetB6>B~^yY}dANA$-a!8g0a7<^Gp+wRcqhVsJ;#%3I5wkhA5<0>_ zk%Gvky@^Aw{;aC~txz|?5Rz$>tGfpZ8?Ac_Wo-ZAVpcPB*SHrE2FIFJb*E8^B?TOMl=4@tV*X~T{{@a$ucdw~GB0T81 z;yM&!0hqcXE(37C8f)SZ%L?hg>oN})c=z{7gxY~fmE8lWB8oj8e9&pg=_fM=Bad^w z70;LW5kW(NIKOo=8Z0a4C_VNsEy_vn;m!N;@ev|nJaJ;FWv9y(#|XHQS<_#k%J5k| zKC;tDo-=phz)s(JO~I0?mc7sxQaS>8-osz38tre?41V?@>>0$>z)@3u+lV>tew(q+ z_4$)!GChyBFy|4nzjPE6El~#{xP+Wi5~A5}*LO@Hu=VSxn2xBSCBk&`N0QGDp1ZIY zY*RxB9^yg$d~1M!1T%4F^}K#JjH_7yV~#%!0c(@lOb)W(GHePCC1f?^!510KX0nJ4 z*jz+VRo@I9N-Gtr(+}9<{4C7s9~9pe)Oeg}+oPap8O?FdWwM2qA!!vr{sft=t)O9i z2qyWRqe@<8LZ&5mT6$2yygs-!-4RqGpIHJQoqm?Iu5MPt>uP^|OcHzUg`r)RA5OXD zayWYz0XQb9y59!wVyUAF$&MBXj#k)?-=Ncz4jL^y#?L&@s=5mj^|;l;p!^p>P}1u zFB)wv`i2%`--@uRqRKzzWRutij8Xa%t>;aZ{Krd8mGl1o)0T6}#~ORNPe@w<%sn3t ztXgJ!7I@U{my5>uecP+<_c}>Vdg{TJ2+Z1IO&{b*0eh}m)bcHduP2M1yc7>>CAM)l z-HZp4XVFI!Bq6MMW}r4V2B{C;9nyUbtFHx8|4JdR6cNMymZKLkO+*u&OXN5gelq?e zx>zvayNL2`X~S?Pj;Z$NjYG&u{f8sJwV6evWPaGs>YuK?o#Fjk3k!H8(u6L5Ssi`} z6zjg$6$G1yv(!UkkfcxeN8jm#rJi!vh&$<0a2D@ZyxS>a#IX&he5&HU;f? zm~dZ&W6o$I-Y${+zLmzvK9&Q`dqE>06WrDhM40V;X<{LX9La~x(e0Xsw2sZc?U_Pw z3s4=Js=MMo{{%*4H9E10k9tncVX7PfWrm-*5Zr)pjaq{pK`~BZ&wk$4;S1{B6c2iv zSoPL_=dybnEk==Kya0yeWWwK~c#=V-OHNtX=NFP7Y%AgFt|RJA&GBgV3%mC2Ql(V& zpxei&Y|i5#iR7BHumHw@tG?1tb=pnRaraTI;N|^lc?nlc7ot2SONDWAkl7qokU5;a z;S#qk)gLg+?O63+lqyF~U=F;rKa@o)U1uFDFjW6R+@mx^DV#zVj}iC?ehkuzuoGJ60e0cAKwopH)fp zC%HA@R}8z(<)5z1HOh_Uf2bm^9C~p#i@co-ZNR9r3wPEKE28D{1 zbNRpNhQ#3afCzevFgo&I`N{vSrS5_P^i0}*{aXLlT>sY_D! zac%#zRU|4J@1u{7 zW+zR2dEcnBwz$X@9>;Y2SIx%g06Dq#^!yk$_ZGd9(Ecvv4-Ve*HvBvi#|6mcE(k%H z1O%u#)>XCLfP)$7VkWw#prCJY|H9*65;-hbRyGb91-oi z@Z12~Cl&iE#n)V3`pn8Ydnmz87E64W`bWK_w9@5C=wB>G$u2IC*@~rw#bq?p>@({wUZLIFR?9^0B6BCo^rKO|oW|O;rI^ZXiVgTgx535AdjtT`}47*7K zuw?yoeMQAM))Fp!P2PWdxpL9EeuO|<&%%Fzk19(pi+Y|^-oj%7;964gAIOl;^jFUn zBH;dQzM6y+w4X1e*Hn1=YWbX=oK6jdSJI1}OzTW?7ZmQ82uLu;Q!8c{=dHME_45%t*u(+ zF+9v`YxDH=_4Q|=;r9PF>qZYHA0{hUjrQq4&Ezt@FR@F?D9yeShz9E=cZMfjjj75*E|H z=tt5x{ z-eK_$rxW8phS)%KZ)?6Aeuo(f*?`<^2Ow>xuq4pUF z1}j(qF#F4wFHg~!p`D%ChgeT7w=2z#SDC)gS$}noZJp+|)LzuULU#!&GBWW*=S5z$ zgrhOQamjAMu;;Mw#V)lDC_k*ntL**?r_vHaT#)W>-v%9v?PT^L}UlTg?=YjEbsEsA*0_| z`nrph))~&uEl6dg*G@?RtP>gCIp`I2;kx+tcAs{^z{fkD<0w&1-!O3D(3di`(=#h{}k1{_5MrbcLnqUDL1<698<-Dfsx<@ki=%u!z$qZNYJ~g zUEV1SSQ+dP(xJEK9TWxJlY!1o!-+%UCH|JnOG~m6DthbstJGggGua2&J~}(!@(o-< zWQxkIX`Bv%cFtN=Wq@prX3UR-+_c}ttvz#I1fPweexeb4nqJ{ywakj;FpHS%Cn2r` z?rlqYF$$G(^Iy<=oMGz)1qJ<@k?Usr$mL#a>`PlLFpm?}C>LtGY5=@HruuRw`#lAa zo{j)!i{0KaqQ4k*O+L+fZOy2jlL3L}W)#jBCqcltrVBXdY5@WdmHXwc+E+iRgz|FP z!;_A zCS7{Dr%GO7o=O4#-b|wglEizg>)nq#$DnT~Px;v|vg`+`jndCxH)jv5p{6CwTM8}WpZxrux+uC|4FFJ1?jIRD*5wg9aO{clul}j-^ec{FPj_{_W zrHy}ixxNb-J!j8+^W#T-or6-TBkt0IvnTFU71Z-4r&y>9oM-aNCldFKzJ5>#9}pi7 z*sha?kM)4Y_W2Zn`TBm636m2uhc^&IS9Zczsc|$w&~a)v zY%G-|FpnrgJML3stCDNtSBi1F#adH<@7Ol8`q_3iooK$L&U_}c1j|0G03mmjn3vZb zk{6T`3>G)g(})#scw3e_W}}>L2h9j`N%)G!bbbM5I-1)3_Da?trj{1Edxb%xy~J9w zxuB+=@wta?}? za(MUex9nF(kcq&FYvp=rV7V2C)pZ%W>-@U$OrbSbx?hbi=vQVoMXaTqSb2oU*Y&Dy zYLqr{mF5j8MtC_%#db-XF6e8Vmgr)YUmzU~1ra3lq_aw)$}Ez6Q2FJ?l)|G%FX3c< zn_kbnW>~V4S_$Oz6t6L@8sk_>{5}>u7 z3&{*0M6Ajbfa?*cKjGOnGjzO6S5heucOI|Qc#FDQ zE>t?l@ZU8JCAP*R{E9 zYcH-I(=m?PyEll316*NaFsj_#7!}Sa6<7B7QJ|FA%2pg3WpcPWWP{;(bNV6faYzL| zn~I!ibJ4wYTx8g?PQbSW=`lEvIs3{5EyNHBkQf=KOqaPdTimPGc!qgg@CA#OCQ|7X zd~i+s6+?o8nJlFk2a)U{Lhx-O&9V~;T59Wem<}NylI?hAfedgu)SB1(Rxb0%rfh9H zpR)?Sknobr{y3Q*3?i3hZ}aX};jC=DCO zRXSrwNI$A9U(VktK!dpl%!HvzanZ0rBQ*!}?*sDq9BDx>(y5fWuj8KmuQl7g!*(Ah zF!oymlt4N74wdd#ux^lV0+7E<#_~>5X>FeG^hP7}N{!({Ubu*YhReP>P{!&6Zbi+& zgxn(?hk~6X8!&bm!v(`cUm6d^w*ZM<&F6g)YE`=1Yi`zcH0q38RSoV^SB^@=dCi*M^m(_i<{D8dEYKs#y%n*>EH_BM3QLXH_goU% zUCirBn=Zt2@8cvELko73kYaKXBhI;4B;tRs{RYQkv{Nm-S-U^3Y_Xtt{n=i?QbPeY ztfvbtloAp>Q79cDAehl(>eHrs^WpAPf44sxgnyR@X6P*Q(w)30ETJws;T&hF-Gc#( z&)#Te)yfWMe+H}~k@TtfPJ3Svm*!JOPm3b`L&Z}$8m(_hbMaFlt^_cG8lJgH`8l7#$NBX5rv zGDOP1x8;eJ5*%?gXl}^d z!oGN-aMI_$H@R&du~}+&c)70(&z1Fspy8c=_tk|(Q4Hy1Ny(>r@=`KMrcv%k2vSvA zO1r0g9ewm`?2U2U9XIcXoglut44Z#KabLWD=HEWIidOn1S|fR!{)PWXCAxz@_b;ko zE>K);9?*ws){*NxIWc28q_+{1p*Q=>B2X5?XK!*1hW#>;)*_Hf6W49~S^P0rT$RrJ zPocAA`7-|VB?UQ0k1_TS)y@h@W7BB-#nG@}qjOcRFN}nCJ=Iz9i6+LnDkd<3ocroL z_cQW%bftR4diysM*kf=t9Es`Hs~;z!3(L1;&y-O!c^Sm%Ymz?9Z8}rqd_KaTzXe)gPKWi zO6a6M!X^q52I^*OgktLj8}*&IuN$<M{{aXjqx6A?!#ZPblM0zmP$l;)T(R<7Md1&!+jW-xBV$wS7}O&uC-07we|mm zrs#}djun)zZ(Gd!4DO(fe`YuPkVMsRCn|$hj<6~duGZpoC|hM>O(G73l3*wnu8A|4 z6l&@0ZTuLZ4QCsn^OGCuR~UNbththg6It{R-9f25$uLxM2ZH5Bdktn&c6SVFfno~t z-bpGkkB0%*m;9B~_(0A-$<*AUPgudQ&`O1oICLgB&6&LJ%#A`B(E78h4l;(;%#O9k zQ}q#aRb7K&CFnaeQdrip3I_WRSZSyf{I$fH_${?40qMS3ydXmVkr=Siu$%aw4wyN9 zB5top(#@u;Jpzid6?5usP9+uH#B($f4du-GJs9_X-D5urpt>a9>uw2l?za^5>E#tz zZxDkPFPULRG06m4(Cy}zlSA%>q|$m zg3TjM_^jS-Bo^RsF9wM$4<-3OKqzX zW++y_R+xi%A@4%u{ZcbW(2u`E7KkA(I!V4HvQ{0JL@;)hU=DFChB^pwTQq;1xS$D{ z)oAr7eQj*d7a;$>TnIi-zl%Wn`9gnp;WeugA9P}sOeV7z3R8WIDViARiyTb$PTW=w zJ_TrT|CwN`L4%{a{D9tE^TByb>sbkC(v!G2tL4LR|D}4^L#Ns3{Ot3*x-;S^9U%;j zvS>O`+2=4?vj%z$F^mGmFkL>N$!jfHp;QQj6*$M*IX$o)6RsJaDJG(phcIEz36zu+`^wU{9v&Lq^b(hw|FJJ@2d8 zl?bosZ`_U1A?1YEj1sHA{j`kHtyEdQvl(FE(OKoLx6)Y+WGiibgUGIPI#OBsoiDj5 zJWr8Cy|%m5aDKo{%`NQt%s0)08ne@!l8{%SSwAdW*R?H?9!T+b4C@R8%iR<}qF3bsxRC;;<4kG|tXJEo1EQ;^_y&3|s7~ z0x2r*h-zMGVxHWW!eUwJpw<{dK0~f1SWK5~(ksDqboWl=-5T;JO4?w==64~T$4mlo z*momZ#m0-eVwUC9gb)3~{GY@`S@oxZ-U7N?5?8Z&FX~F2Sbm8r;zEiGf*4(OdH^;b zZOFeVd%~?A6qEvW%2O{+Ztwzm_v0a)kd#)E?oWjRXRE(K6O@~V5XS+LORztP^a0vB zxT@iAw-JRb2$uxQl!ium@ctFUO+eS{fk%$%mrJY!vL&ifXk&cdZ*r<17>RURs@r4K zD;1ixs&Nr$E=cg5Qnf*pmXF~{-$s$ex==z^NX5c$gE`sN(WF*8^cq&OGK62UtiLb* zfHQ=^{;uPM7`te;u140|`LdwZTsaEn{c<(anmJypxL4iV-saTTY zZ`!P78iG~7e=h2Vn6&C-A#q;3uDOwZZ*3T?QF&06=i}54(jQ3C<~j;x^3%_hk;U+k z(SzfxrTe?l=(cm|^23Nv6L_D6Y#-Esv)Dztfzo6K*(T&L75j(>^a|iHUA~0=#n4ha zKSJJlc?rS({h%EUdvd`JeCqkGHx=k>S8?V?_gcegD_18^GA) z23biCS|e^wH+wey`xpx}^{@8-^~pHo3uvj&oG&o{>(zfg1T<(jwIBOkHQHKeF(4|i zlk@B79TH-DSLgk|_R1e#+)sJU=opL!G0mjaKt2V_U%`z+BjhsA9p0Y>hy{&5Cr8Es zJ_Jvr9U{gnJ>w`xY@=I%zN9#UUGna9`5g6g==oNEn4=WZ z4adLFURMwavfiPX{dT|oGZKDVHQtL#9CDYXtEjo=5dD-9Rte*K_rG`h4aMJVIFM}2 zZT;;vdhn)iS`6ni??y2u#8&h5-+9a5YfFs~{NXfLB&6yk@GVIGL8Pfq?elt(`71on z0>{wb%k&I6G+$o~p@L4pGSA=74H~+{Z)Q5Ri_3z8?e_zP^!d-Zu_k{=E_x}CE z{>O!`t@!s=6WhEE`saxMzx#`dlU&Y6iOcPtjXW+VTQTi1O0!VDyiNzzz^!x+rRQ5u z5Bw9m+9bou8VR^OzHaNs$PIKn%!p5D zTtL0JQ8i^xmlU_M+PuG9A4M(0n+-$hT@4WVHaQ$=AE(juBOVz#JJ7a_TZzTK45a(ZOySts z)LTsJn)h?Ft~Zgh_w%hQkIPw`G3Oh4AivAWAF_2K57K_2knz=((z!B`&W^luQy-?0 z+oRV(3~%TlA_4mq0zQ|UfNYlS+O)G8a0rHnC-`Q&QK0OSqKD&6lA;@D>4RouHPuqF z-0_;yndB=eOT{SI@p{Lz(4m}ijZ5!Kv%~Dgb+dmdK#CCC8-mo_K)~Hh z2`%ko7lM@z%Z)$XxidA6 zYWKGs5%i@`*l+ueASkH3F6Wc!G3%u^t_SLAn(+viQ=TFJ8j|UIMS+((`}~Ik!G-5I zpUMf+nC8ZH?+Jn?$pTJ`G}GtEQBE%uXk0`l#^0CjRNp~-PQORaVgwKuPbr_}1)kfq zYVShe>CXn7k0aN0sl<3K#B}j_XWJj|S`|C__xJ6yy^gZn&w^@o9kmhr@>8VtkEhCF zGWcAx`uC+4Dokw~J#N!$`LC5aytYbA2~Pc5Zcn!N#(>=Dz8BN8W_IW>?6HCDXjh;V zYoEq!Y=<*lG!U z6TahiaEcUV{uOH7DGS~p4+iPYKC7&9Wdf*)vf7$_-E6vF(9?Mbmv72hXR-_1`P~v~ z@7`BFobYj!-_>E&Tq2_GO zlREqUX~eyoNi0#}1SE3fkbFAw|72S-sSJR9-`&sa zvd{SIFnH17}(^#SyY+YOYA`%~X2^{&-Hktar<%@=nZh(@;$ zNuuaWF`D%6SRgQfUq)-%Ec~7fU4)iIu#A5gCn!650+CJ?Hfts#dBUL+>#iYP8tg zf#)pi?4*NXqt7c$I+yG3)f#CE##NP*eS*6Q$~NCkH%xv(&{aK+9k%_qhY-&R7L2L$&vR z-#7L5{ueqCp{rr|~-@$Lvz2)ak zw5qkXL&|f;jddR%1%9>Gu&7$0u)|vMoRIqZkVb2F21wtI(|2nhXxpvrwK9bmZoS?l zc{^OeU03yMj^F|?bZg7=KXhmFm}XIxw-8ht4g@v#m_zoQsnu!O+MdtV#!6?g{K48s zbJvNw0y-eB&-ypx6!`AU=6?Glaqnx$HPrg8)&Gh9yoaIb5MACty=ARq+0cWj*Ba)b zUIu#`STnX&u{zR@HEZ0Z~by~x)(4CCIOuibZ4d*Ztwt<~IBZ)=Q> z!TtZ;^6!bo;GVD4e$Edoal&6LyP8gJotKS)@pw+SxS!1t)M_*k*Q!Q`+uF?`poMkZ zzmQ6$D9l>z^{TiWzTc)><{Y`?aGD7y1pu1mGC0;x z4x8@7p3YX*KLLaB7@{OY(-~$mM)gPy+zx;M?G~$8r7k~rUoSUz0+@&FgCW-kOu8ix zxx)*7mDLfb#3CaUx+zIGo)OXLlW7*nWbFxP81h-rcLSLNUOc{g^fte3h|wIIjgmy@ z>s)U44nz8Q7ye0RSpo(*SadjoazXBo%RbD&4a5}}#5SA5*2q<2c{OS;x!;n@-nWc; zou@8Z)H5;jztr{VwT@6INZ94perr6QAvcN|lzbpn^*NzCw^0pD3k<0o^f z!{ln4q8`a)az{MwX7|iNrgh#r>I*RWu|(eNaa6rq8r_MUU-a$y_}M9R4DpD59mLc=pn`*urF@6-T73T@`Bq< zlTZh6dRdl_N*d{*s`b`zX6f6I8X3wzP(@OdF#+LeSi*B}_d;BDY}j{2rQkf`ag%H! zkClbkgeUT63J>j2Lu7BWhrt-T?VKPKe3hwS^X2j@+F;Pc8g`+@x3l^PfV5WK&0}`uGP$-Vv>ILhEPrQ~=PU4+ zJEqS!YYl@ATdls~Cf+`)a-YFd(516vyF2Ox1L27^Fu0xOV)K=XyeHpe-_KSHeu13{N64y*td9M#UBG^@VGMy z5odr4C0*nB?@~kuVNPbv-!PfNpysF9cMsGow%pNHfC3?0%?;=7;`dZ$>F?84T+Sn! zwOb=AI05cslY-sCW$P6wgxE$uT76)NDcHtS+(u~iAOl_bZ8nP);pwp-yU7bw@~UCx zpv+96@y~~pd#t9W(<$f0l0l;aRx5?s6R^JdviX7IzXXuF$5N@JqZbxexJz4};$8;0 z<1eCSJgq+MnE?7B+Ha{&@*5R$qzP=9$drZ^JdB1jdoTm`gHr3e$*K*+bf9+h-avDJWg6| z)@AFYK@9%k)LeP)I$1(8X~*!gN@llt46%TGrOr(;A|Ogg+9V>u3JSHF%+z#$ppNz$ zPcEKa8-lizM)5sFmi@S}&{osp>SFwC*-Rs9zzNqKF|JdI(d&Mn{P6nC)s zeWLh#R~NOKON%KMDnxviQ~%4S*}Qugo)E{pB?-!Kx7D(@&V!lkmiN7sVLOu;1DB*` zKNgSceTsK|T+D#QyevR2$#B#@CNXaSe-NQ~fG2Xc&tezSRx+8ZWipAZX|mGaeOqN|=E)bns9b3Pk8u&`I-@tf}#=9q1X?LZ8U+F9T(07M5U1G7_k~lQWu2QZm zES7=0XRPb9v=vem$%I-dFCaBoyZ0@?QY1KWwZeX{(PD95cQ#2U`ihCIGDPv)RBz%@snQyL8FjnkIf0m=F&X2+9zvR!HP83GX|-AZ_4F@dRwr4+rzkV#w9$Qs z>iF6+TiCDVlxbKVH^X1AC8zf)wwO=xgNmOd}`;Ovh?{$8H)c38;w-1|Ote!Jw@aSs(d}-ZFaBS&L}0ADGEa6k;!3sQJ-R4we2TWoneOqVBnUOK z*S5r3p=obLwvuhe#7j+(brUJV&m-Rh#ZtMV^^jQTim#S9>CaUhs9sc_iEt zUC>TX!Ea7@mxB&yg(7jdtQ*S}dfPF`O2Uwnic0!%>DkSQ*cTySFoPJL zZjWb-&KC)s3#HbGoWWArjZr%f(YQ8+Xn^W3uw{Fv9XNuwq~&012b~3s7jrzrU|d6) zr3$}%Z1qn_IF`exQ@@XK4;yE-W`iUXQjUM3cW>(W1nrppZJSvAg zK2ymMkoLBVouSzHx~1NQo3dFv!!bDPRSBQMStmDdo{acxI%BA<)PAU}5PV|q6oiK5mC$iZY zAkAW7kW84ykI8qaG6bUjR|_@aobwD8iM~J)h>^z;oGn$yET$x}+W-N<=ic&?;*n)V zgO?954qQ+aqI6<8yUoM_GuD1l>2@G8e77Qc>nOsKjO%SXb!qozp1=NCd|XdD4SPth zI)Rop0pI(r)=7?xf(DqrfI@5RTgt>frnTGbOkJ_9b~M(*`y=R31^;!Qdczo&PweTG zPUESx`aR!^;Rk;WhsMPPbBq~J`Raek{&7SeOJE))Nrw%WdfT(hqp9)go=SaqvE(-w zwf4J=$?w1f6{gVi9-j<-w&zi4waHsu`Ng0zHoMh9#L2+T^hmIlBA#Xle5>2Ci54^* zy6^i&+l;{k8rFF?%CSh{6SaRYvUg84aD5Nj>oWJ*W?(9bqSE88$gJDYkvVZpP_`~o zdMs7qC;lm~_rOo!_9>a#fcgo=-;oI=(&;M~A$MVo{9<|(-SSv$Q2o6<-Vkl;)H`21 z9nRVFf<0-G>&Te_PA0Q-{VoHxTg~Id>LS!aknWwb&JKZNWP0__4f`!8*Eap2r z&r5$nYF++tPvP*Z=VQ{mY^-!5!3#ygms^zKx~aQFcvDL`6eb8&q4i{t)Pd<`E?2E) zDTrzOO)!tJRIBo;(=NXQ1ipbGszQiPoX~3+NV#~dd(at;*H2l-)C}mlL)V?Lg)v#` zxFxAG=Ajv+gq<_d5xzCboG(Pdw6x7uhZoTUwgf%$06U7K?T+?Q3=`mmu_SNcw{Qd1 z;%#(cIG|J#u!cNG)5)vEAt~ZVRyE-Al&0f3>)m;t%lt9kO8Z74@rFC%ArMkO@TYDW&_>QlRJ?FBcww?;?4vm%lQIRxRbo*)cV2IoCaYo_B-Y~&k826d!L?#NBq8upm~ufK&jK((eAzO5Bl zegvE{;_pENvSXBF90m4dG>SMu=nuXshIq+RTL-tuL7z7&(x)Hd)H9gCjB@g>{rpZd zr`TVJ9xy1-=U+bWR}MrejMgN1QpR|?f0ZK~;!;58-4jY#g{9>{+i)}*>rZY{W_}8ccMsgEa0}(bqJ#=ezI?#r5tseMQIERr! z=!yL!;q12_n{rHl${RCmzwjphUT8iK9+pnaFjQY|x5Mj#C7cqx6u*Ol zZx7}9R9Q^LMO*^k69c*3uU(=s@S-CIknRHID*dA+dy^$WkV6kSJ&q(*2NiPZjsE~$ zG-MyR@VPa|{Ix8+nBOA?l+$^=~Oc8tS zR0#UwSf9~O6)FgkS8KQN1+6NJy9^FR4ldR^Ao(y}Qe$t~qHVV;J9VeT;vJEQ^v%_A z3{=d@Chd;#y?G8Cjo&ngzpZKfowHeKZaC-WSTdi@G>#k24~1XnU1S-Zb3CgG$Ow+b zVX43CcNd9wuwVeTA>ocJHm!+3Z39d3=(q8h)))}xVH54oNJOOkl5?aaj7!k zNTJAn2X-sU*kK4FV?$APkb_L@0w3gXZxnJFG$O(Z`IwCP)HGDS2BqJhBn4{?M%tep z6lPNzSvmV^++a~DROBQ4$bE@lLhnQiL4e-`AHpz+d7&U74u@RTP7@;Sf2$>nIVs7K zKg1)fgPwiN?$iqe_CfXtL@ZhlbdRUAlli~t$t4sogd-az9HB2l4UPy*k$#&UBv-mg z*oGOH2hO89cUxhGEhzSrFtG_z! z?6O(RaDjY?#4stDQuw+2!#)EIW&8t~D9`(3Ao4=pON^BKnvJ9b^gdh%f8_IcG)11; z$-CW2dK=ke-U$h^wp5hxvAB`?3^f!n#3Fv#$fR+ls%?OYSyCqY33Wwsbk~Wt%ky*2 zDFHNiq?ZUsYt~6FW_)ArjwA;!B{D-cf*pmt6(bbRUSlaKyT%fK2}-HXo$S5p4Dv(G zV(lFMV0I7{z+LqrBu=7}-PmKh6wY|1{lyN#h!1L19rn*jfqYG5`nXiCWU~8iWs_+s zN)y>D2YVDsE+)0DnesuF69$6!VQE+CSCIMJsy_uN5Snu$p!`hjcJ**NSK6PTsEIB6 z#!?`*q8$5hV>8l)_Cb@Uoj?bVhZ>VRq4=aM;~R}ZA1oRZ`3;N@+%S#L3urTZB{p=6V~Cc9r!0gv2(cumEC|l>9yXdF zG)-DOgOnyE*)RCyd>tUwuonu7==fTI{8$2%6YU?Ndsl?zc)7z!jx6|M) zpk(z0Y`aIJ-+4}*u=^kyhk6D4tP8X$wb=jmqj5Sj=Ws06CJ7{VeVlD)A-DuMF*+}cj!o>#r~vU!<^Y$$4IltoPL_v`e@ zT=P)jMP5OnJ)$PbBOO+`PKL9(C1Lvqj{@1XCX6R&m_i_+I$I)Q$Rm;rBHiI}iH#_o zZaEbl&aMy!>4cgY?1!#kRHF%<;b?QGm0}GgoahMo9ZM<96x1Mtr)+&KFA&6UWEV0K zv*)hon30qht%TUR)ZkuchYSIYK+g7D2#=JBaz-eqe~&k7cn$g4qxUEJEN#8f)HM|5 zs10puz7EcPutjFCf8!~&a6w6KZXt|BPIKYdliUd*H}DP>X|_`|E-GM-7JIij)H?!= zDGla~6DUD9zoJl|VC$w?%aolz?Mkf<5f(lemX)aeU;sZn;vT5aZ0-%ok>%ph{#R|5 z;vj!k0DX<*M56iQXQ^zu+A1ew@GUK_L@mV*h*0HvlUb7jR_+Wq;VlmhP4Z2Y3{SXV z2CFoNc)QzRSiTJ{Y)8L`U4#ll2QV9JXHw5luMpAx9ZulKK%EAh^?GNqU}wpS1YE$v zej#BcRJJO6HdP~P5+XvtP{HUcQSFMF;3fBh-oY(Y^SwA!d+S9hb~u?%HOcAmiul>r zdqeItni`>bBoba=?G2fCGhCT9>R=__JBcCPTXW=E?qeHDw&$n>Ar2u$Uh!12w8mxw z8wes+9@XslWBzP>E^k++R_V?cnWyLvsy*#>nphEd76b8t1_mlqlgX@Md>*qY91Oc~ zME)c{Q~KHq@3{m2Qx! z(8|AH)MGmMUApi1UTkbR2F+;@pOi~~WHQnmLdqk6W;TGHaI?k{DU|~{0o6ds7o&EV zc{FI!bW;86u$HKBwk#(AOCC!Y{~__j4GEaa0P-*HdDW zh?Lqolc|Zy$3D3{mLXNVa+yqYh~N;wytg73_;9;3sRXU z7TCK>T%f$^yX9N$wWVg))ze-;p#&?`J`8-n);~0(#kB;JKfy=Zy3qdygF@1srYjA3 zEW7vx8<;e8Cj9kxP`N~gPTt9F^)_)Q3@VXtL1k~<9H+cQLD5W@>Jy|tJppX)B%fWo zgfStppS7R5_<69w*fw|V@bkSRH43Azbg9HZFN}|Q4{|EBIVuOK!-N(Gp@20>wIsp7 zeJ&5an?{Sc>uf*|7`(w#CX^5)VD=@Suxw;@h?F!%14z|s`r(? zG}T?n4|o-A%H#-nwQ;b;bA9_^nN|&+?gwBzS7EVt(BFau=e)@J-l75z6-Uk+k#$1D9;ebL4;JzryQLQ zCkTGg?ywd1M_!%Bk~~a>GyB5bd3=}H@@BsVt*0!z$Fo&h+uuiOUAUYn3J?Q_VEE29 zXQ2Hged=h@jj!RwX)1bOiT6?)8u@y>S6W{M@xDZ-=7hWL=}cJZe@X`%@I$-=VqAME zw89)mH^fGeoYKF7gHG@H%HZl*ES0Gzk`{RHJp6l={6lAPaFYvpxE}c)>lAcH?3M^t zuEb)q4A3A$7U2)0m#B)oMcCPFH*gCP0dQ~vMQR+QlB+N=6eGx33H=ZE0HRii$Yy@x z&@(0xQ0wJt!}x)Wl6X*YPW?QUu84?6od6mv7vU2=Irf~$>l8Ay>Lw8J=$+gf5^9yf zpttpa7Wyw=|Jq1F&=?Qy;QmST`$lM4cx*Num{;~zi5ML>q0n7P5MIpvc~X9tY@P-n zo6HiOA8NK}=3`bk9G)T-yqd)`QD-*m7Msmy17=W_GKefZxJoWUOF+%lcOPQS*Q=M|8EP#=Nm{Ny|q&ZwY@*2YPYo%uM3WkS(vP71^?wAk%y;nN_UraeB z5t?*RmHMt<*$@hX@7H>{O{3ezTtDwZU7u1_Z}5X96WQv}_32G_QwnW+UUdSM9!TD# zh)^Nv)TY!_?zliZCz6F|G+Lr5{{jRTk&)1}4P8Bug(nS}5N|%3!fBx@iQP|rDxt~* zdWnmjAs}?QN(BtP3Z#)@E|>G0PA=uG2X8C)og8?8Uz0xeiEc6$l6jVUpFI!0#53*m=0t{Vp;uz@JNUC|b4XYrk6d__ z{)5B&C~9fYYVo#hz=60w$#2VI7#z&fe?cG1-(|Jj834!V=o5578s5R0JwLtEbNGxk z=%%?K6>acb961?}X_tRi@DBmeV-&h%wOVcvJ>Yh~Y4rs5!=imehRi);GwW)c$c(UP zmdI^j!nM0@B9JdJYAMix!sMZI!3OOb?08s6+V;cBG{c1kAn`o#Fy&g}4s@3(v2Re> z^SIySpjb)Ma@{hW;vx?zZ8lC~tKha>&_um^1 zM>2`qH7y}2&12eDO>jvhBm&pzAVuquMb4Z*-u>A@0n{F(mI;O3Oj%(H3^!cv7PnmP zmxh0QJ$ml!5O7dtATy#1hkX3?sY2Z+G({$0a3o!BH`e$6_-Dg-DS0*P-a;dv={vOu`&K+M#(Uj$p)Zz(ktpC1_PlcVW_S&qG z_kvyJYPBuSPJP)yso-o^qv>R)cryY@X8ctMMR9pOHq7}LtyT+brug?y#k&tFd3+v| zcHVN+=o1Xz+CsOLKdWQ0ex@NuE7)HcN`7JM8W$V<@xoG z&nRS3mTe0eOkZ(gTX7_&E9p(!pR86LHcs_P3n2&bL_Z8m>Jd=4L(q6vCK9-Cq<}nR zDJyS&Cq!(v=F*4uxu9l~X^ZsUarNDw)qp1~XtLm%CTj| zpd|HJS0c~OPdu?dDik=cxSj=L33$-NMFkdl?DZ4!blH7+DO)@oj{|Wze1vXcEL_UI zLMj~{@CPD&0$6M^0wZMRshCsdIl_zhp9E=C$-d;O5rLu4&_=v)u+5T_h68c$0Nw|t z1pV)o%Q`WQBOPfjSZ?mWL;fnc&eRla5oiGJ*N%`hO_IM^Sb337FD>`blJH~nw-|-| z-F%eSN0+EYqJhL$Q>@M5tqo@2vq&BH3{iUbP{@K<_eL*89(kBZ(KTbIrae&2x}f)C ziGvuNMKPjU;L~rgZUIEq(G-EKJPhmutuz2w*}5V)hhjb~>N$+#oq?_7i9rE9>#2!b;Vf);AOUG1{aH` z4Tva|V5ZQRbg6PfHsoXI)rgn~>T)?>_*EwOo4_;)Lt^uM_v*ra;0;L%6o;-JBWimI zOW&YLiDPlMIXD9QA=p*YAe3p=RfLQP2L`Vn;w}-3%5A=rV#c<~5m567M*T;bJ$Z z-=7bETKxFI(km$aoNOr94>a9U|cf7eYwI14Ud(cj)6{ESQp{qwXiQ`fg4KxaX%jb6W;% ze4To7+D~E^9wkEuF~@Wk8i=RKiihmBoupDE|L~N;^PszrWt8#VXZ9@dE)W+Xs~uJJ zX;N}dvx*$HHjM%h@Q%(grBh@-LAo8s(kOkEEkO(?KExdG z{Mb$!CVxm!zk-6~FXc12NZ1e939OPImO$|vKycvSZ^(rk;A%gAt!%l-=#}Z^y!UZK zGW4Ab7{%{Mn5^5hM!@4U!9lC%$c=n|`CBgI>2dNWaMd=~ceob*KknIOi@sdY>Aa=A z_h!g4qzH&6(0P+(?>(vOzpC3)c(r)_C`C3uQjTIORN-4F2R5BOqI)C6;j`HoI3q3W zIvOSYnohd_1~<%w_mtq19NZt*r5<;6nLw|sr&~ikIO-$x=Y)9wWyW{rzmW0oF>SpJ zSJT@xDq|TTmN6~yObC(oUU&b z_(dum@2Mi?Z1Hwdns$Cma?mHcNsHJ(sWpml{e_-Tj{sBm)qKuu(}Q*y9fa5Tg%1B1 z+ir&hKu)4wL&qXDmuBn=itpYlQVa@aSO?;9csdflgNXZ(iM}rjq`uwJ?Us69`fzSw z+X=yaLXLtAxGqKcgq+kgt|l)v`97U%>TdPN{LRBha1>kf5H(+r{%8nxZok$(_kFt~ z1ApYQ{n4H^c!*JIk1G(@>Z2z@Q8?Su zy>))hn)x)i^KJTg{V#O64MkYIb{(<$&D4PY>}Tuf&pF1h%(lNuU54xK(6Qmg3Fy?D zFrYSwlK?#43hx1*(JKIp#~I)fLiV4D{bpe@o|r3RYEWWBypI4DOOEM}26J9Wk%pdw z7E(FV>y6^opN!i-VS887{NnZITE3Uc@-|Qa(zzF2tQJ5ITQ~iN_q*;*PlosX@%j`P z1a$9j`^&QFdUeHi;gc{a8`DI$?bR{7ak~A#1l2Lp-p6ZmkfAc*^YM3%d7{M&NgdHV_{=y2ch{mxm{i6(Hg)2|zO zI373z{%5!;L;JF;u!a&>TP>GGm|p%YH^%IrO|v9fcmI)SK>BUdJY}G+8Z|T&>MIzk&dKvokd)7!Cp=>bNk@XCaNJ3ulo&VooX1Qr-=u$XjXdVNCfY!4m zV!u%L?FQl6;rMXu2~LLr;&ED4*HimYqISO0XETHR*`4L01X=!B)Kttd_bddBJ!$C4 zPK>AA>~~b5ejOkL;5SSx?86PmbBee;E>NbBTi^Fyy{uIfk(gOop#nlLWlSYzp&Vbm z8BeLX)~=im9a*MBi-G>Q_1=uICyxJ!qv=DixWV#$Mq>SJWAJ7o_*#92@11wDgv^H> z^|qeGfJD=Y--qMplUmKBR=%|p!nnTCMGii!Y$n(Af&oW|OYw{;WpVP#A7csL3pkrBOZ9BtF zc;$@ zoyvykx^;C|uROC->D!&j$KrQPdIz=7Ze6TW=n7Z%F=?&1PZaX+3WS06}K?^1t6UJtLEX4cROhv%%~&pN~PJ@jvb3iF6-vJbW`l*hMp_tf6JR{3&+U*-)6DgqfS{0 zrc?LnCHg5aIsUxrV2=JkC%e8Lg&)N|Uw5N|+t01qg}z6qFyUUmo(*~>pZsKf2dTP% z6w1!BUwxSFELAtEDx_Q~eRbon{2QE;zaf#yraGVJQJAz=yUrUlJ0-8M7-!wN+B(G$ zPcFZF?Vcy;xwn86`}+C0^T~8ma+$WpR^B!Eo>u>LLk=fpH`!X!WY|DXtgtFU}|vX zq6410pJu#o%*KN{9xx(q@m*c5mR(AvQ(=0x98vyF(f6{fcMJFs`gS(|2Y1%!z%dkw zG?lzKwW?jFA!b((QuoPI(5`yy`B7WH#mvgq2L3#+0d9GY(*}Zf)1R$1+UGkWZh1dv zND(Zye*3wpuQ%QZ-sM-sm4Y99);xXqaB1=s)P=aumEmz2=D69e{J9uUB2(AR-aKE+ zY2-V3Vn2r4s99WJ)Y4VHc)TQ&PVac$`TlzW^ci()yWf6b^IA@*Pvss-5+bu^&bVzN%tf_;_fiS1J9F3p>MFASYIc7FNu{*)QaEylxr zom=|S<@WI=IDRAxP8?xm*>Y=ac#G3{<9hEq^2qmh>L~ODbV;-b8G0?ds`z?(BZOmk_ri=0sWb zW%*}37{rFh;W4M$_ss_>HYd+->%^hmCJjlcQW0Pc>z_!QIEa%Tdi}o5g}GFVH)a&A;1Xy*N=w5{h#8sVlnQYPW6XOnD~$ z#wIp(=0@f8CVUQ$3zbQ4Z@0+%_YKIg$l4#O{Nq|s=e+tQ9N9^_@R3nNDZ_$3U$7(W z&+XvSKTx*~gr3Qqtv8r6CPz!ei7xvQWzr}gKyq()e($M^nvck;5_H>QvkymOIMyuB z0PTWt#rv@Hl+@p94y?n}8R`W7Ogp7=sS798Kr(Ub^H~+%_Mht~AMR6?&hTxYzFlzK zC{u#h;|28(2^vDniNoo_3rFw_M;p~UO`)l6DpP?-;kC+%)6aEAz*{YiPmV&F$S?8uzPj{il znS#a8`h>xls)N?mFzg%MIz?fUOd?+{kw3GWP8>|7QQX4%ADkW&+AsO)Z)s5Y7oW#r z&h>0b6^u0zLY$S|W6c4Tax$&PVU~}5tXKG~fKr@{hcxHpQ(=3f%!4VA5KWK)_<0J+ z@HJa*h~Fdu3y=Wz{p0Bz47If@l}d4uzc|AG`^#{k2jQ>2pF--0!n}|~Dob1jNRJ6x zBWF=;{c~!99X%-CJ3tG}zJbvRe!MUp;Wv&yZWW|odBep4d(8&H8Lh?BCKC(?1}HnL zY&kMxW*2}r|eO@Z>(_A(&iR226 zhHlu&lyTRKh3%Eof&^!S#aVuPMo|z`J}5{3TFIS4XLU?{S21i3su35!9swICv+0z@ zzBc&DKYc$(Ue+(*+JHiHn7YJb{gz6=+l=>Z*L$T}i;f;z=$aMIVGv{V!c1ffL!$a< zw;{yOL*oWG9JomWe;sqz=-(FpbI-b|R%#UnAjT#o9W{x8Q2j%bKpN?W#y6a#I|gX% zHd}0~eRhqi)@TivN@Xs*B{%TezM0pijQHJ`jO%#EYAzrNK?_Fw7(Sb%KJk-s4!`Gu z!2#6Ji5eYM%&$P)7*9*vL1+A0CU7t&4N<622zdKlttSTh)LZ$i_05#mjz|toBAY=N zX#IzaxS7&_PkELD_b27=m~vn-PCX;C7W?-Oi316dfEB%5+IH9T+Qwf|pc(R?)G4JL zi88!p43?L`$PWw~|M39zfsv=aH;DE?^9g$mEqdO9rN>4TD3nR%O7$?ZkEXHTY~2Rt zl4Ro&ZJZQRoj(cu7kuBhjSjidVwmEJ?$-hWl_2~bSgqACXVY*wrC}z)IlFond*-?h zjK}(c6^+0&NrxTpTgHGLf8JLxDB`yk2?c!EoYMFTrt261P}!8*d?O% zRfK$OH8_`#voi40_2T>2<^d-N>HpV*}Q+1B~4W^6DvhpbptYcZS>;bI%p5nr-omxg+FG>+Qo*Pb#WueXUfA}F;*6?(&XShF$porIt(l=TFM>!Yz z5;I7ny<$V2JnGA%7j7)qI>}I(?{(t2=*SQ!u|1+edfhI1$rdK7ij9G#xAfF73fY-j zr3U@pIk2Z~NRTJSt{P6k#Foe^TFS9_N=;V$9qCX{B+MY?Q2Vslb3B=vsF%9!dIK~e zr_RnRI#MXy>kg{Bjr-uk%GSw%W*KT}8%0 zqefeU@o0l2+O(*0N7WIL26>&3Ul*IlkE!T4m+P(h?h}tN0uKcl6%0xlyi3%0mJoG_ z+f^K6G3^a({Cy=Rm;yAaByPBL?#E0AYOoaO2A5YS&(^lCt9zw_0E%QrFp{&ahMt?K zlL!Q4Mad{bq)-Nx6)AzeaXH%l7S#!&kfcq4se-r9Wm4SuuJQZ(zs>A_W;|5!uQxX{ z*x`6;*dNWvEHf!1@ zvQbwvR7T*ihiz6fjN&M|i;JkARl8PIlN)1%;zQ%pea4e+bx-B+_E_nx(`drT5(`71 zQ9GBdSKBe7L;`G8ifU7DdpDnM=BNFvs1Lz|Sp!q_Le^HUH@BE%twNaL3hi(6*ffnN z3w}KwNY|#{96D4=q5occFZc+*SaG^sv7PgfupBw>UyLEv{%2Dwe~W)ovq1)CRm<~x zDbS@m?s{{4t#fo+xntoRS2tu+jG4>J<+AcJ$8#y7Hn5-R>8Yw%OsknP9qXMKI#W5# z4rys1^G7`GELK=(r~Z5@mC6VxCYYmET{nU9$)}F3UdHc=kYAER(hN;!%-iN0Z0%W#PC#nzb^S3pe{GvNfEPj|9>U z%<&~J1OJsp*kuvSx!w8WO80oVG2h;pGd(g#x-TcCqw%o_cZbRRI3d3rWcocp0L&qX zrWkXibpNx}*5>>tE<+)k)m+>5!on0BODop%mUUOH5Q>*6)l7~;gk6#jvN7irfd3UQ zlSOn~+1Lmz7lC;?p1VoB4vA2ZBieM!h((z58^`Z$JT<|XzQE$(y2O%~Bpi=w$Kd`k z8H@yuxpvS3n1$T#oHkWB3Z&$`9);5B^9zpFWG%B^zBi!(` z|ALK>fbtFKjv(QTni|UV*tF%;2_Bh7gXb=(xIbmmi`HHWdQWgP-)sg4`wwNS_3!Jg zHLD4qYQWrpJi~2x^cDc}Vvwejsf<4{JrlTGtwep;Ak#Hd2+DCk`DC4Z!*g7!@BaSq za-3_z0NFRniD@!LW3k>CdOKUucGhr{)E`#}@s-7fbR`=t!2WIClwL<2^d>s^H}kN%P@h@c@2c&t5a*8Kw}T_wYaKK(Xr+caG)2gBg$ z?8hE}kN!bIBs~KDZ}UTIJApoNoq6KWX^SWV{=lP4H)l%JmVk&XqNe%fv3kuOuNvHt z(rLlJw}*VMLnl09Fd_Xv^v`xmo335PXLFe0A zLI|*Nk&Hok(aQA?v{Aaak9Ek5IHY}oybh5lv{Fd#rpv(6=+#F~1PYQhiP-1zt&I{w z4uTm28nKabLota`04W7AVn>5kbDORgJk_(GjV|Us|1v!dphJ^?2~q5q4n!+UxIFY5NIIuija}0Tg}ff(oYYs6t!-lJrz&(`N1r|!HcEZP*Nh)J%UtR z@L_%g(w{`{<1P50B^r&fjfIX%wS4|{m?`rs!j-fc8*w8lmHN1Ws}yj^tJbzE)^imG zN3d_TTw^cPr5x_&Uu7JJt678lg{#nIi3xgBa-q~=B+3lIcn@&-nVkJa!X&(b9r6PP z3L+Ykw2z$GS2mjvxNH)FDunW^`7mT;j}e;u4F{AtgatR9FX&&+(WvAVV8)=!~4WjdpJ*3^;Z;=3uG| zph!{*{RlRaDl_0gLJm7soV5h5$j<5L(_)qOgh)RlnmzgDfgwdhm3vu=+lWKxTC3Yt z_K888W%6aYKJ2Wp0_Hhx4i%2#N}8I1ruw4wd;dAKCOg9H2KyWBAV?K7rG} zgrqgpghg=vl~cg%5Y_!t^0)%A6_N({VT{*M6v?sPaZY@DSOg}5N{sUe-;5NT^JCfE z9VlHNkfp09k^Rjh>JhdrJoJq*9jj1uW1HHzET938&oou^c{u7@0hdgaHW2nDd=fTZ zvB<7OaMFL4NJ1lBB3N8@k}}jzw2YgHtsSz3(S>}FIzfodO+!OmDx_i1Ybi#cK` zU{W8DljsM#QitW2)%FPHJBDj?BP8u19cive}YIS@s3X|Sygw#u*0w@e`5&GA5 z2s*Ll2ys)teCGE`r<2Eq2*a?Sb(jZ9+bS6#BjR&S3ANP4U|GQ>u@DM%1987_l$BRL zD&H#g8b{7X^R^GK0ar^h8>cZ))AHXmauLshbUZOIBREK4B=s)AZ$&XhO9$&WE2YJr zWbJwVBP~$b?0UY#4FY+(ij`Dkad^LdPt+aR?6&4P z_85v3Aqqz8AO`3GI@ zQ!ESPqdn}OEAl)t7z89dDGOW3Lps^1uR#Z*g`<>|O9hY9PazKYGN^V0iREc1$(Ajj z^R^R1z*dvoV@|KnDG1^f6khVsXh*JrrH-0bP=>zXe!vzrn`@|R_(f2GykUME z7VhE<329-O~t%RAjei~dziGb z1L8MFHB3dkt~}NR+7c{!~_Fg!v?~b zsS2t!o3tu_PB8gAXxFd?BVy;~75BGvLofwCvxV!Lh{7Y}$vq@OJ^#3)T7lVUd213z zK2_i!_%n{*Mcyf*_4_EsfODpop+bBi-HM z(g=c-yR>vjhs4s|OG$@xNJ)ouD4qVUe!suxJkR}a&beo1?tEtMnS1B`eto*uZW%~u z4W;jod0|?5b$`^XD}%osO?6b-IsjbfYGxgNc$>O?nfT5YIyz{ocOOW-LFnpU(hXG+ zoniBL1dvDi^79o0+|Pc6`)|g3&Od**XL5N5_-se6SoP~lp4x)aStjX8u4LVkV+NnI zb!;ywp!iS|#m~5BvrMtC6M$q%MZN9sa|AyT_g;Pw3sL1~;H3lv-!yNaJ zNl`q$0PkU^zMkyGX|_~?xZX;cOAp-}SS%3@?8@mG_=k=IAT6GM#*J6~9Sc?EYt|b{ zosgoTXln+MX*LTxrhJ3Oc-pnas`2^rc!PXn<0&PoLv0wVR={yi$F#01;W`!amBv;V zQ0-MtP>+s{4W!oaEdZ!8hacl6xiACcHr|57lt{ z2$&eLnETZk`IIqw6h^sU`2T7r+eq$1UpclT>=+=S@4!Zb*c84kH`43$|20JO6Y3Ts z+QzElt^2&w>~-@EQhs5DJq%uH1p?5?2}bckjt3zHk4FN?@GuiT&^SzW3BU@sR9k{} zn)nkC{2E5(PEpeQ`gn-?nE7>@1<_PqpVbSjZ)-T!oP|_}^@~2nD;MTwW%@wUQja=} zupNrpA+iMg5g!eaic~>+L20?J0GMfX3AOFFI{zs=lIrH8aijtpQ+C$Ik29a#FR8x0 zo6G?nv}WB>H}th(HVgL!c6B0I*7BEfeC#<1O?MA=4#ngN+F%dwN(9(+vjeVblEKO# zyg#n0vn&j_DQ7Pu^YcE;Nz@J<;t&u3D^Fh<5ztQ;k4ykkF%?*zOqM zRC0JINfaDA%~>;i*CMkFB*^qsp5%|$p_DlgiUeh6!D>;MIzWd|4*lhO6tg!1k`x>cVe08>% zIu%+!0JjgBV-(|Y;4@wZcGb;M_g~Mi&|eT(lX}PO8#^aNFG45LS|`eXzbcJ;Va3+t z9FH4tpCIQ)%enYl0ob%aw`g(pXbCk>2HOjIVxx?AirZGXDt_Qy1?}o#NP=GQ*y*0S za?;>R#)pndaRzI|p&Thq)@h=+!W7+M1Z~D$jP(ZrVw2&YXt@_L?-x|6o`+uSek6HD z%?4M++C!hk!_AG-M3ukC(Awe>dw*WL_n4{}T7Ohl?H+RCP9<*;07Aq)|HU>W3x z+l#88$^-VqntJ4v{pl*BM)B z1gqHy&MhP}wqx4BrBy5aJr|_sL_Y3%NbKe3O#6G#9dDm+Xf0-ig2At}5u!CP^Ib2e z+{zyG9GB2hXuhHJwn7*ww?IoMuYYBzdVTd2 zZl&zqJE=Hc*x<5_{cLvf4@sG6Bbc!7((fkI{uEUn=wZl~zGhF4yhV(it*4!e|6SXv zPk0VMwB8tdDi=17w?ld=G|QfwRoN3Z`9|=JP5VG;f^D|sL#a)n2$P=~4ziAQuysA14$7_vlDeK^&q|b^|emwmuMfVY^ zac6M~VFN%Kb%kGhs#dBl6^}RjUE4on0cxyW#f!T~Y?lG@p19CRwiON+8VJ?{Y9vu{ zX5dGUdk66dIdc4s;ZJJ4ADSS*KcO=J(25Uu+)&F>@T+7%vO}GZaOcvi_iY(>>`=_w zGtkWeWn z=sU^INW0_SRmc_12xEAx|Km`Dwn2}VL5B1jfT6vYVA^T;ah6Z^ixUxHGpM~5g)zVj zD&-9DV-q6dD_$pWFUF_~$J?O@sMEdZLw6gm`bdmgn8T@C>MOX_rD3YrL_q}_gyKE8 zn*1vIKDj^i8HqI7opw~AU9a}Gb?FM7{Y1|vFmRoz4oPp+_Pn8itFrb$Xd{=>WI1H3#sB##P*$`+7 zIyY(9ft-4~QxG`_6CZt9GKF6H#c|w&yFf>7i?EZ>!>MD##k`qJO(nVON?JJ$q!yhx134;JQuVL*y8H6B^z6SRCX+ zo13yX%dp6flHu|Z9x;HqVs1Wsf%v6*p;DyN$z%M>Dt{_Bmn6y>_`P>`J8sG42lq~p zZ*=HXF8gr7pJ91%2FTjOSujpl-9EYOuV}yUr*7qCExqrH;4o_!y?LJ0YY;^Ru_B4j zj*@6c_kD4_ehA^nZoZ(sIBP2 zt&E@jRu;!CdI+tN~h#B;FNDz_ZO-tPYY5*nRWFymEw_QX-)FGVMWua4{ggHrv6TKT7#_z2*p8qiSru>BV<^56T~nCJjin!>%IrPcrK z@L%L5&7X!nolcPdsdc#s)RvWJZsa#HY>P=VNdI=N)_-iJGuXfUruc8?8V(46p>tc3 zYDN5~wTtKIltQ<5EUMy{C)HGH_FZsC0E9NW;^KF6`|$Ta57nSVaP*zZAfI}zc;nxm zOw+(~WTH@5am*-;pF|C_u0I-*L@k?5Z-Wh#(x2iw|2mVQjd1nL5I)$MD%^j(JGsND zU)QK>?7Km+CF)MJigAP#wQX@o*K_YU-!vX{0U(Q`whKQE0jkNK#vXEs`yJ)ms&mIL zw^sS@v`bVLEr+Royreh}l>z{GrKLp3V;S`I@-Ip#@5^6XjQbB9daN^1Uq7+yUOKOK zjky<%?MYuuvETO(Y`-lJJ15yXAefiqbQBUZyJVuc-+&-vH8AS0OqLmi87DM zY_6d2Pq^t#C`d3asunig=neoN0rFO3v*&R`>+Mw&aCX_iVQR`HeX{j_>3bRW{s*AB z6!3)7rU;JrDmfp&Sx<=bRjiZ0MRhjoAGJnKj@QUbhwo?m2O)Djz_w<-D>TmVXSS4O zh@y)C?6$mxFCwDoFRE>x^q`o#SHD z07|^i=lu6D%2D1@aR^lN_-MS2dUb@2Ur5OOwue;3&@dvIFK=zZ=eqKDi@$UMkLKRD z^rl>Int5jjzB7eH?)rDiQJ+2#s-Q~{sYnp=vvU?;#Q!PY#=O$eDew;cF3*v4jv?qc z7qTnlkUh2AO&S~p;vEmo?vPyH*l3>~{ZRfaGPw@|g)-j9>LFtajW2kx4+-V4u(qZ* zmlf@aq6||9Y59seqvQ78W1y&W@FW;udZWhLVKP_4rgNh~F6f}cts48@pvgVr^*q@2 zOKU5QB@#O(BO_?R>kM>KM`vqqFVF!eAp00TXqxDzfZrN}cgz(nJ*7nm$Va!p;jL8WjbQ06g=5<7bOG|gIis$ama_Q-6Tl@JK`(~cP zW6hg3k2DeW!1#D#f+zL_k$rubjJ3OQ=%1y$FZ0L5Wjuu4?UsVZtGZbSM}$^`LBN@E zW~JwVR&HJ%o#vcXSJ2B^*&=NNyR=Zd3b8x~WF9g(Z<|HEb%v{VdSzSJLa3c)iqL-tM{jrP5dR z2CQY*p1R8H9q~yiAi_D>*(r9XOQj-vC$w~Y)t%h<3l)r!uRjvyl^|uI-GtiI13N5# z!qB#Wp%Fbl1RY^T`zI<#L`Rq2%cGFeTp+!#4%0#wi zf=GSzZgvR0+0OhF;RZ++m-Z!M!n$ZszrH8Dh1Qrx6H*#0MZ%hf`r!_6`n}MM)#XbYIf$NRCNA zt&GBbSfgzsQvSq(jtt$jSi9Ue`GE)+{D_~6i_4_ND*47?v6(5$NV|>qy#&_Z=YAh~ zZ_~GY{RLp>hZT>(7n;}|4^3snUGx&iVjZ)dt1)u*6oGNHSBljJu7oQt*Rq0&SBu0?&CiNFs`^=%Zp2^5^^N)D$fQnk z4`|;O1IzR`os+^@Ex3EK|Hz3&i)FjmTQ20&9EF;$u5Cu?kzCmKed!=Y1Uy_>o6E2j z5#DZ(%7cI1_WXBIlcT4lj%ZFNc_yY7?^`KKWjimy7xp^36++y)$>1hJOOv#J=iTp^ zHd;R;f$fz08>aHs?nXvws`~n{F6;rf?U)2ru-3S(b<38(zm*c8-{s2)rh9Szes57B zHjn93UF|3K!oXhXPxy{9iM9@!ccY?tI6s)$2j$);&zuAwo-B3nz;|~4zgwbctw83S zYH9(jLu~$_t$iy$xsxDUb$3OUYRYG)GJonBCBkSZkI2sTdB5E(54hx{ Ll%QpjCW!w7Vj^{B literal 0 HcmV?d00001 diff --git a/docs/multisite/img/translations_management_flow.png b/docs/multisite/img/translations_management_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..61a7d0447121b8b589ea4f677a0ea4426a0b0bcb GIT binary patch literal 63076 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

`$l{^X2ID)=5&BQ*skWa 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 Uc-kv3aDbnRf+oC1&MM@;0Hh@#y8r+H literal 0 HcmV?d00001 diff --git a/docs/multisite/translations_management/translations_management_guide.md b/docs/multisite/translations_management/translations_management_guide.md new file mode 100644 index 0000000000..cc17a779ce --- /dev/null +++ b/docs/multisite/translations_management/translations_management_guide.md @@ -0,0 +1,89 @@ +--- +description: Translations management helps managers, developers and localization teams with multilingual content delivery. +edition: lts-update +month_change: true +--- + +# Translations management product guide + +## What is Translations management + +Content managers, translators and proofreaders who work with multilingual content in [[= product_name =]] often face a common set of challenges: + +- context is lost when the source text isn't visible alongside the translation +- translation of long and complex content items is time consuming +- quality assurance is slow and error-prone without a direct comparison view +- switching between tools or tabs to cross-reference languages disrupts focus and slows down publishing + +Translations management package addresses these pain points through a side-by-side view, machine translation and ability to invite reviewers to collaborate on content item or product translation. + +The package integrates with the [AI Actions framework](ai_actions.md) to support machine translation providers such as Google Translate and DeepL, and AI powered translation services like OpenAI, Anthropic, and Google Gemini. + +Administrators can manage providers and configure default provider-to-language-pair mappings directly in [[= product_name =]]'s user interface, while editors can trigger machine translation from the content editing interface. + +!!! note + + Translations management is a standalone set of features. + Although some views are similar to those delivered by the [Automated translations](automated_translations.md) opt-in package, Translations management does not require the `ibexa/automated-translation` package to run. + These two packages use different namespaces, service tags, and provider interfaces. + +## Availability + +Translations management is an [LTS Update](editions.md#lts-updates) available in all [[= product_name =]] editions. + +## How it works + +Before the translation flow can happen, an administrator sets up the translation providers and assigns language pairs to them. +Then, when an editor opens a content item and requests a new machine translation, the plugin resolves which provider to use. +It falls back from a language-pair rule to the user's manual selection if necessary. +The plugin then extracts the translatable fields from the source language version of a content item and sends them to the configured provider's API. +The translated strings are written into a target-language draft version of a content item, which opens in a side-by-side view for the editor to review and refine. +The editor can save the result as draft, share it with a reviewer or publish it. + +![Translations management flow](translations_management_flow.png "Translations management flow") + +## Capabilities + +### Translation provider management + +Administrators can manage translation providers and configure [language pair defaults](configure_translations_management.md#manage-language-pairs). +This way they can define which provider handles which language combination. +Editors see the configured default pre-selected when creating a new translation, but can override the selection if needed. + +Translations management supports several built-in translation providers, for example Google Translate, which is accessed through its REST API, or OpenAI, accessed through AI Actions. + +### Side-by-side translation view + +Translations management introduces a [side-by-side translation view]([[= user_doc =]]/content_management/translate_content/#side-by-side-translation-view) that displays the source language read-only next to an editable target language form. +In this view, editors can provide and review translations in context, without having to leave the content editing interface. + +![Side-by-side translation view](managing_translations_sxs_view.png "Side-by-side translation view") + +Editors can: + +- access the side-by-side view when creating a new translation, reviewing an existing one, or editing a draft +- compare source and target content field by field while editing +- copy all content from the source column to the target column with a single action +- provide localized versions of media assets +- use the distraction-free mode for focused editing of individual fields, with AI actions available inline +- choose whether the source column appears on the left or right in user settings + +!!! note "Excluded content types" + + Content types that are editable in Page builder or Form builder are excluded from side-by-side editing. + + Products are editable in the side-by-side view, but product attributes are not translatable. + +### CLI translation + +Translations management package exposes a [console command](configure_translations_management.md#translate-content-items-with-cli) for translating content items from the command line, +useful for batch processing or CI/CD workflows. + +### Extensibility + +Developers can [extend the translations management](extend_translations_management.md) package: + +- create custom translation providers +- add support for custom fields +- add custom content type exclusion rules +- tap into the translation lifecycle with [events](translations_management_events.md) diff --git a/mkdocs.yml b/mkdocs.yml index 6ecfc86c8c..7d32355408 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -105,6 +105,7 @@ nav: - Discounts events: api/event_reference/discounts_events.md - Collaboration events: api/event_reference/collaboration_events.md - Integrated help events: api/event_reference/integrated_help_events.md + - Translations management events: api/event_reference/translations_management_events.md - Other events: api/event_reference/other_events.md - Notification channels: api/notification_channels.md - Administration: @@ -479,6 +480,11 @@ nav: - Language API: multisite/languages/language_api.md - Back office translations: multisite/languages/back_office_translations.md - Automated content translation: multisite/languages/automated_translations.md + - Translations management: + - Translations management: multisite/translations_management/translations_management.md + - Translations management product guide: multisite/translations_management/translations_management_guide.md + - Configure translations management: multisite/translations_management/configure_translations_management.md + - Extend translations management: multisite/translations_management/extend_translations_management.md - Permissions: - Permissions: permissions/permissions.md - Permission overview: permissions/permission_overview.md From 2aec5397af67a7a040310e897e27fbd4bca4a040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 19 Jun 2026 16:40:28 +0200 Subject: [PATCH 2/4] Add events and extensions --- .../config/services.yaml | 31 +++ .../ContentProxyTranslateSubscriber.php | 38 ++++ .../ImageAltTextTransformer.php | 30 +++ .../MyCustomExclusionRule.php | 16 ++ .../MyCustomProvider.php | 45 ++++ .../MyTranslationAddExtension.php | 18 ++ .../translations_management_events.md | 2 +- .../extend_translations_management.md | 194 ++++++++++++++++++ .../translations_management.md | 16 ++ 9 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 code_samples/translations_management/config/services.yaml create mode 100644 code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php create mode 100644 code_samples/translations_management/src/TranslationsManagement/ImageAltTextTransformer.php create mode 100644 code_samples/translations_management/src/TranslationsManagement/MyCustomExclusionRule.php create mode 100644 code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php create mode 100644 code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php create mode 100644 docs/multisite/translations_management/extend_translations_management.md create mode 100644 docs/multisite/translations_management/translations_management.md diff --git a/code_samples/translations_management/config/services.yaml b/code_samples/translations_management/config/services.yaml new file mode 100644 index 0000000000..b198c91ba6 --- /dev/null +++ b/code_samples/translations_management/config/services.yaml @@ -0,0 +1,31 @@ +services: + App\TranslationsManagement\MyCustomProvider: + tags: + - name: 'ibexa.translations_management.auto_translate.provider' + identifier: 'my_custom_provider' + validation_profile: 'ai_generic' + App\TranslationsManagement\MyProviderValidator: + tags: + - name: 'ibexa.translations_management.auto_translate.provider.validator' + profile: 'my_custom_profile' + App\TranslationsManagement\MyTranslationAddExtension: + tags: + - { name: form.type_extension } + App\TranslationsManagement\ImageAltTextTransformer: + tags: + - name: 'ibexa.translations_management.auto_translate.field_value_transformer' + field_type_identifier: 'ibexa_image' + App\TranslationsManagement\MyCustomExclusionRule: + tags: + - { name: 'ibexa.translations_management.side_by_side.exclusion_rule' } + app.translations_management.exclusion_rule.custom_field_types: + class: Ibexa\TranslationsManagement\SideBySide\Service\UnsupportedFieldTypeExclusionRule + arguments: + $excludedFieldTypeIdentifiers: ['custom_blog_post', 'custom_landing_page'] + tags: + - { name: 'ibexa.translations_management.side_by_side.exclusion_rule' } + App\TranslationsManagement\TwigComponent\MyTranslationModalFooter: + tags: + - name: ibexa.twig.component + group: 'admin-ui-content-translation-modal-footer' + priority: 10 diff --git a/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php b/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php new file mode 100644 index 0000000000..a4229b1e82 --- /dev/null +++ b/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php @@ -0,0 +1,38 @@ + ['onProxyTranslate', 200], + ]; + } + + public function onProxyTranslate(ContentProxyTranslateEvent $event): void + { + // Read the translation context: + $event->getContentId(); + $event->getFromLanguageCode(); // ?string — null when no source language exists + $event->getToLanguageCode(); + $event->getLocationId(); // ?int — null when no location context is available + + $url = $this->urlGenerator->generate('your_custom_route', [ + 'contentId' => $event->getContentId(), + ]); + + $event->setResponse(new RedirectResponse($url)); + $event->stopPropagation(); + } +} diff --git a/code_samples/translations_management/src/TranslationsManagement/ImageAltTextTransformer.php b/code_samples/translations_management/src/TranslationsManagement/ImageAltTextTransformer.php new file mode 100644 index 0000000000..b977aef677 --- /dev/null +++ b/code_samples/translations_management/src/TranslationsManagement/ImageAltTextTransformer.php @@ -0,0 +1,30 @@ +getValue()->alternativeText ?? ''); + } + + public function decode(string $value, mixed $previousFieldValue, array $metadata): Value + { + $previousFieldValue->alternativeText = $value; + + return $previousFieldValue; + } +} diff --git a/code_samples/translations_management/src/TranslationsManagement/MyCustomExclusionRule.php b/code_samples/translations_management/src/TranslationsManagement/MyCustomExclusionRule.php new file mode 100644 index 0000000000..48a55e68e0 --- /dev/null +++ b/code_samples/translations_management/src/TranslationsManagement/MyCustomExclusionRule.php @@ -0,0 +1,16 @@ +getContentType()->identifier === 'my_excluded_type'; + } +} diff --git a/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php b/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php new file mode 100644 index 0000000000..3eada2b90f --- /dev/null +++ b/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php @@ -0,0 +1,45 @@ +apiClient->translate( + $translationData->getText(), + $translationData->getSourceLanguage(), + $translationData->getTargetLanguage() + ); + } + + /** @return array */ + public function getSupportedLanguageCodes(): array + { + return ['en_GB', 'de_DE', 'fr_FR']; + } +} diff --git a/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php b/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php new file mode 100644 index 0000000000..c8985f4af8 --- /dev/null +++ b/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php @@ -0,0 +1,18 @@ +add('my_custom_field', /* ... */); + } +} diff --git a/docs/api/event_reference/translations_management_events.md b/docs/api/event_reference/translations_management_events.md index a94a153a0e..0bc9b7e386 100644 --- a/docs/api/event_reference/translations_management_events.md +++ b/docs/api/event_reference/translations_management_events.md @@ -1,5 +1,5 @@ --- -description: Events that are triggered when working with taxonomy. +description: Events that are triggered when working with translations management. edition: lts-update page_type: reference --- diff --git a/docs/multisite/translations_management/extend_translations_management.md b/docs/multisite/translations_management/extend_translations_management.md new file mode 100644 index 0000000000..2a467abc03 --- /dev/null +++ b/docs/multisite/translations_management/extend_translations_management.md @@ -0,0 +1,194 @@ +--- +description: Extend translations management - add custom classes, exclude custom content types and intercept the flow. +edition: lts-update +month_change: true +--- + +# Extend translations management + +By extending [Translations management](translations_management_guide.md), you can build custom translation workflows and adapt the feature set's behavior to your specific requirements. +The package is designed to be extended in multiple ways. +You can create custom [translation providers](configure_translations_management.md#configure-translation-providers), field type transformers, exclusion rules, and UI components. +In all cases you follow the same pattern: implement an interface or extend a base class, then register the service with a service tag. +The package discovers and registers tagged services automatically. + +## Add custom translation provider + +Before you build a custom translation provider, make sure that the `ibexa/connector-ai` package has been installed in your system. + +To connect a translation service that is not built into the package, implement [`TranslationProviderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Provider-TranslationProviderInterface.html). +The `translate()` method receives a `TranslationDataInterface` object that carries the text to translate along with the source and target language codes: + +``` php hl_lines="31-44" +[[= include_code('code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php') =]] +``` + +Register the provider with the `ibexa.translations_management.auto_translate.provider` tag. +Both `identifier` and `validation_profile` are required attributes. + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 6) =]] +``` + +The `validation_profile` attribute links the provider to a validator that checks language codes and payload size before each call. +By default, three profiles are available: + +| Profile | Used by | +|---|---| +| `google` | Google Translate provider | +| `deepl` | DeepL provider | +| `ai_generic` | All built-in AI providers. Suitable for custom AI providers. | + +To define a custom validation profile, implement [`ProviderValidatorInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Validator-ProviderValidatorInterface.html) and register it: + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 7, 10) =]] +``` + +The [`DefaultProviderValidator`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Validator-DefaultProviderValidator.html) class is available as a reusable base with configurable maximum payload size and language code regex patterns. + +The package also provides several specialized interfaces for providers with specific requirements: + +| Interface | Purpose | +|---|---| +| [`ConfigurableProviderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Provider-ConfigurableProviderInterface.html) | Extends `TranslationProviderInterface`. Adds `getConfiguration()` and `isConfigured()` for providers that store API keys and other settings | +| [`AiTranslationProviderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Provider-AiTranslationProviderInterface.html) | Extends `ConfigurableProviderInterface`. Used as a type marker for AI-based providers, it inherits the configuration methods | +| [`TranslationHttpClientInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Http-TranslationHttpClientInterface.html) | For HTTP-based providers that use a REST API pattern | + +## Add support for custom field types + +The translation engine works by extracting translatable text from fields, sending it to the provider, and writing the translated text back. +This encode/decode cycle is handled by field value transformers, one per field type. +The package includes transformers for standard text and RichText fields. +To add support for a custom or non-standard field type, implement [`FieldValueTransformerInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Transformer-Field-FieldValueTransformerInterface.html): + +- `getFieldTypeIdentifier()` - returns the field type identifier this transformer handles +- `encode(Field $field): EncodedFieldValue` - extracts the translatable string from the field and wraps it in an [`EncodedFieldValue`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Transformer-Field-EncodedFieldValue.html). The constructor takes the extracted string as its first argument and an optional metadata array as its second. +- `decode(string $value, mixed $previousFieldValue, array $metadata): Value` - receives the translated string, the previous field value, and any metadata, and returns the updated field value + + +``` php hl_lines="19 24" +[[= include_code('code_samples/translations_management/src/TranslationsManagement/ImageAltTextTransformer.php') =]] +``` + +Register the transformer with the `ibexa.translations_management.auto_translate.field_value_transformer` tag. +The `field_type_identifier` attribute is required and must match the value returned by `getFieldTypeIdentifier()`: + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 14, 17) =]] +``` + +For field types that require metadata, for example, RichText fields with embedded objects that must be preserved after translation, implement [`MetadataAwareFieldValueTransformerInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Transformer-Field-MetadataAwareFieldValueTransformerInterface.html) instead. + +## Define custom exclusion rules + +Content types that should not use the side-by-side view are identified by exclusion rules. +The Translations management package ships with one rule that excludes content types that contain `ibexa_landing_page` or `ibexa_form` fields. + +### Exclude with custom class + +To exclude additional content types, for example, content types with fields that are known to behave poorly in the side-by-side layout, implement [`SideBySideExclusionRuleInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-SideBySide-Service-SideBySideExclusionRuleInterface.html). +The `isExcluded()` method receives a [`ContentInfo`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentInfo.html) object and returns `true` if the content item should be excluded. +Classes that implement this interface are automatically tagged via autoconfigure: + +``` php +[[= include_code('code_samples/translations_management/src/TranslationsManagement/MyCustomExclusionRule.php') =]] +``` + +If autoconfigure is not available, register the tag explicitly: + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 18, 20) =]] +``` + +### Exclude with existing class + +`MyCustomExclusionRule` targets one specific content type by name. +To exclude any content type that contain specific field types without the need to write a custom class, register an additional instance of the built-in [`UnsupportedFieldTypeExclusionRule`](https://github.com/ibexa/translations-management/blob/main/src/lib/SideBySide/Service/UnsupportedFieldTypeExclusionRule.php). +Because this registers a second instance of the service with different arguments, you can't use the class name as the service ID. +Use an arbitrary string ID instead to avoid overwriting the package's own registration: + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 21, 26) =]] +``` + +## Use Twig component extension points + +Two Twig component groups allow you to inject custom UI elements into the translation interface without the need to override their templates. +Such custom elements could be: + +- buttons that allow the editor to create a new translation either in the side-by-side view or the standard single-panel editor +- a disclaimer or policy notice that the editor must acknowledge before a translation is created + + +| Component group | Location | Variables available | +|---|---|---| +| `admin-ui-content-translation-modal-footer` | Footer of the **Add translation** modal | `form`, `content_id`, `location`, `allow_placeholder` | +| `admin-ui-content-edit-translation-select-footer` | Footer of the **Select translation** panel on the content edit screen | `form`, `content_id`, `main_language_code` | + +Both groups follow the same pattern: if any component renders a non-empty output into the group, the default footer buttons are replaced entirely by the component output. +Therefore, if your component template replaces the defaults, make sure it includes its own action buttons. + +Register a component with the `ibexa.twig.component` tag: + + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 27, 31) =]] +``` + +!!! note + + The `admin-ui-content-translation-modal-footer` group receives a `location` variable that may be `null` when the modal is rendered outside a location context. + Always check for `null` before you access location properties in your component template. + +## Extend the modal + +If injecting custom UI elements is not sufficient, you can extend the modal itself. +To add a field to the **Add translation** modal, for example, to let the editor choose a custom workflow or pass extra parameters along with the translation request, extend [`TranslationAddType`](https://github.com/ibexa/admin-ui/blob/main/src/lib/Form/Type/Content/Translation/TranslationAddType.php) with a [Symfony's Form Type extension](https://symfony.com/doc/current/form/create_form_type_extension.html). +It's the same mechanism the translations management package uses internally to inject its provider selector into the modal. + +Create a class that extends [`AbstractTypeExtension`](https://symfony.com/doc/current/reference/forms/types/form.html) and declare the extended type: + +``` php +[[= include_code('code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php') =]] +``` + +Register it as a service: + +``` yaml +[[= include_code('code_samples/translations_management/config/services.yaml', 1, 1) =]] +[[= include_code('code_samples/translations_management/config/services.yaml', 11, 13) =]] +``` + +The extra field is then available in the submitted form data, which the standard `admin-ui` controller passes through the translation flow. +Use this approach when you need to read extra input from the editor, not to redirect or replace the response. + +## Intercept translation flow + +The `BeforeTranslateEvent` and `TranslateEvent` [events](translations_management_events.md#translation-events) operate at the field-value level and cannot redirect the HTTP flow. +To intercept the "Add translation" action at the HTTP level, for example, to trigger auto-translation and redirect to a custom view, or to bypass the default flow entirely, subscribe to `admin-ui`'s `ContentProxyTranslateEvent`. + +The `translations-management` package listens to this event at priority `100`. +Subscribe at a higher priority to act before the package does: + +``` php hl_lines="35 36" +[[= include_code('code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php') =]] +``` + +Both highlighted calls are required: + +- `setResponse()` alone does not prevent the translations management listener at priority 100 from running and overwriting the response. +- `stopPropagation()` stops all lower-priority listeners from executing. + +When a response is set on the event, `admin-ui` uses it and doesn't proceed with the standard translation editor. + +!!! caution "Internal `ContentProxyTranslateEvent`" + + `ContentProxyTranslateEvent` is marked `@internal` in `ibexa/admin-ui`. + While it functions as an extension point in practice, its name and signature may change. + It may even be removed entirely without a deprecation notice. diff --git a/docs/multisite/translations_management/translations_management.md b/docs/multisite/translations_management/translations_management.md new file mode 100644 index 0000000000..468165d855 --- /dev/null +++ b/docs/multisite/translations_management/translations_management.md @@ -0,0 +1,16 @@ +--- +description: Translations management brings multiple features that help managers, developers and localization teams automated multilingual content delivery. +edition: lts-update +page_type: landing_page +--- + +# Translations management + +Translations management helps [[= product_name =]] developers and users deliver automated content item, product and product catalog translations. + +[[= cards([ + "multisite/translations_management/translations_management_guide", + "multisite/translations_management/configure_translations_management", + "multisite/translations_management/extend_translations_management", + "api/event_reference/translations_management_events", +], columns=3) =]] From bffca77bd2eeae261c3be07341079a9133fd7ee4 Mon Sep 17 00:00:00 2001 From: dabrt Date: Fri, 19 Jun 2026 14:48:19 +0000 Subject: [PATCH 3/4] PHP & JS CS Fixes --- .../TranslationsManagement/ContentProxyTranslateSubscriber.php | 3 ++- .../src/TranslationsManagement/MyCustomProvider.php | 3 ++- .../src/TranslationsManagement/MyTranslationAddExtension.php | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php b/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php index a4229b1e82..e9442a3115 100644 --- a/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php +++ b/code_samples/translations_management/src/TranslationsManagement/ContentProxyTranslateSubscriber.php @@ -11,7 +11,8 @@ { public function __construct( private UrlGeneratorInterface $urlGenerator, - ) {} + ) { + } public static function getSubscribedEvents(): array { diff --git a/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php b/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php index 3eada2b90f..fa77ae4595 100644 --- a/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php +++ b/code_samples/translations_management/src/TranslationsManagement/MyCustomProvider.php @@ -11,7 +11,8 @@ { public function __construct( private MyApiClient $apiClient, - ) {} + ) { + } public function getIdentifier(): string { diff --git a/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php b/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php index c8985f4af8..47608fd81e 100644 --- a/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php +++ b/code_samples/translations_management/src/TranslationsManagement/MyTranslationAddExtension.php @@ -13,6 +13,6 @@ public static function getExtendedTypes(): iterable public function buildForm(FormBuilderInterface $builder, array $options): void { - $builder->add('my_custom_field', /* ... */); + $builder->add('my_custom_field'/* ... */); } } From 6f128e0162d4015a3764a9ee6874358d884929ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 19 Jun 2026 16:51:14 +0200 Subject: [PATCH 4/4] Fix formatting in events --- docs/api/event_reference/translations_management_events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/event_reference/translations_management_events.md b/docs/api/event_reference/translations_management_events.md index 0bc9b7e386..01c69e1b63 100644 --- a/docs/api/event_reference/translations_management_events.md +++ b/docs/api/event_reference/translations_management_events.md @@ -16,7 +16,7 @@ Both events are read-only, you can't use them to override the translation result | Event | Dispatched by | Dispatched when | Properties | |---|---|---|----| -[`BeforeTranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-BeforeTranslateEvent.html) | `TranslationService` | Before a translation request is sent to the provider | `TranslationProviderInterface $provider`
`string $text`
`string $sourceLanguage`
`string $targetLanguage` | +| [`BeforeTranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-BeforeTranslateEvent.html) | `TranslationService` | Before a translation request is sent to the provider | `TranslationProviderInterface $provider`
`string $text`
`string $sourceLanguage`
`string $targetLanguage` | | [`TranslateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-TranslationsManagement-AutoTranslate-Event-TranslateEvent.html) | `TranslationService` | After a translation response is received | `string $result`
`TranslationProviderInterface $provider`
`string $text`
`string $sourceLanguage`
`string $targetLanguage` | ## Side-by-side creation events