DRIMSeq/DESCRIPTION0000644000175200017520000000515014516030602014504 0ustar00biocbuildbiocbuildPackage: DRIMSeq Type: Package Title: Differential transcript usage and tuQTL analyses with Dirichlet-multinomial model in RNA-seq Version: 1.30.0 Date: 2017-05-24 Authors@R: c(person(given = "Malgorzata", family = "Nowicka", role = c("aut", "cre"), email = "gosia.nowicka.uzh@gmail.com")) Description: The package provides two frameworks. One for the differential transcript usage analysis between different conditions and one for the tuQTL analysis. Both are based on modeling the counts of genomic features (i.e., transcripts) with the Dirichlet-multinomial distribution. The package also makes available functions for visualization and exploration of the data and results. biocViews: ImmunoOncology, SNP, AlternativeSplicing, DifferentialSplicing, Genetics, RNASeq, Sequencing, WorkflowStep, MultipleComparison, GeneExpression, DifferentialExpression License: GPL (>= 3) Depends: R (>= 3.4.0) Imports: utils, stats, MASS, GenomicRanges, IRanges, S4Vectors, BiocGenerics, methods, BiocParallel, limma, edgeR, ggplot2, reshape2 Suggests: PasillaTranscriptExpr, GeuvadisTranscriptExpr, grid, BiocStyle, knitr, testthat ByteCompile: false VignetteBuilder: knitr Collate: 'DRIMSeq.R' 'class_show_utils.R' 'class_MatrixList.R' 'class_dmDSdata.R' 'class_dmDSprecision.R' 'class_dmDSfit.R' 'class_dmDStest.R' 'class_dmSQTLdata.R' 'class_dmSQTLprecision.R' 'class_dmSQTLfit.R' 'class_dmSQTLtest.R' 'dmDS_CRadjustment.R' 'dmDS_estimateCommonPrecision.R' 'dmDS_estimateTagwisePrecision.R' 'dmDS_filter.R' 'dmDS_fit.R' 'dmDS_profileLik.R' 'dmSQTL_CRadjustment.R' 'dmSQTL_estimateCommonPrecision.R' 'dmSQTL_estimateTagwisePrecision.R' 'dmSQTL_filter.R' 'dmSQTL_fit.R' 'dmSQTL_permutations.R' 'dmSQTL_profileLik.R' 'dm_CRadjustmentManyGroups.R' 'dm_CRadjustmentOneGroup.R' 'dm_CRadjustmentRegression.R' 'dm_LRT.R' 'dm_core_Hessian.R' 'dm_core_colorb.R' 'dm_core_deviance.R' 'dm_core_lik.R' 'dm_core_score.R' 'dm_estimateMeanExpression.R' 'dm_fitManyGroups.R' 'dm_fitOneGroup.R' 'dm_fitRegression.R' 'dm_plotData.R' 'dm_plotPrecision.R' 'dm_plotProportions.R' 'dm_plotPvalues.R' 'dm_profileLikModeration.R' RoxygenNote: 6.0.1 git_url: https://git.bioconductor.org/packages/DRIMSeq git_branch: RELEASE_3_18 git_last_commit: dca4fea git_last_commit_date: 2023-10-24 Date/Publication: 2023-10-24 NeedsCompilation: no Packaged: 2023-10-24 21:05:06 UTC; biocbuild Author: Malgorzata Nowicka [aut, cre] Maintainer: Malgorzata Nowicka DRIMSeq/NAMESPACE0000644000175200017520000000567114516005636014236 0ustar00biocbuildbiocbuild# Generated by roxygen2: do not edit by hand export("common_precision<-") export("genewise_precision<-") export(common_precision) export(dmDSdata) export(dmFilter) export(dmFit) export(dmPrecision) export(dmSQTLdata) export(dmTest) export(genewise_precision) export(mean_expression) export(plotData) export(plotPValues) export(plotPrecision) export(plotProportions) export(proportions) export(results) export(samples) exportMethods("$") exportMethods("[") exportMethods("[[") exportMethods("colnames<-") exportMethods("common_precision<-") exportMethods("genewise_precision<-") exportMethods("names<-") exportMethods("rownames<-") exportMethods(coefficients) exportMethods(colnames) exportMethods(common_precision) exportMethods(counts) exportMethods(design) exportMethods(dim) exportMethods(dmFilter) exportMethods(dmFit) exportMethods(dmPrecision) exportMethods(dmTest) exportMethods(elementNROWS) exportMethods(genewise_precision) exportMethods(length) exportMethods(mean_expression) exportMethods(names) exportMethods(ncol) exportMethods(nrow) exportMethods(plotData) exportMethods(plotPValues) exportMethods(plotPrecision) exportMethods(plotProportions) exportMethods(proportions) exportMethods(results) exportMethods(rownames) exportMethods(samples) import(BiocGenerics) import(BiocParallel) import(GenomicRanges) import(edgeR) import(methods) importFrom(IRanges,width) importFrom(S4Vectors,elementNROWS) importFrom(S4Vectors,queryHits) importFrom(S4Vectors,subjectHits) importFrom(ggplot2,aes_string) importFrom(ggplot2,coord_cartesian) importFrom(ggplot2,element_blank) importFrom(ggplot2,element_text) importFrom(ggplot2,geom_bar) importFrom(ggplot2,geom_boxplot) importFrom(ggplot2,geom_histogram) importFrom(ggplot2,geom_hline) importFrom(ggplot2,geom_jitter) importFrom(ggplot2,geom_line) importFrom(ggplot2,geom_point) importFrom(ggplot2,geom_ribbon) importFrom(ggplot2,geom_text) importFrom(ggplot2,geom_vline) importFrom(ggplot2,ggplot) importFrom(ggplot2,ggtitle) importFrom(ggplot2,guide_colorbar) importFrom(ggplot2,guide_legend) importFrom(ggplot2,guides) importFrom(ggplot2,position_dodge) importFrom(ggplot2,position_jitterdodge) importFrom(ggplot2,scale_colour_gradient) importFrom(ggplot2,scale_colour_manual) importFrom(ggplot2,scale_fill_manual) importFrom(ggplot2,scale_x_discrete) importFrom(ggplot2,theme) importFrom(ggplot2,theme_bw) importFrom(ggplot2,xlab) importFrom(ggplot2,ylab) importFrom(limma,nonEstimable) importFrom(reshape2,melt) importFrom(stats,aggregate) importFrom(stats,complete.cases) importFrom(stats,constrOptim) importFrom(stats,loess) importFrom(stats,loess.control) importFrom(stats,median) importFrom(stats,model.matrix) importFrom(stats,na.omit) importFrom(stats,nlm) importFrom(stats,nlminb) importFrom(stats,optim) importFrom(stats,optimHess) importFrom(stats,optimize) importFrom(stats,p.adjust) importFrom(stats,pchisq) importFrom(stats,predict) importFrom(stats,quantile) importFrom(stats,runif) importFrom(utils,head) importFrom(utils,tail) DRIMSeq/NEWS0000755000175200017520000000324514516005636013514 0ustar00biocbuildbiocbuildv0.99.0: - Bioconductor submission. v1.1.2: - Bioconductor accepted devel version. v1.1.3: - New features: i) The level of moderation is calculated automatically. ii) Permutation approach to adjust p-values in sQTL analyses. v1.1.4: - Use data frames with counts and genotypes when creating the dmDSdata and dmSQTLdata objects. v1.3.1: - Equals to v1.1.4. v1.3.2: - Implementation of the two-stage test dmTwoStageTest(). v1.3.3: - Implementation of the regression framework and feature-level analysis. Additionally: i) Removing max_features argument from dmFilter. ii) Keeping only the grid approach for estimating tagwise dispersion. iii) Allow to use only a subset of genes (disp_subset parameter) in common dispersion estimation to speed up the calculations; if disp_subset < 1, use set.seed() to make the analysis reproducible. iv) Always use tagwise dispersion for fitting full and null models. v) In one group fitting, return NA for tags having the last feature with zero counts in all samples. We always use the q-th feature as a denominator in logit calculation. In such a case all the logits are anyways Inf. vi) Use plotPValues instead of plotTest vii) Use 'prop' instead of 'pi' and 'disp' instead of 'gamma0'. viii) Use only 'constrOptim' (old 'constrOptimG') to estimate proportions and 'optim' to estimate coefficients in the regression model. ix) Use plotProportions instead of plotFit. x) No 'out_dir' parameter in plotting functions. All plotting functions return a ggplot object. xi) Use term "precision" instead of "dispersion" as in DRIMSeq we directly estimate the precision parameter. Dispersion can be calculated with formula: dispersion = 1 / (1 + precision).DRIMSeq/R/0000755000175200017520000000000014516005636013207 5ustar00biocbuildbiocbuildDRIMSeq/R/DRIMSeq.R0000755000175200017520000001115414516005636014543 0ustar00biocbuildbiocbuild#' @import BiocGenerics #' @import methods #' @import BiocParallel #' @import edgeR #' @import GenomicRanges NULL # ### EXAMPLES ### # # -------------------------------------------------------------------------- # # Create dmDSdata object # # -------------------------------------------------------------------------- # ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package # # library(PasillaTranscriptExpr) # # data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") # # ## Load metadata # pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), # header = TRUE, as.is = TRUE) # # ## Load counts # pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), # header = TRUE, as.is = TRUE) # # ## Create a pasilla_samples data frame # pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, # group = pasilla_metadata$condition) # levels(pasilla_samples$group) # # ## Create a dmDSdata object # d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) # # ## Use a subset of genes, which is defined in the following file # gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) # # d <- d[names(d) %in% gene_id_subset, ] # # # -------------------------------------------------------------------------- # # Differential transcript usage analysis - simple two group comparison # # -------------------------------------------------------------------------- # # ## Filtering # ## Check what is the minimal number of replicates per condition # table(samples(d)$group) # # d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, # min_gene_expr = 10, min_feature_expr = 10) # # plotData(d) # # ## Create the design matrix # design_full <- model.matrix(~ group, data = samples(d)) # # ## To make the analysis reproducible # set.seed(123) # ## Calculate precision # d <- dmPrecision(d, design = design_full) # # plotPrecision(d) # # head(mean_expression(d)) # common_precision(d) # head(genewise_precision(d)) # # ## Fit full model proportions # d <- dmFit(d, design = design_full) # # ## Get fitted proportions # head(proportions(d)) # ## Get the DM regression coefficients (gene-level) # head(coefficients(d)) # ## Get the BB regression coefficients (feature-level) # head(coefficients(d), level = "feature") # # ## Fit null model proportions and perform the LR test to detect DTU # d <- dmTest(d, coef = "groupKD") # # ## Plot the gene-level p-values # plotPValues(d) # # ## Get the gene-level results # head(results(d)) # # ## Plot feature proportions for a top DTU gene # res <- results(d) # res <- res[order(res$pvalue, decreasing = FALSE), ] # # top_gene_id <- res$gene_id[1] # # plotProportions(d, gene_id = top_gene_id, group_variable = "group") # # plotProportions(d, gene_id = top_gene_id, group_variable = "group", # plot_type = "lineplot") # # plotProportions(d, gene_id = top_gene_id, group_variable = "group", # plot_type = "ribbonplot") # # # # # # # # -------------------------------------------------------------------------- # # Create dmSQTLdata object # # -------------------------------------------------------------------------- # # Use subsets of data defined in the GeuvadisTranscriptExpr package # # library(GeuvadisTranscriptExpr) # # geuv_counts <- GeuvadisTranscriptExpr::counts # geuv_genotypes <- GeuvadisTranscriptExpr::genotypes # geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges # geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges # # colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") # colnames(geuv_genotypes)[4] <- "snp_id" # geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) # # d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, # genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, # samples = geuv_samples, window = 5e3) # # # -------------------------------------------------------------------------- # # sQTL analysis - simple group comparison # # -------------------------------------------------------------------------- # # ## Filtering # d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, # minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) # # plotData(d) # # ## To make the analysis reproducible # set.seed(123) # ## Calculate precision # d <- dmPrecision(d) # # plotPrecision(d) # # ## Fit full model proportions # d <- dmFit(d) # # ## Fit null model proportions, perform the LR test to detect tuQTLs # ## and use the permutation approach to adjust the p-values # d <- dmTest(d) # # ## Plot the gene-level p-values # plotPValues(d) # # ## Get the gene-level results # head(results(d)) DRIMSeq/R/class_MatrixList.R0000644000175200017520000002073414516005636016625 0ustar00biocbuildbiocbuild#' @include class_show_utils.R NULL ############################################################################### ### MatrixList class ############################################################################### #' MatrixList object #' #' A MatrixList object is a container for a list of matrices which have the same #' number of columns but can have varying number of rows. Additionally, one can #' store an extra information corresponding to each of the matrices in #' \code{metadata} matrix. #' #' @return #' #' \itemize{ #' \item \code{names(x)}, \code{names(x) <- value}: Get or set names #' of matrices. #' \item \code{rownames(x)}, \code{rownames(x) <- value}, #' \code{colnames(x)}, \code{colnames(x) <- value}: Get or set row names or #' column names of unlistData slot. #' \item \code{length(x)}: Get the number of #' matrices in a list. #' \item \code{elementNROWS(x)}: Get the number of rows of each of #' the matrices. #' \item \code{dim(x)}, \code{nrow(x)}, \code{ncol(x)}: Get the #' dimensions, number of rows or number of columns of unlistData slot. #' \item #' \code{x[[i]]}, \code{x[[i, j]]}: Get the matrix i, and optionally, get only #' columns j of this matrix. #' \item \code{x$name}: Shortcut for #' \code{x[["name"]]}. #' \item \code{x[i, j]}: Get a subset of MatrixList that #' consists of matrices i with columns j. } #' #' @param x MatrixList object. #' @param value,i,j,name Parameters used for subsetting and assigning new #' attributes to x. #' #' @slot unlistData Matrix which is a row binding of all the matrices in a list. #' @slot partitioning List of indexes which defines the row partitioning of #' unlistData matrix into the original matrices. #' #' @slot metadata Matrix of additional information where each row corresponds to #' one of the matrices in a list. #' @author Malgorzata Nowicka setClass("MatrixList", representation(unlistData = "matrix", partitioning = "list", metadata = "matrix")) ################################### setValidity("MatrixList", function(object){ # has to return TRUE when valid object! partitioning_unlist <- unlist(object@partitioning) if(length(partitioning_unlist) == nrow(object@unlistData)) out <- TRUE else return(paste0("Unequal lengths of partitioning indexes and rows in unlistData: ", length(partitioning_unlist), " and ", nrow(object@unlistData))) if(nrow(object@metadata) > 0){ if(nrow(object@metadata) == length(object@partitioning)) out <- TRUE else return(paste0("Unequal lengths of partitioning and metadata: ", length(object@partitioning), " and ", nrow(object@metadata))) } return(out) }) ############################################################################### ### MatrixList ############################################################################### MatrixList <- function(..., metadata){ listData <- list(...) if (length(listData) == 1L && is.list(listData[[1L]])) listData <- listData[[1L]] if (length(listData) == 0L) { return(new("MatrixList")) } else { if (!all(sapply(listData, is, "matrix"))) stop("all elements in '...' must be matrices!") unlistData <- do.call(rbind, listData) w <- sapply(listData, nrow) partitioning <- vector("list", length(w)) inds <- 1:nrow(unlistData) names(inds) <- rownames(unlistData) partitioning[w != 0] <- split(inds, rep(1:length(w), w)) if(!is.null(names(listData))) names(partitioning) <- names(listData) if(!missing(metadata)) return(new("MatrixList", unlistData = unlistData, partitioning = partitioning, metadata = metadata)) else return(new("MatrixList", unlistData = unlistData, partitioning = partitioning)) } } ################################################################################ ### show method ################################################################################ setMethod("show", "MatrixList", function(object){ nhead <- 2 nl <- length(object) cat(mode(object@unlistData),"MatrixList of length", nl,"\n") if(nl > 0){ np <- min(nl, nhead) object_sub <- object[1:np] if(is.null(names(object_sub))) print_names <- paste0("[[", 1:np, "]]\n") else print_names <- paste0("$", names(object_sub), "\n") for(i in 1:np){ # i = 1 cat(print_names[i]) show_matrix(object_sub[[i]]) cat("\n") } if(np < nl){ if(is.null(names(object_sub))) cat(paste0("[[...]]\n")) else cat(paste0("$...\n")) } } if(nrow(object@metadata) != 0){ cat("\nwith metadata slot\n") show_matrix(object@metadata) } }) ############################################################################### ### accessing methods ############################################################################### #' @rdname MatrixList-class #' @export setMethod("names", "MatrixList", function(x){ names(x@partitioning) }) #' @rdname MatrixList-class #' @export setMethod("names<-", "MatrixList", function(x, value){ names(x@partitioning) <- value x }) #' @rdname MatrixList-class #' @export setMethod("rownames", "MatrixList", function(x){ rownames(x@unlistData) }) #' @rdname MatrixList-class #' @export setMethod("rownames<-", "MatrixList", function(x, value){ rownames(x@unlistData) <- value x }) #' @rdname MatrixList-class #' @export setMethod("colnames", "MatrixList", function(x){ colnames(x@unlistData) }) #' @rdname MatrixList-class #' @export setMethod("colnames<-", "MatrixList", function(x, value){ colnames(x@unlistData) <- value x }) #' @rdname MatrixList-class #' @export setMethod("length", "MatrixList", function(x){ length(x@partitioning) }) #' @rdname MatrixList-class #' @export #' @importFrom S4Vectors elementNROWS setMethod("elementNROWS", "MatrixList", function(x){ sapply(x@partitioning, length) }) #' @rdname MatrixList-class #' @export setMethod("dim", "MatrixList", function(x){ dim(x@unlistData) }) #' @rdname MatrixList-class #' @export setMethod("nrow", "MatrixList", function(x){ nrow(x@unlistData) }) #' @rdname MatrixList-class #' @export setMethod("ncol", "MatrixList", function(x){ ncol(x@unlistData) }) ############################################################################### ### subsetting methods ############################################################################### #' @aliases [[,MatrixList-method #' @rdname MatrixList-class #' @export setMethod("[[", signature(x = "MatrixList"), function(x, i, j){ if(!missing(j)) return(x@unlistData[x@partitioning[[i]], j , drop = FALSE]) else return(x@unlistData[x@partitioning[[i]], , drop = FALSE]) }) #' @rdname MatrixList-class #' @export setMethod("$", "MatrixList", function(x, name){ x[[name]] }) ################################ #' @aliases [,MatrixList-method [,MatrixList,ANY-method #' @rdname MatrixList-class #' @export setMethod("[", signature(x = "MatrixList"), function(x, i, j){ if(!missing(i)){ if(!missing(j)){ if(nrow(x@metadata) != 0) return(new("MatrixList", unlistData = x@unlistData[unlist(x@partitioning[i]), j, drop = FALSE], partitioning = relist(1:nrow(x@unlistData), x@partitioning[i]), metadata = x@metadata[i, , drop = FALSE])) else return(new("MatrixList", unlistData = x@unlistData[unlist(x@partitioning[i]), j, drop = FALSE], partitioning = relist(1:nrow(x@unlistData), x@partitioning[i]), metadata = x@metadata)) }else{ if(nrow(x@metadata) != 0) return(new("MatrixList", unlistData = x@unlistData[unlist(x@partitioning[i]), , drop = FALSE], partitioning = relist(1:nrow(x@unlistData), x@partitioning[i]), metadata = x@metadata[i, , drop = FALSE])) else return(new("MatrixList", unlistData = x@unlistData[unlist(x@partitioning[i]), , drop = FALSE], partitioning = relist(1:nrow(x@unlistData), x@partitioning[i]), metadata = x@metadata)) } }else{ if(!missing(j)){ return(new("MatrixList", unlistData = x@unlistData[, j, drop = FALSE], partitioning = x@partitioning, metadata = x@metadata)) }else{ return(x) } } }) DRIMSeq/R/class_dmDSdata.R0000644000175200017520000004355314516005636016212 0ustar00biocbuildbiocbuild#' @include class_MatrixList.R NULL ############################################################################### ### dmDSdata class ############################################################################### #' dmDSdata object #' #' dmDSdata contains expression, in counts, of genomic features such as exons or #' transcripts and sample information needed for the differential #' exon/transcript usage (DEU or DTU) analysis. It can be created with function #' \code{\link{dmDSdata}}. #' #' @return #' #' \itemize{ \item \code{counts(object)}: Get a data frame with counts. \item #' \code{samples(x)}: Get a data frame with the sample information. \item #' \code{names(x)}: Get the gene names. \item \code{length(x)}: Get the number #' of genes. \item \code{x[i, j]}: Get a subset of dmDSdata object that consists #' of counts for genes i and samples j. } #' #' @param object,x dmDSdata object. #' @param i,j Parameters used for subsetting. #' @param ... Other parameters that can be defined by methods using this #' generic. #' #' @slot counts \code{\linkS4class{MatrixList}} of expression, in counts, of #' genomic features. Rows correspond to genomic features, such as exons or #' transcripts. Columns correspond to samples. MatrixList is partitioned in a #' way that each of the matrices in a list contains counts for a single gene. #' @slot samples Data frame with information about samples. It must contain #' \code{sample_id} variable with unique sample names and other covariates #' that desribe samples and are needed for the differential analysis. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmDSprecision}}, \code{\linkS4class{dmDSfit}}, #' \code{\linkS4class{dmDStest}} setClass("dmDSdata", representation(counts = "MatrixList", samples = "data.frame")) ############################### setValidity("dmDSdata", function(object){ # has to return TRUE when valid object! if(!ncol(object@counts) == nrow(object@samples)) return(paste0("Unequal number of samples in 'counts' and 'samples' ", ncol(object@counts), " and ", nrow(object@samples), "!")) if(!all(c("sample_id") %in% colnames(object@samples))) return("'samples' must contain 'sample_id' variable!") if(!length(unique(object@samples$sample_id)) == nrow(object@samples)) return("There must be a unique 'sample_id' for each sample!") if(!all(colnames(object@counts) == object@samples$sample_id)) return("Column names of 'counts' must be the same as 'sample_id' in 'samples'!") return(TRUE) }) ############################################################################### ### show, accessing and subsetting methods ############################################################################### #' @rdname dmDSdata-class #' @export setMethod("counts", "dmDSdata", function(object){ data.frame(gene_id = rep(names(object@counts), elementNROWS(object@counts)), feature_id = rownames(object@counts), object@counts@unlistData, stringsAsFactors = FALSE, row.names = NULL) }) #' @rdname dmDSdata-class #' @export setGeneric("samples", function(x, ...) standardGeneric("samples")) #' @rdname dmDSdata-class #' @export setMethod("samples", "dmDSdata", function(x) x@samples ) ################################ setMethod("show", "dmDSdata", function(object){ cat("An object of class", class(object), "\n") cat("with", length(object), "genes and", ncol(object@counts), "samples\n") cat("* data accessors: counts(), samples()\n") }) ################################ #' @rdname dmDSdata-class #' @export setMethod("names", "dmDSdata", function(x) names(x@counts) ) #' @rdname dmDSdata-class #' @export setMethod("length", "dmDSdata", function(x) length(x@counts) ) #' @aliases [,dmDSdata-method [,dmDSdata,ANY-method #' @rdname dmDSdata-class #' @export setMethod("[", "dmDSdata", function(x, i, j){ if(missing(j)){ counts <- x@counts[i, , drop = FALSE] samples <- x@samples }else{ if(missing(i)){ counts <- x@counts[, j, drop = FALSE] }else{ counts <- x@counts[i, j, drop = FALSE] } samples <- x@samples rownames(samples) <- samples$sample_id samples <- samples[j, , drop = FALSE] # Drop unused levels for factors for(i in 1:ncol(samples)){ if(class(samples[, i]) == "factor") samples[, i] <- factor(samples[, i]) } rownames(samples) <- NULL } return(new("dmDSdata", counts = counts, samples = samples)) }) ############################################################################### ### dmDSdata ############################################################################### #' Create dmDSdata object #' #' Constructor function for a \code{\linkS4class{dmDSdata}} object. #' #' @param counts Data frame with counts. Rows correspond to features, for #' example, transcripts or exons. This data frame has to contain a #' \code{gene_id} column with gene IDs, \code{feature_id} column with feature #' IDs and columns with counts for each sample. Column names corresponding to #' sample IDs must be the same as in the \code{sample} data frame. #' @param samples Data frame where each row corresponds to one sample. Columns #' have to contain unique sample IDs in \code{sample_id} variable and a #' grouping variable \code{group}. #' @return Returns a \linkS4class{dmDSdata} object. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' } #' @seealso \code{\link{plotData}} #' @author Malgorzata Nowicka #' @export dmDSdata <- function(counts, samples){ ### Check on samples stopifnot(class(samples) == "data.frame") stopifnot("sample_id" %in% colnames(samples)) stopifnot(sum(duplicated(samples$sample_id)) == 0) ### Check on counts stopifnot(class(counts) == "data.frame") stopifnot(all(c("gene_id", "feature_id") %in% colnames(counts))) stopifnot(all(samples$sample_id %in% colnames(counts))) stopifnot(sum(duplicated(counts$feature_id)) == 0) gene_id <- counts$gene_id feature_id <- counts$feature_id stopifnot(class(gene_id) %in% c("character", "factor")) stopifnot(class(feature_id) %in% c("character", "factor")) stopifnot(class(samples$sample_id) %in% c("character", "factor")) stopifnot(all(!is.na(gene_id))) stopifnot(all(!is.na(feature_id))) stopifnot(all(!is.na(samples$sample_id))) counts <- counts[, as.character(samples$sample_id), drop = FALSE] counts <- as.matrix(counts) stopifnot(mode(counts) %in% "numeric") if(class(gene_id) == "character") gene_id <- factor(gene_id, levels = unique(gene_id)) else gene_id <- factor(gene_id) for(i in 1:ncol(samples)){ if(class(samples[, i]) == "character") samples[, i] <- factor(samples[, i], levels = unique(samples[, i])) else if(class(samples[, i]) == "factor") samples[, i] <- factor(samples[, i]) } # Ordering or <- order(gene_id) counts <- counts[or, , drop = FALSE] gene_id <- gene_id[or] feature_id <- feature_id[or] rownames(counts) <- feature_id inds <- 1:length(gene_id) names(inds) <- feature_id partitioning <- split(inds, gene_id) data <- new("dmDSdata", counts = new("MatrixList", unlistData = counts, partitioning = partitioning), samples = samples) return(data) } ############################################################################### ### dmFilter ############################################################################### #' Filtering #' #' Filtering of genes and features with low expression. Additionally, for the #' dmSQTLdata object, filtering of genotypes with low frequency. #' #' @param x \code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} #' object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("dmFilter", function(x, ...) standardGeneric("dmFilter")) # ----------------------------------------------------------------------------- #' @details Filtering parameters should be adjusted according to the sample size #' of the experiment data and the number of replicates per condition. #' #' \code{min_samps_gene_expr} defines the minimal number of samples where #' genes are required to be expressed at the minimal level of #' \code{min_gene_expr} in order to be included in the downstream analysis. #' Ideally, we would like that genes were expressed at some minimal level in #' all samples because this would lead to better estimates of feature ratios. #' #' Similarly, \code{min_samps_feature_expr} and \code{min_samps_feature_prop} #' defines the minimal number of samples where features are required to be #' expressed at the minimal levels of counts \code{min_feature_expr} or #' proportions \code{min_feature_prop}. In differential transcript/exon usage #' analysis, we suggest using \code{min_samps_feature_expr} and #' \code{min_samps_feature_prop} equal to the minimal number of replicates in #' any of the conditions. For example, in an assay with 3 versus 5 replicates, #' we would set these parameters to 3, which allows a situation where a #' feature is expressed in one condition but may not be expressed at all in #' another one, which is an example of differential transcript/exon usage. #' #' By default, all the filtering parameters equal zero which means that #' features with zero expression in all samples are removed as well as genes #' with only one non-zero feature. #' #' @param min_samps_gene_expr Minimal number of samples where genes should be #' expressed. See Details. #' @param min_gene_expr Minimal gene expression. #' @param min_samps_feature_expr Minimal number of samples where features should #' be expressed. See Details. #' @param min_feature_expr Minimal feature expression. #' @param min_samps_feature_prop Minimal number of samples where features should #' be expressed. See details. #' @param min_feature_prop Minimal proportion for feature expression. This value #' should be between 0 and 1. #' @param run_gene_twice Whether to re-run the gene-level filter #' after the feature-level filters. #' @return Returns filtered \code{\linkS4class{dmDSdata}} or #' \code{\linkS4class{dmSQTLdata}} object. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' } #' @seealso \code{\link{plotData}} #' @author Malgorzata Nowicka #' @rdname dmFilter #' @export setMethod("dmFilter", "dmDSdata", function(x, min_samps_gene_expr = 0, min_samps_feature_expr = 0, min_samps_feature_prop = 0, min_gene_expr = 0, min_feature_expr = 0, min_feature_prop = 0, run_gene_twice = FALSE){ stopifnot(min_samps_gene_expr >= 0 && min_samps_gene_expr <= ncol(x@counts)) stopifnot(min_gene_expr >= 0) stopifnot(min_samps_feature_expr >= 0 && min_samps_feature_expr <= ncol(x@counts)) stopifnot(min_feature_expr >= 0) stopifnot(min_samps_feature_prop >= 0 && min_samps_feature_prop <= ncol(x@counts)) stopifnot(min_feature_prop >= 0 && min_feature_prop <= 1) counts_filtered <- dmDS_filter(counts = x@counts, min_samps_gene_expr = min_samps_gene_expr, min_gene_expr = min_gene_expr, min_samps_feature_expr = min_samps_feature_expr, min_feature_expr = min_feature_expr, min_samps_feature_prop = min_samps_feature_prop, min_feature_prop = min_feature_prop, run_gene_twice = run_gene_twice) return(new("dmDSdata", counts = counts_filtered, samples = x@samples)) }) ################################################################################ ### plotData ################################################################################ #' Plot data summary #' #' @return Returns a \code{ggplot} object and can be further modified, for #' example, using \code{theme()}. Plots a histogram of the number of features #' per gene. Additionally, for \code{\linkS4class{dmSQTLdata}} object, plots a #' histogram of the number of SNPs per gene and a histogram of the number of #' unique SNPs (blocks) per gene. #' #' @param x \code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} #' object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("plotData", function(x, ...) standardGeneric("plotData")) # ----------------------------------------------------------------------------- #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotPrecision}}, \code{\link{plotProportions}}, #' \code{\link{plotPValues}} #' @rdname plotData #' @export setMethod("plotData", "dmDSdata", function(x){ tt <- elementNROWS(x@counts) ggp <- dm_plotDataFeatures(tt = tt) return(ggp) }) DRIMSeq/R/class_dmDSfit.R0000755000175200017520000005403714516005636016065 0ustar00biocbuildbiocbuild#' @include class_dmDSprecision.R NULL ################################################################################ ### dmDSfit class ################################################################################ #' dmDSfit object #' #' dmDSfit extends the \code{\linkS4class{dmDSprecision}} class by adding the #' full model Dirichlet-multinomial (DM) and beta-binomial (BB) likelihoods, #' regression coefficients and feature proportion estimates. Result of calling #' the \code{\link{dmFit}} function. #' #' @return #' #' \itemize{ \item \code{design(object)}: Get a matrix with the full design. #' \item \code{proportions(x)}: Get a data frame with estimated feature ratios #' for each sample. \item \code{coefficients(x)}: Get the DM or BB regression #' coefficients. } #' #' @param x,object dmDSprecision object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' #' @slot design_fit_full Numeric matrix of the design used to fit the full #' model. #' @slot fit_full \code{\linkS4class{MatrixList}} containing estimated feature #' ratios in each sample based on the full Dirichlet-multinomial (DM) model. #' @slot lik_full Numeric vector of the per gene DM full model likelihoods. #' @slot coef_full \code{\linkS4class{MatrixList}} with the regression #' coefficients based on the DM model. #' @slot fit_full_bb \code{\linkS4class{MatrixList}} containing estimated #' feature ratios in each sample based on the full beta-binomial (BB) model. #' @slot lik_full_bb Numeric vector of the per gene BB full model likelihoods. #' @slot coef_full_bb \code{\linkS4class{MatrixList}} with the regression #' coefficients based on the BB model. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSprecision}}, #' \code{\linkS4class{dmDStest}} setClass("dmDSfit", contains = "dmDSprecision", representation(design_fit_full = "matrix", fit_full = "MatrixList", lik_full = "numeric", coef_full = "MatrixList", fit_full_bb = "MatrixList", lik_full_bb = "numeric", coef_full_bb = "MatrixList")) # ------------------------------------------------------------------------------ setValidity("dmDSfit", function(object){ # Has to return TRUE for a valid object! if(nrow(object@design_fit_full) == ncol(object@counts)){ out <- TRUE }else{ return(paste0("Number of rows in the design matrix must be equal to the number of columns in counts")) } if(!length(object@fit_full) == length(object@counts)) return("Different number of genes in 'counts' and 'fit_full'") if(!length(object@lik_full) == length(object@counts)) return("Different number of genes in 'counts' and 'lik_full'") if(!length(object@coef_full) == length(object@counts)) return("Different number of genes in 'counts' and 'coef_full'") # TODO: Add more checks for BB return(TRUE) }) ################################################################################ ### accessing methods ################################################################################ #' @rdname dmDSfit-class #' @inheritParams dmDSprecision-class #' @export setMethod("design", "dmDSfit", function(object, type = "full_model"){ stopifnot(type %in% c("precision", "full_model", "null_model")) if(type == "precision") object@design_precision else if(type == "full_model") object@design_fit_full else NULL }) #' @rdname dmDSfit-class #' @export setGeneric("proportions", function(x, ...) standardGeneric("proportions")) #' @rdname dmDSfit-class #' @export setMethod("proportions", "dmDSfit", function(x){ data.frame(gene_id = rep.int(names(x@fit_full), elementNROWS(x@fit_full)), feature_id = rownames(x@fit_full@unlistData), x@fit_full@unlistData, stringsAsFactors = FALSE, row.names = NULL) }) # Generic for coefficients already exists in the stats package #' @rdname dmDSfit-class #' @param level Character specifying which type of results to return. Possible #' values \code{"gene"} or \code{"feature"}. #' @export setMethod("coefficients", "dmDSfit", function(object, level = "gene"){ stopifnot(length(level) == 1) stopifnot(level %in% c("gene", "feature")) if(level == "gene"){ out <- data.frame(gene_id = rep.int(names(object@coef_full), elementNROWS(object@coef_full)), feature_id = rownames(object@coef_full@unlistData), object@coef_full@unlistData, stringsAsFactors = FALSE, row.names = NULL) } if(level == "feature"){ out <- data.frame(gene_id = rep.int(names(object@coef_full_bb), elementNROWS(object@coef_full_bb)), feature_id = rownames(object@coef_full_bb@unlistData), object@coef_full_bb@unlistData, stringsAsFactors = FALSE, row.names = NULL) } return(out) }) # ------------------------------------------------------------------------------ setMethod("show", "dmDSfit", function(object){ callNextMethod(object) cat(" proportions(), coefficients()\n") }) ################################################################################ ### dmFit ################################################################################ #' Fit the Dirichlet-multinomial and/or the beta-binomial full model regression #' #' Obtain the maximum likelihood estimates of Dirichlet-multinomial (gene-level) #' and/or beta-binomial (feature-level) regression coefficients, feature #' proportions in each sample and corresponding likelihoods. In the differential #' exon/transcript usage analysis, the regression model is defined by a design #' matrix. In the exon/transcript usage QTL analysis, regression models are #' defined by genotypes. Currently, beta-binomial model is implemented only in #' the differential usage analysis. #' #' @param x \code{\linkS4class{dmDSprecision}} or #' \code{\linkS4class{dmSQTLprecision}} object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("dmFit", function(x, ...) standardGeneric("dmFit")) # ----------------------------------------------------------------------------- #' @inheritParams dmPrecision #' #' @details In the regression framework here, we adapt the idea from #' \code{\link[edgeR]{glmFit}} in \code{\link{edgeR}} about using a shortcut #' algorithm when the design is equivalent to simple group fitting. In such a #' case, we estimate the DM proportions for each group of samples separately #' and then recalculate the DM (and/or the BB) regression coefficients #' corresponding to the design matrix. If the design matrix does not define a #' simple group fitting, for example, when it contains a column with #' continuous values, then the regression framework is used to directly #' estimate the regression coefficients. #' #' Arguments that are used for the proportion estimation in each group when #' the shortcut fitting can be used start with \code{prop_}, and those that #' are used in the regression framework start with \code{coef_}. #' #' In the differential transcript usage analysis, setting \code{one_way = #' TRUE} allows switching to the shortcut algorithm only if the design is #' equivalent to simple group fitting. \code{one_way = FALSE} forces usage of #' the regression framework. #' #' #' @param design Numeric matrix defining the full model. #' @param bb_model Logical. Whether to perform the feature-level analysis using #' the beta-binomial model. #' @return Returns a \code{\linkS4class{dmDSfit}} or #' \code{\linkS4class{dmSQTLfit}} object. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotProportions}} \code{\link[edgeR]{glmFit}} #' @references McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression #' analysis of multifactor RNA-Seq experiments with respect to biological #' variation. Nucleic Acids Research 40, 4288-4297. #' @rdname dmFit #' @importFrom limma nonEstimable #' @export setMethod("dmFit", "dmDSprecision", function(x, design, one_way = TRUE, bb_model = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, add_uniform = FALSE, BPPARAM = BiocParallel::SerialParam()){ # Check design as in edgeR design <- as.matrix(design) stopifnot(nrow(design) == ncol(x@counts)) ne <- limma::nonEstimable(design) if(!is.null(ne)) stop(paste("Design matrix not of full rank. The following coefficients not estimable:\n", paste(ne, collapse = " "))) if(!identical(x@design_precision, design)) message(paste0("! The 'design' here is not identical as the 'design' used for precision estimation !\n")) # Check other parameters stopifnot(is.logical(one_way)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:2) # add random small fractional counts to zeros counts <- if (add_uniform) addUniform(x@counts) else x@counts # Fit the DM model: proportions and likelihoods fit <- dmDS_fit(counts = counts, design = design, precision = x@genewise_precision, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) # Calculate the Beta-Binomial likelihoods for each feature if(bb_model){ fit_bb <- bbDS_fit(counts = counts, fit = fit[["fit"]], design = design, precision = x@genewise_precision, one_way = one_way, verbose = verbose, BPPARAM = BPPARAM) return(new("dmDSfit", design_fit_full = design, fit_full = fit[["fit"]], lik_full = fit[["lik"]], coef_full = fit[["coef"]], lik_full_bb = fit_bb[["lik"]], coef_full_bb = fit_bb[["coef"]], mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, design_precision = x@design_precision, counts = x@counts, samples = x@samples)) }else{ return(new("dmDSfit", design_fit_full = design, fit_full = fit[["fit"]], lik_full = fit[["lik"]], coef_full = fit[["coef"]], mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, design_precision = x@design_precision, counts = x@counts, samples = x@samples)) } }) ################################################################################ ### plotProportions ################################################################################ #' Plot feature proportions #' #' This plot is available only for a group design, i.e., a design that is #' equivalent to multiple group fitting. #' #' @return For a given gene, plot the observed and estimated with #' Dirichlet-multinomial model feature proportions in each group. Estimated #' group proportions are marked with diamond shapes. #' #' @param x \code{\linkS4class{dmDSfit}}, \code{\linkS4class{dmDStest}} or #' \code{\linkS4class{dmSQTLfit}}, \code{\linkS4class{dmSQTLtest}} object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("plotProportions", function(x, ...) standardGeneric("plotProportions")) # ------------------------------------------------------------------------------ #' @inheritParams plotData #' @param gene_id Character indicating a gene ID to be plotted. #' @param group_variable Character indicating the grouping variable which is one #' of the columns in the \code{samples} slot of \code{x}. #' @param plot_type Character defining the type of the plot produced. Possible #' values \code{"barplot"}, \code{"boxplot1"}, \code{"boxplot2"}, #' \code{"lineplot"}, \code{"ribbonplot"}. #' @param order_features Logical. Whether to plot the features ordered by their #' expression. #' @param order_samples Logical. Whether to plot the samples ordered by the #' group variable. If \code{FALSE} order from the \code{sample(x)} is kept. #' @param plot_fit Logical. Whether to plot the proportions estimated by the #' full model. #' @param plot_main Logical. Whether to plot a title with the information about #' the Dirichlet-multinomial estimates. #' @param group_colors Character vector with colors for each group defined by #' \code{group_variable}. #' @param feature_colors Character vector with colors for each feature of gene #' defined by \code{gene_id}. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' #' ## Fit null model proportions and perform the LR test to detect DTU #' d <- dmTest(d, coef = "groupKD") #' #' ## Plot the gene-level p-values #' plotPValues(d) #' #' ## Get the gene-level results #' head(results(d)) #' #' ## Plot feature proportions for a top DTU gene #' res <- results(d) #' res <- res[order(res$pvalue, decreasing = FALSE), ] #' #' top_gene_id <- res$gene_id[1] #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "lineplot") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "ribbonplot") #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotData}}, \code{\link{plotPrecision}}, #' \code{\link{plotPValues}} #' @rdname plotProportions #' @export setMethod("plotProportions", "dmDSfit", function(x, gene_id, group_variable, plot_type = "barplot", order_features = TRUE, order_samples = TRUE, plot_fit = TRUE, plot_main = TRUE, group_colors = NULL, feature_colors = NULL){ stopifnot(gene_id %in% names(x@counts)) stopifnot(plot_type %in% c("barplot", "boxplot1", "boxplot2", "lineplot", "ribbonplot")) stopifnot(is.logical(order_features)) stopifnot(is.logical(order_samples)) stopifnot(is.logical(plot_fit)) stopifnot(is.logical(plot_main)) stopifnot(length(group_variable) == 1) stopifnot(group_variable %in% colnames(samples(x))) group <- x@samples[, group_variable] if(is.factor(group)){ group <- factor(group) }else{ group <- factor(group, levels = group) } counts_gene <- x@counts[[gene_id]] if(!is.null(group_colors) && plot_type %in% c("barplot", "boxplot1", "lineplot")) stopifnot(length(group_colors) == nlevels(group)) if(!is.null(feature_colors) && plot_type %in% c("boxplot2", "ribbonplot")) stopifnot(length(feature_colors) == nrow(counts_gene)) if(nrow(counts_gene) <= 1) stop("!Gene has to have at least 2 features! \n") main <- NULL if(plot_main){ mean_expression_gene <- mean(colSums(counts_gene), na.rm = TRUE) main <- paste0(gene_id, "\n Mean expression = ", round(mean_expression_gene)) precision_gene <- x@genewise_precision[gene_id] main <- paste0(main, ", Precision = ", round(precision_gene, 2)) } fit_full <- NULL if(plot_fit){ fit_full <- x@fit_full[[gene_id]] } ggp <- dm_plotProportions(counts = counts_gene, group = group, md = x@samples, fit_full = fit_full, main = main, plot_type = plot_type, order_features = order_features, order_samples = order_samples, group_colors = group_colors, feature_colors = feature_colors) return(ggp) }) DRIMSeq/R/class_dmDSprecision.R0000755000175200017520000006357014516005636017300 0ustar00biocbuildbiocbuild#' @include class_dmDSdata.R NULL ################################################################################ ### dmDSprecision class ################################################################################ #' dmDSprecision object #' #' dmDSprecision extends the \code{\linkS4class{dmDSdata}} by adding the #' precision estimates of the Dirichlet-multinomial distribution used to model #' the feature (e.g., transcript, exon, exonic bin) counts for each gene in the #' differential usage analysis. Result of calling the \code{\link{dmPrecision}} #' function. #' #' @details Normally, in the differential analysis based on RNA-seq data, such #' as, for example, differential gene expression, dispersion (of #' negative-binomial model) is estimated. Here, we estimate precision of the #' Dirichlet-multinomial model as it is more convenient computationally. To #' obtain dispersion estimates, one can use a formula: dispersion = 1 / (1 + #' precision). #' #' @return #' #' \itemize{ \item \code{mean_expression(x)}: Get a data frame with mean gene #' expression. \item \code{common_precision(x), common_precision(x) <- value}: #' Get or set common precision. \code{value} must be numeric of length 1. \item #' \code{genewise_precision(x), genewise_precision(x) <- value}: Get a data #' frame with gene-wise precision or set new gene-wise precision. \code{value} #' must be a data frame with "gene_id" and "genewise_precision" columns. } #' #' @param x,object dmDSprecision object. #' @param value Values that replace current attributes. #' @param ... Other parameters that can be defined by methods using this #' generic. #' #' @slot mean_expression Numeric vector of mean gene expression. #' @slot common_precision Numeric value of estimated common precision. #' @slot genewise_precision Numeric vector of estimated gene-wise precisions. #' @slot design_precision Numeric matrix of the design used to estimate #' precision. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSfit}}, #' \code{\linkS4class{dmDStest}} setClass("dmDSprecision", contains = "dmDSdata", representation(mean_expression = "numeric", common_precision = "numeric", genewise_precision = "numeric", design_precision = "matrix")) # ----------------------------------------------------------------------------- setValidity("dmDSprecision", function(object){ ## Has to return TRUE when valid object! out <- TRUE if(length(object@mean_expression) > 0){ if(length(object@mean_expression) == length(object@counts)){ if(all(names(object@mean_expression) == names(object@counts))) out <- TRUE else return(paste0("Different names of 'counts' and 'mean_expression'")) } else return(paste0("Unequal length of 'counts' and 'mean_expression'")) } if(length(object@genewise_precision) > 0){ if(length(object@genewise_precision) == length(object@counts)){ if(all(names(object@genewise_precision) == names(object@counts))) out <- TRUE else return(paste0("Different names of 'counts' and 'genewise_precision'")) } else return(paste0("Unequal length of 'counts' and 'genewise_precision'")) } if(length(object@common_precision) > 0){ if(length(object@common_precision) == 1) out <- TRUE else return(paste0("'common_precision' must be a vector of length 1'")) } if(nrow(object@design_precision) == ncol(object@counts)){ out <- TRUE }else{ return(paste0("Number of rows in the design matrix must be equal to the number of columns in counts")) } return(out) }) ################################################################################ ### accessing methods ################################################################################ #' @rdname dmDSprecision-class #' @param type Character indicating which design matrix should be returned. #' Possible values \code{"precision"}, \code{"full_model"} or #' \code{"null_model"}. #' @export setMethod("design", "dmDSprecision", function(object, type = "precision"){ stopifnot(type %in% c("precision", "full_model", "null_model")) if(type == "precision") object@design_precision else NULL }) #' @rdname dmDSprecision-class #' @export setGeneric("mean_expression", function(x, ...) standardGeneric("mean_expression")) #' @rdname dmDSprecision-class #' @export setMethod("mean_expression", "dmDSprecision", function(x){ data.frame(gene_id = names(x@mean_expression), mean_expression = x@mean_expression, stringsAsFactors = FALSE, row.names = NULL) }) #' @rdname dmDSprecision-class #' @export setGeneric("common_precision", function(x, ...) standardGeneric("common_precision")) #' @rdname dmDSprecision-class #' @export setMethod("common_precision", "dmDSprecision", function(x) x@common_precision ) #' @rdname dmDSprecision-class #' @export setGeneric("common_precision<-", function(x, value) standardGeneric("common_precision<-")) #' @rdname dmDSprecision-class #' @export setMethod("common_precision<-", "dmDSprecision", function(x, value){ ### value must be a numeric of length 1 names(value) <- NULL return(new("dmDSprecision", mean_expression = x@mean_expression, common_precision = value, genewise_precision = x@genewise_precision, design_precision = x@design_precision, counts = x@counts, samples = x@samples)) }) #' @rdname dmDSprecision-class #' @export setGeneric("genewise_precision", function(x, ...) standardGeneric("genewise_precision")) #' @rdname dmDSprecision-class #' @export setMethod("genewise_precision", "dmDSprecision", function(x){ data.frame(gene_id = names(x@genewise_precision), genewise_precision = x@genewise_precision, stringsAsFactors = FALSE, row.names = NULL) }) #' @rdname dmDSprecision-class #' @export setGeneric("genewise_precision<-", function(x, value) standardGeneric("genewise_precision<-")) #' @rdname dmDSprecision-class #' @export setMethod("genewise_precision<-", "dmDSprecision", function(x, value){ # value must be a data frame with gene_id and genewise_precision stopifnot(all(c("gene_id", "genewise_precision") %in% colnames(value))) stopifnot(all(names(x@counts) %in% value[,"gene_id"])) order <- match(names(x@counts), value[,"gene_id"]) return(new("dmDSprecision", mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = value[order, "genewise_precision"], design_precision = x@design_precision, counts = x@counts, samples = x@samples)) }) # ----------------------------------------------------------------------------- setMethod("show", "dmDSprecision", function(object){ callNextMethod(object) cat(" design()\n") cat(" mean_expression(), common_precision(), genewise_precision()\n") }) ################################################################################ ### dmPrecision ################################################################################ #' Estimate the precision parameter in the Dirichlet-multinomial model #' #' Maximum likelihood estimates of the precision parameter in the #' Dirichlet-multinomial model used for the differential exon/transcript usage #' or QTL analysis. #' #' @details Normally, in the differential analysis based on RNA-seq data, such #' as, for example, differential gene expression, dispersion (of #' negative-binomial model) is estimated. Here, we estimate precision of the #' Dirichlet-multinomial model as it is more convenient computationally. To #' obtain dispersion estimates, one can use a formula: dispersion = 1 / (1 + #' precision). #' #' @param x \code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} #' object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("dmPrecision", function(x, ...) standardGeneric("dmPrecision")) # ----------------------------------------------------------------------------- #' @details Parameters that are used in the precision (dispersion = 1 / (1 + #' precision)) estimation start with prefix \code{prec_}. Those that are used #' for the proportion estimation in each group when the shortcut fitting #' \code{one_way = TRUE} can be used start with \code{prop_}, and those that #' are used in the regression framework start with \code{coef_}. #' #' There are two optimization methods implemented within dmPrecision: #' \code{"optimize"} for the common precision and \code{"grid"} for the #' gene-wise precision. #' #' Only part of the precision parameters in dmPrecision have an influence on #' a given optimization method. Here is a list of such active parameters: #' #' \code{"optimize"}: #' #' \itemize{ \item \code{prec_interval}: Passed as \code{interval}. \item #' \code{prec_tol}: The accuracy defined as \code{tol}. } #' #' \code{"grid"}, which uses the grid approach from #' \code{\link[edgeR]{estimateDisp}} in \code{\link{edgeR}}: #' #' \itemize{ \item \code{prec_init}, \code{prec_grid_length}, #' \code{prec_grid_range}: Parameters used to construct the search grid #' \code{prec_init * 2^seq(from = prec_grid_range[1]}, \code{to = #' prec_grid_range[2]}, \code{length = prec_grid_length)}. \item #' \code{prec_moderation}: Dipsersion shrinkage is available only with #' \code{"grid"} method. \item \code{prec_prior_df}: Used only when precision #' shrinkage is activated. Moderated likelihood is equal to \code{loglik + #' prec_prior_df * moderation}. Higher \code{prec_prior_df}, more shrinkage #' toward common or trended precision is applied. \item \code{prec_span}: #' Used only when precision moderation toward trend is activated. } #' #' @param design Numeric matrix defining the model that should be used when #' estimating precision. Normally this should be a full model design used #' also in \code{\link{dmFit}}. #' @param mean_expression Logical. Whether to estimate the mean expression of #' genes. #' @param common_precision Logical. Whether to estimate the common precision. #' @param genewise_precision Logical. Whether to estimate the gene-wise #' precision. #' @param prec_adjust Logical. Whether to use the Cox-Reid adjusted or #' non-adjusted profile likelihood. #' @param one_way Logical. Should the shortcut fitting be used when the design #' corresponds to multiple group comparison. This is a similar approach as in #' \code{\link{edgeR}}. If \code{TRUE} (the default), then proportions are #' fitted per group and regression coefficients are recalculated from those #' fits. #' @param prec_subset Value from 0 to 1 defining the percentage of genes used in #' common precision estimation. The default is 0.1, which uses 10% of #' randomly selected genes to speed up the precision estimation process. Use #' \code{set.seed} function to make the analysis reproducible. See Examples. #' @param prec_interval Numeric vector of length 2 defining the interval of #' possible values for the common precision. #' @param prec_tol The desired accuracy when estimating common precision. #' @param prec_init Initial precision. If \code{common_precision} is #' \code{TRUE}, then \code{prec_init} is overwritten by common precision #' estimate. #' @param prec_grid_length Length of the search grid. #' @param prec_grid_range Vector giving the limits of grid interval. #' @param prec_moderation Precision moderation method. One can choose to shrink #' the precision estimates toward the common precision (\code{"common"}) or #' toward the (precision versus mean expression) trend (\code{"trended"}) #' @param prec_prior_df Degree of moderation (shrinkage) in case when it can not #' be calculated automaticaly (number of genes on the upper boundary of grid #' is smaller than 10). By default it is equal to 0. #' @param prec_span Value from 0 to 1 defining the percentage of genes used in #' smoothing sliding window when calculating the precision versus mean #' expression trend. #' @param prop_mode Optimization method used to estimate proportions. Possible #' value \code{"constrOptim"}. #' @param prop_tol The desired accuracy when estimating proportions. #' @param coef_mode Optimization method used to estimate regression #' coefficients. Possible value \code{"optim"}. #' @param coef_tol The desired accuracy when estimating regression coefficients. #' @param verbose Numeric. Definie the level of progress messages displayed. 0 - #' no messages, 1 - main messages, 2 - message for every gene fitting. #' @param add_uniform Whether to add a small fractional count to zeros, #' (adding a uniform random variable between 0 and 0.1). #' This option allows for the fitting of genewise precision and coefficients #' for genes with two features having all zero for one group, or the last #' feature having all zero for one group. #' @param BPPARAM Parallelization method used by #' \code{\link[BiocParallel]{bplapply}}. #' #' @return Returns a \code{\linkS4class{dmDSprecision}} or #' \code{\linkS4class{dmSQTLprecision}} object. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' } #' @seealso \code{\link{plotPrecision}} \code{\link[edgeR]{estimateDisp}} #' @author Malgorzata Nowicka #' @references McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression #' analysis of multifactor RNA-Seq experiments with respect to biological #' variation. Nucleic Acids Research 40, 4288-4297. #' @rdname dmPrecision #' @importFrom limma nonEstimable #' @importFrom stats runif #' @export setMethod("dmPrecision", "dmDSdata", function(x, design, mean_expression = TRUE, common_precision = TRUE, genewise_precision = TRUE, prec_adjust = TRUE, prec_subset = 0.1, prec_interval = c(0, 1e+3), prec_tol = 1e+01, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "trended", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, add_uniform = FALSE, BPPARAM = BiocParallel::SerialParam()){ # Check design as in edgeR design <- as.matrix(design) stopifnot(nrow(design) == ncol(x@counts)) ne <- limma::nonEstimable(design) if(!is.null(ne)) stop(paste("Design matrix not of full rank. The following coefficients not estimable:\n", paste(ne, collapse = " "))) # Check other parameters stopifnot(is.logical(mean_expression)) stopifnot(is.logical(common_precision)) stopifnot(is.logical(genewise_precision)) stopifnot(is.logical(prec_adjust)) stopifnot(length(prec_subset) == 1) stopifnot(is.numeric(prec_subset) && prec_subset > 0 && prec_subset <= 1) stopifnot(length(prec_interval) == 2) stopifnot(prec_interval[1] < prec_interval[2]) stopifnot(length(prec_tol) == 1) stopifnot(is.numeric(prec_tol) && prec_tol > 0) stopifnot(length(prec_init) == 1) stopifnot(is.numeric(prec_init)) stopifnot(prec_grid_length > 2) stopifnot(length(prec_grid_range) == 2) stopifnot(prec_grid_range[1] < prec_grid_range[2]) stopifnot(length(prec_moderation) == 1) stopifnot(prec_moderation %in% c("none", "common", "trended")) stopifnot(length(prec_prior_df) == 1) stopifnot(is.numeric(prec_prior_df) && prec_prior_df >= 0) stopifnot(length(prec_span) == 1) stopifnot(is.numeric(prec_span) && prec_span > 0 && prec_span < 1) stopifnot(is.logical(one_way)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:2) if(mean_expression || (genewise_precision && prec_moderation == "trended")){ mean_expression <- dm_estimateMeanExpression(counts = x@counts, verbose = verbose) }else{ mean_expression <- numeric() } if(common_precision){ if(prec_subset < 1){ message(paste0("! Using a subset of ", prec_subset, " genes to estimate common precision !\n")) genes2keep <- sample(1:length(x@counts), max(round(prec_subset * length(x@counts)), 1), replace = FALSE) }else{ genes2keep <- 1:length(x@counts) } common_precision <- dmDS_estimateCommonPrecision( counts = x@counts[genes2keep, ], design = design, prec_adjust = prec_adjust, prec_interval = prec_interval, prec_tol = prec_tol, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) }else{ common_precision <- numeric() } if(genewise_precision){ if(length(common_precision) == 1){ message("! Using common_precision = ", round(common_precision, 4), " as prec_init !\n") prec_init <- common_precision } # add random small fractional counts to zeros counts <- if (add_uniform) addUniform(x@counts) else x@counts genewise_precision <- dmDS_estimateTagwisePrecision(counts = counts, design = design, mean_expression = mean_expression, prec_adjust = prec_adjust, prec_init = prec_init, prec_grid_length = prec_grid_length, prec_grid_range = prec_grid_range, prec_moderation = prec_moderation, prec_prior_df = prec_prior_df, prec_span = prec_span, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) }else{ genewise_precision <- numeric() } return(new("dmDSprecision", mean_expression = mean_expression, common_precision = common_precision, genewise_precision = genewise_precision, design_precision = design, counts = x@counts, samples = x@samples)) }) ################################################################################ ### plotPrecision ################################################################################ #' Precision versus mean expression plot #' #' @return Normally in the differential analysis based on RNA-seq data, such #' plot has dispersion parameter plotted on the y-axis. Here, the y-axis #' represents precision since in the Dirichlet-multinomial model this is the #' parameter that is directly estimated. It is important to keep in mind that #' the precision parameter (gamma0) is inverse proportional to dispersion #' (theta): theta = 1 / (1 + gamma0). In RNA-seq data, we can typically #' observe a trend where the dispersion decreases (here, precision increases) #' for genes with higher mean expression. #' #' @param x \code{\linkS4class{dmDSprecision}} or #' \code{\linkS4class{dmSQTLprecision}} object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("plotPrecision", function(x, ...) standardGeneric("plotPrecision")) # ----------------------------------------------------------------------------- #' @inheritParams plotData #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotData}}, \code{\link{plotProportions}}, #' \code{\link{plotPValues}} #' #' @rdname plotPrecision #' @export setMethod("plotPrecision", "dmDSprecision", function(x){ if(!length(x@genewise_precision) == length(x@counts)) stop("Genewise precision must be estimated for each gene!") if(!length(x@genewise_precision) == length(x@mean_expression)) stop("Mean expression must be estimated for each gene!") if(length(x@common_precision) == 0){ common_precision <- NULL }else{ common_precision <- x@common_precision } ggp <- dm_plotPrecision(genewise_precision = x@genewise_precision, mean_expression = x@mean_expression, nr_features = elementNROWS(x@counts), common_precision = common_precision) return(ggp) }) # function to add small fraction of counts to zeros addUniform <- function(counts, uniform_max=0.1) { counts_new <- lapply(seq_along(counts), function(g) { expr <- counts[[g]] zeros <- expr == 0 expr[zeros] <- runif(sum(zeros), 0, uniform_max) expr }) names(counts_new) <- names(counts) MatrixList(counts_new) } DRIMSeq/R/class_dmDStest.R0000755000175200017520000005253514516005636016263 0ustar00biocbuildbiocbuild#' @include class_dmDSfit.R NULL ############################################################################### ### dmDStest class ############################################################################### #' dmDStest object #' #' dmDStest extends the \code{\linkS4class{dmDSfit}} class by adding the null #' model Dirichlet-multinomial (DM) and beta-binomial (BB) likelihoods and the #' gene-level and feature-level results of testing for differential #' exon/transcript usage. Result of calling the \code{\link{dmTest}} function. #' #' @return #' #' \itemize{ \item \code{results(x)}: get a data frame with gene-level or #' feature-level results.} #' #' @param x,object dmDStest object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' #' @slot design_fit_null Numeric matrix of the design used to fit the null #' model. #' @slot lik_null Numeric vector of the per gene DM null model likelihoods. #' @slot lik_null_bb Numeric vector of the per gene BB null model likelihoods. #' @slot results_gene Data frame with the gene-level results including: #' \code{gene_id} - gene IDs, \code{lr} - likelihood ratio statistics based on #' the DM model, \code{df} - degrees of freedom, \code{pvalue} - p-values and #' \code{adj_pvalue} - Benjamini & Hochberg adjusted p-values. #' @slot results_feature Data frame with the feature-level results including: #' \code{gene_id} - gene IDs, \code{feature_id} - feature IDs, \code{lr} - #' likelihood ratio statistics based on the BB model, \code{df} - degrees of #' freedom, \code{pvalue} - p-values and \code{adj_pvalue} - Benjamini & #' Hochberg adjusted p-values. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' #' ## Fit null model proportions and perform the LR test to detect DTU #' d <- dmTest(d, coef = "groupKD") #' #' ## Plot the gene-level p-values #' plotPValues(d) #' #' ## Get the gene-level results #' head(results(d)) #' #' ## Plot feature proportions for a top DTU gene #' res <- results(d) #' res <- res[order(res$pvalue, decreasing = FALSE), ] #' #' top_gene_id <- res$gene_id[1] #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "lineplot") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "ribbonplot") #' #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSprecision}}, #' \code{\linkS4class{dmDSfit}} setClass("dmDStest", contains = "dmDSfit", representation(design_fit_null = "matrix", lik_null = "numeric", lik_null_bb = "numeric", results_gene = "data.frame", results_feature = "data.frame")) # ------------------------------------------------------------------------------ setValidity("dmDStest", function(object){ # Has to return TRUE when valid object! if(!length(object@lik_null) == length(object@counts)) return("Different number of genes in 'counts' and 'lik_null'") if(length(object@lik_null_bb) > 0){ if(!length(object@lik_null_bb) == nrow(object@counts)) return("Different number of features in 'counts' and 'lik_null_bb'") } # TODO: Add more checks for results return(TRUE) }) ############################################################################### ### accessing methods ############################################################################### #' @rdname dmDStest-class #' @inheritParams dmDSprecision-class #' @export setMethod("design", "dmDStest", function(object, type = "null_model"){ stopifnot(type %in% c("precision", "full_model", "null_model")) if(type == "precision") object@design_precision else if(type == "full_model") object@design_fit_full else object@design_fit_null }) #' @rdname dmDStest-class #' @export setGeneric("results", function(x, ...) standardGeneric("results")) #' @rdname dmDStest-class #' @inheritParams dmDSfit-class #' @export setMethod("results", "dmDStest", function(x, level = "gene"){ stopifnot(length(level) == 1) stopifnot(level %in% c("gene", "feature")) slot(x, paste0("results_", level)) }) # ----------------------------------------------------------------------------- setMethod("show", "dmDStest", function(object){ callNextMethod(object) cat(" results()\n") }) ############################################################################### ### dmTest ############################################################################### #' Likelihood ratio test to detect differential transcript/exon usage #' #' First, estimate the null Dirichlet-multinomial and beta-binomial model #' parameters and likelihoods using the null model design. Second, perform the #' gene-level (DM model) and feature-level (BB model) likelihood ratio tests. In #' the differential exon/transcript usage analysis, the null model is defined by #' the null design matrix. In the exon/transcript usage QTL analysis, null #' models are defined by a design with intercept only. Currently, beta-binomial #' model is implemented only in the differential usage analysis. #' #' @param x \code{\linkS4class{dmDSfit}} or \code{\linkS4class{dmSQTLfit}} #' object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' @export setGeneric("dmTest", function(x, ...) standardGeneric("dmTest")) # ----------------------------------------------------------------------------- #' @inheritParams dmFit #' @param coef Integer or character vector indicating which coefficients of the #' linear model are to be tested equal to zero. Values must indicate column #' numbers or column names of the \code{design} used in \code{\link{dmFit}}. #' @param design Numeric matrix defining the null model. #' @param contrast Numeric vector or matrix specifying one or more contrasts of #' the linear model coefficients to be tested equal to zero. For a matrix, #' number of rows (for a vector, its length) must equal to the number of #' columns of \code{design} used in \code{\link{dmFit}}. #' #' @details One must specify one of the arguments: \code{coef}, \code{design} or #' \code{contrast}. #' #' When \code{contrast} is used to define the null model, the null design #' matrix is recalculated using the same approach as in #' \code{\link[edgeR]{glmLRT}} function from \code{\link{edgeR}}. #' #' @return Returns a \code{\linkS4class{dmDStest}} or #' \code{\linkS4class{dmSQTLtest}} object. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' #' ## Fit null model proportions and perform the LR test to detect DTU #' d <- dmTest(d, coef = "groupKD") #' #' ## Plot the gene-level p-values #' plotPValues(d) #' #' ## Get the gene-level results #' head(results(d)) #' #' ## Plot feature proportions for a top DTU gene #' res <- results(d) #' res <- res[order(res$pvalue, decreasing = FALSE), ] #' #' top_gene_id <- res$gene_id[1] #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "lineplot") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "ribbonplot") #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotPValues}} \code{\link[edgeR]{glmLRT}} #' @references McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression #' analysis of multifactor RNA-Seq experiments with respect to biological #' variation. Nucleic Acids Research 40, 4288-4297. #' @rdname dmTest #' @importFrom limma nonEstimable #' @export setMethod("dmTest", "dmDSfit", function(x, coef = NULL, design = NULL, contrast = NULL, one_way = TRUE, bb_model = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ # Check parameters stopifnot(is.logical(one_way)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:2) if(!sum(!unlist(lapply(list(coef, design, contrast), is.null))) == 1) stop(paste0("Only one of the ways to define the null model 'coef', 'design' or 'contrast' can be used!")) # Check coef if(!is.null(coef)){ # Check the full model design matrix nbeta <- ncol(x@design_fit_full) if(nbeta < 2) stop("Need at least two columns for design, usually the first is the intercept column!") if(length(coef) > 1) coef <- unique(coef) if(is.numeric(coef)){ stopifnot(max(coef) <= nbeta) }else if(is.character(coef)){ if(!all(coef %in% colnames(x@design_fit_full))) stop("'coef' does not match the columns of the design matrix!") coef <- match(coef, colnames(x@design_fit_full)) } # Null design matrix design0 <- x@design_fit_full[, -coef, drop = FALSE] } # Check design if(!is.null(design)){ # Check design as in edgeR design <- as.matrix(design) stopifnot(nrow(design) == ncol(x@counts)) ne <- limma::nonEstimable(design) if(!is.null(ne)) stop(paste("Design matrix not of full rank. The following coefficients not estimable:\n", paste(ne, collapse = " "))) # Null design matrix design0 <- design } # Check contrast exactly as in edgeR in glmLRT() if(!is.null(contrast)){ design <- x@design_fit_full contrast <- as.matrix(contrast) stopifnot(nrow(contrast) == ncol(design)) qrc <- qr(contrast) ncontrasts <- qrc$rank if(ncontrasts == 0) stop("Contrasts are all zero!") coef <- 1:ncontrasts nlibs <- nrow(design) Dvec <- rep.int(1, nlibs) Dvec[coef] <- diag(qrc$qr)[coef] Q <- qr.Q(qrc, complete = TRUE, Dvec = Dvec) design <- design %*% Q # Null design matrix design0 <- design[, -coef, drop = FALSE] } # Fit the DM null model: proportions and likelihoods fit0 <- dmDS_fit(counts = x@counts, design = design0, precision = x@genewise_precision, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) # Calculate the DM degrees of freedom for the LR test: df_full - df_null df <- (ncol(x@design_fit_full) - ncol(design0)) * (elementNROWS(x@coef_full) - 1) results_gene <- dm_LRT(lik_full = x@lik_full, lik_null = fit0[["lik"]], df = df, verbose = verbose) results_gene <- data.frame(gene_id = rownames(results_gene), results_gene, stringsAsFactors = FALSE, row.names = NULL) # Calculate the Beta-Binomial null likelihoods for each feature if(bb_model && length(x@lik_full_bb) > 0){ fit0_bb <- bbDS_fit(counts = x@counts, fit = fit0[["fit"]], design = design0, precision = x@genewise_precision, one_way = one_way, verbose = verbose, BPPARAM = BPPARAM) # Calculate the BB degrees of freedom for the LR test df <- rep.int(ncol(x@design_fit_full) - ncol(design0), length(x@lik_full_bb)) results_feature <- dm_LRT(lik_full = x@lik_full_bb, lik_null = fit0_bb[["lik"]], df = df, verbose = verbose) results_feature <- data.frame( gene_id = rep.int(names(x@counts), elementNROWS(x@counts)), feature_id = rownames(results_feature), results_feature, stringsAsFactors = FALSE, row.names = NULL) return(new("dmDStest", results_gene = results_gene, results_feature = results_feature, design_fit_null = design0, lik_null = fit0[["lik"]], lik_null_bb = fit0_bb[["lik"]], design_fit_full = x@design_fit_full, fit_full = x@fit_full, lik_full = x@lik_full, coef_full = x@coef_full, lik_full_bb = x@lik_full_bb, coef_full_bb = x@coef_full_bb, mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, design_precision = x@design_precision, counts = x@counts, samples = x@samples)) }else{ if(bb_model && length(x@lik_full_bb) == 0) message("Beta-Binomial model is not fitted because bb_model=FALSE in dmFit! Rerun dmFit with bb_model=TRUE.") return(new("dmDStest", results_gene = results_gene, design_fit_null = design0, lik_null = fit0[["lik"]], design_fit_full = x@design_fit_full, fit_full = x@fit_full, lik_full = x@lik_full, coef_full = x@coef_full, lik_full_bb = x@lik_full_bb, coef_full_bb = x@coef_full_bb, mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, design_precision = x@design_precision, counts = x@counts, samples = x@samples)) } }) ############################################################################### ### plotPValues ############################################################################### #' Plot p-value distribution #' #' @return Plot a histogram of p-values. #' #' @param x \code{\linkS4class{dmDStest}} or \code{\linkS4class{dmSQTLtest}} #' object. #' @export setGeneric("plotPValues", function(x, ...) standardGeneric("plotPValues")) # ---------------------------------------------------------------------------- #' @inheritParams results #' @examples #' # -------------------------------------------------------------------------- #' # Create dmDSdata object #' # -------------------------------------------------------------------------- #' ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package #' #' library(PasillaTranscriptExpr) #' \donttest{ #' data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") #' #' ## Load metadata #' pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Load counts #' pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), #' header = TRUE, as.is = TRUE) #' #' ## Create a pasilla_samples data frame #' pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, #' group = pasilla_metadata$condition) #' levels(pasilla_samples$group) #' #' ## Create a dmDSdata object #' d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) #' #' ## Use a subset of genes, which is defined in the following file #' gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) #' #' d <- d[names(d) %in% gene_id_subset, ] #' #' # -------------------------------------------------------------------------- #' # Differential transcript usage analysis - simple two group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' ## Check what is the minimal number of replicates per condition #' table(samples(d)$group) #' #' d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, #' min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## Create the design matrix #' design_full <- model.matrix(~ group, data = samples(d)) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d, design = design_full) #' #' plotPrecision(d) #' #' head(mean_expression(d)) #' common_precision(d) #' head(genewise_precision(d)) #' #' ## Fit full model proportions #' d <- dmFit(d, design = design_full) #' #' ## Get fitted proportions #' head(proportions(d)) #' ## Get the DM regression coefficients (gene-level) #' head(coefficients(d)) #' ## Get the BB regression coefficients (feature-level) #' head(coefficients(d), level = "feature") #' #' ## Fit null model proportions and perform the LR test to detect DTU #' d <- dmTest(d, coef = "groupKD") #' #' ## Plot the gene-level p-values #' plotPValues(d) #' #' ## Get the gene-level results #' head(results(d)) #' #' ## Plot feature proportions for a top DTU gene #' res <- results(d) #' res <- res[order(res$pvalue, decreasing = FALSE), ] #' #' top_gene_id <- res$gene_id[1] #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "lineplot") #' #' plotProportions(d, gene_id = top_gene_id, group_variable = "group", #' plot_type = "ribbonplot") #' } #' @author Malgorzata Nowicka #' @seealso \code{\link{plotData}}, \code{\link{plotPrecision}}, #' \code{\link{plotProportions}} #' @rdname plotPValues #' @export setMethod("plotPValues", "dmDStest", function(x, level = "gene"){ stopifnot(length(level) == 1) stopifnot(level %in% c("gene", "feature")) res <- slot(x, paste0("results_", level)) if(nrow(res) > 0) ggp <- dm_plotPValues(pvalues = res[, "pvalue"]) else stop("Feature-level results are not available! Set bb_model=TRUE in dmFit and dmTest") return(ggp) }) DRIMSeq/R/class_dmSQTLdata.R0000755000175200017520000005036214516005636016466 0ustar00biocbuildbiocbuild#' @include class_MatrixList.R NULL ############################################################################### ### dmSQTLdata class ############################################################################### #' dmSQTLdata object #' #' dmSQTLdata contains genomic feature expression (counts), genotypes and sample #' information needed for the transcript/exon usage QTL analysis. It can be #' created with function \code{\link{dmSQTLdata}}. #' #' @return #' #' \itemize{ \item \code{names(x)}: Get the gene names. \item \code{length(x)}: #' Get the number of genes. \item \code{x[i, j]}: Get a subset of dmDSdata #' object that consists of counts, genotypes and blocks corresponding to genes i #' and samples j. } #' #' @param x,object dmSQTLdata object. #' @param i,j Parameters used for subsetting. #' #' @slot counts \code{\linkS4class{MatrixList}} of expression, in counts, of #' genomic features. Rows correspond to genomic features, such as exons or #' transcripts. Columns correspond to samples. MatrixList is partitioned in a #' way that each of the matrices in a list contains counts for a single gene. #' @slot genotypes MatrixList of unique genotypes. Rows correspond to blocks, #' columns to samples. Each matrix in this list is a collection of unique #' genotypes that are matched with a given gene. #' @slot blocks MatrixList with two columns \code{block_id} and \code{snp_id}. #' For each gene, it identifies SNPs with identical genotypes across the #' samples and assigns them to blocks. #' @slot samples Data frame with information about samples. It must contain #' variable \code{sample_id} with unique sample names. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmSQTLprecision}}, #' \code{\linkS4class{dmSQTLfit}}, \code{\linkS4class{dmSQTLtest}} setClass("dmSQTLdata", representation(counts = "MatrixList", genotypes = "MatrixList", blocks = "MatrixList", samples = "data.frame")) ################################### setValidity("dmSQTLdata", function(object){ ### Has to return TRUE when valid object! if(!ncol(object@counts) == ncol(object@genotypes)) return(paste0("Unequal number of samples in 'counts' and 'genotypes' ", ncol(object@counts), " and ", ncol(object@genotypes))) ### Mystery: This does not pass # if(!all(colnames(object@blocks) %in% c("block_id", "snp_id"))) # return(paste0("'blocks' must contain 'block_id' and 'snp_id' variables")) if(!all(names(object@counts) == names(object@genotypes))) return("'genotypes' and 'counts' do not contain the same genes") if(!all(names(object@blocks) == names(object@genotypes))) return("'genotypes' and 'blocks' do not contain the same genes or SNPs") return(TRUE) }) ############################################################################### ### show, accessing and subsetting methods ############################################################################### #' @rdname dmSQTLdata-class #' @export setMethod("counts", "dmSQTLdata", function(object){ data.frame(gene_id = rep(names(object@counts), elementNROWS(object@counts)), feature_id = rownames(object@counts), object@counts@unlistData, stringsAsFactors = FALSE, row.names = NULL) }) #' @rdname dmSQTLdata-class #' @export setMethod("samples", "dmSQTLdata", function(x) x@samples ) ################################ setMethod("show", "dmSQTLdata", function(object){ cat("An object of class", class(object), "\n") cat("with", length(object), "genes and", ncol(object@counts), "samples\n") cat("* data accessors: counts(), samples()\n") }) ################################ #' @rdname dmSQTLdata-class #' @export setMethod("names", "dmSQTLdata", function(x) names(x@counts) ) #' @rdname dmSQTLdata-class #' @export setMethod("length", "dmSQTLdata", function(x) length(x@counts) ) #' @aliases [,dmSQTLdata-method [,dmSQTLdata,ANY-method #' @rdname dmSQTLdata-class #' @export setMethod("[", "dmSQTLdata", function(x, i, j){ if(missing(j)){ counts <- x@counts[i, , drop = FALSE] genotypes <- x@genotypes[i, , drop = FALSE] blocks <- x@blocks[i, , drop = FALSE] samples <- x@samples }else{ if(missing(i)){ counts <- x@counts[, j, drop = FALSE] genotypes <- x@genotypes[, j, drop = FALSE] }else{ counts <- x@counts[i, j, drop = FALSE] genotypes <- x@genotypes[i, j, drop = FALSE] blocks <- x@blocks[i, , drop = FALSE] } samples <- x@samples rownames(samples) <- samples$sample_id samples <- samples[j, , drop = FALSE] samples$sample_id <- factor(samples$sample_id) rownames(samples) <- NULL } return(new("dmSQTLdata", counts = counts, genotypes = genotypes, blocks = blocks, samples = samples)) }) ############################################################################### ### dmSQTLdata ############################################################################### blocks_per_gene <- function(g, genotypes){ # g = 1 genotypes_df <- data.frame(t(genotypes[[g]])) matching_snps <- match(genotypes_df, genotypes_df) oo <- order(matching_snps, decreasing = FALSE) block_id <- paste0("block_", as.numeric(factor(matching_snps))) snp_id <- colnames(genotypes_df) blocks_tmp <- cbind(block_id, snp_id) return(blocks_tmp[oo, , drop = FALSE]) } #' Create dmSQTLdata object #' #' Constructor functions for a \code{\linkS4class{dmSQTLdata}} object. #' dmSQTLdata assignes to a gene all the SNPs that are located in a given #' surrounding (\code{window}) of this gene. #' #' It is quite common that sample grouping defined by some of the SNPs is #' identical. Compare \code{dim(genotypes)} and \code{dim(unique(genotypes))}. #' In our QTL analysis, we do not repeat tests for the SNPs that define the #' same grouping of samples. Each grouping is tested only once. SNPs that define #' such unique groupings are aggregated into blocks. P-values and adjusted #' p-values are estimated at the block level, but the returned results are #' extended to a SNP level by repeating the block statistics for each SNP that #' belongs to a given block. #' #' @inheritParams dmDSdata #' @param genotypes Data frame with genotypes. Rows correspond to SNPs. This #' data frame has to contain a \code{snp_id} column with SNP IDs and columns #' with genotypes for each sample. Column names corresponding to sample IDs #' must be the same as in the \code{sample} data frame. The genotype of each #' sample is coded in the following way: 0 for ref/ref, 1 for ref/not ref, 2 #' for not ref/not ref, -1 or \code{NA} for missing value. #' @param gene_ranges \code{\linkS4class{GRanges}} object with gene location. It #' must contain gene names when calling names(). #' @param snp_ranges \code{\linkS4class{GRanges}} object with SNP location. It #' must contain SNP names when calling names(). #' @param window Size of a down and up stream window, which is defining the #' surrounding for a gene. Only SNPs that are located within a gene or its #' surrounding are considered in the sQTL analysis. #' @param samples Data frame with column \code{sample_id} corresponding to #' unique sample IDs #' @param BPPARAM Parallelization method used by #' \code{\link[BiocParallel]{bplapply}}. #' #' @return Returns a \code{\linkS4class{dmSQTLdata}} object. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' } #' @seealso \code{\link{plotData}} #' @author Malgorzata Nowicka #' @export #' @importFrom IRanges width #' @importFrom S4Vectors queryHits subjectHits dmSQTLdata <- function(counts, gene_ranges, genotypes, snp_ranges, samples, window = 5e3, BPPARAM = BiocParallel::SerialParam()){ stopifnot(is.numeric(window)) stopifnot(window >= 0) ### Check on samples stopifnot(class(samples) == "data.frame") stopifnot("sample_id" %in% colnames(samples)) stopifnot(sum(duplicated(samples$sample_id)) == 0) ### Check on counts stopifnot(class(counts) == "data.frame") stopifnot(all(c("gene_id", "feature_id") %in% colnames(counts))) stopifnot(all(samples$sample_id %in% colnames(counts))) ### Check on genotypes stopifnot(class(genotypes) == "data.frame") stopifnot("snp_id" %in% colnames(genotypes)) stopifnot(all(samples$sample_id %in% colnames(counts))) sample_id <- samples$sample_id gene_id <- counts$gene_id feature_id <- counts$feature_id snp_id <- genotypes$snp_id stopifnot( class( gene_id ) %in% c("character", "factor")) stopifnot( class( feature_id ) %in% c("character", "factor")) stopifnot( class( sample_id ) %in% c("character", "factor")) stopifnot( class( snp_id ) %in% c("character", "factor")) stopifnot(all(!is.na(gene_id))) stopifnot(all(!is.na(feature_id))) stopifnot(all(!is.na(sample_id))) stopifnot(all(!is.na(snp_id))) counts <- counts[, as.character(sample_id), drop = FALSE] counts <- as.matrix(counts) stopifnot(mode(counts) %in% "numeric") genotypes <- genotypes[, as.character(sample_id), drop = FALSE] genotypes <- as.matrix(genotypes) stopifnot(mode(genotypes) %in% "numeric") stopifnot(all(genotypes %in% c(-1, 0, 1, 2, NA))) rownames(genotypes) <- snp_id stopifnot(class(gene_ranges) == "GRanges") stopifnot(class(snp_ranges) == "GRanges") stopifnot(!is.null(names(snp_ranges))) stopifnot(!is.null(names(gene_ranges))) ### Keep genes that are in counts and in gene_ranges genes_overlap <- intersect(names(gene_ranges), gene_id) genes2keep <- gene_id %in% genes_overlap counts <- counts[genes2keep, , drop = FALSE] gene_id <- gene_id[genes2keep] feature_id <- feature_id[genes2keep] gene_ranges <- gene_ranges[genes_overlap, ] ### Keep SNPs that are in genotypes and in snp_ranges ### and make them in the same order snps_overlap <- intersect(names(snp_ranges), snp_id) genotypes <- genotypes[snps_overlap, , drop = FALSE] snp_ranges <- snp_ranges[snps_overlap, ] gene_ranges <- GenomicRanges::resize(gene_ranges, width(gene_ranges) + 2 * window, fix = "center") ## Match genes and SNPs variantMatch <- GenomicRanges::findOverlaps(gene_ranges, snp_ranges, select = "all") q <- queryHits(variantMatch) s <- subjectHits(variantMatch) genotypes <- genotypes[s, ] snp_id <- snp_id[s] gene_id_genotypes <- names(gene_ranges)[q] ### keep genes that are in counts and in genotypes genes2keep <- gene_id %in% gene_id_genotypes counts <- counts[genes2keep, , drop = FALSE] gene_id <- gene_id[genes2keep] feature_id <- feature_id[genes2keep] genes2keep <- gene_id_genotypes %in% gene_id genotypes <- genotypes[genes2keep, , drop = FALSE] gene_id_genotypes <- gene_id_genotypes[genes2keep] snp_id <- snp_id[genes2keep] ### order genes in counts and in genotypes if(class(gene_id) == "character") gene_id <- factor(gene_id, levels = unique(gene_id)) order_counts <- order(gene_id) counts <- counts[order_counts, , drop = FALSE] gene_id <- gene_id[order_counts] feature_id <- feature_id[order_counts] gene_id_genotypes <- factor(gene_id_genotypes, levels = levels(gene_id)) order_genotypes <- order(gene_id_genotypes) genotypes <- genotypes[order_genotypes, , drop = FALSE] gene_id_genotypes <- gene_id_genotypes[order_genotypes] snp_id <- snp_id[order_genotypes] colnames(counts) <- sample_id rownames(counts) <- feature_id colnames(genotypes) <- sample_id rownames(genotypes) <- snp_id inds_counts <- 1:length(gene_id) names(inds_counts) <- feature_id partitioning_counts <- split(inds_counts, gene_id) inds_genotypes <- 1:length(gene_id_genotypes) names(inds_genotypes) <- snp_id partitioning_genotypes <- split(inds_genotypes, gene_id_genotypes) counts <- new( "MatrixList", unlistData = counts, partitioning = partitioning_counts) genotypes <- new( "MatrixList", unlistData = genotypes, partitioning = partitioning_genotypes) ### Keep unique genotypes and create info about blocs inds <- 1:length(genotypes) blocks <- MatrixList(BiocParallel::bplapply(inds, blocks_per_gene, genotypes = genotypes, BPPARAM = BPPARAM)) names(blocks) <- names(genotypes) genotypes_u <- MatrixList(lapply(inds, function(g){ # g = 1 genotypes_tmp <- unique(genotypes[[g]]) rownames(genotypes_tmp) <- paste0("block_", 1:nrow(genotypes_tmp)) return(genotypes_tmp) })) names(genotypes_u) <- names(genotypes) samples <- data.frame(sample_id = sample_id) data <- new("dmSQTLdata", counts = counts, genotypes = genotypes_u, blocks = blocks, samples = samples) return(data) } ################################################################################ ### dmFilter ################################################################################ #' @param minor_allele_freq Minimal number of samples where each of the #' genotypes has to be present. #' @param BPPARAM Parallelization method used by #' \code{\link[BiocParallel]{bplapply}}. #' @details #' #' In QTL analysis, usually, we deal with data that has many more replicates #' than data from a standard differential usage assay. Our example data set #' consists of 91 samples. Requiring that genes are expressed in all samples may #' be too stringent, especially since there may be missing values in the data #' and for some genes you may not observe counts in all 91 samples. Slightly #' lower threshold ensures that we do not eliminate such genes. For example, if #' \code{min_samps_gene_expr = 70} and \code{min_gene_expr = 10}, only genes #' with expression of at least 10 in at least 70 samples are kept. Samples with #' expression lower than 10 have \code{NA}s assigned and are skipped in the #' analysis of this gene. \code{minor_allele_freq} indicates the minimal number #' of samples for the minor allele presence. Usually, it is equal to roughly 5\% #' of total samples. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' #' # -------------------------------------------------------------------------- #' # sQTL analysis - simple group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, #' minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' } #' @rdname dmFilter #' @export setMethod("dmFilter", "dmSQTLdata", function(x, min_samps_gene_expr = 0, min_samps_feature_expr = 0, min_samps_feature_prop = 0, minor_allele_freq = 0.05 * nrow(samples(x)), min_gene_expr = 0, min_feature_expr = 0, min_feature_prop = 0, BPPARAM = BiocParallel::SerialParam()){ stopifnot(min_samps_gene_expr >= 0 && min_samps_gene_expr <= ncol(x@counts)) stopifnot(min_gene_expr >= 0) stopifnot(min_samps_feature_expr >= 0 && min_samps_feature_expr <= ncol(x@counts)) stopifnot(min_feature_expr >= 0) stopifnot(min_samps_feature_prop >= 0 && min_samps_feature_prop <= ncol(x@counts)) stopifnot(min_feature_prop >= 0 && min_feature_prop <= 1) stopifnot(minor_allele_freq >= 1 && minor_allele_freq <= floor(nrow(samples(x))/2)) data_filtered <- dmSQTL_filter(counts = x@counts, genotypes = x@genotypes, blocks = x@blocks, samples = x@samples, min_samps_gene_expr = min_samps_gene_expr, min_gene_expr = min_gene_expr, min_samps_feature_expr = min_samps_feature_expr, min_feature_expr = min_feature_expr, min_samps_feature_prop = min_samps_feature_prop, min_feature_prop = min_feature_prop, minor_allele_freq = minor_allele_freq, BPPARAM = BPPARAM) return(data_filtered) }) ############################################################################### ### plotData ############################################################################### #' @param plot_type Character specifying which type of histogram to plot. Possible #' values \code{"features"}, \code{"snps"} or \code{"blocks"}. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' #' # -------------------------------------------------------------------------- #' # sQTL analysis - simple group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, #' minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' } #' @rdname plotData #' @export setMethod("plotData", "dmSQTLdata", function(x, plot_type = "features"){ stopifnot(length(plot_type) == 1) stopifnot(plot_type %in% c("features", "snps", "blocks")) switch(plot_type, features = { tt <- elementNROWS(x@counts) ggp <- dm_plotDataFeatures(tt) }, snps = { tt <- elementNROWS(x@blocks) ggp <- dm_plotDataSnps(tt) }, blocks = { tt <- elementNROWS(x@genotypes) ggp <- dm_plotDataBlocks(tt) } ) return(ggp) }) DRIMSeq/R/class_dmSQTLfit.R0000755000175200017520000001776514516005636016351 0ustar00biocbuildbiocbuild#' @include class_dmSQTLprecision.R class_dmDSfit.R NULL ################################################################################ ### dmSQTLfit class ################################################################################ #' dmSQTLfit object #' #' dmSQTLfit extends the \code{\linkS4class{dmSQTLprecision}} class by adding #' the full model Dirichlet-multinomial (DM) likelihoods, #' regression coefficients and feature proportion estimates needed for the #' transcript/exon usage QTL analysis. Full model is defined by the genotype of #' a SNP associated with a gene. Estimation takes place for all the genes and #' all the SNPs/blocks assigned to the genes. Result of \code{\link{dmFit}}. #' #' @slot fit_full List of \code{\linkS4class{MatrixList}} objects containing #' estimated feature ratios in each sample based on the full #' Dirichlet-multinomial (DM) model. #' @slot lik_full List of numeric vectors of the per gene DM full model #' likelihoods. #' @slot coef_full \code{\linkS4class{MatrixList}} with the regression #' coefficients based on the DM model. #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' #' # -------------------------------------------------------------------------- #' # sQTL analysis - simple group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, #' minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d) #' #' plotPrecision(d) #' #' ## Fit full model proportions #' d <- dmFit(d) #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmSQTLdata}}, #' \code{\linkS4class{dmSQTLprecision}}, \code{\linkS4class{dmSQTLtest}} setClass("dmSQTLfit", contains = "dmSQTLprecision", representation(fit_full = "list", lik_full = "list", coef_full = "list")) ######################################## setValidity("dmSQTLfit", function(object){ # Has to return TRUE when valid object # TODO: Add checks for other slots if(!length(object@counts) == length(object@lik_full)) return("Different number of genes in 'counts' and 'lik_full'") return(TRUE) }) ################################################################################ ### show methods ################################################################################ setMethod("show", "dmSQTLfit", function(object){ callNextMethod(object) }) ################################################################################ ### dmFit ################################################################################ #' @details In the QTL analysis, currently, genotypes are defined as numeric #' values 0, 1, and 2. When \code{one_way = TRUE}, simple multiple group fitting #' is performed. When \code{one_way = FALSE}, a regression framework is used #' with the design matrix defined by a formula \code{~ group} where group is a #' continuous (not categorical) variable with values 0, 1, and 2. #' @rdname dmFit #' @export setMethod("dmFit", "dmSQTLprecision", function(x, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ # Check parameters stopifnot(is.logical(one_way)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:3) fit <- dmSQTL_fit(counts = x@counts, genotypes = x@genotypes, precision = x@genewise_precision, one_way = one_way, group_formula = ~ group, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) return(new("dmSQTLfit", lik_full = fit[["lik"]], fit_full = fit[["fit"]], mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, counts = x@counts, genotypes = x@genotypes, blocks = x@blocks, samples = x@samples)) }) ################################################################################ ### plotProportions ################################################################################ #' @param snp_id Character indicating the ID of a SNP to be plotted. #' @details In the QTL analysis, plotting of fitted proportions is deactivated #' even when \code{plot_fit = TRUE}. It is due to the fact that neither fitted #' values nor regression coefficients are returned by the \code{dmFit} #' function as they occupy a lot of memory. #' @rdname plotProportions #' @export setMethod("plotProportions", "dmSQTLfit", function(x, gene_id, snp_id, plot_type = "boxplot1", order_features = TRUE, order_samples = TRUE, plot_fit = FALSE, plot_main = TRUE, group_colors = NULL, feature_colors = NULL){ stopifnot(gene_id %in% names(x@blocks)) if(!snp_id %in% x@blocks[[gene_id, "snp_id"]]) stop(paste0("gene ",gene_id, " and SNP ", snp_id, " do not match!")) stopifnot(plot_type %in% c("barplot", "boxplot1", "boxplot2", "lineplot", "ribbonplot")) stopifnot(is.logical(order_features)) stopifnot(is.logical(order_samples)) stopifnot(is.logical(plot_fit)) stopifnot(is.logical(plot_main)) counts_gene <- x@counts[[gene_id]] block_id <- x@blocks[[gene_id]][x@blocks[[gene_id]][, "snp_id"] == snp_id, "block_id"] group <- x@genotypes[[gene_id]][block_id, ] if(!is.null(group_colors) && plot_type %in% c("barplot", "boxplot1", "lineplot")) stopifnot(length(group_colors) == nlevels(group)) if(!is.null(feature_colors) && plot_type %in% c("boxplot2", "ribbonplot")) stopifnot(length(feature_colors) == nrow(counts_gene)) if(nrow(counts_gene) <= 1) stop("!Gene has to have at least 2 features! \n") # Remove NAs nonNAs <- !(is.na(counts_gene[1,]) | is.na(group)) counts_gene <- counts_gene[, nonNAs, drop = FALSE] group <- factor(group[nonNAs]) main <- NULL if(plot_main){ mean_expression_gene <- mean(colSums(counts_gene), na.rm = TRUE) main <- paste0(gene_id, " : ", snp_id, " : ", block_id, "\n Mean expression = ", round(mean_expression_gene)) precision_gene <- x@genewise_precision[[gene_id]][block_id] main <- paste0(main, ", Precision = ", round(precision_gene, 2)) } fit_full <- NULL if(plot_fit && length(x@fit_full) > 0){ fit_full <- x@fit_full[[gene_id]][[which(rownames(x@genotypes[[gene_id]]) == block_id)]][, nonNAs, drop = FALSE] } ggp <- dm_plotProportions(counts = counts_gene, group = group, fit_full = fit_full, main = main, plot_type = plot_type, order_features = order_features, order_samples = order_samples, group_colors = group_colors, feature_colors = feature_colors) return(ggp) }) DRIMSeq/R/class_dmSQTLprecision.R0000755000175200017520000003105214516005636017543 0ustar00biocbuildbiocbuild#' @include class_dmSQTLdata.R NULL ############################################################################### ### dmSQTLprecision class ############################################################################### #' dmSQTLprecision object #' #' dmSQTLprecision extends the \code{\linkS4class{dmSQTLdata}} by adding the #' precision estimates of Dirichlet-multinomial distribution used to model the #' feature (e.g., transcript, exon, exonic bin) counts for each gene-SNP pair in #' the QTL analysis. Result of \code{\link{dmPrecision}}. #' #' @return #' #' \itemize{ \item \code{mean_expression(x)}: Get a data frame with mean gene #' expression. \item \code{common_precision(x)}: Get common precision. \item #' \code{genewise_precision(x)}: Get a data frame with gene-wise precision.} #' #' @param x dmSQTLprecision object. #' #' @slot mean_expression Numeric vector of mean gene expression. #' @slot common_precision Numeric value of estimated common precision. #' @slot genewise_precision List of estimated gene-wise precisions. Each element #' of this list is a vector of precisions estimated for all the genotype #' blocks assigned to a given gene. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' \donttest{ #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' #' # -------------------------------------------------------------------------- #' # sQTL analysis - simple group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, #' minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d) #' #' plotPrecision(d) #' } #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmSQTLdata}}, \code{\linkS4class{dmSQTLfit}}, #' \code{\linkS4class{dmSQTLtest}} setClass("dmSQTLprecision", contains = "dmSQTLdata", representation(mean_expression = "numeric", common_precision = "numeric", genewise_precision = "list")) # ----------------------------------------------------------------------------- setValidity("dmSQTLprecision", function(object){ # Has to return TRUE when valid object! out <- TRUE if(length(object@mean_expression) > 0){ if(length(object@mean_expression) == length(object@counts)){ if(all(names(object@mean_expression) == names(object@counts))) out <- TRUE else return("Different names of 'counts' and 'mean_expression'") } else return("Unequal length of 'counts' and 'mean_expression'") } if(length(object@genewise_precision) > 0){ if(length(object@genewise_precision) == length(object@counts)){ if(all(lapply(object@genewise_precision, length) == elementNROWS(object@genotypes))) out <- TRUE else return("Different numbers of blocks in 'genotypes' and in 'genewise_precision'") } else return("Unequal number of genes in 'counts' and in 'genewise_precision'") } if(length(object@common_precision) > 0){ if(length(object@common_precision) == 1) out <- TRUE else return("'common_precision' must be a vector of length 1") } return(out) }) ################################################################################ ### accessing methods ################################################################################ #' @rdname dmSQTLprecision-class #' @export setMethod("mean_expression", "dmSQTLprecision", function(x){ data.frame(gene_id = names(x@mean_expression), mean_expression = x@mean_expression, stringsAsFactors = FALSE, row.names = NULL) }) #' @rdname dmSQTLprecision-class #' @export setMethod("common_precision", "dmSQTLprecision", function(x) x@common_precision ) #' @rdname dmSQTLprecision-class #' @export setMethod("genewise_precision", "dmSQTLprecision", function(x){ data.frame(gene_id = rep(names(x@genewise_precision), sapply(x@genewise_precision, length)), block_id = unlist(lapply(x@genewise_precision, names)), genewise_precision = unlist(x@genewise_precision), stringsAsFactors = FALSE, row.names = NULL) }) ################################################################################ ### show methods ################################################################################ setMethod("show", "dmSQTLprecision", function(object){ callNextMethod(object) cat(" mean_expression(), common_precision(), genewise_precision()\n") }) ################################################################################ ### dmPrecision ################################################################################ #' @rdname dmPrecision #' @param speed Logical. If \code{FALSE}, precision is calculated per each #' gene-block. Such calculation may take a long time, since there can be #' hundreds of SNPs/blocks per gene. If \code{TRUE}, there will be only one #' precision calculated per gene and it will be assigned to all the blocks #' matched with this gene. #' @export setMethod("dmPrecision", "dmSQTLdata", function(x, mean_expression = TRUE, common_precision = TRUE, genewise_precision = TRUE, prec_adjust = TRUE, prec_subset = 0.1, prec_interval = c(0, 1e+3), prec_tol = 1e+01, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "none", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, speed = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ ### Parameter checks: stopifnot(is.logical(mean_expression)) stopifnot(is.logical(common_precision)) stopifnot(is.logical(genewise_precision)) stopifnot(is.logical(prec_adjust)) stopifnot(length(prec_subset) == 1) stopifnot(is.numeric(prec_subset) && prec_subset > 0 && prec_subset <= 1) stopifnot(length(prec_interval) == 2) stopifnot(prec_interval[1] < prec_interval[2]) stopifnot(length(prec_tol) == 1) stopifnot(is.numeric(prec_tol) && prec_tol > 0) stopifnot(length(prec_init) == 1) stopifnot(is.numeric(prec_init)) stopifnot(prec_grid_length > 2) stopifnot(length(prec_grid_range) == 2) stopifnot(prec_grid_range[1] < prec_grid_range[2]) stopifnot(length(prec_moderation) == 1) stopifnot(prec_moderation %in% c("none", "common", "trended")) stopifnot(length(prec_prior_df) == 1) stopifnot(is.numeric(prec_prior_df) && prec_prior_df >= 0) stopifnot(length(prec_span) == 1) stopifnot(is.numeric(prec_span) && prec_span > 0 && prec_span < 1) stopifnot(is.logical(one_way)) stopifnot(is.logical(speed)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:2) if(mean_expression || (genewise_precision && prec_moderation == "trended")){ mean_expression <- dm_estimateMeanExpression(counts = x@counts, verbose = verbose) }else{ mean_expression <- numeric() } if(common_precision){ if(prec_subset < 1){ message(paste0("! Using a subset of ", prec_subset, " genes to estimate common precision !\n")) genes2keep <- sample(1:length(x@counts), max(round(prec_subset * length(x@counts)), 1), replace = FALSE) }else{ genes2keep <- 1:length(x@counts) } ### Use only one SNP per gene and a null model to make computation faster genotypes_null <- new("MatrixList", unlistData = matrix(1, nrow = length(genes2keep), ncol = ncol(x@genotypes)), partitioning = split(1:length(genes2keep), factor(names(x@genotypes[genes2keep, ]), levels = names(x@genotypes[genes2keep, ])))) common_precision <- dmSQTL_estimateCommonPrecision( counts = x@counts[genes2keep, ], genotypes = genotypes_null, prec_adjust = prec_adjust, prec_interval = prec_interval, prec_tol = prec_tol, one_way = one_way, group_formula = ~ 1, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) }else{ common_precision <- numeric() } if(genewise_precision){ if(length(common_precision)){ message("! Using common_precision = ", round(common_precision, 4), " as prec_init !") prec_init <- common_precision } if(speed){ ### Use only one SNP per gene and a null model to make computation faster G <- length(x@genotypes) inds <- 1:G genotypes_null <- new( "MatrixList", unlistData = matrix(1, nrow = G, ncol = ncol(x@genotypes)), partitioning = split(inds, factor(names(x@genotypes), levels = names(x@genotypes))) ) genewise_precision <- dmSQTL_estimateTagwisePrecision(counts = x@counts, genotypes = genotypes_null, mean_expression = mean_expression, prec_adjust = prec_adjust, prec_init = prec_init, prec_grid_length = prec_grid_length, prec_grid_range = prec_grid_range, prec_moderation = prec_moderation, prec_prior_df = prec_prior_df, prec_span = prec_span, one_way = one_way, group_formula = ~ 1, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) ### Replicate the values for all the snps genewise_precision <- relist(rep(unlist(genewise_precision), times = elementNROWS(x@genotypes)), x@genotypes@partitioning) }else{ genewise_precision <- dmSQTL_estimateTagwisePrecision(counts = x@counts, genotypes = x@genotypes, mean_expression = mean_expression, prec_adjust = prec_adjust, prec_init = prec_init, prec_grid_length = prec_grid_length, prec_grid_range = prec_grid_range, prec_moderation = prec_moderation, prec_prior_df = prec_prior_df, prec_span = prec_span, one_way = one_way, group_formula = ~ group, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) } }else{ genewise_precision <- list() } return(new("dmSQTLprecision", mean_expression = mean_expression, common_precision = common_precision, genewise_precision = genewise_precision, counts = x@counts, genotypes = x@genotypes, blocks = x@blocks, samples = x@samples)) }) ############################################################################### ### plotPrecision ############################################################################### #' @rdname plotPrecision #' @export setMethod("plotPrecision", "dmSQTLprecision", function(x){ if(!length(x@genewise_precision) == length(x@counts)) stop("Genewise precision must be estimated for each gene!") if(!length(x@genewise_precision) == length(x@mean_expression)) stop("Mean expression must be estimated for each gene!") w <- sapply(x@genewise_precision, length) mean_expression <- rep(x@mean_expression, w) nr_features <- rep(elementNROWS(x@counts), w) genewise_precision <- unlist(x@genewise_precision) if(length(x@common_precision) == 0){ common_precision <- NULL }else{ common_precision <- x@common_precision } ggp <- dm_plotPrecision(genewise_precision = genewise_precision, mean_expression = mean_expression, nr_features = nr_features, common_precision = common_precision) return(ggp) }) DRIMSeq/R/class_dmSQTLtest.R0000755000175200017520000002206014516005636016526 0ustar00biocbuildbiocbuild#' @include class_dmSQTLfit.R class_dmDStest.R NULL ############################################################################### ### dmSQTLtest class ############################################################################### #' dmSQTLtest object #' #' dmSQTLtest extends the \code{\linkS4class{dmSQTLfit}} class by adding the #' null model Dirichlet-multinomial likelihoods and the gene-level results of #' testing for differential transcript/exon usage QTLs. Result of #' \code{\link{dmTest}}. #' #' @return #' #' \itemize{ \item \code{results(x)}: Get a data frame with gene-level results. #' } #' #' @param x dmSQTLtest object. #' @param ... Other parameters that can be defined by methods using this #' generic. #' #' @slot lik_null List of numeric vectors with the per gene-snp DM null model #' likelihoods. #' @slot results_gene Data frame with the gene-level results including: #' \code{gene_id} - gene IDs, \code{block_id} - block IDs, \code{snp_id} - SNP #' IDs, \code{lr} - likelihood ratio statistics based on the DM model, #' \code{df} - degrees of freedom, \code{pvalue} - p-values estimated based on #' permutations and \code{adj_pvalue} - Benjamini & Hochberg adjusted #' p-values. #' #' @examples #' # -------------------------------------------------------------------------- #' # Create dmSQTLdata object #' # -------------------------------------------------------------------------- #' # Use subsets of data defined in the GeuvadisTranscriptExpr package #' #' library(GeuvadisTranscriptExpr) #' #' geuv_counts <- GeuvadisTranscriptExpr::counts #' geuv_genotypes <- GeuvadisTranscriptExpr::genotypes #' geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges #' geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges #' #' colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") #' colnames(geuv_genotypes)[4] <- "snp_id" #' geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) #' #' d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, #' genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, #' samples = geuv_samples, window = 5e3) #' #' # -------------------------------------------------------------------------- #' # sQTL analysis - simple group comparison #' # -------------------------------------------------------------------------- #' #' ## Filtering #' d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, #' minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) #' #' plotData(d) #' #' ## To make the analysis reproducible #' set.seed(123) #' ## Calculate precision #' d <- dmPrecision(d) #' #' plotPrecision(d) #' #' ## Fit full model proportions #' d <- dmFit(d) #' #' ## Fit null model proportions, perform the LR test to detect tuQTLs #' ## and use the permutation approach to adjust the p-values #' d <- dmTest(d) #' #' ## Plot the gene-level p-values #' plotPValues(d) #' #' ## Get the gene-level results #' head(results(d)) #' #' @author Malgorzata Nowicka #' @seealso \code{\linkS4class{dmSQTLdata}}, #' \code{\linkS4class{dmSQTLprecision}}, \code{\linkS4class{dmSQTLfit}} setClass("dmSQTLtest", contains = "dmSQTLfit", representation(lik_null = "list", results_gene = "data.frame")) ##################################### setValidity("dmSQTLtest", function(object){ # has to return TRUE when valid object! # TODO: Add more checks if(!length(object@counts) == length(object@lik_null)) return("Different number of genes in 'counts' and 'lik_null'") return(TRUE) }) ############################################################################### ### show and accessing methods ############################################################################### #' @rdname dmSQTLtest-class #' @export setMethod("results", "dmSQTLtest", function(x) x@results_gene) # ----------------------------------------------------------------------------- setMethod("show", "dmSQTLtest", function(object){ callNextMethod(object) cat(" results()\n") }) ############################################################################### ### dmTest ############################################################################### #' @param permutation_mode Character specifying which permutation scheme to #' apply for p-value calculation. When equal to \code{"all_genes"}, null #' distribution of p-values is calculated from all genes and the maximum #' number of permutation cycles is 10. When \code{permutation_mode = #' "per_gene"}, null distribution of p-values is calculated for each gene #' separately based on permutations of this individual gene. The latter #' approach may take a lot of computational time. We suggest using the first #' option. #' @rdname dmTest #' @export setMethod("dmTest", "dmSQTLfit", function(x, permutation_mode = "all_genes", one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ # Check parameters stopifnot(permutation_mode %in% c("all_genes", "per_gene")) stopifnot(is.logical(one_way)) stopifnot(length(prop_mode) == 1) stopifnot(prop_mode %in% c("constrOptim")) stopifnot(length(prop_tol) == 1) stopifnot(is.numeric(prop_tol) && prop_tol > 0) stopifnot(length(coef_mode) == 1) stopifnot(coef_mode %in% c("optim", "nlminb", "nlm")) stopifnot(length(coef_tol) == 1) stopifnot(is.numeric(coef_tol) && coef_tol > 0) stopifnot(verbose %in% 0:2) # Prepare null (one group) genotypes genotypes_null <- x@genotypes genotypes_null@unlistData[!is.na(genotypes_null@unlistData)] <- 1 # Fit the DM null model fit0 <- dmSQTL_fit(counts = x@counts, genotypes = genotypes_null, precision = x@genewise_precision, one_way = one_way, group_formula = ~ 1, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) ## Perform the LR test results_list <- lapply(1:length(x@counts), function(g){ # g = 1 ## Calculate the degrees of freedom df <- (nrow(x@counts[[g]]) - 1) * (apply(x@genotypes[[g]], 1, function(x) length(unique(x))) - 1) out <- dm_LRT(lik_full = x@lik_full[[g]], lik_null = fit0[["lik"]][[g]], df = df, verbose = FALSE) return(out) }) if(verbose) message("\n** Running permutations..\n") ### Calculate adjusted p-values using permutations switch(permutation_mode, all_genes = { ## P-value for a gene computed using all the permutations pvalues <- unlist(lapply(results_list, function(x) x[, "pvalue"])) pval_adj_perm <- dmSQTL_permutations_all_genes(x = x, pvalues = pvalues, max_nr_perm_cycles = 10, max_nr_min_nr_sign_pval = 1e3, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) pval_adj_perm <- relist(pval_adj_perm, x@lik_full) }, per_gene = { ## P-value for a gene computed using permutations of that gene pvalues <- lapply(results_list, function(x) x[, "pvalue"]) pval_adj_perm <- dmSQTL_permutations_per_gene(x = x, pvalues = pvalues, max_nr_perm = 1e6, max_nr_sign_pval = 1e2, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) } ) pval_adj_perm_BH <- relist(p.adjust(unlist(pval_adj_perm), method="BH"), pval_adj_perm) inds <- 1:length(results_list) for(i in inds){ results_list[[i]][, "pvalue"] <- pval_adj_perm[[i]] results_list[[i]][, "adj_pvalue"] <- pval_adj_perm_BH[[i]] } gene_ids <- names(x@blocks) ## Output the original SNPs results_new <- lapply(inds, function(i){ # i = 4 mm <- match(x@blocks[[i]][, "block_id"], rownames(x@genotypes[[i]])) out <- data.frame(gene_id = gene_ids[i], x@blocks[[i]], results_list[[i]][mm, , drop = FALSE], stringsAsFactors = FALSE) return(out) }) results_new <- do.call(rbind, results_new) return(new("dmSQTLtest", lik_null = fit0[["lik"]], results_gene = results_new, lik_full = x@lik_full, fit_full = x@fit_full, mean_expression = x@mean_expression, common_precision = x@common_precision, genewise_precision = x@genewise_precision, counts = x@counts, genotypes = x@genotypes, blocks = x@blocks, samples = x@samples)) }) ############################################################################### ### plotPValues ############################################################################### #' @rdname plotPValues #' @export setMethod("plotPValues", "dmSQTLtest", function(x){ ### Plot p-values for unique blocks (not SNPs) keep <- !duplicated(x@results_gene[, c("gene_id", "block_id"), drop = FALSE]) ggp <- dm_plotPValues(pvalues = x@results_gene[keep, "pvalue"]) return(ggp) }) DRIMSeq/R/class_show_utils.R0000644000175200017520000000754614516005636016733 0ustar00biocbuildbiocbuild### Functions that are used in show methods ################################################################################ #' @importFrom utils head tail show_matrix <- function(object, nhead = 2, ntail = 2){ # object is a matrix nr <- nrow(object) nc <- ncol(object) cat(class(object), " with ", nr, ifelse(nr == 1, " row and ", " rows and "), nc, ifelse(nc == 1, " column\n", " columns\n"), sep = "") if(nr > 0 && nc > 0){ if(is.null(colnames(object))){ colnames(object) <- paste0("[,", 1:ncol(object), "]") } if(is.null(rownames(object))){ rownames(object) <- paste0("[", 1:nrow(object), ",]") } if(nr <= (nhead + ntail)){ out <- object }else{ out <- do.call(rbind, list(head(object, nhead), matrix(rep.int("...", nc), 1, nc, dimnames = list(NULL, colnames(object))), tail(object, ntail))) nms <- rownames(object) if(nhead > 0) s1 <- paste0(head(nms, nhead)) if(ntail > 0) s2 <- paste0(tail(nms, ntail)) rownames(out) <- c(s1, "...", s2) } if(nc > (nhead + ntail)){ out <- do.call(cbind, list(out[, 1:nhead, drop = FALSE], matrix(rep.int("...", ifelse(nr < (nhead + ntail + 1L), min(nr, nhead + ntail), nhead + ntail + 1L)), ncol = 1, dimnames = list(NULL, "...")), out[, (nc-ntail+1):nc, drop = FALSE])) } ### print adjusted for numeric or character if(mode(object) == "numeric"){ print(out, quote = FALSE, right = TRUE, na.print = "NA") }else{ print(out, quote = TRUE, right = TRUE, na.print = "NA") } } } ################################################################################ show_numeric <- function(object, nhead = 2, ntail = 2, class = TRUE, print = TRUE){ nl <- length(object) if(class) cat(class(object), "of length", length(object), "\n") if(nl > 0){ if(nl < (nhead + ntail + 1L)) { out <- round(object, 2) } else { dots <- "..." if(!is.null(names(object))) names(dots) <- "..." out <- c(round(head(object, nhead), 2), dots , round(tail(object, ntail), 2)) } if(print) print(out, quote = FALSE, right = TRUE) else return(out) }else{ if(print) print(object) else return(object) } } ################################################################################ show_numeric_list <- function(object, nhead = 2){ nl <- length(object) cat(class(object), "of length", nl, "\n") if(nl > 0){ np <- min(nl, nhead) object <- object[1:np] if(is.null(names(object))) print_names <- paste0("[[", 1:np, "]]\n") else print_names <- paste0("$", names(object), "\n") for(i in 1:np){ cat(print_names[i]) show_numeric(object[[i]]) cat("\n") } if(np < nl){ if(is.null(names(object))) cat(paste0("[[...]]\n")) else cat(paste0("$...\n")) } }else{ print(object) } } ################################################################################ show_MatrixList_list <- function(object, nhead = 2){ nl <- length(object) cat(class(object), "of length", nl, "\n") if(nl > 0){ np <- min(nl, nhead) object <- object[1:np] if(is.null(names(object))) print_names <- paste0("[[", 1:np, "]]\n") else print_names <- paste0("$", names(object), "\n") for(i in 1:np){ cat(print_names[i]) print(object[[i]]) cat("\n") } if(np < nl){ if(is.null(names(object))) cat(paste0("[[...]]\n")) else cat(paste0("$...\n")) } }else{ print(object) } } DRIMSeq/R/dmDS_CRadjustment.R0000755000175200017520000000443214516005636016652 0ustar00biocbuildbiocbuild dmDS_CRadjustmentManyGroups_gene <- function(g, counts, ngroups, lgroups, igroups, prec, prop, verbose){ if(verbose >= 2) message(" Gene:", g) a <- dm_CRadjustmentManyGroups(y = counts[[g]], ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec[g], prop = prop[[g]]) return(a) } dmDS_CRadjustmentRegression_gene <- function(g, counts, design, prec, fit, verbose){ if(verbose >= 2) message(" Gene:", g) a <- dm_CRadjustmentRegression(y = counts[[g]], x = design, prec = prec[g], prop = fit[[g]]) return(a) } dmDS_CRadjustment <- function(counts, fit, design, precision, one_way = TRUE, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Calculating Cox-Reid adjustment.. \n") inds <- 1:length(counts) # Prepare precision if(length(precision) == 1){ prec <- rep(precision, length(inds)) } else { prec <- precision } # If the design is equivalent to a oneway layout, use a shortcut algorithm groups <- edgeR::designAsFactor(design) if(nlevels(groups) == ncol(design) && one_way){ groups <- factor(groups, labels = paste0("gr", levels(groups))) ngroups <- nlevels(groups) lgroups <- levels(groups) igroups <- lapply(lgroups, function(gr){which(groups == gr)}) names(igroups) <- lgroups # Get the column number of a first occurance of a group level figroups <- unlist(lapply(igroups, function(x){x[1]})) prop <- fit[, figroups] a <- BiocParallel::bplapply(inds, dmDS_CRadjustmentManyGroups_gene, counts = counts, ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec, prop = prop, verbose = verbose, BPPARAM = BPPARAM) names(a) <- names(counts) adj <- unlist(a) }else{ a <- BiocParallel::bplapply(inds, dmDS_CRadjustmentRegression_gene, counts = counts, design = design, prec = prec, fit = fit, verbose = verbose, BPPARAM = BPPARAM) names(a) <- names(counts) adj <- unlist(a) } time_end <- Sys.time() if(verbose >= 2) message("\n") if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") # adj is a vector of length G return(adj) } DRIMSeq/R/dmDS_estimateCommonPrecision.R0000755000175200017520000000310314516005636021101 0ustar00biocbuildbiocbuild#' @importFrom stats optimize dmDS_profileLikCommon <- function(prec, counts, design, prec_adjust = TRUE, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ if(verbose >= 2) message("Precision in optimize:", prec) adj_lik <- dmDS_profileLik(prec = prec, counts = counts, design = design, prec_adjust = prec_adjust, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) adj_lik_common <- sum(adj_lik, na.rm = TRUE) return(adj_lik_common) } dmDS_estimateCommonPrecision <- function(counts, design, prec_adjust = TRUE, prec_interval = c(0, 1e+5), prec_tol = 1e-01, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Estimating common precision.. \n") optimum <- optimize(f = dmDS_profileLikCommon, interval = prec_interval, counts = counts, design = design, prec_adjust = prec_adjust, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = max(0, verbose-1), BPPARAM = BPPARAM, maximum = TRUE, tol = prec_tol) precision <- optimum$maximum time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(precision) } DRIMSeq/R/dmDS_estimateTagwisePrecision.R0000644000175200017520000000413414516005636021256 0ustar00biocbuildbiocbuild#' @importFrom stats complete.cases dmDS_estimateTagwisePrecision <- function(counts, design, mean_expression, prec_adjust = TRUE, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "none", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Estimating genewise precision.. \n") ### Standard grid like in edgeR spline_pts <- seq(from = prec_grid_range[1], to = prec_grid_range[2], length = prec_grid_length) spline_prec <- prec_init * 2^spline_pts # Calculate the likelihood for each gene at the spline precision points loglik <- matrix(NA, nrow = length(counts), ncol = prec_grid_length) for(i in seq(prec_grid_length)){ # i = 1 loglik[, i] <- dmDS_profileLik(prec = spline_prec[i], counts = counts, design = design, prec_adjust = prec_adjust, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = max(0, verbose - 1), BPPARAM = BPPARAM) } not_nas <- complete.cases(loglik) loglik <- loglik[not_nas, , drop = FALSE] if(nrow(loglik) == 0){ precision <- rep(NA, length(counts)) names(precision) <- names(counts) return(precision) } if(prec_moderation != "none"){ mean_expression <- mean_expression[not_nas] loglik <- dm_profileLikModeration(loglik = loglik, mean_expression = mean_expression, prec_moderation = prec_moderation, prec_prior_df = prec_prior_df, prec_span = prec_span) } out <- edgeR::maximizeInterpolant(spline_pts, loglik) # Set NA for genes that tagwise prec could not be calculated precision <- rep(NA, length(counts)) names(precision) <- names(counts) precision[not_nas] <- prec_init * 2^out time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(precision) } DRIMSeq/R/dmDS_filter.R0000644000175200017520000000467314516005636015540 0ustar00biocbuildbiocbuild dmDS_filter <- function(counts, min_samps_gene_expr = 6, min_gene_expr = 10, min_samps_feature_expr = 3, min_feature_expr = 10, min_samps_feature_prop = 3, min_feature_prop = 0.01, run_gene_twice=FALSE){ inds <- which(elementNROWS(counts) > 1) counts_new <- lapply(inds, function(g){ # g = 117 # print(g) expr_features <- counts[[g]] ### no genes with no expression if(sum(expr_features, na.rm = TRUE) == 0) return(NULL) ### genes with min expression if(! sum(colSums(expr_features) >= min_gene_expr, na.rm = TRUE) >= min_samps_gene_expr ) return(NULL) ### no features with no expression features2keep <- rowSums(expr_features > 0, na.rm = TRUE) > 0 ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr_features <- expr_features[features2keep, , drop = FALSE] ### features with min expression features2keep <- rowSums(expr_features >= min_feature_expr, na.rm = TRUE) >= min_samps_feature_expr ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr_features <- expr_features[features2keep, , drop = FALSE] ### genes with zero expression samps2keep <- colSums(expr_features) > 0 & !is.na(expr_features[1, ]) if(sum(samps2keep) < max(1, min_samps_feature_prop)) return(NULL) prop <- prop.table(expr_features[, samps2keep, drop = FALSE], 2) # prop.table(matrix(c(1,0), 2, 1), 2) # prop.table(matrix(c(0,0), 2, 1), 2) # prop.table(matrix(c(0,0, 1, 0), 2, 2), 2) ### features with min proportion features2keep <- rowSums(prop >= min_feature_prop) >= min_samps_feature_prop ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr <- expr_features[features2keep, , drop = FALSE] if (run_gene_twice) { ### no genes with no expression if(sum(expr_features, na.rm = TRUE) == 0) return(NULL) ### genes with min expression if(! sum(colSums(expr_features) >= min_gene_expr, na.rm = TRUE) >= min_samps_gene_expr ) return(NULL) } return(expr) }) names(counts_new) <- names(counts)[inds] counts_new <- counts_new[!sapply(counts_new, is.null)] if(length(counts_new) == 0) stop("!No genes left after filtering!") counts_new <- MatrixList(counts_new) return(counts_new) } DRIMSeq/R/dmDS_fit.R0000755000175200017520000001610514516005636015031 0ustar00biocbuildbiocbuild# Fitting the Dirichlet-multinomial model dmDS_fitManyGroups_gene <- function(g, counts, ngroups, lgroups, igroups, prec, prop_mode, prop_tol, verbose){ if(verbose >= 2) message(" Gene:", g) f <- dm_fitManyGroups(y = counts[[g]], ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec[g], prop_mode = prop_mode, prop_tol = prop_tol) return(f) } dmDS_fitRegression_gene <- function(g, counts, design, prec, coef_mode, coef_tol, verbose){ if(verbose >= 2) message(" Gene:", g) f <- dm_fitRegression(y = counts[[g]], design = design, prec = prec[g], coef_mode = coef_mode, coef_tol = coef_tol) return(f) } dmDS_fit <- function(counts, design, precision, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Fitting the DM model.. \n") inds <- 1:length(counts) # Prepare precision if(length(precision) == 1){ prec <- rep(precision, length(inds)) } else { prec <- precision } # Approach from edgeR glmFit.default: # If the design is equivalent to a oneway layout, use a shortcut algorithm groups <- edgeR::designAsFactor(design) if(nlevels(groups) == ncol(design) && one_way && all(c(design) %in% c(0, 1))){ if(verbose) message(" Using the one way approach. \n") groups <- factor(groups, labels = paste0("gr", levels(groups))) ngroups <- nlevels(groups) lgroups <- levels(groups) igroups <- lapply(lgroups, function(gr){which(groups == gr)}) names(igroups) <- lgroups ff <- BiocParallel::bplapply(inds, dmDS_fitManyGroups_gene, counts = counts, ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec, prop_mode = prop_mode, prop_tol = prop_tol, verbose = verbose, BPPARAM = BPPARAM) names(ff) <- names(counts) lik <- unlist(lapply(ff, function(f) sum(f[["lik"]]))) prop <- MatrixList(lapply(ff, function(f) f[["prop"]])) fit <- prop[, groups] colnames(fit) <- colnames(counts) # Get the coefficients like in edgeR::mglmOneWay design_unique <- unique(design) # Use the last feature (q-th) as a denominator logit_prop <- MatrixList(lapply(ff, function(f) t(t(f[["prop"]])/f[["prop"]][nrow(f[["prop"]]), ]))) logit_prop <- log(logit_prop@unlistData) coef <- t(solve(design_unique, t(logit_prop))) coef <- new("MatrixList", unlistData = coef, partitioning = prop@partitioning) colnames(coef) <- colnames(design) }else{ if(verbose) message(" Using the regression approach. \n") ff <- BiocParallel::bplapply(inds, dmDS_fitRegression_gene, counts = counts, design = design, prec = prec, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) names(ff) <- names(counts) lik <- unlist(lapply(ff, function(f) f[["lik"]])) coef <- MatrixList(lapply(ff, function(f) f[["b"]])) colnames(coef) <- colnames(design) fit <- MatrixList(lapply(ff, function(f) f[["fit"]])) colnames(fit) <- colnames(counts) } time_end <- Sys.time() if(verbose >= 2) message("\n") if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") # fit is a MatrixList of matrices q x p # lik is a vector of length G # coef is a MatrixList of matrices q x p return(list(fit = fit, lik = lik, coef = coef)) } # ----------------------------------------------------------------------------- # Fitting the Beta-binomial model # Currently, recalculating the BB likelihoods and coefficients using the # DM fittings/proportions bbDS_fitManyGroups_gene <- function(g, counts, prop, ngroups, lgroups, igroups, prec, verbose){ if(verbose >= 2) message(" Gene:", g) f <- bb_fitManyGroups(y = counts[[g]], prop = prop[[g]], ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec[g]) return(f) } bbDS_fitRegression_gene <- function(g, counts, design, prec, fit, verbose){ if(verbose >= 2) message(" Gene:", g) f <- bb_fitRegression(y = counts[[g]], design = design, prec = prec[g], fit = fit[[g]]) return(f) } bbDS_fit <- function(counts, fit, design, precision, one_way = TRUE, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Fitting the BB model.. \n") inds <- 1:length(counts) # Prepare precision if(length(precision) == 1){ prec <- rep(precision, length(inds)) } else { prec <- precision } # Approach from edgeR: # If the design is equivalent to a oneway layout, use a shortcut algorithm groups <- edgeR::designAsFactor(design) if(nlevels(groups) == ncol(design) && one_way && all(c(design) %in% c(0, 1))){ if(verbose) message(" Using the one way approach. \n") groups <- factor(groups, labels = paste0("gr", levels(groups))) ngroups <- nlevels(groups) lgroups <- levels(groups) igroups <- lapply(lgroups, function(gr){which(groups == gr)}) names(igroups) <- lgroups # Use proportions estimated with the DM model prop <- fit[, unlist(lapply(igroups, function(x){x[1]}))] # Recalculate BB likelihoods ff <- BiocParallel::bplapply(inds, bbDS_fitManyGroups_gene, counts = counts, prop = prop, ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec, verbose = verbose, BPPARAM = BPPARAM) lik <- lapply(ff, function(f){rowSums(f[["lik"]])}) names(lik) <- NULL lik <- unlist(lik) names(lik) <- rownames(counts) # Get the coefficients like in edgeR::mglmOneWay design_unique <- unique(design) logit_prop <- MatrixList(lapply(ff, function(f){ f[["prop"]]/(1 - f[["prop"]]) })) logit_prop <- log(logit_prop@unlistData) # design_unique must be squared for solve() coef <- t(solve(design_unique, t(logit_prop))) coef <- new("MatrixList", unlistData = coef, partitioning = prop@partitioning) }else{ if(verbose) message(" Using the regression approach. \n") ff <- BiocParallel::bplapply(inds, bbDS_fitRegression_gene, counts = counts, design = design, prec = prec, fit = fit, verbose = verbose, BPPARAM = BPPARAM) names(ff) <- names(counts) lik <- unlist(lapply(ff, function(f) f[["lik"]])) names(lik) <- rownames(counts) coef <- MatrixList(lapply(ff, function(f) f[["b"]])) colnames(coef) <- colnames(design) fit <- MatrixList(lapply(ff, function(f) f[["fit"]])) colnames(fit) <- colnames(counts) } time_end <- Sys.time() if(verbose >= 2) message("\n") if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") # fit is a MatrixList of matrices q x p # lik is a vector of length nrow(counts) = total number of features # coef is a MatrixList of matrices q x p return(list(fit = fit, lik = lik, coef = coef)) } DRIMSeq/R/dmDS_profileLik.R0000644000175200017520000000137214516005636016344 0ustar00biocbuildbiocbuild dmDS_profileLik <- function(prec, counts, design, prec_adjust = TRUE, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ fit <- dmDS_fit(counts = counts, design = design, precision = prec, one_way = one_way, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) if(!prec_adjust) return(fit$lik) adj <- dmDS_CRadjustment(counts = counts, fit = fit$fit, design = design, precision = prec, one_way = one_way, verbose = verbose, BPPARAM = BPPARAM) adj_lik <- fit$lik - adj # adj_lik has length G return(adj_lik) } DRIMSeq/R/dmSQTL_CRadjustment.R0000644000175200017520000000556614516005636017135 0ustar00biocbuildbiocbuild dmSQTL_CRadjustmentManyGroups_gene <- function(g, counts, genotypes, prec, fit, verbose){ if(verbose >= 2) message(" Gene:", g) y <- counts[[g]] x <- genotypes[[g]] a <- numeric(nrow(x)) for(i in 1:nrow(x)){ # i = 2 NAs <- is.na(x[i, ]) | is.na(y[1, ]) yy <- y[, !NAs, drop = FALSE] xx <- x[i, !NAs] ff <- fit[[g]][[i]][, !NAs, drop = FALSE] groups <- factor(xx) ngroups <- nlevels(groups) lgroups <- levels(groups) igroups <- lapply(lgroups, function(gr){which(groups == gr)}) names(igroups) <- lgroups # Get the column number of a first occurance of a group level figroups <- unlist(lapply(igroups, function(x){x[1]})) a[i] <- dm_CRadjustmentManyGroups(y = yy, ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec[[g]][i], prop = ff[, figroups, drop = FALSE]) } # a vector of length #snps for gene g return(a) } #' @importFrom stats model.matrix dmSQTL_CRadjustmentRegression_gene <- function(g, counts, genotypes, group_formula = ~ group, prec, fit, verbose){ if(verbose >= 2) message(" Gene:", g) y <- counts[[g]] x <- genotypes[[g]] a <- numeric(nrow(x)) for(i in 1:nrow(x)){ # i = 2 NAs <- is.na(x[i, ]) | is.na(y[1, ]) yy <- y[, !NAs, drop = FALSE] xx <- x[i, !NAs] ff <- fit[[g]][[i]][, !NAs, drop = FALSE] design <- model.matrix(group_formula, data = data.frame(group = xx)) a[i] <- dm_CRadjustmentRegression(y = yy, x = design, prec = prec[[g]][i], prop = ff) } # a vector of length #snps for gene g return(a) } dmSQTL_CRadjustment <- function(counts, fit, genotypes, group_formula = ~ group, precision, one_way = TRUE, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Calculating Cox-Reid adjustment.. \n") inds <- 1:length(counts) # Prepare precision if(class(precision) == "numeric"){ prec <- relist(rep(precision, nrow(genotypes)), genotypes@partitioning) } else { prec <- precision } if(one_way){ adj <- BiocParallel::bplapply(inds, dmSQTL_CRadjustmentManyGroups_gene, counts = counts, genotypes = genotypes, prec = prec, fit = fit, verbose = verbose, BPPARAM = BPPARAM) names(adj) <- names(counts) }else{ adj <- BiocParallel::bplapply(inds, dmSQTL_CRadjustmentRegression_gene, counts = counts, genotypes = genotypes, group_formula = ~ group, prec = prec, fit = fit, verbose = verbose, BPPARAM = BPPARAM) names(adj) <- names(counts) } time_end <- Sys.time() if(verbose >= 2) message("\n") if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") # adj is a list of length G return(adj) } DRIMSeq/R/dmSQTL_estimateCommonPrecision.R0000644000175200017520000000337414516005636021365 0ustar00biocbuildbiocbuild dmSQTL_profileLikCommon <- function(prec, counts, genotypes, prec_adjust = TRUE, prec_interval = c(0, 1e+5), prec_tol = 1e+01, one_way = TRUE, group_formula = ~ group, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ if(verbose >= 2) message("Gamma in optimize:", prec, "\n") adj_lik <- dmSQTL_profileLik(prec = prec, counts = counts, genotypes = genotypes, prec_adjust = prec_adjust, one_way = one_way, group_formula = group_formula, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) adj_lik_common <- sum(adj_lik, na.rm = TRUE) return(adj_lik_common) } #' @importFrom stats optimize dmSQTL_estimateCommonPrecision <- function(counts, genotypes, prec_adjust = TRUE, prec_interval = c(0, 1e+5), prec_tol = 1e+01, one_way = TRUE, group_formula = ~ group, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Estimating common precision.. \n") optimum <- optimize(f = dmSQTL_profileLikCommon, interval = prec_interval, counts = counts, genotypes = genotypes, prec_adjust = prec_adjust, one_way = one_way, group_formula = group_formula, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = max(0, verbose-1), BPPARAM = BPPARAM, maximum = TRUE, tol = prec_tol) precision <- optimum$maximum time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(precision) } DRIMSeq/R/dmSQTL_estimateTagwisePrecision.R0000644000175200017520000000453114516005636021534 0ustar00biocbuildbiocbuild#' @importFrom stats complete.cases dmSQTL_estimateTagwisePrecision <- function(counts, genotypes, mean_expression, prec_adjust = TRUE, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "none", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, group_formula = ~ group, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Estimating genewise precision.. \n") ### Standard grid like in edgeR spline_pts <- seq(from = prec_grid_range[1], to = prec_grid_range[2], length = prec_grid_length) spline_prec <- prec_init * 2^spline_pts # Calculate the likelihood for each gene and snp # at the spline precision points loglik <- matrix(NA, nrow = nrow(genotypes), ncol = prec_grid_length) for(i in seq(prec_grid_length)){ # i = 1 loglik[, i] <- dmSQTL_profileLik(prec = spline_prec[i], counts = counts, genotypes = genotypes, prec_adjust = prec_adjust, one_way = one_way, group_formula = group_formula, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, verbose = max(0, verbose - 1), BPPARAM = BPPARAM) } not_nas <- complete.cases(loglik) loglik <- loglik[not_nas, , drop = FALSE] if(nrow(loglik) == 0){ precision <- rep(NA, nrow(genotypes)) names(precision) <- rownames(genotypes) precision <- relist(precision, genotypes@partitioning) return(precision) } if(prec_moderation != "none"){ mean_expression <- rep(mean_expression, elementNROWS(genotypes))[not_nas] loglik <- dm_profileLikModeration(loglik = loglik, mean_expression = mean_expression, prec_moderation = prec_moderation, prec_prior_df = prec_prior_df, prec_span = prec_span) } out <- edgeR::maximizeInterpolant(spline_pts, loglik) # Set NA for genes that tagwise prec could not be calculated precision <- rep(NA, nrow(genotypes)) names(precision) <- rownames(genotypes) precision[not_nas] <- prec_init * 2^out precision <- relist(precision, genotypes@partitioning) time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(precision) } DRIMSeq/R/dmSQTL_filter.R0000644000175200017520000001226114516005636016005 0ustar00biocbuildbiocbuild dmSQTL_filter_genotypes_per_gene <- function(g, counts_new, genotypes, minor_allele_freq){ # g = 1 counts_gene <- counts_new[[g]] genotypes_gene <- genotypes[[g]] ## NA for samples with non expressed genes and missing genotype genotypes_gene[, is.na(counts_gene[1,])] <- NA genotypes_gene[genotypes_gene == -1] <- NA ### Keep genotypes with at least minor_allele_freq number of ### variants per group; in other case replace them with NAs genotypes_gene <- apply(genotypes_gene, 1, function(x){ # x <- genotypes_gene[6,] tt <- table(x) if(length(tt) == 1) return(NULL) if(length(tt) == 2){ if(any(tt <= minor_allele_freq)) return(NULL) return(x) }else{ if(sum(tt <= minor_allele_freq) >= 2) return(NULL) x[x == names(tt[tt <= minor_allele_freq])] <- NA return(x) } }) if(!is.null(genotypes_gene)){ if(is.list(genotypes_gene)) genotypes_gene <- do.call(rbind, genotypes_gene) else genotypes_gene <- t(genotypes_gene) } return(genotypes_gene) } dmSQTL_filter <- function(counts, genotypes, blocks, samples, min_samps_gene_expr = 70, min_gene_expr = 20, min_samps_feature_expr = 5, min_feature_expr = 20, min_samps_feature_prop = 5, min_feature_prop = 0.05, minor_allele_freq = 5, run_gene_twice = FALSE, BPPARAM = BiocParallel::SerialParam()){ ######################################################## # filtering on counts, put NA for samples with low gene expression ######################################################## inds <- which(elementNROWS(counts) > 1) counts_new <- lapply(inds, function(g){ # g = 1 expr_features <- counts[[g]] ### no genes with no expression if(sum(expr_features, na.rm = TRUE) == 0) return(NULL) ### genes with min expression if(! sum(colSums(expr_features) >= min_gene_expr, na.rm = TRUE) >= min_samps_gene_expr ) return(NULL) ### no features with no expression features2keep <- rowSums(expr_features > 0, na.rm = TRUE) > 0 ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr_features <- expr_features[features2keep, , drop = FALSE] ### features with min expression features2keep <- rowSums(expr_features >= min_feature_expr, na.rm = TRUE) >= min_samps_feature_expr ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr_features <- expr_features[features2keep, , drop = FALSE] ### genes with zero expression samps2keep <- colSums(expr_features) > 0 & !is.na(expr_features[1, ]) if(sum(samps2keep) < max(1, min_samps_feature_prop)) return(NULL) ### consider only samples that have min gene expression, to other assign NAs samps2keep <- colSums(expr_features) >= min_gene_expr & !is.na(expr_features[1, ]) if(sum(samps2keep) < max(1, min_samps_feature_prop)) return(NULL) prop <- prop.table(expr_features[, samps2keep, drop = FALSE], 2) features2keep <- rowSums(prop >= min_feature_prop) >= min_samps_feature_prop ### no genes with one feature if(sum(features2keep) <= 1) return(NULL) expr <- expr_features[features2keep, , drop = FALSE] expr[, !samps2keep] <- NA if (run_gene_twice) { ### no genes with no expression if(sum(expr_features, na.rm = TRUE) == 0) return(NULL) ### genes with min expression if(! sum(colSums(expr_features) >= min_gene_expr, na.rm = TRUE) >= min_samps_gene_expr ) return(NULL) } return(expr) }) names(counts_new) <- names(counts)[inds] NULLs <- !sapply(counts_new, is.null) counts_new <- counts_new[NULLs] if(length(counts_new) == 0) stop("!No genes left after filtering!") counts_new <- MatrixList(counts_new) ######################################################## # filtering on genotypes ######################################################## genotypes <- genotypes[inds[NULLs]] blocks <- blocks[inds[NULLs], ] genotypes_new <- BiocParallel::bplapply(1:length(counts_new), dmSQTL_filter_genotypes_per_gene, counts_new = counts_new, genotypes = genotypes, minor_allele_freq = minor_allele_freq, BPPARAM = BPPARAM) names(genotypes_new) <- names(genotypes) NULLs <- !sapply(genotypes_new, is.null) genotypes_new <- genotypes_new[NULLs] if(length(genotypes_new) == 0) stop("!No SNPs left after filtering!") genotypes_new <- MatrixList(genotypes_new) counts_new <- counts_new[NULLs] blocks <- blocks[NULLs, ] ######################################################## # filtering on blocks ######################################################## inds <- 1:length(genotypes_new) blocks_new <- MatrixList(lapply(inds, function(b){ # b = 1 blocks[[b]][blocks[[b]][, "block_id"] %in% rownames(genotypes_new[[b]]), , drop = FALSE] })) names(blocks_new) <- names(genotypes_new) data <- new("dmSQTLdata", counts = counts_new, genotypes = genotypes_new, blocks = blocks_new, samples = samples) return(data) } DRIMSeq/R/dmSQTL_fit.R0000644000175200017520000001047214516005636015304 0ustar00biocbuildbiocbuild# Fitting the Dirichlet-multinomial model dmSQTL_fitManyGroups_gene <- function(g, counts, genotypes, prec, prop_mode, prop_tol, verbose){ # g = 6 if(verbose >= 2) message(" Gene:", g) y <- counts[[g]] x <- genotypes[[g]] ff <- lapply(1:nrow(x), function(i){ # i = 2 NAs <- is.na(x[i, ]) | is.na(y[1, ]) yy <- y[, !NAs, drop = FALSE] xx <- x[i, !NAs] groups <- factor(xx) ngroups <- nlevels(groups) lgroups <- levels(groups) igroups <- lapply(lgroups, function(gr){which(groups == gr)}) names(igroups) <- lgroups f <- dm_fitManyGroups(y = yy, ngroups = ngroups, lgroups = lgroups, igroups = igroups, prec = prec[[g]][i], prop_mode = prop_mode, prop_tol = prop_tol) lik <- sum(f$lik) fit <- matrix(NA, nrow = nrow(y), ncol = ncol(y)) fit[, !NAs] <- f$prop[, groups] return(list(lik = lik, fit = fit)) }) lik <- unlist(lapply(ff, function(f) f[["lik"]])) fit <- MatrixList(lapply(ff, function(f) f[["fit"]])) colnames(fit) <- colnames(counts) # lik is a vector of length nrow(x) # fit is a MatrixList of matrices q x n # DOES NOT return coef return(list(lik = lik, fit = fit)) } #' @importFrom stats model.matrix dmSQTL_fitRegression_gene <- function(g, counts, genotypes, group_formula = ~ group, prec, coef_mode, coef_tol, verbose){ if(verbose >= 2) message(" Gene:", g) y <- counts[[g]] x <- genotypes[[g]] ff <- lapply(1:nrow(x), function(i){ # i = 2 NAs <- is.na(x[i, ]) | is.na(y[1, ]) yy <- y[, !NAs, drop = FALSE] xx <- x[i, !NAs] design <- model.matrix(group_formula, data = data.frame(group = xx)) f <- dm_fitRegression(y = yy, design = design, prec = prec[[g]][i], coef_mode = coef_mode, coef_tol = coef_tol) fit <- matrix(NA, nrow = nrow(y), ncol = ncol(y)) fit[, !NAs] <- f$fit return(list(lik = f$lik, fit = fit)) }) lik <- unlist(lapply(ff, function(f) f[["lik"]])) fit <- MatrixList(lapply(ff, function(f) f[["fit"]])) colnames(fit) <- colnames(counts) # lik is a vector of length nrow(x) # fit is a MatrixList of matrices q x n # DOES NOT return coef return(list(lik = lik, fit = fit)) } dmSQTL_fit <- function(counts, genotypes, precision, one_way = TRUE, group_formula = ~ group, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, return_fit = FALSE, return_coef = FALSE, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ time_start <- Sys.time() if(verbose) message("* Fitting the DM model.. \n") inds <- 1:length(counts) # Prepare precision if(class(precision) == "numeric"){ prec <- relist(rep(precision, nrow(genotypes)), genotypes@partitioning) } else { prec <- precision } # Approach from edgeR glmFit.default: # If oneway layout, use a shortcut algorithm if(one_way){ if(verbose) message(" Using the one way approach. \n") ff <- BiocParallel::bplapply(inds, dmSQTL_fitManyGroups_gene, counts = counts, genotypes = genotypes, prec = prec, prop_mode = prop_mode, prop_tol = prop_tol, verbose = verbose, BPPARAM = BPPARAM) names(ff) <- names(counts) lik <- lapply(ff, function(f) f[["lik"]]) if(return_fit){ fit <- lapply(ff, function(f) f[["fit"]]) }else{ fit <- list() } }else{ if(verbose) message(" Using the regression approach. \n") ff <- BiocParallel::bplapply(inds, dmSQTL_fitRegression_gene, counts = counts, genotypes = genotypes, group_formula = group_formula, prec = prec, coef_mode = coef_mode, coef_tol = coef_tol, verbose = verbose, BPPARAM = BPPARAM) names(ff) <- names(counts) lik <- lapply(ff, function(f) f[["lik"]]) if(return_fit){ fit <- lapply(ff, function(f) f[["fit"]]) }else{ fit <- list() } } time_end <- Sys.time() if(verbose >= 2) message("\n") if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") # fit is a list of length G of MatrixLists # lik is a list of length G ofvectors # coef Currently, do not compute coef return(list(fit = fit, lik = lik, coef = list())) } DRIMSeq/R/dmSQTL_permutations.R0000755000175200017520000001700614516005636017257 0ustar00biocbuildbiocbuild dmSQTL_permutations_all_genes <- function(x, pvalues, max_nr_perm_cycles = 10, max_nr_min_nr_sign_pval = 1e3, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ # x dmSQTLfit object # pvalues vector of nominal p-values nas <- is.na(pvalues) pvalues <- pvalues[!nas] pvalues <- factor(pvalues) sum_sign_pval <- rep(0, length(pvalues)) nr_perm_tot <- 0 nr_perm_cycles <- 0 min_nr_sign_pval <- 0 while(nr_perm_cycles < max_nr_perm_cycles && min_nr_sign_pval < max_nr_min_nr_sign_pval){ if(verbose) message(paste0("** Running permutation cycle number ", nr_perm_cycles + 1 , "..")) ### Permute counts for all genes n <- ncol(x@counts) permutation <- sample(n, n) counts_perm <- x@counts[, permutation] # Fit the DM full model fit_full_perm <- dmSQTL_fit(counts = counts_perm, genotypes = x@genotypes, precision = x@genewise_precision, one_way = one_way, group_formula = ~ group, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) # Prepare null (one group) genotypes genotypes_null <- x@genotypes genotypes_null@unlistData[!is.na(genotypes_null@unlistData)] <- 1 # Fit the DM null model fit_null_perm <- dmSQTL_fit(counts = counts_perm, genotypes = genotypes_null, precision = x@genewise_precision, one_way = one_way, group_formula = ~ 1, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) ## Perform the LR test pval_perm <- lapply(1:length(counts_perm), function(g){ # g = 1 ## Calculate the degrees of freedom df <- (nrow(counts_perm[[g]]) - 1) * (apply(x@genotypes[[g]], 1, function(xx) length(unique(xx))) - 1) out <- dm_LRT(lik_full = fit_full_perm[["lik"]][[g]], lik_null = fit_null_perm[["lik"]][[g]], df = df, verbose = FALSE) return(out[, "pvalue"]) }) pval_perm <- unlist(pval_perm) nr_perm <- length(pval_perm) nr_perm_tot <- nr_perm_tot + nr_perm nr_perm_cycles <- nr_perm_cycles + 1 ### Count how many pval_permuted is lower than pvalues from the model nas_perm <- is.na(pval_perm) pval_perm <- pval_perm[!nas_perm] pval_perm_cut <- cut(pval_perm, c(-1, levels(pvalues), 2), right=FALSE) pval_perm_sum <- table(pval_perm_cut) pval_perm_cumsum <- cumsum(pval_perm_sum)[-length(pval_perm_sum)] names(pval_perm_cumsum) <- levels(pvalues) sum_sign_pval <- sum_sign_pval + pval_perm_cumsum[pvalues] pval_adj <- (sum_sign_pval + 1) / (nr_perm_tot + 1) min_nr_sign_pval <- min(sum_sign_pval) } pval_out <- rep(NA, length(pvalues)) pval_out[!nas] <- pval_adj # pval_out vector of permutation adjusted p-values return(pval_out) } dmSQTL_permutations_per_gene <- function(x, pvalues, max_nr_perm = 1e6, max_nr_sign_pval = 1e2, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()){ # x dmSQTLfit object # pvalues list of length G of vector with nominal p-values pvalues <- lapply(pvalues, function(x){ pval_tmp <- x[!is.na(x)] pval_tmp <- factor(pval_tmp) return(pval_tmp) }) results_width <- unlist(lapply(pvalues, length)) nas <- results_width == 0 genes2permute <- which(!nas) sum_sign_pval <- vector("list", length(pvalues)) sum_sign_pval[!nas] <- split(rep(0, sum(results_width)), factor(rep(1:length(results_width), times = results_width))) nr_perm_tot <- rep(0, length(x@counts)) nr_perm_tot[nas] <- NA min_nr_sign_pval <- rep(0, length(x@counts)) min_nr_sign_pval[nas] <- NA n <- ncol(x@counts) while(length(genes2permute) > 0){ if(verbose) message(paste0("** ", length(genes2permute), " genes left for permutation..")) ### Permute counts for all genes that need additional permutations permutation <- sample(n, n) counts_perm <- x@counts[genes2permute, permutation] genotypes <- x@genotypes[genes2permute, ] precision <- x@genewise_precision[genes2permute] # Fit the DM full model fit_full_perm <- dmSQTL_fit(counts = counts_perm, genotypes = genotypes, precision = precision, one_way = one_way, group_formula = ~ group, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) # Prepare null (one group) genotypes genotypes_null <- genotypes genotypes_null@unlistData[!is.na(genotypes_null@unlistData)] <- 1 # Fit the DM null model fit_null_perm <- dmSQTL_fit(counts = counts_perm, genotypes = genotypes_null, precision = precision, one_way = one_way, group_formula = ~ 1, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = FALSE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) ## Perform the LR test pval_perm <- lapply(1:length(counts_perm), function(g){ # g = 1 ## Calculate the degrees of freedom df <- (nrow(counts_perm[[g]]) - 1) * (apply(genotypes[[g]], 1, function(xx) length(unique(xx))) - 1) out <- dm_LRT(lik_full = fit_full_perm[["lik"]][[g]], lik_null = fit_null_perm[["lik"]][[g]], df = df, verbose = FALSE) return(out[, "pvalue"]) }) ### Count how many pval_perm is lower than pvalues from the model update_nr_sign_pval <- lapply(1:length(pval_perm), function(i){ # i = 1 pval_perm_gene <- pval_perm[[i]] pval_perm_gene <- pval_perm_gene[!is.na(pval_perm_gene)] pval_perm_cut <- cut(pval_perm_gene, c(-1, levels(pvalues[[genes2permute[i]]]), 2), right=FALSE) pval_perm_sum <- table(pval_perm_cut) pval_perm_cumsum <- cumsum(pval_perm_sum)[-length(pval_perm_sum)] names(pval_perm_cumsum) <- levels(pvalues[[genes2permute[i]]]) nr_sign_pval <- pval_perm_cumsum[pvalues[[genes2permute[i]]]] names(nr_sign_pval) <- NULL return(nr_sign_pval) }) ### Update values in sum_sign_pval for(i in 1:length(update_nr_sign_pval)){ sum_sign_pval[[genes2permute[i]]] <- sum_sign_pval[[genes2permute[i]]] + update_nr_sign_pval[[i]] } nr_perm <- unlist(lapply(pval_perm, length)) nr_perm_tot[genes2permute] <- nr_perm_tot[genes2permute] + nr_perm min_nr_sign_pval[genes2permute] <- unlist(lapply(sum_sign_pval[genes2permute], min)) ### Update genes2permute genes2permute <- which(nr_perm_tot < max_nr_perm & min_nr_sign_pval < max_nr_sign_pval) } ### Calculate permutation adjusted p-values pval_adj <- lapply(1:length(pvalues), function(i){ pval_tmp <- pvalues[[i]] nas <- is.na(pval_tmp) if(sum(!nas) == 0) return(pval_tmp) pval_tmp[!nas] <- (sum_sign_pval[[i]] + 1) / (nr_perm_tot[i] + 1) return(pval_tmp) }) # pval_adj list of length G with vectors of permutation adjusted p-values return(pval_adj) } DRIMSeq/R/dmSQTL_profileLik.R0000644000175200017520000000171614516005636016623 0ustar00biocbuildbiocbuild dmSQTL_profileLik <- function(prec, counts, genotypes, prec_adjust = TRUE, one_way = TRUE, group_formula = ~ group, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = FALSE, BPPARAM = BiocParallel::SerialParam()){ fit <- dmSQTL_fit(counts = counts, genotypes = genotypes, precision = prec, one_way = one_way, group_formula = group_formula, prop_mode = prop_mode, prop_tol = prop_tol, coef_mode = coef_mode, coef_tol = coef_tol, return_fit = TRUE, return_coef = FALSE, verbose = verbose, BPPARAM = BPPARAM) if(!prec_adjust) return(unlist(fit$lik)) adj <- dmSQTL_CRadjustment(counts = counts, fit = fit$fit, genotypes = genotypes, group_formula = group_formula, precision = prec, one_way = one_way, verbose = verbose, BPPARAM = BPPARAM) adj_lik <- unlist(fit$lik) - unlist(adj) # adj_lik is a vector containing all the genes and snps return(adj_lik) } DRIMSeq/R/dm_CRadjustmentManyGroups.R0000755000175200017520000000112714516005636020446 0ustar00biocbuildbiocbuild dm_CRadjustmentManyGroups <- function(y, ngroups, lgroups, igroups, prec, prop){ # y can not have any rowSums(y) == 0 - assured during dmFilter # prop matrix q x ngroups if(any(is.na(prop[1, ]))) return(NA) adj <- numeric(ngroups) for(gr in 1:ngroups){ # gr=1 prop_tmp <- prop[, gr] y_tmp <- y[, igroups[[gr]], drop = FALSE] a <- dm_CRadjustmentOneGroup(y = y_tmp, prec, prop = prop_tmp) adj[gr] <- a } adj <- sum(adj) if(is.na(adj)) return(NA) if(abs(adj) == Inf) return(NA) return(adj) } DRIMSeq/R/dm_CRadjustmentOneGroup.R0000755000175200017520000000177214516005636020106 0ustar00biocbuildbiocbuild dm_CRadjustmentOneGroup <- function(y, prec, prop){ # y martix q x n # prop vector of length q # If something is wrong, return NAs if(any(is.na(prop))) return(NA) q <- nrow(y) # NAs for genes with one feature if(q < 2 || is.na(prec)) return(NA) # Check for 0s in rows (features) keep_row <- rowSums(y) > 0 # There must be at least two non-zero features if(sum(keep_row) < 2) return(NA) # Last feature can not be zero since # we use the last feature as a denominator in logit if(keep_row[q] == 0) return(NA) y <- y[keep_row, , drop=FALSE] q <- nrow(y) # Check for 0s in columns (replicates) keep_col <- colSums(y) > 0 y <- y[, keep_col, drop=FALSE] prop <- prop[keep_row] n <- ncol(y) H <- dm_HessianG(prop = prop[-q], prec, y) adj <- log(det(n * (- H) ))/2 ## with Gamma functions ## if prop is NULL then: # Error in is.data.frame(x) : # dims [product 6] do not match the length of object [0] return(adj) } DRIMSeq/R/dm_CRadjustmentRegression.R0000755000175200017520000000177314516005636020471 0ustar00biocbuildbiocbuild #' @importFrom stats optimHess dm_CRadjustmentRegression <- function(y, x, prec, prop){ # prop q x n matrix of fitted proportions # y q x n matrix # x n x p matrix with the design # y can not have any rowSums(y) == 0 - assured during dmFilter if(any(is.na(prop[1, ]))) return(NA) prop <- t(prop) # n x q n <- nrow(prop) q <- ncol(prop) H <- dm_Hessian_regG_prop(y = t(y), prec = prec, prop = prop, x = x) adj <- log(det(n * (-H))) / 2 ## If the above calculation returns NA, try optimHess() if(is.na(adj)){ # Recalculate betas from proportions and the design logit_prop <- log(prop / prop[, q]) # n x q par <- c(MASS::ginv(x) %*% logit_prop[, -q, drop = FALSE]) # Maximization H <- optimHess(par = par, fn = dm_lik_regG, gr = dm_score_regG, x = x, prec = prec, y = y) adj <- log(det(n * (-H))) / 2 if(is.na(adj)) return(NA) } if(abs(adj) == Inf) return(NA) return(adj) } DRIMSeq/R/dm_LRT.R0000644000175200017520000000142214516005636014452 0ustar00biocbuildbiocbuild#' @importFrom stats pchisq p.adjust dm_LRT <- function(lik_full, lik_null, df, verbose = FALSE){ if(verbose) message("* Calculating likelihood ratio statistics.. \n") time_start <- Sys.time() lr <- 2*(lik_full - lik_null) pvalue <- pchisq(lr, df = df , lower.tail = FALSE) adj_pvalue <- p.adjust(pvalue, method="BH") table <- matrix(c(lr, df, pvalue, adj_pvalue), ncol = 4, byrow = FALSE) colnames(table) <- c("lr", "df", "pvalue", "adj_pvalue") # table <- data.frame(lr = lr, df = df, # pvalue = pvalue, adj_pvalue = adj_pvalue, # stringsAsFactors = FALSE) rownames(table) <- names(lik_full) time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(table) } DRIMSeq/R/dm_core_Hessian.R0000644000175200017520000001171514516005636016421 0ustar00biocbuildbiocbuild############################################################################## # Hessian for q-1 parameters -- with gamma functions ############################################################################## dm_HessianG <- function(prop, prec, y){ # prop has length of q-1 # prec has length 1 # y has q rows and n columns q <- nrow(y) n <- ncol(y) Djj <- rep(0, q-1) propq <- 1-sum(prop) yq <- y[q, ] y <- y[-q, , drop=FALSE] Djl <- prec^2 * sum(trigamma(yq + propq * prec) - trigamma(propq * prec)) Djj <- prec^2 * rowSums(trigamma(y + prop * prec) - trigamma(prop * prec)) H <- matrix(Djl, q-1, q-1) diag(H) <- diag(H) + Djj # H martix (q-1) x (q-1) return(H) } dm_Hessian_regG_prop <- function(y, prec, prop, x){ # y n x q matrix !!! # prop n x q matrix of fitted proportions # x n x p matrix with the design q <- ncol(y) p <- ncol(x) prop_prec <- prop * prec # Some calculations for later ldg_y <- digamma(y + prop_prec) ldg <- digamma(prop_prec) ldgp_y <- ldg_y * prop ldgp_y_sum <- rowSums(ldgp_y) ldgp <- ldg * prop ldgp_sum <- rowSums(ldgp) ltgp_y <- trigamma(y + prop_prec) * prop * prec ltgp <- trigamma(prop_prec) * prop * prec ltgpp_y <- ltgp_y * prop ltgpp_y_sum <- rowSums(ltgpp_y) ltgpp <- ltgp * prop ltgpp_sum <- rowSums(ltgpp) H <- matrix(0, p*(q-1), p*(q-1)) rownames(H) <- colnames(H) <- paste0(rep(colnames(y)[-q], each = p), ":", rep(colnames(x), q-1)) jp_index <- matrix(1:p, nrow = q-1, ncol = p, byrow = TRUE) + p * 0:(q-2) for(jp in 1:(q-1)){ for(jpp in 1:jp){ # jp = 1; jpp = 1 W <- prec * ( - prop[, jp] * prop[, jpp] * (-ldgp_y_sum + ldg_y[, jp] + ldgp_sum - ldg[, jp]) + prop[, jp] * (ltgpp_y_sum * prop[, jpp] - ltgpp_y[, jpp] + ldgp_y_sum * prop[, jpp] - ldgp_y[, jpp] - ltgp_y[, jp] * prop[, jpp] - ltgpp_sum * prop[, jpp] + ltgpp[, jpp] - ldgp_sum * prop[, jpp] + ldgp[, jpp] + ltgp[, jp] * prop[, jpp]) ) if(jp == jpp){ W <- W + prec * ( prop[, jp] * (-ldgp_y_sum + ldg_y[, jp] + ldgp_sum - ldg[, jp]) + prop[, jp] * (ltgp_y[, jp] + ltgp[, jp]) ) } h <- t(x) %*% (W * x) H[jp_index[jp, ], jp_index[jpp, ]] <- h # Use the fact that H is symetric if(!jp == jpp){ H[jp_index[jpp, ], jp_index[jp, ]] <- t(h) } } } # H martix p(q-1) x p(q-1) return(H) } dm_Hessian_regG <- function(b, x, prec, y){ ## b has length of (q-1) * p ## x is a matrix n x p ## y has q rows and n columns y <- t(y) # n x q q <- ncol(y) p <- ncol(x) b <- matrix(b, p, q-1) # p x (q-1) z <- exp(x %*% b) # n x (q-1) prop_qm1 <- z/(1 + rowSums(z)) prop <- cbind(prop_qm1, 1 - rowSums(prop_qm1)) # n x q H <- dm_Hessian_regG_prop(y = y, prec = prec, prop = prop, x = x) return(H) } # Hessian for the multinomial distribution m_Hessian_regG <- function(b, x, y){ ## b has length of (q-1) * p ## x is a matrix n x p ## y has q rows and n columns y <- t(y) # n x q q <- ncol(y) p <- ncol(x) b <- matrix(b, p, q-1) # p x (q-1) z <- exp(x %*% b) # n x (q-1) prop_qm1 <- z/(1 + rowSums(z)) prop <- cbind(prop_qm1, 1 - rowSums(prop_qm1)) # n x q m <- rowSums(y) # n H <- matrix(0, p*(q-1), p*(q-1)) rownames(H) <- colnames(H) <- paste0(rep(colnames(y)[-q], each = p), ":", rep(colnames(x), q-1)) jp_index <- matrix(1:p, nrow = q-1, ncol = p, byrow = TRUE) + p * 0:(q-2) for(jp in 1:(q-1)){ for(jpp in 1:jp){ # jp = 1; jpp = 1 W <- m * prop[, jp] * (prop[, jpp] - as.numeric(jp == jpp)) h <- t(x) %*% (W * x) H[jp_index[jp, ], jp_index[jpp, ]] <- h # Use the fact that H is symetric if(!jp == jpp){ H[jp_index[jpp, ], jp_index[jp, ]] <- t(h) } } } # H martix p(q-1) x p(q-1) return(H) } ############################################################################## # Hessian for q-1 parameters -- with sums ############################################################################## dm_Hessian <- function(prop, prec, y){ # prop has length of q-1 # prec has length 1 # y has q rows and n columns q <- nrow(y) n <- ncol(y) propq <- 1 - sum(prop) Djj <- rep(0, q-1) Djl <- 0 for(i in 1:n){ # i=1 if(y[q, i] == 0){ Djl <- Djl + 0 }else{ Djl <- Djl + sum(-prec^2 / (propq * prec + 1:y[q, i] - 1) ^2) } for(j in 1:(q-1)){ # j=1 if(y[j,i] == 0){ Djj[j] <- Djj[j] + 0 }else{ Djj[j] <- Djj[j] + sum(-prec^2 / (prop[j] * prec + 1:y[j,i] - 1) ^2) } } } H <- matrix(Djl, q-1, q-1) diag(H) <- diag(H) + Djj # H martix (q-1) x (q-1) return(H) } DRIMSeq/R/dm_core_colorb.R0000644000175200017520000000104114516005636016276 0ustar00biocbuildbiocbuildcolorb <- function(n){ clrs <- c("dodgerblue3", "maroon2", "forestgreen", "darkorange1" , "blueviolet", "firebrick2", "deepskyblue", "orchid2", "chartreuse3", "gold", "slateblue1", "tomato" , "blue", "magenta", "green3", "yellow", "purple3", "red" ,"darkslategray1", "lightpink1", "lightgreen", "khaki1", "plum3", "salmon") nc <- length(clrs) if(n > nc) clrs <- rep(clrs, ceiling(n/nc)) clrs[1:n] # colorRampPalette(clrs)(n) } # nb <- 24 # barplot(rep(1, nb), col = colorb(nb)) # dev.off() DRIMSeq/R/dm_core_deviance.R0000644000175200017520000000127414516005636016604 0ustar00biocbuildbiocbuild############################################################################## ## Computes the deviance -- with gamma functions -- for q-1 parameters ############################################################################## dm_devG <- function(prop, prec, y){ ## prop has length of q-1 ## prec has length 1 ## y has q rows and n columns prop <- c(prop, 1 - sum(prop)) ll_mod <- sum(lgamma(y + prop * prec) - lgamma(prop * prec) , na.rm = TRUE ) prop_sat <- y/matrix(colSums(y), nrow(y), ncol(y), byrow = TRUE) ll_sat <- sum(lgamma(y + prop_sat * prec) - lgamma(prop_sat * prec) , na.rm = TRUE) # Inf for y = 0 D <- 2 * (ll_sat - ll_mod) return(D) } DRIMSeq/R/dm_core_lik.R0000644000175200017520000000715014516005636015604 0ustar00biocbuildbiocbuild############################################################################## ## Computes the DM log-likelihood -- with gamma functions -- for q-1 parameters ############################################################################## dm_likG <- function(prop, prec, y){ # prop has length of q-1 # prec has length 1 # y has q rows and n columns # This function returns likelihhod without normalizing component, # but it is OK for optimization and the LR test n <- ncol(y) m <- colSums(y) prop <- c(prop, 1 - sum(prop)) l <- n * lgamma(prec) - sum(lgamma(m + prec)) + sum( colSums( lgamma(y + prop * prec) - lgamma(prop * prec) ) ) # normalizing_part <- sum(lgamma(m + 1) - colSums(lgamma(y + 1))) return(l) } dm_likG_neg <- function(prop, prec, y) -dm_likG(prop, prec, y) dm_lik_regG_prop <- function(y, prec, prop){ # y n x q matrix !!! # prop n x q matrix of fitted proportions n <- nrow(y) m <- rowSums(y) l <- n * lgamma(prec) - sum(lgamma(m + prec)) + sum(rowSums(lgamma(y + prec * prop) - lgamma(prop * prec))) # normalizing_part <- sum(lgamma(m + 1) - rowSums(lgamma(y + 1))) return(l) } dm_lik_regG <- function(b, x, prec, y){ ## b has length of (q-1) * p ## x is a matrix n x p ## prec has length 1 ## y q x n matrix ## This function returns likelihhod without normalizing component, ## but it is OK for optimization and the LR test y <- t(y) # n x q # Get prop from x and b q <- ncol(y) p <- ncol(x) b <- matrix(b, p, q-1) z <- exp(x %*% b) prop <- z/(1 + rowSums(z)) # n x (q-1) prop <- cbind(prop, 1 - rowSums(prop)) l <- dm_lik_regG_prop(y = y, prec = prec, prop = prop) return(l) } dm_lik_regG_neg <- function(b, design, prec, y) -dm_lik_regG(b, x = design, prec, y) ############################################################################## ## Computes the DM log-likelihood -- with sums -- for q-1 parameters ############################################################################## dm_lik <- function(prop, prec, y){ # prop has length q-1 # prec has length 1 # y has q rows and n columns # This function returns likelihhod without normalizing component, # but it is OK for optimization and the LR test q <- nrow(y) n <- ncol(y) m <- colSums(y) prop <- c(prop, 1 - sum(prop)) l <- 0 for(i in 1:n){ # i=1 l <- l - sum(log(prec + 1:m[i] - 1)) for(j in 1:q){ # j=3 if(y[j, i] == 0){ lji <- 0 }else{ lji <- sum(log(prop[j] * prec + 1:y[j, i] - 1)) } l <- l + lji } } return(l) } ############################################################################## ## Computes the BB log-likelihood -- with gamma functions -- for q parameters ############################################################################## bb_likG <- function(prop, prec, y){ # prop has length of q # prec has length 1 # y has q rows and n number of columns m <- colSums(y) q <- length(prop) l <- rep(NA, q) for(i in 1:q){ l[i] <- dm_likG(prop = prop[i], prec = prec, y = rbind(y[i, ], m - y[i, ])) } # l vector of length q return(l) } bb_lik_regG_prop <- function(y, prec, prop){ # y n x q matrix !!! # prop n x q matrix of fitted proportions m <- rowSums(y) q <- ncol(prop) l <- rep(NA, q) for(i in 1:q){ l[i] <- dm_lik_regG_prop(y = cbind(y[, i], m - y[, i]), prec = prec, prop = cbind(prop[, i], 1 - prop[, i])) } # l vector of length q return(l) } DRIMSeq/R/dm_core_score.R0000644000175200017520000000440314516005636016136 0ustar00biocbuildbiocbuild############################################################################## # Score-function for q-1 parameters -- with gamma functions ############################################################################## dm_scoreG <- function(prop, prec, y){ # prop has length of q-1 # prec has length 1 # y has q rows and n columns q <- nrow(y) n <- ncol(y) yq <- y[q,] y <- y[-q, , drop=FALSE] propq <- 1-sum(prop) S <- prec * rowSums( digamma(y + prop * prec) - digamma(prop * prec) - matrix(digamma(yq + prec * propq) - digamma(prec * propq), nrow = q-1, ncol = n, byrow = TRUE) ) return(S) } dm_scoreG_neg <- function(prop, prec, y) -dm_scoreG(prop, prec, y) dm_score_regG <- function(b, x, prec, y){ ## b has length of (q-1) * p ## x is a matrix n x p ## prec has length 1 ## y has q rows and n columns y <- t(y) # n x q n <- nrow(x) q <- ncol(y) p <- ncol(x) b <- matrix(b, p, q-1) # p x (q-1) z <- exp(x %*% b) prop_qm1 <- z/(1 + rowSums(z)) prop <- cbind(prop_qm1, 1 - rowSums(prop_qm1)) y_qm1 <- y[, -q, drop = FALSE] # n x (q-1) S <- t(x) %*% (prec * prop_qm1 * (- rowSums(digamma(y + prop*prec) * prop) + digamma(y_qm1 + prop_qm1*prec) + rowSums(digamma(prop*prec) * prop) - digamma(prop_qm1*prec))) # p x (q-1) return(c(S)) } dm_score_regG_neg <- function(b, design, prec, y) -dm_score_regG(b, x = design, prec, y) ############################################################################## # Score-function for q-1 parameters -- with sums ############################################################################## dm_score <- function(prop, prec, y){ # prop has length of q-1 # prec has length 1 # y has q rows and n columns q <- nrow(y) n <- ncol(y) propq <- 1 - sum(prop) S <- rep(0, q-1) for(i in 1:n){ # i=1 if(y[q, i] == 0){ Sqi <- 0 }else{ Sqi <- sum(prec / (propq * prec + 1:y[q, i] - 1)) } for(j in 1:(q-1)){ # j=1 if(y[j, i] == 0){ Sji <- 0 }else{ Sji <- sum(prec / (prop[j] * prec + 1:y[j, i] - 1)) } S[j] <- S[j] + Sji } S <- S - Sqi } return(S) } DRIMSeq/R/dm_estimateMeanExpression.R0000644000175200017520000000101714516005636020505 0ustar00biocbuildbiocbuild dm_estimateMeanExpression <- function(counts, verbose = FALSE){ # Calculate mean expression of genes time_start <- Sys.time() if(verbose) message("* Calculating mean gene expression.. \n") inds <- 1:length(counts) mean_expression <- unlist(lapply(inds, function(g){ mean(colSums(counts[[g]]), na.rm = TRUE) })) names(mean_expression) <- names(counts) time_end <- Sys.time() if(verbose) message("Took ", round(time_end - time_start, 4), " seconds.\n") return(mean_expression) } DRIMSeq/R/dm_fitManyGroups.R0000644000175200017520000000353414516005636016626 0ustar00biocbuildbiocbuild dm_fitManyGroups <- function(y, ngroups, lgroups, igroups, prec, prop_mode = "constrOptim", prop_tol = 1e-12){ # y can not have any rowSums(y) == 0 - assured during dmFilter q <- nrow(y) prop <- matrix(NA, nrow = q, ncol = ngroups) colnames(prop) <- lgroups rownames(prop) <- rownames(y) lik <- rep(NA, ngroups) names(lik) <- lgroups if(q < 2 || is.na(prec)) return(list(prop = prop, lik = lik)) for(gr in 1:ngroups){ # gr = 1 fit_gr <- dm_fitOneGroup(y = y[, igroups[[gr]], drop = FALSE], prec = prec, prop_mode = prop_mode, prop_tol = prop_tol) if(is.na(fit_gr[["lik"]])) { prop <- matrix(NA, nrow = q, ncol = ngroups) colnames(prop) <- lgroups rownames(prop) <- rownames(y) lik <- rep(NA, ngroups) names(lik) <- lgroups return(list(prop = prop, lik = lik)) } prop[, gr] <- fit_gr[["prop"]] lik[gr] <- fit_gr[["lik"]] } # prop and lik can have NAs # prop matrix q x ngroups # lik vector of length ngroups return(list(prop = prop, lik = lik)) } bb_fitManyGroups <- function(y, ngroups, lgroups, igroups, prec, prop){ # This function calculates BB likelihoods # Proportions prop are estimated with the DM model # y can not have any rowSums(y) == 0 - assured during dmFilter q <- nrow(y) lik <- matrix(NA, nrow = q, ncol = ngroups) colnames(lik) <- lgroups if(is.na(prec)) return(list(prop = prop, lik = lik)) for(gr in 1:ngroups){ # gr = 1 fit_gr <- bb_fitOneGroup(y = y[, igroups[[gr]], drop = FALSE], prec = prec, prop = prop[, gr]) lik[, gr] <- fit_gr[["lik"]] } lik[rowSums(is.na(lik)) > 0, ] <- NA # prop and lik can have NAs # prop matrix q x ngroups # lik matrix q x ngroups return(list(prop = prop, lik = lik)) } DRIMSeq/R/dm_fitOneGroup.R0000755000175200017520000000650014516005636016257 0ustar00biocbuildbiocbuild############################################################################## ## estimate prop for given precision ############################################################################## #' @importFrom stats constrOptim dm_fitOneGroup <- function(y, prec, prop_mode = "constrOptim", prop_tol = 1e-12){ # y matrix q x n # If something is wrong, return NAs q <- nrow(y) # NAs for genes with one feature if(q < 2 || is.na(prec)) return(list(prop = rep(NA, q), lik = NA)) # Check for 0s in rows (features) keep_row <- rowSums(y) > 0 # There must be at least two non-zero features if(sum(keep_row) < 2) return(list(prop = rep(NA, q), lik = NA)) # Last feature can not be zero since # we use the last feature as a denominator in logit if(keep_row[q] == 0) return(list(prop = rep(NA, q), lik = NA)) y <- y[keep_row, , drop=FALSE] q <- nrow(y) # Check for 0s in columns (replicates) keep_col <- colSums(y) > 0 y <- y[, keep_col, drop=FALSE] prop_init <- rowSums(y)/sum(y) # If there is only one replicate, use empirical props as output if(sum(keep_col) == 1){ lik <- dm_likG(prop = prop_init[-q], prec = prec, y = y) keep_row[keep_row] <- prop_init prop <- keep_row return(list(prop = prop, lik = lik)) } switch(prop_mode, constrOptim = { ### Must have constraint for SUM prop = 1 --> ### sum(prop) < 1 + eps & sum(prop) > 1 - eps ui <- rbind(diag(rep(1, q-1), q-1), diag(rep(-1, q-1), q-1), rep(-1, q-1)) ci <- c(rep(0, q-1), rep(-1, q-1), -1 + .Machine$double.eps) # ui <- rbind(diag(rep(1, q-1)), diag(rep(-1, q-1))) # ci <- c(rep(0, q-1), rep(-1, q-1)) # Maximization co <- constrOptim(theta = prop_init[-q], f = dm_likG, grad = dm_scoreG, ui = ui, ci = ci, control = list(fnscale = -1, reltol = prop_tol), method = "BFGS", prec = prec, y = y) if(co$convergence == 0){ prop <- co$par prop <- c(prop, 1 - sum(prop)) lik <- co$value }else{ return(list(prop = rep(NA, length(keep_row)), lik = NA)) } }) keep_row[keep_row] <- prop prop <- keep_row # prop numeric vector of length q # lik numeric of lenght 1 return(list(prop = prop, lik = lik)) } bb_fitOneGroup <- function(y, prec, prop){ # Recalculates likelihood for BB, where prop is estimated with DM q <- nrow(y) # BB lik only for non-NA prop from DM if(any(is.na(prop))) return(list(prop = rep(NA, q), lik = rep(NA, q))) # NAs for genes with one feature if(q < 2 || is.na(prec)) return(list(prop = rep(NA, q), lik = rep(NA, q))) # Check for 0s in rows (features with zero proportions) keep_row <- rowSums(y) > 0 # Must be at least two non zero features if(sum(keep_row) < 2) return(list(prop = rep(NA, q), lik = rep(NA, q))) y <- y[keep_row, , drop=FALSE] prop <- prop[keep_row] # Check for 0s in columns (replicates) keep_col <- colSums(y) > 0 y <- y[, keep_col, drop=FALSE] lik <- rep(NA, q) lik[keep_row] <- bb_likG(prop = prop, prec = prec, y = y) keep_row[keep_row] <- prop prop <- keep_row # prop numeric vector of length q # lik numeric vector of length q return(list(prop = prop, lik = lik)) } DRIMSeq/R/dm_fitRegression.R0000755000175200017520000000771014516005636016645 0ustar00biocbuildbiocbuild #' @importFrom stats optim nlminb nlm dm_fitRegression <- function(y, design, prec, coef_mode = "optim", coef_tol = 1e-12){ # y can not have any rowSums(y) == 0 - assured during dmFilter q <- nrow(y) p <- ncol(design) n <- ncol(y) # NAs for genes with one feature if(q < 2 || is.na(prec)){ b <- matrix(NA, nrow = q, ncol = p) prop <- matrix(NA, nrow = q, ncol = n) rownames(prop) <- rownames(y) rownames(b) <- rownames(y) return(list(b = b, lik = NA, fit = prop)) } # Get the initial values for b # Add 1 to get rid of NaNs and Inf and -Inf values in logit # Double check if this approach is correct!!! # Alternative, use 0s: b_init = rep(0, p*(q-1)) yt <- t(y) + 1 # n x q prop <- yt / rowSums(yt) # n x q logit_prop <- log(prop / prop[, q]) b_init <- c(MASS::ginv(design) %*% logit_prop[, -q, drop = FALSE]) switch(coef_mode, optim = { # Maximization co <- optim(par = b_init, fn = dm_lik_regG, gr = dm_score_regG, x = design, prec = prec, y = y, method = "BFGS", control = list(fnscale = -1, reltol = coef_tol)) if(co$convergence == 0){ b <- rbind(t(matrix(co$par, p, q-1)), rep(0, p)) lik <- co$value }else{ b <- matrix(NA, nrow = q, ncol = p) lik <- NA } }, nlminb = { # Minimization co <- nlminb(start = b_init, objective = dm_lik_regG_neg, gradient = dm_score_regG_neg, hessian = NULL, design = design, prec = prec, y = y, control = list(rel.tol = coef_tol)) if(co$convergence == 0){ b <- rbind(t(matrix(co$par, p, q-1)), rep(0, p)) lik <- -co$objective }else{ b <- matrix(NA, nrow = q, ncol = p) lik <- NA } }, nlm = { # Minimization co <- nlm(f = dm_lik_regG_neg, p = b_init, design = design, prec = prec, y = y) if(co$code < 5){ b <- rbind(t(matrix(co$estimate, p, q-1)), rep(0, p)) lik <- -co$minimum }else{ b <- matrix(NA, nrow = q, ncol = p) lik <- NA } } ) # Compute the fitted proportions if(!is.na(lik)){ z <- exp(design %*% t(b[-q, , drop = FALSE])) prop <- z/(1 + rowSums(z)) # n x (q-1) prop <- t(cbind(prop, 1 - rowSums(prop))) # q x n }else{ prop <- matrix(NA, nrow = q, ncol = n) } rownames(prop) <- rownames(y) rownames(b) <- rownames(y) # b matrix q x p # lik vector of length 1 # fit matrix q x n return(list(b = b, lik = lik, fit = prop)) } # ----------------------------------------------------------------------------- # Fitting the Beta-binomial model # Currently, recalculating the BB likelihoods and coefficients using the # DM fittings/proportions bb_fitRegression <- function(y, design, prec, fit){ # y can not have any rowSums(y) == 0 - assured during dmFilter q <- nrow(y) p <- ncol(design) n <- ncol(y) # NAs for genes with one feature if(q < 2 || is.na(prec)){ b <- matrix(NA, nrow = q, ncol = p) prop <- matrix(NA, nrow = q, ncol = n) rownames(prop) <- rownames(y) rownames(b) <- rownames(y) return(list(b = b, lik = rep(NA, q), fit = prop)) } y <- t(y) # n x q prop <- t(fit) # n x q lik <- bb_lik_regG_prop(y = y, prec = prec, prop = prop) # Get the coefficients like in edgeR::mglmOneWay # But use MASS::ginv instead of solve since the design does not have to be # a squared matrix # Keep only the unique rows in the design and logit_prop unique_samps <- !duplicated(design) design <- design[unique_samps, , drop = FALSE] prop <- prop[unique_samps, , drop = FALSE] logit_prop <- log(prop / (1 - prop)) b <- t(MASS::ginv(design) %*% logit_prop) rownames(b) <- colnames(y) # b matrix q x p # lik vector of length q # fit matrix q x n return(list(b = b, lik = lik, fit = fit)) } DRIMSeq/R/dm_plotData.R0000644000175200017520000000721014516005636015562 0ustar00biocbuildbiocbuild#' @importFrom ggplot2 ggplot aes_string theme_bw xlab ylab ggtitle #' geom_histogram theme element_text coord_cartesian geom_text geom_bar #' scale_fill_manual dm_plotDataFeatures <- function(tt, fill_color = "seagreen4"){ df <- data.frame(tt = tt) ggp <- ggplot(df, aes_string(x = "tt")) + theme_bw() + xlab("Number of features per gene") + ylab("Frequency") + ggtitle(paste0(length(tt), " genes / ", sum(tt) , " features")) + geom_histogram(fill = fill_color, breaks = seq(min(df$tt), max(df$tt), by = 1)) + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), plot.title = element_text(size=18, face="bold")) + coord_cartesian(xlim = c(0, max(tt) + 2)) return(ggp) } dm_plotDataBlocks <- function(tt, fill_color = "mediumpurple4"){ df <- data.frame(tt = tt) binwidth <- ceiling(max(df$tt)/100) ggp <- ggplot(df, aes_string(x = "tt")) + theme_bw() + xlab("Number of blocks per gene") + ylab("Frequency") + ggtitle(paste0(length(tt), " genes / ", sum(tt) , " blocks")) + geom_histogram(fill = fill_color, breaks = seq(min(df$tt), max(df$tt), by = binwidth)) + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), plot.title = element_text(size=18, face="bold")) + coord_cartesian(xlim = c(0, max(tt) + 2)) return(ggp) } dm_plotDataSnps <- function(tt, fill_color = "royalblue4"){ df <- data.frame(tt = tt) binwidth <- ceiling(max(df$tt)/100) ggp <- ggplot(df, aes_string(x = "tt")) + theme_bw() + xlab("Number of SNPs per gene") + ylab("Frequency") + ggtitle(paste0(length(tt), " genes / ", sum(tt) , " SNPs")) + geom_histogram(fill = fill_color, breaks = seq(min(df$tt), max(df$tt), by = binwidth)) + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), plot.title = element_text(size=18, face="bold")) + coord_cartesian(xlim = c(0, max(tt) + 2)) return(ggp) } #' Plot the frequency of present features #' #' @param info Data frame with \code{gene_id} and \code{feature_id} of ALL #' features #' @param ds_info Data frame with \code{gene_id} and \code{feature_id} of ONLY #' DS features #' #' @return \code{ggplot} object dm_plotDataDSInfo <- function(info, ds_info){ ds_info_spl <- split(as.character(ds_info$feature_id), factor(ds_info$gene_id)) info_spl <- split(as.character(info$feature_id), factor(info$gene_id)) genes <- names(info_spl) tas <- table(unlist(lapply(names(ds_info_spl), function(g){ # g = "FBgn0004636" if(! g %in% genes) return(NA) features_in <- sum(info_spl[[g]] %in% ds_info_spl[[g]]) return(features_in) })), useNA = "always") tas <- tas[c(length(tas), 1:(length(tas) -1))] names(tas)[1] <- "NoGene" df <- data.frame(x = factor(names(tas), levels = names(tas)), y = as.numeric(tas), colors = "2", stringsAsFactors = FALSE) df[df$x == "NoGene" | df$x == "0", "colors"] <- "1" df$colors <- factor(df$colors) ggp <- ggplot(data = df, aes_string(x = "x", y = "y", label = "y", fill = "colors")) + geom_bar(stat = "identity") + geom_text(hjust = 0.5, vjust = 0, size = 6) + theme_bw() + xlab("Number of DS features left within DS gene") + ylab("Number of DS genes") + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), plot.title = element_text(size=18, face="bold"), legend.position = "none") + scale_fill_manual(values = c("darkred", "grey")) return(ggp) } DRIMSeq/R/dm_plotPrecision.R0000644000175200017520000000432214516005636016645 0ustar00biocbuildbiocbuild#' @importFrom ggplot2 ggplot aes_string theme_bw xlab ylab theme element_text #' guides guide_colorbar scale_colour_gradient geom_point geom_hline #' @importFrom stats quantile na.omit dm_plotPrecision <- function(genewise_precision, mean_expression, nr_features = NULL, common_precision = NULL, low_color = "royalblue2", high_color = "red2", na_value_color = "red2"){ if(!is.null(nr_features)){ df <- data.frame(mean_expression = log10(mean_expression + 1), precision = log10(genewise_precision), nr_features = nr_features) df_quant <- min(quantile(na.omit(df$nr_features), probs = 0.95), 30) breaks <- seq(2, df_quant, ceiling(df_quant/10)) ggp <- ggplot(df, aes_string(x = "mean_expression", y = "precision", colour = "nr_features" )) + theme_bw() + xlab("Log10 of mean expression") + ylab("Log10 of precision") + geom_point(alpha = 0.7, na.rm = TRUE) + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), legend.title = element_text(size=16, face="bold"), legend.text = element_text(size = 14), legend.position = "top") + guides(colour = guide_colorbar(barwidth = 20, barheight = 0.5)) + scale_colour_gradient(limits = c(2, max(breaks)), breaks = breaks, low = low_color, high = high_color, name = "Number of features", na.value = na_value_color) }else{ df <- data.frame(mean_expression = log10(mean_expression + 1), precision = log10(genewise_precision)) ggp <- ggplot(df, aes_string(x = "mean_expression", y = "precision")) + theme_bw() + xlab("Log10 of mean expression") + ylab("Log10 of precision") + geom_point(size = 1, alpha = 0.4, na.rm = TRUE) + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), legend.title = element_text(size=16, face="bold"), legend.text = element_text(size = 14), legend.position = "top") } if(!is.null(common_precision)){ ggp <- ggp + geom_hline(yintercept = log10(common_precision), colour = "black", linetype = "dashed") } return(ggp) } DRIMSeq/R/dm_plotProportions.R0000755000175200017520000003157214516005636017262 0ustar00biocbuildbiocbuild dm_plotProportions_barplot <- function(prop_samp, prop_fit = NULL, main = NULL, group_colors){ ## Plotting ggp <- ggplot() + geom_bar(data = prop_samp, aes_string(x = "feature_id", y = "proportion", group = "sample_id", fill = "group"), stat = "identity", position = position_dodge(width = 0.9)) + theme_bw() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.text=element_text(size=16), axis.title = element_text(size=14, face="bold"), plot.title = element_text(size=16), legend.position = "right", legend.title = element_text(size = 14), legend.text = element_text(size = 14)) + ggtitle(main) + scale_fill_manual(name = "Groups", values = group_colors, breaks = names(group_colors)) + xlab("Features") + ylab("Proportions") if(!is.null(prop_fit)){ ggp <- ggp + geom_point(data = prop_fit, aes_string(x = "feature_id", y = "proportion", group = "sample_id", fill = "group"), position = position_dodge(width = 0.9), size = 3, shape = 23, alpha = 0.75) } return(ggp) } dm_plotProportions_boxplot1 <- function(prop_samp, prop_fit = NULL, main = NULL, group_colors){ ## Plotting ggp <- ggplot() + geom_jitter(data = prop_samp, aes_string(x = "feature_id", y = "proportion", fill = "group", colour = "group"), position = position_jitterdodge(), alpha = 0.9, size = 2, show.legend = FALSE, na.rm = TRUE) + geom_boxplot(data = prop_samp, aes_string(x = "feature_id", y = "proportion", colour = "group", fill = "group"), outlier.size = NA, alpha = 0.4, lwd = 0.5) + theme_bw() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.text=element_text(size=16), axis.title=element_text(size=14, face="bold"), plot.title = element_text(size=16), legend.position = "right", legend.title = element_text(size = 14), legend.text = element_text(size = 14)) + ggtitle(main) + scale_fill_manual(name = "Groups", values = group_colors, breaks = names(group_colors)) + scale_colour_manual(name = "Groups", values = group_colors, breaks = names(group_colors)) + xlab("Features") + ylab("Proportions") if(!is.null(prop_fit)){ ggp <- ggp + geom_point(data = prop_fit, aes_string(x = "feature_id", y = "proportion", fill = "group"), position = position_jitterdodge(jitter.width = 0), size = 3, shape = 23) + guides(colour=FALSE) } return(ggp) } dm_plotProportions_lineplot <- function(prop_samp, prop_fit = NULL, main = NULL, group_colors){ ## Plotting ggp <- ggplot() + geom_line(data = prop_samp, aes_string(x = "feature_id", y = "proportion", group = "sample_id", colour = "group"), size = 1.1) + theme_bw() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.text=element_text(size=16), axis.title = element_text(size=14, face="bold"), plot.title = element_text(size=16), legend.position = "right", legend.title = element_text(size = 14), legend.text = element_text(size = 14)) + ggtitle(main) + scale_fill_manual(name = "Groups", values = group_colors, breaks = names(group_colors)) + scale_colour_manual(name = "Groups", values = group_colors, breaks = names(group_colors)) + xlab("Features") + ylab("Proportions") if(!is.null(prop_fit)){ ggp <- ggp + geom_point(data = prop_fit, aes_string(x = "feature_id", y = "proportion", group = "group", fill = "group"), size = 3, shape = 23) + guides(colour=FALSE) } return(ggp) } dm_plotProportions_boxplot2 <- function(prop_samp, prop_fit = NULL, main = NULL, feature_colors){ ## Plotting ggp <- ggplot() + geom_boxplot(data = prop_samp, aes_string(x = "group", y = "proportion", fill = "feature_id"), outlier.size = NA) + geom_jitter(data = prop_samp, aes_string(x = "group", y = "proportion", fill = "feature_id"), position = position_jitterdodge(), shape = 21, show.legend = FALSE, na.rm = TRUE) + theme_bw() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.text=element_text(size=14), axis.title=element_text(size=14, face="bold"), plot.title = element_text(size=14), panel.grid.major = element_blank(), legend.title = element_text(size = 14), legend.text = element_text(size = 14)) + geom_vline(xintercept = seq(1, nlevels(prop_samp$group) - 1, 1) + 0.5, color = "gray90") + ggtitle(main) + scale_fill_manual(name = "Features", values = feature_colors) + guides(fill = guide_legend(nrow = 20)) + xlab("Groups") + ylab("Proportions") if(!is.null(prop_fit)){ ggp <- ggp + geom_point(data = prop_fit, aes_string(x = "group", y = "proportion", fill = "feature_id"), position = position_jitterdodge(jitter.width = 0), size = 3, shape = 23, colour = "black") } return(ggp) } dm_plotProportions_ribbonplot <- function(prop_fit, main = NULL, feature_colors){ prop_fit_order <- prop_fit[order(prop_fit$feature_id, decreasing = TRUE), ] prop_fit_order <- prop_fit_order[order(prop_fit_order$group), ] breaks <- unique(prop_fit_order$feature_id) width <- 0.5 ## Get ribbons gr <- list() for (i in 1:(nlevels(prop_fit$group) - 1)){ # i = 1 prop_fit_ribbon <- prop_fit_order[prop_fit_order$group %in% levels(prop_fit_order$group )[c(i, i+1)], ] prop_fit_ribbon$group <- factor(prop_fit_ribbon$group) prop_fit_ribbon$cumsum <- matrix(t(aggregate(prop_fit_ribbon[,"proportion"], by = list(group = prop_fit_ribbon$group), cumsum)[, -1]), ncol = 1) prop_fit_ribbon$offset <- c(width/2, -width/2)[as.numeric(prop_fit_ribbon$group)] prop_fit_ribbon$xid <- i - 1 prop_fit_ribbon$x <- as.numeric(prop_fit_ribbon$group) + prop_fit_ribbon$offset + prop_fit_ribbon$xid prop_fit_ribbon$ymin <- prop_fit_ribbon$cumsum - prop_fit_ribbon$proportion prop_fit_ribbon$ymax <- prop_fit_ribbon$cumsum gr[[i]] <- geom_ribbon(data = prop_fit_ribbon, aes_string(x = "x", ymin = "ymin", ymax = "ymax", group = "feature_id", fill = "feature_id"), alpha = 0.3) } ## Plotting ggp <- ggplot() + geom_bar(data = prop_fit_order, aes_string(x = "group", y = "proportion", fill = "feature_id"), stat = "identity", width = width, position="stack") + gr + theme_bw() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.text=element_text(size=16), axis.title=element_text(size=14, face="bold"), plot.title = element_text(size=16), legend.title = element_text(size = 14), legend.text = element_text(size = 14)) + ggtitle(main) + coord_cartesian(ylim = c(-0.1, 1.1)) + coord_cartesian(ylim = c(-0.1, 1.1)) + scale_fill_manual(name = "Features", values = feature_colors, breaks = breaks) + guides(fill = guide_legend(nrow = 20)) + xlab("Groups") + ylab("Estimated proportions") return(ggp) } #' Plot feature proportions #' #' Plot observed and/or estimated feature proportions. #' #' @param counts Matrix with rows corresponding to features and columns #' corresponding to samples. Row names are used as labels on the plot. #' @param group Factor that groups samples into conditions. #' @param md Data frame with additional sample information. #' @param fit_full Matrix of estimated proportions with rows corresponding to #' features and columns corresponding to samples. If \code{NULL}, nothing is #' plotted. #' @param main Character vector with main title for the plot. If \code{NULL}, #' nothing is plotted. #' @param plot_type Character defining the type of the plot produced. Possible #' values \code{"barplot"}, \code{"boxplot1"}, \code{"boxplot2"}, #' \code{"lineplot"}, \code{"ribbonplot"}. #' @param order_features Logical. Whether to plot the features ordered by their #' expression. #' @param order_samples Logical. Whether to plot the samples ordered by the #' group variable. If \code{FALSE} order from the \code{sample(x)} is kept. #' @param group_colors Character vector with colors for each group. #' @param feature_colors Character vector with colors for each feature. #' #' @return \code{ggplot} object with the observed and/or estimated with #' Dirichlet-multinomial model feature ratios. Estimated proportions are #' marked with diamond shapes. #' @importFrom reshape2 melt #' @importFrom ggplot2 ggplot aes_string theme_bw xlab ylab theme element_text #' coord_cartesian geom_text ggtitle geom_bar scale_fill_manual geom_point #' geom_jitter position_dodge position_jitterdodge geom_boxplot #' scale_colour_manual scale_colour_manual guides element_blank geom_vline #' scale_x_discrete guide_legend geom_line geom_ribbon #' @importFrom stats aggregate median dm_plotProportions <- function(counts, group, md = NULL, fit_full = NULL, main = NULL, plot_type = "boxplot1", order_features = TRUE, order_samples = TRUE, group_colors = NULL, feature_colors = NULL){ ## Calculate observed proportions proportions <- prop.table(counts, 2) proportions[proportions == "NaN"] <- NA prop_samp <- data.frame(feature_id = rownames(proportions), proportions, stringsAsFactors = FALSE) prop_fit <- NULL if(!is.null(fit_full)) prop_fit <- data.frame(feature_id = rownames(fit_full), fit_full, stringsAsFactors = FALSE) ## Order transcipts by decreasing proportion if(order_features){ oo <- order(apply(aggregate(t(prop_samp[, -1]), by = list(group = group), median)[, -1], 2, max), decreasing = TRUE) feature_levels <- rownames(prop_samp)[oo] }else{ feature_levels <- rownames(counts) } ## Order samples by group if(order_samples){ o <- order(group) sample_levels <- colnames(counts)[o] }else{ sample_levels <- colnames(counts) } ## Melt prop_samp prop_samp <- melt(prop_samp, id.vars = "feature_id", variable.name = "sample_id", value.name = "proportion", factorsAsStrings = FALSE) prop_samp$feature_id <- factor(prop_samp$feature_id, levels = feature_levels) prop_samp$group <- rep(group, each = nrow(counts)) prop_samp$sample_id <- factor(prop_samp$sample_id, levels = sample_levels) ## Add extra info from md about samples if(!is.null(md)){ mm <- match(prop_samp$sample_id, md$sample_id) for(i in setdiff(colnames(md), c("sample_id", "group"))){ prop_samp[, i] <- md[mm, i] } } ## Melt prop_fit if(!is.null(prop_fit)){ prop_fit <- melt(prop_fit, id.vars = "feature_id", variable.name = "sample_id", value.name = "proportion", factorsAsStrings = FALSE) prop_fit$feature_id <- factor(prop_fit$feature_id, levels = feature_levels) prop_fit$group <- rep(group, each = nrow(fit_full)) prop_fit$sample_id <- factor(prop_fit$sample_id, levels = sample_levels) ## Add extra info from md about samples if(!is.null(md)){ mm <- match(prop_fit$sample_id, md$sample_id) for(i in setdiff(colnames(md), c("sample_id", "group"))){ prop_fit[, i] <- md[mm, i] } } } ## Prepare colors for groups if(is.null(group_colors)){ group_colors <- colorb(nlevels(group)) } names(group_colors) <- levels(group) ## Prepare colors for features if(is.null(feature_colors)){ feature_colors <- colorb(nrow(counts)) } names(feature_colors) <- rownames(counts) switch(plot_type, barplot = { dm_plotProportions_barplot(prop_samp = prop_samp, prop_fit = prop_fit, main = main, group_colors = group_colors) }, lineplot = { dm_plotProportions_lineplot(prop_samp = prop_samp, prop_fit = prop_fit, main = main, group_colors = group_colors) }, boxplot1 = { dm_plotProportions_boxplot1(prop_samp = prop_samp, prop_fit = prop_fit, main = main, group_colors = group_colors) }, boxplot2 = { dm_plotProportions_boxplot2(prop_samp = prop_samp, prop_fit = prop_fit, main = main, feature_colors = feature_colors) }, ribbonplot = { if(!is.null(prop_fit)){ keep <- !duplicated(prop_fit[, c("feature_id", "proportion", "group")]) prop_fit <- prop_fit[keep, , drop = FALSE] if(nlevels(factor(prop_fit$sample_id)) != nlevels(factor(prop_fit$group))){ message("Ribbonplot can not be generated.") }else{ dm_plotProportions_ribbonplot(prop_fit, main = main, feature_colors = feature_colors) } }else{ message("Ribbonplot can not be generated.") } } ) } DRIMSeq/R/dm_plotPvalues.R0000644000175200017520000000150014516005636016324 0ustar00biocbuildbiocbuild#' @importFrom ggplot2 ggplot aes_string theme_bw xlab ylab geom_histogram theme #' element_text coord_cartesian geom_text dm_plotPValues <- function(pvalues){ df <- data.frame(pvalues = pvalues[!is.na(pvalues)]) ggp <- ggplot(df, aes_string(x = "pvalues")) + theme_bw() + xlab("P-Values") + ylab("Frequency") + geom_histogram(breaks = seq(0, 1, by = 0.01), fill = "deeppink4") + theme(axis.text = element_text(size=16), axis.title = element_text(size=18, face="bold"), plot.title = element_text(size=16, face="bold")) + coord_cartesian(xlim = c(0, 1)) + geom_text(data = data.frame(x = Inf, y = Inf, label = paste0(nrow(df), " tests ")), aes_string(x = "x", y = "y", label = "label"), hjust = 1, vjust = 3, size = 6) return(ggp) } DRIMSeq/R/dm_profileLikModeration.R0000644000175200017520000001311214516005636020132 0ustar00biocbuildbiocbuild############################################################################## # calculate the moderated profile likelihood ############################################################################## #' @importFrom stats loess predict loess.control dm_profileLikModeration <- function(loglik, mean_expression, prec_moderation = "trended", prec_prior_df, prec_span){ prec_grid_length <- ncol(loglik) ### Check where the grid is maximized grid_max <- apply(loglik, 1, which.max) # In the calculation of moderation, do not take into account genes # that have precision on the top and bottom boundry of the grid # (skipp 4 last grid points and 1 first grid point) not_boundry <- grid_max < (prec_grid_length - 3) & grid_max > 1 boundry_last <- grid_max == prec_grid_length ### Calculate the span of the boundry loglikelihoods if(sum(boundry_last) > 1){ loglik_span_boundry <- apply(loglik[boundry_last, , drop = FALSE], 1, function(x){max(x) - min(x)}) } switch(prec_moderation, common={ ### Calculate the moderating likelihood if(sum(not_boundry) == length(not_boundry)){ moderation <- colMeans(loglik) }else{ moderation <- colMeans(loglik[not_boundry, , drop = FALSE]) } # Estimate priorN - calculate the ratio between moderation lik span # and lik span of boundry genes if(sum(boundry_last) > 10){ moderation_span <- max(moderation) - min(moderation) span_ratio <- moderation_span / loglik_span_boundry priorN <- 1/span_ratio ### Use median priorN <- quantile(priorN, 0.5) }else{ priorN <- prec_prior_df } message(paste0("! Using ", round(priorN, 4), " as a shrinkage factor !\n")) loglik <- sweep(loglik, 2, priorN * moderation, FUN = "+") }, trended={ moderation <- dm_movingAverageByCol(loglik = loglik, mean_expression = mean_expression, not_boundry = not_boundry, prec_span = prec_span) # Estimate priorN - calculate the ratio between moderation lik span # and lik span of boundry genes if(sum(boundry_last) > 10){ moderation_span_boundry <- apply( moderation[boundry_last, , drop = FALSE], 1, function(x){max(x) - min(x)}) span_ratio <- moderation_span_boundry / loglik_span_boundry priorN <- 1/span_ratio ### Do loess fitting if there is enough points. Otherwise, use median if(length(loglik_span_boundry) > 100){ df_priorN_loglog <- data.frame(priorN = log10(priorN), mean_expression = log10(mean_expression[boundry_last])) priorN_loess_loglog <- loess(priorN ~ mean_expression, df_priorN_loglog, control = loess.control(surface = "direct")) priorN_predict_loglog <- predict(priorN_loess_loglog, data.frame(mean_expression = log10(mean_expression)), se = FALSE) priorN <- 10 ^ priorN_predict_loglog }else{ priorN <- quantile(priorN, 0.5) } }else{ priorN <- prec_prior_df } if(length(priorN) == 1){ message(paste0("! Using ", round(priorN, 6), " as a shrinkage factor !\n")) }else{ message(paste0("! Using loess fit as a shrinkage factor !\n")) } loglik <- loglik + priorN * moderation } ) return(loglik) } dm_movingAverageByCol <- function(loglik, mean_expression, not_boundry, prec_span){ if(sum(not_boundry) == length(not_boundry)){ o <- order(mean_expression) oo <- order(o) width <- floor(prec_span * nrow(loglik)) moderation <- edgeR::movingAverageByCol(loglik[o,], width = width)[oo,] }else{ ### Use non boundry genes for calculating the moderation mean_expression_not_boundry <- mean_expression[not_boundry] loglik_not_boundry <- loglik[not_boundry, , drop = FALSE] o <- order(mean_expression_not_boundry) oo <- order(o) width <- floor(prec_span * nrow(loglik_not_boundry)) moderation_not_boundry <- edgeR::movingAverageByCol( loglik_not_boundry[o, , drop = FALSE], width = width)[oo, , drop = FALSE] ### Fill in moderation values for the boundy genes moderation <- matrix(NA, nrow = nrow(loglik), ncol = ncol(loglik)) moderation[not_boundry, ] <- moderation_not_boundry o <- order(mean_expression) oo <- order(o) moderation <- moderation[o, , drop = FALSE] not_boundry <- not_boundry[o] ### Last value in not_boundry must be TRUE if(not_boundry[length(not_boundry)] == FALSE){ last_true <- max(which(not_boundry)) moderation[length(not_boundry), ] <- moderation[last_true, ] not_boundry[length(not_boundry)] <- TRUE } not_boundry_diff <- diff(not_boundry, lag = 1) not_boundry_cumsum <- cumsum(not_boundry) ### Values used for filling in the boundry NAs - swith from FALSE to TRUE replacement_indx <- which(not_boundry_diff == 1) + 1 replaced_indx <- which(!not_boundry) replaced_freq <- as.numeric(table(not_boundry_cumsum[replaced_indx])) moderation_boundry <- moderation[rep(replacement_indx, times = replaced_freq), , drop = FALSE] moderation[!not_boundry, ] <- moderation_boundry moderation <- moderation[oo, , drop = FALSE] } return(moderation) } DRIMSeq/README.md0000755000175200017520000000437414516005636014300 0ustar00biocbuildbiocbuild## DRIMSeq - differential transcript usage and transcript usage QTL analyses with a Dirichlet-multinomial model in RNA-Seq `DRIMSeq` package provides two frameworks. One for the differential transcript usage (DTU) analysis between different designs and one for the tuQTL analysis. Both are based on modeling transcript counts with the Dirichlet-multinomial distribution. DTU analysis can be performed at the gene and/or transcript level. The package also makes available functions for visualization and exploration of the data and results. # Bioconductor installation `DRIMSeq` is available on [Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/DRIMSeq.html) and can be installed with the command: ``` r ## try http:// if https:// URLs are not supported if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager") BiocManager::install("DRIMSeq") ``` The vignette containing all the instructions on how to use the DRIMSeq package for DTU and tuQTL analyses can be accessed by entering: ``` r browseVignettes("DRIMSeq") ``` or on the [Bioconductor website](https://www.bioconductor.org/packages/release/bioc/vignettes/DRIMSeq/inst/doc/DRIMSeq.pdf). # Devel installation from Github To install the latest development version, use the `devtools` package (available [here](https://github.com/hadley/devtools)): ``` r devtools::install_github("markrobinsonuzh/DRIMSeq") ``` To install it with the vignette type: ``` r devtools::install_github("markrobinsonuzh/DRIMSeq", build_vignettes = TRUE) ``` The vignette can be accessed from the R console by typing: ``` r vignette("DRIMSeq") ``` or ``` r browseVignettes("DRIMSeq") ``` # Data packages In order to run the examples from the vignette and the manual, you need to install two data packages [PasillaTranscriptExpr](https://www.bioconductor.org/packages/release/data/experiment/html/PasillaTranscriptExpr.html) and [GeuvadisTranscriptExpr](https://www.bioconductor.org/packages/release/data/experiment/html/GeuvadisTranscriptExpr.html). ``` r ## try http:// if https:// URLs are not supported if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager") BiocManager::install("PasillaTranscriptExpr") BiocManager::install("GeuvadisTranscriptExpr") ``` DRIMSeq/build/0000755000175200017520000000000014516030602014074 5ustar00biocbuildbiocbuildDRIMSeq/build/vignette.rds0000644000175200017520000000040214516030602016427 0ustar00biocbuildbiocbuild‹uQÛnÂ0 M/c”iÒ$~À?°þR…„`hëxàÕjÝQBI‚*Þøò1wkfÉŽãã+ËÂaà ?à4r豿°{"ŸOI:yû¤]œªÚ²DiRVb V£2™–•…½Á/Tùmñc1c˃!RA:½ÚA-í 슠fk&ü§¦Ê ŠÎBy©á/ð×Àú 7döcB©¼)ßç{'‡ÒŸÒ¡ÞêŽsÕÓk{±,©›»ö| Þ“q›z©«áæý+ý‘ÞÖq·Ãsó…G'6wѬDã.:ÈÑb\hæ7ºóq±{DRIMSeq/inst/0000755000175200017520000000000014516030602013752 5ustar00biocbuildbiocbuildDRIMSeq/inst/CITATION0000755000175200017520000000153314516005636015125 0ustar00biocbuildbiocbuildcitHeader("To cite DRIMSeq in publications use:") citEntry(entry = "Article", title = "DRIMSeq: a Dirichlet-multinomial framework for multivariate count outcomes in genomics [version 2; referees: 2 approved]", author = personList(as.person("Malgorzata Nowicka"), as.person("Mark D. Robinson")), journal = "F1000Research", year = "2016", volume = "5", number = "1356", doi = "10.12688/f1000research.8900.2", url = "https://f1000research.com/articles/5-1356/v2", textVersion = paste("Malgorzata Nowicka, Mark D. Robinson (2016).", "DRIMSeq: a Dirichlet-multinomial framework for multivariate count outcomes in genomics [version 2; referees: 2 approved].", "F1000Research, 5(1356).", "URL https://f1000research.com/articles/5-1356/v2.") ) DRIMSeq/inst/doc/0000755000175200017520000000000014516030602014517 5ustar00biocbuildbiocbuildDRIMSeq/inst/doc/DRIMSeq.R0000644000175200017520000002061714516030577016067 0ustar00biocbuildbiocbuild## ----style, eval=TRUE, echo=FALSE, results='asis'-------------------------- BiocStyle::latex() ## ----setup_knitr, include=FALSE, cache=FALSE------------------------------- library(knitr) opts_chunk$set(cache = FALSE, warning = FALSE, out.width = "7cm", fig.width = 7, out.height = "7cm", fig.height = 7) ## ----news, eval = FALSE---------------------------------------------------- # news(package = "DRIMSeq") ## ----DSpasilla1------------------------------------------------------------ library(PasillaTranscriptExpr) data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## ----DSlibrary, message=FALSE---------------------------------------------- library(DRIMSeq) ## ----DSdmDSdata_create----------------------------------------------------- pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) d head(counts(d), 3) head(samples(d), 3) ## ----DSdmDSdata_plot------------------------------------------------------- plotData(d) ## ----DSdmDSdata_subset----------------------------------------------------- gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) %in% gene_id_subset, ] d ## ----DSdmFilter------------------------------------------------------------ # Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) ## ----DSdmPrecision_design-------------------------------------------------- ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) design_full ## ----DSdmPrecision--------------------------------------------------------- ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) d head(mean_expression(d), 3) common_precision(d) head(genewise_precision(d)) ## ----DSdmPrecision_plot1--------------------------------------------------- plotPrecision(d) ## ----DSdmPrecision_plot2--------------------------------------------------- library(ggplot2) ggp <- plotPrecision(d) ggp + geom_point(size = 4) ## ----DSdmFit--------------------------------------------------------------- d <- dmFit(d, design = design_full, verbose = 1) d ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") ## ----DSdmTest1------------------------------------------------------------- d <- dmTest(d, coef = "groupKD", verbose = 1) design(d) head(results(d), 3) ## ----DSdmTest2------------------------------------------------------------- design_null <- model.matrix(~ 1, data = samples(d)) design_null d <- dmTest(d, design = design_null) head(results(d), 3) ## ----DSdmTest3------------------------------------------------------------- contrast <- c(0, 1) d <- dmTest(d, contrast = contrast) design(d) head(results(d), 3) ## ----DSdmTest_results------------------------------------------------------ head(results(d, level = "feature"), 3) ## ----DSdmTest_plot--------------------------------------------------------- plotPValues(d) plotPValues(d, level = "feature") ## ----DSdmLRT_plotProportions, out.width = "14cm", fig.width = 14----------- res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") ## ----stageR, eval = FALSE-------------------------------------------------- # library(stageR) # # ## Assign gene-level pvalues to the screening stage # pScreen <- results(d)$pvalue # names(pScreen) <- results(d)$gene_id # # ## Assign transcript-level pvalues to the confirmation stage # pConfirmation <- matrix(results(d, level = "feature")$pvalue, ncol = 1) # rownames(pConfirmation) <- results(d, level = "feature")$feature_id # # ## Create the gene-transcript mapping # tx2gene <- results(d, level = "feature")[, c("feature_id", "gene_id")] # # ## Create the stageRTx object and perform the stage-wise analysis # stageRObj <- stageRTx(pScreen = pScreen, pConfirmation = pConfirmation, # pScreenAdjusted = FALSE, tx2gene = tx2gene) # # stageRObj <- stageWiseAdjustment(object = stageRObj, method = "dtu", # alpha = 0.05) # # getSignificantGenes(stageRObj) # # getSignificantTx(stageRObj) # # padj <- getAdjustedPValues(stageRObj, order = TRUE, # onlySignificantGenes = FALSE) # # head(padj) # ## ----DRIMSeq_batch--------------------------------------------------------- pasilla_samples2 <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition, library_layout = pasilla_metadata$LibraryLayout) d2 <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples2) ## Subsetting to a vignette runnable size d2 <- d2[names(d2) %in% gene_id_subset, ] ## Filtering d2 <- dmFilter(d2, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) ## Create the design matrix design_full2 <- model.matrix(~ group + library_layout, data = samples(d2)) design_full2 ## To make the analysis reproducible set.seed(123) ## Calculate precision d2 <- dmPrecision(d2, design = design_full2) common_precision(d2) head(genewise_precision(d2)) plotPrecision(d2) ## Fit proportions d2 <- dmFit(d2, design = design_full2, verbose = 1) ## Test for DTU d2 <- dmTest(d2, coef = "groupKD", verbose = 1) design(d2) head(results(d2), 3) ## Plot p-value distribution plotPValues(d2) ## ----DRIMSeq_batch_plotProportions, out.width = "14cm", fig.width = 14----- ## Plot the top significant gene res2 <- results(d2) res2 <- res2[order(res2$pvalue, decreasing = FALSE), ] top_gene_id2 <- res2$gene_id[1] ggp <- plotProportions(d2, gene_id = top_gene_id2, group_variable = "group") ggp + facet_wrap(~ library_layout) ## ----SQTLgeuvadis, message=FALSE------------------------------------------- library(GeuvadisTranscriptExpr) geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges ## ----SQTLlibrary, message=FALSE-------------------------------------------- library(DRIMSeq) ## ----SQTLdmSQTLdata_create, message=FALSE---------------------------------- colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) d ## ----SQTLdmSQTLdata_plot--------------------------------------------------- plotData(d, plot_type = "features") plotData(d, plot_type = "snps") plotData(d, plot_type = "blocks") ## ----SQTLdmFilter---------------------------------------------------------- d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) ## ----SQTLdmPrecision------------------------------------------------------- ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) ## ----SQTLdmFit------------------------------------------------------------- d <- dmFit(d) ## ----SQTLdmTest------------------------------------------------------------ d <- dmTest(d) plotPValues(d) head(results(d)) ## ----SQTLplotProportions, out.width = "14cm", fig.width = 14--------------- res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] top_snp_id <- res$snp_id[1] plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id) plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id, plot_type = "boxplot2") ## ----sessionInfo----------------------------------------------------------- sessionInfo() DRIMSeq/inst/doc/DRIMSeq.Rnw0000755000175200017520000011250514516005636016433 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{Differential transcript usage and transcript usage QTL analyses in RNA-seq with the DRIMSeq package} %\VignettePackage{DRIMSeq} %\VignetteEngine{knitr::knitr} \documentclass[10pt]{article} <>= BiocStyle::latex() @ \usepackage[utf8]{inputenc} \usepackage[sort]{cite} \usepackage{xstring} \bioctitle[Differential transcript usage and transcript usage QTL analyses in RNA-seq with the DRIMSeq package]{DRIMSeq: Dirichlet-multinomial framework for differential transcript usage and transcript usage QTL analyses in RNA-seq} \author{ Malgorzata Nowicka\thanks{\email{gosia.nowicka@uzh.ch}}, Mark D. Robinson\\ Institute for Molecular Life Sciences, University of Zurich, Switzerland\\ SIB Swiss Institute of Bioinformatics, University of Zurich, Switzerland } \begin{document} \maketitle \packageVersion{\Sexpr{BiocStyle::pkg_ver("DRIMSeq")}} \newpage \tableofcontents \newpage <>= library(knitr) opts_chunk$set(cache = FALSE, warning = FALSE, out.width = "7cm", fig.width = 7, out.height = "7cm", fig.height = 7) @ %------------------------------------------------------------------------------ % Introduction %------------------------------------------------------------------------------ \section{Main changes in the DRIMSeq package} For the full list of changes, type: <>= news(package = "DRIMSeq") @ Implementation of the regression framework in differential transcript usage analysis. It allows fitting more complicated than multiple group comparison experimental designs, for example, one can account for the batch effects or the fact that samples are paired or model continuous time course changes. It enables also testing of more complicated contrasts. Transcript-level analysis based on the beta-binomial model. In this case, each transcript ratio is modeled separately assuming it follows the beta-binomial distribution which is a one-dimensional version of the Dirichlet-multinomial distribution. Based on the fact that when $(Y_1,\ldots,Y_q) \sim DM(\pi_1,\ldots,\pi_q, \gamma_0)$ then $Y_j \sim BB(\pi_j,\gamma_0)$ \cite{Danaher1988}, we do not need to reestimate the beta-binomial parameters, only the likelihoods are recalculated. \Rpackage{DRIMSeq} returns gene-level and transcript-level p-values which can be used as input to the stage-wise testing procedure \cite{VandenBerge2017} as screening and confirmation p-values, respectively. Such approach provides increased power to identify transcripts which are actually differentially used in a gene detected as gene with DTU. Usage of term 'precision' instead of 'dispersion'. In the differential analysis based on the negative-binomial model, dispersion parameter is estimated. This dispersion parameter captures all sources of the inter-library variation between replicates present in the RNA-seq data. In the DM model, we do not directly estimate dispersion but a parameter called precision which is closely linked to dispersion via the formula: $dispersion = 1 / (1 + precision)$. In the previous version of \cite{Nowicka2016}, we used 'dispersion' as a name for the functions and variables calculating and storing, in fact, the precision estimates. Now, we use the term 'precision'. \section{Overview of the Dirichlet-multinomial model} For the statistical details about the Dirichlet-multinomial model, see the \Rpackage{DRIMSeq} paper \cite{Nowicka2016}. In the \Rpackage{DRIMSeq} package we implemented a Dirichlet-multinomial framework that can be used for modeling various multivariate count data with the interest in finding the instances where the ratios of observed features are different between the experimental conditions. Such a model can be applied, for example, in differential transcript usage (DTU) analysis or in the analysis that aim in detecting SNPs that are associated with differential transcript usage (tuQTL analysis). In both cases the multivariate features of a gene are transcripts. The implementation of Dirichlet-multinomial model in \Rpackage{DRIMSeq} package is customized for differential transcript usage and tuQTL analyses, but the data objects used in \Rpackage{DRIMSeq} can contain various types of counts. Therefore, other types of multivariate differential analyses can be performed such as differential methylation analysis or differential polyA usage from polyA-seq data. In short, the method consists of three statistical steps: First, we use the Cox-Reid adjusted profile likelihood to estimate the precision which is inverse proportional to dispersion, i.e., the variability of transcript ratios between samples (replicates) within conditions. Dispersion is needed in order to find the significant changes in transcript ratios between conditions which should be sufficiently stronger than the changes/variability within conditions. Second, we use maximum likelihood to estimate at the gene-level the regression coefficients in the Dirichlet-multinomial (DM) regression, the fitted transcript proportions in each sample and the full model likelihoods. For the analysis at the transcript-level we apply the beta-binomial (BB) regression to each transcript separately. In the differential transcript usage analysis, the full model is defined by the user with the design matrix. In the QTL analysis, full models are defined by the genotypes of SNPs associated with a given gene. Finally, we fit the null model DM and BB regression and use the likelihood ratio statistics to test for the differences in transcript proportions between the full and null models at the gene and transcript level. In the differential transcript usage analysis, the null model is again defined by the user. In the QTL analysis, null models correspond to regression with intercept only. \section{Important notes} Currently, transcript-level analysis based on the BB model are implemented only in the DTU analysis (\Rcode{bb\_model = TRUE}). When the model (full or null) of interest corresponds to multiple (or one) group fitting, then a shortcut algorithm called 'one way' (\Rcode{one\_way = TRUE}), which we adapted from the \Rfunction{glmFit} function in \Biocpkg{edgeR} \cite{McCarthy2012}, can be used. Choosing it is equivalent to running the original \Rpackage{DRIMSeq} implementation. In such a case, we use maximum likelihood to estimate the transcript proportions in each group separately and then the regression coefficients are calculated using matrix operations. Otherwise, the regression coefficients are directly estimated with the maximum likelihood approach. \section{Hints for DRIMSeq pipelines} In this vignette, we present how one could perform differential transcript usage analysis and tuQTL analysis with the \Rpackage{DRIMSeq} package. We use small data sets so that the whole pipelines can be run within few minutes in \R{} on a single core computer. In practice, the package is designed to take advantage of multicore computing for larger data sets. In the filtering function \Rfunction{dmFilter}, all the parameters that are influencing transcript count filtering are set to zero. This results in a very relaxed filtering, where transcripts with zero expression in all the samples and genes with only one transcript remained are removed. Functions \Rfunction{dmPrecision}, \Rfunction{dmFit} and \Rfunction{dmTest}, which perform the actual statistical analyses described above, have many other parameters available for tweaking, but they do have the default values assigned. Those values were chosen based on many real data analyses. Some of the steps are quite time consuming, especially the precision estimation, where proportions of each gene are refitted for different precision parameters. To speed up the calculations, we have parallelized many functions using \Biocpkg{BiocParallel}. Thus, if possible, we recommend to increase the number of workers in \Robject{BPPARAM}. In general, tuQTL analyses are more computationally intensive than differential transcript usage analysis because one needs to do the analysis for every SNP in the surrounding region of a gene. Additionally, a permutation scheme is used to compute the p-values. It is indeed feasible to perform tuQTL analysis for small chunks of genome, for example, per chromosome. %------------------------------------------------------------------------------ % Differential transcript usage analysis workflow %------------------------------------------------------------------------------ \section{Differential transcript usage analysis workflow} \subsection{Example data} To demonstrate the application of \Rpackage{DRIMSeq} in differential transcript usage analysis, we will use the \emph{pasilla} data set produced by Brooks et al. \cite{Brooks2011}. The aim of their study was to identify exons that are regulated by pasilla protein, the Drosophila melanogaster ortholog of mammalian NOVA1 and NOVA2 (well studied transcript usage factors). In their RNA-seq experiment, the libraries were prepared from 7 biologically independent samples: 4 control samples and 3 samples in which pasilla was knocked-down. The libraries were sequenced on Illumina Genome Analyzer II using single-end and paired-end sequencing and different read lengths. The RNA-seq data can be downloaded from the NCBI Gene Expression Omnibus (GEO) under the accession number GSE18508. In the examples below, we use a subset of \software{kallisto} \cite{Bray2016} counts available in \Biocexptpkg{PasillaTranscriptExpr} package, where you can find all the steps needed, for preprocessing the GEO data, to get a table with transcript counts. \subsection{Differential transcript usage analysis between two conditions} In this section, we present how to perform the DTU analysis between two conditions control and knock-down without accounting for the batch effect which is the library layout. Analysis where batch effects are included are presented in the next section. We start the analysis by creating a \Rclass{dmDSdata} object, which contains transcript counts and information about grouping samples into conditions. With each step of the pipeline, additional elements are added to this object. At the end of the analysis, the object contains results from all the steps, such as precision estimates, regression coefficients, fitted transcript ratios in each sample, likelihood ratio statistics, p-values, adjusted p-values at gene and transcript level. As new elements are added, the object also changes its name \Rclass{dmDSdata} $\rightarrow$ \Rclass{dmDSprecision} $\rightarrow$ \Rclass{dmDSfit} $\rightarrow$ \Rclass{dmDStest}, but each container inherits slots and methods available for the previous one. \subsubsection{Loading pasilla data into R} The transcript-level counts obtained from \software{kallisto} and metadata are saved as text files in the \Rcode{extdata} directory of the \Biocexptpkg{PasillaTranscriptExpr} package. <>= library(PasillaTranscriptExpr) data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) @ Load the \Rpackage{DRIMSeq} package. <>= library(DRIMSeq) @ To create a \Rcode{dmDSdata} object, saved as variable \Robject{d}, we need to prepare a data frame containing information about samples and we will call it \Robject{pasilla\_samples}. It has to have a variable called \Rcode{sample\_id} with unique sample names that are identical to column names in \Robject{pasilla\_counts} that correspond to samples. Additionally, it has to contain other variables that the user would like to use for the further regression analysis. Here, we are interested in the differential analysis between the control and knock-down condition. This information is stored in \Rcode{pasilla\_metadata\$condition}. The data frame with counts called \Robject{pasilla\_counts} is already formatted in the right way. It contains variables \Rcode{feature\_id} with unique transcript names and \Rcode{gene\_id} with unique gene IDs and columns with counts have the same names as \Rcode{sample\_id} in \Rcode{pasilla\_samples}. When printing variable \Robject{d}, you can see its class, size (number of genes and samples) and which accessor methods can be applied. For \Rcode{dmDSdata} object, there are two methods that return data frames with counts and samples. <>= pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) d head(counts(d), 3) head(samples(d), 3) @ You can also make a data summary plot, which is a histogram of the number of transcripts per gene. <>= plotData(d) @ To make the analysis runnable within this vignette, we want to keep only a small subset of genes, which is defined in the following file. <>= gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) %in% gene_id_subset, ] d @ \subsubsection{Filtering} \label{DS_filtering} Genes may have many transcripts that are lowly expressed or not expressed at all. You can remove them using the \Rfunction{dmFilter} function. Filtering of lowly expressed transcripts can be done at two levels: minimal \textit{expression} using \Robject{min\_samps\_feature\_expr} and \Robject{min\_feature\_expr} parameters or minimal \textit{proportion} with \Robject{min\_samps\_feature\_prop} and \Robject{min\_feature\_prop}. In the \emph{pasilla} experiment we use a filtering based only on the transcript absolute expression and parameters are adjusted according to the number of replicates per condition. Since we have 3 knock-down and 4 control samples, we set \Robject{min\_samps\_feature\_expr} equal to 3. In this way, we allow a situation where a transcript is expressed in one condition but not in another, which is a case of differential transcript usage. The level of transcript expression is controlled by \Robject{min\_feature\_expr}. We set it to the value of 10, which means that only the transcripts that have at least 10 estimated counts in at least 3 samples are kept for the downstream analysis. Filtering at the gene level ensures that the observed transcript ratios have some minimal reliability. Although, Dirichlet-multinomial model works on feature counts, and not on feature ratios, which means that it gives more confidence to the ratios based on 100 versus 500 reads than 1 versus 5, minimal filtering based on gene expression removes the genes with mostly zero counts and reduces the number of tests in multiple test correction. For the \emph{pasilla} data, we want that genes have at least 10 counts in all the samples: \Rcode{min\_samps\_gene\_expr = 7} and \Rcode{min\_gene\_expr = 10}. <>= # Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) @ \subsubsection{Precision estimation} \label{DS_precision_estimation} Ideally, we would like to get accurate precision estimates for every gene, which is problematic when analyzing small data sets because precision estimates become inaccurate when the sample size decreases, especially for lowly expressed genes. As an alternative, we could assume that all the genes have the same precision and based on all the data, we could calculate a common precision, but we expect this to be too strong of an assumption. Moderated precision is a trade-off between gene-wise and common precision. The moderated estimates originate from a weighted likelihood which is a combination of common and individual likelihoods. We recommend this approach when analyzing small sample size data sets. At this step, three values may be calculated: mean expression of genes, common precision and gene-wise precisions. In the default setting, all of them are computed and common precision is used as an initial value in the grid approach to estimate gene-wise precisions, which are shrunk toward the trended precision. The grid approach is adapted from the \Rfunction{estimateDisp} function in \Biocpkg{edgeR} \cite{McCarthy2012}. By default, to estimate the common precision, we use 10\% percent (\Rcode{prec\_subset = 0.1}) of randomly selected genes. That is due to the fact that common precision is used only as an initial value, and estimating it based on all the genes takes a substantial part of time. To ensure that the analysis are reproducible, the user should define a random seed \Rcode{set.seed()} before running the \Rcode{dmPrecision()} function. Thank to that, each time the same subset of genes is selected. To estimate precision parameters, the user has to define a design matrix with the full model of interest, which will be also used later in the proportion estimation. Here, the full model is defined by a formula $\sim group$ which indicates that samples come from two conditions. This step of our pipeline is the most time consuming. Thus, for real data analysis, consider using \Rcode{BPPARAM = BiocParallel::MulticoreParam()} with more than one worker. <>= ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) design_full @ <>= ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) d head(mean_expression(d), 3) common_precision(d) head(genewise_precision(d)) @ To inspect the behavior of precision estimates, you can plot them against the mean gene expression. Normally in the differential analysis based on RNA-seq data, such plot has dispersion parameter plotted on the y-axis. Here, the y-axis represents precision since in the Dirichlet-multinomial model this is the parameter that is directly estimated. It is important to keep in mind that the precision parameter is inverse proportional to dispersion: $dispersion = 1 / (1 + precision)$. In RNA-seq data, we can typically observe a trend where the dispersion decreases (precision increases) for genes with higher mean expression. <>= plotPrecision(d) @ All of the plotting functions from \Rpackage{DRIMSeq} package, return a \Rclass{ggplot} object which can be further modified using \CRANpkg{ggplot2} package. For example, the user can increase the size of points. <>= library(ggplot2) ggp <- plotPrecision(d) ggp + geom_point(size = 4) @ \subsubsection{Proportion estimation} In this step, we estimate the full model regression coefficients, fitted proportions and likelihoods. We use the same design matrix as in the precision estimation step. By default, \Rcode{one\_way = TRUE} which means that whenever the design corresponds to multiple group fitting, the 'one way' shortcut algorithm will be used, which in fact corresponds to the first implementation of \Rpackage{DRIMSeq}. Transcript proportions are estimated for each condition separately and then the regression coefficients are calculated using matrix operations. The 'one way' algorithm is adapted from the \Rfunction{glmFit} function in \Biocpkg{edgeR} \cite{McCarthy2012}. By setting \Rcode{verbose = 1}, we can see that the one way approach is used with the current design. When \Rcode{bb\_model = TRUE} (the default), additionally to the gene-level Dirichlet-multinomial estimates the transcript-level beta-binomial results will be computed. <>= d <- dmFit(d, design = design_full, verbose = 1) d ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") @ \subsubsection{Testing for differential transcript usage} \label{DS_testing} Calling the \Rfunction{dmTest} function results in two calculations. First, null model is fitted. This null model can be defined by the user via \Rcode{coef}, \Rcode{design} or \Rcode{contrast} parameters. Second, likelihood ratio statistics are used to test for the difference between the full and null model. Both steps are done at the gene and transcript level when \Rcode{bb\_model = TRUE}. In our example, we would like to test whether there are differences in transcript usage between control (CTL) and knock-down (KD). We can achieve that by using the \Rcode{coef} parameter which should indicate which columns of the full design should be removed to get the null design. We define it equal to \Rcode{"groupKD"}. Then the null design has only an intercept column which means that all the samples are treated as if they came from one condition. Note that \Rcode{one\_way = TRUE} and the one way approach is used. <>= d <- dmTest(d, coef = "groupKD", verbose = 1) design(d) head(results(d), 3) @ The same can be achieved by directly defining the null design matrix with the \Rcode{design} parameter. <>= design_null <- model.matrix(~ 1, data = samples(d)) design_null d <- dmTest(d, design = design_null) head(results(d), 3) @ Or by using the \Rcode{contrast} parameter. The null design is calculated using the approach from the \Rfunction{glmLRT} function in \Biocpkg{edgeR} \cite{McCarthy2012}. <>= contrast <- c(0, 1) d <- dmTest(d, contrast = contrast) design(d) head(results(d), 3) @ To obtain the results of likelihood ratio tests, you have to call the function \Rfunction{results}, which returns a data frame with likelihood ratio statistics, degrees of freedom, p-values and Benjamini and Hochberg (BH) adjusted p-values for each gene by default and for each transcript when \Rcode{level = "feature"}. <>= head(results(d, level = "feature"), 3) @ You can plot a histogram of gene-level and transcript-level p-values. <>= plotPValues(d) plotPValues(d, level = "feature") @ For genes of interest, you can make plots (bar plots, line plots, box plots, ribbon plots) of observed and estimated with Dirichlet-multinomial model transcript ratios. You have to define the \Rcode{group\_variable} parameter which should indicate a variable from \Rcode{samples(d)}. Currently, plots can be done only for categorical variables. We choose the \Rcode{"group"} column since it corresponds to the comparison of our interest. Estimated proportions are marked with diamond shapes. As an example, we plot the top significant gene. <>= res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") @ \subsubsection{Two-stage test} \Rpackage{DRIMSeq} returns gene and transcript level p-values which can be used as an input to the stage-wise analysis \cite{VandenBerge2017} implemented in the \Rcode{stageR} package, currently available on github \url{https://github.com/statOmics/stageR}. As pointed by the authors of \Rcode{stageR}, interpreting both gene-level and transcript-level adjusted p-values does not provide appropriate FDR control and should be avoided. However, applying a stage-wise testing provides a useful biological interpretation of these results and improved statistical performance. In short, the procedure consists of a screening stage and a confirmation stage. In the screening stage, gene-level BH-adjusted p-values are screened to detect genes for which the hypothesis of interest is significantly rejected. Only those genes are further considered in the confirmation stage, where for each gene separately, transcript-level p-values are adjusted to control the FWER and BH-adjusted significance level of the screening stage. It is important to note that transcript-level stage-wise adjusted p-values for genes that do not pass the screening stage are set to \Rcode{NA}. Also the stage-wise adjusted p-values can not be compared to significance level other than chosen in the stage-wise analysis. If that is of interest, one has to rerun this analysis with the new significance level. The following code chunk is not evaluated by this vignette and to run it, user has to make sure that the \Rcode{stageR} package is installed. It shows how one can use the \Rpackage{DRIMSeq} output in the stage-wise analysis. <>= library(stageR) ## Assign gene-level pvalues to the screening stage pScreen <- results(d)$pvalue names(pScreen) <- results(d)$gene_id ## Assign transcript-level pvalues to the confirmation stage pConfirmation <- matrix(results(d, level = "feature")$pvalue, ncol = 1) rownames(pConfirmation) <- results(d, level = "feature")$feature_id ## Create the gene-transcript mapping tx2gene <- results(d, level = "feature")[, c("feature_id", "gene_id")] ## Create the stageRTx object and perform the stage-wise analysis stageRObj <- stageRTx(pScreen = pScreen, pConfirmation = pConfirmation, pScreenAdjusted = FALSE, tx2gene = tx2gene) stageRObj <- stageWiseAdjustment(object = stageRObj, method = "dtu", alpha = 0.05) getSignificantGenes(stageRObj) getSignificantTx(stageRObj) padj <- getAdjustedPValues(stageRObj, order = TRUE, onlySignificantGenes = FALSE) head(padj) @ \subsection{Differential transcript usage analysis between two conditions with accounting for the batch effects} The regression framework implemented in \Rpackage{DRIMSeq} allows to account for the batch effects. Here, this would be the library layout stored in \Rcode{pasilla\_metadata\$LibraryLayout}. The steps of this analysis are the same as described above. The only difference is that we have to include the library layout variable in the \Rcode{sample} slot in the \Rcode{dmDSdata} object and define a full model that contains the batch effect. <>= pasilla_samples2 <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition, library_layout = pasilla_metadata$LibraryLayout) d2 <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples2) ## Subsetting to a vignette runnable size d2 <- d2[names(d2) %in% gene_id_subset, ] ## Filtering d2 <- dmFilter(d2, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) ## Create the design matrix design_full2 <- model.matrix(~ group + library_layout, data = samples(d2)) design_full2 ## To make the analysis reproducible set.seed(123) ## Calculate precision d2 <- dmPrecision(d2, design = design_full2) common_precision(d2) head(genewise_precision(d2)) plotPrecision(d2) ## Fit proportions d2 <- dmFit(d2, design = design_full2, verbose = 1) ## Test for DTU d2 <- dmTest(d2, coef = "groupKD", verbose = 1) design(d2) head(results(d2), 3) ## Plot p-value distribution plotPValues(d2) @ <>= ## Plot the top significant gene res2 <- results(d2) res2 <- res2[order(res2$pvalue, decreasing = FALSE), ] top_gene_id2 <- res2$gene_id[1] ggp <- plotProportions(d2, gene_id = top_gene_id2, group_variable = "group") ggp + facet_wrap(~ library_layout) @ %------------------------------------------------------------------------------ % tuQTL analysis workflow %------------------------------------------------------------------------------ \section{tuQTL analysis workflow} In the transcript usage QTL analysis, we want to identify genetic variants (here, bi-allelic SNPs) that are associated with changes in transcript usage. Such SNPs are then called transcript usage quantitative trait locies (tuQTLs). Ideally, we would like to test associations of every SNP with every gene. However, such an approach would be very costly computationally and in terms of multiple testing correction. Under the assumption that SNPs that directly affect transcript usage are likely to be placed in the close surrounding of genes, we test only the SNPs that are located within the gene body and within some range upstream and downstream of the gene. \subsection{Example data} To demonstrate the tuQTL analysis with the \Rpackage{DRIMSeq} package, we use data from the GEUVADIS project \cite{Lappalainen2013}, where 462 RNA-Seq samples from lymphoblastoid cell lines were obtained. The genome sequencing data of the same individuals is provided by the 1000 Genomes Project. The samples in this project come from five populations: CEPH (CEU), Finns (FIN), British (GBR), Toscani (TSI) and Yoruba (YRI). We use transcript quantification (expected counts from FluxCapacitor) and genotypes available on the GEUVADIS project website \url{http://www.ebi.ac.uk/Tools/geuvadis-das/}, and the Gencode v12 gene annotation is available at \url{http://www.gencodegenes.org/releases/12.html}. In order to make this vignette runnable, we perform the analysis on subsets of bi-allelic SNPs and transcript expected counts for CEPH population (91 individuals) that correspond to 50 randomly selected genes from chromosome 19. The full dataset can be accessed from \Biocexptpkg{GeuvadisTranscriptExpr} package along with the description of preprocessing steps. \subsection{tuQTL analysis with the DRIMSeq package} Assuming you have gene annotation, feature counts and bi-allelic genotypes that are expressed in terms of the number of alleles different from the reference, the \Rpackage{DRIMSeq} workflow for tuQTL analysis is analogous to the one for differential transcript usage. First, we have to create a \Rclass{dmSQTLdata} object, which contains feature counts, sample information and genotypes. Similarly as in the differential transcript usage pipeline, results from every step are added to this object and at the end of the analysis, it contains precision estimates, proportions estimates, likelihood ratio statistics, p-values, adjusted p-values. As new elements are added, the object also changes its name \Rclass{dmSQTLdata} $\rightarrow$ \Rclass{dmSQTLprecision} $\rightarrow$ \Rclass{dmSQTLfit} $\rightarrow$ \Rclass{dmSQTLtest}. For each object, slots and methods are inherited from the previous one. \subsubsection{Loading GEUVADIS data into R} We use the subsets of data defined in the \Biocexptpkg{GeuvadisTranscriptExpr} package. <>= library(GeuvadisTranscriptExpr) geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges @ Load the \Rpackage{DRIMSeq} package. <>= library(DRIMSeq) @ In the tuQTL analysis, an initial data object \Robject{d} is of \Robject{dmSQTLdata} class and, additionally to feature counts and sample information, it contains genotypes of SNPs that are in some surrounding of genes. This surrounding is defined with the parameter \Rcode{window}. In order to find out which SNPs should be tested with which genes, the \Rfunction{dmSQTLdata} functions requires as an input the location of genes (\Rcode{gene\_ranges}) and SNPs (\Rcode{snp\_ranges}) stored as \Rclass{GRanges} objects. Variables with transcript IDs and gene IDs in the \Robject{counts} data frame must have names \Rcode{feature\_id} and \Rcode{gene\_id}, respectively. In the \Robject{genotypes} data frame, the variable with SNP IDs must have name \Rcode{snp\_id}. <>= colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) d @ In our tuQTL analysis, we do not repeat tests for the SNPs that define the same grouping of samples (genotype). We identify SNPs with identical genotypes across the samples and assign them to blocks. Estimation and testing are done at the block level, but the returned results are extended to a SNP level by repeating the block statistics for each SNP that belongs to a given block. The data summary plot \Rfunction{plotData} produces three histograms: the number of features per gene, the number of SNPs per gene and the number of blocks per gene. <>= plotData(d, plot_type = "features") plotData(d, plot_type = "snps") plotData(d, plot_type = "blocks") @ \subsubsection{Filtering} The filtering step eliminates genes and features with low expression, as in the differential transcript usage analysis (see section \ref{DS_filtering}). Additionally, it filters out the SNPs/blocks that do not define at least two genotypes where each of them is present in at least \Robject{minor\_allele\_freq} individuals. Usually, \Robject{minor\_allele\_freq} is equal to roughly 5\% of the total sample size. Ideally, we would like that genes were expressed at some minimal level in all samples because this would lead to better estimates of feature ratios. However, for some genes, missing values may be present in the counts data, or genes may be lowly expressed in some samples. Setting up \Robject{min\_samps\_gene\_expr} to 91 may exclude too many genes from the analysis. We can be slightly less stringent by taking, for example, \Rcode{min\_samps\_gene\_expr = 70}. <>= d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) @ \subsubsection{Precision estimation} In the DTU analysis (section \ref{DS_precision_estimation}), the full model used in precision estimation has to be defined by the user. Here, full models are defined by genotypes. For a given SNP, genotype can have numeric values of 0, 1, and 2. When \Rcode{one\_way = TRUE}, multiple group fitting is performed. When \Rcode{one\_way = FALSE}, a regression framework is used with the design matrix defined by a formula $\sim group$ where $group$ is a continuous (not categorical) variable with genotype values 0, 1, and 2. For the tuQTL analysis, it has an additional parameter called \Rcode{speed}. If \Rcode{speed = FALSE}, gene-wise precisions are calculated for each gene-block. This calculation may take a long time, since there can be hundreds of SNPs/blocks per gene. If \Rcode{speed} is set to \Rcode{TRUE}, there will be only one precision calculated per gene (assuming a null model, i.e., model with intercept only), and it will be assigned to all the blocks matched to this gene. In the default setting, \Rcode{speed = TRUE} and common precision is used as an initial value in the grid approach to estimate gene-wise precisions with NO moderation, since the sample size is quite large. Again, this step of the pipeline is one of the most time consuming. Thus consider using \Rcode{BPPARAM = BiocParallel::MulticoreParam()} with more than one worker when performing real data analysis. <>= ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) @ \subsubsection{Proportion estimation} Dirichlet-multinomial full model proportions/coefficients and likelihoods are estimated for each gene-block pair. Currently, no transcript-level analysis are implemented in the tuQTL workflow. <>= d <- dmFit(d) @ \subsubsection{Testing for tuQTLs} \Rfunction{dmTest} function estimates gene-level null model proportions/coefficients and likelihoods and performs the likelihood ratio test. The null models equal to models with intercept only. In contrast to the DTU analysis, there are some additional challenges that have to handled in the tuQTL analysis. They include a large number of tests per gene with highly variable allele frequencies (models) and linkage disequilibrium. As in other sQTL studies, we apply a permutation approach to empirically assess the null distribution of associations and use it for the adjustment of nominal p-values. There are two permutation schemes available. When \Rcode{permutation\_mode} equals to \Rcode{"all\_genes"}, the null p-value distribution is calculated from all the genes. When \Rcode{permutation\_mode = "per\_gene"}, null distribution of p-values is calculated for each gene separately based on permutations of this individual gene. The latter approach may take a lot of computational time. We suggest using the first option, which is also the default one. The function \Rfunction{results} returns a data frame with likelihood ratio statistics, degrees of freedom, p-values and Benjamini and Hochberg adjusted p-values for each gene-block/SNP pair. <>= d <- dmTest(d) plotPValues(d) head(results(d)) @ You can plot the observed transcript ratios for the tuQTLs of interest. Plotting the fitted values is not possible as we do not return this estimates due to their size. When the sample size is large, we recommend using box plots as a \Rcode{plot\_type}. We plot a tuQTL with the lowest p-value. <>= res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] top_snp_id <- res$snp_id[1] plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id) plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id, plot_type = "boxplot2") @ %-------------------------------------------------- % Session information %-------------------------------------------------- \section{Session information} <>= sessionInfo() @ %-------------------------------------------------- % References %-------------------------------------------------- \bibliography{References} \end{document} DRIMSeq/inst/doc/DRIMSeq.pdf0000644000175200017520000161604614516030602016434 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 98 0 obj << /Length 602 /Filter /FlateDecode >> stream xÚ¥TMoÛ0 ½÷Wè(µªK²wÚŠ,C‡¦Û’ì²aÕµ!޼ÚÊŠö×—Šœ I;`ØN´(òñ‰|4E DÑÇ3zj -2&%’Ê\ƒÕŠj:¸þÃÕô³/çgc)§D).ѼF’’<çHåšÈ\ ùúGӫɬº›¤2ãxd;[&ŒâeSùtp†7·®][Ó$©Ð×YW “ø!á·Ý*ù9ÿ> stream xÚí\Mw›8ÝçW°Ä 4ú,ÛIšÉœv>O7YP;:µÁc”¦ý÷#@Ø&nNs3î[aóBÒ½WOOp0ppyöz|öÓÁ‚%’Ê`< FqLÅ â ÆÓàCx®g³Áa¶Îr£ÓÅ(¢*Í:ÍËÉZ¯Lóÿ®L«BóQTmÎ¥ùôé…ÿ¿m¯²u~-³²9£óæxýÛ«¨ÌþmþÜksëî~ënq~}õ¯ÒɈâðS§¦Æ¿ža×ú½# ',ÀH`+{T+¬­ùÓõ¥í@I¢%‚W=ˆƒHpDbÒtÞÏEnl·•ÝšŸQA‰´ª‰SdD,FBʦ6ÒTsÐ탑}j¾KÛîžÜ¦ùüá|§³çÙ3ááˆÔ-Ž-8eݵ”%H$‰5ÕEßMÛ E)_ÌhORBYÈ| ¼bD-P"j™èˆH=Pã÷Ï#*¬Ž"†ÃÏ:« ß ˜=¤‡¶Åì5zr»ÈL´¬Tènat^,7º,¦Ù¢G¾HiU<¾œ°Ýˆî›yöÕrUX¸rš4wst^˜¬ìœ„p„`Œ`|¢ñá‘co­C8i8Ì=Ñ/ºò•ký™ì$[©Ò¾³©WÙB罪S,PŒ ÈOжÖ»þƒð@Û:DÀöC•Ó[¯üWxgù?϶‹ý¯¥vœ¿¯.(šÒŸþƘU à¾GY Ä¥žÅâ¸(Þ†¨,v•¯]Ý…cÅè™±Š)/¾¤ËÕÂAsšš´Ç3$8À`%9–’´ŒˆD„·BB=‰¯ ñcfê91ËÚðk3Eºm‘OµÑEÞ£'Ì0F yY:>RšPKR¹J„"*¶à@ÏŽ±Ç2|[¤SÏÛØy©‹tgÒqwã†ùÚãèÚ'ˆy¥í—?¸RW»ðH¶Ä¡ˆóF/LæÄÓòÇ//$` Œ?Š6¨Aió  ¬³‰.­7ÔÌšYiô2­¼#¿2¡¬ÿ¸ãÁÌ‹Å<î…yÅfÿ°wþ™ºÀxÿˆ*$xP8ŠkƵ‹ÊÎîÙôh„_ßš €d/`¦ƒ³ôæ&Εf3ß~QI)L%` ©å`BäŒ#Ld!g¢³^Bä“oOJã6D^•Ù†È+C'D^ߢ ‘WvBäué:kÜ>|°iX½=Þ4,LŠ»ü‘It“Ùù15—yž¹&LLŸ¹(œ ¦(ì‚>´ú ”’ŠRŒwRJ¤‡”s×y!äˆ9"DØßøÆÁ %ÃÙSg¶.;Çí›JÈÎ#AJOÏiÒK~ÎãÞÅSß*íõEGš KPŸÓĹt"QÝÜ"ÙGnÑåÅ_ïG1__ݼX‚‘$Vû_Qa81d yB`ãÄJ QŒ@½£P2…ÀøƒP Š€/)TÇEJ¿4f0ž G÷öB¥õO%í~CyØ ½ÉÊ­»ªó-cEè}ÞÜK>°"$á›k`> stream xÚµZKsÜ6¾ëW°r1UëaH§rHV›TRqvc+‡-'ŠƒÑÐác>¤hýö 9*–“è24  Ñèþ`èÝz¡÷íÅ×ן“D^dJ*ïzç%a¦ÒÓ±â,ö®·Þ;ÿªÜí.Eè›ÖÔ}™W—©S¿oóº+ÚòØs}èrdº½Ü +Óòzût柮p½` ‘øé˜RÖüÿæÇ¯6ùÀ•û²ß[é{+âêÍw¯ßºöc^\ÊÐÿíd¤_¯¿¿íêÇÿ Ìbya„Iªá_«Pk¯…æGšÞ| ŠSÂ:"‰Qs¡·Iâ@¤‚•&þÆ¡¼w‘‰Ø;Eû¼¾]jç#j¸]¬þOMå_×.=áŒE¥2ˆb¯8\¼û5ô¶Ðô=t‰²Ô»'ƃË$ò*ïíÅOãÈþd6³¿, âD*Pe"Y•ß\ÊÔoð§½ÜDQÌ ¢Èß UÅ¥ªìznlvL±*zɵ»?A%©o^±"™ÀJf¿´ô%ñ ª Ôá͉sIü$ÎUEFidjéNk" x­ñv¨»O˜ÌÓøœ©N¡Gü ™0ç’øÆy¡ØÓA–ÀÞϬ V -e+¨Í}÷ÉûöTNÿK˜„Ï)ÎátŸeˆ ¥ÿåŸ@I}Î9§>³Þå³gÞ ñŒ‡ôÉ2­ŸZ8)põp4“Ìú§ïÇÊ 6æ}Ù /NSòB2ÕÖ'¡5·­éº‘a׿s?y¶ß˜\ÚæmùKE³ˆ›.‚(Ȇ zk¥cÈ|èÊ.¸ÜÄ2ó¿ë-¹ª@ºöùä༅€C–ð¼a„¸ïËbc$¥à‰ k•à>›Ã¥ðUYä½Ù2­ßC,õk®†ª/aáÜù¶m†#¡ç1'Qe×ÔL3¿[×Û–¤¨ŠÉ[Ó•·5ùh™ø2|šnë:å¨Ù—ksojZ9Ì3'I?/Šf¨{¦î\¸ÀŠÝƒÈ¿ÉûbÏ܆Ô[ô·¬²ïò¢w$\¸­t4+Û1w:ÃÊ1/[ÔÕR"hB1¬¶²sn`Wë¡V·¥ÙÖ mgNÂnpœÐ#ÕÔù Í+yÕ56Ú™Îîë, Îö—df› lj¿ëzÅÍ |rñ¼®/aê-Y[á¦2w¸¤XÉѹvƒ\P€¸„¿e"Úþ“~c%ü6‰>ßÜ”us ;G:©+EuÁjS4ç±§ È;°‹Mœ rÜSjžÎÇŠZ[<À˜ Ÿ¤¤r6›&;c­TS=p‡¼ë†)9Êž©»f:^Dà•¥¬ è[@)my3°Ÿ@Y÷û’¦?›Uþˆ½o¶xvЃ8°‚;Ó²C‰cÞf$ò$ pU¶ »2ý†Žê8hšÏt¬uæ Ýr«“8JâƒÀÂóSå*žÞýÞÔHGÎ¥TA0Ò¹°À3Ï8"€‰ãù/3ˆÌSA¦£”R’@§1 7%$bELÄ*ófL_€ù)í¿Â?ÅÚý}ÁD;š”³Ñ$X<ž÷aee0Ü|0¯€K͸Ò@…é´þhmýB°ëŽéŠ,çõʈ€¥VŸ¢LP¬êSéìYô9 ¸Ti*ÒU•F«ÔŽ÷K(’•E$NÕ‰Èp}—N1Û§ìdŸ¢ImýdËóéI¤R, õdç†ú~Õ&²HœÎé vñõå& áwÅ.T Dü»ˆÏíb1ý¥]¼_Ý%‰Ý'íSò”}ÒŸºMï,>üs õ"?¯/٠ߣGGÇ—€¿Æ€‘H¿nz[0ä$¡©oÈb<RØÐÓXc0 ‚ ÛÔΓªõÀ .äLoZ;qBÝ1…!èmÅhÈvC~S•{a6uÜ<‚¬ 8SäU1TìÖkœÌ­#[KFGí®Î7`ã8«í‡¶FÃÞˆTO  ‰n°0h"Ðõqs—Wƒ±ým@Ä"A;ä°ZcêÐ+.︹¬CoGhìÿÞrw=`äÍ}Ù™U¨åp¤Úþ‘´Æš, ¤Chú‹¶&ÏlÅâð¿Cì6Ss!•a "ÂôÁ¸M/h®Vgh"1îuw$ˆ ˆ¶¼CØP »Hý· z´KDÄ´¢ ÛzWn Rš-Zã€Aæ­­á6‘ýµLG­ûӕ݃¥Ž»m¥9¬Å™…B¥èÈTl·ÓÌÇQ‡qeíD¬,­ñíNRaÁmĦ wjçÛC,]]ÿ¼Šwæô*Ž¥ÅVˆ«q£\yÁú2E‰ ìs–u×›|{ÚíÅ%A?<Óv›Zî"¢Œ¶IKƸ±CÇPXf€H›¡l{ƒ6aõYÔÆV4S›Ûmcæxà0Ï 0&a çsDb´pOÔ'MäèÈ8Ñ·€Ã’þõÞ5>UX‘7k°ü 'Z SY.tŽºH³è„nªò†Ç ßnº³I阥³cÉõÖ¢¡hjfnÍŽì@v¯;沉ºšF¦»i—ò|`ùۼσµÝ Ý­ŸŠCí_½f”*âÑ–j GÀDá˜8!òÍ¢§3äYÌ¡¶ÎåÜ6I–›Áö̹¾Ø lPQ‘MaóÜÂ×Öá¼u–°AdÊ/ª¦£Ä ‰UYs¤Úr#ùç,9ŸïÊÜr‘÷ŠMã!É_­B2#&C¡†RnßÍw3’0ˆGHõ%Œñ~ ü¦J ðŒkˆ%KÅt WÅþ?Ö¦)‚4Ó€#Ïp¦Ô¥h`èÿ }8w*hTI"HT, [šÝžÞ•xý»œÍÒHh&Ÿÿ1äE«ðj <†uêPz±ð/˜Lÿy¢u~°=Çû¬ØC”ù»¡.ðp»^DqîäÓ]ÉŠ;xdïL" Y Ðõ|#Ç]ø·/9ŠàÙ§çˆ\î}Ÿ$âÅ‘áK{.ùò&öäj…9… çЙŠË—–á†cÇ_ÑY¾cÁ.ñƒé ÖËgxÌú÷Ý%`Š!}ƒT÷üdE^ýäA«6>ÆÞgà‹ÞüNy Þ¯=Ï WeÐÑßúÄI\é•'.™Æ.¬Ä`û ¨Èíå!›¼¬:nÍ7Crw?vù3ÞFº/3˜©÷yv ³,PéÇ“ƒÖ5%™ÇÜ9x–ý·û“À:;-÷ºQx•êÑ4ÀGi6ùmû~s•¡\ºërf@@oÍk[N¤âÖ•û$ÓI¡ì'že?´\ ©2%Ô3ïe3"¥È-òõ9T¦}f·¦&D®?‚¬f6#Ãlö"‹ˆ`˜ÕfåÂ³Ò ¶0½¤·W"0¦,õÖ«]Eè8¯‹u'|¿7”d._$@—¶)2áÿMgÚ;wc „É-PÄÚ”Z@e \ŽfšËÁ§4Aßɰ+ÏØÉØ¶¤³ êl¦%"²1?i\ç-Ñ”Ðó ¦Ùb|Œ¢i ±i|¡¦Òö>Ë €6º}ŠÁÑ":¹ºEüLX‚hc"±vÕì^Ú!  uWÁX˜2È]3½<œöàü‹MªoüÏyŸñ="Æ\¸cè[”öMˆÖæPÜbÍ4©õû~åNk Ô¤~ ïKûÚ5 ::©Äâqg ŽÊX˜>AÁâˆÔÏ Rg6ZSu([Û¬“ Î8Qä” ¯ÚÓ5Øx~Š›¿1"™vàŸ pœ»{la¤0C]s‰Q(‘=É'J%Ï|" îxÀbÐt(ÿÇNiz‹ãë2p`iºÀ¦g›+Ns >4618C£‡=…uÿÀ5ÞVþâChNuH©Ï =âå\inÞóó²X*¢uíD2’D>)êI;xÜ- OƒHÄ ÌÙÀfÒiÑzá˜pò½Š¥Ñ~kÍîÁd¢4’ÖX££ˆR²_ÂUZ¡Írô™œç¯õùfh=ªv;ãÒù-]šŽ÷.ƒ#ý½#‰ìt%³|éæøˆdÈH÷•³öTÏ=O:û(]™ñ8~S=|Åug>)FÞæ°~ýEgºð7ft‹t’À/å{žIÿrÜqþöä¹×fßÛ·Z~”EþÖ—jÌ̱{µ6ú7eÛáˆR‹1‰âüA&ö)ÿ¤éý¾ycÊ-7åÛ÷p@é™:q÷ ìÊö¥Ëe=^.k\vÀ ¹¦Ë¢îmçEúƒmöŽ[q÷TÖ˜sš?¸„œ]5¶½}ò”JððJ.o–H 70€sJþʪäcÅ¢(Ë@‘óÏ* =q3ìÀª3kÁgiB Øwú*f¦{#—¸ŸÁˆi$Ó@#W¾¼ÁÏŽ¹ññ#cjÃlf5´å‹4¾‰Åf`\¶±;óñ[ <*1ÙÞNÀ}GÙ›UêðñwtrõÉ#P [¦•qÝ]AŽÌPm'¤©a€É©¢„sL÷GHêÛ&Ør  CíJ¶]Àçk»¼öNí”ÏrŽæfûœ|+ ¹Ÿö6JL_wž¦#2þ ÿã endstream endobj 186 0 obj << /Length 3764 /Filter /FlateDecode >> stream xÚÍÉ’ÔFöÎWÔÍêJVnZscf˜Ü´Ãì˜P«²«”¤¢¤jÀ_?ïå{©­Ʀ|éÊM™oÏ·dG«í*ZýóÁã«ß?5j•…Y,ãÕÕÍÊDašÊU¢E¨3½ºÚ¬^OÊ›› öhë®Ì÷k™¤AwÌë¶8–‡Žú§6ÇEÛ‹5.¥±¼Þ|þ⟮þã¿‚3„ >´¶¥‘²¦ßËÖ­}Kwe·ãÝw¼Å“ËgÏ_ùùC^\È(x39é·«?ˆûïŸÊl„º–¡‘«µNÃ4„ù+[4õæáÅZ)8ïB¦«R ÀÏ*_V§ TÔß—o.dØ}¹kŒÿ¦Á†f»†~mÛ•UÞñydz;ØÚÚ–k€9ØcëÖîgKŽv{´m[65õ :Çþ©¸(O-¢ h®…3cOÇ`å±,v{Û­«Ó¾+ë¦êùûkd¢'ÏᯠþpâC<*63u×ÙÕñ„Û$ɱ90A°Ó!ä"püÍz¸,~Z0WÛ¼:ìíN¬4ðÖ€›Ó~-à‘}c¹ï’ö IžoËuÅÁÓ 7Ž“=…ÃmÙÒ02irä Òë½½¥ã"’$àùá°ÿ0ûêšØÔåë%Ä®{h!?&h!'<Çy”&·9’ÌŒÔ gZ{‚æŽâ nMª@<š?«i oJ`¤”ÜMN™‰C ºÛp…è…ê’hÕØ0oToRâ ö‘¶¸bƒb«k” ¾Fn| 6ï£Æi5éýdrcÛr[Ó4èÕ±|H-’£•†Œ Ž ÐŽQ‰ Y©È- äNTœê à0×mÖTÊÜtn‚äß¶4ÞÜÐÂW/^ú­Û–N+ʼó{2¶ðANÛòÖÖÜ;öð'a¦$Áÿ´ìˆÛÀ %ƒñÊ$é+5 Ê XLÃЄIÐòœV8¥ÃÇéwb‚ Ÿ£Bó²Ãò£zÈ{å`¨ÙvÐûX´Kœq­ ˜PjÝxåUÞ°acæÂœ/u×@©•’â½Îâ8é7Úäzv"ËŒ¿õ°Q÷CS1Â5Ýðù‚.¹`­"Û¡šƒ CÎkeHÒa=Á“Lø¦×hÞf´‡auæ£Fcâwªñ~Ûó÷ñ€œãÇÛ¼€ÊHGd–ö:‚mºA²Ì)·Ãƒ4v2GnA–NÀƒ‰¸81!.ÄBΉZ͇£ôàïXt±Ï®D†7QçHVX Ð6Mj¥‚pâIDa”i¡VQh"“&ð›ÄQ’¬Ž0ý‘©Kô?b±µ•Âht@Öì¨$Ô‚å]MÏù¢óV¯×":xV¼ìàZÊk¾¢ÁFÙö 8ýxõàíD+áI#u˜$fUT^ÿ­60t U–®Þ¹•ø^&ì´Ú¯^=ø©Â9¨/-S¡Ž`Ï(ñhG¤NG”ñÞà)/\ÏJ B%1B×ʉ.úuÞ:k MgËü¥ˆÎ؉™Ubt Àd‰ŽJåŒÙms‚â––ó=Ÿ\ýü©û“l;^þÄPšH5ÿu|XžºDî‡äjúã>YŸóM(F±\éL†±Êq8¡Ò0Icà…»ºAFý%è(îÐ+¸² 0ØŠGmàH Gò5v}íè”…&‘+¦ +ÅÿܰvЬGãUƒü!¢} úIÆsäõ¹pÿ³ á%QÉ2ÊTßWàD•ÆS®üã N£P$òïH〈²9d" c-ï‰ÈpdfÒ)‘¯.þñSÁ*$´†·crÁ¢€5foPÑì/;;5Ass&µam—÷¨ ×,… næ†-º#¹`Ð+(¦s®Æpå¶|fÃGb€‰] ÅæÒ§lÍéà×alYÖ[oÖ—%ã ÓRíŽÃË€9!x\“ý–0‚[¾¢u¸ÇÎRÃôwóµ`Ô9ÉβøŽæ¾¥–F…±¹ˆe˜Ñ[á{Òu<.…mu  µwwÈ=:T ¢Ÿaƒßå¾Ü>È4 U’ÍQÿØ™Ðs6ƒìm°K$b3åËl°Ìb8Cü i¬"êôŽàß§ Æ#5þ?oƒÑHÉ8x·+1#ƒ¤»Á¼ä›ü@þ!tnŽMEK8¦! Æ_!Î&$›Î|©Ñ: ¸ñs:ë05wDàÏÃv—Êx ŠÕ”ÊÛ}õå¬ct(¾*p`"Å•§e÷)yY«8'7›Þ\7§ºè(5I@1ô_(µ'´!DX>ífk/?ž÷>“~ùë/€>ד“`à7Ì' n^ÊHÓ'Vóa˜YðƒOµpñ3]:úÃ#ìÛ·§ò6ß[¿ʬãüñT×ýG”C0>ç\n1-†€Í%cPÕ£î«nጃ¢k£fYu ÿjL\55à N¯f.à ž§µ5¦Éè§€ Hb”èm.w‰3œ§ÂBE£¯*àR—†UCUAûÌ2> µƒóŒöÚ&©¯HQìù3ŽlÑÍ#÷ z­=P$LÙe7漡vG®gä]Oš¤ #¹T¹p㔵¶¼(ß§=gE#Ì/"“ü@Êþâi0RÖ%kLø§iü 9¾+‰ú‚…D§Âù¯ã ; ÍaƒNõ ìlÊ£E³sùþt`ņ ¡üN|$ß×sCÿÅT)×VˆeÀ’{ÏB1xú²Pÿ*«1ùts¡€[Ç¥^y2Ô÷–šRp_˜$;kjJip–3® º´,fÚv.±­Ûr[Û®Cñk280EŒµ­³j8°k(çì:¦@£hNûÿ‚$œ“àÎ+9€qÞú>ï ÍQâÉõ6KÚ\".Ùqa z,ÛI/Û3ã*¢ ¢ƒì«6cøe‡¼x¢ÎÆQð‹· —°ÑV¹+úAs“w9ÚŽáÂZ þv;Wºcøä]Åŵ0àºËÙ• RGt%у;) TS㚪8Ôë†H…’Û7ö5ª²>u~ºÙçÄIãPE±Çúr,˜BAöí–ÓšÁ=ÃÂYï¾WàpL«Ç™äj_Ì•WfíÊ…PsY™È‘%aœÍî7晟Ÿ¤’U©4¶ÁÞçoú*9˜ªÍm·¢ÿ”*^š2´8Eк‹»CM–ïÉÔn]ýOvÌÆ2{ZÿRƒÖñòµMãÒ{ †;z¯ë›xÞb/VJ¦i÷Î*Ø®ä>|U<ÍÄ">°Š“hs¯[F¬¨™¡qo>·ŒbpÓô§å2¾RBt¨ÕWCŽÓ€ÀÎO›”a3ðŠ~dÇ‚~àb¿«FÀ–­ŸwFZ½[…²Å0'[£óºß-ú¼rêŽM> Ò3‹9Ñ/¬þõðùìâ§ ýþn êã8¸¢û1Aÿ°ûÐÒ ªÙRí~n]mîuŽvŸ¿w:#ðbM5yª}ò‘ýõÇ;s]D(–n<ûÞßÇþ™ ûÃX‹÷ï¸Ì¯øµŠ¯ä×›¾øïÇ|!_ùÒ¾¨ùëÉí¬U^öï ò±©„©æC¥»ç³°ek¿‘iSiEéJBô™˜äþœ!œá«9Ÿm: Í]4îÍ&ày)hü—G{Dbiõ.µH§ )ÊsTåDhÄ4“‚gÁÎKÌ”!mï1|NFðá·r.à‹Ì×c8œ—Âȹ5PFi(’äë© ¨‘cDþ ¥‡ û؆C§¯Ïr ÆCªlN*™AT¯ï…Tp ¦è§<¿ÂŠàdE<òa ¾˜¤d¹NÕB4‹£œ ¸³èNîa" ö¯Äü¥”(€K1•a  Î^"áËIGörêÂêÜìò[vª¼vž† LQÓ§»*KΕÛã6/÷ùµ+m’у4p¼øÑ¾m}ã\»Údâ7vg6 xp3RKI»½ÉÁI¢§¿·ùþDNF‚O]T†‰Tƒ^Uã*«<M‚+|èÔÐO¤ê††0;‹;rT ûô)bôp ¥ám{/€àžú³÷{»/÷±>ë…‚h~ÑÚ'eÏS¾ÛJÙߦK~û²¯ÒdŸ|ÓÍ¡¦ªSЊ“{D”œ’`¾ƒö€óÜ@ädÑT•­‡t‡33RbÞ4ž?²/@MZ; êSŦç8M‡¼^ SòäØöÁÆ·zz â0K´{ÿÉOg(ÎTåVÄldz$2fùË3xXÓÉ×D/á,ž¢òòÑP1q(`Ã9*‹ѹ…Ä¡ŠÓ).—ž~¦Â?K‚ ð÷nšN g>A—1©aLŸiVbú\ÓÒÿ‹¸ñÞʪß2z”It¦Žn\ϕ궼µÔív9Ÿ<É”ãQ¼`¹dÆ îSçR,¼'þÇ£Èé¼çÃTm­{%é¿7ð×Ýûþ_DÔäÿN°7xб·Öe?`ù«/iÌ¥$¤® 3íéxlNõ†r1s [Ž[ïdÌùÓý?ÁZÇ&x„4ÝlÊžŽü²VK¿Ø;kS›FÛbg+®+PEjšôŸšÑÖžOÖWG|dM~ Cñ¬£|m¢¬7@À%LnÀâ–ΓÚP5X›‡ÒÍ’€as 5özZc‡Ë Ø,v§ú[;’áþ[‡K²a];VãoÁÓxb !ž=ô–Ÿö;6UÓÂ÷áL‘&ÿ‹‡0Z§ ïQ¼TŠûðypV¡ endstream endobj 192 0 obj << /Length 2986 /Filter /FlateDecode >> stream xÚí[[oÛF~÷¯à¦/4`M8Ã^»é& Rt{IÜíCR,hi,±¦H•¤b{ýžË EÊJÖI­E‚¤¹Ï¹|ç6r¢`DÁó“¯ÏOcâ y¢’àü20‘È2¤Z ëà|¼Ÿ–——§2 mkë¾,ªÓ™J³°o‹º›·å¦çþ¶+pÑòt†Ky¬¨÷_üÓùw~Ü!MxÛÙŽGÊš¿_~ÿdÖÙß¹s]ö+wúÊñô勾òó›b~ª¢ðjrÓ¯çßžDŽûá[D¹–q ™,…ï4‰Ò4haúS/ŸƒàÈT(i4J. fF ™IšyÀ«‚×3™KÍŠˆï*$ù“& yiw"½íJ'ÎkÜÐðê«7Q7(îë)ÅEé³ó“ßO$Òc)É”ˆu0_Ÿ¼þ5 0õ-l‰ó,¸¦…ë@+#dUðêä§’u¤áúDИL™9E ùÀª2©ŸÝëM夿(úbrÇãoT>2:­„QèXäqÊTŸfqØœÎt–† {*ÃuSw`E½å1‚<6ŠÍ¦*çE_654—xÕão´Ý Y;‹vvB §¤°ûܯ+Ý™‹òMÇ;Ø#“Æþˆ|Éì-\zêîÎNgF%1•±"·™ˆ#d[ŠÜ¾ðº¬àø8ϼlÜw~t¬<›¢ƒÅ~T.²Ôøu¤:¾³=¿9UiØ6¨¨p±ÛÏ_ ¥·Üþ𦳰¹êxïÍâÜxÍÚýHÄìù øÎM´ÈpeÝeåš `úFÁȰlCýváè%)[Õ°¸Ñ£t*ír ½ÄmqÚ€6]EσžÕZnír[<7Ȧ¼hbC›šÞ–õŽ8SOÛ¦k6«’—¦áX°UQ7Ë¢ëm˃ íïWMÕ,yƒ}ì˜þu±^UYÔÌê÷?ྡå<‘Nh€tMæϽ‰LÄ€DÌá"”aé0Á7LÞÅ7 ^óž©íà8Ij‹Ãõ !T.ô‘kÌEÂ\Ø› Á˶å5Z÷ 4-½Ãæª$Q·¬Œ£"_#tqGëÖ1–íæ‰¤¦ãþBDج¹“ò×E‰â×QU· i eXwU³ίHk‹Ù‚D]ƒØu…ç ²ì¼†Ãlë6¶¶fƒ‡.¸Ï̼¨ªíº¬‘`þ¹­›5nŸþ=Û±0ó‚{ÁSÛ®¬—<Ž­ÊÎ,‰Á'D8±)JÐÎnÂQ3l,üÄÈõòLk‹Å!R+[/ûU‡Œc'‹<Ù¥LØñþ/ çl4hĤp7ïZ5Å‚í ì4knõþÌïÿñõ nDÜØ³¶zÛuŠpì‡u]^l»CÔ¢ñ=ö@®å&߃Қχã [o׎Z·ðù«g23Q&››]šïö[Â(‡¸4'fÁd*f}Sù äTç¯vjÙ^p¤€öÁÀºÇÖXSÙ±ÏÝ‹D18àdˆ¬0b$w"p–ä`—ÛºÇ,/Þàf/( ©²þWîqK˜Jp”Ê’] Ÿ_AÒz†j–àÈZ‘ú[<¨Ù:.¼È"˜†¦#Á`\qƒ«˜…€²aðÍ IZɩ㭭”S„ŠÃKvãØÑ.€YÇØéXïÿuÃÕâÌ 4°3>@@CKÂ4 7Žñƒ´‚=.bè°Q¼Á>«R<@R¾ŸÏ\¾‰ˆT±Ï‚Õ²àCKò®‚Åì –dR°€“²=Õ,ÖÖî.ax£E‰ p÷I69 %AxQ¬¸á9„*Tzç`Æ{7öðiÅN„gIÙ´ŠLëдv³„ØóôügÙ±‡=ç–z>›ÖS6 5<0â•¶¾'s‰’QÜ"&N¤¾fÛó*p¶ˆ87Lî "ò®F/Šžb5ŒY LóÞå‚8L[Qê7%{ñø–g«‚ÓG²ëC8äyO¼\ðã¼Ú†§šžŠŽíi”¯ÆàòæÕ–Ùß0¥Çêô󜎌¬º¶7=¯v°Y)€ÈYÎ/$\CÏ—à6¹“`|¤n¾@}Þr{áÜÉzÅ¡ÒMçB©l(aÖO_ùzrá©ÈÔPë4¿ÕˆdcíNÝŠ’ð”¡-†#ÇcäCˆ z᫵TD&Þ«jsW*`¬àM¸Âþ²m¶â{Cˆ²F»ÁÖkïdQþÂo›-°‡¬œwnçfö¶¨¶Öw‹Åopã¶#*qƒŸç–½xâ’òZ©Ý%“z&*ûÖVâPA÷G'à?0:h3Bïüv.Ñ>ï…A^-ÊL¢áÃæ«¢^ZwVéEÃ)Ö‡^J”ÉE–ÄïðÉÔ¤iêþå/Š…ŽÒñQSøÜ=ƒ–ˆôÞÃÃÁ³µˆÔ„L‚Ó3ã\˜D½—Î;gšûC.²ÏXû…glË[*}nZ pìmѶÜ-kˆE${\ÖUoº÷†4\ÛÞ!uÑñÈ(Ç•CxÕ.R²›…b&Ó{bNÆoËfÛqdjjûp‰!Ý4I U& $à E¾ƒ“£=Õcõ@Ï»S÷òïïËû$w™0¹AåìÃŒ wF6Ë£C”ƒvsAÊ]pÏ{Ö}L¥Zd™ôXy¥—Æú\f…+À¡·óÐ銷þvzìÀŒ ýýËÍиˆ…”§ _+÷s†P&Ê!AØû&=žz‰Ú M¾hËñý—ý<ä­²HÄ&ŧ}4TB .ñ)ÿ£ˆãߥti–‰š9z¼j·ozÇÿàDF©0RÞa% ˜áQXÁ+ÓdÂÊÿú@)¡“Ý+v ×=;Þ:‡péŠËPå'©P:}¨*?å^•/øÊ`üé:ô ÆŸ^Ë“ÏZyè+C" ’pXð¿Nɼ‹ÁáþÔÜŸÃc¬ÌRD¤Žsø”P ÐÊýÁ÷Z]¢…öÙ sm¸ûPÝÝw¥{üÑAm ³–ž v1¤q*¹”S£Dg µ$ÈÌÅ–Ó¸i–@ÐÙƒe~(y=œ¥.@ªH‡›}0§÷U4\‘D*ìn! ^‹Ë²²ÇÖæGžŸ¨ôîÊÝ ŸÿêêÑ1™8;âᤠç}Íߨ ºàÑAÃ}td€}¸W@7þ¤•ûƒœ#g#H"vŽ‚þ«¯N‰sÌh¹5dzÇbzÏMïUΣ_Ã8&FÐG%ïð]nüc‰>äÀPÇ÷_øK˜è©¤úÔÜ×ý9 ÑýŠMѯŽÍÄ.ž¥©ˆ²ø> €€vvtá‘'ú›þèŽâˆŽ|¦$¸ÌL­q(µí§ç×3™82&¢{ƒ» Î_þüì³°E'Êî‹>¥Xš “ªiÒ}7˜º‡šÏ)”~É_égH~<úT©û“Ï>ŒFRD2þF¿„Ñ?U=Â{âáר!ðj‘çŠí‹®ÿû‡»?hdz? ‡`¾û3·Oü¥7×"6ù‡^ù¾óÊHãÍÿ¯ï¼IŸœÁLþW”N”€ª9˜%±È"=ù>÷>ø_dáaÓ endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 842 /Length 2509 /Filter /FlateDecode >> stream xÚí[msÛ¸þ®_ɇ#ñºn<7µã&ç™äzµs7meÆÖD]‰:'ýõ}–¦!Ñ¢d¦‘|½Ngb€/Kì³/Ø]@ˆR8a¤ ¡­Qho…Â3í„2Â9tVóByA]µ!¸ÖB)‡oA¦¢š„Ò!ñµ6<°¢ …1ø^£ÇàQ)a0PtèA*­ŸÊ V ­µ4¡gX* `ÖEá$bgÐz+tð^ŸŽJ À÷„¡ôÒÂÓ=Ðu€@¬1®kIFx½VG<kcÐa­†È =…AЀ¤T€j$l^@ Ö‹ˆñ"øD¨NBcÑ §0Nt轑Ý8ÎF3P28K ,ßλíÐ2Åv‡ÐÝ®ñ:ñ¶Q,sÓzöXêd’šá6/êNlÕšNNûˆ©û‰Ùò¾—mÄUÛûVîÀôÐJ?·]}ÔöªÖ¾ÿhY,}âS[µ+_önûA·ÝÐËM‰ìÉð»~ø[™ãí&(ë.¾!^þ÷Å®>Ê¢~Ê¢5e-ƒÕwmµmžÕ ?’4¶Îóÿ¤±³¤±VpŒÛ¥vKŽQ{üE‡r{O˜ ÕüE{îÖ€¦-‹ÖÍÕc‡«Ó Z¤¿&/ý»ÖoÔ•®éië7êÊ¥ÔA÷£Á ù{,u[ᓺË)Úa9õ*Yön~åæ0Iy’dÛ{MEÝ5=YMEÝ5ýj*ꮩèRSQwMEû¯©6Æ“-QÞ¯#õ«cžµQmsƒ%Øø¾B—ï¢RœŠüå¸:gdƒüí—›Bä?¯ŠAþ¢œVÅ´š‹˜pŸór1sÞ®Ÿ¼).Çãò³x'ñ€”>êóAþjV.nDÃðíl8ß gÅtôEä'¢š-ÀãÞ¿GÅé«#pSPTBɆÛátZ‚ù;Þ¥fœçƒÆúõ ?*g—Ŭf/Ïóó“üŻ̋úß9CUÔgÊxá¬Éx7Ú,ðþ¶ÍœŠ :[\T3=ž~Ìjùamµü,ÿåô„ÿž}Ž'UùýU9³iy;}þiñ¯ëltýÐt+ŠýÛßÿ!"f˜Ô¼±Ù ¦‹Éä|¥¹£”(}õ!u„A¥m“¾„ÕjÍ¿tõ&uccÞÙÆ'w7¼5/MsÃ?Ž`»Þ$—t#y·º¾© 4+GgÔ 9~ »Ÿ«‡Vyà9Êù‡®ÃûëOç;üsãç_+îzÛôÔôá®× nètC§:ÝЙ†Î4t¦¡3 Ý¿oèmsozÛÐÛ†Þ6t®¡s ³[œ¾qXQ{lÏ9 3Ï¿=a8þáɘLY%ÈÅÌIÝ¡Øþ£ÁΑ¨˜Y8ˆq˜#÷‹«è·"Ñ{Aâ"8[/´DF d ýv$f?H<8#Tĭ™éB—ߎÄî‰gx½!›±W:2™¤°‰Û-hOÛ:f1j¡•ÏÈ«:ŒG»‘¬o1ïŽ2HZX@mÎgáq,;vܨ2BèrRe!ò¯Í1ÓwQHmv3œ®×]c²QÂá‡ö–8ŒA&U:%ƒ5“'ÓÓžô¤áEõñ®»ÌaLÌ‚t=1í'såPmJF$}ê‰i?©ÃH‹Œê„&Êø–Á¬ Á÷ÄäöŠ4g}ø‘F…F„{TùâÖXäW‘óô¥^kù «nâ“sñ›Vд¾‚¦']A“jV¶ÍÊ”LÓïz…j`/ßኚõne2 È5£º«µÑ¸*²ãátx]ÌT a·Ž„E˜V\.ÂÉŸÔËV‡\ÐnÅóëpzYLŠÙU¡¥ò;žpX×[§3iøœ*±C¡Ä+§7ƒúénà €v›o-Ö‡–­…/C]4ZÞJQª¯ÆÃsލïþY›tûZ-»iúÚ¹¼mÓLó)ÕDÆesÃ'7ýýh|TÙßïÇñ9e¿LJ=½ý¦˜h-fû”1Ã7»ZþN|²õ·p• u‚±6f†Æ >÷¬2¥Mÿ]Ü몺ù>Ï/Æå¨œ^.FU9ËÊÙU~3„7^󼸼*NŸï4Œ`½ W cÝà ™%ô SäÍèÅpV]ÁÙ\Ýô‚ ±Øä3ËQ-ª>ÍY~QÝ„¸Cåá Üb8™“ö¦8Ÿ}î;«C×^7tÚ÷¢µÐûÐ*Í[}¦WhMúV8hE€Là¨×&p”O9C“ôC“ôC“ôCÜuÒ×1óÑñ%Èø¿&C(ú£ ƒ‚’6Ï£YY~œcf¤µÈ¿)&–¨ endstream endobj 201 0 obj << /Length 2621 /Filter /FlateDecode >> stream xÚí[moÛÈþî_AàîUX{û¾Ë¢ýkš\Š\€K\Å]Q0m±‘(E¤b¸¿¾3;KZTEö™–ïP—û6»3³Ï¼¬Ä™4"á[Ÿë«Þ+}¾}yÆhH^ž}qöÝ £’ŒeVÚäâ21œy/§Ó™N.¦ÉÏéóòòr$xZ¬‹ª)óùh,O›u^Õ“u¹jè}SçØéj4Æ®T—WÓã;ÿtñº4„Ioꢦš²¢çÛ7ÏÆuñ‘^®ËfgŸÅ)ž¿}õã»¶}•OF’§z”þuñ·3~g>}÷Bf[LÒ’™Œµgž âÑÅÈ«t9kmÒɺț‚ÊyG‘g>Ù}Fºûš:Ë´Iÿ†ì©‡þ½8ûx«‡‘í¬Öfœ9Xädqê3fµ„­pç’u‘\žýtÏÅ‘êèıÌp‰\AŠÀ6›If3El™.ž¿‹ø5{±–inu3@ÒBM7yå¹_/¤bÆ+h ½—ïÿSLšsЧÒ:ÿTLQ%lš×¤Ÿò‘téºýLßÏ‹S)ŠÌ€ÀÆæ&½†·HQf»šrˆ±š9o[¾Žêôz$}OYU´Ìmâ\aëºX»ÃúL‘ãM|¹\ç‹Ø º.çsªäm©lN¥Jj&$(„óÌiÛ*„“ Ù0$•ð ƒÊ¿Wy | .Qp² «`ÞYjýw¨'ÅoÕ×9qû€6ÅÉ¢:±ÑØð_EÍò(© I œœÜ(;RÅ%s&ë+f‡OòX9DYLOÿÆ€ð2Ç\Ö!¦fÞØ(fà2X jãU'€Ç™àjg/@D „PHQ‰ïíeELTÆ£‹åAPŠ›Òª!y3¨8›ªü¸‰J„Ú ÒêTXUS±™å •HóbrŠ>Ú´Ðk•q9ß UŸÍ@v"ÍÈcJ©L+V NWÈ(jŽ-óòW¡Ìd¹©šÃ #™ÖÈ´Ò„_q­‹zE– 6¨t0V Èd¬KŸá€é´D#˜rƒž&Ø@僑chmO2ñË -½/ÁE^Sq©jB4‡¨»cìhÁÊs…M¦€R°]ËÍW®l:/?Dcú/»îT¸¤S_PrA=ÁônÖôÛÖ¸ë+àLÌ)VA(€êÛi‰Ñ:K€Häœ:\oQ¾=ÐPV Ì “×M1m«ÂvyÜ©mwŠ# ¸å/\) rÐ=qVc4rS—5½‘y/$E´‹ŠZâ<ÁhÖËnô” ªeŠ’ù0ÆíLQFè@\WÝ@’2 ^ÈôbÖR-«ÈÄÖÕ•uo;QpuC=iÓê„ç[à@?Bx–¹Î©ÏฃÛ@Ò¢!9ă'Ü}á„ÇúEÑäèïÛIåÐi÷– ݺáX «À£Æia…*Z‘ :Nž‚ (¹ÖÅÊh †Ê )'õ&¤†™8Øv.Wî1°IjFŸ+ 98Vsßau¹žÏ!ŽŸÞDu®~ƒ(5¥.^•o1aõjÖDQâ1 ¡Ëxt3c„áàpˆ>M²ë[ ’@í«OrŽƒ3¤ã³À¦Çð%¤…¢É@ß\LC]ùø’DˆÝͨ¡I —Ùþ>šÍ::’€†>Œ¾êH*®vI°À :/iz98ԯΠDË =O†.Ê¢?öX"Q€ZÜf}™\ÕIdÒÑ+Üé›òWÏk²áäD¨èÖÍ7‹˜DˆæBm™‹6bÅö[o+ø•µ·‚Ç™ëÓe—>1Î1!Ýc Š’22„,²ŒPÁ»dRÙÝÍ ¢"IíM3¢Jæ³N‹OçJ*Ü$XËþš’’jGW†ÍH©÷QóL[îã?foH )à aNÈIbM/u*gÁ{æ2@W|Ëô#d“š @bÞÞ#›,=-„´ÄÈIy\JÄÖЄáh^‡x4­Ëÿ†^6ý…^m1F\Óˆå%=êkêG×b8?©ŒTѵ\ÏÊÉ,†ô"ï‰0Á ŒóŒ¸  0`ãÄ€ËýÐë ¢E fÏ*zRDË—ôœPòe÷ÄîÞ‚·SQ,‰%¡…TŒ™,†¨ n´«6{¦ÜJ­‚MÌ þ!ÔgÌ8ô@ÛZŠm JÕ¬ë?Æ-„€X€‚?ïnk”Îñ^…T ›¾ˆfE>}ry<ÒaSì÷!l\,-œö±Sy‹=jàmˆ' Z }{qf%“Âya7’k¼Hîî`dV»c‡#Û_¾ûQ[!œí¿ºþ«ï¿f½WÏcfWj©Û]‚/¾¿ª8W°pßV4k®8·&…©lÊÁí†¿ÑØháS¾[ö,&É­í:Mù5ÊYKÃ0.¬÷qRkP6Âï]FêËTNm øïË6 ï2þß8 cäÎiÞÊ\|·G&.É;l³_É8¦Áó–5¤ÿrñú+°c4öŽÚ‹[¶e{Ô0· û¯Œ``³¸ˆ6ñŸáWo›ÑXiïñNóo‡´Ky÷Í`xË©9Þú@©Þ,t½tC=Vóe¸2<^€†ná y·ãgeÝ,¯Öù‚^12ÀVúTôn`{=º/@Õûd´º¤Tp0žê“­Î²l÷’I` b~{wLÇbôårwßY6Ï!‘3½ yR{?äÕàÀ “‰¿Dˆßs³w\0hßÿöÓ1ü endstream endobj 205 0 obj << /Length 2816 /Filter /FlateDecode >> stream xÚÍkoÛFò»…Тuˆ6û&·¸ûC.AŠÞM iq %ÚfC‘ŠH¹Íýú›Ç’’hÙ±+Œhwg³;ïÙe¤ÐNMäÎïúb¯É¿o_ŸÈ tL^Ÿüýôäù+g&A¯ýäô|â¤È2=I­6ØÉébò>yYžŸO•LŠuQwe^Mg:Í’n×í|]®:noÚ]Lg8”ay½¸ûà_Nîgå’OmÑ2¤¬¹|û¯³¶øÈ?Êî2®~—xùöÍ?ßõý«|>Õ2ù°‡é·ÓŸNäÝét„‘ÿ8=ü©‰2N­€èVh3™/O>ž+•OiÀN•ºúiðüÍRM^6'¿À_ÏÐ~Ȭ_z¶]›˜­Ã³ƒzb3/tH™Ù§ÓÌ$Ítf¼N–ù‡©Î?Ʀ2‚‘?ŸÚ²eðzS×ùYû)È-žÀctrU^ÔE×Ï ™ÊäU©ž×ì†2ÞbÅ­¦®>EÔ h—yU1¤ÝœµEÇ#3¥DpŽOtQÔE‹˜ `»,ç—\¥½›,Š_¥±u±ˆàšK>-TΛªj¦:…£Õ  U!î-LÁbsûK#ÇÀ{aÚÊEÔ]“!G–#Üj'p7sÂ÷×Åäæ›yJm¹ûH¶ev’çA¨wÄÛyam¶„²v¢D–FÉÿ/Á­H3´…— êÂ¥ú.ã£DÞS8ˆ‡ØK™¼Ÿy©“¿Îî-fYšAÓš¿J;9n1¬‹|ñs :r4ãDùU:yă$ç%(ä*päC,ò.gòZ¤€ÿ±(×ϸ/¯Óë#·À-¿$Û¦"óêx’-º?»ïŽLf…ÿއâ-2i÷Åâ uöîä! ‹÷ÇT¦:_ß,Ââ›(þCYÿplšo]øïXÃü ãoаόg ƒ`þvDP&ip_¨ÇØFoàÃá=}ÿ=ãEÍesö{1ïbýœËy•·-WË—ï= û¥8qÀšÕÓµqJY°’rÑæËUÅÚp`=+ŒË.pÇ_ö˜ÞCi[Œc>/Ú¶Y·?Æý7›ºkQ)P'ží!î¡‘5GˆÚbê0”BÂ8é2t4©—àhþá.Xåù+t9Dнf‚./LCBŒ½œÐBó9'è¥ÂpüUYuÅ<—`ˆ¾‹`”ðX-`{3•S¢O{ͬ7.$Ë©‚"}L6\–\æWEìÉëÛ&²qRw™w\Ë1gY<.¦ UœVü¹âÞ¶¥D†7àzÝt;ãR\E%€~x8¤H=–ªÓ™ƒÄö?”©m¸{ž×‡Dt],<„Ú`F£àÔØ´”ÍôðA¸4»­Ù!Ø0HØõž>SÑ“ýbwÆn1ÎWT€Ì\£µPÎô ‹–§À4€låž[»ž >«<à³û÷6o¹ø‡DCŽ‚ÄŠÌùcœ†,Û? ¨Á#|› éW< 4vÄTç[Ôô–“<ö|SÏ»²©A+|zc ’A¾ÑK`Y‘Æ‘Jbs¤’¤ »Êm•%­¢ž³éŒ®,PÅf7ÂÉÆÁcSã%”Ö¤©Z›¤#tøÓpGU\Ú|û\–u¹Ì‰cÏ_Á¹wN§ 9”x¾}Â)yü¾Q³BãpVìÞËMÆet‡º¾T£u ”± = Ã Ö4ÚA°¡Æâóí À鉮ˆ»uÍáNx[vòÚ@ðq—)çEÞmÖ,ÆÜÎf;o•m­„˜‰Áȱ҄+™1+ÓxèŽÃID‰Õ9™=ˆ-æ1Ø‚÷‹ÂAPº§ô+öù.ÍiùrpðëÆÞ¢äÁ“+Š|f oVdexîe÷Âýã<ŠdŸJ×]J÷Š:d`ô×ÑuÀiÑYHfÜCEd¤ìêxÚ¾B¦Þ¦íZXï¾uÏÀ‹(;ææQÕPZo¾”™Ó÷Ï1&^GÆvüƧ›l?A}ƒn£Gz®3q‡uVy[VU~@¯uÁV»>ŸŽu¹Ä žGœß>œ8Œàc%ç‚%À ñ+Îò˜<¸þ…j¼?o8·÷2G«µMµébïõàc2ôrts@Y3>Ç\³ˆ>æT”acñû¦íŠ82a6w Þöð¤·ÏMõf‰áWš`އ è°\«ªœç]ñô4ãÞyS/Ê:#“we=辶C07Ê—bÊ—úÄpñ¡nhÕù‡Ù‚ãÇš;øÄP±\ºnÝTÜàÜs8|wÊÒ-ã°sçqàkk¹LIå´7ÂW±Ùˆ3…½h—NýH6û 4-²°ÕÔ›<2%.ÕhØjÀ† ä+{‚Æo£VGÑ ­ù„ =ŒuÛ'R‘W1uÁ¦G}Gh[v›œ¢^æ²X{v5Á=Âqâ ²æ!”à `PnžmâtQgPŸúaxå‡ÇÖ·”d« 9ÏÉxA’3èX”`¿Ìö ìÛ3MÐÞ´ùEiž5Éée\€’*^ƒìÂy×/Uz[Öo¿¿­% …^—+&OÙ] =‘ÒâC““hi ¨ý®™Þ¶€*µ §ý:û™÷¢\ógf}NÇ®y–•ü{З@–*e,Q3‘äRp•W›X%„RIÒ<ÝK-–R\‚®ùpò¥ñÀQô8RlLëG7…6Å%@;nDGãò© ìncKIî-Ú2ö—õrCá@\’>VØ_ƒ`ÿeýp}MÝÛJèáO,Vqæù¶X߇2cíî`Û­‹|ÉÙNÿ-ˆ&ì„F|Ã1 ³DAkay8CÁuzT¡Þ^‘¡ZÔ-ˆMÛæyñ“ ¬4gm±¾"íD𮃠k´Š-÷1™±Ö6ˈ’’2¼ê­ߘVe~VVe7˜dæ,M^TÝe³¹¸9Ñ>K^–k”ªèfËMÕ•u³äO£@„–3,ŠØŽ—@hƒ>´ BËŠe¯"Ôàw€¸>;å ÛÜCsížÎŽ+ÕK²Î]m³0c‹Iе’J™\”WEì\6½”`˜B ,O4¹áþè =½cNÓn¤¤dÀ„›ˆÄ1PÒÇW`i¹DqÑOǺ£°Ê ù5÷àt§1ì…’Å k£È–`|[q°"Ç9Æ/GX[6míÀhãÿ+ÖHÙÉu¥‹ÍYÔí!¼Æ÷bdS®wàA kÌ‘‚nï' â… Ó‡:ïC÷g¦<à㪭³ÿ ã'^Á¸1…Ý#ø¾›ÛÙ(„Ågàý9¡3{Ö#ÆT«}öÿíhì=…¡ß S%$ŠÛ×£1`Ô¨»4No¿?†xóÆk×&O•UÀ>Xh%Au†E1îWé‘’ À˜IPR lrú¡véÉŒŒJ­ÚŒ(ö È¿J3q“G”~ėɰÏÈG°0*ƒ1¸oÀY&”Ñ£üNá‘( M¦ö)¬äm†¿6Ú½¯~À7@£ÿ b𪪳TŠÔ웹ûü‡ÿãÂ@ endstream endobj 198 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmDSdata_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 208 0 R /BBox [0 0 494 494] /Resources << /XObject << /Im1 209 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 209 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmDSdata_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 210 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 211 0 R /F3 212 0 R >> /ExtGState << >> /ColorSpace << /sRGB 213 0 R >> >> /Length 1107 /Filter /FlateDecode >> stream xœ­WKoG ¾ï¯˜£}3$çyuÐ0Щôäºr£r«FÑ_Îîì<$\¥=h$îGjù‘œÕ­Bõ¨¾N/ø¼ÝÿøýºßOZkÕ®ûû§ ¿»;ß½ûžzõ×ôé³Òê— Õ­|'Ô¢ ~˜æ¯y±Ú4_ÏÛIݬ(oÀ¢2´Q†DAF@=õ“zzÍÅsö“z¨4D"Õ®‰‚Ë•‚> °ü9¢çÕn21€¥UþmºË „ÈŠNË Úƒ¬èTb HZjJA |@Ep)‹Óï$9Ù,¼%)7;¢BdÓ¼“u:G Mgá4ú(+ h²RA‹GYi@:Ž@‡i@4¤âñ(+ èÎd% ˜ÃJ¨ «'ì(ˆRYÎ­Ó kg…µg…Qn§ÃJ¨ ƒ8¢ÂD GT˜ü8+Ì4Î ³O'á4<ª„|@K㬰õ㬰#pÃð9Ÿú‡(—˜RñÂJ ã¬pý™¬È©‡•°\m§A#7ލÆY1È㬠À£J0Ä`F•`(¤Žn2³b8Œ³b ³’û¥h95%#0@R‘ÇGYYó)÷ÏÜ]×õtC~¾=¾»hX8õ¹ÙÔ=]I©·®ë÷Ñ3ZZõ®s¯xéԻƽâ¥QïúöŠ—>½kÛ~ù¨úaÈ¥ëy×Mí8án:h§ŒwÃA; d¼› Zšÿy³„(“„’#ÎÑ¥›¥‰»ÚÒ%Å*·G*„bl.Ù(â5鯨,ó×Oÿw]—€q~w8xwX<‰*ª˜Z^yõ§«/»Ÿ·Ïê÷õp-’ºÚ~ùóåy»WÈÓ_¯Õ›ùÙÓöú³Úܺx;o×ä§‘PH›aqèýóöëËöé~ñæï“ïýßÃ’7¢Ì&rÎn A™°šìÕ[%ý¬¡ƒ@ý+?NÿÁˆ¼Ë endstream endobj 215 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 220 0 obj << /Length 3323 /Filter /FlateDecode >> stream xÚíÛŽÛÆõ}¿BhZ@ D çJ2hœºIÝÖ…ã.Ї$(¸ä슰D*¼Øqúí=—!EqåíÊ7NRXrÎÜÎmÎmD‡4bŽþÖ·Mþûòë‹p‹¯/¾¼ºøì+£IXiW7 q,‘Nôâ*_|»|ZÜÜ\ŠpéjW¶Eº¹\É(^¶uZ6Y]ìZnwMŠƒn/W8”ai™?|ð7WïgÁÂ,ß6®aHQòóå?ž¬÷7ÞíÚ¯¾öK<}ùìù?ûþ]š]Êpùê`§ï¯þz>œOA¢±¹ÿK#§À“Fþùê⇠hÃ?ѳÛ$&ÐB-²íµ4H¢…`/j·¸¹øæ$lNá#M(ã¿4r |éõÏÆ‹(Hú—¨@Ûm够\®l(—Z»ì¿¾Y§-¿ ?Iðe[”Åue·½v5¿W7ü¬ÝnSdiëüÌ]? «Ê¼h‹ª7ŸÎ¸Co{IaÀ›Er!€æˆ¥ñoë Š-ˆiG‹Aöb!ÈN%:˜rãÒ¶«Y;”¢ 㷢ꪩGI=L¯,Bʰ²ØwÈоÛ(ü)¿ ±‹ð×a¢ ÍC¤öŽ#þYŸ!B3fǧV&†g&˜cÊhÀ܇AdC°Ü4ÿx%Zb ²(”i­dh©Íb¥L$Þð(ðvó,»‚œ„Rjù¢vYÑ`"Iu×´‘^Šå>·ôÛ|ö•LFµ-@bj0ˆÅg¹K7›·—±†Ã¸R¡Z¾¹”ULƒïñ²ê6977Å«Qg[ñóÖaÍ%±Ë4ˉ®†Ô—;œ>Â3®”có¦Âkß÷ÚÕoû5K×ã³.²5C ?kG“*Èf=ÙÙ±4âÍÚÁ¦Ú&TïyûSQÞr³ôòw…˰RLIÓ¸œAä×üj &ÄòIÃ]iéŸÐéC™¶ÅkçQ Íðˆf^CÓ´iº­;&–***—Ä| .© ‘h¶N_{ ïÈšÈ;©ˆ}×)Ñ„¯Co4Z Åj•È{ph–n²nC2#\‘RÞ’>káUYÈX!{,`Óá™ÐûmðGý¸óÚåûÛ5)5¬DÇ ^ýF@8‚ÜjÚºB%ÆaXmBI ÚÄùZ£^>¯H9r‡˜ó C! ‘Q¸*?Ú:Íݪú.T ²×ó–ÔŠlž1Š2\½)ðÈÐ$-f)fÖ~{DÓÆË+’ ,½à‹F§ ›l,Š[8\íQ%»©«-š…H–2àXÜ®[d~Î}dƀśb½goÜ÷öFz{ãSHÊ5ní™b$r¯8¶ôëe^¼.r´ˆTѾgãy¡Äò_¬,G«Ñ´l1k ¾¥;fj•"Ò Ž ›=êÛ›=lz³G¯ÞÌÐ;}25ØbƒHp0ˆÁ€Ë¨òñ7Dõ5á ¾`?[·#åHÂñ×é¦#sïÛKT-É[ž4ÒõdôòÏ`ù·Ž•;.f>¬Å aãáw&ÁÛ~ÈÔÿÅs„¿cíæp"K'Y>+¹“­ ¼äî&í6-7€]-°­‹H¼é0bé'mù-õƒ€ð®cuÇ®2À|h¦¸ó¤  ]@ÔAAö)RÅ‚¯U°AòèáüdŠàå¶.ú%õ UüìϤŸ1b4÷)Ê1îO-ËýÇDЬë®|Ã,íL"ÛÉ3r'D­ÃgÁilO-‹·Ä–ÅTYOÆ`K˜0˜KüÃÎ<ݱ( Á–„¶Z÷5sË$ÍRr­“!"½ÛÓ°rqøÏ?¦W7â4qšH^Dw# @Œ ¨£pqtos"j|37¾-Àý¬¶ð„Y‰?ìCµýC‘°‰MS 耶8!* $SBà›œ…Ø0J Ùzß÷¤XHbØ0Qæ–§E³»/aÁ£p<‡^¾+3vÂè§Šþ:íýò8ÈÙF R„@~èu?¿u/ïCO& q?üÛÀ¦ëƒð={ßU_¿¹à/Á*ÉŒM‹~,iiF)¡c[N9r-R/cè†àUõv×§ÇŠð ñl¹²å®ƒk¿0‰Ó§ÏÅu}¨‘TQ(%é)öÜF‚${ ÇïƒÝ]MÆ­L [Ç"¡×É8Ÿ/ šî‚†sX%HOYÀž§"7ÆÌ‚Š›; d¬ç‘ ÌPèCÙ|qkÜÇÈamAý£)fB±±3±¶4@÷‹Áôßg(}ÝJª’-è˜Lœ²èXå$çp¸ÚbíB™âë $ÍžA‹‚~Œó„…8* ¥HÎ@BE®ñæŸk¸I³¶ñ¬x‰E«Þ(BsZdÖúÞª’ñŠ9ÖHz<Ÿ¾yû˜˜Cý}8ÍYÆä-?ûz¦™>Lç¤b¯kdZï†[mÊéeýóÍL›–{4vRû}(AÁ5‹­†Z°çW—1À‘ãʦ£ÔŨ=:FsÂÙ0·ö±>uQFèëvœçwYq½¡"ŸIú%(‰©ù­Yûª ÌÆ,Ú}*]ö;ñV?Þ¹üçòB}„«´ ¤Ž¼If:†>ÈU ÏÞ£¸6@6 CÞ—ÛßZ)Mwö ¹/"ú¤ò²Òëç8zt.‹HÓ‹R"‰¼78“Edè¦âLðYžGùöÃý‰ˆu !tœ’2£ÝÆ--¤“´¼¨ÏKˆ$âðQå’À²f"—ì ž áÈFwä¾3…,¸¥•¹ ïyÈ)†ÐϪÁ±ö‰Ùq,€¤TPŠ7šŒ6y „ªÑ¾¸£ÉúO|‹/»{âZ†ö[è(ˆ­º[EóuI®OjvÛ”‡äG‹‰Þ×ÀØp\YRa_Yü0‚Ø¥b­«±ºbòÃK×ßc e5ÃÖäža*1ùިܛâÖïÔÅ çÓô~“›Žk¨!׫!Öp›cž’ë~@£º`4” çMÁ5B½¯‚*N¾©ì£ xâhݯÇÃ|²¯|U;_O&ÏÎ ƒÎ>¸àj»Š—d<*à ž$xJð¾]4ÇHëYèkÑ׸ç[–¶/{÷±í6t:kG:Ç#7ƒ*ôƒÆ?ãaÄ0}¥K-¼ŽÜùñ©xDàxÃþêÙ¬¸ ïŒË•sŠZ”îkà¤3Øæ»;BŸk8z¸ç¨0ü„×—ÆW<,&éù—çµ¥ª8¾E¬©ºš»ÂgÒx½VFjjÂ0–¶UÓzŸQenˆÃ¶à’Qª1lëŽNƒNö×8®vóÁ\_Ö×Ñ£ùñ¸T‘óo§‚îôú?—³G†êdáT`Á¹<‚Sq® v„ü>I|¥åÅü#舑â1IaÕJ^<9%˜^'ê%s†-°¥‚Ôð€–—OžŸ#‚hJÊGÓ c©î`6cÕwÔ@öÏP5¢¨H~Œ<¶BÖ»ÖåhùûLL¶bÖ©y)ªì<ÙDb÷XÆ áäX¾HësdI Ä£ZKØÑL´?Ýœ'™ˆã»b ýq¦l" „šÈeã6Ÿþ¼Û´EVÕ¤”n’\à×a±²‹>V'öåE9…¿Š©JAñïÆ(€ç’T|¤ÆÅDoî|gÀÏJüö¾‹“øFa2ù`ÉÖM¾ƒë“&ú™-'MsýzôŸµÙ>!Dè‡ü@Öð€ËJz~1_ðl+ÈÉ‚™¹üžðûðí?sÿš>~›ý×ã”5}|¿ê>Mwó£ÉY?GÄ’5Ù¯I5â‘Nÿ¼aõ@N>D¶>ÃúQæv-_š º?ùrÒli%=µzÞ÷9¦> stream xÚÕ]“ã4ò}~En¹çn-ôiË<À- KÝm-Ëð¥q4‰oc;ØÎ.óïé–ä$öd¦œ@˜©J¤Vw«¿Õ²C WlF>›å`ê?ß~uEg°0ûêê‹ë«_*1ËH–ðdv};S”hÍg©dDfrv½˜ý½(noçŒF¶±UW˜õ<橎ºÆTmÞ›ÎÏ·­A¤å[؇図+„øâùwðÊØ¶XVçÞå³ùh³KR¢›10tâCàg· Iªˆ=üv»^?%aîEÈ(1b–rÂá¨É„æÇ? ãTFß·Eµ •ÖµÛ(q~\߆ƒ0?XÚʆRÜ…šmÛ®(w‰–×e 3Jº°åïÎ:Y™ šº'&õWŒn•’©x0R»×Í{ÎwÎÅöEUt˜)bÎ%œ£b²EèPÞÛ«¦¨Þ™epß­É»ºy¢)æ‘ú‹váO¬¿ç(Dïç!Üê›ÿÛ|”xùÚ´Áa‹òÅwƒcì¡£Ï_ÅpÄ“{Yë.8HƒÿM¹YÃâq~.À!ü•Æ@V™_ø—ƒgD¥|¶‡.LbÊä¹mÛºi?ésq[u-|¬sÏ÷PÇ2æÌ¤HöZ1M“P]øG àPKk¼…à&GS9%7í¯`ÛM;’ó dФœTHFÌЊÖzÃRìiÒ'ñ;c8Onb®I’aP¯¬¹ÀÎxrt4tÒœ“ŽCçìý’¥ó] \^ÞÕà ’Ä2%:X?$gÒ¥©sv›Ô:¡¬îâGwa9©ôø"Ȩ‚¾/î¡{ùŲ¢ðÇ”x ¾„ZÏAX c2$æ‡Äœ š…™à`ˆ”ÉÇÎq@ÍU– ÕS³,ã$£âªÒè=(ß\ƒ†É”ŒÞüi ‹I‡®÷òað<ÏwÂL] ŸÿîçΠ3˜^vþÜH½˜h…Û5¥ò~;ý{«÷À Š“D¦'{Vàf&E:½€€F™ Bë$¡Õàc<ÊÁ7KŸš§p·uÊ å)ü±ÃCn-xª{j@Ú‰òÈÞêZRž¥=5ôYÚàGžd¸w–‚ÚJ21 ä4£?û«…_òìàÝÅþ.?¡V^ϵˆjŒ@÷üv3¹ŽÜu!îi6n<|eÞõF ‚…»îáòÆÁv!pÉÎYw7uE CÓÙ.Rªè‘ë­GËMX¬ëý¦¥_4K2eq­Š[ßeÌÈüЙx\wBæq&Óèµ¼4ëõxR÷BPQæ9ã`QüH…° Ê^R"xÿ(g7¦µ Ï  vo¸O>G7ã#©|å^;¤Y™£—ÖEÑÛ¾ 6T4Ú'²)mgÑâÊ3êp\÷xAÜÅæ×¢…Ó,‰¾EÐ䚎h΢WØ©Œ‰ï-ïã£3Qáâ÷;„[0̤ „–>‘px^.7²~0¶!‚¼N˜ ½Nu‚9®ïÁñêz ðq†Ð™‘D§@çð?›Ç‚jÿŠvÄ™)’fˆGX‘L³b8A¸Ñ¿pãŒðt‡¼iB*’’ÁWðî%<,tÎ9Ùã@<ÈLG¯ÀBñ} µKX¡’èƒsµ»Ê„ƒw·)rŒ-W|vQ%ÆM@tFpÈ·}ÆIx‚†¨þñWÅre‚/¦8ÍËü‘c’(ÎÆ¯¥>ÕS¿·ÒS;ícÁàö ½¢Ï8Þ\öðœmÎà'Hšh÷âX €…¤ËN”ð7‹L endstream endobj 233 0 obj << /Length 1850 /Filter /FlateDecode >> stream xÚÕYÝoÛ6Ï_¡·ÉXÍŠ)’ÀúТè° mæam1(6íhµ%W’—výîx¤k)A4qÛÁ€Í#ï“w?ÒŠ'ÙÁw»téûôÅI–ÀDòâäÉìäás•'–ÙBÉl™¨Œ#-9“V&³Eò&}Z-—ž¥®uu_•ëÉTh“ömYwó¶ÚöÔßu%­&S$¥±²^Üœøõì—¸ xp•~ê\G#UM¿§¿=žvîu.ªþ<ì~¶xzúò×ßãü¶œOD–¾pz7ûù$»¹Ž@ùlv=øð„çŠYÁÁè+r™Ì7'N˜Ì2SxŠƒ¦ŸŠëÂÀב²)›L%·éó HÛà—W4ýXn¶k4¹Ð"œ)…G5jè-ƒCU=o'O\ñV•A˜¹e|ŸÁŽ+½­ 5;TF€âˆz¸sÛÒ/†ÝÖX¯@:*Å}ŒÏ7uì8š è_Fa*´z^®ç°Ùn¤†!zôò¤ûR í\ëÝ€^Y™ÎF â‡à+|ðib郯¸j:K ÁԢܒÐñ/’~:DÉ眗!èª í ë gîZ¡E¡˜N¬f…úœ¨$3êR ½½`—ÓrCdk1¬²Zoî^ T5@º_Oà—gz Èóª¿.Û\Îð¾_fémš¡ªïï V˜‘[¬ÜéµEšÙ>¥¼¹ƒ°|xQwxˆTN€í½Ï#<*"æâfñ~?…9*€–‡‚ôÎ/UÁ :CUŽˆ1£ÍÕ@•³¦s_¤Ë7p¾Í‡{+ ÆÂª¯€{ÃcµÞ¾/Ôk ã°ÝP‹ïóf‚i¡¾žy‘¡Õr`_~í³…7RHtèíkw¸¡Óÿjx­v.ÞÅË>^èP› ?-6¡ð‡»ü6¼4Â[}·X ý)|pÓÆ»ÿ¸>|'`#EcN8•®á òl°Bæ?›ùÝ endstream endobj 222 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmPrecision_plot1-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 235 0 R /BBox [0 0 495 489] /Resources << /XObject << /Im1 236 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 236 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmPrecision_plot1-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 237 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text/ImageC] /Font << /F2 238 0 R /F3 239 0 R >> /ExtGState << /GS1 240 0 R /GS2 241 0 R /GS257 242 0 R /GS258 243 0 R >> /XObject << /Im0 244 0 R >> /ColorSpace << /sRGB 245 0 R >> >> /Length 2827 /Filter /FlateDecode >> stream xœ­ZÉŽœ·¾÷Sð(Lq_®²!BbÀ™r0|p:#Â[Š51’ÇO­du§-i„†1¿üÕÆâVU$;º×.º·î·Ã÷ŸþsÁ‡ÀŸŠùçÃû»{wxñø·W/Ýññœý>•ýõÝöÝ×ß!µ»ÿ~øÑ÷ÏCt¯áïí!Rs=üqÓ÷r9X“OÝ•êCq¥4Ÿª+!ûÔ>ÓÅéܛ݅àgJÎ~± Á×¼».ºÀÆcXÝéPæð5)þõp§@Ù0Þ©wßâ¼rm>Ï- x ”\}ì[@0 ´áK”8)*Ãç@ìXº›¯p ¤Ô}Ú ·@ ½U…F`4Œ€À-PZµ>*4Nž­$îò¾µÝc†fÐëô¥˜Agl=³¼±ôØqš÷ 36³ú>Œcr8 ͨ 4=ÝW# Ð {k~šahFVs6£*ÐŒjw̨ Ü/^Ý¥ÚÝϸøs¦ÍäKÛûÕ]¼Îå­ÖÎv·s9G_p`¢8r†’|€’ÏPö¡ʾdEG’.¾†Í¯>­+ˆl³´PÀ©¼tÇô±.ÛŒXšÛV¾ø%ºÖïãáåÙØŒ0 ß©uøËó±¹äâØ8挋%…ІO–Ò|­„ÆÔÑÍRŠŸMÑ‘¤:¶ø4ûKWÙVi¢paëf j›ÐQ<¡¶…/~‰®õûr$j›ÐË< |;DÆó‘¸äÊHä† .÷ìsæ‘P ·˜;Mo¯> @c´ ò6OTT~ ~TWÙæ¾ %Q¨WÝèsß¶ ±mi[øâ—èZ¿q$œ‹º`$’guQ`ƒBBK™>@È #IÃâË‹?)¨®"²MÒJ©~έ[1”,Û„Žâ µ-|ñKt­ß·Xß9S’KˆZ’.È]“Ðo+DÆN{B¾ Þ°ÎÆægZ£ª+ˆl«4Qª¯eë ùË6¡£xBm _ü]ë÷åH¤†q®@å˜w>—\‰Ñ·<)qž,Ò<ô¦%["Ïé;ô´AO’"ò¶œ¢Å¯~ô­+ˆl³´Pšïeë±mÛ„XZÚ¾ø%ºÖï[ìôÌA#§äïôEɘ,°2Àœ PƒÓÚ‘·%1‚+RtW]Ad›¥…Á­ eÀض ±´´-|ñKt­ß7Ù0ÄžâôMò P°}žP fØ~¥ÉÎMy ‹Ã>SJ”ÚYWÛ¦(¦©BXª•V–mFl›ÛV¾x*ºÖïË‘èç;'œûÚÛÅH\re$ ûÈ•*é“¥Dl#C€B7 ¢*0/¹p²‘·²úÜüA纂È6K3âk©K·pŒÛeÇ i[ùì—êZ¿9ú'È0ri6­n…ÒHÂlQ †ªª'‹¢#IOœ'åC¦Šsé*jZÝ,J¥d®º«—e»hu³Ú¾ø%ºÖï[ļX3†§” fqôWJÆ-¨`0KPVÁn‹zGUD¹ ÂïL›ßQié2bÛ,-˜ÜºtáÒû²Íˆ¥¹må‹§¢kýþ¿Þq/GŠj ‚ÅÅN¿àJuƒ‡IbLÕƒ«¥Dœ ˆ ˜ŽÔ°0" Í)!Þ» £‹ß±Xº‚È6K3J( TJ˜–mF,Ím+ŸýR]ë÷Mb^‡yß åtɃJÉx,Êp¨0o³r~E´û¤úEøpžÃy]Ed›¤•1f/]LGÛ6!¶-m _ü]ë÷-ò`°#t-° çjMˆdxžƒi€RôªMðI¹…ª'€¬’¨v]õ`Íe•‰J›ÌoXÏúz›Ô—)莊EÆÉR"†èÁ¥™«¢£$J˜ªÅ‡]¶® ²­ÉŒ(¼hT—Ú&ÄÒÒ¶ðÅ/ѵ~_ŽÄÓǰý:…Ý›¹L J¡ù)Bv„†KD!]mßN!_ùƒÒê*"Û$­”@w'¢ ›–¥Úf͹må‹_¢ký¾Ia±xÀꌯ" ¥c„Êaï!Âj£óT¤=ԯʇ¬S¤ºŠÈöQ®ˆBçÞ¥[0Ð-ÛECêj[øâëžù}‹5+0=Uƒ$S`úªI â0ö$›" {¡,þ” EWÛVi¢ ¾ a]h¢Öe›Ñ ’sóÅSÖ=óû&%Dß4É÷ÄkbQà0‡cˆOBú€Ã8°àaDiBVN›_ñŸ¥+ˆl³4SÀ0ªº¸-æ²Íˆ¥¹må³_ªký¾Éî€Ò-O^ä.'i&*D±ÔëüÇ‹ ¬‹.aad“rKÄ Ñõ®C ‰n5D/âW­àÄm —½a=ëëm‚d¢«ùD üd(°‹!%!š‰ÐÄ@EO‚8U¼ÒXüêgݺŒØ¶J… ÕÒ²Íè(ž`ÛÊOE×ú}““R Ûž3f´“¥PA‹hÀ.+Ù"öDŸp3]e*?ãàÒD¶Uš( ïA–.EÎe;®4«m _ü]ë÷-6D‚ÜøTU¸€Z”é †.<èF.h‹": A£š›ù€æ\ºŠÈ¶JO>yå±u+^',Û„Žâ µ-|ñ‹uÏüæ3£¤Üosß“%šd–K¢kœ¨€a¤7_x¤|žNÕD¶õþ)°¡GYºyp"dÛŒL¢\|öKu­ß·8)ᡦ:ºfN}‹2yäæ4<öÒ(Ót1ây*ø®´ø«“¥+ˆl³´P:sX7Ó%ÚfÄÒܶòů®¹í·Îj¤3f§äs²”ŒµŽ5lÂ!%ò;GOŠtžðD«üŠÇà¥+h¥ºE‰x¼t]f«mBúÎAm _ü]ë·Î*ÏÚŽÌ;>ë»›+ôÈŸý*o`xKùÛéã_»3¶YÝßë¯Ã«½ûœíþ½¼çE<Щõn ñ'à“ïþÒjþ”îþ‹m½SÓ‡qªx•Ó1ôþäžë¹»{øöžZùe¼‹€ðÇÚõ©Ú)Ó…jǧ·†•µŸÜ6=šÒN»m;Ò:óæuýÓKàòu½ÐÙDŸyí£/½nw½òž=únþzä={óÝüõÆ{öäkøúÄ{öâ‹ü§,¼› ‡¾!Sv:a¶/ÊÊ·ÌöAYøgïËö=YøgÏËö9Yøg¯Ëv@n¸Ë ­bfXf\¬¶O¯ÕØé7VûI+½ÒAqiç§´;žk?¡íédk—ë»ì)1î2ºóègqc\¸1Ø™D“€; ¼øáÙ_Þÿ »ÿýwzøé{xÛÍ=ûï¿><<>þòþÝóÝýëK¿ÈãÃWÆ5øß‚^5Lo8,Ëpáø ù𙣤›ò¯ë?!â7…¡Bf¨'ï¹B¤ƒí ®:|‡§Ûæ2*–RÇæN|Å]! ÿ¯guÌÊB~ñçSpß¼?|ÿ…c©+¬\LmÑç}(mJ£kQÚW—çueX­XåüùÊ™e”Ë”{ÇÁ7Ê×wÕUå‚uS·Êí Ê“k“­Ü?¶Ö¾l^ •t Ô†±ò6üî÷Ó?>àº[0¸g?ýûwØ„W7àÕôsýçzÏô˜~R ŸÈš>¹…é5‘ê=L)ÕŠ(Þ"øš;ËY؈àN5"Š·þ£·-²°ÁÇ®nDw¥“wðÇGå¼GKDñѨÈÂFDz°DoíŠ,lD¤KDñùââøð?SX endstream endobj 244 0 obj << /Type /XObject /Subtype /Image /Width 300 /Height 1 /ColorSpace 245 0 R /BitsPerComponent 8 /Length 832 /Interpolate true /Filter /FlateDecode >> stream xœ‡7ÔqðÆãU¼”‘-‰D!3޳׹éÜÞ£¢=T*{¦DCY‰ì.tö>ÎæîÜô7ôýù¼?Æ×Àùêž:Œ§Šà)£xŠžÁ•#¹;h® Ë•â¸R'´–B[¾à›¿â›À2ü²øÆòø† h}e|Ý7Üw° W[…«©ÆV×@«j±ßj±•ß1•u˜Š:Ly=¦¬]Ö€þÚ€þÒˆ.mD•þ@}nB}jB}l‘Z%-ÈâV0î}[\Q[Ü»Ÿ âm;¢°ñæ[Ð›ß›× ÆäþŽÉÙ›ÝÕÙ Íè‰Jï‰Jë…¦öF¾î‹|öG¾ìH€¾ˆxþ'ü(O„?„=ù }<öh0|8ú`(äþ0ôÞpÈÝÁw@ap’08QOßß º9 åñƹ{9ã068cMÀ˜ŒI(}ÒŸ6¥NùS¦o÷’füˆ3~pÖ7aÖõ‰ŸóÁÍù`ç¼±óÞ˜yo4¸à…ZðB.xʼnvL}ô¨ZWW£££9rXsèF[[£¥µ{ðàîý»ûöý „½Ô endstream endobj 247 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 228 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmPrecision_plot2-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 248 0 R /BBox [0 0 495 489] /Resources << /XObject << /Im1 249 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 249 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmPrecision_plot2-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 250 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text/ImageC] /Font << /F2 251 0 R /F3 252 0 R >> /ExtGState << /GS1 253 0 R /GS2 254 0 R /GS257 255 0 R /GS258 256 0 R >> /XObject << /Im0 257 0 R >> /ColorSpace << /sRGB 258 0 R >> >> /Length 4490 /Filter /FlateDecode >> stream xœ­\M¯%µÝ¿_ÑËaAÓþ¶·C” %3Rˆ¹ˆË&(ùù©¯cW_Þ<æ¡+4wæTùØÕv»\vµ Ûç[ؾß~zøÛoÿÙŽý8ô§Ùýõó›íÛŸ¼ûûg/·Ë»‡@Âcó¿ï.Púêõ«O¿`iÛþûðåWÛ±ýë!lŸÓŸï‚4÷ׇ÷7ý°½œ–¸Ç¶å²y˹î±lùH{¬hâSü‡í›õÇ>bÜü/?±—´á¸y­äÑ÷xx…$ïÉP¼ ÄÖöVë@*uOc0¼ äTöÐVÃ\ ö=ë+Pî{:DrÛûÒ®1¶=®€«@:*[‹€®@¯ûá \r-ÞF@gäéMÒGîÇ^ëzb…®ÓËØsv®Øuzê;òêtÅ®ÓCãa^®ØeoÝP,}®W º'êm/®€A×íµîÃu»A׫ô6'׫]¯F2ÇõªÁUà“Ï^ÅÒ¶oßñËŸ’LÆÃ~ezö*<®Õ©Aµf÷¶¥öÌöÀ=ç$qPÜS!”ö£J{N@)÷r,}ÙS_\CR·–6 •&·=”Y·"-­mCov×Û}yxyê›~tzîXýfêËsßÜj¹o6êæÄ/K< W|õ’º—"¨wBÍÌ9ï£]¤teæ^Fr IÝ(-’L&,nW€º]ÌiÛôf—q½Ý·=Qê §L=Óo#Ïxî‰[­õDªüÂ¥–ö”´' ÑS“ámePgmH¬Mƒ‰ÐçƒÝ¸@R·>›I¢¸zpÞڪ[Ömm›Þì2®·›{bÛ¹.zA"9ÉCGuJh‚gAƒ\KûA.§w^ ]¤4½|iꇬ#àIÝR’²±¸…]ɬ[ÐÅ,‘¶Mov×Û}÷;%Yä"-D5ÚL7 ­]CÐ k yÆ&s\¾!ôžõ¥OòŽ‚kHêFi‘”½äÅÍìògÝ‚.f‰´mz³Ë¸ÞîÛžˆ•ý\&?ª>ïÜ·Zë‰ض4dá¼z -óô45î4%Ò{£'­ô$H¬­™‡hêËÞÛâ’ºµ´IêÞòâ’°®ºiikÛôf—q½Ý÷˜éIFŠq¯:Ó§$ñbÁ‘{àHŽšŒV×fH¬¥U’=8ôC¼;¸†¤n-m’@æ,.…}Õ-HK[Û¦7»Œëí¾Ëì .f÷Æ^m4 ·¯ÊÎŒÛ/2Ø©‰µô2°ÛWI>YÚ• ¤u‹ƒÄ¢åR´Ró¬[‘Ö­mCo–×Û}Û-ðx§Èc_Z½é‰[­õ­>R‘Húê%ÛHä Ø Ѝ2 ­\<ØŠÄZrYm,}—î×Ô­¥UBþ5—ÉÍêc¬î¼|µ ½Ú®·[½¤z.ŽŠèfJd‰¼š—¢.§èEâÉ t‘ÒƒÇ zZ©Â˜\ ŠèfJŠ,æàfŽ^fÝÑÍlÛôf—q½Ý÷ðy¡$vO1’ÏRïIâ)A(³3‹VÑl äz{’µŠÜïˆKߘ4¹Š´n-mÜ2¹´imÖ­HKkÛЛ¥Æõvÿj¦7žËA¼Z$gq3Óo´Ýðf’º˜—ê®Ñ $G‚|/Ç‘bX‰LžFÆTÎÝʛѩo L®!©[K«„B À¥P ÄY·"-­mC¯vëí¾‹Ïk4.d-9ÍÖAHo‹mj;[ÕU¹õ}@2ÛøÅô´Ÿãq5.Ô-¥! ì³'——£U· ­ÛÚ6½Ùe\o÷=ÖÁv°wâ‘c%(<k’'ãý …š´`K)Ú$› Í¼)Ï€Ô*EMùÑÁ£×hÌZHQkSµfò¼­÷Yú’8Ý^8ȸzIå@#‘‡bÝ5Ôã-sºØBIC5õ4‹Å5$uc1‰¾4àêKƒºiikÛôf—q½Ý·=ñüí1M¿&n7ÐdÎC]$2>¹‰ËÔp΄ĥ’éÛÄåCße9Hê–Òrvb\šìôZ¢nEZ·¶ ½Ùe\o÷]CòÅÞÎPõ(ÂI{¨DÞ™æ#ŽfÙ; ô¿BO« ¸@R÷ÅŽD"ûÞÉÍìèfÝ.u¶mz³K¹'»ïñN°#âÍ O“T _1'ÉNœúÞœd‚Û;òÔ÷C–BãÒºQZ$]ÏB”KM”2ëV4äXz³T¹'»ïB÷ClúNL mÆisLþ)Kï´§ €ÖxÉ2O.+Å¥/ü×ä’ºµ´JÈ~ª\žcÖ­HKkÛЫ]àz»ï2;(tKc#+R³´ ²¢êµìçƒ Ž³ a©g#´9ð‰…ñ $œu@åTÃxQ«AÚ¦iÕåy[ïã$£ÍGYÀ¯NB³˜–$F# ì¨$E`HYá#©/û(‹«HëFi‘H€.¡#κ]Ìnz³Ô¸Þî»ì”9íI!ñŠvõ hušå¡p$›ŽÀObHw¸IŽ2¡O|"8¹†¤n”IäsÉÏ9ës™EÛ¦7»Œëí¾Ç„ˆ´öº«Ê@MIç劻.Þè h3ì…h“˜[õ„Ƙ\ ©¥‡î¼R_ÜÂÇ ³nA³DÚ6½Ù¥Ü“ݺg´å‡çÛXçd" n1K9ʱNŠÀ(ÂÉA¯Ã ®!©çç,¡ Ýó䦮 ¡Ö­È-”S¯vëí¾ÇN‰75¥ËÖ5éÒ7%C{>òšÆÛ^Ù%.E:N™óJS_8:™\CR·–6IÓmŽr“¡nEZZÛ†ÞìjØÈ-»1ªAö˜MŸ«—$ޏ¯iFr)Aó-aœxG }ámðäšKÝ”>žÜC³Q· ä9¤mÓ›]ÆõvcTuÔ–g^þy·-K’‘~V"Ôr`|JAë÷†˜â¶ÍòKýɵ!>3¿Dη§ü$IŽr’ú)ŽüãÊ/œ$pO޶ôr†>¹†\~I%´.uri+Â'QÈ/ÕyRem›Þì2îÉî9›ú“Û¬øt~éà5û”_2I×ìjäÅ;rªzÌ"Í“4q`ÐyÇÁ5äòK&‰²Ê÷-øÌ/ ÒÒÚ6ôf—q½Ý·=ñžÕ">_Jºwù%“ÈQ9§ÂùÜ"X ,$#Ó³£í“ äòK&9xn•=êV¤ù%mz³K¹'»‘_’·ê”_2É`hwÊ{~>ÿ3¤£2¦ž¼Zm“ äòK&ÉìÁåÁ++¿±N¢mèÍ.åžì¾ÇûÍ[/vì.¿ÉŸI{lŽÆóÌ)š™ä²ôUŽGŒ äòK&ÑM qÉÃq`ƒüRÄ Ú6=ìšÈe÷mO¼g£ŸÌ/‘ÑqœòK*‘cÿ"yN^Òüb‡¤9 CšªlíÔwNƒM® S~É$E¼»rÙC†±òK‚´´´ =,UîÉî{ÌôDÀ§@>¿dùÚ%YâþB¥¬P›+ã!Á:ô¾²w7.ÐÊ/A"Ü u+ÒºµmèÍ.ãz»ï2;ø°*ŸóK*¡6‚%üxç’ù“–™_„ŒobT¯Æèàùü’Iç-Àå#’¾òK‚ôMÛ†Þ,îÙîÛžxÏ®)>_’3ÍS~É$‰}çqxxK‘¯>_*ó«rŽü2˜ž'o¤ ´òK&Éze\ᇕ_¤ukÛЫ]àz»‘_J¥úü’I:G(‘ãÀ!®‘2„ŒŸkšžWª:¹@.¿d’$‡ÅÊå`7÷•_ ˆn¬í©7»”{²û>/P?ÇxÎ/©$ÙÇ]‰O#"9êTV~)#ž¥ó1ôõà`\C.¿‰dâÀe¿p¬üRA¿¡mèÍRãz»5Óß5ŧvM<Û¸‹}~É$²ûæ¹Y5ØŽ•_ÊØçsƨ¥¥ì‰&×Ë/©„¿FK“K .+¿T mèÕ.p½Ýwñy´YŠýœ_2IÑ®²'"š~òc9 6ÊøÌ4O}—ŸÀrù%“2…K¯OZ«[‘jÛЛ]Ê=Ù}už@V3¿A厢˃ —L82A$$o-´šz6ž•_2Aà°ÏxE¾-°ZHQmS°Fx'[ï³ôéNÖç—LÒeûL>‰?£/Õ™R¤ËS×°D$5p'šù¥)I¼a—Þ†W~) ኶¡7»Œëí¾í‰çoùx2i\ïòK&É’LnEwU¾=E~©âƒ1ε>õ]–p\~I%ÔS¼M2.çåÚÊ/U[¡mèÕ.ãžì¾K`¨1Ü)¿d’.™øb”o„‘R4? MSO«ŸÈå—L’Ø~pC`áÌ/F¢mèÍ.åžì¾Ç;ÁΆ·×>¿¤’®Ñ,9*Þš÷,/#òK‚à$y“gzv‚cr ùü’IªžŒ(·i$Œü’ 8É—Þ,UîÉîû„×8Ÿ_‚$òñ¢ßyÒÞV~)ã æŒ$ôÿš\C.¿¤’&éhpyÄ•_*Øn¢mÓ›]Æ=Ù}—ÙÁ‡Âñ”_R†¥´õí‡øé13A+óšw˜6ËW˜Æ3àòK*88ej¿dýjÛ¸4ËSYù¥‚(m›–*÷d÷=vJœ–àÀgå—¦¤j°/éÞÁ¦¸r@‚°Ãå/,¡¯â•;‘Ë/™D¾d—ÂKÞWYÝŠôü]ÛVÉ´K¸g»ï1!xN³#òù%“ IѪ%ÖF±Fs@†.+o=×Érù%“dùDß² ÷´òK‚4¿$mO½Ù¥Ü“Ý–‰ˆ]¢ —_‚$ÉÑM:$*Êöõ³å—áDœã$èǹ“kÈå—T¹>¹ö¡<òK‚p". Õ›]Æ=Ù}æÆäòK&Éú©˜åù²œCÏüRD&™·¯œ½ƒ¾Ë÷”à*òù%“I¨—7Â}å—¾wDÛ¦‡¥Ê=ÙQn»ü$YSvAbó¦ß;!$–“dÐw]\3Ò}‚\~I%ärj\òù¥Ïº!k(ûÕ›]Æ=Ù}Î/EñÌë÷×7Ÿ¾«÷êC.4>ùçåk÷’Í{ƒä¾ò·~åmû-ÌÛëo¶Pç=EùQ¬›ÿ&Óòõu{Aª¶×ß?üñµ´ò!d>G ÷¤ìò\6fä.ìðü¶ÙµR·*ûÙmË¥©,ì¸Úö=Qw·+{øooWfù6 ×üü¥?¹Ý&ÚyËïtéoéç%¿Ó¿¥ŸwüNWþœWüN7þXÿœï.Ý;„òÎõ|ÃÐß(„Þ_0ô Mº_èïšþt½Ð_'4ýév¡ï;Î2òª²sLuó¶ýö»šÜ‘õìg½éþƒžÓ6¯ŒáÌ~FÛ|t^<;?>Ëžããn³ûÚûÉÌè7ft5Fò[2£ÈŠ/_üåí·4ûß~³]ß|ýãöæ#šnÛ‹ÿýûç7ïÞ}÷öǾÚ^~kâï2ÇÙð±3þ™ÙªÊŸ7p·L{È„ËwbÃö&å]_!×;%™ÓY¬ ƺBŽ ¢éJ¦nAòè•I Js¹JÅú룦ÿHÇë¿¡Æ«¦‰?ùóõØþðöáo¿³/ñ†å›¡Í¸Þy“!ŸÅËäxôõ|œ\åØ×‘Ó‡““^Žwäü 2m‘yôÈϪGɼ…㳨E®Ï M¹=õ®ý¾Yø¨3(r¡‡ÏÌBÑiøÅ/×¾ù™ßûoh Û‹7_ÿçš„NÀG—ŸÇÿw rÒùÞå'rýÔÞéë6±Ü&“ï}ä Ù^Eø6ßÈ«ÈÄ®Ã[\àU„?´hu™ØáSÍæŠ;sí †\&[OÄ—Ïóù‰fàUO€"»"ö³ð*‚'@‘‰]{‚YxùÝÁñÃÿ'*U{ endstream endobj 257 0 obj << /Type /XObject /Subtype /Image /Width 300 /Height 1 /ColorSpace 258 0 R /BitsPerComponent 8 /Length 832 /Interpolate true /Filter /FlateDecode >> stream xœ‡7ÔqðÆãU¼”‘-‰D!3޳׹éÜÞ£¢=T*{¦DCY‰ì.tö>ÎæîÜô7ôýù¼?Æ×Àùêž:Œ§Šà)£xŠžÁ•#¹;h® Ë•â¸R'´–B[¾à›¿â›À2ü²øÆòø† h}e|Ý7Üw° W[…«©ÆV×@«j±ßj±•ß1•u˜Š:Ly=¦¬]Ö€þÚ€þÒˆ.mD•þ@}nB}jB}l‘Z%-ÈâV0î}[\Q[Ü»Ÿ âm;¢°ñæ[Ð›ß›× ÆäþŽÉÙ›ÝÕÙ Íè‰Jï‰Jë…¦öF¾î‹|öG¾ìH€¾ˆxþ'ü(O„?„=ù }<öh0|8ú`(äþ0ôÞpÈÝÁw@ap’08QOßß º9 åñƹ{9ã068cMÀ˜ŒI(}ÒŸ6¥NùS¦o÷’füˆ3~pÖ7aÖõ‰ŸóÁÍù`ç¼±óÞ˜yo4¸à…ZðB.xʼnvL}ô¨ZWW£££9rXsèF[[£¥µ{ðàîý»ûöý „½Ô endstream endobj 260 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 263 0 obj << /Length 1636 /Filter /FlateDecode >> stream xÚíZYoÛF~ׯ ’¹7{EóñÑ#â(h´(hi%³‘D…¤âæßw–»”(ɲ$Ë„Ý"6@.‡Ë™Ù™oŽ%…£Q„£‹Îi¯óò\°È #©ŒzÃH`¤5'ˆõÑÇîY:žܵ¹–i2>‰©ÒÝ2O¦E?Og¥¿ž‰›4:‰ÝTOK¦ƒý'¿ëýR?2ˆè~-lá)éÔŸ/}ö³¿¸IËëÀý:°8»üñíûúþ,éŸPÜý´"éÏÞOVÿòœšÆÒ9E‚F1×HcâWþÛµúGØèhýœ¢m·./à)à VOÕ#·Ðaþ›^çs‡€n8"¡i!"i0R PÒq7˜FJKP+å6vÞÝS;ï|)d¦Î„RD°I‘4ÌÛàêÊY E#P ÄVô¿*2¯´‰ôI6°ã`´c–/1b ÃÚòùC­þPåššq´©˜@Tó–Ü""ʬºåÕC˜Ø_€˜•pr‹_¹¾Ó–d3¶–Q³;HšxÞFX†ÀnÄ7Á¹Pãy7|›HÛJX€s‹XlÂf+a´ÝÀjb`a ›'ÛÑ--ÐÆ†ÜŽB»ÙéyŠ+ÀËwè÷ªÂG6LòÿÑ0­˜ö[ÇôX“ÃôïèÇiió¾•($õQžÍg?Ÿ=TGT½®½“R°y&špM¹8ºÝ©øÃVšjÍ F!ˆk ¹™²£{™ªÅbðÓf±%ÃBˆ£;•` N n¨ È†I*9>º ©ø?M™â&È­¬#©:ºÇú3ØnšúXìŠáBóßÛo¼Òܯ4„@|¼ê ¾U‡{U‡Ö?Lù¯âOî³”¿„°9sI\ xþì©}žjãCûâ+¿_ãBB!ÓQ,5R$|ð&‡*ü¦×ùö¢p endstream endobj 267 0 obj << /Length 2393 /Filter /FlateDecode >> stream xÚíÙnä¸ñÝ_!ì¼ÈÁ4‡·( û9¼ØØÙ^$À&äÛ-¸-yZêqü÷©bQ}ÈÞö1ÖØ2šd±X,‹uΤ ßù]í5é÷ãwG<Žä»£·Ó£7'F%9Ë­´ÉtžΜ“I¦Ó¹N¦eòGú¾šÏOýÊ×]U,'2si·*êv¶ª.;j¯Û‘ÎŽ'ˆJ°¢.ïüëô§~Ì!LzÝú– UMåÇ_þ6iý'j\UÝ"R_Dï?~ÿóo}ÿe1;–<=ß›é_ÓŽøýåÄrÍíoÀ„ùazôéÚð'zq[ž1eu2»8B¸–†‰“+°Gš¢oî\@Oè9©2Gáz@:Vf{ôí>}{'ÿjÿʕʭÛðÏU®y47#œÛhÀ7%ã@C‚áÆePf`S2{PysbEB² ç$èR2Q†åy<,†ŒÖñ$s&L„R*Ã^¤¾íªúŒìõüXñ´YQ£¬ÀåhèvМoÛiÒ]—ræ÷}s"ó×'¨W\Ü»b¹ ók+ƒÙì—žµÊ%–Bo6ífOoþe²_ìŽØ-†N@h[〰í€ÌÁjà?ÈtÇ<µ›æXh î%OŒtQEy1…Í8$?zö™þ|]Ϻª©Iv+ß®—]K*EÚË,½:–.m¨cV,gëeÃZ°¸6÷¤ZµÝkèÎuZ¯—Ky`Xé—‘b¤üO®t×ù2ž. #˜j+fßPDrp@÷Èñø¨©ã4À=5Jäk_Ò)2~M]!À@àºõ+}®ŠM0Ás— ËxroëúR}‘™a\Àþi ¦^ô #rp€r¨0áî¦Êà”Ò:˜t4‹.|Öøù!…†@Õz…yý\âÇ΄s7ÄF*GZ8#{Ò*ÖåQKhI¿æÆ+8QœçûKi«³úÐÆKLWÜøÒêÙvd% ÅÊL3™áTP–ú ö,6ÄMÃÅ`œ*ÝH‹±QåvÖÙÜaW!(èà²P\xˆ¶ÑðÛŒ§¿yHùšÌ·Ì S&ß·ßËêÇùeµ û­8„êZ9p#X•)8p6æ¥]Eõj– ôB#„Æšàl¾è)uM,Ñÿ…Ú¼ cˆz°ý-+𠣑Y„D÷Ñ!›ÁÏy_GZý ypB:ÎWo@Á/eè—Øm‘îÛ\ –ÚÎ_âr”NI–žàeSÇZÑQ7ŒÀÅ…zȬ¨7Ì •Ý<ÛKÿ"b_-|ýl‡TÂ9 9ÄhÙF¯• ¹Û8z Ä¥»‡Çبا§ar`B†LÒþI&á Æ_~¬3 ¡©._?ÕêÊÜgÌ?Ìg 8=Ò¾8¼ôpûûòíÈØYLJ^¢ŒsάCÎFõê9Þ;íËxúñ÷÷æÈ`M”° Rw8@NSèûoëŒJ›õŠ*þ?ÅÅåÒC˜/m-%ö蘬—%!ö&ŸZh˜‰ 3BÀFeT±17F»vº%P9Ú»†„6匡:°åYðd‡vW·j0ÕRÃßM‚BýP¸ö„úyM>kv>)CtUoGýø1ü½_7ÔCzHÍhjt‹àá¨qŠ^cA)tÀñÏfÂá|I8_:—Ì:õU´¦4ZÁ”šÙÞ$ß•”H‡Lßš ¯ÕlÑk7˜‡MZ'h¤¯*3 We5+:ô²™#CǬY®/ê–àÍœ€ *}ˆ¥t—ð&1ÅÆÊ_4Ÿ}IX!Zà™ï"`Ñb\ ¢zkLÑë„u›„—ZUG¥ÿ´Æ»¬Â\ϤMÂfÀ0k !@¶Ñ&­‚gE›pJ§L¢3 x£¸¾‰Âß¼XRÀÏŽeœiÒé"Ä‚(ÅE”p ç—öÈbð æ%n>41l+Zª7ˆ¸¼¦F©TŒ·Õ!£úŽÒ ¢ãƒ[ë _ 6J‹Zˆ±"Ö ä…@4b½ ¦:âní*b­<¨z{"F5ïIøkªÍà0aM§óUsA°¦†Nˆù+¼ÿaxû/Ó_š."¶žIÛ´–LÉ,ÑÆ2'Ü&ü)ÄÁé Ø+mL“äø¡{ÄžWÅõ£¢¢go® —°nHº­ü Ad|pÒ&»þûÕiÓú—·Nبÿtèh €Û ÄȧB|±•xsbÝŽ)âû÷¯^mC/‡1–‰o¢Ù» ì¡'UGÖ¸öະòþg*Õ c_nØ&R‹78¥O~oorœ'V02 pšà0g‹'ঙÜÿHbÚ4çTÃ'ÿþ‰6Üí·O8íãvê]ÿÞÜËjY‡ç„&~ÏÔÛ®šµcn޾̬Ÿpý²Dv»r¿};¦rË—¢Üê€r«ÿëöƒt[¹n‚yß°o½ì_¼·;|Œóƒ[Hø4™Ü|CÙ3ûgìá“VÆpáÐg7‘ìÍo襤ïƒdîƒdí"=³î÷ká‹rl]1ÿÚ|]ö5ŽÛë±£eõÒ¢å?Oüç¼_µ œ[†$¾; ù@†?Lþ [£e endstream endobj 273 0 obj << /Length 1487 /Filter /FlateDecode >> stream xÚíZ[oÛ6~÷¯ÚˆX’‡W`{XѵèÐmhæ·44Kv¼ÙŽkËÝú²ß¾CRŠ-ÅId'JÝ.1¢Ëá1Ï…É/¡„KÑ­ër\{ ×Ó7=aCô¦÷rÐ{ñZBd‰U\EƒQ$)1†GZ0"¬ˆYt¿šŒF}Fã|™Ï‹I:í'\›¸X¦óÕp9Yá}½JÒ¸Ÿ8Õ KçY{å÷ƒwշГñçU¾ ’É<ÜOù!YåÃËß“â¢ìý¢ìâÕéÛŸ«Úé°ÏiüWÍÒùà§m'b…{Ý\½fS¸—æƒÞǾã‡UáV‡h8ë9±à’0«#)‰påѨ÷~¯±´÷ïá5CM‰H+)w5e|RF-Ëšzþ¼ŸÎD<Îç>+‘â„31b´:¿{¹ Ú¨(Ù’O°¨ÅÔN—þ!ÎFeg‹OétµÀ Uqšýé;`{Æp¶è¹ü¾kL¸„í =‘›a;‹,Ü^¿Ï)þp©J¹P„«4·8 NE\6L òĵxU¤(ÑÞ"ÝmŠo›âhÕ3Ãse¹1¥@\u¬%4E¡2.”¦¼äS°eŠK«A–¡ÄÒ-”¨,•cR˜sYÆ~Ë€h¢…¶`¼$̵ª¶D¯¯¹Ý‚.t 'Ž´<85ð `y¼Jgþ âa:¢?ðfâ²=^LòOyV5qÏÙd™‹iõ–  æ“ù8ôVTæëé4ˆ²|5—6fi±œüžK¨*¿Taµ&jÞKŸw5U(ãú­ hSÞÄÁV˜À‰¨¬Ð†QB5†‘â$¸‚šCw}â;‹ -J?}^²|S»ÂA8¹æŠ%JðŽ|A“dÝŸmïÍî’äœP‰—è’ö±ê–é, °\Y}.æE¾$GºLRD!F7Ö).(N{õµ-T°¤Ië–hSvU7D3åWuÊSÊ=vì™mŸ×ê?(‰Î<ø~—ì]7F»²`ñʸ šMáÆÂì2˧¤D¶}mµÕĨ| ’>@Tâ÷¦-x"ÒnºŒÂI‡‡}SZ¤]Ûø¾ëšÄå}1ŃBÇå˜á…¹ßî %€ë¢Jm=x4TéÖ#„N€ÍnÓï*]XßÎq½æ‹¢ íM{S·ÁT¼œq·í•ïT‚Jª®$Úô$Û(©6JºRZK³“géÊų»bvÆÎÃ=†b õ2Ⱦže/› òUÑ9Ât÷ùfÃÚ%â7ŒEL Ö¹BÙÖ)M˜0x*iì/ò4;¶Íe/óÕzZ<Î*xÒõ® :vƒ!ÞJˆÝ1i"ÄZõ|3ß4!¦¾EBŒ§~Åâ°W —{^¯<‚~IfŠ)F$°°X”½âÁ™ 3Ò ãL"®ŽHò^ÎïOM1-‰1¶é Ç’ã¦#_4Î1h8S,ÓjËr7¥ 0¸ÆMþ) ƒêª$œ®H²¼Ïâ}ìyN×8Y…¦!¶¤ÓázšŽKu¢ªºPË“¥N–.ÞÒe:¼M£åå, s\¤°õ¹¸©Ë2ì¸VpVaky©·Ü»*©£U€¸W¬·Ë¢™ÉýǶ#hÐX‰ Þ§³w§ƒÛòœPÐUGëù°˜\úÜ€û»YÅQ`®ñ0& ê­üèÝøv7:;BnÙÁ⢂WvòlœŸÞZ^–8GKõ³{Œ¿.j–Pp~¬)c@,Ó×(R¦ˆÿ#E ÌxÏ+„ÝÂ¥¯áè7<¾CAë½t‡ÇþƒØÉcâV»eò;×'ªãÑ©ŽC‘æ@²£2×-uAo¢†;?òéÙŸÅÎNØù̱×K[hA+-±[K]c[ô¥ZiéšVG™Ú«N·2õÄ­=qk_*øâÖôaÜšÞ OÿlvÜÚæ˜[ûY!Q`¢ÄU2m jçU<'þ~ ‹ endstream endobj 280 0 obj << /Length 1362 /Filter /FlateDecode >> stream xÚíÉnÛFô®¯$ '³/‡j¤Yжh\¡@Ñ-$&²äT‚ü}ß,”HYM$Å \¸>ˆÃ7oÞ6o¥ š!‚^.Fƒ§/$G[ÅM‘$؆´ XXFôGö¼œN‡”d®r˦,Üi“5U±¬ÇUyÓÄ÷u]x¤Ù0÷¨V,'‡#¿ýØžTfŸjWGH¹ŒÏËŸ¿Ëk÷>¾|,›y¢>O$ž_¾þé×vÿ¦ÉÞõ8ý5úa@’öO_0ÛQ]0,Ê…Á†Ð¨ùhhx¶æ\ÑluÕ^®Xdè•Ò „¤ÙzÑÔ q÷å»!3™[”s «ø;‰XUÑ”«DÍÕMýįmöÉY­ãƼøà"v“PÇÅbÑfÓõr ¤–Q5leˆ`Á-óOʤ°¨…÷ï\¾Üžé>º'ºÀÿ~4x? `A‚(”b«%R–` f_ÂÁDƒm‰Ö¨rh:xs’hÑ?ÒØJÂÂ%Q†Àaey¼¦Êõ•?IF±zW&°`æ,šCmu_“:¸Ñgœ”q ¸$b'Ÿù8/Çså\2Ì™D¹¿)[ó4ëjé½Só¬ð‘MŠ&­¦Uq Nìâ[ *¿Úë¾:¸/ì¶î ˺uÝ”ãàÃ07«œ«ãnˆÏxt²ºX"»É?‹u‹2…—ïÂ-ó  é+ñ¶¸.—%ˆ`YJ+°x%ϯ‚l®šEøŸD’‹WðKÓÉÛuݸtjËÙ¿MW^Í*¾¸b<«™[º¸ºòûŸüÚ«jL ¸¥I<Ý¡h‰P'õíQëãܵ‘Ë$±í>ƒWíßúÚØ¥Ô`B8RR`Ãåç]þén;½gɤg©°&Á ÷Á-¾>‚)$pjn©#°6ê.´9V¸®d k¶+˜Ä̈3™Zeûf~v&–³ÀuASˆ¶]ɨÅJ°3XJAûF~4uÅØYK(!ê›F&°TFöµºá\Žð&‘QÔýM¢ôím£îokŸÞïQ˜=3¦fVj…VoeS(¼šc¨<½¢~ 0‡+xL£Mì0b1w{ïØr,`¥¸[KÍýÜ“£ïíPL ïKñÑôU147žé|*Lžœ‘C®ëUÁ³1yv"ÅômÌ-pËÀç¿NÖ8Û…ÐãïÃP•<'zQtªàV~n ÎFÿI|7 ù§ñãñãas‰ˆÝ¯oWŒ[Ô Ñ§"ÎßK~Þ—Ð SF ÓÐ`Q0Tx\Àmd h¢½ý'Ó$ËMèÖ¸!ÊwòÁ4ÜÚ”Óù01 ½·0ýÜkí9Òøxq1[øcRµ€¦"̨º`4VÔ‚Õ’Æé 7$€ËY‚,åĺœÚ}ÝË™}‘³I,üxg5Pëqm1BŸ$"ôÔo€¨gÕçÌ¿ÄÙ°–æÐªpÓç̰P†Jãr’ š"©!@6Ð]WÖýí( Å]Úôùæ÷ðùÆLá<˸¸Y¬š¸ò0Ù¦×ÕÌÁ&VxúÈcVŽØaD|?ѵŸ}ü çg»-âv²½·ý‡®ÍÒÝ~ze©å쇠‰Ç*E¤wŽ_~‹ŸÎÝRœTþ·n·™e¸Ä‰çp0}€×½€Ý©Ò£³ [í¹xúúZ ç+ðÈ7g -ÃÜHLÀaB ‘ü¡…ÇÆ í…åûרá*ß>xþïÇïW?þp%?’Èä&‘¥öåvÌuˆïùçpˆ5ßMõŠŠ#  ý…Áõ* endstream endobj 276 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmTest_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 282 0 R /BBox [0 0 494 490] /Resources << /XObject << /Im1 283 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S]K…ä\.}Ï\C—|®@.Uî endstream endobj 283 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmTest_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 284 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 285 0 R /F3 286 0 R >> /ExtGState << >> /ColorSpace << /sRGB 287 0 R >> >> /Length 1193 /Filter /FlateDecode >> stream xœ¥XMo7 ½Ï¯ÐÑ>„•Hêëê )` E[Í!È¡píƒH6AÑ_j>VÇ/ñ"vÖô£FzE=:¸Kܽû8ýñ‚ÏO‡?¹p7‡)÷ÞÏÃÍã ¿¾z¾zý[ûkvÿNïÞ;ïþ™‚»´Ïý¼9¸_§ùk~D¯Ã×§ÛÉ]l+p‘‰³ÓH^j"Žfi1?÷Ö=~o‰ß?¹»NÁSevã³Qð¥SðO(,/ÌTƒ{˜´мÙ¦«Õ%“JwXíî 1PÕî°ÚÝAS"MÝaµ›C`é Žæâט•R=:lfwNÂÑa3»ƒrnaØ6³;ì7zYrŠ”†/fgЧ‡ -ö´jë,CÐ{ˆ‰¯Ä~ˆÉb7‡ÌÓq½«5,7 ÕÒC¶šCÈr$õ=d«9„,'*ÜC¶šCÈr!Ö²Õì–X[úKµ§³uYê+; öÜRvÉU›%ñˆúí¼ÜM¾”¦”a…rXe*º[M¤60Qõ``ðv‚-(‚µåƒP@DBÈÊÖ@i[màÐ6 åH¹p%‰+%K;拆~,¾ n0#8´RÚq™gâ ¶ò–*|sÌ”!š'í5pSSµš‰Àå€!°Ø!@`aò(=C±B©TO ©X-aHÅ© *ì™QaŸZ] ]ЍpPŠˆ ‡B ¥'Ûe“¶Rž!ñ”Qz²(HE HE¹Ý]ÌÍ ÝzR‰±ÝJ¬íò`²RI™¸ ÃÂ9@.Ë­€ÀJ 7´EÈ¥Øí ¹´š7´ÆvC"°R†Å\¼PA\Äg*ˆ‹„ÐÄ#UÄEØ XÅdЇ#\( a (=Ef @mW1•¥§hi€&XmŒÄÔÔ“éXË%™$‚\’Ýì5¥‘!™EÎДF{jR£B2¦5*Ü—*M*!Ðîv”žêDEMlì¯1 ³dD\ÔÔ† .jjC`zª© EdÔÔF„dLmDHÆÔFB驦 TSPª-=£ôTR1©E šÒ¨(;51­»Ù‹À]p³u (;5ë8€×sÓ¹tÛsîcßXâ®ï\ÈǦt~,vK"£©¦ŽìëúÁ™xø|{ø|pËϹ»¾Ÿ~noçyd>ß»)½zQkþ­=¶ÅVÑ|ëhûsÏ8=a<Û–¢vÞìVµÒÞø´qlï~Éà`;abhŽÅSGs«:Ž§Ï­vY{ÜFç>÷×ÿؘÛþïoÙӶߎıb?ìÚݹõ›Ñc»kw;~lowÝnÇÝí®Ùmø)‰ðC4×¾™[oô°ë©Ç&z…w=õØC¯ø®¥[èßuÔc½â»†z ÃçºÝ¿v+™ 0aµæú bià8œOÊöÚtö8<ž0»XI²â1Ï'ÌÞª°Ý}x¸ŸVdž/«²Î^žÌ>Û,ó™©íª´Éßýþê¯sgÎÙß¾ÜÎß»ë˧ 9aÒa¦WÃìWËÃÖIZ¦}óéöã—ÛÇ›sg¥ãì¿gç}ñgúîzD´ endstream endobj 289 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 277 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmTest_plot-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 290 0 R /BBox [0 0 494 490] /Resources << /XObject << /Im1 291 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S]K…ä\.}Ï\C—|®@.Uî endstream endobj 291 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmTest_plot-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 292 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 293 0 R /F3 294 0 R >> /ExtGState << >> /ColorSpace << /sRGB 295 0 R >> >> /Length 1208 /Filter /FlateDecode >> stream xœ¥XMo7 ½Ï¯ÐÑ>„)êëê ` E[/šCCá:#k ÙEÿ})ÍÌJ››]ÄÀhÍ}¤Dr$êqÑÜ4æËôÇÏ/‡?ßݘûÄ`­5ýx¸Zà×w/Àw¯+ßFóïôá£±æŸ Í­<ZQ0¿Nõ£Þr÷ñõa27«†#$g؃e-„,8‰žyož~äâ)ûÉ|j!XÈD¦K¼k!ØMóäHÍ~âœÀÓ*žîrØ5…En Î#dn ‹Ü8àй( æâãáþ(ÎzEH& G…Ul Ž\>*¬bS` 訰ŠMa|ѳËÁCè<žÅ& »¤Ír—´ÌR—´Yîrb3ír2ËE!$pxôw‘:w£…È-e‹Ø¥,ºâÌ1e‹Ø¥,J8¶¥l»”Ŷ½•Ul ²±Ø—í/©¶â×Ý:»:çŠeJ$ ¿ìÕHÀ*êW0€À² íJrÅ¿~^iµL Ѫ– Òf„°ZæªØv=À‚ÈY3D+[&kk¢õ€Y™ËkNZ¸¤™b,_[U†×'&ù>jS†¨‚ÎAÒÁ9ª.1 š)À ú+µŽTS/GÜ««ú¬£ÀŸ@¯:5Ÿ4Å©ÈXXNPÖÑäÊùR&NPe[’ÓŽfN7ÍÀ¤€d]+{ÏÁ´`¢jŠÕ=%Á$Õ?£f*…ݪ%‚(ÕÙ^6uTj«fê8e |e`í¬K½TËy*×¹bêĤ½W Ò ”!«•€B«•˜åªÐÀ¤‚ Áé VË%¹óÕJ@Ù•ï5Û!ª¨“:¼–''u:«¥À–ä•€äÂÔÁ¤• 'k8V]nÂ:ê*ŸÓvÂ0´ÃT¥N'}^)Ô™TŸ„ëYí´;/7¡Z(œ—«´÷î‚Û‰Á6Ä ™è—¸!ƒÇ3ÛQѼ¡ýÄR§“n*…ZåN uÖN»¶¡ó ¶Vç,]iÇ™mÒéDáf¬ư¡ƒKdu:ÁR¨U:ÁR§U:ÁR§³FM0ã†M  ß‰!Î'ØDí¶N qÃ&úenÈÄú —²/E:i%„¥H\¢Ð0¹ÊgøfW{ÓÙdk»ûVú³ûd„G®½kf¹lB‰´x-ñíöæ …Ö{8|;˜ùïÚì§7ezª¦m|¹]>ݼÞÕŸz$Òcû,Mˆ-oÇÃ&ä*»¹q¯¤£l×ËÌç˜Ò'­p±õçÛ /û(UJX}Á³1 ?“ºW~þÓGýaàÇ/ëÙ¾•£ýÐ׿°¢­î↷¸ï‡Þúß¾.ø%[à§Â\:k*ìo?tÝ}›½ÀC×ÝwÙ >4Ý}“½àCÏÝ÷Ø >´Ü}~z— ÏÇ¥î g¯»\¾<¿a¹ÃÓ`NíõXúæÞÜ_rÌ„éÚÑùxÁê,ÝžÏfŽ]ì—•——+ª[VO›Õ«LÒ: ›ËeÅ?\ýþê¯k#›àêïÏß×ÍîvëÈ‹v+½ê¹ÜRÒÔ„yÙ·_¾|xº¿6R9®þ{qݳŸéŸK¬ endstream endobj 297 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 302 0 obj << /Length 1461 /Filter /FlateDecode >> stream xÚíZmoÛ6þî_!û ËW‘¶ÝÒÚam CZ Š%ÇB-É•ä´ù÷»#©Ør’ÕÞª¹ÝŠ’HyäÝÃçxt(áŠtëÙ\Šîùêé„Ð<üx6ytªD$æqp6%Æð@KFd"ƒ³,8OŠù|Êh˜7yÕérqm®I«v֫Ε×mŠB—ÓE]]Zeû ¿<{Þ÷L…×mÞºš¢rïW¿<ŽÚü½+|(º…}á‡8yõìÅë¾}•Φœ†ïšÞžý<¡ÛéÑ)O¶Œ$9Q<ˆ¤!†2g£Ó)7afÉæÎ?ë9¼U«èÀ„m÷Š ¯m—µk›¥•.ÓwXŸ»ÒjYw~”7TÑ‹´×]l›kYTùíÚ 4ÎJ‡o·6Å…¨¶”†V‚uGŒ‘D)·@\„0,¬/Ú¼¹Ê3,qç`¬†eeÚå¾è|ƒ'E3ea1[,ó.*×Ë®¨êÒ‚[ËÚÎ Ë}y'8N“vEÝ’i¤Lþ>5Ò %éUîdºú®ùfù*¤µŠ!½ëib‚Ý·À]M’HƃáËv¹£䟜MÞOFðÇ&q¤ Žc¢“`VN°:ÖDQÜwTë Éƒùäåßœ›ÛÂ2аtʨP& h4DáÌqÙÔ땵$#FÇ®é[-AVƒ 7õWiS¤Ko¸{v‚ ”*h±=Vži™Ðá?,Àõø)ÃvQ¯—™«.ª¬˜\\)uW®»SjæM]Ëo’+ÂÁ¢CÇ1IŒŠÇqj”@<ǵio²‘˜õp)BŽ´ PfèþVË©…f=¿Ü‡(!ŽãE,6#¡A†ìðŸÖ ¤å5ÒpšÐq¸®q”)bíH?ç,§Š8³ºÊ]u]Agû5ï©ÛuƒQºüÒg8]ºŽÛø´œ$UøÛ´ú-j«§n½¦#²Ž¤†ÄhG`…Ýç .áÔÅÄpãôÀ’΃¿ô¶& €é½=«—ë²ò.W`†.o‹j†ÔÀA:|Kècqu匉…­k„Ð`…íÁI—ž¤ŠÖ†=h´á™cdiüÐ>Nƒ‹5“á“MhC±•í^{m¶1ªj]_7¸×Vº’ èÙ JyŽõqRˆ0+Ò²¶Ñ í"uã[œIÀÙãÖµXDÃ;ÿ˜–°§ºÒ‡…BÚ(îjíªíÎÛÚâ²*0.âÎŒ»Z<ªCOF»`ûÙ#sð¢—úÉàØ7²?ÅÃïÆœçê*]®›Gög–Ïš<…˜x9¶¦‡ ‹=6Nlv*7 N?ýddè0–¨ëí¿Æw1èCÒ ”¹;çŠ9†b×%! ÂÞ]Šì«b /~ó޸Δîé‚ó7HÈÆ\îÛñ"ìH>bDxçÀúD°î~…ãsíOÍcFgáÍ–eR+3Ξ=œ±í«g a7Éh 4¾‘o®¯ðÆIï5­áýÕ—]1æú¶ä¦r£`GGÌ™JAVys+I8 „ŠÛ“Ê÷H«Ü& ¶>mSßÏW>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S] …ä\.}Ï\C—|®@.U í endstream endobj 305 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmLRT_plotProportions-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 306 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 307 0 R /F3 308 0 R >> /ExtGState << /GS1 309 0 R /GS2 310 0 R /GS257 311 0 R /GS258 312 0 R >> /ColorSpace << /sRGB 313 0 R >> >> /Length 2618 /Filter /FlateDecode >> stream xœµZK]· Þß_q–6PŸèýXdc·1à6ERÐEEàL†Çvg´?¿)ŠG’¯3sóXÌ«!ÅúHQc·›Ý^oÿ9}}ÁÏgwÿzþt{uw²»1f?ï^½ñ³—gÄ/Ÿý“þš·ÿž¾ùv3Û÷'»½ÀÏë“5Pؾ<ñ/þ°ÆúM _·×§íi7a en³¶ì¹l¥ØÝ—Í»× ÅíßÛÛûŒüÕ NÛÇ*Ì^ÛÆOZ…Ù£?Va–UÈì©ìÎl7§êê^M¿9½çã^Ó¡ ãCÁ¿gw(ÈxPÈvyPhãC!øº;(Șf Ädv?¼PÆƒÉÆí¦ &·ñ ê^Â ÐÆƒÉ>ï±&·ñ`²‰»ƒÉmÌ&;FH`»éãÌž›†  T >¥½˜CCƃF(ð‘=4d-§tya .B·/oòYÄ€Ù"—bÖEøt1Ú˜…šÉEó¬Ñ^)©If¯fÙ §¯!mØ‘‚Š­{4ï^±ŽYjž Â/Ýí™rÃU¶Àš2¹xãO®?-³† Œ6Ý€Rbú4¬Õ··gÚi²@¤·.ÄÚ=dCÜãw%ì¡¿!Ç ¸–aï ܽàŽèúüÑ»û‰5”JL»ŸX`0i·ë¶Äš¡ Sÿü‚=uØd?Ї½R_`ö4Û²Àœ5pÏ‘­C”Æ7ì ÜT:¬t•è»,›rÚòV ÕWåcuÝN x݉2~Z·«ëÓ[ jX“AÈTEȪ]"ê]È^ÝþÙó—.æíÇ»O¬r+R©Ëúg+‚(æR¯óàP ô‹\“¨LI­,éòB<ÁcGs¨ü'Ôx!°6VòÒoh‰2y2þÊ{5¨€‡œæ(¦¶íà)h\­o¬\(¤ß¨S•ÂãÐhYä4‡'Î@Uèå ŽS¸§H'[»ï0ŽÇ‘hZå4GoѾ{ðZ"Œ¦äb³µËܼ–ˆESrìrš4¢£·e*ä2#lY.R¼4ÑÙPq Rz>•Ô¸'ÑvE±‚tC .>zg—ã6ñØq}Ðå4‡U;à îAžPܺ¼ãêP»³W0 Qˆâš§*ÅUäŠkôlç„+VË€+x›ÓQÇUäŠ+Ò-ïßW¢7àŠôË€«ÈWÐ0›qÅB‰®WP)emÅUäŠkŽ#®DéõÀuCr"í¸#޽׌қ)WpÍ&sfï¸u¹âŠÜN…Ñ„+Í\±hk\E®¸’uÁÄŠÁkÎÌiŠ«È×ÄåÒŒ+å\Éè<à*rÅ•\£¥zà#Ÿ7W‘+®à•d\)KÕׄšè]q¹âнDñ7âj‘ÊøX‹’)Õ».ïÐZpd. ¶8p‘ß±EOi@±yÇ6ƒß¨*±¹ýlQ†²u›EËt`sà"*j–Îc]^éßTdu9ûË´¨¥ò†ÖÁ«à3zp¤ÓåΊÿàOÔa*gìsã2’ì(.®D¸~{£òÀm…Ü«ƒÔ×êÁY‘*^?°‡‘¨Ç\ÿ¨¼îÉÒ‡œ*gžD½D¼•€= "^D\{¥˷| MŽ9OåŒ=rå³’Ú±œ–ò]¥Îa-r„?C€UÞø¾ö\Ä>Í0ˆs•o>ër¤y>(æÀ|¥rÞ×à›’láÒQlE®ØRol]‹[ÅÖEâ´[‘+¶Vâ~Ķ4.Pl‘ï¹ëØŠ\±E™Ê‚-xË•Û^ÃÆ:°íòŽmõ„ÛŒm`^;°…óˆ[‘+¶žyoÆùˆršb‹|Eý ÅVäŠ-J?ÄàŒmŠ=5lÁ…TÕ*¶"WlsÖŒ-8‡rb‹Ó+é(¶"WlácÊE¶túò¶Oض"Wl=7Z&l+JS>t ¶9Ÿû‚]—+¶µRá:aP¿7` ^ƒs;• ¶üÜflQCÓÙM±ˆÞ ØŠ\±…"Åà„-p ¼¦Ø"gœlE®Ø‚+ƒ3¶DrRÃFR#E±¹b›[#jÄö¾z\ÚYG¾¼¶#_‹\ó5j|™óµ´·4_׆“æk‘k¾FmC¹gÊ×Ò¼Ò|M-;äk‘k¾Ž­fŸòuk¼ùäâ¯E®ùõ¢s¾î8Í×à j$ô|Üå=_'Ãç9_;‰íž¯Ä~Ï×"×|MÝ’¯¥Ý§ù ¥~ƒæk‘k¾v|vø(_7䟲ŽÏÛæ÷´¯_^ÔÏ?÷óôªÅb!‹´—N‡ ꂟ|Hü¦lW?PG¥wï[ ŸÇpŸG(le»ºÙAöx»z}úÛ¿æAOƒã€}{Ú^ú4U6¦ÊÓîÒ§½çö\{Ú_üteêjO‡þôt"¸7÷ÀG7qh+ÞÌÝ|îi³\»÷S3÷æýÔË?äÚ»ŸZù‡\[÷S'ŸäÝ/ýÑ«>8Ý,WÓUhÌWÓUhÌWÓUhÌWÓUhÌWÓUhÌWÓUhÌW£{Ó¶böÉÊõ.Î\-Œ)~¿xúáÖ˜œ£=» >1÷¢,X¦q•fº`JyTÁŸ±æ,|bš@ÇìtÖšrÁ4ÉòYàÌ4åkrk=œ³¦^0MAftæ¬5îã\Bøk߯EŽâ ññ˜®° µ)Q©±5×ß}øåöúîœ)¿éµÃ»ž &ØH—²o†^üÍ£¯nƒä¶Gï޿÷'ôõÃÏïÞÞ=þv»zñ¯t:Zì;§\©ˆFlawâÌ‹Ê=¥nsz³ö÷¹ÜýšËkàüèA¸±%›ç·ï~yÖ安'v¹r-›¹#ÇŸóšÎ/äL[QþšÈà†4CùóÌ„ùöõ-Ø«²EÜ7¤[ŽÊ7ö(Žõ JK`]Žãk±<æPùOÇÿ&\î[ì^ê!]æÛsî[Tê6\êÛsþ¡¾EòLnðmæ~ø6óö=|Ûå£oÿŒ­“ G zx€¶Î³«ÜÇšÂûáÓØûï}(iÿ>sÎV­R¹•LwŸ-—üøÏÐÚÃk_™õcŽŠ·/¯¿{»]?Gmþ÷éàL¼}Náïþ²}u{ýêgùK¥‹º‡Qôéÿârp¿ endstream endobj 315 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 299 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmLRT_plotProportions-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 316 0 R /BBox [0 0 992 491] /Resources << /XObject << /Im1 317 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S] …ä\.}Ï\C—|®@.U í endstream endobj 317 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmLRT_plotProportions-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 318 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 319 0 R /F3 320 0 R >> /ExtGState << >> /ColorSpace << /sRGB 321 0 R >> >> /Length 1577 /Filter /FlateDecode >> stream xœíYIo\7 ¾Ï¯ÐÑjUµz±Ûp›"©è!È!p&F½ÔvÐþü’Z)û%ž1|I1‡ycš”¸|©áÓâXhq.þ^½Ùâóýío/ÅéíJK¥”àÏÛÓËÊ>:Y`ŸýJÿ âŸÕÛwB‰?VZãç|¥ ˆW«ü•Z©HßNYúº9[‰Ãf‚°Q:#´Ž2D£–X-S@Añ»¸|Ìȯn°†J&c’J:^¨{^ÔÝ}”F‰‹U2I&Õè¿V'UÀ€“ÉJP ƒ•fAK˜@¡‡€…$ J“À D5¬¦°ÒÌde¤ŠÌäB3Ÿd´L ÐÌdÒ%fr¡™ÉÊIpÌäBg“MF¨ÂvÑhë• EÂXKPv‰J3 ð^F5$*Í$lÄé!Qi&áµ–†D¥™DÀÀ);$*Í$¢óÒº!Qi&É”,æœuŸ—Sæ Æ8?%`tjø ¨ÎnÕ;ðVZB¡ùæ‚4¤¥ybA¥E³¼Ô´¾Y‰´  Ô"ŒàÆC#h©kD¿,ר Ý5i5׈‡%p€y<ÓhÐÆ04šäJ®6xܬç1tžiD‹sLºÆžëMc4Ò°,Ryæ#ҘƠ¤·³Fgç¨ÂÕ$½©X'Œ¿’:F|zD<×ÊjGÊ–w;HOk<(ÌsC‰L³ƒb¯¹QF?ÇZM±¶”•fh4JKÇ<7ΔRV5Öjk˜F¯e <Öý/Ç7‰ùAºÈ4bÉ>4˜Ñ9c»¹[0˜jQãÃsEAåÞÀŸ¥Î£Ò©[µ\Xøt¶7RƒàKåmüHMàÀàÄ6ÖÏ~‘Ï6ôX×<”(± ®Q¶”úO{t¿€Â‡õ GÒKËs s0ÆL›ÜVŸöèyl¥&_¨}`Yƒ…8ðü¼/ÕÑ>íÁÎsöÅkON×tÞ1³/^åäì|Ú£å€N”×T×Ñv(v‘ízóùÒ:äVÒø´;cÆåŠ©$æÌ›òÂI«vŸöØa»Ãv‡í·‡íÃîI½w’|Óèˆëˆ÷†4׉– Ä;Ÿ!Ñ€8 #&±ndtË€ŒxçOˆcG²q'=ïPè‘òñÊgˆ›˜½îˆ›X£Òùx£ÐñÎçˆ;K·…8f3DÞ»¡ÜØâϾüîhˆ'Un ýÆâÊš†xãOˆÇÓŽ8”˜uÄC¹ wÄaÄt‡íÛ¶ß¶Ëwï]oþ?÷f“QçÃ)à#Ó¸“­Æ“KŸÃõ* ŠFyã™§–/бþ (ÔuYæ™Æ`O E±¾{ÈÛëóÕOë¼ùF«“'¤Ëj½íjƒ?xUª«Í¶«i]] [¯N¹<•Õ¶­~8ÎãÒÇá~0.u„{Ÿ=N£È<Ëü>zœ&‘Œß&Ó rðûàqšC~Ÿ;NcHâo?b ú|ÓÓ±º¸7ïœæ›UbžwNóÍ*1Ï;§ùf•˜çÓ|³JÌóÎi¾Y%æyç4߬󼓇u‹ÃÉ2ó€%¬6ÆU%Y)K_ÞÝ(‚Ó‹¹þ…m ÖS ÷·1‰vÚbjcÎ.Z³xê¿°M–Þ,Y·ØÆc]‡°´MÜÆš€-—Ù‚5i‹m¢ÏƒÃ%kÌR]y¼˜ßŸÚ•|ZÔì½¢–iš±cNFifÎÞß}¾9»]2` eLÃS¬½+ʹ¥HÝÛ½×7ûX¾ÄÞÕõþu@Þ}ºº¼Ý'ÖÇ›D`ƒ·p {pÄìÁS—&ô^xGãæò~ë)A5_ j²¹»Ñ”Þ•VñòæêóõbP7²?ogBûÒµ<Öçl?7záfÉÊñfã]^Žݸ1ç#Ð{¨ ¤½101–ÎÐø ¯ƒ:Óùµ`ço,7u^Ò6rwiäñ,îbÃð†¹ty;Ðø!'ôp·ñ¹»Ï—VôNEe Ð_J«£õ/UŠgÓŠ¡P¥Nýüã¦åé)F,Þ½ê=$© ÖÊ?/q­ÂC½ù ®îB¯O\)?âÕÙûKq¶gUìý{…ï«ø²Ï|'^ßœ~ªÿÁßP6+K«ÿý~ö endstream endobj 196 0 obj << /Type /ObjStm /N 100 /First 890 /Length 2071 /Filter /FlateDecode >> stream xÚíZYSãH~÷¯¨·ˆEu_ìDp4=DLφÝí]†! ж‘¼²LÐÿ~¿”íÆætcÌÒÛ¨J•••õåQ™%dPL04“Fá™ÖèGͬ Láá$Sž9a™–Ì™ˆAÁ”,(‡§bÑ뎌’^4¢G#0©ŒaJ‚§’’I§1Yb5OÄKA4˜D'¬`ÚâuG ¢×à'#SÊ+4@b ½Á¯k_“˜B¢°®"ñƒ-±Œ=Ȫ¥SlKË:J+Ú.íM ¬¢½Åz:0‚@D‡7F0#,hŒD#€+3RÒFÃL o; ##Ö2CÂaCÆg&áL ±ž‰h ³8(kÑ04äÐðàl4"ÀÙF4íÂ3«I…7=ÍYG;ÕàH(è/̆êlİr ªô q†9El _§ÀpŽ9qt˜³"2àë,!X`è'm¸È\ 6^0OºRÞ0/[É<¦|d^k¨&æ A ̼hÐ óÁ‘¦ó‘–žÁˆ& áЈd]${T,XÀ¨Up"G·‡@¸caì  f(%©Uà²P+l,üѰ¯è@¬…‡á‚+™@ žÞD£3 ýÄÖd°B´¦£¨ø5™¬T“Í )¨åÐÒ–…Á¥%9„'kS°}¡EüB4ÍÍ?ú<Èß*˪éðÃÑiÓö+ÊO¾]Õ½¼>pOqÂåû|ç8ñ¬ý9éðnž5ìX*Ÿ8˜ÔŸÀ„˜Ô&q­aÄ‚€n‹mn2~Èøûê¨b|—­eE“'ÛuúYÁY×Ù/¿tðsGš…–‡&î0]ˆ&Gn–ŸlªÝßÚÜlá[YST%?äëîÓïÚEÓ ~æü´¨²ªì²¦ª“ª>çƒ4û”žçC~‹~?=ªÓr˜ÕÅ yw=¨×—‘Æšò,Y)ÈŸ´žEb´|EÙwI a»Œüç¿`®‰ALõ‚VŽúý“IuKêdt(µ¯>ä½"Ý®®YkÎ죂’ß×Õh0õ‘VEƒ´ÎËì3ãû¬©GXe#»ùU‘åÝ÷Û­hDÑ·¼o0¤#q5>áj3Ø<{:JW‡B8Ãòš­ zgGùÇ 8¥Ö!a§ð¶†×Ó.|j7mr¶¶û3 Ä_³8j„ßæ'!~݇ª÷ $ òàKûC`qpôîc²èOÓ²$YŽ.Š!ÃÏX¦¿°¿çõK3¸óÅQ§7Tâ¦Â²?IFö[q•Sž£x/¿ÂæO‹´üs}¤ÍÅ0OÙÕ„‹Kà7D³>Eáñ½=¶)ÚMÑô1Òeï±­‹"²?FÍ`ԬϢÛe«ÊYX»ëóvAæ6s¾ÐKÙá¿§—4¦/ÓaÞš$ÿ5ï_åM‘¥þ®Ìª^Qž·‰ÙŒ^`©ïe¹±]õ{÷ó=æû;;4¥‡·­ÑžÌ¬51æúe>ÿGQn•Ãâfx·8;ËÉZaéÇÌX~Y”£!{þŸQÕäýü Nk   ¸‡?¯Ó«œ§Ù¨ÉyVÔÙèò¬Ÿ_ó¦è÷r~™f5ýiƒSÒ,ƒ™ó^%†Å'8kzù¯±6ÏàOˆñ_^^ŒÊó´]öÓQëóªÌ?ñ,%~p¨,?™ fÑØ?O:‰ÑA'B»¥Ì­è=°É¿?þqúo:2‰ßþ%cX*,)q',ɰò°4NÈ0¨z ù©x çÉI¢Õ!:ÚÄZªmBâœG}àíÕ &yï<ï>”ð<+uô* ÐòÑ‘ªV¾ˆþ@êø!ÛIëæ‚ÒG5›>’}ʸ°)Ï‘NRˆbä‚éÆM¶ð˜)/˜ˆ GGÔ]Ϊï¶êÕ[T™er‡R±[Î…ª—BMë;¨iùš±@cÑíS‹ù˜ð2iŒTO¦1³$ßT#å#›’o'1n5iÌ}|ß]7ï‚íl1‘¸#fé³A o§PÆO)Ô}ÒCÕc›z;:>µ_ÞCïãû¿õP'¾'}F^l¢cÆë$Ð »Œ‰ÅÓƒüú+/ç†H¬wº[¿'ÝA]Q)3›Zÿõü|ЯµÔe¢6.‘ÈP"Ö1íá*šî‹}½Ëe€ö! (覒øàg%F ÕÂUÀé¸ @"›Ð÷€¯.hçÒû‡J‚»-­8‘bÿ¦¦–«nÝÝŒÖÉ׬œZÅä‹ÜÏ:ûªØ¸…-sŽtrÍN¥±3Ϩ§,I_T×àü ÎÛÛ%Ô¤T^,}¢N`ZëdüÝØ'tÛ¤M„3o9Ž*E™œ½]…Dû8#ú3©W/VÒ?)Ÿkuáî%ž+·º—MùÍÓ)¿ùVS~óئÞNÊÂjRþ¾³iwˆ? ã¯öû´—Ø^²R/‰+ºººá;ë%Ño_à|\ÕgûùRÃÐÿ¨MK ‹Ž_æ ÖBÝ>ƒµߨ잎.î[.î±M½™è¢Wô}ÿ^¾·¯Ý¼‰K\»=6ûžk7ý}ýoÁýñÐñýÔË{è ßY/¶>éüŒ± endstream endobj 323 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 330 0 obj << /Length 2348 /Filter /FlateDecode >> stream xÚíZ[oãÆ~÷¯ 6} €%Å™áµhœnœlÐ&]Ç@’  ©‘Ä,Ery±«ßsR¤¬²³Ú-Ú€8—Ã9gÎõ›¡=WÂò&¿ÍfÖåßÛ¯¯< &¬¯¯¾¼»ZÞÊJÜ$”¡u·¶ÏciE¾pýÄ·îVÖö›|½^ÏÖ.»<-ŽŒb»kҲ͚¼î¸ß·)m’òXZ®Î'~w÷×á-à!{ßê–Gò’Ÿ·ß];­þÀǼۚշf‰7·oÿöÃ0_§ÙBzöû§Ÿï¾½òÎד›øØ=üåñà³(¿º»úp}øƒºCKie»+÷eàŠ$²B0‚H¬F[ë«wÏæü ^‚2Žbèú*_!¦<¼ÜÏ·"7 <‰î—(ׇV‡n÷«‹ªû{SÕUÓåUÙ>Û„çR«Ÿ¼À[½¾ 'ô¤½Ñ%9¢%„çz ʉx³ÿ¤ ßâÐr&ãùêÒRýyA®ªI»2NÎí°Ä¾Þn.¯ä¦êy'¾%Ÿ%ÖCÚäé}¡/¯ê—1eô”ò0x`ðŠvÿê’¡rA:RBŠ"°€ÌÒÀ3ݬÛ×ÿ¶lòûûªÄí¿ºpîÏ]ŸªÎÒŒ,oÂx’Î¥\l:Æ”d«|ñgš¿TU³ÊË´ÓÜo÷m§wÜN‹F§«=wêF·€<\(áÒóíë¼µá©R?r#;¹Økî =Z’êôÈ60pÉœ‰h%Bš2†œ@Yßó]+’™Þ`Û}™ F…Rʾ[€kÚˆ4+§íÒ¤n»»åLà¶/ÝÃ#vƒÄ$­ÃÂ[Ë™L‰}—Ø3]£»¾8ä¨$à ­ÀóBØ+nOQ7RúAܬ‡´èuË„&@p"ƒ¨q;ˆm;ÕfÍÔpd²¡¹°ë¾3+žÅÈÁ(sŒÌ³LNúqó÷ƒ„ðþ¾Í[îýhBëeæ°åLÝ0ð3. Gˆ]]è¤ÜòÁ3>¨$^[ÇO*§¦†À–Öü1Äöñø1ú—Qâz"°T$`ÉÿeâJáƒáiÃø‰tO6²”¡,°ƒÜùéÌõ Ë8\NVïá È®~âÙYßàÁ°Øk>ÀËÎ R4RMoàÀÖßÿó:‹0w§m×Õí—K^ÞͪÝ6Ô}¿Ë³vybkð ”’H…ö5ºœòìš\½Ês(Î{ž¥*€ƒißm+œhZ¨ÖŸËsT"]Ï-$n ¾ò <YJ˜Tp*½ð\Ï‘±‰pðt™ °QÓMMªÔTW)W(¹¡sërªè¨O‰œ«ÔŽIe’2ÑŠ‡tw˜öítõKß’aå,ïaoUq’k™´¬:CE¢UùJµâGN8'nÞÜr#«Jg,Œü]S¡ ~hä„F»­ú´Ç,Kp\wú"°¿!_{\ÈȆÝÀ¶ÐÄ. Sì ÐKfÑIRÅ>Vž‘f²ŸvòVd÷°,Œ×_÷ÞcWEµÉ³´8µ©™ýR<–CÚ‡2OBVÐ( ö¾õE×2 iTTZ€£q2%ŽKݬ9êvi™¡œî(¢JSÙß⑊Q¹DÜ¡²‚ÐÜ Á„áFKfzÕ74¡á ö xH…;ÀgÊ“àNZ—¬G\ÜTv˜ak(a™Ÿ<åƒ¬Ž‘œ¬)GùŒ<Ó¥O(˜Þ„(/¡Ú>8´øùå7ÎÁ§•§¦µz)›…i™É@HÕž+Ý¡³Ž»ÈÀ¼l4Í HǶûzH%û„ìƒ €Ÿ â£ã6ß”9* °• TG£ÑYgœ_Úß—< «ZcBB9ä°¬x³Qì¬û$j&&]çÕ( ¾pd¬çÁXaa,Bôƒ¢z°ÅðËô7Sbà6)iö+Û,÷4Má#boÜuFkcˆœ`œ[hÐà­#SÜüã«Û£°ïA±Fœƒob” £—‡¿ƒ[_ÀWÀ¹’ãÃDðFŸOð‰PžÇÑÙ®HK8ÏÓîð`Wa†EÊn‹²v¦óTwèåS@‰§ÇƒÂðøxÐìÔÃ}sמ`uá„6©<øÞ,·ô–ñ(š$ '7èpÅ!8X©µY©«>ö á$PBV^4 º‘¼ôŽ 0T@•$¬Òï® ;$nÉ:@bÃØ¾.ÚêX÷3óÇh~PüèñÌb>áॹPG… ǧpzzˆ· »ÚÃ%4©ž³°1ÔCÌÀtÅI‰ÞØÒ‘ WÃŒVòh^³æåéfpb8Áö¾·k&ƒÕ:³BkX­µRC~mb˜Ž‰ÐØÒ9KuÅnúrðÜL¢‡3ào.“, ø æ8ƒ`u™f“9áŽ÷ìCLƒÎ$0”q¡^Šlۗﱘý°† ÆM9‘Aw€îHK8„_ìOwY‘bhOÞ>4rRV$ñÐÛ𫬭 ñ.}¿ ÷8U» Z( FÑçh8 'éKÿ(ß‚`±?\RRv³Ë©üý§;}qÍüHúÿ¿W~z¯<ü7D€P—ÿƒ"ü•ïÔá‹ÿ¹ãEve³“ &e¥ÝPEøLLü¯úß endstream endobj 325 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DSdmLRT_plotProportions-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 332 0 R /BBox [0 0 992 494] /Resources << /XObject << /Im1 333 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 333 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DSdmLRT_plotProportions-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 334 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 335 0 R /F3 336 0 R >> /ExtGState << /GS1 337 0 R /GS257 338 0 R /GS258 339 0 R >> /ColorSpace << /sRGB 340 0 R >> >> /Length 1239 /Filter /FlateDecode >> stream xœÅXKo7¾ï¯àÑjšïÇ!»±·)šJ@A†£$6¼²+)h~‡»$—Ü¥×¢åÀQâ.gæ›9EÑ¢èýÓ|¬øœnÿº_^/ÎÿpO5ú·ùôô¥¡è >w %°}hº¯n „÷-‰p_›UƒÎ$ – I…%E†)l,°ŽIX‡þFëç0ÎÉ7èëàÁ–1”ŽÎ‚%| #zåT)¬j£%4Ìï›…_ÀŒuã?J±Nø¹[Ñ$Ò¹3ìç‰AMøù°€KpŒ üÜ-`² |ÄÚ0ŠDJXlI\à§É‚)çC)$ê»DPCœ++5[y2!¤K(6I_”Ò˜« Ű1QJ|°¢,ŒÆ¨L òÄD’°(JÙ!=+)s) ‰9æÄ‹QQXƒÈ"ÄXG1µ<³Â‰IÑLÄU.òÁ±°lŒR‡1‘ãLb}3ÅJá—RöÒðÃ"3þ(¥01A BΆ?HAøi„% PæâÄÅ"æÚ0Õ¹ø{1»šF1e `³ñbš9\¡²8b6üAÌJ¬Íà< ‘<½\0©Ñ·í¸êN»¸ç½Æ¸çs ÷a½Oø}ó}d£ä\.ÓNtæÎG¾Ç6ÊqÏeÚ‰ÎÀ¯÷swû°.ƒš)¾1Òòæi—~8’¦°YµÂ*ÐÅÃrÀær`lG³îììÂpqŒÇÑêz÷c³zÚåýÝó&\Ï„çsãÇÜ»¢K¥Fc,s%ãé„> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 345 0 obj << /Length 2315 /Filter /FlateDecode >> stream xÚíÛrã¶õÝ_ÁÙ$3ÒÔÂ7‚œiÜØ»Ùv›&¶Ú>l2Z„dn(R!){݇~{.ÔÍ—RÚ…$îx<ðÎýÈG„cÏ_ù,'kMóyùöÄ÷à†÷öäÏÓ×o8õ"$ð†cû( ‰'F,bÞ0ñ>ôÎÓñ¸ýž,e^§qÖöê2ΫQ™ÎjÓžW±šô ÔôÅyÒøçáûæ)óÞ}%+Ó“ææzùãÙ ’¿›Æ]Zߨ·ßØWœ_¾ûÛUsúÄïý¶6үÿœøíñ„"¦šËO ¹Ù¹äÅðä÷hÃnÐÍHˆ|¸=šž¨~F8‘ðˆðQ@½Rz㓟·šLûrŸx«Ÿr³óÒ²JzEªX%¢ˆÁ· à¡a•o¾éŸôΪ*äæû’öƒLÞÊÌôÎnãl®è«A {U„T_FE>NËi\§…}KUÇ“íÉפ€­,Í÷C‹›U;_ΖsДVwõôxô‚þ8Øz5¡¡ÉhŸ˜p¹Ù¹æ[¦Ÿœá ó‹Ï}‡«è•²šguåz É©Ã4) ã;äO;ñrÙ¹àÕXÆõ¼”¯ë}ër’F{9g›|T!ׄ8°Rj$ÖðFçr|lÜÒ^mز¸Ëã©t®ÖìÍ’‡=Ùœý¢±Rc[D¨!<êþ= ŒÑþ·¾Áùešl=©¶õ†;=  jüˆxBQ„×ýéïK˜¾Üp’'2—ƒÕÈÊ8}³YšOä)ןˆšÕ‹¾zÑWÇ­¯>œºæ¬ÑÑ^íi± ƒÖŠ„S´Ô–N wêœýåå1ÂcX²âÕ_d‚ÚØ –¹~2­âú£YC¤s:Ó#ËqQN{pp—V²³û*­d¸Ì:þ~ý±;¦kúãÔ3íâè«Q)eîÞnN4£9·ÅŸ•/Üum«c:\a„¸ éQƒÖ³ä㼪eÒù„Å›³÷WÇhÇZ£hG7|GÖ³£í”Ši=âÀ2ÞJpÔUý/0zFX¦2¯»¬¾­½ß›-Èí\|¦²¾)’îSI=ÕQ=¶jf¬§g³›¸óÆÅG>ïnBü-<‘õU:ÉÓq:Šóú-çÙ”…&pžýrîÝîÏ[dëÁüõ`o'2§@“Æëü韦ž`_Tqn„Š2‘eçÕÝðò_ ²‘N‘g÷{Tv_I¸³w“t#ãÄù-(Êæ ˆËVó-®È‡wPæã¡ò Eà ažü–Éb3DY`’Œ x¥ŠBjË5ëý"#ÿa.˜©/¤ëõ…A¯.UÝžÞÜê\ÏÖrU;8‘f‘4Ô­kYßé:E™ÛWèfay’ªäHe2¹fuX ˆ³ºeAa<s˜K>1m=½¢Ü¨6¼Žë‘}@ÚŒš­$‹˜×oH´R]©’ŽÐ¢Â 8To¢„öJ9)eUéb7JXo\Æ} aÈ]Ÿ˜? {åo2Î2©ÂF™Ø`zý†ñ•q°Pȶœ¶,R®MˆQ´‹³LuW™Y¨ª<5„ņiŒÍt,D³‹ Õ'aæ¿ø”*\ ê! p±®KrŸöB¯iHx§^^̳ÄRT]z–ØïA/K¯õbýyo;uëÞ<_›¾ª6“•öué2çG¡·yµòõØ­Fr‰·~i„w³³Î“„ :Àg5ež˜1ä E-+M•ç.“3…¼«ùm5"1ŒÈQÑÆ»«Ò,‹Í&8Õ»-¶8 Ž“¸Ž¿}Ÿ^—qyÿ>¾W(~†Ï±ÏA-c¡>(nØÝÐEÎŒ(å 6¬ìÀXа[“s&z†î²²_ªxj¿Å.‘Jwà^ªØd4±·M³¸•j^¸™< Ì»IRÍ Fö¥ÍT꛸6ß´pÚ»7ñm3ŸÂÂç£lž˜Í¤ÍMr-5œ?ddÊ™fd±ÂÈ ðÖ@¤ñu& ”ªˆVwÔ»ÅÓÔžfU*m…©Q»ž†9Ø"JðÒ&Ý->g- ŠADö¹QYúµµ€nV¬ˆ2i¤ªÊ ˆØ!™ú! ‚ŒPÀˆªUغ†Àdz~õùÜ@ Úö¹uôÃúb@ç>Ç„ @,¬w³÷ªByjûU}O$¨2–ËæŽæ”ñ<ËLÇ´ÐÚ0'Lý˜k.@°×“oFíQJ•UÇi^™–Ñe”-<è“Öü£#=m D0{pØ(¤ÛÓ‡„|Èuö‰ÂôyA<á"ˆ…ÝU‘”p!ð³§²Ë0ïš(˜†HD¼ µÒd_›Ò+ÌJ…Ñ'˜I¬M¯ñ7¾¦ôJcÿGà!‡i¨¡ q¼á#OÊb>;&kÃc!â"/à’†óÍ0'3ÑÔ–ÁX¶|í—òj b›xñèI¿Ï:._À$B„е> stream xÚÍXÝÛ6 Ï_á]÷µªï`{X×^±aÚ[öÔƒ/qrÆ%vj9(î¿-ÉIìÞ圴’–%‘"ù#Eʈ áƒg¹luýóæÝG0½½žŽ^] d$•Ñt Œ´¦‘âqãé<ú8~“-‚Çi™æU–¬&1Uz\•Inge¶©|k“šh9‰kR?–äóþĦ4\ ƒˆñƒM­ÉrßÞüõKlÓϾó%«îÂêwa‰77¿ýùw3¿IfŠÇ÷-IŸ¦¿pœáuwÿt”ÝÁ“(ßNGŸGЇ?iঠ#¥T4[êqN"FE\*¤Á e-FNÒ¦¯…>x¤˜Ö`âð&µDJ„xñbKLÇI]Ë)ác ¨RÌ1¼° yL,$Ú\ô).rŒ‹ÅÅ;\¤—†â)®£²d?.ÙæRga˜TUù/øåUbm¶Ì¯ sT¹ä“Á{×9_ô2+rز¶²ÏÊyŠçÇeYl7½4ôœ¨*Ó¤ZCйz¾s´Xe·eR>8^Â4RFDiVýÏMp¤´„…÷ã«ä¡ØVn2&œ!¡É9Fœ”júSÖ;õðé(»ƒ@ùêZêƒ]c=ÆÚ&L ß®“ûÔ¿¹|ê`…Lü`3ë{eº)‹ùv–Ý®NO¤ZièrfàI¨ð”ÝA§s+uümÓ Ù4.Ȩãètóˆ 6x{¼yA¿>¡l`õÉÉëŸQ”!CÚõk²šmWI‚hS¦³ÌfE>˜ÕÇcfNOìŠs=ëþVgÉOñ`a$Ì×ïG+„øœ¾P„·&­KÕÐR~žt„ED)„5ë“èÛÕŠž³e¾Š‘ÎÖˆ‰1Ò<žsðEüÍòeȵ¾±Û[Hrþ½X„ŽBõ^¦y’q²vj«l½Ûk³b½†Ðéì» ò›wîmLУÆΑ„ë>¾è(üª ù(ÅHvo›w55ˆÒ^®Îò¬únPÄ”r8m³Þˆà¶·ïÊ,¿O–Á}‹dVå™JBù e»Æ…z\ ÊâIá0x&<«f O̘«´Õî¨vPãÞe«“îÒäÏf½k°K°_2뎷‘¤ˆ}¡z1á*¡Îbþu¸ºÛË.Žê Ãx6ß×¹E’«>ì-7À ¤hÎÔãn¡¢^¿^æ~TH7ïF I•Ï]iì¸)fØ4_õQÍîf£a¦Â(Ö\?œ„qƒŸ»àØIfTéÝÝ…@\ nŽÝ=ˆCfŽ©i.#$GD‰ãj˶d£› C )/0mVEõþÂëÈ÷¿Ôk®w;w»\H$™†³ ÒPš‰>Qá·ÓÑÿœÙx endstream endobj 354 0 obj << /Length 891 /Filter /FlateDecode >> stream xÚíY[OÛ0~ϯ°à¥ãkâHÛ¬€ØÆ4ºðĦ)¤n‰qIÒ¡þû9vJïd\†¢:öñ—œãs>Û§‚„c€fÊ|0×´e÷ÐA@w€Cg/tv8 <â°8‚Bà3 YÀ@Øg­NÒï·1jÉ\fe¥m—ø¢UæQVÄy2,m{TDhÐv+¨•EYïîà“ðóä)­óÖ¸…•$™½w¿ìº…¼¶›¤¼¨ß~Q¿¢Ó=:þ6éFq› Ö圦áGÝÝO ÷CG·ô…¦k§{У ÄWεBÂ3ˆ™ªéš`XhºpKÐßÐ˜Ç ‚0[ä¢P#o1 ™;33‹<|Tp=‹ªCGú¬žEÛÛm×C¤u”¶2ÌÕPåe¢²¢1ZêÙÍfìBzX·¸5©G6UlÜPõšKKÀ™Ë;wã!_è&Ó¬Bn‘‹Â©†ÞU带ü¤ñqÔ#oTaÇ!‹d5­å}{AÀL@êùk{6ü?Mƒ¾^cÜy”¦Í;â—ÌÏU!›÷ÄÆÄÄ^Í>ËDKÌáTn˜”øÞstaqr1§PÿtE )½]ž,M 墢lÇ# ÷ ˜Jõd,“l`iföߪÒ9¶÷+Õ“)„÷_]\Bµ‰K–º„!Ñ:-–-Èå —E¡UÛŽ†z™â‹°Õfùõdœööþƒ8ÑõqBß/LšŒ¬e¢,êÔ¢¯òzB†§ÿ:·ðžcna\÷ü“‹XÉþÓÛPmÓ#þ2r*œ*Øäj4üÔÙj2 ¯éÍKMo–Ǘר¬®ÜDãÇØ11ãüie6¢4¥Ñ4Zir)ÓäB©^bè>UÛ\êzQ&qñàÁ[› Ré"öš >r#ÎDS‘"ϙܴAr7‚¼kâ·"woãg4u>ø7Û_ö¬˜"X ÏXy”•2å°4ÆÖ\<Ï£|l ­->/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 358 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DRIMSeq_batch-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 359 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text/ImageC] /Font << /F2 360 0 R /F3 361 0 R >> /ExtGState << /GS1 362 0 R /GS2 363 0 R /GS257 364 0 R /GS258 365 0 R >> /XObject << /Im0 366 0 R >> /ColorSpace << /sRGB 367 0 R >> >> /Length 2833 /Filter /FlateDecode >> stream xœ­ZËŽ\·Ý÷WÜ¥´ðß­œDˆpf€, /œÎȰà–bMŒäósêE²;mY3hîÁ©ë‹Å")¿½Ýüö~ûåðíïÿ¿¹Ý9ùÉ.->=lß>^=þíÍëíøxð ºmý}<ûë»+컯¿!jÝþsøîûÍmÿ<øí-þð<Ü_¿=ôa{=ÌauKywiK©ì!oÉÅ=”/tñsú‡íÝü·÷¶õ—>Áí9ÎOpŸ Æ{ØKÜN‡ÔÛžƒÂŸwÊö5ìÕM¾â)ð§Ö) x Äö–§€â)|€ÇS@1 ”¶'¯ß2”ÚÅŸêÞ&ßà¡îa œÑ•½Lƒ‹@+»[NTòê£ÁÅɳ<’OÆoîó‹.AGˆJY‚.x :BTÓtÁ‹æ¡˜‚—YÁ<¶¶ÌŠ`vصÝ/QU¸|Q«{^.a/eïKØ.QE.Ç%ª —¨†¼×%ª §À«7w!×íÇGJýy):ýåÅýæÎ_çÊ€µ³µ½!/ýž˜ìwOéºP±Èy3PܽŠ{ІŽ,öì&?ï±M]El[¤•â(=L7õ=LÛ‚DZÆ6¾ú¥º«ßÇÃë³Ø4×ðÝ¡Tü&Äò<6—\ŠÍ†0Gª>D) %É4DÊIAÚ¦”ö^ Y‹$N>ÏþÐUĶMš)Xeêú½´i›ÑQ=᱕¯~©îê÷e$réøÊØ~+êây$.¹‰X(áBƨ £`&P“cÝ}ÛBq»GáŠ*´"ö6öégüä¨ü˜®!¶-ߦ”º»>tsᚥ¶‰mÛøê—ê®~S$¶Í£t!1}t{‘ü¿×À¨kí±µÝeCG–ßy1]Cl›¥•úŽ 0ÝÐvÄÙl :ª'4¶ñÅ/Ó]ý¾E~G˜rËD!=­,ÊÀ¨kä¯=ç ÉjDžµÉ”£CWÛ6i¦Dš‹¡h‚†mFGõ„ÇV¾ú¥º«ß—‘…ê\B•šw‰K®F¢xö !®]"al¥»Bj´½ÄicVÄÞ¬Ï>ùyouê*bÛ"­.æC7í-NÛŒDZÇV¾ú¥º«ß·XéÑeª¢^ìŸV Æ@¡Fg€ L{vâè*UhEì-vÉì&¿SuºŠØ¶H+%Q¥ºMÛŒDZÇV¾ú¥º«ß7Y½a¯©´dO+¥Q¥‰MT㽕&¢}ˆÅ{Û»í^T‰œ£­]ubÛ\ÅŒ‚²_¦n¦Ò6l3Û:¶òÕ/Õ]ý¾ŒDõ4ß1ÐÜçZ."qÉÕH`÷(ËN#aO-¹Q#$2¹)PÄÞ¤çࣸթ«ˆm‹´PPè{º@® Û‚DZÆ6¾øeº«ßRývD.øJ‰wZ)èªIaÃijآYºÓ<¦}º†Ø6K…ûº¡›ir‡mFb[ÇV¾ú¥º«ß·¨yÅ´õ­ò1ê´}™GqÅñ¥æg(šŽ£ŠÞ§PòQ¥Œ‹:熞¶*¢BÓóôIf•ˆÊ˜ÊoToñõÿw¥åë¹Ô‡‹Å}ÁÕ††Nˆ1΀]£Ú[P(; aJ(.<Œd¹reð1qiê*bÛ"-T»î†. ö ‘–±/~™îê÷MÊ\Å”`ÞJ¥.ë´RבŠùÃ$—Χ6rC/ÀÚ¹eQ~s4§¦kˆm³´Qø ?tÑ2Ôi›‘ØÖ±•¯~©îê÷-¶¾ê¸¡ …Æ<-„ʹ‡ÓEãÎŒR”ûläiåVÛ¸‰Î¦§€­²¨2µ ¦—¨S0« XTÇ®z#z«¯·Ùí"ÕÙˆž¼8Ýí„‚ž²±'þƒ†##ø=ó,è¨{#\üJ·#CWضý‹)ræV]T ”r³-H¤elã«§ª»ú}‰§Ÿˆ±üªTZ¬Ò$Р !ÁN^¥J£YAR¦*U\/ß*U^ùMvÕ5ĶYÚ(™ªçÐM´Ÿ ÛŒÄ¶Ž­|õKuW¿oÒ RG.ì²Uû&ˆ’ÝoaDË@Ó ÀúwJZáÒé(™ž‚d›¤¢uú²RV°¨Ž©\ñFôV_o‘T{èHâýhÿŒø¸SyyÏç®]ÅU:—¿9nëU×·öoPødcº¨ù¾Û‚F]쓯~‰î™ß7i°¦Ñz4²];¥dOnzPà¡NÅ:RÒ*âmœ&?S†® ±-ÒJiô‰¦ „2Û‚DZÆ6¾zªº«ß7YhÐbßàE¬z^B’Änt£H›¥<7ˆ¤Qu”´ÊEó‹¤U=ql{J£¯êyNyµêÇ‚Ð1•+Þè‘yñõ6u1ðõ{è£eR Ö/µ=•¯« QKTù@‘Ô®L×tƒŸ÷ž§® ±mÒLážÀt¨%RÛ‚Žê m|õTuW¿orrr§Óú(ŒJéŽ'ˆîæºç¹vž¾D‘œc#ßí?ò½Ÿé Û&;ó5]œ¯iÆÕ¶ £zBc_=UÝÕï[,ºâ@uóØ¶Šä„Q‰1¢{Ëæ©Í ˜Ö¼ >ñࣽ| Þ‡®"±mÒLi´×›.ê] ö £zBc_=Ý3¿åd¨;O jëÇmS9Ͷ©Ð˜È¯7ÁÝoQQ6>Ÿe†®"¶m·äLámËt©§Íö e‹|õKuW¿oq8 HÌܸDW=#…Ÿ¬èíÊ*ÍZ¤ç5E2O‰^?Së3t±m‘VŠ£–ÐtQ´)j[HËØÆW¿TwõÛfÕsœ‘ú¥× ¦xn3én9~ï£y ddó„ãëàg23t9»•WŠïܪ®ïŒªmEöšQòä³_CwõÛfUfmVæYŸíumKü”ˆŸùØ©OaØÐ0Ÿ6{ üó¶Ý-¶[¿×_€?ÿ{÷%ÖŸýÿõ½$q#§ÆÛ0ê£gÝùËÙü'u»‡ý~¼EKcŒó’Ç&P(ùîOÛ $ýËíþýá÷<Ê—(Ó1 » i££xª65ä¨Z¢]ž¬M•ª²6¶±§jÇ¢L{´Íüò‚þû)pù‚ŽÅˆUj¹ëÓ.¿a2w¼åž=íNþxÊ={Ù]øö’{ö°;ùã!÷ì]—øOI¼›„Ã^й;¿#¯ïÆÆ_Ÿ‘×gc埽"¯¯ÆÊ?{D^•ö†¼䆫¬yÃØKxz®z:%žkç§dzæâ¡Ÿ26Ul®ý„±“O”åS;ͱŸ[ã.«»D?ªíÂ&Ξ„=ñZÿîÅ_>þˆÕÿñÝvzøáÃöð{âöâ¿ÿúôðøøÓÇ/¿ßîß^ºø,w¾Z\ó|ûGuEŠîð.b¾0J¶(/üºþÏ„äå Ñ»rÁŸHBìóŸ ™Á_°\áê&·4ð1µLolÇ–øJ>…1þž÷U:£*ùÕŸOnûÃÇ÷ό¥eXº˜ZÆt¹p\*|Ê‹ãjz^WF^”´*Ç/WŽïåôeô¦tC5•¯¯ª«Ê‰ú¦º*_ß6¯+wéM¦rý\®=o^-9Ñ?D^Dpl‹y1> stream xœ‡7ÔqðÆãU¼”‘-‰D!3޳׹éÜÞ£¢=T*{¦DCY‰ì.tö>ÎæîÜô7ôýù¼?Æ×Àùêž:Œ§Šà)£xŠžÁ•#¹;h® Ë•â¸R'´–B[¾à›¿â›À2ü²øÆòø† h}e|Ý7Üw° W[…«©ÆV×@«j±ßj±•ß1•u˜Š:Ly=¦¬]Ö€þÚ€þÒˆ.mD•þ@}nB}jB}l‘Z%-ÈâV0î}[\Q[Ü»Ÿ âm;¢°ñæ[Ð›ß›× ÆäþŽÉÙ›ÝÕÙ Íè‰Jï‰Jë…¦öF¾î‹|öG¾ìH€¾ˆxþ'ü(O„?„=ù }<öh0|8ú`(äþ0ôÞpÈÝÁw@ap’08QOßß º9 åñƹ{9ã068cMÀ˜ŒI(}ÒŸ6¥NùS¦o÷’füˆ3~pÖ7aÖõ‰ŸóÁÍù`ç¼±óÞ˜yo4¸à…ZðB.xʼnvL}ô¨ZWW£££9rXsèF[[£¥µ{ðàîý»ûöý „½Ô endstream endobj 369 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 374 0 obj << /Length 1091 /Filter /FlateDecode >> stream xÚÕ]oÛ6ð]¿Bh÷ £ÃoRÀöÐ"IÑ¡+šÔØKV Š%;Ú\É‘äyÙo߉¤lGK3(Ç(ñxä}òxGcD ñN[/îtm{ñ6À! „oƒ7ÓàøL°0A‰¤2œÎC‘Ö4Tœ žðpš…—ÑI1ŸOŽò:/Û"]NbªtÔÖiÙÌêbÕÚþºI;¤Å$îP-,-³ñÈçÓ÷ý, ADtÛä…¥}_|x7ùí|+Úk·úµ[âäâÝoŸúñU:›Pý}‡Òç鯯'”ð®»m æ¸æé4¸  éÕ-@Ý’pö%èàœ D¡–a‡óà|/fÆ h€‡ %ÓΆ8|I-‘Î^¾œÄÓˆÃKRP&ÅG¸Ó'0 ˆ»ØbˆM–{a«{9Ù˲ã1µÒÐå,–Pa1‡@À4Ì‚&³Ì^çiæ-Xÿ,ö{´0—Q7ëeÛø!£Ð’£ý%!Ò±kY·’ €†ŒqæYâÑGs2ðÀn»pJx´ÈKûBI%:$`reqþ4pŽ”–0y /2³Õp´¬ížËæn±Õ×t¹†ˆK4–Qšýe VîbÖÿ¯ìæwƒ1åa­îßåľÎÞ,J ?*¤Ĥ"\K»ÿ£~%‰f\æ±tsÒ‰ÒäÁ`EwIQÌpâV&I¥a=)n1`;Dç1æ=qI…– ì!Rl‡‰b©â7,À‰r”OôÊ9å°®Jkk-…øóºîDØm æ˜ÇgRïœ ÷ø`ÇôÇeÕÚ¯UìÈxUÑ´uqµn‹ªôÌgÜÀ0+àìãïKë“¶§Ýí5ô6ŽwŒlòÉ;ÑÀ哌@Aõ÷B‚ÉàÍGµ²M±(‹y1KK‡Òa^Ä8@@"D÷%m´Ôšg›†ü{LÙ …GMÛüQ9,ŒWNozé37¯ê,¯}›øé<úÉ'£6›<òmÑ,ŸÕyÚåÂ7¥_|WBg¯ß:õ] Ù¨ýùÑDwr˜B„#&l…#¿S‡8ø¦(‚³‰p>fJ‘=³ tðÛwc%‘Pjœ.=n‘ˆø×ã~€¢‘ƒƒZz±X=ŸÔÅTbuµªê®|„Æû±±1\wwãüÛÿ³I¶;˜FT{ ™þµ\Wk+ ‡RD’1|}Më"½Zæ‡wœÛ®¤ê¿˜[à–À #ý‹g{½ÆTQ¤1wKþðÀõÊwÜš§³¼5~&(’\޹ýV§«Cûwà¾ÓÿßdY\Õi}k¯§ÂXŒQß2½­Öí¡Ü¦¹+ªÁŸ©Œ*ĉ§àØÌqN÷5Ëé4øß<8e endstream endobj 370 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DRIMSeq_batch-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 376 0 R /BBox [0 0 494 490] /Resources << /XObject << /Im1 377 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S]K…ä\.}Ï\C—|®@.Uî endstream endobj 377 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DRIMSeq_batch-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 378 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 379 0 R /F3 380 0 R >> /ExtGState << >> /ColorSpace << /sRGB 381 0 R >> >> /Length 1178 /Filter /FlateDecode >> stream xœ¥XMoÜ6½ëWðhÂ’Ãá×ÕASÀ@‹¶6šCCá:#6l‚¢ÿ¾’vImö9^ÄÀj=RœyóDÎ[o®7æÓôÇ >?íþüåÊÜí&osf¼îîžV÷ë›î›×¿µ»Ùü;½{oœùgò柇É; 0¿Nó×|‰N‡¯Ï÷“¹ÚG`B±5Ö)®ÕÆŠ¯`µ`œykž¾âsó'ó¡§àl1ãµ¥àl =w”Âòp/Þ–l'­ÅFÙÛ§›u€µÁõ«ÝM6k°Ú}@‹ÜK¬và½X× æ2® Ÿlt‡{³‚|ûöf ­ö'ìÍ>`[è%ämJ=âÅìù\¬«h‹=€V]»ßA[ì'-ÎŽÉb·@§È!ÞÕÂMj%wÈVs€,›C‡l5Èr°¾tÈVs€,g›úöf€d46ú‡Škð:³u uÁJçG¢œW®¦ùý¼nÿ¾ÀWÚÁr'y™˜S£8™XœÍžL,jKe¾ÚqÚWCˈ,Xñ¿‰Þy›XþÞE› uV[[Ó{ÜR6ÕT‡9E¬2 ¼$›>8[( >€7´(>T+ 6P4ÛȈà£o›sFì‰4¢ä¬§-¯s«‘9ÁÛ¨3ÙâiD`n¥•)Ñz ¸( o¤üy³c Ø[XaÄ¥¶k'Ža0È«{#ƒAÀÞÌ #`oe0HðÖ3ä Œ î*EÜM¬.îPÄ©ÇÞR‰Éz ¨( n¤eYNâu+§£ o…‚æ*ÌM´*`n¦ €¹•p®zBq!€¸‘UGžM „Þºa íX%S%[a(WYYˆiD n¦(€¸•¢ 8š) ®Tš(˜«´.`n¢(€¹…¢*o$Ö^†93ï$˜) `.m%˜K{‰P•7•°²´Žv æÒnBÁ\ÚM(˜[êëQ31TÁ\ÚM(˜K» si7¡`n¡(¨;j&6NÎ4 0—ö æÒ^Bc⽄&wÔKlœ‘· ân[‰<—bõ‚¹´—¸ºç¢8÷×Yþø0· @‚t¾,¶¢¯ÄF®É·¯ÛGsÍùËýîËÎ,—æöaú¹=]æ™ýzZ?/Ho^$ËŸû у$ÆÑæšší×mÆé(ãÙ–¹ˆ¬ú9_·Ï°=ù%S[Û†ªÍ çΨ ¼xmn:wnÀ)&KÌu?÷Û3f©ÿýR}#õ‡âq#qg=8{šv#q»ÿ i7 ·ûŠv#p›ÿüPš«V–å÷ŠQGÂyuotô¨›WÿFF²yõoTô¨šWÿFD0ü0ÇÛ®A¶Ö/ÍÇÍ—ÓÍc_ÄY6N—x[C“ãôxÆê!•íêùŒÕ5¡UW÷Cîçm.§·Ó°®^ŽVŸmÁºÐeµu±XüÝÅï¯þº48‡/þþøõ~wùÞÜ^rÆ¢ÃJ¯†ð¯¶µSk^æeß|¾ÿôõþéîÒ`ã¸øïäº/þLÿ‡¨D< endstream endobj 383 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 390 0 obj << /Length 2176 /Filter /FlateDecode >> stream xÚµkoÛ6ð{~…>*@-‹¢Ö¾õ‘d¶¢KÜ CÛ´DÛZdÉ%§ù÷»iÙž;íŠñÝñHï} ƒ(^xð¿[¡üÿîæ"ô`Á»¹x5¿˜^'Ò˃͹Ÿ¯§Ày5¿ þ„'dä‘¥§Aå^±¹ø|Äa&ÄqÒ’Ûg ÓÛÞ›öâwøs&Ýÿa ÷&a2Ëà7KÃ,c±Î/pmr yK bgA$’øÀ]âtÌ„u—”•ü¿Èã}˜ˆ\Ä~?yÇ“©¬g<¢qÛ¬›øÃP¶è9Ç"|ÓÕ`§QãûwÊ`£.>| ½–~-2Ÿyĸñâ( Dyµw`Ò¨qŒ´\‚yáÈ8 "iUw ~‹œš€ƒ¸Aâfe—H!8…¼4ðöhæ[‚Uc7÷-ÿV%Æñò‰±•nt_ŒìÔe”ù]{ S>†I¸†È§ÓCQMT]ë6€Šái!‚ÒCbõ\Nfà÷Ca·âõöŽñBJ=e/$OXòà ¤”NÑ~@U¯újg)À\_ì×ø” ž‚#õEÞJŠöweA.¥µr©AާËYìƒVeF6ËÐf2•l³v¨KFëêá`MH¿Ú iì´™‘6«¶1Ln—̨wº{b´co ]#×Á*º(4'üÜâìGÀ`e4Cq)|»Q5用¶[Ò{«Ð"’Âs|L–û ’T3Ú>]HÑš¾~âME»Ù=½†ôDD*%ÒÖüíu·1 ÒcáÍP÷Õ¶ÖŽÁôU³rg’d.ðØàœôï›RwlDŠ?@»Ãf‹[Ü‚"Ã'þ=O#Ç~Yá$4nÿJ ¸Ý|äcñècñè¯x™tïN!£Ãï‚¢ÆîØÖª8ïʤ <±Èc¿¨[£™f†®k‡¦d½äÖO`ÍOÒ©Ë t;@mCòäN;@âxã»HùáK€\Û@ç8Çeô½ùòs/á³{—N¥äRŽ'lÚUKÕÞoœZ‡­é;­6̵ßZ’3<6‡‹¤ˆÑô. ¾¿ŽpÉŒ§æýIIäMdÈÈ•Ì@üÏE3Ébÿê‹ÚP4`¡,U¯Žî8)GV*i³ùür&Qûqù¥Þ´¨/°$¤-Q°bK3ÒÆÒŒ˜MéȲ&óN¯ãäàÆ(™s¬°ÜeÚÞEK‚$É´u7/0WEûÌ‰× ÆÊFo%h‰)¦ÝŒ"£—M¢8sÌŽíæêýøà—onïR¢MfS#áƒm¿Í(~v¤ |€ËSÿ ,ŠÒCn?áë°Û¥nC¶4Œ,ùMXž6Ûu»¨•éÛªdZ¡ëÚ®V o‰mPwú\Ùn½Î ª ý9™60(°†¶{ÐMA‰q«c€0rð·wÛ@T UivU9¨ÚX‚ýµª…5j€²@ÊÓÉIúßs‰á†£Ü3óß±‰@øTæ,<’÷ C„S¶$•¥ ç€X»AúŽ©èÃÖ-¥¡v;Ô\g„ {}õîgfÀÊÿúê=–ý焾®¬Î‘dÖëÛ·ÌJ”W]ÕWf=.ß¼º;XæP4…jª‘e~ËÍxÔà/ŽZ|ݰP#÷_w·Ü‘åO›ã¦¸AàhJœ;TBAo>÷*S[¨àT[!:|Áµ´´”ˆ âIj@s_59>VÁQ„ößùx¨™i°Mt²R[°­WÓN×ZÁP?Q°î7õéóÏwË8ûc§B‡P‹†(6Eø»QΕ©¥ Áè»jsM¯놦ÁΞíl8\åÐÖÝ’ïØØÖöPj)öC'µBÌa†…ѽ½Ó þLH„S“t®Y&‡Ïhšhà8Fø¨;;åÀÊi\eÑW°lÅe„óB'‰Š‰¦¹`ø +ÛøË"7¬Áò¾U6|{»´=÷Ž$Ä®1Ϋ)ÛMýĘS[©…í.´É b `Ë­âÐz@ Ï]ýAÞ @Xm@Õˆ¤¤$Õ0¼Ÿ(K…6Æ]J7}»oŸt+'%óÆÆòSÎ>m^}áœó_–£ ‚V븱ÁX·Ô˜ËývØ‘–šo±ÓˆëY©Q¡]Û|ÇÓ (‚›|8Áôzk~H/+â8È2×ÍJ×ÍF? ›ýú' ç~\éç6À?ä%N¤ÅHfМÐ,ËÈZí4Cœó/Ví$õ—ZõCgW]ä2gÉÀQ²àÃþUüÎÑI[Ý|…ˆ¶þÆ^ÿ•Y0ûa?èP»&fã7¦fØØÉ²ã怖%Óœš/+gñ+03ºXÞ°BQ–ÈP¸ïE_iýg0ñdò­ÌÄÌññ×zñˆ’Øï,K»<ðFy.N>ñ°ñ$è±Ê¸ÑâoÕ–Ìc·?´ Ä}⥨µB߯í¢OúÁ‰÷}w“4H%Œ$СÅv*ŒŽ‡Â«ùÅ?Ñ1æ endstream endobj 371 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/DRIMSeq_batch_plotProportions-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 392 0 R /BBox [0 0 992 491] /Resources << /XObject << /Im1 393 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S] …ä\.}Ï\C—|®@.U í endstream endobj 393 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/DRIMSeq_batch_plotProportions-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 394 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 395 0 R /F3 396 0 R >> /ExtGState << /GS1 397 0 R /GS2 398 0 R /GS257 399 0 R /GS258 400 0 R >> /ColorSpace << /sRGB 401 0 R >> >> /Length 3072 /Filter /FlateDecode >> stream xœÍZ[oÇ }ׯØG¨7s¿<ô¡v#n$‘€>y\åbH¶+9h~9ù¬VŸôYrQ^it¸³’Cή^^/zy»üëä‡;þqýã«çË›ë½*¥–ñzýæ]…_œîÀ§/¾£¿Æåß'?ý¼¨åŸ'zyÿoO´‚Àòí ÿà‹V*ÑO¯ý¸:?Yž‹ ‹K«7‹Öiiq6®Ù/Ö¸5F.ÿXÞÝ¥äÁ N–_û*ÔšYÆ+­B­ÞöU¨Í*êì³»åðº(ã‹“Ó*`l^õ PÇ]Àª¼zßêxˆ™4ïeL³«FÖ®~Ô¨Œ”]ó¨QÑ­vx`9qÔ¨Œ»€Ó~Õƒ@“@ò«j¤\Ö¡sMGíüš\¨ãA¨°†Ø%êx”qõj(ãAš´ÚA:%R&•»D·Ô%êx€§À°juàS­I9vK4ÝPyÁÝÆ/~µ¹:¥3f z†õêu…}\ƒŸQãÝjBÅS«¶³¯¾ÀÎcÕ Û´#8þÔ¦â†ô-¸UŠœoÖN“ÿ¨µX¬N ×€…ó’37³æÕÉšœ‡mÕ ‹È3³£ˆ™—l=MX—-`Öɯ¾á¤ÍôJò – óårÑPì×%#s¸í’íšB[ò.Ë ßð`è/uÉ )m'%Ë8Bã¼¹9‚™Æ²‡¿Æ­Åb[RŽ”Cæû‘iÅ¢Ú†5n,fUw"«ójnÒ,òÅ«Sëþv}ËÚëŠÖL/×’V£ž7á6åqÎP¬aù6`W¸ÑEÃYá\‡P©øïØ5œET‘½5AˆF,Q“ ýš5d‡Ý15Æ&—¬8Íi±7P¤s@G½»X¸Ÿ¡§V®2 ¡Œî(ÝoØ9Ø‘w¼¥µj§Éô GJã a(oæŽÓ2‚¦é3å¿lh‘OO”A‡rVóز÷ Îs`mö x| 9ÁÊóÞdøžŠÃË‘8il9§9,ís”¥™œhG@Ò]p)t1VžƒPpšcô“½´à"K1x.8C&¡ €=X/Á¨4<6”iμ“ÒÄ;*Z«£E½=ßSqè•-ÑØp¶v@C«+»–Æs#m¼‰ÌtÑp˜Z‘ïÀ’î0S,’êuó5Yq9®o.î ¹'á\¹ã<j“ šŒ¨¢9ð‹mÅEíÌie„†óR‚£›u†‹ñö‰åÃÚFq6ºÜ àräÅ©|5œ©‡½A™9óÖç5§2üÙ1õ÷•46ÄO÷Ôï§Ç²½¶Ï¶ìzòo!Ÿ…Ýòun!Dîìòo!Oqgæ/õG yü¤zF‚º¢òHé>lB¾–-ä#gñòo!÷Sny)h$ä €¶p iÁ%ä ÂÀ˜MÈײ©…<È¡}¾…|Å[ÈCµ;¨‘ö #–³šÚƒ"Ñúƒ*1öE¢5Ublª„t"qk‡Pµ’A´Z„ª•ô¢ÕÐ#T iDbhªVÒ%ˆVC—P$Z›P%†6ÁÃ×ÜP~×ñP\{ĪÚ€:$b@m@QÓÆÔ%êx”@ÐÅA:$¢Äm@Èm¨u»DÝ{÷³eÂæjzO`)™^t'dåfX÷jÎ+]¶òñn”AÊŀ͇Y¹\ªÅ€Ž$ÚÍô¼ÕùÑÐt/ªóJ?µ˜ñvóüH¡_µ‡]†b·jŸ¤9Hpæ¡Ve˜Yª‡&q£»Aeõµ°qÛŵæ! s»ÍôÈAlëQ‹úv¥\’J=QˆmmÆR9Ý^‰÷ÜÆluÙ6mm%ÛÅûÖGTŸîWdîºú"³q[k$16ÂÔ_Êí3³­ I.ܸ¥BëëPf©ÄÑÝSYa·‹Ëݶ‘xÚGÑïuq´æ[¨šÜx¶¾ÖvFìþnã8™&üô¹tV›:·Q¥•;Á·†Ýp ÛSç%%5ÊÛŠ7n—t‚3q‹õQµß¸ÅúÓÀ]Ã…[Äu·à;ëÛùX¥q[ñÆm(×Èí]MnÂÂ9ÆxÃoXÇ`,ͤàŽùh\£*NÏÈhÏø`AÓ’P/ÁƱèÈÆ‚S§Ã¾€ö/掳½èÈ éÍw†Ï¥Ji†;?Á©©ÌV‰ùmäôöQ$¦·‘ÓÛÇ*1¿œÞ>ŠÄô6rzûX%æ·‘$!†›|gðfËîÓ¯“•×ó®ÏÊâLŠšOT‰È¸Í_=ÿx¥Ê ­$¤éqwÌ¢Q2£§Þ›Æ1Ag‚Êio}Ì4‘«Ý½iÌÓXêOâî4á˜i¨Uºa‹Æ1 zQ:5ÙÓÆÉ÷yí@¯úë|À7è‰ÄtÀ7èU‰ù€o:Ыóßt 'Óßt 'Ib:à›ôDb:àû\±çá`z?jŽ >Ÿ9é=4øÐÞPKÿÐà‹šÓçCƒ/Fα ¾d9?4øRælý(Á÷ OtT-zÑK`ÔѤ°½Õ¼›¾è»w™:t· Ü[•»w-{ènKGºÞ½Kï¡»â/OÊÝiŽGÉw(úG>—ó·Y¼3>|‹5|š5àýS¬áˬŽ_b fu|økø.kÌPñ½íÁfñ=[9pxì‚¢œ™è¨Š#ãü—^_ïñðIžõlPAóç+8àRÿ^=]¨þ}ÿá=~{F¿~üãý»ë±¾×Öx¯×Ž™¾÷Aå@`àãˆàûwW3¹9dòìôÀ¹ÄÜ««÷~Ø5ù‘k*c¥CŽÈ-5_ç5í/dçÈ<£Wž'Lt’K+× ã=&”3ø!’ïw?Fr¦ïÃ(ù|ìãL'&æk‚'W³çWà ÿ½Óz¼m½åƒ‰ãl»w )¶…²tZ{œm÷&|TÛÒK4=Ø6ú£Û6ê[»mmû9B‡Î«Ê»íXŽ/^œ}s×þžOçàŽŸÿ÷/- >MÝ ´n")Ò©a©k~{‡{M6»5ßÁY‡§âåÛó_Þ-çO‹$üŸØ®‘‰—¿"?k›ÿ²|uþæú'‡0³ñ~Iúä¿9œŠ9 endstream endobj 403 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 408 0 obj << /Length 3515 /Filter /FlateDecode >> stream xÚí]sÛ6òÝ¿B×¾P7J|ÌÜ=ä&“›^çšøzm憖(›D*$åÔÿþv± %Ò²#Ù¦åL3ž±ÈˆÅ~`±À.ŽÎGáèÍÉ?NO~x­å(f±ft:éY+F‘âLÅjt:ý¼Ìæó1ƒ´Ló:K㉈lP—I^MËlUÓûºJ°Òùx‚U –ä³ý+ÿ|úcóàà:¸ªÒŠ YN¿ï~z1©ÒOôò9«/|뾉—ïÞþë}S¾J¦c;˜>œþó$ôÔÿðZÄ[¤+Á´M”e6äDù묬êgã‰â"ø<»*c\$—þ©.èwZ¦Iía bùáµÒ[s.™• ðº†gË÷@î,©}ÝNGLÈtÜV-Î~O§m'.²é…ÇXäu’å½ÍýºL›¢u^Wþ“*Y®¾ Ë'ˆo4á‘bJXxà,Öš0Í $±\&uVÕÔ$@%MpžæEÅW+à.0¢bãI¤Ãà}¶Ì‰ûpqEu“Š>ÎrzwâAÀ,û-”r£FÛÖ |Í8Oé»Uæqy°Èò 2<(Ój½¨+GHØ£ ,–@©I_¦å>ò ªÓ©›)“Ù,Ü @õEV„˜î+æ¾ZR7ÕR¤))æ½Tá«*C <ó_nÉ *­Æ" J .f²|EiUg ÔI3tß 1†ä…ÒÂmÔ«\ûè´v‘]þ ÁŒj—(hz¬jx†§Í—«Ée²X·h“Ùïkà£ÿ°)0¡ ^ì”Ež~dZöt ¯è­•{q2àÁ3ì–gÂö»:‹ª §éE’Ÿ§¾¬i0‡ñ,ÓcNȈ…JÜ8æÌ¶Ý‹·QSõ/»F0˜‡Pv#il‰¯×êD†–ERxΘ[Z—Lëžy€Á¢ê]}ÛÚ[ûº£5Њz‡±ÑPUÅMU¨&x=nµ $c.MœÙ1áÆIj³(P XƒF TX¦µW¶YEÄéyJ/Y~‘–©¼úkHød›¤`¡Ñ]mòœ¾Ìе=2(ò”uÌyÈÂXqÈI£,YdÂ(•P|CÑ;œ &áDæ§a™”–&ïâºÎѯ@$ðc‘̲üœ¦«7¯þóËØòàÅË·ï âTÕÏuágÀ=f0naþˆ¨ëÿmf-@·®ÜƒjÌ” ªõY•Ö CçTJh2KQs2“ÒÙsüõ’º3ûª¦"Ó(à›t} L©NÇVíÔðêo+o!ž‡‚ ÝP˜ý?ÂLâUJøhû¿ëcø ýmÿw5ûÀƒj¾:=ùtïðÇKYËLlGÓå •ЌƒÌ¢˜Iì]:šŸü|Pgö'pˆš6{Ä”C¸ÐT³|×8œjÁx Ýx‹%31ÒÚ0$»EvV&0}*º}kŠßB¶º¶­g%”ðá0Ã$)$‹½y=pFÃô£ÔˆÏü$ñ?W,²FôN¾Ý¡tʇ¥îL Eð·É€Lvv3ùú<>¤‚ÜÏûcpj »ŽÁ.uˆnP‡¨ùüò«UúM#׈;³úŽJ¡ï£韔äZS¢á•È‹Æ÷M<œlÒ:Å4×_Ö»/ÌMU¾¢/x1vŸ/¾©Ýã¨]+™–ÄV'š!<ÖÝþþDµßYÇ‚zKªÎ*¥·ÜP芶ëüf¿ðú²X!6ñײ˜Pš .ú‹ ¸:ÒÂÅ„ÒêóG]LxUºÓêáÑÆLØ,oqƒ–K¿AËEP¯Ý&<¶v0•ðJà,ÏüÞ-T§û »†ð0¶£þ¯ïꮢ† bÔýiøÐ‡÷‡°†îô^بø¢€x·%ÑŒ»ôíºž!B«cÀ1Å~›í¶Ý ËlÜšÜev\›‹c’#1ªÏ2·†a™ä–‰PöX¶ô ¸)Р“Þ'%fF‰h”Ì“Zpõ¨Q ÊTj%X„®`ü.ùMê 뎢×çé"©ªÆlÌ‹1›ešH..„f¦  ^`_o™Ó°” ›Å·{¦<4,e9˜¡N° Pj¹0 }Þ„YðízèŠà¸ß‰m½ÿéßR_$¾…6J/.Ž«‚ ýHGµ.Kè0måÊXÓNjì‚f$‘<8ó€ÂKPp틦`{ÇÀâtqF·e  u-Y¦uZÍ|Äf°!g2Úh©«hÒR@i•”’IãÕôs–ßÈ©ô_GIŒ a¬…¦K̬ø|ëþ6-ª6Ô*œÁƹíñFJË60í›–q#ºë”lFq—b]ÓC[6ÍÀ§ê¢X/|Í3¥pMêãø%©i· §ü.Nd·"^àÇ AžœŠ;’ê–Ü[QÁCŽ…I3%ø­óÜá]Û¡¥š3¦MÆœ)®p–3€?6×Ù9/<%€0‚¥S‡’šã"ìõ#’ø¬{BùÒ '€ü6v<_çÓ&ÎîR>­³’VÇ䙀;C “ ¤PÎqÆß,_¹&¼»°ÅI§>áAnê€_=˜àÁÆÑœki˜– yQÄ”1­w-w+ë!Ük@Yí§t|ó¦æ[7HÙ²ˆ·~¹[¼y©ÍèÁ[BÚ1e •ÞÇ}( SB<”Wüä¶+ƒûmðÝ"s]UM^ê%‘T»¶s`5í(}ó®ÅÖß,B'WÉ^­Z]&“2Á/ˆŽ¼«,9[87Q*?¹)ÜQê¤*©àíK_ÅgIIÒÑn%AmÍ =æNÖþ¼5¸¬WCiH©4°8 ÕõÐån]’…²Ž~{˜8Í!½-ו—€Ëã5……±ÅÝxZ^ru,®s˜A8W3l´y ·QJRƒ •mV÷Ÿ²¹Ä, Þ'F¤>ˆ.êÑáV‡­ý×ûN²[·d¸‹ÐÃÇÒ”\-«¹à…Rv¹{‡áíÜŽçÖ0c~_Œ9`ÕÊ% ‚ÕÍ.ÓÅÕØJ\É(»•Œ°ÑQí$§Öþˆrï̯‰¢x'[Â$Ö#FPÞï0ÄJ)uoØn"æ7Ìÿ0Ô7ÙÎ>ç m~ê‡Cx¹5?#ÄgÓ`$¨;ŃÿFá 7!Ëvö@Ïâ†'œ(Žæ_‡Š‰-Å™ evF”JG€t#–7úvgžjäŒãFÖÆ%j#g ~Ã?cèLL7Û¢ëB ;kS Œ¥ßK÷È—ÄÕ¯÷n_&!š¡I?¼ó¸Vr=¤ÞRç{@jŸÙùgCö\ Ìvþáˆ)'û«ŸÃðôT^ ¦Qôkn€ÔþwMXÇÍ,…ñžžûwOKy÷§Ù í»ÖŸV³xÂàè4ß)3ao]uÞ—½8Ã1'/lLµÙœwœCö7fjHê?=wnÿ1Ñz˜! ‰ö‘Ò cbÂ#P—8ºÞ£‹LW_Ïœ‚«,æXOtrÙ/©‘hjQ, ãýTjè$Ñ¿î<¶Yµ†B¼ÿñ”;ÙÔ]Y±“oÎý7çþ`ç~Ø#\¡%3¦sköÙþÎ1è¯Õö}<«±äîgãl­`ö2„φîa»ÎÐH[ ˜ØOÖ9Ï<ÞÓ3¿[ ÿÙcÞF×Ó¨áDØnfF†i ýeÎàšØx÷&OL?qE´gŠŸˆʘɰw¡Ä×÷æ$Jz¯P¡ïàà:ø9ËÛ,Ê'åßïí9:•On'hµÜ%!t,åpk®ÃÎÞ㱇æ–ï¿'}~‘ÓoséŒ{žÓ¯Ïl¿î7õsÀ›Æ([È 1·3´oÂå áCÌéwkàîhp+ƒ©ÉÁú«ƒStm¥¸©C2¦UU”ÕsOB³" QîÏ:ˆè&ÜüXg÷èœsÿ0’Œ€õkÌ`ÆÛ€è0¶¯S²|sÍ ª9þP¦>Ç ñÌT®èqÞÞiÓÜ6„PŸã‡U/è#Þ&â7ð”Àn™8ÐyY¬W˜¿¿Cv.‰ÓÊV¼ð¢ü‚ºw™wîÄzsS ÔÍðR$¼%k~EßEhÓçZ»JXcЇ±°`×1¬–LË¢òÜê™lR_úT€ægç(å¸ñšÑ]Y9k’W?bþœ²QðŠ.Ÿ¢TVå/sŸàµT²[wpÁˬp†:ŽïÊ_冀MûT°H/ÓÊ_óàÌeÒª¨© ÖëMì £¹/l"¶Ñ é5fÌçî"0¸[v\-÷ã’Dƒœªœ9˜TÍ¢ªÑ5> ¢Ã zß\±Eï­.ºž¸û•:8I]K„dQäç;M]_&ƒ„γËÔßÔ³ék?ܲ€§îÜŸM¦f]®1ÑnIW6]QéjQÔÇIßç±eœÃoh˜•bøTqD(Á±-³¢¹zêùwJóÆã‘©G#bêe‡–—_>×%Íæ%ºlŽ.óZO]F¬Ë_/S¯8 ÑÅy™,Ýl#´?J %ùzéõ¶$€;n6GÓæ‚‚¼¹.ýí_ Sœ¯ÝEànÿkŽuSÎÎ6‚íû«¼­ȪSNɹn ä³Nc ·\zíµƒj|ôID×[>8Ã¥@çþM¥ 3˜§¬-3 ùâÐ-3мÿö‘é endstream endobj 415 0 obj << /Length 521 /Filter /FlateDecode >> stream xÚí—ÛjÛ@†ïõC®d¨&{>\ô¢ÅmHi vu×”¢ÚR"âȲ¤Pòö]bÇÁ`‡Š€c kͯ_šÝÝÏ^‚LR mqý$lÛé…GÀÝ€ ïcè–,ZÅ„ H‚Æ0Ђ¢°Â9üôÇi’Œ(ñã"Ϊ4ZŒ¦_QVΊ4¯Úø¾ŒjÓõ(¨­­eóýÍ“ðkÿ”ËA¥ÿPÆe«¤Yû=ýþ!(ãUüM«›îí7Ý+ÆÓËo?úûy41âß>Éô+üâ‘ýç ­¨ÃuÛ8·ÅƒœŸBo幨}h?ÝJ[$VÂìΫuÁ$R«Z”ZBCâMêÌþÂi´q¡àÖµ”ÉÖ¹-Nûå'@£•„ÕËÏrîJ…ZvË/_,«qTE×n_§ËqE$™¿0C kFRç­\aP7)ºäïF¨‚`C¯òxèn½aÅôsçZ\'8K⨺/âòlàÒ÷÷kn)ÇŒž”K´Œ‚ЕU52VžÛ4T鯱qÙÜêŸë„óË;Ê`¼t<™ ‚·uÆÀH$n»ŽfÒýȼ1¸=NC_±`£d;É'¤DS+ÇO>µƒ|ê˜ÈWfù‰zÿzL0Ô‚¿„züD½W¡ÞFÉvR1FØÓÿ½#¡ÞŸÅrvû6¸×¤·ŽÑ\Kdº.­;É(Þd?°ÇŽ€ÿÔ{Ak endstream endobj 410 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLdmSQTLdata_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 417 0 R /BBox [0 0 494 494] /Resources << /XObject << /Im1 418 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 418 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLdmSQTLdata_plot-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 419 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 420 0 R /F3 421 0 R >> /ExtGState << >> /ColorSpace << /sRGB 422 0 R >> >> /Length 771 /Filter /FlateDecode >> stream xœ­VMoÛ0 ½ûWðØÊŠÔ÷µÅ: À t °CÑÃÖ%Š%[“ÃþýôåHNãvÞv°ìçGZ$E=™à à±»™píÞ¿=‡û]G(„€vÜÝo }1?BÏ/®ã[ ?»Û;ð¹#¸ ×CG"À».ÝÒ …jnÛeç} ,: J£Pah<(IHìàl^ ñ%ÿV5žÚ1¦ PËš‚8H!œ8Ü4¬;åjîñ×n^ X+dW ®Ò ´T ŽD>†Xï¡5H&0z³7èa5¬Pú½A«bƒŽ÷=¬ÃuÌ!…FÕˆ3¬‘ONµ&7)“Eå›”3®Jɰ Õ àh`JÚÇ[P® ÕSµd6%³ÉÖ’Ø”Ìj4¢–¬À¦dÖ¡¨«ÒÃj \ìn­t¥¢ÔŒ$|\ø\,1a ÒÊÍHìÑÚo$rß«ú—ÍÐÝ¢—=miÖȾ§ÃL,G½™-z³dd1 ‰ãs¡5Ç­5Jç·´è÷z`½DcÆXI I²2¼—£¬ÖH<Êæu ZzƒÂ9+2¨Ý¨sX©$ou<®ˆ/ëÓ|’Z»ÎU!C#Š(nuL"~¶',Vê9 ˬ͇ÅNÄ Ý›EúòË®¡(<;’“/Mv–±+uræÉÎJºØuÑYîŸoIü__­gâ¯kw¬ª˜"±U[U¬|UÁV+_E°ÕÄÈO?Åÿ2Í"¯ú¥Šmj×Vk =ÞVj ?PÞVi ?ÞVh ?Ðݶ ÿÜæAgvhxj›“11ºê«'4ªI¿ÕwÊ‘aâð›Ð8O˜Y¤g>ºE^×Q¾Û¹Ø²ÌíæN8dFƒG¥âÔ·'×OëOË-|[Ájaçž,?þxÚ.wð=¼ý2ƒÓôn³œÝÁâê0Ä á41œ6¡…GÖ‚‚j¸Ðåvùø´ÜÜçh~÷¿—¥lr—ö@ C‹6ûœ…“ÆÔèb»é~—©sâ endstream endobj 424 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 411 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLdmSQTLdata_plot-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 425 0 R /BBox [0 0 494 494] /Resources << /XObject << /Im1 426 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 426 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLdmSQTLdata_plot-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 427 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 428 0 R /F3 429 0 R >> /ExtGState << >> /ColorSpace << /sRGB 430 0 R >> >> /Length 897 /Filter /FlateDecode >> stream xœ­VKoÜ8 ¾ûWð˜ÊŠÔÃÒ5E»@€ ¶;ì!è¥é¤@ÐÉn3(Šþû¥d%§Ã¤n{°Æò3"¥àîàóðvÅóòð÷ps1Я‡›ûª~µ9¡Þ¼ºÊÿŽðu¸~> —òÜ dÄþÊOY¼qÝÏÃn€‹c`#& Σq²&ô œ%$;øîŸ ñ)ü·-ƒ‰ú5§`ÐÛ–‚y”Âôqâ„)À~p)¢ç£üiØTƒiUn6²kUÎÄ-Õö³8¤ÉÖÌG±8ÃÈi68ŠÍ`¹MSDÁaèšÄ0%»”'¹Ëˆ½Ô°Ëh’›ó}W´*gÙ¥Ès¼UêÂMcW‘*6k-Ž-á£ØUd48ÆV‘*6ƒ$Ûn=Éê/­DÖgƒ©âÔY“ß§N"Çh¨W›c;geÄ4¥÷8’þáÀ¹4:ï1ÏÚ„ŽT­$Å:6Ú< ª¶ô±¦ê~:#6ƒ e™¯ºeÑ.°(wWU³C6j±X†ÛxõÛvÄ´KçJ’UíŽ^ËÉSžZÕ±èØ<Åiö<Í¥ŠYzî uʨqG_2ÕЉq|Âw’cQ-™5QjbÉÊhJ–92êw9`rtšY êJôªvD§c½CëÔZXi5JZT!æCQŽ£î6Ž*4Æ|/iPÙi§Aëi®)’Š$i ÉŒQEÊý¢¦´!_™ŠÒY´*ÒË«"ýˆ&j%`ám=M?ž&›UÔèÔs±mtÄȸg&ÑÖ˜ÞÈe Û[ 0ÓŸ²L²Ü’21r’H'm÷pfÎa{7¼Þ–/ÿ4ŸÙÞ,¯Å–yëÖbóæÉ5±áˆýžHšõüV}G³B›Éý‚ ”ë¾hgF² (M?’?iú™,èIÖ¯çË?™fe:œï‰ý‚õ´§ª,¨g=U¿ A=é©úêÓüå2cGžxmS”ë™:,¯[!r·7°[vrîÇØƒ9ÕÆÏ½©ß=®SÁlõù.2ÉÙR>åÅõõÙÕ—ýûÝü{ ›«¿ðŸ¼<‡2fg»ûÝù;Ø^>lEç]@ò*×<Ë­0×govŸ¿ìîoÎ!{þvÒïo/F?!4µJÞôÙà%™¥4?ÒÛás u endstream endobj 432 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 437 0 obj << /Length 3212 /Filter /FlateDecode >> stream xÚí]Û6ò}…^Ð1#~‰p}è!M›C›K“-î¡-ŠMÛBdkcI»Éýú›á¶¥Ý¤Þd½ÞC‹E¬á‡8Ãápf8%cBó$ÛûÝ,Eú}ýýY–@CòýÙ?.Ξ>×2)X‘‹<¹˜':cÖŠÄ(ÎT¡’‹Yòkú¬šÏÏy–º[wUYŸO„±i·)×ítS]vTîÛ;-Î'Ø•êÊõìðÎ?_üß\§[×RMµ¦çë—ßNZ÷ž ×U· £/ÃÏ^¿øéMl¿,§ç"Kß 0ý~ñϳìp>¡çwgP‚?žp©Y!80]1!“éêìýSÏï°ú¦øZ¨xúbÅUò¬9ûþâŠnŸ,+—€VgÚ Ìä™1DÕíM@[Ä0‰”Mv¤yYÉhÎ ­Åž°(£™- KÎÄæ{!)ùˆ‘2}^ÕÛÀ*j†ÅÁÓç¢Øa%7á–éÂQ( JŠô·L*‡ðmç. ruµªÖe‡2‡å…[GЋ1sWvý&V“"T7ç2 ôáKЭ­šõ¨Ô&-Ã;(Éøì"E³ h’Û­ó‚9MˆÉDüþÞQ¹Â½³pâNùØV-•~ËtÖºÐÔºièƒÀ!çq }cA&@ÅÙùÄJ“~‹“Í*ÄVÖõÇs+SœtaÒª‹„×Mê‰ ¼yùª}ú¸8±¦ïÚ[Ù°,ñ5›¥³†žëÆWðtæÃÚQuìV»² `GË#L^…Åm|åÇKÓ/)Ô_/a%tåtIP3£,ÝŠV¡{\hX<ªðË»¥¢ÒÉ ›ŒŸAMÜÖäÕ ¬ŽH†ÿÊ-õ¤\vzBå°µM”äLÂþ„Mì`Í ì/.™£öø"âÈz¨ÄÀ"e^! F ƒ+)™´aáVU`À×LÅä@o±?•_Ï’4‚ €©²Éµïº‚4µ:yóÅ3»+­;B É8hÅ ¦¤‰,7°…lqžF`±Az–¯›ßB\1 À™5AþÇ×+flÛkW;×ÕÞ<&Â2ÃóC^šoÀÖ~F É @õ®Ö³êªšõeÝ¢ê*ý¥íwãD›DäËQd‡+vÄM‚­Î‡+v›D˜ŒqÜ$'|ˆR ûx¥Ïl¥ÏPëï{ô`ìznš~±1ôý74Ø)ýÜ+}"4è´¢¥¦ÃÑÐAiËÕ%Ìà꿎m°KJêÿbæHâÚH™h•,zÀ27}=£b]½Ûk$û‡PðL¶ox“…¥=ÏÃ…1â;m³ ÀÉ©VžhDá®\Ñtù7êPA ˆÞ¢OºiÙ·îvë\y_½ØŸÁÙÏ·dq;ïÎa…k; ¨saä<>áÌ‘’¿EåM .ª”ü<.éÊm€™¢ÈÒ¹¯ ÃÒ”ò ]V¸eèýaÃUY÷ÐÜêp¬Jï µY$š ³/‚Ùä!0múu×<+»Ò#çé–xA?ç`Á°ÂY*†Æ>„#Je#š6~‹Q„¿†ÉÒ {«ÇL&t÷Àã/÷ô¥uQbL—­:ÎêKc/øpù¿¹ƒTÆò¾Áš "xé/â¥>`÷x“€¯¬èbæB¹÷Ñk„ª0‰K so0Ùƒ#„‹PÎӥϢÀ97ôÜ8Ž"Û1'ïAß…¦ &@ÇÃä¹Ip‡AF%ÝØ¾£»¥Š’¢ïTØf¸Eb"’a†ÎÅc²és?ã˜~Pz¡ºrkß¼|²(nŽô‰éú ,²Y^!ÿ…N×ýÊmª)Uû›Ž–`µ2\1eR¿rʦ(5>ÓÚPk0лtëSXe–±\Jpê$ø|*Æ.ä±Âk…J(™‡]ÖDçáà ‚ëòã=„ä$à³j<õÇ’“Ög†(;fØS‚ãf†ËrQOgm#‹•eª¸!÷à¿æJ‰Ç€Ò(9dòÅë_¾ûœQ uˆ|e²êë®òá¨F›¦¿$­ƒÊ’î!}KÕ†ku£˜²z¨Í‚¢Û„ûž•›á½“:­:↳ (˜ëg#«#DjÐI†äœR‰L1+óñÔÁ^Y{DŽ);¢:BŒ¹Ãu¹}$`MUf#Áí,Ô Áʧþ‡É¨[Š‘ð?ÿöÇ7ßýAƨÍ>’Æxï*G§mr©<ß”+w½sÅÞQ5zÌø$!JòEˆÜÆýÁ¶ZøqŠ”¼÷Mõ!Üz«‚!>íŠZ½sE.éõ\_—8L+ß¿`7ˆoçce¡Ó~â> Ä}:-:Ê4IJòóª`"ç±?å½ÞUX–é;ºŸqµ7Çi³íß7}¨ÆC‰ÏàõeçÄ„jZÖþÄé®Èå®Ê·>· jü‚³-‡À‚³wáž‘·ì“¢ÿ‹p² ø*ûônÄ0g+ŠÝ¾Ã¾ËòÁŒ¦ž¾YÀ„ß²ŒªäO,ص i:å6Sšê/i~ Œ”…¹CþôV»ÙÉün•3ŽÁpƒW›ùCìwD)á˜Ï-g:y„í¥‹L8`¿‡|§ó“±ÍjpÐòe›Å//ô'ÙöU)×`ç¬Ðãé<{¤ÐûÉoÈçm>bÌùH<ïÁæc¦®,Ìcä±ß[ê!… Œ[9dòa6Ÿï}T¿óŸ‘¸ÉÅÐH\W­RmS9)êÔR]‚Q¾ÖhŠf™§­ø. ÛÃg"Y@ºûˆôQ®tzo.)Çi0ÔîÛ ß%ëá]S~‰ÿ¨h‚¾-¤”·q¨­ÖS™ò!A RÅä<µ •ù²_Ï6nÖRŒaí¯p|k_m¨„“DMkÕ)5-FG0Œ‹©œùÃhZ‰0–k{¨}2LZ9ð‡€…­ëÂ25'c`Ç}¡Æ €Œ…@ÆM[£nÒyZ1Ǹ¢l\Çîá‹V‰qqp§Î.ë)®?Rˆý–Oî«ÞéÄgàŠæ{›ª\8¶¸Ð™r†cº¿ŽQq¨j¨X•ÝtÃÜ{¯RÎ?BA+hPV/Ö±ÑѸ37/û:ÖR*úÉrv•æà0 —œ`àC˜5-@ˆ¥dFÙ¯õÑNÀ´ðM‡Ýøi®!C X¢BÞ›¯úŒÃY<G Z Šõ®c*bDX5äï)bð²D±ý–о‡æà]4«•÷c¸zRTåÝxâ7C^{`¡ •eì´®è?À}êéI÷‰”力C\²†|/ìÔÐ3~Jí³ùè‹-陋ÿ‡Gþ±ÿ‡qòÖ—ÿ¢çö"Ѓ´~¿ò" ¿RðÚ¿d}FP"ïûª k:ø/ñ}ðß1(³\Údb8ËEX,¡¯€”ÿíú   endstream endobj 412 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLdmSQTLdata_plot-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 439 0 R /BBox [0 0 494 494] /Resources << /XObject << /Im1 440 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 440 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLdmSQTLdata_plot-3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 441 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 442 0 R /F3 443 0 R >> /ExtGState << >> /ColorSpace << /sRGB 444 0 R >> >> /Length 757 /Filter /FlateDecode >> stream xœ­UMoÛ0 ½ûW𘪊Ô÷µÅ: À t °CÑK³t@פkƒbØ¿%Ë–”¥Þv°lú‘&ùD=#œÂ‡Á,šëe‡Á,íF÷%[NSõÜ›¥#tJ˜ªålW¤yªj9ÛiU² cÇz³U•˹‚/”e³¢Ì¡e¡,›eüè©P–ÍŠ2çc1#eÙ,R(kxÐÈy^6iZIiáU&‹õ@è„SyZɘ¸75ŽN ÞWÚÄ[Œ·ŒžßàÞ 9„+4"¸—ÓǹäTã‘õ@nlœŒ—ã{žšx™:ÎxpåËíiþ˜jËG%£Ñãü&iJYËÐ뢰˜$‘‡®“e‘%Þh¥¬I9Ïxäay hGLKo“‰</|€åf Íay×}X¦o¿'-oS4ÏÿÔhâ²*E›é¹•7ÂÈíJî?,IvßÞ²}ÙÕ¡LÙ¦‘›tô:êK#7å¥Q›‚êÒˆMħÿ?ÿ²Í¬[\˜,*–f¶± 7šVkXÆI«%,ã¢Õ –ñFÐjþyÖ­¼°ÔÏúû§ mÞË!vÊœ[g´Äâ„ÄŠW :xBfÍU+]“> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 324 0 obj << /Type /ObjStm /N 100 /First 893 /Length 2174 /Filter /FlateDecode >> stream xÚíZYoÛH~ׯ跉Mßg` àı'@f8ž™ìzü@Sm›™Ôˆ”“ù÷û}DŠ|Èq”M6$°Ù¬î®«¿ª.ÒhÍ$3Ò0­=®’iŸ˜Ñø'ÅŒÑÌyôË¢Ž¸:–œÃÕ3% u¦ÄRÎ ŒIhD<²’)­ Ð)ë 啯(< !1‡k+‹¨H+ZË´T Ï4ˆXVkIÄ«¥ÓÆ£ÑÚ)°…^íõ€ÆƒãÓ!b>‡I£<ÄUÄòiÆ#XÆkÜOËH"¦IÁ¿ñ$GÀPß/Œ©!(šÃM0<Òóà™• º‘Y0“ZKÌG‰FDOTÌ:b#j4Mæ˜kôDb!bT h$˜A/É2‡œsôÈÃB¤Ü˜ šh"¤„½¬eaUµ$¦Ð€Ú¬Ä„‘ -ó’VŽymÍ0oÉlé]²½#øÆ!£Ú0¨ÉG(„~IaXÛ“[XX$´t,hK=‰kì (\ñâYpÒ¶ 1Z+LaUbQ:° V£"bÐEí©G³HÖµX>’ ,$ànm°4׉)4K>ddIAIn–ia¯Dê°Ê O²ðääzŒ šìâ”ÔÀZ '‡/3"T¥Òa @>kè©ÃÖ€ hyⶃŒ` Y„kÀ”LŠØ¢®äå`}} vÿg&ž×e3¬ê£xZ´ù⎉?ªz£n«7«ÃÃ<Éu™[¶Ç'U=mYòâ¯iÓåQ>ì°Ç¬6Ý(·m%Ž&ÅiE9í²(«I9=9墫FÃ,NŠrÒÔâ`’Aƒ!EYæºà K´U+xÝtÃ|(&X[”yXFÅeçñ´>*&Ó“Q1íDsÔÔù( š¯eÞüüs/á&Û3Pd;L¼ý׿YÒœü/8ÉaÑz:]’n5uÇÖ×™Ør¤ÓóA[šTgÏo\¯ãþ£ÄÛWÿÉåÙ¨'À ¸Oøâ[[à‚ðõ¤)ßäZ¯7·˜ØÍ:v¹ò™^Gy ž ¨¡H>;¹m¦Ò9Tßõ+´Q°=¢!0 IïÄö¤™Ž{nÞ`IQCd¯¿Áë&S¬ò O6óiUæí§=kDѨÜÙÜ5TLö%Ä$þ 0ézÉ.„NË àjO…Ȥ¬ªFhRÑ)ƒÐt(²Ýì6@ ö¨¬ºÌ/êa®ŸæÉQFD knW1µ=#ú»È ¯v–{ÊiÀ”²û—’õ‚‰õõ~ ±QÒ®oÄo;/èÿè¸ëÆí!ŽªîxzÀËæD´ð”W'ØVÔ:Ê;kÙ¤€ ÓRaÔô¤ÖFw- Ïu>ûÙê° êpzeê0ÎϪãËä*:Ýš«Ì’|W¹ŠŽ7¿\ÅÇÕä*WÍ;Ÿ«HîoHGnOfü“Ÿ~¤d†Ë™ûÖu0¿=ÕQîfa̘=€ÙÁ,êÕ€ÙÇyg%š P‚YU4(JÒqå^ˆ’³ÅWŽ(3ežx&aÏ®çeŸ¸’²‘·¢Ï,É÷…>é&HýfЇvÃ*ÐçÊy?M¥‚M÷H¥n}E*e¥y¨ Ý¥.©Ät œÞ%)\5½ K‰û¯/ ½Ä&-FEUçZKeîWRÚsoè=NúI3##Oýë¶Ä“2w+ =âýû÷œ%Ÿ¾»M3jÅQžžê}<,Z±v/nÐE[zMȽ s†b>ðäÂg1{”É 3.¹åÍäHLàmpÖV(Í»“ÑÚ¨º)¯y„vU2œÞ!°mïÌîAÕ”M àLõ¬Âß!Àµbû\Ã}x*'Õ¸{þa<ù¤—/ÄÅÅBœ“ˆž–¢%³S-C«¼á1.yöX¶ôIÞ@oZÕ}òzCüIÞ`¥ÿŠy9Ñ\~pwWÔ>BÑ0dPØé†N¾‹'yÂy…x ‰Á£9}Ï«}à^©%Yš+õ*¿ôjŽôâDo¹6K‘:ü+sÏCú\¥î쥩&"¯ ô5¯^"$üÎì endstream endobj 450 0 obj << /Length 2024 /Filter /FlateDecode >> stream xÚåZYoÜ8~÷¯Ðb^ÔÀˆá¥k°óà™l‚,6 ÇÓó4³XÈ»[km üï·ŠEµ[²“µw`¸E‘Eë`ÕÇR¸·õ¸÷úì—õÙ‹W¡òR–F2òÖ/ä,I¤kÁtª½uáýá¿,7›•à¾éL3”Yµ dœøC—5}Þ•ûÞÇ>C¢í*@RêËšâñÄïÖÿ˜fú·½é©§lèyùÏó 77ôò¡vnõ[âåå›·¿Mãû,_Iî_Ï8ýký÷3î¤ñJ¦G¢kÉBé:a $ùù6+›WC`RÂn´~?˜=µÚ >%Œ­Ší=4K—‰oª²1D9Ím§š*hïØ¨Û~p]eíúò¶éǺl¶lÄ*ñ×»±¿) ÓÑÛØ ÉÆdÈÓÄ[>»­÷±¡Ë×0+ÕBzó‡ò@?Ðÿm}vs&@‰Ü^ª˜ÅEqÂbyy}fû9ã1h—DZ×osöî3÷F>ª½˜¥!—h(`¨¡%œRÈR¿\8ñ¿@Á%‹eø%AŽi¬ç¢\œ?ƒ(B2™Æ÷DÑ, £É,C`5“åòüí3##–r½F³8yYžº¹£)“Z,w2™èi8Fé\É??ƒŠUÄt}‹*†LÄ…ºçÉ)‹´<‘Ž¥Œ–¦lógÐsÄ!X~Ýs ,5_œË‹¬{abÍBñUã%pŒ£E¼°ðå¢$šñä¾]88O$ ðTja˜ÊT?ýôv¬†2o;fÊê?yÈáO| »®™ÔÀV!h¤âȯ´+ûÁ„1YCCŠ`ׇ`•ºk$ETaûwÆ‘"œÁþ QÕmxHC&/B€\!qï bD¥”_dCF-Ät·}Ù³JÞñ¯SÞ¼s ÞñïdÒÙï“(g–w€7 ƒs9Å= bAúwÂÞ ¬7¦x2ûÇR<™OODN’‡Ä[tÒúBªo_•Âïx‡ðn?•A2NO6™L©Þ›•œçDÙÛHÞÒ‡: ë.''Dü–G9çØœˆENL|ÊŒÅ-9fyÄ}<ÔÒz*Q‚†];¶k²³Û;tˆ°©}{€4©µö×Ó|'2ŒÖ‡ù uO}¨¹›1sCKsê9™š ˆÐ*!Wv¹Á·øÚ6”ˆÙ!Eí7hž²82n 9ãMì°|B÷¡V…±ÿrý;õL¹{dµ`S5ŽLÀé­±Ûš¾²ÚÑ¢(Ñ^V ÈwYU™fkÁrÊÙeïÍ|¨W0QEÅ¡ež·ˆ Ñn¯Ø°ˆšáQ3D†:¿%š²É«±p2"®H‚­ëmÆúÊ™ž:ðk×#ö4eª³ÒÛe‹´ðâ,ô»r»«ß÷Ä£Ì\¡m) *¥2ä•›ÎÜŒvIÀyÎS1üß&‚¥«7×™•QQö°FY•WÄv¬÷»õ¬ò€°ECRWOÚÃÖ0ÀM­á)·µl¿·IÄ“ˆ1™z2¢ÓgÑ!&,É9Yž¦Þ#Néoiß›¾wDÖ°ü r ]y5Þ­m#0Ñ!ÓÒrvkd¨Æ‚ÚcïÖÃk4>ÝÉ~öNyVügìD¢î\mèD" oÐ?Ý Ýï³j4SÝü*gÿiC‡‹í©€Tçî3ržà ünÓŸb endstream endobj 447 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLdmPrecision-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 454 0 R /BBox [0 0 494 489] /Resources << /XObject << /Im1 455 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 455 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLdmPrecision-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 456 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text/ImageC] /Font << /F2 457 0 R /F3 458 0 R >> /ExtGState << /GS1 459 0 R /GS2 460 0 R /GS257 461 0 R /GS258 462 0 R >> /XObject << /Im0 463 0 R >> /ColorSpace << /sRGB 464 0 R >> >> /Length 5233 /Filter /FlateDecode >> stream xœí]K¯$Å•Þß_‘KX8ˆ÷c žAƒÆ–p·äbá¹n,# z,ÏÏŸ8¯È¨šžž¦ l.÷¢nççˬʌŒŒ8ŽÏŽp|}|ÿðùÿÿÿá÷òQ|ÞþüðêøãñíÃG¯ÿðéÇÇãë‡0…þØ?_?šú“oP¿øä÷$mÇß¾øòðÇŸÂñÙüÿë‡ÀÍýîáÿnúáøx%˜ºéÈÅù¹Xß1Å·ù?_¼1û'Q𮤓‚¿¡ Á{t5—‡<º+Qá7/TãlµœzŧAjÕåv(&ƒ\÷šýÅPî.yV‡]Koð4H)íOƒÜòn`pkâêJ¡TçÇ™°âÑ<Â>lŒs¼)ôJYáÙ`¬É¥3#ƒ[Êók²< >úôE,íøËëyö¦û<›yÌsš’|k?}Þ¬•3ÞÂõ—ö˜Á§~¶1ÏÜ uJÒ<>e¢àÚ`D_¶pppp—:—0#¤qP7W¨˜ »\&˜Ï*í¨ÅÍîi˜‰¤¢à‘M‹Ëqi+õ€ÍOGSpwÛü}ZTb*mªV²Q¿-W¤ô‘>ÒGúï‘þ>FQB¤AãN­û›1Š[-QGŒÁõ>ãv× ³_’á: 2E×êÊtò%׳¡G¶Ît'ZúB÷¬å«ˆc‹µJš«mùÎ3…[XKۦ׼ÔwÏ[N$¸€ ¸€ ¸€ ¸€ ¸ü3¹Ü÷öì8Js}ÆõÕEÏÂúÆ…Û‰¾»PŽ"ôP¦ÕÓ(‰ f7ºuó3ÀQÙTÅ…¸ü²‹yEe@¦Ö¦h5ö»ÊUN$ÒGúï~L…^í']Hr0É|2 Õù{™(Óûò˜š+ÁÿRSw¥Ÿúár=}ql±VIp¾ž¾Þ…~Æf$ÖÚ¶ê5/õÝópùGpÙï4­–y‰£ÓeÜŽÜju ¤$7ýSÎ. 9&)4Á'ÑIó¾òD…æò(âlKuÕŸúær?}ql±VIr!œ¾ÑÅtÆf$ÖÚ¶ê5/õÝóÖ³ .à.à.à.Ï„ËÞê‰û8™ßöäqÓºÕÚ[ ÁæóLê:ê ’Hݶ˜ÑúÙ嫈c›5K‘^¾ÑõqÆf$ÖÚ¶è-/ñ½Ê[Ï*¸€ ¸€ ¸€ ¸€Ë“ãrµjÐ~¡R-ú|»êF«sfK¢ÅTÉwª›rÙ%ƒÞa¦’iš~TëD…ŠC(âÑ·R]Œ§¾¹àO_Eݪ´,I£-ÌwÅÙÓ´Ø‚ÄZÚ6½æ¥¾{Þ:J .à.àò¤¹ìWôÁ³/½îós;7óVkÏç™ÆâH4¶pÙ%Y^´~ƒ2xÞil•ß®âûOk\±ÇôÒ\¾Š8¶X«„ç.ß ¯ƒ46#±Ö¶U¯y©ïž·Ý§Á\À\À\À\ž—»ëÔ—@³‘k¡ð—MPùÍQ‰4é¥6~©D]É®€3ýÎX—¶ÐlóPlù 2¿3R¿Ä¯“4jZo›´MÕJ6ê·åj¥f>ÒGúHé?Ÿôï”N•S÷ƒêr_6 ­‰í5^¢-èI©s= A<à’Õ”0}ö\™L}Il¶6I§=æKëiËŠ-HbKÛ¦×LÕwÏ[¦À\À\À\Àå™p¹{™ BÌÀ#Ò”‚Ë.É\ùƒ†,£>“nƒ'€ ²I­.}çe0ækˆc‹µJM+X¾žæ¬ØÞ¶s]m«^óß«¼m0\À\À\Àå§ærï;­Á(´¥x¢>Ãe—dž™G+6h;rYG1sÏÕ÷ &·’O}¤½kÍ×PZ=“DžXb¾vPZ±±µµ-zËK|¯òÖþ¸€ ¸€ ¸€ ¸€Ë“ãr÷äW‰©k.»d¦áy˽(Axƒ½îR4Ä}ÏÄÙšžFˆÚò5Ô×f5&i4ã×|ke¡Æ$±¥mÓk^ê»ç­}tppp—ŸœËÝo(*×Ô 4ëCGLR]ñŒFž¨ñk•Ê•¿q¶5Ñf!KŸh°gù*âØfÍ’ìR9}“ËíŒÍèQ3á¶U¯y©ïž·žUppppy6\ÕiŸ²îm¾É’š3z¡÷VJ½“°rwAlÝ\§¾ÓR‘å«ÈÛ|“´Á…ãÕ·ušOb±‰µ´mzÉË|÷¼Á\À\À\~F.eFŸ†eÞteäcIxsöPmåNˆ²›wÛ q{5¸ÚO}t¥._C[¬Uâ9;óå=ÐVlFlmm‹Þòß«¼Á\À\~ \î/Ôxºqî—]’åO§'&ZïÎd»fAü´5o1,}—ÍŸÕ×P²m–„ó_¾G§-6#¶¶¶U¯y‰ïUÞç|Fpppp—§ÅåÞ÷ñ)zûO¥ëе“*)¼Ü"U¤H%-ÅHMÊN2zdëNÓ–~HKõUıÅZ%‰—j˜oäÅ›‘Xk۪׼ÔwÏÛÖ‚ ¸€ ¸€ ¸€Ë³áB[}F~ßQµˆ·I½ÚàA=¿ž(T½»ºÒ q{¡ñ™é;¦™¯"Ž-Ö*áBŽË×óq°Ø~'k[õš—úîyƒ ¸€ ¸ü:¸ä"«õ§J7VX’B[Ò䬡Ùl.‘7.ôÈÖ‰ÞC/}¶À¾Š²m¬°$‰Y¾3h>c3km[õš—úîyƒ ¸€ ¸€ ¸€ËsãB+ã’<Ǧ¡«öTRx¦xâeqô œ²¬³ †x$?{š¬nú¨n ùâØb­’Ä ôÌ7º¼ÅfÄÖÖ¶ê5/ñ½Ê\À\Àå×ÀåÞMèSï®G®X2[»ì’ÊO²}Ðå?ÇF5é©”ÝvñS°”“[z 4_CŸ-ÉÌ¿¾ÉåqÆfÄÖÖ¶è-/ñ½Ê[G À\À\À\Àå-\î#•ië6šX¬êí’ðžì¹Up'ÔûD¼C¯"~îlWQ™~ðغù* VõvIx?wóͼƒ»Å$ÖÒ¶é‹­`ß=o}>ppp—·p¹w¬G/¤P}Kç¨Kã àÝËÈG‘"÷]FF¢!uÉ~éiT¥/_E{ºÈÄõZ–/•½o+¶ 5êRN½f*¾Wyo#Hà.à.à.à.OŠËÝuk½çŠ !ÓˆÓe—7Gh¸)„ÊûûHÃ\Š8[Ÿ\§>Ó˳å«(ÛøÖ’$ª:·|#•Ì_±‰µ¶­zÍK}÷¼õ¬‚ ¸€ ¸€ ¸€ ¸<9.÷îÞH‹bhºQŽ´¦ð²Kö,“—27Ü ï  è‘­«L~R=ÏSZ¾Š8¶X«$È‚õõ²àFc{›»ÚV½æl1Ï™·U‹ppp—çÂ%æNåcnÆeI:ÕFˆyÐ2úCý3zÍ q«×Ç©<Œ¦¾†šqY’Êý3ó-®Ö36#ÉÓ¶Eoy‰ïUÞà.à.àòËâro•hšHCOÿu>v­—­’@Ós© u*\èºyžà““!¾–Ìõ&L_hÑòUıÅZ$eðVê[:oe ±‰µ´mzÉË|÷¼­ö7¸€ ¸€ ¸€ ¸<.w¯òƒvŒ¾¹¡•0LÒyþqðD*N!Í?ÌQ¶9D2[úD–¯"Ž-Ö*©¼øÉ| 5¸b3km[ô–—ø^å­³ºÁ\À\À\ÀåÙp¡’/}ö¨Z¦nÖe——©ÈKãW+ä™äì<)zdkÙRõ³uÞMR| eÛãyI’‰QßHݸ›‘ÄÖ¶U¯y%+^sæ .à.à.à.Ï‹ËÝ3E‡§¢æ14盌g™¤ÓÆ]a—ûDÃù8ïÛªˆÇœF¢UèKŸ] §¯"Ž-Ö*™ý³qúÞ%ÖbÛWlµ­zÍK}÷¼ul\À\Þ‘Ë~åèƒÞn‡J¢Ï7WŽ[­ÖšÌ™Þǧ\h×e—TÞÉ&sQã”×°šÂž ñunþs^Œ–¾Ó•mù*âØb­’Ì×XóMTcÅf$ÖÚ¶ê5/õÝóÖû¸€ ¸€ ¸€ ¸€ËSä"Õ%%Ó“âe—ð$Ú‚vb.•Ë—‡ìb4$O©ÅÅqê« íôUıÅZ%‰Ë››/O@X±‰µ¶­zÍK}÷¼Á\À\Àå—Åe-h•êAÆÑiVظg¼Õê8#-|o<Ñ«Œ›˜¤º‘d)|áñ‰x)|‰†xlc:êø뫌t¨oµq®ëØL’]ë§o¢7¿+v²wÌ«mÕk^ê»ç­c@à.à.à.àòL¸Ü_a±Quî;=º_vÉp£ò¸œŽ˜< Ðô¸â Q¶1x0}4`¾†8¶X«„›ùF>n[[kۦ׼Ä÷*o«´.à.ϑ˼®Ñ #ía¨5s—$“ONÑåÀû'Ö1‘la$è‘­¹¸ÈÒó6FËWQ²š¹KiU÷ò t^±‰µ¶­zÍK}÷¼Á\À\Àå—Æ%¶B Öfs3—¤óm­ñëµXïÖK»à C|?£]rê©´'úòUÔlnæ’Té\¾…o‰»ØÜÌÕ¶ê5/õÝópppùù¸Ð’ª‰Õ-‹¼ì’ä|æ TAk¢'j¼–R€Í|F<õƒ7.1_EÁö—[š|úzçÛ‘Xk۪׼ÔwÏ\À\À\À\žÞĬiö ºõÇT"ãÛv=R“±ïh-¥"î3õHå®–>ÑÀÂòUÔmÿÝ%‘ñmõ­2ö­±ë96®m«Þòß«¼Á\Àåùr¹ZM™xdNºköÍjÊ­ÎÈ<퀪••E2›We+kÜyÿn*kܲ!Î6+)ÕKIeó$±ÅZ%ü^Ï|'òaÅ$ÖÒ¶é5SõÝó¶*Ñà.à.àòËàro•Ø¢óƒçˆø¢÷i•4"#ªËg6ô ™¢ ×,lfúÊÌWǶQP–dj¾™´ØŒ5n[õš—úîy[Ÿ\À\À\À\ž—»gïWïB?ÒŒ˜£ “4žP[g·®NÔéíl¬Ñ…dˆ³­ÉÅpê9é嫈c‹µJ o°g¾¼áðŠÍH¬µmÕk^ê»ç­g\À\À\Àå'ç²ßik+:ÊMcéåæN{«Õ;-,”íf³ö9LÒi²0-þë´9í iÅ´0pdCœ-•V §~ð‹GóUı͚%•›ù>n›‘Xk۪׼ÔwÏ[Ï*¸€ ¸€ ¸€ ¸€Ë“ãrwÝ'ÚØ§ó~‡]*`-I¢¹ªáÏlf‡´Í?Ás¶‚([ªÃ@lL™©úŠgµ•š*¿|=MQ[±½íD´Ú½å%¾Wyë¬;pppp—'Ç…zsÒ[óžöô8?©·hk¿?|qd|yøãÏþøì!už[*Õ ½yt.¦%ø›ãx±ÅŽõüÜcKİ"æB¯õr®Œ#ûDeGxõ0ã}~|×ÿ¿”Îk§¤>zý‡O?>)»äinÓùɽØG8^~5•ÓC"‚cqöÝö4âùòr|à?<^~ýð//¹‘wñ£Ñ1%ß`¾{²vð$ÏO^¼ÓQ¤óޝ7÷»‡4Oíû]il÷¢Xá7/TOÅ|Xz…¤ÿ1G÷'I8Ä8OÁ‘ùó² %(!˜Naé .}öy×\úŸá«¨Íùs5òéŒ?æ«Ð¯}Ó»û¦1®}ó›¾F?æwp{òI“è7I0æíèÓ1¨úÇÌá‹þý»¿Ì/÷w_—Wúöxõá´8>øïÿüáÕë×ýîÛ¿<^~v›â{¥³åð›-µùÏL¨º*¿Ë•ÏLáñ¯œÃ;%ûNßä8—ý“òš_8ïù¢5¯V¹$.É?ìÒõÕ øýü¶ÏT*¤Å+žò|覥 ,$~#TÏÿ¦.önh^5–ø£»øã·ß=|þžÇÒ¾_ùæÔ2tAŸdh}ÃÛ¾Øot¦é©óDlÎoþf¿ÙyÌ;MÞó»;':}w.?¹š˜»9×wwΩÑÝ|sn?¹seÊ͹¿í‹ú~?á7^Gh§Šy¼Zr¡Èoø÷»üÇ«èGóÕüýúãƒWú¯¿Í_ð½o¼ôÿï ]úç%õ-—þè# 1éâr,<¿ñ]:±ÐpÒfbx3™ßÚ6ç í‘qþò.Ç›ÉH\èh™>MrtY& o&4X·¥»ð–®’ÎþIzðÂË+ÒËÄðf¢$—‰áÓÄHšÉ›‰’\&†O#i& o&Jr™>MÞ»÷ð??›Ðj endstream endobj 463 0 obj << /Type /XObject /Subtype /Image /Width 300 /Height 1 /ColorSpace 464 0 R /BitsPerComponent 8 /Length 832 /Interpolate true /Filter /FlateDecode >> stream xœ‡7ÔqðÆãU¼”‘-‰D!3޳׹éÜÞ£¢=T*{¦DCY‰ì.tö>ÎæîÜô7ôýù¼?Æ×Àùêž:Œ§Šà)£xŠžÁ•#¹;h® Ë•â¸R'´–B[¾à›¿â›À2ü²øÆòø† h}e|Ý7Üw° W[…«©ÆV×@«j±ßj±•ß1•u˜Š:Ly=¦¬]Ö€þÚ€þÒˆ.mD•þ@}nB}jB}l‘Z%-ÈâV0î}[\Q[Ü»Ÿ âm;¢°ñæ[Ð›ß›× ÆäþŽÉÙ›ÝÕÙ Íè‰Jï‰Jë…¦öF¾î‹|öG¾ìH€¾ˆxþ'ü(O„?„=ù }<öh0|8ú`(äþ0ôÞpÈÝÁw@ap’08QOßß º9 åñƹ{9ã068cMÀ˜ŒI(}ÒŸ6¥NùS¦o÷’füˆ3~pÖ7aÖõ‰ŸóÁÍù`ç¼±óÞ˜yo4¸à…ZðB.xʼnvL}ô¨ZWW£££9rXsèF[[£¥µ{ðàîý»ûöý „½Ô endstream endobj 466 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 470 0 obj << /Length 2203 /Filter /FlateDecode >> stream xÚíioÜ6ö»…Ðî `1âMÛ-rlÝ ‡Ñb‘ y${ÔhFI“lö×÷=’šC>2ãŒìXQ|ù>*.£4zqòÓÙÉ“ç’G–XÅTtvÉ”Ã"-(VDgyô.~Z^\LhM±èʬš$L›¸k²E;mÊeçßWm†H—“Q=,[äû#¿>û¥4¨Œ?·Eë!åÂ?ß¼ü1i‹þåSÙÍÂì³0ÅÓ7?ÿëm߿̦–Æïw(ýqöÏ“4Hÿä9³[¢ F$‹aˆI©—ül2ÃlŒÅÙ„™¸é&LÇŸR{À4_uYWÖ m§³bîdÀ >fe•W™$"Õño³báÙ!L¦ÖDÃgsÝÔõ挲‚²h÷á†\ügg'N(ÈF4â©%ŒÑHÙ”hv:?q‚©@%©ÖQSD'¯ïÈßX"ÒÄÊ”¡v‘¤Ð@‘e¹Wï²h‚¾FƉÔöŠ,)H1’(@Ñ0³+Ë|uQ8'TÒû(Š”îŠÒeG¬I31EàZ±‘d’Vó,hŒ MD-¡BD” ìºþãà‚h£¢d >¯ó[ý£„KàÅcVYL¼«Ê S n3T·„ý$ä8êF’V,ú»¬ªT÷e±(ÚïnU¸!šª^á§nž„å\XB)°$Ãjc ‚Ç‹ð-/“Yµ à¼l»¦<_y²õhÓ ³jºª²®È=袩ç)ó“ñ~~L>ð ¾\kù°¾ÜX¢ ˜°5 u/¾HŠ+››#úr‘ ’r{E–ñ RdÆìÊr _.('ŠÒû(‚míHr W. ÜQÇ’ŒéÊ‘¤àl Ë5®\Ýà[ÔЕ•”"Vm¨GîòÊÜgš’T1àL–#­ PdCÛÿáN:~_i1¿‚m c¿Žâ¹G]Ó+$ëcú\åûcäí!’£C^GÈ„Sb §löR_øgˆŽ­+Ãsº 9¥ñEçÆwÆÊ™AÆ|«-–þˆêÏvžµ~ ÷¥ÄGq¡‰u+†÷G(Ì©¬pœ2+!ô–R.òòc™¯ÜAÔ Çž©8ÅóšÇæ;вëÏ–KÇXMg2wœ~gïñ­Èa|Ým“‡ü ž/cž. ,ç  ’¤»Bü¦„ü:¶i¼ÔËË¢í&àü[..}·Ë)°ñ{ÊEÓ#ÔK$uê{>ÍJd›n‰8òIãÊÍ\¦É‹‹lUuþ¥^lñÛ’óõÁ„ä¬ÓÞ±nlKpËðIÅîX×nÏ×Ú#ÛƒüT1ýúÖy8gW­ÉÇÄ5”6š#„* IJo2ò1Ä‚ Bï¶ -,y{«‡PD(Ù»ˆ¦èV31é÷¼”qžuYØM6û#Y »*½Tå¬vFŒ¿:Î}oƒ¦á‡´h&mWNÛSÄHaG^6…+ƒ¢3(G£(òz²y g*.wmhË7ÁNv¥$lüT,þÌæå¢Ü‚ïñ?\ËhÄ5œ7!ë«ÿp‚5=¥ÆVÓuõãàÉÏsª¢§5¸„×£x¨ ÅÄHw¸OÀÎìÐAQ òz¨}a­ˆ~Í’­E»Ñ}q)ñ°âÌgVdùØv3¢[ƒ´c+OÙôïdþ#°4ȼ¿ÿ~’hÔ?:aòca#ó½Ž%¤/ #™¾w82Ac›ÆíbéPà ¯÷)qÕxò9¦p"5ñÒgQ.ƒcT®õXGPÿxöòí‹ÿ£ÖpÂàüÂR±%´•û°Åýœ½8þ¼Ç8j½Ö]õj|£´±: ’ÀºjËmàœy(ìtÊ„RÊë†%åõº`[FZ%î¬ µ« ~]|á>áF]|aÜ]| t¡©–ÇÚâ‘ëÂÚTKr÷è/,•ë}‘jÆ5»¢ ™rjìºP]\Ûc肚Tá1~÷Ì>,lÇ(Áqcˆr\A06ÆXÊvÊzꊿY^qrû#‹Cå!Èê:äq²ìë+PÀ$¥áÒàßÃãz5I¸Õñ4[øÆÒU^±å šÐ¨ÏÛ¢ùˆÅ¬ÞXü˜/k×ß!Ž+?µ¾½©VoÏÒ­ðû"_ð9\ÀåëÄ4†“6=q¿:_ÝÕÙ HרxS§¢¡@Kã…“¾â]·my^”œOë*1ÈVÆùoûâ7¶€Ïržu=µ|†wuY”o¶åÿ\]\¼ŸÆ2Ù% dóeU\'ŤOùûqxV™Sª»÷>L×ÜcwSLëù¼Xäþ5”·±yj…ðó_Á%v³j§e÷!”&Zà)šIí½|¦$­E’H²M]äÀ;¡îóòÖÏTÂL¡à‹*0¾¾—è×!,ƒxqM_öuÀYŸàKM”⻥r ëwBuŠ«ßjy«Âü¿:Ê 4nYõ@ûxê£÷YLÈ ÃxØØ_5ý ¼³\T7ùú«¢ÑÖ÷8ÿ6&Ÿ>‰={=óbÚ™‹Ý#Súáðmƒ_º½á÷‰ß6à†Àóyûlä­CO}fýÇ·p˰Nv>çNSÜD‰DØl0u ÃFÿÄèM endstream endobj 467 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLdmTest-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 472 0 R /BBox [0 0 494 490] /Resources << /XObject << /Im1 473 0 R >>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S]K…ä\.}Ï\C—|®@.Uî endstream endobj 473 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLdmTest-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 474 0 R /BBox [ 0 0 504 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 475 0 R /F3 476 0 R >> /ExtGState << >> /ColorSpace << /sRGB 477 0 R >> >> /Length 1265 /Filter /FlateDecode >> stream xœ¥XKo7 ¾Ï¯ÐÑ>„•HêuuÐ0Т­öäP¸›ƒH6AÐ_jF³’¦Ë‰1°cpHŠá'‘ræÖ8óh>M¿¿à÷Óñ·7æá89°Öšþy|x®ì×wgØw¯-o£ù6½{o¬ùgræV~“³"`~™æóÃ[îþ}>LæfõÀ.ö`Ù0E /'‘3™çﹸ§?™- ÑôÏ‚O-» aYܹ.›§‰s+ýqº«ˆÐ7J7BrM ÒM€1¥&Pé"àÈBô5§¹È”7® ¬d Ìàù$°’M€1An+ÙÆ½¸<„Ð<^È‘ "vI[è.iÑAìB®t—´È¸KÚBwI‹r—ÕJ$·”Tª‹'Yà.§•ìr3¤.§•ìr*o°Ëi%»œÆ¡Ëi%›€TžØ”B£,Or<—óâê’L‚œŒ“R k1'Yz.ÚŽVn.UÛqË—N¶r3–WÚÊ9@öêÊÎ bHUvlI¼® ¦1INÚ!]ÛH;¶ki´Íó.°²bÖmK©ÇÛ„y‡ ¶–Bª\¶²Îåò^õ›çz飒äõc:°g³<ùåø¬+©½¨*‹¨g=c¡ƒû™”Doõ°bŽºg ÕÅãŽv¶º¶ €vÊP @^õDª6 H˜t¶@ƒ P‡À|ܸ6ƒKjZP àÛv=¥…)p¤û-p*P`³nX`ƒžQA€Õ€‚»´÷wlû 9êì@åTrÐ u8ì´å$KYOZôvl/gÊN Õ”§XüP=ËrÆî˜Î¾ô:;CÔË,A´ê#‹¬Êv‚ßa ƒÔÀÈe:ôK¿åwlcôÀÈ•.QÕ&^?ýˆréFÏã‹XZU$uÃú^LÞïX z‘@€vL H‡ HߊI €YϨ@õ:¬Ý”º¸@Q_\0€VKxîš×3K œŽ8Ý2 œŽ>ØÁvI“]g·Ûû±Û6ö¶û> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 484 0 obj << /Length 987 /Filter /FlateDecode >> stream xÚíY[oÔ8~ϯ°€‡Œ„ïvVðê.*‚m‡§R¡i'3DÌ$Ó$åßïqœÌ­S‘ º» JIŽ}lŸûwÆ¥„+†èÆ3Ÿn‘þyú: &ÐëàÕ0xö—("‘æ 'HQb-GF2"#‰†ct%“É€Ñ0Îã´LF³æÆ†e>J‹«ýû%.âkO|KÊÏõîŸë-ŽNß5ó‹ÑÕ€ÓðËÖIÃ7mo'IG®Ÿçî`'Î?‡Áu4ü±ÆÜZ™DWóÀK®‹ ÒàeP£IpÒI˜ö ¶åô¡"‘!‘¢Ü…J$ˆ„/m)1ÂúP)³…31b’e#Öh?ó©—ÄXðÆø4Nc¿$"LÊ6K’qW7VÖv³ÕŒ s¬)ŸãÎÑ–³>!‡þyaÃ'=ʹv6„Ò–.8ï,‘eHÆ<¥ˆ<çî —ˆõ©îE›coµt'êФ(Ò®+~çÄýIãÍ¡0Ûß)qKrckñ¼¨^òAŸTq„¹ ó¶Z̲ò}ž-²¼L²´èSµTÑñÓ¾CzbŒjîó“)ÛUªƒêÕÔa ·ýrïFnrRâZ^ªâ}˜8ê«ÄC,³;Øû7R{N芛ž˜ E"Î?[&\S|@«I©ª86>«©f]=ðìxÎ :Ê c>é¥_Ÿˆ­"ª†ö]Q»Û¾ F”`ÿŽö½Ú¾2Cã1¼á²;/HÌ,ú•€ÀÜ‘Øæá«ÔDÛ?Ôæ!€à¿kâ=@ðÆÜpbéÎO—§‚òû"îß臠¹¹Í¹\ðè2»qºóG=—¦_×YĈ?×í ×ë ÌÕ›PPWÀ¹Š*ëüh4…|©ÄÚ?µÀ6d«Lƒ¸îj€l}9 T•ÜU˜ï¸{‘‚áY\‡ÍÝçd h˜å@ªp>r@¹}æAgí»†d2"‚UÚŸ_P4†¹7°FD}«8ç«Þ†¢:ÛtăީÞÒÄr¢½wïS¡óøß6dwö\LpÂh8>ºŽÓIÖw¿uPaëA ™ FÜ[àñcÖ§þõ5Î}º9P˜0ÿé4à” L5fºÑ¥ÚÌA£ÞÞìýlTN²|þ‡'o¬®¸& ±¬k‰Wx–¤Ë>/ProcSet [ /PDF ] >> /Length 35 /Filter /FlateDecode >> stream xÚ+ä2T0BC]S] …ä\.}Ï\C—|®@.U í endstream endobj 487 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLplotProportions-1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 488 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 489 0 R /F3 490 0 R >> /ExtGState << /GS1 491 0 R /GS2 492 0 R /GS3 493 0 R /GS257 494 0 R /GS258 495 0 R /GS259 496 0 R >> /ColorSpace << /sRGB 497 0 R >> >> /Length 48244 /Filter /FlateDecode >> stream xœ¬½Ë®%˲%Ô?_‘_ø;"ºE£$$à6h Z›‡Tb!A5ø}ÂÆÃÜ#«*)÷îcf1ÜmÍœ3ÌÝžõ×ó«þú¿þ¯ý÷ÿÿ÷_ýÇÿáßÿ»_ÿüÇÕߥ”_çÿÿÿüŸÿ×ÿöŸÿÛýß÷úõÿüëúŸ•_ÿË¿ê¯ÿæý¿ÿð¯ZÞ~ý·ÿÂðÿj)wüw–ÿù¿ÿ×ýúwVá׸Ïö«Þåw¿î{ý®×¯öR+üõ?þú?ÿÿ”üÿ\à_¿þ·ýW”ßOk¿ÎÿEù=ûþ+ÊWo­ÇS?ÿzúø}ÓÿÇ¿þÍÜ/ÿ> ½ècý.Ç ¢÷£\¿Û±‚èxàû9ëï}Úï§îÇEÍñ»®C#Ò‡FuþÇ ¢®õ{+ˆ>Tî×GÑP¹öß}ù_åÇôXå÷5ñDkõ÷èû Ñǽ=¿gÙOˆ>žˆ 絟}<1Çü½Æ~BôñÄšý÷U÷¢'®Uãß2Ÿ}Á>Ÿø9·vý¾¯_ýýXŸËTì×WûÝÇ–÷ßc%ÖÖæÓâ¼o£¶±ïï§ìµAáiïM¹õ"ö£7ÿ–ûy%uÿ>Έé~®ß×û½Þ_[y©çw-¦b¿§”ßã2ç)õ÷|ŒM kóiqÞÿŒ}ÿÓöÚ þ&Ú[réìWoþ-#¾éÿÉnü-æL|ÓÇÂÃøÄÏJŠúOO|O,_øKŠkóiq®xû¾'Û“k“âÓÜÛri*ì©7ÿ–ëz¿“ëüwI–¾î÷5{ûs¿îöûý ÿ.×ÝßmËÇïgl¬¨üwI>ÛÄâsϵóß%÷¦ÜzûÑ›˺Fü™ñ _ KrÞ7ðóR3ÌS{_˜µ¾ÔН®¨ðôÿ )âë›XQX›O‹3·µ±¯9{mP|Z{K.½„=õæß2ßçßÀVžx;üœ×¿oˆùî˜Zã#œ×ÿ¤¢þÁÓO|,_Á¡°¢¸6ž6çŠÕز~ß#×&ŵ¹·åÒTØSoþ-õ}©­÷Tïß7/æ´wÛ÷Ÿ¼Ïø^ö×Ôõ÷g¯ÞiêãgXQX›O‹S×gcKh—kƒâÓÚ[ré%ì©·¬ÓkÍÚç-˜Z§×þõ| Þñý¼ï×vÖºå/¨o¬¨| &‡ÆXZ¯½­“÷¦ÜzûÑ[Ö©W|õ=ŒðÔœÿïñ#îï?÷ûŸñ?âs% ò~ëÂXŽybEam>-ÎûÛlûþ6Ë^ŸÖÞ’K/aO½eÞÓùÒçη`rV|ç¯9ã?õý–¾¿‡k^±º(X÷$2Ç–?qRO¬(¬Í§ÅqÚKl “•kƒâÓÚ[ré%ì©·¬Ó8ö½G“w¡Ÿ“ÓÂ4¬÷ ÁÒÃÀ¯×€Çõ„,Èk¶ã§hù_æÄŠªþW§òÝ l}¿¯ZZ[ŸÆÞ)‡^‰=õ–uýw{ÿeGõï%9=¾óóÅô8lø=Äíâê¦`AÞÉ{Kùk;ÛÆŠªþ½$'.‰}_óïïÁk“âÓÜÛré%ì©·¬Óû¾¯œ¸šž’ÓP ¾úí½B¿˜Z&Þ<¤`A^3öÑò –ßXQÃÚ%§Ç÷$±Ç"¯]ý˽%—^žzóo‰7>x×ï>e_ÄyÏ|zaÆzOXnÜ-›)Ø€÷¥}$ïÔUXQX›Owÿ­Ï½±FÇkƒâÓÚ›rëEìGoÙ—^pZûÉYqõèÿˆ-Ž'¯ïøòˆ‚ ë=·|âm¬(¬Í§Åé¡]bÌ­×ŧµ·äÒKØSoÙ—÷„×ûǾ˜Cñ>¼ÏÕ÷«ä]?öå=]ÖmâäY6VÔ¶/æÐFKûáµ·}ñÞ’K/aO½e_ÚÓßû3[üwIΊÄDÇ£Æ[½à;BÊ6 ][ÞqŠÖÖæÓâtÜ•Œm¸+ymPxÚ{Sn½ˆýèmûrÅ¿½ç©òȾˆSã26gß÷-ûÞgVá¹lÀk­Ã©dy‹“§±¦°6Ÿ'Þ²ï7RذMï7Rk‹²í ÿŠäÔËØÞ¶/¾¥ï Æ·snÜ`Þ æ(°½q»y/Ÿ×e 6`ö¸š¤|ÄÉ"±¢®¼ý˜³pƒö}ÅíFk“âÓÜ[rëEìGoÙ—>y#þí'gƧ1ßSGx–^Kþ~³Ã>ˆ‚ x_þ¸ÿS>à)2ÖÔðo?9-~¿‰­ñÛε«û¹·äÒKØSoÛ¸wqŸ²/âܸþƇÒè°ã1e‹q¯-¿ñÂ4VÖæÓâ¬øf$v„û&×ŧµ·äÒKØSï?o?ÿåÞº_pxLyÄxLN§C¤áÌ>° žÙr™¢·mÆõ#å çxcEam>-N¡3†Ø÷G ×&e¿ßU¶\z;r¶Þ²NïDzèñÒß’8hzüzÛÞH8w.SôŸUÞg$oø= kjøoIÞÉ…;'×®þ[roÊ­±½í›ë¼sä¯-9øÅܯà¾ük Xç¯íæ+*åxE%VTþÚ’ƒ_Lbñkʵó×–{K.½„=õÞ¾¹Òðÿlß8wœ-Â?oª÷¨?Â÷öÞPª)úϰ_Êg¼þ+ kÛ“ÎŒwWbòZ”}sØ[ré%ì©·¬Ó{ðê¼LÞ’3ã¸t½Ç´A ñ¬®×€ßÓ,ÈÓxŽ—¼Ó–k kóiqzÜÍÛ—kƒ¢oN{Sn½ˆýè-ëtÓ…þ¾â«XQËç¥äŒø²'¶Ç)&×î>/åÞ”[/b?zoßÜû‡õ÷~¯Cr&~¦ïÇpwøÇÞAøÏZ1•¾¹kËŸ¸¼'VÔð!9-¾å‰­ñkε«o ¹·äÒKØSoÝ~èôŽw›~ŸÕl@\Gï”Ço»$Ö֦ŧ(±5¾ú¹6(®­½%—^žzÛ¾ð.ø~G_LÎGаqÒ}Oõ}¸–)Ú€w¿¾åw,XQ—ã‹ÉYñj66¢5×&eÛ{[.½„=õ¶}©ˆ?O¼6§Ñ¿™ESˆÝ”iŠ6€þ ˾'Æ.zϰ6Ÿ×Qaa›–×ŧ±wÊ¥©°§ÞŽý@ øå]3§Å‘|½ïͺèÈžˆ¸Ä=‘”ã3q—´ü‚56VTF$’ƒtc â^»dDÂ{[.½„=õvìâH¬(¬Í§ÅA°-±¯åÚÃKîM¹õ"ö£÷߉ýÜøýt|Ü?'玿­½b¼U;Ò9Â[¿&RôŸÑçdyÇSXÛ¾9p.6–_M¯ бí­Ÿ…ô"ö£·c?fì=l83Á„/">†íýBDæAÄn.SŒÏ¬¸Ì¦üÆËXQ%3Äy/‘] ì‚#Õk“r\)ö¶œz{ê½}s•gêr§o®òœôÞ`Ã?ÖxÊ~7 ÿÙ¦ì›+uËŸxG'VÔô9 9H§Il —C® ʾ¹voùðoØSoÇ~èszïÄÎL0gÒcÖi½i“¶hefÂû?ãËe9\2‰Õ33Áœ¯òÄÖ°ü¹võ#÷–\z {êmßÜdvÀŠïÈÏɹã’xÍÅ\‚'.á-ëÕTFs®”/xe5µüLÎŒ?"±#~]¹öð[)÷–|:b–?ô–uš<53y’³âCYáë+ц…xu‰ï;)X…,°”7Ü`„5•™<ÉA6Nb‘©“kg&OîM¹õ"ö£·}sʬ{â¾ò³9aù廼 ï9}FÄý1EÿÙ ¿ŒåüÆ>Œ›am{òïRµ‹SAñÚ¢þ‘—ðn[>çöÔ[Ö©âùéB´´ÉÁ›©Vü;÷Òãš_+¾¢`A*´³ü}¯Þ%±¦ªßàÉÁUA؈އùåÚ¢¸6ßs–K/aO½ûw/œ?µË¾ˆƒ¿8¾<«âð¾*#.—)ÇgÞ ¯å NlcMam[#p¡Ä2Ðk“rÞBìm¹ô"ö£·í ÿöÃNâ«¶£~?þ÷øŒoøtŸc0’+Z#¬©Œa'qèÄ"Fkg ;÷–\zûÑÛö¥™¨?'Gñ›3ƒ*Þøõùõ‰ý,~ç%¿gVÔûGñaÛÑÚGìçÌÀJ½„=õ>b?ô5–¹c?¼éÆ{¼ÁwŽ<àÁøÌ2åØOĸ-ïa$5U}7‡?c+^^›TÆ~ž”K/a?z˾¬Îø ¼>?'g2š3xF°üZ0‰¢h1.ZkÉoúV„½íw‘)9-q¿ÈµAñií-¹ôöÔ{çÜÝŸäÏÉéñeŽø~$õ4¤g¬qÅ—U”s Ö³åO\ì+ªù[“|šÆ¾ŸôÓsmRÎ-xæ–K/aO½m_£1¼6d_Äéð—ufÚ½Ð÷³™ÌöÅhN3•å ì‰5…µù´8%ÞÙÆ¾‹†¿Lk“²íj×–K/b?zïØOg®Î0ɹà莈?¿³Ù ë ќַü gWbEMŸa’ÿrb;nN^»çÍÊ{K.½„=õ–}iôÍjÏzr:¶mÓÞíÁP‡¼ßò¬# ùÞòÑ%cEå)!9²FÄÚqí‘§ïm¹ôöÔ[öåý2ÞÌ‹­ŠÞ˜ƒ¤ŸÈ+Üa…µi¸d‘úG·kn9ýþÆŠÊœòäLøËŒp…zí‘Ö¨å÷®RéEìGoÙ—wn|DKöń a%ɉE K®Ý}Gν%oþ­{êmûr1ÏüŠ«ÄÏÉyâ !²š ÿ×¢õ"pÑÂI~5æBk kóiqVÜ®„ kþ²¥ˆvž´wÊ¥±½}¹áÁz¿šw×ýEx°×d ÿý¢÷†;Æš¦|#)mË™- ¬)¬Í§Å)qÄ4¶âåæµIñþ½%·^Ä~ô>r xo,¾¿€ŸôXŒïó~2oÇÿE¹–3wÀXg<ÎùHÎÅL…ÌK@Cæ-,ß_°wʧ#CÀžzûþ‚sDdhUEoÌy\Rqêhïù.Ž­À֑∔7Üç…5uû™$­{O$¦hmR¼¿poÉ­±½ÿô®•÷ý~œ3²î2þð®ý)¥w !®8ê7g¿$‡w3:%#Í«òŸ£-SÐ6‚q}Ëaà+ª9û%95C{¸v´vñ[0÷–\z {ê-ëTèç/ÈWþ99ÈYîN d‚ÆåóÁ[—,È{5‰·²äïe$ÞØÂšªŽHˆƒlÏf,òŒŠ×…§¹wÊ/þIÄ~ô–uzÿ°ù½ý˜ÃLW<“·›ÈþÞ~Þ_Dß·Ÿ÷Œ5öíÇÔ¾ý˜ÃŒ±¼Ýxí}ûñÞ’K/aO½eâbϨ³Þ‚æ æ3‡`!»4ò™ óyIÁ‚æôZ~ÁOb,)®Í§Å¹âÍblüI#×&ŧ¹·åÒTØSoY§^ù¯Ž\šŸ“³âå{E²Kó—ùŠLîÇ,H|šsËó‹…•™;Éé¨2ù4¹vfîäÞ’K/aO½eât8Psòð-hoå+3ôyñk½?ÃÞMÁ‚¼kÊyÃç.¬(®Í§Å¹ãýolÁ'íµIáií-¹5%ö£·¬S)ðæ(ÏGrˆ0[³7úµÜ³!ùI,H”S´-_öF»üÒY39HýH,R?rí¬_̽%¯öF{êmÏR®î Ç›1#BxÓ øòJuÿ«Øâ/±Oc.1p&2oF·Žq-¾o^µ¹.Ä{R*m€ûèúW’Ýâ8É´Æ>v2Ó1ãÄ ÿøwÏ„Rg2‚äJ6ÖÔåŸr&ê4á0ȵ‡ƒ¹·äÒ‹ØÞ2H‹i·ð×uÉħ£t4’t#è…¦†ŸŒÆÂ×,å‚ÚÆŠZvv'gÆ!>±#¶ÈµÇY¶Š½%—^žz;Ù­±´Ç…êçäà0Ie:¢u¦¾=ËÓ V¼RŽïMbEu§J$µ‰­ñ“ɵ«ËðroÉ¥—°§Þ2HõX-|úü[’ƒpòxÆñ}?†ñ î:~¤˜0Ððk±¼ã‡$¬)¬Í§Éy·@­8±¥r^›žÖÞ’K/a?z;aÑå5v2‚8“ ·_lH6@ñ¥(׊++äïGx߉552ÁœŽ ±ÉZ»íd„Û/FÈ—CäHF8õv2 —WÁòçä¬xu®»°”çŠçuW|¤`4ÞT8Ø,GM\bE §`%÷ÓÄâFšk·¼.yoÊ­±½Œp1QcÆ»âçä\0×í´Ž0JÜEÁhÜ•ÎMÊ_íôïXSÓo¦äŒ8Ç%]rín÷Xî-¹ô"ö£·“jÜ"¨ßœì&œ••ù‘^YÜq0¹Má σKÊq¨I¬¨åD¤ä |ÕŒE4×îNDʽ%—^žz;ÙíñQcÉg΃Œ’H¹ŸLç_°w3E‹¯oÊ~ÍÆŠº|¥HÎB”JØ‚x‚×&eÛ{Kn½ˆýèmûÂoi¼`tá1ÅBñÇ{ ÅBñÆÇ{lÚYØßÿ‰÷˜ä‹o.aEu¿õ’ÓÂÿ”XdåÚÕ!ÅÜ[ré%ì©·“Ýž?˜£FåÓè ýÑè lÀnt6b7:Hj_xÌQ³‚þitÐþ“Fålt`½ˆý轓Ý*]•úwIÎŒÏíxdxn¶&¦h1.º2%¿éjVÔØÖè¶«> ƒŒm( òÚÍÿ.¹·äÝ!`O½m_^\§S#’¿}؀ΤªwÙ‹‘Q´Ÿ¦äÃ×#`‡ÝiJHR‹Û#§(×înÚ{Sn½ˆýèmû¿’'–ì‹8=N‹‘V™îóL4#·)Ø€÷ÝxÏ-G¸6±¢Z^aÌÁKÈØöÓk“âÓÜÛré%ì©÷Nv[äÝ+“Ý[¡´Ž„³°g‘Ž=‘ž†Tíi{ÍæÜrx-+ª9¥89•ÉÖ–8ñäÚÅçÖÜ[ré%ì©·ìË@Sœse+Í Cö~2âþñž­‘¬6LÁD|¼nùBi«±¤¸6ŸÝVŒ}ÿÀ¾rmR|š{[.M…=õþ[&—+<Ò–õæJžJh¦œ0p=[~3!YØÛ…ŸºÖ%g:‹æâ@6X{Ø›{K.½„=õÞÊ—òådqZØÎØ4†KۀμM9X„à«ä“¥GŠ*Y¼#NEÞ±Ê<ÑÚ¤,juË©—±§ÞuTzÖÉ5+˜¨ýr#ƒ?ÔO£ƒ+^)¿éÈö¶['ˆ£FªÑÖ>hoÉ¥W6IØz;ÙmÀ^Ìå·`r°Q¤ Å=ò½l<éi«™bzÁåâÈÑõ%±¢–߂ɒ‰…Z¹v÷[0÷–\z {꽓ï#r-&g¢¤†©Ý•Èk¡XY”“äèü¦oYØÛE"·Ó Äi,T¶Æ['×®~+åÞ’w;€=õÞÉSé`3“&]ÐQ`£7Õ{çˆD9¡Ï-G%VbE•LÜ&Gi]Ââ¶qymQNFCrF»=õv£•ŸÍlÃ3²î}ýGû‡÷™»¢5A_¦þáUÁòÇe«ÀŠšyW2¾ÜÄÂ{›k·lÃã½%—^žz;X„«EøûU²˜zúxÙˆ;ÇÅÔ·6M1 ƒtϔߨ}7VT:q“ƒJc Ê+½vÉòKïm¹ôöÔûïøæÐÝ0R½•”ž¸³ÃC¿xÏCl¾#w˜ýgt6YNg“±¢¦“Ò“3P+n,ÜÙ¹v÷6÷–\z {êíB!]«.£%çf^Ý…¶ñ0¥¡¤`ATÌ#yøŸÄšÊâýäL6 %õ¹vïçÞ’K/b?zÛ77ØŠàh'Žî?“…º­°ÕŸ»ÓÍÆÙDNþ`Ew'qtw6›À=i«ø´ö–\z {êmߪSâžëB!sTìƒZ,Ü¿xÓT’…B ¾$WQIÍîµ}šºc÷Äqír qoÉ­±½}wluƒKØÏÉÁ%í¢g‰¶Q–zÅwD”ýgj^PY¶ªÆ¥n*“E“ƒ ^bq¥Ëµ{¦IxoÉ¥—°§ÞûîtÓ7ÞjÞn~>“å;\÷ù.ôIÇýç*[~Û÷¬¨áO:9xG'¶F@?×®.¤Î½%—^žzï&qh³Sü·$‡É ºÆ–q¼¹‘âýæacæ¶p}$ÖTÉð8F‰íLNð2Û¯xoË©—±§ÞöÍ5é†w`È7'|…á?‹oñ€1JCG1eo›'B~9Q Ø+“¨\¶*’Ñ‹d´\»ï²Uí-¹ôöÔû¯¤2Ü ËôÇÅæ º©ojè¾/ÿ«¹Þ­“ä 0 KŠkóiqèâ¶Ó©­µIñiîm¹4öÔ[^Ê73„mø MΊ|¥Èg/!æÊbŠé ý,ïñ¯–XQÃeßÉÁÉ1±89æÚÍ)¹¹78©°_½eÆeOŒ’“7Â=nŸþÞ—ëýTü”¢uÏz$Vݳ9ù'°¦2E+9pA$N‡\;SØsoÉ¥±½Ê°XŽN&çBŸß÷?S%‹¯Mˆ¦"Í,Hd¿?)¯•ö†XS;9Á´I,J-sí,Å̽%—^Ä~ôÞ© ƒÞµg§2 ¾÷;S&?éÁT†û1ÅtƒÉ&z’/·úëcSy³KN‹óRbáʵ«}š¹·äÒKØSoY§ú°ä]4NºL¯(!Ñ' ~øË~ÇÅÌú”¶ VÔ´ß19=þ ÛÐöÍkƒâÓÅ‘¥[/b?z;•¡ 9:žÝJeç‰Ï6R:#ƒ‰ W3ÅtƒAo†ä“mè„ueY‘9è×k,sœ½6)>ͽ-—^žzû„ÜЮÖß›q#óAiGÛÔ¨±¿Mà·ÙX?Iig¡%p&–sæÌÀ§hÜ@hY«ŽLáÔžƒAHj3é?>t•q}ð’|6½º’3xÚ+NEŧbƒÍ.%‘Jölù@2²±¢zöÐ6§òû"lq1¹Šlôêʽ ¾¥We›²SogDZ·Ç€ÌÏÉil— ÏZäuĦ ]W_û¦ßò…0ƒ±¢vøGœ÷ãŽ+Œ°ò‹½ö•ùÇÞÛrêeì©÷6)=;$ÿœ^Zâ¶³ßÆs8ßlRÚ¾ðÌÆôbMí 9ê*,/4^{_x¼·äÒ‹ØÞÛ¤LVa]+MÊdÕbe¾›Ê‰[d¨=Ìê½]‰f¡?)MFäø kj:\šܦËNo^»g]«÷–\zûÑÛ&åæK~„ÏïçäÌ8Õ^,ÂVžîÅ#÷bHÊ{æ0Þ›Î=Mº &¶†Ç$×®Î=ͽ)·^Ä~ô–IyJèõ¸ÅœÈ@e¾ÛÅîV=2ØBg¤ðÚô³mùbMŒ°¤¸6Ÿ¿c2ð½6)>ͽ-—¦ÂžzÛ¤0׫<â™ó~ê@ÎÚdý][0O1Å×þblÉ/~k„%ŵù´8hhlÁ Ôk“âÓizÛ³5öÔÛ._ûQÝx] öN¿|‚A[uºd÷ïžU úÙg"qüê«=»þÑ‹Áß­pj¸ÎUw¿uíI©´a·õS׿b×爜ÛgÎdW,Y‹í .|´¤`4"­²¤üµñƒÖTOœ9ßFa+»¥híš8ï]ÝMz {êíøÊáÔùsr[¶‡¥ð‘Ò™7E F#Ò¯-ˆ^+êvô*9¸ÙÛвÏk“âÓÜ[rëEìGo§lf¶¼š{&%Õ÷¥üx”Tß¼ã‹Â·~€”ߌÚ+jÚ?˜xk ON®žžÜ[ré%ì©·‹‰ðEF\[É´fƒâ@Ïž§š‚Ñ®`9½ÆŠêŽ,'y㉭ñý̵«¿¿¹·äÒKØSo7ChöçÛg½hS?=ls:—Á¸¹œÏù•­âꦶÎzÑŒ¥‡Íkoœ÷–\z {êíø[v´fur:ã0ËŨ«²uõ2•ŸžòYp ÖTó729:clÅ‘Ìk“âÚËŬ«o½„=õv|¨ùס‹ArP¨q˜Êò ÷³‰ˆ¢WúìæXôêI~1#TXQ—¯ÉAî©°º×kíà½S.½„=õv|¨0¾ÓÜ@ 9ølk­Œèàs¨L­¦Ã÷–£ÿcbEµ,Š1‡~)a *n½6)>ͽ-—^žz»æl ŒóÄQ ˜Š¨×W ‚8¡“rFA)[þ ÝËXQÃÇËä4ž7„­œÉ¡µ³5[î-¹ôöÔÛöe·e­²/Ùšµ3£M\ïx{„Êã1Å5•<[Æ»ÛÅ:£@œÁ)ÂvNàÐÚÝY¾¹·äÒKØSïÝ Á±è‘Í«®xwE¶;Zܨ¢3¤_«Pë–_¤ ¬¨n/or:X\ýsíê÷}î-yËùõ‡ÞÎ?èi?Õ Á$ªb‚ì~GŽ€í¾[[g.äwÚýº©ÛËÉAa‡± …^›Ÿi÷×ÖKØSoF¯·Û@&ç Ÿ^Äùú îŽÞL1G`e—ŽŒ‚»l¬¨ÛŸtrž™ºËk‹âÓY$’K/aO½wþAgf«Z'&§Æ‡†÷8¯­Í}™rþAë[®¢zaû¬T`N¹ÙÞà¶ï讹vÉ|ïm9õ2öÔ[öe²i~Ésrrð™Sà}ßñ¯µÃl@Øæºå¥ðÆŠÊsrrpÖM,ÎÁ¹vž“soÉ‹Û{êífV(þ99®Ÿr3k“êËÃw¶Œ÷üý¤üýç)5±¦²ä89 _cQœkgÉqî-¹ô"ö£÷߉ð¨ômRNÎ…¨)IñÆnìÕß‹)hûà˘òæ!_åÙÔt$.9ƒ©1Âv¾µvw{æÜ›rëEìGo»ãº[f¨}š9Iàá2«ü¬£×«šN²ƒí^[~ÑúKŠkóiq8ÔAØÎ¡Z»§Æ{[.M…=õv±*£˜=²~NzhÝ™°¥1ÞÃx()ºÌT (ys#¬Àš*~G‹ƒêáÇX´‘»½¶(º†ó.5oëeìGo»ã&Ûu7ÄL _¸½4æ'²±£¬÷6E—ÙC—åqÔºkª;¯*9ÌÆ6½ˆsíâeî-¹ôöÔ[Ö©Ñö˜Ÿ“ƒ¾…fc`)â*Ú¯í(Ì[ÎFtšºçHBMƘ%¯M OkoÉ­±½íŽ+Ž™ê&gÎ@5T¸½Ý}O³«wGwun^l|œòéèn©Iqm;ïn6†|ϓƾ¿‡÷eçµIý#Ç ¢»Çô=õ–uŠ#·Ú¨Q)9ñMŒŒéÚi ™1ƒb ¤2šlùذz=ÙÜÍœ ­­‰Eü´zmQ|Z/8É›ëþ=õÖoŸcÈJ¦˜_ ççFñ;ŽèóR2÷àf°˜Œ‡QeâLdâÈ0®óÀÉU3ëÀ{R*mˆ;uý;î8T:3§NÎÃHwÅÌ=fû÷eʶ«§<‚73±¦®œµ`3³…­¬ÃÑÚ¤èŽãÞ–K/b?z{nÐ`ÇÁ;Â-?'çA»×¨àË"ré:®¤è2»Š9ÿcwò-ž$ÎBgma#hæÚ¤ø4÷¶\z {ê}ôöù™£”ë¼){}‹‰Öc—Û`oŸ²‹‰L½ãÄQʵ°JÇÖÚGºöå„Ò¹ë.&úèíëÒg Ch?'s`Âí¥`6\bÕihé2c¢åLÉ1VÔðQ69¸˜&¶Åçk7N¹7åÖ‹ØÞvÇÝNDt|Èœ?Pôå«j>˜ôS–©t¹}Ë{èc¬©ìM’œŽ±è’kgo’Ü›rëEìGo÷öél(’Ã’QcYNêµw¹©÷–\z {ê½ËM5ùJ^ÏäÀ{%ŸUS·n”„Îj 乨Dìri)ûx.¼žÉé, ¶±œÖn»ÍœönnCWÚÆžz»UÏ“SܪG|ÇGŒ.yÉâTqPöŸX”ŒæÚGqªö–\z {ê½[ÁÉîd7q*¼ÑŽ­Ëó3Q Ïzz>¢[ÜY$¿Ò„UÒó‘x/Œ-ðlxí’žïmùe_z{þÐÛ­z.%üS妿°ËÜXq¢êôËT&Þ‰‚a3ËÙðÌXS·ï™ÉvÆF·ø™k“âÚÜÛré%ì©÷_KžàДäpìu“ÍЀìËs¶/ßXÀ'y¤ZÄš*ö˜ó‚ÐEŠØ˜JÙsmR\›{[®f9žzïØ:ê^;ö£NÀ•±unÛQÿÿæóSÄoÖ³åL6–×vìçæ¯±_‰-è^êµI9ö£A›[SaO½·oîþ£UÏ“©µ¼ÿì^Ù‘ ¶ûdÛ7w4š»F¦ôÞ›úøæî}ÿ16çí>Ú¾ií^Ú©WÞ»¶Þ¾;Ýì…};%+9´78Ъ(¢1q&™Ù)nC8ìHÞÝI0°¦îœ4gz8Ë ^›ïNÜ[rëEìGï*'ÿ×*™*§4Ňñ››É×åÁm¦uS¼ßÈÛ&ùÅièÂ^Çìt>}óÓ‹}®ÝÏHѽ¶¼yr4°§Þûîô°°B¥³ÉÁ%ÍÓâxó$9R¼ ¡4å¨M¬¨•­á̉Eæo®=|"ɽ)·^Ä~ôöÝ©À':ûLÍ™5üž1Û'’…"L ÐLM Åø }–#Ç)±¤¸6Ÿ«±QiÝrmR|š{[.M…=õöÝ 5q\WRUrp2ÇmçÂQ?Ây¬ÂEÿYáPjÊÙÊÜXSËIUÉAvHbÙ‹ØkwÇ.soÉ¥±½í›C¼²ïƾÉAç…¤:÷Æáýi¦ŸAñQÊQ¤”XQÙØ79ên*lcž¿ÖÎÆ¾¹wóPÄÑ7öÔÛ¾9L½‹SÑãVpâ Õ Ú zR¹y)Æg”8+¹ŠÙ…ÍÒöÇ­à–½B«mì`ww«ÞLóÖÞ’K/aO½ðr³qʰ_>9òÆzÌVø-ïUéM[ökÞ«±M‹äÝÍšínŠ\< Hœg°ÄÊbhíêóRî­JUéEìGïÝ î¦ÇëöÜSqЇ-Ú±Á7 ·@xÄú4eÿÎÆ’?nÓæ¦z¦¯™Ó˜ leî€ÖÎ4ÙÜ[ré%ì©·c?“>ØË~ùäà̇٣ôØ.Í=í¦>ñʃ²ÂšÊssr`ý‹.þ¹vΠȽ%ŸŽ{êíTlüaúkNƒ#åùa™~aºt_¦`~–óàg¬¨)2§"}ÍXÄorí)òÞ’K/aO½·oNièJ‘O.V‘-^Dsfcã÷+Ûµ1xòAÏ¡°Ã~D·55§cJª±h6škﶦޛrëEìGoÛ&¿Îé9[ÉYè¿]²‘b¸% “ÖIÙ7ß[ËÕ QXQ3'™–l–¸ÖÆ2Räµ[Þ•¼·äݹÀžzÿ­TìH슔º‘©Øà,¼”bdÄk";¯£YNLò!m´(·üAûrcMMÛ²äté¦síæ&¨¹·äÒ‹ØÞNÅ^¼íÌqXb‚ù<¼ÉEæA¹}“sfBá¼ É+oÜŠj;3ÁfÛ.'Jê&çÌímùòM®=èíÎ…ÉÑGgqÔ¡Íßî8ñ3߯8#Kcrº³°¢öíÇu7gdÈkêÑ.õöÔ[Ö‰C⣬—ä`Hû¨h¹žî˜³ýa „ãìRþÐo.¬¨ê—ä ³ßØÈżsmR|š{[.½„=õv*ö`V`w±sràŽ½XiŒ‰3‘˜}Ñ#¶\ì)Ñ*ß)JÜž›ï-Ç‚ÌAoüÄ"M1×®y³òÞ’·ŒöÔÛ©ØÍw/Ýä’s¡yµ£¡˜¸©Ôí3Û-zÌ{Ë/'ð+*‹’ƒK[b‘^‘kgOˆÜ[òæ{!°§Þ²N…^ÿŠíÏÉAw²³&¼‘ji=¢`AÞÇfßòÎ~bMUÏŒ4§ •±ã½6)<­½%—^Â~ôæßò ™Mùs£a¸ÒƒÄw$€LÌþyLÄ^.À–N§$ŽWÅ£b S¸ŠL­JrOI¥q§®­sv´íDÊãÏÉéô§"w³¤=B¥Û”/@÷Ør(–XQ™`™œÂ¹ÕÄö‡Ã"¸6)>=ÓÖ¶^žzûºÔ2çÒu©eÂÎÀ%fr,såÕXˆ”/@½n9»‰KŠkóiq®xyûþεIñiîm¹4öÔ{wFÐAyîÎ7¯Dl=ìŒÐ‹)ºÌ.ÉoaEM+’3L2¶cV–×î>VäÞ’K/aO½}]ZH¤ÏåçäÀ'—˜›‰G ¢E[Ág'ùPÀ‡XSXÛ‰à`ðŒ±­Á½6)^—.;3 —^Ä~ô¶;®¸z4SÄYLG¨îT:9<»^¦xœ!#9§U+jîT†én¤q2¶ÅŸ”k7»aroÉ¥—°§ÞvÇ±Ž·Ì*·rîʃt¶A§r4È™Y]¤cy¸ÌêJùR­±++—|2GëÄ6¦Âií¶Så´·äÒ‹ØÞ¾.M¦›.»|“ƒ/st/è ý^:\ÕÔ?º\•+å“ÑnaM‰Ûâà‡Øî®ÜW5ŵµ·äÒKØSï*W8;S±ÅYLÅî‡vÑË`.St°MŽ-—'KXQÙ·!9'Ic^ɵ3ü’{KÞò/oèýWRbò9XS…BâTN+Žã/06žmÕ,ÈÐ[WòÁp‹°¤¸6Ÿ‡EÕ„ð½vÉdï-¹5%ö£÷Ñ9›*«Ïjr*ŽËÝs£5¹œ ¤`Afq÷ÜÏêJ½Àš*9§NœŽÞdÆvdÖ{mRxZ{[N½„ýèí#Sù£‘\rpåyJ=É=¥ýÑHî‰pÙòy4’K*¯KÉÁ•'±¸åÚy]ʽ%/G#¹¯ÞîœÍ_`Ï£lrp“¿^Î “¿îžGÙè`_.ÉÝÙšʣ¬9 ¡7cß›F$'hmR\›{[N½Œ=õvßÈg’RÓ:™ïrôºžtiMÎ R/ÔœS×Ü+rõõ&ÖTMëD\±pý]^[S&9RN½ŒýèíT†Êš»Èm“±™ûëDí‹ÝŽDîk²zPr˜¥ÄŠÚî9q”Œ-¬µµö‘È­½-§^ÆžzË:­Ëµ‡JN:2Íu³?:2ÍÅ_RL7 í”üjìýD¬©œœhNCí¬± “½vËɉÞÛrê%ìGowÎæd¹÷ˆ;äÌ3‡^ Í¡k(ºŽÎ×c˜‚‰ü®ºåpä$VÔð¯99̃4–¯].™{K.½„=õþ;© )rèæÏɹÙò„ÈG¾*´Kåtƒ(ÅxÒ—EÆŠºœÜ™y¯„eVš×Ι[¹·äÒk¹hë½ÓÀËçž¼•1M<ß葘=?oôHÞÞ™H0(mc‡çYê;¼•‹7v®oôÜ›rëEìGoß&ÃÖÛ™gŽÒ–݃·¡=ƒˆ÷›çlƒê,bMmgž9JexÎ6¦^ûHeÐÞ’K/aO½w™QÓ ìÉ2£Æèâû¡D©Oç5ýÕn°âGï7=)$gÕ±¦²MrpãIl‰«m®]|›Ï½%—^Ä~ôv¨i§'Ë™gΊIÜQzµK+n3ë6åt§G_¸ ÕkcEMô“3˜œ ,‘åÚÍÁÏÜ›rëEìGoßÔ¬s8<“DêãF3™,ÓæÃÀÛÊ)ª M-_Í¡¨Àš9EÕœ>¤Ä"ÊŸkW‡groÉ¥±½÷Ô¡ÉAñò›$7ü¸£,ve© ·™ç1Åû '(YΙIÆŠª¾$§°3±ýaÁ,×îé0öÞ–K/aO½w×ô‰«N1INgb7èÑ5.~¦…yÁ¤œÊ€ô8Êyq0ÖTõ729?\a#Ü~çÚ¤jâÞ–K/b?zÿ•PÓÃÔ½÷ðR—šp‹3ø‚eÚ_¼tô£Z¦Ð]‡'œ÷|>ÙTƒGœc¹Šr…Õí7I~(‰Åd¸\»ø×•{K.½„=õöoŸõ¿ÍýÄÍ@¨õtmM´^œF1Ýõó¾\_ÒÐÊG¥'‘õyfà£7ͨ¼jöªòž”JâN]=×añººV49„¬hCüó52UЪZQkŠƒóÉelRÕŒÉ)ìZHl´ŠÈRQ4)ÜÛréUØ þÔ{ *Ī‘4ÉA B¼è£ªþBºÞå´¤lR0›ArfŠ›ÔtuYr0|%± ‰¼vsuYî NêìWog/ð.}f/ˆ“sN“ñÍÞñ%˜ìl빜ää¹Õ•C9×AeË ›sÆÙ ÷ÇäH/™£Sog/u3kNE\Ã}ôåŽì~D5#²‘EÐê–OVä KªdP69W|Ù-ˆDzmR|š{[.M…=õ¶IÇ3ö¨ áá@÷ƒ^ a$0 ½BDñµ¯ù ’ç`E=*HüpI ãÞk·¼yoÉ¥—°§Þ2)ïeO¦\=U’ƒQÆë½*hýþ¢}Û,¦˜aÀ_³å¸gkjØà%§Å§™X4íȵk^¦¼7åÖ‹ØÞÎ^`®ç2üœjF–ÀÍZ¿÷}1kqÀFo¦xµÏgË›>jövU¯m#q©_Í“ØÈG¸rmRÌ^PV!åÖ‹ØÞ{®ƒœ".ƒCÄ/ Néœ!~aØšü6 G€q׸ä '¢e7<3ÐÐN¸†*B­Ú²žö”Tê÷Ñõïć. û‰¤Ê[ñ!qðóoòDDÛn‰b ‡N$Ë‘ñk¬©²£I>·x~S6ÕÒÚm7ÝÒÞ–S/c?zË7ñË“µ4YÕ´ØèïÍýaÿ‡¸(¾·þ^MÁÄ0Âk9cÁÆš*Ž,˜SQ^mlE¿~¯]³Ÿ¿÷¶œz ûÑÛ¥®¬èe¼öçä •òf ^¤u Tõ¦ÃéÕœ‡a“ÊÖ ÉA"±hØ‘kgkÜ[réìWoLJ#³Ì™È@ˆDd¾ØÆpÚ0Å?ü +jdö‚9¨qM,êBsíš÷'ï-¹ôöÔÛñ¡‡¹Wœ/~NÎoü‹VQ™×Ä…IËo±ltÑešm„®í½3µ¯Kæ¨øHØlcÚ²éŸÖÞ’K/aO½=uˆýÕËíSCržxaE9êE¿W­hSZ—)XÁ‘i–sœš±¢v>‚9Û K+íµ·÷Þ–K/aO½}”½ØÎmÚÓ“œïÑhås©È%޶Åóm5 îŠÈûµå ƒÂššöô$¡ÈÄ"™k7¿groÊ­±½wnÝä/`ÕÌ­›ôŒ*sñòTÙ4¨Ü¦ñ)Ì ¥ü=­Í•XS-g™Ã1yÆ–p¬äÚeÏ(º|!\zûÑÛmèÐa"Ê¡‡²ÌÁL4‡c ÍûÙ q\1 Òq—±|Ð÷*¬©âw´9]c£kA˵IqmMKœz{êíÜ:•‘´Œ™3ã‰6áë\ÈvCnÄÜñ¡‘¾Ð…Ærrx+ªíø8•ñ¡a§Tļv6Eɽ%—^žzË…až$ÜèÇU¿,Î×`¯Š†RUQ´x3¥üÁçn¬¨™ÙØæ G„íX)¦œÛ i}l½F†Zê^ÛS‡ªn/.u)ˆ(Gåç¾n؇u™¢  [Ìr:ÐŒÕÝæ$9Çc ^»8ç1÷–\z {êmûÒè E÷°Ÿ“ƒF¼Ç[ðÇ_ÍÏô­‰vpj€ùåü`/7Õö%Þ¸Q‹é¹vË{¼÷–\z {êíÜí€ßȹæLd¡ÅØL:ÉnNþ)Í3 ãÍ’OF¦…5va¬8³Œ…¿1×®»0V{K.½„=õvþAó D­G’3Ñû= 5~î1GˆíÊDÁÌåvMçØi*&°¢Æn\z¹¥Rä'[ã¶‘kWßFroÉ¥—°§Þ.u]ô¡O»Njâ£UÎÉq¡Tõê¦h ›õPÃykbM Ÿ°’Ó=¯0£`<{íæodîÝ<_¯Ä~ôÞùšÖÖ\ê:<Ím57?èœ29xF”óÐîFò§WcEµl,g¦î¶•k“rþÆ·H>òµ÷°ßzûÑûï´ é]“6g îöž‡w.šó´uúꢕÏê[ÎÊ cEevir*ºm‹òÖ\»ø.“{K.½„=õv¢†¡uÎ>ù99Lµ|0:-âZáTx0ÎI¬a\4î-g‰ª±¢†O[É鞬,Ó4½v³'<÷–\z {êíüÍÆÌÜ#w[ånwFOi}útÖ¯­S_n ùu§0µ­“9Ê¿V¹ÙZûÈÝÖÞ’K/aO½»]YÉs«“ƒ<‘?­öÊ1ä!^Hׯ#É4²±ËØòå{'°¢rnµ9œ=m,çR{í=·Ú{[^Ý^ØSo'Ú=´Õ·½”ÉA:Å5 ÛKc¨hä^c2h±í¼FãdPɇg+ê¶—29Wê„…ööÚ¢øtñÐÄ[/b?z;wûb¼f¥gÏ”ÊDŽ´¼aoêà ÷lúùÕÏHykö„ÖÔJÏž98¾$…5¹v6}̽%¿µ ìGoçn7z+†ò%g2®óž‡”ˆÈ½®Ý,H4-([~ñ@,¬¨‘•¬æ ä!±ÊÆÖÚÍçØÜ[ré%ì©·ý&ˆ]°¶êç`à0ÿ 0Z…¼ÿ¬ïî™&b¯ÈÛo)8§ 'âvöœ¸7auµ* <Ê=ɰ63ª]ÿN©kgH1Ë“èoœï™9€ZãɯQ–!Æ¿×-g¹·±¢² 19ª¤¾t†šZ7åPS¼Ö-gÇdcEm÷œ9ð|%>ó\»ä4Xï-¹ôöÔÛ¡¦‹EÁÓ/¾äÀW½N/5lª(>-—)^i*{nJΖŒÂšš~ñ%å ‰…Ÿ+×î~mäÞ”[/b?zûºÔÙÿ±“ÕŽRŽkÉ==f9Ô–BÆ5.9È€•\°Å×!¹ú.^½­~žÄrð²×&õ.nhÎ/ywc`O½Ê€vø˜âªD;sV¸•#ÁS€0ÈÉÃÔ?º\ÕšòÆýÆšÙƒÕ¸…ÛÂçÚ-{°zoÉ¥±½÷u©ª}À“×¥ÊæÎyéÎH'¸Ã¤‰òu©´”G׳‘XRZÛ×%p°#lã;­Ýö„;íriJìGowí†ëÏã 8Q©·ØÅ)šQ–J'2NE¥;îIy¸ÛjbIiítÇUôø¾occþÞµ¼¶¨tÇÍ-—¦ÂžzïT9]À»'¶VOù‚ÅФ6Ñnœ‡Q¼çË–+p,¬¨Û¿—ä,ŽLnÃp_^[Ÿn.“¿¯­—°§ÞvÇÕøN~ÜqâÈ×rŽûpßß gd*]ÿLãëß 9éR;'~kíç½%—^Ùã»ÿyáéÕI(Åö¥:e &Ðu3,Â(¦Òb\[¾|v99¦Ø¾ˆƒFY‰Åœ’\;§ÐåÞ’K/aO½wßñëH•ã¿uYt‰ÑbDù饀N¶#„KíÙòF'±¦zöá6y–‰Efe®]s¬÷¦ÜzûÑ{O…èËßðŸÍAŠ>“ã»c7NÔSîæ‰z54’3ãHXRZ›O‹ƒ-„Å´¦áµEÙy7î”[Sb?zÛ·hm‡]XÉAÄ9 *¯Žc ù`®_gjöxØZ‘ò™¿ÏÞ6•M^’ƒ.³‰Eõz®ÝìÂʽ%_>Ìû½w*CãÔ­¹[)4Mæb+…Ái…‰ ×eÊ© a1$gÑ’±¦²ä89ˆ¾'…À¹v–çÞ’K/b?zÿwÜòµX¥áÉÁï'\f…-ø:l»1(´}8ËPò¸ÈµÄšv~$§ó',~?¹6(»ú”X ùrwÔÀ~ôv×îÁ‚ìâ¤Áä`pM/èÜçŽ^Ñ+[õ½JŒ|‘vmùÃFZÂ>n«•U²äÔ‡Y6ÄV4ú÷Ú¤ø4÷¶œz{êmwÜÅ!QÓ.¬ä ‡ïæ(AtNzÐîÀÓ\ü\sÔƒæëN¬©™3òÌéñ3Kl‹Ï6×nþW̽)·^Ä~ôÞî¸ðoÞ—ç–$5ñá‹\•Õóá2‹»?)ºÌØéÉrvz2VT¶!M¾ƒÆÞxÿ{í;ÛzoË¥—°§ÞîÚ­™«—› '–£ÏöP*C8Á [ø=n*|õÆ7•ä9_/°¦.#“Ç@b1h2×þFæÞ”[/b?z»îUs´ø98~½Õäöªt°Ýö>¸uOS÷bÊ{±÷µIqmÛÕ¯4“-/$¿üïìå|ÈîÎsâLV ÛY94ü¹ge‘ö–\z {êíÌïË£IuMαßãöhÓûÙÎï4…¯uÊgcV=±¦._c“ÃF Æd>xí‘™Þ[réEìGo»ãÔŠìÊ!zæ h)*xÔ|,†äE­O3•.³gËõ-öñeÑëù[ŒAxÄbÈEóÚ¢øôt•äÙ4 ØSï£ó܃¾e×ÑyŽÖ*¯Kqb¯¸:Ï]¦|]ŠX´ä9ÿÆšê~ë%­^‹V¯¹võ[/÷–\zûÑ{W¡½Nwþfr]j£Tùä÷U”8­oùƒÆŠêþ˓î8ÆN©ÑÚÅyî]<Ŧß{ê½§BLÅKïœ 1™á-œ¼„‚,);ØúÚòü~ϤjöøK’ÇŒ­Û9÷˜âÓÝ)~KSaO½weÑ“£„~NNV®î|¸p í\8;Øî£rõò(`/°Iwœ8r© ›Ùo;WŽO#_.õöÔÛöe2jdßms&ßãË™Tp‰]tŠ®í2{˜™BùP—(bMì»mNCn·±5üZ¹vuVî-ùtl`O½m_ªÝœÍöEÌÆ{¼Ó±ÙØï_c®=çAg=°Âk¶/ËÝàžº±qæÚLͽ%¯â ì©÷®,ŠwxGøüçä ®6ÞãÑkø}}>¬þ‰ž(¤l_•)ùÄ„;cM­Ì(0áùÄàÃÚãЇ½‡øA/b?z˾Ì×®Þqæà‡£í”?8öîyLÑÁ6éâ“|ñ;/¬¨á¿<9¬<2–=»½öîéí½%¯Ù¼©ý¡·í Æ?ǸPõO^zè>Ú0ªtr2CÌ:#E‹¦&)ÈŒ2VT÷'œ ­±èT–k soÊ­±½ÿŽ;îâûûqî¶9•³÷Íž±LŹö”­Î‹—R_)g,cEqm>-ÎÅä_bÃIÔrmRvÇ­¶åÒ”ØÞÎŽ[ì)x{”¨9qõ`Lm±bgó·ç6E—Yí$­‹.cMqm>]ÜŽ”sb+[ßkmR°´ÚÛriÊþ½Ý†®ð>ò¢7ŽAxÕa´¡k¬Tý ÑëÛ:qôü1Do|­“99D¯oëäµ?CôÖ¶NÖ+‡è?­SeNÚS}2MNGÑø}°ãz‹æo iŸLcôÝl[Žvú‰U}2MÒç}¿\‘é­µIñiîm¹ôöÔÛÙqäP—ÖäÜt’e4¦‰’¢ƒMÁÉFv4”Kg2Y‹Ü•\;»ËäÞ’K/aO½íŽkGõÏÏÉauPnþ•Cáa½•Em±+’ä—û'­¾©]Y$Žªƒ„UåÖ>*‹´·åí¬Júè-ëÔØb3š(wÛœ'ŽZ³±9gL<»^Š©A¤`A”>d9ûZ+êN[f®ÖÆF‹„'×&ŧ¹·åÒKØSo}ÇÚ¯¨ŸƒÑâpróEó^1ZVr±2 ºÊáH‘”-…Q²@Œ… ƒp ÷­JrO2¤ q]ÿŽ;Ž-i®æcFrÏÿÀDÏÎq;ð#Êáe´œ3 •­ê“SÙ6HØâ–BX»8Ÿ0÷–\z {ê½Ýq˜ÓŠƒ¹:á[EÂAv˜ÚÚ|,+Íh[>8ØDXQÅÉÝæ´›Ù Ý «æÚ¤ìŽ[wÊ¥—°½WŽ ƒŸ“£ì8–(;®y¾tfÇOöÜ9¦(©£˜èS”Xe¿ií#;N{K^Î̇Þ·}L&~†AˆìPéÕ„¯v¨,‹TfÜ[>8OXQ=Ë™_nbÙSÕkޛrëEìGogÇev[‚çqÃɢƒô0éb.ù⻨vÊ—cj´0š×æÓâ\æ0ÝXîy¼¶(>ÙuWÏÕöÔÛ×¥I—vÝî¸i—7Üq‹îðNwÜEwyOwÜxœ¶ w\±«î¸âGe·ml½—±õ¶»íé¦þÑÅm^[N½Œ=õöu© uwd?kˆž9è=×’‡nŸòàJ£x@ñhðµ"ùt;B`§ ¯ cÍÁ4±&Æk—,ŒõÞ’K/aO½÷u)>u¹mcrntÑRC˜‡Ä+ͨ¦|]Š5-gN–±¢.·mLO;Æ"¬škgÞFîM¹õ"ö£÷_iÄ0™[4žlÄ Ǹ·‰ÔÏø½¢Ñ›z‘‚‰Ÿ÷–ßhkn,)®Í§ÅA ߨ¸·×\›ŸæÞ–KSaO½Ý$ux6µœ%gb´C”Ï1Ô5USTLÁ‚LåXJþðª%ìãa Š{'§¹O_g`K=üJ1ŧ§gc«—Þ¬{ê-ët+ÆÙ]葜‰ãÍ£ˆ(Æß"¦9%Íî-îê ¬¨îBä •+±lýëµwg`ïM¹õ"ö£÷n’Z™¬aÉayÐDÛúÈ™ Ú¬a d²K³å걌U]ð™æ:ۘ렵Iñiîm¹ôöÔ[ÖézŽF¥?'G J6:}¯Cwõü@¯»;´ù`xGØá&n{jNŸJb‘¦™k7—kæÞ”[/b?zË:Ýl¶‡µ%×ÖÍöiƶnfUíamë~ì…ùÃÖlšÊamÉÁ¬¥Ä¢kF®ÃÚroÉ¥—°§ÞnÄp±‰qsž`ràŠÖ¥q›# DÁ‚ܨMK¹ÆTkª9O09ð÷$¶D`®]œ'˜{Sn½ˆýèí&©x·EBÔÔps®‹œcŠÚñÞ ÒÛTÅ+ecEÝ>c$‡7sa™äµIñiîm¹ôöÔûï8ó8Tã)nG“D㣤4œPOsák8©ž=öýõ¹å7\ÆŠ*¶7æ¼ÿQqk`ßÿ„Ï\k“âÓÜÛrêeì©·së.ö¿=´;9ªRàþìèЇ)Xªf Õ=¢Ñ‚°¦níNÎ…H °‘>rmRtýqoÉ­±½÷L‰ñŸÌ”ÇL‰ëSöø?XYØÊ'gJôÏL‰þŸÌ”蟙í˜)qã鸎©WΔØz;·îæ8Þ퓜+Þ£#\ÔÌÃzÖ1å¡USt¸á2›òŽì=aMåhŸä ’/±(å˵»ŒroÊ­±½[w1¾»J*9h(}±á†‚‘ÿÖ§):Ü*D’ç·MõL|0§¡™¿±MzÞYÝäÁ{Sn½ˆýèmg›&ÕâœÇä “ؾª Lxº)X×rå‹ +ª8çÑœ‚®ÐƤÏzmR|š{K.½„ýèmgFŒÄòÒL sF„§f«lR7Ã5?ÃØLÙáVï-Ç-5±¢Z¶¥3ŸtbKtríâÑA¹·äÒKØSoþ-ûD±¿bf ŸÏÃÎ! Mþ˜à&"öz0gÃRÝ1‰›ÎPÓ—ËŒßãZ(åU›¿YÞ“RiCÜ©ëßqæ=|­÷HJNuÚÀ£‹,oêê{íl¹ðŽÞ[>˜¾-¬¨âIæÔL[.ža³¯õÚ=¾Ÿ™ré%ìGïí̃—w¤A2g¨DÏpú„Ãà4Œeg^/[>èÚVÔHƒdý'^¼\»ù“{Sn½ˆýèí܇u8Ü~NNæ/ŒOg ûÛè*Ì·—3¯rÒ]:Ûó1Hæ¤C®~:Ýtºœ«¯®Þ‡#ð£·yÝËvæ‰Ó8Kõv5:氲؎nÕy.7Wº#Ó®9?&y䔇λýÕ!Ÿì'¬¨,,Lf¶%ÇÏ\;g™æÞ’K/aO½÷Tˆ›³,ç“S!ÀAÿ¬%çyA¼-ŠOûe 6`±Õ„ä‹M)„5UrÒ*9ñI«pöbðJEµý2ÅÐÒÍ)Ém)±½wç9õ&½\ê*}Fóõ6 —ØàK„lÀ`¯å‹3Æ…Õsäž9¸$¶âBãµk^x¼·äÒKØSo·R˜´uËs±’ƒl§ZÕ¯­Ñ*[ʉ¢Åx8“†ò–]…kjy.Vrb—X¤ØåÚ9Ý,÷–\z {êmû_mÕÚ%û"ÎmÏx4VhoØ) 6 #±Úò^ý3]cS—?éäàNØAß©ÖÎɽ‡Ç C/b?zÛ¾  "ÞCš:d[Ëöá¾ö}Á>ÔbŠ6€Ão-ç\\cEå}49èg›X¶¥õÚùÖ˽%—^žzûþ¢šãþ"Žî/Yo Üì’3ˆxÇÈzȳbXQGî¶8ºƒ«û‰Ö>î/ó3•Hz {êíÜíÌè¿»ý8—0œbê ÊVôo))Ø€ÑÙGLrö*5VÔðÙ29¼íËÛŽ×nYwä½uÊjƒÑÿÐÛö¥{Úöt+…îž~‘“¶-5sÒÖb ¤}#a¤6å·{ú=kSûFb:Ã$aríœÎ”{KÞÝÅØSoÛ¦6•ËÑÉAÎPØ€øû£žþ}¸š)Z &zX®3•°¢²¬=9c‘o”kgY{îM¹õ"ö£·í rŠÑ¡ö’}§rÎCcÁF.º*Gÿv»¾d,ŸÎñvºÅJ·Å˜t2c6©°•M^´¶(Û—2¶¼pf—°§Þ¶/ûíðhr¾Ç¿³˜=ç·ú1å®2>n9ããÆÞjœ·ÛC#8$,?é´Óa8ïm¹ôöÔ{·ê‰sÆÝãHúsr&3^ £,vmã/Ž”}Xñͼñ÷+¬)¬Í§Åiœ$letCkל:佫£ЋØÞ¶/œñ:Šmer*o$HäèÎѸqD`l¤6¬B\U,‡[.±¢Ò kNçRØŽlQ¯Ý3›Ô{[N½Œ=õöýeA•Ÿ““wy$³-ž\?­àÚöŸ]«„}\Ë÷q²\;ZÁiíãþ¢½%g°ç£÷® šÜQï¬ šì²?'êsSCÖ…ÚQ%¡,7ßáÉYòÔ~cM]n†“„Y‹Wo®=Ü '÷–\z {ê½ýc—Ò%JúÇ.Õ^ðQݼ±DÐd¢—˜(ûÇæµå·;Ì+jW“šÓÐýÚX¤7äÚ™H‘{KžµCÀžzÛ?Öì÷ž:$¦V‡ªðÖð\N1Ef§œ½`Œ•Õ7ÉY˜SgìŒ\{ºÇfî-y³? ØSoÛ—‡+Œœ¹jþ-ÃG¥Ï=fªÎj]œºìð,[7ö1§GP=±hé™k×ÝØ§øß-äÖ‹ØÞöMlÜœT4»à‡ZlŠEHE·ÌšÍÝŠnš”×Âû<±UÕSŠ“s³®õ±Ç6•åvm´|JÚ;åÒTØSïíÞtšµ“œÇ£"ûw!ˆ¡Ÿ¤ì‹¾Þ–#àŸXQ·Ûs$g±°†Ø>=¦à¹MÙ?{[.½„=õví)GÕ—î†ÉŒ¡TÜj ‡:´æÄa¸åÌ7VTß³¦eÕkc+ã/Z»îø‹ö–¼x†1°§Þ¶/­!ûÒÜ:6¢³¶#ý_åû²ÎøL´ =ìËåfUi_Ä‘Xg|ÅköE{g²õ<ìË©÷Ž¿ÄÙp,û““Ù û1*b$í2åøKüž,‡ù7ÖÔžnΤív8¶Ó.SŽ¿<%åÖ‹ØÞ;™ºÑ"h¢erÐE"šã/cñ­~›¢ ˜î}9ËÏ]NâÈÔkqÐ/5±=¾x¹vß©×Ú[òŒ¹{ê½'3ÈŸQÜ nØ3 ¦#¨©Ílh*?ÌôdÓÛ~˜ÉɧòÃŒ²©ìŸœV‹ï|®¿®Ü[òa? °§ÞÛ¾L5ÕÛöEýí‹zLFLôÞœ‡}Y[>\{:ꦦS!’ƒò¯Ä¶øÖäÚÍ©¹7å#{¬ë½÷ý%’ø¯’½ ÌáP®Š¨(á¡*^¶Wß½ بÈrv7VTÙ½ ÈY{…÷–¼9ØSïßïj–Û2¾ßymŒï« iðŽqWS¾‘Ô{Ëožâ…½ó>àˆýíR£97v=×N»Ÿ{K.½„=õ¶}¹èuêîÏ”œÉy;}T‹1øBK¼v ¾ÒZKÞü[ ¬©îþLÉiqùHlEl¯]w›líM¹õ"ö£÷îÓ9ä³íÞ9SÂÃPÆ'ªvÑQà6åˆ}›)¯Œ^ k*ý0æ(¯TØ£•×é‡ñÞ–S/a?zÿ­É?)-ÃÍa¥Ú­¶Øþ¹GQÐöÆ\-¶°¢Z&†›ƒ÷ZbÙ1Þk—L ÷Þ’K/aO½ÍDØh{ãtèîöœ‘½X†Ûsf «=çpóP–¶ZβWcE ßÇ“·xb›‡.·çT–Sî-yw{N`O½Íïg:ôt#I¤C/7ÎG:ô…Ê®³·Áãß3Ò¡‹ëH‡u¤C‹£”fa•thí-¹ôöÔÛéИQ–{N$çfBÈäIûH4‰F‡¤`A ÇsX®.`ŠZ9¥Û¸Æ‹ÑÞ¹ö°·+÷–\z {êítèÇ· óHΊ«z$)Ëw³|"ïã2 ÒÕ}MòáÙ·Àß~š;!ˆƒ$æÄâ­“kç[)÷¦ÜzûÑÛéЬ¹¯Ëiêɹ™v¬¸ª>£7§Ë:©ÂßòÇS•²¼¯Í§Å#-±HÃ͵‡ßè¹·äÒKØSoOþy<Û]·Òä,Ø„V˜‚<¿HP~S° ­çürvB÷ÆŽôƒ8ÁyØ3VEã–\»íNÚ›rëEìGo¥CWŽ,ŸoÆŠsFœ©è{/yºãÑêìö´¤”ã+„‘õIfô8ó‡š!¯šÅIÞ“Òêùê;uý;“†»¿¬±[Á±_La!ÒÌWjL!å+ úØHþ¸M©›Z;ÁYœ,ÙklÇZç^{8‘"÷–\z {êípOAÝíu;GßœIÓ‘-¤nœ"È‚ËêýÉDUšå“)šÂ’âÚ|ZœŒö~w®MŠOsoË¥©°§ÞvÇu§ÕjÐ|rªñ‹¾¶×¢Ë·8Œ¶~mùNÞkS·ÛÙ$g¡¹-±ñòºš×åËÕê[ÞíööÔ{÷6(œ|¢ªÞädtÕY:Ðæ4eÛÓ¶Cý+ªe7ks 8ÄÆïþεIñé,rëEìGïN0Ôâµe:ÁàPÍõ°(ƒ"7›·)t|;äϬTËo;m̺'ÿˆ3ãLØ®ï\{Ø5ž{KÞ=Œð™è½Ýq8ºjºã4(õ¹÷°Ò‡)cfúœ)e®¸)ç Ô盺öèSq¦g-¸Í^Ûkn̽%—^žzïÉ rt§C‹³èöÊÀÅÅË“‚—{(}Žò©Ô:bMe¯øät‡„E/ø\;{ÅçÞ’¯lÛÿÐÛ×%Ɇ›h9ZœÉ«Mt­¨êªOÊ!™p1[~#Û×XQ{è·9è«›XŒâε÷Ðoï-¹ôöÔÛî¸ÊhÞûsr*8/Ø©9’S¶um9^Ÿ‰Uìì6‡ßHcùôÚ¤ø4÷¶œz{êípÏÅÙ(9ˆÅtŽukŒÓÄ[½6S¶îG M¬©ì”\s‹>?¹vöʽ)·^Ä~ô¶;®s®Ëp“½ä@»H kàËV£J²]»Õ¨’ú—u—5üLN‹Jb¡Êµ«¿‘¹·äÒKØSï£wiõï’ÍŠSsPôoD›iŠ6 ãÓ´|øŒÕצºÿ]’ƒ°ÄjV\õ¨]%èçÞ”[/b?zowœZßwºã<ˆ{2£÷øÅM1ewœq_Lx6öò n/5F;±©Óÿf™ªÐ<ÝŸ­—°§Þ¶/JMÊöœÉY9aG—Z ÕÝ:A`± ‰ä‹ J„5•í9“ÓÑìÍXT§æÚÍ¿—Ü[òËu»ýè½ËmÔ7È­¬÷tŸÂé<ëö¹''÷ä +lê[ÔØ.tŽÄššÙÊÚÄ>‹hÇ1ȼ7åÖ‹ØÞ;ÜS£J Ë’Óé`Ã5x°è2B2«›ÊpOÙò;~‰•‰´ÉA €±¬z÷Ú¤-—^žzÿ•Þ9ƒ#˜%ðsrX¶=Ðv œé.@ d`2«O_qî‡M€gnDÔʌڽweedÄŠ ­ëXnÑCtPiCФƒÍ[v¤Ó K)éY ÍêþT]ŒÒÙcCÂÕ˜[vø%ìé·*”£+Ò޳&BjwÊ …·ô’ª‚- ÇÝ8·µ½#œM,%‡ã¬‰š±nóØÇynÚé±§ß›;g r*æÎ¦b]ü5쵂`=h(Å ²Úü¶m¿£LPXJ])%ÖÔ•ñml¤|yì¢ChÏM;ý"öô›«ÓERãÈ ø85#V«ê-úõ³ž+ë3KŠäòêv¯N¥Ô7ÓŽW§976z7{ìpuÕ[xØé±§ß\fõÛ!“©¥‰ey̦·Ë×'=&ZdÿÆD»Ù#ãÉXJSÏ5k‚y\ØG¿®ÆÜ²Ó/bO¿ÅƒN¤¸ÍSï}"ÑZŸèAŠdíñïmÇú',%—À[qc#Nâ±]ï¹i§_Äž~suj¤›ŠX±åÜHTvÇf·±¥XA^OÒµã—=QŒ¥4ÝÅNÔë ‹z=ÝÜÅNsÓN¿ˆ=ýæî§±_tU§,kðãÂZÁØt±ÿÛö,²Ç!Œ±”Ü»ÍÔâ Õ<¶{·ynØå°¿µ¾T·ÐúB ¨v¶?ˆ&pk}¨]Ö€©`wØ/–Rwki¸Ûˆ¼J]µ÷Ü´Ó/bO¿¹û¹§vä:î‘G6w¼³è8ç¾.¨ßµõ½¾ä£Ñ‚¥c}ÉG£cqœ£±÷qæ¦~á¸çá·Ö—‰.ÉÉÒäH(è²K$Œ„ËÅÉÃäa/â(ZXIÉÉÔä(†6G¡„ÆÎ.¤ÐÜ´Ó/b~k}Ù ,ØYNšH‹Y+Âõc5Ó¹nõsSzôÍbYØo–Õ{ï_Æâ¤‰€¡±0ôØEÇýž›vúìÃo­/·>&VXç}ãJúlèë˜.I±\èm/{óáOÙÒÔ›¨5qø lu WcnÚå°¿¹¾¼vÝw²w±ßH3â©>"e3Jî_Oõ霔b x½ø]yÛ¯õt1–R3û4Áà`l‰bO]\ ª¹i§_Äž~k}AŸš×úÀ÷1iF¬ä¹uw}^¸!a zXÛow–¿-al\MÍŒ—Jb{ðSjìnþJÍ-;=%öôû·¡Â™8³˜ê2lͦ£·O@øÕL’¾3’·Êpe:±’¦N$¬ ¾agôtÕØâjÎM»üöá÷ŽÍÕv>Ñ­‰§òŠ5ïVÜ.öWlnü¯ØÛ¦ž±ä'º5ñT66žØÛOtÏM;ýöá·Î~2vÿG*vV< ҩ˱»Y§1éq/+º=JúÁkMéHŦ†éÔĺ”'=îÅsÓžÅ#ÚÛ'¿•*—ÀKWw›9j:ZÅ´Ù(笪år›¹Ú£¡6twßXJu·™ë"oj}c#MÉc;ÉsÓN¿Šˆs¶ß;›¥<—Rå¨ }/"Q© Æ©Uâg]­*˜¬¯¼±”†Š¬éëÁ؆¸Çn;îǹiÏæ:¿?ù½© 6/õÇ©i(Ùœà¦Á×ùZÇç- Ѷ»ÚGtVÒfÁ–&^Ÿf}°`σÛ~ûð{Ÿýt’ Ÿýt $¨M‡":MI:ûiÍöžÅN>ª$Ž­³Æý®[Øxǘ›bs7Úé)°¿uöÓ@/\v©55Š@³. jiHÒiN«Û› c)9 jMti26º4y줄zÏM;ý"öô[g?Ñwj­úS¥>Ô€à÷õåi`)+ ¯™S’²r³½&g—-9}ÙšHA6Gz²ÆÎN_ÖܲÓ/bO¿µ¾ðʬÁÖDÖ\ÕYö3ëÄ¥KÂp#Zû:¿iÆJ2k°5|2–Å;Û¬Áž›vúEìé·Î~®ÚÌ]g›¹™Î6s«“Á³‘Ï,g›¹YÏ6s’Žõ¥žmæ„õúñ©Íœæ6ÛÙfîô›ëK‹ëã´†}µ¥k˸Xzþz¶ò”b háíAmo,¥®'¸51¶DªµÆ.NÅÖÜ´Ó/bO¿•[PôIÖÊÜjâá¿Î÷³4Ðx´uI8ÿg %í,¯$–’S¾¬‰)ŒÍÑeAcgí=7íÅåùÉo­/$7LJ³¦¬žÑ+ž¹±(GM–ô«QžÛŽÆpÂRrÇjÖ“t$a£äéÖØ”puuŸ‡[~{ú­õ­Ÿ«)ЬéHyŽdïhM7㉿^‡«)Š:*“mªec)™¢ÈšØhmmŠ"ÏM;ý"öô[g?qx²ˆåx/ÍVê9N JS×iÌ5%á|&ØUlæc!alUÚ­/±¯ÍòúºplH¸sËNO‰=ýUA¯‡;#…Ö 5wÄ:n$ý Ä9)ä×ö;pb)9RhMüžŒmêWÝoI¸šsÓN¿ˆ=ýÖú’A½Ø”‡gÍXG'«G+ ‹wФï\ê½íCí‚RÞR31›45bq¬]֮ͫâ§o¿ˆ=ýÞ¥>$¨Í¥>$ñš9žñlÄøúÖD9N—¤ƒ 4ÃîúÀ6Sª©v«ñ=76–íh—ç†]~ûð[û—Hšg‰îÇ©‰Ü½UŽÃ6`t5eHÂP§G{Á°’\lM‹akœÎhìêÓÍ »üöá·ö/7JT¼î[k÷¢4«Þ7.ò³½ËÄPæZrßXJ^÷­‰µÛØX×=¶×}Ï »üöá·Ö—ì^"¤*æŽÖo½ ëIBcÒŠ®'.“(6²}¸ÏIßÒ¥3lkf4&%v=zo é;WºÜ·~{úÍõ¥Fhz5lÖþEšÈGè5¨³ê:ZéÑØz½BŠ5àõ=xýÉeoQ )¬¤âý‹4ÑÌAØÍ46$Œ¹e§_Äž~k}Iúýݢ¡¦¡€sïLYÀù ñ]«Â¦YŒü€{c?Ó,ZƒÀC>i=¶¿cž›ö$¶óÀž~kÿ’¢­ö"#Ž43^õï6º%L†Ô“$ì1Z¼ËÞã…\XJC í¬i׋‚Æ®»7箢ç=ýÖú=<?NMGÕ'6B3z¯õa=y )†µ~²c&,¥ª;·&¿ÆÆë°ÇκsÏM;ý"öô{S­Íg±Ž4¦Z»v±ÎÊš}ö}{í#ŽF¥ë«}дÝÊq:¨ÖæA—vF5öƒjí:¨¤› OIµ6?ëÔˆ^Ç)òt)iBÓJ–’f¬Í,%íCÒw®Fw±½EÛa%™Kš„bNg8vÚ§7œ[vø%ìé·ö/SY€lalMì«W63~öµ~Ü8ÝŸÊ•›3‰ÆeÙgá °’ºZ[S£¶°e=Œ=vu€ç¦~ûð[¥¤$QjªjÍ\¥Õ›-ƒœàf'·KÒw®FWßöâ]fÙÒP9Œ5±½46ÞJÒܰË/`~k}Så¸ÕV^𼀋nsâY²¾¯§d®’b ( K—=úq Ki8ÃÝš(vDÞ¹ÆÎp×Ü´ËS`~kÿrã­Â¥×Ö 9± ËŒ@ñÄ¿%ùD¥o;¢ÂRréµ5ý8î ’¹Çvéµç&sýê:ÀÜ~ïÚ›µ3]ùÀ»ö&4b\ȧ^uB¨½‰6Æ·÷¬ÚQ+a)£K¦°X25vs|LsÓN¿ˆ=ýæú²r¨Ø'…ûizô°]T»¨x}Ò×@*<$¬ÕMèk<õ™{ئ¼$F ¬)ÑçMØ}Þ4vVÊsÃ.¿€}ø½÷/[Î4½Éèò¸zÐTôï\ØëƒN‚E>ìöWŸ$·-5Eî­‰ÔEc#YÑcç]{ùa—_À>üÞñ±„¸÷ûÖdì**òv v,'-:]Š™¶í,N%–RÒ~Ÿ׿tÑ—Í4ß4禡æÛ&íÑ2bO¿7•ç@mQQnô­çE9³þΈ(Læ>I8Q‰MŸí±é3–Rñˆ5Á])ìê(’<6$íÌÛvùìÃo­/Cï¤]°¦Ds´ ’ÖOuvýáûX¬Õö†¼$b%%åaHƒ£ aqt¡±!alÌ-ûÐ;L`O¿w|l½‹Ž¦.tÖCpPf"·µ o(ó^‹öù´O4¦&–RS¡§5àó¶ÄK¥Æ.:ñÜ´Ó/bO¿ª‚§p£(ŸØ²© ·t41‰ßYR¬ g~ÐD5nÖ’k ¬ÉHŒ¶ßbm½³¤ø$8·ìô+«1ãö›+í3¿:•»fÍi)¾%-šaÔ„ÀæfõåÝú–ÉÞ9G,%×’Y3@llEK'Ž]]K¦¹¡±_}ú-ªF·Ûò>ióȆ^ÝÕžQœ‹Çw»sÛŽâXztnÛQcݹíÅñÜîÜ–÷ÉÏÃoQDûŠ Q›4Q?ÝÓ£¸ˆØ•G‘+ÈJ\¾·½"£êv·¬±q55‘†/ìªÆªR\͹i—_À>üæê¤6<Å}E¥‰$ŠE'0ó›{P Ü—¤XAHÜ#ûm/±”ŠûŠJ¯6ÆÆËŒÇv¦Žç¦~{úÍÕ)O4hŠŸáÇ©)ëcdŽ“dŸ%^[š +YƒN:Ä&tÒáØÉÏHÍ-{QÙQiŸüÖ¦:ޤ¯¦³Z)¢`tFÀrÈ/F‰8†£¿ÍhJŸˆ“Ð|JKEÄ9…C. GÝ©&œ“™&ð†‰&‡¯¿MtP]W$ã|œšHLZ¡‰ £FjÏ"!¸$ᔿŒšöH§7–RR••4ëh¶»º WcnÙ“è§gûä÷&£f;KìÐä$ ÏŠh é=Ç- §0 Iß´wð¢ cëÌ&£•i/Æ&&ôalH¸s§ð—6öô['3Ú+É”Öħil‰%Fc‘jnÚ‡jâöá÷f¿¹‘±Ù7uh‚ü1²ÈPšÀPÓ¦$œÙ BMö±Nb)™îÙšØ]ïÙÕ;›æQsËN¿ˆ=ýÞ+#®fÑ[¯F+ÒÕP9˜jÄÄÍ8$EàÖÂ@{Ãë.±’²â¨Ö¤å°+Iµ{lHÊ hyÛé±§ß›,”/B#™,”/p+/,È{%R ™A¼À…¤Sþµ›”L\ÄJºô·&q¶ÄilHq5ç¦]~ûð{Ÿð4ü­Rò OÃw¬’h $ÜÞS’ÎlØ §áݧ¥4•ûmMÝ ±Ñ#×c7e&ynØå°¿w†Zäh^j¤eÍ ¦hĹ^aä4±ü¤Ë+ƘÛ>ÀÆC,¥KçtÖL±Lœ˜æä±!ájÌ-{1|)ŸüÖúÒ‘mtdPÃ,€¡vÌ ˜Ï èq#*Æ è„5ÂÙÓåStÒYÄ:ƒ`>3 57í]­D{ú­õ×z«a“4-ʒԺŋúzª¯¬Ëæù …nÛô*ÆBÂØÊ M”4 [£ˆIcCÂÕ˜[vzJìé÷®°éø+45ÓÉjk4Xf˜áŒ†÷-)Ö€Îí#íC™ësl©9ŸMšHM36¯ÏÖcgç³inÚé±§ß›ý¦‚¡¯mö›Š–µØoV¬*ñ¥]ENa2N.`ÁF.¬¤äœfh¢sv…ÉSÒØ”´vµ¾íS•JäbÛ~oö›ˆPßͦ—fFþÜÊYžöÜ`OËIR¬=(mžvÂRÂØ¸šš L] 5öpÍM»<öá·Ö— Y\˜Kë 5W¼R€"º’Á5gpçß:K[+Æz/—=8‘„•4t–fMD‘mñÇÒØMÕnžvùìÃïߌý'qä̳¦Åãvmk°&L2Ôô·£F?lʶpKÉ5úÖd¥‹^©;)á¹i§_Äž~suÌ E¼YÖ™X]ù§àyx­õõV¿ÞI Å ²ÏmÈ%–ÒæÊ‘&ÇFØ(bõØÉ»ÍM;ý"öô[ìäœ9Ø ª˜ƒ ‰2Ø úçÕéžçêt_çê$i¯NÒ˜aàX4öÁNÀ¹i§_Äž~suÂjWÀpÿqjÐ`m²A¬M6Ïéú´Y•yö¦¬”ÀRª^ˤ‰ÄcSìœ4vòÎJsÃ.¿€}øÍÕéf LWûkb_;‘â9¯ÝÍíZ?å Ý¤ö¦Ýµ‚½ÕP‰ïäÖÄ™¾±È]ÐØ;·AsÓN¿ˆ=ýæête”98/Äš.>MŒà¸%+È…7wÙñŽ/,%ç…X¹ÆFÞ‡Çv^ˆç¦~{ú-öîâlîãÔÄù\ýå3N“×)ËÄèb™UŒ1aï∠,¥áæ:ÒDÄØ€xì¦,ÏM;ý"öô[쨒_·)öj¢ßýbHäæéÁU1Õõ9¯§ì:Ø}¢Æ†XJÙõ9Ò¤ø‚;¯Ø+qlH¸sËN¿ˆ=ýþmbsh–³È´w¢¦"mçë'Ï#´! û´æ‘½Æ_†XI1¶vZ¡IÈžöõPyHúÎ]ܸm—_À>üÖÞéÆŠ<Œ§f"È—°ÚűòÊ`K]R¬ «v½l{#X`)ÍcÝ´_ׯV41åØuóX'±~ÅëÅ­7¾m¿ÅNÐÀ?Øt/Öôàë|ý>2k}ÐÚ­WIØ MÅîÂ~«v`)5Ý‹5ñõ26È#üVöu¯Çû÷NÒD¶Ójš›\Ì  mZ²?é•=Ƕ£é‹°”üI[“–Û¦Ø3hìä݉æ–~{ú­Ø\´üæú’#¤=?›“&Π+èí£˜æŠ—»KRü¬–mS\a%e1ùX“ö5EIR\͹i—_À>üVln vqÄæ¨aln"ÒÁØÜ…ÈþÁN´‘½àÈ“tÄæò™£&¬ÙƧØç¦~16wú½csä¥c,Ûš†#çQ§{ÇiL»$iŸú¶Åp;ÄP3Ä5=Ä`SêÆf¬MšYÌ:œ›vúEìé÷'ö›©hÁÁ~3ОíÆú2o0ÔIŠÍ{ÛÍ~XJ;ua³ßÜuc#¡ÀcïÔÍM»k ïúÉoÅæÀã°ÒoÅ~CÍè;ÖƒNü oU\®øÙÝm /¤ÀJšª¸´†õ Ä"s[cïÌnÍM;ý"öô[±¹ŠÊ§îü6i‚Ê1$°!D|lˆûÀñ³©¿ãgwÝXJÝùmÒDc#ÀᱫwVš›ö*Ž¢Àž~k}èRM?NMœv­|鎸å×ô]$i (·í%«ŸÆÂJrKIkÚúFmR=vUÓyÏM;ýöá÷f¿iC5_§æÆŽE9Š5#•´IŠq‡ö•âZ•4Íæ)͈)ˆMQÉ®±“kæ5·ìô‹ØÓï#·•æYìjÔÄc¥â“\ã œÿÏK’r rßv´ð¶‹?«—5yíŒ7,”'á¹i§_Äž~oö›ëö›ëÁ~“ì7õö›ù`¿¹ì7×ì7׃ýf>Øoêì7éÁ~s=Øo®/Ö—èuÓôL¶&ÌÖ®‚,]'ú½JÒùÿ¶o¶ÂRjz&[S"}Mؼ¾';o.¶"–¯°gõé¹Û'¿µ¾\Jc•¢5qÚºö Lv[|i#)Ù­ˆÏ¦(Ù­ û’Ýò–šv¡ÖTT¦%»•±Çvͼç†]~ûð[û4iME9ÖÄqÀªéd‡«G½gü›R Ö3ÛÁ /lSgƒ*®œ&F³”„C—Ʀ„«"…°Ë/`~ìØÏ+ÙMšè›²Î÷Ù6£º‡í`•춪í‹} +É5”ÖÄÁ¢±ÖõØîä¹i§_Äž~Õ£#ú¬­/Ô Ì°ô M¡*<»$¬Q>l{” +i*Gßš ±! Ž é;wRknÚå°¿7;ÇšÖjªõ˜fv#S’õt·Ö–vÒÎÒNb)=™¬Añ±‰Éù’öF³m;ý"öô[Õ£ˆŒäàúù85Á÷SëiG’\o’úp°·¨RVÒ¥·jk‚åKØŒµ‰cç½vqnÙé±§ß{ÿÂõƒŒ1ÖDÊõÚC0ÞÑs<Õ{’¤ÜÖfwrå\ÆJ2ß¿5ÁÙolðù{lóý{nÚé±§ßbWCä3»¢ßš¨Ê_ 5êV¢úS ¸b4|¹dúÜKÉýÖàg#,~6Ûýž›vúEìé÷Ž¥k„5f¿É^éW «?Z¼FŒ«l{C d³ß¤G‹WkÈ~SŽžûÁ~“ý&`¿Ì~³ýÖþ´9¶«§&˜ÖSð³×Zj’´bð<&ìèò%,¥´³Ñ Aò“°HwÒØÉ•°š[vø%ìé·ö/ìNÕ×o÷ãÔŒµ­ÇD•u‚ÒÙùêò Kg í욬¤®'…5m-‚ÆÖõûõØUO Ï {s·¯…}ø½;ë¼vàõJb°&Þ‚_Ík zÅ[Pì†$í1®ºí±S4–RRý¿43ˆÉ„AL¦±§Â5·ìðKØÓoÅÇ ²}~œš¥š¹4~qôW%!†/•¶»õKK[2·¨4()¶ùa¼Æ†„«1·ìðKØÓo­/(;]Û¶ª–&㩎"Õµ¹(ñÄ/MÖ€©îl\1fÝXJÉ|6Ôäˆ ›ƒî^cCÒiÍum;üöô{Ÿ¿ô~>Ǭá$^ß½?™xû—ë̘7ÎPˆ½•cëýË­3–Ø¿\çé¿Æ>ö/œÛìÑ}ú<üÞç/y©äû·¦ãE,¨™W5ìL¶èÆ4T½>Ƕ#']XJÍÕ¢ÒÄ#ËØHÀðØÙ…@š›vúEìé·Ö—¢Ît}wnË»'›$®`pE’âc÷µí椹û–Ì/hMÐD»è9æ¹i§_Äž~ïó—ÆˆWóùËÒ”ˆŽÖAbÑÂu"rOI:©mÛoˆ…„±uþ²óZ…E¯½{ hnÙÛ‘Oûô[û—»+Ÿ½Z•±ã@ýÁlq~’†¤ïŒ¦µºíîXw"Ÿ4ñ£66~ÆÛg¯žvùìÃïÍ®VQ;K¶(k¢;bä/·ø–^า$¬M¿€°£ä\XJY9QÖ¤¨À#¶ Á±‹+B4·ìô‹ØÓïãüåŠÖ.ê<-Íi<0 ¥£<Ž’öë9/;+ˆ•4wçijºGÛ;:KcìîZlÍM»üöá÷>ßàoºÅ}ë-¨‚á™ùÍ ì7¹KÒù~/ÛdšÆRêZÉ­ikKflEqÇö™›ç†]~ûð[ëKW.î+­‰Eyº«ÇJŽ!]’´b´nû•À”¬¤îCš8œ76Ò¹=vѾÒsÓÞÕÏ2°§ß{}Q÷ØÝ}€|Ø‹#…âñ‚‘c ]’×—²í]<ÝåÞRÙ+5‘žhlÏNQÿ°Ö¼¾¨{mÛ~{ú½ãc5?÷/Ô`òúê·ƒ3þêŸö/yl{ JEí_(ûj¼É.ËõØ{ÿ¢¹¹¡_Ü¿œ~ov52õìjìÀIvµÈAnbW›I’âcin{UçÏ`W«Ê›6»5Qy@lä9 MI«³¡—]~ûð{çFWìHªÎ_¨‰¦£+?™="¯{Œ+Ÿ}¸ÖŽdíceJa%]â–²&¸·„]'ÍcCÂúr«ÇäÕ¶_À>üVn4² V¿r¾H‹å=/zìàW¯hæÆ©×gŠÂ_Û/°®K©zÅ&vÆÆÁcg3ƒjnÚé±§ß{ÿ²Þ kXC‡›‹bå:T¥¤ýKmÛ>ãEXJSwnÍÀÚE,ˆb5¶‹™=7íô‹ØÓïÝ}`"Ϩ$w˜8ÚYKWA7λ알^ª¤ïZ’í5¡¸XI›ëSšhŸbl0pzìƒë“sÓN¿ˆ=ýÞñ±Âþçû|¿ òÂó}Fýy¾?%«ˆ³‡x>ÃÌ"žï—®±u¾_œ7klÖùÊœ’kiÛ‡žŠ<ßß~ovµ‚lÔ[µÔ TÓÜ(,ŸàKÃç I1,žç’O­dc%5=™¬‰òc£<Âc­ûžvùìÃo­/}ÝXôŠÖù 5±];Ž„l²YñT¿%i -ÔäùÌe¬¤!.+k"«ÉØÈjòØUçíž›vúEìé·Ö—*‘‹ÙÍÒûÅÚ'ìß±£È’° ñqV¬éÞØKg$â’–&##ŒØhüí±“¹¤57ígÿð§ßûü…'î¬W±f †r"g%¨—ÖI+’tþ2oÛ_ßf_.¬¤¦zk*øÒˆâ"]tFí¹i§_Äž~ovµ†£¬ý 5 ,ÌUÄ‹X ÏMJØc¥¢íÁöc,¥ºOT¨ÉQ,l¤»zì¾3R7Ò¶löôû·aW«‘ïYo½5HÓ’=E¥iVK4$…·+]²n;ºDËž·Þ¬™"ØmˆªXŸ1¾5hnÙé)±§ß›]­ð¤š]­ðô&ÃYåéM ´Ù%Å ’ð­—¿a)]ŠZŒÂ¾ÞÐW75Ž WcnhìW`Ÿ~‹a‰ÏšvØÖÄRvµŽú˜Xô§Y/’bi'’´ß:S ,%wí²&’ä@urë¹ioz&öô›«Ó:Ì»‚å©0º&M ÆÍŒüÅ¿Z²c{ )VŒ·ìˆ… K©('ÞTӻȳ‹Ç†„«1·ìô‹ØÓo®N…÷çShkâ$y~6qÊ<Ñßâ8…žeЦ0ì7H…ˆ¥äShkâ$ÙØ8eöØ>…öÜ´ûûØÓoQáð,ëR½Š5wpl–hÖDV° ¯1‡X¬ oʲã-ZXJfè²&ZÇ›ãG¯±!áê¦|Ø}¢ØÓo®NÙï{ê# úÛä!>µÕû&_âRSoœÌ·KØKUþ¿‡ª7Ž4‡76âð;ëäÖsÓÞE¥ØÓoþös$M]ÃmK¨˜Aiƒ’ë ²› ™!Äo3NíeC{á( SáP pÁ™­Q«»•pNXé p§¯¿M¹M¼sÄò·{BS@Vѱây[‡$÷Ôm~ZÆRJæf£&ß©ûú æî±!i»´æ–~ {ú­ãl¸FäŠ}œšè&°aÖ Ûˆé: Y[·áæpëg5Ž”ýŽda)%lZyhÆ&ÐKsì¤×1ÏD]~{ú­íÒ18ÿ¤‰ ÔÚÄ4,Aq¤£`søÈf-XÍvÊ4VR3óŸ4Á¡mlœW{ìlò?ÍMû9ÁÂ>üÖvéÖ—ƒœyÖÄÚ±61\ú£aZÆÁÙ½ªPŸÐÞÒB,¥)Îæ"6&j&„]¯>ÅcCÂÕ$s¢½¨iC`O¿¹:]iÝ­D¥Ñ’àòz´ f.¯E*¨¹:Bp´sËC,¥îV¢ÒDE‡±e}ñüUAdñ­/&‡ZƒÜú¥uõõ\Y¨-¢è”bi '–ôÄÂR*Jµ&ÅKlC^>dž„«1·ìô‹ØÓïß,˜—bDXã>í«6¥³«nÝ $óêØö+‚ÂR*Nä“&«VE›î6÷ØÉ%·š›vúEìé·‚y­®õ8ý84? p\­KœpúR¬†ë…¶mû…¶ÄBÂØ¸šš©3¯ÌÅé±!áêæãŹ=%öô[Á¼®ðµ[%PÃV Gn•Pž¥>íÆ“Š­Ž‹Ø*ÒÑ*!é8©·u«„ò,õÑÜ´Ó/bO¿7¯õ´Ü{óZß F©‹›ÚÄ ¼Ö-KŠ$E=¡í…êÄv±ß›×úÆs¯c‘ž¢±wúŠæ–~ {ú­`^ô@£¹e§_Äž~+IY‚|’âZÁìëøËµ;‰œ‡+wV†â²ºÿ…“0õê#Eìè„‹†Äµ¹Ñç …¼ ÜÃ×ß*˜×R´01¯54Ís䌭¦'¤½nI æ½˶G*‚±0¶‚y¡™È6 ”ù`lH æ­¹e§§Äž~+÷a¨#ƒ‚yÒ°õT_äèG}©grÙùo)Ùþúùó„5úÌQJ;˜šµáoYØè|xklJÈ}˜¨H£} HìÃoóª2‚§x­«ª2ú…¼°}Ž" ·áN¨%+K.[êÊ.µ¦¡îh¸ÓâÜcûsòÜ´Weöô› R¹paú85ñB·ÊâHD??Íî7cçW¯­¦ì`# VRU¶§5yy`l¼Ðyì¤lOÏ »üöá·r¦zÀj»$ML¼UÄ©²J‘¤€[¿¶½à¶«ûtë®T\FÆÆMÇÎÞ.inØå°¿Ì»Ð÷.ò?NMÄv£ƒ²å^ÙÅʜ亙D™³vdV+))lJÍúÎ÷*l¼¡M Á¼<°Ã/a~+˜‡Ì?í|œš(Xé8þ. EXÙÖk“ ·ä,²÷ØòK©ìÚSj‚4ÇØ( òØÉµ§š›vúEìé·‚yÆÒÜ´Ó/bO¿ÌËÓ&quZ“×}Ä@‘Åß_Rsgn€FW7÷°ð0;ÄL®NiRP4ûúÖZƱ!áꢧbØá—°§ß æeóT+˜—Åe½Î¥ðì[/¼ëkå0I ÏEA íñ”5–’ë*¬%£°QÕá±]õá¹i§_Äž~ÿ6{'ìXÐHýãÔÜvÊ‘¦Ýzð£kïÓÍÄ®óhÙyVM,%3±[3°æYvÇ>cCÒ¾lÍ-;ý"öô{ï Þ|S÷Þ©à[ßðd£¸?-—É){áÙWÅJ6VRV85ë}n\ÂFêáÐØ”´wbŸù>ä—°¿µ¡Oxw<ê^“XÁ˜û}u­õ¨æGjC;*ú]©ú¬™=ê^©yÖ®²®µÕúJ²¸ŽºXúeN¹ñ9˜×È3w+Ù†ò°4„¯c—ŠÔ…Þ$!Y¡"ðC{„ÆíÈ8»•lcMÄZ‰Í úæØ”puVמܷ§Äž~ïDˆÉ¬ßˉÜ•D¯¬C¿ØíTøÝ;‚u[7!fÞXJUÌžÖðú›ÖËŒÇNböôÜ´'írþä·öN9rÈÒæIƒ€\/賊`]’JØßteЇ}¨¦)°C¿ó¤A@Xþ86%\ šLÙé±§ßÊwÓ;󎲅^ŠJÖêy×è%)V¦5ÑÞ2ˆ“¥„±µ"^p‡›xE16$Œ=Uéö!î½”?ù­½S;êÒ?N ö?©úUI”¼“B²Âu°xeP·{‹%E{'i¸ÿ¹–.½÷Nš›övÔË?ýÞ¼=<$c§kú ÀD™ôŒ×y6ƒc³}RxlF;ňõ!šºp¤õ¼±9Hm5vvnÍM»Êzþä÷æíiˆ£ò HšÕl+Ù­7—ÛÖ –ž¬€ñJ+—í¯§ §]XJ;®–&Ê-„E*ÆÎæfÖܲw1höô[ëKE]à±¾PÃ5¢+JT›>Sæ8øa¢vuïœ$ëËuðÃËõ£â‡ñÜ^Ò±6~k}©jEîAk‚¤t¥Æ V¼N¬Ô8HX&šqÒ~¡÷±”š™Þ¤©qü#lY1)]ýòÜ´W1°öô[ëKYï¶ñI®/ÔóJ0¹!7‘7nIX¢P´OýK©) Êš‚õgˆ‰'jššÖuÕ¥;Öñ)16×§ù”1{»Í-uå¼[S×3ÛØhc䱋ⱞ›öfžøöÉïh·Öœµk§æZ/C+Ù­¢ å®Á–³ÖÊjްN®9ÚɈG¬$WÊY3Ö—ÝØ† ŽÝ¼³ÒÜ´Ó/bO¿7oOšgЉ5‘&Ü·RH/Bw âg‡œ´_úìKÉ)&ÖD¿aSôÐØÉ½4·ìô‹ØÓïƒw´Wû´YƒàQ‰¿¼)äã[A k@G ÃÇ© Æòµ%llÐ#÷|^’°Ç Áí$p ÖtªC’fâ\‰äQ"¡±!ájÌ-;ý"öô{ó*ˆÛ@ë 5\#†¹ÀÛsâí¹OÞë+‰va%íõE®÷É[­±õ…s{ýioÏé÷®{峄ûJk^ †½¨Ì[; Fõ]÷J~þŽº×k§&H*ÚWZ•yÂ2½€cCú®ÔN?_À>üÞu¯µ@i¸î5ãÔ¯Õ`¢.xï`âé·$ÏÜÃö‘ÀY¬¤©.k|®DFä>÷ØM‘nÏM{'P`O¿µ¾Ltõ=Î~¨áÙO<^£Â¼Ôù’„ÓœŒôÚ‹Xäâì‡ÒqöMâÙOÓÛëg¡±!a}¹Ô‡qÙ鱿¹¾ô¬ÔjñÂIs‰ÛíÂyÑzªwWÕ’O©wWÞ†}(þXJsóÂQ3À ØàB¼56%\]À³H;ýâ”Û~kÿ2?qwXÃ=Èupw¬ýÇütö“îŽušS޳Ÿò‰»Ãžý䃻Ãcû—ëàî°_̸ܿ;âükëPßj†~ôõ¢ûñIIÙ-m;ªÓ„¥äÂkª¯ ŒEùÚc»ðÁs}±Ã/bO¿µÁ³¤WqÝX¼Þ‹[g=yPb^Ùí’ö#o;ÒC…¥ä,kâécl$Fyl§`ynÚé±§ß{ÿ2X#¿÷/<¡IØ¿k·¤xâç" kÀÄ© í—×–ªJ ¬‰Ävcóz\y쬷jÏM;ý"öô{óŽ’Ó‘i²ÖÜÁÝÀâXã€9"Z—$E¼âývœŒ KÉç‰ÖDF¶°%2²56$­]d˜ ;ý"öô{÷M`|+w÷M ŸRÿù”F î6®C¼ ]|J«ù”ëw†Ü½btäyÎkcKôÓØÅg=š›vg…öôûˆ!™Í=³Í tƒ{šôŽ Lbc­›’âcìlÕêö‹ØÓo­/fã¿×jba­âÈ%XLn°€ Hv K©ïh5 ¼>ÄVpÊqìº9ç87ífäïó“ß;w­=³¤a_ž†“böåéêâžÙ»l5íÒQbÍ,¢ýËQZÚ6Ö=±ïgv€æ¦~{ú½ Q â’:‘¦â %¡0*šœ5œ1RÒŽ$6°´7l`‰¥”÷ù 5Iç/™…AÍcg?)47íò ؇ßZ_@æxòÂQC^¸&Îð•,ÝNv2uŸg²u¿@úA,¥L- ¹Ýæ™,­±^8ÎM;ý"öô{÷åé8Ç3‚4ÑŽe­Å9‰­[’"^uØ>°J¬¤ifi"®)lŠ–5;¹ƒ—æ–~{ú½s×îÕ÷Êy«ÖDîébÍèVðT_ôŒÙù˜k ˆyÚãxÌXJÎ[•&Eî©°éçÆNÎ[ÕܲÃ/aO¿»#bußæ…ƒf®¬´œ××s¤è·z‹»Ò­ÞwÚö( 3<‰·»ÒY¯þĮڵ÷ÁØ”puÌ-»<öá·ö/ HIç•Öd4ÌŠ…jùz#X´² }×jtÛ^b‘VRÒy%5˃œ…]¾Þ·Æ¦¤½ÑFöðK؇ß/\Š“_í_¤)±YÜlà]û“•ùzKB ý=ig'Pb%彡AÀÆŽºjlJЦ‘šè®Û/bO¿w_žTžëËån WÐdGÄÖ©zÏõef°´øüçVZzôåÙ9ŽÆúü¾ççú¹ݗ'kÓé÷îËÓȯø5-b\êöÙŠ­h“aÖ¢Å$ZÓ¶œ©K©:>&MFŒ‹Ø„øWU ÅÇ47íô‹ØÓo¿øDž¤ ÖD6ø:#¹9¹Ö‰Ê…S¡È9níX–]ÙÀî F ¬©kkol^Ÿ­ÇΛ¥”sÓîlÀž~ï¾<³û‹ûò\®Xl 7òN¸›©YÖ€ªßD؃ÚÌØ86®¦&ÂýÄFgµª±)áꄨ,ìò؇ßûüe‘Üf²&˜€¢žÐÑ{-ÚyQÒùK¾mïh3F¬$³YÇcÄP‡qlJ:Yß#Ùé±§ßZ_ðæºXÅ×h^‹Qt[‹¾%k¯5Ñ 'º–fõ±ZÏùkØ^°ã –ÆÖŠq£ôu½F[ÑpcWçöknÙé)±§ßÚ¿ùéêÚPÕ—‡0*”h†RIö³è²§$¨¼Þñd¯Q¨.¬¤¬ Gi&.ˆà áØÓ,Eš[vøEìÃïÍk½r$O€xG© âèµ"t”wÆŠ‘ãYI1¬õ,’=`ÆRºôw±f âìbÈ’V#æö/»üöá7×—þCß7i¸¾<ú¾ *ì_@“.ûùŽméØ¿œïºÆrýàØÇúòèû&¿€}ø­Ú›É+ÏHµ7ÔDýï:®[q¨×ûèÚŸ|Ã!}çjTªí•YM]¨•ãT½bTd–±±%ö'»xÿ¢¹i§_À>üÞç/ì!y'Ÿ¿0“¯ 7(Ù.+NLj’„=ÆL=Ø7ïõÂJªz‚[Œ ú%ufá¹i§_Äž~k}áYn^ïÕ§&"lÁŠOr¢÷ZË’´D‘#ì=£XIYoñÔd<³‰ŽÝIcSŠ«1·í¼3`~ïý 32ï½aVfí‘ñUñ—oèm0«$í_rÚö ë0¶ëLíÞû—Â^žYXöçØG÷qÎm;=%öô[ñ1t+ÈSüÉÖDöéâ¾± È&㳸A ehŸ8 &–ÒT$Ýš/'Éd4ëuDc7“ôhnÚé±§ßû|?-jƒ¦ï˜5´±%­mà0<ÚSSÂÛaÙkl•…•Ôô³&˜èÍX»8vöÚ¥¹i§_Äž~k}‰î˜ÑN}E©‰âJòfâµl}TQH¬âY·ýÂŽØKý M –&aAB®±Ó‘ €¹e‡_ž~ïó—ò¤Â‘Æùcõ‘?6?åMÕo2¬}y(=òÇÊq¾O¬Ïïçùcõ‘?VöÚôð{ç‘LíÎcÔjõ‡Þ­Êtõ[’NTî±íÈmˆ¥4•ijÍX¿faÕÍôØÎhšìU$o=ýÞëËàélñú2xB‹NÔ|nN¬¹KÒúÒ‹í"ÄJ;Œä/ [Å™»$­/óÚvúEìé÷Ñ7µny÷M`wš‰Þø†_è¶6‹$‘¤{ÛÁ'N¬¤¹O쩈¶å6kµ)’¾s'Å÷†XQè°¿^küÒoõåéêo^ ¸¥ñ—o ÜÓCR¬õU\CÅåÝŒ•´km¤‰b[c£ÆcïZÍM;ý"öô{ç'G]ÞPN¯5WU'Ð;¨É,U„¤3øåìqPi,%鶴‰*ccŸë±½£öÜ´Ó/bO¿w|,Jß«ÎŬ‰ÚìH>Äõ@Bí$)>V¦í%R‰…•Tõ¶hMŽãvú­ø ˜Vñ‰ú&P/C+¢µJšVáJ¬­”$aG‚r*ÚJ­ˆ•TÎŒ°.õ•¿,l$bylç?znÚé±§ßZ_†5ù>fMÇ©úD6ÎÀ©:ZÓß~‹Œ°bûÈŠrޱ%¿YµpÆFù‘ÇÎæ%ÐÜ´Ó/`~k}é¨Ëˆž§¦®?ðÚ'T÷+ï6IÒ¦í«4þ6V’;TXã¾p‰=…o é;wRµn;ýr?ºí·Ö—[{ͤ¾Õ·öȽ§cŸä†QÍ?$aŨZÁÂÞ´GlÓZ—Ä@MYË¿±y-ÿ;ëÝÒsÃ.¿€}ø½‰@OÉ"[&Íxê¯m\¹àJWïqâ¾2T !†•#â%;Þ’ˆ•Tõ{±¦DH_Ø(ðñØYçbžvùìÃï߆j-Çê‹"‚SÓÕy­ÜÍ ×Ê)¼½cce{´‰5–R#„5U €-*l±]•繋ҟÂ/bO¿EµMÑ–N+­4xÌ • °¾“) bIX¡‰ÞSXKM+­5eý±9þGcg¯´š›vúاß\ê-²[fj[5^jw"ž_’39ùû¹ÐùÄvf\ëüË.ò4jÚz¡66âþ»*SÛsÃ.¿€}ø-ªµ¹:ŽHYQ¥¦n†qjH¾§+ÿmoêJXw`w€4U26"NÛ)Ï »üöá÷î›À<[v‘&G©×ê]páɹ*öËDâdñz³RÙÚ¶ß"Ú ìm*\uY ÙÏÄ"‰Tc'WinÙé)±§ß\Èóƒ4ýS½GE×ùUj¼¨ÔÀ)Vʦ´³‡)±]}Ѝ֍ &c™ÓØ;r§¹i§_Äž~«o­¼#fkZ›á 4cÎS ò³{JФTPáÒÞ@jG,¥¡=¬5Awbll¤=¶k <7ìò ؇ßî›yXt©oBæYR_= žN¯åáBäÕÝ dEå'q.¥hK¥£[ª…îb75s¾`NYé p§¯¿Õ[UmæBƒ~(ÙL¥1Ч¥ïÜ\¶ís}7¥ôh37Îc›¹pÝuï±mæbn·™›÷Æž~+‡Bóµû]5]6¶Œ#ýT%éÈ¿¥m аS‰Ü\b¬‰luc#[Ýcgñå{nÚé±§ß; ¢Q¥‰v6kÓP1{áÈÿ*’°*à´§½Æñ'±’ªŠ­Éàó+æÃo{ìd&@Í »üöá÷N‡ž8ιv:47®éÐ,r©²K6@]ÍG+Ò¡çÜXJswY &RŒ…MAꬱ!ájÌ-;ý"öô{—sò8ç(ç¼ë©5SLéócî#ÿ#\7À7"ìTs³£œS ÎúÆ"ܦ±w8NsW•sªYÿä·ÒÕâ=ú ¦«Q4둤Œ0({°“±{ DEhŸˆ¨;_QS:i‚ÇOؤ쒂wsl;ý"öô[Ç=I/—^z¨Yé ‘€V@¬ñšµÝII’pbÛBûÀ‡Øò€K/=ÖDŒ„Øhé˜56%\]P"@;=%öô[éXJ“»5š$BqÞÇÖ°BHMv„Û„¥Tw‚5ÑÖØŒÍ©ÖçjŦ¹iojØÓïŽ[Ù¾×Tƒ%k®8ãÎÑÌ­^ÈäÊqºGIḕšG{‰>a%Í]üIM¹}`bð»¹øSsÓN¿€}ø­õe¢ûöT¨Äš+𹕠Ñhfâǯç~sVÛ×ÿ+iîN;EœwÙØÈÉñØn|è¹i§_À>üÖúRÎs„㊨´”p¤;wªéÄ+´O…þÊŸÒ ¨qH­á6Ž}„ã87íôË©ÛïNpá~O§èÕš7šS×$Iécn{ÑS¿¶-u%PZÓÖ[›±AÃâ±Møâ¹a—_À>üÖúÂ'þN‡Þk@´º¾r•nVŸÜÒ3ss²ÐXI;Z¤4 ‹tg½Ó¡57ÛhÓ/¶Ø>ýÞtÅÜѧ&*ßÖS¿¹èx­ÓåËX.•Û„ÝÍKé ¯¡&ÈÛŒ J}×t•Û„½©Ü&°§ß ÇMpVu¯/ÒÄk«âH?%IÇ‘¿íE\Ä\›š‹´b4ü[•à̆fZ_47ìò ؇ßG9'¶É—Ò ¨‰v/ÑØks¹]äIá¸RmgÉ ±’ŠžLÖä¨c6â;)!ÌsÓN¿€}ø­ÝÏO‡ÛbSöûwÿþ-½ýïßÒÛ?|»À«Àyo+º%¾¿½ý^ä¨kÖüRDZߺ~:˜Þþó· Æ5⣈1ß¿­½[þAÄÅïOìû·ÿãíwßÊzðû6xÁŒóË7Â!†‡Ï»Î/"ÔWp´ôZƒß(/Úûך TêçªK‚E·â’ugùÏ'G’LØû·xq¾~yýû'üW·§_ù•®û¦!ëOPúžÖê}Üþ?ÄGð¦¤ôŠÞ4§f"‘4rØ*‡Vz|»%!þ‡¶vcãjjJ$4 ›c§=6çIˆü ìÓoE^¡ë±Œœ÷ÒãuEãõe˜¯»›¨ü‘}<°ãû¼—)cÓcì´ÇæÜ¡±_}úýK~ÀœOí=4¹²ÂR­×½ë¸$Ř¿ÊQ´Ww£É€½«ëéß”qýû'üW_e] âËŽùW|•÷ü ²^.3’ærG±õ ¹®Wç{Räˆ$ÛÞO,¥ËeFÖD)µ°W=Ǿv2?ç¦]žûð[Ájzžõ³´&âʾ— 'ð½ŒÝ¶—÷B{?±’²~–¾¤òè^æ96¤Ç½À.ï}øýK¾Êš 7?üVt¥«`Ëš¨Iн”øÊè^Š¿œºÙç;±{YÑëÕõ^Øô;í±97ìò ؇߿(2¡Ï®­¯îÇã³äÆÞ*„ßž²¿ÊÊœ5Ò–qÙ·k5§/ä¸þýþ«¯òsÄ—#Ï?‡I~âXºþô±ôO}Õ#WxÄÛgUž25-ÊÕVo¸;/t•Yç…eg¯Ó¤¶íóÇØ¸šu>’]Ê=6$\¹i§_Ä>üÞ9qJÊÆxÜKMѬŠãæDóA:ïEöùÀÎcìó^tÄÏ¡žcC:ï…vy ìÃïçWý«¿å_uη’&rÄš(¯ü&~}¨Z¿®ó’Ï_õœ2*I2aïßré`yʼþýþËpGÈq{ÓˆâmqB­s¥‰Öo”ÙÚ @Tµù²ïì EŠÄ6$™°÷oko²Ž®>ɼþýþË G¼Aý¦!Z–~Îo5R ^ïÃ3èj?NM¤Æ®C©µùž7`g9%–­¼MÚk;±’bl\MMY'Æ¦ÇØnþšo؇ߛ§"a„z?ï%Sy¼fVÎçDûûöua%%H3&X-˜¿Úϱ!÷"{?±¿÷²ÈÈ™…f ï?Æ[I7+ÏóQ:îEvø*¬¤´»BSãÝ[ØÚϱ!÷b{?±¿Ÿ÷²øþ¸—õjY÷xq’êùB:ï…vù ,%Œ}ÞËkŠõ›"öõŒ<ƆtÞ‹ìýÄ>üþô»=択lú;_Qî¦ï¤ó;F;¿CÄê;æ\BkFœ—ïïç16¤Çï…ö~b~º— V{ü^P`©ñ.´Êá|—Ò^ììÛ×|üzbìǽð^ù{¹Ï±!=~/´÷ûðûy/÷Ð:mÍ­4±„ÁìÏŽÒù£¾+ih¶&˜º—»cS:ïEö~b~ú½˜'Üš†øå_éVÙj~<Çd×ï¡wƱÏßKƉ ±yžcC:/²÷ûðû—¼sè³{­ni-Éþ^”µ5À¹UéÂ)åÏïËÁÚ=’eÀÞ¿­âaæ?d\ÿþ ÿe°•W¬TÕµÐ⣭sÞ‰a—÷’Gð#šLÕ €—°Žo°È\#YìýÛê5ë2®ÿ„ÿêuEvµ7ùW¼s¬ƒòÕx0ÇóüãÔ´5CtÁ\,ec=w£_f“„c÷¨÷}am¬$¯Ò¤Hç6Ísì4÷ؘ[öüÀæÇØ¿;ïåä’£&VGÿ]buôߥ«¤ÿ.°ë/¬¤Í%§¿KÐaøï2α!=þ.´ç6?ÆþùÏÎÌ>§ ö DÆ¡ŠZ¼/YYœW9"㵪 0ÖTÊ„½ë}"iê)óú÷Oø/#ã¼"!þM#@þ?ËUWPÐu«,šà¹è:»á†Bî•€Iy¦ùÞö뽎±•5Ä-[»å{E|˜›vùìÃïMÁgô±/<ïå®nlµþÀ‘E¨ù ÷"ûõÀ^ÇØç½\rj‡’Cޱ¯±ÇÆÜ´Ó/b~?ï¥] §Hóú]Ãã-¶øËóA:ïEö뽎±Ï{iA6.,z#hìV÷ؘ›vy ìÃï_ò³Ô|Ì|öü5’’qžCUB-©.‰ß×ñ³+wìjÉ€½£ƒx㓌ëß?á¿<ÏшhˆòæCþ?KV×FV•¿Ôôk¸¾£r7¸}œ>»ÒÍËØöqb%%Õ´P<àEØozlJquw·à¸˜'öá·ª˜·nüp/õq/ãq/ã‡{{©{Ÿï%º0í{{?ÜË8ïea~ÿ’¯²ç‹Tµ=œLã D*´ Ú—|:i·ÒÔkœHØû·ùÚÝí 9®ÿ„ÿ:wí>ý_Žh„îsâ_öU^9Älø5”ÍL ýø’3ŠsŽú•E¤ õ/ÑÍKöÙN,%Œ«©‰ã>aK=dž¤Üçzm{?±¿•™Ý‘tx‰ìIW¥»k¼Esš<¤ó^h§¯ÄBâØÇ½¡e6*H<6¥ã^lï'öá÷§{é jœWÕ}/qÚí{Iz-õ½À~x_žç½TBð^ò16¥Ç½ÐÞOìÃïǽ<*²ü·¼òþ;G¿v¦È ý=}‡®ý;+²¨‰ÕTØ|cg#jnÙû‰}øýK1þì6Ï–»7ŽVéHè!ﳩ>EÛ›gË:‹Z-¬órÃfù‰ÿòlê1âË‘çˆ:›Âíç¸ý× ÷þûÇÛôÙu𷢈˜¾I8Uˆý8T‘†8ö%ë}åj?žˆ}žW‰Ã¹0 ÆØ,eûþ-w ~’yýû'ü—ç¼"ã€õM#@þôþêãùÉôÚ}Æ×@¤Ø¶æ×ɱâÀb‘»½Õ'†ö^N¬$½­©`Ü6çsì¼Û‚rnÙë‰}øÍôZêRrÍ’4‘1­ñÖËÂåù ÷B;}%VÒnXÍÊÝýt "u*"wŒIéJ}F2UD—ÇKŠd*JšqÚç;±q55‘êdlzŒöØœvùìÃï_òæ|Á{²6‹’¯èŠŠxUi`ïK9ØaŽïwI,ÕqV °÷oýj`ÿ$ãú÷Oø/ãM¼¢ ¤¼hÈ?•‰y%43aò€ä1ìÜ©Ò ZnN¬Žû¸@$Ïäɺ¡±º Ý?Ê…ÉOü—;w^±ˆ÷ÂWŽùW|¿çÕÀô{«€šõÒ¿¸ã/rME=ø¼.Äñš’ôç~R´ßõÄB:;DJõ!ÄÆžÍcSŠ«1·ííÄ>üæÎ]žgïÜ¥‰¾ó¾ìžu/{w­{]÷¬$wVó½\WнŒclJ{¡½Ø‡ß¿ä·żm¹äéR'«PA¹/ù´sŸãàñüØrÃâz½Þاó)íäOü—;w]Ñ™ž¦º«¿ì«|­.zHååñª5ÁÂq­B4žÊ½ö2‹QiJŠÏ}ûøm¼Ý)XKUÇ«Öäu8Gìú:î±)aì˜ÛöòÀ–ÇØ?ÿÏïù•9äÉ?¿UÚÌ<佫ºšZEÄŸß2wQwŠFÚ?Ê ä<ñ_îª#~¼}ñ¹«zíÖßοÚUáÏßÐåæõ|^TV¯Ûj„s{ÏŸÿøí5èÿòöýªÿÿݰﺗgÿý_þ׿ÿÝÛ÷åâëeüíü7RÿõË•·?üÇ·Éÿ@.Áü¯¹œüÃÇÛß¼lûö‡ÿüí_ý!¦ùkÐñ®œ‰.?½ _ß5 ÛÏF¿Þ;nÍ=~.ši†@_BŸµþþø”ÿ§ßÿU_„Ä/BŽ ÿÍ·ÕIð %à÷CßÛßÓ¾:”æa;Åm_›¹¶ñûd.í·}ŒóS\öŸóÝûM>%>N2&KÆOf¹¤ÌA]!y_¡D]!y_¡L]!y_¡CI]!y_¡ó]!y_¡°³®¼¯PÔHWHÞWüªöñ­þ»ã˾P¢AÕú¢¯oø¿úŸÿ‡´þ¯ÞùZýD¾úµüÄ`Et? Ö¨ùg ]uû—ƒÙuÁÏl‘‹/ê½/+sm½~Î`«KôŠ¥|åYê«çêÏl17õƒõ2kýúQùƒ-"ŠÅ[üÅ`³¥Õøçg ¶¨èGúò«Qz®¯ßÑWŸ³%N¥ñ…­|"·OOäÛˆmstoX>ýë?þ‡ÿò_ÿüÇ¿|åÊ/šö˜ëï^ÑõÁ^‘ ñšøßýÍ¿ýóß¾Þ€ÞþæOÿü§×ýÝúÏÿòŸþôOùÛÿö‡øk>='?ù—çóßåßÍ&3èúˆàv4×[/ ÿñW~äå¿õ‘߉ ‹‰®Æ‡þ÷þÓýç/?òŸwOx5ú[רŽÄ¿Ï{úb1ùëêJÒ±˜ÜÄDi¥×~l¹b‡û{k^«}JÇ5"DëŠÆ>?Ñ/ˆ0î;-¾Øæ_­µf¬ûÝ6ÏÓzÍ´ŽT‡äóQÿ³?ËÕŸóYþuç _}–)rfö'¶úó³\Áœr\‘ƒ.ô'?˯ªeôaaðŸü,s´ ÞŸ%ä_óY–+hCÖgù×í~¾ø,WÞJäÔXŽÍîñYF“Ìv~ÚÁYð“ŸåWç,ü°8øO}–+#'—ýYRþêð·|ÌÌ`!\|ëMú—Ö—ÿfO±§_³çÿÿg_—tÇìå¯][7_îzøæENr¬u¯•ÿïcåÏ©¯W©ëíxûË?ýó?æûÛu_¯Íóxiþ7,ˆïúþþcÎ^ÿåm'\9”¾ý›?þ‡zûãß¾þ oóÿüókÿËkm}ûWÙúß½ýÛ?ÿñû¢f5ŽúëÖÜoÿ/~qï# endstream endobj 499 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 481 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpKpKoPz/Rbuild25e7e2774f7ce4/DRIMSeq/vignettes/figure/SQTLplotProportions-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 500 0 R /BBox [0 0 992 494] /Resources << /XObject << /Im1 501 0 R >>/ProcSet [ /PDF ] >> /Length 33 /Filter /FlateDecode >> stream xÚ+ä2T0BC]SJÎåÒ÷Ì5TpÉç äTßê endstream endobj 501 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figure/SQTLplotProportions-2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 502 0 R /BBox [ 0 0 1008 504] /Resources << /ProcSet [/PDF/Text] /Font << /F2 503 0 R /F3 504 0 R >> /ExtGState << >> /ColorSpace << /sRGB 505 0 R >> >> /Length 48528 /Filter /FlateDecode >> stream xœœ½Ë®æJ®&6ßO‘OVÜ¥éélÀ> Ò6ŒÆ^ Ø=ðë[ü.TüYYZÇ5¨ERƒ¿–¤ˆ`ðR~üçåÇùñÿõ?ýÿøß÷ßþçÿþß~üúo•ŸÇqüØÿûß~ýW‰ÿÓ¿ÿAüïÿé îúñÿþõ¿þo?Žÿû_åǾÿ÷_þ*Ç}Áÿá/üƒÿ”ã8ãßqôøçÿù?þúño6áG?WÿÑzèZkü¼ÖÞŽŸ«Þ×ýø_~ü×ïl|Ãÿõãÿ|~ÃñóªõÇþßø ÇÏÑžßpüö¨ü¶ÿç?¾þ:kù¹Šé¿ÿúw_põŸsm~.¨çùs^Ï¢Ÿ ÚYƒŸˆŽ ŽŸ7òùïî})1`¹ÖÏcþøú!ºÎús܆þøñï¾äj?g{®7ÙyÁ}OZ»GèëŒûS:nï»Q~öžÚMSÕß•ÛäëøÔÕÿ†þû¯ÿëþãןe»ë¾bµŸÇ¶Ii÷ûM€qqþáüq? ×Ï9ôcü<ã®oœóg[?Ú¸üù£ßævÝTÿY¦©_qõ˜ñ[R~~`ÏM7¯§ýì5±÷oÚt“âÕ[rÛEì‡Ý¿þú·ÍòÒ~^çÇo)ógŸÏo9öóù- >~‹äçöÜtï¿å~:Fy~˵ë&õñ[(·]Ä~Ø¿åó‘WMk¹~®xlE·yü< ÿðb]çÏq6ì§Ý¿¥®Ë¯ 9÷½mÕúê}ßÛðx¢¶ß"ŽlÖuo¿¥.¾øýÒw{=ãúø-àlo;î{ßt¼/XÃæ»Övݤ>Þ}Édžý´û󻧸ØìœSƒÿÎ÷4Û=¤ögŒ?CÄ&Ýû3vv{~Çê½£ßt“ÚŸ1Ëdžý´ûó·ÜÛáV?~˽Q=ç™±ÒÊgÔþ[ÈÉ÷ؤ {ÿ-ýŒ7ÖØ{žÙt“Ú‹åcÃ~ÚýOöèúKßw¶Æn4¿”G,F¸³!+¾ÂçsÅöèÿ8ý¶ûµŠ­ ´›¦ª¿ÿ ϽúÔÕÿ†þãf‡W\÷3VR@òŸlåæ½ˆÖĦô^hо7ÃU¾4³Žƒ›xÑ÷«zl[¹Ù ÖkR”4Q÷š÷^üÄŠèwš×ÿýþkb]ÁÁm‡4þWÖÄ1C„ñÞóA§†‹Ž3mlîé®*1g,SXë0Àò˜Ë,)éæÕâÌ{?aløNÝ¢p5ÇNùرvkMlËöñ;gý\çó[®xÍò·€úø-”û·k º·ßRï·ñlöøÐ}¤n-ùرvÿ“5±îN¸*â4½ðùãƒMÖýqoí¹âþ:÷žO>ž‰~pÓÏš˜žk7MU÷¢÷Â"è7RWÿýúkbé;ÃK›&} ÿÉKÙï uã›§Œé{'rè÷ˆµz¬dóŠ{Ñq­çì¦Xi‚îL»Wt×冷þû7ôŸ~š®8±ä½ ’ÿì{s¿ß§Ü{ø˜ˆ•ü1bÝ÷i]Ï÷êsísû¬šzLtMbY|þNêê¿Cÿñc£+î_Ho 4þW>6÷ÛŠ§Å=úÚ93îR¼q·ë½¿ðvÌÃT¼Dñ†„–¯ìÚtójq ¼]ÂÞÛõM7)^ͱÉI»€ý´[òÂÏ4ëþ[j?¸Ô88ïVŽŽñDm¿%åë»6ÝÛo©mp™Blk»nRÛo'-öÓî?l¤ñÄâ+oÖýUz>źÈ2ž+îzËã~kV¿¶£;|k®_;)7IMÿ«¬û“øÉ‹ÿþÄþñC£ ¶—? ù/<°ýþ{ÜñÚføx¾vÎõ³ÝKäû¯7é/o¾ßx¶HaáÖWŒœòë{mºyµ8=¾cÆÞ”M7)^ͱ-?>°Ç‡î{,o•‡ ç^SÄ™úÚýÐÜ󫯵ý–”_ØkÓ½ý–v¿œáföž!6ݤ¶ß’òã{|èþ·ý¯ÐŽóóï²à ð½¹â=É{jÿ»X~}`¯M÷ÇßëîĺG·Æ–üøÀºÿôòIc|ä¦5pOA>"k\±2É+î½ÄÑ¿{ûú=t,¨¥Ý4UÝóÝ­äÞüFêê¿Cÿq:ä÷jgaÖ¦’ÿÊIÃÙø•<¼ÿMN‹3›y¯ÀKœ4ŒØƒÎ˜vOSð _ðºY~6¬©Ãû_s⨥&ö~‰6ݤpµÆ¶¼íØ»ÿ‰wžq3á{}•ôbŠu¯Np€$2\ã»?ô\ô¾J»iªºgÿ{“x?N¿‘ºúïßÐ\èŠ˜Š°8ÒÿdåS눎ÿ㙎S=ºbÝkͺ]1ðÉüÜZ.ÿ×?9^‘RR»iªºç’{ëwRWÿýúO?YWÜE‹e›üW&—{¥ oû‚}ç`Ò'œwe•˜Ãú}ö  ð¡Y8Ÿ´üž27¬)èæÕâ`%i쬻nR¸Zc[Þvì‡Ýú “WûÃÖ÷ß —ûy¾ØZÝß('jû-–ÓVcMA÷ö[bÕq¿ ‰=>t©ÛcKÞvì‡Ý¿%\ÏããïrOãuå½¹¿"íÈ{Gjÿ»H®û.¬(êÞÿ.÷W$ü¾ÂÆ4þè&µÿ],o;öÃî2¹PãÅØ£ ÞÓ’>9bÝ{‘plùЧê›÷¯«@)7IM÷ܱθ㿑—¢ž>°œXxÁº?¶˜ó'ùO¾6+¢yîýÐ ïêבñcOaÄò÷Õä‘áñ³V<8—Õ˜ô—sŽ¿“¼øïOìŸ~–.8ëÏÛGÁIþ ß”˜ÚîoÒ}[ŠÌ8#&'¦ÁX×—x­Â#x,Ø5 ŽMé¨NÄô±=Ü_ÂÝÏñ£•.嘖¶ ·ÛÊWO¬ûÑžÊ×.¬©Š» ôlzd¥28Ôº™?'.‰»¿mV›ù–¶ ·Ûúaþº|¸%ÆýçùîSJ…Óo¹|¬e·„úÙcÓJb¿û’¶ ·ÛúO¶º#\LÞFÉk#νÆãl.rw^â+q/‚â­›Ï\}/¶ï)_ºMRÓ=ßKœûûöÉ‹ÿþÄþq¢–¶K±¯Öò_™¨ïýf|¹òù0àgï'¼÷¼{¯)û…/) |°¯³Ž¥cÉ€V^JF¨ãŽ]ë‘Z5&¥²†¸ÝVÍg«þfþ­c3¿îæ×ßͯ›ù{̯¿™¿›ùu7¿þn~ÝÌÜnë?™Â¨mÐaÊkÆ2ù‚^_ðz*;]œÒä`ðï8àJûÄÅbÿ8ƒé‚‰°Î†ƒüžÊkóîN¹&ÌÀb`ÝÛÏ{«³m¿‰ñX±tm)];n=Zy)^âb5žZIðRŒ)©¬!n·•Oåc­Â®Ì8q²DU÷L<§"±™oéÚqëѺ›ß"fÊ?»lZIlæKšn·õÏO¥oÆùsa—òÛ',5tÁ¤wÞää©\µ†¿Kº“œôƯûC^Ï qñߟØ?.@tÁb˜á ÿ•H'€€³˜¬ƶtl8ÝfTF9wìZÔª1)•5Äí¶j'«1mgij+eåÞ™Äùǵý„”k º·_çJJìunªIl?CREà‡Ñÿd.§¾Áøx«5µ< æà|.ØŸÏ‚uÿèÿ?çòxÌ—u'Iè_5”íH\ü÷'ösù®í¶ëCÛÿÿçsg|uË1}Þ™œ+b¹GAld$KÜ/À(-–õ¢âÏ0Êø¹Ö#_صéæÕâô8„3ö¨»nR¼šcKn»ˆý°›«x÷k­ý§ÜtÖv?÷¾Sƒ‘Ø~‡¥kÇ­Gëö#â³~k©ÔJbû’Òáv[?Ì¿?M kó5qB™æã¬ÉæWo@l¾¤kÇ­Gënþˆ¾Ío›V»ù”Ê<âv[?Ìw°õÏ'‰_Tÿ5;Ö¢þkwO¬ù4H¾>°kÓ½ýŠ ßA¯±i&±ý Ii“p&ÿùCᛂså¯íO|jCúÜ5¼ä7Šq¡ŽiÝIêË0âx­þÉîOìsvm·]Úþ…åÕ(ñ5^ øØðî¯[oƒûôÖ¾n£Ö)+‰û9©ÓÒû¹|p" —’qOss7Ǧ•µbLKËŽ+»Ö?®O¨Í‹b“3©ÍÑíû ¿ù³®{“y/¤;Iý×ý¹_šßI-¢?°\ŸìÚn»>´½¨Ë1þü—¹ÿä˜áàûÆ—ìkçœqœ1ï'²í"5(v5øGõ5kP~OëH¬)(äÕâÌ0'±~7ëvÅæØ’Ë.b?쎿üŸ¯n-‘ѱFtj&§Ã^Ê¥Jeï…|¥©»Ø›cK.»ˆý°›¿ðOÏá<±g~—6F(“u?ê ë ¸CV˜GÂ/ìUS g§q׳â¥dÐ#\‰Sk->Nò˜’Òá6[õÂþ!4ç¾5÷b8΄î{Ö9IšsßÓïÿIVá]ŽÐ—Uâ}…[ŸòÈ[L‘‰%EݼZ®˜…½ÿñ'—nR¼šcKnK‰ý°›¶?mobÛW˜íÏ&o?czô‡¹?é½í¶ŠvKa‘xþlbðö Ç?Œ´>6))­n³õãmûð…ÿ€#y^|[ø¶%gþìá—,<{â™\©H÷;2ƒbݓꪼ3þBXQÃÁ«ÉéØÁ‹À¯Ô ŠWklÉe—°»Ýü…:`ŒÃOlm>q_AÓóD®ë‰¬Î©KÄ/ᆫSRD÷GâtZŒˆÁnMä‰Q+ ^Š1-¥5Âm¶î¶Ï Ò{åtõ˜ak_áâüÚ9'ÜqŒÔý=‹,Í:Maå/ý‘ã(8±¢ ›W‹3â —XxÑR7(^­±%—]ÂîvëÏö‡IñǶà4E™bãÍ™1'µ…Ÿˆ±¾_߯tQˆ-¾¿s<ò߄ĊÞ¥'§Çß-±-æ³ÔÝìÿ̱%—]Âîv¿Mtý@8ØuÙ¯$F,zku Ì5á{Œ2ÕC­/„zY~…w.± ¨Ú_ر‡C”ÈûψØy(&ñKVÜãZJ…Û ~›àÆmÓU¶/¥øâ{¾”s2v[ Qù¥ŒB WO)¢ÎÚóèKiþ<Æá[h­ù¥ô˜’Òá6[ß&¸^ð]>Q'âkc Â-²ÖïäMDnEÁB÷42ÜkJ±Ï4Ž´òR2*R:„Ã銵‚à¥SRZ#ÜfëÛœÖï?ó=sÞë!»gDÿÜ·Õ+¾_ýþ»)‚÷ôˆ{FFÜÆQ…3­¿ô÷pÂA@ÜuÖ ‚ÎyŽ))­îÃÖ·9-`ïwn⯱â¦ôð0ât7N¹r"IðØ:>³–†à2NÄÌ\1äiƒÚ¤µ{qã1%¥5Äí¶¾Mc½3ž¾æ<–fÿôŠMzÃ\Õ{cànNe=’–ë#ð+*g³ä`Z2¶bƲǶ\v »Ûý6§µÁôà '˜_;gÄ‘IÔ¨aõGT|¸pFN _åp«)ŸØik*K“ïvbkœS¥îêc¬[rÙEì‡Ý¯sZœ–w¶ê€+9W|˜Ú©0Y8ÛýúÆ·Á'd)NÆ‘Øæ624G§Ù‹Z·¹cJJk„Ûl}Ûî77Vâ g¡_;u¯i)mÄ=í•û|RøÜß‘5RÞãh¬©–aNæTD2©»8Ü=Ç–\v »ÛýÝDwŽýd\ŒƒÇ¤³b/ˆ’2÷ ËýéÅaLXüFGêØ=•­)œ‰<7£ñ/L\ ­„'ºSRZ܇­¯ÝmŽ˻7Õayd,„m3Éü~À#¡òžÄbuf¾å=ÅÝ;KKq,`Ü¥íIuˆ¹˜ÂõøzZ+^:•è)­n³õu¢‹Š+ôè/%Æ wSo+È è E`F&ô8C=Rzâ­îô«§‰^ŒŽ…Žp-\UÖ ‚—½FÒá6[ßç6T» „Në’s†O¢ líà q㣒Ð(¦8ÿ {) Ÿôg;íÝhž­ÄÁi[bk@I÷ðaNŽ-¹ìv·ûmn›ôú•{tœªN"²9&ý€á<â`;ƒ‡«¡œÌŸ”<‹ÀŠêžë“Ó⃓Xd¨¤îÌ`ɱ%—]Âîv¿:&ïíñ`H°¢-“SãÌbö Ù÷çx҇<¢`ÅHwäÙš*޶LêÅ {q]IÕ$èÄÄÈ’Ú(?Œ~õJvd ÔlùÚ3Ì çvå{)iX®’€§¦#gÐÒSÇüÀ‘€V^JAÆÁd­Í_H))­n³õÕ+yƒÃ…{ßLíÚ’ƒ°÷H‹œÉ`ÆG}°¦IózdþI9#ÇU= &9ó‰=`a݇×#9¶ä²KØÝîw¯dÃB¡ý_cá`‡™Ž‡ßáY¬Uý‡'b’®XÛG"SÌ@\¹q=¾åÖÚ=]xLIip›­ßy%ÛÁدƒ…ax‘ÝQã‰ÏaÜhRö3味8±¢ ÛW#U3´± Cë&e¯$>6’Ó.cw»ß½’K„ÓiAf\áyš¬y2Æ>5¥–®ÆÙRŠ‚&Æ‘8í3Ó›pQ8¯Z+ ^Š1-¥5Âm¶¾z%O<$‘KrpšœGeã<^ŠÛq^ UÍÜqÅigʯÂÌbMŸ±8å:Û4hݤpµÆ¶œv ûa÷ë,Wq¦_íÊ…rrxäy¿ƒGé‘is¿4ã2…›¬å­åfWcEA7¯§Ä *±<‡µîÃk¯[rÙ%ìn÷ûñ•øÚ9È¢ˆc®x–ïÛY ÄbN#Å#²ËCÞáÐ6Ötû°œÑñ‰EÎ@êΜ‚[rÙ%ìn÷ûD‡Âql\4Ñ‘1y6>á_ˆ­»ç§2EäìÕSЇÌ8ëF3zΉSÙH­¹2ð˜-gÚ’¸ÍÖ÷ã7¤Æ9Ì¡?›9'=Uæ"þ'=óbñÛ+§®…$@Ë#±`&ÖÔÊ©ËÔ´M,’ûR÷ð.Ç–\vûa÷ëD'tm"¾©u?H 98cy€¼Á5Ä–¶ð£Gâ‰"-ãà²Öâ⪓RYCÜnëëDwàä2ÜšçÄP)N9OÔò\q„=E`øï´¥xù#Q\:ÕŒ#Æá÷·ÖÃg=SRZ#ÜfëëÜv¡ja¸ÌTsQ ¤ÆÍ‹_»ƒyލKJÏÊ…Zœ–Î'¥ÎÄéu†x™„»ßEÄeB+ ^Š1-¥5Âm¶¾Ím3|)’.#š3@Þà›‹s®û• 'M7ÅàˆÁ‚¥’c{•XQϺӜŠ:œÆb^LÝ9oæØ’Ë.aw»ßOÜXSï^&5U 3“"2v† k@Q<CÕ¿”ã‹—XQ%ë~™s„éÆx¬›¯æØ–Ë.aw»ßOÜVÜî­¦[rpàTø¹yØù-Å—t’Çbo$ÖÔSÓÍ&ǃ©ûH×…Ç–\vûa÷»wG>ŠÜßÈA âDÄuœ”8"AßÕBÀª¤¨"f‰éï‰ÿ†¬ux_ï1%¥5Âm¶¾Ÿ¼],u2ãÿµsV¼ô½ÆëŠyÔ¨ÎEbeuÉ “XQÓZrœaÆvT°îžEÕ<6å¶‹Ø»_½“§ÎÊQuæaL„6qu„ûŸ7£s°@)*’â@ß8î§ËQŒ,q÷gp-k%ñK\=¥4O¸ÍÖwï$²Oä€mŒ+ö‹qzå®Xð0êRwô#vœJKŠý™q$ Õ—ž¨cu‰;'½šÐzÎÇç‰1-¥5Âm¶¾ÃM®‚c©öµ1:Ê£uœš‡s8ÎÁàé Ác² ±M”œÔ '"W„fÔXñ‡ãFk-ŽÑó˜’Òá6[¿õNÔV€prJDE…‡0æû]¨¬ß§©ôNöGÎÒÜÆŠÊasî·£Îĸc­›”½“¨}.9í2v·ûýä dQzÚýÌ©ñùi'ÂÎê…¸8ïºßfQ>‹‘,g=vcEŸ‡&ç×¢±'*;[7)^ͱ-—]Âîv¿Ïmˆ’:»ÞÌ Ý@ÔÔɇ.WE¼–¥å2ŽDŠ®’7Ë8&¨@8sÂ1%¥5Âm¶¾Ng…yZÏa›<4‹ÔÇŽŒ¨õ´‡ÜE¸÷,)íˆ*ŽÄsØ&Í„ãqš´>‡mSRZ#ÜfëûtÆü˜§RXĤq¿ÎRãcvQ¢Úð¬XŠÝ¼p"ž=b ß8|*­µ{#ã1)•5Äí¶¾Ï`HðqdõØqÈÕÏ¢\ŒûÎö³*çuꙊ-LMiGÔªp]¹@SßE1P•Ƹ†ï©´¶üÚjLIEØ·ÙúHr…Oé:Yµ,áb9*&ãtnSL.e˜âtƒäø”7VíÔ•«/3V|`„ŒdüTLÂ1*Q.RÙHÜnðë4ð@ü‡Î£ÌibmFe -ªoöÑ|ëØ—pOœÑ:‰%EݼZ40¶®˜¬›¯æØ–ËRaw»_ç´Øh1£g›2®øÈµ(9ŠÕG”íðOÀùžp’ÒK«à.­>Ü`EŒ… ¦ÄÝë‹«[+ ^:µú€”Ö·Ùú¾Ec¡¸Þ³˜«9ƒ£ÿsŸÜ]ñéõK“^”Ž“œŒ5ÕýGNN‹Ibsœº«cœrlÉe±v¿\‡ …èKâ#¬#6‚ #ä£^¦Ò°‘´¼c“i¬¨çObΈC¸Äöx±Rw÷{—cK.»„Ýí~ŸÓª®oy}æ¬Ð“RŸN'PÓg É<É3„õ‘×§l d`MgRÄ&ͺ»Ý9¶ä²+³·»¿‹&‰š—ã¸Ä¸àÔ‰xŽû–\Èü‰pû]'áH’¨®BiÃêG8ç“ñ/Ɖb9ÄpêH+ ÇÜcZJó„Ûl}Ÿà&j¬I'ŠLÄþ)uQx9vVgÁ©èbÃH£Ìåiœˆ#«Ñ‘1PU¸Ø‘_ÖJ‚Z1¦¥°Æ¸ÍÖoHªë°1XE!‚94c±ÄO»L9„$ ,G6½¡$Χ´KL/x½¥—DÆ””Ò á6sßwi2ÚÉcSn»ˆý°û»@ÈÚubõµ1&bØ¢@/‚>® õÁ‘Ç Æ‘Èƒ13p.k ­µyIê1%í %n³õ=> p%»ôg3g!?"—±0+ªøGx-)Æp ×.åÈ£L¬¨é©:9ðû$~ŸÔÝ}‚•cK.»„Ýí~„DÕ¼¸ÛKd¬¸CQ q_q#WE‘;¸Á KTIΈ1½7îqãzÌêÖÚ å1%¥5Äí¶¾B¢ÿ*:0£ÅÑuÙ*{slœ†§z"ë'\µ‹A†g1Å)çdÃcÉ/æÎ +ªºOYr Šæ{ hŽuY ÂcK.»„Ýí~wD’Ü8ÏijÆ,4Dw¿Ð‹|fæEFÉÆ9SŠŠáÆumää21A8ÂÅ´tX+ Ï|£¤ôP,9p›­ïÓ™š€uû?’3X㩌ˆ˜©˜jZ1ÅÉg°M°äÈ‘L¬¨ü<$u¿[ãX)uW;娒Ë.aw»ßc&õœÌ™Hó¸ k$±¡tTï¦ðð\5–$﮿¬¨žÓ€9ÈIlC„u7‡væØ’Ë.aw»¿›è"ªé\vÒ%çD v´%XhJ‰&¬·Ey¢C ¶äÑVÆŠZ~è’ô0c™fÝ#§|-¹ìv·ûõ”-JyÊï¢Ò#æ4:KOzZ:©[Uöt´Þë!{y. Ñö(°¦²AràvHìAGêå6˜éh=ÓËs>vûa÷û)[‹‡œ ê¾6j+àTì 7»:L¶%‚§`¨Æ`éBázá–ªØ÷§·kC}?4s%û>kÍm¡Ç””Ö·Ùú~°†Þ“{° ú®ævàì8?‚E’/)Œ#±‹¡ âB­[°Ç””Ö·Ùú,ÂŒ¢Qœß•¬a»²‘nMQ©[ÙJ¤ÚÁl&˳M7°¢JÈ™Ãz×ÂÞ;ç¨T!ݤx5Ƕ\v »Ûý]f¶6F33³µ9êÈ’.ð-Ì¡.§ÜàãPVb/¹UëIqa¬¨'ÓÕf«ËLVë~2]=¶ä²KØÝî÷­òíõíùÚ9L¾àɱ%—]Âîv¿FŒ°@\++CFÌ91Õ°´\+,YÆÊs¢` ÓYÎ4cM­ 1‡¤1%õÉp¹>m}éC¹|Uqb`V¬“Jø*¼ª±•nÇDf饎BÀ]ªª“}3:‹AœªÏÙjjm~º=¦¤´F¸ÍÖ׈‘†Ú”«:sÁ œªG;Ü~ @~A›ê~ŠÀð­«¥¤ˆN4ŽDuæ‚…½Y‰Ãi¼µÎ\ð˜’Òá6[ß#F*.œn¸a£P"ÿæpÊÁ=Œí@{K'ÌŽÄ´Ý ;‡Œ6kíö¡{LIip›­ï#ˆúGu•¢ˆq ⥠ kE,U)l¢Xß×îñÈÒh¬¨,˜iNTšj‰JS#u“âÕ[rÙ%ì‡ÝïÓÙ…€ÎyÚ{lÎÂPÔCWç ‹!‹÷ÊC¬¸÷Jõ|ä !žÆ’šY:9 Naç¢Ó‡ºIñjõ%¢Ü–ûa÷ûtv"ÆþDôú×ι0ó0·\l50qú*ÊTœ’YÎiTXS+ŸV620Jê&ÅéŒcKn»ˆý°û}:kŠëp4¤ŒjdGIÅ;®¡YÈÑìjéB¢­pëéÂKÉ`T£pŒw”Ö'RcJJk„Ûlýn:c~¬”ÍÀ—gÄ÷ÇñB8º»ÏQÌåtÍßk:ãHœNP6c¡X q'¾ðÒJÂÓÙ=¦¥E¹¼Àm¶¾Ogé=º4‘¬¦Àò-4{Á‰Ç^«Î2¬”6Vîm3:ý"Î=Öæp'))­éö§¤­¯ÓY­¬gw8Y>9…i»Íµð" °v×Ês¼`®¥9Ï2uxÃlοž±{ÖMŠWslËi—±»ÝßÍm±¿€&Æy`>à¦>Ñ;f¡£ˆðÜv¯ß,Å2Ï8ÔêK/4 ƸÅWj]Yk^cZJó„Ûl}Û¢3Âîà1oa¿ …ñ9ÏW#J¤ƒ'f tð˜È¯†xûÃwÁZó«á1%íƒçÃÖ÷t5^?Q8ækç [aÔÙ‡5hTƒ_Æø“,Ÿ±NJ¬¨êÅXrÐþ#±1û<º¯ÇrlÉe—°»ÝïYרjŠ'ZUá͹âŸÈF]“•¿|.DÁ} šjÊ/¦Ø+*Þ’ƒ±NƬûÈÓ7m¹ìv·û½¢§ˆå³P3`‡ôg¨ýÁÍØr™NK’.‘ŽÄ²݌ɲºžÏ•ZG&ÀžB!mбn³õ=Cíò)»ºO'g±®ëá¾HQù>b7NS¸µ­r(yãQXQÙƒ:9ð 'uê·>ǦÜvûa÷û©B—7¤ØMu†2ÓÑØÉü¸!;ƒ¨-eã=áH¤Ò ÌÂÆaãe­é†ô˜’Vן¶~›]qô|>ùØ(|z¿‘‘]˜œÇJLµÅ°êømÈ‘pe( (æµdÀÓ/àG¿ô’à¥VRDÜnî{ÉãK=X[(s;ÎT×?Ž=·°£ê¹¥(ˆ.œˆ'· å§ìAjÝr 9¦¤´F¸ÝÖï°+¨4¥%gÅÜéÐ…k÷w:²¥UQ³Zë(¹ŸröZ5VTF'g 4¾±¥ñ­»{n˱%—]Âîv¿)L)JHrðåE©œäO7…‘‚'ŠÙ¦ŸäÄŠJ¯HrNœØ†‚ÐÖݲ`´Ç–\v »Ûý'Â2Um¸GMrPÇ;¨Ø<ß•8*?XðŠ§ Jߧ䕾O`“O“qPŠ9± ¹—Öݳ›cƒ“vu¶ Øíþnzcÿ™cåôv2n`ªYب´ÕYDxz;¯”¢T’qK=ÜŽ•ÓÛªì8‡† ÖÚ‹î1%¥5Âm¶~7½M®Ã}Ro EÇ3´90¡ÄÕáÓ‡˜¢°è“¼±nµ°¢Î<¯7 Æˆµîã)¯¥±%·]Ä~Øý:½-L„OÔ®¼‘}‹˜\ÕyBvQ)d¤s³q$Ê“bMÜ)ÆÁ›b­¬ë1)•5Äí¶¾OoðøžY…É tðN1âoéKÄ/Ï„ÃR¶NDÖ_ã¶J p*v+jS–jŘ–Âã6[¿KÅŽÍÒá,C3ð B/™È‡Àµ£ì NX83³10Æ‘8œe(Æä3JÜDési%ñKD˜¯¤°Æ¸ÍÖ÷ Ô ŽSœ¡ï¢9-"a#8ãäÖ(㸚)å‘W:ш5UsdâC{`^´î#çMM¹í"öÃîWOd?\ëBUr“3°«ïŒZŒYrÁwˆ£¿™NþH9Z$VTw­Üä`K™Xúi­ûñãzlÉe—°»Ý¯žÈY(«ÞWÉÑα9Á»ÊΆHÓKÄ2‡|!ŸNðv:ÁwØo9à‹]çp‚/ö™Ò¥#sì܇*ÁØÝîWO$ó¸÷÷ã©H‡LöˆO‡Óbb B. ¦™[z!%G8O‡{1ÐòÐ8 ³Öê§ÂcJJk„Ûl}÷Db†ßà'’Œé(ÜpéÐG}â3p>.ìëKQ2Å8#K ˆÑð¾×°¿Ö–u4¦¤´F¸ÍÖwOä…r»¹5;Ê ®Ã¥ÀJ¸§c÷7ôD]IäFÔ œD‡m¦µæ.ÔcR*kˆÛm}÷D^>ÿÖ49ˆg« •°â•9yÎ÷¯f^kƒá´]r”6N¬¨LmM 0'9N©;K7çØ”Û.b?ì~÷D6U[Ô*ÄŒ«‰p¢:*I ᣳ6SºT 8¿5—–düráûj­Å«))­n³õÝ WCxvRaΉ ¶L¾*äe±4äé&§HÊ/œñ+*f“ƒ²È‰EYäÔ=üórlÉe—°»Ý߃,Ûf›¡jçÓ6{D6ûÞ6;Š3fÛì¨á˜m³Mlñýåi›mœz«]Ÿm³=¦¤ëi›ýaëwµ/ÄÎ)ÙÜ Ÿ×ƒ¡€pÃÄÇj‰À=­ˆ²¡SÆ‘¨Þªš²ýÆ¡Š µYÿHcnOzãv[ßke¹ÍárÆd°ìéž4K 3k×µHO÷¤¹X–˜‰ÚÀ¹AÍárÆîI§pÍ·ÖŒþ÷˜’º' p›­ï!ý…‡WH‹ûÚ9H_/¡š}È£8§)n»˜÷nù@ËrcEUçÛ'§Ðé(,:§¦îÃÏlŽ-¹ì*vX®M÷›gÜõ8}²–[†ë¯²ˆHŸáo1)n¬ KõJ^Ù¬’XSÛ6LÖáöÀ‚Óº\zlÉm±v¿ïÛP›>þäî0ÚÔ~ÍÎz;°ŸHÔ%®C÷U¨¦l)Š.G¢9€ËŒ¾ ã >áÒZ²"£Æ”´©÷oŸ¶¾Og;Þ²(¤9“ÈÀ9PœD†%ŠSÎÂ9’åØì'VT{ŠBŠSé´¶Ði)Ý%‹BzlÉe—°»Ýß²$‡­’‡lÁ@½ÛR£qiƒ±Xê|NØjM);_ G"w¡f`nré­µf}n))­n³õ=] •Ç÷tµ¥Š;˜––jñ`ºž L<+I+– ‰x¦318- §„´ë ù%®‘RZ“inÇúMgƒç™=?ýæ°ž4káŸ÷ÈY¦p_ ÛÕYÎŽzÆŠê9˜ÃªÒƲà´u?õ¨=¶ä²KØÝî÷¹ ñ³dm1*ç(.È+g¯‰Zkõ™ÛpFkéϽq$²dƒãâܸ8{A븞¹ cZ kŒÛl}÷<.Ú̃ 3 Ùût!t3†½‹°;qKb%œˆ<Â0ƒÕ…k¬ L­ù™ñ˜’Òâv[¿;USi»Íéô!Hꎢ’P±£d„œ:wMœŽÒÅê! í† %2•Hyò o•åŒ 0VTói~rj¸[÷fÝ%óâ<¶ä²KØÝîï ¯‚´9ïdÌÁÆ9ºÈŒÈÁFÏ(J|¯¦Dy;u/œ,?qa¬©æýLr*2ìŒÅþ9u—ÌÎóØ’Ë.b?ìþnnh¡¶›fðhœÇ$mË=ÒSz©\ãšIdÛM3©lœŒÖÚüTxLIip›­ïsÛùi†æ¶m:ÔôÑ$ûÞd ä¨õ‰4±Ímõ‰4޳—´nsÛ6ÙÙÍmç,2Ò™ó¤`&3éѳÈaÖKSœ¾ƒ: ê;ZŠ\Æ eD¹¾…=†ˆ;ØbˆZ3†ÉcJJk„Ûl}qžt×|}9‹:Öð;1¢ûop0÷Áeݯ®îxÕýn¨"`w³ë¡”úèÀ#\Ãâ]Z›ý™SÒ¢~à6[¿‹aœLT&ƒß×ÁjÌÍGe×á­Ô1RZzƒ4ÙÂÊ t¡n BKZÇõ¤±’3¥²æð\Úú]癋…ð§OÒĹð u„=ŹO‹7ãÂ~¨£ ªM7Ä{¸ö´'ôCµ| ûŒ "NÇ›±âX]À{ÍRªõ’pJ;SJƒˆÛÍ}OÀFÐ J²ªX‘9Ø+D’ôäýŒlÊ‚‰FT˜0Ã#3R~çfK¬©žÍ®Íi85¶âàź«c.rlÉe±v¿'`£Þßu<±É@nE$Lß›ö ÇuÑz° #IBÒ`\áDOOl0N„;‘p!­gæchLKaq›­ßΪøŽ–…³jSŸ’(bÅ‚‚%®Ê)â×_,œE‡¤K[ú¾ª©œè_hú”Xk·ÄcJJk„Ûl}͹ŽÓá„=3%Ôœ‹ý8x‹ªO¦ŠÂ}õÍ|ä ~)cEe7†ä  ±É–Ö=3ÓcKn»ˆý°û»ì[_ŸÂYƒ…)Xܱ£~`U‰«*7¸5UÒ‚)LÆu•C®Oá¬odDL7à‚”V¼cZJk„Ûlý®pV¸l»3ŸÌŸ(Mue#¯ köIÒZÜL[Š\^ãHtç<™¿šqø£Yku)©=Ñ«Úú^É`ërf«'4£uu¼´¨7O×'gåDFš¥ÈU3ŽùßWV ƒ}Óˆ[ДV¼t¨&o?Ò<á6[ß&±q¡ÞŽƒè&NÎâc`¤5bKÏ-RX¨2v4å=±¢¦¿3ÉÜõ ÛY|Eº³eŽ-¹ìv·û}O†¯pD‡]Žê!NQЪÓÏQKOŠû&FjXŽ8†ÄŠ:|pdÎÁäcaï Ì5S7)^ͱ-§]Æîv¿ïÉ *™^gLFÔ8芮gaÄruHp÷„B–¢„‰q ¨õ—wz<×?Œ[¨¤%­$|(×WJižp›­ï{2Oß÷dd¤¿±å®«œOc5ïžÆ¾cëeó72…ió7C{«ëiŸf­þÆ–;6Y#Üfë{¤£ªœ¹}6ç‚k¶6w@®bü¤xØÅš–Ÿn,¬¨37Ñæ¬¸ƶ7ºIñjŽm¹ìv·ûÝßÈÆÆË™¼f`eg <ƒè–¶äûóNþÄúÃÒK À] ¹Ï~Ÿ—òÄ¡l³µŽ< Ö˜’ºïò:>mýÎߨ¹½µt8j~ï oÄJàb-'f ’²Ï+ ÊgñºÑúÅkŽf¥8(˜‘Xdå¥îñ4+ÓØ’Ë.b?ìþ®ÁZc8Úé_(ºŽD)«ÈîïG<ëE+X6Èr|¸+ê°›Ë=¸ã)wôè&Å«9¶å´ËØÝî÷Ý_††Å_;§0ªþd-:¼Ñ±ÉŠˆì‘1n±;ÎGŽ"=ÆšÊöÈætdÒ«þ™ºIyÓ†Zu”Ë.a?ìþ¶${ߨ¤xrPÀµé\Œ½á¼øÏÈ­ãBã*ËzZkª¹èDrp X¤a§îââ39¶ä²‹Ø»_ãDâ­gÍdÕG–ÑÓŒÁ1Ä…ƒ,¸X(URÖIŽÄðZÙ uÇ.áÒú4ט”Êâv[ß'ºCÇûjmh'#¼£ ¤5‰«J„7·Kƒ¥–vÄ×lÐ܇­»Üû•8æóJks)é¡-^½>mýî`­ÀÕׯ·a™3ŸŒP1˜ÔÛIT§Š|ωµÒzÒAYÐRtRNÄ“ *Ó9‰›Ìô¤Öù$‚rLIe q»­ïgiMÕtÜ]Œ“]7*¼´Qjˆ`èËsJºtû#±žä2P¶Ý8DZëÈu¶Æ”´©¶p›­ï Õà+YB‘ŽæŒÃŸâÎV[.æxšâ7îü”³ôŸ±¤z¦Ô%g±Ø#±}ñ3Nݤx5Ƕ\–.Š|ì~¯'‚’Ý1å ×çb·WÔœ·ë´¡½¨_¸ºsº•ž÷ÄŠ:3jÝøEíÈ+·nR¼šc[.»„Ýíþ®¡Zã¦îx:ª5nF owÑ¡Å-«Ó¬èx,-¶ë5±¦µ›sàÎ{ –”u“¢nŽm¹º) »ÛýÅßñIzꉈ¡.i¥×Õ?mÆÒuï®¶ðå“ô|* ˜Øº«O†¿qê®F­[w5Ž))­n³õ5Š¡nĵ|pmÆIï"º„]–íQˆèÛºP_Ò‡_‰X^E›1éÓ$GÁÖš'ÅSRZ#Üfë{?k2vïEÍîõq 8œ.W{Ú§¾`SųVâHd»3Ð7Ù¸Š?ª´VoA=¦¤´F¸ÍÖ÷(~äµ±pïרc³Q—Šo”ð˜S†¯Î§ƒgÈÆõ§0/%¯p¥ã¤ud:i)Ín³õm:‹Î”¾EÅ@ýÉèTÉŽ(°í¾† ”pµ[Z‘œ‰â¢«·.VVxü8&¶¸[ßËc¡Ãо6Fgüç6^¨õŸUD`øg¼¥ÈÏNDó“jRÈŒ+èè-­ÅOªÇ¤TÖ·ÛúîlD¨«6…¸˜ƒ†n(úÑA] añW!µi¤¡5‰ݼZœ‚îÑÆ¢\ê.ž;rlÉe—°»Ýß9£rËE°ˆùGT}‹?L,s×Å÷"øèŠ…*ô/¶™¸¡ø)/‚Å@5ã –¹ÒZr¬1%¥5Âm¶~«ÏJíÓiÕK'd¨Ó&÷{g¤ÛøåíZ±´ ×O8ËùdfLœ¾7˜p)à{9­šcJJkˆÛmýn3ü8Ó§cã#À°°COäCÔŠå}˜ªj.†3†ûÐXQYX<9 =”û¶î‘…Å=¶å²KØÝîo7dìê2ž ;»4nŽŠKœ(\B²s¦GAÆ‘˜O6,"Ü@iiÙcZcR*kˆÛm}܇sw!èøkc0¶pb©¹“ˆ yÜe!ÔÞÒ®k­&Q󭃞…;âf­‡=¦¤´F¸ÍÖ÷hìN”/ùzÙ,C~a˜ÀE„£5Æ•R¤\‚Zy)(a"ÜI6µ’à¥ÓRš'Üfë»KAçg­1ÏTc€:KÇŶá^{ŸY´&v÷æÃRÔ7ŽD­1‘rÆá™²Ö,Zã1%¥5Âm¶~[~Ÿióó©¾ÏÔù†ø³;ÒöÚz¦—åóGJ¯Øë‚Zy)ì£CÜbkgj]™¿¦1-¥yÂm¶¾|´ÁúÔÓÉÓÉÁß?¨“Õ²Ã/Ñ&œ·5ëëÌv²¶ä'2øŒ•%v’ƒHÜÄ"7uw¯ºrlÉe—°»ÝïÑK…ú²mjvªÈ£¡Áö^qÿ@€*îTERÅ}[Å}2T9Ÿ85F£Ö­mÇ””Ö¨mÚfëkôÇý•ÑþWÞÉih¹pxb)Wãþ·;Ö{.x-SŽɉU}J“œ‚¶ŠÆ"µ'uv½æØ’Ë.aw»ß£?J,¸˜gþµ1ž¡'ü]E5õ›Æiàá°O‘q$¦Ã¦Ì`U@á:£F¨µ?1%SRZ#Üfë{ôGÃj9ÃóÍ@˜}„fLGäGÐÆ*[x~„tÄ ]R,rŒ#‘áùfÐRá;­Qk†ç{LI›öõø´õ»è‹O€â“ƒýBÄbDU„‚)ªq.SŽA‚±ä§‹\{º˜ätdÇéb“ñ#ì¨1ë&å8ÛrÚeìn÷{(€£Î’Òú“Ã…ç…j§Qÿ qF3ÂmD9¸ãgZ‰5<«'§;pä`ý'ŽHws4hŽÝ”rÔ»Ûý~B†žzÑÈ\½à’Ã4¹‰p¶ÊþuNgQ>Ŋ⦖_ñ…H¬¨îB ÉAAýÄ2[κó€ Ç–\v »ÛýžIÝãx¦3ð96f Îæ±MÑþlž)=q§…#‘Ó€< ŽG¡ÒšÓ€Ç””Ö·Ùú~BV±SÚBAÈP(HæJ¡ ýiŒÆ-×x†FœF©‰›êR™Ôd(¤c¦5ö­µzõæ1%=ä6n³õ»l³‚Jç‹q"møj 3 r,Ü:!iÑRlÅŒ#±2ÛX Ö0iÖ:2çDcJÚÕ ¸ÍÖ÷ N¢¦ö¯QÍ7y¡6yçÑ np&)Ê„Qrï&ª] 7/†€@+ jU×Jip›­ß%OGœZ=ó„Öœ G­‘ÕÅ€|d“8ð!ÅíS‰¿SÊÑôÊXS_œœÅl3bcUÛS7)ž•qlÉm±vð1QQ'›ÉÁA›‚2ª© ø¸yÁ”$¬©™m&Í)0¶ÇÝIÝ=;MzlÊm±v¿—MnY-9Ȉà­{~lѼåBüLR‘â‘Ö…Œ0ÉÙÔÌXSY‡Íœz±Ù ±•YÒMŠº9¶å´ËØÝî÷ã²ÅÒÕ‘úÉi¨HÕ™C{t–ÖºX½¯gé­ˆš¹R®<>aMUÇë'ÉH‰EèxêÎÐò[rÙEì‡ÝïÇeøíÇedèØk©D­Äúùq\†o¥Ëï#œØå÷Ilå÷Éбq:£Öí¸ŒcæaÚ¨‰Ûlý®üþ ®.]ô'ªtÞŸÈ.>×þ‰ò–bñj‰§:¸tÑ Gç½´>®}))­n³õý¸lªÆ¬ÖŽf 'N¹Øáz"úåÂ^àIõõÔ³çÈ–Ê(w£ßÎPÀçDBþׯ`c¬ }¢¾Úý_èjH‚G\¨"d)ê GZy)ÈÆ7ŽÝ´¤/嘒Òá6[ßÎZüÙY"ækc°gÙ"ÁçdqégÈg6E:¦gO)¦Œ#ÑÓR1PjÔ¸Êj­>¬ñ˜’Òá6[ßç2$:\ˆùÚ ?hȉ¸ÓSÏYDxf:OK;úð 'b=gŠ<gO'Xëpl¾Ç””Ö·Ûú>}]¨…°tpkNA,»¾Æ×*ÊIÆ'wšâ„T1›XŽÞ²‰ux©oκÙ-ì:yôBݤ<5ÆØ’Ë.a?ì~Ÿ¾Î'ÇùkcdÔÆÕ¶ êøˆö`'qK‹ø1}ý÷¼ôzºÇ”góe­ÛôÅ1sr{ºÎì¶¾G{ (äÂÖׯ@6MÜ£‚äŠÊxŽp¸>V‰¿N¸ä%­*AÛfg.¿ÄXì ÎÈRD¤J+ ÇÇ«Úâv[¿ëÃf§k6’¾wÑÉeâ4lM[ð4lyúB6‘¥ì³*‰é”,3P¢Á8Th°Öî”Ç”´¨«p›­¯Ó{œ™óhrkÉÓ pÃ`ÑsžÏd„ˆjI#Hã0NDæ<š1ØU†8d5ZkæLNc9ïÅ5nG@]9Yrµ»^ z“”Wœÿk*­É),ª#ìÁpé>žh-¹ìv·ûõàŒ­2ã/?9èÓ5Ù_¨²ÔÃdï!QpⲩgÊ‘GšXQg&B›³ØNØèey¤nR¼šc[.»„Ýí~?EÆüB·“¯±bW76胰cCxˆà)\’vx „1]¹Ì †h Çi}x4¦¤´F¸ÍÖ׃3vo ÷‰ÎÄ(ø8´‹³ž88+ñ‘àWUR)¤ ɘ‘8üûňÀ˸8¹¹¬•/Ř’Òáv[_Î& Üß…ö™±0ÔD+‚ûË7šJ_C„¶Ž–Òªgk$1½«23¸q˜Á­µ;žÅcR*kˆÛm}?+(ôrkn£W»íìÖJ‚—bL2d q¶~צ}‰¡BÃ=æF|Ðv\9̸ƚÔ â— ¸VJip›­ï˜GWÍP1ã+.}"¾bᜣ6Ë`)„Q3G ¬C‚¦µvÎ{LJe q»­ßÍ`='ÝRÕœ…”‡Žç)Â"»ƒ YÆÓRZ#Üfë{uüŽPxT7üÚ¨‚¢öŒ©JõSõ ½åºœñ)Ce„#1sËu97=rp…C%kíÙxHcJÚ©ß>m}ß¡µØzü‹bÈO8Y³šDÔ]›~uK/-X€»´ÅKÿâ¥ü‹§–áA”ÖÇ¿¨1%¥5Âm¶¾ïΖºât¥æ“Á&3‘Æ\ǶŸ‰bö쵓ÅùᦖtÀ- jå¥d๎ýh¤•÷dÓÒ¥â›Ûmý® ¾ZGªÙmr†ËÑGûÒhw}0~™ò+>È’ô24ÖTÏd,sê›X–´îêÍ[rÙEì‡Ý¯QŠÑÊ5ÎØLÆb%ððº²{©p¢LBý•ÒŽbÕ V_z±xÝ4n"ÉJZIü’WO)Ín³õÛ(Å8z+ˆõµs*Kb¢*Q¶E’áà––Lì!c9¶µ‰U2lÞ¸­„­úMH·(^±-·]Ä~Øý¥¸ÐÚa‹RCц§*Æ"ñú-ÈþdÍsJO–F'NÄ¥(£ …S”âõ[½Æ””Ö(ºq³õ=J)â̯ÿÚÌß`¬àÉÔŽ…š¸ç“ù±ôo)â#q졇1Ù1sƒ¸Å¤j]OÎÇ´Ö·Ùú¥ÈdùY½˜2ݪ+ëo©6 :6¯¤"jðX–Æ{1Œ‘eÔÌ85%ÜÁµ#µvxLIiÍáÌ¡´õ»(Å{мòÔÙ ì\#ðê`¡¡x¯ÒD`øŠ*1’Vx4…‘§Îbœ˜Ç„;ð ­g†ChLKap»­ïQŠ+ÞÜÈEVÀ¶øÎFDüDˆQ¼¨âïH`øåzɈBS«gbºz³#<ׯuTO“Öîe™Ç””Ö÷aë{”"Kàž±—æ ¶îc_è/WÄ–a &ÔÃ…nxG˜½°¦Ò™–®â­lû'Ý5ƒ0=¶ä²‹Ø»¿ëPQ¨ÝATfÀ‰1ù<¨C„±fµôtLlmIô Í’Œ«8l’Öê *))­!n·õ}Æ ŠR3™Ñä‹ÓGA¾x”–Šî@¤¸Ob’‡å S—±¢jž™›ƒfbQs2ugMÊ[rÙ%ìn÷wE‚×g5|2²)ôxªáWBm{0–§Ëéù¤N“Øö`dh/E\&9ÏfÒSRZ“M¨ÓÖ÷="q Û¿íœÊ¶ÐxT ›ÀÇAWœ1?æ{x×G^‘Ð ¬©ì5oÎà±¹° ׳nRÞ¸ÅØ’Ë.a?ì~ßUe.Ë-lƉД«ªËV” ºŸ^Dt W;@\n(Õk>»¬‹ùÐ+qˆÃ·Öá?›Ç”´:z}ÚúmÀëK¸³—8å`w.¤Å3ŽÎ]Èså ˆv|¢Kš±¢Žç6˜sâýö€•Ö}š›ÔK½ªâóÐÐÿš„§­c¤»jáDÌHÆDòžp™©ÒJÂÓ[”£§´ºŠ~àv[ßCANÅÌ8¾@ ¼ÝhЂÜä3f/TÑ%ÁY¨¨ ¤Uç‘WM¢§ O |ŒÃGÀZkºð4&¥²†¸ÝÖ×¹-j€¡VÑ;%ºöK†‹ö^ˆ÷ýÌð¢¾Acé…Í¡p$2¼È IJWY#„Z³ã¡Ç””Ö·Ùú]s—IîÊÞ.¬QQ<ÌÌökè¾2«NNHíµt๎D6n3=ÉŒC µö|ü4¦¤´F¸ÍÖï¢?vß[%£?ÀY®¸щµZ¸ø"—”£?ŽþÈ/TÉ2VTï'G±$Âfœ tgð~Ž-¹ìv·ûÕÙX]¡²*yX |u£:JCÉÊâ(íÁ­¥+cV–ti#q$ò˜ÔŒ‰¤p8º´Ö<#õ˜’Òá6[_ÑTÙ^êUf|ì…]œ/|ãö‡ ?Q×ÒÒ©Ôî1“˜öf›Á3]áx¤+­™Eã1%¥5Âm¶¾gAó|8‚Û—Ò ÅÁŽ2²Qy Ãݤ?€œ´þ©¥Ð߇]¼(z±ÑOyg°°¤¨›W‹ƒ>ÆråkÝGv0ðØ–ËRaw»¿+¾xjcëö5âtÖœÓꋱÍÍ0±Ø-ó‘gþ°¢Ž'å€YÈôB4“à¥Î28»m2n7ù}/†ÚçÌÌ1–½~7œ~8#&ñKÛ¶y¥tÅ"Ê8Ok$1PÒ8dÄ[k&Ì{LIip›­ïNGœ-²ÉÇׯXl°RUb°¡Øy‰°'ñZ)ñ16ŽDö1c𼌸Β’Ôš½D<¦¤´F¸ÍÖï?::«eä8(aȾ9˜†2f¢üè,W©:aE=ËgsPÌØŠ>¾ÖMÊ! m=rÙ%ìn÷ûÆìr©{õ%CÛò8Ú™Þ–_Hß!áÝËXAŠàQãš6ŠÅ5ƒáıú”´’ेöGKóˆÛmý.FE;r{sÌP1T£[춘³ÿ4Ô\°ÇÒŠÄfâD ûqÌ@”³ql¶ÖæT!I©¬!n·õ½#ÙfIŽRè z›ˆQˆšˆ³‹ ð@*=¥½ •ž8%=8d„óº~íi­$èBp–á1mp»­ï3Ö´oÅû–äԘ˴†ðÕDý²#²>r$v$VTÎ{ÉAtc+f#ë®9ïylÉm±v—']Qæ´g‘ ô|‹LåÂÃFúöXºõÜ\#¥'Îe…#‘Yf ¬Â¸ŠŽjÒZ½`ö˜’Òá6[ßÌZ|_îuNw~¨ª a¼/”ôí]†¿PÐRì#ÑÓõ)âf«¨©)­Õ{8))­n³õÝ›ØîM$C^A'³¿°c®Ù¼‰Cݰ E:Êã…<û‡7qªo•¼‚×L!µnÞDŽ))­n³õ=5zÊC§“w3Pâ0y2“¯%‚ÎÜËÞD¶Ó”7ñJâH \G Çu”´’ø%äMœ¶Æ¸ÍÖïR£¹´¨ž´È@^çÑ=};CHü’ãñZ)½°šîÒÂÃ)pb ŽqØu[knÊ=¦¤CË‹z|Úú~R69Ã#èkçÄ@²qk©•Ñ{'× 5;Ÿ ôw²†³“3Hx²& ž‡Eëö¼œ¬Dh9‹+ê)gJ†%õëR÷S#ÏcK.»„Ýí~j\:'j$ƒw­¡çä]kè1³pSí( i/Š œˆ,Ü$Æ`Å\âÎ/­O°¿Æ´Ö·ÛúÔˆ½ù“rfRÇ¢UKÄFŸË2T)gÓRXcÜfëÛtVÌU›$§#ßW¡_÷^|ÐéþkR4á€+ZòðÍÄšjö‘$§2òRØÂæœÒ]ò­ôØ’Ë.b?ì~÷3ªc,"ì¾vÂìPï° `7N¸ ½p¤è TË[ÉÕóVXQÍQTÉÁ¹bñ#ÝŹô9¶ä²KØÝîw?#â#yh{f‚‚‚ŠÒÀ AAጨJRö–žò…úLÆšš®÷™œ~¶Äöx}Rw÷+šcK.»„Ýíþ®HSWÔ§ˆÄ¬"'ñd-µŒžO-^yg0«°¢ŽLeçÀ™ƒ±bw­ûÈÐ^m9í2v·û;ÏãúØ·‰¡°EäÑ; ±=]kìy\¹o+8t}RÕæÇ¾MŒL[¹o“Ö-Ü‘cJJk„Ûl}ß·]ì³°ìâOçQ~ªpá€ú(Æ!ŠÞÁŠ»å(’XQ+·/æL£0ùü©{øL1ǦÜvûa÷û&õÑgÍN)b H¹³”úÄIJì½¼ð­ŠÚ¤”^ø '"#†ÍÀÑŠqˆ¿²Ö,Çì1%¥5Âm¶¾{W¼³r¿6ʼ‡¯ïDÝ…ˆd˜p•]O˜ÍB¯]IZí 'bfÅ(1PÞ8T„·Öžå¢4¦¤´†¸ÝÖï<EÚý£ÄèÈ>lPsâ“>Âc‰°ç‘ ‡BÚa©p"¶2XEõ°Å;Tk/¶xÒZìÂò˜’.µ" Ünëw%­†|(ž89sÈxB¼æ—±/#)î­p™å“§Óš:=&g2’ØÉÂ…ÒMÊ»¼ÛrÙ5>ùØý^c¸‡ žÔÇÒ<=A]…ÆÂá_ŒNê×_¬|ÌGÎ…±¢ÒdNC¢…± Ÿu“ú%KblËi—±»ÝïÕA–ƒa»ª(›SqÏ]TaèÉM–(XÁ=˜åÜžk ºyµ8¶6ZNVM×jÿ&©Œ"ðÃè÷jÃ7º''jc"ɪ³1ËB)†58‰0…‚”"š]8# 5ˆÁÒ®Â5Ö3¤Ö–…4&¥²F…f7[ßë„,¦8l…BÄi¨s<ཉCç(|¿)± $…;ÇM-åá()‰5õ” 1µ7‹#ÚÔçÀ9¶ä²‹Ø»_‹†TÔ*Ó¹vf,–€;œiâ Ÿ¸Á­Äle)'"Ëü›1X˜8´Öî ÛcR*kˆÛm}›ØæÅ(¶#“í’ƒHà ÐG²1UõÀÒõÈâÀõÈ+{T›T¦Ü%G‹‰=˜>+ÝIœcÌa•]À~Úý^‡¸©‡L÷llgƒÚoQ2¸1tª±¼pŸ¦hÄtÈW¾Â²òøåã@3àwòB©8)¾²Q¦Æµ”6 ·ü]1âèTЊk–%‡‚Xï8jL•†‚Áp.4oµ¢‚‡jP–Fµ*a‡kWwöç@v¿°•†¤»fì¡Ç¶\v »ÛýýÈîxžäÁ3§sŸ|Ùƒþ,L'E7"brR^éè!ÖTóir göæD { G¤uÙCÒcK.»„Ýíþ¶(1cm3BêL¡@0žÅƒµ§ú!{dz*Cú`â6GâÈ2¿dDzI1Ža$ÒJ‚—bLIip»­ïŽÈŠÍVt6r»iqNTºŒÊÁ•§Êlþ|¦è,ì’.ùŒuxbE-wLÎDž±#ž¿Ô=Ò1ë±%—]Âîv¿ pf !C cs5<‰ÞHâf)ê¨Gb !C Ä)D„Z·’±¹)ep›­ïŽÈS?ÒIF…+± dÕÙèeäƒÙ'$ÊYZU[.Håñ@V÷FÆEbä²VŽ5©ÝRYCÜnë»ïUªÇé_3.×e¼ÿü¿1—‡z0 Òåî gg†dˆ±"ôH¸ÈŸÖJ‚—bLKip›­ï¾GtÊ­ŒåýÚ9÷ _䈹Wm`Qô"FÑr–6ÖTÏ¾Ëæ ?±p%¤îê,Ç–\v »Ûý@‚–žá“uÉ¡N=•¢™™¥;8$è]D×QK;Ф G¢8CÁ Tqn §ž´’°Ï’ý =œïº>m}wDv”+é5KЛÓâaˆ ÉbVUîqžûÉ ´’H9Ë´+*«’&øÄ¢hhêΤ9¶ä²KØÝîïB 㳺.›s¢êT$vUŒ¬í5]Tñrv5ª€§MøKŠºyµ8g|],g)ݤx5Ƕ\– »ÛýѪ@ÑÇÊÙÕdú;P@(ª¾M¶{i"ðE•Æ#¥½Â‘8Ò—OFtÇjÆE¡¿a­$~É€k¤”E‹„Ûl}?W›ªžžçjdè| ÇëO±Æãø8WÚ×Ò õ…#±«‘¡ó1âtrF­Û¹ÇÌBÇs·ÙúÑâ7Ñ/M¡ƒb\œxNÝ›(Ð^Ù`'Dbt­–6ÔãNÄéÌ%3¾6ÄÝŸ¹Z­•g>Œi)­!n·õ}:ãw<­bȘlù2T[Í`¦êêg«˜¥íZgã±wêo˜­bÈèlù²´!C3˜©ªûÙ*fèï©wçÀm¶~Ñ-Ãûh3&ãÑj.Ö5d ÄõT=dDJ'B¶…1²œU‰k l¤Ö–U5fsØcX#Üfëw…öáaÂ#üµseÛ¹ØlèÌsO86IyjB‹cɹ¬5VT¾/ÉߨÊ`[é&Å«9¶åž²Y³û=¢Œ«Åõ_DëM56#ö¼w¥>82½ã`ÒÒ‰ á¦*®'kš½Ï+qþ°Ö¬Iá1%¥5Âm¶~WaÏhNðµsºëƒ Fz¸>H伓ú¥ý[œTJ~¢$¹±¦ZFÈ›S]Øâú Ð]öú »¸>쪮òØý]}Ëwíkcd}uéFE%sn‹¨óquK ŽíVÖaÏË­>ȉOhTC.냰ÅÈV„ý+Uä*‰Ûl}ŸÁ`Å>ƒ5µüÀLÔÑ­Ø£Ì`ü¤Iºt¢‰m##g¢òÌQÔºÍ`3ãFŽk+ u\ÿ¡ ñ çzZÅq"ö¼"`q±©*—ÇyÔ•R„OG"Í@àƒq8ݳÖ<@ô˜’Òá6[ßk_. ìbÄd0ûºTT8²šÙ"ˆ7¹%Ü›–VõqY+‰<<4ƒ&„«Ø–Ikͯ¡ÆÃÖ÷aë·3Æœ<(Æt{±X÷­,ƒµDx‹ó9J'ŒNÄÈ´A1P™Ü¸†¤@im™3¨1%¥5Âm¶¾Ï`'¿ãF~m þÁ;JxNÒD­ªÖEpøÿ¯··Û™eÉ­ïÏSìK °áŒÿÌæF†-À€ ϨïCðìi¶õIµ™ÇŸâúaFmŸ“uº¥n>-’µ"¸ëËʈ`‹à°µj9œ„á+Àygº$xÔv×8'­ò†¸Ý×çEk€ª4{íYsl¬5d5cO_ ~iôÁ£¤õBäB8 ÙkÏ n‡œhš½ö<§¬ôF¸Í×çEKtÍV©éì²)*„Áœ I]”|ªí¶‹fAXIíff”¦2D(laN]îš[vù%ìî÷§BêÈÁ^—Ɉ­9q G¤Ï30ß “ô]kÜkÇ“v”'–ÇΩ á=ÞIÂ.TylJ>«ÅܶËSaw¿?Õ¤ÍùCMÚœ[MÚ¸9¬úèèàß¼¶€ãX[MÚX?Ô¤…"kÒæÍaÕïTF~”sfMÚœ[MÚœ¿*¤îÙ¨í¸ôg³§ð"ý©á›—¸Á§ÄM:J¤½'+é¦Ê·¼.‰…2ÇNëʹe—_Âî~?/gS—“n&îìÀ‚ ±ÂÕ¤v ^xZ‘ËÒ%œ…‘WíR€óÛ8ÜõyÔæ²Ï)+½nóõy9eîDUìצ@ás,<ÄT±DƇš®Q`æµµ"¾Jœ„Ã×3R …¨‘Ö¨¼HŽi+½n÷õ{#ã®Ç‘äƒ×—¬ckA$,žjrê'+˜Uª­ƒ-‰“lõVtV¬]b¸:zŽÚ“z´» ¬ôF¸Í×ç"¨g3‡—u`ü[ —!×)3¸_Èë9¶1>ã(´Lß–¢¢¨Z¸‚šjZœè9e¥7Âm¾>§ê/¾b§{;¤¦m*H ô¨–¸ä «Ëö…¬.c-M¿¾S3౱膒c÷ŒPznÙå±o~?ß±gù•Gg*"¿·áF+îäЬµ1heWØv¹/¬—šafKX+N”7iÓ¨|‹Ö´Ò=á6_?eç×ã‡ìüzlÙùÇMFÜÚ²ókÛNh¥lÙù¥ü_Ê–_ÛvÊ*oš3³óë±eç×ãWÁ.÷‡#I¡Y¨·mªnÄ/‚mYbxµ|¶7äÛ+é¾²¿ÄvÔâzìžµº-«2çqûEì›ßŸnÈØá¥¼!+lRÄ;À ÒXáÌ<úæ"›ÓÈ ŽBã(œ®™³b1çê ×.:’7@sÚJo„Û|ýt >þ|m ¡ÈÙ8XÎN5ûõy0–fkÜþã$ܧ,)*—%âÀŠäQK¦ÇkNYép›¯Ÿ²óù½ˆlÍŠE¢ë¥Êø“¼ G‘ÀµæÐßãä²^W 3Sî¥`wáØG£f6ç”u‰aúìï¾>¯`'HWó*5h›†"fæ=)ß>"—”øBFi@ÚQ`¬¥Ì%J û½[È»«±‹·R97íö«:—ÿöûÓ¥XgÞ¼òR¬“ÅñR¬©' /ÅúaÉa¿~ÞvÜ|'VR¾óRsð6ŒØÎJpMÉ—b­Ývù%ìî÷ór†úµÊ]Û×®Áf V›×cW¹ß‹…(údPâ ÕrÒ„LcĦt˜Ên å6ÐcSâÂÆ¹m§_ľûý|:Ã!œÌ¤_›iAh 7X°ˆŒ¤o âû~ÚZŠØ‰'! P­hà*®‚ž@£Vÿ =§¬ô†¸Ý×OœWA»XÆÎyÍ4çUä6•eΫ³Yò}V”vØ¢œÄJ;çÕ"ëœ8¯.¦ó‹óêl–øiÍÝÌyuž7v÷ûSåÙ‰¶™§ûRCÁê€X’´U-¸òZ§®B—·¹µebÄj8*\T`áXD Q)xdÂÇu¤{Âm¾~:1Oá<òtÖQÍïvrANpi}¢àÓY?Ó fJá(pTŸÎÚtoâ‚â7×D y ×l•{Äí¾~ZÛ~Oîù ÅdÛ†çÁÉ…îÂW8³áCpW¶v3®›C8\E‘‹X°„kìõÀQ³HÙsÊJošºôõÓ Ù`ÿ-¿ù­áÛ»“h•×Vq\³ý~ów¤ä¤”®ÆJºßüÖðí-lã›]c·ûͯ¹m—_Âî~?3†p¡enÅ×®a‘Dã²¼X$Ѧ»¹¨zVuÖ©b_úw€¦ ë/<ý’ˆleòUr8K£ò£§2êúLÜI£N6õœ²Ò›bŠõôõñt)óAÊR“¶Ñ$ñ£tÃ3ÔŒ';Rb GÇ/ÊvtYJ¬¤šäÖUÃXÜCåØGfÉxnÙå—°»ßϧ3lÅ‚´(9¥™$cDç£ =j<}Íe‰ç-ìÓ^c[$lJ#{ËZÃt)c™Iå±ÛM樹ÙåW'ãî÷sä²ØÕªêQ õGrádܹ!íppŽªØÊZ±=NBqÜ 55ãæñ G¥Àƒ7²Òâv_?ñ‚Ä›ï4ó¼ ð‹|‹ÉJÙÆ4ú5,ñüÊÓ´ƒÕP g&J±˜àª?KÅ´²Ê!âvwŸoÌÐуgˆ¯M¢µ¸£äÌ_¸ÊâŸÃhŽm½À·/…#鳩ˆ“I7.#Ó£RàG1§­CJà6_ŸÄT½ï|c&XC¸ Qß…èæJ¢k4léi%3¦p² ÉІ€¯p- Ỹ®´Òá6_ŸoÌ^lúKIq²5c³í(øŒÁàÊK2²~#…ÓÁÇVò£ @Öž¸ÁÓu˜rÞs7 fˆ1p»¯ÏñFDMks¼Qš+ŽªÙ>kä]D?âl|‹¦eã¶/l¶•túMÍ"a#±qP«96¥¼f;n»üv÷ûSMÙ‰:­áp#¸çŠ”Ã…š²¨xéÖ%Á+ιҊx’qí¤Xè+ÜÂå˜F¥ÀbNYép»¯ŸjÊ.¼ÁN¯aÕy×Á².›Tö5,qlŸ'û4M°8´ïÂNÔÞM4‘Œ"j` ü(浕> ·9ü)u‘,5)µbšøž×&hE†«{ \f¦R `e"pKIÝwaTt6˜ž:œE'ÚLuæ9e¥7Âm¾~J¾í3ב.¥ÀÙ‰ðèf6)äNÍmãZ«ÙéõÅ8 G&IS1Y”EÜ<ݯ¬L VgZáp»¯ŸÈˆ+nåý’—bᦈ‰q$çõW÷Cò¥­HË4ŽÂÌ—¼ÁpáéìQ{¦EhNY‡çãz÷õƒ>¯¢LÎ%I¶¢ûà‰³È`!Ø”À5¦àH+kÕåXà$Üä\RdK8ÒoiÔ›œKsÒ*oˆÛ}ý´rM†]{®\LQ² ›íD 6R4š/G,¼ØwŒ)*JNdˆÛ"H1x%n0 ÉQÇ£<Õ/þºÒâv_?åzÄÃó:ó8-ÂñE6õXæŽö­”œï¥¶wö™nå©>ÅN‹°¦3‘CØæv›cYrÖ‡ŠÀ.¿º“@n¿Ÿy¬@7TØCæk× ã)ø¢*Ùˆ£Z¦â—ôŸžnE;’‘+éôs–šÅ>{ÄÈ‘òØ”øiÎm»üv÷û™ÇªàNmU/ΩA÷•ÙAÓ÷—#²qšÉ#t6žQûwÞvl„+)ïÕRS⬖Xflyì¼W˹e—_Âî~¢²Z{i´ˆ ­Ôt¼0H§Ö^½ÈIbkU«ÀÀIÈh¢xC¼Ð£f4ÑsÒ*oˆÛ}}¤²Š2­íwôW“L¹3²ff„ˆâoÄpM¾Öx‘[ …“°òï%ŽÖÆ ü54êÈ?–æ”u©Dàv_?²W5å±}mŠ“Ç ãÀQ<4mS+êBãHQæAàš›©ÿ¥xó‡:ùòœ²Òâv_Ÿ–³,ÌÇ7FT¿6öá+âEHöŽÐì@%L\Ñ-­'¼ŽBV"Xã°y÷¨Y‰à9e¥7Âm¾>V½þ̃9ÖMìwÖT&xM$ûDŒ×pòΟ–‹OÚÁãXIҬÔxÓ {^ÌãØg&Å{nÛå—°»ßÏÄUØóDVCÑ»5<ždA jšh.$Á‹L0icLb%U猤¦TØ5ûpÎHÎ Múì»ßk[lo>Ü<<51¨&Òõz5°'•/ ˜âÒ~%-s»¥a&ïÔ ®9±Ý’iÏsË.¿„Ýý~\ÛZ«'˜Ô¿6Žx!Äyˆí‰Ê›)Àƒ6ãë´uÆ‘Ë8 §/Ô¬`ß!âÈЮQ)|—בVz#Üæëãr6ΛøkShYÂ)V V¤‘ì¥Ñk1%Š3µpîåL .KÂqÁÒ¨÷r¦9µØ7Uñ›¯ÏË®üIûµ)&2˜pát2#Ú$pái¢«…µãø+…‘$‹Ràtb\Cþ…Fm>r{NYÙ·ùú¸œ‰¼~¹…ìJ6û¸¡k‰æP|ÓõSö9z%G>¬(NNÂrÄÚŠÉ´@âAuøí9i•7Äí¾>/gmi«¯1­@ÖY¬5óÃ[¬BkHðu¶´"½Á8 ÕטVvå!î`M/gx^‚kBi©AT<ñMDo³×4Jh(y:¯´_™-ˆµ”ù¬i  4W÷Ø”86ç¶~»ûý´œÅ’×ø7‹Zj”0Ëvƒ]½ueBÉ TPÞÛ®.#ÂJJ.µÔ(UWX¤ÊæØÍÁ9·ìòKØÝïçk34;‹·í´©²!]l´»:¯½ª%†gü6ÒN²-c%µlÛi f[òÊ­Zrds_ÙÁ/aw¿Ÿ#Žë.úÚxƒÇåóÿæ[¬±dpÑå¥ îÀº@òÍo…NÔÛËÞ£Þ >šSÖur½ùúœÇ¾‘½ÊŒ U‹šÄudMûö­Ê츉«†zpŠðê|'®¢"«ÌŽ›¸Š£nUfœSVz#Üæë§<Æ×WÈGékS SWçÁ>~× üõ&ÁaÁסÉVTmw©Í¹óÂ¥À½‰qxŒ¯žSVz#Üæës°Ñùx®“>­‡dÁ¡†‰ ÉÈ—oUÂwÅ%Û•Ö9ã pTG+£–͸W¾F¥À6›auv p›¯Ï©‹ì§0‚6º^g¾­a/äÂéÆW„ú¢~ˆ’ƒ¯ÃSÚA.b¬¥û¢È¼Î„­Ȫ4¶¤ïòä5·íö‹Ø7¿Ÿ¯ËÐÉ ¤º´f¢oK¼#Ó©’1èÏ(ùr+êÇd-:c$ÖR&L¥GÿÄ¢ì'ÇnÙ˜ÔsË.¿º³(o¿?®dˆí^ɽ*Å«J4=Ì5‡B®dE ­UÄY¸ÛùJ1HBbu$¥æ”•Þ÷æëóJvþÀø!ER)nŒÇŒegü¨;ãGý‘ñ£îŒegü8~`üМZÉÎñc÷õy%Ëm%c¾+RÓuË"§Ç,[œ)V–y¦uòÔãpLêåi SJ+ÒÄu Ö*ŽzÜ+YÓUͺÒá6_ŸW²%úz]ÝZ1Ùê Ö(`âê몘š xY¯¢Nh-]ÔÃÑVR ÏÖ8¤ÙzÔæ,,Ï)+½!n÷õSû—(‚ž&É·‚|^óŒ“d´]9ɘX$ð. ×ݲF¾Ú2NÂtœÕ öQ®£ðX£vÇY=§¬ô†¸Ý×OœU±ü–­o§4jÀ‰và•:†%.Mq$Ù[teÓOH[÷Îá^jÃYØí:5öÖÀSsË.¿„Ýý~¾Cí|ЋG"5h³‹¾Ñ¤€? îÀ@èÞÈH»: +©Ü7nÒ`ï%l¹p³¨±%ù~.rl—_Âî~ÊgŒ¦„‘º2Ÿl"S£ò®êàá¨K\ :Z$ÚfîÄJš~èR…Ä‚y!ÇîY«ç¹e—_Âî~*ž®ØÐ«ß ¤FòFAjo$`^H?>“,1žz¥õŠhˆqÖ]M)Ê„#E™FͪÏ)+½nóõ£0/8ÔÈÞ ùŽ®Ë˜H~?p%B ÏÒe ¬.í#…åÞVLp™.Øì5GNFòœ²Òá6_ŸSbOÉN`EG¡PÁï!RÝ*šGE~ï…9"²žñZ6ŽB²XAãX¶¥Qï¢.Í)ëP×kà6_?e¼•KXÁó½*›yò|½\Ù3­×].aᎠHÁ¸€pØZxÔ›üOsÊ:îr‰7_?-ge°KÓ‘ë4«ÃNwjBá€(yI+gÚWaO(b-Ýë„5‹É‰Ä¶Éâ2ŽÝîuBsÛ.¿ˆ}óûymCÄ¿Õ3©h¤‰:,‰¤Ø]ƒâ²Äõ7 iÇ%Db)Õ›”Õ4’5¶â5à±k¾j<·íòTØÝïOù!colE÷a«ùYŒå¤ïm€cíI~¡XšzM…»(M žÆÆäQæ,>¿’¸Í×O|Œ¯E$ú'Œ›´¡á»Ê žÕê²Äym?ÁÏj¬¥uç4J3œìpáu]–¾ëœˆ¹‡ ·á—°»ßŸ¨­¢5æZIj n§Àþ;X\Ô‘EáJp¤½Ö¨¾ë¬xÔ´Âã6_?±Y1…ô¼Ù¬H"|‘ÍŠ=ÌN²YKÏ_W<+T_·WOaÞµë‡R;Ö•8¶­¼L<|ÝlV<_%½nóõ97¿3ó'ÿRR T°Äÿ,0î]ȯg‘ ƒmkñ¾–Ö“‰IÄQèù—’…ÆU”½hÔšôšSVz#Üæës°±»°ÜÁÆ®z” Qm|ŠÁº±>–«;m±¡/¡­ü¡GaeøG ¹…›Xóš›8ü£9eí.É.ï¾~ZÁâ4±,üÚ5ÌA…}”™ž>*_Wwöz$|\·¿–ÄJÚB“ÔLf¢ K~'=ßB“1·íôËØÝïçÓ~ó±—™E§3iðmì º ÅóÔ°äóVo·‹Lb%M猤fg_X(äØÝ·9·ìòKØÝïO\ Qþ[p`ýÚ5-ðqxšª c×<-ùص†5#6cSª™¬k ¯úŒ=x¼ÓØÇ}úÓܲË/aw¿Ÿ—3Óè>ª™ò¯ðÈEÊ¿xæü;Z®Q¤ü k1å_)dŒÔŠŽ÷ßaÊ¿RsÔæsµç”5)ÿŽw_?E®ÌJËÈãB 6h+2LO„1cZM‚ר³¤Ñxã(Ì$Ö—Uơңö$Öל²Òá6_Ÿ—³#~&³»A– ½Œ€aÐf€³_ì;ýK능lEê¬q²}»Ø †LZófNsÊJo„Û|ýÔüåðÝÕצ¸Økz‚¾×U½ƒßîÄx¼²ýBcè+ÛT_o—b—:ZÏe`üJ.Ká»|xMk+ns÷ù€V#žðÚUQvIQYìÕHi,öBÛ %ö’VPôG¡d§")\+ÜBäD£®Œ«hN[ép›¯Ï+ú•×ß8sö¥gV°Hè Ò¬ÆîB’ðÆš¨J±}¢nÂXK-sö­©ˆN[ÔØÅÍ"snÙå±o~?3€ ªîk× ?j40ˆ(o\¿N,.‘KIéûOb阷}²C¶°’’pΚ¸”m‰%œÇ¾9ç<·íôËØÝïGŽu©wÝ»5,`ïØd—ÊÚö]¶$x1°µO;WRa-ÝÕïÖ°ŒÝXV¸{ì»ÞsÓn¿ˆ}óû‘„=6)ÄäqÜÁ‚ æc; yǬim"?ŽÂÆB…˜<ˆÇGÝ@Ž;”`oˆÛ}ýÄ2Øõ¯Ý РзWå!$;ÚÅÒtÙOqk)‹äS×±Üqyì,’Ϲe—_Âî~?Ò4¤(Î3û?Jqá[kÌfIJ¢¾Nðw”.ÙZÙs˜M¡ª¨AÝùQ tÅîõRŸÓ£RÀG9§¬ò†¸Ý×G:¸p¼Ð}[¿¶ÔàSãg´pÔ{ ª ’¿¶ˆ¿Ä›Ëö…wœ±’ò×–üb‹_SŽ¿¶œ[vù%ìî÷ÓBWâHËŒÕ(¤†Ì=û(€,n•%Á‹8=kBrek»¥,‘”æÂÛ_Ð EùÊIMl+|"îÝåGŽ‚¿p”$ µ/¶¦c5*¾ðÅÊ€ŠçO|Ž…qÛ±2ÖRóSœšŠA-˜Ðc?È97íö‹Ø7¿ŸȈ/ì07¿Âv©á³*lCŒÇcSú.ObÛk^ù\?øý¸ÆEc±¦¢ö¯MÁä§è4ÆŽ™AÊìÅÓ= ë@[W[W<"ÆQÀ¨ü((l7Ž 5jÏׯ攕Þ·ùú¸Æ5®ÓM­@=\mwêsÏ;kKGH¢©r/·çC)d+ÀÒ%àb.{e÷Mk+ns÷™õб¸ŽüÚ¸°¬‰Щ1˜"ÓG;†+­H NÂ4-¯ ?1®“Ÿ‹£vŸ.<'­ò†¸Ý×ç­D&ŠçjMÍ@*ydˆ-H‘täÃWŽP¢í©*ÆJj¸¦¦‚™ØXôxα³tÎ-»üv÷ûSû˜É&%ón3Ù wl –¬L]Œ[¯xGQâ=9ñmGL4±”8¶oäùúqO&>ýÅ;4ŽM‰ŸæÜ¶ËSaw¿ƒ’祫sLKJ!D™š+µÈ;%0hXu%+R}„“ϰÈån¡Û’F]Ù RsÊ*oˆÛ}ýÔ1†)øÚFZ1Ü1f!YNcÎ!C¤§Ø:ãöÜ8 ýnºEEóõØ…åÍm¦‡~”sVwŒaQ€:Ƥ¯ŸˆCK™W‡0!4n7+Ž_çÉ»2”TŸù¾檆µJ8 wtO ¼·ë¦#‰Qó}ï9eu®j¿Þ}}ŒC.ü±ÇÌ´N)@IØO2‰‘™$ŠV¦&wà™²ygÆ5]Çl ú*Ÿ_‰ëÌ«ä¨=ãuš“VyCÜîë§kµ×:Ç€æ×¦¨øú޶Hâl ¾V{}s¶â 6ŽBÉV¤R¸È$î¼Ø·£žÙ7^sÚJo„Û|}B"ÄïÕÌ‘F}Æx8IàY<Óô¼è䬳ac%Õ·¶2<}‚DØ#9B†%G.ǺíòKØÝïçˆ$j b“§H¿5Ôíá‚û7r³ÇâF¾dêöUÚñ&L,%ŽÍOKƒl|cº«zlJü4ç¶]ž »ûý‰o?*Fo2z) ºÐZíªlø Îí+»—Çti=„q’.CŠóò¢KÈéõòl¾k9]#­ðƸÍ×O9ümWÉþŽ\€EJý†,¹²'Ì•„BZQYúíÎÂJB!)&sIˆCÃ3:|Öôœ²ÒàÞ|ý”ôØÇ[bHu½ªÊZö„9P8»'† xÖÖSDúÊýoó-1„ %x§ÔŽº%†pÎìˆÖ³_õîësÒãdv$M”5¸1œÄèñRatE„{WÞ&°4Ú^Aàh¬¥‘[kPšX”€æØ-ÿ¼ž[öéP5°»ßÏ×j]U—î ¥`úÚ…ËÆÁìµkê6Ô©÷ÊdlE%‰q†ï'¬À&Ã84Uõ¨øQÎ)kWÛ!à6_Ÿ¯Õs1Áûóµ)PÉ×£2 m¦ÁIÅ^IwÕ¹!cU‰£pwP•dBÆ=È£¶¼~Òœ²ve÷·ùú©çئ‹£SÊd°&71‰èØZšp*3íã _6±–Jö7·æ`Nb'˜“=6%ŽÍ¹m—_Âî~º`;ØÐ#ÛÇP3¶AÛ¯h&)ç‘æÒ-ù‚­Ô´Ï‚3a%ql_°As²} ±c±= Ǧô]žÄܶËSbßü~&鱩>»¹Ì¬@9GÐsL`\x<‚Ûqz;Tç‘VäCG!›YÑb=2¢µz#â9e¥7Âm¾~â ‰FDïJ’…@3IÇÛ‘ÓIÛÈcE .4¾¬lçkÍXIï½Ôt þÊ»ysË.¿„Ýý~$™Ç{¼Ñ €”;Þäçž»æVz½f¿ã6â~ÇqG½‰C4gÒŠd¼ñÍ×Gâ^„™UJ˜pÊNðBŠGc mT¾Ú³dÚÁ|—XIÅÉ2ÖT´ž3ö%ÅÆ¦ÄOë’@vúeìî÷3‹H÷½²—¬ÀOyµªF/g” ð¸•}WCm’­lL-ÜÐa\?L+;¨wŽÑ[£æÓsÊZš>뻯,"Üïwrâälá𩺠4 ¤€é (æm±nG!“{¬`ƪpÌXÕ¨Ý/RÏ)+½nóõ‘Ed!#>nÈ›žEk*—gP¯‚*¨¨ðˆKÂór² ÌvĵT¼§æˆóŒ±¼}÷Ø”ðiÍ-»ý"öÍïO¤XÈ;/C¬¹plñ‹¸õ¼çi ^8 ¦ä:‰¥Ä±ùiibì‰]¨Ç>s—깩IO}÷ûS±ZåÝ ³û­ÌЯˆ†®i>â²,1ŠÖq¼´ +©ßÙýÒ4R [ÉY¬±“e&ç®æ4®v÷û9»¿Æ±õľüëVD¶Wg=[V.³xñøØ:Á_ ŽÊRA†mâ‚°xT ü(æ´•î¦öO_?Õ^¬OZ¼­@úWä*ȉˆ(à„aé•VÄH…“˶¬Vµ8nzÔæÃ¨ç¤UÞ·ûú‰EwÜX¾vMc âàµ|g"i(9NxŒÛ~ò"^XIÕT‡©ÁŠ”ØLºûH¢]Ï-ûpº°»ßÏ•kˆ¼om¥`7°×£Õ™¸Ø˜§xJà 9Õ¶â¢Ë8 w[g*b[©G¥ÀbNYép»¯Ÿø‹ 7£N‡¤­u"kñ@Vi Çá¢H`À4 ¶âNR8 5sæ¥ÀŠkÜÁnŽzdy·æ¤UÞ·ûú‰¿¸pÓ¹nýŽ\úN’ ÇmjÏžÆq‹duÙGá½/±–r‡‘𯿍ÂVøï±kþó<·ìò‹Ø7¿ŸÏmžÿóLBwk.46Ú·‚Õj±Qg4Û¼’— yFž«í ­;•t&#”5hÐlì‰íŠÇ¦ä3aÌ-»ý"öÍïOaȨ%ëà“üÚ5սǢÝKoìR&oIEÖqÛÏØ%VÆv4´O0¶]8yjlJHÆÜ¶Ë/aw¿?Å$gœKœ®¾v vQè8}àZ¼ŠdYr\òµ‘&B¯mа)s¡¤»(c¹ÃòØ÷ÌsÛ.¿ÞÛí~âæ«õµBd!ý®õ ý·ZßàØÏZß`ßÏZ_ ÉȺk}ÉÈx¯õõœÙð:k}ß|}^èо*î°Tê+Ådãè¢íAc¦=7nÀL×+­ØAGaìEnïá_ ×"†êQ[ÞñhNYép›¯Ÿª²[SŸY• jT(¨[™ØßDýô<%ð2 Å’¶¢ŽÒ8 ‡ë票Æ.Jí›G¥ÀbN[áq›¯ÏtY8=^yÚ¶;Ó΃æÅ÷0ßK×ýšf¨JÖ‰ý»pòœ-E¼<‡qq ½<*.˜ÓVx#Üîë§+¶~iøµ)ȽÄI (‹àw_êêØx?½Eà}š6=…ÜgZ1Û›@šûLÏ)+½nóõ™& Ý'ÇÆ’E…H²i‰ÑþøåK™ðªêHH—u`7!œ„­íPÀ<º7’ýªL sÚ: óÝ×Oµ×—AÊĵb¹µt!É\iw1jdy¬b+û»'a:× ´â4®ûnv ^ÙnQ—wóLÜæëó …ç•M¨Xø5FytÌX“>°/¥À%=®d-Ø› G£ò¦…Š3þDÂÍ…^\•GÅœ¶Ò=á6_?UX×ë‡ ëz“aMӪº¾Ó:²ÃHVX×$Ã’ðVa]­Âº%–F}«°.7½É ëúkøq(â1ÇlDÖT”•ÆêÀk±ýôuZrŽU´·â#ØUn©$Ë„5È’6 £NM!oGZOçF¯ùƒÓŸV,¶½ê3W,6Æì&sâÜÔÙM†9 Ž Ä øH+ü0ŽÂÌæfR ‹Ñ¸Ž³¿FíМ²1¨µëÝ×ç¤Ęçé=¯xUÅ!Š?™à ª•.G,„²meç5á(œÞíZWœpo5JÁ·¹ÒZôC<Îw_W¬QL¸£K4*&¯-Ø'jÁú@~Þåfcðº…Vãcø+7¸RœØß)Ë£RàGÛ—•î ·ùú|cœ‚•µ_»E–gætdfÅ’/·Žë¶cõO¬¤æÝHjðëK,Ú[æØ59¨<·ìòKØÝïÇåk2­¯elQ Ö7¯C¥QÞ¼À«E ²§lmªSŽBËå[ŠŠ^šÂ•“xÔr§ŒpNZå q»¯ÏËRµÙñökS`v›GP~ãˆT㎂#çH+êm£u­À¾Ü8lÅ=j6Öõœ²êÁ Üæëó1Ë9gjÁjÉøªóコ¯:?NïíQ«óã€s~œ^ÛV êظŽÿVçÇ]o]Ae-ÎC“™Í×ç<P÷+3¥@Ïîxš6Ò‘ôöz˜{•ÀÝCÓ«­ŦÂQX™É(ÒdL-á¨ãÎ,ᜲÒá6_ŸS?ê}ÿøµ)HbµÏ>GæÅÚo5#IãiÅ¥²qnò+)Hb%\qñõÚo5=§¬õ¾ }óõ9„XpÑŠ«Â¯[ñúÄÁ?Ú`1Œbí)g'Ü Û jã pTçs l‰#&GÜK@”²i+}h)䜶Ò=á6_Ÿ­Ê¦ÈIО2+ŒæDPw—(ºø{ wu†}²¼QXI÷^ˬ'Ì 9v´çܲË/aw¿?e2F¼ª£Dök×TÒXaÓÒ:{ Çš3,q•9Y³[£ÄJ*þI¦æ`§ObÛE6+ŽÝò2ÍsÛ.¿„Ýý~^Á°¦× œ¯]ƒ­BcW¨ @ŽH6Œ’ÄõÛŽ´×Øék©»(5È{H,v9vÍΗž›vûEì›ßŸ–³×ïö^£­@½Wg«‚‹;Ûq¼œ½^¶â*Î8 Ãk´ÜÙ ×p•¡Q[^thNYép›¯ÏËYý!­Q EÿÚ–ÖeªÇ[Ôpli  7Hk”BÑ¿±¥5jÔ-jض´Fy#\ý•iµ»?Q37q²½v1WÔX6òG->%ž™;ÉNb c%Ýgbk@SžXF<öH–&Ï-»üv÷ûym¡åÈê%+P…Ùˆ2ÁYÕºwÑ"šŠh\À¶ õJ!«—¬@‹ ãPŸäQ³zÉsÊJo€{óõcZ#ö|&_–/¤¢,z0ñ~} =ñL+’h£Ðó.E#=$q•Ì‘5_žSVz#Üæë§Ùh¹d¹È•²šÔƒ2$Q9Ÿ%V#ŠÈÆLÜPp©Ü2’h#q•™µf¢¤æ”µˆ´ûï¾>‡¹(–jÀÔàV»‘ž$Š "Ì%’¾+âØÏÛ¾Ø SXIuBS“3­sìÃ<€9·ìòKØÝïOËY¬<ê6¾v Ê:bI‰uŠ ±äCÔ‘}ÚcIB¯ÙÉT"¬¥éhFjP’ØÎ´{Ý3“ÄsÓn¿ˆ}óûùF ?ƒèÇ©3µÝ)ôµÇÓ¦äúV%xáiWZk¼¼ˆ³€QùQ*Ø!Y8vHÖ¨%ÿrš {Ü›¯ÏËØÐ˜¾6Å_|¬Bl—ÛÙuz]¸ðœ8XÉz){8 õ»Î|$”‹äáiA–’%õÇòœ²Òá6_?Î š¹´ûtVX¦ÈGç¨2$øtVkZq•j…ž)À-g:!{T>+­ôF¸Í×O‰ùc¾Î¨Ð) >Þç¯QÞNg`*µõýŠp¶Ó:e§óGÝNgœ3Ïnc&nóõy«¸-;ïÄ|*.&Ø75,@ê}W+ƒLÌŠí+mýˆ£pÞ‰ùSQx$Ø9üÍ£RàG1§­ôF¸Í×gúÆÁ~õ8á}íš ¡±†lH6khJ&‰Ñê“ìe“Bb%ÝÇIk¦Ov2>æ=öÌD&Ï=M%¹Î»ûý+Ng‘¡]Ç~: ¦‡hfÂR¤H¢rla¿Gi;¥§¯ÄJZm¥f²rLXÜ4äØY„‘sË.¿¦«În¿?µ@kL…&¢·†}M"Á°C ¶®Õ’xïVÑ´/Ð +©'½5ì5`,2ärìêÞ9·ìòKØÝïç嬱çuwájj9;¾«¯ãàº/ËŸÉÛ²/üUŒ•ÔwŸ¬H‰­‘gšcWsˆçܲË/aw¿?E¹’”;ò¸4¬Œ<²á{aäq. ŽžSÖ®’à6_Ÿ¯ËØ .»ËZLëÎôìhrVP}u ¼ØÂùÐVö¦n(eÝ­ÓNÞøŸÆ±ð@£RàG«ÒïÏ#½nóõ—#ÈïäE(^ ÖÁò°­;øÃ«W!$8ȺÐpY¸¥îËwò"‹IˆìÔ<žØªŸùêH+ÝnóõS™Š¤Þq7‘  ïºg*¸;ÈÔ3­Cѳ¦iVŒØ‹ÇJFš‰ßžSV÷líëÝ×äúÌ^óm’5ÝÔÄ}€-FÔÄb¤Ù¨‰ƒ<Èv0†&VÒ}§dM551°ÅÔÄ£Zâ§5w151üª¦&¾ý~浺X-Ú]ú’šÁb5,:0–E; åsnÚí±o~?òZ ä Æ}”þR÷x ¿ðµ¬ÖÌC<M­vÕxœ1Âz¦P½s±¢m²©]n9êám‹ç”•Þ·ùúÌkuêqÁ¨ d n¶/>;(Y˜¤»³JS[«~`“0ü¶±¢£¡‘p ½4jóÝ™ç¤UÞ·ûúÈkE*¨äP:_j&‚ KÜn a‰…_¾×f´´ã÷“XIÃI}©él† ,nÏrìæÜ‹œ›vûEì›ß¼Væ;§@ æDšo,X Áwýß9Ñ02ÈdE×!ã Ü9V0O³4êS 9m-zK·ùúÌÝÖ×ïBb+ðß. /R-M¦¯H·9æÆQhÞ [ˆŽqÈ×ñ¨Åû`Ï)+½nóõ™ÔJ\ÅñÔ¬-ò™¸õŒ—0 ·%Á…ƒ‘6ÛOok•T¼¦æˆ§KØ ”4š?‹™mMž°^pú™Þª!eÿB/¨¯]ƒÂ™"ÝÿBM„ØA8u¹C]„Ùãc¶“(ÒXIËgËÔ ÙTb&ôØÃA9·ìòKØÝïç°ãd[Í+¹3¤ì­Æ*|,ŸÁ¾ø:GvÓРÒÅ•7‚¤öÃwnJ3÷™ÇšÓI“ÍCu/Õì©ë¹m—§Âî~j!s’Ëø¼[Èœä`¾”ÞAæ“-d‚ƒã‰\³mgDÀXI÷ÆSšØA—Äì =ö¸÷žšÛvúeìî÷§$û¸=šdê+Siºq}RØ {9A%b‰³§•EFÓI¦»=šdøŽÕLŶ•Þí9›Ã޳$nóõS òJ–ùÚäW–;$è¥Rƒ¼Î´ŽøGá¦e‚Ì Ä$]à¨çÍÉÀ9m¥7Âm¾>Ç [¤E§8Ç ©X¸é»º<@d ™SB¦}´´²ipKng]nTWâ:®ÿ.7òí æ”•Þ·ùú)á V\ß Ü®t¦R_¸xéLݾò^&ZK¯ËÖ‰ã¾pjÆõ¥À½Šq¸rñ¨y#ã9e¥7Äí¾~ºE‹C8ôצ@艄5G"s`™¤à[´c¥mF£P³vQŠÂ 7â^¸qÔ#s55§¬ôF¸Í×ç[4Öi·ÃŒ¨©Á·UñòjxÐã^+ˆO)ñ¦ ›Ó´Oó+éÈ$iê… ”°‘\slJü4ç¶~»ûýÈRÑÕüDÖÊצè,ÐDý"[½ÌŠ`♼㳂8ÇVÄE£Ù1V°^8d¬xÔLñœ²Òá6_ù@zã¶g¹‹@jÎxÎÞÄ›iv\ØJ‚ —ýigW@c%-¿gR3Qxaì 3ÆÎEȹeoŽi»ûýÈÒyAuóHA^¸ŽõuÌê§núÍÒyFë8”%8 7ˆäõŽŒõæÑœ²Òá6_?ò`U8çMš¤NF¬`‘ž=²M_ë@^­ r1ŽBqhÁ ¼…c©§F¥À2OVz#Üæë3h¶Þ_›•\«£àƒ•\«£LldÙÇêȰµ))8 YJg6õÆ¡ÎÍ£f)ç¤UÞ·ûúHr\¾]äkÑŠ¿þ.Ôê…§åÀ0}©ºÕ„eÂI¨æ!°¢ÀSáØz@£~kxN5& 7Äí¾>R€œˆÛE©ò_•,éóÄæ!¨Ô^»–Iv IxXÈPaû…ô甕Þ$'9~ÅÚ=\ØãI…‚V° Áy¸ÕëÉ8‹ûQ™)¿ºUX›ûQ])¿'¬@Š‚p ) •?z¸ÕLoˆÛ}ýv¼úþ—’‚ßxgÆ<ÿ½‰MÚ)ö-¶u¨V 8 ÷_J ~ãÂño¡Qᅯ攕Þ·ùúvÌdÑÎW'Ì}|e^ ê±!í d/wX¾S¯ZÒÎKÁß½p(õ¨Y(ê9e¥7Âm¾>‡ÁŠy& =‡hž8M‰Êž¦/‡XOŽdÚNBòÐXã•q¾ zäW¥9e¥7Äí¾>¤ÒðŠãkSTgðZEIÜ<ªË`ì±WI뉄ná(‘Yq€º„¸×r]NJÅœ¶v]Ö·ùúœ‚ÖO‘„á´FkÀ ²¨ÆNJ«Þ-1W£¡ÌvÄ)+idZ£5Ë’»¹¯EÎ-»üv÷û9Õ¬´_›b"Ãòª*hVêÅyHpžÆ¹Ò "dã(Œ;W‘ d×fÕ¨-+4§¬ôF¸Í×ç"ç‘XV ‰*‚‹t‚g—à$«ØZ‹’'!s¯¬˜|±§ÕŠ£fâ•ç”u©÷êï¾>gé#·dæfJŠ…4óÎ4”…t4Ü<$ úRÁIh+{ aÞ¥@zºpé•?Š9m¥{Âm¾>§~à*‘¤‡_›ćýìªù[kKßXŠ“ž¸Ï´uéŽÂÈÖRt< ZSÚ2‡]sÊÚÌ´ßß}}Ný@EìD?…¯M1Áî>Á³1“äÁÂ1sŸ•ËÇaë{‡pFÖ§IÑÙ®Å?Í£¶»>sÊJoˆÛ}}Nkä{4b( ”ZC:äÎWk'S2ï%9Q#^è¶7'æ©èqyl~Zšîžœ•LThש±o:eÏM»ý"öÍïÇøbܺîa+° f©â0NN•=ŒÓ& 9l"©ŽBn ¬ÀFÈ8l‘Ø OXIy9Ÿt¸J,nÍs켜Ϲe—_Âî~¢ ÓÐmÅbxy'Ã{ aÁÓ¯¼  žGZYó'…ÌR·b ‡P8”xÔ¬Rðœ²Òá6_Ÿã‹¸.ˆŸ‡x“¥ñrÞ “ÁÆãÀ áYÙœ]8 ÕÝp¬(ÜÇwp‡ÃQ0{NYé q»¯ñÅ«‹çQ9V’ý qDÆýÉ5uí¡„¿y¡"ÀV¾G!  ¤`_,áÈ|¤QW@iN[áq›¯O+¸|'XéÊ[ƒ¬ù®fz\ÎáG ‰ABÐe¦›¿ÄJZîP–dÜ'9ö9öð/ç–]~ »ûýé@ÖHÞUï4è†öÞE²JÈ‚¹¢ßmhN¤v¥©]‰•4’KÑš+vbÑL/ÇnŽ äܲË/aw¿ŸdÍâ‘>óµ)› 4™?Ù†lâÕG§…õ²žàyŽÂt†»ÈË1l Ág·>ÒJo„Û|}>¡çÔ^6ME’&λlúÔ-þ܊DzlúuÊšY6-á.›–BåÏÄ©0š£neÓœSVz“$ëW•M¿&˜Üe»ÎŒ äå½a¬$ØX âxÛ»¿6As¤/mã(Ü P¤@—5ãÏçQkiNZå q»¯Ÿˆ„ì†dT 4>ö–‹ë ݪ(0¡1[‘Ð+œ„ž,(R4Ô"WQ‹ Q«ãž“VyCÜîë§:³ád÷¯M¢æ¨ùê8Ÿì¿‚Wn<:áÁ³Å´ÆMýÀNŸ²¦~d(ª&NEÕud31Í)kÕϸÍ×ç2̃òGŸ¸ËŽj®Ñ£À;7š_SÀôQv¤õŒ£Ðï¶y÷ÆU”GjԚœšSÖ®tà6_Ÿs<Ð;k;ƒIÑMšØý¢ˆÔø±¿(éElmjôºj ÷L ž¥„ã)K£Þg0ÍI«¼!n÷õ™lMUâæj™mQš'‹ 8q+VÙ /cIpa¡KÚ/üŒ•”›#iâö -É€›­uylIü4æN;üJìî÷§E«"Mª]¹h…•¨ðÂã×–—rIð¢õz*l¶q2ÝËŠ†JAáÕ¨ÕÅNžSVz#Üæë3óbS$(™Ý¿ Šý&D âõ_}¡³fOëº ‘,lÌ‹ë&D2.¹×~õå9e¥7Âm¾~\´Ôa¾Ý«–¸.! òAÆàyXÊ…ë¼í>'VÒM-o ÚÇ&ü™9öÍ.ï¹i·_ľùý¼‚X¿‡{§ZDÂN†¶Ã(óZEÂwE×™V°ÂGaødc¿áø5hÔv÷ù䜲Úù·ùú)¤LôËé­`¯¿‰¬ù“]'S,îl¼%ëb®qV’öKÁ &4^ºjs5攕Þ·ûú\M†L‚(ýQQAj2;²BºH^wÖõŽj2m;í•™ÄZª>ܤæÀâmìA&}¸º ç¦Ý~ûæ÷§f…é.&b¤‚w6­!˜|eÎLõë&¶G®¤¬Ì•NBMº+)bc~Kõp¹¦ç”•Þ·ûú©³K°B—æ”ôÔt–;#Á¹É<5Ň’OUQh;R˜+©9%=5¤ü0¶¸Üc(åܲË/aw¿?±ßW¦ºÍ$¿¯X‰"åÿ…¾G á8$àÁ9PÏFEx”)œ…šÏ¯hR`\AJŒF-ÞÙ{NYé po¾~ZÎFýa9u[Î’­*ž¾~XÎÆØ–³Ìn´ð¶œe¶¡q¹œõõÃr–\Vö&—³QÕr†ô¸×sp8Ïž d‚DsE,ž9QðrÓ.[+ïÂIh®„±‚pDéµ$ºæ”•ÞèÁÛ|ýHxLjHHQÀÁ·¬J8ø–¥Àµov[ñÎ7ŽÂ‘§E*T½A\¼¦G¥à«¶ÙÓÊgÂm¾~¢.My_›‚a”…3ë‰þEAô{\¸,¡ºÍÖ¡ìeà(Ü<ÞR±n‘šŸ£®›Ç›sÚZô¢,×»¯ŸV0įòúRŠâæ-'ë‹6¯&ÁëÑq¤µâ.8 G^_R1.ò5VD«£‹(Rg®[$—>§½n÷õù :Òý FÏR±0Þg°o„í VÐ*AÖzSÔXØÎ`õ¦Œ1Ng0ŽzŸÁ4g1þ¼Ï`›¯Ÿ­Î"6ŸÁ¬9qŽ:Ѹ"8ìâŒ<§%/Z Â’}4KXI+Ï`ÖL¶+T9öÈ3˜ç–]~ »ûý¼h]ìõÝ×®Á¡ ;[²´ÃW£ÊTHÙS!…•4“öÁÄ‹x`ŽÝ“ÉÖsC“~ûî÷§´^n$—ðÒ³±¤ $£Ù5xernÜÓÖ×ëœtI“Ðo.a*—b’(=jæXzNYé q»¯ÏiI,høÚ5ÈðGG¶†oŒöa‰KBKiG"yb%wʆ4¨0ö@M€Ç¦äÃ^[·]~ »ûý\6fâ®CÿÀË$cÑñì2ÉØAîCåÛÜ¢I2«IÆ€3ɘÙÿ.“Œ©ã4IÆJÍQG²ÿ]&+5½™îp¾~ìM†ö»çÖ› ýt¢ADÏ¡Á@ÚA@XIýŽHJƒïÄ"É;Ç®wPRsÓn¿ˆ}óûym;Ô÷>oȱrà†¬èû"<û €oÚác%ŽÂF,Ü}Õ²—ÔÁ¥î§3Í)+½nóõS°‘4ÎëŽ5†â¯RÅ6ïB¢L'YÖ•y4H!ig³qVÌJÄEãp,ñ¨#7Ýš“VyCÜîëóélÝ ]_›‚ŒŠ'šÄˆkñdâèÆÄxÜíz:©+ÌÄHacb¤BŒŠÇÝrÇ£ÞLŒšSÖu§—½ùú‰­êŒnáÎÞ¶í #¢÷úNE#—°Iàƒw“¬ìƒ!œ„l#mÚA‡FÑ5ÛH{NYép›¯Ï§3ðpÖ†Xë×®AÀ5îæ_ß[mØy‚tê°Ä³”š+Ê&øÄJº#ãÖ4\ [“áê°ÄOknÙåW3uVÙÆ~Zΰ«%o6SƒÓ9è~_óÔˆ‰ XV+Õ´£œ1±’ò~35¨K,jÄrì¬!˹e—_Âî~?ß-²&9\jº†æ˜¯‘¢©oÃ^Ï$.>¸e-8e$ÖRRÄ¥fá¤)laN»Æ¦ä{¹Ro»ü"öÍïg†”Ìi +®ƒÜ¿~ ¿ÇƒAçªÎòGZñG! ­$¿'$Š5Ù=§¬ôF¸Í×ÇåŒqóm9“"7®Lø`}[ÎÁ·Á}ãš2·3რ.KÂqÁÒ¨÷r¦9e=î—뛯ÏG5Ðñ\(@þºqa Ú ü¯`¥çôujÐþ3b€QI~¢¸ÐŒõ”ò~¬Üv$ï%VÒÌäkÐ:4±hšcwßUçܲË/aw¿?Þ¦áæ¾o—iS==qŸJ­Hê?ÀÍ@!oÒ®´"h\SAß®ÑV\;·iܺò‚®HÈ;´.…½îÍ×çE û¢EE k¦€ØìAF$hÚºîÊH [qÝ•ŠÆiYâ¨Û¢Å9e¥7œl¿.d¢ŸsI¢u)°r†pkàb>ÈqHø®x$™baEçEã.±ËšìR lˆ…;±âjT ßåÀÕÒJo„Û|ýÔ°làß‘S)˜†~!3¶^A¦¦Õ ™ŠhIF«H•p:rj8¸„#—FwÇ0Îi+½îÍ×ç ã…ú§ar+&yq¡…NòqxXH¢à‹°xúem¨6ŽÂ[/ª6CѦGm;{~ÌI«¼!n÷õ9ȸDHÒøÜmèDÒ…º Mäf¨ÛwšÈHT·¡3…nž0+Xá,JûÿµkPß ‡‘";Ê”WµÄÕˆ4C¶ƒn#±’VY3c›šØ/‘{¸v!ç–]~ »ûýWœà¿fÿ¯¯]æ‡F¢="}Ñ#“cVÙÅœ"¬¥ó>UI³œ³Ø Mé»"œ1·íòk¹Vàöûù vq.¶4_›žNR­…­ž)ÁËRoi÷­qz²¥ÀFÉ8ìÿAª#Š4¯ƒÒŤŽAšÓx3UðÜHò!i•Û†œÄRâØü´4L?¶2ÿ@cSrÂHÌm»<v÷ûy9+bŸZúJ1 ¬¢Ž@Ñå|ßî]ûÙ òã(Ü·{R€§Ä8PzÔ¤¨ôœ²wº>Þ}ýÄÌ}߯ÜÐL>âæ‘¦‚e`’ã·N ¼ÝBºŽ¬ÔËÂI¸;JþÆÜjÔ’éûšSVzCÜî맸‡;ò%EaS-ÎØ·F6ëP k»¯à6'2i#q¡:E¾Zvœ±ý<Ø šXKÓA¨Ô ä&‹´°;ÐrnÙå—°»ß¼‹çîÎØ¯[q¢ËOôjj$ÐnhÕD.GeD—¨>Ó:ðnÂʶóVœlQÜZì^Q)ð£˜ÓVº'Üæë#ïâëá°ùÑ}E‘\¤DÞÂÁÌÑHpkÉë§+ŠÈ]PÃ@Ø‘¸‘XIÝ›éÔ`‘N,.Yr켄ɹe—_Âî~?-tå©×¸\š%Åë‡i†Ñiuñ¶ŽtÑCœk©V¤ wꇩ¨'Òn‰‹¶Õ£RàG1§­]¹®Àm¾>w|9“¡?[j&X`#Y9ÊÙF±È(öO™±–†ÿl©édʶ‘)_cg!WÎM»ý"öÍïOµÔA#¤»¯]S@ë¿°Õ W¯)IÎÙÒÛ/Ö; +éÈ|iNÜ?{" ÍcSú®dÌm;ý2v÷ûS®côa:gæ:BƒJ¯È7ŒÊłаÈGŒÆ”àÅ…j·´7´­2VÒ4Ifj9C„í$ ÑØÝ…897íö‹Ø7¿Ÿq¨iŒÔ‡æSœ4(vˆWSÆ%OjQ/A‰G.2Û~¢~ÀXI™ /MTÔ-C£?öå‘)ø„øšØVødÜîò§pä…Ø”ÝR -¨ó—µÀ©ÃןBƇ­¯_Pìn‰“0óØ-6[Æ¡"Ù£öLÒœ²Òá6_?æ¿]ÃÖYÔεØòcEamô¡Æ;h.ÃQóuã9e¥7Äí¾~ºCã}–ë¤h8¿Ç}3`.ÞvM y‡ÖÒ:Ñ [8 w[))xºî@‰F=2?HsÊZµ”®ùîë§2ê8C%ÏoÖ u!®¸˜°õ¹lI/É—c£§}²¤JXK%ÏoÖ`/)ì…­¤†¦À³f¶UNøæô§Û´X"CúÚ5(4ÅoD’˜l-Ä(ù6-3ÛI/l¬¤»˜Îš#~õÆvÏxlJ¾M‹¹m—_Âî~*¨žÌÈï5+ª'»« rU¡ ÅDqŸ5¶Ò"†.£ÀƒšNJaSšnã˜2ÚÛÉ)¢±{r4{nÙå× Éî÷§Àdù10yçƒÄ^uL?&˘<öÀäñc`òØ“eLïɺåƒÈ› Lþº|rÄv`5?—Vtü| ¹ ûµ$pÕiñ³¶Uü“ÄQh™¿.¥Ƅ{4jÉ`攕Þ·ùú¼–•÷:x+”¿_ï:øÎîF[þ>;*Ù:î:x wþ¾ÊÃïw¼GÝò÷ë]oo„+ïuð¿|µ†JÜ ;ŸŠ]¼âJåhà…+.Pè¬iëi¼pVfZI1È#LÜ`UGwU甕Þ·ùú|µ6"„}Þ-´©ˆÄÑŠ û}Óâî¶/4ÑË<6U;ÛŠôã œwC)H¹LÜIÊeŽJÅœ¶Ò=á6_Ÿ×2d)Ÿ=w÷R 54„ ×,d-ûMÚ7¦hV`"`ŽBÏ}½è¤i\ÅÙpý¼/Ô4§¬MD#¥¼ûÊÔ‰WÄýß¿ú×ÿá'$¢ý¿?ýõúv|û¿:¾ý»ŸZ‹HC±Ñ×7‰;‹¿ýöí¯~#ü ‰û'"G,žŠû¿ÿë\å5WÇÁŠ­>ÉH0{ý&ÿñ·?½Æù?¾ý?ÿ¤ÿÿ¿ùé_ýîÿüË¿øöýw?EŽMý¶ÿ7þ¨ÿêß¾–o¿ù/ߢ¸êÀ”ÿ¡\Ñò: Õë·ß|}û³—éÏ¿ýæ¿ýôo~ƒ± 8:Ò¼ÞD×ß,¯-Ñý÷E·†;Ñó÷EãŽèú4zÿ~ùåþë_÷‡«|ûo?Lôïêx•ø]ÎGÒßþôW²¢†}¦Yâmf$¸ì ]âmomùVOÅÛŒ8Ñ.1ì¿ÏcöOúÊÅšQ}ZÄo‚޶X0m·˜öÉl>Û-¦ýø-lO¿ÜˆzEã<x*~î‰ú0nÆ.¿xž…9ן{?¿ èÿò_Ýž~ ‘ ‹Jì¤_3ÿõŸýå?þù·z|û³¿ÿŸÿð»?ÿOß~óï~tã÷˜ò—¾hd ÖãŠ-&ýžôþþõýËø?ÿÇýû¿ûyžÓ—W\¨÷ÿ†Wg«ª.Lÿ@ò^?ñ6þ/Ðwûøš9éê¡÷Ì_ÿÙ¿ýóoíõûíþÿóûËÿ¼ÿ Œf%q€døïû¿ä÷þáÛ÷쬇».JÙGñÓ“&²ÚÒµ\б.>±}?·å8£Ã`ñ&eÜÖþð}ýÜyÜ߇ü¥ï+NÑuÜß—ä?àûš¼4üã~_qƒ<·oƒ uöïk5Þ«¦Œ¾(?û|½Ÿîý…pÈ_ü¾æIšd_”ÿ€ï+ÝñÇþ¾zXöýmt´ Ü¿¯¡Ôç”Ïxìß¾¯Ÿ?Vû á¿ø}9äï‹òð}±…ÏùûªÅÜßFC^åþ}5¥²æ7Š½Æ¿ÇŸ9ú á¿ø}E’AÙ¾/ÊÀ÷õZ«ûý}_6†O÷.û÷ô:Ûû¾Uäžüüïñ-à/„Cþâ÷UKýý}Qþý¿¯¸;«ì÷}e÷à¯[^üýõ=)ãfà‡ïëç"BúB4ä/}_h³º½ï%ÿß×BÞùûаÛö¾DŽúö¾ˆs{ßÇ5eÿ_Þ÷?ëôÂ!ñû:«Ö_}_”îTôOߊ£&¹[ûóþê7Gü¿v½«×›æÓVÿŸÍ‡}™Þ|èW«‘Ýõ'ó!îlÆ>̱Ô?ìuï>ÔUc:¢²ðúñ{8F0ƒÿÉ|(µ¿û0j´éùxüüçò¡^H“|÷aõ#êþd>,Ôˆ¼ÿ6ë(Ñãü×ÃÿÙ|RœæD$NŒ/Ÿþ>•cûÊùíûö»¿û‡¿)×ßôó:ËÕçKóñüü·ÿý¿ÿM)y®ü Ó„¯7?Cýgßþýoÿóß}û-ªÿß?¼Ž©¿{Å¿ýïQ>ÞþÅ·ÿø¿ýþ_¥‰}å¯;¢ÿôÿB Ä< endstream endobj 507 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 512 0 obj << /Length 1989 /Filter /FlateDecode >> stream xÚÅZ]o⸾çW í ½ˆ‰ÇIFÚ ¦eºì–N˜£3š³Z™` ªIØ$tÚùõû:q ÓiŠÝ³Ò ã÷óyŸ7ÔEÄÇ}·õžo¾»­ßg×=·_ô¯{ï½áßëG(b„õë¾ï¢0$ý€bD#Ú_¬ú_WÉz}ÝÈEZ&\^8$eÎÓ"Γ}Yß ®&m.5µãéÊ|òï‹›fœýÁS!Šz$IëÏÙíÈ)Ä_õÍפÜêÝ·z‹«Ùd:o¾ß󸂏ƒûïNúcñkÏ5·Ѝº=½W3ŸZÍ/zõà^¸17ö=D)ëÇ»ž§ÄG8 ú>õ!~?ýuïw+iL5¬#€öù.Q(pÅÂaÔðÓOÊp ™ƒ1Lô£sÉ`ÊËy¢ut+ÈÎ,Ÿ\Á©““ËÑbòñöœ¢¯ n™ìD}õ-K….£È“˜oÅW]!"Ä FDÈç,¿×Âh½|ì·8[郋ìÇÍÑÅSQŠ]}ý?×w7P^b¸ÀJ´GÙ÷gð²äñV¬ê»%/ôyªVñ(Þ½f—c•)J^ó‚â”óý6‰ ã›üJ<$±"fjæ¡Ld3sÅK8¯lfîD¹ÍV…®ì•(çÕy&QÌ.I3;}®Eší’xÆSXR­ˆ|U Œ| Å]mãæô?".³¼°(UCÄHD½‘›Z8i [e59‡¨)i#æ)­|•‹#÷?îój%Æâ›¡.F$:Š®8!#/‡Þ±àm6{™•ä¹èg²X'¢Š¤y|ef€ú 2Àô“™±¼w˜¹©Aw¼H¤ä/˜{àw7²0Qö÷iRÖ;0‚Í6 TKíB`FVh&3¾jÒâ!á:[ê”ïD¹"NàRµdÕwYù}f)Ä1¤¡‡r]×z?¼3L$¢ü[1¯HØê4ã♥xXçâ2)³½ÞÁ…hv3)\'¨M ˜…|Ò¥)=Baž¤›¤Z`ðÙ)'D *Á¾˜­¶#2Ó•Ç×{¬À‚R+ =adh.†<ïmY%ÛñMž”:~†üÀ¨2äý"¸<ðòG}Ïì¡ô…-É“UÒÐÐzF™OU¦S(iØU\­êšåŽïm /-å^>å§Z‚Í–‡(Ò9PÕ$1I×ÙÕ²¶ ½ £0QãœG<Ö¥nSOd²ÛqKX‚–JãP²ï¡ŸòŠnþ,Ÿ·önEÖµ‰%‡´E~ã^†véËš¼UMµmùT…µ¾Š«•Y&‹¨øùÄu0x™†˜ bi«ªI‹Ûå¶‹)à¦ÛÈ%P…“km9 «<;/Ÿ¤°…cR—ÛZÓÿÖÔÈ‘c(»€Wn{þBHR‡´Rž2ׂùS©«žZKJ`ƒÆdO|'mѬ…‚6DE<Š4Dê~-Ça-åžç\J!m›I½Gç¹(¶|/ˆ-œãŠÎÕn-ݨ+ŒI¨µUax×–ØWkÚ[·!G`® X`šž¶ZœI`øi²äNÊŠ/ó»H~ãd¯“Òò1 r'B¡vP»Ž\AV ¼,ò"cÌÃ'\·¹Y«ŸÏãg%©+½†Z=Äe^Xâ–¢4T;jÆ,ÃDgpÕU-.µE¼ͨ UWáǺ»ñS¬ÁÕ®âADú‡šƒæö\÷„xßd²TÏÐu«‡Ô†±Örk•ǤCcÚ+±Úˆ™%Ó€«ˆ†rët4ŸÛbk€<8»½ûMœ¥ëdcŸ¿ÊæZWÆÃ„¦ «Ú«æ1·ìtaÇ#«Ú”|)ßÀ•½* ªäAüg%`ˆ˜°eÚЩY¼ß[7|n,•OTºí²•-—j‡ðãúZ&¼zìb¤fC¥JÈísÖèµXc™¬ž€œ²……à —Ú&ÍOÌœc»& Ù'Ç(¹õ&|Ôu[îä²_‘Üú¼äK!Í`­º[zÊÖ×ÉoøT¾ãùý*ûšž°˜˜)MšF<ÎvóM d.l›RÍ.¹=ÉB¸ÇDÿ€ýÏÿÜüK@óùìÿ°×® *BPiĵ8zÉxÑû d¡ endstream endobj 521 0 obj << /Length 2693 /Filter /FlateDecode >> stream xÚµYÛŽÛ8}ÏWX`Ö ´eQwe,Ü÷¤/ɺ½3»Hò@˴Ř]ÜéÌ¿oQ,ʲ[=Ù—v›¢ÈbÕ©S§h{°؃ËW'³Wã ßÄV8Á`¶ø¶EÎ ôˆåÅÞ`¶|žñåòˆØCV°¼âTœ0VÍˤà›J¯Kª&­ŽFjª£ùâû'ÿkvcÞ‚=ˆ?|,Y©Gx®?§w“Qɾê/¼Jqõ—8›¾½½7Ï749rìázo§Ï³w¯l<ý³OËŽ=âlË·ý(„Ï0°ÃpPÀãM/ÁÐrˆï)Úƒ‘ïY$"ÚyS¶¿Ô@_^ã²÷Ùc•šœúk&})O”2~,Ír©ÏÀ•@K ®†Sj¹QÃf‡¦Ò\U\BkhõlÌ9X«Y~Ës)ä 4–“]ªrE/ç *¿»PôÓ¬;Qï&|ÉüéûVàDéäÙM>Ù¾ò@9(}åvØ¥–ó `ëeà 0ü^`LòÈvwzÉ%¨u”ë÷¹ázÀCU>˜±2*’2Œî{äÍZ'\SCIÊíP¯±Î¢`¸‚ÒˆðpÖ¦Tÿ¦'uýçÜ ž³±sVCÚUfvµÓçæ€,aq| +Ôpeà<ÕS/ eü– ö¨ޏ>ùÍŠmÛQxPwhÔ.Ò€mU ZÞÕ ˆ˜Œnö»6ð/ÃÕÏ YÊÊC.‹ZF³ŒŠ²WL„Ðâz-¢.U amüáEÏ=”QPt´Ò]DÇvv8$‡8tüjt€Ã ‡w<‘‚b®Þ˜85&vÙéJ-žþC“âL ‰-s÷–‰²b‹Ã8ßð®ÚÓ¯$)4‹Ý;ôÌHnTÛ(^ìò°¢Î霋¦÷Ú‘Q©ÉÈ~­)dƒ§$É‹,¢¨ÞñZ­G‘™N¸¬Xoˆ|ÛrƒÃâK[ Í7’fËÙ›ö¼îϬÅ#Ç­~o#æFã|^Y®ObœÃ5‹x‡¬\å^"½©ê}Z^‘uÅb¼¥r3Γº(” *³]ÕJ«Lüþ·?ž5æZðuÞüˆ. {q=S´Q×éótØË0Þ}ÞC2Cna†î1Ò…®Gl!>¹ž—/Z;¸"™`õÖßþŽxº2M á[F_®Á·22_µÖäµ±Ÿ‚’-÷EÚ”ªB<…¶`O£ªTkWçÄ©ø‚•çº.æ@’[óp–Ò²”†‚¹êkTáÇ} Ð_…IÇO ÀÀ ÚšXU)7$s‚÷D¹I“Y*•¾ X­ãPsÃ7â Ip `õÖï·e”aë-ºôÀÌ·Óƒãen ™ˆ bËã.# Á¸s, ‰9Ç[¨~hɇZ<*çªLY§0|ÜÞŒñ¶®Ÿ—ek­:¤Ùø’7§è±ušý_§2—ÛNœÃ”÷ Æ¨9Ó%#8…`í}BÅÛ͵UV³\2Z·Þ”ùºiªpÚ [÷UÍó²J ÔoøÍ%.pÅòµñãî®,©dwnàú¶Ì¨1E;|ÊѺÇO÷Iú°“!OYãGcñ{Å¿Ç‡×Øcô “GWTpÌÆ÷ ¾ ú®k –c}¿æbÓa‰{xŸ— u°Ÿv¾vYÝsM«6»(´°Yo ÕV—@V ºÕëL2¨gêk¹æÝúû^ð­q;(«•`Üâ¦&]Ë+¶IMjœ´A®V EŠîÒ;þê±óL‚b¢aj¾C ða€Ä÷úc¿¯Áé¹¹%‚I‚'lf:M ¥[PJØ{ÿ¸m*LÉKXkôÎ(Ü­¹;|¯H3kq<m§ ú ’¥'¡nWwrh „>vÝá£Éó~Š÷ÓÐÜ!]Ö|ôéšÄÞÊ=‚ÙeÄ 6Øúà[.ÄaW{b:—5Ç:7CÞêàÕ“r¯Õ窦ÈMWÔô9Jê©Ë>-·I€ë“b¬´I;ÞÌVC_k–'úš†ë<‘êŠG[ÂW¥Jš–¾ïµ¤zÙæš¥u¶³¢Ogº.Ôù°#3ÕèsqéD–çtôó“€P‹ÉþÑ¡7U]AèQÓ4?8>!Ç­ÜtñÇ™ŸwõƒúpSÏ3¶H´Ü+¨°ržZ+¹í^AOX±–ÉŠÿ³/tfêâ“ÈóÝßù£ÂæW¼Ùd HÅ‚=Á(¬-TB)úÇ^öÍ÷Ýeüöèy¶7r Z¤(Àß¾œxïóÙ«ÿ<Ù^¼ endstream endobj 542 0 obj << /Length1 1687 /Length2 9571 /Length3 0 /Length 10664 /Filter /FlateDecode >> stream xÚ·T›é.Lq+Å]‚www×Òb! Áµhqwwhq‡¢E ŠŠC‘" ÅõÒ™93sÎÿ¯uïÊZÉ÷l{·<û]_iµõ8d¬ –`E¨œƒ‡“[ §¡¡ÂÃ àææãäææÅddÔ‡ÀÀÿ‘c2‚]a¨“è¿,ä\Á@ø£L4Ô€:TÝ<|AQ!Qnn/7·È ¡®¢y ;Ä  Á P…:a˜ŒrPg/Wˆ-üñœÿ<˜A,!ö?Ü2Ž`WèÐÂmÁŽ'‚€=(†{ýWfq[8ÜY”‹ËÃÃèㄺÚH²°< p[€.vu[~— Ð:‚ÿ*“ o ý©ÐƒZÃ=€®`À£À;Á]Üœ¬À®€ÇÓz*ê-g°ÓŸÆê°þj€‡“çïpyÿqúÃAN^'€5Ä ÐRTç„{ÂÙ@'«ß†@ôÑè„8- þHP”Ñ+ü«>Èâ ‡q ¿käúæ±Í NVrPGG°†ù;?yˆ+ôØw/®¿†kïõpòù²†8YYÿ.ÃÊÍ™ËÀ ââV‘ÿËæQ„ùÌ p ñ À.°'È–ë÷ú^Îà?”<¿Å5øù8CÖe€ý ÖàÇLÐ €»ºý|þ­øo„Éð‚€àK° Ä óŸèb°õŸøqþ®OÀ+îGúñ¸þ~2}d˜ÔÉÁëó?FÌ¥­þÒPÝí¯’ÿVÊÊB=>|¼^n7¿0@èñÁï¿ãh!åñ/_'k(àw°ßù>6ê?9»ÿEæ¿6„ðßÁ4¡Ô˜ÿaº ·7èñ‹çÿ™ï¸üÿÑüw”ÿ+Óÿ7#E7‡?ôÌüô@Gˆƒ×_Ôuƒ?®ôqœþ×Ôüçîj€­ nŽÿ«U×AÆÉæ‘Ò<üœÜüÊ!0Eˆ'ØJÙþI›?å¿Îâֆ ¿¯˜G/nîÿÑ=nÈþñ=róOö¸rð?ùƒ—ê¿óPpA­~o¯€ èê ôÂ|þ#øð<®©Øóv¸8 ðGÀcÍ~k¨+æïA ¸d‹þDÂ.ù¿‘€Kão$,à2þ‰<"ÐßHà7zÜSàß’ßµqYý ò¸Àÿ‚|.›àoüowäøÈM.§ÁÇhÐA^—ó?É<áüH8è?Çó>Fsþw8~—ë¿à£öOƒÃ€0ÛNç­yœÌð÷ ì aÎÏBAb!võ!—µ2[ãâ(Gé—/x9Æ‹ÍÐá Sæë‰z9Ù joçûyÍìº5e].sWæ~ùl6Ð4zñŸsÐ(îØÐXÆÏ>œ?™Iò¹ ¤›}ÖŠP`”*K-Zæ:€ M…Ûƒ!ee3 ÇøÌ÷y}ß×$&ÂrE!ÕÐÍ®žÚòlubJÃßtám–Ãú[§¤Ïó¾9ÆoD›D¤ifÒ©‰w]a&zÔà® /áõSõF½VuÚúÉÇS¦”çG«1\*ĹÍ+sßÏÄ÷±T"Þ·x·Ê’zY¯yb»y²oJËœÜ#dk‘lÍóÃûŠ Ïy‰P6Ý5¿h;Òj17œ©eH2éfØ—Qþ°RõÊ^5÷ñæ¿/üÕÕ%Ë´àRåƒí½Ö°ä›Y\p}ÄÃõ±”Q-çíá¸~î[ã¹nª>ä-ñ«òîp8X›Ã‹†Šhr+öº#CbH9Û#èª7úßœQW"Æ[!”kæ¿»>}MüiÚÀ‡é^þ:úzßûn1 ‰éÜèòV›HÌpªÛFp¨p QržýáX²=M+P•ßQ†{ìN—¯y¶•pا‹­¸}_o=â¶5¡‘¼©%ýÌÖƒ`‘9öi¡Îpðnb\t‡ÌÚi[^ËtÅÌvG¹ÄktN‘ŠïÙû§|6俲%ph^u™Ó@͉~ÊR¯^¢5ŸÑÑ!n6çd}XžìB_*´XB’‹¬xOÚ<¢5ßWM+KžÉûýD_ÌI0NÁé8h¬ã±{YlSŽƒÚÍcÙÕ–­úèkÑeSfÀÒëa|zÅÄm—ü³þ‚×¥ &Aº-™^Kh!J€¾ó=ÇÔžõ¬x3kŽ9@áÀïm¸ûkÇI÷×Z7•y Xº¦ÑÛ75!ÅÂÙ"2Æ;”‘%¦» 㛈‹³Ïg7‹¶LÌüé=Ú†Ä å7—EÝØ#@Á_º¿æ9b›\À›~òì‡QS=ïˆ34[þ&û]R—§äˆõœrÃõ+S}…ó^»LÝáH.¶¬ÍMâ=@f:ð¦÷‹¥DçúÓ¼¬eZË¥×VÍ´ÍbVü…Eú%ÏæDÙ7®Ý éAjq¬K³blÞDh/¢kð½ŸÚHŠu¦W=$.ƒ–‚[<1*×mãj¸L¡RàÏ_.$ÞìY·5‹ÿ´S»f°ou8_a4?ud0ÅÍÙàèÎß"±ª/]¥ëOhóø|~M@Nè”û%WqÁÇR¿s¬Ã5ìÛA~•O„úÔ>Ó›žÌ‘9"#¥kׇM«’R¯ 6õó¿Cu=2§×E1é³ÀmG˜\'í;T”½¤Ä^7­8~!ùáðí……ÁítB'.ð5ëk¿üíÉd–Ú0ad=Ýé)^$øâÙ°F^»-³Žõàv\Æì8ƒœöÐ5É™®üÊš 9Gèê÷8c¥_ó"‰Õw[b~ÉHüH43ùÒŸÒ`S+œ~¤= ÄÊxÒlMº»I ÝÂ'FYÿZv M† |sC=tz†4IW¥ÚÝ6ÇÄ<•¼ýx«”(f¥$hý8zíU8OïL€Êa0N , ¬ÌÐá}É'JšÓB1,n¬4éÃsù2T!«Ed6wÕ »Œ€‡Z/¿ÕÜã5A€ëçü¿$ލ>¹f¼w÷Z¬±5cíUV›¯ó59ýjáAÐD®±_ÄÇÎÚÔé.àÇù¶D¤”¤6NØÑˆ‡6ÞÍô‹G¬àõS æ>47¬%¶8ÆU&Øã?Á}b/›øfðÞáPÒ#qåÅžø7eã˜ÚAdOwüN¿ÀME†,º,KBZæ&o{y]K¸XÃή]qkŽ=Ö¦&Ù9Õ4*ÿUÆéjÃÒƒ k–…ÍT¸ÎÛºz æÒïb£¯kužЄÈ9[î|’»ì“Cï2)¾bŽÂ,¼ ½Š¿*•'qEˆ°žöÅ@z|WóeÁP‚AZíyÖ@#ÜáZ_™rØiêÞ+«l08øp •A^ÊŽ„†òÑŒûšÒjL36·)¼Û^/kV3¥'+}1à‘n ãäAšTy²7¡èÌPÚhð•K ÉaÎZÐÓe-Ÿ à ³Þï.HY™«•ñzÑ2Å>©æÖ¸Î êù¹Ù®ú0ͳ¨^¯3ÉÄ«‰Å‰Dª=×p'Hµ™Œú •f˜ÂšÿŠØ{iÌ:½.?mÎZ…uù•5™¢>1ß4 cÇqE5n’ËÛêf-f”nŽ—´ÑdÔ¹ûª}˜Ê,”®:çñMT:çEú¤–ê~\’ãöø?H/$t< µî…ˆnßÐSˆ¦Ì±˜«kK%4 hÊUoëiœ}yº ™‚ƒ78qñf {ë˜uÎŽÞ¨/G~Ox'ŠádÚ÷$—¶E1rud,²õž|wA=IÌ<ÓJ'UU…¡¹=µÏx˜ù+)±£®ËÁE‘ê+ÒDëY\$öÔw‚ ßHÌy®‹¦ý=Xï÷+(õØQ¤x⤂ѱ~ÍÊÌ ¬z90m¨?i›€¿Ï§A:2ˆÇ?ü±ƒÑCöÎQzŠ•ø&^ŸP$~Q¡ ±ÄHˆc!u¶7úY­ò®ó6)P•šÝÄ»øî.×Ô4uˆ‚!ŠOOÄ/ž±`ýºCõ»)/#5_ïÀ©_i?}šáhÅv²V»¡†ÕÞó| =ú³ªþۯ껚î¿ðYܹçß;;¹`k½Í:çüN`ÌßÉHß­­ªçõÎùrœR‚Ž)®'çirè_¶xo™¹‰×Ž ²O”Jøªî$Ë›ÑÓžöN.C4Pd÷»ù8Ç{?{õIéŽ*Iô›½³ýºÇb_“ÕÁ¶œN¸”†™‘\z*=p&„¡?Û'ÕºË|uhW³¡H¨¿Ôñù);ð(˜\w±öfÜXTüÕÄ1dÏ­cÛ@Û^EìUØ ·<Šb—«vùÕÇv÷‚`_¥(kp&ÙµÓd±ùCÐLJo7º`¨…{âz»«‰³Ô‰™êšlë/rãD¨u³mF(çÎa3¿ìQ ƒÇ‡eòip™çM56Éæðžaàž/Å›½®šü¢•Rç°<ñÙK‚ò´ÜÌ[@!ú5™7Ã}Ð(è`…{Ô^/Ò9®Sæ'¢m™+ +´óŠê§¤{û¨Ž¶1%Û¦)¢àP@ÁZ5…EJΆ´Hm:ÔDZ= ¨Ÿfª ÇúñÌ»»æ99kï…X‡Â$ùVhô½¾å·ånÍš–îÛNÞä.Éw?Ô<]øúJÖ>šÃ˨ª²vã?ûNÍ1¾á.“ØVH®iOæ<â5[sm(Íc¦R–¬ï,h-7̈Õ\|š+ñs4ÊÞå8nÒX—÷†YÀ,ýâs£çïú`­Ò„æI°.Ä´Ü Å7Ý!Ï´>¼Ks8ŒZ±5Q²°|r¤.Îla`^963à#¨qÉlœ9;Úø%‡B÷îÁ½;ªõÌî!F*=ïziT†jºe[€³&Úe:D!¦Ì[ÚY/åÐÝX"Äß¼GÐ.¹8¥£-îqÀyb¿r‘s %XЇ¥$-ÝÙßpmù¬¢îN&C³Æó Bâ> "mü(VbÄ‹pïø¸?Ø¢q,:rít÷¤¸O!@û61·;%òÛ‚t(mj³ÿ¦<Æ4½°v@ÁIãÃ/2UžÙ^­„ÜÏ„Æ×ËRW;ûsÞhb1æ¦I®þˆ•“j"¸à·X}¿vå*„”lbÛÒ¯>Rˆ>»’•a8C;Ú'eÈbmL8»¶u}vFŒA®ÛÅ œ2à,·ò¿PºçVH_Ç@(^‘æÙl.‰ñ„ÔF¾uÁNk­y—\…;ëüݦX󉇗éê¬IöŒ×Åñð^*—ók‰Zóõ¹˜ÏÙ™~nXOÞ‡¸2Í£Ü5Ô.ûýµ~«5Ï^[‰¡à²7%¦‰¦®ýÄ¿§í‡*A7Y¼ËdÕôOK‘3î÷^aÔ¦a~I¹Ýyµè¾¶_CŠ|#i‰ x÷éuwXˆoÇ í™|ÃÎæ]ï•É=G÷ÎØ>M8kÞØq&A>£nŒ<Ë\ n?³Â‘•³ÇOÅXVÖŒ¢X~u”A†}¹|POþIF+¹: öÑºŽ‘yéÆy\~Q™Ž— %Ã9KíÈ¿6Ârã”VÂMá—Înr:󾼸Xƒ]mÿHËõê¼ÊÖ/Œª°yõF¦Ñ&L)铦ÞP$hwæ¶}Ο3lyCè‹\¬™œlþzÔN-¡Ä²kü¤Eê a¶ƒK3¯érw†&˜"Gm'™»ê‡TÙ”3OêÅ1–YLú !ž…¶¿Þ„Úòƒ”ÂÕ¶EVSÛ¯ˆ"W^ †WsÑ\ž³Î|]ûߌ *]‚QšX-ò]2XUIƒCÐxVg6åÕS…’sû2Ki'¶_cbº ÑN¹‰¼^a5Ä!óÍ~ÔïwÔv¿ªêÓ¿&_ÎMqVíòÉÉ$Vác%åõUöI¨œíF”©Yüü˜ü‚E×óh%q7©ßC`’sÁ¶œ½]^™l/ož{ÔäßÛF¬Z‚½ÖzôºDÔ™xpØÖKm¹ñ^QLÜø!ïsè­ŸïÉ»–UŒ<‚S}.×î»Ršš#™~Ë½Ž¡¢Æ›M‡JFïSîL ?ì{’¼¶œ&¿šIóòɶ”ý±®ÓÔE ÝÞº=ýrÞi¢´^þµ¯*Ëé² 2*¡{ò”»”¼8Kàhê‘iqÖ]ñaÊûŸ‰•ßVv•>áõ&¡ ´dê3ì¨hœ¯{E!d ósiPùÖ¶tÓçIX’¢ ¢$ÀŸŒ ÛPC wPÅ-¯R²óÚž`n䑾a£“xš…¬´à-Œ+¤çêÌVÏa¶ùIz½©4= ¨øæC* !ýH=Ø÷&ýÔ²æu6\=\x²Ž;mäïÄô^—5˪Ëç-\Å8FªVb‘„g}IûJÔÂÓ¯¥æÛI¸wli5SZ"[a2~c¤&Xë^fÏØ%<Í£{ß ¼ëY-ÔB·“]Ø– • ù¾%ò>!òUì©—|ò|7š£Q©9}¢eð!Õ׃OÅbíYUôÂ:98Usôéø†e¤™¶½¤;ˆ¿Mq¡¢†"ö¤B¹Îãà“äXžX)¿ÎØÆˆY…š”'Ì/uÄOIyÜaZmÁúOí¿¤Y½€]§*ÇÖ[Ù9 m¹xéN‰Q¯{bIœrd»¿A¾Uš ô«5n;ôeÌœÖLp°@ gW™+Õ3S7Œl¢*žÜ»ŽKpÕ=ëfâQÔ÷S0=îà+X-Óc¤dÒhõŠ)2–+Nư¼Úh-aÃñ R+¼èPV%dc)nR9¹†‹£òß_jŒ˜“›ê¿Éðžî^Cu#¥ã…i·ú9·x=9 +Ý—£¤Ž‹rÚ¨Œ—wèí?Œ‡‡˜ý@¡~M&4SR¥Äö²g4O6ºn5²{O¢•iìµ¾Ð;aÿ€ðxúô©µÁn‡”Â4DÍ4õ­¶ª7-¥½ù”…Ìv1–[¬Ä¾ðh vÐT7þ·CËQmã'˜¸a»BåÏTòE +Mœ"YðIGyßbÃ^€7T x¸dé]ƒU%®B@ÒÍSaÐWÔÁ²âËõ6N)îÆeŽ/ zrØAB.`ýÌbâ2qË,ggx}ËÊT-\ßHË"Œrê'?§–'ƒg¢çw¼ãØË­dù•£6ÂjJ„æ‡Ü ´¯g¡§Þ¥FÁ?ÇF!¢C¨Fl'Èij Ý·³úÈß+`.áú•]¶A‚® {'êIL¢FÆ‘ý € ›·ÅMêV’ÑáˆjhYO¥oø¾˜êiŠ ?·AÞ-]E7Zaٜѵdœ¼Y€F·¦ïHF >ÝèògIÇÐJÄ|W1ôÂCàÝ躯}F93˜Œ‹tEõ]—VëZõÐYo.%·Æ”ÞÖyR—±ÿdë ‡n>³d ëø5ÆTùa^7¶;Gí¾*œn½:ÚE³A,Çi::Cͻ̷hüI¤) feÁ+!A„«5Ð7TèJ¬RŸt5ÊŸ®õÞ³ÙˆÝsî±^XEtBºGèäyfUYÜ–p Ö¿ÿJÓ«Õ£Q¶§™¡Oú9Ù›Á]Z£ý5Ìñøk¢æA•¶#ÁKöý^†ð˜ûq¯¬ùðä'ʩζíCm®)©Óâjbß²hÛ\­â]úáHtZyÑr„(<„PFD4B éF–†gÒÝð¹zÚµå+|ÖkÑðYî#^S!OæíüÎXÕÚ¬”œÈîT¹°QKñ³ØSu0î#ÖËfµƒ”9¶iI0'ÇôítÜνY5Ù3äÔ‚Á@‡Ü£ÁI2]6"÷>hª|IÆ‚MØ*ú½×뫽ü Á¢¯S^‹$OjA-uEšù•¯­{”¼@=‘6œþùIØVW[ç¥B…Ct=Õ £Ñ”±·äšOe_~›t ½ú¶AûzÐJü£˜./øÅâTÇå K>2ƒ™1Îz/$ [1(ƒ,ð §e³÷IÎ (ìÍZÉ;¾,^B3 ¢Îvþz®g¢ð­gŸ›v™"rRG~pUͨ\ ï-L!Ù}>KbäÒ4KK£*DäíÝî9"Áú`æ$ç}{b­š,=Ä&NÃɼdúùÔ#Ï=äãB<3ÃmŠ—ìâ«ù¢Äòç7]wLìýuB‹EŒÕº¬’ðWûÓØEÛ«À2ÌX3RÖíŒ9¯5HEe›¯«Õ¸J(Ùsál÷0zDaØÈØmÁ•©1¡&´“‘í,t¨ßÆ:øÜ ôœÓ‘}²ÒŸ!ÎKlÎ.%Y³®³w, w×Ìñ9æÓ~ ¹D³>¨eg¶ÖsúÌ8,Üo^Ìe[-y¶$[PÖÐKÀ°ì_TÌfÙ¹ž£m¹­JQÐä|æ'‘Wø<´– 8H?O›Vu`°U¹0¥•¬<˜=ê·Ø¡$œÐ?¡³ž[ÖñO³[Ìcö•J=”bS3¼ø¹.κ?–D<äÂíN3’Ü™íF Tã¤ßp‘jBi†þÓ«œºvnŽPó´\ç4Ÿ¾¹ÉÏ\%ÓK{+ &YËÍm¹ßqƒ?mŽÒ2WLÆ»?®ÒÊ‚øÐ6ÚœÔNÈ7~Qv.GK|”2êq!™›V«ûjá~/1Ö±=bOx½»ñ¥`ʴǶʻ"«\Ýó¤},® û<ÚXžÀ–Ò耼Õ|qZùRt.…èæ–Ôiúé¶8!µo f8 u«ù¦ÁiëÖñÆuòF4RKä S5û«u!¬MnëáñºfAbz‚~YptOŠ×±e;"]­]€ÜÚ—ûþ Í‚iI!¢ ´ÓÃ]´ÄÀU#IyüÒ*„ޏ©ê&z¡ˆ¦Ó£ºÌFºß«1¨‘‹,;5*8X‘Œâ1·}9ˆËí9å0uÈ[»R§|CÅBt–°Í*{ý+8e¼™XFîdHÚeïu‘´Ü<\€²K\D4Ê-§§bÝônc†dãùA]Ww_µ0Œ„;.Aöóû¯õ›¥C{‡w$Šfh€ô7û͓IJThõ8¢•/Ã+Ù;}F„ŠøûQÉj¾Þ4¡2#af«}1zŽK#å7é˜åÓŸnE%ò5qDò E ²ÙX•¤0Bž 戟ç×ÝpB2©wÑN PÛ®¨ÚÓ•N/D+Em™m*+Èã[}]Aº¥?¢NŽ®ÙÈ#k©¿£Ñ&@6ÁS¦ÕšH4`ÆâÖ(U´©Ä<ö}Á¤ÚØæYéJl85.s±ùª‰Á$t'å»Ò³sgbÞÛ[¼KŒÓõ;ïô#ï÷‹#/Wø¼l^ÃÙuT‹hÊ‹Þ6œ^ÁùÝß•AöϹ©/¤D,Ù¦c»¬cÄ(wl…#¬í)Ø"Š&ã~ìeÇÆ×~}CUÓµçà<±DFÔQs&‰¡*øQ"\™ùó'}~&RH¸Eõчó ¾ÃxçÔWw–<9YÎ}‘CíøÒ^ãÑ'<­.,QÔàŠ’A\Gâ*Ð¥ì÷¥ñ—xL „,{‡DÄ×8-bf[Q ÕÁ†¤Að5ºï܇ÃO¿$IŠõejm«Œm_¢È÷½=7ÖhTP7‹Á1«Ó_?ZÙñ'pËíKÀ£7>¼Õí¬›BÁ¢È4;`F ’.(ú€þ’$‰=£ÄÓMr¾–·•>ZQsCw¤äG·>fDZz;Æ™³Ó]û1Îç˜sfgÄ1áx߈‚Â\/ô¿Oáåhç€V£ž,æÞî³g±s”u·iR|cŸwß,â3Zbû×dÎô[PSa›=#ÊLÚR´ÃY¢¨ÚÞ~½ðV®?æ97ö5¿QNz–ƨ%ó}K]|­ÚºaóÑÉ¡«-æÍµ½p4VÎñ¨FHÎc×lï³×E=kR4:z^ìbXÈÅà¶aÍå,óÜÒ»Zš³W†KÈ*<¤=è·±T“ÈÆUkE ¬a{Ý’ö¸äêXª—ÔÃ#ú9Ü[ß´·<¿ew­?H.P| ÒÚwR6#KsE¨'^lK‘aI˜{Éßbªla×OÿÄ]eî¶µï}ý5R’Õ¶/­è{î!`„ûñÍ#f.EÉ‚Bñçe}àó´¤Ã@µêl±æìç+§$-,~²§ZÒVÕw|µŸ ´sRFxͱa÷Œ½½’ë®,Kç’ž\KYX$O‘I¨a)ïÝvG>xÚ[˜@1ê”VÆÇö÷Ù¨²¡[qˆ•uÇ&ï~r&\ìfg‚2¸‰ötò…p ¡MŸNW0‘ép]u‘òר¡Ïùai¶HŸÂÙ/“HÍäíœ6ân¥´o}Á¤åšÖ/G¦·.À_V4£äó®_¢¸}GîFsøY¨`Žo1ôð—|šp:jîâO¤V–ÆjƒCîÅȲ›éò…ÖÎæ›YXƒ„±óâæù ÑUËÁØÔÆT&ïš5F,>¹BÙ7WeŒ°W‡±šˆ >â&zÞ…ªæˆ'Z{W†<ý„œÌ†òj^ΊÛ$vè ǺµÉk|f/=§.÷/›óðîݪ|ŽÉÊå9ŽÛÖT´¨îz"Maíxßû}Lî=…ví*çTT]×n$€´Z£ÊËzyO|åµó “²bùâ¼ 1ú^´•ºu¯Fp‘Øpäb—x+w¦vX;ÇÃ0*ÇÕ:A›Ì¯ 40ù%À@k¤ëÖæO+ó ™è(Nicau”‚«ð‡¤}Ѽ9»+&r¾Él¨aíŸz+ÆÅv7ˆ‚;{ ¢Ñxù¿÷|@žÚ’•ý$*M—ý B5Ðú¼{;jÉØNRóå ¬`ÍéAZØû5&œÑLÉ49½NaœŽX¤ïþjiFö}Œ,&¨™M™¦æLù«¦œý»Ó&ÊÕýÒÔ¼.ŽVþ®–!âxŒ! wÕŠÝ>Q²Ñõ»i≠[}C=쇯$ú²Žj¾¦ b4m¶CyY_3Èb€ -¹é1¢¼Žbbˆd@iõk¥tÒጇ?Ó. Œ4³öÈŠºO½*ܺȈw] •$¡U(yÆ„ŇÄzþà•ºƒQFíê"IO>aŒ±ÃÓüeýa#¥þ|5´œ•…×â ‘ÁXÍã=ñ· S¸ÿh—Sóó;…Þ†ãÖAÐ"“b?Œõc„´ÏæÝ™`tâý² îÙ­hvüèuJcm“}^ŸPCæé‘®ÇöXºÐ•´‡ˆPÕç²Zq$²Ýg–7)žÙçÕ‡mÀs 3m§ÏóS ,·w7‚¹ù]ˆ†bÄ^1SL,ì.pñóBö O*z]Ðõ½C™·ûÁC»í°›ÞÓAòWuÆß8A-Ô7!,Ø$þQÔ¼Ô'JµỤ̂ܺlæŽ(rúð}ÿèÔRw;M:Ò'f'ûf/Ï™[ŽGÑI-̜쪟½Ý)Oâ÷Sò²¼¥$së õ¿(Ê 8qxÏâ~ÂY;ÓŠóçeÍ-Rÿñ>ùìöž"za5òYœ#î“N4Ǩ!ä)Š“7ƒ±Íæ|á  6W^ãÉó|lÞd*æûj´ÒH´:aæíù¦ÍóôYÛlâk ÍÃrÚ,ì9ô„z)v^Q´åtØÜdׯoyUx„z'¼ßÖøýܸà³»;öqQ°\]°i ÒGÎWyPF'+†*Å-%¢v횟©|°îû™Ä‹ËaÄó\{ªo„;Q$™¢àÍüÑ™¡äm®´¦.VEiН‡›ß_%·¼V?PFìüð±´x®V-ºÿ³hxÅíÝV ‘A@,¸ˆ-ý9"¼WÕ6».w?LWÒ ÇìÐZA’k9ìó¹bDæsù}2$šÏ/já#ûÜ‹ÛÖÖscAzþ•eï¾ËCZôy0ŠæE$š*B²¬-8’]"²oNãÿ)ZJäîåË!zM«¶<ýLÍ ö©Ü×äÁãsv4˜^_iÅã²>uÃu‚€/ì½›/‹î³¢‰ZBÈÈuÏÙiÍÈÔG$Þø‰‘§"i§~b¼F‘BÁEž5H{>i€'"ZÌ .¨TvÀ8lÒ£T7¬¸•ÞöC§ËðÀz3Lšçù>W «“Ê“ioä=‹}¼"Ú/šÉÉ«B¨W>Žj÷X˜Ü.íãäš’öBªŸ S"à_b6}†Üã…­–ÈIKù™É´É5Íׂ,ÚÖÓIE¿šØ½èþâ9šR©û#Ô˜Ôx³Í:u±”Zw¾^·WúJI®DÕ‘`˜â狵 |cÏ t$š%ö¤´Bm³†“ÿDĨ endstream endobj 544 0 obj << /Length1 1400 /Length2 6240 /Length3 0 /Length 7204 /Filter /FlateDecode >> stream xÚtTÔßÖ6)ˆ„H— àÐ1Cwƒt§RÃ0À3ÄÐ ÝÒˆt7HHHI "­„„”¤H¼cÜ{ßÿý¾µ¾oÍZ¿9{ïgï³÷9Ïs€L:úª_iÒr%I?'{^½\y®¬láÐ¥%ïzöâó̱ßZc£à)£òW;FëÄé›SÌ©d¿ôÌÓ$-yÆiò÷ÅKÜú1tbï¾¹-ccׯ$ñg«ïMöb%/UQ o×ê|S[š­AI/f´»ª‡jµ4X:¡fË]uNýòÔ,:]ë9³ºdç9A’WÍÝåáÁEÒ>†îØ`5Ïõƒ(R%‰AzEA¼£Å|âËÜÏç÷ü¬’É«p<žäH.M\Ïê7ÞÁ Œ¬vÞˆÛð(è rØ)¿Ì–ûÖÈ Lâ’m¥ûîíú·†ºãàEµÆ›ajìà[í Õ²/îï©´ƒèkœú*ˆ†«ôRú°øÉóÛ3Œ¾†üñL•3Ã5ëïZ0‹vI…÷Y÷L˜lR—?‰íµKþT;y^“n·óèÚÀ†J¦1€“:ZþÒñCé P:hBaþŽ'J._Ss¶­Pô–ey+Ÿ˜˜nŽ^3ã§CÛ‚:žóâÛ•WKUJ†ýtW}–TOl?1æìp^8ü ¯:Fô2ú‰U»ã3wÙ¯ìøÏMU^}-kŠêôÛ*“~ã>5[Z˜+ÖðùÇxº.[ °§Ðâéñ²¦h¶ª{ëØ®/ (nOi|— ¯Å‹‚;QìwHp¿-ÔìÓ±PNI‘Äܯ‰=ƒGú÷—}í6aÔÑ+gûÐG¶K!¹Ô$•ÖE¬l}H¼R)˜‹Ÿ¥5à§ú 0zL9üMÏŒPÊôiµêb,W¹?Ñ€,««ÇЬl ´©,7Ë mZòSlq÷`ä}†æß&ü®eÛ¡•ÔÎ^R0"†¿}ÉamìËì~ùèX¬fP$‘õ‡.Þ+ ZV¬ëqOú³K>Ëd~,¿ŸôóAe{#Ÿš£#HyÙz­’¢‘£D¡{]7f’‡+÷büËŽqÄW~Ööz=XpÍÑÉu‡6÷lmåD–ä•J+ìèµý¿ùò»}bÐ^û ß ½°Ë˜”z‘tC#ûÅì^¼àfŒ^Iðã¡õÿóyÌ%&¹ó§0Õ4 CL/!{ú.C+­%ÚŸe‡‰’÷]ýf×Þž•Äïñ¥EÑߣÀI #OUÿyµ#Úç3¼=Ë<ÿÖ0ïú6WÖ@ê¼xUGX`þcrŒKÒlÿ!g É%M¾ùi;ȳÝ}"¤}6A¦¸±ç»Æ¡Eæ›Êz‡Œ¼IÝö­¸Ë²)¯¦çyL°ÖèX‰¼Yera•zM¼8ç‡LnÄt=±l\¯7E— f¿06gηNÇdCµ.cT¯ø€<ß^Ð/aü”&nhÍb9}ÕÞ–ýx4ù'¶FÉv£éèЦ. ÞNb¥˜e¾Â‹A7è±*ó<‹‹SÄâöµîHãË^ÊÈ«“™þê|#N2Úl žG*öæ‰çWQš½6㬵^¶Èе¦G –Þ™¯´ó›>œ=D%¯á3¢¾V/È%"Ú#Èô—©üØÆyÕõLŸ~ﺤ`ñˆø–ÚÚó%¥8¡7öq:%ªOöÊ{§ëãfî5~XÞ]cFº~­ž;‹-Δ7¿ÕPS~·íw.ÊúojlK±~äO±—Ô” Y †Kð·<8¤§¢î!%ÀV p¥¤°ø`…ñרÑÛ’g1g)ÝŬ¾è&.þ"üý­ðàGÇ’JuqÆ+ó;X%mà1ïÝÄ9"óÛd À!šT¦*¿P¹ò2ã{Û>6õ –WDGj¸øá»)A9ÐgÒhÕG™†dØÏdv.ÚPybϳ¿¡·žr‹ ª¿h´ˆ#‹;k…hîrD±\/'TÝëY›:Úæªpvß/ßÃ=74¤Âî§çmMŠñ_³hCP†c !žô¹‡©@–Lß&xƒ¶$qÆÕ 'ÃûwYÕ1d#–ÍÃWµeóñkíT! =ÍR{}ÎŒZsúUxâ-Ƹ’½Sâ1$âÈ‹$ð-јiÍŒ—?álòß:„Q¯ób?X-7_:rÊXè[Kµ`%Qæ¯}%¥+z}íÈÍ!šñÃÀð$áf£—¥B3.V‚øä†é“h  ƒMþ”äônÄüz6¸!Txÿ¸úLì^í™ìÝž®wÈýåšgZ}Û´6kÉ…(è,ÈKžŽª¶†`=|ù|s6DßÛ¸j•V3“1Nó~"^ÄpÒ±à+Œ#Ô•²ñ´ ´ü}³ä1–#QîŒÉàøÞëä¯5©æð±œYRç :›¬w*:øS¯œ¡¡ÅF?®t¿†HÀ1ËáöÜ}nwQÙí K’¢[£i˜5§îÒ/Ç’»OKŸ@éc×v@vgY^[gÆ^¸Ô¹ÑØ „9Ü×J¿ÏL.Ù%‘f3¿Ú—Lú‚g¤u8­Ìô4¼cž@æöHþc~Æ·\<:w~ßÚÕXSÞ¸ÿ{ÕÖèSüÂNÁ·CG‚“À®ÄZކ÷‡\xv<8#sÔ#suœÑÎ+ìI†Ä‰·:ÇMûžZLIp½)R»¯l“L=ìlˆ©`x·).5øÕNI3v £ÎãF7ÉÅ(˜Ò…U䱘ë©.RõÛÕe“QN‚&¿9¤/áÐÍŽÁXu¹tå_g;Ç·ªœàV~ŽŸB¢gäyùÌâäç ú6æé;ÿ¾2ž—Yï‡{WûØ$q9x2lx›±v]¾³”Nõ¥É‘gÛÜ/×éÆXZŠŸ·Ê½RP®ÊL3u~nqgWö)/Yñ¬ût[â¾4-“9ýìŒéËÉ w^ÕzP·m}Ô¥ŒŸôQHh¯6vŸ£üBÔ[»Ê]¬j@Gª<¤¶× 9&ùÇÊS{`ôrÜHU»o‘r/ÍÓ‰å”Mø0ëNlƒèYr,‘ÊR§\ȬHVy-|&ŠTfŠ?ï=ònm=ŠÏ‡ÆÖü€`[ú ÓÕbÝ*é(ø¢¾ƒtã [CN¶Õ±À5N÷ÖÑûƸbzñIϖƒœ×™G5D”¥5\ëš·;A\Røà.æçÔPògúÚÙïµ)ò·eŸUuÅ6½¦[ó!eðï)÷W¼ÃKë 刱PV Pã={/Ë0,èK²4îLù¢(ðË‘†;tPLÑÕ¤ ™ÅÉ« ‰9¯¡§á¢óI×­I¡^™98ëhî*ÿ„‘µ(”<ªúêEŠY³Ž±Y[›ñÛí»€y…\ßœ˜ä>{ë'Š7¸ôîŽù…_‘‡xbLag³2äÞaé«JM)Mw«waö®&½8mQ“f]fŽ–9¼M­}>sBs8 PH1xÝYÑ0­Ý~jK=¬Éáøö`ŸCçÈÃçDêÚÁmɸ†vü¤ L^1 ´´³d_‡yçx”ÙÕ¾øŒáUäBSàdÇauduìg4¥ï&ì×zšF!ÅX‡gNÈ«…øgMDÝ.G·Ì…7ÁœJTXiØ‘&Ža„ÏlnYñ¸i|fµ…c6Ëöözkd¯ƒiU¹ñãD¦m¨|Ë´í\xßb ;FCM&³nÜ2ÐzB–ºß•+ÉB§YXîýšcy_À2N˜ŽøCv\‡ÐyNµ³•Þü”enŠx¨¿í!Æ }v1þŽŸæ’(£"g½÷٧⺚Toúót åx¾Žo¿î;Çõ%×[SšF(Q@§Å&åö¢z3'õ„Ü8¬ª”‹ùÚN~ù=o­T9#ET¤n“\m©Áœèä êù>Q¹<µÒtkøº%´W/þn¿§Ö½·NÊŸ³ ÙZÖ|ü7†•0 NÉæè.êL•‘/­zÌ]Ü bˆ¢Sí'Cë¾ ŠD˜‘…*‡2v—Sa½1ó«oÛQäqÑ’ŒŸh ÿù^þfP—Õ°pmpòaëG ŸÂÔ‚«¾ ­¯²F†0ådó©Æþ¹]µÖ|Îë"ªŸ\j œâuêS–íΊó“iË.q²(â‡u¸«ú¤÷DÛ‡±”5ÊÙsÔmKÒV›MSÅÒl˜°&ͧé{¶^éÔÓu·cVÙuxW´‚bq:>ÆQ¨à+L}ì9؇7%K¤•f´ÖN\N‘núp+-ž/4úÙÿ~P-0šxôGÿ1ÞÅš6Ï"œÕéê>•ð`¶~ì:ü6uåwTÀÆa½äòÅãñµ> ¹óe\±ìI¸Þ® õïkÁ[}W‹3¨ªè—¨¬äÄâvæ»|¨0>Íàäªé{#^¯ç¿ŸÀ†D¸lpèŸä·fˆ’™ƒZŽ9ä_˜/t}´—âÉa¿´°(Ê(nå7*S|#ßeøo5¯ óÖúâÉéÔõí91•>WCþ£sž- p:´8¨Ýæ@ñÕB…õ7zgBžêJp£ÏL-›ç­u®©$I÷Ið7P‰—Ú@cßäãô=‡'u=û†v¦®íaë{› ñúÝôiKƣ䒶7áÚíïö¤‹LÔã5öù™û¥ÅjDç0ˆ:¨’øx+`•èH $D¤\ÛIO-ïà”Eê¯O·O³Ë,u‰)*ÊÅ+@uõºÍb–”wGðý*«lšߤ'Ñ«·hc¦Î*z°ý ‘¶=ùYš _ÿÈ+È2±?0öŠUŠÖ9ñö¸AýnÜ̓§R£=¥Ïï)äPZä¯:ýÜXV^µ«?lñ3>wj‚M{òy-¹ôGø}?Û±ð:+CP ‰Q¹»¾W€} ‡zœL§Ê'î| °*ܺå€i$ð%ï•©ó!‹KkŒ†Õb³6f‰\¹ô Lœ€aTÎñFkXjïU™Ö(åu›#TÛõì)sLˆ(] +‡êüv’lRå˧EÎìR¥]›]Ý÷^éXò=›+Ù‘™göHnÝ ÕQ(!û´P3öqv#7&-šÙZ˜]+þ&Àƈ~J·B ä Upó®oÆ–Ž%!mOá¼…Ý￵ÄÜ¡‡œóÅÖ¸7J_Þ,Üæô`¦Ö|g.œÁ½vYLM.Üÿ¹HWÚÁöD´ä;­A÷7ͽþ’yâF²)?|wbÆ~¬‡ ödªWüÀ­}P/Í3+dƒŸVÇ) ìÀÃŽìÕWÊ„dy¶Uª k¦0É´°H&ÙAN1ÀEáw: Ð…$^_˜¯Û›ÔMKê0vÖA{Ì ¯Q0®äŠÜâ·ª¡Ñ×–F"É•”Ã0Îm–“Ã:.UÖ<*É–Oƒ½F;¯ÉEC¢¸Y²ÌŽV¿› D®/J±ðoV‡ôrðÏ=ìÃÝj!2C€C ~ŒJZ.øÒFA›ÝW"SŸ_s0çL×IHP¬Ÿ’%û \—ë„ñ:5nüû}»T} =wa¡O&JÃu´qL5ÒH-\êaÕ…•·6å½'e}¸Ç0X89ÛuLùo—¯ædVú¬ÚÍHWœœ=8{\•vÏ$ÙO¼…¢8Q¯ö¼Ôø]çÏ´M:|Îμޢˆdú)ìøaÛõ—ëP·Â§%îäi2[Jbñªh*gÌ&GŽGõõE¥.‚´25¸øœZï}ÑÙ­rí4!Ÿ!¨ßÏò:™µ0Þñê»<(×U4§Îê}"+ú„=…ùúÑä•a…P÷sufÌI!Eƒëcxz†­S„“2·ÃdM  µ®­·Â—öTñ;ÇÙÀNA©C¯]GZæ®'vyw“ è¶;[º G’6]}ã»®ðhHÚZìi÷Çgdˆ¤úã_`P¶ÄMó¿Î­íøk_‘a…XOV€÷æ°ÍÅ ~FâÞ‰à?¥œªH4#«*(j>'¼Ÿ‹ƒð•ÑHÃÓ•Ž |õF_skµ òíì\´Ÿ¾ŸÙ1ÓNAc*àÃìOæÒñä— ÷ÇÈY²·óñÄ(“åƒ4:L‚ßn LVÍ×žî ”hÚ­ vÜK7½"Ï}O_¯U³ô1æ°Ê«øuäžG Ñ~mݰ1Mî‰T?Æ¥´ñùØ|¹û`' ©)¸÷®øNø>ç%y“ˆh§+à[ÆÎÞ­ë2Esntfû—åt %ñ=Mg}ú CÖjz²õ ’,ì]á&ûµ³ÛÐÄèóZYçþØãÚ^âhp ¯IÝz”ìÁËͯ¥Žº*“ZdFí»º]O!ÃÖ¢˜ëš-Uj. .w_ïpqÑQÁ·ô׺ô.dŦ3Í>Ù‘‹,¤«E]ìKOS=—¦ÃŠxDôs¢˜˜±?[×4/ë;‹“å:Åÿ~ö¼îiZ×Tº˜ŸÑÇn~+žÓá—”ñàgSˆ÷iNš‹SÓÒø¶;Í–9¶Ì c“ßZoMTQÓë¥.¯ÇibŠzân÷„-§Í«Ý¸ê—4M)F»ÖÇÅi½ñnõˆÓªK'¢%tu4|ž|VFõ©äô³á ²é‡nE]98± Ómí“ï,¾Ä}˨#®ÓÑ„c`“qR¥y ë…9~R5g/3UÏóq>j†‰Š)ÕtC½ ƒæÉV³›wVÝß“X&rŸÓ?étÛfÎÚ›”síCòkÜY‚òÊ)-6æo›VûÞû¨a ¡£þN’wwémõÉÅâWt0ƒ/Ƭ8p-š Ió÷¶E¬Ü{,½)?5­åä˜^å]‰€X¤ÚJ—úE(érÓO±ðº—Ûgÿ$M½äüám‚÷d7ë¤5}ý_¾”WvnBæÆÎP®D¢. ¢5­æ$Y®ÀñŒo3 Ïˆ&̤Gò©Ë·¨_ÌïÂgÂãî¤Ðßa>~ìËõ DÜ÷ô[çbŒ5œxPb¾B_B<,:L"D%µP£ÖVÁÚ¹ì+gîÐæâ 0š7ãB><ýþÁzv…QÁ7¹º¥#K\”ön£´ MXºžˆawa‹5CÞ²0Ô_¹é¨>ÜÍ¥N˜IDÄTŒ‹l4X„/þØ6[+¸PD4íŸ×åU‚.Üœ^à$:7Zqk¹¹´`÷‹ lw®‡?K›Ëâ1ÍÚ -^’yèÉçÊÙýæ8Vlôsëó~ïÎh¶¼¥)æÈ½XÞ6|~í©oKÂÃs¶)©ÁœeÕ7¨ŧ'Ñ›äŒÑ=jRƒ¡Þsûr¯&ô6’Z‡„¼íXCƒO#h– ·‡°³#”³º§SVº.¢ÓBäÞb¤ˆà˜†øŽ°N¨¯÷ÿדü‚ endstream endobj 546 0 obj << /Length1 1445 /Length2 6402 /Length3 0 /Length 7377 /Filter /FlateDecode >> stream xÚtT”íÖ6ÝH§CƒäÐÝÝH‡ÀŒ303t /) (’ C ‚ %]ÒÝ  ‚”¤Ä7Æ9ïyÏÿ¯õ}kÖzæÞ׎{ǵonv3!UW¸3X C …Eåê†w€¢QQqaQQ1nns þ“p[‚H&÷ê0…Á4@(Œ!Ðó€â ”PZNT &**û/C8B ò…¸ …zpI­÷ @@Ü=P˜kþuð¹ð€²²Ò‚¿Üªž`Ä‚P`OÌ. (À î£þ‚OÁ…ò’ñóóy"…áw%~A€å¸F‚¾`WÀÏ‚F OðïÊ„I¸æäoÜ î†ò!À …¸€aHŒ‡ÌŒ`.˜éŒ½À°ßÆ¿ z ÿî÷Ï@Ø/g‹ ÜÓ  €ÀÜn(`¬e ŒòG @0ן† (Žñù‚ P3ÆàWæ €–ª)„)ðOyHÄ …FB ?KùÓeM˜«:ÜÓ C!I~æ§A€]0mù=Ùû0¸,è๺ý,ÂÕÇKÄñöëjü1Á@$cî`@RTTTZVö€ý]+!ÌhþK‡Y-—û˜§‰¡ä/³9ÿ¼Ræwý¹bb’R Á #I‚€˜]tûÿ"1@DGa\˜òBnpÉωJ"`oLß1ð/DB ‚y®þ–E"^˜7»¡þFÐßóý7,Ž¡>È_À?uñA`¬Q¿¨„©â_ò¯‡ ö»ÌNÁ]ä£îUG5¾V½é'ôiHqœû“Õ3~¡ YD³Ïù Â'ü•Y–ǪOúÚ)Ö4ùŽTæØ.ƒ¾¾«!ŒiH3mü|á˜rgôS#ÉÌ}÷páWÕ7],Ä·„ÌU6‚/½ƒ-#îã¾Ã~¯Çëí#sÃ$ŸæÔ¯SÛÿMz~àáÔ'ÓJ)}Ò ô˜P¢E‚}Ä« î<çìIF” Ñmê=Љ£ãqêÃ×lz)$!Û‰âEA¶+bIg“‹eæbÈV&.&[FÜ#êQž µ­t=†é â¢…îÿw El/ÈŸ.Q o‰eVBîÄÃê:ª|f[€ë¹OQ¼7»iÖÓªJêhÆt•Žñ4¨*ñû`–­7µÅ¦cË6·{OoÍÉŽ½¹LÛx| ¯o úQã½Ø×ß-tòðiÃi_]ÿZ[ˆÕ+å.å[î~ÀÛšvq ór™,OñѨAœV+°.-¥àœï™ |P´BЃ}µsfàj¡¨¨­ ~öÀ­o’¹ÁûI!åµ{F-+TÓP?껑בRF×ÎïŸîí2yˆk:e=äËËÔlû+o)™×T¾\;‰Ù[)§Ö( `3H]•œÙïá*’ÐÕîø4]Ñgÿ àÞ™lð7Ër‹ÆG’¦ìëÛñBƒ[µ½j‘ѲǮ[«Ç¥¥jtŸá–g{å~±j}IÍ¥£òþj¹þ¢iœ¡­óòdm²ƒØ™sÇ\͗ݳ.™ÂÊ\ñ|m°õå…Ÿ ZWƒ›·hÖ°Kÿ³BLðìÝ¢¦×á*ôÕ…‹U7Ÿòa‘eQ.&qgmÌãr:6÷ÕYî_1«Ý43?Íç \Áê˜\cÿ0ºÆ-·%ÑY—LÈÀ…¦ð°O¯…??\VäKˆ»r‹«_²ðS­™»U•9Ñ ^ÞîÀSã$l¥UÚÖ–ðf- Ð^O¥åÜ[ ÌV9gK®W¬@ÚW/Ñ)D—*Ú·Ú`s-k(ÇZ|!Ù¸zòbÌ_;ÏÖSzóyÓ:¤’{êqûô(‰C•]ÎsªïkEaüì nÑÖˆ\¶¨â‰°Ö&yi{«“Ó÷ïИˆkæ±G ÉUQñR­\¨ÞУ¨ÆŸí¬V×ÂÒC¡±x:‚¤ IU‘pFXŽtŒ´~œÒ™¼™v/RÒCkÚÝCKòq²ß¾Y,WpåuÜTahsè))é¨Sè[…lV hI0QƵBãgÏÝšº³™¬¥>½¥Ü¨åòÏáDµµ¯_g*÷19)J§¥'uÈÅ·{Òr(ão¢ œd9TD Ÿê`ÍQËKe¼«Aèû?‹ÿxn¡Ž…yN_£ƒ*¯9`dº uaå¶_öÞ ·ohØ0–ðe·Ët<ÑmȽû¦ò‚®{Ã%žYt™¥ôÀPïÌð…hÙ@²oÔ2ãã)ûÓâ…wßsq&ÅÜÇÙæc6ú úŒ_úøÛ´ûõƒ@±ê¶jÚ9Í$¬,ó|7âôyvˆ‹Ž[>­Ò5áâ‚þø|^V/”ưb×Êøu<ØÚÃLĤ?0Í#Æíþع20æDo€)CÐjX&Öɸ䓚‘3!uûyãí—ä]í䥣ײ—•; ôÓ»ð3~>ùh¿çþUΣ\²–4ÜùýŒÀü«_sÚFW®«‘½z}fáМññÔ°J‘•˜?Û–Œ7»ëXÅÚMø×Ðu ¥HB¯š¢JÕ÷óvÑÔ6›:¿KÅîÂÑË€ ÇKe]>[yjžß´äj7ˆfÒ]‰Jz¤N´Î-X´È‹£ `’f~<%B_Ç_WæhžË~aTìåM]ç¸lÒ½ð0:¯™ Z7¦ÜxÄ5ðu™ô¤Ã‡Ô¾låéå0ÜþâÙ©Rg5ù°œ±°ÜsÁ™[töþís§ç_ ;óÒ–ÓDÜŽ:²¡ÍÜ&šbyr¬–ªüfj" húo’4hõÕ‚å“l¨|EЇVR>Άk|˜A*Q<Ö3¬(™ ;3ðTª¶Ns¾uG«=gÕ«0ý`¸!©#ÍÔøS+ªå«[)Íäë†[×R᥹UÍ' T‘Š1ðkžH6–Ö>Ûã·â¬œk.††Ó#Ú]¶—‹v¸že× Ã ZaÄÔPôY)G»žRoÆR-ÙJíVȦ%ÿ#¼³Þy“`ÞnÄÒ«Ý;ÔôõôEÍZ‰=¸èf“lá­f¼ÑpÿS¼—ŒŽvCÖ–±T =‡ßMs+ÉÍM®|#sÏHÀý‚©^WsÌ‘ˆ0´óú4úýGQ NÐ f¢°éÉÔ#G7)qfeïh “Å ã냴ݶ¥@ÖÛèõžDêÊdCg¯ð‡òA‹èâˆrSqú-KKù™¼¦ÁØñäÔÆÂÆ9+Á&™Ò)ÖÈ펇Ñî/íWT8´VÎõµNÍóœî}çcU%ƒÖÑŒ~:-Èøú|[›å8?T’ß ì«å&7V.çúãöŠ>C> šêe¢¶jù›Øzº p¿òLI¬õ· 8ª£Íæ¸ËÊøô•—ïAy6ËԌ㙮ba„šì_\t°zõruày' íªÂyR,ƒ5rß(f"^ÿ5vî¸|Aë—‰4h„Ö9éL‚ÑaÜKlù•E®Weí?v°SË)/–o7Å)t¿Ì{²ÖEEƒÆE¶¾”U¨ÕN&W×tжüœï±ÒÜ×ÉMgš6¤U7iî\¥Š ãB?jæo:1‘–ݶMDÊÆ`ó:­•³’o#æ¬ÎäŒm÷"Çz×±©¸E’e9°X-FóˆIøQ—@I7¸&Ĭviªý£»·e¯ >q¿|AÓ?hÕq[‹úî¢ÈK§t‚iqlßc{Ó'í7µn£ æôû‰[F€cWÇC§È‡fÜæoŒô¥“+‰îdLmÛ!Š2/zmŽºhvl¼Á!MU3·ÈŠâOflbLο“ ia[hæo^%ìëG¶NRè$ðV×*aÛšª Qèή ¸ Ö¯Ó³ZíŠù¥;yZ.r=†`ÙdULŸmx'æAíoÍ;öy­aË"0GØ\=ƒ—¥³¥gû²‹žmÕÅi=~@¶¸|þ­DsdûÀíÔÄ_"\':—.ø ¡ÕEü¼6ë-¥ ‡¸ÚwÉÙËÓ:öã¥v§Àô¡ŒI£SY´—’˜´^£Úåa-R÷[Ü[w¾ï%þt¦‚7PJv«2ƒiÚÈ®ú9¶;\²w¥hybÏ=*ø!µLq¾}Ÿïµ[ÇtÞQs`¹£‚¾ÿêÿÆ1wÚ&[®ZÒðU%ÞòÆ·yÚÝ8Bš¤ÆrŠÚ›aÅ?DîF¯tÍæ±‡,9=þöUƒÇêVx/z}ÊÔúÎò«MŠ”nayqXï¤ð¬Í­}•])"Òñû6l!¢ˆ¼Åøb ¥j„/d@KªŒï¸Dïà=ïN›ZšCß,ŸèÄúzd§X_-fiO Üù¶m­2¥žDéñô½©WÊCæÒü°qþÖ‡o³Ïj‹Då ͘xÉÞÉ­£ðôªî©|¡õ/}©É'ªÝ/?Ô@7oê“TÒóø¾9﻽Jù…GÞ7a3ë>(¨:0ͺ 9Èü”Ä;eºÓ{¬(By=~$¨n&Ðz«ÀØÊ îÃ1$/ÕK7œëzåÛ¯å"bm÷™~ñô2’ԗƶºÇówÌÏ,âtÒËWlßWJø$Z„¼ïêÜìø^L@keÿnódû Öû¶.фͧâñLúÜ[.Eš•õÛ¬?2ÕftïÞ 7#ž8Ǩ4ð@Û}zj†¸ I Ml´K&GäYeñoÝÅ+e°Á¢V‘ O]\åc&9ÍJQ"ÍëÓй“O¹†¤CÐ=ð_H'ÙnWš™ª¬Ì¾ÿ´bÚ)Ï“^É©°9÷üõø¿ÛèºV`¦S]Orþš® –Š™OºÂ5~Sê7<°/ K†&"[ëÁ-û5Ë*´x×!¨\•=  iMn\€6Ç…½À?ýó°áÕÔ_EÜBÄ—Ó3¿~xٳơ]’NU¾Éëfˆ%œ`³¶²¸ ¹8®­«·é¬Mt Ÿ˜æ¾7ØÃ®Ó²o¬sMÔ7˜Äæxö6^~+¦zè ,eU¯Þ7ïFuÄÝN®YB4Å<¯º‡r„d†B”ã%Kã·×mû*iåŒÙÄÏAe5áB´ªa.q?CáVØ5†|ɬºWœóNÓ#0› {óNâÁP_– §^]hîeØJû§š‹¼£q“öþí Çùš•Ïv‡¼@[¤3_ïã:e×}Ë\ó:='+—ñ XàB¤/>ñ!q qñîl e¿\¼;™}~ó´uû†…`9v *—"§sÛbÝ9ÏWá6ŽøÌ¢eÙrå=B@¯Tæ³µÒ)¤-ûq¿302':SÇÖž;ÙbÇw¦‹•|$pÍqåƒZbw¸‘ùjý[qEÆ ë¯+ÊMž´z©§ôBãâQ',µi•…GnÑ—÷ëïÍ<ºôå ïñ¦æ4[k×h˜…\°1J§Ñç“ÙM©¿)ïòü\ëð¶RÛGÒQ;“ð´vøòJ$a‚ôj%q`udEâ¯*`9,Öñ‡†RˆÀ†Ú]Öƒ‹å¼¸ û®Ê®á™ÓŒÃØ;mýcyÉR‚B¿ž¯xëºï]Õbq7ÕË6TŸ²ðöÅõŽƒæÑÝí1jåg£c¹äÄ9WVÂ;E¸‹€4UÙW!ô#AZþÕº°¯ÁcuXÖnâ•Ï5‘Ù&£¬~*SU§¹~ ÈškÝϽ/í­q¤Ý*ŽüMïžÈ‚<]¾ôë¦{”’¯Ðº­.µ!Á¬­\)«4Ãíümš/Ëlå†v7;‡ »²€ïj¡a³àÖ›=ØN>§*8ÌÁxeÛltS ±[5Ï»æ¤n~É ýáÚË£~ÙKgW9Gé4Ö2 ™SÐîÇ܆¿ b½I–¸90E1P‡Üë½Ù§ò£ îSHW˜?ÅÆ®Õ[|ÂŒO°dÒ3QØíA7*¡Ê¶%‡ñOú©ã•ê7evؼ„ Fyz ~àîê;)œjйÛÒó¿-¾ïC¢•|?4v;Ø_üu;•nêÒ´ÿc±‘³[´À|SËRTœƒ8qö•qSàè¡û÷AÐzÒ#Ÿ­ÜÑ …ëó€ÅztÙÎùí&œ^÷ãk ek±»í$ŠužægNRצ]—#Ïx³MÅ{åý9ë“ØÄÙÌäÐ÷œ©væ¹ëQz)„"JýyÆ×ß²X–KíLþw_¿#hRâ_Ý}ÑV{7š}†+ o¡´ÛÌÑ’§4â)楔ÄÙW™¶éèL ~akU6—ÛQ™ÑÚeØ4º&%4³n[­R(ãoôX±š"ˆh–p{§¥Q瑸6°}âxO¼iÌžäí jçêÊæ£¤S2ƒV¨c¦[b$®ENp<¯ujmOL”¶ …Å¥”.©=[FÔæÂ±Ò…\Ÿ¥ãœ>¥É—²·uECèÇkí9‚fèˆvÅ-æ»÷û|Öµ²Üpf £L–‹ûù5ÅÊP<¸°(Ê:÷ã¯Øs§‰û@ç=!·âz³è]å]¬¡wiQVN.ôN%•DW[:y£<Øt$g}þ `{ˆ Ž~RÐi0YcFW$ôlzÕ®*¾›<µgF*Ö©È”2e÷Ƶn&íB/Ë~á =kù­z—í9Æð‹3Š`‚¨–{ÀÑîLÕMÄU]EëhÅÓ€žo» >[06ñAMôðË¥G²Hž]dšFÕØ-,)X´YËÝÂ{07¯ì"p̽RE¼cÔ¸ f&)ûð4²í v":‡£cª3ëû–ùç¦Åuç«."‚y¾êÛ\€?‚²Ó-~º¸„´µhZ#vDy‡M`‘BÑCÄSyUW]õ›N"±!$B÷ØRö —qYúÌ·#ô…˜¦­ŠÌ>™ÄV¨¢µy#;é;ÎÞŒŒ hîŠÍŒè˜H·1T²îج[õ Uk ”;4ƨ5Iù­xvåŸPäiò·ÐŸmîkKF5lWŒ%,¹2 ž“Wu÷¡ÜŒ4}OUÎC„­Ùu0=DùÖI·¥‚ï ÍlyŸÇºQ ­Ä3Ť/’-`ˆ%û<û:æ… 4$¯.ÖQ¦¡åudܸì:YÞº“ðÍPaŠÁJq‡®¬slªI™¯ëõ47¢“5NþRúDºëit=lÁüÊOä´‘Ï=Ÿž ÙÏ=W¿ÂœHˆ‡oô<]°¥É×;ñ“v9ý¥ UŸµ«bž"Rº Ò5ÜV ðÜA×|"Ž=2 Û4ÜÕ/°¾×»YÕÍ›V+›DÙÉš[åÚ+>Ø´KÚ*ÆV1ùbϽ¡ƒ3zYe» s@ûñ-w«ÌBdU·¦-áÕ]„‡JTÜ5’Íí-vu¢2Uc“£º¾f7Í>ÉÞË 5êÝô²/K¬`FQ?x™öº¬ˆ}A/‡Ã!Äà\3üühUýçUÓ“÷O¼)‚U£úÍ5'k@ÇFKϲñ4…ŒyCu@ªCœMÝðàžÔ@F=ÝhíC%q’¥þàü@òY  endstream endobj 548 0 obj << /Length1 1374 /Length2 6090 /Length3 0 /Length 7034 /Filter /FlateDecode >> stream xÚVTÚ²¥I ½I—HQz:(½÷.EZ H!„š ˆÒT*]EA:iR¤H—¢T HçG½ïÝßÿký¿²VrÎì™93gö>+¢ç-m¤µ<1p} / ‘«u̬•€`°œ , µEâýà¬Ñ+p\ƒVýo¸Å“lºP<ÉÍ ƒú!r@ˆ¢*DI Ê‚Á*ÿrÄàTºÐ ¤'ÐLhŒAâ:l(éå'ò¯%P &„¨¨(Iýj¡à8$ ŠšAñÞpéDÔhƒ!áøÐ¤»ìÇcUA àà`(*@ƒóR—#ñÞ@kx÷þjhEÁ7&Úz#þ˜m0|0’ ~H@ D{Âq@ÒÙ@#S ŽþãlúÇA ø×Õ!2§û+úW"$úw0à°Pt(íD ýà@ }S|^ E{þr„ú`HñÐ (ÒêArø]8¨¯e„’úû«»‰ÅÈ ý~uú•†tÉzhO Gã¿êÓEâà0Ò­‡‚~Õ Fþ¬H´'âW žXé7Òý˃dümó‚ã `0XI „ûá!0oЯ䶡XøoòËLª?‚€Å`R ð$Nú Ap  üwàŸ;ôDÂð@¸ ø;;É GüÙ“&C†¯‚IăÁ¿>ÿ^¹¸å‰Aû…þíþ{¸ s;cSÉß ÿÒÖÆ„ Ò²J@iY0‘•*‘ÿÌb EþUøïX#4TùS,é–þUpÐ_ÓûKâÀæ2Ç ŠýMpg°Fú‚ü¿iþ;äc÷¯,ÿÁÿ³ý@?¿ß¨Ø/ø PÒ/ô/œÄ×@<‰ûf’Ðÿéjÿ#W3¸'2õŸ¨JÒ€ÚËïß—ˆ ÐG†À=-‘x˜÷ªü±Ûý˜ ·Ä =(@iüIU0_Ò£@âãoNÍ?ÔCÃ0ž¿Ô%« „âpÐPiĤ!ÉÐò›Á@ ƒ'…IíEà×<åU€ Ò³ôËøg¯ …Áq˜ß†œ ÄáH:ûÍRÿÚÿ5‡&Æ0°K×}ž_½W­Å,½Ô¯6,ºdO\š0k <`¢Éš3‹ÛÕÊèigù¸¨'¶£9)xLX{õ‚æfCšUãaø‘[ªõÐR#`|ðì›GkZ5D:~i[Íåðcÿð+×|)_‘·‹æû*3Y²ïw„Ô+¦ÞÅ-Y-?U4¡?ªx/}Û.ÉùZéˆhÇÃQn!j¼´­ÛvóÈÎî0[ÞÀ© qª$ bý¶\1ÁiNöÎþhØôc[Ù€V'nʶwCÚ«™Æ\eÅ3E#Î% r[É\ "Çè”.‡"S•ŸitSž_öšÿ¹ÞB_ß‹–2ˆ¯šÌ|´|,UU…¥PX^9ïäuG±lÆ*Øêž µ=RÒÙ{qŸsA1!ÚXø<¯šÚÎÅtÁmÜ­É AõIAƒ<™Uçã@Œ‚VŒúLf/"‰êŸDò–X®Ðydy[À$Z]XtDç™&eìZY{ƒ‡Jj{À%Ƶ¶ÂÅÅû^‚î[­d¼¯wù0…EðjÓGÿu ºmß RiËnÑ÷ßôÄÃÎ ¥¡5vKúGíãÓÄsÓ2Go ²·òö P–ÐÝöíÈ\NÌp߸íôäezèG² #}¦DŸFF-u,œæSú’=Ñ Óœº™z<Êû¶ê¹GRÙ°×\mÅŒ<¸ÞÓ /®_ºÏTÿv÷A´%Õͥ²³ã)­X¤oj½»ÏÖèö'÷ÖìÚ6½J;q íæ—ZûmzmsÄ­¶©ÖúXËÛ¤qꆒ÷P7‘­Ï,O{u=9âÆåîXÑîfió8Ù BåVsËBÚçJæg‡Ì÷/Ÿä%AÆùÞ/8Ìûf(q e¿Rå;ZŽŒ_œZ²½*^É)b$Úê?w×ÒH¸FÚŒ-m`õJˆo?S{q]sæõÈT»Ó¬±¢wôÖ“…I5o­ÉêÙþwÔª,-Â)± †0¼ÙùXðsÁy{QœÖ³zffùT;Œ@ä-D©ÍîÕyB¿L<¸Hè€|hÕôì× uÀ5gèVY8¥”éõÈ ¤|T[Ku-kÉ^i­ç¯oæ}øå=±ë“Øìöj«ÑÀCs†ßúŽ,˜Û}&ᥭ)êˆ|÷“ûÓ»oùcÃLÆÍPÏûŠŸçlÓIº~® Òªy Àèõž„Vñ¯o8¼4 Ñ¢èùnÿ"ïM÷Á¨zȤN{EËšÂUlú­óÁîŸÓö9Æ;‹ÇƒÒÅ( ÉKIÅÀÛ¿¾n,¢ÕY',®giÜÑ­ñ‡û·e¶³>¼]ÉO[#]_F¢·± ÙùxïöÙ”B 9Ìëùª{1Ž#’`‚¤¹ÌÁqm4Q} >þ¢Zþµ—]FƇü„Ë»›:BXtLu¾l „Ž w ¦w4éSµF!¿3âdþV@ötÇ$R"øZƒÆ ù³V7…3_äÇQ©Tð^úxA¥uFüe(½R|ÄG×ZT ŸþfÎx—ìAbAúãêH”b;õå+®&~”‚ýaW’CV=Ò+Vf6`Ù+X&~ê|ÙÙ¬ïÓÄ´ò:±Ãæž{г+3ïéƒCÉb—\(ÑᢥŽOú¤\ â(ÂãqXQ÷¡0ãÞsÞ‡5~Ãe¯ˆ#æIµ ÖЭÓkø¥Þw9.irŸOèïÛE b 4“è¾_e2˜v )êVPyþ .‰-…þ 9Ìß‹zÛœd÷$Ò±º¹äÁ3…¶nñSˆ~~^·þíÔÅ ­Ò¼[¸Å„gý{êŸ*™å/Ð5pÅÎáŠÙeL÷»MÅáÁí%Ü©;îiKâF´S`+S¹ùr7Ú‚ÙYsç_œ;fçv,&ëöFƒÇì;­W“mæ5ÈÙöÉ&;Ž)Ö³œˆ‚ÕuñÉÈTô‹ÅÑ·jMõ“ù]÷Ä×ÒµOÕVQÎ1×b2ZYý\ ¼Í»Ç©5׿ĸ³RC¨9Ó&øŸQy˜Ý¼v‘Mâ mÝEÊŠ¢â’Ƨ¥5t‹Vþ+BNnõ}A©ÆûxB¶ÞnüºÌ˜uÊ\ž§ÁwvYŒƒ,˜=û•ŸØlŸ¥‚²%ojyÞY,‘§8]¥x1K{{¼Ñ‡ß¦ãÅl0«ïÈ ¥'P·¬§/mv[Û*WuïWÊdn⇌Xïqë 7m’÷Ò'¸\» ¬\ùR5šV9ã£têíiý¾#$MÞÞàZ.哾vÀ ØU]á÷°ÈšºúUœuÓðÉkš-ŠI½µÆôÎÓÒŸv^y—}kýKÉLy:j´+—ÇÞJø<n`õf3JºÈ r¦YsR%#òÏ­Àúµ£A|ŒÎˆÏKưsYML&yKÛ¼Óo…¸ (Ò6V$„p›{™/[’.9+o)Fn.]U”4ЉVýñ\_RÈœ08̵vÓéŠ'K ¯i3¾¾;‡š’T«®¸ÒÉnHmŸo98'÷-ü"‹ºj,n¶óTZ©ûÐÌÓ}õŠCîV†L ¾é©þÛæÜh]è+ÇÈü¢܈ÉÚ¦ÁQQÎîØ½0ÁfsV‘#jw,{·tüÈ>ý0eµÅv9¾Á/î2ðÄ»Áf¬ªnÎ’ù¤}^,›U=öWææ'°¬ö:+¨ª8Ø })¬³g½„]¶(ìýks¶œêËR£´õ¢‡‡óu(®n… å&Ю=÷–ìZèêv¾?FHëK ÍX©Èplb¶Ø+á ÖƒßÅÒ^9ü~|~däâäùx%\[‹i^ö¼b,¢Y¾uë\SW½Ä—2ÞæìÐàí³Ç,¬ &yÌ翎2«V×äö(ýƒ¨²dô«Ü´2 ô#vo)Øk‡ºR°D$Ù« ˆYdø/S•–FùWÇ%ñ åoœàŒz"{> Š”ª,ÓÌlìQŸW;j–í7t—)”¯²¼$5ݧPgzf%æ9fPçÅôz¬ –¬Z«ö¾ÆfÑë6!ëxÖj@›—[TdÝáO½p ón ËVñRÃ!Ñã|ìôüOxnë %7ÅÈäéKÓHäÚ…4SO§¾ˆ²qöß³YeÖäKïÄÊl6ºŠöI ÔœíÕßrÒ¨Ù¸®týŽ=d›ü ƒ£îeËEH¯Ë~Â}˜q3û^Fþ4õ—»ê_9tyó4,ÝN·ðƒ˜‚¾ï&‰)¦‰a‰;/Èvfè>òÏÞÌ¿…âæ°¡Vçh“~˜4.žz‡áRTÿÂUkåÒdá­ ÷€ZMML]?zÏ›ûµÌñÊØ´¾do°ût^Ö'qkfaú’ýB•â€0ù¯ BÏ…=˜ƒ)M ¹0²8ýhó'ddó>´³ß$å[%ޤâ_íòïËò}°DGnÊlTƯ·ôòe„W¸ϱosϦԟøˆ=Ñ?EЋÊ¹GüŽdrûB2^d‘Ÿål´ÇŸïËúÖ0£üšN²q:Ž13y¯~â³®Ò«ž³ºGûUß…—žîLµbôÍ,ÁÃ`l9ºâÝ-=çkU‡’ãJ™oÝè­~Ò†ÅZw&0p#u1ÚwsÔÂóóÑ"”²œW:²›ílÕrXon?p]åòBIV8îIËÍíÇ€%Ž¥—6zgª‹2,rÇ·ìÞªj`žø3Ô°Ø;3Ÿ¼åüº$˜çŸHQÂÅe9Köy‡Ó›|±¶½«oÞZ*è©Ò-f=²ârƒ“‡ïŽzGö~ÍýmâXÇ^‘0g£· ›µVͺºlç u,­Å¨†³ÿŒó›;¾;”òn‚S]¹Âå dÅîæ-ñ`óJš–F7¥ÇÚ—Ô*½ÖL,˜  hÓùó7GÒÄÜ{Ÿ|àQ‘¹Ùe]Ô[ ¡ñ¡)ùê‡Î2­ùé~€Ø8]Ãýd,²¯"°1Ñø™O°î7De»ÛÄÕ^Éô”\¬ö}‹¯áª2Žŵ®J:ÛEíF{£òóÐâyv†¦ëq¯/wàË÷_ÏÔfÒÕ.\ñÄØ¾r«Ô‰+±™:é¬]óøÂ4ÇÒŸœÂ-^*x/Zž£Y•¸\È‚¢&FðQŸž‹H¸u9ÊéÅKÓã{.JuY‹èÕÇË-Lj,Š »k°ÈsÂîO¨0fîõFsŸîè$òÀˆsF·­ÛŬä/ Ì ŸÕ%iMhøtœ8nˆV¤pˆcßüœ ÙÞ=5´àÒµþà}Ýô"!éæëBy¹@_êË®æÔË”]~Ò ¢!Lìµös+oL)Zm³ò3ã• ù} €¥!žî“µÌÞгõe°Û9 ÐÀ2ÎÒÑ¿î¥{;‚3o\Î^’k¥ès—&e3á|-cj >jÉÑTJXïËIPlïØq½²F4³æàåϬ§(ò­ŽëÚë‡[7³¸Z•F]íÀ7»¾š¹7O8HMôìb(ÂJÐ1L™»Ä•|<¤fÒ±Ù.ÄzŒõ·tŸ:wâ÷‰Ü²RÙ"Û ÆÖ[:èŽAº·…«áÍýi὇猯^–Æ<äγèw´ÍÔqYFŽtÞ|9šð¸Ö–Ü´¢†vëœC’¨/‘Ï?*g£¹î^zsã@³Æ^gº÷§o‚¬£áKzŠÈšñDçÎHZ–E­º‰ä5F~Iý©ï2ô¢&7 O?ØO23M~ž±w:Ãã·b)<µ¾ÃQ’²bû’[û8­¾…[ÝÍÎÜHLº¤?xÎ`¬ôëÅãfÕçÄò"OÎõ³7ÐáF¯w\úÊŠBüA+ÜÚ›G Èslfô{ìËËv;`ážÔrCýµíýš‹]ɹ’ŸvJ•öuž}Ón[rQ¹±›ñ(Q "»¦Ò©F­uL¥B;rqLÇà D£Rr’€¾ âK¬„°Ï Ý^I‹›?ÇŠå¨ƒŽžwÞhôn&õ£/ËÇA9͉a¤£ tš2k¦ ÒyîVx²Ã ž•¶—#\?Íœ/¯S#¶ïÊ &Û­ç¥3âC!­ƒÕ3ӈ˽âòA¥že‚)3-múÔIYëÛW7¶›Ý'sr£A­{I—b ™ë|Ü‘B÷×#?'`3k}܆¾^ó÷¾N©zçu12‘ ®nwöWk@·¼§œ§Ïn‰p¡.8y›_£¹DSS'üBË@Q[£NØb;…»žç¸PByôC2Á­|} ‹iB«‰¼Í°¤mÓ6Šù¥S¿Æý[LCF8‰eg:w[å%^ Z›* ¥¿›9ú¸pÒ'xptN†õp¢Oa™þ~¾Õ7¹î×»hWÃs$vHƒˆ½Ú ôürR™ýÏ `ãË#|˜×ø³ºDµ{eµB8mt€×(ßîõíœ>¯á½ôóò ½°ÉËÏû+¡ôßCÃ&n.ðI²='ýÇ9 x82Ò—OKYÝŒS{¥øó¬ì1×·ýG£LUˆ‘>·´ǵ6°ƒa¹¨|µ¤Ù”!%>xƒ8˜Ôvk”V,bß/ú{çäkh¤vѱk,UM,#Üóøžî({PK6b‡|ò)Yt>ËÂFéýŠÎnȇ®Ø¼·³<9ÝÈ4Æjìèv·øj”yÙÔÙÅ uzp-¾Äm‘QÂÝ¢”VUá5}‚ÙzîƒÅˆÔð½%'óF»®ŸwÖÎ Ï2Z½obÖ©ÎÌ5j¼Š\Æðý¤†çR%.ˆ˜@ØÑ]á!*9 ñ£*æi¾ –)µg¸L¸@VÔ5·8Yã¡‚-C)§H+†±Øõws{Q|a¹'³bàY¸Êt+ZWËx…STžîòÔ`d™ßð»›lïFº}­OE£§™EG‹à'²Ä%›)¼œ¯]¨£i–~@­E^¡’–ûŽèñ¿qSc–a)£à(`E­ÙKá’½ó‚ÇRÖ»ôÁ~-FÜákÐTKš# çˆòÛ„dkÚ%´IάJ½éµ6ö¤* ŽJ÷éÛ†hÉg”mß²²·¸«|ˆƒï¦ ¿}·Ç;'ýÜ|3øÍ Õ8ádz¾Ô¼¦uÿâBª «Ã"R®øjÁÏ+¥ù8£NB~ T Á~QÄlޝ²äµà)BS“V&ÂN¢‚/ù)A¡ªâÅø6ƒåâ?ßwvÈ]ÔênÉŽ’Ïvçòt#3<-(n1vRÒ"žLŸ{|#ϳI‘JFI¿ÁWg4G7VðÌ^æ†çti¿ažJhDüÈ׋Ž×D˜çÏy1ȸ{ kcÙ¸Ëãè–XÇyp ò #³ûΩðg[\(zLz ï§Uáo溺óÓ£ʱ2W?mÚ=ö‰fÖ9Š©RºŒÎ*ˆ|LîÝlƒŠ(îÁ¸[‹¤ï ­ç‘P{pÕZ‰?“è[ŠR:ƒ1¹E¯E×w‘s°>þFi4eq&Û0ª’+†{¦sâjw/Ýœ¸ç×^‚å{+ÍÍDzYÄéì™Ús‚å ƒ)R2Ï?‡»)Z^:¥üÊ40ÖøÑ›ýé¼³uÙŸIƒÓœ¾ äÅô'â+c3eƒíX‘Œlÿñ‹Û‰??59Ø—[-ßRœyÄŠ*€aìØÙE±z84 ÜýàÜð”è¨ R·Rrͺž_’æ`‘8J6Œ©NüÎjÌ®þ,}Ûlç…'ßû‹ÐÞyîRÚ¯Ÿä÷ò‹=óK j /AW·^îçãڦϗ2ÿvס¶Ì°øCFþ¥ðóTšÐKxnîö{Ÿ”Q‡õ5]!<ŠVC† <«Óv›“›E¾ÿ,àŸN>[{N¨·ÍÝlõIåݨ–¨g­_ñÉOq;æ¼&2EÖcÑýð¬]Fù<tîZø| ]‹ö "cH&~Á¸Ý}H•±¾> Ø\§ ~gTRI´¼»ŽßR.é5¯Ð¨TfÒi› “û/ö‰€ endstream endobj 550 0 obj << /Length1 1405 /Length2 6107 /Length3 0 /Length 7069 /Filter /FlateDecode >> stream xÚxTTíÚ6]Ò%Í€t‡t7H "1  3È ’RÒ% ÒH£¤€t‹‚”4" ‚~£¾ï9ç=ÿ¿Ö÷­YkÏ~îûºëy®kϬÍÉ4TqD8@4p” ¨ˆ,@MßÄJT "".$""FÄÉi EÁ Û‰8Í!žH(.û5O…¶©ƒPh >¸çˆŠD%eE¥dEDb""2ž²u7Ô /¸‡€CDœj?O¨³ ]çï[˜ *##%ð; âñ„‚Ap€>åqGWƒ` Aùý#¼ å!+,ìãã#rG !<y>P” À‚„xzC¿F€Ü!&DÄ 0u"ÿ8LN('€6À `‰ñ‚;B<èê=€¡þ¬÷ øks¢B¢ÿJ÷Wô¯DPøï`Œp÷Áý pg€jê ¡|QÜñC"Ðñ or@~·hª@è ÿš ö„z BH(ì׌¿Ҡ·Ypw‡ÀQH¢_ý©C=!`ô¾û ÿu¸np„<àï•îèôk G/a38ô¡DGý/ ÚDôo›3‘‘””@ ¾`á_Lý< ¿¿Íè‚<'ô ¨ýE€yC(O/HPÀ:þ¹"8BÁ(€Ä 'úwv´âôg>O¨/ÀZM?Q€È¯Ï¿îlÐ sDÀa~ÿ†ÿ>ba šÐÈÿ×Èÿrªª"|‚b2AI€¨¨¨$@JJôÏ<@ô¯>þ#Vî„Èüi½O·ìýxþ/àŸ¹ hæB<ÿ&ú 0ú"ú¦ûïÿËeù_‰þßizÁ`¿ý<ÿä…ùý…@3× …V>­øC- ¤«q„z¹ÿ·WB«AîŒf´ è]!‘»ìP¤&Ôâ„¢À.XóÇnöKo0(D ¡¿ž0è(‘ÿò¡EvC?EhjþvAÐúg] 8áøKlb’§'È}Öè• @­JGˆïo2„…à:€ž1à„ð$úu°ââatÂçÏq¡}¿ÍbwÂH(zk@ž¿mÿ¨ öòôD ð79Ð ý½þ­vÄ&ZšG€å"\":/ëT}·ÆðV׺c’¬¢%P\ Ï\ô𳵦ªÚ;ÖÐ>.VDNÍ2ò]Žû>xº’¡]€ÂÐØP=,þvúÚÂâˆ`pžz³Añ9Ùˆ™ÌÞÇš;Õbþú±T¯øö‹OÅ7ÝÈíû2ûw@é99[#*^%¿{ë‰ÇjÄêy¥§u¦—©ŽÙÄ ÖhÂ…jgý7¿ 넬‘Þä<?)Òí«•¬‰¤¢§ö¿Ç–?š2DO“œ{ï%ƒKUâ\­"=‰¾Ä=’kÛ^jåûLÑ`Gò¸W³³Zè-ÃGo[¼ó ù½+'Lv›9¦ß„IèZSb\êžr¨rÖ:bœd~®‡ôáвð»—êÏ ÊÊ/¬ô°ÞµÄá? ·ý4IwiŸ,*f“®“úø\Ucñu²xw-Ÿ bà¤ê`°¹®yÞúú|ZeÉš ?Ûi}Ó9ÒuŒà8b¦™M²ìÊÞïßK~©#q>KaΧ!‰ª×]@ôØñ&æ'Îäã;ºµäî+Ë,N²'š‹“šR,˜êmcdZÉ>V ™!'¥r;ª`~ñ®Zòí3…°V…té‘G˓ǘêF‰äõ·Œz¿áÚ&9x ‹Øêtßw±/3྇º›mÙOºÞQµš=–š_)PýalGUþèASü÷„¯ÛgÍŸ ,U£ïÃbÒz¦ƒ7ìž¿eîº?˜À”ùjò ¯‹;}ÛW»ùêç˜ÊaDKvˆ=¢VÕ’(Ñ®öa&ÆÌz¤×yÖJàÙûÖ©å챨õ…ÜÝÍPÛfƒÏß+ªª(ɸˈoÔè‡pÉàG›«“|•¦$M6‡‰ÍÃ…0\œZˆ6aJºïh‹ö­9ž´ÆR4^iyŸ÷1} j¯g¾7ä¾À. Ó”þî ÿQØÒPòŸ ¢§þèÑþ¶ÅCFõ0ý6¼h«»«e§‘­EV‰so‹,Çz7bvbm·jÚ*ÚéD¢·}§é©‡÷¸{:½è;$—çW¬ÌÆÙi'¥‡Ym‰3Xgß¹Ò62a¬š?iëQ`»ˆ¾`ÑÌwøRZ3Ä#Q»´”–,÷òD0y;Í!Âù&èrõ÷Yƒ.`JL`¾•hö£Û`ãêO6•î‘›ä³Ð²ÝJÃáé6[q 3 ß·é¾Sü°CÍXÈeõ¼ý’9ä¥Ìs§Å÷¶Œjæ–ٳ܀À¯_‚@â[šå0ìôîSi_œjFüâiTж…Jyoͺ\#Û;ó•É$jí#ÔáæˆÆ§ËÞíù)J½i¬ri¹õ £ï"7ʪº°W}kIϾ=e|ˆëm¬–¾X‚“k¤îBDO:£l'?D;šKÖåFIïàÛVѹÚbU6fù,eS•:ê kû»ñ€/ÄÃ}¿'±Ä‡˜Œ˜utÇ+Æ ‰Æ¬j; …¼_'NX¶}_diÕã4,TÞÏÒL¥”_r'Ü{>ºì<'0ÈÑÄîbV¦¯tÖ¸¯´–êÁ7!åMºp[a(Š ÚÐ"KU.6H‘°=O1Ýj”vj0ø•F…·òF4‘T‹HÍ|šæ$}L¡E\|•bìÿœêôÔi7 jÒ–BÝåý™üfQ@VÖºjúèÞ|ÐÕ«Á¥|¤˜·Ú©ßÊzÝЋ™Ê6`éÔz8ƒÔCîpúO˜ºÑ×wÝ nþ¨Rž7¤”¿‡ |"4ž¬Üþä†5›ÅG*EðÛúÞÁÅÕËñÅ™ˆŽ0ÛŽ—\q[§'6Ò°ôÄÍ—È6®ˆˆ×ÂIëë¶¼Ùl¦[ý! ’S¬µê£¥ÉÆ5ÚÐ.öB¹Äôk/[ “"‰“,IUŠå"oør–éAMVbýD'ûã©‹ *a¼1Áà €è©Áaå‚™ þ'LÙPRÌ› 0hÜ>¼¼Ñ4óq. ’Ä " ã³ 'ò[åîq>£maÍ ˜6ls«ÚüÝæøPx¨"ÛælGiN€ëðÄUKÍt!—LþiíÝkW†g¼û¶Q&É`‹ ú¸öþ5C‘©ôÄ«³¥xðèió‚z «:6GO»d¶]÷ýÙiK>oæWü‡ùü Ë`+¿ô±Ž’‚L"*;ý·q7ö‚Êø"”æx7ŒÜg¹õ“ç(“òáb2G¥õ–48T<áVáû/Ü ,š­^j.Êï¨5fìº5.÷á¯ò¼››°[ä$ÁR¹¾9pèÀˆ'Û…º‡#fÞTÜ¥7Új§©‰(ôË£ LM|çÍJù™ÿQRqKšF38a¶a ;EpA¸æœ™vµøûZ’¹TkÚõ68Úf×’ ".= 9Â/È·i-T¹ô*.?p»Žg³Í|îËj¬Vy5L*L׉тÚųÀîPá»{wåÝÑHK}@)O]_z}ägzá÷-KþÓz}÷#ÛbÔ1Yï ’}[Ñ8ôh‰e¸orÕzª2´UMÝøf~±Ue3­íu Ö]?®}Shaê‹×/b~ ŒákzT$–:•vcø¸½‹¢c¹Ôå•"(O„²ÇOö}ãa^üÚTÕg®í¡¤Œñ?Ý–ì)QtüéêgšÚ×lî>ôééýò·Îj#ôɧɟ_µgcÊøãvl™F«­ ÷£µ'dFâ–!˜ùŸÊÄ zNÌé<)D¸ÖšêžSùº¶  à]ò;ˆÖÍ7|!îÓÉ©ë}6º-zÑ„#Î:Oº¸å'­ºVñ ‚¢Â—¤qR¡q|wž:F})F$dبU*rüÀÖ$ôwf›Œæ{ŽhǘÁu4øz8V2Vƒ8‘NÐõ1rþï‘Ë'jKE&47Þ»_O¬góèìÍÏëKwjhœÄ†“ú@ˆ½Ô>©£Âî…ÑK(S0æǫó–||d –„Ÿex"6ÓôØ Þ/Ÿ˜ŠL 1JÏEu ŠÜªªÞƺ~®*"`„‹øß®ÔzÁ¼Æú0æeâ>¨ÂÂh—Ó?b†î^CÛ¢e1CQ¯8JÇO¤¿û¹Î̘ëÔ;ÅÌáêw4fÃR< ÐH¡)é{âºD¿–E!ÄAc¾¶í€Ê=÷wãpsã°¹»_Kƒs vj-¼ª%ïPñÈP>=ý.žwþÔƒfTû,ÕèSV ŽÃZ9°Ç)fóé3&ÓԇݚSÒ8v?æT(RzàûTF³ø?‹Üu¸üåäçzòñBÝO6¬¡Ro'h›ösŸá棽yhbŠ ?AÉ3ÎŹ(Uˆ¹ÓóæN8µÕ¦¯­]úÝáÙ¨µç|PÉH^ÆÖiÄ’+,Â…\õm;sÚV­â¯žó|òYcõ³5j곡.S¼ÑsŽ+Žj†a ¹J{ŽÊâ`^rñJ† Ò½9¦9 N>ý m¦>†¬Ý’|95Ççk™¸Ãž]ôu¢Ô®7š ä=ÑàÇHfTú¡÷źڃŒv^œÞs¼¹v¬ÙE¼õsJÑO¡6’o#ÔA »û‘-Ij€Qų¾ÆÝr9Pš~}Šùàìb±`˜I/k?¼˜Ê%…B‘a{iùËé:ß}w:Ï"÷Ò‹—}·Qîê½IzF¯w×èñõWµGJ=÷Â;„S4Ù%Í„êD·ñ°ÎøßëÍDˆÐ³ÌTM)ì‡~Aû"îÙ¬-T²½õ¹–4ü ô$?µ?,Aq\d¾>ZÑÈ_MQò²ºæÕ5³Tl£2,ûÅ|Å ßöÖH*¾iAœšÄµ–§óº^?¹Ä[ŽÄ¨§q\u‰Í=±Ò?hUn.Jç?Ý#)¬ÅÓ÷ÞZåq½* ßX|™(‚9̱·0ÂzkA÷Øp1™!ÚT(îyBÍ1¡±u÷íÉL„¼ëO?¸Ã¶û;Ek¨I_ɱ’?~ œžç‘]„$Ö+?ŽÜ ºŸu—E7Ú9 §b`§¸·b›ŒJ9.×´: 0Ç :gçÔ ´7Ò úXôfãÄK=275†4è”+ä¦_ZFèf¾¬cÛÁ[̬ÑïD<,QÍ“9³l*NÂÏu4·e•zQi‹Ix&f†ãàARW15wë’U†RŠ¡nWn%E]X£–µÜá GÌ¥´¹d4½òfe ËÒzG×eä©8y”"qÖF†/S(nËtG~ ©úcƒM<‚,Ç8逛“8÷¶<á(ú[ƒ_Èó;hJ¼éŸXaEâYeœÿ`õAxPíf±eiôó¤4•tý®@2™õ“öœ×Ωª±yqãKÀ£„39U[£DÊTño=|ª·ÄýàØ/WuI÷~ØâA~ØÏ±fr¼Zµ ”¡1î/ÙÒo„„ä+-¾Þ›®kÆd!?pÙ͉-u8î!¼ÙíØ«²Û“ŸºËäÇ!?@1õVÖYOäÖGÓß+üQa¨\Ì©Ÿ¬¶²K‚*m^ôÆ œ{ÀÐ&ì°1Õw¢o®I3""ñsœßMgKÌBFÑ)#¨â%€|ò²¿åLÕRõ³½Ðµ2²´/½¬éÓÙQҲ︯Xª1ŸyVžx;~0ðEõoò¸¨¯äåP÷Ú•÷îxù}a¢ZË´çß]²PBà8Ê…T½`jáÊÇxS¥’§ÓgïFQy÷óñÍ¡? è”èé/œ‚Qa×ùåýȼ"¾4¡Ä¥¿ÿm7e9]¢‚Žõ­}i¦FÆ&NkÎ%é*(Ø8Ñ‚{ªfaXw]8åâ*i¿…‘™ÿº£º6ÏßjDW¬wi³ácƘ§Œ¿Š ÖþžóæºÕUZ£¬JTØàý,aeðL™‚{ºØÂ/×/&ÅM÷‹WïifëÎÖׄ¾y(¤@¨JJöC`8ñVÚÅSúø†™×TÆCÊBô…ܽï“OºxüQîV®5Ñy›;ûÄH†w´yí±?ÚKJP½@ág¯]À‹¹[!Yâ %×–hÖîO9”_aâ`Û} ‹$_¯ßê³+¸U­)¹Ö)ã±ÚæQ‡[æ³µØELaʇêCþãiÒ°|aY[X$ö'gÜŦ»;¶Ñ ž%/B¢T‘U»SxÏ‹¦kÓä1)µ™ËŽŸ2V¸ÈQ5SŒq¦ñ‰Y&-ú¬XhgãiÐá\“c>é\pŠij€ âæ¨ñ}ërŒ’©Tမÿ³—Ðýè@­HªÒ7©V~6<ó?i®« endstream endobj 552 0 obj << /Length1 2067 /Length2 7731 /Length3 0 /Length 8878 /Filter /FlateDecode >> stream xÚ–e\”]×ö iîpèŽéîî’ašº»¤A–éA)é’.|Çëzá¾ß÷Ãûãü×^ç:޽ֹ÷ +£®¯œÜª ‡yñù$òPØ óÔ‚Ãà¼úp70 âÀeeU@@Á^Np˜"Ø *0tô¨#×Aâ ˜HTBPB&ky{‚9@d@@þó Ø9A¼¶P'.ÿU5˜=ú7nçíþ¿k>P„'R Àñ?Ꜥ¶æê°ƒÚãòkýœ P‡ÜÝáäàèà€pþ‘Øúä¼<½¸ñÔ`>€œ«+@ÿO–'@ê Eø@íøþ»¢²·««6Ø YóOšøÓ…ÿ+ìæäêÿÿ“©ævu‚ÈÁ\¡CNžÊN~P;]'/ˆ#À á ý7l³ƒ"\`P]¸§ÓŸxBÿµfèèqA=="âÿ.™@ÿݹ6ávý/y(Ìî¿#ûýo~]MeyîÿǰÿIT‚AàvN0HXF Àþ¸È"I8! ù ~ÈðóÁà^ÈGîÞ^Á{8÷ÏE„ürBÿ’€_þ–Dü ·$àW¼%q¿Ò_ð+ßÀ¯rK ¿ê- øÕn ©®qKHuÍ[BªkÝR]û–ê:I ©®{KHu½[BªëßRÝà–„ü†·„ôbtKH/Æ·„ôbrKH/¦·„ôbö—Ä‘™à¿!Ë€=!NÈÅÕú7.úö‚"œ<]n[Š´öº­„T±½%ä®l`ˆ ÔËj'Kðoüߣõwi ò—„‘Å pWäËúׂПˆ›Û³ÈÃÏo÷‘Öíà®®`Ä ¤‹Û] _8~舊üY÷ð»Þy¹UûÛGví|îÔø³ ÷¾«Lq¸ƒHŸŽ·®‘Crôww„Âîd cNwéÊù"âr‘¸u'‚ܱëŸSz»Žl›Û-‘ ·RÂÈZ0äé¾íRæífûçt¸c yyòÃoM#kÂï<"7í~»ŒÔp# °ÿ¬ð¢ÿ9VA¤w(…ÝIù'濞²‰î®Þw6DFú¨hñ)HRPZ¹~}"®Fßf?×>ÏtýÖÔTÕf7°%ô+ÇG[l–4›åÔ@Å¿¹Wò^fgç{˶ŒZÛ•ãÛiÍýë ^[ÜÃѨò©uê>½C­nðóOùÁÖ‹]Å[f†tfÝ­ßÆ­ ~I}…ô{‰û•–¦þ¸§N|´­ñHÔ“˜ü„!BíÔ—aº_?ÏîÚøb ð˜Fd,!ûlì­ÇÆÃ¤ƒáþM ÅYæ…ѨåàºêmkO^¿‰%ÑÀ?\Q}ý@䬌m£|põR·¦ûžXÉQÍ)Ñå$wÞÅesA·)z¡ÍNOÏ=Íšûˆµ&Ÿ³„ŠåÞ=á>³÷¸[¯Ÿ¢žpq}4·Êùrf˜Ú•&=zó´+*cÿ‡Ñü(?°ù¨Œÿ˜ iôõrÿëÈ)Ò£wÊ­G”2(¯~<ªN!Ù(X8s?%t>@8€Â)6B…Pµ,•õØûcTz¤ÃñºŸ¼¿4ÅgßR)H½'ì•#Ô ×Ä̳öÉ!ŠˆuÊÕNù¡weL¾Â¨ëÖ`\dµ &d8°RWÿܸ4GaRtèËè£eų’ÍeËÏóí]ÈL·˜Pbjžy`ÐgTåÉDŒËUÓ ç&æ âlíºŸ%o]¥šjíæƒ.#ÊIé=d»üÙz½¾Û‹WÑÆÖŽØ­Ó°.„°@®ý„²•.„Å>ÑoKA ßüwºæä3ü/t¬*Ñ-7™+à_ûo|ÑáE½Ã ÇBüw=m#ü¹Æžœi¢ÀïÓÊ;[Ó15! úI8_®¯¡–½èY×}×̇åÚ;Âq»¬Ñù¶m¤f÷©°é×âŽRÝsX™aجÞÃØ]²s#²ø¥K§"­‘ºK µI=‰¦Óó…¥5ÏFÄRƤ³‰,Š•*· QØ(öâÇŽ÷1D‡6b¿]6Oaû/’•+W<›ÝI¯#çè@¿R•\÷Á¡^¢•ˆšMåuË–ú‚ ™Ý›Š±:¡¸fÇl•ÏÃNÒõf¾ÍR¦\8¯9Â,± =·WM*¯^Z³ád¿faÃ;bÚ쬓ó“x{PÎþÓ[ !'·Ãò‰ ü”–ñ…Ù[é X‹§´ëKÓúFöã%›\©4´öж ZÚ̦ŠÎ²ì›jÉ¡AãS]õOa׈­¥É¤=PSžt+œªSx‰µñ;©I…õƒtGþqëë] O kÖyôÌÛq…±JDÓÓ~mØIi¡Ã"± qŸÁZ°ÿêaàéS‰Àv­Ï¡¸ͯ;ž2+”©~&&E½2,PyÇ@þ' êK$ÿ¸ãµfƒ4åXŒ=êYs@«MÕ^ÔñQ©+ê«Ãú‘üòÜiìa‘θ ¬Î³„_ P¾D[Æ»ùyô […ûÃéÖÅ%J‹í”ä“ÊL%Šà¡×óg&ø«nIµÉO—#6#‹Q~á—> 0Øî¹;ÝmVûŵA«€Fµ|*L!ç{½ÁÊK»ÊaÊi0Ò³"ný+ƒ3 ^ƒo2Eý‡ü ‹H»¨ü`œÞ“‘F<òRË /H(“}G8 o·xX‚Ó:uY›UŸïóðC8>Z#j•MrrÕVÙuù#J:~ŸÊ‘„1“uÚ$«ÅaÐt§xUß{‹èϧœ0¥‰hVDýcÖÀIڜߗ$ä™ÁN¿-HIëò¡åþ_Ê—T“çR˜Å‰Nуü^ý2ÒSôN¸’‹šoêÛ™=1¾Ö>SH æ“" Y‰ôbZíæEÆ_EåêZù¨|X¢{ê½€ÌZÑì?ÝJÐÉ-§“·{Wbœ2aÕÔÿ䉖7ñ;Š(N¾±A€Ìh‘•yÓJÓ¸s+½¦íK›áâÉÒŸË+­hèà×Í6 u…Ø#vâY{SÏ:ʵ×Ï®¹ÎÌï_4&íµ-ͬ·’Û_Õùg¦ÿ’^©ëœÕo;öéÙ,1Öÿ‚£'‡¦]‚í%h›ØcPEþm—²ŒÍó‘È|ó—}?5¢=غaòÀ5­œ í—êÑìOK$ÖE†×¢Ä_6PiáËNƒ·A>?uqŸ-T¬|\>ìÿ4Ød4µ¡šZQtÔíȺ/NÛR+2Æ’ÝVú0ZÍ~ߺUrdá´ðy…vþ®¦É¯¼P¶:ךBôE‰_ÁƒŒµøj¶yùD²mÏ»@F§_ë*@̪ÔÍÎÌfPF; Êd>&B%Þ“Œþ‰$}{—aʱÜÄ1íž4Å85ù<4£#à…Y[;­CLªs>Ðpòò×ÕOeкª¯Yö±«æ;ìòcù¯•á˜yëŠ_úÞØ€~éˆF}LÖ jµ=o3µ°ºle®ìs®¼rOˆb±O8p‹?¬n_üžf“9.¦ÏüÍgâš%ÎÛ—Úr:šÈúÑó0å½¾„oa~R Áщújæ?¾Á™ÁÓ[’„c¨j>-•Ñ ¥•:½¯Ü¬ÚvÎaµ¹ôÒuþÒ›Dé;ª3ú¹ìՌў;ݵf¾™{»½‚XiÌgBîÃÝ¡ L—÷? S|gþµ³¿Ý¨:+vÈ}Å%GEˆ?¸ð™q^ºSNcÉ=» JYÄ‘N”·=N7°+ä·sŠ€t†+Lk2÷˜°˜¿ºüÂ|($îðãr×s”í([ã;÷ÄŒ–öu3ã7ûªØ–öÎ…€¬ZEÃ壹Þ9ÍLŽÇ"óo|6ü¹íù¯—›£Q©O)«²VƒH–(s[ÖËÁަUD×Ùèõ‘ÜóSn;¤IAsº.³™bf,"æ¼%ñ{èré™ï…u£2ýÞ¥‘„•=Î#À¾ßÃÝóÍþ̨&0Qz•õh*“»™L|RŸÐ}ÜZl‹j˜Û7Š=aKÊ`–šU£’2þùñÈõð›€è§$zTI¬n鵦ôyaRm˜ÜûVWš6èØ³â©í¦Eë@,¡gS/7úFä ¯†Ïᬮ;ÊZcÒwY>'ýî¯ýºù¼É™7bÍîjnè¶-›ZAt%ÒDÔ7Š #;.ÆÀÀå£ HÜ]Ô`)Ãú"ŽßùÆ@Üùc“ KHL±´Us™ÞÑúïØÏsaª½L‹E<ËZÏÒú@$ÕªêV'ÎOh¹ eW°’«ÖâÄ@d-éùÐIÈøé´ °S˜ËäÒ}¿¤mªGÎf(9·©;“tieÍŸ6Gi-‰æ’ÞGOâIsö ,ÔÐKý\hpÂD8ß&™o¶ÍTÇm“ØÝÂ=Q¾9þ6ð>B¯@o™8^>¥©! ùÿï¶=XáñM Îó—Ê)ÿ°ûý5!¼©¹ËžýT7ûœÆl\ò¯»ö »ÞÔÆ€å«5p ¶âˆRЭzØ5¯DŸŠdÀñ:ã’Xǹ}npK¿)„†häî#ƒ3ÈT±tìE¢%ÎTor¸þ¤Ów|ç\¹b‚Z%¥ßÌEóÐÿfYýާ«èú ›B”Þ¥]Në6Z½/“™žÉU»þ@;Ù¯ú¡tæ·ÙZ–ôu‹ŠÁf͵Ï2ô‹»¤{…s ÏzyêÖ†™zxt"&ˆj£sh¿1z3ƒk+OÔ]¢Ý§“N‚ÖOÅ-—½YÔsiOÆ£0¦T” r»¶‰ÛŽ~XšÙÁoQƒƒwâ d1ð­fо%Y̼Oh:&»AÇk¢E"±}ZÉ×pÌ™:Îí(BúØÑÒ¯³h]ø^4™*ÎȨ~ÅøD*€î”„%i†1ÕLLÀ„‡˜ ñ:i?{ÁM_»ú­ˆXO|Øiùù1fB“F˜TLaʦ/ƒ·a†BHÇ%uàÅÀÔ)ÓNÕOŸwŒñØçóÊ^tÜܰ•˜ zþTj«Å’õé¸RÆø?ÀÂ(Yý¡y2P^ÜR(×ÖHtF»(>¥fõú2äÜ}”³µŠôácZâ´r‡%F)¾Ë0FÃÑ *<Ö¢×þsø%•«I?ÔÙ~¬-’Ä80`ºÏwTz˜C Ï?Ô=.¢êÑH<Ï2ëÄÞÐO]‹_õ@/JÇåK6©j8s^ƒ~÷ü닊іÓO£âò_ aúèÒ¨ò*›Ä‘àT¾ÐŒ3Ÿ‰7Ë#¸þƒS²âÖ1G|£_*g)¹¦Oƒ§aÃÙÙÝnp_6¾žBÞŽ%æ”ô[#ð”é˲Û^¸¶~W$pv!£Z £øa„‹mýÓp—òGÚlV”M})ÂZÏ"Ü›X/ug¯Éô Õ±tñޏ $Õôš[¬u$&7¹ß-.­ó…#t»'•÷‚lÃCo£Z‚Vr€ãyvúê;–fÌHò_uñ¾ƒ‡d+Ì•)þ§ü¿ñÎQ¶íæ <Ð@d4Ly’Õu!TûuÅÆv Ç/¥K*]°Ü‰âׄ7Õ¥°#Ð…Hj—äG7˜¡ ç¯bô*­»íûíþ€÷ŽD–Útä.wŠFˆzžÅˆ»°“$G¿6X!5½æòÀ¦R—Í> Õ·³¢ƒ„­‚ÊWLO´LMÞL+x/Ñ ry§„óKñ‚zPý÷¯Ó¨pSðºjXý“ µw9æ˜Ìrû^)¿ úziÒç^ò«Æ/Ù÷|íÇ{ŒSݳ1 qÌe¨Ô±…Ø4Èô¥¨ÀÌΘTÞ’ÎY¶cÈAZQ”RKñR’\xv‹P¿Âó> sÂ[ªK;VO×r ¬%{½>]ô]«Q7 KaA%á¼-ÓŒc2KLÕihUµºþ7M¿ßÕãÅɽ"ž"ÆB ¦%y?ŽÌMØÖØ }áWúÜAùÑ`±FŽõ}OÊA>Ú/e\Q'‘ÃYÎP®¼“œçßðµÚ ƒüëKx³&Ë#àofgjgWD34—'ºu[;|¹Ðß )¢4°ßš.4KÃù)&QÎí„kdk&p´ÁL*µÉˆQOös“9Ô|Rqͽ9â0ÝŸ1¿<hßúÌ ÈQ‚½f˜Dš#ñÈcK<$žd`®‘Š: tJý¨×¤KÐ0ârE<á)dURDrÑâ!¸åøU+-ÖáGX–¦ÖLì{Soj° õ;¼Ò2©ŽR‹†ë)Äã§YxèôVƒ)¢Æ¤õ½½timžŸØÙÒÉà¸5¬úåõ‹ô>"À$¸"A7‹IgþÆ6¤ý¬À“:£Þ¢¿ ïhgî™zâÝá&ÜÝ­©ßµj‡ÂÊsÌI? ¤¹P‰d$2×e;ê·Ú á•©Ÿ° 1Lrˆ3í\áPãžßÉ脪eÂùLOÅŸ,9í·½ÿ4Z޲ݖ•ØÔ2Ý[,Œ­®jxMÃm¦Ðj£SXÙ1b“õ@ÅkƤZêm,÷²{„ÕSCëX;Óx5@xoy5¬"‚Õûí.8[Ëš7›¦mKO=XEs¨û€[+פ;*kü<‚†Kf†CͬFÉõ9 õuIî|×ô©M/ ôÞž-Y ÊC?“Êkê·•5÷éöÚš]{¤öæ1G/,Ó8´hÔ÷Xq(WíÛ€9Ѩ&­¦9£ÔóëÅ/çŽB¹àvûýâûr¶ËPÃHòƒQ©!?ÔU|7¥wÚ¥x°òÑs®#Ù£ÚÛ7t6¥ÊȤxaЪ=Úý‰+ì_Tys³{b´²Ø I¸Ab£­”–>±\IØUlA ¨{a’vEt»})üšf¿³ÝP:À_½§Oއ8JŸPs3 HðþÖlµç9o)ÜÇ~écyÚþ«k e5› ¾ã+Z0y Þœx¿*A.õ–Õêõ‡K<%3ÎKí’Ÿè°'Ä´£µÙ-Ù&ªIÁâŠoõ––ã"õ^ÚJqTzä㉥£6ᳺÀ ÊÙv)÷øLìã@JçÏ1ÓýIOEÖ«Êk½“â—¨ñgïl{[S¶®ËL,ö6Kš0«Ø`ÕÝ/ªby×#q Ô4º·îM¶š;%úŽÑÅš4ž1zí™\~ÑÈbUõxxÏò®c€ÍøŠÜ—ß½›z¯VVP1¯œ¥KŠÃ;ê*C'—+iÞH-½aÎÏOŒ<Šß¤»ž¾zyééèÐÝZvUÇa ª"K«Àjí÷*„ C4´ äia‰J:ÌÓƒ {¢#o¤îb–×âxDZ{oú°‡‰÷Q阱V‰ò°+‘Åwð©ß}L`Ip¹°(L‚qDˆY×mbeùìküÏ–“¸s¿¥Wê‰"´óëa³vÍÖ-c»«œÅMÆÜ¢Jl³Î*Ø«Co—Ò·N{…©b_@Øóµ5˜÷•ÄÁ ½Ÿ5EvÀQa»|æùRQóÛß1CäŒÞ®þ>5<äâEÚÇ;yK TOš³ ÆläæÃÎú±Œ}‡X¢*6ú∤5'ȇ$Scóì`{ Ã€z†ÏžMKßS؄ɨ¶†O`GË毚áw?½;°GƒÏ‚êÙ£–ô,?ß›ÓxØQ®D&0ôU C€À®íŒ9 †šãw¼Æ$Ñèé–Rûñ5ÊÙ¾æ˜f…vêb™ôÝóGÛS7ëò¾:¾%ŠzÄÌÂô蓾݈ oniZ²O½9RÉÓöM®ÁXpÿÕHsR¡Ò!ü¹êû\=ç‹Ô'eö °pÄÖÊe}½'/¸Ñ=Ó’èU¨eg8l&¿Ÿ\|—P»VôÓtìâÙO ‚#Ì Y©Àã¢vÜíÈr:ÖÅëÑ5ŒZè!tªæîÒw´Ò6Ê¡™Eð0&̙ҒÕ1|“3ùzèéC冱†!¹–¦›²šœ\Uþl·Àf{·à|˜Œ‡ƒÈ=«•àIƒ&ö:œ)Cæœ÷¢ÅüTd¥¥W¦òÔLææäKrÌÊÞW¦kN »Ã_-;j„=GºÎG܇¿¨KÑÞ¦O†ïáw¢'5œ ~ºÖUBÏ8Ëê’e¹ÔíˆÄž4Íž½´ax%²XôíÚ_ §C§mXV¥xvn_öx[ñê‘?¿”[ ΃ÆÔ´AS1{)@ Ñ|Û×}ÕZ½ˆƒYÃ$¯Hó•”C‚°"ÞFˆà$û¸ ©©÷ˆ+á'/(?> òª[Üá=Þ¡#8æ3w™ ”?ÄJZ˜¯èSnÐ'ËŒk<’L±Šî rà6w´_vί‘_õ´JêoÖ6*Á°Âüq]]6õ®>¯œË[ÀÙÁòâ¾7/Ï:Ú ™p!@¸s%Ùrà°$ äJ1fô=Éö#¢}Ü¥þèæAVkðhL¦½/M݇¤§ó ÉÄŠ ,T×áácêQái<*_Σ/)Ê.p°ÒæNü I 1··§ÙðR£#w+›§&=¼e¼Gf¢OfåtèºrErù;4èš”¡÷CÈÌê¸ ¸¼ÅŽ5hõD [“´®„&r2ŸXªrž¤ÍAÊk5õ™Ú~"¨Ùÿ`œ| endstream endobj 554 0 obj << /Length1 1632 /Length2 6616 /Length3 0 /Length 7555 /Filter /FlateDecode >> stream xÚmTu\”ëÖ¥A APA%†Néî–a˜r˜¡Cié’PºDº[ZA$¥CòϹ÷À½ßýñǰö³÷Úk¯ç}6 £¦‡i“G"œ8¸9"i ¬F8ª!H s¸µƒ3 òp@b ìdDÈ‚`"]+g€2àp ‰ðŠðx€@>L¢¾š³#Ø“à nþ??ÄÜܨ5Ä `³´Fsýé«„°@¸ùþŽCíÿ}æC9b:ØþÕý1ÓŠDÀÝP˜¦ÖWÛÁl4þˆüQ ø—êÿ—¶³†»ÿ¯ŠÿÎTrí!RK8 ÀñGñŸ µ£¼µ ªií±8¡0®üÖC@a(¸5¦‰t´þã ¦È÷_gºVÖ[ÌÑ ü÷Ñs˜µ¥•€M‰²ÃÿK ýoíŸþRÎ¥,'£¯¤ûô^Ó_©rj°ðð À(Øã>ñ<¹ÖIn˜f.NÒ S°wvz °@¢ˆÿ˜/Àà’úú ¸¤¯ €Kæ ¸dÿA‚@—üâp)\! ‹ê°¨ýƒ„0ušWˆÀ¥}…x\:WˆÀ¥{…0:õþAÂNð?ˆÃvt‚¡¬m¯R0rͯ0€ rU€¡† íì®(¸1Ÿ,ôÄ ûbœåúûÿ1ãϹƒ3þO„#ã3lw#Ì⊓aaíröÏ1Òu­“by btZ]©ÆX`ånoC\ËÀĬ¯AŒP›kc“í5ˆ±~ b<¹&–ãÀ3?¦ù”¯æÃtB8Û™ÿy¥–×`Þ òJ#†y­Š›3£ýÕ1¦‡=CÀaWfòqÿ+Šúù0ÃØc.yí^0{ƒëš_ÜQŽWšÿ ˜Ë5ø1éŽÖn× 0œWø1¬P°kW‚è䊼V€ñÁùê3ÂtpþóÊ!HÔõ)1κ\ƒ\¯ †ôšLW÷kãÇÕÐ&êoÿ¹4ÁÖ']w{Ì~¾Úaî+¬vBa61;ôÏWý×ßµÿAÿcÕHK#Ýž˜WÌÁÃ+€YZÜa¡—ÿ™ qFa®È鯵ÙXÿÆÖ˜­ ƒ¹Á Ä_Ç‘Ñ@›Ä”$§2šŒö^Yã/1^^žÅó¦}a%új‹Ï¯CZqg˜Î; Í6»Þ]˜³Ý'5$OaiüV.5ëÑÍС½-|ÁöŸÁs¿«Fv‰Üç©õråóâ°FÖ}³n =ärùLÔµœ"EL´%2ÐgÙæ‘ò…“:qá"‚Ôµ%?qåhmôÈŠÜŠ†Í—J£gZx}oúÓŠ yªgF},N@Æ\ˆQ)¬Õ¬õ{Èøh9‡J'hèµÁb7%œ(îë— Uõ#Nœi‰„²>.½¿CŽè²~Õ6OÂw¤[úŽqÍ´ó×hÆvå¶ókgï›øÜ•¨6M_ØB™×Ï.aw÷=êÚßße–·¸Ôî‚t¿C¿6¾þõÔÏQŽïºàóCÈÏ‚[Ÿ³&3Áù³´ÿä.ùŒÞ½8"fœrç³ÉÎݘ•î.oâ@YRöÒ‡~ŸÑÁÌn2ï/œ0¦§|t“¥Q¶oþÐõ!½ß]¹v ]Îì„LÎo¶®\g\|uË*º“’±ùx[ë`åÂŽ£Lés&7«‘Œ(€?Û0ŽúRó*èGÙg·¢»µ=Îú¦ …JÒ…€ïï.à?+÷ûdF|LÐ÷K„ ú©B ù§«~óh°èmß2,w: ª懗¯”˜7*@[ÇLW©•&PLû“#þwSùðÂJlC_ÃíædeS¹òdoòÂB„û HVš$ñ°cÂz8ÍœªD\º@IÀ1Tã;K-™»š\ù۟˽4Å[êŒpmò§ô7O<ÁA ÅýT¿Ò{æ¾X‹Ê+⊿¸au–¿ü“ßð ¢BóÆ„—ª­ûC¸ey »÷Æ»ØÔ÷€ßnÊ (Û’+>éL³ö3ƒFEÎì8öœ®HÛ>!|ˆPÖ >o8û…–lèahp„ò ‰òôÛAH©AD©,ˆ EßþÄvd¸c%=0ÿÖÒ\gø%#O.Åyƒm†2ëÉ®*æ"VB ögÞTúì÷q£λ¬ZN'e(Ï6Œ·¾®eÚÒª¥ÍtîÉê {eÈÞ=÷ÿnƒ9IÀ¯ÝoHl¿,{KÆÐ·¸§Š‡Ë÷‹Jh¼À¸W}ð$…玮qÁ…&Ôw-¿%z/üúŒÍÈAÒP ”¤RrƒÁaÏ.€ÚÿÑÓ£‰Uñ·i…<÷ɪ‚;ˆ _øGé b;f|â,]iû/žÁ›ˆ,6Ç»µõëƒ'×M¡7í¦}CäsbŸ†§1ŸUuóµG2šì^è©à­è¤‘³™%;§øÊâÉç@: ‡Zjd[aa'ë&ÃUfg67—òð{xî41û³¡ÙISÒÉ2êõÞ-xuع2Ïê.É,îvÌMú{+I1–Ë.»|7QÈo£:NmGóùì‚ Eí|8Kû—äöÒHèVÒz h¶=U_¾¼bSeâ\eQ ­†›¯³‰ÎgNŸËÏK”Š›ÆjWeb¿4X0=â£*çev꞊f>%¬jû‚†“V‘Ë<~…'~}4ZèîošßϪâS§YÞs ŽoD’á °1*-†%zGô|m®ê!åYÝ%Ž‘—+ûNÀUßoWºíࢺއ”[ Ô[^¢S½³àZaiNu­<øpŽ:À~ÖÔ0†É×–“·ùÄ<Ù0ñf1A?ù殚Jÿ\!9|"·ƒëjäÁó•I·ä¶š§¤î††ÈlWãœYa5šìáq Ϻ'´xc“šðžªï‰u¾jìNMvyJªoF‘ñ·ÛáËŸ¸–×$ßã;Ÿ$éõŸ{ËµÇÆÊÇ%|¹¬º4ÿðø=äçÿ’á4ÞÃû“+$<~¯F¸®p`×€(³b_ª~7øe› ›~ §ª#6ÁÝ2`Òî©aõ†öÒz¿OËŠü ñ­ÉrìŠyÍÆTV.{"m—-°*$»¦Šrõ:öO½UkÐÛ|R,ˆÝÐ8Ξƒm©qtlfGl™(;CÍÂÚýBœîYÝ4ùâ‰UxìɽÝÏ¿Æ.)Ù"Ï8_N8.dþX ¢v¡#Q“òUyƒ–v6ˆÖ6ÒÎÕV~A;3‰'ú]1ߪñ1 ½[éTM«¡˜\fÎmš=ÛØñÙ§„÷”ø‚8O£¼g/bZ^dC4¾žurõ|”WKËŽW±Ûg¤²ŠK¹øt§K±K(ÄÔ§v_hKñ÷Ö…vйн6‰ù0¤Ð+U ^ú¶BxŽì挩Û½µÂ°ïÖuX/o„ì³]¢!aV]‚¯8ØÐßN¤Ø2l5>Êñ‚¡Ñ ЀHʤ”;BÃ6Gb•dopÚ¹¿]Dð´Òä«^Ž’AL Aã}@¡»Áð†©UôÙXW­ ^~&‹ÎåÏN5»•(M¾üVËÄ{ÀÈïm{I®ãÀþŒSP$ùþGŽÿ²@ŒRyC Ü)#"‘UZE`£ì)¡€‰'‰³“’oÆû˜t\=Ö|¹a~?-eÏËÛÏŠz±q2/Õ¶•[ؤéT¥ð­±öË!i¨wmef÷|‚õö,b«!Ï]ÿïJ¼|yÁ?.”zz`påA<¬Q#Þ Ê·0ì}…ޤŒQ‰½M — ÚFë!ïñ7‹5ïl‡ÌœÅc4.¶Ÿ$šQæ<9N£½•$_¬î3¦ÕTü+;×]ësOê½n÷(­GÛXäk~8÷4òñíNó4Å”zK©BËVCjÛ³4ÃX¢ZÛd©ÂiÎîe]ÜYž‘{f˜É}âÓÎòU[}W#Åßl­Q$œOàiÖ+ÍgR>ñÃ;ÐÖð†_\ž&þ‹oK„2-µ‚#5•ã·¦K2žçÇ*љɄ‹ä&Ç !´WjL$pß6 ³íî]r³“ÚÔZ¬iVæÝûMüýBé€Ý#xÐÈ샗ålb’fHEl í|Qfý’P &ðÂëîh«¨.Ȥ¯Pžr¹—%{ke„?)úiÓ ª¡=–¤õ“æÄÝþHZ‘g—Ä©„ࢬç“çgö’º•˜`¡ÒQ°q+„B=Ô¡;®‰˜&Ÿa9n=løÞxDhu*£ÕV`îv‹_UרÚÉwr6•êâ<%Ãeíšcsë<±_J™¯?Ôí ='Ìû¶KØõv«Ù/‡9KY9=ÍŸœL;|$_áÁ á½,ÿVñ-®ro˜èÈ:T7 0zé2K8${H¿šýçµS»â*Ògi÷ÇÌ…i¨±·vë&Ûǘ Ð/æò«ÄÞ‰Ö-h—ù$Êwûò kr|1+K¯+e˜QúVüaŸé+î¾¼áÓ[-ä…àT÷#G±¬ßk÷¡¨¢d¬p—Lgsöß}úy£^R4‚ךäØêY.á !‡‡kÓ¥¢)q³ÿcýöð[·ß¾qy!CºûôÙò3ºfN©@6¢ž¶ƒm—úSD·³Æd²Œ‘'j¼{¼ªQUÞi¦ñ™enο¢ ƧŒGÊ$ð»oé\Z«EdùâVò.η t§˜ÎÈÔÖjà ê7pÁ“æJðÚŸŽ7ºÜò–X¥Y9ý² ³}ôEJ^œËmvvâåÊ%”¶𾉠µTÍP¢¤p›¶Êƒ¢7§Ó"X«ƒ×Ö›R‡šCœ¤ ;Á쵓šW氀ș†Y4%öàsa›ec´çái¢ÃЖ&¬ÒZÁèÌÖë0ô=©¦\Tj£ñõì€)‡ÞX±0õÍAk?w6ž´ö‘- ‚Ô1îî7ø=}„£ÔÒE+" ]–˃ ,%û”¬ŽCxpªKomŠQ†Ú… H5?Hä‘S}œâþb#Òöwœ#¼ Ú1yd©µãÜNO™€ûCÿ”èçw0]µÉ[/[»Ä]»eŽ…ñÁéƒËñ,ÙU¤^!´š°>ĵ½îÈ;Nï'²=ާ[f›Æ[±§ûž0´>”³¦¢'ñBÕ„NEÇ·dTTÖì@6Ô~á2že{Åãšy‹JÁÚi`®À^÷k€IÜÆ^Üg*Øm¡ }6)"µ‡ÉîX.ô£àª=×R®Jd[X]´‹X!`KqrµfM½”ØEsAܯñC“*žÅ`2›t#š°]ÊG¤÷”­Ž{w¼Ù¬Ò¤½G¿×5…ý~äy€sÒô†ŠÞs™[ÌÑzVß}’-ªw XÕÞÆÚÿhCSsA“g !þ \âÊDáÉ™Fsš G—­(dîÝŒiè×îDa—BtBDÎÁ¢A$¯»Áp© i}Qõj¦Ð(¼§âv^eÆ×iÎc÷¤–pô˜óDZMeJ5’J§A°œâx@<•Û¥![MMæ˜_N*þ!Ftý™´QÆ4¦&ô¶&Ð{Ù8ŠVê2OvVaÿ89šFŽCÒ\•²@v&ª˜Ë~¹¼yÞ)‹núPZ¼ÏSzEý¬Á ‰÷œÿ¶^Ê\ø-òsÝBü 'aÓxøJêò/¼—ßwØO©A¾é5Ñ¥ÈÒÀsÜdY«5v¬ÍïHœõìàu:ïsšh.š˜Þñ¢M¶÷>º„¹s£>ª¥$4MvZÒÈTAÞ“„çÛûaªNŒª¨^êTâSok(Áÿ±ôF#9¶YóAœ—Ÿä/l­£ï¨šEæÁ8Þ=8±|ß9‚íó½ÄX¨T‘ÇlŒ,N²s¨«HÎUnöM%¨h£Ö?H•lÎ!†cv&ÏúƒŠ ‹‚-eÍÂ(*éc.Ukú¶hÉó§Ì–÷vØÅîЋƒ‘ ¼0C¯‰´,SMËQ“"v(uÙü²›×lÓ0+bR[ÂÌ[:¬ÍKQH†ÏÉF7a&¼ºvë{)ø\,«bœÀiv« ¸¹D0ôØùô°?PwŸjà Cû“Wah<û³–üÓ†e$Ö@qbŸ+ =nÈý÷þÊ1y!7“F¤_ý¶* àn·ÓB";ÓŠÔùsÈf`UÛl"?Ç-óæ%±Þ»nÖ“±?ï H*sÖ¾m÷ZcLÓq)ê¼¥PQÐê¸v*šy@CL…½V„äÍŠdã¦óûJ»Ð(ª“ÅhðZWœíyd%)®¥E(Á„Ò0ïåJN@É¥½ÀY6Ö_G“DêW^¢%ã¼ü+ó@3ñM¥ÖØ?éŒd‡ÎXû¨E¾™“àO˜®&óN|š89SñpˆÒ Œ FéÒçPh\à¸FFÉùªl†Sr²Ÿq`#g©??ÊOžS'ÛŽS_Û¡ZC10—šl†ig¶ÄjŠ‚ qj·yRÂ-T7`ßOþ“z¬«é{‰%œˇ¿çº¤6$ –ï*ï˜î·ò,é'·‹s™¿j Ié(©S°É Ö¿{{Bâ:™³CˆE÷Ð|“aòµé¼ÃÝ™³¦^éiޒ󶋇ý4LéBcwÓ‹0¹Ž¼'ZlÄç–mÆq%;[]?“’Æ——å± »ü¾k.¾8U=ÉBSzOð¹wêy ´„øåÛÐZ/¬}CxÜ«(ÎòÞð!¢¼w«”õ[‘u ýÑ' y Ž9Cíýæœ×ÀÞRY±æÑClA‚•%ɽüQÞe6ëÔž$]ìL"5´ãbŠÞÅ\äï·S/ yr\4õÛúGbŽIë[ èÓ7:Æ”¢ˆLoÚñˆ@Ôhë½ÕCkÕâmÛÙ Yܹ@eôR¡H޲‡/? )!Š&áIF¤þŽS~¿‚Ë'ͲpóÊhR Y  +í¬8 e[¦Âí¥ êÞç,!65ê§?3ë>桉Lݤþ‰ ñs©ã…<˜¿C!£ÞÆ…ºˆøÊ´ê—^@Ü)“î]lxEH"Vƒk 5°Q{\eñ1ý¶)LdúuØp>õ{…ùƒëÖ9m!`@1£SE¢¿ æ»âëKr%FmÆÚÈÒÊ ‡ïñ”KaGïÆïä=Î@eþì~ù¾ÇoÇ WÂêyÑ‚…ÐqLt;ŠRÁý@ Þ¹ÜrÏH¶‘…Â=è‹xd]7š´íóǶÝÊÖ‹¸î^øWGÆ–¸àøqÈO»¦®A Çv*ÖÂPà‰=c+ ;ß~­“ŒU‘¦Vùa ß‚ÓC3ç¾:SÊ›ÜÑë<%ªÚÍP´üLˆ3é’q$GCò«¹‡ùŠÙkY‰¿%[áf³µfêÕ—é7;Å)cšŽ¯«ÅÅǵcsGs.ƒ%ŒÊ[w|[cÊ[Èx^¾E^\<@ñ(”‘$Q¢Mhdþ•¥Ð„ÎÓgÌþO¾»ly}Í Ф8/ÁïëÖÓPÍ…GË“Ñ(oïg>S+ÓéxS‚Gsjó›ȹÍ!^Á8¶ÕÖÃbWôÆb"hDãiülª« Ù½!ÇýÓׯé&`æ!Ž¡Ï¥¥¤ŽÇŠ~˜•¸FÄÈž+ûZ®N* ç7³°$vÎMùG&¢=T˜â?Þ¦hi¥W}-ø¥/gêãÍÕ ”&vØCÅ_L¹²éèÀ#Š»¿É ú»Y~Ó£öVr|šIÕ–Äyï6ß«"®®à‚ñÕA·[˜Å(†ßÍuè> Mi¾ uÕÏ©*+ 1”º4’|oª©•}xé`‚ó›åž¡0Ë”háàä*‰Tò.KÎñ¦J”.ó~Ø=_)é+}¬¶a1v_+‚ ù%V¦×Œm`NøgÚàþÒØ“¤~hqç&Ÿ¬V³U?l-MÍO–ªÐ0o|Þ`láé!ì:P^0Uúpð%Í0{.®q4ÙíÚ¹šàTñ'¡=uöüŠó¥ô,“o³È;lôôÕIãK V¿˜¢µ8>é ȯ>l;÷,#ž òuª½»W::Ÿ;Ò° H¤’økh“%„Õï­{›Ìœƒ(­þrÛC‰H‡-Ø#îgÙ1½ ˜šëÿØ’ÌRŒõÿ¨ÄÖÙ endstream endobj 556 0 obj << /Length1 3063 /Length2 24921 /Length3 0 /Length 26633 /Filter /FlateDecode >> stream xÚ´¶uXÕÛö=,)¥tצ¤»»»;¤6°éîNéîîîiéî’”I‘úmϹ÷è¹ß÷ß÷ásÍkαÖgQ(©Ò ›Ø%lmœè™˜xròª†6ŽÌLô*@3g+C …¨ÐÐ dk#fèäp:™À¡`&&n €$Ðè^4¹äN†jîv@f•á_@ÉÖщÞÈм ´1Ù©Á!¢¶vî 3s§_9Xééeú-Â14¶´uu´ mL2 ò [W° ²µÍ ­L¶¦5 @]U\E ©¢¨®¤JÍN¬êlggëð.¢ªjê’t1a5qPƒ ©®ªöë·ÐÌߌ  ^ÿUìø+\^\MXM[Iœ™ñ×Ì ƒ#èWÙÿáöÌ ð›8ÔÔÁÖú¯*s'';FFWWW3gG'[3;«¿ø©™ƒ®¶–ð_ ð¯Æ8Û˜€Ûédü;Á¯¡ä@Æ@G௠ۿ­Á­íNÿ7ÂéWN«¿ÝŽ@à¿Ê˜:þ+§¤$°6Ù8m mŒÁŽN†NÎŽƒ¿là@Ê¿ ¢Î¿jÈÿwÉáŸ2ÿ¥.b Þ™®•§·¡ëÿNÌÐÆÙÑãÞü{ÛÆ¶6Ž G'Ç¿3¦ +à/öŽ¿f²ùË&/¬ -!®ªF/ž ½¼-¸;6 NnNyÿÊ',&Çàbâ0s³˜À"·1µµ¶³vDøÕ>1¸ON¶îŒÿG×–6¶®6žÿ×n ²11ýÕyg;Fu½3PZì?Þ`Âo›Ð ÀÚ€nÆæŒ¿Êý¥–_fæ_fp¼=ílí¦†VŽ@o)üÁÓÑÐprpz{þ¹ðo„ÀÌ 0;…>,e—¶1µpÿm3ùïÒ$@õ×A¥ŸR[+w€ ÐQÁÖ ,ªÿÎÙÿÔ’p¶²R0´RýoKÿ×ÏÐdåþ/ÏÿñÐþâJ¥`ë`mhõ?k G ÐD ädlþwcÿ¶K;‚µ/lcfå/“ú¯ãdÖ-øîýººôÌlÿ³–¤±¥ ÐÑÀöw܆ÿ! îý/ºFm -Qu-Úÿ£™¿ÜÄmŒmM@6fv€¡ƒƒ¡;X,ììOf°¦M€n)ÀÈ`cëØ9;yLm~M“ƒÀ(üËô7â0ŠüFœFÑ߈ À(öqÅÿAœLF‰ßˆÀ(ù±¥~#V£ôoÄ`”ùÀ\d#0¹ßÌEþ7sQøÀ\ÿA\`.J¿˜‹òoæ¢ò¹¨þF`.j¿˜‹úoæ¢ñ¹hþF`.Z¿˜‹ö?ˆÌEç7ÇþƒXXÀ†&  |'ýaó04søu\ÿkcýåim>q¿NË?éÀV£3 x7F†ÆàkÝÔé3ûÌŸÄ‚™ÿ6[þåÏÍúýÀ3þ±ƒkÛZÅý_ Û/‹µõï 23woò—ü½'°ZÿªÀÌöŸCGóß2ûcïlhõGð Mÿؘ—)èwZÖ_ðÞ1³‚³šþŽgÿnëìðGBpˆÙ¼‘ߨÀí3w·3Úüá¶þ€àXüÁS¶ü‚;õ'{0]ëßLîwfvp¨ øvø=xp%gk£_w­Ù ˜Ám±ý-6ðl €ØÀ¬lÿºØÀåmÿ(ÀÌ n‡Ýïe0;Cðç÷_š`cþõߊ`³kò¯Á?®Ù@¶ÌÌÎþ÷D!g ã_7ã?>¿âìmþG¥ÌÌàaü1*fp?~o†¼G 5èßBdÿåtùc`ìà$Ž ·ß$ÁÄ­þ”33¸þï²ìà ;™;ÿP+¸1N®¶€s8ÿÁSvù‚™¹þ¡Qp´ÛœÞýÇoràL@‡¿Kýû‹ ôëEô×Çžé÷'â?OÅ¿°ª“ƒ­%Pd~&ÿá"o>Ënï™À_jf°üóßÿéý«ÅïGÆÑ""¶nžôlà=г‚ÕËÌÆÊüklÞÿŠ5þûÕö×+|†ÿ‹=™@ ÐayÁÖ˜7È"¹)¤ÔG<ª †‚›á¤K@K&z9mªG,g›(Xàßâ—þ®ÀVNŠGÏ'ÑߦH‹"Óêy£5¡ròÚDYhÇÐGÞÿ­¸ðh¶ƒz@ºü’_Y)õ¡Lvžv1ÛLz[l@}ôH”»£û>’eâõ2‰T·¬m-Ƶp޹ÃÁ Ím ¯iªÂéå#ú“a¯ð2ͬA^Ö¨ ¬]O7ú.ħBÁ‡¥vìÓ0XQÝ™<Ï'ÔqÕ¡—!ǺÍåjjq–¯ÞX­¹’e T³ÚÿøDš#Ž¡¬?rš7™Fö¢0“ÈÒ1·Ü¯aªº†xŸ®UÕ€ñô¸†Ø0š½ÉtÀq“"8»í‡5JÀ€rsb‚Û¾IüuDâ‰áÛÖM:¬¥Á6ðNg–øá˜™Ï….ášH-̶JF/º=j¯ñ»èR~³GOkRÕÏcýÒÌ`UHÛýYCkŸ2÷“¤Væï,õ ñ®}î·½ƇŒ vÄ{¿j~ï-ïþÞÝzèêó¦ë|¹CmKïï¸^Úe4x‘bQu¸uædïEã'åT©ß~ Í¤"ºbѺ7ž.0˜Šì†CóÙ·ê’M)#m­´lFÿ! §ÿ$Ðݡ䆹‰’Ö—…ˆF†¼° Ùß”QŽÈê<'d_’æžö³B`1ú ƒHGçÉð¦ÃÌc'Ýì–aµPÚ#U¢"íæVùgÕ rY„S_Ù4µÉ¼¼ùÌmÌ–ÆÐ±úýÀDzĩï*ö–—,úß̰Úuõ ¼*Q/p+ßs›0f¨ò%Y4v[êhlà.ÔËp³¢²ëš.d!:˜M埽ª°L¢ Äâ…Ô:jlÄò)#ÂI1ïìpºœi£;8“Õ†v,ÜfuAS5eç‰ð·,ªrvA]% ?o]ú"eÞ¹}®o¤hÆŽÌî«eqX¡â=òèåÎßÊy®ž=¼«ž`IÊQ‹ÍrR~/a“a@W Ò3'ð/dh:Nzù%ž-ÄmÞw`Õ\‡¨z?=Šiüa/ЮªCõ”³( •}”^dPçØbú‰‚+ÚË6ºÙ²5òýkÏòk>–ÔòËÝE¢ÌÑ+Zà!tŽÄsPð¥‘+]Q«Ð»\:•nª“l¥=^åumoÍ&‚¤ÊÖ¢}ëIk®t¶/ä³Úð%mq¸S˜H\|ì9–^NÍ©DÄöÊ9»åiÍš˜ëªûX£³bÞö²GÛöÈù¢…‰)Œ­ÝôØÒkÆâN0ì™ý+òÌã\QÅsÝ+zôâŸïj_°CeŠÇŒà¹¯Ú ËD€M‘˜?%©Z0Ýê3R2Ì×¼[ä­‹™â.‰¡ïp^e¶iu+þÜ=mÑ.½ÏÓÌOë=ŠóSÕ>ç-´Ìm }õZÑ™#E‰*Ž%&b²¡7î£'[‡‘¾¹Ìr†¥J Bº…R«‡‹Ð3¨ŠúÛµ³O¦2~ýK30ef÷œ¬u”¢H7Jš5$Ñ F»ZÓæ±›9ˆ©ðB‡ÞØ«Ó`º¨áÓIHŒýÃ"dœéxòÃËf«×¬.”§z ðT‹i»ŸY… GÞODŸ”Ò‡ò°çŒŽ ³›/¼jð&¼sƒÕÐ[ˆé Á¤ü.‚;k\ƒ¢[1wí‰ ‹ð†ºBÔâj\\<'Öc „¡E€¿KWC1ÿIHž ³‘²$tfÅöyË$^Ý­iìZàWè:½B¥"íYÅ~[¾ðÖÓxõî8!5&q@¢’›Ž9ßûÉ l½¢E'ž®™ÕÉsÚUC¯#eUc\Ñz&ãYK.—µå„ôöŸI‹®u—8³uQgºï9¬íª‘áÙÐ)Åã ÓØfM•ß$ÄC%MÚK¦ç’l+Ó^`1;í¬b¯çú@pÝã(šˆ \ŸXËÇ8H;YX7Å®qä#´á¤_Át5„«‘ŽØˆ*|¸¢ŠvHYÄÅ1¾†tTéðJB›µ§DJ YšeE]ø¼˜†S© wÐè´Qœ\ÕT?cÅ{€®^J2~ƒ©0KZ[XrNóÅ›­IÈ™´œU˜hDþcðû G9Ù[þØÓ.Ÿª—VeQ†Õww®ÔNO_/¸2˘«%(ÓIßÛ1VúεùòEõ,ƒð%žP‹pok°Ë½üü÷æ<*æ*]/ÑbMßÈHÕbÏÏÕ&˜‰d²d}ïÏ—¼Tˉע1¥È)ˆéÿ¼Ð÷uUÖS±lzòªû¨„XuÝ¥m} F&—òú¶Óa°3ª…fß‘kls ÑJU{cì€ìù¶9ñUJ~õœ5©p IâHߎs®‚ž-ÏT¬™Wï® ÍPˆÒʼn’O¦À>à†Í,Œ­€ƒ¾É/¬‰Ùcr,Hâèt˜&UBƒ&Q/ä¸)¡KYÅ£ÉQ²VHåܸ—¦/œ4Œ^^±åY ;Ùlõm­D0ïdj7®IUªê,9ë‚™¤”¥»à§WV+g‹ñÆTJ•<övxËjÜQ@  ”ø|]«¬ˆJ½1[&ïyYKlh^Ôwæ]j bºëcÂBþÙP—ú¯ïÃ1Ôcñ*n¼ê>üȈàìÜÉ--† IM[‹J‘ïô!­j·ÐÂ.K¥”¿×$AB¯üÙwÈ%Fcîòm‰Yóf¢2ôý-2&ïêÕž€2ôªx@°æ/ôiߺ tt{zDˆç9.–ᾞ{žt÷d'LpŠ5’ž¸sÀaNsþñ \‰SteC5¬}ÓùuCÕ‘×€ÆMv&T÷iÿÌI1%d»79^©³Â ·8ùЃ&Ó®GãÛUûŒÖ@ÞoóÚóe)öµTfŽ‚ªÄ·†ý-Ç‚úñæ'îÕÞQ¼?Y@d¼>Žj®<4r³Õb(¬øDOuИÉ%…®LÆ7?e3®™:>ŽDô>)DCYzD!Æs’‘XÁp)çf @X&;޽²õVÍó?,êÌö,Z/ê—lW)ö&ø¦·æÂÕ}–Yƒ†Y€0ú—Íô\”Ï _È¢¼{g·v÷p©ü¢$![ÞUyGã[Ï÷j[èýÈŽÁ'¾ÒH+,ÞÜÓ5ûº‰~žëèqš{X ü¶Þ2h³œq,QØå5P?#ÃX¨e´îñåLôµmÀ ¡¶þÈü2fu91é¬ #8ê!õç¨1f*D; Œ÷–ò+vJ·ÙYCT×t¶™ó°OdQûOÙ¥/ëÜ›>ÄÐi ûŸo‰ÙOÆwÌEãg:Ä4׃ESÚRª«†ŠÀQ¤>)HtÖ‡à}’¹ÖF¼œõYÙ8¥ZüîDSíÓ±1'uÑé¶EýQUö­ Œ‰@x ”õËVñ5â·ã·ó󤇫™h4Ð ä"bä/MÈÑx”m’em^vs”Ñò»ª9¸vÅŠ>8V-+)wöµ{hñÁ‰‰V^·;*ËtÜ´¸©æg.Çm…’;ì`ýOP±Üõ¥šŒŽ»«°yAeJl#dóû¯+'• _…ë–£ ecu¾'E¡ÍfŽuØñc#€°0Éò ç$€âÛFn¯m~]ŒÑŒ`¹SË©*üÙ’1©guFl*˜"ƒ €—ñòy3ÉÄ> ñfûk}y oàxz9ÁžëY2­>„Ù(¬šªmg¹ã¸î†{„ƒºÖ—fa6bòƒ>îïND×ÔȽfï'nŸLßk¡íÎ֟¦¡¿•îùt=yo+¯¹ò€EmŸ´}ùmޏL—ZfÑHÞµ<Ž•5@qÁæêGÔ%mPæ…¢8§\ûÀ^Ã5Rû0Å 2ºÝ]‡¨¾›wO]³H‘{› ‰:ä,Rdê7ÌšáK¯ÒÊëÞ’ùmÏW×\u†ö>38•ñh™v¯¤—-Åw«äE<ùý×Ã>Y†¸i!ÜÃT×I¹ê|ÿA Ÿ cóó ´¿ã ]ýÙˆ³•<ù£Ú2éM:¾Ï‰O5ü3 =¯ê\êàuíÚ@b?ÅÛéhƒOƒ:XyìLFaÉŸ¢ºÇ(¶ª$æðDÆ!c±üâjŽaSR‹¸¦Óì_Ó$jÔ2Õ]ÌéÔr@ôVSæhâ´ ‡\ªQï†Å¦:hÛ‘1¡ž@–‚¯!ÒCÑ‹·<‘µß™áæ.X‡Zw j’Ž$~*¯äà’ÅŸ(ÀLܳ!\|uÿ>x“³Ÿì eºç8¢Ï€ª£NRµ¥`¹Loйƒó,û8A¤Ii-eÌ?~ì›IRÏ2!PôÕjb3•ë:±â5nv‰ŠYÉþD0Ì;êÆ4Ëò?‚¦#¥yUQY»nÈ`1 ,ß /6Ù_@Ö±µkFjñµ>8)‘63´oZâKL¢·èÏf.œe‹t¡xø±ˆð81 ’›*ý>$ž¬x>“e,i.V‡H”Ê”ÖÙOR˱lNô9¦CNêûr­û$ƒ×[¥-wß`­wG­ïrTB¾àÐÞ,ë ¿Ïx‰ÍyÅ™©j²ZbÀ/yl°\¥•¼Mi“'ËâÆË•äÖˆ¾u9/@ÞL8÷} ]ŠNê C£×xfôît_ïH­ôÔ¹äÇOÁD§GLM‡_ï~Nñø}ðF…ã%æˆØ9UEØzŸÐÙ#4ëIëRÿc ¬‡‡A²¢ñ}d—Æ0–1­¬î5µ¢à UÿXl^ëml ¼¿ƒÍ¢[ö l¸²* q_u¯›1ú]í¦ÇnSLU;Á«½´Ô28­èÏdS#qNñ½}ÙÒƒÇn~ÙøxW¶u,À’6_ú|àUßCQeÕ#ŽTµ¨†‘mÅg>>× ßŒ|®â¶Â½5ç‹Is8²KìëûµLØ{ÝöJ‰uõH‹1BÝ¿µÅ¢v«ùëg©=Ñ×­söÓÚ2Ø f¶ ÎÎ×.h6˜T§ÞØ Ææɸ»)ƒ4¾ˆ›œNx:ßשqã8[# kIà}Êl ¼¥¡—²ã(Þõ©¸¬Uߥg ÛÆ«‡…@vˆfò_.ÞÄba”SF)Ͱ’qGBÕÖ‹»;oš½-±)‰½À]pœ&'\/|*õX‚‡$$Ê…H§N‚Ú%#œÞ’ÙÚQdëx1Pï}3é×iC51~5Ú`C%†5χ€Ü¨ ~9ðºÆò6­Í¼UZó4Õ–ççψèE&ÏÏV¢ó®Š8¹•(¥8^,Ë„’FŸP$b…غ…m¢­–Š¥¿ :k¸G‘ !nð‹?8¨H<ÙN›~aßšpßõ¤y“Ë;y°B¤Bˆë¥ ß›uLen½Y'ÆÚ¹Œ_ü6U›ºn@Ö*§ ©Î°8ÿÒ-Ù£”Ié$Q#EtÀ¯ýÓ]«"½U€öÐŽ’wÑK§·2RÖ=²dœ #ô€šIÁäŒgõNJ¨b[Tn7‚Ö€—NËÇö¼âsavg}ôrKç£+®æ6«dÿP$'4 ó‡[Ó™ÛÞüœ5V ,V}ïUéE/G‰=FïÕs&t›É‘Ý Xí*ÕLc9@Jk9À¤Zа©:ª’»6É’SµÏgR¤ØíiÏNŒ¥&[ÌÞLîÁ\,9?HÖ‘žK.ŽãD9 WW’^½bfÃϼùÆrÃJgh$XÁæ­µÇa,B„ˆ®±8$xý©`õ,€"Ò÷m|fYS­9µîw\â§ :Çg±IyÕõ§ñwcœ¢y$Hµ‡°ü¼M#êœå_z9æ|ŸUû²®6”ßÀ\à''¨ R!hýh/G³/Å|0å~E(Z]>ä"n Zp!ŸJâƒ>]b™àHræ=ÄM÷©o‡ô×>Ê º6¸aTßÒæÀŠ‘Ë”¼1µ±8áè‹~Þ ÷ºFvÓn£¥›l‘œí–CŸ…åàÛĬë§:¶ ódëÇ)à–ö\»ÅÞúâîlÃ\Ý9òÀ’ŒÒ[¼ ÝAŠŽ­OÅ?F©%é#¼Ê‰jô¼Q\†"«N^ø¯IòtEc(ùrÀyGí¶ ÔC]Y› žøs0Qm®e¦å[°ù©Än(ÛáyÛ[=¯—&B™ëb™è3îd ý,DÏúIô8 &ÎÆS aÞÈ «ÙÊBã¶$J ™fWK…EÏõDûÄ4)„ÃFžmÀíâˆÏc³‘s­ðAßОßT^ŽÁJæø»…v´ÞèÂ<„6Ôe¤Þ1ÝS‚¢È°‚II{¾¼44ÕBæA¨µøÑßã²HÄL~Í9Ø9”•x½Ñúp”ßùÈS²‰Ì¯2~6c* !S…—=©nÃYýLð$ác]tÝ®v~¥‘÷¥Kszú&òG©—0^sM'úºèå„/: ¨™eÙ~p|éŠâ!£ÌGº º$@W7Ä“Û[ø@„fÌŸrvŽß_é¾è\µ£Á$ð3Y†Èö‹[‹PÇGé¾§`yühWÕãYÖܽñõ ½ZšãŸxìðw¬ e·ÖüRÚoé(»µc mÐÂLûçÝ+>a‡+­péy6 ¨H¦)u¨t€v j®^rèå@IŠÎŒÍIIÊäÕÁ:—“?θDm¼Ìû#ò"™IÔ<ŠU±ªŽÑI2‹¬­·$J`ž7<Å #Œ«÷RúNsuÛe|ÒÉ7P *E;9÷ìŽÑÚÛCã¡F„¸ö@{™‘_ail\¯<”¾á¡X”BwŸ9%þ,àÔ|~æ Â3‡€l´ÓFj¦îŽ®ºùœåÛ´;M¼o 'çïP|w¶{E ˆÎf"vÜ\ÌmÆ[ß2mw‘…«ùÿ¥Ö~!1óîůN®â%Äk0߿ƽ7ç:•({AiÞk ܽÓ,ª‘‘§å{¡ÏgR¬Ý²R²º€ ˆòU­S€7/VÏ“ü C¥_ƒèl.¤[Î/W\ê˜0a(†€*¿T”T¼ÆJ:ïÔ] µ¦Ùd4ô–¶sÝl 1Y™p2 ø5Bä%RÖŒ¿¦{ü‡ìª´™Ø'Ú«¸™!C3ÉùÙÖ‰ 墙†§oGûÚi¦~$Xs®ôleíEL[÷ó9‡kÎû’ )ÍçXÓ!Ù„;ZPãri,œ €OZ‰z¹õh•ìÁБb¯,¹jvp¸ßá >‡EÕKwáâŽqê¢åÖX:äeM®ô7ž=ÙØR‰'¯¡`].*1Ä>9±o ñ ç|sLLGæõjµÃ&îir‹Òªñ…"Í|Ô·?§¶´Fƒ8ùd!jênö]<G;Нmký¢r¹Œÿ‡]óf ³—*WV{e3< †ØÏ’DK^S½6YËùÅòj_8OkL¸®UYÄC!Ä̱k‘¦ïGˆ»Ðç³ìÂ9ßmJ¡¶Ž0(.åCµm lq‹ÛsÓñ¡ç‹ÓÅõt:3Z šlâ`ÙR>üt8äbñœB”Àkù`òÓÚ)~gÛ4¶dl„aǤF-¤)w3åï¤ë-Ébè•2‡¾ø°áA¸e…í‰ö1~jƒ¤ØõL´ÛYŒ…³øZ¨½‡üž5¶Õ\h­;í2|±0å!î…!Z:¢Ò§{ulÒ1m >ªon×J‚.h@Âs”L‘èÏM›Þc_[…æ~°æúJÝ×<öXØ£±ë‘A„œ)GyÜ¢Jòü´,õŒël£vv_ï¿55ãxl¥ïô¥ÖÿíÖ@#ýøš>² ÿL¹’„– éúé'ÙþXè«ÁÄ' $åT¬ÞB/jøË}¡û8?Š©/ þx×ÑÀ|K¨Ôüw_ =AºÍÍBof0û“ðeoViû`-òȵ¨iû_‚Ö#C}ß„Œé š©Š;_è] Í-¹­KåÕ” /æÜŸ„SÈ7ï}Å]–” èŒê2#4Èç·ä°bЖPE¤cÈçê“ĤzPo½›ò0ú×§„yF?ä)OŒôi’Ô[N°Þ_é%°té̳n.øñ8¨lõÌœièfqçõ~È{@¸œYéÇ}Å¥™ ®DÙ:bãþ‚ØóžÜGPëMòX–Â,B¹Ÿ±¥¶î8¬LÕ$3ÚÉB?oíœ3±¦2¥ôäFÄs06Æ57ËÙ¶°¦U|òWUñºd8ò~М”Ëì-É7Üy3ïš}9¥MÛµkP:uu,ÚÒíà—Â/†ôÍOoÜœ*Vå¥X¡zœ H«Ñ3b&|#‘èÔ¨Œp«x¾©&BA³ÅG^åŸ ¼z§kæO¾`Zßþ¨6šY!ü½Yê鹺$%LµüsM{ÊÑlc¥VçOÞŸLXõ:‹dMë¥ìzÒÊi12ÂW!d– ¼^þ°b%{ %2¯dF ‹’«U¦žÙ¹¡aJ§­B&楉 ÏQYd>1Óu¦Þ?fÍ@Ðm<í'el4J"|ßTTèŠÝ—ªkŠ-œ Üo]%{|/ú±/®·$´o yFv?:Ûˆî$æúk6Å’sݦÓºØà®]}<¡çâæZë†ÔfÁÀãó ·:ý†r÷pM§i\‰‰lñ”¶tú}M1ÕT´Ð‡]›‘ñ•L]’ -ÉÏKŒoCŒÑ–¿¢m¾YJ èÕfžtÂÏpjPâx mã}ë EÂ(„õ;Òö%R yr¿5è_Ç㮤‡‹ÉÁâæ%S认ê0µ`È "ØŠ%…°&”áp#o/Ðp¾¶ Q¼ä¸f¬‰A¬ª+£ôç#êeN³äÉ›/;¾Ê•¥áø)Q¦ÛÉ¿Ô3®/ðž9±Zk3Ѭ„¡ä=áª}.ÀØþùÌ inÃãݽ¬¯Ì+;#!cÏŒÏÐfûQtx˜øKÔæ5µ:ЏÅû89~ÞB Õ.Y_×øCò¾Ïb—{1ÜÊŸ32kRt&Ø -Ç(»Þh©ô—»C<ËÜÂnÃRqfVW^Én¿ó2 *šŸmΞ#O˜Ÿií9õgä›8Áÿì~À¹ÞbTÎüñ ¶iU.¥‚¥¡´«7.£nÕi"ÂÞÜ ÖꌪQöxÐ?Ðo‡S‰I:téÕ 9ÔUé`-Ôk&h2?ÄZ~–èu·ZÝÇñ8–!¬¥¬ˆ"RŸÌ0*ægÚSjPˆ4z ÍÕVØu8Î ÎK ÏäÑ; /o3z+…JÂ_bû‡+~’ôdÕß‘@ð!ÜÃ"¬§n¨¤7hiskIÏ•¼ ã›ûM½Š ĉxdxt+ìø²é“2îz¾¤Š7nÚŽò<œ?Î#µ`EsÄí’)„CÞà Ûl·î|."zÍΪm: µˆxÉRvK#Ü>ÙÁW`tk-¡ñ*³—¼ŸsX€*&üT̳A²w>ÛÕOŒóðÉšVÜÇ ñ-Á™3ŽÚ^À@œ .]@aÙH%q •!ÿ¤ÄìkmÔM:_§> ‰%ëEÁÇ~'Á苨5B ™ÒuèO¡Á^—ÔœÎñÕÅ-N¢ÊŠs´ ¹·}ú>¡ó…!üñ.ò½ÂþøÜhWu£BGÏÌ•t[;¸TÒýÜhu¯) F¸ŠF•Ämu;ofeáÆ)rÍ,›&m¦MB†A"•@ÚØ—/¹ÒjñÉdßù`SáßuâÚWò 9.ÐÜÛ ùYÔ™iá°“L;½WÞ9(…WN™$Ò £^Æò8©ˆZá,ÝZ›áÝÆ\IÜD‡½²XßÞå\«,M^8{PØëd´Ñÿ.~Ùº`ˆÎ<¸Ê€“å6<Â2Yß"/N‹o?–ª]}.Òà~_¼1kÙuDpIS‘5ǤÍKuT,>OÄñÒÌ•£?Ÿæ Pâíé38r¬'!“ÙÒŸ%×ùQ^:¡ø$áõ ò©gŸzáéÍmÕ†8ýF&ß&³t8ÜဋD´Ð¿¥r[o©JC¯j×(!&1W-x°[DìÐhìŠÉo_òÎuD¹‘ö+2‰*9óUík›«È‹$Žƒ€ Çq ^¬v›‡Ë›Å‚õ<¾µXßœ½ej2 ûÊ|QÊû(#Ô¾Û¤•O?$U+¼œE^ `ÓYnøZs?b³5ó#2þ;´yø­"V´%D)³o…Ê ú‘žiQ7Œžyè·xû™nÜŠº79×S0ÜqD¡Ú?òùØÊ¹:D˜u šÙgP ”)?Hé`û…‡Ö•Â&ªøâ]Í´º{Äna“…vÿÍê{‡J※8žõkÆ’»6_gN†{ÎscJfL>ÖÖ™ƒ¾‹­ÖŬ¸é`,p±"8å Ã)è8 ƒ?Zò «9ÔæJ£º!ÿjú‚9b¸ôK©(`xŒíʼö™Ýb¬x½™áʾEYæ€6n¡L-üÖÄäÛˆe/DOÅròåv]µ6m4Í[®îàFŠì(—Ÿì¼\”¥ïUå霧Ãtm|ñ‹I¥N/‘.xê׿¡öø,ì~ÀùaG+yRría‘M¼%éõž`æÚ=ú Õò­Ô/°ÄV°fFZDdœ%®î# Ú#^1Þ¿¤s8åy騿iÁýö¬¶Z¥"#IôPÚ.#J=…±¶KVFe¥ ¯õk)UIö9²Ÿ²DÏ÷µ\´¦ñRPðDÞþ4²Ž2< ù8ÐÍç©vaÄŽjp]GÉ¢7);tJ¯+žÒúL¦Ŧi7°‡ra?ˆfºàø+û‹˜)ÒUia(ˆêlṉ¾)#óÄó‚ Pf‰Ï6;/”N•£é" …ª²UÚj3¸™Øm¿S¤7ªî]¾7 ¾MÈü扷_#ÅBç9ÄÕÍ…SÖF ?¿ðô<v7·F¯Ù uMœuþÐy â¸èG?'u¯E3@*b<÷¬C3Ë%öšŸŒžú{¯Áµ|#v'ˆ—šDÒAÐ×I=£×èÁúÞ÷[³¼³oÌg¾£08~¼AØÔÝñ:d˜ôti ;ÍSþ©“'ù‘"þ’™ó²«›N&#DÖj2Ø[ÐTò˜"(Èp+4¯­›€Î­¨Î˜#ìCé“12ƒ§›'ÞÕãÿĹ6AÕ™Ø0_ äånNŸPH~w÷#áý¼Jh¹ÈÉSøþpÅÝ0tuwV"Á$"šjaÜ'N‰"~#Ë2Ød),½ØÇTÙº#ÙŠ:T—£’ ƒ°†öòZ¡",›é.£ŽÌb!ä¼å!3ý¨øñÏ /ŒX´KC¹³8®„D5]WÏÙ·ø’:W !o‰\/f0` éÏÚJ]>SÑÒ_½9¥ÃQw;9ð „b5`y™-!ðP”áo‡ª©4'r]> xï)sq*æ@;÷3Ÿ m5Ð7MîÁÛWâ/D®–(£1Ô9I0zi³ùïa÷Σ•ìBÍs,éI†Ïݺ߹aöGÄÔ[£s¿¬@··"ƒËÎ;ù:0GÁÛ‘4 “XÌŒüw¹Gغú åîÒšö”šÒœtðn”Pý<êÔ§¾]8#›ã®?­~:¸¿Þ‰› ¼†” }Ò{ãˆ.ï÷Ð?y=@ â{ôCvê㣡öÕíípÄÛ¨i‚ºzéIÈÝ ÜóZcåO€ÊnÖLýÌ,¿­ÞöžHŽô¡Òü%]ÂZˆæ-Þ9t>Ñ„%žˆ£¬y¿z„󟞇؈Â#ÒX5–™m•¶Cê,»ìú܃íqÁN¾€©ÔZ˾+¡Ôi¶7”ý’2O}>Âüq ß>–Ùó®˜aSJÍì=±a‡âX¨8uê@ 8cý.¦»ˆáÄ–Z[Æ ‹†Ýn¦¯«O[?ôÎ!b Dg¿¯·Mº…d—?S3Äà'$Óôh†k·ÜŒ ªTOz]¾7¾]:«T‚õæprA¾­6M°š¥Sóñ[æù,{«rØ}cŸèwG‹²õI¬[ Ö„v«º›lÖgò fi #©r…ö`0“NÆFDCqV KjŇæ¹ç}άB§[ãçx¥â-ö~×È£h±ö5Iܦ®CRšiž”ÙéŒ"”Ó ‡{Â.BDÂæZúÌî(é0]8µ™[ïªK$Ô .…MͳN”ÛÊ×E j(îm3Ì8ÙtÝŸ“ŒkI}#ü-í¢¤?zùuòE) ¯˜h ¨ÏË(Yx Jf±©)Ë×_­&`)wìÇ]³ÑKH7æaNhiƒRÛ"\ÓªçÖ˜%OŒw°öÇΈko]™€”í£¾—¦¸ UljœÉ-ÝÛXçN_ݲ"Ò;(±Oi_¬ªÉ&Y¥Ðƒ)S·ŽöU«äE¿Ô½*¹ ‡Úý€Õ~Ù{ÙsyR éû1¾qtbM-ݺÄÛÜëÉ«:i×x%âV%¥äXØÿj‰ì''ûR¨E Ž"rüð¼Jf²•ÎÆö"R™çXš¢£IÂe¨:Aà÷—!gJÄá:oÊh.vu<´O]Ÿ¥ÙIê$ýèÎåÌq(ý¹f •.{ñ•O‡çÕ…Â{ ”wÌʧ?9…ó5Í‹©(÷Aá·¬‹qßø¡h“<î;òrâ_°±Í“7 êÀqe–Q‚o\örb .ÿ‚7)%ï § -kÜäí?pÜ¢œn>Àv}:9üÈ=V¶–­a*ð,¶)Á°üàá´v€ k{d÷(­ ÿ¾ð#‹_àÒ¼Bûsf(¢U0ÁT]gOôWO±fàdïØ€:?Ë,Ên9ÿýïsÏ”è£9Œ÷vZäYãÁðT3šôï^1›uŸcPL>³½OVXMõ5°#z…“_Íø|ó&?í|bq1z¿–ïûí_¬^è‘Ò¹1ä¢íT¸FºŒÅªƒwSI†„·¦A˜~Ê{vŸ¡¡]ï†sRTðõ¦FuÓ½; ×3PŸ£¿1U¬§pvК¥`k*OžCâq‚zå«°OÒöSe„4ÿÀÿÙýçèØ¸ŠOœ‘m ϳìÏ ’B)\ý¶3ĉÞWE|Ðß#^IE:bžë8È«UùF³}Í=Àp¤•"WÒ ¢Ÿ÷ïÇi¼&Š‘—,~úI{f?ˆf:7što©­¥Èr‘ø4v·v4&ƒ2º†æ6Ù?ÿÐ9O"Uþ~a\ Ö¬¿BÈža)Ô,°Ò…<@(rèýM«ÆÒÒ¥¦„9Ô¦zˆÐâãoÅ(ú5I J˜¾{éÚª¤å Yo½°¿ÛçÑ\¯‰ÆñLùVƒ*<: |©rêXZ(õˆ ÃY\¥ hzÝ\•Çl²ú¸, 5Ží×@õ¬I÷#Ùå›Þ³È5¿äÀræQ¹µ=Ûo-·Œ˜aq"FÙX·‹òn˜È¥‚?aNØØº'·q _ M¾Ÿ¤à<ú—º[ŽÑB˜sJä×ÅÅ™É!Ͳ¬{ã`öDxãÌ:;àCØQÓ‘Ï–¿`Z‹Íi®öã6¿Â€9™GËãôô3¬ôëÝÀH²ÏÝ¿,»À¶ IÚlÜ;ûÙ»—Wøºº¢gvÁ#- ‹¦h±W~n´»|éG`¶z»#qí}Há>½”­¼#ÚkL_ëãœ27{=²7DaMnMEÖHÛãê˜øó9øF͈ —ƒ7"¹µÅ´ù6yx-¶?qb‘P˜ÂIH7]5xÔ|Ï"ìJ›|5k‹ŠúxÓ‹?ÁQ»Ø­ÿAOKN¤íèx½¥) ³€5œ²^„çámûÊûÙ\Vä·Íi:@¥•Ç^Ôã5Õ°ƒsçá…&Ö‹vÈ=o‘¯,k8<6®(eàj÷©$(qC8\ïr·dÕ¸K¹ È ³ÌiýšPë¼ïl2D—²EèJ”Ðá662”ß¹‚6O¬HâkgÌæÔ?ºè´Gp½©*–n_P9Oy6”‚£I ÒÕÛ5iAÒø¸ù6‹ÏwEŽëz…æªòB±Äþ©uC”c‰ ø£Ã¾½¦ƒ™“ùÄ3 X[èÃX×Û¨ )qOþ£èû2áƒÃ–âsâO¯ÜqœHw¾>GF<±Ãª¢¹ÓT¦1™mÕôˆÏžWæðCÛJÞy©Êì¢gHŽäxlUÁUGãI÷6úŸ¾Ý§b{Ú×7CMù¢ µÿæƒ˜Ø ùîëÍhÅ·É–y[ÒÜŠ?¥ƒÏYD8Ý]°·û  ) ,5ص™îê«'ÌOÎ*œ}hœùQ½ýó:æîg‘²á'n¹'ÌKÇéµP$LD©´PÙ:Sôš»ìØw§ ®õ†ÎüãsÔaàTŠË°}wã9ÄÒCJxº¦¼ÖçjL0Ù¥³ì9¡}L@9‚ÃÀó}|s7ÊÍøjË›a·*45%¦Õ+ô€ ŒÑ"V°Þ½:š3E> û6ïkÞû /E]aÏÕØžp2Óõüæ¶Qãë~Ë‘Ù);!áæ\ïô˜2y//¬ŒSè¤ûHgáƒÕú²KËðS܉z)†ð ¡ ÍÇ^¢,¸Õ  Bû›õ`Ev“n'ªjÓ£w”ÂíúVŒ¼¼Ž¶jFã¦ð å1Ä<ßš¢£Þèï ‹Sj9ÖOËßY-/kX-dC¶šzzÌrª'ªÈ“öi5³z¢û²ÈÛý°†¶{=Þ}x£ˆ`åéwRŽqt—©LBÄ­:î± Ùzœ¤Â®::Sf®X3–#Š»ï6`]‘ªà^¦ß›tµ@§W?Bj³[6'SÒP]©íB“i5w·ÜJL1VÃJ£Óדâ€Ã—ïENžð2É-¢ZjúìÜV+ëïµ]É£¾çQCD: |‘Psx¶"Dç‘x¢ô¤þhõm|Mè36ñz—…Ûk—&÷™sÛB–Mîýú ÏÒÅ!fú?#˜|.#ò©tðÚ_Ô8r½ÌFRÆ/£™×š ìK‚/ °yõ¹ h1¯-‚w ™Ý• }uo–MÎX¤ëKQ‘šæ¨ß]¦vÊ+Üè1|M<0•Da`;ŸzK²}I÷â³²V©$&¬Ì¢ó¼;ú~ÚGà„’Š´]4̓4¡´¾19ýyHׇó¸¨AÞ [(øME!-I­½¯¨âkf ÝøêÙ@PÇ”çÒÉ+傳[Ã’çx4gË"Ï5ËÚÑZFÛÊÑdR—œ«&ɶg·­í¾Àû!ƒ{ðUï­!<ßÉàk‘åÃä.T~Ñê0¢èqU1æ˜*ØÆ\ürÀÜ@Ô% À> &64“¡ý å·Mo±$ º²Æ7°áòãC%çNoRýfŠD8±h°¥õxá·ÂÈt“Ü*gÜ’VÂd*Ȥ6‹„ ˯uÝ‚®Z"û"yg7óø_iàÔ[1? Ýû–Ê ED;]ÏÆ~+õÿ¡!”ÌýQ'Uû‘5‘ ƒÓé‘tbu“åÃ~WÞH#|2KÑ·mcö•7äe—^D%SÂeX80Ì .¼l¤Ëwµ8;?v cËHò.—ݘFa"ÌT‰(»'¿ø,$<_ÇÍÛåeÁ²Ób&úäK­”úmÏ?6;àÜS¬£g„Bà=,gàÄ H¶Û0oG¡z‡¦¾^ã\L8r¸ÌHnE`VïfhEhK × d Œ2 lB`ò…oã``9ê±e‡ådÂŒ^ǦûÂöœUÔI¢ô5ªkJ*¿øÔbÇëîÐëÇü6ëˆË9 БÌDÍÝj•¿w§´Òª¬ó$mßBÑ anøÑbžÈ)ÀñNáÊ"…ôx^u·$RI{)«á©¸ÏøxTL ‡4ß?M0{N£˜4âÍ«Í<†bôyBË?CÑCÆFgc"Á¡ržórÝ;-Ì­ÝÝ^GKë‘!`=¿éwA©âV°!L ÒìM5ÿBÜáWš¦ÐŸ;åÜ_}ø¥( £š…ŒÊÀ>Äþ„JäJNìÕº’µä婾Zã`·6ÅÀ.Ÿ†í#•*hˆ_ÓóÝœ¤Ìw“X«i‘ÌN ­¦Êä†8dÉÁ©·K™-¢ªïßv‰=;–2-J÷« éY Ž_Ò]Ò<§~ÙªB…n„§^iýaî£/î]5Üž‰t`b˜/2êd´à×Kv^éHºüñö…ÑÌþÒ}ñÝüwZ±ÐjÑm!‚§× ˜Ñ¼×›~„’( Œ=‰öFýXÓn]©zŒïϽX°dQ“í²Ç>f"=x¹ÁƘªÒsô}€ ‡k"Ÿ`|«—^ÅôTAë€"oW·ÓÈ¢¿ê@&'mÒbù½×pòèEâKºMÄd¸öÄ^Åàm{N›ôò˜ž¹¹W²ÁÅ’’˜ˆÖ9Pt‚5"ÙWAªÆQÙÍ*öqmòêBy¥ —`ñ4 UÔJ© \-;÷]Î\]ðÖz ^2³é­¯’̲¦ôÜ©Yç“ö³ð´ç=þO™P£ëÆu© ‰/!€ïEÁÀ'o|4j8÷<,,è1ûJ¦âнšá1Ä[HŸÃ-NIèÅlÕà³ÌL0vôœÙ¡æ£jé&ütK6­¯‡G†¶.†á±’mú0xs—  ¼y˵”(8Vsö&‹O3 áÑô6dg¥ÂòBº´-Ý€b9U:^eTþgÕÁ¦¤kx9iØëôãÇ®™ˆ.o ìZ8vâ²oûÙ( xèdV)w xî ¸ýô?õàÅ2$RHZºÌ# ›Ìsžîjæ®\±ë„ü|¤½Ñhø/•Ø—ÿ‰¿…6–3Õâ{«§¸&ª¶€5‰á«Rá¾d!k†V,¬«CG‰%/[L櫉ÚOi™çNª|ƒ>D[ ˆ0Ökmfpl_œ„¿úG«ìÐùsæZ¹Ðð«$PUâàæSo]Lñ- a>&6 OE Ìu‘5Ÿ;î¤ÜrVr笸ÉOj³5!ÿä²ÖàxEÐ2ì3;®[“1Ù÷‘ðZÍ>¶ò3Ê9yN%òýóùF ôüP•ãÐ8ÞKclöŽ]+ôiqÁlÎ/*ûËeú^_çn;„ÃVügG«{~O‹Ú8!A^d^P-wI…ŒfIãË«‡ªzÂýk× ŸÆâžï‘Ñ­+áŸg”äïQR«Yç] ‹£§5Ñ (£+¿Dp* ë–¼ ޹¡?´_iÒøZÀ3Œ™¾ø¶1Th­¿-EŽ ¥$$nî’á‘exA'ú˜¹ås즒4’WõD°dѪϙǸ¢TD›i;ÂHCQšÂVy?Ï×-‘¦;aBß ã°žc½^ª8YÏé™Q'>©nv‘ÞºŽ6½¶9¬Øo 5A‡â¦-Ù¶•´q­p••gŽãË«È D“®€(8;Fˆ·&%*Ó> Eü\ÑêÒ*òòÐ…5èwêÎR52ßyíQ´$Æ[+êŸ f,[RwìBÓU}„”G¼L¥égåk¢6ƒðnÂák‚Kë!¥?p§©s/ð\ˆöpHèêšómF›'+ãH«’ÐÜ­c¹`ÒäÐf£`Ç®¾÷Æ·ßú_ =앚û˜¤…g²Q#¸Á­€¼/”NÖýÂñG‚”Ϲ:§¬ŽhS‡ \'dR‡ç§Ã¶ êÒó–mU<‰‹O—Ž¢û§o¿Ã0üp”ž ßwµ‘’ùÜ%t ¹‹e˜OV á»[Ê·ÌÃ—É  ‹:E‡9§+,r÷ÎLÓŽ#‘c曼°ŽdgDÙ~”~§öÅŲxâ­¡NO5`¬E8#[a‰œ£¬.{a¸î!¸Ì)˜æø(‰€cv¹IPB2¨ØzÞƒ±â¸ÎÚuMO7)÷PÈæÊlM¬3šoÅ›&ocÄf“´n—F–&ÔÕv¡›G—`$´"…&ÉÆÆxÏÿÆÆÝAÇ4nÙº"°ó*TëÎÖUô>®\ÒæCÐu:!’»­ffMå-¦.V>&hýÇ`ØŠ‡Àà ±.åK b¶bªõk†Ð‡s¼ô[V~šv¥ÚOÝA{›)ky±­?ã÷ï<nc½ã‹33²)ý% í6DÉÂ2Œ½¾Xc~—“…{L«Aš0]&„ÛjŽax¸…üE° ÏÔëx¤åR¿´Š‡i“In@+ÅEhðÔvÖíãÿqL÷CÌžæâîÍÊÓ#"YŸæû²÷õX‡Ð͸¤ NS¼Ã‚§Ã-¯É»Rè-ö¾%UN¸‡Xõit×?HªÌnX½¿ \‰ŸºÉ ^ãèø )g¨­øŒ{‡Ÿ÷ذ51`¯‘àÆ{®$õ0h¨né•-6eV¼÷… ”8ªÜåûýõnÏf[Ä\DQ‘˜öÂÀ€oÛ“0AÌ~À^hý@ká§¾^eÿ¸„%ÚbN:œ'V³>±Nûó¡ÐDšç¼JëVŽÂêŒ3¯ ÔkmIúøOAŨ2ïü„¸Ãä:®†ü_Žpñ¦,ººÄÓEg(ìN¹TŠ4j ½#V;,ì Š¶1·åq(´ ÿ_õ% Úõ±ë$óìj”YbuÍ+Rê(òQYM rB}·Kÿª§Õi¹Çúˆpwn¢ü«l›]Á™,é0î)ò‡³Ì¢h wäBÑhšê÷vÎEtËöŸÜ–¢rK3l@ ΗÓ8Jú\ Îñ3Ý)L/®ÐÞ`f‚Ý\Dú9“Óà±Âÿd-h†.Æ ßç>ùgÛ=à䯉¸¨Š¨‘* v5ý8áÕ ¸õRµ]Uå–xÔI ýî”]UJÓÑ~fáõ#GÆãÏ/½&*!}J ¹‚Éܯ‰¬9ôœ]ÿÊM°úÔL®ö5% ûTíÙW÷.}š½Aۉī g}ñïÔR„j´(6ëôz7Û"ÕÐG‹k E¬×CGèy0É_2}J·“î1Èx2JÌ‹åIS¢„ȈЪG(¡‡Sªß‰ô¹­¶®Pq-@4eEÙ„šò9â¤ö?nf1ÞÒ/Ïe7Êq+èÿT'¤æpX‹p:óîc]"d$“¯¥ô´¹_LÈ=“¯Þ9J•ú&¡=Iää»Ïh Úú¯©Á™º7le¿>6ÕQ% @ÆßÊ0l3q&[C…“•ø3Ï,ýÊšü §÷þ„ Y®óãB‡¾nÊ&ZÛ*|T5“z 7µñ¼8ãT™êZœºXÌ­,wس(¦=WâÈ1vGä ÉÆ&¶]’íˆãAuV"XjšÜm”ýÞ.mךl¾u¬i/ rZ$¼¢lS ¸ˆ¸é ÁÆHa@×,m:´ñ=kfƬ7;QáN«ÿº( Ø& Ú×v²ø1MÿµF|„ÔC˘y‹ ÑNtVןV8=«ð ›pMÐ*¨÷¾Ìä_àÃC”Q9œEà—çQ,©…9–ün–Yìƒ dªdsJ`yM"æ³e7—8ö-?ë—Ô¬Ìè¨Ä~ÞDÑA Ø” ×.ËUûŒ¤;ëa.oÃÜõ"îC€¶ôušV>ù÷º ˆdÒWôS¬¾Xüð„ÅrÀKôiItŒc,9qõR††ÁAöb®%»&V…šýY,f³4³M öuôö¤æÑl³ 騒.«Y%·±Rá[=}vUlaÓ´¶°ûö3âÆz"4lñU“˜ÂçkqÂ*ÖZzˆ¥ Ð;“¹^ÞÔ”"™Ý-Y}¥†°Ž¥›ÞŸ‰2!F(œóÝÝŽýôÎï˜ÖaI:bÇ›1\Õd•w1wlnRÙù¦­î³µièHýëR67bûœw‘ö…ÿ¬xj¾«€”'ÓÉ$g.A†JÃp‚fQ³ÙMqqœs³ Ü‘ôöLD)¦©;á4I”ü7¤³îÙÅ}vå‚íºûªØeuqXܪýš%â`ð± ×2ñ·ÇŵŒù&¡æ1JËÐbø ²Yl3~æžž"< ÝæÔ,¯f%…Ëå "¬Vjÿº…wl—ŠgÔ—f‘d$·LnJuýº!mtïœ2^X ÓÉï‚l,«è~%v\îê?\›©e·†A´5ÅwÑG݉Eñó&Ôò6Ƹü`}’ÚœÆ)ÉÀ0áŠBÄ}ÐúãR˜qNÄQ«X²¹š£uØ™åøú' ®°o@V;*dà 4R¬£u²loj2»¯š"bÞÔÏÜÆÙ®ÝpðÐþ¹>h­ ñ— H‰PxˆëÞ½ÂCrõn¾ñΠ¶jeÈc_MJã3Þó𶘷Š5Âcµ5³a¡ ÍL«÷ä‹Mñ+´ÈeÊ+Âpääø ‹n¢ wýÜðÝ\”‹£}èåOqúÅ„BoSJ?œJx̱œÚŽÄÒ uøûæ°ÖMy b3i`È + ÔO•Y<|R3ャ¶Çg…ň…Á*l ‡HA²äèÇqQ¿ýhÝEÄ‘;l-L9;•Ñ/ÉôÓoV?J)ˆö8IT=šÍ bÒˆP¬·ƒä"~þ÷ö2¢@+ áÄæŸ–…«óeqà ³ô„·÷Iøå^áËdÙîM4Ý‹¢I”R(áJ8Ÿ’1æóÜ`Ú6£Ww῟ә{àqr`.ÑÆ3ÈØ[£|0°o\—OŠPîã?ÆéÈÌš +h6¬vÀ«¤nÝRL³4Y$ù£§ê;—ýÛ°'™€U2!k´ º…ÈûÚ¿ÝòiV¬¶g8”(YÄòN¯6)ˆ ×­b•ÚP%²HPÐ`bµ²ÛˆÀ&›¼›†_©‡†èMÕîû*÷?$R$üþ»t¬-lÛB—WÒÂçd/‰ÆrÇ{S·mÕ2‹Çðßv_­ÄÙxå“¥ø8œ”*|ážÇ»èå·ª,ô?¢«Žä!;ÅÂiRY”Hêw˜,ÞxP1UЫð}µ®Yw©j€äœi•b­ƒ6eìŒëKwíòÊ ‰/•TŸÙ:é­Ãš ¯ -šúåçHŒ½{m)‰n³èÊYБWV„WÊß ywybB扃 xP‰#ûJùÊŠÆíGlõæÁ(£¿“ðVjYß%­$fLš'êJXO”$ó¯d¦ð©ÎzÄûxœu1üË¥8b´ídÍGI¶"@þò/M‚F‰h…먚è’×Ìš¢¹÷˜<÷mf9·œ¸ACû²Hªd<ß)HIÓÂñßàÍäa iCjª¯}V®O Ë‰Ð¾Ïð\Éøä¿È¬+(°dMÎ Äðëb4˜øÖøw„ïwà¸ðÇIòަmiº^AÂ?„ýuË6ò< ê\U­'Œ¨ÕQÉx« Uц‚Sj{J·¹ žJY§%’åÁ‚Ëáô.s›d…G;AO̤ÕÁô¸!I&…–4ã;¬uÜJ Énm÷¡ß¨46‚>dVNж¢nn­Ñúrx–6Z¿C§R –Œ\˜ç¯$Ïø¨0ޤ@Íg¹0A âësÔçÕs jˆ€oFa°®$ó &#Q¹;oØûºFõNš´úN¡pCæQÓ”²Y_æ®;‰ø~^•d¼‚„ÔNZ5[·ùކÛþäËxhÃóãói0ÍŒ30‘‹ëÙbù®×ÒÕ|1dv;°ÙÊz!}¾›R~G“ôî­¹›±û_8àõ‘é5ÖŠÚO«]×öel| œ¸‡˜+f‡D˜ PÎé6ÚððhÛßR3áWG”‹­Ï¨ ‰Ws•/Lüõ×a WŒân5d½æð(†{œñ³¡~D*Õâ2oàñR‹MNÆ%äüR†ß‰Ÿ1JR;^œ!ÃÂøqD+)ëÎ_Iùü6¦œºkn®<Ç›FP),0옄˜ãÜ —PcËÂ’˜ X¶í›ˆO”•Kžnf•G4!‘a'W«íàç¡ßNEÛ³}§gºà‚v•’)†<ÌÛå*á1µ'ZÂTPbº[c ×2~T­0®F¸®D Í¢;'F%Ri¹ÍL)Ç” ~èÌ”ÕYbrtÕn ßÞ_g«öŸ Ú7サI54ÌW¾/¼RÝÀíèõA;üšQɆMrp¶¯y<Љ}ˆ@§z«ßts[béów\®ÚÞX Û)™òní2Ãsa?.xŒVë ò--%¨[ͺg†MF.+,“ѧX ZÑ£˜bª2޹œsØÊo˜`{ÁNÚ;ϱú´†þ{Âä1î?a†øW²û/@;ìú¡U8Rp9¬t¼WbÓr ý«óq&t€Û9ØHJ$=F¥šË÷ì>< _ .Ã4"É­Þ:C;¿t?7^¸Õo'ŒwÍ©ÇúÖFìÔ›¢Hžokôص߶׈Ùõ5÷®§î?‚÷GzóÖøvÕãK¸d®3@ÏêP7UtæÍÁØUCç̵Úmà`1¤‡Z¤ÕØvÜEü*ƒ¶X8¦Ãñ©-,»hŠ}áôË˺Kn2mÁÁ)ÉÒÔ†ËØàC¨iñf¦¹,ÙáZ/Û].¹’r!À ÔÙ±<¢÷ ÝO–·¹ÏÛzÜnÏ÷ ÝnÙ=”,ö^iÏøÒ>Æè­åóolÕwm]±·M?È}ߤQ.ó…mPÒ!}PtÆm‚*sœ†…f£åße÷·Ö'g™ õÎmP¯î¹ Òƒyäþ RŠã’ýuõÐ yóȉ-¡ÙåÓ-W4ëS¨ åc4 ÁQ·¯$‹ßXýÐþ*%^^šúUDÍó]Tøа­7ÊXβ]61:¦o¡à£Ìá¿Þ#N’¥eþ(–T¸!yŽfU¾ÐçÖì¾Gäÿcä7”ÅUðgˇbb"R†ýOÔïË@’öÞmçä!òÐÔ÷iµÍ9î.þDÌáë_ÃË€åK/éEšòÝ.)Wöô8?w–•É©iÞX¾É¦ûÅ¿7›³l ã ÙµæC(à³CÚU)»R®Ñ©uÒÇzžKvhŸoÅDýÔ¦XaÁNôî®`ªCfÂà ã³©0<É'f>D6Sc“¾å>ðÑùÈåà/ÜÚvÇ ™%ÀåÑ‚L5‹âPŠ]*¸ ˆ7ím;AÌ€ã«ÍÕ+ãûYtn^œ» ªt(‚ºkŠïJLÒ±û}è³}×9õ‰e&äíxr’ZEÝUQ¶ÛVXÚ¤{‡‡]¯¶Â81QD—ïè*‹c–ø^ÛóxRêB¨%}ý|¿¿pχÍׇÉ4§È¦ŸÇ4@Dzr¢þ¸Ùø5Ýq "Ò÷´ǼęýÓöT BPÏj˜fþÛ9ÃìZ1,_s1ä>æ¡Ûib‡Í²; »¾iˆÐzÖ^cþâ°RQO‡ÒO¹°89›Šæ‹¥ ø`r ~&7┹yjº3A`"•_P7n± ° øš¢Ÿ”œîá”aûwðJ;ï¤Ëx(Ôz2¿é¶j<Ü*.‘É»³¹þÕ9Ìöãp³‰«šV~œþ—Ÿõ ]YŸ˜H¥#UÊÉËÑóC̘ê`xÏ}²Ú§ ªûJ×ÑÕ¶«ÙÜÕ)T’~>nØÈV6*í³,Ù:~LÚê:ÑáðºûÂúü¤yžÝòk”~c6XÅ›mù9îÙ•nóš€ÎaÍ\í-ߪ£RþªœÐ¯v¨ŒD@bs””šeÔúŽ}åÐ¥NÎ>ñÊú?/uÄ Š(>3+^0·2m}ÞýE—ùú`c«ydËÞ_š’ç?‚5=ø¿C¯ºïæL¿™9aèA²q9B!Ãñ‡'a˜úbS01ê•ÇŽ&¸áÉ8±œ2²1ƒè«U \“ª‡"Ч©¾Žž§mÛ–t—¿T¼vŒ ´5¤6ŒÛØvWüÀ›åÞubŒFÊÄ"|öâÁ[ÛZ¶ªÊIp7¯nN[„l«±Ž'^°Ïh …BN.ÖÀÜ©fÄÍP2/4&­²më¤É>ÓÇÉwvt{rDu û•þ¶YMNn¾F;ö,RÝTt{9ÓÐ~X‘oó£¤d'ØQbŽW˜i¡1+­¯ÔØ ÃbAÂZ*\i2Äk‚fD -ÒŸ|jï-§ýOie_¾“ <·¸Š+ôiy‹Nà#°±É’Q=ظ¾ÂæÏt…;“®Y=äUæŸøni”CìuÕÊcÿ±¿ÝÿJØ™Ò}‹Y—7Üiˆ©è#¼ éóÅ©7ìïéF¨¨$´ßNhi6†²äм¤Àªà½ÜD£}n²|¡©w€•mzY<]>°ì¨$ï]q¸úZ°º$TšÒÓ/”TÁ«YX“L§x!¬é«N*­÷òöL<ö©µ}½§ t ëø„$²Ý¶lH¦/×=ðh®)Ñò\>ó`ìh¥¡ÍŠÓ ãNf9ìvjý¶0ÆÊgnýN†~‚H“qWDù’°…~qdž2] °W polúÑ jÍ´ï̪¹Ú׃ƒ¥t;À«Ah…ò¡ô;þŒrPŸiø3Œï¸ †Áò÷á/îq¶Ô¹lø?ÿY›9’s¤oÎ_2h÷ûäNö¨±ð66O-QcŠ ãËTÀ1ñ*#,+ÜéªçOY^·¥n¾Üô‚þâ·,b¤úËöšü¥‚DüQ•[ê×#­Å„²ë·‚Sæøúz–]@LNJM Ÿ~¯÷S219Ë `†ÎÇøí|b>ù¤`£í$ý9P º*,|®‡¡Èž}Ií*ô4n¥-U:TWl+a8ÇÑžûn‹½\;9 • – ‹ã2û sûŒäÑÿ£¹BÞÓU ˜Â&‘ö¨›Ô­èjÙÞ÷"ð¹3÷ä=Ñîªc+QÁºÿ›‰Œ§¿ì8ZbÆ5Éj þðñ!á|ò09`ŸVô²H-F[X×.–÷*!‰FÜx G8ïÎØ’ÜkÒ¼È+M¨¬’öwc9¤ËP£WÊ|gë #CX²ðÃÆ…>ß "Í»ò_!ìgaPØ]V<<f¯Ñz²(¶Ÿ¼°åÝ}øüKšT3§ b_™\ÆxvfÊ‚ ×Ì+­îš˜§\0ßLzëºÙhpÓ”Òž©åóP¸ï… >M|k®¹ß‰-êŽI¡ï뚊=woÅ„÷z\Ò]¼y^¿Í÷íë¥@üàb´$ÞU²wÈw!yQ:ü²¡bSSRÂ-Sº»¯ ÇçJ†_X§CðLÐF®3j€Á?£»Ú\·þy¦bvf_aÈtØk+}+•¡fºT·h?ʶäHY‚ê¼áx¨Y²·¾G÷8„nüOP3 HÛÕPôÓ¨_ëžæ[Ë>hýÃ8²¢íŸ¸äv>äzÊóX;Ïí)¯€½Ñ¡Ò—Ñ—>aíúŸô¦1ÁÞÛÞ E8ça´Ç‘wqg*ØÎÎ9c˜]\øQ0‰õâÎÉ¿Tê Ñs.²íƘ xPšŠðOw&÷ÅÅãùñKãÒ¾9Ú’Ñ_¢·Ñ{v“Æû'‹ÇPþü[afg÷l/»QoÝsÉ›â]þR1?"C ö¿&(˜Žh­ÆÖÒ–Ú3[G8dp°¢š ØX{¢ dAS’ÓÐ.%ˆÄKt°e$Ü¿Ð'J‡tŸk§0Kd„é_~àG\ÖiH‹ž)–ü=…X`5 Õ›Û)ÜÄÉù5 N`X–7O†úÿhP†œ°°rI %ÍÐñ Á°Hƒ÷¼-{yiö©‘Pdçîi5ç©y,ŸQúÂoò‚ …¥B¡°íbNH:îƒßAoxáSžúîÔîôDN½ú°nÕT=”h¤šÃÛùSYç¾üÒ²¬­#ݘãÚsl:sjEuýzÑ—îq†å+e‡S‰’¯’6  $ºìAƒC”N¿ »_BàôS¢3¾ç1·®º$xš Â… ‡!.°>ÿ}e2z"+Àþtac1`Uàj‹YÉÆóoÓ¾ßÕ⛺¯Îý¿ÞŠÉ-ú9VËxë cáõ ФâÔ%j©“@Ï-€”Üн(¼žÕ%© ß «‹bÿ¯/ÃCõ9zÊŽ_ KÉ’·p¨ÎXœÊþ»ŸrÎ#"‚væ­E>ŽÈ›•sÀ7Ñq=芚ñÁˉH¹ÞM0í«ÝÉò&âv‡Äþ½ÄŠ¸Ê =äÎîöÈðe ÛC¬ùÒqÌÒA/ì6&ÈÚfbJ÷µz×ÅJƒç.Gñ´ó6A¿´?„êKí÷ t*¤‚¦¸piÙ醎Q·Nñ?U7W¾‚àE´Õˆœ—0Öd;̈ÂvgÊ]܆rVZÌsß(¸i°6^Nf °S¨íìrkâ…ТdˆëYpà#E‡j؈‡×è šÆßŽ/@¢ ´Œó6T^ˆ'YbñkOó9ë 4Õ{žÛû8$u\ ò"McjZF9Õ‘®W‰²$‰îñ°ò=aSá¨7ÁB8ù$dç„Sñ¨˜x{å@ÆjA±…äR®3%.5vóˆÐ˜µ’Iã–ËÊ9Äb½s¡8j?लƒ¹IãRêzD-üAK&e8]^_b(F©¥D»v0P±´’# Žù JHœÝ¤áqËí ÜU…B}'„¤`¦ö ÿxÿõ½ !»áQH,íxd7ÝÑNàü‹¢!3ÎvØ¿¾Uçï›Û™—òPåÈÏ`ý‘˜yçÞåçƒBjpŒ½ô,e%XûGÃÇ#éaÒ´~•½£]³ÔÃ'C%Aîò®ß9 ´Ô×Ðå{¤êÁ*ÿºaûÖ‡1 RãEAFâ~‚¬ôäX–æ;eª‘9ã€ݧví7kd1Ë–Æ”Puk8(9¤ç©èÙ¯þI¯5{.r»9ÿ|ë¹pþeAûÚðÔ…ºÞíÎC½H)5mžaúa4ÎÆØ•ï ì%¯We‘”Ü qñáùEŽf4ó»õWÉE{@áÔ)~"òVGØ$úª–ß,!ô/öfÉ1^Ó|ê¼ùwšjMhÕžÉtêSÛ( ÿj3'0ð†y™@ª3Ý3¼äSØŽS Ó ÙpÕf÷¹Çx$5‰ä¸øS›S/ë|‘˜çŒóÀÄ%¾ßs޶ÕP8 àœ$jÓ„5…)¢°¯b‘Ó¡Ò®2p\û÷¡æšl˜s0®a’\jžÈmC;9¦œQ¸ÛH™û58-©á©è¯µÒ7¤ëˆÍéH„`‡}.caµLý_cºvR˜]á¹ V8`‰Z_w%Óx?ã]ZíÛvx=÷˜Q"•î Àè1¯EÅSƒ*k9ÿt`ÔZ×>ç ø$\S95n¬áϦ‡ƒv|0wÀžÜsiY”j"]°Ïcƒ©¼øh±wñâfăŽ4<¼òž%)_Æhc{^˜$G†¯$÷À‡ ª“Û©‘\ìÇHœTìçn¶€|ÁƆ‡€1 |/IkߖݶÀ&k²è•ýE_'~¼>hz(nãËÀO´ýý‰ðŸT!ÔáúI1ñg(½‚‹¤»élívÑzû¼©=qaÐ΀§ŠÜSÿãD;‡zY7¨f%Ç]k ÝtH­÷©újóûéS7yóƒ0Oó„‘Ã>¢¶Ê] þÅG/˜hµ º…¿ùªÎ™èO®OH_ŒmXk„ú½³z+»81ãÖIÈgxQJ ôÞììhÎ÷:U2ðL&Ài¨´ä’¯_°%3ó£E¶y€ìò@¹q¹h,æ”~ìãpþê¨å~ÊLTƒÝœÓ0D ¾®ÀÂyGŸ—÷=ñÃ,¢WîN¯M\EO篢œÝïò‡±~úH6MÕ„¡¦£D›Õú 1Æ‚àÙ£»/ ‹–Ú`ʨŒ€V\¸.ýû$&ªGi_#h†.ŃnJÝÀ/ðÃÍyâ¡LG‹.:ü̾%Sö ì^©DfלɃ—%gïë–”*3ü¸É<OÑ~«N8”ì`Òz™›]Ñ),!Èîop$ÉóÖˆ.>y¨‡•ž#u©<½G§¶Ð š´Ï,Œ ,š’æp_t•m|›3ß«‚þ ¿]ü¸k &_w·ºup¾5RPê‹ö€Ér5¾ öå'ŒTq)’õ_“j¬F™‚’Üë¦[ô ³¾uénq—Í/ƒYëê«qRÓlL·œ[KG+’“4?á3°ûœÒý à ÉÞÏqLj±ßÕÐb7ÏE—=FòÈüøVßܽ§ÇާÓ6±¯\IÛþÓY”Yœ‚¤ ©nßTÚûÄpÕD¥-5‡+håcØ{ØDèsNJç¼YxŋҪQ¶êð´`S2ãMOù1dlæú(/çÔaÛ‘xÚàid.·ÜâU©í§fÚ˜Ð;yœßî€_ ìÍϵ"â¨BÔtü\EÒ„Å€\Jn÷L«õ0fwA“ÙÚôÊ×?}ÏV‘HtK u 7sìû‚µeÍ÷€¸ŠT´úí¨×‘{Ð@Hf{ˆ×ÊÁS˜=»%ˆ)ÐfÕn„úíh`Ûùh>,YÀ„EÝ?¡1ƒ'Q¹ÕRhÔ )¾^Žrh ºDÇ¿iGpÏ"˜+ŸtÉÑ<ª.ñ¯-Îùp/½‘ëX0Ý:T*¡€«;µŸ<ßTîãÉc¾|¬l´ºº½«5·Ó9÷wuËUgj³Æ,çKÜq¡cÛw†?x 1|hHñÿÐðø—Á rzDÔG›¬ endstream endobj 558 0 obj << /Length1 1634 /Length2 1408 /Length3 0 /Length 2424 /Filter /FlateDecode >> stream xÚµT{XW¥ >âB)ÐöŠ" &$¼”‡ÚBDÂC N’2fÒ™ yˆ|ÚêZ•­[¶*T¤T‘Š(m]Jy+`µâ£Å²ug‚VaÿÞ/_2¹ç÷:sî¹×u^¤”ÍWá Šc›Çá±DŠ`ä2ö:˜¤×"ðâp¹>,WW ű„‚`)¥k”]Igp¹þ,W ‚$è  (ÒRˆ,]yÀ1-"q’b+’C, Å ]"Àu隤¡˜Þl6Ó‰©æ€pD™ŒÈd ˜ „s$hî8PƒhÕWŒQRá:)­[)õàÐ¥z'žsHeQ¢% „!(_DQRó+ƒÍ?i ˆÑqfÈ”K„2¾,6RÈódÞð@*$H”;‰ÛBšxI.UxŠip×P”.ÀÓÓ`0p’ô$ÅÁ‰$ŽNkâ'Ó $0àD2 ŸÔB“0zLEËIiàxfO€UBŒ„LQ(>L¡¥¤‹hœú›-ÅôÔŽ§ c4iªGFŠA ‚bÄLI'R¥'ÁF¡Êmœ =A03$/BÄßc^PÆé7‹×fd!†É;†`zrÓ+ÚL|m%Ž‘(I‘ã!P£ZȰ'™=C1&áG„… ¥2¶˜6Æ–à´:‡J£LÙL?~ˆ8,ãúž¿àÒ&b*ž’B³&YŒ|!(­…éž“mŒá,ã`5Š©ÔŒî*½Î3 CßÓðçÉ4Äz‰%A p|À4¥Æ“fò ó˜!+C‡ë€Ñ’0 UCúÁÊ ‘T(B³2^ L\±xK UR´Íé£Â2uÃÔ8ð‡i&/BÏ àn:¦ôUá˜6¨ šåS´Üÿ?§lÒ¬P½V¤@÷IŠNNCRPmú«‰“¢!ÃÔ='Rí¤J†¢iP‰RJ͸¬ãx…оçcIZHo‰ ŠbŽ’–ö,}ï ÌµØYj•ã7„É“´v/ÖÌñ¦A%«£ Wæm4žÎ?–-,n>néêÏ(›µ"&|÷”ŽƒÍçœg‡ü«×®,ÙRS´°¯ HÈþh öiŒkž½ö¯ž³…åMTkßéC²%ÙÎÖB~ã9'*·HÒžsü¼‹Ç/áGŽÆ~æÓRT³»æ-Õø«Àÿ\ÝèN¯ëÏÞÙ缦ûKCi+µMk·qªuno®}z6j·kRÏïXôÆ£ù³çê.Ö½y·,Qc»Ì{ú[æbc€ 'ñüüŽ˜©vnu>ù—mzÕ Aëg•ý»b†6—îT_Á>y:uJÇ x¤:³ÅÜåI÷þrø»þy®fê}½¡ûÝfQ@Ô˜âlU׉jÊW*4ÿný}ÊÉßbÝz›/øn=m•ÐݼéíŸm·M úK”1°ÒiæYµºuMn¾ˆŸ_KYd‚­noÆÏ°4ö4Ì9²?¡]¼í`€×—9ë -ÚuËížÌ[¿=1چŔ‰°,Ïñ÷þnãíS•îróÊå|lWtÈw":ÎÁÀ^ÝŽ4tÎy²·liMôÕµgsåÓšnñ}2š÷­ºk¤Íÿ„]|¢óÁŠ6ÁªÎ °U®Í4 tuF¦š=Î ôN}íJº®´ó¯ßûmã÷óÇF ‹ßäêœCÏÞ šu[ç÷ëÈð4vüÕ÷+÷Ø£™Ä£,ýòñhqã¥cŸÎuÔ sX)V¶ï“|ÏÙl[a>%¸Þ?'×e¹·üžÙjéWc3O-x¼Rq¹öžû7<ÅŸÖÝrß´«ž®à;5 •‚~óN‡ãÉ)3¦´wŸ*ÅömœCš•ßÅGßÿÔE¹ôÆZä4Ãl8L¸¼i嵆â>ã…7.·ÜIø‡»Ð#C»9¦a±Åª2ÝÄŽöǶôÖ1kI^ÎÝo¦vi¡XÖTà[×Ë›Ó\`éŽÕY8„Ê6V—]¹éá`eózB™øÌUë!ªM18*2¿»géµÓ}#—ãl~¼Á©ô«wû¦ç/1¾?½`gÛÌ+ŽrI Ò; >Ñv·ê£%óêèËÌ0:ÄË5]bÕµ9õ+ßóë±V…ø]2ä_í;µ@;8w~§¹èòŸXSãlû›?˜9ü°ò󒛬yºù­Óøqvmê–õÖYéC…ò‡C/»Ö *J­‚?Žó½!8FæÖò†…UR3]—7 (¸3 ¿+»úТqU8>oº­Äìhbã×+¬$®üuä¦E…%j¾«Ö¢oƒ»ö+¨}‹[ÌzÎUTy<¸ñdnbÑ…ûŸUºdðŽº2òˆ_”öììtãžmS·ñ‚ukÏ!÷}(÷eýÚSþçM[£Jó]Áá}þÀ¶ª=]Ò¤Ã÷üŽ9õêËË7ÒWàpŘxtÁpÍùüЋÝ,üRžž_(Ÿú“ èž±×²®>qÑÖùrÓn_·Úcg]ð»Ãçòg«ß¹S[èó¹¹$¬aç’0§ªcv¾ûZá¼çéÖ\~ìÖþ^Þ •Û¬¼ÇÖéâ©'›Wü>mvŸõáóŠ;Oç ‚Wz-s~ÒÔ6¸ç¯–Ò‹ïwÚwYrFfÝ ”yÈ_?óSÖÃöEG;‡.Y û?t:n,±é´˜öÅ¦ÂÆæ…yßejªÆæ=iv{Û³þVSˆ}úØö¼‚iU?‡õÚΈ*^ŸÝbåè]Rz s£eGPá~¿`sI³áJ÷¹*ÓkÍPµÝÁ»·ÊÒ?šnVß,©¹ÿõê/t·wfcð5Ä9¤hûþíÏúb£Ëúå'GyA­|nóΧÿ˜ý­þ¿ Ö×S endstream endobj 560 0 obj << /Length1 1941 /Length2 27032 /Length3 0 /Length 28252 /Filter /FlateDecode >> stream xÚ´yeT›Û¶6Nqw îîZ(î®Å!@°@®…âNq÷â^(^ 8-îZŠS\úÑ}î½{Ÿ3Îßod$ož©ÏškÎõæ¡§ÖÐf—²[åÀÎPvn.€Šª¶…³7û°£µº¥#ÈÕàáàââC¥§—†-  °³Œ(„ÚÔ­ /î—0*=@è „¼(­–ÞU ÔBÇÛÈ `²ø h€Ý ì–n/j ³-ÈÈüâ" vñ†€lí bð²³ÿ‰ôÇû @ÉÂÊìéæX8[”8T9j`Ï!ÀvXí,m`€Р«-«¥ ×R×ÕÐfæx ¬íîâ†üim]y6€Œ”šŽ,¨Ç×ÕÖùó©t~áoËPÓyÑÿÉóbøÇ]UVGJÇPC–›óÏÜ Ä ô'ípcxaø›Ú‹« ìôW“ê"ÂÉéééÉaëîåCl9\ÿâ§crx‚!€—+èü«0îÎÖ/å„ÚÿàÏÆT@V@g7à'9ð¿”N/¥|qz‘CÿØK! b:þËàþ[; ·¿|U44TN g(ÐÙÂÙêÅjuw˜ÿ%{y­ÿEv‡@þäPý_äÿÒü/õ7à—•;úú[xþçŽY8»»ùü£6ÿ¾l+°³È êö¯ˆ@€ Èø‡½ÛŸ=9ÿ%S•RS”“ÕÖaWyi­9¬<@¶h¢‘^˜ã¨ŠPÂ@)a1s¢ƒŒX&“øºøÝç ,†b°Š‚ˆI@Ê;çRú÷ŽÏk­ÉÕ㿬5%·,TÈ0e¥Fóô8tƒ³T‚*ºh˜”ò ?òMeµ%¶QtG¥…;ºïby¾ÿƹH¥1®h[)@ô,™ánÁ‡8âz-`“v’-LtÂBßáÇÇXôJ-²L›†Ž*!¹ôtãmÃÆ”¼¾§oœÚ$qi&;u˜‘ú*Zv†sÀ;„ŽBH„B_rQóZ–V†¼+å8…9–É+íIx‰·‘Ê—r+Ú2>"˜éH›°×k¯œ£ ¦O-e×Äôí·Á+ )¥‡òVLwã@µSçšE;Õÿº1†¨úõDµÓu(–Ì•Ðù¾0.2ø,J…×ÞïúzûËô.gK>ïÇdü èW™d¡S&(âR:HÒÏsl “6¾|ŒK˜:¼„ý祮NàtævÇr:°ŠWØèŽQNB6b¡õaÙŸàL ¬ö#Ä2Ä̼\ɤF†çبX1Ì4ꕉoX Ðk¿0H;}êéG·Ì›Ç6-æ3Q$ eî ÞëïXÃÕë¯#b½³,©D´×k€ Ë‘®5¼AÇš6rçoÈ!¹ò–zWo/À¸OËÛ^b@Xw¤;n‹_ÈuÓ„ ö‹6þ XÎø ·_ryƒu4ªêJP?É´¾–Òœ\èž~E«CÏw´²6*0ùBFçA0y6L©…×™§â¤—ÎÇŒ„„ªWkËè‰ãöq¤ƒŽPJô×ð'ÔuCµ±èÀš+*X0YHdkÝö<¨ÓMÉ:§¼HÓ1ðW ~grƒÁ—/NPÒ߯j®ð øxögOYèua¼™pIk)ô6¥ÃíXMÄìR¹f¨Äh‹]šÆÝ=ÑÛ›!|¹½`|~ïJuñ²ñÉŽ;lµµZl5jƒkûo†!£-}o'ÅNôs}÷§å¼0A&8ËËåÚZœt|ho“dk&ÌNXŽ+Qť Hi þn>tuÕ|s|  Z­¾^Â?¿´û¬,¿“ªlÅ\öïWÌ}·Ýa‘õŠƒZ¿YýÃéµ<|œ'&€ž-£bì 屓®>fqŨ[Üy†¨ÒØtvÇJ˜¢ôÛÂüŠK‡ªÀø‘¶@š›r(i²›ÞAVÇÃ銒5”›ñb×&CŸ¡QªøuM'ßè”Rà4æ ¶dIÕ¢\oqàÐx|¼ •þ¼?µ®$²üª"KÁ-bWª‰:×~Љð¡ÔÕðjOßží[Læ°n`š—º°>C0€ ºæöfª½o)¼Ø5tYOÒ„‡È·‡š~,—qrª€.@ì_çO*€Ï[l›_„UD¿~F±«Æñ*[í†u×cãEËzÌp<éÊ£lÃà'¹õB’G.½]NÜp‰ÁydÄmðãÖçVþT6… Š.ÖqÂ?›ÿš%iëdg¸U@£¥i3,›Á²w;Ño•oÚùéggLrQÁýÀÂSüE Pl©ºµÈ…&z²ˆoé„M¦†ãgu±WŠÄ¸"9šYoΣ»ÚLV]j’Õ‹‡²<ŠâÜl$4tlßeÂ_Ÿ{"|¶[Ýlåšïj}ÂrÉ,§O;Ì!Ñ@t#Tá7Ze@YñroÚr¼±rðÆÓÌ|hm%o¢÷[ñIUcº 9¹Cø 2¬Ÿ.J³ÑEy+™ß•jÌÆ÷•1­ÍqnYôH˜–dJ+ýð†Ä{¥Žpg„Hkº)ïØøØÂ»àž’0‚‚œ½ÆÂhI*«ÁÜù°(êÆÆ—éœ9Eº°P)L¸öÆ•Qì2» ëäºÕB–ÿGGèÒŒþ?ùG`°<7;ð¦çg¬²Ü:‰3yÖ¤óÆ{ÇåšxÂd§ø@LY]ìÊé6è‘?ìŒ-¬f¡[üži%h¹¶þE©.w‹ü"SðüŒx"_å¢ËÝiµtÍUÀö‡ëöïl…®’TŸü$"ôGÚWCq¾9w'k7\ólÙ4ºý~]£­Í4’-Ì€q»T×f$™ì¤‹æÅ]xB—w†&}¶9Á›ÃùPrpþY †4LÖÜá Ð®—ŒU²óÊ2»Â+Q8B´ó‡øe bW'åjk¼®1êä'P·Þüõ6®qLÓ[ì¤ý‚7ÿ4µÇI¶‰QÎdßfŽSFà¬V*ÕÛûµçäÁW™Fèy‡v?¿{Œ?Ä >ÿî6³fWߎ‹'ÝO<×´O/Á•3gaì<ÕÔã7-t T:þšÎK«MoÖÊ?¿!Y—·£³øÉí]Rg ½\MjÑR2¤&e¸-¥²¿WbxÂ%¾©ploD7ÑÒ¿]®Xc½¿Pþça©ä8íB9'Ö}Ý…ià·…ß\†½x-ia®U\Ãä™M¾¶|ù47`¯š^Íþ8ÛhKã“ÿ¾âWµ(1JÄy±]XŠ/è9> fž63²7©ïïÌ¡7và=\\ÖÞavãÌXéösv^²Bðì³ÚÉÎ =cùä¶n¥õƒ…­5c „Óñ¶6æÞÓà‚ž¥\kÄO°øŠ´½¨ëÕÔ_Þ†¡Â­­£Ð‹ºâ& ¶Ú­‚O5~P^8/N:=ýà‘qyr„b.À¯Y¥/t\áÎäîÜŽ÷¶o2GDo¼ªËtxØdÖÃcˆß/µ§õÑå­~h?bÞ̾àó)Ý'âèPaÕ“@‡|[0š §ºþáZyɶã>™8"H3µ•‚üSÝꛆë´\?›y:ÖvÄíLŽˆrCƒ_HåÁ{$9~gžætÉÓ@üöVÌjËYû‰œ­‰k ¬w ŽŸ MPêË ^™Ö3¶Ø¿êCpçßp–=AF[äÜQ3¶X^{Kwˆ¦‚„jáU#ÂNÖYô¾ÛmËäZ{ü½ÃïVI5abM¦÷ÚÌ[Ó”PÙ~ÙŒˆM“ $>‹÷ýÈP7vC;Ÿ?³*“JçzLð[ûZ¹ %fïÃD‡ûªVš äN²˜Ç Ømd`ÍM”ÜÐyG&Qt5%š(5Ü–'ºÞŒ«má ËlXáÞ+|4ù8yu(ÜåvyøH™Úãbû¯±}n¥ C˜`_¡ M‹ƒC;±Å´ýüìýJ³ÞÙ•Ÿ÷¹ˆ*®T¼9•†Ó¬{Ú3!=Øžá¥\âùRæ²(P ú;yIO|3쓌Ê(ÌÔ´°—n©GdCÕIÄÃäæX-P£µÚQÏÉðП-½ê{cc¢Kƒ©Mì;füòCéýåÞïý‹å”êCcÓïo#EᩪN .¤ßhL¬>pavR’|º«WÙ´|ïÑʨÙ¨-‡ûÙ‡€©O„á]Ó²µ/Î'ðO>¼JRöȯHbÝÞ¯\ r…¤?K€gÞI®nñÅòǼ¼Z¨W¹R_G´îm1pÖ ü¸"cèéK4äÉ3û”b¡/R¦ïÂʯpeu\t#̱é>§<'A#€}eà%ßÚtÝ!ß7Ÿz—£,èµ½ÎúLÚFyD¦x<¡>ði³{èÆtTñ-‰ÔžáÇ(‹¥‘…œ@ƒ¯¤°.wMÄ{ô (,Ök<ŽE™”â¤v»õ‹èÓhü.[O¢´]øSy6·ê4ÇÉŒö°s;Cžhfç†{vt"*z–iúˆ‘‘‹E+ÇwB*F«dI Y;x&1+í ø›Ië‡ÍÎñoÚ¨?F³ÃªCXfäÍ“Mú^qB¬ç‹„+B £*ܳê9Œ|ѳüæ (RÄ‘û¬X÷'|y†$¸ývìý¥Óþmn®ì‡<‡g41)ŠèëÊÏS¯ý²=ž¿Åܧþ´ø%ƒË€ûöÈ×[ægЊÞ}j„—l›!–¥Ób¶sm^_¸0gi–ÄÅôK_1ý­¤×ßÞ2ñu¥ƒr÷M(Z«Åïá¥Ë`±é½+:ÀÁk®õ§}_–Ã5¤–»‘› RDþgÂ5a”%›ÝïFŒùÎáo>ìçô0sŠè?EpH¾ô‚´ “=ÓÙÖ½4¸uc'*ϼ´Ð„ËVo*AwM8Pá{з*ýÊ37>K>”å>5 SRK ý÷6䫝ɿ¿UÞØNt §æÔÚ‘~œn0â³Hû(UDÞÓ—‡uo[3ߠޢ7l%wã5IáCtÒ‹CHE™z‰ˆí Nâ]†t‡cnú6§1™y 8¼‰”56»˜#5¹CÇÖÚ‚K;œât½IT“Ãçó°Hâþ•=q¬¶ke°h2¡Ó²÷^-ÊM!™"BN®i°%€üõ ~€„œœÞÛ€-–Ǧã°a$9ˆYÀåk1â6A7"¡ux• eeñuá¾z¹‚…œ¼çùñù =üÓDz½?§„‹OLÙ5í¥5¦R;H²É‘Vänî[_!¹’#+e#øÁ*Êž…Ê/·"þ.µòUbkå  Ñ9‹7XÕ;¹ñÛ![£¿XQDª/GÛªXU‘P:°,æ@a <îÌSÂ%!#ЉÚt?ÜÝe¶…Gâ‘r¦%ü(\è""œU5Š*ô;DzŒz²s/¨ú•T( ¾»q¶#SªúÍp_ßRF t9û9’?62ÿ,·(XX÷+þ¹LáϽ\v‹—54âá*©0=JÆ Ðoa/I¼ï,r7ÛûÀ7ɺqÆÜ?/Èq¡xgÛ#‰—ËS4ÄÔø|8¼Ñ-Ÿ|ÏóÁÆþÂS}¤cJù˜O"Ͼ}‰øâM\ÕÇe³=%ã›ëÇþ6"¼Ð9™_Ívh@Eœ0å¦#÷òâódS:3²E¸—h=ß^›XG.~—›‚¹ñ8öNíÿ™ß'HOæ²¾šNÀ“3ÕÓ'ê~3¯JŸJª©ž«èÙ{ªAÆýIþô•ÔÚß»hÇQÙ¨^1tH§‚f òÄ-†e0Ó¦ëIê*uVô:- 1ŠÜ˜Ï*¥O£Ûú¤VÃvÒv¤&uÛš}4åæ·/dÓÌÜý»LW•C!Ì ›Úvå­AË‹ñkØoëÇé~Ñe-ìv#Š˜X?'HKÏoµ$X%rØž| óëúFœ!f9¨ƒBÀ!ì¢ÒÖÄ•þÏ5^7·Bþ #2%2]›Ø/{<¯F‚’úMJª4ÂÝxQšÚä„¶Z],C–)T='*ø;ýOt&4 è?‰Ç I&¨I •+KvyNó*_ù傯3Ã{L®¸ºÕúi3 .I_V¤jwO/ÌX䘖™ÍÙ,U*ʾpÏbÓ ibßÈ^lˆa æzÈRdTã䯖ö;ò6U¸:ò14í½W”%‚;ø^áÒgh­ç—4œ¸óKOþØ!c` —&Ù­´Ì|j ¹ÛÃ×jª>“ăSN©Ï¹εÀG,ŒŠã§S‹Dè ä>Œ\Í2Œ>—›ÿN'3„;d©E?)g“eÛVÅ´H} FÚM|®¢–fI PŸ!_5ŸÛÆCÌ4¸×u¾3‘:£c G3(Òd‡¤Ôß«pš/ȬFwzøLŸvÉ玼ugnÛwH7qØÄ%_ls)LÑä4QW=]4ÜõŽ –x7¹”oI–¦kFþ޶¿Ã/­;ºt}•¿ò[ë5²ȮMÚ•q_§Íg‰fòaÿªVSß_ºkw OÍN¿úƒá(åT$Ú)ÕµbCºôãÉ^ÆO¡+QJ"6+ÙZ©ëk‘ým²”ržÅžáHDã R¦ÙOlÂ7”cÀs.ô^M»:l…Òý²¬êJŒë Ú™égžTŠ ƒÕ$§c‹ŸþÕöÎ:bn¯"‡›o¿‡6Ù\«h5 /µ‡NÉhm„‰x¡ªµ«ßx7‰ô¾Š2nF¸d i³óš^·–ZÊØ¯c3¤Ð5}ɉ7ó‚­˜_,üNo4+ˆS iq„œåYT>êsm{ äråq2õØí¶FÜ€¥GÌ^a|ØàVIQb…4Mg¼Ÿ8§Î\ÀV ¸Ü`tȈû•!òÚŸß›Ê1íåùÁù0þó†Àö®ë}ÄæZ'_²Ï-{,v¥F¯]JŠ„¢Øì–fxX\"ïg4kCv±e†u›{ø¹ÁÃk(} ¢b[‰ËÝÛ´´~߆7cb³’]ž›Š:ö‡ëãkZ¬§|7픕AfAÜoG{𾏴[¾ön´úþ«çÞŽ|T£ÇöxÜ{U¾¼¶ÌìuÎÁb0£ ‡9$ê#§ü±‚R·õèAøþ"çƒT®ˆÂ¬ëÚ¥#A"¶§A=,ž¥3:M¬†’£(Ô903Œíƒtì@zO’ ™Ë<¥Ñ:‰†³}ºU2‚lRÑ÷åš'ü‡\øN§ï-QÑ—zð±ê¹„1/TÃŃü±µŒºÆ¯6³:·àã÷ÈŽ6¨£jZ$ð}ÄfdxŒB9ùl‘Å'J†í&UólÓú–È¥×dò›_ÖnK¿c:a5IèƒÝÕvÌuŸ–8­‡¨Ggü»K¢i*FÌ}n T½ŒKc°õ€ÑØ@§d膇úí÷aĦ;ý±?0_çí)VÂç&?¡.ÙÔ£FK5|éÏÞß¿¿²+3KÒöŠ2¯À›*-þ‚ÄËãBýàjɽ(@Ë ¿Ÿó™Ã·Ÿ$ïÚîýƒÿu{OTÑ<çÆëÙ Ñ*¿Kb’aÊ,ûiM†y&–ɤ‘¥2ÂÓ¥_—:l"ˉR —ºå·¾Ÿ+L‰ÍåQUôRÏÃ@6b|ô8ÝÔ£ö·`½`tÇ$f ;Dvz ë£<ém?ÕgøL=¿‚%"5h•^Ç,©úþ.'˜¨­‰qª‘>nÔ‹‚ºšKüÄÜ‘› ú;&þ–ÅãVéÈ~Áf<_ä6@K_ Mu,to¤•HüçFVƒ¨]è%:o&bô©]œKŸ!S÷m4PêiÍ>cpWß½K‘3˜ã-NŽ{q@ǦKSCÕ­n ¨p×V¯GmúQëWÿàíWgT·ÀÇ/#k ¿=­¸Þ\Â.¢xæC†Úbþ‘ö)©t•ëŸNêÞûE ^Õmý%þû ’Þ72اïgq»/½¢ª Wâ΃õ¸êu¡+T'_­Ÿ\Ìžøý–z–Yç‹R9ÞC…púª£¤GÜxvà3Yx.„’të±õÎF<ÑŠ†½'É!] ÈmeF=¤eªxÇ­Gš4†ÑS?)ks;o•½\0>4#— êˆÌ¸F‘k>¶^šAáå¨É}²#¼Ukó,Zº¥æÑ;XæÓÙ'“˜¿æ§©ïØ|Œ_ñá˜s>3õÝòð·CÍä…" N2»? R¸›ÅûÏ\mf˜Ë…*¯?ROòùýÖÄYÕÁé:‚8.‘Az«e‰]¦¾|žY¾ò›®rí²Pý*PSŸÎŸØ[ôøuJ•uÐR÷O½+±š®ô÷‡+±}°)õi8ÐuvÌÜÆÛSØ­¥Á>Ò~Øî%a¶ß1ø6ÈΆ²¨bìʳeœ ‰Æq†ˆ8 º4Å¢+zO½|]½µúõ!^®óA–·LíÌUd“!øâÓ‡|/Ÿqmî ¾X7Ìß~ô«Fßy‘—ïò*e –˜ÏCªB>aZÚ€­î9˜<éÚ?ïšýÀ'€ë¡ŽÑõ+˜PŠ3ŒÇ.î=DÅât“ŠóÚª>ËîäqÅWÓJ¼—$Ú…no]†aJ¸ ’UÖË5H¦üb{¤_x;3™šÐ[;€±yeŠ®Âáé"M5ïãµCã²}âEӲ̒.UÒ‘Zûf‰Q«»¼®€!£îysØfsÅú„£«5Qÿc‡…¨ÒœŽEIíd Eù&CŒÖ³ApÖ Û¥9@‡®û2™oëÆM%ÓL‚fjU*Â_0üÒJ,¼£ï]Ç<{ýÊ}ãE!Ñ6<ÀZw/ê˜kÍ:g\)ÿ1FcVý‰ðråœ,õ¬ˆ#m‹üjïSîoL|EØÄàÁ‚Y¶{ô¬õUNää~×]g.(vóãÐÍFǘàJísÌ!ö™5iM¿­8ßïÆÛå˜3”ƒéøòOdÙ¬.ñE-¶]ÀV:1ãÄ»°¯œWÝÑ‚ÛcôöˆÚl.½P“1;/›IÍkîëHÄ@ Ó—úBGÊ‚/,{Aë&9\/VWÎ â÷~â7þ/'«PDH\K¬‚Чd·‹y5›s*b‹ÑwMVd¼Öµ%jâŒðüéCg)û(=ÆBà»XP'+\Mg«Æq†`öÈŸxG_å»–~L±ÚjèJ¦ª6£$ãþ4+Ä ‡Qðø•6ÖUÓ¿ÀJš—]ÿQâUá›MºoЩRDç¬Èç"Žä>#P‘2UF‡V)…£%œû˜VáÒò£)Sîãáaq“W{†ÛSÀÉæAÛbã NùœËËþC÷æâÆ{^³gSˆðoˆÚ‡‹t¤ZŠ‘•†.cRˆºŸè“L²N拚˜•aœ¼ÅÚ1¿¾/ˆäð.W:kì%'t:|¤û=ŒÜ KÀÓºgª˜)“Q “¹½JUðé)e¨ÙÞ¨æÝ§-‚‘JVOnE£ü·Br 0—d5Ùû.‚:ùSd¼lX©oilåÛž ùÍ:$»oTT0¿´õ6ì6¥|gQ?¿ÊŸZ8ªGÄ5|Ú¼ýOÝTºûXY¤wS«"ë yIË$?ŠæN½ó½,üw?ýt ¤1;#öê{­d!`ýLÜø2$eK/ð½ñ”ÒûnF5óªÊœJ#Ц*iåüCþ &ª/šˆuÀ‡ÆÚΙÖÎY_¥Ï˜¡É݃§T¤ë]:x# ä±.0­+XÔD©ŠÇ]7QA²Ks>W<û]† A x'bXI{ ”Ûêcß{ÚQì®jf­€~ U«£Üå3Î/1_ÞÖŽ²²¡‡§gEÎ'è¥Î^ ]²6•/x*qÁü–bÒ²=.p+Ü»ÔecÀ¤!ˆˆª¼¤¿,²Óا6Îö*M ãÐÂ.«|HôôAø=ÂÜÒþC)+Îæl"ׂxKœfšhKD ¸Æ<Ÿ»ê¦±ý j6Üø ]6&Í»5 k£KGA%º (À¡–4rn2kÊ5_ä^ÒÀ©ïA"€· ¬ðw~GvêÂ~µ¿ˆæ¾â–Õ• †Eý ºïŽæìGR 'K5¹âX)0k/­óTj’Swhùé4 °jHšÿŽHýÎá¡qSzXÛ/ŠÄŽf†–êÉ×[+,æ)&`Îön´Ê .~¿C8> è®ÛEI·ÖG)­Ëqr*%{?Þ‘WcHw ÈÉ1 È7¢=¸u%Èâ[JÕ™z|üȨá„$“뇆ÃI|‰ˆzêgµÿqÎàô!mÎ8Ÿ-¾Š{¶îX÷]UϬ Þ]¯dâwk”DW!!g,Õ“ûÎ&¸<ýT†¹Û5ëztÒ—Šjñã0Z»*Ìãq Ë{úÏ#¶ÛÅq™ A¿rŸc„ÙŒîZ¥E.(cß÷c¹#ð‘PŽÚ)[ë¾µv2z\‡>¯]¤~çödöó¸È–;[\c@t4mÅÖmêKX(å‚1|016»w»ÊÜd,_KšŸ[ {—-Ô²ÅÌ2²ÔË–Ó‘d!ú—I2ÑFò«ç%cj(¥‚Ëòo¦kJ<ŦP£ìÑ>Þ¿Ò„*zÍdPM‰B9õ¶û‚Ês!C*_ÍAðå&‚”Ûzc ö›ÊJí$¸Çˆ*tC*:Ê‘`P‘²ŽÔúgry4ì®>U¯¶»Pñ’±ÜI¯Ño8¹RŒ:jv¬WxóŸõà‡ò/tBUãÛÈœÌÈÇù1…¹ªk´gG6ɧÖDeɯ;¤ÎlxwGbu‹š4//öÚ4~¯™hWׯBbà ì˜šsÙîþ&×fxÉ%©0TUbø_kD™=ç>ä¯ b–þd=l|¤ÞnÙ/$êÐÁ¯>â:ƒÞkq©£øn‰-ÊI£F+˹ï¤[åQæ„bß }9¢:ʯ¸ÍßnÅÛÜÝð¬ç ›Ö‡1¾È‰ÔíRÜÝìõÃô𤠬yþàöpv^YÂ˰ÅTöKî+vÙ›Ùõû`Ú:ž‰[üÊd54aŶz7™¼ 3v2[s ÷1­òÑJ ו –/zçfEžö'÷ɲ3ý-Ö"Ð ½Ï©…w*Ü y'Ï?¤¤ÊÚ®|˜Ø¶…¥ÄÂãY†·EÁÎò\õwP“rC´r•ÝiI|UŠ.³É98†l·¡z䙬ôþ¤ƒ¶n¥_¸KPCrß*§&8 };¡ˆž÷ 7ýì·¼ËY7ø²=¶ao§“6A)÷Ci€.t¸–¸Äoï;åç£;žß¬0“Œú÷îº! y£T0ìã …ÅÒ+£tRôkÓ›2RÐóQ~š(«¶04ârfÂàò°ð¼=%¬<Š»œöç{“Br8ÒV³+¤rA¡©åC!Ó?0$‚ì"ö®rž0«è÷RäÖ?qõàØÄx×"d/¬œ‹IsI” a?¥©ò4sa“yÍìöjþ°á°{yý*º1¡ÓTµw¶Ÿb|Ÿ)«/ʼÁÆ]õV õ<1}ö$Ó¿Ý@}°ù®ÏX~NøÁ¿¸oŠéèx·3ÂÔfíþþªg”¨¨C«uÐÀŸM¡"‰åb„&ÕÊ'1œz2kÖŒJ¥õ~“!ôxÔèÌyã[n÷¢ÄUòÜ„\øç¥ÄýÐè8m±•ÛšX…çß1iÅë¿FÄo;¤îEå¼ üÚ=¾£ÕTn@%7Œ÷ÃYf‡{Ad& "‡“7ãFHB[ízX`Ýy>à¹o °þ¬ê Ù¯ZEÝÏ¢ÚVˆ–ñ!JÍÑvúäTJyVN†=C'u­n¨LÂhÛã jΗÐË~Z²]C«Ù®HÜ~/ã+è¯ÁýÚ|Ãì1ÀVkÞÛZ¤×'iÍ÷ªá[_»-Ðûm#9OœC‰r_ %äÜœX(Ä´;]ô¼ßÞ•&ÐD"ºRÂà¼5ÿ6|8Û þôÎ<ÐÅñ®t"œiI<¥ú¼·N‚´ñ¸ZªuGŒò;‘î5ñÝ ª™#‘ÓU÷›ƒË%7â3nÿÏÏE ¥ª£ô2óéèi‚`]› R9‰ªëk÷Ç·†ê9qu?Ú"–g‡v>`¢>Þ 7ªÑì:h uˆ.«Úä†úA‚ÌM—™Î+4xip¿!±8¤>ër,k¶&†£iòX ëz_4LK â9¾ÉÌ rd»­¾Rß)&]A¨½Iàþ8Ë2R}ú“O§þ9j~S]|;ìŽs‰Ä‹7<¢ÙSAÜ&˜ºoŠ ™%ÿ³ XÚj÷¼Œ·ã•í¸ª™R#vi“&wºöOìfBϳiu¤ôéE ÍvÒùÿܦPWRPãÅ9¤áŠQä?+aXFJмËsObØ•[ÖÆ\§‚ÆgtÇj?–-¯OŒbè^<x–β¶ÌÕ t5O<Ö´kEêÅ &‹=;øoäÌìÓÛ¦ÖÃp"ô—úü ÿý¼’ãžr¶]zã<'¡wºû*‚—…ï&?¶R'†õô©kõlÛг‰,k’Œé²c¸{Õ¬¹ÔÅk'+»³he;ÁµW.Kz]n¹Íü-‹§ý#x?i»WÞ–hà£[Ú5Fذ JžÖ4WŒ¾›²ðáÓq™B©¨_u`i|<ŸÂwÍ¥ý#kÏÓ£ÛE7¯-ª<˜²GºŽl¿x· Ù:M^ªw‘Œ ßâ寭è‚Ù·öe(ÕÖæ *}Ñ­’š¬î‚J öž'·-CHrŒ‚Û“EêÅ#Ù>A¢½ßò0ž¸±îÊ»L”Å>ú-E 𑯑ñO®ïÄ:ñͤ Äï2ä…rÖhPc±¢‰ÞßÐjáø é|$NÏI4Aá[VBŒN9>[a;LMÔñWCYL¤ƒ×fÌ=4·¼>(W|þ”'㶈[Ý^» sF§tÔW˜ ¢ãæ˜JëáÏ}sµµGßâæ4ø5)ûäÏì*С|ú- ùÑé•íÏÏÓ˜qÄÓÓñ¤®N47Úˆì¾â^Ïè\YÞg]ä ºñ;yÓ—ü¥=û½}hÉNÜÆ#ZqWô™—¢µ¤ðäôhÝ µÓ´x.¿Ý5kg¸dáð˜¯áɧþÇeC&êAïÀ/6Ê)Ò š}§õÇôN83~nº•™Éd˜—{õÄì½@¥w•§qáN5ßÊï+šu¶‚}[Hh:’¡¢Ã¯Í‡á@ìTÈÐ0S‰éÀÔÎY ë󪤷DÝZвÞfœàç‚C… ò~²“Ó³÷ö2o‚´¨­h>ÂüÄIãcDAÿ ó«õº+¸îã'BD7ñtJ¿ñý5DÃ<Èà4¡ª_)˜3_ j¸[½*—<ó>ÒOH^•Va_<öfÐé<ˆa´òJîJÎ,›r…©Yî†ÕI/È-éyÿÛ0ÓÂÒ3û5q5Ê«ÓýÂuñÖ5â÷ó!=›øAalÆ3´g³ßêÕW*zûnp’|5,Œ!å Ž„ÇÈŒJZ4ãÚ´ÉiÔäxœñ]_®ß¹ÇŽ¿ê]Qõ 6Úô¦Yp}ã+i|C`+¥¥.j׫þÀ/)N0&ÎI­zGž%6"²uIŽ“ÞýÚ!™¿ý(oêýîgÖÁoϰ‘Ç#ò¬«F¾q„Sß™÷*©mÕ‚w›2MF¢N´™u’a;o…-<Dí7åßʦbKwÆx¿:É&"üæ@9…ŽÚx@¶Z¾%¸¹DBÞçoo³B‹:áÖˆóÚ^†_;-ÏT.žÂxÉ müл:nRm@zQ#_~/èD– CøN3è7#EŸbq~Ê„ß-¿'y Q÷Õ€íî»5¾ÜÏÑiþVirJÿå_œ£¯¯UWônQÀ˜¨Õ'02õ¦7>HQÇg¿ú/ ±œUÃIŒÆGÛ„ý´V®ž½VöWP÷Ð’†1ÀDÙ÷Ná™—ûÜ2-ª’Õ¡›b-R'+ |SÒR%i?XŸ 3®HÔ¡4mó«(Ó[·L¹…ó†èZ«½ï•¡Z ƒ3¯>#HJÔhDg´Œ‹¦HÉ…Dú(šEè½-¶Œ´=qÌ× æéÛ®°?¼Ý¡©‚ïWoÿÒé,f oGGÕ¼‰¬uíÃm^Þ®ŸZÄhþÑÕ½å'OM<Ümæµà¢~µ¨A±7{ŸÿXÚ${˜ÓrÃÁ¤Š|¿%QÚÃ[KBdŸ;…)*9rØŸæcͱb_ž™B -ñÑÕlñ¯æê (4n¼d›~:¸y­w ÔîÐðg§¾zÍbJ¶6¯’u*›Üâë<±<Èh–?œD“gÞfbwY+„Ɉã*²…ñ2³ Å‹nÃ?£GT÷Ì(ŽÊ¨Å•mL#¿Kº„Z­ì=…OB,Ùå]Õ¿½Öã/œ´×´”.´½;n²ãóTÅ‘ß>õg<·ÂªØ°eÛ…E$4±§/(ìúœ€NÅ&éy§¯»ó𚘠ý¦„çìòëÅùV F–O$¢Üqf~È‚LÂd…LÔäHØ©´ìðùökz˜Òõóïq&“˸;‹Žs9Y% Ó]i+=Mo­ÜçÚ ¿ã…z'=‡ÓT™·Yò;ãúÓ—~V"¡ & +βe8Ç|EØŽÉ&”=²mG£Ë“ (ÈCã`…ÅÜ9á0Sq¼FâÏkXG]k®r„¦$Ç´Œm’U NòÇ)w ×ò, é¾Ë°ü^ÚãÛfTàŒ|¾ †wm ×ïc6!¶1ÞNëËÔ-ðïèQ£K2ó¬Ä'L‘?Y?m>ó×~?_uA ¯:¸(;boõƒµ|=mÁæãÙøÛ‰ú‰¯Š¯{rì†{#u‹H YÈÜ‹G–ÇÆžl¬J’$q §üWŒ 'ªý/%ÆÇÕš^’ˆ¾b:_#E"ÞúíÚ˜ÄÈðÔ>v ^'ÀàM¬b(kŒçœÞ¢Ì:†¢#äß—·)i {Ú7§ð½Q0¾ØNëŠÚÆ 4óÄÿ­#7Ê5÷µ¹ï½ð‡•å6B:›Î-$gìY ]Þ˜øªmøGu.’î<†W4»Ä-Tœ³¡­vF>š(¿Ë°ŒâavS%áÈëAv¶ìÄþÈúÜÊÝÄA¡ÆÉ_ØzÈ‘ºBjÊbk!)®¬s¯Â°ÄèKÍfÏfÑb^âÈTaµ1§,ŒþyXÁÌR &¿Íå“…»ý+´TæLd&xødçë&~¼çWýY½vqŒ_[£b*ñ-e-TËn¾IªÒBnÑ ÀwÅÍP·{ʇ1}ºX¶³àÄVóš³ãƒ9µ!Yšß\Dã÷Þ’eJ©CõÚ(ÓX¦CûÍ?ƇO{£DÊœ RT`"| 5ÃéÑìô¹6>Æ b›âªüøá -¨ZÑÈ•ýÒIj;Fâgë^@ÔÒŒÜUáw÷Žsí\ϪŒåû^*ÞªÍan¹jŠýMu-˜ÿ7Îú‰ÃÀÊäoӵ̷ÎB}ƒqgðÊÅÕ B´‡%ÚÞ©8_oéñW.ü><=·»ýÄõÒýü>™{I ÍÍÛú'ÉYcVŒÖšU¾™•Ý ·xUªøNz÷UŦ‹Gᵸã߯ Mp‡NDW¬h“®‡£{B5Õv#máô½w¾Íè¹;é`¾Ñ*ˆZÕcEeÆo䀕/”=Ábø8Þ<7ZÛb㮂ÉwWéÉõB¤ƒîôsˆÄ®„·9ŸBË‘dÖt”ÉÐT<Ä52e…}O~úUXº /ná8à“º ।Ž5{›>Xþ„‹ô‹<(á­Õ¸0éû/I`tÿèð…ÆU4S–Éèg›Kü¨M–ž›p[¿1Nr?Ž2/^Ÿ›q‰33~ÿ,މ3a ³B7íí2Ò¸ËÞûÑ-/KÔwïÀ«G¨ Îy€ešQžæÀ\øõ”Vóèâ©m¼JQfŽæVJ™‚WÑIð;šRº…yòà]ڠƤԜ5´¸í×LÏÖͪµO@!¦ ÐÓÜ€4«x#oáF•:q\Å:Æ/Ň”;¢±€´Óí×÷¯„d©Ç’Ž1´å©“Øa×ymm¦ïfÉn$`àtÊlÉùiGš=~d88Ž²Ö Ìû6Ê”W¡@¾Ï˜8tå6¸N0¡LmfwY¤‡•Fƒ«4ßÜo,± ñ¤N(#úý3‰¿ûªât—†ÊB(°œbD(b–EÜ¡åJùÞ¶«Ñr…²z.¢ŒTÎjqw ÊѦi)+§Ëüê6ˆ-oWÚ/ЧJ³¬(ùîo]„ßÁï„õ*Ÿ.š—.Ù:lá¥ú é33ØÄ¢šçËÖ軟–².PvÃ…ÓŠQlWZóî°~³8Gï°¦Ãe:—àN£ÿD³_ºg®Dä±>£±aL/«Ž»—åªvä{mɨãU2æ¼/lDYÒäþ òÑõcW\ËšMÿÙW2JÄsB p#-Π,æCE´F{þu¶u‹“!¤mÁIÝÅag´Û€Z!ߨž~6hÃGãÚ·Àa¹úÊÑ­{§Ù»;ÊÂWF(½!ׯ*jŒÇˆÚ˜â ÔåÂ-XAo\Ü&BQ-ÒúpMåmظ‰(´’ÖÏp2 ç¾)Qðjð¡ÇŸ Y1­²kX 7ß„eã6›!}ñƒk†ó‡±þ+3„WÅ–-VY Ø]œ«¦¶ë³‚Xâ÷®¾X˜i@ý" i8˜X¿|³¹âØTüý3³ßP_ÛùØ4Îy/ƒyª‹Í†rg…Ô€p-HL¾vÖ »íl¿øýÌ\„ÄÔg/ %™³èW¾%­ð‚ª¾m$×IZ¸w›'Ù‚Q¦ «”¢ ZùDxñ*Ù·o貇\‹«©a+Å}–{Ur`Dÿá£O_S¬l‚$kÑmù<ÂÓc'Þƒ_冲YÞL^m¹^‹ÛŒf›Ý:Vý_]››QµZ{È™1ï>ïÔ~–\o‚MdÄÜê¢I}êb˜ù¡žRŸ‚“{˜ŒaB¦Ö€HªôŽb±­?½w¹@híök]ec½@"·¦c6%m¢ïX#W)ÉÈ4ÅQ»Ç»Žá˧ߌF¨>a«‹ÖЛ›U~$ªùEE ~}qj-h£·Äö·xå„üùÕÝ®ÇÏ}–=s#¦ÇÅ÷\†Äî¨Í °Œi£e©©8}GÖ:<‰Å)í¬;hNvø±û!¯¸ú sO=ŠkÄËc-•×ìžœMë‹4<šÔ˜èÊ'÷ñKqùU\ ½~0?ÉMéÿ ÷,Óa\OV·xìjwO6'rg¢ØÃy4Ü«0sJ%`gÝl<žÈ^´ôg‡€Rà àá¯nòc'S\I |²,×ÓqÒnL ø+qÇ1=‹œµ à:î•-¿üßÀ —3SÍ#úÇâ¸nî)6Üýo945Ó§ÁÂŽn‚>lÒô5ªOn&¥7Ÿ —¸ÅÔúÃ']ç¡ËdµÑµú˜ymŒ«¨Rx§ªst.Úåóµ09yÎ,Œ ökôމ%ÆUDz¹ûD“7}k’…ú1~hï,?UZ;˜í0 åKó@$c³{„­ùq>«CÂ3iï*ï “Œ±ÚÈM3 /«( mbkK{Ò׸[À-‡¦)'|6¡¼ãÃx¸ÿS‹iGÃ1*ÏÞŒ¬Õ=– ±¹(ÃsÓDŠ2ÁþÄýW°‰º.u½]]aŠšÝßc+†¸xž”ÐÑô ñVú¨–E¡C¹Õ0žüXÌç)lµÊÂGÝÉ6YýÎë‚ÎÐœÏ :Jý·Pšuhe˜lN(†Ê­ï'‡Œ’Áœß¸$/¹©0çàâßQ|!̺ÓåhÛ!ß´Zsö/_&ï˜pëd¿‡ædD9—!Z?2F[ÔºjYrL¨a`Õ†©é…OPÇÙ+õ³·EEš6ØöCA<Ô´Zî,J0É4ø-üß|¤¡Пf ;~<5Lô®g{…8@Ì )oY0`éÏAÒ¸ÜÛéðÂJ@9ìž0í=‚5pwOè$utTaÉiZ¿GUBdŠMûe×­N ¥³U¿ðÕ?ðž¾aMKú‹}ª ë4 B |¿GÄ¥_-POEÊ à%O;eá#ŠÂ¼ ‘q"Ä•´óúwiÛsÍ;¯ó—0R~™”+<À‘òÍ“ªàô5¬OèÇ\D3œ 7Ïh4ëB–Ã6f¢”PdP × À6Šøièבþ=ÏÃá ~N¦Q@›šr(Vˆ ¸¹UÐP¬âù¶0{º?JŸPmª9ˆl¬M“Öæ‚>yëa0m¶z¦\î,`“yÏÌ^öUö|¿L)Ÿ’µ¸"ÿ³±ãÝ'3` kçÕ· ’{„½$©ŽËÒÓ¦(° 8ÑbüX™Š™¿â@eÖOIôk)t»LÎ^uî<}ÅéA[ã\ükI˜(Edþ͹¶ÕDvHGJù”²©AÜzM¸¹öY¬ì×sŸ•JÕÏ¿:I)yUè’áææƒÒT[à4=÷dí]èáNp|ýEåˆ÷ðΧqyvû°Nj5w ¶ž¾L5çÔ#›‹0$I0/Îéà$ù®WÜô‰µ…õšº¼k¨¿ •°,ò rfùÙ¦vŸø @ Ûü¬bàêcÞMЬd„ÒúT2À›—ý˜{•˜³Ò¬$À5f]ÙŽ&`l±£¨Åz‚M&zÒ£œÞ™^¨.=Mîî?…æ(Èr,›À{‰;.O&U=F)O¸}(C„Ö­µ@~…±ÕH\€¾ÕïŽZÛcTÍì£ý,°=éÏ€šhš‘BeLm< —ÀïÌ< ¯ó®Ð.3l¯´·Ö)¥ýÒ–”ŸéÂm‚._ *vÉ$pá0‡­säºBˆ†P4ªÍ/´_ZÚ@°£\hzëÔ{—âT4£“$3 P5»Å@î½ÉtfÿŽõÛ¥~*°}ë çL.K[1)Ûæ"=ÁŒª«¢R5ZBbÉF{–£õ 3ÆÙþG‚”ñ)>†îqœ›«bcG p Ó;ÄŒ*dKVÙòMÕgC4MÈ–š7‰¸ÂèF€0ÐëL箆ðÚŠAUÔo<ò¾ Ø‘ÒEsŒï­ÖÖj²Ùˆ…êH¬SœP…ÑÇH&+»r! wíeºÊ†¤ôœáÿÏÊ.¶¯<åô“Ž@oX¦æY.ò¹`佺°Þ •áä)EyÙ÷Ž–¥ôÓé>ˆr¢qRž«Ï˾œ?“‚ÐÐóÅ€žŠ]ÆF­D7Bº(5ƒ›šW{¹ä 8¾ú™ê¨ê«›ém÷ˆîV?q )а[¨Øï±ú…x@ähÜ|Γt×m¡#zO¼Éÿµgá—%`hŽNa0sj£:Soq0óúÞYt ÔÌ»úº9sŠñ,cDGX|››Vá1{ä Ô[ý [ýŸë™!–ö:ÃA|TßÏÆ|-%8MŽ{ž³yâÄ`t!8˜#¯`7áˆbá&ÿ~êÿÀT„°ˆ …Å÷ .RHž¢u£º´Äˆ5‚»£”×>$åàLnÑ.ÿt¬öØ0±Ì8í)šïJ… U+žÂçr÷½×u¤·#+°tÜɵ^:I³„n¹ïqà~usµ4æ’Øå×Ãÿ½A6]ûàaÝõ/­ ¹_péýŒ…ÎQól¡•¾‚Ϫdà!ËSì2 ­lìÐdÿÃ⡽†šÓâSxœe2 ‰lÞ.st4ŵÚÊV…œ‘5jGé­\B…ÎaaÏ_|‹F·¥pËV1¬ê0ª´L˜_f›Tl€ÛÉáÝçħq^¸† ftR,A^EÜ.@LPvÿ³©{"cˆŸfóZw]¨½itÓ6Ú‹09šíS)[ÕªWÜ•ÁèóÆ0ø5ô<Þ-F0ÁàŒ‹R¡wt®01X_s¶è™Î.sJúw"¯Ó·¢Æ>Báqw'øz~q&ëdgúc|}ÑÌb‚_‰và p0Ø—tùr›q­óTŠÀ?žã`×àʼ×â÷<ΠD×ðùW’\ñ‚yn*‹M\çy럤”_ER2}òdsÉÉI¢ÕW+Ù0­åöɈ†÷ ñâÔ×׉³Eß-Séê1³ü¡÷ÚÌ¢ÌAŒ”b·Ù–6eÃTÀc…<Í&ª–S{1ô4ºö–]çÚwI»ñ­îî—÷·º"UuE/— €œMe²ãû#6ØF3s-oÏÈŸR3êØìŸMï„àÕôâ‹a‹é^ráîç¦öc{σpܼ Ÿ2Zˇª¥Š‹½; 5–Ïù,®åÏÞØÕè¡J b¡^~n ëø•›‘*ðéç9SwV€ÁGÞŠ0Іw“&‹ßÿ÷ùæ£ÙH”4Ž~ÙbpŒ|2ÌÞŸøZp©s%ºø4÷i>år-ÊáÖ•fm'@K§u¬¥¡n¨«‹JàæÞ·ÊžyÆ,Ñs«`”°s·LAÜÐávô`;ÿ1*J[IÏe<&»Ó¸Š ‰‘‹gØ1}õ}ÊÏ)‚eC;‹¸ˆûÐSúe›ºÎ)ÞžQïXÄH®pÔË™hÝ6Ü-I´,…œ@@FŒ¾ÌvýQþ‹BA•HkòFñLu°gAU|ÌWK½XU: \gªDPMYD¯ µo ’Fzãû[ÙççD«œÓÅð:•‰˜—Tlhï1UêÛ¶y @ši¥À”¦–EŽq ÓÖsI Ø/IÊf˜ùá]WŒ1ÏÊ”EDx Cfü?µ»t¿Æ%Ó"d²D£ež²=”ÛT|i†FúFcï E Ãß–$ø|=ýÉw©Ï…µ—⨸Õ(¾È](Ђ 9Z]xƘÇ6lE?×Ìn”ÁèžêÁm=ßÿ5«Ù.­ø_§¶*ýFß/‹V€æ~ ·¹ö@b…×À_Þ¾Uo^ˆÇrB–A‘× D‰9@TÑüSLÐóá_u—€;Fkwê®/ÝÎ%rÒÂö$;„«½b¨óOmVÈ&"ĸ_ÜM[ú¯} aÆfÓÕøÉã&s÷ P¦>òxÄjO&Þ. =LKˆtsǦ¤#ÇÝyƒíÖ[įЩ¡‹N6 ÍÍñÉ.ìØG³;w×oŒ¼°I'ÓÄ5?ÆŠwCe@}HÁ5Xì¨ÂË 8¶lhÚi±ÂâHÔÙø€Ý—Ç> eŒ²ä,Á‘Cs$‡ûØñ}jšGxº†nÄ¥›b”@þYi ZB¼?µ± 7(Ÿx3_Qäe~¿³ÀD%ÙxZ ¡áÍ“ìÊÇùë¶ ŽH"§lä ðtµ.˜¿Ÿ"˜˜µ5)Su¬¼ ~]GŒ’W1TùR2xÊvÜǵ1œÑLJw5nÌ6à6$M¨¤6’HuõD'ü3õI2ïSœåV‘fâùÝ‹w—<¶héb(âËz”Rú!žIÂôÒÈì€Ùá‡ùáX%õ}-£œ:§ØÏ!ô›ŸŽzôq–ëf…é3Œj]Ũ’ŒEx^ 9…unK3ì¿»Óq€±ÀñnÀʰ`¢ƒ‰¸’ŒŒ¹ÅÝì÷s—zû“eöI—PÔ Ëì¿ý‘åšûcMšÆkuj,6Pï—ÿX#Ìr(¨±`á~LZ'˜°zº<¡4m‰¿×ÕA@zm²(Õ“v˜W;úÆM»Wï€zç©¥í]¤OHr0£p$(É,T¢Âɺb=t$‡NUüSXùòB®„­x³ÓühÈäD­f›×WÌ}p…’í¨ÃHZYý¾j^óá\£Ÿ6f £ñùPi[µÛ™L_X$;‡‡„WØÄPËÙÖ˜B±hm1ÕKÓ8ž8ÚvœSën„"ÿ› Ï¿Lé¹58'~à»tûç˜ç‘,Óòê²R6;ùÎ}–5W!¸QM9‰>¬†6%¨rPZréŸÔ õÏ^ÁÙÚ4É-îpt×Í?ãoÑbâÒÅÓÖüèæ¿ «€wâ›+—JËÅ0ä2¼àŸ‰Û 0àÎÃ<† $fذÞL>󔥸ÂbÚH—ÅÞ¬˜mdµÙ‰Âã§9sþPó=ﮑ<‰Á$yFÜPüÜåj†‚UŠ—fL{6;y ¾¯RÐ)'eÓôR,[‡Ï œàËyY³zo™Šæàr´$>Þ1™]w#8â·£Bä×Âclþ‹Í¾ƒ¯ýªÊp,uËM§EìÏ:šÞÀA%±hç}‹v³âçb·TKUdš€µž¡ØÅE;¥‡8Qaþ˜ôN¢VØ‹ä7õ¹\¿Øþ#Ùé#À›õR>U÷[©àLK[¿×ò}Ä’Öî¬ ÒÕ!TOSkOcîVy ¹;˜{L– JQ>cf>ÓÜú½x@)ê˩벬=C¤LeÌvgtí$Áدƒ®†Ýhô'(£NÒ¿¸ìõ1YÄ/›qï´¼ƒâÔ[ÐÖ£ÐÌ ²G+±e§¥ÉËš\'Ž ö­kÎNhµÎ&Äèb6?fÀÝÙúö«¨*^# ³lh/7òÿŒ+<ü<ÙÍ‹æµ..àA¨p›næØ`èv)DC¤1zh\_dš lqÑ8>RºM“?NrF倨‹añäÚzh¤Id«ŠŽ@-å›~Åæ1C/䣊xÑ_áîþ†A™ôû£ w¿òÌ[àü#Ù=Ø·ó2]ÁåùÈ7|t÷/¨ïr=0Þý,hËNo$’Ü—È3T-<6ž¡UàÈÝ'È™Vɢׄ{P•ºÍ•"ŽnÝ…b–CbAéäó << ©ŒÀ3žH%vkÁ5F,ÇKû`ÓŒ*¥òͲ½f'Iýÿ:²ÐO©a]¨ï.§$?³‚bSø‚p‚g_‘Ï{¸w¼Ùu‚ð&:#yîe1O“\ù€0$+4hh‡bÈÕ/u?Ü^¼¸8€”}ú‡íÌlÎIðŸ®P¦Pui -Q³™*±þ‰ž¦FCtŸ',¤;æÉµÍ>gKÏ…ŠF»/ÿ‰Õ ìR+®¸f±|æy)6ÿ°Ç^pRÌPOhÑ ,ÙáZ/Û].»( áZüm/y¸ü#¤æþÒß˽ÏNW|›™·*àŠ 9‚†·M=Ýö.,‚±V¿FU °ÝS&hmç/q>e“¨ôœƒ6®ÖDÅÔ‹Šš©dßÓúè[¸žRÖšòPäLqú‡Ð ³”eù²î®4`LÒFyý.®g$‚NÃûB:êè&i‚ïÌÇ,jòߥÎþåU¾ ßTR§Y!ÑY4z™â†aë…&¸º Ž>•dåÄQ F½ë¤ñå…w|ßoó7O8RZ›U3ŽYI‡uËÙ&$úüÉ=áwñOð[ÙúéQ°…½öõªšcK[Þ—Zåh™U”QIiˆ±h-k#¬ãàîþ‰#û‚ÑÇRÇIœT´xMù‰k'Á%ÃHuÏ~5Ä 9»Ãc…¯\' zä¤ÂÇãñSŒ„v yI¬èžw´ÏŽjÖ'6ÖÌxú{ŒBøDR­!È—mÁªxPyCͼò"„Ò[fŸ]yw×;¿E3œöl\+ª¥“SõÊ¿‚IYˆáÜZëÇ’Y¶õjÇ+÷[Ø€&­š†µ]b¬·,‡z¢ãC{_~~Ý• ÉðLÉ4@ᨰ¬ÁÜ­·xƒs`3“HÙwB×(€qn’]»ßpf09Xá¿]{@wävY½~0ôéVrY—¼26ϳx&ç&£Ý§å¹g-V>…EÑ"g·0€Ø¾sAµôåÑh‹Ó×1ÐÞ¸½EL«ÓNêü£“«ˆ¥/l_ú(H“‘öÜ.@è]#“E|Wß*èf‘T(JA·Ù+¸ø|Жºþw98.²–æÈ²Çx{Ä5WõË’<ýøÊø¹ÈûšÂ|,/†þî§ûvmr¢¢ö!$ß? ß‚—Ý0×jϨCŒµy/þKC1JX6§eü.¤½h¯¢2¯—í{ÅúûªãÎsÇ{ý'_f;{aQ6‘ÜpP\›Ýñt|¢ùpœ ØC'Ê­§i|ÒÐH“Ðtjû¹ÂLNNUð<ÛH“Qɨi¼¹ „ *åÕû÷ ±¼ïõÂü?ÆÊ%Þ†ŸëEÈp(=V—=ŽCg9+öÁ ëôYÑHv °Ë «<œ)"fó<ƒòØxî3YÇÉëJè=¶äßTo¼‘Joùyî´­x*­[ÅC'«·1¬‡¼Ó¯ºuЀÁJÔÕ"YS £&; ²,^Sno}ø9Ñç\Üem½Ö€@€gÎ&ü+ o[ßlÇ|ŽCÀS \ñ#3ž)³±ëœ7n‡³FÌÜà^8px ^‚µ-<¤a‡ØpÔ«â‡Zø°#rUû»¡èm5/ø©¼uÓVZÉÀ„ê 6ŽúuÎn´HíïJ·v×”p›yÛínX¾¢®Ë3pù"ÿñ‹ Ë 5n~‡r¥Wz9x*¢8¤\Íœ…Ж‚YG2>!!ä€ÜBÑ·CÐ õ®U-_}NÉ E@LRP&á±;Ë Ã~ÂQ½E(r,ñš2ûÊŠ/z€zúÍXù?̓ÜóïXþEg-ûp\ã2?-Ô!uÜ7Ç킌ˆc*§T›ÕPõ` ¨kÆ JÕÐÇ#Â9-UÄ,Ê¢=çSǰRh¬´ØR’ÍKÓ¹Uõ x¦Â¸˜Þ6>d~t¢C‹·z"U3!øA3Ä ÆpÜþ¦B0×)2‰‡I;ìTX)¼,œ™¾ ×»Úõpþ¶ûÏèõÐ{R°ð†pM/t“€ä# hRZ³œ‘Ö¡4A”Š¢ùÖ ËŒÈ$g´xôWdHoßæ‡O‚ÿ ’ó[Z!ûW´EÌ;ž¸™>Osÿ‘Ïé}éP7“†ª$3¶Š5òd´0<‡q€S-¸(UÕÅ~À‡@ÇâÑ¢AŒßOGWÌ"Æ-D€:3F?„NµiÖò+Ó‰+‚ÎàH¸ô!š;L¨Ïn¸iÄ!OèÌÓ^¯á È)˜)ï ~Ó´ûÖŸð嶺h8T Ë}]Ô Íü»I I*"%Çg³xpËfb(tM¶/2XŒZ¦Ì÷¹0NÏ›ž'Â¥|Q}å3Æ€¼ÀË/ˆõžˆ¯éæimä㜠Z‘šBx»„/ÂêqÌ].*j’µí÷ ÎÞj$¿@$j¨Ù!%{é¬k÷ËåÁ9™! Ô×iOsòmg*{â0D}‰“\aI:^·Àlââ†ÐyÛkHœOˆ‡±3uZ@:5itä¹Bd"564Šý¥Ñ ?·2ÞT^ŠAü‡áü¥Á58–@ÃOŽd;S7.O‡™,:É#.ëqº¸¿K°ÊC ñÛ9¾ÅmBÛñuÑ„6%tÓŒ~¯òÏõŒaÀ|ÏïŸù‰Â´˜‘²XáñÚ[†ÈÒwøM6Ê"Ìn†ÌgöÕ¡™‡±¿¨£Sã, šHãM .’šï<€4¦åÁ…Û.`™õŠ‹Ç¥KÙ ½F¢‹IÊÛ_GÔÂþ”ëutBDK²0©Q(L ïhœ‡rý ÇŒ8œæŒ¿W°HøÉäo!;x–/{Æ)ÓyòÝß38m_ªL®¨”Ÿ&¸Z™°Þ«†ï†€¬ÔjûÔŽ¬öË©·jV£'>m–Ѷ™†~±qÚ׾Ń‹X3xv•tÐfÏTí^25Ëé†^ÐQÓŒÞ7©—uŒàC3嶉l;Þ<ÔqNŽ|n×Ö¤ÐEú$­‹Ò¿ï",¬,w[id®¥V,–œ’Ön{Ô¨$H¥ø» ¤Nÿ½ ÔÜŸ{0 s"3ãÛ‹¤&%~² IOÊ&»£ö©'ãºi³Qƒ¨µUi—GÞ#YúK´ì¦yñž°-VMä¦áÛT…­åóãoB|nÈ$_Õ‘%„Ê’^^Fº”ÔC½Eî÷µ"=Ý>“P’` ’bB\š@#¦½—]R;|ý¬WÀ?\R–Î'LU^ ©vªƒ‰\‰6ƒìxIúãÊ5’•ÇÒ–q•¯ÒÙK­Î縗Év'ò#mi“&žÜ-_‚Cm·Pmè8÷$[G’“ežÈ¿Sš }O:ÒÖ É»é6‰I´z‚øÝûÇéañyÁïgÎCZÙ6w·¼O.E…CòÅvƒÇ]”VÎUcܲd(0ï‰g2¨ü'Ÿ1‘rã€4ªÇ˜KôD¬^«ñzdR$;‡ž9ÎÒÌ(ìúû·Œfôû:ñíJþüÖÚUƲvϳŽAÐRyûî·dé?­Ð£Ÿ:ëAd۩ɉ_Jó{g}Åû}E°2O9dÓí<û´aþû¶RŸ×RÒÿ¤èäæ"Ü(îJº63©»Y}aa˲¾ßßxPÃ`±ÎßL 0Ã~0ø³°±¦cÌ”Ï)£¢0¼"˜ž)¾°¡—zÔ÷*{é2]V°UôÖ{“ëdX+}{ŽDì–Ê(ˆ¹`Ö*Èc“YTIõÝcxÅASÈØ“K|ë££Žæº c¦PËÈ~¹ÑÂÛËáVÏ`ŒÙLäfÁü>Úê>Ò\–þ‰§Ç—Ö'÷ÁâÙ{Ø{ ×5Î,`©ÔKð'ÓµjÇÐ¡Š™9±Y 5eèÔDV7«è>‚ëõͶ^ú ât¸8ª:FC¿è{À)­¦j Üøhå‹ÛåàV°0ƒ%åí®¹¯yç“sýäÇç§å¡†0#C r}P߸Ð!Ãú7Æh·VŽ8‹·l¨F¥EIpyWI¬ü¸ç#‚¤\#öÐ|ÔFj1°Ïñ2ø®:ÎöÛ°±9©9úчɣ‰ìQ¢2oVUŘÉKmiÏùP' Á«;)d¡©G"?ï,ÿ¹·r—öžgýÊy:ž1&oÞ+¥8h.ÌÚJ¢Ï‚›·L ÞugS‡ê¼p—ïs¿ý^Aè«kñøy†Ô•”M5²FL‡åÀ ƒùd¾˜Q$OvÀœ'Oe`h è }rk£?€# ”‚nƒÅõÕ\¡“Õ<5I“¥U ÙÞ(HÝà)*ljRXÊŽÓç0ø‰à榿‰îŒVr%¡lL×n°…Ê”Dª®BÐöGé3+ ¾œì¹4G¨WÜT^ ™˜>¯‚:FP×”ÑGuÅtž–Œ´9¾uxc ј·ÐWCÑw¸á8ä,ž›-<úÕKîjC›ËK;x•¬·¯~È-Ï©óøJè¢ò;ÐnË‹¦ù_@–oÂx“Û?Ž¢§â[XhUVÁrE'â`Z‹ïyD&6Ý:cšf %¨Ž^Á•}ÉÛ¥.õߘã¼j¸ŽÑ€6Ú~*×MKðXœÀþÿj'YÚEþÔd”¥m%Z¦Ül¢‹Ä†väw}eóQV3%íƒ3eàj‚¡”ǽ.é hâI4Âemô²ô>~V\su2±k +åR•úÐs8 ‰XBn=X |Ûn(ÍäŸþäO>8ã¸ÒÚut*Öfù%bõ: ›y‹/_Üê ýÇ­ª£’†@ù{nfТU{juÕnú;èi[àêo°R_á¤øðµ_D§VLÔDê²÷ìûuµ?íaþ†[!mÿ»!B´Ï8ïÞ>ž0Ñ®oëŠßlf{uCyÏ•&‘±Ÿb“èaIfØ%7a§”-GAÚFâ–âÒÄMeqôÃÒ«i¦â[‡ÔA@E£1yhÁ+ú¡XJ•raµ¨ª DdbÌ[pTØ{Jкf‡ç@Ø ^c÷ ªïeÑÍãvG )áqãD, Ý“„v’ öxi©Ýõ¢’rß×VUÉà>»X{4 5Še­Ûéâ§©4{ÐÓf.ºï/Ї“¯ÑÕZväͳԃ}\aD-zãT?>ÅÃIÒ L¸#¼ÙŠv`ªúNa\#gÆÄ ‘Â[&õu ç SŸŽ´BųÚŒVêEý«4¿aÃ_’ÃF€_ôc#œ’ù´€´´J'ç(&xHn_`ôÑg;Ücä=õe«Eü6= ¼I—i$6ø.Œ’·)ðöŒná¡Ä” r‚ó»ë‘ß÷Rê[=_ÀÞTï¶0-EQU&ûß~|×ÚÂp&5ɇ,¡š­¾Æä×&†{tVµF5úçÂXžËœÛÛ›ŽT“ÁE½ïppŠP\cÁu}{Q©Ûr“Ê‹—•ºÇ4ÿ@ž¦.èKÚr»ua‘ät±”ðÅ ¨b:a9ßÛÇìÚy?Sz¶$›Xîà§Šhn§<¤gØ:Ù7Œ¥SÈЋèÊ-WÖT(m\,-Žj$³BѺ£ s¿ç)_Ù.÷ƒËÁf`¦Huy/^QËÐŽ¥¬ ôã•ëziÜáj÷yÛQøºn®’oCl¨2²xÒ!¤÷Ë÷Î5v@±; WS&H¥ãAæãv¦>ÓdA"öÑ` N¼É°j.?N z¬¯`™¿÷JlÐN€þŒèü$3#ê•ÄåÎ?rP`€Xï¬ÅJeׯi²õŒ8t½\I9Aò OŽ«LÉ á‡MòŸ©•kÈæÀC*1I·ºŒ¤ˆ§ÆþM×+¦>sŽÊg:Pë&ÕµuIÍ)‹D¾C³ k u­ª#†ý Î:Ê3awE:7Ñ™QD¬"8;­ CTè=¥´<¤Ý[ìŸ ¦cºƒ«W€]„þŠÇ¤Ïã"ëîáʬ Ë!Ui s0Zº³r²—½øPýÌ6çâzúP²•n+tmñ©äœ7êè&i‚ïÌL2Rªû_Cï©ûÊ­ÙƒU€†•ø9y}´Qh©óþö¸¼×ù:º¸h-ÂG~ûs«VL]zÌò£Èö @L¯Bd„^ÙìB¸\õªj?š›†ßÝ0ó®Š]Ú‰*ñ¦D ûE´‹èyA;»äÆóPÚ ë÷’}Xs·Ê0„^äÇÿIøÝuö›æëSÀSëQlR4~×q|ž·ŒÓ6KÄÕ²c§²Péú ÃÎÄ“y–!c¢´3)V ÍqH¦f¯^µ[(_ìšÍ8“˜Äœ2Pâ'ùÛøÍ«e-h.Þ7Épþ@Ü•¤ƒ=çÆ ¶tWH¨ÛÀRBn<•@ŸûÏ^ç%uþ: ïHåÉŽêO™ÍÆ}¥nc_KLíÄK¶ÔåËy4úÝ –cP0w"«dE•÷†86:˰äר`\¹µvô |S´Ë‘ö a‹7ÂÀœÌZ^G¡¨Bç41D‘YiB(ôÑfEHuJŠÐíA/©6d%Ú-,„Ÿ“kz[66ºLœÓ²gi­¢ N¸Óò½‚Ÿ§;¤ö½¤Šïá«q×Î%pàŒ6[Ê¥‰¹ûFéz° Ý8×y*£ƒœ«É»äþo lÿ9ÖI)¿¸ê{ÛûcíÛ!G¿`SâÌžx)­SÒ¾¼‰³4¶‹¶±FÒè÷”ÁTm•n§fñFûh}Ü™PÊ,cB]Ì5é™-®4äuîµl–Ñ—Çeš»èGÙDX3‰„{eÑÊÿÏgXZkËâ-¡â³î+ºñƒtÞédO®¾ó"dVê}„¾Ö¥ï‚ÒzÆj/o‘š#ä¢)ì„¥WË ­Z[Wpw·)YØF°"Grør3/|G:ï«* ±ÏZ@É(mžÕË_Ÿy¼­¬°Î1f…0OT’_LÒ—žD85Lƶ’‰iqò…Y+(ÑG·Jh06{èá‹Ë9™#Ê­¨(a?ª‚„a´X6Tø‘Ðç%èÝÌè•€ë’+l¥W‹§¾mœ®ù܇ FóE¿¸”¿‡],aõ`,èþmmä¿7+ ÇLSJûŠËãh%{S+g=üKºä{Ƒ젠êÈåê49q3¶Ø9¶÷š\MÆ .Sù'ƒ`ŸdŽ!,V0C´Ê­b”TEÀä¢îá‡mSÿŸ£Ã së;£´NçGú;fìÖ»C‡LbÆSTÅ*Ž]žÍl²ØÞ{˜_GËWq€š©Öøôƒ{ofôαÒЃ‘üûq1°íÂåÆä¨l}Ìpֆ׫©DSÛþíÒËŠßÕr":‡ëqé"àH½ÛÀUt÷g…}&ɾV‚MiÅR—µk¡BÎ ¦¤ôâ”ýgñP÷g¥:‚ùØòïVbQú9$ èë¢óE·1õãoÇÖe÷ &cÐlØF] Û!ßñ9¹o[uò¹@$Ë-oWÌ"óºež¸œÁÈ£i iÕÔÃe…æÊqò{šÌúô.†Ó–,þ ræÏÚmàìTÐø×¸ª¼´M»¾þÛêM])Ð"¿Þñ%0Ý÷éÕ1,[ªÐºgŽm®T]sŒ¥¯ÊAIRÌ J™Ì¦Éd`ÒÄ‹n& n ÏñÞ¶ðÅoÌIOwØÐüa ¼x3eaI(žœg(÷°uá|¥š±L[ÁÏ'šÍ6&‡–>ν@ÊóÑ_ÔŠRS½‚zÛCÑ’ëqžÚ Äl¬>?qœãÝlªÌ%(€´Æ×÷2–0ŒŒ]’i!œÊˆL%¦Î»A£ý,IX/’ñééŽôå6Í©tþ˜KvÁ\ˆUGœ¥‚©½Ô¡˜ %áÅû‚àrÙ{àßÍçV—Ìl§ßo{ÙñÚY.wö™alÐ:_ªqiµñ®’Ù¾[NÅNªS4òÖw_”ŠM.¾yó…„'Éñ”œo|ÍâOÕèù“DvbV¯A"(<¡4š9wEežG‰h¬#[õ;„†×!$ååù=t4máTqg©uå4ÔÂÑ`T‚•¶ ±„Pq(lAà†ß¬"G¾õ¶y‡{2²p»¯ˆ‹ç@CrpŠy–Ê;–i»ß椮™}q÷[v âóer±2ï¡jÿß‚!£*ö F‚xSsÌóÅÃÕÓ<CltP½œ\9EP“Ø—Z/†‹gUØi±s4¤E_+ö¡äôW— š<ÛD&ÉL3Ì»$§HÃ4ó ]=Âk›4ìí‹(†cÈW„%Ús’¸gª¼£{oÛ†ÅBÊÿ›ñQZ¡É¸bêäZ›ÙY¬§Êï›Ó¬D~Ä¢²Þ»öl¥Ém>æ ‘Ä?8µ¿‰‚‡.œÖpz‡)u—‡ƒÔ"*›lÛ Ñÿ¥·[‰{NÔWÖü endstream endobj 562 0 obj << /Length1 1792 /Length2 20368 /Length3 0 /Length 21479 /Filter /FlateDecode >> stream xÚ´ºeX[ݶ6Œ;ÅÝ‚»»»»»œ`Á‹;Å)N)PÜ­¸[q)Å¡¸SÜõãyöÙgË{þ~W®deÜCç˜÷œk­¬P“«i2‹[9[eœA`fv6€’²¦9ÈYÂÙÑ ÀÁÂÆÆ…DM-é4Û9ƒ¤ÌÁ@/Ø j ~÷sp°±ñ#Qd  Û»Ò `áP‚͵|\€ì:ó¿5gw0³…¹û»²±éß]$]|ÜìllÁÅàdfþ+Ò_Þ,sKg/w;€9È  À¢ÌPqözítÎ €ÐÖÜÑàl Ðê´5¥54²ªÚjšô,ï5=\\œÝþ§IM-mY&€”¸Š–4¨ÃÕÖÔúëS z¯ß†  ¢õ®ÿ+Ï»á_îÊÒZâZújÒì¬Àðº¹Ûý•ö¿j£y¯ ð¯ÒÞ]­ÝœþN ³ƒ]XY½¼¼Xl<ÜÁ,În6,.Ž×§ekçðrvs¼Ý€ŽÀ¿ã²zo'ØøÍ@ÉÎrþå$ãü¥Ó{+ßÞqðÿöÞð_1ÿapÿ#­¹ûß¾JjjJ's;2Y¾‚ÍÁ±÷7Њö’nnåPþ§ÊíÓü³t ç÷‘9úù›{ý÷Œ™ƒ<Ü}ÿ­7ÿ9lKg»;Øýk;Gà_Õ»ÿ5gv ¿1eqyiM-f¥w☕߻b{ƒÿ¶þ+ž¸”’€ÀÎÏ`{'©4ÈJÒÙÉé½jw¤¿Ú'e÷Þ'°³›ë’Úäìòû/ÐÚdeýWÏ­<\XµAv®@y©ÿ1}‡þ…ÙÁ6Ðô¶´eý+Ñß<ù fÿ ~o€¿Ÿ‹³ ÀÚÜÑèog |? ù¹›{`7 ¿ß¿+þSBbçXÙY‚ß)þ¾LþŽ.²vðÿ~¯äŸªÿ™|º¿—(ýûú´r9ú¬€ÖH¬*Îàw*Ðýÿ³Âþ+—Œ‡££Š¹î?úùßFæNvŽ>ÿaö_ºÀ¿ ¥û?|íÜeì¼Vjv`KÛôô¸<Øüðâ Gàû|ü iÿµ†ßÉú¾áØýµ_˜Ù¹xþK÷ÎCKÐÝÀÇù· øÞÿ*÷½í `•ÕQR’—eüO®üm# ²t¶²Ù8¸yænnæ>Hlïààæø±¿³Ø èý7C¬, gð» ÀÅì°vvCúkyù¬ªAKü|V‹Iï:Ëÿ•¸¸Þ¥w^›ÿ/ÂÎÆ`þ¯ÈÍ`µvöpû—žý]ïüoâ{„×òXÁÿò~·Ûºÿ-Û;âõ/®÷â|nÿþ³QjíÓŸí_ûŸmóoYìæìÔµ³z?eü›‰²9ØÍÎÛí»ìïøûëŸßŒÿ#õ¿–Ý¿yKH8{û1sñ°˜9øyì¼<ìï£âäòÿ_Ëì`¯›÷)þ§ü×ö½–HKóΖ‚aöéMeÒߦËa©ùYN*qEô’`–²¦;ˆð¥ò¶(€¢…Á-AÙ4…ÎJrÆ©Á b=ê0Ç×ß­Ÿ«¦®­ÔŶÍ”ˆ>H‹}ÕaÑÉV^ *?TøZ _Âõ3»-© =v$ÉßÑýÇ1ù†q™FaTÞ¶šëUô‹½ÛÍÓ{°“hqºüö€kÞ'¾Ä0kV;¦çÒÛµ[$úHÝðs‹À¥‰èÌá—xO¸`é9Ä!ç0 "."uÑafµ¨4¥qWâŸTú8:ïôþ=8Î.2?Òí,póÔ(o–#eâ~Ÿ½bN¬¶3uZ‚m#ÝÄ›ª¸ÂSYë£@•3Põ’­ò¨í8MLÝz’ÊÙ:Mê†ïâ@ø*:ø*H†Õ9è*ºóÄËgÅg¢æDŒÜd Ô²‰äÝ÷Áp‘Ý0|°ùLµÑ)áºÿ!Î7Á3´Ðþ,jp?î”&Ó” ÒÌNçõÈ=ƒæF[ŽHÊ™$Ѓì16<‰·‚,>QO0£»ÆÈ’^|@|:õ—´K-úëKÏr!°j]¨­(ÆÄÓmä´º¤ù›tMKÔ!ÍóìŒçÇ ÐlXðñ^•š¹f[†ž·ÎÕñMs´:9¤½:òr£-~KL¾†Æ#ÄW@Ý9iÏ ÷ØÝüˆ­ÂD²*<¹]ÜœífÃtšxÞn8ˆC¹~ÛIç6ž…—‘AKÌA»¡>NŒo2Ô\èó‹->––s‚–Š]á~ˆ sN ¾ÙKAýGéíÙw&JùMÙÑö‚e™¬T¿Ën΃m5\Z\EW+*ÌÅ 3"ë¨ÆÓ3ñK°­ì äͱ®ÔÅQÈ5®à^ðÝ-N,¹b»ÞãŸOeШ$Æâµ÷¿¦7¯ˆ÷¶ã»&‡BT`7wÄ“ðRáYÇü<Þ‘™Ç»Í*¹K ºèVœêÎÒ†mI/Õ´Áîù¥^ŽxÜ;9eËĉåøü/N};_jz552kÐ$òAÑõ³©u¡ˆ¡\tÎ2ÞÖÌk‘¯®ËÆDG©2?¢^-„>ô}rÆD8'RÒ×icž`,à>‚¤'ÙáiŽzu`ÿIÍ'‚®õ2Tã a¿†á&ic‘—J±Fàs~¨Ú:z¢dwõWˆOp¾èNõ©»RÕf¿§‰¤Ÿ‚áìáŒ>z~YnÑóU0Kyˆýx9^¿|ޱàNÙˆ¿±þn¬¸ºì*¬)8X†2é£Ë<€Të½Ewe~9Hftc‘3@øæA6Ìw&jÈlìÜAš‚ˆ¸TüíSCNC½þ'–vèb´Á—qïÔʼngë¨À«AK|‹Ó-¬“Wr2w¼iäÙÍR–wE#%¼Bb]²öO¶¡z©Ç®ÌHðÑŠâŽqTÏ8×&úæ¿z  ÚÑÝÍ`z2†ÓŽmóhÖ&FàÄ1ƒÊõ;ÑË_k•ˆäjy`„Ý>Â"À1VRöEØIïØ?ˆ9€TÍq­Ëù)j›NæpNØ•À)ɲgÍ6ϵw©ãN¼ˆùõý׆,ý½·rrWŽwŒÆ¢‹*î—Ê!Ñ3þ–6¥ö85‰ì SÊã¼ø¦ñÆ"ߞɲ;ÔT ª`¢ÉÉïLÛÖVl;¯ý9²R–AŽ{´É%~…½&Ÿ…]çIï.©N8ñrÈ)]âé4é0` &—³&V ïHkÂðoTK6òUÌ=jl¬¡×bM ¡](b›—7ËßC½ŽêÍog¡LƈtX™ö.»çvËxOUÌÏ>u‡êþZ…¥í[gqäcº×"»Û’,Ľá‹W9Ñá逋=õ3¡§ÛVðT¹³ÇŒ]1ÇØD´AìlZQGí¦õcoéfŒðЕé¼ë *!ü:•qý F2e÷¼è¢càªU(¬çC+ÆMÒŽúN1†ÒÒó«IÁ&sX*7}S(¯¼‚#&åèu»˜¾$E ±_ܳ湑P+ø™Nöe[{Eˆ?Õùk’rSèçafÝy-:'#&æx{ª ¼ȶoÐ-+·È·Û/ ¶³ƒžhâ´è^ľ4°¦$ 2!YyÐàA=æýá}ײ²¬²Êá˜FËü³† õ4`†qh<31! gÓH‡AØlµÁþQ÷ëî>þ)³5°p ·6Ý›‹Õâ˜Ü…8I z8|×ëñã¾Ã^ÁÕš|ÂŒFÏÔ´53{dd/”ňýüât,ëu‰“aUº VÈò]O´}_Š÷¦®Y&-äóff0ÉÏÏã2Sdp33‡#ë$%ö^,ܱ¿Ëž X$ ‘äe'…D#Ì­ä_L“PRŠšUo%B/LÊÕוÀcMt"…••È:`kªúñ¨ìí%b£¿\Û<°œv‡ˆ÷êRQdE"(œMÈ¤Í {Ì׸Ô%/¯KVlýŒŸP¦9¸ËLÖš·?œt™Ç%~Ë[H~åÓ¾Â]åÄ÷´øNðlP÷öŠdÏéîX”WR¢FÙ™ý2="«‰gú3^Fu髌 UùÇý¯¾ï¥_2ô{á>»N*ÿ(çhfÊÑÃåÚ.êEî=äŠZísÇñà‡¯3Ùö¼Öä¥Zïc²ÒCjhl …OŽ Ÿ†¯–²¡f³ø@sðéGÊr€eh”yn[ëÓw²ÊÁKVÃÝHa«4#¡ ¼:•W¯‹FöºdL+8áY쌈>‚Ädy:¼RœG¬©¿Ê<É”§HgÿðÁC‚ CÞ¸µë R½öÏa´²9¶^ ’„ºâ~ùåËÅ›Çr£³tÅGê=¨ä㶤gŽÕþ{rE<¹:3IÞ7™~«Ü§¯ÿå¨V§¤y–ÌÜë˯9¹ëüïÝÞÑ&òãη9tþTÂø”0Gžvº ˆž<ú ÔÙ#jS?Ú'!´k°efGò-)QŒ>KìÃäe‰ Û2R˜§ïX¯|Úí©>AÎàu™Êãë_‰ìâ·“}:°cô:,¾µ×y‚ȯ7eì%Ÿúªª9)Úå–IqÍ43L¡› µÛÕüîÂÑ|¶ýù†F3yƒÃªšb‘Ô#Oa/TªìB}®áÄúŒ„7É2ã)öP{“9&ºêç™ÿ²?ê?ȹúœ‡Ô€mÙ¤ŸÍÏfç÷!85Î?TrXlÂyq"ç¾ú8[ÌÁ×)MÕ‹¥¾kfî‚Q*²FL£2 ?Ò†A”è ~êáÆKÕꨙ ¾V¸nÞ+<{‹Žuàuë<5ŽèkÊåY„‹ÈM¬„a–?9iT”²!ïŸáß—G9üámY£C¹Û.î˜_µYÒŽöE|?pŠŸQ.)†’ù‡0èn´i¼ØRp©Ð„ÜѧÜMét÷ñ# œF¼gTÅÁº£%1çR#ÚPêCέTV•ŽšdÞ"…Rø58h.) §È†ü%P_oA\­í´?%yH²ñ´‡ñ|›á+ðsµÌpádTp\ç>34j|”2»©Ž ¢™B#,÷:hlµÌ g6„é–9‚–}¾VÚº5[lY¬Ï´NãõìáX¢øJ"ÞK«O«‰ÇsRý Bœ¡ mc¸Ío­T’z ·ãØ^¬´§–’Ï•ñ³ƒF>HkBs‘.3Æž¦ëžu(Áój¯-Å™…bäa–ü‰X@n§@0eǰ_d‰‚Å'ÒØ¡0ƒ-{éLÎkÊ®ô嫹ÄÚè:¿¾Ò%ÏŶfⲤîL„} “Ø)/°¥¯‚¨ç¡, \³‚¦ˆ§®â‡½”eü®:¡¹è ô‡hÂWÌ?ª’…@ ù{–ŒsèîÔ4ŽÛÐ:’Éž†Ûë…γÜêRSñò,‘>Ûå2-Ù7©î ªú+@IàM´¦¸&|pÊõŸÐ³1¡ö.›Ÿ MI+Ón¼Z^Ht;õxÜ=PÕ;-j,ÝœýÒ®Î]x duIhè&²uX±ƒ7%MYÉu80ë3ûÒÄˆÃŸÏÆ²“Ö[Æ¿ÁóðoYAÊuVþP(?Z±6Ñ8ô–7B˜{ªh<‰\Ñeh¼ÎY€õ¹…[Ž‚É+ÈDpÂÙÄ“ëŽcˆ± <¥; od¥¢ÊJNœw÷L¯m–FÊØ-î´t¾ÌwÍXOÊ£úV›)j!0¿‡¤–¡qÁ~ @-ù’„óªCº%Vs‘N¸NkD‚Éì3r²‹år¿Ó¤´A!†yù÷SsÎÔiñ}«\ël T#mäXŒÈg¹å$×8ßFåÛª½ø²ìÕûˆ8U«Á¶ ›wj‰:^Ú ¯X»ÅÎë7qCÄÎf¥ú³ë.8_BpÜü½üÖÖš;KÄ‹ê"E茧Q¹ùÅá'£4"MS"@M û-…fz ¡)ä*˜©j|8oò×™X‰Àµ-7¯ r.V­Ÿ2_7ž#ž»¦ ;~~ͪ< M˧ Çù£4¹5ÁTkxg–<ÖµØöq#ÑÐÜö,”‡ÄÍçcª愳¾¯ž‰·›(‰—­šiMúÚB_³ÏÐSj\V‚ó9÷—Pžû$ŒhŠ!½[î‰åO0vôæ@"+ºLÂ…„OAvÙZš¶5Žgó¸bmTæfšŒrŸc©Én˲Û¾ KU°½_K27ßuÆt˜}ÈzØ3F=âGQ]‚†{ÝJ“Ü›ÜÅ ;?„¯ië ¡bö.m)KHWöRGø®ºöÞ¡•r8„ ‰8‡+õesƘõ*}¶ý®‘`h<Ü1…KþEúÊ0¨­ˆêÖgQ 4&W‡KÍx4›oW‰˜±£5RûXãÌྠ°ùé)p[hXÕî$Z”c,óþÜÁ]‹ÅеAŹþñÁâ`ߣ‡º:¿ô#<ë5¨ï®ä2®Àv"Èá3>Æ« ™úN[Ë'LBRâ£V@Ñ´‹âئJ½õÛŸ{5†ë/îe5l­k‹½NíŽYs×ðw*”¤Ï¿4OÎ> 1xûü Ù7„7©z) ¾‰izàâ üÉ£-yÅwæfyë£J6ºqß»xž‡;ë?fÍ>[ÃLð(Èãý∣þe3JЬÉ2A¿wyü§y¹•¢~tÕV÷–gú[Ž}Fσ ”(Å}ø9 ±Zz½»ty(îoU,$duj„¾Hl†ŸOÞ 7Ðm$ Óô65™+oXôâ”VÒ1`h)ÑmÀò$ùº”RÆ9Ã><ãájEGæc†ü8ÙeZ?çñ‹VHèŽÏÚÛÀ#ºrÇß7̽Oêúê¥',?ë>P¯¸Þ—[âCs{du›Ø‰f)jp/¨L‰á6 \Ó3+ÙKÛUtÝbìá}½sëö®òü¼ü(ºLJš/¬~ÁÅ ÓG`Ì@”ѹ!¹øåÁ,i £«û{ÔÉ«E¹Ùöà§â²_­3¿FòjŒ>›&2ƒ I:¼Ð?…D„š52œ·â‹R#™•¤"óó¯y!‚›²pØi¿š/KÖM%¡›è­K~Ÿ†]„ßµÉ*¯Ä‡®„µÓçΪOŒ?”tXuý‰è.§·ßňfOKûYÛDñf—Ë‹Ã!Ÿ¾;ÄÆLF_ ½ëØÒx´¨ž1Ç•Þ{؇ëýܵ¡åØü|@{Ð4 y/Y÷¡ó§^ÿè<½d§óŸÒ³ gU*Ÿ™R¾‹+äãüŒ°îC/¥pO‚óNœ&k¿(êfp-œE§gŒû :øçª]‰ǺÑãŠÄ/Šì¯fÇ»xA4ïüMËsDnñùe´«Ü ŽPZ-f[sb¤Ô„̉í8ãÍ ŠŸ˜¼†äù-5³†¨ÓËÃTbãüúã[ÙG59²+L‡jMÄh>ì6:‘˹ÝZÖ˜AÆ+dÔ†ú\B¡‘xÂò:q….™cŒÜÖ€ñkÄ\È.°ã-¤V9½ºÕy’Ú„jÈ÷ ´Õ]ØÇžÏ3¼ŽJô*þƒÄvi~éd$ß̦`‹ÎýÙûŸ˜¸h´!ªÄ »išñš,õ›ëÍ æMŽË°‹pºÁoä¢Òúì­~¢54­6²¥û«É‚¥gŽéÉAxÊ¿üN ¸Sµ¾?}Ë|´ReÙåËÝ5FW]ÃBwŠÀÖþŽöItËAS½ì:QlksгޒÞIãvMÑIÅ]ŽÏA^S™ô hkO…0ÃöœPÛz [ø)¦ou¼BF.ªÍ¦o–t#à8ý Þn}¥<èzȉˎ.RTÏЯáR5+†é:?»úð ±a„P®vÔTÿ[,ÒD zUíšXF7E\Mž³”j®ó*¥bî¥ñ…®øøÜCŽa‘é¤l¨[ªwdSÎÀï)*§çöùùÄ„ÄoLâMÝõ>P*ÕD0 äŃ2±S[3ÎWF ¦³~$ºfUU¼ÖwÒ1±·s4§¹QÖƒ:q3H-Þšß>'ŠÍá’Ò/^‡È]0ß‘cEè_ƒc#y¢bCä¹à)ˆ¼øF h@ž$=oo× &6Øq“Âh²®."K×q6±Ó_a¦¼QèÄY‡+Ò©Ð…ÔÅ BâkíÃO}Ž;:ù;mYi*:ñÂ{h„7y}nÔëÿ8±¤‘’2„–ËænsóP‰X¹2¥PyÃ9ŒÄof”Øfe”`»Ùy9„1§œ¤R”ô™2«ÃOÁ¤ÊT]+çΪ.Q„O&)®†¨Fà7è¡`8 øm¢0jóD[tå—pÊ”¡fþcÉÑÅþ1Íú9Qø³­¶ïcIì%NG½Ö%òEòGê·ÎÚÓ·ž>?À*Z»µQÜM ß;™¿QPÕ—i­x¾u1|Ç’ÊD{â+^9‘/ŸnƒÈ¡>ÿ¡ëQS<úv­¯ú­Žtf.Q8üʨÛSŒ<¶ÝMl\"ä½{^}4R¤€Zôå ªEfĉí[3U¬¶÷BÚ60¿ö¹qб*p±1€íƒ¨©Ã'8OBËÊR“€Ëþ;‡«äiJb¨·ÓÑ­]’Ù}hT›bÊØ,^pÀj¯›ϦÎÄü4ϲ ‘òbqZÉ*'ÅœWXwôªAÈ—&‹·¼özE1)hÙ¤æîô0RZmŒSP€¡‘ŒQ Vgß+Á3°Œ¯)© ÔFÒ`‰$ùæ•`“hÅL¤9±`Þ¦°”}, «;Žÿé—ê°`•ÏÊâ2Ûö› !‘Ý7ÑuXµÿæ‰Ré|Øökë‡~”(<¢>pÑâµø·ˆrR-“]fÚügo±q Ó¤‡±þ¤J_:¿¸KÚ^ ïãeI ›f.Ò¬Sætަ‡ì'Û}—å?DËC'˜¦Ãé»7ð=`û¿`ý[÷1åM\¶æ–÷˜DPÂè¦_lchjÝýIãgùÍ8Eô²Á—aÈ:©šöñþ=A(_%ÞõªÎøDÅv½œ2ÈýìÎŒ^¨;4a² ²š9h5'/wæê¥FÙÔf¥Ë$F«†¤µ¯BÃMqsW’½JB¾…F6Ð_Yà ²øò¯÷3²¥HC'<Ò36xŠuVÝ'ZŒ°ßðÉ[¯ éÎ"úØÙÖËÿ,ß&àTnö¹9b^½hK²ƒÉ>%ÁQL -ÒŸCÀQÕ³\0ʬ) „È!Œi«HË[¨h[ÓݹÕõ%b±v¦·"/&á¶môP- t¯¡Ý.‰™D¥,nÑL²®’Øí 0ÆíãÌÎÑÛàÐö,Rìá‹©ðר{‚ç Qó@ÂÛ]ÔlO¡÷/õ}%"Óó}wÚ]ˆ,‰ 0Õ¸Ey®y¡›^ÞHKYâvBjá¬Í|vƒ\›úz$aèääZþÕZôÀý›5lǘ¢Ž± ƒKŽÔ9Æ\ÂðHA(]ª"1xCÆýüìSì#$u ¼QÄ„}œÒ²z9ŽGQvMĶQœk°âþë‹i³•z E6/é%Yâxž[®¸#ýp¼é ã%avø‰Î¬÷|?ÈF"ùÄfµä‘šjñ‹ò¼1¾mcb@ë½}ϲ]¨]^Çâä]¦°Aä¹Âë7ÍPm)XH¬Pp~GÎð¯›l]_ñ§õ!Tîbv6QPŒó>`žÐnA® +Ó›äþÓýr*"³¦§ “â Ù?L¼´oïÃ’ÁÅůóE(a»Ü!þÛ¬oŸ×&» FS#L@[ƒV[{r]‹ ³Üâ®YœK ½Aš_•‚àË®ë÷}2Ý57yÆÁXçDQׄY¼®‰.+¤\ÈgÒ•»é°±”‹Jh-m{ iKR.$3‚·™ÈyȰ1ÄF\–ñˆXjÝVù"½ª¨¬¢fbBú ñžÙwšßº‚Çc”„ˆúî ò»,P%Œ,ŸùªÂ_"܇Î÷ᢨ¿Î_ï‹à’CZNß[y> î/Røš§¾ûíJ;õg÷#5¥[¼ÒšH+!Ô,Ÿ– #ä'†@ .ô~’àsRéL‰¦Ÿ,JÒ«cê¶ÿ€Ø*ƒæ2 :¾+1k ÙËm|Æ¥+¹««(w£—GÆÛ$ýœ‡.» ÐŽçµèÙ’L¯ã¶±'ó¨‘Ñâ­Uhxò¸èhW‰oÍõðœ qlÒ5tÂ#jl{øjà%Ôì+mlÔVO§3÷œ$¢ÙJåfqѬt*‰™ç’éäçhúÝfÌÌ=kÉÛÛôS[ U–Ì’±IK?¡gB©3ï^4Nš6îú¼£inÉá)“¯¬%Y¿4¶Æ– í5£nçGÇ“ ‚Œw¦-}°NA·ÓÎñäÙêö†§}äAø.úµíP£Ô¦OÛ¤>PúÕ:Ð,ÒÓ þ'CäK:É`L5/(“åö±Ñ™>?M‰yF[Ęa"ñ’’ÎøË{Ô}­9âçMm~1íbÇ31yõBz#‘,N"tä¼(ÉØÊ¾VoT·®˜Ûõ¦øMŽR~M øQz"µƒH>M”ðÖÒÒ?ÅÎbT¥Š$OWíÿ±³a»kè®f™¢¤‹û§ÿÖaù³qׯ\7ÝÉ„0Œ ê;ç8êiö~ýË+(]%“øwu!OÓÓÚœsЩ[0™m@4ÙGÏ%QÚ“í™\ÊÑIÛ ]¾XmÓ?Ü K2A.8 -(bí-ñª…±„-xâ.;Ñ• zt†»Ô~fã=Ó©Y¥=í ©ÛÇPÆUÛ­·Ø[§Œ35½d§Ö½þHóQ¨€?ÿ“qõé%?Ñ/îF†ã BBJ–¶ÀO1À‘ÍY½õö÷Ã÷ÙKŸu<šu£E$âKýãÇÄãÃæn-¼@‚’–/ÑKr]\­üYšoçpFíêßòíe4ÍãË-fÍzŸ?šŠœÓÂ+yóPq‘ôØIs•¯|Ìï?Zòió{9‘.äSû$SjµØ‹}4 °$;Ó«W _Ò SÕR3²"Ægxø¢#|´±Ì^ìñK‘V±¼\ZÜöˆ·ùRÖc&ij<Ö—´ua¾™Ò «­fñØšm¢.zÊ V½OR '©M¢Ö=–çƒlÖ”&ŃÖlBçvÇÏo$yˆ?¿gwÔ ÚÌüI1¡$lÒýÓøXµ=Þþ{V'Fǽ^`«þc ƒÅJyëp´Ìv‚™sŒåôó–áþŽ üð™ÿă”7€e^‰'þ²|DóôeE?›BBZ&º+;þ„¢kë ¿„|· nÌXh 1,Jí)[*üÇã Ý7Wb8ZAŸ‡lú–cý‰v®Û qÎó06Ú—e<&Ä;q_ü+ýõ°ð—‚2îíÌ6嘡=¤µu†ì=DZIð6ý©'-.«‹‰¼ÒT„Å£œŠ¦“aâ7 Öq‘£Mýö ìùˆ¦ùXFÍã ½ÎWmå,zŸä ö ½ïzªù§(žH=¸1Ëù®£õCÅð2[,Øo´‘L9VËV…ÇÍ´FÖʶ’ªÍ9.¶uUò†ìfi-“¢Zf6‘yç9 İY+ÐêËvãˆ1AÄ{ì?dåPb=`æÂ; ÜÇç¸ny Û¹Ÿ¬¿Šö¡!†\[`@¤$WZû®|ÙPôêˆT+)fŠÕÖ‰îḠåLƒ»¶M¸æýTêä2•u ߟ#²9‡èíŸ\9«1{‹8ƒìÖ!„nOXh¤´¨ºqèÐóæ°Ée…¦¶ÛŽw¥?Ðë–Šm~öÓY«Ñ9wªóÅÅàúüö3”B¡bÿDÕ×ÈIl!NÙ|tèEî7–€11:í¾ÐñÙ³Åfå(FÀß3ß”–Fïüâ %¦üÜìâs©ÚîMš”VÚUuÛ ãq5•Ù9)9¥6y¿Žƒ—§×Ϥù>xøY¥ð™ŽîîMܶMU 8ž”[²t êûH«çr[Šý"`ÜìµÅvèwàÉŒyí#‘~N½–ý$ñAqÂ;БÀ§ÎptöÛE©·û-¡‹)W“?^KW ¹š>C 2DïŸ'Aññ !““^ìòK* ×D®]whyŸ¦é»yù†1 “éàxy­Ë÷&J’y¤HÖ ×ªU…‰m¤Œh¨Ê Âô®2üåuGƒè—$?záÕêC<2uêÞïg~7‰à§î¾L¦öËÙ.Éç€ØM¥¯·8ìOâG@‹Á#º{ý9Üï]Žq{øY(2Neƒì›3ç)wŸ¤¾èR­K}Xµ…ê#Ò6_é­Ë~”bß´òN&•›J›©ˆJÅ·€»“ÂSVWÈ‘5VÄ„™'ëb9'¡ÿ¨aQY®T…{IGghá·M¶×Õ®jØ%¢7ÀìYšy~sP?+žï~é¬ "­ŽÃ: ªGÙRYì3ÌUé»LDĹ*“~æzhbTb$1ercfnŒ˜Ù-ëœý® +©‰Òêž8À8M~i¹³ÿ؉í./ztý´ÿà ôßœùŠ~©£M¨'á†qi|бÌ4D=Ujr øä£P¿ò².m›hÅ_ê°Ðÿ;/§møÚ.%=©0r’ÓŠ¬ ÏhCƒÄ+lÁC0(ªb‡ºY;ÿgi„¦Qá†c¯|ŒÎ•Jå x<™ïQ¼ò'[ÝÆ¤çVôK|í-䨭?Ê&SR|ˆ¸¶‰\ÿÈLtÞÓo ÀüÌQ˜…ø (VI”“-s#Pl©±os2Öþ´LÛ_Þ`ÆÐ;Õ}øè$(;hZ¥§ä¼2ôÐá6ý’U7$ÍÓ ôƒ T1tP\ꑲgÂcÁËz )!ë"¦÷»E¦Üù<(ÑÔ–JŸ¶¤™M6öOrr˜Àiá+©”ZÏÈçŸ *y DC4^X9HE4Œm£ C$×”Db AÀ=i¬›]>qN¬štàGƒúÑH,Å/Aa=tˆtUÅ) DÝœ$Z59wJ¥nýÄZ0,‹á¦Â&YSÝÀ(Ž_³_¬vBJËÕsLA”˜-1^ç1²®Å&Öë"’=ÂÒôºc62Ôò”†);çxw—Çaà°ïcµ L ˜^¿Ê)Ü>×ð+j«µ/ ãtìBÜÅPâD0d±–ŒVBe"„\%&NQö:ÄDÖ¾!à_›2'OYùJÿä&§¯OQ>¶õ¤Œ˜ýê PhRäAzlƒÆû5Q©s µOÜbþÑm…¼Y|AGÛl®¨fËÇäi%EQŸùõ•7#Ö):H¹œQ½Q2ô‹üo£]ÞõPksܧé>»Ï°n9{¾^‡„”rYçÄY0OA³%yŽñu_Ê _©2âÛœâÞ µ«I‚þ¦ú$aTOX&ÞC¹òÎ?çß_œSÒ€f?ÓôJè ?ûJpÌÿó*Y¦¥QñSð«¥ñäÓ5Êb"*Þ’…Ë ¹¡·lÌ›Eÿ6kŸ}¹Þ/‡“7í1^_bÿÐ ø($鳶묔~Cçbø0g$Iiêï³÷‚¶……¦Ñé[%ì…—ÍIÊ@f/sµ…nDðM®Ž‡u›˜Ú¨}ÁÇ ~*±53ÃÓß ¶ß›Ð#­†Ôl,è@¦yÍ‚[ÄI«Ñ„íh;—¥6úS°É68!}ÌW 7Åš¼Ÿ“ š¶Ò& <åz&:˜:þß ²‘]o=Z;'Ÿ¹)mSÒ3…ÒÝàlÚ`­°6PPÉ'º¡ØjNÔhš{4%Ò•ïëÈ•‹#|øï¥ýŠÊƒáC×H“Tkˆÿ쑸úZÍ„´úèi~ŒëJ©GM½ÐÀC"DÑÆwï-] )/æL~Odùø³éy.Î- õQ®ûG~°@¹;ŒØ©¸ždéy"LÔˆÚ4^(âÁn“Ö(©ÕŽ5TsmÃŽ:ºÕ¦F£HŠ0›•ßñ²ÒÎÛߑ𑫤5ì]KÇÿ´ÞÇõsµfF5oß@Œæ^O C¡îJå\µ9cwÐu'’g ä §Ýø¯ïx%NG½iдýCâ'‹#ÊŸ: ò,)|¿V}ÔD2Ç}gg(²ô4¡® éç;<~¾U*VL)Æ]ËòÐSmW´!ç1à6>S-°¾ ‚KÆTDÚÃ_c\«)A’KE,gV­(šC£@7º/ØQIEr%vt1ZD³oÿ¶=±‹æ™2W8ßíPŠÞT%À9ÅÔ—cȼæ4‡®s€Îï'g¸NÞ'0úÿ<å̹¦Ú;—ÇLÏæS­\+RÏ¿¬I@X$+Jv;î%‰•›&¤î ²ÙZ“¾iæk6–ˆ¢å£#C%Ù sG1´aü™ßxëí_2ÆÜ<+FrA`5²š:†![¥ùýîPâïÜYèÆà š?²¦“GÊ¥ýj sQÐI¡ÝZ€¢l*Ãë”w¯ÁÅ@4î¼CC Ïm/š&–>x-[†ý""ƒ·!ªDý)’¦‘Y5.2L}òµ¦0qç¶ë £²Z½Ý½å¸ Ó@{z+“#FÓôȪæÍ„~v†¯l™×Ôªh…|‡ñOi¬¾:>Š?ûIǼŽH]ÏN‰»fˆÐP©ýyÍÒq…»èãaiƒÉ X9uKçc]ßÙ£UýIUô'£œ:EqfãDÓT~Ôn{ψ„‹Š¦‰ˆÈLj%6I²˜¿—Û×®Œï0±¸$=ˆ-#µ#s^9dzº¸¹D(míðtéÈXûu8å™ÐFbý­åØuü ¨l$ƒ( –ùÂ0HÝ£ZØÇ2IÄä?H/Ë ò;_B¯÷ž>zf¸ÐàMÇ¢_¯fîëì#¯›;ç¡wÉæŽzз8dƒ\“…?,£©ºa|ÿ>ŽÄ•Àa*"­‰ÂÜ7F—±¹£DÇH«3ãϧvŽ„¡©ºÙ×PrK]fFã³þŠB@«oZ‡—Çóˆ8 ÎÙ P eOÖ0ƒÄ™úqY¯Çî×5®‚¡ )£Ši‚äàÉ(©Ó­ñ"ÍO.*‚õúÍ™9b Í„V(n(4±_¾2åfç7þÛ|-wáÃ÷H±Õ¶ %6ôÒˆä_—,Ï}`"ø¤&XPɆ“^8"ñmìð]`5.ÊøþçUE<×c΀slO{öýA´Ñ…W‰seüÎSZÛ'û³•CTÚ°DØ‹ÇÏ¥ò‘‘vmléœú„êPvqûd4÷¯a™ˆ^{-hqÂ:Kù]äHä‰6cï±6y¼ôºf¥«Jj¿…®f{è ¿äIyyl}ÝZ•[ò½Èpî Ü EŽ2Љ°g€çÐBÎLq€ð5üÀÉÓ¦”3XocWU€íçÃöìtRõ]qùçKâ!¹ëNG{E²…ûzÉÕQ”žiÔˆq$)kX 2݉Ÿ¸õŠ\Ð_·¬/ËL*õ•)7¼-ú6þI*¡çòÃR²SÄñ2Ø=‹ó\سW?ž¹Ç^Æ•ÚYá"úö„wzA ïäNx¥Çøö•@?>Îi2rzä"~jýêЕÎ1 ŽfÚíímï.ü“9=WFâìO²±Á°ÆQ7HÓ@—sdˆ†®@µßöô`¶þ"3ïdBçS@AŸ»Êæ·s,áˆÀèÖâЮ‹…Öþzo]²ƒ{Á•ØÑÝ%¾g…££Ü¨r´[ÒiéhŸu.6+UË>½r4R‰ÃÁ®•\Ž‹$\r›m)Ë×Rž‡.ë¤æœ½dŠž%‰Èº@¬{ò©àrÁ%Q¢½‚iê_qêf?ou–Dê±7aÎÉ ìO—‚–ë“6?¯´?Kò¾”Pá'š‹÷™5­Icõ^š -´AH'”ä´ÊÙlømVÀdÐÀ¯kBñ)¸¨°ªsÑùÖúq$þ©^ð8ª]˜Ó¼¤øVK0÷iqÌHpºhŠEû¯gRm¯¡U»…Ó¹7'‰xáñCÇ‹îéGzñ+JAg´¾sy7)u 4 ‚¤~-Ë$7}Í$ø”­šÉÛ »Õk=¨ùñ´c¬Ø+%¢iy^UK[¹mÚ82Ä>Þ&ãúü3L[ïÀ’~5áw Î'‹vtߘG:”p¾fžé'Â"¥(¿y E!@à‡Ÿ/øµä+M%¹:±m,…ü_*Êô¿°ž£¼~gGbÈ´S«½4œ×͵€ò\º³,.kìVgÌ+\ÞG²OTLw’-"øÿ¹ùÁ'tôÙÌä–Žƒ¢ðUzèk…Í­mV÷‰°K?Yë6kXÚw:2?¥¹ N+àYLD(gÄ€Š0Æ¿ìoªÁ 2Ïyšè-Ç~-b·—¨”¢¼ŽN=ýcSm1’ú;‰ü@\Œ©¾¹9Wòb÷Ê-í¯¡EÜçÖŒVSÅ‘¦CÃ|9µ½Š¢‡»ÓCÆ»Õ%ƒ†´Í¯ü0'*aN¡„Ëæud&}%?{'7• m:ZúŸő⠶ŽÝíϹçÙG9˘×VS[KwQM3¼éÔÅXp W~ø"ö÷±Ž#a°Àg6“!>ç©¥¢ç­Ì[ A¬EÙ|I&‹±UÇ×Ï`SÈà¿·¸ÝþDÓB{»cLƒ”F+˜J¼1—mŸ‚ÿ‹­ž‹ñ ÜãùK¬¨{§œ¯ûI¥2î ToŽæ‘íË­Vuݦa®ªe°î‚üÙ¨CÂcl»èÌvïWHL£…ÈZ ÇKú´(¤Åø§´ó Ìêx0e&œF¬Ûr{›8ê®\­½úÓÞ mbzR…»êù<þûÑîô䇿îx9ÈenXÇ[ø*`‘àV¦hUXWµåfzÐÐ(—k{¹ëëÙ—lûO•F5%ïWµÆ)ÒeÑî[#"FTJ{³eÞ5#ÌNíÁºkÝ`lD­ô,l/Í ÏfžÈ$cXS>O²Œ_NI]áì¦À‹°ú0¼Üæ,™=– §€J>s`pÁ-—'K£fZ’¸Ž  _Y¢<,ÞÌÝ‚zí´Ò¨M$69ÆšÐZƒö¼óHjÕK/>çwâjØÇ³¥<§œS©Ìž'N(¦5͹Þ;ÛÓ)”{VhîcCUÿ;üc§*¡Ç¤qo„tþßTp‘Z64ìöeåB|"ÉG¥kÐýJ¦W; …’*ñî¶)lwŸ žßЭq=*CfXÕ„©> µ»}ÓØ«àÌÊÙ„ò'PàŽY½2aÿ¥!#ñÝrm«}ù¢¾õ«Ø3pÅ|qåF!%¥ß£X™Š¾±gKzŒÓ^NÊÄ -­ÑäÛÙõb—${êa™¿xk³ÒTåô4PöH\ÒÃlòâÕf†ªª ù†E%»çc¦›ïd û”õ\JðÎ+sGw.‘Ê•[ìgÁ£ý×_x)¥l‚mø.±¼ b2O&Q_¸çGÉ)zd~HNFævoí® ‹•Ï W˜,m_¶+£;Þ±—©ïND_d-b4•ivqÚL¾:Òrçj ×þ˜HR×ý‚… D–Qí÷1£v¿®@â•zvʱþ٢͕¿=ׇº…ÛÀ½<;rüE¥åv“Åy®8LøW0ìÃ\–EµrÃׯû×®ë¬J‹žª:Ý2óYLt”)¶H¿~@©_Cx‡uzš^÷æÄ²ßê4‡ç¸Öæˆ{.ìW¿Ž€Éç¼ ÂïnÊáP<íts÷JmPËÔx[ñE‚Ʀ“IæQð{ÒBùí©‘‹ßÿL $íÂ(bÆ ×%gG%³¥áÆ_/åൊ^˜‹’î$Ö!õÇ?•ðGª/î,TV†Ý~/'6Å5PÜ ^‘<þ´­µFë}O⥣´†¤9bþJ©õ-%ÂD“ž\ »ëѰ½ Wª/Š|·îlh-M?[þ$5ÒÅ^óûÜš„”(¸Î»ftö…r’V{ Y2ôQ± JÒ:Š¥ëÐX¿¥Ån¯C/Ä$%]¸÷ i6RnH(?­"[Î#v¯ý1·ú _Fÿ'?®óÇ›­CEã[ÞaÂâªèoúÔ«?›T(e8CI(¬…X^Éé£ç7ñûüÅöÑ=€ºp/?½®H>G-a¿²€¢Sè¯JI½($^ŠO¦ŽLIåj4ÐÒ§# ã&Ä®ô>Ñ‘³PIâ&Ió2Ù®nÃV7øËœT™ Ké}§Y—E6äD¾*,s«õ3q* zí/#ñ0@ÞÜä7¯Ôî_Ìò„dWÊ .;ì N¿@ )Œû’D%RUXÓqÌ>¯s£ð½âtl@i•Ñ¡cFMýûè–yû ÊïØ»­«?£”¸ )YÖÂé~¡#>O\i53¢øw7­(¶5ó#IÎ×÷ìá­>Bh¦wÂmÿÇÆ>¥`ÉŒ¾ß˺Ӣ(޵7½[I06"äÅ_;[–Ž¿}l ´ÒÚܹ‚ïÑkap³ØÂÏÀaqœÖ\Ĉ)§~ÎŒÔXc0X¸¯JˆØNœ»½þ¸ù$B k!ûÇÿ¶ÖTù!¶ÉIÕ…©âÎÓ®ø ¬Î0жô4§˜÷1h{ ¾àgnqëÅ–bš%EÊù&^mÚ/’ xy>³CÅŽ*ž‚º_¤¹ÇΊF2³)1·P~©Êéc¾áI‹ÉÄÔõ¶û „Sz zv&_ᕤ+Ð÷»Ó Èž“²>=d¶te[ßMeWÁ›;X˜l ªõ!C4Žð³°ÓÞ»Ù¶IQçÊEÝÈ_¿ùO­9tÖ`nÔ¡EÁÎL¯VÒÁk@ •…Œc4y|êÖ¯NÓ8vÍ~¦r£’ðØ·wµ˜Î,¤Å v‚uu‘› ‚\ˆßê>)nã_ÖßXaJž–!‡nÏñ 7Ú>=8¦©ùt7ÀwC³·;–„kð·\wôcÓ°û‹ÀïSrIâ=*P¦èöZÈSV;µd*ÿZA•fÙ³CŠÓ Tt*†;þÈ|1b×°³lØU.ð úØDØ|¤RÑx¨ÑtY¡^5š_ èjâ•.› ßX¾+êàßòÚhÞ&À–_WkWòIxºPÆ/Ò<ÓXŸë4-¥©à’:ÑçØO§­¼¶¢7ñ˜â†v¼ |VçVr¯çL¦\…%œ?›`ÀûèGûÚo”€vU «öÿ‰ví㨚¨¡ðÆ|ÏD®½vŽE‘ì¤í¹p(M˜‡V_å½yÚ‘^½¡Ú@~aî}~ƒ=C„k‚>~šù &ÆW<й=föo3É„g|òvõ„Ënt7\ÚÏÈ^Ÿ_:ð&ãë<üK?êšo‡ З òkºnyF˜ø÷°[Á¢¬ÓYí˵<Ôó°—’Ç Èñ‹/Y¤@ÑëÊ|åu¼FÐ¥\J£¸Xóø%x¬oü’ n¿Œãm^x71$è¿x«§ÅQ ›Yqà:åùú«ÓpÕ8K4ÖŒ´á%hë ¤éoO(üµb=¡5ÒâèN‡e@³måíq°;Ì¿&-²ú_ÇÓB s–Ïøç#5Ž%2GlØêZõË…:2èÆàÛô%P"?6 ¾û}FrĘLa6cåÂÅc¸•cÐ%A”Þ‘+¼Ûôjt¬” `áÅH-.!)_A"D“òò¡°Ñ?Ý÷æG®(² ¿~¼î ­Ís Ç¶:—B¢²CÈãßàêDI$ûÇ`¥ã,“_åS5 e (|nC’¬îš·ý“ûÝ÷1µGx@ñü¢í;Q4nÀÑΘË-Už ¥œÌûvõGs^àô &Ò‰ûkñiÔ$ï±*Öí#ƒÆ_öìßaG¤[:½j^R°z_”3SE~Ü>æm™v@îÁÝÇ®n€í(™Œ¤ÄÐú£n°tg¥nŠdËÓÙ|‚ `»Á¡]f3ŠSz‡Mû¥ñÊœèxJ[+ÛpBGÈØ^ÌàÀòïò þÆ”..›ù¥>äŽ0$“VÍÓÉ<gs]ŽfhåñFF¸ËPè€sÒܺ7„iYò¡Iù0v]ŸÛ·iN·wÐ:- ý~×=¼±¬¬Q¹Ê£ €Pãr;lç[™vÌË,Sp –b>·GGæ¹kã?¢ÙþVÆ2bYŸ¿Ô`ös Ûà—­?½“¬$$à´µû)Áoè$8·¯%£g¦2bÓU“6P쌒ãÍgó_–f¿+a#Š«Ö7ûxÍ.eÕÄïáë|ñÖÅÓ…¨¦û"€Y×–“òÉÔ8±š[WÈÆŸÊ³<ÈFê½Ñ‹»àÒ’«)…_³Ø‰ËøŠÒo·îš3rÂBüÈãÕ‚£¢¥SàêùÞ5’xû1„‡§ÌÀî™^Î 0ú?,®­Åä!t„»—UxÊ.HF ‰³3Ò dXŒ‰ìž‰SOn­“SOòæì:ùîÍõ¾¨~|’_È1‡ÑÊÙïðˆJï¢0T†@k–ègãíù²oî3Ï(dv"«dE•÷†86=_ {’b ×{ûMéHƒP)ýxâ>5¨|Co´ôÂëêä90h"ôJ\¬²-Ê{û 9þð.<òR"1£oÿýÈÞ¸Þ•@Zü _`azoa“¡ùPB`Ù 6'6Q¢{Ö˜B±hm1ÕKÓ8ž8ÚvœR7¸V¿–íÄë#U³2„iðx=qæÉÅ{^£vHÔøçÑÆõ:tâÓÆ´¦ú\¹ I1ËX×bªX÷]¥HC–³Ÿë9ï÷zùz×s^QB$~ŸW€‡˜¶Hï.Z8ð˜coŽB}I26h`ð|nI«äYN7½ÀÀv‰4ˆ X_á¦üÍ*ª¤1³oU ~Gžèuc-í…U…‡’Æ€dò{Ûih&h)£ÊM÷ Áð”ÞÌÝŸCª¸†@Ðé4zc— +¾Ó²Œ‚_»ªösÒ%Nú.‚êhÆÂ5g‘•ûy–7LòDéww¯ôƒ±úY7ßaéÌ£¿éCÂ\<Õ>³yçö†ZXW½x‡ËA*ù2%)n;¼´#tîΡáxÜô8ÉD´œ #XÕ’ü6Ð=åy(&}^¾=Ü',ùóÒö7 "š…,Ž¢t)ÈÏvPJDcŒ;´W Ʀ‹,ϰÆkè»ðNñY;X‹9 L‚3% 4I× Ô,«Q61u»aå€àª/Ùì¥ÿâé´£@ PºIRÏçgK6ý²W\<ðT-è9#NdB;AŒD2¾™®TâYëŸÃæ`~5~©w°*4ò@ûÆBÛŸö‚šBã•/¢œIâÙø‡¾B<$wڙŎF»e«v¤ 0ð^¤Gž!Ž>Ó¼²ªÒSÿ3ìY±Ù=¼D³ùÔïÊâ0†‰‹²Z".êò”éR¾Ø—*.K”½²üp. E=¡„ÓÜÅ«Åß<-tEú1Ñ Ùña2³ÐÿÊ]€ðÁhÌ(ÝŽÙÖ±üM¦¡ú±fFùqàkÞŒRQS”C|:{Gz­U°M¡z!èª-a;^JHÿàƒGÅìßHr{ƒ+Fˆƒ¡@ü»#iF6¾ÌóxZ€04)Êå(ÀË $Qçx;ñ%‰ÉøÐ×íu/{ºbÙxg¸¯ @yÛ‚3d`ÞÃt8¥[Ðõ“ß$Êð¥oñ¹Í‡ƒ7Žë%ö¢0Üj°pŽ©˜±ÔÑZjkJŽ~.NÓ¯ 2?JÝáLÜff»#P#yè*JŽíí. øgK²MÀ|/›yïf0 ?”r/ MVô¼|Vª<›ÿé7Š¹Ð¯ ÅÎúÆúO¶Â°úïGLp•Ö¦U~М-3s3WfÈ¢Ç˳bíezH?x¡xWâ„Ò•Ø“ò©©§£êð“™–¡ ÊÚéíyð´¤×²Wz÷LC3®²ó¶q˜÷¯f,ý©¬£8A=IŽz¼)@1´íü£ïuç%$ÛìP…!\‹¤ß¡ç+¿ú^p¬/ÖZƒa—½¯þboÍSë.°4²‡þ)ßzñKÒúbX”ŸeŒ½DG'ð*£ÏìúŠc-¢ã¼'ùGl¶™)_2Oiø\ZÖ?, ÿkã¸Ì 0ïZÌÝPã!v-Ûá0/ë¶Å§âP‘•!ñ¤”×q•2ÁGql¥ÊÀ]E«ùLi¦t¾ŸAdœç.5årÌj›UC”PÔÜøVÿZ1ßÚÄ‰Ê±å• KÒÅeƒ}ËÊòc #ëw_ç±f÷·¶±ƒ²ÕËþËŽ²:’kleUå8hÆ8LýζgÚ×îõ¾l—ûuô£´¾Ö±ã¯$;zÑ|öÄd˜“m^?Ù1åà=IV·ï,å!c^,N¿Ð f/„AøCbm½+Ìt²bVa.´²ŸNáV«îÄ4½ab¥Üš£j4€U Dõ'» ;» ¹}jÿ½þ(xWššõ÷½xÃp€B«®ã w†Ç¥âv!¦ëï¼úÙHóN6ÑõVnÅ9(À#Ð[(„Í´;€×rF Š—PÛ½uÛ¦DİBà~ê]Ó,æ:J-Cc\Y]Öü‚hÈÚºíÞAûø4š¬åxÌ8„"#Þ#¦bH)`æÐÄåGˆ½biJ]н¹ `¥ê4Þ©P5&)î6 õÿLZ`ÌõÝQÌ=ÎQÒÛgïØ‚ÔÁˆ¢0$%†òCêT&!Æ ×i9©”8H8°AFŠ,RÙ›¿?”ÄyA$a¥ËW™ÈK¨nu´J»!¡8ÇhV+NÐ@°Pr㢤;|ÃÝ&¥ùF§{ê!Xßj@yÙ+P~Ýíí •/¦±ýBRÛ}q9Y.*mX\íGô¡ÎªêËÒÕéys€)°çö5ÆÄ“˜Û%º õŒ¡ñx·êµU†üòà­¹£‘\S­Š[èµoSÁ“Æ©7MŒuyLb #0ý[¸õ¼Y¦cËyžÕC80_NÜ}õ³NÍÌ;¨Z…y1có1ÅØLÚ)í`Ði’{²f¹f¨{š£$ŸÍ@í½”–vœÖß4!9Ó§¢ÓôŠ™Qýk("x“„÷Ùî„Í=h6Qüà|Ö³ƒEŽb Š-;x%:È\"^Žš}¹šQY~¦rˆ÷¯°Uâ‹vxm¼Æ¥r€u=Í…3vµÁVNÙ¯,jµâÛW9 *Goô_¡¡Ï‰wa{š™$ˆ>%ý1 º›ý‡3;Єísü¯1Æa°&Â<§sq!%9ß!"¶rØ.Æ&É6 š®]—5»øyš‡Ò×±'اG’n|õ8™ßF%tô®èN%Ä-bï×cQ/Øk.â,Ç…ÙWïÏþ¬èƒDš74ùêuKºhjøñ¯ÊbUj`d—W4í>†0L¯+Ït¶+Þ½­¥ª†îäGØþØ¿Û'yRcÄÜ)™¥Ñ§ß[ðLBÇ ‘‘üü&E`…ǵ,NëGú_Ö@sž ÕÃtAÅs_à»VÂÆ—Àåùg¦Qõ[ð:„ðÜB|W·ÒôþCl´ñÅ“(ìø ºÇ PX‰CÞUU4åû‘cnøÈÖ’0ÐÈñ%i€J#GZç¯ Cú³âҤĎ ŒNE$žV²Ÿ¼¡Oà#©B÷oWH3osAæˆÿÈ>AhFz"® åÇôx­ÎÝÛÁÁ }×5áá†ð~Ëï³´G÷­C§Ùà‚-’m?¾j¼OÊc±'xŒÓ©O—[Èåyþ”%¥vä¹»Ó…q·U!λŠumŸê²¾“\6íá‚”T/ **7äóž/ƒ^ßÛY0ñ¢ˆå(¨ KIˆjdá¾,†TžiÂ]«µÊþ§ÅJ!ÜûÛzH‚øNbÌü<©k¤rƒÛïIKäË}ƒjðNƒsÏ$òÕedÒMÞÍ´S»TæH;ÔI]?4iN޾ë×Ó8ùjG;½0Л”*{|d;oæéŒaüaX¹ÇD×*“Áºzü,ðþª¹GkÆÔ¨ž‘!URR í}Á½ù‡C¢t)>øFë}çk[œÌÔ kkI<íô`PÐÞ»+L*Žt“ÿ¢©kæ„j6ocádíöÇË*³üÅ#}o~1.'þ9¦y´·=§ógcGÛÂÃb5Õ'yÂ`‘IYOð&é½z:ÇAW8`g/ý’y„Øà>°Êm*û©M³±8>¯PEõŸë”Ã>HTQ˜¡ §ª„Ú«¯åîyÂ1ÓWô÷ߊgÑ5hI»Öä®Nz«ÓÔMåÂ|ƒ Ç"õcµFª¤¥òȇþXj4hÎHsé³é–{ß5QyŽ›pSGé ’õ*÷IZ·ùu ±‡{{‰/Ði5£]µ È-[’]ü•.Ž™¯„ÿ¢J_ tSÁN~Œ»ì:5‰J×l»­_Yß 7 ñ…Cõ‹B.º"@’Uf«hÅ~© \BKó/üQ§nIÿ‚+Z ;{ O¶„ÝjÝÀ/L2,óX·oÆTÎLžcbýÔ5õñW” 4ˆú’èyÿÈ”@d!•Ê#Ÿ‰˜çDÇÄx‡)×èß4br6î›U&E¸=Õ­»·vhØ» "‹.¡Cãê/ ^Ü5#Ã?+²ÍÇñm/Ël6Á7ëGÁýç`fíŽ9KÀÖ«8>ò÷Þ¸>ù‘‚ùNï´ä•WÅhªØ¨@ýY©x ޤû~§(=lû+Ô‡¨U#œ©M)=æÙ€MŸ/ýÙœÈIŸÇe°Œ& T"#0ÿ0‰Dq’´ân^ I šÔÊÑÜÁÀ«„GPíÆ+~«àꈙƒ›,qô¹åçÖ…ÉaþV_Ý@h@ëݳ²¹˜ˆ ÞË8 endstream endobj 564 0 obj << /Length1 2258 /Length2 23858 /Length3 0 /Length 25147 /Filter /FlateDecode >> stream xÚ´¹eT\Û¶5 ÁÝ-XáîîîîN°ÂÝÝ5¸»»Cp×àÁÝÝ $È#ûÜsö¾ç~_£AUÖûs̹ªdDŠ*tB&vF@q;[g:&zFn€¬œŠ¡­#‚‘µ…ƒ ÀLÏÈÈ KF&â4t¶°³5tr8œÍ ÆÎ©ŽfFF.X2€Ðèøá4yä€Î†ªö@&¥á_@ÑÎÉ™ÎÈÐéà ´5³°R}¤ˆØÙ{8Z˜™;ÿ©ÁBG÷§ÒŸlaz€´¡±•›“•ÀÐÖ M/G·sû0Z(ílF@sCkS€)@¨ PSSVH(+¨)ªPÑVq±··sü-"*ªj´Q!yU1P ¡¦¢úç¯*ÐöC¿-@^õÃÿ‡ç#ðOºœ˜ªª–¢ßk0\ŽNhÿKù‡2ÀßÒ>RMílþ"Pš;;Ûs30¸¹¹Ñ›¹89ÓÛ9šÑÛ[ÿ¥OÕÜ àfçhøxuZÿjŒ‹­ÉG;Íÿ*ðgQ²Æ@['àŸ$q»9m>Zù‘ôawþ°F8ÿ©iý¯p€ø¿hÌ þÊ•UT”ØZØ:m m? ]œÙ>~&ÿˆ¸8:þáû·Ëñ?4ÿ–.l÷qeºÖ^>†nÿ½b†¶.NžÿèÍÿ¾lc;[' 'g§UL-¬Ô;ýY3 Û¿lrBòRâb*ªt²ƒgK'g÷Ñ[zgwç¿¢ÿÔ•åp2²˜¸XŒC*fk"bgcó¡Ú öOûD->úälçèÁðæÚÊÖÎÍÖëÿÚM-lMLÿtÞÄÅžAÍöMJô¢?L°ÛÌ€ÎFÐt76gøC÷×´ü13ý1´ÁÇËÞÎ`jhíô±0~¼Àz9ºÎŽ.@¯:þ7‚eâ˜X; úÇfý«º”­©€ë_æ%ÿvýÏPþµQ©>v©‰­µÀh Ë oçü1”ÿÿì³ÿâw±¶–7´RþwKÿ;ÎÐÆÂÚãEþW„ðVJy;GCëÿòY8‰[¸M-œÍÿÕØÙ¥œ ?f_ÈÖÌ cbþ—Qíφ²þ˜ÜÓÇâÏáõábeÿ/ßÇP[Ùœ¬Œ¹€ø/ÉÝÿ#À /-+'¦E󦿝01[c; [33;ÀÐÑÑЖñc˜ÙØ^LSmtÿkV ô¶vÎ){g€©#ìŸõdg0ý1ý ±„ÿF‘¿'€AôoÄ`ûâ`0ˆÿ˜ #ƒÔßèƒAöoôÁ ÷7ú`ÿâü¨©ø7ú¨©ô7b0(ÿ>TþF¬Õÿ ®ÿуÑßèãŒÿƒ˜?Mþ?Cæ`S‹¸?HÍþ?XÍÿY?ºjîao´ýGćíŸù¬þ?”Yÿ~°Ùü ™>¤ý£Ó‡4»¿É>bílÿ!õcìÿ?”:ü~(uüüåôø±>Îÿl¼Învÿp¨vùüPíú}„»ÿ~Èôø[æG¬'Ðñ_Åþ÷¨+þ9ìÿ:Çÿžýÿ¹ þ…Uœí¬€&Ÿþ"gèìhá®Ãøq1}Ø?~þýNïý}~þ#[XØÎÝ‹Ž•@ÇòÑïMÊõ§¬>ÿ+×ø_7¤¿ÀMúoüçnÝÆ°+‹vÆ<Á–©Í¡å¾b…Ód\ôçU˜üšÒñà+Ӹآy»Ä@¢€VÿLò";YIn=ßäÛM²` ë·Í¶¤ê©;%Á=C_9_\D1¡ñ\uzµÀL¹eÿŠnbªéÜ­RÖÙÌöøv€Úø©WgÏS4óä;ÊM ±nEûz>„[ñLe¼ËÏ&3w~/XT7UY‡{ÊÔlkD Ž|}Y‡kÏÝb| d¿/˜ÛõÇ' ¤G¾?7Á騢ŽcÚ9%òB÷„lï! ÕTgýN®=Gø{_ï݆JíV¸  yyX5¤+þW€¦¤ ÉÍìýz™OêOo„€èS˜%èQV¾‚d2üEÂþA ‹çZð£Ûö=ß O~Ùß#ºk#èì’U”|FRè»$Ò˜Cè©’‚¬ ïô9}‡isRÛµgÇç÷ò°°‚s9i ˆØ#C$xÜ© sŸ—½R2;…€4É‘Öñ`2Uà3¬˜5üúß1pxƒSª4G †î¨UShP³¨7vùá6°0,Aswo3_ˆy!*—tiS°y¢ ˆíñBŽm D&*DÐþ±•ýXö‰FbW¢9çì÷ÀˆPâXfÒeK?’]<©Œ /ËÏR}¬Ôw iRÖÂÔR—Á*§“À¯Äª÷ê_£sŒX³†_» #ÑuÏùŒqhšœi9k›×2,¹Ö€æÜ_7 `¨—ì$#ç]?Å÷-brF©Ë@†|36œÓ‡8ŒÁƒ(…°¬º5HérF˜×‰Œìm¡nŸŠö/èpT£V³?Ë´¶x•“és®¿u]QŠ?Ñwõ4V‹TX‡ßXÝþ]ÉÅn\þë’T=SNçkỆ©´jìK®«‡‹®lÄS¾ý y¦}ÔCž÷í$¼ùß×"`#;zge€‰…×Ýá… ºœUŒ\Ä T¥Rf;U:ƒ-ÁUÌŠ þe“t¬‰×H®1¿4‡wŸ„^í:Åæ¨ÿV ÆO‰Þw±†´O ¥æ¸ay7kРó%}…òSrœA” MomÊ9Sl`µXŒ–(Dý+,Ö~¿c›a ã蟬AºÞˆ Ýõ@[›m‡h#I¼<Ë·sì [/ÑHoyHµ‘g2Œ:N”`!Wcó&ÌŒ´&ð ÌO¿'´#àVßP9€ªá0% ³êiË8š¡jÝûÅJ¨8µ=•5Ò·¨ê‡ef ïòyZΓ¥»âz8(a3ÒÞ(_¾&FçœMJÈ»³TdÆ,ÔÕ’×ý N ,\æ]ÒÖQhò¬¦^kìrÌ`Zÿ±Ð« %àù^õƒ )‡ÖLªnÄ·0\ç;D¬~ö©úP$0ú`ù*DâùFê_!oÒ夿«MÄf9¹YdpäƒplUFü^sVÕ‚×[„ì쑞 #G㚨‚t+v <5‘?{”éW}œÑ•¢ä¬I [œ¥úËu­­#j­%‡<‰è=Êp#V=tËÓX j­bQu—”;‡½_ r²iÅåùœ4Kò KJñVÏóUô¨¢®ÍÖO+¯žnõ_I=éÌ6“aFÓ‚*ôB¾Nç[Vh†¯Cdw@ç$g— ]Ûªúäs&㯞éX>±u¿×´ã•|®ùI.!¦›ŠŸÄî´ …‹b÷²£Xªk”Üc·®s ÷ŽÉ5 ¤ ÷ –ƒQ@j²žíP¡6$r–t1OnÈUê§šƒA©‚æº:®b`¸³ùÖ¦,Ñhx›¥„¦ˆm—Zsýↆ€{[­ô:X4Þ«ÊÖ†’î‘16NYÀK §íì+ôyéÀ‹å¼<}@‡b$#•ŽÀ2¶ uapæ©ÃIZÕ„ÏöO{ߊ7S§hÙúW¤6‚|«­<̽kûæ2t=~êo”‰Ü ýðRóô ú§Ý/ÊG§þ‡Ê¿ <æ,àSZbŒF‹•jž!õú4³/¢‘J‡ýêé¨#<þ^^G:,XWÞfl ,|ßÙž…¨ SWÉ*ý nÇÏi§KûI ²õÇmDŸÞî+$îU£âx*_ìÈ~+Ÿ®5çÒ¬诪=¥Å£EØ,aìHKâJH:ãž0 \½AC=J\§»Õ„@n…EMÓ’‹uÕϔտY⢜˜«R»sÎ8È­†Ø¾ÅÄR¤z,Ã3¾Ú«Tæ ÆO–ÕPm¨¹ô³Ó—?é·íØÒJiÃÄÃØ“f‘Òh7]@Bã0_©ÇÌN‰Ã?2€±³ép+ø<`oŸÄRÃtšŸpË»ã`Izü5©çò¤¼ÖaÜ»J4Œµ'¹ÝmŒ Fúc{„˜•Â".´Ch©Ÿm`L>¼‹o¬{Þ*Jä&)m±k!I(8 îžî³þHã¯ËQ3ñ*Ä ä—¿_-N°-6KŸwî„óàšç…- k±Á2T·ñã¡K­§TÊ‘Ú>q~[R?؉p®«EzCàsœÎ ÿ¾8Év´ Žx¥óY‰}гÑÎ7/"ú3õ´!¸Ù¶` W*Î!™q5ß^Dø­qG Jóírg3^Js›sïn܈pæ8Þayˆ¥ÙF?ê.òDº8ìÏP;ÚOB—ÁÆ™3a:a ^b~„Ø®U5Sàí ’Ík›:ðlK‘ÐðÝü”¿óäì¡dvÛx­¨9üLÃ8L(r‡)GÞ‰¤ yq £CÀk Zw9§&ª@p³úºÔ±ZP¨_/0ãçÁC#YD)'µ·´U.|Ñ!–ç™Z ò$ó!R§ü ÂݪxŸ³H;‚Z_‡Cª_:åz¦±(†úÛ¤î ú£°–Ë“:¤Ð dÔ¶sªÞÂ|9r¸EH vè󦸾ž–y. ÛÀÇ=ÇÓýÐíô~´‹N§/ å~êtëWŽ:…Y;Ì L,yw§_ŸH+˜$ô¯ý=ÚKÇ­ê,'ø5ë°’0$Xö^þ_¢M>UÇPätçmvæpüzÊo†ŸH²¹¼WÌ@ó?M3×÷G’Ÿ®%óÏ&•3 Ьƒ%"±7†yˆfV1FÙ‰¼Y—AÎ A&J¤¿b@³¹à9øÔ¾ç"ûÁ”/Iõw·K0\Bô=lx0ù¥Â!Š+‡ ¸;bÿr]DZP‡ó ,¸ö›ë7¿'F¾NÜÜü Kƒ£Æ¹ô=xÈeüK\:Lu—Ίô˜¿‹¬—Fÿ:M&5–Þ= 7ȳ<§Dﯧ,ešÉétÚNqãSߟä›àMÇH]7¨ÖgD/3Àg0u…ïOuý¥+2QM^Ú «|¿ ÷IÍÜ¡ÞæÑ RBN\Ì`QñnÕSwÊÍ~å¥z=ö:´iÑJ4=íðˆ`ÙçJoÃH.J»[À¼¤ïN½˜• ÃcõàäQÁ03›s‚>ÿàÈÞ¨e"KHPŸ–¸é°i(%öKpät·BºÏ5ˆŒÔŒ!À€ùü;òËøã¥Õá—y|è–8z(¸¤w0¼]Æ~§S=oŸV‚¾sŸ}4 –á³2öâHhª Ú-«‚BŒ9ò£µ˜ü¤UMôHœ+†.! Ëp¯Á¤ h´"Ù1ëynrÇÌ(#_ȶ,§yA-T©ñ¯«&6 (Ìtç\ÓN5äö,EòM qõäˆrÛVµK]¥3-õ½tº3jcjÝŸ ã1Ö@./*õ•P]=Æñ¸Öü@&œ>3ï—æÊîåÀ£r>ë‹õF«8ÇWœa¾½ˆ€97;¦!(˜‘Ö¼öòḾ@Sì¾(™¸Cd­u-&šKó9(Y‰¬ÊçùÑ…ÁÊæ—É!/år—;G÷ {,ž>ÆRØ@z¥3ϾL:–"NÛ›NI`4-™Ìs&S[k]Ô/™žex-‚Ê¢ášyêƒ1¦Òçb9Ëü]¶n?Ü¿{%-*£ðz<=W‡:’ž›?7t ?Õ¼Ff#Þ¡›Å`<·Þ5¦ÆQ9ÒßÄ>ï±ÖIµNwdPn^Õ˜ÇBŸVq]s~†šQ’>-x†ŠÕ͙಺÷íDÞ#x ,ͳh¬ÐY V­y\šÉœ¬Ú™ûFFÒ~K<\½°„rî“…—YÓûì8ÅÐF»¨FÊ·qüR*ú73×âý²ç:…h¤®Š¦yða>J¾„:šó¥†õ¾Zí‚­žü]ÀzŒñ¨Rö` *ükœãËïN‘ž àhpyv[„ÈßÊù㱘©uY#dλ›¾ëåêPeóRžÀ5Sƒ=øŠu«ßåxë¼uãùØ' @ ·ââk}­.VMÆ<<PZêí¶nN@êÖPq=enùÐÕ´a[‹ÜÍwòl?ñ+of/ 4×s9 ý‚Z¸ótÖäúå9VPyzWÎŽq••å½¾$-œÚ)±"Û9Àk9w²8€ÎÊ&)Gª÷»•°ad•eI¶E+ÿN™ŸÖzªZm1ÑÔ“"MCbNQÚHO¶è¨ï0k&@b‘·8¿úíÛ¢À–á»Ä¾ _‰õJ¼ –™õ¡k¸å¡Âñí=¬b{4˜öÔã,úmT­@_Z>Ó'fJ#=¬Þ1åL«nÿð;y[¢®Ôõù蘣•*„ù‘«ªK;ú†v]húËÉê»Ô‚'yiÍ{­KS4:6sÐ"¿W^Êüa» ÏdÒªV6e?ǤèÔ¿=Ýë0jþVTÓbpn#\zˆnJ¾^¶‹é£Â÷!S–†H_ˆq!º&¯=ßEåðýéBßâ:YŒˆT !yaF4DÔ TQÎþüB(%i“*í0JOw'êè”’ŽVM¶!jf×E}>"oÉù³$û Įĕ‘ìHÆ©iõý6×~Z!Ë,‚ì4vH-a¾÷º5çÚўΙªG›Íæ«ÚÝç:åk<ÍöAŠÅ(¤ÆäÞm«’ûþ±Ê­Hg¹>FÑâ⻌’NÃKž¾A]“"U¨OµÌD6±)gË3çØó±gT'æmë à2½îg‘w¨cŒl—Y´\n‚7âðfþ¾:ºâº¥h]ýo8/ÀrÎæTØrÛne‰C†Ñ¯‹§ùY²JÔûgþqf0;qÉ`:ÝJŒ•Œñ™ M+lå8‡—Ð<ðû (¿ééEGȤIö†ÈÅAö´ò¾ÍÌO¶í#=u1Ý]2v’>‘‚·=²ÅvÇ"”ñ ÿ©›³=J ¬6Û±öÝÝÅ=,ôÜIãÐÏ‚vòsÁ§±ó¨Î¢±ÁÔÀ•oá"\Ë!Ã<$l ú¸Ñ"¿…q<Öë0Æ(€$ú§Ý›ç©I?úV½ ¿ý~À”›¯£´q·ôC§ü>Aú+ÅÀ"PxXÝ®çq6kB*¸E`&,7ôX2ìQJi½46þ~47«×[5[ËæT18l;/‰t£[MÑŠIèQäU4bW¾æ‚B˜hɾÇQQÃ'M­¾Þ_Ê þÓG14ÁÍF™2ÂÈô!¿ç”Š®ÅÔëɆ ¦K”8f Ê.ƒvŽð{yÞÁö@èI÷êÖù«Ò†/íÒ:lˆ<˜KH¸[// ÈòÙíä˜tõÁz‡ü[ÃsYÓQùàó»[Ã3y÷cö„Ä›„Ãa[±KUëÕp²¼Î’žÄºzîû/0nžVá )mJOôzòJ Ì7™?ÆçúÒ|î+šä$vaã¬>5´”R&…^Ö¨½¯Ÿ4&ÅîÀ}gd´¡EÑä—eÖ‡Q¢3¢!¹‚íYtIÕ,‚YÃsJÚàVóšøˆýERV¨ÎÜðå•—&¯PbrËT¦d ÍE…ˆ„UjÀ®Ü×l•zF¸×§¿H bÀŠf GÙ¼[ >c€c†óß9‚¿²)^ŽºÕ÷ŽQD~ðC̼`‹2Z쬅 bªñP#1“,6…Çú|nI’C1Ž­½¢äxæ•þ´692hžÀ2ëzÂ7ë!»³,?_®uvo¹-Iš$[×H‘év}t'r˽/•jŸ;w!V/vŠR-n|U è¾âÑëšn÷®ƒ‰Ê’\yåÀ_9dsâÙÎZ{}É ¨n&-ò¸É"ÐPºðT7Gç»M#òfŠSÏ!OTЧ*¬Ö €¢‚¬>‰Êç™Ü#¥ß(C7k™NzÁï)¥Üb¡ü &Ý ¬Úx^VÞÄlÌ¿"1Ì+V‡aU¡(L ‘œùnÕmUÎ{аóü¥z߸¸UÂ75ü;i™™Ž¸Ï½j õ(nÜ!™A—’:´’f€Ï¯Yî˜âê(kog5,Œ„óGø vuÅš }|ååÇèùlæṙ+>º× ¿»m^GÉßPµ”ûãü½è‡·3‡;VéLy~¢í<Ë౞2Ò_Éç^%‡ªf,…3.p°ÖMÍí +\þdØ’9Ò«t¯eåuËæUÅïb,–Ý~‰5f£…8’‡CP)bÏò5m…%È :;ZNÓä ?hÀ(ÈbÌéØz2«)ÞëIë6V˜ñ¢f¬ÊB¤5÷ÁÏøÑÓÀ:8UjEÔ¶̬ïxNíûîxššážÏµ™4^a«3ÁŠŸææÆ¨¤Ê©t›@lâYzqõÄ®—9C0(ó|3>A·XwëišlÑæ³¡Â¾'ä—ŠÖ$IûbüЮ_ †J[oavÕ0ú%½…éÕ Ùç'þÜ´|“ÿ±\y¡¬û¶µ¯,£ž%ñ`ÇØîµ,˜Sh3ñƒÉ`îIcrÓÞ8”g–bgBF$êEûˆXöƒOð5[>´Uˆ !ÿƒ€u·6¸òƒCJ «±CŠDW›Mœ`5B£ú —Š=û[+’ ƒB™œÏÈ%ÒB­åû”†«(\šÉ‘øuŠ…+”W•EEtßyŸ5ÏaÂ3‘½6mNñî`:žÚ )ãó§ë0Œ½4’m¥¬$Š]c-©TDæðì¨_+ë*Äd¢8­£ábÖ¤­„ÕZÕ…§æ=ê]#H‘?øPI½Ù÷É¢¬Öƒ+Gîܼy–9„løC~ |.¾Ué Mn‡ÒàŽÉJÀlÔIäC8ézû!ÉsN€èM±ÐÔ‡ §gƒ°´DûùWŠªätàY¤ X& JvY²9Um1y¶ˆþXÔUO9ÛD!â¼ö<<¸â¢VÆèÐ Aƒ‹Ã=ýY õYCg.¯ã'zýbq¦W~iécøôóL$³Æc÷œH‰v‰¬Ëï`Ñ3ïDÃby†ëÁ‰¦cÉÃØŸ‘'–œ[õkòÄ7CÓX•ø‘ǃhÝ7Fø—CÛ¹`üøŸ~hŒ¤à ã}‚±'‡fì:ÆïÜÞ—‘¿¨Ì¤j3š;bsF8]r‡Á[dšáö§mi^1(3 z®(‘Š÷0œBb ~!ë;ëïhxÚÂ5ÂL­ñZrc\¦+"ƒð›-=Uš2èj…ÿ”Vý÷óWCV¥{d8ýǨröWG·Í;ÔÞÅÅc‹q¾="ÝÃGh§ Ĥy6õ‰-!½HkaH õñ•I)ó':β'Å[±;:ÔSÊÚo©›¦ØAhyÖìDÕºøÌRlwÎãF°•wÁÚO)êÇ¿IÇ´ Ú`¦½y•”y¥·1[§ÎQ´Ä#Û{­ª6³Fp6²j‘¾d£®tçÉàl=_~?èkpB3í¥ïkÉEy4É)è|QíÀ1¤ §—¸?tFF—VFò3m–Nðƒ5ëPû)ÛÓÖ¤ CðŒyb88I¤UÏß‘ofßø_Ÿ¶Á”;ó9Žb%_åM˜‰Ãz¶4"Öú*J(ßhì9q{WÂÍF>&±«ç8™Ç œê­Ž|vàŽ?dyŒé.¹ÌÏ¢ú1¦Dæ]‡6…†ïžIƒÕ,Ç$4Žñ†­‹nÍC&YúµJ-—å%Á½ðž¿Ùœvæ68– zÇŸ¯RA(¥ç¼W(o7³J¬Œ‘k,%MÛµŸo:)”)â9Rá¥sqÖåWNÍSE”ŠË[®ŸÐ}Àn¦øÎ]a:Oú%j'—¤¹Kêè¦ %C}²sš—XÅžü²bò2j:ôÓ¤U·0~½f£cóª)‹:Ö¸iÃþמÕdVhâ˜KSSBûjîúv¢ÕJÖ›üþ˜F‰rî®CÆ-9ø4½¦Wo¿?ƒ­ädÀ¨Š¹ë £O?Ć),-Ä—`;ƒ9! ¿ü¢Š’ ¯¼ß¼w—8û^6b÷ˆS Í:Ú²‘°`àõb}sñ’íÜE?íÝI“ü6" ›ò‰FMÅ4¾]MÍq×ùîÖ@Û„S–A9%ä x£—Ç ÓUˆwneË“ƒì€L€-p4BÉa=ø5uÒ€[Õ¦;³|@X?W•õ†5övöWì\éRk¿v·c¹M¿ÞÕV_eÇN@œü*-_Œ/æ™ȸ`3Üö(˜$è›Þãž`TI°ºcC`Ÿ¡Œ›B¿2Îp!–¢€+gšŽÒI9¹7ð4Ÿ‡o]›Êñ¾™Ñ“8‘­„©0^#ᦚ¼SÖ°wÑ`ô?ôl»rNÃ-ûrTŸ¤ÒÊ}ÓÿÙÉ›—GP<ýZÎî*Ñ\˜jÊŠÇ‚iV{´Ý|]‚ˆw“1t¯‰%oároЬ^þ¾Ò[¯t´sý·Ùu³•#¬ªqäoâÝM#7ªôŽï“N¤3~>fñhþ¨Þ+ˆ¾ñ`ÜXí«ÏVƤƒFZØô±`‹>N1À§Ñøz<$h±SŸí5^´Ö¾`ÁUU5Ÿ¢fZrLL_ÏÆ‚!’mf­j-žW§ˆøºIñ·:ðtÁ§lÒ%¸ÖæIêþlën-‚6³˜m3 aás{+cÆIɤeÇS';³üç“;=æþ·EÝ7TíÅ¡Ø%¡µyxä«‹2r¼ä›€£ÇÁÂ<›]†¾—(HU‰ûý¸Jü®Ÿú!Œ&FhÇÕZë{ïÃ/), SN ï6D?p¼d½\’¢·]ˆZ¸“qCä±àO)ïeL¸3»!åx8phòˆ¬d‚¡pÇÊ(ü-pÛ”g3& Kü`Ö+ÍIHõ|b’­â[Æ!k‰åã$Cì6ÑÁí]Ê ̨MRVSW̤Ì<¬jS .µ% )(¾xgˆpwÀ'×%ok¼­Þ³NK‡DDÁmÓ(%%Žþ¼T„ö:2¦š=Txê*5xp¾É˜FpŒÒ4áÃ,§ÅÔñ›:œš7"– GXK½=MƒÌò˜”H(h‰ÏCÁù—ÿ¶ª@‹¦Ôt)¥=hY}aÿ ÙFyÙÈv fÑN§Æœˆ‡¦?c¢¦P­öqZäÑ2ŽÁêibŠŽ T™ínÏ…ÿrÃrýLlKÄmžºÎa¤^I¤·°°‹¥U5¤tZ—Ö¾Ü}p•,â¼Z1 Ê[ó!ÀÉP7žËëÉúz3,9& Ý=UÌyŽ tÕàë—8[äÂ+ +/KT?o(f«é„úŠ{pNå¯Vü܉­qi”äaKËSÂl3å¶ÏY Ô8ú5?W1GÃb×m;l ó,0XÃ2&§‘U±þ_©ž•–¡ÜÂ= Y+¯á|†«¼C‚…¹‡ámæ¯QZ2CÖRÊ/Bª‰©Iø‡°Ó«‰‘©Cƒ_$–§©÷EZ]EJÄY&L{*(:Éö¿\5ÂáïªNݼ³ÜâRèh ¼Zû} ñÚË ðåë[¨G¹-ŠkFåj4¡ñkëÁ)â<íÌ“3›ð¤š®`—qÒô@wÔà•MZϸØ#äºÄMÇt ˆ’Åž¹1bZU_pì,Òp¢‡[×^ seð¢árö/ô ™«@îùn-©FÈäé@ïß/ ¹°ú.dÑ·;6"4©öªçoÌ^˜xÿà" U4Ðù¹ImÞÔŒ¬fŒ™îs·DÄ©Jç² _¸ôÅBä…u -JÅÃKåPNPMÔÖ>P,¿:Wñëuö'‘4—ËeèÜÓ¹Pw W$ûxñl„RZÁ›£Ä¼‹htž¬¦×ÅK÷v‘60bUÝ7æÚ‹eï;3äS(Ò_ª_w±Õ¹#*èP6+8ЧW䔃Ùw}¶:Šbô×µã8Óy™š“Z±Ol¢}Uþqâõ­²ýÂ?º%?ƒÚçÓ.}èÄE¡68æ/?Є ”(¤T+hƒ\qšþ"<·çÀ(LqnÏ'ÜØ)·~¬  ÆÅZƒ·y“½ÇÞ%½á—Þs‹x ò³aýM"è¾p ϶¶:Ú°ý1%A¢'ÝqHÝ€ýod)qÎlòRá…~~íÚBÛ•‡²ƒ•î©n‘àm»ó>ÂœŠ´ ²0JÙñ×-ÝÅèû‚ ½»n áQn/ðÔrÛP½uëI>`Ö½(ˆ»¨úÉÁDh`¥]SÒ3û~Ê’¿Iö3–øÊÉ@j?¼ËÎÒÝrÍ5Ò¿&½Èîॉ /ÚìǶQî ¹ ä`ãKÓE£¶ÆÞÒw éø¾vÔ¦_¸¬ŸAç=¿¼ŒÌ·ìpŒƒœØëº3Éo)ˆ†Ñ=ÓÏDÆMi¶|áÀÂe0X {q<µ¯†A¾Á0áVG¼Ç^vñœ/’¸å/àqyæH=Æå¶¶|m~ 7q»<ÿf¶âä¾G˜ ýñÕ‡ÃktP  †DÓœlÏÄﺩdWôê’Šš²¨*¦O†8ÁD³!YqZÁèU:¬]ꔓ²øåŒ 0xǤ%ÿ‘H¨Ž„ifo˜8Crç֩–=dž×‘½Œ­r)„B2tæF¯:Rzˆй©ŸöV„!ùaÍj•¥~>f‘ŠÕÇ2£#q&^>J½Éc•ä~:jÊ*ƒ²;W²ùÁŠªz]àS«û(¯o‹r•á¾Ït6Þ*ÕI%Aeí|ÝÉ& ‘™¦u´-¾xu5ó°¡#l…wF;[&ˆZ&­\òjz£¿ÒüÆâ?F}jÇv¨ŒŒ}#vË-|›ü± ¹{ º¿}Þ»(ø— ‹‡Äå#%#§åÚrõz Ë—sÆû“Ëñ1N“ìç[«+{±EšÕJÿ5IÑ›>Ÿ9Ï_²oY63zé8¨O¦/Ë8ß Ì¦`f>‡eàç”'4üöH'0 ð· ú¼jXO¨ß_:Û7¹#÷Ù¬³µ?Ñ„3¨)¦ªÄÙ žþ³’Ì©6U´#L4‘9#˜RC2­H٠רÒ<;ÝÌ[Z;5!CÓǼ¨ÊÓ\ ôano6ÉIÅ$ʨó5{o ¶/AñÓf ú¨R¢ë±û…Ü%ÿ!ÉâÛ£ ÒoïÍΫœXWGÁÙú¨- a$Å6 l‡+é×Û3¿o;_ð ï‡æ¤ªrtoÊУ7²”ÍØÛâ°‘l[jÆÚWÎú©Õ½îà+E-lü§ÄØ ô’ïú7°ØÈœFAÝ$|i@ZF°Ý@‘Þ\)ø`“Fú75ÈØtÝ&õdz1+DRž4Ä“§GÈž¹â<`·Zækèv(cÁMyKû5èVd8—r¯AÙÏDË6ÃV)rdŸTS&L`fèãf::d–…—1×PÕÆÉ$wÀb)Þ5§u`UÊÈéÏp3šØ`p»ô:lHŒ¯Qpú§# 3nlÀž±Û ø»&¸Ýχ‘7WÕ“Hx@Öwˆ££pkø¡º!Vú’õ‘¦H¸SÙ@Ž(I›Öj­.ú/J‰yÑ»lÌ‚ÕÓHk?»ÑìºÖ-}©%D,ʼ֡áLä¢kI Œe²ocïh¤š-Là:’| m™ÿ$±îõZ–˜QF~ÛÇ‘z]ie¡9–dó wôN ¢DÊ̘èýñ˯Æ$B òòuÆOÛR"í¾Ã×1quc#=”éÌß}"G‚Z ¬ hà)ýÏQÍflÜÄ…³†1bs(×):­’6Ù Œ3¹aÿœaÊêq³Þ™ÚÑ"ùüɆ[ ÜÅ㕲ãi×wåžû¹—ºÏ_5¸¬ª&Žöä&}"ÙÖ…Siœ-|—Šý÷oãâ ªHt-ƒ߀~æ*I7èÈÌ`’ tŸ¤u,ÅEÈ]REÚÐ)]&{üÜ6LÝ–IF Nï[Ó.@ÐîÌ?Q¬yÎ.ŠCÞãÏ,ÆÖ^×E&䑜#­F: †7›nռƖz.{æ|^ˆ~ªÃ/ÇwW?-µg5i{k÷² /ˆáMµ5é—dˆêhí‘ùhüõW÷wáµk—™ΰÿÇ©\13Ó^ŸB@D±¸ºmR±ÞT™/šýuZê€ë2T{þl7Ôä Í]îŸqÿ5 m‹Îœ`˪V ‰7|…"PàÝERáäÀ'(¤n}_bzOY·ü]ìöQÕå;î.Y* ½¯è•.٘ќ½]íe•bõ@LM\î×»ÞôÌðyŸõižÝ…¢þ’³Á'ëF ›3°ïG šÙ#mXÔPÊóÛ—‘QÆT™˜jæ7BÙ³$¾m½ø¯:Þ,%›riÝb Už5nؼèÏ:®uQ|ÂÀÚyj>«øŸ^@xgßS>ÜVH—è.oØ´–t1q|µ"Ëô…BÁB΋r=™ñ@:¾Oq˜–=í÷zšEëû㉵ Lþð¨‡ë½¹& .pÉ ¢ ëìŠ"¾¹Áá#¶Âªq+ÁÝ‚d9 ærŸ*ˆ²•Ö³×^Q|û’Ð[0L,õ’‰O¹µD‰‡É¿J¤8ØB³ ÃJnæþX•ë÷c{u¤}ÇÙ¢­!•p=ü"PŠ…°–‡ê‘ÆR‘ìkU_5ÍÌh N°ë•óf%©¾C×B’$‚Ç:ÿ¡¾3u»ØgzE‚š½m³5¨Snͨ^¬-1{ ¶`L휃H×F` y_±Õ]I÷ ´ q“WWbߣçñîå¹Tw5y\W£>æÄoá§päUÞ3Áý´~Ðùúýçj"›û™²{ãÒ‡áÍ¢glçšC°#9xè‚P‚×^û›:ëuª=‹xð{hy êë£î:õ¶ÓC ›ý½¬<íØø …ߌï2ôíúqtYúsXB~‚Ü:t‚Z$EñEǦܯ¬ mjG‰–b˜ ØçËßäéG}†Ÿ‘¹4Ę­9ÌߺÿEÛ,¢¿€ë:ÌäDÎr6ËüΌ‡ZéÈ“WÕ½AËI´n‹.•à'ñ#&BÜÂÀP±k)ÌG:ôl½ºž†‹àòíÇX¡Ôº\يžÆñóˆ!”Cpß>ŒMMT'ØÎ)¿u¤«çg(u!;>£ùø¥Î/Ö1ôÍð»gñ”CÞìâÑÜåœH‘Ý.>j"q7ôn;y™´jkþ‘E¡+Èî‰Å8œ9žæм‰0Ä+¾z¥ÎgÓ©Q]g½ÓŠS*ýpÝù¸.DÏ?ü™ï`‹ø‚}´Xsbb—bÖHê (è{%²bE(ª)æ:¸ÝBôw+¯nÖH˧ÐTïõÂJñGˆi &IztÑÀîƒCl šJ©öç\·g‹,£'^u…‡jÊø pÌÑŠ^V‹|%¾wŸÂìõOr^DQ¦‰©ªKƒ™ÅV`>.—þ’È0I»b] ö>‚émÏçÚˆÓÆ²=½Q4M¸–\V/•´ì0Ôg¦fn#þÊ”çÅ…Ä{ÿƒÔvzglW*p(8 —tUab Êcê) qi:ãîŠ'¸¶[^ðBMqs±'–#Õoÿ4Øæþ›ÝªUõ¥Þã`Ò„ž‘í÷àþ ÞYÛ±*t‹Oñ*¹òZ⩳.Wk²B4û¶ö0e»á/ê ±„“AÜÆ¿òcž‘[leÕø›ÀaBÛòxÂWîmž!ÌÇ¥@àl_N²*ÕñGÝ«%L^ÀäY˜¢Ã ùè Éßkp`“ê µe¸1ˆýëÊÒ“¨Ô¡a‰µ4‚xÚð´‚=»ã§ ß3:‰v¯·?à2- ±9ÙN WÝåœFhݾ:Þ¼"Ug5ƒŠ!ä>ëöÑŠÁÍçPfF "‹&$ Zìò;i‚Ù•×â"¯GdkÜF‹³Þ†§'LJ±8ÊùOoTÄë=wwîJc¼üÉ)íÏLòèbupÃû¥ ˜sCe§ÔUÉ_N­Y7Zçe3ì¼…é®ìùÈ öè½Øwév|GŒípÙê& $âþý ã;žà@¾±i­ù—ð•Üô䯡GœÞØ£¢7ÈÞDŠø@듟(´€ø¥_½4ÕWm%ü]^K (Öù"EßSrbÍ%;æŸæM¯)|‰E±à<ìÕÙAÞ™ŸéªÝ:ÈÐ8¦_æ^š%‘–¼«úì£ÍÁ±DJœ6.ÉDÂÌh&÷Ùœ•ßßøP­:ü%ÐÞ×L¦[¼*OýäÔä|(·}½Û°9éXÏ%l«ûþwpìs2!OîTÌ#ª~c›R„—Áps.Rðcj™«&‘ñ9 FXVAT1»Ëëf7¿h´_îE³ˆ,˜4IulôôcÜ{ tÑ<hÒRaBÿh2z}ïÌjf'ÊôBV)㡳ۺøÓ÷xX›ÑÆÂ1q„IŠ¿RöQQÒ=sÞ=Pó‡açhè&“º,šÉß k¬p>`*àÉ+Ù®‰¹ö·Ü”-s®¦Çæ}¾OC¡_fdtù¨° ß¤4€£ÂH É 4ƦoxÎPp€YðG,uédGvùˆÂýc6md‡wI2DZˆ¾¿ÏñÎäZkÄO~nÍ´qW_±¨£8g…™ßž?)I<ýù¦s…kÊÊn®Y)DÒZ…¿¾}±QßwÀh@+ð\df„¡7;æðê‹ï\Á*{ºW•1~E6´l[ÛÕJ]åqÏ0Y˜ž û=°ûkà„º¶|•7ÌEƒ¹îU€W<’Øð$&ƒIOÙK"of4Zš‚‹_i—pb~r=€p* Ê[5»lm€Z§B¦éBÄ@ל…‡·íïšÈ5ü4×g©P±8õä.(ËXNØ)pÏþ®Áìk“ÂF½‰Aø°’d,$Ë—$ôÔMç»è³ Ç«PÝê ¬…+ëS‚­&"õšf(QO3ð2ACBE #òpÛâ!dá;+¦âE⑊q8-ÀÄb™¯”‹ «d¦§ÀÅ$ æ}` 2"À3*›1™Q2y;ÐN¹ÀÙ8ñvÑc[Z{AQ!Ã~\¶Ð>’ûÝb!ñ6çýÍ.#¨ÖKöŽ/ë šÈfpý’ººSSB|”IOÁqÈ.œwïØÀ¥Ò®hg‡^ +øñ­õVRa›¹j »¦v‹‰X…Z4ÖNžã@7:®*ú{47œs«—Ѥ'çcÁ!†”Ûõ7§e†ŽÜGêÖmбUU 0j¬6å~KOPjV*ž» Hc"†zö§[§€X#¯¢sN¬Ç”T¦ãxÈ?»XD£ )pPÏ4uMÐÄr¸¬³ÄÕQá‚xRω®‘¹ X{êQ­&ŽµÐ´î²­3MÁ³žÄЉz—Jlµ›õ¬âÀ˜Ž‡VfKŽ[ÂL%vöVÁÈrÂE¶â`¾`Pøxî-è–NI´P1VÌþ„Œ²ÇdwãÐð93nP™bt{ÝBñhLŒGŸ}wsIÊ6ó@_¥`cÑ5œý¤Üh¥ðü£ÔÖÂY‚¬Õ»N²üoG·t.C­vlZmM_)~^rÓëa48" ËPä‰WËÒÄF²i£ú‚ÄÕ/€iºÄ/òæÆkÇV¤\(+.ŽÅÔÙ•›úˆ¦Ç!ë¡a÷n8"LQ ¢ë‚ªÞ?¾U’¸—¤îwcÃ|ÿtrŽ¢ßJårè‹ÉB^ ñ9¤4·gdÀŽ[ÔÀlŽ<Á…SÄH9ÈÍ@Þ…{‘ Äjp€°ˆãµýÛ¹} 0¶c‘I>†g|K!|´nÎP¢þsˆ¢sé$ÖW¢2ާs°OPXs³ÕýuåýÇá.–&Wõ\É,uäMpðÞ$ûm§„>9 lœó 3EõõÌ$_ˆÕQ ù3ö¾I¯7—Ø“ö² 9EÍC;¨9”<‚Ž ý»Ï{ ç” 3pwí'ºðǺ–I"ÜdYSy; „ŽìÁ™àåýWð oCSËÝDÏ2²gÅŸÚAʹĽªŸÉÑ~ýµ\CQ PÉæFPO2t)%8ó zV7 W5:7]:˜*µ[b‘¸4ÑÝZsï'øS–^B:yQ!åk ºæá§jË”î¸pN_ÂuK¾µ‹ðwäY6šá\α-C:Àã?ãE‹F-ú®Ô¤ ƒ§u‘|#¾¸fò8)gÇÒnËÄÏŒú+Ùç PÐ ÒnØÖvª`|`ªmK €Kyò|íÍ¿õˆ…€5éßr¯µöYÂI£TÙŠyŽàÕVú§?p³m¹Åã1º˜úè(ˆpmœ£ôÖe?çsñtT𖧤X³‡¥‰?ÝÃ> _xÏ•|é+7+Qò›øC;KvûF,lÉÞ¦”.LLWü#½¯Ù{ /ëuðqIôS;’WÞ©ìŠý–ÕÔFŒùBƈ·Uö0¿¨ È·é|Õ¯û•°°Êÿ/8T­£ïÇ´{Ôd©ÿvÞ.€´öBV}Bô5°$fQ¼˜{Àô$ñ(½˜ŠS¤]ö5¤>…q ¯vî"ÝÂýr‚¸ºÏ Àè¿E ê<åÃTe‡ ÀYwñ+èˆ[æ”]m6«lÖRdñHn,¼%ŽoÎcOVªÐưï][ŽŸó×Sj7TžÚ­BÞ‘‡ˆ0¡ H‚aðôÈñRû” d,ÏàñEš¯Ä³arô.áYw!ú¤×•yæe±ØÉyQú'ëµ*uåôÙ¬£º¸ÖÆÍßf=Áø›ƒ˜AquŠ;ª#_[úh^S5Of¥¯Ðãî›…¸eeù¼Š”_H9ÊDˆZP™y$H°¸á¯ß§v- Îôþ?2‰ëÅÎÑåõ‹Ÿ&ŒÙò[åí⯒#?v¦€—öÞ¦à{ƒy°×ÛêÕñ&&5{pt @h~Glð« ¥…·&ïÉ;õæä;>us#Ðnv‰•‡^çœö&J¹Õ¸6À ìþã­ 7+¸Çþ¯SÃÁê¾MÌç îʧQŸí4‚BELŽò°xª|[COŠnxåÁq@æ*ûŸ*ÂlÁÎÔ¼Wõz*0ƒŸg믽Rݹ\¢En°\ ~e5!IÛú ¾Ñ[txX¢Ë¡#ñ¬úÒðZöNº3ôU›’ëÁ]‰¢Šøž?JÆWXEíÄn^â—žxé”þA­•HE$˜„¹ß¤ú^ är’¶¾>Ýämi(È)ƒu¿¯ÒQ8[ÎÁ‹½roZœîz3¸Ÿõ"hPÄÕª5˜­¡ÐÚ@‚µ¤Š„–©óeŽO¡‹Žø…§·ÔÓqùÚÆ>è’Yo¯zC%@Âeë™6þ•Ç&E%ÌßÏh%B]–à*ÕÄ_oóòI…ƒª¸¢HË>ñë+_1¼’zoó©o~D“is™$‡o[ÅA"ý­>½þ_øQ%½›Nƒ$œÁÊY…r<‰¾ÃO.–{ÍÃÚíKð´2ÏW+»—XJuÎ[i}B×փцoƒ{4Ï⾕ە ® kîÕ ! æ×ÚlÛ¬¸°âîøl”Æ`aòyÙà[%a¡p¹ðÐK »R”ëØ6`‰]XÆ©d‘ñ--€ÐèOö gø·Wm,ÜkJì£Vpz¾ÁÞŽ ëd"sz¾üJàE%øI%ÍG:âÛ­?çç#6b:\!‰Ÿ ú†e‚ð8 Õàå¡›ö5ët·@:ÝVæù˜Šlg=«óõŒ÷zf¦÷‡}ÕD×è­ábüÈúÂc90hAøØ&Î@Vju>_ 8Z´²ÉqgÐ"Ž”ÖA ÚXa±|­*S:µ\y-2É“ç¤ Eˆ¸xøYü™¶¤ÜœøÂhyïÁ±™í~KªÅ‚d¾?¢¢7|®Î#Ž­¾îghí`ÊM¹ÖõIu%A˜Y¦×;ç¬] Ùò"?ÁQ\ne/=Ò;c.—_tBÃPÞ`w˜;¸a×w"“RzŒáî»æfæeÃò8x4S±P¾“ÖýàT°,½¯Ë›”sòÉÁ€¸Is#Ù¥€‰ò9F,”Ö Å…0ÛÒ–ç€D–ÿµ®‡¤ì´ΉšU¬¾;W ¹ôô„óDS9ѬñËÆ³újäVðËY£âíš ‘%‘Ùî½LÛ6 s1]É~s$ËVüï½=°ë ÊÀ­ 8²…TÔÐIåA¹¡×:q8sÉc¢­ ß6HPcŒòßÏž Ä}Î\[”X…õøÌ=½SðVHðšöì$|'¿|›àÍå‹ ˜{Çd ÀÌ厀í-¥{5sï¡{`…+%{7{6þãýÀÏœ?`Șºã©KÏ Gz£{þ·IKþ¶-OUlIp”µ†ö7Mîø›äðJ ; >¿/7J‚“ž¦Ô2ã-m\ܧ‡¿šÀË&¬WÕ /Õ­œVõ¬LL\1³ð¡½{H¹;¾¡4ìÿ6n qéÏI^4‚!¦H¬ÿS®€«%ÕÒsÅ›Ógù8Õ/º³¾2–Ч|SE1õÑå—{…ŸG¥Ò)&%K¥9UóÚ¬´¡HÓ<ˆÿдnýæÒüIìAg¥ Tñã ¯AìÓœYa,ˆµŠ:OÜjQ@O}²^±ÆÉSQÅ»`ñÓÂC:{Ŧ,ûNíOh7YJc«­¡{cÒ´µ²p}mÒ×&l#ÁY,Í ,Û¢˜`*u„¥ŽßuöÕä,âEšB­TW‡ñÚœ¹ku1>ƪ0(òZAn¸@×v/Í5}ÛB ~NÃwÝ:oj~‰ŠÚ]®QC^ÁË[ÏMÒwYó‡ÅZÖóâÀ ø ÍG»Þ÷¸è-^[ fû3]WÔb×xÑ+ª´w¯»*v"ëWB¦<²µÎº) ÿèÆÅ_ ÁC«aTØÎ§=å3ôrF( §Ì=R)ß“¹?™[â}…¥`ú£¹äDLô M-4ÐP¾«ÞÂШ¼øMkA^d›ïœñ‚¹»Ÿ–m³qã}ƒ“ÓcÁ¿ê2vŒ< ÄO˜a]”bÅÙÔëŸa„\4L{`LdþÖÂGss.äˆÕöÆ?ü¬Ã’^æ[X>[†~¹Nþ Éš–[ Ò<‚jà<ý8Û¶Ä»b&\:íñèîÈÇÍüÜûŽ\¦!S²ÿ~õâ‡&Ÿ"Wö±èÍ µºô˜ ù´L˜Íßß} []nR_-·í³"ZQcµÍkÈäïD¢Nôi˜ý‘* ’®…ÛuÍî"Õõ‡Û¬Øí|†ønŽ(Ï]7 ž½%:äþ§¿ít»ÃÊŸÌ ¦-F¢8 ûé¥Ôm-6H‡-p1ÚÞ­Z9·A”LìýžDŽj72MºÙ©Ñ%’ Òï[Ñd7|:3–Ÿj>S5ƒ ¼F…ïÆ7n*ñ/êë×í_‘uBHaV œ±ŸÄ¾Ì÷ %©&ÛÜVà ,¢k#ü2Œ— K¨‡û:|ÌC<Ÿ¶à'–"2™cthìÓÀ0åĨ™Ø,çÅÑ–WYÜÊ"b~âíÚÏTPÇÕɘ†&6îKL|оƒ©êLðøˆô}èCõÚ˹Žç…+Fgíò”WQòæ#j7ÊÿQ=ìÃ3'‘*2’™¦³Ø/=稱`@ðRõ=DKvLÇŸd`”r܈ý›o^¶SÿØ\cDH¯£CQ íElFWB%“Û×DÏ„iÛâÛŸC“þCép+¦Uóí)GÂ,U"=iãýýM¢ÐOR,Z‘íEÚD™®Mø¼/ùn†Ó  ‚ ÂU© }²=?¦ ¾jzf)¿Q’7ÍG‰x}”Iþ@ìÊ&#p¿²:Òõ„:~ˆT%T3_(lRƒ¾žyƒ:<+âè{L¨/7K ǶâȬ[Òë§&¦U¡O™’«[Ý–¿lÜŽƒÝ(~réI‹Iœdq&mä‰VËìŠ2†I÷<_óÛ‰æ‹ÚÐcQŠÏ-<lbsG]2íЈ2®½Å¶v€”>JRVÞð ÜßK€^!¼¯ÃÀY{ë:?aüöý«ç›ý_}“©šR¯ò}Nºs/нäÃ_¨LrRnç –‰š~]öV-Ú¹Ñg>SÒò<Û:Ô§“‰J*­*ÂOšB6õ{Í’ˆÌÓ©c¥o³¸ü¶÷öšÊþ†2%Œ7<>dÊíƒ÷µÝ£ûQvMõõ‘QÑeÅç#ñ*¼àÔ£çb5¡².Ä‘‘¨øÓ•)¾Û~·ÊûƒÕÕ2)XΉ,6*rÐ|—ÎM%)m § ÁêŽ S˜°;î€ :³2©x’³3ùõ™±ánŸè8ù$åï¨ÔNò²ºYÂhÔó?ÌÑ ‹H¢ô'¨_1´;ª ™Áà X½èwlÅ«KÈá?ÿ¢çÃ'Õ ÿ-"~^f"h–ÂÈŸà*<ú½Hî+´Fþ&¬ríoÓ*ï ´\¸÷ç¸ÜìDAU9¤ñ$–ÍK/Pe2]9æc'dX¯¯4DÓ¹åhÌØ®PQbÕÜ·ÜØÆêU«¼äƒ5qÃÉ/K¡I#söI¨‹´¬[|¥'s91¾‚Ÿg ~ÝxNo¹·ë³úzôÀ*j‘ù”•¨QŽþl~}]<–%N5¸Ž¯ºÇ;[¨Z®czÅ“æÕAÔ;tðlˆ¨nƒÆÚŸ¡+0ÂfðÓêßÏ« .:~Qjy©ÒÞØ7ɧÙè tΟ·¨ƒ>YøMÌù¤TX‹äú<Ð⋵ÿ¶Že@Ö¸jÔ8vÔÏOy|‰iKywzýÆÒ•&lúÓ6I'ᘓˆ>;.À.69VëáÏÁÔçá=rè—Z¦¡@©úÖJ¤¹GYoXâ=.m¸ 61-¹¤ ³¾]è‰Â{÷ÚjR·ÖΧ`hü¨Ê‡= Ô¿Qnn’|ÜüðØÁ½×´”lNz té,ý•z{»äö ¾éyB? ÎBÏq2¦°?@Úϸ¸Ý*¨­±ø‹ ÆtµÌtÕÕwBjškEš¸lîR7ÜEÌžÃðAÃóQ!ÐiP;æÑº¥±}Ü £e<3uiááÿÜYÀ°Ÿ©ó&Ôy×,gªÞÆ©Wr^]©mëá娑CÃ7v¦‘2ªÇEPŠùå|B#Î3{lS‰Àé‡çt'$jÌsS£:’kư͸ÑAÈáÊ!'›ÎfÂ"þÔU`îÉc¢ÊF|«kZ.–"¾ìhjüeí½¶nX‚ˆa›9?óƒQŒØ=ï§æìɲ[âsó» PÿEýum›B2éµs[¿Pܤ=йdÐàÿ¤¤Ë{|rôñòÎÅ» ëå[µàñéèÜb4ǹØY‚k¿(ágjØÃÏ%”qú"†´1ò—™DnÄ;¯Ô¢Fê¾ ÀKÅ^ßá^XY³h/v¸ßjVe®¾nýðÎØrÆ0jöÑU\áÜ„.WÉ,›`s*Y^ªÅ&˜rùëó¤l˜ýÇÍ[èFä† Ê¸ÓŒÅ.C£Es?»šE,ƒ­È~ÄLªN6JMuðêEÈØIÞ$C²I–²GxÕ>=J¢Ó;Ö‘çégš³ÒÊßF 4ULíHÄDÆ»½ß ÈÙÑnië/™Æ “©-µµ]h¸–`@SÐ÷Ó«‡ì%G@oÉRå„xmc6Ö×ñ–E¥‘Óê6Ñ$´Dù^ÿëXù'€º;8.xyÒ"[úMöÉTVI¤óO1z+­å2jý¡pÒ’÷:‘ŽT5Žè%LAUv‰O\Šl)³c^•Žl’jnü;zt¦„ó,É©t€pwû?¢šÃ)vîJ?K"~•¿?qÈé=|\Ë=:1œ<™'ßD¨òªÖ¬°®pÿ9ý1=«|æÓŒ9å³ò¤ Õv=„•ד{ß3a™Fø­ç{¸ú©´¤wIÉÊÊÔ׉ü8Oå÷vÌW„…mTÙ¼/zë’ô7g®ÑÒDíÂ¥ÐJ2†¥U[]Ùü«¶lš`)Ñ‹9‚ȼXb废J(ª*÷ Õ¿4ã5÷\ÿÅ¡&g–$ò75­¬–5. ì¾¥¥š2{-k®E¨•Ó4|ÀªqN:/+zòåIÜŠ·^Ü &4|äïuÈü!-1åpªá)· G‹¦S©üz§ž¤gPbÿ²kµ6 {B³xÙ(e©UçR-T—憄Š$òj„82ñ[ĆYæ5êïÒ¦"LOrüøN€þç-Qw›–ŒÈÝl&HÕ ³Ö`V:Ì—e0˜HàÁ‘0ˆYٳDZŠlÓ²Á là âc‡¡ìЦ3ŸÊN¿Q˜ÍÂÍØÕ¸÷§­¼ì{9êÔìÒÏÁ§É^r ‰îm—ÓUl‘ÒAœ H’IQÅ¥E8: eðîÁ\~¹^J(kœîíI†Á¥Á6Xö¬…|úîÓiö%ûI}(# mèQŽPwòXÍdÛN*Cé‹‚ÝE™ƒ’!¹Ê‰]oˆF»‰VN¾b´àv4í°Éõµ·È!¦À2ˤ@ L´:n«HÍõb?ê}VâáÈ{è~‰°ÊRÝÓª ‹¯N87Ç•F3 ¾Óñ±Î¥ÝUµúKiЫp—m·à ºEÕlWÑ•&ëšH€ÀN`N8Å”—H $­$|I¢{jŽÐI­Û‰/ç «€6uÖüÒU õDAN£yá·¦ú®:ÊpìTB:0b±Ñˆ1k ™•%µ–)k‰¼Ï:4λ±H¾Â¦Ôj4m3KÅMšØ®}pÂEk ~¡À52Œxá¡o‘Ür}-.RÐa%ýáÞˆ>$jàñÙ‹+”‹à„û±Ø$=<0ÖíС؂öðìߊ©¹rœ7ø ŸÔ’=˜ÚÒ Ø›g×[’ºÚífç;$¡¦$ÕfG[ZÒ=¨sÙ¬¿’á¹Óz —/+üJe†‹ª}€D8Ηò•ÀÞ©_±«mi¯NO˜kö+í lF´L®E¶Ö]MÃìævM\δµ[]Æ®œOK:â3ë`ô–}]šªz¶ëã3gÍbxgzT€‹¬~ÅÖçúÄ–¨+Ÿ»,ò=[±Ü†QÇÉ¢õv>!biàß@J½Nb,»%µ¦˜³©¤I÷¬wÖT4J™¼‘lØÀñSÖ?è.†|)2|í•Õ^†OŽ{0O@">Ï'B¸G9¡-kgL…Š;þÕÔeVž¾³šEn/“¯iešÝ9 `îŽ^w3ý·=Lû‡N˜á^W´¡õÁfâŠùYa|R¶á÷I»°4Ôé&ÂËòøø£”1é(4Ãüø­a7n~´|'-±Æ™Hå$ògÅ2·É¤Q÷ï8í]î²ú&0_¿fä8Kg\ #µág³G°‘¯xä.›*üÃus‰ —Å_A ƒÊ„žq9GòÂvö6ÝgYî ƒ7_¼tÔ‘NÝážÊÄ=Á—‰Øñ²5ß–¡d´A¦t‰Œ›ÿM^/Ü Ü÷"vé÷>¬Nµˆd;ˆ^¾„è~}¼J‡–$t®¨¼À*ÿ:}…É ‹–¼º ¢•Kã|ÚrFz7!öôÓðŒ {§wp2WÞ‡í*©æ S¶6„$, ‰?àäΪÝ}…?¿¨¡¹gßùû¶3‰t1dQм{‹ 5ˆžé÷}Áj_‚¡ZÔ%+‰{56Sþ¦:¨’ð´ßÞ4Ð;øi‹MÏêJ¥È_皟¢ŸM‹¿‰Ö­ò±‡$ÛJËlŒÚ 3Ad°Ý?vûiÿÊ3uµe}h\ Ĩ"8Fõíw˜AOˆÏx´\©Q¾²‘JP†‚0e¡¢cWÑȨ%.Sj¼ ÊñȲ½d¥ª ê{Æâ€*‡ÿ^±À†ž3Æ¡„ëBÇübivðÿâ|ppò«`b‹ð gý•woáTý ªz?(Ñ÷Sgí{Úz,á ]¼!{¶ZmÌæÄÁI^ÿ¦Õaâ˰i$,‡G.‘p÷u€v,4ÞÀHÐ{eˈ&Ø#?jŸy Åq™U§‡Š­*.Í ‰@Œ¦y'Ç>'9ÿX'm¼…âV¨©ïõÀoœ©ß˜ Ö\v­k)'ü+šÀ¾ endstream endobj 566 0 obj << /Length1 1608 /Length2 9377 /Length3 0 /Length 10203 /Filter /FlateDecode >> stream xÚ­weT\Ñ’5îBpmÜÝ‚'¸ Ý@c Ý ÁÝ݃wÁIp'¸ Xp܃}$ofÞ¬÷ͯ™÷ã®uOU]»j×9Ý—™^û·,jV‚:"¸ùyøÄš ø+ £:·Ôx4 ã03ËÃÀ@ê¨D€Å`@l ð‹‰‰á0ä¡Nî0ˆµ À¦¯kÀÎÉÉõOËŸ€…ûzwÂ!ÖŽ–ÇW°=ÔÉìˆx„ø_o|6`€Ä ×Ò~£¢© `SÖÔ(ƒÁ0 =@ÛÅÂb P‡X‚á`v€°ÿÇ` uAþ”çyÄ’…€¸Øò¸ ìf vúãâ8a8üñ¬a@GÄcPÄÑÒÞô‡À£Ý ú— úáðè{Ó†ÂpKÄ x̪­ ôž âOn8äÑ €Z=F‚ –.Júë{„yô"€G8vCüÉe€ p'{ ûcîG0'ä/ 8ÄÑúŸ ¸0°5²Ãá0غóÏ:ÿ­z ““½ûßÝпQÿÅ‚€ƒí­xpøsZ"s[Cqxÿ ŠŠ£ÀÏ÷;ÈÅé?}®`Øß±ý™öG@ÔÑÞ[áðjB)lÿ;•yþ}"ÿ$þ·üo‘÷ÿ&î¿jôßñÿõ<ÿ+´’‹½½&ÐáqþqÁo8@ðçŽùÿb{÷ÿ!ú_ Àÿ`ø?¨ €mu´~”‚‡ïF\ âiC–6+ ýcþÚõA`˜=Äü¨åß6¸ù……ÿŧg±´süÓt±¿.°#è_™?Êó—7¯¡Ž‘®¾,ç¿Þ¦£´UGè¹;=û:4  ÿZüÁ“ƒº<¹ùEÜ‚|¢‡O &$æý?äû Äÿϵƒ¸Œ‹æãÿ[ú<ÿ\™ü Œ¢£%ôgN^!€Ž ÇÑú/÷¥ ö¨èßÓþXò®ÿ9ì¶Ä™Ÿ…ZJÙ¦f¤!>‘e÷ +wuð£ö;×êäùUBÛ}SÃVÅÊÍo«‚yêFÅï?»Ïì9Ým¨rltÚ³¶§€r©½Ù;óž.±4‹rnðšã§ý4ˆò<œV_A3á{½¹6¬£kZt‹A3Ú,Ã:¼d÷ctÍó#fºpzâcù¾&–¤…°‰èSþÞO–ÄË Öž¯ý}½íÇèTœb±™%€d>É{ôIwsØY­åÝ;îJñ¬ÄàzË® žë*&Ü&´MY*›“T)Á•ˆŸiùmÊ]UQšj—øg A­_¹ê¾Öß6¼{%GQ>Z tSbÁÛ JŸ~™ô¢ÎèRÇL%Œ¡Ü#})²]Cµö Œ†á˜Mv—úA)´Ž2M5wpR€"nÂ{>hR²áYh _|ƒ7@x_ãiÃÐuÙ6³HÞÓE˜×W½ø þŽÞ\aÜêÀs©®EŒÆ˜]-½dPXcñrðmÁÔUʧR H)š1Îwæ:©K¤]Ü6>¯¾‹Þ‚Û‡ŸQ_Ô?Mˆ,`¾yQÞ9ðå©Ê<µ¯¥Ü‡Q™Æ¯hdÈÖóÙ¿“â®Ë» éß´]ôô¾ Ä(r—(»8Y>ÈöÞ®åaï= }·ð-INn×éƒzƒñc,ˆ¾çv¾œªv-^;@ò„7Xñ«9Õd! …#‰o,9²*e;ælÿíuµNúdņEyXÚ„lüÚ¥ê˜ÔÐ!ŸñÕ¶¡áq¹ˆç=rId£-›‡j?//4÷C!ãh“òÜû 2/)Š£&•ùz*G:1cÖoªì']êXš¹ñZå~zâRÉ‹Ñõ&dz yÓ‡5Œö5/ºa~™ufïô8Ì.æ-~e°THê#‰¿¨•`uzéÍÆ‰§¦ë—ÑKJ)s­jrÔZê8¥KxcÙÑ:U” •s€qá³°+„'ÃZçR&_VübÚá‹WŽíøL]¤ævx¼†PS¾†HLdñrvÕÉŠ´ØÚ¡Xœ/ßþžÿ¦pí’ÌÁ‹Ó©£Ø;vö´¤Þ»öÜál£_Êø-äfdOl}\蔚ñ“æ.ÁBP9àÕÎ$oïPÔ jÕ—I¯k(Úåæ3•y¯†…„}6»»S±¿(qI¢~^Ù|vÄ ðWm^ïQ›èÓʤ{J·„˜ÖÅÀ(jy nØi¹‹]¬dÙ³Xw@%Ó¥™q`Š èÏu+¢¢žçÙ¹‰ÿNNáIz~+AȘ=Ðæ†}(S–\ž\[¶húõCfqâ{äºz÷nÙ#éFU‘>dO¥ªälÙà-[qRÚ}º´&Û챊g*Ü÷/èÛ©ñh¦ntE‘10ð'Ù:懚°É“Ÿ•H¿:ÖJf—gzŽŠ_8’Àó lUùžj¡ræ°x¼QjqlnGí›vЕÛJyÇ„âIv#n¿J8)ýíü6Î Èá8 XVR‘Y’g§s¿LîŸFÚªiÆÐ¶?Ѷ솽À¨Wg¨£p¼=N„QDm´Hœò4#·ÚP‡~vîi÷2Ôp5ÌÇIÜuòÔ ¹“L²¯ë*ä3~FQÔÕáž؆mÑD7î³,Ž‘ÃÅä é<™0$NþÈ? «h-a[,:µ;Þña(ï²1¾\Lj«#¾‘uÞé“ÞUïcÖËàg²qJ¦#ÝŸ,ªÍŒa ìvhd2}9K¹ÛÞ¢Gi”šÕÌ‘VQêå>Px` âãд Ë9ZõP@}ÅŽn ¢HGÄNì‹dÓ&-Ý5i‰î¡QÞò´á'´÷ƒü ¤Cno^‚¤ÐS6ï…F´JáÏäaïqêÛºë½sçðÌfõnm¹hØz½T9¾A{©ùöGG~k ùº(xú…àÎYÅä˵x|\ZƒßÀÿf/rÒøu–=¾5kéT²ZÜ•hLõQhp£ôþŒŠÔfêZÒ]uáèWLõ‘.Í5®îæ+·]%¨êšÎo º9wÒL’ï§!¸+ Aö¢A·I¨Ô µÝQ?[LÚ§û2J(ÞËkU2ÉJ$;7±Ñ¶SÉÄŠèÞØýkKÉY} ž§á<= 3òb~äòê(L87kO¯R=o×ÄæI€Š³GÏ|ûwšë²Þÿjg“ù,yò^ÜfÐCXÑ`M)XɱWôý j*òBpyšžôótT~/|)ãqóSæÐ`Dcåvû3ª)׆¨+HZ9š>Ê”ú&‰]·÷d²Øâ@/›‡t!DŸx/!ßjÑÊnîJ³–r壥¸×íZ(~÷•Üß]’wWÛÕ‘½8}¶‚Gi R‚Çe&öAeÍÄ#?ùБ:Â6ñšgÜý&^¥mm¥!„BÊMÆ·ß.ä^Â!¹Ð“ÿ˜'\üu¥¯4,ñGe û'V£3†Ÿz®]'o¶vªz½¾A…fÆ?äeÉ1=ã‚tzöe'ÃEemÏÔ•‘;á>^.çÔ&·©v¸D8º?ø»¬Ñì5ó`2$hS;:9ÀW—ä9±ÖÖ‘3îtÉn'»åÀ”¾{6×XW^§Ñ§j–«#êgÏÃD›¸¾*‡:TŒúŠæšö+Ø+Wý½¤{«Œz‰Þï Jó£¥>êО~7à^Ï)Þ(¸Pu|+öœùDÔ§G˜*üL÷ bÈFì(÷¿–j%Hyýõ§ÖŽÕ¬ÓSs‚þÛ±ÜÕZјõÕÐJÙàÞt¼ÐÀ¸Wv¨Pzñ%ÑsOu“OmŒ«ivÑÏŽHpÏp‚¸íÈúD¿GÙ i ͽÍd4Ž\8!¯Ý¶UF E-ó·Ö.êY–¶ì¶¤ÏiŒY‰†Ë|KµÈ+³Vž†„Å@—æ° œÊ«"±,ž‹0ÓOt¦;½h4ë6eH&¼¶‹Îå·~ê1c¿ß¡©îbšúÍåø>~—¥0ÎÔ[“xerÉœÎÑÝûi}Ö–ÁÍ»DmÇ'ÖºGh Eà)Þ-²ï‡|ÛeHüÎùÚo˯ñó…ŒEð\‡Ùr›>Ô¬‰>ý†ôô€{ÕûÒ‡Ð+üØD™ºaqq£ŸEr—-ºãv…ª¡¢¾Nçú+Š;!é n÷i†èY2?üñlë4îÌkZ ¸‘«à¦ªß¿1£~üð6¹±|µh.œ“w·°Û/t¨Ž¼¾ÆÍñ]ÇAÿ5-¶0.çn‚ï‘Cׯ÷J+ñtú6iWÅw“¾ßà¢þ²3[z¬Z8ajšþ…!Š¶Ë¿uguò¦¸l >\Ê#Yæd…ÃðŽ­÷§fGîèÅ Ü$ç³ Eïìä7ªÙÄ¿ó-Ò[•¸¬bËе_;ýì.45UX‰5s~miMS9R`çf©ØŠ`#ü Ȥ—×d«7¾îÝì@ûð@xÿ"ü> S߉t§4<³!Wm%yF èê¨Büù=òIÃÇÜ4 Á ‰!YŒjô&fXÎhê·N¶ÑÐæ.$?Þc;ÀOš3¢1#«:΃Ú‡(ÖÅdÌJ?BÐ ‹¯¥'‘, Ö‹¾ô©&@ºËS•}ð.üt"ð% ëUzxÆËB@³mwRöõ  Á¯ð‰n:z §*åu:|»Bk3r´šoÏ{t.Z« ¾­¤Aáã+ºÔ.jÔ/Þf}^ô^Y¨Õgì8ê“÷aCà @QdÂ]àŒ{p%«–}ÃEÈ?q 튵 _pÂE˜r5#üáÍ'A9þcK³‡Ê‡“£Ks•7{G}¦—òƒ‘#ʽ܂~zÕéqÚ“g™¯Vå69¯_¥û8!-zªúöv¿HÖ7D?W|† ÊÛ4¨%])¼‚ÜTGkå! ´Q“)¿î0>Vi]© É™ÝÌwL¯3G ,Ÿ7î-aL-€rU&{è'{;/4q5.𛓖Y–ꪼŒ‹Š&9`„hyP½Ÿãéj@-¦ýel™¦ æq Ë3G?/NAðMw–¾–Sšª–›.Z|5ŠþåøuGù>Zotw¨»)â’Àª@ìÐ>½WüîI7/56£õáü¥~½Ñëg›¯ãñ®@ÉÅv§%¡l ‘ª•§›ñ»DØÞí6䳞ŽzàÙr™÷¼Œ´½‚Ö-›ãDåT°‚Âtƒ†ë€^^ãg}'hõuì­X¥žª¦µ1üý§]/ ¸?Ã1Š>U¯ 4|Ü-µ?S8B»¢^ÇzÿXíkvOÇÛÕ#íÆmUŒôBe©­>h3}ƒ)âj†Á¥r%Ï3IZ¹c«1Åyèöy󼬂sµøa¶^‰¹æl”¾ï(ëjŸÖÅ«Ó /‚ÌÓŸH4u9݃t°«ËÌöS’ã£:ˆò%E‚ƹz–;Ùä¶û¶Ê_ÇÁ(™GLÀþ±uè7n§Ug>›1Ÿð˜B´hgJÁ)•¡0eî:b;­gÛ} (Kh•ù±`Vš“<8û¤Þ˜‡æ2wæáv;å!' ¬öU¢NìpŠ¡íå# ¯|ÿþ™Ä•§bñÉ©éá¨öѺ[c7‡ÔrªØAÚ8÷‹íŽ…Ó_Їt»!“®Z—”œþ‘÷^A?5*pé`Íš¡ªH¯å/Vëñ‹¿®Ú:ÉnÂsÎO ­I3!öW%%æÖ}\;9Û™©˜‡æ®¢Ô­3·ñ4©ÜQ¬cö\'S4{J•J´úÀóÞ]ëFð‚F/J»+#íáC–Ê» òE¨û¾[h]olÜÏ?Üžäç‡ÔE“oÝe‘p×Òûý†4C޵¸³ÒTyCòô…uV~ÎPyçl¯4쓈iÂ¥)¿6îx•ý!Ø1Ê °Úl8Lùp27F…YõÀᆴ¢¬ÕvØz’À5©þU•ðWèÉbžš†â@Y»ª»–WÍ̤ù¤?{áB¤EÐÝ!å[¯pÓÜý¢bm+ÎðX°H¥dšÜdò~U[Ä‹ì+,µù!ä]´îaÿk{rm¸ÂnÅ;:týï§Y”Œ›Nel.9ˆèа±Sóé°~y':_õºì²Ž6¿TÌø˜ß]­ Q_·ñ àë&PS™åƦÓ%å+ód$n}ê€õ–•æðàÝ<t‡G¢;UsA>BòscGu0¸Ãn,èã–•è8’Ï¥ÂÁ¸ì(}¨ÞpA¶_ÇÝÇ>_>Dö‚Q¤Ü«‚««Ùñuä/£ 5«‚%tâµßËhG—ùRê3Ø6aFÏøIð¨’xÒ‹jSÆ7…™Ë ÍŒveÛ¬Â;;Ã'AVR¬vpélÔmV zunÌ‘­ä×63ßthŸž;y~óÜA³ŽÖ( [ªÔ'’Î}ÈwÀÁá6 @†m¢ÞåÒ`])EE1ÿÖLë\ ¨`2ÖÚ¦&#ó4¢ó åÈ õ˽:e¾eg§Z§bm8:¢A²m90÷”~ý=3Ìg„%ÒÛ#©¨Ô¸‹¡¾ÚP=]X3Àgˆ#žH…W|Ûß+g5íß+_>ÉM_ØIm<²ß´ª· ˜©[¿:®ué—Ëëœ\Y[ÌpF¶J&ЦLT|­ðëJVËŠ"ý‹¨TuefáìÏ@"ï3£/M÷6Ÿù] ‰¯t‘Û†SºDÔ9ÈIX~¹r£ˆáð5½)ŠÄ¥_O6VQtôyÁž“Rç! "ÇÈ?Ì­ÎM¹–¡ÄS6¡As.SJŠ¥ÂÈmÊa©TöVï#ÿõPo+Ͻ;2&§•ãe€{y2íaqEò~6Ý^–yiÓd±z`¹¯CŸîDYé-Jz¶º=ý‰A¶\‚D6<Þ¹…hà#°E¯~¦º¡çÍ¢Q¯„°ÂSj™Ü­hL «‚™-)œÖ¼ˆý2Fkv³›$Ý×uehÂûÛy›”›‚Ró.SÍ–*]̦¼¦WQƒÍàh»0(€š8&‰!âY—û³#D¼#S9)IûE*õé’/Fȯ½²1 b:ïð«/Êvo “ÖÅ”Üô~ÓyÐÆµŽÓØù.¢Ë÷½'­jÒâ*¯âíÛèjÏícƒŠs%‡ :_¿mLSHáÁÖ£kö@Jv ôŽbÔÏe”’Â×EŠ›€D¢Oi›º¿jˆŸXTu‚'ÚCñÞò¬¿ ›*X-v ¤çŠëé<[Ï1C?¡%’<¼zJku•0D¡Õò5úäk¥I>˜9LHä]Œv7Gv\; ŠÊ-y%±= ›UL‡žÆé+*³¼0N»¯&R;~ÒS¬GϪáÉ·Y«ét:¹ÌÎK–?giêO¹½žúq#§óF8\Ið!?«Zí^km¶&1œïÌÚj×Õö.¶nù'úô³oïžxn«!T9TŒd¢ÇXüò8¥ìt­4¡|OO??æ•,bÕÇA–6øm§’~8xùƒm2œŽL,Õ¡alúê»4&éV¼Œ £ˆZèM*˜¶7î]0fPž|6hD9»ÎÏû»ôS]¾Ž‰$².» †÷)ªlq8OÒƒ¾Æ /B]Ý$Ð2é÷„÷]N Ýur:ò­–š_Ëô¼Öo¥1˜‚•ÊœŸ¹÷P¼˜ANšÒµãÕÛfÅÌ% fŠ9jiYšJo`ÏkÄÖŸé3yi§+¹®?T¶iÄçæ½d^â}kà%Êô’±JmˆíÇá°ô8ó5ÃÜîøŒÇ ®”¬à”%·"ç@ž‘ÇxÓ㈢‚³E”’TʆBƒ ½ý^²j€æõE;™ Ýr …¡g‹&ŸÚF%‚j§"Ù´àÍ_·3ÃîñmÜ+,30_ePyœ|Kt½ì²€åÉûƃ¾+c|Ž3°2ã:É/ž­Æg讓üôy¹‚e9û.Ê¿1kR%þB^Äþ âaŒ¼ÒŽãå+ÄÜt³’þÀi ‘K4û×@¿+RÃüÞ-÷ ‘ñ ©UYÖ–äÉ-)æ¤Ö/ª û™ÐW~Àn)ëFJ?ž™lÂü’4ÊÞ¹O¿#×IEZ»ti¼·,_9ëþ57Œ%5ŽÕg¤‡}²A~cyøpþ¥¨Eæ#Ö-ú¬ãr­ú Ø´aí‡(Øò—2û2û<ÝÚk.Qï!…‡€x MûI?_N‰ÂÉýîÏô`A•ß¿_Íz4šú¢}8æ¯dÞuH¢râÓvjSx†z®²¶üPnðëùYq+™n›é[ŒÎÍ dr×èIÜCJÙà„*¦®·¢ƒÐkë;è͆ê–W_™£ŒX²e‡dGÙ<¿Ãî Š‹ËODPÚ"’Ãi‡ð“ƒîä•–ÏJef&<»~£ÈP2øsï¬YÃó߃C± ù_{¦mµÏ17Ÿ= ²á Ñó[(˜¿¦»^þ1Œ*Vt}·85°ë7×z\!ŽAÂì“9›²ê=ý0‹]3ä!JM´üNÝ-çË9‹ñi¡Ôj¢q$?%ìu6Øý†áÛJlÞ´z¹4Ì ÚT2’" ÁÕg­ª„‹Ùôvãj¡;„u°ý¥šLëðI,AÁŽ¢‘Vg‰­3ùö›·g\ÀgÅìhÉØâd¼×ñjŠL-üÕ¸©•^cyN»æît“û=…±Ê8i/Ow$0ûmÏs#êN˜#¬ë±}sTg\í¹ ÑšÏ­ @‰9H­6(K½zqÌ…Ѽ…¤(–²æ¶ÓoKªÝêµÑpËP2ˆ ðÕöÏá*ï% <©zS!’PX¿[:°«j\zÎ ­\i¦;1«þäñwAG˜³M‹# zÅ¥#p€4ô•»åö<ûJ3Òü¥.]¢‡bDÑNWèÛ|.±Œª­TýÅóø¥g žgÏM˵5&tP8¸ ܃ “õLS/AAªü#—Ò,ãœT‡(lë$£8ϱO^2ì/T¾¨à­œ¢ÆšŽþ¶ˆ:ýAšÁv”­Â¦1‹"PÚ4b¼X?¦œ>ZªÇ¤:½‘‰³ò!RÆ]ƒüì4a†Hö{.n1ŠršÌ+T±ðæÔó Öyâá±3¥›+1¾”Y3_­16Ïsò7oÌ<Ñ#©@N¡«)Oƒ±®S¦7÷ƨ~е8Ô“Œò¼Â6{– ÓlÙÒ=)·C¢ì¿¬Mrvä÷eÅf(E&±”î « ú “‹5³n//¤@çYëZ¯n×o—‚†í;P¢ „?ÑaÒ•ʳS Î{ H²¦v5߈k~G¼‘’»¡~êëÅ6)'dà&¸Ì]ëåH!ÞLTZÇÏ“]-÷dÝ&° µÔÀ”2]ÊŸ;\¨ýFÝcsÕÁî«3Kq3¾HçÛÈ´¥úñER€Ya„<Óó‘ðŽÏgÈͺÜ,¬áb=Âÿ‰Å$N^Ã{Ñ»êvÿÊïïÄðÖ¸âcd¯ƪ1˜¥Ê¥bC/S¿Ÿõ‰¢pnô³ÄDn¡.‡4˜;&{=Û´Ÿ×ÊbJžeàw´iØÈf¡Æ77³$§ЧÚ7:‰‘¨â#qŸj1í ÉT\¹Ø4ƒ 𥗕ÁöYé²ÃA}–Ï©÷ž[5¼xBÔu¼±Ü>{SO2¨«ìÜÎÕtµê0Ö’èbÞíL7XYÚêÆàZ¢žô”“mÈç ª¦ß6Œ*´ú@“­ø!÷'YHÌ%BhAïîr^•©(óGÇÅUòáK™‚„|_­°r)çÚàq¢ßó–eê2õ¯ÁGv3oгE?– Ô³ô¶ 8ótÇ?›‡Ø=YE;(F2ëÓerV›Ä3²‰7ˆ8oŒ™d'êK/ËõV+[\2×l‹%’à.ÿ£/dC}è7«Thaq™/‹Aʼ¯Ȩ˨fŸòž,ŠÍÔ;YÎAzE#«‘L–[Qy¯$´å±C½)ÑæhÆÂXqGð»1œ«’ˆ]þ@KÚ¿êôÄ+=$l¬HÍG>fGO’ñè­žïv’..Û7reÏaB笻´ÇOi¹ºTÔŠÏß|óU7F ²œÓŽz•qÞb­laJ¸ø(}”1‹Ì³(ð‚¸K%•ñŒ;%J·eÉ()ÙÀŽÆ–§î}=ý–Ò‹>ZwªûipJú®ó'G2-‘:e´ªÅÖ%rÏj¹Á“™L© q]5Jˆ{Œ k±ÖÚ‚"Ž˜j¼ÕD-רQ† [É…õEïh‰vmïÑ'‹8“Áñ †–s¢_˜T©ìzͺ‰zžäÌÀÞ2@q”m†iå×½‰‹Pœ ”ª@Tƒ´OáP’ü‹æmû½Ï4„\­"¿ 2`?© QM¾ÉCõ¢ ßúR*ìß¿÷­^ç܄طµjòVy¶5¿À…ßzÃ6{‹öÐne©ÎI–Î$¾¨6²^ìÏ猾¶Zü ¤„áÒbWfÖ7‘­¿×ØRUÓ–¢gR¼º¥r,LÄ"è£1úkÖÃ"`ßú£ñmsCÁÑSt2}Šœ£ <üͤd$;ŸƒàVë¯ Â ~ìÁ¬:¬3Æé4í€@åÉî’P1„܇C¼¦- ;ùäXƒv]¿KK²c%>Ñz±Î{ÐùåïD†£ö›”¯ß¼Ô¡¾Cß°Å7Γ9}`ô Ðbûl²)¸¶,!¿Ë-D܈®Â`»SJ\² uWçñމjræýmÓðÙm8K©e ÍYNÑ¢ÃûlEõ€I-€]„-éhÔÍXjЯjûíñ_BgÓB×W2’ü¸ÚÝ‹I-.…¾ÏÏÍX-ÚŸn§êWSEŠ6rtaj·`ÿI’®{ï,g{¤n¹K_ïz˜!ƒÖ( Šóè:‹bb>f¢&—KùƃÅ77…„ˆö¾îÜÄÃÁ™Â@Äœµ&²Rd@¼ºçCÉ^¥ˆÇu KcJïknÏï•ùš‡Oâj줓åsÛŠô›ìñXµÜ–pÄm¢d[ gÈuï¡’( äwÉ…’Ÿ÷eyH .¢£çãf\4qhüƒUKœÕû³ûtW¦ODŸ‡ü°øõå®ožˆ•îIŠØ¦ŠCÌ)gŸW6^¥e§°—€tw­Ž[zp»Pk‹Å{³þF)z1ìÅÞ$é=úÖ¹äë¦Ù¼YWUºŸ©0@ÎúD4ê5$#Vw®¢’¤Î#œ8Ð`Þ/êÇÕÑ'â:·ÌÞš—ú‰KÉ{»pÛojIøg Ë[Ì L’hB9sl ZÆnÓ~©1îåŠ?Á­ÙáYÔG‰Ð¾0¥B…åáƒ(´2¯b/ví_˜jBraÇQ¶ƒxư’ÛY”Êf#²à­FÀ¤¥®@<| ÃB[ÀD“F¬AÆ–àŸBKž4}ÀPNGKàÆeËÆK(Mp€œ&[¿Úí)ÆdÄÇ£/“ŸUùúÜÞ§Ó+,åtl¶vj¥yȯٖËK—LiܱRÂBÚû†Œ7Ä0ˈÞÉUŪ(ŸV§½·ÝpðׯÓÉeV›ë™Ì’íiéU*z¡Q´Äù§Šþ¨¹qNî±ù)y""­\dûÏY,’ò§ -M(W“jô]F •¬%·âzJ–˜ð6ç•­<ñPSyŒê±Í †ŸX4»O÷⺽ã02f«K­÷êWšäA_è>,Ö’Ií¦bØ=c65*”êµEBþ ®we endstream endobj 568 0 obj << /Length1 1144 /Length2 7964 /Length3 0 /Length 8726 /Filter /FlateDecode >> stream xÚuseX\ɺ5îÁ]www î´hhh»„àBÐ`ÁÝÝ%!¸ÁÝ-8—™¹çÌwæÜïÙ?vÕZo­Wj#­¶§,jR‚ºÀ8y¹xÄš`gw=kuN]½à´Æ`dÔà  ÿ¢Ÿ y75 uQ°†=óú k7€—GŒGDL÷yÍÃÿ¯@¨›@Û ì õhƒ` 7Øå™R€Úz8ƒ\`z®®0¨ r‡z¸Ù‚ÜÅvÏ•ýwV€<ÔÕÇ lï°è±²³süðŠŠŠl|þÅ@î`{Óóºþ‘éYBär{.øG¬¶µ" û£]‹ æ*ÆÍíjg zƸÜí¸\@0nÖçB]€òPç?Ü1þ˜™Ø dûÜ”÷?çæäõrñû/Øìü³% ‡+· øµHUჟ!Œ¿1{ ÈÃÇ#Êý€¼m¸ÿH©ïã ú“äý¶vø¹B]vÖwPØôüÃðs·ö`n ¿ÿ—øÏ//¶…l@öÏ×ð·ú3 ²ûk¯a s{Ìx¸xxx<|ÿ^½z¾P Ôâów¸¦µ3À­fª¯¨­ÌþÏÞÿ%'}–ääpò‰>;åYQTÿŸŠÚÖàÿ­ˆçïê.vP€è_…?Oì_Å{‚ÜÜŸ]`ùÓ°¬€ÿTÒ„ÂÀ¶ Ëß&1çäyöÇó÷ÿ4Ïðÿ§…þ™CÉù³–¿d)h8HU™!j ÂG$P(Æ {9‰Êur¡â¼ÁGP‰"?ગÐÃ:Ac™<åé'OŒ%MÍÙ•÷ù¢rL[~eÂ(%?†¯% ¢º6ÝÞy­…BA]ž_‰®µ3Ï*J|z¤¥ ÔC™êRàq }›Šù²»iê†ù¥)fÓÁo‚ÊN|«¹ù¹‚A³Ê°º “Ra±®±n¾[‡N5™.øŽÂè\æísîQÌÇ•!¶Y,Ò÷‰TKXؤ¤!‚êÎâßmÑ(2æ> tN± a‰,pʺXíÛT{ÑE/û–fçÒ“z¨£*¯¬-^·Œò|ë\€ÚÛ¿Š $ìh¸É0œw&Yš~5²å)ß×¥¶º> WkN §C­~ê) mÚóWÕ³ìÍOR~×&à(*[ qÜ`EêªJÈJB£Ù˦ڞÐ;¶8³`BæÐ.¿ðûF¾~_)$ U/èXfÉ{RQþ¦é2ßP¡ŽúÑ#ÇI£CíÓ ±ÍöàÝÖ»9îa©»zÓ‡áreFÉàÑ_ÂtthîV&a6t£[Îd§›£\F““¤~êày£‹“¡f6FÅ .æª(ïέÅ\ßEé-G6éÏ-Ù‚sc#±>1kÂT¿'Ø~¬’ê ‚”%3¾‹À ¦ø÷Ô`aÁoËN¢E­EI]lóÉzôÈ™ˆÉÙ WÏëp´ÑퟑÌò6§´H‹`¡š&yqµ‘òfÕ·Ö.#úø6xùŠ%9êCZ›%·c¸²ß6¦n‡ïzÞä ~ヴäán.Óg(µµíØæ‡êÄ9õ\‰Ý™‡Y’ëÃÃô§búùÑ–ZþŽkºõßH&bßû+¥Ü»鎈-‹_Qù×EdÁ-‚ÆÉ·ºõ~¾s_Sq[ʺiK’/ãýöS¢’VÇ*¢xm7i6#‰ŽùK¹ÛÞkÿ”ìÉ“šÅ2FÊèäòi”ö*T>ÞâBߟôMeT}Tß­ß­0|3¥(ráÅ•4ï3TkA¶ÇY]È¢ j@¿³Ï¿¤—„ÌÂ$ÚJ³Mb8«| !BEÍ–Ÿ¡’–0ôˆRü«âFÃK"CvþS}œæâæ¥<ÀH˜€ÞEC”ßtÖNŠz»-Q ‡‡'ÂKWG®ðyŠSŠDVŒ'ÈG)~œïòxܧzãÉ“ ¾âXƒ©à`ÿ²n-#øv•ó.+ü°–:â+Dú®C­¸'AåÕl«&–Å•‹¥œî¦9 Ûö*øVvÛHŽ|–¦J­é}!6à ãyÉ/§yOéJKJÜíõÐdZl£V=ÈäkR•)&ÆïÍæv‘Ò5ÚEVÆŸÁ†Ð!ªDl“B›Q`¹'V4H9l;ù‹¨¾T¡²£©Ïµ¾²¦ãÍ@¶º¦Y…‚\ð “vþ‹÷²IR‹¼f¡¢- ÒŸÆ̾–0‰ÏãXió‘H¡#ëŽ0qé™c|¹a2É[¹ìRM«ÌC^‰£6êøjÇÆ.“X] ɶTuH‘Pº—²ëw7’òÓ{Åöàq¾c7Ým}š¾{dNO}îÒGmá°ÁÖ”YÑ5³Ø"Œîà÷,s ±pØÒïöeÇÀ,.`¼=íÕ£jÕ ÃÉ×_oàk‚vº·Ê\4º8Hq)K>sé9(LR4",ÌðV’ÓÛûŸ8¹ð_5œçåx¤S™_úCÖ·‡ÞðÇ.}dæEŽ MyÂJöyy_zíä .Ýá…QȨÃejP-Œ¢•!xv¾Ë[|š‡ì>Ž–°••7ZÐZNý¦tûx£ý‰^?ýÐ)šî!À¨‰2¥€¹µ€\˜ Û%"Zo‰4‘gMj ÷ß­¿©#”Zë'=¶n*Œ2ipôzõ,Læ8Æbnì É@4ÈTe»sG|ç+}& Èûªÿü„Kü‚%~†PûT¦%‡øJMLeRÈᤥޝ ´s‹uÂú@õÁ‰ÝOYq^ä`¸]ôж#u«[Tƒ©/Wϲh{«x¹ãUf¥¨cÁL³†½zG+ûƒX µq¯Ä.Å^5Ÿâ)‹¨Ó¸“çùýΰg|°%<×ûÚ(f~j`̯‘«·ÖgÉ‚ƒrfÀ¤0YgaRXÚì€6úÕÉeÚw æÕ»Z€oê ïzÞZI?¤äª¼W„Û¡P™B¾­ÉÇ2º˜ÊëÛ±˜tÓV/ÌçLyÉ•¡È¯êC, 5©ï8e0&O+Ý>ÌŸôlé˜Fc´Â3Ì0³ »t°Ï‚µ¨š‡/‰ –GPª"k8QL1)ì¡ùà\ÆG¶Y÷Ã$YcÛî°ƒ^C¯ÿ„úfÂ2ò{¯7‘Ö£'+ÞÉÅë¬äº|¼ýU-ñÁT†³egŽç¶°&÷“™|kx‡ÉÝ ¦8ç¤ËØçnÉM _R°ÿ¹šÅÑú£ÐO•øÜþÜœ!h˜†5 è%Ño©â`u÷Ô˜:7í£¡\œ0ë ƒý5óiñ~c>öärè|ôò ï7š|¿úéEL2¶E_(Å€ëknñ±E=ú‹…™Ðø¹l¯º›E”ñ£Ÿ!Aîüz±9œM/ߺù¶)û ÿŒø/¦<ꣷR9þ›Î`›_ö8ÄbÜ=n¥ë~C®–cëµ¤Š‡:îãW~ACœ v¢É³°ÙEö5Þòw¦„è1è韣âõ?¯Bˆ<FšÓàXH»šl`žö8‡…×Qâ6Æ/*ÑO”‡3ð’´‹Í€Bé–(=¸¿•ߤSïÏÙÞ”:?±K~® g›]šÞ$G6žë(Æg®mq¶!¥”}¿3NÞ«ºóé[E“)’žÄœZÉ'F7ú8Ú¶8˜‡{IgtOß<ôÑ㣻úÞl½PBuàÝq0PQ¿{Ms…x&ÜuaïŽÐQmJQSNc_¯Z“¦F}ID@è§€°€ìa ùƒ¢‰“h¹ë~7î„£Iºyàc–3e…*"{» œ-a+Ž¥—(*ªW2çØ°åÀ¸vÁÜïÞWÅË-PŒ[ÚLÕɲF¾î°êäO_@u†E6*ѯ•ßJœR§1£Õµà^77-à,ãK‘¤îTà/G·‹ø”}:œdœáà±àÒ÷þ¨¸|‚}mþòˆK Ï3øµyl°|}ß=¦o°‡ògêKËR Ç›˜øÚš+Ö ‰•Õ ©&ãé!‚û% u°=iÀcˆzë~˜Qä¨ÇÇl©Ì!òc-û¯þ6(OÅðb`ÄB¤;@ݟ׬ýëBà)A=UÙ;»‚OvDg¡:¢Ò[Ò„áöûx&΂~BQX8!OUqöáIÁ¨äÜe» Á“•Öñ¡ ÛÞÑòxYç’ù+£q—q*C4U˜-Ã*3hò?½h:9‚©h^_ ÁÚkü}~0i¤cƒ´Qtõ§×IÃY;Û…ÛRÕ‹‹ ” …ar1HOð=j¦]Ûñ˜õròîYr•— “jìàŽÈù6Ñ Þ·µ72ÉdžypÇ#”ß[üOÊî,µ[­×JñˆÄbËoU[ŒïË5FNÓK)ñ,-`ìç9YLß|áKój×5/ÆýøýÖ¢áÃ=oŠvh&¿@©¦„K§åËçl£„tŠuD:)7{QeCúºÒ'=!FSÔô÷óZ œÎ”ßïÇK0Y°Düyx ÍlžFÊì‚› î×uÖlß"â$&ôn޾ü¨T!_è¸ÃNª£×íª(œ‚”â®ÒuTèÐëì¶>s6Ð9ÍñËqä.‹t4‰'l3¸pPKö¾‘ÖH˜®'ýÏÀ¶Vð£ù×—:B&ó¨=ÁB¡þ§‹Œ: Ò˜{þÐzÕ–3âí c•âµcÃeeUœ"Î@§Œô"³²¸#_Há©9{3}FÐ$*Ã[Í 2zÊ7`nT†‰òÜÕléÝN”¿t±d¸Þ*7Ži ?X‚xÜ&¾ÌÚïâ·‡eÒÖMލ·ÅV(QÌ€+µ¦Çë¾¾xÂP“æÔ‰ª?ùqžÑ\Œ(bÊÍ 9¦³Ö—ë„'Ù¬#»Ñ=wúe‹¯n—õ6êË©90ßÓ™~e15oA.M†ÌÕЯòpî%á;ÌʹlZNÅB¶®â:‚kAù¤?ê·æÎ†Wí,¥Åöc'’¸5Ýô±´îÁ O“ý$#S6'Ä@8ôþ§]/”Ap~½9%ÇȧôÓÉ‘‡ã°Á7†·âo1†ïAMöàþRcIÊù•ÄyF· f›û”ÚD¦† o««õ·Iú†l†Í7a‡lÈõïB¥xš^Ô6,Œéʲ·ù'¶aHêøkd¬Æ¢Û`“÷xÕ…É9RÉîM²\´®êÒc²õ”%K~©¡À}ç"Üdžˆvû͹ï4JÔ—µ¿D,f_§¶ÚS¢M¥§Ï`}òÜöÑ{èÆYЖ´L†5ïí3D…Ua˜Cp #Øå^«Ç4žJ½Eë`-Î5úÊ8ì_v§ÌÏûP¿ƒån»ã gR<6¯í¢zGÙ¹ˆŒìθ’tHLfk¯~þÈËòi‹ ÃUÞ¹Ö½¼¬³]3~w/›j^1³WÎßOùfhxӧœ¦¶°“ -ö›à’ÓBº°­‘dИv|·8X'NlŸ9Ïy@î!”Ç_‚Í$rkïl´>µ3ã0¾í-k‹ÓŸ6Q—aB¿i¥…ÁÅ8ÃPšà!ÊDîx&˜©ãnZ^ÓŒÞJo+€­§CÍ2·ô4ð Èú«Tä–L|ivÎ*ÑñÎÉÂÁÅïÔoë-O¨Ö¤ÌÈÕ¬‡°¢a(Þˆ§O¯Í^oh”L|(u9ê;¡’+ÁC(WÛzip3rd†jUâ:° %„¼· ?—µYã53Û²-鉼WFB­Í÷`ëìTFÊη+¯¾ÄÑJ f•C(7‚õ~øB=.~ík¤Èˆ)ÍË,mžly¬4Ëü"•d)©à;PN#Jj%ï=ý$»çˆ94º×ÄrÏòŠP×=ÿÚV1g×­í»Ïò ϺÆC…´kÌ —VkE(Éå#å3Øñ’7ŠÒX©—¹ÈL< Å?îî…cvÆ *¶»hع©_‡=S… v Ì-‹ÉÔ$‰·ß.&Ì[Ñ`\B™ÓîØÐujMo»ÃË´k‘?¦²&µÁ@:‹uá]›ájÀ.ø¸®2]×"¼ûdO:6x£.ð+ŸtnG 9}IõÓï Rp×÷ òf‰‘9š{*¥¥ûíêáF1ï8ao=0ïgG¼ýyð fõËÂb„rõ™ 2JïFaº·ÓAŽ/”ÕšbÔ¬%àbWÄ*Š—RRÍ+„B°5Õ“F"¯Ì 9lW¡ˆFÿìCÚÞiü+‚r¤,ª.>¦-ÄDœ¼l]Š mïì‰ÿ…‹iÍ1é®”)w¤ËK ²AÖãíT\üše}¹tQæ7`ÖÍŸ ¼=Áf”ìrº/WÜ¡ˆ÷^ºšS¬B‰•Žô”Ë«Ÿ•5•L’"ØÄˆ­ñø‰“¶w‰RÜXT Ì?×dk"‘NU$ûI±Yø\ò‰ŸOÄ4x3äÝ~ÈpàŸe†NgoŽŽ«_/§q,…ùÎôq„EUUö»‹z¤ó´®èFƒoÃFÈû GÅ|l¼ÝÓqÔŽ}¨5%þÝbÜ P*â;ˆŒX€”n%.,TÈŒ¬dX÷𤟥ÐÇ0N…4msxª ûùеœëó ”êRݨŒ·«ݳÊ?õº¿®"í™Æƒ n!=Bö |CzSEÑDoÖž†åÑ0"%›d¼ú-®³YSÀ/´°s’3ú#®óO€Vå 89ËÍ›>J'JÉL%56JRd±í¨cÐl“tVQ c!i`WbŸ+@íÍS£¶lU뤎ˆ¦æ‡Ñò!4I}üQ¹{Öy²T|K~ž®á¾ŽÞ"c}–—1åzDÛ6& ´ $V^¼¹†°†·f¸òṳ̀™ &Þ´Ãéå2mîú&Â}ŽÓ·i ­Yîð´f¡ÔcéFö ÞÂêýÃ/È û3EzCˆ fVíØßP¢ˆÜàÏ‹’åpkß–ϦûµÅi2صDÙÝâsðK‹»ñò*™l7Q5:|ÅŠn»€_3Û˜oΪûÃ4¼Œ'9rä‹Uù´½ÆBô³.å^EàFû¯ïÂYõ5Íê„-ã´¼‚_-Èç¹Z¡êdwmtXHË,…¿§tmÑKe´ÉÂÏ›²,Aº!Ä"xkÒ~–*BËÙ©dµº‰‡Ö]NëIH5ÓPݧKkÎXù|-w›iæŠ&­qe;(ÄÌ?÷¨®K<¸#N¡sæ{6ЬKC¥Ô|xêåä4H:€RÈ03wnwtWÎåÜÌËuá-R¬({U†úø RÈXþ˜¤›ë@–ýº@„)g¹J÷ZŸ« û{ˆ²k ÅyMFÛd¢õ†¶:TTä[áÇûõùáƒ)n®òbf½jú%ÿoêÑ endstream endobj 570 0 obj << /Length 696 /Filter /FlateDecode >> stream xÚmTMoâ0½çWx•ÚÅ$ !Ù ‘8l[•jµWHL7IP‡þûõ¬V=Mžß̼ñ s÷ëu;ÑU··õÈÙ›=w—¾´“ì÷îÝÝå]yil;<[[Ùj<=?±×¾+·v`÷Ù&ß´õðàÈ›¶<^*;²~&ûQ·‚>ìþÝþ”MS >Ù_êãP·ò{=éÇsæ@öd”ôÇöçºkŸ˜xäœ;`ÝVY×`Œs4½JaÓQÜ¡n«þª‡í¡.’Uu9\ßèY6î>¼ý<¶Ù´‡.Z.ÙôÍž‡þ“4>DÓ—¾²}Ý~°û¯ÒÜÑör:-d0­V¬²WÑÍÿ¼k,›þ8ãóþy²LÒ»ðºÊ®²çÓ®´ý®ý°Ñ’ó[Å*²mõíLrŸ²?ŒÜÔqù¥ã• â5F8@ šˆ=@Šð)&°  È8Ô¹€ÂÅRx u€Dº\j2H—†ª¡ÐVÁ¹0CzL]ø Âb°ct‘I ©g$`htÑ‹0œÆ\F„áŒ0ä†sê‡á jd< —Iê6œ»õñzgóñºË»þê W ¤qÈ’£+—Ÿ#ö•ñÌÇkÄÞ .‰bªsré…¤šáæÄç†bïmŽXú¾„Kß7ǵHß7Géû„û¾nb§>&jÊØµäuœ¯¼ú•ñ1ÜV™÷•âÜãâµÇ‰Ou$ÕŸqWèS/%1{\øxB!€§ÔK(hH©—TЖ枃»J©Ïϯv×ÜëÁ=küÒ2ø¥UðKÏ‚_:~é$ø¥Óà—ÖÁ/¿Œ ~™Eð+7¿èË¢/ ÿlì¡ÛÒ(/}ïö -+ZXukoûìÔE?Z„ãæÅÛKýqíƒÄ endstream endobj 452 0 obj << /Type /ObjStm /N 100 /First 907 /Length 4494 /Filter /FlateDecode >> stream xÚí\ms9¶þž_¡ª[uw¨Ù´Zïê-foA!L€L “»“ô`»M»`¶ö¿ßçHm»ÄÁ pwæEZVKGÒ9ÏyÑé¶ŒÖK™6š íði™N3|:fêÆ3+è>c.E¿M™Ó ·‚9‹v+™O%>5óJlhk˜7ô‚‰Ô942!dʼÃ'ˆ´ö ÷4SƄҊi'±t†9xp“9Äw˜ÝY&2+74f’©!Š£Š`RfàТE)c)©5U,“†º<º<$Ð>c2ó†Ñ2*Å ¦„±:“¨ _gŠ))¨K£Bód~0—R¬fM-ÈnRLh°ŽʃC“bžÌ¹ “BÚÔR šhÀ“ Õ‰…uÀ…Ö `Ð*Ú f„ Œ *„ À0‚„+(B4…‰i*ŒFVG£pCÈ:«©Å2ã¡8#³)¸4R1+id´e©™õ„RB¹Vo}æ 6¨Á¢B:ðNd¤ÏœTPn¡"†S’ìE£¬ç4ñ‚Vð6$FyžeƼ†LFÁHyF X V6 &D¶f” àÎ( #%U Ë, ºEšz"w)™¡ÎÙˆA¢Fm]HâÌÀ²„4)ÕÀ½t€ÝÀÀ…̸Ðd|’ð#!•JÆ`„²ŠÚ0B“µ¸€íc 8¦/°8!ÆÌ^˜, –‰FXCëJôÚL’ [dô®£{pï¼J7îÞÝà‡Çãûùi±Á·ªQSŒš ¼)…lðƒbRMë^1 ~šžý2¿_}`oˆÆ ¨2“G|§®¦cv÷.ãÏ?¬óÑdœ×Ũ÷‘ñ]ÖÔS¬²…žíâ¼ì;÷ÿùÏ , ŠË©07šˆ¥ýºêO{E;÷O‹W›"Ñi"åpXyS¡ͳ۲mçMÁ¾Ûþ‡L¥©º)¼f3ÕKÓ¿îIÕÿ 8‹>ãóÁXì>x•<œÇùhD¼ž•†¿ÈÓßÙË¢ž`i¦¨³FmÊÄΘe¿l¯øÐìÝåðiÿ\áÓ¤âSás‰äÏ>‘C]#TúÇ ŸÎ𹘷Â\öW av½vÃXsED¡§†Ï‹(^_Š(H‰ÿ\E~:¢È?kD‘× õlj(ÙWŠ(WÍ{1!ËRy»„,ŒÖ×çk×MôÒ¹ì/ ¿«Oû·úæß_Ó¿MÜ‚¾¸wæíx ½ìø‹e ^­ýгDdD&ÌZÙÅòÃ˵Ï+ô:/”¸£·}âsr #äÅ\ƒÞ þ倎ÞI~F^v!» R\F ûêð{#˜$ù½q%þé…køºý4í§m?cVIïZã};NFú b†ùášUÝ/êÀzÄñ]¾õ&q,ü‘Ð0­7"õ‰ ¶R$RM…{RŒU*ñ©:šG¾WŽÞò{wï†Eø½ÅPþœ¿8إ뻳¦ÿƒóþ‡¤_•IUŸrGÿÔ§õ^fN¨;àöÖ +ÍiÆ0PMè¥é–áÂÆâù½ri’¦ŠOŸæÆ —Uý¡<÷¢)ó"¯¹L…ã©äÂB”,õ2É'M÷šÏ@Z—¤Š^ºc3Õô=‚H¼§WîÈÊ› 0'"MSDlpÝ;KzÕç5¶#lÜl e,?—_rañ™1 èSC_Hh؈ÿ\Átþ‚>K‘œ|¦•÷‰§¯Ë`w†iÌlûlÃVžŽ›D!Äýšê´¥B".R­«:ß¿ŸŒòfZAK à¿!PŽò?Ï«1õ¦5…6;›OΚáà_ÿõïÉt<CtçõÇÍrtRÕÃx}”œÅÃŒn³¨9)¿¡]V‹DY…Y%ôMÔÌ–¤0‰r7G‰DO‡EŸ®:$£ò,9­Îgž ùÀUrÒ;-ÿ‡šú?¨ ÁΨý÷¿›ªü0†‘ÅïhˆÄ´ü_$@Íl‚ò.ú~VŸX¥Gêþ‡––ò ™®›m.“ÆlÓ:iíz´R&™[o^c3ìWë‘ ˜µhµƒIªl=Z%›­'š‚‰ûl½Ô±“g_x¿Gßé:}Ó ó%l¿]_û:Úxc¶tK/T’µe80°jÂŽà™G©Bk¬9ÄD2’°WdmI.´¶}:Ö©oÝKvæp—Jíd ¬EàZ*ñ€} ½&sIô:ÓöºtÁs;C¦ÑkÝót¨"P¸€F;W¬kCüDf‘gRéæófZ'z™!0JÎikq| h¹sQZ…‡QxéÔUJô‘Ð*G2Œ×aÆØâ²ÅÈu,UMyÒÒðDÌVuÚc=”°·sÊÏbqe+F¦tŠÅµk…¡ð6¨"V„BªÄ’ùõ„’î÷¢ðt$Ç€N+‚Yg–JP!Q1af ìÊÔ&qN$± ”:%óÍHVbÓP/pšÙ†^jñÒš•Dm4Æ/„_]½‰i_mÞ Ç 4*%Åš48öÑd¢Ò“ôdºZOç‰s¯l­22CÆàuFÈóÊð€ç¦Ô…¹(“¦Çoês&ÐAK„f0cOÙhØ„ˆ W6ôÚ%‡åc ™%´ë„e&“Öž8¥ÃbQ*˜»†ÓD:K§Àhel­–苜`Ü$³Ö–ô ýÑy6OA&6̬èk‡£ŽÖÈfIpKçÍ`AxÌR†:]il _B!$Ä ªh}zßpõ?êGâhèRÆ„yéò>CøpKk(Ÿ…m;7]³1Ÿºæô˜c~:Æ%LXŒ.G'ϤŒ÷Ä9îÃ@EíA0hIq4®¥›kë0¬ùÜÔ>c‚.úzqäœQRC‡áyxñx}úV Ý+¨ ¨ÐÏçríâÅYDÛWcÝÐÁ5¯vt(}&ÄùX§G:vöÌn™’S¸@cCŒŽ{FÛÚ•JC\3´Á“Z²h€¦-;³ÅúÒlal¬ÓÙü&–6l…tÄÓ` Ÿ†„‰½- t(.nѯڭ„JS‚#´Ê0Zú˜XñÅ€Û‘sêXªÀƒ–„Nq¾%ÿ¡„pÈaÙôÞ})ëˆÛ·œñ[ÎØÉ¡mÝÎÒÑYà[¬@û ÌCi"¶±D²6C¸[vîâÜ-g˜wïàÑî–‘›V‚YӢݖ1M¹„yÛBò«ÂJvî–ä%á.ÎÝ2†Äò]ü#ÚK¥óDÏ[eå+Ju8îj¢[^N~Z ˆu5²ªÌWÑ—tqI/1Â!â^ÓE™è*ârÙUK·ìþåpŽã#Ñ6A0+³F‚`feg¶ÿ ¬—ö޹ÿÑ¥ñH¡Ii·H†gIu7¦ü4£8ßæÀ×æÂÆÆ>´ß6žñ=磓󆇈Î'ÑP½›CÏèÃÃBÛ7»ÂÃBg\àwÏÑ…ãÛŤW—㦪㫿xøaï——{/¿ßzòdW¤è䧦#Åýð漣lSJ$´§§Ø£ ~oB¯pi÷Üà[ùøQQžž5´™lpZ†ú6uî6ù ìÝ ´ áyS _® þª¥•À$gyM¯¿ã÷ù6Â_óïUÃaÎû¼à§ü4§zÉG¼âc>.ê²êóqÉk>á“A>9ãÓ;‘é‡%–2Z^}äj¶·ïí> ¸«1-‰/+!ø¿[FßD˜­Ý×O÷!ÌÁ*…êt¦Ð4ûiÒ™,6[)Kñnšx5*x8 @gZb­&j>L'˲ڛÈútçÅãç{$ë ½I7Sœ”_DT·ZTò÷¢®–åñ7‘gkwÿ`ò<½Jy2c›™%‰¹»YHñngŠ:])S^×Õû¨ªI9,y½$]û©u¥Û{öpçþ÷÷‹:ž&OªQµyP óÑÕ’¨N!<¦–eÒwät¢+§“YGN)å ÍÉ´ãqF»®˜÷v¶xð‡|'|“ö#ßCzÊŸñ}þ?àÏù!Á_òŸù+§œç“^YƃWù¤A<š¼åyÃùq÷ÞM0ô¶ñ£€6¨Fó°Ö¯€Ñ-pÔ:Ê ?)Ï ~RMkD½3~öq|VŒø~ãoù€Ó10>D•0¶ÑtxL'ùN)*[ádEŽ‚ÍÂ&|Ž¿‹gÌúǃC‹s,3)?´Ñ´áÍY]¼y_ñ)ŸÒ—t“^Uüœ¿çøGþûeS77йl½Ü=\6†gǃòÝ´¸Úœhí!×ÛYðj{Øâ&Aö@–°?·|¡ðã¥]ª«ÇâCo?¥ÎÛh’4¸¬±[éêF[Êë—¯¶^¼ú~ï iJ¤›Åé¶»bw‘Ø^vX‚0eôê K·ë]ß PZ_ï¹?ỿç§"óöLåÐNòQ¿õàbî¿ED~m·žÛÁ¨OŽ4wkú+yø#‹ÜÔ(â©ÏjÎøúþN®^L·ùÁç#Q´¡a¹¿Þÿ¯3¤í×;?îìüô¨5$ÿ ;B*°©„¦_§ìhi£K6”®0 ïVÐÌ™‡ys¶,ÙvîÇ[/½Ø]¸¾6œÑÏÚ±™;&|Jn¢ní&›BÎäº+¨ñ]A·ƒOÀúaëVG6ÒêEli ïß—À°7Úèw^îííî,ƒ±›¶(8ûy(Ìu-”]‰Á³ŽìmX® q×Ú/Y¸½Ñ¶öôñÞ“¯¢_ov*éwëŸ*;6à³5ƒån&A2šÅ0Ä©¥Ð4 L³Ýé]k'³ø¢Ã%än´É¼úé—ƒ÷¾Z§ ·wÙ§8ú_ Rúf3ëd´áw³CÙÍ„[e5º› (¹ Ûö•`ÍBÿ"è¯Üï—û2ˆ«6ò÷WBz£pûã/‡öwºRÄ]©>Þ¤H°Œê@*–!˪UA×t•jÑå=›°½¸[/ŒqÛÁ5ðΓ§ÙÎwÀó]íÈWýëê_m(ðÔšå{󜺳w·y~»)ãaëêM{žT†ô<†¨V¾Vš¸3·AJ"Šðà„ <ˆ1 æŒQñé!$$ÌjzZ¹”<áòúì‰e¢› ±L-eC°›NÊ2× )AeÝ,§ê’Ž:˜¶ó|u´–"¤h3.&]H¶Ê`)'%S¦£ ¦Ü<=Zä|´è*Ý Œ~y…,’/fÅL+jžª1kn•Û^«œ[©c‘ÓÿíÒɉ™”ºÍŸQõ‹¤šI­Ú„U»HZ×S¥–KIÙÑ:¿äZü~ëâ Í¥àþ‡šð3“‡e=i( 1Š_{ùì†6ˆŸË~s6 ÿGN =¬^Œ ª~N#µ¡ávL6w endstream endobj 571 0 obj << /Length 695 /Filter /FlateDecode >> stream xÚmTMoâ0½çWx•ÚÅ$ !Ù ‘8l[•jµWHL7IP‡þûõ¬V=Mžß̼ñ s÷ëu;ÑU··õÈÙ›=w—¾´“ì÷îÝÝå]yil;<[[Ùj<=?±×¾+·v`÷Ù&ß´õðàÈ›¶<^*;²~&ûQ·‚>ìþÝþ”MS§“ý¥>u;áà¾×ÃÑq~:fc_0F)l®»ö‰‰GιÖm•u f8GÓ«6•ê¶ê¯bØÒ"!YU—Ãõžeã.ÉÛÏó`›M{è¢å’MßÜáyè?IáC4}é+Û×í»ÿ¢Ìl/§ÓÑBãÑjÅ*{pÝìϻƲéOÞ(ïŸ'Ë$½ ¯ªì*{>íJÛïÚ-9_±eQ¬"ÛVßÎ$÷)ûÃÈM—ÏñP:^9À ^`„ª‰Ø ¤Ÿbr š€Œ@ ‘{@(\,…RH¤Ë¡&€ti  mœ+3¤ÇÔ…Ï ,;F™$Б€‘zF†F½ÃiÌeDÎ(ó0œAº1a8§ÎyΠFÆÃp™ nù[¯w6¯»ü·ë¯Îpµ@‡ )9ºréñ9b_iaÏ|¼Fì-ÐÐà’(¦:×ù(—nQHªY^`nA|n(öÞæˆ¥ïK¸ô}s\‹ô}sÔ‘¾oA¸ïë&vqêcâ ¦Œ YK^ÇøÊ›!¡_Ãm•y_)Î=^ ^{œøTGRý÷w…¾1õR³Ç…'ÄxJ½„‚†”zImiî9¸«”êðøüj'pͽܳÁ/-ƒ_Z¿ô,ø¥ãà—N‚_: ~iüÒyðËÈà—Y¿2qó‹¾,ú’ðÏÆºíŒòÒ÷nЪ¢5Q·ö¶ÍNÝ Yô£58.]¼½Ñ»á‚ò endstream endobj 573 0 obj << /Length 739 /Filter /FlateDecode >> stream xÚmUMoâ0¼çWx•ÚÅvHU„dçCâ°mUªÕ^!1ÝH ý÷ëñ#xÙö?ŸgìÁÜýx]OTÝmÍ$|äìÍœºs_™Iöss îîò®:L;<S›zœ==±×¾«Öf`÷Ù*_µÍð`É«¶ÚŸk3²¾'ióÑ´ž‚}Øý»ù=©½à“í¹ÙM;áà¾7ÃÞr¾›f¶ÆnjÌ-ùeúSÓµOLg~¼À8÷ã ãâþÈ)okà çA„8 ö$`I\èÎ×3`çAfŽã<ÈZ]ƒÂ!‹„ê xNkÇyã¹ãÐð"œ7Á¿ _¥ã“§Ìq âH`òáö•‚nú¥¤kÌÂðRONH=CpB:# =Ñ%8“ˆ88QA~¡!*ÉzÆœøÐäT?!~Ž> étw©8éÄy*ás£¤Ï }nÔÌçFE>7*ö¹Q‰ÏR>7в¢ G]¼;~îó¤ŠÛ<©ò6OšßæI‹¯yÒòkžtèó¤g>O:òyұϓN|žôÜçI/|ž´òyÒÚçIg>O:÷yÒ…Ï“.}ž2îó” Ÿ§Lú> stream xÚmUMoâ0¼çWx•ÚÅvH U„dçCâ°ÛªT«½Bbº‘ ‰B8ô߯ß{ .Û@ãçñóŒ=˜»/Û™®Ú½…œ½Ús{éK;Kîºàî.kËËÉ6Ã/k+[M³ç'öÒ·åÖì>Ýd›¦yÓ”ÇKe'Ö÷$cßëÆS`vÿfÿÌÊS¯fûK}êfÆúVGGùf–¹û\b¸à·íÏuÛ<1ñÈ9w…¼©ÒöÎÁ|Á擬CÝTý¨„íAW $«êrGø]žÜIÀâíÇy°§Mshƒ$aóW7yúÔ÷ÌŸûÊöuóÎî? sÛK×-ˆ`ãθtJ!±'™ˆcøÀ8õãŒ3?NaœâOœâ¶<Dg!Àƒ;IXô ôÀÍ0z)rЃÌ@« kÐpÈBQ]^ÒZä 7ž!‡î /½‰ü òU Ÿ<¥Èɉ#“ÜW ºmÐ/%]cXß!õÔÀ ©gœÎÈ€žhŒœIDœ8QN~ACT/ès⃕QøŠøôQ¤ïRsÒ ç©…Ï–>7:ô¹Ñ ŸùÜèØçF+Ÿ­}n4eEƒ=zG~æó¤óÛ<éâ6O†ßæÉˆ¯y2òkžLèód>O&òy2±Ï“Q>OféódV>OFû<ãódRŸ'“ù<™ÜçÉ>O)÷yJ…ÏS*}žÒÅõÎð—¿tx›à½>zå¥ïÝ{ˆO->tðÄÕ½¾Æ]ÛÁ*üà3>ýcÀè¹þ¤C§~ endstream endobj 575 0 obj << /Length 900 /Filter /FlateDecode >> stream xÚmUMoÛ:¼ëW°‡éÁ5?$R. ¤d9ôMðð®ŽÄä ˆeC¶ù÷³k›m‘CŒÕp¹;;†wŸ~>Î|¿Ž3óEŠ_ñ¸?O]œ5ß¶‡âî®Ýwç]Oßcìc]=~?§}÷Oâ¾yhÆáô9%?ŒÝ۹׬“B|Æœ‚>âþ)þ;ëvÇw%gÏçáí4Œ3‰ä§áô–’>\ ‚‚6ý§ã°¿ õEJ™€õØ7ûÆ8ó 1¿’{Æ~ºðÏ`W(-ú¡;]¾è·Û%=°ùñýxŠ»‡ñe_,—bþ+-OÓ;qü\ÌL}œ†ñUÜÿI--=ž‡·B«•èãKª˜æÿ¾ÝE1ÿpÆ[ÎÓû! Mߊyuû>Û.NÛñ5K)Wb¹Ù¬Š8ö­iÇ[ž_®¹uÊ•MúÑzQ­Š¥Ò)V†€Ú(TØ€àx¿àÞ¢ žjy‹°°!ÀÐÔ•µZÔÀ2àP="¦ZdÔ0\ÃG©R\¡·”).–2*ÎШa!„U¼Ä,†³ÔÛHð° `+jÐÃ.¸5Nα@èâ°èÐVK-àxŸ%ô˜Ü3š% A°YÓ€z¡ÎšÔ>kP#¬³¦õ™5m0W£oš¦Ã¾žj­®§Üý·.†ÐZ¡ŽT$X/©)n)æ#W—„o(æ“oÀRZÞ $K¢p4’ŽZ¶-bâ\­1¦Ü°Jä æP"Gñ‘XÔQ¬‚i/8ºkÉ^€ÂZqŒ:ZsŒ½š9”d š­Bù Ž)ßsLù-ï7½æx˜ÏJ›¡¾Ò`¯ažÉ½)f¥É$†µ’1™¸ dÑŠcªCZCù<£7Ã3JÊgózÌnøþHȰíáÌYÉšäTœ¯a…Šï¯Æ,_»œ-Ÿ—Oë87Ë}êÛKÔ´Ü—Ll¹oKñšò+Êg­JÌâ.¾GZyóº‹Vðc­48¸’ï¼äØWtù]Í:P~`áŒñ±–rZŽq.nÍ1]Ç ÇàSÿæ/©ßP•ýïuö¿7Ùÿ¾Ìþ÷Uö¿·ÙÿÞeÿû:û?Èìÿ ²ÿƒÎþ&û?”Ùÿ!dÿ‡&û¿1y–¦¼ÍH·œn5þ¹ã)º½ÝyšÒ“Bï½x#†1Þž´Ãþ€]ôGoáõñÅ×Mñ?®Xê endstream endobj 576 0 obj << /Length 843 /Filter /FlateDecode >> stream xÚmUMo£0½ó+¼‡Jí! ᫊"RÛVmµÚk N7R$‡þûõ›Úݪ’çñ›™70W?Ÿg¶í_Ý,ºÕêÉýehܬü¹=WWUß\Ž®;ß;׺vÚïÔãÐ7ÏËMµéöçOÞtÍáÒº‰õ=©poûî“‚>êúÅýž¹fv8Ž£Ñþ öËþ|ð¬ï ÊGÕ—¨¢´_n÷}w§Ì­ÖÚÖ][öGL2sQ£æ“¾Ý¾k‘¤^!00¡j÷ÍYVôÛ½%H~~Ïî¸év}°\ªù“ßÏÃ;©¼ æCë†}÷¦®¿hó{Ï—Óéà Cé`µR­Ûù’ÞƒûíÑ©ù÷c~^ÞON…´6¬¬é[7ž¶¶Ý› –Z¯Ô²®WëÚ/{FR^wwí¹ºö?¡ŽòU°4H6!L‰@Œ@ÂÈBŒ€Öû@æq\s óŒ”*댌G|F/+>ã¹´â3úZñ~Zñ™8â3f·â3ô[ñ:­øŒÙ­ø ߬øLõÅgè·â3tâ3úâ3ø…ø ~!>CO!>S®øŒÙ ñ™øâ3ñ3>ËIƒY ñ³â?žÃBü§šü®XªÉïIAuÄp*îÇŠãq„ G“ì潪–ŠN$Äøp|òÍeüùO_:Õqžï;÷ñ:õ'dÑE_®ék‰ÕCüvµØW endstream endobj 577 0 obj << /Length 845 /Filter /FlateDecode >> stream xÚuUMoÚ@½ûWl‘’aׯ_BZÛXÊ¡I¢ªW°— ldÃ!ÿ¾ûf†¤mšèíì›™7ÏöîÕ·§ÕĶýÆM¢[­žÝØŸ‡ÆMÊïëcpuUõÍùàºÓƒs­k/»ãzúfåN꺼¯î»Ý鯓ï»fnÝ…õRá^wÝ}Ôõ‹û9qÍdÇMo´Xjð_v§½ç}EQ>®>Å¥þpøë»;enµÖ>°ìÚ²?`ž1˜Š&5½¨Üîºvaj™ U»kN²¢ÿæàAòêm<¹Ã}·íƒù\MŸýæxÞHéM0}Z7ìºWuýIß]ǽƒ¥ƒÅBµnë‹z/Ö§¦_ ûN{y;:ÒÚ°º¦oÝx\7nXw¯.˜k½Póº^®kÿÙ3’²Ù^¸KÏÕµÿ u”/‚¹A² )`JbD>`´öØ2ãš™$`¤TY'`ä`ä9&£D—ŠkxÌ+0*N©ÀXÒÌX‚QƒQ3Ãc w™"Ÿ]¦j~­1À·Fš6„‹0ÆÒa™G„+Œ¨gıè«cŽWÀ c œrn œqœø9çÖÀ–ãðQÜ—8%Ç àŠDMq.â†5„Sâh²Ÿ]‹`£áú4®Ÿ$øa]~¬é9Vkª³üƒáÔÇÀ á]8 éI³n¢cžTž5<ÊÈkã­õØ0†×YÈÚ²ˆ1êg3ÆK`òÚYÂõ³”1q2ž2ñ‚ú’f_²‚14g%cx”UŒ©>Íob¼YÍ:sÖ£oÎúcðsÖOïPÎúcèÉYB¹¬?Áì9ëO‰Ïúâ³ÎšsÖ™âç¬3¢\ÖQ.ë4ôٰϳXñ3Zñ9Ÿ‰#>£—Ÿñ^Zñ}­ø ?­øLñ³[ñú­ø V|ÆìV|†oV|¦úâ3ô[ñ: ñ} ñüB|¿Ÿ¡§Ÿ)W|Æì…øL|ñ™øŸ „å¤Á,…øY ñïa!þSMþV,Õä鸞:â?8÷ŠáCÅñ8ÂG“ì潪–ŠN$ĸ<Þùæ< þ †Nuœç»Î½_BÇþˆ,úÑíu¹7±z¬ƒßæÜl endstream endobj 578 0 obj << /Length 846 /Filter /FlateDecode >> stream xÚuUMoÚ@½ûWl‘’aׯ_BZÛXÊ¡M¢ªW°— ldƒÔüûî›’¶i ·³ofÞ<Û»W_WÛö7‰nµzrc7)¿®ÁÕUÕ7çƒëNßœk]{ÙïÔãÐ7+wR×å}ußíN7ž|ß5ûsë.¬ÿ“ ÷²ëÞ)裮ŸÝ‰k&ûÃ8n~í–üçÝiïyŸQ”«qE©ßÝ0îúîN™[­µ,»¶ì˜g ¦¢IM/*·»®D˜Ú@f`BÕîš“¬è¿9xc¼zOîpßmû`>WÓ'¿9ž†WRzL†Ö »îE]PçwWçãqï Dé`±P­Ûú¢Þ‹oëƒSÓφ}£=¿ imX]Ó·n<®7¬»̵^¨y]/×µÿìIÙl/Ü¥çêÚÿ…:ÊÁÜ Ù„0%1 " 0Z{ì™ÇqÍÌ0Rª¬0r0ò“‚Q¢KÅ5<æ§T`,if,Á¨Á¨™á1†»L‘Ï.S5?׃à[#MÂÅ cé°L€#ÂFÔ3âXôÕ1Ç+à„±N97Î8Nüœsk`Ëqø¨ îKœ’ãpÅN¢¦‰8qà Â)q4ÙÏ®E°Ñpý ×Oü°.ß×ô«÷5ÕYþÁ¿pê¿cà…ð.œ…ô¤Y‡7ÑŒ1O*ÏeäµñÖzlÃë,d mYÄõ³ã%0ymÈ‹,aŒúYʘ8Ï ™xA}É 3ƒ/YÁš³’1<Ê*ÆTŸæ71Þ‰¬f 9ëÑ7gý1ø9ë§w(gý1ôä¬?¡\ÖŸ`öœõ§Ägý ñYg Í9ëLñŒsÖQ.ëŒ(—uúlØg‹Y¬øŒ­ø‹ÏÄŸÑËŠÏx/­øŒ¾V|†ŸV|&ŽøŒÙ­ø ýV|†N+>cv+>Ã7+>S}ñú­ø …øŒ¾…ø ~!>ƒ_ˆÏÐSˆÏ”+>cöB|&¾øLüŒOÂrÒ`–BüÇ,…ø÷°ÿ©&+–jòwRPñœŠ{Åð¡âxᇣIöó^UË E'b\oÇ|sÐ C§:Îó]çÞ.¡cDýèöºÜ›X=ÔÁoNÜ™ endstream endobj 579 0 obj << /Length 845 /Filter /FlateDecode >> stream xÚuUMo›@½ó+¶‡HÉÁñ.˜¯È²´€‘rhÅQÕ«ëÔ’ ؇üûî›’6jØo‡73o°{õíq3³mÿâfÑ­VOnì/Cãfå÷í)¸ºªúærtÝù‡s­k§»ãzúfãÎ꺼¯î»ýùÆ“ï»æpiÝÄú?©p¯û>êúÙýš¹fv8Žco´ÿÇJƒþ¼?<í †òaõ9¬(ñ§Æ}ßÝ)s«µöu×–ýÃŒÁ\©ù$q·ïÚAT©h L¨Ú}s–ý6Gï ’7oãÙï»],—jþäoŽçátÞó‡¡uþ{UןÅù››Ëétp¢t°Z©Öí|MïÃíÑ©ù“¾³žßNN…´6¬­é[7ž¶¶Ý« –Z¯Ô²®WëÚO÷Œ¤¼ì&îÚsuíBå«`ilB ˜„‘„­=öÌã¸æ@æ )UÖ 9yŽ€IÁ(Ñ¥âË ŒŠS*0Ö43Ö`Ô`ÔÌðÃMSä‹iªæ÷v|k¤iC¸Xc,– pD¸ÂˆzA‹¾:æxœ0¶À)ç¦ÀljŸsn l9uÁ}‰Sr¼®ØIÔ4ç"nXCA8%Ž&ûÙµ6®AƒáúI‚ ëòcMϱúXSõ_ü‰Sÿ/„wá"¤'Í: ¸‰fŒyRyÖð(#¯·ÖcÃ^g!chË"ƨŸ-¯ÉkC^d cÔÏRÆÄÉx~hÈÄ êK^˜|É ÆÐœ•ŒáQV1¦ú4¿‰ñNd5cèÌYŒ¾9ëÁÏY?½C9ë¡'gý å²þ³ç¬?%>ëOˆÏ:ShÎYgŠgœ³ÎˆrYgD¹¬ÓÐgÃ>[ÌbÅgÌhÅçX|&ŽøŒ^V|Æ{iÅgôµâ3ü´â3qÄgÌnÅgè·â3tZñ³[ñ¾Yñ™ê‹ÏÐoÅgè,Ägô-Ägð ñüB|†žB|¦\ñ³â3ñÅgâg¼3–³â?f)øO5ù[±T“¿“‚êˆÿàTÜ+†Çã¶&¹G˜ïUµìP´#a#ÆÑñ¾Ë7—að/´«c?ßwîý:õ'dÑEg×tdbõP 2Ú‚ endstream endobj 580 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTMkã0½ûWh…öF’G*!àØ ä°miʲ×ÔVº†Æ6v²Ð¿óFrúÁBbÞŒfæ½}\ýxÜM²ª}q“øVŠ'7´ç¾t“ü羋®®Š¶<]sºw®rÕ¸:܉Ǿ-wî$®óm±mêÓ o›òí\¹1êÿA+÷Z7!à×Ïî÷äð÷Ø›~B?‰¸çúôFëß—Ùâb ýåú¡n›;¡n¥”äX7UÞ¡{ˆ¦[LG5‡º©ú @¼@N¤´¨êò,þ–G’wïÃÉ·Í¡ 1}¢ÅáÔ¿³²›húÐW®¯›Wq}QEÞݹëÞ-—¢r*F½ÞïNL¿7uY~~ïœÐl+¯¦l+7tûÒõûæÕE )—b±Ù,#×TßÖTHy9Œ±)ÅÊ9>*QKr¬7ì˜äP†°²ôÑ:MÈ¡Q^sž$LDÌ6ÞaÈ‘*Âs.$S5ˆ6`Ñ>ÅÆ„m•Ãë#TLŽ 5²œkd¨‘­}WìXssc‰»*ÿì{ê¹Rýh/#¥?Ûñ‡ béE$èLÎ|Ú–Æã°õ8^yŒ>eÎSQc’ìÏçÀ̯bÈV̯cöâNa'Ÿì O;ú Q¥~ú˜œš{Î5pÆX2ÿÊû™Óë¢]$\ ^œsnØÆa¿ K‡¹ƒ?•£?ãq FqMyíc0Ã=) &l(´™™ßmôiü,sÆ|’d &ã\ÖcVÞ †·]͸&ôÓˆ9wí{dÞ ã:màB¼ ûƇÊú\ö.ÌÇ.Ô± gÎ~nà²Ì5Ë9&\pe…Ÿ[N Ÿ8\4<—ë[žûžn6¿|kq_ëÆ]•®íÅ~Æ÷ÖÃ&úü)a endstream endobj 581 0 obj << /Length 666 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öÆ6„ØU‰@"å°mÕT«½¦àt‘@¬Ô¿ßycÓt·+%èù13ïÍØæêÛãn’U틛ķR<¹¡=÷¥›äß÷]tuU´åùèšÓ½s•«Æ·ÃxìÛrçNâ:ßÛ¦>ÝPð¶)ßΕ£þ´r¯us ޏ~v?'‡ßǾ5ý„~Ïõé¾¼Dˆ !8ø‡ë‡ºm•R±nª¼=ÂúMƒ¼˜Ž†uSõÁƒx£HiQÕå)¬øYiHÞ½'wÜ6‡6Z,Äô‰^§þ½ÝDÓ‡¾r}ݼŠë‹-¢wç®{s° d´\ŠÊ¨õ{¿?:1ýÒ×Çûç÷Î Íkåý”må†n_º~ß¼ºh!åR,6›eäšêŸw*¤¼ÆØ”b啨%kà ó‚e+K­Ó„òšó$a"1Ûx‘*Âs.$S5ˆ6PÑ>ÅÆ„m„ÊA Âú‘¡F–s 5²µïЉ577v‘ر«ò×¾§+uaÑö6Rúó:¾¬!,½‰É™ÏCÛÒx¼¶gÀ+ѧÌy*JcL’ù|Ìú*†mÅú:fþ“vŠuòiü©Ùß<ªÔO“Ss¯¹ÎKÖ_yž5½/ÚEÂêÅ9ç†-aö ¾t˜;ôSé1ú3gð`×Ô˜‡Ñ>ó0Ü“²ð`†›™ùÝFŸÆÏ2gÌ'IÆð`2Îe?fåyx0¼íjÆ5áŸF̹kß#ën'ðiƒâmØ7>TÖç2´0´PÇ-œ9[ø¹A˲Ö,ç˜p •~nE8|âpÑð9ø¸¿å¹ïéjó7ƒo-îkݸÏJ×vÈâ?ÆV›èR`c¬ endstream endobj 582 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTMkã0½ûWh…öF²G*!àØ ä°miʲ×ÄVZCcÛYè¿ßy#9톅ļÍÌ{3ú¸ùñ¼›¤es°“è^ŠÛ7ç®°“ìç¾ nnò¦8Ÿl=hýzI-.¶àÐ_¶ë«¦~ê^JIŽu]fÍ ºû`ê¹ÅtTs¬ê²óÄrв*oñ·8Ѽûì{ÚÖÇ&X,Äô…û¡ûdewÁô©+mWÕoâö¢Š¼»sÛ~X(2X.EiTŒz}ÜŸ¬˜^7uY~ýl­ÙVNMÑ”¶o÷…íöõ› R.Åb³Y¶.¯Ö”O9ÇØ„bå«%9ÖÀvÌsr(MXú„a“#Dùó$ar b¶qMŽDžs!™ ¨F´KèRLDØÄìPˆ0.BEäHQ#͸FŠéÚuÅŽ577v›±«â}ßQÈ•anÐOèd$ôg;ú²A,ˆÉ™ËCÛR;¼6§À+‡Ñ§Ìx**Ę$û³90ó«²ó‡û¿q'°ão¶×§fÿú Q%nú˜œš;Î5pÊX2ÿÊù™Óé¢]$œ£^”q®ßÆ~¿ +ôs"FÚá´âš!æ¡CƒyhîIhÐ~C¡MÏÜn£Oíf™1æ“$#hÐ)ç²½r~hмíjÆ5¡ŸF̹k×#ónÇÐi<âß7>TÆå²ßsa>Æs¡Žñ\8s&ws—a®YÆ1þ:€+ÍÝÜrùÄá¢á1¸\ßâÜut³ùÅà[‹ûZÕöò¨´M‹,þók4¾w°ž6Á_%aJ endstream endobj 583 0 obj << /Length 665 /Filter /FlateDecode >> stream xÚmTMkã0½ûWh…öF’G*!àØ ä°miʲ×ÔVZCcÛYè¿ßy#9햅ļÍÌ{3ú¸úñ¸Ÿ¤eóâ&ñ­O®oÎ]á&ÙÏC]]åMq>¹z¸w®tå¸Ú߉Ǯ)ön×Ù.ßÕÕpCÁ»ºx?—nŒúÐÚ½VõgxÄõ³û=ißþt¦›ÐO"î¹Þiýû’ [\lÁ¡¿\×WM}'Ô­”’›ºÌšt÷Ñ4p‹é¨æXÕeˆȉ”eU Áâoq¢ yÿÑî´«M´\Šé-öC÷ÁÊn¢éCWº®ª_ÅõEy÷ç¶}wP d´Z‰Ò©õz891ýÞÔeùù£uB³­¼š¢)]ß ×êW-¥\‰åv»Š\]~[S!åå8Æ&+ø¨™Z‘c¼eÇ"'‡2„•¥ÖÉŒå5çIÂä@Ä|놉"¼àB2AQƒhíSlLØÎØ¡28a}„ŠÉ‘¢Fšq5ÒïŠnnìbfÇ®Š·CG= WêÜ¢íe$ôg;þ´A,½ˆ:“sŸ‡¶¥ñx l=N×£O™ñT”Ƙ$û³0ó«²óë˜ý_¸س/vЧæÿú Q%~ú˜œZxÎ pÊX2ÿÚû™Óë¢]$œ£^œqnØÆa¿ K‡¹ƒ?‘£?ãq FqMyíc0Ã=) &l(´™¹ßmôiü,3Æ|’d &å\ÖcÖÞ †·]͹&ôÓˆ9wã{dÞ-ãtÚÀ…xö•õ¹ì\˜ \¨cΜÍýÜÀe™kžqL¸àJs?·<œ@>q¸hx .×·8wÝl~1øÖâ¾Vµ»<*mÓ"‹ÿü﬇mômDaš endstream endobj 584 0 obj << /Length 700 /Filter /FlateDecode >> stream xÚuTMo£0½ó+¼‡Jí!m0U ó!å°mÕT«½¦àt‘ˆ€úï×o†4«j{ÀzÞ̺v|t®võåïð žû®ÚºQÜf›|Ó6ã'oÚêp®Ý…õ’uïM{¥ ¸}u¿gã f‡ã0?ÒD‚þÚŒOû†!|X| Jüåú¡éڡ>P´uÖ±˜!˜O‚Äü"qß´u?©oÐ(-ꦧÕÑ»‚äíÇ0ºã¦ÝwÁj%æ/þç0ö¤ó.˜?õµë›ö]Ü~çnϧÓÁAˆÁz-j·÷5½»£óoVúÉzý89¡i®X[ÕÕn8í*×ïÚw¬¤\‹UY®×Ö_þÅœñ¶Ÿ¨!¨aâ)=Vfá±YúAK@ª=NSbxì…ÇVq ð † ¹5lL} C à@Fº. ¢ð¢¨ú³ë'íRFh-Õµ„D©³˜zé<^°¼äx1NcΠljÏëNKà”ã °å¾ÄÉ8ns²E¡¦ÒŒa€B¯2Ê £¾V ô«„1<ѬSc-š­ÑУÑWkE8ã8Ö¥Ù-šº¤^ ä†àèPCg˜s.ê‡Ç¡m ý:.àÕ2gŒúË‚õ(à’qèqôçq¢ubòYÅðÇÈ«oF]ý4úê¹á3â(QNÄA‡‰ ó3|¼ Û°G:LzõÈØë‰3ä ûhxR¬ÁŒáEÂû‘"7Yp/hJXCŠýKHƒ¢¾ ï½…¶„üR¤3əߪ¿$SÞ›{cYˆšvº;ÐcY¿…wÖòÞæý£ÜœÎ¥Ìá]ɸŒ§A7w¯ÌçƒPûÞ¿ôÑ€«ß´îóµ:u'dÑGÏÜåuÅì© þGß}Ì endstream endobj 603 0 obj << /Producer (pdfTeX-1.40.22) /Author()/Title(\376\377\000D\000R\000I\000M\000S\000e\000q\000:\000\040\000D\000i\000r\000i\000c\000h\000l\000e\000t\000-\000m\000u\000l\000t\000i\000n\000o\000m\000i\000a\000l\000\040\000f\000r\000a\000m\000e\000w\000o\000r\000k\000\040\000f\000o\000r\000\040\000d\000i\000f\000f\000e\000r\000e\000n\000t\000i\000a\000l\000\040\000t\000r\000a\000n\000s\000c\000r\000i\000p\000t\000\040\000u\000s\000a\000g\000e\000\040\000a\000n\000d\000\040\000t\000r\000a\000n\000s\000c\000r\000i\000p\000t\000\040\000u\000s\000a\000g\000e\000\040\000Q\000T\000L\000\040\000a\000n\000a\000l\000y\000s\000e\000s\000\040\000i\000n\000\040\000R\000N\000A\000-\000s\000e\000q)/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20231024170505-04'00') /ModDate (D:20231024170505-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev) >> endobj 572 0 obj << /Type /ObjStm /N 59 /First 497 /Length 1851 /Filter /FlateDecode >> stream xÚYmSÛ8þž_¡å˜6Öê}¦Ó4¤¼]éM?ð@¦sI¸»þûÛµGŽe2Tö®v÷ÙgW²l¸–0®ãR3n8‡÷F0)ã‰dÊX8æé%ã<á(@#0Šq‡©x¯j@ 6!#täÈ"± (  ©Y‚À ¡P*ñB*Á@á…²¨ÒÂઠ—=8"\‹^¬àÌJ­c6AÌ:aF3‘ §¬-Ž(×’ tÉðR C Ió““8O Í$ÎÓˆLâcT¢„¡|2›/éŒz¡×¥Ë;.zý?'w‹‡9SØ2Åä‹ür:¹Íï2L…¢OŸÞ€hpp}2¾@Dg˜H‘YG$“æÑÄ#ÞŽçdxyx>"<1‚\Ž àHÀáM8òípƃƒñÙáœ_ÇøQ|Èê® H½ÐõÕ·Áå·íÑñy:óäýYvÿò˜Î"Ð¥@©²Ê¹ûS6™ÞÓ‚i¢ÕoG{8¸üry°B»›?ÞÞ[Óª¤SmJÌÖ¸6%fk£Ù6pG“²ö¦~ݶGЭÔ*‚¥Tå üc®øsJ1ú7¾â)~„®ÇàúR/—û ýÙŪu9šöú ì®Äì\¶NO{Ù tùL8Héc~ßóoã«ûåûtp )Š¥“ê¼sŸçwYÿrž­^¾OŸ³éN¹êhþ?V‚XÓ endstream endobj 604 0 obj << /Type /XRef /Index [0 605] /Size 605 /W [1 3 1] /Root 602 0 R /Info 603 0 R /ID [ ] /Length 1544 /Filter /FlateDecode >> stream xÚ%–}hVçÆŸë¼oÞ$Ƙ˜k4ÆZ«&ÆhóaŒš¼ñ+QãGL¢&Ñ8º¿J¿é­-¥Ù†Ý(ýØ`]alÐAÿÙØ:XŸ)µec³Pe2˾ÀŽŽ®H×îù]þó㺯ç9ç¼çœû¾ÞB¸ó«,„,(´êh²þu( Là­Eå@Ìà­A•€˜Å»U ÊÀI¼Õ¨r0/!æñš)+À|¼¼&ÊJ°¯€·Š² TãÕâÝF¹ÔàÕã­¤¬‹ðºñn¥¬‹ñðVPÞ–¤Û.Vã5RÖƒ¥x‹ð–S. xÛð(½Ðˆ·Ï[|Ò[ñvà-¥ôº o'žOï›iÂ;…·„Òb5ÞžšbzºŠóñøõ™_À:¼J<ßV hÅkÅãγõ  lí S!Tùýn›Ø<ø±û~«¨2àg_B¸Ë ²9©{¬º“ºÏª'©¬z“zЪ/©‡­¶$õ¨URYmMêŒÕ@ROZmKê)«íI=mµ#©³VƒI³Jê›VÃI}ÛjgRç­v%õ]«ÝI=cµ'©ï[íMêY«‘¤ž³M*Xí@—Bö+?¦ýܾ»³‚Cà08&Á˜BéO}Ä8GˆWq•r ”…~° pÄ1pœ§iQN=y§À”BÝ͹œæ°m¬2’Ñ6§Ð´ÇGøålÙ.5¿Ë@Ç c³^õЕ)ô=á’AŒ’ …áöj8‡n¾ÂÁ?Ùc£=Æ/zü*L|ëž(š5Òí±Na®Ú Kÿž“—)ÜuÂ%Ó;^˜tÙ º@hTx°Ü ›Á …'*]2Ä‘aŠŒ}d„"Aœ¸Zá[—¼™‰k¾óŽËµ /þÁŠ4‹L C"ó™È|Äv…Wê½Ñˆ›^]èr èUxí—}À/ _á1{[Á0h•ôÂ;7¼:Ä3­Rxÿ·)^¯ÿÞí‡þ¼Ô%-w*\ÙärØ ö€½`DáZWGþÝmEÇÆý€¶cà ÂGƒ”¿’Ðð;Z èV9¢ðå%—ôU— Ç}–£`ÐÊq Г‘žŒôdœ3RM—˜•¬NZ4ÎÓœ>]·m"(«È'58ãKV‚`!ÈI=õBÈKC—]–€`RŠe€~.Î`¾´wØ›ë@tÄ^¬•î±r¢/–fZ\ÞšA½4wÆ^/¥µTúúkö–§üràl_œè+¥ûÏzŸÃ|•ôЙtƒgðã¯y¡ ¬–ž*w¹Ü.«qIŽ×Ò»ØZ¥ó77÷-€x(ÅA°AzîoíÒOþår#Ø:@'è›A7è½Ò/Ï; |¾"؆¤ßÔûTÃÒÛÜÌ•$Üø™½£`·ôV³Ëq°Gºø¹Ë½`Œ‚}`¿ôÇi¯þrÒj ‡ÀapDú`È«3`¸s&¤/zá$˜”¾Xår ÇÁ 0Úø‘Ôf ­¾7š+¦²öc—*\ìrîÒpQÊ–ÿÈ È< áøÀPt4—)ëxÛûœ¢ó”usÒ‘>{4R¬R6¸ßåbP­lôç.}¡P :e‡>K'8õ‹ \ËUï£-R:fÓOº¤b½²Ók\òåéDrRd§"éDBP„ A‚ŠMÊ­÷±ÍÊ­Ÿ´â;‚$Tô×]×)w}ŸWišHÓÄvЦܧïya ‘d‘Àâ J± Ê}ù¡7Ó¬d¶ÈD"úD(ƒ€^#ÍDš‰4S¤s"C†‰  "‚L™RåË_÷…)ßñÕaåÇ<¿)Íòw^°Wþܯ­Ž*ÿÒÍÿ¼ å/|b5©üß?²šRÉ{­Ž©djÎê¸J.t[P¡áY«iÎ8FRà^þ¡Õ¬ oµ®v•VÞ—Ôµþ„¿ÝðÏ—®§N,|´8áãW>;œpã? ÿ»œŽo&ä^I(<ïžô߬?a[€?ÚÖƒ6°´ƒÀ_iþ"ë]`3ð·mè}*-9]£®1ü-!¸‰ endstream endobj startxref 464158 %%EOF DRIMSeq/man/0000755000175200017520000000000014516005636013561 5ustar00biocbuildbiocbuildDRIMSeq/man/MatrixList-class.Rd0000644000175200017520000000535314516005636017261 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_MatrixList.R \docType{class} \name{MatrixList-class} \alias{MatrixList-class} \alias{names,MatrixList-method} \alias{names<-,MatrixList-method} \alias{rownames,MatrixList-method} \alias{rownames<-,MatrixList-method} \alias{colnames,MatrixList-method} \alias{colnames<-,MatrixList-method} \alias{length,MatrixList-method} \alias{elementNROWS,MatrixList-method} \alias{dim,MatrixList-method} \alias{nrow,MatrixList-method} \alias{ncol,MatrixList-method} \alias{[[,MatrixList-method} \alias{$,MatrixList-method} \alias{[,MatrixList,ANY-method} \alias{[,MatrixList-method} \title{MatrixList object} \usage{ \S4method{names}{MatrixList}(x) \S4method{names}{MatrixList}(x) <- value \S4method{rownames}{MatrixList}(x) \S4method{rownames}{MatrixList}(x) <- value \S4method{colnames}{MatrixList}(x) \S4method{colnames}{MatrixList}(x) <- value \S4method{length}{MatrixList}(x) \S4method{elementNROWS}{MatrixList}(x) \S4method{dim}{MatrixList}(x) \S4method{nrow}{MatrixList}(x) \S4method{ncol}{MatrixList}(x) \S4method{[[}{MatrixList}(x, i, j) \S4method{$}{MatrixList}(x, name) \S4method{[}{MatrixList,ANY}(x, i, j) } \arguments{ \item{x}{MatrixList object.} \item{value, i, j, name}{Parameters used for subsetting and assigning new attributes to x.} } \value{ \itemize{ \item \code{names(x)}, \code{names(x) <- value}: Get or set names of matrices. \item \code{rownames(x)}, \code{rownames(x) <- value}, \code{colnames(x)}, \code{colnames(x) <- value}: Get or set row names or column names of unlistData slot. \item \code{length(x)}: Get the number of matrices in a list. \item \code{elementNROWS(x)}: Get the number of rows of each of the matrices. \item \code{dim(x)}, \code{nrow(x)}, \code{ncol(x)}: Get the dimensions, number of rows or number of columns of unlistData slot. \item \code{x[[i]]}, \code{x[[i, j]]}: Get the matrix i, and optionally, get only columns j of this matrix. \item \code{x$name}: Shortcut for \code{x[["name"]]}. \item \code{x[i, j]}: Get a subset of MatrixList that consists of matrices i with columns j. } } \description{ A MatrixList object is a container for a list of matrices which have the same number of columns but can have varying number of rows. Additionally, one can store an extra information corresponding to each of the matrices in \code{metadata} matrix. } \section{Slots}{ \describe{ \item{\code{unlistData}}{Matrix which is a row binding of all the matrices in a list.} \item{\code{partitioning}}{List of indexes which defines the row partitioning of unlistData matrix into the original matrices.} \item{\code{metadata}}{Matrix of additional information where each row corresponds to one of the matrices in a list.} }} \author{ Malgorzata Nowicka } DRIMSeq/man/dmDSdata-class.Rd0000644000175200017520000000607214516005636016641 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSdata.R \docType{class} \name{dmDSdata-class} \alias{dmDSdata-class} \alias{counts,dmDSdata-method} \alias{samples} \alias{samples,dmDSdata-method} \alias{names,dmDSdata-method} \alias{length,dmDSdata-method} \alias{[,dmDSdata,ANY-method} \alias{[,dmDSdata-method} \title{dmDSdata object} \usage{ \S4method{counts}{dmDSdata}(object) samples(x, ...) \S4method{samples}{dmDSdata}(x) \S4method{names}{dmDSdata}(x) \S4method{length}{dmDSdata}(x) \S4method{[}{dmDSdata,ANY}(x, i, j) } \arguments{ \item{object, x}{dmDSdata object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{i, j}{Parameters used for subsetting.} } \value{ \itemize{ \item \code{counts(object)}: Get a data frame with counts. \item \code{samples(x)}: Get a data frame with the sample information. \item \code{names(x)}: Get the gene names. \item \code{length(x)}: Get the number of genes. \item \code{x[i, j]}: Get a subset of dmDSdata object that consists of counts for genes i and samples j. } } \description{ dmDSdata contains expression, in counts, of genomic features such as exons or transcripts and sample information needed for the differential exon/transcript usage (DEU or DTU) analysis. It can be created with function \code{\link{dmDSdata}}. } \section{Slots}{ \describe{ \item{\code{counts}}{\code{\linkS4class{MatrixList}} of expression, in counts, of genomic features. Rows correspond to genomic features, such as exons or transcripts. Columns correspond to samples. MatrixList is partitioned in a way that each of the matrices in a list contains counts for a single gene.} \item{\code{samples}}{Data frame with information about samples. It must contain \code{sample_id} variable with unique sample names and other covariates that desribe samples and are needed for the differential analysis.} }} \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] } } \seealso{ \code{\linkS4class{dmDSprecision}}, \code{\linkS4class{dmDSfit}}, \code{\linkS4class{dmDStest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmDSdata.Rd0000644000175200017520000000371714516005636015541 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSdata.R \name{dmDSdata} \alias{dmDSdata} \title{Create dmDSdata object} \usage{ dmDSdata(counts, samples) } \arguments{ \item{counts}{Data frame with counts. Rows correspond to features, for example, transcripts or exons. This data frame has to contain a \code{gene_id} column with gene IDs, \code{feature_id} column with feature IDs and columns with counts for each sample. Column names corresponding to sample IDs must be the same as in the \code{sample} data frame.} \item{samples}{Data frame where each row corresponds to one sample. Columns have to contain unique sample IDs in \code{sample_id} variable and a grouping variable \code{group}.} } \value{ Returns a \linkS4class{dmDSdata} object. } \description{ Constructor function for a \code{\linkS4class{dmDSdata}} object. } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] } } \seealso{ \code{\link{plotData}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmDSfit-class.Rd0000644000175200017520000001062714516005636016513 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSfit.R \docType{class} \name{dmDSfit-class} \alias{dmDSfit-class} \alias{design,dmDSfit-method} \alias{proportions} \alias{proportions,dmDSfit-method} \alias{coefficients,dmDSfit-method} \title{dmDSfit object} \usage{ \S4method{design}{dmDSfit}(object, type = "full_model") proportions(x, ...) \S4method{proportions}{dmDSfit}(x) \S4method{coefficients}{dmDSfit}(object, level = "gene") } \arguments{ \item{type}{Character indicating which design matrix should be returned. Possible values \code{"precision"}, \code{"full_model"} or \code{"null_model"}.} \item{x, object}{dmDSprecision object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{level}{Character specifying which type of results to return. Possible values \code{"gene"} or \code{"feature"}.} } \value{ \itemize{ \item \code{design(object)}: Get a matrix with the full design. \item \code{proportions(x)}: Get a data frame with estimated feature ratios for each sample. \item \code{coefficients(x)}: Get the DM or BB regression coefficients. } } \description{ dmDSfit extends the \code{\linkS4class{dmDSprecision}} class by adding the full model Dirichlet-multinomial (DM) and beta-binomial (BB) likelihoods, regression coefficients and feature proportion estimates. Result of calling the \code{\link{dmFit}} function. } \section{Slots}{ \describe{ \item{\code{design_fit_full}}{Numeric matrix of the design used to fit the full model.} \item{\code{fit_full}}{\code{\linkS4class{MatrixList}} containing estimated feature ratios in each sample based on the full Dirichlet-multinomial (DM) model.} \item{\code{lik_full}}{Numeric vector of the per gene DM full model likelihoods.} \item{\code{coef_full}}{\code{\linkS4class{MatrixList}} with the regression coefficients based on the DM model.} \item{\code{fit_full_bb}}{\code{\linkS4class{MatrixList}} containing estimated feature ratios in each sample based on the full beta-binomial (BB) model.} \item{\code{lik_full_bb}}{Numeric vector of the per gene BB full model likelihoods.} \item{\code{coef_full_bb}}{\code{\linkS4class{MatrixList}} with the regression coefficients based on the BB model.} }} \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") } } \seealso{ \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSprecision}}, \code{\linkS4class{dmDStest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmDSprecision-class.Rd0000644000175200017520000001145314516005636017722 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSprecision.R \docType{class} \name{dmDSprecision-class} \alias{dmDSprecision-class} \alias{design,dmDSprecision-method} \alias{mean_expression} \alias{mean_expression,dmDSprecision-method} \alias{common_precision} \alias{common_precision,dmDSprecision-method} \alias{common_precision<-} \alias{common_precision<-,dmDSprecision-method} \alias{genewise_precision} \alias{genewise_precision,dmDSprecision-method} \alias{genewise_precision<-} \alias{genewise_precision<-,dmDSprecision-method} \title{dmDSprecision object} \usage{ \S4method{design}{dmDSprecision}(object, type = "precision") mean_expression(x, ...) \S4method{mean_expression}{dmDSprecision}(x) common_precision(x, ...) \S4method{common_precision}{dmDSprecision}(x) common_precision(x) <- value \S4method{common_precision}{dmDSprecision}(x) <- value genewise_precision(x, ...) \S4method{genewise_precision}{dmDSprecision}(x) genewise_precision(x) <- value \S4method{genewise_precision}{dmDSprecision}(x) <- value } \arguments{ \item{type}{Character indicating which design matrix should be returned. Possible values \code{"precision"}, \code{"full_model"} or \code{"null_model"}.} \item{x, object}{dmDSprecision object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{value}{Values that replace current attributes.} } \value{ \itemize{ \item \code{mean_expression(x)}: Get a data frame with mean gene expression. \item \code{common_precision(x), common_precision(x) <- value}: Get or set common precision. \code{value} must be numeric of length 1. \item \code{genewise_precision(x), genewise_precision(x) <- value}: Get a data frame with gene-wise precision or set new gene-wise precision. \code{value} must be a data frame with "gene_id" and "genewise_precision" columns. } } \description{ dmDSprecision extends the \code{\linkS4class{dmDSdata}} by adding the precision estimates of the Dirichlet-multinomial distribution used to model the feature (e.g., transcript, exon, exonic bin) counts for each gene in the differential usage analysis. Result of calling the \code{\link{dmPrecision}} function. } \details{ Normally, in the differential analysis based on RNA-seq data, such as, for example, differential gene expression, dispersion (of negative-binomial model) is estimated. Here, we estimate precision of the Dirichlet-multinomial model as it is more convenient computationally. To obtain dispersion estimates, one can use a formula: dispersion = 1 / (1 + precision). } \section{Slots}{ \describe{ \item{\code{mean_expression}}{Numeric vector of mean gene expression.} \item{\code{common_precision}}{Numeric value of estimated common precision.} \item{\code{genewise_precision}}{Numeric vector of estimated gene-wise precisions.} \item{\code{design_precision}}{Numeric matrix of the design used to estimate precision.} }} \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) } } \seealso{ \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSfit}}, \code{\linkS4class{dmDStest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmDStest-class.Rd0000644000175200017520000001155414516005636016710 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDStest.R \docType{class} \name{dmDStest-class} \alias{dmDStest-class} \alias{design,dmDStest-method} \alias{results} \alias{results,dmDStest-method} \title{dmDStest object} \usage{ \S4method{design}{dmDStest}(object, type = "null_model") results(x, ...) \S4method{results}{dmDStest}(x, level = "gene") } \arguments{ \item{type}{Character indicating which design matrix should be returned. Possible values \code{"precision"}, \code{"full_model"} or \code{"null_model"}.} \item{x, object}{dmDStest object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{level}{Character specifying which type of results to return. Possible values \code{"gene"} or \code{"feature"}.} } \value{ \itemize{ \item \code{results(x)}: get a data frame with gene-level or feature-level results.} } \description{ dmDStest extends the \code{\linkS4class{dmDSfit}} class by adding the null model Dirichlet-multinomial (DM) and beta-binomial (BB) likelihoods and the gene-level and feature-level results of testing for differential exon/transcript usage. Result of calling the \code{\link{dmTest}} function. } \section{Slots}{ \describe{ \item{\code{design_fit_null}}{Numeric matrix of the design used to fit the null model.} \item{\code{lik_null}}{Numeric vector of the per gene DM null model likelihoods.} \item{\code{lik_null_bb}}{Numeric vector of the per gene BB null model likelihoods.} \item{\code{results_gene}}{Data frame with the gene-level results including: \code{gene_id} - gene IDs, \code{lr} - likelihood ratio statistics based on the DM model, \code{df} - degrees of freedom, \code{pvalue} - p-values and \code{adj_pvalue} - Benjamini & Hochberg adjusted p-values.} \item{\code{results_feature}}{Data frame with the feature-level results including: \code{gene_id} - gene IDs, \code{feature_id} - feature IDs, \code{lr} - likelihood ratio statistics based on the BB model, \code{df} - degrees of freedom, \code{pvalue} - p-values and \code{adj_pvalue} - Benjamini & Hochberg adjusted p-values.} }} \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") ## Fit null model proportions and perform the LR test to detect DTU d <- dmTest(d, coef = "groupKD") ## Plot the gene-level p-values plotPValues(d) ## Get the gene-level results head(results(d)) ## Plot feature proportions for a top DTU gene res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") } \seealso{ \code{\linkS4class{dmDSdata}}, \code{\linkS4class{dmDSprecision}}, \code{\linkS4class{dmDSfit}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmFilter.Rd0000644000175200017520000001571514516005636015627 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSdata.R, R/class_dmSQTLdata.R \docType{methods} \name{dmFilter} \alias{dmFilter} \alias{dmFilter,dmDSdata-method} \alias{dmFilter,dmSQTLdata-method} \title{Filtering} \usage{ dmFilter(x, ...) \S4method{dmFilter}{dmDSdata}(x, min_samps_gene_expr = 0, min_samps_feature_expr = 0, min_samps_feature_prop = 0, min_gene_expr = 0, min_feature_expr = 0, min_feature_prop = 0, run_gene_twice = FALSE) \S4method{dmFilter}{dmSQTLdata}(x, min_samps_gene_expr = 0, min_samps_feature_expr = 0, min_samps_feature_prop = 0, minor_allele_freq = 0.05 * nrow(samples(x)), min_gene_expr = 0, min_feature_expr = 0, min_feature_prop = 0, BPPARAM = BiocParallel::SerialParam()) } \arguments{ \item{x}{\code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{min_samps_gene_expr}{Minimal number of samples where genes should be expressed. See Details.} \item{min_samps_feature_expr}{Minimal number of samples where features should be expressed. See Details.} \item{min_samps_feature_prop}{Minimal number of samples where features should be expressed. See details.} \item{min_gene_expr}{Minimal gene expression.} \item{min_feature_expr}{Minimal feature expression.} \item{min_feature_prop}{Minimal proportion for feature expression. This value should be between 0 and 1.} \item{run_gene_twice}{Whether to re-run the gene-level filter after the feature-level filters.} \item{minor_allele_freq}{Minimal number of samples where each of the genotypes has to be present.} \item{BPPARAM}{Parallelization method used by \code{\link[BiocParallel]{bplapply}}.} } \value{ Returns filtered \code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} object. } \description{ Filtering of genes and features with low expression. Additionally, for the dmSQTLdata object, filtering of genotypes with low frequency. } \details{ Filtering parameters should be adjusted according to the sample size of the experiment data and the number of replicates per condition. \code{min_samps_gene_expr} defines the minimal number of samples where genes are required to be expressed at the minimal level of \code{min_gene_expr} in order to be included in the downstream analysis. Ideally, we would like that genes were expressed at some minimal level in all samples because this would lead to better estimates of feature ratios. Similarly, \code{min_samps_feature_expr} and \code{min_samps_feature_prop} defines the minimal number of samples where features are required to be expressed at the minimal levels of counts \code{min_feature_expr} or proportions \code{min_feature_prop}. In differential transcript/exon usage analysis, we suggest using \code{min_samps_feature_expr} and \code{min_samps_feature_prop} equal to the minimal number of replicates in any of the conditions. For example, in an assay with 3 versus 5 replicates, we would set these parameters to 3, which allows a situation where a feature is expressed in one condition but may not be expressed at all in another one, which is an example of differential transcript/exon usage. By default, all the filtering parameters equal zero which means that features with zero expression in all samples are removed as well as genes with only one non-zero feature. In QTL analysis, usually, we deal with data that has many more replicates than data from a standard differential usage assay. Our example data set consists of 91 samples. Requiring that genes are expressed in all samples may be too stringent, especially since there may be missing values in the data and for some genes you may not observe counts in all 91 samples. Slightly lower threshold ensures that we do not eliminate such genes. For example, if \code{min_samps_gene_expr = 70} and \code{min_gene_expr = 10}, only genes with expression of at least 10 in at least 70 samples are kept. Samples with expression lower than 10 have \code{NA}s assigned and are skipped in the analysis of this gene. \code{minor_allele_freq} indicates the minimal number of samples for the minor allele presence. Usually, it is equal to roughly 5\% of total samples. } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) } # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) # -------------------------------------------------------------------------- # sQTL analysis - simple group comparison # -------------------------------------------------------------------------- ## Filtering d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) plotData(d) } } \seealso{ \code{\link{plotData}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmFit.Rd0000644000175200017520000001523714516005636015123 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSfit.R, R/class_dmSQTLfit.R \docType{methods} \name{dmFit} \alias{dmFit} \alias{dmFit,dmDSprecision-method} \alias{dmFit,dmSQTLprecision-method} \title{Fit the Dirichlet-multinomial and/or the beta-binomial full model regression} \usage{ dmFit(x, ...) \S4method{dmFit}{dmDSprecision}(x, design, one_way = TRUE, bb_model = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, add_uniform = FALSE, BPPARAM = BiocParallel::SerialParam()) \S4method{dmFit}{dmSQTLprecision}(x, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()) } \arguments{ \item{x}{\code{\linkS4class{dmDSprecision}} or \code{\linkS4class{dmSQTLprecision}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{design}{Numeric matrix defining the full model.} \item{one_way}{Logical. Should the shortcut fitting be used when the design corresponds to multiple group comparison. This is a similar approach as in \code{\link{edgeR}}. If \code{TRUE} (the default), then proportions are fitted per group and regression coefficients are recalculated from those fits.} \item{bb_model}{Logical. Whether to perform the feature-level analysis using the beta-binomial model.} \item{prop_mode}{Optimization method used to estimate proportions. Possible value \code{"constrOptim"}.} \item{prop_tol}{The desired accuracy when estimating proportions.} \item{coef_mode}{Optimization method used to estimate regression coefficients. Possible value \code{"optim"}.} \item{coef_tol}{The desired accuracy when estimating regression coefficients.} \item{verbose}{Numeric. Definie the level of progress messages displayed. 0 - no messages, 1 - main messages, 2 - message for every gene fitting.} \item{add_uniform}{Whether to add a small fractional count to zeros, (adding a uniform random variable between 0 and 0.1). This option allows for the fitting of genewise precision and coefficients for genes with two features having all zero for one group, or the last feature having all zero for one group.} \item{BPPARAM}{Parallelization method used by \code{\link[BiocParallel]{bplapply}}.} } \value{ Returns a \code{\linkS4class{dmDSfit}} or \code{\linkS4class{dmSQTLfit}} object. } \description{ Obtain the maximum likelihood estimates of Dirichlet-multinomial (gene-level) and/or beta-binomial (feature-level) regression coefficients, feature proportions in each sample and corresponding likelihoods. In the differential exon/transcript usage analysis, the regression model is defined by a design matrix. In the exon/transcript usage QTL analysis, regression models are defined by genotypes. Currently, beta-binomial model is implemented only in the differential usage analysis. } \details{ In the regression framework here, we adapt the idea from \code{\link[edgeR]{glmFit}} in \code{\link{edgeR}} about using a shortcut algorithm when the design is equivalent to simple group fitting. In such a case, we estimate the DM proportions for each group of samples separately and then recalculate the DM (and/or the BB) regression coefficients corresponding to the design matrix. If the design matrix does not define a simple group fitting, for example, when it contains a column with continuous values, then the regression framework is used to directly estimate the regression coefficients. Arguments that are used for the proportion estimation in each group when the shortcut fitting can be used start with \code{prop_}, and those that are used in the regression framework start with \code{coef_}. In the differential transcript usage analysis, setting \code{one_way = TRUE} allows switching to the shortcut algorithm only if the design is equivalent to simple group fitting. \code{one_way = FALSE} forces usage of the regression framework. In the QTL analysis, currently, genotypes are defined as numeric values 0, 1, and 2. When \code{one_way = TRUE}, simple multiple group fitting is performed. When \code{one_way = FALSE}, a regression framework is used with the design matrix defined by a formula \code{~ group} where group is a continuous (not categorical) variable with values 0, 1, and 2. } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") } } \references{ McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation. Nucleic Acids Research 40, 4288-4297. } \seealso{ \code{\link{plotProportions}} \code{\link[edgeR]{glmFit}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmPrecision.Rd0000644000175200017520000002234414516005636016331 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSprecision.R, % R/class_dmSQTLprecision.R \docType{methods} \name{dmPrecision} \alias{dmPrecision} \alias{dmPrecision,dmDSdata-method} \alias{dmPrecision,dmSQTLdata-method} \title{Estimate the precision parameter in the Dirichlet-multinomial model} \usage{ dmPrecision(x, ...) \S4method{dmPrecision}{dmDSdata}(x, design, mean_expression = TRUE, common_precision = TRUE, genewise_precision = TRUE, prec_adjust = TRUE, prec_subset = 0.1, prec_interval = c(0, 1000), prec_tol = 10, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "trended", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, add_uniform = FALSE, BPPARAM = BiocParallel::SerialParam()) \S4method{dmPrecision}{dmSQTLdata}(x, mean_expression = TRUE, common_precision = TRUE, genewise_precision = TRUE, prec_adjust = TRUE, prec_subset = 0.1, prec_interval = c(0, 1000), prec_tol = 10, prec_init = 100, prec_grid_length = 21, prec_grid_range = c(-10, 10), prec_moderation = "none", prec_prior_df = 0, prec_span = 0.1, one_way = TRUE, speed = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()) } \arguments{ \item{x}{\code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{design}{Numeric matrix defining the model that should be used when estimating precision. Normally this should be a full model design used also in \code{\link{dmFit}}.} \item{mean_expression}{Logical. Whether to estimate the mean expression of genes.} \item{common_precision}{Logical. Whether to estimate the common precision.} \item{genewise_precision}{Logical. Whether to estimate the gene-wise precision.} \item{prec_adjust}{Logical. Whether to use the Cox-Reid adjusted or non-adjusted profile likelihood.} \item{prec_subset}{Value from 0 to 1 defining the percentage of genes used in common precision estimation. The default is 0.1, which uses 10% of randomly selected genes to speed up the precision estimation process. Use \code{set.seed} function to make the analysis reproducible. See Examples.} \item{prec_interval}{Numeric vector of length 2 defining the interval of possible values for the common precision.} \item{prec_tol}{The desired accuracy when estimating common precision.} \item{prec_init}{Initial precision. If \code{common_precision} is \code{TRUE}, then \code{prec_init} is overwritten by common precision estimate.} \item{prec_grid_length}{Length of the search grid.} \item{prec_grid_range}{Vector giving the limits of grid interval.} \item{prec_moderation}{Precision moderation method. One can choose to shrink the precision estimates toward the common precision (\code{"common"}) or toward the (precision versus mean expression) trend (\code{"trended"})} \item{prec_prior_df}{Degree of moderation (shrinkage) in case when it can not be calculated automaticaly (number of genes on the upper boundary of grid is smaller than 10). By default it is equal to 0.} \item{prec_span}{Value from 0 to 1 defining the percentage of genes used in smoothing sliding window when calculating the precision versus mean expression trend.} \item{one_way}{Logical. Should the shortcut fitting be used when the design corresponds to multiple group comparison. This is a similar approach as in \code{\link{edgeR}}. If \code{TRUE} (the default), then proportions are fitted per group and regression coefficients are recalculated from those fits.} \item{prop_mode}{Optimization method used to estimate proportions. Possible value \code{"constrOptim"}.} \item{prop_tol}{The desired accuracy when estimating proportions.} \item{coef_mode}{Optimization method used to estimate regression coefficients. Possible value \code{"optim"}.} \item{coef_tol}{The desired accuracy when estimating regression coefficients.} \item{verbose}{Numeric. Definie the level of progress messages displayed. 0 - no messages, 1 - main messages, 2 - message for every gene fitting.} \item{add_uniform}{Whether to add a small fractional count to zeros, (adding a uniform random variable between 0 and 0.1). This option allows for the fitting of genewise precision and coefficients for genes with two features having all zero for one group, or the last feature having all zero for one group.} \item{BPPARAM}{Parallelization method used by \code{\link[BiocParallel]{bplapply}}.} \item{speed}{Logical. If \code{FALSE}, precision is calculated per each gene-block. Such calculation may take a long time, since there can be hundreds of SNPs/blocks per gene. If \code{TRUE}, there will be only one precision calculated per gene and it will be assigned to all the blocks matched with this gene.} } \value{ Returns a \code{\linkS4class{dmDSprecision}} or \code{\linkS4class{dmSQTLprecision}} object. } \description{ Maximum likelihood estimates of the precision parameter in the Dirichlet-multinomial model used for the differential exon/transcript usage or QTL analysis. } \details{ Normally, in the differential analysis based on RNA-seq data, such as, for example, differential gene expression, dispersion (of negative-binomial model) is estimated. Here, we estimate precision of the Dirichlet-multinomial model as it is more convenient computationally. To obtain dispersion estimates, one can use a formula: dispersion = 1 / (1 + precision). Parameters that are used in the precision (dispersion = 1 / (1 + precision)) estimation start with prefix \code{prec_}. Those that are used for the proportion estimation in each group when the shortcut fitting \code{one_way = TRUE} can be used start with \code{prop_}, and those that are used in the regression framework start with \code{coef_}. There are two optimization methods implemented within dmPrecision: \code{"optimize"} for the common precision and \code{"grid"} for the gene-wise precision. Only part of the precision parameters in dmPrecision have an influence on a given optimization method. Here is a list of such active parameters: \code{"optimize"}: \itemize{ \item \code{prec_interval}: Passed as \code{interval}. \item \code{prec_tol}: The accuracy defined as \code{tol}. } \code{"grid"}, which uses the grid approach from \code{\link[edgeR]{estimateDisp}} in \code{\link{edgeR}}: \itemize{ \item \code{prec_init}, \code{prec_grid_length}, \code{prec_grid_range}: Parameters used to construct the search grid \code{prec_init * 2^seq(from = prec_grid_range[1]}, \code{to = prec_grid_range[2]}, \code{length = prec_grid_length)}. \item \code{prec_moderation}: Dipsersion shrinkage is available only with \code{"grid"} method. \item \code{prec_prior_df}: Used only when precision shrinkage is activated. Moderated likelihood is equal to \code{loglik + prec_prior_df * moderation}. Higher \code{prec_prior_df}, more shrinkage toward common or trended precision is applied. \item \code{prec_span}: Used only when precision moderation toward trend is activated. } } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) } } \references{ McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation. Nucleic Acids Research 40, 4288-4297. } \seealso{ \code{\link{plotPrecision}} \code{\link[edgeR]{estimateDisp}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmSQTLdata-class.Rd0000644000175200017520000000571614516005636017122 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmSQTLdata.R \docType{class} \name{dmSQTLdata-class} \alias{dmSQTLdata-class} \alias{counts,dmSQTLdata-method} \alias{samples,dmSQTLdata-method} \alias{names,dmSQTLdata-method} \alias{length,dmSQTLdata-method} \alias{[,dmSQTLdata,ANY-method} \alias{[,dmSQTLdata-method} \title{dmSQTLdata object} \usage{ \S4method{counts}{dmSQTLdata}(object) \S4method{samples}{dmSQTLdata}(x) \S4method{names}{dmSQTLdata}(x) \S4method{length}{dmSQTLdata}(x) \S4method{[}{dmSQTLdata,ANY}(x, i, j) } \arguments{ \item{x, object}{dmSQTLdata object.} \item{i, j}{Parameters used for subsetting.} } \value{ \itemize{ \item \code{names(x)}: Get the gene names. \item \code{length(x)}: Get the number of genes. \item \code{x[i, j]}: Get a subset of dmDSdata object that consists of counts, genotypes and blocks corresponding to genes i and samples j. } } \description{ dmSQTLdata contains genomic feature expression (counts), genotypes and sample information needed for the transcript/exon usage QTL analysis. It can be created with function \code{\link{dmSQTLdata}}. } \section{Slots}{ \describe{ \item{\code{counts}}{\code{\linkS4class{MatrixList}} of expression, in counts, of genomic features. Rows correspond to genomic features, such as exons or transcripts. Columns correspond to samples. MatrixList is partitioned in a way that each of the matrices in a list contains counts for a single gene.} \item{\code{genotypes}}{MatrixList of unique genotypes. Rows correspond to blocks, columns to samples. Each matrix in this list is a collection of unique genotypes that are matched with a given gene.} \item{\code{blocks}}{MatrixList with two columns \code{block_id} and \code{snp_id}. For each gene, it identifies SNPs with identical genotypes across the samples and assigns them to blocks.} \item{\code{samples}}{Data frame with information about samples. It must contain variable \code{sample_id} with unique sample names.} }} \examples{ # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) } } \seealso{ \code{\linkS4class{dmSQTLprecision}}, \code{\linkS4class{dmSQTLfit}}, \code{\linkS4class{dmSQTLtest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmSQTLdata.Rd0000644000175200017520000000661414516005636016015 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmSQTLdata.R \name{dmSQTLdata} \alias{dmSQTLdata} \title{Create dmSQTLdata object} \usage{ dmSQTLdata(counts, gene_ranges, genotypes, snp_ranges, samples, window = 5000, BPPARAM = BiocParallel::SerialParam()) } \arguments{ \item{counts}{Data frame with counts. Rows correspond to features, for example, transcripts or exons. This data frame has to contain a \code{gene_id} column with gene IDs, \code{feature_id} column with feature IDs and columns with counts for each sample. Column names corresponding to sample IDs must be the same as in the \code{sample} data frame.} \item{gene_ranges}{\code{\linkS4class{GRanges}} object with gene location. It must contain gene names when calling names().} \item{genotypes}{Data frame with genotypes. Rows correspond to SNPs. This data frame has to contain a \code{snp_id} column with SNP IDs and columns with genotypes for each sample. Column names corresponding to sample IDs must be the same as in the \code{sample} data frame. The genotype of each sample is coded in the following way: 0 for ref/ref, 1 for ref/not ref, 2 for not ref/not ref, -1 or \code{NA} for missing value.} \item{snp_ranges}{\code{\linkS4class{GRanges}} object with SNP location. It must contain SNP names when calling names().} \item{samples}{Data frame with column \code{sample_id} corresponding to unique sample IDs} \item{window}{Size of a down and up stream window, which is defining the surrounding for a gene. Only SNPs that are located within a gene or its surrounding are considered in the sQTL analysis.} \item{BPPARAM}{Parallelization method used by \code{\link[BiocParallel]{bplapply}}.} } \value{ Returns a \code{\linkS4class{dmSQTLdata}} object. } \description{ Constructor functions for a \code{\linkS4class{dmSQTLdata}} object. dmSQTLdata assignes to a gene all the SNPs that are located in a given surrounding (\code{window}) of this gene. } \details{ It is quite common that sample grouping defined by some of the SNPs is identical. Compare \code{dim(genotypes)} and \code{dim(unique(genotypes))}. In our QTL analysis, we do not repeat tests for the SNPs that define the same grouping of samples. Each grouping is tested only once. SNPs that define such unique groupings are aggregated into blocks. P-values and adjusted p-values are estimated at the block level, but the returned results are extended to a SNP level by repeating the block statistics for each SNP that belongs to a given block. } \examples{ # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) } } \seealso{ \code{\link{plotData}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmSQTLfit-class.Rd0000644000175200017520000000502614516005636016765 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmSQTLfit.R \docType{class} \name{dmSQTLfit-class} \alias{dmSQTLfit-class} \title{dmSQTLfit object} \description{ dmSQTLfit extends the \code{\linkS4class{dmSQTLprecision}} class by adding the full model Dirichlet-multinomial (DM) likelihoods, regression coefficients and feature proportion estimates needed for the transcript/exon usage QTL analysis. Full model is defined by the genotype of a SNP associated with a gene. Estimation takes place for all the genes and all the SNPs/blocks assigned to the genes. Result of \code{\link{dmFit}}. } \section{Slots}{ \describe{ \item{\code{fit_full}}{List of \code{\linkS4class{MatrixList}} objects containing estimated feature ratios in each sample based on the full Dirichlet-multinomial (DM) model.} \item{\code{lik_full}}{List of numeric vectors of the per gene DM full model likelihoods.} \item{\code{coef_full}}{\code{\linkS4class{MatrixList}} with the regression coefficients based on the DM model.} }} \examples{ # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) # -------------------------------------------------------------------------- # sQTL analysis - simple group comparison # -------------------------------------------------------------------------- ## Filtering d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) ## Fit full model proportions d <- dmFit(d) } } \seealso{ \code{\linkS4class{dmSQTLdata}}, \code{\linkS4class{dmSQTLprecision}}, \code{\linkS4class{dmSQTLtest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmSQTLprecision-class.Rd0000644000175200017520000000560514516005636020201 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmSQTLprecision.R \docType{class} \name{dmSQTLprecision-class} \alias{dmSQTLprecision-class} \alias{mean_expression,dmSQTLprecision-method} \alias{common_precision,dmSQTLprecision-method} \alias{genewise_precision,dmSQTLprecision-method} \title{dmSQTLprecision object} \usage{ \S4method{mean_expression}{dmSQTLprecision}(x) \S4method{common_precision}{dmSQTLprecision}(x) \S4method{genewise_precision}{dmSQTLprecision}(x) } \arguments{ \item{x}{dmSQTLprecision object.} } \value{ \itemize{ \item \code{mean_expression(x)}: Get a data frame with mean gene expression. \item \code{common_precision(x)}: Get common precision. \item \code{genewise_precision(x)}: Get a data frame with gene-wise precision.} } \description{ dmSQTLprecision extends the \code{\linkS4class{dmSQTLdata}} by adding the precision estimates of Dirichlet-multinomial distribution used to model the feature (e.g., transcript, exon, exonic bin) counts for each gene-SNP pair in the QTL analysis. Result of \code{\link{dmPrecision}}. } \section{Slots}{ \describe{ \item{\code{mean_expression}}{Numeric vector of mean gene expression.} \item{\code{common_precision}}{Numeric value of estimated common precision.} \item{\code{genewise_precision}}{List of estimated gene-wise precisions. Each element of this list is a vector of precisions estimated for all the genotype blocks assigned to a given gene.} }} \examples{ # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) # -------------------------------------------------------------------------- # sQTL analysis - simple group comparison # -------------------------------------------------------------------------- ## Filtering d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) } } \seealso{ \code{\linkS4class{dmSQTLdata}}, \code{\linkS4class{dmSQTLfit}}, \code{\linkS4class{dmSQTLtest}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmSQTLtest-class.Rd0000644000175200017520000000567514516005636017174 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmSQTLtest.R \docType{class} \name{dmSQTLtest-class} \alias{dmSQTLtest-class} \alias{results,dmSQTLtest-method} \title{dmSQTLtest object} \usage{ \S4method{results}{dmSQTLtest}(x) } \arguments{ \item{x}{dmSQTLtest object.} \item{...}{Other parameters that can be defined by methods using this generic.} } \value{ \itemize{ \item \code{results(x)}: Get a data frame with gene-level results. } } \description{ dmSQTLtest extends the \code{\linkS4class{dmSQTLfit}} class by adding the null model Dirichlet-multinomial likelihoods and the gene-level results of testing for differential transcript/exon usage QTLs. Result of \code{\link{dmTest}}. } \section{Slots}{ \describe{ \item{\code{lik_null}}{List of numeric vectors with the per gene-snp DM null model likelihoods.} \item{\code{results_gene}}{Data frame with the gene-level results including: \code{gene_id} - gene IDs, \code{block_id} - block IDs, \code{snp_id} - SNP IDs, \code{lr} - likelihood ratio statistics based on the DM model, \code{df} - degrees of freedom, \code{pvalue} - p-values estimated based on permutations and \code{adj_pvalue} - Benjamini & Hochberg adjusted p-values.} }} \examples{ # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) # -------------------------------------------------------------------------- # sQTL analysis - simple group comparison # -------------------------------------------------------------------------- ## Filtering d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) ## Fit full model proportions d <- dmFit(d) ## Fit null model proportions, perform the LR test to detect tuQTLs ## and use the permutation approach to adjust the p-values d <- dmTest(d) ## Plot the gene-level p-values plotPValues(d) ## Get the gene-level results head(results(d)) } \seealso{ \code{\linkS4class{dmSQTLdata}}, \code{\linkS4class{dmSQTLprecision}}, \code{\linkS4class{dmSQTLfit}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dmTest.Rd0000644000175200017520000001553214516005636015316 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDStest.R, R/class_dmSQTLtest.R \docType{methods} \name{dmTest} \alias{dmTest} \alias{dmTest,dmDSfit-method} \alias{dmTest,dmSQTLfit-method} \title{Likelihood ratio test to detect differential transcript/exon usage} \usage{ dmTest(x, ...) \S4method{dmTest}{dmDSfit}(x, coef = NULL, design = NULL, contrast = NULL, one_way = TRUE, bb_model = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()) \S4method{dmTest}{dmSQTLfit}(x, permutation_mode = "all_genes", one_way = TRUE, prop_mode = "constrOptim", prop_tol = 1e-12, coef_mode = "optim", coef_tol = 1e-12, verbose = 0, BPPARAM = BiocParallel::SerialParam()) } \arguments{ \item{x}{\code{\linkS4class{dmDSfit}} or \code{\linkS4class{dmSQTLfit}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{coef}{Integer or character vector indicating which coefficients of the linear model are to be tested equal to zero. Values must indicate column numbers or column names of the \code{design} used in \code{\link{dmFit}}.} \item{design}{Numeric matrix defining the null model.} \item{contrast}{Numeric vector or matrix specifying one or more contrasts of the linear model coefficients to be tested equal to zero. For a matrix, number of rows (for a vector, its length) must equal to the number of columns of \code{design} used in \code{\link{dmFit}}.} \item{one_way}{Logical. Should the shortcut fitting be used when the design corresponds to multiple group comparison. This is a similar approach as in \code{\link{edgeR}}. If \code{TRUE} (the default), then proportions are fitted per group and regression coefficients are recalculated from those fits.} \item{bb_model}{Logical. Whether to perform the feature-level analysis using the beta-binomial model.} \item{prop_mode}{Optimization method used to estimate proportions. Possible value \code{"constrOptim"}.} \item{prop_tol}{The desired accuracy when estimating proportions.} \item{coef_mode}{Optimization method used to estimate regression coefficients. Possible value \code{"optim"}.} \item{coef_tol}{The desired accuracy when estimating regression coefficients.} \item{verbose}{Numeric. Definie the level of progress messages displayed. 0 - no messages, 1 - main messages, 2 - message for every gene fitting.} \item{BPPARAM}{Parallelization method used by \code{\link[BiocParallel]{bplapply}}.} \item{permutation_mode}{Character specifying which permutation scheme to apply for p-value calculation. When equal to \code{"all_genes"}, null distribution of p-values is calculated from all genes and the maximum number of permutation cycles is 10. When \code{permutation_mode = "per_gene"}, null distribution of p-values is calculated for each gene separately based on permutations of this individual gene. The latter approach may take a lot of computational time. We suggest using the first option.} } \value{ Returns a \code{\linkS4class{dmDStest}} or \code{\linkS4class{dmSQTLtest}} object. } \description{ First, estimate the null Dirichlet-multinomial and beta-binomial model parameters and likelihoods using the null model design. Second, perform the gene-level (DM model) and feature-level (BB model) likelihood ratio tests. In the differential exon/transcript usage analysis, the null model is defined by the null design matrix. In the exon/transcript usage QTL analysis, null models are defined by a design with intercept only. Currently, beta-binomial model is implemented only in the differential usage analysis. } \details{ One must specify one of the arguments: \code{coef}, \code{design} or \code{contrast}. When \code{contrast} is used to define the null model, the null design matrix is recalculated using the same approach as in \code{\link[edgeR]{glmLRT}} function from \code{\link{edgeR}}. } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") ## Fit null model proportions and perform the LR test to detect DTU d <- dmTest(d, coef = "groupKD") ## Plot the gene-level p-values plotPValues(d) ## Get the gene-level results head(results(d)) ## Plot feature proportions for a top DTU gene res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") } } \references{ McCarthy, DJ, Chen, Y, Smyth, GK (2012). Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation. Nucleic Acids Research 40, 4288-4297. } \seealso{ \code{\link{plotPValues}} \code{\link[edgeR]{glmLRT}} } \author{ Malgorzata Nowicka } DRIMSeq/man/dm_plotDataDSInfo.Rd0000644000175200017520000000077114516005636017350 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dm_plotData.R \name{dm_plotDataDSInfo} \alias{dm_plotDataDSInfo} \title{Plot the frequency of present features} \usage{ dm_plotDataDSInfo(info, ds_info) } \arguments{ \item{info}{Data frame with \code{gene_id} and \code{feature_id} of ALL features} \item{ds_info}{Data frame with \code{gene_id} and \code{feature_id} of ONLY DS features} } \value{ \code{ggplot} object } \description{ Plot the frequency of present features } DRIMSeq/man/dm_plotProportions.Rd0000644000175200017520000000327214516005636017771 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dm_plotProportions.R \name{dm_plotProportions} \alias{dm_plotProportions} \title{Plot feature proportions} \usage{ dm_plotProportions(counts, group, md = NULL, fit_full = NULL, main = NULL, plot_type = "boxplot1", order_features = TRUE, order_samples = TRUE, group_colors = NULL, feature_colors = NULL) } \arguments{ \item{counts}{Matrix with rows corresponding to features and columns corresponding to samples. Row names are used as labels on the plot.} \item{group}{Factor that groups samples into conditions.} \item{md}{Data frame with additional sample information.} \item{fit_full}{Matrix of estimated proportions with rows corresponding to features and columns corresponding to samples. If \code{NULL}, nothing is plotted.} \item{main}{Character vector with main title for the plot. If \code{NULL}, nothing is plotted.} \item{plot_type}{Character defining the type of the plot produced. Possible values \code{"barplot"}, \code{"boxplot1"}, \code{"boxplot2"}, \code{"lineplot"}, \code{"ribbonplot"}.} \item{order_features}{Logical. Whether to plot the features ordered by their expression.} \item{order_samples}{Logical. Whether to plot the samples ordered by the group variable. If \code{FALSE} order from the \code{sample(x)} is kept.} \item{group_colors}{Character vector with colors for each group.} \item{feature_colors}{Character vector with colors for each feature.} } \value{ \code{ggplot} object with the observed and/or estimated with Dirichlet-multinomial model feature ratios. Estimated proportions are marked with diamond shapes. } \description{ Plot observed and/or estimated feature proportions. } DRIMSeq/man/plotData.Rd0000644000175200017520000000755014516005636015627 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSdata.R, R/class_dmSQTLdata.R \docType{methods} \name{plotData} \alias{plotData} \alias{plotData,dmDSdata-method} \alias{plotData,dmSQTLdata-method} \title{Plot data summary} \usage{ plotData(x, ...) \S4method{plotData}{dmDSdata}(x) \S4method{plotData}{dmSQTLdata}(x, plot_type = "features") } \arguments{ \item{x}{\code{\linkS4class{dmDSdata}} or \code{\linkS4class{dmSQTLdata}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{plot_type}{Character specifying which type of histogram to plot. Possible values \code{"features"}, \code{"snps"} or \code{"blocks"}.} } \value{ Returns a \code{ggplot} object and can be further modified, for example, using \code{theme()}. Plots a histogram of the number of features per gene. Additionally, for \code{\linkS4class{dmSQTLdata}} object, plots a histogram of the number of SNPs per gene and a histogram of the number of unique SNPs (blocks) per gene. } \description{ Plot data summary } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) } # -------------------------------------------------------------------------- # Create dmSQTLdata object # -------------------------------------------------------------------------- # Use subsets of data defined in the GeuvadisTranscriptExpr package library(GeuvadisTranscriptExpr) \donttest{ geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) # -------------------------------------------------------------------------- # sQTL analysis - simple group comparison # -------------------------------------------------------------------------- ## Filtering d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) plotData(d) } } \seealso{ \code{\link{plotPrecision}}, \code{\link{plotProportions}}, \code{\link{plotPValues}} } \author{ Malgorzata Nowicka } DRIMSeq/man/plotPValues.Rd0000644000175200017520000000705014516005636016330 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDStest.R, R/class_dmSQTLtest.R \docType{methods} \name{plotPValues} \alias{plotPValues} \alias{plotPValues,dmDStest-method} \alias{plotPValues,dmSQTLtest-method} \title{Plot p-value distribution} \usage{ plotPValues(x, ...) \S4method{plotPValues}{dmDStest}(x, level = "gene") \S4method{plotPValues}{dmSQTLtest}(x) } \arguments{ \item{x}{\code{\linkS4class{dmDStest}} or \code{\linkS4class{dmSQTLtest}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{level}{Character specifying which type of results to return. Possible values \code{"gene"} or \code{"feature"}.} } \value{ Plot a histogram of p-values. } \description{ Plot p-value distribution } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") ## Fit null model proportions and perform the LR test to detect DTU d <- dmTest(d, coef = "groupKD") ## Plot the gene-level p-values plotPValues(d) ## Get the gene-level results head(results(d)) ## Plot feature proportions for a top DTU gene res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") } } \seealso{ \code{\link{plotData}}, \code{\link{plotPrecision}}, \code{\link{plotProportions}} } \author{ Malgorzata Nowicka } DRIMSeq/man/plotPrecision.Rd0000644000175200017520000000620114516005636016701 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSprecision.R, % R/class_dmSQTLprecision.R \docType{methods} \name{plotPrecision} \alias{plotPrecision} \alias{plotPrecision,dmDSprecision-method} \alias{plotPrecision,dmSQTLprecision-method} \title{Precision versus mean expression plot} \usage{ plotPrecision(x, ...) \S4method{plotPrecision}{dmDSprecision}(x) \S4method{plotPrecision}{dmSQTLprecision}(x) } \arguments{ \item{x}{\code{\linkS4class{dmDSprecision}} or \code{\linkS4class{dmSQTLprecision}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} } \value{ Normally in the differential analysis based on RNA-seq data, such plot has dispersion parameter plotted on the y-axis. Here, the y-axis represents precision since in the Dirichlet-multinomial model this is the parameter that is directly estimated. It is important to keep in mind that the precision parameter (gamma0) is inverse proportional to dispersion (theta): theta = 1 / (1 + gamma0). In RNA-seq data, we can typically observe a trend where the dispersion decreases (here, precision increases) for genes with higher mean expression. } \description{ Precision versus mean expression plot } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) } } \seealso{ \code{\link{plotData}}, \code{\link{plotProportions}}, \code{\link{plotPValues}} } \author{ Malgorzata Nowicka } DRIMSeq/man/plotProportions.Rd0000644000175200017520000001263114516005636017310 0ustar00biocbuildbiocbuild% Generated by roxygen2: do not edit by hand % Please edit documentation in R/class_dmDSfit.R, R/class_dmSQTLfit.R \docType{methods} \name{plotProportions} \alias{plotProportions} \alias{plotProportions,dmDSfit-method} \alias{plotProportions,dmSQTLfit-method} \title{Plot feature proportions} \usage{ plotProportions(x, ...) \S4method{plotProportions}{dmDSfit}(x, gene_id, group_variable, plot_type = "barplot", order_features = TRUE, order_samples = TRUE, plot_fit = TRUE, plot_main = TRUE, group_colors = NULL, feature_colors = NULL) \S4method{plotProportions}{dmSQTLfit}(x, gene_id, snp_id, plot_type = "boxplot1", order_features = TRUE, order_samples = TRUE, plot_fit = FALSE, plot_main = TRUE, group_colors = NULL, feature_colors = NULL) } \arguments{ \item{x}{\code{\linkS4class{dmDSfit}}, \code{\linkS4class{dmDStest}} or \code{\linkS4class{dmSQTLfit}}, \code{\linkS4class{dmSQTLtest}} object.} \item{...}{Other parameters that can be defined by methods using this generic.} \item{gene_id}{Character indicating a gene ID to be plotted.} \item{group_variable}{Character indicating the grouping variable which is one of the columns in the \code{samples} slot of \code{x}.} \item{plot_type}{Character defining the type of the plot produced. Possible values \code{"barplot"}, \code{"boxplot1"}, \code{"boxplot2"}, \code{"lineplot"}, \code{"ribbonplot"}.} \item{order_features}{Logical. Whether to plot the features ordered by their expression.} \item{order_samples}{Logical. Whether to plot the samples ordered by the group variable. If \code{FALSE} order from the \code{sample(x)} is kept.} \item{plot_fit}{Logical. Whether to plot the proportions estimated by the full model.} \item{plot_main}{Logical. Whether to plot a title with the information about the Dirichlet-multinomial estimates.} \item{group_colors}{Character vector with colors for each group defined by \code{group_variable}.} \item{feature_colors}{Character vector with colors for each feature of gene defined by \code{gene_id}.} \item{snp_id}{Character indicating the ID of a SNP to be plotted.} } \value{ For a given gene, plot the observed and estimated with Dirichlet-multinomial model feature proportions in each group. Estimated group proportions are marked with diamond shapes. } \description{ This plot is available only for a group design, i.e., a design that is equivalent to multiple group fitting. } \details{ In the QTL analysis, plotting of fitted proportions is deactivated even when \code{plot_fit = TRUE}. It is due to the fact that neither fitted values nor regression coefficients are returned by the \code{dmFit} function as they occupy a lot of memory. } \examples{ # -------------------------------------------------------------------------- # Create dmDSdata object # -------------------------------------------------------------------------- ## Get kallisto transcript counts from the 'PasillaTranscriptExpr' package library(PasillaTranscriptExpr) \donttest{ data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) ## Create a pasilla_samples data frame pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) ## Create a dmDSdata object d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) ## Use a subset of genes, which is defined in the following file gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) \%in\% gene_id_subset, ] # -------------------------------------------------------------------------- # Differential transcript usage analysis - simple two group comparison # -------------------------------------------------------------------------- ## Filtering ## Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) plotData(d) ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) plotPrecision(d) head(mean_expression(d)) common_precision(d) head(genewise_precision(d)) ## Fit full model proportions d <- dmFit(d, design = design_full) ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") ## Fit null model proportions and perform the LR test to detect DTU d <- dmTest(d, coef = "groupKD") ## Plot the gene-level p-values plotPValues(d) ## Get the gene-level results head(results(d)) ## Plot feature proportions for a top DTU gene res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") } } \seealso{ \code{\link{plotData}}, \code{\link{plotPrecision}}, \code{\link{plotPValues}} } \author{ Malgorzata Nowicka } DRIMSeq/tests/0000755000175200017520000000000014516005636014150 5ustar00biocbuildbiocbuildDRIMSeq/tests/testthat/0000755000175200017520000000000014516005636016010 5ustar00biocbuildbiocbuildDRIMSeq/tests/testthat.R0000644000175200017520000000007214516005636016132 0ustar00biocbuildbiocbuildlibrary(testthat) library(DRIMSeq) test_check("DRIMSeq") DRIMSeq/tests/testthat/test_MatrixList.R0000644000175200017520000000145014516005636021272 0ustar00biocbuildbiocbuildcontext("MatrixList") x1 <- matrix(1, 10, 6) colnames(x1) <- paste0("C", 1:6) rownames(x1) <- paste0("R1", 1:10) x2 <- matrix(2, 5, 6) colnames(x2) <- paste0("C", 1:6) rownames(x2) <- paste0("R2", 1:5) x <- MatrixList(x1 = x1, x2 = x2) test_that("methods return correct arributes of MatrixList", { expect_equal(names(x), c("x1", "x2")) expect_equal(rownames(x), c(paste0("R1", 1:10), paste0("R2", 1:5))) expect_equal(colnames(x), paste0("C", 1:6)) expect_equal(length(x), 2) expect_equal(elementNROWS(x), c(x1 = 10, x2 = 5)) expect_equal(dim(x), c(15, 6)) expect_equal(nrow(x), 15) expect_equal(ncol(x), 6) }) test_that("subsetting of MatrixList is correct", { expect_equal(x[["x2"]], x2) expect_equal(x$x2, x2) expect_equal(x[1, 1], MatrixList(x1 = x1[, 1, drop = FALSE])) }) DRIMSeq/tests/testthat/test_dm_adjustment.R0000755000175200017520000000037014516005636022033 0ustar00biocbuildbiocbuildcontext("DM adjustement") prec = 10 y = matrix(c(30, 75, 35, 70), nrow = 2) prop = c(0.3, 0.7) test_that("dm_CRadjustmentOneGroup returns the right values", { expect_equal(round(dm_CRadjustmentOneGroup(y, prec, prop), 4), 2.6562) }) DRIMSeq/tests/testthat/test_gene_filter.R0000644000175200017520000000234614516005636021462 0ustar00biocbuildbiocbuildcontext("gene filter") test_that("gene filtering is working", { cts <- matrix(rnbinom(120, mu=100, size=10), ncol=10, dimnames=list(1:12,paste0("s",1:10))) cts[1,] <- 0 cts[2:3,] <- 10 cts[1:3,1] <- c(10,0,0) counts <- data.frame(gene_id=factor(rep(1:4, each=3)), feature_id=factor(1:12), cts) samples <- data.frame(sample_id=paste0("s",1:10), condition=rep(c("A","B"),each=5)) d <- dmDSdata(counts, samples) d <- dmFilter(d, min_samps_gene_expr = 10, min_gene_expr = 10, min_samps_feature_expr = 5, min_feature_expr = 0, min_samps_feature_prop = 5, min_feature_prop = 0) d2 <- dmFilter(d, min_samps_gene_expr = 10, min_gene_expr = 10, min_samps_feature_expr = 5, min_feature_expr = 10, min_samps_feature_prop = 5, min_feature_prop = 0) expect_true(length(d2) == 4) sum(counts(d2[1,])$s1) # has 0 counts for this gene # now use 'run_gene_twice' d3 <- dmFilter(d, min_samps_gene_expr = 10, min_gene_expr = 10, min_samps_feature_expr = 5, min_feature_expr = 10, min_samps_feature_prop = 5, min_feature_prop = 0, run_gene_twice=TRUE) expect_true(length(d3) == 3) }) DRIMSeq/tests/testthat/test_lik_score.R0000755000175200017520000000077114516005636021154 0ustar00biocbuildbiocbuildcontext("DM likelihood and score") prec = 10 y = matrix(c(35, 70, 100, 100), nrow = 2) prop = 0.3 test_that("dm_lik and dm_likG are equal", { expect_equal(dm_lik(prop, prec, y), dm_likG(prop, prec, y)) }) test_that("dm_score and dm_scoreG are equal", { expect_equal(dm_score(prop, prec, y), dm_scoreG(prop, prec, y)) }) y = matrix(c(0, 0, 35, 70), nrow = 2) test_that("dm_lik and dm_likG are diff. for matrix with 0 column", { expect_true(dm_lik(prop, prec, y) < dm_likG(prop, prec, y)) }) DRIMSeq/tests/testthat/test_total_switch.R0000644000175200017520000000202514516005636021675 0ustar00biocbuildbiocbuildcontext("total switch") test_that("total switch retains precision estimates", { cts <- matrix(rnbinom(100, mu=100, size=10), ncol=10, dimnames=list(1:10,paste0("s",1:10))) cts[1,1:5] <- 0 cts[2,6:10] <- 0 counts <- data.frame(gene_id=factor(rep(1:5, each=2)), feature_id=factor(1:10), cts) samples <- data.frame(sample_id=paste0("s",1:10), condition=rep(c("A","B"),each=5)) d <- dmDSdata(counts, samples) design <- model.matrix(~condition, samples(d)) d <- dmPrecision(d, design=design, prec_subset=1) expect_true(is.na(genewise_precision(d)$genewise_precision[1])) d2 <- dmPrecision(d, design=design, prec_subset=1, add_uniform=TRUE) expect_true(!is.na(genewise_precision(d2)$genewise_precision)[1]) d <- dmFit(d, design=design) d <- dmTest(d, coef="conditionB") res <- results(d) expect_true(is.na(res$pvalue[1])) d2 <- dmFit(d2, design=design, add_uniform=TRUE) d2 <- dmTest(d2, coef="conditionB") res <- results(d2) expect_true(!is.na(res$pvalue[1])) }) DRIMSeq/vignettes/0000755000175200017520000000000014516030602015005 5ustar00biocbuildbiocbuildDRIMSeq/vignettes/DRIMSeq.Rnw0000755000175200017520000011250514516005636016721 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{Differential transcript usage and transcript usage QTL analyses in RNA-seq with the DRIMSeq package} %\VignettePackage{DRIMSeq} %\VignetteEngine{knitr::knitr} \documentclass[10pt]{article} <>= BiocStyle::latex() @ \usepackage[utf8]{inputenc} \usepackage[sort]{cite} \usepackage{xstring} \bioctitle[Differential transcript usage and transcript usage QTL analyses in RNA-seq with the DRIMSeq package]{DRIMSeq: Dirichlet-multinomial framework for differential transcript usage and transcript usage QTL analyses in RNA-seq} \author{ Malgorzata Nowicka\thanks{\email{gosia.nowicka@uzh.ch}}, Mark D. Robinson\\ Institute for Molecular Life Sciences, University of Zurich, Switzerland\\ SIB Swiss Institute of Bioinformatics, University of Zurich, Switzerland } \begin{document} \maketitle \packageVersion{\Sexpr{BiocStyle::pkg_ver("DRIMSeq")}} \newpage \tableofcontents \newpage <>= library(knitr) opts_chunk$set(cache = FALSE, warning = FALSE, out.width = "7cm", fig.width = 7, out.height = "7cm", fig.height = 7) @ %------------------------------------------------------------------------------ % Introduction %------------------------------------------------------------------------------ \section{Main changes in the DRIMSeq package} For the full list of changes, type: <>= news(package = "DRIMSeq") @ Implementation of the regression framework in differential transcript usage analysis. It allows fitting more complicated than multiple group comparison experimental designs, for example, one can account for the batch effects or the fact that samples are paired or model continuous time course changes. It enables also testing of more complicated contrasts. Transcript-level analysis based on the beta-binomial model. In this case, each transcript ratio is modeled separately assuming it follows the beta-binomial distribution which is a one-dimensional version of the Dirichlet-multinomial distribution. Based on the fact that when $(Y_1,\ldots,Y_q) \sim DM(\pi_1,\ldots,\pi_q, \gamma_0)$ then $Y_j \sim BB(\pi_j,\gamma_0)$ \cite{Danaher1988}, we do not need to reestimate the beta-binomial parameters, only the likelihoods are recalculated. \Rpackage{DRIMSeq} returns gene-level and transcript-level p-values which can be used as input to the stage-wise testing procedure \cite{VandenBerge2017} as screening and confirmation p-values, respectively. Such approach provides increased power to identify transcripts which are actually differentially used in a gene detected as gene with DTU. Usage of term 'precision' instead of 'dispersion'. In the differential analysis based on the negative-binomial model, dispersion parameter is estimated. This dispersion parameter captures all sources of the inter-library variation between replicates present in the RNA-seq data. In the DM model, we do not directly estimate dispersion but a parameter called precision which is closely linked to dispersion via the formula: $dispersion = 1 / (1 + precision)$. In the previous version of \cite{Nowicka2016}, we used 'dispersion' as a name for the functions and variables calculating and storing, in fact, the precision estimates. Now, we use the term 'precision'. \section{Overview of the Dirichlet-multinomial model} For the statistical details about the Dirichlet-multinomial model, see the \Rpackage{DRIMSeq} paper \cite{Nowicka2016}. In the \Rpackage{DRIMSeq} package we implemented a Dirichlet-multinomial framework that can be used for modeling various multivariate count data with the interest in finding the instances where the ratios of observed features are different between the experimental conditions. Such a model can be applied, for example, in differential transcript usage (DTU) analysis or in the analysis that aim in detecting SNPs that are associated with differential transcript usage (tuQTL analysis). In both cases the multivariate features of a gene are transcripts. The implementation of Dirichlet-multinomial model in \Rpackage{DRIMSeq} package is customized for differential transcript usage and tuQTL analyses, but the data objects used in \Rpackage{DRIMSeq} can contain various types of counts. Therefore, other types of multivariate differential analyses can be performed such as differential methylation analysis or differential polyA usage from polyA-seq data. In short, the method consists of three statistical steps: First, we use the Cox-Reid adjusted profile likelihood to estimate the precision which is inverse proportional to dispersion, i.e., the variability of transcript ratios between samples (replicates) within conditions. Dispersion is needed in order to find the significant changes in transcript ratios between conditions which should be sufficiently stronger than the changes/variability within conditions. Second, we use maximum likelihood to estimate at the gene-level the regression coefficients in the Dirichlet-multinomial (DM) regression, the fitted transcript proportions in each sample and the full model likelihoods. For the analysis at the transcript-level we apply the beta-binomial (BB) regression to each transcript separately. In the differential transcript usage analysis, the full model is defined by the user with the design matrix. In the QTL analysis, full models are defined by the genotypes of SNPs associated with a given gene. Finally, we fit the null model DM and BB regression and use the likelihood ratio statistics to test for the differences in transcript proportions between the full and null models at the gene and transcript level. In the differential transcript usage analysis, the null model is again defined by the user. In the QTL analysis, null models correspond to regression with intercept only. \section{Important notes} Currently, transcript-level analysis based on the BB model are implemented only in the DTU analysis (\Rcode{bb\_model = TRUE}). When the model (full or null) of interest corresponds to multiple (or one) group fitting, then a shortcut algorithm called 'one way' (\Rcode{one\_way = TRUE}), which we adapted from the \Rfunction{glmFit} function in \Biocpkg{edgeR} \cite{McCarthy2012}, can be used. Choosing it is equivalent to running the original \Rpackage{DRIMSeq} implementation. In such a case, we use maximum likelihood to estimate the transcript proportions in each group separately and then the regression coefficients are calculated using matrix operations. Otherwise, the regression coefficients are directly estimated with the maximum likelihood approach. \section{Hints for DRIMSeq pipelines} In this vignette, we present how one could perform differential transcript usage analysis and tuQTL analysis with the \Rpackage{DRIMSeq} package. We use small data sets so that the whole pipelines can be run within few minutes in \R{} on a single core computer. In practice, the package is designed to take advantage of multicore computing for larger data sets. In the filtering function \Rfunction{dmFilter}, all the parameters that are influencing transcript count filtering are set to zero. This results in a very relaxed filtering, where transcripts with zero expression in all the samples and genes with only one transcript remained are removed. Functions \Rfunction{dmPrecision}, \Rfunction{dmFit} and \Rfunction{dmTest}, which perform the actual statistical analyses described above, have many other parameters available for tweaking, but they do have the default values assigned. Those values were chosen based on many real data analyses. Some of the steps are quite time consuming, especially the precision estimation, where proportions of each gene are refitted for different precision parameters. To speed up the calculations, we have parallelized many functions using \Biocpkg{BiocParallel}. Thus, if possible, we recommend to increase the number of workers in \Robject{BPPARAM}. In general, tuQTL analyses are more computationally intensive than differential transcript usage analysis because one needs to do the analysis for every SNP in the surrounding region of a gene. Additionally, a permutation scheme is used to compute the p-values. It is indeed feasible to perform tuQTL analysis for small chunks of genome, for example, per chromosome. %------------------------------------------------------------------------------ % Differential transcript usage analysis workflow %------------------------------------------------------------------------------ \section{Differential transcript usage analysis workflow} \subsection{Example data} To demonstrate the application of \Rpackage{DRIMSeq} in differential transcript usage analysis, we will use the \emph{pasilla} data set produced by Brooks et al. \cite{Brooks2011}. The aim of their study was to identify exons that are regulated by pasilla protein, the Drosophila melanogaster ortholog of mammalian NOVA1 and NOVA2 (well studied transcript usage factors). In their RNA-seq experiment, the libraries were prepared from 7 biologically independent samples: 4 control samples and 3 samples in which pasilla was knocked-down. The libraries were sequenced on Illumina Genome Analyzer II using single-end and paired-end sequencing and different read lengths. The RNA-seq data can be downloaded from the NCBI Gene Expression Omnibus (GEO) under the accession number GSE18508. In the examples below, we use a subset of \software{kallisto} \cite{Bray2016} counts available in \Biocexptpkg{PasillaTranscriptExpr} package, where you can find all the steps needed, for preprocessing the GEO data, to get a table with transcript counts. \subsection{Differential transcript usage analysis between two conditions} In this section, we present how to perform the DTU analysis between two conditions control and knock-down without accounting for the batch effect which is the library layout. Analysis where batch effects are included are presented in the next section. We start the analysis by creating a \Rclass{dmDSdata} object, which contains transcript counts and information about grouping samples into conditions. With each step of the pipeline, additional elements are added to this object. At the end of the analysis, the object contains results from all the steps, such as precision estimates, regression coefficients, fitted transcript ratios in each sample, likelihood ratio statistics, p-values, adjusted p-values at gene and transcript level. As new elements are added, the object also changes its name \Rclass{dmDSdata} $\rightarrow$ \Rclass{dmDSprecision} $\rightarrow$ \Rclass{dmDSfit} $\rightarrow$ \Rclass{dmDStest}, but each container inherits slots and methods available for the previous one. \subsubsection{Loading pasilla data into R} The transcript-level counts obtained from \software{kallisto} and metadata are saved as text files in the \Rcode{extdata} directory of the \Biocexptpkg{PasillaTranscriptExpr} package. <>= library(PasillaTranscriptExpr) data_dir <- system.file("extdata", package = "PasillaTranscriptExpr") ## Load metadata pasilla_metadata <- read.table(file.path(data_dir, "metadata.txt"), header = TRUE, as.is = TRUE) ## Load counts pasilla_counts <- read.table(file.path(data_dir, "counts.txt"), header = TRUE, as.is = TRUE) @ Load the \Rpackage{DRIMSeq} package. <>= library(DRIMSeq) @ To create a \Rcode{dmDSdata} object, saved as variable \Robject{d}, we need to prepare a data frame containing information about samples and we will call it \Robject{pasilla\_samples}. It has to have a variable called \Rcode{sample\_id} with unique sample names that are identical to column names in \Robject{pasilla\_counts} that correspond to samples. Additionally, it has to contain other variables that the user would like to use for the further regression analysis. Here, we are interested in the differential analysis between the control and knock-down condition. This information is stored in \Rcode{pasilla\_metadata\$condition}. The data frame with counts called \Robject{pasilla\_counts} is already formatted in the right way. It contains variables \Rcode{feature\_id} with unique transcript names and \Rcode{gene\_id} with unique gene IDs and columns with counts have the same names as \Rcode{sample\_id} in \Rcode{pasilla\_samples}. When printing variable \Robject{d}, you can see its class, size (number of genes and samples) and which accessor methods can be applied. For \Rcode{dmDSdata} object, there are two methods that return data frames with counts and samples. <>= pasilla_samples <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition) levels(pasilla_samples$group) d <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples) d head(counts(d), 3) head(samples(d), 3) @ You can also make a data summary plot, which is a histogram of the number of transcripts per gene. <>= plotData(d) @ To make the analysis runnable within this vignette, we want to keep only a small subset of genes, which is defined in the following file. <>= gene_id_subset <- readLines(file.path(data_dir, "gene_id_subset.txt")) d <- d[names(d) %in% gene_id_subset, ] d @ \subsubsection{Filtering} \label{DS_filtering} Genes may have many transcripts that are lowly expressed or not expressed at all. You can remove them using the \Rfunction{dmFilter} function. Filtering of lowly expressed transcripts can be done at two levels: minimal \textit{expression} using \Robject{min\_samps\_feature\_expr} and \Robject{min\_feature\_expr} parameters or minimal \textit{proportion} with \Robject{min\_samps\_feature\_prop} and \Robject{min\_feature\_prop}. In the \emph{pasilla} experiment we use a filtering based only on the transcript absolute expression and parameters are adjusted according to the number of replicates per condition. Since we have 3 knock-down and 4 control samples, we set \Robject{min\_samps\_feature\_expr} equal to 3. In this way, we allow a situation where a transcript is expressed in one condition but not in another, which is a case of differential transcript usage. The level of transcript expression is controlled by \Robject{min\_feature\_expr}. We set it to the value of 10, which means that only the transcripts that have at least 10 estimated counts in at least 3 samples are kept for the downstream analysis. Filtering at the gene level ensures that the observed transcript ratios have some minimal reliability. Although, Dirichlet-multinomial model works on feature counts, and not on feature ratios, which means that it gives more confidence to the ratios based on 100 versus 500 reads than 1 versus 5, minimal filtering based on gene expression removes the genes with mostly zero counts and reduces the number of tests in multiple test correction. For the \emph{pasilla} data, we want that genes have at least 10 counts in all the samples: \Rcode{min\_samps\_gene\_expr = 7} and \Rcode{min\_gene\_expr = 10}. <>= # Check what is the minimal number of replicates per condition table(samples(d)$group) d <- dmFilter(d, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) @ \subsubsection{Precision estimation} \label{DS_precision_estimation} Ideally, we would like to get accurate precision estimates for every gene, which is problematic when analyzing small data sets because precision estimates become inaccurate when the sample size decreases, especially for lowly expressed genes. As an alternative, we could assume that all the genes have the same precision and based on all the data, we could calculate a common precision, but we expect this to be too strong of an assumption. Moderated precision is a trade-off between gene-wise and common precision. The moderated estimates originate from a weighted likelihood which is a combination of common and individual likelihoods. We recommend this approach when analyzing small sample size data sets. At this step, three values may be calculated: mean expression of genes, common precision and gene-wise precisions. In the default setting, all of them are computed and common precision is used as an initial value in the grid approach to estimate gene-wise precisions, which are shrunk toward the trended precision. The grid approach is adapted from the \Rfunction{estimateDisp} function in \Biocpkg{edgeR} \cite{McCarthy2012}. By default, to estimate the common precision, we use 10\% percent (\Rcode{prec\_subset = 0.1}) of randomly selected genes. That is due to the fact that common precision is used only as an initial value, and estimating it based on all the genes takes a substantial part of time. To ensure that the analysis are reproducible, the user should define a random seed \Rcode{set.seed()} before running the \Rcode{dmPrecision()} function. Thank to that, each time the same subset of genes is selected. To estimate precision parameters, the user has to define a design matrix with the full model of interest, which will be also used later in the proportion estimation. Here, the full model is defined by a formula $\sim group$ which indicates that samples come from two conditions. This step of our pipeline is the most time consuming. Thus, for real data analysis, consider using \Rcode{BPPARAM = BiocParallel::MulticoreParam()} with more than one worker. <>= ## Create the design matrix design_full <- model.matrix(~ group, data = samples(d)) design_full @ <>= ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d, design = design_full) d head(mean_expression(d), 3) common_precision(d) head(genewise_precision(d)) @ To inspect the behavior of precision estimates, you can plot them against the mean gene expression. Normally in the differential analysis based on RNA-seq data, such plot has dispersion parameter plotted on the y-axis. Here, the y-axis represents precision since in the Dirichlet-multinomial model this is the parameter that is directly estimated. It is important to keep in mind that the precision parameter is inverse proportional to dispersion: $dispersion = 1 / (1 + precision)$. In RNA-seq data, we can typically observe a trend where the dispersion decreases (precision increases) for genes with higher mean expression. <>= plotPrecision(d) @ All of the plotting functions from \Rpackage{DRIMSeq} package, return a \Rclass{ggplot} object which can be further modified using \CRANpkg{ggplot2} package. For example, the user can increase the size of points. <>= library(ggplot2) ggp <- plotPrecision(d) ggp + geom_point(size = 4) @ \subsubsection{Proportion estimation} In this step, we estimate the full model regression coefficients, fitted proportions and likelihoods. We use the same design matrix as in the precision estimation step. By default, \Rcode{one\_way = TRUE} which means that whenever the design corresponds to multiple group fitting, the 'one way' shortcut algorithm will be used, which in fact corresponds to the first implementation of \Rpackage{DRIMSeq}. Transcript proportions are estimated for each condition separately and then the regression coefficients are calculated using matrix operations. The 'one way' algorithm is adapted from the \Rfunction{glmFit} function in \Biocpkg{edgeR} \cite{McCarthy2012}. By setting \Rcode{verbose = 1}, we can see that the one way approach is used with the current design. When \Rcode{bb\_model = TRUE} (the default), additionally to the gene-level Dirichlet-multinomial estimates the transcript-level beta-binomial results will be computed. <>= d <- dmFit(d, design = design_full, verbose = 1) d ## Get fitted proportions head(proportions(d)) ## Get the DM regression coefficients (gene-level) head(coefficients(d)) ## Get the BB regression coefficients (feature-level) head(coefficients(d), level = "feature") @ \subsubsection{Testing for differential transcript usage} \label{DS_testing} Calling the \Rfunction{dmTest} function results in two calculations. First, null model is fitted. This null model can be defined by the user via \Rcode{coef}, \Rcode{design} or \Rcode{contrast} parameters. Second, likelihood ratio statistics are used to test for the difference between the full and null model. Both steps are done at the gene and transcript level when \Rcode{bb\_model = TRUE}. In our example, we would like to test whether there are differences in transcript usage between control (CTL) and knock-down (KD). We can achieve that by using the \Rcode{coef} parameter which should indicate which columns of the full design should be removed to get the null design. We define it equal to \Rcode{"groupKD"}. Then the null design has only an intercept column which means that all the samples are treated as if they came from one condition. Note that \Rcode{one\_way = TRUE} and the one way approach is used. <>= d <- dmTest(d, coef = "groupKD", verbose = 1) design(d) head(results(d), 3) @ The same can be achieved by directly defining the null design matrix with the \Rcode{design} parameter. <>= design_null <- model.matrix(~ 1, data = samples(d)) design_null d <- dmTest(d, design = design_null) head(results(d), 3) @ Or by using the \Rcode{contrast} parameter. The null design is calculated using the approach from the \Rfunction{glmLRT} function in \Biocpkg{edgeR} \cite{McCarthy2012}. <>= contrast <- c(0, 1) d <- dmTest(d, contrast = contrast) design(d) head(results(d), 3) @ To obtain the results of likelihood ratio tests, you have to call the function \Rfunction{results}, which returns a data frame with likelihood ratio statistics, degrees of freedom, p-values and Benjamini and Hochberg (BH) adjusted p-values for each gene by default and for each transcript when \Rcode{level = "feature"}. <>= head(results(d, level = "feature"), 3) @ You can plot a histogram of gene-level and transcript-level p-values. <>= plotPValues(d) plotPValues(d, level = "feature") @ For genes of interest, you can make plots (bar plots, line plots, box plots, ribbon plots) of observed and estimated with Dirichlet-multinomial model transcript ratios. You have to define the \Rcode{group\_variable} parameter which should indicate a variable from \Rcode{samples(d)}. Currently, plots can be done only for categorical variables. We choose the \Rcode{"group"} column since it corresponds to the comparison of our interest. Estimated proportions are marked with diamond shapes. As an example, we plot the top significant gene. <>= res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] plotProportions(d, gene_id = top_gene_id, group_variable = "group") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "lineplot") plotProportions(d, gene_id = top_gene_id, group_variable = "group", plot_type = "ribbonplot") @ \subsubsection{Two-stage test} \Rpackage{DRIMSeq} returns gene and transcript level p-values which can be used as an input to the stage-wise analysis \cite{VandenBerge2017} implemented in the \Rcode{stageR} package, currently available on github \url{https://github.com/statOmics/stageR}. As pointed by the authors of \Rcode{stageR}, interpreting both gene-level and transcript-level adjusted p-values does not provide appropriate FDR control and should be avoided. However, applying a stage-wise testing provides a useful biological interpretation of these results and improved statistical performance. In short, the procedure consists of a screening stage and a confirmation stage. In the screening stage, gene-level BH-adjusted p-values are screened to detect genes for which the hypothesis of interest is significantly rejected. Only those genes are further considered in the confirmation stage, where for each gene separately, transcript-level p-values are adjusted to control the FWER and BH-adjusted significance level of the screening stage. It is important to note that transcript-level stage-wise adjusted p-values for genes that do not pass the screening stage are set to \Rcode{NA}. Also the stage-wise adjusted p-values can not be compared to significance level other than chosen in the stage-wise analysis. If that is of interest, one has to rerun this analysis with the new significance level. The following code chunk is not evaluated by this vignette and to run it, user has to make sure that the \Rcode{stageR} package is installed. It shows how one can use the \Rpackage{DRIMSeq} output in the stage-wise analysis. <>= library(stageR) ## Assign gene-level pvalues to the screening stage pScreen <- results(d)$pvalue names(pScreen) <- results(d)$gene_id ## Assign transcript-level pvalues to the confirmation stage pConfirmation <- matrix(results(d, level = "feature")$pvalue, ncol = 1) rownames(pConfirmation) <- results(d, level = "feature")$feature_id ## Create the gene-transcript mapping tx2gene <- results(d, level = "feature")[, c("feature_id", "gene_id")] ## Create the stageRTx object and perform the stage-wise analysis stageRObj <- stageRTx(pScreen = pScreen, pConfirmation = pConfirmation, pScreenAdjusted = FALSE, tx2gene = tx2gene) stageRObj <- stageWiseAdjustment(object = stageRObj, method = "dtu", alpha = 0.05) getSignificantGenes(stageRObj) getSignificantTx(stageRObj) padj <- getAdjustedPValues(stageRObj, order = TRUE, onlySignificantGenes = FALSE) head(padj) @ \subsection{Differential transcript usage analysis between two conditions with accounting for the batch effects} The regression framework implemented in \Rpackage{DRIMSeq} allows to account for the batch effects. Here, this would be the library layout stored in \Rcode{pasilla\_metadata\$LibraryLayout}. The steps of this analysis are the same as described above. The only difference is that we have to include the library layout variable in the \Rcode{sample} slot in the \Rcode{dmDSdata} object and define a full model that contains the batch effect. <>= pasilla_samples2 <- data.frame(sample_id = pasilla_metadata$SampleName, group = pasilla_metadata$condition, library_layout = pasilla_metadata$LibraryLayout) d2 <- dmDSdata(counts = pasilla_counts, samples = pasilla_samples2) ## Subsetting to a vignette runnable size d2 <- d2[names(d2) %in% gene_id_subset, ] ## Filtering d2 <- dmFilter(d2, min_samps_gene_expr = 7, min_samps_feature_expr = 3, min_gene_expr = 10, min_feature_expr = 10) ## Create the design matrix design_full2 <- model.matrix(~ group + library_layout, data = samples(d2)) design_full2 ## To make the analysis reproducible set.seed(123) ## Calculate precision d2 <- dmPrecision(d2, design = design_full2) common_precision(d2) head(genewise_precision(d2)) plotPrecision(d2) ## Fit proportions d2 <- dmFit(d2, design = design_full2, verbose = 1) ## Test for DTU d2 <- dmTest(d2, coef = "groupKD", verbose = 1) design(d2) head(results(d2), 3) ## Plot p-value distribution plotPValues(d2) @ <>= ## Plot the top significant gene res2 <- results(d2) res2 <- res2[order(res2$pvalue, decreasing = FALSE), ] top_gene_id2 <- res2$gene_id[1] ggp <- plotProportions(d2, gene_id = top_gene_id2, group_variable = "group") ggp + facet_wrap(~ library_layout) @ %------------------------------------------------------------------------------ % tuQTL analysis workflow %------------------------------------------------------------------------------ \section{tuQTL analysis workflow} In the transcript usage QTL analysis, we want to identify genetic variants (here, bi-allelic SNPs) that are associated with changes in transcript usage. Such SNPs are then called transcript usage quantitative trait locies (tuQTLs). Ideally, we would like to test associations of every SNP with every gene. However, such an approach would be very costly computationally and in terms of multiple testing correction. Under the assumption that SNPs that directly affect transcript usage are likely to be placed in the close surrounding of genes, we test only the SNPs that are located within the gene body and within some range upstream and downstream of the gene. \subsection{Example data} To demonstrate the tuQTL analysis with the \Rpackage{DRIMSeq} package, we use data from the GEUVADIS project \cite{Lappalainen2013}, where 462 RNA-Seq samples from lymphoblastoid cell lines were obtained. The genome sequencing data of the same individuals is provided by the 1000 Genomes Project. The samples in this project come from five populations: CEPH (CEU), Finns (FIN), British (GBR), Toscani (TSI) and Yoruba (YRI). We use transcript quantification (expected counts from FluxCapacitor) and genotypes available on the GEUVADIS project website \url{http://www.ebi.ac.uk/Tools/geuvadis-das/}, and the Gencode v12 gene annotation is available at \url{http://www.gencodegenes.org/releases/12.html}. In order to make this vignette runnable, we perform the analysis on subsets of bi-allelic SNPs and transcript expected counts for CEPH population (91 individuals) that correspond to 50 randomly selected genes from chromosome 19. The full dataset can be accessed from \Biocexptpkg{GeuvadisTranscriptExpr} package along with the description of preprocessing steps. \subsection{tuQTL analysis with the DRIMSeq package} Assuming you have gene annotation, feature counts and bi-allelic genotypes that are expressed in terms of the number of alleles different from the reference, the \Rpackage{DRIMSeq} workflow for tuQTL analysis is analogous to the one for differential transcript usage. First, we have to create a \Rclass{dmSQTLdata} object, which contains feature counts, sample information and genotypes. Similarly as in the differential transcript usage pipeline, results from every step are added to this object and at the end of the analysis, it contains precision estimates, proportions estimates, likelihood ratio statistics, p-values, adjusted p-values. As new elements are added, the object also changes its name \Rclass{dmSQTLdata} $\rightarrow$ \Rclass{dmSQTLprecision} $\rightarrow$ \Rclass{dmSQTLfit} $\rightarrow$ \Rclass{dmSQTLtest}. For each object, slots and methods are inherited from the previous one. \subsubsection{Loading GEUVADIS data into R} We use the subsets of data defined in the \Biocexptpkg{GeuvadisTranscriptExpr} package. <>= library(GeuvadisTranscriptExpr) geuv_counts <- GeuvadisTranscriptExpr::counts geuv_genotypes <- GeuvadisTranscriptExpr::genotypes geuv_gene_ranges <- GeuvadisTranscriptExpr::gene_ranges geuv_snp_ranges <- GeuvadisTranscriptExpr::snp_ranges @ Load the \Rpackage{DRIMSeq} package. <>= library(DRIMSeq) @ In the tuQTL analysis, an initial data object \Robject{d} is of \Robject{dmSQTLdata} class and, additionally to feature counts and sample information, it contains genotypes of SNPs that are in some surrounding of genes. This surrounding is defined with the parameter \Rcode{window}. In order to find out which SNPs should be tested with which genes, the \Rfunction{dmSQTLdata} functions requires as an input the location of genes (\Rcode{gene\_ranges}) and SNPs (\Rcode{snp\_ranges}) stored as \Rclass{GRanges} objects. Variables with transcript IDs and gene IDs in the \Robject{counts} data frame must have names \Rcode{feature\_id} and \Rcode{gene\_id}, respectively. In the \Robject{genotypes} data frame, the variable with SNP IDs must have name \Rcode{snp\_id}. <>= colnames(geuv_counts)[c(1,2)] <- c("feature_id", "gene_id") colnames(geuv_genotypes)[4] <- "snp_id" geuv_samples <- data.frame(sample_id = colnames(geuv_counts)[-c(1,2)]) d <- dmSQTLdata(counts = geuv_counts, gene_ranges = geuv_gene_ranges, genotypes = geuv_genotypes, snp_ranges = geuv_snp_ranges, samples = geuv_samples, window = 5e3) d @ In our tuQTL analysis, we do not repeat tests for the SNPs that define the same grouping of samples (genotype). We identify SNPs with identical genotypes across the samples and assign them to blocks. Estimation and testing are done at the block level, but the returned results are extended to a SNP level by repeating the block statistics for each SNP that belongs to a given block. The data summary plot \Rfunction{plotData} produces three histograms: the number of features per gene, the number of SNPs per gene and the number of blocks per gene. <>= plotData(d, plot_type = "features") plotData(d, plot_type = "snps") plotData(d, plot_type = "blocks") @ \subsubsection{Filtering} The filtering step eliminates genes and features with low expression, as in the differential transcript usage analysis (see section \ref{DS_filtering}). Additionally, it filters out the SNPs/blocks that do not define at least two genotypes where each of them is present in at least \Robject{minor\_allele\_freq} individuals. Usually, \Robject{minor\_allele\_freq} is equal to roughly 5\% of the total sample size. Ideally, we would like that genes were expressed at some minimal level in all samples because this would lead to better estimates of feature ratios. However, for some genes, missing values may be present in the counts data, or genes may be lowly expressed in some samples. Setting up \Robject{min\_samps\_gene\_expr} to 91 may exclude too many genes from the analysis. We can be slightly less stringent by taking, for example, \Rcode{min\_samps\_gene\_expr = 70}. <>= d <- dmFilter(d, min_samps_gene_expr = 70, min_samps_feature_expr = 5, minor_allele_freq = 5, min_gene_expr = 10, min_feature_expr = 10) @ \subsubsection{Precision estimation} In the DTU analysis (section \ref{DS_precision_estimation}), the full model used in precision estimation has to be defined by the user. Here, full models are defined by genotypes. For a given SNP, genotype can have numeric values of 0, 1, and 2. When \Rcode{one\_way = TRUE}, multiple group fitting is performed. When \Rcode{one\_way = FALSE}, a regression framework is used with the design matrix defined by a formula $\sim group$ where $group$ is a continuous (not categorical) variable with genotype values 0, 1, and 2. For the tuQTL analysis, it has an additional parameter called \Rcode{speed}. If \Rcode{speed = FALSE}, gene-wise precisions are calculated for each gene-block. This calculation may take a long time, since there can be hundreds of SNPs/blocks per gene. If \Rcode{speed} is set to \Rcode{TRUE}, there will be only one precision calculated per gene (assuming a null model, i.e., model with intercept only), and it will be assigned to all the blocks matched to this gene. In the default setting, \Rcode{speed = TRUE} and common precision is used as an initial value in the grid approach to estimate gene-wise precisions with NO moderation, since the sample size is quite large. Again, this step of the pipeline is one of the most time consuming. Thus consider using \Rcode{BPPARAM = BiocParallel::MulticoreParam()} with more than one worker when performing real data analysis. <>= ## To make the analysis reproducible set.seed(123) ## Calculate precision d <- dmPrecision(d) plotPrecision(d) @ \subsubsection{Proportion estimation} Dirichlet-multinomial full model proportions/coefficients and likelihoods are estimated for each gene-block pair. Currently, no transcript-level analysis are implemented in the tuQTL workflow. <>= d <- dmFit(d) @ \subsubsection{Testing for tuQTLs} \Rfunction{dmTest} function estimates gene-level null model proportions/coefficients and likelihoods and performs the likelihood ratio test. The null models equal to models with intercept only. In contrast to the DTU analysis, there are some additional challenges that have to handled in the tuQTL analysis. They include a large number of tests per gene with highly variable allele frequencies (models) and linkage disequilibrium. As in other sQTL studies, we apply a permutation approach to empirically assess the null distribution of associations and use it for the adjustment of nominal p-values. There are two permutation schemes available. When \Rcode{permutation\_mode} equals to \Rcode{"all\_genes"}, the null p-value distribution is calculated from all the genes. When \Rcode{permutation\_mode = "per\_gene"}, null distribution of p-values is calculated for each gene separately based on permutations of this individual gene. The latter approach may take a lot of computational time. We suggest using the first option, which is also the default one. The function \Rfunction{results} returns a data frame with likelihood ratio statistics, degrees of freedom, p-values and Benjamini and Hochberg adjusted p-values for each gene-block/SNP pair. <>= d <- dmTest(d) plotPValues(d) head(results(d)) @ You can plot the observed transcript ratios for the tuQTLs of interest. Plotting the fitted values is not possible as we do not return this estimates due to their size. When the sample size is large, we recommend using box plots as a \Rcode{plot\_type}. We plot a tuQTL with the lowest p-value. <>= res <- results(d) res <- res[order(res$pvalue, decreasing = FALSE), ] top_gene_id <- res$gene_id[1] top_snp_id <- res$snp_id[1] plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id) plotProportions(d, gene_id = top_gene_id, snp_id = top_snp_id, plot_type = "boxplot2") @ %-------------------------------------------------- % Session information %-------------------------------------------------- \section{Session information} <>= sessionInfo() @ %-------------------------------------------------- % References %-------------------------------------------------- \bibliography{References} \end{document} DRIMSeq/vignettes/References.bib0000755000175200017520000003210414516005636017560 0ustar00biocbuildbiocbuild@article{Nowicka2016, author = {Nowicka, M and Robinson, M D}, doi = {10.12688/f1000research.8900.2}, journal = {F1000Research}, number = {1356}, title = {{DRIMSeq: a Dirichlet-multinomial framework for multivariate count outcomes in genomics [version 2; referees: 2 approved]}}, url = {https://f1000research.com/articles/5-1356/v2}, volume = {5}, year = {2016} } @article{Brooks2011, abstract = {Alternative splicing is generally controlled by proteins that bind directly to regulatory sequence elements and either activate or repress splicing of adjacent splice sites in a target pre-mRNA. Here, we have combined RNAi and mRNA-seq to identify exons that are regulated by Pasilla (PS), the Drosophila melanogaster ortholog of mammalian NOVA1 and NOVA2. We identified 405 splicing events in 323 genes that are significantly affected upon depletion of ps, many of which were annotated as being constitutively spliced. The sequence regions upstream and within PS-repressed exons and downstream from PS-activated exons are enriched for YCAY repeats, and these are consistent with the location of these motifs near NOVA-regulated exons in mammals. Thus, the RNA regulatory map of PS and NOVA1/2 is highly conserved between insects and mammals despite the fact that the target gene orthologs regulated by PS and NOVA1/2 are almost entirely nonoverlapping. This observation suggests that the regulatory codes of individual RNA binding proteins may be nearly immutable, yet the regulatory modules controlled by these proteins are highly evolvable.}, author = {Brooks, Angela N and Yang, Li and Duff, Michael O and Hansen, Kasper D and Park, Jung W and Dudoit, Sandrine and Brenner, Steven E and Graveley, Brenton R}, file = {:Users/gosia/Documents/Mendeley Desktop/Brooks et al/Brooks et al. - 2011 - Conservation of an RNA regulatory map between Drosophila and mammals.pdf:pdf}, institution = {Department of Molecular and Cell Biology, University of California, Berkeley, California 94720, USA.}, journal = {Genome research}, keywords = {Pasilla}, mendeley-groups = {Data}, mendeley-tags = {Pasilla}, number = {2}, pages = {193--202}, title = {{Conservation of an RNA regulatory map between Drosophila and mammals.}}, volume = {21}, year = {2011} } @article{Lappalainen2013, abstract = {Genome sequencing projects are discovering millions of genetic variants in humans, and interpretation of their functional effects is essential for understanding the genetic basis of variation in human traits. Here we report sequencing and deep analysis of messenger RNA and microRNA from lymphoblastoid cell lines of 462 individuals from the 1000 Genomes Project--the first uniformly processed high-throughput RNA-sequencing data from multiple human populations with high-quality genome sequences. We discover extremely widespread genetic variation affecting the regulation of most genes, with transcript structure and expression level variation being equally common but genetically largely independent. Our characterization of causal regulatory variation sheds light on the cellular mechanisms of regulatory and loss-of-function variation, and allows us to infer putative causal variants for dozens of disease-associated loci. Altogether, this study provides a deep understanding of the cellular mechanisms of transcriptome variation and of the landscape of functional variants in the human genome.}, author = {Lappalainen, Tuuli and Sammeth, Michael and Friedl{\"{a}}nder, Marc R and {'t Hoen}, Peter A C and Monlong, Jean and Rivas, Manuel A and Gonz{\`{a}}lez-Porta, Mar and Kurbatova, Natalja and Griebel, Thasso and Ferreira, Pedro G and Barann, Matthias and Wieland, Thomas and Greger, Liliana and van Iterson, Maarten and Alml{\"{o}}f, Jonas and Ribeca, Paolo and Pulyakhina, Irina and Esser, Daniela and Giger, Thomas and Tikhonov, Andrew and Sultan, Marc and Bertier, Gabrielle and MacArthur, Daniel G and Lek, Monkol and Lizano, Esther and Buermans, Henk P J and Padioleau, Ismael and Schwarzmayr, Thomas and Karlberg, Olof and Ongen, Halit and Kilpinen, Helena and Beltran, Sergi and Gut, Marta and Kahlem, Katja and Amstislavskiy, Vyacheslav and Stegle, Oliver and Pirinen, Matti and Montgomery, Stephen B and Donnelly, Peter and McCarthy, Mark I and Flicek, Paul and Strom, Tim M and Lehrach, Hans and Schreiber, Stefan and Sudbrak, Ralf and Carracedo, Angel and Antonarakis, Stylianos E and H{\"{a}}sler, Robert and Syv{\"{a}}nen, Ann-Christine and van Ommen, Gert-Jan and Brazma, Alvis and Meitinger, Thomas and Rosenstiel, Philip and Guig{\'{o}}, Roderic and Gut, Ivo G and Estivill, Xavier and Dermitzakis, Emmanouil T}, file = {:Users/gosia/Documents/Mendeley Desktop/Lappalainen et al/Lappalainen et al. - 2013 - Transcriptome and genome sequencing uncovers functional variation in humans(2).pdf:pdf;:Users/gosia/Documents/Mendeley Desktop/Lappalainen et al/Lappalainen et al. - 2013 - Transcriptome and genome sequencing uncovers functional variation in humans.pdf:pdf}, issn = {1476-4687}, journal = {Nature}, keywords = {Alleles,Cell Line,Exons,Exons: genetics,GEUVADIS,Gene Expression Profiling,Genetic Variation,Genetic Variation: genetics,Genome,High-Throughput Nucleotide Sequencing,Human,Human: genetics,Humans,Messenger,Messenger: analysis,Messenger: genetics,Polymorphism,Quantitative Trait Loci,Quantitative Trait Loci: genetics,RNA,Sequence Analysis,Single Nucleotide,Single Nucleotide: genetics,Transcriptome,Transcriptome: genetics,Transformed}, mendeley-groups = {sQTL analysis/Geuvadis,.PhD report CM2,sQTL analysis/Data}, mendeley-tags = {GEUVADIS}, number = {7468}, pages = {506--11}, pmid = {24037378}, title = {{Transcriptome and genome sequencing uncovers functional variation in humans.}}, url = {http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=3918453{\&}tool=pmcentrez{\&}rendertype=abstract}, volume = {501}, year = {2013} } @article{Bray2016, abstract = {We present kallisto, an RNA-seq quantification program that is two orders of magnitude faster than previous approaches and achieves similar accuracy. Kallisto pseudoaligns reads to a reference, producing a list of transcripts that are compatible with each read while avoiding alignment of individual bases. We use kallisto to analyze 30 million unaligned paired-end RNA-seq reads in {\textless}10 min on a standard laptop computer. This removes a major computational bottleneck in RNA-seq analysis.}, author = {Bray, Nicolas L and Pimentel, Harold and Melsted, Pall and Pachter, Lior}, issn = {1546-1696}, journal = {Nat Biotech}, keywords = {kallisto}, mendeley-groups = {.DRIMSeq paper,RNA-seq quantification/Transcript quantification}, mendeley-tags = {kallisto}, month = {apr}, publisher = {Nature Publishing Group, a division of Macmillan Publishers Limited. All Rights Reserved.}, title = {{Near-optimal probabilistic RNA-seq quantification}}, url = {http://dx.doi.org/10.1038/nbt.3519 http://10.0.4.14/nbt.3519 http://www.nature.com/nbt/journal/vaop/ncurrent/abs/nbt.3519.html{\#}supplementary-information}, volume = {advance on}, year = {2016} } @article{VandenBerge2017, abstract = {Background: Reductions in sequencing cost and innovations in expression quantification have prompted an emergence of RNA-seq studies with complex designs and data analysis at transcript resolution. These applications involve multiple hypotheses per gene, leading to challenging multiple testing problems. Conventional approaches provide separate top-lists for every contrast and false discovery rate (FDR) control at individual hypothesis level. Hence, they fail to establish proper gene-level error control, which compromises downstream validation experiments. Tests that aggregate individual hypotheses are more powerful and provide gene-level FDR control, but in the RNA-seq literature no methods are available for post-hoc analysis of individual hypotheses. Results: We introduce a two-stage procedure that leverages the increased power of aggregated hypothesis tests while maintaining high biological resolution by post-hoc analysis of genes passing the screening hypothesis. Our method is evaluated on simulated and real RNA-seq experiments. It provides gene-level FDR control in studies with complex designs while boosting power for interaction effects without compromising the discovery of main effects. In a differential transcript usage/expression context, stage-wise testing gains power by aggregating hypotheses at the gene level, while providing transcript-level assessment of genes passing the screening stage. Finally, a prostate cancer case study highlights the relevance of combining gene with transcript level results. Conclusion: Stage-wise testing is a general paradigm that can be adopted whenever individual hypotheses can be aggregated. In our context, it achieves an optimal middle ground between biological resolution and statistical power while providing gene-level FDR control, which is beneficial for downstream biological interpretation and validation.}, author = {{Van den Berge}, Koen and Soneson, Charlotte and Robinson, Mark D and Clement, Lieven}, file = {:Users/gosia/Mendeley Desktop/Van den Berge et al/Van den Berge et al. - 2017 - A general and powerful stage-wise testing procedure for differential expression and differential transcrip.pdf:pdf}, journal = {bioRxiv}, mendeley-groups = {RNA-seq DE,.DRIMSeq paper}, month = {feb}, title = {{A general and powerful stage-wise testing procedure for differential expression and differential transcript usage}}, url = {http://biorxiv.org/content/early/2017/02/16/109082.abstract}, year = {2017} } @article{McCarthy2012, abstract = {A flexible statistical framework is developed for the analysis of read counts from RNA-Seq gene expression studies. It provides the ability to analyse complex experiments involving multiple treatment conditions and blocking variables while still taking full account of biological variation. Biological variation between RNA samples is estimated separately from the technical variation associated with sequencing technologies. Novel empirical Bayes methods allow each gene to have its own specific variability, even when there are relatively few biological replicates from which to estimate such variability. The pipeline is implemented in the edgeR package of the Bioconductor project. A case study analysis of carcinoma data demonstrates the ability of generalized linear model methods (GLMs) to detect differential expression in a paired design, and even to detect tumour-specific expression changes. The case study demonstrates the need to allow for gene-specific variability, rather than assuming a common dispersion across genes or a fixed relationship between abundance and variability. Genewise dispersions de-prioritize genes with inconsistent results and allow the main analysis to focus on changes that are consistent between biological replicates. Parallel computational approaches are developed to make non-linear model fitting faster and more reliable, making the application of GLMs to genomic data more convenient and practical. Simulations demonstrate the ability of adjusted profile likelihood estimators to return accurate estimators of biological variability in complex situations. When variation is gene-specific, empirical Bayes estimators provide an advantageous compromise between the extremes of assuming common dispersion or separate genewise dispersion. The methods developed here can also be applied to count data arising from DNA-Seq applications, including ChIP-Seq for epigenetic marks and DNA methylation analyses.}, author = {McCarthy, Davis J. and Chen, Yunshun and Smyth, Gordon K.}, file = {:Users/gosia/Mendeley Desktop/McCarthy, Chen, Smyth/McCarthy, Chen, Smyth - 2012 - Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation.pdf:pdf}, journal = {Nucleic Acids Research}, keywords = {edgeR}, mendeley-groups = {.CM2 PhD report,.DRIMSeq paper,RNA-seq DE/Gene DE/edgeR,Project DM/edgeR}, mendeley-tags = {edgeR}, number = {10}, pages = {4288--4297}, pmid = {22287627}, title = {{Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation}}, volume = {40}, year = {2012} } @article{Danaher1988, abstract = {We develop estimates for the parameters of the Dirichlet-multinomial distribution (DMD) when there is insufficient data to obtain maximum likelihood or method of moment estimates known in the literature. We do, however, have supplemetary beta-binomial data pertaining to the marginals of the DMD, and use these data when estimating the DMD parameters. A real situation and data set are given where our estimates are applicable.}, annote = {doi: 10.1080/03610928808829713}, author = {Danaher, Peter J}, doi = {10.1080/03610928808829713}, file = {:Users/gosia/Mendeley Desktop/Danaher/Danaher - 1988 - Parameter estimation for the dirichlet-multinomial distribution using supplementary beta-binomial data(2).pdf:pdf}, issn = {0361-0926}, journal = {Communications in Statistics - Theory and Methods}, mendeley-groups = {Project DM/Beta-Binomial}, month = {jan}, number = {6}, pages = {1777--1788}, publisher = {Taylor {\&} Francis}, title = {{Parameter estimation for the dirichlet-multinomial distribution using supplementary beta-binomial data}}, url = {http://dx.doi.org/10.1080/03610928808829713}, volume = {17}, year = {1988} }