From 43495ad48a064df8bb224824b437ad813ac8c979 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 11 Mar 2020 09:40:53 +0100 Subject: [PATCH] documentation in roxygen format --- DESCRIPTION | 15 ++-- NAMESPACE | 14 ++- R/ArrayToNc.R | 193 +++++++++++++++++++++++++++++++++++++++++- R/NcClose.R | 28 ++++++ R/NcOpen.R | 29 +++++++ R/NcReadDims.R | 27 ++++++ R/NcReadVarNames.R | 27 ++++++ R/NcToArray.R | 48 ++++++++++- R/Subset.R | 93 -------------------- R/Utils.R | 6 +- easyNCDF-manual.pdf | Bin 109970 -> 0 bytes man/ArrayToNc.Rd | 168 ++++++++++++++++-------------------- man/NcClose.Rd | 21 ++--- man/NcOpen.Rd | 22 +++-- man/NcReadDims.Rd | 28 +++--- man/NcReadVarNames.Rd | 22 +++-- man/NcToArray.Rd | 88 ++++++------------- man/Subset.Rd | 48 ----------- 18 files changed, 515 insertions(+), 362 deletions(-) delete mode 100644 R/Subset.R delete mode 100644 easyNCDF-manual.pdf delete mode 100644 man/Subset.Rd diff --git a/DESCRIPTION b/DESCRIPTION index c3c0b6b..cce6a4a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,17 +1,22 @@ Package: easyNCDF -Title: Tools to Easily Read/Write NetCDF Files into/from Multidimensional R Arrays -Version: 0.0.7 +Title: Tools to Easily Read/Write NetCDF Files into/from Multidimensional R + Arrays +Version: 0.1.0 Authors@R: c( person("BSC-CNS", role = c("aut", "cph")), - person("Nicolau", "Manubens", , "nicolau.manubens@bsc.es", role = c("aut", "cre"))) -Description: Set of wrappers for the 'ncdf4' package to simplify and extend its reading/writing capabilities into/from multidimensional R arrays. + person("Nicolau", "Manubens", , "nicolau.manubens@bsc.es", role = c("aut")), + person("Nuria", "Perez-Zanon", , "nuria.perez@bsc.es", role = c("ctb", "cre"), comment = c(ORCID = "0000-0001-8568-3071"))) +Description: Set of wrappers for the 'ncdf4' package to simplify and extend its + reading/writing capabilities into/from multidimensional R arrays. Depends: - R (>= 2.14.1) + R (>= 3.2.0) Imports: ncdf4, + ClimProjDiags, abind License: LGPL-3 URL: https://earth.bsc.es/gitlab/es/easyNCDF/wikis/home BugReports: https://earth.bsc.es/gitlab/es/easyNCDF/issues LazyData: true SystemRequirements: netcdf development libraries +RoxygenNote: 5.0.0 diff --git a/NAMESPACE b/NAMESPACE index 9baf4ba..4a7fb54 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,3 +1,11 @@ -exportPattern("^[^\\.]") -import(ncdf4, abind) -importFrom("stats", "setNames") +# Generated by roxygen2: do not edit by hand + +export(ArrayToNc) +export(NcClose) +export(NcOpen) +export(NcReadDims) +export(NcReadVarNames) +export(NcToArray) +import(ncdf4) +importFrom(ClimProjDiags,Subset) +importFrom(stats,setNames) diff --git a/R/ArrayToNc.R b/R/ArrayToNc.R index de3367e..68fdc76 100644 --- a/R/ArrayToNc.R +++ b/R/ArrayToNc.R @@ -1,3 +1,194 @@ +#'Save multidimensional R arrays into NetCDF files +#' +#'@author N. Manubens \email{nicolau.manubens at bsc.es} +#'@description This function takes as input one or a list of multidimensional R arrays and stores them in a NetCDF file, using the \code{ncdf4} package. The full path and name of the resulting file must be specified. Metadata can be attached to the arrays and propagated into the NetCDF file in 3 possible ways:\cr +#' \itemize{ + #' \item{Via the list names if a list of arrays is provided:}{Each name in the input list, corresponding to one multidimensional array, will be interpreted as the name of the variable it contains.\cr +#'E.g:\cr +#' \code{ +#'ArrayToNc(arrays = list(temperature = array(1:9, c(3, 3))), +#' file_path = 'example.nc') +#' } +#' } +#' \item{Via the dimension names of each provided array:}{The dimension names of each of the provided arrays will be interpreted as names for the dimensions of the NetCDF files. Read further for special dimension names that will trigger special behaviours, such as 'time' and 'var'.\cr +#'E.g:\cr +#' \code{ +#'temperature <- array(rnorm(100 * 50 * 10), dim = c(100, 50, 10)) +#'names(dim(temperature)) <- c('longitude', 'latitude', 'time') +#'ArrayToNc(list(temperature = temperature), file_path = 'example.nc') +#' } +#' } +#' \item{Via the attribute 'variables' of each provided array:}{The arrays can be provided with metadata in an attribute named 'variables', which is expected to be a named list of named lists, where the names of the container list are the names of the variables present in the provided array, and where each sub-list contains metadata for each of the variables. The attribute names and values supported in the sub-lists must follow the same format the package \code{ncdf4} uses to represent the NetCDF file headers.\cr +#'E.g:\cr +#' \code{ +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(addOffset = 100, +#' scaleFact = 10, +#' dim = list(list(name = 'time', +#' unlim = FALSE))) +#' ) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' } +#' } +#' } +#'The special dimension names are 'var'/'variable' and 'time'.\cr +#'If a dimension is named 'var' or 'variable', \code{ArrayToNc} will interpret each array entry along such dimension corresponds to a separate new variable, hence will create a new variable inside the NetCDF file and will use it to store all the data in the provided array for the corresponding entry along the 'var'/'variable' dimension.\cr +#'If a dimension is named 'time', by default it will be interpreted and built as an unlimited dimension. The 'time' dimension must be the last dimension of the array (the right-most). If a 'var'/'variable' dimension is present, the 'time' dimension can be also placed on its left (i.e. the one before the last dimension). The default behaviour of creating the 'time' as unlimited dimension can be disabled by setting manually the attribute \code{unlim = FALSE}, as shown in the previous example.\cr\cr +#'\code{a2nc} is an alias of \code{ArrayToNc}. +#' +#'@param arrays One or a list of multidimensional data arrays. The list can be provided with names, which will be interpreted as variable names. The arrays can be provided with dimension names. The arrays can be provided with metadata in the attribute 'variables' (read section Description for details). +#'@param file_path Path and name of the NetCDF file to be created. +#' +#'@return This function returns NULL. +#' +#'@import ncdf4 +#'@importFrom ClimProjDiags Subset +#'@importFrom stats setNames +#'@examples +#' \dontrun{ +#'# Minimal use case +#'ArrayToNc(array(1:9, c(3, 3)), 'tmp.nc') +#'# Works with arrays of any number of dimensions +#'ArrayToNc(array(1:27, c(3, 3, 3)), 'tmp.nc') +#' +#'# Arrays can also be provided in [named] lists +#'ArrayToNc(list(tos = array(1:27, c(3, 3, 3))), 'tmp.nc') +#' +#'# Or with dimension names +#'# 'var' dimension name will generate multiple variables in the +#'# resulting NetCDF file +#'a <- array(1:27, dim = c(3, 3, 3)) +#'names(dim(a)) <- c('lon', 'lat', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# 'variable' as dimension name will do the same +#'a <- array(1:27, dim = c(3, 3, 3)) +#'names(dim(a)) <- c('lon', 'lat', 'variable') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# The 'time' dimension will be built as unlimited dimension, by default +#'a <- array(1:1600, dim = c(10, 20, 4, 2)) +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# The dimension 'var'/'variable' can be in any position and can have any length +#'a <- array(1:1600, dim = c(10, 20, 4, 2)) +#'names(dim(a)) <- c('lat', 'var', 'lon', 'time') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# Multiple arrays can be provided in a list +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(list(a, a), 'tmp.nc') +#' +#'# If no dimension names are given to an array, new names will be automatically +#'# generated +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'b <- array(1:400, dim = c(5, 11, 4, 2)) +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(list(a, b), 'tmp.nc') +#' +#'# Metadata can be provided for each variable in each array, via the +#'# attribute 'variables'. In this example the metadata is empty. +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(), +#' tas = list()) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# Variable names can be manually specified +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(name = 'name1'), +#' tas = list(name = 'name2')) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#'# Units can be specified +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(units = 'K'), +#' tas = list(units = 'K')) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# addOffset and scaleFactor can be specified +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(addOffset = 100, +#' scaleFact = 10), +#' tas = list(addOffset = 100, +#' scaleFact = 10)) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# Global attributes can be specified +#'a <- array(rnorm(10), dim = c(a = 5, b = 2)) +#'attrs <- list(variables = +#' list(tas = list(var_attr_1 = 'test_1_var', +#' var_attr_2 = 2)), +#' global_attrs = list(global_attr_name_1 = 'test_1_global', +#' global_attr_name_2 = 2)) +#'attributes(a) <- c(attributes(a), attrs) +#'ArrayToNc(a, 'tmp.nc') +#' +#'# Unlimited dimensions can be manually created +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(addOffset = 100, +#' scaleFact = 10, +#' dim = list(list(name = 'unlimited', +#' unlim = TRUE))), +#' tas = list(addOffset = 100, +#' scaleFact = 10, +#' dim = list(list(name = 'unlimited', +#' unlim = TRUE)))) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'unlimited', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +#'# A 'time' dimension can be built without it necessarily being unlimited +#'a <- array(1:400, dim = c(5, 10, 4, 2)) +#'metadata <- list( +#' tos = list(addOffset = 100, +#' scaleFact = 10, +#' dim = list(list(name = 'time', +#' unlim = FALSE))), +#' tas = list(addOffset = 100, +#' scaleFact = 10, +#' dim = list(list(name = 'time', +#' unlim = FALSE)))) +#'attr(a, 'variables') <- metadata +#'names(dim(a)) <- c('lat', 'lon', 'time', 'var') +#'ArrayToNc(a, 'tmp.nc') +#' +# Multiple arrays with data for multiple variables can be saved into a +# NetCDF file at once. +#'tos <- array(1:400, dim = c(5, 10, 4)) +#'metadata <- list(tos = list(units = 'K')) +#'attr(tos, 'variables') <- metadata +#'names(dim(tos)) <- c('lat', 'lon', 'time') +#'lon <- seq(0, 360 - 360 / 10, length.out = 10) +#'dim(lon) <- length(lon) +#'metadata <- list(lon = list(units = 'degrees_east')) +#'attr(lon, 'variables') <- metadata +#'names(dim(lon)) <- 'lon' +#'lat <- seq(-90, 90, length.out = 5) +#'dim(lat) <- length(lat) +#'metadata <- list(lat = list(units = 'degrees_north')) +#'attr(lat, 'variables') <- metadata +#'names(dim(lat)) <- 'lat' +#'ArrayToNc(list(tos, lon, lat), 'tmp.nc') +#'} +#' +#'@export ArrayToNc <- function(arrays, file_path) { # Check parameter arrays. if (is.array(arrays)) { @@ -335,5 +526,5 @@ ArrayToNc <- function(arrays, file_path) { nc_close(ncdf_object) invisible(NULL) } - +#' @rdname ArrayToNc a2nc <- ArrayToNc diff --git a/R/NcClose.R b/R/NcClose.R index 309b78e..bd46c4c 100644 --- a/R/NcClose.R +++ b/R/NcClose.R @@ -1,3 +1,31 @@ +#'Close a NEtCDF File +#' +#'@author N. Manubens \email{nicolau.manubens at bsc.es} +#' +#'@description Close a \code{ncdf4} open connection to a file. +#' +#'@param file_object NetCDF object as returned by \code{ncdf4::nc_open}. +#' +#'@return The result of \code{ncdf4::nc_close}. +#' +#'@import ncdf4 +#'@examples +#'# Create an array from R +#'file_path <- tempfile(fileext = '.nc') +#'a <- array(1:9, dim = c(member = 3, time = 3)) +#'# Store into a NetCDF twice, as two different variables +#'ArrayToNc(list(var_1 = a, var_2 = a + 1), file_path) +#'# Read the dimensions and variables in the created file +#'fnc <- NcOpen(file_path) +#'fnc_dims <- NcReadDims(fnc) +#'var_names <- NcReadVarNames(fnc) +#'# Read the two variables from the file into an R array +#'a_from_file <- NcToArray(fnc, vars_to_read = var_names) +#'NcClose(fnc) +#'# Check the obtained array matches the original array +#'print(a) +#'print(a_from_file[1, , ]) +#'@export NcClose <- function(file_object) { result <- NULL diff --git a/R/NcOpen.R b/R/NcOpen.R index 7f7e64d..0cd6ec2 100644 --- a/R/NcOpen.R +++ b/R/NcOpen.R @@ -1,3 +1,32 @@ +#'Open a NetCDF File +#' +#'@author N. Manubens \email{nicolau.manubens at bsc.es} +#' +#'@description Silently opens a NetCDF file with \code{ncdf4::nc_open}. Returns NULL on failure. +#' +#'@param file_path Character string with the path to the file to be opened. +#' +#'@import ncdf4 +#' +#'@return A NetCDF object as returned by \code{ncdf4::nc_open} or NULL on failure. +#'@examples +#'# Create an array from R +#'file_path <- tempfile(fileext = '.nc') +#'a <- array(1:9, dim = c(member = 3, time = 3)) +#'# Store into a NetCDF twice, as two different variables +#'ArrayToNc(list(var_1 = a, var_2 = a + 1), file_path) +#'# Read the dimensions and variables in the created file +#'fnc <- NcOpen(file_path) +#'fnc_dims <- NcReadDims(fnc) +#'var_names <- NcReadVarNames(fnc) +#'# Read the two variables from the file into an R array +#'a_from_file <- NcToArray(fnc, vars_to_read = var_names) +#'NcClose(fnc) +#'# Check the obtained array matches the original array +#'print(a) +#'print(a_from_file[1, , ]) +#' +#'@export NcOpen <- function(file_path) { result <- NULL diff --git a/R/NcReadDims.R b/R/NcReadDims.R index 5d2d87c..9cdff44 100644 --- a/R/NcReadDims.R +++ b/R/NcReadDims.R @@ -1,3 +1,30 @@ +#'Read Dimensions of a NetCDF File +#' +#'@author N. Manubens \email{nicolau.manubens at bsc.es} +#'@description Reads the dimension names and sizes of a set of variables in a NetCDF file, using the package \code{ncdf4}. The different variables in the file are considered to be stored along a dimension called 'var', so reading the dimensions of a variable 'foo' with dimensions 'lat' and 'lon' would result in a vector with the format c('var' = 1, 'lat' = n_lats, 'lon' = n_lons). +#' +#'@param file_to_read Path to the file to be read or a NetCDF object as returned by \code{easyNCDF::NcOpen} or \code{ncdf4::nc_open}. +#'@param var_names Vector of character strings with the names of the variables which to read the dimensions for. If multiple variables are requested, their dimensions will be merged and returned in a single vector. +#' +#'@import ncdf4 +#'@examples +#'# Create an array from R +#'file_path <- tempfile(fileext = '.nc') +#'a <- array(1:9, dim = c(member = 3, time = 3)) +#'# Store into a NetCDF twice, as two different variables +#'ArrayToNc(list(var_1 = a, var_2 = a + 1), file_path) +#'# Read the dimensions and variables in the created file +#'fnc <- NcOpen(file_path) +#'fnc_dims <- NcReadDims(fnc) +#'var_names <- NcReadVarNames(fnc) +#'# Read the two variables from the file into an R array +#'a_from_file <- NcToArray(fnc, vars_to_read = var_names) +#'NcClose(fnc) +#'# Check the obtained array matches the original array +#'print(a) +#'print(a_from_file[1, , ]) +#' +#'@export NcReadDims <- function(file_to_read, var_names = NULL) { file_opener <- nc_open file_closer <- nc_close diff --git a/R/NcReadVarNames.R b/R/NcReadVarNames.R index ccab8bc..0af8959 100644 --- a/R/NcReadVarNames.R +++ b/R/NcReadVarNames.R @@ -1,3 +1,30 @@ +#'Read Names of Variables in a NetCDF File +#' +#'@author N. Manubens \email{nicolau.manubens at bsc.es} +#' +#'@description Reads the names of the variables in a NetCDF file and returns them as a vector of character strings. +#' +#'@param file_to_read Path to the file to be read or a NetCDF object as returned by \code{easyNCDF::NcOpen} or \code{ncdf4::nc_open}. +#' +#'@return Vector of character strings with the names of the variables in the NetCDF file. +#'@examples +#'# Create an array from R +#'file_path <- tempfile(fileext = '.nc') +#'a <- array(1:9, dim = c(member = 3, time = 3)) +#'# Store into a NetCDF twice, as two different variables +#'ArrayToNc(list(var_1 = a, var_2 = a + 1), file_path) +#'# Read the dimensions and variables in the created file +#'fnc <- NcOpen(file_path) +#'fnc_dims <- NcReadDims(fnc) +#'var_names <- NcReadVarNames(fnc) +#'# Read the two variables from the file into an R array +#'a_from_file <- NcToArray(fnc, vars_to_read = var_names) +#'NcClose(fnc) +#'# Check the obtained array matches the original array +#'print(a) +#'print(a_from_file[1, , ]) +#' +#'@export NcReadVarNames <- function(file_to_read) { file_opener <- nc_open file_closer <- nc_close diff --git a/R/NcToArray.R b/R/NcToArray.R index 4ad00ea..0fc047e 100644 --- a/R/NcToArray.R +++ b/R/NcToArray.R @@ -1,3 +1,49 @@ +#'Read Names of Variables in a NetCDF File +#' +#'@author N. Manubens, \email{nicolau.manubens at bsc.es} +#' +#'@description Reads the names of the variables in a NetCDF file and returns them as a vector of character strings. +#' +#'@param file_to_read Path to the file to be read or a NetCDF object as returned by \code{easyNCDF::NcOpen} or \code{ncdf4::nc_open}. +#'@param dim_indices Named list with numeric vectors of indices to take for each dimension. The names should correspond to the dimension names which to take the indices for. Non-consecutive indices can be specified. If \code{expect_all_indices = FALSE} (default), it is not mandatory to specify the indices for all (or even any of) the dimensions. In that case all the indices along such dimensions will be read in. If \code{expect_all_indices = TRUE}, then indices for all the dimensions have to be specified for the function to return a data array. In that case, \code{NA} can be used to request all indices for a dimension if desired. +#'\cr\cr +#'Since this function considers the variables in a NetCDF file are stored along a 'var' dimension, indices for the (actually non-existing) 'var'/'variable' dimension can be specified. They can be specified in 3 ways:\cr +#' - A vector of numeric indices: e.g. \code{list(var = c(1, 3, 5))} to take the 1st, 3rd and 5th found variables.\cr +#' - A vector of character strings with variable names: e.g. \code{list(var = c('foo', 'bar'))}.\cr +#' - A list of vectors with numeric indices or character strings: e.g. \code{list(var = list(c(1, 3, 'foo'), c(2, 'bar')))}\cr +#'Vectors with combined numeric indices and character strings are accepted.\cr +#'Whereas the first two options will return a single extended array with the merged variables, the second option will return a list with an array for each requested variable. +#' +#'@param vars_to_read This parameter is a shortcut to (and has less priority than) specifying the requested variable names via \code{dim_indices = list(var = ...)}. It is useful when all the indices for all the requested variables have to be taken, so the parameter \code{dim_indices} can be skipped, but still only a specific variable or set of variables have to be taken. Check the documentation for the parameter \code{dim_indices} to see the three possible ways to specify this parameter. +#' +#'@param drop_var_dim Whether to drop the 'var' dimension this function assumes (read description). If multiple variables are requested in a vector and \code{unlist = TRUE}, the drop won't be performed (not possible). +#' +#'@param unlist Whether to merge the resulting array variables into a single array if possible (default) or not. Otherwise a list with as many arrays as requested variables is returned. +#' +#'@param expect_all_indices Whether the function should stop if indices are not provided for all the dimensions of any of the requested variables (TRUE) rather than assuming that all the indices are requested for the unspecified dimensions (FALSE). By default the later is done (FALSE). +#' +#'@param allow_out_of_range Whether to allow indices out of range (simply disregard them) or to stop if indices out of range are found. +#' +#'@return Vector of character strings with the names of the variables in the NetCDF file. +#' +#'@examples +#'# Create an array from R +#'file_path <- tempfile(fileext = '.nc') +#'a <- array(1:9, dim = c(member = 3, time = 3)) +#'# Store into a NetCDF twice, as two different variables +#'ArrayToNc(list(var_1 = a, var_2 = a + 1), file_path) +#'# Read the dimensions and variables in the created file +#'fnc <- NcOpen(file_path) +#'fnc_dims <- NcReadDims(fnc) +#'var_names <- NcReadVarNames(fnc) +#'# Read the two variables from the file into an R array +#'a_from_file <- NcToArray(fnc, vars_to_read = var_names) +#'NcClose(fnc) +#'# Check the obtained array matches the original array +#'print(a) +#'print(a_from_file[1, , ]) +#' +#'@export NcToArray <- function(file_to_read, dim_indices = NULL, vars_to_read = NULL, drop_var_dim = FALSE, unlist = TRUE, expect_all_indices = FALSE, allow_out_of_range = TRUE) { @@ -203,7 +249,7 @@ NcToArray <- function(file_to_read, dim_indices = NULL, vars_to_read = NULL, (length(file_object[['var']][[var_name]][['dim']]) > 1)) { start <- c(1, start) count <- c(-1, count) - ## original_ncvar_get_inner <- ncdf4:::ncvar_get_inner + ## original_ncvar_get_inner <- ncvar_get_inner ## assignInNamespace('ncvar_get_inner', .ncvar_get_inner, 'ncdf4') } var_result <- do.call('[', c(list(ncvar_get(file_object, var_name, start, count, collapse_degen = FALSE)), diff --git a/R/Subset.R b/R/Subset.R deleted file mode 100644 index d10629c..0000000 --- a/R/Subset.R +++ /dev/null @@ -1,93 +0,0 @@ -Subset <- function(x, along, indices, drop = FALSE) { - # Check x - if (!is.array(x)) { - stop("Input array 'x' must be a numeric array.") - } - - # Take the input array dimension names - dim_names <- attr(x, 'dimensions') - if (!is.character(dim_names)) { - dim_names <- names(dim(x)) - } - if (!is.character(dim_names)) { - if (any(sapply(along, is.character))) { - stop("The input array 'x' doesn't have labels for the dimensions but the parameter 'along' contains dimension names.") - } - } - - # Check along - if (any(sapply(along, function(x) !is.numeric(x) && !is.character(x)))) { - stop("All provided dimension indices in 'along' must be integers or character strings.") - } - if (any(sapply(along, is.character))) { - req_dimnames <- along[which(sapply(along, is.character))] - if (length(unique(req_dimnames)) < length(req_dimnames)) { - stop("The parameter 'along' must not contain repeated dimension names.") - } - along[which(sapply(along, is.character))] <- match(req_dimnames, dim_names) - if (any(is.na(along))) { - stop("Could not match all dimension names in 'indices' with dimension names in input array 'x'.") - } - along <- as.numeric(along) - } - - # Check indices - if (!is.list(indices)) { - indices <- list(indices) - } - - # Check parameter drop - dims_to_drop <- c() - if (is.character(drop)) { - if (drop == 'all') { - drop <- TRUE - } else if (any(drop %in% c('selected', 'non-selected', 'none'))) { - if (drop == 'selected') { - dims_to_drop <- along[which(sapply(indices, length) == 1)] - } else if (drop == 'non-selected') { - dims_to_drop <- dim(x) == 1 - dims_to_drop[along] <- FALSE - dims_to_drop <- which(dims_to_drop) - } - drop <- FALSE - } else { - stop("Parameter 'drop' must be one of TRUE, FALSE, 'all', 'selected', 'non-selected', 'none'.") - } - } else if (!is.logical(drop)) { - stop("Parameter 'drop' must be one of TRUE, FALSE, 'all', 'selected', 'non-selected', 'none'.") - } - - # Take the subset - nd <- length(dim(x)) - index <- as.list(rep(TRUE, nd)) - index[along] <- indices - subset <- eval(as.call(c(as.name("["), as.name("x"), index, drop = drop))) - # If dropped all dimensions, need to drop dimnames too - if (is.character(dim_names) && drop == TRUE) { - dim_names_to_remove <- unique(c(along[which(sapply(indices, length) == 1)], - which(dim(x) == 1))) - if (length(dim_names_to_remove) > 0) { - dim_names <- dim_names[-dim_names_to_remove] - } - } - - # Amend the final dimensions and put dimnames and attributes - metadata <- attributes(x) - metadata[['dim']] <- dim(subset) - if (length(dims_to_drop) > 0) { - metadata[['dim']] <- metadata[['dim']][-dims_to_drop] - if (is.character(dim_names)) { - names(metadata[['dim']]) <- dim_names[-dims_to_drop] - metadata[['dimensions']] <- dim_names[-dims_to_drop] - } - if (length(metadata[['dim']]) == 0) { - metadata['dim'] <- list(NULL) - metadata['dimensions'] <- list(NULL) - } - } else if (is.character(dim_names)) { - names(metadata[['dim']]) <- dim_names - metadata[['dimensions']] <- dim_names - } - attributes(subset) <- metadata - subset -} diff --git a/R/Utils.R b/R/Utils.R index fde2c95..15e56c1 100644 --- a/R/Utils.R +++ b/R/Utils.R @@ -192,13 +192,13 @@ na_array_dims <- dim(array2) na_array_dims[j] <- dim(array1)[j] - dim(array2)[j] na_array <- array(dim = na_array_dims) - array2 <- abind(array2, na_array, along = j) + array2 <- abind::abind(array2, na_array, along = j) names(dim(array2)) <- names(na_array_dims) } else { na_array_dims <- dim(array1) na_array_dims[j] <- dim(array2)[j] - dim(array1)[j] na_array <- array(dim = na_array_dims) - array1 <- abind(array1, na_array, along = j) + array1 <- abind::abind(array1, na_array, along = j) names(dim(array1)) <- names(na_array_dims) } } @@ -209,7 +209,7 @@ stop("The dimension specified in 'along' is not present in the ", "provided arrays.") } - array1 <- abind(array1, array2, along = which(names(dim(array1)) == along)) + array1 <- abind::abind(array1, array2, along = which(names(dim(array1)) == along)) names(dim(array1)) <- names(dim(array2)) } else if (is.null(array1)) { array1 <- array2 diff --git a/easyNCDF-manual.pdf b/easyNCDF-manual.pdf deleted file mode 100644 index 621593b4134b376a16f33b53150f06027b4f1462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109970 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�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:>(b^&h(%k6Z5k zT&FER%1?`>y?4()puA%|Kv{?8+v-HoX|+3Q<*!s!`TC7AdzRLD(*A-j8TmK$<2Ghg zRk<`TSysse)ykmi+OMrxX{7Rk)BgfTKSnp#y0_==43{3h&t~hQH zi?GxCS_Mq?3bV_WD;2)O#$1g$7kkcIxRSY3e}q*eiym%2J;&C2#eBE0f1rK(Vo?aR zpsq)cMw4zSfTin-a;vBKkfNHs@)bKujmCme*+X*!s4ZVt#jV9cy!Z#yC}hAJU47`3 zoxrHtoKu}a^-K#Hv1twzr3+E8SEfi;8`L;1)2Kk)EzT0FBaiwC(e->uUH&6`QO0Z8 zupBF3V@kW+w>qwjbD_8JLRJ{^h5HhIlZCboT87TUujiQ@oy3_we53Uiw?)Y2RrK>= zM+#nhV5%tEC1fXC&#cO@R96BdGH{M^fvFmz$-=f&Qcs^0ms7+O=@B(h7w%E zqK$Me&l^SGeM_yHC-3FIyIzKCXPDJ{Z9-P`l|U&sOPCm88_gvsUct zjw-#fd#UpE%JxdOacJ9*C^fhZJ4n_w=U0az^!sG8{%nkR)6erqAo7=2E3d)5@ z&+<3T+1vd|n*Z^DOFUogMYwTBs_>e!y)k#%H1KGAd15HXS6;b3ZY9Ty@wI1XzeMZv zB4nK=>xkX%80TYQ9Tcw{s;E#J;1N_9CO1_=U^!opVZq8nK@`4ncQ}9=>8~1B8G5cP zO@$1(O};{Ov5tg}S<{|Oi6~nBhRmse;L}aD!f2eWzgPMv-{PS<&>DI8{Scot+B+DF z2{b7$4CFZMe{Ug)W_smj+N6gqMJ~pqbvL==SW(E>t~KN6jxc}wuyg4QOL;CC z7xkFSZV{biu)F$ZyRw;5GJN^&@W^g?wFgi`UXW1_?nCP8M{PAT#L_?x0(ID&o8^R+ z9)?fimgCcLn2&ZrL01KBfo|M#kI1Y#Y_uuM)u&rE`UJ8U`$uy~n$(T*+$LUomx@@t zd8^sYV>Rj>=tWFpa;XY5l4?Kd1A7z^L92$HkC{h~W#Zetg3+qe zag3NC#bS^+YANsXP^duPzU~$!s-Bjx88(p6@o4!Y%G4xtyo*egTqvoYSUbULxhwt$ zWs@_HYb+*3SdXr=XVSch=Gf1N^_v|ZzNB(2&z$+_?cVDcP-M{yWMBT&g8pj6RpLw< zJXyWkkjXFA-%#@Vgu7uwHVCW%Go`-4wiLw;J{im^C_6@K>-~&_E9A}t>uW1U3Urd% z@WJCx72ZDywte<+s*y>{4&VmvW%5l%$D5|!^%38&U7@>$Xa0^J(?}z&EcnbjYf|KJ z+OoE-i{Y_+=F)P|30A0Y8MuqNFJV#VQYyw|do#HHaHs$((qP{65d_S~4Bf@v%x=>U@d~wsfys`_8Ok?sp@?HH98TN?Q~R;V z&bWQtys|p^{V4Q$n9iaIBdHx@IN)jgoBZlMXP^5geL=3=Fi6=y>EW0^90&JhSsU8a?Gr78N!&3m1{PMOJ`oAKbI5T#Ko#uS<;xOUa&lL$oR2Y@2p8> zcq`R8r$rC?JX0~d%s&yB!%xz#_F*QsBz{$d&*5Mmn$tw*cypTP7Hm2wpnzLAJR*F z!d}4U&-l47Crt}?lj7B0qLkq^U(B#Rn&Qf?$3xadAtZFB)@6PtFg-bcQmm1)`mAI- z$1_E1mDt`W3%mcyf{DSaz5(gw>F>%e-A%gQe`oh6SyzV7?){Nu6+q3KCjAJwRe>lF zBuN5O{L4-uSm0TX!!SZ@!8+HL#nS zmybliRCzW{N*+`Fv+?!`&1LWmNQC%R+$#yzt*|peyzcrGw_khd8P08g@R;kDO}&}QC6tl2zek? z*fb z$h!V&_ky+*ZMQ9b?ZJxJD@`^^o2RYsMPT-j!SCNf*EncX`4$E8D&oXbm@=aZ@1p~I zYZv9nLr;g($k*#9^DbkFd!pcE6hp zJoh@v+T>A1{;ck1E$Ro}TX0pQwkPI+ry|pe#Iu@Qpi?>l=Q;L5@SG+Uo1mrYP!?oA zsomevW*IqsSPs^hv`#=*2_F~M5r(t$)%X=iys>mj!K{!O*chBJG7DdR{ZVk-uJ!{Z zT!+%kQEh!GYi4C?v5|=rQ&UDKB)+3lmCBpmT3U*?ICRG_g~V_rOLXujjQpSm$*76e zRH)eH>tOq?n9Vxbe{5S{(=_H8EZT6$a^1`P7u0zxzR$@?r>@FEF;jB-mRLK-0Uc3Sfa`UY_TcO=2~Fx zT*2)3s{E(|L8o(odrn+U$4}__GHrnAJ@)W)Z9nI%Htlp(&O_W$ca$4XyQrYLKw)39lcFxn3zo; zbaL_T4o^a{E|xCyP8b^sWWLi3JP)ES@)gz6C1dVAbp2o{d>r856N-qPCWI}up!!`j zLa}c*u&$F(=b7Q@=c@AYRt0({L7bK#IMf!5lGTC(*Qp3p=Jt?pUaseK$<)anGUi*{ z1X%LCEm$NkCJ|rtfV*OSFcl)LbI!0T(Ph@5>pxMi(mi>@k2hJEJs)73vOTrhK-4lkeM#i;u zZ9v*>p9;dc`prV9c*grdVt=U#ue5eBVdvvv7qdU}J^jx}ds3dPhaUaHBR$snR#`J< z;p~Z%UTk`SF@-q}dtpeaT_Py^Mh~ZdD^yIgcX{zs1TWWI@*m>Ro5m1_Z^MGyd1=cC zs(8Dew3|Jiqt+NqWgKhnzo#%~X-K*$F$=eBp11SpAFcyS^Fzw~rvQ8Ro7S8Vi^${e z!V-gIbL0jS(?kjydwPxS^HD7$&}lih3J)F`w3^$|O$-r8Y&n+@p?ZZ0j&{Gy3y--}-f)lC4^m@P;~{J}wbv zk_X{R`9|QIKgf#?${8|3ZLeu>_viu3e&hpo=qYKlV^Y;fnb5_lh6QR!{v7f*bW_|g zYwghu`U1Vy-kYveT%-+p|6s_%vLTO(`~=!Bs{di^9D)Q3yKI|wrES}`v(mP0+qP}n zwr$(CZN2J2cXY)22R*zI-}uIfea>22Cp#lebXjZ!K&hAo@u2w!zX%HpUuWdaH(Xq6 z=s!ik|9{8uKf^HtGxL9kzW)rzER5{`{q?^iU`9rk|8q~Nv!Xk9mSPx8L7h=Zo)RcY}lSzI)twal|f_AH5M3uZmaAZ(xbb&$ALCQr8IVIw= z%58u3&eA7`Z`SF%kMHbjEBEfG9cXX_0TTk}SwNp4%nY(5h*zFihZuixzYe-@91V~h zysRQKGmKx5)*Uz|N!A;_Gz38%lXTbvAU49D^dazx8bBzCfpwT0cE^Z@7o_l;u-`x^ zVZ53j5R?EfT7dinhJF~KfSMS}y_*(<(MKSV@Q|q=5MiGn)h7ehUeMi;SJ*TH5GmFd zuxhn>;|o>*5j+Hd_E#`qmH^;T2q2LY!XF2O9Vb$y0hAyCUJYhP&Xj?IYE!|1a~D9Q z7`ZW`jP!doX82(#P-;bVvfMsVoBCG5$=%%;{`Rkf@{ih);_r;2q)JcGW1~NUVSS$h`ss~HJ}x2fIiL$6#S*sywnFa-SI>t`%pilX{)ES;|< zkneLU_~@1q!v_FYPp{4>0XpPJ{_O|0`@BtJ@br%xXE*yd4JJ0Xx`o&{2ug^7jV&Pb zC#-Hu6lH{fwhXHAf`LEf5TDm|TvLJo16KQILp{iNe;z=~paByx25W$NR38L_;DJG; zdeV)UP-8{D{eSHESY}O?wE)}z7rPzJzwidk4EhH>9O*l1S=!o7Ak+-l#Qf%G*+@K8Kui8e>g_%Uh1`TUkRLvMH>w zKPU7!Y&q7Cq^_Sms|^VuV*ZpsSzL53owOI5chmEjo(d`XG|v@1vb2a;{^Cww8O~-8 zsc!vMO_Bw{*x=e$DkLSsyzfZNEDDtGdD!qc21SYV0w<}2=Yi0A^Dg=nwj8uhyqsWt zr8jb$r2lq`^6~JsGS}(xFBy~Uf1d9P9M5ohY{?1ngs_alX&^hlSop|TDJQ}riJ$zq z32OSrxn9~jdw&z}lv+07!QjhwJ9_fRnI}FPm}7OdSUV0FRH?ymPT2=>$lo@5Ms+6d zsb^$jv)q5k=hij{cV>Q)E}IW%PI?GmX~V51`z@~{#McRa{w5ve>ui5{>r1#$)REJ$ zO(ZgDf3@MUr%Bz(AsY}cS1kO)IudS5=E6cXfYi@PB|<~;mxzw-aq=plR`xxW7=vN; z%yoC^T=z_D;ZrMi`?&WALUoosF1@8y?na;|^YZb=e>)Lxq3pZ-^bk0r^K*?~@Fz!! z;}~g#moc~$&P+psPkDoFRMUPE7!K2#JTD}{Lr@{XEBveNhBh?LOA*6I|OWg&D z>(M8t&#trE`Ok*2CgNJr@Hx+*#p)C#8r@DQ{tj|RnFnWZ6-rL7iuS_0z2+i@@i3t} zMZ2T^27ktP+tL@Q`qB})u#=HyZpvF_ZS^9aPoq==vg^H_<}@dkaj>*HLy2>Snpe$8 z`$mNihrN}v6tzAv)s}6Nre{3ywsl6T1FvQV^V|68K89Dfo6o_v9UHIwvH5kxtZ$Fj z;LVtt#(kL*HzfUWq*f05n(-w+H>0pBt(wL=}^6n0X))smb6GfQ>MN@}&xxiY_PK+<;5UlFft8>^~IQP>=Ewkk*Zn@Q} zIg=(*vp2y5>R(l$?tj1;+xIcg=q5YE6{$eUL#<{z3HZ&2Nb?_sFb-tnQYZ1be|v$5 z#E1+MJU%g_7mDy&)76#e1y64j&XK1OBZt)bov?t*lSf{kF2{m3{)HSf1!H->^53KF zFZ_e=6e!RB;;F|EqTUdc&@-D(dsYtB6F@h~%Uj8%P>lE%V4HomPlwWrhO7xY9=K~t zl{af~T3olBWoKe&B15m@EI#DsYH8lu$K`Zzo)5ohN_oyZs8l@J*7YN~&q-jp%Y@ zqVQ)Gk;fD*>>D4E_hLf1Q^p4lex6h|rKF1!}<$G~%BV?f(yIFr5Dl8K(0+%JbHHcTFLvM1T@b`D0_8b*c z@dAakTfyR&AOF0r4h5S9xxB=EfcUgw3%)aiOI+!54&bC$^<}|zUF&hKz3|pa8D>c; zOzZb{1kxO&poTD$7U8;*uWR0g*(jX)wysW+EB78INNy~8AF@zp-#_RdmR6mVLd1cR zDNHaI=laOzbdGZ(4s-A}c?zLKvnUY=FtfH>GxpGJ>fxRr%p99tlk%&ywP z;%hl(^iEADK0GO{AS?t&{8=l_mTPEQl$*rcG;=Rp(<8E17%Uw7Xa61P7x-hMaHpwg zF4OyX=`2L@V~jnG+bH9{oQ=I)KIV9{FB(|BJdjdwcQ8YFj@~XSYg(^BQk9beN~?D3#8?17W1Db zDE9xjL}&b;Qiy*O6eB(Re;lD07&#a@{*P7f)vn4)+Sds*HT~OcH#au@+mIlx+hZf! z+uFb&uCA`os9Af6TR1?ezkJ)?9$A~O#kcNihE=srD$^ep(IVm%RU_mUP|U1}ARB?` z>gj5401+xKBeXLW{9GdVwcLdP>E$SULNnp~;uJSVCLj$!8@{YS>Gyz5Q&NDr(^3Fd zRsbqGIyxW{e(ZDogX0qeh#-0Ma?1t9rKWGCM|4Pj^`pKPyxiH<)K`E?cyu);E&SkI zOrCS1VZY6V8R-}RM&@Ajtqm-|VN?{p@$yMPb7B-007X+*(^*kgfD^PMEh?k{?o>!j zo~BG1ejIaMaA|s%0rEe>Nh;=rPwJ9<)D!RBCB_x!er z_13!Vt6vAik-471L{Qh@eZ&mtebiFdAgcFcsbX|B?GK=m;ydZ_|3E`jO5&0i`4b#teMIUJ>e5#>E2;WX6J)P4w>98#Jb*qD@CfYQ}~rlPI*KAu~(26vXG##bhGt^!wk zHKFv3jP>8qvO9{C!=t}-LF|5nj7@AmYVY{UKCrkOqe_apnh3vt>$HAZm448H;yOYH z!CQXGMF7n{bVGXw!omT!0d=CPw73EOy1=f)cD@3JrA7{)`ii}~;;;DTphWS@sN4W- z$9AZz{nq^O<@n}2{g6ZjbwkcQ)z-@cW2|TTNNxB+{wQR&v2%FCf4v_6mVNNe`p$Nx zr+2194oncv1@WzM@=yUQMLt@)Jv7?*(or4Rg$aoVdg%N6veb>z@pwhH4%{`929?`K z+*VH;?yv37=1_0{n9;S+ILlV7yYuG5aaijDZg47tvwi#EH~K&-jD)K+tqym6ktV^S zMV|b;6h&0{+*85KD}i?+Z4Cog^R-+0^N|jB12@!)Yj|U;kXaC+dtARBB2^R(hI(G~ z*T?VY=TM#X@Bn>mvAaq55Ml2o87>&bh2}3>2aaPsHBz+#r;VgV2F6@Puqy_bD|(g$ zxG!^N>!Lmacqg+iz6eS`e@ABvMwsO3G^K5O-A-QiztN^!I}j)`h%DEij&$ zM!)TZrjf!ct*!O*48X8KlR45fQF|I&Q%MJj(ES}kKqrD!D$n8){Yopv$1b4bCcJh4Y@DRFaPM7R0_FkI0%`1k2u&gs03nHCa>R<3kg*e9k1qvhmCF7itlrV`AxvtGPEPru zMb`$j<5@?zFqI10XjDX8gM1=%tRU1;S-AQzz5BSlKW|~WZTu&9r3q{n__|-=yCsq4 zJA53aS2mkKNB7BgToP*!bnm%^)-XJv@Br2l|4AX%~}qdDT0((o36{cVuV6 z*l!fjdBEq1@g8#-YH~lM!{7fHPzHj+o7V5T_fZUAEUrof7|2GZ87nc&ARE_$u=rcrvaEc|BjB^p+~O<(ZUKPe zR4FH{Xn&z zXM*8!72>EzMc*3NRy|dsUw*%A$IP~7hU#rv`>*buL3KFW(4jakTCD-XRAfMfFE`B# z?@rj{1Jl-%wW@T>vUx&mlxMMQ z>LfYtYw$B=MiM;?02T*q0u3*1>kSrqk}e@>wh=yS#4CCh(N5&&3SS zeLfh@m^JM=mI&|fPFMn0Y{Bkqlz2HTC4~Qy1o11~43yVa&PuEh8p8(tV8Qo3CQnJJ zI*~<;@ec(O<+hJ%ooC=*PY6?Ww7=#IL1DS}y7G=%OnrCkML31S^oX1&2&*!$5<1Pk z&$@(|0D8NhbueK$^Oep_Be}})Gf{Ba?H}DL9LR7rj(uR{zfK|H&SGqwKX;;gumJ=o ze2LfPS`6>NU7ERF`zYatf8y<%2)h4)>6{a_g?Xvc$Y)(%ih_|1OBDco$K zBH;ph!hCsR2@pjNs)L`th8vYiUVkF|iEA>V;B@l?OB-1dIIn}&R8o3eLIOFOhjir0 z4qt`GZcJoj>fd3W4IG@;4IK?XGeJS4_F)p_i5;B0C-a<{NMyJl=(k+XapfxRijS(U z=5tLhs7xcCmb6Z)00OtV$OO3lX@HQtPn-W3yD6P=udh{Mp?eN6dpVd|>`1d#uj+N5 ze4gg@6z7+dRIeK`u}-k&p5n0}G3aZ9I?kR*bdZkp&|9z1JQ7m*;#)WwfoxIsmPKFN zK^#V)(pC>$^9gCYPk`qV>>M7Nn>ik$V|s()G`m*X$xb8S$@1>2 zf10!Z0v+kCIfYU`)mQ9~5Is1B>A$X10VR7u0?HN!zcYLKeB{@bi`yt=XsZ!&1bAOa z-Ne(KqCA)-k|<;9q&%E|FQA64KtMcSu9#`FLfu-RgJudbT=bchqD4`)7JZE&jpR>H zC}{)F3>_+!d^&Yz-;Ry~Yk6|p0)%m33KtbNKj8%*0`Pb@b+=$~2x=PCh-qwG##{fx zT%sV^L5VO1>5C+x%X)8c-Nf_^6uhsT%5FFXJ_nr8qvVMVI~co;VT5*Zz(BN z4rX>wt#1G8&NjwsWbq^^pKg%bF(hUwWp@~gQ`cVqxPXOFASo?YH-IZ-=5B@gvj(dmsl!cHGx3+t{8FKCs-CoakbYwfl^T$l%}*?l-EwfOY!b(j$wp!9QsQ=WGz-6qFf6RTc%Sof0y}e zX%N=d-EwR@9SLN3Q;C)1$FIFMw7M!+1p#JHE~$98@c`TvDte4rpwb~en3vS>^CBfS zl`A=tN0z~SsjCYr2=c@3=yb6-1%`(Q5sby3D#3|Q#toUqX)6(WmMtb_aI%(n!X?@X z<~1KE5j57<+-lG~{DhL+gCdiAF^RCCzxj6T>aCdWvIQ=g!|;8te~Pa#kEm6Gj%|kg zZRmQ$r=WuiY`Fh18D^wExnj&ciHhvz(ZRgM%~)uXoxe;SZD8yX>P>yFQbdUZXy`lE zc+~hZkUr{ljOXChC0n(3Y`8-nEx8kgxbI$+hYS4DIT`5T4vnMLN_#XEip1Zb#udm1 z1r{69df#lsvamrrMcBy+0xrGOo(v-<_S&_gh$4jXhscK=+F(a5h#%GNQ-K9Rnp!2p zFCkmM3jADx0?{B7Q7;!M8V0Mh(|LHlr=!SlMv@pk?<|ICYs7_sH4K^L$uaQUJvdi# z_CW_Kp72h!_r|J>T&~CAINpq#;u&$6W{vnYQVU~3 zF86F!HpX!NKw2b>2GKNR(G2#rH_LIh9aA75$mx(tDua&3L*uHl*9txQAC9eB*=*Dv zKIHbfEmcL#uy6zD6<|bG$y)GmN-eP(8$lh*pu3Fm?K5vV=;c}XE zLM=%(mOt+N3LXC5RO9Sk`MT?}Bv?GBLbG%%*J?^b?U`%PkY>7b%9$_=a>6?NcUfD&`XB$_6I?wTdH0do2|V;m&d>{TP#5Y4(7rRba*aSsbF@C~y!MMksHkR|SKAA}6=XN7rgVl1*?6!xB8+|t z-kYe=cn`#pJi8vsw}}@vn5Zcr)TIZ15G`5CrJ9mT8MUF&x~!iTiJH1ZBnX$y@r(Cn zh*?QQsFTAFfTsvW#=9Yn#O<&%$~AQ;qhg|n{Y_EWz&U<3mKCPmklF#J%u%HI^@Jh( zUPndufp7s_Bf={cmyW>JngiXl?~=7dk0|wFl-_SdfzeU5_QsCa#Zd>&3D^_0$J4`` z&g9r$UQfx-Lo{qO??i@A%*;VjnpYgPio(egX48o|7MQ3VPEzlmHYGd-n(Iyutd~0F z(1xc{VGS7r0!E~4{bC&*ZjL=Zkyuh?Pr9Us@RvA@;VZ3pZd`Di-iOD_KM%%bH1d6f z#a2AwMdFhjDR)rMobuxOs#($n4 zoe=403KiXBtf&ZCz!lB3doo&4wUeq!;StGcY-|>h*?6l)8SVKHcTqZUcn+95dvC`>ZK@nsgx+ zPh!%L8^*d!3o)iMT9RKOg}&*&jh$tP6s!sjlPTQpNM@UrAI8~pWZ$@0?`$(nJJg&9 zn~K|eRphTJpRO5CaQ#dYF_)-ZX2xFR9#=y+S7YC*$yVBbE=? z)VrU-=J#6#Vz$7blE%A;2g1<%bvs-K0&-AGa(~B7VcWfLN$rqrA`4MZT z`XJ6E4z-LG%HjZ1Jfbg?TJSRs!Z0E92MyMbGMn9VM9-Z^OdX!3h=z0wJY`=CtGG%S z8K}+ZH!jo+;V_esU@R(lT$4|v4DDC~vyn_qY)0tuL2!VqQIX8CUDrWNnsfWqosh=f zsn|<6f_EJy&yYPPW%GJc8{@92p5uv{inQ4@xmNrl%UE{FB@{OYHiF;eS#NzRcFT$+ z%6eYJYv0g_pr@ve!y7J0F5n=Rn4nP|I^_uGg6dXyB~&P;(=72*S%oW)EA;G&(m^pU zfQEi90zPg8%Db`pvk1(ysUTXWa;;&uYmy^pc`~V=Rjg7reWvYOae$f&ca zrQudpInpz(k-*d7Kw z7>ZRwyPZ2p4w{CJ9ehUEMBrhKUyb}C@^rbtZd zB|$Y0Lw{iVuvxjh2~B_2f`U{&y^FJEW0PfQwIq3=YHoX8GnVM%c%Y7iaK3FXY}f$x zff^10ey*Sqem5@XeAK@oZu*vy0;_dOIp~mMGIC!s3(!m+AQyl+L`zrjuK?;?Xtg-} zk)DC8H!XZi-Ckr#v^sf!r)%Jx^B*#z08VO6t4=rob@~<6Plb zuH=GXh;1o$9F=Bx=nxOd{Vse(T4EEVY6a`w3m$0X$x$kMkaH=iy?d9nL964c^?cE; zyLgBT1o~e(g|I({ID=GDKzR?D2M?i5W$w07kw8-~BU)MXX{66Ai{S?uzxz~~!y0gy zYs;g13^zLBz?){%Voc2e8b*xYCD(eAJKXO(NhJ$dL`WTvSvD002uOUWyOV@+RxhSX zZ2hyB^tCc`Ut{J50tM zL}C(Lh(LQoja>+B@a!AdkK5#3z)6AIZ#WIl|Z`C`VZk?u(z+bMH z_I1%;(+}&kw$^Bl_Kjw|)jto@3hQuOEa9)OXq4lp*;n@c1P8-^sti?eiu^w)$eXW$ z{@5fcs?Fvrrns7Q>Z{?l_qkUTOEeH;Sd9t|HA?Tyem>SkVdg#e&c}>x&zqdNg@}Q9imcS?CmA0l#wy~91zA1JPTmv2^N!q*&VZ* zAn6|$_-nYG;=Z^)4)>)WEV_yjgc42VO9-0A@QU%(H6{R7ZH03NY&O_GW{f>cW^8K# z_9__ic}+=}b@A@U1)yjxynE=o8N9av#XDrE9@UJa9;jL$~Q zc|0UzY`Q3_|5nsH%o_JzXiNii@~@;qhLY~w=tXCYi}h$_+19^W_hfDlBE3N)hC)8C zkp8Alw2U*?4jp>bo&weffJqzwPphwFZ6l#Ct>*9I>FW*{;AF}!b@ z;|`YaxFEO>A7_%GhyJt{r8{X$P(EpyS@c@zAWKV$*bsT8&5g|pE>s@9jJ*L$)^B-no?6j#E zn#r;`vSwa6KT-mKFvr+thKlDk1h0WaM7ej0ri~%}DShLZ6P8>KG$mT`1+20T+17T0 zR5%x(%Z;%02`WMij1d~t?lSd*%hCdr0Ei;;Fs&I#roE&)O)b5qC+!)%8X0g-xryfI zQ8O-xuYS(mYL@!&s06-*#OWBA%#(~weu@)(@)tK)s|y~5T9ad}3Crs~N>URfz$hn% z$s9KUhtT7SJ+pAW9==J@phFfbh;)uY2a1M*C%cfG`(xfw8-}peGx8BKF;_RwZU4=S-{}h9t6$R0* zAKNfkud_0vhgqJKAUK`o$~CS=_UJ>V$P*%1>SQp>PJcrd+zZw zkN20~e@2C9Ns?Rl_S@ZpD}>f40*t16X_~d$p7J7Oh@9eP;sqckUrv#LX|w0Ja>hPp z>c-H=W-!aEai|``8 z!Ja0p?%RwVV*-eU0u&?uF|7^kpWNLUrs`G{2vr^Qu>vnb_0&Nxgyxk?sTQYZftmjv zhhlinsKnW(Ec%s&vo$;7&oe-a%0O4N#pRdAvJYwC91EJU`_*x*v?cqkiya&`^sq)q zkadll7C?he&cqy*QDcPQUU=e+ z13n83=+7TND5Bhr6P5uBmOz-{@Gk!S{xZ<-SPd?Gj_v28$8>Ql#9CW^(G}Mn?t?&8 z?SqI^AK#F*`bKjI(y2qfVb&D`XQ+NS3b|4-kr{YtlKg$k3xv7y7BfkRHTwbwO=zee z7$(>Kv{H_9F^ov_D8AVJJHS}_*T;Ni)8bn%@g=!%9J{yg<6#MHuAv}Sv{5^z90 ztX|O6jxBCf9o}+>mn--O|FhRJ!?1(c7p@DlSh1Wrfe>b33N@Obhva)jqN#=SU6O^u z&qu;PUf`F661aLWR;8WZ=7IyE(EEv*6NYsK#`<3W-U91|X8 z&?%gXqo-}Jo=n1z~$Tb%a&)LCn~qA!CpM_al5S!BoSfF{`RB1+)6;w>$m9OCI?uBzAv#%knQ$3i1t zNGvTvjRGp+%>(SUv$W~szTCzuJ@ruV1CIfq1K_9RL;BMZKosUX#4Cm6IA^UX4ZuBb zP3h-l8tSX%rFo{RjXziNO>Iimt}ydfqV5BVB~?%M@YDH|f+~c^1BpVEOJ%=D*Q=j| z%HhJ&R%GuaB{%QGKjxc9AQQVXiMj(_E3-%^NaJ5^a{G%llEKYmv@LniXeH7Z6d80H zm|TYyZxT6*xT9alwiEjS$A9y6!va#qc;4b{y>9KJ_uPS6$yvFPge}f=NEnqzAQ?V{ znR3*iyJ`xg7$Wtwm z_CY+_eE?08WxMIWfOBp^*&6uNVlP>4ecX3gw78KtVW!|7wa565YAiWh00T=rqowJ} zn!Ni42e2qgAJ1&(&ilr6Z^GXY+}svvzU|Z~|2iv|cG`2r7la~f-5Jx1uKW=y{P&Yd zB_bseX4$_N>9N)(g&Wo=SApq(uk`K7`hxK9cogDD6cbLMDFw$gr?elP1bo)X{(j90 z7OjxyMl#~c&(JS;N>+unpF|<>W;<^DP=PTaN=*S8vW)w%OgHCn!wUIRY0zl-2-*9h zN>WBCY@pmflv~LA?)6zg#2Tc`IOlU&GsC+%&YG4NmIir2wca`pDtOi;X@624& zTQD4v&MSk!8>FZ1m|&qe8$*_tSK#^m=`boO8f${@pLyQsu(utQ8eSLX2n$AP2}kb$ zlWc}cN<))p9LZd?m9~+TGoc8Q2xncaZWpJSxMAf8L17QrFfTYAGpDd76qWAfl8en= z`AY|ewki;b4iFrF&79TX?vWj{sbMFB2@5~`s(`)?HUkdB!@>Oh9bcxsxk>Ny0shrS zFHwq{Y_upv*A>>W^x^}*{m)b?q6Vcz2qHD+guplwf|WBdHM z9XK)-GW^Xt!tDsUpv!9L?^5lczIj@I9~`o?{nN7g7A^!i_8%+sXF zm28lcyCjhu&I3!BSK8MLHxUDd62VUj-c@0YK@Ux2nr@zQjJ;H zK^&h@M3`MqOa?WG*z0|X-wr7ca{RH|5P7l3tysOb((nBhE1s}W8KlgEGKk@qoki0HWQ3$!sv4$ji6bXgiB8Yxw2X z1b#s35r#6CXB*gP5mm_*XRwHY?qv}LSzFh_v4oJm6FO8CZ;WGFlQDRgI}nx=0as5- z^dj5Qos4I5_jl;XaScPcdVMwnF{nY-c+waWmWg5rdQICaBf6&xWeRZny%|4HeHVVK z9W7>WEs9`el3Qk?I(~l$j{FI0TXOycqp;9 zNyj!(5WHg>H6hmrqTxDt$e6RTWtsnYC0pzLAY@iRkYg2XNJD()RJ`lC-?3Pv{4?M> zbWOzWyZOMsZXdLRu#dPXn)et+^aa^v_*V)M7+n$OhHh0_n3eQl1P4bU>(9k*IRFdf zR~+JHt$(TRYi)VbYcNeqvye|2u0()!v!jvCf|u}U_DrhA#{nqMcn14)Mo5yi53_X( z1ibj%MQ51+X8!u_1uR{(>YsSQUW^9R8|JOy@xyjI+5$Cm@|ePv5Q_h`5B?))8k$2m zi~?<>eWhkW+IA%CQ+N^Orf5A()B4rQdeey0;g=*>8D2}6m}w9kg~g4y>np92owFoB zSJ3+EdZddTTlB|FdFp(9$c?Vi+g0p2h)JEJl8c*?H4TK@vhdrh=hr^2f;5{`R8A$H z1LqR15Z%~&mI>|4bC#PNrJlb_W2F#oVwJ1cBO|l*-U~tkj`cRyLzY=7u6%*@%7|}X zsR3RfGusi{Av5AVYpf(LNYN{0V6S)=Ez%G;=)i&1PTtz(wV_AlsQlS33t+}XOx1asi{I-4LMvvatnkseT8Nl88FysSbZC zVF%a-?%T9vEh$WqUQgpb?c)gwIe$#kW`N__TXl~DZa3VPh*(kQ)?8Bb*5KJVAiRaE zS=?EcAp&fvIZNc^(gKJ9=ostU!SPF(Jq;V9C!-e@xFUKn8Nsr?M3K(l9XZZ&)hZXv ze(@1fOGaUKNdn3G;xSy7U_kK4vs@@dZiJP}aFaX@t~Zk7X(4XjymG_TTkA)Zu11LfLw|2OGF=$KZqdpv~1db?+?SAAzS zb5e0gXjo>Z{{BxDEwg5G!HQ3f0C$*xZ-);&jC4eNEJXs6u8c z3w5da;Sg#sotadDeVjP=atJpwZZiLbQ~Kg{H{?Bgl{zRDw)_SY11xbW@=Z=YRX$;LojdU*E)%?RKzLG6GeAUl1b5dnFz=w^5E?Y2wX3 zLvauACYCEI?%#EO=~u;54Z}N?m!E};9|^SyXrL|f-w8}mHQa}oAxNX(gOWdyyn+^h z*N0n9Oes4;bWDth@3%{R{hoVh6_awbtfsWkhymFGZfY^{(U(mz_SzIA>56~ttE(yr zFX1m)Ej`FN@QHX8VSHzKb@~{~cmcDLkFLB6LQVNukre75U9$!p{dgf;F>C>7hms2& zUOiLd51&u&Z%SJ%noo64T2oN$$H^k4lkAtsXtF;DqrowME@!tC{(%Lu;mHwHGFg~SVq$wmi4Vypr_r20ZHD!v8Uyf-FtQdVSwlVcFNp=%AHeRp5o3GU);Z)k` zt-1e{ga_`Upw`)fl}&x@;y}cSoFXtaMl#*Wj&3E$bbZ8j6Y8_t1<5+|y65767A;x-9+DPsytq#<7q8DP92f-yA zwnK&)Un8DOmK;HGv$peKuZsdToqxGe8yf>}89SBMAgi%R1Paojs*Wn?Dmb6|cAs$v zUfu7kfF4%R>H@eR-sQ^nXW3hNuX?%c)%!d9M0s?gY8;|CZ*ysGbFLVJ!}&G{&1$B@ zf9@RF36X{RbQc_X4ijmS0|X%@aqqJtp^pt!zO{v1kIF_HP44%TAw>g`D92;*x1lMa z$g9|B`8;atzMQR0EvWlL#zX&R>43`9#iJ7S*;({HDSf& z6tw(fhC9_A+1AVNu7HJW5Z0c^2a09=SE7kZA5FKo6frg2#+36fz;x1+{_@J0;`~aH zq>mC~&@{iaVin(XAFQcMMfO&OB|VC7b6qF9T{C3DRBLQi(pOi$->(Y}{>1r^Xhopx zO1&o*(K3TxE9GS?zOkNK>g_N$!#l zzr1t8yjuSskK~;gAgN`b3qN12xyTD)02z=dKM%a>S9-Jfp@Mf#p(Q8kco8p@)!dBq8jIApEXKvJ-4lBtozTj&{~MFF**VIMdAAa9+V8059m-| zyrR-b@XU=OJ*e$?1%i7*ui!#FF2%s74z^li86O!QN>5nA=4^9&#E0W$rUG+Qkxp@r z&K*3nG2Y3Zy)ds;Qz0EB5L)7Aw3a-|$ov%EBxxEBRPesa>Biu$$*w}nQX4&+m`ww} zK1u;Xb(g1O6?gx7TGkwsw)qpzQ*|?_RBC;NF zZqebg=hdRNPqjK?5k4Nff8Gc}^mGT9izEZ(D7XB8Q<^tWm?Bb4(1A-fz}sbNqkdNk zhO$5nf1D&#F5fijx6t)?Lyidc@S!P!{^%9|S!AH7fot%;-A5_p4U?|s;es0xOf52? zmGcZ#9&iWGBtP+(NLF5RJFAbt;JwmefdCVQvoTvbdhqL)P~;+SqLfqm%bEp20rWkd zM{-Fhp&acQ=xm!|vjr)Rr89C`PkikxiNrVBvUsZ`^pRY?`PX3XLdu+vrGW&vIYTcG zQ>)JoK`BQZno^d<;dqbw5PJ~DcfL^Iig{zuP3ar633DTT)OxGs zhOsb~T&TkhxWfZIi_pn|p;XF!`2B#ue?teeIQrPJ+*`APB>S+eu183od%KCili0rq zxBlW*7Y4Sg-XAQZ3ZTzKDbq}BX?`qR+%G_1E8Rw0Fcq?Aqdxp&73NeMv1qe|RUfXK zXTVYw_AlG6$q|(2k*cV%Y!f9fUb{>J4Gp0qvaRgC*83Osr&goF3Eb3+{L9qPmgy2U zmO!6AOYGiy^a37c6#%-0Ob{!UV0{8;93Qk@%25t})Lf;eFi+hmLfVrAd78t#^0|tq zD0YlFxGD-#B`4n%lw5ip6mY(=0)eYz=82mbnSL@hHvoFyDFC$FY!iF^jEDAE$0x}7 z`c*w%8o&@hz77V87XZ3(hiVKg&y1;-kn%))H+A#GTt|DC&G;tu+RV z9S9xzqn>5)WB~IR4+DB_9}FZnOVV2Kldrzm2snCr)&qel*^?To(w|_d8vD?Bn8oqc z$1yb(ZcNP5(Xl?a`OK#mwX^ld+gqUB2eONJQZvD0-SKpH(-X6n4guG{=xg7= zA(u^g()3!=YvEb@ScT0(9^wfX!c)#d*$e*?heqf=QnwEC#HSXD2XG@zK$T!r5seuN z!8KSprOhg(39(GP{h2VE2iEn!`RR^?Ik;HcpTcj%amncsctcV^EOwXZ|I1A(L4a_K>;E)Fd&|~V zzwm}L!G7@zKw($K^8b@BjP&&Xk$m~z`bY*=Cf5G}Vg5Hf%)rLT!2EwCU#eOSos6wp zNwGIwT&y-*tTnmH*OHa2l&w^)Hcf_GvX!E0b6$D2OGn>3ew}jhJfoatwUAc3PBk(E zgw>-3hPLLH1Q!s_Ci(`(rl94T?CG5y<(-}6oQ~p6<(lgpfWML*`{d=qI5gARHrRoN zrL}0>05wog0PLZe0H~<^fc#~FZqRqzp~?eqyUPwzxnT% z=LUwLAaXz6cCB@;P7ZYd9Y4Wuy)H_PbpUM|ngG<+S2O?y5)+(^5efhn6e558l0fGM z)`xKOu1qX!4Z-4C85#jP)aC%Fak2qlet7|=u>DV1f0IrI-q0k6K=pv^>>KDC-!Dz} z%}w^7Vk2<(jP|ee4i6q)G4u|B>Ks@BJASVHD~bBR%uH@geq@1sk5giPCC0|r?`wkx zb+>itjYZK^(U?rJ$W;4w%O(yIerFb!H-?^b*JxRNmjOg4ds9wgOl*FWp6Ir9(|R>j zk+AZh`<4e5pL5kpPyrmV(8xTIYJ2N{12{M~zo`DOp<(4M`*|pR$+OxK{+S$KD zKcao+-h7#6`~4PsAd!)I*7~}0{Y+l?p6DH380g!MLyQi5u$81=?yjk@^0Sxtnuvgz zokQs9|FmvxO`rRoZP8@?F5_SLnuMI#B9flO@O#qvwFi@6Cl(Z5?#2OJ{BosW{Cj{Pr_hvf3 zmdXD6>m`M4b=CbNtMj|8F?q0i{)5+Nq$T~+A_8LeoQi4k_rw?4T8r44n`SE6T5Gxr zFopER*Ykz09c*rEV14J`4P@%3Z!=0?-@w$DuG7T|tBFgWuh`yO>jaS5k1o}lR2b!Pgp?(*;GEuSpdFX&$&vlFwQ*|W0t41noh znayA1uR>NwN0%SThhEga-HPAQcU?zY{e5$Nu-1+vvk^3_%#`#SjmT^+Zi<@K-AN!` z>;t8ZJRK!?x$Ct@9vZLE(t)>b(x7_#jMv6#%loPGL;jQ(yC$^BoC>nx1IpaK*r<|P z0O!Ppz{s0B@I-wIgO7HVrrGC!FV-Mhvc{ABn|}a|{x}!%z7u#R)6_GPG(fti007u~ zAyPuGx`j8k37G^DgogG0I*0MX_#)Br-rCrm+$@dJE+DVA3^p}rE@X@E1IDcnsrYPH1@@gF$buT~N^g9pBPt~2WMR4ZW>UBbN2sR79ndk0)q{rtQ7 zDv|Jjr=ddwri+FU=WI#FQ>rXWwC8{>bC+}~?t0cc(P()|1#=@2Y|Y%VjHQ8vK6xnr^8Ms$JjYE38MwswrtzBZQHhO+qPX_*|u%lwr%^}$s2S;4|tq7{@NwSZhby?buE*0_!ju4HQ{mI-lI@&gg#nfs3zX=g?yBT zQ)5tLoXg|YeESBr9B4KxZ%EXmzZCH=1LCjJWg%@MPjbE^$2TO~f5^nOj$hQ3Am%s4 zVO(Zjgu8IRR-nzi#yH0(CZjg{Qr@t#UH1ae54S^!%QgLR_A3qn*2un?ymkM0tAMp= zU}u=QGvKG@VSC)nE~KE$el_&n*SI&3b&}~@R3n58n5y~~Wy@kD(Z}qy1Y`Qrf!Q#L8363V6IXUhbBw*Y*Jj{fr;(#)Kk*E18|7cWGKrca zs|&`4^XGRtv%1VGUS;AJ4|@$qP6<4wxH<`v^~om{tXR`etM&U(8de96-k z=>U}i*0&Z4n{4WPG+n312aIDwGnf|OhlXxX8fDv>792OkM>*ra5(3R2+@^2Nr=v0s z`6rMN?UiG%$qwAY!8Qn+@W@rcDQ3?p@ao~kW8T4ovZ>cNszM8XIj3I$GWix?AAWd> z;iXXg;LietBd8Z&S*Itmw-M(uDG#jZf3(V@5PA4ybEVzkRYP8C+BYGYHM%nsmnM5{ zwISHOtEDb=9Gwg+4^4iv^E-%VRkPvq=qOsAt1V4%5B~0ATavBj2n>!AOD-2)iJhc6 zsL3R*2ey&-!#(h5L%_xhk_^Kf!{h-HIa~~ydB}o=& zu;dYi(l2`0JCFcBV*jt!;1Z6v#twxU^VT&A$3RX;LPG3qSq6!5&aN$E#4H{cvtxu1 z-p_;3rV)Fw=yEM(SfNUkdR}Oc_i0q=bmY$i7r}yMjq9+^9n6Lx9@I`o;~dbxc%|;g z>Z8LRWD(P}F)F{aGy{K6$VWOh-lFB+J4$+QO5+|CVkl-Pn7e93J>yWl3bU~bJnl?? zUFr440FEe=WOsN$Iv)_X1cy!z2>4?EMTr#0T`gy4Uu`?oAvYH8qs#C<|E37umRD}q zXH(_-L+CM=uNi=7^bz&hymQYtg!o+ZJLooIL5*>9<*R*j;A+KlD?`mG35dn89RBWJKt&+;k`D2wGuBi3YC6hWqVlYo2fr* zM8TEqwl?Xf4lTscPFZ)!*b&Z;Oli*fKiyl_fBXO4&+Lqeh`DZjLK1`Z3z0TSmgj3Q zwDt|X#RUZtK_fnbJ5~uX`_LH(gKtF?Ci_SHA5RTjHr@y*cyp-V#Wh(kS`+%7F}s4| zpxn#oaf2kZ03v?%EPpPt2JYQvp5!iqDsv_j%0Un4y2m+MuA^FB%M20_&wJYV8~+OLd_VR0oS3kgV%U&y zdRKSluy8MJHFUy+7b-85?25?DP`iE6P2?v%Q|R3(YQPdA-xB8KyNM#}p4wNae-^8F zNEV2?LZ1VQMP)vN56OJs*MSRO-xuM87&c?`YfWjm2$c3@Jx_Z4X+q>}qGz`sNA#jW z!=i&eUl2%8O?q(NG|bi>1@^r2XAP)dtX+_PfDJFNv{G`Rm#albU%4L6D_t&n?G0%5 z%@106-;Q`-yk&qAx|)d$uS!ZBW*U8ksz~BPavxlUAFx5H-UC&D-Bxi!OYn?ab5mOc zYx#rFB&OE0hfm`7Wt?E=cfHU(8hGHDyYVgcq1r3izWlTqLpUGWxFV*CXWasTak(bQ z5kGdeXSc`+3JzSIgiK|iJ8B5>-{@A83Fr!d9eh^iF-}NV^qw4q@M4>b<+q?wj-pY{ zhU`#e2`5hA>dZx^;&Ix5?Gy65HDl=ER+^?@oF|wbnuI%@rhi&nY~;<&41SbV(A$nZ z4k~BK$b!q^I1NSg@LfUyvy)<0ifkeu9{l-iiQfJu@c zZzc666C1-{U@^Hpic<7%^7iU?>Pn4;LvxVlNkDw&!L<;TzR2^>z7wi2Rp8Fjm4>BG zH9I^YPt=TffK+f339V#W0>TuYb|{U7Ohu9AI%kUdHSvEY;=*Z+({aWSE2GXw)IIov zu=43sC>SImBue}lQ@FTcyA=?VG(?$aO$@(A<0R$;H;k|3P3(NiVOT>e`ck!aT?`(-!gK4BJW z;m&QDcevT)$sT6$-fXj#(zIar%fbu4-_Q5p$+QH!wc+L?v5$>!i^M>bk%m<{mDYY5 zggW+>ks*v-N~eP2L4)YNR62`=khjSm=)u8{^`0gB)Z$11(I)y=#jgUm5cF`j_Tbc}nikmOyKLv+Sb&{#(T^wQ1 zs!i3Yx3#PvW)4jfDgK#%2zU5g>2<`|&Z0q+KWcAH7gqP`!Pm*fdM+UVH*NOUuQImU zw4sgK0*dO?_$Y4iLKaDlPLmi3U^@#a4|~R*G>wSxr7`CDsnpCzQ>jag*=>bcSe4sh zq2!ii@0~zpJ;2CE^UJyHkO>HMD5_H-!{|WS5Qm^atyHvG+~^lJ6W7J^PcVShzFD^x zD~d(#cxyz?GICWcq%DxdsM%ymD^vmj@}fI9?q!BC)s6Ii$x3qsKC>_nISk{OH3k4h1Gy=REpk4exu11 zqR4p+6*d`&VUj_EN&nr0oUz7+MAJ86B9aPfPkXB65DpD&9w?R6!(XD+mCn+At>Plp z9pO6kz{}Ac(_ZI-Lf*^*P*;oY$}a7hPq%2<U_UxeP-=v8a|TvtY4nG zN3grgLS&To*SxiI2$&dkt=EaQ8NV=*X*)L#AH9pVq@chT*CZFYnNdHvlQqUXxlYmX zQ1)H!eAW9SX&5~HWngox*Bx!Dr)YjS8?}EkJ+n;wofnYdsXafy(h%%2}B5i%0Gvu6%jVcjFW> zTr6;m1uck!3EsHJ)u8N35I*PEmkKj{l4aWPcEYCm-y&^Bc(+8aVTL9STx%=bHt@k~ z^6CVd|M0r~lIP0EakKy}^@H+zHM`^FxHppjx!Yo89aG*n0}7`)5R3AibLBGSu5nh^ zixn7d%pzU{Bydx-+f6pz~DiL_sk; zVyAbIqwVkH{42!N`#$IDtXjo9=vE7e*uU~Q>sq9<{s_cD}^=!LAA-hXHK0h7t8COZL4*XJ8< zn0*Qc#&i#{|1~zs3bb5;8jbe+i{qVHm8x8JdioDlOa)DaPFKp+wH=piXGC>rRZr!u zS8_XFsuxbE-WG}g*ppPaj*VnVJA^$ps5FT~-!%JvAM)!3@;&FvPiT!)XSH#*MQ_Va^rGHd>=3cM$ZaaO57#Z+ibi198*Ti zU@kfD7;ZMbHAF(8a>+ZHH=(Vu9-FPXN|43BNRg;KUc+Bn`R%Zzx&>RH9KgtkyHMpq znktij+gCa3LHutDWrsfw1w1O&{#`dp9g_#(E%)652RNO%JB-rSm+WLK5u>9~^P&P{rXH3n0|$|ajS&_W2gMh`5SNtXX4 z0KvCbZI70G3%xrfKB-l7(UYgI;w z@XGL^WDMQRB+48@@sJv;7SBSt)^h9W0rz)E|4xyW5VFoYo{%lF%A03Zuv~Bl^Lsmh ze*W?g=bp3b2ZAt#pUXk!+FJDBSm!hY&cS1{gsaW--jP{je43PWag1g#h0fT%{ zh0qJdS$>ll7U$wTz^d1jF{)M}v{f5zMj3-M8JcysEnx-+qmAZk_gji6x(PkRZMOdV zx?hqAY>$kuZHTy$xLysxdVUBamJbypBnG=Oi|a$A?eEt@t&QCEfjS?+Efeo|gBX`H zW^@zoT#}-3=68b)O7^dOQ`wZqN9Iy){e)Oy=Esxy3InB%8}eAS2s4N5V<5R)*+WS7 zOj0sYwj2{P4>%LPF>&e?RviVTy#-EU&mD#vTUwt|B42fqcESWw)3|-J{~h|V?nM_d zrBWu3`f|gS$2qzF3~VI8v-u zz5)_9V$zb1Bh8p)#fu>6&^q>fS#`Ce*@q-C@Jzan$AG=7h9;ddQ`QUF+Vp^et+~$! zCyC(RBO8P&+ah34C!F{$nWj-xb;k3SxF=_MyQ28Roy9(& zMWXl6M1p2auBa3r>V<1r4(`s^xo%M6Kv35<&QBlFJ-PmVT zWVnf&L|TBn_4L{HdLwprg!)-LC@)-q@F|AVp|7nUkj80kPm2iVt?~>h)|IESoOWf7~zJ zwy*u2@y-rSqeeKzYl_;rl*>2j($0;G%&3d^>JYqOLyzUZhCbr4H*voF1j0q*fPuS| z(Da!Oo>0y2k&#X|3Z=0T%Gxjl{Q9rw6SUJF7q44W6)i}ux4K|lI!)>G4X&e&T-5CGLs2XOw2%5`<(f6T;(lB<(Q#sG^ zUypIJtkTL2_d`&RI>qrYQ|_a`K_ny(#GsI$cm&TFu#+P?Rf-Tvlhg{z1i4_5+d+xi zr}fi8f!Q(A-ydHJblTz(Hb@fU+2$di!9a@4R#W!<;Y=(TZ}VO@MPixHh7rZzUzL1G zN58&&=UY@x`96gc+qt9o$?~M3`ED~J8^R0%&`m?Yqm>uv6*ifhq7&H9o`9^FTPTFX z)?+#)x)ykO1M`tXX0*kzRQkhWp0=Y(aCNw}{XHRpmROr#AWOf0b~PLnVZrj?MKHK@ zgl&xBJ$Ys}Vtwp-j1aBEZYv^^QcfKZc|JPt!4_r;5n5* zq#*X7qmlA5q)=aNKjJfZ2=8}bP#WfOf68FbzB7rB;z`|n%`z5WqeC^}VYm8rdce6Y&M#U-F4qxK2Y%*TN zt};Z3dL&N_y8d=|8DS8a1yDvbQ}?R7uuChe5{2QcTg`H3~w`6Nth0Nrt(R z^w{z#e!s%-kWq9+OZZym2o*=U1ckmhWzx)Ryd=<+__4UOeQD~V)kC}gB&hr}=v~nd z!SfjOyh2j-Vv!!B9jsj&KI=*qh1%z|$;GaMs9F~Jx~0!wxkyoXiC;LBABq)VXTWRM zHBmi8yVo$Rxs%}4W?TMJO6GODEf)^fSldPV$YAP_3O^ph6OPmdg&4aD81R>#5TDHk zbK(S@3a$We`mqF$8k0b5y&y=d`MSJHO3+hSOq(gW_1~)!!YIXK#hp;gvv11!y=>-B z7F8aMN-aJZcbq$f9l@Sp?N)_f5b_}n8w#t^s1~iRQz7gDdjHu5PK&ZWZ7ea)LY5({ zg^E);u#4Ka37pQRm|tgFy)jy|L1XYai<$XKR>}CN`avv-t74zB3SqDb%S}d$eMfhT_=LMgQ62_$|KSEuZYctIpSD(kC&Ro@Yk%3UEpOe zb>$|Y_DZ>jl1fd!lG_$UH=_%2rJfih?^B36D2w*PqewQ9VgqRJ2OiOb-Hf4B6YrXQ z_J=FRHBD$rFqD&rU&m_LsS{FNRWFf-5nw zn5=mv58ig$9^7(HthP2pA$H>ND!q(MQ?TRea!4tV&!f-H|FQ=z&+9Qnmxw3b5#bbp!Z<u-j+F|LXRe4(7?}F6M!pN z0;5yAFX|7gu}KV`o#JkP-49!vO`)Wk%0 z=H6BZ$3kMgUgdCk3CxAg!c&vU7-}?u*-1nZvS=C-{0u!BI8V!Nb0UI1lKyQMX=&y*8JxHc`V@@W^(-LU}=}u@r8O9Qd-HU4?l*I`Oo{tGMak4rWat&m2%&mTTfkp)X?o?jlOOZpzwyJpwY5gn&)nH}h<=1Yv!l5(Z&rduq4=10Q zb9vdr`Sp%<TA43yD!~LKQBMn9!rfQDWRJs>|SMP85*@^#tHVRex|5> zsI4P@mQqv8LrOxJU$~*4Jn;^YnJ-&(p4KC?iV!^safz9h$#xPt>L(;UBPg>;w2lga z$q-m6cE9}*&sMAG;z2kLQH>#^x+yJ|%w`*Fh&j1Hgtuy1@gZ%Nw+JWgs3N6os$Jx5 z3*CYs$H~^q{K<$5k6U)}s=z6z9>Cb-_Qn;xJJS0Z0Ca<-1txj$<2b}47Zec=xlXH~ zdDQcWn=0g;)4EOGGxYPsl+=~mTg<v6byVPSs#mdYOcMZTxOqlpiH^RaF=M5;jIvesFZa<2%R{&yP7 zV+-Ii4LJd73qDFyKNJQY)DN9E+frMaSQ-C3H<725#j$LarLnZ$S18CzY#j3w>PF)M zXXQTw=|S#9T<$@K$D=Xiv7VG1%3|rOcL+yE-itQ|ZL3c#LVt{y#kvO1-q+?BOv~Kv zD}&Q-f==Jy&;56lgtTDx-@9;r34yyi-aZnt%*rT}t}YiDWv=4Mzm3HjcM#Qt=$tca zL^e8Q`qpTAT9YpHJc`ZCO031Rtf*@iFTO11jUw@b%&T$-wi9scEh#5y7haEfKAVYy zd2GoI`9NnRJ*a257*MC!$5bRjHcNUN<37@rCo*{gkD8RWc*2z4b=8-(Hg9MuR&)by z?>s+(_tXE3f3a(H=O9DT`h{MrY&^yc)*!E4V(VDg5|8#n7ke>$Z1t7}(-KyG8r}Sm zndZ{FI01oQZRBLW_OHV*a+898YjIsq)!q1?eo;jc3YLXDLJ46E8r&K<(y?;zR+WVo z2qf$$Tg`7FqD^zbZ#u~KC!Rr)MjYx#jRQ9VHlm2t;MX9kQ{#9$@e2_VJ&dfKFYXR9 zkTC!=*o#{Zf0S9_2kL<^j&3o|o-?Z#L3S=huSsD>Rb^tE;?fHLqlN$C1B7>wc*qSb zR#%cknIZw`RWL#G8imLKIgyS(!|%a&jN99nDhLB=?bRAC-WtztO%LJ-yT|&^zw!uT zj|QQkm@PYEo|eb1>?PRz@}Wg~ws;X-li(Ic&JvXyoXF7@UA0)ErG_S(&>L?#M9g$A z(?+zctdkt0%1lAdr8I`@N-Bl78>`!Ef3Gj0(`L~-ciuNNpDrgN6`Q;FgLJrM6oLez zWp2AO3k920?dd3N;05(`>=XaA463&@tj;{##Qb9Dy>7|mfstcF(@(H(Ylelf_xHYoo=vntD#TibR0Dgnk?W< zLuR7zy83PB(!0%vi^L0F??JRcX(=XnH<{w^E3iB6UTIiCB!p?^f?9^O*K*&STTVz$SC`TGyn5#*Rqz`NQJ4g-RGwCS~Ok;LMQ4)f3mAI%iJ|)E=)8K;5Bm*N!1f+7N zN*4*}6Zm(QMYu_fOeSscWHFO6(hh2fjX%!AjOt-!l$f& zRBbTp{~G-BBXMh%OIokVEG45@L${A;rdCxGHBvHGr4qC7sl&%uGF}jmPr%U zR2jlWGX00>lpmD6b0vB>Zx_(qm)pG6KH$IYrgKfqk%`E>3suLnO-j9(H`#hAZL`%a z|B5S!X7NVF*k0XTG=wzi0Q5ogmNWve`k}Gn9Vs;$8drD7u;>H_H*$-#PRor^l2Au* z1qaB;uNG9n?WZ-8j3C$#{dLD#teq*u7W(@A)`7~T&upwB#cf;mj&$@$&yOUQk&JpA z2vBEiA#}u=H29AfgFiEq0>xQ}!YF)-ON4NT;_rr>>jjWwg)le~nj1$qJ?b+bNJLBd z=3#4p4l$rEq6cwD)iaPNxnBKa{kciMZg_0qrEo9`r)8GZxFS#B(Y@uW@{yj-lBEgq zlqly4+x)cpM>36qs7kXo=c8EZO0=ik0e1b)EQ5wMNneO3uZJ+NWB|q)+XKMG+El#I z3~y_NV}7?LcOB*-X#jnYv|0CU({)?a6olxHgAo)5w09YA0!#Y+a);CcqHYK$x;>I1 ztmwccc?4Q%7dEFacrM*54|MJOZIB=7(cO!rTsJX$8yv9xT=Oy`w(8NwB8V?df7D*N zJvVZXa|7C>oEw71E*@#+z(>O@UbEZw959dY501f=UP3mi4P^wK3QYq}9W#(Ui+HvI0Lr@)-E zl!rl<#4SS5)AB8!Pm z;e4JOOjvN&qEr6S=RlaFF4_p#0c5k8_U|; zR&qjI4WT|^B+K%~#GgMogSilH9DxL$8?Y>Q0dE1xdnSvKtT8J0?{R5umiJ)~ydEM5 z`e&UBox_JND4~Qch9};a(0r$HAS1-T z*XGbCLvP6bZWtKOE|uf$fh8Mg<3V?Y9QWh-nx?-lL{DaB^xd69l8OyTSDr17qcmeY zp|t$R6^4xiOt+VVyDlpv+xO_AHBxiqizdm*NAn(+8vsVM1qxC% zX%=k7MV|Ic8rfr;=Xxn>1@w;}dlp=`{XciF{GbGU2Jb3gE;_!oDX zII3xWf>gh>16(DG9`npPLL85H08tX+ph%1W`$H#`XfX}szlSlcjker})hS4YlpKDC zI=rB!K4+)98zE_u5?fZvE+$I%HVT@!CwV{b3r?{hJIHO5Vu6<66=fML*_tv$(n}f* zy`d3L&_w!e=K&#=>>ycBwSc0$G0EDqX2&}0XvE0PVbE8V^}#>4)MLAZq;-GLVg^|x zrJ3zMk`8`?Cm%E0J%bkiO$piL?G&w7NS!50QXh3WqK2n{Rf6XH;JlZ-vUc_h5xARy z=qc8ER;VDb9MSQnayRB!B552Yc&bNM8Ty+}sTJjV4{Y3L!>~U(=ZusZyP2>zn%`!< zkxK`xNZwyYKJB603jrkBa0tL5X|gJfMX^1@f26U7c*LS>HsK)M6{U+qLHjDZ$g7t+ zBtALRN75L1Q|<*^bY|_jx2l68g4Q{dB`|85>jzcM5kQ@w{2;vR z4FSO6T|FgE{J92}0oYzz-2S^!Ow&7J;j*Mzxn|sf6wc}MZLMH6$ z_@ED{BO3cRxDPEoXJ;QVAfo!TN|ph&8YZFVPgT_g5tJGWGRd6v+Q%MuZHq*l6kIDkNa zVpf`41?bQ$%mY%I(h=O$O}0XsNa@32Y?5)Ya{OlYKoch)C!v|#J74s91RGnRoz4D^ z?$yU>Brm}uxgZUE=(t}8HbCOS?xEB8$dEL0es+dX)8_s6g-h${v2f0BU)F|;)j1w@ z7mmemO0%%P^L8adTryNkx|!y+9TRByqY{Bi#%Iy22To*unyGf-p!R4x*W6L`yTq^%p^#a9gdaRyomUj- zb*%1|+y+8NO0ybv&<<;!2@0=+zBl_#=X+xFf3tRiVs=9x1>5lP+OUcMh7VpzLki*R z(4Sf9mNN`S)9;A8~NHf|lz>Qw}ZZXsOH5rF3klL_Xr)S`ZN zjW9Va6+h#shV{ydL1eB9?bqh|^5PV+4LfUxF9Wi64z5Vxdn!;qeQW)&Q8$l_Tv5Ue z8JS5eP-+vpm9zniUkb|9U9yl(2AWdwc_hHRllIi4XV>I|=0DjPT5H~$J%QS&3+UY; zz9ISHl{Q`CN0ra_AG-smty7meXcGoWV<(0^z(sqY9Z0My7Owq=C)FgsNTF-ON6aAX zE^nQy$*CcdZdgP``bw)T!Q{>wKDDQ+$i8kJt2j*>8Z{|JhJEw>G<`b$8kavV1GMZW zIYQ#KSH3j7^8QARrP(t^KSE>H^P_y^cZdj@q-7kb>P*|85Pd*O)7h`+9?i*dlqRj(|Ar!}r-T`%2#yR$q`?@`mnOwwac89#u~YCr zkPuKu-@Cr96W#83SW9F5@os&D-$Th=z0Gf!H1W<$SEs+=>Yism0}MpKLZp|l==_V$ghT~J@Tj{Bbx z+9ElO{d~;-%#;T22+S-K5MgfFbZl`#B*IRy%@5=}`5F%ZLChO+=B%I^cvtB6l#_F2 zhDfp=83;pCs#g`yO-O`EXA47nQjjQ!u~G44rgwtf*kWF$Ib#GIrigf7hhlqtetue) z@q}tpiSz@Fp~SM@=+VK(IcHj0719*U$W+?Wo+YXYgO_K&x69yv=p_T~+xJtyl1yRo zpKdb`slihuZwt#mUGaotYN$sG9> zgB9@qNa;h#&GW3uJXGcIvE#+k(7x~%e%#QD6VA#Dp5aG1f4x>$od7K@oQN(7Ev)7x z?LJL&p$%Y{=qM?Us(41pzv~G=RBig`00F&U9b3_ID@eLyq zDe4tVLp@uLPQ$aF?&24^3-xD}3uO31|E7JSK<+kgkNy?@C3>FcS5h8{N{(}d8h1E4 z&pJ50hJ(|WBPt>3NHu4GP)dhRQ(D76lq^S;8q{~%Ed3kzyr-E}k{17~3~=QDmtLU} z%5gm7AJr&!y(o}M#1#*9!Hb2Kqj@Dl7b<3f!`Q)cFF@;}!$3-Z^JAq7yAD=5xS3hd zo-R8W`MU_G9kejpK67DXbCM`+$U!sg%z@KHT7m(J{P(LJb3bJr#uDrlQ4eD{Ml$Y# zXFiZ@OvWSK8sts9R!aqx@w%47FDuU7bBW5KI2m%%rG0QOtz^I;V!QxmO(L0CE1ZE} z5Of*I-2OCY6H2lDxU9RKyJAmNPYN|>7;<~;21JbYT6fas0cIYZK@edyMTP8%4-s?j zKFb3|jDMNR-+V|;0CO-2{-T?P26r-)n(#z0HT7d<>{>yc$d5&jg=(yBsuIbAg2-t5 z>HiL+J>aMw;b9f6LMFCI?xKM6XQ>e@+8C?`)L6B_QXzpkJhU#jDlCK*??a}7q<@uQ zK&&PDUl%Y<&tJg97d5sGrp{a&xSO9uq}Z8j+!a{cu7JmhI!{NnnqPXE&++KvX#~$BE3%u+X20%H+Ovg= z`reBwiZJOxgQ?@Aw_(|)VlJ;Cs&oG&!F!f`=+kRHcNRe@#`(jt(zEF7*TI{!;7u4K zi-PsyJ4ftmz;0=0L(ScmCPiD<{*;)lsgCeK^ZO}qAKM_dC#4nNnK4EeQhu2HPT0qa zqGBG^^T;r*a7O$MtnL-~6=VtO0#8^U2eBEI*-Z;+7JxdbT`=p6=&~jLhqeC9IADZr z{tU_fb)r+-aXLB#d869noI&2v=6{%0eikMvQT-82a*Ee$;4cBQoFvHn$?qm(ghA&D}WrDE|*L`N$ser}*FA zZRCD|wb7m`d44B#e>(M-3q>Gl7PYr5UaJC9356t~S;Po%&Ckk5BN`p* zD&{=vAT}(O>poij3(^F_L0E!nP`=T$_<0&HFSTsVuQVO<}X7);j znA0zdF>yG!HEyTr9r1uy!K$Ln{Y)(kbH=Nc5e6}?lt}5q+rp(!_(EIjruo)I z6i#m4mJNQYiU8lW`x_J(N?9N(8C6k~$!--~%LJVoza4zW|>+e(T&3MBfdZTq)} zQz}gI;3fSK(^(_MMdN@Y0gFjKBtW8k=t6m0}qtxqct+lV>tZo#}zVhPgg4a1EQf7YVTHK~RR6OCOHB;8eb z66FM2zP0SFkH0F&`P|N=pJN+9@||1ezNJzc$i|i0eAz(R<-Ut_$MMawf2;!@ z(yvEM72L^47C;hP)`}%qmj|==sP#9HV}qNGzHD+mq|Vfg%b(kg6dC(vXF&&j{Ed-2 z%-wAv+)F?^YH0xQOZ#-imLT!v!s@K?N6cf+xU2d;nLK37P}2yQu@oYa^gY$ZkjTe> z5a=Bxk`lFbybVcT74G?P!mDFRmq_)g`-DQ%XpwT*%$r zVGCO{yOYLg;^8KrNG&xvZX{P;tM}{fDQxEi@2N+ zVhjho1OLqT3rY@Ed0C(Al*L;=RHW(&uu;Kvqk+jk^hc1x;Bbiw~6Krd< zw!3m?lVR^Zi^1ELk@I(9@846oGRqxsfTq)Hy(gI&)CJ5|1Nl0l*pVRFaN)_guzO{4 z;v!62%q5>ouRWLAy1Zl3m;+rvu=Wnl4RBvRold&-gkx?{@2iONz%heN|0W^UZqBb( z-k^LC4s);|q`u?~ueE}x#)$~ms;ECH~uQh#B&llo!VQ*0qX(PN1x>MOk_d@%_pj!R>4kC5tc* z?zKRzBVpoNz|0ANzP98qPjH;tkMCcxOYxeV5G778+}^BvL8qA{y!_31RSws<{^ZNp zfJ+}d>6j&V9r9+bly5Bc>Dz;xU>Yy^!D#$Kp|UuUHyjZP&QKA){zjQKl;3tvdPG_~ zi5cZDk3-P@w0|ax477^DZCtXho+{@2%y4J05mq| z9wGQ)7or`VZ@WOOon-ZX3tGZ3%3j-RLdK6H{Ut>>&EfI=jw=&)@wsYT#_S6l?`LLi@kOsiZI70 z7K)`ey#0V(0X2DucKExzFbKY@bx4`=DZ@}Q^;cZ2815laptaNuEsHxK$vm~w>TBHy zEB`JzlgN-5?i|(WL2|gFg39q2o4DrNsJfe%t##SIyuHzYwu&ew*MxFnvc=EG&Uu!g zNzyy5hMVbGS$+H;yvUAWGTgDoLleupD-(U zxbQPtuAQQ?Qu%$DAMJV!|G2{$%6g3U%nvEN8GKT?NOERM`$|O>;QUOy^~XWRXSAZ@ zP(Cxw(2g=IU7&e)`4CNM;)oo)r@#glRhupjvHvY{8pP5DjXfG9NlQA``Z_GHAj7{; z_urr;aBw#^B^;Oi1=ArT;XxkQ;1QDHq;h07fj^v=!as7cM;vszaO7k-WO5YE0%PBC zBS@qb{R-;bvvq8?KaR5Z(KwWPsEmd8^1Q@rp{ejI@|$7$IZTGyk3UcrpsAm|kwQM; ztIN_;kf+2stu2GTBUg#|Q6#xwk(PzuQFIds?)dnjO2_vVJbEuJ{J{YBa=B{T+c#mD z^e({VrmYF{I`Q&MNiJ7*WkBJz>TG$N6{AYn25f5B%I&n`$pzG8>s7hFFCEnb3$LI7J-bOgV5+dg}LuJ5<*Dtip(>&LQ`N6Wj)KMRjVSa5fjsZjo;l|KQj!1}6 zt#MN-`AyxQeXv|%ej45J zWVNuh;wq&(&T%W&Au+nYNljw>k3fhlV6Ac%e#r{I-c-+=o@R)u02@Pd&>)RCEg@~6 zY!j5jgS04xeqV?BFXRxrXoxHS8@7Y#f5mpN zut3qvnA(}USTGTAva&J%|LK2FI~Z6P8UK&ejv7}}jqI%?*8hC9*#G%y$=j_nO9MwO zvD|~a9UzfdEanA*tnUE;gF->V_iyhLoy~4@&Su&D&2H;%b*5zMXS;dRx`Wz`j7<#g+F$oDtsA_m4O;6Z^65!BH^31Dcz7=X3_ zQ2Ge~@bLrGRa8)d5ee=tPoYECH--Rcz&gdMudi|bn!h`M>R*54k2jWpjn04!ync^B z-JD#V!Mgf$DSy}EybKrs%;3S+g|hnrJZWu_Rb@>9q8m#A1u(CH!hmuBHgi|y5D)}_ zfq=R^0yF_zYZU^P_P_zgS4O}d%UIxR&FM7Z0TA{Nz`z7^cl!AV>bLMCfcL?|xP*Cl za{qt{@Bp|e=0RV#f&Wnh90EB#Hh(1dH|?yx)P-#4*UqtL=QWr!*{Z|;1BZZe3xy0ub z(8tp!*P?^d?Kw>+SaY)G4u^$!&C^hDsdoXtd-$?xy?6eUn}UV=t`wyCkJjzCc(SEcaxA^f-Y_Fb<$g(oMQ zC17S2^zJnln1>!SA9l}U7KjDN4=v^|;>WJH{|qAe?(g`eo*j0;uk5QIfl>%?-X_td z;VTV%DMgw;RNUDv(2y|n0cgv7XrI6fkXHVp)9z0LcH5f&KUqZdyT%^BX0*QX$-zhZ z^d4TYqq7GwsQzBUx~S=1)q9$CJy!e6@^LGwv4-DQ(#i7ECmw6nE};RxPILY^aOvGu zc(}JXcTsvBn;(ZaVG8oo3(&jMBUEHy`-g}-zTT13CBQov$S;5YFVVsG={qSRM93S^ zlzW@IyL+C*@7Kdu#P=W2z5_jT6di#YHa`f7KM>CK9=Y9q7(aakauiP*54|h>PT#*C zKbNTf{e1d}BLmsg;yhb~)a=-*Vu}nLCHgCy(@`84`>H!-dWtBD|78xdQNN{{E|$N; zplV8>>qq5!8hf|#*p}AV!a5>y(mR>@!fq)*&o#Uv?|d1Wp&RW&9kf!7Ol~oUKk=u{ zzW_|A2aH?VxQp}6G@WAqGR+Ue3UGDmL+89uLlBv?I}9KLn6MMWHypC|?k*$!ZW)Vj zv~`$X|M+3zoN)=>tmo^`$_bgFKqi6}|CY!Ez4rv>vIpWN*mVc=V z&#L=jm|Gq&L~Szus)*dbG-`|5s#VQtW^$;|?LCP5yT^=6ZS3icK&ckVRT00m4h3*| zHygacQrmLlmFhHW8a+YyyJuP8lxNrsK6k2%m<5wuzAx*?eBPTVzjK2P>IXMb-5w9f z**Zu^+g_dl>*}^Qj)#D=0-i2$mm2@<=Wb8`oZpdUGQS(3y~Irm1ry z1Xz|wGsW*gKaCc1IcF|YP2F)Sj_)C@VTJs-;_SVOU-gCK17ic7*d30+DNY7JfvZb;X$*EC6nG(yKG50l08U0CJ z%rPl9r5g~@9zS0or@QE|8l0@N#_0Oxl!Sg_#wfz3h=6 z=xF}nuH`2Lg)`tB3XC&Ki1Oi&@@tTf(VZn{qBa4cKzN(z)wW{NP@)a+lzL~iak-o7 zA7lxrRg0|7xkl%wPEHL|?WJ4L6!Losfu;6t$cn${Yo(!C98oVU_+IM_r znPr{!jl$}`U^HthJDBgyl%#%EAFx-`IC{Q^;y`LF+SC*7swiL=c?*0}1G0>o+z#Bq zMmKKW%gWW^Q#+>=(Ii#M^EUiVS&@RWY?0O*m9H71q=d^oW^T7jJpy-@srjb_p$*eF zxPt|-A}&6MPtNOak`mgAs21?wY{QFnR;tH@?q;&v0&mw$$cM`&GL?AUSkrMb8OT`| z&&W`eKI>!wz=1LPPp|d)3EHn`;T>7&P3r_SodyD98Fp)QEL2XuU!cS_2hOz$fPi83 zFKXJQq$}_(Eab~45t|VR)a!Azm1%gX?)k%*JAD7ny9#<_I)|zhA_Uq54J@6`6*QqZ zPPe-d;m{Ls+`iQ1~$_W7CGI=9kv?tquDVFtNgo z^6RS@oafOPYkO$!vb^AlII4)rR$pdv{*?x5H3%yCWdYh$-wo!a6r9;&E6i&>vb=*R zvN`1`zG1hoF9yR(dI!jDC#u+{t&0qHLHzrC(y~?IDTsXppkthOswLh=dCQ?Y0)JqA!dytWMe((G(&75N zim_GEMg5Gdd7fH&V(q9_ri~_SI~=;`W~UZBep09{Zt4E?AO6L3vNVe}N^xF)Inqp$ z9A<)48#Xop0(Tj8_)5Er3tP50(kn4uuP?1!V9h-AQMkTXsJFE=^aV8C)Mt0Z5fR{_ z?NG-3_0fXzpmL01pHJn2k=w!!;W@F-Y27sdsoq?Ji$(f6rebD?*jgypazI6+CuyFu zrabgv<3r6omGnCaQxO0Pt@ep+)!FQXhi;W*if$amW`=8qe%8`|DX zoI;>@ar8H%M-a|BC0D9kiwoa_8$I?*Go}cMUZK;lUV$jKF|~DtX^@lAd+wf?#JW!* zFzvo3=v!zfx!z0(M%qz&gqnx^WwB%E8Wy9I6}fR-;^yaPbD6i{&iop^^9zM8|3}N4 z3MXE=jb2;Kv-`YXtirsGO8&Aa)K)QA9>FME`uj+k%?Z?g(uomMrJoXMESGPLi?)ui$9%|- zSG1DC0X4m#-HVyH9jJQ*EKoLeUnx3$*W=O{YvsdV%0G1xl~F2IK7k)owNpj15wFT2 zS%RRdM2XdK@GdnW1)Wfd@;?7wzC8t zS!Kt*B6)*}Qk*boi@M8+bvDgy)O~&$cIumt=AIcf4^>Gu>}`3329KG#y$1p_HJ zVM^Np7{KqUALpWW_H-AQ707rm*d;wQyxNg0`s%P=`iD1lk}#do7xIo(ShppxHT4V?^y|7yQI|>*2c2~< zaXLp@1`x381d?7)`D!0oR+u1zN)9E6dHVw;?Vru|Aq&a`F{Y!^2NLYI8$I8!Tm z!PDs|4z+$75S^c$TJh%$Tl`UQxgA=W7EtBs+H07d zOex8=U^-g3lknStr)!VB1^>63n)qy68Ek`M+C-<9tbe|dD0wlewR>$9G!c+g;|Xr9 zKHBqgt}nUM2ZDQ^eXwg>Fjk@n5SD1G<+9F?B|9)QxP;;FRr7s`j*YHNl?zzIkBGL0 zh_FkLTS~jv-b-o`iWq!9)Skp>2J42JQ!~3q)&e6p<;mV7#`%6I4TTnDx9QbQljNb7Ce?Scw1*W zd)t#RahG{CX@720^6)}>!&cd+0&j#dLUv>{Rmr%2&Cc(=;2s$Zc8ZV!6jFjTS84*KU^hF8IGnA&!|q~@f-W^X(eeEL*L)A(-oQ$((5c)e1AgD zvfIwKjU=MnwKpLuTcB!|ycpY`>I(OvsqJw&JfVdcqf~I1-Tv%Tn`4PeBwfzpFxZR? z0~4eXrAaV95M5(L7ZdnsoT$1@gQYL!sj5e5dSWW^8i1Dj! zThB%}H<9f?ZV<^=jkG5{Jg%d>a!mWE)M_IyX4(y%}aolzfOz-GIWDrk=p8jgw z_b4(dKGQrxG;YgyF~M&STi@<=95i4!+bva9r8KTpKtw&RJ|i`jM+!B3vdwtoAo7bL z)~A1{WJdkLAL@dQ)^niBHlds!PAG%ojTm$zs3kXe7+;L|i$$+;R*2)&Zczu0(i0 zG~w{Qu29Bvlb8he_HV~GPb;164J8PW14wu=4yWu}$u)B;iya<$)5K`;a=Yan(9N`K zJ9WQ5b?VvNvqMNG?MD!_VQ&|+$-fd^qbItg=;aW2148ewGi5Kh`h5{l{GRB=G-IBH z;%171S7}&kK*HdL>JEg-hKG$AN*zSa>2J~R={mlK!*Y70reOvF1uT4nxz~uhmJ0q0 zw-dOQL{fcz-tqex#y7#9Tkd?>ux|YjA^r0Hb8yRI+cTvwuhut*7sPC>l)c96fUJ8qL4rJ*-n@Fu%pWW$!T@!9>QdU?1Mp)PYP698sp zbLCK>5((W7=8bNOx*YUcJ2dZw#TsoZdq*nos;d|`1dPkAcZ<45^*yHj<^f7atvS{4 z3h{m8VMVmbwBLLNUkh=XEM+~mwo|c6dJtHC3RuYAWV|Qgr`wgnHhgLOKNwwD zg#U6b1%}3DI;}Dk+^u+I?tN4;4fckyN?a`SLK}@7_plG5jo>^7@A|!_yzaAef1<~& zMh3(M#z8j(VphjNMa#@$-wM)u3dfzJD)j4P@-A#f#1+{;#1S|wL zN8p@bl_l`m#g*CNbaqF)Uu^~*F=_>{C!QdOon~SMu~{(jy;}=rt;UyR1!+A z1hhlT+-RO+ObfN-`37l@%Wj$(_q$7c?V8c8-%sGqgP>M$GV;E;4_^jxq|NHbxJeAl z?bz&O^&rFpmoUA0>&UAB4GZ19BYl~6P0w5VZoiC}1s6(E#_mHh;9)ImEm&Q?cAnjb zV3v6f!g?CFsO)eDS!YE8p&LohbkCD7Y_PqX|@4&6qcLR#Bm2QCr1R9V zYKluFqSpA_p-=wSUu6@;3S|FGbtBYwh_FdaWbrWX;m%Tg_^pfT@Fik|zU&y2#>bBV zfteE-3jC;;5(%r>{g!vV6tZq~9P4?O>ywFeY4saEs?Ra77c9}iR$jLUTkd|EPkZiN^bKT_ z*;#iH`$di*Q9pQOMv~FCK&=@lwaAbvm|>>2!HosnzMbNe?bQ>P$^KZJKt{S&rPRKGtcc)SdJ>&QbI}}_AeEFi=N+-98 z`rN~W;%mGq+9TPbRrHN0iLmh=R>7n{K7-gS(!=#CsC-(xfn_p~rANr%MVoK7JliH8 zGeSopi2dTdY|OKS%B9is%AVAuE#3cosE`8u{d1SU`X)J^3AOf2_&@$2vEN)Jm(J0( z3+CA3>F^^8wYe8R9`Z8)X!<%afw$OYjCu@vR@N@dJO_QK;J}RT{76VIb?rIiW6G%IzdTa}-Z0`xEK` z=8?fgO^BkWxLdBIr9?J^B`tA_ac4-tC|04f%EptX>Xx>sdqn#uWpi9q36;ss-M7?< zdX#+G6NK&2L~iMRXBjQm*nX6Ou37$-c=2jHx4t^Xm|+N`?JZ#?YS!bp9+2Pf*s1lr z=VlUg>xCsWv55T)k-KyZbovJ~9No!UX?wGX478*t{dtq&HrHb}Zr3&%nL2;8Z) z|2m_g4hF?b;f)mmJ+tgC*Y1ZOkpbm#pjlc;t+tGLEJ_1RlFfU3bDFnjv)kvI$(D|=f!zkKADzdtKMqg@IT5E7d;!FIG60fv=&&TdD+ z?+CiA(oDmHbRy*T;G~{cK-G3DwDrR_WS#U z2Ka)pN{JBYRw|&dqBIM29~dQ`XY<`ITQiAY$TH6NmSGIPx)uPYLgrg{Vvsk7_JaU$ zDa?rAnn46T1f}h}NpQ|8AG?zet(REF=i5!X$|K^MI8|K!cl#U7i7{f2I1%F8W6gnC zwCz8IHN*I7G{DdBpv$!4pfMam{aw$AKjIe6F11K(wwau$9e>UFSfPo$fd$H6;p$%>0A{YAkV*J?0(kl}$gw4_u;MO5DZgekS zz?A6siEE*neAH;*hHH3hRJpGO;;1bS(J`&Z?~FrD1&>~xNQln-=^NtmzdlD=)29tbL#7VV6cUrk=uLt$7M#-7#U&Mc@^4XV>jqBn{Q$-_DPK6 zwAl4a2D`AKb8kYG?3ZI7=+cbztwrOa(ugwIvZQ#Q_>=C5)0?kZ`P?Hg*h_Qcm;|E> zz0m;zIc1|yg+iAU;~&rH2=vSVKL4a-7&qWkj-Lr*W)_uwv!bE$`LlkvX&%hCHo&Ab8C&y;gGO)1Y~qM2 zp4DAuZcYKBt1MS#tuu}i_47@n4v~UzkCugzK}uZ57c@J-C)n+uO-V8Sh5|CFdpN!| z?eWM*xFetW4)v%2t;`eOQ^Q$L;pbvIm)K?3@3(p|4VA$DJkzL99Q9kIlfMcay3$zO z!5O6}gZS9D^94zSgERgxPe2f;0X%+ zIT0UG%E{MwpR>K8)rvAOxbqsGy2beK%7APrB-S#|4d1HBR}9H#D2%3IqN4Zpmnhw| zFDWd=3N>Th4h`^T4FNx&icYm`-s*@%^S4L~e$EPz145i0(Wi~$Bk3XmYnL=;R)eO# zyBpR9XH?y#Stq&_(Cj`&7y$3{_-cXD6*r0YCJFw2P|3Zlma*d_t~%P^0f{4_jtLU} z3^rs+J>gb`#WzOr87Qoxi7Zz)xa`nzu1LKwK6fM&B6L4l+TEu0rF1P0ep>EZIN;*~ ztodw$?YIdzdA^@pIT0wa$~7+y+TWkEcA#o#pLk{RhHMsLO~a$ z{+Ds1`SNH+J zLXx8yELJLmxiWCOAX$d34%&%%MPo(ez{7L3TCVvtN)xmuYr-l@CyT72??jPR1H)?d zoW&we?bt@>wlB~m>IZsZAra@&4rXdupaGL-TWsTWryb9xXV6jjf~bzx5fC6E&nn%b zJZlIHImlc$EXJ(%cW4u5k^$WJG)RmdIGsN}p(!D?+p7w}D-So$pT()LHcKpzPfTy|r9+mRAkKkM&m$@cpgDN9 zGroo}Me5$O&Ae7bN0e1;*V9c@Xb8M)jM(5~=xHsKdoK9KDIbjpO1=;pB{QowS_BOD zWQM1B{N%>wtdYZhmP;XrU=gH+>-1=^EN(mthUAmhDlOXOw9&v2dPin6Ud1uYjaG8J zuc4KpBJIj-&j|Tex90=S)-mbs7X89URw3K*=0kQfs<-d`kzB`tG~I5joUc4z8Lk6nw*t9QzG%v^ng5oM4rqa%+$7@Y(Vm5CuTQnz>EnL3IpL*N<%<}r(t$9`G`D^p@)bZ@g% z$UTOqw%!TEjT}^>x+S?@ClSci3(j^QCkb;G9eyOY!VFQAJOav9a-tSYoT^4aL}Wn) z*XMomF#2Q;dPEnST_uM5^LI~???~oPse{414_ax;wkeLW&bsY??E;xC(F8sSfMnNA zc!>Xl|#xReA|EO5dC6=GGbfZkycD#+UOti-h-%y1RGZM2NHKt@6!+|AH^^og) zh3eE{)@6ZiltZ9zJ%bet*{-;;7p#w95b*-~mW3am0C2?l)XJG9pT$ZL3#==j;LeO` zHa^#3U`a#>xZd0#FxOB0>fP=oqyrD0AE2)L2Na(>n?AD*3lWYOeJHt~IXt_PxT!gtQVzWQsh5h$z3XHR4uE6BW9de*_{wupu%G`3 zlP*BM%Cg&#%&=OoS@lV}vUW?ixJ+_9@@x1N`VVQ*i3-SvA~N9)c1_O80!=#&bYBWrlsRoiIxusZ0@(9$+IDk80%<|?=qSu%{&=;ns*>MO@y@=C}&)!r&^^x#| z@;FL5oT%_Ibd`+QVihZ+eNiO+TQx0 zrIIqc--D``%kF*GDUBfD3^iOdYnnmX+;VIZ#f~YDOd>93yLhbP5*G|nLhEgc0-SI8 z$1lI5eJ}l*y$`Cy1t&aT!ez%^RYv6Sxq+#9aZxi|6FGgeG3QGdfA)f(rqK8nV|M{b%))vwh4m!PV$`;;>?F*PCu=v$*xK zSl8j97PCS`9c-y_VJ)+6MCUoSQ3#O*$LKU)yxmQe2M*QtgDmax72rE2;(*F8ZCn#! z6RkU3d59uw)7Yi)h!S&7{b)h zLGJ?@iEO?j3fL(=@&(NYG}tLSGwz>12H&)M)aoZC`6h@^Mv0DhOqb*wHm8fj&`&BsrUAFhz?COjQ zn@}}M>VRb+9A<`${T=ZGeH()W;+hFIFyqH3QWnC57!{C3b_y|^HG-9xAbfpO&~^_> zrXkt-VB4Lbjmjj3HebG__r<6(gSX?c7Lm=>P_$8r@p%m|$Ss+HTc#H*^>}g>Z|{un z?G*gGp}De7dcZOf+2wdVmb-~1!l}P_P?#WRe^ojARYERjzs%)i`e|=>G?QUu2>why zEG;LSEs6BC@4Z-4=#hTrc;J93!Gr5drhSN*W&OM+ZgPB{#s#PSWWdYy&vs`~@s*fu zGw$1+^aaPWTO7izUn+}MrBEaYBvs~*;si#!^ z(2}2pa%%Q+pvOG&JUBlNRc}y~VP$}99PxOXuiXQ^x03QsnCXh~sHVR+Oma$8F^^tRCa>~)%DcbHG?;QsjSCjRUqtr`6Ulu#57fP-q_0TSD4D^VL`6W;X>o3_1n`E? zn??9{I##-AzS$ziDl?{Dp2uOi)m5@(PL2uuJZwKVwYIp~M}3ysKgd3xyph5)Yi;-3 zPNi>FOol_8nuQZh>@74Qsu_W*xB9c~30xjhr%++g<6lrqzr3LT6_I55-w{dn{}+n< zFCxjo`M`rdW_DyOIM{0&EK$`87of#XzI}Ek}OG^p#{BrEEdBKS#cnY97U`?PR{}Uht1R!pH zetsfWfra_;O>kqAYl!^Cg}Hxb#>O9|$Fpeu8L#~D>~d=HDWLu**Mp$ur)S20ob9~| z-}Jb9AVGj_R|Nb?#}J_6l~op#)Dpnw#w*N$jROz_(prg@wx+KHPJl?`Ip_LO#sAbf zI|HwMcLSw!bE*6PB%e$?jF8^IFo3sl0Z$9s*$U7*XqmQ=YzSyl{XJi&uW>vPsj*Y|Lp{dA7p4{?m zSIKPu47q}L_y4CiYt2E6J-P9d{DAc;^bp>b7DT84V$V<8%u_cN@CP4T9-mqIqaJ?N!P+-X(wN6+G~Z>ib3W__aIusTBRaM*h{iee6}7Y};Hf zPv7We?b~&NxMMSy#s#u#gvbYbW46AM)&cT^Kp6Y_bzp6V{O??HGrt{LkZ*1)zvJ(< zce{i`xK%qShNh>c`#+m-jw!$%z_d#OwkIn+=V_XntiRBskqbJyTaaUqGe^x-G4fZ~q~2IorN|`3-)F41Z5G*O#WjkH8u9jSP&8 zAiKJM@4uW(p6FQ?5Kdyz{65aQv&w^pwJyKY_WxMl+#EcVyy-3ORX_Mu{dRx}MY zX@r!W)q;WB49aP9ZNjDOOX4y7?;_NAN9(avcSUa!R*i^IoQHAg?=E5%vzq(hv0Yz3 zBe}pI+R4?C7*%J}-IcaJ2`1zH_m(NM%a#G3l(RZ;@XuWmFjV&7;Vh6`Z|}^#AizJp zx?~SJ+aNKTjuOhlW*&f(;K%#9KK|@Es#yJiJnr>h#vVl+M5X*($zom!B%DxaTr<1O zA^}!4o!=d%UFSPur%#)HCo~n)kr4%PUXuGS(P@-KFs<->9YTASY29N+M6vYBk9*_@8j%GNJ+`1TKRvJ}Inru^0Gy+QNr60i0zhi>+@c8rLuf99}iPII@|`Hz9872IXvI^`{;^MbR(d?K@m z(V=4^UsJ1yAeSfKt#>7D(E8E&L&p^38SO)uUd#64PTn2_l88NP(T6~pZE)p(<(!<>-c0!<`t z{g3#wtBUi$ryl2Y;}{~ON8T-}p(nLh!QJ1UtbbluKQ$ZNWR6_18o$2#5_0TZ30Ufx zyT>|7tZb^{)jaeQ=-X9@^7gi2nNrwJ@nR!wHhQ{hr0e@4s&T?)(kXKZ{DXgHL3*ZH zzmO*A2exxi;MvTo|cxf{x z4?edeKI0W%3_YOg2FD7}ICoZDYL&ik1H@Tz$~6CgNz_Yr-JtKcf1F_)s%e3y-TE!z zdh>b*KE04=GEyd+s8GUnMkwDci&Dc!yEc>#N-N<&+-!YQ#3P?^h&_v6vv8lml>1&g zy zJUyHpb0F>?1md9-RpE0!Y%h;6Gs){={#j+|ow0e1I@!D08$_0-c!YSGUVNd8w3-+FgGyP>eA_ttBk~CsC=_TsBy^}pM1a9Rw#yN z4dW~iD3~B1dFjr|N!%8r%c`mzsbGeZ=y!3%7KzFfa(9tXLe5d=wK&%d@st zPJi4j0M;Dh+1wyM`XRqbpi-Ou9-6xp(@*WZrjEoDA}Ep@=6 z-`Iuz;Qe&%T*#_^;e2ab+@ZJw&Sf9AV`^@&(()VZl1Vk%6IuLV; zfn7erb4s0DkpL;o+h#EQSGHxml(?RBzi4_bbLNP^CoMJISl9kg2ldrn#GoLA!;%Wz z9N90Z{GQTPOv~21=9NxFLUYiEA%o8brFFi7c?!Gy!`-4e zkMf30y~!0>o67~Am=~y$sw*aqKBCAMP?X_iQypPzkkfP6G$f3rW{KnTf^08lUKZvK z?BMjgnYHwRjl0Psa^uQTI{n-B@AzaI;}r0=yy_Ie#Q(hvTVpqnlq_M@vtJp?&`x{{ zE#NRm3O4huT)WeKke|gL`=VweLBeY{vVX&S7oiNR;(@-BGW&^=?Bgq)F1)=yCN)HLNF-E{Y|6 zP+*qsOh|lkrt~k^t4TVZgKOVQvC#}mToj?QwLjBXLHAY_KO%F57UGn?5M{7-&b6&J zs0y^LYOZPX*p02@TfTdV*;Da!ZigOSpD$l(7f^ubbZ@4qiJep@xjb!y+pHI`c-kYJ zLDj!doXFrkg&s=7cTu3nd(+P0HCJ|8>i03Bn95uTPR{r%{AXEk9W?>zLASYx7vY(! zh&lB$pFjtr_65ctI}bwy3Xk8;whTVl33{mLmL-7kdxBy@LAejf?jB{$GEx4Lh9>G% zr)NCw*v2znx9%Szbj=8i`3xZ(3gB_V5 ziI5uId-C9gpqQ~y1AdZRoC)n`T6-PdZIlIzNuf?)LZeiNcC^E6g1hblS->2OlfHfM zn(B=^iLKe8T_CvykI^%|WaC17C{X}xR69>)Jtm8aueQh>5gr=qpuB$kBg8?Ozqf8l>yhD?4H`Y0cNnt9q=UfAA7&<2TE1%xrkYYC68L_8OcodQt%Y)o5Ukk zt@8q@b<-N$?5Oq|=3&An@pLj3k?F-mb2>vgh>fZU|1*&TFTPT=U={ym_rJ~gtPzVo z{z8(tW*ZGRCwJA2pHjUb98JYp&(+$^pck5$vy1o66!tx zQ|ytWtP#-f>n_K@$hRxicJ9e(j~V~G%Jg9lZ&>G>A2d9Up%9(93{i!{VCK@+^5pl_ zh%hlDO5z~-QFPv%Ego(*tEXLoJ`X+Hc4TaLud6D=_x{(K&EFxTokbH9SuMCde6HNb z*SR89^3L$%zTqw2MX7EESud)=#ci5nw{Wqr#-I<0!Fmy6s5mav4XG(t<{(;Z05{{D z%1Domxwr#zK@1B)RyyyabDvLTqO=8BLQx7;2f7oyS0*7+?9$QwnV&k!bUw%KDw*KA zJyt7obD&?@Q%$c?m021}T_c8Z*Vz4)kF4r1_Hz;c#K&SR!B11mScIaYY5!9?IvoPLXEqzaFn`6ykHz2in{DX>i6pQk9KxU zXJ%YP>{DZ}y?1gvpUgWi(XxeqXEo0K(##Cehf%9m&MISarh-wQ2TbF$ZKsX_o*Mll z#mSDgoBGF>YMBm1HQ~Jho%2NdSJG`8PwP@p1zHB?3O$#DMY`E*gQJeNF@YX}2y_7~ z{6=CK)LT7*CsIl6x6}9umdPhYY<-+tI|S3C&+>!irnbPWv(5?>dK^kVrax^7zrzGZ zzGfqEaZIcq+evm(k%_P)tLkkKz9Y1oYhb(s8kjV-D|yoRo^OkeUHo;-%GCri`CDKJ z6^)0}I_l&60TO;Py~tQzNI#O3UVd3?v(+6dE3fKzlu{h3B#WYQudk_@&V$)|i-*JH z1x}eDo3fQQnUz`GF-Yz$7-Xts-IX-ojiBp+%^uRSs?(Y|B!6!dyaa?k?E3@Z!6>;@ z(cx9|-I!f@riqC8fUjuoPYb~C$WwuK`lO#le&GgT2V})3QIYme*o=~tXw^l*ID%(g zV#jEKo!^c9zTi%lIQJAOZ^TqzQ1UP7Dd<9ZMXA#IN#a{^M{6ERYug@Vhn=Z0+}b9B z9<0+98Qh^iL~Bw>vb&Wv#ACAo^Y{@5q!Bnqy%NM}E( zDeZK)nCU6+g{LXkb<4wOb1zeiRRxb%c~jkpVsv;f0gh%Y;s}1z!HL%~0rfS}Gp4sY zYi%aUTLSx}Qvmt%e|rJ7h0>m!^T3s2QFb)mPf{{UTlxOVerMfSEwobCSA*Kxd@~FZ zc7@S}VvKUq+7J2Ml-SyE;H6C$_2H;p*R}e#iPCR(s-DnnM`)OI!I0t#ghj9#-Or!n z?v240aY}hz|4PgGkw2AFJ0J@(X=eq0m1jinED8{MR2j*8d5s?N4Js0$uHQCBGvtT9 zdHDi^oHP;`Ti@f_Dex>4WHwhR!Nh)^N2S7f~>;E zS;98PSRL3i{I&#k#HuUiy3Px9el2u+!Ljc2EQrxY*8JHMW#gOEyLb|`p=CijAl>z+Ntfugbzq0}Z!k4PD&2HouS;vy+b%JaS*&Rry9JYL(@`-e>4HWKuux(3}f z?|_H{VLqSk;V4mZ6}yY#&duu@TB%5*1f}2(%ilE{Aqy!oPYi1cko_ZFsUBVWb3sRQ zjUhkwY4j|!wx8+dfT&O>jb!of^pb zM#FUaN$H9g^Yc1>%Ypn+04(7@GgxtVfYYY3OEsCf*pC9L0v|j0$Yu>(LB`S$MhbTQ zUjzYE{x+` z(2QEOi=|=sX`tX& zMQwld%=e6o2mV+cn;z2fd#fvJ#73ok(2j41A_rczOx6I*)-K_%H_lR$c_)4%Dakth zA&TFhV+?Js=o(QrsF(M6KK-l)(8WY;sX1e>v6UY1;!_k#;*WT)(`jgjvlEQ>neqUx zR|*oq?LJp_YhvzZghCR7ZkINjK|P%G^Tpq+Jh}f+OQ%`aC{)O*u&4JCqkT_+GQ_c5 z7(J~l7gR(MA1+T8@mLBOQCCOPdk1ZkhrVLD<^UM-sG{`Fr^*YD*~dm%glmWAHk$d) zP+fdu*l_0&ycdwb=q7*ot4Q+Bn68Xc<6cy5s0uB9dSsy1ZuGpCxI$7&a;!ikxq-;P z9hroh7YF3dDcvfjV}*{(Puv$)JRuXoZau9R9FdRm#rfBRmF_ND77bED-gVs*X6das})0}j>u`&@YM)G!3|0i7tg$_M-1qMH5fO%3d?Z^!k?Q-cra*( z*x_2p3sLxiOt+|b7)unBViUbErO2}0<+!LK57dkko*ypN7q)w1E6q&fO-zDOASLjN zLCPZ2b0hvf^_ueis}P~g_{h5rB|tG0r1-g54g9ER<% zpb5=M1P{E~$Uq^6(QpxFH1*HTM5$g&F@dAf+zCze`OsrQnJErF5?I2d@F1x)4)<}` zS*pe}8(>e)o5$ng4hu}H^p^>4k)2}HHp9bQDpSbBPtcam>(W(_UAV3c(F*TAr6Q$G zaFyS7%FZA?XjWR3X3e7J!p=)N92C7;v$NJ}eTAPf-34_LK84LM!VSS*RptujW;r(?;T~&oJ>8wW0wJBxYjt8CzUOyYp2Tc zUk&iUJLxNBxin0^kq1+*!ytZkY=7>yxfyu zSRDm!S5H7 z=nL@dLHE1x?&(!!qloNKXY-FTPKZVGlYGI@?=_EVkgIr;b+##*2LrKPb@%s7?g5>2T2ihFt~ZX+=9zPRY- z_Soi#@#rF)3imVCxgF<@o7syn(l-fDzWvyYx@3wQ7Z%5&k;`f0^41KdQA|iWG;Ce4 z9uHzVc$oroy*<=XHhhRlxXC)$s7Bl|z^VFaI#e*$0=FD4SK-wP^BQ7eP_DgT+y3zj ziADe;ZU;!nWe4#b3^tEgt{$3v)0Rj5FMd@b)erta%kz6DB zK;)4o^-G_{leyr##vz)($1izRZAKdd`M++M9d;7v?%I*dIyULWnq4ITzCv7UzrJ9u z9s7ejGn-+N0ip6n##)aG#{F!J30g%;CF(Due?dUGU@;BNP?9bsE$VT40n-09_7y;N z1lzX3;SeAYAUFqiIS2RP?(XjH8VC^F;oy+q5Foe&cXxMpcel@d_up5y{{2<&)lAj& zp5D{lv#Wb*R@bV%Fd1}~OJai^P*J=MIX|Gs6Mbpt;Jlt7It60!8=|N!eD~nu_UZWS zxF9b5bL}r(^lx_i1N@*R!LI`aXp{K@QZPh`xyx~J%d;b}I+?af6SXT20+^!VDCUX; zHH@CJJM!|p9K`)_t@9Dx=y>L=%Rf7n8jH>x+}$ch!4EolxMP&4DO0&ci7d*Ha$M$W zIrG!eJ;I#pTyxftvPXw0N%*Jxq>aX$9-%4JBM`?qeyek@ZqqA4gMZYy84j&*XQ|d& zD)y%F=yh7>d@YsLg}kg?zgO$KD1^1V{fY+q>tgLb>hF!Qc?N;N`!kOD${m)mKv~zs4_T7qeUnrxPcJb1e-h`O0-C;8-^AD-H_s#98O7 zkO*`Rg?)0&AtqvM9fUbLe)hr7wMvIskt5B6aT{W|y!7D4ul?G#Ki-72VvDa&ihBL` z@nAFme2?qQ)_T*$HE^UnTYj1{jqSZZ4WTv`Bi*bJv=-Y(>wz7?8oUP}BGMET;~S&e zMc@msr34SRm?Ka|LF~dDVNw3z_x=vXAYptUy!O3uUf~NE%DV(F5Je?dHTj_AtGgVL zyNi*(%*xWXx!0b*y31?ye(<=WZWe|0+BU5?-#QlNsJHQ*bS?a$8gIX@&Xp>Ep;qFm zr#Nf!JX5h%t)lyl>o{)WZb9B9&HoVcrERPs4d%mv#N-0z)!^=HSeV=ep$liBunLJb zawD<~+re!evl(oZA>}+Pk9^h88KLZLrrGt2kx0sX1_JWkhF&IWQj~|nRe^So zLPoF2=?hg{`LU(K4hOZEZv)}8Rz;KgC2949MT)|b;WN1!l$iG?k|1=!eqsC0RN`;I z&Y|t)ggx%gFYS^RDY=;BIilbGk{Y+Mxe~r8=ti~m+G(e}IsGcpcnb{ej+41pXOB*c z4%YJhZKlV4$yzTvzx`(u9jF#D{|Y_>rLei;9^c>(ll?3-3wJ!c{}HnL(DdsSFqDkU z@ffLjAF>$Y|0`fyDl(^SKp{mh`v*MXCehy>SIg3HQs9YS%UO0@m4_9ejvqB?Z}2_W z@}__~*PvJfYfT~n4!P7i{94hIX?Wi@B~BWg>B=Ux{Y8|Iznf~hX0jCA+-q^6#oFf+ z37a$8WbsL?$>St8`s29jfDxwbKUWvx?67VXxXrX3j9 z9NCH+p(fbhsFZ3x!JO_yJABqFkh_U*$PO7#D!!MM1eFy;%gA}3{V?;RbZHzjU=CF< z(-*8{>lSRrG-}Io*Ar^+74YyVJ|h!M`{e}581!21k9N)LY3i&pqbp|pOVFnA!{gk* zfxdeAGro{$qGfQ}7wA5Ni^BH=ct0ah?N^&@`JODJWf(x2yAJR&64eP7iis(tI{TUA zt7BRf!<7}&c=?;Nl~Ft!NEew+P(^6XN(>;n!l?G7+J(#qk<1X|Z$>bPnYI=b-;b@Z zNQt5f3t{yv`y6A=Q2_qROl}(S1J}Z{B;{eDJ)A==3Z0HeoKfO*@DrDd0~%BHu0}P=^{Sipu@mJ&q|Z{(^?o7J(=JMZ(v7QK&sd3?}R;|&lYL{55&VDd(&O}$34Xi|?B#5*d zPP$EuuVEa>zpK&^>u9|P_XnH<_&U_4~NMxn;?c^;PDrPh4v|Ez3|H*PcG~_FekceGMk%D;c-wep7dojJ)Yv^ z^#&p28+QCrKnA{wUOV9E*zn8eWiodCN5^wwBdA{?VebXTckVJ zwZkW%`59m8jMSMBk}d+ar4P$!kjR7n9W?>4MTV#rP_W`2YoGT;5cW}=vgLo8yyf~7 zWDTSFH?(N=vq$-I{s}~g;r1J|qbbpNrE7hV=y>gUU{b#`+T8qEP4f2npIP6~_@BQ_ zY)6DLw!&(08B#}^@fN!{FAc0nebuQSC_y-t>e`;$bGIdEu11_G z+!~$mAtKtwkUs2@PjX?XC5ZbP&!ADu53^`%8$&v&^A*qA(PbLxc12v0+ro z#}V?i7k*9;Q_uZ~?-VDIS1){xJ~4kqxqGCeuUI<$T0i?`=ytj5NaSYX{5}1d zF}vbt&Xh*SoxP0ZjP|#FHC=fiy2|J?X%+-Tn&*Lp;X&?x+pobBbyVY)#ExV|EcY#d zc*8iEA$ddecE2Nk)4P6H_tx3z$!r4yW>oPbUx;nmq^G9d){@Ka(WN@5Ct-6w&8LUm zJ6-N*NYBkVlPzcr`{hXpYq~K}6ahL6!@^|hw)-2aDN4PZe|-m%g~!`{d9Hd&Ufsw@ z`fBvCoT=EM=lAdf4iW#jh`ovgNF#fCEt~rP3!D?g_h3sXMg5coz zK>1KyQzha;CSko@?AkFfFX*VWvpn1z-XVgk1;4Z?FkEg>6B~%&RR2sPG#EtE$2sw# z-W_Tr^%i$!hShlA3i|Jv28n9#@wGan1+`TFRv}`!eolo#TVXL0!>xm$^a6Qqv8Kwm zS!AgrD1MDYetwO(J-rvPQLL9aGh4`!_`enu0Q=|XC$ozsN^Extgz^Ud@gglPn$hw0JU<3tg8_mqm{$y zEPAzU7#cTx0|D7($0M@)o5J*_92fj>gmYWxnIKg@@@^Q6%QBooeqBB%9Di@+#^1!# zw{*D!-qS>Q3USl7Ju5qxAhEJH8f{#xj^_;I{Th}Q3XQR@ZX76@z}SJd355>idtqLm z3Z^#9CvJs$ns`OI)fgRqT84c6Q>lF!Ry;SMg=5l@T7r`o?I?%BWd4U<_oBRoL_n5l z+Bo-QV>bP0*nB>re_bbWz@j9N$#rMM_6}P$;*5BFkBMHAYO;5xozW;DRW`xXzYIqI z(DMaWRydF71Ab0G@BT=%u$Wr-k8({)n_tpL6j-!tXLM0_>qm!357oX(FZ<}r_!hB@ z9oIaSR`cP;Kly5ia~0DpQv-%AMuMmoDRmleP`)bfUsAn6kTIy^n1y@swJesRyK|hVE51_> z@ovBD%1>24(P2=Z`V7lET2$j;mkwQ(l$&Q0hGn1UtN#%unPg&T>0fVf`Y}Z#n`Ys~ zsVW@^TQd(jLnPd{xm7+<^krG11s86(Hn75n3p!W+W;IpMhpRzO`^~0Yy#U3y) zX$>FK9AZ(^;UZRn0o4}0mTcGAO>|l!;uiJ^X$r}%8J6B z@!@He>*J}u16zqs(pR(ZoyMmqRQx1ZG+u34Q8_&?&)sT(bkd+bgricKA zAKGcURDI+mh%0Z?^d#u$LFz0v&?h3NS;kKCti(d71I%CMr+KJ0us-gz$aIyXTw9X1 zd|m9&kb#L1yu!2+7muJnKOQ5E^t;WnlGvoK?4?QI=%Oq9mWR}V@uQdNAe(89ycB&I zNG$6b=FNsDX}}yX3=e2kTLy6}osqFIe_er>$ZZdVkj~jYy4J+7L;0vt`k?i}`$)%x z+4x=zSgVKlpmVe92|b|^<6Ji&;(mbHO5o0Dp2XZ{W#bsw6ZN`@8bZZcSUb=Q9bgJuuZ4nGD8=xA;_c|I=OOBEgZlPfjeH5igQg>27S>3)>Y=TCIN z`A51isXM*P_b$sVy~Syl`3`Q9 zX=>@2r_hUgUdGoyFxx759;U}SX)_{;Y23?u)DxFAkU{0Uk(p>R`=aZW<$Xf^w(3GMmcOk;(7Ey)okD8->ygL zAbE0$MCyHfjPBiL?V^f%X&c#Zg_(q90Ny6rqO?@2-=E`37|Ldf<44}e<2H>6?v+mD z=6`t8Z$4@s?L@D4%O}jS6dk7KBX)lEX}$6$WI?HVUU*N1(ULYSwlL(|J0=UE^wJeU zo9F^CBnr`OUTG8ze9jOutM>Kq&*N4>HDjiZ0|{OgojeX`OhhsAaM*jv12uww3)gid<8rU|PlGQXrR7aiC*$7peev31 zBvb`YyAclbdq?>|Rxc-f9s^aNj3S^QuvQl=j1u)40LCnkm zCNWDVXBQwRC+EKis6ZBWR_6brnF9Y&YvW?-1Y{DkF?2B%F*UX~F$M7R1Dsu)Obu-T z9*aBL*3L_H7%!*#{xOO?l%X8V2?sKp-Ja8qN<6MpUcBy@sbQ|h($VCFl726I$N{V( ze58fZh0aT;!WgjF=41R7c?Q|6bg3#b_>>UC?CybH>1=|}KTr7*;!oic*qO88l;zeV z73DTcQ_=0Dzy7GixJz2VFm@d%&GsJ4NE)Wyols4Q_e6_}h6|byt61k9-Pe?|YFE^X zN5H*DV@S~fcx@xXokmiHwi~gI1o{!k;y4)k&&L6<$y!9kJ29bkso_C8Nfmf_iq&l6 ze9=`hcuJGp)RI>k0sEFJ24KYD9jOAT0HmG7bJpJ`w3|>UQq~4;X*63!)gz z;aSZ1^H>(OP_yVAAo18NerEvKgeJu~MK`GezO<1-x~rK6G>AMO#P|X3QEM0mc>v5U zIQ|KS2eyQ~L>As!8XKA(*+@h)z|g1((rb@yG=}e7uCD~cT$}1-& z_!G$t@rw}BZS3~UV8?VkM5)z9`|iyCLi`w~3*8qXvhCpoZL{M0r`zG6RW_{xPv@9CPk&zFPVJi#V(XJ>|f zvZ-3K!jkg10t4E{VCq*ZFcE?OPSw1Jn~gLiegELelPw=@nuk<+>yR?C>}79f|opoRi$7YS)Ll1+}>E!aM%hq z=Na`BsHir9jINfBQO+sW(0Ry)W5+^m;5&$0@Pj8S7Q3ShD-Kh3Bd><1FG<9paTMsp#cSbO=v(1W!UmFa={Haf`Jdy z(kc^at@J=axaI&_*`e7L@*+%Z4Ulfu8G66`^}tu9cm?;J_*x!n;_$DMll=j$8x|_M z)G!>fiYhf+^`8F8ceeT}8>kZKbS3MhvAOO(Us^BS5|X>GNxG8pA-;We^b2nfj#aKU zX?~i|W5J0u#EiafjA--um_`Vpwl#lWquHJeHeed@~Z5 z4TB2=G9`UkcCE$9LQGf@YNzfaW&w^)*D=o*4^R zan$WlTn1Mc?C@_`F;5bVaLq-P9at>t;_(y`JO13}03(uRI<|+SV`({Uqb!O^$B*a8 z&pFnKm2`g{m23Yv!dA`qqkn$>u-<_ef}Oed3in;{Tn@v)A!;QItl3v_^|nQsGn9qI`BOtFnp z`pVnTPh7Wi^D&H(c7AyTnfrK_*les#d_#No2F1S-OR$ ziRP|LYoS*-UgCG0xD;n}EbJJ!dVHif>e$t}_fAeyTu!E3ubK%Hk|uXG`*f%@EyXFu zbFH{jJ~EkaN$O&p+%cVR&-IPH-oMlnyXz6WGD`7sp0)h~>)v_b2#DGawb#MCBvHa9 z8eg=yb7wIrjvDmKy*pGgpA)tw!jnUO)Z8)gu5|C)s z->0)m(Ls@zzaXh9-+B0Pmr!;cghad^m#S~g6B@DVwOoz)>rWlsOl@jf{Ed0gCD zJsR;YF7X$w>NBV-NYpVX;!iTM>V;arl(IJX_WsooIN80S(>@U?$gF8_L%SDl?IOPD z^GOyEWO!j&+hV%s_Z!f^fbs3uztVp|e~Y@)Ci3v>UAwGLcwHA}<0)SqNjpLs*n{E6 z`4uC6f47-4Chyr(5~Kd&{2JYc?^}G|bTRXzZSRaqm3Z?WSK!IXQ!VN~_AS|OeebzB zP3{4X_+r9ABF^22*PrC*rXXLktH&xl* ztKK9I(Cz8yP$APV*Ql4vlLv=}jz2{xrx~w2@F80@l`jv{(1q}$r~i#k;$Ky7D9OM}{kL}G~tb2+3XOld6I z?e6C(RX%F(m#3|YdRgL5^?g&mB{dBnqefA!!N@PW)#xjFN2;lI~ z?J-#MH;Y;3FXP!zu9!-EkH~20o^am#8VYw1TG_xi`->!f23h}$3s=%*`Y&~s4hhS5 zp!#|D{_iU0EA6u(WA3-ad>TeaCtX*s7PrKZ)wPAgB}206go%OS+PIh;e}oB(E_M^f zrBC-@`GF|xpg^iN0zSW*9~eR{;U6K~;8R0%U9e3GS)g6DlDMln{8WV?d7X_#WxrUa zHlCc7m=QZk--x8JuSOjPO--U0_$_4*npm{8mJ(o~?>FA0lu(*DZ;;ewDUJc{ z_G&ApxOQ20P8Mnpraq0)p#o4KW<#`6L0mL)2qzn4WOO`@PLKVWR~hN;N(RBj?O`@!4(DUhCwYeI74BQBe@m`<_N(Ug3xhb=Mq0 zP7rMyX{}Wv^Vu@=)9M*ZM0S11Nbk$kyP#TM*)ZWIi!nNHZ+X4BvG1B%SYSP+*2ZHw z+SSwKaThFt`$Q^Ck~i#-$3Pf`)+=kqAy!v6ew4$a>oPl>{TY|r6MtWA)?C-5EMj=* zW9pb?bv=}gZq!Tz6`ssW zrgF1AjpKrWcTyVyZqRQ?hE+!^A!o*fP-f)A_un=0l|etNhD#)G!fq#b)gpvVtD{0C zo9rw)tKm?Wx{Ln z+}4X=%!27i&_2j@rBz^_i&(yd2st8ZdS>Sj6H|#ITHf!)iHFs5BhDj(fu^4>AbkO{ z1)=RuwBpx;+>IW{;!PETW9R`t*P(ol3vYtgOcy8Xw!D4}85!T=)XIz*k*Rq*Aal|f z56D6pw^2A#`sIx@X9}mu?D}>Gk=+@WD%bz`Zgb7DyP!k!4Wsq~jkN;19+5jR?oR&$ zp9tY|1GV=x2eP8aOB0{Yz~0?{tQ$cA{H9__v*>L~rnN%Ly*L4($H@=dayXeAm=$A7 zW#gu?zQ4yro4UR+ud60^@OLCl^*Cou7K^{r_=h?;BS%a<4d|+$zCU%Z)!+>WZ%v@Z zRU0%$t^axTO5zZzT~89~>UMs?Ue^_XCGK#i5U&2z7!@p}?yk*H%ed}3-S}Z%`3QQG zi{80qt{s)UI3nF<1&&(!a6wh9_j)3Tfuh#UQ2J7$65efpXoY|>IEqI)wQOBX`-KEF0xuKfxt)N#Imqe19seY*=ji0uf zch(CSwO06CX$3`sUee^76RNR7p@v@R^=?`>#v#wk{SmYEa{i{CJKJ4yQ1xf)Fu(E7 zd&w&Fw@y8ZR8yI1Ruz*vDJ6mD+Dxcm{8<%Lcz_Z(fKvdjqizF*~l zPwRgIRWO+I-+-#1tBZxb6EzK!ilvK<>HAgL)yT@!*yX(>{0=-_-s@xxRZKO2?v^eV zK#O-+>*Qo=26Qkqwl*|3rD0NVvNv%xHg%$QFfn^~V*oL-GBbiWXqco;J>Bh{Oq{7{ z0RL>s(%w$w9oYh@MYzGtATDN>cNq#WD<_D9ju}M7%uMy}Cu?u=Ke?zl89F$an!Lkg zLmOvP0F#1>s0O2$tBsA3p`G13e5O{huyh8#pZ^>WJy6Zm$@#r&APXai6~x8`W@lpn zGqV3{obUec?Pr;Sy zX@Kq=8me!^7>dl!gP60*AwZ!jP{WB;fK&7b$TkLQAZHPf@4&Ic{~#Vf8S(#{HUGK2 zp`m1I24Ir3Gcol5YBK}DEX=w9CS^;n_gJ#LZ+EBzwLw4@An5(3lD)kP5Deyc50KJ7 zo-nh2xBf8=|6z#$wRuH_Sw%&eIfR6{SUK3i!knxuU_mw^R(2syHW5}^+bRS&)#|WScVAB9ahh=83{0kxUqcdxlmi203A2 zoA(W(P**x()wvzhSFMBh-zpzwu3BG4_FP1|*GO|hBOjX#xW|P!QZN812KHf=gf$(a zw`DA~U0xPd2%-o!-=B_kjTaF!=^LuBHSGdM=<7S7hcIjmxnR{b-Jn7+m$LBdx={E1 z_2!Y9vOYE$qFtMcB4)4EpuJ$h-GRU|TUsJWC+= ze)DA;VsF}z~Vu4tu_7dzq1DxnC8k~Xs*Mlv&PMk=yYqe(eKxYT; z+~-B_EoLMXP8eke?B}G{0v6oFWd6W8rsrYb18E1`-3`FmMhj0xEa<$ekV{p)eZ|4j zu9M*}%9sIH?&2=XX$Oo4V$3>-*S~PNUsP)VNAD(?6{4UbuOfevO1$=jz)?tMd|021 zDK{-shP#6Sr$}Rbn~at%kt6(H2h-tz#sI{iP*_nh(r7Qqh(?l% zq34DwM#rt!LO(0dk~-hOxN8p$k44R14lUgy41IP(`OlT$>|*HT;_?0w1b~>iK 1. -test_var <- array(1:24, dim = c(1, 1, 2, 1, 1, 3, 1, 4, 1, 1)) -names(dim(test_var)) <- c('x', 'y', 'a', 'z', 't', 'b', 'u', 'c', 'v', 'w') -# Storing the data into a NetCDF file -a2nc(list(test_var = test_var), file_path) -# Reading the data back -fff <- nc2a(file_path, list(a = NA, b = NA, c = NA), vars_to_read = 'test_var') -# By default, if no indices are provided for the singleton dimensions, they are -# automatically read in and preserved -dim(fff) -# Reading the data back with expect_all_indices = TRUE -fff <- nc2a(file_path, list(a = NA, b = NA, c = NA), vars_to_read = 'test_var', - expect_all_indices = TRUE) -# If indices for all dimensions are not provided and expect_all_indices = TRUE, -# the function crashes, except if those dimensions are of length 1. In that -# case, the function ignores those (those are dropped) -dim(fff) } \author{ -History:\cr -0.0 - 2017-03 (N. Manubens, \email{nicolau.manubens at bsc.es}) - Original code +N. Manubens, \email{nicolau.manubens at bsc.es} } -\keyword{datagen} + diff --git a/man/Subset.Rd b/man/Subset.Rd deleted file mode 100644 index bfc499a..0000000 --- a/man/Subset.Rd +++ /dev/null @@ -1,48 +0,0 @@ -\name{Subset} -\alias{Subset} -\title{Subset a Data Array} -\description{ -This function allows to subset (i.e. slice, take a chunk of) an array, in a -similar way as done in the function \code{take()} in the package plyr. There -are two main inprovements:\cr\cr -The input array can have dimension names, either -in \code{names(dim(x))} or in the attribute 'dimensions', and the dimensions to -subset along can be specified via the parameter \code{along} either with -integer indices or either by their name.\cr\cr -There are additional ways to adjust which dimensions are dropped in the -resulting array: either to drop all, to drop none, to drop only the ones that -have been sliced or to drop only the ones that have not been sliced.\cr\cr -If an array is provided without dimension names, dimension names taken from -the parameter \code{dim_names} will be added to the array. -} -\usage{ -Subset(x, along, indices, drop = FALSE) -} -\arguments{ - \item{x}{ -A multidimensional array to be sliced. It can have dimension names either -in \code{names(dim(x))} or either in the attribute 'dimensions'. - } - \item{along}{ -Vector with references to the dimensions to take the subset from: either -integers or dimension names. - } - \item{indices}{ -List of indices to take from each dimension specified in 'along'. If a single -dimension is specified in 'along' the indices can be directly provided as a -single integer or as a vector. - } - \item{drop}{ -Whether to drop all the dimensions of length 1 in the resulting array, none, -only those that are specified in 'along', or only those that are not specified -in 'along'. The possible values are, respectively: 'all' or TRUE, 'none' or -FALSE, 'selected', and 'non-selected'. - } -} -\examples{ -# Create an array from R with data for 3 'var', 3 'member' and 3 'time' -a <- array(1:27, dim = c(var = 3, member = 3, time = 3)) -# Take a subset with all 'member' and 'time' for the 1st 'var' -b <- Subset(a, 'var', 1) -} -\keyword{dplot} -- GitLab