From bea9a4387337eaa1990123745315eb04a1759fc9 Mon Sep 17 00:00:00 2001 From: paradis Date: Fri, 20 Feb 2009 10:28:02 +0000 Subject: [PATCH] added the contribution of PL on CDAM git-svn-id: https://svn.mpl.ird.fr/ape/dev/ape@63 6e262413-ae40-0410-9e79-b911bd7a66b7 --- ChangeLog | 6 +- DESCRIPTION | 8 +- R/CDAM.global.R | 216 +++++++++++++++++++++++++++++++++ R/CDAM.post.R | 276 +++++++++++++++++++++++++++++++++++++++++++ data/mat3.RData | Bin 0 -> 714 bytes data/mat5M3ID.RData | Bin 0 -> 49717 bytes data/mat5Mrand.RData | Bin 0 -> 49548 bytes man/CADM.global.Rd | 121 +++++++++++++++++++ 8 files changed, 622 insertions(+), 5 deletions(-) create mode 100644 R/CDAM.global.R create mode 100644 R/CDAM.post.R create mode 100644 data/mat3.RData create mode 100644 data/mat5M3ID.RData create mode 100644 data/mat5Mrand.RData create mode 100644 man/CADM.global.Rd diff --git a/ChangeLog b/ChangeLog index d3e56a5..2d14a5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,12 @@ - CHANGES IN APE VERSION 2.2-5 + CHANGES IN APE VERSION 2.3 NEW FEATURES + o The new functions CADM.global and CADM.post, contributed by + Pierre Legendre, test the congruence among several distance + matrices. + o The new function yule.time fits a user-defined time-dependent Yule model by maximum likelihood. diff --git a/DESCRIPTION b/DESCRIPTION index d168fa6..e013e3f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,12 +1,12 @@ Package: ape -Version: 2.2-5 +Version: 2.3 Date: 2009-02-20 Title: Analyses of Phylogenetics and Evolution Author: Emmanuel Paradis, Ben Bolker, Julien Claude, Hoa Sien Cuong, Richard Desper, Benoit Durand, Julien Dutheil, Olivier Gascuel, - Gangolf Jobb, Christoph Heibl, Vincent Lefort, Jim Lemon, - Yvonnick Noel, Johan Nylander, Rainer Opgen-Rhein, Korbinian Strimmer, - Damien de Vienne + Gangolf Jobb, Christoph Heibl, Vincent Lefort, Pierre Legendre, + Jim Lemon, Yvonnick Noel, Johan Nylander, Rainer Opgen-Rhein, + Korbinian Strimmer, Damien de Vienne Maintainer: Emmanuel Paradis Depends: R (>= 2.6.0) Suggests: gee diff --git a/R/CDAM.global.R b/R/CDAM.global.R new file mode 100644 index 0000000..184bffa --- /dev/null +++ b/R/CDAM.global.R @@ -0,0 +1,216 @@ +`CADM.global` <- + function(Dmat, nmat, n, nperm=99, make.sym=TRUE, weights=NULL, silent=FALSE) +{ +### Function to test the overall significance of the congruence among +### a group of distance matrices using Kendall's coefficient of concordance W. +### +### copyleft - Pierre Legendre, December 2008 +### +### Reference - +### Legendre, P. and F.-J. Lapointe. 2004. Assessing congruence among distance +### matrices: single malt Scotch whiskies revisited. Australian and New Zealand +### Journal of Statistics 46: 615-629. +### +### Parameters of the function -- +### +### Dmat = A text file listing the distance matrices one after the other, with +### or without blank lines. +### Each matrix is in the form of a square distance matrix with 0's +### on the diagonal. +### +### nmat = number of distance matrices in file Dmat. +### +### n = number of objects in each distance matrix. All matrices have same n. +### +### nperm = number of permutations for the tests. +### +### make.sym = TRUE: turn asymmetric matrices into symmetric matrices by +### averaging the two triangular portions. +### = FALSE: analyse asymmetric matrices as they are. +### +### weights = a vector of positive weights for the distance matrices. +### Example: weights = c(1,2,3) +### = NULL (default): all matrices have same weight in calculation of W. +### +### silent = TRUE: informative messages will not be printed, except stopping +### messages. Option useful for simulation work. +### = FALSE: informative messages will be printed. +### +################################################################################ + + if(nmat < 2) + stop("Analysis requested for a single D matrix: CADM is useless") + + a <- system.time({ + + ## Check the input file + if(ncol(Dmat) != n) + stop("Error in the value of 'n' or in the D matrices themselves") + nmat2 <- nrow(Dmat)/n + if(nmat2 < nmat) # OK if 'nmat' < number of matrices in the input file + stop("Number of input D matrices = ",nmat2,"; this value is < nmat") + + nd <- n*(n-1)/2 + if(is.null(weights)) { + w <- rep(1,nmat) + } else { + if(length(weights) != nmat) + stop("Incorrect number of values in vector 'weights'") + if(length(which(weights < 0)) > 0) + stop("Negative weights are not permitted") + w <- weights*nmat/sum(weights) + if(!silent) cat("Normalized weights =",w,'\n') + } + + ## Are asymmetric D matrices present? + asy <- rep(FALSE, nmat) + asymm <- FALSE + end <- 0 + for(k in 1:nmat) { + begin <- end+1 + end <- end+n + D.temp <- Dmat[begin:end,] + if(sum(abs(diag(as.matrix(D.temp)))) > 0) + stop("Diagonal not 0: matrix #",k," is not a distance matrix") + vec1 <- as.vector(as.dist(D.temp)) + vec2 <- as.vector(as.dist(t(D.temp))) + if(sum(abs((vec1-vec2))) > 0) { + if(!silent) cat("Matrix #",k," is asymmetric",'\n') + asy[k] <- TRUE + asymm <- TRUE + } + } + D1 <- as.list(1:nmat) + if(asymm) { + if(make.sym) { + if(!silent) cat("\nAsymmetric matrices were transformed to be symmetric",'\n') + } else { + nd <- nd*2 + if(!silent) cat("\nAnalysis carried out on asymmetric matrices",'\n') + D2 <- as.list(1:nmat) + } + } else { + if(!silent) cat("Analysis of symmetric matrices",'\n') + } + Y <- rep(NA,nd) + + ## String out the distance matrices (vec) and assemble them as columns into matrix 'Y' + ## Construct also matrices of ranked distances D1[[k]] and D2[[k]] for permutation test + end <- 0 + for(k in 1:nmat) { + begin <- end+1 + end <- end+n + D.temp <- as.matrix(Dmat[begin:end,]) + vec <- as.vector(as.dist(D.temp)) + if(asymm) { + if(!make.sym) { + ## Analysis carried out on asymmetric matrices: + ## The ranks are computed on the whole matrix except the diagonal values. + ## The two halves are stored as symmetric matrices in D1[[k]] and D2[[k]] + vec <- c(vec, as.vector(as.dist(t(D.temp)))) + diag(D.temp) <- NA + D.temp2 <- rank(D.temp) + diag(D.temp2) <- 0 + # cat("nrow =",nrow(D.temp2)," ncol =",ncol(D.temp2),'\n') + # cat("Matrix ",k," min =",min(D.temp2)," max =",max(D.temp2),'\n') + # cat("Matrix ",k," max values #",which(D.temp2 == max(D.temp2)),'\n') + D1[[k]] <- as.matrix(as.dist(D.temp2)) + D2[[k]] <- as.matrix(as.dist(t(D.temp2))) + } else { + ## Asymmetric matrices transformed to be symmetric, stored in D1[[k]] + vec <- (vec + as.vector(as.dist(t(D.temp)))) / 2 + D.temp2 <- (D.temp + t(D.temp)) / 2 + D.temp2 <- as.dist(D.temp2) + D.temp2[] <- rank(D.temp2) + D.temp2 <- as.matrix(D.temp2) + D1[[k]] <- D.temp2 + } + } else { + ## Symmetric matrices are stored in D1[[k]] + D.temp2 <- as.dist(D.temp) + D.temp2[] <- rank(D.temp2) + D1[[k]] <- as.matrix(D.temp2) + } + Y <- cbind(Y, vec) + } + Y <- as.matrix(Y[,-1]) + colnames(Y) <- colnames(Y,do.NULL = FALSE, prefix = "Dmat.") + + ## Begin calculations for global test + + ## Compute the reference values of the statistics: W and Chi2 + ## Transform the distances to ranks, by column + Rmat <- apply(Y,2,rank) + + ## Correction factors for tied ranks (eq. 3.3) + t.ranks <- apply(Rmat, 2, function(x) summary(as.factor(x))) + TT <- sum(unlist(lapply(t.ranks, function(x) sum((x^3)-x)))) + # if(!silent) cat("TT = ",TT,'\n') + + ## Compute the S = Sum-of-Squares of the row-marginal sums of ranks (eq. 1a) + ## The ranks are weighted during the sum by the vector of matrix weights 'w' + ## Eq. 1b cannot be used with weights; see formula for W below + sumRanks <- as.vector(Rmat%*%w) + S <- (nd-1)*var(sumRanks) + + ## Compute Kendall's W (eq. 2a) + ## Eq. 2b cannot be used with weights + ## because the sum of all ranks is not equal to m*n*(n+1)/2 in that case + W <- (12*S)/(((nmat^2)*((nd^3)-nd))-(nmat*TT)) + + ## Calculate Friedman's Chi-square (Kendall W paper, 2005, eq. 3.4) + Chi2 <- nmat*(nd-1)*W + + ## Test the Chi2 statistic by permutation + counter <- 1 + for(j in 1:nperm) { # Each matrix is permuted independently + # There is no need to permute the last matrix + Rmat.perm <- rep(NA,nd) + ## + if(asymm & !make.sym) { + ## For asymmetric matrices: permute the values within each triangular + ## portion, stored as square matrices in D1[[]] and D2[[]] + for(k in 1:(nmat-1)) { + order <- sample(n) + vec <- as.vector(as.dist(D1[[k]][order,order])) + vec <- c(vec, as.vector(as.dist(D2[[k]][order,order]))) + Rmat.perm <- cbind(Rmat.perm, vec) + } + vec <- as.vector(as.dist(D1[[nmat]])) + vec <- c(vec, as.vector(as.dist(D2[[nmat]]))) + Rmat.perm <- cbind(Rmat.perm, vec) + } else { + for(k in 1:(nmat-1)) { + order <- sample(n) + vec <- as.vector(as.dist(D1[[k]][order,order])) + Rmat.perm <- cbind(Rmat.perm, vec) + } + vec <- as.vector(as.dist(D1[[nmat]])) + Rmat.perm <- cbind(Rmat.perm, vec) + } + # Remove the first column of Rmat.perm containing NA + # The test is based on the comparison of S and S.perm instead of the comparison of + # Chi2 and Chi2.perm: it is faster that way. + # S, W, and Chi2 are equivalent statistics for permutation tests. + Rmat.perm <- as.matrix(Rmat.perm[,-1]) + S.perm <- (nd-1)*var(as.vector(Rmat.perm%*%w)) + if(S.perm >= S) counter <- counter+1 + } + prob.perm.gr <- counter/(nperm+1) + + table <- rbind(W, Chi2, prob.perm.gr) + colnames(table) <- "Statistics" + rownames(table) <- c("W", "Chi2", "Prob.perm") + }) + a[3] <- sprintf("%2f",a[3]) + if(!silent) cat("\nTime to compute global test =",a[3]," sec",'\n') +# + # if(asymm & !make.sym) { out <- list(congruence_analysis=table, D1=D1, D2=D2) + # } else { + out <- list(congruence_analysis=table) + # } +# + out$nperm <- nperm + class(out) <- "CADM.global" + out +} diff --git a/R/CDAM.post.R b/R/CDAM.post.R new file mode 100644 index 0000000..00b3d76 --- /dev/null +++ b/R/CDAM.post.R @@ -0,0 +1,276 @@ +`CADM.post` <- + function(Dmat, nmat, n, nperm=99, make.sym=TRUE, weights=NULL, mult="holm", mantel=FALSE, silent=FALSE) +{ +### Function to carry out a posteriori tests of the contribution of individual +### matrices to the congruence of a group of distance matrices. +### +### copyleft - Pierre Legendre, December 2008 +### +### Reference - +### Legendre, P. and F.-J. Lapointe. 2004. Assessing congruence among distance +### matrices: single malt Scotch whiskies revisited. Australian and New Zealand +### Journal of Statistics 46: 615-629. +### +### Parameters of the function -- +### +### Dmat = A text file listing the distance matrices one after the other, with +### or without blank lines. +### Each matrix is in the form of a square distance matrix with 0's +### on the diagonal. +### +### nmat = number of distance matrices in file Dmat. +### +### n = number of objects in each distance matrix. All matrices have same n. +### +### nperm = number of permutations for the tests. +### +### make.sym = TRUE: turn asymmetric matrices into symmetric matrices by +### averaging the two triangular portions. +### = FALSE: analyse asymmetric matrices as they are. +### +### weights = a vector of positive weights for the distance matrices. +### Example: weights = c(1,2,3) +### = NULL (default): all matrices have same weight in calculation of W. +### +### mult = method for correcting P-values due to multiple testing. The methods +### are "holm" (default), "sidak", and "bonferroni". The Bonferroni +### correction is overly conservative; it is not recommended. It is +### included to allow comparisons with the other methods. +### +### mantel = TRUE: Mantel statistics are computed from ranked distances, +### as well as permutational P-values. +### = FALSE (default): Mantel statistics and tests are not computed. +### +### silent = TRUE: informative messages will not be printed, except stopping +### messages. Option useful for simulation work. +### = FALSE: informative messages will be printed. +### +################################################################################ + + mult <- match.arg(mult, c("sidak", "holm", "bonferroni")) + if(nmat < 2) + stop("Analysis requested for a single D matrix: CADM is useless") + + a <- system.time({ + + ## Check the input file + if(ncol(Dmat) != n) + stop("Error in the value of 'n' or in the D matrices themselves") + nmat2 <- nrow(Dmat)/n + if(nmat2 < nmat) # OK if 'nmat' < number of matrices in the input file + stop("Number of input D matrices = ",nmat2,"; this value is < nmat") + + nd <- n*(n-1)/2 + if(is.null(weights)) { + w <- rep(1,nmat) + } else { + if(length(weights) != nmat) + stop("Incorrect number of values in vector 'weights'") + if(length(which(weights < 0)) > 0) + stop("Negative weights are not permitted") + w <- weights*nmat/sum(weights) + if(!silent) cat("Normalized weights =",w,'\n') + } + + ## Are asymmetric D matrices present? + asy <- rep(FALSE, nmat) + asymm <- FALSE + end <- 0 + for(k in 1:nmat) { + begin <- end+1 + end <- end+n + D.temp <- Dmat[begin:end,] + if(sum(abs(diag(as.matrix(D.temp)))) > 0) + stop("Diagonal not 0: matrix #",k," is not a distance matrix") + vec1 <- as.vector(as.dist(D.temp)) + vec2 <- as.vector(as.dist(t(D.temp))) + if(sum(abs((vec1-vec2))) > 0) { + if(!silent) cat("Matrix #",k," is asymmetric",'\n') + asy[k] <- TRUE + asymm <- TRUE + } + } + D1 <- as.list(1:nmat) + if(asymm) { + if(make.sym) { + if(!silent) cat("\nAsymmetric matrices were transformed to be symmetric",'\n') + } else { + nd <- nd*2 + if(!silent) cat("\nAnalysis carried out on asymmetric matrices",'\n') + D2 <- as.list(1:nmat) + } + } else { + if(!silent) cat("Analysis of symmetric matrices",'\n') + } + Y <- rep(NA,nd) + + ## String out the distance matrices (vec) and assemble them as columns into matrix 'Y' + ## Construct also matrices of ranked distances D1[[k]] and D2[[k]] for permutation test + end <- 0 + for(k in 1:nmat) { + begin <- end+1 + end <- end+n + D.temp <- as.matrix(Dmat[begin:end,]) + vec <- as.vector(as.dist(D.temp)) + if(asymm) { + if(!make.sym) { + ## Analysis carried out on asymmetric matrices: + ## The ranks are computed on the whole matrix except the diagonal values. + ## The two halves are stored as symmetric matrices in D1[[k]] and D2[[k]] + vec <- c(vec, as.vector(as.dist(t(D.temp)))) + diag(D.temp) <- NA + D.temp2 <- rank(D.temp) + diag(D.temp2) <- 0 + # cat("nrow =",nrow(D.temp2)," ncol =",ncol(D.temp2),'\n') + # cat("Matrix ",k," min =",min(D.temp2)," max =",max(D.temp2),'\n') + # cat("Matrix ",k," max values #",which(D.temp2 == max(D.temp2)),'\n') + D1[[k]] <- as.matrix(as.dist(D.temp2)) + D2[[k]] <- as.matrix(as.dist(t(D.temp2))) + } else { + ## Asymmetric matrices transformed to be symmetric, stored in D1[[k]] + vec <- (vec + as.vector(as.dist(t(D.temp)))) / 2 + D.temp2 <- (D.temp + t(D.temp)) / 2 + D.temp2 <- as.dist(D.temp2) + D.temp2[] <- rank(D.temp2) + D.temp2 <- as.matrix(D.temp2) + D1[[k]] <- D.temp2 + } + } else { + ## Symmetric matrices are stored in D1[[k]] + D.temp2 <- as.dist(D.temp) + D.temp2[] <- rank(D.temp2) + D1[[k]] <- as.matrix(D.temp2) + } + Y <- cbind(Y, vec) + } + Y <- as.matrix(Y[,-1]) + colnames(Y) <- colnames(Y,do.NULL = FALSE, prefix = "Dmat.") + + ## Begin calculations: compute reference value of S + + ## Transform the distances to ranks, by column + Rmat <- apply(Y,2,rank) + + ## Compute the S = Sum-of-Squares of the row-marginal sums of ranks (eq. 1a) + ## The ranks are weighted during the sum by the vector of matrix weights 'w' + sumRanks <- as.vector(Rmat%*%w) + S <- (nd-1)*var(sumRanks) + + ## Begin a posteriori tests of individual matrices + + ## Statistics displayed for each matrix: "Mantel.mean" and "W.per.matrix" + ## Calculate the mean of the Mantel correlations on ranks for each matrix + Mantel.cor <- cor(Rmat) + diag(Mantel.cor) <- 0 + spear.mean <- as.vector(Mantel.cor%*%w)/(nmat-1) + ## Calculate Kendall's W for each variable + ## W.var <- ((nmat-1)*spear.mean+1)/nmat + + ## P-value for each matrix: test of S, permuting values in matrix[[k]] only + ## as in program CADM.f (2004) + ## Initialize the counters + counter <- rep(1,nmat) + + ## Test each matrix 'k' in turn + for(k in 1:nmat) { + ## Create a new Rmat table where the permuted column has been removed + Rmat.mod <- Rmat[,-k] + + ## Permutation loop: string out permuted matrix 'k' only + for(j in 1:nperm) { + order <- sample(n) + if(asymm & !make.sym) { + ## For asymmetric matrices: permute the values within each triangular + ## portion, stored as square matrices in D1[[]] and D2[[]] + vec <- as.vector(as.dist(D1[[k]][order,order])) + vec <- c(vec, as.vector(as.dist(D2[[k]][order,order]))) + } else { + vec <- as.vector(as.dist(D1[[k]][order,order])) + } + Rmat.perm <- cbind(Rmat.mod, vec) + S.perm <- (nd-1)*var(as.vector(Rmat.perm%*%w)) + if(S.perm >= S) counter[k] <- counter[k]+1 + } + } + + ## Calculate P-values + counter <- counter/(nperm+1) + + ## Correction to P-values for multiple testing + if(mult == "sidak") { + vec.corr = NA + for(i in 1:p) vec.corr = c(vec.corr, (1-(1-counter[i])^p)) + vec.corr <- vec.corr[-1] + } + if(mult == "holm") vec.corr <- p.adjust(counter, method="holm") + if(mult == "bonferroni") vec.corr <- p.adjust(counter, method="bonferroni") + + ## Create a data frame containing the results + # table <- rbind(spear.mean, W.var, counter, vec.corr) + # rownames(table) <- c("Mantel.mean", "W.per.matrix", "Prob", "Corrected prob") + table <- rbind(spear.mean, counter, vec.corr) + rownames(table) <- c("Mantel.mean", "Prob", "Corrected.prob") + colnames(table) <- colnames(table,do.NULL = FALSE, prefix = "Dmat.") + + ## Mantel tests + if(mantel) { + diag(Mantel.cor) <- 1 + rownames(Mantel.cor) <- colnames(table) + colnames(Mantel.cor) <- colnames(table) + Mantel.prob <- matrix(1,nmat,nmat) + rownames(Mantel.prob) <- colnames(table) + colnames(Mantel.prob) <- colnames(table) + + for(j in 1:nperm) { # Each matrix is permuted independently + # There is no need to permute the last matrix + Rmat.perm <- rep(NA,nd) + ## + if(asymm & !make.sym) { + ## For asymmetric matrices: permute the values within each triangular + ## portion, stored as square matrices in D1[[]] and D2[[]] + for(k in 1:(nmat-1)) { + order <- sample(n) + vec <- as.vector(as.dist(D1[[k]][order,order])) + vec <- c(vec, as.vector(as.dist(D2[[k]][order,order]))) + Rmat.perm <- cbind(Rmat.perm, vec) + } + vec <- as.vector(as.dist(D1[[nmat]])) + vec <- c(vec, as.vector(as.dist(D2[[nmat]]))) + Rmat.perm <- cbind(Rmat.perm, vec) + } else { + for(k in 1:(nmat-1)) { + order <- sample(n) + vec <- as.vector(as.dist(D1[[k]][order,order])) + Rmat.perm <- cbind(Rmat.perm, vec) + } + vec <- as.vector(as.dist(D1[[nmat]])) + Rmat.perm <- cbind(Rmat.perm, vec) + } + # Remove the first column of Rmat.perm containing NA + Rmat.perm <- as.matrix(Rmat.perm[,-1]) + # Compute Mantel correlations on ranks under permutation + Mantel.cor.perm <- cor(Rmat.perm) + for(j2 in 1:(nmat-1)) { # Compute prob in the upper tail + for(j1 in (j2+1):nmat) { + if(Mantel.cor.perm[j1,j2] >= Mantel.cor[j1,j2]) Mantel.prob[j1,j2] <- Mantel.prob[j1,j2]+1 + } + } + } + Mantel.prob <- as.matrix(as.dist(Mantel.prob/(nperm+1))) + diag(Mantel.prob) <- 1 + } + + }) + a[3] <- sprintf("%2f",a[3]) + if(!silent) cat("Time to compute a posteriori tests (per matrix) =",a[3]," sec",'\n') + + out <- list(A_posteriori_tests=table, Correction.type=mult) + + if(mantel) { + out$Mantel.cor <- Mantel.cor + out$Mantel.prob <- Mantel.prob + } + out$nperm <- nperm + class(out) <- "CADM.post" + out +} diff --git a/data/mat3.RData b/data/mat3.RData new file mode 100644 index 0000000000000000000000000000000000000000..e41691b6ee7b73c1554c7a2a388ffc820522556a GIT binary patch literal 714 zcmV;*0yX^~iwFP!0000017%e^Y!g8gTpSR}NuWr$LkewZA`$Z~tZgENHYrdFHzyz! zfsjN(f`%q_YG|QOof^6bDue=}fJ3(NH$E4k#N4iD#`v+4y>EBl&c1oSTU%aVO4bwS zT*;Nr7r&W8JX+w|eD6aTAAJY7CjoB$Q2TtxtS9#D*TM^a zkW|Bo9|V+@1K*BtcYO!vw7VV9S9?4sKmQ|`x$s-KzkpMxeZc91Z!4Iw^;R?W!Am$f z=0Ut(o2+Rs=6-no^u6o{FX8Z=PE@b@2K4LjFYNaj{GN?@iXZRS1A6&|aKG(ELb9Vb zKKD6!VW06~JYlDBy2PO$;#5{V$&YKk2fKvx9e!fm8OJ8?;T-tlN57E&m#DrbT)x*m zj)LOAJY>F#2i|GRkHDFZvv`sp?WP{>0x#hVk%!Fd7UIWy`Pk3m$GEh{yrlPEJ>Wgm zo9@~A0=}Im`A`1vKlu*Ke#7t{8h?F-Uq7Kg(5|M5AMGR#>x}!TU*WPY6%Y0e<|pE< z_yDhCaiGt0>7m|vPQHv6cnRkS{$;(OFNz=YihXj3cXIG+!oQjN66zj#!M>&ZB0umZ zPwLlAJXMdF*$>$_SYN!)cpVvkvEOEnjI7>QK1quZ%zMvu_yti96{7 z$alntcCa5XZ<#O5L&nSY+s`I`j1T>zehfd-e%nuMzR`Z#q5covyl?oCmvESm==0KJ zJ)^$#eMY?g;e|2v?LYT8-F&!H2y-re{NrZn-Ze=}k}8s}OS&QHrlebvZcDmjpS}Mm w-Qly`Odh1W>EgzAVUbav-G1_Hk(OQvh%bx3(P-2tra$5L7mP-MnC1uo0PEd%FaQ7m literal 0 HcmV?d00001 diff --git a/data/mat5M3ID.RData b/data/mat5M3ID.RData new file mode 100644 index 0000000000000000000000000000000000000000..62b55eef0720540b2d8df9ebaa332cb901909efb GIT binary patch literal 49717 zcmaI7XF!u-)-6gEkls6pC@3AJR{^C8s7UW1(mT=v(nU(7_a;q{DoBR_p-2n886bof zA=FRX}03h8@qmN;Y7X`S})1cd12F^ppoBi$ucI2vi z&#sBM;qY5Bx(Ax+_g?#4INDu=r#-O4rHQFTQaoO^HlWy*?a)rp*6q>ya?kty#Upm*tRreFNsd&kf(v>x?q4Xs9IMTg^pCZh7nToR9X`X5i$9sS&Xlz*0B zTxbDcy;yt^3m9FZgkXsqq4pQO*N&C#@K>x$uRFtZe)!<+dy?yEOGt~V=H+e!3_ygc z=D|G)2RE$VrH4f_>577dA``E=U2(=D{dTK5u!=V66~wI|apx`2{EI zn{T}CV)tT43*sbq*KpO%7~1+B{;R`@sD3Yj_c)i+XaTR;f}nQJX|Ek)rAz2q-F`j0 z)Z4>ALcO7I50IWWEu@*NoLRpcFJx1iJN11P@eRy6eB4v$W9MSvw$=A2uM0~5mLF32 ztPVR_Zc}uSje((s^bi|S7|#7StMEFb$M5e`NK-HME|#|XwHHgBq6|VQN7RAStysjn zU{Zwrtg0k-#>Ty;&0`qaa$LP5H-))0IG%y!qH1O|uNHr5^(x7&?B>MQnN8ijm_~K> zRJXAD4^D8;i4v=?Pe*i2J}_F`gO8 zZF{?H7le{kgijQ8V-V)}Ccy{R3zOD&O1<{HEGu8u@9DerX`jKerM1F7N(#D; zUW6+~TVDCh_m~#l_j~HGR_)EXo>A1)Zj#p$hyxu`T47GufH1$?7W7n!SSNL7+GM<4 zQIp}?{imu871jz3-siqfgJ19Zu{7W_g$J{$iZMwFSho&YbzRGk%-NFN=@*!H+k(l4 zMJgWKZvW5+_UE>Dj2fR-^d0IPsf|$7-+ll1PRMc5X}E|L%fjcNSw7EYf>ZBRZ^5T9 zhe^lbMe@7}b*Iqx)|p03H3sFG%60Nw3+1q;+p`YwnxY}hE3an)OIbdWxvw7)?jN#h zK_X38-j7*_}wC{BN!r@hZVrZu>SX;wz`fJXUbdU#gU4LCb zlWp3d+WNqUN8V1KCkhc;rLOPYA_{AUFagktCQK?%`spZsw%{m(3mU=HwF9kHya51b zLQG`(hG7+yvA$6tseRviMrsO3dif&Qu^POKG&d_#<&%MBSQmzvNiEqoKhAO~RR1=d zeH>2QbMLHYqF}V|rx%q*Qk5w}R3=>L8!KkaK;|*i#Q5?i*NRF&A*b6Cr(Q{1l?yeD z>Slhus3i=9S2853{iA@OwaQWPddJ!%toE!^$#vb|0`MywBeTLMza(u+j{8!_eW7&G zXYaWi^@^|s#Dtyh93fg7tY3X^PF*5MukN@UmQ}l1X_VAtmU8ZuJRT0V*GWhwS!%KBVRVQWvXR{F8}r6e=_dt1A8?X(-t zCCc+hM(kslXg0rk2HC@IN?x7mN!}euWMk8GY1wO$<_I-;55Yw|?DRvaacnTVU6}cN zC-hIM*xtg@rV%&3AoQHgnyW0Xr(wBfwv`UdwQ%5*`#Qwd&!j_aB9?NBDWFZU?&XK2 z%e%Mdx+j@pqJvn5y0Nv(jq}QJkDpv-({2d8qhCZfmFt5HKtG}(j>-InNs2bDyC-Sn z@4wB$!})(;c&W098|Wl0C_;>SjFcBu`<{GoN1!by!^fVwCgcbdJ>w3wM)d=eV8XSe>}Qv( zi!}Mh{+ORyxF~~n^72}vjh6=|y9?i2`kCt0Y}*vEfdz;;5tDhyj)Oe$0<~2Sfx}S0 z_R4k`Us6GUTkEaYPa(J8lMC^0-S7DC;m>NftY5|JG^qbLFn1Mc_KQ+l9bctA>@pTT z9Pb%{jCDQ@^9zglX#+(kHib4kseBI-BT-R2Mcq}ljGMQ?7QE$NLX4z7-mQv;u5WE| zyGhpgb$(5&GA@aO(3P3@3S!^yl~A@10!+*-FR+!-wZ= zoo2T#&*>TjGAe~@=*E_qd&m#;S`k`0ZzF!*?hGolw)X#GS}7`d#m(YAp#D+T^XQXA zoKgSH@;lKLC;!6cqhs%Nm*_Z!cIUGCB*gyP1I12mKkpjEdqiQVXyS$J6Dh3c)6nkI z3EiAO#5D}SW=2P0A_EIAYeSs`*Gc0T9ZFPR=;guA!ue!>uEB916l7*f~5d z<0$CZyFW(E<1=xrVfjI}yKJ7?X3>))sciDke{e0PcRC&OQo+ZZT|Ql*{Lw)!=wl@_ zyq%v%X5~Tv^6MNI(M_R}3nq$79v;wp~5#jNMq9A1|PJd?iwRS0Wm#CCqQI(%>*76G^%IxW${ss=*l z_bYE0!A&`{uIHM~WPOmEVSrR8Sliz%AVmX6GoHySb+{*SML%|3*UIIyj&8=S!@g99 z*ZYN8Sndd|ooeV1wI=7A*3DY5R5CjPcN-}BM(THR<1U_YU+LoZg2G~l^pVrnDo3Jh zPl>>$8b)qPoDqzdq1^QO@6XK(vE*AANH>F31;Fd7bnGTUnFJdFjdBky{^ za=JB5*^y^FaGGtWFLrfFFv2EPQPCtOB1l6bRm^-eY)9A{qRlk^1DB5iTuO%2sb8DL zmC~$tK9EQ9`g-PE7B9*;@fVio`+O^`Mx>m7dau6?k9{i^^0UqU=sLPMkn>4z&aW{& zpKL60_|W0zP9JB2I>XW|g^`(m?z^@-y0-_9SYEtn3EBwu26; zTxq<#OU3TU5^)!*U!+MaI5LXW*l!X;SILO+*Q6JrKZCFN1aw=$rZy`#lZwAT9&B1^ zgcr>fp3{;HP)D+3u3nzT>DmBRchT+H84WHXtC?q=U&Z=+=xQXu*wf!1ha8jp-{~HH z+b^;SM5?J>Lf#>~$Be>BOaZz!St1v%l7Cj;w2oh$vF-D?hk2aNFKL1caLTN1%gOof|tVBR6sO}jtWlDxs6 z*Aq(!UC#YC6)!AhMsyx(&u$UrCwEQkQId3VB&ycjICvJ)O_~(FKJDB*O6I+I^CMGw zF;o2>y!BL0q~;E?v0kqmawq?(^ZCZ9{gUreIOZHSYZC+g;7)JA#B*}R54KuT(zyeA#M@1Y5P%!EUr+y!(g%u#tW>Uc*M1PfRu1UUstE7Y`Bu;!;`Q6kLyYo6-#&CF zcKrqN30U~)2WuM$@VGt|6JaPCw1?(a=9vrM9)JZ%y${rKGl|BAy#l*CZXyL*C= zyWbVnoZBx_sedYTb%LbajueFxUOsT;_pE*X zZFj6KlK+DYP|mXFjX0;pZ)P4?4UDVV=EFfa`&g54!hBJTaYv{Y!Q^cb3tO|zb;>wKHUL3qpn0;gJ`NHyeE!yKn}PtzO{DM&F=*{=holNE)<*4 zM1DQworZm5rNOwy5ouM#@cvT5u`x{yxN{i*mJ6+fcYRiq`{9xBohgIp(jJ8-GE*0 zhUpvwC_eS)8`xt#-!&RK8VWZ#XB#4lAM?ZJQrr;T{M;u`98dd>v&4}QiFW50U9up# z%||fwZAM?ALl%!u-o1_c1NVe9h8=NWF#&iI)th~FIv%aJ*LOI)U!F%Qsa=fREi(Aa zA{y(*aXdTa2gi*9y%) zcv)HaV<*-k@()JZ=IPsUDGJrwbR-RB(FSvB(v6^V!4om6#5LKCQPL~Z3``jEkwQ4A z=Q^T7gVrW)a=oXMHtphdd)z9DSD+69x|FhmUGD#)HEiXNZn^Ir(<)zdzt?|kS_5nX znuT||o7p)LZr#)}D$2VS8{NU;dDxF_CYl`gFzfL!#Ho!QGj>iRn_kM>8{0Mfe8=t9>;{v)Hgs=&nw_{Ccwzb-{Hp z%NpP9(G#xEEe9kl$}kkSd>*xme;aV$j0Af)(m%$Y96Q)~QnF1m-Y>ngOsZ5F%mq?D zvkv)Td>3EuwAlu+y8d%HR-t|HIzla9GZIvU_j1bQr+&-2K9TyF$%)!;+bQXyU&Hq# zBR6E&2wMqH-V{MY&o}eGlhTGW&}_GJ-MVGf%l9460uAlN5sVYA5kf5z692#{h%d7% z6wcI!ptD6AVwG6rLqjD9x-4%L$nhHs$a|%rQu1vezDSCF{>~oZ$jPcgjRmkw>;7^5 zsgEj>2Tkz3!xY`e)KdSZ;9Y@EfYZj$TnYf{XSt+~MWlH)z0PEDy=NaSZCA_Tl8C`F zV$}Ry?4>>h0fAIy6y({|04l)N;&+Q&_#p`?&0#A&NDvj`_hO~KD=R86f`RdtfsZ^Q0y7=Xd zw}P-n&4z<;ekDCz3!BD*SbW@FhHuhBd^esATw0;k?v+Omoxc5U2ssM% z`5z)upQ|5%j4u}~&SY)?ME~f-`XhVNqoaZxzh`UgVx95oL?sTL+L@llDe&gIFEE>j zU@NgiQ87E61WLlw(CNqQxy=#GiX|Z;O^^G-8I>$TaH@e{6OM3$_GJLioqEpzVVBsh}nZQc6J%CUj>eB;AUj zbnU3sb#9VMI%|KEBiZb(aJ0OQbIM&-_h=?o9{16QGGF&IKR&HP)H}1E#hRycb34HO zY#VH^h1({cdfmZ?i288L`<7O>jG8mlZ`A2oy2I2yU03(E1#c@4mPhG!=~!S~hz}Qo z@ii8fH7$)pJO73D_MhFY@b!%F2TEY+p(RC%861sAwq8!v@~bTVEk3n zo395E0X9A*NbT=Sazd%meeQm$fCkII}Mtb zRuF$oY(|Nv-i}{uuc?^_?61Up=9=<_mt_TU);My3oWG$L8PxlDsWHrszVuZ4a?!Y& zQ6Lb*a!BK@#Y9BnzX#DKM8fnNM)L~JDcRG?!!He@J%Q`Krjwhuu(FCmpwr_3PiPi~ zN{eh^#Nxo8pc}_sHxs{sMLA^<-~Z+7I6M&fG>?vG)VtKmnn{ zx?RwoeN;sU)Mhdz7>HFQ@!3}>Q4;!vJ4qR9Si)I#h%eBcwS4L&+#KN{)~6|5>A4xZCnsraiFN>VrG7S8?WVUuo4lj z)8}Ml<3Yop+ zA;7``0b61dsLL(moN})MANp7Cl{K(T&pN-hX-n}#PeH8G#{w&fU{aqsi*vr3daDcf z%K%f8{aQP7+J)Xlk{vgZ*!8c3RrN0r5j-u%{9WealBRIP_Bz8KF&j)KT5LD;N!F*B zC>4cP-L?fk*$6R`?>jzUKf^Ookz(&LJh(lr6~W%+Xcc8H)JbNH zRXUHq%RN$7LrY9Lo4ldgF4ekkY(_8Tu=YDS^AVlnf3AeT-mR?Y8sq z=Rp$r0+D}WbpdvNZq}M^L>v*6$OTgkGPU01QBn`wC^EC-q1)c#8Il06cl%Gp1!=a1 zl){*N7~cLnHRKUj_+9^SD&Tc5gF_DsxZL>-#yo`6<1;rDe<7KiLS^FPghQOCUjOLt zwnHRs9t#)9Yq0Gi1s*xxb=)`F-nnx?{GtRPN=k4w;4eU#aLsVDX0yOUZP)f;XeWR* zxqsq}QhC{?KI67Qb{QL!|b8u#3#T|~dhZqE!ab`UBzUtq|46Dv6tR>y%Vktj;y`UxLzEXtG}tN_s&}qXSfo4# z1zwQ)NHxv`M{9AP2}l*K)k}hNsDt{B5-uONH0j;Q)Qs-7i^YrWO7eMn;#&V|L-!$Z zEJ2&s>5)y*6}iR6WM1@ovA)gHOV38;ywmo1vb9 zps$NO$$|Qzi?GXb6oY{?&3{<5OiJ{SO zHVlgrwD}Mo_;`Vj&7h2@>$E*>F7M=X?d0CFw_MQ+bF(a(*%0K3xbUw@| z;pvdAnt6z4FU*fkZtyii`FoP-v;4IV@|M=+)?OT_1dyUV8VHC+gw(6PB*O zz6QRYD*kg@3wk{2-};NPzIP3Ng*ueb0!wKpX{RI7igrG-FKpH{X+N|>RR0E9`>t2? zX+I8nzd6&d8YP3K3qYWM7?>oyXhTgOE%BFzsafHw zh%-z;_>W6Br)1^XgV^@KJ#_1bp66%2|5JG@>y_1ZciZp0JAG_P;|YZxZvr%^sHHxnxg6QI##|_v&y3?@1IIIdK1CZup9f!;VCS~7%d%v zMGPBO@{E0T(IPvGAq=9L9vaCflP7u>Qrl)+B zi=x8%%B@g@Or( z0YzgQ2F=?ssRKfO8?49Y0F zskBFk?840SL>S5<8 z6H&-+}1CAu;wNxpV8M>~e6|?*$_n{6w1i^9dk3kb&AC?$L*< zIsG3CI_*!l0m38I53v(fW4XHlhalGuxm|`+V^=?**DzL{xjL@BVYWZ3xKN}LNOW3W_ z!_WaFG*q@nksvCRORh4UE;Ld;yA`e6=jY))$Y-U@-=i2g>F|%Str;f)d2=2_WVvh9 zh5SBoyqKxDLPJn+rJ6Ms2{695^j1Qh^cCP~G8vfYqrC|LbZBu%r;K5f#&{l%kNi>Gm_ zI!d`u-;*kB6YSbH#0}@XT*`mp0_9NBGkC5XF>$~uSX$z3BF@af!+I zKR*oLpE6+)uz7=dd)>bAFLE%Y=B_LUa>RlIv?^e>4ewiLlqqn&hMwc>fiJd#))5lW z_U(pbAD(0J{V)qsdEx}G$|kG5cX9FUs$&eb~zl%=KBWQG4`E4;N21nA*PXO#SlUem z(YJ;+-Wdl7te9+qG5u705v7lWoCh_>ps~93ZHVDmnAjghDj&4e$lE_8Xo929b04H$ukm9(Y|r1w<6R(k&#gvMGAoUG_|fjzi>n7t zr97m9MS7F8E8dYbRQ|RFbVxO#X`*^I{@aQ^=hH;NiUzBLLtmvjxvqA`ZoZs_-g3;k zcX0i-{1W+A5L}?BPZjmzEzm^Or^Il;ZW|5r$)v2IdSjY9d4H{X#h=t}&Xsx@IBoJ3JpF&+{V+0NAc|;&dOcC_ z7mZkmwT4djANLupWs|X?k@bs=qsqryy;c;W6`tJz z2aYCW%iclTo+cNTkWamO_W%StmtEdimJzoIr59o=9fzYqgpvHyu$8@ME@+B{RAGHvrV^i}Z z0K`%|Ut;b)#}{0;M&R(yp2ugAlQ5Z?e*+vgtBD8g*uUT9ubmb~Z$ppUpWkqwH|b(@ z_co9AG1?wyunXX{BYEyUfNJSpGwb5F9LVdnQC}B(x!|B^wMOi*YaRvDLxJU3&4o^j zJG`<)gKw?pWn%RoSldm9c?AU(GDola?YXqPJ09iUA!T0x*q(g^8=~TG;6JJ@t_L2q z8ILSpB-4Aj6)7O@C|?vp9;|p5^i}haz*i74IA$6CA1hti2&(*vRQ?mA&xCg&oF3G* z1bMSF+gZF8MeLC~y|0mPjk~Vg3P8xQWVwMBMgskTqwSQ!-B5lC%Z7v^*N|;ya;|wp z$M@}ezEFoKNNX0@H>%I+piMI;RM_n3U(>Em? zMhu4ERPZbbKcsfNWD99Tj*vIBCAe^a3r-*E@9!&5%Iybuv5~6~b~yRo^zS`JHZ}Qb z6;x5qfR)UhjTX`=aFuDnt*6>7k~WL$)N7Gx7pgxAE?vPcB9{d(I!Z9SuzSEI*~yOj z!#j!jhnYKOiY(1Qg=9MR`i}($*Cnbe$x_+fN9`yf#S7VoLVDDEUHBp7YP7=Gg#Y*p zG#1pF%Jm2Ii$punE>>DL-ppFVN`VIX?Bz2m-!0*jrQpmyePr=j@3R|4Q7;tj*R(KF ztCxLyyX!_I`DAgl69Fo%h)-c}Y69!0*sknlBM$Dx2KsXEx=bTo_(3Z*?EBy!*u0H4 z9R76K*iEn{)bzwbaDWDQ+R};v-CAN*&;BkaXmjL##uE)Gtx%zNe-V5o;=NHT5xK&I zdP3F1k;;9dn1*T6pR#tQ;oX8JeliuX5+l0M4im^d4*nRPq-MQT50cWreBknw`EDJ^ z`;|!Lm}02sCIR<5izo~w3Mxl9R&HE?uRmo1bjs=k!#h#n#~6!~e<>tHR04`5RA449 z&uP zzd%>XS8LM$*!;K-dLVV;VAe)vMkgCivxN&PH*FBm1m%Gp(w!Yy_23d-B3DCbaOW$6 z`cKA9sibg1&k7yD(?IL%Y~hXan!2utLjqjbZd|i~f`}w~UZIV^sNpoawCK79gfWEJ z5`j`bC_cNI66uT2k_eow8m+7c9k8DK*Fmo^DHeO-*F4LM<}1ktXdb^@V8a4wBs0&< z2lre;QUl9IYYs?gg^h$C>V=8L4)O=x9kjSGDr0TaviG=^^nvi}pd+kFEPq+}8{Tkj z3S2AQifv%Z&uLR!pFHIA?K*t*{fNB>ZL`Kh76S*|dzxfFBH@W^T2wsApZw$SE!9nd zF82orhW+0&pwna^XbVlG1CJu!CdnAhWbog?&G4~bGM`z+SWQ}366;Zou!jJaP=;s-^?nW2rNu)13>ZRLNvL$)t7Ba>fipw2vY{FCI2 zm++(fSQjVR*F&a09i5Sz8@}=P_!K#;RJ0{eU{EHy!sP$#BB;psYd4i23P11bxbZVD zL-;gI*bhG5-g-Y|L~@EqIFF4j%a$&0ie%n_7{ubov#H;gfzM051!^liVE2fticcGk znI^&tkX@}45Ddr@2are5R4iG!fl?1`KX8l|@J#{Iw401$;LCgax;HuJ^KTGOSndLI z#};I9*jgh5?bM_WccJ1-ys)bQ@ii_z5f8i$VoZtC?Yfu5lWT_Y)&b9Hi%%n_qxhxw zvHt%#ngFQ>ukL~i*wF-Hp_+1KBKvP)U|Yk(Q<$2G@;DSzw{J0d;@Dv+{&xuXoV6qx zI_ZbfT&RyI_f%Z24ZCk1a6dyFrf!haJm5}Qjprov6(%BU9foXOTqTmG72W*&a+KD~ z^#~TVp7}jocT$3a4Q=i|1Ln{JSt*jVnjDCP+-G(671G5@7Y)te7WrC4|35+l^XB5Qakh<@+=mOh=f2Fdi!W@rvlxKP}KKjg!y0a3WF<>rrsUquaZ0 zmV&0&UHX&PILUuQ$uB6~99wKq#D4mMbYUMfIZB!5uwEfMK<)sU zhyU8g^k~fbBaQUq$VjIMJ*8Nd8P>#isBR#Svc<>Hi!dJ7ER}KM-NoZ@qN9A8?4Gu@ z(o-lc$2~L!xBSbFIoD6cC=j`6B@016#E?MTlZ(Nu;XvUQBCm8ppqr@j(DB@9>BryA zpC4hWdqjP3X%Qg0g)MY0oc*SZTKZm#q2pCx-o>hUwrjb*VDD-wTJV1EY;m}S#Zyu2q+D*=6)DJW8LII8tMCqVJsy@)ev0H)-o{SYe5{HRgGBO{|@`>|S*;fS*>V zQlJkKGgcbrmHV^M-}EI$5Og%|Rz_DrL19iBUQ#4ufAi$z@$ZlSO^$n@(qOJ|tCY3! zodbw>o*9sl)`I;C=CG!<{usS8zF_A?z%;>2bVUA@-CtV#6L>GUJwFeUI7qJ71X?E7 z>76^P!FroW&|EmmQop-vu1EgI@u4Uhg_iDW`pC0CMQ^+MMTye@BG`8uWcN26%dJjDh`^#TAn2b6m0o{7GD>op`T4v5ta+=V=L=9%x4yM`P zrW?K!eNaMZ#qBwf#3@Fqv25W!hNgSJuUqG*%Fo?%u70gM*OmLx^yX{ziaZTgYn#H7BYC#=aDCZlIr?-ze4pWIn<&48za*jf zUC)GeKZ8c%scO1a&g^&5Bq>rH?&$_l%b_=tnC%*9%-C&<<5ZLk<<)YGoqdx&s$=Sb zx7$qUs6@97o0yT|2S~+O&Ozc|K4PT6oN9f3CFpvy&W&%wA!&cMVu1KZf`U+JecYI= zXEECvu=%O1d~A4Umc@zo^j3_H#DUGC%-Fg?A9ynpAV_|Oy^AN=`z zD{?DOOlfQD7n>Y6w@?sIp=X{T;&NAqvo`tI~9QeXl|I+-|;ME>qVRIO*dMP zoX%`KdW>KEVH?j?q1h*udX5y9Js|C@tZn)5b7)XULtbVi@Jyq$LFP{}c~G0cxbrQ( zQ3M1!GG#0x38pP%Rb3JrM%5A}#b?~y{Y@}KQSI{`f( z`5(IYaeXV4`NYdQvpMbHsFG{R;K_5w{)W4XdK_(2&KS%9y&PFg3c;ZWPxCVp?iF34ZVB!-y*uvW`~$w= zV(i>{{pN|aDQ0gnhRcMY=WXO*r-eTqam@Y`x`mU$%YfTucF5C_??jsQb1%%(hT z9CUm*@nwk2zA+=vIw91S=>|mxyo`f;-FN4|9cXeMAU8|$7|${GC#*3HRg?Kt((ZfX zD&9aE6&i2kXi=ldE5hFz;3vOH!Z9Z<&ivh3+7b!0k=tr)dE` ztfMkMJ1;cu8`+QM1x{Z8i6!lA=tS-B z1|`F7GknDi@Pq@;tjsf>_`ah^2>o$QTNMs1^UT@I%D1DrJA~(zr+^r`=vCq>h%Y7vv{6zMueNRk+G;c?eV!G};22!~pKpnG5_7OiV z^jtt+eWK|5zo}Q_%KsmM>E>e8?E}OJY!@TQ_Nom~R>-!48aUFi{dSrKu37c8ece4@ zJsO(3{wzn(?u)WqwiS&dDF;n7t6#3Y7-4?{Wx;W~VbJfKAjF-%B@u)!#YU3kYd)Q4 zpa+R74MEJNiVrO|q;>1`sO*s%n6!mUP&>s&A5$aMrYYvz>haXN%pZsLM#)$ zKYBR8JVcz^O8q$e@reVRYevJ)GRs%AW2UHL1g(uBqt>&-Y#W{w+s?=lXZ;GIiwZP| z3SG+NK@7iC`k8+oV$ucO@5wx8Tro0dT>yCZ_7w*aHYuUCzJ&!n9nsf5jbPfXG-Bg1 z=~EKnA{ENb6VqEgxE-t6_LB3&HFuXmF5>dZr=3McJH{gx-nHdy-DVZ(=e>MMl^1Aa z|25xuvHd_F7^xxGq2-$(pwIUtT<<>sA>;wI#=_~wNRY!}On;?#mub>%#--=Baf0M=5fjT7E)=4#!qP&*LZHmbO+9JH?)lam4Q*>HR_T;{yWxjl z(h3TTPW!YcNM!hW@8i;2KN=q8j?r*+g7kl|QPb%7YL)n)+JiV+_7(90zRlHIq8Q_< zfIlB0z;5S?MXziFjY&U=jRZLRqW3!U8md!ZMLxnDsH#{pSe1f!+;v);XMk@-QupPA zWGux-P~d2s!T(&j7q}8UYWuNE=F$@qY_ea=9T#}1y>5;W=h$8fb9+9=*JuF zL;Zyu?=r-xU-D!b0*X_)wgDlbia&hNDZxn%u z&aZ87v8OBUPbLR;R+sVE3$1s|Sj&(%zlNPpPBs>i@KQO>dz`|Wp@pajBIht`q!7jS zR2A2CYv2kkNkQispLHC>`AdEtZP_XKGHuH;a$s^dR36*S%;%`}L)>DrqyMkv65+2| zScIQpkZyRLAjxBH^wD~gc$qo@A|4gE!m^d$j?H$N4Z!sNQ$mD}a>*7QzE=Ljn5AIjRFhx-(_qYk zpL?EDC-G=r{i9bskK5aQMZ^>E(oa%1hUY{SCntMq=3t!7d1nDl2hFSYr=KrNE{E?~ z(EQ34)!p{(+z2unrT+oSK-zr@j1LvdW!M}Nc9Ix&V%`wr6MTshCE_Q$kLO``@>La4 zm+|h!dMU@w{lv}HjS34yeV<)jauKTEV{`siy45o9M2UP+#eEB(KU@Q>(p zxPDkluhjVYan2UKH7PU*@kz<%=S}DSFaDfjZ@Ke6$)!0_w)BMa&pydQ;+a#VawkHN zCtSuC!Y}vI{CFNEf(5aShegp^vIT;p?KF>k)bH{>vAa5RIC4DsP=K;BRLUPs zdwq)dt4e1G)BjU}160#Hw|=Guy>3izwFRcg0VT(+QrZZR(x@@C{dXemGP#kxaitt- zo5PGApCmt@?I^=`dw*-HN8u5==e)c zvP|F)sFKgM%em>*!X@*ZUo?dASkExvFTtNQPY4k1pFTm%Zfyz%>48ho%)r1ecqe9h zp0aUY{hpRPe#>XcK$QRQSN|Vd6VDcBm*&0ef$yC2}2;^Q9&DU5`CeE@*{-JGI0XHDqb1cNAd)`hiqUU8Gl$x^kda zlRaamU7m%vw&@@HDt{uwW7RMp4fQWzMs{3jS(F|IvZ8LMevu0W#kfa^)wzz2SqDg2 zQ3Pe|v2A5a5O`?yojEm?CvnumG_C)k0tHZ;yJIxO5bgEPkwjx>{?~uGbbm*Z)`>+u zp64HU{cF$op=zx@mGTs$r_EF+>WGKnho}{C`eVH2aGP2>Ja)DTYYoV}9a2w0N0w1a zKf-mMg$YQh)lRoyK60}ppfA~2L&$f6T6mR%+@9&O_%>Gu{kuqPn^h7-(oeqNjVb}9 z`xSYD3`wU?@4|=n<$t{p-XqXP4<~yNd;%9qqyg&k+?IwKBJ6_~5 zM&{Mdffc{w@eq42px2e}L%vCd+Vk6Pc^y)mSDcQu(bbOr@b5+a@#E^P6U*1hVbA`M zp75q$R-@p5hpYkMw|@_f|Kr!BoF6|K$tMpfm|Ip;!20a5nG6s@w~iV#7h84`R5X`v zjD2}&Yu-Omp1WU^s-<*sTz_ANoC~e}5@iZaH?U0s!G?|9Up+Pfyl9a5Ui!7f<|t!7 zgmYtr!d0v__Bc)|YK~JE9~leYsWt_)C_5(LE1CGl zs1Pu1KMxt;UD^t7N=xW99gw1nNNsqY|9<4}D33n)|EY||0>4Pr9J|sRB{h?!jium= z6gh)W$LWjOVUw?9*VY%J`G3z-czs)o-aCiWVzj4-BFKv zH+LKK&MN6&3hR^6MMFd6Z$8t?7yj3Vet?U zCrxU*j(nubapJ)>aUKXLo1EBo35|HLkI+)sE8jYBaS2SXr*+9prN2+=fOwXNxh-4i znc}eZ4$bNdp*@^kfhvF@=BLY}AYfksfh)I|S~NUEC@w?`AoxKlta_ zLS-`eOLr#c|LrvKhRXlb54?#wLs6$obA4^MkUh+)MUMJq{J;W6i0VV@UK4kF*wHXIu5g8)JPuI~5(lzo;M`+3!(E-!jVi04w$FHh>6t5OH#s|-pT%=Zas7{WhPUihrJ!O19F43XTaS11j zb>jO(=|xLA*F^4Aq9EJJ3^1e>)QEWq@Dgfh>QlZuEqy5OAH&D1uUnIpE zL^AJt+Qheb(Cn|y#382?nqOej3=Bw*DPYUJ~Anwtj(JzIZ)Iwqw2<=pj|9$q~0I<_|~Ro%dN!^ z%g;W@x9nG>lRhPHx^1gh2Boaf zXWi}_5vx4tujW0cj5-(^?)=@)1B%wY6pDVYvqD$V?vikAg=FV>q=qNtgPpZj zjqrRkT&i$TsAFa_cFZQ))iIRWiH{eZR6gh>^Rd^F8 zuIXUzcX77&5rhN--!;0|)&C#H&N{9Me*5Fn3IfuS69JKs?iz?ng93_3iKwUuqeEaw zcT2}aBorwHVbnl6hk)c@#ON3>V8F)qovl7DILA|@yEG;N~cM|SSgvURW=5I|2r zOP3K7m&rjla?)zW)qMoO^W_HL*41{sLc*MJG|J`5J3Ez(wKaL?jMPIldc++fPC z$d0IyZ=2=yqd8Wo+EY54(Dc$6Sj42}MtHiZ87*Bwr#t=aVZCoh;_`WrT1KA z5P2hgDfkgkCr2<20#3=j+%`->nWGW0)wn}Yp7K83nTaUC*EkCtS%;Un)DDunw3&3C zQ&6SI9c>t1St*MsKp^Q&o?=kokf98Z&z0?QM?N4%UU!S6wyZae%?)!=GTxWiMJ^9e3 zs#^mmVc&+(>{qyWL^hMo*KA*OIe>1GBD}+D!;=JY>gYS^TfJwK>6NQu0B_70I)|^g z-m`-Q5A?E18R1VF9KJ(gRS#xQ>) z50w#(v$({+{|cwGg`PiggT(!c-d@D(ON%-RtD!rrl&kS!&!k_qzQ>L}yF}_X`zFnY zQ;mT$gW}3!T;}{_REtD6!1jGAHi|t2FrsP-#pwmbf~&GX5AuQ zIV8^n_Bb)XXu7;`%kIv9Rj;SGUfhVz;D0$UJmm;pAg*cX&txC>Qm)0*N# zaoKZi5-YB`z2B^UR6%6df=cB9j*eb!K7ZO(;ZUCh?2nj67Dzsa+H|ge^_y{OG*^FV;u#%992m`SG@QC*_ za60G0OLE@&Y3_iQrBk=rB)%@(bN#Z1)pXj&Ei)5rWij3}<(E$4KOqCVNbjx?XOQVp z>B6B>g|v&(2dSX7+|lUWCLxpYCc*hd&=dP<=$_z4yKCH-dAB&FZLOn#{GLI0eTw|y z#t}jAM0o(BY5dgJnVEHm$J2{p{7k&-WNUB8HdRf-p3T+Vi83*_IquA4FBL`fL-~}W zo*4lC!MLb%NdFg-PnE9Vw#F+*56u?ouQ8C#ICoNODr}VBSfDQ5c6qKY=EVPl}F##14(+$*tPHXgh@iT-nu}+tl zEHRzWy^_4f-%2Kh?&e443aA;9T%-@(CJn|z2UyhJcISro0C76I0<1gNuN*mW&Fkp* zFnm!;gca4F9e8cvU;AOp;k}CQ)STR0Uc^16Ntjgl)O%kU_qFBeG$~N?Td2Q>&Br<$ zgXzw9yHj^(O8$*4|2?Mub*O;^yqBM9!xkeR$KquVidD@x1aNXm%EwVt+4@wYem+jh z@Q@v<14f^K#FHDxoQ}KkN-{Q1>{9UVsAM%cG_=7;*wkM~rS=QSy9b*MWV_7EmsM1tY%Di_aLXjzz&r)bT4^JVeJqMh6i z1_QsZ-Q~}BVJ#xNSs!u6KTcl!XD#%Hr^9{bYvD}PRkgbkP6F?Wom5{a5lfaz>iIGc zFB-&1S8I&WF@(^U=bwpk7V6x#df+n05|kC%Lgf{WIkV9nF*mllr$iZx_gO+FX_yK7+<5HA$@1FF?LXDuqTR=rG0QULtUEQyKanx~ z(SH2Jgs}Lneo1}FT8imJ?BelNNGHF)o***e$nw1PyiUx8dk+g4sI2(KwaVe*T@Ino z>X!BLRhaFa|T<0+{Ws z%GI<(30c_lQloEVU-D#GS}e{o!Z%0WsC?Eq3K7Oy|NnB#!n*R2^SkHPvRCKzq}3N{ z8ms6pXO053-O5Qa$wu@uXpSTB{2D`?vYE<5&t~MKT)D{<1<-ll{VP}(^`5!MmyOn26G zx}n(Uoyo97-*3T*ILQKt;opy||Co^dS9NphEM1&w6HVJUW|BL3KloHv?ONELZ_b+4 zY^cQSw@ZXo$(>Tl{=j0~*of-fca#IoM=oj)_#^d!*!4H{MagOmD4F9-n}^0?#fI2> zhh1Kd_9;iwBt6S9m;L4hVIM8r-3kpk0WDf!F_ShX+D9k(4QWc3Hp+>1hdN7!A86%Ji8=@jLkA)*yNc#Nz>Z1`An*M9hHu^f0k@SEr#G)#5LE+k2p2O89 z9jmtcv_Ux*Yf5yBXCBx@(zZKCG{p1jj>`=3W%kyXVZS-?y8-v`4o5fDBtGkczj0h5 zoy$uG2qcYNZ;1EQe97f$t!r(a54{^)k9bubVo11RG;U}y|DkX5RNltBpY%{N= zROS0C|2~=dRp+AF=6ASzQYvmmve8JsDMDSa@ef`S=avLZUiccJD0HUY=*ajyL-Rn3 z&C5~x8fLa{&0^hY9;BpuYS8y~9jR|T#>=jp5q`OwWB%Sk^&O_;*lPa9x@1wBV2ibg zTSxZLXB(*%f?XP3rm`*mz6{7dL0tCIBNdD!Lfb9cJ=bDc8?7q5-2O{m_Dqt`FqN7s& zll)k~hQEa*HG9z|$(qg#zbHyth7~Mn4SiP?!xGGX zdHiQP+QE0NB~Qgz-tf%DuerNOGccP+{5)Uga+O;YCF!WIWHF^l8?i78ea`-!3;b*CkRFV1y76Vd^C3gP#zvA4!c%?s5^v9)uSkseqi-KY{GW^(j$SDO zb{{+V7$xbguTpdRIVhm?Btvt`#6@{%Dq>WD9s$&gA`>#p=m^Q_otNB?#S&X>y=U%+ zIJuA0=>UTY3fmmP#LghkPkzrGK`FeC7dljRE*NQeH^ld2xVE7EqrX-&)R|e>h_g z&fRiXXlA?H_iiu<<)_IUpCe1pcO~b{v%#9EX7K%z&^wfJKUmte?lV2!dYXXWtlMRq zUM|;odLxluIMbaj`50}6znAXBIpFUfIHuwk|Vpb7vI)-1-nYo_UsHk za~jO|eIe6L-?88^Z*&(@yakL$r0FVH{1@$X@mKAHhONv9YmP&DT8a9{Z$>O(hCZTK z7A0`qkVn+MHhdQ;ZZy-myZC#tp6;ZA&Z_FXUB#C_m@Q3MkZQSu{bEdfayBESk;J;bX4U%;!Q_V@C%u5+FwDnGd( zaZ~-my5M`BXM-ndqwXKZ$j`xqVLGTL(|w-r|Fh>L+&PN78qlJJRib>}Byt$t4*Fzw z=prkqG}kM3o_4T{SeyuEVBWbFdqESMNTCh%)>P!VXMxnBw+yh~?q7Db|eU&fxvl8?g`QMgZMyj8DBPypEHi|_;{-o6;aaEV7s9UD7^ zsy|zn0_~GqgmL2QTDhnAu#l4fpKekCFI(M+z2tuEv6v?J46JYBa~=|^P78~0(;>I3 zKJzH?bj*TOvNt-MilV8?8*Z!ytyohmmPlvPw6If71BxPDvlu+dTucOGT<0HAX5&l_ z+T{QapDL-97PAp^l_M@=Z;hB}$q?+W0LrVt@5jl*4ef6ucMy_i697Zz*G|r_!K904 zCTWNOGY~h(%)=vK;lig{llK=8)wk2tqo{;JXPpA)x0uD-r%Tlnue*qES@VlU=GzKpM`7966)9 z2LlXY9Q&Iitu6rrKFT<^5zLHFfs357PT_q*BY);t6Oq8UVerl3i>;WDH(qFoPiSe< zr}-Ypul#X(*3;STy@e*u7WxEU;w37eq$0x;}Z$}0@m#DLlVl$wBi9WBbV}~ zgoG<5-z0s%wI{vSl6&j$eScla0oTS1giQ&Y?GlU(MoSa~Y@WpsuNY;hT{BTxHJ`5; zx+Kf)Z5}H;^v!bgq-F1BvIvW3k8)RrQ>ffl?T4h8JNe0N>A^=VEC};4*kG}Z&<;PX zQp&D-mR+YISxRPI?!)+LO03=G-ODRA53PkUKhis|gO!)5P_2oAnncBu7b7($^qnV) z%bOeUJ8<7+vx;&cp{gx9Q@oZIS(GI|4j*OHQWJ3HB$qSS25>MESHJdJ|Ftb?09I7Hc^d9 z^jf*+PnP#e?jQ|SxvQs^}lsyDx#08iZT8f(ixB?;~htT>2ZI?b&Bf;bDQp z4M~pgnrU?Cfz=AVv>#*%gH~z{Ky3``EEl@bCu~nEh zRpz)(psxM1FTv<>kg|&}1$0Gw^^*AW>(4j^RVGod1!k)f#+LJzwVOS(E6q0W1Nfli z=E$c6MT~Jqd4~$??o_w003c3<{TRM#mfw`~N?{AG2m&3ul`J=+wQl=o<2WNFA<@l& zaKUr}ytODh)HIqM#KbmP9*K>lStw+HjiT#U;jVq=(tE^qU?0}_a=b*RrL-0@&92ED ze-0X8kp)3)K2&U442i!^bt$*u%C?IC;US=VU9IhK3HUH>0Hb6E-Oo%4^Nt-8OJL;6 zz(-y%l{Eic&-_}fJt|KHAS$#*`q!&QYee~56odAh$02Sr0|c)926<$r4ei7}h9;~& zxt+?ZJrStK(;;Vu{Rz2|FlK6(gDce#(y zDJ^;{QRMd4mfpQ2%G3opN?VLS9(O-=?sUQ~u9EoVEOY4&kfZ zJLW*8*yTe^&8rhx;q7Hxu?+aU38{K#NFR3}gX6M19GDZzzi+z?(?(o+(ynY{DaN)#aJ zKj7Zd{;H$KEnk#MZP?TI)@s=!5B@I=ebz8KWM=RHzW^JxKl5L|^k4GZz!CSK^BX46 z5H2at4vr<%^iicyS)%;QwSl|C$3fG()3!%R{%4O&6^v;1#`b)@zTSQt>t3Oi!)1J* zZRX4OdVP&t54C(AX5+z5se2TVeO34|1$~ai{<$R?1k()2EuHyzgS_GR5!Eo~K5tD= z&ZD|LnQ&Q-vNxq1$v0Nkz*9o+IfA2O?)H|UnsKkGdLMl?x zBUx5kzfhf+`g(X>M$F#Eg(T}>mT%}Nda+Syr7_Av-{$lU)Uo?~TwIKeCErXU-$L9| zR__P~gN$F(B(;!OV9po^_c|QMi`#3wo+5K519xgr}Y*3Hu zQb91WiK*~n^s`O~cCLdfYH)3F3;FT!WQQ|i2^X8hvDup~^Ae5I zN1l=M3qf{<_=37;i9!fXO3RMsVdDmG&uQD3kGRR(#b`GAGMdw$9@*?CJGMO;`>)z2 zLvTC%bJ@Ud!E7v=9zdb~AnpSZ#l2?}-osesm23E*eUq%MCp&{56gIjS{QHS%)*ojB zj|q=XtbzEpb6Zc;++~#m1QquZb$j#TBx$xtX6#TBgKWAX1xA$ZMEJ1k89?OVRokN z(1^c1H)CQ=t9l+cTtRnC;C`NC=NHDhRlt6r;?%I%?v09iyscL^o20hJuJe`;-rTzn zdN444$#ocZeIT<{)$fAakF%JePWd~tH-}k>$8d!PF-K$s^Vzg_TFxP8&vftQpFm}#Q{qK2U_z+$R%llUfwhxGVHG^w< z-8shAkuF}q*!b9oiu>@aU7xS=Y_Zn3xR;u&SPS!kpqBv=Z+pV22d&uD;_Jh_>%TkB z>$o%=XvB0ffk$!o*(uLHxH8L9U18QOfy9C);1hL7{4=t2U!yQI$o2MfF5m-7xg5!} zCIw8-riyOvA90AycvxL;vUCumVAfsMw|XY0B>q1F_n;71^J=C!aN zlGuK5d(s;?Is2|=t^~B&=@F(M29Xv3VR;tTy@J+k=XQny#r>S!70%wIbb&c)dQG1j z4^uXI?wHtAwH$J6dCz>5M=Anp@i}vG#@E@K^7^N7PX8f#>pA|uj4SK+7r0hC8%sSR z7hf;Qr;A+)BUaEtK=1G4SOn@gly0N`9~Z4369M_IE|-B1qSNIMgz+9Pb@3J15bmw2 zn@t4H$b5u={RQ3_rYnhNcQKDF;Kdf+9g$#Ks}p@k?m_!M4|RZFTsSJ>?gQ}kL8n@m zh+VAroIh24moM6mWJ?QO-*_n%0T0-wEOAI)t_T30+kYD%kOix1eML;H;mmro*F5p<(pJG1dCyM{btMQoR>#%NmtnC8m-V9XLiKHJ)EZHRo*tg zSnY&n1T(G5-OEd^s*K;C8b>2xQ7#quwK*FI;t;MjgFFmkKd$HUk$bX2S_84_QFOF6 z?SIQ=+no^IgLhjhkg|#O5k=J`V|CTIe5Cdu!{xX9mG_+y|0>94z-IAPF&>G>MS7K- zuEvreNQ6oXmp_;)JCqqCU-UV-v5hbMDyOYtgVWvNv6C|c&F?L$S{Ueg%%j{yCg6A} zgRM=+1FZ9xAE2Wv7JAfi8m`bqasFbP9ojq>4o3Ol&HSXRXD>q%x6Y@Q$UgJYH?V@d zm(1+#4zGpK6D(*S_N$29Q6?aaDYAzAYGi&Y7lP>Oxz@m+^`wt9Nb8p?rvmV*aB09h zj@r~ALk`i$$X3wY?7C-{NY_{^g4~CNVi#TKd!JBArZwXK*td-fp-OL|od> zaV4c}p3@zqzqPIWDt2PB{*OQy+Me1`z4Dhp$nsHkGbqi)u0_TX<&wB8qe3kG55r7G zFw81%`5)@4K`wn?KW1Z;zjo1c=@W1)e_j6Mu}+JKj-*ZNad6&mOloI^q?= z5tiYW_ThvpMP-1dkt8U$^mBK2XwfX4>nZL>D+cp{`4RdfJ4l}P*M_`zy8JB*&`_K z_r*jywFwf09+7E7hh_va#rxHU>+EM36p%`X*I&54HYPNs7lReKj6O2#wKB{TjB1$@ zoV|)UDc#AEvEF|+t=p}nm!i`Wx4*-5Skp@PH!khID<}v06Xm>p~ZrFR7 zWH&Qv3p=b@Gr&eoGj z>A_DNIEa&h^%>9n@LY{}x4pEVy57!4TCB@oyWSi#n0)T7vfYW3H8+9tjN+fr4ynYX z!0?3T@IexzR~HaaneqCq)hL`-gvAHk=-7ef(~jsF26~`5Wtk>x_1PB zEh_UawV}}X>a%u(=N1aSAwVm-!vUUmJ?qj;$2$c+K45?IV&)5(P6Yv5xWL^3H?c+D zp61w45s`sdR3{&?)B(qHOM(JwCY2vPl1nBf%;vq7%Rt{>rIc+pq|&X9Srm20Hc4JB zD;TM~C0FsS=`NnRm4YSY=kgyPM&kSzX6dyMaR!T1Z(T;Ks73t zyVAKmef~NTHCXc=8fZa%I9gXU*{Dd6JnOXX+l-(dOoYo-bE(FIp-9(l{_yy+hDmRA zwQ=5DeA?qVQ-qh`4$=~ay~8;IC&4T;6KshEi=?;VY2W0{`-Oo`grl6H@RMMzIA7L| z?s^+D?1!&uJ?;pJ`p3h4Yzs6f8p)zZ8z8dP%5ETN*EsPf(g2VD6Mo7fAl7_9kWl=v zT6FknsL_}S{1Y)4|!ZTi>XcDNmQe4Y)(Q+n|{7hI1Dmu_@r?IDcdO9|cEl@chv zz=~5Jy1?c!Jv?9Di6d(a2*FMVCY!cEI8+a{({GGnfhBH2J|umLGrb3oO|GAxaAkV` zVBmnkdV%F>n%^}Ru1I36*j`)shocyrcJ-2p?d8j*gSq-xA1kBvF{f^#?4Kkt@rYjd^0<?YK|fW5{l=}4gr zd{CDbg{Q1<4;>$*-GR$*Br6gb`99B(o!2(t5-v} z`AFAB79#dX-!6mq+&KAX{SF@?ehH`3{Je`f-1D8cvv87HubolDe!b9IDC{~}a=}TG+^7BJ zrvzGp3ThGMmPNconFfSe2YVGX^eOn51Y5ppU*l*7w&i`3sQxz4Tpn2bB;FqG&!frLBak9)`3dC19lG-J0}S08UCcT9$wyRlF;( z*EP*h7=86S8*`pjCPqleg^sn04b4;MfBUJPkFdfMUb&-bqsNR}og*4I1&muH*4{zgV{V#md89d zlfG{5MYb*O)NSu6F%a@73?MWy8FqzE5>hhXTW@TKEk2>tNvIfPn_n|3ZI{6yN4zkG=X5O|E^J z(orgE1O*QwuSj!Xg{S$?6qd8VUNyHt_*W}-aK`w$i>J@oXRPKkZO>0B01y(#qARPE z-b*c=ImQnGJPU}ypgYaeo1ASCHr!T@B zL$u}CRlc}%==3`y9qkNrZJRoN(-WoLb|n8MBMmzx8h^s4`{)JPGg?xp&yV*5JoH|r zR(WvOCp<=R&imk|?wzM5>7J|Us}wifl)Vstq#cK^Sg~KIWgF(iingd!wnN$BNHVkY zJr#DwTdGx5^j^P@Hr;jz1*9whttsy{n2t=cEb_e{F_tx&({oU2X_z2bX@Z3U8x^Mm>MHm~{J%2(5ama|S10K%bst9?_ zmu*Mbe0nx0{}>#qlK1EwH=j22Yd@8AUq0nra8`_>(ZSnAe)rMuM2BC*?j))t5N7Zf z4e@i8z}@hpKh6tquysmQd#R-8RZVFb0pve>yp?R)d4?v!Vg=#_uUWQY6al+K!}u1| zsv5qLZ2X{1bQ@6Y;2*BkNL6ODzL*lS;)Qr$f0A{d1@ta`0rKu4>aa* zu$=xYKL_O+0S0nN{04*$Y|O`(a#cimmTf#@Hr@DA;9|TC2k>M`B4&1=A-GAj6JjP- ztDW8zWglKXs`0e)NAgg-n{>yF3=rwg9H*$?^*6*cd^lE-_Wn=AMkQWo_9NXxSk78C z>ZMK)SJf*sE=*VR*t&YaM{gX^nlD-I&V|6*UQrPC8Xha;I;rBChXBjf#I?k_0zxHw zKO2MdJNzPBDm|iTZH$fk6laOdu-EK59EYlL>dnf0mj^GR@Zsw1~EA88QG?J-8b=608YE$N}n%D1nZRW<@AlY7z)Fg#gZ zuq*CDe3kh>B`QouIpv=^im~`?(k-chlk?c-fky{~_CY?y70v0L(V7|wqwNyH+yLr_ zAipLLJ+fwAg1bwP8RgAc&HwGBIgn;8v3D}i@N+Yl)Z_z_3FFt{hB=NQjcI+&gy|_YZqg#& zjj{=Dced98ItTMRMp~sii^Qag5J!dXY!YR}*PC{)Jh;J#^S*tiI}7%sr!OrRIHJqZ zxWJ@3r^|~eU+Gs`RfT^zAho+8M9rO5+J!an@Jtr7FW2AU-CRTFU#N3GW|fLck_JGu zlGlD!vqP`4OD>XPi{`&`DA}|za#Fe2=y##6mSJHH1B~JJN)sBqX`jB%5+633Yq0KH zzw?%HsWAYw?B`{)Kq6Q-S`LSqZ{m_K19RXdBi=*Yk98I3;>(EEBAjSJ5~6GiSoCJD zZJnWtRhk*Sq8^dSELo$O2qyDC!aebhqu#1@XEvJ8K+J7Feu1~%R3l71t9$2C1 z+QUmKEx2k;7FkJN6M@hD*~q`+Mu}C~+1PCi^kH(8bOs(z4HT2J=UwgYrP>WX+?PG` zi7+$4C3qdUc5vhrj0J6KpR+azA*#Xd3!Z1}6kbWVU-`%*C+_asE6Ej|R};KC39{3` zv#lKwt^Pf$09fIhuDo^FRPA_oR&Q8z$@@OpF^|o%xdO>SxLDMmlgY3WG{_F4=^pjshq z{h(LFjF=>BaQ{;2RJ;GD*pCXRm=yFX=qeq-@{bUiQ_1|>V4@+TCjYnTrD|1TB0cHS z`aVRULsg;$Gtk1fBOG2HV1r6!^9FJsaMERuGX_9zi61>rxRW!8N4M7sbT+wdR!nv~NSAAzkEk6SMZ*8ad;pr3l0oTcGX1Hpxge#6gj`-(&rppLfzV^#W3%%)iNd` z{v}(i_r7O$$GV2en8$E^Dw;F=s#7g%@%l2=0z7Npv_tBF)V7(F9|&=_mqldkM@s^N zg6=Lgz@jW3d$qfTK{uHDaRXZos=gO?r1@{ScRJGk&mEk2pVx}n)wklMp0d^kxec zkY&eI2`b~~;Kx4$=|7I@gCnj@<^43QS`LKXN4sT->XRj)3_g+q!9^JoqB){m=p&Z|w43}Vww7H#^-S#EC z1=~MwB;oG^SPO7@c5%C3kWMA;4YWn;(%2eLy>@C>2{c?qa-)AZfwV#29~eR>K~poY zX@3D|cOijL+6@#Oi~VJ~_T0}3)fn`b5&VYPFHQ&S5~jaK1E5?jYHnL*6rH?{u;fw*J#YB8R%~`sy`fFR zSFBq^RN;>BJsPqz#p9}KBbp*W+rWZBkoQ2#yH7~gpe=v0b@rsEzxzTKw-o|UDs z-0z3aXBZ{EcnDEgxiQVBLD>}V?Pty4-RnR5=E|H0VbMiLrf}m~hF{X+b7*;RMQs8& zCFP}nW2}fx!LMA}N9ljuy@-VHjLT_~ItBrZEmY*Hb?(eW>3d4Zbe>BTY>l+4+i$-# z>>n~Mh}2X-;+jt-gxSnI*h`awMwivNP;1~m*4$I9I+(WZB!l^pZ^YMWlgzp;w9L$d z-PEICMl0V^QEpWG?gt!THJJWi@jBTM$fs0n@Z;IRRU$*pZW{o%>4LLSIJ; zJ!9T`Zz(RdM9v3#zG2;c$yhys7K-e#y_a;rzNFdrt;l2+99Y)M8pub$FXI}I)dpu zxEltX;L69v*ia5)a7x5qX%u9RSd)E3rP) z7G61gh!)T|(aodsMDac{+%n9%NNOdZd@rzx5yWlXhvBDo4K)BU6HAZ6h6MXzsUZs= zUm1Ud$Fik;8X~~2*NBgmtash*YQ6U?ZJl3(?mEZDH7(0aihlf0L}YFi@Xt~kLniJ_ z%}3P5%jDWe9pwcRYwP;AS}6Q%|2)FpYx%1`%P+ThxgWCwCvQE#8*_g+^Spab8Qyw- z@f*FsEir%hjH7LnY%QUs>Iv4GkoG{-g3P7QTgl}UdkxnD_{6&0(dgveGzq%N`;QKd z?6wmrTYS)3O%8GR6lS$tE*~(%!4AV#zDt5Uk{J2kcB;YHikR5TY!MglK5Owj*`d&G z7peVeY}bI_#w7HU@qiQNethG_KhW4;EqmGJu76ne@C;32aGZdv=pmf$;I5-Hn9R{6@Fn(ETrz>|N4mI)M0q4jr&k4k zUD+piW3r=RdLS|J<;#XS{U?IHx?r?q32^J=%=9z^Fa2uU%UYJywvu#Jc(iT!VDPTM zGAC7GsYCP$|EQfeMfZAUULWw++Pu83Gjf=|M3bzv8ian(0%Jm;F<@+7?b`tbFRjStZjqidXTer@6OQu>yk zcFKdD{A2jJCr`)f=p}NmdY2kli37T?qyR=?;62h>&F-M8P9#PegLm{0%ogICQ@ z*}mbv>-O!sE=NpfhIMH}^U@cw>_=JLmlYM9Pp}lN2aWTxPJa3)ZhUE!Dt$Lxw!e&` z?JsnU`oEc6*3#xElLrAWtI7GJNA4(frEMYg1!c|?1%JDb)z&;T-niLDIX{Iyk-r0W zjEXKQKn6Kn(r2`kfWCY6D^|wEp4@hjWGEi@3R-gHkLa;|34`g6R<1mKYLxy*y@%-cH3E4+H!FT-l8u+_L+7tg{t`7J3p=U?p)u|%%Z zv`tq0Z*|;{S#kP6wsGtWvMeX{IcIIRelLl!sh89*47`HP#ByMZg*e!x8V_woysx(Q zxup;6{?Oa-_m7ajfBMQDjssR(-^<{;1tFMFX9rxf>McW{?s%n|ysoI4gG9`Bx^!{J z2EFh@#WJExDJ&RK&HLpnLE>U*={P-%#hv7Uk$UEf5wu#YgsQa{8P&{`lk-atTP*vgemdjN1*JhAwX9f&N z2WlPnXa_N#F^nI>-knL$(3n=%QV20%qE$$qL3H7)- z@wr@bw5EW z`Iya7h zl_92XCC&zQT@W$YSHECaX_l_;?N$%3fcdMdqgKli;ppT?F)o-o!IBD_LaWEVtTvO@ z{%6rTp+4%+a2IG8NPf$_ntXTbn}Vmk;9|y7^iEgHcG?3qW7(X=Xtv7DIhsRF#%)vT zz2^eELT)RiA4@jDDtDh0pZ?v4yS0fVysQFndft=tpJuoJ!Lb~A&8yII@Gz2Mw?PE; zlntA?HA)pTY+?9uopln6l_&5os!&t1)TAHT_V9@YIIeL4=)`s$MBBk~0mZC$_$ru1 zgw*e=DB!1+uLqx`Gf%BN)T#iRUNc$pXjjvav)RQK*SuX+WUvQ6o1z z-BWb2qTVBE?VW5YQ<^-e%}C8#D7ayzH)rI2+>1>+kDZ+-$%3@gPeGGT-UWHNScE@Z zSAL(ZdM5N$L!t1wz}PYQlRFJhFN{Mjv14f=8P;jP7er*9fcvP5}W z_7h|cVb_pC3Z5c8X$pozZ}8lEHJWMDw;L~*`3uOBJ9^Rek9O5lDzpIorJ;`f!cl&$ zT}`3hfNg9aD`klfoV{A@8k>T!8M+kQ^q#;48$Ly3OjX~@fbzqV^bd0_p5ZdBMx%2DmMQfa;zr$?(# zQjksVaOameYXyEP@t*b0nqbopq|WPZ)@*`O?>`?e7FaUj5<$VQXIHQMlk$)KWpvwT z2L0FQ7UM^kJL9e6xR%}$zS=CFt08}Pz@%nMdCY%C-ZQ``k!EG=$0ben$(v}Sq~`Fg zM7ER<{%%)vz8yZ!5-%Vp7BYRkhEWqT+>|fU`?wx^ji2sfsbsu%l#hCt<@tbjiw;%r z)?7yL-g&ik6~B^rM;*pTO##I~BYYjTf6Ua-09MTP8iHMTJC)px^H&6id-6}qB(gZS zzKP!xAH-$uI;`>hJQT$-{57u%BFAn2al9#UewFN%UT~xU^^1LhH86R0k*oYv+70>) zH3U zy&j!)fkprB0vCRa#T`iJ7Pe*18Ln}|e@kTC)Og#8+YcJtRjr>O{_Xz;mHM|G^iv$G-|kdS#iG5+_170+l6J0%H&OFwXNRU9y^7kwTR#6dBeJ7x1%pdB{ISGkT8xYNf2iVCR%R1 z@XNntL!V;;rKwf#>i4j}h)(>AkghEZ2t2imSKmU?{k&7+)gI0zOkkEB&{i}g3vSc! zLd8`#?)2{g>~c-jK^x7$fjJQ)C@|-YzrX>bB6>Y)_!GKXx#U8n*;s3)+l>>P-?Jmd z=gla0Sn5lC3CmI7vgi_(aJ=cm1b6pFtFcqhvFiv;O)m9=wK^w)5U|Hj?Jj$WB26^1 z*olv=$vmtX{;2H!N0&|e5&yLP#Xt9i|7qP}xI=Np`p#UPyZfdIq_>2l=wnFJNFH3T zQV_FEb$<1Mlbnv&U})-LRwCKiX@gJcW76*t1G|iq!ebn~ThnJ&khhGT=j{%^nym0h zt?c4mNYZ@@sywJ`liKPA%5ZG4Y*`wvD02agRKFwQ>9JL!qQLt=j?Qx2u%fN8@D}5O zi=f47`-5F+qH#dcE4?woZ|XgBNT^-S9VnkeSXN zF>SXPyU2o>n^4hppUxIqdFUef?eKGC8ky-t|{1<@u^s zsu4f1RjE+A;GXj)=~oI^jGm+fU48!z{Qd4y_{HnfJGQaz?IS!jOjw;i=sYj1aqe$m z^EdC>DJj&OLi@K_J;Z!mxq3pQ8|HhHL^adod>@2Et%R)TV;#Vf8l?rzzs7dW$B?$v z!;1cTr>)R+{8AX(7?u(vT{!NATQo3Y3!PfOOs`9Ma+5}J-pL8)A?fzP*~lTVe%<=} ztfo%0|Fs0N@8=x$+$i6NVr49p&Qc!p)2tUNswL5RFMw%#mF@n;i2lQB(Qh(H5H>cO zeB3Y??S7&vHw`nv@0m+cxK*m982o^fVU($w#xLzA*BY(Ue2pe+Vm7jZf9UXsoHf*x zix0ZJ{_0)x8KDF|W9M?I=*n)S+=ew`V*LN?>m!ChA_ZC};>wR7JJ%CTrwdS!=YyQ>C+)v0MmMapr)i(D4V+@sxPK;wD%Yj|267ml7pD zm>;k*d((LP4CBb0<&%|g?NF7f4Xt&m@Y|r1Fk$CZnHcj^NPROGn?CkO>eXunX~FdV z*@Eq(#-7{y-cGcJm)0Re6~amnENcY|bu_fu8s6PxafamcUx%eGG`(3Fx4XIO_oB%= zSCHw{OoFQezqN^SiM!cl5Rq48_%_@nej?kG(KT+WOFmB1d>f`s3ULcj*%o~t8h>0s zAcS~K>wBEYTU+d7N_g2#T{k%SRxC`mftOKIKNH!X5S*+}t3rI%zj%Nzob2cV(;QR8 zoiXm+2PUYMs;!aNpziJEv@Qn+k+}Whr`BUDOnDHuaeCsJlN*v*IUtl`TbEgHP|U-f zP60Fa`4`3r?ro-MJ>;mTc=TM2Zkb#o$$sv++Q2QJ-T?7{Kp3k^;+Dr(d(3!ndu@5b zdUkQ2$IL&9gx~y&|E^x;xgno3@WROnxHr6=1Hk`l?9Ah#Uf=&8kxG^nS}Z9NVn}75 z2^B+8lzj%Th>Y0x3NTI8T-yyXY7M9hM8f0Q|Eln>2&)1zMp^R zulL-K>v7-LeZ5|<=Y5=s9QG_wN5Y`(J`7Ub?`}Aoqg}AEbAX~51oPevVO$YmU*p12 z&vikY%ForGSR0kNueWn~m-Mv)q|m=Xo%KJc*ysYfjF1xeLS#NuD{sq_ZW;`)otnBtD)Jee)6R-_!f~fQ# zO^*G#kvxFqms!hS{xpIzIl(lytlnb*&dcYub(gwUf*>Tw$>7fQ6{3yiuRNJcwG^vM zB{ti8lo}_Oae#F0(#%%vUd^<=ytHB(ta68)UE`z~2hFzZoaK3Md4bZc>)l~DGz?B> zeF`T%+m%E*eg($_W*O%}C{1_PBo|xnJv+QLaTu(C>@Dmw{%dCZ^L}vhdrG#Go{}AJ z8|nHZfI3*W`MCEBp}3NKrkoeME3Ya6@d51jC%U2n9rQ9+iLGY zmCUc2B;TG?gJze63hwz4%6EOD!1s&4v{M-E4X>=`O!5<^5>4(m#jHb@M8^Hm)^*#BN=E(U%IkS}?lh zDcYG&Zgq4hp1QNYZiUgqQo4dTR5TT z9y#ke6dJ%FvNcy3;1CA5W})B5!0>DeoRCP#cZA@ZvQv;XpuVxr6TF&*@+*S>wkG{1 zDUFFlo=100!vOgG1H(5LeV7G!HzCZ}+Uar)CYBmXX-(luec%H59xZuy+G_6P=n%PP z6TA8~RB%JGB~jT+2}iJZ(1`}w^C913HdtYuxU-MLa?$!L#9AB8NrEe{F}nw;c6zVo zbv|gSdgT!Gi2dHy{xb#H zPH2(IlB(etXt>#!&+D%N&{jlBMKw+f+;)7ZTy(5lXJt(~rBY3goKnbpK1z4}1l0%b z#~ckl2y>dT5UJ=?H}>Q ziYJ3*C0BjF%gB7Sa+PV>t;=yne?fMh~4jdWu@^OiX#t2fM{q1d8>9PD7cTfq$u!j zL{=a^D=!#!0eDfY3>Xray@Puj;{ELT8-kuoLJv10^wOeFcVtz(yRVYyg_&%Ht&?uy zPt0}ssNH?vl@xdud*7B241sC*vqKI<4cp^d~iP-5_MTRo)LufXM~`Qpl>GrQ~7zqr8seg`Wck*|%T zxkanq$~T7ZTpRbj&Ki6a8FG2&>T{XW^-inGaP^Oyei>e@<;NF8Cg#IL8k7fN5Fb@i zgp0rhdj4hU^*8@~g;j(H=!m~A2+RtnKlGRgvg`aD#k&-xJyxjfHvQmPMW%9441tUWpHE0Q6#>ISLPv(mMBm)hu{iIo#&_Vz*O|jIZjhT|>bvtd&5% zZd;))eo7{FZ)55Qd~6H@*+ev)f*~h0lvH$s-*C@w7MeW`_{TFsk?P1*Br~_L}2e4!OOVcM{JnO%q7ueGc z$#hpf1p9}^zoWF9BtPoYUt?OchjiJve(T)qoQnFbx9+u+)+js|^QF#%0C2iz$lXSa zf-a}LmY!jnBjpJXXdYnIEo5w~@Jft~Nc>pZ&i%PO%WKA{V!p-_7bNoJ^=7g-UoPG- zGqhv(h{cyh5#Y#Hi_@|{OE!W93m4hw8sqPHM+rlc9=kFQZv@ytcF3%m>Mlx5l+m`B z*O`cyMyTljpDCO0U_9bG%z(6Ggr+JPM9$Fg$RZRV^7Z!l}$;TU`#quKm9&s8RufkePKD32w_ zy|#7LPQb;@T=D*%B=k$D(T0rV)?r0*F-WVXd+`fAW{K2GMV?n0{7dinGh+XjQ2K+z z(O$*>J+XnWQtV%O5~!Ntwjt6TFiw@2Q56wiG}pJrMrQAsl4?mofEhg;P)ZqUKricE z|8YJzCp1%RRYK>oihF>H(OTrkW<`?_HR_BV8eI5%850)lfLTaIi_3rj1uAD95;6{z z5lT@pR&)N92?U+WzB19i9tPQpD-D9Hr6I0Lm0Qmzs^BtwuXObsIQ?s$XlX#6BfxKl zps)Xz){X%E<~9!WK?n-wFCK=*XD@q)ATO#2Qt?}@N@Z9Z_ZcvNH4NscuoVJ!TxpJ`ej_&Y| z-9oIYv?a-qLdsWet;6^4sP9N(CRtnRjh0d*zBu0VJx3d5K(6?jjOl(b_p*E>5Q28BP)aVerX_-I@6pBs2e)&BYdpe=>z3+HSZ7+U#iXOZ3^pj zaqmx-*zdl8KiTm*GOD49jp(MdLiMaN7?T^pnMH*j65PC17BLgA<#H`*w*CByAwgCC zb!7gTMvH?tV!0H!nO%{gwT^=9;+^_hZ#>_OeU)(5SKioH{_PBolLKz0P`5%5P=0%P z9m_hy^z*s?r}yGFZ4-LhHy7o!)t|CI)|F#A_z=X2Bp%8~I0i-4%@R+aZ)p;bik&j+ z`MPEK^2ocu#aq;Y&6nVZX8=B*T7+~S+?CFjPqG>M;4Iw_TiV-%e^y64x0}h}M})P) z$GLXY7(x1c{a!X5yrBw+%E8??Oy%Q)q8a{9GVcrnZAJL=15dh$CZLNrlJcI>(LqXo z0*C0qo+QwJ8?LQ6f8=&rOOP*S>+_Hw)gqx!?CQvT8_%Mhhm8`5eb=-`ztXRPd#xmQ ziHR|Rl_iTXhG)0@AOvQPss{nNibS#Y;`vtR9l}6oa6w67@ZW}i~01q$a7d3b`1upY`-pO(5z=B&NcUpu2bH!s@u$U#VwNZy3soeQ_ojsk)`h% z`K`&8f0f5S*cZPJGf6}Fe&D>d++qvB*8Ukn|^C~SysVvcWl_DVx z3k-cb5qGH#)1G9H zOw!INX>ZLG-#3Arie#^UZ<`)Y$po3wEvtxJe_Iz0=C%RBM#+o`QiW5{TC>2^?n9hb zN0km1VPk>*2cGKR2oE{*8OF#ZrQ*UBi9Rh4itpCvm(}IMYXlM;uRwQ`Zd3# z@rTUM{iJRsk0=9>-v}bE4MEqckB;5Q4EuKUjMBTUci{s@_W)DTBk!ID>Hw=PpF~E+ z!CkqGEQJ-{}QGTdg&eEW1-8Ea<6&wiYI&vXZ+UXMC^YUDbVpH7TH-X1!s#do=OngNgk6R*9&osH>}%JV}Bd z@}O|BR6%fjG4O0A$f?&HB-ojaD(!3+nNa2lo!g_TH#aVu#If?ArK$77-Ldn_P z1E8+4fo1S-gLa`8u#Y9%##mfBgddjz&G$WhVY?EVG2DWc{OK0{126Gh`Aw4_`!BFE ztoNbbtnRqjHGK**)LR_r~IuV;5PB_c) zDMiFGZv953+!g{+0O@bl6c*<-0W0bzqQ}y7!B4du zmi2`};J~*c$zX=%?tOk_?Ilrb=Uu%SbI%mn6IWO4k2W1B-O;z6b1`WKYw8wKt|++e zDURf!onIe}l};JgaD_P<#xpqYa`iT#YZvi{vZHP)HfJ2aYI&p%GOUU^rV60v&eK4D zB8q-yPK4L+|3TXN(-mNPZ}-DmyW6*W4@q+2!U4ObY%2CANw-4XQqOGH!j8ca|0%;4UHAa^aZbu9G>tuB)#5LnXvVzSU{~t;T*~K#fh_J zm5s~zOM4I&0==iRsHYHUM{@g7O5IV?Oi4j5d+bGb^Upk7)9^RbJJ!D++}m#~4@Nrw z)$WnhXVXSB3*R$prr+FkGzt_T=UkltdrBkLU)U-d#*}g!oui9(ZKAV}aVjS9FDf{; zPs?YDG{VJh3DsL;RGR;Wi-sQ5~TPN>C<JeF#uC3Xo~Jp(-V}a9!+j zH*-}{Ax>ga+o3_D4O-3sYbV7#Ssm|$9LeUp_ql?`PB+mi1XsKAlD@5^Zr1!cv;C74 zN4Gq!-akQ8p#F-ryBjrGWlDMzny@0Gq#rJ=_mpKhiV}rz{-N`O<}Iu%7Tea{=r=^7 zq;C9nM}(qJxQ5E-6~fD}rq%*eRq)isU9lns6gO(WyLRg!C9!6`4z*i@PC4o}I1YWN zlPG%k(VWTU*V%P(Dx1DypdxQ)CV@NP@l)8xZ~-7d2rJP%+=GuN@HRwi|T=HplIEiV8TR~Obrk7K~eC7zdy2fN+-rQ2c>S4juhB&PC2wVKaV4g0Os3wAr-HnoKTUA|dyQ;13Mgq&xz3U32y&Wl6(GWz}#9XF#<$Dd5s+ zX)s9hT{5R~pJ*1|g>!5D;O97Q#!Te?YM%YUyYyxM&b!2V-=9b|Sk2<)9fVbx==0i5 zWmEk9^2^-Pq!~Cvff&`$TW0BXrFvu5zGNx~!;)|}qa2{i1$Q{6I&II_3PAa3cc!V! zTdhrKTIwsE+K1K9;xd%j6`dCu+|MMVEm}KXPYLrUJPRMtd40oCjHUJ7G3_ev(xUoB z_t87^RoqO+l)g=uq0=X>MJOpSVVwZn8+EhUWL8^FGyC6np#PjZR&VnV-6(R4*1bSX^h z5ovFBhn|oH3{Y6^%?#2Bu38n$dMf}E-^8N)F~%_NmnUY$Le_VXNi(xhnN>3w z-j1?WWQ?q^9CJkb?k8sySRmArBLt}4Cvpx+usOGf_HCY>dq!dOMu>cK)$r$ zn}dStjeOd30fZ~1ijJg;$WMIJ>nYN;!0Xh~Va`@gXrahPAM=LYC_27J;)=Rf_#;!D zZ>;Ch)+aV>8@80;K^()pP0L~v4cQlKVBBKlXr-qVPnWRj&|S_%0(MJTYwli-Vfz!4 z8^LgFB5B;xx4`s=SLpx3L3s-VHU}&ec-%f_rWs(yk727_fGkov5IFP49TgTTd=7V6 zG@nB?76#vUGPhm0mLung!Jf(0ZKxFAx{{;b2I!p;yCP@SL3;R5I%6rvMN11x%W|^g z8_3>r%Y@mJQm4*Me|dGLA$ZMxUX9nl;$gYwT3VB?L?J{{igkT^=nE!`@oKikz=Un~ z1VWsnH|2Wv1jy?5r`}&A%pd2oa-?Ui8bV3fe1PI}#8sqzpM{OA=5R%)JOLA^fYTVE1Kk>Q%ZaqTVXNg;9I$$Ox(1v55DU8 zd{U#;1uwo?tQ^RQ(MCzR*3#*<0l>~NfuQ06?Snd6FGr`i+;BV{+@vR$q%|uxzq}*u zw1Y%61avP)&Sy`N!tLKd^TNcRuepgP=-X8$fP%NvT4tLfpA|;tZ1!_pdEw9OO*#TT z8U{js>5TtxGBDZm`_S%Blm^o8t3a=;-wmXyXzPqDx3th~Z0dx-nZh;v+lp}p7MDGW z>k!?G{10AMYfnjV5gajeU!_SmU9a9 zI}CCnsj`@Z?^wFZZDY;085Gjz`Qlo;pQ61_@!6+A;)Exvfw`EItBcmJMWqZtb|VeK zC#HQ2e(f^ty)LZM8E5@-Bl8*!fAJb&JOp%+L%TTt+~XIGZCOWcfL%VO41IJw%9__4 zyHWy2NfaXP4CZ|xG@57OYoz~hTpFh z7weX)j0Z{YOJ4m@#BE>Vf2bDF9|MeCbbhld%1O7cI&vBDl2_+a-r+~ToZBg6EqPo;G z0Ff?`=kZ4p4SbWR&M^oC-AW^|zn_-pC4*{Kup!>osR*sCXXm5s{RuwOTQrf^IstvMqnDdVef8 zylTraPq$!#SFGNIlp5#d3}#vBVJJP?yYpZZ^>c3Mrx;m&SE>3>>|w(8n@d~Z98Qq3 z^34}jz!eITE7JFl!a|>OJ@~1Q!6~%8UTyRiAVYo}Tj8Qf0WMo!NMV3r!Yt2!0j>aI z%OPDfZz-`_M?PUo7pYY)c3J+iCM0w!8bj8h4AGT3^NE7|g@zNp39YQ%$^?wHdj2 zLzEspAQFd+sg}I^W0hS@-=cf)HW&@$1%DCSx!Z}AJ~OdpCmq?712FB>i%%XMLn0&_ z>zZIE7&%hN8?{%4W3zjXBXgDeHVaoa->BJ~Iu1R%qCYZybn1m?iv@tm);!gmVObn*29#v-k$k70m-#1e$ZZULX87?xn*sq^GdQ+hp_ph2n&let z^ByhT>6I=~zPjFr+190?PilKc%=^pob4ZD<-0Sg(ORHz0RHW0W_nJxtkQmBro^IG) z3+Fn!FOCi<;NH-l(Ch{QL2Zxs`wFzmxAi4}6k_28sN+Z50kmag_L#7`lgm@mxkQV- z1z#K=`gB0UFFmzZCD*mP$VZNF7$cS*u*t-QYBia;Z``CK;Ldb(l78OV=(Pej_#GsO zpbSJJe9R})ukA9r-g0d#l?d+})}!iV+Pil8QSRQvEOue;^xm!|y=tH(KdzLI^-5ao z81gnyKHeM4(ac$kpwSw*B`%Df^f0-xR^SD4hFr@rX{RAfRV?p(_?<3khw|$|$<-Q}E z)!qqDlRTndOwzb1_NDNa2Af3>f@-2jQW^Wc-3xnQ8O zHK?UV#?S5m%z(>S>Q1_R-QESap-n;diuW^Mf+&w1Q!UmA9NiP2(>`&LZZ6_0@Z;t_ z3Vyj`wJ$M!EX$#ID-j+vHU54;~J^DhEp z`3}@K49>Bm4@Z!%2SJAdvO2FJWSQ6>F<3kZ+1BGtDttPc-08u$`TkHqB?9)KD&wGU zt@wmr>7v$Ji3?a_>qG)hLnleYvS%y4|1(rx(9AB8~6))ei2$dt6#L&lg~#w*M*kTy~f z{kZ%d-uTKvOS6ol6imxwyK(b%w@$9Z{g9OpKtr{ z`r!G>jriC3<^hcsGFHHg(Ad~c!KT$|;u+ENjeMdtmH}lRG>6eZd54C$GVm1dMXv&2 zR^G~APPhLLT%B%!6qKKTmlckR&fA=13@us2b8Mb@WYp>?2Y&C*N}lB^bQxWUxmmcQ zxn{@h4*v9+F+}(&M=JlFQ0*}hqlOw_T)cVOIDmY^L6#G zM-(c00*E++16*hCoKbLKN90?>*BR#AT#KzF2WJXIg=~EWY(;|6;s;98f&oz*#|WSQ z`e?d6PZZBhko(=XK*x7@tG?vxWug!n;Zssx_+6V3ih)o_jyZkY7sTA~xtq;q1O*ju zJmy?eZ(2QgRqT$GtVxC388pN+F^mmnT^=I<+@_inBI`j0CruIaA@Kf>1g%hPiK*k|~{xWMJ10T8)hsU*UyV@W+%*^xDgUavPA zEWiHJyZuGc^-T-4kz)EIE9pzP*I4f)*}_%w2CUG)I8Vw*z>%?b?Ett zhRBa7{6zU71Jx)!(lY9yRV+I-|MiR3%0x+7)du z8%{G?!p*bKQsi_ReCFSg$DgAy$PcITD*$sh;MDHQ41LQN?8osLH^(oGhwiV5a!B7- z-@9|;Vd>Xrs7~q@clmvxoqLIQMd}3}b5g1Ml~Xr{B-OtPMGx%jXFtr04kgB2{SFaQM*K<7907DAO1fkH zh`Ifw)cN{jPY#H6@n&wpl^TylM)Pe43T&U>ki@-cFv{4?a>>;eluiiiLm}G5awV3k zbS6pKA4Wn1tekmz%0=5ME2pz=35j3~gRjKw+^>2CA7znU<<)j>adQrH-B35amC@!M zGcy=Z$vEmRvBFv@SfS!RDRw($8@YY$*UQCktuC7)6NfkbasnM%>IBbAgVtAte4H4?JD(YoYyrucQ=lSLtLyN3-X-_iv_M*jD08+O6jKmx!#o^}rV-IqpGgX=_x4+HY z^*rA{!?9X!po#st3j~9x zp7sg`Sd|QZz%I8Xz9XK?qn!_iiIQl%NW3k+B0X}&KK|9p zR+8lG?6-jPDe*ckk*A&n?&3DIGf*dX=r0fanQ@kc4$24@)(f=9@egTjA*YC@x>e;+$MY;O;Oas(-ogPF;}iUuGVekqzw?%%e%R`;qe~lb>$vDtz#1Ur^X61r1$X-=3@#p&WNx@1M1YIsxOq zVbJDekF1TC`ZZV95|1Qk9`Oi&oJc-(G=X;R@&Ya+Y4Qq-o-zlpTVo+I?&Zhe4~5+o zhPbFXKb>FxKnMYs^vAm;n`mQ*9Xx`d+$%U%ye06c+m1!?V{-(q=D~VlSL;{Ec7as2 z>}!s9@AOn4hjjdo)D%?fG+xFKd! zjC_|!b?0qv8}|-n*MaRuE=)Ee@+>q4?qjq~>pBsxZdudp$Pp_N0ad`%kAQnG~j z5ue104qZm~pqigsDL&y;plg`YShc)d}@E4Q%JZ_EC~(-54(N7SARjfd2NG;h>$#a!%}d z(m4`hSGEtHZ@6KOg!$KK+#zYv+{hW-mf`TfDep=2lk~?EM}>YJK1u|)BwT88H?}Nr z*9>sWPzUmfEP+sciZVWC`+V!>RwcHaXLH$P*gu;a*zOIk#R zp~aFzes4C+A2Ekww?)2L>elYGdOk$Ssls1P2n>b8)|sHM=e1)Fg~czyQibT(j5HfC zt=k8awQ9KhX*STdG9%Qxz|pd5C#L1|#yA4mtMK}u4+9y|1L&jV*8N@OzbTR=(N2xV z=GOO~@6gYe-P_7SGai|nT}NNqE?HQuFw%Vr&|~Dco?5cFo>;|O<XCl=hBw4GnwaG)?;Feu9(sz5u5WnEo&k?kX%U zS6NP=58$3l#&V#Aw}%c^WN9*?hKm{w9HJ*DllA0ZE{Jrij2vM2!sFc*a;m*?LE_a@ z^(gp@OkZ%p#SiCNS8i$%b0@(oyKVyEwA$awj~H93`-V&lLUgc-=j=Q*^YiBC`3O#;va zTH6=nUx~tm7ml84IoR$i(W`!8gVJ+z1#n)hTx~?xBsls0#0c(l-URV5IG^egT8`m! zWrP!;y`pDJmq{dcuYZ>`oGu9ckl%0=+=oBDJvr3Z0Sg50@=z~px3yoA^z@tl>bh}; zr9j#{YuzpOW)|j)K1#7-r$=;~GBaBR)y*2Tr?xk( zH_DJ4XF=i`^7|mzbJUpmEQ<>Jpyww?-0PQOv)-lXN7U-deY&_N7R@I(U0cgF4SbvL z8Gg)7uy0$;wRiGgyT;$ejI`06`yA#AmPfDIG@l~OE`9E(80<(oWIkT*5FI=+w9lCh z!{?5j&iupgFR2w>f7ZXh>&K6Y7bj_uj{1yux!c&)M8`-^;E=*@;azM783O@9 l`d$=IZ+|j>X!!!y7B6epVI(s0h(Z9#4d(6cykOY#{{UKYtJnYl literal 0 HcmV?d00001 diff --git a/data/mat5Mrand.RData b/data/mat5Mrand.RData new file mode 100644 index 0000000000000000000000000000000000000000..b47aa2514d207ed7a7ebcfaa20e1a986ffe76d26 GIT binary patch literal 49548 zcmaI7g+r9#)-6s6NQacf5DEg)-2zeyjEa=R5Ykf8IW#B|3QCuNNFzuiBds7INXIZk z3|#}v3{yYP`OZD}eD}Ne_x=UXe)fLWUVE+m0#d0-{`ryH+Fko-YP#8x5jUC zsBz4=ie=TO)moQ>Vi~>HH>#ghJQyLEjuR&3s~3nB#%~29C@&}J$|>J8{tiBf@ujRZ ze5=ZV<(OT7S}#IBw9S|3 zZblc;#W_5|o}u{~$%JcBA(EW9ajkZamtY-%xweXXXRL!J9mTsTGB=LoPH7#QeY+#( z4W&-VP76wP2r45&6K@gnD4*^mCVL-1Do z$X(L?!agcB*V-kiZ5+>aK0dn$R*A{I8Yf<$=w!exQg3Po+KDVl># zvO;Dl+?`(^ddPkF2HcCN09tO0lvy)Nr=vonhcg_m;@)ev*itM9i^?DLi*cs%MJk*| z0tO@JuUwv-vQDAJHg`$uQNET>N{Fm;NxSt)#=BH*{PR*)NiEHQM27q~! z1P%ROC7+UvQFCYniBDkbKvWT9Q^QKhOBsI}NvMJo@8B0Xc!n9Rwsi+p=vZx$GsnS}2FH zEp5@qzVoqelR7MhN=A{^)=Mq;UYaYLBfhRg!8LToL!K27uWmGIUcVUsBPpUIB8EHf zfIa6dne&wCiUclbMFCdf85xceKc-ve^IuZa6}0bbFMBkldrMAhO{!9~1g&(#bRBPf z#fz@SkzP3dj({sNNioEE;(Hg>Q00z#3kbD~^VAmJbvh#UDXfy5Nm3&!pfn|=}q3TOWB3D9rr&&hKSW58bzFE+V z7{%__Bq_fN!oBr$INILJpz)J3PD1N>-diO~Ud80l`r3xH>U z&-K+xNGE%0>ARwSUg~{%P|#rNO(B8$!~$+4+_3124BDr|(oV#b-F{$y#bYsSIuLO# z#~gY2RoLc1ZY#n2?4mg>G{}9~t)RI$ZmsM7;Y|MZmS4UKT9Ap$k;@j9ZH%cl9=S0PGNsG6LCFccVB@D>2ECR6}v)4vfp$;vFPynY0;)(kz zNSh)jy7z7r@}snx)udwUDm^H}sTyI6X71CyjlGCe7i{JWURk{;4>8wQKLkjayMBSK z&>nbL7AKZwRlUQHMIVUNq~7@F9^$&GQZbERwP6`9)S9Op_U7 zR~e^wbmwOn`^TBo(xlE`CUm(GYYuriu5b+8AkZB~-RzvQrfFf^pU4$sPK-~*zS32C z&3;X>!JLS4`^$`LQUTu!m24Y1)i}dH)t70FzoS+kKl^+((0d|rs1;?~9*WNS3bqb; z1a$vM&q+ZXjPq(SStOH)o|rjiD2_2g)U7@`l7kY{PnB4EAvdeWzM^?q_7u~`R#5zf z%dG{Qi&!a~iRQVze>d;1Ih&SGVso6^Z(OaRAXj3vXKCe|9VW@9dr z(cLZQLXumPN(1K?ovsBKP*y(Andj2)zw=hQ{*Y)t;F_KFZR|OBaIn zbRB?HwL~?cv!v!O;{9`o>*`Z9QDJzD5=Sfnu94@oMmMz zYsm@s8?~ekt_y@E5FfgCuDKbh?aKd}SR1sLtGTDu9DOPEMdhgmutCISGO$;DBuT}H zr%4*UUwFxOAn$E9XWhx`IwX2faY(=aV)bXyQB%~d=t#SjXC;?QZB=zXyjob`a>?|- z%|ONK?K1C!D5tH^;qVSQtfj5y29HjWY;QI0w<#y%$6mC%OYqs4D30o(sg`ZmzpEAPMqt36oxQcx)F4CnqzmTNmguej`PA6P*Gmz!2mklySl1Y_4e)0E3Z>(7}Va;TA=;zQ{oc5oE_xY z)V{QcXV@-_t^f3fNbzamNXWtLTWiVF)joR}PLBOT^zL$BlWMVb&`G;q9pjB_Y(C4U z;v$H%jop<`Mbh$gsciGIoeRf^5%|wL9ipHhU*eF`$xJ{C4f*^q`sNfn#btG~5_lZ^Ow=SgIt@^#`k8ZOd$N5>X z*3~|}a*-U!_6j-g$EUb}#Gn>oY^q-(LJ7y~YpR6t_*c+=aMMhK@C;&LSEDT?Du9JW zme{JwG=7zJLyfq){E>vLM?I(WTGj3;Zf&lu1Lb)GJi~0-zK2;#pz#akRx*tr177%^ z2~Aa9<}1nJ>%f`BH)^1r%eMYy*a2(WjUHQEdsNzBzgyS_-Er7YiMopz3^WgD&u~P8 zbcB8!mtsi59+j{xE1JYvCY!f*Rj#K1X2>u5*{_n*w7yGT;49t^B@2{|4PWg_wrZzL z7=-*@GFlzwO_;FAOqE6S%BicIySwUc zCkQR=zVfRv7WelydQ*e=c@eb{8x1aWrwAFSp4{G=h>a6bEwG7-fm<&A8ao_WFf@JNNB$X#FquvW&P(9Om0Xy@QRwhaIo;V%Y z9BSGe)LfY&c4=2aZu zGZ=TFG$}-2{1LJxHQ~iQd<0r?R@~M}rgv|o+DoAoFOq$Sz`-wjd2opVb2aN(?l!Kq zYp-nTfV&#%R=MVya~#A+?HXP#rBy^lgJIj5^~!bcFzwJk1|GFwpslO$_htN?(#ywY z2@xGVE%!Ty9J?V}j5 zCWbdc(&oW9gPlXvhZu=j*o}4iacxeT#->jVhbb!ug)C{z2MxDBywECOHA+2hikFjk z5zP}B7^e|pJyKL|aY1DRal%tdF7^qOJUzeKm)InX?S&OQ|yJL!l-`qJ= z?QfEXLrmr$PpPN}SZqv;&(=Ac{yagKWQZH5CTRz$sJd-M2{F#c;62dgHojJPFj`*z znAZk61{Ef-DvGr1_M z%%skqQDv@XEsp7p@!?DLZ_VsCiS5vX_|{J|#J#9ua>-hPhiQve)z;Tq@%`-NUfg-_ zpNvK9-Z@A^cFcW&W1a)uj^$r)qsl;oeyQDG<;6SW;s| zk?V}6HwJ~Cecj&>LKp6ZorQPc;w2I^+Ar}7hb;@8zmI?SYPs5Rjp)niUoct4Ozd|LQA(dU!=Ho zs1PSivqO%SFbp6%&mQK^fzi8K+ zYKpxv&q6`O0U%u{Nbig9;KX~C%N>}>Vwe)a8&Lwzk5BmX4spUIo|LBXh|V-g4`<>S zb(0ESwSIP1bPQ1L7S2C>05#~3!gSjG9*(4Q+m}*8epMLg~1oI8;Evrb?xNak)fv+e5KJO014^e;`yle&EvQ(axV>Q_r zI8NYKdFbOVab0SWOuugIZ&}~70qrAVc*SQ0(VKpC5yCW*Vs>!QOuX{?R)H zuD=8`Ha860O^CJPZjy!*$;kNL=tN$~YX?&Z+*5!42-_A|Gq%e-P%?pTr?zP5@mT>! zFwbZ{)c_gO+=uWjf3%jc7|{ZskLLk02A+>c9(_n-+WZR2S2*G9Qt_3zM<>oA+76CS z?hbR-U=uzR*YFh36_!a^EcD;8wC1u$9BhxcEQBdkf=Fu>jwB_9fp;iWM-hNqYX^!& zmf;^p(ZdeSx4MF^w4zqsGhPgT7nI}ynhxlP>o;##}fOn!piEpAY-y?m$O^C4#8E0}1% z_ge^UZC1!3eyS7sqRsRV2UgWHfCg|#k$SS_ObVpcUM84SYE6QZ(2;7PB9u7*tywGH z^#lL6zob1%hS~6!JL6^?R*=4>LLQDX#FAa_gB(w3?h7yWpgZ}nEYS_EHGhuiy?7Ig z#4E7-^{lv=;*DX z7{8{vpd+VuGj29Td!E%pd&NiBL@o+7^GCR`hIW>b-TjEClUdkC;5_c~;Y6|Yj>Zh8 znqVX`XcryXz6e*7-iew*SKDr0JE$t0>bQ>DXP{aUrGn9*@e&8^=~|jmsvWNahJEf9 z&>P`$#UpvkdXIY>HRQ}Gh?3(e2&#{OJ)acqk|6KBfWOi9sZlw-4Q#Zm18KS@K)Kbj(_42=+W@U-8&|1+Yvl~o_N z2dB^w2`Rf&fQmIF`-4)su@1uZsC{n9oV6M zFQAyj7x@Io*rn_$$G<(pLKkCv-%l0VbP&~Z<&sRt=G(uLgEEC80DaX0G!!qieSw1y z+ptHtpqtwUJU@yOO3>8H9xb~+4u+=8P)<^3Kc4p%ov6$re}tnkKq*Ud|DJjiBImR2 z>7JJFwTIzis0;NZaVyKr8ZD>B+l6%)xX2&~TL9!Q4PuU=*v^*lXc>xTlTGaT#i!X&_n@I?J-tWNP07fhUm4O1yVLuc`v}5jpn(Vl+F#zEyhkjD zlZD85dj5@m&$oOVpFwV@?#Z@H$VoSWAp$Sj$C$dWvR7Zgojcx#>2jxjR*aKQyq%tN znZkDNLOytMwt7WhX<{O^vF0I3)oc9RVnsOE@wx~Fx#$nIOGopFin0B zPB(e{Gg1u}@Rw*u(v-ZMttSWaVDlU|*|=}0x-nnb#>?oaht44$^h$kbfvi5^FP^b< zb6$^>^K?GAxGp{FvYA3T+-ek?uo`289$WXj4`HQxrG4}mJg zh_{V(A^MQBsJQi+^jeU6-m)oG_s@{Lenx~)QYd!|TG>INn?lY3aR9pY+yK>b$Hfirl2&a`c3X>NeE%*;D_0Rt>K40Mq+mc- z$|SY3N@$v|TUf--`6q!jx8wN-X>O*&z6)fiY%rjxOmohY#CN*0ry~A@jxcG}h3BQ( zo;~`?FSPq2 zXGr}RSck+R7Ym*|Ka|%?7tth3xDMx!Q9LLUuzw{OfFDx=LnfXvFF4hivj2H-A0@&$(!N#NY`W?!-vpCU)Fk2{6;%C6k;hcACmmpBZ}y8fz3c|7uz zvS-)nJ83`_DLogl5sb`m<*i-Y zxdEj!5w#}7t(w(gXL7!$JEk){N0W0I1f`>Od-;Bfbe2KfIG{9eX^34xH{Kk`Nlb6 z05l}rPPpgBc^Kt_XpZS$o?H#RPhR$6nKW`-_2B@%JGT5EJXLtEF$*85^tj}BY?#Ehbix=}&9W=Q>e;BL=8*vDOFChtDKgy2s~ z@TIR#9iYo9hEwloxE8KwZ0wXS7^uxT(DjolJAw(mtT1@lo}cksePQVtZalsgBzO|^ z>(4!JiT{ZBt=}WKZ`JD+0OdGjlq+tc4S`$PXY8+hx_? z>Cf;BO|XzXXRwel!q1&j3I*zSG$HpA$VC7Cqb_$mkyIbZ7{6!(Leh4GgvFzU4T6p6P$q=%)Iq>TEbm6C;Wv(~C39*Ryq4g0m=A1mSpI#W>)``x zsuI+X!c+E@P)rod-MOI;uF7MF5}BRL&LIe=s)BwOJ8TGT1HXK=O(*1&8nwh0bMUkAg>u*ZJ6I*R=bsI~07d%Ck4yONMJ$NdG~QC#@4^d>Vn#+zMb}^^ zS+60{S{}CoFWHY2%DH@;XUhTm%aX79Zm8!&tkj0IY2+?2emE9KYrt+ZI5u8z$Fus4Dg22@xs*%F5EP3Qx|^)Kro$}LUP)nBWRNz z_)s|yLkbq^Y?x6u|KG@n^y*>y#eeTAas5l`V&jK>Dk8VGdq2NjVJl(fqkM!F@h3GR3d3rP8+8MPAFnS& z-1V$^zVak>7YY!Kl#g>Ow(NO-jyE+MTwCqB1NC3CETGowkLWs00(^G*-qv{7hToE-qkY9 z4{`WNV6Q5xuu$9hHNxP!@q6_aNr&)~6h6~`=lVHr0^p1VIf&xKKD4Sj(E_)#qS5*; zKalH&QiE?NrioU?1$zy6XjQG29- za{+V~2@f4~m7oR;Ng4^gsOw>jU2WF9wrGR$Vp(oHn1NVx(?dbc$LF+GAf7J)7wSud zgC-Aq*Uy;#yg6_2r|1~>d~wPEqoNq$5xtYGZE~!23d~y{6OdBgSv7MH9-cPvLn?6R zz-8~t7PCEG^djs_$xju}Qp-$%SCGUmwc+)lTQW=l%ao z@;s|KfHpw&mcl_p;SY?wY(}uVkK4O+p_LTk`XtPvSfMiLm8xI2U1)^c3VDY-;AONM z*!Hb1H3XF|zdX8k+%souO_A(42YADFB5arUWx_G4)cxVJ?`2_0;vYl+{e!6FwV#?Z zTL(*-^M-J5?frVcBjlHGm(Zv4{i_kSUAAc#66d|DUFaBUUI$;tq6xoY!^nNUG!50Q zJo=0vR&!I=#O|=@)kBm0fvpkviuGI6lwD8F&PGXi-`3%?WG!Z&N64WX3GnwK(F=N2 zKtv^!Bt#y73?O9mGTN**X_5=)DB%LweD;UID-El+J|>$X1BTlFDF-(5^{FRpQ1nQq ztwS(q(?leirIBvxnGr#u_*_Q#w4Wg-O$8#<2I2hN=X2XXE+SX!($VkTEvd3EIq4b# zRz+Hf6fVVGrVWgI_fe4h835+I-S139J%_WL%PU|@^^-d+c_{?{A8cUI0h?O)$GY1mB znwi94pX?C=r}32Nr|n1%>FS0~DmnSCr!Q_9YXgJg`dnxV+WPV(QYfvqh9bDC_a8tT z{v*Q%b0e14)SgU+64Wy2C0r+DVnm6#BHVSWZAMZhoF{tCwP87K{h3OJd5^98_1TYDRSTu$SF8{NEL_(#VC-|28# zM^d_JBZ`iLeS4CmOwm8OF)h7NQ0k713AFfne9cpbptu?MH74RvodB-^{*~oLo1eBE zU4AW;h!CGMl8-O4+w&x!k&~rRW{=jCJcB09WR?|ubY53vzDIepsAQ=jPbk=9oY~H2 zCErH;6TB^dCWvdsb>^)~XtVnbHEU~tc9%}2uVuKh!haB$MtnE3+AGK7cZgR;S5|3P zx`&B>V3HHzXIl(|10Dm{&F6emw~k04oW$9fXs;dk4N!A5{@WjM${mcS2VsMaA;0t+ zvcCe^fAkgOR2?AY2*@OmdGi43dSmjkXxAtEq9bJ9w)#+CZSsu6nx`YGO0!IrmDPy} z`*{TYOocG$eDQT}0i}ELv2Eo3IkaD*-pOL;^4FXwc5(D)Rn}3wI2}_BcHv`9RZ{j@ z+O+n{@XSL?3A_DQi4K3Adyo3|F=|&Og0(ET9G5T?}Y&NoKrw*e_~=wcQFaK#O!)ypz0;+aC-O-F9vsC zbNan-a99ylqmgeEAqpIf_sChf*@+TtN4-Z(8;1# zM}EAD98m#TpY^K_NEI&ny83Om-nM&8h<~`d?)Y}G6$G2Y;WU`ZclREFvEJ*i#seji z6`=J}x97E|1v<$0Eb)jR?bN?mSi5gQ0n^6@F`A916+)Kxbjz$jTVbc}socqINAwqOU|9K1-lvj3u(pRhd-tt83q#-&@ zd16y9RMG_F^8>^z<(?jQGDCQB6QJu&U+d*w zIazw1E51pIqQyWtDMDVyQD7D0L$r#LAF5sx(LPJ@*Xb?#a545|ey8y^o=r3VAw;m~ zl~Iu3k()~UWq|cZ@NM{C?;TW%dYS~S3b-aIuRWsV6r{KJc_ZO&eo;$r9b3Rr!K-zz z?(ZwU`Ta~I;ZYV<7YoG@Lb@INlX@}R7Q<#fF)Gw)Couz6R^>E8C%GK1!S?kCuy;(B%arc2 zJBek_r3YsN%-iYu<+n;nYYZ$-^fr;5|64lWI&CwlYRM>@2kU9AXjJ!qgu`den7Xa# zD*F50`Ybv$=}nt9V#Jm^X&J*AiQ-*21lsKsVpw`SrPR)UUUJuRzXQze+J*#hxV}G@ z!JYGvSESBSNZ7Mp@j9a8@%JxRFK<+rq--~&J(zUB{kj&P=;5M4c%B)n$x{w z#HZYk9GM}m(9EEPFbTYRqcTqvnDfd6!{dZT%UoSQK=R~T#M{Tvdid($Jpa$0BJ}u; z+gM+P<|xlv_Td5mHn&O9_u)r0!#9q2U*(9wdlcJA4XbMmpkxX#KvUEOaWB2fa;`36 z%!TuUn7G=b3JU88NkZ+o;V6BJ20gAPG_Kk|QG!KJUe~ycQdwE^XJHs0=h1#xnbaN& zJ`^=v7u%tWSf{og484^S{E6;`w)mG4*4v0l(&@zei#_XhF>=X4Gp)tn7lbHpQ`f3! zfDhY}n8p5XTP=A7IZUtEia^RAB6+3i3sJXtZeAS6KMR0O_qJ7Q1spx(jnj+1y=7^3 zb@?wMX!>8i#MioGsSLzb$4mk;WzHPN6jfm1?U$zxN~78ZW5vqrNgv$+uzR%740j zn3a+17Vnp>m;Guqq(hUL1hsq0KT)#PX#Xfic{pBy;4v!8GuYjGB@9=2RvgLgPiAkC zx-RtZ#u!0SG8WEfoxy~O>5sIP|D6D4|2W5O1_ z;u3y`yzcliw!XGc#Fn-gH3j&`ZK&KmgFS;%$BH_2{`wXnSSZ}@PMvcMZ(eq&V5K0d zb$-(R^8L1;g**qHOb--vxvC0a4UVAgPH}4alDU6~1qyAV3V4I06?238M<@l9+A%b*I@a!k@6^KQOY|bj$va_oiy1i+B5&}FfS~)XY(18jl;_G@mIiuw69d&rB4#x!}cU4DI=T*;?q_V@- znV=0QdF&T*pdoZEpE!9d)Y8)&>x1)Nz*qLp6RfB;9qjm5t~?tb2`dNP&hR1*Y+Z9% zQ1y#_sTeG21gRRgqZGB`#aUASgk=I(*ZM~{^FtT*(GDATbpBX|o%1CbN;yvEbj$@0 z#*SRR`o%^a=Hy2bQGbpQCw89wZ{Sqy^YUdqen$ z_oWcEfBwr!omRha493}TXrMh=bSf#zMkh!Y86##Y)F{WF3+OTi>cY_ghTs@`p+->uTRgog|XPZ}GiErI66OZ_3G{Yv zd?~t^U+mbpMrwZ{V*A&evv%g(6n`2fI|^?2pAb3VusSoH=+?0}MAxFS@& z;mfN>+STofnrtLwGX3n9q)Q8)k%FXlZ?cxOMR;GlDfJisf;5__Ev)`)BmR*kf!t|- zUq)N75YjZ63C=^)76pEi9QUQ47|zZoFWL_HYt$q)ak(b^G?!u<>)*UwVUFhfnofD) zER4y2u{LYsghn*{VdSdFQ0h$WxF4*{haoYVy!dJ@;Uk@>jeDhs9UUL_u1SRXsxOU* z(HTpEKoD#jK|1=nDlq3~_IJOA^KNUN3F{m|L~RC|DkrD< zBaq3UtEE&F6AplR>h1y)-h3oqS!OZt98~(;#ojc;Pus`SUwW;i$-^y4yUVBjX>yoo zi*KU+W4hAy6K4(BEjZUrH9rr5fkm^0f?!H*$;sMqR?V6a(owlrGnJBK0?<@=;;+|I)0mpvMzW`h-`*4S!J9G!fnh zDP718tcss%3y!n0Y&qZWmr-#$c}=Z-S0}Y(eE-1Ye(t&YC103nXu`vuy{wy-VL24X zmepfzXEf!c>eH>sMyUPwJ?EJ96(Cn}wt7R3{dWH?JIFwYCJ)@M=Yy8gilXmLo$PLA zLBg2LPkKoC`lZ(3TfW+eCzBg2T1S4?7g+@d0i)p?n)v-pn5Z)C9CAi0Z%j zERseJPi7VaAVP@JvZTWWTIg-A#w=e$%_b2`uf{rFKbGc*%YawP+G(v(HKe7LMJtn)$@Bc&l+(f2E7hAL};KL^Y{hyBa znTbrdz!?)GM)d6il~+56vnB(|xVi}GHTgu%c=AHj6xU5rznF{n@LZRuagyDfFc>1~ zG)pgkUK$`)cG{X!YjLE9Cp>t+XZ#J*cR+f}HQMPaB^ zT8p#-hu#_N>A#=Pe*0%PB$2wt(-&NkbkF>}Zy7vB%yw-*yyP?F?Y(#+-+X|37apv;V4VCt z$}V(j2WVBaezKQKo_fW(g`|1@uJexSDdx*2iq-|e?M?UVW|7E?N#eDGw4x`*-{z?` z*Yuyi9@d@a&C3pP;>*FmL&=?9$b)`|76iP#@DSsut>#qLKZ6N|$;wYY`5$}_qd)qk z`PjjI$K!^4ev5ko<9YMq%VyS_+WE^1wu&KJbRW?RsO4L>zo6T@Qjia^MqQ>wS0klO zk4=(H@x3OhUGAeoDHeo|nw1Hxggjr?`MaoN3{>vk&iBXR)W4%SbTdP&CFtfj40-%w z*POi@rQhjP+4hiZ0`6>>*XC}1v*Ue z*oZ`(s90#E5A!9q$8!e*b-U-%X>}LE2*8dJZ3}}?Tg1p1Y(uOTrfOVle{$-Tlv)vu zv>x5Z&z0B=PF%OQ$REg+3<%M=_Pi+iGcHnCME%JC5Rq(vC=jqeek&~s`NI;p{m81H z(oEsWy!l$~XtLS=wU3IRK=kN^4r;Y_dj{7`avu@Lr+Ob#>aW<#6md#C2{Vbb4_pVl zMG>rfkur&PpF|>Co)fBAMG!CBnq;01N=yS(#Xt`R`(z7sF-F??sQgWl)Y}?;^a7T5 zDYGKQ6}2k6G-Cud$0Zg~nPJ@9hMFYU>l490HzGDsU)vkSpPgt%M4N08{0puNsO*Ch zAG4)rinsQ&J)^<~{*1psNhO-7qy@LXk7S|D32mzlpU3_+;hBF%nEyY4;HuY_vv?hM z8%t+18vqB;*ECA*BH}6vW^eEbuNjR)ilqw2=m~xa#$T?>A2oZ(F??w9h@z|F9^W#8 zlqspPfgEaUVv#j|SptV~{2g*9m- zLE^i#M|ak$?LGAMBm}M`KDK>OW7~0n2Q?;h9d5ddB6Oa^j2aU z4&lspcGY|vHsWfn?blZ;^v1@|umqOKRl_6C4XlQ=s@x6jn*fgfmUj2yL#7p?I6sab z(q^2r%Mml$>w@B2?6E?kU{W3^9T$SBveOl4|`ZlP}G%UIC4n+Dx;Grg50xrsNSJIR-pV@$5oEF$kIx3PP z0E#sVK!*yg}dG@B0gFc@AbCs}x7t`VW?1LJLuy;wi$spt@4pZv8WRbIroh ztjC0ae+eV$6O8}%Otj%DK~no)PwGI{TKsrU_N}pJUX@y_JGX*_Pvw0XUn`daOW#87 ze%Q{@+!|Sz%w&ld>=67AxF-f&+LWC%?Pdaokw%{dU^>E`&T{-b>^U1F(Y4QyN=nW> zNa2S#CvF!#^SDaUT^eMR-O2+MZ0Ow>o%6G_9* zRe!vc0Sjk7wxni*lG`x`NRMM$6-&RGR8mD-c!}+_b7v&?_QN=vk{Poh*hxbrEu9lxGKpLOJj0$!bE1+5h$Y#C8ErINFlHcz*(tYzla-|6e8e2@;AL()_! zvGfNw3wy_|W80tREM`5peEW!yIL$%Tx#Dq3T+e3Lc9|Obl1bSIpzzbqysUb2C`Rp_ z`K#{_Ca`Xmi2`7}NzJ3Z_DMs7Ol$YKal^#tFwQxOwL49k$$>4Zr>I~%$^lx>CQ;C2 zm^clae13QC1C-=2xwoT#tNXCh+aB-t(1!nBLjPUfCQ95!YIqmde28EzGN{)K{BWe;$FBFSLykz<&(qMjaQ*l^-fw2(ngb|1vOG$En?e-)!Or@I`ofnp zK9T}-tn_Yx-4K{2@0_#e{Ccb^k2X*#sXLoh_Mi~9rM{+v6G?S7UG8FIUsiC*P}j*l zhaMR&R(0)#&1fo67!z+^@(E-n8))_<1V1srWS%{hSfez)VjO-VGZj;R#&ZW^xAmPt-1|wX1Z(LKr_jT1UvzCX?gQFS;L0HUSM!zSaKyc ztZ+?gG%>(~sHPU`NZ`CQsdj7o30zIPY;7^xYxDM@Eed12{+ARy1jzFAkHdg2YeUXw zt4ju5e7zzS ztouqWoAAThGQR#G@Uo`@GE*5DzL7~i8e3$(y#u!AIPqVQfL{kyW|>pe<7Yvj9= zVpS$sCuv9+EVWfF2z<)mr79k5n@lmfIGZRDOt# zf6udN6Or~OCoXE@?M zV{4{1L3KZklP?D;lY#U3q}tvwu5v|&EtYNko%HLpeF*J*gRWBUQ;%DLU)qrO?Q%=K zqdXZ*HO7cqiW>235VeTiQgJ_h3A*%MpzZ8wru#J`c!ze_N`N}n(&Fr)z*+b5?F!#P zVQ~Go67n+*>8`OtQ?n`c0mmHNTQ!WsjJo8@f1JK5yyCy-;eX2tZ!ZiNgh}WQIP*3t zC#smXuDG5O4_suW`YdqjTIrAls$(~m$urYeF;oi=2l+{SIQW{d6nxJc>Wq-%kHS;{ zUko8GDZ%peclqR+=i};+`Zy(ns2iFj5c)h@sDf;$Giz_K{HVfR0frX~85NR?6@`*T zLFVL6tjzEuSRWhn%>mH<&8GHIgO*_Ktd z7vK}-Wy;IGVgi4_>(;p*{`cuIQoH_xHE+sf5g zt3S~e|Hjp@!A5=T!+(r&wx@?QC1!tr>N8lMYJIZ%dSd9YDoAoB3V10SHknpZrIEqM z_gjurx3lcIoGJ4$>zyC*oDD*EhTS`bu**LE+(#VLG-}!!9qlfB(J{40$v%3I-qd#z ztj?;KS4>q*g~!R|WrW2BqDy*mjKqgtMOH5s%4hiW&tE3IaC6fj8i9`MT4g=gsw>0UW# z%~zWLOh3V`3MyuMPUiD!Os~n7>l&Lu3PinAdp9guo5%MQIwAgM58+`)Sw|?-?U&=` zsez%bL|UKnLt`2Pymvk4je%;hV=&D{f{mpo7*5)H#olsYVUo>T#o zQHgGywPfTrkU2;*ZFwn6{P!ZqQ>E#CdbA;r-;+h`3p!jBnXYTg&%VA?_Yu)IeFDb{ zx)U&WhcTnkN)O&$us!uZh62rR9V*9zDl|1nXP#YIRY{^bpQX}|(q09#5{TK}c9f+0 zTrT0k+VQ}?qNrb$;TjpIbCSnvSJTL9i&3V4wIk;F4s)AyUMd_HX7C1x zn!V%fBLR!ktCkj@aVXvfCJoc#xXU*h@0tx;EzKD^-}2?)mj_asc3QD%o*$fQeyg0I z$i=tB9ey)LP4MN@3YPOhxs6s5?)>yib>+>bsZ6EY_CE_8|2Y*ALrx#`fDz)h7md#O zQU$udc%!;KBNFNkTIiZMPN&N?T*vUQq>x*?;y24%UY$pT_wmOHSPm8i*)v@@Oa^<_ z7uk*VQnSuJZ>#gNVMxPyeP3T}T)zS~Zq~XY`hNgHOaiZE!r7 zYfyHX;xwyWjsI{IZM(27pSD%gExhlC&aW*WyFf4CCKQ~X3j(L}5_tDQk*|W!+A2=2 zwzB#}YRbw-2WxiLv5G&bijscPS}>9gq8?w!+x93vqkd|7>C@~R@eP>UgNxVdxV1qy z5`0J&58E^wPgtZhmC@|Y1$%Ybu*5&JU$|AM>wCME68w(8UIX8`29*1+`1MB$Gm?K> zOdIe*+`b&34v=~|P?fGr%GAS3gZADvYlP`5i6jU1U4UD$>iM&X7e6_dpB&$om+dPd zIHx!g&Za?zFOzcy4RwA)CeU0AOVyzPS-S=#oOz+Z*UGNUE-1qH!G@~q6l~%gbs#bg}~Gn;kzMWw|+eKhtsdb$V9(%=wz=S{Nbz*rb77JEz_A zeoerpV1Pj@@B+Gnj?_n;YLcLZe@c5;Q+|((b~o%KPo#~2>n-(|okwr5%5w!z>c2yg zq4_ylJZ(-@Ihe+xbBu|u+H22QqIwU(b&GXDX1V>R4+IheZE2B3N0&d;GCNmUK_~Mc zkC~+ar9y5fhlF zKj%#Y1By8mKH^fTxvgxGp9U0b_MOgZ#J80Y#6k*)71R+2b$J}+-Y>zP&(z#`%`IYvfd1;9lyg&A>9Kg5^bq{t63!Y$;9%rzZ+N}AzihH(M)DH-CFc0QPW? z6_IjrG`j~VQTawfX)AJ{UMby5BH;7d>#;MOw#`>%lPc|^96d^}mn!4WZFzIS@3Pb! zSoSG9OO+#TA`cZy*@oT_+@|^tw!})AFSHi~s9ibT@$f8g)Gzbt&CsE>w6Ug@A|!5v zcs*EH-TG{Ul*!*)PyGJ4)}Mk`$DWrVUIj}x%apz?t1-_tW=<37NEOv~U_o)K`pA^o zhbFOAHYL^bi|wT(UcMz__)04?&ao^#%Ee7mH}y0d2QUdI2yq^y#;wm?VpF?;xmY*u z_{B-wWHypxn+LOENsntiai3;H1+bOEzm7Wd#aL)KNZFFTjJ-~~dx`h$&JJeTL5o8Y z2Im&><9CT3aG+UAJ|ZNHMF=l=yZq=h5wAMzhV6L&FP1M*XKT86Ge+`tzp%$V)gm%%1=)VpdQ|KYUf5oAuv=^ zxhk`@776dc8|%uAm0eka=+sl?go-TJllzsf7kz|Qov2OTzKlbHqcT2Eu zDvAk1+*aynATGWexZmE)kO}n#SZ!k7WS7Nxguzmey$-~Un}w@{{qg!||5n<;-CbN`@}z56-aQRa=fi#HnI zFt6@p=iPVpmFRI%SFU4+WK)l}@m@rmV%B=6H(nB2uHjYTbUDikC})8{`(6DRcKoND z=JfO4F#`~cn>;+@lB+|%`4ICGP1f;QEDea#2&Zul7q93Te5Ej2*_?ZR7m|P5c6P{> zf~hli;NXO!!|ej#bdVS}J#^7(Cq1>*C#&D*Teeni<(Zi~IIt#4xA^ZRe)@+YnEbOj zvr9{J9eTh93^LSPQJ+!G+0`3GA|)5p7W%F4rQ?l1HO3n+r9cyp_z3)Epv$eyCm&TA zBuZ^3?ubs*PPsqk)4!bQXgf-rgFZ+<+z-;rFxN9(Vcd`&tnD7*DU`3fxfiZYj5ah{ zmh|evh?_3-ipp17NK0yv$~T~>y6zjYs4=}6a?vKp zGD1XV>m5j00Q$h8VZhJ*N$aW+Uscm!ACU&AGw>x~e0C<#ftbAcq&J zq4A%3yD6~t)eo=l$?w-7G{0#S65a-;M8Emktk2z2KH7Zk6#9;2I8fK}WuBW!+oCUp zl2(gl!nQ2=qb{nKhL3NCat?lMmyq%Z@{%KgBt3Y7)V<}XsFs@6YCCTNFo_k)v*{jj zrU0Fsa$Vfy+I(aBSQVka0mP%3B}Y9=yClAvf_R?LIw=6Cy`_9Z2%L&C!Q`a0a%C;o zuN`@KS-t%i!-ojW=QX>+%V_dvl1G-yN)%y%B{YF4f_w!8{gwx^{6qPK-OmAwD)H?g zJiYX(lak#7{&Xn*f)gDQS@9xZ0bex^$+<)*qJ$@Qe?(n@I{Cmk3)K+o(kAX|q2LLP zD|OHGy>!@0P1BiOKjkqLIFTJ&vBh|HlRv_9dPpb}!F>)MBd~ElR!|943LcO%{nuR) z-&}x2OobetCdKZ~9!4i&g3L+jCoDd`o7EItYO;jb*1V0IGBkP6Q+~U+)lx zd$7!zmS&y1ormRUPmMgbdcLu4Juo@%rBcA{C_#bwy{c<_f-a@}SCK^TYpsEky<#;jhc?^R7us-$M(qLMPZA+Xpg{As5K%1 z`qknRm(qmp%Pr0eOVvta-EXj8wCCCDXEf_$J59ZLO7GqWT=&rJqJFum;x?wTdL`aF z)j9R>!d37$?+FSYfP9E$xW_FH;Av)8F$vFk&2b{~A3*;6k;i}XRlloboRDND9YNj< z{f3MS`0?j`$lYjn1)9bu0Ht=#qmYYz;7<|SmK~aSu)__W@2oer?xThKnOBC$$@(;x z5#b%;LJkYu;|VyKSPt3m zE(XLrplE5m$Sggi&6|AFWBWxO^;9*^R>kLyz;&=G98`hQHNll1>oot5%7kz7jnO!5 z&`^+@M?GM{Dd%=yRx$#Xi8=-~Uk$B_0?^mDv z$TWX22<4m&Czd1zz;`0H17%)O!+Znr{4R5pMUqox-BU+3RidO0P2dHmH#8~n`&m4v zNq0E;K!m9(Y+c1z?^= zSEKBC$u2LllTobV`c-84^=45uccyjn>sfv3&QpdoQN6yd-ZR*O%dQT3fBdp3?eOO& zShn2;mY@RVhZ6h_jNCnNGmd(k3)db_I2ugpu=9_$<5R;pHr&qGa{w0@w{yZRKdDdX zRrv{Gp_%D@fpW_qt{i$}EV)&Ad}VjQUn_3~UE6h?27Am59r57&u*w(o>w-Mj4g2{w zUdrH#lkGXoi+LK4)Hb>cMN3?c0*4RJ9+gpcBq!}?2W<(5IfIm!n}iPyY2Bkd78M;b zKt2grZRdwkNB%6!!4DMVOzZV!SJIj=GKbXuQTc^C9qB{PpX%N)ns($DEfy%t_@f8; zA6oHvTHw!$Nw4D8gFjc#`t~L|ehECi48AOtihnj>CjiN5Hr<}>Yb?4T$l}GzWil zF~1LDdSf*&Z~Wx^-7DW7S%|hdX^oh&Hd;>H$vtYpTOWRo;PdV4tJAKnShefbl~_K3 z7W#OY#5ye#fy|;%oKgXukr#XCa5jz1|4dyyy!sIb8oiP=y};40urTP^hPYyORj_n|<9- zqR%PC>;5@ETEBFn^BwZ)$F|`LbsnP5BAx} z#=vYgS67|eZv-I3Tfff?ezM11u=&dtb1@z_p;}kMU8;$S9}CFrtD%(&9scx zULmhAn#UXrsKFGOpN9chy&(6}1zM87 zh<-3#u}1a$(;okJ_6Co5eiU;(Gz)oJ5TUFBYposvNRXzf`?{K?bhz<}nW`ncixL|Q z<&JZRu{}3CQCC0G3(>$)m|GS12Yv{rvAHjNd5WDvlDzGk2eJ7$( z&x({-=~qG)R0hY5qB?q#C}##-VPbZxcK!Vhn%iHy#u zkqdQcm?HDn;~>&t)2Jh*SmQUwIPl!QRUQy>2~aRUGcOEK*D8{G^4t%DpdAF46+AvOzKSsTeUM8E;HY^Dm2{MzR9 zWI#JM%`#J|N!A9rJSAb_LTYCdk1o=>Uy@xZy&P+zq&8|@NJNDnG}oz0<15FV!she8 zy@i&ac-`{AXtA>>d;R%4GX1S#lP^6HLsw>YPV|mHz5{004BvK_7MF`SQ8-EIbpCYFDe2 zVF8^zsL=YH8?1b*{>Pe+H#wtQ9eB;Jaxu4WfGXEZYjrri_0JV#{h>o@7?_gjfcbdhys`1j<`yaA~rx_fYvNOCI_#v z75y3_27-I4YRrxmt5I$57bm5b;CMp}%3tt}LU^vzfhyOJeA4ef!3alwsMG3L_nmc0 z`gnBRBCGtiE$>rsg|$f}fUGBY>71(Zth0|-oN@>b#pI@TPvI0!>5KmvzI!7C4NA7a9lyf&e_9BEaAscy zu38e$dqMLNHC8ZnWlDF&*{I7n+XTS=RZnjO<|@K@kWOd9&G-UwyFEH-LDf6iYxqL& zM;2cqP|7KxIGRU;-?mt!*#h=`xw|5lfuV=X=)I~W#V4IezxAqldL|awc$a@NY`#t| z$P7PbcJfg4{qaTA`QC%+56!37xckDKEE8>*lB_ER|J3s)F*$9?PY;opazli^3J(sM zT_;a$fFp@WnTM2$ULcpik{z&^Cv#n`+j|~g8rtPA!Ur*)x1^u@YO~t;)(FjlAJuWW z2vMik?N^7qU-H0&u`KF3d@^8(XdK%-mJV5oHz_2)4~IXSNZZb0&T9RT@^$xmg0Y?D z)zk6Hx(7qL`!};1DEDr+d}q5Td~|eh<>4HCFQ_ssXJ75>lr$;ZuWaB~L}5U)@lbBt zuK-G|Vh_C6{y>yvzuO47FaP+I_t3o_&0UGF$TTi=O@{Ac?!8KWVqK$GGH3ZSOoOpM zF*bD-Q-~LShd@c%G&ekxm;xxd#_KL>3C&XKMd-Iq_8j(DwB)XN99>^{C>);=mp7>) zHF2Q)3GGJFz!<3i&Zo~OrfCz$)E*1_27S~}2{YgE-kP=hGMk5N_kxU^pU2Tu_D<>@ z`6Z`E{UCG+2>lsxyz64`Fi0Q5wYxdi;RYJ=yGHPsMiPNrGHh|WZ}0ER%%ew7zTU45 z<@GewW|HT>PYJ#q(_$QTFb=ypKQY*va(IbhxB^{%Aa0JnEPCavue^4meCiAFguGU5 zNqYKs$Nrai8v;^F-0LN zsajs+5JKQZTHFGF0~VsZB2)viV$kOLbeixDia?bwTS_GsE|T%N2Wxf>GQqEUnxNw0 zv)N}!t{gj7Q;Yw|Kx9621Vf;6h^T>QiPZ#!a=t!$4hH=iAzz+nYp%BW_? zbx7$rf^ylKF({xR7>?#^u+)dSJ4AwHuGGWEk*!M{DYFVYjQ7Y*g20q_%!vg37{FDY z2N0Oq*j| zEL5h_wv`KezsE%cof=plE<*lCANITKqWJ?m5K^kVRJ{vpN{BTa3wG(5<(V(+`Gd;! zM**lJHRQZBV$h4X>gD1r>6G2j_U@i{rQ*IKuOeyS!>u5rkh{wUCgg8~M7RwQR(23H z3zm)K!KKPmk0gg_t_7kxk`sVC3_5hAYYUh39z>ue*Ty0Mtury_@4 zwdVrkrDC!OPm1hUtHZTkun*{l?AecllJzEHfe~!=dt0F;Xskj6)tqL(_vi_Gw{m{$ zfd6F+LB8YN`f1_39KWBohlMWP%?01VcE68L;X|g(AqvX_m3iTSNEs&4ME-rc9e0WS z7>{kn&--=qh85k=M2!eONSU=Yr@G`VP1r=gR!HE88m2p0xxqwd#*`^+`44Fgy`sB8j)3E`z+rJxuoyGL>$9t zn-_aT;u7t^p;IZr{CCVtqbWq`%cJSLB&E)C9%RbWhJTbOR=UjLRmoo0j9>Ps{puva zSx;Uz@Bb-*2Z~r#un#*>l_o|5Zc&%8sDZ6)5XkJMj77ktYG2FgQ&ZQX1I$C&|Ju*Y z7c@ftGMfHi^J*66ir)_x$1BHZ#89i&=>VO^buLJ|#q$Pg=SN=)n=-BFUDE0W=OQv5 zD|N8o5<6xlNvBj>aGTdE+hio_WQP(0M)#FbWtevJOKkPs78{r8yR0g#z=*3%l8Nk= zYCfdz#=HuzA|$)R0H|=?q8l@gw5=W?*qS>Vqth%Z)`z2Hs*irzS;E8r1`@x{qX0-6 z>}Hihs)m%v_rS(;i9AP6q`M5w>8RQ?>iKrC4LsqTh%3)tOzRc!%?jCeJ1)y}gnnmv zng^0^2`8G;r^TNoq{Z}Sm=6||@<8$(I;V_UuFlkynt|Le?*JO6_x{POWhs`|2sbV4DXIvMwW@={ zJD=AU~GsX_r_t$6LwGA|Ab zS(UBo65WnPt(b-3;CQhw1ZE9WQ)|hjkUHs@!=0;pzT{#NiWb{;mm-ELpB^B{0;`|% zEo8E%SAHDS->k1dI5B36Uw!uJ!oN9cB-OSCy^x^QJ(n)tH{1!06%6g~lZ%SCKAP#q z9k!DZmJ@HV+sU#)9hg-+d3Zo|Nk`

im0D3i7HGG|2kAxp4id>Fuup!vSaW&2vER z!~pr$)@w6+K`qx}<#Pq3j?Q2N10Q zr9rTgLy$|;I@O5d``$&=8BF1LR*zl+xsy%4qw^6=8%?odG zc>1D(^-Uob9!s5GX@`p=J!tdE7Dflz@f2(g_dg~?kR3!Gm|tOBw=?5H28h+Sk`EVN zz?d+cLxlUQ{-#X4%i^99-~Thi`5i1^X0zOj!_nRe3ybYe9M>f+3bW`R!Ps#+@3#9w zg@UE7w6|6eUs2uBrp8$p9lz-$M0~%+O2ziIRt;`7aVQ)NipDdH)z(wTaF#&10uP$t&=Kkfth^DH+a~e;p4-?f( zwPuK>JqY*N8%%{@cWN`@|=s>-rV`+z}PfE05J(XItj5rB@hpAUt%N$1!Vm=@lMO6j(?SyfIxn_o`~u3i>q-2pjnL$jKV z7t22&1pk+YLJrK0QT!5p>1>L166NdfmPl)#6rqjt$WI(vHz2EJEnu;1M%`Rtf^*0Qe2Ds6_n{kqo;0Evenvs|7C z{@;4Ul-#8kh_o0#;hx^|Dx`Q@)8=RX*V&bjCtKB`vp2)7My_-Colz=2m3>I#7vGY) z23yHA3fEw7LA^XsVYHio3mf?jt&Ijt4m{=dycYz>ka}C5QQwH*BbKX3w&2fbvysbK zRr_c=%K)`?VNxDCY@C{s5fGWlnSEc2Lq9laEu;t-A5;C{oJbae_uupnmt0MH;FwP3 zy2`pokLOE9^Y3fk{a9~@$-ss-#kD#9tf+=t!GS{5xw>)LTFX&QJ=>3ToM7HhX1=ln z;?w3Gfuf@OCZTGv_1&9;)16YrrYhG!W}wnxxzD)oN9vT9NBu_?=4pL{$(35~YX)i! zniD-U>8wns4=LoqZsOrcL$$|P583}mkv}eD9KoH=H%#XONjDmrsn-;ZB455_){xBpcMU#=+ zkJt-O6HjXI&d%if1geC(@T8qON+-j29x2J)cr`V=%}gK2M7w;EbHASQAna5l`|=NI z7_%-DANH3!6_az4RvVD2wVZ^q?xm~LV(~9}A_jTMcol(PK zk{;mwuu7(0HZSm#fb#Qi%DSB;h1Xut9egz3dUj2hD(KnimF(^T2~@yB-BJcPUG_y+t^sUH6>*{r1v8a*R`uFIU0?tvGH!1w^-vCOU(@KGSh8*Rd6y?YA&J9V}Kh4dlOxzsI^{9NAC0WUMpa zPw)Y7354&FySb`t)I783Hps1MZ<2=v1+N->yf(HX<#vtL{EQG_WV^FuK3DhK9Zay$ zMAnxb%6tQTL!@FYIQCdx^J2V@`sCEf%hl$I=(XRVzh={4Q=Y6g5Nqc;D!Z8eNnQDS z?SjzT^2)|XiDv`7fihX8b#1`|o`Vk{kQIWFtE^eiRBZgAqs4=u4mewl%CaGcbz+R*@BiOXR0OafkA*P;*dD!LD0EBcIXX=|O%=X39Q>hpzu z1F_!YBXKF>KF{6&`5XSgHWV0<%ro6~sWT4c#4i-JOGrKWP3mq3G6QCQ+IJt@V9CJ(px-`7jTSJz0Ht2Tn3)Cu>~?J~`RX z-G?^9sCP(JwmG5)30Vx1LCr_VIhWl+hZ1g^elVSd?94-tWP+6 zofjiNh30Zl^j8bDUq_p>o3o4{8eVVd8wHvsPR^Jf!`g3V=wD@sSU$%8FgBQ3VXV|> zJ5GhoW7s8uz$VUU?--dc7@sN606%biBOiC-(WunWA#k+mBlJHE)}4ej6br z(gck+&0QuDbw>?3;j+6bXUW>ukF2IXJtz(cB`Q0m;z`XF8kbnEij}|_{dQl-C2(Fz=azE=@U^GSFRO?hR@DtPgkGJ^OQ3I>|c94u2 zb!AlzdBrYe^@Klwb{0-w+zjA&`6*QrS6TNxup}DYs$fV^aBIx<+{XCYbmI{w_vxApNRX$UQ=`w81@=g2u`B`oW z83*j_j;ws+4SgN%fQr)=^1Py<$A2)@ghGthi&-pF)yZ+_`)6nzoVl{{@jF=N{|7t- z^|r$Fs@Rhx7UD?V0Ka;xJKJOwU~E@t$4J;Cwq0Ypvdl(JY(F(8j^Lf{9?6`-uFa&n z?|xzNUC8A*o;f;VFnn=#-V4)g z>$H%b{N!%`U=$m>Vsz2$xy}`zyDMpS8v&W1p=RUd@*l9b7mka<^ZUtWhhF)^!u`!& zynF)UtGPseS=ZrdmWy5oP%*5cik#>kSl`9|3K)M-kT=`408@RjW;B zSnBu!zhDCV#|HTbace45q!hcFITlhF-L?>eMcZ4zl|NN*s*=J#$?ZotGT@uLJYUr2 zag5t>Cc@vl6(D7{ml)Gon$@XWUx1+s!$8`s0FxfMcR(k?2LaceLqtg4Gr=|7UQ1Az>x7Rpp%@DZmsowUp|SYoG<8seS&%gdN^#t zz>eP}AD!ctI}YYlDD9HRMs$@dim$#X|92KwA;EE-x<4;zdgtkCFo<2vV189I2kw3z zt}MordSfZiL#tvvrG9mr6^ET?&6r&Q9oM6bM@rt z)VMDP{+bPQ^LtjY>icG@j5~uZEN*JCS4hE0ZPc4}R~bjnt-Uyvt>3M*5iQO5;O_aw zhl~->r#oIr6jQw~du1tz7Gww?UD#sx)t@%|w>j$X1|1G*CZNAtUAe9b9ZKEc#D0kB zXg*I}DHjZJrU@9_Go_C814*dKyDC z30E{Ft7xwZF(jw9V8152Ir(5c%FXC<;>RS7u2gS0nk!Dq2l2GyRbTlj?YhZ$ zK2Y4bYE^i|r>^=a|9*spa5tZ0hKE5Hj->NZ+R|^uDAHAOadyYs4cPTeH&^#zf9`2# zx>X8Jd)0GyV>KtyFw!=Wh~(XUVIM|!N+_&i22xCAqiq88t64N#w>6aQa&;C{bPt>U zXagte_J;D(J+6unp_7NbyI zEL6#vDo(fvXv`GRuRamklu9PqwR$lfJ=}f2>YF{unwCI@cJiwmuVZl0cSBX{M41cm zAJt%cViitutg^HB6*EJCWWihln#B2cwYlP~wB&4@sYK z*vj|;^b+GIKmYK+j;B2%IRdM?XLHzifQnAm^ohITl;xBly$#v^hYq=*# zItzbp`PP0U9ug2ndw>unP^X~}k;|pwj3LrgjUDFMpPRzG% zYOO-)UcQD-iZFR14tE-4k_+mEk*%otuK-j$ci?(_v~)UdCk5GqF0##JB}zMGVFmDv ze#J}MO;nn()m@sWa9 zMFGACzI`EuaPpmNz2@0+QT5<0cFkY#lqARs=EY92P%}-*r%u)4TDAm#mJ}?Xo)`Bh zPFou=W@W-5KnVoLl1!I&rgqW0elf7j0#%N9#gG8_vKe{fJ+m9K)!(%!;7{mCcaK`Q zu)>^Ji0-@3X zIV+v7)31jWYY?S|kmrl)o&C!^cf2gj9&&ZKz4ojyIeC|u^F6Tg^5t#St(l^pk&=ol z{(U-*xsE>-HfQYNP*CXu@u7P^>3?g}($E$$sy8Mdz?fjb~7E z-0i`Q+~_=dE>&q7V*@AO?h#=zjA`oD)COLWl%NOYtQ|1?;N?r_&txtlm)bogD50XL0Xg)ZyJ~{INGP+#e0uCAe6y54m&D?r7p{}3v=)>Vf2ps;uz5~kwror~w0Z}gp<9TgE8fi4vt;2&E0 z(OEi`aBLSY7UtzzuED&(&#*OQ&9bD|tB*5&aL{kUzr-~In!}kQ0&@SZf#c98Lw7L? zURDhws#snlSSUu&KL5SqfmmdFX$p9B6_b-Ile!b`4kk=VUBUa$eg!W$Q7fkzr?3#pM$&&nV3;;7us#H^-_z$ z2Nk(@wiKUm5o{XYyUM#_c4olLcI8nta7W)p@V(&k3QKS>$KnLG_--(lvB ztr>bbLX7A>u?quY{M??b@ZzDS1LWRY18o?WGUZahj)_HX|kt$$+zuT zAE%jHH6652LM~Iw3x%Nf`$>bmJOP6$2+TEUP3yk}#QYXaL;s}XBcwhn}p6S!Aq|ClCMrMEtM+-8Ur+N2^H3I@@$>TeD2&Km)6f&PV zxFIRJT#P!kunVnMX1!mn%~qw0g-F0j5B1l53TuK>`MeZ1{qC8~CSr?xvMevjE;NZV zX3ffGZspTey(W}rKi>WFs!mbY$BvDsmu5%quPx)BQ*CxPDi?OSD@JJ=>@yI%-qIGk zG^k!wnp9X=^le1f9)-#ZduynEK__mNQ9jO^HV2DCk9YTzaua7rF_kK0lCw0P)`EoF zG$KHc%F8|>1cWi{61TQrs9W0IMHY69#Zr&yr8c`K2dPYK6Na$wpZJFoL(L7L;nVeN zc^KG)ZVB$T%O5c-J!b~r{}RB%AuZV9Byi4=a;5zQxZ#>{z2sdC0ym-Ig(D&kzEZEF zw}txAy-;}our?8YQjy)~nYfvuZ0&nz0X}3%C{r6HUH5bTZ@VAyG#{l)RM&O2+e`)+ zYp3T}l`AQfM^|gEwGh5z!sEgr|p4s8GAP?TH4Jv&n`qz!+PE`{U9rmUSza z^xrfs$L-^w3iWYN<*!YyWfi)qiiX}@t|j`0m@m^b9#J5ly>rWn&^pPl#t4|Mnm>t4 zrU-01UsMW33!fB$74pR!eDIg0hKKt!Z-T3Y|`-QE5eK@rtWR!n}(L~^l?+zew-fl0^#&y@OSyN+j zd2E;eP@!YLrQRWQ3#A(=&CYFPw(^X{2K~P>#Xsfw-7yNu4P+Vn{+x7UFYs4W7*T~n z^X=G7fMX2);VGaAmBqst|2LEEEbAh8|=>l?L zTYg2E>lmlH(!dPb{wBwQsGyGN9MiCt;@7B5acpQUsFyzaz7CiNodLd&)&f>8A^jH( zVoyCIzc4QP%=+1X)d&BStvl_P!0B!nt$EvF(OCv%U2E(M-%HZB0fs+~YJh9JtsU1A zuxKWA49g+K90{4Mv-cg|L|jwyhHIJMVat)e*pLRrY9GI660E3kE7zpIo>FGd?`fMk zP+E@#Q*X3lcX%QCp3k9VDo;Ss;_iu%iJK_3+@}S58?{~hW$X?XQr~$57&wml0m&Or z7gS|P&0F|$zq20`5t@XKbvjGA_mQjuAMB&=!c=|djkzLqF^~MXY z?EMd=q;9@~##N-G_yrGt5DxxQgZgIlW_r$d>sr3#xE11FQcy|oh4~{JYzWK2=cJ=v zOezmfE7^=oibnNw<1+ol(#hF?FAFv@wGl<_6;&hUM$*XDdkgOaRvrhvq8E=SZaZwg z-jdN#`d4xAm-(W3t6c5(faovt1(+Ja2;N0FjhMWgdYbPdeD~6-OK}9=gBIM>Z7DM< z3oL8ozXBpCEY782h{aqTURUs3Mr|O&yh<@3e@LuPG7la-{%E+g0O&m&V456~e_*#d zkISVL8{42BM~AKg>0@E$aSq~c8HaJYVlhG_S?wv-Spn+qzuu~d8pArxIVpISc%)J`qOzEs~?M;M1cGG|2 zMGRt!EhQdRZ#pcHu z{ldc%H_+TJ`D_=Hx>W@v#+*LbhOYYu0T-^Oas9!t25~F=drncJYJK3cm`ndY{nQ z&tV|l?$Q7FUg1Zf9vKg4!~~8_*rB2%t`sQB>4_5EXA}0U8K3?p|Ftq*1A0HCyzfsS zF^QQQ27LW{{MMhI=p0zMx^bo%O?h~pa+^tZtam_ddswq+^^2RB0j>3Lm=L{2Yyc!t zRN(AFFrh0LvcWGS>A)D|<`%gXF18;qO{xh_C=;Oa*fTohO5;yGS2xM)g6|qRCGq0X zmne3skMW(e_Z$RT<=+#|U?Tg($(b>y%MzyMoU3?pS+kq?kc0Km<10QZLmB^gE9npE z!H+Mro$BZg925e}yq_u3Vx7*luTv5(M_NZ~<3Ca{=@w+54^+NPj|#@mhz_{{IB6HE zyGvk1+2wDustpF8gUw+r*r`@)uAOImM=vR|Q`Ht%4&V~;6W}MUOB6_#mx_0Jre8Tg z#d^1vLB8v=C#DY!sXF#ILYq2yLk?J*(~A7Pv#!kqm>8{Wo>{z7UljyERsKu8XYq8> zHNJcUy9`I$~*pD;XDdgSRR9ucm zy#kT8(;k77p6T1(igroYJYe`999+^br~S6Mxw zo`QSebRzK{R4oq+z`eJPg1e3L5u#PFeko~)p~&GbbYDF@5t&-HF?T5vSU|?x+b$d# z60|6p9e%cUjaIaH0yr_q+LCJMR)9sjDou1D_u#e6m{5htWJ2tO=|x+4%Jc) z|5%#=hrX`Z1-4+31gb{T8>>i|+@9g+x2<;Y@AuaHZ~yJ8-EmQ8{g8T^j#HQ;;UL-E zjvbsRc681vwjKV2*nf~vrgo2a9J!0gue=m%HLW&uuVim@SBNmSSMAIfV5QXK5gRug z9OsJ>zr47rKj!`1Q9I%87!^#2UdDDxKdr3CWo^b*wef0DCPwYCf|bQZz{8t`{JQPk z|JT@ghBdWqU06XtsWzk&6c7RFBAp1RGy&;NKtM#KH>n}gm0m=Uj#5P_0@6w7p@!Ze z^j-p?C6MHc=N!*H_1^DKe&pAF_Otd{bB#I1I~_#m>|GZ=e6Q3t_s_nf6NC6+A+PAr zS723b{#otj8)y9`S%3o(nb=VH>}`kSiZSa@9>QCi^F{`~t)8=ybBwY5GQ8(*Vvm_x z@B45qdH2z*+2lz&n+9hJF9Gy}Q(L$=n&1{HnAF<}e#VU64Wk*;aap&$E9#(dVcPOO z4*8`mv@3>Kmde+5+tvu#QNtd1Z-@D9IrF&YHh%=oMG-i2&DW7#42?=es@K1EaDPu+ z5-NxTf#rIkW4;AV4=$ufwdL*6H`NvPE`XSw%a$|mgSDSS1ULgtXL+%d8#~7KG@)Uw ziu~+>N#O~z{2qd%omsp^f^;xi{pxp=s5&xuWpc-8}=@K~yKu;s-4#nGpsbkP4eln|W9-3Gy*Wz03zq6*iGX&F}+c7pA--qw%_Eh@ghT_4!+`5c$+B1aclQPdgWcQPDZ zLv&s&SIa5trU31)$<_KfLO_x1M?mqfHf(7Cc#6S4|E4aK_lsylL%aN>qlC3!)V*r)CA#_Hbm#B) zYjRIMm1jjq#4xdh7W+&yWe1*?HbKeb%vmp+AX`W#Wsq?#eR6HE!EW8Q8ZWG0vaDJFfyDUU?PKP7JeqeIj%L``Ot^6D2Jxnl6|$p;1$*xwaL6Gpe$r4~?b54&b;j|AIB5`! z|2@#%f7PP@Xkdguyzi4G5US2wRP7V;3iE#DPqNO{-0Y zWM3}#yeg(qh)y8YU1qFQ@%O3ixN;6ycuxk`ipsTB%Pi}e6N5iKqJ{CHJU$f51k0A5 zUpP*{ak8Fb*T9bj<8_iW=k#?zRH{S!2c!(=DpS5n9`gOud^XpW1Fa&n~z22`zT5oxM$s=DFl1%yRtH zvh`8wEf%LqF6()6c7{9n>#;Ea6RHxD-arcYZ)Fe6D%o?(D`Wy}uC z$v4L)+f|btWTe!{mIkPKK7zL6JT(?@97wvV69+%@z0?(zh5~AJj&bjtOu;y5*ofn? z(d8+~g~R85?PZnHR;Y~@paUd&? zRNGj5_MG0>yaczCfW+cmLahb+>2CfJ*ZTAQ=4Xc8m$jjX60xBJ>bVhxW%}!)9*RuP-s^ z(TVRhTwSSqhLxF^8LZXk#z?IKZ4q`_w8)NfcZyDJ&dZ>lU>=0n zG!W5k8d^W$lBm)n!E{PT2;B9|#nl_gS{{K=lh=%2KvTq#u-dV38U@G1fEBG<4b=^B zjr;0if7NjQai0JSB!*VBz2Gh}>(ZzZJg5E^zp& z6yeA`@j0*s9L;R9Sg#L@-1HY13oNQ)WFp4{mGp%|HeeB)YEF+Go;9@be3NjdL*H2J ze$+md{s+&-zpjpDuYG9ZW*QUGjcfLYRh)-?(+YNwyWiTftsTAZ}W7QpGW4 z1JlB@P3y9Z7%06&2rGO|J5|5?6A#o%V2=1LRKp?5wAU$JqZJKUkY;U@Z4$7rnZ4E0 zXNU5SpefzeMilONEXXU4iF_}AGJXGs(}+d)R!E<9yLqzEa^p`e*G2uGZt1_R;$^RF zq)1iuR{hR?c}e03MK06ZT~`mJ?;3k=<_ek_t;x5V0t8LFI7{Y-t4yufJB3bZy$8>b zv{&7WQYCW@KX;nHu1clzuE-Q8)k{>s^-EQ4{DWZE_1h~_^oQ!ae3u8txM&cKg?J5P^#X{ zGS}ia>24I>tR)}v*EJ|+UFUpYsz;jsIz{C6w&S%*M-$Q82BT6*M}G`c|J}m#Tbv6B z$%OOHGTmyl=ULe#)k@Im!}>YD4QOuN0uadn;|wOtwX=gv$9imhQ*JzMd6lLEZhr+x z7z@;BWp2?p6?`Pj;nnYZ9>+7u^Z>^9p)_-eG<(hfJS);c3)q#~r2}HHJkdqBmxM;Z zZvFaR$Th9i$cNB{M}}a#mmtrmdIzsKR%tE!>;O`RYHgC2KV|C0{}!e0L9I3=rjvRc z$qsUIt7RDU)30U~-`7O|ha4U!VrqZ?s4K=<>id=@Uk z96e?b<029Gl0@T+vb5vZ3J|$dRZ9MxBLsZ25&bTI6Xg-t=rK3~x1-tBPw7P_pd#2a zf{cASOcr%l(ZDv3&7;8wuUp1;a`WNj$e@`aaikSTqiN)yHi}=opbGdO&9$P~pH7~1 z8~_-oAJG&dOh3OG?$NSlYcl%4GyRg=mj{m%y0!7XutDyJDe%{__-CD>l`?y+2+q;H zO`5o9t&0U$3@&4RqYL!oLCpHj2NCCSN3)mJ?MZHs}(QD zD!k{T3wUm=L=AX(X(Dq=Ht~?U&C=Gb?yWPq$g%rxrba94MEm6hko_FKSAlX@MSln)b}T*2T3!6i(O5?4T)I|-?A?bfA8zN% zw}n(Pgqq<=cZLxK!%N*O>X|7o8a2|`Mkm!M?N_Geb<)3uad>KIwF0&{S)~)jVK+^y zA6OiVXs>P$3IsUs`6{dH`Nvmr5wp$C{LLwDCW~E(G^298us$bl_OqVwi#?F>gEVv9 zSc$@(**jb2*aKf8vf7xn-9Qas@;2T0USv;A?N3>aseCvYIhHaX`$MGO<)N^Of5@WK?UN66YL8nwUtz52^wX}iVzh$!G=?eGj( z|HZumH(E0c1%u)0_H5r3vJ9C&#;E@dTF`@1x_VOWWY+$ADj+QN;_9?a)zSO}dN!!~)=rmE_z z7RVWpZ)&C$DM!&&#&6M~>Jo8FTWae-gqxy7m7V&6K;k0p0Opa)K6fRC3flD2*(J6SI`&`lRJ<|Y>F{e|LTb2p#hDU~P1bHf#Omf3s9DER zwF?%~Q))j=1E@+*O;E)k1Y-;ys;rWQG=i00-Ay-ql}G-lHO*orff#&?R8fLrEHIok z#>VI-AAyb(FV*v3s1Q5Asg)j7zRuk}#g0beaA#l@(mQoG#w`V>7+Cep=>&OpiUaYq zccv6%=vwTtqVox4BF044YS`T8lyX{{3+HeD0Pl1($CkFAXf?s-ASHEcv;ZCy3g7~f~vj99FnMc_~<01Tl z=PiljDBWq3QT@F8eY;$t z8*imT;;9e6^FPWM0o|XfHg}R{W2t|ypU^u2rbsFH+fMMS_#}#X^(!6gm;SnAdb{8u z${uMou<%eu{IFHAmBj%Ssbnv~tEy_{4vxE9#mu(|&-GcCH#;?Hq?dhg<2XWO@w&IY zu}7ltY``m!yu;bi8v%Y2XRU7q$ci;iInZNt$V@iQ%rw(uR&6NqHC0Kk0*vvlOhF+B zz=7*W!MNr=ewqf3!Sb(T@;A28f#JAgI00mK3jOnm@MnIIWblu~Rx5r9uCS5OOL45FKSE79m-~&=Kr#jQErswaA?B+9h(*=#bIJ*Y2L@kqJzFrz~ zMWoxDw6gl%Fyp4Gto799d(FOgsc8~gh$o+&45cD6j zP<+SaJWftN`Zm`&>Mv64xoFhDxYmPh5FMkcG?F#xOa27ABQ}D}D5|nP%Ey=lHc)$e z%$@ooo~bLLD8^bpY9O$_21DF|6hjF(dl*#IvqB>R6yNbmV zT>@>2?Sr$`EmUHhgGr9`VX=}ovOoyf8t7{DwTRebO)k$c%?2z0ZW%93^Xixys2}iM z`0eE;mKD1Ffe~rWOEQ&}Vs`jx~UGH8M_%a5-P0229+ay4`lfM^xc)Fql(V75ku7 z!9y3SZwifGzgt?TzNhV@nABTy&twCi9WJ$IN`GzM9gF^k{zBdwF?w*(cS->U=g$J? zH|@GM+p9Hv9R23t|1azO7gJvq&{~}c^8b+4%tCXm9FK;u8_?8e}z)X0? zIm%C>4YaIBK@Z`}4g?K9P14&zesOEsmBc?|u<(m2vfc2e@T#RfbWunOeRPIPN-iUA z_<<<_2C6`qEXrzkVzgl7y@>L25260f*zk}7^pJc;hsYtF=JN@$sxr~?sy-e9 zI4Wl2@^ z)&pZDl6pCRG{|@%PVb$3JHT=sL!i$1s9v?Rr5ggpSa674JWAfmu;c@;T=u9zmsy<3 zNGhhJ=g6n&HUZ$jt13Sp`WO77Im?5;(uGd2wAjF$*8+`!p*wT~A#ykB92xesj6dBL zXdsy;L0b}9zJ}BHGth@_1^Yr79Nfz>%}9{jL!x^=AK!@?_G*&!qJtFOpR%!RUWYNL zWp-Uxteg-TTaJFW{bZs~m0`pXfYZhir{k|K=9P;^JrjFds%W3_^hs0zf^Q!!wEQ<` z=WjMGDj@UE@|OU;@nThgX}pD&6&vL;b@Ugnz;c|)NSnI`w8l=Wt4AqP>A3d{p2QGS z;VNbETg*s|-ZYm&ABsa`LM8*6m{MrxuBn{q>eN_KzOO$&{QY~q4pXvv6Q8Zb4C_hg z8q@YQNveVoG5ov0^mel<%`=6BLq?P|I#&cn?VPjaEOT11 zBxXyJsXx84_VHtpPXnV}{jOfK7mss>hhop=^FNXpe<4|ZX#3IM-v5c0+PU!K`?5_X zcW-SBHI^4J0A-#%)RF;|q#3Jv6)%m~AfSqe+9>;XmB~9m-P_HF^Ci}i^0nh2Epkjw zre(%ih(W+B+_7m#BsA)6 zU488=9Y-;z9E(_{`hOwieIm{n?>psrl91HkTp{+Aop1l`?h6tk*!@ia`D(Lq zANoGbl6S-5MSmWiv%lhQWlH|8%;YfMw6F`7ao{bz$)SMGQZ?pn^r$~*;AhmEQG#pLkQEJ zoB^j(zgkpZ40;ZuQHPB`FiRQ)RAjEXxOO|w5JM7}Z;a65qH}GT#T?zzp~+is3Dm`eJ*oexiBMl{zp=9It`=j9FEwiM=PKkc8ahmIlDlYV8~ z{wdaJv``lG2N1_j+5FSjUPi)BK$pcJ%&-H-{Ow74Oz0eqfHf6ar{lBBF3R4QM?R~L z9DQ&$m|kTAu<{ZBTp13orueUE9wwXEn?i}@mQND)UJkl@Z@SiUt)J1%-8gW|J!Z03 zr&q|>>?Qx6V%1vj;7t$qd*S%%J$>DKml{U5>~QHL`CYb+QTMnW^UpR}nZ70uACIEp zqE7i4U}}&IYPbr>@n0wl2iMREOlnk%FAH$i2=KKhH9if7N5yio#~U?%f<>MlHy5z) z{c9it3~{d!rnB{`Q0%V0k%NY)aY>iGz#xGRn+b-S=`^RjgEfDJ*5}Wn4w&ReFU;Jd zk@&{o(oxr`Kk}~N`mkMhla{H4U+A_*guXb@w)TaFNV205|7fFI4W5^rVYK#p@YuwO z#lpt+5#;1mTqGkcdE_^ysnwc+QoPt6PB9xrXSN%H$Bw;J0EU zN0x$hlqxmf0>W~LK_EikkAzyocWYZF_tcPZ6iFQ)(Wr}ouA#Um7yIuOcbpUr9&_0@ z49(XMYANJqC!M&*bX_8GU+T41iIDM)N=?2h89{v*WI9Tg@;Axv@A*QUUk~by5E;Wm z2LmGY{WGVPX>3;{_w^Wv5QTL!z8$d^Zm(kJ6TRnDD|~OAx%N)_Db}w_DMZtwFHd`I zSEkmjk$p>0WA`qJ;Lu7S?u;-u>@qNlbK%L74X8gmTtbOq5pAXs)9XO46MODR>d5oL zo?M=$hg03|wU2BY$$rrsSDt(yC#h6%)25#-V$+Se#IkP{5AJ;;{6DUoJ754)Qgqop z*7RoI(ZW-7;=DcU@YF^I$w^DInX(GR%<13@Hb5L{LB45^LQ15%I+mGzoZ$~e+<5>< z59C^GGn`IoB%5bdNT)vJADr7L#+fFLf>|$CrYx-zKy)>lxn;`D#g3WVOtmka9FLh8 z4sWOC)d)ZvrQ2NsK*vJ4byJJuzX*J((Sm=0EHHwk*7<&?l$wG4$>J7#?Xm!_t`k#! zFF~KHQ8cj@*J*3srdaryH(p6?EfufojPk+{G*rKQ|%%=dyQZzT7Q<*b-ogGGVqf%0VS|ix^ zT~QI)_XHLD_;!_GTxlrwPo%lOOC%EHzi=JB$oIlNSFEplM^@z&T{gV zVF*|3)&Fc+$oY&O(|FluXwS1YvAR;FBu{-8yNu)mpEG+(QEiDM9jsV7rbboJ!q_A* z0gra?Yz$+=(1yA8Il%#S46-XAUT1fAZG0|=;P)qyb)&uBT)QK%<=f%D6&t@6i73_wrb0X}n*_{E# zZfoJC#3#Izc)HQgPq`>JakrMV%^w+!dO_r8e4RYL$Z*u}GS=N>Kj8Km*{Dc^E&uhPlxRi+$fL!v5HtZqn@em%@PS1yH#i|JpvP@_Z}3Yh(a95>vMw zb<~b-cg~0{{#-$m(b|NwuuH{su}L=_LF~iw{tt@n(T<02V!g!kAT}8WiSA{U`b@_0 z!;xiEz!PJd7jLt~I!Ziv0yfJ%RfIRUv`px>xibPhXf65E(hCFv?#C{@c{VF3IW#QP zdte9X`np`_d2Yq)ZT&M+{>VT?cG743gSR-#>W1xsi!HBWJcrDB98cXtF%}h=vPMLDvQ(hel$RV>92)`J zjdd35=Hxz2NAph{D}|+!hdxOqI+^t4O5viF%r($(iA<0+RasproV*>%#hz%T=?hGf z%AEz!gz{snvT<0_+klj2-UnG?o?g|rQ&DFSy zn!j9wSVM|(z%Fz&(s-XmbzC@$K;l62bMc)5q7G(RNwMzPwTfpfz`V-zC)4lWPPXiy zZ*|rqtMZD}?yOhRUy7no^(Tly_(P5FMNY>-t}wP^8WcfYzu$HUS9u@B zUm56sZGS^%0;mN?UOnGlhKK92)|Y#3ifFCIh_pgZjXFWi)|wd$)^++GN*SsFXy?o7 z1qre-DWwP{(^3h8FP3jftmqGdh>tkiSjAJsD9_Bq26??XNk&X$n9J@`FNX`AUay|G zJQ}Mry6TQlEn=w-CL1yvH;h)Mmi48S$qj9g^m=%pG5=myPAwih(>)jaA2VmsTnF^; z##1l$s^-BGpi&^O<@P8iiQ_bxeve(~@Ikn9%r~cc8dG+h;6nMztUK43hlnG5VXDB* z1d{tK3H2&-6wQod2gfeaKZCz$*8*~M{SwQiX02Joym)>^$G87e;@CYD(;m&m7r*)?l1Pyzd1b;oS9QtmD|ZV|@k_@mhA^!-70!}9)t zBJ&rzb-Vvj%tqDbqqWyv22FXU*t4f z21xZDewqHzov3x4EBCALC?-89eE?zWGs}FSp=&VH_86M~BuRxdL+FQ2Nhr^<8g4?; zByazUVfoEe{|npgH~mjBShfdld8BylmT`E)=>9H=xMkX)Jxy$*#&iHqdQfz9r?r1) zw{-XRhxY`kf^V_9Ccdr^D!Z9Lm#%_<b5h$OJPxc@NV z;fLMOk$%CAOZ8h7DO!cP=w-o10?D%`BgQ*AcnM=>?+t&cH{rx33)UTgKBG>NiNAUUvb__;cj=M9EaE3*MHd=2BP4auQB+zq}f;2VYp?NKRg49AeI z!5(0I!6T5qO{88{1|@HU2MKqU>j84|+3`#*U2?hyJ!+C0I5ySquK@kyKJiCWkI$!2 zOKjk;@nS+{S)!3zQVK#a_;%ukU)xUKn=%+QehwpfRTlC9%^yb<8jMMcBdeagR5`M8 zwReyvQ=wtp4JonQ-k+Y^HbE{Yc$h%tW68k4%usm+Z#zmF`>Tu%cJp0-^GJ>*n7$RzK!zhFtlm^!UR=1CF?Q zH>=D{3fXrzb#gV;;?%UVL>8*I#uF=!WFyTN%SVk6m3rcWBH_(YU~2sl+7Uql(zobr zm(}D_BW9CuyL@FRe4Xc{VJTGaUD{!0YH*P*lON|gFV$@AlfCG2wn5E~gZ5z)E0co} zWF?*%!GY#_rC~%*57*N~PIgFsaqt+ibl(y_W_J?!q-QYQdwMtARl6M;I_lIt2TUd4 zlC{=~9|EtfS8DGhV4T!7NUK=(hTk}Pc#3cSO5gY0K6!9l{%qOOE&UFn+?zi*OF40r z4)iYhrPrhJ*9Ww!1;qOm2jdPY<$5EvAU!gn!M!$x9Z6Z$&(j7{y~?F+^kJQ5Lkwpc zsz~c|OKU@S3{F2Qk=MNom@)3@%aY<~Z{Ur-?Ra=>v!R_MXx-^}C!{3K_Pq_l^hmlq z(O@Phj4y+$RhEy$FA=x0ubKm4#2Vxy)a&)vnutkY<13<^UX$xpd4Y$xPDq(-A_*vV)-|RC7!m~z zg7++{N{L}F9IsmBu_`_yG-4B5xn-c!OQ-NP@O`i-rt~o+&AWIg^iw(|dS$Wj5<*@2 z7YckCP*L^>&Em~QHP2XNBXiOPu`f_KD$^CY&!l`bA>k%mq6k^g0tmOT6ez6txIu;! z?4CljM{VB(XLOuLQtalvN}qh~2>N8R!a{|_G9kyq)fm^~Ctihz7Np#PsL1b=L?*YM z70s0D@3Vyl3aHvW&D!Ylo9Q)NPded2K4P?bmHfh#>$+3cE`w!>!LqjNf;iq4lQUoz z>34g`F>i+VU@o6a0VjceNsWlAYx;Ghfid0Yl?_HwS1Uuu)w?bWcRM;DqizwKzFwe5 z<~P>g90aOpM)wu70bigONcMTc7AC5yzHq6ZG3&yNMJy0?P;|SFj@PUD_-|FFj2fjs zA;RmEu!Dh=Z0a>>38&Y(U@GJ9+-cM(4AI<1>J2tk%N9jiQ zFuO@GoaypGTR<5YFnROscM)%UNQCWhrj>wlfOou~!DnrOu?AfM9fdofpin~7X& z-!r5j2m?q$N=04b&Ut< zP}{ZIzwHA<@z?RGzM}J!Z+{LRg01+m+I7Yhat0Pv5*0)I#bZC~=Yq*(-xqF& z1Wl^&^b>Q#O2hQ_F(UTtTkL(|IwBQQ@_8KjK%*lDXwhQQLe%z$5t+l89bvl(+#Xg) z*lh__yhY`K=dqlv=p%4M3ikCs0Vob83yxGk;_DqTVD$#Z-L00NvkMko@xHGUGtA82 zcz=9emzg%mIc|=v{uaKJYqJ4<_YS8}r7nR%GrLyYbvh}Sk=%Dzt!kl!aXw&qm(`%< z@sc6y8_$Gt7oB=ZsK z0RxxS)eIuhkEo`xuQV&iPVbZ&O*+Zkc1OC*5ejS_Oksa?FlKAWCr6g~;28|aWfpn- zYW~NY_O@Gv;}hY#q9#6~kJ5yf;>MSD7&H!m=={6H14JHYP3vA*RZ5{pdA4=j^H@FB z-Se!r%cs)r)T?LYe%&-(kDkWSA6vEp3UOl#(e=2hZUBLF9ewTih5tYP=?Vr0ZKA7X9m=!-|EN7rKD2>z{N%<)5SV4*EaK8vXL8jH*DL>xgteB-Vr4 zY|}FvtPLKWpjuLMZ_I$tlx%?!sK61t5!p@%gKX|a? AdjJ3c literal 0 HcmV?d00001 diff --git a/man/CADM.global.Rd b/man/CADM.global.Rd new file mode 100644 index 0000000..efd5729 --- /dev/null +++ b/man/CADM.global.Rd @@ -0,0 +1,121 @@ +\name{CADM.global} +\alias{CADM.global} +\alias{CADM.post} +\title{ Congruence among distance matrices } +\description{ +Function \code{\link{CADM.global}} compute and test the coefficient of concordance among several distance matrices through a permutation test. + +Function \code{\link{CADM.post}} carries out a posteriori permutation tests of the contributions of individual distance matrices to the overall concordance of the group. + +Use in phylogenetic analysis: to identify congruence among distance matrices (D) representing different genes or different types of data. Congruent D matrices correspond to data tables that can be used together in a combined phylogenetic or other type of multivariate analysis. +} +\usage{ +CADM.global(Dmat, nmat, n, nperm=99, make.sym=TRUE, weights=NULL, silent=FALSE) +CADM.post (Dmat, nmat, n, nperm=99, make.sym=TRUE, weights=NULL, mult="holm", mantel=FALSE, silent=FALSE) +} + +\arguments{ + \item{Dmat}{ A text file listing the distance matrices one after the other, with or without blank lines in-between. Each matrix is in the form of a square distance matrix with 0's on the diagonal. } + \item{nmat}{ Number of distance matrices in file Dmat. } + \item{n}{ Number of objects in each distance matrix. All matrices must have the same number of objects. } + \item{nperm}{ Number of permutations for the tests of significance. } + \item{make.sym}{ TRUE: turn asymmetric matrices into symmetric matrices by averaging the two triangular portions. FALSE: analyse asymmetric matrices as they are. } + \item{weights}{ A vector of positive weights for the distance matrices. Example: weights = c(1,2,3). NULL (default): all matrices have same weight in the calculation of W. } + \item{mult}{ Method for correcting P-values in multiple testing. The methods are "holm" (default), "sidak", and "bonferroni". The Bonferroni correction is overly conservative; it is not recommended. It is included to allow comparisons with the other methods. } + \item{mantel}{ TRUE: Mantel statistics will be computed from ranked distances, as well as permutational P-values. FALSE (default): Mantel statistics and tests will not be computed. } + \item{silent}{ TRUE: informative messages will not be printed, but stopping messages will. Option useful for simulation work. FALSE: informative messages will be printed. } +} +\details{ +\code{Dmat} must contain two or more distance matrices, listed one after the other, all of the same size, and corresponding to the same objects in the same order. Raw data tables can be transformed into distance matrices before comparison with other such distance matrices, or with data that have been obtained as distance matrices, e.g. serological or DNA hybridization data. The distances will be transformed to ranks before computation of the coefficient of concordance and other statistics. + +\code{CADM.global} tests the global null hypothesis that all matrices are incongruent. If the global null is rejected, function \code{CADM.post} can be used to identify the concordant (H0 rejected) and discordant matrices (H0 not rejected) in the group. If a distance matrix has a negative value for the \code{Mantel.mean} statistic, that matrix clearly does not belong to the group. Remove that matrix (if there are more than one, remove first the matrix that has the most strongly negative value for \code{Mantel.mean}) and run the analysis again. + +The corrections used for multiple testing are applied to the list of P-values (P) produced in the a posteriori tests; they take into account the number of tests (k) carried out simulatenously (number of matrices, parameter \code{nmat}). + +The Holm correction is computed after ordering the P-values in a list with the smallest value to the left. Compute adjusted P-values as: + +\eqn{P_corr = (k-i+1)*P} + +where i is the position in the ordered list. Final step: from left to right, if an adjusted P_corr in the ordered list is smaller than the one occurring at its left, make the smallest one equal to the largest one. + +The Sidak correction is: + +\eqn{P_corr = 1 - (1 - P)^k} + +The Bonferonni correction is: + +\eqn{P_corr = k*P} +} + +\value{ + +\code{CADM.global} produces a small table containing the W, Chi2, and Prob.perm statistics described in the following list. +\code{CADM.post} produces a table stored in element $A_posteriori_tests, containing Mantel.mean, Prob, and Corrected.prob statistics in rows; the columns correspond to the k distance matrices under study, labeled Dmat.1 to Dmat.k. +If parameter \code{mantel} is TRUE, tables of Mantel statistics and P-values are computed among the matrices. + + \item{W }{Kendall's coefficient of concordance, W (Kendall and Babington Smith 1939). } + \item{Chi2 }{Friedman's chi-square statistic (Friedman 1937) used in the permutation test of W. } + \item{Prob.perm }{Permutational probability. } + + \item{Mantel.mean }{Mean of the Mantel correlations, computed on rank-transformed distances, between the distance matrix under test and all the other matrices in the study. } + \item{Prob }{Permutational probabilities, uncorrected. } + \item{Corrected prob }{Permutational probabilities corrected using the method selected in parameter \code{mult}. } + + \item{Mantel.cor }{Matrix of Mantel correlations, computed on rank-transformed distances, among the distance matrices. } + \item{Mantel.prob }{One-tailed P-values associated with the Mantel correlations of the previous table. The probabilities are computed in the right-hand tail. H0 is tested against the alternative one-tailed hypothesis that the Mantel correlation under test is positive. No correction is made for multiple testing. } +} + +\references{ +Campbell, V., P. Legendre and F.-J. Lapointe. 2009. Assessing congruence among ultrametric distance matrices. Journal of Classification (In press). + +Campbell, V., P. Legendre and F.-J. Lapointe. Performance of the congruence test among distance matrices in phylogenetic analysis. (Submitted MS). + +Friedman, M. 1937. The use of ranks to avoid the assumption of normality implicit in the analysis of variance. Journal of the American Statistical Association 32: 675-701. + +Kendall, M. G. and B. Babington Smith. 1939. The problem of m rankings. Annals of Mathematical Statistics 10: 275-287. + +Lapointe, F.-J., J. A. W. Kirsch and J. M. Hutcheon. 1999. Total evidence, consensus, and bat phylogeny: a distance-based approach. Molecular Phylogenetics and Evolution 11: 55-66. + +Legendre, P. 2008. Coefficient of concordance. In: Encyclopedia of Research Design. SAGE Publications (in press). + +Legendre, P. and F.-J. Lapointe. 2004. Assessing congruence among distance matrices: single malt Scotch whiskies revisited. Australian and New Zealand Journal of Statistics 46: 615-629. + +Legendre, P. et F.-J. Lapointe. 2005. Congruence entre matrices de distance. P. 178-181 in: Makarenkov, V., G. Cucumel et F.-J. Lapointe [eds] Comptes rendus des 12emes Rencontres de la Societe Francophone de Classification, Montreal, 30 mai - 1er juin 2005. + +Siegel, S. and N. J. Castellan, Jr. 1988. Nonparametric statistics for the behavioral sciences. 2nd edition. McGraw-Hill, New York. +} +\seealso{ \code{\link{kendall.W}}, \code{\link[ape:ape-package]{ape}} } +\author{ Pierre Legendre, Universite de Montreal } + +\examples{ + +# Examples 1 and 2: 5 genetic distance matrices computed from simulated DNA +# sequences representing 50 taxa having evolved along additive trees with +# identical evolutionary parameters (GTR+ Gamma + I). Distance matrices were +# computed from the DNA sequence matrices using a p distance corrected with the +# same parameters as those used to simulate the DNA sequences. See Campbell et +# al. (submitted) for details. + +# First example: five independent additive trees. Data provided by V. Campbell. + +data(mat5Mrand) +res.global <- CADM.global(mat5Mrand, 5, 50) + +# Second example: three partly similar trees, two independent trees. +# Data provided by V. Campbell. + +data(mat5M3ID) +res.global <- CADM.global(mat5M3ID, 5, 50) +res.post <- CADM.post(mat5M3ID, 5, 50, mantel=TRUE) + +# Third example: three matrices respectively representing Serological +# (asymmetric), DNA hybridization (asymmetric) and Anatomical (symmetric) +# distances among 9 families. Data from Lapointe et al. (1999). + +data(mat3) +res.global <- CADM.global(mat3, 3, 9, nperm=999) +res.post <- CADM.post(mat3, 3, 9, nperm=999, mantel=TRUE) +} + +\keyword{ multivariate } +\keyword{ nonparametric } -- 2.39.2