From 0385228c79bdaceef8b6eaf489af27a496659709 Mon Sep 17 00:00:00 2001 From: bnjmnm <bnjmnm@2369194.no-reply.drupal.org> Date: Wed, 23 Nov 2022 14:15:31 +0000 Subject: [PATCH] Issue #3312289 by bnjmnm, narendraR, srishtiiee, rkoller, tim.plunkett, chrisfromredfin, hotwebmatter, phenaproxima, worldlinemine, simohell, mherchel, benjifisher, mgifford: Svelte UI for install controllers --- .../project_browser.admin_settings.yml | 1 + project_browser.libraries.yml | 1 + src/Controller/InstallerController.php | 33 +- src/Form/SettingsForm.php | 31 +- src/Routing/ProjectBrowserRoutes.php | 2 +- sveltejs/public/build/bundle.css | Bin 12703 -> 13593 bytes sveltejs/public/build/bundle.js | Bin 83526 -> 93065 bytes sveltejs/public/build/bundle.js.map | Bin 226071 -> 250588 bytes sveltejs/src/Loading.svelte | 14 +- sveltejs/src/Project/ActionButton.svelte | 338 +++++++++++------- sveltejs/src/Project/AddInstallButton.svelte | 200 +++++++++++ sveltejs/src/Project/Project.svelte | 3 + sveltejs/src/ProjectBrowser.svelte | 82 +++++ sveltejs/src/constants.js | 2 + sveltejs/src/popup.js | 122 +++++++ sveltejs/src/stores.js | 16 + .../project_browser_test.module | 14 + .../src/DrupalOrgClientMiddleware.php | 1 + .../src/Extension/TestModuleInstaller.php | 21 ++ .../src/ProjectBrowserTestServiceProvider.php | 22 ++ .../Functional/InstallerControllerTest.php | 6 +- ...jectBrowserInstallerFunctionalTestBase.php | 36 +- .../ProjectBrowserInstallerUiTest.php | 200 +++++++++++ .../ProjectBrowserUiTest.php | 18 +- .../PackageManagerFixtureUtilityTrait.php | 72 ++++ 25 files changed, 1052 insertions(+), 183 deletions(-) create mode 100644 sveltejs/src/Project/AddInstallButton.svelte create mode 100644 sveltejs/src/popup.js create mode 100644 tests/modules/project_browser_test/project_browser_test.module create mode 100644 tests/modules/project_browser_test/src/Extension/TestModuleInstaller.php create mode 100644 tests/modules/project_browser_test/src/ProjectBrowserTestServiceProvider.php create mode 100644 tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php create mode 100644 tests/src/Traits/PackageManagerFixtureUtilityTrait.php diff --git a/config/install/project_browser.admin_settings.yml b/config/install/project_browser.admin_settings.yml index 6af92690a..1a6391de2 100644 --- a/config/install/project_browser.admin_settings.yml +++ b/config/install/project_browser.admin_settings.yml @@ -1,2 +1,3 @@ enabled_sources: - drupalorg_mockapi +allow_ui_install: false diff --git a/project_browser.libraries.yml b/project_browser.libraries.yml index 3690f6144..f76a6afc6 100644 --- a/project_browser.libraries.yml +++ b/project_browser.libraries.yml @@ -12,6 +12,7 @@ svelte: - core/drupal - core/drupal.debounce - core/drupal.dialog + - core/drupal.announce tabledrag: js: diff --git a/src/Controller/InstallerController.php b/src/Controller/InstallerController.php index 74f4567f8..c2b72131e 100644 --- a/src/Controller/InstallerController.php +++ b/src/Controller/InstallerController.php @@ -57,7 +57,7 @@ class InstallerController extends ControllerBase { private $installer; /** - * The Project Browser tempstore object. + * The Project Browser tempstore object. * * @var \Drupal\Core\TempStore\SharedTempStore */ @@ -168,8 +168,15 @@ class InstallerController extends ControllerBase { // the PreCreate and PostCreate events. If an exception is caught during // PreCreate, there's no stage to destroy and an exception would be raised. // So, we check for the presence of a stage before calling destroy(). - if (!$this->installer->isAvailable()) { - $this->installer->destroy(); + if (!$this->installer->isAvailable() && $this->installer->lockCameFromProjectBrowserInstaller()) { + // The risks of forcing a destroy with TRUE are understood, which is why + // we first check if the lock originated from Project Browser. This + // function is called if an exception is thrown during an install. This + // can occur during a phase where the stage might not be claimable, so we + // force-destroy with the TRUE parameter, knowing that the checks above + // will prevent destroying an Automatic Updates stage or a stage that is + // in the process of applying. + $this->installer->destroy(TRUE); } } @@ -192,17 +199,16 @@ class InstallerController extends ControllerBase { public function inProgress(string $project_id): JsonResponse { $requiring = $this->projectBrowserTempStore->get('requiring'); $core_installing = $this->projectBrowserTempStore->get('installing'); - $status = self::STATUS_IDLE; + $return = ['status' => self::STATUS_IDLE]; + if (isset($requiring['project_id']) && $requiring['project_id'] === $project_id) { - $status = self::STATUS_REQUIRING_PROJECT; + $return['status'] = self::STATUS_REQUIRING_PROJECT; + $return['phase'] = $requiring['phase']; } if ($core_installing === $project_id) { - $status = self::STATUS_INSTALLING_PROJECT; - } - $return = ['status' => $status]; - if ($status !== self::STATUS_IDLE) { - $return['phase'] = $requiring['phase']; + $return['status'] = self::STATUS_INSTALLING_PROJECT; } + return new JsonResponse($return); } @@ -411,7 +417,7 @@ class InstallerController extends ControllerBase { try { $stage_id = $this->installer->create(); - $this->setRequiringState($project_id, 'starting install', $stage_id); + $this->setRequiringState($project_id, 'creating install stage', $stage_id); } catch (\Exception $e) { $this->cancelRequire(); @@ -550,7 +556,10 @@ class InstallerController extends ControllerBase { return $this->errorResponse($e, 'project install'); } $this->projectBrowserTempStore->delete('installing'); - return $this->successResponse('project install'); + return new JsonResponse([ + 'status' => 0, + 'message' => $this->t('Project @project was installed successfully', ['@project' => $project_id]), + ]); } } diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php index 1fd5d0e9a..bb056586d 100644 --- a/src/Form/SettingsForm.php +++ b/src/Form/SettingsForm.php @@ -4,6 +4,7 @@ namespace Drupal\project_browser\Form; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\project_browser\Plugin\ProjectBrowserSourceManager; @@ -28,6 +29,13 @@ class SettingsForm extends ConfigFormBase { */ protected $cacheBin; + /** + * The module handler. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + /** * Constructs a \Drupal\project_browser\Form\SettingsForm object. * @@ -37,11 +45,14 @@ class SettingsForm extends ConfigFormBase { * The plugin manager. * @param \Drupal\Core\Cache\CacheBackendInterface $project_browser_cache * The cache bin. + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler. */ - public function __construct(ConfigFactoryInterface $config_factory, ProjectBrowserSourceManager $manager, CacheBackendInterface $project_browser_cache) { + public function __construct(ConfigFactoryInterface $config_factory, ProjectBrowserSourceManager $manager, CacheBackendInterface $project_browser_cache, ModuleHandlerInterface $module_handler) { parent::__construct($config_factory); $this->manager = $manager; $this->cacheBin = $project_browser_cache; + $this->moduleHandler = $module_handler; } /** @@ -51,7 +62,8 @@ class SettingsForm extends ConfigFormBase { return new static( $container->get('config.factory'), $container->get('plugin.manager.project_browser.source'), - $container->get('cache.project_browser') + $container->get('cache.project_browser'), + $container->get('module_handler') ); } @@ -89,13 +101,26 @@ class SettingsForm extends ConfigFormBase { public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('project_browser.admin_settings'); + // Confirm that package manager is installed and that it provides the + // CollectIgnoredPathsEvent, added in Package Manager 2.5. The event is + // required by the UI install feature, so we check for its presence in + // addition to the module being installed. + $package_manager_not_ready = !$this->moduleHandler->moduleExists('package_manager') || !class_exists('\Drupal\package_manager\Event\CollectIgnoredPathsEvent'); $form['allow_ui_install'] = [ '#type' => 'checkbox', '#title' => $this->t('Allow installing via UI (experimental)'), '#default_value' => $config->get('allow_ui_install'), - '#description' => $this->t('When enabled (and Package Manager from the Automatic Updates module is installed), modules can be downloaded and enabled via the Project Browser UI.'), + '#description' => $this->t('When enabled, modules can be downloaded and enabled via the Project Browser UI.'), + '#disabled' => $package_manager_not_ready, ]; + if ($package_manager_not_ready) { + $form['allow_ui_install_compatiblity'] = [ + '#type' => 'container', + '#markup' => $this->t('The ability to install modules via the Project Browser UI requires Package Manager version 2.5 or newer. Package Manager is provided as part of the Automatic Updates module.'), + ]; + } + $source_plugins = $this->manager->getDefinitions(); $enabled_sources = $config->get('enabled_sources'); // Sort the source plugins by the order they're stored in config. diff --git a/src/Routing/ProjectBrowserRoutes.php b/src/Routing/ProjectBrowserRoutes.php index ebac09e8d..1cc48138f 100644 --- a/src/Routing/ProjectBrowserRoutes.php +++ b/src/Routing/ProjectBrowserRoutes.php @@ -52,7 +52,7 @@ class ProjectBrowserRoutes implements ContainerInjectionInterface { return []; } $routes = []; - $machine_name_regex = '[a-zA-Z_]+'; + $machine_name_regex = '[a-zA-Z0-9_]+'; $stage_id_regex = '[a-zA-Z0-9_-]+'; $routes['project_browser.stage.begin'] = new Route( '/admin/modules/project_browser/install-begin/{composer_namespace}/{project_id}', diff --git a/sveltejs/public/build/bundle.css b/sveltejs/public/build/bundle.css index 6b3112fcec0d0e36f2644fd360d2a53d7cba0f25..cc925c0ee01fe995c52133362ada724a93027ea3 100644 GIT binary patch delta 2092 zcma)7&u`;I6c$3js<hBHX`61^#A(uQyIWgMx-DHtNXxFY6lpmi1OgRN#_`yhcI>gn z(<a53N*uXx7zqgpi4&(42viVAoEC2U0U!=s5&r=QAz%{Qu^XG!-rjugz3=^)H*Y@a ze02E5rHM;T+;k2*J)b`}S9~>4fbJ1|%%I}xa;$QRhZrJ`7AvJ1vRy(MaG3Bo1bx}1 z#G=si4h~qC5?zNhMZoV&+<qb=;~z}$SUz8W^713`f$vTJ8O!H)rq&*tK7!bI+ZynM z5`TAgdo~m$kcMaG`LDCfS^LRCBMaUtv}VScH~F*0h4MJ+cL*j_tDC0Dzb$;6r80|q zXP5v3IhG7DMy`jvB(FsBM-8M91BOmupgfG9222KN;vKiYO->*+G3jYtZkC?nSEr}W z1j0}UU>RU!IhsxwBX(QvLH!6Z892xmfyEV$x;e^N@)&fz_3N7wbc_w@hN{}0gd7t& zh{5(ldY<LDc8J5E!?Y`JwA9wlm39vqtgETP%_DefQeZ<*%4Xv;;)jMU)$Iqt&A5aI zJ562i;s=HK8z<L~UA5=ifLh4W)V5Bj0jV5iks4v4>C0Xh7^0yLaUlP$pmVua;(rzA z&VMMr_vn20#DY5=NnDym2G<&%`F=_JKh?d`?di}eW&cm<`7HR#;$9Z~Y;h?I{<8Qw z9_NgDwbfb;0!2K+L)c+S#6(JlC>cSEBI7|moLv685S8BDO1Stl<!iGMK75Cv%vpIo z5B|KoJL-}Rkdq?%yZqJ*5s{)3<1|tE4EDv?4rjR|h6vI?3G<D+FDXb2*zmnY@jqR< zm2KJ|OSLTc($fuoclphQIJS5k)^OuRO!t?|FOGB<qxgd?WI!R%OhSfvVdSNHF7g_% zNyr|qu847?QXe&8Y>M>C)<`whpL><X+za@*QqLAOQ9Vuyx|lTou&O*BW%6TnHS7Ct zb!9Fp*mFVpigu*6Vx+lPkt^MeDZiJrnb0P6fgD_|^39r>4Tfvl%;~newQCQ|o1w_R zsr^0|igD{=%~vb69Q)r^S~=)OeK!ZC^_O$dpK@)hjcYl!`;AHt`hMfJvnXeU5zE5i zw;4jw=8-Wpnb>*?ay$kwmV1CY;>SqUo)Z0VOKDBFFNu#B84`s?+XcqplhK;c9_QIl s6G?8GD&Bm`Hnb&?KonT+LLe4l$}%NJf1U^$9Ap0F+QNB#^_|K80QnT#dH?_b delta 1388 zcmZ`(&1=(e7^dikwB7psfyvsmX}hXxwCy%a7-cBvgdIdZ=)uvnO|s0iY10(Dg-!(z z%68FL7@l+&&x3mLASj6F$%}u0M~{LB1rNHcN&9OPZ%>}*{d(T_N1kuIs2rTIPc{`f zx3~o^dl;@cgAS@u&h#l2b{#nE*;7Wy2RrDnx8^u$Gw6HH-v+%sm74Hom8}+chtmq_ z5MFy1{5mEWRQTh~Tg4ZB2`gIm<u046&r#*JqDXa0Xl1HGiz$n273qOMwIYd<Op_eP z!IxkeR{iHarg~t@`Qep+p?4*;cP!MbRp)CRf)XWO(kk`8Rk#`mgA0oVt#!DBUG(%N zH0eGbf=BZq_=JVs<0|~XR?OrIj+;pZzf~MhSMLf{Wu4CFlHD%F%fjIXWNCw~D8v3k zq{6#t5^m2t@#*8Q=Z7NLB4@lhe{`!phGHabMRy{F!4hhWP)7=VjFbjaS*mU#(oz&3 ztX8N<^%kNn=L7ICnlbx+AB~yG$F2kfiM3(18pE?lwH*Q*YGa+=5*VgCr35XH5NbS< z`;#CC21XwM%*FB-jMP!vs<!<MBeM*x30+DQTF4cMkzMb{NVBD{vG#vQF2$)y{UFcc zNptS!cs!ub)oL)vHJ*|wzb=fLq{&sI;x0*ByxPA(0)CNa&Ak>Aw1<<LV&Q1t**=5^ ziSL0vG`49d+sT+k{6R8j!7k@9m`=@DC`+m97VOJZ!GhhVFgQNzUN%js9{wmABC|<z zBHQUw4YAD&^^C%lwd-e1;c#R2=4ss&rARz4qL$SfBWvj*%PI7^Zd-(J=^#j_reJ5n K-FuTRIsXCq4&@pE diff --git a/sveltejs/public/build/bundle.js b/sveltejs/public/build/bundle.js index c9bb6dd40903558b6c8a6a917d30e0761ca5f116..de4f50313f3a828f90de41e0f61fe1281d562b37 100644 GIT binary patch literal 93065 zcmeFa*?JpCw(og=o&v(wW&!0SL{fuoP$`y7NtSF)CCVc=n*xC(2?;<#K!Oxa@qGOb zecKm()eq8-(ofRA|B8ql08pZ;T)X#o&T-WzA|oSXT(Rc0;-oXFb;jfPa5m~@{dCl5 zp4Vs7q&Cea{ccv@4CS?iHy7P>G|g&RoW%E%;?<~;L|OCvFr749g;A|Ps%6b&ceEF0 z{IfYpve{%*OD^)}(niue55<jU@nS+hzWl|(+oYSdx|5`nC5_Q+Feud<sDY$Krw=>b z<3?I~H7(k%hYss;oSlu6^sqdLjvIIw#<e)v%Ba^)uJP~3kIBkPJ+(2EzW(@eX`6#2 ztM!W|=~i0qfBe|!$Gx;W8z!SLp@)M+PmOw~-fTww*6}1cjI$_-<JdhEYcgwOQLEJ& zHP8Epwhj!h8AiS7);x`~)^v6-?N0g!NyBP~WlvkPQT}SH(Twj^N*c{}TJ$y6$RoN+ zTGy|)($Rh|0T$A;)_68OZfGQ<W@)W^u6mT(*w_*`nn^s&UxZ;KyK8%mN%NxU%hgGv zNxtRD?)u)!%4BQQNL$_PLu)$dcY(Y}<&8-rYc?6I-V}`-<sE5tlHCm&U^HPIDrlq) z2EEDaleFKft+B*etJj}oXJHj5dbzOKjLS8X#JhXZD1O$-j$6adhlc;UHAqHB*>N=S zKbo650|JFKUfWFXjyBV;;&skJx)(a+=f?^E<co6Q_t7``aWYp>Oq9uKXCl@s8rX8@ z<D0VF?$w~VnY6}@DQj9<=<7NWS{++dH|l#gH^THXH@))P8#g!d$s|lBVKT{AUp2Gc zWG`M_55v#=Xjj*ZaUQEPw{BT{eqqhHN5czAvwpqK0UH4hD=Q7*hgg`RS+p4rZS9~q z$u*t-m=jvBw@Y~B)GbN@K&@$#vD;DRk=03DpN)FSVSkkL=++~F)BdQJo^EQZ&f*h0 z6RxN=P9|*Purul=tx<Z);n0D300wf8(LVLTf0N|>jFWMH)E{<)I3G<q!-V0slTA0- zop_X-)^?JtzzQEUot+$KHM02LIp}~=5X4TamoT0LAdj-vVS`f!URYzLc3RW^A0VUs z#)s0$d#jo2n1a5OQE&UWKj`sou@CRm8=HPD2~Zv|kRKs<ymgdhuhKMop7xTh$`cb$ zTIuO1nLO}#E8m}$m8^A~PO~jAWwlDt`L;R_K=7hbpJr!+q@M3_*kLyZrqVi2Iz3P> zQ@Utq<osY6rpHN=6|Fu9yPdT9qiHh9zDw9FmMj{5{5VG-o@fM|h0X*ltNFDi$uK=h z+(IR#g?jBq5zg)ia39@G{F&Yyxg$IRSOuo7>LR~TFa8LJ<@FRRAoy}u&o8h3I{9G3 zq((8}hXpl!-l*5=rB_cYugY&;x>XWR4n(5W>Gd9-un<rC(=1_A9lB^n0`9Of%PJH@ z`6H~oJBTB|#VzRl3|`@2W{?X&08!-<ope@C$Ffum5h+@}@76zy>-Dc7fUVQxbdYE{ zM20~TNvqe%I*`2LlONnCN$aFDm?g0rQYPF`f|h5l()_-rW1ZJ&Wq&=Wrkn`>T5Jo4 zCvENTyFN-ZS5$;IQ_gEQOM3COwdRFp=pLVdZa#n`i_yLhO9zG>bf!~n!tQ9R&ZgAc zb+?N3y~^QzWuKfM%nl9)$+SI+udPR2A*Dfwf_BRD1;{m=vB?5=q0Mg8w`bEV9oohg zhi}5+>1U-^^d+*wiJN$=`Ph)xv(DI1<fG_2&O|t~wV&N|93hIPQ72vt<LJlhcUpJu z+_{n3huye-{vRW_NKY0WC5hJ|C2>D|1LyKpW3-wz|0<qtv&(r~Tl;JB)ti4mzkWV# zq|y2++}*{0jNbUc&EoD?Z>aO{HLEb90^mf2i#O3YezU(nJxK;xvVZ+N3|Xg6xIT+- z-~47BN}iu?jcjwYy1LoS;zoA&?(ODk_P?=B$DPSGIOD!(NsjpL-MhDT(U>(aXu3mZ zz1T3-xgj@0RqbIknQ6n0F5<^J3XLAPy%>ftwx@-0`Lk_defQ=0#YO1wu}+OPrx}ed z8oh|sIociXK`itKu#1Ks55A()#+$#rOU@2Oho-gb=i>|hnK8;?t2>>lLI8PKAvcCY z*1^W!>I5<dds`3PFT9N3u%ui1=OU`TY1iu)zMJ%7IIRsJu}Blw&nJ3XuN|b>@tf#7 zwlf+RXW@GRPq7Fb?j<8=wx;7jANY+xc~KgVT8Djh6s#rEE9B1+dvVC3-Cb)_vbqjS zR}|L+2#B+u@U`Q3R?~3iCx%t#I*!xU+q6IOoqo3(PonQWe%x;~gd@-S*?3%#ZaQ@v zS>DC$B2EnMN3eTyi*9GYLz<`bwrPMDh*Z17aTdjY431zO9sMt%yq^TbkKz*V^9vL} z^!-sYJD#McHSrq{ClesL{>Y1SwQgrHNP4w&mQDM;q}EM`<8%aSKtk(h{m!8OhjA|j za(Gm1)sO0tPP`y6OlJr$CI*yA)ZZC}1E(aWvIiccFXziJR#>>&gdIb~&<GDY-FMU7 z%rI`w)DGfTi>+LQ4r-Gi92A@4`6(I%$PgA;&1(Y|`>-<`WG^R)aAMN)EbFzk5`+A! zrs|2MpD}aFph0$s%k%xM3c&MoXo<tz+l1zg76)j+s|h!<<NlO$0F&p|?su`^iOCt6 zlQ!(%G>KnM(qVrpVmnO-CkR6ZVUq+3P@rT^KNEmQUD%$fy%`m6Tz?&ire{xu82d@o z6><)ksy36nAGY<;W-mQAOxaED{vHld@&5PSE>rFzA4G!EXiT4MEx-#b{^TV0D0~;M zxvr8N2RHdSPRETVbE{GcCghH;2*!HoFpIMUF=Vp?*VvhY1UQ=fhMEeCW;!|fhw<9Q zDV%ZA2;I9bHdzqga#L&Ld$(1MXv-f#n@({cG%q`H;x}MUP(MsMN0Q>jY0k#5DH2wJ zzSe;;ru(ie;9D`=CU$b<?Qguhy3V%e&4^J7O(MmaKqj)x<PJf9zPTLW2f$@9x*nqo zqI<7D9e1+su~GiUs|Gk5?x;UPl855}8}Jw84aLkMa9D+iqmqK>P{44M#OISXo7V<X z$L*t})b({&p*8vVanLwo*v*LQ{3s#*V;dd|rAhWdz(W?nNj!iIMQmOP-J!&=*#ymk zzH&+izSFiRO)u7LQlP!36?N^7fJ54qE>ik5R<zexhp2b~i&p9Q!XLv^CfS=!3@5hN zkX-{F<={EVyW=>CevD25Av@~EovpR@dNea86#hf70cW5;#pgp7u(z`EJ>T?7lQi8$ z0Bdn22dmvceY3wheM9G9DtY$2)9ywG@Ye@XuT3jqkXba%Iul7^_BTQl48LKfk0$AC zET&w4OB)7b>$^Q?4?1V<3CA*Ta~j`VTZ@v;v_Cp(!+1wozx%EYw-7<p+Se~)6k4ZA zbSxG|eV;X&UriWXda;>u7LQ$b?7uc-qLUlVK7Jf;jpO5X<GQw<Q__onW;MESkti#o zPIMh?%@!Rt)*{u9j~d6(l*5!b0t|F(0}v$X5xU-t!rtgi8gsWP#ZFmRj)dYo{%kZx zP@Wx!CF1jLJBbe4qYDv<i$+7_98x+4%I=NbN-|6hVyr=gUDX(7>_8YrG(Q==oVCJ2 zMr+KgFHS(?oi*tpxfjn`>{0Wu(dE|xyeo&rCT9)v3XW&YD)P9+I<;3<XKp>+=?V{B zwdkNM8KAHYZQJ?;kOJZGwH0luyUte(?ysFjcB2?13)$$}Falw0T$`<|TpMd?n!fCO zGDFMTgdOiUw;KI~@%5LGrl_B^vg2grc_ymp7^ofIG%K&-J}|&~sF$|=73gwI1RJy1 zt@uR=WY0YQa70NQR+hd?My6p3rxdNSlS&Lr`x=r!1FFaZ8STXbqoY%CYT1WPrx>KF zSi@;N4YWI&?oRe%v}&Gg#-K0Mf8E(cYK1syHl~gs_eGDh*1;g{zOyR!Yr5r&ra96E z*kI^^w-LPo@M=&9HZqL29<4_XcZCn7AA{7C+Ej_w)fgP1URy(7AN>T!r-N3h8G&*; zI!v7w>cN)rZ<J<m``zOd+{KvJ^lU?oJK@)~+!w0L4mDR+#1UKoWexbY<`T^~3%5iw zKCw*?@HjFKQK0H!LFWzzLFky>0&<vs=7f5r9mubrXB19oUb!ps7Hv>F5zAYu9bH2` z)tPRqg6E7AfQ*`c*I0M>SfCB`7F1*E-xo!!3Cy8Rm2g7!GmWwQ&ElA^tpNs}S?j^B zpCA)W3M##yQ)vfLrnmQ6Za7fm@p|ovBngO_2Q#r6>WPg>cfHbMFJ=d;RcuXs9a|M& z$MzR~BCV)hcKm@_fV)7ITZoeatzz&W76xzZ?|71qjeXBgk!Y>GIzVXXN&h{HKp@8N zXCHVjxB8Y=JzoIS7QMamy~#dci*+7&qjo34GGPGS?(3&FQa~chj8c2XGScT}XJy6C zfFx=0D4wQx1~<dtGVHKC%^+rSrn_67lfaacHQR9PT5V?%v5sNb1y!^BV2c|IG^w`j z7dK!l8-{>c*eK`mSfxQ@RI;)l=$Bp=zfJ4NyJD)PRty>N5<JGBN`rXd2jRtI25(%a zQ@sBkWQAxVbS~C+ElT~toWWhW>Dm`smqBB#Qns7jxVipuZSP~ee)n$n?>9^Ot|z9E zHOdbCgT~K{(G6H&96#FpiS_h2wa00^emyQWSIZPJnYR5f;9{2@D-GEmrP)5p_s#$) zFz{+4EEn(qcUr8HcvU_1r)<OsZJi1#ytxW0FvBx-CHl3+KA;0*hkOa^1Q%ma?5nWe z@PI*twUOA0wP(@vU4Ojq28i-*f|k8KYQepr6@nR3BPzSt?5?bI8$Ek)q+}>k0_N%2 zj;34SCU)1>;p4~i3+RLNb*&csFzC}k*aYo`6KJ+l_P0F>Y@{^;_`B8+n<6Wb8D|0- zZ(QrOih-`I^jhx3CaAlM-<a*9;mQi|gnpI@!#6dxaJ@q4VbE(xK73P=e5eu*ZG7z- zlx6A$B0zU*;RLGI@mUYH8$96Vlf>aD2{(Aj{QhLpIitN4!yzg<3?9<!PhsHl#x{%o zG=b1}OR7Zx8u8N1#ZOS!ifbxrRBD5UHb-cg5R+C`prQiMysc&gV$zPd@$<vcQ+{-v zy46{B!3`prKQ-W_Ozm5Hot$6ym<mP*6k%Eb2(<pT!YgRTbqw(pHJPhWR+c1E11>8T z3J9AI)W~WJ>M|WxSXxajD9|=n*Fj0J7pN=HxnXThU>PnhuAAzyc`ovmZTgNV17u)( z%r52a^H2#1;U4@1Q(;&IU<o*iHnbPZ>Zo5g#uw6l6yno!TX6UeWAsyxIMD2Q6-I!S znzmU)8x|Kp^<zz&1yo&okqiD(HTV^&;TJH$PK%Mb8BxP&QINcK3~8~dl_;7(E3wgh zA!USY+xqd<I;)>oK>KhJIB3?cJqTDV3|NgbW|psc5#=`ecK%w*b*i{w_TycibJOv} zWSM?5lJXO6nAr#$C`%gyG$JgqcExS{BuLuSmXK7`7UuNKWSQB1XbUdc+jTvOuern5 zpW0uw+=(Y!=<M1Vd}L6u-rWeG*Nvr(lUycSh2OERc2#9#iJP!EuJvJT;K^E#1EY>4 z;9qJ&ldZ0hTGw`DD}z$EdoiYg=2nU^I68`<?%-)5#tfV|<F7G{UB(Bnj#uLU-Vl{y zvMVbH7#FOIbvbs_3v`B3++!KWi(;LH$#+3}bcB?~hZoU#u}y$w8g)@t2fvGpO&yo+ z#eci;*K4)E{+a*%w;KO#r{l9p|L8cYHM-5(vwnAyPSeAT^2s=LN{iNivzjlH2};8$ zcCK2M)^O;FQ2mb2qS`R+^$+>m8TD?YlNyB48}Dj5kTo@Tip8`B#8c<Y8XM1O9%Omi z&yH)9>n|##+F^p&IjtQhljPv6b~NcoyXpt<`tifs&WlH{f4TqaVeQFI?d7W%KR<c! z@IkG9e~0IK?f&xzHC4L*)9c4CUez8v+1Y-2|H-qR+Wn_bYkc+U{`1#Q9`4kBdGh+P zjpEhA@9)3jn-_dWgGJ-dx1av>;K}pv?aL?6UOs(7H>DO{JgPl=_-gwx4c`Cm$<rsV zf3x;9fJaYWKYzHh)2cmrUVHwc_VDM2&tKPe9%~4tv3>Wj_Vmg9@18!aJz}KypZ`|d zdHHbr$^EAh!+!N}`*mauK6&n+YSh|(@qFju-+!V#>eU|He|G<SCgVR3kH0*=|9a;I zy}qiwdbsn`)7P5CqgOAUS$j`k?C`~-+D|(V>FECJ`}&-9WY9ZN?U%<78R9FA{67ER ze*NUdbJeEf*RObtYR?~j|MbcC51(&8<U?!mg?;h*#VacR#7f&oQSJV#Cp+r-#ZRx* z0=>{E?L22{YE@fc>%mAuQ!gLBVlkfGx7Ht3x1?pA{h84J*V<oigwt4i>cs-bIDGuL z0YZbTGT*A)#3hWavxu_{sAd3*>A0iK$=$)`1V@%@V1kMHsX<4jwMt`$;o!5fR7!lO z0x<go)MO1Q1oR<oK*m2gwtx{yM+jbO<5LZk1)i5+S4YYMn|2PzaXyN1l<4(OPymTS zW2Jxm`q|U?FLx=c83z&9J8wH5RvF?EqT+OaUxuH9gM_oXynJ=_5M~;uup}AP#s{nG zgZ0td?rHtr|MP#{y+O10{u2FxPOEOM*Q09l)kZICsu{gk3#cj60Zst*C<9eP&CI#0 zc`lcY5m@;ml4lwCxOu+50v9p&k(|S*(}%wYrGsjrdN3tV&<&L7(jWQWLq*QPN*J-y z(S6^yH;ZQhlS}A=?8;s7ygpwUZFo&=5Bf%#{pVjZ7{pZ1xZO``$OC8$rsCm@Xia9_ z3>agW(-}TPkPAsYvg#z!A4&8wLG`ydz%>+(p2hhgiF=dTxHH&EvJ6ecR2;q>9`_G0 z=Hc7|NrMATMzZ?vd#{A(*=N6+CTI=%*;)R{`_F#T!!kBV$1-H(U%mS5SJQM-RDb;W z>f@w~!EwLen^tCqb~2kyTm4@2=!@FO=h?-n2Qv&7gkJRB7d3&{=A1jG(a)d#(3=tW z$Aj5Xf5bGR??3yE*Wc_<)7hk(O!vhqM?Zb`vlJpv7qiJA`sK5gq3E(6M?WSq&;OKM z+_--JIl!_{_OTEh;~((%&vr5E@8fQjv0TxwNetKX!_JH6@~pzRI0X-J1a~+L+5?2! zCs{JYtF?C`!0kOU!#xUnMAs6W?bxp4LJ*apyeJHtyY2T@z6Q<BU%|<N)iRy^T<4ti zrJYAMUU533Be)+9t=K)sd;Vq<Lgn|n{a7-_(qvKYa$e`BIzE8C&QFk=giRO;d2x1E zX>Q@G(A>hhT&1=7k9=b=!QjTL?Ir{+IZ7vIrQMX6nUsBw#c^M@A#>k<YD2R5F)d$o z2lm^3TtBlh2eUzE(od!i)&Q4mesq<Va$xyHOP?Ai+JDyWnxyB_Cd@5BejNJKNBzk( zdzyBz?{F5r_!ATo^V6B@E1yuguTRY&onPs>2J^v>IoUSqwdQ7e)lt|-pXz>+U1i}q zge9CLuR8}efS>W}uu)Ht%?DQ<O3}ur#xuR@a)|KRXkI0|lT4yNq^G$#z3Oo6`%jIe zbJdZAW3_#pbl)Yt*Ax6`Y-D%_Zg#FZo~5mPYJB~xj_(lH;c3$Ip0GBuI<7|jtB!2$ z`%jIjd(|;bajxnf?-()2M?{#()hJ8l>rahmX5%>@55-~h@eF}T?we7jjd}rMdX(&U zPC9+(&xtoDR^Ka60RY^F$4e%C1&@6E=m4>~Ill5V$}N0q8ojHIX-xPE(@T0k_mfk% zuHR4kAiK@pRR>jV;!~p<8c*Li$MwE@jJM_b3KqWTXs%Q;1?M0a91roObYfTLi9aqE zySH%Zb{=BL0X;;SglLnSd$bm0JQL0k7YRH;17v~?@iA5)AqSgMhRVnbIEaSs6}|+G zYiRnvU6Gz0hYQ3Y-*mQhq<+-PBpPB}x=!56%{|RPGLS~ehYb|ZsqC6+opKAA!dMr| z)-RlxWCM}FR2G!3%Wo7VwVSU(M$VCi25B~J4=|ZWJfILt+S3c%JI)DZn4Gmc`Yk&) zPAz5UvKg|eq-Cvub5_p1$cZxXTC*RW&A%~fY<Rn}DcJZ{$~ChkL7<!{X5HoT*Sd6^ zEh}qAbw9BD?agRvHar_Ht6(-bXA5##!#g+zp`ACY%gRchRj1EFcgI?$v5)OAaCw&W z`UHN-F;sG)<i9RGcu>+hORs8<Q~5OO_ydoifpYk9AEd<xjgFMJyO<uabxor|5E@a_ zeTmR`J&O)A35{+uKnOunJaEhA_*Dz3sn|n;N;YY3d5yd|tjj|xw|AH}l-L~z6$;VT z2p?gYaD08_J~2*}4;s5b_MQw(7V;yD4>2{-DQ?nE$y(O_)00!Lpo%G%=T?E0m2xrF z;g=_8=96Q_`WL68ml%<W=r}{-$0@>jJt#N`PCY-tCplER#gO3cL&Sp2pYE>Tl8R=8 z;jb{qo@LUwxMefnpCL*H9Ha21D*LhR7Z^fL;=AiN_jZLvXv^#o2>jAsXLw3xcZ1G* zGn0o?Dpm7N*03Q;;ZeaJRRcmW)j6+5Ec$!GESp(OOh=Ai!Y8h?{FA&hd^&`CHl<+E zL3j8EQ#oq%_1hpFQ@-Pa#-OWn88G}oG5kTvwQ?H!@#FE5?hf`aCJy#|JXssxgMrNv zk0>i=(C&xaONu}nP2OBT=_Mbx^<rPiL1i<P=avIB>!$R1?eLrFe!zw$2Ot(Vpl=IT zm?-o>=4EXZSX@B;RqnlRNIR284GNnKq*K#Fe>9%Kyn$4nqeFMfFDd)beL+dO?+(%r zyfvK|#7mkXYa9L!om>b70dx3L3Vj4hcv;n_p>q5B<{0suMw8t;#w(g}38L`_TE$%P z7CK+G(MnYpz7s%Lh~xwQWWqpiWqs6m>?7h&{yW2g2lY0+e4MT(o7I7sU_5$hnm&)o zlHJ=7oVlWny(ZRhM{X<-)GO;!gd7y4Vb&bbVui3jNuM`Sm11G2f>AbKu*G$1MjQG} zwspt6UOEfkL028j?KQpJC)TkG@Dq?@RO*RLQ(>utMboc*zCtu9`xTUKfJ0ju$Ua;R zQM_G%#X*3^Xcmp5UNj6u=Yc8tS_;N-!m5d=04ipyb9p)7Rq5P(oWFy4wYi_ci>b{( zy>n9g1KyZ;0=4%u+z#M=+Gkm0AlP2NnFo%@SI&4C{6?i&wsQa?7=~leOEOqbL1n5_ zF`W&Eoyi%G6FnYp=vPZV5Zm%|K-5LG<ca9=`JhLd#t*><9W`*+PX;~6J<as>JV=h5 zV`JBP8+S&$>3+5Yr){WVTyiqH;@{rjO!B-jluxF*J95rz=I-`KV^SQb(g}j1ANPAb zd<6#r;f+0x9-gE@=UuM(2d<F$i<ABoFO$L9s{5KD|Iz3dugl-P*Ngf3(KYK$pLLdh zR?)rFo|nXckTM3~@IV?zF$PnO-cbl5fF0%^<Oty{=R4Jt&;@@+a$VIQ9QfWc1dP9L z87F8@e`c<5T&&@cI!E4_!P$g)biPjF<>p?B-UuC?Cvc6o*1o+X22t)!4Zq4l0maHU z^E#hiEBxb*;FFm^XtSp_{oEZ|ajRj69*W>eMGgv>Y5DD(L(PNe$R<-h<?qVJH*gM_ zxf2{`jdK+7<7wM7V)e$bKUzKQ_p;-5?c25W@rPzz?6dLGs0%H)q`mt#iwb!J<|@9| zIA7m@yTH_(%PCf#Y-wg~WRsi=cX)si`tyoMT-D{o?Kv3ETu-o(h@9mz2TYPPN?>az z;ClV$?e(wMSIk>b77#J|xV0<Z9nWz?Idnt^oKUc)mpF)^mBdl$SJH?2p-zxKmc0*> zh&)>Oq`cDGtaMcl8EhJ5VYy(xM~$yVV<jP|bP!6hwiTsGC<R?xsh8fSF|kJ=oL?1Q z3~oi%bZlWi?o7`{-CE!q!GP{X5_e8JeOa!-oC=DNy4)$tSJTOn3~L|GZWO2RO<>|` zgbBPO;`QxRDKc<<x`1D+c2X0f?U(#oU6)yWz!I3n(7XR3N}WPw*u#$>rJ`gLV02)a z5TUF|6P(;YX_Gg8T6odz?gjUcU6KGq)e(q23Y~VOiI*xG7bLdu+?f<Q1Cwh+a=hXc zmlP@L+T!2v*VjK!#7Fo7`)#E=xR>}s{luT`bjmZ1fv6#p-YXt2HmB@_MZs?S=Idfq zI-284T1M1D(Qc2b5A9bg0ziBOOPe()Ie$6eanr&TBslz3IPu)2$C%>;PCPIb5?L)a zL}i{E$@dh9Pm%rM=z-g2<gB;mUB;nk%;5W-my-X^J$P<Kx^vq)ys)EL5cwW_naH=D zMej`HV||{PO(v{cuFpPe-$D>%FKeHu1K@dyFnCpQ$Wd&RnCB;k@d9)tr3?;#&HkEw zRdU{ZtrP2`LXbU*sE|>7tB49o<0nKrmIII(<2KQSn1Fjb3ibyYIj&z#pk19V_DJ{x zvlu-Zq*%)*t>Z+VEIPlH;xXHWndWs0Vd^h^^<A0~(+vMmeG3DF(agRhd_cCT(35); zJ{wnG9;B0AGU2mdgy9vIQu)@scHg=ho?L_#Dy>h5n87EAFd4Ah8(FUo2kB|M=2(bL zzZUJ<_48+zOoVvT4T7EFNB=sw*mP^6x5;0p7vm3`el=FJbnHqy<x(PSSqb-|uNQ8n zMeS~>uv~ejayK<q4%AKEj!UoHC*`+2y?s-Hs~0(b4@Y!~ME<Q4$aSC)&)57Dk#DKD zg+KS2yMC{|u>u*8#HL@6sfWd@WcS-W{|-i|s@r>N@NL4m7Y@DWaWwYWa|rizXRl># z6S~xE3{4$(dyg&%zKD;@aoS!@=$aDSwYK+Z(ek-mWGfQgq|@uCg*dl9+?aj+_8Vg& zk^5lAopgC~?<>s<EFyUx3h%f&<Kqgk9&T@AWl)x~Y(OUeSQy&+nqKE}T4+^*THYId zn224-)|}A*&bgT29Z<xm2VuEmtoFgm%7O9OeS0+C)r-zHSDPB1Ad<uDrrp$vP!I&^ zFev!hTrgy9+0@TV(Z%v5yWd<cMmut}>bxb);Uz5l6~yRbSUALjK2iPLMD-(a8xGp0 zZ)tY$s1fgsu2e_}Z9c(mjq!qf{q^3QeBCIKIFxN9CSw2eM=4weXU=;h_hb^`-$U3j z?n|sTFd$aDajpCD<2Ne<zO~gYFSotB1QbGj+YOjfHB*HtppZ(R729tK(n@ms@?|6X zXzRFTN^m;5$w#z(NK9XT?7C>dc|Z>VC-dBE!KIYoJhpAM!`GS-UmqwWHtKE-+N*d9 zJ3TpVi)%d)r>ec6JaDR^%(&Bva=-ylt{iZWRpo&7FP(yRKxzV<xJzj7<pR2?$p1kJ znk!b(&xo|hr@6wpjDuU6aV|aS5W!@IRL7=6bXXPK72iYk-;@7-5hA8XC)-rDjVA7w z&awNMA~&0x6}&acWZIn9lF07rn6z#`^MSgY9lbD6T%OmP>ey746#>>CzO0`OlFHdD z(11ik%%ziLJm}zRe&au;U)?y0unEq|)|GQ?!f=5AD$;bd;_B%{*^nmly@LWLDfx$@ zx&^`pB#gU2$6;u4BpjU8O_g}*@JiY`->WrN>Fe{dxnXM|50lLevpCuO^9w#iYL^Vr z+!R(Q*_+V#60`a7<GPue?j!%ZeGY{sxqSKT%D4gCc4s4~k4atyypET{v(rphLD&l* z=vu`X2!=NW)mwlr95|sglI%IKdW7jAyH)^t1O=-DAu3gHW%<mVUfIGWv$*K_ZVsMy zj=<8*O$A0?6f2Oc4?nR2?C>H;1WdysUz^Q`0^~!mV`1}3@Qbni@tCL=_d;0NcPT*F zL1!P3z_PRDkGVAx1nZ#Ucx_2w%82NXoc|K<lbUS(tMh&zHEwy?S}ymw`EOD-{|#jF zJ9psxTIbdq1YOAk(k?lx;JGt^J;rT(kWAYB@@Htz+g%ER9;M=SS!y~r>0$oHZc}=L z*{|p@ujcH6#S3axMv+&P!BO!*GST@F<}JRKZa;W>-qZmP9rJ=(^XA6eQZWRj30tp- z3lmRMh}5Jkq^7%F7+D4G1o=?zX<nluK|KhC_rFXi{3DBAnow9;Akr=r>p-%B%3RwU z{-x&HzA3w5U^Hq!ETL1HPtZ}r*%IjWOtlsm!7*skY$l|VkiOQ@4-vA7F@OWHh~)js zQoSWSj6_4GkC9&12uXi<WT>{}VC<&hkS_1Kjecu7QGno&*luo+OYbO|-XLQ~maKLM z1RbpQp@6OF2@QSxXzEw0*QLC)ht41asaq$5sP4JZd`y2dC=6;|*PMGNoc*?Y))_ft z&jMzju8Je;lQ^eTQMjFvibE$5#pzGY5R>a&bL$K^)YfCj01RWpE~2dw*EkT@sQCU~ z{L&4N+zR#R%Xvc-;5lokbe$aJ4e9(G`qwsTbGL?DLt~pppxR+<I~}==8e&1zpqg#Q z+8DaP@u3d}sz?fMGSaKk=Q^({ypXkN#zs~HC|R%*yt2G|wZFN&uSe(g@UyKUUNo19 zRvzd^uqrTN70GH|&(1OZl<b7z*Gx@bIQoZ%2Z6i~?UJ%|PK3&j+IzDc2@7ix<OGl2 z`a3W;XK=YI38yPJ_%g`cp#*VMLg1X&yhysWxJ5*$Z7FOrMmam;m^gIy@JfI&M}Yz3 zsnAHYZ{$lgJ-kbL5_Y%ZXKx*AT9MJ2s>l7SGJ!cqKu-<#I}x2Qb;w7Tu)%kMG>D=s zr3A<w0S`Nmd)ZXIaW=dlOcv~GZ429%+ReY+Fa%wGB`hrmm)!B<@s}aoS6TGl5H6D= zRK#=-px9F9?TrdjeUvZBCv+Y+??4^qyb!*-(uZDKQg&bXSqM5Dv9P+%Uh%lFS1^7_ ztf(~SoRM>-$=6F>nv}cv4N=hL6+leI@^tYJ*(bnGVWF^2e6!*+zos~&APy`WF!tG- zcZzzpCsh5C;s0kDIKKa)tyysFE^p1kOSd%(#fw{W^Ix_#3!PuSH49ZQ8~%UR*8KEE zTQlz^U*4JdcW!3$rHlI_75u;E$jtYB`L@j0ykzYES)1}pWm9tMNjk1`Z^Ho9+}@M_ zg0!N+u3?s+1zcCv2Ww{EqOhwVuJj+;0g0)wR3ooDmdoVkIu>qdFw}J5F&6`j*4J*W z73Bd_p)dBMp+@Pu^3Y=V8gGP^5y{*>|20O~AIq#sG%0iX#^C1+GdT@D=kuZ5lr_i6 z;XZ;pMnwe#yS#p<zkYJaD`U#Mo5Bd~Wuz#}30$v<1IG1cyBl{{Lq%Lu-~91J=sX*u zayWu2xB2%!Z!WJA(qR(x)`QRg6K5p7@0ZNz*Yb&Q>8nH*u~ld@mhr|;y^Yi(?pO<J z@>muG(O7O+`kojypG=AP*C3@<Sm}lR0_??m=8_Cr87Zs8_)7VT8uiYt6=fJH>6A)C z^?b5)NTFKp80JPq4SWo8{r}<s>FF{S`?tlFa$Z+~B^nu;AZc%K;c(mPG#d+y|AT^0 zs)eYnvYh>%6me$WHo>~Sz*eCzEbAO3%-q^5Ttgfux%)dRd-2V|td%+6kejzCxp|v> z)p8J-f4{qid&Jf^?X@OJKDO5J7HOhSSmrO{l3-kQ%Fl|B(xp@Wp*rOSl76)*lg4Xt zN{#bBYs%9v+T|S|4_mw6LvSR9jdTevV3Y&o_Sf`W&#F_OC!1HB`RHFe^TL_Wsq66* z8p-)Rq`3*GfbvPTd|)Voa`McS>sPRWM}nr&u3&MJUOKFR3Ih)$B-322A>5#{Nu>+~ zKp7cseLZEGa~K3cw<HW~tbL7aZb~S8#pZmK@NkrSBnN~^I?Y;{9+$rzT>dQ!p>Inm z{GjFKZ#$QN%VO!<4miokbKhB;Dr+vw6N=x;di%1<TB|HiJSLCaPE1nKEP9OueL=!G zOduT+L67i`#`1>(tzyht=n^&YLYI^+bh+3QT6f<Q&NvG9s3P15FD|e?|DvhqU+fgn zW6PihsjL#?-{%ps2+!>+o66-whx*PCrRnfWinv9G=)hPwWso<ZzgfV_I5F(rgz<jE zrhQ5+1ZM(gHZa&LXp{}!Q!(a`oz*IM-O;Cd`;4hQ=XA-AS;+Dt_y758wt&|ErEB(y z-mbc4*$5Sy=|9k|EwHak)XdW%j=QEicE&@G%^b5T3pjpiE=>Y(*9D1637uAy&<9*B zu^MWvPLJi%Jg1F@ku`0!DJXde+Gq!Oj95t1tMQ=r1zS^9v5n>-LMkqQj$|qkI1^a& zh-1h?EGp{5`KfS&O0{M>LBsI>^huk<Z^Bvx@;MJQm$HtLjU{)T$T>-lAMQXEPO^Ob zpdrQ7x29Vp$S@AHO@3CbL*(X1HVLq(Y1x}?r7oR1O*UMDIcj|4JMm}y6VoU|BY|zD z{X!#abC^Sa%F>pr<&1N8)*^3RiH@Sf=z4S<9Ym+mNpu$NM?2An=v}lOJ&oQ+ucF5h zH)}*cN8d+3MZZKpMt_ffjed)MCl7p-0XVSR_*o_q*_%k$jzs(|Yo&j2Zg%mj<mN9- z>EAWB;>LgU&anV})!4fBAH8N%w)F_(x}pt8#=F1)ze=WL#z&4*1roq7RM;U-6zK>L z{J$w``85KG>F@Igm|paP_C5EouwP3wj4Laqza)ggRaig>B*qpYAq}#tFb`=fE2hec zNKr1o9OV{Y@T4Hs_rPxBa^YA<@&b)fHki(J$b#l>wB-19-W1fSxKr43?oT02{)sI+ zbDAHKDdI`8rui;Rr~Gn(JmoKmSaJh~+904a{WDT<O7F3xNsj+xj=#N}AB#r~%h#Tl zvOy^6n}xdOT_Q)*<-S(*&R(>$WJUL@E4pJVim+<x?|rwTTBHwZL&w;}vodyG3_G#p zMiz1skXHIxmBWq&Y+FV$7Y5?=4$cTUl@Zc0!xniGT-IE4NYA|3%nEsA4Dex5{d)29 zSU<^V=0d{`5UM+@&8dBH!V|fxqceNjS50r4+Tl%?Hy`ZHj8&dtg$6IZvw|@NB#~0V zwiWa!;1((sJXOJ*7XZmqJOG<7fdQi`Z@#y$Px$)8ef`P`&L}u@1&^)ZQ8A(K^fRpR zcb{Kjjy7i;k0A6pKU-tp+eFQm8@KwZzrs#+qyUEZ2Kvc9{iPVkkNTNwm;SCNN34Hi z?dp$AxK<DnS6;|yJW7gBKQO%yZh982WBgtneT9@F#w?aXcz8Kn#b!L*-?v$pB^YRa zDf-66@4qHJ9uCz?1R%H?TBGh4Q&t|N%ERiaEX#|PRxuOzt=Iyd7JKyuY1fktnxU9~ z6!@4^gD;9XLUG|0PRKHI^1f7pq5HC0#>AADgD;&cU_D=<p7Xtg*U?Okc`<f}l&`Qm z!wS1os#BQTX}}m9ysiJh^(1F-+*7cumy}4nm=-2?-{t`t!)l$9L%`eVYQB4J(Y24Y zP@FHkTVc0Z+Kke&7u{6+zY3mjzZlY-?Rain$3?~JfUg%Xj>u}Ty1G91<#*ntR}d=V zXq!#p@-_NC->Y(UO2e+^O;8q^u(`YNiVAdA9z3Y}YUN4fS6|BG678MOferos246nd z<;M34!}+7}sOZwob)z!ZZsYF;KEGDLC!~8?bvlGOM)~g^j(%19JUB)<eB+g`HMx4& zx=|xcx;%qF8b2=c@t`o&4lRaJ9Au-)>Qp9T&6&R!{gUaIaLB0MBlL@#A>BA=x$p<8 zN531L+gf0fw&kc&bJ(ojY%jcjLGWJwS}PFRO+MgRgZ3G3X-7j#jGgNJQq0Wl#Lc-0 z9L`nHM9}cz0C_?dj_E2LFtnbXu>JkY!KysiDJz4P6(IfSM!Wnh>J!6+#W{80Ha995 z*L+9Z*{p?S^&7Jwl<|dueyC?)P|^l0PN&?b<SqHtAa4y&IrW{++Emx_*+7Hsy)J!3 zBwTtk`T<-kUvj;kMns$F4=xE(ca!W@e-8Br7G8hg<Mjt--u*dse@@(=Gxuj-f8g@< z=X&%(8K8|T81fYSfUZaH@S~v|=Ac@>Ee_atglhTIc>=tYRmi{DRNwELk>?olavRet zv6;p=l*<pJ#~Sis^hkdYO5C5H-JkF0`(Mfc3>)9OIc`4VmkTdflRvqZf6*U=9Q{Gk zaesc(9|D@;qV#tpZi>-C_wi#v0x|)PJFxJvw<Psb*wmMzk&exymkl{OSrNJQW@E)2 ztP>00OO(bO4`UvQ_uaU?7G0Cx>m@_WlX)2GTPP#vgUSr6n30NV82U)nqH!P=N(x1` zH>cZ_)cJ(Jn?0ltYfqT{0#%2<H@Y6^zI^Y?-_7*h5;`BgtMUWH&ELM`dn`cMwRn47 z%2X0*qOa2(*08bvtk_6X_wlY5KkWLr6?*7e5C5dlXwB~+dYY`iM0VVoC0h;nYPaa< z<J?-KaGfb=3J)m6PA6V^?mN8V?AiHxM<pG@{E`)Y$p2gdXn%RAG_H1&3h=W`{@NNd z3=Zt#Fvflu2)9m%^*leruvZ*)8^$)n(5cUdp||-k_*%d|H;j2nZ;MNM8;B5#qrlb6 zIa4RG6P3N7!6@t%h{Z<nlu-!B<fG8rd=$vv)luBJbNg!tY+n0jl0Xo{-9@>D;5{lO z5=rAAc;oJjEHlCd-2O0lyJ?h>*|QtB{gk*4wszGdCY9>=QX#GPKD&r{fsf)+|91<- zXk$5*CfhlJb6S@Q&$&3hY}d;#uOP^8oh1C<?@qgc^1#XUUTou!hX0B!5NhVVQ&dsU zA-d(D#~>bqWiA{2qwwys0qO?nlIXv6mhk_4kmwwoCcul5{K*MJvn^85pvasDsp`gw zY1gofQ^*=f1U-TSi9&Nw1&N?JU{eqp0SWupLqxk_Pca$>fWW;G5V&7Cb@7>HMt2J$ zWSzKbmRlx&6XyfDAU%P@90hT5_{?F<m6hLFrpBMc;Thr%Jf4%nqu&Gm4E-gBK9}%) zm9NVjqEI9by&u2<5J-;$LUSCI4;}}gk1<UQq|}rR;gy~Xvf6Bm(&l(TALn?07Aklk zSigvXNKtswAos)QbjpREKRvw1kxnc(k_%}l4rK_8;8ZIz!UltxQnZwmKOt62?P0xA zdy0SHkGnt6NfV7r0w;>&ZoTlO?}c9<XhXfsTemz%X3oqk0N7bSJ>R9DuW3ZKI?q0- z$a75Y?T)?mY>JB9rI7<N;a1$DCn$$y|8$ts98`-GG1WMYo0uN*90+-~gIh8Uh0F-k zkORR26hi4Zl-`k@Ae8<d;y=D7xH>QGhPvNK^$_a*7V3Vh*oaV?g}UnmH(IeXyq>${ zFYVriR~4f~P!5KpQVxdba4thwDI1w7d@OS>OV3q9g&I3cpQfkDWV=I3;bxx7NH@5Z z%A5Bfa$ZYzj~rG+wOG_%`?{{%mMgLoH>9R+AIlMWA+IC(-qyb%{Fl8#A*>ecfKJ;7 z@p*~SS`^}3e17dY!L3p4$K>pkxN+G=YowBBp*U0bC-PT1<MOyehUKOyPqCQ$<C^}4 zIUde9cBc(CbP!La0m4fMQ^zHrxf_A@<1<s@dGq&9SYdBUA1TKKHVT}<i^R;8WVa!e z>l<<vW4F<@pPM@3AU&6kLUIx|>C*<l)8V9YUl%e`r420MPn6m@Z(}|~BhKc{i}|b= zA7mnN7XK_h`b<`e1sc{?f`)l-<^_d2wHC^-nm7YrFjrA&zUa?PeX*GGTB$FN6cJRU zzOcti>Wkbg{1yjDU{f%3Qo6!R7mQzd`SPS5lRtT8P7x52Q&>`utIup(Q#fr9m8ML0 zm?I>T{~BVYq7S$f_~eo2JLvM~x4Ry_2OINdVT<e05AMzUzSc>TZ|6IBl*+>+B%d^l zQG^q$Mb`;AutGu(3jC4RaOi@4lnzyxB}6Su^D1kk4?rib$N^<D**(D8x9>dp3Y1Sy zu*=i6eC}X4I@mspJiY_E!*JTifBI&tY1`y$Vjgw%7@IQ69=KdbTMb#0Fq!8=@F;n! z0B>$URA!fUQQ~sF_~1LkjrpbS2>PYQP`8K-RpD!~CD!?h%Sle8`Rq4JbMvR9yosc! zZIii!<8L}!!FF}%?$HiC=~J~Tq!8VR_Lq|hL-Wk-L-f`R#m8ns4p>4NhFr{{5mo%7 zgkO}x&hB~IUUqz7JV{2ytHtw^zgjpz@S0@)<eDgVCD<gV$Q(FQ=lR?>SS;RgdaVP0 z!WR*-KkyC#EMoKO>-m8!V2jfR{LuvSui}V79akB^W5YOp01G`lD!*O8KKbxU-Bxgy z8$fA;%E^lg)Sb8lw>zd$g;lP%eIg;nHIiIvto+bo2ZAdrxe;?W*$Ybzfe%8Fa!7j$ z$p|r~1MV{Uf(uF}kb4Mxi2QA@f9ny;2C=#Mv2KI<Ja>fip4f$m`^qD(EO!}+Jae8q z?w6Aft$$1CgCqM>vX3eonqa?u%aXcu%0=kc@F0k~<uX@oRxa|@#^o|styeDc)rRFV zSM8`=<f|Q)%UreV<sx70xLoF{9h8e)wIWaLDZGE~7~+{WOP@)ukC1G7LJArJ^_{{p z>LC+5YE}4n&Xl#3q<Rw*<0_t-GK(DEIXylh!S<q?n|+ge#o#4ga=x^8mRN&WgN?P@ z2#`pehxl(6gBg*TLpcP{q$0tL2_3yIMXFS-jI$c5U^nm1<%kPq^Rk!qEib5xQi$?N z*|&?3IkdOQaGagZIlfz<f;03lL>yFCqU3i4VJYrWN^{jMb1vn|DRsz7;0spzM3cpH z>r+<}ot4KQPOo=FPa0&%aw#|$Ty=9NF>|PuN*Vs$Hi{0-+tlt-pY!mQWa@(pg6zED z8mh1f@4X~nPChBG_kI~R7nqbW`B{!V#GcCD1;h>#5>uZ5uBSP;9>Ck4#V41fOtM?> zCh>zj5R{GQ)<`99o7jpF_JZ%!LasQesUZFC1gxyEWR+}#ig(BZX7M&-6InYl4vH2y zS37?AMKo72De1l6*8?1Y^aylFap<Q=)bu9G0!94iPSmJD@V>Vsd@P@oDnTuKG1<EE zG@`}Pqx-1LN0ihiun@A#T1gx1PnzI>xh{M@2MSbSD%Bobl>iM0-MUaKq9!x*sTw(s zFe7fK$pseeu+jVZMqj7;hj{1H8$AfunANn=4))zf1DkH69ZM-CX1>9NuLn`<3&#WV zXUYC2|3zggGpk?qxR>1yX~<4fa67*Q76wSFf(3Ll6<8R3AuN1urh<XW=`?LwrNqNP z?or=t)9BpZGb{GK`q|vxQ-!@>R;9A{;23HODF`KK=im9AKTbM5{FHi)clp*IvGuRx z-Lp}2GKx;gr~cf$?l7x~SE;>}dMl^>vU+W;wVj`t;f&EycD%Jt=yacuFM8_6&v*NK z@oWC!(VxHjzWYONLXLi*`}=wKGrE7~U%Nzf(R(U9%PT06$~?(*1foPMP_~>I`E)T- zmfqM^`hcC$-nh_+k|WtROJr|c-m|X#o|%Wz4}|mE<Io=8bB~=pR!9;##Jzt=fK-6F zaElqo2TDCE3u((77tqFhRj)uc^-HOY)t>XgD79BQ9J$qhu2)B4x*>MM^8QL88QG$s z3eIiP7Q`V7te9%8%aHyBhO)~NS?~TJx!BSSnM`<TrgUvApOi~U&|zy;lnOx)m3-J1 zO`iGuKF(Pa+%>su7#}y6GmLC}CFbM=2im|X9mAaP<e8J>GIJuTw6n6Zv#g07B=T|- zJozRL%S{O1*(8lcs*YkCiLBfNPriv^xe3mV6pOV{+~4%D-<QC=Wy|FB_U&Bp{#-c% z3e~$FE6R6&Zb*B^ee`zZ+GIg5A0-lLV<$1x(iJ-C+E&acu^m`4ksqSsm}xnA@)PNn zC!!PBxW*dXG=^y`3&|CL*9;gXaQ8dDWE}6K;xua<Jo#}<%j4jndrHVyl<n<ITo8Xh z_`lo!uK<e6>HO1s`wM{ab>NlkOIZi>j=%OLfBBMs?MwcKFXwTmotvJJnH>`QWx!&; zY<p!8uw}O*Be*!v8OW=o%!uv4h{0YHQYmOrI^R4;)3ltUN!PM?blI1-UBGot5>=&1 zZR@5M(|nssW5$KkQiJQ^$w+B@xo9~ru@t_&czwf4OdK29PcP(=kKQ=%MdkPNv^F7F zcEbIa`JF|`CSec@9#6XFjM3G&_J|9Lq#HMu5LcSOARop)XEW-z^N^~zEvAduO=)NF zp)V$3zuoX%;^Co>+;fSC+Y`8KuV`)C89{lGl3H4}3-<mFd22|qtSZvOC^ajuv2Dn} z0+;m*CI=Wm;ZdY$Q>mEOPdSrS+PKX{JR|P6AzBMMddzNe#Oi(xye=^Hx5@ZY-fI^5 zOB<18TJ~>jlk(RZCzic1Z(m3A&Z~T*YqPD2im9P(%-?>CJtpx=Cg=ZKyj#aglPf9b z6JN0!F5Q+7!DF$ECoW&KBkvL`^jGcp6$HH3Z{9*E))MBgl%{2}g#w8rBG~n!@mD>i z&8FQfwhQUGFXsr5&lM-g%Y8`%o>4?h)(r*JU#KCUv_ch){Vvo*R3)($S1*tZrV~wr zZsfz4=|*-&(Z1<M0(7rA{p!~xfMlcCBm>BA96){>G$nR#PZ)FUZCN-}j+#OrT;^Sj zVHxx}Qsx`anE^DPHwceM<Tm%`W3Jc2J@MaoQ@*@lAYMXanc(@{AH5@Uuu0Im4gKAy z*?OCjV7PAgCU_p>tozOM{kNf+vU?*@HOOBdKQ5f+zsU?_Jf8ux@;8N&dRt?Zd}O0? z-jwb(i#o=~3?6689Ra)1LU#q@w%sScmR;+o%Yv2hv&=sAOH(o@MNJ7anWnV;=_%Qr z!hSW(S+UxU<A=%_3G&Qcc4LBaiOyhF&9U6)Cr~iI&nqhGYg`KM5Aupa%VGOt#L-`T zu&^5tG&l55?}l8&3V(L^t&KHxG8M^H1lX7Fi&IG%EvDhhJ~tyr&^u}!3-SCW`N7O> zCSTda=XcO~`q>>Y-UF^!1iydg68HK2Q@@30c%Ke$Y7s8qRqJ}WhDMvV9_jY6poV;B z3cK=QSzR?#XtZ5<;{eCr6biiuj#ig48OiKDDVe>ED(l<Vc&F=<HSP!yDb}fUMbo^< zQcQJX?zB~nEPcrVZudQ<*0Mjf8ePW-s!o5p?eB<DI$F`w9K|@M@Z9NImt^|ad1!+g z`QumuhtCXoO-lCIoTyxErVTr@+m_wnazl_blb-4#da48TZFxU=?v^qYt>-J`X_jtN zQ^v)-9FmqVSzc$|GDha*s-qRk-*3p#A<rA;7Bqi(Q~nM(61-%9e3`FrUf~wNlC<)2 z>g3Cv*SRfTqLr6Jmv&3I9Kr)np`GaGD)}d0Ms^;IqPIqN@|93BvK)9wL2NLw5qWUA z8RY|R--_~qwQpBamAzho+a>AQ(eW*$Dtp0)xdywcC5)X%nIgWPtCq#6tnb~6Z?CL8 zR9q%Z3<&#*>5gBH8aBu;O?NDw8HNV*`qk~b{JqI={!s6SRtRcyW%o72GOe|sv{B~- z5@=-CwCvrL6({C9HNgz8ZIkOQ$ZXEHDbF>VR8k>3HNw%#%8`BPQY#;#T3=KU=!`(H zwbN61*O#A-GM9vVdlw3|<vw>N5WhgExk67D$k)CTQ%Dd15Z@me<#q{{Y1XGfX8!#n z|HhHUa*7A@#fI)_QOarpIf+EJHr3L}y!+RZCCb0RJ>9Ya*-GW5=o!p8-xjPWt>leB zV;4YgtGm?*^02!|48c#*FAl*-#|D;eLw&hP#TtLJ&9rjqn@{+kQ}%jv3ojEqfeom) zl-(Wek6_CI#mp9ELQ||oW9GagXNIidg`tGr<;&p4ABL1W_tLw0y5O|rDm#h&0Z5fA zIkjBLsd6QgQo{sV6}qYESImh)O{1R%SxnGZaAjIN{Eh4aK68;xi$uw3kto?lz|C^r zKel|3wvL$bQEaEl0W;S?+4f+DXU0cv#_n1r=auM>+t%S$<1n};lC>S`&F~K0;16Rv zi;+7JzMQ9gx0`KtKi?X@%D3jQq7ni5x@;WyBNFtX9i9ike4*`(+7fy1Lt;7%s0y6` zvj0DvqZws^Yj9pwU}s0l06Q+ubFe3+gMq!C4bu5hRtXs3nmPbIov>~Ym!0wC3Bsqp zo2sA^yLIu>L{2G*GFOb(NvEHajqq|+MbtRpg6PxEq^C+oPsAqTl)-m_u;7+ydC8== z7xD>QfZ~KDpU8^yxq--Gq@T{F|G-$nr(rk(Oq}}|6Zv5l$0YvT>_v;_mXWDwDOX~d z+`0qsNcV^o;B7}R+Ycx(oJ5hVpcGAV#bnO&DRK7ZExT50;&=^6Ojx}<l^eLwv0|1p z&Q%|jtA`2d0z{PYB$IO#-N+Uf8)%+#>d14#O`Ote!LS2VS7s*Y(y*CfP<JhS1H3N# zCP1&Z3WYqdO8>%oR6rCw7#M>Es%jD}KAR{}w*9?<_5b&O|G(?Vck>j@N28S}-|A{I z81%=}z5;^n15c}1uqob06>7z%Xw#(4uI6bdpQfk9P@~*J^~sYonhg(<2~b<`Q_i9R zi&U0l^TPx80f27oeYIYOS65bI&=x5*2dnls&3@naDXF^rY^jk$<KpQqIg|=uTYdl> zprc;&fDY|0JOOg3b~ncP%i{8B$4jS;MCL0R@-T=ELoD8vz}dYlUga$765i!YS0q1i z%1!q#Or8k24FE5kT$=Q~cugr80t^H$)WEKMHY~rgLK#XI{9?7VV&Nihy*BGhWrvEk zmv%)WXil@F4ixq99bgmT1V?St*v8=#L;G?|5IuiYuO)~!PC?kAM0LUSvP1@ksJhA? zno7vVl>}5WmsA?{Ysu#W)*`HFd7+Fo|1X9_jA!}BN%9C>_(>{A+{7Y5)>jpTVgwLu zzDNL-gY;@ddC>U`bFg$M`l=X;OEe4#SsVx{PcOqn;2ouR_}7zSty`e0++S-VzdNwd zRhCb5^|J(8GgjuWIpVCa(Er+``G?|Ec}#V4?;a@Xh04q4>>oo&SSCr$ilBXOt%7-M zrOJrM`unemc%HEo<)EB%mz-qU#-()iR<wFETHV0G5eK04Xd}8Akw;GIw=TiNa`V-1 z5$X1H-mE4g9m+oO)KgS>T&V&}y=X{#WE?t{Ghl4-?Ngmls5DT#`0}|h3Cb1ES}#_3 z8JKQREegVAzVCjvxmL?8U@c#Y-pl5hzrAIeIV<Cx=AFNC3ON<|Hzgz02uqpNaeC{G zRBm1Juib?$t`GvUU}?JbO~sltYA8U;?n~?@{Xt`Jqtmn-z_<f-8ugKr2H1OoLR21J zzqy1Ka!7@pm+9~Sr?<fd_5RD0fzL+K4<q^K2Jl>q90=ZWwkWOx_lw&m9?SvVhL}Vr zdb}Df1PJxg?o4@Yr0{*{QrvuZ_N3RSKOotKEM0Y66p}6cQeY398fkyn=^m3zVqa-x zE>@KlLlsw*G?}y&Z`z-z+#hixFB$kkU80Rp70Yr59njCrc|s$%zS6ZlXo0`gf4p>> zsT8MIq=ADJVYPKSLEKg71!`t<d=D~K8vpb2;&x;%dda8v$!Ynzes<grOiYpPIt_Q6 z#`X2Otjw?b!-RZN4X0QNm9j}^H0?`PkL&&-(Arw-CTT}P4PP49*XkFrbjeL1_pw<g zyna86i|g0(ofBVQ6u&-BYS(7dWS_NH_K(TFuFE$2eMokF+BvIbX)Ww%tus2Sxd!}2 z>(}hEoLYZcJMCx3wQB&)TyxvLaaXf-_eSTQ62rMi?v`@}^~HhI+kd&+smYuf*N?M| zd$w=fI6XaW^(M1%XVBsn<{Rwk^oIAuzcHKQNFX?}xy(J{61W;b%{8zJWUd099FNsr z!o<1uy~};-|7K;bDU!YPIauUfsbyTZNMKNX|6tHTLBc8x;`%6Mbjf6bBzW&HQGIdt z%jQ5cVURY7g|_egg)L1>8};O{c9za+oxud(JFd95L91vIHp4C<@}}4FWZbTVEr@Dl zjjd&D`(ZlZvROG^=oVuuVoWsLtD*l%YFx8o&6nE!%anA;Zf$E5obYN`@HwTVNru+o z!s~V=Yt&zZOX+toD8NQtx{PdsCTqFNr85V_a1s#-@hHB2(C>}@lGO;Be79A*rX2Dk z2bNFuvv!=GstJ<t%nk<0^jHH4!}1^{;3~em$_@ZVH#(E7-=)PH<)&Gn*6^yEZzmxD zG&?vg&C2g!w=)_sV9s1V=*YHq$T_>#8-PehGqB;An{s~aO6wPDuxG5n(Xm_21E<F? zt-yR^%hqApX<}@X{i9jGm)uB3H^8JEj8(UH;Q+Ocv*F<1rmOD2F}BrCZ`dF8r=YE@ zf5J^%c*jf*xwdfuw3i>7`IYOGSI*G~prl_aeVy7OmexfFWH_7ROvjjkU!y9ue%7k} z+y|8!h+lK_*cVB3E9?qLGDL}6JV96Zy41YQ)vfhua!^}b@A;<d?Ke60a<|9ZBHi#k z{+s(NyYg}>dWEHX1IC$Ox^8Ka?(4#JS#=1DJ#%md0NTP`0|!ozZ4Eej)8oatvt%dz z&H`pI)Lnf138<PL8+IFTzxy=1u`nIOm-C~al}5j9)b^Sf*?0-5-+FV`u{<^6rt9IP ztdhs8e(x@+18bzCi|g0Ve@rgIWpU8tvm)IX=roIcn0hN~{DuCYbs(y+`yL_wrFn7V z-rXCnvwQzBs?Gg(7bjsG!=+mZO{y>s^_n^J#xT*<@_X0MXBT&G(BQo{ZSt)4K0on5 z)BY>Z+mCU6+M#%U*298T>q79d#B-rOduI?=xS9^xX!;bi)8Z!hM%}4SftO(^F6YhN z<D2)^Tk>{dW%)h7fp^FBKjPhZ`K$Dzz4Tq!^&IlL5Q>E+YPGwTfa)^<QZ(X-aJ^>C zs~{v$+~oZXddoaW)!_?`-6q9oH@Of$(&?q6!P$)^W4L}kzF3&If!RW-R%3GcY78!5 z;4WFI=_T)2^bKu5=Mx*yzvNpDr~8>52uI+b*?_!_x%D?pR~rx8zJjg)QmN;2JJ7pi z2i`1`V=(p%=fgn%Ee8^v^`>C{p<=Cd01^`UHOQoAu4qn_c!g2!L6F#FnL#<b*k+jb zm79Fx$+2sZCNH8#RT+|tYg>c#s8NT{eWvT(aStG1H7_2&olLmVo{J8h2#SakL~bNY zr4vjKYsnUoSM6jI;v`<b*YBvw5iU@6^(>Yn{f%7tw(vl^?zd&t)8^H2I#!yu(|#{I zZr5+GO_Cw9QVX8(^jX^L3^1q`zER&@=6)IDTS+dR1-ndGh$UGZ@ArBLN<D0!#)SB+ z+A}<7a89&=FN;`o1P1h_+f%VLTL6krAUvSRE;22}dd%e~<-@X1oX@3ObFHqfjwjrh z%8e!p2R*qp8?T-6!H9*OcHpCXv0OT_P>zTDV4gnS*vOvyNH*!j8Hc7JMLnS%xi6&8 zm1tofx;;WM4Ca>ST_UA%?l?PR?h<J}kp7Bgg^K<OON;BGt}<oK%(t+dB`>VDRT=0e zR`X2Ey(O1VncC<NinT$uUKZP_xvgVRsu(POuIddfea|c;$=P6Y<qU2vfF53PNjHU{ zchmQ(L#J5r5R~-%Wy}7PaIPtL+C;&$yO+pcxa>tmAdx!W^WUGhS?sbQ$hBPxxB-)J zVJJwq^-cbPk4NyS9L9F%v;#+obDVT5&CP6bcAk}U$e=kx{Orot{oL!8xZ1QeOr}#< z>yIC~#r!j5J!{R-8g<|8&nAPFm3kdVk#Z49{qtzsui`gGw$qDRiN`M2z94`0H1jS^ zafS1~;qXHp%Cc~%f3gvTgIi-s(PTEETOBySF-+OgLD(zMAYo1CtyT+X979rX9_ski zxT2U#?)wfGNaBXTIxKMU21VR_799LM!nUjh6q&?tmWU8H0v+-Q?}m9w!!LPp?S?uE zbt)RVH`o{5h907e(4KALF?B6#rSF<v89Y;#AWH;Xg^|>M=xp~M5-Qn*FtX;5pjIwq zAeP#ylg)JL!Y|40@?q`8>*Tvoekwc@_~k(}EJEiq@YAVy6OiY}fu8oIgW<He=^8_- zK%O81^)r_mWO4Dct1Z6Y;MIc!PdZ!rC2ZOo&VPB~A%ZM?s&&uRb`4h{ZM~ghIwOk} zD~GsB?kC)WuLK8SC=<ssUN#uYGqSjUQIpaKo&A{&qN~gH|MXUM_$TRS2D&FKT<Z(z zDJ7lbMojeuv2#z=V=}e8bZi)zRRVZ@{D_?9PLBU(G=D<;i3&^*Hr!F;%^@KxT$iCO zVysd+Tt8R)7j1rw*p_ho95l=<4wtS!aeCG`Gs@#uIXzq#C3Srhw6cl8De;3$K698H zqTlweIb3G7fGPtGs==-O&10FGK%PZKsb@|qj)>LU%g;M1GR~%)8ZIt0v|5-d7zCQS z%qr#k$<0H~D&<SDFZn>6{Jo{XgB!INGufZ!$ZB5Evf>3~nN!{3i!fU>!QlpKOPLow zDc<u<L5=gumPyZ8Pe-PyRVLASJ#LehgSk`m8uf<vz<9-#Ll&+SJjpHRKzEB>Z4ZUU zE`s^!`!6#e{XB}kGxL#O8F`X>M&vdIL~|0(m!nNElPfBw+x|K#rrZ7|Di6I~jd1!& z#^s8CggayeK>Rj}ekHh7aSsJc-jM+|gpFUbAm}CR>B`FA6T->Y1H5qj=mtDHRebD# zfAm<SO7R@E-GZL`Jvk3C+*0%rZl)nCK;hem7mmXgqfOt#h;!B7vJb@EPVgrVt}#=h zoJ-y@daO9e_|Zk-dUky~H((o|`Si+5$9dzpP--!wT1fBg$Drq2`CLixuCc&Ukcka+ z&WZGw%Xef%>Ro(^ZAbh`9K~*>|MazGlfyOjf8N}FTrSWpx|99QX<{*98Pal3Xm5Qm znelSs)a>G;#n1E8VOJxSeJ3ntAb=YJ9AQfCCYpirS@;*0Od$NOa4_}%_y7DqY6^`r zY0zZ5taD&l-Ehxco0s>NiGxLGH3$YaVgSimb&S~RY{VrBy+i`xJMJs{<H#E13yT~$ z?jt$KQ8=5-;D8Y=2Suj-`L@b!xFf}mI!{>u&r6GXHaB(sAosprfX&<=U7M&w#CPTJ zumz%X`CeJzSb49!P^g4wOJz4Z7x>fJUp#0_K4*U~gU;nUTE4L6^LG<H$L=HYh-8hx zjZmTckc&XRAg>ef805~YEGx^V96+B*JoIaMLe<z(l<Nzt{4+N~$UY@=puh2}w^&P8 zI}k3aV=?>^)du$`EIS6z8{DYi(rEMndAmoZ1ar&4yNCb`tG7hk5rEqP<~RVR-Qs|g zrh`x5z{i?YfYLyeV;jOf%eoCq{$Gms44^wys3ft~WnGWKVm}&Q28*Q##GneR{dPHS zPSWW2PgBd9DOO5U5k^*Ia0FH4va<pI<WzBFu^~8t!gHC!I}X391sODVQJvRRexpl> zVTQWE8qPd1<g+g(hHg;NXp4|Q`Vujm8>bD?h~Y@YaKz9c7@Y~)&*$JU#p+ZEhaWAa z!N1*=1fpp3>uCw>_``6Pj{ooTD<2ICrerFoAy#*7PoizUTOD7#UM=qX;teYn1JNaU zu;Za{+g^jf7MdG{O<V-)hP#8uf@KswM+lSW%gjm9i{>uIN%3q7ahl`Ss3=FoQbV^Y z6$>7Ynq<>LC!m0h@AJr!E)05tbrSQSb5Hr8Oi($G4emyzyrjbXK%iltu33zPyRKCA zQ(o#or}t84OVM5V%Yup0aNML4Vr;IjphDt$M?Vxhjm_v9ewrKhM!wTr3RzxKoN?SN zc}H*<wefxAQdinhZYXNc&&w7#|4gaW>@yNu>9$zD(}5|zD`siyoqtFz`_Ma`DlM$> zcY{lUIW*@IU@ru2NS{~abn~gZazIV&KnN0j+z`O+`8$6<IGN~}Dc&~c$mZsQbpHVD zJzg+vC1PK~OY1gK7vSz<BJtj>TsZ85G|XHFOW{{N58_y)b6(ku&QN$+p&J%>lj@nx zC!Aitip}RpHm<Q==yna&lE_Z+_SJ=~3`tgrxrJQzJ}hKlqCK{-E01LXDPfH))mhiV zLRIo`EQ4fY1eK}5QZ^KN{tCMXzqvq&J#Tp_v+xOW=Zpa^7sMp~Dfy~?qoM^3{s;B1 z%qrnL?$QZrCT~Y@{!VO{cX;x}xIIx;@_X{-VRK9D<Yla2mDTe}_dYd3qow5$`tW~0 zJMHsl7@*NS)NkgZ=Om5NAn4?$q#}C$FJd|`VSWKIP3KpB2{HY;N;Ew!{ia&#N$Iy& zrKD9&1ehzJxe`JAUzGJop1vF)$Lsws%KA@G)=8BB{DXA0tTY%^2t?ge1DWQaBtA^0 zLbc{_@#hIG6ie*AE*|$3mLHzN^2<}$kY(0$B$Y1z5kd<3_yi#x%wvoKSO0w!{Wyw# z8AU&RR{YUz8B_B_b^`a7xM7k^iq+lPXy0tFT~%S|azL6s4x(C$PIbZ5i`)xwlv-5F zlz6E=ad$$9%>Q^A#VMOtikhifzi$J!%dOwyS<yAt(Rd5I-HxB*e1r4HPLg5BJ({*V zk@E(TiQBPCn@*x4=fZLeLm~WhNYjB0w)P8vw~nle8D+*DLnqufJF`}LaUlMtTTQYV z&c->Z;Bzw!{gPb3+Im5t67>+QltX7-cP2(G?2ga)G8^K4f3!~@M?^DE&DOT8L-a@3 z5~pV)!bS6bl6mW*W9?;?cE**&TNN=;4-@2U1ilAYjGGGfP$+_Y8PLLb6Qs)^h|H?H zeQwEAi6x)4klfkv7F~B2iSg3dpElUVPHTLOWA~!VjN9Ed<|4g!CL;UQ_McoVai%F@ zJ^UuZauPZ5WQ2Ds&MJ+@{3?{jk9te?uQ1q^m1{T+#da+P$vUoeTJ-<obo3H|Cz)ht z<T0=TH4!6#6n#n^r!n0efBe|vn*sSm<X)cl52Dm{EP`PYeN@%}>mbQ}!d@Z)%vLdS zcmMrX9Ivme^jmTVx63E%ywj>G8N|Qex)!e?{DpNaRa=k{+>!?0daoXhYBmeM&I0>< z1TxD74Y&6~h=?Yy?gBdCDPG|68^(93{SWm2nJzD?J)mGC$qAC>I=62EfScixmm%QD zrhmC5&}?S1m36V2rKI^QA8wLJxebHwDVJk;qx>d*MAdTAC{lil8(*vC|4chNvlu@g zTY{EJo(Zaxe$nL&Q{vfD1%G)20a0W5!klXTDkb&nSeU}x1?ycBf$NfQf`_Cq`uNd^ zoL%M(p|%IRgn0q>UJmd)b@!3yNrSu?n39>#40iS$au!cdhyC};@)_7oM<$h+L5e># zJ7k+fN0Um0`spSl0T!fKasATfof}&LKU-RaZm|f377q<yVOr#(dAa#;)}=MrmFiT9 zPH<xc0TW}>O}2(9$wDuAiTfgT>&>lk+McBsB1uG9OSd?Q)pvQ>-Te%u;C|*jDJxoC znhLE33aykOu?}hre54$i?nN6KWcMt(4s`JYB}yBhw&sKO!`kSZpzy3N(X3b^MFW=y zY;pGgQ^3i%x(M-kH~RqN%gta?Gh0qdETZp{k^2e8+?Kx^Ix+5T9f@seU&m&8Ooc;y z5$)Yk8krwAc5!p1Y=4_ep=V@Pj}Pc`4ytAo><w5Y{3%5#kL~wBesS91g_D!NlmM4P zPrAn`dOR~2D-t;tqNzYcUMbV5QznUXt~TIX<_n_RSOJ<wI)IlB4_MUb8Rf^1`<C`a zE*zBum=DW94&#^>&P?DiEtV>xbV7&Km6v_$3LscLsam#6F_(yI1zmg=J85z-@yfL? zYdXYufNLuV$F@;dM@wPu?e5NKac(Pjt&B|<hv?B(K(3%WR{NhucNz%%hj_OF`5#qR z72NhMCLQM!H|KsVE?CA{2qyNN!Zt0vF4GryOcaVRNb%d&?g=ju{W!rJrnyC$KnrZe zy*fQfa!v{}PIv>eRurq3El}>5>##bbjCi>~5Xy3s)B5I`!s<0Fm5F$T@25z>VRb34 z2w>mrweUp!uLo6rT>punbiKNMS2&#i1M(5ag?h&X#<V0b7Q6(yVqD4xiCt;YP22tS z0<(Z|0{D7*X$(XT)fc@k-BN=p#&H5v7hfcujDvq{v3e&oqoRtgyG+#Kqb@G0?yNOY z81HlCWvAet=sbV1IwTh+6B441d^ak&00-yCQ7$uXD(3W*2+Px&`8GG|+v#l3t0|^c z%BC8WvY!zTT%e&-24GlJ%8ql#PLV^yT;9!>h5Wb5JMTv~B^5ZTk=7w$gZQ>_d0R*B zx1}Jy@$8R32FWUcb6x%|SkTt=<mioGVf@sKYaB02$L`1CUGJ3oogD8iUy6U8^Rz*d zfvF^cIr3e&{ISSPexQUBTx?-?;NdfAG2-H;;|`UgN$|=$`7*x#G>wjpueVKlXp4$x zURb?5ky|;r*CDspO0@)8PIqyTmWaWb+Xc8yCqSczX}Nss0Vr!JByAzL>wW?BGHRKd z$H$NCijo%3B|9b4oq_$PB~l#d0?(baLC>rMT0$3M;KNK@O){SPD`IlfS^0>VD%5g3 zRTZJjEM;HS{$^<}kc1~rvtW-d>9`*lt0kYClGg}aT5?1HdoBD}CAwkKkxFm<oAm6P zZ{(+A!b(X|%AtfWEW`~vc1&Pl=t>tmw??G*n_DBHfla5)#W{XzSfMh;@>s};&ghRO z{T?>B@AU^ttnj48QGUMTJej7YS%uD9|9NRnd%+5MqSC1~%Q?Yy!Qg=GHk;GC`PNTM z$x1u1K^=)#*!tb+-j@CWi*>+a?S>u%AG$hN<-&&cLj#aMhg`C0I$tqs+G^O%?V%ja zpIg$466V!HI&|qWzAjrfiFqtrc^|pZdmw$bEySFwBts2|)Mre(wbxR*lQ~|hNKEFr zr!wPN4{){w!al+Mm`j}J62*Cjey_m#d?+8_IM-*o3+~PG8;+tK^#vIA%5N~>B4ql> zkTRn(9e2cZpGU|)T;F!*jG9Z%Q{=PTjhuUHiRR_Q6}TyX9!h;TT(U|9k5PHfGIqAj z4UxbPAV^#)sw<ktQ^;gxCwI)#Pg593T+$5Zw)}05G)20c)~uLGJ2e`XrAJ4DL>_ZS z)I1p*DB#6ih<Y<1h6+)t&o}4EkdmAWInTd_9u+<1b=Qq#6)%|GE@(O$1iJI?%jnMA zH2Pq4XTE!gPtnVqTlaRpOrM}Fw-;&4gX)QL@`quTmO><?^7nfl9{uJkQQ4Cev{_=O zs$vTwjMG{83%deh?ZV$k)s@CS$|1t^KGPcqgITf~E_+>_9`|vFEz$&-007oCnGGyy z$k`NPPORjWxt-S8iv<;#-6&3&$3dPoXUE?)UVEK%hE8o(B1m437kqT_&_#E9uzGxQ zl-%jgNwM|P3rD0DQHXiZkfYY4cJJ2iju^~<ov5(7mo4_zl+Zh2(-CNU8f)coY7)Ml zO4}5U8eQOUWk+plB7OzA!qhIqsx%gyX3D$ijG#mOm6`MBiGOL8mA@fuWv$c0YgFWY zoDvx=w)D-_sCi&ZYOl*MT7^x3sKf$g(828P$V2F6COVkP)$&E!umd7?z5=nLZ_*Ve ze3{%$!<WW9>GpH2Fw%J0D>HoJI?F%FJM)UfO^FYMA`u0Tk#HZufG;CGOW6xH4SNqi zx3)Pb#y=?0@oDTQFo03n9qeuC9{^%%o|<~lB=N_xa>0fDSX4whl0GQrYQ0!xBk5s6 zTo~?2x+l-C@snPzxuoMVRdzT8kwLoWWrW!~+8ca13{iGP_5kPd@h`^}M8=YY4Eduo zz(69IL$@*;PWS|Z$ep8{i{_tuyv=txQzq&`5g{9Q?C8sx&@n>JufBAT3(EulKu+mA zsy3Dve!&kRYnCL4=gU_*>f4<TfRaaD`!mJ+?q?~{2B`g>av#tj*|C7)hJ3}#$J~&% z<1lPTJhLGUR0Vw(*MBM)f*5W&h}UcP?P8!1tgBqmU5LH#`=o;315&k-%^`Li@NM5% zMDxaXh#hT}-Hz~+=3;2K<fvalyH#nz$jKbKE=6D{a(W(xgWtKkisTLD&m4~8xVm%f z_ZKE5kGr?smWs^$Bkf|vx12}CI+S<290-5K?J<_JL!A8Oknpe!34S|k&Ud(z7QUk; zC+FO0bRqM4PPeX}c-l|I@K>IxRocIQVPfZ}|MN}xWqHby{k@{2k4cpa_beFkDB|wB z=r}sy&drnPjB7J@q7U4Bx$TIHu|*ttu7)*YbCCAVTGJU}B@?@{8;%@B(n$d`LBHV` z{qzV8hAwGQt#?JO5+f=ZE?VGK?Q>VUU&tu5WqP}(ZZPH?bdsRLURg0tlsjcBB=ItK zXl2Ei0xq1bEAxso8_JPzbsejTHL>KZaRH7NG<p>`h-55L-j5&UWKb#c)Q_WRM=g3> zeSP`B3``dgtka+rICLSmGU!syWEPd?P;lvn+m1dwz6s*$>zBNkxizJ+t(!3P)v##z zDEOouR&G(?+D278E-F4<S$S#<<bl1(Z^}Kj$7d@m&+P4qJ-%95d1a4h_V{>Z<*_|h zlq4jFNy{h{#N0=Nhnj@Dn6%tsOUh{wzN+s#&Rw{l>T^_j-@RRI*0~*z<2jFNpI72W zomBRh^yoWU>O<Wr4WPpD4~rK%L386N5ttz{don~bn^NG^5c)Fr&2iD9Bn%VZa}ncx zgV%vCl%=Z#te1hFx-6{m`*Db~u4yf})lPiCX)@Wy>qksLc{ri~;1dzM8BD8%Wr=r{ z7a~zdPP#B&rr>k(7%flvI#52UfSUAYilc`8A%v`)3GB5M9$CwWC~ZweKv@=DSN$wH zZbk-~LslTX1i9tc6PHU*xp7)>TCID+0T;NIOS9;#85z{(!V(v!V>SMORq-8GMca5w znBxL=KDhV}5pv6;?WAhEQp6JXW9s*a(t);MU&;@kvYdN(xr3dW;E!$Dap$nHQTT4e z0S*;$jZ?iVofN(<j#jyev6}dY&O~U^AFHBKUc6ST%gG0C$&pnsudjo1nBAsQT$mEn zGb|PgKQaWlWbN}*!>#24)qwtlJ67CLDCox4)2*kuT>Lb4M8x5>rv?EBD4+nS##1L1 zKXp>^)lSsb4_iOvjsFlklH=|Z|G^qRrEw5v;|JIH55Dm)p-EfMww~pEJc}KHa;Vn< z_6dCe<&9^qk7vs#;DXRfSi;k<EsjDS5&x<b4*$y9$uEm&zuIcN^5byZLxy<j(|O}n z>`0)a0KPmb9WcM4{}|G`5^mdiyw!L-KfK3oc#mTvxsjtt3{T}e<tM$_=H%y#z+3+3 z(z89TE`mFZ2DSTw`7gquc7jUyH!#EC0o{QOYPg<XY9v9LvI>dzWv}ebV=hLoMwl&p zudA%)+oX)|`PY3vA2_A!fw(T+?!Yo6i>@`?e(h1IN(_7IhapV;02{7H@2aj1f51wa zf<rdNT53+l{VSx{Dshg=vK3^Pvav8wu3W`BpJAkEBd_92gT)J$pNt&?m}c|LJ#8?y zR94L8p2HW8&%m9x$l`JT%k;K?q|wW&AK>Nc+8^@8bA)BNDKNJM?%ujX?usZaEV|FG z)WG_p!uP#>xELcRcR5)6`%77TE*f6j+tPKzZD;WcDM+|Z_!f6AAR!R7a)w3D-J>AF zjUE86WU0;;FA~8+t3P$un8hO}ewJ)|j_Z(}9i}*hmZB)l;>2tA9UZ>2GJ-GqsC%wQ zkQL6j?hwgI&BCCYk*g{*233O$Yf~uEZZE`!%pUV+%=;U$jLmahz_a9i<=nwVExDHK zm3^<11D|DDOy;T$c-9%q$c>*+Zj2{K90sRbg{jx69)t1C={fBbj$#8WOYG2zr=%;| zv@2g>Z%hx$=67K0LRuelZwva&tExaziG)u+sRHHRmRxmGxh3iL1~-t*ZJe8N<nKQW znqP-t7Uf<Cy}DT4sVI?u!eVe~de1N1p<<9V)Xk&S)y?K1KBY%{Ex>dyKJrzrqdi6@ z3hRCle%WV7@z8yF?#^fu>x#!g1oPT4cTkgL`|(t6`<PHS`&$^W`bMQ>T<ynQRvS#; zm#73<w~OjK(RGFq!z*{>6V9!I2fo}c%;+3U8%L{$yPZ9D$@P0`qapw!ItjlDAKEj4 zA*3V`&BJ0vkErIR)?}i|Y5=+l*WDR7TwQevU<B^rW^hEv;_JJ^Rit<+q<i|ItbzI% znABfX;Bh?Kf;-K8L%r42h{l@jV>$10Nzc}`sr`~a;;H|&b%tS~eG+Q$P5ZzWD{bC$ zKlrY3Vu^zxOsdVgo!T>k2KBX!7!uL2>A??OyXp4?l(5^|+jN7lA=5oUihSWJGs&}t zn_W=+*REffP&0)MP!bgKp_J1Y>?F~9Tu7rI7?E8p>hS^U`)eSf0Q>H^1h8}N79#VO zoy_3fr#+~C5Y+4L1L2SGK|mUz{-uXY%Hho=KGu(`D1~{+CkEAURZ+BPA2SV#r4Tt- zd}$62pVJu^(bUo}IJL1;;7eD0EVYHS4>P^Z>yC@MLwkKhT?D=5`s0BzOy`>Z<r-s? zx~od!^|RY+H^0Hghj3gn@i{WVEeq3Z)eT7Ea8cRcTjI4#&f~+yKI3f}mH2ykpmrN$ zQ+W3(3U4`xtm2eDC`LW@dTxvE=AmT3<SEyDln3$$0(t(%kJ?&ZHtLzXZ6)?J`n|p_ zjXL<MIKSDlvcQ|Q{Zcqjg0OHR&!9c&1~@6Qa5%S6{>Vqf{+I@w3})_~=>am~p|_@0 zus`Sl^aS!egdqm;mXp-tHKN<dUb@M8F?<6_aSzR-C0Ym?^*bxhYr>pKN^>i;fZ7pK zKZI(ZSc0l{T|LQv_j<+R@~C{MKsFn~jaM-_ewQ|kM_VvC7WNjSGM}|RR`zK;n333W zl@wHqn`E&Yj^sl30~)!Mtmop9GgmkR<;I<j4cMs(<k=C~!cfV~KWU%zv%TCt$%-tq zPkPh!KWvxum=L$2`KwRqaG6~alxW&>cJmf$F}I{obt#k7<Zu;MY__vk$#gczrYavU zqDKFAA?29uaE|8WfrLWMd6!Li;PiWs2p%{VF5OaPoBcsAcDst5GJnqdl_@;wfu|5a zi&LRoHm27u=J`bNQ$w_LrtIrilzlqacAyoHz-i47yB+UL$2;U;GC4P#Q<8k3j?RxM z4iL9iQXpt$#p|P%Ei~fteGmvM6Ds#4a$mCiR(m3yVyN9$?fC_eIx1hBW_0HpKaMM| zizsV|Ueb)#qghqv{dqY=u?_fxFG-8|8B^;RvSisvlqZ#lTL~fM%XpXhSpGCps&J($ z?fJa&KJIXu-xTuG6FFIw4GQYW%n2l4pQD6c$-H{Z%>~W^T2R4?3cErdE70mQ(XINX zDzNH=J8u1Uh{=-%WTKpURDlggUa_x*MiCcYkNY=n2dthO&@Wwe0Yaq}puW7jWuyA{ z%Qlt#l9CDrc^;<oDbc3gW8G?IIin==j@-SP?v1qcmX0ix5?Wzpw>ciZ3||<6gOc8( zzAlBax4NV|d|?-^dFQq>dkZl$DMQW_h~SuAG+5ZFlAq<hcw=S7=#<iyUIK~a@?J<N zereTTbQxgxom>dWKF6Pl@_VkV82B%kww$#JgBH^$R9pe$5vbfTQ<1Z8^(7(6J;k9w zyLMfV22j&M%96p10Iv>kW&v<uCa^^)6et)43|Cp}IVCfk1?sX+s->_k)>l!g1lJC> zKv+)F@>#1K?gD;_EoWWDpfE$iXhg<rJGMGoga;#grN}9r*zJv*ZO7D)6XY3&ND#5P zWFa=nBa)Bv@B}t*tH0%hMzzw9-A=ki>RT)Fp=3&pzH6nQx3V1k|AejH>TZ$B%ulQv z+rCF#+qZ66uga2=^UUVfb))ja($pzED-a<`)Ut|~^1+oM#=j48P@wB5Pe2#8(Naa) z-s*>KCqK$Z`KRhp4!T8mmLFufUxW@Xr<F7|H2ulb7eW9LTrPw2GUyJHL)=Ro?3R5; zDzK|eW;s^#Aa#ykymOvNFIhT$MID<Va^u3%D)pI=9MFs!;t8^Jn4-a)En|7De)-f| zy)W>dF6FYz&5JuMe<QTgZdgrrzb1Je2>_DG4tJIL)MS1^_2KrhZi_TjCN80fdcMkH z9;8{8La@GMIfFVC)eqrn#)P1v(@;3VW_m*Vl$YBqc=2^{wsR+ze|8^Ati;0F|5#r8 z0Hw}*=R>jbK64C<e{(O=)pGp$cF(rq3HKy^X#bj4_Jn8~5GX0*+`_eYe?j?u?moOA z0=04eZ94(-%VoRC7E00f+8*3Ju-o4K>5IMrRkwG)|DsQN$zcbky1o1AOFp}Zm>oBD zC2bcH3?zGS`e)pkoFWn=hFZoY+y)qwud$>kPFq?*%5{&*`r7(!r@Xv#XN_xbz1~?$ zU>jY0&V7v8S$h;&;4)+M2?cYo8oA@WkT6gxqtfwS_C8=nz-d0A;NLF?sN(|dk>!4J z)~+|WCUDhV$WvS2SX&!^Xx6p74tVnY`SJg&?%bQ&x~?|<e?JALei><UFc&*bE2?UY z6UTNOI|Rq!VqPpH8L)+fC1hY2X8N`Ib^1yAd)C@}pNoVqout!FQzPwj&OTfFvhM3y zTAvf8Q1{q*zJcy7haFUE-(AkqHu`-QYGrx#?tjs|JC)fQ0?D#HY_6>4_ShX3LPCmb z&((;nE+7~oUd#Mt!{{$tK@SipkIA~Hv32zuxdLJ{b=?89`5VwCe}<2y=6-DclR|Fe z&F$E_`WH!yu^A(>_i>jB#d-5qFE*p{<ju*QcXw5KaqMJ}I=PEloSL^|C*NR%Ppzry z&YuZEQme_c2Qs{W&_9>#`>ZHj@5?FJ!PYl97<VZA3LvN#$yv_!=|E5<vYBiKE7w|g z#;y18p8Bn}Qo9$~+r3JrsM4(mAr}W7`K)zy-H?ZHaAz<%c`<x3LI6gE^6VFG7y?^G zo*~z%u}LO%@5AwMGG-yt9sSnsUW3Zk+!AVjIQL`z(>>H@YBTY4GXCy8HAb23bgk1W z`aMz#VNavGZgi9wI{IsKxjvQt`J)PMk}=nLH`gWwv`1C)xfRf6e25|aO~3aPUxg<e z;!v%xod);GUq@^8Q%9IJ`P2ZJy3J?3+S6VQ^ECEjXp^GM@&VSbx_2h0<QK6#sTCid zPb&mU@^a*C$ZV9($gHh()=;lNhp}!X1gMlWBD;tm9uIcTRa*GQcfDFS%e#l8Mi3f$ z=k|P$WImS03DU?}BMpcrP7348pVzy<k!flud)fWbsC|hKL!-EJ(mpLbA}?fo>qmxj z_SK38#DDQOtLH<^m-fqQ6cLg*eG!k@J>H#;$lG|XE%`Mb5k+tksa;7WMvWHM(_K3^ zG1$f>hhKhvx@kJ<Pwi3rWQ?$Dl3Uh4J~=*XAhVH$an@kV8k!0<tLkg}3k$3Q8VyDx zX}9y)eh{o<LRz?-M{v$7zH4$PlzSF%q1V!2iKiRG21{=#Jhkt5PQ(UIKc*KbVvdS> zQkU}=Of^<tP`IJ+f<mkJr5D5m70X*;rt|}<ZPo7M_5GOC0=6BpFHh@t#H+DK2a|e! zpeS~E(Z&=XsP>2@_xxDJzw_k0?8)ZyXTUkA{MYfDOCE~rZ1D@fP)gM?*%m3jO-Z@o z#bqo))lxb5vtf+%HzSavh<T#<Q2yZIyH@QefQyY{R=EJPJ~YEv4K8Jj-v;HV_LuCS zd4xamj+`a+?7Rk@KlGNOjTFm1>Z{+ri=-6pTUNUPIzi}H>ebBn$G)A7w6hNg!^d5c z3@xaAR`Bdw&QCV<tq7f{9ElfZwZj~^31$iiQ6l}BxB~kcCQ!Nix$b_ai$4y#lYTFn zTV9eQaWLr<6^(9rUW0!g^P`&`MKzw+;F}$BEB5|*4UP+^l{qwAa1zc4^hitpC}-a8 zg_rl6Klf<DbF!9beIGaKplh6seD*FR9vtt5h4UIrehe}^fm|vzRru9~sko+|aw3w> z9SJXl_GCbI+0QM3(N(t7ORqB~8yb6lQ8;|xhn)K7Z*XHH4UYjRq4MA+WyRUra5G_w zJU;845PEFs9xvJlvMAnsTiDK*!O-<t_dYo4b>8*5#(AfEXTho?kij4%`vJ{k#S$5- z1bMmJPcS^$?kR5of>IRgJ%j3`qv_YDh(_gl^|YtUweuSC)C>yNd_=Q0ja{xj-+WlS zTA-9pvYP9<%u(`<t+T{N-RRX-1kit|43<ApNFI6uh`Kmef+QS#S@|@Tu_Ym9Jbu0A zgkw;@BT%KVy-1h)o6^~C^{i$ZpYAOKrYAT9t1lPJ*M-5bC?bKiYGUT=NwQ`0!p_m0 z)!a(dE+Su)${o7o-76P8j6ApUJ`O*-!mA+$!J%@8va6y<5hx+YDE!nje&obw`-<O% zF|_>w`XuvvgXVHeHpBYQU8PpE!Jd_g;uStHlWcE#2kwW`<6a2V^e-c9CT`@v@H)~; zh`i6zSzca@2$fL3dHwQnm&Ad!GtN1|9K+6JYy=Nkp9<dizpUG=%LOs_JHx>Va&Av- zE*Jmm5hdO1^xqCU4^;Hl%v#k45l27tKK&%RZP*^|sfxOkkk!6|$9mLexUuwZwCcbh z5aYhZ2qsx9c1cBMh(hxUl4iW6@%TDS(X$(;h`>T%_uKtNJ&LWqzV?jtkw6Pm+H*Ob zJm*{~EYUezegP3zk&Z!jHefI?tE|Z^2WGK4uU#M?4zoAhy}M8Rlk$2t$?0jMJ>DkM z2Ysdlnizh1FS1Zcem)J?+2d+)MfhLOw{^NdlIt57?u;H3j3NFS-zeGg^PdhRaGJ=a z{-!P!DCZPqhVTU0Vd_%hu_=O^o~mBaL-90~B#-Px_PjLly&eX%`N@EMbqv2$Kc-B_ z{GOMvxO!)hm0xG?T(xm6R`Q9*kJNElC$t(9xwJVTIxfU`5XX%-A;(0doA7Le8^DW) zlL|DvG3o8@*%(ba@N!8$;|UO}9QenmXvAO=0JSsBHY{v4-=rW|nwurtU0lfs2ZKsR zl?pvGC5z{Qd4T|%dDoIillR-)n;sBUDzt>^*X=D*@LJx&w-+m4pS^|W&kp_ZdzB=U zhtkXp0P0Ws=r{EqbYhw1gXhz5TcjQ9^;LK1>~R&!5YNA9_kqnV*`z}SW($Xr=c8Sz zz^ssz;Q6Sc)~J0YYnR;^ga5@j9vvSZRVI1BKK%G3`*ho*#f|VqvnzY;m&~pogcN$4 zCsktOMea_Tug(jgK$5C%NRJE%P;x9}7QNM&w;wcG)Q-nOZI&uIWefeXxMeufJRr!O zTXKgEEFkWtB*C)RG{%i}+9Pr5esLn*uUaZ5r>uPBV@+{6<;y&4xqmc7d07Tn(d!C- zt$0!eJDtUSPh^NVrd&Sq_{4=l95t}@!c-)`r)o`6%vJN^v9kPY<Cy9944m5%j8=r) zNcMa&6|3&(nU+(JlZ45a+XoB1_?0<d(_$nyr$&HP&PMPhZq9(kKNSORK-{^nZr1f^ z%#UtPn|=8;vF;Ou6TO==>BESDCL?o#b2BKM5fBnC{q<eAhyrtx%POKExfY2M-YhWA z=SO)Bwi)ZyOH)$#Y-$+M5JOxSR}#)@DY+voRzXCv><6<-2`a(Cb3AQBklv$aZS>Vj z{r_UW#123%E7#-2#o0IBx-~@OR?vm%%P20yULuD3VUL`%|7DzWG|Gk}WU{mZ%Q$g! zPB~7i<ZCc9$72R0Pg~pYsz9HdeoSS>O+&zW$Z*8s^1J|5nQI=8YBm~`evB5%+!w3p zAg?6;Ae0)O6?pU@S*RKoUgRXo`1|K$teLOe7;q3d4UMXlxGF@QKBe0`%5pBr3{gtu zG8XQs+l<Pgp7m5<^MLr72=rAzyej(S6_I3|TOaV$RAVN~vE72wgDQ~?D|dQw-=q89 zrQVe-*T8}<9hWU&M-}XPwp;^_=O9OF8<Y@U!V(d@se-vJ{X-DOm^Bkp8+CNGjO>23 zTL_Ilq#=cX_dyQUX1&|phU^l5PY%{rj*0SeAOu7hNrDDB5L+>3fB}@ZCgJmr^Agd} zijtr)wvhP#Oc-+>16hh4i)%XP7)x>C#hr*<SM(1^b)H!)ubM^pFth>~a7U^qs$rB+ zG4PB5bfyNNVV_e<3zJsq`yH!v?(#2Kk*4QDc#sbhmau}043T+dfnbUhZ}xQ+^{ool zq8_F|fIHLTTydHTI5;sblxPzR+52QPAoW2*Ez`O4<Fli=OQ`6a7w90n1g*IbgeRsv zJF%q*_=sv1XB^pk7A#j@EVY8!LNNU_*3L}utvEs#zzeDJg%j)oUoi(vhtl$x^g(BU zBUeFu^o=T(u6P$#ut0n#Gj^(_LpU)#bzqbVPENF&qvac>X>IA%dac#0z3N`wrSx#E zb?X(oY3VS7wphNzWLn{vqgo$WeDr`uJU1C*#GjL<6{0j}2MfD`R6v06fK97b9ME=3 zr)I|Dp^sbnfFh<^_?3&ZFn1IvJnDcX9b)e+7hyR4d$5=lQFwHB0oPz^32}UD!R)N+ z!$>diwY1Y~@tuMWxS`mv$%ntq>TvAu2Rxpx$X1lJ>@QNR{VmrVKK=bp>L#8Z;&!o5 z<DX@N5TEb+BK+7n3aL_>*uYSPRQD+iHP)e!&oW~}%sS2gF38@DbG;cM^zKJ|x9Ilz zkDl{x`J6{faERU=rHH>EbXw?c%>3MU=)n|8R8YjGqgl)6Pqiv610#~plE!Kw%{Pbq zMRCwdq{<EpUY1M0W#Z(+Lm714C4~_Eo{?!M<@wB&<Ih1H!aVjg`zd>p{g}Pae$F0c z53}{`rT?geL-c*+`!CZpXZ<piwEoraZBNc9s1QYr><4c(BqOtZDa`)#V~RS_T~vVx zDte@fYLk+VH&Z(P&9GUf#c%jar=;*?FEFt^+w$8=RnMp<B$L~A^Aq4i#<Q}WLJvj_ zNTbl>Jw-60x<=yYyCc2c4nk3^u-!Z~>_#QpnH*-)y5#Cgp20u={tuilRsYQVx+33% zzFbNsu%5=`uFUH(IunO_si1V__;vI$kM6W|zZB?sT8#Cb0bIn9J1pPw#yY&6cX(tC z2WmLF$BPd>DIa}nE@c7UzRn!j2q$+O-v&|bCP+J|(SCkqYhhu_u58*Hw-*++?dyeo z-C0=Jv9Is!>x2Bc7dEt2hW3;>`JRk6yW@$P#nQp|sQpsU-t*^I!BA<!dhj9YH%p*@ zWDO7V{!IOGNS4_+NAy`zkqZ2{%pkaMAg^9$G&wm~L_|5MC{Sgl{_%S)`-kdOh(V=( zD_s^ale|h_wD(4$$q;Yn*^TU!W4WCxz3k_A_~Bc0TYriC($k0hzIeg~e{3^U$e}zK zUMvzERnjq^6do;Ic<As|^WC08(M}~vFP@K3ALJ0?oe%N{)$eMh-%frRnxA6~#^3Ku z<8c(39=m#Da#BdGoRJ*k!js8V#~F`Exa#P`+Zt(YmL_pZ&TmYUm^cvAgu3_2pg1G~ zF~9UiPfap|UYZDcN#73q58z7r2AYzclM^O5K8QO?7e6Rk$d1ZMZ9iQEe-2uw6H{)z zsAqO?ime@dBXndyNN<_V7y1Sh(Vqv|PyXkL{=ifG&wFqDIUSr6?u-L_kUjFt59`^( zLK4vr*}6F=6@z7k9BQ}L1<#~H)i0GuR$)>mI<~Wy(UUsxa^~XIh*d>i?YK|SHdz<Z z+-LCiup5nf!)zim$3O}-zloo;Hd-4ANnoSt%*CnI1{13ls5e-c+J>iJY^0<RIxTUZ z)>dmP^|aMAR^-HO%T{QUj#$LnmUpxjI{GNDYHhc+Q=i*SXIxGqec3PQls!<}_D;8_ zMrWL@wbR;3-Rv}t%{gV=$v02E!M3UGct<;-qr&=qul1`46}Em)GYD|u#$R>gOo_s7 zf1g2;Z|1PAUawVyPHPL{=`=KW;VuYx0s9Qx**Gxd+(>!6r0?3HkGM&cKEV*_LH_3+ zZJyQ^mI=Zj2a3b~LBpOU@-XUJX_KQO8~i3)TZls?hO1Z^+DaTYwDq{8<H6$=MNY)+ z)T6XbJxW`6v}(&X&FYxhlwM946eex*Jo%UGZzCqMa~t8%2cs4GVB|p`0!!p$QKdgb zG)-3TISh8?5bD)p2z4Ikj726!9j5|)MckoS<<Ji<s~7_xs&?|3JV0m`A+Tb+e)*z( z_>5u%2GE!iu-zydp-M2yepT;5gXBKHe@2iWu2P<uD)g?sP%@hbGEy*`6B{0-LDp`! zU-C>_XxgZ$@LhD>bD|@dA7JfMP(%uul6)~cJm|pWzt`8%KK|y*?Bj={?8NNjVd#~@ zh_}nC#^=|1BQ7S?dfUgKO;}Rnd=zTE9gIS)x7EzbwT&CQS(fc3M+7C)$lTkjVc`B~ z9Ay!qvPpFwl0vRuBQ~cLCczpFt0m!z*5!DyR1%JrpfbXzO2Xm&^8_)=Bk<yGRR5yH zNeNyzyg|;w{P333{_i@>h~pIbga~frnkTAfHjY=O5~&9ts}*-tG?SE7ZX7J6vU#G{ zloFk+e5M;49Syl~SoVx`{RXNnWM%+mD^iXF8*eOBz`IWPzpRO=iW5;)x#Q-%yfGm( zP8=w=bIJZ1k@98`5TR_&T-#W}RSYD<^xRseJVW?S7@MYa&>YJXBX^9xdZ>i4ieU*} zUU$JU1m<9(9S(;g3>I5Vo*~?&VDebUg627H*<<2Oa%CEf66ATjd%RcRGWuHLGhtBK zpfxbQre`bT9B7EfItD@*8Zb1a)2SNcvtd`6uW?rfysR+V0yFWJxZiA`w#ke;VALqg z{D=RsjdgkRc;Do<r%3+J@Q5d4(|^t3*e~yP6H^x!HZeIAtqE3|MLKGs7y^6InzdV@ zY*Iu_Uy0<)07)cKQ7Fa`KM_EN?4kz6V$?rmMm>gBQO2pVsa88CZfBlN5)*M5MS-b8 z8Ot=0lK|l^&^#M;z6Z+~`;092aYf?h85Z|@CE`}f(PP6KsVBJH((}YCd?J2FNc4;1 zSmndaDb>*^yB#T2qD09@Cfb`5th;+8H!WZPhGYsNMw&_xmc!!w76jrgKX_UO?8Jn$ zKNV%ber)|F%7BrK2SZnqfN-H5sfrXyCkhu{dbQN<k|X(Q$+ffbtAHx~YN@vS|4Vyc z)t405(#J!)vS)>8%|eL35=QKK0uvZ)Sc~q>BIQ(wX;>)0*}5sxG}}E!o$m<DOLgYw z@-<W<(6YTW>YXuU+Jm-Jn9&?zyzkH!VoCP1nDr6zJs{>IoaDG@2?!p2M<}*u71(_3 zA~^1WyeNcO$p!cn1Mm$!S~3I`>2&^;LbBW0Q~U@1d8I!ndV`rDcMNG(Uv0Fo5vsnQ z*I2b-bF6dHLBb3_U6xq0(|%D5<J(boVUnf-FltvWOgEA!Z+WkqhOR;I*Zdy?LB=8` t`=(4ew49PS4Rt1}e(euSOMjemH6J*}Q(SoDRy7YM1CYI$I;DvH;a^wnpXC4m literal 83526 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 F_zRL4K5zg4 diff --git a/sveltejs/public/build/bundle.js.map b/sveltejs/public/build/bundle.js.map index 3c5073f458f9e5a134c29522be73f932c86cf416..3e1c6f0b2f12a24bc52e198dcfc37538b12ecf8f 100644 GIT binary patch delta 56731 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�Q*@?~m>gItCnx|{_$>6wci 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 delta 35160 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 diff --git a/sveltejs/src/Loading.svelte b/sveltejs/src/Loading.svelte index a60f8454f..df5da7e2f 100644 --- a/sveltejs/src/Loading.svelte +++ b/sveltejs/src/Loading.svelte @@ -1,4 +1,12 @@ -<div class="ajax-progress ajax-progress--fullscreen"> +<script> + // eslint-disable-next-line import/prefer-default-export + export let positionAbsolute = false; +</script> + +<div + class="ajax-progress ajax-progress--fullscreen" + class:absolute={positionAbsolute} +> <div class="ajax-progress__throbber ajax-progress__throbber--fullscreen"> </div> @@ -9,6 +17,10 @@ display: inline-block; } + .absolute { + position: absolute !important; + } + .ajax-progress__throbber { box-sizing: border-box; width: 1.125rem; diff --git a/sveltejs/src/Project/ActionButton.svelte b/sveltejs/src/Project/ActionButton.svelte index 6d9b63af1..6530377dd 100644 --- a/sveltejs/src/Project/ActionButton.svelte +++ b/sveltejs/src/Project/ActionButton.svelte @@ -1,8 +1,15 @@ <script> - import { ORIGIN_URL, MODULE_STATUS, FULL_MODULE_PATH } from '../constants'; + import { onMount } from 'svelte'; + import { MODULE_STATUS, ORIGIN_URL, ALLOW_UI_INSTALL } from '../constants'; + import { uiCapabilities } from '../stores'; + import Loading from '../Loading.svelte'; + import { openPopup, getCommandsPopupMessage } from '../popup'; + import AddInstallButton from './AddInstallButton.svelte'; // eslint-disable-next-line import/no-mutable-exports,import/prefer-default-export export let project; + let loading = false; + let loadingPhase = 'Adding'; const { drupalSettings, Drupal } = window; @@ -36,118 +43,129 @@ ); } - function copyCommand(cmd) { - const copiedCommand = document.getElementById( - cmd === 'Download' - ? `${project.project_machine_name}-download-command` - : `${project.project_machine_name}-install-command`, - ); - copiedCommand.select(); - // For mobile devices. - copiedCommand.setSelectionRange(0, 99999); - navigator.clipboard.writeText(copiedCommand.value); - const copyReceipt = document.getElementById( - cmd === 'Download' - ? `${project.project_machine_name}-copied-download` - : `${project.project_machine_name}-copied-install`, - ); - copyReceipt.style.opacity = '1'; - setTimeout(() => { - copyReceipt.style.transition = 'opacity 0.3s'; - copyReceipt.style.opacity = '0'; - }, 1000); - } + let projectInstalled = projectIsInstalled(project.project_machine_name); + let projectDownloaded = projectIsDownloaded(project.project_machine_name); - function getPopupMessage() { - const add = Drupal.t('Add'); - const composerText = Drupal.t( - 'The !use_composer_open recommended way to add any Drupal module!close is with !get_composer_open Composer!close.</a>', - { - '!close': '</a>', - '!use_composer_open': - '<a href="https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies#managing-contributed" target="_blank" rel="noreferrer">', - '!get_composer_open': - '<a href="https://getcomposer.org/" target="_blank">', - }, - ); - const composerExistsText = Drupal.t( - "If you already manage your Drupal application dependencies with Composer, run the following from the command line in your application's Composer root directory", - ); - const infoText = Drupal.t('This will add the module to your codebase.'); - const composerDontWorkText = Drupal.t( - "Didn't work? !learn_open Learn how to troubleshoot Composer!close", - { - '!learn_open': - '<a href="https://getcomposer.org/doc/articles/troubleshooting.md" target="_blank" rel="noreferrer">', - '!close': '</a>', - }, - ); - const downloadModuleText = Drupal.t( - 'If you cannot use Composer, you may !dl_manually_open add the module manually through your browser!close', - { - '!dl_manually_open': - '<a href="https://www.drupal.org/docs/user_guide/en/extend-module-install.html#s-using-the-administrative-interface" target="_blank" rel="noreferrer">', - '!close': '</a>', - }, - ); - const install = Drupal.t('Install'); - const installText = Drupal.t( - 'To use the module you must next install it. Visit the !module_page_open modules page!close to install the module using your web browser!close', - { - '!module_page_open': `<a href="${ORIGIN_URL}/admin/modules#module-${project.selector_id}" target="_blank" rel="noreferrer">`, - '!close': '</a>', - }, - ); - const drushText = Drupal.t( - 'Alternatively, you can use !drush_openDrush!close to install it via the command line', - { - '!drush_open': - '<a href="https://www.drush.org/latest/" target="_blank">', - '!close': '</a>', - }, - ); - const copied = Drupal.t('Copied!'); - const div = document.createElement('div'); - div.classList.add('window'); - div.innerHTML = `<h3>1. ${add}</h3> - <p>${composerText}</p> - <p>${composerExistsText}:</p> - <div id="download-cmd"> - <input id="${project.project_machine_name}-download-command" value="composer require ${project.composer_namespace}" readonly/> - <button id="download-btn"><img src="${FULL_MODULE_PATH}/images/copy-icon.svg" alt={Drupal.t('Copy the install command')}/></button> - <div id="${project.project_machine_name}-copied-download" class="copied-download">${copied}</div> - </div> - <p>${infoText}</p> - <p>${composerDontWorkText}.</p> - <p>${downloadModuleText}.</p> - <h3>2. ${install}</h3> - <p>${installText}.</p> - <p>${drushText}:</p> - <div id="install-cmd"> - <input id="${project.project_machine_name}-install-command" value="drush pm:install ${project.project_machine_name}" readonly/> - <button id="install-btn"><img src="${FULL_MODULE_PATH}/images/copy-icon.svg" alt={Drupal.t('Copy the install command')}/></button> - <div id="${project.project_machine_name}-copied-install" class="copied-install">${copied}</div> - </div>`; - if (navigator.clipboard) { - div.querySelector('#download-btn').addEventListener('click', () => { - copyCommand('Download'); - }); - div.querySelector('#install-btn').addEventListener('click', () => { - copyCommand('Install'); - }); + /** + * Checks the download/install status of a project and updates the UI. + * + * During an install, this function is repeatedly called to check the status + * of the download/install operation, and the UI is updated with the stage the + * process is currently in. This function stops being called when the process + * successfully completes or stops due to an error. + * + * @param {boolean} initiate + * When true, begin the install process for the project. + * @return {Promise<void>} + * Return is not used, but is a promise due to this being async. + */ + const showStatus = async (initiate = false) => { + const url = `${ORIGIN_URL}/admin/modules/project_browser/install_in_progress/${project.project_machine_name}`; + + // + /** + * Gets the current status of the project's download or require process. + * + * @return {Promise<any>} + * The JSON status response, plus the timestamp of when it was returned. + */ + const status = async () => { + const progressCheck = await fetch(url); + const json = await progressCheck.json(); + return { ...json, time: new Date().getTime() }; + }; + const loadingStatus = await status(); + + // We keep track of how many intervals have taken place during the progress + // check so we can announce progress to every 5-10 seconds. + let intervals = 0; + + // When a require begins, there may be a delay before the + // `install_in_progress` endpoint provides the correct status. The + // initiateLag is how many times the interval below will check for that + // status before aborting. + let initiateLag = 4; + + // The initiate variable means a new download or install was requested and + // the associate process should begin. + // The loadingStatus checks are for when project browser is loaded and one + // of the listed projects has a download or install in progress, so the UI + // conveys this even if the process was initated in another tab or by a + // different user. + if (initiate || (loadingStatus && loadingStatus.status !== 0)) { + loading = true; + loadingPhase = loadingStatus.phase + ? Drupal.t('Adding: @phase', { '@phase': loadingStatus.phase }) + : Drupal.t('Installing'); + const intervalId = setInterval(async () => { + const currentStatus = await status(); + const notInProgress = currentStatus.status === 0 && !initiate; + // If the initiateLag is at 0, there's been sufficient time for the + // install controller to return a valid status. If that has not + // happened by then, there is likely an underlying issue that won't be + // addressed by waiting longer. We categorize this attempt to download / + // install as "initiated but never started" and clear the interval that + // is repeatedly invoking this function. + const initiatedButNeverStarted = + (initiateLag === 0 || !currentStatus.hasOwnProperty('phase')) && + initiate && + !currentStatus.status === 0; + if (notInProgress || initiatedButNeverStarted || !loading) { + // The process has either completed, or encountered a problem that + // would not benefit from further iterations of this function. The + // interval is cleared and the UI is updated to indicate nothing is in + // progress. + clearInterval(intervalId); + loading = false; + } else { + // During parts of the process where the Package Manager stage is in + // use, the status includes the phase of the process taking place. + // Use this when available, otherwise provide a default message. + loadingPhase = currentStatus.phase || 'In progress'; + } + initiateLag -= 1; + if (intervals % 4 === 1) { + // Clear announce in the interval immediately after a read so if + // announce is called again it will be conveyed to the screen reader + // even if the progress message is unchanged. + Drupal.announce(''); + } + if (intervals === 0 || intervals % 4 === 0) { + if (currentStatus.phase) { + Drupal.announce( + Drupal.t( + 'Adding module @module, phase @phase in progress', + { + '@module': project.title, + '@phase': currentStatus.phase, + }, + 'assertive', + ), + ); + } else { + Drupal.announce( + Drupal.t( + 'Adding module @module, in progress', + { + '@module': project.title, + }, + 'assertive', + ), + ); + } + } + intervals += 1; + }, 1250); } - return div; - } + }; - function openPopup() { - const message = getPopupMessage(); - const popupModal = Drupal.dialog(message, { - title: project.title, - dialogClass: 'project-browser-popup', - width: '50rem', - }); - popupModal.showModal(); - } + onMount(() => { + // If the module is mid-download or mid-install when the page loads, the UI + // should reflect that by adding a progress spinner and disabling actions. + // The app will check periodically to see if the status has changed and + // update the UI. + showStatus(); + }); </script> <div class="action"> @@ -156,7 +174,7 @@ ><button class="button is-disabled">{Drupal.t('Not compatible')}</button ></span > - {:else if projectIsInstalled(project.project_machine_name)} + {:else if projectInstalled} <span tabindex="0" class="visually-hidden" >{Drupal.t('@module is', { '@module': `${project.title}` })}</span > @@ -166,22 +184,58 @@ >✓ </span >{Drupal.t('Installed')} </span> - {:else if projectIsDownloaded(project.project_machine_name)} - <span - ><a - href="{ORIGIN_URL}/admin/modules#module-{project.selector_id}" - target="_blank" - rel="noreferrer" - ><button class="button button--primary">{Drupal.t('Install')}</button - ></a - ></span - > - {:else if project.composer_namespace !== ''} - <span - ><button on:click={openPopup} class="button button--primary" - >{Drupal.t('+ Add')}</button - ></span - > + {:else if projectDownloaded} + <span> + {#if ALLOW_UI_INSTALL} + {#if loading} + <span class="loading-ellipsis">Installing</span> + <Loading positionAbsolute={true} /> + {:else} + <AddInstallButton + {project} + bind:loading + bind:projectInstalled + bind:projectDownloaded + {showStatus} + alreadyAdded={true} + /> + {/if} + {:else} + <a + href="{ORIGIN_URL}/admin/modules#module-{project.selector_id}" + target="_blank" + rel="noreferrer" + ><button class="button button--primary">{Drupal.t('Install')}</button + ></a + > + {/if} + </span> + {:else} + <span> + {#if !$uiCapabilities.pm_validation_error && ALLOW_UI_INSTALL} + {#if loading} + <span class="loading-ellipsis">{loadingPhase}</span> + <Loading positionAbsolute={true} /> + {:else} + <AddInstallButton + {project} + bind:loading + bind:projectInstalled + bind:projectDownloaded + {showStatus} + /> + {/if} + {:else} + <button + on:click={() => openPopup(getCommandsPopupMessage(project), project)} + class="button button--primary" + >{Drupal.t('View Commands')} + <span class="visually-hidden" + >{Drupal.t(' for ')} {project.title}</span + > + </button> + {/if} + </span> {/if} </div> @@ -202,9 +256,10 @@ font-weight: bold; color: black; } + .button--primary, .button.is-disabled { - color: #fff; + color: #ffffff; height: 24px; font-size: 12.65px; line-height: 19px; @@ -222,4 +277,31 @@ padding-left: 0; padding-right: 0; } + + .loading-ellipsis { + position: relative; + } + + .loading-ellipsis:after { + position: absolute; + overflow: hidden; + display: inline-block; + vertical-align: bottom; + -webkit-animation: ellipsis steps(4, end) 900ms infinite; + animation: ellipsis steps(4, end) 900ms infinite; + content: '\2026'; /* ascii code for the ellipsis character */ + width: 0; + } + + @keyframes ellipsis { + to { + width: 20px; + } + } + + @-webkit-keyframes ellipsis { + to { + width: 20px; + } + } </style> diff --git a/sveltejs/src/Project/AddInstallButton.svelte b/sveltejs/src/Project/AddInstallButton.svelte new file mode 100644 index 000000000..a384d7a6b --- /dev/null +++ b/sveltejs/src/Project/AddInstallButton.svelte @@ -0,0 +1,200 @@ +<script> + import { openPopup } from '../popup'; + // eslint-disable-next-line import/prefer-default-export + import { uiCapabilities } from '../stores'; + import { MODULE_STATUS, ORIGIN_URL } from '../constants'; + + export let project; + export let loading; + export let projectInstalled; + export let projectDownloaded; + export let showStatus; + // We must keep track of modules that were added but not installed as there + // could me modules added (but not installed) prior to installing Project + // Browser. + export let alreadyAdded = false; + const { Drupal } = window; + + const handleError = async (errorResponse) => { + // If an error occurred, set loading to false so the UI no longer reports + // the download/install as in progress. + loading = false; + + // The error can take on many shapes, so it should be normalized. + let err = ''; + if (typeof errorResponse === 'string') { + err = errorResponse; + } else { + err = await errorResponse.text(); + } + try { + // See if the error string can be parsed as JSON. If not, the block + // is exited before the `err` string is overwritten. + const parsed = JSON.parse(err); + err = parsed; + } catch (error) { + // The catch behavior is established before the try block. + } + const errorMessage = err.message || err; + + // The popup function expects an element, so a div containing the error + // message is created here for it to display in a modal. + const div = document.createElement('div'); + if (err.unlock_url && err.unlock_url !== '') { + div.innerHTML += `<p>${errorMessage} <a href="${ + err.unlock_url + }&destination=admin/modules/browse">${Drupal.t( + 'Unlock Install Stage', + )}</a></p>`; + } else { + div.innerHTML += `<p>${errorMessage}</p>`; + } + openPopup(div, { + ...project, + title: `Error while installing ${project.title}`, + }); + }; + + /** + * Installs an already downloaded module. + */ + async function installModule() { + loading = true; + const url = `${ORIGIN_URL}/admin/modules/project_browser/activate-module/${project.project_machine_name}`; + const installResponse = await fetch(url); + if (!installResponse.ok) { + handleError(installResponse); + loading = false; + return; + } + let responseContent = await installResponse.text(); + try { + const parsedJson = JSON.parse(responseContent); + responseContent = parsedJson; + } catch (err) { + handleError(installResponse); + } + if (responseContent.status === 0) { + MODULE_STATUS[project.project_machine_name] = 1; + projectInstalled = true; + loading = false; + } + const div = document.createElement('div'); + div.textContent = responseContent.message; + openPopup(div, project); + } + + /** + * Uses package manager to download a module using Composer. + * + * @param {boolean} install + * If true, the module will be installed after it is downlaoded. + */ + function downloadModule(install = false) { + showStatus(true); + + /** + * Performs the requests necessary to download a module via Package Manager. + * + * @return {Promise<void>} + * No return, but is technically a Promise because this function is async. + */ + async function doRequests() { + loading = true; + const beginInstallUrl = `${ORIGIN_URL}/admin/modules/project_browser/install-begin/${project.composer_namespace}`; + const beginInstallResponse = await fetch(beginInstallUrl); + if (!beginInstallResponse.ok) { + await handleError(beginInstallResponse); + } else { + const beginInstallJson = await beginInstallResponse.json(); + const stageId = beginInstallJson.stage_id; + + // The process of adding a module is separated into four stages, each + // with their own endpoint. When one stage completes, the next one is + // requested. + const installSteps = [ + `${ORIGIN_URL}/admin/modules/project_browser/install-require/${project.composer_namespace}/${stageId}`, + `${ORIGIN_URL}/admin/modules/project_browser/install-apply/${project.composer_namespace}/${stageId}`, + `${ORIGIN_URL}/admin/modules/project_browser/install-post_apply/${project.composer_namespace}/${stageId}`, + `${ORIGIN_URL}/admin/modules/project_browser/install-destroy/${project.composer_namespace}/${stageId}`, + ]; + let message = ''; + // eslint-disable-next-line no-restricted-syntax,guard-for-in + for (const step in installSteps) { + // eslint-disable-next-line no-await-in-loop + const stepResponse = await fetch(installSteps[step]); + message = stepResponse.message || ''; + if (!stepResponse.ok) { + // eslint-disable-next-line no-await-in-loop + const errorMessage = await stepResponse.text(); + // eslint-disable-next-line no-console + console.warn( + `failed request to ${installSteps[step]}: ${errorMessage}`, + stepResponse, + ); + // eslint-disable-next-line no-await-in-loop + await handleError(errorMessage); + return; + } + } + + // If this line is reached, then every stage of the download process + // was completed without error and we can consider the module + // downloaded and the process complete. + MODULE_STATUS[project.project_machine_name] = 0; + projectDownloaded = true; + loading = false; + + // If install is true, install the module before conveying the process + // is complete to the UI. + if (install === true) { + installModule(); + } else { + // This block means the request was only to download the module, not + // install it. Create a popup that reports the module as successfully + // downloaded. + const div = document.createElement('div'); + div.textContent = + message || + Drupal.t('Download of @project complete.', { + '@project': project.project_machine_name, + }); + openPopup(div, project); + } + } + } + // Begin the install process, which is contained in the doRequests() + // function so it can be async without its parent function having to be. + doRequests(); + } +</script> + +<button + on:click={() => { + if (alreadyAdded) { + installModule(); + } else { + downloadModule(true); + } + }} + class="button button--primary" + disabled={$uiCapabilities.pm_validation_error} + >{alreadyAdded ? Drupal.t('Install') : Drupal.t('Add and Install')}<span + class="visually-hidden">{project.title}</span + > +</button> + +<style> + .button--primary { + margin: 0; + border-width: 0 !important; + box-shadow: none; + height: 24px; + font-size: 12.65px; + line-height: 19px; + display: flex; + align-items: center; + text-align: center; + justify-content: center; + } +</style> diff --git a/sveltejs/src/Project/Project.svelte b/sveltejs/src/Project/Project.svelte index 9b9f49e4e..2cb089115 100644 --- a/sveltejs/src/Project/Project.svelte +++ b/sveltejs/src/Project/Project.svelte @@ -132,6 +132,9 @@ } } + .project { + position: relative; + } .grid.project { display: flex; flex-direction: column; diff --git a/sveltejs/src/ProjectBrowser.svelte b/sveltejs/src/ProjectBrowser.svelte index 7c943ea5e..58fa05755 100644 --- a/sveltejs/src/ProjectBrowser.svelte +++ b/sveltejs/src/ProjectBrowser.svelte @@ -15,6 +15,7 @@ searchString, activeTab, categoryCheckedTrack, + uiCapabilities, sortCriteria, preferredView, } from './stores'; @@ -28,6 +29,8 @@ ORIGIN_URL, FULL_MODULE_PATH, SORT_OPTIONS, + MODULE_STATUS, + ALLOW_UI_INSTALL, } from './constants'; const { Drupal } = window; @@ -126,6 +129,55 @@ isFirstLoad.set(false); } + /** + * Queries an endpoint to get information regarding a site's ability to + * handle UI installs. + * + * @todo this probably does not need to be done client side. Moving this to + * logic that updates drupalSettings in BrowserController can potentially do + * this with less complexity. The one hurdle is adding the conditions for + * adding this in a manner that does not fail if Package Manager isn't + * installed. + * + * @return {Promise} + * So this can be awaited. + */ + function setUiCapabilites() { + return new Promise((accept, reject) => { + const url = `${ORIGIN_URL}/admin/modules/project_browser/install-readiness`; + fetch(url) + .then(async (response) => { + if (!response.ok) { + if (response.status === 404) { + return Promise.reject(Drupal.t(`unable to reach ${url}`)); + } + const responseContent = await response.text(); + try { + const responseAsJson = JSON.parse(responseContent); + return Promise.reject(responseAsJson); + } catch (error) { + return Promise.reject(responseContent); + } + } + return response.json(); + }) + .then((json) => { + uiCapabilities.set({ + stage_available: json.stage_available, + pm_validation_error: json.pm_validation, + }); + accept(true); + }) + .catch((err) => { + uiCapabilities.set({ + stage_available: false, + pm_validation_error: err, + }); + reject(err); + }); + }); + } + /** * Load remote data when the Svelte component is mounted. */ @@ -146,6 +198,15 @@ if ($isFirstLoad) { await filterRecommended(); } + + if (ALLOW_UI_INSTALL) { + try { + await setUiCapabilites(); + } catch (e) { + // Errors already reported elsewhere; + } + } + await load($page); const focus = document.getElementById(element); if (focus) { @@ -293,6 +354,17 @@ {/each} </div> {/if} + <!-- If UI installs are enabled, but the site configuration does not them, + display a message informing the user what must be changed for UI + installs to work. --> + {#if $uiCapabilities.pm_validation_error && typeof $uiCapabilities.pm_validation_error === 'string' && MODULE_STATUS.package_manager && ALLOW_UI_INSTALL} + <div class="install-warning"> + <p class="warning-header"> + <strong>{Drupal.t('Unable to download modules via the UI')}</strong> + </p> + <p><em>{@html $uiCapabilities.pm_validation_error}</em></p> + </div> + {/if} </div> <div slot="left"> @@ -366,4 +438,14 @@ .plugin-tabs .toggle { margin-left: 0; } + .install-warning { + border: 1px solid red; + padding: 1em; + } + .install-warning p { + margin: 0.5em 0; + } + .warning-header { + color: red; + } </style> diff --git a/sveltejs/src/constants.js b/sveltejs/src/constants.js index f4fb2eacc..727be9d11 100644 --- a/sveltejs/src/constants.js +++ b/sveltejs/src/constants.js @@ -22,3 +22,5 @@ export const MODULE_STATUS = drupalSettings.project_browser.modules; export const FULL_MODULE_PATH = `${ORIGIN_URL}/${drupalSettings.project_browser.module_path}`; +export const ALLOW_UI_INSTALL = + drupalSettings.project_browser.ui_install; diff --git a/sveltejs/src/popup.js b/sveltejs/src/popup.js new file mode 100644 index 000000000..e670495ea --- /dev/null +++ b/sveltejs/src/popup.js @@ -0,0 +1,122 @@ +import {FULL_MODULE_PATH, ORIGIN_URL} from './constants'; + +export const copyCommand = (cmd, project) => { + const copiedCommand = document.getElementById( + cmd === 'Download' + ? `${project.project_machine_name}-download-command` + : `${project.project_machine_name}-install-command`, + ); + copiedCommand.select(); + // For mobile devices. + copiedCommand.setSelectionRange(0, 99999); + navigator.clipboard.writeText(copiedCommand.value); + const copyReceipt = document.getElementById( + cmd === 'Download' + ? `${project.project_machine_name}-copied-download` + : `${project.project_machine_name}-copied-install`, + ); + copyReceipt.style.opacity = '1'; + setTimeout(() => { + copyReceipt.style.transition = 'opacity 0.3s'; + copyReceipt.style.opacity = '0'; + }, 1000); +} + +export const getCommandsPopupMessage = (project) => { + const download = Drupal.t('Download'); + const composerText = Drupal.t( + 'The !use_composer_open recommended way to download any Drupal module!close is with !get_composer_open Composer!close.</a>', + { + '!close': '</a>', + '!use_composer_open': + '<a href="https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies#managing-contributed" target="_blank" rel="noreferrer">', + '!get_composer_open': + '<a href="https://getcomposer.org/" target="_blank">', + }, + ); + const composerExistsText = Drupal.t( + "If you already manage your Drupal application dependencies with Composer, run the following from the command line in your application's Composer root directory", + ); + const infoText = Drupal.t( + 'This will download the module to your codebase.', + ); + const composerDontWorkText = Drupal.t( + "Didn't work? !learn_open Learn how to troubleshoot Composer!close", + { + '!learn_open': + '<a href="https://getcomposer.org/doc/articles/troubleshooting.md" target="_blank" rel="noreferrer">', + '!close': '</a>', + }, + ); + const downloadModuleText = Drupal.t( + 'If you cannot use Composer, you may !dl_manually_open download the module manually through your browser!close', + { + '!dl_manually_open': + '<a href="https://www.drupal.org/docs/user_guide/en/extend-module-install.html#s-using-the-administrative-interface" target="_blank" rel="noreferrer">', + '!close': '</a>', + }, + ); + const install = Drupal.t('Install'); + const installText = Drupal.t( + 'To use the module you must next install it. Visit the !module_page_open modules page!close to install the module using your web browser!close', + { + '!module_page_open': `<a href="${ORIGIN_URL}/admin/modules#module-${project.project_machine_name}" target="_blank" rel="noreferrer">`, + '!close': '</a>', + }, + ); + const drushText = Drupal.t( + 'Alternatively, you can use !drush_openDrush!close to install it via the command line', + { + '!drush_open': + '<a href="https://www.drush.org/latest/" target="_blank">', + '!close': '</a>', + }, + ); + const copied = Drupal.t('Copied!'); + const downloadCopyButton = navigator.clipboard ? `<button id="download-btn"><img src="${FULL_MODULE_PATH}/images/copy-icon.svg" alt={Drupal.t('Copy the install command')}/></button> + <div id="${project.project_machine_name}-copied-download" class="copied-download">${copied}</div>` : ''; + const installCopyButton = navigator.clipboard ? `<button id="install-btn"><img src="${FULL_MODULE_PATH}/images/copy-icon.svg" alt={Drupal.t('Copy the install command')}/></button> + <div id="${project.project_machine_name}-copied-install" class="copied-install">${copied}</div>` : ''; + + const div = document.createElement('div'); + div.classList.add('window'); + div.innerHTML = `<h3>1. ${download}</h3> + <p>${composerText}</p> + <p>${composerExistsText}:</p> + <div id="download-cmd"> + <input id="${project.project_machine_name}-download-command" value="composer require ${project.composer_namespace}" readonly/> + ${downloadCopyButton} + </div> + <p>${infoText}</p> + <p>${composerDontWorkText}.</p> + <p>${downloadModuleText}.</p> + <h3>2. ${install}</h3> + <p>${installText}.</p> + <p>${drushText}:</p> + <div id="install-cmd"> + <input id="${project.project_machine_name}-install-command" value="drush pm:install ${project.project_machine_name}" readonly/> + ${installCopyButton} + </div>`; + if (navigator.clipboard) { + div.querySelector('#download-btn').addEventListener('click', () => { + copyCommand('Download', project); + }); + div.querySelector('#install-btn').addEventListener('click', () => { + copyCommand('Install', project); + }); + } + return div; +} + +export const openPopup = (getMessage, project) => { + console.log('getMe', getMessage); + console.log('pjrrr', project); + const message = + typeof getMessage === 'function' ? getMessage() : getMessage; + const popupModal = Drupal.dialog(message, { + title: project.title, + dialogClass: 'project-browser-popup', + width: '50rem', + }); + popupModal.showModal(); +} diff --git a/sveltejs/src/stores.js b/sveltejs/src/stores.js index 9393516a7..746d1be0a 100644 --- a/sveltejs/src/stores.js +++ b/sveltejs/src/stores.js @@ -66,6 +66,22 @@ const storedSearchString = JSON.parse(sessionStorage.getItem('searchString')) || export const searchString = writable(storedSearchString); searchString.subscribe((val) => sessionStorage.setItem('searchString', JSON.stringify(val))); +// Information regarding UI install capabilities. The default values are ones +// that do not allow UI installs. This object must be updated via a +// compatibility check. +// - pm_validation_error can be true, false or a string describing the unmet +// conditions that must be changed before a site can support UI installs. This +// must be false for UI install functionality to be available. +// - stage_available must be true for UI install functionality to be available. +// This property is available for use cases where the site is UI install +// compatible, but the stage is currently being used by another process. This +// process could be another module install in progress, or a process from +// another module such as Automatic Updates. +export const uiCapabilities = writable({ + pm_validation_error: true, + stage_available: false, +}); + // Store for sort criteria. const storedSortCriteria = JSON.parse(sessionStorage.getItem('sortCriteria')) || SORT_OPTIONS[storedActiveTab]; export const sortCriteria = writable(storedSortCriteria); diff --git a/tests/modules/project_browser_test/project_browser_test.module b/tests/modules/project_browser_test/project_browser_test.module new file mode 100644 index 000000000..fb6918c2d --- /dev/null +++ b/tests/modules/project_browser_test/project_browser_test.module @@ -0,0 +1,14 @@ +<?php + +/** + * @file + * For use in Project Browser tests. + */ + +use Drupal\Core\Asset\AttachedAssetsInterface; + +function project_browser_js_settings_alter(array &$settings, AttachedAssetsInterface $assets) { + // For testing purposes, trick Project Browser into thinking Pinky and The + // Brain has been downloaded but not installed. + $settings['project_browser']['modules']['pinky_brain'] = 0; +} diff --git a/tests/modules/project_browser_test/src/DrupalOrgClientMiddleware.php b/tests/modules/project_browser_test/src/DrupalOrgClientMiddleware.php index 50dcb5a21..0e2dad832 100644 --- a/tests/modules/project_browser_test/src/DrupalOrgClientMiddleware.php +++ b/tests/modules/project_browser_test/src/DrupalOrgClientMiddleware.php @@ -25,6 +25,7 @@ class DrupalOrgClientMiddleware { 'field_project_machine_name=awesome_module', 'field_project_machine_name=core', 'field_project_machine_name=metatag', + 'field_project_machine_name=cream_cheese', ]; if (in_array($uri_query, $covered)) { diff --git a/tests/modules/project_browser_test/src/Extension/TestModuleInstaller.php b/tests/modules/project_browser_test/src/Extension/TestModuleInstaller.php new file mode 100644 index 000000000..8e9ff5c78 --- /dev/null +++ b/tests/modules/project_browser_test/src/Extension/TestModuleInstaller.php @@ -0,0 +1,21 @@ +<?php + +namespace Drupal\project_browser_test\Extension; + +use Drupal\Core\Extension\ModuleInstaller; + +/** + * Conditional Module installer for test. + * + * @see \Drupal\Core\Extension\ModuleInstaller::install + */ +class TestModuleInstaller extends ModuleInstaller { + + public function install(array $module_list, $enable_dependencies = TRUE) { + if (in_array('cream_cheese', $module_list, TRUE)) { + return TRUE; + } + return parent::install($module_list, $enable_dependencies); + } + +} diff --git a/tests/modules/project_browser_test/src/ProjectBrowserTestServiceProvider.php b/tests/modules/project_browser_test/src/ProjectBrowserTestServiceProvider.php new file mode 100644 index 000000000..20163bade --- /dev/null +++ b/tests/modules/project_browser_test/src/ProjectBrowserTestServiceProvider.php @@ -0,0 +1,22 @@ +<?php + +namespace Drupal\project_browser_test; + +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\DependencyInjection\ServiceProviderBase; + +/** + * Overrides the module installer service. + */ +class ProjectBrowserTestServiceProvider extends ServiceProviderBase { + + /** + * {@inheritdoc} + */ + public function alter(ContainerBuilder $container) { + $definition = $container->getDefinition('module_installer'); + $definition->setClass('Drupal\project_browser_test\Extension\TestModuleInstaller') + ->setLazy(FALSE); + } + +} diff --git a/tests/src/Functional/InstallerControllerTest.php b/tests/src/Functional/InstallerControllerTest.php index 411748cfe..2f257a5e5 100644 --- a/tests/src/Functional/InstallerControllerTest.php +++ b/tests/src/Functional/InstallerControllerTest.php @@ -166,7 +166,7 @@ class InstallerControllerTest extends ProjectBrowserInstallerFunctionalTestBase $this->assertSession()->statusCodeEquals(200); $expected_output = sprintf('{"phase":"create","status":0,"stage_id":"%s"}', $this->stageId); $this->assertSame($expected_output, $this->getSession()->getPage()->getContent()); - $this->assertInstallInProgress('awesome_module', 'starting install'); + $this->assertInstallInProgress('awesome_module', 'creating install stage'); } /** @@ -422,7 +422,7 @@ class InstallerControllerTest extends ProjectBrowserInstallerFunctionalTestBase $this->drupalGet('admin/modules/project_browser/install-begin/drupal/awesome_module'); $this->assertSession()->statusCodeEquals(418); $this->assertMatchesRegularExpression('/{"message":"The install staging area was locked less than 1 minutes ago. This is recent enough that a legitimate installation may be in progress. Consider waiting before unlocking the installation staging area.","unlock_url":".*admin..modules..project_browser..install..unlock\?token=[a-zA-Z0-9_-]*"}/', $this->getSession()->getPage()->getContent()); - $this->assertInstallInProgress('awesome_module', 'starting install'); + $this->assertInstallInProgress('awesome_module', 'creating install stage'); $this->assertFalse($this->installer->isAvailable()); $this->assertFalse($this->installer->isApplying()); TestTime::setFakeTimeByOffset("+800 seconds"); @@ -518,7 +518,7 @@ class InstallerControllerTest extends ProjectBrowserInstallerFunctionalTestBase $this->assertFalse($views_ui_checkbox->isChecked()); $content = $this->drupalGet('admin/modules/project_browser/activate-module/views_ui'); - $this->assertSame('{"phase":"project install","status":0}', $content); + $this->assertSame('{"status":0,"message":"Project views_ui was installed successfully"}', $content); $this->rebuildContainer(); $this->drupalGet('admin/modules'); $views_checkbox = $this->getSession()->getPage()->find('css', '#edit-modules-views-enable'); diff --git a/tests/src/Functional/ProjectBrowserInstallerFunctionalTestBase.php b/tests/src/Functional/ProjectBrowserInstallerFunctionalTestBase.php index 774ba2090..424980364 100644 --- a/tests/src/Functional/ProjectBrowserInstallerFunctionalTestBase.php +++ b/tests/src/Functional/ProjectBrowserInstallerFunctionalTestBase.php @@ -3,13 +3,12 @@ namespace Drupal\Tests\project_browser\Functional; use Drupal\Core\Site\Settings; -use Drupal\Tests\package_manager\Traits\FixtureUtilityTrait; -use Drupal\package_manager_bypass\Beginner; +use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; use Drupal\Tests\BrowserTestBase; abstract class ProjectBrowserInstallerFunctionalTestBase extends BrowserTestBase { - use FixtureUtilityTrait; + use PackageManagerFixtureUtilityTrait; protected $defaultTheme = 'stark'; @@ -73,35 +72,4 @@ abstract class ProjectBrowserInstallerFunctionalTestBase extends BrowserTestBase $this->rebuildContainer(); } - /** - * Sets a fixture directory to use as the active directory. - * - * @param string $fixture_directory - * The fixture directory. - */ - protected function useFixtureDirectoryAsActive(string $fixture_directory): void { - // Create a temporary directory from our fixture directory that will be - // unique for each test run. This will enable changing files in the - // directory and not affect other tests. - $active_dir = $this->copyFixtureToTempDirectory($fixture_directory); - Beginner::setFixturePath($active_dir); - $this->container->get('package_manager.path_locator') - ->setPaths($active_dir, $active_dir . '/vendor', '', NULL); - } - - /** - * Copies a fixture directory to a temporary directory. - * - * @param string $fixture_directory - * The fixture directory. - * - * @return string - * The temporary directory. - */ - protected function copyFixtureToTempDirectory(string $fixture_directory): string { - $temp_directory = $this->root . DIRECTORY_SEPARATOR . $this->siteDirectory . DIRECTORY_SEPARATOR . $this->randomMachineName(20); - static::copyFixtureFilesTo($fixture_directory, $temp_directory); - return $temp_directory; - } - } diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php new file mode 100644 index 000000000..4ae565865 --- /dev/null +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -0,0 +1,200 @@ +<?php + +namespace Drupal\Tests\project_browser\FunctionalJavascript; + +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; + +/** + * Provides tests for the Project Browser Installer UI. + * + * @group project_browser + */ +class ProjectBrowserInstallerUiTest extends WebDriverTestBase { + + use ProjectBrowserUiTestTrait, PackageManagerFixtureUtilityTrait; + + /** + * The shared tempstore object. + * + * @var \Drupal\Core\TempStore\SharedTempStore + */ + protected $sharedTempStore; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'package_manager', + 'package_manager_bypass', + 'project_browser', + 'project_browser_test', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->sharedTempStore = $this->container->get('tempstore.shared'); + $pm_path = $this->container->get('extension.list.module')->getPath('package_manager'); + $this->useFixtureDirectoryAsActive($pm_path . '/tests/fixtures/fake_site'); + + $this->config('project_browser.admin_settings')->set('enabled_sources', ['drupalorg_mockapi'])->save(TRUE); + $this->config('project_browser.admin_settings')->set('allow_ui_install', TRUE)->save(); + $this->drupalLogin($this->drupalCreateUser([ + 'administer modules', + 'administer site configuration', + ])); + } + + /** + * Tests the "add and install" button functionality. + */ + public function testModuleAddAndInstall(): void { + $assert_session = $this->assertSession(); + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + $cream_cheese_module_selector = '#project-browser .box-2 ul > li:nth-child(1)'; + $download_button = $assert_session->waitForElementVisible('css', "$cream_cheese_module_selector button"); + $this->assertNotEmpty($download_button); + $this->assertSame('Add and Install Cream cheese on a bagel', $download_button->getText()); + $download_button->click(); + $popup = $assert_session->waitForElementVisible('css', '.project-browser-popup'); + $this->assertNotEmpty($popup); + $this->assertStringContainsString('Project cream_cheese was installed successfully', $popup->getText()); + $popup->find('css', 'button[title="Close"]')->click(); + $assert_session->assertNoElementAfterWait('css', "$cream_cheese_module_selector button"); + $installed_action = $assert_session->waitForElementVisible('css', "$cream_cheese_module_selector .action"); + $this->assertNotEmpty($installed_action); + $this->assertSame('Cream cheese on a bagel is ✓ Installed', $installed_action->getText()); + } + + /** + * Tests the "Install" button functionality. + * + * The "Install" button only appears for modules in the filesystem that + * have not been installed. This scenario is not possible if only the Project + * Browser UI is used, but could happen if the module was added differently, + * such as via the terminal with Compose or a direct file addition. + */ + public function testInstallModuleAlreadyInFilesystem() { + $assert_session = $this->assertSession(); + + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Pinky and the Brain'); + $pinky_brain_selector = '#project-browser .box-2 ul > li:nth-child(2)'; + $action_button = $assert_session->waitForElementVisible('css', "$pinky_brain_selector button"); + $this->assertNotEmpty($action_button); + $this->assertSame('Install Pinky and the Brain', $action_button->getText()); + $action_button->click(); + $popup = $assert_session->waitForElementVisible('css', '.project-browser-popup'); + $this->assertNotEmpty($popup); + // The Pinky and the Brain module doesn't actually exist in the filesystem, + // but it was registered with JavaScript as if it was to test the presence + // of the "Install" button as opposed vs. the default "Add and Install" + // button. This happens to be a good way to test mid-install exceptions as + // well. + $this->assertStringContainsString('MissingDependencyException: Unable to install modules pinky_brain due to missing modules pinky_brain', $popup->getText()); + + // The action button should have momentarily changed to a progress message, + // but changes back to the original button when the error above occurs. + $action_button = $assert_session->waitForElementVisible('css', "$pinky_brain_selector button"); + $this->assertNotEmpty($action_button); + $this->assertSame('Install Pinky and the Brain', $action_button->getText()); + } + + /** + * Tests install UI not available if not enabled. + */ + public function testAllowUiInstall(): void { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Pinky and the Brain'); + + $cream_cheese_module_selector = '#project-browser .box-2 ul > li:nth-child(1)'; + $download_button = $assert_session->waitForElementVisible('css', "$cream_cheese_module_selector button"); + $this->assertNotEmpty($download_button); + $this->assertSame('Add and Install Cream cheese on a bagel', $download_button->getText()); + $this->drupalGet('/admin/config/development/project_browser'); + $page->find('css', '#edit-allow-ui-install')->click(); + $assert_session->checkboxNotChecked('edit-allow-ui-install'); + $this->submitForm([], 'Save'); + $this->assertTrue($assert_session->waitForText('The configuration options have been saved.')); + + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + $action_button = $assert_session->waitForElementVisible('css', "$cream_cheese_module_selector button"); + $this->assertNotEmpty($action_button); + $this->assertSame('View Commands for Cream cheese on a bagel', $action_button->getText()); + } + + /** + * Confirms stage can be unlocked despite a missing Project Browser lock. + * + * @covers::unlock + */ + public function testCanBreakStageWithMissingProjectBrowserLock() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + // Start install begin. + $this->drupalGet('admin/modules/project_browser/install-begin/drupal/metatag'); + $this->sharedTempStore->get('project_browser')->delete('requiring'); + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + // Try beginning another install while one is in progress, but not yet in + // the applying stage. + $cream_cheese_module_selector = '#project-browser .box-2 ul > li:nth-child(1)'; + $cream_cheese_button = $page->find('css', "$cream_cheese_module_selector button"); + $cream_cheese_button->click(); + + $this->assertTrue($assert_session->waitForText('An install staging area claimed by Project Browser exists but has expired. You may unlock the stage and try the install again.')); + + // Click Unlock Install Stage link + $this->clickWithWait('#ui-id-1 > p > a'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + // Try beginning another install after breaking lock. + $cream_cheese_button = $page->find('css', "$cream_cheese_module_selector button"); + $cream_cheese_button->click(); + $this->assertTrue($assert_session->waitForText('Project cream_cheese was installed successfully')); + } + + /** + * Confirms the break lock link is available and works. + * + * The break lock link is not available once the stage is applying. + * + * @covers::unlock + */ + public function testCanBreakLock() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + // Start install begin. + $this->drupalGet('admin/modules/project_browser/install-begin/drupal/metatag'); + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + // Try beginning another install while one is in progress, but not yet in + // the applying stage. + $cream_cheese_module_selector = '#project-browser .box-2 ul > li:nth-child(1)'; + $cream_cheese_button = $page->find('css', "$cream_cheese_module_selector button"); + $cream_cheese_button->click(); + $this->assertTrue($assert_session->waitForText('The install staging area was locked less than 1 minutes ago. This is recent enough that a legitimate installation may be in progress. Consider waiting before unlocking the installation staging area.')); + // Click Unlock Install Stage link + $this->clickWithWait('#ui-id-1 > p > a'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + // Try beginning another install after breaking lock. + $cream_cheese_button = $page->find('css', "$cream_cheese_module_selector button"); + $cream_cheese_button->click(); + $this->assertTrue($assert_session->waitForText('Project cream_cheese was installed successfully')); + } + +} diff --git a/tests/src/FunctionalJavascript/ProjectBrowserUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserUiTest.php index fde88b0f5..698e7b4ff 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserUiTest.php @@ -955,7 +955,9 @@ class ProjectBrowserUiTest extends WebDriverTestBase { public function testInstallButtonLink(): void { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); - $this->config('project_browser.admin_settings')->set('enabled_sources', ['drupal_core'])->save(TRUE); + $this->config('project_browser.admin_settings') + ->set('enabled_sources', ['drupal_core']) + ->save(TRUE); $this->drupalGet('admin/modules/browse'); $this->svelteInitHelper('css', '.project.grid'); @@ -963,10 +965,24 @@ class ProjectBrowserUiTest extends WebDriverTestBase { $this->svelteInitHelper('text', 'Inline Form Errors'); $install_link = $page->find('css', '.box-2 .action a'); + $this->assertStringContainsString('admin/modules#module-inline-form-errors', $install_link->getAttribute('href')); $this->drupalGet($install_link->getAttribute('href')); $assert_session->waitForElementVisible('css', "#edit-modules-inline-form-errors-enable"); $assert_session->assertVisibleInViewport('css', '#edit-modules-inline-form-errors-enable'); } + /** + * Confirms UI install can not be enabled without Package Manager installed. + */ + public function testUiInstallNeedsPackageManager() { + $this->drupalGet('admin/config/development/project_browser'); + $ui_install_input = $this->getSession()->getPage()->find('css', '[data-drupal-selector="edit-allow-ui-install"]'); + $this->assertTrue($ui_install_input->getAttribute('disabled') === 'disabled'); + $this->container->get('module_installer')->install(['package_manager'], TRUE); + $this->drupalGet('admin/config/development/project_browser'); + $ui_install_input = $this->getSession()->getPage()->find('css', '[data-drupal-selector="edit-allow-ui-install"]'); + $this->assertFalse($ui_install_input->hasAttribute('disabled')); + } + } diff --git a/tests/src/Traits/PackageManagerFixtureUtilityTrait.php b/tests/src/Traits/PackageManagerFixtureUtilityTrait.php new file mode 100644 index 000000000..94265f3c3 --- /dev/null +++ b/tests/src/Traits/PackageManagerFixtureUtilityTrait.php @@ -0,0 +1,72 @@ +<?php + +namespace Drupal\Tests\project_browser\Traits; + +use Drupal\package_manager_bypass\Beginner; +use Symfony\Component\Filesystem\Filesystem; + +/** + * This copies methods from Package Manager's FixtureUtilityTrait. + * + * Package Manager's FixtureUtilityTrait is internal, so a version of that is + * provided here, truncated to use only the methods needed by Project Browser's + * tests. + * + * @internal + */ +trait PackageManagerFixtureUtilityTrait { + + /** + * Sets a fixture directory to use as the active directory. + * + * @param string $fixture_directory + * The fixture directory. + */ + protected function useFixtureDirectoryAsActive(string $fixture_directory): void { + // Create a temporary directory from our fixture directory that will be + // unique for each test run. This will enable changing files in the + // directory and not affect other tests. + $active_dir = $this->copyFixtureToTempDirectory($fixture_directory); + Beginner::setFixturePath($active_dir); + $this->container->get('package_manager.path_locator') + ->setPaths($active_dir, $active_dir . '/vendor', '', NULL); + } + + /** + * Copies a fixture directory to a temporary directory. + * + * @param string $fixture_directory + * The fixture directory. + * + * @return string + * The temporary directory. + */ + protected function copyFixtureToTempDirectory(string $fixture_directory): string { + $temp_directory = $this->root . DIRECTORY_SEPARATOR . $this->siteDirectory . DIRECTORY_SEPARATOR . $this->randomMachineName(20); + static::copyFixtureFilesTo($fixture_directory, $temp_directory); + return $temp_directory; + } + + /** + * Mirrors a fixture directory to the given path. + * + * Files not in the source fixture directory will not be deleted from + * destination directory. After copying the files to the destination directory + * the files and folders will be converted so that can be used in the tests. + * The conversion includes: + * - Renaming '_git' directories to '.git' + * - Renaming files ending in '.info.yml.hide' to remove '.hide'. + * + * @param string $source_path + * The source path. + * @param string $destination_path + * The path to which the fixture files should be mirrored. + */ + protected static function copyFixtureFilesTo(string $source_path, string $destination_path): void { + (new Filesystem())->mirror($source_path, $destination_path, NULL, [ + 'override' => TRUE, + 'delete' => FALSE, + ]); + } + +} -- GitLab