From 97f16440280a40a49c4898a75942e374880bfca3 Mon Sep 17 00:00:00 2001 From: Benjamin Auder <benjamin.auder@somewhere> Date: Fri, 9 Sep 2022 17:49:44 +0200 Subject: [PATCH] Update package to send on CRAN --- DESCRIPTION | 9 +- LICENSE | 2 +- NAMESPACE | 3 - R/R6_Model.R | 8 +- R/compareTo.R | 8 +- agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION | 26 ++ agghoo.Rcheck/00_pkg_src/agghoo/LICENSE | 2 + agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE | 13 + .../00_pkg_src/agghoo/R/A_NAMESPACE.R | 7 + .../00_pkg_src/agghoo/R/R6_AgghooCV.R | 115 ++++++++ agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R | 157 +++++++++++ agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R | 58 ++++ agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R | 102 ++++++++ agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R | 247 ++++++++++++++++++ agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R | 30 +++ agghoo.Rcheck/00_pkg_src/agghoo/README.md | 15 ++ agghoo.Rcheck/00_pkg_src/agghoo/TODO | 2 + .../00_pkg_src/agghoo/example/example.R | 43 +++ agghoo.Rcheck/00_pkg_src/agghoo/test/TODO | 1 + agghoo.Rcheck/00check.log | 52 ++++ agghoo.Rcheck/00install.out | 12 + agghoo.Rcheck/Rdlatex.log | 22 ++ agghoo.Rcheck/agghoo-manual.tex | 44 ++++ agghoo.Rcheck/agghoo/DESCRIPTION | 27 ++ agghoo.Rcheck/agghoo/LICENSE | 2 + agghoo.Rcheck/agghoo/Meta/Rd.rds | Bin 0 -> 172 bytes agghoo.Rcheck/agghoo/Meta/features.rds | Bin 0 -> 122 bytes agghoo.Rcheck/agghoo/Meta/hsearch.rds | Bin 0 -> 198 bytes agghoo.Rcheck/agghoo/Meta/links.rds | Bin 0 -> 46 bytes agghoo.Rcheck/agghoo/Meta/nsInfo.rds | Bin 0 -> 292 bytes agghoo.Rcheck/agghoo/Meta/package.rds | Bin 0 -> 1146 bytes agghoo.Rcheck/agghoo/NAMESPACE | 13 + agghoo.Rcheck/agghoo/R/agghoo | 27 ++ agghoo.Rcheck/agghoo/R/agghoo.rdb | Bin 0 -> 90608 bytes agghoo.Rcheck/agghoo/R/agghoo.rdx | Bin 0 -> 584 bytes agghoo.Rcheck/agghoo/help/AnIndex | 0 agghoo.Rcheck/agghoo/help/agghoo.rdb | 0 agghoo.Rcheck/agghoo/help/agghoo.rdx | Bin 0 -> 125 bytes agghoo.Rcheck/agghoo/help/aliases.rds | Bin 0 -> 69 bytes agghoo.Rcheck/agghoo/help/paths.rds | Bin 0 -> 74 bytes agghoo.Rcheck/agghoo/html/00Index.html | 24 ++ agghoo.Rcheck/agghoo/html/R.css | 120 +++++++++ agghoo_0.1-0.tar.gz | Bin 0 -> 9062 bytes man/AgghooCV.Rd | 116 -------- man/CVvoting_core.Rd | 12 - man/CVvoting_run.Rd | 13 - man/Model.Rd | 109 -------- man/agghoo.Rd | 57 ---- man/agghoo_run.Rd | 13 - man/compareMulti.Rd | 39 --- man/compareRange.Rd | 39 --- man/compareTo.Rd | 35 --- man/standardCV_core.Rd | 12 - man/standardCV_run.Rd | 21 -- 54 files changed, 1172 insertions(+), 485 deletions(-) create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/LICENSE create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/README.md create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/TODO create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/example/example.R create mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/test/TODO create mode 100644 agghoo.Rcheck/00check.log create mode 100644 agghoo.Rcheck/00install.out create mode 100644 agghoo.Rcheck/Rdlatex.log create mode 100644 agghoo.Rcheck/agghoo-manual.tex create mode 100644 agghoo.Rcheck/agghoo/DESCRIPTION create mode 100644 agghoo.Rcheck/agghoo/LICENSE create mode 100644 agghoo.Rcheck/agghoo/Meta/Rd.rds create mode 100644 agghoo.Rcheck/agghoo/Meta/features.rds create mode 100644 agghoo.Rcheck/agghoo/Meta/hsearch.rds create mode 100644 agghoo.Rcheck/agghoo/Meta/links.rds create mode 100644 agghoo.Rcheck/agghoo/Meta/nsInfo.rds create mode 100644 agghoo.Rcheck/agghoo/Meta/package.rds create mode 100644 agghoo.Rcheck/agghoo/NAMESPACE create mode 100644 agghoo.Rcheck/agghoo/R/agghoo create mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdb create mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdx create mode 100644 agghoo.Rcheck/agghoo/help/AnIndex create mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdb create mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdx create mode 100644 agghoo.Rcheck/agghoo/help/aliases.rds create mode 100644 agghoo.Rcheck/agghoo/help/paths.rds create mode 100644 agghoo.Rcheck/agghoo/html/00Index.html create mode 100644 agghoo.Rcheck/agghoo/html/R.css create mode 100644 agghoo_0.1-0.tar.gz delete mode 100644 man/AgghooCV.Rd delete mode 100644 man/CVvoting_core.Rd delete mode 100644 man/CVvoting_run.Rd delete mode 100644 man/Model.Rd delete mode 100644 man/agghoo.Rd delete mode 100644 man/agghoo_run.Rd delete mode 100644 man/compareMulti.Rd delete mode 100644 man/compareRange.Rd delete mode 100644 man/compareTo.Rd delete mode 100644 man/standardCV_core.Rd delete mode 100644 man/standardCV_run.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 5e85d59..140abb3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: agghoo -Title: Aggregated Hold-out Cross Validation -Date: 2021-06-05 +Title: Aggregated Hold-Out Cross Validation +Date: 2022-08-30 Version: 0.1-0 Description: The 'agghoo' procedure is an alternative to usual cross-validation. Instead of choosing the best model trained on V subsamples, it determines @@ -17,15 +17,16 @@ Maintainer: Benjamin Auder <benjamin.auder@universite-paris-saclay.fr> Depends: R (>= 3.5.0) Imports: + class, + parallel, R6, rpart, - randomForest, FNN Suggests: roxygen2 URL: https://git.auder.net/?p=agghoo.git License: MIT + file LICENSE -RoxygenNote: 7.1.1 +RoxygenNote: 7.2.1 Collate: 'compareTo.R' 'agghoo.R' diff --git a/LICENSE b/LICENSE index 6e92110..094ff81 100644 --- a/LICENSE +++ b/LICENSE @@ -1,2 +1,2 @@ -YEAR: 2021 +YEAR: 2021-2022 COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/NAMESPACE b/NAMESPACE index 74d8bd5..7bbddef 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,14 +1,11 @@ # Generated by roxygen2: do not edit by hand export(AgghooCV) -export(CVvoting_run) export(Model) export(agghoo) -export(agghoo_run) export(compareMulti) export(compareRange) export(compareTo) -export(standardCV_run) importFrom(FNN,knn.reg) importFrom(R6,R6Class) importFrom(class,knn) diff --git a/R/R6_Model.R b/R/R6_Model.R index 1719666..d48825e 100644 --- a/R/R6_Model.R +++ b/R/R6_Model.R @@ -68,7 +68,7 @@ Model <- R6::R6Class("Model", getGmodel = function(family, task) { if (family == "tree") { function(dataHO, targetHO, param) { - require(rpart) + base::require(rpart) method <- ifelse(task == "classification", "class", "anova") if (is.null(colnames(dataHO))) colnames(dataHO) <- paste0("V", 1:ncol(dataHO)) @@ -98,13 +98,13 @@ Model <- R6::R6Class("Model", else if (family == "knn") { if (task == "classification") { function(dataHO, targetHO, param) { - require(class) + base::require(class) function(X) class::knn(dataHO, X, cl=targetHO, k=param) } } else { function(dataHO, targetHO, param) { - require(FNN) + base::require(FNN) function(X) FNN::knn.reg(dataHO, X, y=targetHO, k=param)$pred } } @@ -114,7 +114,7 @@ Model <- R6::R6Class("Model", getParams = function(family, data, target, task) { if (family == "tree") { # Run rpart once to obtain a CV grid for parameter cp - require(rpart) + base::require(rpart) df <- data.frame(cbind(data, target=target)) ctrl <- list( cp = 0, diff --git a/R/compareTo.R b/R/compareTo.R index 28cb711..fe5b24d 100644 --- a/R/compareTo.R +++ b/R/compareTo.R @@ -78,8 +78,6 @@ CVvoting_core <- function(data, target, task, gmodel, params, loss, CV) { #' Run and eval the standard cross-validation procedure. #' Parameters are rather explicit except "floss", which corresponds to the #' "final" loss function, applied to compute the error on testing dataset. -#' -#' @export standardCV_run <- function( dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... ) { @@ -104,8 +102,6 @@ standardCV_run <- function( #' Run and eval the voting cross-validation procedure. #' Parameters are rather explicit except "floss", which corresponds to the #' "final" loss function, applied to compute the error on testing dataset. -#' -#' @export CVvoting_run <- function( dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... ) { @@ -130,8 +126,6 @@ CVvoting_run <- function( #' Run and eval the agghoo procedure. #' Parameters are rather explicit except "floss", which corresponds to the #' "final" loss function, applied to compute the error on testing dataset. -#' -#' @export agghoo_run <- function( dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... ) { @@ -209,7 +203,7 @@ compareTo <- function( compareMulti <- function( data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... ) { - require(parallel) + base::require(parallel) if (is.na(nc)) nc <- parallel::detectCores() diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION b/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION new file mode 100644 index 0000000..21f9ca3 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION @@ -0,0 +1,26 @@ +Package: agghoo +Title: Aggregated Hold-Out Cross Validation +Date: 2022-08-30 +Version: 0.1-0 +Description: The 'agghoo' procedure is an alternative to usual cross-validation. + Instead of choosing the best model trained on V subsamples, it determines + a winner model for each subsample, and then aggregate the V outputs. + For the details, see "Aggregated hold-out" by Guillaume Maillard, + Sylvain Arlot, Matthieu Lerasle (2021) <arXiv:1909.04890> + published in Journal of Machine Learning Research 22(20):1--55. +Author: Sylvain Arlot <sylvain.arlot@universite-paris-saclay.fr> [cph,ctb], + Benjamin Auder <benjamin.auder@universite-paris-saclay.fr> [aut,cre,cph], + Melina Gallopin <melina.gallopin@universite-paris-saclay.fr> [cph,ctb], + Matthieu Lerasle <matthieu.lerasle@universite-paris-saclay.fr> [cph,ctb], + Guillaume Maillard <guillaume.maillard@uni.lu> [cph,ctb] +Maintainer: Benjamin Auder <benjamin.auder@universite-paris-saclay.fr> +Depends: R (>= 3.5.0) +Imports: class, parallel, R6, rpart, FNN +Suggests: roxygen2 +URL: https://git.auder.net/?p=agghoo.git +License: MIT + file LICENSE +RoxygenNote: 7.2.1 +Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' + 'checks.R' 'utils.R' 'A_NAMESPACE.R' +NeedsCompilation: no +Packaged: 2022-09-09 15:45:56 UTC; auder diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE b/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE new file mode 100644 index 0000000..094ff81 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE @@ -0,0 +1,2 @@ +YEAR: 2021-2022 +COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE b/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE new file mode 100644 index 0000000..7bbddef --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE @@ -0,0 +1,13 @@ +# Generated by roxygen2: do not edit by hand + +export(AgghooCV) +export(Model) +export(agghoo) +export(compareMulti) +export(compareRange) +export(compareTo) +importFrom(FNN,knn.reg) +importFrom(R6,R6Class) +importFrom(class,knn) +importFrom(rpart,rpart) +importFrom(stats,ppr) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R new file mode 100644 index 0000000..0466833 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R @@ -0,0 +1,7 @@ +#' @include utils.R +#' @include checks.R +#' @include R6_Model.R +#' @include R6_AgghooCV.R +#' @include agghoo.R +#' @include compareTo.R +NULL diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R new file mode 100644 index 0000000..328c141 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R @@ -0,0 +1,115 @@ +#' @title R6 class with agghoo functions fit() and predict(). +#' +#' @description +#' Class encapsulating the methods to run to obtain the best predictor +#' from the list of models (see 'Model' class). +#' +#' @importFrom R6 R6Class +#' +#' @export +AgghooCV <- R6::R6Class("AgghooCV", + public = list( + #' @description Create a new AgghooCV object. + #' @param data Matrix or data.frame + #' @param target Vector of targets (generally numeric or factor) + #' @param task "regression" or "classification". + #' Default: classification if target not numeric. + #' @param gmodel Generic model returning a predictive function + #' Default: tree if mixed data, knn/ppr otherwise. + #' @param loss Function assessing the error of a prediction + #' Default: error rate or mean(abs(error)). + initialize = function(data, target, task, gmodel, loss) { + private$data <- data + private$target <- target + private$task <- task + private$gmodel <- gmodel + private$loss <- loss + }, + #' @description Fit an agghoo model. + #' @param CV List describing cross-validation to run. Slots: \cr + #' - type: 'vfold' or 'MC' for Monte-Carlo (default: MC) \cr + #' - V: number of runs (default: 10) \cr + #' - test_size: percentage of data in the test dataset, for MC + #' (irrelevant for V-fold). Default: 0.2. \cr + #' - shuffle: wether or not to shuffle data before V-fold. + #' Irrelevant for Monte-Carlo; default: TRUE \cr + #' Default (if NULL): type="MC", V=10, test_size=0.2 + fit = function(CV = NULL) { + CV <- checkCV(CV) + n <- nrow(private$data) + shuffle_inds <- NULL + if (CV$type == "vfold" && CV$shuffle) + shuffle_inds <- sample(n, n) + # Result: list of V predictive models (+ parameters for info) + private$pmodels <- list() + for (v in seq_len(CV$V)) { + # Prepare train / test data and target, from full dataset. + # dataHO: "data Hold-Out" etc. + test_indices <- get_testIndices(n, CV, v, shuffle_inds) + d <- splitTrainTest(private$data, private$target, test_indices) + best_model <- NULL + best_error <- Inf + for (p in seq_len(private$gmodel$nmodels)) { + model_pred <- private$gmodel$get(d$dataTrain, d$targetTrain, p) + prediction <- model_pred(d$dataTest) + error <- private$loss(prediction, d$targetTest) + if (error <= best_error) { + newModel <- list(model=model_pred, param=private$gmodel$getParam(p)) + if (error == best_error) + best_model[[length(best_model)+1]] <- newModel + else { + best_model <- list(newModel) + best_error <- error + } + } + } + # Choose a model at random in case of ex-aequos + private$pmodels[[v]] <- best_model[[ sample(length(best_model),1) ]] + } + }, + #' @description Predict an agghoo model (after calling fit()) + #' @param X Matrix or data.frame to predict + predict = function(X) { + if (!is.matrix(X) && !is.data.frame(X)) + stop("X: matrix or data.frame") + if (!is.list(private$pmodels)) { + print("Please call $fit() method first") + return (invisible(NULL)) + } + V <- length(private$pmodels) + oneLineX <- X[1,] + if (is.matrix(X)) + # HACK: R behaves differently with data frames and matrices. + oneLineX <- t(as.matrix(oneLineX)) + if (length(private$pmodels[[1]]$model(oneLineX)) >= 2) + # Soft classification: + return (Reduce("+", lapply(private$pmodels, function(m) m$model(X))) / V) + n <- nrow(X) + all_predictions <- as.data.frame(matrix(nrow=n, ncol=V)) + for (v in 1:V) + all_predictions[,v] <- private$pmodels[[v]]$model(X) + if (private$task == "regression") + # Easy case: just average each row + return (rowMeans(all_predictions)) + # "Hard" classification: + apply(all_predictions, 1, function(row) { + t <- table(row) + # Next lines in case of ties (broken at random) + tmax <- max(t) + sample( names(t)[which(t == tmax)], 1 ) + }) + }, + #' @description Return the list of V best parameters (after calling fit()) + getParams = function() { + lapply(private$pmodels, function(m) m$param) + } + ), + private = list( + data = NULL, + target = NULL, + task = NULL, + gmodel = NULL, + loss = NULL, + pmodels = NULL + ) +) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R new file mode 100644 index 0000000..d48825e --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R @@ -0,0 +1,157 @@ +#' @title R6 class representing a (generic) model. +#' +#' @description +#' "Model" class, containing a (generic) learning function, which from +#' data + target [+ params] returns a prediction function X --> y. +#' Parameters for cross-validation are either provided or estimated. +#' Model family can be chosen among "tree", "ppr" and "knn" for now. +#' +#' @importFrom FNN knn.reg +#' @importFrom class knn +#' @importFrom stats ppr +#' @importFrom rpart rpart +#' +#' @export +Model <- R6::R6Class("Model", + public = list( + #' @field nmodels Number of parameters (= number of [predictive] models) + nmodels = NA, + #' @description Create a new generic model. + #' @param data Matrix or data.frame + #' @param target Vector of targets (generally numeric or factor) + #' @param task "regression" or "classification" + #' @param gmodel Generic model returning a predictive function; chosen + #' automatically given data and target nature if not provided. + #' @param params List of parameters for cross-validation (each defining a model) + initialize = function(data, target, task, gmodel = NULL, params = NULL) { + if (is.null(gmodel)) { + # (Generic) model not provided + all_numeric <- is.numeric(as.matrix(data)) + if (!all_numeric) + # At least one non-numeric column: use trees + gmodel = "tree" + else + # Numerical data + gmodel = ifelse(task == "regression", "ppr", "knn") + } + if (is.null(params)) + # Here, gmodel is a string (= its family), + # because a custom model must be given with its parameters. + params <- as.list(private$getParams(gmodel, data, target, task)) + private$params <- params + if (is.character(gmodel)) + gmodel <- private$getGmodel(gmodel, task) + private$gmodel <- gmodel + self$nmodels <- length(private$params) + }, + #' @description + #' Returns the model at index "index", trained on dataHO/targetHO. + #' @param dataHO Matrix or data.frame + #' @param targetHO Vector of targets (generally numeric or factor) + #' @param index Index of the model in 1...nmodels + get = function(dataHO, targetHO, index) { + private$gmodel(dataHO, targetHO, private$params[[index]]) + }, + #' @description + #' Returns the parameter at index "index". + #' @param index Index of the model in 1...nmodels + getParam = function(index) { + private$params[[index]] + } + ), + private = list( + # No need to expose model or parameters list + gmodel = NULL, + params = NULL, + # Main function: given a family, return a generic model, which in turn + # will output a predictive model from data + target + params. + getGmodel = function(family, task) { + if (family == "tree") { + function(dataHO, targetHO, param) { + base::require(rpart) + method <- ifelse(task == "classification", "class", "anova") + if (is.null(colnames(dataHO))) + colnames(dataHO) <- paste0("V", 1:ncol(dataHO)) + df <- data.frame(cbind(dataHO, target=targetHO)) + model <- rpart::rpart(target ~ ., df, method=method, control=list(cp=param)) + if (task == "regression") + type <- "vector" + else { + if (is.null(dim(targetHO))) + type <- "class" + else + type <- "prob" + } + function(X) { + if (is.null(colnames(X))) + colnames(X) <- paste0("V", 1:ncol(X)) + predict(model, as.data.frame(X), type=type) + } + } + } + else if (family == "ppr") { + function(dataHO, targetHO, param) { + model <- stats::ppr(dataHO, targetHO, nterms=param) + function(X) predict(model, X) + } + } + else if (family == "knn") { + if (task == "classification") { + function(dataHO, targetHO, param) { + base::require(class) + function(X) class::knn(dataHO, X, cl=targetHO, k=param) + } + } + else { + function(dataHO, targetHO, param) { + base::require(FNN) + function(X) FNN::knn.reg(dataHO, X, y=targetHO, k=param)$pred + } + } + } + }, + # Return a default list of parameters, given a gmodel family + getParams = function(family, data, target, task) { + if (family == "tree") { + # Run rpart once to obtain a CV grid for parameter cp + base::require(rpart) + df <- data.frame(cbind(data, target=target)) + ctrl <- list( + cp = 0, + minsplit = 2, + minbucket = 1, + xval = 0) + method <- ifelse(task == "classification", "class", "anova") + r <- rpart(target ~ ., df, method=method, control=ctrl) + cps <- r$cptable[-1,1] + if (length(cps) <= 1) + stop("No cross-validation possible: select another model") + if (length(cps) <= 11) + return (cps) + step <- (length(cps) - 1) / 10 + cps[unique(round(seq(1, length(cps), step)))] + } + else if (family == "ppr") + # This is nterms in ppr() function + 1:10 + else if (family == "knn") { + n <- nrow(data) + # Choose ~10 NN values + K <- length(unique(target)) + if (n <= 10) + return (1:(n-1)) + sqrt_n <- sqrt(n) + step <- (2*sqrt_n - 1) / 10 + grid <- unique(round(seq(1, 2*sqrt_n, step))) + if (K == 2) { + # Common binary classification case: odd number of neighbors + for (i in 2:11) { + if (grid[i] %% 2 == 0) + grid[i] <- grid[i] + 1 #arbitrary choice + } + } + grid + } + } + ) +) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R new file mode 100644 index 0000000..48ac741 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R @@ -0,0 +1,58 @@ +#' agghoo +#' +#' Run the (core) agghoo procedure. +#' Arguments specify the list of models, their parameters and the +#' cross-validation settings, among others. +#' +#' @param data Data frame or matrix containing the data in lines. +#' @param target The target values to predict. Generally a vector, +#' but possibly a matrix in the case of "soft classification". +#' @param task "classification" or "regression". Default: +#' regression if target is numerical, classification otherwise. +#' @param gmodel A "generic model", which is a function returning a predict +#' function (taking X as only argument) from the tuple +#' (dataHO, targetHO, param), where 'HO' stands for 'Hold-Out', +#' referring to cross-validation. Cross-validation is run on an array +#' of 'param's. See params argument. Default: see R6::Model. +#' @param params A list of parameters. Often, one list cell is just a +#' numerical value, but in general it could be of any type. +#' Default: see R6::Model. +#' @param loss A function assessing the error of a prediction. +#' Arguments are y1 and y2 (comparing a prediction to known values). +#' loss(y1, y2) --> real number (error). Default: see R6::AgghooCV. +#' +#' @return +#' An R6::AgghooCV object o. Then, call o$fit() and finally o$predict(newData) +#' +#' @examples +#' # Regression: +#' a_reg <- agghoo(iris[,-c(2,5)], iris[,2]) +#' a_reg$fit() +#' pr <- a_reg$predict(iris[,-c(2,5)] + rnorm(450, sd=0.1)) +#' # Classification +#' a_cla <- agghoo(iris[,-5], iris[,5]) +#' a_cla$fit() +#' pc <- a_cla$predict(iris[,-5] + rnorm(600, sd=0.1)) +#' +#' @seealso Function \code{\link{compareTo}} +#' +#' @references +#' Guillaume Maillard, Sylvain Arlot, Matthieu Lerasle. "Aggregated hold-out". +#' Journal of Machine Learning Research 22(20):1--55, 2021. +#' +#' @export +agghoo <- function( + data, target, task = NULL, gmodel = NULL, params = NULL, loss = NULL +) { + # Args check: + checkDaTa(data, target) + task <- checkTask(task, target) + modPar <- checkModPar(gmodel, params) + loss <- checkLoss(loss, task) + + # Build Model object (= list of parameterized models) + model <- Model$new(data, target, task, modPar$gmodel, modPar$params) + + # Return AgghooCV object, to run and predict + AgghooCV$new(data, target, task, model, loss) +} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R new file mode 100644 index 0000000..a19d55f --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R @@ -0,0 +1,102 @@ +# Internal usage: check and fill arguments with default values. + +defaultLoss_classif <- function(y1, y2) { + if (is.null(dim(y1))) + # Standard case: "hard" classification + mean(y1 != y2) + else { + # "Soft" classification: predict() outputs a probability matrix + # In this case "target" could be in matrix form. + if (!is.null(dim(y2))) + mean(rowSums(abs(y1 - y2))) + else { + # Or not: y2 is a "factor". + y2 <- as.character(y2) + # NOTE: the user should provide target in matrix form because + # matching y2 with columns is rather inefficient! + names <- colnames(y1) + positions <- list() + for (idx in seq_along(names)) + positions[[ names[idx] ]] <- idx + mean(vapply( + seq_along(y2), + function(idx) sum(abs(y1[idx,] - positions[[ y2[idx] ]])), + 0)) + } + } +} + +defaultLoss_regress <- function(y1, y2) { + mean(abs(y1 - y2)) +} + +# TODO: allow strings like "MSE", "abs" etc +checkLoss <- function(loss, task) { + if (!is.null(loss) && !is.function(loss)) + stop("loss: function(y1, y2) --> Real") + if (is.null(loss)) { + loss <- if (task == "classification") { + defaultLoss_classif + } else { + defaultLoss_regress + } + } + loss +} + +checkCV <- function(CV) { + if (is.null(CV)) + CV <- list(type="MC", V=10, test_size=0.2, shuffle=TRUE) + else { + if (!is.list(CV)) + stop("CV: list of type('MC'|'vfold'), V(integer, [test_size, shuffle]") + if (is.null(CV$type)) { + warning("CV$type not provided: set to MC") + CV$type <- "MC" + } + if (is.null(CV$V)) { + warning("CV$V not provided: set to 10") + CV$V <- 10 + } + if (CV$type == "MC" && is.null(CV$test_size)) + CV$test_size <- 0.2 + if (CV$type == "vfold" && is.null(CV$shuffle)) + CV$shuffle <- TRUE + } + CV +} + +checkDaTa <- function(data, target) { + if (!is.data.frame(data) && !is.matrix(data)) + stop("data: data.frame or matrix") + if (is.data.frame(target) || is.matrix(target)) { + if (!is.numeric(target)) + stop("multi-columns target must be a probability matrix") + if (nrow(target) != nrow(data) || ncol(target) == 1) + stop("target probability matrix does not match data size") + } + else if (!is.numeric(target) && !is.factor(target) && !is.character(target)) + stop("target: numeric, factor or character vector") +} + +checkTask <- function(task, target) { + if (!is.null(task)) + task <- match.arg(task, c("classification", "regression")) + ifelse(is.numeric(target), "regression", "classification") +} + +checkModPar <- function(gmodel, params) { + if (is.character(gmodel)) + gmodel <- match.arg(gmodel, c("knn", "ppr", "rf", "tree")) + else if (!is.null(gmodel) && !is.function(gmodel)) + stop("gmodel: function(dataHO, targetHO, param) --> function(X) --> y") + if (is.numeric(params) || is.character(params)) + params <- as.list(params) + if (!is.list(params) && !is.null(params)) + stop("params: numerical, character, or list (passed to model)") + if (is.function(gmodel) && !is.list(params)) + stop("params must be provided when using a custom model") + if (is.list(params) && is.null(gmodel)) + stop("model (or family) must be provided when using custom params") + list(gmodel=gmodel, params=params) +} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R new file mode 100644 index 0000000..fe5b24d --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R @@ -0,0 +1,247 @@ +#' standardCV_core +#' +#' Cross-validation method, added here as an example. +#' Parameters are described in ?agghoo and ?AgghooCV +standardCV_core <- function(data, target, task, gmodel, params, loss, CV) { + n <- nrow(data) + shuffle_inds <- NULL + if (CV$type == "vfold" && CV$shuffle) + shuffle_inds <- sample(n, n) + list_testinds <- list() + for (v in seq_len(CV$V)) + list_testinds[[v]] <- get_testIndices(n, CV, v, shuffle_inds) + gmodel <- agghoo::Model$new(data, target, task, gmodel, params) + best_error <- Inf + best_p <- NULL + for (p in seq_len(gmodel$nmodels)) { + error <- Reduce('+', lapply(seq_len(CV$V), function(v) { + testIdx <- list_testinds[[v]] + d <- splitTrainTest(data, target, testIdx) + model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) + prediction <- model_pred(d$dataTest) + loss(prediction, d$targetTest) + }) ) + if (error <= best_error) { + if (error == best_error) + best_p[[length(best_p)+1]] <- p + else { + best_p <- list(p) + best_error <- error + } + } + } + chosenP <- best_p[[ sample(length(best_p), 1) ]] + list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) +} + +#' CVvoting_core +#' +#' "voting" cross-validation method, added here as an example. +#' Parameters are described in ?agghoo and ?AgghooCV +CVvoting_core <- function(data, target, task, gmodel, params, loss, CV) { + CV <- checkCV(CV) + n <- nrow(data) + shuffle_inds <- NULL + if (CV$type == "vfold" && CV$shuffle) + shuffle_inds <- sample(n, n) + gmodel <- agghoo::Model$new(data, target, task, gmodel, params) + bestP <- rep(0, gmodel$nmodels) + for (v in seq_len(CV$V)) { + test_indices <- get_testIndices(n, CV, v, shuffle_inds) + d <- splitTrainTest(data, target, test_indices) + best_p <- NULL + best_error <- Inf + for (p in seq_len(gmodel$nmodels)) { + model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) + prediction <- model_pred(d$dataTest) + error <- loss(prediction, d$targetTest) + if (error <= best_error) { + if (error == best_error) + best_p[[length(best_p)+1]] <- p + else { + best_p <- list(p) + best_error <- error + } + } + } + for (p in best_p) + bestP[p] <- bestP[p] + 1 + } + # Choose a param at random in case of ex-aequos: + maxP <- max(bestP) + chosenP <- sample(which(bestP == maxP), 1) + list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) +} + +#' standardCV_run +#' +#' Run and eval the standard cross-validation procedure. +#' Parameters are rather explicit except "floss", which corresponds to the +#' "final" loss function, applied to compute the error on testing dataset. +standardCV_run <- function( + dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... +) { + args <- list(...) + task <- checkTask(args$task, targetTrain) + modPar <- checkModPar(args$gmodel, args$params) + loss <- checkLoss(args$loss, task) + CV <- checkCV(args$CV) + s <- standardCV_core( + dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) + if (verbose) + print(paste( "Parameter:", s$param )) + p <- s$model(dataTest) + err <- floss(p, targetTest) + if (verbose) + print(paste("error CV:", err)) + invisible(err) +} + +#' CVvoting_run +#' +#' Run and eval the voting cross-validation procedure. +#' Parameters are rather explicit except "floss", which corresponds to the +#' "final" loss function, applied to compute the error on testing dataset. +CVvoting_run <- function( + dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... +) { + args <- list(...) + task <- checkTask(args$task, targetTrain) + modPar <- checkModPar(args$gmodel, args$params) + loss <- checkLoss(args$loss, task) + CV <- checkCV(args$CV) + s <- CVvoting_core( + dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) + if (verbose) + print(paste( "Parameter:", s$param )) + p <- s$model(dataTest) + err <- floss(p, targetTest) + if (verbose) + print(paste("error CV:", err)) + invisible(err) +} + +#' agghoo_run +#' +#' Run and eval the agghoo procedure. +#' Parameters are rather explicit except "floss", which corresponds to the +#' "final" loss function, applied to compute the error on testing dataset. +agghoo_run <- function( + dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... +) { + args <- list(...) + CV <- checkCV(args$CV) + # Must remove CV arg, or agghoo will complain "error: unused arg" + args$CV <- NULL + a <- do.call(agghoo, c(list(data=dataTrain, target=targetTrain), args)) + a$fit(CV) + if (verbose) { + print("Parameters:") + print(unlist(a$getParams())) + } + pa <- a$predict(dataTest) + err <- floss(pa, targetTest) + if (verbose) + print(paste("error agghoo:", err)) + invisible(err) +} + +#' compareTo +#' +#' Compare a list of learning methods (or run only one), on data/target. +#' +#' @param data Data matrix or data.frame +#' @param target Target vector (generally) +#' @param method_s Either a single function, or a list +#' (examples: agghoo_run, standardCV_run) +#' @param rseed Seed of the random generator (-1 means "random seed") +#' @param floss Loss function to compute the error on testing dataset. +#' @param verbose TRUE to request methods to be verbose. +#' @param ... arguments passed to method_s function(s) +#' +#' @export +compareTo <- function( + data, target, method_s, rseed=-1, floss=NULL, verbose=TRUE, ... +) { + if (rseed >= 0) + set.seed(rseed) + n <- nrow(data) + test_indices <- sample( n, round(n / ifelse(n >= 500, 10, 5)) ) + d <- splitTrainTest(data, target, test_indices) + + # Set error function to be used on model outputs (not in core method) + task <- checkTask(list(...)$task, target) + if (is.null(floss)) { + floss <- function(y1, y2) { + ifelse(task == "classification", mean(y1 != y2), mean(abs(y1 - y2))) + } + } + + # Run (and compare) all methods: + runOne <- function(o) { + o(d$dataTrain, d$dataTest, d$targetTrain, d$targetTest, floss, verbose, ...) + } + errors <- c() + if (is.list(method_s)) + errors <- sapply(method_s, runOne) + else if (is.function(method_s)) + errors <- runOne(method_s) + invisible(errors) +} + +#' compareMulti +#' +#' Run compareTo N times in parallel. +#' +#' @inheritParams compareTo +#' @param N Number of calls to method(s) +#' @param nc Number of cores. Set to parallel::detectCores() if undefined. +#' Set it to any value <=1 to say "no parallelism". +#' @param verbose TRUE to print task numbers and "Errors:" in the end. +#' +#' @export +compareMulti <- function( + data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... +) { + base::require(parallel) + if (is.na(nc)) + nc <- parallel::detectCores() + + # "One" comparison for each method in method_s (list) + compareOne <- function(n) { + if (verbose) + print(n) + compareTo(data, target, method_s, n, floss, verbose=FALSE, ...) + } + + errors <- if (nc >= 2) { + parallel::mclapply(1:N, compareOne, mc.cores = nc) + } else { + lapply(1:N, compareOne) + } + if (verbose) + print("Errors:") + Reduce('+', errors) / N +} + +#' compareRange +#' +#' Run compareMulti on several values of the parameter V. +#' +#' @inheritParams compareMulti +#' @param V_range Values of V to be tested. +#' +#' @export +compareRange <- function( + data, target, method_s, N=100, nc=NA, floss=NULL, V_range=c(10,15,20), ... +) { + args <- list(...) + # Avoid warnings if V is left unspecified: + CV <- suppressWarnings( checkCV(args$CV) ) + errors <- lapply(V_range, function(V) { + args$CV$V <- V + do.call(compareMulti, c(list(data=data, target=target, method_s=method_s, + N=N, nc=nc, floss=floss, verbose=F), args)) + }) + print(paste(V_range, errors)) +} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R new file mode 100644 index 0000000..823b123 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R @@ -0,0 +1,30 @@ +# Helper for cross-validation: return the next test indices. +get_testIndices <- function(n, CV, v, shuffle_inds) { + if (CV$type == "vfold") { + # Slice indices (optionnally shuffled) + first_index = round((v-1) * n / CV$V) + 1 + last_index = round(v * n / CV$V) + test_indices = first_index:last_index + if (!is.null(shuffle_inds)) + test_indices <- shuffle_inds[test_indices] + } + else + # Monte-Carlo cross-validation + test_indices = sample(n, round(n * CV$test_size)) + test_indices +} + +# Helper which split data into training and testing parts. +splitTrainTest <- function(data, target, testIdx) { + dataTrain <- data[-testIdx,] + targetTrain <- target[-testIdx] + dataTest <- data[testIdx,] + targetTest <- target[testIdx] + # [HACK] R will cast 1-dim matrices into vectors: + if (!is.matrix(dataTrain) && !is.data.frame(dataTrain)) + dataTrain <- as.matrix(dataTrain) + if (!is.matrix(dataTest) && !is.data.frame(dataTest)) + dataTest <- as.matrix(dataTest) + list(dataTrain=dataTrain, targetTrain=targetTrain, + dataTest=dataTest, targetTest=targetTest) +} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/README.md b/agghoo.Rcheck/00_pkg_src/agghoo/README.md new file mode 100644 index 0000000..337abcb --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/README.md @@ -0,0 +1,15 @@ +# agghoo + +R package for model selection based on aggregation. +Alternative to standard cross-validation. + +## Install the package + +From GitHub: `devtools::install_github("yagu0/agghoo")` + +Locally, in a terminal: `R CMD INSTALL .` + +## Use the package + + library(agghoo) + ?agghoo diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/TODO new file mode 100644 index 0000000..f197d8a --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/TODO @@ -0,0 +1,2 @@ +Support des valeurs manquantes (cf. mlbench::Ozone dataset) +Méthode pour données mixtes ? (que tree actuellement) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R b/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R new file mode 100644 index 0000000..7fae2ce --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R @@ -0,0 +1,43 @@ +library(agghoo) + +data(iris) #already there +library(mlbench) +data(PimaIndiansDiabetes) + +# Run only agghoo on iris dataset (split into train/test, etc). +# Default parameters: see ?agghoo and ?AgghooCV +compareTo(iris[,-5], iris[,5], agghoo_run) + +# Run both agghoo and standard CV, specifiying some parameters. +compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), gmodel="tree") +compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), + gmodel="knn", params=c(3, 7, 13, 17, 23, 31), + CV = list(type="vfold", V=5, shuffle=T)) + +# Run both agghoo and standard CV, averaging errors over N=10 runs +# (possible for a single method but wouldn't make much sense...). +compareMulti(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], + list(agghoo_run, standardCV_run), N=10, gmodel="rf") + +# Compare several values of V +compareRange(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], + list(agghoo_run, standardCV_run), N=10, V_range=c(10, 20, 30)) + +# For example to use average of squared differences. +# Default is "mean(abs(y1 - y2))". +loss2 <- function(y1, y2) mean((y1 - y2)^2) + +# In regression on artificial datasets (TODO: real data?) +data <- mlbench.twonorm(300, 3)$x +target <- rowSums(data) +compareMulti(data, target, list(agghoo_run, standardCV_run), + N=10, gmodel="tree", params=c(1, 3, 5, 7, 9), loss=loss2, + CV = list(type="MC", V=12, test_size=0.3)) + +compareMulti(data, target, list(agghoo_run, standardCV_run), + N=10, floss=loss2, CV = list(type="vfold", V=10, shuffle=F)) + +# Random tests to check that method doesn't fail in 1D case +M <- matrix(rnorm(200), ncol=2) +compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="knn") +compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="tree") diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO new file mode 100644 index 0000000..50acca1 --- /dev/null +++ b/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO @@ -0,0 +1 @@ +Some unit tests? diff --git a/agghoo.Rcheck/00check.log b/agghoo.Rcheck/00check.log new file mode 100644 index 0000000..684daae --- /dev/null +++ b/agghoo.Rcheck/00check.log @@ -0,0 +1,52 @@ +* using log directory â/home/auder/repos/agghoo/agghoo.Rcheckâ +* using R version 4.2.1 (2022-06-23) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* checking for file âagghoo/DESCRIPTIONâ ... OK +* this is package âagghooâ version â0.1-0â +* checking package namespace information ... OK +* checking package dependencies ... OK +* checking if this is a source package ... OK +* checking if there is a namespace ... OK +* checking for executable files ... OK +* checking for hidden files and directories ... OK +* checking for portable file names ... OK +* checking for sufficient/correct file permissions ... OK +* checking whether package âagghooâ can be installed ... OK +* checking installed package size ... OK +* checking package directory ... OK +* checking DESCRIPTION meta-information ... OK +* checking top-level files ... OK +* checking for left-over files ... OK +* checking index information ... OK +* checking package subdirectories ... OK +* checking R files for non-ASCII characters ... OK +* checking R files for syntax errors ... OK +* checking whether the package can be loaded ... OK +* checking whether the package can be loaded with stated dependencies ... OK +* checking whether the package can be unloaded cleanly ... OK +* checking whether the namespace can be loaded with stated dependencies ... OK +* checking whether the namespace can be unloaded cleanly ... OK +* checking loading without being on the library search path ... OK +* checking dependencies in R code ... OK +* checking S3 generic/method consistency ... OK +* checking replacement functions ... OK +* checking foreign function calls ... OK +* checking R code for possible problems ... NOTE +compareMulti: no visible binding for global variable âparallelâ +Undefined global functions or variables: + parallel +* checking for missing documentation entries ... WARNING +Undocumented code objects: + âAgghooCVâ âModelâ âagghooâ âcompareMultiâ âcompareRangeâ âcompareToâ +All user-level objects in a package should have documentation entries. +See chapter âWriting R documentation filesâ in the âWriting R +Extensionsâ manual. +* checking examples ... NONE +* checking PDF version of manual ... WARNING +LaTeX errors when creating PDF version. +This typically indicates Rd problems. +* checking PDF version of manual without index ... ERROR +Re-running with no redirection of stdout/stderr. +* DONE +Status: 1 ERROR, 2 WARNINGs, 1 NOTE diff --git a/agghoo.Rcheck/00install.out b/agghoo.Rcheck/00install.out new file mode 100644 index 0000000..4ec7d20 --- /dev/null +++ b/agghoo.Rcheck/00install.out @@ -0,0 +1,12 @@ +* installing *source* package âagghooâ ... +** using staged installation +** R +** byte-compile and prepare package for lazy loading +** help +No man pages found in package âagghooâ +*** installing help indices +** building package indices +** testing if installed package can be loaded from temporary location +** testing if installed package can be loaded from final location +** testing if installed package keeps a record of temporary installation path +* DONE (agghoo) diff --git a/agghoo.Rcheck/Rdlatex.log b/agghoo.Rcheck/Rdlatex.log new file mode 100644 index 0000000..ed3d8b1 --- /dev/null +++ b/agghoo.Rcheck/Rdlatex.log @@ -0,0 +1,22 @@ +Hmm ... looks like a package +Converting parsed Rd's to LaTeX Creating pdf output from LaTeX ... +warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) + +kpathsea: Running mktexfmt pdflatex.fmt +mktexfmt: No such file or directory +I can't find the format file `pdflatex.fmt'! +Warning in file(con, "r") : + cannot open file 'Rd2.log': No such file or directory +Error in file(con, "r") : cannot open the connection +warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) + +kpathsea: Running mktexfmt pdflatex.fmt +mktexfmt: No such file or directory +I can't find the format file `pdflatex.fmt'! +Warning in file(con, "r") : + cannot open file 'Rd2.log': No such file or directory +Error in file(con, "r") : cannot open the connection +Error in running tools::texi2pdf() +You may want to clean up by 'rm -Rf /tmp/RtmpIZpCnq/Rd2pdf1084ce20004' diff --git a/agghoo.Rcheck/agghoo-manual.tex b/agghoo.Rcheck/agghoo-manual.tex new file mode 100644 index 0000000..8a561f0 --- /dev/null +++ b/agghoo.Rcheck/agghoo-manual.tex @@ -0,0 +1,44 @@ +\nonstopmode{} +\documentclass[letterpaper]{book} +\usepackage[times,hyper]{Rd} +\usepackage{makeidx} +\usepackage[utf8]{inputenc} % @SET ENCODING@ +% \usepackage{graphicx} % @USE GRAPHICX@ +\makeindex{} +\begin{document} +\chapter*{} +\begin{center} +{\textbf{\huge Package `agghoo'}} +\par\bigskip{\large \today} +\end{center} +\ifthenelse{\boolean{Rd@use@hyper}}{\hypersetup{pdftitle = {agghoo: Aggregated Hold-Out Cross Validation}}}{} +\begin{description} +\raggedright{} +\item[Title]\AsIs{Aggregated Hold-Out Cross Validation} +\item[Date]\AsIs{2022-08-30} +\item[Version]\AsIs{0.1-0} +\item[Description]\AsIs{The 'agghoo' procedure is an alternative to usual cross-validation. +Instead of choosing the best model trained on V subsamples, it determines +a winner model for each subsample, and then aggregate the V outputs. +For the details, see ``Aggregated hold-out'' by Guillaume Maillard, +Sylvain Arlot, Matthieu Lerasle (2021) <}\Rhref{https://arxiv.org/abs/1909.04890}{arXiv:1909.04890}\AsIs{> +published in Journal of Machine Learning Research 22(20):1--55.} +\item[Author]\AsIs{Sylvain Arlot }\email{sylvain.arlot@universite-paris-saclay.fr}\AsIs{ [cph,ctb], +Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{ [aut,cre,cph], +Melina Gallopin }\email{melina.gallopin@universite-paris-saclay.fr}\AsIs{ [cph,ctb], +Matthieu Lerasle }\email{matthieu.lerasle@universite-paris-saclay.fr}\AsIs{ [cph,ctb], +Guillaume Maillard }\email{guillaume.maillard@uni.lu}\AsIs{ [cph,ctb]} +\item[Maintainer]\AsIs{Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{} +\item[Depends]\AsIs{R (>= 3.5.0)} +\item[Imports]\AsIs{class, parallel, R6, rpart, FNN} +\item[Suggests]\AsIs{roxygen2} +\item[URL]\AsIs{}\url{https://git.auder.net/?p=agghoo.git}\AsIs{} +\item[License]\AsIs{MIT + file LICENSE} +\item[RoxygenNote]\AsIs{7.2.1} +\item[Collate]\AsIs{'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' +'checks.R' 'utils.R' 'A_NAMESPACE.R'} +\item[NeedsCompilation]\AsIs{no} +\end{description} +\Rdcontents{\R{} topics documented:} +\printindex{} +\end{document} diff --git a/agghoo.Rcheck/agghoo/DESCRIPTION b/agghoo.Rcheck/agghoo/DESCRIPTION new file mode 100644 index 0000000..cb86199 --- /dev/null +++ b/agghoo.Rcheck/agghoo/DESCRIPTION @@ -0,0 +1,27 @@ +Package: agghoo +Title: Aggregated Hold-Out Cross Validation +Date: 2022-08-30 +Version: 0.1-0 +Description: The 'agghoo' procedure is an alternative to usual cross-validation. + Instead of choosing the best model trained on V subsamples, it determines + a winner model for each subsample, and then aggregate the V outputs. + For the details, see "Aggregated hold-out" by Guillaume Maillard, + Sylvain Arlot, Matthieu Lerasle (2021) <arXiv:1909.04890> + published in Journal of Machine Learning Research 22(20):1--55. +Author: Sylvain Arlot <sylvain.arlot@universite-paris-saclay.fr> [cph,ctb], + Benjamin Auder <benjamin.auder@universite-paris-saclay.fr> [aut,cre,cph], + Melina Gallopin <melina.gallopin@universite-paris-saclay.fr> [cph,ctb], + Matthieu Lerasle <matthieu.lerasle@universite-paris-saclay.fr> [cph,ctb], + Guillaume Maillard <guillaume.maillard@uni.lu> [cph,ctb] +Maintainer: Benjamin Auder <benjamin.auder@universite-paris-saclay.fr> +Depends: R (>= 3.5.0) +Imports: class, parallel, R6, rpart, FNN +Suggests: roxygen2 +URL: https://git.auder.net/?p=agghoo.git +License: MIT + file LICENSE +RoxygenNote: 7.2.1 +Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' + 'checks.R' 'utils.R' 'A_NAMESPACE.R' +NeedsCompilation: no +Packaged: 2022-09-09 15:45:56 UTC; auder +Built: R 4.2.1; ; 2022-09-09 15:46:05 UTC; unix diff --git a/agghoo.Rcheck/agghoo/LICENSE b/agghoo.Rcheck/agghoo/LICENSE new file mode 100644 index 0000000..094ff81 --- /dev/null +++ b/agghoo.Rcheck/agghoo/LICENSE @@ -0,0 +1,2 @@ +YEAR: 2021-2022 +COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/agghoo/Meta/Rd.rds b/agghoo.Rcheck/agghoo/Meta/Rd.rds new file mode 100644 index 0000000000000000000000000000000000000000..f7bb5f4990633a93a5f17075e24bfb1a000bd418 GIT binary patch literal 172 zcmV;d08{@TiwFP!000001B>8dU|?WoU}0ipU}gm}8CXL@+;lB~V!}WU2M`M|KmZ|H z7(30v1SA+4SQt1#hUX>brWQjraX<xG+%j`gVQfF30vJ1_vH-?r4aqElE8=j?OU_Tp z%u9#z*&TB-6N`c7LZzMa^O92wO5l9&)XMVwqLgBE$0X+@7Q-9^6XZ%sEJ@T$D*`zK aRXJx-ez_jZ{k%|5{sRCte>5&Y0RRATz(IBZ literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/Meta/features.rds b/agghoo.Rcheck/agghoo/Meta/features.rds new file mode 100644 index 0000000000000000000000000000000000000000..3dc8fb5868dfec4ce1938b295aab023f5412ad53 GIT binary patch literal 122 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZU%D5?rF<jQ+nd1<3R6|$w ztj^5~PS?*|vI)GdqIogK{G^hp@AV4?Hx-Uv(l~qJ#)&zM8B&wvuI)K;=Sq@E^A6+B ZUP0ZTgo?XtV;k<&Gwf?mwrK}i2>_w^F<}4z literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/Meta/hsearch.rds b/agghoo.Rcheck/agghoo/Meta/hsearch.rds new file mode 100644 index 0000000000000000000000000000000000000000..051a2b789cfe3c545411daf730738338a16a6585 GIT binary patch literal 198 zcmV;%06G63iwFP!000001B>8dU|?WoU}0ipU}gm}8CXL@+;lB~3}GN<VPIeqU;qOa zCLqBG6yXGENXg6vQoKOS1d(Q7M^nN9RFapNn_3Jt3MBUrhy}oEA!^tI5|gtN(^Fww zpUk9y#F7jsm&wxw%3|>Y8U$sthGdrHAUOF2naMC4UGtLjQ!?|?AvPg9obf-JYndV9 zO#iXCju~dSV@_sbF@|H{j;4++?B1!B<@rS^G`Gh&KQB48paicy03K1mH4Xv*04zaH A_5c6? literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/Meta/links.rds b/agghoo.Rcheck/agghoo/Meta/links.rds new file mode 100644 index 0000000000000000000000000000000000000000..ba5b13a936f0b276058438dfb3576bf247a49edd GIT binary patch literal 46 xcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>{{co+rv8U8L~pC}Jh1^^V$3<m%J literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/Meta/nsInfo.rds b/agghoo.Rcheck/agghoo/Meta/nsInfo.rds new file mode 100644 index 0000000000000000000000000000000000000000..ca0be5eb00d0762820a0bacb3a671d679e08fba0 GIT binary patch literal 292 zcmV+<0o(o`iwFP!000001BFr1O2aS|y~~=-IwymDhrS5IR~hWBL+TV?;~KhPlaw?Q z{dw`Oy)9j|_;9&7C+FnkCa;$OFouYYV9ap|{CT&zxd&iN1T(Bt=hPY20&4^j#3$os zyA7!6yD_&;<^v9vu0lh)S{I_K1`K>pn`gNgGNgB<aDIsV(@}Zhe<hTqBWgm_#Y3JS ztX;pfzQks-ATSa2CZVgn)tD%gW8qc6rNZQrxR|(|r7WO3_WR<WPC7<7V*N2PrLoOv z?0O&TJCJcBv}~VX)_#oArFHl+1m$NRUN`VjcrTr4*?HrsKU4-}BK^T;9ohH;Wka4T qmpx?=H_g6Gq29VX8R6B3OzqJt(;XT=-Dx@yC;tK8C;4gd0ssI!@{6$m literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/Meta/package.rds b/agghoo.Rcheck/agghoo/Meta/package.rds new file mode 100644 index 0000000000000000000000000000000000000000..138494f16a0448baf20a0161477671c5e57085f3 GIT binary patch literal 1146 zcmV-=1cmz_iwFP!000001Jzb-Pvb@qcHZuQYt?J-L%+47Yb8KUOp+rMLZHnBxTb=D zoPbWPDzvc|XN&E%ylZ;-JN=<;$M$Ys4A%<2HA>{2@y;_d&&<x|{hDDIC8Jy{7^Mm> zjmqWdq_&H?S17C)M)4&+KR3$8Dn6eP*PU>#q;I>f8&Q`?>cCIjb86?YgkHpjfGgrL zhe*Z)wRf#qZ#HZ7-P)VF(p2hZqo#zypQ8zd^$dL-!id|{i6aV3011G2l12f--BFMn zVi6M$?8H&+Zsy2b1N`&@At`Zy-++x+f(0%}#2!;2!RHS3Kt_ZG7%~sw3Pd~>#1B0x zs=y>T6g~O)TBK+M{$N2sBV~ERBcQ~d%&n>zo|8DhAT=4OzboLe3}Y#>uujl2Q6oNK z9{LiL!s`Y8CJBFN@*2idco#FzBe756j3lebsir8ysdtC5LpSoctl~>4Cyd5$N+TjX z3L8jrV-q?gde83KjlKGwS>N8>s~@J;VLbMjn4mL+_?gGZsF(0`h8bbTh(e+u;me`| zmzZX=iHMu+My=LrnW|Egr68aqGSMW7_+uPkjUvG$t%W3Fq9%y#k*RqT9m216IH}rl z{9BgHTN?aM`~)a=km1f)$tFqUe@7y*tlAN+BBDY&qaF(gyd$2+Lj>*ksls%X;xUok z<F(@}jp=2Y$DrLWCUjh_Gkv8?5KS*$uvW*U{dArb!Y3AN93H?Mvt`ydmF{cYBd`t8 z1PP*E6|9{qL?~ikoeTzQ+e*YgOkEl@mHf>_%22eowp=DN|7Jkt)(_!9c63eDtF2$0 z^+)g>+%V+twBI`(43G7}|K4nx4JG`tZgU^q(h)bUbv**orL}Y2O{LzImd}!7h{D>s zJ)!okNcFMA6P2#I*Msia@$jPCJ4RV~C<c07eU;6iJ^VtW)!uHkTRU($>g_|CirTed z!FCehKI}uzV5ePgWd_Ll2Lq=j?l0)H0^(DFi^YNY{DRoG#HD)Ah)GWi<s&@#df!!2 z!`ZZaaYTh3v2bC4KI_JE!gY{q*h_&-=9tzzKcXQG9HGU&AM!|Qab+00E{;GgmoBYS zz4MgWG!QzH7gkpC0iOrg<JhA!@#TP0NA$34%v&7sD=Jq<C;Jw=T;k#{EJAXdl+~?L zz~86owUg?MjKv(AX@e>@OWLz_Ev7i%{p-6Wx;_gt&v|u#CoE$2Or3_3B5F5APX6*E z70+!e&+A|KTfHl*cLi(42hxLAhW|jlpPdioG^7jUlyWW*W?4}@Ja~Y=<X6e^NTMm~ zXo^pvW+@*{dO7K99Rm+_Pb_n)!utPbl4fA!0E~rqh52(Ssrjf}wk<3<zaQKK_A_6V zkNDDu<G&m|9H^f8PqZ&uJ5RK%r1#4cjZ4X`^f+oO%XH<_pQp1F-lDr%Z|6H=Wj3gf zhdrx*G3uY|J5!B4<;`-I#`3C`^^KYv+xa=28{?~|EV#wLXd|9GB$|p>>X0nlA8AAV M0}F?|Gv^Bc0FpsElmGw# literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/NAMESPACE b/agghoo.Rcheck/agghoo/NAMESPACE new file mode 100644 index 0000000..7bbddef --- /dev/null +++ b/agghoo.Rcheck/agghoo/NAMESPACE @@ -0,0 +1,13 @@ +# Generated by roxygen2: do not edit by hand + +export(AgghooCV) +export(Model) +export(agghoo) +export(compareMulti) +export(compareRange) +export(compareTo) +importFrom(FNN,knn.reg) +importFrom(R6,R6Class) +importFrom(class,knn) +importFrom(rpart,rpart) +importFrom(stats,ppr) diff --git a/agghoo.Rcheck/agghoo/R/agghoo b/agghoo.Rcheck/agghoo/R/agghoo new file mode 100644 index 0000000..6686156 --- /dev/null +++ b/agghoo.Rcheck/agghoo/R/agghoo @@ -0,0 +1,27 @@ +# File share/R/nspackloader.R +# Part of the R package, https://www.R-project.org +# +# Copyright (C) 1995-2012 The R Core Team +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# A copy of the GNU General Public License is available at +# https://www.r-project.org/Licenses/ + +local({ + info <- loadingNamespaceInfo() + pkg <- info$pkgname + ns <- .getNamespace(as.name(pkg)) + if (is.null(ns)) + stop("cannot find namespace environment for ", pkg, domain = NA); + dbbase <- file.path(info$libname, pkg, "R", pkg) + lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.") +}) diff --git a/agghoo.Rcheck/agghoo/R/agghoo.rdb b/agghoo.Rcheck/agghoo/R/agghoo.rdb new file mode 100644 index 0000000000000000000000000000000000000000..4f8b251a842c22a757535faacd31ef5b1015f09f GIT binary patch literal 90608 zcmc$ERZ|>Xur2Nm!8HVTcP9|s-Q9xQ0D}YwuEE_QxVyVUfCP8<VbDS6e&+|AhkIY{ z+wNV}RjaGIR&}plFfcG<fZW(!OLKE`TXPFbYjayfZW4VNnN2S?V&cqjDRM?k1Xg9q z(BvOKf8c+~&&bR%#IQz@{6g{p3zlb`Mbt%s{q{WxHV#_kuU~}Z{>A3F%=);DNap!_ zrQf8`Gbg2<rGkQnt)_zlvvN3Hv*0R1IX{DhkO&{5H498l5K#pT3@qyZJA&Vqa=!(Y zxq?+Kb!-$Z6^eB%{r%;F#79`ip!QSxlD5+E`=O-6AyaY-<7ofJlT))Yer08tVjMM> z9n+m04g-v%>FB;@DU{Jwa^j}X?3?3fuIIiTUj8LWs)Z@Mqwax$fiDE)25Ro84RPYI zzYd0vjEwZdM_5Mf{R@|;l*BjdZe1g7^Kn4Og*p`gwYuFST|$&xd{;o-ul~+vk>NN6 z2&RdUB6J1FZ4a>+-u~7yDrDlBY!Ue5BuES|Ny=nG_H472ClTiQ68#c?IcfXEL!e+s zW~r~)B8-0-g_>vmo6xf8#p%yq>6;z9qV0sv?FO^?XpS>Q@zAYW(IJMkJ}3X8bC^8s z@UG%@)8A4z+7(szba_ZsEQW4WyVOMywBC)z(x<hyzq9z8Tlrz48~<hpb2zN8%`ndC zOj>o>7>{S`O^xtQdz1~t>p9FVVOn#RMzUFa`pa<8y->>YNi*yv0_^W&OjdN5B@-3G zt*@r!;yLOz7j<Pr^UG>#hq>&E>(kNBeN`bSK#uJzIA)#PN()Soa0)Nlr@NS7B!b@P z`}qq#H&6d~HX&LwO{;FKwUbaC!cYxWlF@IkVT0NicoH%oAq)%**Z<ZBA#orKoPmjf zp#jv=HO;%Jni>pPBM`#)e>wl(yZ8SFwK9y+EyC1)sM-G4N-<!mZLQ5Mb`ci8N1vUM zJU_!ox+B=Zz}Of7a<3?yJn<*pb$>Zex>|(|ay-NG^P3M4Tg||ZAF%g;esqQ%;C*c) z!eLN~`SMEbO9dHLD2vf9)6_#;TlN7xw)xok26ESx7FXGdiimBAiSdYuspb1Hm;GW+ z<J4}NebH(aGl1UCRB1*_MVV*nGN-i+1v9<c{Z5_Ix9B!lH!(75)WpB629Ld*2%wAW zyRE|QE?E8e`MZmaxRLsY#Z)K_was8Eq9?!63Fymk27rQ)bz{GhiWH8~8x71ubN|YA z+O!KdCF?+a;aQp{+nK>iJmQKv!xPeiz4s(DaS*1S3`VyN4G*>~rm`%)kv1ol%IyDO z=ERrE)Y3z=<%VhQwNE!)HbcGChVe0C>UUly=6-v|O%`uR!gspEyMPe$1P6q0P6E$r zC9hBx$93wkBa)X<hx-JwF*UR>7{0lU(N6k>q@KYrZB*L^Rv6;till9QE_OSDASnfd zf}DO+?JJ1nmjk8}7#O!BinfMzBKq1(_)F!eYvE;ng-w4@D$Vu7>r=3;apHm0O;DUk zzj2@bkt7{7mwfZS@5brE6;7+)#JV^9!_fE8;eV??**0t0r;CqvDX^nmWm~JunBnNF zWOPi{y>CgpqwROVr~a-21l62WbIkhBO_la6cT)T$ACtzi7`)~=TJ-%+9zO=-H-Uyl zo9C|08$RGo$TA@L^}H+Ww!FgHKS}74@h_p0$Y}9x3sk(H^3sZ>TXr6V$s;pJ$ZJ+f zu=AoGYpJos;iH)2UA;~c6uMTl11v?=v`xZ$hxiyw-C5MaDHqmjyk9C4<5w?ysybS1 zGpLd`FP6P}E=69qGqI;OX$rM2!l+@eJwod64p)VXr#Md#hC8OcSeph<{wmw<1fcw( z>xLDOu5jHKnYX7)bE-wg{l)(t;Q~Nbqsc=(>M}!0hd)iaNEr~^r5g5X2-O3NczK-8 z@DP4y><*K8;ZtVFNQi@5*omBzAhzjwJiC&Cecy8%0ZZt1^Qx=zp9_~%X>LDey18BQ zFAR4nmjrWJBtlRxNDO`MMk$u$EirKg?xX{|o6H%og70ahX9M;rnpPxZU@@x>$IIYD z7Pa73&8e!%+_SV8d0t10zj{UN2<e>0MQ)Pp*{D{XCZI`^XIVm!D1I)oG#kQ@v2KO+ zP0h(QHe_uurnVVV4Tde6RTBE#d8ZrzaRkp4I}PVu35vj643l9gYpm%?wmiSA>g!fx z_$is|Wjr#NUQo1n)hdvD!udYuV_~v}ospz(ml@03sUFhIW8K~tVN~GQg#<FlqkIPo zrqjiqG2FO*D;Vv$dH=1}r=ik^`zAhSjZCTs-Vhrp&~7t12565tpa<FBntdfrdJ??t z8M7vn&f6UC%90m0|8mZnw<P2|NFs;q)fV=)3lf;R5X~QLDj0V|oeog_%QxN|wTHIP z9_xS7k-=pwv#IlM6X|!Kgw;##C^yWtcSJzm*#Z5O?{sKC&CbRINC^WPvPXddvIJoJ z0e^^I^H4tFV!sU17VXrtLFE48-vq{a6_`UP7R{a(X!pd2Z;(d<&r9To-f1I(r8lXv zD2q&??B@^jQT;#m%9}P$2#@Dqcl!oz$_DtdT)35?h^#A4)o4Xql2p&pd&$A@JP4=o zyQeNj9Xu25ac>`?7N3SmZ)+LHk$EIn#H6uIIsT0Krd4c_0XtEw1H$~q)!SH?IiALw zAOdDxQ~NtT#s+U>Q^=m!_QU<Z_4}69lNkQQS`D=s1nX>9p)yM?aUFDIY(`NRVCI;g z8S~HmP8_2RejX8Z)=WyaRQVZAXY2CAvh}2P@^2lJN9<@lr$f0FdqkP+hr7Xv<yTg9 z|7lQ5#ED_uuX=w5CvkLLi=S>Ql;0gsc}`=}7Gi~H_e(4s&*StjKh{-8YmOUk+H!Lf zGW$9xbtd2Z7QXtfhm?r3w=~P%F`EVa4EL(`Hx9XuLOg3lA2Q}uEgM&|A*`GU9J${P zu`HjxQhcv%f2jd7D7<SZEmSc5EVr0N&JGzRuWmM;i>!SR!Q~aY)LRfqo-4$<tkq`- zjY+G@8YTL$A;DyhT@AL+mc*`t@f4%OiR_7bm!4>BVE5H;)g_^@KYoAMV@XgI_4p1a ztf_nMtp9vbE8#jjVw&#J06>bbFE1*QCA&|#_-$Ip#I(Z2@nJv_MDRiD|FQH7`a2)$ zW&B~~|KXA`F7$maZ`y<VAP!@M;qP`t4ZA*zufey;cSXr-19j}&`|^V1GcCmp@Z1^i z?`G8{T)quwY>HNYZ#%6jZ#l&K(Ag?fc4Ewe?kWRYhhA$CW>d$q>*tz(<SVJp9Ao9R z8c8s=4EM4bp;6^)_BAXsHRYUB<Giy>P{p$~{{Ogfv#!&CL$AyT$Zbj^y6sQS5oBtX zNgvR*J8G7ER<S=R_KDi}cTTV&hi?i6fm5@J2gg`SfUu;?4(g9Oa=WzPg9!rk)|X%Z zh%-`yFFd-Wtq|8$bFpuQ=lnX2(S9HOOQi9dW9hvz*7V=-lX7sb@DVO+&YOlcRPJNc z>t!`Q!JLyr;U?;}K6HTJQCx{`#iL#x@cCf4le7BpTWS*exv0cZ!l!Vm2~#w3cOw2- zQBl*H&Qb8&!GNDm>#~Qhffj7QF$FK?A0Ha_^&^<F(!z_?4kEuW)sEvNf7~pRbC{70 zJtX*doHn)8vJTCBEmEy}v7*f-5~M|&3V|`E?Yd2TqUEOpsw=mMMR(7j)O`{WaV7Um zh}<ePcMnp#4&`;Tb=*~68aPK5&m(^1d|prU4fa%>K!x=B0QYE9nkkO%pGVVt^A9h^ z)Mo%D@E)7ZPA=~WG3kM52QA1a;6hAgyVCkd<?Pn`Z7W<F@;^&y9{Ge`@;`GcWDZls zgyXh}D*-6OQW)44jP!*Tw;X6eR-rqV%Fn~6d34W_I;C}KN03+VmVro6^!qOQeS$fF zHJdzPQp88{$d%5l(3fC%!QMl#Jn%kbYDck8(iLGCRRrp{&*L&auK~muX2M|Lnpp=B zp}5i;`pvn&sr?>bfZzWw8#s;~1sVyu;d6^X@~YqxwFvJ2wlhj9y9#KY8AmRzFb<mL z8qeYMXSokdIBS&QqpDSpp$}=xr<qqMhbN8w)=nYazQ1z*GJEUMvPd~=+0lUfo_l+4 zcMkJ#5SN0^wmdHyVfR>A@U=du99vytPSC%6^hL<|q+9lWUM_`U8Z1$im%D@Ahg1iK z+45XC%-n|{YkcV5BKi|?8V}v{sEl{&yDucvYXH|0%!(k2yw59wLDdh-Wj*g*;cpgQ znDT*z!Tq+}8WR1bo8ofZzrLGD^M5E&H|+HN^JRHJydOc+UF`_gnL!s*l0qsUCw>|} zH7W5h^O<%QB{)*$+_iIN$}@}Dv(skEE7&;7usR&ga!DUQv5X7j32{UDan8$3ZpDcQ zKSo0SHB&Ovl5;R*N^myhus|x)hI7~)3-+zrFB}mmH3-cj88+|$vIIBxa{v)(n#L`9 z&=JMhLh|9AB+Lmz+|G?+FQO??3vSc$W|VRdHtZDzn*{jthApg~xF&Mo2_rvZz!OO# zLK15)Jp_osX(fpSn?Uyo$CQWBvG7YF9<FsCUP?*A4G;Xwqv62Dd*pKdxNBG8(rSy2 zj~Y^}K+R=7{4!&-1)5C5h`Gvu<(*8I`RD-J5}4xjhxva{W@)es5ed<2Rzf`FLuzhK z*UyI2VPcQWvw~!^FQyD6Gpa`d#I4tnknM}}*_?MCI;}ErN|DPLqhTB=MsKHwY)y^H zTa*CrR58$@wzv_CrSkXbLZ{%#o|En3d4&a@VlM#*Cx{_Nkc1f|5J5<Hdfh_fgHW~} zh}g`0OaDxxUWxnGiZBihzY86FKg`kH&KHaC%CYfC;)wS=H5w?<<7=1y#rCfH^L>AA z&m{><y?ld!VeOO~fag9zRPHQykBPqtHIo#=$Nlk|#Y?GPLJ#F0E>!Y+pQQw27Gf7= zz%E$te4t<Tw15gJ^o33y1C9NzL{c9=O>x)vSRvUvP%IgmpSXSlTCBUGy>*PerSrNL z4EXOX8;Hj<B|69aWP(apuuv^gIGh&VK+|7>r!|$(Rnogn{4VNbT9-9ne;AV_sX2IY zzk~n5Izp{`4Gf*w9=;`&%~kCRa20;poLYQAG&u7)GNG!dt}t(mZ2WtW=}LH(%vZrj z=uUI+WSWz4vM(3Pn$ghI$foy)mSn7aF?)I9q?spvMeF8wUID_;qc92bp1JQqYQ2oq zoOs9D16Q>Lcm7J20SW2;C6Tv-qMhwA)*iT>ss`lizVJX<CbKY^D@BXmC8P3Wl;%P7 zni);JM?W;+kz9ESJULE5kKS*uKz}r#dbthlz4qwcfujRvB+v}@nGP_><9xV$PXRVS z^M~nn5Ff9;u)&L%9G7~$mfV4}Uy~^p6{*w4p2pPgpLr_q#5>5zKUW&=)t6J}ZqD^f z;T^&zIO!|=5{r+u?DQ9k<hX@wffyLx+tB#y+)l0aJFht>GDlyE<Rhr_2LTLYMeKHs z&g2%(k;azXb7E5_=hP(|)tiV8UCroC1Jd_4BUIYgy_+^i6fo?KO@G??j(V{J369FX zo@k^#5o<k)lfLOlgw-D~Ai<q&*DC@oAZHOYTLhxfV4=8qi#OacD);A5=~>7^DK-~| z*Ob?ur4v<|Q?@N5h@(n%6!5v8B8Uw<+G=!VK67Vt|Ezm(ZfIQYEgYC#M*ulxk1H7D zPk4sdHSkQ}?wAWtf{i*Fw+hLAKsUv~1+f#*1#z(NX))D)5BWp|-rT)>r-b;Gq}h?v zwHD*ii=e}iQ1A!lp0^xJK<Gj6Q03`)&<&k%J0isy{Fy0x99+v8bKq}N%s&uD0Y_LQ zTu21#=?zM(mO;c<(-5n@1~qJ2k_I#S9T9H+RA0>~WQ%|GHDZz*g}&bkB}BhcNM~8Z zfy@DicBL9Y=5RUXe|+*S`YQD2c{2N_8G;3Ffe{_|_g7*gS9aVK(%FH;C)^J_*<sS< zG^IO{&qdcDlq|r<urmF?k=m)WiG)TSlqcS60`!A>K!k5og6z{#`rDZLc#Ab!OEWQY z?g4RuoOnu<M9HR&`oK>cbwSQ&^q?FmF{ym-Bl5@875d<Mv*od+wI^har#igmW;iW? zshTt)S5Dm@R5b<vgv56_*La2p&XJ4c{Pf76Ttt)jioYB-IF!jfktarD)InW_`1zVz zCSE^FV^_qp&#UAeE*!;b>PDLW`;0bHYN}f{($L!n$Cr2EkzqI00jG%x<iJy5lsBsX z&W~ak8K?s504_%LD*IF^8zQYQhY>;!gy;1$=Z7T>*p$lY)hP|TEqrI&vsm~f{|#L+ z^b8g%uP`#EZz4gnqN<(?VrPRoY1>ulES*EkWXWbdoqM~!E?3$yKWBkkn|MMa)nrBU zp561Oy3-rjxA9KdH+KOD8};G)5AlEU2*EEAn-0&WD}vA33`L?VB2;&DqR0Fq>;l9Z z{dq{o2_h#dJX05jOKFqrWUhHP{@QnGqfZm?L$F7^RKG9Zb~HX@ro7RO{xU%v8T{iD zA|>p{3pB||iTut<{=E&c{m$$`BG_8{LSoCDvay`y%RI$#{r#Ne_9g#NqNZnM2;$vr zrh)X4%NXChX@%{tnAS!Pp~pDdV`<wWJ+%OQmpjNpO+wxoH&=)Mf<KG))^>vJv>SCh zC+Hw2g~J<0Ovp)yOHZsU7jl4cs(*%xbPHfqisc(tFyFXx{mXY9cNjZrTq2`!T%HjV zy6rN^XS_;NBrr%}4bf-LIP~4QN-fWzhufz6!47t{f#Mym26am_45t%vu;=SNLM1Ix z;=O{pe{Ia@If~rG)W~DsQXrWR?J!sc2i&$U;51qE=Sq&+w^I?*_C5Re8m_KZii|3M za!kxXZP(v^tK`ZIgkYN*i|oL_>j?mIFME+wO~&1+4P9+H2Vi7Bdr)&u2-)F~P)jDk ze3ONfCC0F&<b=ntjo^U~QTUwtZ8Eji+Ger|@6&fWmenR310lh0O*ZwuY||GF-H-nL z??-AM576VfhWhPV|8|$H>%Krxx2xn@(8=GkmG<uH>S|AK@0H0t7<Ft+Z^YkJnlI=w z2~->1-)SYc1n-kX$`B;jVCC3x;+VQI|7d$eUiElYmQ>h1p@u}f{DKzHK->XVjju1q zvlog*-uq560gbCH4RA-?MF<=mgA;f*6m(Asc&x>O_|u2!i;L|v_s)!gIfkM1N0u*O zI%1tr1G-F;&;>euoI{Nd{uIS82Yc;}beS?xP$@4hBM^2W;W-iiS&dp0QrnG?qS%ms zqsBgH^U_uzC?dBjW9*Ah$$G*Y6A7-szv5Bk>__lTgL(F&T39omc+!{dd;PlBrn&yP zOg?*E$N$5JY9aK@Uy(DzIAP=KP8;gB{d#`GAO3=yZM7c#Z$JZCKoWxz24vfOussgK zGo5rSM)|<4Hz>Mina9Q;tcR1w60JHGyQ90*E>dZ#6j;Qmu@L5b$U-M51Ljx~D76dw zU9SlWR~aerpLz{YcR{zwU8V2Cw#eD-E4+Kri0QEo{sZ`+L8N?3bhZ?ceWkc{X9;)4 z*;t&@^o!64sz#K^NH-TiaQ@CPvXRMDR|9`IZ%4CkcTHn@&35D$*JlwRVh|cw=1LZw z_#|C}`6>NJH^l+;^><%K!9lwg?6pT9vLXPB#0{kIBj9uADpmr{d*t7z19J)%G`94f z4k&g0aC*xYs+Z+@2~NVs_}PZc{sz;F4{7n058mi7xbElXUHEJ6?wNt&4zvAtI?@eA z-aeCsRXN_a*xOHR4h7Any<etQEEHb-l-8&3DV9ueZTgrY(>5t@qis>|@Ea-)A2lLU zXOut8m9NzXhM}+2nbSyxn*!$%nr~_0uZGc&{R|&w41E%cz<wz&2_&iR7kR~iuRzzr zmI|h;>4`w0PPOEK6gP2HDX44NZEsUJsr$|9;wK=>lW*O@;-=|<`}fjasymA&28qVN ze!1}8Y{)Gy_^6?3$xd-6JuI-MlYE3}1?)s)Z)D7#Zxmb?e&7<7kW=P*)TUqBQqQm{ zy7K{tV8!?mO#73jVB2`e`y2Rd)?NJH>}T<`^Xh9FlyTV0fc|d}kNi=OVu#}*jF)*h zSFifxAbQi@NWcSo!<>M(z<`+A4Ukh6{JN&OUZJyY$8<Gc-BK%i7ZClQDoNQ}AAWEZ zBM+jbbni@(H^FJ6(-PWII~sYm!UHR{U19%vrSXu!klOeNnK%$iM&1V`?EklK1tElf zJT+==g4A;pwQ|kM1pB2QASO`>C!%(N#RQKPXwVAAD+U^3Ckd%%U>Ctty^eUloV$d~ z^Bbn@3jUL{m$ON@oAbM0RoJ}LYK6FxUtrPUjp6kQjlG^30U$VbKREgv6f3)uL8BjO z7GfTMPgf<P8tdMt*b<z#=_=WvI_v{hVV++Jz5T1keS>-SsyiuU$z&B-6t{zG^Txl& z_)p;-KK#zt)ry3wlzSgqQrr`Dg3b8;#5DU9mHzoBw5aeXlAsT>_>T5tTx_i%wGcP7 zmrSywpG6ec+7t`$15O3^qKy@w%Vy%VZ~x!&c6#he*M^~Dz(ml`26HJv415f)N3U2& za-QA%&*}Hn<FB9i+bXJi%en#ZcTQ){SC=WcQq->wymv1~$Dlp>j_TI-_KQY)g-An9 zzA4bJo}m(<WUUoHE}F5ZxsM|xx%8l6SDWdcJ;KZjKjIZPJcTmGyg;!nz1S^ytY74% zI_m$-F3+0PwN914ZTvL@mX@_vSG;Nx3^&99Ns_e<RPwIM@O;}^eZKOLXQei93eZSz zoh?Ohqd<wZvOdSLdJ{`*2k@bT15-cKRj$Q1?~>HtlyX=)h~BVR(oH6z2aYbYM9B8J zXm)Cq`bP9iLIb-TwDjzt1LvAl#<e(q!#wY+2qdxFWTxH?G;~Nf1B_lngIvfDV)X)$ zDbXV^w9X?EmOrqR)`z6Oo$_zsedhJ~)XjnE6=Eh<B-_|<Krm5I7mK#_o|j0(*12rv z9H?DHi8{y&AR<Q1KRcH$zm!j3Tj&0>v=~@h9s60Kv!30Ia(Ls<qO!~ys$s<;@3gYQ zOyA$$3_bdSv(zguMgFumt;rqb4_kZ|l^T`l_^w)`S+3kP5+_%jcO5OevYpG3BNa3E zUBd!H#xG#YzRD^uVQkU8-vhL%KeQB{OG&uM2G$PgH#NbL`lrs4{yLju_M1QBs=3jK zx;MJ~Uqq&>v6VUhj>R3ludv?}As^aPO!oAzdTacgw8~qUHZlzDnTp*b9F0|c>in~| zMX9d!!nSaTb#-;ovn{Od<+ePsXJPJ|NW5*$<Ykc_Be;p@uI=!Li-UpdUzB~7yYQ<> z@t%J)m(+6@d*?d?b#T=Jn+M-VX<aODd`oIeQE*`e(d9$WZ|%{o(Vwx|^`;k8_I>K# z*=u>aW3Fb2Uj6I%+kFJ640epyIX`V6r3c_Z;65!|1rk}EpT1>v&G5?gNn+gSi@ek^ zRoA(Z&C;)rhkD+lwkwtKsVl9%e~A$(VNAcMA|}EtC>b8drp$@EbZfK=WeA9Pc)Z7K zF+E-E$;uqaQCPSU@rE1@9?WVQ-Q{xwcm>DV@SU{=4J51<7efRqe)wIId6bm!XbwVB zE({8Ocnf!&6n7778Q6vdZ02O)Y-3b1&$bn`#tYCiztlev9{DKC`*1nv@&bR&e~&n` z4O_9^W98k?f<Goy*SFkFP`l&C6%oirt)HFRYKUl7SSK~9?#no!dB3YFx${||s@5J~ z)b4J2ISzwP(C*hx3rj!$X@R*6L;q;~LvRs{P66Nq;%2_eZ@oP)kn5eL#+ERF{_H6g zmd7*PajT_!2r}oirV@31F82w9^bq7a+aFMSS2}hyHLmB4H4%soK&DH;wH0KTTeW(f zL6%KJ7quoU)`c8{lua3!=^z&ELH-<KM<eESU4*tNySJf!@e<Jy-H+#T5Ys6ti_BB0 zFlptD9Uc)qE;ivYeVN)&Y^^Jzppg^f>qtqz4qK6+RZ{nbrk3+`XpOR75@ZhKbG>RU zrRzs%{q}E}Wi&lDFYq1yh-dAiZjQg#$OtpYN(rC)C+=<{Qs%$*a5MZIsZDZQ`{LCG zz~5MED;_tTa#VdAnwIrJhwj^o^$ZbR!RkO=L2(Q!E!?;^?Sur3vtd3d9H-8QO`&Lb z2Ra|!DfxxWgVKQPYCR!{lM{C3vq%h5s`2l8Jhb#65#!pqq@cQ({>V3A4SuIf;aLsM zmYhO-*!7mf>0GkvLHdl;$sFt3Y?pP|xzQb^QjbY1F=DXpdN1;h&xw>TCPZ^7=xE?# zWBWUBdVRafkfP@=#1OtKWvpKNXf9{laT?aEFWdLoQS5p-iAv$XvK%}aCgGPczq%tC z4O4ZL0}I7c>Qfcp?Q@C`qk>e|kWL2(Zd^M%6U1)!I@_JwH@C??XD~rk&wSlxeeX@J zqxJqVPtfj^i9fIFZiO{C8kfF}X-qzD$xxrP>LEh^ebp&RE$ZQ)bgb14Q%c(rWR|?W ztgyi{W~U6yZI;pOY>=q;Os&7q0Vs`{xt7=C_0f>_sYJTQMV!#|8eVBdW<JsT8pybl zV+GN7e*V0M@fb6H)4he5n^_bR?J>r7hGx6WxpvN|KZmH8D&TU*`scJzQgcwXcugGe z)kAgT+cZ`Kb}4Zm52?6JBq%1rX=@R+%|;6Es?MrpYvE>rd7ex7Bj5f_y{w@hGI6UK zh#3C2My3hli%@J<Ipb4E-uo`olB{UJ;2O8@Ipnn%?0a?-FesLL8L53xwldf|`@jSZ zWSUAGy`#th`R=ML=)@n%zabX`t{0AkPv^!n<^yzk0_i_iAr{52IHeb%*s=#8HPR{T zb>zX#K=j)#vwW+hgbPPN<Y4uW5#c|{;Ws7ff$(9e*<6{RMue_}ibAE4YQqOQhpptp zDehdD6LVb3%a(_GaobH7ae~pLmaWaAw={D4pY5{4v=yf&8YF?TZsAO7R4Qc6HDp8v zkIBH)@G64$<B_6kwG28rW~NeB2Q4SP6^}W?^rcb^^NEfsObaBgxVvxjBRjbNajM}4 zl5jmyZ_6CF_7RPeXy+S=J*Wr3Wz$5HK$tAhjitBrueVfjb4JOem!~mLz_?diyZWoG z-ZS$b^T{1LmEpQVIYYbGl4Gwnq+mTwK7pBw%Y3^8PwfQ{Rw+ZAxmD*XoZFXgi+sgJ z;P;{gO%2huuiuJ5l_rV8Lg^z*Lk{wxi=glm{vm+_nmRz)4($9JH&cr4@b9te2zjjU z%*m#+8pnob!tzg4z?*@OUSLVvR7v?{ep$`r!jzJIf+yB`XN`*ezE}L3jElSlj~837 z=lbE=#Qc}I&S-4kxY4`RJR7;|7zF}~@Y7FF5-nKr@b?<3+;!$R<tbgWlx_5XEa}#I zC%1;u@lID}2^nc@zP8PTHTUmQk9y5IA?FP3p6LMWYCzx8nvhc10Z{eABP`0*vzjr| zR6AEIXeU`sEu-zt(fhXU;@v#$fzsuwju2VcfBiv8>$5{jw9Qcc`051dGV~Kkx1zgU zu##k{P|^F^@7VC@FZd^}sQqET{)*PLGcTR50NJf`?VU4P#;O1(DqHg<_HE$*q`v-H z&wMf0;+>LBQ(wWGjN`7Kb86+tN*#9XGhNh*>*3|K6}koflU;QRh8$8J-RO}yb@^>9 zmFaGstb_lJFx7Wyt*FFyQyJ>`4Gsa;&Tv=xz$qIfm5UdjK!S<_gp(SaEK07AO8d8; zbwxM_5*Qy^uwxRKb4-JP!b9ON!Uv26Rue1Ja2HJb2JjN+QL2fx>ZU7o47M{IOBTAn zSe`wx-Yz8O{avFYb_y7vxKKX<N|4s+GGo4$!aGQsw@-XF{-L7H9>{Tpil29-A?kYu z{2S(bXY94daTOSVuR=5^o?#9tvj=qG5|Zt{zauMp0yOHzl=|5ma&oTnh88-cJH{Um z&rHp(ed$y0J$Qj(`#zUqAuJ1!ub+aQ(h=GBuVNz1v;j}g=}(T*e%&Q|jZYZ<#e1=z zC=3~B9nnrK?R=f|Zo;hyDeprA$6%A^_2(+;kL1jpT<`A@aK-SxTJMnPdX{YumL=2} zFY<o*X=U+BZtVG8ieqi;Ul6D7L=lnUYwUu6yvn4rYkI;Zi>aY$rJ!3|mC|KBdF{Oy z5!Dqrb*gxdxWXb|!xQR_@fmIY1(qmr5d3D~g@#)jY3)v`(~dtzZs5hQ1gM~3w>olr zK68NTdWMwdLrb^-Ig`Tv9h0BWYL9SL)XtgEk+CZAR41yj1@Pa5ZUd^=o}TG*ot#rY zfp}>43EeG2$+x<yq3`ZoUk@nc)v1UbSo)QqmN&t~?;PVfI3rB`e9<$5zMKrWVb{f+ zUf>^pp9g65B`d03rFo6f4I|GX=V!quu}fW-I^PJd)xC}$@cOQ3d{6LC6M)UvskcFc zrsyipM>DTykIMdABuM3hLBE2E?K*SoL3Eu8M@oujg&(h?fx}#3nA;6ppHTMG#$(|g zToV!_sHVZL5nvQIQRYNXj|4I;U`u=b>dwyE(pG<ecQ1r7+$wFxH+euu?RhVl?-6t5 zV2g2RNfA)4*#!=d#2ol5WuJ>jCojmpKRho;xlcALNNGv2_gXwm&089Jz*wguhZ9!{ zR5$P@J(9>@oWXNgjrwOfg}v0E!S(lU+|Ck&AVC|U{lR^G5FzSgbek!8w5E90I0N}$ zB1^Og%iKV4O;W3v5Q8nUARQ5-V3w<zTI6ylja-ija^Z1ckFM4Dx2f?j^8@bviDJVn zB(pVK+v*J+Cjcm_!CXa2Rqr?x3~TA>7uSC-=5azE0{*A9!}ZVm;qO!79BO92zf@0E zCoH&go3Q?Y{Ks>3`?M3c9>H%jFtJgg8|4A|2*<ru@J%Ld#5BZj78lVmabCuzRygim z1`bO6D1h)GvL=zbN$(MfxM%1O`VP%iovSTBiFN{0aE~BM`O<dMhTcTaWZ+<L5TJg| zH2S-gyj8BMC7%e(?J@T^nSE1=jk06Cd-Vsx`|3~!V(T`BkVP00Y&@Yo9%ruP+$o+M zS;$fxt{XD!>o^+c9_JtcR@_e+hcntd29X{$Q;zy>>BvQ0ol3gO^i?Y=5oSLFjp%?x z6<~Z7Ld{oeNkINtUTS&@ADRK8d*g*jq{*c^>~DCz=n5%05M%(!hMTkZQp?{=$UeU~ zMAc{A%vzGKHzlDml(CUTCYK=B=T;V^aopbiPT2e2m93JiR{S`?(w&79S9eM!_d$P) z%^>l}Vyw}O3ZQItLu69XNhk$2a@;5e5`<p`Vvfoiy0!M8N-q`kd^S~b7fi$~W_@$! zkyT+;rT4G+B@%y{_ZgCXz^vOJmptYFYn<69CZS%p@r_$SWrl%7x0fsEx6ZXFMV)Rf zpFp{_KB`DOGl}jHmktM+Yxd@uW|j_j4S-0W-htr*F7TvLt>*2x-1u3geqpLUZiN<F z$u|{TW%n`5H`O1Sq1(r^wu7=46F@NX3R9mjS_Nn`{sb?p*WRPZu5PriW0|c3y&<2z zP6nkK9!>)u8AVxzEQvMgZnEo42N{u1`Hu780C}HRd|00?Br<G%DaM)`NuW)%loxkp z*Q|r3JHzm={2ITPAo}My#!W4`S?W@MDu=7oCp;aA69_0Kt4W%TXeUi$|Dvr6FtS{g ztg|Mk#XKzIUVadz3!=1?>um8VlAq_}ryyHu)Oj~{9x^B~Du42}nqdrhI0ks}i+)-p zRV`30p1qIydc^fI1%BPXXldj<e2f~(gj}Xh6sf7^>lcF$6KJ32xIYczioH0{7~;w( zf7Z*&>(cV{Xu4I?;QgqHqOfo5&z_cmEw;?A#BuQ=;Rq^_bK&Xanasl-F_=CBefAaZ zY@Wzdy6&O=@K2B+%XKc2Ul}HkYTNBB2KG5Kqhd#vh)5K+CmgU*XC%llTXu~evZMC7 z9)i#(zYa4v4tFVh*B4lVP9Z4a+mTRF<xsz`_K{I<#_drD{W^CDMHxRpH2r%Jfomo` zjC)HEj_-}1rdDn-IPJARsa$L&zA$)&ahE=h&Kv499rDj*hX2&9b>X&&%W~CibY`&< zQ*#C_Yn>W1<_dRs%&8A6Bd4_V00utKmnG=PF+vu_g_%c$jhp#BVPqr?TnIZfit6e= zav9Wa7_R+7m!3rwrR0LgLqSbg^yx>oF#=YZXk;`%^V_6D1bW9XT#2?}Rv*p5emoK5 zG~9X{CzUS3NA0D2HG|{k8v9t@KmSbw@|#9Z%;ND@LCU!=+u-2Rf<zYvyd8k3<i{1m zhlL*igH*~LgySxcYie9uczpC_A90ROF!*4VCw(zKOkI%g$8EtkPKDh=MA5k=WL9v6 zG^1O#>hm6uKXFPR<#r5YR0)I}uCp>P@xMeINuX%J5+39@4G75Z<*1zz7mPJdgjf{~ zHHJ^IIK2GWM{G+=WcjG022Oh(qprYzjQcdi4B3e3Of#?^tmybHYxeL7os>;C=l4zW zlIc)<DPvlE>Si(#*;`W-yn$k&tJW=<lwBJ%+z2xjh!M=EsztXW9@gg`kU$Azs==U= zjyS04O9B++dxL+br*=VCOV$$N9hp$SjH{D{ev5N6_V>-HXZ!b5uKF)hxKco<7ODe& z!LIg2$|`=YB5_VEZqXM$1oa4d3`Zo@VNs;kkQwIvDU8l~*mT*KCjC#yH{CPQkhBMI zHZk51@bAZGJ$Q;JGXv!L(FUA-9r|HUzCS-8<DF-9(M2>fzM_Xq*Z4CDpapPR7I;;# zcqR^-!z~+rq<3300-m$E6|E%a+g(x`;>5kB8{G7dOPoseuQ6eEI)#>F64FTgl?u8( z*pFj|?8-oAFz&6oj>)Hx3Gr#7f_1Tu(jm4o;s-t4yr9|o&V(C+x28HX<F+kKh*o|3 zi5=?`oP5WRI_-!goPKU#eznvWzszskyn%QfVZ$^xu67bv=oyV>Q;0`?suZ&GJf{u+ z9V*@X2a%UM^paz=UzyB?G$u<F{tWRpe|JBfMXOB)Cj>d9q4;p;eVNZ43(`d2nho;% zY*^?GTi~Hsmb9?zE!i(WHgCi<;%2^Hy{@s3dSYMvT;U=*7UVEId=gCgR(TWnJ>hK+ ze}w>OP&LiNPiB@2fb{$g<4AiHX1DA6{jPy$MtF7`H$6tgK<Sq+io2Ld>(!bvo@~=f zDi0ygm@j+o$)0y!S`-sgd|EVI6#F#fX)P{MS57fQEnVe|jE7y|D{`zrYr-Aq+2z5u za6f|w(SIH*dtS(eGt&(UTkM~ha*dCCfP;|tW&2s@BL@OMK(YVDnk|uK`M|}qWhY@m zG*O_-IrB;=0i<b8DXEu25d0@oE7OMuqI-fG4;LYQ&q_4t(;3b;dx)6SNSHJQ#Q&sB zIAAxRX`wb=K)=h5ZBL)c7Siu<G$2IDi9J+ZgK>wzdLJ^1poDlMa7=e+nH6$GsLxbr zm`{Dv`N0fZji^1%z&=lkUW1<`Z)%+X0LPE>9dBSq&S>#F{i<ci6`T*+Dr?AvR|X7z zy)S;|ZKr(5OytsK({6^~BVLWbKp-3z$|{TGX^{2exV}jOS>`G*f9mp2xBll34t%KZ zB9z<Iw4H_=>CTe|n7~$mk=#Yh{lO{oRzy(Xt?4E@?5>gTlvwJzLGAAo>m2hSd`MUL z@Y#5O&ovI&VG9P#b6ks)uXJZq=o~s$i9jAqnC5^I=!Ca(Bk`E$5Q?pn%fqn<{wL(g zULG$tmy_Wr%t{o)ym#Ky$(%ACad#%g6`1Sg;w+e$kk?&(cVevknQX4sHP+#<)YAo- zLMQ7Re{O~ycN*)Fe$D(jOCqD>hX-r=yMmak-&qxIv9Jd^K_F|pbtmQ0%C~!xAcr&K zsrv=WAk<eKsB-HL!apcEAntuFLVn8g*%Ds@{trsgCErC5wzh<VR69QQv|01@hU7y| zX&{;YO9{N$*E!XIY!49;AWu|^_xvGT<<nFEQzdAM`oY|f%DkI#bg#$dSH{_MP9OQ` z1^>3v+M~fzlT7);?s}o=^`5_h%(cIVfTUmoCrF=tMa6qM5!3wLxZG7!wVmrG1H_-{ zqTnt<?9QWHZR2AM-OqTk8JJp|L7MQ6s}s#?OxWz6+#(ML9o?uLx?uK!4nRf|Ta>{5 zjDA=2w>0#;?ujjh>jY|`L?kHrZ3mYdZ`da#09$sx>=AX_U4lf-dqG8X@I^uf*n^>w z#kSMF>wahI@g%cKkLFb`UtkgcdE0X<RygWxyxQ#euD17ZTmBmM#tCXSu>FBeI`x9* zaF^ER3v=sqNBMl+t@3<b^R+KZE$g%IHg?#}bKUGO%8*rm$pbENQrF?I59Eo!q)nMa zN`@!m&M8fw#nFX{X6?)mM!}V<=o74|eV@fHn_BiKE*_|*$1$zYZev;nds%MQb2_YA z)ngi5VsoH_C|2hJ78n`=G2=g=d%E6qt&|{aP|G@$2aeCvOK@);B|jk;eDL56Dczzo z7A&OB>ql)Lk<i`_yb(&@U(WzyBsBgAr3@X*0Q`cQz71oK-cTfVGhXu+yCRkCH6>Ks z+l!eKg3mC1QkA$0Cklo8<_|~|02mJvD!6I30KOF&iyY-%N}p<{sZ*!f7;=>mR1X(u zW8_(h%v7#P72BDudiVSvs;hD@CbuLzR&Z6wXi|rr%X|2x0Ssv%zde8S6@B1|J=xxd z)V1o@S09v<%qJ<q6V9NKNGGm7*P$mpNZ+LCR0b&jCa~0GWVl{RdwJq*@0DpLC2S;R zG1HV-u|-0%g)#zA;FkpP7*U6=rUw<DLlHW$lLHpjq2q|ErSApW@17KS^iLRN0s0G{ zHx$u3PnfPdVSFtz_mx-{f{F-y;@w&_)<1U=(Fj^~%66<X?O+XsU43u|UW5Vy27P9) z%5u&zRpe9Gl`M#k*1r0QNxM)T{ZqPsSn?n{z*5h>z;V`E`5h<nl|<>PI^<oct)48r znOBwYg`id*q4w?X<$>&l&ew~S!@juN;Lw}C9)hQs;)n98#EPh8_OBPHC{%qcl8}(R z52)gA#kRn2<9bb3$X);n!4-N{ljE+`awSae>N$quU~Gdld(txnCRqfGW=b@`5> z9==8b=Ohb;<&s~O6bdo*)+X}a9T%v&!zRD8Z<wNkDSayw9J<ox_TAA7${E*8*oEIB zM6|QF@v}|Kl<b>}$a#p%t_8(Phtt^eGiDWrDN0kAO|0iv{+L~MouW`FKBiG<MBJNQ z{EILL&ia1oY|=lE(X!;x)XQoyX|yVL^ggPu6Q(<^uM>Be9u*F*II<kpDOOG|!PJYx zn=Y!`wr>66{JrjTe-*0&S>2mG`h24YoiVIpAfF6{!^+6Wi;~594(!~cr`&h}>SIun z7vlH<no7Ax#hGt&$+O7SFlpWLX^`8PY-H@t`PA%M>D#|gq-^KHR*IlPhNo)7yTR=s z<16Z;Pq{5uyK!p$oW}p6*@B6F^!8gpEE}EzFwFMZ?OOG0t*)Gy1YhrjD9prywu^@| z^rV8*uO`qMR**|GiS)`3hpX&?Cp}SMy)aK>&h<pXXI(LgIt7EiR&%O$Z{Q8F{K{AG z*|ShO)c@PR9W67&O_(_!&p+*3-w_zh<}V;Q#o*R7PG?_(#GT|a??7L$oHUm}_oUOm z!!3&V`uJZa=KTG{ka?y4xt%e7WHIM-z&ht7qMoOx@=BlF$gi0KJtx^2T~(8<6P5db z)D1baOQCDW8u+Pub5ynS2%`Z5v&N%YT{o<fG3SWtR~PtzcMHg)J)oxl66SxNs^9qH z)?Bd2G91huDl$QJ_I+3EeaF3<JPXZaxx=+jvkziPb-kPLbB~s}J|@o~?^O8Vryt$D zo9Ne%O;noyB2~2byaPJ19T!b|%8y!Hew6MS%KUq>rF(V?YHpI8UV~F$GYD&?c3EAD zzxz*pwc3@K33`?lbLu1f=0B62O_@y-Y5ms2rwP$b=4IBGf2(KcI#lWa#ti#46Ee@z z$-6R9ZWRG|rEj99xnFEsiqBELt1aqj)z=6aQJ?X?$d}bbY6vaM{3zW+%!cMiPQ@Z% zH=1pCxHkRGs3UUm^p(3f$~+86+3!BmODkU@9waMw_>bhL1Y}Fs6g?=CHI3*NXFi+I zdDB??TNg_Hvbj%;IHhwZEoWX%r6-ATv6mjVev{H>7g3J|;!=r4nEJ^AJa&UK-{0)N z!v&Jryh$BSHyR!q6;ep-(>W=9LdU)3f~D#z{})2VM8&nLaZyQlw=WN}Llb_MvR7bG zL+7X4wvAGiXr|5$x^EdKT<O5D?D<_K>hN-)Jkh$9XVJq$P5!tb@t^<R5_&lhoc`|l ze!BhT;AD%vnVD-I-^Pv<StdH`6=|{X%RyzDa$2~kLggLjv%xdhXV~_=Jz&+S6^ok5 zLn6r+aYv~!8s?0`Rr`_8C{$LAN!DcVj9^ufYqrP<!V=rWIRbn1SU+|;U&Qc?f~A?9 zYHH|5rcb2;QHNippG!kV_J6*aYQ$ii9Yqulrm`X{XUy|SyZlKWGd~h1ld0SKYN_YI z*9ZTo8av0edTbBB|1=BwM^{Ay*Br+I4*9+Vr{sEm8aW0k#9#JcG10PSGjTfVt+%`T zeoc&D;i;3nXNU6@=LO$JZ76hdW7MGpIWs6jVT&-|=Q{pUVrjfe=9cH&Iz*T=g*vb= z3B(EfkDr1)<hP3i*4Gvmj-{yK@;^Fkk?wr)B>+VZ)>>1?oCLF|F*R>#t3O8G`G1M; zRjY*?xlSwTNvyo{cZu(HojiV7{RyT>#m@`n^iH&(93DU<kr=;HAUmKFP5V%L*8To_ z;g3lp7Xv2K%QDM&JGec4heig7<0TNX7O|=RKoM*#k>e8aoGq!So|OnBGTG22wSZBj z1(n<dm|qH%@%-r7nR{A05>Ua0+wz_F%6PjDF{|Co=a&H#keK)-u6b4H$5H{DV!(6i zfs?gNv9vytUO62+H+LJo$+gToOsaVDH$ZxcqaKXk_tRHNpeA>tq`EvX=(fZzC9dEA zpzQ~5u+1g!i`@arv~$LOl5P?EV{&IB!E$9`mhdJI44~;*$}gwb%%G(Ruef2{Ym6_z zBc&0KIDf(|Q|V5|38c~>6>Wp9k8CYEM9rt(0e|x^u|kq+h6xIGPY=mLxGZ3ktpC9` z;R}Jx4u6G9w+{J)5KB;V8^Zh0raRDukmQQIeHBuR))o+|8rhH>vh&(K4)cm|Ni^WF z%xwN~+789SBgeZbL?-_<@DQv#0LE~O+06`%#NVw6@kDj|CdD#{2z!<PhiMmWPzQDk z>r~@U4$M1T9bHIV^_^6Q)XndZaq^pvPzJo+Be;A;7!tjcVd^u2hg63vh`JE_=Dg=T zs>dXj+gEMRUz<yZ;>y<s9_}X8kL;B@dxB)Zl>p^<d6pt!a3PeulTH0yW9E54B6*o7 z>?0qepJ>L*7l%7&rx2_7mf~&9)fDTedJ7w$2?R@cX<OFD`Deoi`aW9;dhsP97)jG; zw}9G@du=eqAD&lOa;!Q%k@dw+{Fcnn2?Z+jGWUAxqhY%wVn|%UI5j&C>+f8Bs@9#) z!ClYsW5wSiHm=~L>(Mgl`tt$kro^s3u7E)-W3qQ&UViiuoR)ib`lWq3F=5I`*+gh* zLB$1oWOQkm-N&ch$6MUAR8WwEWz8!xU4BKzE0HmAhBIzuN?%tz^y>p!s#f#6E*+WI z6abTZbJTGY^rz{o5sB1Dvda&*Ch`VJ!4wE0&d%`5Wo3jc&64r^H^~#a@@|0}-=_Y8 z&A#1$r&>nr?oadVXPwPvH{;25<7suNAe#?yn6t5;uoLxEfWv@F!sqmTGmD;;iC(Ge zlEZznFA9M!C<_vlZ?Cz3tw*6f(1X5JS;4=r7!I$NmvGi5(jCH73jZ=FeDA;F<uv(a zoH2%(2qCDaaALs{mMQ<*=g=zomLZC`tIPLcyQ?OmIYFe8HX^u$ax2)Gh}dFkV+hvC z=4FXtpxGh0h*mUQOm@C-yaMfnzOWVV-B(96>0!&N#jJam#$uXtQ+%rKlhH8<gE39b z4riesrs2O4Q%|D)DR_W*Bhx0@po}*##QwNJId~L#7l@HyPh+$Wv_t!E-Ahf%r)pc2 z<2;V;xO64lmDvEoYDTpa?~f?~Z`km6bL4LADj6D*)X|{CAW~Svj`90%GQ{66Wyvt4 zRvBTiGfNv1<G-(lhx|Ki<zo=tK*$V_6G8DoHQ$_3b9S?igfZF_L!h@{M(21!GpDIn zD9mc3P}(aeh~YMMxGW{zWaYIn#>Q!I^QsSRc|VB?Y4K7VJVOmlfz!A5mkX)C(MB^Y z8%X{6+ZirX?ony*>?^Fe0|#o7v|d3=2BH_L8>$^iq=Mi^#lTPbF*5amvE0(##|T7y zoGGyW>I|IT+oQE20CBJy!L7hnVtk>6w#V=XwuG4s^^#a^$i+PgY+GZ*uo=s)H^Mx# zIr;6zJlQTL-1e7UHaKFUS0ObMLbj1$mcb3g9+|;z1h<`Ffx!TRo($?MQLriOj4M(7 zm*8!u5VOw^8`!w8cXIiRJ+TOnKC?k&%}~|E8(egt@<6@*t`!<!?j<}#%`jwGf^C<F z5YiGlj|ZHC7iZZ;hYJeZ6+i?k47%dKB_IYF4XkJm5D{?h^wI5ZAnbrcT+tzQAv?5? zK-e%HIfe0d0^mHH1T};f{Y_GmD_na+x#;_H$i`Z5#P0YRsZzk}Y|aXzzQCGnAqst( zvDb5_*(O_Y5{$sj+kKV)FCK-_R%xC0^jrFlIUL^NUclaZS^D*I^=Qz~TJu5vLqp$a zHVxp)zhglU3A1jx5rNX4VHsODlQAmUv+Z)jLzZcHIMBDDoG%+16^50cW@#$Hx*b}` z3(cxVVWZBx0){U92BeNMV1Fl~Or!HZbJq!$W+x$Z0D!BLSz`dqPbcPxGE{N;>VXm_ zQJ1Qwh#ZR^Qocb3$K-l(w?|y2<+ADF=4ddW1EW|)*;H*;o)A(6D^ZkiKy%#{AqgoB zPC*&B4agq4K$VDTe0GG59Rx8DjT>kWlU5A5w@=%a>SN5g{}rimsHYIEJJ^uh!p(?* zXR{!JiQ>19{32HVZ00&yd_BpaGvm13m7XcT;DpFVBob?Kbz3?v+fOQH*;%C}=~P!D zv{F6#BZ1PYO*r5!i(rAvi0^f5b^Vb3!hQNIRD<RNF-klsK4>Luwa^eRX}_+vXPxZ` z%I%GSO9C1>8`F9-5#Q2$2}<dAvI_7v*Zpfpmu!Kfw;D{zJYT3yki?ZcUTY&D6Qsa7 zxl#sKB1*Vtg~Q}}!dW>mPfNgJYJac=TpZq840-BcEERJBlgl``<7Iu#T&ikb*$|$- z`JZbg+YvrKT9FS}u`+JSEk(;F+gFoa1j3A%(9L$Aw=(2-szB;nU+K}Wc{k`?`>oyd zI3_=h4AD2$P_x`5qL{^R9JdaV!7<LV?r{fZ#q}qAqc_Yaejb&*x6+gDB@?Y8K>~YP ze@O@3#TT~tN_K!Pa>Pm)KZvJ-c^9ai@0ClSnd5>eAky1#)_#U9wp_^;H<Dzew%3^! zWg0_ze6}ZaL$?62v_-WF*GwOzaGyQUXG5HE<rt9-oE6)Z$oU-+8b<~j+=V!K`TEbo z>FTT8Q}|#Gh8`AF5Sj)@H40R7%8Bpjf%j;1Cv*8B+zMXS8O%AKOexy;j1}(Vc^*AZ zMMG{BmG3-~c!jfGuqFj*$NR{WogYUO6G0SnaJ%9v-8lKyp0T(^_DB8Nw@G<b^+Oz9 z9RD4e;tUJrC7FnW{^tL%c9%hIzR};{i<cIc;#M4rYjKKuahF0VPH=aM6n81^#i6*n zyE_4bQzW=VmfwGOpLup)?5ll~xsps~GWTS1Uvtj)e6Ico)WadK=b3{PVDr4dCq~Lx za(b}|ugPc-JxsX>Agpb$h#<y1|B<6iYB6_q0B0Td%fqKR-{024R--q5=ratdFvK>8 zl<w5|7R~M~n)Qe)`JW?yvHA^9t-{a<wpsT*a7~)o+!C+En6Avl|1m(A!iT%V{bTM9 zC=0l6)dNawny!#D&fjhY&BlEVjk?K*y7@yhjn6U-lD<ri!Y<|NA}G5`$2s5NVD<N< zIsm&wuH*WkwAKEcm0c2izGu1aA^l<~HQKX+BbuipXsW~>^>oB+BwpquO6%n8eI-7P zQX3%=!@faF$=8Wn=%61r0HApwLWjS8RaDE(mgE<#s2BdX8(DELjxIncXCTTP|E(_0 zIew2cI52bbL9<O<;sj_F`CqQGYA*n14|>$5(G1dlj!$~wN`=vecLs!Qnrb_XQ>K(T zBGNrHsio}g&f(o>szrHiT8W|b`2-K%x!e5;H!bQEm%BI`gCfpd>HqoUbLNywUVfZ# zjxcm*`g8PAt3_@ufTLth%0_Rn3$xJT<nn7<w?@CS4EUw81W+vvUy0lX;B=Xm`EmT= z?*(_ufV&mI#j)&}BP~kbW>^B6-v<OlJU$uk9WA8HTxy8*s9jKf4d`KfeB|DvJ%sy2 z#(8G1d`?_>V5+^;G`ZCEhSIbJN_#^k_V2K?ttwIAxFb|j)P~XlP_%dH?!mlJ=AW)4 zwVp8ixqB*_W8XlAJ^1G#IFEWb6}~CFP<r8k8Gr#`_zmX)gL<R{FD$Zq@SI@=J1<Ia zkKWi%1WG-^mC#3kl5Sg1KqhD)p|^Z4ysao3o^$;oocI9LFe%|v5}oc@<$$4qcd3xK z;aPj|pI$I*=@mGw7Ys2BfN#S!4Oeo1p4o>5;!LB!#Z!+0Q4h*{-cLF_nkr5!D3N%Q zjz9KDlbF(x!#noL%eY~;{Apn1R9twT#=+1t3meOOMV9oI{3}ZaXEj2NzKlhcF~pob zww#{IO<P*3BGwY#y1yutvi%y~RV7c6J)_}}(dR8Dgf-oN?DtJrx3~0HTECEW+nr{F z)sS-l-9FWU`A=W!+nV%`T1051=q+Nnlt`AMxs=9m?m*O)?hs^J-`|;)#@uqh(o2NJ zVm91v*TW8%FYXVo$yzMY37zY#@{!h7Hx>kDeF`d9Hy2hmw-&l$pbC>(X^(F4?+-@( zhnnsDp*bt+Nt>SKe`c9Neb$SmnUYW1dLIx>wIrn+-Q1epBPCR7s*%>#LyC&Jm+2xt zfGw~uT2JQ}!Ln(Yi!NQOI<~XW!_k?HNO#`G6_y^?Mpmdv`d4|VPvS6KC@(ylATHJd z<FTnev1^6h&AmAcjSlY@cgdq`dpe6|)C}G2y!>U9r9IO@gM#aXpeJ+QJaRmmXYgWy zK?UO4%x_+qcIg^CmYc}+?g4G3qv$D*<jrgiPa<<6lH{T>i(!t>-kP63+qyF$kBgYo z_X&!aV4&$$V<X1hu#Q36Y0pH7Pt6nlj{G6H^~sx4IEwH}g-Wx6BHSDATg>n^PEti> zKqtRr0*M64CT)SJJOi;um_jh+8JD<SN0)+z4r3b?>fA%7+_s-qr)-?-Y}us-BX0K{ z|GdW_KRQkVEPm^wgQvjz1J<N)4Es7l@fq`(J33b{FHhxfUr}*sQxMDJA2mvu-S{S- zc7UA5UW*OW(@`^(+1!DaS6`3d3@Vo&1t<VjC_N1x7zz*O0=WW9Av5egDKzpbGg&IP zPdn};er{Eq?g2`l7PhjKfn28UQ=HEEI^lE;^EMrg&%?#&iX>@`aUw<5K^UplbZM#T zpLTCG45ZymP9594syi^z*qSoDqRX||ZBsvwOJA_KrnI{WxI_5n9(#_X07Wa(4+dyk z#NF(qlpA%dJc&BSWy8zO!Skqm!M`ybYdW=$y62`+TYelwapRGIqW+!=N=2};#_<qR ztT-qwU1zc4K%b^P$CFHxv4EtQE2wM0LJ%N&I8Z(U5Fc(g;RvWt0sCmEts@*#8n$@z zWNhdRge}7g>Fwq914U>ia?q<b4t^L{HC(8gZBYuGIsW*T)BC_5c6mMyk1J;RD*Iv% zSv@<HtIA?2^5Y6%D)ReH1?ZxHIDxIiS0m6i%=F*SHFA??cw>8t3r1`yTD2E-A^=XP zjysn5^PR}wxVBI%Eb9(B7$xwQLThB`0U7}&Vmfp!1~1z31U~K2Ogfl*T^m+ao?Hj{ zS<IJ<U~Cys&xF=kc*yWO)IQHrpgxu{Wibc=ZHsx?!Or1q6m83E+s000U=V9r2L25V zYL-zJCk-0;?k=}5XP4Eoy?0uiF~cRWRj;t;g}B8yKj)Ce>&P$%O~|@fH4ESlzR)~5 zZpOR-sBBzN#T`~+X1jJ|e(|b)DPC|CnR(t*2gv+L6VG;EaMhf<ktGv7+VskG*`2Ey z+}LBX3Ll%*yA<;iqQX>bRNf?wy=*#mItZj84d7>nzs8pQ_lh3a`J?-{T_QY2ElmWo zOL`QAqSlUQ--q6P5Zbo4gA?_wQ4PqbJ{3y7hSG<c5hhN|sxCO%oJTz16myS6D$$fg z*uq;UT^oZ31a2MUfhhBLUF=Txq9CL2lN#BD&(+^I9*_6rJjY#bTPMC5DVeozyB%;Y zmkmC=^|~vsWbfR2IdgD(_<Y@Gdcd3C(BYb&Y?_in{9HtQ%j(^pE{AnlsAmize&gFQ zd}a5V9oDMpN%8pCLx~Be54+@3xbvh9-j*xcEl~cxtV4KHZ#|hwx&WHH3bSDvGUdao zU@Y8KE%|-kVc60BnsVM6B70B72RtS}wst)4a67lH_stKqxe2pFnnI!&>Na<^3Uu{U zb6w^9jl@-_&@`-#pvIupJJGvs#tAt{=+f_?bh-O>rn&PkCEX2@HTP&h^(Qn-;)5s^ z8g@m%Wb^d3afAhl>F&<2$C}tu<G+}GwK1h<%BQonQNumivy`oIHJm0?wC3DBx}jar zFHyfBe6K+&7;o!KAJ2|GQvE=$$V;Ccjj^~F1%{$HvDI$Z`HRxQt{(6rO;_ON+@$G3 z2TM$PSxHQHey#M2sI<v~|8G!%V_iVxN->Ca9MZ^QVe9{mWaURk4Q@Z{Ez0lmCzj6A z6+=KPbqvD%*3;5IU7t?XF4H&wi+sWGe+8kj)m<EaL$l)G0__w0N}`qtpQ7)<ckZ`6 z$}x?-Lb!!1*H3MUJ{5oJ3xhl*ZhzqDkX9sN(h@mON90=)QE#zsnq@dGvLSL<?h+mM z$fqmXJfcKy@kc6rUUCSva%=76yF!F|$_u#6Q4RYoI)ql-M!qM=lM|#|6Eupk79Rm8 z03h~QhC4~M+)I*+{TvdHMj>8RMU!f=5gSJV{h@-ThF2Ksw*p@T&2L=a4gkVWTK#$c zm~O{2bj6+620^G)_FTLn+^MXUmNcaJ<L><;v)H0zYng%JLSuvJzgVyxr7+}=aPDGF zQ{{t{FBcayX=a=Z^Sj(jIAX*0yLrj}`JbppKG5f(4PN|&tQY5Qnx8^Km#isXL&)4B zBXYMaULy&@logd<eUup8!&FD>joQC}R!B?``3$^~Z2jWs)4fjIo1$!f{R)QDy)dG| z^2!P>h#p^3QuqW)!ug0c!<Z6UiCnX!Q?A~~9O|)f7^z@G0A_Grm)97HERI<EK$eUR z8IA3pWiSiha30}f+1RfFFvDtqjU9kxY1qvLIO;Y{=jm|;Re|_pwcS8$tFQ51$58F6 zCFBeuJ=xoC#*8H{K8ioH92lq2`bPq2+M>sdztm{BUuZ|GIj}pUKM5=pY5`g%cCq|q z32n&4iUA~T6I)(<ITHli0xUx5CB;1GKn|C#0`3Mm(H@y$s=;&#pi#7+rMFH(N7N=? zfSa}n%+NLKG102~uSg{l+;FWYchh~phTgM?s*6yB41k|^JxK(1css8>>A6ku`1%tf z#81b8aZdkm5kUE-lI;=AG@%#i81(pqcRtLO3E)CDI&`<;$8yP~9uV-$h4tror^Ivp zqkq<D1Nt7rJSSB)&w<f+R`q!>{Fp5`%X`BO-!H&><;GpVrc<EHf{^lQflLT<DNVoj zz?mYkF%5|O2poRBx#|@d2i7t*toZzjMZWmC&i81HgZ2Gy-(~ne%-n6RUDUvvlEod* zfu1<jc*{04+ZFcvFM_yZ9`)FNTcUkw=GnKOHEfAqc1+beR@E;2CA%;8xGAqdV<2uA zHM`ihTh_Hd$YK0pt7$YH{6W5l3=CAeC`h>rJmz15Qy;xt80<$sVkNzpCBQ_p<J*an z8pn)T1xjMD`=3p+T$0ZQBVe>404W-w+J9xOZtGek8}VOO4{twu{@E*eJ}}NpRXN2S zZ4tvx_7y=2RF!^mz2Uzu`)ebb%M%!v=*#{3n#|M9^2TW1_~Fa<X^1zIyg(*c{GZ&6 z;djUe7v)hVAo!w*dV3+jO@tK$jJrO{<k%CIy3iLFVu9ZM+ew4RHjNU2b8aSjTn1e) z_)~>v{BTW`5-ylP089ws#J3|Pxc<HARgvdwc~&6ruPt$-q+l9%tg;~+AIALcnaESv z<6>7$vHR9H_f?#>7VZ2if-@mTvEtg};j$CM+N&=8xfZctF_0)1TK9uXml55A#ufBq zpj@WxZ`cOH(=wpU6qb6wl<5jfA3Oi}pcqt^bJKAu2V@|Dd&E?FA4Wg=jGi;J2+&jc zprvC2DqcIrmx<KIJ*Vl=w16=vr_0FX|CIS8POs(V#0OCh=g2Hj+B3uIUl8FG|9WIE z-n6ZZ`G1ORNdSqezSjG;sUOg#E<SI5`?APE`*0BcX+H-&CiEd=SW+6L)i1F3`++;b zAWAtg|NAck685(dOP>^~H7YZOmV7X6JKKPmNtnT;E@%SgL_Kf%r#Vl5?9|=_(Ws9W z!#sKNZ}1kNT058D;jCl+GFM%O?sbks4N8BDoO}-BX^rDqjf2_scRV{6Qhwxn6Jngc z@qDdCemK5<yXVi>rk4DI(dK2vQa*!8^E?t7n74slK>8VGB^<m-l=W7Ql+ahol)MbI zLjRL>=`nrWpZ@<UL89X2MnqX#XOhaauf~fzYJ&i%utwT2EmFs*FQvHq?)%;R#nrH? zux3;Qzs-T_$~l!R!bTLupK~9G%Xd_fIE_Il8GD&#AN%MKlG!*F`glV+kSCRcJ|iA7 z^nO9C7VM5Rs}Cwc)%%8^xygqdgY6!)jGG@A8lr;eMX>S7jJ9tJvAHzJ7&-gH$(l;S zhZRx8`_dpNa=Y>ax_szm00NpuFAd_f=C!$}A}J-cgoy83O1jlg-4qOh3_Epi4u_l( zgwa)TvR~6Cajb$lZ`cq8XKoM;@bl%JO!{OHH=8|i+}^cjztKe(BD@vc!3_}$2|!p8 z*-^*#5<z$-%ox69L~#NJWCoSF1eKu^AMt4SHXuhH@gdg|UA;#J;9b2(+|GUjAiQcu z_9_eVr0?}b&(*r>Cb;S&=!G7AMxatapnCXuM3C{k&WP+cj*zE*rLQ)7B1U`s=pF(j z=mm-u?3jcAKR*5q0^(f>Bb(y(LSPj^wT3&D@49V*YxS-ln}aR|cRJn$a3Hur0IZL> zNZqwNXz2MM+A4-en!Y@}od`r&5gJ6kH=g2(2octRAo!019k%`^kU8imsE6i}0})n< z@|}G041f-sMuO?|0^dLOyoIUvsu4i&`))owG9tivP#|51jsx(IJ2D~g0|btDk3d96 z6l#8OsP1byv4?3D|4Rjw?Dx@tDa94&IGx@7_O>qVa{Qn&ZI|#JxK)Beb*uA)|ILrU zlm@_ezP<b9V4Z36{H99{=O8ImgO^&T(UMBh^C5OD=JV*66Zq`5i+mt&B{wtE4NEnD zz|#lm^L8|Som}!ien<a6GziS$1k!0VGMR&a{802mI~0x7CqktHDBtUjxixiG`A-Y) zfm3vbEsDH_ww(wsv7Spou^QmvSpkYmRl@ilXOVWwDi!V$?#W{>7qiUk9^gket^k42 z#J`6x2uj_<m#9x#%YNe4V=Iqa)DPpoFC#uZk@k?~{vLf@vOURmHyGyoq~mc#9;Uk` zyac#A;oHbzi41$#3~1(i^y769-1<xGLM3FMv%TIe=IZrlgmh!GbW%;q=i#dbuT#8N z(VTst344$tIdR=%{`w;QOuFgC=TD{MC7zuq#z>j=wziAJ4|MQrGnPkQ#+S`KRYRMZ zhFq01<h3a#_jYH){*wa*tAye=eS`7&AaulG8Jel6;noj-HvAF$Q;`nq`0_i0{>nq| z5rD~GFqlRx^_v2|TZ=jW_~=|2tT+}=4E`5&5x~Mng<#gnHyE5eSU<!96THqVyz(jZ z$DiX)w9fpr`SdZyv~(RqooDT>*I%C4$DlGn!LykliQLZEZky+)?{6)|T>mtK1D-bV z&U7@oZ+@kP?X!RM<Z4r5nno;iF5fwKi4@yuOxn~=`GHcRU+vYE1{qzsyLAZ74-}f~ z`Q;T1SKsak8~>X+{#TUAw_q&M5e@lz^hA2Y(d8k*7kjQf`goOfyd{0_Uzy;82Du6D zxQM!}@7MjCH*MG&>ryHAb@IL$o0x+UMPJ*twTM|x14QPyqfcLc7Ipsl>#H#f<~#^g zEEZR}^Uk&wvM4~`c==pdj)LgA3u1=pRLH$XsVkt~g-x-0Rbf{K+QLhG<7V~Hd`L<3 zyhBlIiH9k1;kcjdPAl?U^FX7^M&Io!RvXaF^b5(3JTBEj;rP^n#^wpmd9wVBeIf3X zJIa^O91m?D!L3=3tEvZ=Y`ccax6|}Se^^4#i?R3o32bP!;p2+NqO94=Kc8KNx((*E zWS0vZD2AF@4|cT~(Qrkl`t=Jr+$w+CTH;&`w!io|{%N&MQ*AnP!mXXG6SiM;GwSfF zuUws9+uE+(TXhnUbsnKC&|GIHb8F>p5L1f~X!E|#uKt9H6o02!O+>=z!twY#lw0GW zw3{;KemNO|M~m-O)`;!a<!5yBrR$dX;^D=x_TGb;$AqfO^2*LuSu57<Yigl;_~cs| zn$mwMCHG+pqUxF7S6)9Ws!pa!VX?bC3)`b*GnUzMPW|S1+0K#eM9|CE&#VNzHxc^! zkE)k_eeFX7jVRWnC3!4EKGzmZk2_L;(70JGleDxtQXVxr98Ye-BlRl@TCFts5^!Vb zvr|=VQ^Sj1Il+&(A4&6OHTVm=^$NxTY`@sLQTroIdr5zg<jydOd?q|JH+>CVY+U<N zszH(W)s6}=Vm3NVY8C%r1O^%i_*?c0m-6#%;bOte3+pC4N5bhSww5$gp#b5QiMGZR z5C8U@864tS@dfo>k@qH4Z<E{!=nB?ymX7Sh?7!5zw^<qB%#25RNmD;G7qCMEXv+tt zP-mk0Sx)WAm>i}E!#}HI^pt1yZ^nd?=^PqxrkvnqC>DMSHdNx4esEA0p(?Ca$vl{5 zfkOWN2<L7&pNiSlT7do2BbZ`tKGj04muegTU~^k^`w~@nvZ7+?9*crrS~KwOl6_n7 zkF1+=?Y4I%F=4qDlNu7Wfhm1mOH=I~%QpkmIRhPzh9!Gt5}k^6v|m_KA{LBG-~<!P zMj@Rt)}q}Tf*cdRUtTF~HXF}6;&2FxN<6nzmuf`quW&o5VbeNrlL$T_er7Pd)l_Z6 zU`1%$k)??HTeZrz-<DPjcNe#F_05aBCWWnEcg^IACB}x%NQNrOkm@N}UgP3!nZ1J= z$%v}G#kk%*qnlSq{l7_vPh)Iv{E(e*))Gf3LXW;f$S;YtuJCf>>+?!xY$*BiT`ycj zZ$6u_QSvd(mPXGsBb$m(1D~3B0(O2~e1g0?`j%pDHu!Bn32U&HyMMSBj(!i^)pe#y z1>bZ+Wy3$QJPgR9ABtmhNlMQbEHRGt=<ngjutk&!cDn3IiLZG)Vnm=FU<rvoD>Odo z-`^A@a`cQGj9&6mxFy^`7hku)pr+9l3G+9DN`TS8T&SO3#t(_Yk$P{5XNhW5I_v=G z?@w}ZkY{oby@_8il!?7ugpWlUAH_h>EPHH!{$@QD>B%M-9{sOO$)cwZ#=Jj`(GC9) zn3q@(_gm((;zhcxv0S&?RMh<4MoaxUBzzwb=WrxI!XaKH#)y=6DEo9P%$I%JGkH7B z;3;|4RrrSs7@udF2EL)>@qcRO9B-*zP5_whUQg4e=P8*=U(8c)3kXt@Og(>iNq++0 z3A|p<jT3=ia;8=g$mENn%fZd2dF*wh-Bc)8SE^MOp^3(I=jjWn2nra3*U^^M;_s>i zCzjhC{yL=bp20;Rx_zfIp_?OVo9%eFE#$2Hgy9jwEgE*dN<g|&Ks{fnQqrJGBjQkA zB`kpM$1jqthAL9Nyi{VER}x!dpk^nc6%pnx5DIYrP-l$J&m2&HovsBjUt%g>9U3>O z+Tl}tGm`$!gq(q}_qIt7Q<Iw4?BloJh}~Z{K1rBVTl)M!->Gc8A^0SZK7qViGi9qs z`^LLVwbv&k7O@n6w6dY}tbT(qWBwecZUX5Zy>$ig+K1)Hrajy?gck8Jipi8vOp&@a z>C`SCPx-)KzLyy(<0_jl-$qDo_TvslpLfW6#C3{ZU1bhDC(_}8M~=_=Qg0T<brtD> zZW|JMO4PMwCJJx-W0%~G34?2k8+uINfM)#@@@>Or5l<V(49QmeoO<_%NLBMQg6^oi z5r@JsJwB0hs(s<iyw3kVk2%zuK_hypuNseZVz0;(0*f!^t!ns%l(4u)F4Jfh{2(RR z%WYi5T<eU}ZCDq5ok4v)Aj0sjGntuVkSol35aL-0DWl&Pr}(lZP%aP^i!Km`jgL8n zV{hQ`6{7zUo2=*T*Rb3l3|Hp7C*&Js_QAO$1z}3ny^se&g78M;QUEbF(U21LqQ8;s z6C2?zTXAEn#IU3p%3SpOIc%J+%0K_?-p&~GH~c<skDjl_hrp?&W3wFdy|S3jWm#^1 z;99*OT9b8d*2q4`IUV7T7O4;Y_cI^U+~30Yi50E(>&V>$4e_i8ZteZoPG5rBdt6Lk zn(QDCjm@5*d`!+<{e4ILMsxAUchYxknG6AEZ=h(uY9k^q|1iFA4927VN~4vY_|^v` zA`FaI-^9mh*1Q#$wu#p?_&36Q%aR;3I(++ZTDUvm-l_txFK-BZT3Qb7o|dEes|a}= z)A`Ga%R)b<7p}NgpR_xw5$<)|4KX)8(=K7Pnp{k2oA)p(Pisxw^`9S`nvz7HTXmwd z)BT|Mja!H2zlVSlPJJ3H>vD*34(=8+Hlf_nuk>o-n)^~WN*a;zi?e@egEk)1esz_r z>!$XOcIT(IxxV$TX1gDK{#8GjTbW9`N*tECF&x?XEYgHp=WVSBzX)?!Hz{)H{>Z;2 zyTd)U;+0hF;c_WX_mm-7{CNHjLv(8hDQ9aanWbw!S)^n>&=9ncghX<0j##ZI<MK01 z0LV3G)?c<r@4g0?Sc#pt!_c*A*Im0M&N7%P+NNr?ose$R(2t45Q(UV1BC*w6%~GmC zkzLNEP$C}6ZmO)Sc5)p%Qv_{akEfXy_+%4n6t}yLD@g(BoR^8gWK#UhX-~_lHAs>c z87miczOsH>M;p=Kj~8b9gFrjEw49{ks7o@nR=qU(pN<~Uu?$k7>;dW9=Ys1Emc`Y2 zn!cq_fQAUROn<y>IBQd1d>bmAW`JV#tPoQ?yGl4)!F8bynyx|UuEC$BzaQq;L%7w8 z$Xmrclu|`HSLT-&Qj<CqsnpL10~K9$Pe{V29C?VJ8@y|tVya_Vm%e13CgdK$^mON< z!@p!)Cs#zFhV`#LRuG`xP@2ZNg;)_S))X67Fot{^);Nu-kCspr<vhbjnG=Y6iAtA8 zv?wrOrWls>bvMDUNqhEjB>&Vb>qGaI6}+3K!H$tWR^8QQ98Z$)%<CJfQ|SJ-7Q3cw zcZM%A)L>5-wfa(jFU*q6I+m>^aG#XfUv@M+xUxF__rfGM?s4J@qhB~O82X2mN(!=~ ze`OuJa>)#j_a`NSX;^0n8808Q&L(9wUA*J{ROewh1~<M3-EV@Z?>D#uauu!o66C#f zT*P8=Rw`Wo?I<Y(rY9$vo5%oSZ!g5g0+vU}Nd4fVFtPrGk`eZnpL-7^L-KF6Z}z#^ z%5$}~7Gx#={QV)+%{IH2v9$X0dH&(?#Y^3FfExA=VfofiJ$dp3JsAGd0<rD>BA06` z8)LPqBL7_Cs1Bm8h~mZk$RbCWiYx}ZVS}fTPnee9P<)frA5#323B^4UMcPwo=sep& zv~K9ye6#OLpv=kocNznt@|UJ~vEE#?)dfh3VO%PM2oU}0qwV)WIX*32;1h!s0%Wq` zlPN`5!*QD=_<h7jw%>e_=B{hJgiJZa<2}1;>a0?{5-^H8tgtfGpo8>h5+@Z`9iy1C zv=1fvJ+Zgstcn*Jz^SsDL*jAcFcVD~U2l&aIR5<%zFU1ghN#XY-E%8;eqJ>>k8u@5 zO#BLtHq)$Mz^VonJnWEz<&~?$0$D~x`P&nB)A@nohu4!~kr$>ip1ue_eY`Y!9O|ih zSk7IY;~?fxi3O7)*zJeSgs5-om7*j9SMFbOY`KOsD{p&7KN8pNS}ye>I#^rC`g|nQ z)A9R`GOSSnAJo%*(jKIGo#fOR9H-vO<AN<QpXle%ii#zRTqG~i!D&Uuuo*=>gW*|5 zpTt&tkRa?UoNs5mBHnK{&@8s)NAo=YVLH$H3|s&&A%bSK{f<mFojz3Eywp#t<zSYr z$CJf{ShRo^)vuT-YE)gj?oYyL*H>&hYXltf!(Z+Zmq<7cMV?pUU+>e572`FDSCbmo z!BnhI5(gRvq4~Zdt8B2kl02+&q?Z#q#ThxyRoyyFa{PnCDM5WuMaI27fg8~uRqurw z&#ul4E6W2uL~(##xC|Jor@Gnseks}zJkj{(uD+T!Q0h}cDpvCMV4DusV1BA06X-f9 z@_Xx6RtO?M^^BtT-~*Jc9zw3hA`JW%y!%cMtlxcZ?E_9a>H#A%2$@A8lvdont=hC5 z4{Q%2LG*%Up9HNT8bNZAJW6b;MMUKgHfXu$y5%K!5MGl15wH=|We25J>Aus;c~iy2 zo?55NvTBV$B`hP1>_qZ;CI`8LFvE*}`?Y{+-5@@ugUf0MOn*bJwm@r>^bUxIu2=Aa zfDpmvq%|bv#O%R3T1af9A7~y}hYs2w{=HJr*{xLnBc>dW?rlM*Hu|E0dY%+CVS%1p zj2^wO+Xgq}v+)Ow>u37vx}@R5^q+NjHcEIpA2d=pSTFTw_3|&9cI4Q?d}{azCD*%+ z0@OZ8Zw{M3-2InL$~eWr&#E_LH+SgD{&N;&T@Au8QfvAN44-W&z_}2~N||Vit>ib- z22K9rfrn7Xk4LvzXo*0=iyq0J0~t$55Oz=f1P{bj_r-&+b_7!Nb|RZ{uRu>@me1jA zfOq~@evxO6{h<fhvS3b_TOoz+JHhq(NU+%3rc(Fr5xnayj`8Ny`47yZ^NTg}H!Uxb zACx0><qwl4oI8#;`1{CIHt@|#9mICK^1SL39{)yOQLCj9Uv>3`07$@AX*5&5BBz!$ zA>RE%LWZht*Gj9bG>iZ8Fy>b3*P<-Tp+pQUK6SBvD2SMlCFvQT!dJVD!)VC<BkXF5 zsIgy5POx6ZkE*bR?Kg%ulu5?queh}cJOL3KHo{*|Q3%C)8m;6QjCCk)9B1jd7s++v z5qGBlRhd;oty&eExi>B(0rUG%=zmDLXK8bwEhr1D>niwo)ji)5J2>J?vmE|zqIW9} z4ENVE-JAh$l)v%(3`C+AiNI)mDDD+aG_psNi-bv?zBt##5r%zGGT98gojBxn@I=hX zxM%ta;_p#}B|LgWb?1azcjQQeojUDk9z=G<7`=Sb=3Cy88vYt?#)}2$@;2kfo)`Mb zD6JoTvf=o3?XEW;u$^?z?LX3}E1g;U4(75(7g*0`4)66?FsxX{Pr(A1?`CY~1x3I? zv7fRhz5)vu|6h1n#FYo$H57GD#lRpeu((lo&@=5Sx3uxUD(k+O%!Nw-uMfB_c$am4 zwVw)P$wivoP=MpmoU>Nm79uBd5Mkl|z<0F(^Ou0wx4wMf1Dn0~J!v!U&&nqoE_LyI z>7jxLLb4MR7BX#Kj?gx|xDFa2$Fy$knoRTc6@15Bz+A`y!!um=os?Kt+t0Ivy@f20 zUqzOTU%&f`6iyt{>O(-{>A3^Wx$kJa=hszXn)QeJIG{?W4>tJJ*enNd>KNpkyYm!O z!ZmqmrDT(*W0P0XC|*0?j5l>jpWBn{b=!>>*TPEK74J28@P*P{^424Z{ph7UTQE@h zW58H5RMJIU`XYkHdV>nbTZHjif_z4OGhSmeUSbw5rW5r-5q0AnbyG=jr2B`m=lvWw z`>0ASr5~oX3nwUn(ji-%Gcx6=rSHL-#*bE*F07dHdV-IA_Dmvcs-tmgs>RjZuRgzh zS+ruV<wzknnJ6Gsg}`NkA6l4T>3?9|@^1blA?}YTZ<pmw3)?}B#7C9VFDqkEROB;W zdm>=*wI3Uk8k7zRn9vPK&8AJ`_8=aAq);CQ;Kym?EQ(7A20px|Pb67rVdC%RvQh&j zPI}aAy5$-Pm?79GY~saN4mdef3Nm%}sSQ#1?KJ4~L~MK{EF}!|a85PmD3!35SLAmQ zPi=v#bKK8?sN>@6t=6@|FVh?EV)|_+-GDg1JIrvd4-gCO&Tk|W7NC`!+=Iq0%qk!w z#SfPB(w5t-oiWDRXK;1AB-4uYjEjm(&N0J(=tAN)$%V7I_~+fh?X^oK7;_Y?yruA@ zto-VP1;VZbovQO&xda+K5gqsEB0gz~*y=P|pZ~lT3M)CcvB7<sJiP4x?htdxG92_d z3d@*Le`Jz5&CB)V#ckY5=&39z@RY63^sR9%|C#!>cUvQ7B&?$ReZCO?U{>vh)|X6o z2s4RyOYdMbU8l`3p}R)@#x$~M4U<Yvm{8{&dH3-LVm_A-m5?-RF(q{9@c|p#&_#1i zE-cBltAyU5xTK|!DXrvNn<NR7$E8Zw3XboLr08tjmxxL<Lh}cdC8W1Lr&;;>Am<*R z#Aq~yEo2*wcy__OIX$h4%!`jEp>50Jvwk$Kq?-1C?$s67rnaVzr_txb-1q6x4oDNC zkv<5U*xaqe<&EdpX5Wjs#yS^^Fie`sZ1u<Zf2%ZBqS3ekO-r6CDBUC7-`vR$kW+{S zTzMt6-&A^1^K$5%{rzJ_Vcz+5MrgBqV95fjX@5w=a6?<C5VbmX-AEzJr}N9oNJb+s zwd&o@5NWJb&6yvn++DA<eg9W%<-z9x45xSt9{m0+8g0?Fd&Oq3g+p2w%{(6~>BXkS zm|H`iU8iRnKKPFS#j>S?Fazn5FLr0Qe#Jet_Y9KuQjSqzc?84!ym!a((dC){#=PGZ zmH4$iEBo)oGZLRmb*lpA<(>~hS7xp4iVczn_*pBdm^H#~t!D+%8(ewOmt>X3I~8(5 zZo+GV@=#FowS?&7?moh>E_RUh+B`#P#CN5v5@0$z_ER6~!~<azY>J_KZP~H;m2Mh| z0eZ%afBiodtv18do;WDOXC1sQvt28VXS&YSn#BRGb_&NfOn=Ana(4Qu(=`&6*WQ|_ zYKFDP+7c_Y`2<#z+d2pJ?>N1zto(QRJC`EO3wJGPbVSbzODOwgn|$Qg`FNgf{HdNm zRrCJk1TZJftAjg@wR%=zp<yHGl2^CG<7z}FuN$(aNiW*%vF6#j9zg>&dY|)YCjOYt zPRLHaMSXiG-`A70-L-h3^}%Vjjpuz}Lyc>`$2q@Uk4K#D>m)>X6qu24i*H9s<s}uV z7U0_eX0!9Hw51Fz2REU*F~*vfkLL(<Exn%oLCtY_{W^PJO(UK(JfsXtMhm=V&#UhV zUKh}v5I}-ar1|Ce^+Mx)erd-0KD+{TE3zQQ^Yk<(IQIdN8Hxpaj9ZBQ1g<c+^xE%O zWHjA)_Q6?>h)w|t!dAO|M=Lw;<9B-E{@99ezY4&nRZH!F@@ujeak?2-1FYVIJ?G)i z*mSAyUv7lto`T#kEg^S5o>_LsmA@%(7f#|F(%}COebw^Uw|1gkccJ3n_Q*6->Xxr@ z+AosvB&OtzJ@x@H6_Ab`iA$-dI)BTQ%1hVp`}0t_4%Yw~1CJno^1-W|xhoPOKV4p< zGXz<;)P>m#p_f$(OwZF$3yA34<4dgHChq*V{675}-bNsjM?h$q5f1ntidEJ|Ip{Ka z7+5lJiSm$9N2L)9FtHlpUnzq;lrV{ZrBWWp25(>XW)%WRC*mKmrNM*C1!!AOkJsL{ zQ7torRAl1HZd4&|{;$)m$F6C*w^T8uT{9YJ+VOlsHI-cysI?xrX999~{qbM!&fjUA zem8sFv>XfNhOpyu2y{_grMR!oTac&*xyH1brau)}LyARrunxrYA!x?Fc~!ol^Op(q z+eo=~US*RtuOgF5%SqK*f||DP9}MnyM<i*F0fGl6f7X2j_ed^}l?outkA)L~lV6UU zm7XRZC{dNtjGlAk*C-tx3MjA3#SbGwyOVuBr9?eqLWgRi<E{$2{Bu?e(Tu_;{+nE6 zyZ`)A@WPy~O`8|ZVd5mC{I|;_K>kYrn#j#W@o9SSc7(P_*7I*&SNx}J4;69#m4wUh zGcJqLjc|Y&>1WVF99pFj$@8!6clOuzJyv+(N@Vb9pTn~BDl6p^@+Wu|)zI4Mo$|Pc zQ8Mi9QYFjdeeEkO#pXSmx#B`nk!NauFe%iN-Oxxi%~<<1)I#oKB3=gR2BqfC*gq|u zTI;O5^s$^lJLz)+O!kAW&%j)NwW==J{|5J`EUnnm$X%9laK2c#_?bLYJU#s_nZi@+ zadGZzSo`kpzTY{RS18h58@D=MUir}ZD<Iy**QOQ35&NV4|DvQG#@opi*1Jlo84bm+ z_?XWsgTEOKOSp8{J?v|;Pf(*#EZJUvuLgi_@9`=C8)LBZ8bGZLNA=mpjJl#PUN$J; z`|p9rvO+LX`><#XobxgMg&6+I76yXKf1VZZ#uWL*fsNHJm+}8Jpav}B=1^`Vb~?tY zPG*>v;wRGSULTP^t_0@ZZR26~h^xV9VK<H<+l(32>LLc6L}!6Sh2T2{vnuf>8IW&I zXV$TO{9c>Vk!DP|ov?;B@FV}68}2_>^l;Ota3VrX!};d&IO|85FhDH_hcNzeH#w$S zXP4iQ@pQHRa%p7Cgz>h2_d(b1uiF>aUjOdh)p(71GK$rXXbo$>5edJBpoFM6e(Xzf ztRBVBU%qNh^1R*KW$s!H9IjXSw5-^?m<qdk!(wP^<h}z+&0KZjziW7GRJd?r13wpt zI#C#Z>lE{4%>?q*wU}NRS^O^s3cB;kKp|A8CfSL5Va(r!j(q$2EV-`xR^yKB!Okvw zu(|2@nuIdB|K{{Z_g3Zd)_58Re<mYj+;@rZT+vUheZj#QED6&7@oPN(eGf5&N)|o= zE*8D(<90_mtp^byt13ObJjlftoxq@TAh(03*EPkf)CAyJJLL2i)*7Z#UYLJ0jrAY6 z^Ad=<YW(sS-H87=%$$Ur2+XBTjty4VBFC<eE4Hy23<fc=i?3>(%8#QFVw9=FK+IF0 z62oIdKb1l_G0E&CQSAL7VAU%gESUoikeK7BMGJjAx>jy=3gtu$Hq~_z#NOIIYX|fC zgrJR)`t^3^tQHXkj{o}_;1|ztE~MI0`mJO>@s-b0i?8%Q?{wszi2B~ivx4h&20`>V zi^)X``&ozYu;)#Eo5--~-J3dBtlq~{?d=SgdY@F!uSdv}rd`j5OPfKDMzzQ*K5@N} zCDuW{OxAacwLj6PcU@vQaC%lT+D6E^jD~0CM4sh`mF$+j{bS^rwO9q>JiZ1JzPe;l zoBuG19?m(>TNrCwx|O$K>y`?Cq&{|}^OVLBOMLnQ?jWRUSAiDAQIc7R!~p*bRbW9^ z16utXw=pJc{>N2HD4kw&Yss#qkKun)MnW5;62h1X^Y~w^Qtx*bzo@rz|2M2eJ?RIx z<D)RNaa{z2k8(}_tr>({9^B`l!q;#{c)_u;0IfJ0(jm+7;j0V_!4l@cm2lnw(me|# zQo;d}b+hpQk(87ZERbrW|C5xI6*Y(KuaYqbR9_*bv*uSwDd&HOlsFo8jVP0y{FyNQ zV*dwH67u_BkP_P~q!en?xo!NvK}wjKD*rpAMB2nMKtpM_$o$$HELvVni2SBP28u8k zm|obmRWWcyq78SiS(uIdmUCw5G*}0#9>0qGCYm+&Mj^QSW|eW--Bq*ZtaQcNSa<j= z5x)3pbuID04@nP9`;^YsGyeg8I*E$D+w%`v={BDdHmvbRD74cxK_dFY1}5d4`W@gE zXZbMdsmOM1DdI~&nf9Iwqa4pmMYq;01?iUbMirq`HPKEu?W`_uf?J_PrmmU_<-38V zy0MDRxmUqv-mm*kz2-SY(LEm70~^6>mV|q?;70uSZu>)qpXV@jMt=+##wrrwty6Zg zaoJ<*a>pg2UTcu7dgtQ3HhZLm3_NCwAUbyh!9@ZHBivosWT0R)Q0#R0QDUQI#e1s1 z7s;*}NLG6T!u;9t4_+=KiP8Q=5+g^)Wqdzm0yuveSu!1}PSuW$i_6SCHhkpBcZb-r z!;vG$bxXgrMp$+}`jfUz?Z1ZAWO1z6%6g(VPxhxj{+Cb-c|7|Jv%dnE5(i>QZ=4vZ zivjsle?|<<<xtHUj(|TTC>;?KKCPR(q$2|bt{=ko3lWf;h_>kN3$soFEiZ~c*T=-q z2qy&C12J(f8l3#Z6z+H>e}dZH)UG&lL}E+768`V{KezrGXI!XLwiNm~93rRDDNJo| zmC+(X^tvY?JFW1TX_Abn6irFTMI10;`5~`(?r$#pb8*}1YYaZ|z1EF;>n5CT42<cv zyl5SqFs8-eU?8sbOflxk3X(+nd4{z;6Zz}Kv8nsdt<oo+T4>rP-47v&Dh}4a+-==t zir!fG;9^MP0tS&&1d42VBe%cQuscbuXc|hR!#A<2w-Cd%_;CEi)&}Dk;mW(#2EiSR zZ=}*Q`pzQR3Y{Rhym(%lDqT0&D+sco1{t`%BIXU*+osuz``FpaAh|TGF!(-O$q6=G zZ}q8!46R_(2Jt{V(JZNV%+58t3|ntcE$nL=Z_f3=lRafBfZ-q(*rM@tg<GkwRqAky zIT46c_?LNDU?m6;*DsJa&m|UXk%%zzCCmanRd@atY3RK@E0r$9Sn@ILXcE5$4HAED zMi@5XQ<0{oH(XnJT~*>`=Q6F7ZYAoUY{Oq6B(JDheCes#?$O_n>a+u=_>gT>)}gr7 zV7BY7A?C}J%bbS?ct2|Td4vbXMxYA<$~lw3yKX7qz{?%R`C3X=B?AG$*mUAoABltu zoUk>#c<?_y(x^fb>`k%P;@2@#d@8>Ge59gq#p&PCxG8i{gs<_ZWVcA!vho;5Pnk<C zsq{NWF~!u|pJW3NAT@#?11vFG8Dup%shWC5mxvMebccOhxe7zPQq_S*vAEO$mIPj3 zV=BzLK{R<Dd1l03@o}{nNF&3zmc)<1lsUprJxNydah~k7Lkb6f5b{j$Wc3m_&{2~t z{IrJSEzUJacwhn!*(gs1)5oq<L{?gTXjIQuKk}&-_>R7c)e$R5KpI?_S_TEku1Stk z=d1w%Q|>>@cGBIUd)%w`y?H)eqT&{9M1uX8ZYA8$A&;qvAfwoxQP(d?1t(J76y#XJ zfx<5~rmZnh4R)p(*HdbrT*;$^j@9@VOtI+UuBgStb+sqFI7Ld8kPoGqmeEoG9qZT_ z&s(KRs=DM8I`2c?`(&{r$NPzaX~gRHk8d<jePd8-8y-Zt1Gb+j!y9H7k1~pW9p<%z ziC;=EvGd^GS7rSV^`EaJX0$c0EX&zvR_*<q_jYeIu)DR^&swve3h(6<{Pc?_c-a3# zllHx@rRBxrW^<G&<<gdH$#-3i#L^FMY{gnslpb!Gwv_A?9<<)hBtAh}e|vC-zAbO2 zkQedWKF?r`bsM{#IvH=0Uf@yMvFIXA50G<x=coUK>5&ts1zGme;|QABt<01=^qw6# zf_J|@r<U>6I~`-paqKF!DCiwHDy?y0lMm)N>qK7L2*$^b{TycVU+Xk?mdT9iwSItW z{~)XPOL_a8*bbq*OhCQwJAxnTCwH(L#0K%=I_O8p8scNt@=F#7;q{Q&&~Z++-Y?jC z%5_?A0xe9qInvPe9D`F4D-O^R^UiAV>I@{B{PwP^>U)I{y!VF=^f}Cs`WO%(4vq9v zKSJ10SJ}<Vf~F8#RXx!;!9D`P%z3`Zqke)@?C%49S#b3EAZ;@41O;^={=AT5@Q+zK zXbn#6J1U>V>WZe{gL8ue8KE4Y19!6iZ=5|heMhU;)!60HG$3rAK`KSCJ|oHq4>{36 z+r9jAGiISx%WA1!t<?6VK1V-2C2ZI$VHp!g++zFPZW}M~W{tr*Td@~xrJng(gk=C@ z!YzQA43A%jKHq$#FwNmPGT&SRb$XYV4!G$4!K<0hs^osQ70ja~0M#lSEr;J6ueNmv z1x^n!Rqbv*Hxoyw2pxIMs;4IE4S0JqSk!C84Lw(NUq>SDbBvg;<t<93Jd~5tRM56a z%#FAxrJZs4$4ckzrl(DpC{vy9rq`L?&1k)-e1*;gkF4f7comDJUw#5Zp|Wo+YxN&| z^Pd&owdZ*0!G5~~Q7eFS=NrBAR1}XaE*|R(DI06MS(4dRz6?b2UAo&!3jVsN<!BQx zZ#F2Hu#Vi5I~iwyw_S`TEnt)J=9%AV6x`KlE2wua*eesHE-T3$2>s4Ky+>Ty94ib1 z<ldYear-B`w8sYb__g%8Aw+HTMP_|7U~2$96ZLdnK50+?;FqYea671ucHiGtxj3Zu z<A?x!^t8M3rwRmqxwzkX>4Nwh?$mBBZOUAzx_Bb*zI^tJ--pK~Boa4gZTeFCus5k) z#l4JqRYW`Pp)bQp_CS`A<MvP8DDhbjNgY)E{Ob9>qR$w11mN5=lSN5oaT6$a9^jn* zLCgg^$n-@V>Ha=&_Um%Gd{%8^7gB<0*6U6H=rHbS#da;@H{R+x50wh=v}-6vqi&|0 z^@>p|-?++$Be+n}J>ayBjETzDaDT~mW8}TgB`6htH|_4b*A~kCBfHU2zjDHVa<V5Q z`$-<l%l@ETiP`E$w`Ff~g?~ve$ljDRUdpji3L;JoOJ~y<>k@u2JdH>Br^)by3j{Ze z#VdPy?~6*N!DD`2!Cnx@t#}W3J`{R-4@Zh{_JrYd3G?LcsS&tM7uP-EY)9vPn!h6B z^m{!BH|iCp%#yTetpYKNinWMGKe~nY$Il7mjF9&WtL@~eiKIA>Xl5ojc6KZ%oe*iZ zmqaaF;*1}p;ZM^eGF~6!4$-DX*D`owmKdhiZ##88Yim#6?K@I$o<)|%;*9U|YnqVJ zbS95KbUJl~*?sDEZH&D-r}iu>^cVi=I{8AK?Mf`ZH_${36xe-X^#gwAIGFHMdlZ{z z-`icGX0iJYyMhuNj!Et**eG*g(63Wb8(>Ry&WOnSeK!9SXs;x$eis<B88Iqq^9K$> zWSoboRlwTfRFi$f=S8cm6CFxkPXQr#FbeA6R0fx%TK9Z?*C8vo&g77|8I6-&Z}idV zJOzNZ+vgFO+3hab*=5#oct5Xl7tTPecwX|FTliPlNlDWZe|<{-{A|+}>x{-U?H<`& zZl^VzQy5cnuiXoy-&n!y*C%Cs?;o{H8=@0Hd+%I$S5bJU;9@HKBrfS?Y7*ruGv}kZ zG@>bOmtJ^>{1dQFNbQ%U3J;{$qTdjEo%UF}M-uA9%C<{3id`oAzR9&#o8&z5y+@JZ zLx*e0_X#fJ$$~g1DQ`RT)K%&M)hao9O;^$mfzgEcQ>T@U^6-wYe7l->aFGiQiUl{; zoFUK$F%|W{9Y$`Cn4W)lyBK-96w_yaYzh33RoHU&k&j?C7U5`!4i}bZ)NUWmtu1&x zw_pxe?3KX1@i~*2!?l!$H*K5e(S{5($|kW!m(&Q-^V7PgDj06e51*@L{Eiqb`@el8 z+Rj%W3D@L5A4xXhfB8s!QTG4iBgK6D&quNt`hWOHj}QOfK2mk*|KC1RpgwOvG?u9e z3RJ(DmbKS}D#6^uC^HGWvhX!R|8dw9bK1GjT3dhL@D9?-VEMEh;=j2J?z12_CK@U` zI?{uk(P#&%`4c)J32sbD0zDdVv;9PCL4c^?mBX$^K6B9kxwPfG*J&j5q0N5`wc5#^ zp1j@73?9L25c3^z4yaHd*#`M-qyC;v^hYA2sVOew7X!E=_dAp7I}XFo?(TU4bC>Fl zWd8N(&6V~0j0>UkBIRU`2v+_>X#$3QpJPZ{NNO%RF#p{}>~6e*(XhWr|1E`SmN<WO ze9j*C5<To-{S7dY{nwS|%i!Y?>e_nO-PVmZ-<0m#yJixzP{RuEigPi06mx1x_wCy< zxtFSVuCu8qb>w)ER9TN+Y0O?`OCT_^`}4eAMHe^)(D`8fN*I;X+tqy-#Pn@<HkosB zz<@-oahT>=O|2j*#OrG=Nb&3^#N@Tez5}u(Ex$R7gx^W0`=O_+IST@ozm&A?AF~Y= z2@}N2zNK{5mj%Y?Xi)^8H$B;&rt(?6r^}Ir|4F&yWEt^cO5p93xB=dL^-kQOxt}0= zP)U29zw39nn6~aBPxb?7__aVP=G{nXy#{z=L$Agj!y|bO6>4ZTY%8UI>larRv;S0% z#~_gZ8v~oe>7r8|&>H$WPbW2psdAhVBOW<!iDsL~u~#%Q%NqYy4GV(ZkVh4(k`E|) zeb4W+PPE_qMvz?RclmO2h@=?9j?_vc=@sn(Evm4s=#se!<QS?f$teDo?PTAkuXJz& zWA4Q2!_S5IT#wZZ(sap~S22W9B`_Pkt+|6I#uN4DfY|d9GEC)P9>wF#-@qEGt*lo+ zYQs{8{?NPdpEAgdiOUrzL7MViq$#O9DS?sMosvPERa};C=f7ZC(|`Z=l`yW*K{>Wj zLFofL0<u^=<XsC4lqCBiD*A1kk*))rHS@)PbD4+^-?(N<_G^N!u3dk7yAtjLsTSDz zP7nn+_+~KgH5PjFT$^^V_YBc@=}UOss;VVLpC);{4_P@Zs+II%?tDx=fF2X<#5-lS zmpe)J%kW;{AWVh%%s~_L@nF=`kL`MCx$k(tNCJ<oJEF|(exeMyI4dw0rW+-hl)#<I zkOO(rg5sCARux5Q;-2Q2CzD8eeI*T=B1vB#ps}TjTyWDAo5J}d!#VZZ7X}})WH4@` z;4Gbw6hwL)Sdu!g60}zwaMqMM6R4epl`JVaEP&t7J(jClWB61~CzFP5+h{ZLqlzxk z30F?zlZS5Gs;IhPJlBT06l&t|pK?uF5Vul;j#@=+EINOd&BK|2QJ8$B?X3KV#j(;r zpMyt!*z&dT_ekuJ3slaH1hR^5Q2d$I!W5?|zC1e1P2y#t-G(A9Mz77jzgqxy47AjZ zA>m=;Nvs1>dLo(sa*=tF1f;mCOx;-c@%ECZi1m^y>w>@zj08~O+9s*sXydbV9>j`t z#P>uE2<Q;_t9>9mq_FokcV@pVI~^f4ppD|%nBVdJd=n4MIN;Vk3G7N9&jO&H5I#J< zKzN|IsXE^^iEKt|x9k3ARU-OtA`u=5;P~mezR(!@;!+%XML<a}(hS!8LOVF}6)INP zXd{4EcuA{hILyCuSJxaY(ucn<OsN2Ho20h>(0j=-jmMcB1Z_Y$=Bq<}!lLT&Zk6v% z!l(-|OAOJbOeo!6ey5lI=K8$1gQ8Bm&*ODO0*4>($~W+V*eovyiYPc`fHFx1y$4E$ zNFh?*1{EQ;!s5{da}iW=$u+N>5VHxL*b%Upt?65-^SAJYP>g6=S@Jg!MBn+~=bQF6 zAtyMyi@g<iOG$W@fkdf$C5_l=)T@b34LbEB{yzZHKrO!{ouZyHtsNgK$A$ZO?m0m& z*#WMIYEF`Sn%sxUJxeaG3&h?f^*bDAgYSBesqttfR3{$vpCh*gsy~W3ANVKIdS=ky zli~M*neGlk#_t={K~%nj-}ueTp%99;rKSttL1)^VsI09J)_*~~WpqK5y&&E|Y76`m zBu^$gcv5eGMhD1v)$)-=|I9~zLu(D;KS$qrU*0atY<fov;}k`?`8YtYZ591#*Yic@ z^(F9HPi~R%^IX?n4ANa>{2hMu?3MBJq~|iZSN!Ox*gn3JGaa4ecKOj!d5ftlXF9sc z?SZ&>df3Iz?$)l($BPsP=Vc|E?$Gk+dWh~3<&hbN@md+n%15xMUV(CIw%@8`gH9Q* zL590njr$#1wrDFOh&a+M5Kfi@76@k&zX0NUSf4%BkSJuDs~-vIyu@_(2L4X=_mkTf zeDA&$<zctt*(E)9_6z<v()GB~mGZsJ-v=PwxG(_u^#hN5FV!O7Qv557_Zqo3$bFPt ze1jyZ&kZ5^$Af>LlbWpfpZ9;<7n=x&dY>U}UyNOVtV;-2=Od~5vg3}vNMchq?=l@_ zuq%fEY7)jFz@n5%Qv79V6zP(u0Nkp^-wga|M+*6(s*)II8bKZ>_pyN1t4u4tN|R<q z@g(FsV?7b1>sKRIziJtK^~m$2s7^<^*oY<5Q90^6R2?-4;8mzenqsmPVguh31PM}V zGhP6{T+1WLBmpelV!!RxTYf3u$HIt~s-?|$rhsOGNeSusB`a<9VxEZ0{$>F_w9OYF zrFM%UZmq-z-!cKdX(WG^dIC!YrL>Rnt`VT6c}$PAe8JXDw1p6ajRNpQNlN$Fs)kMK zS5019bHcMtfJv&jgJ72c#?AcH7Djdmu*Ka&V3MA)v~sTimg<@$m}%Rwlx9jPDC3pZ zO{&4oQc}kC00B!w_bN!+e~t)9OQ)2So*+0WfTg5o1o%ozrDRn~NLgyyCV**Vzm$|- z6yTHgk^m`X^+|hKK$ifQG?sCgq_KSpTzF)>0R?QmNlI#OSb!y;9FL{TEMdiOPo{)d z5WGqN_i6TX98EjIs}=b0^ECuA-O~!VPM;BA8*4cHwE|v8@T>yHA;0~+0p1|sO#<E` zfN`;(^VDV0Qv0|5pWd$SH;(Fx-`zM%?AVEul;(qyObm&gCQc1FiR|(r2qF|p3Ahcd zB6U699j}M3XU*=c5ih9XEmGlumsXIVmKTH&RiYqN6;LG}fQkqq{s113NZ_&Mp)Zx% zIXmafoH=vn?u?0J>FD~-oO{l>XYS10bLXDlBK?ukp9H<ai0=JYk<JUcfK>E7ae)!} z+vF?mp9>m#4e8H}NCwr3NA}^ork{Ti^m;*(?SbCNpf?%4l|gR`qIcHYjQ*NIbp9fv zOBr-g&}F1|a?oW)?=t!u(%%`qFX#iLe`L@Hj6N(t?+PNneZ=Tvq)&3t$Bh2T=u@OC zjBZpPxg8$~`YeM!NBSazK4;{_R3xqh-Z|pkh`d9t=lX8Ao`>6Y7hOM2%yjB*jjDqU z$3Jbi?d1+-YSx-9&k3cg|ETbftf)BN>g;SV#~avSJR4Yb?tig`GwlCaTmu>?vzCLc zRj2)I+wCD8>Hxf9Y7QGbV0ywoYJeFa2o`O3Vtq`7%L*_}8o=}PBbFTW7=Vspid4Zi z&>oC|FmN-L!zc%ABB1EAD*jjldMAbMQEamnbsrVFw=>;v{BCyqH0rq-_0SK>K^S{V z=-GvOcA}n#nH~u7b|Wu@zGp;RS}eN-+dif7&!~z)g!f`w2y442(?VX5M<3euBOipZ zv@m}=>Uak02e3c1!TTMda{_f9LRk=^zMMlRY$o{w$~c0uU&8uiADurzol__a!p+M$ zbi%9eEhdBOxFmdj49`t78_4I-{<um4i-XQtY!74NQ<Qf%UYC2ZybtBx!`g%VD=G<= zeLwP_ME(bm|3St><Np+v4<qkGD$d#bm+04{$oq4wKZf;RVEu6whgM+Mzg2Rq0hl;U zA7SkOSH&RSPvfyiQP*5>%WuPL@=Lr9zrucl3>a_0I4+Ga8O`um&sR@``b*n|{xPN_ zxF<_LWjby{J!hF72ki~Qqtb-17eXf5BoaKUN>g|qbe;*1_3WGv&Yci;&I>z#&Fs_Z zK9!*x<Od;9>2apJ86JytpE2krka7q6jvqpMA2bUjFi41*7bL$}aGx?QkncNbd*i;f z+^V~a&snzBY}J0})U79vTeYU$=^Vu-eBs-$cAv^M5Nr3(%kv^vLH=IiIo-m%CWj$6 zHnG?v|CCN2=NI1{jhMrgmF_~*tr<9Spbl5;n(wZfK0V5kn=7EZjaUAT`Dd5h+S0tW z-0k?*f@6(`_KzP4{tN94{%y6b@zA94eq&)!na6^_{Z5Sq@m)!d1ugOqv=eyXDPYQx z<oU<}!*1tjZ7G<d)qIKboX}<Jv%vH=I(*l>XD>Ukziq4Iw_UH%&#wZvJLT8WjQ-uU z>;}_XuaPuqHp`6yw%gd1-Sew<v&;Ij(r&G~b*J91F9Q2J)t4Q~^9M}#r!*?Q|D<Nq z!}SNr^D;XulD@IgZgp2gV}Zq;>W;wH9u~s2*Ftt{OW3XIvg0qc>Ky~;2y!mEPP5Lx zs>_m_DB!$PT@dixg{}yD-bvM_OVS6)`)kQBki4^?3fJWQt=NSe?%zVJh5Rqzy;J@d zaNfo4h}6p@kNa~1e&=#0$lI&(U(WnJ0LlAQ{zsM-PIT;g-SS%A<YLzgB)2@vZ&`(3 zxjI`cb1x%1hU{ju+IyCCgoOP`3C6j`_jo9*%SbOio#8znQ`sXf`1?wZ(A&(uzAE_z z)VTbGlB>EADecwSEg;D=ulXQcb9nj7OMX!4U)`0i*K|9+;1)P25@9#hZGq@5A#WpX zr3R|+gLONX@g#Up81k*oe`TfjXI9BOa!8q<kpg;L&gy4G{hIDcWqKkC=yKz8W+;Bn zn5{^LVZkJ-W_LS|<pyn=ZO5)ZXTiFp<N22B2~jVaL~XVjj_0&(ztz^w#&rG_Q0XcE zPA1Q%pxp&Dy37zioag@H@&xpG7L<M=JzV}&QqDx)`&~ezr~D+K&}9UpeM6eY-Cg<o z@Eh4~`a1YY86qwLc|IYBW1jok)NcWip6mKUyAy`<-?!gNT)(V-fgJ)m{fe$#2^Vf? zuU`qDE3_9-ZX?XGP{Vd2o+D9+0T;n#f>}AX>Yd~K>$RzNl*ytb8Co|U?b(tH?6d%w z@eCu&+;U8XcNS6(M;Xgank%!Wg%l8m-(#Z0-OX5zU^$E>CDm-vC^s!Ce22VH5=Q4X zjSOQnFPY;g8^rCv5;0qbsVfM58SR+7StBVuhm{<uxoZh;+V61G$_6ap1eRS`?!<DB zrio_Sn>JKVcR|>0opTa{@kdzRf+gWN?!|JSMnax2h1zV)aHQ6G8NJo_P}iINq5rRv z|E;k871hVWdIaE{6E*QF=f8p5_rG2by&w<KB)=i~2bn#TI?W-O$|?!XMEdE`GalA^ zv;89e9A8I&9%8aKpgxE;L|Q^G5a4MEWfgB`=4lD^rS(?SaZtr+3LH&OEZ?VoI#MOi z=L$?pF)H7C{Dqvu*WYsf>kPS|Mo<p@=~5m=IwSlQ-q<hgUaKsUGnAH-^;a}C<{J6? z0G1H=6@kY1v8KQ4_>8%>9(qCEAuJE8^cy4@fEMx2;p=E+YWmtgz|CRmi#Nhl5kP}F zL_IxB>L;;05+0wR<5O6Q0JdK`J1v3Eayd$+0v;(x8_;CQf%=_T-ht&YEJdIx11GJ$ z8vDNN({4uEcPxh-;G15XoI-wA*~q+w{4V8yeaFr6jDAug@XV3}dQKFOQ^LR$+CjjI zw^Ql2zYlrnc4FaEBB_Z}SrCVhsW2MqLo_!aehG!9BMAYt9SP<k+ZfStc&rc%5S`;m zO){y7=!b$R@n(<GCqi-BBZ&M%$x(Ze_Ng?CkdAm#6F~^cBqxFsB6*}!!VB?)C6i7L zEkwygRHwv?qevu=bW+k0ZQAF_M<$(jG9npwA<^;a4B|SV|Fn6VLlDiXbaIj|*+-Z7 zBa@dN$RG|g^iUt-NjHzIk$xuV38d4E4kA$<5@qHXNhl#*A`Ho(I`Pa28bbm|7!EUZ zRzs9fb6T101*$Tldz<PuBWg=^(m{5ReG5o=bn|2!(oJ=fZqfmI7t>T|gL2=E!ZR}Z zA|M8ez9cX(kG{(2Nr*zXBA?h@)Nh|!SG?6$CBN9GCO^xq>fVYfuFEJcT6rj`T$9OF z&VK`=f|>Qu%lo5LI*OEUXi1eMUB8i-iv26-8F)We@i>hzv8}J@2zx=)jlU@?p<+v7 zL7qHVVOK`P-fK=M*ezDrq6`7MLyK>Ny$USu(ss38{s1oA#Z195d!ZSLs5=YY1_d&` z3VwLTLk-8Ty55r0j`9{ZFWH@Ha!viFB*&oJsfM2$@W24nDBOhqtK9P8-jUYA(@xE& zV?9`NY_MXtgP;$<5b(&Rl~&tlozSmFW-MK5mpSz-qWovHHgudQaii;Tufex>=w3KV z^y501&zE=LSmW1z`~8i^Qmb|HOf?E2<>+|w_(|~9srY<iWR%HPcI9zg#KV?`Ec;)Z zud->u_3EzI=)}eY4n?#R#rNCpLf4N*$AH_Jn<ieo;(^xx1J}x2n*aa+F?gJd;9_84 zU}j)pVq{=u1u_{}LqptjEr5*g3=qJ`z{0=@q}fvQ%B-wR0bBC~%K!i}C3u|0TKQ8P z#})3`gXLK6LlOc65-c|YAt69qk{!v4<5*5Gk%Vosh6UDISj4U*WGA+g%HNRxFF)k> zR4GTLQf1P;^Y!kVNB8V31!Ahcdc5v;_nY3C9-h_;A;KaOazr>P{}j<LS09eg3K0oQ z=D)(dLLwq+B&|yB?CfT<;G&ZgQ{$6TG$a`ZgOROdJ}K${*mzYwdAO6x8)hQ;WbTDY zV`neBmCBfA4w8q-y`0HbCYv*jhdx?!N5#()?Gg_p>ZQPQN#hci3erM!7wREIqL8)_ z9m*=8WU3%j4Vf5ZY9P}LJ`TPO^sz*vL=&LorX^Y=o=P-Gj4=6D@Xs(GM(lHlr30~C zCNx3j;>ckh{&WtV64xcVK)a!L6@Ggpu3=uy^?_>H8=(E51JLh<-voRO0cvd6P>)fG zF^TUb#wF?`Zc0qZrRYJdlkjm1bQ<(F=pFc*f}a_Z=PYFALGOVsKxYm*i)`(d!K-z; zkFf_N{siLxSmGCm{~_Z4MB<Uef0(SoFG)>*1^OB2uOa&>{C!UH_#867fy@_>`7M$8 z5;DI7eG1t%$UY<SKLdS$daVn$x4x42mqA9={A<X3Bk_04JwokNy|NO&m-w4-`|DfC zs5#X?gA$vl=@!;KC6R&N5@c1szK4x%;z!%qVQZvg)oY~m|1C=WuI_=qio(5KlwZbL zedpSCIx((#bXP*|Moum2p?t5pW1iSE$X)5ACHAGxC8D$DjurA6F2&+FB$haG)Vzx0 zfW)G6eu?}J$$IO1|CMm>%Pp*T9&@jWO<hM@FMbdD1Lz+h`xY^%z2J|`#*Y#|5gUKP z+&iN4XT*Ob+`aWL!redB9xOy@cXocj!l{XWV$viSS{Nsi@~S>&nvO*?wz-?yd{Oun z;Oc^i|IEyVyyj|;z51mL_L*YX5=UhJF#E=9BvdYlNWdWCx!qUW+nLlxdVed&WNfyh zwo0eBnPinsGLc}CF`MM#B9pAPNILz(zRaF-=HDKq45_KBiO5A?Z)Y=GmKxM}qiA8y ztj=SocbO8`3g6{x;4NHdDN0o?xpz?TMzrI{2A)S_iYo3ORg_0nPvjNf;8Qd;-)PAq zG(T@Cr+&CJ&qhDP!yr$F3WfJmZ_FYgmS33h5x@LZaOG~&CjWYt^7uBD%Rgbt&6Z+? z4^s!sPJ?haIeqClp9bc+lp1)y@PwT+q-IL7#TMmu_R!+NdChFJT5QB}sh1m>6yHYM z{4=xOn$DU}F2rCBZ`*beaIekFWmFq&dNY+{HaaXhHp=&(4W;+^gqk>cC-dBTO#6l{ zMHPmATPge7wZ#-KTjFoX9c0q^)x%_Ze^q87D!Re?%7uF+V7OK42HN1ah0SVbK&!O{ ztEt1o6Rljh;ePsupcnUY)$66(TIvI)*yUBc#@n%5RCH%|`4!o(?R$cjsjy*e92};2 z(_9nY--q7HA}?(w?jeDx%6<MOZ`e%Ms3VC&+gc1?Kc(S1_e{fPT3&<Yy8cGc!mE;} zH}mN%-y-|H7KZrJ4xBQ%>O$4r`<!QB$|MmmlPJH*l=7fgImVR7cv3^BOsW<u7CfzC zuct;H$%rs-mZ1guuq&?#7E^+@Mv!}Sv`i#p-uY(cFOYv_XI$79(wOP`y4Ugmk8HxC z>5MYLn-;+;`DCz@-!-`538<^EV=tfFu?@0=l`g`hPjO7CPgydGWYYW>wCrAS%injx zwBX!cP)hwy3*TS2!E!aY?Gv}LEm%KwnjD$}z2h}_iw82}oxj8E2J)k>at&sqG?u$Q zMWMxr>?M!*>%y$1aA7HHNXajZxqxBBHg~hR)IN`7-mBiuD}K)sY4pu*dUKZvF9_ca zj4#iOUvBCOx(_Jdi(cQiwXb5p`dfq&ULwL3JmU;o`l;Nb^DNgZ237bDf}oa3Fp6KP zEV$C|zWjZB0=tG_XZ>~+`C?k9=HI)27v84mVP{*>mwQ6y;5A3fOWANi{#{89@O;jR zZf25&?>zL3rzv$LAChu8`G}O0Z&<0LQcy)FFj}v9{Y9lrkRd8xCdkF(;Bm#Z-H^A4 z4SGBRS_N9|&bMkG#xpJ@7z3?w7234HsLQu&zAjh+;#B^u3ZU%Ox_TYjKK(>?@?hvh z%KA`9sp4ehiZ)eW;o8=pVQK;VhA+r(<bwQ0FUW7zdHALI#6g?g@lHM71ls0~_v-Oh zm+#Shi_2fvd`Gan;#B?v*0cJ8{PtXs--h$>>)=4_Jz|i2zveFoiz`IsFJj;Nz<&GA z!>@z00%aHf0WzR@bs*UwP96X{c-7KhsTJ*Z$Gh}+m&*@o{wip%J3g$(uaVqiBzKj| zWB3b!*UtidByLGZj!8XYtRCz-)tUs2>$*3t(esYWr&k7Peb2C0hP2%t(Ed}@X~0{j z@$;&agL5<G^M=dEG(Q-uj$>5*tnc-p^&0Zl>*hJuYeMIn0387x1|0((1!ZStMIVv% zb^fmk#kuH6e(zv}Oe#YYg1y?kPG(-=%d+Pjf_Pi<J9r^RSB?#KWVX{fTXpPK-08>* zv$o;jg;?=Zpp&4tK&L@xK<|LE!=GY;;S&W~wwx=i921j<GTaYxjAOGSQ@g9jXI*|q z^LIhjA%|{S^#aEKT~PT-6w@m;?md^EJ2vR+rf-A(v_XGClpZK`T)OeA-<9MY*w8PL zxGHLXZrA6k^ro8C^_&A;1YHu9J?Jcni+Rxbz<y`X!>^Q|*LGK2enIog6~?uEwsGAf zeeFDly^sY_f|v!h1URoKLjNmoBSACJ0yGe4`Bnlw*G_P$46Xp}3|GsbhoJWq7$ngD zjypo2^BW}?2W~P<RfxL;a{;kLpw@1M;6CsXK?3-g;34n{gO+_v@M!=%A^5_ARf4rL zcuw#PcmS*eUlDMbuYqp}9swIbl3>#ZTR;lXI@*r5zvF{l0v&4_pn351P*?`OV;BZr z5a=8=uVc>udq9>z>u6rfaDTkl6<+!vN02XrHv~t3sTbb{z>&emj|A@wI5H#nKK*}u z4IDWD02_07oXuF>ZxcrlU*CtnojCrA6Mw`B5K>A^C@l?X)R#y|ky?p|5cLfm$ze_y zUvy_hNPxr>|1f>2Dv|Eq%_g(!Tl?(Vv?u+v9`A2vels_>zT}TAAw(yJmLR%GKN9o# z$<y6^LJXZ6f06Lgh(R)RO<KL)Yu5$K-0MEv-J?{E8VUF^b8Zc-6VGx6)c9N4Ob45` zKaAMR4K1%{4^^&N*p7BKU-ezzkJw0E+TKgow<EUnZnqnLO}<i8DK;qz6rU;b6srN9 zkPgLm&<8?lLBnV)*k@g9u}rY0ftv(w261!1DZsh}+&plX5qAYRWmqe~EdjTRxU0Zf z15O<{>xk0?P8-$@SUa$8!ny_PEm&_u%ofDF12LJNyU>drisz8$JK%l~e)phnr%)63 zWpR!v?o;d{eGkB|3;Fg?4L<<qM_7LX?jztnj?hMDnS7A69f02x(Do5&V?Fx?VmyYv zuvmvAoP}TE-m;k?<Yt@_?;#l5_!Bmxh}z*UV&WZxj<_#HNhqQieJ6MlP@MD?aK54y z$I`@D*(;Tfq2<4ke07D6%-L)E?9IujgQ4ovZ82+3Qc=KFpzn=I)tND?OTKl_pIM&d zom9xp1@-+N<&qLzmZgMpVK)MLRDs=Bl#!k_>V@T5Z~cfSMP<pvY?cA%D)!APS{07M zZ=(*m=}M|7CZI5B0`f77(vD6g&w`?)R8Z0geQCOaYEi<Y3RsR=Ktk?tQK7$Zbb9Fy zok8!#nd{kNG);<bL_LT&$;$Yui;`W6x{WMOX}UON#W+;rbQ$L@E1IM^uf#|xx$=s_ z)4cGU!B8Ssm1N5wO7|eRao4Xn&)5@e4{h&23RxT9vASwb%-~FjXv?@Zt&*5Scp*8~ zkt4I$W>u{^9_gh|y2<M?)$6t=pXUwHH7U8aCEJ`Nr76Z+m;6VjtR?ar@_t*~Z_1_N zS<2AzT(5I<dLWWIagU-6qB!K8!KLFnFZ<FYM+T-ZFM0O;m+&(~j@w~Svczrng25gg zb`-N;R(6<I!0#CN8rTN-7${}}PAuxL2QfZf=LjHO;-3#^eJl9Y!YwS??=C#s_Z@fO z9}mv$cTf};X&{k2kshuFE{Y2>BteN##MV{Jyu83KH;q`~c5;U1rNriyrfgnp-P7ty zi@M5-(v^Up8kW-x?JBpkGw9BVx+{zB=a~5`;5z0we-$1#6WXiXF3ixcC9z+%1>WZx z*O?FPHEtK<^;5(AdG&LebL1Q6Ei5u`-1%4`H_zz*>3k}Qx)ydm#kfzE|7bpHi^!XR zS3(wdIkZ#UE{Ar5+ZCiUOT>THZNWWjf!=MT-vs|^Xg9ew^=tUF(@{f}(6zOw>EJQ5 zpGE^IuBqa)TGm3H8@%gv5^Fki%%9_Qw0T^((@AbO;^}H*{x^JD%thp-{0@)14r>$E z7WsEiN1Ldh4&e`r7{y<UY|pXyMGrsKv&nUDpnRVppB4cFAvpnAg!}{)5lRzKL#Qjz zKxoYg+X#07I|%m_*pYAta37%?frki>Cg5iTu5BOTi30l)4#y+@eEkE*+ouBn1BhOD zob0^^cwN_VAUqEML4v*a0`>~9SFw{KMTw-uszQn&2tJY^K>z|kQq30QBH59XxOc~K zZ?WSN+i{%Yl2~?%?IfE`{#2)J690elJHPaAcGtV&zIk`%-MMqmIrrTA?gOQb-}lXT z-nnPa%$zyB&I7{%pdK3P3Q#|!^cRMlIKHoC6F}Vr^pHEP1TU5VkqZQ4%WeZSA>N^$ z^TjTJhWe7{-y!&MU}LfS`j#ylOQCh*Ys2|su~(1;Vlk-%uPni+l315Y?#L1>C7j7+ zSxa&0+YtITl)g<bL6dSZ{=^cDF2URq%qzi|5-bjQl)ufP<VZaHHm(Ho>Hm0&GlIew zlkCWUg5W=i=-{{R5=<$<2BJT;1efXC0aEK&K@Vx&L3A*kGYAjyXOir*OR%T}vr2&a zyqn}~Fz`K|!1sVi+ct_@r1&V)c@>|(-A%G!yq*#)AeV8w=-YOo8!g)t7TFdN-FrwE zOGqzEi4N*yxq;r#S?INpe&!nDyw@XN7AROKT+Fjpl5-`=xr*duy7+AkeH%~ty1rDL zCo6fdjC`#GrwRWueM5ORiu@{7P1sEOsVCmwg>qRa)5J3IJqXJL*9Fb%&r|S{^+D75 zmlSmHKbDCd5UqEp$88XnK`cwVO6eI!{MHD4t|-AC2+G(lh?g-FuFM0}&lezCXYM3j z?kn*;PT#P+Jy3%ErEi-^k9R?=3>8|yU5@ep-IQNk&+*%X0qrv1gC#nL4Yc>Bpgoyf zEC)wP{=@3~39z;mg*FQ>u0KfUh$U`!f}9xl7=-Qi3Ho-w`1T-uI|b2lJB9GDy=x=) zEYUtAbowyGZx=GQlZ+iD8Q-B~>>wG>i}V#OaX)H_dr_qCk|pjJEpac?cZ_>Qr1`4Q zFQ-lF7t12n4=gvO{<H2R#d`#THn~564*&0ipf4MMa^0vKO8BdY_O+7iKP3HMC%r#P zdcQ$(KL$a$`d5m3MSO3dxTh%YE69B%xlfUMlW0B(LH%#1^u4M?8fkFb(iMCw*LTk2 zQr}*{c5IZ;AM0VNr#`WKzgC33hV=3@>E(#Z(`QQGTEX7dTn=!`dHgyE$`+@K`_`W> z(YOPm?Plp)xhxhb?i+|U_qRU_K^uzy-$-Gor#F{q9aegJb6ih#b4gF7{HnVj!gc`b z-dic(-VV{ahx&LYg}n=+bszKiJ*2DmlCItj*8ZmM2DtkP?hhs?eLq`@`?QMtEXDm9 z6}O#aejn-lU8JM;muS30>FE8WBTg6Us0+ffWJ>1;D4p1UOd);Avi%`)KTPgNASl}( z6g)mEcp#0B67I(d_hS&$zfY8KzfCxwB%EI)oKI0ceg~rMIrmwgE`|MxqW?=2_cIW* zwVx(FpDp43t>W`}!u=fa`8$Y?C+>pi*t!Ve*!qi<2fqwqo%#at`clc^vD}v-C|6$* zbiYdYzef4@6_V>WAQ*?AgJ6vGYm|2!7jeE$vVW7@--2MAhUMb7DLvl^(o;Xhpf{B7 zTP5eHC5@L1Y5cZG<8wr#lqdD~63ySajcL4((un_$iS#0!->3NBqd4CsS&9_?2SS!V zqVVky?H}<!&dL6`1dR~P-2lS*UEzs<c{$((3N#_sZEX>lGGt6&@oIZ-+l6c09c`sK zWWOR<un-)E5e7PYx&?k@=Gk-ZazDlSu?id4({;YByLbcnwe_}l_DMt##9oXtufJvf z9!`S0+IxGu9*d@Qs3lgT{4T{SJerd@b)6RyFh+Ftw;B{#`VGI8jd{Z@Fz53y&fz4H zN+_LuJ>6G}-2)Dh9HLc7)nDl8vq)3uOo-dmUwovky{o7DVwA$LjCvW7lvz!k=SwN> z>}c<bG8~l@v9KTkq3+ZvLmGsCtSL<qMV2azpYFYih4?;NiIP<8CRpf9RCLlOvD6;; zB{5tNJJ(lizha2w>n5c;MSN%Y3-sTonl^QH_7AKn)xkB2Ks`8HuSx=RV>_f=pOsXV z2D7)lFR16nHokbZci^$0$uPxkxYXW%$r87)1QM#v_5_5+u44DaflJ_*Pq?C3*!dvH zpU#Vl-2I)87cE@tueLv`NRNV`8=M73f#<lYkcs`MvRc~)dfK|Lb#)PvT=doH%cFT4 zTIy+tose}}PQA>uME0fX-CF5<W)j<(6m2^Br<1>#{LLm+npB%s8+F^ZnK7K187prP z{Z*4^rQf{7;Z0w0;98#=C?x4(ktwTmJP$fytH3RkK~qV5(zKWj;4E^JZYlgB7I_;` zUWMBj#a+U*Dy?v_yQ8b8zq360zz9Qa%4qGscCNoTAY1DQ^ZsJj1r;XubjGx{wFSJ& zgW)!%i%Ru5*V%nOkf!uouEibN+t+!$eW2*jtVzSez+N6PyvdU2!d!(o+=4i|)aaOp zlNf76G}Z*oeq=OU4>2Ywe^4cN{0QVv6}qLa!k<)iQKnIrls5Da^z?!~pO==hxVyMy zY4g=<{R7SCip`~QW>@ii^M$^itIh4*%||yhmnKZbj)7JW0biiRdW`R4N*$BGQd>-I z<O`$#kFlfgn6l~&x5;dheH=JjpK!WV8UwY3)lZTbA0^SMvtmLte7+8!ICyF@s>7w8 zNuKH%*4xuJ(0;B<>t=F-Zl*-T$LsK^gQuGnw&Fc)@MLhdTPE42gEN1|rj-F{&H!`U zH{`~p&PWF1PmX7O8rGTM?u%xDyRys%ce^(yA-ow<Wtwe1Yin;pW%Xa{Ez0SbMs_J_ zZZv#~Pj80t=7Cpd;Y>8rnGfa?P*`rzj!*G23A-T5gvVy(YFNYGByEnaQ{T&YDF4Fh z<h)(-$1>G1G}W%mzD3~Q@(8^3Sz9O{nHGb+alyY9nPT;CiGvP?F9mb`s9Urs%5k-h zxhxuUqz+#WH7z`uhj}uU!|||LTX~=>FtzKW=M~^ALz@PvN>!tkP1VjcT2kl$@mr(# z*4>SU?)IykKe4sK>+N0FWT3CW9&0ZfE#FtFgl#b?)HYPKjR<U+&-8_VL&o(GTlyE7 zzNe5U%nV(V>Zql{pJ}-;NqDd*Hz|G+T`YYo!C6|vwNKpoTiq5eXAE+6U17>?nUGcK z5)z;J-Od@COvq}_giO5Jex=xUp|h`lpu8vB-__ZnXKQP~uWe~Ur7!{fQ3JE)mhfv~ zGb}fU3{4Un29J6WWGn^_!L$IYErM3tIPFmWRP%Dj2xpDY2**d^V=D`zZI!JfL;P?| z5MZ@h_nnh8kaoq+D*0$?bDVO|aMdb@er@F;wSGragOZDsUW<aI-%eMlGsIt@@b{9R zw{;@d4YZs!l-syc<B)q#8o6_n(>Nt_$hj+vezOkQp!(9h*MhgZ7OmjRrQCbyZBHI@ z*FY~dtyd1ZzU9rPx2)x@s?otqO|LbOJE{FjmF~Rdtu`G%`>T1Uuh#8u4fT=KE@o<< zJoJ-y`i%7r)Dl3odNa`9Y2oYC1J1kFI`o0R%BZnChqKMz)<vo4+1n15jwWl%mA^&# zcS*lPYrd`bQVU*HqaY8yD}4CcM%{xjYFw)P##YJp-D5${Ypx3Zql>CqDMNZ~E335{ z4X#jrW2*qky`Nrl;B;~8<Ln)h(uMVTy(4|4-{e~ge}h@RO8CZT_;ww>DH@)~>eU*b zJVf4`-DwS%<FN5Ftt%ptEnv@h48Oyjz{wdBn7GckHC@8YCrq|E5|(p<64x8IdnRa1 zkRW-$PLkO%cu8`0+bGLUus5U_zAG9&TZiwChU>GXlWfC+B-vftMth>+V-(M^8h>vT zKRi;{UwovsQ(pn0W7eTq29cb}Op}y5!LEMrT+>84`@mT;cWM0nQT*LH{4Q`eCkG%^ zd+D`tZ*zUpe|L)XWAc34=6f7;Q&d%B`jP&@D4jcXx(>Pd`09C|!rO1sk4+yYxer6S zDtK=c|3FexCga`*=IUFJ*ZuNrgEX$I;2i<40url0M-#%2LG=X;Ql5-KzQ+^fI*~#y zfmij>m!xq=k}K125}b`ixUtjG)BBilx_N(;Leg||r}9@gObKs^hFeb2yP^_(M6iV^ zcOOj?v#b*rnf6h<m4rtr`puEUvp-!Hj8v<TGNn!JU0torTBg%<7{I`|stI9+Wf<p{ zo=LwWTHD&%I|e$h7rjoMWys3I7Cbrp893j0;X=x2LmVX{Z*?81rmB0bDseF{RrSuq za^7(DVo{A2SzYC;K!dgZE@c{a1y7`Po`2LF&sN}PC1rEN!p`o6W}IV6mg5Pl1!0ff zp%Njlk0f0q8XBJ;YLv>sV;e$>^PbxE$dltqIxU=XL@51EdQKyJ84q#cm3{|3`DHpx zT8*L_uNodXupNo?DvpwCrRp3zaOl2+2lnxe+A6o2rh2BbCR-~np+3&pXy-CEp^nql zW)Ha?iOo>8^vr3qXCXhG(B>vS+%XRKQ+AaVxjVL^=nzDY_)nV>;1KNPzHw^H@Y5+v zeNAdFRDZA}`*AL>A=HHS{#LxKY`HU=HDRUi_p!g4sRC5rxt+1#J*4n_yR$Qv0>^w# z>2!m@x4BiMLk}v>D8FyZr@KoVzgq3Q>wG^{Wxj_~yQ{^4OFifHOH(3hlSyU5uiMzj z7}oz48T*mq&i=MQNOMH{vr!j_60J;}y(Rn(NmA>u-g=l;zvgo;V@GSdq%}_Aoi$ZI zkEGe!_wkB;hi5-~)+E12y1njj;4jT}3(Zf)2TQnTwahvoN}7bG&8K#se91blNg6Lf za=8neo35UYE2)NXxeUP^qE&n5D{B!j_LMK7B49i1k+le%_taA^J!o3jx9a0^`UBwX z6(Zdu;y)P0U*c*C5&t3Z?+OtA6gayC<A#!JljyV~eU2ty4-2fjhz}d|QAcumOoj5g zc0D;Gzf7B1Nv_n-8Su~lJoCLR8h%fn`bYX_-E_Qnq1&T$9!#o#=c4#}H#b(FI->Yq zrzcEuo{!R*rTM4_?-sh`!e83^_9mGwfW0rl@Qcy#a3U-wzz6ydmiq9b9F3QLThkUd z+dGA0aD;HD?a9-9zS{3hNa^Kh_(rAe*n0q1qWDFHzb(rE7wL9I!!Ibh`+d`UH6gv- z(eT)N20hX6Wl9cxCL=P*8+M_yyS*!T!ZC{udcoe~fZ#KZ`Si8j=xgtd?w%l_N1}x6 zGs9}G)H}3vDXW&W3`yab*gl8W98=JXwsy52%oTFzx%U2I^vzLIblaPyqxy;$TPqm{ z&Qf)e{gthip6=qKodZPDXVND{x(4<-0iGj$q;uUt2g7fGyKX%S&Qhb#H|1Kl9s_6H zx~TCV2WJ(!#HFXonv?crkW@7-;SEQMlK6Z|o)tE)iYo9sJ-eLC2~9Z{fh$a}nza=y zLQnXmSH7#!-Y*v)LG|;J_>)m0S5;!Rx|E{nP9UfcjI@>CrT=m8e;EBQ<4p>1%5P1g za_}9@DWsrT6oxK7kh%!C1q<YK)lG<o>xI^#8ecvA?|gAur@e}mg^^0Gyk5e$J>>3u z0^Pwk>r5%{7wq+-sV$v(Ki!_`Tz7_sX|SK9pX`|~=j(e(Zc_S^;uom?K2P7U&0vE! zY)l0LymEU{p!&`DX!x;=e>21*!1k!z&dEM*Z1K_FzG8oWXHR$kf$sCgM<HyhB;Tci zRz2~<|Eld9uG_oOM5mqTOs9Agi4Gfpse{lsC9WJ{yNC}zV|$2iG-G>+d4%ta4ujB; z3bvy-HW@)MiumAR)fvQpBE^|2;;<2`WyBBTuu(BQ=a0|Cjt4&@hLrv??Gpwbdn`OA zQF^vfd`vUGf6B&V*dXS1p&QiGgXErs&@c_so(UBrRpr$&X{3kBihgc0sV|9*QB~hj zRh#|-{r7F#Ux1jkgj8+(3lMvJJaJW2Jw9GloBsmD`tq25)qCX5J^=C6Q{S<p>*}fR zLG2Tezj{Hus=fi~x!xA9bsvHJ)!XGY=_?9UuegmZP&l{o1=1J#u|9b85yK^ZUVTJ? z%H#7;8LJLs|B%2xmi-NZe?0q#lG{Y?upnHo-aE@b$CG`l>3QN>e1{D9AmnZ&cSI0A zne`IVVVff166RL*bY!=w($vvofJ~g3I^u;hsAU6JdzU$gpdU*Zm!S5Wp(bq5AfV9# zO#+4!$R1t77z1#eu>wXCuz#EY6Acqg6yU>Sl7J}$(=0GWzzhP(Pp7*<L463RYVC^< zZvn(F6)mPSoang90YPe6MJqT&wt|+CC;l(rOL#H(Kb=~X8RFYa`c~OXX%v@y8^gVt z;S{I*T^k~LF{IZ_^yV@RZCS`flj4?*!^qZyN6u8w$`^ULRmX5PUCk!Wr%-v|k=+~! zT37TBBYzY5hm#-c6^^Lc1U$D|ID(X>Dn}7ttP4C+9}Qu7UrYEX3yzjILumSwN5tz0 zhk0xiY2j~MAZlW9D#<&Y+!-YAG@;iVN3r^4j8xW>JVvq8G`<?e^2;POF`r}@^~Us} zM!5@hxEi(A+?bMKB<wV*WEcs@j(XX2)8vkq%B+%M#JkwiNjvEm=sUN4V&u0V<;ZVl zjYfWDx*q(e*NFdgPyWp{;$NXlBi}jfZ-j8fJsRS5fJet-R6I|PiUFddTOK7Bs4Vd) zG0mudc#diJ;5)4re3{N(MTb|87=}~{Jf^ExFxmlnj5%Hak5lB>j#qxz&uN*W;v(3_ zj{-7{sVJ|es&c$U&fr9OUM9<EfnKK?t9TlA%nEdbsX#|83$$a#lRZ%lR?1?-Q;kX$ z5=T~eT4I<$u3{Ra4C19S*7ZC^ejZ{*x%BEnkM3)1XKYN{R`m<C31>~NMbGQTno0KR z$?=$MbSk1XoH~^xo9PjY%477E?e}HZX<}*M_K2dG`0SM6&?h@jOwmMgCy+b7EJd(I zkA516R+b^AkgLp2jn|r-s{GTGj4zjE2O8|J;q*^}=rYZ82q(Hs7r)OSx0&2I<jxLo z)^Yq<<jy2_F1ZWHT^QhRVElRDEDJq4ALc`}1TPTj^DR?JbT}N{MS;9^jJKFv+778K z(=8)+dGLJ`e_ui_8a`1I*3DwVx`qB%I#}vB%k+5L1m(x_-2mZa3>)zWD4!;YaNJ(t zK|M|w@g+2DAs>XWqi&+~$vC|5GLv*NhvZm9a&S3A-g0|^T5xR{u-b{)MjfsuT3$9r z3=^)HSvoaAidi936Qn`0Jz|)6Ez;p~l9aR^V36|;rLSDgkcfqwO3zM%j7q(uW#USE z&;a4!geN_scfUgoLMrtV)64_J<u^&04iJOT%7U641P&#h!vvmOq~tim1&p-7Xcbq+ zZ^$@!;{i%bAlp{f!^*(Fjs0l#M729RM7y&_w>!%MJr-s_bh{SY!#Sio{*UtW*6n1{ z8@C6jzXPN{Ob@p~BM5h-z#UC=akPRbFQ<?$urI;>8{3|76mJ5Ai&K+`|73zGf+i2( zv7bI@!JiJ{g40amhyB??O5Ysfjo-IX`tZrMxs;~u^bOO02%-yEOmBgK-h4%G5yfMA zn#NKCjU|f4a!Rk1>HA6-SXMr%^t+PiwdSl7&IkOD<zO|1%Y3R<PngDUs`RWQytO&= z(&^bi-(;LkDi4z46zTgN6z@FI*+w+*|4s`{&ePqc>RGVpI*HF-!ZYzH>9&CSm3=(Z z-%7Ze{(iz``ghTH{C|%_pD4e2S}$qbpchzoYJ4@0sLEWB#{zHcn17AO8&#PTN;-xB zDW2d|i?oSPaH{c1><Lb_7@La`p`>F7pbSkIju|)&^B9f=WIiIU%#iyUU`doOi&b#| zzssCRUs)foi6J56qvjX68t6d!$~t&1hJ}!>G8vw$fexfU!7X=93=JXQiI7jZPcS>a zSK}))<FR%`nHm2NWrzsVuhz2?+dG%Z^Q3gtKu<3T!$hc;1as>#Jt|Y`v2v-bq5p?A zScLje8~M4ni?gfHgOB`kGRTkdnsZ1WSWJW<{kb`$Thf~c`Ly%O(7d<47C6FF=*v2O zaoKh^&`&+yUX(H2iyh$xxl$QILi)<^d9DVL<YpqRq3NB#og5B<e+T<%Uf9BZxh^R8 zbLt?vpFx|IyV;NP4c@TExr#hUb%6L1jS7z@Aq&gQYl}l~R%DH|cl1kph+r4XN$Z(2 z*iXko_po2?h!$vEz`LCCP{<hY+MwSn@$)_uV%RY4RplsghjR?c{GywVv0mEf@cy5N zekyt&m!p1o$2EmsR_OGM%cd769o{eX&`YJfPRLm=YJQZYm!&#A6SC>WNk{G{PlojE z2wm;ucBG|N?FjGV^1d|hSM$DYTDfON<z7)sxu-+8kIehW)s%zTBuKU8K+@s;Zbv_9 zluO2MPM5CbTAsOr9v{AOo&0D{K`*PmL7l(Is&7q)&js*4d^P>ZLJ#?P|KFDmp9@G) z9#(kjNypou<ya!<@V==lU5iuD%i1qN_Hy8)Lv2oB#?9bcohLL37z)w7Tm;+Y5<Y1r zFMy1*fIQ4MS;15Ryay}~>}mWN0%mzYGr>Fo{7oMYobLe(A-u}Uuu#Af4_HR9LI8hb zU9v7(1hiUUm4Iq>g24Ows|BnPP_3RgJ!>tnUO*naI6WH#Y$Vt$fWM8g#Mwfy)c`vL z>=Lj=0O#p$0VZAVAu#c|Q-I{daduniOB(wKHW=V;0S5)_6ClohWIB(rri>ey*nFPS z>^OI^T>Nhl|98><GF=|GAshkob0NHsEuRdLXE7xHFa!Qj!sjz7*q&j#DEGBT(YNgo z-Mhsy#pgQYC7=x=T+-ohOb2D%2=P7UZ4mBD^JSpzLdNL?j6avsG=#o2iEsEH>&^_J zhbs1&muh^q&zy^CV~_pj6<Q9<g`!Hh+HbDP<gsCYdQeOsC+%As_M>C_?rQ%z7n8__ zee2s|8aZj7+aX6)CXx;N<(W(+%XKV1&+5A#QGoo{v3TuIo<o$Et{NeFMsBf^kJl}E zU618!B>4=#v~sRs`DhNmoc*ePrkZbps(%hT#`<idBiD2JViP|D&<Nq$Yu5Q5sCtq@ zZYLdHf6Y2?166O5=51i9j}Cg3b#|K5l*`$Xn*mPNIg<<IxmTV`$@8uZ@*FJB18f(i zIGo2#@-jVt)0d-o+{SY$+dOMVcE~gyTo>faot!Ug$=yKiMhM#x)*Y|QbyME*V*{8! zm+6~ar`r_x%Xb@0x1_injJO%b)oXT~|KgYTWx&eb%tpwyjjlYIv7X#J$lVfz@8j^z z<ZcVT@8|DZ$=wlrzl*<b5B!x2ox921MefcZ`~ZjVmHOWqDiXu?kb5UY_oem=-Elpc zNO{psI>G!uO?tcx(KTDXZ^7;6UF05suuK%_UXR|x8cn+Aycc;8J0GupnfJH$k$X3} z2f?rWp9XvRKV(SjOQg(K%HBc9ugrV!-G7_-?y3b}q^C@gJMV`<_<YwEDGxwwJfP_q zAC0%sLI1tv-be0Xa!-(ZoLproJL%$R<XI|=e+-=C_QZV$WpO)c+_Fxm`?y(uv32I7 zInc4Cr!M6>GwUq_omAy31s!Mk(sUf_Mmxp-gW`YLjF+6dbG@bdSim}ET0i1Dezx@^ z(_J2UPmtGtMnQN<elhVGLwv?T^e)d>!2|g%f#}_tiG)8{$T^3?7D0G<eyWJW55@2u zk6DB}gXEh{aX76LDLz^cm`i#(P2tDso8~c}=q?oW7m*Gn?nFux%8hq-dMW-ginl_^ z+5+LaTr1IBE@+~T9#J~tb@4UiuBCXZGv*tPSHG^(xq;k`M0-8Sv<bp>xGltM6NGnC z`JNY!w{VQbcaF9by`ALlQnK%Wu#b5^gnbUvM|wCG<NGFje}(Ux>?6K>_k`~w?Is<5 z1EOn<tRKFg!a6xbIw`g3g`p(-y(H@qh}W6>NH0eX`HyAkM=JkMl6yb74;b?QgrJGC z|C`Ex&ZAT0o~C#YDOqG$X(RV6;hqU-7ltXlw3F=TN@3TCMhC?$l6wJyJ(i0^>pbzj zM0Bv+U#4$e5HBxSuDQH)Q@)|;h*Ehe>?WRF#Oo1q`-oRB$=6TAZNwcQoa+!RQ`abs zyF?mG<*R`8OO~%2M6=XR7W$N|M}@5X)a>IV>s2M|ljOdF_&-5(Us=MvqGY|P^5ZFz zwM)r*62gb?3J^YEr~khSs#@DVtnt;__Psj14xD2X=UL{ul%`7!YuvH5U$w>^Tl-aO zVzE0{YHc}o7IUa0+>qXySc*2RVJGIJT2nikgs;}Rj_GjM6Rd{2P&Lt0lKwpIQXSWF zt22uyEP9%z*6wmS!*94lrR6=T<yB`1Z8nr+2BXv+r~7rdI*aFJbJB1J=>ZilGUsdP zFLqsUgbyYA$_|tv{nvW6AsAot9Z9ZCmb&7USd7$FCT&;jxG7s*{MA*bME>gPleS!} z`8zEa8?F*%vK(!=Vw9K;b@e8zC23=E75u8QByG6zqb)qg(v@%pDD~A0wWVDX6YDR9 zZf`a?%g<?zKL_mfAn6K@#}%4P=}uGc=0*8C?ZX<b*64b0+9Zcd-|EWE!%6(r6&k(N zb=nl)Ay4jCwHATB{J6?N$}2c&%fV@%dSSS#6C3_61$%wR@MU1H_ZYt1oz7~n%*M*s z3UJovGa6q#e%_|TTdR;i%XDNV*z*HY^oy%f>S1*h-`OuB{u*$$3r73Vf^XIR<Jy$z zTL<=bTjPUAJGwqfPxsF;{u>}weNTNAa3eU&%^}}%vk9DfJ*)9INAb0lFl~2Px8ISW zb$xg7MnW>TxW#MN;@uI&*G9?Cv6_Dz_|Hne=5JG*L!J%`o;FN!&Q;tT-L<a~u_W{7 z)fy4ArBi43S(E%8>9)xidycyr>wq#oSi+O4;Z|_wS8RB*4V=xWahl<(zT3f`e;B?a z8Xl`JJHeiR7`_WqHDk7$!^UA6Sjs8#-5uq7-lf;PhkGV@_JFgw^}e~j7t)oNJHc6A zjNPt_|2{`LFnm9_%gbHhE-wclResn`s-`Y4cSB9ei&wXt)-BK~xIUrkd$W@KHNRO| zpy6zRRxSAiYeC$wryJ*$6RwSc{|Ni#6ZL%ZwLq)Kd{WcnWXNHOpZAFrzEvcR3f7VS z>q##85-#uJFmFDEN`1+(TS`YGm5xRT9dTO5+>B;a9f9ph`fBo(PtF!-bsGJnQ|80y z9P^<-tKkLe|DK1+iv;(xU*5QHvgDV}7cO(-qxo`N>b*(n-SVsIq|;cT8<uGTgzw5X zL{_ua%5`Lw+PWgmD$-d}7eb~-1`4#YjQ%kYy(CV}RK=Ro6hqPtMd-N1AH>6D2W!C> z>Ct28l}Ci92L6ZG&yU6?$hS%2529X<*Me_>X8cH(tSwb6M99YkeB_!@1AU}?#9(Kw zyISPMkKWG_a`J=FQcms`Y=?N8A=>@Sg|Pe4-40t^<1~o&qN?<ysgH9Y*K&87>CT3* z*+>8Uz`vRO^8)|F>|fv~_hyNoce%`Zh<Tw%JIgp2hnTr;pbTndJoO<{wL+eBsPhQ< z`S4?81>8o5`BY2CmY%xmA2UdN)PjsdR4zfW(TJrGKE_a>m2LFnig(&}uN5LwjG8?< zQ=lm<@?1ggN(e7Mr|CCWL;m$K?NF00aPv^}%wP{S4f;7#3;iIyRS;fMN+ZX*8sw8t zKa(e4c^PYc%Ji?VLHd2`^#+KHXKGom4{>@o2L2}YZ%&zSn`@vi2j7Xc;HyoD(auMK zR<!sYo;tH%-X);3`Df{WB^k65QWn#6CVvrS|71!opHaoG2+yBlkr_dBa5VsnGY++f zL)1PH$LS_M%@7PlFwSNAhIk7UEEMiyh@S1orif<cWf`&A6lYb-VVq492v400OM5Q0 zL*o~s_^Ebi4ChvzJ2i%Lr&aCP7|y9C8Dn+s;26%W)?_EgaQ<~rc618D)IElIGy~@( zevZ?V4yH?VD)pcER&1zI(_OJKCk-k3<}2gd^jpjCkO3cr+znv1AvaWg#~<g<=9?j3 z6UY@*)+66V*S3{L7=Yu*`{?{082e4}Od#*K^L=*tP0NEo_uVtyCBGxkS38%dEfC&k zMpxcrHr*-K%MUy?MZD9LUvg^7%Mm*vI!)Xa`1$SL$W)c@6elf5aDOI0<va|i)XN=^ z@33)u5br$G-|Z*QW{IC;dsKM?S>7>6cQ3f_m}e~ycR{o~&|UMEmrHrrpQHYf-aZKL zw5KTtcjqVv(J4GibZqUXghq(Bq56G9Y13{LMBhi029IsP<6&(md6Fl{cRZ5b=$K8= zEP&r%oGV}s0sH3(&|_c?@*O^Y^Khwv<r!cl!BPdQJs?fKtrM_50p#0(cQ|01f*qcq z;~{J!;P?LSG{AlV2Ly1ObqZKN`t83%1cwFO=K;qAaQ+_`a3TXdNN`-iLkaM(fHMhj zSV23%IRWQAp;N#Wf~x|$9nhnoHv#$uTuT6ntN9?@Ab3>3V-9#+!4nDaN&!zLfW*~& z7^IvcpE8Xd?=R!RJ>2)4B$w;}SC(oXAomox50U#Yxi~HmbC=Zba6BA**K<rwM;}6U z(n0?ja@(N#t(dcce=?0{2K_x5elM8izC^_MeS<oPuJ7PCe)DoDgyh}jQ=4ztKKMd$ zFYZ>{Demsp7WV?BKyi1cxVuAXaBp#!;>BHqTYwNWXg1&Hncex#?w_!4Gn35yF4uir z=lMC*)~^8nu>-4lEVbu&hyTM4XafFY2TswR(*T-fq8|Ul4k&khza3SB)%?c}aL!7} z0e#Ja%mAx5iNw2v3LU;;(n*dP&vql%3QM;Nm*iSb8BpIudu}8M7tf1Y(A8NQ)OXxH zXM;V+O~--8e9SOW)2;J)zoKhsA>$9_=Kh^@fUn=mkEx5h|JZ?u@R#34c|CyTUm!YB zrF7$Oq{CL$>g>+_yATYM@^4SI-yLV#hwTjpP0Q9^)chQ0GZpdva|blcP&x1>83Gah z9yLh1SHYW57xbm@M}1QcF0h{q&cMvA+|aE+_Nqar(m!z>;4_j(*S{dwA$G|BxC5r0 zaCczwEp88qeSd32@Q)L-_xC96NvUzp$qb9_bPO>0%X;@K2KLvZ2b$#}rjnmqHp<2% zRwT3_{DH++<*JUewqM*OD>!-HIV~SnGBn;0p<5Ar5lL66hH_RBouqcYF{xtOg1ZC8 z|G5K3yi*Hd;+hv$p*8x3dI1?slhL~>qpc%;CHPrWqh21(_xH|2*PJEWH`QUkwS?rg zVmCbh#tD4+K+RbFnmYa)1wouefU_<eD{7_BTTUj-<Zlj32+i+<NbA@)W@m7M;GId3 zFmPl$+U%>^gm)sGAYes@JXo+hBEi)<>)=0cXjX~QljD3QXq~$LMw!LE0SbSXViyl3 zK|k1~nKxyZ=DuhYpTk3;5SvAj!xKdB!)9t<8Br8;hznV~T+1XVI7d{Eix)%p!u+yU zqvh!Gwfqgmg&E?!B^$Td1wmh2R~hnT(}4k()40N?GWLW59l1Objhv-!q%PqOEt$1P zcO7XXk%NH~l`vGK%aRj2gr2x^x1YLP*;n-6quykuytwV$guN+hBS9Wj&@XDsLiRv+ z;hg$_J-_Qvgh)aaBUBucATsu2oq~A#$H(Elp>Jj`|DzBT(fc&NshdBuq2v@BuqT8b zUpFIt*qX->)`BYp_Hc#36VXfyt`L;L6@qw#AkDr!q%MUw^OjQA3wE<{Q0MnPQ6b)J zKCN%+p1^cI^<nq#0O!nG%pteua~TWMPgs}NNWHWn@c7@=gM7<g`3RLTfQRuIibnIN z@4wDg#G;RVflKAc0mF!tuZ9RkfBI~Q0z$X5B(^aTdl<I$(SmgQ>RJD*b8UhT0Yeor zps9#U>#a!QN|%nfKAL^rNY7mTV06+NepQj4((O)SsANBl(e@K!EFB>CTkPOBY~g|z zZ?quF`bPd%;BRXyY0p27=!E?q3?!yO7bG@uZOS18K0$uE5@R_Yf1BxbUzV;I+NSXM zcLN|B&2f&K=lXFku}1x}j-$;NsYWF?b=708`$0WkY7x$(w>U`x;UN5AJpFsY<*<5n zT(pi~(N1$~iEE3hfisk;7|se}o_L#}CL)7;MfaZvmT9HMf`s+0-l6RPob$6Doih++ z0}?LS5zOv|yS<w`&_LKf@|D<!@W+UT;gSpA-|A2A0!oMjZX^Fpr&^kdQWq-3uMZMO z6Z85?gwhypSED>fh_*xtgUAtg(q1*_DdWyrG3uEg+u|qnF@4CMsofe2hO7(-bcCn8 zR^th|!}${Zq6E&H!$$;qY8R<o8--_x^$<dAL%nJMBbu+v#s&)#4}gK1!&-Y4U;b{r z8Th5wil^DdP4>Qitx|mT8gi2x)u2f|F)G(B>FW18C?A!)QcKl+LS^$9=h9y0Ch}e= zl!W$CTJX^n*D{<<MH<!H@nq2{2FAWXEDz`==%mnsct3ckojhs0)+L-ThCUQa(%_S! zK;Ax0%N>xVk0X4=I`XPM_*TJ<UUuv08}i91?ou$?#QBKFH>AjzMbhVIg7>v1Zj{>F zErOC{ug;-A*roj{01^w0>TxsYYL3B9Khe6T3~zOoi1DH7eT)3aJW6)$-ZZzBetp)4 zO~+qgabi6Ut<RnQ8l_LVM!0qM3LQ7U^*rh~Sekw%GFs<av$Ut$Q0_$cHWSs`PK=HG zVK^S#UY>Ou8Rcdwp{d3%?Ch`2wZH=^DOx;80?}f{@CRaW*U!i_pjI(3(o~tX;~W`S z$_Nq~nA|OjqnCM;GhhC<3;8FMmZyKe)!!SIrE=V(8M^pM6zom|oJqX}BfNHOQaF^Y zaCWBnw%5)cFJIva!8w3~F~=2jyvQ)(hG9=vsN9=zTu0x*uFzA%^vE8)Oul=|57~9* z0HKsLzAI_*F*stubpi%Z$aad{0``*LCDbxZd(DmDpq)>jF+8qEzjCD>rO6hW$`<lB z-I4E}d;eWmf?QyHWmy)>Vd7wx`X@cj0Hagt3YQI97)m1W*m?gJWJ&*W<T38NeoRqD z(5jf2QpiXR+Lc$4;yYgFA|jc7BSpJg!et}7P&gxpxAso<-Xis$aLjAC@7f_|>KhS^ zvYm>sw_vx3xyP8+D9S}GV*R(8e5=kh#ywky{^&V<hlBAk;%v9p%#h!T#*Hf(If#6T zSCac4t@LLSG^1m2fZ$8ZdyluWVzSs6N4!6-D-e#*e_RWXJptyzD>b-x2!r0tcD%&S zwcZmX>B}x8&S<4Pv7tHYz*(<)CYU{KlR(6yKj+xBp~AK2{_Y2utOBT<sMZFFQxo3x z)3c3@$MI|8D%u#^Il|U3^Ze3yG?0BZm`{G97#@bSgBdnj<qWp?FZ@RXxp#UfO018a zX^ohJ3NM30H*i08NGU^r&V4UD?KGd-Xu^D69&BUI<%wW>`$4ipu<X#~^3fNCA5UYn z5}s+a?R9}25mCl!1~!uKFWaV`@sakBjq2)+l|BR%`oKQ4n={<2F$|Ive>kok4020P zmCHmmse@t2ua$RntKN08Oqs<Fs%@;(t!2J4m4fUU$@SBFdd(h}G_Qig_g^?u@ALlN z=d-<yzvmoyavVq#>|jWOrwr3<frTWG&w?k{Vu0!Lm}xLx5%B%}eGCwcA<+|d6a5T) zGkcflTksCvGS$_i)FoN$^McSGtlZVZ?bEG&uuA?j7yv1vH87SBe6hjE@(um)f*uh_ zmgN1)oqDcCSK%MbbO{T)gsB5|xK-+dbyH9L|56O*sT}q)1wQjdoJ;OLC-glS%Yaew z?hp(zVTs4Ez?flpAhGda&hjdSM*aCHct`n2il8?bzYCV)lQGP3y8^T9hW4u9!sw4* zdm~`)=N@{KO<+Yc5152KrhgUkVMSLrz_Ax+ygOuA!Q8cZ_|3vJqC43u4dW4l8o4*w z98^kyJXoFoRewxG#x4LNSO#GzeFu}On2USRCD$Qds505Y{87)td9TyRMr!P-Z67*y zz&Q!ba1uyK8q07KX!w9ktr%D8W~>H!7o39rFpKT)g8VhOv2$fva%MiOSi6~_ZCt^B z#}NP6;s2TIJD<!ow?~v~9wyb!{7^-rooOVukQ81s3q@DFYx=O<wnWKjYPJdav~g&) zJSEWTUF6Kw>uPNFlOFpH%S2Y-?(PP=sR+a-cz+|{eecoQAf=Ksj$c&gx+Cgl-neIE z9(?3!qH@t`pz}3dM#Awky-C`M$jCiHa7|d`M%%)ws|wP0S4W~zJz`3tThB62+fW*R zmywLDvRI+28bAwZDDiXXh0uE`EBvKTGiK$_Q%iL>{(-Xew;+YwS5P2^+h<|o#Kvv? zVZ~cBvE{|pcTUO5^yBHfS|Fn;bymr=k81Cm*@st>$8FLcGtn<}BukMC(JqiGHJWwM ze}e_=Vmx9^SalBHH3vpjXO5GA&db^aN-wznPJLBRP)s80-9OfV@0?f3z596hj{P0e z_MPQQ-|02&_DXN+c)eIhzuZqQWLE!pBN^vQy8?bGK=m235s}o{Xa8UdVmc!8Rc-!@ zI+bU`Z4Ms$0L*_5LIp+hP<Qcpk<99`_Nj~O(*>kCyTmy|X^%1>;;+pCvMP^%UwbDC zv-X9iIqxavZ&a0?d&;SYKR(%f4Cj3CW%3U#&mJ7?w2BS;5KWpwcnpoM|7s+w-*1BS ziaf8NBmp}62kn|;eP9od%7x`Mb*XK-bu|({P8sn6HYPSawsbHhI`=<C(l(1b3yvMh zEn8pC@(wIKXBu~O3gz^?H}{<6Y5b`d$?#{~uCwWJ7=WWnmf6%I{;M(+3wKtTt-3^K z;G&d2`nYRl(`(1b8&%NgI}e0dyUJva%{@J4P4|$+^VI44bMvR?){aZZtK5CFqhyM~ zjMdSV2-BRHrb5r}4q#FijgJI?)#Ih{b^dz|r`j&gYQ6N7(QLhR-H}yM6GPYhU;AxN z6jhl(lhEVo)?V$*=UfkHi*1|W=qqtTuS9HcFAne>_HyRtmZi$xEg-jv;GaN?(*!Y3 zR&AvF`HO<uO7hhM1Szu<U#E4ww!^@BGp)Fz+i7w0Ux}y;_&jz?EFD&$Vptr1H+0iD zU7KVepsV;``S?-sp-FPfOYCN6ZW^IM2)AYUH?i9Mxb2rikqwD$2QT&vyRW{8Tkv)y z?^-MASz)xp?_w>#>Z9k|XuqG`beggGrd?fMHvV?2*6NKV`cZg6&sB}$1BTdvOjSkp z^~O8-Uw2quJ2i3~lx;aI@B(Ze3QlHDWJE4JM++=BTBZaOyQVdcOj`!{)c<`ky`pg) z#f=O)wI!5l(evgg=xPZ9an`BE1|)VKBzodA<L^u6XgV2}yYi`AJZ-v-kYA(X?+5V| zY_tr&IND9T$bITr>l4Y!vy)#I)e=1@yRPA;y4Cx7cpDY9d9|T))iujBO(s-OZsO6z ze$pZ`m-Ca4|FAQua7uBIfRmtA3DS*1#r1krvV+SE0Y~qGsAwd-8x0BX%)Eth+ix(H zelO^=D)Ht~`h98Wryt34Jb)nzgRF!{S<U&6MZDWrc)zSt#UH#V2%WE-!9Ekh!t7@D z<}Av^dc1Sm@@1X$AM2$%I+l^AI&97+c(xX8#mh4s@~BN8k2P}=sl7$xt<d9_^SG#n zpVM!s5$Z)f7Zvmag2Oc~BvEOeb-mt-c8Z~jJ}9WD{FG9a=}j%S_x*a!rMg&}gwT*> zkJU?zO;g$S8nD&^^W%R$BI;gdIshgh`O+jrM%mN5x3c~lDam%{FCF={qc*1;+xuOw zqA)sA40rKtWqxZ>R~)!u+SLf3eomMQRhv8yB&j#$^uoQVx0UpEEcV_0+*rS|u?pPS zoTns?Km0<r;?XpmfuP0owGYm+e&Kn}NbWZ1q;|Xg1k&EFNhc9_on+~e#Px`Ylg@OP z#G%r8$#yI_=)@V}e@&NT-t833^_pF}>}Dgc=c|<M6^(^An~1wmn_6^8D*k2YT@LAf zmW@q(ZpINMedTWh_493WyltH969@H!XiX)2B(PK^vcJrBpFgP`>=*z~GxY_oYt5SL z^l&8Pht(wY=T^&PCFITK19Ksl4h=!k%O1n}fCsyb;f13gjCGS<rtc&4k1-dtuXTMm z>+jol!gx@Wy^od~%nSBB3!kh5v}G{_UUA4SOD&`1ZX82Dq5RPEEHvnDGnEulB{neE zf=vu4W7ee6`EeE%QB;=4lQZKB<Ch49^UPnetn#>}9MYqydLhhp4`4^)C~eYTigG+7 zzK}pZQ;`QDShiwYR_C9#^z(_DY?1qfzKZDyxrs={2P`;-S53VmK`SyAc3KrSX|k1? z^r;XE5`@=Hj_K!|(th6|p$*`Y5nuYWR9-fCaQ$XhhMbSnBa-ETg3h7wK_p^FXwb)` zhirixtdwRp?Is}on#APVAs&=7m$CR8uNnP7+=A*js_-lLpOjqT*SU$WL*Wy6Z^uRC z1NZb9@oDG9Zf|r(`AmpyolGm$_GsI=Cg1v-lH)=;_OC-$d`9clPp3G&@`D>NYTxfn ztNu8GMw|V(FmPj*^(0euJ^@V4sECxQ+1Ngd4yw^Au{%p^{Np`H<?61}<K^TPxs>XA ztqg_PR8&40zDjahPia(JOd)&IVKi;TZImT5Y)GewWR7F%^Sy;lHwL4${~0Zyis0V9 z{Fbt&7@g~5So1jn>i!mnwaUxCg|yD?c%f0gk*#t;VK@aJK*8+kjp?0c_Wo&Jr)wr_ zl5JH-WUGdG!bR)-u03wd^px40v0KeO9ruKj&YP@#VoX=5z<+UDJ5S9-^OcjIWpV!8 ztu4F|65W(QJ-#gK1TT-w{G%`%_$&1fV`;w1&DQusWK@pC)dMH|#nBuw(47-HepAEX zEzoZNvR~Ep+<GT?@?NXwgM>XIY<;CSbmMlv?!9+fQ5TVDo>N-k)qdQKAPR)-Pz;Rr zeBl0zh#(8^70(8<Juke0DX~)*U`;8{EFHi{elQ@J&fJc@zYBGIS9;&3EY&ODjy>RJ zR(#zE4eZ=rMRFyu8%2FmU(LGuYOk~{<)sFvp#?XQip;kj0!+);!75;31*O-U2u-<W zyCo}MN+pJb18<bqRzB{rB-|ztIAidvncDJKNN2GZa*$92b`Hm-KP~+4)my!-4;a8o z1eLf9Rtz0!+CXn+CwZbhi~icag1b5~WQxa1;_T0w5%+Q#tl2IseX)rE^mZr5eLUHB zjgg8DPZHW>>T&MU2moqh_Ncc?A9bd@O6*f>=D?zywO?^R0Ph#VxaY*=F9Kzr??2FZ zax>Vac4}&>=1@mGbaNdrEUVzYDE-)qlx;E>k#1{R*Rfkqk}){Eq4lnqD}6jDD9TVd z{WK~hm6YsHA0DKsc<X*Gcv}9!P9o(`P-5DXG|G!O>EiUd)2|@5G%%{$()5c=SEV|P zPRe(S9^$OzpU(_L+_abJD1YAf(c1+k-W-jQoD?wKTS$qp-QMo>YrrV}3;qird*-XV zBJO!}1<dAvW#YeL!#C@1gNNK!R{P+L$n?Wlr{V5VZFvndmME=*nxSH5Z6-6;+yY4a z_Q%aacOAfW^Ih{QUVE!<@g?D&D6>R*{c&0O!Fus=x8YbTos8t31TSj$y=#vN?Y-sY z3u5qyKmtE}X=*>Ow;<@5{h*r9<~3{Voc>-_`bhk`^OPC*EhboOZBhJzzMI;ubL?EB zGHR=TaWL;Y{9z^V|AO>ye*-^rw^J)#WQ*+Hw(Sxfw~3F>;zE$Gj}saZH~-0=_4G-l zzATSY(cX);Cn5W&k%C>_Xc*z4pB8D`kxLZ1N^jVPKDoiD7(sOSeKwQyKAOwJYslC* z$TpfAV7X#~hW)m2mPYcM$_U#nul7-+*&y%M1{h^5Od9zCpTsh&=gq)4&*Qi4`s)yQ z7U}T}{ziMGkoi>E2ON9VPkGYrzjxB@@5q?q8jl@-7)mAjNYwctcYF;6LNv8=BM%pO zDzG<(j4nB64&DKt$lZ#V?#bLBQ#zjuC}gj+kYJ+TZw9RPp+)CNZl(_O<aUWG6sNmL z3FcXNb&12hIv4C?Od+umjp#hlm*P5^kw!Y~b3;MTu9dkye3#{ptouKA%2>XBmod}2 z0LiYN(zJ{&(T248w|NM3SpNxYk&fXRM*Kw>FZ5<Y;8O_tG*TLR8Cv%DP*#j@c>nNu zm=O*!4U*req22UDN|7dzYIyooF|%Ek@p&Y~-!>J#d7&V3AnvPOAx6kUyTEJUL_TBM zZey9I4r^+<AZ*}9rlg&*>oArk_q#_E&PK!`;L)m#lVG)O%X)Ki#@LqhB@XHpvE3H( z9?^h=8R?8(Smm<#&8wGee<hMFL7(_EhOJfzeZL_x37X4VP)xCQ-vLsa>P%(v2tpFx z&AS`SwnKy@zrH>6nfktkGAY&&&>cIHc*a|CjXwUOO2k4&Y0-K{pYV_(MxV5hBBIMf zB%i#HR_4A=q%JXpEu~99*nN2jZt0skDH@{7M#4)KEocRzw&_z-h`C$e5n(_-fk)Rg zx=4@uWi=vny_{%6;ZipYh<B-r(5rGOfKUU5XM1JHJ$2iyoR<QaNk>Ql>j=P4m!0Uv zkRt6%Q`7*h{(A!Hz4tYA(Dz|dEqyfTP;FeOJ3{bDNH6~7GRk%X4c>DtLJ)1pQ%LW7 zs6PVi3qnkI*K5jlk@z+Z^7F?&nA~MOVh~^(h*sFz*NYCVXWfp%Xv2cxB1kboi>NQH z5MXM3wQv411YORt96)I>?jn=FzeXNDT<W7f3qKCUW%>C*)4^3si<~|`WW~8Y3Ly;S zT*e`ETK%h&J=|UVZ#((!w&lLr{2cdEL^9VF_QM!YV0g>t=gW7SWvh?Ati||qJTqIt z$R%oI;-Q26)f>Mk)bMxr!%^RRbhe9+?Uc&JNTpv!y_3AkSA-5?L*M^&%PEOZQp>JJ zx50{V5By7}BrGiAz?e%AO>CachDW{mckwW;DzNs;Pa}+n5PLg-MR7e#mN3~gW0Fx- zW3HFII8bsXXt`V7)YzLsaAwQ9QTPis&1WtZ`Wb!sL3?2pXIK4foO5<bx7t6`fOj#1 zfO>|F5Mw3~pJzfpJWA4wUiAIBLgf2pD`kkr!y0mYWkp>;A}Y3qs_GcVXqQ3&J0RtX zxVtC>ork5$;hGUc)yYYhX6LON+HUFQ-Aqznhwinu+-BSlm7V=z(ykeDoIldg88Fte zr60Iv5@`@%CMgshY8a52ACnr|il8ZT<>YU|dKXKWfuF3tGyS8Zf}*s_Tq+yCYeJDZ zjxrrnO^c_KSx&EVgl3O{zfga>VE^?_$|kL9=6kWhV_+nGK)!I03A>%GlGeSnd6M6V zM~q@M=onj8GWBy(OI2=FJK2_gm+~O4kdS?y0G9YtHK)BYPD1EA4WZjAtgzhQt*-$` zixnS-El*QsxH}j0?fkFlS7z3i-KS_PqPCX`yD#4;)RgM#DdoLn<UfVfGb})~+6f)( zZ-YN6UD=*Vou_@w1F?0>scDB@7rc8SD+L~<VZ2np7ecJ$oIkE*jlrz-4;jV^37u9j z;uE44*$pd)2XDK(?Z}B=j*0)WYm_FHAzVadz@rcF#PTdD>Gi@a@CT<BOuDlLvk*Xn zXWH&S^xo9}Ub+#?CSW(rHTLV|A+|g-Xt5N#VZnn_Yt3a)+rCk@a;gr%p03|P@Hl7i zQ%7*cYL~x#sM1Y#Csm!yie}+7)lwDuNlm6bcSiRsTN_UM4d_JW2jZ^46*~mMQXdb$ zy7~vZOrO&CPZ}nrvQ*5z?HRE=`gc^4XT)^&6W;>bm+2mbYV0XX!{&|10eRY~20j=` z$OtB0J(^d>aq*<l#M8zuzX_|GoI;IOS2|IfkcN+(p&JRJrn-7qoVq~<&oHzX?(4pT z?o~VvqTQ{MprW7D0|feUED1ipW6v%3TImQAA(67sKGtCh%?q@Fp>KsWpAUq8u}&Eb z^jj+inGj_$w&HCel?cRKG80I0**k?_=3{Ur?D`Vq%l|8euLYYmk6aU8x$0?7JCuwx z9idS!MIrqyVBh7Y^`>i&iyl_K;%0*3W8`TCWa87LyNjHJPFFM~Q@fySX;`qcQrDkt zt4NBownp04gkR>ujDD&G+#j-*@NP)I?RCZnQYg1@rUzM*^PQu2)M#Y5N(?sCRF7oP zEMHYxK$$<|44S*yXGS&#III8^ec?T1<Od?l<QmV54YgGQ>VrJf!PNGomA=z9*e~sc z%ioOJ<U3BsoJ^Iae(`<PA%talK#y&qHX3eAvqscDb?Wq+yiOug^#`Pwv*VID`5Bw` zDflPxNplZjvE|Dw!K-t&E168aK5<a>=&K!pG431`RIY9fByZ$=q*V%{`*DWPMOafN z?sb1k%`@Z^wfhRpnuSR1UCI;&gNOLZyiff7h*(>=bm@1<bn!Ghzs5X&Q+%+dg5R<a z&6WSC--#`CM^M@h6p*3QtyLth7&>5;aTx#N%ckK#bImcZhch<fB=g)9JUEHRy+@U* z#k1*0H^S3EQ~V_;pfRU#2v%&jL`d_qaepv<-xFz9e-U#a;~O(^-}^2^&yTy2L(HpE z3*1_g43O)twiRVAD)k4#Yr78&6((AS20eE?nc1MMDdLpNq}abae3WClg@uH-?b5d- zu8IJif6<gggC2@(qQ1SPOb0Z2J959?N;)+(BhzzEwsKevaDD*2vE)ooB<Z|j+9R@c zcoaVfnexmNz%10^#upiC*ThZ89BHz1^Wxvn`a>NcWrEp*Oul}anz5Ue3A7QWdOt>m z8Yvj7g(IPbU?ig!5q63;{gs@qx|o{mv&yK!TOc`cMAC99x73A&U!N<^7%h$4K8g0p zrJ1j+c5#e)D3jo03huP|TG*|^?t||VE)^yJ-NdZQ)HNXVh;@iuEWe4+wjv_?tNynB ziWGJUktbWb_Gp1q@jojctRjTQ#f2*ujk;W%@__F@e8QuA2dhiF9t9(=5|}@>h1q^U zZBDS&qU-2N70DfF)fS#}iab_5BrOq2+<@$B(ryvN;ChdJf6T64WgWyYtrCf}7^<sk zkF@x~y?L5y^j)pF1CY7nmJ?2z3C?$aH|S=n>y9s?tUykUeW=e6R2Z()j!lnRiT!a< zhK)EHAoJZyb%_74B3p(MptoOslOC0t_><9j&M}1yIXOs~ZI7q|5s)nqXtsN_8Gijw z7x%}(OqNX@e;cgoXr{FUY#}mUdo-A6zV*J6dzqdln`_>l(a)3k%iy;%Z!~otM7A{5 z_bzRI$fa|%r6KBI>VJfG!Ax}LSVnr07KPi_!w89*`*}zN1R=op*-i*J%g$8)eoOxe zX-DVj#YhGdaWHS+qZ*+ZAz%6<SEECpj8M1zktvX{n76$#p<+OhJt3^*I-hD<?T4yx zpCi?gi#EGME;`UGQV<@>ACdD}B##GSL}CrfH`me>Cz?#U5W#!pl3K5URFt6@F>AME z2U0>%!EbZzS92lkZ~Z~>5Fs?6ugfe?TaXIn7mjF82W?0d<%37M*n)TN;xELF!o^=Q zhfgW+qv%K9G&$C1MvX$d=c2W{+MlnbY{BC4>U{hW{gdVO@E4i+$_z%z3;a{$`jfxx zpyWZM_kF@=;|$f5v6XyP;`j$-IgaOSJ>`EV_QeIK*C3FLFO(xX?o7_C5sJf$knDcZ zUTg7?GgnR_aQJBN$!f~g#*KXhIM9i|Qcf;#$;;~QJLg&=pe6q_z;{+a;}aDkq>(&v zcE5z>F-oq9Mw*%|7F0|a1vqPQLe?Hk`?i62c?Hgzi_f~+H!glw=W`m*fh`}*{pByo zTF}>fm=K?|5*hIyKWU6lRv~u444NxN(PzB5@9NO0cs(5!(r&5k&G=pYa-QWx@|>`~ ziaZ_hoT)M+mH!;z|F*ghL6w3#tK#igqqhsfXWh_sqx95R4AacmjP%Q}&#|djX^G;f zJ;>vb_01HL3I^WI9C@MXv3itS|5a~z_uH0e2KPT>$(*4XmJo<<Ql#~Fd|Hxsq~^V| z;zn=4#xBh?s239PV~9uv{Guti$$`>X-v=}?X++R^gEhAUKHlT_hw&3}g#)#}nuism z_KO!N`Q<D5naKMcQb#b`Xy6sflF3;7VsQY>An#tD<oN=`&Mcr#K=~^zdMV&wUdg3v zuMO|P+g){n=L3pGQX9c`cjdwy!g9mEIj9$60h8OoQMfQG?y)Cv=qvNZi%GFZYib-s z^J8|GJ2Uudr?nk#>tN5Pt^7~o71n)7VTp%Bagzi6gWzXsV8kWhBmT>zybb2;h(t*% zMnGMXvzm<ihZ9SRhgP|U<>v4KFN~L3`hs(=eiBwwe`T2W=Z;H>{=JX9DO9ZUPto9@ zR2m@P3(5~Fo^7BU6cruzk@c7!BB34te&2JS+NGq^Q5w&TcHcHL$Q$eZ8E_pvgM9jg zu$u%{f(iW;ika|}{}a5TmyiDd0V)K!P;Mv%WbYP)UP@!N>O!$6_6!wzO%LWpGPFK) zE2x5f2ij@B3bR6MO9O`Zy)yqwDp{;>S>(AAjUT3A;HH^%vTh;AE*oPE{tgoDV+Xa8 z$X4SKs4Pp!dy7K?B7E*Lc8fmDbgfILd4_tDF59<!%1_;Z3VQAYy*v7PSzA+$DPu;c z8P~<q9E`m2mRiArimiz2BlS2lF|V_`c#cqo76-W?iF@x;wdNJ0S+!2oz2!37B7#I< z?Ul&Yb@TYNN;^D~t$OQs$NX0m<*`G@#M3~_{L}v4RYnmd4OZvc>Lze~QH0jjJJ&T& zwe6_R(}Yzqc~NCJwm8Ym8T=b<`*TFcN}i9Qac#|CF8k`I4(_;#HFWP#_P-c`Y`Yb< zf0OL2D@1%WxF$1$;Jv4QtV#onyDrq5v+MOGi3y5<ADKUGau*gW!wM4?XA-wU@7ztx z?*6%KLY*`e^^wDuYJ{1B2>LdiszHA<zAiX!mhmhO?TV;g0b4m!7)wW8YJD=QKh%nB z%x}yt&jW#<zmtkiXW8qxJC6Yk=N>Z;UoG_;t%}=qBxYib`FfpC=01(H4+Hr)^~#n; zHMcB3OaSUQx!q<3hqT&SC<W_Z-VT`&>2Ipz<i%thMoiCPXzM3{rxYxxk$b{A-DT*x z#>doB%LGFXQlNi0W9_<@HXlZtO9l$9`l;uZ-8ru|s?jTZdZEf;#8orL_ojpBS;M*g zrn-k=f3p5v{iaPVAYlXr5|!Y8W5G*(eUA9bS;1s@0xUB|D}3>S^KWSXN-KYM)*mUR zkGiXHj#`@2U3_|%71FJ437xZr(&VDx8o}#pCi)8CQ?*+TSwX=L9P;SM*2pV))>zJ= z4#<m(xh-Mc0?lQEvqozsWA2Pl>mV!G`@px39i(-LYP|9e;Wu0=dYz09JxfcuEUz>M zkA>Np%VDMyq&-uqWmoEAX7R;W1Qx-fD^wePmlMO0ae)O#y6_Rb`ZCfUUh-EZVg*<^ zmhSfSKV1S#*S<RKdM?c}8-ljHw8`zWx33H;-zMi55gcM7lRh<#e18_}`?dP+H-Idm zV}B#JnC~`hU6!hc>R(2c(~j(q_V=-sQQw1|=8`pIR0#Aa8}^FD#rn<uRAmsHfMe$j zi<n<j$@x6+*A}}1_lQ3C2(WsOgESz|IJ(7ccGUTm;U=w4?A!)eq0o#O4sL@PVgMME zczP2bg5t{l3NLgrZcBiFIw(c-blv7*)Sk;uN@)Aggx|u4e^;PvaH9$aZ(wWy8SmHs z#ZAG>f4B!SCODEvX1#7E9w8-6(M!vp@VJx8Q03IQE5B;U<f6(cl0lamwgR68AunE> zP~w3o$)Kc@YqbwnbOE2r2wyjqyB{YT%;=_|Z;tMBP#i-iEqViRkT%g}plmorSdf7n z$4?&|h=>&!7N(=r!!N@eNo`~prsAc?!GF@{#|nr7U~;dL>&f9|<R3<o-FNkMsYtSp z4pZ0F>0j7m@C4;0^!?YxP}W2{QQ6ciGd8<EG2F0NM#NUy47s?o<t~!Mtc$08+|kWP z-k-u9h1o1^(uZG|bf3|O<5aV}1po6ON$rf-C=GJc_1h_Z7{6s!_vVF%vZjho?CqTU zb+lPH-p{Nf<|-GWZp*2iksFKqPCS5Rok$__Io2S%`G+HpBR@Bxv`%#TANSmqK95B6 z1q=y4v$x*;rI-jfu{i7f0`qe7PVP+DsNKJyCov=?$<fLvawD+v2?EPb^Rt7^&+zFn zQiBipa2scTa<G~7jO{8!5v$l-s?U54O(C8EBk!YMormNU@{nBl5=i%AHl%;~5psYC z)p#SRH44<nGyuIxY)$;q9g;w7P~WFe1SD9IrQITA5n@I&Uc46*x8720DENZf&xP>M zsx_pWI9b@F?Ec*ubDLV<CL$?}IxHM13TeYW^cP~{JIdBRUW9v0VcEV8pO9@Cgc_k? zYnU8TIhtm*4{oe5E<qD|vds`4yf5m-3o-MYQYI?onz)T+n*rh4YW<`Du@28fcSg=7 zv{+x71mVdatMABX)y%W#4NY!MTu>N77zj}q=ZQ?|YVPDz$3-TD#lLcjc$qAoUdWUK z=Pb)B1u_`8#{Xd{<ahs0UPv!m={Sa#cTRl#5}w4233ZYP4wq6bm-+teL!79*kyG8j zh~wG3-!hmY*M~MxyoUa4oE;g(vtsBYX5u?n#c5Qb2lx>3ws^{`)qBCPV>%k@fyA(J z_lSe3-$c7w*OR{nA}^58iuThWdU7|(+YBivfY!W?N_lV5*&Ia=XvPl-6w!5Mt(6AI zvz1t&m3aD|<Ze`luom#$(VH<znt|}`t3Lh##Eim{)L+H>2C6^+Wp>#?tTX1=#KWJk z<0kw9T|npgO#-e?)k}#<ktoN@>snI-$o~sIrLoNWwayN>cVx<W=jp|Qe;RMiIDR?x zs^=b$q849v_qtSl{x+~6NwJj2Nfo3+o~X~1LuaR3`9iV&yHixs@LgL2_U>uc>9xr8 zcVVlC`!a_N=qahynL&wYOZKmJ)C7$*FMF4pY&p2!QJknZ{6U+_YC(4gwdJ2qIjLs~ zEcEb~ra+{GdS#OroOxpL@P*E}lzc2Ab!c2{Q=TrLM}Yjk%fAB6XVR#5URNfHuHF4k z#sB&bb=`Z=aMYlu`cE9uj|7fpA*w7@au6v?6}_DUG4>Iqr(yJ>nD5%Gi!871;l*+k z9#szLpEzr=Xj8Vpd_0Cb>u0LSn}g1cGFsjMzDDgMTC1p-1(6XQ>xDyNmWN1*(cS}a z6X4F<O^#)9j#dIEc^Q8L$YW~uxQi`2|4Ys-N!OW4K&E99u=53|9(%_Z-kc);l3|sT zwI%%$x}{#6&=|Z8{`Er>%8R-*hJdzQ;bXh@<_^_npUH_pUXa!(+nko`Im>ukw~Wo& z6ASB<Y1+Lt27Kg10K{DitM9?AwGXd)C)vA@WH^82QTkj7k*@zPcT3Kj^s8k9KPbc? z3%(7t{*8iaD|!!Gd@GuL>_y9Mk4qzvZbOD!%J(XRBICPqa=LSH?aj+F+4ZD~l2gr< zAd_LX!4z;YnO@~0c*!4qzT|m)2glEkWfw5=aC4g1FJveMLT2dR;Q(@ya!L2TqrGRi zS%<f+`Os{8PWmC6Xf?d5zvG!i<U=cC`63!{ADH;&;guIuLss%c-nGoD)rW}6!IWJc za>7lQ{6wXObQy$t?Fj!BIUn4w2_YGuMju<k&LI^T33LU7vo~xI17+%f6%;BDOBHSw zK%fj8C}7~u&*evwQBiKi;Nq_K(%3PsDZ!gn^v^%5JcyzG=u*G6(?*=K!L|)qofpYA zzQ0hdyEyjuVw4N!xW`PV$`KDRCnSu<94W9M-x{9NtuF<Z`s@2~e+!~X0Thc%oP&(i zPP-C4rt-Eo8JIx<Xeapx`qkMg_S20WnZKvXtL!a5)Pi#VaJU4GCaR}{RF85SYpe?U zdiB5lqAIeyzvVO*L`gqQ#@BFXuk5GvXH@Zzaf|mRW{RUU#@Lyf`iSODk()jtlGvVP zO5qhFylFsrSwXr-UVV8<fwO)z4}%ceAVr9gID`fMugWOIq5BNLoEx!Nh0pkxI+F+5 z_$h;MO2SX_WqcfVsjZ8!f5!O#>+YoMV1NHWt+nkh4RE9w;`|)2#hVIwSl`6E2-#Tz zA)*zXNpEmHwwN9(PTWN(v?$2mQ_l_IM@vqJiyAr=-@6n0aRQ3kBZa}Yqa+evjo>CD zpWtAhlDJ+<K73!j_NVjS&#Mis(4rp}|Cx-~VM{jHV}C;TS6Qy&G^8&z>91b7(kEnd zm@;F)GB<`rOmFL@wEESSP&JOsKhN~T44Ay6o3?&ZKUAR24gYScPA|0h>zpvdjKl1z z)WqHwlkxu*8F6+9KKh7T1)r=l&Fz`uvCI7+cFD4O4i-8fS$2QEqm7uRpyHSnaVYK< zLOvhcw-gapy`s?rYK1h{vNRd`xW1%lF`cw+qPtmcSmCv-Gas+N>{8GKi~PSq#&Io% zW=yhmmEpwHc<{#$Udi!C3XidwZ8Xh)yIJPE$MEmtGTXA~#Ccu*-ymamse^<H<Z=|V zW$Xpr11eRwZ)qOs?^4?FNr-Tuyfax)GUY~Y4(2)c^b2rL!2o9n)2o9^+w}i>OXj%7 z?)JbhkW!xr+l68d)9@BxUaG)qRX_?#E2n9Ht6Sia_^?e*1Jzzi*TUO83e`F0Oz?7S z!*a4&AyYTyC*Mc)6Jz$3_1p;rO_3yXRGHOX4_DyhJR`Zcbkio>^U4~c9}0Xsd-!^1 zLuV@ofl;tx-QFDH*AA*`IVXZDow#%g>;L~iGV+%^3Sa=acIl^<RqmWqpN#S1=Nn9( z1xt@8Wc*IcNpB*r0;~5an*oqix&$DxT|lC3`W4{StmHwgl{ex36FCINn_>pIej<eV z6CQOksHF_Rq(`rm2z#hXUf#csh^*4cRpm5FGVw52l+^&GXvX=rX;5D+=5X-}c-Qyw zfqCiTa-2R!i95PiRPZs{&tuv<X{kL+*DRP@wj@%h=10hWp+cHF*b~{*c|F7aW%E#K z$%+i}Os#UY3FAkNtA#ZESLopgEx`V_O-EUqUSQe=;HEShjCC(uDk5N^yI}}cd$m)2 zJ^5bk5Q$M#IbdUW<=k@68I&|$)w`{@7fu_jsx+yZ*&ge4kh#dA%pJGQm(+W0WKKtJ z=15VT#C<A0w)Rc)&o*Z<m@j5p{Yr}&c4I8ti`QXhz4X2t)18&#Kd6vI+Sj3Pe)^2D z)NoI0qM~z%$&_JMW4^8;e5K<|eeOI~)Vy0hN+@?QYYTBt<kULW{EWZY<R{Ji+LGSc z#qsG0x5)DPT8WC0E4yk5W5PH#bAwg6<|2w+HI6=Wo&KqdXRgS%BKd-EOQt}ETJj_k znXC?vWE~AG=F$SNGZ*K9y0`1t++p?dBWmt6QJxt5L=t<H$9;2a;^+i+lI-}|ezb95 zIU-#h^)b?F*^F8B_5qYnNXDw3ngw$3j)Z6|<~XFSGIWA`yiZz<K)O^DiMnq*IsAKY z^p$GuE7KM-%q1+VJsTCv6{wyPPh_du$?FFfXUmLEEq~OWRlQ#b*Hd(?OXu9lS!=Yj zmd-tWSZmIWq+EXBPdpV^H;DRamXfd-wYu#za>x)NBv%#idosh}e58ZJT`t|;iGM?6 zB=tW>&>yVMJohQ7rEc2DOZ@{^^xPq25<>uWtdpjK4ZIIk>!!`qn_6d-3I=W)XA*}7 zKc(0hx{d*;rxx9lMB~&OADjQenWQYmK_RAF&}sKZil|9<mcQ7r@GwOGq_uJlq0X;W zKPycmTt~{O8s~qoz{So%KSw*h2|0T;V*pT}E9o{oArs7=@ocQ__a|Y~;iZ`~DW}Jo zB7^QFP93N{>K>&UO!cGzGElh+Qz%k_q#awftNIxGfgCH`+0}hnt<4THeb>*OnAJZp zcjb4RE_>g)wbX&dbOOz_tpk^@&YHFrmNJoOtO`Z;U8elq9hkjXf~!QTtTq~k2Y~v$ zog6-$d}ZwCC25&9Nk70?`t4rFBbh}#kE_O|;ypq?y*tLE=w1=y^1BLYMAB*wYJP4E z-=aiq_|J_N{K_A0kCK}*HN465%zxX=-f9SH{?qN(p8mwPR;2U)#r=YwOUstYM++8$ zN>#nLuJrP7iW9oJ=Ji2dt&xw)-%0qIwWuG*!~%yOQNC}P)NWzjcpE`QZ$qw&nsEZt zgS@vsLqR1_mFv=jabU@FCjj`92I%EiiCkX=Nkjz_Nd`FXfn-Q&xO9W8p5R76quGH# zFcQpFUiUnOuDj)S$SC1SkEOTqRnASSd>KL5bYn{RDHPyg5va+NDPXu9Y)#AVrKm_Y z8e7}S60YrAgI)_6liRP2H#}*&nE%ZduG1)?Y8|3lZtWJ?#85ZJx~DCQ{nQ*kPMQH; zGa+6jSUzm&wC+`#=&`!|>U~%LpXJvY{(o40?jb4g+03ur=YeN2k<8>e>l8y$Ul#VJ zKH`L9O?i~2yl6InD8!eMQ>G+cGTTkbgM$f!TXA|ZHyj5Lloxw^&#Bf;if(`f^e@t$ zJTWwL-6JwW3Y$&2VPd4E1Qb!!Zr6~-Ysnw2Kmbjiq`DhTq=)B)*=2=0%3uoVeUGh) zdE9*EI(Y(!%~`3h+T`!)<ZQ&H)yKg0uymUb$zTXlyCxu6ZTrB>2~~Vq)B(ba&D_7L zxbbT~Aed0f4yR4~0hbL%x4gj&+9<vebLj6}cE<vn{9zC5)tYczvlqOq{Em}hkucC6 z#n?lmB0^FnNR#NdOXbfBkosZf@t9=1FK(d{{IE6nrIs-(h*>*RX+5ywDex-kb|)E( zut}^~2s!`XW$g2FP}i2^M~`BxlisE3qM5tyxRiapPn1o%>w9Gm<0-&or2mEXPP1gT zq6iDmp}G351Ob}u9W;6N+hU7+R04);Fx;7h{5#f>@QgaFTX`*HLH|tPJo;p*Mli1b z)x6x&e3=i<EBAe^uyIeJreUJ}XPTdnzc6}kLGj4-oVX&_<Xm#MFL9g&hEG|1nOB1W zSEuFy^FN<%`NqNPW+$)zhU@i=|A+!{b#uTroIa1fDdFSw>mwBwKQ4B$d-rW!*En~N zS8qi0XeKk^8`0rK^+uu`K93o3?uA24pz8NFj4y;IkU-DBnVJRNHX2v{fOSxW*y~)r z`ttMFfQATvz51HL6u_$STEOqc@R&@nq1G4DDBfg~iz)w8)+~!;xy0{US6?Tct?uve z;mZ<Jujf<F^-kQiAmeG*j5`FEmZuaa90*PPF1Ks5e>4ma+WHh7jFErd>#9G{JnyoW zBB}IL*Xa$ySr|kKTu8~Mo=@p=O3<7d<(^MePG!G!M|r-MnhtP|iv*^Xzoxtz3Q>Wn z{@t-qb$5|e|BsBv%=5o8o*0-(WLoLu-&{Z}yr|vb&#Cd>|HH*ANwu(F`{2n+9waln zepEd%h1AZiG)UmgZSGp`Zk*Z3I(P0??%nI`SI-1!6(gta4BRBZUgl;xfk%N0_W$>$ zVd?BDzvwZtKkU<^=>jxK9&#&w{#oGqLlh2|^<roy9V_Mh%F#@Wm6Olx63U&@o+ncR zD@qA8i(vfi(JWCJh_5yExemTWA9h4a0cYW6`Y$QA>rj)z{$L$zv$ijVkNh`}Nr_TQ z4G8=}tK03`+cNygK|7AC=#ZCHy#D*4arbxAT8DtfQSqIut?D`_{W<?RD(7l7+}sPK zu*be_jR#kY-&%t4uUQa44*ddZkF5~$z=#ltt|`1D8VZpct2;%Vbvd#c;YQ2NJiSj- zO8Nx}x;l34xOv{6wNm<DmadGaKuBkIdE8^`vrIL$?6uYZ!OSIN&&LL81R3<=$o?{K z;|M>e&-?mSJ3d<p+OW-oMpH53MHofnfa*aA>3<u^7Y&n-<<tLbu}3=*O*3p^#p&|~ ze%hwQ4I2K*@?yQlj3s_&;M2f4>qtm5ACF6O_3PQe)}eC-`}9P{O-mNKE%hHUw?}hO z%53)>GTBq9bf5Z|y27J#OQqX<!aWlVY<WSBme?q$N(e@<#C>Gq5~)HBtp0v&9%5il zJzwwlW@QzXw#P3+$g9nudt9s{5b;XC{#9>Lh*n~my}$Y5J)E5T(Z&?05PF)y0}(c9 z`Hz^(dwYBQK2q(u>oFQJL&>7dgY;<(uy1geMz#q#qfvDtXdeu7>E^%SfKh7Q)s`u# z+C!*5Y=<Xzrfj^Efqq@W-0^0Y@W?w=Dro4Ike%`VZ(~$WYIT|`E9oxJLe!CVvR%-q zSmn(+IP;}Bf){05cuujk<wQa=BqkD_3FC5yS4BGY+}RGCcOIe^B)YlAU&phYTcz29 z26^NR%K7(<!z^0oCY@}gH#>}-;+Su35(ArvS~tgf{X>^Xwo5?)tZ<OykDW+Q*by9Y ziPe6s!?x=powIsNPBcii_9ZfgX^4|TJ=yVXQrxQMi&=DT^tbRL2U0JL3{>jY$<X3+ zc^J=?P)e}yL!;S_PY(8xTVBMToZYrPA!MkdZ|`yzFY~@RBI)<Gfe&8<%DhikXQE5? zh++!yYYTEoWMx@u7d-WpxzZ%?n{<sg%Gkk6;yvY0s2{En5MZz*orha;!wvsga%oE& zebE;AAbx&J(jz}IO5XV3>JQ?Uq|@I%NPjK{Z`{SWZic1rb>s+;FK3+iT^5<Wf1Q_j z5L%87{=t=Cf7H<XZUAy)8@-G`{S?a!78f~0j!rc7#WE@W{nx6G-|BHkq---B++=iV zE$UB1WkzC2`kC=EyUwiN7WJ6-&<8<WGsQ~GY}rDp+&VTk?hAz!#wdSTNmp*wI0Ror zir~OEhvOHr-(Q=WUAvVlwwaS6!~#u@nM@L`19<@h);Me}0XALb{JU+t7z@9)SiATS z(OKhtQ`dwKzR_fJv-YSG<IWO=^tLxlGq$tW4UN<uc+TpAqDcS^ZBuBnXVKXpB|ibp zR^zOEJ9Da7s7Vb4@|vWQR01zM2vvJjH_~$0K2Sp!evBW^n(#wN*jsjaWR~#=v=)tU zHz<n(+9a>5Ur@T)pbCS8Upd@tQpK`1koUQ;E`@kr#V@(dqors{4m?7Yi=1;*O9pq2 zxiI!?t-6Nx=Oh)a10CUWyW!wG=o7x%?3=LMI45HFS<ai@Iq%O!24y2pR4h`NU=*|? z!xc#>=?8w5h`pXSNz1NW(YW#!d-t>vfi484TEja6898|5nA8eB@98*fMvX5pKkn6F zd+LfEt-*5`%JB)bPzx?1K8DgmN#6Ie-!J%BhS9Oys}w{{rh-$KAlPn83$~#KX_X#p z{6Q59Vn)E)CRA*^L@^)9_o5eK3(%6!+`N<Gcg8_!=_hY^dunPj#vq#?cSY2<$8MDp z`AqthG2``It)C;~_dZbjHzECYw3evBdR|{iiX_nK{3F*SX7ADYhhxUd0!9Abuu&pk zu450zA_Z>OWa@VH4|x=mejL1Uq2Ld5QNq}ml_wct@M&_zIDwafob@)IlPN)%q}wj| zW1w10+4QzoE0j+s;l$4;cy)}E3_&YJoPe82x-DoRMJX;#W3HOrnkJCvC5pB~aOj4Z z^mtPLhWL|sS-BmDz>GnOEl2r{YEDnRN2v8dnrbh5jG6tE=uSW%%m7DEyX{~3_uB}& z=Q7o4(E;N;KJJ1->>G{YRlpT3t7b|MPzEwZP~a&476xvb*%#k5ttv#0t4o8PF^Uru zr8;3&n6HlTz0^ijpMaT7%7RG(M_~8DH!)Y$Bjc&V*qVEck?^CZqPqB!lhw$9z4%te z_^8U<1A;Q7;-^utM!>?y1TD)X@+!|IllWqW0-86s6+JrvA@gW47E)5z5JzitVUqW( z%0h7|=5Ko06P3-$-qyv;68^6f_a5%V88~w(>cE}2)4Xb4L_mE!B5v#_qJ6P<SFHEw zk)ikB1FT7fml9b9`(Qug>%KfL`srEvAAR_opPop5e8OlEfqa|#g;u0Y$@*DXk1K<B z4>mJw_>ty&lH|RYs~3^qWlFFn$^);NJI=}5xD+ISlu(q1n%^~Tk(U`+!rjs`qLL3r zpy3ENSNJ5#W97(t+=nv%#`hbv`fR_r;SVb^wFr&dU<L^AcaOEE4Z>aCFH)13#w*;* z$Ol21RPy(Hwlr=+Pp&=v{<FgRDK-EcJoA!IJF^U5EpmJvU5_VYYf|nKgY2eJ&n!jk zB-~M+PQ;I>?<OXv5EC$c-f9=#lfE_c2m3PyZ5>Hq`TwlE=N(D@$K7#43Mx&&0mFQc z%S-NEMNXscb+wPJe`rp(IrzE4S+~!)-8$o-i2U1<LnReI!>V~cx;(RdkNu#lugbv0 znF4huC8O_)iI<XGV72QY0q}ZRhW|I63!>(9f6<7i(XL<<4Uue(FdbtY2C6Nv*G-yY z``70~j}xQ1gB<o_NIUuRL*gOf&F@o+GaJ#*C&u$T?g(AD<{DDJXXGTeVE3hiM~I)( zqlgOq<{*N$BAIBSUCyVf%e(Ne+^HpZQwpDa%+t<x<%8-Sp(h|l%6f2<^m{o+;HHdq zQtffjPM>J#@#ww*BTW49ArFoWF{GYR=h1o-Jb(0h=-(%c1}^@<LD=y3ZRWcgygr~o zR!tl+LM^cYW3f>I?PbsFcLaMRooZ&yX(P-Ul4MkF&1n<_3UootZD%VE*A_enfj%6B zP9%qSeZC#WAu7xMXzBqMgtQMX`J4Y2W#<^%Y4mUV+UC?#cgm@4+qP}nwr$(?)VA@f zZM&!c+~nTmp5!Fw-G2FG=gG?6>$~=6VZ0>_^8~;{v}yM71HXfXH4>yx8&>_<hY*3t zEoI`I)~3e%)*SrSe(04-9kGTI?faO9yf&O@<vCD?3+J8m`w5u7O2M?4uF{TsU&=pN za|%7%)JxsABe?gP215NL&u|v_)ma6+V%>3q-sin$OgrQ3Ie_<PikaZ^ZKd~czD7D2 z1yAxLypM{pbuSr@4K|kyd)<Rm1{_q&P->nsD;eG_R&(*u_G`u8mqR{JR(m?veW!;g zs`LSGEx$sg*N<IB<&)#p27KJf4C@{6B4--kYDCd~e>+p_yeA$b9eP)YgyqC*Rvqj+ zOX{o`zG92>4A50)QK|7{4A7bOR^*l+W#*mb2FBF$Y@CcfYV|Y@K0o6SYI#m^06>*x z6-F<M2F`2MkFE30r02WfsUPR~Ya6Cz95Wo)IUN}L#yCtJ{JEaT9sjs*C-dh79=iKo zBA|udw~22j9^1ZcqsDHy(Hdu(PK_d@4+owHc(o_q8`HGojBY{cbN=htcW$>C*Yptu zx<6*{PCR$Y1o3^f2|NWsOASP39cc5Iin-VQxa&DqUCUg9YHyiKZlzsL^n`5J47l;e z?MdIX?tlLL@TO|#47hf^eZKVXbx?I=ZSNf2!U`hTx#?E;<`fh*SjBg^4m#;s^vUO} zAxHf~*C9@x_FXC-n@ZSWGVx5)w$&B635t{w4zhJV=c!gG{+#tpglKTQzeIQcwanvi zP4@izCHZ?nkM27Z&fGgZ=~ZHl6Y4eD9kJ)#78Rh~yc7A5WPe=r9{O>${C^p7xeEV{ z5f{XEDr0uQ{pbHN;wIVtSByBK<o}To_wD^ZGves}!-%u(`~MknJgvN`4^A2XVi#Da z40-0XDNg8!@FX_FlgN^AuCE>xK8(?9gA<y;|2em-6trv23gK}VI1QffS&nK;-l~{R zvf|eIXcs$zw&R39c_f&l2A$h!hOLl6T^HSP)8X3g{))WDwI=uA9NQ{30s!k1-1|Vi z<Cere*ijEZOTT=<09e;Vy<V@N0ix^D93K!uE7<D1UcAB14q;9T77MU~;!mF9%fv{v zjL-2pG1zwm6Z5f3U%4dDJ`Mzb55A%KQH{S@lfSb>OGmk-Z}AlxMjPfuuGIf=qt4R8 zDSDWbugxU?t3i%Nh|nZ?1_AS=#tdI}-}4MV(QEIO0(AV=(W%pNbU!We5=4b7zEfD0 z=IRVvAwGCQuGLAX%?;TI<K$yoA=D_Tk;iroXG$4Y1wK!u)@2PdDbJ>U_@f>Rqy8Gb zIwHPYDX~mG<_&)98*tLo5acO5=An2vqDW$yn(#;xWV??3+bdJ%+ZSD_xy4&;zq0w# z)7cG=ZG@~HyPCDieq`Ba3ES1`QnfmK=t`@+`EXTzGC#&n(8JOod9^MiJ1y2iddmD_ zyDr2_DztN3hIuo%B0MMI;n+U)tSv<|Tb)aPZh@)UC3OPJX8@0q=31PlmP694@d}5r zu;_|y>&IqP=b~$j4B-?*EOU!z*A?`wKMx@GGPBh^ethyT05ul-Zr(P?1?|_@ARbE| zQ&7!9iHz?UFRHdS-+v;P9uk~aRLw?tt*n$?hpIigX8LE@CXqA-)vy~OZ@{s*lvyPb zA3daeQ#nr2usa^hqJk@_`VT#CQI&Bq#YH;Gw->FWdu@lBx0Lw{w{9h{h>8tg)r_H- zQ@T47^Jl`DVbP{hc;0WGh)e5TNyYl}zEf4z>_K70T+u6(t6g_V1MKN;pAzy<?M@L5 zWU2RA@NR{S)k`PZ#UtK8s(<&k;fsSSM`bqy4wWudpL*_$*+&Y6PbPwGwZIqkLVU8` z45HW^U5!L}=#spbX>ZtzW#1a@uWCxz9_8m)OT`jfywwfsXhi(WlQ#<PE#8qATR){o z?nmXm=$)UI5wD3UGP|?Ks$l@`(8^JF6SKjVk7&s9<JJ%k^w{PeMy+<Ft0<bTCMxHM z#h3jKFV$y8ue3FS`;RZOUNFk8YVYW@(zD!~5EY<m`8o09i){TLUxZBeqWIE+`gQC@ z4_dY&M6*9#w|;ku#g3(L*gT~2%?8r*OaCRt%&n^D0_;CaTCt_5H5-Id2Ax<hSJBra z<DZ`NHq!)CM7B)L>&$acLT&eU)U3my)ys~TYsVtcf#<-^u1)Z(I|m?z!_dnji?cfi z*2SVOH|GiSEs*MfbJU6+R;n@G`^;o;>>rZbQi5z9#vr_BhrJH_?)tBn*gD-Fo*8mo z*d~uja%OIs5Zsg(_gt}EP2qWLJ-pN2oPz|q-8))@`y<7&#Z=tRVkahrQ?sC1<Wl3w zDKn8J<W-%_S~A_&gC780=^QVIF;CPqJpoJ;wocyHwR>5Ym>uu?Ve~thq|d3>E(0r1 z2Hi;Uc4pExO>cz^M>KkeemWW7i;<V05wm8smZ(a3HPw6-Q8uYFp^=AC9v{`j2?6Mw z<ldr`G90NiJ;|0_P>kdUKbMwE9fnstK6i+YyO5j3j&IoKhnZD?S0>5V@3TX<pFED) zaIDi<oWjscpqEsiXbl$gtmwEXoXc`YrLfM&$tNx$IWH8=;ek!ROIRyb!PblxR42jK zWgR`UOrRNEg@kOz8ylnpjcaN8l@(N`_rnb0N9GzY-3{;L7r2ju?avmaPE>`aVMa7H zMg`i3rJqBL=cx=U5-=!J9f*f=#Kz?!@`|YRSv#f4Hal6JmREk!2M&tTjIs$GqM+eK ztHJCV!hvh7iSX9Am0CY*5HbvvtraqYXZ$0YK|iPoy18@A@Nr~5&?Q(vU_J$5MP#0V zdy-qo%VlhyMV!|J-z6<(a;U20=Xrf#{F%R})-RVzeZOHB0a|rz{YKqNQXb!sN?i?i zYz@ATl3rWdA>JHrvejUF);WG%dZC#KM_%uiGrk{cgK%W}rhKU;@KX^Q(@UG)Vah+r zmK@w+DPKg~eEh*kM;3xq1+8P-m-A#3x&*b)ve{dJ>z4!D*DA3MYvt<~*rg3QS@W@q zFjLV<LH?nUsx;#cuQB=GEVkD*9V>7$`4C3rT7(YU*(|jy8nU@+EX73cW?3X;D<31o z>~2~}yEwod>p~ifmj1R{G)xm^w3FF8X5&89>kukc_zt%n3c+UHLdS8O7b&pqVd#<W zZT|Rq5X?Wi1!RKbAh_iEVgF^-gLTK;|6OyX;akKO<8}=UIWoWn2XO(0fy?$cD|*U* z>J=EmK@S!GY0WQsYHRy)bGvW*!kr+ro@T^8hk{TZMK~M<mGl)wU4=+fO$BWzA_>uj zNHac}_qXo-6oVeQE)lyTr!prqGdDN)1ipgITY0T%XJv(@hewA+iA5V^@`G6Y$=!wo zEK?p27k>7gzr6N}EF?Za=Jw(vEeX=^_R4xF0YGq4$#-wg7koP@cgJR;EmiNt8)pu4 znbUtiB(3NmdLb{*c)Ob?)9y)JLOFz1+D?4pGmPl$hBMni>smQ&gF^uGh93T<!|CpF z`-G<ztHB=U9>t#Yp3FYnwe@NzCwvS#obmkGI~fX!x5zt-qogn8nc{w926@QG(S95+ zGygU=SG{LhHW@qGYu+j*d{2C5i$(7LG;oJAN=4m&?^bkpq82#HDEBqw3}=a~q&xHb zxetX4k>HSPbF!`&elvKL+O8G6A*<CV1n<vIJLom*4!{3aO57*VGa&^4kjl)~cLN3b zc#8S^b9B=;6j}6FjJjT!|MWL1oNSAKDUvJ{S9X9YmQ3kR7#}eGxLi}vgdGO`*bbH) za+(BxbbdU@w#prFmLS)R-L@Yln2uEc1e~rkur1XqQd`yqS97x~*PK-)!d&+;TgnUG zPD<qwNlIy*7xsi{eULYBqc+3wt{V#*t+kZ6Xitzu5$NNB8bal{FB&7tqHX`@B>W7y z;A?>R6*P&+D}0C2VlU_j#qpsQdPmD^CM{Z^OvCez8Z0H(H+#y2SyD9jh{Nw_@JDnl z@=7?4^kV*2;I6I5vv{rVBGK{uX1vqf;eDf2%(XOU_olq)fnn)b(1UH2(OhTV>$n=p zaSPs8AX~tg_odscZPtnG>KNnbhO0sjqgqaLV&UWEej{GWz)*t~xhNH;V*7xDo0^K! zCO5b3<|B;pGdSc%pSSu;33(B(M@qzc*hf6phlr=~FDmYU;1#MqS!sYRdJlhLtm^(i zw_w#f>U?V&lgQBe4MQl?7-E`WhWVQUrOm+ls*+=Y*}2ZA)^F4BgB+MM+9gXhmB9V& zV|hFe0aH@<>ni%sUvJ7%pI$wtCvMutnwV!5jw}A)fO)B#$BkUl4tVMr{a3D(xImK2 zjLg70I@PBYT;D|WFY@=;nj!om!aGKzZVW@<IPE{Zk;la8HO7KbJm(1y4esjC6oC>w zU^_{(w7}4G#s!$YvQ<RJUub?NOLwXP9?QuArb_7e`z<PQm~~tPqa5N50xB8QoDr!? zrq^n85T6zXLlxoa^c1Q&sjH_<50TYsT?8?P%Ry|SjaX)w75614J!lDF8{|;9o0g4P z{tPSg5)BFdU7AX=;~tXfch)_BiMlP+Uu%p<iB(D-N~KipDlu`?G%Jp=tc*5B`?_6R z%U)I_tWF;3SD$v@)-0g!U>s}-=C-DPce|4ye&2z6ZwdJjg4q#(a>?&)bH7!HB&=L} zxN)x%av;*5bVYa~d18gJoGSY08zBlRY<xmxKPPo12f`gJExG?~oHo3gI?$0TnCP`} z;BFd|lxT_}8pYwDh<ki<&myeM+Enzwwg36tqM5&|9+K^*$(~|kmK?);3<}wv5+hhv zZz;dpQkP1uu|gOE$8aQ>oVHgh{K64zRWb8wS?y&n+ri?F6W8Ni)48hbE{daGu=md4 zoTL@A*TvR=0Z4Uo$E?U*fL5@RET2q5^Xhy+?|>cftu}B$f2{W64kR3}(F;B3Tmi>z zl3~2gd+u+a@f$|}T*levZ`eUgkW?h~Yt+<VVgNF2`%kU;ozyU0dL;M?MI82!6{h`< z<~~~nfhWih7T{XOu6Vx{@ROWJ&JX~(pO0_iZZ%lfA3Lnu7I0d|u7MlKK?1BVk{jB+ z8ECiET{^6r7@*Tj?vQ6>-{!t|IA6mTpj*O$Xl&xteQy6=@*UzqUX&Z;KvbegZD{Mz zGMXX%X;<#nD~K;HFYVTY#j&O1Z_g?@8Yu;%65BgZ89wPxQE=bE=8fADNQjSSqbKV9 z+8#7a9z@dhp)Ufy+?fm7<;GHmOQjj*EfW(#?SD3_5d*Mzb$Gjo^n7r?!DQBx)gU2} z+mKl*`l5mXr-jK}WAr2}AvE%=PyS!O;nKWe>$Jk0_{b#Syd{DWP5o?hce=sesYSM3 zVYVlJ*|L2Bar(f$R`KyX0JHzqM1<n0jGK`-aE!YJPPAce0atu(JCU5O->AEWj`m3@ z`)huKeF1A?1!{g&PcvHxX?b3UmsWic_KkAqhH#E!$Mqoayb*9rcF>Mx?l1mE44ZRv zH~JhmtWxypUG-di(*^5pBdDRLqtmhj-P*zW3x0Z^CjTDqMUywt-wEN<wZe?Zeuv%f zQ(wl*?*YH>{thXnGyW>Dig)%~PB_t!H|p|P|Gj(Fhu2c@{u?L-vi>p;#*nEt%pUJw zi*Em$eicFgn>>1k!tWJj^lZyGF5H&Lzt7*5|BALuZ&nEpe$F6wlDAo0{>QuGxU92& zuSYZcn?xdoxVV;QXZ3!*Ht9RPIkz{pW1F8*BbTGcX#4wlT|Mkc8zcwdsNp&=w<{H! zEFXAo_=qvghq$-CovNekL<d}B2Mf16aeX)^?__dU6#Lo;G0koStT!b^2M95E1YRrz zdL~e6aX$fp<jded@60j69v9vI^Xg-ADq+_TubwzM)!}K5p^tsed&5J4Y8P^s-58s| zS{@9|-(HV&698eWfDfKM@N8lo)JDDRNVP6hUxAU>R?Hc!X!elKQtU!w*U8y`L=$$d z`c+plnfT1(36WF^&Nwq4Tg1m?oAu%GA4Y{LGqD`6+k9W!)nC5;Szo=$7Co#;<*e4U z4;1%WNbWs`j{IDr36A`kr;u;qAAowHq{xEa?+Kw5CZ71(jj~N;VjcZ?XlKpQl{4iP zs^U|*gM%OJxA?=eor!eESIQEVurRimLb}+PHSYLX{HZ{D|1g7cwN$5YX&MVg{0b*a zN@iiN?O*Lkg|Zus#4Ksp)4P*vhPz5(Z<%rpbE)uYq8S$}HX_?60e&q{+Jib9m=I>J z(?xR1p^W@PA}jVQjzc0}16oPi0<k4LoB*-z?9-^aX6Xi&?1Uuht=!QkB1u;T?0+py zy}v^B^1m|6%*j3@7q{p?BbBz+YQk2d2Sh$o#=5E(p&ynh-WSYyLGrp(*67q<^%NB; zFz$7R&T(wrcn%{{YgO;kZEHEy?~deK4$^cfQbRK>#iixcFpKpzRkcP6{t`2Czb^;J zdUZ?W*na^=9748jmLJjAbc&EubqU%FGUF9=vNwsg-1gY7{T&fleci`dDL<<_J9m?} zG_;#A*kz2KHdpI}TWr#&TZU*<1)l!6TZN*i1YqQslu{8blyWG${OPtxl;A0u8t>AI zfZKOq?3G-sJ;R_`*rQ-b!b#0~-Ayn|A+qp(eJ`&UC_FmQ?zL?{LyI`R-|=zk^4NX^ zD~}{ofW0FfajXdTD6ZH@JAI&HC>VLz!2IM+>DM;mOZDH;w4!B}ku_qI9Z$;*M=b57 zkuXiXET&_~8+jmM$dMcn_H1OD>b!LEaFcjCzxK;X>YqhPpJE+5HFMO?9HwE&*Ua`k zajo5bKF4cCIi@q$`W-qNhrf-YWxHP8UTD14O&^MoWmzrLFCcggG`<2!gUfOOKL{%X z<Jj9gZxoP)QG24jb7^{JyiOX00X`D<?Iy06QZ`pA?S*y4lQ4J*6aN}55V3Xg&mre% zvguF`*x*I01ih{kXhK+xb}%8p+-CkSD?4tDz9z*V)?)>D_`+g3oKOt5xK1p|$)$$4 zkbpmQnzj-(vvLvFw#JdGJuIQBx6E114WNu7`D2vSss`?rC6OkQxR^>d!Tzfj*$zaB zx3Fs4A*6@4T7ice@ZdP8A#ao7az!fc(1lB}a;zE7{$I6mU-$f<h84AlXVrsKDQhUT zH&3iL&7ZO+0d%ti)CntLUm|3P!BY21QreUm3E?jb^9wkOnJIi2-cQqcJgkfwjd28O zL`1mx=2$m&LA2;SgOdZuC*kLq@gpMWA>=pI9{-{V-i?YPzP{2|fz4==wbG)m8GQs> zW*<wtyh9af%7n#2znt=8h@z0c7<y;v4sB8~=F$mD6CYBUNscH_Jwa3SpiRWX?L$qv z7~6)mvY~tUY#CEDl|B$qn#CH;OeG<UqpWooXmnuZ>9(QdgN5NQ{%)LN7yv>Kmv>&s zIC|hE_2){0>k~bl{1)UXO@PHYG+@cY5f-oe?`)`D_5M)Hnv0tsE{#6VB>8j}d2v#o z@O6GYofyq`N=%PtieD!njJ7UF&6JUoQqPfa^c`=*Ieoal+s+fH)w!`B%JiZ%<xhmC z%f{=G#n1xhu#{x#`@opl@?9FkFyR@U<r+h+hEf~n?blVwy%D@cLo$x(5&fe9L9=tL zoQLGI-=ySw%g-xg4r`{&;SqzxpA;$&H2N9EArpBFDwd${`Ad-Ha1|qgBg<!l&|V24 zaqo%ui##;&AaXF=c7^(zS&7cxeu3HH|Ml@O&n(5qmb=X((T<Cy-4TVLxs(QyrDIA1 z!MD0M%XAakp&z6ViH52W^qWKqlp-vG^&`YqDrFG_IY*9z2`R<oC<X?f$5k|O2OfZP zvR3Tw<MS?;;Sxhgutn1!$b{TQvaQH;Lq*)-#1}2WOjOkUwM|-0C(*~ZoGJx1SzSxJ zNTQY>S)c7TL2>Eb9MV=PJ@K^X&HOrQqv5Kmq_3@EPctJZqi#)B>i&*nhJKL&-Q&e2 zF;p$)9-49zQ{c!*Z}RS1XtMLg6*XcW629`@FkPoAy!Aq(o=(I<j(b<sZ{uPTbh+j7 zyWe70-%=O`&Eml8++3xvJrWXwWglwR9+TxR7JUaAG=YMnFd7AmVG4#PX;_f7l;^?& zRc5K!Ef^d%c-?NXl!tY_V5AxzG8X5i&#ElG9r_#5aSW3sR!L-r&Cr=+S;{m9uLMRJ za1uxY<z}?4RIFhdIO|D_s+Fq2TDna<&YR0zxeT+KwsF(8ywlDFN0&zW=6-p7+-Wo1 zj$uzmP=l6zXE))Kq_}^Z{mv&3`42$6P!I`bT#837%w}rd)9_6!G)l!~yZ9JUqgoN1 zAb1zPOhx(Vv4m&6sHte!qKR`>+TzyXUGohptdbQ01O!CymKC{Upr@y2qNi_Qq-O%o zfTboVxamaW7j+GX)HmAquMfItP2qmLs%jEg^AT(c2nhL~Th@>=z;ay<tw-Dj#dpx6 zx<&iB(|K#y&dJtubz=1w6cyaruudQZr$zHG{ow8kUl%&VJWet|HEXJnVLA2-8~d}* zan^NC774&HiayX@+b~4Db@F5VL&<mI7whQj#6L;XEaNc^n^MQ^>j6eto!;_XBxQ2Z z0V3N@!PE<0<1Ortz!=u3wOzrL-rt-m#2l%gEi2I*?GBJv#RQE5o!$iJz!gD6`Fw1| zY(d?AGphqT2l<CV`#X8NpGk%WGa*xchR80^>fxD?r9hqFHJ~=~dp3cMpqjv~a5m_h zFfZ``cy{r3feo$(V03qoFANX3_@>DfrUehU6dZU0xkJ1W-a(#7pDa!QR1XGGgvc{| z@4+H6tY3PJF+Z?1&+5onn}uYMlGemBTPY+q6%<S8@JH82GYB4eqQ~}xj9or5QaREg zamE602Z;}>B=h0kHc-+G^3e&%JDDY<4yj_lX0beW-Mng-$&8KqnO)1&Bt9p*oZp<r zBT~1@ae<5qH;Xf5WlI*~>axjIcO`T8KEq`u(1jefHxBapq`}t|J?TtuuZMSoF@jn; zqUJ{WKG~TV#@mp-A&7v2_d~YNiKplqgH5-J<GdMumkyqP8t8BA)5`60xIMYpPEb7d z(SF~a!=OaGSdB~0f%bIbk)+pe7CWzBu|6}l59`~^nV<d`VSiJQ<kO3)e&R2qm8A>) z#$Vc}YDXWg>Z&}5d$9kGPo2^ke4{_>ROD3$MD>{}8%e#WvS~GsYU>HS(47zO)AD<1 zKCDhsgLB186;od`-F%m|QfnJ(XqK{%%=3Qwx(i)mrc5-u8U-S&&E#v6&&EZa)hp+V zcaPZuSngbdbp4!H9q!NTrY5g5&hOxtXl%-Ax+6M>X0Yx~{^-&0$pkb4kwPDWuO`<) zUP!XFf#*oDfyIz4+JrvL?C_ekHedk(p_{m6HLFV6Zipc1^gJ|Gg&M0PQnjFth+n9Q z+X&A-DKPnYo)N-(7#pn<Qc8xDK>>S=`Kr(g`<Hbdw9ea26=RK%-sm%LuG#iv;~|vu zN=DH~u9fsthkhGP6W9W>zWUOv?e_^Vw8<LP<73&M@9qYSKqlPT-JIVNIx{x^+BLde zO>ed;t`Iox>l!y8$$0cr>(_8OmZok?wKfHv9t=$nnW2C|qrSGYdh<ee1^u!7`%9>G zO*O_kMmq*(B+D?+kle}CDtDh^64bEzuYMNnJ&~n1GBgkS3)+t2@e8!24`^-LyZY`L zm@K>@o|p0s^UlWLHRDH0$NLU@K<|S!u}tW`>WdRQzCrfQH8P&I9e1A=!MhKrbVUgF zfvAOBm^0+;ZI~Tz$P8+f>@F2EujH)vKYE3xY=bFBvreM*pcx?CnLNQkPya@*U`7<v z>D3P0s9t_DvK~E#vAK`iB)562%v7_yx?k8Bo(G}HQf@GkFJ7d?hYb5##l=638WWtx z#l`aR1U@$*zFT&!&g>jfqSRC{l;WIX>*0wFs1CgqH>Jac>9a#q#*=xwl(6?5U^%i7 zg04*SH=`j~<Wwi~oJzQn_9O6rT$P0iazz|VI8r0AO_(e#QIw}W^hgVYR*h3U<e0S$ zs$qRos7Y_Bh0EZjTco~;rsGzW<n7D<sxU=OKQ0nbAsVm7s$Q1?w#q#Zr@G8<Gzwi9 zr?*rLRhjD@2}UGDUjlZRE+08dx<{!97x9tS)I}-F`WagCEFYoQ6<X%I_Eqjy6t6c4 zEGkAjszYr|H~kK!OULI`yv$|P*A=afS^jX^_uv_O>(FGgNYYg!EF?GMOmdabox=dm zjXDS(D^~1Be3lXBmW1fu_S*?wu0<mPgbYBXZIC}PC?q+Fj5Fsku9@sJ_RKLZ)gQvi zmb3c-LDq)R(roY#xINo2>^!vwL2@-O&qsC#A%IM#Xy$9w+Ns|+<oi2TURT~4wiQIe znMRHORCI#Q?>HBIjM+vSE6?{|jD#=0rZ@4tA5a*i0`QF7J00HRkBZJ56x|(ASlFS{ zrKzxS7IjUwR2poA(zkU@q-vrzL^f&NI#wl7GX_m}@KI<rW4p*7xcsL<Coxyw7Ua*U z_<ac*TIGZ*BWOfg!r!H%Sca{mj5VCCFLZU5@!}o46?x#Bw!s}ph8>)GNv~7YO73gq zzTbZu%cAZ5+aR!aK|Cy|ACqY|S;9X+BEJ_Bzg=QRU5xI_L|jb8ms3}#h7F0pJ7Ho$ zb21W+Jd9k;)svE#(!l_ZT?xH6uVi!2H?+&_tI6-{2I=F21z*o<WZYvLVHa6Vnrlvv zW#8Vdl}T;W-^eR{u&%)H2Aln>CamY`Kf(p*Dr@I?AYF1KZy*q(DbK~gLa9SpZyy0G zLsSVl*F^0icXk!;V&6-Lu7h^KMuQ&QP4b7~PtWs!ZGpn(OUx_g$2mcIP?%lGE9A3S zC1w-rBkZ4}VIzy{kcG;zv@6&V=4e<M@kJm42K>lR`j7mmY1-llqvbSr-&Xew+0Scb z*hJuzlG$g6SQ0iRkQN0{x&c)xE9Zw*DN5E@8?)wX;Uo0|;qOA;K%Rj5`U6mPkQBzF zKBGNd7#drM4NoU-C)pjRU8mEt*Iwi!=rN4z!-fi2zQ-@<dSBd*xrYtpd0s-{d66*; z#c6*W`IwwXk6&w#>sK<_nIbQJ|BQ;}4t&24*^VjfwT?&aKE~{W4fXY=R!aj%1*;sZ z>;~Cv!uZrMN7(%BQTEY>&0`pPU;*g-k%q|hV2!Ca*`)QXdYSt#e#D6Q;4z%IlDPL_ zq{~(gXuGzEF7$iXzz)%gT|u!kzia=kz<ALZdgHfW4a|_^THf3vkL@}NPC73N4Lh-M zNKE2{weuU0C8Zg^<kRQIjww0-1ZfBer)48PG2TenctWCgG!9>|d=y}Et*i3AeA4}9 ztZ&K#Wuy09hkR1upCb+wK?&-w5FfG~+##QmCM4l8{h#Gg>z}baKb6z~hWT<I@Ws=A z=WYI^r1UdvKUr)g%7msx*4FB|)U<`Cf%vo)-twu6z*8A!w;T_+Fdh4Dxay~t%Hy-3 zNmfEL-l}OlPe}Qc$<MoTe^b?dW=lq2e?C^ee3bke={6;=RuRo85z{o{U;G!>RA8}Q zpT|>jW-X{*1wUjrtw(_^CQ)XYH?G<inYq6E+U+x|ng{-jJ=GZ#cKo0bW454js9$&| zc-XXbj;ms0%{f)=vf>)Mxo>?uR(7?4Q1RvjS3Q{KKpN<wxl}53NNss0I2>N*5&Xz% zZ85<LIkM&QOi`4yf-}`nmbY;ED)Zguy3XT-c+HV>&gnCQW#z0LUIRuvEiYokQ)=`p zqdwe#r0<^+K|kfdKb%zK-RKGF5gzw7pToenu07VcPi$K`ML_meM?L~LOX3xY^p^Y# zdou)w%sq7%tFQ^%A}cHU1bE`%*Vo})*C1_?mjtz!DvittS@DK)N1LP-nYK)@OS+bv zzE(}c%@r-=Be-%e%Hqs-?r}JG8yQ@9Rl|)*jkG8Qw>e{NeL54PH6`CFRZw{91KlxA z)XdH?9LE<o?eP$fO3o=h9_-~<LnLHa@PJ7X@y7H&jOMs4ti)>xYT^;cI2I$TvKa|) ztpN)NI%HFdsyOk{!M{#AAu^T%vUaBt#p9%$8u&DobRD(NE=#`KwGEMo;NG20vWOhy zN2;1@HYgozV~!&u#j1wg5rYnK>Z5Q*IoefAZSS&GidUS;mjPEgg;vtfYiQ_ctED@d zL0W!VLDc-yf|TSRZCwf)2pOne5nW_Ye_kRKbuIxXP3RC*ah7qFaeHrK^*et^kCGMb zwSea-)wjx7h3`;b_cK{JUZhV(cC!{?dF4SoLq>t-U1`A@2*CpifWg5TQc?U@t0ciD z2;;u#YCu+?4mJ}&upG1bKFE%ctb%?6cL8sb#5u-*Xy+t&g0GUqJ!yiqhV@ANetyjC zL-5b4q@2BNhhOx^_HP1^wh2CXg4x=4!FNgiJ}$FPdTB}06}_zGgv=QUkoDa5p5t}l zuH8EKK<o&;g5`1jBKTuOrVj*!is6=3t*R}%A%>PsA|oJxA|?P86pOw7Pk<2C$yK?z z;!UL-QTtMmYVIl#8iJaXzCk+G=6%+;ZpOQ25uh60qm(?p9UeR2c4m(&R8)AL&hB{K z?%Jc*JNj$lFHN>VI<<Gh#RR5oE5Y9q<Fec6*IuRtHGivVHXfdO>!t?I%dJbif|Bxh zfl?PUH;A=s1>b4LEW?F+(N#o&z&zCPpqU_)e0HeeRg`BTHJmcT3uHvmRRXsMcbco@ zzk+GMtB{tV-EZ6%Rd*Z-xE7Qrvj<(V=q18DGv$P><R_Ti6oXcRV0ID31*K>Eyg%Ua zW3|b<z<tRA0Ded6H|`h53Cr$gX@NDoq}8yq9bnr9i@va*6F~sE_m$a2a98lnjhz~z zXU?Gapw7`s@a(L6k@;8Hw-xz!%Ci)SG+y0(>3_aAo`@MOyRNXCEX%H_jx10F-~eC$ zR?uw-rfU=)@r>(%XPuxUK>e`S41-H^q2hHNlGhFuL}8fuxtKwT(quDpc)AL>ZhROP zc)eA-wGYXLXv`dAu=vM4$^k(DdbWjr>8qqUS0$82ULN;=W7Rzva3RPsS`70_qwD|= z<U8Xp+gl}qGgavGmO{kjLE*_zVv|E9a<qu~Yk=gWKpH!tM}e+Ll|NhUuN>8|O!67b zBlCv4G34}QwGX0H^mI(~_;*w8g?bJ{ibH%V{aE2Y3$qbdPtzSa&0F=IrrkZ2@3mpu zoQ~X|eT(p)i}i?6pp};Hwuv+ki(w8@p(Esnw-p7rr^zEIjU{>(-XmY+B}N6Y9;>3l zluM(iT!jknYAPFY6~*i1a-4A^$K0>~26H9Ws3m)#pXx4n=~{fuGHbS5xwo&f;ADEP zG`=&C=L(gW)IV&}e#n;xx36jTOZg~olKZ$0__afOi02@RfKgGAk;d%*>;qj4R96v{ zRzY7j>OlVLk+UIP<ALU3POmclSzAVn6R-6b5}fmityGc#I!_(uq;Iui+o*dcZ}Ugf zO=Ns;+y_WDR>@^-sT~U_k3A#kS11)e(i<cD#wm6U)ghC0PA*5uxrPhCdzqJM2HgJ3 z=(~C6vI<QrP<Ym0Hdip}pq4zB8CX+HC1A3+k3c@)?eLd6Ch50(uQtrO@hZv%i4`f) zxn=iXOhNLm?8%L0`bdS&-Gar$Ap)D|H~5j-xBC*%?`Zn-xi)@o^rw4EC;yjCnf_@J ztFZHKmdy>^i>}%>Y@?RHCZrfPZpIpQl68@F(yNDIlu_>S5DvV8HX{DiINS1q2ZnM$ zAU5)R;{F9ef50h0D(IouoPnc%O@c@RJHjxLQd8Dd`5`ocRZ-eOw!wmZFaw{{Be{#; z0nqA-`Ea1za6l~jYA3(xd_;e3px0r7`lo)ZejrL0!`uP^LAw43M6$H)0v}Sy$P<Ul zCW*8L4+*U^dl1oX1r1cbz-~y;P7og@xlyr9UEN-VOp!|WP3~?$9Ja~jicz;wzL<~) z)ApLHsfp>zv^}2?0`vya$f2kMpw|<Nn-B#7u}AT-QCu$5nkq+%=a60GYWvEkX+$9t z5+jRfA~N6-af>%Hawa*qCM{Dc^pt__#;Z_D_#wlca^>%cag@bXj8w%*OS)$R^$GV8 z=tF~7?wWxOV?#*iBsQZF$RJcYutWJP-l7v!Z&l;WLt5x02h;pBR0i-e@3327J9ut1 z_M;Yt$DDw!*lD^mbbQuJ$e6MKC!VFmL=i3mbFsBVPc<}N;H+fi)+yHnTDzAPpG&bC zbCy}iJ;r*MrC96m>G1ujS<2CZWsz2LhcOgQgu2gqlzNUW_s@~{Nngzr(7x)6q=UPO zSa{<8!V=!tTlAP=uI)S$0Z{#XYf(7~-ew2XalflK5jAu)e1^gtdg(=YIW0zAn0cBt z)w7Q86^M<TQVbL7xVl<QPbC`R&NQy!@Fd2Dz3>WTlO{G6eFPyh&&(T1n?5F2JkJK` z#^9-Sy<M(f|ASer;DR}O#qfBEU6H4KtdKj5KOywtg=r`9vsR_*j2wSDGdKX>zs^_m z>Fm`z?&~KTbhz*35h3d`PA2UU(Cb@~yLUzF$b($w*VP9)yM<T<!-Mw}-{+mC=`3$< z%gxFihaI}4(UF!-aCGPN0okqXVFv<2<No<y)MRb<h0t<WWfnfHznY~NO46-US+>a5 zXfS7KLBc^n?9~u{H`_6UXKIkx8+F!EJ@tiidVyWtAU{ba!wRh54f`}=#d5`L6wk}f z<UAjB13d3dxK7>ukqS@+Cy=;dV@ckpR&wEaNCszj4+&7d%m;tF$5|d3IUKURq<AxM z;cx*f!s{?>8ZkHyFQesrB{Rb=Fq`U>5!wP}`a$|J>@eqnnL#i@y;AO=7XYt9{PIJ% z4`P61GY|sOWQ!H{(!IGS-NDL(VuL)em(h$Eal<9XG|>gt%H!Uz17;J%SMCGOi|Mft z*u=iGD!e9h*#A<W1{lcX!g!=yyRuF1H3QAiZzCLaQrQ6n%-B?;Itfr)Bi-ezK<`;G zF5I#a{$3;8v4OEEY+n<`hW_#;98z6+#6AAZNH_*xKQDWi-m?#Q!@qmsHpcrEE9%E9 z)+9@7mo>x*{_$rBN3V-#_+2uBHR<kZuW>X#awclRaIvw+fP3l*jBo-k@f8b{eh5$& z#khDOImS>}N4>Uf=LC*pf1p|OH<Ww3;1Xx-rw-+9?)PvYo1*IE<cyTB6EoA+7z|`c z1w-M<pk8>J!nZz;tO6Z|O@M|Y9coj^wML2@xq8Gwqx_vZdponTc5DpEL{<eHBFTVr zus%YHw-0yra1!UAK(9q@`RTkoDAgdl)Rp^qTh4ij!H_6eZKXCAE`U1HBZxPOk8h3w zelIJF_x=5`_nBa)I*%s|j}W=j-xoJ?XZ)UCDe+pNgq4=6yxMLLQgs!ylwiFvlN3wI z?wZP{Q<24mb?bj!ZLdowA6lDUb3G+`IgH)Ai%%bDyZdH~s!1)#OPEI9i6pF-B@r#z z87(I^mcnh9Wj#qI%6ofF1wNDsxuaw+zq>5Bi&y!Mnq&bvZ{BBZNu&~<unYH9^pAMh zRvC%tXf7&MQk?q6LAMP;+)o3Al;wYQdTsx>UdxR))+IT)z=OYU7r?H(&fyEr`E)cK zJ*+n#qgu=(n`L7issf63JgFj93CknW(!8R&H(jY_zCJn8PSxYsF8K|$GZ;PJ?nvr& z)TArs7;!uL4qHY>Q$eLQ!H!!ASN*0+LY{NX+moOz~eXfBfULfJa~Z{Dfb!9C_; z@z>A%Kj|bng$`8ZT$qBT$(L#^y4BiJj{8GL-wk+LbbhO+3n|-K>DhsfRQ5O8fuh)O zPGm|yU=$M7()5qA+A7|4_q(&UnMu_YP6l^PbeVxCxhJj3>F&N2#I1b4*!T7)2$WGG zDnkRDzk2)|&|+3z+-S6QPYOOGdfF7tD=BbxKR99=!yCdKa1JrXImT6_!~wgC{aP*Z zS9zP!(Dt>&N$lr&n}Y2G`yY6*_!NeLsr6LUE0*T%Obs8dK`~nyLC#>U$38HtYr+>^ zF%BS<P&S=}c_n^k1F?+g*dQ;x=q<tZDSj;=o?$6LHXsxQ#C{{DyjBQETCNm3`5>Vv z31=Q8zu{$VJgM_a`|5*8zGK0{y#I~JfIpzKCEvV!iTP50LK@JpF#-WWY`SG7D@jWZ z@F8WBWDXV)2$jJEKzhz9N_IngU<_6UtRO8grL`moQMldmu0%prCr(kX)kx!j#(t); zGTNHB-d}+D0ZXm){k4ZVTG-#(!S=&ydkMK)@b?caJQSV#xmzW(W9z_+h%MRY&yh`h zUZ9T<7z4&XnPBecL8u0i3+kMZyoGS)_VIxb!*FV<z=*%Z<1y?*>dd+Lw9v4SMh<Eh zKH|J!c~f7k$I0(p#(IT&@P{<yZwo*!13@rD=ooB>&u-Q9Eu0Bw&<k_~oA#~PJY`YB zb);5=G{p;Xr^^)GI9E}`pNyDurWa=d$B<?mWPuuM4)hk{TQz@m^6#0dbH#x2#vV7~ zNwLBgG6~U|mUFKzp;n5dp~nu8z@oQk54gPgOARoooY5aJnwRvrvo3ZpS$rfEP)~64 zq*(MLyW9qGFk#L_yM5G*-l~l;vwb)2A+zAOjwMsxb=%#F2%9`NrrH57b*2itDd>re zNv}WWy}g!Qt}c&r?0N(XxS4Lroi|uWNiq#5SlE??D9!^4xrRD>k}{~y8YY}QwPQXS zpsEqfx9&eBdm%e%b1XhRcY|7b9DtoxKUiVaJa>@N0#qECYQHgs^Xh4UfG`<;#uGn| z$_5KsNlnV-U@BY8g5*(?_=0hD_LaF{9nN2?KKx~1L0Bu<U`wiU;E_8c<I%d*uLI!I z3Ax``f4rMwf6=SJxFX-YhH*U)2*%&ok`AX0SuN<L4Ctoc-wnlP(_uBz@Vumw#*SI3 z94ubq5%fZXL}i(7&2Y}Nm5o6{kX`cAo!P(Xq`MaCxLt^1;a(5MZi5A?F2Lp7W_>FS zPPq0Gr!@JoU)}4*2i-nVuCQZ+E9yTB=%al-46O7orglIp5UI3oNE4x~S3y@fgi))o zX~=p1TKSvLGNPl!Fnr}`6~0M-?B}a0)K@=EsKveGMokIKNmL|@{!W!wS*ING$&F?P z+7bltj^XeMf5v{XOiT2!bo&NrSC4yF-}glQ(jaN=%zNe=^1`_mctSAnfbNz>>;9>2 z+<gZQw}+&^ba<Kd4N}7wlwE!cJJ=NX4B9mPDW`0Bulr2e_bUwKLadW9sKz43dtt?e z8s_|~&A`GGakNV~SA_fSOn22qtwZ?m&4w4kQ$ojNuw8`tBtq<)MEHzwoz4#*izY5f zd<s{(Wlwjx-M!e>=zP_4W~7#v5u+f@YF+M?zFbSOpI&;`7yIG!;EnXAh*A_Yj|5|$ z>YN>^z{|F4{OpVM9sw?!*yHNNaV0vSCv~8x+e(kNZ5kv3mqOckTq#kOBVyB2mT1Qo zGcO_CQMLj`&!`}Trvqj#Sb`G$GuAcUR2l}4;>L>mU}$X8y6x~=a!;m9sT{qdX*&<q zN0LFmL|Lf)Db{2*X6${<IDHOqOK^-S&f&r%?5e4I;L$K9Xo>Ag{3>HjkNTQltSK0q zmg9A?X8?RLN(S9zRn0*8Vlz;nNVW0;=4_^Ax)ri2$jn?*EJBh!(<knMvC5Ip8Ia<a z)xO|q56;bB;hB%H$69U#H>X2k1=JSMCfMY_a5^f!&JbnZ&wxdV>2r$GGc)ek)ejkG zr;f)wt<tblODj2KWtJV&5}(=ay~5#}cqT~LG2yMy{>&Ixt9@N+(Vm~3+;F4ma+ZH* z__FL)a~+QKKa}3~@n#+?Cd%wACL5wIPK}1@04wD<V8fsyltm|7l3WRG-iD@aJ6bOq zhb{^)3k8w52*B>stZoP9>_mQwTpQ3HaLp2#K{vrsdWFAh<9xN~xBAuJ-L^N(V0Ert z$=BGNU9~?MO|}^~qkU>}Bf+1HZ8OK^ZnCg@^ok#1K76&rO|4zgtZ%dL{Vo4!*c;tl z=^*WWqItF6P5}HHxuLqepm31_(F9fG*LQD|N5CwLOdZ^gb4F>Qyf_P%zZuUXomEb; zcZ!qTW?vSrNes1zf7B3#pC0X4o2^8e&5ZXi)U5F@RR_JJ?kqKF*3kd9r0XOYpiAxb zO`oMP@AVkqP)fy_DQVI)I&FmTX5_Ryqu!@v=?!<7YeBO%3L91(!gaS%AeNk5h<8~D z+k$dgx(<R71--^jf*ObAd)7s#_)`W7A3#)xF#65H3Z(&ScMK87vH^P&rw6%8y1JmJ z+W!T@1<v7ka2@##^gxV%`D39}xMfYLZP}uVA_3lcbT0-8%|Qr(iQ4&vBJvdo-e!r4 zB*e;<a(?$II<1NtJnl7K(IS`8z2+{Y!a%#Od|BIcZ98AUAdyGAn!5D3y1FE=A{$QX z*I3h!>?<C1d%S+^U=C}A5`Q<`nlh#?y_}4Ylb5PPOnT0Lo$f%JHnSV}pSbKZ9PN__ zU!~gnBqU`d-%$UNZM?G2S8vq0$u*{Tf5PaIVp#n|_(tbfOI@hkerKWz+MXE~uye{9 z`AigI6Pa=r>6b{PF;AFX$6lXVVOok=uxTC94<~&B4dn=h2*o(cBz76bw_6QdkDe>B z(^kXeY$V=<h(*kayAj$cH?;C|h3=XNYK6|x+))okJfHo<+SNKfv}Gg1`06i+nfrS5 zvztdxwe`(6tB2FrY*I~1^eE6z-aU^$Yan-C3Weak0Q{)N$c}I$8v)#15rxi(d+$o_ z-8S<mc=kfk{YnznOwz`3Q7Qb;J-YTmBg5`YIyCRtJ+*2f44loIIoGcu0&?eIL17Li zvC!+8_w0t$N9gZCZr*@Ca%nlC-FZ3LTAY*CqkKS;lK?<1sD>MNt7<EJA?ftFXnSlL z!anE2Jtu{`yCQ?I$avPe%>dNZkF!sEht>|U4RRCm3KY=~a{kJh0#p2pmI{Rw?7W>v zI9mO9m1S1iYp-ev?#~m1d#x_zWPCh3?RZeSEc5rWiMtKqz3P6uU&!D{h??SF!F(7w zUy_NvqS-6Jf2v!;MoGWsuY;Gf*a7HhZQwJKLkrP4axOKl743DDla@*gHOr$kPjNOA zK6kOSfE5{m2zr9<#a<min&<bQc|JGxYGp$sQ?^natUhJ*la4{q1l&{-QHYbMk+?fa zUTsq3<p7^@7XoB$go|)^T~Ic|&%z3RPf!AnmbHVUuMoE(e(oT=`g&~y-`^Op_t?uh z0wO)H1wWW*|6jtqb&#AGdrZn2Q;EE)LrYwDfTBAK>;UPZY3n7~V)(N1^Kr-T>hVjw z9nFvz(-dXcSNX{KsLwLm4<C1yRnw!X{M5O{F?O0}!miTQ4Y^$OYa*E$)CP)6<j?1F z6m#9ehkiR?ZtP<fG;U?qCSU)H$$Vwc!SH2m(#p)H!72H98^td=?RorxD~t!L{%H=c zb#!1uS~L87_o}x<fqAc45CK>|SZErsY7sMoFXE#;e%~<MivU;X`%n^5c$MyMj2dR| z#@m+lJkDR*QTQSRhJLpQ-6{;nvGI<t>;S^a7Yq&phNH^~%9T5*afJ#2vEM{|pOpYO z*jI6H=j2ayCKK519rVO+7Cl!|+Jl4a@U))R4gRR6k^A2S(YMy?`%??ULK!bTN;rk} zolndc65MkSUuiwx#l7I4Ef88D9gS3ZB6_C~YJ_zbA+P%{h@rUajX*$TFh4?}p(%?a zik8#;ViN^_6w{tzX#gs|PGW6#r}W37vPZ7mHl7}~%3yiaa$d-r;?nZVs`#Ne0xWxt z8?<qRvD4C^RQ=S<%VpZ@IFr%z7^2q%nh=8CIr<m$TOx@M`%BML5Yj^4c<-RElR*L; zO=5In;(`lK)1ZxaZHuI|bA{Q>JeP$NPSZ!&HhE|Cbof&8V$n?1mHGQgGF7>xlhy=> z!BlXn##Et@nE#)dZ?cc}f7P*?)+@<MMcZoG11*+wx$4)=<iMzfI<@aXYL*QA#^K{o z$<Io6O5?LlP)_)s`42-y3?jx6b9oB-I^|V@x@n(m$tbG~olL97{V{WCMG2@@B7G)k z<3y_%eJX=EkeSdF<oQ_vEXHoEG)?K?neG%+dYq6guzH#yZXZCO+WB|H$uyLedYxdO zAL2XB;BHkusN2bWy^tLHa-am9N-5=5a^-<^84d?<FIT`Lp>jMRACMqq`!|?7J~aJ@ z`y!1wAJA=?e$Vhb+{rt)JoKBUex9;@TjV}IT%q))?m}U4BfX%%DqkQejYB%Tqo|pa z4_)5_NWD>3__w}I#BSOJPC7uiFEzF}yy8|NkuT_T@(tdrFoZhbqXU0Sfd`#Bt@ncS zKTvRl|5gDG4KqCMOxf@@<`i{Va6lGO=qEpAnV!~EL9&0qZkG9@LC$drD;ib9WbGm_ zTby-aSb3=7Q2F5um4S&L@~{_+DdbjD#Ilt6w%yUN%Jr9_LLo{uV-Sb_5{h|}LO{W8 zM$_dvZ=o(5lw-7r)gNq&&*Kkee*^t###YEXcJtJqU#1zQD)*24wt-y*{wl&D#4v)5 z#`{o4gZMDlrRdkuWnpLmJ&rGdzm)AH*KD@h&6)$Q6d14t?x{oQ5@vzL_1_Z$WZqu> znY&!JuyKZGLVRxFH@&PX-t(1(PiVXGB0nadznh)q4x6i@Rl!cF3^-pJcCPt-1=)2- zCo@*=3ay?@gpGjg)&EMN2HA5^ij5x5r(zW+O0B0Tli)7FYcUOH64{#q8=DTkZ#2wb z-tS*VuWwG%(!kldO4GEAcy0{4DvIz4v3~1bW6I*Q>T7~LnVAgin|Lja<yV*lDas<@ zZ-hBVooCbs0Q<zAt9vAgPaZUIWV=9K>yd>SY?+C)Ws~eWz9xaBO&xYiM*qp2z?yV& zyKbr9zzWvvAm-$??M`$<f3R2tVZoU@We<MFy=*d?gF1il%EhY%yR01Dj$&L1cY}?n zF|s<2zFZG=bM2&Y%<Heu<MW8cCE)wE+xLso3Y@l6H))uH*|@)VWLb3=g^roJEU(^O z)7@Sli+O;yog(fJt~2ZAzE*SkW5szTc|7Xjx#3UbYA{S(9QlM?<WjqT|Ld@A$297E z%&kjA_?`dupARc|FUO0d_y@FXuRX=B4~ds|#CbZ;2sz^*o7e~TcOqc^?}tSl3BzVn z?Tj5a`OP>;?Vp=Qp^r$k6dXE#s+))5d(c%y@0k7QmyXu>!;i*3-Bc)#5SEyq46<X! z{y%M_i1R|Z252YT!JFG|JetiE+JD!XK1KO-?o1HqCz9ZA>i(<u_WCR*76r!?!U2z{ zZTMSKH2F&>sEDKq8|B86KwB);n}^g$4v&lbh}z`Udmc{8OtX#Q5X60{3OPg6phl{T zi2X8wKDWhbruy+h(NHt*4~H};x%YFdZl%|;jF^royET$&g3}(v1!wM97x?1q1Fo0R zeh~2lD&K!?Mj0R4(i7TlUkxyZs^RP__&I&rr|1(&>d0z!Bn={-@rfxQxLWoIWG7{# zChGR4?C(?gujq^DcvX>FQIe|QH9(hdx)AA~toA0~KMwl7*@h%iL?ubu$nxGN%b4|P z45Y(23~DQ7L_B=ia42yLd9$R^W7Y_!Q}&)7WH7<82eD>8tZ;{3W3QWE)C$ynQF<1f z?XM)Y->hFYLvuK%WbNHg`E_t~Vd#iQE$=0FjUn8v;WJf7zt~8R_D#8ti$Zr(_oH;T zhrNLuN}2UGk97|}aRVLx`Swl$1Zy^rIVQi!R>-}(hac13ZkdJOXV_|%^k0nK7JNE6 zMsfokFeJWYQSJ8?u>SVC_iiDK=px+!h`pA!!)v7(=;Mvh5-^L92n_?049BB>J0kyA z0D2mQ<+3Qq5(wLit_V^ESp!)?vH`Ls$TpSxg49D~SC9u0@)ZcTe;guD1bM2EZ$U&` zhPxjw@pJD#h}FR$000%Qc$}?RS#KLR5au4bti!Sn%W{0wPT`~hY$Qb=3bbkaR3PYM zU7&@66kA!gRp@ZNR%)X!`p@c15x^>`{ivNCEmu;T1wK<GXFd*x<P7PbH-r$5aBWLC zDfv^RemejD^h+UJM^^q3!DkCs<YbxluCA_!L)20)&t9Frl%lq*SZK5#Udg{77Fs_K zTE(M8U1Cq7DAAQDNbJs}g{aN!5#mVV*=%Sben6Wtuqx3|rbz5dWF<}{GSH_y8-ynZ zp06;TgYlm+zD@9z2wypdZ%bkuZ7w*f;HZP62AOThD6SpoH_^U}J}vtI-{d6@!1oUQ z>i28t3?)91Xc66OiDQXhB;G>)9Bn<we?!Jpes}{v=s9RVe2O_dg&$7P_lPZ_SJwIq zi=;aKMrWL$-MwUzmO(Pp_0I;QUXO{}265-2+b5#x=M*B3q@+}ify(W7yaAJSP4hW= z9WyGaJ4sd$MwjZT5mV9r6z@+PEV7Q6U?wV<=0w?Oe`b{l#JMvU<;n7KHVg)5Zij#V zIO_XMJZ}(pyx+KJ!Q_flvHsearkJ!=MS}tM*USQkYnBX}1<yZgUwgM+`>u1lg4L9B zGs;<Fv!0KU8hHH<_hs2&P_{knae1-AA=_HfnB2|K@7{HX18z{oV36DE`gcnPuNrin z%OP`W*wwwbXDl@XOV027@vGMx4z8kHW$F`3R8R0l?DlE3qRbV(eYOpn7E>%Ux7U-F zZCSq>SSJb7Vc#(rmVWQu-1HupbTcZwopesA-mYPk?B!_CR-1{)+hkTBV)$bBi9hPc zixdoNS2VQmuqp9SROjbniHQv+Us-WnXO)d$D(w~8^^J*st8nwuLMEDk--6F3;GaO& z!sb(TmC)50Q{h-;HI)}?BD@JIo-abZSyG>%)ch8FBsrWJ&p4E~z+p$H7rEo6+C9%# zF|14)%bok1+m7$6@b+eK(YePYCoohGs_Ge(X_P6HxtPf{VAMX0I*FOwMo`aBiGEQm zUbk%#Ub|1Budlh9Q`?je>V;{H<0jzN4lItN-qH?q02g4Na_Zi6ML+VzO8C~|m2=wE zb1I=M2JKtAy-fV7uhTW+Ge<->Z<*NZjzc+MUHi(KcQdG0b-fbQE4sdg5(lEL+p8#9 zatiZotHp0I;bwnv*S~o|Iu+5j&?go`@4eor6DUT)4H<1eDV!0~!)XkU?pI}ltVTh^ zpOSs7$}v`qo*KQwcY=D8o|?3XhLi`Q=RmJ17DGsS9LllKxYla(UG^E_)Z?oYT?L$g zf95Ot=uU&@xrj!AT@gkBHO99hh(2m(y@j5N2nQ11K~6;?m1R}bIuzjpSv^8?@U_-G zN89g^SGy`N!YD%@{MujaX8nZUGlVdw<(SuHk@vIb<VQ)<F>lMnbRF}){HST$g5Pw+ zCaH5Cm5^fRQ2|kF9zBpE=Mf%jGuz+K$0G9a$evn)ERZ4C0CEKS#jERDHV-%i>|5)c z(Tw7b{~uRLEMAE;cVUrx+4rBaVi)7s3E=CLNkA?EY8`akEfSOxu$6!cLCt^$L6hML zf&M4l9&o_04;%tV1X}l)K+Eg8meu;4U*V}4tFP_9sTBI_0008ac$|$<O-sW-5PjK? z5XC|dErQ^|i=HB_Cx3z9UBPQwLlrbB-Alzw|8u>F&^ViYl_a*}z{`B>+j*1OheH4w zMn%w8LfHGeoAeqmT9Qu$Q!qFXA7``KQ&}>zqswtR5~`9UVo|+~<@@!kdKIeJ2!;Y9 z=m`?Rk>I#y1E=*oz<DhjYJRYochTq?y_4h*K6to`XkPQI=y0PwT%Ao^hpP7JrwyVH zt9Gs{UfBHMWe)3kYu1KbOpl8>;j9Dp9&kY^mv|<)_!%q=x@IhhtKb#A-fF3!p=+%b zTBZn17@}jXC$`g<%=yjr8^wOUoG)_cp3B1B7LWOoKfM)BR&Bu@@FGd|pT6JwqCI^8 z01RJvoTXOZYZE~bp8J&_mrHVKlh#@*2qHmEt%#tt#Rs9#`dW*iAf>%D2Qdk`q*Q(J zPZru25mIM!bIsglw-@o?%VcN2o%wclZ*M=k0APV_8elp27n~1=d#zUhwuOz~5I-i^ zP(+(MK0E95`_yu_HlMe)kZNMXAg9s8pFfh*e0QYq8s`e97j?$%b~pGE_D-X?A0~(f zVi{3J90(qwJ{<?JKb0uv0pKHS#0w#id^yApqKU{8r+|2h5II*6E{$ta>=nvoQy!PB z@LeFP#PJzt3Gp8BhT0bCe$DzjH0~whGmSqaUlLEuWgAhW|9gm4#2v&2;x5^B#3RI- zLW@texli+-&{EzM{|5yZ9aq$;BAQ`aVj4Q;?ykf%b;%zxqA1jLx_v{mN8bhk`6d#_ zXFTV;-S3_%h%9@KC%J;z)|gYrr@=c)?Qj^4#Lf&Zq*%5t))R^7Xo$|RKkl8XmCvF* z%OX6^A~drIt@Pw=d1)$w^!69<XTmJwn%4?HOInm-Yqx=Mq)4PlxUje@62iokbjjWB zv1ZZp=?E1bf%&T%zb|E!OZ~s)Tjt}lswd`CSg<1AD2OW(o&=E;qX?RPwVe*;Nx|zX zu{^Mw4xE?Y=8`V)1BvKqi1{$u?2WtKv@R!0S6LIz+>zd-hOD@vQ~XIGK@KEKx=msg zZe7<oVZKIKE;{}?=ms#qOZn&;Ec8~$yWiCC7Ct13(_I;b-}wh)QL8JjK?yI3gKhVk zN~HV%UB;xT1+wDIufY82B>L=_?<GkrviaCwPy9Ku#n|6S{DrvfByEpuiL6VuLbe?9 z*Au>&L<44bo#b8xG!HAbCg&s9n(}|nc!bnl&N;!OGm<Lh2N#235Jh3X7wyxbI#Gyd zG7%;vuPKtVM<m}!RwpZ;h*xFt4y4JL3^u`m*#|s9o=_kZ2_*)PP+@QhWkQuuV^|_A z)1uU=P6?9!6-Zwoeb!zj@NtRuwG7-N<XBw)U+Vl9eBUYW000knc$~GCTTc@~6vwB# z+sn4wdnqjlr2+*s5KMe9(L|q2c<`+zD86i@Koc&e?L!kE<a6*f@x_o(&vgDHv&Y?D z43hkEcFvs3e=fW9FfD|zg=58p9j8YT|JZ)N`$`DMrok_v{w(1Lmu$j6Jw3a+!YIDK z_hNUSLM<A^;B=1tflv01`4a=bciI_*%p?b${@~zvsHVg{u|O;nS>lH9h{`xch__=s zYOXRCFT^w1m}nBK#5<xY6~Zs$QpA~ThuS>1jX9a;8hN^BhS(;)AdmO*LVD$hmqtz- zJ{g}!{1Q<@UL19|h%)gS{zIZjd>|IFKPz}{p`MJb5uXq%`_+lhh+9I=6XYx#dnEVs z2zgwSXJ~4m&l)tz_4k;jr>NgV>^d~9LemEEgK27kO=B;mrfa5Yo9$Br&lQ}R_PI=Z zLp<D}yy44ZT{}4E=R`uNJ1E4%6^(s|AUW|9lVO3@n_VN)oN?uQ(eC-(OI9it)$=G= z$r`alD=Lvma7GBYXVUHrKcANk>|le$NQ5sfqh9T>#W}$eDOSQZ$3~pX;sQ&UBso5# z<ka{y=)1%66O;8?VY=qo(&UW#(%90!6{hCc(Wsp>>$xK0CU;L*WI8Ic)nbvEh{#xz z1$q&IZnwX8;SYM<VQ@9cX{*Tw3+DMdlZ$AWrH1lK?49)di_Q#9!<y&C#KTQ;F@>nr z`*W;5Oh_?UILjNCg7Y~(U!JmymEe4VEi^OjloqDcuLkFfv(yjkvnVDWNQU>V1>;Nq z+P5yk57s&F>i1cnrM?ttjMEtFURtAvu@|NxhA-2tdX_kPtbS>!KDWq`)=~cP_acVA z(r?2ils}{WaoCjdd)l9bO)Gyv`#so<@)xyVzJc=mv(TXbEemM3nckd=wa4+-4{>^( z<}b<k*K@z$7wXN@&O&GSt=H-IyH}U}gUjR25Sw-j5z@M<SV=c6%qg-kU1Vi6hps$q z3AO@ThON$~@6X{?A6ef5Y!S9Lr=Hp)>seHJWnI5+)W2c%Edv`kz?@4Mq(IVu=W2i2 zK=;f{A#0#}<qUK$JuVoOCr|-JgK7jdpyTQW%Mq-AI-@axHLz;Xj9?w;xDA8N2)4im zW9R=f`@Q`Qy$fU|001>uc$~#r*>W4l745-7fFQv|Tt!kc7m*bA#WE#Iq7=uBY{ju9 zJCq`tN*I^~DLN2<5Rff9578gwm-3J=NG1LUzop7~Nx8~Q_snVH&PDgkfQvX)r!KnZ z_PwWXFVhR2WrPrMk%&1Wo|HdD^2x@7xm!Xc;xh3+;XN^t5Y19H<@WbqluAe?7w4De z7Nu%TCLClYc5~I7ls~cjrfTkRKVLPxNmO%{KbcDGzbx(M3#K>a++prz#bm2cs+jU) zA3XJP#m^Ew5;r8WQlVYSR*61WTZk)eJcO8Vt1U#YvI=w}okF@>LdEZ)L<{V6cy`6R z5^WOCBou=Yrr!?TO}vl8{vx<s0+((g6{jx3LGfEcImKrH?<QeG{q8q#ReFOG-$@LC z`&IaPj<W9{JpwrjIR<$Re1;{~;HQMVP1sR-1?1f$TvVLa5vK(FU5Afp$QhKI0_RzY zIq+3>7a$iQmmrrR-$nU(#Nh^fshF=I?<Q;4RT8Tk@Oww%E@HKYSlvf`z6bYTfb%cm z`vdrXA9mM?-F3*D;PF6sZU3RfzYIF69v?wR@%abd-2<Oh#QkH5zoTtGfzB%0PxXgS zQTIoP<zuwX$FQYzRe$=YsP!Z5N89+!5T|t#OI7~gqShZ(JO7Qev*uKk*pT=^`1|@( z#PJd0_eA0==qew-6aIcq+vy95Em7+qzlZz-<Th+RM}1WP{v)%Y=B+P@ja`)4A!YK2 zh3eyKzSx&&65hNbL~X`#{(^w07yrdelVa@d9MSZdC^8d{#YCcbSo+3qBz6RypNXWl zVt!khBMXVv%8OTfdxiY=L2<XjbZoZcwyGZNG0lWcb7F#NCT*H)YfQ7rqUl`o(@)!~ zoTz?V&Ks(xo(`gy{Cclc*tNtU<!8~!oLQZx5bux>r$u1%WsjJCvn41^mE6m+>y4Cd zIWnX<8xyNcFsoy)*}_4kx?Rmzs;pNjBP|xH2~{YBK&z!}e6Mt9;o^MFY-BAqQkDFl zw+nebDBHxz8rpdpQkV9CU>Zll)|TH@4|Cm5n~{3zuvl!D3pTfv9u{{GcJgfa^IpPh z+HdNUyuv0rodFe>Pm=fTOGIC#yM(<()cbB*0B_$G=C;!7Uh~`JCs?QQ%21_vG5?KO zCC2I(XX!*x{S~>eslF#Tp2rk3U&^N5&L1AujTP0$oxlD^(1&~Jjp(Jx^-^YUZQT3( zR{N}@smu!Y`wL#?o#3(v9JV~jwOOF(?n){FyouRn?sgzzl#;v|RN+BknZ!TO@4nh$ zleq6w<;*ZsLpD=|T)ABMmT6xJ3Fg({VDgz^Agsr}V_}!xdsW=29+c=D93vCkPYtw2 zlvYT&li%)ZbFo2IEO5RJpk;OM?3xQ4E3{S0g@fwGVeX)~k#|3i4a_T3r=^#1N5Xdb zFmK{{lED@CP6z_Xa8uJZQ_boe!i~%s8Eo+mFl;8}Gj{5Ls!$&A4o*tWS~_s#N~GPW z<c;g70LCe1Z}GG|G6-fgCbsuBeKmy)`<b=zDQiTShg9q?-A~A8oYi5(w2BIv@<&6M zjQQVpFn^K!D?8VOy_W^dTBDrLxFs@m-;fE5Vv}4X?^j<K+;G}%JXFd1^=k`*?pULt zp9~0zsp{AL`n^m)aDc1wQ^Ed5Oijz}MU~X=bg<vr_iX1ysgf@~X2oYjV?AWnuiwqz z&-vfKXR^nup`Ng=V5<7OFgMxpLP{SZE9C{EtkR33q3_h3g?QMPc7>NaCg&bxgUk{m zx7--H+8i$@*2l1GAiEOO=^VL*R_}lGe!E)-eR`+%*4@Xxyi*<rmDl=GH}2}csp$c} z^Z4XWA?F^{(?x1W{<Zu7Rx0xISCKo;{OcO27VSho$j|Eh7-YiBPwV_9FMa6<zKrKL zN-+tU@(Ofm1E^)UPB%x3N(<EwiOOwFE-VnrUfL_ytL?XV=^mZVK(=}L13EwJrTcZd z)k_cQbVq~r>NvxCMev)xAiw<=<TraBew96Ts#H5&+uE`oL?@@KFU!;Zm&d0&wb7I- zyvh^SLezbr??l-#$@JQh!H%r$6`kKL>W6dfkfv^+>jN59w97L!tW8~t)*vye{}ww! z{DS-@F34~4g8Vj}hhJJBb*kAW>d(>~tP6hxPX`MmmF|VS?B!q6`TbscOs8>qJ)zTs zqJ9v#%Xb}!jHti$jtT$mx30MUG7fp^$s=N?nFLhnK7<`*<2!?mE5bjUUlp~lln#0` z3wn%zJg4daQ^bB8T-2dc7ZCUCyYmtK*FZb$tdV*vUPahaaeWS(Um=hFgFqi=syL(} zn;|oZdkSS*MD5lzi`ce-gTA5cgw!{vU9iz1YB!|Xul^@NA9Q+!{~rP>e*ik#{uSsB zqAu)Uu5QC6MBqkbitDo*%~PGIMYz?R=Kk4D<qXq5)e)NEev|W=<$UNZr{OO1L>rU{ zw~_puX5MBe-I$#P%Z4d*Bh9WWdE6Fx+}OoqU0m6nVi@nGpgj_`%kCQk&&dpTi(x#L zgLvpYmtOtr)vAMjskciG`nBH8G_u%<i;G$8yk);r=i%2ud+O~eT?}AbI;Yb~!ZRi6 zzp0{T!>tF|sZOKK=jk^z#kjNQMDdHtEA8jCaNfKE+I5V^_YB*0R@>Ee&YU1lE&ezy zomZS3%tQJ#!ofVHPXQvtagpku^|*{0udF{_%jXp@ZFB8SjYmxQ>gmQMPSQz&R7A8A zWPvt<jtJ->=(XT7!C*KViWQAl;?3E_JyUPT_B1*U#&tg)fE<Awh8%+&g=BXs{QTlB zO)LFzQ9Hj7Y@HKeXS5MJ4o=jSo?4q9Zz{>jxwfI?b;wD`DaaW}b(+uja|52A<NeJD z$_wEilXHZR-njC8T*%XC8?NZOPeaZ_E(-rQbwM<?)>#l2v(|abepk-JuhhS(?Jj%i zRh?dHkk``L^14O(q|*+2F$?HCuEuMcAOo}z@OitLK<l>?=y#n2T_Mo(dnZF51D)r! z?*W1#;3~s#gBS-U3G`WkPHP?ROJOPmvjp=ez<UHMz%2sRuD1zp0Cx!1fcp&Zhu~KP z>%dLm0q`LK*ZBx|NN^AMHSimPPXq7>cns(=+K#sWSpYsK&|H5D(0cGVDXan;1W!Vs z^_~%I0=k{PAb1`Dn+6*>f*k`k&4@nt{2%gxU8ev58+CY`%~(rs+eQ#xzVwzQOOz~I z56f=ixM{37O`AHd(Tjlq23jBo$LOtKEXEO{NCrs+0g?bY<qxNqqCnhTa@HQMxDus` zX$gE-jrN<FZ-&Da?cZ~R5RK@nLNtSZB*wGTCwm8k=o&TtBEh8+on+~nvMw%Oj>ljb z`@IKy`;@9uLxC@|eao{>9cwV6#^1tb#^1DEFJdq6S<Z#+$y{@=9qnwq7>->xVk7;= zcAk%2J7P=g^?JeA<O@ZOVvC|k@rj~9vF6hW=~C?YeITUnH;l%Deb%)$%LHo%xGCUf z5jPK<BCIRGEdaNKxU0aa!fFDy0^Aznt^sEqI1S)zAWjQ79auME?ZUbR>o%<4z<LW} zwjt(ih{^QafnMxVJcB&n0{1)cy9<3ggPOQ6i*rJ8k75t$yAOUn$hVJb_#QYv!1^O_ z9|HGLgf=?M<h`Kn5d0p4whu@f>)Fo`;}P_Q#X2IvEc^oZmdy+yH{+zdgJ5jqPuPqi zsz-Z>iFb55;;s-ykwnpl1OG`taWYrH`GQs)OAW`$UCDHKmitQZ)g(Hy=P&K^SErK> zx~xyP!ddfziXyH8eXq}|&WKrE>h-w))N%yxltgacukW`gmvq>rBqS6IyAg0f71%>b z8JR_+URsXz+Kp&ZRF-VaX6bOQV&9ykRlz9yI_Z#~uOw440mWGpP>5NSdVD5$79}O6 z{gNi=EAtgpj}jhLKq+PcirC?@M1RTktWn=``p0K~oR1wl98VSE>rsy)PP00_?y_K4 zqHZLMQ<*PLRWcA}oIc~cRY{xF!HaODv{<<*@iZ=-!N?QHH7VJ0J>eesx9<8S=P7%J zZO?WNg^=~>9c#!Y#qdvsh_*~?(;A66hL?h4135B#eNol21Cn0ated<MQ@v(8;)&i2 zyQT!!j$j+Jq_o2EHU$5PDQk!MO>w^y-fxMe;aSSk^2Sd0`0OxD>c%~cHi_hzAB^4% z+`;pqFv*dD>FY~@eg8T5%#i1H5R|NNo4sPNM~5B8?6;L2=O*}_0AB@L2Ok~9RN%y- z{+b`-<8=-n!WI4l;(TcNzgxJ4W&7==W4rEPJaSJ)efupG#YO5!Bu}ITtB#A}f^<QU z5{THoikX)e`1z(0tK3d4(7bfGd6hYv7hCtdx-wy1)uePO@KeKb8i8Hoc5VUP`LJ#? z>3&X`zap+<iSuXjxY@v7<92a@eyxQ2RZs9f*SXF@V6St#9Iu}$<}a(C^PD4JId3t^ zym9AamE1g||EKe*64sU2`4r<mng7vz)RV}oz$+n(TMFznx2u8O<hF@)=1BP8b=z>y z+Mss_={LZ?7T7JWP5v4_?{w5rC3I~kH61)=?&D-2$u(DeR?B*zbCY+yL1ImZhWSgJ zjt-9tcRI!GW;|UT%>Rl{i;+ZL%J1^H8?d%uZIgfZbaaUP=?MK{5u^BPk)0(LpY-rk zJzHG&Cd&5-@~IKf5mGadLnzEZ8KE)*b%cflO@#K6u!C?1u#0e4f?WZ(0rwDk5qN;` aa0Y%t;Mxul9!qc_;AlGH&(}Yxou|Jw3Vuxh literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/R/agghoo.rdx b/agghoo.Rcheck/agghoo/R/agghoo.rdx new file mode 100644 index 0000000000000000000000000000000000000000..2ce7cb7bc036aa897360ddc2b81b777b706544be GIT binary patch literal 584 zcmV-O0=NAiiwFP!0000018tMfYZE~f$KNJtldS!rMDbXE97LqCHno=G!4Rv6O$lZV z9+YL=oov>myJ2>diw8weL_sWqh=<}q@$AW)r=C10co47t8=}>>Ki^Jq+2PIS``*sH zeQ)N53IKU1<P^wH;1njVYnSF%0CJVk5!u5yrg7x(eS&t0IDcUe`)F&#&wtDQtp$M6 zF7fLsK;do5%G^sSUYYxh<_qz$R~Ubf_yp!wctd>ZBl1z=(?8HG5HFU{|CD(71%UFM zc*REl7V-IC$R~;G#{njv5nuj*{vG1=5w2GuZazlyhq(0+Yjl&i{S%;khxpc2T<;wY ztPLnofO60jhi!5XC;P)@MB;2!*Ej0TwRWrCSkv`tEFVO<U2Af`=bE0zZVx#5rm90` z^qIvsaJ^V7)h(;%x{XfE(~Zv9^=-$}4Ob*VQ>iFMPLfp9HTfWhNfxdWlNwPbxM=ja z(N8xihj@``OcK^z&x?h9p@3Von2=&L=Jk`T40m(L1aFQ8zP(4g#vF^MA4Zy%<X16y zm*Gdje!4MWo@aOe=Mvl!JWXlV;=b;4&%ffBw!ss5#v2Z7UlYuBG;}7xp3fYU3A543 z7IG#d2h{=Cjqg~I?u2p#2c3!Nd63~?zMZ*~pJe}`d4RiLGk5Ymz=21^+us20??h)z z`5ParV$w<Oj8|9BNVF(XO`;`<&Puc_(YfevK@CrKIHU~nNxQ~O*ulX~Dy$0L<$^m@ Wb2aE_&>C(Ai~a)`@M(<31ONasbtioQ literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/help/AnIndex b/agghoo.Rcheck/agghoo/help/AnIndex new file mode 100644 index 0000000..e69de29 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdb b/agghoo.Rcheck/agghoo/help/agghoo.rdb new file mode 100644 index 0000000..e69de29 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdx b/agghoo.Rcheck/agghoo/help/agghoo.rdx new file mode 100644 index 0000000000000000000000000000000000000000..c28f3f9dbb3f1f2ce024b914f82eddfa9c83ac95 GIT binary patch literal 125 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZ66cUi)h?vp9qRh<AtnLvQ zmz0-fI6;wNV#<&9RTDniuaaRFk1&>4e8Sk7_lb_T&M6<CQ;bqvf)BL3e7$wO&U(9b bs62lzCbCpaeEG5l9#)2}A658w0&N8VSwbii literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/help/aliases.rds b/agghoo.Rcheck/agghoo/help/aliases.rds new file mode 100644 index 0000000000000000000000000000000000000000..291dab0b85a497640ea64a21b0976dbc6d94b588 GIT binary patch literal 69 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbNk9B63e^e`~mU{KJc@>!@j VxVw>Oh00-jhSvYPuR8#B0|3797FqxR literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/help/paths.rds b/agghoo.Rcheck/agghoo/help/paths.rds new file mode 100644 index 0000000000000000000000000000000000000000..3d2b25ed84024ab015134d527d6c70aa1378febd GIT binary patch literal 74 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbNk9B63e^e`~mU{KJca@nZ6 a%e#RmZi51Iv#h{>W(MAADo<U2MgRaHi53?C literal 0 HcmV?d00001 diff --git a/agghoo.Rcheck/agghoo/html/00Index.html b/agghoo.Rcheck/agghoo/html/00Index.html new file mode 100644 index 0000000..84eed59 --- /dev/null +++ b/agghoo.Rcheck/agghoo/html/00Index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> +<head><title>R: Aggregated Hold-Out Cross Validation</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> +<link rel="stylesheet" type="text/css" href="R.css" /> +</head><body><div class="container"> +<h1> Aggregated Hold-Out Cross Validation +<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" /> +</h1> +<hr/> +<div style="text-align: center;"> +<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a> +<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a> +</div><h2>Documentation for package ‘agghoo’ version 0.1-0</h2> + +<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li> +</ul> + +<h2>Help Pages</h2> + + +There are no help pages in this package +</div></body></html> diff --git a/agghoo.Rcheck/agghoo/html/R.css b/agghoo.Rcheck/agghoo/html/R.css new file mode 100644 index 0000000..2ef6cd6 --- /dev/null +++ b/agghoo.Rcheck/agghoo/html/R.css @@ -0,0 +1,120 @@ +@media screen { + .container { + padding-right: 10px; + padding-left: 10px; + margin-right: auto; + margin-left: auto; + max-width: 900px; + } +} + +.rimage img { /* from knitr - for examples and demos */ + width: 96%; + margin-left: 2%; +} + +.katex { font-size: 1.1em; } + +code { + color: inherit; + background: inherit; +} + +body { + line-height: 1.4; + background: white; + color: black; +} + +a:link { + background: white; + color: blue; +} + +a:visited { + background: white; + color: rgb(50%, 0%, 50%); +} + +h1 { + background: white; + color: rgb(55%, 55%, 55%); + font-family: monospace; + font-size: 1.4em; /* x-large; */ + text-align: center; +} + +h2 { + background: white; + color: rgb(40%, 40%, 40%); + font-family: monospace; + font-size: 1.2em; /* large; */ + text-align: center; +} + +h3 { + background: white; + color: rgb(40%, 40%, 40%); + font-family: monospace; + font-size: 1.2em; /* large; */ +} + +h4 { + background: white; + color: rgb(40%, 40%, 40%); + font-family: monospace; + font-style: italic; + font-size: 1.2em; /* large; */ +} + +h5 { + background: white; + color: rgb(40%, 40%, 40%); + font-family: monospace; +} + +h6 { + background: white; + color: rgb(40%, 40%, 40%); + font-family: monospace; + font-style: italic; +} + +img.toplogo { + width: 4em; + vertical-align: middle; +} + +img.arrow { + width: 30px; + height: 30px; + border: 0; +} + +span.acronym { + font-size: small; +} + +span.env { + font-family: monospace; +} + +span.file { + font-family: monospace; +} + +span.option{ + font-family: monospace; +} + +span.pkg { + font-weight: bold; +} + +span.samp{ + font-family: monospace; +} + +div.vignettes a:hover { + background: rgb(85%, 85%, 85%); +} diff --git a/agghoo_0.1-0.tar.gz b/agghoo_0.1-0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..719e7e903a3d6762991e700e8737c798eaa4be7c GIT binary patch literal 9062 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 YXC6KepNG%G=cn=cKdpDYGytdo00j-e3IG5A literal 0 HcmV?d00001 diff --git a/man/AgghooCV.Rd b/man/AgghooCV.Rd deleted file mode 100644 index 97d4c41..0000000 --- a/man/AgghooCV.Rd +++ /dev/null @@ -1,116 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/R6_AgghooCV.R -\name{AgghooCV} -\alias{AgghooCV} -\title{R6 class with agghoo functions fit() and predict().} -\description{ -Class encapsulating the methods to run to obtain the best predictor -from the list of models (see 'Model' class). -} -\section{Methods}{ -\subsection{Public methods}{ -\itemize{ -\item \href{#method-new}{\code{AgghooCV$new()}} -\item \href{#method-fit}{\code{AgghooCV$fit()}} -\item \href{#method-predict}{\code{AgghooCV$predict()}} -\item \href{#method-getParams}{\code{AgghooCV$getParams()}} -\item \href{#method-clone}{\code{AgghooCV$clone()}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-new"></a>}} -\if{latex}{\out{\hypertarget{method-new}{}}} -\subsection{Method \code{new()}}{ -Create a new AgghooCV object. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{AgghooCV$new(data, target, task, gmodel, loss)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{data}}{Matrix or data.frame} - -\item{\code{target}}{Vector of targets (generally numeric or factor)} - -\item{\code{task}}{"regression" or "classification". -Default: classification if target not numeric.} - -\item{\code{gmodel}}{Generic model returning a predictive function -Default: tree if mixed data, knn/ppr otherwise.} - -\item{\code{loss}}{Function assessing the error of a prediction -Default: error rate or mean(abs(error)).} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-fit"></a>}} -\if{latex}{\out{\hypertarget{method-fit}{}}} -\subsection{Method \code{fit()}}{ -Fit an agghoo model. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{AgghooCV$fit(CV = NULL)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{CV}}{List describing cross-validation to run. Slots: \cr - - type: 'vfold' or 'MC' for Monte-Carlo (default: MC) \cr - - V: number of runs (default: 10) \cr - - test_size: percentage of data in the test dataset, for MC - (irrelevant for V-fold). Default: 0.2. \cr - - shuffle: wether or not to shuffle data before V-fold. - Irrelevant for Monte-Carlo; default: TRUE \cr -Default (if NULL): type="MC", V=10, test_size=0.2} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-predict"></a>}} -\if{latex}{\out{\hypertarget{method-predict}{}}} -\subsection{Method \code{predict()}}{ -Predict an agghoo model (after calling fit()) -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{AgghooCV$predict(X)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{X}}{Matrix or data.frame to predict} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-getParams"></a>}} -\if{latex}{\out{\hypertarget{method-getParams}{}}} -\subsection{Method \code{getParams()}}{ -Return the list of V best parameters (after calling fit()) -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{AgghooCV$getParams()}\if{html}{\out{</div>}} -} - -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-clone"></a>}} -\if{latex}{\out{\hypertarget{method-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{AgghooCV$clone(deep = FALSE)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{</div>}} -} -} -} diff --git a/man/CVvoting_core.Rd b/man/CVvoting_core.Rd deleted file mode 100644 index 2de00e0..0000000 --- a/man/CVvoting_core.Rd +++ /dev/null @@ -1,12 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{CVvoting_core} -\alias{CVvoting_core} -\title{CVvoting_core} -\usage{ -CVvoting_core(data, target, task, gmodel, params, loss, CV) -} -\description{ -"voting" cross-validation method, added here as an example. -Parameters are described in ?agghoo and ?AgghooCV -} diff --git a/man/CVvoting_run.Rd b/man/CVvoting_run.Rd deleted file mode 100644 index 9aad2fe..0000000 --- a/man/CVvoting_run.Rd +++ /dev/null @@ -1,13 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{CVvoting_run} -\alias{CVvoting_run} -\title{CVvoting_run} -\usage{ -CVvoting_run(dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ...) -} -\description{ -Run and eval the voting cross-validation procedure. -Parameters are rather explicit except "floss", which corresponds to the -"final" loss function, applied to compute the error on testing dataset. -} diff --git a/man/Model.Rd b/man/Model.Rd deleted file mode 100644 index 0e52101..0000000 --- a/man/Model.Rd +++ /dev/null @@ -1,109 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/R6_Model.R -\name{Model} -\alias{Model} -\title{R6 class representing a (generic) model.} -\description{ -"Model" class, containing a (generic) learning function, which from -data + target [+ params] returns a prediction function X --> y. -Parameters for cross-validation are either provided or estimated. -Model family can be chosen among "tree", "ppr" and "knn" for now. -} -\section{Public fields}{ -\if{html}{\out{<div class="r6-fields">}} -\describe{ -\item{\code{nmodels}}{Number of parameters (= number of [predictive] models)} -} -\if{html}{\out{</div>}} -} -\section{Methods}{ -\subsection{Public methods}{ -\itemize{ -\item \href{#method-new}{\code{Model$new()}} -\item \href{#method-get}{\code{Model$get()}} -\item \href{#method-getParam}{\code{Model$getParam()}} -\item \href{#method-clone}{\code{Model$clone()}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-new"></a>}} -\if{latex}{\out{\hypertarget{method-new}{}}} -\subsection{Method \code{new()}}{ -Create a new generic model. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{Model$new(data, target, task, gmodel = NULL, params = NULL)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{data}}{Matrix or data.frame} - -\item{\code{target}}{Vector of targets (generally numeric or factor)} - -\item{\code{task}}{"regression" or "classification"} - -\item{\code{gmodel}}{Generic model returning a predictive function; chosen -automatically given data and target nature if not provided.} - -\item{\code{params}}{List of parameters for cross-validation (each defining a model)} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-get"></a>}} -\if{latex}{\out{\hypertarget{method-get}{}}} -\subsection{Method \code{get()}}{ -Returns the model at index "index", trained on dataHO/targetHO. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{Model$get(dataHO, targetHO, index)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{dataHO}}{Matrix or data.frame} - -\item{\code{targetHO}}{Vector of targets (generally numeric or factor)} - -\item{\code{index}}{Index of the model in 1...nmodels} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-getParam"></a>}} -\if{latex}{\out{\hypertarget{method-getParam}{}}} -\subsection{Method \code{getParam()}}{ -Returns the parameter at index "index". -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{Model$getParam(index)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{index}}{Index of the model in 1...nmodels} -} -\if{html}{\out{</div>}} -} -} -\if{html}{\out{<hr>}} -\if{html}{\out{<a id="method-clone"></a>}} -\if{latex}{\out{\hypertarget{method-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{<div class="r">}}\preformatted{Model$clone(deep = FALSE)}\if{html}{\out{</div>}} -} - -\subsection{Arguments}{ -\if{html}{\out{<div class="arguments">}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{</div>}} -} -} -} diff --git a/man/agghoo.Rd b/man/agghoo.Rd deleted file mode 100644 index 38730eb..0000000 --- a/man/agghoo.Rd +++ /dev/null @@ -1,57 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/agghoo.R -\name{agghoo} -\alias{agghoo} -\title{agghoo} -\usage{ -agghoo(data, target, task = NULL, gmodel = NULL, params = NULL, loss = NULL) -} -\arguments{ -\item{data}{Data frame or matrix containing the data in lines.} - -\item{target}{The target values to predict. Generally a vector, -but possibly a matrix in the case of "soft classification".} - -\item{task}{"classification" or "regression". Default: -regression if target is numerical, classification otherwise.} - -\item{gmodel}{A "generic model", which is a function returning a predict -function (taking X as only argument) from the tuple -(dataHO, targetHO, param), where 'HO' stands for 'Hold-Out', -referring to cross-validation. Cross-validation is run on an array -of 'param's. See params argument. Default: see R6::Model.} - -\item{params}{A list of parameters. Often, one list cell is just a -numerical value, but in general it could be of any type. -Default: see R6::Model.} - -\item{loss}{A function assessing the error of a prediction. -Arguments are y1 and y2 (comparing a prediction to known values). -loss(y1, y2) --> real number (error). Default: see R6::AgghooCV.} -} -\value{ -An R6::AgghooCV object o. Then, call o$fit() and finally o$predict(newData) -} -\description{ -Run the (core) agghoo procedure. -Arguments specify the list of models, their parameters and the -cross-validation settings, among others. -} -\examples{ -# Regression: -a_reg <- agghoo(iris[,-c(2,5)], iris[,2]) -a_reg$fit() -pr <- a_reg$predict(iris[,-c(2,5)] + rnorm(450, sd=0.1)) -# Classification -a_cla <- agghoo(iris[,-5], iris[,5]) -a_cla$fit() -pc <- a_cla$predict(iris[,-5] + rnorm(600, sd=0.1)) - -} -\references{ -Guillaume Maillard, Sylvain Arlot, Matthieu Lerasle. "Aggregated hold-out". -Journal of Machine Learning Research 22(20):1--55, 2021. -} -\seealso{ -Function \code{\link{compareTo}} -} diff --git a/man/agghoo_run.Rd b/man/agghoo_run.Rd deleted file mode 100644 index a4f565d..0000000 --- a/man/agghoo_run.Rd +++ /dev/null @@ -1,13 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{agghoo_run} -\alias{agghoo_run} -\title{agghoo_run} -\usage{ -agghoo_run(dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ...) -} -\description{ -Run and eval the agghoo procedure. -Parameters are rather explicit except "floss", which corresponds to the -"final" loss function, applied to compute the error on testing dataset. -} diff --git a/man/compareMulti.Rd b/man/compareMulti.Rd deleted file mode 100644 index 8bf537e..0000000 --- a/man/compareMulti.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{compareMulti} -\alias{compareMulti} -\title{compareMulti} -\usage{ -compareMulti( - data, - target, - method_s, - N = 100, - nc = NA, - floss = NULL, - verbose = TRUE, - ... -) -} -\arguments{ -\item{data}{Data matrix or data.frame} - -\item{target}{Target vector (generally)} - -\item{method_s}{Either a single function, or a list -(examples: agghoo_run, standardCV_run)} - -\item{N}{Number of calls to method(s)} - -\item{nc}{Number of cores. Set to parallel::detectCores() if undefined. -Set it to any value <=1 to say "no parallelism".} - -\item{floss}{Loss function to compute the error on testing dataset.} - -\item{verbose}{TRUE to print task numbers and "Errors:" in the end.} - -\item{...}{arguments passed to method_s function(s)} -} -\description{ -Run compareTo N times in parallel. -} diff --git a/man/compareRange.Rd b/man/compareRange.Rd deleted file mode 100644 index c884e43..0000000 --- a/man/compareRange.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{compareRange} -\alias{compareRange} -\title{compareRange} -\usage{ -compareRange( - data, - target, - method_s, - N = 100, - nc = NA, - floss = NULL, - V_range = c(10, 15, 20), - ... -) -} -\arguments{ -\item{data}{Data matrix or data.frame} - -\item{target}{Target vector (generally)} - -\item{method_s}{Either a single function, or a list -(examples: agghoo_run, standardCV_run)} - -\item{N}{Number of calls to method(s)} - -\item{nc}{Number of cores. Set to parallel::detectCores() if undefined. -Set it to any value <=1 to say "no parallelism".} - -\item{floss}{Loss function to compute the error on testing dataset.} - -\item{V_range}{Values of V to be tested.} - -\item{...}{arguments passed to method_s function(s)} -} -\description{ -Run compareMulti on several values of the parameter V. -} diff --git a/man/compareTo.Rd b/man/compareTo.Rd deleted file mode 100644 index d5c1ab4..0000000 --- a/man/compareTo.Rd +++ /dev/null @@ -1,35 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{compareTo} -\alias{compareTo} -\title{compareTo} -\usage{ -compareTo( - data, - target, - method_s, - rseed = -1, - floss = NULL, - verbose = TRUE, - ... -) -} -\arguments{ -\item{data}{Data matrix or data.frame} - -\item{target}{Target vector (generally)} - -\item{method_s}{Either a single function, or a list -(examples: agghoo_run, standardCV_run)} - -\item{rseed}{Seed of the random generator (-1 means "random seed")} - -\item{floss}{Loss function to compute the error on testing dataset.} - -\item{verbose}{TRUE to request methods to be verbose.} - -\item{...}{arguments passed to method_s function(s)} -} -\description{ -Compare a list of learning methods (or run only one), on data/target. -} diff --git a/man/standardCV_core.Rd b/man/standardCV_core.Rd deleted file mode 100644 index 42ad88c..0000000 --- a/man/standardCV_core.Rd +++ /dev/null @@ -1,12 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{standardCV_core} -\alias{standardCV_core} -\title{standardCV_core} -\usage{ -standardCV_core(data, target, task, gmodel, params, loss, CV) -} -\description{ -Cross-validation method, added here as an example. -Parameters are described in ?agghoo and ?AgghooCV -} diff --git a/man/standardCV_run.Rd b/man/standardCV_run.Rd deleted file mode 100644 index 0937764..0000000 --- a/man/standardCV_run.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/compareTo.R -\name{standardCV_run} -\alias{standardCV_run} -\title{standardCV_run} -\usage{ -standardCV_run( - dataTrain, - dataTest, - targetTrain, - targetTest, - floss, - verbose, - ... -) -} -\description{ -Run and eval the standard cross-validation procedure. -Parameters are rather explicit except "floss", which corresponds to the -"final" loss function, applied to compute the error on testing dataset. -} -- 2.44.0