From 10765da2a867103870800602c5dc7c0473392738 Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Thu, 31 Oct 2024 12:43:51 -0400 Subject: [PATCH 1/7] First pass at cleaning up Petition view (CFM-31) --- app/resources/locales/en_US/information.po | 6 ++ app/resources/locales/en_US/operation.po | 3 + app/src/Lib/Util/StringUtilities.php | 5 +- app/templates/Petitions/fields.inc | 87 ++++++++++++++-------- app/webroot/css/co-base.css | 24 ++++++ 5 files changed, 95 insertions(+), 30 deletions(-) diff --git a/app/resources/locales/en_US/information.po b/app/resources/locales/en_US/information.po index b13dfec6..8a163fe9 100644 --- a/app/resources/locales/en_US/information.po +++ b/app/resources/locales/en_US/information.po @@ -54,6 +54,9 @@ msgstr "not set" msgid "pagination.format" msgstr "Page {{page}} of {{pages}}, Viewing {{start}}-{{end}} of {{count}}" +msgid "enrollment.steps" +msgstr "Enrollment Steps" + msgid "ExternalIdentities.source" msgstr "This External Identity was created from {0}." @@ -105,6 +108,9 @@ msgstr "Additional History Records may be available via Petitions and Provisioni msgid "pagination.format" msgstr "Page {{page}} of {{pages}}, Viewing {{start}}-{{end}} of {{count}}" +msgid "petition.information" +msgstr "Petition Information" + msgid "Petitions.pending" msgstr "This Petition has now been assigned to someone else. There is no further action for you at this time." diff --git a/app/resources/locales/en_US/operation.po b/app/resources/locales/en_US/operation.po index 7475df4c..f28b3fd7 100644 --- a/app/resources/locales/en_US/operation.po +++ b/app/resources/locales/en_US/operation.po @@ -288,6 +288,9 @@ msgstr "View {0}" msgid "view.PersonRoles.a" msgstr "View Role {0}" +msgid "view.Petitions.a" +msgstr "View Petition {0}" + msgid "view.ExternalIdentityRoles.a" msgstr "View Role {0}" diff --git a/app/src/Lib/Util/StringUtilities.php b/app/src/Lib/Util/StringUtilities.php index d1d5e644..d25ba633 100644 --- a/app/src/Lib/Util/StringUtilities.php +++ b/app/src/Lib/Util/StringUtilities.php @@ -201,7 +201,10 @@ public static function entityAndActionToTitle($entity, $field = $linkTable->getDisplayField(); if(!empty($entity->$field)) { - $title = __d($domain, $msgId, $entity->$field); + $title = __d($domain, $msgIdOverride, $entity->$field); + if($msgIdOverride === $title) { + $title = __d($domain, $msgId, $entity->$field); + } } else { $title = __d($domain, $msgId, __d('controller', $modelsName, [1])); } diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index ca8e86b3..b596f77b 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -28,6 +28,7 @@ declare(strict_types = 1); use \Cake\Utility\Hash; +use Cake\Utility\Inflector; // Petitions are read-only, though they can link to other actions if ($vv_action !== 'view') { @@ -35,19 +36,29 @@ if ($vv_action !== 'view') { } // Start with the petition metadata -print $this->element('form/listItem', [ - 'arguments' => [ - 'fieldName' => 'status', - ] -]); +$statusTitle = __d('enumeration','PetitionStatusEnum.' . $vv_obj->status); +$statusCssClass = 'petition-status-title petition-status-title-' . Inflector::dasherize($statusTitle); +?> + +
  • +

    + +

    +
  • +
  • +

    + +

    +
  • +element('form/listItem', [ 'arguments' => [ 'fieldName' => 'enrollee_email', ] -]); - +]); + // Enrollee if (!empty($vv_obj?->enrollee_person?->id)) { $enrolleeStatus = $vv_obj->enrollee_person->primary_name->full_name ?? __d('field', 'Petitions.enrollee.new'); @@ -86,30 +97,48 @@ if (!empty($vv_obj?->petitioner_person?->id)) { ]); } +// XXX Keep status available (even though it's presented above) +print $this->element('form/listItem', [ + 'arguments' => [ + 'fieldName' => 'status', + ] +]); ?> +
  • +

    + +

    +
  • + + -
      - enrollment_flow->enrollment_flow_steps as $step): ?> - petition_step_results, "{n}[enrollment_flow_step_id=$step->id]"); +enrollment_flow->enrollment_flow_steps as $step): ?> + petition_step_results, "{n}[enrollment_flow_step_id=$step->id]"); - if(!empty($result)) { - $resultLink = [ - 'controller' => 'petitions', - 'action' => 'result', - $vv_obj->id, - '?' => [ - 'enrollment_flow_step_id' => $step->id - ] - ]; - } - ?> + if(!empty($result)) { + $resultLink = [ + 'controller' => 'petitions', + 'action' => 'result', + $vv_obj->id, + '?' => [ + 'enrollment_flow_step_id' => $step->id + ] + ]; + } + ?> -
    1. description ?>
    2. - - - -
    +
  • +
    +
    +
    + description ?> +
    +
    +
    + Html->link($result[0]->comment, $resultLink) : "" ?> +
    +
    +
  • + diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css index 3521f9c2..af8e34f9 100644 --- a/app/webroot/css/co-base.css +++ b/app/webroot/css/co-base.css @@ -1369,6 +1369,15 @@ ul.form-list li { padding: 0; list-style: none; } +ul.fields li.form-list-header { + overflow-x: unset; +} +ul.fields li.form-list-header h2 { + color: var(--cmg-color-txt-inverse); + background-color: var(--cmg-color-btn-bg-001); + font-size: 1.4em; + padding: 1rem; +} ul.form-list li:focus-within { background-color: var(--cmg-color-bg-001); } @@ -1884,6 +1893,21 @@ body.attributecollectors .submit { padding-right: 1em; white-space: nowrap; } +ul.form-list li.petition-status-title { + margin-bottom: 1rem; + border: none; +} +ul.form-list li.petition-status-title h2 { + /* default colors for most status titles */ + background-color: var(--cmg-color-highlight-009); + color: var(--cmg-color-highlight-010); + border: 1px solid var(--cmg-color-highlight-011); +} +ul.form-list li.petition-status-title-finalized h2 { + background-color: var(--cmg-color-highlight-006); + color: var(--cmg-color-highlight-007); + border: 1px solid var(--cmg-color-highlight-008); +} /* GENERAL */ .hidden, .invisible, From d3f86f18f52c1376d6c223d036bd1d0baf968b74 Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Thu, 31 Oct 2024 15:51:22 -0400 Subject: [PATCH 2/7] Remove status read-only field (CFM-31) --- app/templates/Petitions/fields.inc | 7 ------- 1 file changed, 7 deletions(-) diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index b596f77b..a0096568 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -96,13 +96,6 @@ if (!empty($vv_obj?->petitioner_person?->id)) { ] ]); } - -// XXX Keep status available (even though it's presented above) -print $this->element('form/listItem', [ - 'arguments' => [ - 'fieldName' => 'status', - ] -]); ?>
  • From b11ff6fb2305e5f11a545cf7c4380092a583c4ff Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Thu, 31 Oct 2024 16:13:58 -0400 Subject: [PATCH 3/7] Add fields to Petition Information (CFM-31) --- app/resources/locales/en_US/field.po | 3 ++ app/templates/Petitions/fields.inc | 46 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/app/resources/locales/en_US/field.po b/app/resources/locales/en_US/field.po index e782eba9..cfe83855 100644 --- a/app/resources/locales/en_US/field.po +++ b/app/resources/locales/en_US/field.po @@ -185,6 +185,9 @@ msgstr "Middle" msgid "modifiable" msgstr "Modifiable" +msgid "modified" +msgstr "Modified" + msgid "name" msgstr "Name" diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index a0096568..1141e509 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -98,6 +98,52 @@ if (!empty($vv_obj?->petitioner_person?->id)) { } ?> +
  • +
    +
    +
    + +
    +
    +
    + Html->link( + $vv_obj->enrollment_flow->name, + [ + 'controller' => 'enrollment_flows', + 'action' => 'edit', + $vv_obj->enrollment_flow->id + ] + ) + ?> +
    +
    +
  • +
  • +
    +
    +
    + +
    +
    +
    + created ?> +
    +
    +
  • +
  • +
    +
    +
    + +
    +
    +
    + modified ?> +
    +
    +
  • +
  • From 9a1d61e9a0b761eea764663f0c68a55a286e57b8 Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Tue, 5 Nov 2024 12:30:48 -0500 Subject: [PATCH 4/7] Reformat Petition Information view (CFM-31) --- app/resources/locales/en_US/information.po | 3 + app/templates/Petitions/fields.inc | 87 ++++++++++++---------- app/webroot/css/co-base.css | 16 ++++ app/webroot/css/co-responsive.css | 5 ++ 4 files changed, 71 insertions(+), 40 deletions(-) diff --git a/app/resources/locales/en_US/information.po b/app/resources/locales/en_US/information.po index 8a163fe9..87ca6513 100644 --- a/app/resources/locales/en_US/information.po +++ b/app/resources/locales/en_US/information.po @@ -108,6 +108,9 @@ msgstr "Additional History Records may be available via Petitions and Provisioni msgid "pagination.format" msgstr "Page {{page}} of {{pages}}, Viewing {{start}}-{{end}} of {{count}}" +msgid "petition.history" +msgstr "Petition History" + msgid "petition.information" msgstr "Petition Information" diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index 1141e509..ffabf93c 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -50,34 +50,45 @@ $statusCssClass = 'petition-status-title petition-status-title-' . Inflector::da

  • +enrollee_person?->id)): ?> +
  • +
      +
    • + : + Html->link( + $vv_obj->enrollee_person->primary_name->full_name ?? __d('field', 'Petitions.enrollee.new'), + [ + 'controller' => 'people', + 'action' => 'edit', + $vv_obj->enrollee_person_id + ] + ); + ?> +
    • + enrollee_email)): ?> +
    • + : + Html->link( + $vv_obj->enrollee_email, + 'mailto:' . $vv_obj->enrollee_email, + ['class' => 'nospin'] + ); + ?> +
    • + + enrollee_identifier)): ?> +
    • + : + enrollee_identifier ?> +
    • + +
    +
  • + element('form/listItem', [ - 'arguments' => [ - 'fieldName' => 'enrollee_email', - ] -]); - -// Enrollee -if (!empty($vv_obj?->enrollee_person?->id)) { - $enrolleeStatus = $vv_obj->enrollee_person->primary_name->full_name ?? __d('field', 'Petitions.enrollee.new'); - $enrolleeLink = [ - 'url' => [ - 'controller' => 'people', - 'action' => 'edit', - $vv_obj->enrollee_person_id - ] - ]; - print $this->element('form/listItem', [ - 'arguments' => [ - 'fieldName' => 'enrollee_person_id', - 'status' => $enrolleeStatus, - 'link' => !empty($vv_obj->enrollee_person->id) ? $enrolleeLink : [], - ] - ]); -} - // Petitioner if (!empty($vv_obj?->petitioner_person?->id)) { $petitionerStatus = $vv_obj?->petitioner_person?->primary_name?->full_name ?? ''; @@ -99,6 +110,7 @@ if (!empty($vv_obj?->petitioner_person?->id)) { ?>
  • +
    @@ -120,26 +132,15 @@ if (!empty($vv_obj?->petitioner_person?->id)) {
  • +
    - + : created ?>
    - created ?> -
    -
    -
  • -
  • -
    -
    -
    - -
    -
    -
    - modified ?> + : modified ?>
  • @@ -181,3 +182,9 @@ if (!empty($vv_obj?->petitioner_person?->id)) { + +
  • +

    + +

    +
  • diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css index af8e34f9..0aab6267 100644 --- a/app/webroot/css/co-base.css +++ b/app/webroot/css/co-base.css @@ -1908,6 +1908,22 @@ ul.form-list li.petition-status-title-finalized h2 { color: var(--cmg-color-highlight-007); border: 1px solid var(--cmg-color-highlight-008); } +ul.form-list li.petition-enrollee-items { + background-color: var(--cmg-color-highlight-004); + color: var(--cmg-color-highlight-005); + padding: 1rem; +} +ul.form-list li.petition-enrollee-items ul { + display: flex; + flex-direction: column; /* changes to 'row' on desktop */ + gap: 1em; + list-style: none; + margin: 0; + padding: 0; +} +ul.form-list li.petition-enrollee-items li { + background-color: transparent; +} /* GENERAL */ .hidden, .invisible, diff --git a/app/webroot/css/co-responsive.css b/app/webroot/css/co-responsive.css index 88f567a3..84a50f1b 100644 --- a/app/webroot/css/co-responsive.css +++ b/app/webroot/css/co-responsive.css @@ -504,6 +504,11 @@ #dispatch_AttributeCollectors .fields-telephoneNumber .fieldset-info .fieldset-field.fields-number input { width: 24em; } + /* PETITIONS */ + ul.form-list li.petition-enrollee-items ul { + flex-direction: row; + gap: 2em; + } /* FOOTER */ #co-footer { position: static; From 076ca569d2a486a786b482c48c8fbfcfe7fd8938 Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Wed, 6 Nov 2024 17:01:27 -0500 Subject: [PATCH 5/7] Add Petition History Records output to petition view (CFM-31) --- app/src/Model/Table/PetitionsTable.php | 3 ++- app/templates/Petitions/fields.inc | 30 ++++++++++++++++++++++++++ app/webroot/css/co-base.css | 20 +++++++++++------ 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/app/src/Model/Table/PetitionsTable.php b/app/src/Model/Table/PetitionsTable.php index 8aa38d24..9c6352c4 100644 --- a/app/src/Model/Table/PetitionsTable.php +++ b/app/src/Model/Table/PetitionsTable.php @@ -110,7 +110,8 @@ public function initialize(array $config): void { 'EnrollmentFlows' => ['EnrollmentFlowSteps' => ['sort' => ['ordr' => 'ASC']]], 'EnrolleePeople' => ['PrimaryName' => ['foreignKey' => 'person_id']], 'PetitionerPeople' => ['PrimaryName' => ['foreignKey' => 'person_id']], - 'PetitionStepResults' + 'PetitionStepResults', + 'PetitionHistoryRecords' ]); $this->setAutoViewVars([ diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index ffabf93c..aebbb520 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -183,8 +183,38 @@ if (!empty($vv_obj?->petitioner_person?->id)) { + +petition_history_records)): + // XXX Generalize this into an element for all history records if we use this output elsewhere +?>
  • +
  • +
    + + + + + + + + + + + + petition_history_records as $hr): ?> + + + + + + + + +
    +
    +
  • + diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css index 0aab6267..7911547b 100644 --- a/app/webroot/css/co-base.css +++ b/app/webroot/css/co-base.css @@ -1354,16 +1354,15 @@ field data is in the right column; see also ul.data-list above. ***/ ul.form-list { clear: both; + margin-top: 0.5rem; padding: 0; -} -body.view ul.form-list { - border-bottom: 1px solid var(--cmg-color-bg-005); + border-top: 1px solid var(--cmg-color-bg-005); } .cm-time-picker-vals ul li, ul.form-list li { background-color: var(--cmg-color-body-bg); border-left: 1px solid var(--cmg-color-bg-005); - border-top: 1px solid var(--cmg-color-bg-005); + border-bottom: 1px solid var(--cmg-color-bg-005); border-right: 1px solid var(--cmg-color-bg-005); margin: 0; padding: 0; @@ -1371,6 +1370,7 @@ ul.form-list li { } ul.fields li.form-list-header { overflow-x: unset; + margin-top: 2rem; } ul.fields li.form-list-header h2 { color: var(--cmg-color-txt-inverse); @@ -1396,8 +1396,7 @@ ul.form-list li .field:hover { } ul.form-list li.fields-submit { background-color: unset; - border-left: none; - border-right: none; + border: none; } ul.form-list li.fields-submit .field:hover { background-color: var(--cmg-color-body-bg); @@ -1893,8 +1892,12 @@ body.attributecollectors .submit { padding-right: 1em; white-space: nowrap; } +ul#view_Petitions.form-list { + border-top: none; +} ul.form-list li.petition-status-title { - margin-bottom: 1rem; + margin-top: 0.5rem; + margin-bottom: -1rem; border: none; } ul.form-list li.petition-status-title h2 { @@ -2131,6 +2134,9 @@ table.table-striped tbody tr:nth-child(2n) td { td .alert { margin-bottom: 0; } +.history-table th { + font-weight: normal; +} /* LOADING ANIMATION & SKELETONS */ @keyframes loading { 0% { opacity: 0.3; } From e848e7ccd754cdf37e041252d7203752a82fedb6 Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Thu, 7 Nov 2024 16:02:39 -0500 Subject: [PATCH 6/7] Further refinement to the layout of the Petition view (CFM-31) --- app/resources/locales/en_US/field.po | 3 + app/templates/Petitions/fields.inc | 112 +++++++++++++++--- app/webroot/css/co-base.css | 17 ++- app/webroot/css/co-color.css | 4 + app/webroot/css/co-responsive.css | 4 +- .../opensans/OpenSans-Semibold-webfont.woff | Bin 0 -> 20796 bytes app/webroot/css/fonts/opensans/stylesheet.css | 6 + 7 files changed, 117 insertions(+), 29 deletions(-) create mode 100644 app/webroot/css/fonts/opensans/OpenSans-Semibold-webfont.woff diff --git a/app/resources/locales/en_US/field.po b/app/resources/locales/en_US/field.po index cfe83855..f26b666d 100644 --- a/app/resources/locales/en_US/field.po +++ b/app/resources/locales/en_US/field.po @@ -116,6 +116,9 @@ msgstr "Ends at ({0})" msgid "enrollee_email" msgstr "Enrollee Email" +msgid "enrollee_identifier" +msgstr "Enrollee Identifier" + msgid "extension" msgstr "Extension" diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index aebbb520..de233893 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -52,9 +52,70 @@ $statusCssClass = 'petition-status-title petition-status-title-' . Inflector::da enrollee_person?->id)): ?>
  • -
      -
    • - : +
      +
      +
      +
      + + : + + + Html->link( + $vv_obj->enrollee_person->primary_name->full_name ?? __d('field', 'Petitions.enrollee.new'), + [ + 'controller' => 'people', + 'action' => 'edit', + $vv_obj->enrollee_person_id + ] + ); + ?> + +
      +
      +
      +
      + enrollee_email)): ?> +
      + + : + + + Html->link( + $vv_obj->enrollee_email, + 'mailto:' . $vv_obj->enrollee_email, + ['class' => 'nospin'] + ); + ?> + +
      + + enrollee_identifier)): ?> +
      + + : + + + enrollee_identifier ?> + +
      + +
      +
      +
    • + +
      +
      +
      + +
      +
      +
      Html->link( $vv_obj->enrollee_person->primary_name->full_name ?? __d('field', 'Petitions.enrollee.new'), @@ -65,10 +126,18 @@ $statusCssClass = 'petition-status-title petition-status-title-' . Inflector::da ] ); ?> - - enrollee_email)): ?> -
    • - : +
    • +
      + + enrollee_email)): ?> +
    • +
      +
      +
      + +
      +
      +
      Html->link( $vv_obj->enrollee_email, @@ -76,16 +145,25 @@ $statusCssClass = 'petition-status-title petition-status-title-' . Inflector::da ['class' => 'nospin'] ); ?> -
    • - - enrollee_identifier)): ?> -
    • - : + + +
    • + + enrollee_identifier)): ?> +
    • +
      +
      +
      + +
      +
      +
      enrollee_identifier ?> -
    • - -
    -
  • + + + + + */ ?> petitioner_person?->id)) { petition_history_records as $hr): ?> - + diff --git a/app/webroot/css/co-base.css b/app/webroot/css/co-base.css index 7911547b..624bd665 100644 --- a/app/webroot/css/co-base.css +++ b/app/webroot/css/co-base.css @@ -29,7 +29,7 @@ @import url("fonts/material-icons/material-icons.css"); html * { - font-family: 'open_sansregular','Trebuchet MS',Arial,Helvetica,sans-serif; + font-family: var(--cmg-font-regular); } body { color: var(--cmg-color-body-txt); @@ -1911,21 +1911,18 @@ ul.form-list li.petition-status-title-finalized h2 { color: var(--cmg-color-highlight-007); border: 1px solid var(--cmg-color-highlight-008); } -ul.form-list li.petition-enrollee-items { +ul.form-list li.petition-enrollee-items, +ul.form-list li.petition-enrollee-items .field:hover { background-color: var(--cmg-color-highlight-004); color: var(--cmg-color-highlight-005); - padding: 1rem; } -ul.form-list li.petition-enrollee-items ul { +ul.form-list li.petition-enrollee-items .field-info { display: flex; flex-direction: column; /* changes to 'row' on desktop */ - gap: 1em; - list-style: none; - margin: 0; - padding: 0; } -ul.form-list li.petition-enrollee-items li { - background-color: transparent; +ul.form-list li.petition-enrollee-items .petition-inline-value, +ul.form-list li.petition-enrollee-items .petition-inline-value a { + font-family: var(--cmg-font-semibold); } /* GENERAL */ .hidden, diff --git a/app/webroot/css/co-color.css b/app/webroot/css/co-color.css index c9b6524d..33372751 100644 --- a/app/webroot/css/co-color.css +++ b/app/webroot/css/co-color.css @@ -90,6 +90,10 @@ --cmg-color-highlight-017: #cee6f8; /* alert: info border color (blue) */ --cmg-color-highlight-018: yellow; /* autocomplete highlight for query text */ + /* Fonts */ + --cmg-font-regular: 'open_sansregular','Trebuchet MS',Arial,Helvetica,sans-serif; + --cmg-font-semibold: 'open_sanssemibold','open_sansregular','Trebuchet MS',Arial,Helvetica,sans-serif; + /* Duet Date Picker Colors & Settings */ --duet-color-primary: var(--cmg-color-btn-bg-001); --duet-color-text: var(--cmg-color-body-txt); diff --git a/app/webroot/css/co-responsive.css b/app/webroot/css/co-responsive.css index 84a50f1b..c8a0c16d 100644 --- a/app/webroot/css/co-responsive.css +++ b/app/webroot/css/co-responsive.css @@ -505,9 +505,9 @@ width: 24em; } /* PETITIONS */ - ul.form-list li.petition-enrollee-items ul { + ul.form-list li.petition-enrollee-items .field-info { flex-direction: row; - gap: 2em; + gap: 3em; } /* FOOTER */ #co-footer { diff --git a/app/webroot/css/fonts/opensans/OpenSans-Semibold-webfont.woff b/app/webroot/css/fonts/opensans/OpenSans-Semibold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..c5c64ed59b0e18bd73694697d53a75bfda5294be GIT binary patch literal 20796 zcmY&;V{|4>wDl9)&cwED+nLz5ZQGvMwv&k_wr$&X^5wnv{`qRHy{gZyv%Amfs_u2V zR=dfIi2;BBKTVMbfbw4-g!8}lf5-oS6BGL_`{RfC!{Yo0Cwk~caS>5506==?$Hx5u z9)KM1Ag&;<3;@VD0|20f002}Dts{nzxU!1SkKfIYPrwh#@(jas?8m+MC$`0N}8b5A4}esuRg{+G?QEd2J4CO=x( z9}ZCdgU%$caCtWq!=IQHS$=Hr|FHC-k@i1x0)&+z+(0LA$?jMnia_8kU_fj=c+pQN zKi*dW5dau~9{~EJ@&rT!qJC&@zykmT0Q8^UG{PWKU*AOEAbZeq;@>|Cg#2`RrXogP zBYpinQ!}F@eFH;7kAMFjwgLnRGXeqxLBg?Maf7l0P_OOKTbleVU}146Wi+5+qwfVB zX#}g*{gZ(~m;u>2@LK=HXOqMzp{0l!GTrg)cOAh23ME02FANEvXbLGh5bDnXI;t;P z#F30BR0jq{hzd0*87Of|AQXmJBplCmAk)UU3iOAT<6jtq^Q`Rbm@*NG@465 zwRpwp7hw%A0bGOJ(g=%(5ME-jfzRZHn$yT1W{J@<--!5JkyRbw4Vtwp63Z+0CX*Y7=fzyV)_?Q{|-q>G|56@MK2As2YCEq&{#A)YvI;t>D1oUVKZ zoX)B|<>u$@|1rH(Xz*_htFtB`>dgI$7Uc~Iw&o~3V_$UVe8`y=C*gjunY%y=p)!l| z0*XAtamq3oe46oUB*T1oBxAeO#Gp)MaLY#s$P^oVx$HcC)u}pzI#L^KSnlI>44asH z*EoNNdui`29_>3~2&{m8o7iK0q+N87Px#2}ci~u$oea^4Hf($uwN^XLy!{0KfLyXc zpZqoe$3O8)vOF2XNd7vs$Gzu2UwPZ5AcM)oS~PtHX8lHc&TQu^AP$quS)0E;5l(4` zQ{e^6swMFO>sD?pk5gy9?neYt9SXmPMGA@}E<_1ek7X=G^YNInUa5?IwZ%1B#p>B$ zGGnepyw1HPY9oD47lmc)U*UN9g!nw#K>pu#uCH(Eua5;T29Edwe83p^N(0O8--Hwd z98Ws%Z(L#cCU-WT@lSo=Dds$F2{*JhG!e8Cv?H_>v?cT#v???m^er?gv=wT~@9z)O z*Kho?G>kGgAO(3uZG@me|G?lt*xzxak$6Mj-`{?p-!I?!-zeW0U(cVzH_w;b>ceTu6IrjF80oju69okFZa)n@ewgmagedm@sP04a8Z6?KdRPhxm@Wsd*1Sa6{Rdsf2Kx9H}0VrH$3?>s4(#_UKid~M-Hw( zQYU8AgTU4HGN`Cz=`<`(yT{@9YEp|E3m(ts?qhaetrm;QZrjNG)Z*&$ESI6)?u;dr z(&=c5&-p@x5TyT>Do+d$o1F&x-`rHITDYOGqb|Bbt)d_!YnBu<^-;#KhAO23!24uy zFg6CE^0NcxrUu|QF;2vueR_M2Wan~(dv51FbB!}Wkv-Rx{cbuEYaUd2;h<$^oy+BX(rQDUCyIp?y@gw9gOe%A{2rrxXRRw#S``S85+E1){@RNmzTPUNG0Uva5Yt$+zT8@DWslx$Pl&-3{H&4=#lSI*sNj*TT^fUTt zIjLj6U^KeJqaItdnuMqnRWwqBSUZX+u0d1CspikWH18Qm%3AL;Wj-DV)+dTmG@gWN zmYy?dT?2d_E9P%yz8W@4ZmoZY1nUiOV5bS*NCq0v`=OaM;`x!#2}Q5tgiG4+V&XmG z9#1HrGvbI#24IF3e7m}> z)InAJT4u(V{I@c?1id1a1EGLEVojQ>k*A6x>g+jTNOUk)n~`6Cj|QqRHubx5h3oWn zU9TO<_OEd?@v;07^=PX=oJ8lrp0yxTE>>;WnJoiXl){FhyLAN|inELrnna5+-kHM= zM`y-Mh~z_J5vn> zQ5$ga;l(Gtu&C})iL<_*LVm~W#bsF-6KPooQ$iqYz1bXKSc;p$K(GH@X+G}+OA9k2 za#sraWSy{;U4(~{3HkFoTvcFiuhu>T<+WG|y)&<9CeNN9uev^E~4|T$e_tXU-Vo z3o?wj1U2V!Z7sullS2KbqW7KN^Hy{#4EJNJ?dS;Y$%3kOMY& z87hZImSszgBsC(0)*A*o0oki~(Ub|wtNb|Qwu{dMTg&;~d@40;+#K2aso$(3-$wMg zo2WV29OBJ9wlse5r5bXN2H9;@>uY`YhHnVHJt0n(bi8LW^|ix@2pn}?pKTnSk z9(IF;DBmKYg6x9)5vUQT1vKN>?7+cKh8;S}tj@8BcCgsAfBT_^)7OF^r}K?u=WS;k z%?m_@r6EG(K?E(TbySs9*EsGMR5NJS?tmB*NvY?PLIF7!ac5*;V^3N+p57Y(wiTLF{17-v7 zTNDed$tUwY2(Ua*wZHO}9f-VCSj2XE47g8xbSQ%7H`OI3j?B2~70`lDW$Yr}Cf^Dw z>XoJpi!p>;hr}`lq|{TZaNQs z(B9^aZ=&W3e^WT2VpzB#vT1h~H6W+VH#9;#KYgSwnzYuNxcIJj#jQCA&TF44Li@;; zO4+Oov4WSn77^u}P#KBqYahL3)hEcCE4(hb&?$tRD-TUJ9@FPB?#7(jzNV4ty!TZ6 z@!8{3RWw)0JS#?Yxu_}tnojwvs4;NzyF8D};naN|Mi7qhPs1|aHbL8Nk_lI+*4GF8 zJ%&S8qgi4sh~Atta>0~h714$x5`rzeCcQbGc?C#!+45{3Ko{5^v$JX$mw6t*z$`sc z4ot%w)@yRapl$#kMC}REbpt#@Ef6bMdj>Z=6(ZnDXPDD}LUj-OcZerQ*Ch8F+D~55WI}lnwGR(|7NW?=UlIj#rrJZpEFYh0b(r)bGHRC13X{bG;xxIdbtb zA+&Yd9wO5dR8;%7xT-_t(@zv~5)eiIZT^MbU| z*mdvA^fS6DRPt>|IPW+3Gs^xm+7TktR>%(Sn0|#(tyl2HI)-Pxam6>gwGEh`@BFXk zz1ixuC!#PUCN|PL03XW6fyIFx1^b1ylHI}x%7snUz+@i40ncL~V~b;oV~K-&QH7(B z4++lC#?8jd=Al}L7&p&13la$7j$n_c@AOmq?tn%@{k#n9{e|l=nS;i~(1v3Fg~P$) zBK=BN)@G{+aPQ#2#>CXX;Yt)H5|APa02l{BWP)XaXQEP5$1TAReOLcd_he^cY_m3% zH88Sw00Mx2(2V|+-v8Ct1VG-veIT$9>aC0nb)bw4A1DUApWkrOYv1hOBJqbSBIJ!N5d8j1#3oRFPHrRB5dkuTZTl)$!`T_tx~; z_Vb1GM;8X~Ly{wu;+nx9lT1Nq<7i81`)a#rJGI%`J2|}DvpeYRA?-@;TI{Y4-G{3M zu?M!sx}jZTZDDw8dy{z!db4_ezeK&XLYYG?Kxrddqim4BNJ+?3NR|nmMAik{hu;7p zF(=R^P!}K@N%$lpCFJ6HNYMyf#LhCC z{xoGh0H6BI^%zGRLmS7AbS5@P&XuXQIYZXe+ztj}-nXUCHB+bconv8$^+k zky1`Zr>It3%Xbzz4V=S0L_P#R#5=?qlTK!*xK`xL_ZEE(h>VF0lM0s#l!}!Kk%}6_ zQlV90Rv}m6U!+)MS>&xC|9xF9tF)}psx+GO-Y37wN9UbdEK%d0vhWbSmyljx{6pYK_wdGSRlQE0x0*+-ktKt{609Tq|eSvWMz8)cd7U zhOca|>2e7k46<2b$^x6Z@FvclRp`l2QrQYpZ4lvdi5+OKLVekZ zB$4Le8%;A2GS042M!O)uQVAl3BJl?H)%V`35a9yzqwv~bH;4S*algC??HIE~7S&AD zt+@j7{f&=pR3L#$5m5i7&)__f6fozUAulnGK0A4vQ)Zfgw99d?P4CX}xD469za?E}$e>$+9`F}X*wy?mQyZGeCo3G>lD&r7V8s6@G?&YpeyBvJJ zdJkPbqpZ}0YIngvc2*id3^1n0Igho9L1gUGKUD{%oAVcI&+nd0!Rk_GyV$2Mlg*66 z3Qt;3UtR6N5B921ney`GbV{(`u6?+tVBax(26-b@G z{|&hLpd+?2yt-z|a(|~76j5wIn~MDB4}Ymi&YL*H#Ptuy+*f264N{F4hLi~J6kb+r z6fBB!A{LlvKtx#^w}=z>H^fpfLEYd`@2qV$IWHeY>GqA^k;xgJ= zZ6&7f4WsX2jcer74cA+yX=!MDZ(vePYe1Ov7Xn4pGU}MneW3QQVvA`!74!?b^X^+w zs0|=2_}4Hb`89~i&`da)+(N$U6s*CdA)$Y=;8QdwO6;|GXtjGjWERI#VB~An#ku`~ zzPj%LR!-;W(q3-AaE9xd9B4}IXlhf4bLt6#&#Wy<7Em*GAej}9-wsRlH0vAAVDY0r zr?^ylAjs`L!H>86qFe|JZQGk<*eXqtMXZ0mgaCg0L3p%SXY`Q4gcbQ3$a!eY1*@&Eg( zvZ16M29%jinNwAVPd%wA5e|*B$u0$@97*J9zRT7CnY86ZFSgv=ls0cP@RUniU?|Hpcu#cpB~qN1YEeCdMM49gh@4kXwD zUMx^)9pCI8ThIJDp0&ET?Uw?<4i90_CkoQkNwt6*4Um8Li9GRW_0h2)YG;9lL*N>D zPo3La0&&3bBOgZ2oEt;oXGvq1;vw}}w5~-{P7%zI`U^w1l^|TZnsZ%zC{%bjIg6A& z)(Yg4xe3ogloV!15ZP!~2Lj9qB>Zz!5?{h&$b?UzW3%=BL|(2$BtmE^G{AL)&>`6% z1R2z;96h_xOuHHRJcdv}*kUv9FBUQQx;L!`UB#Xk`l>Fa&5omUvKIY5+X66L<7#}q zYg<1Dc)*GH*LQgKBwH$-XhtH@+Kft-2&RYtCIX{_k9h?7An_&!%?)iP&$nx)F;UW} zePg(qFf6|tSW~%K#T~Kbn4y$#8MjVL@-I_QkI-0IFPNY1YwcjajR#uJKFN=M3(Ph$ zQ5_a8`FHwl(jveLKotrH-G37k=WNyM4p?^J3t!O!N$AvspseGt-iARMb%^%?y(g zzUmJtjj(aOPZKT@!2;h-V%_Dhr@IK~3y7j5nb9kaKbp}VhLdWrW=s+b4N>RJ72-@C z15Cyk2p?Jxk6@(IwCRH}ca>H$$AsubNAQKa7ijEDBijHbr zui`>&S8#6MMehzw>?gJdeaxUT46v#1<3yW%CObHeYgawSn6X_?M$xMet!4XCfVVb1 ztkQU$KCUT7Db624=s#PP{|wvUa!dJa!LDj$r^)mqsj=AL(~JjSTdYp=b-_=q&DwN)4y_}|$mS633y*0cx1bYGTnuNC zj;{n*sxWHmBrZC;TsR2qt*x(%i-Nx-FhD8~o)J_>##=npmFs>}JIM4|*oDPn8LC8K z5oXyhvm7U7UL3`mTs*b*)OEnHPvm;H9^c(X7CRk_PiI3180FaT>Q68ino*X*cfCz^ z20)Z{-4705^LnxL}`iRbLww4thHBx)AXq z4NNW1tm&ttbNJp_jxgS*md##(>nXrD&J5j*n%l=rLZl>b=)#Lo@Q_?^Ri1( zX?kq0OR7LjF2yc-u`soWO^PF8EsQ8WKkRPLh69!;<%5ST=8y*SLYWY|WF{qEe9^jX znq+D9&48fN=MjwkBBBr4b%x`;zHCHyZL4AwVD( zT)?GZyHmWn1$O&Sqe*v_iD}Z-3Tv{E&h`LF-+}aoNSWmX@3{~r(A<1%tSpd`*^}o} zM!wg-;8 z^RJ#W7Z0T0&f`(NjXJtqjtV2!wf8L3T&Le5Hb)FcEOFi$nLG@L#FvUNuXF- zStJ)Wc?~rg7w(#FkRXk3C{Ths4!mW2nZZWxHUTj_f zBupBOX+9~-6gsss%$ah-e8HL_q+tw)c!M=?C*Iisj}ijB&*iAE@+1(hF5cUkm)q1~ zPbP}$n%xW0&{o^OSep=*@GkHD`ETJi#S_fderaX23|7#u(8$e&mbo`oYmrCM?k{3?W@ZZ45rE@Ah?l&~9pR{sTb zX=z)7%5B`s`X5V|2D6jVQD;!hlv|g8>I~VW{bu#X63;P z2OAQ9t2MyGp{_Yq0K4%TbS zN+7h=;f89O!vr|xYPCjxeq_E6JyurgdYas8v{+t-_E30P!t?dePSAV4-x=vi3rCU1 z{W{tj;*#;Oy#rmyO*faHF5nYEETtX{Y@?p=AL&KVDM}vq5iZ0+BTAN?^~sd&a}gH^ z?#m8>&@AytSzIlg zb`J1Rc*2FH;4R8s5V3!!+Rp~iUHs12xi%5F7osa<(G6G+{Ye`B#E=RBN4sj zD`y1VMd-T`_AYvRGg1omVwbhoI{?}gx4x51t$4NNd(y#K|F=)U$JXv=y`0773zqUq!Yj2a00IMcGFo;^6f*P=bYNC=Vx+O#=6x_*yB|5S%EpsAc zowG9<&Nc3WyvVE_HYP#i-IXOF!C}MpygX>lt_4!5Kas)=Vrk`P$nM+0on2B#jmLi!K67VeE8ub0f;B++%$m zPG7H$W^__4vA;wNwPyuABaR&j(m-lsJ@Syu*g`$~5NDv~=Cbrjxkxi~jLM^G_3&Ad zD+q#Btcxp4+USYXd2`btk2RJEr(YaVV{6@+l7aK)3&e~|5k-Yv;gKHky5(|zKW)J9 z7j9PC4tY)TxU$(}K(}kIg!leEh{2fzB{y#>;}E7^kwK4r=mqjdQ<9O3CYxW?@46*= z2vecr8tJS2YRGv^jjR9F(>8yrIDb&l(f;t^PSLPE{xH_86fwgad4HV7D!i6&QUn$FMYR1_rBcz_>z~ttA8nSVSCDqQ_B;86>4QB@*6e&m_KEmU zZ#X7F^rr~RJ25?Ky-k^TkYW}?bfO8DwmbBs(D0yUOugotQcI)&mDrQ0=bg|Kf~(D> zi#x82zBBp6YOB$vl~(Z^b!!{NM^Xsy_uj=ZN0)U}9y_LkXyQ3ivVH`y4}sI`zIT2t z0^ZP|Msu`fIUK9jwtDkxv+S|~u}FTXH^i@1 zxE2j)&#Tqr97hDFYvrepeP&mm3NNzB-73tWFG_%oK90q?6tws+%=`kYyMLcz{mbEZ zHq|`9eMTumFIpt2Ax3-VA|h0@WjOz8w%QvlCfJG7Xxy(xMrjH3-X4-Z3av`{=6(C- zdTP#~qT+lPkNwt*c^}<(54u13HM*bY4a8xF`7*Zn$qUyP4u$9o6m_K%#JO@{deJ~@ z|G3-aDL~r-A^p=l{W`BwnChR7Gn)#3cPpGQgX|LG9-FsWQw>SO{;(hs(=yKrlmMME z9c?@7^9mbiiM>adbb2}_Y@h-TPT=D2csL(%YCk&8~KAWnO%S zk9brchM$oXLU)MWaFoP+@yLgGgd%p=hs_>9-gPR^6()CiVdhxL(~=t$`G)1cBsx0hZRxud064Sv;W32pzvq3Zb^p#;XzY_VjNCiOSWF`rd`qS=c~o3l^X$jrR$LF^Op@9 zXtY03j-@DE!^|4q@p=$rcSEx`xs zV_^mx0m~$Afr~JAoB?*(ekXUj&fSB*LbE!#vH`Wb^>Y{OmYbIIB|n6`tefF4zO%LTUW<_$2;^ z#=ZO8j%&Ui-_fPTpyilLo%`iW?ng_pRg}^C#Y?UW?jv|V7mGni6J3Bixz6Z=roJTbE)>Q)y)Ou&%G(U-+Tk4^y|#pkj0uWl664 znp*DGArJne0;Jd#q^-PIt#m@GqS)}u;NgrM{_>N+=y+O`^)Yq4q3hn!wL$)=8%EDF zD)X)AkDewZ@202Hzc5VbS%YwQ#WCe$r3Y8Vj)O&}@wqK=N{Rt^8 zqE$3d>9{-NeT+!T(FrD~vR z;;$uxdc_yzftrvb%Gmp5C>1(9F9NkbWwhkr*Tyzr0@=Lk(_wlNVO=g)uUxT!exef zp6ni(LTTJ%p~y1M?|4OT_sS1}O7U3aS$xEq1f_yy=|S*x$E09ol`s?)v^PqCHkoL} zn)^GpeG1dv0PcbOJHoD_p_-a$D08uoR+fp9p^&y^ApS5TI_`8*S=o$s29wC0W(#yj z$ziom$MEjXq&~S|753QoOp(IXyKm#l-^Oyu*RDu}Yu*t)!?dsGw8-*HCa)*VmxI>a zmS4-!tXeM{5D-JO6}a3+7fD8Zc-%DyQ0;Ynrqq(#U-{iSuHGM^Xb^n9E+&#H$sQ76 zRRPr(c0670?s->ulk{0P?sBH}3zZM2^f?)9DdWPddjS?@x#)>IkuXQx`R#_MP}@S{ zk|%p`<@+)DY<61$^XN!k87|)ZL_-wvmA{@J#wx6qfdkj=a$(0U9`767eD=D7hb%O2 zmBE5mlQMYK!w@#BHXav8-1VE>^+Sg@y{wGg4MiGHw~oC~{9W?$MBE=-2os{}o9sd#T2lH+0ROnWgcnV@(M z7V7fQN6zys@g73-m*D6cxLWG>hVennr&KZfFRnuDi=!u%CvE$|rvCyx8zq|Y_atFF zdOh>wW@)Vmo>wX>=2{nR=gbI<5%bE5(m(uooZiS&3T?4uV&hALqF^RnwQEl3g>KrO*6Q5v9$r% zPLn=t`4wbj6`f#5K6ZFf%6;zVfj9ANDKtvY2vjj?8r{j~?*G9__QW; z>CeefvP#N9}SzpvEU7TEJ)^#V-k83t!wn8 zpDU)1Y!m?ne_(>4t6xAsf)sTE3FB5|LC9xMeATS^uve-a6j+11APz3`a(D5(ypk=7 zHcjv4YFq5_Sb$C=JZZ^Ut*MVnqOjIu(t26wCfD8Z9lt|9#|k*@a~}Cl9Wa$h zei2^!x-kI0jx3}Arazt~TwKj6kP(finrJCqIW_Q!U-$z(hpBEL4l&e{oU* z>s}xsCfNu=h&L|{in7m`FPSSyLAzI-%JF)bKyWdW*1ImSb8V8N2TN78`_BBFxJtUN z_kfr=1>fy~_W`GW|Af>w=dD;h*VGPRqH)ke7s{EDxJ5uE#2{jlvqZEc-ff_bsCteU z0}>zUuWt?|vrq;LivZ!#oABx=~(k_l3qIUUrs=}($R?{Trw8wVWI zwGUh?{p&`%3Ub_?omFo3h!yH=Lp`=QY>#CSq2KkJaB*(uUpBZu;A(3{QDp`bMvU`9 zK@mW}+zOPEKJV`2`8IzXd_ob!)wDlcnazH+NYm&(P=lKcN6}$};+m5I=fd(WJC0jE*86x5$nEhZ#N}a}qT%-4> zIcD{thB6hr@~$*COPe#4u3(jB_?zk*TUBqQ;A$W~v~4j}2(EP1M&y)#A4y!D5;J$L zyT48jx2{_Yc{ks=y%!voOe`NKU4eksj@ro0d> zi1W|w-zWzWim0lXS93>UvRyQjX0%wqwsKXuHmG8nq8$z7J>_#&6wD z4v&o#YEtEHemL4^d{1u<4)&^*LLSW#KK=wmM7KyC3LJswx#sndXrdeoNsLNDyiOqr z@;I2e8|b|1kf;u~N1@-(=+6_zW7;tGYbF;6`#fw6v7TzjrUewQ*CFxhe)*by-&-od$VRSyoUI z96%8vaa3MQSH|1XSoSCN^=sN= zD#G(}ot%hNkHSW%b1W6;<=C+MN}{lcN2`CMW8}lbHV!n>3)S4R`Pv*Mq&!N=Q(Y+W z8N#lvvOG@8O!4i(6`~G(QdyDC3o73H7J!pY<~9ZM=pSL`$|qV*SpEjvs!Ft5R{|SV*`wbK=N2B)S~P6s|`Rntoz~LlN2ZG{XIwnac|jwVGT5_OR5I zSr`eA^PIA4GaaMjH6Lv%foKC5R`HX)QsbKbjlt#l=-i{ z4zSzmUr@8o`KY7#!grl}Q`OjXCKFU&6En4mKkS}&7lbLyR62|F=rP{6g9-f@bNBnw z$CG6vS4x~VTYo5-#Z)HBMkcbD3k@F@6z`8>`uIk)Q0`iA9@(Nfv@hW>v-ep7Qcnbw z1TS3PEh4OXC*S1|Z|Z!kt=k26t zovXEaJU7?0T9<0HWUnDRw+5C@Ky{ygb4NicSpPDSih;5S3-1hm+Xn&JKMq zW!XqZuV9-4kFoVrE8~ydmuV3Lm#6?`l)zYy;J_2}Fiq^t}e7>zN?2z{%yB`V0 z*w$20QF$KaKYD)6`)*b>5~K4abkcjjjT+*APHVzb5)w3-E3~3Y9d236+OYQ4{7ZRR4SMsB6c+S0*DR9pwg}%hn(}eTCZ*J^m{V`;Oyox<57K|w_) zo2tspNeM}-EgHspr$(7#a#XP3pZwVuPwTKjGfYJ{LeWa>hCh_G%p#$g#^R1yqgwhT zDe~S&=-4BLo4R5dH`6t9*oPBJ5j;S_$T<5akm0RErcAcYiU5b<4 zTZHeQE~AmMv^1GG-*0D)-{F(hE0wJc^z9qP z#6z0-SprvDk}A5gMAP%X6t{$$c)FXXJ zf~W)=Svw@f?*v*2>79E1 zw9I?SX8hLqG>*d)&Xx4?xRs`7T(bHI9}bfgB+j;wPfn5heVCOMtL&MY)<`##{+A1u zjz(tgp*lW!O!f3vmK?!s4@#am#X27)Y9Cx4NXL^3q*2AHin;0}+dm{stw~uyRxNpM z0a>K=iI(W#)(qCKF&}oshfT>7)uuI1CJZnfkwyIN%z~NW4lv3V$wT<&$8CvYg-+8Y zPhx;Z#QVL8R}ARy)`){$$EHanBpE0w0@PY>GxQu@Ad&ji z3zknGg2HvDqc$J@`o_ZF-v0atWgZ)~8)7TO*Ci=9ShY`H{_^GPxZ;N_uenUj-s9F| zTjzQ?eaw&f##hG8zWx5jKUON@!$@*I!K*1@N_}=?E-X zotSbeF8z;r^Tp?PAi%(ZAc3-)XbHWDF5iTRv2B?+pax0BPR_ElRi^R_4NODs4itzG zQj@BR?;AslQ~;>^@BY=mZa$gq%!9C1WFg}kqov<=Hl?ji%5dP+n`gS-E}9r=MlZ^u zD(kx1yw(P2G$rjY-5!5wh)Hd3Ca|2y`Tu&#g+Oo{K{jFK+7Rn#YtYVIig`_;nBOBF zL-8C#zP(M69lZv=`;u(iHV&=fDSkGgfNdqWpdZ}NgN{Di%+7jzzN4XCf3J_3rKR-v z7>=R5dpgVDr}O>n6_>sKI<&iwM4>@>oA98tGU@?4yr)v);xo+MU^80kf8tPiLGa27 zFV9kim2g%_<(mf|N^a~rh)UpfGuC86D7Ab=kKQaXz(EsyyN0?gX3f%G6v4N zr^#87Ut> zPr#@$cD8$VT&a?LR%#tqbD^6Bd?k<3ZhnXc$k*`$2LH@em2URESI7awW)}n#3eO+$ zd4tk{^R8D7lHE4mkiiX`sD8nG1a2IWX)k$*2u#eD2efQT?1>x#%oLX1Qvskrn+t0-GtIcBi&ls#NgB*CTVJ$JhLN?S`jP4& zT5m%T1-%Ib&gG<}(o=B}$VZs{tPybEn&GRwqt8S`Yjz(7k?w%!M2EOcO$3iOoL0v4 z6aMLf?}L|+Vew@4*ryVkcPUN6v|Mtx!(M$UltQ8D?q&y-$(m*>OLd9u-k|rpI3CmS zUg6rV_V3SX6mpqA92Ot$lV)f<6J}Thy#P6dCi>N}B~_;ZO}Kq^GA%W@$(2P*iu~QG zZwX9rQPHYAjs04Ym+YyN6mAMHA>gndvl44O{WpGn%iH^e;~y3 zWmn`Yp`~-iJaY+qD5n;EVqteeLn>Y+dbuIbFugt z_pt5Uh1N=BmNhTQG7ctj^qpQW-Qc2HJ_zTBeL=j-kgtCkV(rPuR`TiBm{ouYlfd3&cRY=W?_|V%*MFnO@e@e*ttV>ljzvDo;JkvO2nPSE(78B1Y7A(+NV207<-P?WD6(nZa?GN%PN$UQtpS}&< z{{G+i5}Ns9KCIiKkYD8)<*aP@E)Myl@7bWA*T{TI*dKiBa_-Z}8u7$lrewh^?KLY`B+yGk$$bPMCi_ zM;wMmB!L*Un%SzfJEydNKW7Pd2ZCeFGJGE=gz!vj?3yt`Umu50p1+@Qf?r4AHLK^f z*5iB_pbIxOW4lnDqJAv1Pz=xJ>X?%q(s#zD)d~(X0F*7?5(!gc1l8c6Nz{g=LJqfj z4yX}T6{|O4W9N7#C?WgfzW_UN47`tp&{xrD@|*!`Q+VrrPZDRvH3Gb*M=D@2&e@-f zJ^Cv;Q~EzK(7QeeCk{v(L(uxsv-Roy?hQYuraG;k-lfVJgcl}>dPHPPcf7=>-#EYP zh7g|8<$Pb`d}5O-_)n7#&y~fNc*^25FAFeB8;>=DuJMPJpF3qv!pnsIr6?FfA+@_o zm|lPsPYg>0!k+3#$DTK}6ytvQ~Q@B|QmPBaYSBVS;!k zL}cB`(8yF2jlIK>+#g2^Gk|{+3mMr5{&3f(Wav?CE<-=>w40P50Z+#Sf4#>=y5N4A zeusAmA$60GJ>8LUZLu!~Fm`xq6u;CmUveG~) zO(mR-n6KcnlKPm@^W(R-yj|MpJr?`6dSL#3f7ZH+_0?Z*HQITCilTF+=IXq7e73dm zxjFhw`gdfLCxnf>BzK|tTPx-_|vFyaLtior=E z>sWieCsC*4U$%ii{MF+dFFYVtKf{r0BBnle4`rYk0giNR)1Q6YCqd599~{9ZNg0y~ zv!0fa$lbGIl>njPrWU? zBl7wQS9vr!BB7bH`CS|-8MUJQw4bG-#a6x988%OUrV)(yu>A0EZDiO{&@aCQ@0z#M z=WQUY6(7NTj&5jqO`eU#ruM!$EuF;&Tkz}vzTv66fWntA^STbHyI*X9jNBN4^~w}! zj;7BV8hWO(fI#b*m%wW~e|KnGT;h1cszE2c=IS)N!=vYPVog)^`Ya_WJ9|CK({J~l z(qe@?ZCs`Ad&u*Xe(|GLB;-3K<7NB3QvG|!&xY^&eD&?-MMnk6mqTpfpi?`wC(j=0 z&vh41`*4&G#)4i$f8bP*>Qo^-HMRUNNF>b=xwn`6`K6!$j8o${tfz$x@CJQ=P1?=w zR(iXJ9P7xyc^-g#Mt6822Y+F{%y(Z?<4R4R}1g*do z3@GqHtp_8Sh%mJD+LX`FF#Kul49p_6TAg`G#P*`SR}<@0XLo)6C(8E}HIkl0=4j5x zV6<*jwC3WauUT#dhZ|mexIng;|JTM@M@8XmahwKemTr}j?(SwmN(q-{NkKZKms|uX zX^CA~1f;t=Bwbp%8x#Q-q=bF^-aGG{_s5(0W9EG4%suy?xo76gy&q^@a)`J{jf%ke z_c{l;hD;J!=lzEp*eLx&68i{$mNk*Vj`L(`2j}QhD}rduR8nkqMfnRFO^4klfY}e= z3B!bENY#eGPbE@gY+;u@zwtfd`*L4|NJdz#2b|U(GGmRrx9;3sH>}!$1m}{WQT@|h zIbJyU1-6-cNIw34vv@6mafYpATji%;y09}6G4o5_jJ!^mSN{&N5P^mESjG0H$QNlH z?c9fJv{oC;%l{d1LSKCbD@A~qx_Dx)H_g(yO6uUAhhYwi3-;joH`q(WmI^mZ&Z+O# z{2x_QOC01FZaOxu+H|2D*zg)?@d7KlVMo4JL#6TYkWWKXl352>t+3$+%{ zS}n6v3_ooC$ojUj!-xJ|dkmWQhjvpU-RWGXRmK>t>9}Q6gGy3fO%Ln6_;Sb&!RLa( zSf%MN6q*Yjir*INkTBl^3PxlYdbj|al}YBx%lP}>EFjw;^0)1ZNc#Tmw$kJEQQ9Kj zgL*72#BfRDsc9+Kka{>==t;DbEVh=?m&M>doGnVDe137{YZ9VnEqNz-;a`iov31Jh z3VhZ-?{-=gJ`BOLJ*8eOqnMsR1RTCF4#=`}1p2`#2XL8pgi`^BPOfcU^X#~Vs4E3~ zSi0f$?8}J>dh0eDtNo^98O6n>dhbv6dVwPgzxTCMXJ*pI^74vhLO5T#7ajv?_1}z* zY40c#t`j{0oMwGb0hhh-<-H4!&bhkA>eS2VR0l2jTbMUU$}l#|^FPzBVIyDEzULRZrL0Nh-87)Q$L1xSMSfn-~9kNJc z7iuerS<+BOc|!)gt!I0re5FJ{WZ0zeDPA9O+|qn@Ezgx zbm>~yhvUoSjvi?r&G{DAPsMkrzqhD~1$0En%Z?niuF^_nj=Vx2`-^U5tLb>C|6a%S zgq$dRuJinNT?~FQT@hyvF+2vv~h+k`s;YJ zCF*IBU{!qVPA-=u$t$kx~ZfI3v64l<-Qke>hb^|O=^SGU2S$+bH_>=ts=Q~ir&%%fU zKYK`L!fxfR*9VvE^s5gwN_ohKWIxgrroZWZx`vXn!e5uy-#A(@op{*-YTXQE(C3+u zhYzM51x`4f*4zxDi1%DfA8Z!;lkrY!N%0M_P=N_ZN1TB1DNlwl20?x;JT()w?>Nmm zXog)IMy{I1RA)mhNT+ zUWZ4k@ivb^8R(K0+F6v}JY1PBFA=h4>zG)dD6Oe@Tl`GcDV^GqfV<*D?GX@VWWS8B z%Qo}sd`IaGx2+L^sGOKlx8&)ILG87-HyX6HNuy0XeQ8S@JA=&BR|eL7`8Yb;=FX=} zex}22n(AzV^fE_N0A^Q|dE(%&U+&L3z122_MuQR|S&h$we*r2iO4u8i{dEt-g861y zEti$6z{Usc4liSvmkaOO%A>uF>E@~+&nz?h95S*FUQN4S`TFW#`&~7L($WK#{VYWz zBgK!}cb1X>I;{x-C=Z$eWr!dYx$fk+Bj*bOUNr@?zl-Gk(K2yU^}BF+&q9%4%Tpr{ zB_s+glqLS;T(NF#6*_5E*^ZF}PdBvQx&qw>4uoN7a)J;K=fZ8u^!bbzdC%F2^6P@1 zoxPnyXtak;?<$txNvC>5Q+)W>vX;bP4LgKB!~A=O%Lgz|BBQuFWvKrU{snSC1=1BL z2w&lN+qy!btn>FZA_x8TZ3;mgJAl$KyOvy+*aRHM2EzdWpMIoz0c6W378!Y(%j7-6 z2FD_Nt?s%snd#q9g3WxW=F~Qs;qF_4FF!RYTw^<=OraOgT|nD;sA_#P1;=dhe5p;p z8$dVw7*901fY?rojc(+bhA6Z)!A_1cdzhV5G^X^qos4Mq2p`YDfbCo@?8nbdHpYcs zlRsYRY=EycYqgoHU>c(3#W7CzGiAi$gmBnd+B(w~&SmQu&`~rt-{^M=&#$v^F1amX z-4H^{6KVaxLGF&fHni0Ny*eQwn~b?1-@^mHl|ao%4Ti9e9!)Bx#PETI;h?@344^^6 zOrMWY6=05XQ2+cSe${EtOx`AsN5F)697XwncHV$aB)fJhyH5OP?VQg#cuvwo>H=Q5 zD2okJMrnbMD;u2i>^gNEv2LlnfvJMHFP#6(iOt>m>eS3tzcvHC$|^Q$T{c)s=Rh(P z;1yMgrAri99vaYa=Z}JSy929g+H%T&%(-++(tRnba6XOEfpS%-9ya8TMn$w`4s3F} z&25vOP)_|rXCh5-JBH7k9?+7o_2Rv|I}fp-0O z9sCYFY-8i)_3$!E(XQefwKV_=Y9k#d$AEkzb~QFOm}RzCXjUy7yGKGo*EhG%ga~l1 zZ?S+i&xVZ#^S+&{;gOOPC4hQ@=pvpb5C_@h;5yfnM^Qy#^_$~4;_2f-pprIAv76%9 zlqr{lS~nQRA|e4;7zhdm>VNxCnW_6cU6XDI-Ol%m#_dDX>zQO{yJrPrP29qmO$Tup zMTy^We=dPt6`zwaPy+3yQv#GsXH+R?UbzgCG0dtP{;?r{6xOILz!Joa74tHgQm+`_ zuI&!lgYf5dOWPX}M2Vb;P7Fczm`x~v4o8zt@#5m$^98hu=(gbGvaX+NjpmKP3U@Bm z65P<_-+_Va5ERp5XL)cn;GUcOrC7ovb--$`Psy(Xy&dPzg5I>h)Muvno~!R87E`}Z z`Ho=H#oYngS=(8Wnd8-0{N7^s79BFMNWp+5vip;xEB!O0rysQjFS$|&+An+FWyav@ zD83mWF_E$Memuba>Y^}n;So^Zx6Bu&eF81J#quZ>>DKoP(j`fW){rkR4$(tiCzySr zUiwYBgk}EZ>-up5b3%T?@?(HR&L>RacxrNLBsyi z8s#Vz2^bwsr}3b--x@1%1aD`6489r^7HFs@LK#TJ8IT*2_{f6t@5<{cPPg$t9J=C| zkR7fOCeBg(YD+GMh~B_Hp{ zT_fpLZ^7vo!ZNj?s_LUl=ofcsBbD6XTrpeOT<)l!mB5WzHIEaaG3JX8U}iR!E%P@z z{<37)sAx>%;ZN=n)eM>yiiMJrFf+)A`5rh;O(5Xvitocn@0f0+&+8BNCm#e=#n>KJhVw>NI`6mh8zR9-;BDX?c)0~W1vcY6Ft^WUu{G_(r;qt^@Kx?I@9Qb#54)+M-(z^xKH8HQ{&QB(tg;^H@O&YnijY|msPJ~{?3s#$Im-d$W3t^K&tI+cK z3ucoNJDI8=`n%yn*2%{dv0@bxmV*+mYK1{?bc@}rY*OQo%&@(A+LCu)(q5UFbOS<3 kZ+G;QpcYLJQR*S0KD1f(?6!Z#|K;pqV1lydZZR Date: Fri, 8 Nov 2024 12:31:48 -0500 Subject: [PATCH 7/7] Add Resume top-link to Petition view (CFM-31) --- app/templates/EnrollmentFlows/fields-nav.inc | 2 +- app/templates/Petitions/columns.inc | 4 +-- app/templates/Petitions/fields-nav.inc | 38 ++++++++++++++++++++ app/templates/Petitions/fields.inc | 4 +-- 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 app/templates/Petitions/fields-nav.inc diff --git a/app/templates/EnrollmentFlows/fields-nav.inc b/app/templates/EnrollmentFlows/fields-nav.inc index 2beb1446..7e551480 100644 --- a/app/templates/EnrollmentFlows/fields-nav.inc +++ b/app/templates/EnrollmentFlows/fields-nav.inc @@ -26,7 +26,7 @@ */ $topLinks[] = [ - 'icon' => 'start', + 'icon' => 'play_arrow', 'order' => 'Default', 'label' => __d('operation', 'EnrollmentFlows.start'), 'link' => [ diff --git a/app/templates/Petitions/columns.inc b/app/templates/Petitions/columns.inc index 1cfed9ff..57c4f432 100644 --- a/app/templates/Petitions/columns.inc +++ b/app/templates/Petitions/columns.inc @@ -86,8 +86,8 @@ $rowActions = [ 'controller' => 'petitions', 'action' => 'resume', 'class' => '', -// XXX this icon is supposed to be "resume" but that doesn't appear to render - 'icon' => 'start', +// XXX this icon can be "resume" if we switch to Material Symbols - see: CFM-404 + 'icon' => 'fast_forward', 'label' => __d('operation', 'resume'), 'if' => 'isResumable' ] diff --git a/app/templates/Petitions/fields-nav.inc b/app/templates/Petitions/fields-nav.inc new file mode 100644 index 00000000..c0964d73 --- /dev/null +++ b/app/templates/Petitions/fields-nav.inc @@ -0,0 +1,38 @@ + 'fast_forward', + 'order' => 'Default', + 'label' => __d('operation', 'resume'), + 'link' => [ + 'action' => 'resume', + $vv_obj->id + ] + ] +]; diff --git a/app/templates/Petitions/fields.inc b/app/templates/Petitions/fields.inc index de233893..1665c168 100644 --- a/app/templates/Petitions/fields.inc +++ b/app/templates/Petitions/fields.inc @@ -105,8 +105,8 @@ $statusCssClass = 'petition-status-title petition-status-title-' . Inflector::da