From f6230a7170e6c93af0dda7ec7f2821aede838a76 Mon Sep 17 00:00:00 2001
From: dgkf <18220321+dgkf@users.noreply.github.com>
Date: Sat, 25 Apr 2026 22:17:31 -0400
Subject: [PATCH 1/6] feat(quarto): update package_render to use quarto
template
---
.gitignore | 12 +-
.gitmodules | 6 +
R/reporter.R | 241 ++++++-------
inst/assessments/dplyr.rds | Bin 72015 -> 0 bytes
inst/report | 1 +
inst/report/package/bottom_page.html | 4 -
inst/report/package/custom.scss | 143 --------
inst/report/package/custom_light.scss | 62 ----
inst/report/package/foldable_code.lua | 15 -
inst/report/package/pkg_template.qmd | 360 -------------------
inst/report/package/r_validation_logo.png | Bin 9242 -> 0 bytes
inst/report/package/top_page.html | 7 -
inst/report/package/transform_pre_class.html | 13 -
inst/report/repo_template.qmd | 137 -------
man/package_report.Rd | 54 +--
tests/testthat/_snaps/render_table.md | 5 -
val.report.Rproj | 23 --
17 files changed, 120 insertions(+), 963 deletions(-)
create mode 100644 .gitmodules
delete mode 100644 inst/assessments/dplyr.rds
create mode 160000 inst/report
delete mode 100644 inst/report/package/bottom_page.html
delete mode 100644 inst/report/package/custom.scss
delete mode 100644 inst/report/package/custom_light.scss
delete mode 100644 inst/report/package/foldable_code.lua
delete mode 100644 inst/report/package/pkg_template.qmd
delete mode 100644 inst/report/package/r_validation_logo.png
delete mode 100644 inst/report/package/top_page.html
delete mode 100644 inst/report/package/transform_pre_class.html
delete mode 100644 inst/report/repo_template.qmd
delete mode 100644 tests/testthat/_snaps/render_table.md
delete mode 100644 val.report.Rproj
diff --git a/.gitignore b/.gitignore
index 552fad2..a997c2f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,6 @@
-.Rproj.user
+*.Rproj
+*.Rproj.user
.Rhistory
.RData
.Ruserdata
-val.report.Rproj
-inst/doc
-inst/assessments
-inst/source/Outputs/
-inst/source/Library
-inst/source/*Rcheck
-inst/source/*tar.gz
-inst/source/
-inst/checks/
docs
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..e665f6c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+# to use ssh credentials, run:
+# git config url."ssh://git@".insteadOf https://
+
+[submodule "inst/report"]
+ path = inst/report
+ url = https://github.com/pharmaR/rvalhub-report-quarto.git
diff --git a/R/reporter.R b/R/reporter.R
index c3efc85..73e26ad 100644
--- a/R/reporter.R
+++ b/R/reporter.R
@@ -1,172 +1,131 @@
-#' Reports about a package
-#'
-#' @param package_name Package name.
-#' @param package_version Package version number.
-#' @param package Path where to find a package source to retrieve name and
-#' version number.
-#' @param template_path Path to a directory with one quarto template file (and
-#' the files required for rendering it).
-#' @param output_format Output format for the report. Default is "all".
-#' @param params A list of execute parameters passed to the template
-#' @param ... Additional arguments passed to `quarto::quarto_render()`
-#'
-#' @return A path to the reports generated, called by its side effects.
-#'
-#' @details Please include source as part of `params` content. Source is
-#' returned after calling function `riskmetric::pkg_ref` before the risk
-#' assessment is executed
+#' Generates an R Validation Hub package report
#'
#' @examples
-#' options("valreport_output_dir" = tempdir())
-#' pr <- package_report(
-#' package_name = "dplyr",
-#' package_version = "1.1.4",
-#' params = list(
-#' assessment_path =
-#' system.file("assessments/dplyr.rds", package = "val.report"),
-#' image = "rhub/ref-image"),
-#' quiet = FALSE
+#' options(
+#' val.meter.logs = TRUE,
+#' val.meter.policy = val.meter::policy(permissions = TRUE)
#' )
-#' pr
-#' file.remove(pr)
+#'
+#' package_report(package = "path/to/package")
#'
#' @export
package_report <- function(
- package_name,
- package_version,
package = NULL,
- template_path = system.file("report/package", package = "val.report"),
- output_format = "all",
- params = list(),
+ session = NULL,
+ options = val_options(plus = c("width")),
+ template = system.file("report", "template.qmd", package = "val.report"),
+ output_dir = getwd(),
+ quiet = FALSE,
...
) {
- empty_pkg_info <- is.empty(package_name) && is.empty(package_version)
- if (empty_pkg_info && !is.empty(package)) {
- package_name <- basename(package)
- desc <- read.dcf(file.path(package, "DESCRIPTION"))
-
- stopifnot(
- "Mismatch between path and DESCRIPTION name" = package_name ==
- desc[, "Package"]
- )
- package_version <- desc[, "Version"]
- params$package <- package
- Sys.setenv("INPUT_REPORT_PKG_DIR" = package)
- } else if (empty_pkg_info && is.empty(package)) {
- stop("Package information missing for the report")
+ # temp dir for report output
+ quarto_out_dir <- tempfile("val_report_")
+ dir.create(quarto_out_dir)
+
+ # temp dir for passing Rds content from subprocess to parent
+ quarto_artifacts_dir <- tempfile("val_artifacts_")
+ dir.create(quarto_artifacts_dir)
+
+ # derive metrics for package, write out to Rds
+ if (is_rds_path(package) && !is_rds_path(session)) {
+ stop("package provided as Rds file path, but session was not.")
+ } else if (!is.null(session)) {
+ stop("session provided, but package yet to be computed.")
} else {
- params$package <- package_name
- }
-
- full_name <- paste0(package_name, "_v", package_version)
- output_file <- paste0("validation_report_", full_name, ".qmd")
+ callr_args <- list(
+ package = package,
+ options = options,
+ artifacts_dir = quarto_artifacts_dir,
+ quiet = quiet
+ )
- params$package_name <- package_name
- params$package_version <- package_version
- params$image <- get_image_name(params)
+ res <- callr::r(
+ callr_val_package,
+ args = callr_args,
+ show = TRUE,
+ stderr = "2>&1"
+ )
- if (is.null(template_path) || !nzchar(template_path)) {
- template_path <- system.file("report/package", package = "val.report")
- } else if (!dir.exists(template_path)) {
- stop("Template directory is not available")
+ package <- res$package
+ session <- res$session
+ options <- res$options # reset input options, no longer with Rds input
}
- params$package <- normalizePath(
- params$package,
- mustWork = FALSE,
- winslash = "/"
+ quarto::quarto_render(
+ input = template,
+ execute_dir = getwd(),
+ execute_params = list(
+ package = package,
+ session = session,
+ options = options
+ ),
+ quarto_args = c("--output-dir", quarto_out_dir),
+ quiet = quiet %||% FALSE,
+ ...
)
- if (length(params$assessment_path) == 1L && !nzchar(params$assessment_path)) {
- params$assessment_path <- normalizePath(
- params$assessment_path,
- mustWork = TRUE,
- winslash = "/"
- )
- }
- # Bug on https://github.com/quarto-dev/quarto-cli/issues/5765
- v <- quarto::quarto_version()
- if (v < package_version("1.7.13")) {
- warning("Please install the latest (devel) version of Quarto")
- }
+ obj <- readRDS(package)
+ report_stem <- paste0("val_", obj$name, "_", obj$version)
+ rename_quarto_outputs(
+ input_dir = quarto_out_dir,
+ output_dir = output_dir,
+ output_stem = report_stem
+ )
+}
- if (is.null(params$source)) {
- warning("Please provide the source of the package assessment")
- }
+rename_quarto_outputs <- function(input_dir, output_dir, output_stem) {
+ files <- list.files(input_dir, full.names = TRUE)
- # https://github.com/quarto-dev/quarto-r/issues/81#issuecomment-1375691267
- # quarto rendering happens in the same place as the file/project
- # To avoid issues copy to a different place and render there.
- render_dir <- output_dir()
- if (!dir.exists(render_dir)) {
- render_dir <- paste0(render_dir, "/")
- if (!dir.exists(render_dir)) {
- stop(
- "Render directory doesn't exists. Please check the 'getOptions(\"valreport_output_dir\")' and sys.getEnv(\"VALREPORT_OUTPUT_DIR\")"
- )
- }
- }
- files_to_copy <- list.files(template_path, full.names = TRUE)
- fc <- file.copy(
- from = files_to_copy,
- to = render_dir,
- overwrite = TRUE,
- copy.date = TRUE
- )
+ for (i in rev(seq_along(files))) {
+ old_path <- files[[i]]
+ new_path <- gsub("\\.", "-", output_stem)
+ new_path <- paste0(new_path, ".", tools::file_ext(old_path))
+ new_path <- file.path(output_dir, new_path)
- if (any(!fc)) {
- stop("Copying to the rendering directory failed.")
+ files[[i]] <- new_path
+ file.copy(old_path, new_path, overwrite = TRUE)
+ file.remove(old_path)
}
- template_all_files <- list.files(render_dir, full.names = TRUE)
- template <- template_all_files[endsWith(template_all_files, "qmd")]
+ files
+}
- if (length(template) > 1) {
- stop(
- "There are more than one template!\n",
- "Please have only one quarto file on the directory."
- )
+callr_val_package <- function(package, options, artifacts_dir, quiet) {
+ library(S7)
+ library(val.meter)
+
+ # pass through configured options
+ options(options)
+ if (is.logical(quiet)) {
+ options(val.meter.quiet = quiet)
}
- file_template <- file.path(
- render_dir,
- paste0("validation_report_", full_name, ".qmd")
- )
- file.rename(template, file_template)
-
- # replace the title of the place header by the package name and header
- top_page_file <- readLines(file.path(render_dir, "top_page.html"))
- title_line <- grep("
- as.character()
- writeLines(top_page_file, file.path(render_dir, "top_page.html"))
-
- pre_rendering <- list.files(render_dir, full.names = TRUE)
-
- out <- quarto::quarto_render(
- input = file_template,
- output_format = output_format,
- execute_params = params,
- ...
- )
+ # derive package metrics
+ pkg <- S7::convert(package, val.meter::pkg)
+ val.meter::metrics(pkg)
- post_rendering <- list.files(render_dir, full.names = TRUE)
+ # save out to Rds
+ pkg_file <- paste0("val_", pkg$name, "_", pkg$version, "_")
+ pkg_file <- gsub("\\.", "-", pkg_file)
+ pkg_file <- file.path(artifacts_dir, paste0(pkg_file, ".Rds"))
+ saveRDS(pkg, pkg_file)
- files_to_remove <- intersect(pre_rendering, post_rendering)
- fr <- file.remove(files_to_remove)
- if (any(!fr)) {
- warning("Failed to remove the quarto template used from the directory.")
- }
+ # record session info to Rds
+ session_file <- file.path(artifacts_dir, "val_session.Rds")
+ saveRDS(val.report::session(), session_file)
+
+ list(package = pkg_file, session = session_file, options = list())
+}
+
+val_options <- function(prefix = "val.", plus = character(0L)) {
+ opts <- options()
+ append(opts[startsWith(names(opts), prefix)], opts[plus])
+}
- output_files <- setdiff(post_rendering, pre_rendering)
- invisible(output_files)
+is_rds_path <- function(x) {
+ is.character(x) && file.exists(x) && endsWith(x, ".Rds")
}
-is.empty <- function(x) {
+is_empty <- function(x) {
is.null(x) || is.na(x) || !nzchar(x)
}
diff --git a/inst/assessments/dplyr.rds b/inst/assessments/dplyr.rds
deleted file mode 100644
index 275c8f31edeca3b8caad66b272f512975795a12b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 72015
zcmYIv1yEaEv~`g}@!}4pP~6=q?(R^axVwAt;kg@0+vFIcu-ALLU9;!~eYC&R>zdC}lkeKGDd0?$oU+1fdvg8W1i6PN;OxSr9>B;V1ZpHbiScS#*$XhFgPhxGaTA5AU}Gf$1LHTW!s5}jVxyOM*_
zrWqw@HYaz#xOw44n)A=}CpcdN
zkUc-bpqWgCYi#yui=|e}gio8rzm!b_N8&d&p)Q+$CRrfvu7_iD_dXbL@)y-AI5YZ
znAwZ!S<3CLw(PuYa(S{1P+*m@zR(bCpRB8z#0aEojN&8!H`i-;;Do+fRV7m#us#Vb
z#wpl%53YOmH7Jbu?iIzpzcz(>fef#V@Wdk->vTV)5wgF^lS<%p?~{6GXv+}vMV`{
zI6X7h0e8Fwku6Lrh3DyyA~FZE6;rGigkHMo=#g`rm_;~j_0OzL`-ux$i%d2acjgmh
z8v9FO{7hlsg6mU_@MHqguaacWe(;IXotqF~{IbU#BE>O-6<%GPs-RCXUznMIOP^}b
zuayvH5^U!uOqjI*zpPYsYt62^>=wAr2Ij4)zP+nEfVWsQ`*C+}|1q;P%c9H7N4NDa
z7o&*8AZG)yJULz??gaO$1UrEeRj$n=zIdd%)8D-PVU1SK^Y$8>NV-6^BLo
zGmp%u&Mpdi7c{5VdxPcMMo~qK2DG%#ilz?AV3NnsF1XWU{#7yVp6)cXiQ@b7@6Qod
zLP6*22PH@8N;51=sUM5;v3Y|W_yX{Hy&IN;ab
zD!3{i1J9WA+pwcXT+%$^@lX1E(=_qt-Z_ue=fn5S&8ZFT+V_2wI=fH!hU4K9>mJ$m
zDfz1TMhw!pZdxC
zck(DEybEM+l+nfM`|Vk%6`(PRuf@}E(W4*82Y%&Qh?T|wzHf^KIS>*Uwpgs8
zeX7lP)8T%}RF6=)e7Ow2P^e#8=hnw@EbnT3M&o|%0+DXIC
z8(5TZu@Tnm7;*wf&FsTy7DFE{fkq#XfA;XMVQmbJ+7?Ggc~p<~eC8e2X_k!~(Ztd6
zD9hRjwpIVQ{2l*!7_aRhi8-iQ>zF@kG;%B-?m#HM6<6oJvgB-ca{J}dM9`XbRF@2-;
zQ&Mco@fwpF4Okm+>4TUrkp_oviuFyMB!6c9RV}KnBRyrW#gH
z8gv3Yn4oV8O}zjw%#`1D^_a*AU%ud6kq?q}<2Sf_;u{wNdEm%V>hJX-EtSNpLmw6N
z)-Wassin-ElkuvR_Mc%=rP64k)6;$jqeOld?i2a(8mo+EIZwc!OJ&=cS_d2IVYO!K*Ek;)0=0LUS{Bd7;m^~GX4dONX$
zJ`G%)Rn01z^%E)K1{&eDT|PR~Y@B8&GBAmS`LaXZB}2(C67CBH7epsT2BsB^Iu!-o
ze<84NcyD5|2qB4}LJ2lNG;Gg?#TVB+pYK-UKaD583@_5{dDdy(e_15S|4X4pa^I+W
zpGICG-;$0HO2@OCMk{Nzk%U;tkG$I5>Ho*{i+IQC)YwLxqx&q{r~KuyM<2L$H8F+L
zXg&R@Y8g(YlLd>B%BpX)`^Hsi0b&x=RjO)}qlSZ6kLU|LI2!CNCmJCcF|ijJo9oO(
z1qp5O&%>nWcS0EH>{0v~iOh4Xg_lm$B+;{A$p_-@bfcIbj9}J%semXqi>#w%&NhZC
zc&A636GL#JCttxJ6r>(;=`L=cccHp66%15T@pt!=8I@6+P4k^h0q!7hXLBp(6f
zk6|V2k!VCN(_Mr*gJF%OCKJs@&UwLQeJ7mn5AeA7p-+_}aj!V5^v<>d24+=&xZ?iB
zX-;l}?+iy`@O&>db|TL!RY#cd{AzU@Gi&l)UWq|x^`+Qu2?{XG@54qXo{}ovixA8u
z#ggftUm@qwntY{_f-nPhJ{Z9QAqPR?X@m$M`6_bY3@=ag&p37hQ$`SPh;R67Ky;r=
zpJI@J^3PSqbNiI=BZ0B;;gZgRB%!HszM(mh@tZ7TV`bZ&->A-HX4bWTA2q|l165m~
zKfDT%PeBlZXy4F2p@HM!KoQvh5y|m@tiEw}9i1)R6tM1tf86W^p;V!B%B44+7AzPR
z^2(jhP}0`>vvaVU19d4nG+b9}S=Y&RdkYav4UmsvUJ(gsP}GZ>#toikU_={1JOQg$
zbuG9U!GZbd@HeHm4L^cu){0)!hA0Da;lQc7#GS=sZ+D!9JB=|~AXdRQi+xD*5a3yv7Djt{TWz
zP1G%1YaL)ms{F%TFPB+u6>F32dz_ZCp)imlGJ(1#qw3g1x#2}J`FIiPCrcZj_9fXD
z6k%2Aw0QG(Jo`9>vkXi1MyaLz8A&6ss;#{qpu$#ck1PMs)}q<>HSK#Qj!3v3e!|}u
zr`xO|uctgYCHFEjwU5Ip`Frqp5u@O?eo
zvl6hK#r_mYH>K+1TSQ0qIDF!jWPLpmw&hS0Gtg>c*1SHJIN{Jcx_g9i@0xp#>rS%T`wt
zCR1*!5cBy;2F)RYnmKYM70%y8Yqyu#W7I8U>`E#(=Z_zsS74{*6jqY5tWysF91(^X
zmc_6|s+(zMp4AK_I<7*jew7JUH#<6Gy=l$uF9ww`70l^Y?-g-YmjsreMTQGox5H#B
z$rO05kK=<_{7K@+>16S70(V~$C3-CPXzj}Gy=oMNq)wmX+7J>e{=WSX^w$dmcP`a~
zTJY(eU=h>5Mw+^_QELE(xYf+$1#;pCrYf&ln)0W;tb#82t-P0D%oUCQUUWB&qUc#t
zgG~ej6k`Kr&nDL_n*LSUYn{b6o7=T^Vk65TE;b+@FJqWExau9D2dK(B^kV&3w}+k!RPzr7@go
zA`I1OveFycKj`+rIS7bNzU7kQFhsAV@iRI)D4~Q7Y>13@kK3sKt2KHl;Qc+@
zpUDD$KOE*&q|+8H(b2xiiLLi1>A{%CR_7|vPXGqpM1*AVR8ec4$Lk{P?S|=++!Uz#
zV9p=cs@pw%?MC?rYH(?(|BElhA;{mz0_f@09y!`G`U)u7?lRFy?1I(zPF@UZ)>&aU
z!e%1t3kA*DD?TLcD0`y}N@GCIDqAfG4CC3;rfnNgw*-`=-pr%q59hVupZnl;lq2~i
zt!eg8FIWp9TAspglo_Gv_pt
zhzpL+>7Dn7#Ha%iKKSdXuW8kkEVR7tirPaySr?)|>8+(4ibGA$A!ecL{K{Z>i15E|
zJB1&6*UI&dDgL<@K+6KRdBM%qQKRiQOTySTC<#QEJPcn~WbF3wR`2X_AHsi>#65h+
zBJoyTNR&HW4~jk)AWrto-V+$;W~m2-(Z0cviHvmPe+wu_BnW^*1W@dTbCsLzJ4ht1
ziCzxl@Q7~kx+YF$e~BB|eUse<1o&m}=Hx(>vBBRF!C#z9(|mvPa$TzKlJ$s#Ii06T
zw*RqtcE<`xZ$uja7+o6&4HgQz=-qAyzZG{)ZcNyd#OFG~opJ46*>M1CeUbr1O@f!M
zgI$|pkgQ$)`$*5o3AR)khsZYELoXmeZUfm_-hPge?(&seNpWPeBWmxiU25Z~*{T+K
z6Tw;5+WW^Jz!@T-V0XCqEUeXdO=W3c|FwrG%oQ#)#s7(C3*h#L3fk;-a|NaV=+t9-
z5&g;ao-skr)oEu`L=>?TOlY;&@mX|!?WKoYcY21ZOGHhiVx;2e3`W~bbZvH|Bd?WA
z5m=P#cBz{tr+&yxU%zIZZ3Vo}z&Gy9+RNjQ=ocF(`#u}AyWt;$eL#27m(&0enbd`g
znvGnu0f(ba8Z+DFy+e@l92eZg1ITr56U_pw1S&%5;Rrh00>gI_4?MW~I|*=`Z%HrM
zO804B!hQrE4=~t3Z({$fkqgB`>|jTq^y
z??gqC?<=#)<5(gU`{7FccvO%k5E&6EMzke&`wv81THKp^P{&%A;>7
zv{@GZ$MI3?HGuG2q@KKUOAH)zYh88xiuJ1yTxe_l
z1BsZeFV2WNV9_z93Gng5kjveK(T&jyv(vPPOwrI@KeE*%hRh3hyYr%W?Q?Z&$Jb3a
znxsV;#k0;@ejIbxLbFe`TH5Eq&3CsS*U^p
z$Ax9n685i^khW@vj3Kmo0H)#^`L4qrt^9y86qOzDa(s*WxAxH12@eYBw!pSd50xGt_=zTl(;c&p@{kpmrPr?_${6(yR1Ns5u^kUs_)?1d=
z+$&%rh(m**ZIuH6@{mqKPq8e|Aa0T3myQxKsSM^fgVz{L$u&N3CGwMoe&2r%eP#{0
ztAoAAkg8EGi)WW{v}Mx|pA~_>>^Z}&$j~by0#>%Q=xSgTx@z_DrIa8IRDUEv<`0H6jJ$&Q$+>X*87FXj4h`7I}DQ7y-`$o9x
z_!#%LGkTA7?~H)dgHaE>B7LR&bB2A2jf$1~DZCJLOdk6qS0&dhA!n(G0t+xJf^gY$
zPJF715UK1iFzb2O6ZPNMrU_R9BmdQLy!88H!uQB9M|KxN-S;nJl3%wk;JfbyiSaY2
z;X$(^&SielnK7h;oZ(kC)<$DhBwj+L7A3UBF-m`$mHyl-{Sij78_{YP;u9co9(wY+
z0|7P>&aDvZs9to70pzOD&?)Y#b<**VhZl&4L-34|&M1>9+A}+MQPc9
zuQ@N?AM4{d^wh5BH`N5nc#^8d(^tqZc>BAh$Nc2Z%30nn9V}1hNl)kVJIS@ZrwOYS
zLEkZDgeqRYTW4oc}xEqZ1xEv)gmO?JxOtPneC5K2FM|_FygO<
zmjCx#!-lv8?Ff+gOG7i?hwkB`KH||RD1itYMj+zTOjN9Z+PeQHg809Q(0?D6f4bqJ
z^n{;(Ue`No+Pc*%+iQBuTRLcR*jkvV2(2Z-fvVyHTskw4traHF$@Od|nAfjsWUdRX
z$M$eg{ENh6`LDu&wO?zqp57uI(tKH7U?)`m#kLl|!86`g9C{3}Pn6K>)6tBR7qA|W
z^H93%8U5wGPVX;ANOtzgd9Un|liU+uiTu&n`qY)wwpkIB%V{v$J#xrhJM2A65X4rR
zU5O7o$LTy=<9WI0k=3GqPK{PAD&&zZ9)bQcpUq#lhKrCS<(u(-E8>gkhfOPduKJIk
z>6u5~>nk^U1Cx^our>&0(`>9w*H7BAg*sGps5sGL2R
zH!Z9wSGWt%Ta7oxs1fA;N^__axo)$Mq_q&lEEV-FW~*8e($+)}B%FTL*DyXS_j&=T
z=7Agbq2&(RrMlH+9iV4A|`Lip8`!JPa
zzT>N9d=6a^Viq`hSAbZ-kcL`stU%830pV^)C9?{rzNlpVgt(~hG^#ZUWWCf4#w
zt2XvXBbl#%-z@f_X;@10dQ>+eRr~TALbiyAqc^64eqz>XG|l206L{ByqTN5*M5ci
zDbgIo9t>KXudiqS6z2xJJeoqqoB6GL6StWwc|eQedgl+FAZ_2_9g`snj6k9hv8OXz
zM&~q7evgu5&e=HcC~Lw$S{U@4{2CMJ&hbB43XfDT;-sfRAbe`&3EydJ#q$7Dd+`Hd
zA@Sid{8QvI-d{!m1u)n9CVdHb_?QTUVNVo<-QW1~hLmHsANvUr@!{0ZeS`f=SMld_
z<_G;Nj8}6>LA$`zjz^?nC}J1P9pb`ckk`v~O7~o_bVqTn)ANpH65g>lhsaKzL^Pph
zDI5k;$*N~3OzzM6&EP~6CjV5PS8UWu44>-bIG$td$$b5?f)zoadEqa3@l(7Ch5ImL
z2-*ug$MO4Ta+h=_jT0-*grB6FV#(_M#=M(<=*N)@!sw$^Z-vHi=AZp
z#i$Z*xrYI9kfx=8SWi`f!BvTKz?=cLyXUpax6kzjqN{1ORte}_T1RZLAahB*&?M^R
zV_N(6DuVz1kjxDP)i*q=!rfg-2vMajO8g=BznAZ=qtgR6mTlQU%+Kdpb&R6*UmK
zJ=vPcy5yi(xFAU`Y1DXHp|#w-1jVxyX9wV3ZgIYRUq#TpPU)kOn5pCGOw!4a86S7-
zeDP2EZcwOltabl4dhy^M=Iazk0ZsFY)~o?BqS|l?<#VXV5v9*_&f>nli$nxN*8g6i
zY*XLW)4`2iB6&ND>95yui|K#(f0tC=?qP01ejj=XRnFLzg%nmxDKHLpNSMm;0^QGN
z?d8-&%*InRrca!6lj9t3P>CKb5#hs3CAw>r?20|
zx;K`wjPSN8j#h<0KuW|w<-!(}ikH6kUBHPzWFEP2s5x=qL?H8YJ>yu3)ia8hd0y!I
zhBzW%B+d70pODmsIwHU_()aR%XAtjO_yMY`>!5+jC93P~pwIvb*ywBAQ7*;h$K4u|
zZ9|&4y%AuOUo@aqfH&t*ao1&%39EHuxJ!CN4_s5*{SRVY$`#VSCF>%4mURN}$=@gB
zC&RoRBCs6dd&1l{vDOEwr*7jxpJk!~Br|XLfNN|G*ZPVPWefu*0GL)|tuZY1{a46`
zqKdyI3ZZZSXd8K9?UMd*yXiRO9WFo8x
zwZP5&R!QaDv+IZgWmZhy<&e3KU1FaAI!q#_XMU@9~$WS5Z3nz
z7GGBl8c6_#mN1%C=($mN#W-5;6Z8
z4pql@u1xl>2H8)Xq2_Z01Xg?=2^(O6-lsBr-d~5)E=`Cyu%z@oXJ}M2=O?H5bICnQHkh*Kvd*(a)3bBOMp#Zl1sYW!_TN_dzSXDivBKp2X$h!mIbPES*x$vSUCcwYFbgW%lo+Hwv5hnp>
zfk>C&O{BoLfMk(dLhL8!+UY5wVo4v0yLjuHUX+M?oFJj07n&x3?iyY7t?^Fb)SGbvVWxwE+uY
znsP>~w;->8az(bg@43}p?c3HS2G+-r?j_wuc8&VYG_7wt@Rc%I8S=g9E~<9Z8kgW#
z4e`W48-Iy0uGSOhyCjZ!C`PguAroO?&`}O09k#P@?Ju>s{cR3dJzZD4i9+)XGji|7~45D9Wc1-w+n;W3DY?EH)6+=Au=xvI3#!a`X
zx_)roQ1E&Ymy-3^@`xgboJr-j)$Rnn2a2*z&6=8NhTwXpiQlCyBXqWz0EFFeuulc%
z3a|f7nMgEpoFrzw6-B}!Y)PYP_;glT?ERFjp<>W(=+hVIztHt7vbq32#>TT5KcNk3
zi^@PqbJXK_Yj{;^#j;I*d0WIapCPF1>sDP_Q3OiL*sK^`S2^g(cb&vW)uKV)h>v>w
zu&mw1SCj1{!-JdnwOh^a*RSn@$!1&psfmrxNhoa)S)?(&)plO1#T=DXJW_`sg|3Hh)&Pa
z{r0Mne9F_d_=>TS&E1{L<4uEJ@|aJ%B`V?q}j%
z=#nmyk?E_wTw(*S(8p@4b(29=tNuL
zpP)t;QY$+x6QVzoYCmHGj(?3yV&HT1Ng~;Irvu7*MRpu2uo08Qp^rYhN@v3pf~W3D
zU&rJO>QBzQuZLd_%HZ7Of>Z8)xZc?^(nbANZc3Sn9r$Xf!4~NHe_ER_e(Wo_<{z$w
zHcym(TXVB~ZP&}`S#7sVo6B`F!{HCpQau~J7B=m)%9A(l1<#flaw3vvX>0E+gn7`mnOJw->4rCo;tqw
z@%WVHk)N-Z1d`9jSsLXrj3@Zr~tNP
zP2+vxb`xx4qe_(uW`hfrCE)J1>DQJ3Tk_6;PNj|_CEp%QkP?sVMm$uK>F=KI1``%I
z0*aqrJFh`6Eqb~i-w%!-D*}G&E8gNvPZ;0rju>2o;-X$*m~G@zIzL!my<%KMr!omA
zJd3U}3VJJjyWaT!wt>F~y;M%-598;O{0vvQjXA1n@*nXS__(FI;)3~q2jD-!f5*2~
z*W1|r9RH>9h@^k&b2nxzDSh=269%qrY^(#m%|Kim56U3L*mb-DwE@#kxO}^#)K8tp
zp1B1~
z+9&Wki*j_jn_<^K-Q_vSG}8K&6@4M?dWnJ5^jneS{QMxNP6aG-M6|N}IJ@kpuct
zO(&pfM^UCAX3txPF5or{68RcC+Wp
zE7k4v9mRjcBE~Q1ub|`>`eIWDztsN1ZhE__4kNWhaizz6Orp_4-0G@swWbuw-Bft6
z1bt-@AzepHHIHBWT){0TvUSrvnMu+|-h7kfRx%!!?VgAgM`8B1p@ssp3m-FdE;kX@
z=1Ys?CbUAGX!oGpQiETiQ2*k}7wAHtfA8@tV%6D;IDd92!3Iu9sYm&Iu1$RpRkkih
zpucA;CeDgV#w_Rc5_i0BJ)*Np^fPLz*{K?FEj%}g|
zu7m{Jx;eKs3G+OMpp*I;$Iqw09f!{)uVL$$Lr$E?iv5nGyr@uUWue;#^FxAYGcCcL
zY<>;j?(x&m8FDjV6V~*F6`7e)jI@3tCLZ^AzteV{?KRH??YhvwoUr2dEif^|Y)U<2
z;XDyR&`SQPY0fQm@ot=eOnVMGU-XiJM;?K*_5J7uTA}y$)A0bh7&5Lc@w55Gy4i1N
z+&^(R@yZjI*OB%uYu8BSg@tA(I}|FaUi(!Kmw#4UeNDf*XGsny;hYkv&M36gm`WEo
z#A3=Bm>hvU?OrP4-VB78cxyB=>tvNBJKcvma4kX{E&F+~BpB$-v?Rv)<)1AmpL$
zvUI2k`rEldVCOaXfT-At9n+Tj!^?^NUz6VJ!j-^&6YSPFRg5cC2y+84dJW=p!a-bvPrFvghkn9_a584uuxg$r-WZ?=
zR>+Im;2wNWc!k<|3xeS`aQ9X$k|
zM1m`y+}qgwXG%4s(}96_xsjp7)Tcdr(=NrXGRvTGyksv^mz1^lbB_hlDi&hvr)}0f
zb`uRV0`t`C!3eVN5&j&udY?h&o{AU(P98bB)$B#h&rS!XWXn16qShA
zs%k{6{wle=FnCy5egfSIq>0Klv@$!iZSi|B1UkfoFUk)Ci`A9O
zHIC-4#N?JDleoxjvDNXwP(jhDFdf(Bm@j(w;r601D(1?b!Tx20z+2ewXYye$nxpCZ
zItKci&jc0e28Nq!I`nvr6U)e}KRh_JSM;Wgj3#g!GM7;@m!sqxSM6pcs1$1!;CM+h
zimc{Q_D(=FF&)EUv(8c$o}^98fPQPSDQ`ie_n06xQ%1k)oMJS#@HBsYGm~x;Te6`
zKt}mVtd`t7n5NwmdP19oAy@?uYD-RM{C5?t4a9BuTV@|>ztsH>`RYNNG0lCK=OJ7b
zW}p0-aU!tgv*_+9qp=~gXm0$kPWVMXI%3&A6)c%?bCS=7xvH2>YmR9BGyz7WVm}vm6wPG0BOnQ+6xlLxzv^}8@zYB0UU0AbsRlZ_PIUmId*peZoaX{B+g<5#o=PjIuf5X!Iu(QssmWOqL9^^_`kRL=
zwCz)YRZZy?LoXkPpvqR6WCaa3tV?T~uD5~S0^WvamTM<}ub}(FRDP4MxtIaLd~|p$
zkC`0Q{}K$T3*b{AEDJ7)VIZSHGo;-IZAbN!=hEB0B~{tw)ex#uGo8&Sd8n<}NADk?
zIoFX5#Px3;bU?FFzw#HnwqbXpD#_+07qJIN
z-EU4q;fddbP$LNfsOug0P<73oo>JRBL!cWB53r{x)YH>f7lx1Mev~d;Mu`nF%FL}r=>2T
z75Xg6sVjSVQpiRV;yI0
zJ^Ph;7P*PJUyV2+U$M}ZEG^~q9CHIFN>$7^r@-&>mnZ}+Vn45Mwrth6+LxXR26=RZ
z-^`gwzCjy6x;Khi@-M=Z?`qGs(SNkZyZFQ1yn^MkZ4?5DrA+tb1I=*qfggqh+OvHR
zI3L=sxZi?8%ba@-x$P-;W}{c0zt8I>^F*;ruSot0_Cg-ce)p6pGV5hr
zN*NldHk)=+BIN}uIpexkW?4*+5lfo~>=vgcf1S#Wi~@Gyug|HH|H8?%SVeW|UHNL3
z_(R(Z8=i~zRby22hoM%2Z_E72{8JGx!_C#j;skdq)kkBgeCKOjo{lj022$oP!vD#;
z+uC23X%D~Bd*=ZhBue3X1SU6#3>yvid#@!i7
z+~^qqh8zR?y6K3&MuNwLL3L7?aQcl{?jbHjrdq6ng~?IwOfXByY7?V$-jCNmjlr(U
zp^Bvccfas0`xAS_>pM25%qv*npX`qRPfmJl{ZCH%`ksXDyAuu$%IqS|T2NQNhwz6bpal58c`#<1Fq
zuT1p&!Gw#vj2yvQQ3w1%ZFE=%y4wmgVaY~o1c_&OeRtk&{7>Er6YXcoE)C#%k5^G+
zQ(btvjP9=C91(y?H5*;-_&Y
z7)3VUPA;h&@Fb7lkl!-pQnA{52bUXL$zsv7mn}f5wqm{Y?LGS5-Ih1JMpN*AN?TDk
zUYl@!_sEwWFfs%U7*s2L`6(O+8GM@Xj1j?K^e9j0k5*pCLB+`n8z3f6qSo^-Vj)ov
zLJ@YYJhZ2u;=AhA*}egZkAjMPb61GfppLbOvY(rg!)S`RENu>vZk5U-<@B1i$wmZm
z=z&8#VG%*Q&9MVI#m1I?k$&j|=&Qb^I4akF4~!p*E7G9^@43`)$edM?y=$i1B9ia9
zoQ5y)Ye3`0i7Q^wXU&*m6h5B4tzRumDieHhA8uDlU~$y}Zk;ja8Jb>%8jTwU3b{zn
zSY#sEFEw(vWpdl@1iS}t1G?&2UV17C;9P=p*PSKx*0thBFnEASBWK`=*gZf^=H(XI
z=@y(AR8yf39H}0&>@qK^cawjq++=6hTCw80x+kpn15_&H;P6sD$Fduogb>kA@yk3Q
zRz33q*FPIFFE{3B8v(HX?3=(e=5ttu*P5ei{z^447i+_Yy@DC%ekfC~wH{HvzxcB}
z4sqcvejUDeY)R?waZ*n=KNU+Q%KI#nt3F}~k}3*(=CDwmD$M!$?K)g|q#|u@KZIxC
z50r=YAg%_*V<0O0Kh`l4x4Fq8=A$!ZI`iA*=%=H+>sk3&H3h#u4-&;P
zh(|_=6c+6$n1U8}YZ2WUTVBvC#OPi$MSODwiz!eoS_C!p1^H=7yh_`Nt4~*Jmv3qA
z#SYVvA?{vcU!?S=X<*3Ep0H(SF#Tj%=fLM=D^WV?>UE(@bGLl+nJT3E4UKgBJ^$08
ziOXO%GQ9a0#Vt4`s+p3hB_kHnv(Sf&L7q~q-!d&3v=r#>t?Z0`8UD)j-$+l<5C7Ev
zQ`ciZ6Z~<$IBdKgmE@kY0o7y(@JFr<8kH7`9_sw@&rinc?i?d8FX=-A_GK`;
zbDvw~I#U8(?T2{+(>;SmuztHVtd;^|L*W0mZ6w89<98Fgp(@7a0AfTROrQyt~HyFERIMxj0%aM3%)#b`~@
zSj|?nnuF7vOS>-rG!y7h+g&^fv94})zQ6l}wH-jDO)_kXiU5@--wux~4BWHNx>?p1
z;*0YfoxsRGGL83^vb~6?_$b37bVc}{S7WZGjc-{BU6Dc2)JGW*&q8o_@fJQ{X(Qko~4ewpU7teQFoo#5B&Fz^PiW9*2tg}2J=ZyQ=;d#4;|zh9;|_1
zlggf>?1bO$)Rn}RyKQ*cf3G&Ik94`o{DZ}ukp@sXSWR}`elV1#Wb=sTDbOIO+&KoX
zONvfMvKI1A^C7NO;=5Mjsj)~gnps2yv!Q%cuS#mPp@0kVqY
zP9%FYO-q>y01d8Q{weW{&eeUGluOZ+%NXkWR+f4{3IM_{
zzcj$QhVFQW&46(c&fLSH#ODy|kXJqgi00oTrj#QCJTP}9;^prEYF~XBFkA7mklZ^<
z-*xGDzjg+%VdgA;4*3L$h13TMytCZ?!J@mb=Ctpq2mIdwGmkolqUTo(@$7wl?auEW
z{n9mRCH(F(dJ}y&!|+dhG0<>&9oc@91*#ko7I`nlhZlf)MgH@c)UwJv7UQi!8UMRy
zn5a+K{c8TPz!l4XN2fMnk#_RZ^U&x$f~I1&7g><2w<5O3;H&e~;O!?P%LEQ~Lm~N_
z$|#ZRZ>-2Hi-b8pSOj*aVmQyf3s%bTt8IWSS3mL)MQTTr#T>nZ-4uq4OrGSd6R&?M
za9ZN_teJIwKKBGn)s+JpaL6HJ{|P=JPXhj)x>=vYx%eW{rGY_Ew)g$lJa=}Vn{Zj>
zWh381w;R^{8fs{LG&n%b3B7`;7Q%`Ld1X1=O$>d<$ao`O6|f7STEE?&Ao*M4d4p7T
z#Mzds=>8k(x*wPKl&fs@*5he4#WDs2@^KA11p7VlHTNuIq`;nfOX>cHuJ%YCZvP0t
z(!0`ysfhAa$$}abouwYUdJ31N9x{I#S7fEjO@e(`s7PkJv)gZ+
zV%)~Uks{j5dez=YOYh6n=JJu3Jl!6yoY>lO^@N6~{i?XM*~*y$%53BqofA?=OU`n)
z-;j#;buT_^rtc;dmdt==zJUhe0&dqR=v9VROL5xtKB$v#OqlyBlhcKR)me@-#;mT@
zZ;xAhvSvx(ek4QPSYhlT`GR$&X+CRg!!&zSLIs
zCaqBGDRp*fO50H0Gt-mBW(F^O4>tqA!?PoG0637-(cOEBN-18xhpv|KhhpFtLcBk@
z>hOppFPxZdamoD_v26!~Q|59CoBDLp&(y?VZu
zMb2)?T)BE2{9cLYE0oNNTA!V?!ff63;c&nR=^>vh3P7_gZ$#Zv&uAhhH`mBmD7u(!
z)Praz{X;r0WEnwho3|Xd=*<%=rWs3ZOOS)w12bXF!m(@+-|Kbp9Y7|}$D=s<$=)yb
zzD`lDnr!<^&+lV3)^^W(M8iPaSD(qb?YnkH+zyeXP}H8&BL~_@BZwnwh{nq3yAgMP
z>2nw3B!-Dp_L8g5GlV0<&N^@Aa#hJmdLz*GdF;ej79lMsfc#3Xdr|^sdoYCzHYQCowE#G?9&$uGCCwMkUN_}%bJD3kA((ni*3xgd!uFaKCvjd%kUMN}P(AN#MUp8&f
z5sJ_BU3-s$aWWYI0qKr^)Vhk>72V5z=r>W2zy5G`N-@5Jw=Hd~5-JljmWbZWdMdQ(
z5&5B@NhGzQJCuu3T$#Z+9QY$zB&KSY-1+aq{_O6wr;=LCiD$kk_MYCRrNEELOBzz*
z2)6ufF)4$No^Gdu1FEvbwYInWFcvDDjRBy)wrCBqHbaH=^`%c4Y|yV4!OHYC$-hlr
ze*AOom3)LuU($^6qm|?q_S(MPh0`YX?cqdQ@$1
z@Oxhm0-CAQ{^rifVI(Y^bm>_QNK#m3WWA(u#myAYB7OG7%;lYl7djy+d<%&Qez}{W
zmFLKh?7-~rRAR3O?b#8y!l!&cbKV`00c~T5
z@8`GLe%$w&BY&y+qL!jsVb`Ozzu{!?7LOhzQ#Drd{534nk70iGoaN<8-fGhgz0A$@
zU-$BWjPAcOhohDG2W{opoDURi^i=<4@mjq~?DA*GySDwU^>|nA)ms%zn%vtH7E3PC
zQ^1K;C2EZ4nRH8!gU_xR5Ja3g5_+hWfmuCsb-1k_#2mxL?tG0NtgOe4`ge`gpt}9o
zCwMDFI%@27Zo6D1PX4RNG2-r#OKH_l@d2&o*M*wUzdRGIURr$6_MeYz_Rm`51(TRSpENj5`
zgM~~?o+ZTJowlt{>LQ#dOuNLZ@^HggyVYpi?ieqt08-JDKsGpQV?zO$>KQT5E=q9Xmx#*R#xwbshlJ
zjt<-WFx}#>@X;crL#@dw&;z7;;CN(K-LIJ7nNLAe2g2#A18H
zZU2ZKC-F{`tfQ*Q<}DU(8SW~&BYbLmXIzZ1I8?@#>TJwGQ!xupnTLdX`PR>TPP8i
zXB8)k9fAHOswG*&KaO2%C$~$rZBJDxr7E)CRFma`RE4Y&q(jx;QyhJfhLCL;%@$A(
zfL#9r!XxicP9s~iAC&k%qjyKELWpu?26ejBw7Q9ON&ZINjPsST&%yA=@+M@riKR6R
z_Ls9_Pi31fwC!>auSJDT-Y=j?oh^-Mt_4xAR>&NC$)34e(>&p%1|zSWWpLVZWh
z^H+4-A?3MGQe~xUn6*`i_{mMBd${SB8h<8Jdmf8XRzb%JU*AqSK~D5>HZ?fkFrYUd
zZ;Cu5zILdf-D1(i%jJFHR&&7@)qEvA?awE6zZm<^T2mwgz+OCWW!AK+Mr;b1qD6OS
zBRY$;{(qdk1CV6F+wM7yY1_7K+qP}nwrx(^)3$Bf-P4-3?e4Al-|xG-cQ@`v>_+5?
zip)G!aVqLWoj3FSJDb6y?4rzr|=G;(+b=;wB+{+T$SH4$UaP2Jo@w)JNn-;2mbDPO5n>k6xE}>
zBNU>u-}2PW{3@)r=Qt?U#XkbWIf2PhLE%)3HWw2(0nySiVX{D~z0bSiPp?Dbu9dPB
zE&Q{%zQAzOnT8fmA!Oi+e7IIDE?mPcBUYET47tjBq2T-xk*r|7v}(XY_Wr%X96+7H
zh{5|m=Uh%TC6O(C-UOXP)mJD&?Wifls*1rmBoEzk{>nt>(yJ8c^X+N}7gk^bKn(|#`sDhM&UfH
zt?eH&{6pz}6l~8`?45FT_J1aw|7q2;<#uOny{=#zVfc9_cW$S`&im~rZ-Y5^Y`sjK
zXDrs<|2&nfOE;<)?sU;HGskg*G|#(FV+zB&pz+~_t-6*~Y*tw_;M$B?*IVD1Q_t3M
zTo74?-7QLagt6j;@zcKvO!A#_Zp0$N;HKE6DcQH7{gq*V$R8P4g3VOvWpJ%ML(cff
zmhzCgpX0tP(wU25km8;BR2-G%6=dXitU!A&YGiX~;SmNbzE^+j9zGK^Y@HhPyEJCV
z9ont8=l{u|2CT5urB~V0j;PXXu~OA*y6z?>M@kkZ>8-=ZUpAg|4O=m7u+v6^uCZFZ
z@3KQS4Y?5cRp)8FH(hT=p7JAuo-$}aZ%C{cEoY?I-je?9M6^-70VR>dU8a>FTWDmmqE!Y
z&T*F$h44Ux;C2rgeO5!c3k8a4di26sKRYtL%=i>M*R)rDxh!%C)7g>Zf+gl0Z>3g;
zBDKFy7|G(SZ`vwBh5i!WLFM`m$cZTD@LMuv(Vr3FmTyIs6Q3-mP8i21I!S3}5~Oqt
zbBp0TG}Ucxt^K(Kaa5Y}KYNL+++!~%Pmp=-
z&~s^eQ_ME^#+z1h!Cja}SSDUjn&XuyX~l?#SJ+8M8F?@ZCkkVHkPLFX_5|3Stq@hk
zmVGZx9a7WYw^Mn%G%ia!$BGR4Dm%Msz0H@iGXB(@oSbPrZ~qG+G%tDK=Q<4vS{bN$
z`xrzQi5Z)1mLPgVNMbjp`MYXFuq{Vh?;1~X0Tk~LmC4|Y06>JnRJ`o
z9NISMT+B&?wtSP8(RB4sBT`^w2B-%Q9imBy8?^vh?hm>sNl>-NEi#u;D_|bX)E`PB
zWJ1lqFjv6*fOj=)fNikyAn-b5mKV<-O}dQhA$Ki(h&*PutryJz#uGIEj3+MInFIA2
zk^_?3K)^0Tra{O(KPG^$s$59GmffF3x
z?eN#Q*f#Z}ovd)?llSce
zGz|t6?%)u!pFx+ZYZiTv$LaFL)Y&>`E8-ODQO%TIW=>vk(r)Wv%4Mlx?(__e9St3=
zj=o?`J=f|(H|OS0&IoddcF7XM)IH_t8J+C#>+k>%w^Bo_4&)F-(_IHU@ZzDbSC~w)C$KoEAHKB+keV}YmU+a)AJ1rnTOpA}C}CUF#Z_J$@6Iu8
z&$$H$8i9TPF_t*%=p96a^xt6?$s!QR0!|%suT8j}Vq$pjvrZGGp3nCVO|#cF6)YTc
zo>j0Mc+Hbz(6zT}-_7ONi+x}+T7a$z2AQ~_
zO)6TA-03qwns_RCSVl&qKU4%FZx^4APGATK>cvoJ-S#5fn!0l1VW7^YjiQeMPN%di
z->v$$F&I#YKgOk&ph+7~a7ppK($mGCb@T@NKBUqr?l^3d?J!JH^SoYUC^09-szBlX
zi&ypr?6rhLEl{j-1C60A!D=e3^YUuH`80`?~F_-Rw0yTDVo|1
z33*v7W@iydCm``RbX)I9Ft>4Jjr}q&)!Up>f;b?z-Lh%VG06-IUpFV@tVKRNju6Xl
zX`tgb5Lj!3&Z$s!X=4cx_TC;nS>?rSW<{(9nQLax1yb4XPv(9sy(z?$Rf+lkG
z8op%6mnk88yb!(sV3LV@sx=YQ&bN*4!*buZ81bok_-Xll}-$-
zar!uHX$a!(Wy@{IGi_Z>D?x!H-&o@5-rftoz=X4||61
z?5f-?Hth2!PNCUW$?Z1O0q)%|6zOleqQURvS7(w>VCg*YXXmPJG|kt^m^A9D3sSWw
zRoND1`FB3)&XI+l(S@4EhVL4*R;RX+1=|LfJaR`-uzRk`Z*ZDRH0gK3{%B@r{x>KWQ!IJIRLozs3>sj8kEUX)P*^|f
zy;L=M=iKgT)!>Vf^%hzOHxgH2H!JYw>4rzi!fhGW2<(dK@PBjyT_uCAP1#Yoidv=z
z%=@MLK5JlancQSo)x3k|T^lvM$pw^I&ue_)p@pA1RQW<(wOTBQJ$W~u*u`Fl@od^I
z5LNqATMzDxY&>^jPWL9y@4gfCPA>TISB%0leE3J~eFj(cz=o!2klp>>DHv{J_x_{*dlZX0L>;V&}-BTvh>0>-w&zOBkVaxZyYKfV{icl}G5ztlJOz6Ahw2rkjz
z!Qi{!b3iZrTbSSfMkUNY^iR>g#o_zD8LNraJrDBxpI?A(@=jpBL*;I6?X>{nl<_j+
z<%(68ncjrygOy&(d|MF{hy0WelV5kVE&hOXuKMyz)ry@0v41#eL$fuWz^}3cf)wfn
zqBL1*X;q1w-P}tBRymcdugn>bsY(xp!m{HXKKIifKDn0=c@A4)Wq*C*{)&9Ja}+<3
z4`lci$v)&8Uy<(qW;_JH@%V3z?*EhYbW%{=McUw1VGQ7b>XiCpL
z$%4hhCM=!Pe7PQ(gV4SuQGNQ*gZy1!u18dYaiI@DMA~Q(dGI2BPYrvvS%zuBPILSU
zt)-a01(;D74=0?H4CkySjn34aPi3(iyE~d`^;d{JLtlFJpTwDN>Qp9(kj&$|3>qkI
zXDqt?-hi%uSyDohe5;VgI!}sFwhDa?lxwSW70{u#z|Fq5X`Oy8TuJoTQC#dTCT0IN
zDTa{g0{xDX%CJmgByOt6`OUqEIjye3Vs3n@{QL2l8r%?t5>7RS%aCIgQJ6{2;0LoS
z^Ryph+|6q+*|D@PTKcWbj*DCB*8S}k|7u~|h%7z1K?VJ&GQB%>zRoGqXnoezXzCfx
zz@#IDwH0$OQoMcUiGJ*8B@y6BlfByX_YdFAiZ*1zhAYJqr@Ls~syB(ok~C!qI~>7U
zHaNnCa}K22ZqQ}5#@CV<{l3JiiI?{I*!xQ7q3^W|fjcVZ4R-5}w?}TQ&;?2wa&=q@1v$!!8y|MW{EGW<+C4RuHOp^76v3V7
zI^Mg~&IUvlE7HlfR&?9bRT-Zw^jU9sNqjrP&%ODz>m=;ejRQBNXl0|)za6&5cUrmQ%Ns+JAHHBMSA?bH>`qw>+sKJ4IjSyzyU!Qi|NWmFr50P1mzy=;HRAA}tn}C`JaI(DxujF9%HC}~or(`W!*}%5tV+~}T;$6(Qb?gq
z4oZb?@muJ5ANTnHBq^8NQRHkV$(a$2`RXsPq
ze~F}{4zcBiuXidUx-pZ{*pnifiMV|4e&$!>{B>=}%IvsMu~71~$7^q4OaHO)ZH4oA
zlO(Tyb_xB^VqW~B6s{YQ?xdZhVrMejX&f!i5?vP#Uapb0^@kg*{B?tyvez
zXGwH7QI*!u!+qN%KqN<($#=?xv;2HXcgp0I{rBB0e^MgP1@khN?!HyB#~!RBCebTr
zX+K@5VC(KD7{(sM$^kJ15@4L39WjChe2Wkf~fUK*LA(ET7boqhi65uT~Y@nfxY?
zYxpTI^5~nn>aJDsJ^r5mRTfwGH6Ln}NOWsWlvni)@+|m?&ol5Q{z0mgQuu9H@)f@Y
z{^+lA9#79#`p6RBPcijH1^H=}x*Kvn+Cc5R@pj9T_gzr9HDz`hzp;H@p
zdhIlx>?`6H-P!jU;_~-0-K76z#DssfdgNEaB>ttUQ%~oop7(vk+jh3@%KIa6;rn^_
z%v89J9|Zfb$_>P~W_7Cnv*~7JU#|Ji{l&YG%9^I$TIg8s#3#M0cnmemry-(nbyL%O
z5oym@Pvf>BRmj9T@d!&pQz7Y$$k+XrKjU5R=%=&dIREJ9eX$rO?UxX+@2x>XNiWW;
zuraq@BTS{{fPO8mbFAysGpAqr+Oz4CZ>q1pWWIz&MQCEJsK5$m0$>*y?A
zweVrp<85{Q`I6$}p65gN$yYr3)OWd3X_;DsJ@eZbN<29g?qG9J`j4L-IQ%E)ldi#z
zkN6Ai3!3Unw4+Zn@BStt-dnm*Tb9Q)>a?Rr+0aY|$!ZAR#6Z5`u2$@E>nuqcn$AnLvr=iV#9QTR7;v2MQn`QOrFy>tjzhfE_d8yy
z=TyM>ySO4<_&r6iGy2z61RZ@shZ7-)ErPuDzGLvvC>EZ%gP%k+e|xk;;tEJsSBaNi
zvbqL=jb9z6{{aqT;dmvHgIyn|VM-s@l+OXo&Zy>_WEeG+8hNwCF{h}3Oe2@UuYx|_
zVT-1T0ZKl2rWbgUU1y9}Jf*W+hRSfsvs;MCXiNOX{n@F4uv5yT8Ac8s+q4qS$^Be1
z$Jx4@V~wpwk}I5O?%Hu`fjW7LvZS~Tw#RcA8*ghqyLsZpvZg09DlPbMa4-p;H}K}C
z(x3X~#oScVav}292rpdkpVQ{+p6;}&iEcXtCpOJdr>W`p
zZ+!BCwHgAwPKiR&{CO7$J9gtq0%a|qK2rV1BFA@E>ezFgR*O+CS!yS4cNXWX?)?0y
z^u326W0oa&=3YhW;+yIr=)Jo87PbcUUEs!t!?uQudhMb6(NrSk1)A8g8oilmMI{+Cs>UA~;0Jfk7H1=r
zP3Tc%Z7A95ZykqR!+!NTY?HR?DB$z?6*kLWjqDhnHx7|43UBBx7v=CqIdN|3U4+23
zf1q37b3R(4({60**LuL*zws85+H{B}>5yz06pAAwLGFdE9))XF5OaJHI9eWsMG(g?
zh>2$)Zy6q8liMY6L>)u!dmPFmjqc?VUBNiQH#vr9UK8%)k;U!5QaHvx@8(_s;^nEFbmM*^Em!RmR+_-+aTni|am7d$+Fx{ohBdFG{``Vv@Xt!sT{6kr
zJ%~PFs@ioTzg&ohJtJ%#jn-`$MHW}_lVS4xSX2|jyVd9K%&7?2jBSk$-M-K>KI3YA?0?zr=Nihb7D~U*`-XDh%^Id=9^8^S>YLRF>Bu^wIkP#U
zIl3NEMKNbMM<^S1PI(Ts54}!tMp?U^+95vcPWh5M?o4j+Ip-lgcMtip1B|BpshxXc
zIdjv}?|p}S`5pP!Mtt-3pGwXx@h}t?cz@mGYL7b|L1p=bKrF)7KLo!%iuS0%;tLq(
zR)#;$v5fkgjX0X;gT2*o2GjS{-`p~E)o{yp4dW|{9MrPt16%)nKfjp7*E6EuW}ZD<
zS2x$6->==1xqp{$rS^JZ(}Li9JlvG(h{5+Ljnn-_#sBJrPHVqR3bOAmm%K==-f-K>
zrcm`BG0ZEopZLJxOGMq5#BXMafG3wT+vwy#>8O?r#s3S>af7p9+})wh#-!gT(>JXD
znB$j`gM8zi-du4;WG}u+?*TX8b}up`D0E#zg(9q-RN1C9iUc`xe66+PJuK~Bq0I2F
zA^?!=!lTzs!5pTJBo#@FY}}wfeF*=Kw6%Ae=MKp=m?>n1#ju}
zonS?hXVjLz#xU~1LGk)UuqtK7QgQpY5M;C0(o>GUq#1(@mjthAieqAGhv|TV*?*SV
zU5BYH8l$ytK9~JM_`#(sn5NDx9u#6l06}VIL3ZrfqII+&Z
zkuRQ8+@_kjqA*9djuG17=^rFZ=8AA0C&sR=P2!Qa^iA7ZH$??TX+i32>=XsghYw!q
z0Yok_~(1`P0wEh;Le
zE*GO}2Oe@x-tmn3@lW0HB?lY>ob8H6ee6RIf*vTT9x@H<=o=mYk7=Y}SJ7m6eB&(7
zq$5sdQC0fZ{VC1Au#I}b_Ck>kE*Qiw%
z0@vF?z3+JFk86}i|I(O4Ak!t;WP0bla_p1r{We{OsUGDE_Le<^zi|QkzpO2=_{ZnK
zS5G7yMHjv@Nyan%xg~bbfVzO1aZJJY#8cCF*Qb-ZKa=#|FMfE?a#fLJOwfgBm2o!9
z-Rl0lL}cab!A{^>j1;4a132B1;9mFlDzHAxm}7lfi<6lS7MK>4*l>IRGT}U&p8{oO
zR_duk&Qf`lMeYiFm+}CkEkb+zOYaB2&}Im~ynk2;$3G(d3_z9Snf&YFwG;0``iv~H
zj3ayH-g4c6nlcw0tPMQe3fEPDbH`!>Qr{rX*5h`gCOY>CUMKkv@Q9#zK
zRyKT9x|Vb(r9i)A86gdnxQSl1%Jn@W0ZF0vRj~Uik2bcPBRp
zYnZ&xP{pIiKbNSN^!iMeD63twWa?id?CHxgF2>kdDEeEPg>@#Lmt6jxwBxEXn>1yE_kwbK4$R`%<%A_5Z~j}^HYd37Q7NiA93e0n3OM|?
z-=*ak4lUX9eS&2E1bfeCd6H43b=4zf$x8U|9`uLf&6X{#uPQXyv&Jgh+_?||s`5eE
zV>xjQ`AX@F!C@DzSX3-fR
z2w5}AdT@sFwnUIE5=S36e#xy&kS)r6JhQm>&i3(L%A*FY^NL|}IEUk=D|zakp{>QJ
z?91JwPKR2&i?=hAuIgki6#cl0y&~Q=WXP*PVJG>Az1++G?zs}>$&B+|I`=(2?lo8L
zxp^(dCM45dM`o)Znor46dTuCmP&i9hhly<%P_wf?A4hb6zAU@6I(q6^&@&!KT5MCX
zycC$JYIQs>0fxqtCFz=X;S?i#lzlfkyP{~H76Y1sFRP2U`CC6qMv0pVEMDxVrd5MR
zY}Py0t7fvkbb1mtBO>zDBJ<+*hsfk<;xNCIsYTzm&^|w7jfjIkV3F@er
z`oDLxYcB%&+u^Y;fO-F>!TNbsdR{js8D|@pl4iI}d;I%CGv-_LMim)e)jf$Jfw
z9Ic&sdzCou-*vZl26inRdRbkvua@X34!sE-YK@PU4z*QNQ`g#q2ryt(53ElpTOdMUQElq-yPjBl}r`0whoreTOh?8m4=wR#VYAZ=*48)>I
zMkPW-b)y)B0L{ln^q>~K8G4S5U5QOS?|==HUJ6K7V4I8&x&Z1mr1t%09{8%m%6pn_
zs2%sr3O8Ri8!d>O{+ytu$4-}`@2wi1e%ohorKt`5S$sVZz>yV*BbnQUH%Rkr`N!77
zJt61FkX7o`k%;=52vXDXn(%h9erBTv*?o1ehz)Bc>AQT~tdr#bd*~|QDXm`@bMNZrifY)rCfWuPHA~l%eyijCHlHa&UnN~=(@%-yf+K$
z^&x<64O>TO=R|A%09+7`X*Jp|Fa7iH3v7bh%|V#)b{7y*?{_QmMce$kVedO)PL_qb
zUs=z>rZxWPtdNWH%WXEE;>+ib2Nlxg{_-`TH)`)?ur6;2c-ca>+oY1i={p@O$WTl#N(gw&pX(9cV2MCX~O;ZNr#brm_?1U
z$LbzWz5fc`tg}9jhaDLX_YMpFUkKB9T25=C?Fo}WsD8IXBj?~9XM)FkI{b)(~{GH
zfB#NK?_n~^g1v-4BF(dSqx{#jdGBj6w_{g(I_M?SDIVl4q6jDGrHNO+qTs3$`%!YTkiRTYw2HSw`fLEqR33Pm(qt
z%d)u4x&*C9p=(Z(rYAw!;X^PlcU6b{qm}+~>($l{0Q@5zsZ8s58+AG09>6XIJ!GZgNUdr2|A)EFfDEexjAfL?1
zkNdGlF%=+G_=A|n>&7gNzvf?}|MVS$1k(&Yqeb>d0E8A>h1GQ*Ri!bDtcq2v=w?d&
z{nSbbH-YeXWQ>Ba$m%CTjYn4To;qv2cS0fG;G)uWANxLoh2G?
zk{_~pa&zh+x0kl!5ycdjQYa726c|Oyp-!}-;DB$qE+%VQJ>W;m~
zHVwUbfdOu4{c*@AmC8si8DDtD`iFPHMbN9Tt~=M;|1?-95Z9S_W1^$SSjdjQX(Bv4y>FCo
zrLywafobtv6vcH+Wcu;qhh+{*i`#NQ@Q8WUs~=qrrL@|Axr0c}Bg-{ph}Rd0i+`-q^LyzdkRdRsNXNPWXRv*
zO1yf^@KUYCQt`p&kZ0bzm(A3d37~!Xz)r!N*HYOjCDI$-!rp`dfxNyMV73FXofxCx
z7q8Vt_E|V@i%hG?`Zxaao_B+d_9oYqEYNjUvH1egA4(x~I{_bnhtogm?Ez$QOek;W
zOf!wunuYhn=a|N>zzll*(_NK7tjlQ(nYuDl#%N-Lh?G{t1LZ9_^OVyu}9UJ^r1|A`Tg?QR9$d^@Xr<%jEiyjD3YtB03hQ6_hMv_Pm5mC~e3CXDgc=yav7ar81+riLqk4knlRH-uvG@f`5=K8kqEKAp0QY4HMenuXyZ72$
zKfQW&KRc?(6$IGj^|BVG?>!v2?O8atgaUuk5^+ZXhY^=3z(=>G+n6T*i|?PNdI0dP
zo3Y!8^EuKxDTlq&I#t=$>*_*9T#h6x$HAJ4T$R)29d(hFB3f
zuRFIFpd_5-+({g%GaSyH4G$3*Q`F%zLE^5GbYC@8g|`!0?a
zF=Nldhf(u0zh8->ZejYn)Klpmiu_Lb&
zLEk$xZJ0BnqKl=KMZ|ri-bv1`&MWu=C@4^mLj%^FDx$wn@}J2t;k2Q;4GdM9CRZmf&z~SfMwtxqt7c|+1z6P>`+*S
zKTb)9fErD*iA-wE7SJ|XpM2v62ed-+3^+5EA8OwaGv>H1GNWc(t=u%Z9{3AQ+$@Wb
zIc{U%tgK`zR#|@)cyq<==(z5T*uO8Ca3c3kxxH1ilF>+KJ@u5smAisDy_3d{cQ
zTU%gl+XWQqRUkW~bWRMrB^Q0;I`Vj{j8+^6)EwYwv(4b%DMd-~Fa5o*U^y^&N?8H<
z6Ffgvxc3aAaApEsfQ1Hq;xA$C$Ec{}n@4#|~E!+A7W7avIY
z2>>p2-DU&%j8I-Q9HH2o@I;^!R#kf9k^fM0J9yjJkk(Ym3oO%F7J=$lIDNJCi`NaAtM89FG$rlAmLBsJCPJ^SB?NtXT0i
z?9F2ae=BA;-QK@?WWnmM9yi#ex9t*@Oy(>XzV`167bWY|^VjXeB}P4U9qr9twg-Tk
zW-4xOZfxF{pY_n1C%gn`;nH35{!IT1Vw!1zSrGn!;xN%t5$+v67qDwO2@C^aMV7wV
z7?^Du{{Kdn*5B0N!oaeYAQGBki~Zc!AJ|PWs_V<3KJDSuwm{ZlPa?Jw+_sCP?0m{i
zg#gqL>pK9{5F>8V25Ptgbx@Qcs{4J+=J?DGlp7=UgOUijKx+oZ8iXIn0Z@934N!Uv
zUbpn@^wEpyPyHI`4GSM)*YQ=eB{O33kF-(JAeg7EOac0JNdZY6U=7S{2#;AO7PGb1uD+mxIYt?t1Mm@T)w0+9=ybj5
znW|h_55-}p3AaUtSu=AqcC>V~np%QYjU4N@Kff-6aE6dWwu%?(CT=Rs%xk6xpM?c@
zxEC2f7-8MWTU^D@pi21|cFPF?P*}Z>Nrv;|yM6wvoip
zjTxM58WV@#nopE(OaHnQqn-qm>0%TybyDYzbSzWodfQvp1k9(?o!06Axt~5RRHn8^
zqp#K+?&L+HVW87<9pP!)gaiRWK>YjwuMfWtwb|Z=jfL+2|H+c#U>Sz~7fL#&12f3s
zkeM5Vq=saS&vY&^37KwQm*S!~k-N?PF7yPeF_7X4-b%Ce|A`_^UTur}k5Py{$x3o{
zfnoJwX4SX@p_hZ{%LX9VgCi{55`e=w`KcSs^c_xfk9`}?nhm^IaY@fU+-;~2^D0C-cq!ENAdr}MlF2ac|G;1
zTI}7bd^ptjaH#R)QsGA@!i^6H>+kk7ULF27!)p`a7_ng@ruJ+eVT`;GJe5l@L&%(i
zooV)|Hm_>&W$Chaa&cWP0sZ`yS}8nr;~VTtlme}H*=~JPd*FnIXPkCJ-&>m>$8$7y
zke*QE&c1PT<#reX1*LVwc*sDTIOZ_7L)j9@Q|BkH%wRvgH~B)5z-*#PTDoohg3Mbv
z@DO(I@R);oZVHidam*4gv1<+^{?72p!to{fXgu?5Bl0?jczW&~Y|(RHWI#YIAxOIz
zZ|A{E@r)KX%S|2omXWvsU-`5OSjfw&ow5x;N291T#pGj
zJ8L;jmpui4n!gE+^SdJp^ge@2S38rT9m|MlmEebgJs9Y;`oPk
za=LFLw3LB_NiH8mJ~d-95f$o9xy%1}Q3_)mQ74$iIhAqml;6o5u6gaYcKLv)^HkNXJD(~s3KFyB9ETzR&
zy!F{WawRw+NfR{{?Ue#G69dz-{m@LXJT%p%+w`
zp!|MyoZhVM&>i7OAC;}HK}3QThmXW>N{C>wQEvho@g}ygjX4oTrKnwU*~QJB8jVuh
zm*NMC3VirH~q|DHR~kjtu+dr8xJwX#M4)9LTSM&8*$ZgXcR@uI=!k+jfZ!nr8gLxlK~h+p^dkw{|FociB6pt8&=I|L
z99+{Nxw&^lhTe)Z|HJtF>GAX2i&(E;1Ke~SM;XDRDpa-sVFw8&L3Po7EiDPwq``|P
z}jlaxJ5MQUV#q7(LIvpE~U$We$r+t7N##)K%r65)~13n
z-6UdinM;(<4f3H0l_}HQDFt>Iag`yW?Zl($h_F~;=w_NgaRIZ|Frwl?wY%@rvd4C4
z&bO2iF1CWAf|u&y1LkkVrHm_vOrPByGP=naA8XZ}ckG{*1U=`WQua1mbC!V&?8A%m
zDSXUKZ{mZ8O!+a-b3hXS^A3sBR82yBKaydtYF&SXJ$Q;ZrjOJ(&e2d}+dUuP$%Hm^
z#hWjfXd^7}>d_p0Qmj~LHaM5+Gk0y$W4I#E@#-U@brGnbF?D|tWynA$3_2}2*Ak)eT9IeY34%2Y8R#QuE;174z$pl`@;PFQ}!t&~SFI{m*s4oM-w8KlE$
zh%x!RP@nZ+nK459A%^2Yw(3(kh7ye;6^LnAeH_o137e7OKH%d+K>Vcfn4D0mFCRdhqfzSsqUIb%yr
zF!t`q_X{?we^f;UP0^xeYSWHwNeLaP0W-BCCAO!=Owk5S<)g%e?~!Bvup}adS4@>A
zE49N+akd8Yn>gZ)0?kv5u}Dzef&fbZ&CJj#)nO^RoLe`RcmZOq?)N|rGOe9|s9ZO%xfb;IRalnFN%*TSr2H-|
zw=42)S}So(fuV4!sW5uuV1~?)Hc!VT_G%VIxks4EV$r^gF81_=@v2k-p=MfoI_>4C
zy$8l$si*p2?2p%{)=H6Qy6xE|{|p6uRjxa$8a@dA80!Kn?FN2qNPR%1`K
z9l@R4?mWo}SlUB*)NXnFFy-kKn|o7>`fD&K$3ARh;Sk=-HaFD-HQfJ(n7{+9+P7
zar|;UV9evq*!7~GEA4siKd(<3xZYK9%W?mi1Dr2-q=7rRhXXiU1vgu*dN`a2ck|Pn
z>Dyp3Fw}O*?heVDDWi4!cjy$^y1^HwBVWHMIGRd>Fp
z127@#a2@veTQc%)izddd+fc4C8iDU`LleYOMTkT3h1)YNmh74|oDGG%n22N~DPn%g
z?sNJ|e~MWk%}#SV0?X$sl#ugS;h&?|Y;}s2w`!-qNGzWmB>i6Z*;GW9c5m9RC#$xF
zdE@Z-#9*Cue=O>{6=>3mfKD}}Z_w~-x9IZw0LA^n_x{pZ&5kuWIsh+NO2ZcJzNU$m
zz5ncwNqgIa6Q3KxE9_v*pptN!BvSBZpDfc$bdk31RUbu;73YR$i-8Q{@nzr>Ib}aE
z;8HST(V;u&K7d>bNUgT38ecHlZl$%&x$Gn5Zo0V9JDYV$<~$IYEE_8FcgjOi1B(Uq
zg77lqYur+VH9{
z1eg4I_?{`h0FqOV@MnY&B`)8O!{itwCw>wnXRmw|UqdG?Rzo#|Q>)@$<$+;<%`VNW
zCU)T1cS}y5!bk?^l^D^Kt_jh!u&}Ypf+{kpQVbct++V2zG?gad7epw|mgKaCZ)
z4-#=2c!?%BYHY8h_T(qf+T#;usd5JI^Z5GYVxc6rOW~5frL#n@?J*YX7B9H`+5Mx8
zjZ!4r?zMe;CKH%q=B4zzZ{+kK!=0>*=Z&Pj9txZG14R_R$+Kg$07C>gluml$r0vg|
zEeGs*Y4)r@(hp&;arh8CLHhGB&DIH^UCa!e5sMlfwo9Y@bPh`w2n&c$x;Gzv3$y-n
zR#)#uH_Iq9&6DHB_75Z7UG*BxmMvF&L1~o2T>OdDU>8D7*lrT`9;fJb
z*Fd_D8a7&>wK?oSI3L}GpTaAx62SgxEi);00_e9p&aUp;O}dKH3=dk&btU~%5MYIg
z(5n~$y^ySdD-Y02us0B+FeGPYgUDj^C&cA@2RuLL%f+T?2tX)(hJs3655yM1?bM%K
zPU2OAoKbS^y*izmPQ|wGigR;3VV%{3poMQt^OLNj37KaGbjxJU@PD#e3CgN3u*w7*
zAc0*9Jtv1u7@WvD);iib`fj)Wc7;0*v1=n`X7PgzaA}x^Z6$nHuybs*VfPiP)fR=O;Da
zR=N{=Pib~TD;ua(no>Ywx)n<`}`K{mj
zPcn;?5J?v)qVJa)lWZ)Id$uh-MLP@Uz^vNOXG2*;)wQ%$P!dXmu>9_{$M>G|;+Ik6
zZl>V@;*!$6zid@=n&Clt12i|y>djO`#B{~KaBVLpEQecu>SKe&Ya?QX&TnmKIXbiU
zl5jWKvb)pvk_oN+dtuxM5#`ZaDdoC1!-Fl2uBJT@MG-c#2#LvaKJWHEZj)dsn~?{AXZcWrcM<
z#q|?y$~kOzx=1m?UlZ0s!bJfXVbP|>?oECBW|<_>z}MK8lRT^Q4?;P}cilwcD*Vxk
z>GSW&^*+M1GGZ?utegN#R0u7W>|Bif!S>jX=Eu-3f`#Q3|_m*ToeF!Ty2&lj4;rXxm>_QZs`q20m85-w{h)*+-hOz
zgIp{G28$#4xd;)KXE`URd2VBUeNk38uu876zwCn8F1Yhh&iP<4Kbk{@U6|vu&b9WbX
zVFaW%gee#NEZ59g-!!1B^Lajpm-t_+Y}L#>4s+3(xy>ByZ=;ZTi`rujV}N-xkm>U}
zvL?>yz`si3sL%^>t3^>goU@j0g19euWTP&|DcV_>)NZ`dK$|2nOvf+)h7#E=gph&-
zBq3S+ioH+f>&8BalftYkll%PAuG|jKebUqymaZ;IR`vO&ZUitySimVv0pvy@^(qkF
z6}$1n`X^1-aK&7ud*!O>qP{@%YYeh{7AhEa7-;MJrl{yNgw;TLEZ}klO(8{X!f?b@X{Di=kHz
zUC&z4*Y|T98^sR_655VY5)>_fxW6cS@Dv2NCExURDd&Ma@>oI|uZxq22elaCA!)E)
zlr=`FO5z$ctVc|rNI^}bSrX)*)SFe*%bG?ZzrZ=+px)$2
zKac}?+rtAd&Zdh(Wf^|Sxu6+97Z=jwgXqtL*yo`_rWjhk$d=Av>~db>0Si7MLxrF~
zzHZRynkVc!&|BB5QuBfV>)xhl9q>BgvP(1vgy3q}r#Yk$9L5)6dCbXq0^@z#GVm=w
zm&lzM4D*p(-#`FN9j0G%ZNsCL+u}_(jKDu!UzcUwEXF0~4_0!bC+oW)!HCtizU!8C
zv5rA6aHX4~Y4*69D$DS!?GKgy8{d=5J;NKUk!IEytNe&?H6l9DI
z(vk#%vdz_k1X3?GWwv@ejq
zQ-}EiRbmuB&)XqX0v0GG$_3GhMp0D_brCbf7zW^TNn*J%5{1+`gPuUY;ra&jHc^#T`$#>0RWNFfa6qOvT}dZ!ndf7uF9?}Yeqf&>vM
z53@N<2@+OWg1bDtV0t?s74Q{Sj_dm*A$*uw1wRDe2EJ8J7k?O7T-=o2K))&`+VsMb
zAj#+g&IVqARw$6V#8Rc?TCy7qE-Xu0R(xR+T&nOPKC)0X%{(~_f_@<^50$D_VY--E
zSgBj$=-BAO%4SW!1yZ-Drd663Mu-#Ovn@B=vA7uzgHB2_8kRWK
zq7|6Sc-oL;#HZ%P;ZN{Z$(n9tVRa+6M^duflIOYvQ8$mATQu2%<(3zu<{|ViUtJZN
z$Ix%t&`7ZUrHQUe8}BjnUvtXt*874pLCEG#b&KFKjA3#bM97APySu<+3bKu073iC^
z4v2G=^87U9kXqQAY^mvuEE8u3_#e(NycHh1!?#WJ{Yh>#D)M^
zF%VyIqd>~RhP^ENQzX}3x_C+UpeX42)s2Rn7m$WqtLsY?!=Ntr@K8%_-71Q50Wzv#
zp+7A0!qN~#daY+zq(8xOw5&_j>w?f40LA=J_=v9qq5PmOIqP)EVk?d{Q?J;PvoBb?
z1u;vdOFLp~X`*CCjsc!QjGFT!4DU3Y1ZvsAdSFFTKPCce5
zA6wYi#M7^G#vCev=pfc!3)dF(Wg*UvmtgL9>bPGhCNl^kg}K(AFC_PcYwyVj+ZPQ0
zKF8NB(FCEd5>5oNAQz8kRTsq^j6nfodlHTt2mx*weUgojfK+C}d?D8P3ozvwy0>2>
zD>wjpbJmUy=LxF1qCX9kga)_NC}Dot#*Mlo+0CYBIYp4xgRQM4(eR#*gc3V=;J;BT(X0Ej^}5)afnr_VpbWutcc8xo@^l&$?AleG
zz>}PRGW5)%F}iG_@hA{hpmN8g(89=>RHVedOo07+PO~D&^!
z_w+*H10hJ1e4&~cD*0uxot$1M3W^Mtik2u31{0}`za#gpOMas)7zY3rGUD(;aqA1K
z8w)bwzC0Q@SPDv_%&m{PNI168#4{6HQc*ckYT7%YBtY{Z|gnloa>Pu1<
zM=&6@86=kt?Jjm3!QX&ItKP6=LG>~{cQTyU>!y9ZAnaZTBn^w*l!IsW#MBD?q+yfaVvLt{
zxxqG)&lSRDr$CeWi(9gq9!y}Kge1gVgd`^n^l+hm96aWgGLT$u_m%a6N#3-^^it{!
zJ&I-^4Y;fmJU3Q95H>YHZLdM~OF$?uw5lN+O(Luz$KkjP^CV_IHMcyKhu^3iGE^1A
zP&vE{Nl@Fj99JR)JsAdxP*7rkyGN{gfRe#{S?+DZPu+H_vW8o^wT}heNAmdkd{A&n
zay0jor3aO!ywgPwY*Y8BAG)g8IK<2#J^Qi|1JaF~zAlb#j)z`*A$~Ux1{qRA9R+OW
zmU;8#!+_7jQj1t(U|?PdVuSgGdC{;7Lh6|+gGjv@YG}yHdb|vBcOwiHgFL^mK@=}z
zBy<6a<=Ow}BQ2
zHodhd1EFNQA)iMjd_hJw{Qa^lTkiSg^B#exSn@m#wO>@hsuUm7UMd<
zB&OxzvT5t`W%%j5Y1=T&fGa^}ODxhyF?@mOI3^*VUAL-**y;>Zty?#XG}i`9S8^VJ
zfX049UZaHp;R#{UZV+%2b?Jh)j^vltEwX(zf=rU^ZVscrydOxAj_=N26b3V4Jgk;!
zc2}B`3`aayQi@nf4d<7xQH56?np9BSlx7d`yICgyaWAzjYgE|Cfz&N|GN4$%V?0-zOf1)AdGvgMcV)@WSu=N~Vsr#e
zNy*wX^81DqHNbBIwac5TvS
z%jdjos%%9jJkVj~K!lnQ14Q)IJ=uXQD$rx3*OYAkhFnLLcXUTGuJ_jqa=n)>OV#LT
z-Uhh>MxW520R45x6oY0sANs`>NazI-=7Z>HIAQmYaksE5_$*CrQU6@EbUM7YsJ;2%}Xzf
z9%wh$Hzl>3>&4YYS!&Z?+Le=C9`!jnA@oj#`Wn-e7R|DLwRl~O
z{`GaaFoETt(72ZCvJ2FGVtY5nyi39WY_KeB%7*eAxmC^)G7x@E*v>!{vAqFL5hO(^
z4?!oyYgcj&p}c`0mkdHY>LnHZqukHYI+@40!}5a_5UOC^=6WR6C
z7iJt7301Qs?BXWNVcA$}Yh?%!I{kdBA$*Kq?&cGvi=qmU}{ubI1Y(m%mcS#gEdSQs4cdrM4g
z;J5@;8?P{tkW
z(K8dC0+3>}OBx)|s>7mjS+5H<%BkqW)o{*f02!OofF+FaTsd~HtuJsv6#6aDcj+dy
z{+1NZGGVAsGOT_?JnK2x#8M!`452FDpdJUk$07GS)`H~F6_
zC&aBf8z!EDSu}ADl?oh8+H?$|7$1g^O)p2rJSx8oId8hoyuBl3Zjf%E$r`3XIw=J0
zn(|P?6L~x=<5)0}fe2T!%3Itw?$@Prb%nm`+z$}x$wvoSHAkiRe)QIX10`QcO
zyz>}CEVL|=OAQEdy|`8t_=Hoz%dE=g5)7w?PwP?vIY-_QcLI|(aT7T-29{zKUO6Nu
zHc_E^eX_g7p*&+QWT{fN*Sw2r91gNt4((
zo36E`eJnf2@K}4uwpJ`%>j0u2FVPu}QlFHG&RLm`a`81ozV$b;B?``Y46VFbq%5
zkl6*R7odS$q%9&C?BZR89t|+P>e6-DnBhT2;FFPTE7py9m}xx_Bb)v@$U*dK=SB^0
zE)yDINLVx-Lc~VX){9apUUmzHv?9R0CmD%e=*T76Zg_rh*OGEP3~@Ytqnq*B2Wa4V
z;gh-2s_!I*nbCQK3hv7gzVCVK(pU?l-M$eX0|ZgExWgJR~7z!|r48J)xeL4<*2(pK+0MIWrGl3qk=D;(XklK`
zVb?M)y*{fevhXO25DK437Etlxj3f;7E0Wexz@Fuk;S`1iO~>-Zx|3&Z#!Do6=h6JN
z4^|gf7gqTC5vFuVvEGc*#d3;Y*kef7cZP
z_h4QSY$#vIEeM-iJP~P#P3#GX+we^^q?g;)kYrD`vu7HxER9WwxIJnH^w(|J=3-qb-zXxI}>@&Z7hJGMGipY#p;bkYAiN^A!x*6==&0T2rHI}y#j{#
zeqQ&4%y%LRX=S(=Toa46$X{3dPF*Jm`7u_?Lu?`cM|qlJ>_;i~NQ&_&1X$#()JS;b
zp8Ry#`$X~)&-dg|@cd@ADyM7+2<98^9@&2@Y=HzQcZMM20j3XVtgxZkQ^*?Fq9#O>j
zcu|FD#4X02rTiM6xe$aQWSec(Y{6X3XT9C2~rp+$_^eT+{jM%gZtj=0!u8qnyg)kvh}J
z1-9Icg=<+#|_
z9e0`Dn?6zAFXKs4;0tp9D-U6=JZxXyx64BFHeBAPJFl7ie&8UCs&gZGtRL59gF`ndO>Cj>4wPw*)PQ
z7U$RVV!z9{EH*p_jmx48<1$%-4jX!j$dhA+ZrpHpOev@i#f;_+y<+)7X`D8sxnX88
zw_04~eSa+S;q~kivW;53k~p)PG4y)w+NuOyC+C_ni+bIc1}m_PaAZOU7ZIY$xlL&_
zXy~8lq|!R6mlqUf$u{pq6w-hhK%7M$l&8z5aGcMw3pIu6;3SIw2t?hY8^z>h?3S`X
z3^1iucO3KPV~>!G8&MFs!hV7TiN#0=t0|8lqu;Q?#e*(25n-q+RBNMH-m<1Q(7F^prxqjsCal=yV2Dz=H(cr`?Hy9&lcp7~1qkwDZJi5dnq$P*7?Kwt`W#Pnhq;F)@TvG`$eUhE=ccu{POhOj|E
zCwk8ifjx`ZFo$Hjg%(-SfoUO14q?wABO@T<9zy0iR+)THo_zw5qfTTk@D`g5xnn#eI{^h+xK>A6x$><2qFKg$@JJORA=87ZV~ZTu0!`oqAH}@8VroQhliZ2{0E}qu
zOaK^o0WY6s7Xk4#GkS0!w#LmE5F^j^qi_A%bwNd}uW6X#%H*jiL@{n3L-1R=SCtl^
zn2y-1rx%x&wj}x$)GRJY&S+K*VQD$ExU^E>ym}No(Pd2%LwXZ9kQa~g8e8GkyJ(rE
zHFD`T;1Vt`#8eA{c4&@c-IVmgu=nM23y`IGv$!D+iyLTU=0^5?0S)wA5Gz5#73+y8
zknXHux@t3AoYchmdQ9i;y7a8pI5P&u^S@#wEpZe^7R?6Cu7qWo4d_vFMu+%Sr$T!G
zo$$x-wi`5gmjD(`U;-b=vs?fmsBKEsC$tmfsP71QWCCB}@vIVEctO)gVM13q%2Nro
zd6cAq{WCNGp1rnUHsh(~^)jPj>MgxAFDvSo$)pF
ze9L3H%6ZvoV&|I-GjQeFW&{reno?~I{cd*)ZGQ{&t_H)rY58FzTDwvxgzkNlh@z2C
zUX8>8)}>jSQJLS@>r%dujXGphEMdtuVpLq)(xp|;;xgf;nZ=bQybhc9`Op`;U}@N>
z;-xhbcC{gd-_gaZ#o3r72LX~_S$cR$6zNN=;a0VT1#1tFdW4*6#BLkMH*KgU0{w#R
zFIvL(E3>$|cr~{u8qhK<-2S7R#*>hwj)&xcF;;oL=~&?6#~Xs^7K~E2uq>?j7OhGJ
z&(H|sfM44FWY8<$eu;c?vH|ZBz1b*CaDA&F6I882Z9k}qLu!U4?)V18L;e&U@#D;Z
z2Yw)g5+IHvcdZsJ4}`p>NSP%DXc!niq9?X%Aq)_+&7cvJk)}Y};Wr$Sop%T=5u?jt
zJg=6!o|k0v@nYI0shJ;X(uH)fh#|4cjz@>yU@l$Zef&%qg!)H3{9#5KA|8hjJTov?
z^ak<^df!Hfk9>0opZhX(e;?1Kn36KSRbO_!bz-DG3W2LA!v_TMomu)+%1Haga)87&YEm$c`h6&8lY-J
zGLdNv3iaB0IlM1Mc2fwKv$+)nuDA+f(6Dx8IQk!f0r5SbERhD3&Dhb&yGgeM?i4<`S>ln+CWVOZ?7mT?2kl1yX86b7n8
z5F{TeS@agIx-p?n)P{CbhHNGPb`%41`T
z#iG#J4;pft)9|{M?Ts7TXWOI+yx58S9ay3dZ@R3u*BgP)co;OANrx!n56Fcz6e%Xi_hZ%Se
zM-J9cvVUWUn9atRx40<8kSHXOa|!qhx+8C*02wB?C3(@l6YeL=n(RALXOw~58*ZJz
zhQ+u%Q3d|O0*Qz};X)g*V!ndOrFDfW!a=<3QVV(>%(LP-W*7vx{DuZDh4
zM!FzEh$HvoOJ#S-fr&^8(-~9}NZUv7(ftwhQu7Az2SVLByp+GTb?qZkmquAufZ!0o
z1W}hXEK7UjQCJmTLD@j8CzlrUAf(HsJEXuZuRvZpWfE-*#8!3hLsQsc4x6#1!WepO
zvrN`ixN#`X$Bm$m^n_6pWCncWE06%1(Hn|FR4`3BxtOLjqaP5*7DkqqbFtgh%!-t9
zmX;SKsH!{?f%*%vm@}^~Zc5GL@Y2;ny(yT>gWyGix}I)-fTyQpV$Gl_O_G;Zb42fr
zIuNm-Tv}bitF{}mA6YOB%87B%6gSt5;f1R%H8>mR*F*UWvL)a6pKr1
z>*Bh$i6z@b>z2B8OGw%S!oqzRX6JpVk3hO!l7~jky1e@!y;K(rY;Z})K_ftznl5Gk
zv{@JHjuF!dH~7R*TH07As@jogHMYn#g(o8as`3)(SacmN)s32LOl^s0>`q101uo6k
zBEC!8r~K|gG|M$Hg%D|jmv@`Rq*Ft5~QyEMcx(7Ca;}?
z6su?}Be`$Gl7~Gq5WOz$*+6jAA`a6wYNB_5uRy>Ss5Tp?vbP
z;gbWfV@sbjtu1;*&Y&r_z{i#fi=~+T=?GpRG7FqWkRAPXqBX#fbr4}??*V{98ZbT2
zm1pgj3Po|K-1MdK;TW1H#jYjInDijk$WpPqOLwGADZZp(B`?Gc(~qt1#(~^=xX>-j
z*&3%L!q=9HTY|ZqSz`Cna7ML)Dn&XySSd)w0~3~HE-dRan+0I_r#
zK`&8g4kP1Q-I7cd4N}pfOfDWWOCO+-sweykZ;K#1LxjXkx5eqm85
z5WTsnJB#x0ym_-Bt`r&v51t(*m+ww2VNj3{r8S96_+YwRyG9$CqK%_%O~JMzZ^-pR
zGx(b%o4Y4@%gsjE4zh+omhdQ5EClx#eVHdH=z+Wj$-LQ=%J@Nfy}&U1G^oI|kDK{&
zK|09-3MLsYn5iHieVqVrxB>*hPLl6dSxA;?^Oi97fCza$G-KYX*M%7t_~^di(iZ}`
zh8wP2qGxA^Dx~Q~L(eQR1d9Toqcv*M#5D{I%?D#4G06@>#CWRUa~Q6>LoQ01;$g8X
zai@8x>s58f630J=G2D~4u2jMchj^EYUTls{;TXg-pQ`8}rl7?T3}<_v8Wk<)Dx83m
z%emD8@<)%T*GHFi%UdtY!$ts@OidMC+ABkarKS*n%M~=B>r1N2KjPMTx&gqzlGReDG4)l^
zgj+TZdNEuDH-@Fh@+JQA*-`lI$W8-t126M|ii!70x^C5$N&q<+FtVuIreASAa>2y%
zGJm&)bD>H_%!ZXpcn6a#u0q7L<>f7MyJ)&n6^}_w;O|*>QM=#<7)BUL6hIW%>53&T
zbsbr@OnXsYc|KGjPhpIrb;Nw#6c297E4X
z*Ql8-`U~b(L~WS7F`=3>wD2f@>2YVfCfE4H-rJi<9ei~*9ziBk*Ny4Z~{#c
zfBFP(g$P3=O77l@+(8Kwgctlu9NoP--tsPaEQSclco}@fYwHx=mXx=`>|3~LAT}W}
z1h3GiN3kGV^Co#*YOo^jkzHOFdgS3s-SnkVIHVF%WToC97w>>CJP|ATR9&viDlYU!
zx`9w}t2I}!tMLl1g!fF}6}5n%@bDp_%M=FfnWYasN*jRf2J`}&FaQKlM|LOo6Dh?b
z%OlIpI0vk-`(uQ1V-iCg--=GM3DSju;?B2`=wdectW4z3$6j?~fo7SSCZCAz_FS^f
z@IX=_4p5kKjYobM@nTbq2NB_9ED9ohdpHX5NM)-5t;K3x?p6%}F7j69=*$#hlL!k+
z6JAISOIk{~__5p(b{Pa|78o38>@J#x9E%%X-dv*sRHf0lEDHW4+&v}USjtbt)ILy=
zOoPqA@{mvk@0tttg?4-*+*B^djsp$h3o`@;-giP5E)eobKp%VnAdwBFO{^LrEOyN$
z_wxy3aJlflsEkK9p8#AlJPS|Ov4hKE{XYyp>0yfHB2xht%EE?yXu0^luvHwa$a@DX
zesHBBo&c)^ixP+UQxlb@AqQa-OTfG0#i>KQsDtvi6a3~5!)y=@$pi%N?AOfj79k1F
z371mjL`8Ij2^GLR(Q+6<@4*>?MAyh|_2~B-@>M5(@Kxz>RmX#Pyekh?
zbxW^Fk1afq5T+rin_kJSt%-+ts`x&bLk`~#Rs~HV68SE9VrLXW>hx;ak*e;;?$N5^
zLbNW=pI3>wS*D5-s$h>RdQ;x@lCH{Kzf84cRpg#vwN#(QOZ~Zj1+RsZ*9T>)WwL@8
zsg`e6%koXJ!Kyqdy0W;m7JCgaT{VRMVQ6J>vnd!sHMRkmUNINNy@OR#Xnry)ORG*r
zC^xET6CiH70AF2Rx-(WaotI;m#bC&SULX&X0Du^2L*IhzAfX=({3rdg7;%vkXe&O0lz{0KLBN27iYt$@ZWj+x`m^pkbPb|vAFssZg;53U%uqYU3QRL9l11zYBhh##vHeobl7`f$H4WUp&;9Glc&a3-ds01iV
zIUR@r;lv}QP<#(ZCx)a^06q4K0d-S8FftiFp%b17mzz`2qAuFZagsrr@boh=3(kaL
zy95h)V>@^%WVGOY4HQGP>yTPID5{>rBZR?zL!!B|bPbQ85?*0O4M|W6mE*p=iDC>v
z-K5sJBLIe8#0~up=FLiYAb`~0S8p`I(m?DLDrv+zWG}L}n(mg+gJFf6Jnu9_Mc1sE
zMr`AwYI-G$(8!b5WvxW3{DLHZ!LfF9S-Nl0Lu~-cx8(&y;FG5Y0kAxx1QZDt@(V;o
zfFX;^oAk~*88R;m3>LTO=?F-(Tv(zzu#jX8MLp4vR(JqOg@K=M;yWI68y^puH{^ji
z;1|KxBE_g`?&GsRmb{2+aAkQ(#8%t_zO5$jZOT-uSLAKJ>F)t*Ku9%h6Vzty1
zJMWX#YB{{ItU)%oN5ViUKtUz(9wn2oeW-*Xo@)h=hCH=5QLRRHXjh5J1U~a(5eflI
z*69JrYIR9o#0ymj6`K;Bie=gcL1!7(u=Ft?2vQfZ2*fRmDQyhBZuqi^q)a7TA?UFH
za_d_d&~yxsG@Z0SgxG4x-Q}!Vt$`dQRSw{nw}pZS#wk@IOkF
zIpi*C453Rq1Xiw-LhEGzdSzwZ5ho{saCO($1%gKh8BzRJY)s~#IiDs#)YIK%WsIS#n2;V*(&bgz+^;lZHUY70h@*`^(LX$
z4LGNpWZt+zQxurHD9o|H$h;&K}q63Ul)
z;P>a7j?h#?O+RVkQF%FWgdx&e`9!r^0EXb!0{0JIcq-D>p%@Ui0}lDcxQ9zfvr0HK0U6j`H(Rny>=%e1Tc
z4WW1dHe3?cMWfZ)KHj(@&-hoZl1|tWt>a+TlB>JbWv-i=TnS%e2gXn==J@a*U$N?S
zbA6xi^@$Z&=|yMu);<>HuWoG7m+#WR?q%l>&qRn?tQLz4f*Rz0nc=Dx;7*Cm7MQve
zi>)A9^^?>!$rjKHOJA{qT(N?f{maVQy1d~z4YP-2q;`EpuWyPcQpWLMco~=e@?J7X
zQ;$vO!x$p3!kbvJ>+C&SQPBxVQVfrOZV;qnCkP;k3zK{NnJ5VJNz0*6t_txSgiH0!
zP?e?}FYudCaHP7P-&~UhH|c7U-J+!j1B=%?0RhLLg
zZbd%YG*)$O!@^r0Ve+c-sEn;WlS(}Ja)BQ6`6T