qgam/0000755000176200001440000000000014776014752011214 5ustar liggesusersqgam/tests/0000755000176200001440000000000014775740546012364 5ustar liggesusersqgam/tests/testthat/0000755000176200001440000000000014776014752014216 5ustar liggesusersqgam/tests/testthat/test-calFastTuneLearnFast.R0000644000176200001440000001040514775737263021337 0ustar liggesusers context("calFastTuneLearnFast") test_that("calFastTuneLearnFast", { set.seed(41334) par(mfrow = c(2, 2)) par(mar = c(5.1, 4.1, 1.1, 0.1)) for(ii in 1:1){ #### !!!!!!!!!! set to 1:4 to test also elfss if(ii == 1){ ### 1) 4D Gaussian example dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- y ~ s(x0)+s(x1)+s(x2)+s(x3) qus <- c(0.01, 0.5, 0.99) } if(ii == 2){ ### 2) 1D Gamma esample n <- 2000 x <- seq(-4, 4, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma <- 1 # sigma = .1+(x+4)*.5 ## sigma grows with x f <- drop(X %*% beta) tauSim <- 0.9 y <- f + rgamma(n, 3, 1)# rlf(n, 0, tau = tauSim, sig = sigma, lam)# # # rnorm(n, 0, sigma) form <- y ~ s(x, k = 30) dat <- data.frame(cbind(y, x)) names(dat) <- c("y", "x") qus <- c(0.1, 0.95, 0.99) } if( ii == 3 ){ ### 3) 3D Gamma esample n <- 2000 x <- runif(n, -4, 4); z <- runif(n, -8, 8); w <- runif(n, -4, 4) X <- cbind(1, x, x^2, z, sin(z), w^3, cos(w)) beta <- c(0, 1, 1, -1, 2, 0.1, 3) sigma <- 0.5 f <- drop(X %*% beta) dat <- f + rgamma(n, 3, 1) dat <- data.frame(cbind(dat, x, z, w)) names(dat) <- c("y", "x", "z", "w") bs <- "cr" formF <- y~s(x, k = 30, bs = bs) + s(z, k = 30, bs = bs) + s(w, k = 30, bs = bs) qus <- c(0.01, 0.5, 0.95) } if(ii == 4){ ### 1) 4D Gaussian example BUT gamlss version dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- list(y ~ s(x0)+s(x1)+s(x2)+s(x3), ~ s(x0)) qus <- c(0.01, 0.5, 0.99) } # Checking that the loss evaluated by tuneLearn is close to that evaluated # by tuneLearnFast. They can't be exactly the same, because the order with which # the losses are evaluated are different (hence different initializations) expect_error({ calibr <- list("fast" = list(), "slow" = list()) calibr[["fast"]] <- tuneLearnFast(form, data = dat, qu = qus, control = list("progress" = FALSE)) calibr[["fast_discrete"]] <- tuneLearnFast(form, data = dat, qu = qus, discrete = TRUE, control = list("progress" = FALSE)) calibr[["slow"]] <- lapply(1:length(qus), function(.kk){ tuneLearn(form, data = dat, qu = qus[.kk], lsig = calibr[["fast"]]$store[[.kk]][1, ], control = list("progress" = FALSE))}) }, NA) x <- lapply(calibr[["fast"]]$store, function(.inp) .inp[1, ]) y1 <- lapply(calibr[["fast"]]$store, function(.inp) log(.inp[2, ])) y2 <- sapply(calibr[["slow"]], function(.inp) log(.inp$loss)) plot(x[[1]], y1[[1]], col = 1, xlim = range(do.call("c", x)), ylim = range(c(do.call("c", y1), do.call("c", y2))), ylab = "log-loss", xlab = expression(log(sigma)), main = "tuneLearnFast vs tuneLearn") points(x[[2]], y1[[2]], col = 2) points(x[[3]], y1[[3]], col = 3) lines(sort(x[[1]]), y2[[1]], col = 1) lines(sort(x[[2]]), y2[[2]], col = 2) lines(sort(x[[3]]), y2[[3]], col = 3) x1 <- lapply(calibr[["fast_discrete"]]$store, function(.inp) .inp[1, ]) y1 <- lapply(calibr[["fast_discrete"]]$store, function(.inp) log(.inp[2, ])) y2 <- sapply(calibr[["slow"]], function(.inp) log(.inp$loss)) plot(x1[[1]], y1[[1]], col = 1, xlim = range(do.call("c", x)), ylim = range(c(do.call("c", y1), do.call("c", y2))), ylab = "log-loss", xlab = expression(log(sigma)), main = "tuneLearnFast_discrete vs tuneLearn") points(x1[[2]], y1[[2]], col = 2) points(x1[[3]], y1[[3]], col = 3) lines(sort(x[[1]]), y2[[1]], col = 1) lines(sort(x[[2]]), y2[[2]], col = 2) lines(sort(x[[3]]), y2[[3]], col = 3) } }) qgam/tests/testthat/test-calFastTuneLearn.R0000644000176200001440000000776414775736550020535 0ustar liggesusers context("calFastTuneLearn") test_that("calFastTuneLearn", { set.seed(414) par(mfrow = c(2, 2)) par(mar = c(5.1, 4.1, 1.1, 0.1)) for(ii in 1:1){ #### !!!!!!!!!! set to 1:4 to test also elfss if(ii == 1){ ### 1) 4D Gaussian example dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- y ~ s(x0)+s(x1)+s(x2)+s(x3) lsig <- seq(-5.5, 4, length.out = 15) qus <- c(0.01, 0.5, 0.99) } if(ii == 2){ ### 2) 1D Gamma esample n <- 2000 x <- seq(-4, 4, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma <- 1 # sigma = .1+(x+4)*.5 ## sigma grows with x f <- drop(X %*% beta) tauSim <- 0.9 y <- f + rgamma(n, 3, 1)# rlf(n, 0, tau = tauSim, sig = sigma, lam)# # # rnorm(n, 0, sigma) form <- y ~ s(x, k = 30) dat <- data.frame(cbind(y, x)) names(dat) <- c("y", "x") lsig <- seq(-5, 3, length.out = 15) qus <- c(0.01, 0.5, 0.95) } if( ii == 3 ){ ### 3) 3D Gamma esample n <- 2000 x <- runif(n, -4, 4); z <- runif(n, -8, 8); w <- runif(n, -4, 4) X <- cbind(1, x, x^2, z, sin(z), w^3, cos(w)) beta <- c(0, 1, 1, -1, 2, 0.1, 3) sigma <- 0.5 f <- drop(X %*% beta) dat <- f + rgamma(n, 3, 1) dat <- data.frame(cbind(dat, x, z, w)) names(dat) <- c("y", "x", "z", "w") bs <- "cr" formF <- y~s(x, k = 30, bs = bs) + s(z, k = 30, bs = bs) + s(w, k = 30, bs = bs) lsig <- seq(-3, 4, length.out = 15) qus <- c(0.01, 0.5, 0.95) } if(ii == 4){ ### 1) 4D Gaussian example BUT gamlss version dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- list(y ~ s(x0)+s(x1)+s(x2)+s(x3), ~ s(x0)) lsig <- seq(-5.5, 4, length.out = 15) qus <- c(0.01, 0.5, 0.99) } expect_error({ calibr <- list("calFast" = list(), "cal" = list()) for(met in c("calFast", "cal")){ calibr[[met]] <- lapply(qus, function(.q){ tuneLearn(form, data = dat, lsig = lsig, qu = .q, control = list("loss" = met, "progress" = "none"))}) } } , NA) tmp <- cbind(sapply(calibr[["calFast"]], "[[", "loss"), sapply(calibr[["cal"]], "[[", "loss")) matplot(lsig, log(tmp), type = 'l', lty = c(1:3, 1:3), col = c(1, 1, 1, 2, 2, 2), ylab = "log-loss", xlab = expression(log(sigma)), main = "Cal vs Cal Fast") legend("topright", col = 1:2, legend = c("calFast", "cal"), lty = 1) legend("top", lty = 1:3, legend = qus) expect_error({ withCallingHandlers( calibr[["calFast_discrete"]] <- lapply(qus, function(.q){ tuneLearn(form, data = dat, lsig = lsig, discrete = TRUE, qu = .q, control = list("loss" = "calFast", "progress" = "none"))}), warning = function(w) { if (endsWith(conditionMessage(w), "algorithm did not converge")) invokeRestart("muffleWarning") }) } , NA) tmp <- cbind(sapply(calibr[["calFast"]], "[[", "loss"), sapply(calibr[["calFast_discrete"]], "[[", "loss")) matplot(lsig, log(tmp), type = 'l', lty = c(1:3, 1:3), col = c(1, 1, 1, 2, 2, 2), ylab = "log-loss", xlab = expression(log(sigma)), main = "CalFast vs CalFast Discrete") legend("topright", col = 1:2, legend = c("calFast", "calFast discr"), lty = 1) legend("top", lty = 1:3, legend = qus) } }) qgam/tests/testthat/test-tuneLearnFast.R0000644000176200001440000000473114775740343020077 0ustar liggesuserscontext("tuneLearnFast") # test_that("tuneLearnFast_gamlss", { # # #set.seed(651) # n <- 1000 # x <- seq(-4, 3, length.out = n) # X <- cbind(1, x, x^2) # beta <- c(0, 1, 1) # sigma = 1.2 + sin(2*x) # f <- drop(X %*% beta) # dat <- f + rnorm(n, 0, sigma) # dataf <- data.frame(cbind(dat, x)) # names(dataf) <- c("y", "x") # form <- list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")) # # QU <- 0.9 # lossType <- rep(c("calFast", "cal", "pin"), each = 2) # # par(mfrow = c(3, 2)) # par(mar = c(5.1, 4.1, 0.1, 2.1)) # for(ii in 1:6){ #c(1, 3, 5)){ # Set to 1:6 if you want to test all calibration methods # # expect_error({ # Actually we expect NO error!! # tun <- tuneLearnFast(form, data = dataf, qu = QU, # control = list("loss" = lossType[ii], "progress" = FALSE, "K" = 20), # multicore = ((ii %% 2) == 0), ncores = 2) # # fit <- qgam(form, qu = QU, lsig = tun$lsig, data = dataf) # # ylb <- if((ii %% 2) == 0) { paste(lossType[ii], "multicore") } else { lossType[ii] } # plot(x, dat, col = "grey", ylab = ylb) # tmp <- predict(fit, se = TRUE) # lines(x, tmp$fit) # lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) # lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) # # plot(sort(tun$store[[1]][1, ]), tun$store[[1]][2, ][order(tun$store[[1]][1, ])], type = "b", # ylab = "Calibration loss", xlab = expression(log(sigma))) # } # , NA) # # } # # }) # # # # # test_that("tuneLearnFast_egam", { # # set.seed(211) # dataf <- gamSim(1,n=400,dist="normal",scale=2,verbose=FALSE) # form <- y~s(x0)+s(x1)+s(x2)+s(x3) # # QU <- 0.9 # lossType <- rep(c("calFast", "cal", "pin"), each = 2) # # #par(mfrow = c(3, 2)) # for(ii in 1:2){ # # expect_error({ # Actually we expect NO error!! # tun <- tuneLearnFast(form, data = dataf, qu = QU, # control = list("loss" = lossType[ii], "K" = 20, "progress" = FALSE), # multicore = ((ii %% 2) == 0), ncores = 2) # # fit <- qgam(form, qu = QU, lsig = tun$lsig, data = dataf) # # ylb <- if((ii %% 2) == 0) { paste(lossType[ii], "multicore") } else { lossType[ii] } # plot(fit, select = 3, ylab = ylb) # # plot(sort(tun$store[[1]][1, ]), tun$store[[1]][2, ][order(tun$store[[1]][1, ])], type = "b", # ylab = "Calibration loss", xlab = expression(log(sigma))) # } # , NA) # # } # # }) qgam/tests/testthat/test-check_qgam.R0000644000176200001440000000166214775737512017412 0ustar liggesuserscontext("check_qgam") # par(mfrow = c(1, 1)) # test_that("check_qgam_gamlss", { # # #set.seed(857758) # n <- 1000 # x <- seq(-4, 3, length.out = n) # X <- cbind(1, x, x^2) # beta <- c(0, 1, 1) # sigma = 1.2 + sin(2*x) # f <- drop(X %*% beta) # dat <- f + rnorm(n, 0, sigma) # dataf <- data.frame(cbind(dat, x)) # names(dataf) <- c("y", "x") # # expect_error({ # # fit <- qgam(list(y~s(x, k = 15, bs = "cr"), ~ s(x, k = 15, bs = "cr")), data=dataf, err = 0.1, qu = 0.8, # control = list("progress" = FALSE)) # invisible(capture.output( check(fit) )) # # } , NA) # # }) # # # test_that("check_qgam_egam", { # # set.seed(57576) # dat <- gamSim(1,n=1000,dist="normal",scale=2, verbose = FALSE) # # expect_error({ # # fit <- qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.9, control = list("progress" = FALSE)) # invisible(capture.output( check(fit) )) # # } , NA) # # })qgam/tests/testthat/test-qgam_discrete.R0000644000176200001440000000741214775737733020143 0ustar liggesusers context("qgam_discrete") test_that("qgam_discrete", { set.seed(414) par(mfrow = c(2, 2)) par(mar = c(5.1, 4.1, 1.1, 0.1)) for(ii in 1:1){ #### !!!!!!!!!! set to 1:4 to test also elfss if(ii == 1){ ### 1) 4D Gaussian example dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- y ~ s(x0)+s(x1)+s(x2)+s(x3) lsig <- seq(-5.5, 4, length.out = 15) qus <- c(0.01, 0.5, 0.99) } if(ii == 2){ ### 2) 1D Gamma esample n <- 2000 x <- seq(-4, 4, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma <- 1 # sigma = .1+(x+4)*.5 ## sigma grows with x f <- drop(X %*% beta) tauSim <- 0.9 y <- f + rgamma(n, 3, 1)# rlf(n, 0, tau = tauSim, sig = sigma, lam)# # # rnorm(n, 0, sigma) form <- y ~ s(x, k = 30) dat <- data.frame(cbind(y, x)) names(dat) <- c("y", "x") qus <- c(0.01, 0.5, 0.95) } if( ii == 3 ){ ### 3) 3D Gamma esample n <- 2000 x <- runif(n, -4, 4); z <- runif(n, -8, 8); w <- runif(n, -4, 4) X <- cbind(1, x, x^2, z, sin(z), w^3, cos(w)) beta <- c(0, 1, 1, -1, 2, 0.1, 3) sigma <- 0.5 f <- drop(X %*% beta) dat <- f + rgamma(n, 3, 1) dat <- data.frame(cbind(dat, x, z, w)) names(dat) <- c("y", "x", "z", "w") bs <- "cr" formF <- y~s(x, k = 30, bs = bs) + s(z, k = 30, bs = bs) + s(w, k = 30, bs = bs) qus <- c(0.01, 0.5, 0.95) } if(ii == 4){ ### 1) 4D Gaussian example BUT gamlss version dat <- gamSim(1, n=2000, dist="normal", scale=2, verbose=FALSE) form <- list(y ~ s(x0)+s(x1)+s(x2)+s(x3), ~ s(x0)) qus <- c(0.01, 0.5, 0.99) } expect_error({ calibr <- list("standard" = list(), "discrete" = list()) for(met in c("standard", "discrete")){ calibr[[met]] <- lapply(qus, function(.q){ qgam(form, data = dat, discrete = (met == "discrete"), qu = .q, control = list("progress" = "none"))}) } } , NA) tmp <- cbind(sapply(calibr[["standard"]], "[[", "fitted.values"), sapply(calibr[["discrete"]], "[[", "fitted.values")) ylim <- range(tmp) plot(tmp[ , 1], tmp[ , 3+1], main = paste0("[",ii,"] qgam vs qgam discrete"), xlab = "standard fit", ylab = "discrete fit") abline(0, 1, col = 2) for(kk in 2:3){ lines(tmp[ , 1], tmp[ , 3+1], col = kk) } legend("topleft", col = 1:3, lty = 1, legend = qus) expect_error({ withCallingHandlers( { calibr <- list("standard" = list(), "discrete" = list()) for(met in c("standard", "discrete")){ calibr[[met]] <- mqgam(form, data = dat, discrete = (met == "discrete"), qu = qus, control = list("progress" = "none")) } }, warning = function(w) { if (endsWith(conditionMessage(w), "algorithm did not converge") || endsWith(conditionMessage(w), "check results carefully")) invokeRestart("muffleWarning") }) }, NA) tmp <- cbind(sapply(calibr[["standard"]]$fit, "[[", "fitted.values"), sapply(calibr[["discrete"]]$fit, "[[", "fitted.values")) ylim <- range(tmp) plot(tmp[ , 1], tmp[ , 3+1], main = paste0("[",ii,"] mqgam vs mqgam discrete"), xlab = "standard fit", ylab = "discrete fit") abline(0, 1, col = 2) for(kk in 2:3){ lines(tmp[ , 1], tmp[ , 3+1], col = kk) } legend("topleft", col = 1:3, lty = 1, legend = qus) } }) qgam/tests/testthat/test-tuneLearn.R0000644000176200001440000000443514447007200017242 0ustar liggesuserscontext("tuneLearn") # test_that("tuneLearn_gamlss", { # # #set.seed(651) # n <- 1000 # x <- seq(-4, 3, length.out = n) # X <- cbind(1, x, x^2) # beta <- c(0, 1, 1) # sigma = 1.2 + sin(2*x) # f <- drop(X %*% beta) # dat <- f + rnorm(n, 0, sigma) # dataf <- data.frame(cbind(dat, x)) # names(dataf) <- c("y", "x") # form <- list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")) # # QU <- 0.9 # lossType <- rep(c("calFast", "cal", "pin"), each = 2) # # par(mfrow = c(3, 2)) # par(mar = c(5.1, 4.1, 0.1, 2.1)) # for(ii in c(1, 3, 5)){ # Set to 1:6 if you want to test all calibration methods # # expect_error({ # Actually we expect NO error!! # tun <- tuneLearn(form, data = dataf, qu = QU, # lsig = seq(-4, 5, length.out = 15), # control = list("loss" = lossType[ii], "progress" = "none", "K" = 20), # multicore = ((ii %% 2) == 0), ncores = 2) # # fit <- qgam(form, qu = QU, lsig = tun$lsig, data = dataf) # # ylb <- if((ii %% 2) == 0) { paste(lossType[ii], "multicore") } else { lossType[ii] } # plot(x, dat, col = "grey", ylab = ylb) # tmp <- predict(fit, se = TRUE) # lines(x, tmp$fit) # lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) # lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) # # check(tun, sel = 1) # } # , NA) # # } # # }) # # # # test_that("tuneLearn_egam", { # # set.seed(211) # dataf <- gamSim(1,n=400,dist="normal",scale=2,verbose=FALSE) # form <- y~s(x0)+s(x1)+s(x2)+s(x3) # # QU <- 0.9 # lossType <- rep(c("calFast", "cal", "pin"), each = 2) # # #par(mfrow = c(3, 2)) # for(ii in 1:2){ # # expect_error({ # Actually we expect NO error!! # tun <- tuneLearn(form, data = dataf, qu = QU, # lsig = seq(-4, 2, length.out = 20), # control = list("loss" = lossType[ii], "progress" = "none", "K" = 20), # multicore = ((ii %% 2) == 0), ncores = 2) # # fit <- qgam(form, qu = QU, lsig = tun$lsig, data = dataf) # # ylb <- if((ii %% 2) == 0) { paste(lossType[ii], "multicore") } else { lossType[ii] } # plot(fit, select = 3, ylab = ylb) # check(tun, sel = 1) # } # , NA) # # } # # }) qgam/tests/testthat.R0000644000176200001440000000006413330600076014322 0ustar liggesuserslibrary(testthat) library(qgam) test_check("qgam") qgam/MD50000644000176200001440000001025214776014752011524 0ustar liggesusers48135c841ddc1ccf8bb39850524f3cb5 *DESCRIPTION 62565de19fc0d028e0317e5350e00d09 *NAMESPACE 1bb4fd802155c44bff5f37478631ee09 *R/I_adTest.R 10a9769b67dae844e019d302ea114bd2 *R/I_allVars1.R eab118b6d57da731523816f49be7b5f9 *R/I_biasedCov.R 69589ae235718c6ceb91fcc42780224c *R/I_brent.R cffd53392fb659ddddc0c001277b73a6 *R/I_checkLoss.R b90bf02e85b0cdfb2ec92f764f167c5c *R/I_cleanData.R 42e973a3c1b72fcc000d79d259cb11b2 *R/I_clusterExport.R 934f96c56bfd807400d03eeacb249b5c *R/I_clusterSetUp.R f6a05321a7ebe8362b920e338cd1fbbf *R/I_colVars.R 8dfe4abdb20efe1bac8ac191ec0fe22a *R/I_ctrlSetup.R 0cf8eacda9c98b90ee0dac41f092153a *R/I_egamFit.R 87c4e61fdfe884d648a8a1195d021715 *R/I_fitShash.R 9e7db1bc9a805fb3381095e30528f5d3 *R/I_getErrParam.R bb301619b732c787e5252a5ac3ba59df *R/I_getPenMatrix.R 00d5ed913f55fc93ffe6bb5c5137d642 *R/I_init_gauss_fit.R aca82cf562defd8336a74ddc0d7cf77e *R/I_invert_psdef_matrix.R d706680e21dc56dede19a69e02a0eed9 *R/I_kcheck.R 8b7299e55fb5cc884f377157ac3d7a5e *R/I_llkGrads.R d3cae12f9ec0a4ee63647e4f5c1ffcf2 *R/I_llkShash.R 416a1c4248c983e3713b2cc4999abc5a *R/I_objFunLearnFast.R a24cfcdd0e498bb10591bfc374ae2a33 *R/I_prepBootObj.R b76ae53a8bf1857a52768dcfe9fb95ab *R/I_qqVett.R e12acd05fa603b6600308c7e55caddd1 *R/I_sandwichLoss.R 8554d161ce299dda267ad5737f3667a9 *R/I_shashCDF.R e72fd1adfb9224f61fce8dc3bf095b15 *R/I_shashMode.R 21474e13359227da5829c65b0d6fd84c *R/I_shashQf.R 06d9cb991a41a4b91743d58f58f46944 *R/I_should_we_use_discrete.R 5280b70f028f4410ed638a4d7a017885 *R/I_tuneLearnBootstrapping.R 2600ab58db8998f1ece6c932d54c01c1 *R/I_tuneLearnFullFits.R a2c458cb8378630c6fa47bbb1cbca2c6 *R/check_learn.R 9780935e81df2dde1459b326c20759c4 *R/check_learnFast.R 2bcd12c12d72e6cd2aa498d901f1b712 *R/check_qgam.R 9170dbc23b58809c0dfddbfd9a097d42 *R/cqcheck.R c5fdf29f19d1e2e7d20c4c26b9461778 *R/cqcheckI.R 113ef0bb55779bc0dad1b72230e1808f *R/elf.R c87b1e9be2e2e288ca26c016059234f2 *R/elflss.R f547e2d10e597a0ff879f6c1e0341ee0 *R/generic_functions.R cdba8c823b13f9c39649d046c9176edf *R/log1pexp.R 72388c1f21ce2ef450b53e59901012f3 *R/mqgam.R ffe19724e6cd7ee829b5b53a4167694a *R/pinLoss.R 6d95696d368c53310cce2c180274a825 *R/qdo.R c9d6efe3ad3574c83344861f4b12898a *R/qgam.R 194e514348dde289289beee4e6fc15b3 *R/sigmoid.R a33cd2e8cc20458ed5c7e5e7d920d28d *R/tuneLearn.R e9d601093c65f96b5ab40735b87c02aa *R/tuneLearnFast.R 7080893e02c49cd296d4424b9be55069 *build/partial.rdb 650d9236b10dc1e8edc793e5ec91190b *build/vignette.rds 715ad9f122c07d0e336666db699164e6 *data/AUDem.RData f3630529abbae44b0137d9b8de2011d0 *data/UKload.RData ca19853f49f913c28d4964c22fc24dfc *inst/CITATION 9f95bd2a2033a57dd99df9cf4b834570 *inst/doc/qgam.R d029091cfb17cbc200fb63f1066c2d3f *inst/doc/qgam.Rmd 8a0e698839767f8c6ef288513526df10 *inst/doc/qgam.html f638e6e80aa1dd498ae5e202cca2c80f *man/AUDem.Rd fa7d3525b4c32b5ce457aeb73a91e050 *man/UKload.Rd ee4e45bf588595552fd228617247a234 *man/check.Rd bb7f4d6f23c42d3914f4be4e0d38c096 *man/check.learn.Rd 45968520c2a1c51288796133b1e58075 *man/check.learnFast.Rd 012919a09c0ce2a5c0ef3a2480aff38a *man/check.qgam.Rd b2590cf2c32f3fed50ea200e2dfd949f *man/cqcheck.Rd 27f11bf9968f7411167eb715a247fb47 *man/cqcheckI.Rd 1cfa60bfde6c28a65e6015f1d9bccaa3 *man/elf.Rd f40e039cd39617aedcc3ab2e85d33943 *man/elflss.Rd 1ccc4e54fed57b2b5af0e7138ed35eb2 *man/log1pexp.Rd 1f882b6f5efa0f6d442baca46bdc5cc3 *man/mqgam.Rd c475afd3eb1359ecfd545c9d0abb8fcf *man/pinLoss.Rd ccfeaf51cfa49d6c909ee3b81dc59fb7 *man/qdo.Rd e25d63c96a337948e6c06bc5539fd69a *man/qgam.Rd 88b5404cf89e1157b2fac23ab53547c5 *man/sigmoid.Rd 7ad20f713a0b6ccb474ad0cc3576be8d *man/tuneLearn.Rd d09ecaebbdb019755b525bd3ba63172f *man/tuneLearnFast.Rd 0a5018d9bb97f2e613d024f0354d3a49 *src/init.c 721e37d3b68489ad722cc09933704e3b *src/mgcv_wrap.c b6338848e143fa04e8f59da1f60a170e *tests/testthat.R 0c1834a70714a0f4085aee2e89232b84 *tests/testthat/test-calFastTuneLearn.R 69cb22cc7f3f9f76bfd723fb5947ca1b *tests/testthat/test-calFastTuneLearnFast.R 5483bf3f530b147c9f3925bbebffc104 *tests/testthat/test-check_qgam.R 37ec08f4a8564270374919a2c3a60c70 *tests/testthat/test-qgam_discrete.R ec2c323e234f635eca5ef85584356ff6 *tests/testthat/test-tuneLearn.R b9f082d7e412e99828958e9833de8812 *tests/testthat/test-tuneLearnFast.R d029091cfb17cbc200fb63f1066c2d3f *vignettes/qgam.Rmd qgam/R/0000755000176200001440000000000014775742645011425 5ustar liggesusersqgam/R/I_checkLoss.R0000644000176200001440000000074713033231203013707 0ustar liggesusers####### Check loss function .checkloss <- function(y, mu, qu, add = TRUE){ tau <- 1 - qu d <- y - mu l <- d * 0 l[d < 0] <- - tau*d[d<0] l[d > 0] <- - (tau-1)*d[d>0] if( add ) l <- sum(l) return( l ) } #### Vettorize check Loss function .checklossVett <- function(y, mu, p){ n <- length( p ) out <- sapply(1:n, function(ii){ return( .checkloss(y, mu[ , ii], p[ii]) ) }) return( out ) }qgam/R/qdo.R0000644000176200001440000000411513462143642012314 0ustar liggesusers########################## #' Manipulating the output of \code{mqgam} #' #' @description Contrary to \code{qgam}, \code{mqgam} does not output a standard \code{gamObject}, hence #' methods such as \code{predict.gam} or \code{plot.gam} cannot be used directly. \code{qdo} #' provides a simple wrapper for such methods. #' #' @param obj the output of a \code{mqgam} call. #' @param qu A vector whose elements must be in (0, 1). Each element indicates a quantile of interest, #' which should be an element of \code{names(obj$fit)}. If left to \code{NULL} the function #' \code{fun} will be applied to each of the quantile fits in \code{obj}. #' @param fun The method or function that we want to use on the \code{gamObject} corresponding to quantile \code{qu}. For instance #' \code{predict}, \code{plot} or \code{summary}. By default this is the identity function (\code{I}), which #' means that the fitted model for quantile \code{qu} is returned. #' @param ... Additional arguments to be passed to \code{fun}. #' @return A list where the i-th entry is the output of \code{fun} (whatever that is) corresponding to quantile \code{qu[i]}. #' @author Matteo Fasiolo . #' @examples #' library(qgam); library(MASS) #' #' quSeq <- c(0.4, 0.6) #' set.seed(737) #' fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) #' #' qdo(fit, 0.4, summary) #' invisible(qdo(fit, 0.4, plot, pages = 1)) #' #' # Return the object for qu = 0.6 and then plot it #' tmp <- qdo(fit, 0.6) #' plot(tmp) #' qdo <- function(obj, qu=NULL, fun=I, ...){ if( is.null(qu) ) { qu <- names(obj$fit) } if( length(qu)>1 ){ out <- lapply(qu, function(.q) qdo(obj, .q, fun, ...)) } else { if( !(qu %in% names(obj[["fit"]])) ) stop("qu is not in obj[[\"qu\"]].") tmpObj <- obj[["fit"]][[ which(names(obj[["fit"]]) == qu) ]] tmpObj[["model"]] <- obj[["model"]] tmpObj[["smooth"]] <- obj[["smooth"]] tmpObj[["call"]][["data"]] <- obj[["data"]] out <- fun(tmpObj, ...) } return( out ) } qgam/R/tuneLearn.R0000644000176200001440000002443314775742517013511 0ustar liggesusers########################## #' Tuning the learning rate for Gibbs posterior #' #' @description The learning rate (sigma) of the Gibbs posterior is tuned either by calibrating the credible intervals for the fitted #' curve, or by minimizing the pinball loss on out-of-sample data. This is done by bootrapping or by k-fold cross-validation. #' Here the calibration loss function is evaluated on a grid of values provided by the user. #' #' @param form A GAM formula, or a list of formulae. See ?mgcv::gam details. #' @param data A data frame or list containing the model response variable and covariates required by the formula. #' By default the variables are taken from environment(formula): typically the environment from which gam is called. #' @param lsig A vector of value of the log learning rate (log(sigma)) over which the calibration loss function is evaluated. #' @param qu The quantile of interest. Should be in (0, 1). #' @param discrete If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details. #' @param err An upper bound on the error of the estimated quantile curve. Should be in (0, 1). #' Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). #' The old default was \code{err=0.05}. #' @param multicore If TRUE the calibration will happen in parallel. #' @param ncores Number of cores used. Relevant if \code{multicore == TRUE}. #' @param cluster An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, #' which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster. #' @param paropts a list of additional options passed into the foreach function when parallel computation is enabled. #' This is important if (for example) your code relies on external data or packages: #' use the .export and .packages arguments to supply them so that all cluster nodes #' have the correct environment set up for computing. #' @param control A list of control parameters for \code{tuneLearn} with entries: \itemize{ #' \item{\code{loss} = loss function use to tune log(sigma). If \code{loss=="cal"} is chosen, then log(sigma) is chosen so that #' credible intervals for the fitted curve are calibrated. See Fasiolo et al. (2017) for details. #' If \code{loss=="pin"} then log(sigma) approximately minimizes the pinball loss on the out-of-sample #' data.} #' \item{\code{sam} = sampling scheme use: \code{sam=="boot"} corresponds to bootstrapping and \code{sam=="kfold"} to k-fold #' cross-validation. The second option can be used only if \code{ctrl$loss=="pin"}.} #' \item{\code{K} = if \code{sam=="boot"} this is the number of boostrap datasets, while if \code{sam=="kfold"} this is the #' number of folds. By default \code{K=50}.} #' \item{\code{b} = offset parameter used by the mgcv::gauslss. By default \code{b=0}.} #' \item{\code{vtype} = type of variance estimator used to standardize the deviation from the main fit in the calibration. #' If set to \code{"m"} the variance estimate obtained by the full data fit is used, if set to \code{"b"} #' than the variance estimated produced by the bootstrap fits are used. By default \code{vtype="m"}.} #' \item{\code{epsB} = positive tolerance used to assess convergence when fitting the regression coefficients on bootstrap data. #' In particular, if \code{|dev-dev_old|/(|dev|+0.1). #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @examples #' library(qgam); library(MASS) #' #' # Calibrate learning rate on a grid #' set.seed(41444) #' sigSeq <- seq(1.5, 5, length.out = 10) #' closs <- tuneLearn(form = accel~s(times,k=20,bs="ad"), #' data = mcycle, #' lsig = sigSeq, #' qu = 0.5) #' #' plot(sigSeq, closs$loss, type = "b", ylab = "Calibration Loss", xlab = "log(sigma)") #' #' # Pick best log-sigma #' best <- sigSeq[ which.min(closs$loss) ] #' abline(v = best, lty = 2) #' #' # Fit using the best sigma #' fit <- qgam(accel~s(times,k=20,bs="ad"), data = mcycle, qu = 0.5, lsig = best) #' summary(fit) #' #' pred <- predict(fit, se=TRUE) #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", #' ylim = c(-150, 80)) #' lines(mcycle$times, pred$fit, lwd = 1) #' lines(mcycle$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) #' lines(mcycle$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) #' tuneLearn <- function(form, data, lsig, qu, discrete = FALSE, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL) { if( length(qu) > 1 ) stop("length(qu) > 1, but this method works only for scalar qu") discrete <- .should_we_use_discrete(form = form, discrete = discrete) # Removing all NAs, unused variables and factor levels from data data <- .cleanData(.dat = data, .form = form, .drop = argGam$drop.unused.levels) lsig <- sort( lsig ) # Setting up control parameter ctrl <- list( "loss" = "calFast", "sam" = "boot", "K" = 50, "b" = 0, "vtype" = "m", "epsB" = 1e-5, "verbose" = FALSE, "link" = "identity", "progress" = ifelse(multicore, "none", "text") ) # Checking if the control list contains unknown names. Entries in "control" substitute those in "ctrl" ctrl <- .ctrlSetup(innerCtrl = ctrl, outerCtrl = control) if( ctrl$progress == FALSE ) { ctrl$progress <- "none" } if( !(ctrl$vtype%in%c("m", "b")) ) stop("control$vtype should be either \"m\" or \"b\" ") if( !(ctrl$loss%in%c("calFast", "cal", "pin")) ) stop("control$loss should be either \"cal\", \"pin\" or \"calFast\" ") if( !(ctrl$sam%in%c("boot", "kfold")) ) stop("control$sam should be either \"boot\" or \"kfold\" ") if( (ctrl$loss=="cal") && (ctrl$sam=="kfold") ) stop("You can't use control$sam == \"kfold\" when ctrl$loss==\"cal\" ") if(discrete && ctrl$loss != "calFast"){ stop("discrete = TRUE can be used only with control$loss != \"calFast\"") } if( length(argGam$sp) && ctrl$loss != c("calFast") ){ stop("Cannot fix smoothing parameters unless control$loss == \"calFast\".") } n <- nrow(data) nt <- length(lsig) tmp <- ctrl$init_qgam if( is.null(tmp) ){ tmp <- .init_gauss_fit(form = form, data = data, ctrl = ctrl, argGam = argGam, qu = qu, discrete = discrete) } gausFit <- tmp$gausFit formL <- tmp$formL varHat <- tmp$varHat initM <- tmp$initM[[1]] # Get loss smoothness if( is.null(err) ){ err <- .getErrParam(qu = qu, gFit = gausFit, varHat = varHat) } # For each value of 'lsig' fit on full data main <- .tuneLearnFullFits(lsig = lsig, form = formL, fam = "elf", qu = qu, err = err, ctrl = ctrl, data = data, discrete = discrete, argGam = argGam, gausFit = gausFit, varHat = varHat, initM = initM) # Get score for each value of 'lsig' outLoss <- if( ctrl$loss == "calFast" ){ # Fast calibration (loss already calculated) OR ... sapply(main[["store"]], "[[", "loss") } else { # ... bootstrapping or cross-validation .tuneLearnBootstrapping(lsig = lsig, form = formL, fam = "elf", qu = qu, ctrl = ctrl, data = data, store = main[["store"]], pMat = main[["pMat"]], gausFit = gausFit, argGam = argGam, multicore = multicore, cluster = cluster, ncores = ncores, paropts = paropts) } names( outLoss ) <- lsig # convProb indicates whether there have been convergence problems during smoothing parameter estimation convProb <- sapply(main[["store"]], "[[", "convProb") names(convProb) <- lsig out <- list("lsig" = lsig[which.min(outLoss)], "loss" = outLoss, "edf" = main[["edfStore"]], "convProb" = convProb) attr(out, "class") <- "learn" return( out ) } qgam/R/sigmoid.R0000644000176200001440000000271113151257162013162 0ustar liggesusers########################## #' Sigmoid function and its derivatives #' #' @description Calculates the sigmoid function and its derivatives. #' @param y a numeric vector. #' @param deriv if \code{TRUE} alse the first three derivatives of the sigmoid function will be computed. #' @return If \code{deriv==FALSE}, it returns a numeric vector equal to \code{1/(1+exp(-x))}. If #' \code{deriv==TRUE} it returns a list where the slot \code{$D0} contains \code{1/(1+exp(-x))}, #' while \code{$D1}, \code{$D2} and \code{$D3} contain its first three derivatives. #' @author Matteo Fasiolo . #' @examples #' library(qgam) #' set.seed(90) #' h <- 1e-6 #' p <- rnorm(1e4, 0, 1e6) #' sigmoid(p[1:50]) - 1/(1+exp(-p[1:50])) #' #' ##### Testing sigmoid derivatives #' e1 <- abs((sigmoid(p+h) - sigmoid(p-h)) / (2*h) - sigmoid(p, TRUE)[["D1"]]) / (2*h) #' e2 <- abs((sigmoid(p+h, TRUE)$D1 - sigmoid(p-h, TRUE)$D1) / #' (2*h) - sigmoid(p, TRUE)[["D2"]]) / (2*h) #' e3 <- abs((sigmoid(p+h, TRUE)$D2 - sigmoid(p-h, TRUE)$D2) / #' (2*h) - sigmoid(p, TRUE)[["D3"]]) / (2*h) #' #' if( any(c(e1, e2, e3) > 1) ) stop("Sigmoid derivatives are not estimated accurately") #' #' sigmoid <- function(y, deriv = FALSE) { l0 <- plogis(y, 0, 1) if( deriv ){ l1 <- l0 * (1-l0) l2 <- l1 - 2*l1*l0 l3 <- l2 - 2*l2*l0 - 2*l1*l1 out <- list("D0" = l0, "D1" = l1, "D2" = l2, "D3" = l3) return( out ) } else { return( l0 ) } }qgam/R/I_invert_psdef_matrix.R0000644000176200001440000000056614533601630016057 0ustar liggesusers# Function to invert positive definite matrix of rank <= r .invert_psdef_matrix <- function(S, r){ d <- diag(S)^(-0.5) D <- diag(d, ncol = length(d)) S <- D %*% S %*% D eS <- eigen(S, symmetric = TRUE) r <- min(sum(eS$values > max(eS$values) * 1e-6), r) QiT <- (t(eS$vectors[ , 1:r, drop = FALSE]) / sqrt(eS$values[1:r])) %*% D return( crossprod(QiT) ) }qgam/R/check_learn.R0000644000176200001440000000500314775742413013775 0ustar liggesusers########################## #' Visual checks for the output of tuneLearn() #' #' @description Provides some visual plots showing how the calibration criterion and the effective degrees of #' freedom of each smooth component vary with the learning rate. #' #' @param obj the output of a call to \code{tuneLearn}. #' @param sel this function produces two plots, set this parameter to 1 to plot only the first, #' to 2 to plot only the second or leave it to 1:2 to plot both. #' @param ... currently not used, here only for compatibility reasons. #' @return It produces several plots. #' @details The first plot shows how the calibrations loss, which we are trying to minimize, varies with the #' log learning rate. This function should look quite smooth, if it doesn't then try to increase #' \code{err} or \code{control$K} (the number of bootstrap samples) in the original call to #' \code{tuneLearn}. The second plot shows how the effective degrees of freedom of each smooth term #' vary with log(sigma). Generally as log(sigma) increases the complexity of the fit decreases, hence #' the slope is negative. #' @author Matteo Fasiolo . #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @examples #' library(qgam) #' set.seed(525) #' dat <- gamSim(1, n=200) #' b <- tuneLearn(lsig = seq(-0.5, 1, length.out = 10), #' y~s(x0)+s(x1)+s(x2)+s(x3), #' data=dat, qu = 0.5) #' check(b) #' check.learn <- function(obj, sel = 1:2, ...) { sig <- as.numeric( names( obj$loss ) ) if( 1 %in% sel ){ # readline(prompt = "Press to see the next plot...") plot(sig, obj$loss, type = "b", ylab = "Calibration Loss", xlab = expression("log(" * sigma * ")")) rug(sig[obj$convProb], side = 3, col = 2, lwd = 2) } if( !is.null(obj$edf) && 2 %in% sel ) { # readline(prompt = "Press to see the next plot...") nc <- ncol(obj$edf) matplot(obj$edf[ , 1], obj$edf[ , 2:nc], type = 'b', ylab = "Penalized EDF", xlab = expression("log(" * sigma * ")"), pch = 1:nc, col = 1:nc) legend("topright", colnames(obj$edf)[2:nc], pch = 1:nc, col = 1:nc, bg="transparent") rug(sig[obj$convProb], side = 3, col = 2, lwd = 2) } return( invisible(NULL) ) } qgam/R/I_objFunLearnFast.R0000644000176200001440000001510114775736273015041 0ustar liggesusers####### # Internal loss function to be minimized using Brent method # .objFunLearnFast <- function(lsig, mObj, bObj, wb, initM, initB, pMat, SStuff, qu, ctrl, varHat, err, argGam, cluster, multicore, paropts) { if(ctrl$progress){ cat(".")} discrete <- !is.null(mObj$Xd) gam_name <- ifelse(discrete, "bam", "gam") co <- err * sqrt(2*pi*varHat) / (2*log(2)) mObj$family$putQu( qu ) mObj$family$putCo( co ) mObj$family$putTheta( lsig ) call_list <- c(list("G" = quote(mObj), "in.out" = initM[["in.out"]], "mustart" = initM[["mustart"]], "discrete" = discrete), argGam) # Annoyingly, initial coeffs are supplied via "coef" argument in bam() and "start" in gam() call_list[[ ifelse(discrete, "coef", "start") ]] <- initM$coefstart withCallingHandlers({ mFit <- do.call(gam_name, call_list) }, warning = function(w) { if (length(grep("Fitting terminated with step failure", conditionMessage(w))) || length(grep("Iteration limit reached without full convergence", conditionMessage(w)))) { message( paste("qu = ", qu, ", log(sigma) = ", round(lsig, 6), " : outer Newton did not converge fully.", sep = "") ) invokeRestart("muffleWarning") } }) mMU <- mFit$fit initM <- list("mustart" = mFit$fitted.values, "coefstart" = coef(mFit), "in.out" = list("sp" = if(gam_name == "bam" && !is.null(mFit$full.sp)){ mFit$full.sp } else { mFit$sp }, "scale" = 1)) # Standard deviation of fitted quantile using full data sdev <- NULL if(ctrl$loss %in% c("cal", "calFast") && ctrl$vtype == "m"){ Vp <- mFit$Vp if(discrete){ sdev <- diagXVXd(X=mObj$Xd,V=Vp,k=mObj$kd,ks=mObj$ks,ts=mObj$ts, dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop)^.5 }else{ sdev <- sqrt(rowSums((pMat %*% Vp) * pMat)) # same as sqrt(diag(pMat%*%Vp%*%t(pMat))) but (WAY) faster } } if(ctrl$loss == "calFast"){ # Fast calibration OR ... Vbias <- .biasedCov(fit = mFit, X = SStuff$XFull, EXXT = SStuff$EXXT, EXEXT = SStuff$EXEXT, mObj = mObj) outLoss <- .sandwichLoss(mFit = mFit, X = pMat, sdev = sdev, repar = mObj$hidRepara, alpha = Vbias$alpha, VSim = Vbias$V, mObj = mObj) initB <- NULL } else { # ... bootstrapping or cross-validation if(discrete){ stop("discrete = TRUE allowed only when \"control$loss == calFast\"")} ## Function to be run in parallel (over boostrapped datasets) # It has two sets of GLOBAL VARS # Set 1: bObj, pMat, wb, argGam, ctrl (Exported by tuneLearnFast) # If multicore=F, .funToApply() will look for these inside the objFun call. That's why objFun need them as arguments. # If multicore=T, .funToApply() will look for them in .GlobalEnv. That's why we export them to cluster nodes in tuneLearnFast. # Set 2: initB, initM, mMU, co, lsig, qu, sdev (Exported by .tuneLearnFast) # As before but, if multicore=T, these are exported directly by objFun because they change from one call of objFun to another. .funToApply <- function(ind) { bObj$lsp0 <- log( initM$in.out$sp ) bObj$family$putQu( qu ) bObj$family$putCo( co ) bObj$family$putTheta( lsig ) z <- init <- vector("list", length(ind)) for( ii in 1:length(ind) ){ # Creating boot weights from boot indexes kk <- ind[ ii ] .wb <- wb[[ kk ]] bObj$w <- .wb # Recycle boot initialization, but at first iteration this is NULL... .init <- if(is.null(initB[[kk]])){ list(initM$coefstart) } else { list(initB[[kk]], initM$coefstart) } # I need to get null coefficients. bObj$null.coef <- bObj$family$get.null.coef(bObj)$null.coef .fit <- .egamFit(x=bObj$X, y=bObj$y, sp=as.matrix(bObj$lsp0), Eb=bObj$Eb, UrS=bObj$UrS, offset=bObj$offset, U1=bObj$U1, Mp=bObj$Mp, family = bObj$family, weights=bObj$w, control=bObj$control, null.coef=bObj$null.coef, start=.init, needVb=(ctrl$loss == "cal" && ctrl$vtype == "b")) .init <- .betas <- .fit$coef .mu <- pMat %*% .betas if( ctrl$loss == "cal" ){ # (1) Return standardized deviations from full data fit OR ... if( ctrl$vtype == "b" ){ # (2) Use variance of bootstrap fit OR ... .Vp <- .fit$Vp .sdev <- sqrt(rowSums((pMat %*% .Vp) * pMat)) # same as sqrt(diag(pMat%*%Vp%*%t(pMat))) but (WAY) faster } else { # (2) ... variance of the main fit .sdev <- sdev } z[[ii]] <- (.mu - mMU) / .sdev } else { # (1) ... out of sample observations minus their fitted values z[[ii]] <- (bObj$y - .mu)[ !.wb ] } init[[ii]] <- .init } return( list("z" = z, "init" = init) ) } if( !is.null(cluster) ){ nc <- length(cluster) environment(.funToApply) <- .GlobalEnv clusterExport(cluster, c("initB", "initM", "mMU", "co", "lsig", "qu", "sdev"), envir = environment()) } else { nc <- 1 } # Divide work (boostrap datasets) between cluster workers nbo <- ctrl$K sched <- mapply(function(a, b) rep(a, each = b), 1:nc, c(rep(floor(nbo / nc), nc - 1), floor(nbo / nc) + nbo %% nc), SIMPLIFY = FALSE ) sched <- split(1:nbo, do.call("c", sched)) # Loop over bootstrap datasets to get standardized deviations from full data fit withCallingHandlers({ out <- llply(.data = sched, .fun = .funToApply, .parallel = multicore, .inform = ctrl[["verbose"]], .paropts = paropts#, ### ... arguments start here ) }, warning = function(w) { # There is a bug in plyr concerning a useless warning about "..." if (length(grep("... may be used in an incorrect context", conditionMessage(w)))) invokeRestart("muffleWarning") }) # Get stardardized deviations and ... .bindFun <- if( ctrl$loss == "cal" ) { "rbind" } else { "c" } z <- do.call(.bindFun, do.call(.bindFun, lapply(out, "[[", "z"))) if( ctrl$loss == "cal"){ # ... calculate KL distance OR ... vrT <- .colVars(z) outLoss <- mean(vrT + colMeans(z)^2 - log(vrT)) } else { # ... pinball loss outLoss <- .checkloss(as.vector(z), 0, qu = qu) } names(outLoss) <- lsig initB <- unlist(lapply(out, "[[", "init"), recursive=FALSE) } return( list("outLoss" = outLoss, "initM" = initM, "initB" = initB) ) } qgam/R/check_learnFast.R0000644000176200001440000000720014775742425014617 0ustar liggesusers########################## #' Visual checks for the output of tuneLearnFast() #' #' @description Provides some visual checks to verify whether the Brent optimizer used by \code{tuneLearnFast()} worked correctly. #' @param obj the output of a call to \code{tuneLearnFast}. #' @param sel integer vector determining which of the plots will be produced. For instance if \code{sel = c(1, 3)} only #' the 1st and 3rd plots are showed. No entry of \code{sel} can be bigger than one plus the number of quantiles considered #' in the original \code{tuneLearnFast()} call. That is, if we estimated the learning rate for \code{qu = c(0.1, 0.4)}, #' then \code{max(sel)} must be <= 3. #' @param ... currently not used, here only for compatibility reasons. #' @return It produces several plots. #' @details The top plot in the first page shows the bracket used to estimate log(sigma) for each quantile. #' The brackets are delimited by the crosses and the red dots are the estimates. If a dot falls very close to one of the crosses, #' that might indicate problems. The bottom plot shows, for each quantile, the value of parameter \code{err} used. Sometimes the algorithm #' needs to increase \code{err} above its user-defined value to achieve convergence. Subsequent plots show, for each quantile, the value #' of the loss function corresponding to each value of log(sigma) explored by Brent algorithm. #' @author Matteo Fasiolo . #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @examples #' library(qgam) #' set.seed(525) #' dat <- gamSim(1, n=200) #' b <- tuneLearnFast(y ~ s(x0)+s(x1)+s(x2)+s(x3), #' data = dat, qu = c(0.4, 0.5), #' control = list("tol" = 0.05)) # <- sloppy tolerance to speed-up calibration #' check(b) #' check(b, 3) # Produces only third plot #' check.learnFast <- function(obj, sel = NULL, ...) { est <- obj$store brac <- obj$ranges lsig <- obj$lsig errors <- obj$err qu <- as.numeric(names(obj$lsig)) nq <- length(qu) sel <- if(is.null(sel)){ 1:(nq+1) } else { sort(sel) } oldPar <- par(no.readonly = TRUE) if( 1%in%sel ){ layout(matrix(c(1,1,2,2), 2, 2, byrow = TRUE), heights=c(2, 1)) par(mai = c(1, 1, 0.1, 0.1)) plot(qu, lsig, ylim = range(as.vector(brac)), xlim = range(qu)+c(-1e-5,+1e-5), col = 2, ylab = expression("Log(" * sigma * ")"), xlab = "Quantile") points(qu, brac[ , 1], pch = 3) points(qu, brac[ , 2], pch = 3) points(qu, rowMeans(brac), pch = 3) for(zz in 1:nq) segments(qu[zz], mean(brac[zz, ]) - abs(diff(brac[zz, ]))/4, qu[zz], mean(brac[zz, ]) + abs(diff(brac[zz, ]))/4, col = 1) plot(qu, errors, xlab = "Quantile") par(oldPar) } if(any(sel > 1)) { selQ <- sel[sel>1] - 1 # readline(prompt = "Press to see the next plot...") pDim <- min( ceiling(sqrt(length(selQ))), 2 ) par(mfrow = c(pDim, pDim)) for( ii in selQ ) { plot(sort(est[[ii]][1, ]), est[[ii]][2, order(est[[ii]][1, ])], main = substitute(Quantile == x, list(x = round(qu[ii], 3))), ylab = "loss", xlab = expression(log(sigma)), type = 'b') abline(v = est[[ii]][1, which.min(est[[ii]][2, ])], col = 2) #if((ii %% (pDim^2) == 0) && (ii!=nq)) readline(prompt = "Press to see the next plot...") } } par(oldPar) return( invisible(NULL) ) } qgam/R/I_ctrlSetup.R0000644000176200001440000000067213033231203013753 0ustar liggesusers.ctrlSetup <- function(innerCtrl, outerCtrl, verbose = TRUE) { if(length(outerCtrl)) { namOut <- names(outerCtrl) namIn <- names(innerCtrl) if (verbose && length(noNms <- namOut[! namOut %in% namIn])) { warning("unknown names in control list: ", paste(noNms, collapse = ", "), ". They will not be used") } if(length(outerCtrl)) innerCtrl[namOut] <- outerCtrl } return(innerCtrl) }qgam/R/I_getErrParam.R0000644000176200001440000000434714447055712014225 0ustar liggesusers############## # Get "err" parameter for automatic loss smoothness selection ############## # .getErrParam <- function(qu, gFit, varHat){ # Estimated conditional mean and variance (latter could be constant) muHat <- as.matrix(gFit$fitted.values)[ , 1] # Raw residuals from Gaussian regression, normalized using estimated conditional SD r <- ( gFit$y - muHat ) / sqrt( varHat ) n <- length( r ) # Fixing dimension d to EDF of Gaussian fit. # First use anova to find degrees of freedom of parametric terms in equation for location # Then find EDF of smooth terms in equation for location. unique() needed for "adaptive" smooths anv <- anova( gFit ) d <- sum(anv$pTerms.df[!grepl("\\.1", rownames(anv$pTerms.table))]) + ("(Intercept)" %in% names(anv$p.coeff)) d <- d + sum( unique(pen.edf(gFit)[!grepl("s\\.1|te\\.1|ti\\.1|t2\\.1", names(pen.edf(gFit)))]) ) # Estimate parameters of shash density on standardized residuals parSH <- .fitShash( r )$par # Find probability p corresponding to the mode of shash density pmode <- .shashCDF(.shashMode( parSH ), parSH) err <- qu * 0 for(ii in 1:length(qu)){ quX <- qu[ii] # If quantile qu is too close to mode, lower it or increase it by 0.05 to avoid f' = 0 if( abs(quX - pmode) < 0.05 ){ quX <- pmode + sign(quX - pmode) * 0.05 quX <- max(min(quX, 0.99), 0.01) # To avoid going outside (0, 1) } # Quantile of shash at which derivatives should be estimated qhat <- .shashQf(quX, parSH) # Compure log(density) and log( abs(derivative of density) ) at quantile rqu # |Df / Dx| = |(Dlog(f) / Dx) * f| # log( |Df / Dx| ) = log( |Dlog(f) / Dx| ) + log( f ) lf0 <- .llkShash(qhat, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4])$l0 lf1 <- - .llkShash(qhat, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4], deriv = 1)$l1[1] # NB df/dx = -df/dmu lf1 <- log( abs(lf1) ) + lf0 # f / f'^2 = exp( log(f) - 2 * log(|f'|) ) but we avoid dividing by almost zero h <- (d*9 / (n*pi^4))^(1/3) * exp(lf0/3 - 2*lf1/3) # Setting err too high might be problematic, so here it can be at most 1 err[ii] <- min(h * 2 * log(2) / sqrt(2*pi), 1) } return( err ) } qgam/R/elf.R0000644000176200001440000002660514775742454012325 0ustar liggesusers########################## #' Extended log-F model with fixed scale #' #' @description The \code{elf} family implements the Extended log-F density of Fasiolo et al. (2017) and it is supposed #' to work in conjuction with the extended GAM methods of Wood et al. (2017), implemented by #' \code{mgcv}. It differs from the \code{elflss} family, because here the scale of the density (sigma, aka the learning rate) is a single scalar, #' while in \code{elflss} it can depend on the covariates. At the moment the family is mainly intended for internal use, #' use the \code{qgam} function to fit quantile GAMs based on ELF. #' #' @param theta a scalar representing the log-scale log(sigma). #' @param link the link function between the linear predictor and the quantile location. #' @param qu parameter in (0, 1) representing the chosen quantile. For instance, to fit the median choose \code{qu=0.5}. #' @param co positive constant used to determine parameter lambda of the ELF density (lambda = co / sigma). #' Can be vector valued. #' @return An object inheriting from mgcv's class \code{extended.family}. #' @details This function is meant for internal use only. #' @author Matteo Fasiolo and Simon N. Wood. #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' #' Wood, Simon N., Pya, N. and Safken, B. (2017). Smoothing parameter and model selection for #' general smooth models. Journal of the American Statistical Association. #' @examples #' library(qgam) #' set.seed(2) #' dat <- gamSim(1,n=400,dist="normal",scale=2) #' #' # Fit median using elf directly: FAST BUT NOT RECOMMENDED #' fit <- gam(y~s(x0)+s(x1)+s(x2)+s(x3), #' family = elf(co = 0.1, qu = 0.5), data = dat) #' plot(fit, scale = FALSE, pages = 1) #' #' # Using qgam: RECOMMENDED #' fit <- qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.8) #' plot(fit, scale = FALSE, pages = 1) #' #' ## (c) Simon N. Wood & Matteo Fasiolo ## 2013-2017. Released under GPL2. ## extended families for mgcv, standard components. ## family - name of family character string ## link - name of link character string ## linkfun - the link function ## linkinv - the inverse link function ## mu.eta - d mu/d eta function (derivative of inverse link wrt eta) ## note: for standard links this information is supplemented using ## function fix.family.link.extended.family with functions ## gkg where k is 2,3 or 4 giving the kth derivative of the ## link over the first derivative of the link to the power k. ## for non standard links these functions muct be supplied. ## dev.resids - function computing deviance residuals. ## Dd - function returning derivatives of deviance residuals w.r.t. mu and theta. ## aic - function computing twice - log likelihood for 2df to be added to. ## initialize - expression to be evaluated in gam.fit4 and initial.spg ## to initialize mu or eta. ## preinitialize - optional expression evaluated in estimate.gam to ## e.g. initialize theta parameters (see e.g. ocat) ## postproc - expression to evaluate in estimate.gam after fitting (see e.g. betar) ## ls - function to evaluated log saturated likelihood and derivatives w.r.t. ## phi and theta for use in RE/ML optimization. If deviance used is just -2 log ## lik. can njust return zeroes. ## validmu, valideta - functions used to test whether mu/eta are valid. ## n.theta - number of theta parameters. ## no.r.sq - optional TRUE/FALSE indicating whether r^2 can be computed for family ## ini.theta - function for initializing theta. ## putTheta, getTheta - functions for storing and retriving theta values in function ## environment. ## rd - optional function for simulating response data from fitted model. ## residuals - optional function for computing residuals. ## predict - optional function for predicting from model, called by predict.gam. ## family$data - optional list storing any family specific data for use, e.g. in predict ## function. elf <- function (theta = NULL, link = "identity", qu, co) { # Some checks if( !is.na(qu) && (findInterval(qu, c(0, 1) )!=1) ) stop("qu should be in (0, 1)") linktemp <- substitute(link) if (!is.character(linktemp)) linktemp <- deparse(linktemp) if (linktemp %in% c("log", "identity", "sqrt")) stats <- make.link(linktemp) else if (is.character(link)) { stats <- make.link(link) linktemp <- link } else { if (inherits(link, "link-glm")) { stats <- link if (!is.null(stats$name)) linktemp <- stats$name } else stop(linktemp, " link not available for elf family; available links are \"identity\", \"log\" and \"sqrt\"") } ## Theta <- NULL; n.theta <- 1 if ( !is.null(theta) ) { iniTheta <- theta ## fixed log theta supplied n.theta <- 0 ## signal that there are no theta parameters to estimate } else iniTheta <- 0 ## inital log theta value env <- new.env(parent = environment(elf)) #.GlobalEnv) ##########!!!!!!!!!!!!!!!!~######################## assign(".Theta", iniTheta, envir = env) getTheta <- function(trans=FALSE) if (trans) exp(get(".Theta")) else get(".Theta") putTheta <- function(theta) assign(".Theta", theta, envir=environment(sys.function())) assign(".qu", qu, envir = env) getQu <- function( ) get(".qu") putQu <- function(qu) assign(".qu", qu, envir=environment(sys.function())) assign(".co", co, envir = env) getCo <- function( ) get(".co") putCo <- function(co) assign(".co", co, envir=environment(sys.function())) # variance <- function(mu) exp(get(".Theta")) validmu <- function(mu) all( is.finite(mu) ) dev.resids <- function(y, mu, wt, theta=NULL) { if( is.null(theta) ) theta <- get(".Theta") tau <- get(".qu") co <- get(".co") mu <- drop(mu) sig <- exp(theta) lam <- co sig <- sig * lam / mean(lam) term <- (1 - tau)*lam*log1p(-tau) + lam*tau*log(tau) - (1 - tau)*(y - mu) + lam*log1pexp((y - mu) / lam) 2 * wt * term / sig } Dd <- function(y, mu, theta, wt, level=0) { tau <- get(".qu") co <- get(".co") mu <- drop(mu) ## derivatives of the deviance... sig <- exp(theta) lam <- co sig <- sig * lam / mean(lam) dl <- dlogis(y-mu, 0, lam) pl <- plogis(y-mu, 0, lam) r <- list() ## get the quantities needed for IRLS. ## Dmu2eta2 is deriv of D w.r.t mu twice and eta twice, ## Dmu is deriv w.r.t. mu once, etc... r$Dmu <- - 2 * wt * ( (pl - 1 + tau) / sig ) r$Dmu2 <- 2 * wt * ( dl / sig ) # r$EDmu2 <- 2 * wt * ((1-tau)*tau / (lam + 1)) / sig^2 ## exact (or estimated) expected weight #### XXX #### r$EDmu2 <- r$Dmu2 # It make more sense using the observed information everywhere if (level>0) { ## quantities needed for first derivatives der <- sigmoid((y - mu) / lam, deriv = TRUE) term <- (1 - tau)*lam*log1p(-tau) + lam*tau*log(tau) - (1 - tau)*(y - mu) + lam*log1pexp((y - mu) / lam) r$Dth <- -2 * wt * term / sig r$Dmuth <- -r$Dmu r$Dmu3 <- -(2 * wt * der$D2) / (sig * lam^2) r$Dmu2th <- -r$Dmu2 } if (level>1) { ## whole damn lot r$Dmu4 <- (2 * wt * der$D3) / (sig * lam^3) r$Dth2 <- -r$Dth r$Dmuth2 <- r$Dmu r$Dmu2th2 <- r$Dmu2 r$Dmu3th <- -r$Dmu3 } r } aic <- function(y, mu, theta=NULL, wt, dev) { if (is.null(theta)) theta <- get(".Theta") sig <- exp(theta) tau <- get(".qu") co <- get(".co") lam <- co sig <- sig * lam / mean(lam) mu <- drop(mu) term <- -(1 - tau) * (y - mu) / sig + lam * log1pexp( (y - mu) / lam ) / sig + log(lam * beta(lam * (1 - tau) / sig, tau * lam / sig)) 2 * sum(term * wt) } ls <- function(y, w, theta, scale) { tau <- get(".qu") co <- get(".co") sig <- exp(theta) lam <- co sig <- sig * lam / mean(lam) ## the log saturated likelihood function. ls <- sum(w * ( (1 - tau) * lam * log1p(-tau) / sig + lam * tau * log(tau) / sig - log(lam) - lbeta(lam * (1 - tau) / sig, lam * tau / sig) )) lsth <- sum(w * ( -(1 - tau) * log1p(-tau) - tau * log(tau) + (1 - tau) * digamma(lam * (1 - tau) / sig) + tau * digamma(lam * tau / sig) - digamma(lam / sig) ) * lam / sig) lsth2 <- -lsth - sum(w * ( (1 - tau)^2 * trigamma(lam * (1 - tau) / sig) + tau^2 * trigamma(lam * tau / sig) - trigamma(lam / sig) ) * lam^2 / sig^2) list(ls=ls, ## saturated log likelihood lsth1=lsth, ## first deriv vector w.r.t theta - last element relates to scale, if free lsth2=lsth2) ## Hessian w.r.t. theta, last row/col relates to scale, if free } initialize <- expression({ mustart <- quantile(y, family$getQu()) + y * 0 # this ---> y <--- is very bad idea }) #postproc <- expression({ ####### XXX ??? ####### # object$family$family <- # paste("elf(",round(object$family$getTheta(TRUE),3),")",sep="") #}) # rd <- function(mu,wt,scale) { ####### XXX TODO ####### # Theta <- exp(get(".Theta")) # rnbinom(mu,size=Theta,mu=mu) # } # # qf <- function(p,mu,wt,scale) { ####### XXX TODO ####### # Theta <- exp(get(".Theta")) # qnbinom(p,size=Theta,mu=mu) # } get.null.coef <- function(G,start=NULL,etastart=NULL,mustart=NULL,...) { ## Get an estimate of the coefs corresponding to maximum reasonable deviance... y <- G$y weights <- G$w nobs <- G$n ## ignore codetools warning!! ##start <- etastart <- mustart <- NULL family <- G$family eval(family$initialize) ## have to do this to ensure y numeric y <- as.numeric(y) mum <- quantile(y, get(".qu")) + 0*y etam <- family$linkfun(mum) null.coef <- qr.coef(qr(G$X), etam) null.coef[is.na(null.coef)] <- 0; ## get a suitable function scale for optimization routines null.scale <- sum(family$dev.resids(y, mum, weights))/nrow(G$X) list(null.coef=null.coef,null.scale=null.scale) } # environment(rd)<- environment(qf) <- environment(variance) <- environment(dev.resids) <- environment(ls) <- environment(aic) <- environment(Dd) <- environment(getTheta) <- environment(putTheta) <- environment(putCo) <- environment(getCo) <- environment(putQu) <- environment(getQu) <- environment(get.null.coef) <- env structure(list(family = "elf", link = linktemp, linkfun = stats$linkfun, linkinv = stats$linkinv, dev.resids = dev.resids,Dd=Dd, #variance=variance, aic = aic, mu.eta = stats$mu.eta, initialize = initialize, #postproc=postproc, ls=ls, validmu = validmu, valideta = stats$valideta, n.theta=n.theta, ini.theta = iniTheta, putTheta=putTheta,getTheta=getTheta, putQu=putQu, getQu=getQu, putCo=putCo,getCo=getCo, get.null.coef=get.null.coef, use.wz=TRUE #, rd=rd,qf=qf ), class = c("extended.family","family")) } ## elf qgam/R/I_adTest.R0000644000176200001440000000061213033231203013204 0ustar liggesusers#### Andreson-Darling test for STANDARD normality .adTest <- function(.x){ n <- length(.x) .x <- sort(.x) # Cramer-von Mises statistic # out <- 1/(12*n) + sum( ((2*1:n - 1)/(2*n) - pnorm(.x))^2 ) logp1 <- pnorm(.x, log.p = TRUE) logp2 <- pnorm(.x, lower.tail = F, log.p = TRUE) h <- (2 * seq(1:n) - 1) * (logp1 + rev(logp2)) out <- -n - mean(h) return( out ) }qgam/R/I_cleanData.R0000644000176200001440000000465214116623717013666 0ustar liggesusers### # Removing all NAs, unused variables and factor levels from data # .cleanData <- function(.dat, .form, .drop){ if( inherits(.dat, "groupedData") ) { .dat <- as.data.frame( .dat ) } .vars <- .allVars1( interpret.gam(.form)$fake.formula ) # Data is a list, but not a data.frame hence it needs special treament # NB: assumption here is that .dat contains 1 and only 1 data.frame and # remaining entries are matrices if( is.list(.dat) && !is.data.frame(.dat) ){ # Keep only elements that are data.frames or that appear in model formula .dat <- .dat[ which( sapply(.dat, is.data.frame) | (names(.dat) %in% .vars) ) ] # Check if there are matrices (e.g. for functional effects) .matVar <- which( !sapply(.dat, is.data.frame) ) # No matrices in the list, we do the check only on the data.frame element if( !length(.matVar) ){ return( .cleanData(.dat = .dat[ sapply(.dat, is.data.frame) ][[1]], .form = .form, .drop = .drop) ) } .datI <- subset(.dat[ -.matVar ][[1]], select = .vars[!(.vars %in% names(.dat))] ) # Standard part of data .datM <- .dat[ .matVar ] # List of matrices # Find rows with NAs in two parts .badI <- attr(na.omit(.datI), "na.action") .badM <- attr(na.omit(do.call("cbind", .datM)), "na.action") # Now remove all bad rows from all elements of .dat .badAll <- union(.badI, .badM) if( !is.null(.badAll) ){ .datI <- .datI[-.badAll, ] if( is.null(.drop) || .drop ) { .datI <- droplevels( .datI ) } .datM <- lapply(.datM, function(.X) .X[-.badAll, ]) .datO <- c(list(.datI), .datM) # NOTE datO not dat0 !!!!!! } } else{ .datO <- na.omit( subset(.dat, select = .vars) ) if( is.null(.drop) || .drop ) { .dat0 <- droplevels( .datO ) } } return( .datO ) } #### # Test case #### # .dat <- list(data.frame("x" = 1:10, "y" = 1:10, "u1" = rnorm(10)), # "z1" = matrix(1:30, 10, 3), # "z2" = matrix(1:30, 10, 3), # "u2" = matrix(1:30, 10, 3)) # .dat[[1]]$y[1] <- NA # .dat$z1[3, 2] <- NaN # .dat$z2[10, 2] <- NaN # # .vars <- c("x", "y", "z1", "z2") # # # The 1st, 3rd and 10th rows should be removed, and the u1 and u2 variables should disappear # qgam:::.cleanData(.dat = .dat, .form = y ~ s(x) + s(y, z1) + z2, .drop = TRUE)qgam/R/I_clusterExport.R0000644000176200001440000000056113033231203014646 0ustar liggesusers# Export objects with names in "toExport" from "envir" enviroment to "cluster". # If ALL == TRUE it exports all the objects in "envir" .clusterExport <- function(cluster, envir = parent.frame(), toExport = c(), ALL = FALSE) { allNames <- toExport if(ALL) allNames <- c(allNames, ls(envir = envir)) clusterExport(cluster, varlist = allNames, envir = envir) }qgam/R/I_clusterSetUp.R0000644000176200001440000000242713033231203014430 0ustar liggesusers# Utility function called from withing another function to set-up a "parallel" cluster .clusterSetUp <- function(cluster, ncores, libraries = c(), toExport = c(), exportALL = FALSE, ...) { parentEnv <- parent.frame() # Create a cluster (if necessary) and set clusterCreated to TRUE if( is.null(cluster) ) { cluster <- makeCluster(ncores) clusterCreated <- TRUE } else{ ncores <- length(cluster) clusterCreated <- FALSE } # Put the vector of names of packages I want to load in the list of stuff to export # I assign "libraries" to the parent environment that it can be exported by .clusterExport if( length(libraries > 0) ){ toExport <- c(toExport, "libraries") assign("libraries", libraries, parentEnv) } # Load stuff in the cluster if( length(toExport) > 0 || exportALL ) .clusterExport(cluster = cluster, envir = parentEnv, toExport = toExport, ALL = exportALL) # Load libraries on the cluster, delete the copy of "libraries" in the parent environment if( length(libraries) > 0 ) { rm("libraries", parentEnv) clusterEvalQ(cluster, sapply(libraries, function(libName) invisible(require(libName, quietly = TRUE, character.only=TRUE)) ) ) } list("cluster" = cluster, "ncores" = ncores, "clusterCreated" = clusterCreated) }qgam/R/qgam.R0000644000176200001440000001733214775742354012500 0ustar liggesusers########################## #' Fit a smooth additive quantile regression model #' #' @description This function fits a smooth additive regression model for a single quantile. #' #' @param form A GAM formula, or a list of formulae. See ?mgcv::gam details. #' @param data A data frame or list containing the model response variable and covariates required by the formula. #' By default the variables are taken from environment(formula): typically the environment from which gam is called. #' @param qu The quantile of interest. Should be in (0, 1). #' @param discrete If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details. #' @param lsig The value of the log learning rate used to create the Gibbs posterior. By defauls \code{lsig=NULL} and this #' parameter is estimated by posterior calibration described in Fasiolo et al. (2017). Obviously, the function is much faster #' if the user provides a value. #' @param err An upper bound on the error of the estimated quantile curve. Should be in (0, 1). #' Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). #' The old default was \code{err=0.05}. #' @param multicore If TRUE the calibration will happen in parallel. #' @param ncores Number of cores used. Relevant if \code{multicore == TRUE}. #' @param cluster An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, #' which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster. #' @param paropts a list of additional options passed into the foreach function when parallel computation is enabled. #' This is important if (for example) your code relies on external data or packages: #' use the .export and .packages arguments to supply them so that all cluster nodes #' have the correct environment set up for computing. #' @param control A list of control parameters. The only one relevant here is \code{link}, which is the link function #' used (see \code{?elf} and \code{?elflss} for defaults). All other control parameters are used by #' \code{tuneLearnFast}. See \code{?tuneLearnFast} for details. #' @param argGam A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed #' in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}. #' @return A \code{gamObject}. See \code{?gamObject}. #' @author Matteo Fasiolo . #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2021. #' qgam: Bayesian Nonparametric Quantile Regression Modeling in R. #' Journal of Statistical Software, 100(9), 1-31, \doi{10.18637/jss.v100.i09}. #' @examples # #' ##### #' # Univariate "car" example #' #### #' library(qgam); library(MASS) #' #' # Fit for quantile 0.5 using the best sigma #' set.seed(6436) #' fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.5) #' #' # Plot the fit #' xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) #' pred <- predict(fit, newdata = xSeq, se=TRUE) #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) #' lines(xSeq$times, pred$fit, lwd = 1) #' lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) #' lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) #' #' \dontrun{ #' # You can get a better fit by letting the learning rate change with "accel" #' # For instance #' fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), #' data = mcycle, qu = 0.8) #' #' pred <- predict(fit, newdata = xSeq, se=TRUE) #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) #' lines(xSeq$times, pred$fit, lwd = 1) #' lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) #' lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) #' } #' #' ##### #' # Multivariate Gaussian example #' #### #' library(qgam) #' set.seed(2) #' dat <- gamSim(1,n=400,dist="normal",scale=2) #' #' fit <- qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) #' plot(fit, scale = FALSE, pages = 1) #' #' ###### #' # Heteroscedastic example #' ###### #' \dontrun{ #' set.seed(651) #' n <- 2000 #' x <- seq(-4, 3, length.out = n) #' X <- cbind(1, x, x^2) #' beta <- c(0, 1, 1) #' sigma = 1.2 + sin(2*x) #' f <- drop(X %*% beta) #' dat <- f + rnorm(n, 0, sigma) #' dataf <- data.frame(cbind(dat, x)) #' names(dataf) <- c("y", "x") #' #' fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), #' data = dataf, qu = 0.95) #' #' plot(x, dat, col = "grey", ylab = "y") #' tmp <- predict(fit, se = TRUE) #' lines(x, tmp$fit) #' lines(x, tmp$fit + 2 * tmp$se.fit, col = 2) #' lines(x, tmp$fit - 2 * tmp$se.fit, col = 2) #' } #' qgam <- function(form, data, qu, discrete = FALSE, lsig = NULL, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL) { if( length(qu) > 1 ) stop("length(qu) > 1, so you should use mqgam()") discrete <- .should_we_use_discrete(form = form, discrete = discrete) gam_name <- ifelse(discrete, "bam", "gam") # Removing all NAs, unused variables and factor levels from data data <- .cleanData(.dat = data, .form = form, .drop = argGam$drop.unused.levels) # Setting up control parameter (mostly used by tuneLearnFast) ctrl <- list("verbose" = FALSE, "b" = 0, "link" = "identity") # Checking if the control list contains unknown names entries in "control" substitute those in "ctrl" ctrl <- .ctrlSetup(innerCtrl = ctrl, outerCtrl = control, verbose = FALSE) tmp <- ctrl$init_qgam if(is.null(tmp)){ tmp <- .init_gauss_fit(form = form, data = data, ctrl = ctrl, argGam = argGam, qu = qu, discrete = discrete) } ctrl$init_qgam <- tmp gausFit <- tmp$gausFit formL <- tmp$formL varHat <- tmp$varHat initM <- tmp$initM # Get loss smoothness if( is.null(err) ){ err <- .getErrParam(qu = qu, gFit = gausFit, varHat = varHat) } # Selecting the learning rate sigma learn <- NULL if( is.null(lsig) ) { learn <- tuneLearnFast(form = form, data = data, qu = qu, discrete = discrete, err = err, multicore = multicore, cluster = cluster, ncores = ncores, paropts = paropts, control = ctrl, argGam = argGam) lsig <- learn$lsig err <- learn$err # Over-writing err parameter! argGam$mustart <- learn$final_fit[[1]]$mustart # Annoyingly, initial coeffs are supplied via "coef" argument in bam() and "start" in gam() argGam[[ ifelse(discrete, "coef", "start") ]] <- learn$final_fit[[1]]$coefstart argGam$in.out <- learn$final_fit[[1]]$in.out } else { if( is.null(argGam$coef) && is.null(argGam$start) && is.null(argGam$mustart) ) { argGam$mustart <- initM$mustart argGam[[ ifelse(discrete, "coef", "start") ]] <- initM$coefstart } } co <- err * sqrt(2*pi*varHat) / (2*log(2)) # Fit model for fixed log-sigma fit <- do.call(gam_name, c(list("formula" = formL, "family" = quote(elf(qu = qu, co = co, theta = lsig, link = ctrl$link)), "data" = quote(data), "discrete" = discrete), argGam)) fit$calibr <- learn class(fit) <- c("qgam", class(fit)) return( fit ) } qgam/R/I_getPenMatrix.R0000644000176200001440000000127313263361332014407 0ustar liggesusers####################### # Function that extracts the penalty matrix from an extended gam object. # It returns St expressed at the "user-level" parametrization (i.e. not the # parametrization used internally for fitting) # .getPenMatrix <- function(q, UrS, sp, Mp, U1) { if (length(UrS)) { # Stable re-parameterization if needed.... rp <- gam.reparam(UrS, sp, 0) T <- diag( q ) T[1:ncol(rp$Qs), 1:ncol(rp$Qs)] <- rp$Qs T <- U1%*%T ## new params b'=T'b old params St <- rbind(cbind(rp$S,matrix(0,nrow(rp$S),Mp)),matrix(0,Mp,q)) # Invert re-parametrization St <- T %*% St %*% t(T) } else { T <- diag(q); St <- matrix(0,q,q) } return( St ) } qgam/R/I_shashCDF.R0000644000176200001440000000033613447126422013425 0ustar liggesusers#### # CDF of shash density .shashCDF <- function(q, param) { mu <- param[1] sig <- exp(param[2]) eps <- param[3] del <- exp(param[4]) return( pnorm(sinh((asinh((q - mu)/(del * sig)) - eps/del) * del)) ) }qgam/R/I_should_we_use_discrete.R0000644000176200001440000000100514525375405016530 0ustar liggesusers## # .should_we_use_discrete <- function(form, discrete){ if( !discrete ){ return( discrete ) } if( !is.list(form) ){ form <- list(form) } nlp <- length(form) form <- mgcv::interpret.gam(form) n_smooth <- sapply(form[1:nlp], function(.x) length(.x$smooth.spec)) if( n_smooth[1] == 0 || sum(n_smooth) == 0 ){ # NOTE: this is specific for QGAMs! warning("The quantile model does not contain any smooth, ignoring `discrete = TRUE'") discrete <- FALSE } return(discrete) }qgam/R/I_tuneLearnBootstrapping.R0000644000176200001440000001444314447246475016533 0ustar liggesusers############### #### Internal function that does the bootstrapping or cross-validation ############### .tuneLearnBootstrapping <- function(lsig, form, fam, qu, ctrl, data, store, pMat, gausFit, argGam, multicore, cluster, ncores, paropts){ n <- nrow(data) nt <- length(lsig) if( ctrl$sam == "boot" ){ # Create weights for K boostrap dataset OR... wb <- lapply(1:ctrl[["K"]], function(nouse) tabulate(sample(1:n, n, replace = TRUE), n)) } else { # ... OR for K training sets for CV tmp <- sample(rep(1:ctrl[["K"]], length.out = n), n, replace = FALSE) wb <- lapply(1:ctrl[["K"]], function(ii) tabulate(which(tmp != ii), n)) } # Create gam object for bootstrap fits bObj <- do.call("gam", c(list("formula" = form, "family" = quote(elf(qu = qu, co = NA, theta = NA, link = ctrl$link)), "data" = quote(data), "sp" = if(length(store[[1]]$sp)){store[[1]]$sp}else{NULL}, fit = FALSE), argGam)) # Preparing bootstrap object for gam.fit3 bObj <- .prepBootObj(obj = bObj, eps = ctrl$epsB, control = argGam$control) # Internal function that fits the bootstrapped datasets and returns standardized deviations from full data fit. To be run in parallel. # GLOBALS: lsig, ctrl, store, pMat, bObj, argGam .getBootDev <- function(.wb) { # # # # # # # # # .getBootDev START # # # # # # # # # y <- bObj$y ns <- length(lsig); n <- length(y) # Number of test observations nt <- ifelse(ctrl$loss == "cal", n, sum(!.wb)) # Creating boot weights from boot indexes bObj$w <- .wb init <- NULL .z <- vector("list", ns) for( ii in ns:1 ) # START lsigma loop, from largest to smallest (because when lsig is small the estimation is harded) { # In the gamlss case 'co' is a vector, and we have to take only those values that are in the boostrapped dataset. co <- store[[ii]]$co bObj$lsp0 <- log( store[[ii]]$sp ) bObj$family$putCo( co ) bObj$family$putTheta( lsig[ii] ) init <- if(is.null(init)){ list(store[[ii]]$init) } else { list(init, store[[ii]]$init) } .offset <- bObj$offset bObj$null.coef <- bObj$family$get.null.coef(bObj)$null.coef fit <- .egamFit(x=bObj$X, y=bObj$y, sp=as.matrix(bObj$lsp0), Eb=bObj$Eb, UrS=bObj$UrS, offset=bObj$offset, U1=bObj$U1, Mp=bObj$Mp, family = bObj$family, weights=bObj$w, control=bObj$control, null.coef=bObj$null.coef, start=init, needVb=(ctrl$loss == "cal" && ctrl$vtype == "b")) init <- betas <- fit$coef if( is.null(.offset) ){ .offset <- numeric( nrow(pMat) ) } mu <- bObj$family$linkinv( pMat %*% betas + .offset ) if( ctrl$loss == "cal" ){ # (1) Return standardized deviations from full data fit OR ... if( ctrl$vtype == "b" ){ # (2) Use variance of bootstrap fit OR ... Vp <- fit$Vb sdev <- sqrt(rowSums((pMat %*% Vp) * pMat)) # same as sqrt(diag(pMat%*%Vp%*%t(pMat))) but (WAY) faster } else { # (2) ... variance of the main fit sdev <- store[[ii]]$sdev } .z[[ii]] <- drop((mu - as.matrix(store[[ii]]$fit)[ , 1]) / sdev) } else { # (1) ... out of sample observations minus their fitted values .z[[ii]] <- drop(y - mu)[ !.wb ] } } return( .z ) } # # # # # # # # # .getBootDev END # # # # # # # # # if( multicore ){ # Making sure "qgam" is loaded on cluser paropts[[".packages"]] <- unique( c("qgam", paropts[[".packages"]]) ) tmp <- .clusterSetUp(cluster = cluster, ncores = ncores) #, exportALL = TRUE) cluster <- tmp$cluster ncores <- tmp$ncores clusterCreated <- tmp$clusterCreated registerDoParallel(cluster) # Exporting stuff. To about all environment being exported all the time, use .GlobalEnv clusterExport(cluster, c("pMat", "bObj", "lsig", "ctrl", "store", "argGam", ".egamFit"), envir = environment()) environment(.getBootDev) <- .GlobalEnv } # Loop over bootstrap datasets to get standardized deviations from full data fit withCallingHandlers({ z <- llply( .data = wb, .fun = .getBootDev, .parallel = multicore, .progress = ctrl[["progress"]], .inform = ctrl[["verbose"]], .paropts = paropts) }, warning = function(w) { # There is a bug in plyr concerning a useless warning about "..." if (length(grep("... may be used in an incorrect context", conditionMessage(w)))) invokeRestart("muffleWarning") }) # Get stardardized deviations and ... .bindFun <- if( ctrl$loss == "cal" ) { "rbind" } else { "c" } z <- lapply(1:nt, function(.ii) do.call(.bindFun, lapply(z, function(.x) .x[[.ii]]))) if( ctrl$loss == "cal"){ # ... calculate KL distance OR ... # KL distance for explanations see [*] below outLoss <- sapply(z, function(.x){ .v <- .colVars(.x) return( mean( sqrt(.v + colMeans(.x)^2 - log(.v)) ) ) }) # E(z^2) = var(z) + E(z)^2 (var + bias) #outLoss <- sapply(z, function(.x) mean( (.colVars(.x) - 1)^2 + colMeans(.x)^2 ) ) #outLoss <- sapply(z, function(.x) mean( colMeans(.x)^2 ) ) #outLoss <- sapply(z, function(.x) mean( (colMeans(.x^2) - 1)^2 ) ) #outLoss <- sapply(z, function(.x) mean( apply(.x, 2, .adTest) ) ) # .adTest(as.vector(.x))) #outLoss <- sapply(z, function(.x) .adTest(as.vector(.x)) ) # .adTest(as.vector(.x))) } else { # ... pinball loss outLoss <- sapply(z, function(.x) .checkloss(.x, 0, qu = qu)) } # Close the cluster if it was opened inside this function if(multicore && clusterCreated) stopCluster(cluster) return( outLoss ) } ##### [*] Code showing that KL distance is invariant to standardization # mu1 <- rnorm(1) # mu2 <- rnorm(1) # v1 <- runif(1, 1, 2) # v2 <- runif(1, 1, 2) # # x <- rnorm(10000, mu1, sqrt(v1)) # # # KL distance between x ~ N(mu1, V1) and z ~ N(mu2, V2) # v1/v2 + (mu1 - mu2)^2 / v2 + log(v2/v1) # # # Empirical estimate of KL distance # var(x)/v2 + (mean(x) - mu2)^2 / v2 + log(v2/var(x)) # # # Normalizing x using mu2 and V2, assume y is now N(0, 1) # # and recalculate KL distance: the result must be the same # y <- (x - mu2) / sqrt(v2) # var(y) + (mean(y))^2 + log(1/var(y)) qgam/R/I_brent.R0000644000176200001440000001421414447036044013115 0ustar liggesusers #***************************************************************************** # Shamelessly copied (and translated) from Burkardt's # website https://people.sc.fsu.edu/~jburkardt/m_src/brent/local_min.m # ## LOCAL_MIN seeks a local minimum of a function F(X) in an interval [A,B]. # # Discussion: # # The method used is a combination of golden section search and # successive parabolic interpolation. Convergence is never much slower # than that for a Fibonacci search. If F has a continuous second # derivative which is positive at the minimum (which is not at A or # B), then convergence is superlinear, and usually of the order of # about 1.324.... # # The values EPSI and T define a tolerance TOL = EPSI * abs ( X ) + T. # F is never evaluated at two points closer than TOL. # # If F is a unimodal function and the computed values of F are always # unimodal when separated by at least SQEPS * abs ( X ) + (T/3), then # LOCAL_MIN approximates the abscissa of the global minimum of F on the # interval [A,B] with an error less than 3*SQEPS*abs(LOCAL_MIN)+T. # # If F is not unimodal, then LOCAL_MIN may approximate a local, but # perhaps non-global, minimum to the same accuracy. # # Thanks to Jonathan Eggleston for pointing out a correction to the # golden section step, 01 July 2013. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 13 April 2008 # # Author: # # Original FORTRAN77 version by Richard Brent. # MATLAB version by John Burkardt. # R vesion from Matteo Fasiolo # # Reference: # # Richard Brent, # Algorithms for Minimization Without Derivatives, # Dover, 2002, # ISBN: 0-486-41998-3, # LC: QA402.5.B74. # # Parameters: # # Input, real A, B, the endpoints of the interval. # # Input, real EPSI, a positive relative error tolerance. # EPSI should be no smaller than twice the relative machine precision, # and preferably not much less than the square root of the relative # machine precision. # # Input, real T, a positive absolute error tolerance. # # Input, function value = F ( x ), the name of a user-supplied # function whose local minimum is being sought. # # Output, real X, the estimated value of an abscissa # for which F attains a local minimum value in [A,B]. # # Output, real FX, the value F(X). # .brent <- function(brac, f, mObj, bObj, wb, init, pMat, qu, ctrl, varHat, cluster, t = .Machine$double.eps^0.25, aTol = 0, ...) { brac <- sort(brac) a <- brac[1] b <- brac[2] # Relative tolerance, as in ?optimize. No need to touch it, I think. epsi = sqrt(.Machine$double.eps) # cc is the square of the inverse of the golden ratio. cc = 0.5 * ( 3.0 - sqrt(5.0) ) sa = a sb = b x = sa + cc * ( b - a ) w = x v = w e = 0.0 feval = f(lsig = x, mObj = mObj, bObj = bObj, wb = wb, initM = init[["initM"]], initB = init[["initB"]], pMat = pMat, qu = qu, ctrl = ctrl, varHat = varHat, cluster = cluster, ...) fx = feval$outLoss fw = fx fv = fw # Storing all evaluations points and function values jj <- 1 store <- list() store[[jj]] <- list("x" = x, "f" = fx, "initM" = feval[["initM"]], "initB" = feval[["initB"]]) jj <- jj + 1 while( TRUE ) { m = 0.5 * ( sa + sb ) tol = epsi * abs ( x ) + t t2 = 2.0 * tol # Check the stopping criterion. We exit if we detect convergence or # if we detect that we are too close to the bracket extremes if( (abs(x-m) <= (t2 - 0.5 * (sb-sa))) || any(abs(x-c(a, b)) < aTol * abs(b-a)) ) { break } # Fit a parabola. r = 0.0 q = r p = q if ( tol < abs(e) ) { r = ( x - w ) * ( fx - fv ) q = ( x - v ) * ( fx - fw ) p = ( x - v ) * q - ( x - w ) * r q = 2.0 * ( q - r ) if( 0.0 < q ) { p = - p } q = abs ( q ) r = e e = d } # Take the parabolic interpolation step OR ... if ( (abs(p) < abs(0.5 * q * r)) && (q * ( sa - x )) < p && (p < q * ( sb - x )) ) { d = p / q u = x + d # F must not be evaluated too close to A or B. if ( ( u - sa ) < t2 || ( sb - u ) < t2 ) { if ( x < m ) { d = tol } else { d = - tol } } } else { # ... a golden-section step. if ( x < m ){ e = sb - x } else { e = sa - x } d = cc * e } # F must not be evaluated too close to X. if ( tol <= abs( d ) ){ u = x + d } else { if ( 0.0 < d ) { u = x + tol } else { u = x - tol } } init <- store[[ which.min(abs(u - sapply(store, "[[", "x"))) ]] feval = f(lsig = u, mObj = mObj, bObj = bObj, wb = wb, initM = init[["initM"]], initB = init[["initB"]], pMat = pMat, qu = qu, ctrl = ctrl, varHat = varHat, cluster = cluster, ...) fu = feval$outLoss store[[jj]] <- list("x" = u, "f" = fu, "initM" = feval[["initM"]], "initB" = feval[["initB"]]) jj <- jj + 1 # Update A, B, V, W, and X. if ( fu <= fx ){ if ( u < x ) { sb = x } else { sa = x } v = w fv = fw w = x fw = fx x = u fx = fu } else { if ( u < x ) { sa = u } else { sb = u } if ( (fu <= fw) || (w == x) ) { v = w fv = fw w = u fw = fu } else { if ( (fu <= fv) || (v == x) || (v == w) ){ v = u fv = fu } } } } f_eval <- rbind( sapply(store, "[[", "x"), sapply(store, "[[", "f") ) ii_min <- which.min(f_eval[2, ]) final_fit <- store[[ii_min]]$initM return( list("minimum" = x, "objective" = fx, "store" = f_eval, "final_fit" = final_fit) ) } ################### ######### TEST ################### # # Test 1 # f <- function (x, k) (x - k)^2 # xmin <- optimize(f, c(0, 1), tol = 0.0001, k = 1/3) # xmin # # qgam:::.brent(brac = c(0, 1), f = f, t = 1e-4, k = 1/3) # # # Test 2 # f <- function(x) ifelse(x > -1, ifelse(x < 4, exp(-1/abs(x - 1)), 10), 10) # fp <- function(x) { print(x); f(x) } # # plot(f, -2,5, ylim = 0:1, col = 2) # optimize(fp, c(-7, 20)) # ok # qgam:::.brent(c(-7, 20), f = f) qgam/R/I_sandwichLoss.R0000644000176200001440000000577114533605403014451 0ustar liggesusers########## # Internal function which calculated calibration loss function based on the sandwich estimator # wrt the regression coefficients. # INPUT # - mFit: a gamObject fitted using the elflss family # - X: model matrix # - sdev: the posterior standard deviation of the first linear predicto # OUTPUT # - a scalar indicating the loss # .sandwichLoss <- function(mFit, X, sdev, repar, mObj, alpha = NULL, VSim = NULL){ discrete <- !is.null(mObj$Xd) n <- length(mFit$y) # Posterior variance of fitted quantile (mu) varOFI <- sdev ^ 2 # Observed Fisher information and penalty matrix if(discrete){ woW <- mFit$wt OFI <- XWXd(X=mObj$Xd,w=woW,k=mObj$kd,ks=mObj$ks,ts=mObj$ts, dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop) } else { woW <- mFit$working.weights # NB: these can be negative OFI <- crossprod(sign(woW)*sqrt(abs(woW))*X, sqrt(abs(woW))*X) } P <- .getPenMatrix(q = length(mFit$coefficients), UrS = repar$UrS, sp = log(mFit$sp), Mp = repar$Mp, U1 = repar$U1) # Calculate variance of the score if(discrete){ sqrtw <- .llkGrads(gObj = mFit, X = NULL, mObj = mObj, type = "DllkDeta")$l1 mXsqrtw <- XWyd(X=mObj$Xd,w=sqrtw,y=rep(1,n),k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop)/n V <- XWXd(X=mObj$Xd,w=sqrtw^2,k=mObj$kd,ks=mObj$ks,ts=mObj$ts,dt=mObj$dt, v=mObj$v,qc=mObj$qc,drop=mObj$drop)/(n-1) - mXsqrtw %*% t(mXsqrtw) } else { grad <- .llkGrads(gObj = mFit, X = X, mObj = mObj) V <- cov( grad ) } if( !is.null(alpha) ){ V <- alpha * V + (1-alpha) * VSim } V <- V * n # Compute eigen-decomposition of V, get its rank and produce pseudo-inverse # Discard eigen-vectors corresponding to very LOW variance (low eigen-values) of the score, # the logic being that if the variance of the score of a parameter is LOW then # its variance will be HIGH --> we discard non-identifiable parameters. iVscore <- .invert_psdef_matrix(V, r = mFit$rank) # Inverse 'Sandwich' posterior covariance iS <- OFI %*% iVscore %*% OFI + P # Compute eigen-decomposition of V_sand^{-1}, get its rank and produce pseudo-inverse # Discard LOW eigen-values of precision sandwich matrix --> they correspond to directions # of HIGH variance --> non-identifiable parameters VS <- .invert_psdef_matrix(iS, r = mFit$rank) # Posterior variance using sandwich: var(mu) = diag( X %*% iS^-1 %*% t(X) ) if(discrete){ varSand <- diagXVXd(X=mObj$Xd,V=VS,k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop) } else { varSand <- rowSums((X %*% VS) * X) } bias <- rep(0, n) # Excluded observ where the variance is 0 (probably because all corresponding covariate values are 0) not0 <- which( !(varOFI == 0 & varSand == 0) ) # Average distance KL(sand_i, post_i) on non-zeros outLoss <- mean( sqrt(varSand/varOFI + bias^2/varOFI + log(varOFI/varSand))[not0] ) return( outLoss ) }qgam/R/I_qqVett.R0000644000176200001440000000040213033231203013241 0ustar liggesusers#### Vettorized empirical cdf .qqVett <- function(y, mu){ nq <- ncol( mu ) nobs <- length( y ) out <- sapply(1:nq, function(ii){ return( sum( (y - mu[ , ii]) < 0 ) / nobs ) }) return( out ) }qgam/R/check_qgam.R0000644000176200001440000001305514775742436013634 0ustar liggesusers########################## #' Some diagnostics for a fitted qgam model #' #' @description Takes a fitted gam object produced by \code{qgam()} and produces some diagnostic information #' about the fitting procedure and results. It is partially based on \code{mgcv::gam.check}. #' #' @param obj the output of a \code{qgam()} call. #' @param nbin number of bins used in the internal call to \code{cqcheck()}. #' @param lev the significance levels used by \code{cqcheck()}, which determines the width of the confidence #' intervals. #' @param ... extra arguments to be passed to \code{plot()} #' @return Simply produces some plots and prints out some diagnostics. #' @details This function provides two plots. The first shows how the number of responses falling below the fitted #' quantile (y-axis) changes with the fitted quantile (x-axis). To be clear: if the quantile is fixed to, say, 0.5 #' we expect 50\% of the responses to fall below the fit. See \code{?cqcheck()} for details. The second plot related #' to \code{|F(hat(mu)) - F(mu0)|}, which is the absolute bias attributable to the fact that qgam is using #' a smoothed version of the pinball-loss. The absolute bias is evaluated at each observation, and an histogram #' is produced. See Fasiolo et al. (2017) for details. The function also prints out the integrated absolute bias, #' and the proportion of observations lying below the regression line. It also provides some convergence #' diagnostics (regarding the optimization), which are the same as in \code{mgcv::gam.check}. #' It reports also the maximum (k') and the selected degrees of freedom of each smooth term. #' @author Matteo Fasiolo , Simon N. Wood. #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @examples #' library(qgam) #' set.seed(0) #' dat <- gamSim(1, n=200) #' b<-qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) #' plot(b, pages=1) #' check.qgam(b, pch=19, cex=.3) #' check.qgam <- function(obj, nbin = 10, lev = 0.05, ...) ## takes a fitted gam object and produces some standard diagnostic plots { svpar <- par(no.readonly = TRUE) cqcheck(obj = obj, v = as.matrix(obj$fitted.values)[ , 1], nbin = nbin, xlab = "Fitted values", main = "Proportion of neg. resid.", ...) ## Checking bias induced by having smoothed the loss # Here we are estimating E( Phi(y, mu, lam*sig) - I(y > mu) | x ) using a Gaussian GAM co <- obj$family$getCo() sig <- exp( obj$family$getTheta() ) lam <- co dat <- obj$model form <- obj$formula res <- dat[[ form[[2]] ]] - as.matrix(obj$fitted.values)[ , 1] form[[2]] <- as.symbol( "bias" ) dat$bias <- plogis(res, 0, lam) - as.numeric(res > 0) # Need to handle offsets offi <- which(sapply(names(dat), function(.x) grepl("offset(", .x, fixed=TRUE))) if(length(offi)){ for(ii in offi){ names(dat)[ii] <- gsub(")","",gsub("offset(","",names(dat)[ii], fixed = TRUE)) } } fitBias <- gam(form, data = dat) hist(fitBias$fitted.values, xlab = expression(F(hat(mu)) - F(mu[0])), main = "Bias due to smoothed loss") cat("Theor. proportion of neg. resid.:", obj$family$getQu(), " Actual proportion:", mean(res<0)) cat("\nIntegrated absolute bias |F(mu) - F(mu0)| =", mean(abs(fitBias$fitted.values))) ## now summarize convergence information cat("\nMethod:",obj$method," Optimizer:",obj$optimizer) if (!is.null(obj$outer.info)) { ## summarize convergence information if (obj$optimizer[2]%in%c("newton","bfgs")) { boi <- obj$outer.info cat("\n",boi$conv," after ",boi$iter," iteration",sep="") if (boi$iter==1) cat(".") else cat("s.") cat("\nGradient range [",min(boi$grad),",",max(boi$grad),"]",sep="") cat("\n(score ",obj$gcv.ubre," & scale ",obj$sig2,").",sep="") ev <- eigen(boi$hess)$values if (min(ev)>0) cat("\nHessian positive definite, ") else cat("\n") cat("eigenvalue range [",min(ev),",",max(ev),"].\n",sep="") } else { ## just default print of information .. cat("\n"); print(obj$outer.info) } } else { ## no sp, perf iter or AM case if (length(obj$sp)==0) ## no sp's estimated cat("\nModel required no smoothing parameter selection") else { cat("\nSmoothing parameter selection converged after",obj$mgcv.conv$iter,"iteration") if (obj$mgcv.conv$iter>1) cat("s") if (!obj$mgcv.conv$fully.converged) cat(" by steepest\ndescent step failure.\n") else cat(".\n") cat("The RMS",obj$method,"score gradient at convergence was",obj$mgcv.conv$rms.grad,".\n") if (obj$mgcv.conv$hess.pos.def) cat("The Hessian was positive definite.\n") else cat("The Hessian was not positive definite.\n") #cat("The estimated model rank was ",obj$mgcv.conv$rank, # " (maximum possible: ",obj$mgcv.conv$full.rank,")\n",sep="") } } if (!is.null(obj$rank)) { cat("Model rank = ",obj$rank,"/",length(obj$coefficients),"\n") } cat("\n") ## now check k kchck <- .kcheck(obj) if (!is.null(kchck)) { cat("Basis dimension (k) check: if edf is close to k\' (maximum possible edf) \n") cat("it might be worth increasing k. \n\n") printCoefmat(kchck,digits=3); } # Reset graphical parameters par(svpar) return( invisible(NULL) ) }qgam/R/I_kcheck.R0000644000176200001440000000164713033231203013221 0ustar liggesusers# Checking degrees of freedom: poor man's version of mgcv:::k.check: here there is no randomized # test, because I am not sure it applies to quantile regression. # This function only gives 1) maximum EDF 2) effective EDF # Some of the code does useless stuff, .kcheck <- function(b) { ## function to check k in a gam fit... ## does a randomization test looking for evidence of residual ## pattern attributable to covariates of each smooth. m <- length(b$smooth) if (m==0) return(NULL) kc <- edf<- rep(0,m) snames <- rep("",m) n <- nrow(b$model) for (k in 1:m) { ## work through smooths ok <- TRUE b$smooth[[k]]$by <- "NA" ## can't deal with by variables snames[k] <- b$smooth[[k]]$label ind <- b$smooth[[k]]$first.para:b$smooth[[k]]$last.para kc[k] <- length(ind) edf[k] <- sum(b$edf[ind]) } k.table <- cbind(kc,edf) dimnames(k.table) <- list(snames, c("k\'","edf")) k.table }qgam/R/I_shashMode.R0000644000176200001440000000060613457634763013732 0ustar liggesusers### # Finding the mode of the shash density # .shashMode <- function(param) { .objFun <- function(mu){ - .llkShash(x = mu, mu = param[1], tau = param[2], eps = param[3], phi = param[4], deriv = 0)$l0 } range <- c(.shashQf(0.001, param), .shashQf(0.999, param)) mode <- optimize(f = .objFun, interval = range)$minimum return( mode ) }qgam/R/I_llkShash.R0000644000176200001440000000440213446732774013565 0ustar liggesusers####### # Log-likelihood of shash density and its derivatives ####### .llkShash <- function(x, mu, tau, eps, phi, deriv = 0){ sech <- function(.x){ 1 / cosh(.x) } sig <- exp( tau ) del <- exp( phi ) # 1) Calculate derivative of likelihood to appropriate order z <- (x - mu) / (sig*del) dTasMe <- del*asinh(z) - eps g <- -dTasMe CC <- cosh( dTasMe ) SS <- sinh( dTasMe ) l <- sum( -tau - 0.5*log(2*pi) + log(CC) - 0.5*log1pexp(2*log(abs(z))) - 0.5*SS^2 ) out <- list("l0" = l) # Compute sqrt(x^2 + m) when |x| >> 0 and m is reasonably small (e.g. + 1 or - 1) sqrtX2pm <- function(x, m){ x <- abs(x) kk <- which( x < 1e8 ) if( length(kk) ){ x[kk] <- sqrt(x[kk]^2 + m) } return(x) } # Compute (x^2 + m1) / (x^2 + m2)^2 when |x| >> 0 and m1, m2 are reasonably small (e.g. + 1 or - 1) x2m1DivX2m2SQ <- function(x, m1, m2){ x <- abs(x) kk <- (x^2 + m1) < 0 o <- x * 0 if( any(kk) ){ o[kk] <- (x[kk]^2 + m1) / (x[kk]^2 + m2)^2 } if( sum(kk) < length(x) ){ o[!kk] <- ((sqrtX2pm(x[!kk], m1) / sqrtX2pm(x[!kk], m2)) / sqrtX2pm(x[!kk], m2))^2 } return(o) } if( deriv > 0 ) { zsd <- z*sig*del sSp1 <- sqrtX2pm(z, 1) # sqrt(z^2+1) asinhZ <- asinh(z) ## First derivatives De <- tanh(g) - 0.5*sinh(2*g) Dm <- 1/(del*sig*sSp1)*(del*(De)+z/sSp1) Dt <- zsd*Dm - 1 Dp <- Dt + 1 - del*asinhZ*De out$l1 <- c(sum(Dm), sum(Dt), sum(De), sum(Dp)) if( deriv > 1 ){ Dme <- (sech(g)^2 - cosh(2*g)) / (sig*sSp1) Dte <- zsd*Dme Dmm <- Dme/(sig*sSp1) + z*De/(sig^2*del*sSp1^3) + x2m1DivX2m2SQ(z, -1, 1)/(del*sig*del*sig) Dmt <- zsd*Dmm - Dm Dee <- -2*cosh(g)^2 + sech(g)^2 + 1 Dtt <- zsd*Dmt Dep <- Dte - del*asinhZ*Dee Dmp <- Dmt + De/(sig*sSp1) - del*asinhZ*Dme Dtp <- zsd*Dmp Dpp <- Dtp - del*asinhZ*Dep + del*(z/sSp1-asinhZ)*De out$l2 <- matrix(c(sum(Dmm), sum(Dmt), sum(Dme), sum(Dmp), sum(Dmt), sum(Dtt), sum(Dte), sum(Dtp), sum(Dme), sum(Dte), sum(Dee), sum(Dep), sum(Dmp), sum(Dtp), sum(Dep), sum(Dpp)), 4, 4, byrow = TRUE) } } return( out ) } qgam/R/I_egamFit.R0000644000176200001440000003545313151257162013364 0ustar liggesusers.egamFit <- function(x, y, sp, Eb, UrS, weights, start, offset, U1, Mp, family, control, null.coef, needVb) { ## Routine for fitting GAMs beyond exponential family. ## Inputs as gam.fit3 except that family is of class "extended.family", while ## sp contains the vector of extended family parameters, followed by the log smoothing parameters, scoreType <- "REML" deriv <- 0 theta <- family$getTheta() ## penalized <- if (length(UrS)>0) TRUE else FALSE x <- as.matrix(x) nSp <- length(sp) rank.tol <- .Machine$double.eps*100 ## tolerance to use for rank deficiency q <- ncol(x) n <- nobs <- nrow(x) xnames <- dimnames(x)[[2]] ynames <- if (is.matrix(y)) rownames(y) else names(y) ## Now a stable re-parameterization is needed.... if (length(UrS)) { rp <- gam.reparam(UrS, sp, deriv) T <- diag(q) T[1:ncol(rp$Qs),1:ncol(rp$Qs)] <- rp$Qs T <- U1%*%T ## new params b'=T'b old params null.coef <- t(T)%*%null.coef # Start is a list of vectors, each is a different possible initialization for(jj in 1:length(start)){ start[[jj]] <- t(T)%*%start[[jj]] } ## form x%*%T in parallel x <- .Call(.C_qgam_pmmult2,x,T,0,0,control$nthreads) rS <- list() for (i in 1:length(UrS)) { rS[[i]] <- rbind(rp$rS[[i]],matrix(0,Mp,ncol(rp$rS[[i]]))) } ## square roots of penalty matrices in current parameterization Eb <- Eb%*%T ## balanced penalty matrix rows.E <- q-Mp Sr <- cbind(rp$E,matrix(0,nrow(rp$E),Mp)) St <- rbind(cbind(rp$S,matrix(0,nrow(rp$S),Mp)),matrix(0,Mp,q)) } else { T <- diag(q); St <- matrix(0,q,q) rSncol <- rows.E <- Eb <- Sr <- 0 rS <- list(0) rp <- list(det=0,det1 = 0,det2 = 0,fixed.penalty=FALSE) } ## re-parameterization complete. Initialization.... nvars <- ncol(x) if (nvars==0) stop("emtpy models not available") if (is.null(weights)) weights <- rep.int(1, nobs) if (is.null(offset)) offset <- rep.int(0, nobs) linkinv <- family$linkinv valideta <- family$valideta validmu <- family$validmu dev.resids <- family$dev.resids ## need an initial `null deviance' to test for initial divergence... ## if (!is.null(start)) null.coef <- start - can be on edge of feasible - not good null.eta <- as.numeric(x%*%null.coef + as.numeric(offset)) ## call the families initialization code... mustart <- NULL eval(family$initialize) coefold <- mu <- eta <- NULL old.pdev <- null.pdev <- sum(dev.resids(y, linkinv(null.eta), weights, theta)) + t(null.coef)%*%St%*%null.coef # Calculating pen deviance using each initialization and choosing the best tmp <- lapply(start, function(.st){ if (length(.st) != nvars){stop("Length of start should equal ", nvars, " and correspond to initial coefs for ", deparse(xnames))} .eta <- offset + as.vector(if (NCOL(x) == 1) x * .st else x %*% .st) .mu <- linkinv(.eta) .pdev <- sum(dev.resids(y, .mu, weights, theta)) + t(.st)%*%St%*%.st return( list("eta"=.eta, "mu"=.mu, "pdev"=.pdev, "start"=.st) ) }) tmp <- tmp[[ which.min(sapply(tmp, "[[", "pdev")) ]] coefold <- start <- tmp$start eta <- etaold <- tmp$eta mu <- tmp$mu pdev <- tmp$pdev # BAD start (it's worse than null.coef) reset everything if (pdev>old.pdev){ start <- coefold <- eta <- etaold <- mu <- NULL } else { # GOOD start old.pdev <- pdev } ## Initialization of mu and eta (and coefold) if "start" did not do it if(is.null(coefold)){ coefold <- null.coef } if (is.null(eta)){ eta <- family$linkfun(mustart) mu <- linkinv(eta) etaold <- eta } conv <- boundary <- FALSE for (iter in 1:control$maxit) { ## start of main fitting iteration if (control$trace) cat(iter," ") dd <- dDeta(y,mu,weights,theta,family,0) ## derivatives of deviance w.r.t. eta # good <- is.finite(dd$Deta.Deta2) w <- dd$Deta2 * .5; wz <- w*(eta-offset) - .5*dd$Deta z <- (eta-offset) - dd$Deta.Deta2 good <- is.finite(z)&is.finite(w) if (control$trace&sum(!good)>0) cat("\n",sum(!good)," not good\n") if (sum(!good)) { use.wy <- TRUE good <- is.finite(w)&is.finite(wz) z[!is.finite(z)] <- 0 ## avoid NaN in .C call - unused anyway } else use.wy <- family$use.wz oo <- .C(.C_qgam_pls_fit1, y=as.double(z[good]),X=as.double(x[good,]),w=as.double(w[good]),wy = as.double(wz[good]), E=as.double(Sr),Es=as.double(Eb),n=as.integer(sum(good)), q=as.integer(ncol(x)),rE=as.integer(rows.E),eta=as.double(z), penalty=as.double(1),rank.tol=as.double(rank.tol), nt=as.integer(control$nthreads),use.wy=as.integer(use.wy)) if (oo$n<0) { ## then problem is indefinite - switch to +ve weights for this step if (control$trace) cat("**using positive weights\n") # problem is that Fisher can be very poor for zeroes ## index weights that are finite and positive good <- is.finite(dd$Deta2) good[good] <- dd$Deta2[good]>0 w[!good] <- 0 wz <- w*(eta-offset) - .5*dd$Deta z <- (eta-offset) - dd$Deta.Deta2 good <- is.finite(z)&is.finite(w) if (sum(!good)) { use.wy <- TRUE good <- is.finite(w)&is.finite(wz) z[!is.finite(z)] <- 0 ## avoid NaN in .C call - unused anyway } else use.wy <- family$use.wz oo <- .C(.C_qgam_pls_fit1, ##.C_pls_fit1, y=as.double(z[good]),X=as.double(x[good,]),w=as.double(w[good]),wy = as.double(wz[good]), E=as.double(Sr),Es=as.double(Eb),n=as.integer(sum(good)), q=as.integer(ncol(x)),rE=as.integer(rows.E),eta=as.double(z), penalty=as.double(1),rank.tol=as.double(rank.tol), nt=as.integer(control$nthreads),use.wy=as.integer(use.wy)) } # if(control$epsilon == Inf){ ### MATTEO ################################### # startOld <- drop(start) # lprOld <- drop(x%*%startOld) # } start <- oo$y[1:ncol(x)] ## current coefficient estimates penalty <- oo$penalty ## size of penalty eta <- drop(x%*%start) ## the linear predictor (less offset) if (any(!is.finite(start))) { ## test for breakdown conv <- FALSE warning("Non-finite coefficients at iteration ", iter) return(list(REML=NA)) ## return immediately signalling failure } mu <- linkinv(eta <- eta + offset) dev <- sum(dev.resids(y, mu, weights,theta)) ########################## MATTEO ################################### # if(control$epsilon == Inf) # { # .myObj <- function(.alpha){ # .param <- .alpha * start + (1-.alpha) * startOld # .lpr <- .alpha * eta + (1-.alpha) * lprOld # .mu <- linkinv(.lpr) # .dev <- sum(dev.resids(y, .mu, weights, theta)) # return(.dev) # } # # .opt <- optimize(.myObj, c(0, 2))$minimum # cat(" ", .opt) # # start <- .opt * start + (1-.opt) * startOld # eta <- .opt * eta + (1-.opt) * lprOld # mu <- linkinv(eta) # dev <- sum(dev.resids(y, mu, weights,theta)) # # boundary <- TRUE # penalty <- t(start)%*%St%*%start ## reset penalty too # } ########################## MATTEO ################################### ## now step halve under non-finite deviance... if (!is.finite(dev)) { if (is.null(coefold)) { if (is.null(null.coef)) stop("no valid set of coefficients has been found:please supply starting values", call. = FALSE) ## Try to find feasible coefficients from the null.coef and null.eta coefold <- null.coef etaold <- null.eta } #warning("Step size truncated due to divergence", # call. = FALSE) ii <- 1 while (!is.finite(dev)) { if (ii > control$maxit) stop("inner loop 1; can't correct step size") ii <- ii + 1 start <- (start + coefold)/2 eta <- (eta + etaold)/2 mu <- linkinv(eta) dev <- sum(dev.resids(y, mu, weights,theta)) } boundary <- TRUE penalty <- t(start)%*%St%*%start ## reset penalty too if (control$trace) cat("Step halved: new deviance =", dev, "\n") } ## end of infinite deviance correction ## now step halve if mu or eta are out of bounds... if (!(valideta(eta) && validmu(mu))) { #warning("Step size truncated: out of bounds", # call. = FALSE) ii <- 1 while (!(valideta(eta) && validmu(mu))) { if (ii > control$maxit) stop("inner loop 2; can't correct step size") ii <- ii + 1 start <- (start + coefold)/2 eta <- (eta + etaold)/2 mu <- linkinv(eta) } boundary <- TRUE dev <- sum(dev.resids(y, mu, weights)) penalty <- t(start)%*%St%*%start ## need to reset penalty too if (control$trace) cat("Step halved: new deviance =", dev, "\n") } ## end of invalid mu/eta handling ## now check for divergence of penalized deviance.... pdev <- dev + penalty ## the penalized deviance if (control$trace) cat("penalized deviance =", pdev, "\n") div.thresh <- 10*(.1+abs(old.pdev))*.Machine$double.eps^.5 if (pdev-old.pdev>div.thresh) { ## solution diverging ii <- 1 ## step halving counter if (iter == 1 && (pdev-null.pdev>div.thresh)) { ## Doing worse than null.coef at 1st iterat -> shrink towards zero etaold <- null.eta; coefold <- null.coef; old.pdev <- null.pdev } while (pdev - old.pdev > div.thresh) { ## step halve until pdev <= old.pdev if (ii > 100) stop("inner loop 3; can't correct step size") ii <- ii + 1 start <- (start + coefold)/2 eta <- (eta + etaold)/2 mu <- linkinv(eta) dev <- sum(dev.resids(y, mu, weights,theta)) pdev <- dev + t(start)%*%St%*%start ## the penalized deviance if (control$trace) cat("Step halved: new penalized deviance =", pdev, "\n") } } ## end of pdev divergence ## convergence testing... if (abs(pdev - old.pdev)/(0.1 + abs(pdev)) < control$epsilon) { ## Need to check coefs converged adequately, to ensure implicit differentiation ## ok. Testing coefs unchanged is problematic under rank deficiency (not guaranteed to ## drop same parameter every iteration!) grad <- 2 * t(x[good,])%*%((w[good]*(x%*%start)[good]-wz[good]))+ 2*St%*%start if (max(abs(grad)) > control$epsilon*max(abs(start+coefold))/2) { old.pdev <- pdev ## not converged quite enough coef <- coefold <- start etaold <- eta ##muold <- mu } else { ## converged conv <- TRUE coef <- start break } } else { ## not converged old.pdev <- pdev coef <- coefold <- start etaold <- eta } } ## end of main loop ## so at this stage the model has been fully estimated coef <- as.numeric(T %*% coef) ## now obtain derivatives, if these are needed... # check.derivs <- FALSE # while (check.derivs) { ## debugging code to check derivatives # eps <- 1e-7 # fmud.test(y,mu,weights,theta,family,eps = eps) # fetad.test(y,mu,weights,theta,family,eps = eps) # } ##################### Calculate the Bayesian covariance matrix if( needVb ) { dd <- dDeta(y,mu,weights,theta,family,deriv) w <- dd$Deta2 * .5 z <- (eta-offset) - dd$Deta.Deta2 ## - .5 * dd$Deta[good] / w wf <- pmax(0,dd$EDeta2 * .5) ## Fisher type weights wz <- w*(eta-offset) - 0.5*dd$Deta ## Wz finite when w==0 gdi.type <- if (any(abs(w)<.Machine$double.xmin*1e20)||any(!is.finite(z))) 1 else 0 good <- is.finite(wz)&is.finite(w) residuals <- z - (eta - offset) residuals[!is.finite(residuals)] <- NA z[!is.finite(z)] <- 0 ## avoid passing NA etc to C code ntot <- length(theta) + length(sp) rSncol <- unlist(lapply(UrS,ncol)) ## Now drop any elements of dd that have been dropped in fitting... if (sum(!good)>0) { ## drop !good from fields of dd, weights and pseudodata z <- z[good]; w <- w[good]; wz <- wz[good]; wf <- wf[good] dd$Deta <- dd$Deta[good];dd$Deta2 <- dd$Deta2[good] dd$EDeta2 <- dd$EDeta2[good] if (deriv>0) dd$Deta3 <- dd$Deta3[good] if (deriv>1) dd$Deta4 <- dd$Deta4[good] if (length(theta)>1) { if (deriv>0) { dd$Dth <- dd$Dth[good,]; dd$Detath <- dd$Detath[good,]; dd$Deta2th <- dd$Deta2th[good,] if (deriv>1) { dd$Detath2 <- dd$Detath2[good,]; dd$Deta3th <- dd$Deta3th[good,] dd$Deta2th2 <- dd$Deta2th2[good,];dd$Dth2 <- dd$Dth2[good,] } } } else { if (deriv>0) { dd$Dth <- dd$Dth[good]; dd$Detath <- dd$Detath[good]; dd$Deta2th <- dd$Deta2th[good] if (deriv>1) { dd$Detath2 <- dd$Detath2[good]; dd$Deta3th <- dd$Deta3th[good] dd$Deta2th2 <- dd$Deta2th2[good]; dd$Dth2 <- dd$Dth2[good] } } } } oo <- .C(.C_qgam_gdi2, X=as.double(x[good,]),E=as.double(Sr),Es=as.double(Eb),rS=as.double(unlist(rS)), U1 = as.double(U1),sp=as.double(exp(sp)),theta=as.double(theta), z=as.double(z),w=as.double(w),wz=as.double(wz),wf=as.double(wf),Dth=as.double(dd$Dth), Det=as.double(dd$Deta), Det2=as.double(dd$Deta2),Dth2=as.double(dd$Dth2),Det.th=as.double(dd$Detath), Det2.th=as.double(dd$Deta2th),Det3=as.double(dd$Deta3),Det.th2 = as.double(dd$Detath2), Det4 = as.double(dd$Deta4),Det3.th=as.double(dd$Deta3th), Deta2.th2=as.double(dd$Deta2th2), beta=as.double(coef),b1=as.double(rep(0,ntot*ncol(x))),w1=as.double(rep(0,ntot*length(z))), D1=as.double(rep(0,ntot)),D2=as.double(rep(0,ntot^2)), P=as.double(0),P1=as.double(rep(0,ntot)),P2 = as.double(rep(0,ntot^2)), ldet=as.double(1-2*(scoreType=="ML")),ldet1 = as.double(rep(0,ntot)), ldet2 = as.double(rep(0,ntot^2)), rV=as.double(rep(0,ncol(x)^2)), rank.tol=as.double(.Machine$double.eps^.75),rank.est=as.integer(0), n=as.integer(sum(good)),q=as.integer(ncol(x)),M=as.integer(nSp), n.theta=as.integer(length(theta)), Mp=as.integer(Mp),Enrow=as.integer(rows.E), rSncol=as.integer(rSncol),deriv=as.integer(deriv), fixed.penalty = as.integer(rp$fixed.penalty),nt=as.integer(control$nthreads), type=as.integer(gdi.type),dVkk=as.double(rep(0,nSp^2))) rV <- matrix(oo$rV,ncol(x),ncol(x)) ## rV%*%t(rV)*scale gives covariance matrix rV <- T %*% rV Vb <- rV%*%t(rV) } else { Vb <- NULL } list("coefficients" = coef, "Vb" = Vb) } ## gam.fitF qgam/R/I_llkGrads.R0000644000176200001440000000354614764044175013562 0ustar liggesusers########## # Internal function which calculates the gradient of each element of the (unpenalized) log-likelihood # wrt the regression coefficients. # INPUT # - gObj: a gamObject fitted using the elf or elflss family # - X: the full "lpmatrix" corresponding to both linear predictors # - type: set it to "DllkDb" if you want the derivative of the log-lik wrt the regression coeff, or # to "DllkDeta" if you want those wrt the linear predictor. # # OUTPUT # - an n by p matrix where the i-th columns is the gradient of the i-th log-likelihood component # .llkGrads <- function(gObj, X, mObj, type = "DllkDb") { discrete <- !is.null(mObj$Xd) type <- match.arg(type, c("DllkDb", "DllkDeta")) y <- gObj$y beta <- coef( gObj ) fam <- gObj$family wt <- gObj$prior.weights offset <- gObj$offset n <- length( y ) p <- length( beta ) tau <- fam$getQu( ) theta <- fam$getTheta( ) co <- fam$getCo( ) sig <- exp( theta ) lam <- co if( is.null(offset) ){ offset <- numeric( n ) } if(discrete){ eta <- Xbd(X=mObj$Xd,beta=beta,k=mObj$kd,ks=mObj$ks,ts=mObj$ts, dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop) }else{ eta <- X %*% beta + offset } mu <- fam$linkinv( eta ) pl <- plogis(y, mu, lam) # [1] Derivatives of llk wrt parameters l1 <- numeric( n ) l1 <- wt * (pl - 1 + tau) / sig # Derivative of link function ig1 <- fam$mu.eta(eta) # [2] Transform llk derivatives wrt mu to derivatives wrt linear predictor (eta) l1 <- l1 * ig1 if( type == "DllkDeta" ){ return(list("l1" = as.matrix(l1), "sig" = sig)) } if(discrete){ stop("DllkDb not implemented when discrete = TRUE") } # [3] Transform into derivatives wrt regression coefficients # The i-th column of 'grads' is the score of the i-th likelihood component grads <- drop(l1) * X return(grads) } qgam/R/I_init_gauss_fit.R0000644000176200001440000000635614764047563015034 0ustar liggesusers#### Fit initial Gaussian models needed by QGAMs later on .init_gauss_fit <- function(form, data, ctrl, argGam, qu, discrete){ # We do not want initialisation or "sp" for qgam to be used to fit the gaussian gam argGam[c("coef", "start", "mustart", "etastart", "sp", "in.out")] <- NULL gam_name <- ifelse(discrete, "bam", "gam") if( is.formula(form) ) { # [A] Mean GAM gFit <- do.call(gam_name, c(list("formula" = form, "data" = quote(data), "family" = gaussian(link=ctrl[["link"]]), "discrete" = discrete), argGam)) varHat <- gFit$sig2 formL <- form } else { # [B] Mean and variance GAM(s) if(discrete){ # B.a Discrete case: fit mean and variance separately gFit <- do.call(gam_name, c(list("formula" = form[[1]], "data" = quote(data), "family" = gaussian(link=ctrl[["link"]][[1]])), argGam, discrete = discrete)) R <- residuals(gFit, type = "response") # Add variable to data with long name to avoid over-writing existing variables! data$my_abs_residuals_xyjz <- abs(R) RFit <- do.call(gam_name, c(list("formula" = as.formula(paste0(c("my_abs_residuals_xyjz", paste0(form[[2]])), collapse = " ")), "data" = quote(data)), argGam, discrete = discrete)) varHat <- RFit$fitted.values^2 * (pi/2) # Convert MAD into variance } else { # B.b NOT Discrete case: fit mean and variance jointly with gaulss gFit <- do.call(gam_name, c(list("formula" = form, "data" = quote(data), "family" = gaulss(link=list(ctrl[["link"]], "logb"), b=ctrl[["b"]])), argGam)) varHat <- 1/gFit$fit[ , 2]^2 } formL <- form[[1]] } # Provide initialisation for fitted quantiles initM <- lapply(qu, function(q){ mustart <- qnorm(q, as.matrix(gFit$fitted.values)[, 1], sqrt(varHat)) # Get initial regression coefficients, several cases to cover: # [A]: we do not model the variance and we have an intercept in the mean model # [B] We do model the variance and/or there is no intercept in the mean model # Under B we create synthetic responses, whose conditional mean is equal to the initial quantile mustart if(!is.list(form) & "(Intercept)" %in% names(coef(gFit))){ # [A] interc <- which(names(coef(gFit)) == "(Intercept)") coefstart <- coef(gFit) coefstart[interc] <- coefstart[interc] + mean(mustart - gFit$fitted.values) } else { # [B] data$my_new_mustart_for_coef_xyz <- mustart + residuals(gFit, type = "response") / sqrt(varHat) muFit <- do.call(gam_name, c(list("formula" = update(formL, my_new_mustart_for_coef_xyz ~ .), "data" = quote(data), "family" = gaussian(link=as.list(ctrl[["link"]])[[1]]), "discrete" = discrete), argGam)) # Potentially pointless update to mustart, but this way should be coherent with coefstart mustart <- muFit$fitted.values coefstart <- coef(muFit) } return( list("mustart" = mustart, "coefstart" = coefstart, "in.out" = NULL) ) # let gam() initialize sp via initial.spg()) }) return( list("gausFit" = gFit, "varHat" = varHat, "formL" = formL, "initM" = initM) ) } qgam/R/tuneLearnFast.R0000644000176200001440000005256314775742532014331 0ustar liggesusers########################## #' Fast learning rate calibration for the Gibbs posterior #' #' @description The learning rate (sigma) of the Gibbs posterior is tuned either by calibrating the credible intervals for the fitted #' curve, or by minimizing the pinball loss on out-of-sample data. This is done by bootrapping or by k-fold cross-validation. #' Here the loss function is minimized, for each quantile, using a Brent search. #' #' @param form A GAM formula, or a list of formulae. See ?mgcv::gam details. #' @param data A data frame or list containing the model response variable and covariates required by the formula. #' By default the variables are taken from environment(formula): typically the environment from which gam is called. #' @param qu The quantile of interest. Should be in (0, 1). #' @param discrete If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details. #' @param err An upper bound on the error of the estimated quantile curve. Should be in (0, 1). #' Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). #' The old default was \code{err=0.05}. #' @param multicore If TRUE the calibration will happen in parallel. #' @param ncores Number of cores used. Relevant if \code{multicore == TRUE}. #' @param cluster An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, #' which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster. #' @param paropts a list of additional options passed into the foreach function when parallel computation is enabled. #' This is important if (for example) your code relies on external data or packages: #' use the .export and .packages arguments to supply them so that all cluster nodes #' have the correct environment set up for computing. #' @param control A list of control parameters for \code{tuneLearn} with entries: \itemize{ #' \item{\code{loss} = loss function use to tune log(sigma). If \code{loss=="cal"} is chosen, then log(sigma) is chosen so that #' credible intervals for the fitted curve are calibrated. See Fasiolo et al. (2017) for details. #' If \code{loss=="pin"} then log(sigma) approximately minimizes the pinball loss on the out-of-sample #' data.} #' \item{\code{sam} = sampling scheme use: \code{sam=="boot"} corresponds to bootstrapping and \code{sam=="kfold"} to k-fold #' cross-validation. The second option can be used only if \code{ctrl$loss=="pin"}.} #' \item{\code{vtype} = type of variance estimator used to standardize the deviation from the main fit in the calibration. #' If set to \code{"m"} the variance estimate obtained by the full data fit is used, if set to \code{"b"} #' than the variance estimated produced by the bootstrap fits are used. By default \code{vtype="m"}.} #' \item{\code{epsB} = positive tolerance used to assess convergence when fitting the regression coefficients on bootstrap data. #' In particular, if \code{|dev-dev_old|/(|dev|+0.1) 0 and values > 0.1 #' don't quite make sense. By default \code{aTol=0.05}.} #' \item{\code{redWd} = parameter which determines when the bracket will be reduced. #' If \code{redWd==10} then the bracket is halved if the nearest solution #' falls within the central 10\% of the bracket's width. By default \code{redWd = 10}.} #' \item{\code{b} = offset parameter used by the mgcv::gauslss, which we estimate to initialize the quantile #' fit (when a variance model is used). By default \code{b=0}.} #' \item{\code{link} = Link function to be used. See \code{?elf} and \code{?elflss} for defaults.} #' \item{\code{verbose} = if TRUE some more details are given. By default \code{verbose=FALSE}.} #' \item{\code{progress} = if TRUE progress in learning rate estimation is reported via printed text. #' \code{TRUE} by default.} #' } #' @param argGam A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed #' in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}. #' @return A list with entries: \itemize{ #' \item{\code{lsig} = a vector containing the values of log(sigma) that minimize the loss function, #' for each quantile.} #' \item{\code{err} = the error bound used for each quantile. Generally each entry is identical to the #' argument \code{err}, but in some cases the function increases it to enhance stability.} #' \item{\code{ranges} = the search ranges by the Brent algorithm to find log-sigma, for each quantile. } #' \item{\code{store} = a list, where the i-th entry is a matrix containing all the locations (1st row) at which #' the loss function has been evaluated and its value (2nd row), for the i-th quantile.} #' \item{\code{final_fit} = a list, where the i-th entry is a list with the estimated conditional quantile #' (\code{mustart}), smoothing parameters (\code{in.out$sp}) and scale parameter #' (\code{in.out$scale}, should always be equal to 1) at the optimal value of log(sigma).} #' } #' @author Matteo Fasiolo . #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @examples #' library(qgam); library(MASS) #' #' ### #' # Single quantile fit #' ### #' # Calibrate learning rate on a grid #' set.seed(5235) #' tun <- tuneLearnFast(form = accel~s(times,k=20,bs="ad"), #' data = mcycle, #' qu = 0.2) #' #' # Fit for quantile 0.2 using the best sigma #' fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.2, lsig = tun$lsig) #' #' pred <- predict(fit, se=TRUE) #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", #' ylim = c(-150, 80)) #' lines(mcycle$times, pred$fit, lwd = 1) #' lines(mcycle$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) #' lines(mcycle$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) #' #' ### #' # Multiple quantile fits #' ### #' # Calibrate learning rate on a grid #' quSeq <- c(0.25, 0.5, 0.75) #' set.seed(5235) #' tun <- tuneLearnFast(form = accel~s(times, k=20, bs="ad"), #' data = mcycle, #' qu = quSeq) #' #' # Fit using estimated sigmas #' fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq, lsig = tun$lsig) #' #' # Plot fitted quantiles #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", #' ylim = c(-150, 80)) #' for(iq in quSeq){ #' pred <- qdo(fit, iq, predict) #' lines(mcycle$times, pred, col = 2) #' } #' #' \dontrun{ #' # You can get a better fit by letting the learning rate change with "accel" #' # For instance #' tun <- tuneLearnFast(form = list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), #' data = mcycle, #' qu = quSeq) #' #' fit <- mqgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), #' data = mcycle, qu = quSeq, lsig = tun$lsig) #' #' # Plot fitted quantiles #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", #' ylim = c(-150, 80)) #' for(iq in quSeq){ #' pred <- qdo(fit, iq, predict) #' lines(mcycle$times, pred, col = 2) #' } #' } #' tuneLearnFast <- function(form, data, qu, discrete = FALSE, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL) { discrete <- .should_we_use_discrete(form = form, discrete = discrete) gam_name <- ifelse(discrete, "bam", "gam") # Removing all NAs, unused variables and factor levels from data data <- .cleanData(.dat = data, .form = form, .drop = argGam$drop.unused.levels) n <- nrow(data) nq <- length(qu) if( !is.null(err) && length(err) != nq ){ if(length(err) == 1) { err <- rep(err, nq) } else { stop("\"err\" should either be a scalar or a vector of the same length as \"qu\".") } } # Setting up control parameter ctrl <- list( "loss" = "calFast", "sam" = "boot", "vtype" = "m", "epsB" = 1e-5, "init" = NULL, "brac" = log( c(1/2, 2) ), "K" = 50, "redWd" = 10, "tol" = .Machine$double.eps^0.25, "aTol" = 0.05, "b" = 0, "init_qgam" = NULL, "link" = "identity", "verbose" = FALSE, "progress" = TRUE ) # Checking if the control list contains unknown names # Entries in "control" substitute those in "ctrl" ctrl <- .ctrlSetup(innerCtrl = ctrl, outerCtrl = control) if( ctrl$progress == "none" ) { ctrl$progress <- FALSE } if( !(ctrl$vtype%in%c("m", "b")) ) stop("control$vtype should be either \"m\" or \"b\" ") if( !(ctrl$loss%in%c("calFast", "cal", "pin")) ) stop("control$loss should be either \"cal\", \"pin\" or \"calFast\" ") if( !(ctrl$sam%in%c("boot", "kfold")) ) stop("control$sam should be either \"boot\" or \"kfold\" ") if( (ctrl$loss=="cal") && (ctrl$sam=="kfold") ) stop("You can't use control$sam == \"kfold\" when ctrl$loss==\"cal\" ") if(discrete && ctrl$loss != "calFast"){ stop("discrete = TRUE can be used only with control$loss != \"calFast\"") } tol <- ctrl[["tol"]] brac <- ctrl[["brac"]] if( length(argGam$sp) && ctrl$loss != c("calFast") ){ stop("Cannot fix smoothing parameters unless control$loss == \"calFast\".") } # Sanity check if( tol > 0.1 * abs(diff(brac)) ) stop("tol > bracket_widths/10, choose smaller tolerance or larger bracket") if( ctrl$sam == "boot" ){ # Create weights for K boostrap dataset OR... wb <- lapply(1:ctrl[["K"]], function(nouse) tabulate(sample(1:n, n, replace = TRUE), n)) } else { # ... OR for K training sets for CV tmp <- sample(rep(1:ctrl[["K"]], length.out = n), n, replace = FALSE) wb <- lapply(1:ctrl[["K"]], function(ii) tabulate(which(tmp != ii), n)) } tmp <- ctrl$init_qgam if(is.null(tmp)){ tmp <- .init_gauss_fit(form = form, data = data, ctrl = ctrl, argGam = argGam, qu = qu, discrete = discrete) } gausFit <- tmp$gausFit formL <- tmp$formL varHat <- tmp$varHat initM <- tmp$initM # Order quantiles so that those close to the median are dealt with first oQu <- order( abs(qu - 0.5) ) # (Optional) Initializing the search range for sigma if( is.null(ctrl[["init"]]) ){ # We assume lam~0 and we match the variance of a symmetric (median) Laplace density with that of the Gaussian fit. # This is an over-estimate for extreme quantiles, but experience suggests that it's better erring on the upper side. tmp <- 0.5 #qu[ oQu[1] ] isig <- log(sqrt( mean(varHat) * (tmp^2*(1-tmp)^2) / (2*tmp^2-2*tmp+1) )) } else { isig <- ctrl[["init"]] } # Create gam object for full data fits mObj <- do.call(gam_name, c(list("formula" = formL, "family" = quote(elf(qu = NA, co = NA, theta = NA, link = ctrl$link)), "data" = quote(data), "fit" = FALSE, "discrete" = discrete), argGam)) # Remove "sp" as it is already been fixed argGam <- argGam[ names(argGam) != "sp" ] # Create gam object for bootstrap fits bObj <- do.call(gam_name, c(list("formula" = formL, "family" = quote(elf(qu = NA, co = NA, theta = NA, link = ctrl$link)), "data" = quote(data), "sp" = if(length(gausFit$sp)){gausFit$sp}else{NULL}, fit = FALSE, "discrete" = discrete), argGam)) # Preparing bootstrap object for gam.fit3 bObj <- .prepBootObj(obj = bObj, eps = ctrl$epsB, control = argGam$control) # Preparing reparametrization list and hide it within mObj. This will be needed by the sandwich calibration if( ctrl$loss == "calFast" ){ mObj$hidRepara <- .prepBootObj(obj = mObj, eps = NULL, control = argGam$control)[ c("UrS", "Mp", "U1") ] } # Create prediction design matrices for each bootstrap sample or CV fold class( mObj ) <- c("gam", "glm", "lm") mObj$coefficients <- rep(0, ncol(mObj$X)) # Needed to fool predict.gam # Stuff needed for the sandwich estimator if(discrete){ pMat <- NULL colmX <- XWyd(X=mObj$Xd,w=rep(1,n),y=rep(1,n),k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop)/n sandStuff <- list("XFull" = pMat, "EXXT" = XWXd(X=mObj$Xd,w=rep(1,n),k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc, drop=mObj$drop)/n, # E(xx^T) "EXEXT" = tcrossprod( colmX, colmX)) # E(x)E(x)^T }else{ pMat <- predict.gam(mObj, newdata = data, type = "lpmatrix") sandStuff <- list("XFull" = pMat, "EXXT" = crossprod(pMat, pMat) / n, # E(xx^T) "EXEXT" = tcrossprod( colMeans(pMat), colMeans(pMat))) # E(x)E(x)^T } if( multicore ){ # Create cluster tmp <- .clusterSetUp(cluster = cluster, ncores = ncores) #, exportALL = TRUE) cluster <- tmp$cluster ncores <- tmp$ncores clusterCreated <- tmp$clusterCreated registerDoParallel(cluster) # Load "qgam" and user-specified packages tmp <- unique( c("qgam", paropts[[".packages"]]) ) clusterExport(cluster, "tmp", envir = environment()) clusterEvalQ(cluster, { lapply(tmp, library, character.only = TRUE) }) paropts[[".packages"]] <- NULL # Export bootstrap objects, prediction matrix and user-defined stuff tmp <- unique( c("bObj", "pMat", "wb", "ctrl", "argGam", ".egamFit", paropts[[".export"]]) ) clusterExport(cluster, tmp, envir = environment()) paropts[[".export"]] <- NULL } # Estimated learning rates, num of bracket expansions, error rates and bracket ranges used in bisection sigs <- efacts <- errors <- numeric(nq) rans <- matrix(NA, nq, 2) store <- vector("list", nq) final_fit <- vector("list", nq) names(sigs) <- names(errors) <- rownames(rans) <- qu # Here we need bTol > aTol, otherwise the new bracket will be too close to the probable solution bTol <- 4*ctrl$aTol if( is.null(err) ){ err <- .getErrParam(qu = qu, gFit = gausFit, varHat = varHat) } if(ctrl$progress){ cat("Estimating learning rate. Each dot corresponds to a loss evaluation. \n") } for(ii in 1:nq) { oi <- oQu[ii] ef <- 1 if(ctrl$progress){ cat("qu =", qu[oi]) } repeat{ # Compute bracket srange <- isig + ef * brac # Estimate log(sigma) using brent methods with current bracket (srange) res <- .tuneLearnFast(mObj = mObj, bObj = bObj, pMat = pMat, sandStuff = sandStuff, wb = wb, qu = qu[oi], err = err[oi], srange = srange, gausFit = gausFit, varHat = varHat, initM = initM[[oi]], multicore = multicore, cluster = cluster, ncores = ncores, paropts = paropts, control = ctrl, argGam = argGam) # Store loss function evaluations store[[oi]] <- cbind(store[[oi]], res[["store"]]) final_fit[[oi]] <- res[["final_fit"]] lsig <- res$minimum # If solution not too close to boundary store results and determine bracket for next iteration if( all(abs(lsig-srange) > ctrl$aTol * abs(diff(srange))) ){ sigs[oi] <- lsig rans[oi, ] <- srange efacts[oi] <- ef errors[oi] <- res$err # Determine what quantile needs to be dealt with next, then choose bracket and initialization using old results if(ii < nq) { kk <- oQu[ which.min(abs(qu[oQu[ii+1]] - qu[oQu[1:ii]])) ] isig <- sigs[kk] wd <- abs(diff(rans[kk, ])) brac <- c(-1, 1) * wd / 2 # If kk solution close to center of kk bracket, halve the bracket size # (unless the size of the bracket is < 10*tol or the bracket has been expanded in the old iteration) if( (abs(isig - mean(rans[kk, ])) < wd/ctrl$redWd) && (wd > 10*tol) && (efacts[kk] == 1)) brac <- brac / 2 } break } # If solution is close to bracket boundaries, we shift bracket and expand it # This (- wd + bTol*wd)/2 is divided by 2 to make the algorithm more reluctant to reduce lsig wd <- abs( diff(brac) ) isig <- lsig + ifelse(lsig-srange[1] < ctrl$aTol*wd, (- wd + bTol*wd)/2, wd - bTol*wd) ef <- 2*ef } if( ctrl$verbose && (nq>1) ) { tseq <- oQu[1:ii] tmp <- rans[tseq, , drop = FALSE] layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE), heights=c(2, 1)) par(mai = c(1, 1, 0.1, 0.1)) plot(qu[tseq], sigs[oQu[1:ii]], ylim = range(as.vector(tmp)), xlim = range(qu), col = 2, ylab = expression("Log(" * sigma * ")"), xlab = "qu") points(qu[tseq], tmp[ , 1], pch = 3) points(qu[tseq], tmp[ , 2], pch = 3) points(qu[tseq], rowMeans(tmp), pch = 3) for(zz in 1:ii) segments(qu[oQu[zz]], rowMeans(rans)[oQu[zz]] - abs(diff(tmp[zz, ]))/ctrl$redWd, qu[oQu[zz]], rowMeans(rans)[oQu[zz]] + abs(diff(tmp[zz, ]))/ctrl$redWd, col = 1) plot(qu, efacts, xlab = "qu", "ylab" = "Bracket expansions") plot(qu, errors) } if(ctrl$progress){ cat("done \n") } } if( any(errors > err) ){ message("We had to increase \`err\` for some of the quantiles. See fit$calibr$err") } names(sigs) <- qu out <- list("lsig" = sigs, "err" = errors, "ranges" = rans, "store" = store, "final_fit" = final_fit) attr(out, "class") <- "learnFast" # Close the cluster if it was opened inside this function if(multicore && clusterCreated) stopCluster(cluster) return( out ) } ########################################################################## ### Internal version, which works for a single quantile qu ########################################################################## .tuneLearnFast <- function(mObj, bObj, pMat, sandStuff, wb, qu, err, srange, gausFit, varHat, initM, multicore, cluster, ncores, paropts, control, argGam) { init <- list("initM" = initM, "initB" = vector("list", control$K)) # If we get convergence error, we increase "err" up to 0.2. If the error persists (or if the # error is of another nature) we throw an error repeat{ res <- tryCatch(.brent(brac=srange, f=.objFunLearnFast, mObj = mObj, bObj = bObj, wb = wb, init = init, pMat = pMat, SStuff = sandStuff, qu = qu, ctrl = control, varHat = varHat, err = err, argGam = argGam, multicore = multicore, paropts = paropts, cluster = cluster, t = control$tol, aTol = control$aTol), error = function(e) e) if("error" %in% class(res)){ if( grepl("can't correct step size", res) ) { if(err < 0.2){ err <- min(2*err, 0.2) if(control$verbose) message( paste("Increase \"err\" to ", err, " to get convergence") ) } else { stop("I increased \"err\" up to 0.2, but still didn't get convergence.") } } else { stop( res ) } } else { break } } res[["err"]] <- err return( res ) } qgam/R/cqcheck.R0000644000176200001440000002712413732075760013144 0ustar liggesusers########################## #' Visually checking a fitted quantile model #' #' @description Given an additive quantile model, fitted using \code{qgam}, \code{cqcheck} provides some plots #' that allow to check what proportion of responses, \code{y}, falls below the fitted quantile. #' #' @param obj the output of a \code{qgam} call. #' @param v if a 1D plot is required, \code{v} should be either a single character or a numeric vector. In the first case #' \code{v} should be the names of one of the variables in the dataframe \code{X}. In the second case, the length #' of \code{v} should be equal to the number of rows of \code{X}. If a 2D plot is required, \code{v} should be #' either a vector of two characters or a matrix with two columns. #' @param X a dataframe containing the data used to obtain the conditional quantiles. By default it is NULL, in which #' case predictions are made using the model matrix in \code{obj$model}. #' @param y vector of responses. Its i-th entry corresponds to the i-th row of X. By default it is NULL, in which #' case it is internally set to \code{obj$y}. #' @param nbin a vector of integers of length one (1D case) or two (2D case) indicating the number of bins to be used #' in each direction. Used only if \code{bound==NULL}. #' @param bound in the 1D case it is a numeric vector whose increasing entries represent the bounds of each bin. #' In the 2D case a list of two vectors should be provided. \code{NULL} by default. #' @param lev the significance levels used in the plots, this determines the width of the confidence #' intervals. Default is 0.05. #' @param scatter if TRUE a scatterplot is added (using the \code{points} function). FALSE by default. #' @param ... extra graphical parameters to be passed to \code{plot()}. #' @return Simply produces a plot. #' @details Having fitted an additive model for, say, quantile \code{qu=0.4} one would expect that about 40% of the #' responses fall below the fitted quantile. This function allows to visually compare the empirical number #' of responses (\code{qu_hat}) falling below the fit with its theoretical value (\code{qu}). In particular, #' the responses are binned, which the bins being constructed along one or two variables (given be arguments #' \code{v}). Let (\code{qu_hat[i]}) be the proportion of responses below the fitted quantile in the ith bin. #' This should be approximately equal to \code{qu}, for every i. In the 1D case, when \code{v} is a single #' character or a numeric vector, \code{cqcheck} provides a plot where: the horizontal line is \code{qu}, #' the dots correspond to \code{qu_hat[i]} and the grey lines are confidence intervals for \code{qu}. The #' confidence intervals are based on \code{qbinom(lev/2, siz, qu)}, if the dots fall outside them, then #' \code{qu_hat[i]} might be deviating too much from \code{qu}. In the 2D case, when \code{v} is a vector of two #' characters or a matrix with two columns, we plot a grid of bins. The responses are divided between the bins #' as before, but now don't plot the confidence intervals. Instead we report the empirical proportions \code{qu_hat[i]} #' for the non-empty bin, and with colour the bins in red if \code{qu_hat[i]. #' @examples #' ####### #' # Bivariate additive model y~1+x+x^2+z+x*z/2+e, e~N(0, 1) #' ####### #' \dontrun{ #' library(qgam) #' set.seed(15560) #' n <- 500 #' x <- rnorm(n, 0, 1); z <- rnorm(n) #' X <- cbind(1, x, x^2, z, x*z) #' beta <- c(0, 1, 1, 1, 0.5) #' y <- drop(X %*% beta) + rnorm(n) #' dataf <- data.frame(cbind(y, x, z)) #' names(dataf) <- c("y", "x", "z") #' #' #### Fit a constant model for median #' qu <- 0.5 #' fit <- qgam(y~1, qu = qu, data = dataf) #' #' # Look at what happens along x: clearly there is non linear pattern here #' cqcheck(obj = fit, v = c("x"), X = dataf, y = y) #' #' #### Add a smooth for x #' fit <- qgam(y~s(x), qu = qu, data = dataf) #' cqcheck(obj = fit, v = c("x"), X = dataf, y = y) # Better! #' #' # Lets look across x and z. As we move along z (x2 in the plot) #' # the colour changes from green to red #' cqcheck(obj = fit, v = c("x", "z"), X = dataf, y = y, nbin = c(5, 5)) #' #' # The effect look pretty linear #' cqcheck(obj = fit, v = c("z"), X = dataf, y = y, nbin = c(10)) #' #' #### Lets add a linear effect for z #' fit <- qgam(y~s(x)+z, qu = qu, data = dataf) #' #' # Looks better! #' cqcheck(obj = fit, v = c("z")) #' #' # Lets look across x and y again: green prevails on the top-left to bottom-right #' # diagonal, while the other diagonal is mainly red. #' cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) #' #' ### Maybe adding an interaction would help? #' fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) #' #' # It does! The real model is: y ~ 1 + x + x^2 + z + x*z/2 + e, e ~ N(0, 1) #' cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) #' } #' cqcheck <- function(obj, v, X = NULL, y = NULL, nbin = c(10, 10), bound = NULL, lev = 0.05, scatter = FALSE, ...) { #### Set up if( is.null(X) ){ X <- obj$model if( is.null(y) ){ y <- obj$y } } else { if( is.null(y) ){ stop("If you provide X you must provide also the corresponding vector of responses y") } } if( length(y)!=nrow(X) ){ stop("length(y)!=nrow(X)") } ####### Setting up 1D and 2D cases if( is.character(v) ){ # Name(s) of variable(s) in X provided OR ... if(length(v) == 1){ ## 1D CASE ## if( !(v %in% names(X)) ) stop("(v %in% names(X)) == FALSE") x1 <- X[[v]] x2 <- NULL } else { if(length(v) == 2){ ## 2D CASE ## if( !(v[1] %in% names(X)) ) stop("(v[1] %in% names(X)) == FALSE") if( !(v[2] %in% names(X)) ) stop("(v[2] %in% names(X)) == FALSE") x1 <- X[[v[1]]] x2 <- X[[v[2]]] } else { stop("If is.character(v)==TRUE, then length(v) should be either 1 or 2.") } } } else { # ... actual numeric value of the variable(s) provided if(is.vector(v)){ ## 1D CASE ## x1 <- v x2 <- NULL if(length(v) != nrow(X)){ stop("length(v) != ncol(X)") } } else { if(is.matrix(v)){ ## 2D CASE ## if(ncol(v)!=2){ stop("In the 2D case, v should be a matrix with 2 columns or a vector of 2 characters") } x1 <- v[ , 1] x2 <- v[ , 2] } else { stop("In the 2D case, v should be a matrix with 2 columns or a vector of 2 characters") } } } # Discard NAs from X, y, x1 and x2. We don't do this on v, hence if v is numeric it is dangerous to use it from here onwards good <- complete.cases(X, y, x1, x2) y <- y[ good ] X <- X[good, , drop = FALSE] x1 <- x1[ good ] x2 <- x2[ good ] # Calculating proportion of observation falling below estimate quantile curve n <- nrow(X) mu <- as.matrix(predict(obj, newdata = X, type = "response"))[ , 1] res <- (mu - y) > 0 qu <- obj$family$getQu() # Now branching for main computation if( is.null(x2) ) ################ ONE VARIABLE { if(length(x1) != n) stop("length(x1) != ncol(X)") if( is.null(bound )){ # Create bounds OR ... nbin1 <- nbin[1] bound <- seq(min(x1), max(x1), length.out = nbin1 + 1) } else { # ... use those already given nbin1 <- length(bound-1) } # For each bin: count number of responses that are smaller than the fitted quantile indx <- as.factor( .bincode(x1, bound, TRUE, TRUE) ) # Attribute data to bins levels(indx) <- 1:nbin1 bsize <- as.vector( table(indx) ) # Count number of data in each bin indx <- as.integer(indx) bins <- numeric(nbin1) for(ii in 1:nbin1){ bins[ii] <- sum(res[indx==ii]) } # Count number of 1s in each bin # Remove empty bins while( any(bsize == 0) ) { bad <- which(bsize == 0)[1] bsize <- bsize[-bad] bins <- bins[-bad] bound <- bound[ -min(bad+1, nbin1) ] if(badbad] <- indx[indx>bad]-1 } nbin1 <- nbin1 - 1 } ub <- qbinom(lev/2, bsize, qu, lower.tail = FALSE) / bsize lb <- qbinom(lev/2, bsize, qu) / bsize #svpar <- par(no.readonly = TRUE) par(mar = c(5.1, 4.6, 4.1, 2.1)) x <- sort(x1) tmp <- rep(bins/bsize, bsize) plot(x, tmp, ylim = range(ub, lb, tmp), type = 'l', col = "white", ylab = expression(hat(P)(y lb[ii], 1, 2)) rug(x1[indx==ii], col = ifelse(ii%%2, 3, 4)) } #par(svpar) # Warning: this causes problems with shiny } else { ################ ... TWO VARIABLES if(length(x1) != n) stop("length(x1) != ncol(X)") if(length(x2) != n) stop("length(x2) != ncol(X)") if( is.null(bound) ){ # Bounds created OR ... if( length(nbin) != 2 ){ stop("In the 2D case, nbin should be a vector of length 2") } bound1 <- seq(min(x1), max(x1), length.out = nbin[1] + 1) bound2 <- seq(min(x2), max(x2), length.out = nbin[2] + 1) } else { # ... already provided if( length(bound) != 2 ){ stop("In the 2D case, bound a list of two numeric vectors") } bound1 <- bound[[1]] bound2 <- bound[[2]] nbin <- c(length(bound1)-1, length(bound2)-1) } # For each bin: count number of responses that are smaller than the fitted quantile bins <- bsize <- matrix(0, nbin[2], nbin[1]) for(ir in 1:nbin[2]){ # From bottom upward inRow <- which( x2 >= bound2[ir] & x2 <= bound2[ir+1] ) if(length(inRow)){ x1In <- x1[inRow] resIn <- res[inRow] for(ic in 1:nbin[1]){ # From left to right tmp <- which( x1In >= bound1[ic] & x1In <= bound1[ic+1] ) bsize[ir, ic] <- length(tmp) bins[ir, ic] <- sum( resIn[tmp] ) }}} # Plot! plot(x1, x2, pch = ".", col = "white", ylim = range(bound2), xlim = range(bound1), main = expression(hat(P)(yqu){ pr>b } else{ prqu, 0, alpha = ifelse(sig, 0.8, 0.3))) text(x = (bound1[ic]+bound1[ic+1])/2, y = (bound2[ir]+bound2[ir+1])/2, paste(round(pr, 3), ifelse(sig, "*", ''), sep = "")) } }} rug(x1, side = 1) rug(x2, side = 2) if(scatter){ points(x1, x2, pch = ".") } } return( invisible(NULL) ) }qgam/R/I_tuneLearnFullFits.R0000644000176200001440000001220214666575363015423 0ustar liggesusers############### #### Internal function that does the full-data fits ############### .tuneLearnFullFits <- function(lsig, form, fam, qu, err, ctrl, data, discrete, argGam, gausFit, varHat, initM){ n <- nrow(data) nt <- length(lsig) gam_name <- ifelse(discrete, "bam", "gam") # Create gam object for full data fits mObj <- do.call(gam_name, c(list("formula" = form, "family" = quote(elf(qu = qu, co = NA, theta = NA, link = ctrl$link)), "data" = quote(data), "discrete" = discrete, "fit" = FALSE), argGam)) # Remove "sp" as it is already been fixed argGam <- argGam[ names(argGam) != "sp" ] # Preparing reparametrization list and hide it within mObj. This will be needed by the sandwich calibration if( ctrl$loss == "calFast" ){ mObj$hidRepara <- .prepBootObj(obj = mObj, eps = NULL, control = argGam$control)[ c("UrS", "Mp", "U1") ] } # Store degrees of freedom for each value of lsig tmp <- pen.edf( gausFit ) if( length(tmp) ) { edfStore <- list( ) } else { edfStore <- NULL } # FULL data fits, used to estimate the smoothing parameters store <- vector("list", nt) for( ii in 1:nt ) # START lsigma loop, from smallest to largest (because when lsig is large the smooth params diverge) { mObj$family$putCo( err * sqrt(2*pi*varHat) / (2*log(2)) ) mObj$family$putTheta( lsig[ii] ) convProb <- FALSE # Variable indicating convergence problems withCallingHandlers({ call_list <- c(list("G" = quote(mObj), "in.out" = initM[["in.out"]], "mustart" = initM[["mustart"]], "discrete" = discrete), argGam) # Annoyingly, initial coeffs are supplied via "coef" argument in bam() and "start" in gam() call_list[[ ifelse(discrete, "coef", "start") ]] <- initM$coefstart mFit <- do.call(gam_name, call_list) }, warning = function(w) { if (length(grep("Fitting terminated with step failure", conditionMessage(w))) || length(grep("Iteration limit reached without full convergence", conditionMessage(w)))) { message( paste("log(sigma) = ", round(lsig[ii], 3), " : outer Newton did not converge fully.", sep = "") ) convProb <<- TRUE invokeRestart("muffleWarning") } }) if( !is.null(edfStore) ) { edfStore[[ii]] <- c(lsig[ii], pen.edf(mFit)) } # Create prediction matrix (only in the first iteration) if( ii == 1 ){ # Stuff needed for the sandwich estimator if(discrete){ pMat <- NULL colmX <- XWyd(X=mObj$Xd,w=rep(1,n),y=rep(1,n),k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop)/n sandStuff <- list("XFull" = pMat, "EXXT" = XWXd(X=mObj$Xd,w=rep(1,n),k=mObj$kd,ks=mObj$ks, ts=mObj$ts,dt=mObj$dt,v=mObj$v,qc=mObj$qc, drop=mObj$drop)/n, # E(xx^T) "EXEXT" = tcrossprod( colmX, colmX)) # E(x)E(x)^T }else{ pMat <- predict.gam(mFit, type = "lpmatrix") sandStuff <- list("XFull" = pMat, "EXXT" = crossprod(pMat, pMat) / n, # E(xx^T) "EXEXT" = tcrossprod( colMeans(pMat), colMeans(pMat))) # E(x)E(x)^T } } # Standard deviation of fitted quantile using full data sdev <- NULL if(ctrl$loss %in% c("cal", "calFast") && ctrl$vtype == "m"){ Vp <- mFit$Vp if(discrete){ sdev <- diagXVXd(X=mObj$Xd,V=Vp,k=mObj$kd,ks=mObj$ks,ts=mObj$ts, dt=mObj$dt,v=mObj$v,qc=mObj$qc,drop=mObj$drop)^.5 }else{ sdev <- sqrt(rowSums((pMat %*% Vp) * pMat)) # same as sqrt(diag(pMat%*%Vp%*%t(pMat))) but (WAY) faster } } initM <- list("mustart" = mFit$fitted.values, "coefstart" = coef(mFit), "in.out" = list("sp" = if(gam_name == "bam" & !is.null(mFit$full.sp)){ mFit$full.sp } else { mFit$sp }, "scale" = 1)) if( ctrl$loss == "calFast" ){ # Fast calibration OR ... Vbias <- .biasedCov(fit = mFit, X = sandStuff$XFull, EXXT = sandStuff$EXXT, EXEXT = sandStuff$EXEXT, mObj = mObj) outLoss <- .sandwichLoss(mFit = mFit, X = pMat, sdev = sdev, repar = mObj$hidRepara, alpha = Vbias$alpha, VSim = Vbias$V, mObj = mObj) store[[ii]] <- list("loss" = outLoss, "convProb" = convProb) } else { # Bootstrapping or cross-validation: full data fit will be used when fitting the bootstrap datasets store[[ii]] <- list("sp" = mFit$sp, "fit" = mFit$fitted, "co" = mFit$family$getCo(), "init" = initM$coefstart, "sdev" = sdev, "weights" = mFit$working.weights, "res" = mFit$residuals, "convProb" = convProb) } } if( !is.null(edfStore) ){ edfStore <- do.call("rbind", edfStore) colnames(edfStore) <- c("lsig", names( pen.edf(mFit) )) } return( list("store" = store, "edfStore" = edfStore, "pMat" = if(ctrl$loss != "calFast") { pMat } else { NULL } ) ) } qgam/R/mqgam.R0000644000176200001440000002031714775742476012657 0ustar liggesusers########################## #' Fit multiple smooth additive quantile regression models #' #' @description This function fits a smooth additive regression model to several quantiles. #' #' @param form A GAM formula, or a list of formulae. See ?mgcv::gam details. #' @param data A data frame or list containing the model response variable and covariates required by the formula. #' By default the variables are taken from environment(formula): typically the environment from which gam is called. #' @param qu A vectors of quantiles of interest. Each entry should be in (0, 1). #' @param discrete If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details. #' @param lsig The value of the log learning rate used to create the Gibbs posterior. By defauls \code{lsig=NULL} and this #' parameter is estimated by posterior calibration described in Fasiolo et al. (2017). Obviously, the function is much faster #' if the user provides a value. #' @param err An upper bound on the error of the estimated quantile curve. Should be in (0, 1). If it is a vector, it should be of the #' same length of \code{qu}. Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). #' The old default was \code{err=0.05}. #' @param multicore If TRUE the calibration will happen in parallel. #' @param ncores Number of cores used. Relevant if \code{multicore == TRUE}. #' @param cluster An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, #' which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster. #' @param paropts a list of additional options passed into the foreach function when parallel computation is enabled. #' This is important if (for example) your code relies on external data or packages: #' use the .export and .packages arguments to supply them so that all cluster nodes #' have the correct environment set up for computing. #' @param control A list of control parameters. The only one relevant here is \code{link}, which is the link function #' used (see \code{?elf} and \code{?elflss} for defaults). All other control parameters are used by #' \code{tuneLearnFast}. See \code{?tuneLearnFast} for details. #' @param argGam A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed #' in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}. #' @return A list with entries: \itemize{ #' \item{\code{fit} = a \code{gamObject}, one for each entry of \code{qu}. Notice that the #' slots \code{model} and \code{smooth} of each object has been removed to save memory. #' See \code{?gamObject}. } #' \item{\code{model} = the \code{model} slot of the \code{gamObject}s in the \code{fit} slot. This is the same for every #' fit, hence only one copy is stored.} #' \item{\code{smooth} = the \code{smooth} slot of the \code{gamObject}s in the \code{fit} slot. This is the same for every #' fit, hence only one copy is stored.} #' \item{\code{calibr} = a list which is the output of an internal call to \code{tuneLearnFast}, which is used for calibrating #' the learning rate. See \code{?tuneLearnFast} for details.} #' } #' @author Matteo Fasiolo . #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2021. #' qgam: Bayesian Nonparametric Quantile Regression Modeling in R. #' Journal of Statistical Software, 100(9), 1-31, \doi{10.18637/jss.v100.i09}. #' @examples #' #' ##### #' # Multivariate Gaussian example #' #### #' library(qgam) #' set.seed(2) #' dat <- gamSim(1, n=300, dist="normal", scale=2) #' #' fit <- mqgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = c(0.2, 0.8)) #' #' invisible( qdo(fit, 0.2, plot, pages = 1) ) #' #' ##### #' # Univariate "car" example #' #### #' library(qgam); library(MASS) #' #' # Fit for quantile 0.8 using the best sigma #' quSeq <- c(0.2, 0.4, 0.6, 0.8) #' set.seed(6436) #' fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) #' #' # Plot the fit #' xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) #' plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) #' for(iq in quSeq){ #' pred <- qdo(fit, iq, predict, newdata = xSeq) #' lines(xSeq$times, pred, col = 2) #' } #' mqgam <- function(form, data, qu, discrete = FALSE, lsig = NULL, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL) { nq <- length(qu) discrete <- .should_we_use_discrete(form = form, discrete = discrete) # Removing all NAs, unused variables and factor levels from data data <- .cleanData(.dat = data, .form = form, .drop = argGam$drop.unused.levels) if( !is.null(err) && length(err) != nq ){ if(length(err) == 1) { err <- rep(err, nq) } else { stop("\"err\" should either be a scalar or a vector of the same length as \"qu\".") } } # Setting up control parameter (mostly used by tuneLearnFast) ctrl <- list("verbose" = FALSE, "b" = 0, "link" = "identity") # Checking if the control list contains unknown names entries in "control" substitute those in "ctrl" ctrl <- .ctrlSetup(innerCtrl = ctrl, outerCtrl = control, verbose = FALSE) ctrl$init_qgam <- .init_gauss_fit(form = form, data = data, ctrl = ctrl, argGam = argGam, qu = qu, discrete = discrete) # Output list out <- list() if( is.null(lsig) ) { # Selecting the learning rate sigma OR .... learn <- tuneLearnFast(form = form, data = data, err = err, qu = qu, discrete = discrete, multicore = multicore, cluster = cluster, ncores = ncores, paropts = paropts, control = ctrl, argGam = argGam) lsig <- learn$lsig err <- learn$err # Over-writing err parameters! out[["calibr"]] <- learn } else { # ... use the one provided by the user if( length(lsig) == 1 ) { lsig <- rep(lsig, nq) } else { if( length(lsig) != nq ) stop("lsig should either be scalar or a vector of length(qu) ") } } # Fitting a quantile model for each qu out[["fit"]] <- lapply(1:nq, function(ii){ if( !is.null(out$calibr) ){ # Annoyingly, initial coeffs are supplied via "coef" argument in bam() and "start" in gam() argGam[[ ifelse(discrete, "coef", "start") ]] <- learn$final_fit[[ii]]$coefstart argGam$mustart <- learn$final_fit[[ii]]$mustart argGam$in.out <- learn$final_fit[[ii]]$in.out ctrl$init_qgam$initM <- NA # initM should NOT be used by qgam, hence we want to get an error if it gets used. } else { ctrl$initM <- ctrl$initM[[ii]] } .out <- qgam(form, data, qu[ii], lsig = lsig[ii], err = err[ii], discrete = discrete, multicore = FALSE, control = ctrl, argGam = argGam) # Removing data and smooth matrix to reduce memory requirements. There quantities # are kept only inside the first fit ( qfit[[1]] ) if(ii > 1){ .out$model <- NULL .out$smooth <- NULL .out$call$data <- NULL } return( .out ) }) # Storing output list names(out[["fit"]]) <- qu out[["model"]] <- out[["fit"]][[1]][["model"]] out[["smooth"]] <- out[["fit"]][[1]][["smooth"]] out[["data"]] <- out[["fit"]][[1]][["call"]][["data"]] out[["fit"]][[1]][["model"]] <- NULL out[["fit"]][[1]][["smooth"]] <- NULL out[["fit"]][[1]][["call"]][["data"]] <- NULL class(out) <- "mqgam" return( out ) } qgam/R/I_biasedCov.R0000644000176200001440000000155414447032120013674 0ustar liggesusers########## # Internal function estimates the covariance matrix of the score function, under the assumption that # Dllk/Deta is independent of the covariate vector x. # INPUT # - fit: a gamObject fitted using the elf or elflss family # - EXXT: E(xx^T) # - EXEXT: E(x)E(x)^T # - X: the model matrix # # OUTPUT # - the estimate of cov(DlDeta * X) and the mixture parameter alpha in (0, 1) to be used. # .biasedCov <- function(fit, X, EXXT, EXEXT, mObj) { npar <- length( coef(fit) ) DllDeta <- .llkGrads(gObj = fit, X = X, mObj = mObj, type = "DllkDeta") ESS <- sum(abs(DllDeta$l1[ , 1]))^2 / sum(DllDeta$l1[ , 1]^2) # If DlDeta and X are independent: cov(DlDeta * X) = E(X*X^T) * E(DlDeta^2) - E(DlDeta)^2 * E(X)*E(X)^T V <- EXXT * mean(DllDeta$l1^2) - mean(DllDeta$l1)^2 * EXEXT alpha <- min(ESS / npar^2, 1) return( list("V" = V, "alpha" = alpha ) ) }qgam/R/generic_functions.R0000644000176200001440000000145613462141521015234 0ustar liggesusers########################## #' Generic checking function #' #' @description Generic function for checking R objects which produces, for instance, convergence tests or diagnostic plots. #' For \code{qgam} objects \code{check.qgam()} will be used. #' @param obj the object to be checked. #' @param ... extra arguments, mainly used by graphic functions. #' @return Reports the results of convergence tests and/or produces diagnostic plots. #' @author Matteo Fasiolo . #' @examples #' ####### #' # Using check.qgam #' ####### #' library(qgam) #' set.seed(0) #' dat <- gamSim(1, n=200) #' b<-qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) #' plot(b, pages=1) #' check(b, pch=19, cex=.3) #' @docType methods #' check <- function (obj, ...) { UseMethod("check", obj) }qgam/R/I_fitShash.R0000644000176200001440000000453213457635232013562 0ustar liggesusers####### # Fitting the SHASH density using optim. ####### # .fitShash <- function(x){ shashF0 <- function(param, x){ - .llkShash(x = x, mu = param[1], tau = param[2], eps = param[3], phi = param[4], deriv = 0)$l0 } shashF1 <- function(param, x){ - .llkShash(x = x, mu = param[1], tau = param[2], eps = param[3], phi = param[4], deriv = 1)$l1 } shashF2 <- function(param, x){ - .llkShash(x = x, mu = param[1], tau = param[2], eps = param[3], phi = param[4], deriv = 2)$l2 } # Seems to work OK, we could use Newton method in optimx but the Hessian was giving problems fitSH <- optim(par = c(mean(x), log(sd(x)), 0, 0), fn = shashF0, gr = shashF1, method = "BFGS", x = x) return( fitSH ) } # # # Testing by finite differences # library(numDeriv) # y <- rchisq(1000, df = 3) # parSH <- qgam:::.fitShash( y )$par # # # Checking gradient # jacobian(func = function(x){ # - qgam:::.llkShash(x = y, mu = x[1], tau = x[2], eps = x[3], phi = x[4], deriv = 0)$l0 # }, x = parSH) # # - qgam:::.llkShash(x = y, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4], deriv = 1)$l1 # # par(mfrow = c(2, 2)) # # [1] Test of t-distributed # x <- rt(1000, 5) # parSH <- qgam:::.fitShash( x )$par # # xseq <- seq(-4, 4, length.out = 1000) # den <- unlist(sapply(xseq, qgam:::.llkShash, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4])) # # plot(xseq, exp(den), col = 1, ylim = range(exp(den), dt(xseq, 5))) # lines(xseq, dt(xseq, 5), col = 2) # abline(v = qgam:::.shashMode(parSH), lty = 2) # # # [2] Test of chi-squ # x <- rchisq(1000, df = 3) # parSH <- qgam:::.fitShash( x )$par # # xseq <- seq(0, 6, length.out = 1000) # den <- unlist(sapply(xseq, qgam:::.llkShash, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4])) # # plot(xseq, exp(den), col = 1, ylim = range(exp(den), dt(xseq, 5))) # lines(xseq, dchisq(xseq, df = 4), col = 2) # abline(v = qgam:::.shashMode(parSH), lty = 2) # # # [3] Test of gamma(3, 1) # x <- rgamma(1000, 3, 1) # parSH <- qgam:::.fitShash( x )$par # # xseq <- seq(0, 6, length.out = 1000) # den <- unlist(sapply(xseq, qgam:::.llkShash, mu = parSH[1], tau = parSH[2], eps = parSH[3], phi = parSH[4])) # # plot(xseq, exp(den), col = 1, ylim = range(exp(den), dt(xseq, 5))) # lines(xseq, dgamma(xseq, 3, 1), col = 2) # abline(v = qgam:::.shashMode(parSH), lty = 2) qgam/R/I_prepBootObj.R0000644000176200001440000000243014447246531014231 0ustar liggesusers############################################### # Function that prepares the bootstrapped gamObject for use # with gam.fit4 or gam.fit5. It manly works out the re-parametrization # to be used, which does not seem to depend on the smoothing parameters # (hence it only needs to be calculated once). # .prepBootObj <- function(obj, eps, control) { if( is.null(control) ){ control <- list() } ctrl <- do.call("gam.control", control) # Overwriting default tolerance, useful for using sloppy convergence test on # bootstrapped fits if( !is.null(eps) ) { ctrl$epsilon <- eps } obj$control <- ctrl obj$rS <- mini.roots(obj$S, obj$off, ncol(obj$X), obj$rank) Ssp <- totalPenaltySpace(obj$S,obj$H,obj$off,ncol(obj$X)) obj$Eb <- Ssp$E ## balanced penalty square root for rank determination purposes obj$U1 <- cbind(Ssp$Y,Ssp$Z) ## eigen space basis obj$Mp <- ncol(Ssp$Z) ## null space dimension obj$UrS <- list() ## need penalty matrices in overall penalty range space... if (length(obj$S)>0) for (i in 1:length(obj$S)) obj$UrS[[i]] <- t(Ssp$Y)%*%obj$rS[[i]] else i <- 0 if (!is.null(obj$H)) { ## then the sqrt fixed penalty matrix H is needed for (RE)ML obj$UrS[[i+1]] <- t(Ssp$Y)%*%mroot(obj$H) } obj$family <- fix.family.link(obj$family) return(obj) }qgam/R/I_shashQf.R0000644000176200001440000000036513447125341013400 0ustar liggesusers### # Quantile function of shash distribution .shashQf <- function(p, param) { mu <- param[1] sig <- exp(param[2]) eps <- param[3] del <- exp(param[4]) return( mu + (del * sig) * sinh((1/del) * asinh(qnorm(p)) + (eps/del)) ) }qgam/R/pinLoss.R0000644000176200001440000000215113467305123013155 0ustar liggesusers########################## #' Pinball loss function #' #' @description Evaluates the pinball loss. #' #' @param y points at which the loss is evaluated. #' @param mu location parameter of the pinball loss. #' @param qu quantile level of the loss. #' @param add if TRUE the losses at which quantile level will be added up. #' @return A numeric vector or matrix of evaluate losses. #' @author Matteo Fasiolo . #' @examples #' n <- 1000 #' x <- seq(0, 4, length.out = n) #' plot(x, pinLoss(x, rep(2, n), qu = 0.9, add = FALSE), type = 'l', ylab = "loss") #' pinLoss <- function(y, mu, qu, add = TRUE){ # Recursive call for multiple quantiles if( length(qu) > 1 ){ n <- length( qu ) l <- sapply(1:n, function(ii){ return( pinLoss(y, mu[ , ii], qu[ii], add = add) ) }) if( is.matrix(l) ){ colnames(l) <- qu } else { names(l) <- qu } return( l ) } tau <- 1 - qu d <- y - mu l <- d * 0 l[d < 0] <- - tau * d[ d < 0 ] l[d > 0] <- - (tau-1) * d[ d > 0 ] if( add ){ l <- sum(l) } return( l ) }qgam/R/I_allVars1.R0000644000176200001440000000167013370055613013467 0ustar liggesusers## # Version of all.vars that doesn't split up terms like x$y into x and y # Copied from all.vars1 function in mgcv 1.18-24 # .allVars1 <- function(form){ vars <- all.vars(form) vn <- all.names(form) vn <- vn[vn%in%c(vars,"$","[[")] ## actual variable related names if ("[["%in%vn) stop("can't handle [[ in formula") ii <- which(vn%in%"$") ## index of '$' if (length(ii)) { ## assemble variable names vn1 <- if (ii[1]>1) vn[1:(ii[1]-1)] go <- TRUE k <- 1 while (go) { n <- 2; while(k. #' @references Machler, M. (2012). Accurately computing log(1-exp(-|a|)). #' URL: \url{https://cran.r-project.org/package=Rmpfr/vignettes/log1mexp-note.pdf}. #' @examples #' set.seed(141) #' library(qgam); #' x <- rnorm(100, 0, 100) #' log1pexp(x) - log1p(exp(x)) log1pexp <- function(x) { indx <- .bincode(x, c(-Inf, -37, 18, 33.3, Inf), right = TRUE, include.lowest = TRUE) kk <- which(indx==1) if( length(kk) ){ x[kk] <- exp(x[kk]) } kk <- which(indx==2) if( length(kk) ){ x[kk] <- log1p( exp(x[kk]) ) } kk <- which(indx==3) if( length(kk) ){ x[kk] <- x[kk] + exp(-x[kk]) } return(x) } qgam/R/cqcheckI.R0000644000176200001440000002374113462140772013252 0ustar liggesusers########################## #' Interactive visual checks for additive quantile fits #' #' @description Given an additive quantile model, fitted using \code{qgam}, \code{cqcheck2DI} provides some interactive #' 2D plots that allow to check what proportion of responses, \code{y}, falls below the fitted quantile. #' This is an interactive version of the \code{cqcheck} function. #' #' @param obj the output of a \code{qgam} call. #' @param v if a 1D plot is required, \code{v} should be either a single character or a numeric vector. In the first case #' \code{v} should be the names of one of the variables in the dataframe \code{X}. In the second case, the length #' of \code{v} should be equal to the number of rows of \code{X}. If a 2D plot is required, \code{v} should be #' either a vector of two characters or a matrix with two columns. #' @param X a dataframe containing the data used to obtain the conditional quantiles. By default it is NULL, in which #' case predictions are made using the model matrix in \code{obj$model}. #' @param y vector of responses. Its i-th entry corresponds to the i-th row of X. By default it is NULL, in which #' case it is internally set to \code{obj$y}. #' @param run if TRUE (default) the function produces an interactive plot, otherwise it returns the corresponding shiny app. #' @param width the width of the main plot. Default is "100\%". #' @param height width the width of the main plot. Default is "680px". #' @return Simply produces an interactive plot. #' @details This is an interactive version of the \code{cqcheck}, see \code{?cqcheck} for details. The main interactive #' feature is that one can select an area by brushing, and then double-click to zoom in. In the 1D case the vertical #' part of the selected area is not use: we zoom only along the x axis. Double-clicking without brushing zooms out. #' @author Matteo Fasiolo . #' @examples #' \dontrun{ #' ####### #' # Example 1: Bivariate additive model y~1+x+x^2+z+x*z/2+e, e~N(0, 1) #' ####### #' library(qgam) #' set.seed(15560) #' n <- 1000 #' x <- rnorm(n, 0, 1); z <- rnorm(n) #' X <- cbind(1, x, x^2, z, x*z) #' beta <- c(0, 1, 1, 1, 0.5) #' y <- drop(X %*% beta) + rnorm(n) #' dataf <- data.frame(cbind(y, x, z)) #' names(dataf) <- c("y", "x", "z") #' #' #### Fit a constant model for median #' qu <- 0.5 #' fit <- qgam(y~1, qu = qu, data = dataf) #' #' # Look at what happens along x: clearly there is non linear pattern here #' cqcheckI(obj = fit, v = c("x"), X = dataf, y = y) #' #' #### Add a smooth for x #' fit <- qgam(y~s(x), qu = qu, data = dataf) #' cqcheckI(obj = fit, v = c("x"), X = dataf, y = y) # Better! #' #' # Lets look across across x and z. As we move along z (x2 in the plot) #' # the colour changes from green to red #' cqcheckI(obj = fit, v = c("x", "z"), X = dataf, y = y) #' #' # The effect look pretty linear #' cqcheckI(obj = fit, v = c("z"), X = dataf, y = y) #' #' #### Lets add a linear effect for z #' fit <- qgam(y~s(x)+z, qu = qu, data = dataf) #' #' # Looks better! #' cqcheckI(obj = fit, v = c("z")) #' #' # Lets look across x and y again: green prevails on the top-left to bottom-right #' # diagonal, while the other diagonal is mainly red. #' cqcheckI(obj = fit, v = c("x", "z")) #' #' ### Maybe adding an interaction would help? #' fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) #' #' # It does! The real model is: y ~ 1 + x + x^2 + z + x*z/2 + e, e ~ N(0, 1) #' cqcheckI(obj = fit, v = c("x", "z")) #' } #' cqcheckI <- function(obj, v, X = NULL, y = NULL, run = TRUE, width = "100%", height = "680px") { #### Set up if( is.null(X) ){ X <- obj$model if( is.null(y) ){ y <- obj$y } } else { if( is.null(y) ){ stop("If you provide X you must provide also the corresponding vector of responses y") } } if( length(y)!=nrow(X) ){ stop("length(y)!=nrow(X)") } ####### Setting up 1D and 2D cases if( is.character(v) ){ # Name(s) of variable(s) in X provided OR ... if(length(v) == 1){ ## 1D CASE ## if( !(v %in% names(X)) ) stop("(v %in% names(X)) == FALSE") x1 <- X[[v]] x2 <- NULL } else { if(length(v) == 2){ ## 2D CASE ## if( !(v[1] %in% names(X)) ) stop("(v[1] %in% names(X)) == FALSE") if( !(v[2] %in% names(X)) ) stop("(v[2] %in% names(X)) == FALSE") x1 <- X[[v[1]]] x2 <- X[[v[2]]] } else { stop("If is.character(v)==TRUE, then length(v) should be either 1 or 2.") } } } else { # ... actual numeric value of the variable(s) provided if(is.vector(v)){ ## 1D CASE ## x1 <- v x2 <- NULL if(length(v) != nrow(X)){ stop("length(v) != ncol(X)") } } else { if(is.matrix(v)){ ## 2D CASE ## if(ncol(v)!=2){ stop("In the 2D case, v should be a matrix with 2 columns or a vector of 2 characters") } x1 <- v[ , 1] x2 <- v[ , 2] } else { stop("In the 2D case, v should be a matrix with 2 columns or a vector of 2 characters") } } } out <- if( is.null(x2) ){ # One dimensional OR ... .cqcheck1DI(.obj = obj, .x1 = x1, .X = X, .y = y, .width = width, .height = height) } else { # ... two dimensional case .cqcheck2DI(.obj = obj, .x1 = x1, .x2 = x2, .X = X, .y = y, .width = width, .height = height) } if( run ){ return(runApp(out)) } else { return(out) } } #### Internal function for 1D plot .cqcheck1DI <- function(.obj, .x1, .X, .y, .width, .height) { # User interface ui <- fluidPage( sidebarPanel( numericInput('nbin', 'Num. bins', 10, min = 1, max = Inf), numericInput('lev', 'Sign. lev.', 0.05, min = 0, max = 1), width = 2 ), mainPanel( h4("Brush and double-click to zoom in. Double-click to zoom out."), plotOutput("plot1", dblclick = "plot1_dblclick", hover = "plot1_hover", brush = brushOpts( id = "plot1_brush", resetOnNew = TRUE), width = .width, height = .height), verbatimTextOutput("info") ) ) # Server side server <- function(input, output) { # Control panel inputs ranges <- reactiveValues(x = NULL, y = NULL) nbin <- reactive({ input$nbin }) lev <- reactive({ input$lev }) myPlot <- function(brush = NULL) { if (!is.null(brush)) { good <- which(.x1 > brush$xmin & .x1 < brush$xmax) out <- cqcheck(obj = .obj, v = .x1[good], X = .X[good, ], y = .y[good], nbin = nbin(), lev = lev()) } else { out <- cqcheck(obj = .obj, v = .x1, X = .X, y = .y, nbin = nbin(), lev = lev()) } return( out ) } # Initial plot output$plot1 <- renderPlot({ myPlot() }) # Update if double click or double click + brush observeEvent(input$plot1_dblclick, { brush <- input$plot1_brush output$plot1 <- renderPlot({ myPlot(brush = brush) }) }) # Print some info output$info <- renderText({ x_str <- function(e) { if(is.null(e)) return("NULL\n") paste0("x=", round(e$x, 1), "\n") } x_range_str <- function(e) { if(is.null(e)) return("NULL\n") paste0("xmin=", round(e$xmin, 1), ", xmax=", round(e$xmax, 1)) } paste0( "hover: ", x_str(input$plot1_hover), "brush: ", x_range_str(input$plot1_brush) ) }) } return( shinyApp(ui, server) ) } #### Internal function for 2D plot .cqcheck2DI <- function(.obj, .x1, .x2, .X, .y, .width, .height) { # User interface ui <- fluidPage( sidebarPanel( numericInput('nbin1', 'N. bins x1', 10, min = 1, max = Inf), numericInput('nbin2', 'N. bins x2', 10, min = 1, max = Inf), numericInput('lev', 'Sign. lev.', 0.05, min = 0, max = 1), checkboxInput('scatter', 'Add scatter', value = FALSE), width = 2 ), mainPanel( h4("Brush and double-click to zoom in. Double-click to zoom out."), plotOutput("plot1", dblclick = "plot1_dblclick", hover = "plot1_hover", brush = brushOpts( id = "plot1_brush", resetOnNew = TRUE), width = .width, height = .height), verbatimTextOutput("info") ) ) # Server side server <- function(input, output) { # Control panel inputs ranges <- reactiveValues(x = NULL, y = NULL) nbin1 <- reactive({ input$nbin1 }) nbin2 <- reactive({ input$nbin2 }) lev <- reactive({ input$lev }) scatter <- reactive({ input$scatter }) myPlot <- function(brush = NULL) { if (!is.null(brush)) { good <- which(.x1 > brush$xmin & .x1 < brush$xmax & .x2 > brush$ymin & .x2 < brush$ymax) out <- cqcheck(obj = .obj, v = cbind(.x1[good], .x2[good]), X = .X[good, ], y = .y[good], nbin = c(nbin1(), nbin2()), scatter = scatter(), lev = lev()) } else { out <- cqcheck(obj = .obj, v = cbind(.x1, .x2), X = .X, y = .y, nbin = c(nbin1(), nbin2()), scatter = scatter(), lev = lev()) } return( out ) } # Initial plot output$plot1 <- renderPlot({ myPlot() }) # Update if double click or double click + brush observeEvent(input$plot1_dblclick, { brush <- input$plot1_brush output$plot1 <- renderPlot({ myPlot(brush = brush) }) }) # Print some info output$info <- renderText({ xy_str <- function(e) { if(is.null(e)) return("NULL\n") paste0("x1=", round(e$x, 1), ", x2=", round(e$y, 1), "\n") } xy_range_str <- function(e) { if(is.null(e)) return("NULL\n") paste0("x1min=", round(e$xmin, 1), ", x1max=", round(e$xmax, 1), ", x2min=", round(e$ymin, 1), ", x2max=", round(e$ymax, 1)) } paste0( "hover: ", xy_str(input$plot1_hover), "brush: ", xy_range_str(input$plot1_brush) ) }) } return( shinyApp(ui, server) ) }qgam/R/elflss.R0000644000176200001440000004244714775742464013052 0ustar liggesusers########################## #' Extended log-F model with variable scale #' #' @description The \code{elflss} family implements the Extended log-F (ELF) density of Fasiolo et al. (2017) and it is supposed #' to work in conjuction with the general GAM fitting methods of Wood et al. (2017), implemented by #' \code{mgcv}. It differs from the \code{elf} family, because here the scale of the density #' (sigma, aka the learning rate) can depend of the covariates, while in #' while in \code{elf} it is a single scalar. NB this function was use within the \code{qgam} function, but #' since \code{qgam} version 1.3 quantile models with varying learning rate are fitted using different methods #' (a parametric location-scale model, see Fasiolo et al. (2017) for details.). #' #' @param link vector of two characters indicating the link function for the quantile location and for the log-scale. #' @param qu parameter in (0, 1) representing the chosen quantile. For instance, to fit the median choose \code{qu=0.5}. #' @param co positive vector of constants used to determine parameter lambda of the ELF density (lambda = co / sigma). #' @param theta a scalar representing the intercept of the model for the log-scale log(sigma). #' @param remInter if TRUE the intercept of the log-scale model is removed. #' @return An object inheriting from mgcv's class \code{general.family}. #' @details This function is meant for internal use only. #' @author Matteo Fasiolo and Simon N. Wood. #' @references Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. #' Fast calibrated additive quantile regression. #' Journal of the American Statistical Association (to appear). #' \doi{10.1080/01621459.2020.1725521}. #' #' Wood, Simon N., Pya, N. and Safken, B. (2017). Smoothing parameter and model selection for #' general smooth models. Journal of the American Statistical Association. #' @examples #' \dontrun{ #' set.seed(651) #' n <- 1000 #' x <- seq(-4, 3, length.out = n) #' X <- cbind(1, x, x^2) #' beta <- c(0, 1, 1) #' sigma = 1.2 + sin(2*x) #' f <- drop(X %*% beta) #' dat <- f + rnorm(n, 0, sigma) #' dataf <- data.frame(cbind(dat, x)) #' names(dataf) <- c("y", "x") #' #' # Fit median using elflss directly: NOT RECOMMENDED #' fit <- gam(list(y~s(x, bs = "cr"), ~ s(x, bs = "cr")), #' family = elflss(theta = 0, co = rep(0.2, n), qu = 0.5), #' data = dataf) #' #' plot(x, dat, col = "grey", ylab = "y") #' tmp <- predict(fit, se = TRUE) #' lines(x, tmp$fit[ , 1]) #' lines(x, tmp$fit[ , 1] + 3 * tmp$se.fit[ , 1], col = 2) #' lines(x, tmp$fit[ , 1] - 3 * tmp$se.fit[ , 1], col = 2) #' } #' #' ## (c) Simon N. Wood & Matteo Fasiolo ## 2013-2017. Released under GPL2. ## extended families for mgcv, standard components. ## family - name of family character string ## link - name of link character string ## linkfun - the link function ## linkinv - the inverse link function ## mu.eta - d mu/d eta function (derivative of inverse link wrt eta) ## note: for standard links this information is supplemented using ## function fix.family.link.extended.family with functions ## gkg where k is 2,3 or 4 giving the kth derivative of the ## link over the first derivative of the link to the power k. ## for non standard links these functions muct be supplied. ## dev.resids - function computing deviance residuals. ## Dd - function returning derivatives of deviance residuals w.r.t. mu and theta. ## aic - function computing twice - log likelihood for 2df to be added to. ## initialize - expression to be evaluated in gam.fit4 and initial.spg ## to initialize mu or eta. ## preinitialize - optional expression evaluated in estimate.gam to ## e.g. initialize theta parameters (see e.g. ocat) ## postproc - expression to evaluate in estimate.gam after fitting (see e.g. betar) ## ls - function to evaluated log saturated likelihood and derivatives w.r.t. ## phi and theta for use in RE/ML optimization. If deviance used is just -2 log ## lik. can njust return zeroes. ## validmu, valideta - functions used to test whether mu/eta are valid. ## n.theta - number of theta parameters. ## no.r.sq - optional TRUE/FALSE indicating whether r^2 can be computed for family ## ini.theta - function for initializing theta. ## putTheta, getTheta - functions for storing and retriving theta values in function ## environment. ## rd - optional function for simulating response data from fitted model. ## residuals - optional function for computing residuals. ## predict - optional function for predicting from model, called by predict.gam. ## family$data - optional list storing any family specific data for use, e.g. in predict ## function. elflss <- function(link = list("identity", "log"), qu, co, theta, remInter = TRUE) { # Some checks if( !remInter ){ if( theta != 0 ){ stop("remInter == FALSE, but theta != 0") } theta <- 0 } if( !is.na(qu) && (findInterval(qu, c(0, 1) )!=1) ) stop("qu should be in (0, 1)") ## Extended family object for modified log-F, to allow direct estimation of theta ## as part of REML optimization. Currently the template for extended family objects. ## length(theta)=2; log theta supplied. ## Written by Matteo Fasiolo. ## first deal with links and their derivatives... if (length(link)!=2) stop("elflss requires 2 links specified as character strings") okLinks <- list(c("inverse", "log", "identity", "sqrt"), "log") stats <- list() param.names <- c("mu", "sigma") for (i in 1:2) { if (link[[i]] %in% okLinks[[i]]) stats[[i]] <- make.link(link[[i]]) else stop(link[[i]]," link not available for ", param.names[i]," parameter of elflss") fam <- structure(list(link=link[[i]],canonical="none",linkfun=stats[[i]]$linkfun, mu.eta=stats[[i]]$mu.eta), class="family") fam <- fix.family.link(fam) stats[[i]]$d2link <- fam$d2link stats[[i]]$d3link <- fam$d3link stats[[i]]$d4link <- fam$d4link } env <- new.env(parent = .GlobalEnv) assign(".qu", qu, envir = env) getQu <- function( ) get(".qu") putQu <- function(qu) assign(".qu", qu, envir=environment(sys.function())) assign(".co", co, envir = env) getCo <- function( ) get(".co") putCo <- function(co) assign(".co", co, envir=environment(sys.function())) assign(".theta", theta, envir = env) getTheta <- function( ) get(".theta") putTheta <- function(theta) assign(".theta", theta, envir=environment(sys.function())) # variance <- function(mu) exp(get(".Theta")) ##### XXX ##### Necessary? # validmu <- function(mu) all( is.finite(mu) ) residuals <- function(object, type = c("deviance", "response")) { tau <- get(".qu") theta <- get(".theta") co <- get(".co") mu <- object$fitted[ , 1] sig <- object$fitted[ , 2] * exp(theta) # This will break if the link is not log!! lam <- co / sig type <- match.arg(type) # Raw residuals: y - E(y) rsd <- object$y - sig * lam * ( digamma(lam*(1-tau)) - digamma(lam*tau) ) - mu if (type=="response"){ return(rsd) } else { ## compute deviance residuals sgn <- sign(rsd) z <- (object$y - mu) / sig dl <- dlogis(z-mu, 0, lam*sig) pl <- plogis(z-mu, 0, lam*sig) l <- (1-tau) * z - lam * log1pexp( z / lam ) - log( sig * lam * beta(lam*(1-tau), lam*tau) ) ls <- (1-tau)*lam*log1p(-tau) + lam*tau*log(tau) - log(lam * sig * beta(lam*(1-tau), lam*tau)) rsd <- pmax(0, 2*(ls - l)) rsd <- sqrt(rsd)*sgn } rsd } ## residuals ll <- function(y, X, coef, wt, family, offset = NULL, deriv=0, d1b=0, d2b=0, Hp=NULL, rank=0, fh=NULL, D=NULL) { ## function defining the gamlss Gaussian model log lik. ## deriv: 0 - eval ## 1 - grad and Hess ## 2 - diagonal of first deriv of Hess ## 3 - first deriv of Hess ## 4 - everything. tau <- get(".qu") theta <- get(".theta") co <- get(".co") if( !is.null(offset) ){ offset[[3]] <- 0 } # Not sure whether this is needed discrete <- is.list(X) jj <- attr(X,"lpi") ## extract linear predictor index eta <- if (discrete) Xbd(X$Xd,coef,k=X$kd,ks=X$ks,ts=X$ts,dt=X$dt,v=X$v,qc=X$qc,drop=X$drop,lt=X$lpid[[1]]) else X[,jj[[1]],drop=FALSE]%*%coef[jj[[1]]] if( !is.null(offset[[1]]) ){ eta <- eta + offset[[1]] } mu <- family$linfo[[1]]$linkinv(eta) eta1 <- if (discrete) Xbd(X$Xd,coef,k=X$kd,ks=X$ks,ts=X$ts,dt=X$dt,v=X$v,qc=X$qc,drop=X$drop,lt=X$lpid[[2]]) else X[,jj[[2]],drop=FALSE]%*%coef[jj[[2]]] if( !is.null(offset[[2]]) ){ eta1 <- eta1 + offset[[2]] } sig <- family$linfo[[2]]$linkinv(eta1) lam <- co / sig n <- length(y) if( is.null(wt) ) { wt <- numeric(n) + 1 } l1 <- matrix(0, n, 2) z <- (y - mu) / sig zc <- (y - mu) / co lpxp <- log1pexp( zc ) l <- drop(crossprod(wt, (1-tau) * z - co*lpxp/sig - log( co*beta(co*(1-tau)/sig, co*tau/sig) ))) if (deriv>0) { # D logBeta / D lam; D^2 logBeta / D lam^2 dBdL <- (1-tau) * digamma(lam*(1-tau)) + tau * digamma(lam*tau) - digamma(lam) d2BdL2 <- (1-tau)^2 * trigamma(lam*(1-tau)) + tau^2 * trigamma(lam*tau) - trigamma(lam) # D lam / D sig; D^2 lam / D sig^2 dLdS <- - co / sig^2 d2LdS2 <- 2 * co / sig^3 # D logBeta / D sig; D^2 logBeta / D sig^2 dBdS <- dLdS * dBdL d2BdS2 <- d2LdS2*dBdL + (dLdS)^2*d2BdL2 gLog <- (tau-1)*(y-mu) + co * lpxp dl <- dlogis(y, mu, co) pl <- plogis(y, mu, co) dLLKdmu <- (pl - 1 + tau) / sig l1[ , 1] <- wt * dLLKdmu l1[ , 2] <- wt * ( gLog/sig^2 - dBdS ) ## the second derivatives D2LLKdmu2 <- - dl / sig l2 <- matrix(0, n, 3) ## order mm,ms,ss l2[ , 1] <- wt * D2LLKdmu2 l2[ , 2] <- wt * ( - dLLKdmu / sig ) l2[ , 3] <- wt * ( - 2*gLog/sig^3 - d2BdS2 ) ## need some link derivatives for derivative transform ig1 <- cbind(family$linfo[[1]]$mu.eta(eta), family$linfo[[2]]$mu.eta(eta1)) g2 <- cbind(family$linfo[[1]]$d2link(mu), family$linfo[[2]]$d2link(sig)) } l3 <- l4 <- g3 <- g4 <- 0 ## defaults if (deriv>1) { # D^3 logBeta / D lam^3 ; D^3 lam / D sig^3; D^3 logBeta / D sig^3 d3BdL3 <- (1-tau)^3 * psigamma(lam*(1-tau), 2) + tau^3 * psigamma(lam*tau, 2) - psigamma(lam, 2) d3LdS3 <- - 6 * co / sig^4 d3BdS3 <- d3LdS3*dBdL + 3*dLdS*d2LdS2*d2BdL2 + dLdS^3*d3BdL3 der <- sigmoid(zc, deriv = TRUE) D3LLKdmu3 <- der$D2 / (sig*co^2) ## the third derivatives ## order mmm,mms,mss,sss l3 <- matrix(0,n,4) l3[ , 1] <- wt * D3LLKdmu3 l3[ , 2] <- wt * ( - D2LLKdmu2 / sig ) l3[ , 3] <- wt * ( 2 * dLLKdmu / sig^2 ) l3[ , 4] <- wt * ( 6*gLog/sig^4 - d3BdS3 ) g3 <- cbind(family$linfo[[1]]$d3link(mu), family$linfo[[2]]$d3link(sig)) } if (deriv>3) { # D^4 logBeta / D lam^4 ; D^4 lam / D sig^4; D^4 logBeta / D sig^4 d4BdL4 <- (1-tau)^4 * psigamma(lam*(1-tau), 3) + tau^4 * psigamma(lam*tau, 3) - psigamma(lam, 3) d4LdS4 <- 24 * co / sig^5 d4BdS4 <- d4LdS4*dBdL + 3*d2LdS2^2*d2BdL2 + 4*dLdS*d3LdS3*d2BdL2 + 6*(dLdS)^2*d2LdS2*d3BdL3 + dLdS^4*d4BdL4 ## the fourth derivatives, order: mmmm,mmms,mmss,msss,ssss l4 <- matrix(0, n, 5) l4[ , 1] <- wt * ( - der$D3 / (sig*co^3) ) l4[ , 2] <- wt * ( - D3LLKdmu3 / sig ) l4[ , 3] <- wt * ( 2 * D2LLKdmu2 / sig^2 ) l4[ , 4] <- wt * ( - 6 * dLLKdmu / sig^3 ) l4[ , 5] <- wt * ( -24*gLog/sig^5 - d4BdS4 ) g4 <- cbind(family$linfo[[1]]$d4link(mu), family$linfo[[2]]$d4link(sig)) } if (deriv) { i2 <- family$tri$i2; i3 <- family$tri$i3; i4 <- family$tri$i4 ## transform derivates w.r.t. mu to derivatives w.r.t. eta... de <- gamlss.etamu(l1,l2,l3,l4,ig1,g2,g3,g4,i2,i3,i4,deriv-1) ## get the gradient and Hessian... ret <- gamlss.gH(X,jj,de$l1,de$l2,i2,l3=de$l3,i3=i3,l4=de$l4,i4=i4, d1b=d1b,d2b=d2b,deriv=deriv-1,fh=fh,D=D) } else ret <- list() ret$l <- l; ret } ## end ll initialize <- expression({ # COPIED EXACTLY FROM gaulss() ## idea is to regress g(y) on model matrix for mean, and then ## to regress the corresponding log absolute residuals on ## the model matrix for log(sigma) - may be called in both ## gam.fit5 and initial.spg... note that appropriate E scaling ## for full calculation may be inappropriate for initialization ## which is basically penalizing something different here. ## best we can do here is to use E only as a regularizer. n <- rep(1, nobs) ## should E be used unscaled or not?.. use.unscaled <- if (!is.null(attr(E,"use.unscaled"))) TRUE else FALSE if (is.null(start)) { jj <- attr(x,"lpi") if (!is.null(offset)) offset[[3]] <- 0 yt1 <- if (family$link[[1]]=="identity") y else family$linfo[[1]]$linkfun(abs(y)+max(y)*1e-7) if (!is.null(offset[[1]])) yt1 <- yt1 - offset[[1]] if (is.list(x)) { ## discrete case start <- rep(0,max(unlist(jj))) R <- suppressWarnings(chol(XWXd(x$Xd,w=rep(1,length(y)),k=x$kd,ks=x$ks,ts=x$ts,dt=x$dt,v=x$v,qc=x$qc,nthreads=1,drop=x$drop,lt=x$lpid[[1]])+crossprod(E[,jj[[1]]]),pivot=TRUE)) Xty <- XWyd(x$Xd,rep(1,length(y)),yt1,x$kd,x$ks,x$ts,x$dt,x$v,x$qc,x$drop,lt=x$lpid[[1]]) piv <- attr(R,"pivot") rrank <- attr(R,"rank") startji <- rep(0,ncol(R)) if (rrank %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{quantile_mgcViz} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} library(knitr) opts_chunk$set(out.extra='style="display:block; margin: auto"', fig.align="center", tidy=FALSE) ``` This R package offers methods for fitting additive quantile regression models based on splines, using the methods described in [Fasiolo et al., 2017](https://arxiv.org/abs/1707.03307). The main fitting functions are: - `qgam()` fits an additive quantile regression model to a single quantile. Very similar to `mgcv::gam()`. It returns an object of class `qgam`, which inherits from `mgcv::gamObject`. - `mqgam()` fits the same additive quantile regression model to several quantiles. It is more efficient that calling `qgam()` several times, especially in terms of memory usage. - `tuneLearn()` useful for tuning the learning rate of the Gibbs posterior. It evaluates a calibration loss function on a grid of values provided by the user. - `tuneLearnFast()` similar to `tuneLearn()`, but here the learning rate is selected by minimizing the calibration loss, using Brent method. A first example: smoothing the motorcycle dataset ======================= Let's start with a simple example. Here we are fitting a regression model with an adaptive spline basis to quantile 0.8 of the motorcycle dataset. ```{r 1, message = F} library(qgam); library(MASS) if( suppressWarnings(require(RhpcBLASctl)) ){ blas_set_num_threads(1) } # Optional fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` `qgam` automatically calls `tuneLearnFast` to select the learning rate. The results of the calibrations are stored in `fit$calibr`. We can check whether the optimization succeded as follows: ```{r 2} check(fit$calibr, 2) ``` The plot suggest that the calibration criterion has a single minimum, and that the optimizer has converged to its neighbourhood. Alternatively, we could have selected the learning rate by evaluating the loss function on a grid. ```{r 3, message = F} set.seed(6436) cal <- tuneLearn(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8, lsig = seq(1, 3, length.out = 20), control = list("progress" = "none")) #<- sequence of values for learning rate check(cal) ``` Here the generic `check` function produces a different output. The first plot is the calibration criterion as a function of $log(\sigma)$, which should look fairly smooth. The second plot shows how the effective degrees of freedom (EDF) vary with $log(\sigma)$. Notice that here we are using an adaptive smoother, which includes five smoothing parameters. We might want to fit several quantiles at once. This can be done with `mqgam`. ```{r 4} quSeq <- c(0.2, 0.4, 0.6, 0.8) set.seed(6436) fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) ``` To save memory `mqgam` does not return one `mgcv::gamObject` for each quantile, but it avoids storing some redundant data (such as several copies of the design matrix). The output of `mqgam` can be manipulated using the `qdo` function. ```{r 5} # Plot the data xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) # Predict each quantile curve and plot for(iq in quSeq){ pred <- qdo(fit, iq, predict, newdata = xSeq) lines(xSeq$times, pred, col = 2) } ``` Using `qdo` we can print out the summary for each quantile, for instance: ```{r 6} # Summary for quantile 0.4 qdo(fit, qu = 0.4, summary) ``` Notice that here the generic function `summary` is calling `summary.gam`, because `summary.qgam` has not been implemented yet. Hence one cannot quite rely on the p-value provided by this function, because their are calculated using result that apply to parametric, not quantile, regression. Handling big data sets ======================= Since version 2.0, `qgam` can handle big data sets by setting the argument `discrete = TRUE`. This is particularly useful when the number of observations is very large. In this case, the function `qgam` will use a discrete representation of the covariates (provided by `mgcv::bam`, see `?bam` for details), which is much more memory and computationally efficient. Here is a simple simulated example: ```{r} dat <- gamSim(1, n=40000, dist="normal", scale=2) b <- qgam(y ~ s(x0)+s(x1)+s(x2)+s(x3),data=dat, qu = 0.1, discrete = TRUE) plot(b, pages = 1) ``` You can check this model takes around 5 seconds to fit, while setting `discrete = FALSE` would take much longer (but the fit is almost identical). Dealing with heteroscedasticity ======================= Let us simulate some data from an heteroscedastic model. ```{r h1} set.seed(651) n <- 2000 x <- seq(-4, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma = 1.2 + sin(2*x) f <- drop(X %*% beta) dat <- f + rnorm(n, 0, sigma) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma)) } ``` We now fit ten quantiles between 0.05 and 0.95, using a quantile GAM with scalar learning rate. ```{r h2} fit <- mqgam(y~s(x, k = 30, bs = "cr"), data = dataf, qu = qus) qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma), col = 2) lines(x, qdo(fit, iq, predict)) } legend("top", c("truth", "fitted"), col = 2:1, lty = rep(1, 2)) ``` With the exception of `qu = 0.95`, the fitted quantiles are close to the true ones, but their credible intervals don't vary much with x. Indeed, let's look at intervals for quantile 0.95. ```{r h3} plot(x, dat, col = "grey", ylab = "y") tmp <- qdo(fit, 0.95, predict, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ``` We can get better credible intervals, and solve the "wigglines" problem for the top quantile, by letting the learning rate vary with the covariate. In particular, we can use an additive model for quantile location and one for learning rate. ```{r h4} fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), data = dataf, qu = 0.95) plot(x, dat, col = "grey", ylab = "y") tmp <- predict(fit, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ``` Now the credible intervals correctly represent the underlying uncertainty, and the fit has the correct amount of smoothness. Neglecting to take the heteroscedasticity into account can lead to bias, in addition to inadequate coverage of the credible intervals. Let's go back the motorcycle data set, and to the first model we fitted: ```{r mcy2rnd, message = F} fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` The slightly disturbing thing about this quantile fit is that for `Times < 10` the fit is clearly above all the responses. But we are fitting quantile 0.8, hence we should expect around 20$\%$ of the responses to be above the fit. The problem here is that the variance of the response (`accel`) varies wildly with `Times`, so that the bias induced by the smoothed pinball loss used by `qgam` is not constant (see Fasiolo et al. 2017 for details). This issue is solved by letting the learning rate change with `Times`: ```{r mcy2rnd2, message = F} fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = 0.8) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` Model checking ======================= The `qgam` package provides some functions that can be useful for model checking, but a more complete set of visualisation and checking tools can be found in the `mgcViz` R package (Fasiolo et al., 2018). In `qgam` we have: - `cqcheck` if we are fitting, say, quantile 0.2 we expect roughly $20\%$ of the observations to fall below the fitted quantile. This function produces some plots to verify this. - `cqcheckI` interactive version of `cqcheckI`. Implemented using the `shiny` package. Not demonstrated here, but see `?cqcheckI`. - `check.qgam` provides some diagnostics regarding the optimization. Mainly based to `gam.check`. - `check.learn` diagnostic checks to verify that the learning rate selection went well. It can be used on the output of `tuneLearn`. - `check.tuneLearn` similar to `check.learn`, but it can be used on the output of `tuneLearn` or on the `$calibr` slot of a `qgam` object. We start by illustrating the `cqcheck` function. In particular, let us consider the additive model: $$ y \sim x+x^2+z+xz/2+e,\;\;\; e \sim N(0, 1) $$ We start by simulating some data from it. ```{r c1} library(qgam) set.seed(15560) n <- 1000 x <- rnorm(n, 0, 1); z <- rnorm(n) X <- cbind(1, x, x^2, z, x*z) beta <- c(0, 1, 1, 1, 0.5) y <- drop(X %*% beta) + rnorm(n) dataf <- data.frame(cbind(y, x, z)) names(dataf) <- c("y", "x", "z") ``` We fit a linear model to the median and we use `cqcheck` produce a diagnostic plot. ```{r c2} qu <- 0.5 fit <- qgam(y~x, qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ``` The `cqcheck` function takes a `qgam` object as input and it predicts the conditional quantile using the data in `X`. Then it bins the responses `y` using the corresponding values of `v` and it calculates, for every bin, what fraction of responses falls below the fitted quantile. Given that we are fitting the median, we would expect that around $50\%$ of the point falls below the fit. But, as the plot shows, this fraction varies widely along `x`. There is clearly a non-linear relation between the quantile location and `x`, hence we add a smooth for `x`. ```{r c3, message = F} fit <- qgam(y~s(x), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ``` The deviations from the theoretical quantile ($0.5$) are much reduced, but let's look across both `x` and `z`. ```{r c4, message = F} cqcheck(obj = fit, v = c("x", "z"), X = dataf, y = y, nbin = c(5, 5)) ``` This plot uses binning as before, if a bin is red (green) this means that the fraction of responses falling below the fit is smaller (larger) than 0.5. Bright colours means that the deviation is statistically significant. As we move along `z` (`x2` in the plot) the colour changes from green to red, so it make sense drawing a marginal plot for `z`: ```{r c5, message = F} cqcheck(obj = fit, v = c("z"), X = dataf, y = y, nbin = c(10)) ``` We are clearly missing an effect here. Given that effect looks pretty linear, we simply add a parametric term to the fit, which seems to solve the problem: ```{r c6, message = F} fit <- qgam(y~s(x)+z, qu = qu, data = dataf) cqcheck(obj = fit, v = c("z")) ``` But if we look again across both `x` and `z` we see that green prevails on the top-left to bottom-right diagonal, while the other diagonal is mainly red. ```{r c7, message = F} cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ``` This suggests that adding an interaction between `x` and `z` might be a good idea. Indeed, now `cqcheck` does not signal any problem: ```{r c8, message = F} fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ``` Now that we are fairly satisfied with the model structure, we can, for instance, fit several quantiles by doing: ```{r c9, message = F} fit <- mqgam(y~s(x)+z+I(x*z), qu = c(0.2, 0.4, 0.6, 0.8), data = dataf) ``` We can then check whether the learning rate was selected correctly. Recall that the `qgam` function calls internally `tuneLearnFast`, hence we can look at how the calibration went by doing: ```{r c10, message = F} check.learnFast(fit$calibr, 2:5) ``` For each quantile, the calibration loss seems to have a unique minimum, which is what one would hope. Objects of class `qgam` can also be checked using the generic function `check`, which defaults to `check.qgam`. To use this function on the output of `mqgam`, we must use the `qdo` function: ```{r c11, message = F} qdo(fit, 0.2, check) ``` The printed output gives some information about the optimizer used to estimate the smoothing parameters, for fixed learning rate. See `?check.qgam` for more information. The plot has been obtained using `cqcheck`, where each data point has been binned using the fitted values. On the right side of the plot there seems to be some large deviations, but the rug shows that there are very few data points there. Setting the loss-smoothing parameter and checking convergence ======================= Let's simulate some data: ```{r check1, message = F} set.seed(5235) n <- 1000 x <- seq(-3, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) f <- drop(X %*% beta) dat <- f + rgamma(n, 4, 1) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") ``` Assume that we want to estimate quantiles 0.05, 0.5 and 0.95: ```{r check2, message = F} qus <- c(0.05, 0.5, 0.95) fit <- mqgam(y ~ s(x), data = dataf, qu = qus) plot(x, dat, col = "grey", ylab = "y") lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) lines(x, qdo(fit, qus[1], predict), col = 2) lines(x, qdo(fit, qus[2], predict), col = 2) lines(x, qdo(fit, qus[3], predict), col = 2) ``` Since `qgam` version 1.3 the parameter `err`, which determines the smoothness of the loss function used by `qgam`, is determined automatically. But there might be scenarios where you might want to chose is manually, so let's try to use several values of `err`: ```{r check2b, message = F} lfit <- lapply(c(0.01, 0.05, 0.1, 0.2, 0.3, 0.5), function(.inp){ mqgam(y ~ s(x), data = dataf, qu = qus, err = .inp, control = list("progress" = F)) }) plot(x, dat, col = "grey", ylab = "y", ylim = c(-2, 20)) colss <- rainbow(length(lfit)) for(ii in 1:length(lfit)){ lines(x, qdo(lfit[[ii]], qus[1], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[2], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[3], predict), col = colss[ii]) } lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) ``` The bias increases with `err`, and it is upward (downward) for high (low) quantiles. The median fit is not much affected by `err`. The bias really starts appearing for `err > 0.1`. Decreasing `err` tends to slow down computation: ```{r check3, message = F} system.time( fit1 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.05, control = list("progress" = F)) )[[3]] system.time( fit2 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.001, control = list("progress" = F)) )[[3]] ``` Even worse, it can lead to numeric problems. Here we check that we have found the minimum of the calibration loss: ```{r check4, message = F} check(fit1$calibr, sel = 2) check(fit2$calibr, sel = 2) ``` In the first case the loss looks smooth and with as single minimum, in the second case we have some instabilities. If the calibration loss looks like this, you generally have to increase `err`. We can use `check` to have an estimate of the bias and to have information regarding the convergence of the smoothing parameter estimation routine: ```{r check5, message = F} check(fit1) ``` The second plot suggest that the actual bias is much lower than the bound `err = 0.05`. This is also supported by the first two lines of text, which say that 95.1\% of the residuals are negative, which is very close to the theoretical 95\%. The text says that full convergence in smoothing parameter estimation has been achieved, it is important to check this. In summary, practical experience suggests that: - the automatic procedure for selecting `err` offer a good compromise between bias and stability; - the old default (`qgam` version < 1.3) was `err = 0.05`, which generally does not imply too much bias; - if the calibration loss plotted by `check(fit$learn)` is irregular, try to increase `err`; - same if the text printed by `check(fit)` does not say that `full convergence` was achieved; - you can estimate the bias using `check(fit)`; - if you have to increase `err` to 0.2 or higher, there might be something wrong with your model; - you might get messages saying that `outer Newton did not converge fully` during estimation. This might not be problematic as long as the calibration loss is smooth and `full convergence` was achieved; - in preliminary studies do not decrease `err` too much, as it slows down computation; - setting `err` too low is not a good idea: it is much better to have some bias than numerical problems. Application to probabilistic electricity load forecasting ======================= Here we consider a UK electricity demand dataset, taken from the national grid [website](https://www.nationalgrid.com/). The dataset covers the period January 2011 to June 2016 and it contains the following variables: - `NetDemand` net electricity demand between 11:30am and 12am. - `wM` instantaneous temperature, averaged over several English cities. - `wM_s95` exponential smooth of `wM`, that is `wM_s95[i] = a*wM[i] + (1-a)*wM_s95[i]` with `a=0.95`. - `Posan` periodic index in `[0, 1]` indicating the position along the year. - `Dow` factor variable indicating the day of the week. - `Trend` progressive counter, useful for defining the long term trend. - `NetDemand.48` lagged version of `NetDemand`, that is `NetDemand.48[i] = NetDemand[i-2]`. - `Holy` binary variable indicating holidays. - `Year` and `Date` should obvious, and partially redundant. See [Fasiolo et al., 2017](https://arxiv.org/abs/1707.03307) for more details. This is how the demand over the period looks like: ```{r edf1} data("UKload") tmpx <- seq(UKload$Year[1], tail(UKload$Year, 1), length.out = nrow(UKload)) plot(tmpx, UKload$NetDemand, type = 'l', xlab = 'Year', ylab = 'Load') ``` To estimate the median demand, we consider the following model ```{r edf2} qu <- 0.5 form <- NetDemand~s(wM,k=20,bs='cr') + s(wM_s95,k=20,bs='cr') + s(Posan,bs='ad',k=30,xt=list("bs"="cc")) + Dow + s(Trend,k=4) + NetDemand.48 + Holy ``` Notice that we use very few knots for the long term trend, this is because we don't want to end up interpolating the data. We use an adaptive cyclic smooth for `Posan`, we'll explain later why adaptivity is needed here. Now we tune the learning rate on a grid, on two cores. As the first plot shows, the calibrations loss is minimized at $\log (\sigma)\approx 6$, the second plot shows how the effective degrees of freedom of each smooth term changes with $\log (\sigma)$. ```{r edf3, message=FALSE} set.seed(41241) sigSeq <- seq(4, 8, length.out = 16) closs <- tuneLearn(form = form, data = UKload, lsig = sigSeq, qu = qu, control = list("K" = 20), multicore = TRUE, ncores = 2) check(closs) ``` Now let's fit the model with the learning rate corresponding to the lowest loss and let's look at the resulting smooth effects. ```{r edf4} lsig <- closs$lsig fit <- qgam(form = form, data = UKload, lsig = lsig, qu = qu) plot(fit, scale = F, page = 1) ``` The effect of temperature (`wM`) is minimized around 18 degrees, which is reasonable. The cyclic effect of `Posan` has a very sharp drop corresponding to the winter holidays, we used an adaptive smooth in order to have more flexibility during this period. Now we can have a look as some diagnostic plot: ```{r edf5} par(mfrow = c(2, 2)) cqcheck(fit, v = c("wM"), main = "wM") cqcheck(fit, v = c("wM_s95"), main = "wM_s95") cqcheck(fit, v = c("Posan"), main = "Posan") cqcheck(fit, v = c("Trend"), main = "Trend", xaxt='n') axis(1, at = UKload$Trend[c(1, 500, 1000, 1500, 2000)], UKload$Year[c(1, 500, 1000, 1500, 2000)] ) ``` The plots for `wM_s95` and `Posan` don't show any important deviation from 0.5, the target quantile. Along `wM` we see a large deviation, but we have essentially no data for very high temperatures. If we look at deviations along the `Trend` variable, which is just a time counter, we see several important deviations. It would be interesting verifying why these occur (we have no answer currently). Finally, recall that we can produce 2D versions of these diagnostic plots, for instance: ```{r edf6} par(mfrow = c(1, 1)) cqcheck(fit, v = c("wM", "Posan"), scatter = T) ``` References ======================= * Fasiolo, M., Goude, Y., Nedellec, R. and Wood, S. N. (2017). Fast calibrated additive quantile regression. Available at https://arxiv.org/abs/1707.03307 * Fasiolo, M., Nedellec, R., Goude, Y. and Wood, S.N. (2018). Scalable visualisation methods for modern Generalized Additive Models. Available at https://arxiv.org/abs/1809.10632 qgam/data/0000755000176200001440000000000013736643447012131 5ustar liggesusersqgam/data/AUDem.RData0000644000176200001440000123001013514360373013762 0ustar liggesusersý7zXZi"Þ6!ÏXÌê–ïþ])ThänRÊ „D2S†”;±¿œ%ªŠ>/ήm”²2-GOÁê"m¯› Ƨ?·½æÙÝ6µsÇ/d¢TA¹2Úÿ ¨›P·¤€ä¥=L¢Jì>sÈTUöÔ®RJý¯»yîPÉ¡I+Hþ¨JóÊ`Úìcç@†€× §;ÙmôVéÂ’Sp}óº"©@DNõ¹Ö¿»ª3D× OÖ è,=Èô¿4ÊgYnó´%µWžò{ÓGÅDâêO Xz…Ÿpvë¡Á±•œ%&]Ù Ú ¯º• mûžº;ÈÀmïØ\!q*âYzŒ«åéY&Þ^¨vüa+Üá#ÓÜ÷ªÓ¡`øùóý˜SðÃþFàïæë´¸ –|¯ÔÕt ìížð „`‡`@WRKlÖY©.Ê*zÄR¼ é&÷m:nôwd NßïýÅ&tU¬¾R8ÍÛ81ê+ÉóîÏyN犕ÚZ€˜áj@|Ñ.}(~åŠï•jn·} ëY÷ôHÓMÖ­xÍ’HØ[{(‚\ñ%Ç&íj¯/ÉÔ +&?¾yi Q¸N…‹Ý'ÑK, »Úkº€±AKÔ.Ú'åBÁ”ÛêÉdªƒÉ†ù·pzdmÿ"ò…S±-*n…e4ÙvùhâapKûÌl€„@® ,Þ[´S·€©ç‘´)p¨P©óË­€8ö/[k3Qì‰*¬hÛ1MEr-šîl±^a.€lú<íÕ>Î '15rÕ>™'Á§iL^‹%š¥.Ã/vŠêÁØ·îbSF §£™¡|¥ïñ¬%É÷ùÌaÛM׳$<ÖSç÷¤ÓŠfNo3˜-QøÜyÉ!‡m\4"Å}s|º šL·…„³‰ ¦yè^ÕÉÓŒšÝñ-K "7Ê·Æß–ó?¢w…áj E”z7’M«4ÑžnaÂÁjä._IxG È7ènrô\6ñµ¡k´ª€V? õ?Lâ‡Pmþõ½äìF;½"a¹âð¶'°‘S…sw)áTóxÔÜ uûBš4 §h݈¥5qÿmT›mH$‰9eûmb=*‚³•&>—0¥‡–KêEžrÜÓ3ON–¥ÐjŸiÀƒè•sá “©©Ò (+AZÎm Ù‡ÖöàFÐ×7 ±”‰Îí_s­K¬d…ûPù<ðj,d!Ú _¨X©:g¾S9\гpÝ ¥ºeÌ´ÊHn¦L«ŠÁçCÁh­«öÂz(È“®¦îVÀ»©U¶ ¦ö©CჇͶŒ!ò fñzšˆô阓¢ª¯w~ðj0\°?EãæBý<+^Ù}—…IÔ…?"LÖѼ~1|.gš9Gåd[ 6=Ô¬&çG)p¿åøhúµÙ*ð¶±­÷u¦+mŒ’D'Y µu.âìæí7N§•ÙE´ÉLߢ¾‹«VÔ¼˜ó¢UÂúG0rÔÎÑÕùÿžÆ[–Ñ-ñqútq¸Jc™‚Ä ×Íaý©šPÅædƒjJ¿"JŦNý2ò5Nß«Åe|Å™Ÿ§üI |÷lÇêy˜^Úã~7õ £±ò©÷оbEÙYaÑ×2X꓿ܬ½ Áέªx³ÊëÉFŒˆÔõðaúc€ô‰G-™ÑtM`È—|6q@è ƒc]ý–˜×‚0^ÞRÏÓ«ÂŽ·ßÌáâÓŽ½-è¼9¨:oƒìÅ Cµ‚„&RQªqhÐ^%N«‚ÎâpsÞù±™ÌkôŸAx¢›¨vãð æçãÅ¡ªÚN ¼¨ O}!˜ÿF1¼zïäi=%ÐN­µ~¥:šÇ ó;_ž}éâ±ÝJâè/±;½LŒæPá+`¬YÍÌŒ³KZÂÅ/ïÔHoLLÍíLŽ U“-²€&+׺d´¬.<“(Ð}—†DëÛ:.®]§¦ÿ¦²4éϯiR¸§(À 1×sŒwÛÏiÂÛ‘Áù§º P¾YœÊ5Y`Eç³§N ¸È؆X.ùÕ]"%—,@eŠùÞþ’Rxm­QÎãx±@Ÿæ•æ/ÕûxKP©(„Òjv^}‰s–j¯&Ëí”îÐÑ ¤º9 c¯uèûœ÷‚г·}÷ÍíŸçÒDÛú]¸Uó¸Pý ’€õÏ"ü’ )L¡ÿßp’&h¥¸o0DÙµ"c.8üó@¬‹œ ‰ VüƒšNõòÑR)%üOA°mV¾gWJ¦C˜´ÿDOî…È4gÚRÀµ /à?êõï¿Î³['ì©KœÚ°’Î}Bv0â÷E´ýÓí¹ßW/7>GºÐ2 ¶,^†^M:‰ê°û,ò…žép(îeD²ÝŽG?‚ÛÐÇU,ÒD½ _@œNSðœ õâÕ,$à€,?®ªîÆTô¢~dιˆ‘„§íYøîH‰ 5gPÚk#coc 4©71Ç»OOëF¹*ZJ+¦;[G£Ÿå#ö÷¯Ÿ\ëÔÆ›Üýwl”¨—¶6¸pº^£¾ìÔ¶¾sYrVßo‡ìædt,«Õÿ( :†Øk„½ÄB¹jì×¾°] h½. /Àp1I}0Rö$TB4׿£IvŸ¦o]ªO,J8ý 6›ÅlÖöabŠil¬w;çÁ˜_71S2“Yò£kÊéySŽ™Œ„£îÃ\i§?Íß0À¤+±+ªÁ’ýfð9—ƒ´ÛªÿûdC%|èË0\Olqœú{õ#MZÈÌ}«;)Z<Û4¸¢0‚éA^w€È •õ–]Œ­ø jn²ä ß º…£.Ì·¼¶-Lj°.é/Lî5¾·'DµH‰ÀôbÇ8ƒœ'm$ èHAÕ— ·³ÎÁ Æ`ß.R7}anïbÒÖ/(K,Šk³^/0Æþ`:/^2}ŒžlQkkäQúl#Ë´¨èêh&™rZ¤{Æ%ÕÈ‹4ŒªqQ±Ùal ¬?¦N¯V͇eâcaçZv,Ø<§÷5_bu'Ö[}þÏÒ§ÒV«Oêrõ;»Þ¶)Þ8ÖUõoKmd‚6êçÃ’[(‘¦÷t¸L¢Ý°œs uêº5̨¾5h,qD—ù{Âê“€dsnÁïO¡á­6ÈcçYãô?Ì>¿íºòOóJ4y€×ïÐ#²\_ìA—ÀdóÝ_öîOå/&Ÿ½£,øÜ9È–lÖoØ}S£¢~ν:l†8ÝăRdFžA<ŽÚI„Ö#k×å¨Ë]kÍz9 W^8Šú~UÊ t‰ÆÖÒ(Õá:í[¼# ÜÄ|/*d^ßuù½Ü{Z­&åt¼MqUµ1k›V•;X¶€`©1–…s¾ÇäÓ$݈bÊ„‘ „«“ƒ§@!Oy¦”«=Ìã>CÝãÜÓ eâ]…¹ ÑÝ_A{ôŽKç­ ¬‡é„üâaæ·Óá.àrÏmªW€*ò­p´WÑ´¾>âBm%hR4pßþMo.ªr啪X0=ûþPrp,ì·ÝØuç¤0ÛW*C!Õf¢\6½;KRÔdK¾‹‚Y2$ yÚ n"d\¨/Ý.Ä:óT4,ÃOOÝiìÉàäd€c]>òB×ÇQªhÝf`g¯)a]3D“»ÂcÎ'¸Ê.\zø"DðÙù•ÇO»E*`—pÀ{¯dzÓ9£­¤w/w‘é8Ø#eßc{þâ‰eÉo@–îÈןZU­/X‚<Á?&âg@“wR3Yðø)ÖhK1’ª%fóJ-—à½\^‚Ì‹bvýWßé=Ù‡õq4¦µ«”®/Æd›èܧÛô(³Ø&ý…(Ж´¬TM\¿¿(òž¢++ KsÂeR)é&gßõ>j¦rI¦Å3Æ6MR^e¤• ´s–j—£æTj X H÷Yq$5|ÍEsfçÍc„~¢jj@‡°±îÅBBý"ì6XCÜ­FÞƒ®Rd ÚKÕß8ÊH3…¯t!ñNä¤Óuá‹mAÓË,ášéqß½ôü£v~sÔõö§Ô!œsà Ӧ›Ò@À²?9µÞ\1ÐFí6;ð’j†_!ìè RG= (üP"?P·¾+³wHwsD°íiÁ “£3yx$kS¯³¹2!r¾ \¹®÷«rCŒâ«Š0~ªº_ÇY^ïVʲ » &ì­p%I©ÀÌÞçIçÈÜØ^|P¨åº«âÂüWwÓðà¦ñúÿä²™±ƒ,­§+Ì %q›õ TšÓ!¸9^åZü~E—ü“vbÿîo_ÆÊ YŒš*8P$I'Ë’ ñá‘A Nk,(‚'|(•À+«òëźtÔíy§ÜP ú}Ö(‚×aú_N’ê°m±ÎÏa:c0¹!ö»¾åÆÃµš«ÔP<“à:ÓAÖgq•>ÝyOegôÄå¶kjîEæçÍä`b1ö‰Xõlgy-+(-Âw¡™8߆‡•eS$„,ö”ïñÏ"õŠq0Q¤Q °3sý?ƒŸåJ–©²F^9o¯ìÜ…áöýÙÆPW|ä}2Oe>ñØ™–°0¥$Rc¸½¾Ñœîóé%Ș úÏŽÝr–œSÇ ¹‚ñlñ~П ÅaŠ`nÅÆ3mžcÑÍԘ픴F){ÛgŽ#E¹Ã7Ýy±Kx®';‰m7íÀzDQýs~Ùf]R¦bü¶ÊôÃþ8O³7²ß2LƒÉýÙw‰-øÛª>’K|R »…kÜò^]`” Ïíëšmþ|*ïïõ0Í„u­ÏyzK…úMYYžå¹óSÄøÚ¬YGä·:(ÊÿêŠ%lHPÊ•W-ü*&­eêw‡S3 .ï¡V~Ǧ'Äd2ãÉ7ŽÆ0šõ“¢`9ÊŸZÛvæbÙk§Až‹½T š›eí‹ °c¿>¦±²ë^ÄÛðó:^K|Uõã¨òªûú›Üm¢ 0Ðj7à"(ƒˆMœ'í¬4$o¨¡HìqëóA€<ªS—êíñ AŸáœæ‘óB'ÅsóÊ4þïÓc+ÐÃ>¤/µ#Û'ºð~EL†5.<è›0Z˜hm +Ĉ¬(ì“Bºjº¨ÀÝVÏ©aÜ’‡3X¬åìäŒÓcc]—¬Ž(ÄȹyIÉîŸe5Ÿå írfÞ¢çŽñqœV½ñÚR¢ó‰¨p³ÍÑÄè¿ÑÃð¡&ôï9߯Æ}™CE ?T±Wv¶%FYüÁߵŸ›è\Nrd¾„`ª0oÛ¦ùïûäé|ú«©%&XÜzv°€HVvpÀ\ûÊÎL/´øÒ¨Ǥ^}f3d}D ­ˆ«úÁ(˜ú‚åÁê_ÒòRèx{>õ w—çΧ§žÐ:Ï`Ïù¶=©B3Õoj9² ñ©N‡!9Ù¾wI+Õ+Y4ð¾a®a^O¼SVÛ“Lò'4=x‡eŽ-SMã‚Õ³Nq£7Ý-þË5 ¥€5öÀÒR>¢Üo;.ÛúÃÛTŽð±K •OU Øcƒ‰ái„ʸf¡cZ"DCà’éÍâ7…# á££Û37XþÎ’ÌðÙ’w¬‹mîMÇT­ôXÝÉ`­^å·šsq0 aô:ÑCá&½üY’¥+5Ú+E´Àð§ó]ÔÁéZltn¦g<Xù¸´’‡ÈkTUy6.#;§©Á>`†çô ®ÛýÚ:œ«PÈAÀp¶Ÿg™Ú/ä\›ÈJ:Ìsš&¹Xù•PéÇ” uC‘¡ØÔ¤€hâ(¸"ÐÄ¡"ë•aA¶ßÆ2.C}Ÿ¬žÓ²+¬vÉ'Su阹žÃË*S¤‚2ðséfVXú<ø4d ÄÓíñ £PðU„é¯Tl×K¡ÖRV7=¦Íxþ‰\¥«§Éˆ2x‰/4Ü(:¯‹áÌñýŸU–ÁPWs“5ÝEÉtd È2¡¿‡3~êkäd-·üœ,¿Â×0Þa숲ƒ·«kk¾¤Qðƒ/šr®gÕ´¸ùÆÎ*5Ñ}¬ŸíóˆjœŽCn·.¿[Úø®tÙ–æ2R¼ÑÂÙ‰Œ_!ŽäcÕ§;\;†-]äVñúÈo I@‰F¼Y©™½¨aYÁªèptAú4¤^·8—— Ú[#(j~³Ñذ)'ø ~Ïz^Ídiˆz@Çòó•0ú×x—{×¶h-8Eó»P{! ¶LiÔ 9$/^)S^ÝÝ’îÝL»Žx h$šHÙŽMzhÞuB~ê%¿‚g¢?ݹÝ]Dõâ`…vާ1#5ëÍhÖ°}SÛ¡*¨µ.¨A;>–Ž[¾u^Ô%ï IBˆîjr¤ÂŠ‚ÇýtÚçw%N¦Q„ÒN® Õ)¦HïhºÌƒ-äoá2p8-x¥&ÛûüÚ)ù÷ƒ5mq Ÿ#´”¬ølhõhª K#Ö9{ɉE*.í.Ѱ´ðö·»R“yP´þx‹¨²Àé[ßrPÖÇâ¡¿úD—‚Ç@' t%šæUQÛÏj õËö%@ý8wsÈ'‰âÅN.d.ˆÂ'ÂW;EÏG´õ6äPtº1ÇžDäÛ¡Íݽ9'Íx±—fì·©ßõ’ÞCy ÂB0ˆæòBɒퟵv/GtYæ8V ãââBÊçÏ¡‰ zª°}ÎQ::¡rùl­¥'ÔW A÷[BImãúW 0ŸÎË};Ô‡º¦MÁZÔSFEƒ¶? O‡£V:‹‰§>â<ó{Ía$®ØÒ"¡Ø~]ÛB³ÍšÝÚÖã…K/ÐèÈ…3#°fÖ€åÄ×åoƒÅÅÆñ§jgîÛfìkk¾cÍgÃ+!\6³l›¨X€tb£ÊY2ät´Óâˆçn¥ýB&S˜àÌgÅ(§EŒ·@Ü%¯ÝnñjgP{ãUÖŠ«¤«ç@ŠŠL¶Uvµú˜©ßÅaâú >—#2]Tß~‹¿*¡ÒOR»h÷ÐÓB$Éæ ÷Ž÷†®ÿ(¶à¨½}U.ܸ¤]®0"G`+Ú&.ÎaX}<øÇŽx™ò©ým´¦]Ô~ º¹ó•ª˜W3ÉSY’J™Y‰ ì{YŽKÙsbe=´·ÄÄBÜ!®Gqõ¾H]èö¯Nµ.—´ôf©óÒŸq¬VRËuÊ2S¿Øo¶%Çö~Lˆ($5L ðg5³[|iwSžÏÓ$[ áé‚e<íy×o§ØôdRª-^S EQ(öþ`e7IX}~f1úVZ^j!u w¤~V‚'š8‚_ù„–¢áVmT.¶‰áÁæ|Ò„E<«“Šb{'®ÄbéÚ tïÐ œØ¿I(ˆò]¢<µF´â¤Y»Quñ\§\q's3ÁB`#7½–%Œ–¢ DzˆšBjÈ€¸+LTɱ ´ ½?ÈÓ’5†u×—±¾_RøXã~*HÉÁ«eA˜‡1oßµzÙ˜Í]&áù æqÞ¥‹ûjåpÂá@TJ½¾Å×µ-‡S˺G~A’¹²ô¹BSöøÝ È- ’ƉߦùXaSR=­ª@<T;w$pЬœ¿¥Å œƒ•Ž—A}ûùkü¨a¨WKG’Z:ŽšÝ€Ðߣ6¾Haÿ4´op·ï¬¯UÀ_ÙJÝPkxLÎÆSÙ*ž‘À¨ó?öß9#ÖϦӴñj{}…%ü;á×N³rdJ­q ã$S¨ª4wmµŽs@Rÿ¸(R)uT@íe"Ü!4À1@Nýü$¤ãCd µ€P±>~‡áw!$ü¹x½ÜM´ê°˜y;æ¿Þ¶ðRükg9‚:4”W} JX¹<¯¶¼¤ùÙÿÍ%×{ÙƒqsôRÇÏÈ Yb¸n‡+¢ÉÖ{vœÓ ,s`+í}Ã’D¹KJ6ŸGQ%î'cZaÌÛXtµ¡ÚµïS¬º]Þuõ¥¬^¿¨vD¤ÀNy¹B¡ÔC镺Ç‚F³s^?vâo¶¼9ÈvûPn“Qx•uyA0dôºþÚ5 ôƒ˜ØÍµ‰šA} /æY2yãØ® bdï÷9s¿{¡yŸö%’è!ªiÝî¼€S•„ú)¤ËiÔFˆ³WØFc£ò8àÌ2TôÌÇ©Šì1ÒÇfAÍœ‘Õè†i’‘þ3”¢p£ ÅË1jD¶,Á±„ UdÍp2Prm‘øh¯kÂ)RÐ/~Ñ„Ðà,ôªù©Ê ê¤{¬“7´þ‰½\ÕÝùx'`¤ò·à8e»AT}µIL¸×ú+¢ü¸ó¯=âCc:ÉØ­Þu¢ÊÌ9‹XÀEé_n;»Y3³’F6Š?ÖÙ>t¨ §pÈd€‰J×e©ˆ”€dÉ64ç³Ëå`*JZÞé¶\äµi£9\î"+Õ)Û?\Íæ²°€„_ñCrR) 麫,8àzu0'J"¡jÑ‹ Q–ƒo¯7â¿ÅÅãFr> 'ÈšbÕöŸý©z¸û)’î^ý}7û°`^’»¾OÐӎǩ㞯8Œæþ´¾ªì§‹ú@üÂjPÇÙí'´ÞZû»h˜ëБ»*¥à­X٠ܳ{÷5«’“SŸ…!áD}ÜRv[à#–¥ ÂÍEÀëfIñž¼sY¬×;^ôéGñÙã4„'J˜ŠÄ{dEûÍÎŒƒx”Jƒ5„VLC”¨¥A%Z@»ÝPåìV´{ÁŒ<°] sÙØ°/4‚ØUKŠ®â©ÀqÄ"¯î ÅáÅœç¡Nm‹µéfÞ|D`€ÄuŽ1Ž#-E‰w¨µcõ\grS;Öîx{äo_ã'¡F‹·¸fiìP™O¶|Õ§³!‰§‘¨H†ÒF”â_L¯§™S}~&ØøjŒ]§õü/¶€%ÞÂØ?ô#³^Û¥Û3J¢d­8ˆÄkzþã³êx(ÓÉ/?³xDv?Æ!ص)s~bÀÈ3ãÿB}ÍRÝä?~Xebu“‹!6$º²rD$'R-5C–RzºÞí{´ÇŽ€.R'‰ bÿóCPK5Ój)«Lt†Þ˜_u R›RŸÖ0Fȧ`pèL1ÅÑ0½6lw?Í ¨îÌëýÍfi½8vâzS¤äºÙ®º·&Oƒ¢w̽Ÿ‚sýRqž¥EŠs\´!ðŽ™ßl2\|ýTf»êºNL hèË®Kwzw)ÿ1í<- fV®;ê¸Énlå›;£‚1²ÎTŒÌN]zó°SÀí4[òлáRoiªžñ÷sÅ ³iåºdÔ'óIXiÁ¸—üÒÁ·þm ¯¹ ø•µ6Ó’îP±å¿#Œ¡˜àþ3=lD¾Å[©vÖìnôI–)Ì"*MÊuƒçÅô`?çí÷:0*'ŽÐÈ·`áö2t½©ë„Þî,™çà…·k10ççÕ9¬ïú·œ(Ìê¢~.tç۟Rf¹Ã|AÇ„§Ç-r'ž¾žÛ[Þ„ñ.»ÂJƒz5K%=Ó½wCÁZ¼’ÿÈ„ ´J"k? H´Â“HÝíÿ?YÇGTwî¤H%¾&5OÀ¬Å …š4)N’}%Œ¹¯ ˜,£¬k4%9бYò3š±Õ̾"zŠÕkn\U½¶hÆ;û•Õ¼S;)ìã ½JŸ§Ak"ž<¶âÀï¶Û°„íÅþÎDøa˜“g¡èN.'´è©Æ»°o?&=#Ržh¥2HÏ…©*\LÚÔ-ÄíÁѱcܘӞó^§IzÅ&Ó¸äú k™K¦E•دÿÑ›ì^ùo)—)a–¥ÅÏEgŸö­ÝF‘%W¾$Ä÷EÝ7R­Pœw…¼™Fª†`S…“q0¦²C%°z+S¼µ8•ÆéM´ÄHºi×´óP!p2dag0¤€­ÇnÄòóºÔ­dëÝËzÛ¶¶*†=Ç4Õøý×y‰Î­òÜ™4]Jë]ÝÛÜ>ïçÉ8kÍU÷i‘?ËÍ“€f &ûù{é×ÃÑ\y×útÍÝS›íëœNX?SÔ3t×gýl`Îj×ãkîP&ÆÛ¨‘¬Ÿx7î›dw8´€ìl7:h“>Ú›ÁxÁ›œÝö­Se‡ qdÌ¿@qK$õ92……ø‰i !L%CÒÞoݨ‘é³4+Ms£Y:,â] ,ßU¦æßy4Gß9$ƒæš5Ê6Mß׈R[J܇ Å“Bevßµñ¼ÛiÍÒÝPW-\Þ-y×rÙÉÉÛ#ˆ..¹Î¾‰ku):p,~¶÷«0ÝdÝÝwI“'ã“jut&Ó7;·x9]rÒ!ŸŠå!éŽëR4dßäø¿“§ÎÞX-VØÐ‚f[™\ 椯Éfð½-1°AK£O¿C°ðŒ» )OÅà OÄžÚ}]ôoÝ–bÑmìíÒHÆITýêíÞØ)6àØÛ'°¢<ªC›­ãGÒÉÄÿ‘,€‘-D=q†ºÎA2ÊLNñßpâ±5JZ·.oº‰Œ8#ŽæO1ßÕÀ•EôŸ^ÅÎGÙ|¬wH{ pqO‚“¼{ w¤{­isšª†œoŠ85^èà$„ùN% ‰Á‘»²*ÿ±Ü¶ví£nÚH¾ðnÛymœÁN€=¨zÌ42—Ë™·‰Ä‡Èršåªµò=”]£`½Vâpéôf@†ȼ† é„Ò°JUØøÞl ú"å–ï.è? GBtæ>æ†éì*,Aù4åØZ^§•„É­í´B—÷°qYök&>œ‡¢‚Tû–7Ç3×'G؆ó¿=]xù2©ËÒã¶z4$SÓP€³4u¼rÁJÁ¡!Ó²ë6ñŒ°ó¾2Qy$NhòÒS²aš4Ãsûåæ=“9Œ „Ý%º^ÙSmoŸ¨m”SZ gÁï ^ï^3}"X×ÔK/w2@ü~m8¬-eωpD0Šá:O±skÈ jNÐÅnÜêK¢ÿ? ½÷ñ€ p<׈[¹2¨•}Œò˶ñ‹·k%Dþ~ªL¬xÁòLü>å„[ÓühnѲíB8 `øÌÍ2§a’yålÃåì–¬ùE…+„¸Tã(Ió¸Pà⃵Õ/þråYÓ |5&¬3´XèÅkÊmèÄYž~ÍAí¯%7¤ñP͉[vQ'¥¬µX7ýyç vœ ¢ÏªKçÓöíë²¼+_!覆JÕ5(U†eš§lÊÌ©·VþÄ女K¦lɳà U÷=ïîPt¹.óW&Ô.qÚ6ò—¬ð6q“>?ÛV2¼+$Yí¥å„§ |Å4t5¡ò¦?À²k¾üušþ‚ŠN’9„…—˜Ö iøE_Lß×à%çÌN•SIV yàŒ’²–Í‘À¥TâÐ:x5ñ扙œã Ë䬤}üAÛ›“l­ý°¯B“ŸðØ`©§X­nÁp?Äl¯ õRؼw¹<ùðŠÒâÎSÏÔƒ]}ÖvØEž½ î[_F[3D.`Örš÷Ö`€Ïwg¯ÀD4…n]@*5ËÿÉäzöiÙ#ªC 4\\™¹)•Þ3ž­°PX·¡§Ñ…•j{×,Éamù¢Ç ôv¿8z}ߣYßA 6/ó4rEVY6ÆØœó/r¹ô]w š^<2™pêW^—ˆ˜>è¨;jL;“=ÉWŸQ ž®ìã6§/EsR‹™57 ­6h-¸ªo%¸îc»—JÁ³ôÌ¥ý’_}ÒЖ󉇽vM™·&@²;ד¤úíŽi÷'£O¹Ý{“”ë?´"þ¬_Ñ3÷oäž~Pp‰sæÐϬ‘ÔHV™g*þ Î5P”`_ù)£ÒóÕžÔ~çô7ú:С k’lÑI—¿Þ³åÄh°‘÷Dwä6Óë <úΧ¡™”ö­ m"?30:š)èÇO"©<ö»—ÿ½ª ÞÎײxÔͪ¸'MP_럗vѬu€Çaûª£ûÞÖ&—‰m¹Æ „ïØ– nj)*‰ŽíqÊ^€Ó=TæS#ìþ«õô?¸ž²W±¿5¹5žøRPsHd$»“v„õ?wr,·wæ&ZÝ›y$–—p ñ†¸M³9 <ü8üØâ¾à<&ÂIgöé.êÿ~¨™­«³¥› 5þDºõ…¨éqÆâÛüô#¸/+‹¨5.µ)•<þq=â¬-™Uû†­kî\Ñc§«ø¯tUu"Sñßß0Îí/53ÿkdÅzÑF†½ó0Uˆ]ߟoÈÇ–9$XòFé5.ö-&:v³7ÂøÁ(·0£{›f>áË ‚ÇTÇÁdø/3š0 þh)¯´b ˆ™¤*Ëö Ÿ1ÑÐÈ :#¦Î +A 1Ê]|— ²Ýúå,UO¢Á „ìÈÛ阔)t&Äq¡ƒgðéÇy(´¢Cv®Ý´…I³‚³f_#ĈølùIßçDI± “U¨™zÈ_Ø\yÛ¯ŠÝüÚá“øv”‹›){:ƒXP3* µ_qq”×d”JU™ñ˜¦Ê€¸cœ[A2Ûº_wè:QˆW¨‰“‚¿{f» ýGDñíÿT»r|Ô«ÓmâѺ;6g¦PïQ¼Òñ‚ ü*¾šóÄï pY)ë Z¤!À=[!6£JítþQZt@$twá)µ‡³­LK¬eÈø‰šÉ !/ÕØpHÉÄO—¦“3‰.0S "ËçËËô«,zr@#P•·¤ô®¿Õó$'‹Dúë0š (‰ cØo^Üw˜­×…s?ž<®z¨ø–*q}A˜Le¿ä˜õU¾{ ùu~3i: ¸iN§ˆ4û<³êî-#•§G|¹ûD[we'Õ pêáw»¯ôl'›“1 îeD886úcºÆKòý—½Õ1·…•uKŒ5ÇÛâ5ë'å&:šV´v¶·äP¯‚Ù¾—AÓ1ýØ™ÞÐ[øë”ÕZëZÙ}4üá9¼èʹ˜†?ü3ÏG8íÝFšÖ¡/kÈ=ö4²;0F3.µg½‰ûLñ¯ãúLÓ) ³º.(FÔŸ@`×4}J¨ ¬'@mœ€]xÈÖq.Às¬$Wn±@ëÂÕ¹B(Ð^&ŒÎŸzÕ>>½LÂ"^Ñ¥@Ê™jÏï×Rv¯¹O˰‰ãÀäyL@®wÿ%Ì0ÛÐ?âyŽƒØÍÑñÃ@‰h{™Ñm­©, ¶·ŽVšþâÛóÒ ‚Ob+Bp£ jWŒ{+àün·»a>uÅÛ¹|OÄxidã$xBýŸ¤'ÓØÙñ›^rÿi?«¦rRí.j¦â±Á¢)߸"Õwqæ»l.Û~ÃðrM­¾j°®µLeþ®@|x´sx¶¬MYBžÏj=´bŠªã£˜ù³`8äU:Fã·-² [®¥,ã6û˜ÇWQ<×a¶›k[{:*×ó4 lô­-µÃ«wÀ̹’ÎßI÷ ²-Ù›6IÁª:M B)Kk¶ÀÕóH­Í±£Ðn§ˆÃÌЦ~&* ¹, T§X–î«ü\Åìç¤Tø²Âwní©øá9Ryr-æ <È@¸È¡¸Døg¯˜ 2sY>±2 âŒâ‰&†;½†¨ôÜ2t\®êëÏ‘F¢­¢ùv“RÄ™×Qµ4»Gµìt©@v…V‡0E7§:ÆŽE b “ØÆÜOÌ-â^»ªc\NÝÓ¦Iw.ŠÅï¦ÑàóMçGc c¶q HQS¹¥JÔkB¾Q ýŸF˜PÍC=û @ÇéÄ0ôþ–Lnƒ° “±c_I4©©VµMe«Qôg)¶ü0¯ON²çR_ß98.¯å)ùª5¬g„žqa‰Å4k q³Žj>[Ùš3Zý1 ?Òæä3ïNâK|Ÿñ¢UõQÀ$“êáoÅDµ5€s{ü}QÕw ±øÿ0h!¬fw—ùìhC´¯¥6w*“§æ¶yõTåÈnóˆÄED°1nfq^¶ ¨ÅE÷Ež€ÃµƒJå3o *=ô"ÓˆUùRdÐX ˆ"¤J9¢L.dZÇì>îìç¨m ><]cu§½Â7¸ ïoît3jèà‡Â›²j†Ç)*$Ü/Ë~.üN^—·Jbar ò§ ÔîC…¡walºEÉÉÇr1§«COU0ZjÀ@‹QÛLÿ•¤†Ì~ [ð3ÎÜ®v¤À¸µÌ*0ÛX]Ñ(âÚ©>”ÒTÖ»Æz¼yL?¤ýë§'\ƒr×É r¦4û$[ä¯*¯!¡”ãöµû\Æi¶wÑl *´j»½PÜœîûL ÷UÖVM·FAUèrÝ$\kõe7” ½Øõáå…qbC]ô‹ˆÜI|Ë80¬ïi£Æ®O!!Wé…E7Ò‘ð9Û¬JKËü€R8KëQÚ#8Ù {t‹Ï1 Dò®?ÂU"YG|ÀècÚµY¡*ƒÎ›]c‰RD‚:}çl­î@!s6µñU«R›ÀvRbÔŸŠhÀàå¼9Û&>?û—’Íÿb•Ý8² „§s^*–J‰AÇÖJBVŒ#·rÍcY¼ wZf9yÎØ7²}Mo´€Žô5¼¿èÕ–Î߫Ѕû˜{x¨Û庡ñ»BUnðÒaXp•¯3LdÐ$·¤ƒ5/!Ÿ«¼ƒÙ-´+‘PQÔÌ7€ÍÕØu‚+ìC!0]DR-G]8]¤5œ¶¡õÓNŽÜ|§J¦ÅwÚ”šw ŒÎÈäôhAM—Ñd|†÷¤œÓ äÂ{‚+(2Ó^­¤>:T—<\Du9›§¼GÅÛ^5½e+úøTÞ‚í™áØÕûÉÏ¢;IÖzv_(-Ï(NôÄžó«RT<âÀa°Œà¬n û§aé?ˆÏÈ’<ë.±ƒ.[”Í7ÀDá02‡ýñM"Ûï%ÐÜíá'áò†“ÝfUi7æ±þ€ïÜ oèŠæY6J "¨PûÎö×5C™áÅ )>B6q„`SK,ÀßIqtHèÕ~H9n we8Öª« ÐððtÅOܯk»÷"UGêrŽ`xÓV<÷s•¶ãMŒ]³Ð]K³ }0/Ú®:Ü*· ê(‚(Q¥34ü.ùŽûÇt’Ž íô—ÞÎc;Fµ &¤<ü·u>¬xš”gÈ)5µ9‚P[–£v:ü¿ _rúØà­*Ÿé`‡jõDÀ—ý×óÂSf--­¯þM… úŽ¢!ÿÆîžªèd•p4{Ц¶!WŸ¬Hõ0`îV[ üÐðMžë³ñ·”&M@5Íì[Ô¶ S•?ôŠŒƒÃ¦Y„¡z-HY諜#‡ ‰Ô™­ -âVIVV{ UA$ø)¡¦=ÿX/&¹ÃtÜD¥Bú?_N„"¿Xpà›d%Y}§E›˜ ǧ% i†ÀÒn'´ï’”³”n%u=t)Î6æÃÊþß„Êa?w®0SgÝ+ê^úUC¢Óœ„flN…Ü;ЦÇÎ)¿y‰øÏP¶Å:ò_°a‹xOm ·ã¬ödx™ªÞÁñ»¸üTlu@½ã…´”fLeH®Á“½à3ÎÇFÁ¸~JcãjIÅRš;–z:œëÅ ë…Œ-í®“&‹œ0bDZ¾]«†/ NmŠÕtJ}éúBYü§ÿÜ×—“ZÐnƒ˜ò˜ú¥\¨Þsgõ[Ék[&Cx7Oüô”4C']úFSÂdñ„éÝéiùƒRw^¦Ù¾9³ˆtô@Ê[Ë%¸ç[2®hã_'G‚5ðící¢\ÜÈ L·Íù2$‹¢hqn`ó˜ÙÐlž†÷Xæ˜gTè ù(µâW“õª5PÜ5rEÜ<üŸ¿Ga T¬I±ggˆI¶Áù8 /ªB0‰¿tQËý3/]fNÚh3] š“G9R£fL@r]sÃÏÿŽ‘ GÛ¡‹¦0›ÕWä~óõ:ÉDüžø˜ñ…Ùê§³ ×þµÀ¡Ó2¥ÇŸäO­Ææ_í$øve@e½g6 i§ÜÍm_×áì¦õ0F±®“`¢ì«„ …€å,¸â©*AGõ½TX¬ûÔi#”EX:‹öhgš`c†J¸K vãÄé_½(àùï÷ÿà‹Ò"Œ½½îœÁü­„D½®ËnÞàPé¿D¬­C‚.&ô–˜wKQ®“`¢H-lA îÎ4ª7ïÉœßøÂ™ÿò ÐNVíãò&Z¯ÂŒ™pøs<@mËïÊÝŒƒiõ0<¾s›orXΤÑx½„Ú…ÖB[Ð}§sì"3Sâx³= oûŽóT ~[Qe5øÎƒV,¯ ÊM‘Aº?ž é8ªºè¨œ†¦ï%ÖW2儬µç5fÚYï[tLͪLõÓÉ4B­ICØÐmE—$ã“ÀÊ.ø\7mʸÒËkQ¬?ŠŠ{P?hr3RÃ2ÂÐ ´ËNulÓ†Û[¹ö–pöV³Ñ%…-ÓóÏã˜sÝ …Ž®ª{S1L£¬ÓT<òë ‡v—âÇÑþ¿cåËïËO­Ô(Ô½R†óÏe2šïb åxl0·ÑN³øìm²=–bRj(ž<ñ mw DDµØ´qfOu"ÿùvmÎ&ŸxˆMfhlò:¯=ŽgŽØ F«Åô4ü†Ìß–½´”ßf~ÑÃ$ƒ´Uˆ÷)‹šÁùRoRˆEmÚu›9÷foù6>G‹ÐY²Æw8p7ƒKDNWcoû#‰£‘iQ¹s•¥—êb|\pvCBR ê…oúG ªš¯Å VŸÂ6R™}eIpžu>®ªÃq À£Þ¨œ7e6#àè a´¯ûV`PT³†mÌ­!¼I9]/GyðÕuàŽËÜ×ÙKvv>DÕ¶ìb^`$äòDsþ^zˆ­[¶ø`H¬„NuBKˆSåÁA$¿6#t6¥Ä[ÞL÷§&´ýOÀrHBc¶ÿ9õNø“„s”ö/AÀ:pØê‘×øœîNá§Ò¿ÿ¬#éÌâ«V™n“–d‘°tV¥eøÙ¨ØÖ=´3w愱.PT\ÒiM ïaF ³_Xr¯y=¨ÅÛ(%œ|q}×4!Wk’Òè<îToæ¡£¾ F/2¥”Ód‰„Œô§"A·mbíÃV/qV˜ì3©êi¡ƒ/q¼Aëô©Û EÊï$ä ùn§Á;\ë#ä0Ú¡§0&U­ÚGBK2ÀCP<ÓZ8zr hÀêˆÑ¸ AÞò±ÄýrPÿT†)K+ÓåÆgÐ]Õú;óצrè›ô’:Ñá+Þ“$vÚ¨Y]ï,¡„OÛƒÔÉÉVåûE6ÝтچàЋSL3gCv4cLe²dÛ®ÿyËLeÅUÌ.¡^1Å(`/ Þã ©þd½çvjF?n¶¤ao,Ë… ™ä?mfL2¸§¼Ê¼ WÆ$=ª`¢1–5Ãè¬ÇÇšÀÏ–öí‡aS6( J„Ìë¯.Û”šÒõÊ3ß3ßôKÍ„…zÂo=/T OEö/ؘkÊ_‚®ÖåìεQîrˆ8’RÅëS¹Î´š9&úõiK€Ñ·S»Õ iˆÀ9¹;kª>€2ú5ÊʧöéuL2¡K½ùÆwÚ埈Û9X¼j·ªâĸCL.lý¸_†÷ºõût0lߦЧÃA2âßÑø*b*¶vgèLaÉ9t:ªÛ—N\‰ &…Õúºó¶Px'ÂÿgùL÷ËäJƒ"ðXÍVïß5 ô7›¸hŠå‘ë,e·ýÙu5M¾­bá{[ûmUÒ ]œLÈ~}cSɸ™ËaÃõ¢­ñ´%Б,euïKF†¾áZÌÑý™´›Fº@ }Ô’Ñô[÷è28óæ¤Õü¡Ësæ;Õ²`lŠiƒ~1æeP\; t.‹+-Ë]ƒEç¿•„«Úůusv«0¸ ÙÄ g0¿RÔ¶pÇvMò‚1w§Fz½@Öˆ@~:™ømUkA9LÀqÊ£Áxvÿ€gï¿Êê_¶î™ç2 ר>4Üo6nŒ°/`ª÷×Çdˆí[À;×£M ð Ëx|õºŠèÜ4Í ]/×QÚ•’e]}í@I/×6ræºnãn_ï.Š!ÍsfÖÓc™$Ö¶:û>ºúBš·Ü¶TùèÏúÓ|ŽnÂ`'4úk÷ù½¦S¥´î~œ¦\–y¹rÅ…»%·;8†O)B Æg\¸ 2“‹~,W5ãEJºÎÃ9…%Ë{L§H/2|!!FûÁà•ί¿ϤA­o¬6!âVÜÚ¼NøÃ´I0me뤔»Þ¤˜–^¥,]¾)MÒø‚šdÓK›Ã†C©G²rH=ï²’¨5ýýþjÁ7 ˆ9òÒñ®Gb¤D-×Ûn)‚=le%önÍd ¦.CÝÛ¾ÿ į&9¦c_×è[JiÁ´Aä?#ùëæñóБ›œU ÁÕ69áÛ‡\ ¼ôž'!8­ú»`93t£ÿÓø°v $î˜}{P=¯²ö|ÐÿÐ+§Õο]—FÕVuþòüš¥¡lÛPýb)îTÛ-Íã‚íÐi‡CL,P±Ý5ÑVGX³‚U]Áe«‚Ð ²Š~·Ô»ˆšÕvç¢|º8h2•Q’öW÷ÌÍ1ŠrÛ¶¼³èÜ1Ê-6‚²ˆð_4„ $µ5Rs´ó—ó¸^Sªub=V¶ôåfe °µ¯¯Öõ»½×Âe,Ñv|Ϊò:‚ö@Ü5¶…‹Øx*˜ö“ºšð ×øÏ¯AçÏK´Ùº6¤Ðdýh¶|ä³âÙGµŸ5!4(rYöOcnMaQ«Ð“nªÿ‡(¡ª MÈÀÇáñ¤Dhû«ŒߦŽY¾hÎ9Ä~D}=ù«èWs½H?*±ãùï2Ò-mr™ÖÖl^æ5Dý~>¿ïOoó" ²TãéMÚîƒ{#$w‰ _ÿí0kç‚mçAg›­s1ô?–Ãì¿f@hMUÆ­Ò/^:H¿¨+uJ©Øw ² í®Š¥iºÛN¹ÚdPxЫ^Éu<9FGç÷£O9”|ó5´úlÅô“)G´$².ò§Yvmr‚k}ôuuÂDuô_0lQ,•ÛoVh«õ—‡¯¿]mN5R\w ~Í>Ž:`XKˆ8ì²G,û(”v+y ^“ÈßW~bŽ hµM å©ÃǘfKË[ç­gZ'¨ÔÎ-Ê”CëŸ µ¼-äÿzç¡©Uï©§ÐŒ¥·^™s+Ÿ:³áÚ©BNÝ[Ä_Kàî‰î†¤ƒ+4ÂC%:È›Jcî­¸BæþÞ¹&K*Ku‹ÜÇÈiOyóŒK^9¦ØÁÇ/ìÈÂ)„=¼5£…ŸG“½Aƒ‹kÉ_D"˜?s{R I0ÐhÞre#@¦sú_¿ò…¢%$BÔŠVü1*rÎæVwÏ }†‚o×yÌ6ØÈÚŽhóë“Ïjð;À;d6©Ñ]9ë”ßo‹ràèË D3TZ€àNH#Jap òdzìAaÞØllŒqÐ….ó电d…e¯P/ɹa121'c ¦êlzÅšÜO\£ƒ}3:wqדñLÑÉawÙ…8OÕ\¹ýòoÖ¢“Ã_ÜI©æûºŸÌí`ÓÃQ»¶ ¼ZE=Žñ„J<ÏvÑùÊ lгáà<%Û"šáK,Ð`ª1ûU¶ftÐd y·3í‹Âs7\@ œ_ÿø(N[9ÅÃ…B“Å_Ÿ…s0³ XÐ%\ãaÔ"JñQnhþè­áó Á~h_'Oâ³#•ÏîÚûñùdÛ†\*!mÎý¢½l º…G‘¢@^…_oƪ&ë1Pá½Ü!au.]î÷? M\ !½tFÊLÁݾY\“W’§€ÒSç´Ï’kžTqwy]Ü ¿ug›J N7˜êøšˆÇø3Ò FÄÈ›i<ÜtÙzl75ÜÖù¿|DzÎŽÖÏêTž +ÌPîBé¶\•O/܈uцûpöd|6ò¤A"½…n"ËP…ì‰mÌýV‘â /;4|HV¹C¬ ‚§jwzc›¹\!éZXÈ]Y/\8euvŸ #Éê„~d¥]ÂÁ<—£üœ©LöM“¬Vß͵Àr{W–ø"ó¤ KüV öo•¾WHòm>ªÑþžXZ4«ƒýÁ`œIc*£ÜsxˆSÐ''’MjtB`5`dwn­¸?\rÚ½[FÔܺتl‘Í;Õ?æèç̤®àˆD”Ú=ö­%^q3´¡ú*à^0=Éä—1‡’Ú@£Ú£Tñ]ñ¬ûz;í™ïá‚´Îì÷¦ÇTŠ<“Å<Þ¿âŒ1(É_ O‘ÿ[%Qi+¼ÒÎñ^ÊJ /üå$Xœ—j4xYYª©ÍUܵlÛ,Äëv›>‚Õ^ðåP:®þ€¾ýWöÎf3&…OQçmlÇÕíÚŠ©!Ê“æq}…)-:§Cœ z#ø~›eIÑÝ@<&]<&ƒ.jØcQ ¸Ci ÎágmmÑDyžu%ÿPå]rp5ñõPð_HÚ1 ½Wäůªxþ Xþ w ¨ÚlK*ÊFQ}§Z®rIÞ'W$L*í£óÈâI¹d7cEÝJPÎÚ‚ £¤¿Å›ÅíB§ø«1Y·)#4îÚ”Fw.Lƒ3¯B¥ËÊu.sQñêª[y!½Ù”¥Ó0:Æ6[q®c%Lô­ä²ð’ˆ`i;BcÎÌŒ~‚Iªwu‹$ŒÇÔn ëNShŸ±Î9Åͳ?ö)­Æš_²íÜmu­ãõÔ~Ü-F¹JÁ5U0ë2J÷¯Lrm'¯ù#.y4MR+ÏèÉv¡Ügùo¾RH±:Õµ@Ýf2”­¯íøžF•›œ_/vvNÇ1DNkTE0qɘû¸fó²$ð—£M×è}ZÓØ{IÐVºÝ ^v›YͧÜ1ŒÈEñ†L!-欗áŸ3¨DûÇso»:^/£Tõ`h Pýט úá{nÍÑ×;”¹Z‡D¼Ÿ½è¨òáTñÑL2±j­h›Š@‚„•‘ûmÛêÁ‡¼¥‚:I«]õéá5P”‚BùaSmЈ© „vûI¥è‡ù}äG8 Ž"퀌­áM›Š: ü^AàU*C3Ù* ÉÙ˜—x{ªyHÃóç—¿üg¢x/bó®³>ÛSb‹9;ÌNqN5h”)1u1t°†õ^”{€/  l*‘©³àsÿÂèêüñŠñ4Á‹ L1ÏXÎßòÌÖèŸFþ¦AÌz¿&F£Í[sÄê˜A“Ö¾€†œsé¼G2ï3Ëó Oñ± 1 ç™Á®¾ÖgÙÃ^˜’:±•£×œ¡[œâèëKZnê#YdFéù¯™8êL@+5 âáûšYÆÔg,I ã0’XûǮيò" ÃáZŽÅƒ«_ÖZÁ$Ž f©YXWtmX°‚GÜÇîˆQ¶²2 L3 l†Á܉†^qʯÒvûj“2ÙS/V'v ÒšG?8¸g©×0´°pšì‡zŠYâÛëx¶qø2o¸2z»ÅFL/´Ÿ |nŒ“Œ>0_í•S˜ Ô—ßì‡Ð1 ‡»ZRdl=d‰) ‰žáøNÕŠµÀÞKã3`|"‘*f‰S>HÌ?‚Ëx©È0toðíª­_³ÿÒ@ßR´T«Ð^GÌt…ˆ2ÊöFA `1ÊѾÇàçtž¼ˆÚ}ñEF„ëÌ’i ~ þó~¾¨uØdU(²\—º}6™Mž¯ÜΊíBðû½fß;;« l%.C¢“>6×/hŸwüˉôƒ±4Qó<*™”¨î‰ÍÞ`Œ¾ÐꓸaÐÄß6²\(é>ZÁÝaa|ãŒghVrqbÐÀéN“i[-h´glúØêF³á@.å½àjþaöï—†íM}ã0¸T¿T?R®Òwy3“xªÙ\òC*‡ÜÄõbL^TªL€Ó¼2ò:¶Ts‚íD À5¡ [ãiõ6ЃÌÄ?]¤^£]ÕýH#§Ñ©íøÛÖ. [þ8:F 63ïÞð!Úxj EŠM .…%ð” i˜d†®ä]8Ç»2õ#UôÛîl—•* r$[Ú¶ˆ{›qÿð18¼%²!Êú¨À7üeâ°‡[ë‹W9çK#O>´È~–T‡d¶¢ÉtÚ€ˆm„Gv"M/N¦U¤ à¡p”Í|ô‰©Ù„n^䎰*Šû¬sx!y¬ž!ÖûÎs­ÌàôЦÿ™¬|Oû&ÊÛ•²ÉñÑ‘t½¼‹¸Õo>­ˆÒc1Ѱ µX Ï2O LÁk†ö1Ejœ1®±ÀFˆ~n뻀·ÅÎ`¾{µ&xoy9ö͇,'Û*P‘«Ú2†ËP1(¿!¾n˜˜ME=DGÒ㊽àj…´ccV¾qºè:š•ê•GHŠ[@‚ŠOÀÿæJê—Gá<‡zô/&2«©Ä¸5¤ŒioBbK—@—š1-_ù82®«?M¬öñk0Ö~‡I¸î–eéà“q~Àœf»%b×H:‡·I$q€§ú=‰ ýe„À;`<öqš0‹9¹|ªC6ú.ï†Ô¸‘?ü5D[¢‹Œ_Gï‡Õ·í„åÁe呚#ž4LPÓYôQ"Su¥½öódcɦ,~Ai}fƒöŸKxÑÚ ÷OçO 5OWf*÷'̘v?ËUµä6øD•W¹‹S1L€È›&èCÏä âJˆ QHWäÄœ:l1µkå.|ÏÍ œˆôOâc$Ù'§.}é“ÿnýlCðX¦`‘{‡šû,äýàu»ì9JךâÚN¤)Žs½=¦^Ä‹4 Ê"lÅøj e¦²-™†yÚSùŸ€Ag úsî=¶Ìˆj/&t¨”Æ^j@i*‰ºíkÖè= Ù¦~ûA(l7ýR,Mº¨Ìêœnoèøµ¥x´kÞí‡Ü#ËŽoãØ†~™]´ƒ?÷†ú/®= BHé{EØhKæ^ÉuXY{Ëëy¨ûN¾¨Õx˜ËÃâ¬~¢ýÆÝ ëÖÉ8ZTÿЪŸ‰°/ë÷—°EôGpЫÉ~ d¡?®nQ‚êÎÿÍ-^ÑþY’Ø9yÝP€±_\]EiY€Œs‚ŒïœDÙRˆNï Îl+,‚2Î驺uzv”úÿ”"F@_2³ªûG’'þm:Á »3,õÜ ‘Ë…åÆHöo_M£wV¯5Èà©ZZ\ziù\©¾&—·Wª8B*²ÈÚ¥7ûT ­Ÿ6! ýWêŠCǯ1Æ ç ”Lþ@ˆã-â‹áVõz›«ó‘—5½·1¡H¡b+òWìj©Ø ž€ ©þܼCAWxVu{„¥n©ÌîZQ†Aèm-‹S7Hç ñ¯¡'W*¸ Ù‚Öìï%TqæºæÞµ¾ j¡|]–FgÔÐÎ+qëGöa6Ž\†|•Œßüç3yå#Rjȹm^å ²hË$f;XÃx©“ģܲ˜RúyuèÓ—(®$Ö[Ó«ÅM‰!_*å[>‘k~R„‰/U$­t¶UÞÏFê¯È ­êÞ‰,Ä÷˜è6VˆÝ³ žÒɱ ÿyâ€ò1ânàAŒÑoh²§Z$ÉE©ªöË’j°’¿èy%ñ»¥ï8-ãB÷… øe¹ëY×*·Äbz¾»…¤«Ðš:âi•9Ý/¼“î'8F,µø±)Ã3ÅH{·`bÀõ®¿:OÎäÎÏ Îþm”Pš²ˆô%•6dù8έ<Ý Ê¹èTœö>L•ÏÏ“'êcª‚(ÿ9XC#¾‰ÈÿÑÊQM°èD–½2>lâ[H1s°.dd‹T©Ž($STlygÏÔýßÙb< í´A¦(ß—©…w×{R‘Ÿj +±R ‚³½)„ënëÚ-x/ògž n¸%ƒÔOr ¨9§FîRpß[/ܫӸ?†®—Lô9}ÿœSÒjÅŠe¼¹Œ7?£& L$F5½¾e>D8µ‚âʃæù­N?=!z•® ß¼êD{›„£ãcx9Ž’kãLS<³{¹‡à~bÛõ¯yû¢ÄF0:îªïÊ4ëXlL뎸͌DmŠ}j@ú(Ÿ¬°®PÄ¾éµ ˆ¿¡æúpH®€U‚Â$À@‚ ìk(Í•ö²è¿‰õ¾ Řqj®œ;©ø`ì•Bd_‘Ü2AŸÙGò›ÄXíëê}N“æM`Ï ¿‡þngÉô}Ñ)B—”5Í#´LBä ¯Ò·o¦§Á™e”= '_*…Pµ†¤\6;Ëuô¹$ÞÍ×Ú®ê¨= —Ûu6¼dˆÞ ßkÁa.X·Iâ3Õ*ùˆM—(n„j…jUˆïDv*k\tw™!ð²ÊAÉIznÍûäÂ;<éA±5d²HÜZÚüAå-Üm¤¾¢W óéF§4(Á Yf]ðvIíg>9S}ÍÖ÷S&rþ mo’÷JªäGFÑ2ºPaAç'ÃMpÛü:ÿî9#÷”¢"˜ HY[SÆXÇRÔOAF®qâ€?±`â©S™¢œµåWÎøŽýïïçk³¨oæ‹ÈN7“}®¾!ì¾S«¸í71üÜsðu›%]vÀåè³™˜ÐÔŠ…Ù üeš?†‰:A×{DÎ&Á1ê}9¿é»ù·dÒ)UÉ‚1FX¶L@îtº‰IS¤í iEë-<.d-¸ƒ~÷Ï’e¯'ê‹Åæ¹Äö0òèv©’ VrͺUû¼;m:€ú{DÖ)7é@¡Í àA?ßSøÇ¹t®6Å.©}aI=ŒÍ[°Î®Ñr…«ÓÔ˜·Yi¼eŸ }Aº×Éù'¿JÖh„ïq¦yÎY'‡˜ÉZvN[ ðqoOÙ6_;µpb¯­$êO”ÙqÕñ~ÍW{(N€…+F¾P~ô-¸gòŠ3ºþê!?è\L¯¹¨®QøŠ@pæ­ \é!b‚øFÇІç€áZRâ<Üó×Yym•W ¸˜D |” $¯G° löþŒ8ÆI¨:’ÚÙÓy¾/1Zinϰ.VóÝk­Q××NN†“üˆB|ø¯àŒö(訠/^šî-ñ¢X¿M¬ÅÚJÉC³wå®ko†¯lAaÚëÚu+j8kž38íŠÁ „–‡íÓá|Ñë ¤ÌØöÅ:»÷ŸnùÞpm²!¯µD{oR]æî[æƒ,¿ºàñ°»T"/]ç@à¡âœÄXr]ìïµ Ã•=ddª†¼¼{=ðbavÑH4Ô{M‘nõÀϾ Tšã© (+Exn€•Á4_›Ü×ähøÈi6\˾ÝPöü™ÒiIbðhŒ5N®µ´Ÿ…‰¼&Õ\Îz,a”ù/ÅU=î€áb/5¾2ˆn=Öt²›ÁJ"o•o;n hÎ%X=®(tGU†Zèd@H: zFÍÎxÖäˆÍ 8—*¡SÂÖ Ó)Yc‡ó‘¯Þ+ËÔ¬JѲ˜ñîL„1ºB-d~#™Fœ4 <ø_ŠkéH'^ Ýkª3ô/7¯™§"ÀD #v¨³ÂRï¹i'ü/n3dNi©HHjñ[è_Üü©Ö @EUž¿-‚£%vhç-Žœ óL¶E#I]«ö+%µ#\RóÏÑ”QÚ£-ÇýƒÙµ7(hM›h™/N^ÆÈôL&)él ¯cσ”Bô}Cq "ÖtJÏ”˜vT \¥Àíëê_¿sõýyde`vöÅ–ù~‚ìk:SêwÃXhA±B áñý>Ã'IJÁùnAKµM©ˆòß»çW´ví{¾¨æYË–”UqÚ¬tqø@Þ«ðkTÙN™ò$Q¢ý<~(t¿/€œ´½ú#~k-c k åˆ L¦ÿ¶°¿Ê T¡"¼\ŽF­]}AL}”á1Z0ö®i™ d i® ¢ñêIJ@öâªBøœ&âÍú1­Ü9Ìœ‘›@pÌLB•»S(Á›3ηŒɧYÍœ"©E%JŒ†Í­Á>&?Öð¦u8óŸl7tÐZÒ(ÿ„ÞC6°¡2Yq®›Ìá8¸¡LcŸyiçk–Û—~ÀwŽôÉqUf<ª?í³¤¦ Á+69¨ xÉÑ®*ä\¸r¿\…ZîöêŠî[ÀµªÃγV^¿/S¬ß";t?²§ôÅü¢“#X÷šXÌh/m‹iPѺžãct3_e!‰4PâEÓZùc­ÒqÔzD.ì{(Ò¦„éŠÇŸº­&{=lDÆ,#r¡Š ™6b¤Pà%ºÝª3æÅ;i “Hiou|0µ#6µæk¢ÑÚ7e‰šU[±½.¾ë#³›¡WÚ¦= I>ãAˆ–'m¡íYã¡K#Ô½T˜~†ºXç.ÈÇ÷ý‘<Â3(¢Š¸y–‰j´" K:8ÿÞF/&¸n À8¨}1œS¹‡êÅÐŽˆ¥ú'W¨¿t™yÿ2Í·_vK9~5-ÞÜ;CaäÕ("úĸÒ>¼1z¿@zsÅ•OT û–Ós% ëHÀ+³Œ±ÌP‰7Â8Ù}’òÃçB+;`¹yD¿k.6S!ЧtFpäØr$Ámb!…2eþoÅn£±½‹ð†zzg²ÓâK¢Õjl; K‹äžÜð æ$݆d}‰#.ˆ°Ç|ìÙÒvÕý¿G“ i=Jt„Öù ¡Á ¤ª(yÂf 2yP™¸ûè9W×BÝ@;VïÌg[~Òf\)HqYT@êv•(ã8ð µ±hc½Õªœ ‹Ê̼I3 Ã>…––àÌ«=•ßø&œöÐ<˜¬X)6Ê oÛUµC¾ÂàÆØUû\õ#û´öî„ Þ¸Wl…1RÀi¶ µ$ú&Î)Ò$áÒ ’6µÜ44ÉDkik­–Fúê3 Ʊïø²»G0™ßà ô hàäŸpé™X¨…-ÚcŸb0ˆ~(!ßĦÙÚT¾’ „òÐÑü©È ‡Hít5cæÉ]])†ˆh=Ôú™*¯]Ùk=Щ0?W@-´^“ܘ-*ªÂ d¯‡ËHÕ·ª¥§š§1{ØMîþ±|°™LA›\~{bGÅšê9µ”$"¡æái¬d&Ýÿkyµ|±H‹î°ô*’SºFl6æ|Q%èâ'J I¸Æ6@? ë¬xáW7¯¡SKŤ|&ñ¿+×qUÒÖ ØÄg®ôD ø×¿Ý5àüdMçÄÓÌ̹‘( ­3)ë eCÌwM3R´×OšÔÙ·Y4Hs€{eµsNÙÝ%ìù‹Ä].Æß²š8y>ß‹loRã슂qÁÍzÄéó ŠäwN¤¥D5ƒ'¯-¬ó¤NFB2OÔ8 §ÇÃÓÒ¸=ó•,”h |§±J%à®hÈ.éH$±‘Ë";PohÊ™—û¦WSЄ><Åׯ°;ÔÀ–x~HW2cÁD¤EÒÆ—+ÎæöMTý’qÔ±&I {WGZ ÈxdÎÜ*×(ÛlÁtɶ´ÌÏ70ÛÆäYÍRyÎýÁ‰Ò ìK1”b¼Fæ—’ÚñaøÙíÎr½¡@°}¹ãžCœrÔ%‡³|U=ÇpŒ ^šáæÐ8iVl?|pf E…ønoß$MW£^âZã!¶!{±Í'GÁ±N ï9˜‚†Ð‰Ü;¤,ûÖfn„ˆBðb’ÌDB ÍÇ‘ô™1¦ ì˜.ñšIûr*6 ö¤tÃõð TË£f›»ùÓTßW~•"f!“ë&Þ˨ªè—ݼlŒæÐ^£YAŠqÜL;¤Ñ±8ò±ýÁ(Yò|%i¾ÛŽYÍV2£ùšÜ†*'«ìuY˜eJ£I:¯< *4±+%u9¥&l½N\¤v]â¢ÿ6CC©êWÈvpÔ™D{N}ì©—ÈC&ä@´d&öÆ×=pñܾydëÎ{#îLQŠå”:éÿ¶¼)¿@Ñ8Ä15 Áꎯu³ CI®ƒI™d?Wk×üdn‡À†KMÕ­>CÝmÜWçtpñá!Þ7HËzþ¶™ÞÝh"wyèr•îì±ý§ÌFÿ¬w À×SHv1lc3«Mº)}ñú 3¤‰ý™Z–ÄïI¨Š©2:vࡆ©¦‘¥9ºä¨9û’¿¿^™·"Õ—âG©øÉs´ÛTáñ—à¶ãšbñ™ö:ZÊ,•Æ],©Haj†Ðƒ=r¤…¶8 þßãu–\Ô–¼è{s²¢>5–91Ä}ÎÌÀǃa®Qßk@h•sÿs>­D׎v¢—^Ex¹IE_\¶¿¦“zí«à‹8Ý£~ýÇÀ%Gf~n\CI±ò+ÌqÙoïkº†”3[PëM|aâ*Ì8ÄÕNnãWOø\éu •3EU^»†¾‘›ôûæ+”ÆB™‹‡md¦ªÕñ{Áç–;oÍ2:B,»±l3qs·ÉYÜb‚³±Â4IÒ*þiÔ}‹Ár»¥1iÇ¡#‘xH}za„=ÖšeïÑûJë¼§ vÒZ½Î9EP0î‚Hbs¾c^^)û‡…‚ÞÄÂ`LäÓ‘'6ŒñÌõ_<n£T %?Øèx£T Òà`ŒL‡„ág7-QÔמü¡sù(÷™—dd=qk?MŠGµÍªÅ¸}*¼%+Õ‚¹b—¿ŠÍ(…$ÅÑÇ{Æþ¥è–ìD¾ë÷rýIºJÌdLa\Á|šÁ83X–ÜÔn*ty˜ï¦.ÙhàÒ¯7ýBÌ2Rõö_Û r)áö¨RxÑì3•âÑw­þÑú%#ßjܼ¯íѨ´¸{ò(:ŸJ¤ Ï<•б®Í–9µwç£ÓlÔú¾¦©;½žê%ׇ·ä÷'LáØŠ 1°7¶qÏaÈ¡8˜Ã]l×JX͉[J àM_}§=Ÿ ˆàL9páðêi.–C†Û÷²^ ÊŽ« ½Äµ÷ümü‰¤Öt¹Ä®ð2”œ©"½œ=~N—­â xÞKÒò=hÕ[L"äõòìVX2­Øª³áOéÁv•qŒ"–$•tkz‚Š;Û'¿.+3þlpâV’Ô)‚‡¨$s[eÈmþè H¦^.{‘Ê;¬’•²LE)ÉèçX!ÙúYz«Ù1–¦i%Fôr¶c1~6ךucy‘´¾¶k•_‡Û]n{Øld(¾Û§¾œnôj¨\K…¿b ¾ÏÝÔ.)ÄM·4Fú˜W¥Ð _7‚müšÐcÉV¸sê†}¾–¿]\†Â2+ Ÿ?VDY†â¦ZÐ"ÏÅë=GÚƒ‹ö9`OöÕ•Ë9 ÆKÎI¾°ÎÎ!þ6¸—¡›Ï¦&{ý„‚×/§⿉|ÞjÑ‘R°þƒÖt‚_¿<˜íç-¯ke¥“Ÿ ßÖËmå $eÐ>A!±îe•½núç°ù¯«Er·&qpo\ä ÚÛÇ w©%VÎcŸãEQZü”!*?âðÖÜ™ºŸ '©÷ ç¦7‹ð2T´^Š:Èleò#Ÿ¢£8Sä¢Õ¥+26âô»²'UÅê‚HSæîëƒÝÆéX™Çñfðºzˆî'Óy12€+ª‰k=÷AÖðSn1³M+îe6NQûú¦“„´ª<—Ád1.½LÀ¶`¿QœS•Ÿ´žev§Ö‡ù\›kê“Ü~'ê1ƒ{ºj;Ù˜ÊéJÕXlC:¯y¸¥•{Ã"ø8o¬®Ø_vë¢öThv_ØhÇ‚êçñ— sVÓ"4E]ê¾êÿ÷+'yòÔQ¤ç”¡Zú"˜w>îë³.=ˆ24PšõÓ¶‡>P–t“äp ï+·ëþÝ‹ìVf©R µ¦œå,€®M8¯÷o^Bûç-9{vÖ¯Ôô%må:¶ËÈÎŽùÛó¥ü¬ toX «– ¸–(‘'”Ñ‚ýj,‡ ºàië-¢9ˆ6WÁêtέBß´”IÅ£§—ƒçq~}Õ*& ØíŽfu†ôWŒ0Ö0wM˜ÿv¢‚èü5àóc±¿›á!©Fkq7Çžyùû·é5gÒ„UÚ7 ëaGk–d‚Ç!†R¤_Zÿp_±Ñ¦%»—Úƒ’ù—÷EÖx‚"§Xû©*Û•Ÿ° ]|æ ŸVM‹Žgd‚ÓnAK¨ÖÒ¨á஄ÜX®Iâèü«óMQÔ¦mˆ¨È|•9v+ Âoðÿè<˜Á.e¢„«3#ööÌBß²pÍ8}îËÙr.’RÌŽÔÍà‘Äñ ¡¢qQâ9AÝgÁbûM2 \n i#» ËFë>2ÚHÓÁí #M†ÀÆéô…ówÀ.§ ·ú´»!“4®*òâ‚…Ií¬©ä}byÅ£tü‡HüJ‘QÚÊà^µû7 Üv­$àXѬ’úåÊÂ]Òhí\–îl"T´h‡¬n³M}À^›öN²`bñ®C¬%_W¸Þ¤3°¶}mÂîÂÃ=ºW‰ëÜ {‚|òIâÅå ¸‘ý,èi±ËÀ¤³®tªX Mýß Íâ踧‰uðfÃÄ‹w†nxM ­7t°@ˆ4²¤˜„ý°f§ß*©ÿ'ÿÖç æ_9 “a¬s´¹ã^–‚ŠC ’Ž•4¹Ùc-£×2¿“Ég„ÓÆ{ÿG)gaÿ_ä„:AVöÙã¥âuÚf!Œ<ÝÌ2®–‰3T×Ä;UéOÛhJ¹éÍK9kÒÇ9»ñ éa®j#uÛkcD¤ÃÇR½žŽT=ö˜·L;/^êî[Ï€ã®ÿÎkºÏD¨Ì©²5k\ƒä "ÔÈàkþÕÎòÎÁœ^D”¢Óòò`K½^c\s©p“ȱÜ8QxK#£$ê;•ñ—h»¼~X]ß´Ó뾿A0ã"ˆÏ#DˆÎ vþpÿÌÇ„»B¨˜¸LËÞé4bàN¯ö,®‚Fôé^ԯȌÕY¸ké Ú·*vpá…·d¿FeÿŽtÅŒÛÖ§i•ô¯•D¶Ëa–‚6¤‘ q®9·^¹*ФYÇmÎ8°=B -€V~C‹’ƒüm,‘®*£ñ!ØN$ÀÁ˜;Õ¼ÈÃøþDç³ì«GåC8dvåóö¬ŸoE(«ÂÒ2ÏV¤€½#ÐЊÀß‹ê%†Ì`ì§»¥¶N!7¯Â{@œ›ÿœø\ó޵‡è Ý)6$*DcÌ‘„TIMÄšáC"ÇVŸØqä`¹œãg÷:¦…8á›þ‹ø Eˆ—zaš1hQ’¯}Â}œ$ì9ùþ.Ì“Òßç+1+“[;´BAز­¤¹þý~ÑaPƒb΂Naz!sóÖJ|¼\ x@bQöêÛ»Dmh4ó)n\®µFªÒEwRP§nyÅç-OíÎá8ÊšQ ©þ6È*}>«­ØÅјïº[…»ªŒéApûúöL†0ƒ¢PøñÄÙO¢~ŸuÓõ¹è‰©äë„YulgD u9ž* B˜a¨x;¥>lü—v èð ÝÌ’ÂpÊvÿÆhVô¦k—)Ǽguš*$kÓcͨ>eëÚ·»vJ•j~É."à»I¯Ì»Ñ„ïìèÉï½ÃÔ¯§~ê­¹‡œªß(¼¸ˆç©µ_ßÙ¬tá4Ê©uäèê?´‘¿«©/òâŽþƒ&àjL¨àUXZG$+lÃóB÷–*cLVæØ #¿ËÄ™Z~ ²~þ¿rèP–r›1o¦)¥+JŒiü“í6®Ã8p¶9‚S:KTÄaƒ§(ÿ©»¼N̈õß›ÊÁ=݆%¼eä°ËÆ~’Z/òµ‘ªcËôcù ÞÄÝ>½å—±AùÒ>€Áu©. ?[ðÂÂ#Úý—–4†Fð|xC`I •ƒTÅ"›ýX|§p¤f”Ðà«´(5G ¤¿´„¸øÉsÏ£hcîuÈöäÖš_ÔФírZÖË!ô4brW_CÇÌ|‘HMŸ)‘r£Guèî%¿ bH•öóU„†jÍåáù\Ÿ…èŒö‘†t§Nöœ’JÉ5— BÁ:Z]qûʡʖÿ¡o”œ« ÚÖ3¶är'Lh¶(œý䪟måCâkw¹¼Ól·¸š5\¼ÂKÌnW§±a•²Ð8¤î»Û׸ïn£HD ›ÅãÎJjCM˜¥;H-¡­TÿÎxiÄ®%»6æ¶•“kÂöS¬ ­¶ì¼ŽFì%–zhZsF[SDô¢ä.ø|¾ïm¶â£\üÐ;L›M Зgq ’4HUÀìiÀ¸òoõÛߟªÜ;-Ü=FMªügùG!€íµ,´UðP"ÓœN[ÙºÝ*c9&O =z!k­]ü¢õ{¨Ît4ÌàÇú¼Tù­åWÑUnWùT4Ӷľ•ô* “"¨êDݰTð;žÃ$Þ%]?¤Ù4w”¶gÄÁ·íü“+Ü ­L*)ÃU—Ý]˜ZÎ]y¾­hÛí~ãâ¶×©mĦwÜB­ƒSR —€°øX±õ^UGôü…üwm™É·ì7¾Lý£ý‰*;5žƒÉ¢ßï>ÃLHðO‘ ±8G>g…±‹#ÞtjºJ,Óq†?4 %-V[¼Ä"¾ý˵çŤg¤¿äW ]ƒØP|ï×RÓ ˆúÚ€Ì*繞tKØÖ—G-™ÿL <0ÚŠŸ`J{TPO!·ŒÛ %[Àz9yÞð¢øêɆzb ßkgG±N.ãõ'äÊ.7mÄPÁ´ò*_©”–®é¢da´A²j¦ø+̶3€°™òý(Ê ¹>Øì…û•-ÏåZQŒøà\æp;-3ò/®å&2,ë›äEÖ¤“ëüëKù µ%hãlªÃ¼<ú4x †Ø˼VÌ8 [+Œ;z’Wa“|±Üsø̾O.Ž~˜w¸ rÞµS#j EÚøâw\ ('‡a=£ë"åéi3åaÁ”„Kê‹ë;´.ާôæ×ï<–W‹¢¯×Ä‚–Ý·]•€gÅ$þ1[+SÌKFøyE3Ô5Øw–2ù_^jâ…Æ~g¨â8£XnÃØRÑðÎ 5q.¯>Gu­ƒB cÎÚ£­lÊ,䲫á{qÇøÉ.qíDz3jg¡$ÆÃ&½z¹˜œ7vo”×ðÀõPkNF¯5 àDƒoÄ®kÄ ñ']†ú»)s?؃„†ÚbZfÔÝm´€WÀªßñõ>ð?n Î\Q¦A!vcþXÎõ§"U]ª^šÌ_fïSÀÖk¸Ñ ¡­7?ÈÇÃWÜ΃´QÃzíD6ÙO³Ú°D78hÎnè¹áD¶oÉ4lïjKÊÌZ2rèúœE;ÂéÛ£R} ûCºØ¼ÛsàÛ$b8Ìsyäüù…&—õ®MRFö–ƒ±”³‚:…ø­(_Ï¿Æ49 >„sw'Cf*Ñ£°l!Ê·Ž„$(Ö¸có¡S›DÔ¹m¼›MèнÀô¹€LÈ"˜ÂÌðÔ WÌ¿/¿¼]¸ú5»ÛK­~Aù¨¿9”[†3ß›‰ÞØyå—ޤdâ] ôÓvQÝ›`TÒó z‡¥ndÉÿ V/¥­Þ³ºnE¤‚ª®nÔ­8GCâq˜Çì+Í^WX+c° æ92Âp梢¨Tgæí,y¯Rb­Õ"Çm`hñ"_À_~HÿÌs²ócýp‚)íÜŸ}G?/§3pF*Áš*.s2†q@$ / 4É@x¦ÆŒðp ‚e×qöödA¸VSy×p³ ÒS¦ôDÒŒZ[°nÌ3ã¸ð3vR™0Kf‰`@A`|~ ëÒ,€›²cLÄ…ñ%ǦlÔï“¿>&u–QÓòã‚TdpÙtÄáîÉáúEܯ0AòCË3¥GȺžrjئu%i×tL UM ¾_ܹl Æï ©)^¼¤ éM[¸§¸6ÅS¸ÁFÔw¼ ²üÚoöþ©N:uŒß—®Š»5Q¥Dz¥þR¯eBçûÍôÒƒ«a°øoÆi$öÓŠåKؼɌ'&]÷‚"/®ðœ|£`·µÞÝ?™5q !ÏW2á€_Ѿw†`Á9~éÈIlڈ谓lLá¶¼€µ¡ä9yÚ $¢Ø†u×Úš"å\²18,zn¹ÌÂ+(Äcá{d•Þ«;6¢)Ø“èXyo¨m¨ùýÀïÙÓ¦U+Xañ³ì™²3íðϵYç ¨Y2ï^$ < ¥ßY0,Õô'ÓȸÁήP’ÛHÕ:xÄ}¾ˆ Î|Üè ³c¼©^ êL÷PÜ"_*  ‰Ý}ò„5ÕÚퟖ¶x-|¤(éèØòÈ}Ù¶ðI“¶sþÖ–Äs9ý"v•Ytþo¸“`Ϫ®Õû]énËòvibÜúC+Þ$Güë‡ú?É!{o×{báÏýë Û5Ô©‰¥Sy~Ým(‘JêKç<¡»3Ó5˜bdò”‰7I¬žØfd%o'MjsÚ¹9ŽÒþŠ,hØfÜÌ»­›P0ª´ÇÊÀ§:8J7™èÖ[‰>‚r]A꯲Ϻ 8*tj”D;aýT91Ç ŠÙù¤Cy­¾æ–µðÅÆr4dˆvX;Q†ðé áêåÃzÚ¦6dt­~§¡ЮǖA~W_—¬ƒ…í‰~û¡cL·”àR…€‡œKœd–»&÷CWµÉÐR!µ»'`Ž*Ü¥§¬šOÙZï5Ï)&£È>&y},1T]Éx–ŽHÞÐOšÇöcLô þ>ªkêïÚD:ÌOéKFA…¿ˆ\êž®°µáX¦gç·á%ü¬ËFÅ <›ÃÌÏ5º˜TÕf%çÓ(¥™¢…ZÓ÷Ö½èo§²á“aŒ8•m¤gƒ4[×*gkˆô,šú¤y¹Ô /ë÷§“8Çj»¾yY›ò'¸2R¬ÜqS0%ëpº®¼Ž…·wþƒä“ÝPÌæd|¨½cë·\רü,;PÒƒWþ±_iT´÷°î㽺c¹tÁ‰‰IW©ÈPÑ6ÎV)]*,Ë V+9!p<ŸQ}ZšoBxw÷Ö±OâõD´nÜþ>ÄKäiu"µC¢°c÷ú@:Y}³ÇšÀ‘ÅSÌ R€zÕ+ dŽF|›:‰ó/{”«æ›ñV Iå Ç}ý ;¥ú¸¨eèQµéÞ8‡”K-¦û*ë;›µJ[^c—tl´ŽD?.[®~+â? ºy4_íI9ê:}øÂB^Xû'çû+9í“p¾ŠR½‚wã9çèbIÌ”i¸?2¤Ô3³ DçTlÊFV‹ÁýE?Röygì—Ö JžIž‚Ì—W¦ˆX$þ²¯t„QâÏ4ýûc t7‡ô/(¢(I…aVº_F‰jJÊÙæ€Zì*"¯¹¹äx^Ù°=<¸Æ!xíG ËÔüaEF¢l¾«hÅEü¦à=°DZZ*‚Gßd֕ÞM(Ù4õÊü¼7DÞMþu¿ÂÆiŒƒ;î(ª'*«6F–õ†kÇd¼…gVÐÄÒZpH]n*™ú_‘0™*ãº×f7ÂE´µþ,ór†ÔiÜX†½T¼3ò^a›F–(¦ë‡†¶•u•¢µÿ5¤Çé³JìKkщ[×Ýâ¡ñ{vÏã?ßwŽãóßÿòw'õN^>\æý÷¥Ì ÙéWYÖÇÙh ;Ò•©L?j Šz¦n• óïØ±Z·}þ·ZMæˆi¿_‘•ÇÊNÁA–]xˆ$¦áá°z™„Òr´¨D‡p«#ô•5|?kݾ¦”¿ñlgZóG^þûFÉÆaΘ[’Žé’!‘aóÜø:ŠŒmÝà /O@;csÎR] _íÐ÷€ Ðýi‘ß ‹`ƒ˜€ÛrÜ•ÿPöâo èe5Ø¡ZsÀ"S½P™ïìv¬*öT…yß1*ÑV)a19óvP … bm,‚Îû®îÀO.[bØ¡¦%kl?Ò}ºvQ®AËýMUÍ„s'4r¶µqé=€`/©ìDèê_ü‡jö}‹®ØÀ(ª(Ã.$ã è/ ?ï˜Mu¢õŒê¾&B£î`·±çÍlé;ëàÕÐá*v8f±¨‹ª“F”ü1…ç+‡ýq91ìbI¼Ï™D–vNx&m¡×²¸ŒK~ö[>ƒ „Òæ Krî!UHÿôj._˜WI,›‚+Ø¢PW¿Ñœ×ó:KkèS’Ž7Uͤ‚1¼~ðT0ÚQ\7“’€”Câââ7IJ©è›zt´±¢Weªv9#|Jj»^QíW‹Ô¿ÅšML1.)pôQdVz2¼ä|¦‘€Ž–»B[Í_P Ö㉠4ÒH1žôá|ÂFâ‰øÊÑœlv³ VtûÉ‚†PڮʦÅvn<ÔjØN<.aÿÕÈÐ̤ÀŽ$~µÞÌRfô-E¹¥3E3 sîH”ŠºoŒ ¸9‡H(„+ꇇ¹`jNc´Ðàù…EÎ…W¨¡ †¬„$Œkþ'?¸WUs—°p{îhù%ȯbä(ñ¤ïìì¼OLùצ޼ž ‚í!T­,DáÙêaã0n’ Zåcû¯Ýü6êèúä"íÞüÕ½r½9Gš>Ñáô‰éŸWèRóa¤¢ÇÓ³ÔõÇ™ÜF§š¹ííbÞÌN 2ÁÕKIR}¢jsó‚GÑ!П*oågÕŠ~‘PÛ*rTXÒþ¤„ó >׉§õ´xÈOP R[ºKH¬œ4{û·A·`DHßkâc¶`Ýj!©?ò?äÜr„Š5)ú;¾'æcŽ>£±ì#ž5cÜÝWÞÖ ¨É7 mœ—ù³æË.Îm\%ÿŠ_cíØ¡!{ÆŒ`¿›Û5R.;QõZÔ/ìXácÁ²ÑIMyW‹±©8çq8õVF±‡ ?j·ôÌ…l¤˜à :{iÁ¸‰®§Ò|lª§¼a|t9 ! ë!̨ªÚÙyr^bñ»ØEÕ•·zŽÃWUÊ›+’òã÷V#OéAÝõ@HuÁ£¨]o鄔ϳ­"½”MŽ-…ª?°ôCÑk¡3ì}æÿ—û‹îXÌïÄ6ÊÙ¿»µ@ïz2Ðlôš!‰$«"5êq·°ùîPñš-â(ð`ƒà]Ò)l7ËP`žŒÈ©‘–K*ôŸÕkÝ*çðbº½•:^­‚±…È&=ãf—3;}á:^ú¥˜è• ÑêgQœW`Ÿ6sÔ K?C£t„Çe=í©t7Ø‚šÄþdªçœtP%á#ªçUëx>±íc¿žÙ9õÚ‰òÊ4Õp÷z6ƒÇ·Ÿ83›Ü½ÞZf³S•Ûaâó4gÃG£7(òÀ,µî£˜ÿ!ûN,ÕÝÝB—äùûrßKÖ~/¡8+»YÚsfÇU•»”ø¶Œ»u4Á©"àœšT•„ùÁKÂZ°ùûEŸ¹›à”Îö‘O’îZ ©êÉ!-)$’Âÿ¸Å‚‹»ÁNµ²ìê_ìB ½h–Io™€ßZQŽ˜x¤{IŸ~wtÓ©œÝ.*ÿG<|Ý®š¤5´Cí’PŒ.»k&¶ŠCoo 'Jt_þ{†e½þ)ž†§Û¼“úr$3ŒIj˜dAäN½HŒxýÀ&¹‡¾W:Ê‘%ce e›ÿ…ŒùÙã7Ñ¢SÞÐ;Z.Û4ÇŠ‹Úª#2€Tx43Ÿ÷¢Ú¼é@ØWW©ˆd7•e®T`väp{€´© ¼g‡t’ñÏ¿GuÍ߉àCE8aVXý_¾9Î(Oì’`cÈ™1óœËh€¿)Õÿ)U( ,ÙJøNÞ3Þ÷!2gö×î,=BÛ?‹8™ö?I‹1ùÐÌg¸ ¾Ìc "ûhSh $ÑTÙzp·8IQätBýEÛÏ™r*¹Fš«V… S¶DEçZ‰0l­A‚­U.!_ζ¥ý`î<þ_h& »¹2x+AÙŒœ¾x XäÖäyì{maðQÆ79¤–Pd%¶.WÉ|¤ÝÏ1="»ò¹Ã¯¼¥7ü/gIyo2ô·¼Â™Ã_äN«÷~òÀªŒ-¸ñx7¿™ƒ¼èЉËzCwÄs9ñgü}ç›ü,Û¶â+¼[™†3šâpåf›ønª7+m÷äU¿ô›Œá ÐZ¯ë”nKô œÆ¶vJЬW‘(I^Y‘zðõé Àå‚ÚñpïgÞGšXh_pæ¼¢ùNW›'ál•xþõ¿Ot¥ hˆZ¡JpMiZ úå&AÌ× Qº ¹0+òrüvÎÞ®üRÝË{‘_‘)n­¬gˆȯÎ2ÊP6/V3ûÖAáq‚åú˜÷}jVBš",©…ÈÒV^ßKà*؈§Ä2ðù'úa¿a«ßþNƹ¶µ“ÛVòÓÛæ°Ö»ˆ~ßTŠ«cz3©ÃFd7 íy¨_ÅÅ×ú˜¥d®¹ËÎ'ä~ËS‘Gë²@9ÔÍ5%`SL’uÑê¿rÎÃnMõzo£TÃ|*æ‹Gñû©Zk·(-¨WYpø/[h“9‹I®d(š¾Zº’ÃfçÓIÎU‹Ÿe=ç,o؉0†¼¶7›^V£ÇßbLÊõuE)P e÷Ä«ÜýýNØX^—zÿ¾ØÏÌÈ–P·é^³¹! Ê=<ì„!¤`ÆóC ÉÓRýe, ó8EK‚`&÷¨ùΙ@s¼èI\TÕ$ÆYgÿMΔ~šÃ˜V/sQ ›òÍ/w ù­)GiÈOZâp—°žÖ´"»»Ý®NÂt®sO- XŽp¼Äbì•[Æ`Mr€¿§®FÞð€Æ"”ÄôÈÃOÚX±¡dǤðÂÔœœCÛJŽ îFÆôS¹ÛÆ$óßPÝŠ+Z˜Üå+Õ¶yLÂtÜa–ïDriOg ÿΑ$ y9/_uKõä3÷†jRƒ•èû\Å.‡·qmáFÙWK­ë„+ʺúA'CÔéB&æ1Í¢ôÿZV¼5zÜâ'¯üAÅÞURÍz}s2U5Ë«ZgÕ±q¼ø¢_àz£j-ü™¢dMA©u¸|m®<{ßÊ<²5óÔœ:Ý ˜CÚ4Ôõ"áKÑŠ<™kï…}ÃçhÒî/;½x\àu½;¬}/v1ï¢ DÑÚô9/Ï==ù §ZÐ…@²£ao¥ ¯¤¸Œç¥ƒ8n+6“öK€Ž äã. ivpéÃcð‰á¢/*žô]]3Íú¸^_× aOÊXI§h#)W6p «caôDbUr¥/ø5ѽÅR ú ù{Ädt GÐýéK·¥ÓÆ®k*¶N溉«Çl‰Sº.—{=,Bš83J…•‘€‡¤9Mr ÖÓšU¥`xÆt„É>‹§AÑÝ/̘%~ÔR6ƒä|HC5x§”5ËÈjtºAS÷M`º;3»n£òTâCª±€ ¤ß³¸d–œ3ÛV)@_Asëw…¹»š®RñíòRn+ À\sOÉñ [_aÜ0áì¯ÉFÞ@´ùä†òPœín÷i3K/ò€ë+[ß|¸Ö¾sÀ ƒßõô =ƒ={ü_¶^ê¬%IFS\Åøú:¿Äî£[A$Œk~v°×ªš7D§Ð£bR@™gàX&YD¾|ÍŸ¢nàh=•ä5[~‘ú­”1ˆw™6ŠjD{@¼à€…_G׺·½o2ü_Ø„æº=›Õ鄞êÜ«ì–+Lü&ï¥Í…Ë:ô–ò@Ó:Ÿ³Y…÷Øœ¼dŒU^+ÀN9ò›£(_êûDXË/– ®Qmz»AÚ{™Ü´÷oއEP… ÐvˆÅ@pÓ ² —³Ú|ø Ã8ŒÅ>à…zâSAÞyIÖOZ¶‰‹Ôw€»}ie(QÎë.‡Yæ›?¤ÝŒ Iß•´¸âññmªðêžÂ¤ˆ‚¯Ä`³½4Øx¢Â2M©þ#ͳ̄]·Zæú ²TúÈ¢¯a|( u@Ô º'ºuÀk¼•–Ÿ{ðzkÖÙ9Ò 8ˆÇÕ™=ø_d~JÕrJ1j1¾0œÁLŸª"üŒ&#rÔ[õú¿èKo”âyâC“õˆúYc‡¡þ´*1Â,½ Ñ0r6KiÖ‰Ò€KhÏ0ÍÉd~³0ÍŦޫ±À³6Ñ}Žê¿2É–‰3 8¯]bÂç@k!£dáŒ/ßê­‹~èõE‹À!¾p£#Æ0‚PEXžô¬’~‚¹AI¾íÓ¡³æ;«Yà"¥ DþqC9öÊGŸ—Á×¾‚:m®PÇfŒ2ksÃ7/!U¤è2 °Ëúv!'ÛÅêòóE¡@-ús®^N¿b±‰9WÄ0ìÑŽÀ.èœÕÖû98‡·‹¬/íž5¡ q1”˜"9(¬!ñS¹ïKY„šì&&Ȱ Ö‡E¿GžŒ¦Œ`>S¯ž(pC'Z+×tV Sþ<’¿‘‘!Äà "¾Ð-8m.áEÌà•„¨¹»Øfà™ë7v©!»Uxý;4À©€6yu%~;üˆ&ë¯ëÍþο­Ïf2ò)-(Ý£Ò]0žDãÇÔx]ýw÷j§Co"ùZ°~©„5QµÌPŒhV²\C±õ’¸•Øñi) v¤Ó‡v ìÌŸ£É;жîx¨#K/·ªÁðQd-}>•Œ‘2„{Å™¾Q?»8n4œÆ¿Â„ì>#Ã#í-DNv5¼F?Êü€ 6©Ùøùï릆·e®KÂSã»ôõa`hñ-Cðþ)`@ æýFÿ ÊqÉÑ‘è~_ã»…5_Ð’éa[”à sÊT„̃/tǧý@PhÕâéïWtèM#?F›æÐ‚ƒ ô Çx ç›d3ó)ÒÐ3dy®ÉÈ“zZs¾&°fØÖùÖOû*ù}4ÜW·]©oRézVò£ ñCV@Ó ß!Å.¸‘òPhêç—"Ãïw"–Ôc vTÊÇ·mðÛ±r2)´fC:ƒ›d;ï¯û5@¢¨ Ý{¿#ãòÞ]7À§XM»n¯`,ô÷u ™é©¡©;] “QjPÌ4+¤5½`uüÙ7D%¼ý¸V¾[T“1çS£¢AÆá¸Ï€Q`É:,D#CñÎÉÓ0r$ú ùÞ3Âc„™ÅŠY¹Î_98-±äïj¹E¿ëf¡»'*¼î˜zD«n x'|Ï‚h÷›˜M"¶V¶nq€vó­ßj5#{å¾NÈ2Ñ £\Eµê#èhâÇÇNåÏ&> ¬T8r© Šù€<Ǚ÷Wÿi»7÷ä[ÿ²OæãYO<·=x§ôý÷}¡ä§ï~¸ÿ0ž”Xš:»»Ð C—Ëšj&›ÌŽo£JXEò;Çê͋Ƙ7´ò/×[—î'ìþEÿRÑœ#¯Zçé‰d\<Ì}Ê"/"Œ ŽBrÍðý"›z6jÅãjGZÕ®œaÚsœK1Éšé}5|›Ói›¸„gãºsÉì%+¯" ¾™°å ³áõ¸amJ@ÜCi­ß™‚à"Zb€öM»–Ÿ¡c¿È„ÚgPPW!‚V3LüìfpR—’•YÈY=äòÛ›iH=ŠþŽR‚—R<—"£&m«#Á"ˆŒ$~Œa–=S–¹Ë,KÓ)Ÿ¥0B ËûÅL"\îi4ŸÖÁÜ(üKz.“òVê'O&Ä4ŠªÃbbº{BokQnmCT°`k•ñˆ´ã1ÊðmeÓ!Ð$û§´]ÌÌYíyPö™+'™œW©Ë®+¿DãsýàM=I]«Ãq( a3$\¾Úøj†¦/ã½!ºÙ Ö¡ë‹x!¥Ðe¦ÔU÷,„m÷6g ¿Äž~ƒòr ¿¾DìÔy^=Ò6$NTvÔ†¢¨±Ý”Mï—uÒ 6T”¸l¹GW ÇÇ%@£š³ÝR ÅéÐ×¥øÔ{±‡ú6Ô6ºïî¡ä}ÃÅäÿéäÀ;`u ¾ÚEuúgñbIÍJ1±ü\›ºeäLuñƲK[ Ô‘É9bRÜn!“S ‡žÁ1WŸµžøZOƇ=X {ë”C‹Üµ?¾_wÂÙ#Æ@YŸš ¡/sKàq;>èìCâÛ+öoßû)BOê^-èôk]Èa+²Û_øTRóG¥$ƒóÂ…ìŽÈ=$3y¥a€0ŽÑÓ¦Wd5ÁLÏÀÅ¥Œk¨Ò0&÷„¦s6J_^õZi> ?3øþî¾X2ý^ÁgéýI5‹Ì ýr¢Ù*_àßy#˜û3…’ Ü‚”â•ÿ1¡¾¼÷&çŒgJ1F5CÒ »BwK¨Á%vÀÙ”ÙYgsÝ ,r}gø±êÐíæÜÛkM¨Þæ© $ˆŸqÆÆýŒ%ß1ñk!0’C Ær+£ÖßAÓQñðnû¦F·ný)i@ðÉg“dìÚíGóhäß8S7ö@Qnò•ÆeQËg—ŠEñ ¤Ëo•0¿ô¨‹èÓd75C«~¸ó6}Î…}¯C>î«~Hn} Ì—‰¸eVÝ5EÎ!•€•zßu›Ä;´¢¦{³‹òzJ7~²DJ—Nu+‰}1¦­‡c†‰8E€±³ðÛº· Ž2#J€ùO웑—‰\T¤7ˆ€¬ZûHôúZtvæ B¹­ …w©òÃIÜj:ª«›7¨2‹š‡z¹ÔˆuÊE!-+×ÌÅeà M ù³øZšý—wW< 3“jÿ) [5yUýð¾üdø6½Ôúßi—XG.±::½Õ{üLFFºIþ­éãô˜,Rœ‚Fåg‘£ìØŽ8Ÿ0ä“oš¹ý›a ²¶?õVʰ¬5qœ ß×çØ«¾ØªhçNŠ™soG¥Žva7ÑÕ©»ýâ FNÇ8Õ9 x~» ʸذ·¦ÈÄJɧ?¾ær.ì^j¯©cy ­g.uûN–»…æœéx©¥Þ›p¿' ̲›í!$â铵'008à,2a)ÃUí§ýU‘{1È|†ÈÅdp"©Ò1ÿ3tH·€~É›/‡Û絯ý^iX¥÷ç«%ÎÌ%¼þY¤–[+3•êÿÂ\鱟;Rp*”NØ´NéÀ°2ºd~‰ “]0GR®\£ˆ²ÅâVÚiöÀ#@Õi(k¨ÝSá4ðÙ-(½:o-˜Ÿñ껃Ìg%N;ø‚:’/E¿aM î­…ËȸðÝÝœë¸Ö„¢QÉÕÍ@]2S¹Ñ¦#ã;Ò1§@ ¾%ÐÏÌ4öÙBŠÎþ¾í8iYä0ë%ˆû¨öyæW@¿m ;"kvÌ ø2’&Í®Eªh<ðj"!DhCñÂM¦R<½‰iv¾)2 M‚]7TÉ(ž£]úä:#u‚…ØiÄÁ¬å$0 Âí•p%A­..fë(Ö6ÀW´\ÌÝä.U’r÷âIz ]}Ìx¾º?dŽ¥ زªÒSå R—dëx¨ŠÐpì/ÿÂÂÏ4¥>L¦Ôo%‘½-“E÷îºg®œãšW¤”ü¹îëföÕºðñŠô»1$t,ÂüiLhrÒâ¾T.õ¨šÞëžlIŸ%$þ ¥¤&³²^«¨Þ&x&p'úÜoîz^‘wâ^`G"êçƒ~Ž9j8sWr®ºˆïG÷¢ëo›½¥ë±Ñ¬GÑÅט-'HI¾Le"ÄÐú4úÜŠ!®˜ƒ9Z¶ã¾³àE™!âÃù4ñrƒAÌ`˜ †Ònd\Ï»?ŠƒÂîè‹?Ê€o¤PÊû0Iµ·ÉÍNÎ8\p:x®®Z©p¦ÃR[À…Z/+V€É7|CL=iû#TXv!€óÒ¥ÔµœZ—õõp€0ûÀai¯¨æÁWÐX{7¸…,ø>yY.z—éŸ?f‹ô?ÑTÈOª¡-sÑyÞTð¨Ö¯ùö Ÿ«H"¨³ªˆVð¶”?ûVÌp% Y  kÆ[ o”y£¬§KEÄ«˜/ãhµ=£*måzî²?;‚¯·’Lq,‹È³Vj×`»!BŒNÇD›(Ï.¡'xR¹˜¾Œ9H.š¤KSRñ—ß^âÇæ=Ò q÷} 'ç_E$Ð*-_íÂ2"†0I¦E–øÇ+Iþ‹UZ<ƒk® }0¯æÇbg€ÆF`v"Ó®Ú~¬Ø:™£3ãA>yœUGbÞͨÙ*à [s^Kʧª˜µ#2ƒ°ø1Áà¸÷iSÐj‚L ’ÊkˆéF㽡RÁ^"[áñ"ìx³e´õíQŠj¹\{a1î¤ÖK¤CÉZEÆ×_?\®\XOŒ‚Ôd’™¤‹z!³¿£êZ/AÙ“"RªÈ±g"ÛÀTã¦Ë Ù /lß }^÷ãK )³äZ¬Ç<ůž½ê›p§×“‚#%S¹aÍæM¶yP̵WE8Ø¿ùDuȵŸq 9†z;3 ¸-UÃÊXóûðo‚“¢#¼'«ð·¬íf-q}7ò0ZpGR‘ðn=¼È'°Fhà ּÀ ýƒe•Ü0ðQhë¹V9”úÜg0·ÏŠy°X§WÊ‚Õáyü­µ‘D®mÃx]›¿ŒñÁòá†ÏþL$m:uÙ¨°ÝÒ\”y²Ì¯ÅŽxcpr´ƒ—ïE>—|_“wÀ,¸°ê@ ÂÍfÂm¤ˆÿvýjŒ©¤u}jñ}óWá–[à3/¸6¿”#K0»1`:Z[+™jI@ÑÜd^&ʈ "÷Œ’‰ë¢ü^[w·gyf^²ù½ªv=¼µ««kSÆK}ªe!½ØidÇ÷ÉÌÑ ¹ujœñ}ÿ$thy¥ªú£˜â±÷ðåLBjg}°¾.YŽùW0ÑØ&öäáiȯ$dF€¬‘Zw.àèùwÐ ËßôN»fÒ@zÑî¢_ÙF}Yy±©Óé³6ßmâ÷8 m8û¦œÙAx=t ŠçëæÓ†Ë\IÞ½oˆþß^ð匹œÆÃd¹)8ÃàI–ÇNÆ–ïs/²B»KJ‚ac˜£·ñû© Ìø1½~ŸÂ³f¿µ;f«™ÿàU[ŒÚÁ•ŽBh”µUÐÚD? Ytßm?Ák\Cx¢«ûŽ ÙÝ~A¯X³t qŽ©F÷ØL…M¤Ä觘vvÚá½z$¬'êÇÒÖ€ð•÷êäŒÐ­„¢ v¾Lêé.ëL¹ûbóðÃ7`U±›ÊI¯Zœóu‰5ÀÆl¢VvâÝÃñ$,MW¼óÀK ”ÿÐ|éy>‰øûá3}>P&VÆq¸_dç/&˪¾B^DßtÖ­ññüÖuV¥¥x­¹ƒ9¡yö8™Ö×ÃÆì¼gÐd8í¢ãzÆoÝy'ùþU Á;,M{K“ÞB9LnùDyuׯí‰Ä… |6±%¿†1Ç躊”ª%¥ÐRz%-r²•¨„¬¿®¯Õ¢[@»ÁV \ö–=*l=árI.¬y¯uMZ1°)çÁ™++l"§mÎÛµb×!!º›uâ-@ÞÕ|¹œGêVj …Ùú‚+ß?µq¨,Ç_‹ôlïMë’jæ—ë â+¬Ž\‰ðØŒúnÛ)kœbGÞH,›Ñúãï¨LâUðÚn,$#Hƒ¾xŠN9eH½Ÿ&ØÞ%ÊV«À®’ž«‘åMw ç\) jL/âS±!¼ÝñôŒ&'ûÕØè¡HìÚi.bÏ]øþ§º§¿Á†ÕÆ?:¯#[1h¯‘{Ñó‡R¬ÉV:M›?¶Å¡hÅ¢ˆ,-„§å/yÞýà?Ä–fq‰õ9 1ˆUÁ×§m:~oÌFÖmØêã0ìeœ/8D¨ŠºÑÞ¤Õ$4í#!ç¨V‚=•Ñ3Rß&˜Z£¥UßG¨†Ø‡ãÇãžÆÃxøO3o½”¾á¤«äH6›¾Ä^V?´> þø5Û ‘´•¶Lê_=×YjQYàówÏôÂ׈²j™Aô©ªëndR£å™‘ÙüP¬x‰šŠGù_æ…ê`Q€ê( áÓ*·‘@îúè÷sƽŒÉ.º”šç‡ëI»ÂXÈn<»©¶VG†åå¢À¦Ï×±:LwÓýÍéhÕða¤Gœ-æ´Ë:ÂŽá¢";M‡4IÞK3¾*¶#Åy¸ñË ìCýT¯§ApŒÔ[*öÊéú¨ü¹u.X–Jåb\5‘‘¡iõ¾ÅvQ.¤јÃè4ê3;IQöãT/DA#WÐe‚y=»Ž¼V›!›¬W.¿tTÁ¿I·ëºð3øPÞ& mXˆ¾çý¦Ç¦9ú²?FU\‡Ë®âRΊ„Ýfµl~áÍ£/Ç#…iTLC/ç7³Ä²ö€Xu£ÿ­íB¶ìÔ9n½•×Öð{•_ &[—LëC]ÃÜdøLZ„1è³’d¡qæ•öi(£GKâF(IÛ*œpD~¸*{¯¨º_­X€¾ÕGÊ´à¦Ù y¸É‘òâ¦v2·dèŠ Š¤ˆœÖçËçQo ’m ¦>ZÐ…ü i¼,ÁÖt‚êäW2s°îï ܃j|.¡r».„{ a–®/:żPý\Í2.J/ëó!ªì9Ô°ŽÝŒ¡DÍCª `Œ7æSkÕÖ¡"\.Dãzq5tް ûôëi-;«òïîÐ=¨€é1°žwfL"‹—Î;Õp-ßüê!:H±]….[®)éÎ{æž«¯*™%I!ßïu뇧Š>ï¿fKt³íkœå‚$ñ€ÒU—åÑÞuÿ1× Pu‹Dâìf¸…Ç| öѰÞ /5ŒôínŒ…z>Ý(çl†P_Ṝ<÷ËaI„/Ûz ¡Xy&lšñ¨*G¶”ùõÒ7žÿóòOoí^ cÝhBÖ[íÙa+h(Ì5.㨅fŠvÛtb2—ÙÏÐ4jd£m®6û·ðA~Øz«°pòö)Nô²¹lï?‰ÌTBëEL0qͱ°ê‚ˆ4âýh£®b€ðÎ^mµ|;9kÿÙQØ&;9\ ~ú3~·[ìJ3tB„ Z¯K¹$WÖ†æå¶¯øXT­5a±VßÕ‡sß{ƒw³Ò1­yE{þ-8Ûwß4ô£Y¯ûy&Ɉ¦›³¡ouÖ6§S½`NIE€ëPÑÌø¯RÍ$©–Úži) ‡É(…êØþxœ–nÛ D‰¿kùƒPØ¿ÁûBäzµÓG<Ž×‚í‡Ê©Õyh±|\ã™ëÕòZ0ËP$Z¤Ú4íCxBRIøa¾Õ«‘¬ÀÐŒà>¸;WeP¬r º°‰¬PI µ€Cj¯íøÓÄm÷v­· @úqŽ˜Ü1Í¿€­€{7:}˜:o®äjn– qyHÜôÏA䉛B~æG„<âçïîEØüh£GŠÁêÚß̵ "’øË“{Ïò‚y #P³—t?üÙ]•nbO~œÝß+,éþ·u=ñâA3¼ã3;–µ" n´ëAL S8°ŒÓx¼RáÖKÿ*Ò}—ë¢É±C‚‚bÚN~J]_4Œ½l‚ÌÕÈ=3ÅmÆ+oðøªŒœrºäyXhXÌ®ýžŠÀTª tìA¦–[b‘‘›š[Üs°ó\ÑÞ³)8ÙÆM2Ìe5ÕžeU|qn½¨;96êÜ¢¸f$!†êôp{+š%Pí"åüÆßß^Ó  gQŸ¢© ]oÎø±Qš„k­úEà‹ùÙo¨öì³KœïÝoÇo&#—Mß)„XÅ’±ÃrøÓèóï'ùÞÕH¸{§¸hÁW[£7·ËUŽÎøt~A.shè\äPà±MjÔÿsoUGæÎtyÅä@IF"\`ˆ}ñpáê!YòµÊ‡÷`œÀ5RöÂ$Äìæænûóµ›MbÆVRmV7š.'')[ØB×"..‹ÆE™‘ „–¦é¹ëÀñ³`7: !µP±{Û&§|ý}Erù¦«ƒjëÕ1¢*_ÿŸÁ²P¢áΈIXÇBZ´jß™tŸ¬Æµ=Ô­©W7äCb®¶‚f´B Ä*Xl˜›00~ýÇ9®YjaœÐßÃG2i'5Õ~DQ˶…O$#å#¾ªñ؆6ü[õ±Ÿ*ƺqÆ%Í+î— Õöæ Lr,Óî. ,FösÜ«âso‚ŒÊÝ1®õA'Q˜ž"Ì ¤šyNT¬^IÄÃ|c>tÇ“9tŸ\±T¤Ãù9!`” hÎI?°[\ÉÂ;fWá>a®¬¶> ¡q9|þ²{”+Ýõ¾¥þs±ÊŠW¾Q}D•[ž7¿Ó„‡уmØCÖŒÖGÇܹšÙßÅÌIƛɰ6ÙNW—hU:þ¡–+ÚFŸÎœ}y•ìüH·QEr·'L˜ö1$Gu¸)ÀP?ˆ²;¾->,iÕQFðBÍ?Òíçáû<6 ˆ°2ëBãÒ8Š3&"Ä¡’Ww©u)[Àl!•ˆ¹‡üÕŠûÕ}*& þ‘{¶SUÏ·&T)´ÿÍk›ü“Z*Ü…Ü St仫:¹vª™§zíÏÉȪl¡VĨ’mf•:Æ×æ1‘"F"¤çÒ´¹#–ü’½òèÏVR5&?9/ÿNòïpsJ÷«Ögæ–ëL& u$ˆÉÚ™´°Ï+køÊ•&ËO‡€)_èp[†`xá®&=Ý; ™ÕLÓ’ÅkYHÅ^d»úRk~„ítM/3éT³Æ¥t­Dº6!ä€DÉïRй&ÏÈ®C\݉ng@ÙyBð,S*‘l5!à[[u‘yîÀTå²²hfœpœn¯_º£`‹à.â«á‹——So9”Iâ ©=ïD°ôMÌWV  å2H߯ç×´²žYxPgV<§ƒbÒ…8Ô(ÕÌ£¿O°–½Æös6Hf?Çxà ïÀŽêד¾ì™Aiå+·¬_à Ëß—@ùJVºç]7Õ Sw¯–1nÈZÚzˆ¥”˜zm±ŽtŦãÄûLŠB—¡ÊTE>C£‹kt}>æÊdk1ÊÕžï¨ÞzˆhN£}€â¬ÿ޵"leê¿áºXÇ22â듼;á1äm×[‘ÆRÙ”òÅ/-zÂá|tט\9ìI›iX€°±³|3tc~'U½HêÂÔçqËÈèfCÀCFw˜Ù0BbŽÿÉ}Õ—þ·„mÁ~ à}8Tôl3;«ˆaaç.²¸‚™ËGŠN'j úÆN ž…o`|mª"ÿ/OÈD…,?©—Šö€)L“ªüq_§Á¦X×Õ$^pÖgñÖ¡t#O}½M´VZ blM_ýY§µ±Å[=Bv,ç$ÑŽƒ$ò½!D('ñwÜã¾2€äS’¡Ó…‰ &Ål¼QýéŸjOÊ ÷ö¦Ëò†–Ù  ‹Ã GÊ´¬ØH…j—ÿ#©\ JÇÓùd$3¬šWÍñiÇ£ïW¦zÒL*aê:Ï#¿¹7Ýeò«–ÜgGÿ×M •4¤»"Sñµ®ÌÙ4±]Õ…~,†ï甂Í-Ÿºc*¨‘ss³áäLÀòe ¸yNñð^§¼Ì^Û³uÈ}-l‡ 2ëÙÛxúÖôöàZ˜Dæ¶ÙÆvõfDú,l¯ 7JZáÔmT !è/}âÈ¥‡ããëú 9Vyx„ë,>I®´Ã&%zõï³¹iÈsú˜o±Òôy€E|›Ù0<‰Ñ( «•ëˆçÕ¡J„Å5YØß2„ÉÖ—âàõ¤}Jž ñM–W®Ñ¿¶ƒ näÇašN¥i»+ø{ )¯cÒ‚©?•"-sé=tCúøbjï·P)ï$:a¥6l"ÒÁ¯ x8íÿ†Ùÿ²Ã¯ÌÁ&…«âÊžÕÔí5¼å–)¡Re—pœ·8.Š}„ eŒŸ÷ÓÚŸŸkê†1äûЃ¿3±$u Q“b¾ô¿ ¨?fsû¤#)d롼UufÞEDú–³9Õ3Ò©Üç«7ÀŽŒTª—ǪÚW, îG`ñ…‚’%îìÏTˆ:Ö–Ø„ý†© Ûc?nÂ@î¬ø¾ù”ùQ¦ÖL9—fŽ|Ý¢„ÚMÈÓiÝÔk@‡ Ï<߆ßî>Íá½+…LËPe2)¼¼Ö²ÄØã8µïÒÂÌI#oÖCͿ̫9+OΚɴ¸³9Šõ­ §n&ÝèºÑÜ€ ìŠ/¾`q˜Q×¶®‡ô¿eoÇ«‚ˆ”ùÛ÷Ó…µ ¾’Dôkø‰rÒBš†ü öV–"/1 E­Œåæ6Å?¶ðÌ…ÑJMî}þ¨­ºóDÎïä+±Å,³":ÞJ‘—ì<*¯öêrŽ5íwLÜj+Äf>ãU~· `ßÌ Z3?î+Z©ìŠ&ù¡•6ái‚ºÆJj`>eã2‹êfH¡¡wiP¢A€wÁjq¾)ë-ÅKÎgC ´¨›>/Ø]Åal‚³6¾só*焸š1Êv<âƒR•O{=n°Ì/-aUÃeÁ¨Àë qر¸$ ·4Üi˜cß15û=H3ÉØ(¸_Wü‡)Ò­³©£¡k¹Œ!N½¸@”Vß>¦,è"Þ‚^rMoZ öiäëRBÒ}’Hx©ˆ—ÓâÆv6SkÐ÷ Šë=²&ËÃÎÈ%Ã¥R=O½šS‹qI3ÙˆõŽÚZ,y2{¼F œÍô“v©òÒOâ=RZË­îb{Á¼˜õÖšgT{° f*å\‰ïÇÚ[²¶§¿ÍÊšµVá<¨Rv hÔ’ô:Kqq–¥XZþ¨» 0»ÓžæŸÉ­> öX°ü{íVðGijÄBòíøIeoh â&|¶ïZ/óØ*qž ÇÛFUã×TíV¯¯~ÆŽyX (}Þþ€JÒ*°›‡)ºGé}ÄZ¹ïóY Ò¡  Vò•rIsº\ =ö'«È3ö'âÕ|¶f8‹Ýó÷dw˜HJBŽM>îÒ¿5ÓtéÑk5ÈõЂy(ÍœiÉïó€ÈÍ};é0°©ÐJvJ×[‰b™~Ž™Ô¥m`”?%çãòé/Ÿ-¾‰‰eËõ—­êKcaóÀjÀxéz$ä¤>L9ÆÈK!Guø þ{H:g¶7²ûv>¿õ°)_øê¿‡dÅ€+Äè^ð'Fäw†'€ ß44Ôõaÿ=F_ß#•Z>ö÷Nvbo ÑmÚXÕq:Þ ?1o‘ýakÂTR#Ç]?°MOºJÚÑy“XVõ'øë®ÍÁ”cú\ûAOq³œ¥ Ëd«íûëuzÒ/Î;Ð2æ½—ïR·Dú}/¼kõ׳YÒëûÿ  š&2ëx¼c£|#úý&­Ýuë5‚Ì5xž-¶É¶fs³Å–ƒ@˜ )•mF¶LgÿJñ踗Îe½b jM+-–wÅï"{á¢N{¿}o¿Q5[3¶ïi¢SÜ-‹‰*q±§C„CÂah½ßi}¨;‚ôV¦«ŒQà¡IÌ1H<Œ/yµÐÎkë…YÏ·E¤‡ ㉴eµE› °i+£oäóãÂ5¡—ÂGS‡7‡Ù4y !atâf•Ïg’gi””تR²àóâ1€'.¡MªGµžë-åaܪ¶')ÖBµJöì¥X= V<°V™÷ȯ?¾1ø»‘¾©XÊŽ)_Šo”}»/9j3¸—¹±!N¤'=8_Uðñ•Mþ}ái6ÈíËyý6DÁ¢Þ5ø2è£7GÂŽÓ‰«hrfÉ5*@ÒJEH…-›v¿’Vø8¯\—Þ v U`[ßE„å×ðà©‚Ò%ËŠo±’öøËž ò^œ)Þ—XkåG@Iƒ·òãyËàÑ` î|•@!*9z¤3H¥_Š ¹hU¼'­Š][Û;ˆ¤<¢árê«ÎFUÕ·¸‹ù:Ô웎J–.â¶釨ÖÁÜŒu†,WòR_eßW7„Œ<cGö¹$y¡,Ðã¨À= Ô_ZqšËQ5!ÈttÀ;2’è&ÌçŸëò8©èš9Ô8¨ÆïWÓѱÐèUw7!4±(øIí& üaÑÏ{õWµ)Úóü^JíèYY+ËUË⺼—`/%ìç…–$\èFQÏO'sF¨á Ö›W’SºR>¾dªùeÃõ±ÃNwZuVÊ Vkí«»a=„¨‡:Äöϛڔlµ_}÷t%åêi¨RqCÃAA¬á! /Ð%‘ Ç¢é¼]xÚ¤ºI{”°C„më°s;ÂÃ’,»~2;Jô)ma|1§Üté}&™·ÚÿpÝî§ÞPX‘76y;<)ˆýfé4mQ]O·åU6MoÔ;ò¿´ÕC«it¯¦àñ…VáX¥É‰èɘ( t ^ê¯ûd}kýÃR‚Û™ŠÊ<Bïô©ŽÁú–ö.áOk2itÈ9ŽåëSLB9Äü÷‡4bl ¢Â>µ_WÚ5¦€ÎŠv~Kn9Ô{GgˆhâMJ{¾œê^ºxÖ ø×k/ÔÁ:Z ~°þÇ3fÏ]BMqž·ÐæIÔrª0[¾3®#‰¥"§½î攪¤ùV± “‚¢ÛYZÛi­ÜuÕÙ’œi9 ˆyB:8æfŸuw€•Ñê •ç.D­„þþ÷ñšd°cŸÉp=ßûB§@àìÍaKÛî Äæ¥%ƒÿƒ+à²SÔLÛÚ?pɬ’É¢*\wHŠäè!ˆ3û‰?Ìb“ŽJ*“ÛY<•ÇôN—ÎQsïeíüvfmbÖÄ:Œ‰ßH­t19Èr5«–Òÿ˜9/…xШù±cÐg·4¸40¾G¶o-Æ•6n‚1 IšFI¢B"ãõ¼hwêèBœ¬êèBœ¬êèBQ'¶Ê´Kœ¬8ìž¿qÒ›ÞWŒsj¨È®JGÊhõ”´OˆÊÈ‘.çHG±ä§•øU»g‡-°Ñ·íT’¯ž'÷?–ñ}þ²:)Eãƒ#ëº~ùöýÇYTñJ‹ÕÈšdîrhŠÌÕE¤Du9u’N1×Ö4>ù6z=¾Ã9{Ð`ä¹S¢žÊºÑ¦ÈjÝdäÚw•í‚<Ôܪ·ÃÝn¾LÈ’ìW)5&êLýV÷y™k¯@ÐxŽZJë7Q9Yµ?'’<úh6à 9çüŽí‹ÞÐFÂ)Ó톫Uûöæ.ÜMÅ?ÚêÎ-qèShŽé‘ûé‘ûÂn+Y«i¢P¸æ9)潦ßÊnÏýœŽ4ºÁœŽ4ºÁœŽ/W^y=³ý «>¨'Êp=RL‹l 7n›¶ù50â:u¨àø£>W'J&làÖÕáäéHËÆ—›e Ú8·è=‚ñoVŸ#‘ðÎÄQxPG†í³›¹Õ¢XÎÙZÂO^3ÆW²€©’K‡½`ƒMýCŒÛ5V£o'L𺕲jË$KýìÔWÐÉØ¿¢;™OÅ±Ô ŒÔ¥iú!p[Χ!ÿÐê|& ¤*7c@Ø»W%DzÒTq{ñ)¯7f×NºqÓÑS·µþT:ò1OO1çóïv:<çÉi =¹Û ¿G¹)Ûû&ù3H›5ÝEÉCÃz'ॷ×׆®Ö”­½ñkhˆ¢“’.ËqÚÖþ̦†Úv• Ånk¿,f’öxM~x÷OïUœÃŠÙ$I# ÌÞ1µÄSUÖŒ.yßn(Ç$,[-¡û%7¦w0Ô6 J”p*FjH‚M¹ÆCœ[õv/©ÞKXlQ¯ñ%÷@UË#œOÚŽQŒÏ¿å#br+¹ |Ãëà\P4×÷µæjÊ~<ÊòÌÈò¶'ô‰'³/jÍìOÎŒ£]¡ Ÿ`”NÔÞü~‹BÒÓûñ€W†<™ˆ e«ÊŠ¡5Æe—øÇÀÎÌ„m{}L8wQž#P2öL"}r|”/ªr0rùmj­Í†!ß |²J›†Éæ%Üj‚ˆÕìŸ%ž˜l!–ÞÓÀüç~²¥A…U¼Ê¿q”Ûþù’J/K})[ôvüyâBªgìCïXź¿µó½|Ý7ì?JS>¨²|1Ô:Å÷T—GCÑœ=þH—ödq°̑Y¼ú­¤Jh" ù饖¥3®ŸJ~tØü—jc'd!fáçu$'ÝsDÕÒÈcÔš%à§½mâŽk$mQ¯MªfðgùÞ2YÈmb OòeèW?NÒoO|Êâä¨iîºHïšD4ÜmSâ×N-¬`d;ÑãÀ¯b‡CM©?|wv2nÚ:g…G»¤Ìïôv€ÏâQ%A´ p[׿Ïî·Ðî¦†ß 5h[jiä$Ã7ÙNÆÅe@]?êKϱ1aãXÙ-ª‘-òŒp6Ñ8³[o e‘yvÓ)a¥¶í=D¼9”ì銃¢§ÁÑÀ±W©¨u¹“Õ¹Jî®Fm1L£'0˜¸Ì$51'<Èžo`/4+l³9q¹"£ IâSׯëkïØ6««wÄó½C?,‡ä¾{—£ÜZÅÊ@œJUnÙ0Ìy1œjôéÑ#ì»Wàþçî7(Œ!Ÿ¯å…`"—¶Ìô¹û)¶È‚O6PåÐm‰º+þEØç1ìñ9ý,,ºÄŠ ŒuôŸ–LÊ35*Zò-ÿú>t¿Éö%™_†Ž5è'®õÛôµ‡qŠ’ö`zÞ%Þ—t‘þL>'MEæÆÊ†ÑutRŒ/8T9Pƒx$‚äæ@öPÚ°%Û¦úJsX˜ÎwÂb?ÖE'kc}S:C.Ç­ÄÀ.Ù/‡õ4cvi`¦±œ{è-â1–Óx ç<bDþþP|nÒ.º¥ÝãœÈSóW²mã5œùyŒ öv“l ÑŒŸ4ÓŠ«F÷! (òb&q,[…’<7‘ª-¿Ïe§zÁ ÅPHøŠ ŒwK%Ñð~èóOXÑ<绤ð vÅw"z7`¯Ê š¶¸N"ﱆD'”.^<®y‰rP‡Áë—/#SŒ9œ»çiƒÞ`S0Æ*òw‚w«y-Å95¶Ä• !qÛÖÉ*öCfÂP¤î‰2è2€ª7ŸYÍŽSÎÂï¯?6·)ˆ¥äT$ 9§j•Ü:HÄ:²:83žï:š öØLÍŸÉy"³*™bêŠ&&‚ŸI(é Ü5ß]£ºe¦é„}‹õ@>u@—D”ËKÏã `I÷ÐFóÎKOÞå.¯€‹Zßx¥#æoäLW\²6ŽY(*®™ó´ùìÔì›6vzËy‚¼”ߊ+‡^=:t˜hatÞ?ÀAÓžtèAø,© 9‚9¤Dû §ŠÁ|SYYý‹§wäP¦Ë½pañÌÑ.a£&t4ŸÐ¹ÚiÞ:ÎÙmûXžÖ…Tû](T*à­¸oEŸ¢ÝŸ)i+™ú!oäÍ̉å½>œŒÎQÅÍ|ÿ>KÍJ ²”>§¡/òÒÖßÌ—…39Ó?L Ä yñcJ µì,¬7 ¦xkµtsTRE´Î“Ùž&êrS¦î;43Uü¶Ó²VcM§ ¸-fÈ‹Cl(b ʵœ5Vo)ýæ« K8m‹ìUKïë=O˜Î±íÞN¡?†ÜÙbu5Ÿy‚&à¢ø†¥¬ 7^6i¾^cI ‰üò܂д>Ûz㓌6„Ô#ˆ—t»x8R²Ñ¸…,tñJãñúï6gÉ’5$¬0¬lU˜âÏb¢Å,hy‡T`ÀoÇâ¨æÂ©Í™LÞ”>¹¶Qub’°•+Uæº<=u½%ns{vKl±dJå" „»[Ò§8EIÆTæß3ÑÇC.‰’4þÊó(´ònâ2¤¡ÎØód©Ü!žâh…xUV& ò¹:c=‹â™ÄFéôÊÔgs\~œ4T¼ïõs}¡~“Œð»þ›âšbhEwu³p, õŒ›l$Õ¿ÒTÕì-Í„¤Ê•€Wƒ²#ŽÈÌ»èM外ᘎütЦØÓr}SõAµ;C5=ºÝ@ÂÒ¹È%ü-f¾¨µ®ŸŸ8«ž&é(,Þ÷+tÇj ­6NÖé#ÄÇîr©lµÖg¡ ÆÚ”1pxyô(eI«¥R@mN-`JP g¥¨‰àe¾‘>5†~î4´ë%Bª8 jEŸkHì˺K_J-2 ‘ﻪÊŠÒ€=ŸvÅ;èmÄ ’~›»A¾C™©AùÀðÀ<îJ1&'æ&…ÂKuoå>”„Þ<ä¯!ÔuY’Qnœ0îî­±xöìQGŒ00¬ò:Ÿ÷š(Í^¥Gð{lê‰~R¡^õ¢IëÊÔ,Ù j¶.ßdº½/¯â¤DU{0¼_eaѳB ˆ¼·Á¡1«gîm&Ü„¡°4îôµÂY]dôÔ,$÷ÇL£¯(pÎ0ÞÃËß—ÞÁ¿„Koü¸ Nòœ}‹¬q/å(Õ_ÒÿÆ%žÉߟÆOW£è‡\dÒñ;·ƒ>‰~àµøùXºOÍ~-¥&c®‡&~*¡¹Dy²ÉQÉ…äZÍ8™êAUŸ0Y Ë>9üß5r³GÙ`(`=iú`‰ç°N0`ÔàM¡Fi¤(·}®5ùN:^ùšgu ¸Ù^”š¶:a¤"}†f½ rÖÄ_”¯®…¼»íy­Ïoç±T×Y°Ä€w+v>;‚êÿš)ÕÁ¨™‰Ï# ‚XçR+ÃŒµ”AGøÿ@àÍñ:8¯:Á*F_ 4"1f-Ÿ&ÀµelWë#r‹§ýÀÔ`Uy^y2«˜M£T}J¿c—°;ÕuŒ9 £ܪ²˜‘DÒî ›y·òkH8aŽè²ÑÓÁ¢ŽE?¾DQÞ Ðw¦FÅDô¸ˆcp¨ÙíÔÎ G~åúž”k¤Ÿ³¯nô%££kg[hž†Ó^qÀ¢ø½Ú’T‚9ˆ´WîRŒxOÃiP@n«À í¬Îp†VŒç§m“Õ¼ìbÀ46 º0 jñ¶¦&4”Õ‡q i2ÒËcWäD<Ú$øžB[uïÖ‘—[Ö¸·³°žŽ— sü«nÉ~%ôÇs•¹>vÔÃÛÐpxF~œYVmðIùÏ|ľ·Ã^,† Lnxñû´"ˆü$ÍYòëàfXdiÉõyÃ,¸ŽLk½ö˜Â××^@ïÑgu– …»ä,Ò7á­ìœp íþǪ{r7Ì"ˆûâœyb@ÊzVCà6ãϽèÍà®Ú€«)]v•Á“_Þ®«b¿©´Á7Ô‚>0Gþ)ƵGK€Rì,ɷψŸ/TP†‹UÐÝö €‰ ð\&‡h€ ùP¶ñQå:U‰Ý –À‹ÁV‘?꛸–´ÜãòÐ@ÿIH ”ñ¨¤o ­Š$OpZ‚[Mè]|…aZ jå:÷ÓXܺ(¯NÈ¡'&È GôNj.6ä‰uf,ܪ÷£ù^TS rª”™Šó6XèÕX¬ýè¦qf6Ý'²Ë— ¹ip•[Rʈ²2ÞRa°Æg¤wÖ¨$òò@ú¡gâŒIï Bgɾåç€àœm;L?yÀˆ:8ˆ£„KuÙt€q#AâûcbϺ|R¯l«h„¸g™ý }•¯¸¦ÏümQgc˜¢(§ùb;Ž„Kh´Ö4Ø•?¢:@Ì& HNôbEÏ5¬J©¿ô£<C‡ýÎb…gz´2z-TлrÍ{;…a..´£Ò 0û75ýæ å·€¢ÿÂjØiÙx"|oŽ&öúÉáä‡kz7f@4¯%Ûš¤q{JBiÊ€APm¿·¨`¹UòOÚãI$Ñ:Û×L~œ–?®—Ö3ïÝ(Ù¥®2™†·–šT#jŸ~¹ð .N û—ÀNêÃÌ foÚ–†KÐW*$Ÿ£I^ž6ÇP —p\ÐüÅj@¤ú°««ÐÔ3"Ç¥£[ÀN²ô’†ûõŽåÙW¢6iþX%z¼Tƒ„‹Y”pbš(A $ÝiΩ÷'±›¥‘)PàM:Êa|\C&œ¯Ôh߆³su(_†lÆ ÍãuÃucóôý—¬rOÛƒºdïN¾Á›!êÿ‰NÑ0ÍK ‡› ìES]«?ÕÒ;èøYV6æHJ>ÌgÛ`Å©WF4Ñä{ò°#zk?£ZæfUdmS£½J2 õ¾Ìw¸hØò8›Æl®"W ¼Dy·N‹¨Rƒ§kÒ 5iÉ£î8£ad¨Õý/¶+«¯šFr1RÏžÒ3áP.H•=úÔ,ŠÒgÏacçs’•W®zµ­!f¬qEûM{þÅuWQ]¿Jœ£MÙÍÓ—^T²fUÏ îÅxŽVb×|3›LÔ Ã,R²_ŸúI‘´ÔžÌFãmˆVÞ¼cÌ(3CàÏÊdÚØ`f–¿ÂVÿnJÛ(§jAšFŽŸÖ³§OZnal á32a D«…ÿò¿¯ ¤0­m†ñ;y¤ÖÎÿ®¤Å»áe2s‡“×÷ñø7»ä¼†‡)ÿ¾å<ð NýsÇétJ²ÐE¡Û{²%ÌÜnæé>Áe‡@4Þq„‰ßÍp§òÚO‰9äšu;3rðÆÃ½°Ébu¯gÇFq/ã‚àdîgí÷(;zÐÔ¬ÅÍ>DPn¶sWò'þÜF=õ7Œ˜ê^wž Rå0¾¯›°^zna´F$‰½P >eüAœ~vTmS¡:ùí2¿‚”©å6–ÕÂÑ= e÷ ˆÕ¤ Èšˆ° œÁ¦&p¶³ÑizR ïú#¢¼‚(¨¸ôr½Oôn¡µ8 A//þÏn¦Ð(5˶­—…ï¼KÆ´Ú™¹«”8ë!ï§ŸÓÏ–%›£–;0ÇÖšn¾vϯ>²ñÄ|ª¥ÇÓ[‡À"*Êÿr 9Â-füÝPÃð³*Húp™çeŠÉäÔhƒ¹6–¥IÔì‘xˆëNÔK¾êIlvsJ\#<È|E Õ©}-Jêš9%h ú~˜ïmë˜É§Þìæü'ÈÑö»Y(¢XŠºÖ¸d"¦Ÿni}@øÈÀi+F[ŒÜ‰¸›¸:¶Üð5}‘y¦{ÏòÉN‰½ø½‹ó”Ægüsé&3 h–hK ßú”͇´iÛ2ÿ¸P=°SB+ŒñzöÙ¡¹·ãoL3b¿žD/"Ÿf© æïy2‘2{@¬GÛ§„BG`›ÈUX:øer†æT÷ñ'$i¨/Ã}];“JÙJùɇ1\Ï}zÍUÜ[æ±>ÎE¡!´æ¾íGgN¾õ˜–eæ6‹Žm"m|`««6T8áP­©Ø´Bžc0cÕÌJøŽÎ_àØ=±ìm4øK[:f%M퀾ï=ýä&¥ŒÀ”l{sŤxáþÙúò/xùñNyZPû„¥K»•ø4 !8·?à"ÌnÛÍr+°>Zt„Þ3ˆ4ýU;àÒöLN$«ž·B3a¨D½‡FXl¹U¦ýwîÔŽ`Ë™Yd¤1BiDï~G±°ÈƒÜéAa&¡Ââ›O¿2Ëë¦)³ (& ¸°ó”¬»+Ö7Þ‹”ƒ^͆M2òÜ»Q'LNt•â·M”ä¤á=hÐëCo´’‹ã`ž¯“„9ßåôH–a‡6M¾Ø·ô†ÛÕ÷;ˆ9ûPÕc/ê[ÓѲׂ•_£„ãpBªN*øáð⸽ÇäÐQ„ºvýtó/[ø¯G4TéJÈ˪o£ŸÆÖ¼”?ÇÉðêГ¾WÆl(ŒDîÓ÷g <`è0Ù|6ˆ^K๛ÞnåHEÈ5Ê  rc¼ˆËõ#—ÎFέڀï*£ <¯Ÿx’Ïœ—úO^~¸ÆÔJdjÓÐçŠIÙyVo¤¦JqGq³ XÐvXeÉêØƒö®2ýR&u•µé°œ­g”ènzB¬ÙŸ÷y¢ë Æ”f× 2Œ¹kjð«'˜,qôJîóTèÛÒ8½NyáF4¹ÏYvÈ’{û,·3jßj* ö$D¢Ú Våˆö'lsþ‚pÅìeŒ¶ñµ$õ·Òm"ˆräBåçó¬L}ƒÊúV]­Ö“ Cu»%Šñ ç3!2œ—³Ón£”Çø–?±ø‡‹»nj`ß”¿üÏ‘áeËÞ˳ ㋌[Õ|> :Âgº'h‡çŒéŸyf4W¹¬ÙqíÄn&»šp@`° óT Vk<ÇJ x¼q²Z‡;-Ò‚`¸BÍ#°Ñ§˜Cß^Ò¶ïÐ2™zàÔ‡5—…žÖmÑÆVDl(¨ü4¤Ök“©;æB‹wØ…XäÜÈ‚¦gUF½|N1?¨ÇÒk‚ºœ{¯èE“ ƒ0ÈÐS'Ï d<0°´ƒK¯¶gHYÕ!_2˜J#Úž†ÞÕ•3dý¶%àqVâÙ4¥EB÷óÁOÿMGš»A§Õdeðõ.Ö žî†¶Ï«f>T«‰Á¨YúÞt~Â._ðpg–Â\—d¬œÜU‹WdÓ_ÅÚ’>|SÚ“˜M6@y)6Bó:ã„Ò×d‹¹ýWŽÿVãЫ¹ 0ˆ–±êƒÇôÛ4M«x%ùD:ÕØnßYܬk\’ g¼:‰1AY:A]°[ÌO<”iiSÑÞ)~qÝ4ÎÜd8š¼ ¼D9¬]Qc“å1Jq´AäØÐzíÕÓP›DºðfÇΆfþJ]jY*ü‚t{¦Êô†wÜwíIžžqQeV¢gÅìÀŽÛE•§úê¤8а‰|ÇKwE×ßxå»ç¯ ™0l-µ‚tTÈ–!à${I+Œà;Uo5ûF¼º˜­X †Åžœß§dzäåÏV|Ô's·ñ‹#d)Í7ªÉdl¸¦úúa¹H 4½¡,ZöT"D˃ýgϑʳlÏ$P»¤“$éAZE8bàT(c›Òø¤U´h瀔»Yµ¼î= áòX .¥nÛ½‡œ½Sê N…—‰{þÄèô Jé]ªAô⊑hÝÕOKÕDT–]o.ׄ ÔÖAÇ­ÔÄH³íºvßàÝ‚bšL VqxãØ+Re&_â¼&ó`m{zbt¼5üÖÖwbàW|âÏó«'¯²¢”øSøëç`Ï3—itŽ$êgv¯º4g“zã±o8JSÛq>åõHš·ÛûM$Iè†P9T—G®bEqÇÅ`Kg1/jÓ×}¬û†ÜŽ¢ÁšÁ{Û§Fá´yqS‡ûØÏ•q›¥­ ž«zUe)ZýOð!yϹMø­Çe•-;2-'JèÚ–ñÎÏã,; —~¾`»ffã¹@ Æ×h°Ô±–ÌÈèÙ-UJ!°LäU?á’¼–Á“F@þÊTý# éFà7>¬ˆûÞßK²iõ„O:Œ|Ò|,7ô&)òâÔËm«Å0}v_šï/6_i³ú=@j †";ì1›eB|*ý”L^ÿÌÈéÂ8!ÍìCH¶Ë̺ƾBެÿYf¾äÜ"A±(%x¹š 9XŸü]Þð¤='ѱ½öÝû÷Ùì¯âÊŸg `wùôO,ÿü»ž·Ð®Hߌ¨]WÇ>8“eTÕê’TŠ@ú˜Hù…yŸÄLÒJ«z Ÿ"˜¯LŒt‚-´Ÿ}S¹$ÎjGŸ])r ª\´¿ðÍça‹}ü£ˆÿ]3ñ­l­©Ë¾‹ý ³«p­bp]1<ß«ÒÀ5FùèxžöÅ«´¢ðöœù >§É^ÄèÊ> 7wȨ]”5­ÿd“/nQx¬L’gFLQ\f ,Ó€¾úÏ—û]ùY?æ.óÙë‹{3IÇ0sÔKÀÇZtK›ÏÄZåÃhyU¡¹Í`0Y›òŠ­U}A‚Ë—$IçzºâL𑸰üç)—+@w¡ÅÔ„:-wèû¦ŠXv£0EÄí,ÇXSÏxÝ’ ¿—«v ¢&@»ìˆìH…x½'ãC½7Öôvt[‡ Çb”Ç^õõ*°òÿ¯š¡äDé*É;ºP·³àÝÉpÝòN:a¿5sŒÔ>¯îk=ATþì%ÕÀˆ©ÃÁ¼Š,(!ÁÄ€Bç«+?ˆ£òÕI #õѨÑåób%ìrq»3›€#xf2ƒ³pYw£Ÿ;-b‰V§7µîÙÅÊH4®ÑzÏÏã¡éL[múºÊ ÎõtÞNg`P8 iúv_'Ç8_VšNŽØ@ËÕ]÷8+Ó|“÷rp˜†öC­À$¬m]'ô!›P{“EèQfz_šb7Z'±€Xg¼ô(ªu^˜…†°ëQ¦_¬ÍÚ¦¯>KHõiÊ©p}»¥ÃG+ç>¥Ã@â“í|k3ïŽÈxÎE§¶%²K Ó(öô‡V;(#œ7­3íÍô·bÉ–FfUûÖ×ÜÁ[Jl>K55ïí;aÉI6d—# PŒ[Ý<¥ I=Kê“Ì ‘˜^Ê*nD +ÔÙëåÕtZîÊ•3Rœ†¼ý–Âi_yÅø”ÐH›ÓéÂÔ*`(ò漣Û_+ ¬w2Dh‡ÍvK)æ=¢+ÇÑD¸hÈîdÇ@•'!DjàWÐÕ•»ðÚ¿`Ö}sุhækybc15‹ä&bGÊZCÕcŸ\x±ë÷ã—™m™õ`$‘nÙŸ±ƒôí½¾  ê±È ú>$Žç$rÑ&m?OA0a °§ù¹àßO¼ÄQ¦‰eg¤©ì …]¯Sˆ˜1É™k)œDõ¦©” ”Ú ù­Àá6P¨M7q6@N-æ•¢¿Ë*¥E¦}u݌Ϸ1 èšË „a3*¢;ƒy#º¢ƒX·|Ò„,¿¡íwTQ¾è'/ƒÒQ¾;齩ÙFhש™ÓˆHÀUŒŒ^†Ðq™úðìµý£†=•q±8lT©óTjrëMsˆ©v¨u±±#š;ßvƒ£„ —Xý$V)hœD·ó]ã„Ò6-u"mì†Ð((ÃØr½¦äFi”½ç„"$C«ŽN{erÊŠè°wúšÞ<•?‡éÏo…9Ø¿s_ð ¬è‚JœY6htšc$G£.!l^õÅ*ÜÎ6SBü4½ÂŒïõ÷}êDZieuŠ÷¥ÉW½G‹÷…p|Ø,äbÛ\Fê*í.ÿ„ö/—ÿ8}#HŽc>aèË™«ùÄ_Ó9 ùÿ2ØÉ“yЗ¾I¨™‚Ÿ‡ª°ÆÞ:‘ÿ›èÝÓ«D^QÁŒ¬/g€ñ_GÎô—G Ìloû—éÉQv-:½þ,ˆQÒ€1&Ü1Rî˜ ¯J,5n]çÔI<)váí}x…Gí»BÌ–ž3ý£¿¡Ý´—0l=ž_¨ßb#A†~öµû¼1¡B€*EÚº}$Eø*!/Nñ]‹Š=ƒÖ,œ(9FÝ®;L`S7Ìn kþë¤ã;ÖŠä¯×¥gÞÕºHÿŽ™8×NÎ#ÙŒ3A„|¾w2IÙ‰cj`fKŒ.x+ 9uå%’l#é4ëTÕ…ZÑ`³úktSèàc-óRÆoôîWôø²\æ#Žîp=|s ÅÜ» #ÇŒhdsgTçwW\1–0\‚Å"4ÄøýKŒi?‰–ºÔ’ña\r8+OîoO1GÑ6oX¢‘¶*ðn¿å2œKÿ»CíD 3_Ñôj-^p`Õd?žAI¡†Ë8üˆÎäpc ªM}Kø(‹1d'¤›Y59‡göÛ2]' /#cñBþA’'ó¯ó[KScö»T¡€ù~ö") ’¡ô¡ÜŰÝç,¡ÿO|@?CØn¬Â<[«ÑG•=H8û\˯€ Ò)ÕÇO¼_}Ûv>rð&”ÇbÊÖí -ë­i¹ 5ÅÅç+þ ½”(¨qÈâ ¤‡ÃXžÑΧé2;Ö9ïKQÍ{Ü”Ûí·ëÝ„PNÈÚŠ`æÕªerb¿.—t…” ÿåãdj k÷š©S<*âVàü+¡”Ð º²bN›…G¹Ÿ=ÒûmGJ~bBûÔãxÍÐßÖ6Ü_£›,^Ù@‚[‡Ü‰ ×ëJ ™¥öZý˜0ؾŽ"qiHt”1MÎ&‚ª¬fÁ«lï¤2{VðÞ?ŸTŠ‘ctÓ,†ÚáÚÂó©mƼ¯.j$ƾéÊe𯩳Õ'§l ”PJýÁ$TÈrãÇáV|¾0ãÚ€Þ9“*U¤lÜØ_×I>Dre…ÀéŠ1ŠĒi ùÝÖ`,wn$‡“Ê/òðùõä€XÓ|Cþ‘¼ô° &Àjý~!í§ ê á ðYñ†qw]NW=¬A K2Õ’"^ÅOãÜ„ˆ…ä‚ñч^1›é‹ã²¬!´¹Š#¹C ¶¼çáTù‘/2M0mä4·H7ò§6âçò﹤ù®—ˆÓsCêå:>2\~æÇ£Mr8 ÌÔÌ\ˆöÃQÐ(¶NKºÚTpòØÞŒ3W³á:”ù!Å3ícPr¯ú'1ÿ˜L]Î,•.N<{Ç=ˆÕKþ1JŠöžÚPÕªe‚dåÇ|TV~΄¢Rç,/­¯Z$òâÎ_J‚Åäõ ·R,j§ƒ~€™J ÕÊß. éÆK@GÛý²› 胬õgcY‰’·ì€èÇô‘UM0aÈó.±QZžØvj*s=Vu4ý0SE­ZkÍD§‹4f2N3ÁL&š¬.饂ÖDR¹ÝÖͲüMU!ßhõ«Ç+G+ñçÕÓ_¤¨X›r°Bß¼Cò0òlzÿGhÚ‰A ]Jç.°pÌ Ì·T¦²–H]¢‹Ï%78øQ~²÷¡|Êt­—ßépÛ|r_rä°š‰ãØïs%Zçå±È8{ägb¯¶Œ¨dC´7yÞèÉ­Žé-÷N¶q~¸N.onü&mñðâåÜ~Ã…–N¹±çW_ð#–4›,V6âI@x7rg‚²ÏBk9’y¶ìêÿ¸YNRh{uéŠJ"ŠgûS~žsIУ×sÅ Û_} zŠrÜ[ÏБ-Ƹµs£Q•ŒëiäüöÚY×DMwhœð8¬MÓ¨_¬ƒx·'á|O¹ŠÉµïÇáÍÍÍ¥Œ¸uJ(J_JÊgy¥»*?ýÔ¾ ˜ˆ³U ¸~#nËëEî«dkIu¹úΛ‰­­^BWc•XЭ«.ª§Ýý^ÄÏÁÁPúˆï­sþÂßšÿõùα\^õŸR|Ò,VEß4¬¾‚Ÿ-˜‹¡Ü“ß蔞¸˜¤Ð¿ãÏGXÉ+pH”.<þÔDpç¨ÀÅtbDbÁÆqNB#–•|%®Ž=ÂéÎpÕ§6òe‹YËûD¢Kmæob<·œÏV ‚>F²~èó¸m¥ Êßl.Òzx…,\þù›H#S_\žöƒ·7ͧÌSWí|™ë›“Šêñ«î]N”ëÏU[ŸOÍ…k÷DGðY J™Êû>:²Ý–ƒ}vÓ|{¾ôár‚mi5Ýp)KÞmÝŸS ¬"ØVÆê—TË£s zœ@¯%°!•Þî%ìǃ²Æœ1mfÕPᇧšìG'8f̶Ûe ûÜBÛjªWŸÝýÀ.¶S•š5}qPv#† ›—^U$7Âj`’fLâXy¹€ªFÑU^u;hïÔØr2A¶‹èŒµÀ øüKR±ù0ƒÙ«ûÚÊ2— ª‹/ÉÖôŸ‰Q¥¤ÌsÛÄæe¨ }Þ¤èÈûý†V‰CC¯ºš“‡Ò=& :ºÿu ÿ¾Ï¼‘í–¨N–§¶Ÿ Fñn$(²œœ{¾bH–»dÎ|#~M”ó~ÌT§HJçƒSŒ”¿oªkˆ…ób¶Í9„,ã±ØÃ¨(é„©¹•!¥Õü/:|òúR·ßïRñà!´˜¹´®PLÃe¤[S¾<ú«¸‹ÔÈ• Ín9 ú+/%kžPþ~¼;tå/%ñŸ ÞŸøÅ‡¥é³8Éqy^ü‹¹NUwÿy_=y™(˜T`'¬‡#›mеŠ‘/ÙïçQS°?ÝRl‘„q"—Õ±´Õ/R¹F"¹ðp᪆ã¥"hËж+õýaåÆêj?Ûp±Ê‚”úޝ]E(ýñ@nwò®´¿ÜE•¼ÌW­O÷JHN…ôæòª½´êÿD 9Åvx×y›BÇœ$±Âó„ýI·ç˜G»böÜ:­ÉI‚P5Àpieí¡«ñ÷Y΢'>+mÝ ¾X'Aœ-pLîƒ0Å‘Ò=ñ3^‰W{r:tLWù(HûØêž &÷lg!~nq†¬ì–‰ñ ôÚÿ¤F¿CGÓ¨ÙL† Çî±÷Ûe©\. (ù¬+¹ ‚sµ–r 7@˜D—½uGÌGʵy3ÁŠ^ ™¬’éæ,­Ã%ŽýçØo Á›ôæX‡‚˜§$bêÃM^æhJ½ˆE¸r3L Jkf€¤™•¨•ÿ¸ñóŠöùµ#Œ}"ñdÛ¯¥S,>nè"¡])N¨sG‘˜uãà9=¬»ï¯ºšfTØg‚§?7`àê-®Z¸$Ÿî"g륤.Á" íÏ’ÕímŸ¢…»_=µa¤6°ôèÞ§ã°•ÊçÅ yâãµgWC›¾;½Ø£0 ÷’é3*m9uÙP´VCÝS:FïJg"[‡-µŠÌÍÂ"šµ¡¿–•ž:³¹ùzÜÖÑQç|›¿Ýõ1v1—5žWé¬Â§ ÚŒ)ùð<ÒŽÍÏ–Ãqxˆ…m±i£¥@gPº˜UheÍ{Ëc¯EZ[Mñ„öiPíÐÜêzH*˜Ž¼W—æ‡W›ü×>¥øµ•÷óý{,O°ùO–¦5ì«™¹—#”žäUø†ˆNðÈK—Ôù¦ÇðºLÞáG…šgVk&Z@¤‚‰B纆Eç4µÚÿÏ-iywßìÝJz t¶°Ý'N(­bAGbå}EñÖMûMè±Lì>3¼Ì´DxuâÝ£l&6 *Nnú±Ûº|Fw$îò•Q -öëT øÛ’É…“ÐÊŠŽ%|9j1µ¬n#@ÿ§Çìe•;4@ì×2ïò-‚fÖïþߨ"Æ@k(” ý}?Ñžz=Ø]ôŒ^eBkA…A~&9cïS§+—žiÿšÝ¼E¼PF޽wúšQ ØHÑ´ô“fÔsJÞkµ^‘™=$^ž 5 „åGÿç;B¥vŠ3CýXvÇ'—"”ÿ{ÆŠ†ßÇ• &õÚN'›3 ”[S*$ŽnAÜgŒ€Ðu>ÊaDØ„jŸRÓzooàĽUvx»Òº [·ÆaÌ êÔõÙÈqN\\õ@E‡ />0ý§†îæýwéy\ø;˜ˆ˜µ°µ4H!3±ø„ö>1ª( ºÌë1O Ìø½îögjàÀLà ï¨)‘< ·¶ýâØ?!n#dÙGïÃù²¥…åÍý€c!k˜p·žÓ~_:ïKÀ4w·:I¶„ÝW°!¡8ÃøOM=³8‡1åÎ>®gr(Uß{Wya‡ /ê|¢þ \2ÖÕ ÒêtqCöíš wU;dÛ!I "z|¥ê—˜˜hóò×±]ÍÔ,zÉØ$;è=ÿL®Z†›08ã¢Ì×¢®½Õ1øqD¹]²J²j<¢MDçKã*æ½îÜî׋ûÊém5þˆ'eÉŠ­9ýÇ»…%cZ Ë–ÏÝBðÅža±fÁ}¥åï“#?ãe {rÑW?pzNd°Ú~áÔuD\ј[ÿ‚7¤ÆX¬ž´5O;N7vMŽÝT|¶Ã)ªv{ÂK&Ó‘ÁÝšðY™’PŒ+cïUL6fÔË`ÛÞwb› øñƒ\¬¡ã@ h`²ƒ$ïWø;ZØHC#2jN¤wÔWeíå<Éc³ÆÓÉ ¹E$Øè¶ãf™3.ªå?‚pe[÷ R2ô#ýG ó[ Höâñ޲?ÉÂZCôsF|„ר«U+Ö;7†ÍÏt°!ðyÁÿc—NÂY¹s\.Žm zt;äªUõµ÷á“NÿwbUúÝyø&OÅwÛòÒuÁéSG᪱.Y>‡×KI½SG™¸2³½Å©3š0’› N£¿ª©$» °ëyÛûȬ€RW4~´-eÿ¿ÖI’tùvk&Ï쮦1Ûuƒc$G¿Pš_=57?]ýÍÑ‹²þ²bMWüm‚íðž1{”û[¼îhÂ…´–ëéÅö½¾)ø½ÜHQ®š¢jS©øè4+bïïäô}7+PLU]ä Ñ´½ùó5UD%L",dùz õD°.™IáøœN&o‚¨«ƒ/ŸñRq<‡7tÅc0ôo¹ØÍÄÏňx¶ ßeøŒiEíô„‚¤®Ï„ª‡$§>þ=ªóWHkU{¦$þáä £1~­…a"kÕž~tliU\ý?‰Ãp¯ö®MOùÔAœ  = —fõ6L ± ò”yý脆j {¿ÅlÈHp|Ü6ÛGåOC½ê…Óö4Eij½ü-âÃE‹NZOÙ½‹Û|õom[7Tnx}­ºz¶& ìt+Ž+©+õ:\LÑ2=&)%åjÎ¥ÞüÔïç‘Ö_B÷“e‚и ¼"+9õ4ž@¬£¥|«ϪYuLG´å7By|xõŸ§Lsgƒo/µÅ‚ÁFGò öºþE…<Ä~ý¥O'<èxÿ7Ï*ê¤x„à›5Júí6m>’Ö„R—³z :ÔXô?ès䪃0¸ÒçŒVÁ%Ú÷#ä$…ó+½;ºoõèH­í²Òê›Vt§û£þïÏ‹§ƒàŠV†!÷¡ó`ï•Å ‹ ûѶâ@)ò HªõFz†U-²¬À>Dà$ý)¹jq®Ô%ÀMÃ'¿XɉV¥€¤ÍHÜu2~Ï m4VAôK ”âàþèÙ+uJŽÉæ§ã²@8© &&4F•ã9ù0›û¾E®Â-ù†ÂbcæF%鱪­*&ÂÉfÛ¦ èÚÍ­v…»/ >®Ïq´¦£6ƒÀÛ!a6>·ûje¹PÙm݇Z_©NªòÛ¾ç¯F.+äïgõ:ŗèZ5€îAˆK½zfhº/ûàõýÅB>>ƒ Ýepn(©¨‹»›9´¥O5æueó!Yõôò!…d¬ŠsX©àí¬0Š»º† gù­êW§úX_bžS¾xÈË×nžBœ/"ô¤Ñ¥¾ à̉(‚}E˳ÆìLfnÏÑIiÿaïTAᲜžÉ¼(¾u%P°|õõæÁJ½û$ì–©¶WKäÂÚ­G42Æ… ÛÛ$ §Ýû ̈@/gô¹S7¦>½“WŸxi®ÍTμÐ"|\&eÔHW.ß:ƒ] ßEæ` æsåÌÌÊLux¬Z!Å9þÉÌié1"áÍmpÄa\Ô[b‚ª¾϶0Ù:Ÿ ` oƒxe6LÒ†ŒwG¥ êìndº|¸¦N€ÃÎ\õM…_.æÉ{¡ÈÛàiÆ¿ wéíì[¡B‚E¢ý C•øJº6æô€Íh<De:ìÊ;æo#ßxðj#ÇìËije& 6¡AJ*îû÷ô™ä'[Obžý¦;kÏi/V föN‰V¨ÅqVtÇÛ%‚ùíEY-ƒqÌÝÂÝOKšãî¶üåMÈ­8#¥CÍ­â1®H~Ž0wøTìë¾½ç^ïÿ)g@‹#¿¯”È j@ÿYsСåî•Î1¾°L DlÉ|Ëÿû'ôÎ×, ÜPäПjÑŠ.”ƒÓaÓÓMÀË`Ÿ`wÑÏ÷þv=ù›¸:“yÉ€µ…r×Zï4¿çá2¨Òë ‰+AõþPè:ÌÊà!{¿Îêy¬¦0…Ùwø­ûI™ ³³ÅJp gJ2É c! åLYû=¸xÌǾ1qkßÏu‰ØÂM«÷¤-ÈŽ9ÀݸΕÞ"Q•];>^ƒøVeÐKd»IÒTªöë,ë—J1lª)ï¥ÐGƒ»€“†ör|Ž¡-«÷×Ò#ä«’kLSNqèFÖÉ®&Š>½Ï[Ô½'qÃÎÒ ¥OQPŽ„‘Õ¤ ƒ;®Kër›†­wm¦µ¬úØ:kó]¶Cä’¯ «Ŭ]7´ÎRŽüò±5â9F„¯Ø[9鄘&– ¡yû(kr@1vù ´¼ß ÆK_\âå"¼Vµqs<Ózü·;åGuûûÆgÿ‘\ÑKr-Gα¾—ËCœb£_[ ,’ T¯¬ÃØŽ¥–ÉS,,̤´¥k@Q?a¢÷',]±÷+g¤ƒ -BäÐR­?÷£*š{‰b¥[ÑöÐ`=ç‹{WìÔÔû§—_åLMë%SƒÃ–­[±î‘DÇôÖœ·ñШZÁ!Ÿ·µ -7ϸž5™“ûõÙŽ_©¬{ëd7j$#j*îÅ8" nEÃÒ&nu„–A¹­ ÎdGlöòHš¨q‚?Tæ*"×µ9h¼z¡!ž:ø†'8¯ó³eŸ0.¹.*»Ü¬Mà”œ‹?öD­‘Ä$t9`®™>×§ý û|CâX2KŠÞì2úÝLG*Š®%ýU1űî'¶Ðˆi¹‡Ž¨)¤Óf ¹ÓöÚ¢ûæËëù;öLÿc?"BÛà%sùÇ€¨ëhB›dÔšÛøÞM>6ƒÓ„%°Év«ú(ú²6QPa`ÅíoË`º.ç*È–Ö#†rBÍB? ìà ¾“¤-bgDÕ ÞÌàð…Ý¿ìqQém'“ªÞĹiš$ÿâ AŒ×Y xa\×·* ['†Sòê ö2=½´h“ê_ÎÞ€†ŽØ’…Ä*¶œ™™ëqÁû€¾þ º::©;¤Â › ’D Z_!Ø®oû>`ˆ­™²'¥ˆ&Ç0X„knÛß}ßÙpÈãÊ©`Ð!ƒËUY,^ÃyçiJsf‹>JOj³´'›•nzÀ‡7„DÇù=ùÂñ`ÒY•!›W7‰¥™ý·hã÷©ôÂzÞ#k´ |9ÀŸåd~,_lýN19Ú:0‡õ­{Â¥â^gO­o¹ÂΟ´%,lÆ—aãeÚÛamíŒ5ÆTã¡M*¡~|ùu¯ÆK³ýovš&ÃnbƒÓ>¬9~OBòßQY9diù}( ©¾¿€T÷%¿|T èÍê.ñt!k§G•´Ãý[å¾0qÛ•¸±M}«'=]\Oø­™¾«˜Ø1A»5y~óꉡûÜwŽŸ•# q³²Ü–­É÷¦«îb$?Ù2ë† &ädÒ] Ö]*„Àï‘Ú5ï£#¡ÙÕCäqÅoÄ‘j½Š€ŠÚCç+,Bλ¢ˆ‰G'EY=™W—êOºràH4]Th¸ì:= óÁI˜ƒ ‰gD ÏÆl! ¦É•ž]géõèmP4[˜ñ|M1”³|ÎPuVdY°Dü “8Ÿ±¦SÓã "íýýƒ· Ù瀛i<ðz³åOAÂg~×€‚œÌ‡][Ö;AÌ¢>ÑX'_Ê0ä‡ÛßiSZ¶ZÍÏÉ` ›`+fޓ𔦢\ã©úÅô¸òÎ÷¾h€žyÛßp’“rPᤋ1E+ x ÿµ2@Æ-!ƒ·‰Ð÷‰âµsëé Ò `®‘¥ÿ†né=•ÓŠÁÐ$8û€â ýÛ`¢ÄäÓ¸OFuòRW§n îÞ˜öÐt0 Aý³E‚x,åZ€’z”ü„#Ö$€¸}è“xš=ìéPÏF8û”˜@éðb1ú[¡ÚÞ4l¬í.¿…l¿âWÉnÿÞžþë³ÎÝÄ(st^sÊÓP†óGÇ‹²‘i×’2TJ€‡½iœi+R÷Q¶ÝNñO lMq´¹È S9h«TjxÍ-αx”zÝl—dL‡áEZ›°4‰Œ^:DÈ>åªÃ!Dà”ö3×g4 Ÿ!Áf%SÆ˲5ºí`ùqO3*6ĘB!Ì‘­ã2šþ7Óp€†(Óë6¸X­ÂéXgLKÃmÛTió@èÜÈÏîãsGÅ¡4.S¯ >N½1NO†EV–/¸'y©Q†R!–!s.E[ëgíbÚÀdT MFîS»C=ÝœL\Tñ:0N¡ÚûòÌ× kuT3•‘|‹¢jX DGf(á“Øy6šbZíhwJ¹´’Oxµ†v ¡Ú¤ÐÖ=§ö쵸0½ÅöFU\º¶œ2S4â y±°ZqŸ)HFÿ#½õ4Ÿƒ&>>m?j9¯±ÇÀP#ÔÐÊÚ_Ò$Yÿg¤šÕ½3‡ÉAqö=D.GNR¡(ƒGaG`Uѽ‘wîÚ†gMáÍé@.-Z(k—¯ Ó‹$€:Öçä6ǯ•þbŠ¥­q’)ìü±º‰&Ö¯[¡Ý¸LšKi s<:nÛ'& ­’æÁ IÙLfðVSF¾;:þL¨ ž¢“¼OTÃ’ ¶k~^™¡*TçõÈ)pÝK?¸N¶¥F#ã ív’_‡HjÙ*¢e)Á‡ßïÑϾÕrTñv(; æõ¡øì;…’ê71ÒDÈä7‡$9üúk¶™é}iqüfdÃòó¡w%m(ŽìÉò‡²W7¨ø\g|&¦=~0=ÔÑ[HŽƒ·åÝUz¦%mRÛ ÛÐK´ |I}·ö¹aôñcõåëÙ¢Û¼"CvÞÈØ_ô¹ù!¤ÞÓ(Dnýt$Ê׫˜}qËÖÐL Û'ìU°ªæy‚uT쌑ÿ8¶lýšU5½ôN¥Â7Ÿ1„y7g*K’üÄã Œîñc.¬·j3›ÄãÂÅiŽ&‡~ÚŠ 5wbI÷ª.ÁÞ»Œéð¦Ä„÷vY·$¯hùrw5›4D׈Í!ØÜБšr¯R”µÉ€ëOiD;C-ƒâû¨½þÓz±T;†’¿¬ø}lrœ‚¿6küÑ4¦nÓºŒ¯Óû?DI6FV5ë=Ò3¿9νg,Ðæp„jÕ UæŸçž%òâÅäÍx5—5¶•L€刯’‘~EùøCó‡}ÃÓîqm Bá3·c‰ExÕ Õ¦Þ$Ny!²y!à„§½¿úH ~èu´¬âÎjV## kéó‹_·©ª $˜-ÊM^á¦gõç'ƒÔòd…¸f¤‡×õ£RN÷¡&»H†N¼Âš\iÛíÙ”E'ƒáK+™F6N’~§‘ Ã];¦l§£ï–QÞ†‡ˆÚ.‡”ï/ 4Wf",j‘±WÞ6Stc´b¸õ¨î#¦’”×é0`\LŠ(G";¹ü53:©¸Ýv™½DØw§û¢ÿ* l âë¸o=Ðn‚ï¨õ˜ Ùž&Éìí}ø'ù©>›¬Çi,Ézx7³øñjc™0«+âL ÚL©œŽ`²è’^ÕGéòUÚéͲ~J=£üaË¡Þe= Yóýí㽦F ¬/Ea[Ï…×3šF7;½=ãNx>8´7J4c¾…“€^ù[MBm@0PøûòÀÉ„"Øû\ÃF¨ð¡msÎø©ñj_%«±›ï# aݺ‰ªgiÖ‚úŒ°Ð©lkÙ«­,PÍFCõ3ûN'Ä„¹¯1a" ©Ëi³å¬lÑØBOLªÍ3΋㖙!mv˜“ÅÀº´;ÏÙÀ ð~²¹ðʃ èF1ò©ô¡Û8Ç0Ÿ…DË™9ã‚ßc°øŽÅùYÉå'3ÙzKsÕ/o+ž9x#8¡ *'LÑN‚£¿U›ø¦üœ3´ J[)‡SCeIöun*bt}Øýþ>!eÝf O`*C º$ßÝÎÚ²,?ÿŠßïÑêÕ§oiªÿ­ÌDÖQ5­¸œMô\îR€Â6H±4|êYiK—Ú3—r¨¡à4÷óÜyøC´+j̦Ý“‰á¯nf¯†9zB©©‹‘}~$6Ï­Üå@acqóÌgÉz¶±[%Ò¶úm?•+·Ò±ÔJrËòìwZ7TÙÆG§[È×Vƒ»K4è+’%{ ÅÖR¢‰lc­ÅB‚¬òö¨½ªv^¡÷¡Æ‚¿ËÆ ·ÛuÂÎ?•ÁÔ‚ý‰Öÿ&DdZ¹÷|3;ú%ÝJ“ÜG ¨Qa¸¬¦e eó8ÈFð†™š«øï­†û^‘=—ùðéÈ50—êHèo¶$o§pœÅ XJŒÒíž"U9ÿ0î·¡X3Ńüswex9z´Eq8‰¬ý¥Ô…­Îk„3 bó0û6Jƒ¾e2ÃvègFc‘þVµúÀô -ôß.Ô•wO‰=ƒO_¾8k'gÈÉô%v»Æ†?ÊþÀÙÁHÂë5±–êOÉa¾ÞDÜ’÷üØ[ B©Tà'¼Š(wè^,$ylGÑ ºª»JµtKÍ"mØ»¶g’@œóÏOŒwú‚ýÞÁjîŒSÇl0ûã˧6¡¾â ëEõq 6õ{8~ B´«<Îu(¿kÓE^›fý%¢Ñ(ùÌ~QD¼þ‹Y0Šk,<Ö…(j¶oüæ’‰’¯„bÌ´àký9ô—_![MùÅÔ¢ÖÆUBlãkAƒáè›2ßÀu¤·YÑ’(³^kœ©€ÄÊì[Öt5#Ò0òýâbÑùï³Âed¼¡Kûñ„H¸H(B8zfÀ#£ðÇô '«‡™â«™1˜Œ:î¿¶«é\ƒwpm¤ ã>Ù­Ùjáë‚›Xq‰Y‡»týxRnz²Å`(vภ֩›·Y ›l¼m Κé±ö^#}—®ê\Êq&ˆéƒE.;MþT»ô…^[7¹•r³˜XÂò•´|Çg~}_T5¾RÌ(ôÎÞÓ€°Ë¡’÷ølt™NgîcÍ:À]Fœ«›}n¢&ÒFcÞ¿è2²òö;n¾$“ê<:Î>èkžAúXSg'°Ö¹—¾:2™»§/£AÐ):¾SVGÜ^%t¸Öv ‚Û«_,g: ÈsÈ6ÔÉuÎҨƗaqÙˤ8ØäÒRtÏ'žT {¥VqÔ›… ÿ›‰él=³°k. á¥þŽ# ÕA6‚ L8ºÇ9 nÆbx°ò\ªò?E|‘ÎÑw €·–wi Ú+yz½ŒíYel-{¿Y"1kˆb¨–÷ é.—Wó³XæI+n.Â$|Î!@'AyŸitÈGÞŠØõâê>7dÇá"NýYy.cúFŸÉ ã×S‘+ëAËMWj|Ec¬ä+oYc™ÐÙc…„˜…$ý4c‘K q¼–ŸX—N’Ëžpû ]Ú&}¾Ümª¦¶Sãu_ò[´dŠȯ±Y‰ä>A Oóoøzþô´¥×¢rÌ•¦V1àVø&r@^‘]Zk[úÞ²†×\i±ŸÔA§ƒ‹€Ÿˆ”˜ŸF~ Ó"Þ„[òȇøŒÿjñT×âbÝ m!7­Gá¬ÊlkRèÔh ¶Ê аcü0FšÀù2ðÇ4÷K§€Öº—öùp•­Ï•F¶KvïÅEþm:Wz! uIñ,¾›N2òù˜yŒ›pěҘ§lo½᪠^Nd 7æBc¤¾Õjg… Z“ë³wíÒøxÀ×mT_üÖÈ/u~°vMöÛï‘Ädóí@QÈ7>•-(ö»¸†Øj÷ÃG3À‰,#ª€¿Ì¾`Ix»ºã4²µ§«¥?W†lo¿“‰þ-Rº)²ìQ¢ô ÈVÊJ:ÓÊÓJ°¶„[$³=ñ=ˆû'Û±Æ ½È²òx‰ÞÞmœÇG.¹¡ó$Zor»ðó‚ò{0Ù²! ¨ÝžÒô¶a(œ\ÈúG :Û¦¡Î{Ѫ5µ²(ĬÆßÊ¢véÌzOÉsWUwÁ±œ’ÏIn·Xq%vã–lóE{qkƒlñ{\¿y¥c+{³ø~ ±·`dY“#Ä&®L©¨®S‡YŽgú™ñeí§@Då¼?ë„lî<¼Ð 6b²eQÇ–R %yã4œ_ÝÆ1å#ÐÁ,rʆ޽¥¢NÃräòñM…8V—td¼ÌuSÉ-·äßy„È[?àćáþ£K“˜p°MGý(?¯ÔÛs’KUsÂÒ>—RɉfHéDí­ìW…´—¤¾Gµè„š7ÉŒ ús­ØrüÝéüaŒNVÏÝ…~c§`iÖ]¾b°‹4m+7êØpSFù_m|ÃŒÇÌ(ÙsKuÖÞ(ø3Ùþð̹žq“E]¬vÐÇ`N@(m†©³²ÉªS‹à+ùÐÙѵƒOp'ïpîÙYµ>)™:¿ÊÁœ‚<ÇIéCצ¼_Fj¹Þ;Bs†zÉBËèÇlÝSrm|:ø"OîM_tßþ‡Q©'>‰¡Êu½CBWìñl–æb`~_ØÈq¼»z;‘Ótçð—6ÿê«hif×¾®.QƉÅÙŽp¨LE½îfn1±M¡ 8…’Ø#»ÍV”‹{ÛbKlHæ°3¾m¹ü¦:”þ/‘]Hòø#16[ÙÏ4ø}A]àЀø)ùOC%gïÁkU­ÎߌºðS;(‰‘+X \¹ Ã$3‰ß˃ºÎ^™ QmЧ- UÑ{³mgytÈ ®Þû¨ìU*îßÛ}=rñÀ5ʼÅ´ùÁ¿\ÉA; ý#]€Ï&°…*çÖtœØv‡Îf~AùЀ-' ¯µûõt¼…ܺà¹û™Êçä³¢= öThØ^9ÝÎMc)Ò"MgR=ç­xQl¤žÑËŠ»‰k¼ÄMdµYL'æå­¶ÄË _9M(|Æ/[A](;õxâ°Ž>ÅËî:rò«`½±­Ÿt˜‘f0°Ý2£_u)ê* a3ðçN$®#ß~~{ÞTð#¶ªÖ“ùHñ®y®€;X«¸«ùá=w#,/!“$eÇsÍ“Œ]•Ä ãÜ<‡û¡æ;t_½NJÙIºŠœ*{'w¹cÁ°¤}IuE1Ҭћ{T´؈]¶á ï¡ù‡eÉ®üä­‹½¤kfÙ>.ñlÍï?¼lõ|Å"Ÿq˘ 'im&§ë³Þ•ïòÔûxm0¹áËkÐ/þ¥Î3°ÛË“Ô4¸gäê1ŒMýâÕ8À ?(8BœCÖ8Ø EOdz~¢ø8Ê«üˆóÙÛá`üjòÎ RËûl†¦J%mS™«Ù: &¹î†ô·ÅáôKI øtQúçR þó=¡Ô‡c]7;–Ôaù•%fzŸ Ø×îábkŠpôxŽºåQ„H.ÆêÓ™øzË…O°® ÑBt›—Ѭ{nºc¨q=üÂÓ{DʈZDåÔ²ÿz·jsK2\=ÙêlÄtY2¤ãSîh[Ÿ¹ß»´5èƒÙ îT'ráyçA YÛa¢ªîsý“œ—£“¶,ɬùõylØp^›E/ý´ôS{X?l.*rÙ}ƒlŒÒ%|&*+ûë@·nÄ®•nÙŠK’ãq†Î|!­Ù¼¾²— ÂÃy 9m/‹²,²rÊ=.¦oœÓû€% “ˆmMí+ëÚ,žñºRN}ÙíA™áÈiö"¿«½Ù4(›»U+)™ŠàÞ?7{ÊøKë[ƒ7ÑLƒ3£sŽ­¼!ʲ'*ò·bÔ¯ÿ±4«,‰?.“ÞØ]ä™Á©”´ ÃjêéíµEXcþ#(91ˆgUÈòŸ2J׿‡C%¼åvhaatAnE±Wö"ïL„Rfìip4xFKr˸«¾’:ÀÀ»cŒ&û™*ʼni 9’± ˜![òߨðýBÎyÕ¦$ß~KW@>s Ä j9üAZ-áò^èþÐÕª³»˜)Éíc ä[ß1Í9˜S ‰F5®··Q#ëüžPnëX•¦ÿò_mô¹¤™ø¿àRˆ” s%Õu*Õ5M »ÙÍwÔÍL6±çÃtxƒ,®˜9‘²d'·d¿´YöÖ>÷/‡» ø 9õ7Ñœ¡¡•Ù>¯u  È£¹/¡.OxœAœO\¦éD²’Í4üâŽIw8éa]-Ðr¾g?é¶DˆTa)våÄ7¢‹ûÄßG­"¼]]Ó"âÛê[;Œé”óÂ×[ÇÚ3”è(oñ=öžàÑâ ›Æ5K¡˜5jÿ±0Î]éŽCÀà•éû– ×}TÄùŽM&þ×´‹PΩ)ûÔ3Ô`Òà:¸¥:W†·˜6Õuð|3ûÚȆ¦Ÿ gü^åv§Y¥¥¤ÎéY¾é:M°ñ¯òÏR@ÜWבôÔ䉻MÛñ%›i˜ð7Õ…Ë?/‹ @Êt.ÁwålêhÆË‰¤•]4vŽÁЛi=ðÏ@{«¢XÕjÓO¿ Þ'aŸœÑØ=¨ôÍÀdËGò,AÆIo$õTÂéëÿW“û370¡m+S½>!çA†ÒÑ,5 Cšx¾?æ/¹—˜õbÁ™ßÓ3Ö#˜ƒ£ÑØÀá~ 0…Ÿ†,W:ùÍ´ É…'Œ.²dZi&Ó!¦«tîÒ‚Š-œOÝ=‰a@Hju²oÏGý5CSx%î²< Æ•zT•€ùA¨ŽU¶*‘ ¢04n'ú—(±#ù ÌË2…Åw“bpJà)ÑŠ×=Î9ã*<ࢾ²˜}Óükd½¬à÷:q¢z¿U(MÛ¿7¶o‹ qé_1 åMhcÿ­V-‹z~=@ŸÃ¶žS,—¢Z# _˜è­9DåÕÌùœpBB(ÌŒ;"ë8ÚâSý¸YÃ3,£³CŸX >.ymHQ5X€?àó}Mc¥4Eß=ïX>‡â±œÙÃySÏ.TLïtI²¶¾29ð|w°Ex§Ûžÿ²ªÄÈ’1^ßý{“Ø/'þßÅ=½K\ŒÓ±Ò¼öOň†ÿ–¾¸©Ù@1§3æ¢dÙlp°[QƒÔÒðrµå­/-ãå4û¡¶Ã:ï8NQL¹DPÈÛâiɃlj™‡Ç–=±þ¦¤?Å{Ÿ$ûfΧ‚Pª»ÚÙÖ‘ÿ©ŠšêxIóaðÎ_5°5ꥴE/Èe½éâ²U:ÍËIK ©·_Æl2vx>E–gæP*~¨XÅþ=Cäm»‹Úüû»›êA,çŠo“%½ùNY9ÂÏŸ[;Wòßvüî *Å0óýhÖò–¼\(öL‘ ?äñLÀ¥»OèÂÀ^ƒÿKû¥q3ÛÖVØ ÿˆ„×»¹C½¾'“' ƒ2^¸€ká¥ïÊNË”ëåH%sxïœrT:”N×°ð _÷uÞ®"Þ ¾Ò8šƒJiÇ2Ò&x¶&œR„wcç¼y4»äï+X+îþl’èÞJéUã¾¹0[¹Ô<“dÝ/æ+¼Oî—föØùÁ ?ð<zP0Åkz­ß”]8ÜËCð‹•‚ºzK”ŽÜ_|zßüNÅp¶Ìn3w6&nû]nC_½eB°–úÞ‡ `†ø¿á¤˜f)á­} 4( Τ²«?eSwG÷¼#Qw°‰Û±– 6ÛKåL¿)£3à´õ%ý¿·ÌƒZ}Ó»ËÈ!Êx²=Jªœ8Œ²8ÐÇ7g=Öe,öŒÛ­1öË«–#û—H+Þ¸]Iè½Ñ;!ˆ =™!ÔCxÔùU)UNê³S"M?5ÍÊ!ÎY­¼÷Â{>õ3ºªÑØ[IöáhÃù,1¯¡¤¿äDRÅÑrCÞ|Péqþ-@²þŒGô4…Ï+ÅŠ„`}Šc¡;WgÌyÊSŽPÕñg‰¶…C'±a. \¢äLËù“¤mƒBn‰€«]'‰øø¹3ÝÀ$°RÃ~È;£¤§Ï^w}þÓø Яitƒ¹ õí²m×'ÔÏÙlYX¾±|sôÁtþ9¼'+S¬5B¥[î» ù`âÜ…µ˜›é Áš–Á¯Í@…­Oççáb-™û° 4Õv­ú ËêO×d™ý’½âÜUj1¤|Ꞙ¸áóŸ$ÌàkÇ Ýõ…¶7ò UùQ5gáÜÚ]pmÎD¿‚K*?Jì÷á{QõØ„…ô­]Zg k‘Íñ¼â =[à $È5üΆ~ÔUx ^vŸ ‹ºÑžRó±™ÂÚý£«ÒíáquÖÜC :ØÊ¬pL°b»#;ÑöŠú‚H{2@&:­{Âú7}„áèEqXÝzÆzœíçnòeuΘþ#ùºXdç¯äŽ-;Cæ‚ò)NQ`ø:‹¬=ž$¤q8¾jDŸs{DRnËqxzöغ9½ãþ@6´n0k‰l ämMyOÕm^wBZ@J¬ý'?ÍCóþŠ`ïÍ:‘e1Ž“ú¬gØÆ­’µ(¡¾Ãß4ɬmJ]!¸zôUÚYª–¬5‘¶J@ª·Wû|Ê3¢QîiPÒ¡6Ò²L2ô¯•ðÏRgTäwœ`ª$Ž¢FÝÙFd}xæhžâ'Ä©Æë!üï˜Po{¬k4[ÃܸâQ·’J·™í+7„ûT4Y¸Ò(h¾w:Ò`§ƒÏw¶¨èa½#rûÈ­ªP,íFRuÝ·£ Ïm`„¸øïCcû¶SDþôs¸ú ª4µD› n„Q6-Ã)ávF±“¯ÑÛ§ãPË­ÁnVø¥(Ÿ5QEz—085AhV•×ê}CnÇF¾‡Ç¹mň8cžŽeœ š¦s|>¢:àæÚI‡uÜ;·>¨3uµ Ô%-ÈÒãÿpÑ×)êÁØè”»Ê‘Ķhb›Ì‚.&çŸQw;ÎàxÆ¥rôæ+^[îÄ™nÅ37eÐàhC兦ˆ/ƒL±ðÒL9~\’£i¢Z—ô}ûšBµ¡U/7òlàOº®¦§…ÄP‡ÅëÎâCMÿu”hŸFgDã• „„¶]¬rm;AÛU·2nÔŸF}:$e_Ú0 ƒÝ|…€Ì·ŠmÌêH›‰*Ó;  & ³ÔF²dl„ Mïš|© PcOÐàWÐNÐÏ_õÚØ:޽sÌCU¹ø´èQôÍ(´×˜ì´'WôFäðm¸|޼3àÁBá:¹û`š e¾ZU«I"ä&çæzB4€Cd&!^»Ð_Öj[ @ÎîF±Hù4à®VÈsµŸ”TðW&¼3bÐÂ~FezÕZ ƒ2’g f RA î,†²`Åk@¼Ö~G ³økŠGm‚ØiÕåâv”ñè« ÆÁè\–*´MÏ»óEÀ.h=q‰öˆss(±Ä+SjˆiiÁ÷ßK&ÈÜ”šß}ñåÂ0{/Ì áˆê7ú…U{U÷Q<¨Œ=ä_n‘ñºmGt".bἪ"µG¯_ž‘m/„÷ 5n&:Ý[Í–aOÖB¸kù´z»},ÿÉЉŸ/ü–ÞêœÙ¾ÁueaceБˆL`6¶®¶.Â7J¨¹¾ÙwÇ‹-(ÎDO6<² !6 U4H†þO£CãaéU\l±W¹‡‘cyɵ™·ì¬­1EÔD…Ìw7Úò,¢VºÁñ½âðÑÒ#q¢Yñ‡¸€4OŽÜ=I-Û»–ô1<97A[Ueˆ¢ÊÁªá%_iî#dKË-)„üïÕ–eßö÷Ÿ‰ +ëNAåv;I]€ÕŠòô:Å?+ïA~@cDÑò{;X–Æ´¸¢×ÁÏ$ü3¥ÁÙãçá=_g4°É¬ |“èðcµ¿wR„ÝÛÔL© ü‰9b²z›è¹ÌþB ”!5СÐÙÓ~*D;W·ò»d-#NVLG—3š7tF:Hà\1LòéüK”»Ti>£‹³îÂe&[ÿïk·  èø ŒÔõá@TåDIfpЖ\hmÐuÿ‹&Ü“Há7¸‚n„TU†Ò”ƒ‡Ûve…Ü_Âf*˜+¯è·üç0.1ÄÀºlWü)¡eÞ’ ,¤*‚7Ê’ûŠÈ:NxñLÞ¨[ɋ蠇‹çª›EÙnÁ…76B(ƒGaË„’æ0©ú©b.-¦E½dñh—™O¿e^Êà¬V¸žƒ?!(þ>öôñ\,–OsßéL_” æŒÛ /e@S•¨ùþ­µÓ'©ýZ­«3òû€PZ|íSÝî½Ù¦,™€®Ç,kñ„‚ÄÍ©Ñ×L2©¹&Çìù§Íš±a©EWÜN.xìÄÊñíš'¥b6xÀ®K}nN}Ó3Ç´‰©³»}ŸU;7Yìtnðø"áÜš>…†€òœ!ªªÛ®ÿÛ¢1Ïa¢¿P¥)*0CÝ IU™úÐw¢æÒX"؃ñYÒ¥õpWÉÛS1¯áߊ6?ÕHÇs&î³~F좀vãM¿X0‰ýÿ?®5%1·ú&ÙÁ?Ó'g$P+˜~ ŽÃÌßçÈÍD¯ÿ~!ì˜×¨ÎïÿØ™<¢>‰Uùb 'ôLž”ºNä¼·{1qåÚüîþyŸrQA‹z:@‰Z‹îÆðS¿ µ·¤W‹PünN–7ñQlÓÒÌxmKÚ,eÆã#<"®Ðrá~±êSAæ˜êý²ƒ¾ÎC!ìt8ñæCUIºAfÐÒ3/Ú™W/÷cõ%8&W r±Ùý5®TÈßñfHq‚A ¼øÁícûB ü´”bú¶ yàm7@GÈ2?YÈiVÂÑ@±.98òuŠÿIì”iº¦ûQÎðö{o~ê’>iøêËèsr+W··Ì{ˆvurøóqTábøM<±½rñÒVƒ8ÄEt¬|ÐJ𜘟KP«w"F]ÁÛ²àäÇ®É6è-ÍGÓ†Ç:3MÎJ˜Ar&ǤÌoíÙÅ)ð&l×@v)³K÷`5i‘ý£Zx–êCÞ0H[@'|h¦ËÎTúŽFu[·'`²ÒÞyÜÜ;ÈÞZì«zÿçø ¢çXq.lÞðG"Ý/„¦b•œ)@µäjÝŸHØ¡Øp†:SŶpV,iak§vyÓ§»ðCA…Ÿ—?]¹Þ£dˆ}ޝp]€Û¼¥;ExX2ç‰ ³só:`ƒÌà]ºïêB¨:LUÚT¸|ÞD ±UÊ\ñX؉:a§Mǵ¢KŸ†E]×ì{äm5«içuÍ AãDž.CœN+Ñôº(λ®vãH›W¦éϦíèÃJ£ç;’‹·ÒÐÔ†Ì@⶯.[À&ã#-2MÄ€ÕÀ¢FìDð«kñõùü€=PÊ ïüÌ3÷—^ ÀƒÁtË=w}ù¡é”³8ÀÆ¥°[áÖ•Û®!•ž;?»ßóÞ2®U?0“R¯ÎZŒaå‡Rcy¡ƒbGPä¶­5Ƹùü@©”4š>^©¦ùÊÄùI´ 8/®CsAE_¢&!Î]w ¿qʯ¼D@LËÛäÚ(¢Õ-ñbQJ¢¡l"â 5ó}nï¿`žsÖœýK-cŽÅ°ÝôÒó$ b@Ië4ÏNžWЧ¿3ÙA°kScÙ °ÛÐRØù,2· "µâxLµÉðrÎï|W²ÏMÕô:¿Ø¿oÇÝ¡CDêjq4¢7äÔl'óàÙw£Á©®spvüÞîvÛÂò‡¹JyÌ­.XØ íŠC½4 i¤’PxušRbû•ðÞéÔÐè´Óã!ù2s±qÙ@«—M—ZÒ¤ŸB¢›Z"G‡Ãë6û¹N|qÛkŽ<œ÷²̸E`S+&ÇtFE"6c…ca ¯rº¬^–á«€ÐÖúR4)ß=L4üÒAŒº²¶û<’Ë¢áµF÷)Ër­2·š²–0¨’¾¨ke»§ùøàOç)s*tû¨_€f ž€<÷~ÌpÈ„x§˜­Òh{#t[¼Ì1üX`zM]E›gý'hà™¥&ËË6hÍ+»Ì:õ¶GÜ/ê÷î6-=!žJòΚMgÙ'«t T¦Œ ·l6îà´P¸¯¯ß&˜‚gêïäùÖHÕìôe">€ñ=®¶¯‹Zq ^»ä|ҙǽƒ5×ÈAT ì8çù—ÌÇžr°z¨â¬X1í%`ÝFQK¯àa¤2öâ·Ì¹|=Àªá¡ni]F3h„TÈðÂÉú‰y¿zÏ`tŒŠø›‡CÎ|Ìê{¼}ô7Å¿VËÛœvÔw¨cßÅÓÔÐxM¼¨‚!gàn»kx•Ç(õ)#•§ÔC{ïø­ÀÖõ ™x!ÎÜï¥Co ¼[í†@¤ ¯Xª)ï^î•ZZ´ (‹É¦µEÛš{»±8è5Ràƒ–¿@lqûOËšûDf§®®OoØÆ N}_´ªuˆÿüÂìiˆ¹S Bi‹Üö$—œ­(['º¹ª Àyð¤Ñà‘"©ëŠš¦I¥¸”X]ï¦Ã@Å ^kO:r»ª´ê0xð!@[çÇhN2`¡-Üo&aJDás‘¼—Yáu˜èÇÚü5{µ¡|¾ òA=MX€Á8íì[ß{²DDjhªônN`££w꽚]) ÕÏÓƒûèï Ù $î!}ò v¸¥Ç± lJá‚u®JpZõΩ.&úŘOÚvDy'Ók¾8îû.d=Öé„ô’ççÁš¼—E1 Ô8-p+ÐÙ ¤h?Û–Ãÿh¸hø5ªèîÉŒ|Énä¥FB3åí•›²K(ùNÓ‚õ¦Çº>dêÒöòÿÿ¹¥—p ò)ÄÛ¸§Ò·šTØõô½Q/«•õºÄtpæ7ÃwZòst²‚1Ba©U|@{v¨àÿ â#Æ'ƒ6tsYúר6çV0P}¤'Èè^Ÿ¢|f¼¹Øíø°qÔïú¨`cƒ}cÀëfÔËd㸤ê^ù¨ ~Þ)«°¹±mZܺÃCY‰R6V#xH©Êˆ†,Ä×BÆa˜]‚IÔÐÜÔ3'.9sè\ &wy ~›Å_(ðz>r\dnæåñ€¸_sK³‹¬! ËygfŠnªmç&ªÅŒÌ[¤Ór`xçß´$BàÒBbÃÎhgs{C¦S³¥\á(Á á2W”g9aè"奒`I½¼ØîFîæa¨B%Óª, R6«â\ò4Q©¨§y¨3<˜‹ȧJ| ̈¸)$| ©_ÄLõgjžáîFg¼R#‘|Z°…¸ñåø¼Æ$i‰¿®ônvÂý3OÌ;oÄ*#F¾Ö-a£FÓŒy½è€h¹ª¤;ûŸ’~ —þŒVÞQƒ…ÀqÀu¢âÅ z~‡ ˆ=Øk¿· ЏBt¯îŸO ëÌÒñ£{‰g,âd‡“1fc&E=Ø(íÃV-tA8a_HÑôXá° ›Í“æk6æµË4t?M t#s$çSz–¼e‡ÌÕ7Ðñ0Û˜tjË©¶'p'­DZ®04AT#vbbÃìcÉJH‹‡Ø""R摀뵸‘ª_ cm€ò{^¡ù/úîÕ V >y¹½qõõX™…C×`Æ”ÒjhÔÇ”­’SÕ%βY•Í4ͳðËãS¡u§òå6.ÊEºdÚMºZœkáVDÆ[ ‚…;/g‹­›Ü5®Ø¡gˆf;ä4ÝÍ!WtË8Û¼ëº)aãŽÔ¨ŠÃ=zí&^†Ú5æÓ2®x ŠŒ¨ 4¦5ópBNìI\ýð ËÃZ‹eÅ7Tµg°ßt¸øžùÜÕ)ÝD¯äÊ `Hï þáÐÙ]rÎC*4Ÿà j#îÁ|ŠÕcÕÚjH9áÏê%m|9"ÒX¼nâs9!W¹ DYQŒKY¹Øï:ðìŠÿšÎ%à=kQªÁ†Kû®H@Š’mµ`xΦ˻›d&>]Ú pÖ@øï…bðd—‡#küŽiGþM/©|ŒOÝY‚ûP37&‘¡pÞŸû=¼6Y>ϜШ0ckOFýkQ=Gß- {àOÅd¬(±°HE²g;uFÑž²j@»+d²4î ŠMÑFŒ‹ñ¯x]óÝãêÝ9žfgrÇ$_*#dÈ w¢ë$®ätRUE ÞÉv@'•ÖDßßã3«ë,C8€(𾯶^#]d]Wux¹z¦ˆ!IºÃEEcl,ëw ì‹í–Гï¯!/ãáïUseÓs³RŽ’6  H´Æ¶[¶º+!_­sØZØaˆ—ï%·Ó^^YÍZ¯ë8w‰“V?¹‡ç‚¢ )¦!0köh &¡šËoËq¤¿’õÂã qïŠk C˘üÍ’.>­i«)òþä>Dð><ŽŒ×`9¥rà'‹dÞó›Qüì½D¿z{YF¯qRK“gaDöhH”µD«—)¶—@¯Ó#/KdRDеéU]Ö¬áØ%X†x$t½£p2‚ò2¤Pq¾Ÿ˜·ÈÚ*OíÍG&=M$Ÿ?2‰MM@Ãlxs¯ã=Ý-ö,yªúâŒßÐ?Wæû$26•`ŒXaÎû4ÀöúOùWåQ\ÑEl¼EI”Iâ›K‹¾Ÿð&COéѾx™p\dè[ö' ±~x]Ø­-N¶}–HäVÞiºvü˹¬ç¿uFs’¡É¥`V»j³z±7 “¨ö—vØöÄwÚ+×½-½…´xµ¾áDZÅhöÊ+Þgù\ÏFn4s¥¾TÕ’Yv—-Ê?k·:±/hV¡Oÿ”ûqxM-— Ya_X‰¡ðQ-ˆÚÖ$¬†{3 aà_†% bA³…Ì*]Xý¯«d~sžÃüfž8ecMýµháp?6[÷Žžgã¦`à‘¤1\&Lâ,r/3:3‰ l¡ —Dè7e_9^صբÞ&\ÕÖ³N)÷Y0ËËѰг2çË<›pÓ5êlzõDì)áX/€”Û‚½k‚£9¯4ö>~q¾o¹u ¹V£î}@m¨hÊ[ ò\¦µ¾†‡s1P³U|®rÿ8 X+÷"ÛŽ£OäÂ|zƒ9ƒN‚î†ûáè5SÎdš%€*rbÐ"ñ@ÉøÄÔ Ñý.€•ÌwÎ!äÖ¥~2HcW)Q1«'ÙJ ѽ7¥"M¯­Õz朜+UXÐV;2 yÆÝGIžàûE.ˆ6¨áS|ÙV°…áØé>J11Kqú³+ h>†ó™N-¡ä2ØøHžÔf/“±Î¤–¥iCs1³Yè™ ðM0Y¶¾ŒdÛŽùé²Õz1iuf”+F}ƒvĬWÚ_¬È2pîRNÕt¤(my.Yq@è‰Ü*¯¶v'—ÝliÏrÛŒDU¶ÆÓ:RÄãá‹'6Ì¡›øOŸ°C¹¸xk6j¦Gܹ#–Ý=0³†ê†ØTf±áE¤¬ ÿÓNb9ß TGèo™NºÄš3CJ…ê—Yê1]+faùÿ}Éñ޼µ54KbÃ!ÅK$Z¾Üè$®6JCð¼lª%)aß»~«E‚ø["B^­‚âq¢8NiŠÛ0xýÔ6ü¶Y<æÓ6ã4ªmÄ cÕìˆgÏÂã7€L»ü<[O¡,€2ê Oª©Ý-wÔà^öÀæÑ`ûÉS'BnÎ|g\ŽÈµc-áÝ^=Ê÷b>—^¬@;é‹#… À§ì^¥Ôm±¹AX/Kê#o¡+Fí}ÖæŸyü@ƒ?–# þ¦ii?;0ä®ÙÏt÷P êÐÝ¥áqÕ½o±1`ÖßH]0—é@ošÆ3CÌ–hw¯_ç·‚UÞ±Mf§,ÇÞH|ÕF$”@‰U„­)ïh“&€@¯\ƒŒ¼ê­ÛË~8–c«­ê“Õ•ŒëÞS7c™sI!QøZàÄóC§²±)nÄÀ›2å0Zå¨hmäc´.=}é Ê[–|G€v3—~SPR-Íe'žáý»]E^ÅÚq¼¢T " †Ý7&„ðxaÉp¸¤Z³÷(ÿ&†´W®ÅÒw õLˆ<¶!Sö+EÏ^´Dñ=±_øìHpæ¬Î2CTX6$¹}V‡mÐÿÇ“€´†Øc°Xe¹g]P¶¾ÄZ¤€vU,³è‚Ÿ&x|3›þÞK0RE¥¾˜”½®OS8ïA3Yíw¼¬¦Ânÿ;%më—ï<§”*16Òít¡U‡g‹<îx¢lë)/W“31)üÄ‘fÍFO$çYB Óá[•ú’Ÿ¤´ÓùZùƒcûó7S9°ŒdÝ…¤cé¹uV†àÓWo–œ-²õ»RHô:$<âOì”2yÓ­•ùÚj±xêèe¡ú!»“åÈÿÊ,Îξ O{ :Y{í¬Îó?‰S~õu±·@ÅRÃÑÙwü°0Úϳ֤›Ä‹ão7BjðHgü2yž©È ÞÛÛÿœUî³ýéW`ÜðHøŠÅº”üÕ7jЗϕÅKr¼ Ç_&):­ÿi¢×È6渼sJÉ¡ƒÜñŒ“&據Úqg£<©©9®øý ö[Oz7þŠgOš¢%Ä•éM}LÕÖ‘vË—¤äíµÆ2X¢@k:øJ™äq¬lîÉ R¾ýAÎï_T~úñ)°êüU„YÚïNÎ ¯Û´ºìdúm!ö–€€çŽÈÇtëžE>„3kp¹$©÷CôÑæpßl.J1j¡x#2Þòéë*%sζÁ·ýø#¿Ô¡ç‚îâT 4yêP¶s·Ñ÷ͽ­Ø”½Œåµc…l+2pµæFË\¢oƒ:s–ü«üä¿ÂCm¢ÍªpC 2kÜT¯?ðd´ŠöT‡B¾pz÷¼Fmý’æUŒGË“a/än¨q3ßoÆrÄáìyÍ lÔfwT ŽRÐwüKŽÐ‚ —é?d_,ógºsßà„:ÏÙšç²âsûƒ³6Îé*ž ŒNÔ½¶1§kìf{¿A«!»ž„–føõxݯÏjY¼ù‰9~†«u2ê ©²ÔŸÞhü8ÁÍ¡À(³ðA_oÃy~±¨¼Ÿ•»þCÌvC Òeë3ãV‘«î¢ÚJÁZby„÷ L&m¢ûæ7%G5UCÜK{JpiÜ`´OØß àÕÖGÆ1ÏÖ®N©”?{ŸzÙ4FâF;O)éL&´E³g4JjÙ¦‹k~o®é„þ5(°üf‰/ør· q'}¿¶Üöi²ÔÊNÝi–²Ðã=Æ´³ö&2½>š¢*|û¹”'^Çãa|®®¤!¦wní&·Î͇ƬÖûæ*Ìf8ýób¡„ç[èi–Ã_‰¥°úøä–óÞ‘MÓ ­e²vFͦºHìõºšw‚3½„”Š'½4É]õ!í|ñ¥•’+ ÝXáü¸ÒöÁÉ·O9žÅÛ®±´®×R>‹Ñ(í:Î`G þîK{Õ¾‡«7[ðèä ²§% K”à…¨#Â-HŠ*»¿w¯¶¢U­‰mÝòOÃ~Š#=ÿ„±PhŒ–}‚Õ¤»]P¶¯ ~ ¹§˜©ß¸Þ P”Š·ËJ> =ËÕÝX5 1²˜…ÅXa£ì-#„+êÝô_Α}âãi£â>È/8ÃßL+ʆ=5ONi²Ö°%¨ÎܳcœäòÁÚh@‹[wÄ‚½B‡àБZ/îã(|.鵄KõÙYm— ¦(’Â21x6ÜÙlʳ1c ¡ LÇÐ*ÄtŽ~X¿ûÿs÷ðŽÀ {ÿ¥øz£=ñ·ir€‰8ým‡"ó3‚Ö vžêø|¾…¢t›¾‡Âf.ÂXŒ`/É$âK*€v¾€%°#¾Áã¹}š|@Ù(m§Ð–ÄYoù?<æk{VN0—†T7ðû§àƒ#p¸ñ\z)è{5”LÚÚE3i6éG"¨G$ðVÖÒ"&@Âó:Z´ZœR %”d棙…*N/¶Ìâ]ÍS mÜŽÎè/Rà 6²dks™¶³:ÃWJ¦ª¼®gV3K%4Eà Èó¥tX‘Ú÷Zºp­}~â@¬¦ªÀ0{É\2¼¢¥Ä²Ó±ãŠq¹Õ¹6•ž„)¯ Ÿºë;âÀ²°ßD3ä-Ì¿CÿA&ßK“îLóÑ㣦¬cB±’äǃkŠŒiFõð¤1@°©7¤ú櫈FaQíÿ»&J·8ϯRµ‚§ã[Ë}áÀëK‰ÄŽªÂÈä@êo޽²­ÒëÏ')\fÌÎ=6~Œ˜Åÿ¾§2cœÑ¬¨(ýì3×ÎM‘ûâômÿÛk´[ Ø3Û\{ba<] ·yUîgsÍš˜ÍåIÔ÷UZiå‹Ëéz[¢ÊjŸí0‘ÿ,Aßï5ÕfD ½U±ÁÆU¸êÖøDóÞÊHþ—Mj{ÂÈ:H6¡  1µ¸ =?ŒÒ~k\Üö½ÈXÑ1Û&0‚RäõÔôÉnÉ s*E–¬“GhwÊeöП,WiïLØtn”§ñ1o¯Gdne …ÎñÝ&‰§‚ðKæF|þØ}žÛ—ײL¡€­‰5Û`  ÿ¨Ë' °ðƒQÃêk ç­¦'i•™÷S†@…ð=HLŒ€¦m9j>§Î‚%sjã×/éMQ90’Q å•Î á{óŸi¸»Ãb\ súls'¾õ–!¾F@ÑT~Ú›’DœvóÕS¥¥SÌ=2Y-wßï×W8ä5ÕYÎo8VõSÚëkwÂÝìÙBZM— ,»xFž¦ëMõoŠ.Ì¡ æg©DÐ=÷še—ýô‹#“El_'ꙕcŸ¿ ·íQϱø@„·0öHêâ-ÒŽpÍ]—Ì _\ëÜÈV&ÙPáexÓʾ,¤;7 jNùŠýåÅ&øÿéQñXòˆhåë¶wn!—÷“+ [ru~°co[Þëa¡;´œëøµÌeW’òñ/{Έ•s~„I*LÿŒŽ ͲLðâu†4Eõ`Åç-\Õ–¬<“še>ªt“˜_ƒä×¶xƒƪ`1¯O[¶õ~)ÙÂW•$/ÜŒü‡"‰ÎòB’`€º!~;mÃŽìXy1 ¦óH-.šà(†iv\Iúºco·æî=NRíÍÛÀ|g°N[¼|Z…׬°4š¡‘£RøX×å¶^VZ‚}d°â6©£óÌó»óÍeÀõ,è¼qŒWÞ†¯ôV¸†¢Uåˆ\Ùz¸É„¥»í 5-#ë‹'tâ7<ÝÁž²g4ßüºpÜ/ºu=©Vqpä:UçJu.óE8Bpš;E1¿hW¦6íG8’õOº¡õÿ\Ýû^ŒÄÔ‘Ž®~©N:…5êçÝûj<Œ6‹Ýnv ôöϹ Ú§F‘WÐc˜OãÕà ‚ÆK–S½)hû*KJCœ>_b—'«AÈäëtU€zÉÕ&¥¼7•L•“Ùñ¾8`ݬ²qdþV¬F6ó‘58h6úŒù]‡W?Pܵ«oëW¨£/&OãTÝ’ mã¯Ìøl£EZÌÆ¨Öxs…üa¦ÉFY‘·½Öiúĵ< ƒ& ³…t cv‰üd½²q!–LGpýרªXÄái-zOLÊh˜øÐ­ÅW@˜¡½Ü8q•PWËsØÞXâ‹7žB;"-½N€*¸ØCoZ@Ü¡bš©€ Î+ŒNSzZ2Ó%5pߺ²±m¦C­Ÿ¶q®úB‰Zk¥8žÝœâp¾{s˜çzÆï‹bìá¶ôˆ1C°Vd­ù±oL†]¹wÇZËØx¼;“ÂÒ£‘†ׅ^­SSòÚiK‹¿ rB&ír)®Ÿ=Û»|%GG-¡àXï©ÿDnª‘øñÚ®¢ÈØSW… v”élf9Cèt'ó4Â+QùÊ'o ;–¤œ¢‹Ùù³èÞZËÑêP0u¹Å8{ÞÝ:¤ì°­¿Ü­.ÓôY³EJ~õ,Ó-¡“.qK‹æpRœv£E¾Zze·O/IÒðv§fÈöÄwĶ­¾VP…qþK®©ŸZsÂ%,­°\Š™De&©±‘K)Äb×m+Ž·@Y[\ê–w’æì=¹=tì “&½ìß‹ýÒþ¤ïmÁùÄ’ÔŸhE)ÔJ?‘‹¢ç:ùlìŠ]âb…³šp]!¤ÄG{ƒ5”Æ:‡­;‚àòÉ–GIðGL™*çÞÿáùE½ü^Ý™àò÷±gNh¥>'“À¸ÉoL¹ŽaÜÀPêÓMšº£pÒ³Åu…YKÇ N*÷¤WmAq=r;Ï5¡úÑS- ‹hbHÌsÓn\Kµf™ý_Ê9Ðñò ˆ÷¢‹¶ÚÈùLáÒ&†;…&þWo_`H¢çÊöe´?2ø8œr¼lμp8欫QJ±‚Àãcz»r{Í* ä˜âZ\A]8T2¯ð;ê­CZT)ñ´ÍÖ ÁÕ5`Ô!<¦vp¿—KÂi<@CHÿðô8¢Ô¹ÓÙ, ‹N èTTæß7¯êaç8ÄÎE6K‚gÛäeXC~ΉØ?c,qÚö•f‚t< ¨†Ê'מa{ÝíyÏdï{俸å·m¢ndI‚ljÒǘ;ß V-—÷ßS°·¢˜R~&.ºŠHM£úWæ¬õøÄ‰þܤHgïõÐÖ+‚F=„A~ã–£¢vÝ`^µÓ@ðßÒ,Ä™°%Å$~D…ÜàÑeî_àÛsˆ>Á3Ê•‘¸M ¿‚£·ðÀ=x´û[*-mþÄ .‘»xG%(¶9RÃÂq ‰Ážz-rSþ’W¶¦ýä¯ô+ç–ÔÈ¡}P°p<‹_ æàü[¿eφº !<üchþÆÂ`”]F"¡MÞ™ 0›X¼ƒ- '¼âç˦B‹ÀH~lÊá^ðâ > äèþ<~ÚuÑjðëx“BÅQw7ç }ÇK ïŠ9f¿/Õ‘‘â÷ìëðõ“‚Ð z[GNô  Ro¾%dÄøöQ¬N‡²øehœTøe6®í–åHo¤½+ôuÖH­•ÄŠvüpä÷c¸;‹$±C{’‰ÊÇ*\œek8/! ©H°Ìþ˜Ûå&Ä…üæžPàÑê²*AdÙuΆÔoÇVóS²»$]ÿû_®Ô)å0×ÿHeÄíL\ ^J.à ßOú÷²œ{:Ú¿Y<(ú*=;ÄÖUÁÎ%³6ߣÒÔM}6®¡µ| U¹’Ôé|•¹3MPãÌ R“ ¡šEÓµ²¡ä(䳸èt\? ™‰|‘V?^U˜®ÐÔÌa¿½m8,þés‰È&×–¥}yØÕW~ðMžTrs;º‰à¹jß‹-®TVh›=ç.鿞°J¥l—|`=KwL¿%™sbïÓlÅ·vÙ÷w@"á¨ÁsNê 6‚ˆ‹\ú—P®2G² ª¼dÿ åV¸6°Ü%wðc9y–Ì ?‹™,ƒ_‹š ý¼"ÉQ÷O1¿/XwÀ÷g×\†«yžñNŸ¸Ä¥ù¹øé)WKŠ(=/ð2=œñŽ€ y!Î3b=þÕZ À[ßÜð2¢†qŠõ°Xr]Î|õèzŸmZH©¥È‰;,†AQYÈ)²=~ŠŽ1h’™P~Yb^#Š<§ ´øE|Úþù˜kšR#_j*DnÖµ‰ËÛ jÔB›™1½¾¿Ñek. µ7W ~)D÷ váµË‘ÕFÀ˜cè¯ë„£›¥M>JE3ºöÒ­FÝõ xÙhB6A¥óã€PE+yNX-=þ¿GÕ“ÿ ”§³°–L=¥r„ÕTzâ±B;ÒAü-{øwÊ&‰iü@H´e—8ËaBÛ D$±-Ç{¬¥¸ÿ£àæè&œ ˆ}ª:n`æ¼ü:…óó¥˜í>!ýН3îôݶ•¹ÉKiLW¢ s|Ì¢Ft”OõV¶ÐmhÜ£[ ×*=•y¶ÖÝf4›å]›|k%–'õF×Úšý’nã:³„Õ´/7)ÉŠ éŒJù8rÜÙ2åæ×ì»í¶¾«ìDÈܹ2Ï)2øÐá#ÛsCÖÒæÉšŸºFV:h/ÔÓöG}¨m Ý~GÁo |zq l™Ñ F?bHîw…›ÑA}ôg+ElßBVã;09ªþÞé¢(“¹–Äáö®ß1"δNåü‹¤±¡ ÃÍï¹<~zFêyæÏ NÊY¤~iøH|5°U_ƅ驯`ƒú<gÆ Öœ‡*VY-«A'V1LÝŸò]jáq#ö`ÈÀC£1Æy^2«½GÔD“¨¨É£ƒU€x ïî„8™v! #Ú/D†sj¥+ZuäÜœ(/*Kgç^hgŸƒôw£ öžÇëᬙ•×?Th³|lëŒDÕ¼p½‰¾‘iSÜîB8Æ @ðˆ‹$ÒÚs™Ÿ>•Sƒ_ÍͼFÀŠ6&nå ˜øÊ<¦?~Öÿ0éˆÏšþì2¨S,aîBÒÿx3ƒ• Ü?›«×í>q—" ¾Pl­!%‡Hó1#áåg½YéÆE^^L®Ê²&ˆíÛ/9Qá\6üüa0t¾&@ÿBj‰‹ne"fÛã¬9-?Üs:y‚û5ë›®¨ñ)ð¶^–º#ÕíþC¨BÕÿ,k362Ê„]ÙY®‘áý wiÅø×qžœ•¨Žžs˜z3éI[ÆËa>ï‹lÿOzÓˆ›°w é]§ç{ÇË©SÄNsèÕvÍZ%½A‡nÙ¥Óý'}•¿—?Ú3•¨x9MnPªHøÁNøý‚°f"¤I®ÓµTRU å˽Ág¢^k‘5CËTEn¤ªxˆJñ`M"q&‘m)¤*ËöûÒgá”Ýä€&?`^Ê.wu„‘Æá‡ÅýnzÇZMZ Åð_`?…Ó´µé¥ÿÖ3RxxwR‡×|õøWñPQ8½/6ʇ2CSuá^yV@VrK×¼Äãmä|ÅIø¯÷¬ ×Ñwó•ÎX´Š¯M¸Ì‰Ò½øÎ¨©/Æ>~W”ˆÊÛI]O5Á2 ùÑÖZ/d *¼^,ëžã@¹?:Œ“+@HòŽÍ€Ñ4æ~ŸógÂŒþ\Õn6t{¸—feîÂX@ ®Ül¸±pEbj^€Ë¥=#°´šVEj¨vDSŒz£¤m•’I‰G„”Ÿ~ × cfÖ#E&ª7Tz<È£²1³×¹IÞD“'ñ±‹6Hc@Ohþfb|!4Cã$(Dãp3Z9â¤ûëXŠŽ„yÍOT [SÐÇú¬àÐö™šŠ˜h,b|@ÓQ#\…¹ ðêM énH4~A^­ßx½?†·Ëgm‡–ø7DÞ˜°rÄ9öî”GrvJg¿¬iÁÚzDO‰J÷=ç¤ó ½…æŒ\&g¨¯âµC¥,V}€–¶[³£†F°œÃÛS©Q–в-ÓÝ”ºsͦ"©fo_`vÿ¿ ¿­š9HP 2ø„§ûçFº~7«ŒùXE· +ây,y¡%ž})?ðÅ) ª#õ¥ ¼:ˆJÓ‹©ØG%âmÖGü‘fFwöÚ;¸ža­í—R¤”[‰M)lQÍ¥OF‹/–®rq„õ¥áìiíš‚¦÷   _K…¡Ø;ôY@Ç÷vñ†(ä¶0eŒCdy•›éø¶§¯ÆAš#¸¼¤au£îËwî—UΕ“h©kØñ•Næüum¸Ï"b«Z: 7‡ö³÷UÚ€h]|;ÑÖ0Ô?CÚ…Ë®•"_\à ¿ŸøùyÂ3ð¿oQ­úÄ·©å°~¥=èéºö-&$€Ð&ZLyŒ*!á¢mvñ.¹.›ž`:PÆÇÖÉ?æ®~ bêÊZKxßJ¬_wk“×R¬°Ð.ëM^šøñZ佬á)½QmìôϘ °lÖ2 îÙ0O$ èq«„(‡ ‹›R8«•i©ª”¨~ˆ;ê§ÌsØwŸ>†v,.üÏ·"âa =ÀïÝ…Ç=mèÒ2bHE8yç¹KΆ >/|ßNPQ°÷]}fô:Š]1õ2.¬IÐÁïA™–ý*çÊq¸C5ŽÚú¯eDÅàG×Ö­?¤M¨;*ùÃ9ðA2¸¸¡úíf¶ž1€‘A:![ÕB—œW»j>R½„f]Âõqùøç'DZ¬+Ð D-qÛŽÞ;Á–:;Ê•gIÛ® š”äj2tß§;¿”x‚ii—Ý{ÞÎ¥›ôš€±á~ •çËÁ­edþE>Ð3FNÙ·K þ0™¬‰F¡¢\„»yá2[>ˆ^òhä‡ãqNJmr‰wß@zP¹ˆŒ¾;ÔpbªPŽâ—Î@¨ÆG%X>ÌYÃ1xç09ú¿_¶›lŽô‚økÍ!òŽ iê¿~•—oæj”[ªŽY ê#¿2 DÚB!Ö@¤ï÷%c ’¶0½^· —zÈ« Š ƒê 7›+pí±‘÷y ª˜¨±óÎÉ£'Ûîå³g¤ˆ³ë„,"`žr6ݪT´û‡í¯žû ,2¼“SµøÕ;’¶}¤( kdY)¡z¼¸™E÷5°á‚]¬‹°‰ííDø l3Øúä+f¦½˜t\ Õƒ¾VÀmJH‹ò'a¦Õ%¸´bÔá26&xÞ|çcºÓ3ÙÚ„Ï)q`åËÆ‹«Gñ2’Ǹã aQÎÜRAÙ…¶:V÷ëipù§M¨yº„ † V¤ä¢/Ký]#±9B²ðLË6ËT6 ^¼ ßâ×÷¹àÇ`ëž¡*BÒ’™3@…rÊz íÜT— Û›±z5)þØÓ„²Ywš(¯ÞoŒ¡¢Çè:.ž8ÉÈ÷“l¦I•Gþlü¼¡{;“à3ÂÎa}H1!‚›ÁÞÄ|tÙA¸‹›ð3¹9z9uˆðÙå£ÌCó¯M£¦8f‚yuÊ7fj»£º?j‡ÐÄiÓtÃß³4ÖÒt‘á ÏÊ]Ú Yà§ÊmQ÷ŽÀ© Øò€émç7X½È}äéLŸ%ÒIö=—é/*t°páòÜý žá¤‘¥Ðs]ÄÒNkAîp<–\Çtß4pƒdú´ƒ¹™ TÛùƒ&Sr¹-ca1˜œ±Æ®cì^êTN°“½—âoÎÔ8¿wM°\þÅÆ|…¼“Rl1$<¿ ?®#º„ÿì¬E 9†bžwØ[LopKQæ¿ê£LÙ˜`ÏûÎV÷\\4ÒqÞRGW_FjÝ/†vI,ÁO pš&w†S*C[1ø,Mñ³~ÜgÃâ{#:ëš‹8æŠÂ¼ñÞwñ/ç¾¤ŽŠâ÷žØ(åâªjg•½‡ÆéóyV2’öWQ¼as ÖáböþÏ…ÆgÉhý¹¥› É6ìLÅ(s Åß­U˜æÑ¡¡uª9«‰U Ѽ¿Í×~¼ ›aÿh`­²Ø=§0fcHÇz\Þ˜¸Ý_þƒ£€áã°¬’—8"m b?-ˆÛZ“²{@œôÑiU8E¹2píê•·ÄèEßUŸå%t‡zÆkVšš–;ÆBÐ6å&†6Dg å¯ûóÞÎ(>ë0 µ¢•Œ«×M˜®Û­|J€ÝÇ© ¶ ÿ‚»ß^‘fRH/Gø Î ­£nsc¾±½SÀZv®Œ‚Iš³!òoUx«} ع£0ÉévïºV:ڡ褉×D\¿q´¦Ê¼xº1ÃCÅj†Ø"©g˜²E¶|RB7¤_ç¥M"DJòí1jÝýC‚àHcZ8ËIáŠ'‘œF-å¼ï'7 ܳJ´­p„BžÓDõ|¡°ˆÓê ýÿØÔ¾¯…@ªê–³\,_äi4õ;vÀî¨OúþfGŠFÕ ü„ôÉÆˆ<@1ùcÞyòPl[OûÙÔ1óÃÒ€¢5˜ñRá+c,‡Ÿ>Å2³QµºAlbŸ¸2u"Δø´O”rPñzÄFgÇ>t?*<-x~rv y4Ò@hMÏnÖ(c:´AZ™v?jëàVî¯>C·a/µ6H¢1fþ8É’QëæäUÀ :leìÛŸû„ˆ[ÓâžVŒxÌÚw,íÂ:P·µ Â:9íR|ÁkºV:I ;‘_£rúˆtÛœ¸¯¸'û{H\$š>âS +”‹H–´P7r@g)w‡Ä1Ë‚ŠxठÇôèB½±)5Þô~«š–2ã¾;®Jdï’bmF”eyû/A .˜a¥ïüò*Öu†Ðuk™ø¯2rî/Ɇ–¥OYA®~ [õ8TlŒ÷‹ž q˜¬/‘dˉ5Û+¦R¤à‘A.Æ•µ^œšn½¯³AË1JȘE‘äû pÊ*TàÃÔ ptøv±³ÐOY‰¢°SP=⽿aQg£§õ þ’6”ô‚ Vâ¼i.Ðú/µèj;1Üž^éI]½6þž(¦wÀ‰ÆÊÆ Qݹzs7Vù¦™±FUCᦋîIŸ#Í;xé×ÑäŒ%݇N :d-tâ÷NµËV_Z8‡2²i}/ ²‡Wšc«ƒ¥·mÕ"ó(.Ð×ãŸòæµîiÝîo<;{äZøKZû$œMÐ@½¤j$Ú±‰0w$³gKÅïx9“þfÌæÇ•7ÊDBØmçÒº+yqæ4mªGWÃcÍNèùØ}ÿVƒ/–Þw²ív"Q¦‰YSQ³{gÁo†#ÐÈE(-?NL‰l"5ˆ±2f £ƒ)t[•R†&_ËËp(Òd‹ŽÇh3ŸÆ6ZTs˜û¼!J!«V©ï …¬´Â_È~놻ã†?5àÂ÷=‚”„oÎCµ´ \´·%¨iëÅÃkÈÚˆòšZ¦‘‚’®£Õ Ç#ŽÊ¤cuLIú5xTrpÙo]¹ñ•0V»B …… c1ìdÐÓÜ0´z4™£¼Ñ˜Gžï†äÙ@8B{rh£¾ˆsT¯žÀƒg¤„» ƒ1†³w“ ðOÁ3éC:ÌGTÎòÀ;¯ô`¥\Ô.%E–u}NáÛ¿–XøºäÆÄëG¾¨ŠYÂÐåô•|{„¹-Å_›dؙ瑋wÂ?rª{y>eQè´EÔÎp•T=ªÏ¿YÄŠÁþF¦%Ä¢€L_.¸ »öØuºlC4Ü_·òÍyø|"éƒ?›uÉ,ØS×À?"‚®©D ͤô{´3x¥¯"f2·:ìZà¿qEÝ|Çš3éFûáß †$˜eMlrìë«pº° ߥ:å»nh@ÁƶEKÑ)»GEÚçŸBCð~*4Ðh)’³¾ˆ =Ë[†éèzó0Ýw1X?NXpnAî‡Ãb;oúG™¹án±B7l†nW1´cñ{ÕFæVocšÀàM4¹ç³?´ËTïÄ_'9©œ©\ÇÉÏQÜÇtØzœ7Ž_Ј?T/~i¥h ô²Vn@*È-ÛHšùÐçVû*mÙL áŽâYNBd3yåÞfˆZpV Þ.èÝUµÛ¤69" C†G¦¶àº:¯¿p§g >§sPÀB 5]@º«ÏJ†OuÄ*2Ã칂ñü¦Fêú¾©¼àŒ*ë("ˆaÄx/Å&9ºaà˜;J±ÈY`‡°±Ò›d‘ò¡–ìÏ÷¦Ú®ÇzR³áïôÜf®š7çGßïCG%ÁZ21Ðîè)sql¯«N wWURÙóÿÈìÝÍä*‹ÈöoQw©»5GP¢%ð³Ä¾›ƒ¬Ù Ç~ÀnB&Õ8­ ŠRü@÷íj”ºU‘‡NêæF=KqKšÞ¿ÂçjÓ3Bì: S,_v¶Nö5‹ªÙðšÌéSqÊÑŒ³‹I©­¾qûÝ+ÃÿØœzÖ¥!ƒì«¸†þLºTfÀÏ ¡45ØŠÃ$æÉ ½¡ê9#&Gsd®¤ÿpòxܽEСIF–¡©CBx^C®w²¡¶ßúªT¨l~Í8×Jò„–É«oÞ_ß]@ •ŽeÀRÈ`èY•%‡øâAuž4¶5ø+'„ulÖêÍ”%ª§’þóݪ.íA¾‡æô”* ½Ú °ûJH`.4-lùC‘B(ò\4Çí®SïxùйÇ>ZíræUaÙä½ü}Ú.„ ´x·Ék+‚oý÷ã’}íC¤qéMO÷ßaZØìèK:Ðñ’™ Š{2K‰÷ï‰_ °(Ó–§Wü\ð€-'ó‡JúÊ›J{û8HML= ¼“Eyfü úàÊ:ôŦÃNY¤~¿Y|…ŠRy†ªÊí=Ø#UH*×ú°wVr˜L¾â ö⚸~–Þ˜éÉòk#nž¦ö­hpg_a,el JD)¿Â~s¬ƒ.ͨùW[8WßDúeœÇ=Œ5ò‚Ñ-›MØJñTùúTYúH5 IâÊ¥‹$iÚº3âºWõ‘3~c…àaçaS žzÖ¸»/Qk¨¡©Ÿ]&¯*ÜÂÓ$»Þ¬ÎäÂÛuC¨bœÚ¦˜¤Blïn¥¶39Æ,L!x&ÙãiQí$NÈ5«³†ä ®L˜YТPu¹ýáa‹‘þ—³\äÍã¾mÖ¦í ÌaAVp„ó^‚>fç`eoßJÓˆ°pôDÔg̹åáŠøÕ¦údœb®ŠAEŸó†2… ŸMìç&ÞÍ ìÖä­yã©Ï“ïíªZ`ï‘FIõH†»¨ÖKš£k:Mu—ÇrP¬³dÏ¢,ÑXàzÑßL¶e“6AbÉÂQˆ!ÎWÄúSÏ *Ímx~œÇLûÜç¿7ƒö™‚kº„®­2ë°<¦±Ÿ'N^ OÖÃ+fÔVIãgê³×Ž ºPqÍ=ÑÑЦةDUî¬#¡u$t+)j*§Ð|ÞüßòB8¶ñèf¶SÀÛ9Æ£1øá=ÀK[Ë@ËŸ»U1Ý*?†×êÕXxøÁ™Ö¢möÙË ñaË4B™Ò$ÓâƒFÑ*ï3Jåž?…Ç~PSdÞÞPDÄsAºŸÕ†pܽÚåÔb©"2GÚä¥Áýõà¹?©¾;üÒqtÒ‚(H¹~”*½Üå!2äiwÒu ›Šˆ¦€Q}“6+ƒ‰HãiÂ&%?Niíó×Ó—²½PRÃa$öù²Ü2ƒ®ÑÐ>þ:Ê¿9íÂGUÿìs¡ZùouÿóÞÝHÖÉål õÿ±ißÛœ<»GÚ…:ßõs ñÂPr$T ¨ŸÜ¿-VîXÂë]×Iï'¦òs†ç*6ôÂy3Ap§Hü®kü†ñQï$}”СMÀs8ã— Ü«ƒÍF\H­@Aþ:ðL½ò–ºŸm›°¤¶ Oþºó©h8ú`Ý6ýOëìÓ£âX€JÅ%¬;Jå<$ Šâ„Âjæ"î%B*`®Ê HÎoËId‡)ÅÚ…ü:ÆH`-¼jBü~´hÊÕK %ŸRɤñsƒ¦¿Ý¦5.j ´é!¤†½¡¾(i±C1*ä‰êàÎøº›Íl®.qSœ`CÞúšL[¥Ñ¼ÃNeÅŒ=žK¬3°#fte‰;HdÆ/â³ãƒ–àðó"|¨ta¬“sÄO¡…¼ÑW”Å[<;;e.Ô"Õ°9Á#ÁaNö–G˜õÁ”8µu+4rSAò ”­yßæaŸ]+ Õ´WýfOj5C t³ òÖÍŠ³½Õž¸ÀÞm·ÁŒ› u¹õ5áT3+Hs÷µ)çšü¹ž¹â¬ánÇR§û3Ì?"mÐ]GÇ­CœÞZáH;cŸ#zm ‘D:r ÕåÞùî%(xüJUçìmÒð=’àŠª€xÑiÊó?ãÑ„ó_Èyê¤?t7 é¼jýÁz† ç+ÚwÕ ?‡ç3È=6·#WÒ¦74;˜~5^‘ï;7x {"¸(±Çø´BxøôþnÎZî•‘ 5(¾À‹$褵ŸËt€‚ïó 'Ü©„øÜK¼Ö}Õ üû§ÇcÌ ë¥Ÿ)Vþ©â4Ïì•öò˜ÔºòIÇ<¢ÀL¦Æ1öº€ãPnq؇jÝqÙGBì\xíË„ ?–À˜±u+óì×»—Õ¯yl¬C'Âvëãúëb› |Iëú  ÕÂYžL´Û4ñ¿ŒHÝ0;z:Š@ê|ãS{†øž²õb©ÓWÚ‘éHxë®Õ)™vÔþ:5ê¿Ã\¢ßJ²G÷ùUa(z}|X›Ox­@ÂË9¡3ßíÔ0e\çÞ2[¾:'649IZÛ¬î Ê¾ÝæÇö¦<;}[éÀÍF†¼V6 ÷\'šàg}Ê`YHM«÷Öà! Ö·!Îdp£Y´Þ ¡Õi—ùƒ·~4‹œc^u VÄzžygv§ÎÌBõèJWâä ¸<cñq¦=R\W2¦¢@ ð….wþÉTË‚¾Ù}å¹pºÔÚ#Ì¿gÀ›ŸX3‘–Zl ±fÍu‚é½/óödMÇÿA’×3%(óêÖ§ï+q›eX† R8…ù:.ä¬Õ,M]/öcUÞ×biªÈêUç{Ùr¢­¸u’iÔ!mð´Ö\¿[óDÂï¬æ‘Ë<|„ˆÂåUzîÌŠ³¼°ÂÛ˶bÈ¥mVAí9h #èXg‹ÒÊ\k>±o¬ÔÙÄJ4“Ú‚1¯lŒ#@.'>æLâÓ'(n;WΧÍoGÝ>p„¢k ×âBe.6cFW°Qˆ½ÍEÞ *+v-}'ê×PôxN­/àn`tô8¨—ï²$”$•A›~ï®?|?%B˜;µ3ôUÜ‘ ÔãuYd)«‰³‰ŸÞ™‡²Êéµ\•EªôÈ€9ÃEŧfÔ¨ûZˆY¶Eµ¨ º –ºv§<¼‚q¤Lú å1¸A}µ;'j¥«†W&Â*Üͱ>L†ÕÇ´C$ËÓÀ(¹Š]y’¡b}¶e“Ý w=ã·`©IÕÁVsXã¼SŠWü¦ªq^²ušÑìLÄ1ûå{™.[µ½ë™­ÆføZ+\üxk^ÃßL+<•0ϸ4ÐÞGT­¶7¨¯ÎübXžsåzeîä'ù} [aŸ¶ôbG4<YP ¡ê&È@*“ã7ô8süö&PÈj‡k•éVÊ'+÷i2V|‹-l1Åz¬ªì›¼Ä[~ߌ>¿ñfŠÿNU!öyì† •¦ïì“ Ê¥âĉ¶`ëÒvÑÍx½x9»Z££‹C{˜úŒV^Ë4Í^üÜè^"¶ ˆöê î§Ôoj­Ã›Å=Þ4P?¸aûWA« “«ûÍ*ˆ¤ßa&¹PVDPZæä¸ÁVt塨 îÖjGÓëÌNxy•cåV¡=ð2P‰7ã¶:  ç/0üaÊå?­¯­Þ8ítgªµÄ§oüx;9mÈã±ÛSÛ:Öúd’BÊze:ïÅò¹H:¬{ˆâø± dÓÕÀ²È˜]:Ce)Ñ|ÔotþË2wÑ#¨½3ôÍòš}‹°(‰ŒŽrÜ Ì§ŸŒƒ˜z&ÆöÃ,ãÑ £º)ßdÝìmë|Í *Ï\JjC  pµ ë=QRU+š~sú«…š@žµÌlNfâýEݲ6K¸†ãƒQJjš&°OÒ8Ê›ÀKŒ %O¤ÚåÀ®Ö;ÂfyÌ™yì:¹¼’Ó\SÁ¦€Š™v„ÅžhNëi™¥K"¦Õ¡ä¨²(”З h-”.Ðò·?`Õ(ý†ÝŠGãc“·dçßu篰Pñ±‚:&­¼7Yå’t·MâÝ‚åþ”G§Ú˜±XÔ˜1É‘œU‘ýÆRïäeø”sIW*ätZöJKë H+é«ðép»Y!nx~“`S¾yªùèÍlõgIµ`³=ïv%^U®e¤ÍW|œ/´°]E4ˆà›'UV-(jËŽ†Mm2 hÛwT³Ê‰(»{49r¾ýzìF$Òx±‰ æ»›.|/:}L´£,'«ônžï"’V@.F:Í‚œ\Ë{BF—:Ê,[ãmy÷ô#æCæ=r¤ôÅ[<@kXP<Ältamo¼Lµˆ­(éÅ»,hêÓ©<߀lc>d"”)0ÛõQ.ÌŽsä[_¯™ô/R•äl¢ðo|àrí£½ë÷†®Ù@/¿ô§‹Âh¾‡Æ¥÷…Jœ.¹ß HÝ…„Æ\;³Lqï°úå# ³I2 •?©£½¢áU´4ú¶3®XvøöÀ¥#b¿&P¬b€ø¶,ë­’¬äŸ(nç਄‰ÛÎú¥Hr¿p¹”¨3GK5*"®Ê¤ð¥ñ˜m)yܰö7¬©z«ŸÏ[+Î@YÌ(n›]‚eÇ$5ÖÖ™ÉP7üõõ…ÁbÕ[­à¼é+1LçaVþ+ù• èæÁ)ÑF&Õ/Þ¤%Lbš”“aa µ}Á÷xlG6’*T£f~\dá'“ýkˆPyJ]€4?cE‚Å{À:ÿkÛVá‡$‰XÚìà=¯¦µ[Ib²BP°ŒfÏèÜ„% N4;ðëêЗ(šÄŽA想‘Y×a@[¥ÇòöVõ”Ž//'(³ ¼À€ä¤Íz ¨ß«ÔbQx =ÖsÆmÈY cº£d± ¾­@“šKn?¯iËZ,Éš0È×ôüqÇ $Íñ]¼»š” =I[‹sõÇÆT> ‚¼°#Ôðø§J‘š«lÃPå=ºÐÓØ0äü¡sñ^\Ù€'þ# ê ‰Œ¬wÆÉë92ª¶ÊB¯BìÝæ²¶ ¥²};{c~£òÝü˜ë(Ü!Àz²Y»îþÍ£èŒ=23@ðUª8YƒF:K<ˆu—ývÆB4Âxv¨!­‰*q9kK=%M~–ßûiî·ß.Yhb‘îˆhHëöö=EÚÔ‡Q#Yå@ùõãYÅpö¡›fÓ òpPê?þÖ]â`G›ªlÆJ朧ðx‡ª}ýë“l‹™èwŽÍ¶Z§LëŸüoÉð6ÀRÃTNßë-S̹á£Ü‘¸¤•è,Ó#ö¨¦ž¾Ø°µÚÒÊ >ÌÖ µÙÎä=*mϪb‡7Öo{ˆrû¿e±µëVvŠØ ¿›c‚ÑSAzÅæþ'Ê8]1-™hg ˜Ô§¯¢ªÁx›Ã¬ºB—Âl'ù÷Kuƒ¸i©Ä+•tY~(Å’û‡~j¢Hä>–ÑO¼œ?N>á3µ Ì‹ €Ç=Á¬Ÿ= šÉô·hˆ!˜@ͦ±8>ñS±Û¾·5K€rN‚BLy/næe3=ÛÝI¥ýÕ¢¿FÓ2é˜*€E›£³÷ö´ÃÊ+H†i‰æà"Ò­÷ˆÀ–'›´É½ãùTH®M?FRëÀnvbòTH_À #r{?’ÃwGßRG¤mßh;‰&ÆôgV0ßÚŒlÈF‡ âû®¶±tOÔÛ±²¹Ë0(æá)t|äÀå»Áˆ|{TÄy\@Êgö—¾pùãv0ž¢¤Keçénæÿ Úw¾ñ_h–KûGñd¸?8¨œ‰«&<ŸQôpdqµûabÿäá2åi òߨQ®ç†ÙÍâÔ5;1äã—Œx•¥Ãù¿'PºuI‹6:5[<>ùÒxÒÚ¨îLbq‹Û±¬wô\`+ ­Ý’9 q´(MŸ¨ÂB¼çmö›w£ÊB¿ü|S0yl!HΩGÛ`&{Ch‡¬¶¿YcVÕÕÌaÎYîD̈‰…¹§Þœ[%SµgŠzi«Þšâ¯‡#Ô[{` ËtêIHÅÚðM±E©^#kÖNùÄæµ¼cËý%†)ÀC«æ1øÙ9˜d{—u zœy"aÁ­A/Hé(¼Û³ ˆŠÀÓ`_ÀgަmÖ!K&È>Z3Åk÷%a)¼üÞ•‡ŒïÞç…RpAÏDM~|1‘Æ­7{9ëðef5–r£“h#eÕøe^_‡S ÉœÉ^ß,5êŠñpËàASVýÍá÷j{­ÌìY:x²çѬÉþ7g Íc¤<˜±|ŒH¬?@ ‰\HÕŒ8y›F½˜_áá•äõ­£¢ÍÉiÆûC¹s~Lƒœi…aK 1ý~@¹ùÈMáç¤Êb@ó°Áu¡HÑH°SG½é±­K¿î’½xÐÐÝw„;3çvÉuŒý“nñž¼N…U Œ¡zUi$'Å`üCÀËTäb÷æ½Î,Õ-â eüAù1 JÃÌ:50¡W³Ò<à3Q÷ï£n„BÐ:¥˜æ̵îVÈŠ~A3¿‚žEdµ`$Íó¯óÐt»ô½z›"rB@’å—:¹µq+|ðxþµhÑn3 ;ˆKÕÀ®̤+! öµ7¦ZY«P#f¡ÒwYîOÂp¯EˆÌË⹇m9?¾ rä¡£¹ºE?©Üœ–(_DÝ:lÍnÏ?2òO4ët´"o"[Nöô†?¸"ZZ´y²M\€Bé/ÓïEÐwÈÿÏF—;˜†Ý.%YæšçƒêHÞñíC Cl÷ÒѾpã±Ë÷>ŒÄóö•ý¬Š îOŒ.úÉ\–²½²Ö:ÈÌsGxȺÎ@´–\NR 0¤Œ¹­œ%K–lòì¥#¹Ù~ýäÑM–²>êÒ„¡m-À_Ö"qÞdÂgÉÀš_á“;I=ûY<6²ÆOYýà9¥ÄâŠn\T\2³È“ë0—rø6l„y8Ãåß\.óöà’Ø}:J’Ã(%ídlã¯eb¿šmí{C1Å3BaÈm²Ý·çHwH¦-3#w‹7­7¬F¥¸ r;Ȫ¥svïÔyÖ㌠ђçÙ Wá(á—Ñ®8W$‚›zÅúÛ¦AFPɤ8ОXì)–Âð¶©ûÎf¸Ä?‰ÉNX¸AÓ•<€ÙÇïAŒok¸­¨L÷&†¦€=V\"1R‰•¥Ý„™Alƒ">êŸyñ2¸OˆXƒòÀ½E:&Û$&ý!Ð ‡p[&‚:ÂUC…Ë´¯Ækíâd-Q#§V»y?ÜôÔÞð­¹/Þî³§eQg¶U¦Â\z¨ÛÂ^iD¬)Ëš‡÷ò‚e`RDν $<–©ð~·:•ÈP¥Ad’¢LꢢÖ.5ŽôaAýäNž:]ÞeLƒ¸üÊëšA[äD£²‰Æ8ÚcƶÇÅš'[Ÿ”PÍÌ5³“虩ÝF%èi<àHçù¿~m™2¢‡ÑRG È/ÅQ¤÷¸°ñoVjR r‡îöñ’‡¤>bucѼUñ¦Tp´FöPF«ˆp¬5ůXàð“…ƒØ]$“YP°ýˆHkó£péAýêZ‹©ø! n=Ž0¸IuÜ;ÜÎ Ù&è9ÅYÜÎU2äˆ6£äàÊVŒB<ŸRœÀˆ¼K'%vÖ ä·_µÝ»QÒ%@>¥”s'=Ëcb‘a.7ZkBkÓ o9 O:©+¶\úÿÖ9|{ šëM¢U«Eig4PØñϹÞÖó]ÜI L %Š‹xÞÖ$BŽÿ9ƒ÷Z% Ô;;²(í\l¼eŽ66½ýž†rf€(žb¶Äzöÿi1×D>/.e+ÒF°aºz„/O6ñ²;³0)Èǽ֖G½âæo~k·Èx±Zõñ'àÝçd'F÷DYÓgþvݼ¹¸k-c¤lûä~¬Ü@¡°z ì©ÍôbüíÜ-nâì¯9×¢©€‚O¼j£Äv¼ÉÕîæ½0øxMÿóI> |à[IüÒ‰ÌFã–­h Nð[§Û:NæI¥Ôñyí™Ü„²ê8¬Uúöf‘ØÖŒ O_`ÔÄ 혪žqŠKKU}Xæ4—1Ú¦ !ݽ IOÐR´ª2Do£Î2u¿ê±e áD˜óÃñÃäsÀnrvTVYõÆÖCU¦âÊóú—I¥Ê€åªhUÇD-`1–ex¹½.PM* CLÔ¼»/ÔgòQoòf!û ­Ulþd>‚®0wÒÌÎÌC¦ÖȆ÷r',xEJ £¼Ðè Þ@©HÂÐÊ£û›àѦ.é^js6»K/'3M’³vøsñѤM%x óß°X §cTÁQ:lú‹Q˜XâCZÛ±úg§·&ð=O™Ú²¾‡ƒîôïÿb·—Ö#CQÇãPÐ¥iÖѯ6Ìî߬’ð‹ti|-;zoúƒû£â{—aª‰#3nÔÜ2&8²^†¡¾å?cë$\§èåÕ®Ò¯tP‰£Ë ¯„\¡Plç9@›A“ϪØìš/OS$3fC\ªLƒ©Ƨáñ‰Rþ/¡&å=gw-€ú.¿%[¿C-–ÄðÄé7L¯œõ‘—¬HTã5X!Ä&ä&äŽJ-ÓS.»­-ሲ)Œ@`‹yãÔÙ'Íç^¹½ÙHÚ´ú< ?V·ãÅ—ÔÆ³æ°}|«,þþæÈ,~XŒG¸/Ü‚½‘L£`üª6—ÐÂôà`/'½Aèpîv‹w+ÊXè› ÒY˜N.3VƒqèC¶m3 ˜FAe]BÀä2E¶×ÜÁý·õyA6]¢ˆÞã@ÔnïÎlóUárÄžPËAë÷àõ:æ[aH¿…•ù‚^üÂï5-a] xf–z.^Ó•WØy¸m“ ‚V×f´@í€ô-ÚzšË*ËòJ´æî‘‰ê“s{ÄæÏ¶:Nš‰NÑûu—ah'bkêußaˆæòõ‰|”¸‡Áý!ZåÖ{”]ß@“çb=Î3вÍbý4Tì£ô-Û™sö‡quŒ¿çÉÄÝMJl޾ Ÿ=Oµoê¸yVe‡¹M ¿ýC%¥u~Ë…½7bð ¬aG[KE‡!vª\Æ„á' W}Á¥Š£ÀåT–ÑÚ· îHÅ‚v`úÏg ssgB-Úbë¥@r7–Ø6”vµ]kîBùÂäO6˜„û•@ÝÐKôÕ76„«9ÔËnËÌT5•ë~çéet…kÞ?;:5ÉeJô¶ÅwW”|l…·IÆoø"Œ‡«ÑX}èÿb…=ƒ´\·>üB¨>;¡¿ MkPØ2ʪ-o-€ðQ'³Ž‰ÎÝ>h 3NftËvîÍ^æqXàõɤ×oΧ¥ þšQ5'‡Ôë|¼Š5£Çœëc“-º5O—걺rI¿A¾_üoYM¸òèDF!Íÿï¥ð1#1Yº2¹¸4¬ÞK–¡éí8ž|ÇÅéØmL<ÎÑ…Ó¿w3SêQ×XîÉ¿”"iͶ­åk™õ(újxu¾gèOi¤”+µó iɼ9A¤1Ãü,)€!…OýM¢O™ëÃ_“fêðÒ¤à·pÿ”Sh)ëOƒ´R`~&F?½ù¿44£åçU¢Œêc.ICó°~´.‚Ùyüäeé Å€•f4Gíl¯2Tb:ú\¾6CN£Eý6I~ï6~“ ¾XVã,ê¶Â„ÄzbÚœiQáÛ•ãûº¤-:ìž‚ B¤T’0œêÅFË Hy…y(áí88t|S×NtæÁ+Úèì|}Qn¶$‘º­ÐokmvrNÉG•½ÇžDl Ú®€†Ô ÛjÛzÝ îÕ>K.ðW{šË@éHzêwÐ,¶lfq»pãB˜ °£3é+ä!E!EJ˜¤zÛTV€‰  ‹½—ïãbÔE ÞËò›è\?64ñ¦6 D48'æ›`«ù®ù)4FµÌ(v€)x¢Z‹t¸L[b£aƒ·m †þ‰Õ´Oæ9ûDèËq8i ÉYN³*ŒU‡e+™ö±¦r2qŽ­akî3Û?>~[6CµØ‘“‘€ìN‹'%è¾JS$8W–Vǵôx¾úB¾é28oÚÚ] “(úÊ/ôæc®r•x‰qI#ËÂqvñ]«JQ ›òã—¯õò "Ш$J>vm‰կ˜Þ‘@ß-[j×Û ³›s€+Þ­lV›úíj?›ÞsùrêfÿsƒÓì‚êñ#ÞËÔâö éÐøºk;Ÿ}¤4{*ìä¾À~ØÏ"oÇYË{·wÙýy.mQ­øV2¤µXx„V€ž cÔ€ ZTêêªnºâ§q çÌ25bøã²•B|§|.wTìqûJ½'yÙMZïÄYÖQ…7H!s…òþ¢ü;Øa[.%7Ô›6çŠÎQ ¤ ³·Kû¹ÙŒ‰ÛšÞÐû’m{fÏÎJÖ™õDÊ(fUÉ÷ÐÐOùZÈÚöF=Þ@Éêp±Xü¹½1š#¢#ª¶¶ ŽÉF+<¾Q˜7ü=BÂds¶ñö둎Öó·éßpßK#+{^°¸Êz»Æ:ñÆ-”` _Ù%Köïù4ÃMÑs_•[J-ÛþjZ?ó[4ê‰^ücvû ùPÉöØ€€ã¨&EÆ…pdª0óK£ÝŠÈëkT5½þŸ‹ ­à^ïNlå.tñt‡ÓòÛàëW¹3J[ªêcôЬÁÒÔB Óš›6húCnº°zÉVêômŒ\“{Ù‚Ö¥÷h3­¶c•òŒ\ßL°À”¾NøuƦ6´è¦˜ÕÚPÊxÆñ­‹×s “}X½/ø:û¶r˜È˜…M©ƒ êš?=¨pì ‹}[ HWB(ž\š ¾DëTÙ¬Ç?ë"Œ™—D .F­Ê2šÏJÞJúß–Ý+ a'@f”¶ /ÿ…‘N˜0µ°Þ×WÏXÕótLIMæÒGS T'ìDÎÍÄ™º±ÃÎØScÑpB©MMÖžŽ‡4;v_ ,ùÆ™í‘wôÐé]§““ªË"·X»âA¸yfÄN"óÍþÜnž" 6_a¼~¨ià |Ázƒ„ú™H<äºñ Q‘.÷ÞÊíꣻeç¡bD»ÅGŠ/ShÛÆÀ×=‘|©›& ƒð@.ýÎêã£÷7¯/i-Q ù*ë*FjYcÎû÷ ˆéâÌù®¹œn +'T,{¶(%&ZÝ­j’©Jî¼W>­¨EËrÙ™´~Ò¸&d©¶D»vl½,äéžJbæÔÃétMé/_b£g÷`I_!B8ðñ2óñ$¨¶ôäz…=E Åj=N3ê¹õÏQDÔçlƒ—>u ÌǸŠé’{GuÀ‹1Â;É1Ôp‰Æ09J0!f>$Ñ›Y.Ø0Ü8yÁ¥qº¥¹iø1ƒžp’Óæ33ÖàH¡°|ÉÆõJaJ¼‚#­6œï£¸Ÿ¼XİX¨(f ãB ÑTÐ|—Üz%«ùnh¹Ãá J7‘aI”îÞºPî‹¥yÚ°÷$%|^á&<£I?Žýlé¹þ®ØöĤ;.ˆ“0è¼¼ÕÐ^Âh’6ƒm±2n8}ê|IJ#›À¢c¨BÉFf¢ q ކ£a”©ÈkK¢0¬ùK­ÎùkÙÇî ¡ 0í sÐ;=¸„iÖ¥>ÒIt‹pÖhäƒTs°ÏÏq{-ý¿ð¦ÌÒø1TË\mB¶\ŸDŠ,žo¼ÉÕÕWáÏ›íJÇȤ3„:ÀØÌ2SµßÍã`Mvõ(ÌbIõŽjˆ©<75Ʊñ'i›T! Éþ‘¦fål- æÜ3hçò“¦x£X¼XT¢´…3|ùp÷#ûE#ªáW äX.c°*°d.Xšç~{[#l¡WNÀðÁï¯w•aîÃYÎ]áDþê+ß&ðÕ‡L8Nm'‰jGÀ‡'Ö·k´&GlõÍZ Dw¦ŸË¾V|hmmMNéN0îÍß|øÈ1÷á¦\!ÇC«ËLêÏ:éJw$‘{SëÒicÄ+ÂÚ¼ø¤nžÉï)`ôöX÷1 ªòá&ÿÅÓ ÏTí—½L-‰Æ¹4íL”yçüq9¤R˜Åî4`¬Áæ$9·ñÙâ¹àÞ† ¾õÎU› ÄõCN3®eÀ§?4_apxzbnp_cª·³údÀ>銮WÑ6oÄÃöEøÒc3¸â¨ÝRô¦"“)AD´Ï_¯¿–‹Bž’U’y}kÿ}¤£œëº6¸(D£ø†”oµfáÃÑLšnù äÚÄ~]y:„t×`©Qé*ä!ÎÔŽ¸5‘‹ñrKy]>{H8þkÍ|jˆZ'R—øó)a ÷‹¬±æ¼Wíø=D]K¹W ²¥½ÈK;äÌÉYµOÙ ºåp5‚~§„NÀKØ@gã­fz²µRO/ý·Os9uS4TûE½·÷ôÝæ÷¾<,‚]j©Æñ’/  ™¶´Ð7Ss'Z”xýAf¨ `TÅÐiƒ¢¥Z,€GÚÝîãäIgU;Èù.=Øsn)òïÈR ^1.µ÷ÁT%9r?"d–# xIå-«Õ‰k–QóºžÞ®‚ÚþH ûµ_Y 7fA¡ä'ëRK³aRfI]¼ÜQc7  E÷x´¡CŸç!T¶ùžJÒ; …9«#ÝvtG¨1áVb­’uD‹6›œE­¬Vü°ÿ¸U3­AUï˜P݈ºœp¯«Üëÿþpÿ ªSvkGÝÇË5uð€ãªZÚ–þ§b ¤§½"£Æ/å5üòtp§xY3Näú6¼.}Éô´ƒÞJ§8¾–¾CŒC”‹Ë!˶L g‰Í…¼!8OÙºõbýšKt3YMê*ìSC@¯?ßÿèÐx8ÎËɉ%ÌTälØÁ»w¶ßëf¯@î ®V}j¾TÑ=b"?մÖîd¼<8ºaßµò¿ ¤¶ûäï÷ºô«Ž>’WìWÁo?F“¨º9ÆÓM;ñoŒëFQ…7ž2^(…›e½J%¶ÈÒgXõ>@Jê²™Ò€3Ç ­†2jp¡/µO2Ͻ©Ä àT+Èþp¿üSø³û ʽò(·4g&ÎÍlíxÿ£úÆ“ ’m þUô`ØkÙ©ñfl¼X°/GNÀîXK&ôAuvÆJz9gï”ëÇWRaÝ$õð>RTÐyi§~,eZAÕf.݉c5Ðh2ÁûÅcÚÕu í.7‰3¹ùR<ÌYT o3Ù8J Êê5“›Ù¬C±·S$°;¨Ë9˜B÷6){’h"¤Û…íe©'Ï®¿gt5@«êÍpî]€¹ˆˆ‚•äoæ™R™xTÂc–­ƒ3"ŠJÍë-Û˜ë­vGå4Ù} “Éî-æÁÑ'Õ>J} ‡q}¡á\“="ÑάtcµJW›†öh ÑŸ}ש¬o]H9³MÓο2@ñéÇ óbïXª_]M÷éˆY9šM`²ÆÐºÜªÁ eB`Þ¯&Åû_iÆ¿-ðÛXñr:Ç»R<Ï¿ ÍÑ™ŸŒj¯bAÁ2õ]Y(Eõ\H#4%ê(-×ãô_ghà­Œˆ5ƒ~†×ßÙíÓ¸|{LÍ7·ØÚ‰þ¶Ö/÷±_À¤GÅŽp0Z:/ThOâÍlKЕìPW¥ÆúN%¼ëÖWºôÛÞŽ]Ï6IB3þÐ}yØxà{+-i Øè{¬ô~c½Þ±zËÁÓÄ à¥RñÝ/?ô8á,ÍòÈ÷we¦b(Ⱥ>QËuN³qÈæ©óµ5ÿÓBþÜãx>éuÜ7äÁÓ:ãÜy(£œ±ßn7ØÜP°R6\øÖèƒáo÷Ô1v艿¡9ÝFNÇÿLö‘ |zÛÄdIл1)–ß웥•ú\'‡¨QݬÄëæ8FXûµÍó=è<˜Õɲw鼡&“[ Æ:T{%n®~Kéó—fP«ˆ‰ÄÑ‘¡©žj­Udë™5¯y@ÿvù¯2/öpyO³îŸ,ñŽ(mAàªÑ7ËXñ‚d1î~K²÷´Æ/`ÿéÊ8ÁßTsƒa0 =…7f?!­¿@é)'(C¼%ÔVœM¤Ø×JÙCR,Å À¶YûŒ r×%S3|ŒÈ8˜YÒùy擯”Ø=ßãT ëp)ÀÞ"A—~ó»¦Ê3\-mm.½°_à¡E5Èî‚m>sŠOÞóìð+I+ò&1ê¤öûB9¿>½'2£$”MÓÚL½êÊ=ªBÞÁ³–—ˆ‡¥O‰{O—nÑuð`vžU‡­Så~Q¡\Rp2h>ÛZ\rŸd|h»_ïø#bŸr &¬ÖJÞÀ.îl¦nГCä~T@…¹hòÈSò“œcë²^/¢î`[¶Î.9<,©GMšw„„‰A*Éœ:çÕûóÑÔŸÛƒñ&®k7L8fÛÑWÃ#aÌ_é•M?ˆ+ïv¶21™,ßW¸±»yW¶Ç ¬Æ{¿DöŠÜèö%Ý9~Ú¸ÓK=zyÁÕ ­²¦"¨¡vs§›#„Y¡ØqžïÌ;Gž<­0wÑÀtÀ¬Ð†¿Œ§'‚g¬¾g¾¥ÛºV©¦‘/ó;gò¨McнT›àr¾xoÛCÈQ¿©Ò:—w¹ÍM/†ôÙ- ¯v‘æ$kìÛ¤_8å’Û4ñYÔÄØ†O5  ¿HŽê~¼Öin;´xO/äB­É¦¹]ŸSy¦ca~LÆ«îµAн¶?̋ͯù_x’8ÔpÒ‹RT¯O0É<»ž„œÆÊ¹Æ9ݶt‡þŒšh©LšßŽüRÕœ‹´‡ Ðð«õBAMFVj´Zg¼ƒm&ÍYê>.3 5‹â|é/©Ö!zo(z$Q Â% H¨˜&'ÕKþ“>*U¼¹á’"QnAÄ×C#$p «cìÇ´=©å«£õ~äºLR°‹™/òžsa%üWG+2 ¡€‚TM̤åIÊ¿Sñ°é‹.†Å ´-hQ¥>Hqtª#-p÷R ¿qm©Äê…—þÆ)(/AOÊ Q£(!+{TÃÆw•Ù“ð­Ë•ßé²ÇÜAú¸:ÀaЭ@, efê£ðËfñÒiQ“Êmr£„I‚M°ÒG]Ð'~TBf.À±làü܃Ó/îÒ(Gó.BÚŠU@L3ˆÁ)}TOµŸ)„’y M¯`6ûÓÏT*ÒRÉzeÒeüxWgNâî7œÃÜUM66Õ;'X3 §û^=ôa1JxäPãg¡Ž^o;‡U¸ì Š5Ü„y¥Œ’tœX“û–i<Ð1åò©U‡èŽý›ÇÀøÓAL¢À, Êukm·Ášiâ{ìÚÕPîz€&²šs1å½….ÒhtØ ØÊcÿ± ÀìP_~(Š„g¥4ê:7|o¦äÍßAç6ýÕ§ž=ä™Û8^¦g_ë¿ë7Ùu´¿?¢ ütÁF·+¨60àº)L'õé³–)Ê3•œ_úµP ž§ÊÐy…*¸‹‡Öa4‚qZe’Pƒ 5¥“µ ¹n–„ïjè{[j ´ávíJw¨5+DVìÜ^oæjåMqåž Q¶E|›Ç–öJ—ßÙYnTFTœÑ7t(Õ+ðè>Æ&çPÔCf09¦Ówg†Î6ðË=&ÛKs@”Ðäøewàç•Zd‹x£`õJžÆYqy´n²pÏ”¬yÝÜÝŽma1±:= CXôÁ5ëï‘Qµ‰QÄUÂÐ< )#«yÓ<Ù?ŽýÅH†ŸÔ'›—'QQN´»û±NºðPΪ“¸?½T¤¾­{½}WAPþs"gŠ>ƒO2‚‚ñ6耎±ÀÕytBCï#D®Ø ŸT [½eÇŽ§/Ë–ÂŒ-Œa¶‚©½Ô~Ùµ‹6„µbÿb <Ú>¸p¶ ŒÊÎHÄ1ø€³Z¤d­£?%aë‰*4_úckÍš5 \45Ń ‹ï¶Bb kмdä ÔÛ¾eް wâ"ÿ8žÁUŸ¦¨¸ š`Ù_ª'RêÍÜ ×Z<òqé8Ùæ9ŸêÍÇøIc¸=}7C=%zÚÌ”úÂæu¶ î¾åÁ‚“áE¨®”tñhkÕ½#c-í•{ùQË œ6…üUá•2YÿË:o‰×L ßtû »A%•¼¹¼ÿïw•yhyñúÊ3AD²öàóoÅ‹­°›úþ¬ø4]ãÊþ=s.Œ$<•Ö_Ÿ¿PÞ]¬lëACê7ØÒq]ëÄà=*Få"ÓâŒ#ÿ½‡îÑŽcÙÎD.´|D3NÙÉb¶€ß©®ÝMÄÂò7äÛéÈUZSÅI” ŸkBhí^Ú¿9€x·fnŠY5ÈûšÐÆÞª¤7É3šÍƒ5êèÈ0&+ëA´ºŽG•í¥Qã5Rð­MÚe3¢_Ðjf•1dfU_Qî>h}[ñJ’Žó8¬¯½A‰?ø]¦¢‰˜Uô9l‚1ŽYkk™åÖ’|æéq"´^»*ä^†Ÿ0ÓšäÄלo¡$‡÷¢ÕF˜šÜnŒV­ºPÒ5ß!©wØ\ƒ^™ò””`ôÆ» ~ÕºL ^ÅÁœ”üM¢F(j¯IÂÄÅ>Œ¨&޼½IÎÁáåö*è[èí!*É]}e¾GËV@S-ѾäÏ‚vxž@f»äw·é³²% LzL@4ZÝó&%Ï}µyüÞDRZ!ïåõãÝÔ ¬w¾úR0BqE)§®ícÝ ÎSyC!ÃÀåb\ ‡\ÝMÐF†b,Öî÷nf~—;ñKÖ"†:¸³Š|Ë©P‰Táוc6&¹’PÕjOvˆ#;|GAg§Ôv>kζ$º>$þf¦B7Ö6g”˜xÈ»‘×9m8–‡([3’ˆ²™»äv}.¸¨|œ¼d€°* #gSxi¡äü×ç«5_*ùÓÒ^üÌ~¨SÒA  Ã[*f§Ùü s³”ªÃD‹R‹ŒÛýT&õÁ1Ÿÿþ í-úOjôŠ8‚ˆóƒjÿ Êq°q£{4·oI+DèDøu:´«6Ê?dd7Ú I·ó6¡õ11ÇaD½ùl½35ë™ñ;(yÏCÍé2ó„RªK”EÃá‚÷I ²öá5ýÜ즪“mK¯˜8Zmî¯Æ\ä’š°¦¦ZW˜™å-;»™JÜ3 vðY“Zìo+Áârìß`kE2Ø`“˜ØEGÄ¿šŽCC¯Õe©Jô»?Í õ¡þ,yLµÉØJÄeoÌ«¹k(]ì7“¦Ý‰\²ò¦bvqïòÝI>•@`’äCVfNþ„fySf”’šêÓ#ÍJ°g¥yb_ŒÆÔ 70×7ÞR®v±`¶&‰$ON˜x¿ƒ»d L]Ö)ÅÃÚa–Ú‚ŸŒsí›~{¶U“³jóºV‘“!îjˆÄYò]SèÅ€òâ{déh,×Ä·Ç4y[bHׂ^ãò5ó4ž=”åi±ÒyXl3XAVî²}6fÉÀ…ÄAZ4eÿ’~Xv Ús«¢é¿>‡t÷n°ñ•ãM U£5ölÅOrÇ ª¹Pàv·íÅþ¡îóÕ!Ú¿x6ʧÐ×ËÐ/g@1£¦ényðNF ©W–Ň–)%(*¶z;ïQ´SüðÖÁ²G“o›^+Åå=;¼9i ÀPz+K§Ar™ªÊàm³¾—c¸Ñ§txÓ‘OéóX2Ö–qºÙ¬WiÐïÇÀŽDG• ]KbÐ×"ÏJAX ’3ÌJZ6%--´DDlp¼[”tZFéǤ¿ZÆGÄÝóE ÓÞþ†nqQUb®¡KvP¡¦Úõ˜a „‘~2¨¿ü„+ÉÂ-ùŸ'f4Òá>eJœŒ€ò§Eö³Z³ÙÖu‰²ß¶¬¼sBíÍ|²[24*¹žéƒõ¿ÓÍÂfFÈ[d¼¶ÛÊëbÉ”$$ù617ü^êZwlXaûê¹#$‰t©†€æyOÄñ‹Îrãu)Ãtņ\8¥µÓåÚeF½Á:Ás{Á¿rJªïº‰[ðÉÉþˆTdüö¦½Ï»ò^êÌPäe¦a bÚ2ñHäÔÑäyu*¬ÌPî2Ò‰Ro7É_Õ"-ê3½y ^c_ ‹g‹/=kJ¼ÜC"Ù¥š•ƒb|geF0ƒ)ÿ½²g'õµ7”ñáƒ!F9Öiõ–^‘„õ{)0 ÿd“‹¯²©÷ôâÀó¯»)L*ë–zýz³ƒfJ¾lŒ¸20‡åÂG'õÜã—Ç-çõlËÆGÙôÖDrà‰ö|ëèìËaÎ`ñt¢‹D™ ÑB®Å6Dt0ÉãlSÕW†5PWðvêV_¸fÅå=€RØNxsÒÔ}‡»;ë5x¹ÜäQ; kpOηI `áÊf ®F'Bg·8ë+'õ7ÞF_­ Ü}ÎFaÛ<ýyɹ#ùšsÉjhS“±—XD’¦]v½&–G" «I|\ª;JƒÙjl£ts‹Žð>UÂyãÛ½^dàHóH*ýºh»ûb%dpG˜‚ýQÂxçÅÐhÒ‘6êzýªØç)¢½1™¯JàrÓÈCsŠuæÁ0ïpDc’²K¬µ>Ä•©QŒ3ÚñO(ëVì‡ç¦ÝæLpª5/òòÞÿcnÈjˆ«ìËçÇX«S¤‡lαÓ~(•çN¤¼˜3ÚCëËÞ½ÄÆx⯎©)¡ø1U«ùç ²3ëc·öçghJ/ƒ¸®ù3Äí7‚ ÝÑ'©wêF =t°¡Í¸¸€bÝ"ÝæãšTÄ EûÕ¨xOˆvŸ±ý‹/á–omé¯kÉ–ç… 4~°ú%Øuö(ž7ü‚Ç0x³¢l3‹à ¡–ä…-L57²Ö‘C#’ˆ‚UCê~nLRv ¯€X_¼KæXxì. stéãoú¯FS]•Ææ|ØŒd©VCΊ~6¤x–Ge&eLJâÝV fqy|éî’a2c¦9Ù°íö%´rI1mºï»ã (£gÝ‹²`.c/ÁxxÒÞèãR› û­Ýâƒ$'- ß>'LM^Ì»žk9¨»;#‰ôvC6ÑóA>}l®=|7¬:Ò§C.ÂÝféó[ CDw§Ÿ» ÄõƵ¸”éàáwöçò¸& àü8NϤ,p£P† š9Äq×$®Ò÷’,pJêHnAšKÚ1«ËrÎS ›ëWïÿ¹WF¯Œœb 0 *z?ð^KÿÜâ™ôc‡ù¢¥ð¹JfÞ7T¡„‰(áŠ{7òž6€ –¯p’¤0¬Tn¸TõÎp’4~D—² ¿`šmŠo5N­ i„šÂ›¯˜ÜÃŒ{´bú1Ɇ°l=ÅžjÍÏär'µJˆýùžñ¾·R¼vÌ™U@Židz¬)¶ëˆþÛ£¤>¶%¹ vp’%¿qŠ]'¯+>B?`{@T-ÚÃøÒPId„K9öËñA¥}“†é•gLtaÄ[ëèã-åöq9™,“¨Ã¸ÓË/595‹• OíÏÿ˜¯ixhÄ9Bfþ Ǭ·…í0hƒÿÙ÷º¥Šê&j‚$ dIÑýê<-‘s ­É2=!îÆgüîÿ銻}(Ve’ƒóÅr¿°µD§»åëVV®t¬]¢”™àXT~íò>ePå‘ãdeÞ•©*`· ’·LŒZ(šü’à¿n\«¡ c‡cn¤à­ÊJ‰å¢?ª&}éÉ6›HW4« 5®Ùùãâº1æ x\|–Q±Â‚ס˴Û}/´3SfQ£5ÅPŸ/‡í” RÃ`htާ÷Í}"€Ì1¯…áÿã² «d1;_ÇÌõdC_š{€u`w JÓ" Ñ áÓ…lfyYì<#.ÑÊ´Êxʵñûò¬zw/òe~y'Âf‘05:ÌF†øÞ¿Ìsp)÷à©ð®<-j¨†­} èž¯ÐQþ¾ƒÍ,jêºoÔÞŽËR €±Rà"ŽgòC¬ŸRqäMMéàpâßøMX€vsÁ@yàG³~)7ï”ÙréÉþ Õ塱%1 Mé!š ©øa2´õûÀGºTxëq>Ò¯±ÜKÂïEüßqªáD@­A34øÄÛ2¾Ñó¥ý¬êáï|Â-ü½HÙij:;Ê ‚¼CA5ÊûÿÖ¯B©ÝÍ6hnáÄ}fâ¶0†> ×[>LÜÍ[±Þùºö×wk©Îðû÷ê[ã5Ÿ&b°lùáDÝIxØ™worj8~èã§&„Vì}×ó…ý‘h ^lâxÅðÈzùT:І‚U¼Êÿüƒ¦•OtK~rÍcØâv}<ï¡\’F?“mÒwâá‚ã'^–&Yr5„jç–Ð  2ŒÆã3*¡ `5+ 1-Ý/|‹bö$eY é1ýú vPÏÔŠaÎê«ó|h­Ùm]0 6‘3Moç<6õ»™·Œbßc¦ÿQb9ö×JµÌé/+}B[uÞº×^ÏÒôΰ;!¼Ü )ì š1É¡´¥ÌÑ­MŠ9ûó×ÜåNŽ¡¸îTÿ‹)¡X¢¤Ñ½²é¿ØÊBÅ›E™«®ÅÔV¾¥Ÿï<cMQvãå° ÅÆFoL([ qv¸Ð¹,öŒYér/‰#A³¦NJ]—¨þ‡Wš˜7“»pÈ×ãºÐ;78ìVèðß+ÜW¹æ !Íx’]á^²çѪô (Ô ›qŒt­‚‰údiÑäNþ'Œx´1í'™‡!˜3|4¹ê8æ}$ïÕB¡álšvXÏ„ÔDËüÓZСšÆûÙo<­;?ûûÊz¥â¯ån}a·ÅÛ}j6@Š}ÓÍ;•Á豈¯Ì²íÉ[–Rˆ‡Ø@¾ýO—fذSâuEÖ\Àjû¥…䌻!C,1Jb9ôKgÔcf®9¸RxÏê­Z8ì÷ž3+PƔ١]ÚmOYox+S÷òø‚(2záÿG“Šœ`®‘[¾¡(ÒJiBä› Êi êL=Ž£ªÇOÿž7ò¥Ô®¯/˜Èb¶ä. Ä[ëfƒÄB"”¬5é{—¸g³šïÃKÈéÜëk¸ˆ}D€ÔŒ”ûXOÔAöd»*ò”µ¿w¼NVdV5Øc¸d0"TD@Q–´¼Á5KÅëNÏnž¿v‚øþЯ·Ë£ –`Š=¹ð‹FP©l΃eÝB¤¾ilßRŸcÍ©%pÃŽÚþ[Rk*cê'>pt´àwšIØà ë€Äv6 n_…%zÙ¯«†¤výˆé^ÅÎK…K68D±ÇÜD»BlV—j–«5J4w¡LYŸãpAë® å` µì,“’&2yŠ ÓŽØõ~Ѿ:Ûí5ÑmÒö ºþ†‘xÒóTÇö#Õ Pí*~D‡Îâ °¢f·Æ½Ö@¦ýذE.øþ§Ö#A°X¥qÖ\u­þRŠOÙ¹Åk EM6;<¬Ìè´œÔæüž¹rð-Œ•žÃ¾»éÃ3:÷|ÖØïÙv¾Õ½Xe˜±]%èÆ4[ÃJR nfÔ+@ʵ¦T€Ø6te,Ê?»wÁcAÿ1-ŽÖÎu¦VOø«Täc:w̧Ò#@-öCÿ¹«•ÊÄ›c{ܼ§§.Ê5ܽé¸R7Öù›… ß –9î-W[0üìßÞtÌôª?—}-[Öó5“»†‡÷M½¼¬3Ö}¬ŸïU"¥+鬨ƒfè]‘a_FÒ™k}§¨‘âIÈ3z“éuFç¦ %H#0žK ÂtÐÔÍbb÷ñÄ®]F3”{¬ô¸Å¼øñ$½þŒGlÐÌÁŸY+6²a õ§ÒfOsãÁÈïï?÷Íü¥e&$ I×6# #Im3Ù%£†üæHLìínCÍØ -«Xó·õØU‹jœnq«_h!lúâ]D:u,ÁåæÚÂT§ÙöÖ©3ê:î>$HHë($ʘa©½ …¨„´1†g¹Á1áW|[wœñ™nÇyñaQX»Ø?H³šNë¦û=`#‰AHœÉƒ)@çtågÈöò鑿–(‚¾¶ë½›4pÕÃC0‘àQòêŠSm7°=´ˆß]˜¶.sƒªæ@lµ Ç1®eNZwq~x=mŠpçÁµ}þX—ýÑŽX+iDü>mõàÒ§ÖhIšc½B÷K8×`#/×)q@× î¬"r{ìƒSÕ7‡Ü^{œØ&¤uɾ%õ?‰<“kÓ•i¥7V5È;ŠÔMŸx_ð»Í¹™nÖ?T{7HIAX#n>W}Q`gú7ºÈ¢/.Ï(H½¾Jâš'3öc´™ïã¸w}®údl ÛíZ\·gà~BŠÍÁÎ:Õ4<ꮸÑÖ“.ážWdTª}±F]ê ê5«:µèhòT®S“KH˜ÿÀ­Ô±n”"{¹Tá”,ýéU”8²¿ÂŒ‡TŒMµŠüqErüô^,Ä#dšð}¸…N7»þé;ÇFÆ1ņKËΔ iªC©ÎŒíõy  ¢Pn4<ŽÊÂÞ¤ËÑMMÞ.(ó‚®ãpb´ú²yûU5D>#Oz»«8UÔG£·…À“æy%VQøÐ:$IÎTúøÄEN9.×_a'QÜÙºÃHc × yû¾J&~EiÏv²èÍ@A·1Ae…3þñ]ÔÙKçÑÒôA©KžPö~QÌ$v”ãG/û€UPªòw--#ÓÕBƒ0xâö ‡ÌÛ) yheÍí5I ÅE‹ Tz:Fu ¤3Ö? —{ùHOÖ˃ÉB *à”¡šš{ž/SFN5$Hó‡Û>*óÓ’½1Þ-:??:ûFŽûçÏñ˜„‡žäX݆yuVØfí ^u–"ZÂh7ºÞü²1:#.}þ½2ƒlR™=Žé=žM˜ñ¤|Mqmü—Œ]îj6Aü7ŽŒÍØiŒ?K£ =ô{F:Ûi€ôä$XÈéÍÏ@Å!ÿ䆪X}žçùÔ7¯} D8ÕãØSµ(ÎH\â™Ø×á­8 æÊÆ߈v›«%×ýfÇ_Mvæ”Zjž“ôè·v-Ý}9Œ!”†tۈЮîÎëŸU º÷DMžø!RÂêð”ÜDkÁF¾Fï¶vè#íJR‰‚ä@Qèö—ÿlÙ×6Âh@FǹV=ë-†‹ÆOòt/}º8ìûÚë;ëú»°gSøè¥Ç®OB¶ ÿS\WÓQ¤Í¤‰;›Õ§ïµ®‘!»` j½%OÛ‹¤BœÌo}—óC|!æúƒa¦?N‰NØþƼ:A$—2›}­Ò9'îð—*~ÊáÆ•M•ÚM‚Y©†ÒZ:t0F—XÛ5žŽ€&Éj‚DëíÕd‘Üc?d9Ø6ÐB]Bœ‰@ü mw 6-0eÜåD°‰ú›…¸í0rž BèFôIí“rå¤TàŽîÀZØkR’í öI*Î{©wȈ‚PEY:ÉÓµë›ûõ,àáëOœE™ŠÆM~jeô.ÿÜIL¶ØÁÄN3ü7éöJ¯¼®f•(¢Žc@3 ·z™)m'çÿ»Rýþæ>hÞpÈ?s„×0E8 åbÓ约ª~Á!”³}ÖO®¦™.äH½L²Ó«– DÖžýü»º›=®<åó Ô@Î ¶’&|Ín‚ÃjLÖdl%. 1ÜŠ¦\ƒ®|é}9GF9ñ·àž7Þ#Z¥¶„tU¦ž¶#Ríµïë<¸ ΈÁ¯t¨5^Ý4â¾OdùòÍOï­L¥¼z©f˜ÈE;¸, Á9Îì:–Ž~þVZòvÿGÞÅÉ”ŒïÊTÕ6èÍýï×BU¾™^fÄýµzÊ!GšÚ±’»bµò\y ­nÜÔÍ–SÕ"ÚJëßx³=qz…O¢2¸‹òç1Ë‘³ÐlÔ«6—è§ö«{Kš;!x‡ˆ†!©ùÕýg­‰™¢íáõž ŸhD$) >àÜ –ÜÓJ@dÊ…Põ$ÉÅgUÃ@ì½óB-£™:²we‹æ´¹¡Š¡Eî—O8ý÷.¤6å3]=V5˜á®Mù­Þ™nŒî'ã¥TÈÎÀLÄØÄ–£`q½†V}{—Mÿ¼ÙÀ“9úø¸ðÌ}Ç‘óûá âRþ+q쌑€)¦µ¸d¡Ê)«ü}äÌÜt sŠŸ®g4¸çõÄ<”T‚‘¦‚‰“kà3?–óˆÂó¯„^6!ÆR}:~ïdžW]¿A ãDmL–›Õ‹!o¢^)2«|3xêéj-ÞˆÖU] êâùÚm´&dŽm]ŽÝ°a:XD”[MzF:•s¾Ãâ@ûJÅR©]»ŽÒ>´Ujü´Ò9´}´õ">)3<ãjýEÈ;Ù}³}ø\Ÿ£x’– ›ÂˆCЬ‰¦zP„Ƶ2쀎j tÚëÎZ%Öö¶D“*ÄKÐrÃf±-yìNª2û£ {€!‚Ö4[P}¥¬xêà (¤Ù¾:[b#§Â<<–ïÊÙ¢š—Ùµ °&æAöÌàÿa#޵³*A©cÊìí9¼À«1ÀÛË™&,|Ü®V3Îø…Þõõ9™¿.ˆ¢åÌ´Ã3ñ×~ ¼iî§óZž¢JŸuÜ\&ùUØ~|_^©”>$%ĽÂù'iç#aE«?ÿm)Ý.YCÓ˜¸E‚§ëà Rß÷™qk×!t4ߨ»ø sø#zò½-ŸÍÏëcÏj±ŒÏ-Ч½­0¢†]éíÏúB%C Hd‰X‘yæ¾ï› P°ƒè›Ì°²IÙ!ðFQ ùb5`P> «5AI× Z¨åŸôáòinÓ%Ë”­v@Að ÚcÓý+{pý9¬Àq¯¤Íoý€œ’RÎcKûØjRpewæâgG¥ôíôiå‘?Š‘Åš›èܬõÌ©¶` |9zËõöû3áuTùˆ-lÒ 6-‘÷Þ%” ÈÞÓ$›,uÒGÏ«#‚ ÔËÖ`Dw—+$‡UuÝf³öËL*¾›%Œ .í·ïåw·–‹ð+iˆ&´ òD‚Ø_sÁ„cŠtö”ŽO T·«ïœ°$?#x gÆ—•ý®È|Ò ¤Éÿe‚‘R Ÿ&T™#£ûsÛŸU*f¾k±nÎRH.#W"ÜY~xª„ʇ»ûöÏg4\ê·I‹ýýO©;MP®n cMðŠø®2;çYôë °×v,I‘¶+2ºaÆB»ï*ïÂ]¤¥MÀN]1tä×Y$£lˆX!_¹G²SØF®ˆ§íøx²Xø´¨‘.6õ©6:‰|h1°¯Ý¦ g¶¿ÚbÆNXÌÏcu~רdçaÝ_¬£{Ü™9–Ô›j‹ƒöBH9ç€-f ö÷r`«’~cÓ?ô#óxÖ¡ÕY³¸ Mœê>2è m˺<{˜ ðQkÛs]ú-¬Èênv A>YKÆÄÏá9²7mKy@×g/Bêp8QrS„h™ÃÎ}¸?²½¼ Šãh`£ò8SÇ1$ŠÝs>é XÎYT2!jÛõ9º59v>Df4¿A6÷`Vzø4ŽVŠRHEÔ´ëÏÃÿ©Æ a¤Ò oXâ"Ö!¼ H)× Ñýz„÷+³U#f|˜ø¯j1Ý^¼làÁA½£é'ˇ?ž™X^<Ùíù £@˜  ¾í·ëñè|бÉÌQQ€ßIa±˜?rîeØ•éÚ Ä1âƒ7Ü'MúÛX5™%?­>À†/ÆÃÎñÀR€úøÅ£Ü/†8õ¡ÁwF“ß©?,¼IœèÏ+…y1 ¢Û¾Õ(6bn!p9ËòÚuÌöD ÀKœ£ÂWrT㢠J• mA;dëœWb“‡â ê»8L­ž¸Š"Ž·nðirúdžP°ÁžJ}:cÌ«ÃX^¥-Âl9ߺ¦ùå(7ô±q×4®…¶¢\Àäôg ®&6‚àùua”ú)ÛJjHØxCkó]âFÜ fEp´/Ÿƒœ­â ‰†Üeê ¬•ù_ë<­‘Äýò»kGáÏ}„±b3|—/è<Ò0ø8ÿ£HÕÞkPỪ&™vee ‰¶œY¤¿6S­pûr ¥¦ÍEŽ\Ž 0d°ß%íÏ«©tðˆE³«9ÓÀ߃º¦ ñK.DîóAWµ2Ç‘’^©lý ¸âJŠ %‚­× t >.ËVÿC¶vVž{<>5éâ~ ¸&§×fú›BðTãØcHEäÓªuEò]4‘r\1±x½ŠhBÁÐO2!#ÈÀ‰üÞÖÊCÍ‚m¤œn!šXP¶Ÿû ßRAr£ÕÖ ã›•ö‰ÖLùsbn#JƨyÒâüt_/”N4KZ¿(N¢Éù*µ1¢²%gg46×Ûu;ã·ŠàÜ(öÐváœS,ž0”k˜û°:–ú5ƒ$ËtØ$xœÑÿÙG½-¹sÑ2çgkòcX}3¿ÄŸ¼2¶wnŽÚRLh_HBóÃuåjQk‘2s(vÿi°L9j-M˜’a‘6}1šÒÍ£Ð†Ãæ{^»LrWÕ„õ#0f—„†ž ô޶‹ñí bn`­ŽòœK;æÇY&+5XZ¾v óø4_Pm.@ˆ1{ÖÿW\¹ ‚ËaL¶"[nä¾b¢5áÕÕ4’ËjW{(¼ ôCžd³vì!JÞZaµCu—z¯;y7öA" >­»(â!2ê…m 0°S¯±MQ¤±la£™q8ú/¢ˆ¤Õwüné7Í Mƒ‡=À¸ùvžÄp–{J´Ÿ|¯Ø &Yªé†'”ç¬ðØL-æNä}Ø®»‰(tÒÒ_Žúèß·0kÝ"ŸV¸>¨%ÿ§S‡€ôÛœZýße¨t:ós#I“)¹)Y7aþže ÷ƒ’wÅ쬮„?E¹lHOÐWÈoû! `ʘŽR¸)µjltFÀ†Ç㆟6ëòÀúœo5Nz¶@Æ›Nòz_\ëj ì4¼9†äåáLcå3s%N î1–q¢ÊýWS^Œâ¥Û.™Ž…ü=aX YQ¨†à†±%õr$Yd”Ü8Ö(ç?Ó46ð$ú˜ªçaÊÛ”J½4-úC–pcCô͈´Ê2ÇáàOX߸=”‚  Am0µ¢ôKþ‚'D€AŸ‚×¥wù?k¥¥(iÅ-Òo¾aL-ue½»»[É&³(„ÀäÉX]YîÌ»YÎcr|eAÆ*Æ_?0Ò{V~ÛÔñä [e߽Θ›áU­Ò]«Šd)î´×Æ£l;18¿NÛªÛ(4Ï+&¶²y3ˆ"¢Ì¾=8åT¥q̾G°n_³vÚ¬N~Ü>Œ ülì3CÀ šÝ")C£ÓêœK•ó/¶`±2bjÿU©%V1pñ!ÉŽ”êp³¢‘Ÿ–œÒä¸Á߬¨ÿ>™g>]”Ã<€û$â7T5ß+¿ÐaâQÈãÁÅÐëgÛ5)Î3ê° Ÿ,.¼fg»èiRûQ;Û³ôP„­Œ8I`ÂÍрŗú¶šy!åm!P×@Þ 9+Úš~j¥L²œ‘äe•Rll¼à+Ÿ‚ùDjí0êÆxj,˜Í!\z.«dÊSNCþäe6ÿŸ¸ËÃ\›Þ$ é0R¿ÆgéÖ•¨¶¥0@Bë·ŸèMasw âñZ_–tãÖ8RÎ4Ngƒk4ßÑ­ƒù„–s˜—“ƒg­¼<ó7¬'"'ÁÝG! I÷jg®è»þvN”‹9˜Sþ c–·ö½¡ŽªPD,d‚VTyªF\èýÀËdÚ Ø‡MÜÎþÌk¤ÚJÔj<ûµHnqmg­(¼øcxfxn{¶9@ ÁþÛVeŒÏ®¸ƒÒÊèæ—áÉéŒè»¤#ð•^ÔÐÓöZOdrù…g«iÉÓxˆkýç!,º¯·&’ñÀ­Aè1‡…9Z`P‹ Vwš.eéu-ßî¡•`H;gœ8*>P†@Í-Mß?Å©í¿{‚àW$Æ<“ŽÇhèã{†cy×vÃtw ¡‡ãåðôÖàG_õ'Q·.Á*²ÿÀ„®$¨ôKº#²ŒmÃýÈ÷Ž«äí) ky¢(c¾r-µ¯­¥[çêP‹ ËØ&…Ã''¿Ø]‡Bå|062R|ÄÂ/2üŒ)ÇC¥ûüšÙWÚ§TØdý\À¢Ãw–÷Y]9Tÿé²aî ô±à«FükQMøòÓoËa˜L-sk‡0ä=lõªET´%% %oo)Œn˜iœÙ;%ù6ºY»;»—wù*¥9ì6ý±†;'”oD»ó"h0$ªd—”wiÛ¨_SÚ&މ·ûà׈࢛jA d±ˆ‰Bˆ rc4xzLò¹2€…ÕÞo‹ÛAé˜Xq§Ä03\½uû SܰþDPDà1ÜB¿†«Ÿ>佨TµŒ-+ׂõâ@©è€0qÇ \%y,y@dÆø)¢­Ù»Í±HÊ_à̯Ï?ùý Æv…_´>DbŰ/ê¤Ü†Våù‘̲¼PT£i–ûF&î=žhMÑA@Ë™@”€D:Ø´E©-ßä\1ˆƒBµƒ/½8ˆP6•U³Ùí<•Öñɘ_#ïXØ%ñùœœÇœ V šÁÒÖõÉ5(4àá×Ó\|1½eZyξG/[²º…rXyÈb)?n:c{&pôPFª­Ì^‘°VëÏ®íïß^sçŠèm³hâ³nÌZ´Pïñ‘µTÙø¾U€½©ã¯½7“…aÔb#篳#š#zHÿéÌ=D)BÕn»mf9•´Šß±`aío¾c9^>d)}æ‹îAu•î9``£~ðTÄÙ×3)÷ý5`” ìp–<“°vV:o™í³MîÅE”ëššõ,Û>=ÿÒUŸ…Ú¨×Q8ÿVúѵ](·ÊLÄŸ%#@üÛ/Ò!¡·ÝSy 3ž—ª”dEùs£‚«YR¶˜±°å"]àãÎHœcå=„ˆÓAžy)*×ß´f(ÑÎLæ}zˆK?ÜòEs1,‚Í~á^¸9îÅïžx1Ì 2^ÀÍ«[)U 2þãÌÖœé‚ÛåÔüwÚ#FóJüÞúå¬ —6-¿HeÇåa®»v‹˜¹áÊïëâRÜ_²Ì Zìmâ®:ònfV£]'£¸9Ä’%Êß<‘—0¿¹Õ–»L7O„¦%¥qÃË-œCýPúú8£ˆÑr¾á[@‹ öö­L⩼í#×qÆØcn­™KXB˜ùU™ ÓÈäГ£ïûúpS‹m7¨–AN<¹·?é *W3ä †ßâ%l~ÅÚ\\OÖÜÁ†Í v÷­OÎ^_Â5¦šxÁ6òÒ}”²´§Þu0®‚V½#hEûõ@ál^È»Ÿ_E`v£O¾§çj^„‰‘5,\S°)ÓUKúÔv$¡ÞøTÐf<Êó”»ï3_®n“+‰8f¡—â~Tq'Fá9v^n9÷”–2¹þó>Ò÷R’6o¥ 4²v2Sà•¬í+-¢eo×[áæc:Þ '[pˆCÞ6×J“g‚>£dùÐÚÜ;‚û&C½TÑSÏtpß×B U…öË hVîZ¦ö˜]˜Y!Œ‰ŒQRJ¡ M­§Ê3Ëtðqg~•nN?e>ÀW5ú å~R¿8– ð”u Dùݧ*uª ò„0ôæß&Í2 Ý|V3’ ¹…]0 ª'Ül,¯Â,tÏ›¡²é©ÁêqP\qº}ŠùýšŠœ"ó¸ ƸC'ôÞ…“¼ÁMŸïÎróù1¨û†Ñüù[„ Š™Ý "x´^¹Hõ/ž­Ôʸ_ËDÚåiu Kµ¾mWŠ ºþX¡Œ‘yÛ…vHźDØS‚µ, ù¬m¬,Y}ƒƒ€ øÐ¡ÐY Ëæ O¦…‚2‡žÂ~×®(©6_äýï¨e«ÑG!q¼ŒžuÕàÙr짠ϥP„Õ@k<3µPÐ2^FrÇ Pò0  ­ÒòîUµˆ§“ã‹nò¦6ÿx:\v“©¬w8Æ ˆîä8ü€%‚ÿë[BΗi.ósRÖ¸×J¸³æTdwh ,½jÓfƒSYWç[ ô@€€¥p4§ZB ä°/”ë>èÁÀˆÜ¥b1\Pd€ƒ‹h`Å}rÆÆv  ^CU`‘*-Ãïi¯›3ÎqByÆÏÆ)Ëq…Óиnç&C9h‡µ˜bø±,(5DÀÆ ø0FŸkƒ©ê%à3¨“V5(}a‘Hlôt'™óÙ‚¯Ee¿.GÃö’ùƒZS”NŽ|_ˆ|»ºR'h$ñмxà¶ž›öD›Ð½ÑaIâ“…K3 SÿjRNŽÁ*dù?«tÎRÈ»÷@*¤.W`èÉÇiÈZÙÀÆ­e¶HÇ7Ãf™AsRi” ‚¼SËJAÑ žØ»s‘–ê5z½dè1ÐAã;w!øR…)mͼ-⪞„Ííä ¸ÿB"¿Õ~ÁÓ†‡ðꊰ"ì&tp½‡üm6·g±ó¡Ùòs4è¨'©¼âºà‘ÒÃÅyP‹Ðõž€*N]Jî´´FWKÁXä|è@l³ ê}ðÓÛæE\v¾DÞYªWÆ3hÔ ¼[Ý1¤áË@ïÄ~µè†÷`(aäyŒ¼€’,Tíø^ÊU£ÃC@नýâò Ÿ^µê¡|öñŒŸA±G\VQ{¼3HvV“QxÛî¶M‘¸0ë1Ò¨¼µ›zÛSœ;bþœR HÛC؆® Ã»QºƒvE³(Õû™Û›’¢¸¡±á™JÝã-ƒ—¥ðƒÿ­›{iÊk®Èó·Ÿß$¸°E"BÔáÂŒz±ïgòŒ@[åW$ðp7#å3=CÜðwPØMN‡Þø©ÃíD¸¦âÍÿÖ +×Áw]·]&OR¿Z Õµ©¬]z€¹¿”‰qˆ÷°÷HÕÕ‚A2 Q6²y–0ÚhøL8ƒV/(ÄûdL4 >êçÛ—ð… b½Cãx¥Tä ïþö_* C|J'45Õv¨hÏÎ(v"¯4s@Óñ”•ËÜ£Hz|‚z~bÊÊÏ­³löNO’qn€d C%/·&ècO¡eàýp‹üÎóu Ùá^ò&î0ÖUôD§º+ùT;Ájtñ.Í/vɹЧ[‰9ZÎSËvèÁ†à¡ ?°=-³ÙÓæ¸Hñ!DæÄ¯¡}õº‘§C:6íØBT¼v©¦&Ÿ¤ÊÂÓ½µykÒ¾ÆIͯ i½ô<£¸/ÙSòœÂ7K 6oA_à!ÁyêÝté6òµ6E–Ü—Õ@¼p«‚ÚÕÎj˜Ò«¢wløÀ—ÉXX—GtÇAoS³pÇz)Jv§Kvz› Å »q¼»•²¨ËSp„¸}à˜)æh‰À]iè¨á 5‚)ü´gmg…®+¿|4ÉœWÜ×Íà-Œ¦^áO#°6ýî­'óëv)þ9ÔºúÝ}—ô½–æÀ[eLLÚ\]œozˆå ´ºs_îßóŠX„(i¿±Ø}yBî88Ò/X;~L ‘0rî×=œ&žþÅ0Xú…GkaO%’vG/›"jÕ>!ÈÕµEN¤L2Æí1ÈCÿ´¥?¯[´ùA2–ô ¶„ûÙÀ¬„‚¡¯zàòÚ·6€ö8×M?JФËÏ–•”µ‹ßO|«ç’®V£á[Q^Ùñ• ÇÕtn‘Dãî`ÍJ­¸ýLj\vœ–9ì#CÔÊðMØRQF\r`\7Fµ‘*cˆKæf»ÍyòÔ¸húŠ$㜱jF³k‰«Ñ^¥<Ü‚3á„Bmê%§ýìyGCïç&w±CtÆh>úáÅžqÛNó×j Ý¤ÒÕ=y›Ã·Ú~yç+t(y–¡…ÈRá@µ!Nƒ‘åžÓÖý&Ëou8¦ø§"è…Ðþã±èA@–½0KÇ¢¦S¾-ö­C6² |ƒˆè…DñpCå3½¹¶7¸X•ôæþs£Ü¡`uê­ôz”¦Ÿó éù®¹ú\3€6v ¯Ö¼ Îkü~y±°ÍèRÀn Ûá%’˜ù)+›xÖûõ“÷åþƒ´:UÚÕ=yê~ãÖÍ~gêZéGŗ乩9¥‹aÐ,êÄpx]–^Çülµº±ì"âu'}2.yG~ª »¢†õR·°h`óÉ-º²ñØ¡z' zÄ– ðô’y!ÁŠÎacl©Ö½W÷‚’LæŽXµ'‘Cü>­K ñÌo˜Œ9d¿˜<ù£¯í½Ã™Ù1m5ËR?[ê’\ãÃ0.µˆ£u¦m±¨ÊDÙ‚²:‘ƒGò{»Ý2e°,AÄ>%þœ†3ʼn8P%? qÝIãÞºÙë5@6*“-‹>¿ÉŸaºà%ˆx¢²lIÐê1y8žØÿ³°W¹#+íÀ¯r„9=j½ìo¼ØÇpϨ×âï(`Ax‡™±,V«_® ݼ[y*m+ö½hÆ|qè FcD¶ÏªqßÅwb4X0Ô•Î8ì['îŸw–îÉŽ³õFÙci :Rb*MuH1$î‘£ÅÞ¯œ¢$©}(®Ì”š—üêÙxjC{V?$½›î-²Ó‹éDÌàe`:nÍE_h"¡¾óÁ©xþSˆl“Oß”Î'¾ú¹íçò,òÔò—"I¼¤Óï©y.#d„w†þ÷÷Kn'z³iÎa·[á¨J+O¡â®PUÿlTrt±_b“¹<¾FÎ|õEß Š@5Ðú‡¯îê(KOþGŽŸM.zÝb¼t›Ÿ›jh/§*Cš ô@tûm£xß5 Lo—”Xí맃œ*AmìîiXÈ&¶ž>Û Ç¿Ê,ãLQý¹v­„0ÿJúxå±F±¦£éó¾zËÍ-vÖ¼ÒŠF1JýO )Ä •Öb®¥s9€dJ •=Pàðƒrm+úòëÎ2¨{ X˜Î%1ÄÀo~ÙôÐZ|0P¾ðáá’F ê$FiI£:te—õ@NÈ‘´;)—g“xKM«Á²öYß.î`ìæB:²ÒD¾âà ~ÒjΊŒÆÈt¨„véÖŠ‡Z¢…Ãke½žDÙÓ: ed¸À—/ q‘/ÜÌT쀓=ô+ê…«qg8ì— …š5¯´IpPÞYò¨)· 95ýV–8¡V†|&¡¿ôüÏÉŽBòÎÌct¦-×} Ë‘EcVüùðg8ä¬`™a7!ð { Qqmø"Rà?LÒfC“ ê{¥ä®qË;ï38“ÒÍ‹eËŽ’eO'ºGRMžÀX‚ÍÖRùA¢!«?ìóÑâN•WãÁ[ÀþªF¬ëÑt{ù¿?ï»A‡,¤Xs©˜Ó rCÜËg–á‘ÅEœ±cøam.‡IWÒ´]NÝÇ’þmSŽÿEè‚–ûrÛ&44/-òE|±Œ½zøb|Ï4ì©ûØï2_ UF ÷óTZ <]01µ¾Ø™Rã¸K|H±x1&û2›«©ƒØ³ä͈\jÓ;Sæ,VµIÇnÿW[v1¸§JŽïŠçEÞÅ(Ц"ìè-(a“gÏ$o¿ré,„”³bŽYy¬V“li?®$ƒäĹZ ë·ÛœÀÈ ¯ñ£Û‡¶¶O0±¾œÂäOù¦sFÑS½ø­G(gðm"‡´“dé]ÏÉòÂ ï ›ÿ³‰$úÎÑ2Ûýwªº÷cÁÕ¬57èÖhTôô•ëïú9ý}bfùŠ/$arVNIΔ=£HšY´—ްwBiݦ ¯Ý:fâ$§ˆÓzð—íÑ•,AˆÎO¸º”yì #¸Û1@¶tÈ]ËGÉ1%Ùš¡ž8¦ U‡|¨ îÉ©=’WÏñO.€#)ù:¾Sþfž†»ˆ€aøýÈDÅÂÉl%->þ>¯ÆÔê°.FÈ5¯˜™ÕþúM1wc•Û(£;.müíÿ5}Ç8§¯Æ»W0ç¾à•+¸ØOxzcÖÚ‘(g¬1×T˦‰|xrçÝZ"ç+iø DÆBͦéVŽ%«Ó ï}d£3VéO2êŒV˜:s ¹E õØ,*+"¿C*½þŒã6WyI±0ašLqõ©Fj}ÏGý( ¯ô¬ÈAcV<<rýi½¯âß“×Bö÷3üÔ£çu hÞé_LL*¼¸ÒøAˆôôÙ:\1…—ú)Ör:x¸¼å‚T ÍÖ¸¨~ýãŒÀgÙñ^£¶ôôãy’ŒdŒ/,ƒYD-6[vÄõâ=Þ>ÈIlSsÔÄ[n:™âjPå £|þñ5Sî^€¶sÒådÞýK¯ÚäbnÃ~áHñwo·G¿éyÉ-6žŒÆ†] …i dJæH®s2u lÌl6õíðÜO‡k<‹•$èD©$¯9¯²,ÍnÙ\Ÿ˜ð¶ÉÈ“£Ž÷µ/^Ë"G¥q4Þ ¼Ó…ÃÚèšÅÙÿH¥zyÞ‚Ã&>ÿa-”-à,Ñdœ×¡Á2/C~wOœÆ>º§:„êÖÛ[¸©÷ áULf«y­¹²¶w?R6"êÁæÊ#ÖRÛôABÁœʯTT°‹icñF‚"ˆ«9SŸ%E¡`†¤e¤ïSJ;ƒq‡Ü¡‘èåT¿ÔeÂ2AÞÈi4ssFfÞ¡ ¯ï,!“r¦_œXrubËÞ;äó¢–•ˆ)X~ /O6`̹ÅjRªc§Äõ¢ÕÇLÇˬ,Ó`ʙ˟Jò˜Œ²0ÆL `7:Rám€_›h….î~×xP¡”UøÙ.ãbÁC±lgé?H›´‡È#%½jq‰up1¸ ˆ!Ò˜j“/I£6©ì¶aõ7XéÔ‡ô‰Ü²î¹vï BÈô·qùS—ÚŽoýótB¸àp4bõ°2y’Üçò¶”¹Ó •ƒúÕx31»²b¦›Ç@”÷«}»¥],\gŽÚ8£±Ô;¶¡âw¨_nx½—w¥àƒK^ —ÐÒ"~Öss3•r¤ÄÛ")"QÃ(ÜŒæHЫréÀþEØmÈäMÔ~üU( ôñS#_z•O9¿ä¸G~Kˆ£-i/6|–º/Âëý€¼èYãI|Z¿í­'Lg|5Ï€ðÙÓÌŠ¼j}IžClýû”4M5ë+±r훡 Ɉ,D cÁÃ«í£ ‚…4ø¶13¡{HšþîY©£Â+yb¿J<ãíÙÆßÔ×´Kö„Få'a“ÒÉr”Xóæßiª% }‡Õí¾#9 ¸£ ÙÚBëÚR«)Pÿu@3©ÓÑ=”÷÷ð°8®p±vÚ¦^|Åy#ñv_)aX?@ ¿ .DñÌæ„,‰Œòñ–j:ÚŠÍæ@œÇœ #R7aF w뺊Á[]lÐPüˆ@üBˆH™Ïk(i[¥òÔÙ(Ú‚oˆHÙ.*€/†piþ?è¥ï #!ˆ¹õD±8Ï$<è-QÝš™ä%òŽtó¶UƒÛ\ÓBÓ±WDªMï_'Qµvþ9NcµÏ5¾®Í¼ÄqoEd²Ä×dñ]}Ÿ˜#ËÔF åQ…`ø81(>üµnOÓp¢¹¾³Sç¥\€KŠr”š’Q»êQÎ~›îÞÒÒàÜ­‰GFû—<_Yûô(„·öWœÂ”Ö“«ë°¿³üèÇŒý8ð7HDÓÏé—KÑš³ Um1 ÌÓ"ñ)GPªYÝ¢ É;`—êPf¦ä ašî¢R±,ÉJÀR*I‹Ÿ/?§ÂáÖ9&J k›O›£CÕ3\v0g͘3ª3HìCm"à5Gµê¤÷³JçíY0þùüxxÁª—:Êà\x |·^ÿ5ßÙKú¯ä*À@ÑRµÃàƒb•L6húüC†dÀ¥Áä3™v”^ȹ./':0:[«"rÜI¼—Ê®aׄA‘„õu4rîtÆðìâ0p*h¢Þ[4]"W2üL´×8ݼÝϹ Ž+ó>¬a=VÊ^áŸgX¿øétÔ—n®ìž›ø?ùó>ïïâœK~˜–£êÑsgÚ·àËv£WhàRfWMhývó3anu´Äà0µz÷&(ÔkZ´—Æ ô0Q¯Î8@eøŠ/¤]/·ÓQ/fÌ#i™y$(9OEr_*©³}Œ@0l`3랇¢Õxá`8<¯…KŒv·Èð¸@ûûMKz³—Ùõ€ HÁˆ™ÈÏ óÞÐKÞ÷̯pÙ’1ŠøTÔ)“Q—Jµ‘]Ö£¦—QzK=é²qìŽ5ù%R3µ&âò^Cs·9Ü…RvJ 9|NJ÷ÁÆõ FE Ý þô5BÞH¹^)¯ÈŠGa…ÑÛY!û ¥"=Ũ)©ªôÿ`‰±ô8L Aù<éè¿„ ó¸sE¦R;¼ÆDÒ jX^k}ö®Ý ^ ÇÀŽ ©‰^^ø(pS$äÒNü6ÌݤèCb£W§õ£¢Þ)5Ïjt‹Í(ïØ3ñäTOK§Ýíþ^1es>Rõ˱R5¢¡¸ÕEÆôØÿŽ ›~Ççnaß*Ã+Ûõéc[‡½Ä«‰EÙwQeMY1¸ãö̾0Õºá§?8̼…άÎ]ÜvÆÖ;QȤ _wDͤòHü¿g†3Mkyó·B;ÍtTy3ÇÁn‘Üpw™©„Ë” ·¦”ð÷Fƒ°l4Êð–—¹5"Ò<í&ɯm+d†äLb+Åi¬Òó:•4ãKìˆÁûë×Ù>-)aÝ2U‘Œ{^´®©®¡÷•¬ ûiAûŸ{ö®ˆÆå"&DRFà3¡D¯›8J‘àB¥ÃtJ~-pê)Eeó’af²Zî,«òCÝò[†•Ä]á'ìÀd½ØËŸß:R/íe×o!g=b&Æöì¹ËÀÿ–³iì‘DL^6c\¥“Ž®צý’ì…ÕMèt3Áqy­þvî^P!¬Õ™+Wå,ºÔYì’$ŒÏe†o p‡Âu)èLD&’–»€v±ZØâKú,ÃÐEö;jÞ¦PµŸ UvõU-Aè‘Q µ«vFyÆZ¬0”þï;ú<—‰’/34ÖÇ~76»ÂÞ+° FsÁÛŸ¥Ra:•Á™Ü­ÏÙ¡t„£D5.V\d*7öØ¢Á"†ôm+ì¶­‘ñŸph~kH‡[wcþsC™ßò Kuºi(f¼yxÒüØQæ(3Ýä¥Ù´$µñÄÝ.šg^mùmøÝ¡–æ.%)ëëäÐÛ¤+ð”Œj¾éYÔ!g»Ž)5ôâíž¿´ð í²t‰»È•Ýדe ž¢Ê{*:_è:0™`‚d:>“q'ò[TK’H&ÜæùÛFAy“¤ý­+ûRçI毢-E>aÇíòPª½å;¶Þ¿7A6LØµÑÆ ~ÓúJø ýŒ7kW?žnÜEæ„êõð|ˆ°æÊeµÕ:¶ðö¿0ÿ¦íäëÕU¢xðQ÷%èO,2"pé̤žôsñÿ5 ]uFã$÷źî)øR¡ÒìäÍÞƒþ߈ƒQÐ;”+øfZ fI¡É–î²ÝT²¬¢ZŽÞˆ«¸Rß˶d$A¥ä£vaPWïpzóÏVa‹Úþæùþ%*à­¢[ èT)å''ü_‰‹6ß3¥"ŒÌ(SŽ;s¶ûHñüñ}ÿÏ:S7xdµ±„¬*ðÖ¨#» Ôµ•qãÑ:G½ò&¿lk®9™/%\ch}:¬>{+i´ÜfêQ#Žj Üe/H¾çØ¿+ÉI¾™ûžÅ—•ƒÇ•WA'$+¨"ø×R›½ S£Š_m`J£Fe|3&E#æ?ñžßYñÖÄ­`}\£øL[7‹+žª…ïi®®IR>J05¼H”"¼üí\$ó©þEâúVZè«m\±€QY®€¯ÂÜ9¯º³z8Þ…_²û'«ã'ŽËSb\¼„»žO¦ˆï¢r²1ýÝíR™+ñ,ÔcÿCËKzt‹Æ³A¤Ä´fÌrn‚jѹô½ùû¢çïK$Tw Ø®_|¨{Ä5äžÌ¾û£ÅIÌE9 Ô¦Ž“pÅÇÊlÖTìÐ?Ž'Ÿ-ùœAxjþÌ`è˨žW¶ÏÖ|ÄáûÝì,(>5)v3>Çüj¹ÇL‰z’>è :"%‰ãPûwN÷ÕE¢>½O¨ƒF¨¶¶ó±.ÉŽâxñ!ôðÔxìê¯+ F¿ªÜ]:©Sâî²la¬uŠÓ¸&ó$ÆÈ£sæ<ûÕá{ Õ€{€ø©÷›Œz†ß‘ì"¿…’À7Å…øuO("‚Ápá§»^ŒÐ²º† F-ãé~všW§¡z† ëÊÖ_FíkÕ覮íªóo¹Nxö MÞÓw7cG%L 5EU?ûýãlˆ¹éïÜßp€ÙÅ_P|™ƒª‚'Â\\fËxNRœTÅ4g½!õ«•Rÿ[øeÈ­Ú!L0oI{ðxádü1E3v#±ƒº6†Šr¨F®æÓña^ªÑ8´Ldûò7<¿âcÅ£À-'ønÄ,(¸Žù$´{+„FfEù§Ma«Ër2ȘœYSÔ…ìE¦Ýwb€%Ô®W‚ïÀ%ÓÈÕë” U _Y4.ÔÙëQùSTªîKÑ9וçè7 k—Ó…•YGeH­‚†Ž|(ç§â ÷ÓN/V=«àì)Æ*ìèÅsÉ_/=xÐKÉïÏ~©Ÿ7µï\,D©}€Ì^]Ui /Ò@ì— Ä_îÑ#î¤ÀÐEÄP—ôÇ-#úi«q,™[:ˆÃÜb¢ìA–¬AÂ0“§úá1{û™Vt¤R™V†EÇ,¥‘·ªdºV;õ™àw"Zšž¬ÆÛç QS2+̈{4ÈÑñ`;ï8ÏÀUœžRéûe¬#SÊõËzÙ{ ÊG2&íÃñúÛZ"Ã÷ùcÚ@•3û•J¿¨8ÚËq¯uˆhy’€ Ä *´~11 « õš¸ßVžâß>Ý. ÓQGåè¿ÊE.ðª]'¬oƒ×a_kMÑÓò{J§1Ýblä%\‹Æ·Ó,KŽíøÃó1òiþ»üa©ò‘<ºÄ~ú§­- ŒÚ†SÃ.‰³ØäbÜl|åPu h”ÓëÇBY¿¤w’„>ÎÈ¡*+­pBå-ÈbŒo®ikþËY?ÿÊ¡;@†„,órh=¤bá‰<Ž =07O–Ýó®ÀY="Ƥoò¸ˆ°\'ÇÌÅPq šm³¿l\ç;¾ÐЉkî3,¿%Ѳ8žBÕç^,ñãŸdæÄÖÚ›—?óUsŠÈ¾1,{õ0-Z¨^Q§£m²ÀsoE¢IUÎH±û?áàyää˜ ¢‚Fï ûK¶I³1ƼP3죪ô@œ®¨E$t:Kêpµ¹°[Äž€$bçæ±»òtÖ¸Þ¹ |ö=!¼–~R£O]÷©û¼"q‡>UeJHg ²•øÞzn³.7Æ=aÀ/ö×ͳLLÆÂÝÓò éiP üYÕè\±n⇶³…%qZ M8‘Ì Ì!z .)ÒÀEŒúÌg´sJ¸³]wõ› æNpÊ}ÃLø2 ›ù2ìÙ95Îú s.ø‡S=9{šO%K†!(¸! #ÑšþqÑá?TŸ—=˜e©c/P¿²áIÔV¢M/·k8–¨(mÍõí‘»yC…,þƒ Þöwøô…¤æ‹ÎÓ7aÞj!=­Ÿ@\H-4 ©“Á.Ë©Õc‡À ŠÝ ·¨°³úÍ!rüq%Fn‰ W<¶ Ga–I¢ªñ7BÎ\§Úp@3aFaǬþÚéGsFþý…Z¶l*Ñ‹ˆý3#Þ ©ZˆÐäS=L@—–\RÚ_O÷ß|Ñ«Y¦‡$Ľ_K`„ì4Ç+ÇŽR͵f¡ågY`º0ö³v(ÝÃlUª¥”©ÿsGÅdâxË«u{Øvš¤ÑÅÔÇùߢùQ±î£5åS³†©8tP¥ZøÕàdm æ6”ïXà÷–æö´`bì/â°%É‚ÇÄ iÖRw~¯ §Áªë拃•EáX«sát ì5¥Ó·ècà 2¼žÌ~†¡º®jMRs19±v‡Ü_‘ îÄ4zUIžPf¦²£ä(ßìÈkfB?ߤ³€æíæöSÌôŒßÙe0_Š7Æ¢x¬F~Ö—–¦Ä£ ßîüû£‰?wu)œyf¼ûüÒ=c<÷†ç?6 Zeó9•ˆQ,xÉNêLÇQÂòÝs; ¼ˆ?ç%¡ˆÄË·fÒòpLyd„h¾†ä%dì>$’³enÙXP9QXê |q1¹oýÃéæ_A6 ˆ‡J8eª"Öú÷8fÔMŠIˆ/¶Äßæîº9 ̾4d›wfßYe^ÏÚy”š0dL–KÂ…×ØLC¬mð®Õóh³öÀÒ7èºQu™žCÇ”.—»g˜•ûþV‚3­ôÙ©Ì'ˆu%!ߌR²_~;ì•z>í§´È( Ÿ³8ó—Í:<ó¿mÍp=ª]àsQ¾0ÝÛ±Ò#e!BhøÓk~øÈ€aj·¬‰ÙäõÃK¡µæ?†ìëMÜ.Uù¤A¢1ë6Îbx5>7q¼QööÎh…+oNÖaÊ¥$a¡—¸ŽüyVÃAá,•uÍR’²Uúhæ ¯XËhZýYÒv‡²ùçß­Ñ.ð3Kä(Ì&'Þ9¬y0í% Qò3¹ãi®ãPðF†¥qå–qËÛAOz’ݸBß?ÝJ…süãXÂýÐ1 ˆ ßkwÔ´ýùŠòì·v­2ÌŒC¥°Wá¨Æ©ëÔD•Þ…Ž ˆS^ÊÖo´¢®Ö§îâôtÑÒ°¾ãÓ<&ÀŽMf}‹]æ5H8 >Šð[˜çî‚|ºÆ*QylO÷D:]²•Â$¬M£Áê BöÙS…ßAp¬ÔN^R­£{µ£÷ :ßuIÞð73ï…D=¦A’¤¤€ðC”vóÈ–A. œ*i%!-:;ElÅ~qÜdskÂxOÀ™ôo¥êþ1s†KdÖ ('\/®‘¨[¨H´"çhW-æbßZò4d²¨ç•SÝ1ߪuéN’¹ä=s7Ì“±O“…ÇÒûL$mÖ›ªßù¿;/¥jÆË.s n|ÝCNX «±€yñÞG_N<‹è¯Ì{iÓ¦L'cñ«g;ï…ùŸ¢›Íû7ÿ5kC)€Riˆ·&éo®¤»œ’¬ ÑsA•µ2ES ZA­2…Ñe—'’”²7[@x¾ŠÚ³OÝ¿êÛæK…¡Ý³Äð{T}f3Ø(C!EhÄÑ-³<™@‚®‚¬_4˜ak´ig Ý„ÖHŒø”•éÛ~H1¸ÄN¹aÎýjlE¢wÄÓ&Ø€š l@ó"ãjôr®Îìiÿ¸WwÀ÷š©™(H”ìrœÜ6¡Öc›ÿÁÅ2¾äA¡JÞ-˜Éyn"HE(G;‘EsnŽÔÛ»~YÈä*õ#¦÷ôò¯>3CÑþjJ ºÈnÊÊj6XÍýùëêš­›mଲÓô*BÎì‘¶×Ù‹eòÜY% LÓ")=f߽ъ¤(Hz ̼<ƒ4íÒ$j;Û<ñ$>áäÜþ^•÷8ÊVª¶(žž±ÓSðÀžsiž9žéúd‹t¬üÛÿãùtÀ~ ¶meÍ+—9(?†:¼“LÀgV*Ú+ޱ xî¶Z”•üYD(4Ä(VY3WšDÔt@på}´4°o,ïçÁ›аiùi`Q¸¹êuwF¥)èr{â›ý›Õ­K×T¹äÖô€{¨Œw¾ᤠª]tÀ┦LrŽÿ$7r´/q.ipƽÉ,÷UÜqÕcç4½W4?;÷Ö_\üè|õ"š‹˜1—,5™Ê-™Fæêd¡>°ôÚÔÁ< EÔÑP‚y¡ÛJ‹Ôº*­ßìYÞ]΄ò jq8‘7^U¹Óo¡}}f ÕÙC§4i×·ùÕžê;°¢×"®UÁMfóP•×ZH»k 6°Ž0²jºR&k¸³¼¤—²QL¨ƒž•`% <ë"…8’Òç¾ø0"µÿÞO: –G! e¦e>ØSŽUŒa’ÙÒ¾!/¡.Ãé®Å oŒm~Äl@?•iW(æêü’‹²¦ŸJÑÓíÓäo~U¹¦˜”øR*… ^ž·ö[+¦“Q7ÚŸ€ÕÎ%þ° B;ªR3ůWƒƒÎeѸæ÷µâÉt2ñYïœAfí»HB./à¶OÍ*¥«ç¥ö”$¨Ðª‚¼lt·nÔx:Ê*ߊ^VÊÄ\Çn¨hà€)ߑġÿî„6¥MÎ_|‚Ú®@Ç—ŸŠve¼ù³©Ÿö¥±u«fÒ‡z{û²&€ÌÓÚê„Ë€Á¤uì¢ެ”êÖ“£ä#³IËþ™3lE:¤¥U€ŒV%_ÆÎ[ãTÄ(£ž`‚c­±—8+¸‚ã¡Æ–Á/wn«º*Î*`k)ÿP¹²>Æ„ÜÕÓGðÀÏít”f¶:txS§pÅóínÆ$û¤¦5pÚzq)•]úÛg%îµøôƒ|¾ú¾}Ó:†mE+Ûæ9(Ú5aðÁåB¨sffîôºÇÓÖx~O ·Æ¿ë"Ô¼% ¶þ§á®˜‡€±‹bÌ$ wÿO€’x°ÚÚvç3 º¶^OZ¨•Yr¾É˜’áÑä Qøã—~Z;Ù¯Éh6ù:wn³o5­ «):±ÈY°°cªv–êUÞü\t;ßþòÕÃ[ñÞ0ô FoNÖ›Å&S—FØAÜ6%Œ)Cz#çq¯¡}DÖºL"RVä"y¯LjEð\=´Äçw™0à5þ\Kznim¯}st†êÚŸ÷{?Ûóàüw¦Ò# ’à%/NƒœÕSÀõS#¾IPsµ­Á¸·5¾vö-T¦ÄÑGP™Éƒá³é yG¬™—§%ü"53\œË3„2%÷Q…Å‘æ³„š‘ˆø{{ð¬È´ Úðâr–=ž²˜MÜ[-FU%¾QÐ ±9ÌÁ§ü{Zb‚¡ö-ûz+| 2ßT‚¥+ÐõÇoÔM‹”ô¿¦J^ÒÖæˆ!•3iÿËï«Å2îàÓÞÔûôÿ’©Íó\²^ŽÈø‹ÀÜaŸ(¸{éøM–Q¶½¥¶TïÏ#SîlQ÷7%¬XböýÖÄ^H¥ðûž«Ü¯«€9½¼-›Óë mØŽ|.O7y©‹)[¾Ñ øÏ–D¬ OùäèÿZ£­BýÈ <± /PXÃ|Sžï –†¼q]!Ér$èñãÉvF|÷ œscÒÌO{GèŠA,Ø1ÄôÌ1õ`Á)!ÎbÞX¾…š$îÁ%ND éEÎaà¢ZaÝ* µÍÒÍ{Ú{$ûuþÕÈ]½—:NÑu×%ÐpDF®–XÌæí8«Ò8¼ãûv2›'«NÉ€ô­ ¿à[ºíBƒâªàJ&Œ!=ÁÇx¥ÓèРèö0n¢ÙàÏÃV(ƒÃnž˜Ô`•qq_Ÿ”ù$©¤Ø‡ ß4º†;ƒÒ­ýK8Z§»»gäšAŽf%¾6‹LXN=ÕïÃcDmúŠìŒÇl«iðtö ¹Etøè#™7û-o?ñvÉ[U0îÌe­©’äµ€IBZ°+šXzÏZ/t¿å@Ìr‰êIõ…ó]$6©Ü©ç=‚m._þ)ýáé¡ßŠ ŸNú¶3|8íþ2A‚ñè&Í5–)l-£TÇGNÒO«ßˆзf&ˆžÆÔ Q—,×VP n¿c«›~g„ !ïC¼#ç:Â&Ÿnƒ§4únH÷ˆœ/h_28²Âl#ýz9‡Wy2˜V—\/³^—¿ºøÅåJ¡›ó´À™& œÁt´=uëŲÕcŸ¾eoÖö¨rßý€ .èÛ‚4­¶ðÁâÄ GŽÐ:&s‹Ü‚¼f¾xèï•eêºâЯÊóQõ$Ÿ¿¥]BèYÒ$×Süg}F‡·Á&Ȍɯ¯ozXetíZdïÂZ,,æˆW ßO¨ûÐl~1…!ß6wˆSTÓ5_?£Hþù‘•¹,Ç@nE¾ì(Æ‘,õ=˜°q  Ñ“7óªOT¼¼> Û2Hþš]›#¿h,Æ™Oý”¦ˆr©°!ޤ€JÖgÌÑß\xaí>›ŽŒPã¾üDG¼‚»½ æ7ý“GÉX~#WdÖ¡ù/C/u+E°ÜtÊ‚eèÝ£è×ÊáU,ùXêy’…\l ÚpŠm¨Ü3W-Ä­ß­¶) àÎvtã’;b6À:2ض¬ƒWµc]^>k{ôW¬k‹ñ„@i±ÎìƒÑs.æm¡•Å€šÓ¡ªðlÃx›ÁÜ|Ó`!Ð-à¿°Ñx/ 4ìE‘)§93°«è’ë©!#7ª¤ä÷l=àV<éNÙåla”¬F ]¶§LãMââGÐM¡—)œ9˜ÏæJ­áDSƒ“Yzh¶Úp˜Æ¾@†Ïº–æse£ÎÕb~Òk£ñ¯ýÖ[¯æðŽ\nÍ]ÇÞdD¸hJÚ%¨•׈âñEÑYBáíi°mƒÎl—DÊ´ ¹Q&òÛ… æõ¾]Q!¾Ü›Wwœ‰y"?å1í"¸Oi£…ö5góÒÿhtüûÖ™è°êVu›ö¢'AN‘ ~t¸Ñ¯›2´F8 ±ß)öG½®´íƒ3m‘¢mü›]9Ÿ—f€3·p¤‰ã´A*E »ÛÍ…É@w¤ÀNpƒˆ «<ÏòI¶ß=Š)fªÝ^xˆOáx öƒàFkcÚíîwM×B³š_[“3ÆèK«!U]“ÜÀ‹l¬”ñ,sj•Vsm©“Gá§‘'=›’)VÿÉ톥è»cZM6ôîÊê©©þ_M}h›¬ È×øûùE‡sŽìͯ—ÝÙ?½e‹œÞ³g³ÝþQÌðï/•6ÓÎð³û}¥ŽvN±$ÇM£\–¢¸‰ÜÛRëX64¸"NꦛÅ<&1X*”‹û²6,„)õM¯IEô˜'•*o[ë½ÌhÄ €#Àz@Üúsëf´´Í–s°DÌBÁêï-ìtýËÀÌl\þ¹]ű< l=yEå>Ëï…p',-¼´Æ«=ý{pw{«ŒõÕ hž½{¥­ÓÇ@ZG€QKæëÒ6O¡;š}ú˜›2Ø& ¦Û²ÕiéåœÑK,_¸¬ýý2Ý›>ÏZѸ sïØ^{µ¡léÂçìŽ8/{”v^k.#ûžßªEóx‹J} Š @œ.Féu2íÉøV¢¸ªÿ‰*í£ÀÊfšM)Äc|tf wôçP)BÆJÕÚv ë;f‘HK7˜¶­ Ń!`,ÇQØ{w X|hÍÝo>ϦcˆŒ €7°ä)y“y…Z´¾cÌjpÃÊêìÖÅZ¯N ˜ˆKŽ`Ýî/¯‚j5ø–x­¿«Cà3¬ s±F­öÂ^l“Q¸ËÝá€Î>¹l›èª‡í)B†8 8áxßÐ!7m½¡Nâ“—UU^ï¢^íµÞpKŽœÅí× ¹4Û¾¨¤c`Uƒ.Yñª‚ëd–~ü®PÂdÍßѽ蕱?ucÐtäYA2è k•ØÌVÁîHK¬ÑÀ] Fö^g†ád®"¹onµ¦øÏzhc¥ÕÓ1™ž¿ã¬¢MzQ&”W¹yuxæ [j²ï=å™&1©{q1Ù’ðJônOBeà™À¼óÕ“3–àû6¨mß[íÚÃoCT”Бw®Mb|,d£Š>™ W‡v¶§WÚäÛv×m²³A~×Ñ®©VÈÞ,éT”ˆ¾ò4Ã>àãzéÙä8ß9ßÇ„k >m‘t»æùW[,ÇI¶¾‹"ÃÖûzdŸƒœéQqá ôLúL‡†—ÀdøüÕ‡^,É´›—#ÈhÿFa¨á꘠ʷ{¬ß¥/7ª*ªÔÊçëvÃý/8ž¤?/µWö˜ðŒS"q÷P1¯íŸÓ£S8¸½vqôA¶”øbœ}¡¹:(à€Ï5t±M U‹pìAÖÿøA‡+ä#ª?™O¤ƒeOíLp°ômÞ —Á‡óáó€¶Â”³±P¬_¶k9c¼2 }þƶïx[ifÐ8Ÿù~èLHð*÷ÕËÌZ#ðüÆ%É:P œý£²þR1+RI>„ÅOrµ*q¯Éô¨mg[Ääá,ëÛç…š\ðqÞ†S>ý9ÍÀu)@¯ÞÒÅþ¢r/Äb’ÿ2~»Ÿƒ!æýÌ£s·¹ƒêan*`°Æ¯ 73"Î8ô²ŸbIŽEk·œû§e#Q±ÅÚÌ»ªC[ë0çû“ڜپ6¯9•o‹œÐÚñž~´Å7Lj!ÒµKÖ¡BÒûï$ H zVq¹–¤'âs€úY†w:|%hŒ_†žd§‘ˆgRH°NȃA‘ÇËtû`DªpäTcN9¨à±SÀEc  su­³DZÜP"Z(½R‹MQ%y{P»V4JáŽ[š&Êh6Š1ö©!_8ÃÙj°¨ßËýºGÒ˜‹C†ä%ÃJ0T«Ô0ºÐ~w@ÄBª9yƒt3y¸}ÖŠ¹'ùz> ıä2W§>›'5íH¹yM_æ&h u{¾ˆ¾ ù¼œá:Fq¼1íÚÇ$Îmøø®ñP`õŸüÞ‰åwäñ. Ó?ùL—7¶¾f] ¸HqÌ´S #e¹$W•¸vЉ~TåqˆË²'­Ÿ(ov™¥S‘iÉC}Ô1ö–¡nÞ±þ6mkÊrZëý09»‹3}Ú>ëž5ï‚Y•äÌl5–—q)ÜìZ²”¶oºbÞ„‰¿g®`Òì•ÌžÕÇž‘®€ø¤û:É`kõh÷Ä0ƒèß_c÷Ťaó‹jšmØ@MÍϦÐÀ¿] ä&¤Eý©ˆÔºü:¯ñ\„*ß ·¾O>ÿÊ 7”W¡œ~ ì‰¨ŠHôÓȽžº?ýIáµ¾8[üsky ›’¯IÏQK.¨“Rb3šÓKFž] nG_ŠíT–[ïd2§XçH¥–íÑîg¼ÝBß$”.ñkÑãW^ijG¹Ö¢]"~Ó$ëÒ22¢Ä`ŒgÕ #ÜÆxUÌEÎ<™Åý%°tAëâÕèFo'Ë·¯·ÖT 0·ÃjhyKÄCÜSù¹ƒ•]xÜæ"—ß›JJ1V«õ¥PºŽ2˜ÙoË.-¯e–òîî‹»º[*@¦À©M›«7H+ÕKïÀ<îåR6:ä|õ%6Ƽ© ›Ÿ¬1÷=ßK ’n £)RºÂéÉK~Àž ;ŠÂNUúH¸î¥Gße Î*(©â% Çl¥HÓ\*´û‡YQØgEî'%QRŸ±!BÞ'XÔ‚èò N®4€Q$ûÒàW8dùÕOŠ£xÞf1¾Tõ}ˆ¾ŽÂªÊ¼+Ó7wu¥UH賆¼iÙÛä£ îe\³Gìø¤¢Ø6wX!`´½`MØ:¨§¶Ü,§ñÝ@ïౚz«T©ýi¸jŽ™æŠFµÊÅÑ’4²ãaåÈ#¨Xv"©b«åXÎ3§¿‹Hâ8ýN$û 1¹–{hÎxͦ 3[ N9‘ŸtÜè^²D Ç`@ùo_ûY1-¶0RFgzJKö4”Yæ\ŠÅ••î?§=s¦å}(w=-ø›emÒñÿQwGºœ #ö÷GîˆZ¡ö›ØÐ(×fö¶¤ê\³0²ür,8WÖ*VQí-xçuÄJé ð›;ã—†Ô²û¦Ì=ö0tr`ÄAÕãEùl¨"VF+—»Î:òçÅÀÇt¡4 R&_Y+þë´Ï´Ï#ß³‚†cœââ‡?9úÎ-)ÖnQ¹œðdJ®‘®Í~O‹×xÿÎìr9m1¸Ðm%ñ¾HºkV3lNÃÐjq¯›ò~"ª7•¨ýÐX2‰Û0/ýh „Ìt0&…F±˜^Bì+RëÕ·gQR1˜!Cq+±Î-òB‚*^ ÔeIRàyÚ“ËE×Dw„ ŽDOâó ñòè{ùfDrËȸ‹5XÞâd´”¶‘\o=µŸãÐïm6€Fµ³¹ˆçWÝàx>ß«=N÷!³ùТ¼÷è<ù } ³çU\šĘ¢%P‚¢Ì~§Y^çÉA×M /Í¥fËg†H£8)N¢î_ÌRlTMÍNÓ8Ù*ÆCàƒiÝxò¦¿1O w?~d]ºs@Oâ.Mýz°°Ø”µãp͘4绋UÚÝ›ÀEV–§3פ5CXçñ³úÏ-…Ôh5e´ ;h”pmŽþåAØ3‡DÜBÜx/ÞFjp>•AY´©þo´üܓеø!-COÑÒ|´R4h' àŒ¢Ë¶ÃóHŽ9œúO×G¦:LÖFûû¢–½»èŒ®î™œ;3º„OLo‡Où£SZ¦™µ†šMÆ*aOs”~T #Ý%åüáO4­œ•õÁjZõÝOÖµI¹ Ð0©ÞSœ00Æú÷ŠÃÓVàh#=ǧ¥0¾"&Ùïï=I+Ò&J뜌Ü ÄI‘›ø  ÅFŽÉ÷ïm‘M"oé‹mQ¤Vˆ$Äb4ƒ¬ÐVAÚ¿× ·®p°%¸&= $ae^åaÍL_.Ë]Ây#â¢/†9RB+ØTôfjc{³%óæ6‡ñùL-2+Ï#µˆÓêÀK°b›AõAÛè xøÿ­bHq…Äß%$Uû‚®_ÒŸ1&ù@÷?x¿ç c ™„Íq>¿žàPUÉÚêÕ)+ÊN‘h³ùj¬tl¦ÈÝÃa˜pùRï½±ºçG³…TsÀ)°"Yƒ‡BSàw“Í<öâu²6ÜüÔ´Çp5yÞ©®÷ç=tÑ’Ní d™ÎÇ·›ÀüdÏ©,.RZ^•Ž„¬žÕ¯ÿÎþ%oûbVDA,ìBOÚ‘gµóâÖU>·?Ëc˜/Õ¤°MâGðâ§Ô‘¼/ú Øôe¿ÌƺüÑ63‡’À>ÊZC š›©ñ Oò¡oÇ+÷kWÐñ.W™>Úº[Yž5§„²všº)'KëTŒLÔU ¶U×FšEݲÒuwN˜­PB¼ô®9gþ™:¿qÿ_zÒÆ‹l´»øÕ }@¹È›‚²T5'RÕëz<”p,€‰ Õ†Z:*š”dæ%’à­1B Ç” øãT{eKƒ‹Xg´µï_hQš’Å8{ËÞÂ糿S/p8~ SÁ»ø¢:Ü—ôÍÇ8áܾÄ_à‡ÆÎèE>à»îõŠð%“#›¯Ç(ÌÖ=ìœ0?ÏŒùó㎕û^¢Qh£=t]üùTË ©º]é¿vÿ]ü„»³ƒzÛÆ?“e™ÍëtKþ#Ç8—é*`~ÐT2ñ½õks_Ÿ±>¸RªB=²þ>®½¼³B¯$36é¨' ¢Tݣ˲}o-äæ”ÍB¨"çþ£,g77®Ô?ˆD .Ý §N´;|Ö.Ãðå1³š:×,Ï#’Ù*5á…´ylK¦Õ7à2.)cq9ìdžÃã}68H’óW˥˓$Ç@‹ß?Ž9Ìþ9ÝÒ2{ïn‰©ÓÍH£ö>nì¶éŠ. sÉg¥¨BÎÙô0—V%¿ÓëaZ…°fEìÜ.Cë’¿¨:+DíÞÙu¿ÉêÞ”{boŠŸ]k÷3ÔÔ§WÀ`«båD¹¬MÍæN|´åLGLÑ†Ì ±±žÄËJ:€YX4_éÿ ›hbÛ+g"òjÁ<‰‡¸A!"›õѵ€øû|„PC’z›4;ÕØ•pGŒ¢^Vm†øË›•·@šæ©U‚ŶìVãa¸íÔ(Ìw 1Ëò£"oW§šÿû¥rÁ´³Ó½ €¾] FÀQm‰Uƒ°MIè è^qÅ9Âͪ ©ΖÛæd¢åC¿%`|Óåу‡=NÈ!P „w>µÔüIèt#‚#/:Ônlc 3©íç[ Ú š— à …A}g·-©é^œpRN6ã(‹SL?1\0õw–:å€?éBï»èQ&óŸ¡ö€Ô& à¦[ r´6½8·Ï¨G n>¸||`Ëv.I ’OžÅW °7ƒ"AZÜ®äiÀÞ p¤x\á­ÈÊŠ´zHqd8¬ÔîwõÂäÅÌ 4†Úú )þÇâIÜC(FìT rÉîºËúªªÅßAê…šÑEϪ8qN~¡ÚÞì2?8U*y&E>´&è¢Î‚€ Óp”ÌY f¶é¥âQÀ…CêfáøÕXä2Òç5FÙ$©Äþ•Ôï{?žIÜAO8gœKÖ_Œ”@m2Gí¢ÿš*{Îíl†$Êba+£Å,oóoÉq‰Ôà eÍñ¬~g!W"Òl$ûE›ŒŽö»C˜»Å¼ìƒ¡ èx/5Y~ ¼î%úƒ›ÊÛç(1!ŽËÐL«Á$B€ý Á¹?Š—]OÄ€:ÐA“{–e6C*YØNáQold‡’ÄPv•[DɵR‘ÄÅÐÈý°†+®+ðMÞòjW×Tn6-%Û“åçÎðúÖw¤ÝqÚeò¦ZfëgöÚÄ^ö´±Õ¤€GœÎtkëɽ$½¶¸ù{‰éíäa£q–{ &tFZbWÓ}zm=”ìôJÉx–Ô£zÏC4m%äÎÇvbÆ¢xÍŠ’W¡‹øÂÄCÑæ®å¯ITN`õLÐ׊äöÆzhirj.̓²´ãÑEÐiORi{‘G»Æ¯÷¤?o6Y4(±‰"ƒMí"®yÚ”tÀä«£ãl:eÕ¿ËS£ƒâe ™ÛF ÆoTËtÃwpA)ö—ÓŸS5Ý;ˆ¹; "™îe û,rЀÏ,ñ ´žÏ£×8ãüç„ÓƒoFEÜÓ_IL9[¡êäôo¯ý0Ÿ)ð$x{{GÊ#£TäKÏ eÙ©&{±_×ÈUÓš‡GÔÈùÙ’2bŸÛi8ñ.Zr.lU„OœÐøòÖÑV.ÏAk ÉÕ–É®¤"»­î‘Œä÷¼u)ÑŒIª ¼~¡u‘ƒÐÕ¸Bð0Áãûd²¡-T˜”È¡Q?ø«™¶¶l3Þd¹ú•^VÇêatJûÂ÷±Èß©÷¿}C&}õäD7bŽoºÅ¡ŠJ'`¬ôw‡êVú§-¬¶S¥¨¢þ‘ÕTJj*0 ÈH™p“•‹:Ï´ÖO}&\ò=îEê brOKË]\(+¥A‚XÒ™Û?xމ´ ¦eIqïHÙ²ð þCcºŒ¯»}…¤[~$‡1kà)M·+‚\~ï{±ä‹Ø­;´]5"â£xA%-ae/²©ÙÛloÚºý³‰Ê™cÆ<]Þ,\tŒÖ[à4§k®3ç˜çt+êó„­RB¹9ŒTY¦Óìô%:¦‰7Ö˜K%‹Ÿë±U‡,KÕAöÆøMøèÑóõ’åõ]¼mZgêšµ¿T•{ {ññ½SUYR)¢œuüªš©÷³(Î7šxÓa.%"œ<"NhFT§xŸXÕ¶Z µx$SÁ™éGüDÙú °Ç”‡DФ#+~­ÒðìNcÈQ1£T½ø½ïšÚýä"™IŽHä.W‰çnòDzU×/óŠèËDªLê€>¹û…¶ìÍ1DZbž.©…¢j.L²6‚6ý…b]³‹ šx/„ŠŒJ;T£ÑÀ.Ï1öÿ¦£þ¥ƒT« ”^’ƒùUkªÖ‡ƒÑ+tÚµ1Þ´ËऑTGEJ4n²_Œ1GÁ[Ç.¹Ž¸§ò‘aØ|üæ]láªZy©µ.³ ñÑF•nCÌP1z5§(xó¾žÊ•‚Ξ‹m${Xx2¯þK…ûá1Ôµ£ú?TÉNâD”ÅÉ„2ßrê7fr(‚ßzÿ™}ls=¢ Å‹*gÔ¢WEhÝàs¯ \K©yÃãÒßoø—s^>­1 LV4+ù³‚;wÎ}a¿$3 ùóê:Bž¸ð/;ÈØ†G´ä÷kóÌIDq&K`/¡¡£Ç$b0¯G†„Ú %/Éœ½,: ¦ÓÄ¥V–ŒU€sÖ’ôpö™®Swh?"‘ÎÊ—øƒíh·E ªŸ€A‘&.Ͱ¦"é5åɲ·{M³Ø¥mà·LLÛÚ*®–ú·VéˆU‰A•¹„àî†ÏP—ù—W™¼ÎVÙæJbåÓvUvÀœº™n}Ú¥¼WÇ3í4¨Œq¹ÂÒ§l úïÿ¨¢ˆfŽŠ*ÍiÀ5TßcÙŸUEÒÔŠ6J¸ÑÜà—¹Ûµ ^HQÍÇVŠh‚Óª:ø•ÚÝ‘Iο“’û<³,†÷×Ó½™:rKm©÷ï:噉:©ŽÓ…¸D  ­QHR4ÌŽöÍÖRéHAÈà:AA‘‡ÿËcg e­Ò“ K fªÚÏŽ²6Ë4½LújjC„÷‘7¥æ.w&Üãm|ôdÂC“‚_÷<]ðĹáÛhy_[Š_ÑÖZE—Ñf)œÉ1ö 'Ãkõ-r¬«ª´jÆØ¹w\Ð%Ò›ë”A¼’˜á(™ûœ1¼Ž|Hú7èq… ÿO 5÷S4')Ž€pXy4Ñ陵…™炽*«G}­IȨÖÏ7g˜Ílrš×6dàŠa·ÉLXÛix séûrk‘j¸ÕÓv¡X‡©s޳%—Ö-îñ)yh+€:ÙÁÌ–`ò=¦_¦{.sõ¥ M… kF× YÇ­©¦ŽFZ¢ü~„Zr·’¯9¾ ŸfΚ«§]´ôßúÌâ`vK‹)#ü¾„2°Ę0ø-G†;Û™¢à%ñÉÜãïÝZY„œ 35Ð:®‰êÏ{aŠFM¸€ ; ¥0¤yb[® n´F…ôÇM¹l%ض¾Â)æn v¹ô×<ÎÌBUÂÞZaò¨ù‡UL@™9»é3T´YKöƒ‘ÜÕ°¿Ý–¦qåÕî}ûÐy-Õ̪^f´ u¥®5ŠÓ?DN{€ÎŒyyNˆ8ö{i{°²™µ ȃ´¤1Yª h-sgªëX—¨£>.AúMv£ýÊÌxÀH&æm_(ÁiÙã¼ ¥ò!àïòŒ©ÙaBƒìUðmQ†µE¬”ƒÒ®ŸGyâ;cŠ *Ù¤P¶sþ QæRw ¢üê‘Ò׎%¬˜ç\ÏžÓãÿš'ý“p€h±¬<ãQkG슓YPƒÔîéº'Ã.µ;5ÓdsÀÕÙ¾1㊋ÆEG) ºø=º(y2þ¸·&Xjð1çú`b„Ρ„šE{Š K íˆ$ÒªªÆQVqÖb€9=•¡’¿YÇæV¹|n¼¶c†ÆÆbµß"rØe**Ï™)Ç7Êi¬p…‘…ALŶŠì|f&ù9 Ÿ¸> ¡›èFì   ®>L,ËÑc¦ÉÊ<S¦?Ùó _ÿÎ…W;QÙUÜg_*.ééD™ž LjÑL:’Zk›qè¢<Ú6ê.!O-ì"Tz,Ú2òCE.¥ÌU‚<Ê&r<¶î¨¥–m<ˆª‘Jd†±æx³‹•Ï4À[ä¼2Rí ”Z4©eƱWàÃa­2@–¥u!m` Ë*Ü>ÒËþêÔ¨ùJÜV«ŠeúDËä¹Ã'~½/lúeDÐõ|T%Ÿ+᪷oNfUèOú¿¿¤Ò©1<ÁÅy;ÙßAо˜‰þÍGrྲྀކ´ôwN©—¨óR€ˆÙ‰œr#@6–«¹›itNÓ˜îˆòm4\s~7[Ÿü² l'¸Fd¶Ú°x¼f0µE§nœeñ‰*e†9’e°²éTjôKùl±EFËDé~çã~ îñÑUEÐØ™9M;ð—4¼àyÆ5ï®njÔÏÚWõ§6æ X^V{@ ›°“Lꪾ|CÿãŠ8pƒ¸ÁŽ{ã6žõè ›k ‘ØÁ²me V'S¶ÃoÄVÖîA¿MY$'tU~}θGÊùŠ©ŸFŠûe<ø…î—uB?æˆÝB9Ý3Ó_U‰jÙp»ûrá ëo|³"ž†LJcÁ+Wœá¢­ò½ØkÇx1JS8+kùð:“¾½¡< OƒQ•¾H̾mRF-»ÕNC]Ç¿ÈüuG"?æO:‘I%\Ù­ËÌjÿØ‚¤Ë–­4‰ÿq÷»µI›6F'Xn[Kôù42™€å8{>uA¿EìorÈÅ‘¿~„}êÑX‰²Uíú«¤æh]¥­¯V±jC“™–J*í£a…‚^«< žÇ€È³bðÀxí8*mÕr!ê£*‡ôÔóß‘¸9wçÁq ‡üQwÝK•nH5bظ³i,Ÿ”ûeð[ƒ± Ëç2FÕ:NxH¸„ËÆGÀ~çÈ­î5×u® ݵ‰îø—Ñ3Ro¸FZ…NÈ“Me}ꯘwP Fú†Ü¼«©GÄ}|`rÝýèØ¼x'ÞÑ–Œ#ŠÆȘ–s 0®Êà¸$Ç´jNÆY‚PžçàÛ¾·ãñ§DßHQõ,DüK#DB}Û’Åi:wä ¸ßÅ| ‰H}o0¸ýplל“¶,õ>ËXCl¤¯m@Þž´àfÝAºŠ1¤7æÄ'š‚êØè>½¯RzAe•úIk\:!¼›°J =˜ÁãÎ÷ò‹üY^H¨=™wfh„#}h PJ‰‹ÒŸ‘ä9-Ø($RœÙz­L¶¿ J*Y)ŠŽ¶!‚¿d–t^4V™xÝ1ðL—Ô=çC™ÔX™}z>Py ¯ùp3>ÜlT6­ÝYýŠgD®3lÜ!wõ2œ|vù笇5Ç4üÖJ=^| §Õ—íšìr3Ùµr''|«ŸoæÜ×ýþÆ5ô!›ï4²ÿì¦öÑšLôªî_~ñkñré¯ß~5ÉŠ Ó"Þ˜XÖ§\-sØïKC½·ï«A°#eëó|¢¶Ö!?^óòŸðJÏ ¥ÏÓ¾¡ÒÄ"Ú~îß Z¯0Hn—áy¡(¸Ñ ÍêÑeÀ¬Ê@¹@E®^‹F«ܶA>K&Û ›l@¥-{†‚&ç×¢¦Ÿ7º5@» ¾kZ IÂÎ sœ)nd­<2&Os°ðO„ÆÈªÎz¸Æî‰Q›Õg¾È)ùj„yWè7³èÙ3¶ýžŠk«R»Õ–Ȉ,©p}ýÄRW³¯rgÙ¡¤ô`àÙ-®X!÷ʼnÄb7—béxþÓÙ°ç+.Æ"ÑE˜÷ÿè²õQ³óæU?OÏ7xcÂù(<Ý‹ UÄÔܤÉÉ£XQô–tô!±ÐAA¯eÉïÔ4„ñÝ:/ØhO[_¥[3ÕÕ ºÆ‡Ë<¸Ü¼·N/º6ö¤Ñ’5Z-AЩɧà:B·c±äÁ.ì©/)ðа'ÙúXL'Zw† MkíÂQ\.¯…zí•JÁN(Ôhkž÷7# åÛ• ³Ó{ÔY2W0 ™p#j*BTFåcß3Û;oãN âÞž÷Lh §$“GÄb±æÒk‹UŒöm 4ÅØaÜßq;žz‡0d@×àXÞm–& i=ôÈ­B ±xý³^@{2æ1éi™Ñ_Ÿ,bNG˜ŸÍäÆzc>©õ•²S’:ËjKÿáÄZæŠb\ÅsBZR*'÷þàaMŒåýùš¤ê𿪶Y‡È5þ??qî!S£Ñø‰Î«ÁÇ^p2Âö“Å£¨HÑ9€ã ‰¦V4 1zʸ;˜z`Ø2Áá¤t3° zq+¦¼hßø”¬ê¤l¹æÉ8t;P[ƒ¢áyîCçN’¥Š¯ãØ«o‡@àj,~K\XÒÿô›>i7:Œ‹ò ]:0eèeA²4I-ÆÔ´{ Òk?ŠróAÎ|ð=ë™6~4€0Ê|gQÛÃnx}¨ÈÀ“)lG‹è×ÄÂA›£T»Õèá&[+w„¢RŇã—ƒéX®Èõö¬øÂÉc‹"vÔ¿Ž^J¿Ç=ésë7uQ>]qd%/J•ƒVáà?x:ª}hÈSqˆ—E ’^Ô\YbLJƒ û~5ÃA1}1ÆÖ@e'Ù¶¾›´[Ð3t›Ú¶£¢ê71¥ MP-“0K8ÿ¦9FK<®‘pO&§t‘hïKÙe‰i¤] ä(Hõô|Ç1Ñe<*b°ƒ†û ã –æâÃs ¶f…ƒ®¢xËâµD+6Óví“ÁîÞ…Üüp‚d€ÜásI²d¡Y >yž,S{2vÉÓ%éñºþL¨½]öªJ{Y–n¼„ð©Ì¬½C07‘æº5ºÕWÛkbòP°2Öa·”ÅUä(€l¹’kƒ{¶2¸Å–€êÄèò?þ ¶ñ„ë!4ȹò ª›X|š,µóm—a„„󺟄Á·÷z3àQ"›1Ázƒ Åw ®UÊã¸áºôâ- Q¿´„¶ØR‡4…Xý5ÝåÔ[ÌÔ`V›eAjÏù‹ÿÁ˜ UËÑTÎ ~ú•ô@YÈ\ŽZ°ÊqÁ?*ÇŒ?=ïØ k,þßÜ“é¨þ¾Œõz}«í¯‚†SmñeÆiº7J¥&ünW[û“‹Xa*\iÆlŒ¶^s!ƒøyÅ.äÐ4˜Ô…$Áι"ºÀ˺0é¤),DJ×VôŽ[ûÐÿQÛïa«]¾U“ «ã̲–ƒ’Q½“ÂÜÔž¢­K•ê¾dæ‚£UïÃOl-BFºs’$r/-é¤ê‰ˆÐ“úÄ`!;ƒ19¥äëêN_á­ Nn™îwÈp1Ø‹jXx¢Nƒ»žz]éæãî•)½ÙP;ìõ‘ó£AšQn®)lóÔ—×;?—cs`;¬~q?਑±¹³wLe1‘Ì­)ET`ìLÍéÀ’ ù³ ]#"ÅvìRQ,¢Ä•’\”à ë«YpŽ¢ž¢ 7‰ry%¶ÅÙs›~ ³Þs gä'„£2*Ä£¦„ñàj>¢…ËúsÀÓÕà{‡{p‹N#Ö 3 ©r½Tè à3/I³ÇUÇ[õ:3¿cͧöíàÝö$ê$ÒÀ„kØ*Bò5gHtH<$¾}‹´;+IÚn޲‡,P¦â}jj㔺´Â6-/ÚsïQ³«·Aî’ž\Ð@zSyÙú¸Ptk×Á@Q?nûtýëä%¨ZõÂ×5[z³€§Äâ~6˜¥Δzùóu¿ý.U;1âƒÕÌOŒÍ*Žq_t(h4÷)©MQÙD›üÄ–Î'v9'@6Ý:s¹÷D%ÈEõZëäÄÈÒ®³›d è¿èÌøOÑÌ ÚŒ”<«ì;ÐyxÛ@Š#€8WÑ§Ž’± Ø4ì'…úø|Špy¡.Ýf>»óVà¸á-ŪPŸSg;t%Ô o'y<`¡tGî³¥æºz}©V%Ëxç0ïJLŽ%0ìs0ø{däc3âtæ½¼"G¨>i/[ÝAœB¿Ì…hfÎá8ˬn;‰kž‰*éÍþü½% p ôõ¸ÈPÂ]óþPFŸm:¸Ä-Ä1FåÕ ,\ø½/gP- *,x‰¦øt}qµ›LûQçYÜå¹UÓ¦£Ù&—GLÃHæWσ僽ÏZí×Á%ê c"CÖÉ„éU/P™ÿ…ðôÒï*ƒ@7ìÂ#y3_ܸ§qâB5ßYÖAhØ/ß\ÛéI7£¡o[õÞ]⃰\‘¬iÁw1yוÖ´‚ãN?,9þÞA×]æ²ÛÙ¢:p&è¿ÈÛ@`¸öØGð¬ŽV0¬é§:¾£wè]Ã’¢¿ž‡>DÍ(!ŽJ6ÕÎ@Á‹Ó£æmNÂécmQi€¼¬RÝÏÂIµW’ïºÉaÖ.UÃs[h(àÈ'ÖrùEùÓFk²¿d&#ÑoÁb¥Ù˜P”Ϭ$ ½L5ÕŠsºŽ‹úU`äôZñ‘áo;’]A‰œƒbŸ*º§çÎ)QB?Fm­/1Ø4B/sÃíAN‰º‰e¹>Pþ}”»—Š82²Øo:^—láµrž3f„ám´ì‹O2;šûï$r-´`ópÚ¾’¹Àÿzœm‡ªôã#´Æ š,®9_ÿ®böð„Zð7Ì)F˜U¹£„.¿Õͪ_@ÐèA›t¨¤zñ÷ÃшͶ‘ìDÐ<»÷KPqÄ”Ky>Fôn”¸xì Ò\Éùï4È0Ð`zðU:ÝfçTȱgpEù624ñ±~.–3TpªÔ0“Z€ÌžÈNXù ¤!{¥‰fþÛÿï < kf.NýøÐ'aìø,Ç~¤Ï÷ƒØ bhvS@ R¡|G±6âD„S­cÿJ/Ì ôGãòf Ås+M„H6{ÍxÒ<½eé¬jSu£JÁŽDî4OÅ ºrYzTOCHøÙalÍ,è´ø`NØ#l2.Å˽â>fqŠ!Ñc2Ï+Ý>ì¾@)UÓ©éÆñ0{û— xÔNlÐo”õcs¨Á'ËÉ¢ÞâÉXzÁ5¹•Z ϤÍïYcÕÒ—(ryPÕEÄÛ˜yZ‚óîR“˜'m`Þ(KÁÔ.ìyó¶u(Ñu®r29–[„Õd3EÄÔ•S„ÔÊý%`¡ LI2óåEž0´R À rùâ±NfwÀ E>ƒ°_c†è¬È*/)‡[¿ÑFH®2̵œi4ßaœ‚™€ÓjÚÍÈ4ƒÏdà«ñ´“³‘¼}ËÚYµ¦"µIRR |Ñ5Zi;­Y¼—+‹ïF` IHûÔ¥-{bÌ& SÍ…¼ïcèµøä Þ£ÂuPÖ¦¹¹-…>ñ£|CÁel`NBÕS› Xe¥(C*}¶¤âËç2}½Éx™˜$,–éwvgþ8νâ¢ÐzNRŽsç.diÆÆf) ×Ì;²ëWŠ>¥tª uÛ;θ’r…ñK޳$ØÐ'ƒGÇÿ :š +Á }gë*ù𠌺Vi¡‹-#Û™úºÎmQ°B{VçDlI[äoö{k|'uâ³"l)È¡€í†Å&¢M­í ÖÎèËÃd;s4ö|5 ¡ñýK’f–ÈÉד‘ö˜@^( ÊjUˆÏwÉìjñ=SÙ¨þvßy«1RÏÙiøh1*ˆ‚ÃïkŒ³t‰î§¡Åç´ÍYݪ‰×à |ä‰N+~Óêɤ%ëk„,¶ˆs¸d›®—ÚÄ7»°§§©m€d  ú,h ýá°,‘x†ºª²Ãoüÿ„s^ÝΚ³ ÿˆí†©y-l¶®Œt˜'®Ÿ~FÐ÷ qÜ$ÃÈ4€K4q”À@í?„Ûi=\¥ÕÌc˜ÔæÆÑdYÄß…Û™ƒ÷ðAéÒ Å¹'Þ© 9$˜9Ê}šRíV±?úߥ§è˜HRMeïq(»ÑÅuæ)âReó)Õazï‚|ºÿŒ5›À.Nf6©Ú¡/Ö>#¯Ú…J_w\œ9çi]gÚlu À¾Ñqc¹ß ×ú3u±Ï_C6§÷¸ð?iúî*c¸ñNˆëÆ#d7ÆB¾Lj§Dï"T[ÿëŠp%ˆ{÷Îb#`7è#Ö)`0<¥»¬¹{„GìÀø¢¢Ó®|¦€ÃEwú:p§l²cCMåUYsþðÌ*+ô/ "R½5.AsºÃ1¼ÞØapW8§E%®"pëF^NÓµQì¢>ð[r)¬nî^!pòh:Hò°êðì„>úô&}¢ˆðPš“êc¸z÷híÎËöÔÖÚ/@páËäHhÄ|Æ'@¶bVQËm¸[éD9üª&1ÛAZÁœéQ‹)ÍXa Q£Â™}ûãôDô¢ ×‡4î¨û×=Yg›"™¿¹Î¨¿öoÈ^ÇÒJrNVþíì+fq‚šd ®ëÏ’g„Ê-á0E<«Ôï'Ov±Ó„ÁUì>‘O¨%žbSçݲ¢ ÂW“/p%O,)‚1Adâ.‰í…ÐÁ¤„‘¼Úÿc@©S‘:ǰ\ñè1gó;﾿9Þ(S÷)ûý30!ï—òmþÑâÖSîþ$‘Ø )Ïìd¯ò­–\ZÈÕCº˜Ã#×?û™ÙÉê^*®9sï-7ý²Ù×v(Éæ|2®ûÆ]¥Õ(‹cƒ‘Û}1žÕQm4—‘1Aµ8õÔæñUÔWCor¡„"#¾~‡õ!w:<Ïÿ|ê+©êɾ£-ïˆÂ1?`†] ÄZik»Ÿ¶° ®¼uógUi¶‘­Žà*\ÉÞ|Vè|LÞ5®™»À‡Ð¸ïh(pcCÊu¥ý !E~/ó¢py „&p¶iѱ©áÅLÙ¾B*02÷4Û‚cGEZâ§îÙæXL Pu=ç2ÑuÞ³'4àXA å*¦Cí^~n݃§ºˆ¿Ù°¶tâ¡Ç ®Z@2sÞ±£^{ƒ0iSílÞ{÷Îf-ôŠ–¢2Šeá÷fÈí—P¹bzB~ @øw£€ïý¹#†à–1Ì:~÷ò‡Ø™žÐ}b#?Ô`žHT9ÄyjMÐ$w4'ð‡Q#VWññ‡ùw¥pI¨ñó4< ÚR˜Ò{ÅLBœ+’”ÅÑ÷`ˆ•€÷øÝ¹]䑉:tVÚ”Ë]~§Cìõ?߃R0©@šóçoþs>XœtS0 r¬-`LÓ{¢ Tnæ«7Q~}ñ÷G¹›7PŸ^)õീEÃ5Õb$lݺûâCœÌ“`ôˆ"wm†´ÅkoîìèR`ΈS‘õIô̲éJýÑ„<7ÙV}œÁIkÂK¢pRŸ†_:Óàc·gçc.ôÑu°’–yŒn¬AD7².BCx‹¥ÿžQÍû:ËgŒLuÈØÕ›”õ¹··îêqeqpzáÎa€Ó®óK jˆoª ¾JèLå  ë” þ! …9ý`ÖÛ!F| ô·aîØšXʉËúÆÓu3T¯²qÙ½Â6ò³f ó–³ôüyf…Nz0#èÚEÝ䟂ù†%EZ.ð5 UZ1 /x Ì•Y ÅøèÎìóµä‘Æ4<Áǧë;Óùlš¡U­TY"¿”&£–=šÍ|·„ùÒŸZ’&¼uüg8Eت—–±s3:Ž~üIu˜ãjøÙ*«±óOÍ$‹Õ‚-ÏÌen¡£Ö$nÂÚ_ª¯¾Ðffï*\2OAwîBÝô\¥±ø“HYéâ n0ÇÙxÐ:ÉÓé{ûÃã1ÀnžªÅ{ž#?+bÌ.T‚r¸ðcû²•pÏ{ˆ+;zÇ—g5Ï”:ë«)Ñ =?cÔ²adC‚žÊñ/€Ã8±$–À¤Ñ~Qcõèøo¶9Í?ëo ¶GÍtÕÌa;ƒëOÊ€tšÞ%-ýýQ«Sz¼­!ÆšÆC¦Ë…PâétÀzž½³ËÎj;¸áG û D§Á ì ×±P!d…VŠqë„_«­ü„ïËNŒòüÃú˄ʡš‡HBoQþK–SxPÄä‚np3$~ÅÛ… ÃîÙë‡$ÿ1 ")úb½VÏqr|KB΋Ã(Õ«…¿Æ ݲ¾váÿ"AbWA\¶ƒ_¶£„m-]Äã ¢ï/tPDLtJâáMž‘ÛÏÝ#P¸f…´åñÆÏä»3 V#ù+²«ö(u!–ZÝt͸ƒáínäz¼LwÐCºöäEð•CçpüÈ[Qì–Ñç¼ÇM}˜ô¯KaÅ•‚€²ÇõªØÂÿR_®1Ð t·ÌÔHëL ­QYµò]ï? ™¼ö ò?³_È¢7 :ps Ì ÛÄ€†·Ob¨Êv§„ŠQrìÄ¿@+Nاÿåº ’go=^aÆâAê™8{&½rUÞ ¾VÔäkö/†q²5 ^‘³©P˜¾o³†®1„É'uáÐ}몤2ÛÿÇ_H´Žœ¥ ¡NvœKR ‚*s ³]T)Ýΰë¸r¥Òñso3Ð_Ï‘P‰Ýô.;¸´cª;zÛ/½ µÞ-H5Û ™pÈÈùŒ£+¼~³xÁŠ_MŽVP‰ÒIäAGx£¼y* åš4®B ¼ÓMûpÓ³ñˆ¹cá> gX齘s¨DŽ€&ù{y®$KŒyà6 ‚ƒû¾P0%†Ïò‹ÿär ó]ã¸Á®ï9ÊKüñ™>ìàrEšUts¢Xˆ?Z_äÜÉñŽÙIøã“šjcÔó3<{v¸D ÎBk—é«ëoˆ«žU~¢§8‚ˆCþDA·ô^îµü4ô7r`¢Â-VgíŸòóq9ЊSEÌ{_ý˜e[î‹«×%z«¶ ­ ¬ Ó ðdû”UÒæH5Ȥ¶d/ȸ>"«À¨4GþhêiQnqÅ‘ ì±—GÃH…šy©”¦îÐðÍ(¾ãé¹~î–‹ø¢Jd•a¡”î0ÎoHRä•lÚ1¦c²Ë£¹¹x”º¼p,Þqïf¯WÍ-éT “6“yæê”/žM¶g¥zUFí^²bW)Ì?Ÿ2}²X…ž´0gÓȵíïÛØ ÚO$†ÞÆg>`â êLõ>Püž6GËõ‡ŸÖb×\+ª)&–Â7‹¸¸Ñ’r$ûÓ|­|´óbYb d»5ß¹`õ^³´.Ô” pÄq–Ý©ÈIƒÖÎMWÚð°çQÒj[Ö\ß FFµlsÁöÿ˜ïl]ïC÷H”þ£&ÒÊÄ^TÏ:n§é:¯ðëíý[hÌ÷º‰¢ÃÎÆ¸ë?%«²½Êz ‘ÿk9h7õ7IWƒ5ÅPyyƒÜ.‰Bß_÷ÞÎr"8t\䳌¿õEl5Ê·Fce‹Fv&ãìn#ÎÛòÇn¸ñ‘"‚’ê kŠQã‰R «äÀˆD2‚á©…_úJòê½D½¼,œ÷¾±x,ä™úÛ´ÀÍ褎YU¬Ìx4¦ØêkÕQæ^÷8€çìÿø®u­[øF¶¹, ½ÿ>…“:imïòé¼€<€¦Ö½ë$¯›3Á³Xéïß¼ãdJ“ú)y›R»)øuöÜÍó<2k¡<õm²èK¦röt^c´| —6-U2=u§oé^bC©'G‚“¯ŽÚÇÖ:D³ß <ÝS¼Q'ÃVarvµe…á˾níú/Z -v:dsw-÷—†V=QÁm"¯›yyažä>È Ác‡Sµ›…Â-iûKd€-X° ÇÈ*ñ–+öéÚÕ‹h‘VBÅ£•ð6!èùÏ[ñÇUÚw‹ŠYi›Š$R?¸yÞâ5;¾B+ÉpˆRÛb*£ž«G­Fa ‰¾ ”f„™`b;M:Hâ°Š7ei{#qP$ÁJÛ&DäžB“ž.€ñ}2*%°NdEB³¼[ÿ‹ý« 5l³õħ¾ ¡–>áïÐÉ¢ÍàÆ«’ºä; /ý•-á¹é†Üƒd*¶ù~¶.ú ðÃ÷Œ§ÿËiÞ>zÎÞÄ™îqI¶Nn/œÍ Á¹³P豃¨x Ù6KëO·¤\»½ÑL\öÞ¬ #çm†tÆÒRk fÁh¹Q,¢)R¦,õ*wëzÇ$œçT÷М– ­ºÚ”Kÿ¥£Ÿ!+}t´) s5ËÅ@Órá–Á€$^FRm`ÙtÁ²ƒ™H#jW–:$«¸™úKÑ"Ë´ÏA/B§dÑÖ+ºdåþš\‘YìŲd?üO?é8=0ÑÙá)w@r€¢æ‹üuÕÁOš¾ŠþvÃñ34ÎÝfüçðw~>PÍDNWB†ÙW:݉‡xw;}ôc¥VnÆË™åg•+ˆk`¬Xo äœk²ÓËX¦º Å\M«!0LjFèˆîé3¡jÂ!¨‚!låU ®M<Œx÷\zpý>Jk…”‰gÖ7¸JÛÞg wX,ô´eaDè‘AÂl“íÐÚ·áž&;{nm1‡¸Zc6?:™íEf”éç&ºCÅ`ù'XUUÉÖˆ®«ÞÛð÷–kÍÅvߎ‹_Ç'©cˆ«…·àU: ý‡†¸¿@•vOÕŠ?¢~™›ó*ÄÊGlqhŠÔb›2õpŽ©YEv*.Ý7ùü˜““,) 7`@}ÑO#º¶-Mº6T,„Q%Ô†‡IïSÔ²v\[˜¥Ïé· ð¨Q‰\^l' ?K¶ë(R¾c}ådÔ0‹ýÕÏ+ΜV¿úáȰ°yc ¿à$«yfAõÛšô?_¿ŽC½®Ù±±ÈÓÞT‹%š¤IùZ6u»¼0΃¾å ‡jè)8å¶Lúv þ%¨úqæ-‘(\*éÇš@+I-[O‰žB@'E”^þLÖ/UŠ<6“ú¹¯¾eKÙ•³D–ï¹ ±š[CÝ‘¸µ&00ȯ¼z*L)-L# ™müMµi…HÿÜ¿C¼È*çËÛ4Õ}3>†ÁÂôѨߗÀ­2Œ¼8“Éz†§µŽF/•ØS;F'«íf¸åñ8b¨žÓþ¢ñPÔ²:x’;üKöò=û¦nð°<;HÆ" &Hˆÿæz„jQ}—?Üå•Ñm¼»Ý¨©¹Îo¦MjÅd&eÕ}ë–¯9TM½)’O­;Bçk; ÅÚÅó¬ÒïO±ìšnÇÖ Ù9ÁÝá×ÈÊïêñÝÒÂHðƒtîD”.I)8µKgcë·™ç…ñRðQþb›M!bUÀôÞ¥ ùF;WI…"þh»cöÚÒ¹Â~*ºP@°)2E[ZƹQsÍiZòŒ)!÷žÑv"r¤hÇвÒdyVB)øç´?½w<³pA†­ß¤èb“Eé)’ƒ- ýáå)Û”¡´Jdé<’íê­ÔÜ‘¥ëþÂ¥ÇÜ™3‹†h>x^ð48å¬ú.4Ì wÍ›/UÚtM¼ã”ûÚàæh¢Ê¤ØW¸ŽgE9ý‡$ï(< í÷€‡†3¡ÀµgK]]£ò VÝÃd`aÓ›q¹ƒÀ.„ †xö’jsñ¤ÕbðbÀ»õ¤pBæ¸è…:ôÝ:¡Cü‰õlôu âK\½¸†ü¾'nJ‘‡š?K¢cPæQñüŠúÍ.=5ÍÐ"ú}á€Á¤C€¸¤‡Ï7SEèuFÉt£Ñº7?²®ŸgaLWfŽzw: fg»QÛ÷ÇŽŠi•$T|àÃÚµzç6( yZæ<޳Ša$ÓâvÊ‘n„ê=v66ÁÞÙÿò«z˜!eVÜöDŽ3Èðå_…ÉøH”n]X™ìé¨Û9ä;ÑgYèøÊç™!‚ópI¹½ò6`«$ãWjñ¯C¬® ä•`m 1}Æsc7“öœÞ©7Zß7ÿæçÈíóçëð˜o‹¼öÇË¢$½HÛ3Œìš²Ñ5¦3{ñÎ{ÀÞѹàוaÿ*!¥­æf4rU äE¾cŽ7D²áJç›êŸlêí-þgmb >”0d#)ø¿­Ë¼/(p[AÏ̾>ügï•Ônï.Ó5ëšx¹#ÄÙ&tü'K6[6­À“*_9 4ÒúûÞf8äe]åE3‰a”Rfþi1È–LÜÕZq+!ì™slëLÓ–ŸKˆXmä.ü¤´(´OÃë%a•ˆúo*îUÞSÅ3EKP^z©ˆþÒ÷šÛÍÙé•ÛáÖ;Üyû ßô#TÛä¦ßsµ6%ùØ4a¡L´¸Úf°ÒKÄúuabðƒÆµ2a UwH>`ðrg¼Û÷)_åv/ÏDž½ØdR[4Úé¥4PI­W,O,’Ñ$l#^VåÑYÞîþYàMnAC€¤\à)Fñ¿oÄf„ðòü&{ªP=Tô“<Œ#6ÚÇÓsrä°¼Sl²ìó`a|NyG¼ù&0ÆÁ rÃð’º>Ñ&*~ôk¦S§‡¼ =Éñôp©þSíµÿMêµo¥”ÉË›Lý#_Ë¡¼ºƒµL¢ •d_ ºAÇøüe™œ¼Ò—žq§‰aÁÉ!dz¦W |yWÅ|œjs­¢ÅO—VKÙImNP:⥆†ÌÃÙ94®5ú'n­¯›e±9Ç“ßþÒÿ¶#º_'¥ è©Å®èÍ-l€µVyœèÍîàÿ£r)×ãÐðxÖ2éxé…9­ŒŠ‹Ê|µ˜ÞP’[QUÛ#$°ý•MÖÆpŸ˜!7ÌRâîU^£…6oªÊÜÙ>©/6l<=ÑÊ&à¶âmóäß—Lj.RfÓµJx/€èøÂS‡í[åoäÆ$Ô^*¤A]®iëœᙋÇÙ ú¾ù¡ÛëO$“úþ!G‚³"Mô…¸†¯eßÙ› ˜%×3à*¤¦iÕ­ù™(”b.a]q}ÅßU¡© Ë N†á?™ÕK!¹zbŸÜÃã<«dÙ)]ó¢3Ë»þtZ\1Ýd1XIˆ0 È4xJXÚF"P©H2 Q’ÉîÃP öÝÛrç ×®îw °M²€©>u~èÛ¶   ýÌvï¹y7±Ê-ºç?‘Ü ¶@:.¬ÝÈ'-Àå­TͼafP¤u ²Ó¼,ãX'&+¦¨m›`Ðm'þy—ÿm8²qŒR4äœfgeZÙ ]:üG6}üóÕ12;¾‘¥¬%ÛŠ ƾy¡–õ6{„½;¯®Jt+‘ì%߈‚t u•€K€J¨!ò˜ 3x7=^½Gtû;O'"DgþÇp³R ²wÏ|Ë,Ú6pB^.޲-¿wÂtgóøDHêyAû¿Éâ·®M4Àªˆ#é$!åü¶–0]ñÕ!Cê#}óZ¹>ª»1?œ¿˜4´ÛÇ YÍÔr””=`+f›ˆP<ýë––¨Úø*$´_^BÌb¥-„ òáwÜÌ„Ä):6R¡¾+ôgÍ.-Ã3$ 4Óù+£He¯´µ»óìZ¨É‚….™£ô’ÞÉØs‘3Gž)ïO‰®~M%;G£µ\‰t«1«$Ü<éç(EfÛú h¶uã›ÿ^w9.>eYê÷–ì5+Ú*×ò6`ôÀ…:»ßÂã¬6o¯0<ê<Ùõ^Ë×°ÿÁÑKþùrOzµq$ت°F¬S÷°KLÙ!ŸQÞð_a Ž ²m¬*íòãݺœ»lý0¹þ÷óf‚ó¥8ç}²!xp¡0·¢@èðÿÇ!¨`qN¾Ügõ…³}¦‘w•QÀîLáÁ{áX:ñ5µã–qŸìÌ×vq í\OMàÄÀ¥žÇaŸ„®—xª.A¯#Ø5ŒöÌ(AcÄþ:Û”â~÷,ƒ‰ž\ …6œs·‘rz‰Ö•ûŒMZÓ!x#qzVTuŸ1¢¼ÍB ¨oºâµM Ô½H=Ÿ{«AI.Óö†Ç2¾£ù’ëÈ­Q&s#ìÝSIƒÙƒE[­P¦U(n“Xbž~±rgÉ¥Œ'2®·Xd¯JÖ5Fæ(2*t!c¾S«…L5 ü¦%ßÜXú%YC:7»uþÏrTbMOÆ™¸ o`œšæBÜ+ˆƒf¶=6§É§ÁŠÅÕBó]. 2Ó°›2þ4Åû%jŸ‚ãhÊjþÚ³âø½“ÌVƒsFM‡˜%†½\±’uõÈ ‡½ErºÆ#¾Fû2 ð,衟êÅNçê<ª+?G©Þa/•iI[®æ8‰Deõ²Oè½\Ní&QsÑ¿VÒ‚!A—øˆÿr¸>d£öò\ÍÈÚ°ZóÜÞŠ`~Ü„˜äƒÛ4$$WJZË~©uµÿ]7.ËÀR¿=ùr´nƒ'‚µXØýü(ÂBœ$8U‘ A$> :u†x¿Ðê‚?NdǽT²wÙK]CÊ8WShýà{¶ÉŸqa»@óOvš»8@H¦Äx45d„v.=¤Þ#ýxÿjøuÈ|ñ‚}e¯ïT6ÖffŒÕ¸ 0/ë4µKÛæ­/ÛË”ƒqƒ—jü  ]FÑ̵Æ<úÎÃ+øŽm¶¶fàMÇàø¸ñÁÙ~ùjÔ÷F7è¹á·“èsEžd†tç!ã\—î¨ìâP `G` Ûm=PA˜oõ×ËcZ˜äí‡0ýX2ù³æÊ˜’ïùÊÉŒ~«)÷l„i_ÔG½3µAØÅ gBÓqšÞ‡êúî?żna eÁ`#”Ôá @ìçtØyå‘J~#ÄΨ:Ë­÷B(9bµVWKAÙ^<_ôÇ»B‰Q¿¨¤†#Õ¢iL¼jÛÇe§³9rÞ´CN®kˆÙ./Üü>‰Õis#O]¶\†Þ&GQIbÇ¥ÕñÙY <bã½®RIvÁyc]…·súüHÖçnÎiÕ¿#…”çâH³3r ”‡î äG+Ó¿®}Bº©›àÓ@×[-—j¯Nøw8¨„€¶í|QÕ[²-Û›XÙ×Ñ$3‡Sñ‰0a×fÔ9\nÖròßþƒè}iÇOÍ[°äFOý˜ö:{Nî,=Pfj¤íÁGÚ×ñøbAƒ [Q@á¸ŸÕæ˜ÊÚ¸šŽìŸzöPí“’»o›Òbs@ÏÕ‹^´ÞV2âC”Ñ`GnÒ=U‡Gõ?#9fjÉ––¾ÊäiX@æ êXׯ§J=+êW[xSf ¾ÝÝÑYAþo´¿æ ô"˜0 ÛDmñ×&öòz©îÔŠ½—À? #Ê\¨Ç,Dw³å\P•²ŠWˆoGžtÂvIï…ÌÞ^8U9¶]hðˆg{ø¼ü8̳§×îc+Ü=ŠÛ~S7›o˜Ñ.ë‘]j+wr<ä4vÿ‡×ÑÐX‹Ì2øñãÙs9MÀ•o'Jܤßv¶-rï‡s0”u_÷üU¬NV'š(qt\ë姘ŰÑÐ2÷´¼ ¡çx£­Ö…»§HAjË»uÕÑ®ïÞÅI ˜óÍ è'}’× JE;"iç¹`༃àÛÿ.“;Z¼Šëܨ`HÑè~¬¿åIí•Çl.7ð oõÌΕ9&v©ÑÏ.†/ÐxAGÊ.ÛvòÞ¦Rä³’óaÄ´bÃ6÷aEìoOœ×X®¦£™½~ë§hÔT]ù£&zÛÅ»u¡±•EsI¼{ØÏ·’k΢>8+ì—^²·ËhæúÜâ÷̺4åÿüç5_´èß(ëoÉdëƒC žy™ªu¢¯_pþ¼JgN‡ë1ÇD'þ—ŠãW$ÂZ<† wÑ—µ§î’"£ë)û›¨žŠSv1¼äd•a»þ @*6JõŸ&Ä™é)¸uÆè¾x ìR£Ñ^B"íSDù±¬äshQx˜á/㮬,l WöG@PçÝ1Wˤâ̆Lßz,¯ï¹£Så•ÿn¤4eÿfYª bŸÑpti¼s"­ZܲÄ}jƒ˜äñ9)TÜ–~VxŒ+Ûîþº£Œ’'ZeriµKBæ>¿-±¥’ø_\^æøÙu‰é²áò'`jò^½ÒÈŒ4V7íR•Kgv¯éª3²rãÊ„«¦oô¼ É Ž¸èhí"5x…¬Þº{q.¹‚5Óbm\rOOdV¨ ÂYõ”ô™¿ “úò ^ãW÷I$hT°kX»¶ýˆ`?¨ÄÄŸúë¡á²íLo¹•­(¦vëô^kÌÆ¾_šc—˜uáò¦=ÏbL‚mÀwØÝ|’Ç7uš¢öyÓÍhR¾Ð–‰®¦ç±aÃDSº56”Y$ÄÛÖÄ} ˜}J”ðu‹}Æ•³/°¹ˆêxhÔØÀ1„5$ªSoÔ^óW²rê!ׯ0’ñ®át-’u;qÑÚùMÖRR ÖóSë'k !ÞäÒšB”£0»Õã(·?€£´oŽ{Î&ÚäÈ•»=®ÀZ®t͵»]}ÍÑ$ßš>—ö^C"rýWœ¦mC#³•Å µÖ×J–P E@#R®xÁâu€k‰´­ÁØt¸IÌãK¡¢e!A°¢˜˜k2[g.Bqhü‘ÉJN±Oyz€vΣ×âÌ/©)oÆæg‰¸×t3en}¥ý7¼hWóR²w¼Ôã_¥6¶X1ªÚ£‚ b$ îRæ ng¯´›”€È0¶„ºp1éŸå@¥àS êì:dñwr€;grsÐ‡Š¾C½Ã~ø_'‰qGo6ªHˆ0!d–æ‘zØ%Á{[ û'¦ûˆmEQÉ‹¼Þý9I†v«"®ÀŸ^@;äd¤ ¨0»FšÊøŒAˆÀÔÃäåoþ/ßT™ DQþËOÝ.Û 6¸˜–œ=Ÿ_þÄ##:ȾGûßP:B|VÂÁ”³¸$sáÇmpó®è ß1D`Cq—­i6—gòL|S½–Þ]~d—½Lî)ÝY×T•CÆžÝ^ ã5FÉ“ÁÉó ì¦ßŸ*=F¤ÝÏX4ì¢wï_…­tü·×,óMqëýÌŽ‚ujCyÓIâb¥á„öi‡KGWä£üa{;ñÇ!‘-ÿ¨­_ yúr>ºé‹«§ò¹ü‹Ày¨"®×8ÕºAÔ•’™ùèÃÐe³9ÒäÉÖ<ÐG¬ý¬9þz‰+Z¥øe“ ­øšu¼Ô8٬ݔø £o¥­OÀ6R¯çûbŽAx3äµ÷ –u¼o×cZu(‡UÕ)&º}²åÈ—PÀ)Ø_ijüÅÅfp¨4Û±{gÙù Ý@B’_DX¨i HÕ Bg€EÂë$'×}S™<ÆJb`h"àƒðÇQ¸vœ•…8ÐhµÏ›÷•¦¨B¾òglû`Œ5ýiÂ4[Ë}9îÐa¨,ã î:9oRÇÎÅÒäA'ˆ­2ü?Zv*÷xuV½*âûsXÅ‘võÚ!'ÌÓ.Öñƽm¦¶—Ù„)…>r3+–¼JÐØÙ†¡üæÁþ×±³#¯ûœï‹.q7¶%„Š#AÒ#S«7~6wbË­§Õj‘nXyÙzzx*ÈP…f¢ï”™0óuqKûéIï KJ÷¼¡AòîÏLrywvè±þ ûKÉβæ´öR•å¥Mg¤›©ãœ~Úƒ+H¾- Lžä£7ç|¶O<άþÎ})æK wQ6ßÐSV ³~ª° Z\ƒ€tù=ü“ 3¶Â9®ÎË·(õ´Ü»ßΔïåøŽàª`JË,ÁêNŠœ›5øZ±â/{ û¡9¯æž¿pª¡ÊàtyØâlåšãßBEÐbU ·=—³ÏM]¥'3 ]NÍàÛ7Ä݉ /й¹€W¸ÚCöèʳç‹"0c½qb‹6ÄRGÂÆX+¦joãu#Y=Þ섵w5 •Ôä ’Ž‹,Ÿ×œ¶+Ë:ÒçÚ<RlÜ­Ô*>ÌÏ\Åm£ #ÿž²E¯±üȰVûWK]¸n˵f€dç÷æÄxäÏB`nñc†LDl»[Ö8Bÿ—Lm¦Sð1ðV_sHuýêÞziÝ =e÷¶®oI++.•ñ†uÂþú Ì6å\ÉgÛËú0p Uü×Þ ¼œ@cÖË¿À~oçÊôŸÀt­z†N}~;¶ì“¡¼”ÎmqÁy!°u³¬ü_+÷Á'GI©òʇuql‘uKP­¿ÄL§YÎZ¢nLœhgÈÝÀ†ž´40ù„\o›À¢Út޲F¯öõ²ú°m5ŽúÑ6àÝðwæ5iùX&B­µ¼üu^iû‚¢#ämÍËÒé÷Ë*%PÔãÒ«]Ü¢¡¤f§H© ÐJ,LŠè€EUðNCœa8óA§ 8OZ¨«³¦×+mâ–Ý_¢¨^°ùr×QšÃlM*⊰/ úPäŽð<—nï§ÃRôqÖƒ§xGå­ÐÃ{×QQ÷ø‰$ÑDÀž„Ø[@î,KÇ~Ãg$ŽÍø YÓlüfm†É†Õ¬‡4ÔFZëÀŽ^µ3—r¾d ©mCã©^ZoÔ¦øÚŠ"¾OpugO'SÏÃ[¥ù8ª4È_‚›Z"AµkÕ‰u¤K+Š^èˆ6uÝøû"À¤]„ ƒ7(Jø-Ü€w¥ýEïPã¥ÃŠY¨÷$°f¼º4]zÙÛZ1ÏKÓÅ-ì~)ñ·ÞREà»ß{ø: Eðp·ÚöÖG}Ö›á›"mt~xÏ:} 6ö¢gs‹í§4”5®r}gÏ> G@…çî"b|ƒÕˆ+|®ÛÖ[ãŽæÐXÑ/? ˜xˆçH¹‚€ª†¦¨>×XÛ–çbDC˜\l”56䃇‘^‰Ä‡WÈ1ìêe"\_n}£Î:šqpJr|1ÈÜe¿¸ÙF ´H‰Ñ A*¥¢CýûÃÕ¦,@ À#óÍü—àthZß)p Z›˜Î²~˜òiãÄœck~cIË~!ZeRyïälnÞVàà¢?ZZÕ?øŽÅî–ûÕ¥˜FS“ÃÕK·9`èôÅÆÿ˜à¶R*ì®1g2.—¬Cþ*ažkÞ)Ý‚r.¦[ 9üxl߸¾†&œ—Ì:t$WQª9ˆ²¡ÁSV›à4«Tzl¯ž‚ЦÎUÇ2qx$‘Ìᄘ/ʦݷµE!ÛgFÇ쥓‘a¢¶!çDBzMÆ«¿lúŠ)²øwìM©ÃI¦ï§û— Ïa·•¤=¹¹µ°¾ÙɳËÓÆ† w)4müû´œ®…}UEÀ@ Cû¸µ(éQþœÛœH\öOÏ·:Ô3óQ®­Ýé wSjc&õHö4y ×F1¨ñß„M0®œCÕ …Pqi õ`6bÖå#}Í7±A]ͼŸ ’>øÚü·‘½+K”ö;O*M`ô%$-1YjÚ¡šÇ8 ~ß&)>WE~Þ Xþ)®Ø\ñÐV†Á |ÅLêzHBЬk»¹^jåKCµù© %Ùæsƒ_PueصøÅVUü¡Öî­ãb4•T’D¢ÙZ`†ÂHVUYâH­Ö»G++Îø,M¹\¤0£ÞÌXª=ƒ-îc9/ÏÎÐP¶Ä*úÅhãË=óÛ"Ž™ý./þ‡˜\Åfhr}ëlw¥–Î ÃÒoÊié ¨¬žY„uŽx¾6š«^PØÔgñF¹ 1nO´ÊŸéõÉ1ëê²GK2W#É„°t¹|™”£û̺úÅÆ—‡úçÑT^t´Êí}+/òÃ"¥¥ BÖkz{tò¹Âà>Ö¶é8A‡s=Î ÐÖ¿qr^˾Ö#ôÅÑÕn…‚È™#{`ïšä*®g9£ÍÇΩ”õ—›-}&GF<¹ŠÅråu ˆó=ò jiŒ§ð(YKoóÖà¸êàu¡´‹QšÅÊYµÆ€³dFÉ;SÄê?…"Œ:údøUAštï»àË…¸t°£:X9M6û2xØÊ kÀˆ{€c©’ËIŠ[馉±£; ™hi Tû&ƒ³)¶KKQÊ«X½[Wïþ—!Ÿõ:û¢•…`ŽN:Ýl«ÒA*²}Êí~ö0Ñk”% ”17CT†µ# 7ÛUjK.=/Ùà„1 ãôÍFÇiš —. ̈D†hçKX¦ Åâö<îXku—D›LaM™EcÑòØÑ[D«m#lòĆY”uLÛµU³û0ªÝÒƒº‹”?$:QÙ2æÓ¾®Sh‰‚h´y8áÝ‚ø˜ 1èMÓýŠç-ð ·FžÒMº}+ØØ›~¼ Õ¿õ®›‡ì|?ÛmƒEý‘Z !\‹)—š>–O|Ñÿü˜Í‘U-“¬å:`ö5¯+WºÁëðª_I‚îHxµ„±ª"$±¥8æÁHç"ŸOà—Ë}Õñòq÷æÓ¿Ä¹œ §CÊpƒ–â”cdʰ§Év+ókÞh`o}ù; ¡! ¹ ^V†ÁãÀ 6+ ‰wáëÄU­>_t¿¦|]L‚,EA‰—àI clÖ$Ïs•ñ$Ø¢§3¢•r#šv¥ÆN<ŒÒ±ýHyŽv³¿{ø1„ÅuÔ„‰Gl’ôË¢üd5I{25~]©ò瘫-‰=ÕyËüôk•«Kç­ #78É]ºÁNtŠŸ9NÝçͳ”`áHƒZ¯EY†}˜h¶œS=m.Œ„5M®hÆ!ªòÏìæ>ïdûæo*Ŭ£ïí3¥u¾ëÍ·ôÆ×;' àC1jt9¯¼Œ4, иU';礽æéØiXH-|F¾}'óGÚ:%ð*½ ·'LÃËÜüãqXL]!Ûý6åÕ Ã­5•\ ë5õ>t ¯Ë;™ú²ìîz2×l›%Îâ¦âϾ—=üWÀõÀg±Hµ‰8X§® 2“Þ Xêñù­¥Â¯¸ÿ*=8ÇIŸŒ­-`ðÒ“/Ï}Üí ïýçìÔ@á!ÎZ3±J™EWY jÈF ÚáËÖ0Á`sÞÌ5%o_’âàžª Î^tï+½- Íõf5£RöÜV6P–ÝÏÓ«nзh’´Tœ}ÄAùTh x–Ô M Ìús6Nëœú¼›L!_ÿŠKG{ó k’áÖ§õ,]U§ËŠ ¹§åX™9—÷aÉqJ »Ö]ñdâ>†ÚR¦‹íPéOw0ØÕë:Q4… L Ï>FrqñhoyQÿZñŒ½É ¥¶æ?·I¯Åç‰,^W¶’¯§“sÀ¦R ,âFËð”?¼õ*o9˜Þ9WÀÄU•d8þ1_MaÈ@“ƒ|‡”£G$¸9¡Wâ.*JÛa`Û‹1Hdç Œ8ËJRZÛm¶Ï&g!ë U\Å-µ`¹<ÿP8Éj7€™ëUETüi±¢qÑè’[Xc·°é–’±Ü $ºƒHíÅ€7dЏXÿÕyYÙ27WÔ57Á-Aú–t ¤×Öüë,*ßC#MâbóÖ1¿RÊ[ìЄ 6Énµ›lÂ3%ÉmS>m*ääyM8P­Ûüïîõ£YW“¡вV¹:êTcžaZf…éY.ODºÈÌ—ú+¯Y[qÁ÷¦L¿î¨r™u*±ßGf^¿ ¨¦˜W‹yËn­nŽ+Ȳ#y^¬m5#½LjNóÜ­­ÝÂ͹˳rlá—øÓõ Ÿo7½–tˆB½ëIÂÎÍdm¢¤ $ˆâk9 ÄNQ=i‹Žl… \ç,;b¬ÝZ¸ˆ°’ÿ‹A¸|n@™1AÀîP4†ÁᥡññËnê½”_ÖpU½î'MRµ”6ªÉÀÍÂ(ÔNgZ#Býȃ;’U&)Ä >D€Ï(âÁ‰Õe.©ÔÊÿ¿ ìˆo4«ÛU‘£¤÷侤]÷‡Ù( d"ßÑäz(ì¨op¨‹ÖÊA‚8³ëÞ4Ü”Ç_¾PsÊ¥¯×lj»•͈ø⚉O>5rä>ÿ)ÿáUTÔ±.îhìsfÒ PÜ$.)CÆbëç$ZRP¼nï¼%ff©4øÆRBFtwYäß]\É‹;+  H÷ûÏÊ"rLüWæSÁ­´¬X[‘¶¯}ÔÅn¢×É"×yí×?¦ BálÙ;ÄðÜQ´#ó+6z€&M^-c®„瓘^é}0YéHáHŠÇ2ó¥ÖÞʆ)«y×3>ú7¼Î[…ð?IåN¯†qNÜb>—#è1Tú8/¯ÐLþ-£¥£-šzÊ~Q=t-äuÊÇóz.¯j¥Yþ±h¸;ËUutYžJ4OžÐ†’v´s@ÕŸrç×2a· ˜ÓLoUq!û®ÔŠz§¾‰r£é >jjŠåp>…Í0„!ަZž‚êÀU–év5{®‚’Ú7üèö>‰ÒFs•KTÁ[%“ĵõ$ Há”­ç+L_r"^¨]ÁêÞ‚MäJ;k|91¼h6zeA’¦;Ðü‡?lml²QP8R¾Ôo‡ÈD5ŒT_Ì[Ä ~‰ ù»=JwzY;s¹[æ‹AD9¢Â››yzi*¢þg×ÙW8 -†‚]+&Në(ŽVŸ°ü²Ýôé÷ã‹vzWV¨aÉq±#“ÙÒ;3ÛºÍ6I#?qÛ—ñN (]âÄš—˜¨¯Ú­JçŠòE9¥ËÓsû6¹V$b©­Hœ»Áš4¡žki™›Lô&î!³•˜€¼è4cM“'Uª1yõ2¶*a&e Q‚»Öý_ÚŠÃÈäÄêÛƒdpý )ö r~ÛÎÙ~¸tGÿô,UD4~^X•øL­™Ó “aÜ‘çŸÕûýlt§+ÇÖç{£›ïùPßê7/Gõ¥B[ê¦;ØKLYãlhóß–H!ë­—Çcq Ž¿ÎГx„B-·CjÆ3¥ç çªÔ]½=[µ+Î[¼-ÏOJáÐW+ß,Aý1tkå” Îùœ´9@Šù€‰è¤µ`¨—o%ªËLB„†$ª6-™*xÂs(})àíßõ}ùÅÒÕ[¿fnè)hÎ_ìG)ïƒ|Yñ'íj¹5ZWµ̨S6(uŸª Øøcôñ\¯SlPöhß‚S(žÉuµ~‰*¶BÔÓý.ûHަì´ÄÎg·£¿jp3VJ+³´³<î®I>ª³95Îþ¼yÿ´Gÿ,¶¯gà¿Âs›ž‘9¼×À‘ÂTÈãjšôxg†$F‡’ù¨–Aµ·GvšŽÓ®úéx—cï uÞSIΦ‰±½ÉoÅ÷&¯óGEQê.ÿóLñ«b%Ó¹‹¨¯t2`Ê, p¬#©‰}î'D+³«› ÿÍœ‹xP³cñ"3ÄO ZÈÀ£‘aà+Œ[;¬ÞåËPNRºr®/:6EôÙo”ªpLÌ MuÕ(‚rk¶0Nl4“NMê)_ê þV<ô¨Â)m9¤À}’²Dnv˜j.«œÈ5Œr÷зv±}“Z=óx…\ƒ•yûÿ Fymñ©¯ƒ2÷®¢Žm_Uç L…©'p=YH8ÙXŽÍßÅå)Ý¿ŽoõÊ÷M5ÔÎùzCÆÔà‰ß»‘Y5õÙQ~´S¨QµãÉCƒ+ÿ›¦Bg†ÓD ¼šÂîæøÂ^Ž›Þ©@Ùлfp÷óÞç¦c å…¬Ür0¤Xš»#~¸ÅYÁp©7Ï–]@w¿bó@ká#F–Ì„E(;eA7IGqÜQjBõ½C[WÜ)Rδ»]M,’¾åT‹ì¹Rs n,¤™«¹c¢å› ¸Sõhl1ÜŒÞC°GßQ[õa,á¨æÎsäÚ¶!¼Î=lÊ=·ÏTò}€·Á~Ð×™òǨÅχi¶s-6ñ8Z¼Ú“N;‰ÕT-Ç ¶2‰E&G[ÒB½Wã%¤)î}+IáÀ¼v?-Óíäk›‹Qæ³ùy`ý9W÷"rÌ3ê“$û14Cá82ÚI ÍžeFž¶Á/DÆÉ•²w?R,:@I{˜àÓ×’ÊÇ>ð7È—Ør4ò9¾»¦^—$ˆ8½'‡¯[/ .·ûT(}ì,‘`â– ¾ü)äïö¦ë7êÄ—¶Ìm •â$)ý"5N75ñp²f¬1lúŸ&ØÐ§l eßGžPE†&a4TýºÊ¯rç=í_‘ÙàmT[Õ Ð’T9Duíûábkà<ºy9+˜Ä3ä+«0¬™VœÅué§œ—Ÿ$¾çÂ$Ü⾞ºÍÿªPñ‰Ah$elß-•‹ZSX`(LJ`+/ç’JrÿB‚öqs0uôkƒøÂÄ/–Íõ§¬duoÂR«j)ÎL,ˆ=\€ úzh„+ü¹ì +I„˜‹Z‡Ã‹›\ Òƒ/¨JùQÜP:šAϧ'iiÄ”˜Ràã郴íRcGèàL¸·,•êh†°£~˜ÛRKÀå³BôF¸²½ê·»'åCÂo`Ž0yÌ9§üU@ .ô.ÑR ":¢Ò6\¥í;¯$ ÇÃøà:ï0¹ö@M+kŠ#¥fÃŒ Ê̶Xñœ.‡µñÎbøN²ŽïV‹mÝĽeÕQL-P˜zè(HŸôï‚Nwâ§Ã2‡ß§ã…Ufãƒ@tÂÔ:I(ßñý ½º4”Bè­Ÿ°(AÑÁ—¨#ÝT †Ù@qsÊëH€YyzQšW+‚Ä;A¹ÊÈñ ùÛù| ¥ÖÀbò‚ B=¶•”C™è¢’K>€„ªOÅ€Á|â£ã6ezx¥úï»i^WÝ•@õêç§q“ ¦Ú.°9·¸ê޳ò½æL×ì/£KtºlOo¥9€ Ás퓅즎…jÈ «Ù<$«F8ÖQ¹Táe’ôïSM1>´GëpVücØŠÇ E”˜(­ @Œ”*ˆšH ÀSîÛÖ‰›F‰(›ýð!u¥ò-¥ªˆž¥3Yã˜h„ƒ@‚ynâoЃ´Ï”¬&€|X~ÞRhŒ€nŠ M—Ž Öá= 4É–H×zÄCÍü¨îÎC+D!p„›l@ŒyÚ5ɸµ¥Š<¶?ó•~ ôÍëW¥vÊ1‹t¯°ÔP¡&~\åb/?„o¼".‚y—à#Æ+©Ü„Ñý%¾•xbîž—ß--—Þ`ØXF¯ý;ôaµâÜñë\""­Ú¼^]¾eßþ¢‹ó9XÔ‘£yÐaˆ˜‰­ì¨^Ù&0Tµá&Œ¯ ~úEN]é‡+¸—1I͇š#1ȽMþ`,±gûyÐs i­œ±}*Ü@{vËzo§B)f½›‘(ªïNIk`¨D¶;9 ¹¥*oQ6°ä°…«)üG>COàÊÔ)ÎÔXô˜Þ„©›‹’òý ìÏ#œôa‹%frUDŒ6»²sù~ês@^§Ó8¢ú1€Qí• دàÎÿ³ØÄ÷åP¬½1’à}ÚÛQǺ!Ð+t³eoæÖ™®>0°r%/u«¡2 |GùŠ‹0\˜,Ò/ZïþWLã b€õšÔÁ{ä¸å¨ ±FWå-'f;L)ßS¢Ÿ@×6ŽhÎ(Ù—ã×¶¿Ñº¶ÎqM÷ÆŒ ÁÁÓeâØ¾^!<Œó]p«OòLÊNÄ¿‘Ö“Ó÷Ë`[÷kù¨Ëz´ªùE 9£½£¡Mÿ$(ÃA]˜&ÂìÆ½ê]·?À,ž âôEaQHAêV§ 4UzE˜‹h9DzaHM9Ñ+¡HÃÀÎk 7ûü?È%+»Îúa§yìÑØh©m©>Ÿm¦ž¸±ðR\w1B0—…yµ)15½¬@“|ö¢y÷ÙÔI•¢ñl+<6^?Q–œÙ–²>¼ ê²nåPÚœª°}j²q|/mIy±² ª¹þe·"‡¸^eNzÂpxŸÊ¯Ú›RÝpLc›ˆsƒWÁ.P“Ë ïY@εÍwnlç cyÀ Ο˟Ë2³Š‹7]þ~_ ³ð)ÿ°˜V…ÄNÊv ^þLpÔ[Òwõæ*…Øäùž½yZe½ðŒU¾Uå¨eÆW$‚°KÞo¦÷'ì§Bº?Äy£v];È[ôôG›¦šìMŒlAÁªéàóqÛõ ŠÛ™ìþ m·Û÷§òVÜX£z;‘Ö6ºkùxà$(åÃkyè+§§¥lq1µu¼ªA¥ @ÎûS±¾!àÚdÊ0S¥!•méŒÏÇpRaí|(Gžî³júœÀÍ;TT´ ñN¥ÈlC‹<ÑÙá_yi[)ï›ø e:vSêpø`ŒënŠWabÿ,‡¤'ÙcÌ…ÝBI„F£lì“Ûž¼Ä½ùœËi;g½…ÝT ÙØÁŸèÈèYx ß‚êD‘ÉÅìO΋£]”“‰‡§¾Û†–ü”˜7€&çÙñؼ¬ù6à‡ûB䋪4NÍ/¹9ŠI:÷«Å^‹„™s‹¸<@5ñXƒï"¿ÙÉímÒŽ¿‹¬ðù÷Õ§¶”7wJŒ}¶M ·ZÀM µÊÄ¿õuZË–´qfüüžUÏ@׋gœùO×Þî²<· jŽÂÏÑ.}ø8õI¬‡1´¹ùzaØÈiéa¢Öæ‡Fc×;#@À¼:ÙNøÛ£‰“8絞«áÖš™|\Gºw­€ƒ(,@‰EØgÿ´ôc'øÅyµœ:ƒÚH‹r0/6}ÐÆê³)Jb]¸²¶ÐÔ+»«ì¬< /hYÿ%±Ù°]~–¶?&Ó»æ²Ù›E-îÙ=ŸÕ…U2£µ=[çEŸr‹ Š’‹f¢¾á£Ç8`™ utR‰¨“–=Ãüvç ö'\#“bœÉqtÜ…qÊŒ vúèÀi`‹q&|¼wr6Ù`߃ij3v®ëoõ]gr‘¾–fç[ïB&7e1 É`‚„š7؄Ť¸ù¤»ÐJ²w“Mñ¬/ßüJC@QÙù9WTh:3Mh%|5¥Ôí¶'G UNL¸w¤[È6ÖK窮_'¼3pÒê'Q½ü´a6û^¥œü‰ ¥ùÐün9yøÜœˆ{…´j „m× €šÓ5¬{‡òqëá kÜÙúq׸¼èéI¸A¢ï¤”ÔDÀ…ÿÈ[ͧIÌKŒMMáñK•'Ϥ¼ží¦2™ëXW8PÚ†¥<Ó«›-°1ýž­Cþ«S¹ì¾Á+övd3;}$áÛ?þ`ð"ÐÿDÆ’í“ ks®‡8ä ¸.MNs…°œó•Ͻ¾tÚJ``é>´Á­ñß•’©Ví±Bq±[¼2,)AÁŒ[xa?I äŠæ1ï°Ò~ýiubªT¾p( D€íŒ?¶Ø,š*íÝçS\£.¤~ Qx5‘B^te"1¢?%ä{/4 [X6³D&¯ÃÇq©r˜m6˜”M'T_ ? âüƒnÉ@žNë—Q±“%vf±fkrÛx‹Äoàñó„þ‘õ“>Ï9^X*ù@ªTpg¼öoJŽn$]$“ÿÂhꉄè6o¡m Ü‚Í4OVg”[p~Ô}IüïkâitO¿›"Ä_Xv}䛆IRYÑSæ”n£fÂñ3Ü€¼”÷(yÝ^»ê.íGLŽrê !ØÁ3ê?òÓ?,ˆ¬œcÔ ²ƒRœÇ)bÞJ Ï&Àæ_ŽpZ^`û¤Â_5ûÂÄ’Íïr§tz¿Ë$Q«!È…C6®¦Qsk—]à®N z‚Mù$ÇnËìŒÛÈF4ó„ %çуjM¬Š`~O¨{a0Ò©Ü M‹þe‘Šî²9ð€«u{Z²·FÓ—­‹)ûûÈ—‘ت&âÚù¸Ò*2€H¬C_ }r©[dý¥4ÂÏ¡ÌB'…áZœ_‰tkÂXa¢Þ Þë˜Ec-éØí]ÝÚŸwa@–§@£Î­Šì U,kD¸äTC*â 7½„ÆpuͼgEsCµì%·Ëk*Ñ‚Þ;+VÏÐ^J²° u'ÉÌ×µY±lÇ% ÙsW*ä9iâ?Q¶Ò6oÏïã=ã ©Ö\ùü¤Ï?½²F‡<¨üeG]¢ÎA èËßÈ)Á9i°xxêT®þ{mBÈŽ€/˜«³Ÿ1ùiŸ×8û®®¶ ªƒ³àíÊ¿œ•‰¡n¨×iúgÀ—¤ßV4숞ÇÝV÷ }=¸T|ÈO®Þ¥D±Uª`Yr›^*;lP¿ |u2V•\3ÈÃÿùázÆîc§òðù,è-˜pö5züèð¹(ÓUëë¶’’  ³úó=ŽÍ>f(vëÉ„ðtªmòˆ¸îpÀ¯_MÙÊ(2Í_zZÞ&[ÏRågÀÇ«7¥ïïu1ÝÉpÇ»‘c<¥tý¦¤øJ•î­ÀÙ~Èê@ÔQÿ Ù¼{.TzxqÆ}ØY~cJÈaß9ÙÆÝ`¶ ޳H€Ôxzpƒ¿ˆ×UƵÓlÎ ½ú7À\IGŸóôOsP‘ºéñ£Ä0S°üéëOH­ÄÕLŠ™$U5'jÛOr =R¢¢ÂŸBˆŽ(1üzbøBÐ;e¿S ƒ¾ÎãI•h£z-?¶ ŸEQ²–Ÿž%ÈÃ&Qø©ˆÄ–ð5Úð"—‡tÆ ^àÄ0{Õ½ Z[³4 3}dÇI‚i‡7{Z×÷û•zÄr!ó4á/YAgÜ;ù~î¹ê*• îÝ ’BE5­:‹¯øU bÒé`®%Ú’Ã4o9h£+‹sÚa8‘*ªg ƒÃá!R.ŒSЕ°†÷;Ïn"Û#5¢¢(^ö × wLª€põ-VýÆo dÃ^’Fôqi¿Ùy÷)+¸WÒæ hÛþ’Ü«¥n[ôeš< ¢T9X—Y ,è¬Õ¨wÜã½¶‹x^úwlTs/ž©\^K¯½(=! ³Ú_«ÛÞl†öxcbyüút7pêm|ïØaDz?”B"oÅFuöÃ~êîõ^éNs”>O«07R¨3Õ¦AžˆÉz¼/¥é6ÏÃÇ`†ôà‰¯|Mjȧĵ*íRÀŶ¼—eçÙÖ Î;ɹ•Ô<Çú¬yÆÂ7³Ýº·é’˜ÿ {ý䥨8ò]˜Üƒ×ì27¿|Ñ,2>ˆÐ/ Ûi±·ÞvÁ ~Jí¡'¦¥úà½-îAÏšiÈQ³ú´Å×!†Øs†ßokŸ%ÎIÇÐGÞ}ÙÆífò¥°§ÔÝ*›£i&¢Ii •·–ãŽHëð…$¾]Ó™FûÈ{å䳊瑱 ô O@‚a©RJu™ žìÛ<Üôì õQ÷‚€†žÆq°¸éËYêèÏÆ»ÇÔÔ|¬†o‚•­’³Ì*Ýñü‚ìTPýZIÝÆ|¨oÙ™xÞ¾¿Û\BBÃãțMDô*4rŸÁðbõ«ï!u®Èôæ?*3s)ûøÝ;D³ž›Øž4€OO"T[Fö‚uÕ$ÊŒ£ú”Ìrc†ñçïŠ8U®8NosÙ þ¡˜q'µ4>‹,qÊ´b^ëro~[\a$Éœ;cªfûÜ!öå˜9;]¤ô¤ð’©žïþxÜ3"®>egS5pª9.ÎFƒ›æ_> ˆÚìšá(PÀqUø•Ï$ùÝÐØeßH1}zÍõ…Ž ð@]fH€™-í1^fˆò’Óª@6Š+2‡ŠO¢¼ö‹Ñ™.¸RMŠjONý0§Ÿ…6úî8ƒÜhebÓ9Ê.mjZ\QsŸëî?ãµ+ì~/躉D½Æ‹ ›C.œÁÚ¬pS±0°À#BÞŒìÎïËWûZÕLÆ»Ând'} Å̼+¶¼QJk‚n*­p‹#Jâ\ßjsÖS*áXPŽÛ¯|ñ®)~—<Ö©LU>1ŠŠRœÃ•ÕH F˜ÓqZ#ù¿55½ã¢u’É…ÝÜæOI}Rž‡¨žÓ_Ó±¥ë@Œn#º¶ÿ;î-aà˜Ï^£†Û#Vlo<•ž]E=QTB¥]ù <»Âÿ«œìòÿ;D­ö*"´Úó! DŸ=IÔL,¨ºNޤ ÂК[¿%=TvÍîZéj^n˜øJua«wÝâj˜ø‡!ñÍM%¤¤qb†I™Y÷sgÅ/Ññü9†‚I?Ùü6¬±˜~¥40ICÍñµXnoü“ýßëi~P›úõ…pt³W!´{V¥ô#¦Ü‹v 0¾îŠŠ„09t–ÙÖB†Ð‘k$&-H5”F¥ò…7Ú]ð!–JàÑW%¾:â¬n´&…Õ4†É—qì(z)¬ ®5åe–qÐ"`½åMVIG–Öc²Ë™þ½’Nà rNÚÆ§]Et¬§kŒ(Òá#í ®aõÚ ²ŸŒHo£¤´ttð‹àWLE<'–8í<ÝhF ’ùÍ)Õ;2Énëgˆòv¹6ÆU"37cbÞ—ÑÐ[mÔBüŽn3·ÁÎÆ+IÜÄœzÍ|™ºBZÌboX-o ½Š8_Óò09~Ú×Xz–¥•­NNkEýõ½þä¤w´*Uâ&¶d°Æd{Ë ÑûÿÁÖ†3ruöGµx:Aòþ£\ÉJËE·½ºëŒÌRGnPýPù¾éžf$6å³OY˜Wcʵ7™¤ÁÃ+uæêRªßÎóäøGw¢-õømPô?¢ÆÒÕçlU”üЍ d5» p 7=þÓpò_H9(È Þ?»”Äôò—â˜ütùñ¾º¢hèÎm"§ëÕ.®h ÝI,pK¦8ñïÄÕM¿;SÃVÖÔU†Žçó ×ï¸L¯Õ: aÑiW•K=—õ¾¶Ï?èH¶NT¤òLÖÁ)’—ç¤Ö¢{¡’öß!A4—»ªÞÍ ~yv‰caFA[6¶ðÞ—k¤W;ßÉ2ý« Z¥ù!éo}†Ïý:¶¹ä¼réW@Ü®ÛHõê&ø# û7Ì;ЯÕœæIœ£ÏL´i±kðVÏÿæ¢W›¶ßœ1Xö‰¶ýVÚnjÀ-ýzŠŸºíê­rC[šr¯T¼RLo‘u‡;2Ž1£ÿ½wA‡BBü}Ñ¥h0q}9Cª­Ã~¯´ÏÿÈá×7}/73K­MõB$ž°Œý¢?*@öôÚ’Et6^k%£ú¹èóøJhEeVmV‘'L›–,­%øû*üäjìî"<ʥŠ҉ط[ý…þ’kÕxж{[8#S£_!Gˆl¾m~Ëmt2(6á[+WýcûÓnl»Štв£¾TÅ<¯ú¥zäîß=@5¥B’ÓvÚHX@ÜŸÄ¡ÜJÏfÜ›r 8{o˜;n£c¼ú¹„²Nq‡GwªQök·šcÝ®Øû pȵÛD;Œ,ö*Ìå¨ànjά4éšÓ§aà Ævy¶˜¢¨9üâÐ y=WÿÆ©‡(XW6ŸŒR_YÍýAG´S1ØÎ·uµö÷õ2<¶‹°b£Îš|)'{M8IÈ}o#Ž,‡“¥Äi¦B•sÎ{†Eí.ÀÄn8žÀ‚PÊ=é<47Å~Bé»XpS·SA<!´ì®nŒ"^=%áòsØ0/MXè}*b0¸Óå•YnÖĽ¸¿a×K€%itä!M+™Ëùꪼ ÿެWY7"‘[ã´b˜‰è̤]ï$è¼Õ™»8âGÎÞÔS´RÅå!Ã\”^ÀGbçûE¯«åíyçGšv D?œµ}àSÆ5y!Ÿwð oÖx>¼k.›¿4¨z´B˜‘H ‹X`„ðò¡÷wBt˜Ó !ÙàìêŽÞSÕwc-xеuñL[*¤ò‰hú0ÚØK¦‡Q_Ä?˜Hª×ÎÚŽíORÇñ¯"¯Îúç7µ)æhWŽ LÝ–\¥Ð‹A:—óbOXÅIi¹¯v»÷RHYÒ(Óf C[™çúY0KÈǺ\q èÆëzø*z0s;ÖêªÝñˆeä唌þE­þ‚°ùË?&™âdŽ1²šÛÕ®˜MÇRåßE—;î¨OèöMùFv–l:äƒÝAªÐÇXå[ à¤ìcžP§¢¤×­¨’ .¡Ý„zèÐ}ÁœþSgWÂÛ)u3•Älë¹V+Õ;õ+ýÛuôÜÞß}Z©IØ„‡Ák.Í—ÜŸÜózzD¦Ÿ<»1—j«¯Wïœs‹7‡v*žÀì áQ ëUû ü =c”•K¦‚¥ê4îéÔŸ$݇Fé6Äê½D”ô˜Ó„äÔC¬“p T-áù¢+±cüdR¾A”ÊÝjõ\½Ã&E„6 s’ ÎÏAºï–°´èbDžÒª1<6·m2$ìX=5?AÒ?e…’•ÍN騪I5oÎÝÃî1ÁE+¡ueâú]Ÿz¡˜òVõqî̸|¨QRI‰€ÆÂ5ÏU˜«G:„Ö<؇¡ .¾ô¥v˜hWçëÊxrǺA&/ëÓÂѳx¦îã;ž¶`á$(öµìåê!†‡xM¶×NŸŽÔ¹9XR'¶ƒŒ°ÎvC½b½»ÏK¨‘Ÿô<Ôîã^AÍZ*Üp}4Þ¸G«œß‹?uiub¹Âõ éVŸÖqY°¡9æ}ÈÎVÞã=¨ñÈêÍÎ' ’,êà¾×™›`¼§a÷k޳•t©ùÈÊ=:÷™3—nÙS-T|ù؇wbIÙê˜kã¶î#»Zb¬`‡ì^ªk=îÿ¶I!Í›Üy©ýñZ¯{rÀ”%±a™;â&>©Þxw°G@‰«àD„”ǵ¼ñÞXϼù¸18½7Êtþ7ܽ™^ áú©å!i-*§ì¹>(£OLï˜9)çOæðµöyظl¡ÈpÌŠˆ6Ò¦áŒ8#¦W­ê0°«+Ïw±Õ¡,/fG$K’kZê§ù†Ÿ+rŒ˜ß½NgÌ–‹¶Ç_ËÖ¨0¾”Ü|Iæ*f™/âg²6µtÎñé/í¾IÙç6%YDÓxŠÓîšúÌã#}¨¢ö6… 0 uNS”°Œ*¥pøz›¿õ'á TS»î+d“qžºÛï°têÂE}ÑÔ,Ç]í)É>«Á¸U¤ï‰pÐCaþP¨„X%ûmgÝ•'›‚/nÆ‹b&Ä@T¨—iÙ\}3|·ÒÊ©ÜKËIç²9´¯Ò‹¼CGbcö †ØÚëz=¿Ü0ÁÇ ·ç% Ñ9ÌÒ°( yg;/0ëà†©cËr«k¢1QT"Ò¾du›©éÜé\¦}×Îý1¸v#&~V¿I {W‹Cª¯ øÚ¹˜&Z~EU|Ð<)%¾ëX`ê¾ ‘ÒÏ+d/ëòð·—WÅR+ H¸Ï!lˆKã'Òlšyñ ¦!tVˆ§ôbQ8Êx…Ué=@Õ^òúVò ß¾pÈ[K ‚>¸v>Ç6.èºú ŽùÅ+[¸4BSÔBÍ:ÛHIö¬!›{U?jÒ+yùÞȃH‚ŒNlá?>gÏŸ¼¯¨˜¢+ô•ô©=Ò¢gØXðZü/½O4 åœî´cî³êã1zrg®ú.AAÙ@± †9ú©àÕs<ß{`4 Gši’ÁÜm¾?XÁí ,Þ˜Ð_«6—㪷¶—²òͬӚ҆œ^TÒ™÷(Ǧ,ÉÇ|ÝGeB?cŒ-ÜüäàJ°D¬êþl—Gôè»ïOÞtÝÿÖÄg:{ÑÓ>™®V+Ç"àáà=7Å~Ç4UÈ÷öå²AKÄø»»o XYbÛµ‹V졸¼ÐŒ•ÊUŽ üzQ6òW¢%‹A®C`i«¤bÖ†X?4ž«¿mê‹Õ·K™ˆƒÀê?ÂÂÂ>Q°nìT¸Å z>ˆó·B'|ãÅýñ–¬æÂÂà ®ÌÌ2àV'Í[ä  N'<_0nZ=¡ªƒžFÖ.ÃMSWåºig¯]@õªnû€žé‰ %³p¢µÕHÇÆÀíñxºº‘|L—ïûWiOêÞà‰ü«UW™ßþ2mbêð9´˜ôÔWÐKê¤Pƒo›ˆÂGR…m;ÇÀkú˜¾þ|§ž!1§IW º³}9o3˜ÑÂÌpo¸PŸvâz̬4Î^UÆ;Dà„!r{db—W£zÊ›òcG·ðRoµ ¿ËØEÜ4?æ뀣к)µ¾È3­Ï›TÀ®*?‘8)žŒ…^5ÞÎ7­‘± á£\ÆL|ð×ñ6eåÌtëÍÅÊ”=î?Y¨Ó½µ8ì ™›ïIåZL_®4lt‰pþªšc/…âîFO‡—g°¢ÉÆ#ÐM$jä «UðÓó}_emþº§ƒ˜À àWÂÔ”`àܶ÷˜ºs ¼wµ­~÷ žÅ]~³b«ò©–Íc=sÃJi;Imç%—!ÈÌ8HRR(ãÃ%’zæˆæ}à¢#‰j<ãg´@-»¿r†mí²¬æB _drÂ’}|tûÐàÊ¡ò;U—’³ÐŽBÑž³cVµŽQ¡ŽMæÂ÷=yª«ÚÙµìí¶Â}T¦°È:²¸3G'Dw•¿ .ÖTÆ!>n¯'¿ô¯qCàl¦4GùØ— B¸?¶ýGù!dŒ•PZaŠ8ƒ†“óQŸ™œi²  *èl$Ÿ¬j/¼iÜž]™ÁfIÇšfK²|?&%›v6qpÀLzü€+çaÅ áñFÃM¦¯3˜y2D"Éx†`ž… 1ò ¸#¦âؤ¦ñÔ£­ïò”„;ŸgI:zéŠðùÔp’óè*%Qã=Õê˜P¤!'5°ËØ;år÷áËW pËB¤‚÷¯|˜ècW/e寮ßcºy¿õ+§Q¯ÇáᬳTŸÀb¦ßF÷‚èÒQÁ¹kñ:Ñ:"|…w%4Þ〷“t("Ý«µ7NÅ›ç.ò7ï…Z®"¿àdÁõ“ת/3ïIχï”Rî~ÙàzSþmšF 2@guZS’[ßÊÞ×B‚¬l7€]p^¸%•”šLž&N›ãSßöJÁ™×‚N MŸe$µâQ±‡öº1ýã´ì:8YÂÍPÁ!Á$X‰‰Y;Õ€ÖR44ÚR§,†Ž+n$ncz®àí_¶éµOKZkÞ×Áb!‚`cѳ‘Ÿ$™ÂJªÙâ|½ÀäéZjŸÜ,pí!!›¢·<5äzñ'Æ<Å6ÆŒY»Ÿž`%×íѨ£Ùä^L”úû¸Ï€º+‰‰,^\­?ïÇ”…E~Ô@ÚxY†8ѽ†¹Wk%»´ùçCÌ\.¡\GÓÇ£ÓÒPëàVâafƒ4 }•WÑÛ{$…núTb'µad-IKà xŽ»3'Ö0µK¹³•~ÚBäéFGK>Ÿnÿ–4ó é|­›Ôÿ¹¼H± <•ë×Ͳ5ØŸÄÇY3Ø&ZÓz: Ý›ŽçE³~Í1"sÈÅ´û;• ÝÆ0Ë*q(»Ñ±ßùhìo½F|ÎGâ†u¡÷I°ør)WïÆéà)äÃXpiH]À‚½¶®¯ M²†ùö¡f_LIz™BVH0Ðc?ûIíÖzœ†ÄüÚ€~ÇU-ÖL?r‰šÓž¿‰X®1óÌØ÷Éï´ÓNêú·¸öK&,GõŽášªž=±xAýrŸ<ø@æŽUJ †§Í¨üm=t°x”åYWßÍÞgáÅß½¡§ç5 ÉÒck°ÀáÉ_Y0;mÊe‰!å‘Ë´¡;vÙŸýÒWæÞÆm³Œ »·o¯ŽáA¦cÀ¬~od K=(TêWKoNn˜€ŸÎg?áMñ[åÁ|õY*‘?Ä÷—d”ÎØ½‚r, Ã(ƒ5]è¸":­·™¥ít›9PmJ¦Þtý‘e 6H(`#âí¹ ³íòÙJëúš[(¦ïP3ôÑÔÓÛŒÙCŽj5†¾M™™Ò»!Áf¢ÏÒÊýßøhÉ ûN|ì X(¹þk5}Ðpb›,,VEÎD(÷ñ<"MÇ´0“ÊJÂcÕ7*Úîι•¢ëĽ!e¨â˜ë‘úCÄjˆ/xžÅI¹2›.,£ýl‹Í;Þ»àèMuý;tò\§p‰ðCè¬ÐO5š/¨oõ˜,’¬vù@ › ÂëE*Ó4>´Û© ?þ†]oÞ@}ý±3д¤%C’CQ]"SN?u—•´!eÙzÆHÉ+ŽgR¿š;ß\1æËdŠŒþ’ÁµN›A”е;%lR Èõ­—ßÝñÿEw^D™Eê¸|šEç¿¿2jÐ:®ßŒ,ìÎ"|}mjü_‘[é °JDƒÍþƒxçíÿq¦ Ų1«=s¢ì¤ßQ…vµÐ£’¡ÎIÃ)üŠõ>¬ÅÁdO9@uÂy¨OõÒh%Õ¸·Á½r©Ë¯»rFœÂ•ì•-1!Ý @F)y­QqXþÊ×€ïDþ®²êâ-#´d f M8‡±€ÒAžë‘xî>Äÿà"µszSyU%;u{žüÌPç”^uJÓ6êâþòкLKœªvy`&Óá·œúšÁâRLa˜/î^黳­ŠÕ$æ¼/áSæ¿F¿p  M¦jÜlIÑ“åTÉ<三îJÉu,#3ƒÜH‡<%tiÎÄ­÷`lŦ«^ƒâŸàHÝI—-µ·mØ·˜{ü·]=†ð˜ÈƒôbîÆ•ˆ#Év<,eÁ ã-ü¤ø?¨ñÐÿ-6袔mž§e²e§÷ >"ŸHøK`Ý>çZCàpÐ “¨´Œ©"š—wè[ rQ—#ÛÙ{pš¨îÅ¥ çÆï„v¬˜_·ýEöç)ÚÊñwÜ¥1ÊüL =­‰Jß^¤À+:±Œ,Öò_âà\ µ¢¨c/Œ7{Ò×”æíZ²P_ºò¯÷»õ—‹óå€jj!>6¬„Â`|,O–¨1qkCGîQv<8HY}~Íqt;’š,ïjÁ¦µUÓ$* ‡ôÒÛ0Dr/OýÙ9“™2ˆjqlk|£þC÷e•i¯ú«_‹†M zã ¦0 µ"®7‘µv;|ž;t’!ô.³î 9Ï•×ðž¸äë6ó±Œq]9Ì‹¬ˆ3ßJ1 8éZ.ÐÚ…ÍþDEÖ# ¦R1LbÌgƒÕž«&ùw0 9 "žîºc•ÍÞIÐè0 %”îµ¾\{vœ›·‡¬#p¤2èH?(VËØ¬µ¦ø=iK†ºŸGÿð?öœÔst6E¡ÍÛÚ~¬yˆÉ ϲò;+·¬ùOBÀA!õB+» 4¹ŠXø»¹õŽýví?È3û~ûˆ-ⵤšQJ‚›+¾Ì›´z*™·FÃrWðÀå™ÃMà€Ku«²¡×XmN¹-‹Ì¾Ëî3: â#Ù0B ì§±Ù}Áãióg—Ny°Òí[z9â}]rØNÞtãÒ–Ñúå‰è©É×äâgÓYPºûKd:ÙÓ>ÌÀMrª|éV.`ä…`R¹¬öÝãY®\Ç}Ó:†ÌýwÅÜ‚ù(„ç#½•¦K¾¨Ï;Z ÖuöDù·‡"Ýb±@6i_Å:jd~¬0«'Xï†Ás*ˆR\‘÷ kÂ4 Ì [W†ÅÇ¡ØÏí&Ñ|ä;«\H+±ÜëÃÙT¯àƒ´¨HÐ ¸ ×áÚŽÙ+:%[s ß, >÷ïû›Ë9ˆÂýш5¶D'åíÂ"Ú9{ÐdM"‚9Ç€¼Äu$>±áSEá°»®àyoã9¯K׳%¥TÌ×LcUVÃØŒ&K´¾ùƒ7AÆÔ@}¶$ ƒ¡j˜Æø­&ý«Çÿáøi|¯»µ² ¼µ:qBÜæx}÷I9ðAϯ^BK‰í ò3ždNæáÛ$ðÚWŒmÊl)…ýé¦r'IÚ782â¹To^Ya{{ý¦d\=ñ­5 WÏi㳋_cæíÇ/ö{A…›ž>é?ŒžÅ½LŽàV…"¨ÑÜ”§jDçŽóþæ4óg!Øi‰å èÐÑþ“Ã#NVyßc»Â©,µeÛ(û¶GB÷V>ëÑèLÅ5Í_aèò´ø àîÊà_ÙdáDåÜù‚ýR Íú-F3 Ìý{ñ4a®v0D²BÃâÏ‹,«ufŠâuN•£K*·êE*W¼|{T¦†t0^Ó7Iìg½¾÷L—½‰›¾Ã=üa<ëŠ<Ñ&,óXä‡58ÐÉÜE?`»¤õRÑRõ=I;Š«¹T Ü¦­ÏŸD+½fEI2þJEÚBOÇxÙÀ³’j×Ôˆ•9,,„r•Y§ÌGV7Y¬«C ‡¹,?œøý!ºÕ´ILŸ7Bã}×Q$“ošhæÝ"»}"ºD:¨‰êŽ".Ä”æªzÎ +g€ŽÅœfˆ`Æ({ª¦.Ër=Á/‡ ZËX5Ã,éEm¦â»iÄõŸÊ]}ª|ÍÍŸtÁ.7 fJ± õÚø9)ê –`Íõ“'¨‚%U½11ÙI“véñ{+zÝ/ÞçuðÞÔ§QÉJQ fíýXÌ8qï¥ÚA‚/ý…æûsÐI<•ô·d®÷E„Y‰£;L›Ú›ƒ –ï Ù©F¯6Ž¢Uœ«y—àÑ™ôwX,t³w¯1ë¬HÅy^kÃùšZÕ!À> =AggSv &í1‡ÂGlBó+òÒV¹¨1!ýFÙœšý*=ïËëâì ”¡y}ð7Rh}Ú½jϥ칗N*^&é]à¤ÐM §ym‡3~ø1€?š_‰þFÉñwëž°ûÔ„ØA¹]¢¾]M  š7=l–iø;â›­ÈQÚÉ/bVßÿ| z—çÚûe² ž¥¿!>£œ̬!å²FŒ-#÷5k9¼”B€®¿¯‚^Ê*T¿ŸË…-SMѲ>»Ú*ôIÈ”?B™Ò:Ô>*¦Ø™ÌíbWemigQÈáá€p7âä.× D™‘U øØ²Åk¬eó‹‰Î*WW‹Bð®lIŸ2„^²±8f™çL¦?v6lÒa…âu¬b•8p2ë@mÐA©¢ù›~üñupê\ãðM ¡÷ ®ÑZ­8Vsc²Í¡ú¯Í†¿E¨“A/Æ<=É zt"‡\­EFÏãå@¬F×ÊgRs… ú½‚|·/ÓV¸Æ&­gÍôŒˆq¾sxÇì'¶îÂÝÏWM]ÆZ5Ÿä ZߊòñaGˆàá )­ß8Œè [( eT”ê? Yð ¬ø§šÜ/JcßÌ}ÐЛ/ÀÐÞŽỪȂ—õ²¬ï‚ý”"ù?‹ºÙéñK8Bx$!š9ùêz #ÿü›N¸·Ÿ­‚Ч¬ƒzÿŸˆ&¸­eº"K¬Zø+óÓuˆ LÒ²oI’u«^­›­23r4ïúzãµ(Ø.)Û NxeÕuÏ~¤- 7­Þ±¯u¹/l/hýCÉÖ„ +L#´kb£ñ‡¦³ár¥ã°tœ:q#Ú ‰(ïŠ?c$ÆÒÜ¥OºÎ ´Mt¾‘@C)"þ±•IÈÛ™µb_7µȱ¾>':dÌâ4%Q®óñ`žeÞÁĦ‰}ˆ¿h:®ð,mƒ‘ŽÒJ`ãÎyF±þê„3/7IâîòpdïwGOŸ²t Ga7›ÓºëS³ýN•:Œî¶õoÛ‰Tb:Z–i…ݼ¦ÅB^qNšffo>ã>ñÞÚÒ¸ðù31Ü¢_·z¶qµ gA_•[GuÁP"æqiaíkö± ë³°¦ÝP5Õë¤çEÇÿ`q5,Ýœl‡K|ó4Û>$¼—NàžöŸ~ÕÑ™&̹kl^ìbI‰)>ÙáÀ­à¤ÀBfõÊP*Ñﺽ=½÷4>NªÚŠƒ4µ™[ö&5•q[ To½æI¡Y‡R¼Ñb3 孅´¬G™.]øþ)º|–>?‚œ…°Ã·yˆ†CòË\´„m_ªÝ“h³Ô©ÿ¢4^²’£K#¥áˆ+3„‹˜ ZyNG‚t“ƶ‡¾zåêl‡s1Æþ^=À×f‘E3 Ó×õcekà?ÚwúP?aãe‹, "U#oöë°ëÐ\#Y0[Õªùºµ=EA#ÑßLÑAZ¨MUP·¨`æÀ- îj³$éþ˜ŠúQÐåXÇÀ5m, Ük5,n…‹B¶x T—-~j–b-Ý’Çȱ—¾¡ ¿\i¢®¬É_r@’Ð\–Ö~Ê×L“ _ûaǼ”Þ–ågsíl¸³‡µ1+©SÝŸî·H´¼îh袚–7Ü çÐtgA?̶R˜–µávï­MiòKYÛ+j0Y[oOÎÖ•D¸Ä_fªN‡ ¤cp¾°µp›cñZÏâ7TJ”áGñ ¤ù×S´Q¸+JÛëÛ‘T,öO&xËÈ /R‹-Æ^\4 ðo"Â| ‹ z!êÐnÓ `äCo=Ýÿ]Ä^ÙMtΗOÅb ”â¶áƒÊ•bSzzÌ2{{rÚ:2'€Rmsj StOTŒÔ¢éóÜ,Ö†Øÿ»¦5îõ6“_”ŒnH2-Þ‹éÁ bh6å5†î”D,˜”Z»€@ë ¸Á/¥ÉHnq`ÂQœ@¶bLÑKn9"ú«–+`’šp$)碙HQ$˜ yI(OÐhX¾Ðá[Z ¨i*Êr¸ê. aõçΈr)¾‚õ±%u$; ج۷GŸkM\EŒ/|­ªËPU•à‘ܵšÏ87šežêG7¼}u™ð³i‚LCPž8M%âå¿<˜X&~|•&Ìk¾ÚX `éϪééüš#$Ðú¯°žòik:?d¥²l²+TMŸV¦ÆeÞUÈÊDOV&©…ì£ÕĤ^êª~ÅFŒe} ß¹KšI±Ü¢’\ˆ ÒçÚµ‚g]uFrpÈ``ê/0ª—xO C¶‘´UŠÁG‡7Bgûlm€Û*œíë—· ÄŽY뇷Sì ¯ƒHßV0ø€LŽ úp\sÑÆÔª!ÖõdC a›Éÿ€üäB â7Щ¬e€:Uˆ…ÑÚ¥šÕR¹j{„ýÙ³$Éþwô³Ÿ,¶BGx{’LRÑ¥„ Â/Œ"-‚w|=–ˆª2h›Í|…:½©5k5ZŠœá°2”¢Ð·I½OîæÁ’×HÞ6©í‚x¸,ëë -g+ ÿ™6 %@µæulçáæut—š³•çÛ;³É×à¤ó©_R0òŠ®å_¼ä'9Š"(ðLêÊPËÍlm¢dOX¹pK½ó*°B /ØòHc2ÏÈ QÁ¦”è:ÑÃ&l _z)¼Ûg¼r%¤¸Ðåê½ LæTí:åS^SªÕÙ‰Ñé‹÷õ™ÈÉ›¡uFÄxžå *[4wÎ-g+B´è¼b¢ŽhE€»¼XC>/÷Ï1 l‚¶5Íœ£>|ûV®ú˜™4q³äõ×éƒ? -»zgLXèüµþŒe¨RÍG ‡ä©2™A(ãÚجx ?a–¯„,œ„å¹C|3êÜ& Éy!¨¬×”«ág!¿–ÓÈÀò©*ËÝ¿ËýZ³–³k®¯¡_x;'zà"Ï=ï¿Ë*a…Nò7ð³·™s~|~±‹9€Ð tHcý^–\0ÿŸBW“ËIæ¶ú²¼”«Þà­‡êèF 2ßÃ%¦cû©3l~NtÆeZ†ÑûPÎ-²!2Æìfµt†\_tÙîüÞ_¦AÅÝÔeã$+6·ÁÙKÉ‘ÛåLvê¢ÀÙи¾P ý†Üùi>þ64qˆ”p5FÓb<_`Ëîœ7”ùÐí™Ñé’8ÈDÌMA¹„ÍW’"(5Q‘B›Aþ-(¦õ7e´=öÝÚ"ÀRC“Ÿ$|MæV¬ HSD»VüyÔˆ ^€èýOy]ÑŽØ,”\BÉÎø ËI±Ä/ÕŒÙõRÒq.Ÿo&µB-ŸÞµ¨}âÈãäËl*Ü^Ú*…7ÒÆÜ­¤«uhgŠ óÖ¬À­´î‹.ÓG8´Gì`¥S£cÌŽ;‰–8èõéÂb4¼’W€b'ÃIß'®¥Tl _`Û6 €ÊîC; &h÷G–¡Žœ•ˆ Z±Ÿk£\XS…½0`lùv›Ÿ×Ø 8¨‚݃¿ =®v”ÒnÍS÷×5^c>V ^ny[ŠÐ?œMÑ£§Ùˆ.ƒHsú,²f&…jïÿpûzþŽéDãÝg¶oðs—ÿ¿ôQ-¤Ç÷-¤35¯Ï¯^.•Š 4ýàRd)ß¼jRC8½j‘]®wÚ-s‰ÿ‰<=¾²}¨€¦$®©›]š ÑQì~AšF¦™ªî=WŒµ¢óvÝÀÀéÆeXiÉ©oÛJ6Ä÷=${YmIáÓà:ÿ$•€©2,=4†õ{…N[ö"†âNî,·ƒe§z†®ƒ |Rò(®MÏStÒ4x9_^ĪƟÅHµë®îÎŽw§K·ç˜`J (%åÊÞîwÖº4_n➆ªêMUFÜ·£95aJçÙ–ã…“)` ÐÕ(l‹¸“<×I•F«Ko®Ó•„½)4£*¦]»†$9–H» ŠŸª7’ã‘ñpHdu_gHÆ\Òà™¹*nÍ`æE ¼N¨j‹nh`2¥ëQMƒ$zþ˜b¬"êãåux 7&—  à;¸p9Zz=TŒûSÃÎbT75–ÊuÌ\êVãÉé%oß]bÄY]öÚ1»øÎÇZA|-ñwMíÇ®Žª‰«ì&Â",àÁù€u ÊØÄ…3Ëò 1U áÃá8]‡ÚwnFPð:] 8=»HŠ?2ת5]öÜÇ­ ""b­¼ ÐÏ»oƒVÊ.°7Ã$ÉŸ~üÛJ€d‚‚âжƒŸº 7ò3Õ 7âIÀÉγ®y×éÖ~$B7ó!Ùl&PØ ¶ûÕ¢1.ÏOÃÞñ9 (¶i'ÀÞ—·-q霾á ågëcþùö+Ñ‘<ào¸Û¥~ÕJæ^ǪçþqHb8ŠàN†Ã¢n•:þî<à\,µ8(WØ“jk¶¨‰Auu¸»1oéž|dL³%7ê'¦kíž,·´¼¡œô>W±’ÔÚ2½'TûÖ/DÜFpÓdO—ŽO@ê Åã6„ii0X”9Clº'¿¹Õv˪0Yˆ¯¢¾­HYdЇ9g>¦îVgØlÑ›ÅÝ!°ãÜE¸/a²±=\W‘¯[p†üˆ ˆd`tKN5°F² Dü|þ°4'I øfÚAôÀ䕇Jˆ²l£ô¯ñƒ® N öG\9‹›E*Á¨N4åƒäæ·¼¸>jûjJ°4jÉ;IÌSVßC|hoÝ Peó0 Â'‹µÂ]ƒ³eU__Q²7zŒÞ€$ªJH)•ÙE¢¥d]5iC–ñqÁ0ÑóTV$€?ÄD}T…§ÁÂt!ëÐzŽ —Sù°±`ƒÅSÙ$çô’]¡p¡'ºçö‰Pè ဠ&Æ#wˆð”h_âK(c?c¼ûs3³a‰zƒˆÐ&5~ mÌ‹»¥µvÌ,«¯–/FÛ¿ñu:Ü êv ZÐC#àC`TÝ´·+ÀøQ'<át9Tªâ['«ÈáÌ£»®îÆBz<…XÕnÙæ³nf2üzþ¬}²?e›ª<Ÿè‚¢ÔUÞh ùÉléßÞ´§|âÚà£wì4ªîò²^Ê\Ë3ORv¿:ZuÅ…t•w„P¦mÄ›ÎÆ>b^X=”ö§¯}…^Ž×N—T⌨'Qæžhâ€?Eð*n8"sìhîyÜq¤Ä¾F¢hÞ.QÄ‘…ãa½{¶T,5V¥¼BøØÕfNó´!¹>w×m•éù±—^RÝxòêƒÊD‰«ƧÆe7b‡`ˆ —µè’¯å‹á–|€–½šx¬3˜cϸ)ö²OµÇ†£ˆ €{aq*mÒæƒR-†sa¡ÈR’ùˆ±C8¤{ûæ&ôG}½µ}™Ð[ß»N $ùkƒKfÎ…Ÿžåç‰Å 9´oÀ¬c =¿e¾ñ@%ŽårØ.Áà&Úɨ.¤Èvšã íJˆš†"ç [=¿µa—ééd”Õÿ 4%Õ nUï‹Jé°LðÐ( Ö7î”„Ú o‡ªž'•yý˜¿WK½8¹E´>ýŽ;'2xë,q¶2m5íïúÌäw¶3J‹§Ìä=pvši¶sžò7 Qƒ*Byû3`¢ë×;ìAØÂL«2ô¸Ä\nŠ9­rµ³C¥š”©Ýüí"úÀýA´áBæµF§Câ¥[@p`ö£[•ZýûÿèÒ'[$à/©_EHyÛƒŽ$Émn}“- i>>gök±ˆö=2;] eÕ¢RuÝU±”6€r©áûÈîñùZ òX"^ûÚ%@Ë´M"Š(Ÿ[eäivþQdF¬íüfn´W%YÞ“ƒ~ :µTNÏ`ìÔâDìÑ~Q«EØŸ³P ³*…Aï騥N9Í ¡ZßÈë·É]¥ ݾ‡6Dú¯ˆû[ HLgE¥‹×ÉÌã#ƨˠ[ìȾ™„FrÿÊyd®Ÿ8‚ëm²¢¯e›†D*FkkŒúñ‚þ<Þ½ŸøÄùt±i?ÔüGtj±À N?Ö³¯\DHxmFßˆœD£ ©ƒm°m¯Øp¥Q|$êÜ/qóP Œ¾[esU(ñ–C²³¹üZñ5qµ„OFæƒ<¯e“’Ýó’ÄA¹"¤¾Ûªš*ËpCF%I4÷q_”r(àFÈ£HÐñ2=Ü'%ÚYP’kÔ¢ºæ€=ɼü/»õ©raUÚ( ²„÷›.° xûeè”Úçês6ÁƒÕ]›\¥?Û‹7'ÉeÏ=q÷£VÝ”bÝÔSB$HÛ p*tªt-Ÿ‰ÿÛCÊ»Ž@o& g1Ñ“\ÚVehhVT;|Óq$HÑ™[1É †ÊÙÒêfe|N „†WÔçѽÞ/C÷Vœy‘™»j'Z¯ìß_{ñx5õ•ÆbɬÎRCÈ•ïÈ!å:¥{]\<†Œ|¯ÈŒŒ‚`š4~ÞúB;p‡õˆ%¢ã@W”ªy^ôeþj‘Wã?‘x5ååÎ^tÁ|“씦ºÎþ4¥Äky˜UÕ”©¢Áâ*–D5†_5`ñ #®×?[aò.‰ï•’.Ÿ“Z`#%-P슷s'„7ãhäFvä4€³þ…Eññ5L®-ðè½Cì‹KUméAí¾þaTû+ЦiínïntéZ¢¨’LGv™hªÖFëU‚¼¸”§3Zoˆ&‚¥!=½ï¿·Ç€!ž†;Cym­=Q{üÇ·©øwêyºgyöC<ëI“Ÿÿþn®ºïeOjþâîš\à©IÃòt¼›¬0„"ŸÛ8tØ:+áË~`øt­”õ"j+)¦û÷ ŸææS¬Ú[h%î°¡i4ÿ..ýçÄf…ÁÁKÒþ‹tì)3Ÿ˜.œ,Ð?°@[”0€h”º^¡~Uüí0ß.[[!7Þc—÷¿‚ ~.Ÿ÷Óo4œ¨h?Äs¦x??d.ÇÊk#󸌕‚q 1xŽXØxghá¦X,3Ñüq!<æçR î­žTêòÏÊtqÀ¨Úâ5¹íA…jÚš&þg.Nï«6CÉ1{H—Ê>U”û8y™eì¢ M4…¿€UÇ'ÏÏ7 I-Lù%ãÝ/"ŠË^M#‹:ßÈèð™ °×3ŠcGuÑĆ;Ø„ÁìÕ•Ùð,,rª}ïÆw?8..4)àjt‚Y…è¹Ïb§FÌ%ï*Dô{…ZRn>Èq éNøehaŽ nq2ß”á™ÕBÅFIºâÈì¤5÷®ò^ò›w6ágryÏЩ5 õí4X‡¸Å`Ùx|q>ñ+›/'²+m«¸–¡E¼GWi-´>ÌYæ+Æ=Ïì•ÕЊÙf»›¬¾àl©÷æÁSöÐT²ì°"ÙÕÊø×&ͯÿ Äêó¯JDØâDeüÞwC›WdhH£Îë£Â]BB#‚ŒvÎðâ!Ÿ+ÎrF©S´VªÉ;â5²WÒìüI=ƒkpÃwLľMÅŽcoòQÚá3 .1dEJ«‚;~b“ª™ØQZ|­°±€!$ED@@Fù£ _0‘.# º¿EeýÃÀ\xô!êæâ\Ù5UnÐ] ”¦®Ÿn}°"¶få5*jKW--Z®ÄQÑ:išîWsFÈÖÎ~#CÒú5þQpê‰jÉ-rgÛëÿ Á’ª :„»•g¦£9C—? þï7'ÂóÓKýáážrd Ê_4‘& ‚dŠRß<¬zs ÞœXb=‹¿®†2wÔ.nwÒ²fza¤èY÷ÄZüôc;c%Ä!0Â_}œ»ŠÃQÁs)Ác„1à?æL£ŸŸ_Evï·Õ1‡€‘:lÜ…J‘¦ìɉjÈS±¶T]T¤/u™!•î“È«ÙáLJöØæÐÅLx8œ×Î\}ÈãÅ>ý¶G!Èp@ Óîø~ˆõvß s£bëµüêÙ/ðYýî>û»iÓ?1×GÐM÷ô””¢!¦`•6(ëO¯Îâü „`åÑípŠLÿQ|^X,ccÔ;Wö4œ± O…WÂP8_÷"S–Bý™€èÅ;ZòÂ.”çT"¾ }Û÷|@“ï>EàøJ],q€³^8÷Ú W žŠÈ^AAPÓvÓ+Á®‰J¤\ß4-;ëÜq’À»–4ñÖ{ß9ow¥¿Ãkw.±†šú^–ž½¢ƒøuÞ¢á ®ðšqïÞáÈ;T Ѳ䪢|3‹bjA{S5?Íx÷ÁÁ|ÿR”zÀùÏÂZbÓéíáØ“Ó²xñòÔ”waÕ+m®V7xÑd¸ØBXS.æä7,¯[<1ãE@ûŸñ×ãA†×­®Ý€í2¬úÕF.:¦6éÃMׇý0ÙØÛ{²º§ÏÛ‰|…¤ä{Ÿ»)(fŸÃŸb¿¼všš3M7èü½-ŽŸ/DP0ããЯz¼üŒj$ˆ,>᜷< ÊÔHlQiŠXž:}³È& ´_Œ¸ù)jƃÕù]×:ØÞn¤&@¯´$Ò6‚`{”IÊ*ñ'cc§]˜ˆ}D#z‘¡yàrÕRc²ªêM¥`ö'‰åì”Q—¾ulDÄ¢¶]f± I6½IóØ7“’¦¯¢cî»H¾ê¨â¦: ¤Uvùv4Öe¯[šoðYœ‘ÃIÇ[Nb·©•Í»„ÍÓž¥j˜ùmæË¯O-£œç·Ýw5íe¦êý¼¥¼Rç´„Ö€h©Z‰C)¬åNK ÌÖsj>‚Uô£ ´ÓÇlåɇÿ‹ Š™rVà þ/Oœ7 ³ZwàÕ¾£6 ô(§—b+ ÉèøÒ7cBóÈHŸ|R£ª‡!o‰¶š¨•U·›öµ´«†åõn©h¼ÛÍ’NóZ—¨Œ_ÎMþ~ìb®#¬,æ¨]ÕvŒJà°t{·Ifúzò‹4­,0ˆ7+b»ñÝóZ6—Y§å÷£Wý¹èIk¤ñ¯’Q¡Ù”­.bÛ†uÆ+Áb;ìØ³vzPÇ*žÀ>'Wú–Sa—£X{: yÕ%:@D¿‘U¾h¤»ÎøÃÇGƒMúóÓAL:IÁÒ’ÈÀ¾[®LãØÿQl»ßy¤kÀˆ‘YCÓKxt D‘"1]Q_¯]3:ãÝÞų<nß)·ŽÇÅ‚/€ÿ)1½ìÈüjrrT]WO¥Òª¼§³£ÇµÅi¦y+… L½x?zrv ˜Ñˆg[Z9‡ëw‚Ü,\à¹ÎJ/PM ˆS­F]‚e&[Ù3%vdEú¯C#×î»cEw•ü”Ʊ\ØÇ`m¶À̪M˜ë‘çBҊد(À{[ÿ_J;°²|$>C«Ue(á܄ӊÌ$t—°5«æÞ­¦ÓÃLàRÁÙÝj¨Õ•û†pèÝÍ—Uì2Oöœ‰ãâJä T\k?’ %¶fSWÂõÇX×¥‚_î ÚœÝæõ£m1^¦·Ë—lÝÕêÞÇVb`3 ´ð:¥B#åúø®ˆjB  X¼´Ëcpœ¿ƒ†*ÙNÚNñ[Ã{‘MŸ¨Và ´òÉéÿîÛa!AÙ+›ët/ÜWW†¼€òÐÝçeîi~J’¸E!)¨jŠuƒ4O ¹µF†Hà!ìòˆ×v;—x1ÉD4º‹Àf·¤s…Í’@o—±Ë‡\Ž\Ç!ÓTÄáfo|аô1ï@–e¨ :£òŽ}j7χ…éR›-ÿ¬¨·€úZ4^Iã}fÍÐŒþ€ÎAÉÎõ}‡ŠKSÐ3Øœ»3_ÃÕuQàñÅïÖEÞzŸ•ÂñÅæW$ÀÓ„@,Èûaµü¸Õæ°ðŠðk • 4V—ÙÔb‚©ÊõñK) Þ†î>è Éã”OPEó1R@£%’ZÍ#̈@?‰ÝiŸÛ¥±˜¼íCè`͸@on¼FÁ4ì웚æ˜!_Å/;"Ujû-9~™ Óù³»B¼öoá(³’ãØç×B»v Œ¼ ѽ‹^L#Ȉ÷EØ£è6pÔÞ³$tÃO‘z÷ÌâN´yG{j•N±øq;x¹‡C6Âð·‘&zòÐBe%™x˵Ř>¯9.™ç–ƒÖä‰3{/-±–$ÀzØ)qj“·O¬hý$R¤eÖ= ,§œr -¸ü§SR“Ò‘$XÞŠ] ˜Û¢ªh&&h ¨¼ñ]§Që˜dsŸìTB =Ÿw‚]ODv›düdõñÕ)ðå…@Æ®¸îáHÜú‡r–XÉvVÊ:~ß±B™?Ôã ÇÒó"³‹öÇ•°%I®|öp§”ƒƒ(!ˆG§D\7³Ds]½ô^3Ø ^®µ¿ëB­Ú—@س°p’s$ýY¾bì×èMwWo2­®˜9±ö’ ‚ͱÐèeH%¿ T¬“ç0Îáòª¨<% >e+M¾y¦66¢{ÐD_€8™ôa“a«YHÚTgMjV;SŽ~SÞë*¡þ²HÝn-¤j˜Ç"Äùz(® ¦ß)¡^Ç ³HÚßL}0¶¡í•Ͱiô¦Ž‹³ºk8–2b6/aÔýž h–¾ÉF‚Zqµüóúïï-Ü&«ÔJJ'y‘Æ™a’\N( }3Ö€ží¯:¾Šf5$Ù%“ºSO59P G ¼=‘Õª‰9ØF‘sEßþâDÇí|;]sIºñtn8Qì”¶F¿ WMRÐê®Ço©B?²PÓ¤ÛM„Dq.éH\]&¶64mS'ë«XÙ=pGÿ“þÞî‡úSÎBý ÐÎË"Û x\v%ƒ­Ë ] 7¬Q}wYìÀ~««W)SøQp°T²i8ßÒ8Φ5-òSU %ïÛfýËï}ölI0çNÜâ|žñßÓq™žYf…ÿƒgs”¹Ï8—uˆžhÞ”wû/ü®Æ·÷¯ V?Ò"<䨙’#A -I„Ï$W0Vx9´É„t~<‡H™"ÝÁ`ïßgÚZÆÜh~Ëù¥hN!×®žõˆ<Ÿ vÛ—ñ"¼øìIª8 ïž¶ÓâUs7ëÚâJ½–CAÊÎFë°l[2K¨7I>:Ú¢_üÆñ†;Òj( öŸŠ b¿ª,ÐÁ6÷örj …clQ,•#­÷€žû#P›™Ýc@Ò1ë)»ÏhS+ÉŽÚ§pzÑ‹pKKh»q*[€#pŸA)?­° ²ÆþçìL5¹Z ²Ÿ7)WöÒ'¢!›ñü¶ÿrqöÁàÇ~öcÅœ©è/Ü"€QRâìÏ­J¥« ²… }zá½Í›¢X´¢U]$&Ù9qö öá-«¿g<}z­›_ÐLÞ«?JÁz„"u‹‚{eìÁ_ø³·wãà{vL’‘EâŒú°¶$ï'ù¯Pq]öp”axP'äŽ=Å}ÿ‚îè!õ¯R"÷ÐÉïé”pß-·Opná”qŸ§ÒàXBØ -ò r ™Ù÷ŽšäÐ¥ªY…hP5N½±l¸†SÙ1š@âÍaŒÃ—)ùŠ’`qžö7`yŠ–g¥†Ft*Qåχ™í.¾CZ¯U=šY!à%±5‹ Xf)M”Á $ma±å NxWè›nàÎÚ6A†Wh Q¼²ÿì_é±Ù:l£mï£)lÈQøçJl*9ݼ,H~!7iòB~žaÐOÖ÷ãPË´€Œí/{„EA±v-?£þ"<j)9½À@瀣a#¬èÚMÒ’X«ž C¤‘÷Ç5¯:þ«I‘íëvOÓ ˆx1¶ñ½$ß¼Y÷žSx³ØÏÎÃÅv:[Ÿùß,•§ÛŠü@4ÛЄ¢ um¦sˆZb™ÈtÃqw r˜SöC &ÑuUÏQˆd¬NSÆÓñT¢Âw Ž *-·&0Zg’ oÎF}˜ºâéÕ¦z¹+í::Dõã,ý™ºGᥠ@B&M¸þMvûE”ÿÄ"ò$¸Lu%vÐ^ëù†˜¿ÔLÌ#‘!Í¿:¢Á_õAX´Êeøf”õD³i˜µÕõTÑš•óF} ‹'ÐzíYªGöÖ’ Ž.+†º˜ƒÚÏ=Vÿò¨ö‹‚ùÌv;"ˆÓÁQ >¬í¤Ž)«ýóA~ãÛëÅmHyÖºÇÚúÅtéRƒW89®lG“¾g³uôJ“éW²K„6újS¬ã΂ÈPøõ¿(|…Tá%j~Kÿ÷Û"IhÇ“- àña¬c¯2–ÃØÆnºþ¤õÜ{¼‚Ln2Ñ#Ǽ‚dÞÕm5$ÔgåSƒ{Í}|ö'òóz,èA9fº;Ür] æ ðIOãåjþ|¢6ËßBëΙYKö&SØ 0aim/B!;¹™†½+sûx¸rľ ˆ]ž(ã Åã^Ç ÐMNjĒ5‡Ê¬pe^47.= ÷ñ©Î'´†ú­tO1©kv uáGŸ8¥FÛBf¨Óãõ¶Eê+´vlË<«¥K\{'ä@F”.h×àåÛ´uÖO):﾿]u¶¼iÌ5 R€¥ýnùN„ÎÄUS‘£¸ãí»û#CÿÙ0àz²©PR¸Ø hƒ:IHAÀ$óófôYÇÛ§^œ"NMìßÉ›~ýƇJ¦3 7ö¯ña—<+ƒèê]MÞ\/k÷ µaQCýp !ò¢ˆX>FS‹SpñDãõiðS¿nØ’¼½Ml‘²x¹OKçP¡Šøû±ÏG@-A€!Ñ Ù¸'þ’½74¸&”ìßÝŒ{ñ©ÃÁ‡ÒþÀöT&Ûœò•Óæ%³-ßÿê û1îá|:¬æ !æ°Î!{‡ËÎA"‘ƒˆû‡ÅÒf{—Ø4C±>º‰%Ë §Ì+¬>ŸM½”߀d7 u_ë ×ôâýé$Lñ›0C ª&•‘öIÁ>¨IEa?ìb¾”·­HB«÷ô#+ÅcÉà,=а)ƒ€/äÙ…Ï®KýY—Ü. Ýâæ^7ÎRó•Ë’JêQ\¿¾ËâpM¨áÓíó&C÷à ãÖN–wæ§•úï:‚Ÿë22dH΄1cò…KCü^/’tG—«`Ä—.• @ûTŒ¨þ|]­›­§SÑŒT€ËJäWWPu¤á•ÍpOX@®2Yú®,çËÿæ\á=D#ÌNU–…¨DåCº-1RŽ€³–‚ÉôŠòá Ð…É®ëÄåÝ3¸c쾦•ÎË- Ò—ð¸dUn•µ/~´çøjÞ Öá3ÚÖ8椤O}T8íŽ:»Ñ“:=‰‡Î¦ÎÛfí¢ìM“"$œ.Acöq+#'èÑzæ¡“IÓúè¤Iy€UÐ>Å¥¬Ä»€6 ÔHv" ÿjrŒ˜öÉ<#cå‡eŒþdÎÔ¯K›Ò[Ø`uO óŸ”vÔ]Ø×¾j ôýFg­x±âœ%âÖ‹šÑWJ `ä¼³â‚ðÉ7¶·•¾û1V¡J^¹•ÎÂdïvÏŒùO>+úH«"NcÀß4ª:h'Y,£x;Òïþ˜`4ÅÒ̃úAËÙIÎiœ18hµgÆ –Z%<"&x¢[bð$ˆÒœl€ß9“7™ØÄùîš]µ/<£?ú'†‚A"§o›Löv·Ó¤ßoû?`[õÈOÜ‚üy"S@´Å£®µG þ‡³s&ž;…@΂þ§n­wð·C5QD–kÙý^=Þaz°ÆÕGu¦I)hÏcÉ? ,Ì•~‘Aæî‹5ÏŠs©¯Q G^jóñí©ƒ5š ráõÿ¾Îÿ6  ]»H„Ç*ä_­RCªƒÙñM‡ï€ȬÞã½Q$4nŽÎñÜa"¹—'Óž¨Éûë‚s¸ÚAî?›Uöú Ò#ýàÿ߀.u’ŠãA†Cò¯p>û™­.ÇV¥.ÜR·Ê€eá\9{ÿ{¨&^`H~'‚¼ïùf—ÞEÌ+ĸ2¦]G–Ÿ2w¤ÀqöºMö ªy/ßý:æ2–Wù:¿x’ﳟh¦gÖœ0ž:®oCV„+„Ý2Šìò#ät·¦+,•Ç-~\ŽiI€J>59õE‡ÊÚ¦Ûü*Þ±æ¼U!–ƒÑ¹>Xrrs6…–´YÝ%å2,2ç&9'!¼^Ñ#f‚ÎàÉ,f2Û«Õºo€x¨[¦ ýMÈ'Úë¼°IHÉHr:ÝпAjs#ø";ÜwÅ@j·ÑÕWÏI­þ«©¯lñ’€9üXH2¥~zí”øÖ·nÏ>}¿ü@#2‚öÈD¶Eª˜‹\ÏJvª©1ëÎ#Çë?y“ò6âú÷ÃLüVÎÖlÁàÚi«G„{ݟثͽPFZ¿\´Gö]ˆ· 3ýÛ!7ˆ!M%ît_ ǵJ›X¥CÔö¶~ >Ÿ°“k˜a2LÚ."³H\Fd½½¶Š‘øÏ Η!ˆÇ %Š'àͪ=ñ­¨Ušè5‰'ø;^%áHb@JÆ^†ª^x^?íOg½©M u¤{É쪵š“'ï­Ñ—LÞdöºÌ·¢w“†cZ%ÓõC2À0¨Þáßùу0aÓÖCn}Ù:ô:¿,4+˜A) ãôdwT«Ç©IW¨~ c”òÍÇÉûH쨗ÈK1¦`ìç÷4 2×®[’[áI‰çk')ÕjøYºyM±r‚X¸H³@²Ì Ÿa<º]Mgk/Öß|eiê9åŒÀ„®š8^øÌƒÃ’¨:Z…[t=fCa%beQ±bðƒx­Cúí4ˆ*¤ 'º†(Ûöm!EoˆÝFb„y÷„rô[?d††ßèÑÉïdc(?SÅȵU´½—¢¢ž=“¨œîC£%(¦Îž0âê+‹¢²›©*‘òPËId£ö€<ûˆÑ#mu Yíª'ka—ã!/Þ/7ð†<uWåö<µ¨'"ç‰,,ŸjRFpþ"ºa黴˦Pio|…xãSgö)ŠžïŠö~¸hœ:õhö³Ñõ*Q=V'…›÷Ú¦Pâ†/kE&gý†A]Núh ñ‘L‰6 ClˆˆSì+€Ží!TÇ·õspçøâ~2I\4ÔHþÿ6@z¥ÖqÌ·mÞ#¡yC44*êô"àL(†{VŒ‡¯˜ý7yN¹­F¤f8Ø[+³5ë£ <ïczX#ayxÓÕdV¾Ã¥Û 1…[ï#o:ÖsÙxK•AFúS⧈tlôt©ì+áGzê‘úp¬ðk–x„qÚ{ï ”°’È7€œKq=x·âN.,Qæ²Î”8ùgD™1°ø“Qx¡Ü­í–&ܲpË}Q«?aümhx\ÔðX\…IísKKìÍdBÀ «fÍ“º_çÐäB%WÜKBòBQYÓÅÅTøÉ,a—½&Š(Ë ÂY#ï•:BD—šü³š8jÇSvõÈV¡v‘X¹K{¿”xîåosBFâ5ûíj¼Ðlç%gè6£„ š>³Ö½à¶ÊÛ·é™UW+¸\È8dFQŽz΢ᡂ…Ü‹ðz¸“@]Ê¢chy/“ÔŒ²’Îi8ú6A­ŠDRÿeQfST±º‘žrˆ 3U78Cä3~¶«ï[ù•{j¥§DCeî Ë|¬ÊMXs¶çD.†FäUâEå›wP G,ÒÂ8|Š©MŽFîûú„ýyÛÚ¹œrÊ +èR‚€Ú6B˜šj»]›þ2ôÜ!z[Á£S›!Ì<¦½Nn¤F¸* ú‡'b×¹¼ÌŽr£À:ŽÙøòЮdbjVûØ>>8D³Žº[°„YEAÓý0$ÅÿÌEÇJˆ"(öÈ©jT“ß ëT :—–¦Ïh®‹'"%¢fgér­~ø3&­ï:D™ßsa´ ¡»W‹íýEg›Ò¼¼år3bõ·±9&'–Ý8»|Vô„”[]æ}¡ï1Ða üЦ:Ƕ©óoÍã«_“ÐØ•ŠîŒL)‡&ãýj'm2Þ³5õ3±7ãl‚AN©=5Õ´•}~±C·v:É<ðžf¾VoïÜ,ßj×Ëq‚¤ž¬~2,¢›Æ„ma‡ž•õ´¤Ñøˆ°u]µñ¦“a…®˜Ìãø¢?a¬ Xjß”ÉÜÌœ³à0‹+y«l ÜA“/uÇSuLèÒçë6ˆ@|~0‘¶ØoqýI†T%ƒ ™Õ©äE>ˆ«(1|í÷¸h¶ …n "9Gn¤°üÑô8­eõ¡ôb§§#¾þÿón~ e¿Â|edŸ—0ô£šâÝb‘ÍžÚü‡³Xx>ùxïÁX.”K¹º|B­Zéß —©¦g´E(+-ãášò éš7, ½^¿l¢#\+¢nµs8•»ÒS›Õ³áHÄ4þ º"ád ›[2¶ã¹ð¯J åAäykG_}Ùqåí`hæ=8ß`ˆøøOãÌé™r(µ#AÆm?,@õåvï§@L&Å' ™ŽF rßh4Y }–Kp¦iì^š]Êmø4hΖÈÇ‘AÜ-¤Ž3#½_EŽ@ja¿9gË?¡„¬h…ïãGÝ!bÈ…Ì8n0æE¹¬Ï÷Iꤦ°N¦øÎSÎ@/q7¨ü†Qø˜7š÷ž'Ÿ(9uf匄™´Ü™fÓE`Ì”[ÕGìÉL:Àû:nQ&‡’P°¬»§rä•|íÁ󧇯†µ0öO&¬Ï‚Chêøj‰» qäÒ}R¹ÈKg?Á ]îð%Å~—}Ëe4 Æ5ïXÔ%ð•t½ûÞFfD|)¿ˆ•¡#{dŠ Í5„¿Û¦ÜwgQ§)Yo‹¶ uJt¼ù;ASň&ºA)xÏÔ—‘ÙŒ¯®óÍ|4‰Û†Ú/ÿÓÞ÷~o>G…5uάY×ñŸ{ƒísTJSëHŠªsüÒ/Oè˜ÿ=5RÙ-ŸFsaþûló8J(ÞœbÙÆ¨'ŽœÓ1w;°^…"iW•ê«Ã¸Pç[v Ô+ÔåSH|ú+Šr\H€ Ǭéù}^˜â àÆwgu´¶>KF‡À¥’º¸­¥3ëž09t^vz^ñ.á‡nàò¡sØøÄêñN4·jçÛ·ŒRüÇ`-gùm_o3·RÊÛNÞ¨ ã‚år¾¶•EN»Zj¼¤{µ¦‘âf1­XõÖèvPy»:Q©äq;ìüãê€@eY¸Í2,_@'‚¼ëÉI•inµ¼îŒx€Ï¸|‘´\½mÇyžj-~äÂ7÷ÅÔÿtùiqM–>µ¾­[X/d”Îù$„pXd®&¦Ñî¶¿ŒŽW=Ö‘;q©Y^6H„oÀ$N¯n\ I|¨WÔjçÛןZ…ðU½ÁØÕ*{wO€'<3·K{k=R¥¾æÓÏ.¡¬û³—¶¼W"D¥ÈwÓêU#{qÌÏY a¢ºõ¬_¨÷p;Bá'm*ç4¾]#™Ú¶tÉh‘˜q±eýÕ‘ÙúÞœOÈ„møç•i=jcç9c«-EùÊ{!`fŒÁH8Ù?IB­^äÏ}¹lîN•þ0RÆÓ\4÷x’¸@&…Ltïj{•VÊŽKgPxïȬ*  œ'·ªÌ5hAüÁnw˜>á'ÀíšU‹v©KìpÜ”%ÄõMûŽvNç#ÓNïy6¢ò ûß|úM’”i~MlÀ ª†4ŵú!NpržKº•¹:Ú”ójÈûÛ×ÅN6$]Ø1âuPÆÖ0¨- ‘,²´¢_ÈmýÉh/ìK}ß} E† #Œÿ**¿ÕÇ®1ÐáašSõ»ú…z I×ÓP¬‚H‘)rK©ãBÀv‰_@ލ7Üe¶ƒ4z¦\’bP’ /\n»¤ãЪè]ý7Ûqhl’8ŽØûúÄ‹–Æ„‹i¬_ò¢Æ“e™Ï·Dλ)U0XÍTf8`]µ“XFÝÉ\[`ån3ï÷1ìC¦üÔgbÉÉ#ÁÏl@ŸÛ¡' Ž~ó³,òŘã¿}°9!´ð²—­2mà«cÆÕI‘$†ÁãÙ‘ b9÷ Í‚´!Œ-ïÙÈ ê0n;d[ ÏQ¼/Æ>ÒÛ‡NL N=Sxê &‚¨kåR䉋³¥Ù¿¨¹*Vñ•Ãw¡ÖÉë¥ï ô9‡øÁܘ]×ѡʬÁœ{à©UöM¬®¬™ŠÏhrRù¾Ç¾ÍUñ? ‡FÊxÆ&‘ò&>x7¹±„¡ÖƒaºèÝâ’å!B0yÈè*uz:®ì…Ê©äJr‘ŒGðö‹µõ>¢:ñ¢žaêù…õ›’¶YRçp˜ÏÆŒßGÅÇ”ºì:Û˜^þÐÈæÚ/p*©½–~U÷ÓØQëÚ2û0¤21â'ÝbæÚíš`š¡;‚¤,d½1¥-ïy«kèŽì¶ÏOðþˆ‡îRÃQ}üvÜ3Ð]vuõèØ|™¸Nä„þ|aþá¬Vb¿µ¨”aLžilÖqÕ[*˜í¿á,5BÐ1õÇd]1,bäϬüî”C ÷1#|3$ ù86‹ª¦t•j‡ÉòÚ«Bgwçûä–Ëæ¬xݨæ$Ê@Eþqy¹·ßå¦w¾q`¤¹¾˜Þ=nÎi )ÜytüéLÑ“!Uòo,;&ÍãÌÛ–Fœ]<³ðm5HÍ[¨ðäabõà†úÓPNéŸòTmâÕ%Æ ï¨ü #¢§ƒYú\z ÀÓ!#ÓHL*^ã^w‡‰EÄæ¼µÞ¸pºò±‹_^œßÃ4¦$Ùh…Ê6æë„…€6£ƒäW ‚Ÿ{„tÂMÿÁy¦H&ÏKÉ»¾&WsäCv^ŸŸ g£+ûµòX¸Ý.‘¼Tóh¿F榈”à¨ÍÞ4ù‰Wf/)ÿ»‡€’¡w¦ë¾®>^ ð®‰ŒšÛ0‰„ÄAµ¼7[  A̶uh%áZŒú|ë#p.ÇwÞ¬Ééf¯@ój‰½ÄÃ1zΦ%si͈Tx–ÏþDÌ&ÚQöºO|g¸3a°R¤cžÉaRX¨úÒ¾f½Ç?Å+Ô”KÁZº¯¸8aÂà»ú—]éIÊÊyj·ˆêìÐ}R̾:{¢±BÀ¤†"芈˜TÈuD€ö\0褘 æŸ”rØ4 $jpæj#½2h”¸©iB“ð”FoÙðé8;¤+ Dàóþ§ñëAEU¹â<â–܉kÎ+‰æá‰IÁüm”q×=°RK„ã$•ClBá,}H…æ]‘‘PŽø·>ã?“^'DŽˆÖêªd4“ÃY°)Up;C‹ë®F³Ñ{#‡±â&r•âý!Ú;&8Á]U?ºìÕûÜ[-œ¾nwIÊÖ›g<·%ãÜêïÛLÐäôž *u³[½*‰¶ã‚ÀZ„7œ>ghfÌ’ÄØ¶Er€O ħßt ùq7ãít ÎQþpÜc HºÃ qð-Ϥø€‡!‡R¥Må9™S5R¦ÖfŸbKæ]fƒ±²(ná£ÙyশÛc¬KjR®±VÑ&¦ƒˆ²±Ä;gÂG˜›ÖÅ™A¼Øsˆ–Bå݈gëãa‹PH? ­£RÜCìÍLõ¯Žµ¡É`/_1ï·p·þ%`ñÀžÖcØ7±úQùBL<^dKÇ)‚¶q5U [oÚÁ2Ö€âŧEÁ(¢î•øc1ƒy³ oíɯ٘ÛET÷îf§bé nêèþ¼ø$ÈÄÔÒîsÿÅÎ[ÉJ0Hóß±Zë.#fþ.´ˆ5’C¯žV*m7’1¾5BSÂÅ]`š#­E/ŒÁ}‘ÌP‘1 :_"x…¯—©¤z®×AµݩٻâVúâFßI%ϱ7èÒ¯×R9‰øµ¶Ó¶… $–=r\ËQÅYeðÔ3;£5B±OEgSòÒÙA,$ªáo±åâŽæT÷ïZƒŽÓTpQùÔ´´Ã¹;íå{o Co†L—¶ ¯Íœ 9Bh% !AUº^Ÿ¸>U™5ÔxZÍÒÚÑäí&WËO{ãì£Ã¤ÛŒâXÐЇ'ßà%i¥‡§€Ÿß'<8S*úAªSD.[%ë§ÖüÆI<ònX–Þëቚ¾Ì1ðQz¢tÎ;E§N£îZBªN1°’=ý¯Ðêªx+wýÙ§µô™ÆC ˜Ÿ5¦`I©¾ÚXšRøŽ™»‰nj¹ÌQý¿Td T8DJŸØWÔÚ=U3Ö† JîE;à{›Ùæ>ò%F¤rOw¶rUiuœÀ$œ ¬J»‹›±Wzáf •~f—ëHP’ßî«kÿ Y¸è¾w,cÅ#B «U¨Âð4øD÷«9—l¼]ÔÁE§K[s%ðð€Ðzäé[™Æþᶈi-ôS`Õ]PþíÂ*úÔGqq³œïeT—~ô"ç#5?ÓìºÅ”éÝ´Ø…wؘòÍ4ÆÂõ_ë5fƒÜêðð/Í/Î QσÒÀwìÐ; Rôs´óñÞ„õ*çØß§«u™¤ÿ³ Z}òÏÑl-:GâU*ìªLˆ.Ž™6›±V™ø´àÉ©ÉÕuñQG4¼Ð  [Õít=¥‡Ýb:žgŒˆûÈ)Dç*cÂú7Ô¿j#€0hÊ—¹’w”L]Ô3}ŠåX~驆3n¯I무«ÔËd6ü¿œÔ#„^Tk°üPƒ^M‰l$ÖáÐcU†ƒFÙç’€"€Í2#^ÅI‹ÍÜdsíPLkñˆæÊ{É—Ü‘q;WÞŸ£ì€€ëh¼ÃäAí+ †b¡uºf¨³Cã@ð+… Îô0š°c/·"”®Ñm’ì|2"{Åý[â éÑ 8QUêšêi.DÃþ¼Lpãáš÷Û o`ÊDt²bxÝY„äÎo-…Ü0ŸÃE2žH#ÔÆWZ¯€ú§»«¥ž5£'-êŒ æ.ì§Ñü¸×¼T$õ΂…Í—ûj®\‚).L ò{ݰ pI—ãW!F9þ|ãžõï¾JkZí0½àï ¨o+Ÿ9.he_NqÄ­;sð’DÏÙ*™úRÌ·YÁ/„ÌWb¢ÓÚ†7 mÊ?H$6ÇØ°C¿MYÐF}.¨LñJ%½à$Þ~ *»LkÈ Ûwf… Þ!<oE1CiýØÙN`/r¸UT{ù¯}f'Í™¬Le|Ž[UœûŘ*l7 Qg„Íé¨ûÛó-æãX¼Þ1·¯MÅœÅÙ绊&}|Ò 4¶õ—oÞÃ6)?¥¦Ò”ä%Ÿ¨,ùoI&ù¬KµzÛhã4íQIug®ÎЯ8­ùGæ§ßkúá.S*b*26´ó_8G‹J™0ö7¸íŸÀr-{F½¢ÈØ1È:¿±,¿Šñzqº4Ü}áÉ:\½Z@(¤³ç ½Ð-Tý¢™uÙs§ÊœŠfi|S©×°‡¿%B™$ò€’ç*` Æÿ ˜ -?•Î)‹Q|?çŒ@µc€·Zm™¥,“§œy¾ó;ç†;ÈÊsrFVüÿºÁQ­Z}ðÜÀKuEŠßÅ/ÏèÌ-öÆ•ô[Iu1YA3õiùs†ˆD)²hðÜÓ`B•¯Qs>}L1ÙASÂnˇk¨ È ÀiãÁR{è†CeëLVEùø=ÍßÝ›ÞñWPÓÏ#KüEneü‚¥–D›‚Å÷yWOh»ü´wH È”Åí«ïÀt›ÒDñ’AÆcìû’÷\ÞíWS¶b%÷ÌÉ2Ø“3¨DÓ²ÔýÝ™B‡o“L;u” ­)C°¬´V¶pÑF»ÙÙÒIˆÔ¿&n –Ë8æšÓÞ« òÇj 3>×3¡˜×°Ã©w¸N—X$½SÕwd&›… s~Ë_jºî W?x»–Ï}(©Oäð|Rh&}qç·±h,G9p`ÝËæÑ}äÔñP2¶’ÃdŽ£¦«õý„NéJëq:x]óÎi:F4ÃtѺ$Q'Û« ÀMÉ˼™EõBÙhBŸ§¬›ÜÒ~qŒèMmÑ„ŸÙ ´@üópkJ’I¯/M{lO:«¨IÎò¸Lll¸DsõuáC£Ûhc‚¹Îýtðã¸Þ…f½ÙP‘3¡á}¤@úú*ìcÍKýÎò³Ñ73ÕÔoª’UDA`íû@DR  ¬žÄ¥)Ä„x‚[Σy”R~œöµ‘øÏ¼ö¸I¹rÖlP‘"HŸíà _Öyš§,’õŠžNÕ1:¥”¾Ž½AØç÷føªHj‘YPÈìãfù‚àB³KWhRéñ {Z¬ÕN Ï~Qÿa¬Ç«æ.¶ÜoHâÍJ±/=Ëpš)1Ù†ÂSe\¸! v °à\Ê‘èr¯%þ—ü˜½˜[˜‹^gHŸõ 3 çBöò^¡Ö‡4>¨7ÂøµL¤*üÂá¿\ŽÀqª‚ÚÑZ¯3g§¡BŽXíQÌK/}=¥û:}^†yËGŶ“P7Ä >‰÷…v1ïfà„jÛQRûÁ÷ó™…wIcrT#Œhö›‹>BäÏßÞ#:X€L­HBxþŸXˆ3ò¬ò_m%Ï@]‹,ˆø•†%šËÓ[iÆp¢ؾŠL¦´ —?¾B;Chty_â¨õ†ä’~¦îOˆNWiP‰Ïß$›êK[•ÛMPeÅYÙï'öŸ ¨'º¯C†çS@rô±U˜\Vo«zXÇðüXßÞW¡l{ÌðÈ{_tØ;óS—r”ï9n#ž’× o‚èÚ®bl•ÍmÜK΋pPc§žmªÞ“ú p­°ÕQ¡’@º¶Jð}«ü^$ãWÿ ƒ?Õ6½¦™ ´œ#9éŠâç¥.:åóµ#lî«áî(ú©ç«`@‰Öù;ãÛPÛ^R¯|†jh׳ŠMæ®Ï¼0Naœ·Fï?xtì¸'c×AÊF;—MÆPÑêÅ€kš4UÓ]éÀ*þæéÊú„®žm37’J?R|xÛ×Ñ/tLæR–;6¯äGÉ@/özÝ7šíÑ=iiP—P> °‚¡U·'ñ¿[˜/ ¢ÂP怎è6ÓÝF8˜/×8({w ò‡tšÿKÂò9¼%ÅO¿Q1ƒy‹!âÛ­Wp±iÝÖ'd §U`høN'hQ-KÑË/½¦…rÕ§•ÎúE’3‰é;™hêf…Ÿ’® Dþeï-ý;žC`ªS03” 0€/RÞ×X†7^¥éÂí°~'H3‰½]è©Ò”±»o¨ÕV…ay;)8|úX«L2‹í e_„ªs9Ægæ¾gk4imGhu„½ö“D „N¿^;ê>-‹ÓJÖä¹àVq3S,-¬Çˆÿ‰eF2d{ˆØ Eø=W•o€ºåHbÈ,‰>"ÙÁ"‘uŸ’Ñ·Ö ¤óžxZž¾c¬áɳÇþÜ/üÉB¼f"[Ù ÜF%aü§¡š%Svó×}*ƒ»ÉÑeaޏ*û÷q$Ux9<ïUÅüVê5œÒ+—|hf+T8HÙ¨«?©ÿ³³tœˆUk\­ò¸Á¿l¾¡–è«™l¶ÛX^Èlwˆ#–˜1rè^ûã¹V/¶ñp{ ~,íOh˜v%v3Z'Vˆõ"p `ò!ºi饧s§ .<øÍ†?üe)QØOö±³Mºô`kMeEf±zÖs+A‘ê ßîmó Ê4µûÊôÙnæ¹Óà$¬¦ÖOZ›Øs:5N?P)½KV+ÀQõ!Lõ#¡Ùµù$ ÎLüOÚ1“w>1^ZBËKâ`1üSŒTç8€(ºgá Îfï[É…*’b“¡‹§ÎdKCDþÆÚkË’¯Õ\1ä3•àÏÌ.¢Õ8°ŽUÞÈ[«`矔tQÜ,˜u*$‚ËV˜56ã ,È<[»OÒo¾ü¹;†:PAj6ÊÀ©‘Q¢ ¼)1\ÅzM š#ýÈé¡dÓròÑuù8¹Qän‹~ï^âvêÑ`ÛLË×`¡ó¯r(ÖÁÙ£b[Pª¾gø”~“CKE!sš e «¨*¼¸Æš‚ÄÉBêd£êOk ¡BÿŠKî‘øÊ†:€퇴þ!7Ø2FÖL“këÂwÎhF‚ªÙW\º°’z¬ºžL³†OôÛõã¿!§è¸Øò‘v÷`ÂOÚ‘þ?gjIÒqã‘iÖœâaê9õèjwãZP˳V%)5gï7g!¿ÓœÃ{œŸËbÕÐ4ÖFèäfn"á)Ó>A,{BB7fϳ&Ÿ2õÁ|D¹!ù’­Æ!-†…¢€‘¥DÇÊB †ÙHt¨°‡:¼Ýôû=!¥2rµózzÏ5…;œŒ !Ï“”¾J…á…‹™ÓƒBím*ø•¼F­ö”]6Äa µã8(Î,ž¢“'ïÀòK¿/º­+æ”XâÀ®€t«à|Iä¦ÑYòÅy©Ö4ÅFÎ!:äà ¦/ö=ã@¤*Œ¥à1€¬Rp‰Bv›]µS—‡êÈÔA¬ŽeŸ–+Š®èÜâžfˤž§*5ü>}Oæ2/ck}Bü›+[rÍu«µÅ¹»¡&oþªµøGhÔ‰ø˜¨]NÊAy[7‘ÖÙ×ëUûÀ>+ªqŽ’›88BÖq‹O}&¨®eG»´&÷î'ü,´d¿í.š¯˜-Ok_÷xä¾é9€ª¦!nW0*ý©—ŠÞ3u$–gßu:Éi’戴SåÃÇNñج¿^ ì@U²:ÚáÀ±ÿK@µØxS—œ“õ¬´†¤ Yó39Å«˜ø‘Wýµ.ßõšêNžÍ«’i&o\>T“M‹– 9» _ŒDºðX¸X¼}Dn,.ÇMüeÕÇêŒ|gé¼ÛΫ¯œ(ÌGv)©z”ûŸŠ‹]iÊm¬ê¨ñ7ÇM³šRYÂûvŽ‚Ð¨¥VâS,c­QØ † ËWÛ”þYÿ¥î‚ø,°dw²E÷vGVr%º²Wß~‘e«Îcíõ4èîI¦ª¦´ƒæÿY¸ký_ã§·j—ÎÙP·89ÞQtü'ÙVÜ•gÛ‚uú¼ˆx¿„ ºÌ×s=M£ÁÏBÅöë?ÿP’,Á^¾ÌÚãÈ #¯™Ç×F<øѼªŒG—;6Oãüí–çïÄ%Óüÿ¶Àî3±~}xNb×ÒwE:ýÊ“f[ÝxŽj'î6#"šê Ï"„ÊOžšæ$vø5ÄØ? Å1ò&§a›Î1ÛBÊŽqëºZußw{øñ8Á\óé†â 'é™2S¸€¤@ÿ7nËɈ.¥ËÉr*òb‘pK8ú¶ÀóQÎÁD k#08šBFÓÒ 9-Œ0Ϩ*íá—KŸÌžPñE晾Ñ!Â†ŠÆN0Ÿtþ“›ë Í|8DÒG¶ksénXÄ%¶|)­©¼_ ò'»ŒY8»&¥µ¬ )Ü5”›ã*<;qúuìÖ¿ ZÝ¿ŽÂv0¶£õ'©f{àHû–µ1<™Vý Õ˜æ£.BfÓ=žQ:õÞ°þ_Ð;_¬àWàv–­ùò…['(ðø“o±¾T³8¦J&Ú%("(û xßvv*T5Ösú—ŸY_k½ä[üqÈÇ`H„È{,þn'p ™ÎžÓÛÇ{8¢ ½-ÔÞíÐl&êÕ«Å^íL;s?´OÐHÒ›ò™ÙS‡ÓŸü¾¦°Çõ°°þwYžÍ€¥tµdš 3÷L`Ì4yÿ¥©e±˜Y|HnZ®Ö äÉ|šH“F6zí tS3­[Î'ç’˜ÅrC—Πѳ¤,Ø· bˆæ:œà\ëM Ô6z€ÿˆÏ÷¶u¨‹Æ”MDSïÄË—þ «8 sYI„– Ô…6÷ëÄX€Lï÷v¡2V K; ¨Z°]ž[?ÉX¢æ‡(€<…oh¬>}å÷Û¦n3㦼(ÿ°¤€ ¥ãqôù©è‰!Ô/ÿ „fºÚ¨h­&M{)Þôè@P+³:C³.àïo«Æ&žœ1(:Ìßj8 ‘ØÇ"­,˜{&(h=Ñ:ûÕ¼SZ¦H‘†tZðÊMÝßÇ›,k¹š)‹‡a²š•5Ðúñ~hþO~ö„€lÅ©rò©A(e! Ú.@‡8\:Ów(h`füiÓK'‚7;òíhµÝ®›§Ä 4Û:h­ÇJd•ã†ä”ä‹­o1($§¹x¸²çÅMVB¬Á¾úÉvÝδòÁ·.:Çîôçc‹£pW¦É‘”hc±Þ&©ZI'»;·eÏl†¹P&í{êyo[¢­aA·¡oŸ3q¯‚?Mæ´÷UŒè¨Û«ìÛ˜@¬POxå ¼¸’¤pA’Oš¢ò~lÒ¬Ôè 0¤¬/½œ™ñ?2%G ÿ3Âȧ3aÝ+Qå)9Ð.ÿôËÁ¬é}<Äoë´µ<ËÊ­—EiVÁqÂ(þq|°“ö sa›-Í{˜€b¶£2Ì,R·š6̦»(|æ„KºËr§þÌ <Ô|QÊû›eïê7‡Sþ¨=hêº";HÝŸ¡;ÀkÚ²*äxú¥Ë ¯B¾¨Uí]¦¹ÓÙ¯€¸Á“ž¨ c ¶—³Þmí,]ÈúÁVÔ¬HÒº&“}ØC9o£oj@l‘z‰»ÜaFI 92p'ôÜ ŒM·Î^N˜4B§œ8Xcäd"@|DQ%\ÛìR¬r¤U·û4–DŒsH IÀÍß*€€rÁ<½´+=€&Lëê£>â7¦Dt7ˆÎ!3 @Iùð°´·ãp¥þè…Ã3P §âù¬Ü5Y²1ÜEñÛZ¹3áøò£{Ñþ Àê®Õ·ä=qÚA£=ÈföþþccZ€Ñ+b\ù3½ö6hIì+Æ~Ÿ2Tjì¡M ·}ðzÂ,ý¬h(ÊÄgAï³Õ@~€¼§9I*Ðݢ܇£TwyÜ©Á@aYµèmfÙ'‡ÕËi¿4¨n³(Vo:¨X^PªqJPyü­ûï7Ý/IÐöñ¦Ù²\Z8¬ˆj[+<‚{Ì¥¬{Ǧ¾ðþ»Â¤HxI¸sÃâlɼ,g³F$‡ÏŽú(ŽXAÕðî´‡Gö­¨¹1O<ш#ÂõÛ÷Šh{û3Ko!úvÚB2Š~«ªcŽÅ¦¼Š®ÎÁ…Ò,1‚ J/zGäÝ#º!ˆ¡ÏˆOôx…Sžªý(¼¸¨Õ1q_¢Ð" Åìê}[þwº•HQ%@µ¡ÌÔ1_ÿñ½¼;Ì4¹²/-Û½C·xš°KÒ«—à´é¦­XÒÓ™‚¢Îl‰HUt 'Á:3[°Ý B‡p7¦E¤gT¤EdQ í¯Á:ƒWÞd¯ìÐJUÍí:ðv9ØŸªgÃ%»=hæRjȃ2Œ/‹ýA{ÙÖa|Š‘Ò0Ôáí ŒáÕôØRðs7/§y>$¿:#úëÔ\ôJ%Ç]ÎÃq¯`1‹*}Зß/•ÇYBÙY¦#Î/$Tn‰«G‚AeÏž&kK_2_ùÊÛ†~mÄÄ:Ã'ÍslÔ——ØöÒ ô-˜dáñ…Îl8ÔâÃoq¬2“àG#§oúýË•¸ùV«øñüë¡È›¦ËsîøÐ %È.œÎ9] Ü0+óäSQ®Å&7rŽy¨C X}O5à\!®6Z%¹ŒO(q˜0 .fÓñÃø-K3tn̸V­ péc«ÔZ•2Õñç²–Ÿ‡’íü=ÑH[„-kö3vòã¤Ý ³Éð©ßÖõBjŒzÄb6þÆ‚Ÿk•³¬Óo:¤RAø Ó>»@jRe`™½ýB‡R¤œ£$md{1gSl#Üca’ï §5Ç]W)¸*Ñ^ܘù ÛâŸø°‡{ Œü°Ãðïë·å7àüVå8̾hW૯åäÈV…€5cI+º00^´,ìû¸îN.®3ÓGP»åÁÌînÃ=Mgqÿr öL6¼Ï+ËYÇœÀd2®Þ Ý$Ö}±UªÑDéâÞè8hʾŸŒ§FÊ0êï4¯ëj¶¤’_k>@ÂhÄÛÇ~sïGÖ‚œ]k׹ʋÚCMR5’Ú-`(iúYð?œ 89 WÛç3Ã4¸ÙÌ@Â1¦x£?a@¤"ÀÒ*àÄýÖB)´güÓ‡`†Ö²È3äÕ] Ò—À¢"=N K€]¸¥rgÕ-ÿ’„a–Ìq$™9E-ñ .}iP¬$ü-®é‘œVVpË›<æÿ~-Ûóåà…6Nâ%vÞìàõÀÿc[i\ëz}æ=kIæëì0PÆt´`Â6žG9*–¦Ùiqòc€·àå3ãJ‚vi«¥{N/_¯X÷µSTßP›9ð¼=¤š­z”ø±d5‡ü`ˆDÞí› *k7&ä=!§ˈˆT0{ª³÷aåG ¢a˜ØâqœÒb ® ‘ÊÏãØÛu'˜¸£aÍ¥–bTöëº-ïÊnl‡×Ìh¿ù wÇ]Å{±ˆëxlW”5?Ìoªô<…EÝFÚ|AfN>Ç þ,Œ·º+·°¢{†4Ç’aß¼å(tï…¸>ŒÍÊ )øv{¢û¹ó9©A¼ l(iÎnLR°Z>µ<_sðíß·lÞ=›×m/·sJ¶!”g ¦ÛøiÁŒÆ`–Áì~ô)2b ¦×K¾ì@êãblYZ¯e`ŸTÇjùs±³á±IlûAE‚E匧,Ö\CVAnЖòÃŽh6éEÿ3Ž–óL’\¿¯°j“o^mn²m›GDÙ§b<mß+¸òÛö%V§´šìS½öé•~_#èÈ«K9XH÷i*qà q‘ßL95 âècVô&C¹"¦^re4SyŒªLb¡öŠ’_´$Û±w–žõ&çW ÄWs++áûc1SŒò{•¬ª}€ʇ ¹«àåTŒ±‹=® ?ÃzqæðÛ$ZMÿ£°?”ÅK?¾. [è &ßã+½µ|ÿ1xKE­y½ØjøçWå­Dt^97¾Œzv`3¨¶ýå¿„¥ù­BÛâùQý*¹ +µÁÎähu¡u2:ÜîÏ;éI +ú+tIɺ¦:”\ª!9Ê õ¼‘­Ã ˜p¡MJ*ŽšvWZ wÒÒ$Á!¶ØÂ/íAnqàFü>evläÿ²¹î8‰«‘¨— mÿ{VQf_*ÉY7 Ê­+Ö8–é¥CÓuù *ÿû-g.ÙZÊÓ Üò BÀ’4÷KÌŽ:J`äÈ¢ZÎÿ¿|^ÿ{™ô|MÀ²ÅÎb ‹g8¢ß‰‚š¡¥*Æv¯Y\E§f‹}DÓ@˜ÜÆÆ,E¯^ß­ê”jp#Û`ÕD„ šXOF;>,;'ô©Ç/åUJ³`D ;%î¼+‘ÃÙ̸EñE8¬úª{´j/ - 3T*‰T;7üÁQµ¯ÜPŽÕ &žA_0€Øù¶)À•2Ø£éow boèzyr†ËšcO¸"Hë«{ÇéÉ!¿©†o|`$5f5pÆ4‚¶’ÏwxÏ ‰wS”®iH7F;;ºo'¹ƒ „pšë²ÝͶ¾X+÷K#¸›x¼F–ˆl@}áßH—ÙñŠ ¡Ïs¡‘ºÑ·NJ BnH{u †½×3·¨ß|ŒÆ]„‚"”}TÙ¦HÜnÏ ö^:à½"-ÄÇØ\ΕâóÃÊÚ;ÛLSU}È–d"°{7æÁ‰9:ãªÜ‹‹‡Ö5z;c¯Z„š6¬ªò• ‘#'¼öÝóÐcü†iM½G1|è¢NK˜üµÃâ]픿™0•ÖÈ}½õ•NX­ä{3Áh1ài­z$XQqð/7u£è‰DªÈAö¾’µÀ5‡ñènùl¿eÅìl1Jµþ¢œlûCÕa1Â7Þô0ïû-Pgp%ÆÁÁ 9x9Ív¿*Át†¨‰oÔo^·>€á¹škTA7ÅŠIOŽÌ®¤{Ï%ú·¦?&Š`úKOG0Y[ÕJ i‘^е:[”8Ä5 †2á}ÇÜ÷ÝÀN¸[)£E<áù¦ÜTc”•å¢8B›Ùº ͬEdžCd`¡ë“ 1ó¨`&˜/­)4D}V ê>†6¯÷•Ä,Þ£˜_F©Ú;·Õ¶¥žÛYÔšèž0YÒ³nk´Ä¿JcËÞÅ=hbÆ×—¬Z¾(÷Dðxë¢ ‘«p૚Fj9þ`ï7Â÷ô\9ÏçoKù.K°‚®QÜó#Σ¹ûëSÍ÷G“§oFèýþ¹-þ©î,#°çáªC7¸/þW:³6Š©ûZ‡1èºÊŒ Ý}äœRýöf¤ezÞXU~p¢xô 4Etƒ=10ù'=½è-÷ÿ…ó‚Ï‚°¦®²dVᯑÕÇP›Ö8q}~Ð+Éå0:Ãr’$ðZ(Vµ´U~N7σ.ä³Sh–K0YUzèQ„j©<ª;vx¶ÔRÍqS]´NužRSŸ¤?ëZ{J›¶£•?oU SîÍÝm{ïapac8éÃÜE¾ì¢Ä[ábf\ìŽÿS:Ë1À¦÷€¾e>N^‚G Æa»Ð-ŽÄ¼g¬ænñô›Ž”°¡B(wœVvg_b|Kj gÊœ?gÒ¬*oÝͺd>kh ÁVŒ6œBú¨‹  ¢ÇC „¯NÂgÚ[=«WöJßšÎ0i-u_*Û²lä öÖ_V31.Ȩ=¬ðbüÕ~Üfôž/ú_Æ{â¶kb Æ gÐr½õY‘Ï”ÂîâžY…úµcûޏomäš8ŠÔR¼¸°k‰¤¬×ݽmžC;`“f÷LP¬ 1ƒV¤äd¶0¢ì¼þ¡ý‰L 딄Œÿ‘®@ÊøŠ8}ØLm?ĉ\8ZP´¦2iy»ðô•šâ%jk$å\S>”²»Žv"·X-hö ²±BWÕ†‡C“ôºË.N¤?yüƒµ§iÒþf ˜œõÍ7E_á&yß`á{°jejš gõÖŒùÞJ‘äo"µj¿ºþ&g ãÈ’4;Þ‡×3NJÌK*VÒ,<›<7åC 0ŽÐª(g$L[\<Õ@âÂ?ä_XPмLÜÇž­éÒó»7Þ&a!êztÓpA0ÎùGm¼¢¨Í7äÿ†÷"® Ëø e‰¹÷÷óÔ´fµ i›o1wz Ž_xCJá7M¨?TÇ_ôìÏ~¾pƒ¯ê·±LÛçKÒÆ¥ŒþU&jF¼ÆÌ”ÛebZ6/¥m´³,àürÄ.€X63†.[ÅÆXãˆíCTAWgû5–Õ˜ßúPæ*lÁnFÓ…§óÚ¼ÔÚn³/ù;â¹²bVùfu¸úõ¾Û:1 ²VèQàQuCxúŒ²£<°èó 8s?Æ¥Ÿps­»§ÞÇS1/ D +{ýÇìɤ ‰Xؼ0H~¬µç—S¼Lkë lh×*ºŒÕòØ!èÝ÷ì­8ZóíBãÿ¤b,zÙÿó8Þ©Ä0¿.ìo¾&'“¢·èı¢h+R&j' %Ó´'T²G'É:§à˜¡•%IFbNÖÁb=ZJ\%!­¯NÛu FÜõÎlŒ–2ºûŒ³8yPË—€LXê[X€ÏSÔQ}÷\…Çá@ -äËòV«SZ9)…“³ô¤Ò-‹‡³A¨àZ8ا ÿ‰\fÁä¶ùƒmT^¡DüÕµH2›ét»¬†óøNô–PBvÎÓ?q`¤9×$Úï–™ŸZ)§Žò«p7š=ªôÔ‚&‹¹jƒuûù[¯l/ÄX“‚ÓÈCnž½Y(ô§d¶© ŠŠ,“óZ¸Š<¡7 €ÙŸž¨ã 5f½BJ–F×-K²*}N¼ÔH9 \f5ß `æ'ŠýñÕb^5_rD L ?=·Þâ©Æ]æ‘É|*ñ&…zWžeGàÊk‡Š“aKÕfh*³­ÙŽ?cœãt“§SÐH¼[Û)Øä%EèÒmàCðp¼©Î,¾x­ÃU™ ŸÞlBoéþÊÊKó ó¿³¡«\s^q |ñW’ŒÎõã áM.§©7p×> ÄÙdt¡±þâçùŒþ<5çÃèM$²p…;Ö“83–mdÇÁÒVkTNxN°.Ø áHV€š¹Ç¼v;¸?GôIjpÉ ßG “ pNÂW—l’ !uÖƒâX¶~ŠÅ £@Yôù ^Ñ@¤³GÑ¡h¶ìá‰Æíär  É2°ndà€0ef…(tÅ5ˆAÏ{†öi&qÁþ¸Ì’ûþ 'àQ¡ R$áÈ¥Ì^Þ Yã€eZ%*@Ÿ[N µäûÓp_šU×NË\K^áZwTœJæ¡¡ºIÊ9ÜÍÃSGKå4¾¿1MxÃ&8Ä6ÏÞ$‘™³±‹ÇÉëßÞ:E:éë=0Rm&Ûà¥$JÔ6T}vfó&£OùgJqPÅ/O©lÛX÷ÉJè9ËEÝ5¤~yÎ{ÌlNå‰Î+NÚ†g;12[Ý ïø†}l4eЛê>GÏþ„ã?=oìöŸÔãŠ1µ²EW!~}¨sVu›u®>§ZùŸ^-ºAEÜFóv¬ó;:¡!IбÂm.Ì¢+t ´| ¨§Õï Âï7#IkÏçÞ`þ\§­;c/¾Qiµ#íÿ&·ÀºW›¬ ,œ[¬ÑIBU´n˜Ÿ±LjõE;Öhê6If Ý’r·y¥Yƒ¦ÉË´tËÔß[‚HBú­GO»x³_ú€¢%ÞlªçµB÷î¼ó¸ÿ¨àØI\••˜Ám¶IûcB“ÇcÜ($´ôÛ™Ö²ñ§míÛåâÚ¦XA’ðX~Óß²“ã×2»@qÄ ©bz|·Tu%Å’£ê’q܈^A§ƒµG­cø¢×5]È,X‹ ÂÁ®2O«åzét°³×¡2 ~Î?ì Cm(H™œ.;ПY¤e=×2WÎï÷‘F;¸Vt[P€ÿn_1ë&×nFõÄ5¿fœ¾V/¶ë+ª–Bsß´Û}ñ3âË,\ŸGÆßŒ^ùþ7Å)«v€²¬.jV©4|Ø=ˆñ0ªh³$ à¤ÓíŒ]¦ÊÇ8µf}Ta÷`ËO è;ñwýFÚñѹöO¼`#©Ô»ixàת6åEïæ!s,×¼{º;, °^»JZ¿ÝHcæý\ëÚðØ.û«v‚ÝÛŽqùyæô“ø3€ ø l Œ,-g}_øZ†ì"MPY3\¹ž‡6YÃÑ›õÊàc¿~P©°¿´°í=}WTjÏ8݉ô mÖ/+Ul$´´U}ŽÒ×ã÷R¢døz)¯Th܈E ók•@¾žT¯-ŠŸ³¿ª>œ€æ¼s©n‡Û­}Åäžž Ýô;PÄçÉü× ,mÞ‹°``t§ØëÍ÷þ‹æ]홌g´=áB“LAs>Ç‹ævØkôügÆcGð^ÚÎ])ãq~=¹u|rÂûx*&×wŒ+'~¼CÆ?©Äçá­-Цûï×<¼Ü 43{ý°L¤'j7-æÚ‚ôfu›-~¶WˆÃ0rCÏÛÂÕ¬Òè€ A“¹ô"ÝGD>i5žt˜‡2Ò¡ËÌ ¼çogfQ3þÙmO Ìà&âÞ…'0,ëkÑ]Åp¼}j·ÐíáUÏøºG73BfÀ¿­9Äw&{ Æœï yʘ?e)£$©k)~íØìJRx0RRga¡Ý½êü)ág(¦I1÷’(>-Š6ZèbµGQ'i©Kû¿†ç à˜¦*h›çªt`£”Æ‘aü¯°o—Vnúu‚•fvÒe‹W‰ ;ð:ÌÞt“éB%äN„Ç5¬iB¼_HvP #æcnøbg$+7ã©]Ûæ"z`Q5ÔÓ3<=Œk*9)‚¤]=é;$3ù¨Â,©‘VD”<ÑþûêˆÌ]»äÖÎJ£·*$xyºŠ€Ú㌠“Ç¢•Uoª€Ú+Xoi{XVf]P|²õ™DÖ§C<’!Ôw$ùþ‚YoH u¹µaSã/Š*ðbŽñ¢.%RHëñ®ÓˆV ŠO|d‰á°ƒYÓAT¨©]±?ã:ÿýõ*l+ î…lps”OµÍ>¯^.*Ó:ƒÁë¨gÆ=-škáÒý£¶R|\•—Al\‘„™¬–×ýž¥ù<Ø2߃ ~g¼Ê†”ÿeì+áÕš˜·&MÍlOã –§qˆH¦à'ïðÝmãç&ІËå>‚×a£©é¿ ·Hœ¡½d¬wˆÏjãbž»!W­ÂYŠ%‡]€Ë²æ"‡E“¼Ëk“·g ÿ¯ƒ¾Ì$JI\Û¥Sv*Rî9YKq ¡Å5~4ׯ¿jƒÄ¼'÷a‘}‰ª -wµë1ÑÔm•+éßä¦ÕÍ/”‰Úuøü/˜Ö…ŠT ’ƒûI±8!¨Ü5IhΩwq{¿DH{ )¨Œ–udv1Õ¼Ó@STzT³s'^¼Tk™“‰TÑNÀ~ü÷) )@EeV¨ çLþÉ<)Pj•°U…Ö¨a–™»£¿>¦ß œÁ4f ®×Bñ(¦³’‹†˜`©(z¾ÿ—üж»¢¯RCr$L ¾ÆüìפvVÝ áªÕlXçJ“6‚©VØ'âÈ®ê„ëïëã…Àå8yOv®­÷¦êx=„ÿ‘ʬðypդꛬ}Ň3𯹜ö\Œ“Ðò¹ 1¤7rFÔÍöׯ¥&© 4ˆ¡ÍߤRoòì<Ÿ³„n70ŸAÀŽˆ)Wa­!7G8oûó'é'$‹™aOäºn|hZ07ÌÜÏíÊ­Ë4hp0 Lšà§ >çΪÙÙë÷pyx1dB¢1çµ’­³ï·Âåž©`ÉÜÂÆ}˜gº¿èº("è’¡+7×óS¬²Z«ÎäûôA†×RþµÚyZ&UùþÙìnž=]wÞSµ¤-¨F¾øUÙJ£RHcänß3‰7£]RΟâÙÕÍ™ûÛ&Ï€ÑaôñÍþÔž ¡ãf1/²Ëå’ü:ƒÄtÒa´IanEïkI*xv¬AØ|ý!ð7{5ê­ÊÛNJ¿¥ó™ø9­n§äÓÜņÛ©¶wxsl¾½Ó@¯|D»!Ø¿å×^øœ×§©èÖ¿ùÅQñ‹];y¦Ö“ÂmŽx ‘‰5tš¹ ’ÇYƒ[y¤cqs}#;ŽW¶xˆ¨I‰]2¡©¶©šðÈÎVð¹TsÖ¯ù;"b$6ÿ$æµKþ¨ò#É$].°]iž8{ZšbÌ­ÌÎèâtT÷‡ÈvŸùŸþi—nKŠÜ´nÆ[±4'(t4ôÈöçÒÑùÑšvS E+¹K†˜Oxwâj ÞrŠkº”¹<}9 ‚Û¢½Ç Û°­’­æÇ|¾þX9dms‡€l+;Ô¤ÿÅél=·»ä%#Ì¢Ü7å/ºðc¿–ô^WIsàm`SKþ¶3·p€ì;f)w7æ–e¹†µ×‰*Óa@Dû¥UÝ×øIéÝ3±?Ðøï¿ÁÔ‹7|FhÀà #ýônÝzTBËKº0›µ€"bŸè _Z%†AúŠûý¥&êUÓA/¶þCÙ´÷À»5Ò¡{ž°R†Ðìd´Â‰÷Ê ýnR&ÐÎFüæ€EDx$@V;Ô¬!¤ÏÕhyŸ/"š|{cä½TÅLò–Ns“ ²í0Ð:îÉ•®U­gZ "/ÐI5¬{œ/8½ì7´ÑŠ*V{2¿ã¢d2}6⟡$=nBz"¹j±yà ‘ïŸ^^A!‰ë©ÃÊ<ÝHÆÝ~ w2Ðïlpø©@Í~D>íÎG )X#ì$ÒaÍtÚ^½ /ï÷Òócúp† ´¦8R°ãã ÑR3ZѸ^azÿH?A”"Ã9G­žF†y>z;²ÿg4“.Í´:bÌÍ4µß 1’ªrå[&©ˆ=miÉå“ >ƒÍkŨ…¼P8ÞÍàaOE½:PÔ¹1vëMúÚ¯Á6Õ}è$QšèäÝïËW#8£x;(…m+Ñò´ÀKfWù€Ž˜?QS-Q­V “Š\Õ`º«zT7Ðïä2c y¹îXéNqhapo燇͸1kT“ÿq¤ðØöóÁpPpµf®(qªˆ¼XL˶ûl\áZy a~8F]Š0ȇæÃ(Ƥì¦Z{Si»bÞðUD ¸³{ór¦'ý£9º8ÂRÖ DHŽ4epOì;y¸ýÐXHÂ#¹K=™µÝT棘 'Á cn M!ë ó6 ÿœÆœ[5çHËÈÁ;rÆ$Uìøu3(ŸÉ'-׳Z>[yñT[d© 5qq‡*u·éW· ‚BGÂou6µT1É——ÝÔßÜWtqšFwpÉÝÀGý‘{‰ÆTþ¢†I¶àZ1{ÃÚó-Â,¿xéXìÃû¥·zÚ$Ô£[OÛ6m•ò'ø÷â$à‘›¥+ÜÓ.¯™Rá-bò‹Ù4D¯–ÊÖÕÕÞå¤|Ð5Ó !r õ•T¥Ø PñÈž·ò¥§,ßðöư š<;a!”[ÊãA qéŠ Æ»kŒZíDE©PF‚öémA©8(„UÉÚ­CC,ÿµƒÆ^þ"‚ê¢úÖÒãLŒ¶†Î¼ç›ÆÂôIÑNú¨eÚ¯Fü!ž>Ýh=U%®o<`Ù{Ì´¦cþ¾>ÿ@0{unÐ2C™Ð´ mΞ/ÃÎs‘ ³Å®ÛCìÁ¦®YÓ¹C“잌õªüõ¹RÕoíuу>"°ÉEÊ껈*SŸxÜb©‚@£/Óä~TÔ—w)ýÌ8=×_ä©}Á°’÷%(ìˆYÿIùkï#™ç¾U×Éj¸€>½pÈ[˜¼q% •tzŒU<|ÜÆVLVÜ~â{mWðdÓÚNwƇuk¬•DÝ¡÷ƒÎóBEÖc)üý#ê´p=ä_Z¼ #³ÏЖ´qÄ@æ³;·EzÐeÕ†¼º‹€$·¹³˜Ýº œB9Æ }7´YQ¦ü?ù›‡Öa„YÞ»“@bÃÑÕÏÊŽ6 ç7J‰Ý+&ׯf5]ÿŒŒ‘~šêCHlÅ:O„SePDVú>B%˜ø­JæÖÉÕ¤qïfwlT¿uÜàs(“Ý·U 3¹p¸ñ&K‹¹w ŸÖëRv”ßÈŒ§ðvë¾Ç¥íÏä§÷ž3ÁÂ×E£‘kzÜîÁüÔ«ÚÅy£~˜yvL,é㫌ÈöŠL¯¨H# !‹ï3ªݧ-†ðÙž()v‰äü¢ÿ­)ÒÓŠ º”Vxvó––¤üI—¨úF‘êSÇUÖ¡„Øèªgý_‰`Œ¤–=/ÚŽÌlÃÞYá_ÈO!·Þpó ü€ûÛŒn¾13Hw§ä®=R ‰ï/aȼs­^1´Å¹ q…c ›"T_çlç˜+X  ß4ßãºÚIàÍWû×élÞÊþa?DÞßÚ¿—} Z‡Ø¼Ô¹ãÁͳyª8» /êýieL—¤À3lÍig÷¬k ·Ê)1¹¶l­ ©÷]@þUˆÚœŒLoJy ˆª†ÁæÏî5’ní0”ßr#Ls'Ã¥ÔíYO‚OÖ(㫃Ûdz–C¨Ôqmý¡›Ú0¨m(tSµEºÄ±9@—Í †cƒ0Ví^„þíŽ UqøW\ò7¦+ÙÏ “þ˜à|UÔFÎú÷ÉŽaOÀÂ1TŽ÷{¤Ý·ÝØÀîÐ¥§¦ !^}hº ÀØ|À{Ñ¿d ÊV{b/mT|%|€Rªl¸|T™ê¢f¦~E÷³ É<>KT‘1|–€:À­^oü4œ²åÏÍ#Ñ-®ÞeC¶œ`WrÐü-9(P —‹î¡‡!ø¼ìæ]l‰uJ°jÚ«˜‡g>a¹ŽÓäï…lM$’vØ™1;ª-ƒöÌßêÿäc-klÇm:žÓRÕ¢ÔÿßôG¬°u¬Ld,rœƒ>9õfÛqÛ9ÂõÞU?Å ©õ6þʶÂyÚœcf Êrj+øø5¤Ò.ñéÖØ: 5sKsg¸1ݱ×Ãá]a7ÕŸÓÇüºï½L•û©åð)µd€e¹ÛÉ/z ´µsñu¤½+ryêO$ëar–W®Õ*ç2Δ¸DŸ\Øλ\}=€Â&³ƒY' ç³(tz¥­„ë_µLl76A¥g„P+¤ÊÙBé ¹„-Ý0òÊyœR#ñí—lÀìëÊhÿSˆÅ‡òe[ÖJÚr'–siª+ÚT, hä¹yi#³OXWEH%*uËñß„AÚ /‡)é3W¬u› %fzãSãkèb*¼’>{ .õÚç ði#ßÈÝVí^â^ð­ ‚©r‹£Qú™•jÌåõ-O¿q¬ÿ0ÁöÀ<À¡0¹APr[$‹[ª*À˜i¶öŽ]è{µèÏf™®U—CñV¨WBÁÝ'=]ol®s(§É¨aˆü5²¿@/ŸQûXÓe_ Ù]z3¾Úöëùs€Û÷î2Ê6¢Íƒˆ†%­\)Yv²8ó|S¹&y°Ý³‚Ü»ûwõ2‡äÔZá²Õ‘Î^:~ÃQ°³e´6¨°:'¡L¯H­ÁªÙÙ± ¦æ‡²®×G2‘?[3b•{KIXù‚&–x7ÙèÀÚ—:0š9˜ª^줷tnWÁ_ÆlmÆ'= Äso ûlhœX,µ âkÎ}F†˜ÈœF‘Ù>žF¡:¸Œ[ Ü–?§[b1{àzÎyh ê æú?W·áË¥|¢¸%%!Mg2ÌÁ³_7…[šê'7ž†[ÞÝJ~ê·‰V‡Ò9©êßM÷·e›oàAÖcL™úKÕŒ 褘£õ3câÝ3›¤[®êW© à‰J°ÌdA¯H5÷pû€ìØ‘!²cÅ·ÎM5¡$@þ'ˆ±ßñe@‚e®,âT—åh]xVr“†¾Ü•ähõü5çP¾tcò[H®²þ' L­t]½wÛ‚ :ý˜õ<=°Ð¾j ßå'ßð®÷ck?MÀ, &M ;8ÎÏfådö˜<Ù€õ`ô©=ÐU[áVðˆ±¦”82!–Ÿù‚Y£_@:£îD/wºv»7øÕôüþIyzȽÛC5Àôw¯¨ ¬¾¾ÒìLt;‚œË–„t•hÅë2ý…©wCηÅÀcF:‡ëkÓÐÑuw¼6«†5û¹ùûÏ”žë‡µú¸âE”æJCëšNÿA€ „-5q‰øÆP,¶–ž9, 64+ ÀDÕ÷^|Ó%ÜþlŽEcU\¼ºr©¥Ð›¥B9ÜØt ‰÷ÓѦóqûŠ»ËIgž[hÊì% zOaý;ü W‡æ÷€“}+æ+ZÃöðñûÞõv qnÄn  u^ð‹Ö ´ŒíY¼Éaªó;+f“!úS+F_AûfÓçÝ5‰,ÀWçÇÄeµíÆ,³ÕjݬfyÇ„b”À«r´+Ðfjù¬Pl‘2 _õ*…œûA0Ýh¦HÛo}šcˆ0ë2Ô-؆}ƒƒïßOÌ›‹FÙ8ç”ü» Æ à5Ä»Òr)Tƒú^ìø•$ihêr¹¿¼ƒ#Pt ?ÿ«¾>*yyßÀ©Åé¡ö7›\-y÷-«Ð¯ËõKN«Ü/µ:çEª\Œ‘`W,¯pwç”)“BëÄä µÿ^ ¸©~y"É`sN§ðKº’¥/qúë?l(j½!*I픊5„ÝÚh€\7R™y÷¢êÞ”Ú,m~þuZ½0›6¿×/–¼+FÌK^HÛÅ ÷ˆI~™Tµ»½îò‚0í*T÷wUwËÕüÁ:Ú·…ž?нt†¯ÑëÑf›Ý¬à ˜$êêòêð =84ÿªš-Å«r{n°}žóSO\÷ß°§@9"®ŒÃ Ê®¬ìYkz¾þE/tË€V¼t݉´È–—A;íÊ,\]d‰×XbH+vköq9›¦ …¤AiË g«Rü黹^½·|->,ëX‰u!#Sœíð8Ñy<@O€i­Y»‘#€È¶=Ëî%>Êî‹¶ÜöÈ9SŸÅð¡áÍQ§¿'R{÷£\ç¤,"õ!­ÛÅ´çìyPD¯Åþ r´‰ÌÚ:~‚êT8½«Ã¿p8yŽ’š6ìY…|u§ÔÒ•idÄhàˆ+ªùDÿßÂw÷ŸlZ.Úk¶pp~[lñ«Êžzq´¬‰kméÄ$f‘¶? ·Z­»mpKIÝÏ®û‰ek\F{‹hõ)‚‡çUy.8¾•Èé$kÔ£]@aÉD8¢ "À#)L_âž L ·᧥Õyõ4Ø#–³ºÝëôp3´N)ßq 7É·sß-;7z¼åVCÝ“º· ڤƱ«´d­Ó=C¦”£,/³w@c‹BµÀfôÊüE^¨ŒDR\:4Ô"š/ÕàiÞî0õÏä .€Ä5¾ü:©>mâ8]PV©s›Ãœ=çë ÌK›h¾‘ò–!v¼ˆø°™KËs¿…SBöpþ¹vÂ/"l,À˜- Z}{¹X­ä‹FßÚÈF[[gûc…ŽZñ9Ý».úôÚ`åÏMg|R»ÿßGtïÞ4ùü°Í8"Ã+ã=mÔ€õyvLJ#cü¶J@`9¬0Ñjä(¿S¡‘™{:Ó0fr|' veõÖáÙÕ~|Ç8\džèûŠðîìÔ#£}ê a*ÙQq!v>ÍD礋ëÞêuØÑÇ!Ÿ[Úöí×ñÖÆx±w=¨-—>#—Bâ6Ĭü/ü°8ryò}´ô",û=[«Ÿ Ý©×ìI9¯ànÞ5yqE}ˆ-ºË½XÃÜŽ˜›.ü¶.qß1eroŽcŒØÑ†]½‘èó1SÉ/ɺ fÐ¥Q-Ø4>•Q OtXK±rðºéË» ¹Y¹©ï±›m5ÞR¦ÇF»?™l˜}õEÐÀ]À•àw6ïæË­^ýHþÝQQÄ$ÒÔ#²eNò•)$/QR{ƒÀŽFŽkˆ ýÇ‘T®á:í ­ ƒc>H–YÄUŸs«&¾èŽéÛ\ðFÆ ýƒ«…ÒºP4Žük$è¯*Óu`½RÚ×M¹v›Æ† ê$•nxóå|™ìZ5Ï {•׿×0‰1 ß»w¥[}ÜxEnª)aëÀb¡él/OÒ9™ðÁš|^"㪚Ê#Äɬ—½Éòéà)´e6"¸(,}‹pz1¥r'ì fŒP_¡>‘ çsùNùðÍù3d¯4‡Rl=R9Q)cøPQ )ê?}GSÎfdC¶`-v¸:ßpLž@õ‰Ææç hKÉÓ»O„ajÉ›uZ@Oádæ÷U ïm„ëUUý½‹Îæ#ØD©tu3ÏQEŠIäòL#CŽê nšLÜg|Z‰ßXÀS&÷ÇšDxˆH»b¯൧ÙkŽ´†nIÝ } óéÝéV£Ñ£”WÞí7ò¨&h1] ÑÞ ²ƒ²ïõY¢ÆÕlP3–r^…!ã%÷Ö8cÿž›î,‚ÄÌUâî#7}ý6 ÖôÉëìRL`Dæ)ýÚh DE?͈y2Àe‹»žk®Ù ,ÊF}g2`®.Òµˆèð§à9ð{=w·é닟8$0Œç1óS÷H<2ÆüÀÔ¦™+?XŦR]‚ âŒâ¢ýEI–Û²$I>¡„m.ÄÆ}5’Ò52CõÓ]¦d€c–!ßQî—Ò1À[jü2;z·ù|]›ìS×ú‚Ú]FÛà9þÈÑê]65×cÁ Ì„ί?N±áä½1ùÂY"1ì›Xk†æÙ†(K§‹WâìýxstaI(XN¿„z`úújvÙ,º Up_ÙáæÕ='o㈜ ìÁª˜ÓQšaÁ{u”á@¨šýOÀdaXI1]]7[ƒ#qwžq•æڄŰ"/ת #b#R‘$_Àù-²ÚåØZßE±:æS÷ƒ•þj©¶¹”c “vÞMBܼ,¬Ïœ£=ø æ÷ÞmÜx”¬=SEÎf.bŽ…Ñ3\¸ˆ$¹Ú&0³&¯šÔfêqïæÝ‘'˜m7”—žñêåb½‘X^&þÓ ç½)Á[€VëoëÛô79éЇ`¤áZ ƒéÅÆZê_gQMT1VâT½Ž Û³ÙýÍÄl4l²Á\ðpÝ—¯@súñ䥸<3%b9(Kà@8÷¸d#æÇÁqFçš-Ëÿé©7||×á·1’Ž\Ú’»ëßS$JmîTæ¾á*R’!‰7ôZÛ+Òxã(ù³5ÏIÏe~2”™–‘h£_Ÿ3Ë92褔ùó>õÛ1WCœ¿á3ÁY‚^V 6ÛI/=´MŒñm%ð9igõyæ¢~õ‰°îY÷‘JŽg%ŸÁ>sÜ3)|̨´²™(¢÷ ó+{y«i$Ÿ‚ÅT‡ðó9rmÛ_Ž(ƒÖ Šž`mˆ¨ /¡ «×¹ùœoã—†æ˜f ¹8ÈÀZCùàj¾ìUZ¢Õç _l18s+Î…^¯Ë¤|ÉßJzQíêe"9º^Ã5ÌMËd_4Ú‘¦ªÏÛÇSõÁh7h fKõ/ûSPóí¨cXëM_ñmt¯º®.¹»(ÓÁ$kîö¿y„¦1@òX|Ž:·3¿¡h{R'­Ái?Ô>¬ªØÂ!42]{h‹¼‹½"¬Ì;Žt@êc½ ä¸2«²—.Ó•ÍÈB ‘í$wv.ÒØ ªõ³¶­õ‘ÔH¢[êÃËF÷E@â< §IÝ9(Îæú-¿æÞ†ŸUº‘;]s¿é:ÕÇ>\ÉÉçŤi™a×Ñ®s:ùñÕ5%M }7iÅõ 瀰4±Ø]}`1ûKðŠ×å™/XbÙÀ¥wèÕFj1Âk?%(A/y)Q&õ²È>R(¼º Nüã=«pXXs¢Â3@³Ö.؆ðªŒ+ýƒ•ÂÈçju/)ž‰ŸLü®Q¶ìjV:hR& û·ÃJž)!;5™â¥hþó®â€÷Á7@±¥le1ýÈ‹$å&3~í¾ éQp‘_Wd]§òÝ]‹¶ák¨ý5»Ëëµõ¿|ź¤0Þ¬sÔéYº $œVÍŒC < y‘7û÷–$È(®I?ºG+Ú r£¡/«ðfõV‰)SÂ}JP·ÑõA>Øï©|鉾óÇ0úîåa‚³–?çÀF6<%ž¥ªâ+ÔɪÛÛv 1¸Ë'¼{C!ôäKDùáx{‹ðÞÌw0˜žF%|þ5 o Teê7jÚ5å'6»÷P0‘(æéæ>ØŒIœBïV‰. PÒì%9KúÑóc$ÂMÊüÙ›ö0•ü_ØÖüç~ém«aScæ(`'Éjçu¬u± ¶R#ƒž™ÞÔ$¬5gƒëlÃ,§Ìí!ÞFw]óSto–æ²U%[ <»[h&q½‘6e?‰™Ú@§äÕu %Ó«hâ£nèl˜ÐjaÍx5¨äIÿºí®i?EÃÄ w4“÷ŸåÃ¥¤ìA4ÎmSòûûŸdžfDJŸ¦QËà” "pm\uÞêêÌA%úÇl¸ÿ•.Á°]ß-LF̹ zÍû¿F@ÄÉz®YÅSA´FÅDÕŽ]M¶§–§a pu?—·Ç‚xXÔ·«M2òêGÀôë¡ýüŸ®Áê|wcDl81Å÷wvׄ\ësÉóÀ¯j ÏTDÛ–.I´æ.ô+v3Ëÿ(Ø ý*ãÂØ37§"7„‘»yâcËUˆV–ð§º7§ŒÇvD®­3/7s°Aª(Ê70±Yõ,¡¢¼ìo™¯IW°ƒä5±wŠ6Î`©¬gáŸØC¤„0já7:ç\Yâa»ô„ fó·ã£"¸EÍ dÏùÄ6E¾â:ôŸ¹ÂŽbñΓ¼m”ÇëµLžt^Õ”‘¬N;ófY¾¡c¸O>m- Vx§as] ´_Þº}’;Ê„QqΜfŠ@‰Uö¹c›áåŸKT“K"ý»ˆ÷t®ß}!H L„‚e½öñ DÕúëJã‚Všaqª¢óŸnwum´R­ÊT–ÝFèŸûÞ~{å Å5QœÛHIs/ܰ/£>ñbðï™îTpÈi7<ÛÞ˜…·ˆ8°°&,²¢îq ïäuêMr9œüçÛdöB¥Vî§Ä!—n‡†›Öã‘B–©LqràŸŸr×#a¸Œ þŸÚ1†Y:¯m‚ì}Í1ë¤iÙ§=Q}Xh§ƒÿ–pxK–ÕÎÄ|0øÞû¸Ó-$=i©I3§†{gê”èu[–¦YÊéQØIï ¨äÓ y/i}ßÐÍ?VÍYxœ¢œþm¹pL/¬U^ H jgñî:˜ç²Ø¤*5I”¥^QÂ3¦;™QœÂ8°¡¼2´c—ätŠ«ùìg×bÇeªX’dqÚ¬†­ÛFW'HAñxfk·E¨)£›hÎn€{·üõÉk6WpAèEFF8YYƒsŒN’iD>ü17¿7] òeà+7ž÷¸É埡´…uÕãõŒ7ÿ XÐ>Á80¤Û¬A™=n°ˆ\é”@á'Ø5¿Ë262äþ_«nié.gQîFML=›¢léŠA„J¢·:®·Ð{?bïù«ÀˆîÁ¢V èT»EK £>Âä ˜ù½1«“cýæ]ÒùŒÇ›"ÀŒn—Œ<]…%øØ;:ÊíÙ÷\ ødL˜ÉC EM?ÄÔ‰´× ⢃ÊäwJáÊÃuÝæmk’ÿ ɬå~åðô)ºèþÿã¨U$c}ãtÞ䱇0ÆI×9aß ŽÓÀômÞ28¾ÊÓÍ?„FBz "‚&,“0Ã3hý;+af Üù¼YBq*Úª½bÿÁ‰ìbw•[> WDUœ%Ñ:0Ð –÷Ë‘‰¨@ w2_°?> ã§m´¶vÐL*‰fl21# ¯"X,¸¯9{]dG¢ß½`¹H$l`Å\eϹæ[YDýrßEª–åT.9‰@K¯Yõ‘¼J×ÝÕî¾5µ±Âá ËãìüõQ…7¿â/YÃr–¥^°[j$Jßú^(¹˜áì²âçuÕÅ£[û‚jzõbØõéˤ”ÀGU\í?÷ù·†ÐX¼¡ëqró¿‚ï ÚM<› ½‰MŒ ÷šŒ^À¢æ7IV8)*ò%‘ˆ®‡ø¬Çg^e‰•8²uز¯^A‡­Mÿ€æŸ¯šeµžQPÈ2¸ö;DÏŠ³i&23õïtqeq{#¥býuAÇgºç—Rõ‚RZ0÷ÙÕ¹×<^rò€²Y·ÑSûÉÕ+„œúò2MºÿÎå&â³A|c¾~àSÚT¸ë—À ›¤Dm,îræÌSÎtOnxóŽô÷ã¸ûe‘p‡z bø»s|hý3¾L݈·´Ëþ—•;»y×sñÔ-ü“»T¡3Fe“«€¥Ü¡’;Š¢¸Œô¿ênZ¤?Ö¸ëSqöÿ ý –ªšÅÏÅa#ñpCÔ\ •­ÓV즯íecפ_n‰ó×D,•æ—¦È@‚1ë«òHVeLA»Ó8 Fƒ—†I|Ç@O¾îrËløC'àù*ÿ¨~;*ÒQ5Îúb«Ÿ£6÷ 1áÑýàÖk<ÈРÞ;w¨ér19"~à‚LuÙ@ç¡vwŽ À|Ø·ƒ ¤g×&Q3|¹SËý³/ÝIM\‰këøÇ‰^’¿†-Ä t⇌¡I½|’¦Â«ßØLç9ùy[pÄÒ‘v»úJgçÔ÷Ët›ÌMmÖ‰(êY¶±Î1}Â’kPöƒ` F“•[b›H¿Ù³ñð­zLe\ô’º†Ð ®À%½¢':brŒ(Ô{5ºO'Æ„n «_9¸«Ž½]¸ü½G†tôÿü9Nh½&U¦F8–çÓsÛsXXè×?©ù¢åì ÀÁœÁ¤YЊQ# "i3W…£] sD‚ƒ™8‰ ³-º*Κ£(€ãp[hF8À•ôX\â‘B˜¤pnZRœ©ò„arú'9‚ŽÓ«•t‘™:\Nã‰Xð ñ |ª/îL1šÕ=¹ wŽTQaM̵Æé¾…{¶9ƒAfL" @%õù’ ¿Èµ`MØ5“"ôͺá)†â„\`¦±|9É»ó¢ÒO½;¡o½¶œ7i I Œ?t°†áÖ&iuÌ?ÆÑ¡š«Ÿ÷q¥%/²å´[P7P–ì5U-L·—îæÄçlÌÊC²õÒ:\iÅò÷ÞéÏû݉ؕðÚU4ìŽÿ -ʇÉÌ×öà´«ØÀÌ}§vZXã;Ïú¨÷h»?M€s¥øXX]ŠŸ¦û†ÀFrv‘ËJÂÖzÀ,^"[qŠÌ%[qyNøŒß¹l¯ØUd\mgºVn 0èófüèÆMuàKaA¦,ûâû?<Ûó·îYN ¾É¸©D±)L£ÕJL˜O7[ní¶þ¡G—Fh)}e%ËsVa3±ï¬S™™¬?DèÞm2DuŽyÝ*»¼³_¿i³Q‚ÿþ 2䢆q²‘ׂžI[dšÏô‚QjÎr1ßP«²š˜sNH<Û ³ºpbÇ8¯?Ïš%i”7Xã'Äi 4wG’³UcŸO~4mÉÅd°15d3b}ãÈž¤ÞtiÛJ¢«-9ðЀt‘óË«d²$Îǃ™H¢R’ {ïp¤Cò»/ðy9èA ‚iZ{µ)2™ôöj½C=@Î~H·áÈ)†«ªmàñÊ'`\ᘘøøµ»¶Œž·Ieë’òNŸÂ)Gýì&&ŽÑ'Ò `ðLÔ–²~‹<ú²Ä'=qÒþ0VÛõî}‘’S^Þ&" ¯¢Ž‡ô"‘ËÿZ9@2TÐâq>ì.>†f»?þ÷ÂPO¯È*¡Ü5ÙzŽ–‡'Žm6 Ά(¥lM}hzï¯HåNÊœÉ)r”’4ûŽÄÁõƒÃ.L h(`ÌêçÕ‡ý?oÞwDAÀïÏF­ñê ±–±#ÕŸ•³ÿ¯Š—ß]ÖâLP~ç?ÌòZYžÕÎA¯àòbÏÀKi=³ ´Ä3;‰¡S„Ô,(óÚµK÷gÎsO‡ê0–øA)e0ÈE“ŶφÅÅqÂs¦ñSÒòܸ$éFæ¶Ns=mû«ï‡­‡•<,-—¼‚22©rõ±l°/su í®³™A£ë]j#sÇ•~SÑ`–áMf¹~o,Úð #E ž‹(‹ö•¥ ÆXguèQִ͹ÑXS)Šõ±QÍAÿ:¹öã«UV5v‰P !Ô™¶†Ú _L),Y¨p_*p·+½©´ÉKIÇÈ¿‚<“+Fë ×T>¿ªÿ \%rPþ­„)&:£« ššl’œ²ÙÊ©©*ÚEë»ÔÃÇ_·T´ê¨ð^NF–ÞWeqCP¹ yA…S9°åìÙ)“{Hõ±LlÖžò¿ö îŸßÿ]¢åïû*^³ãÜ«²Ò&Æe´Q.¬,¨Y ·¡Àd,ñDÄ ȃU®äøa!A+TA;}۪˖QlÊ0¹TUÞk{Ås—…[&ëxo"$Ĭí{‰«}$éŠbl(¡)Ð!k½ß#iÙ >Ku½ŽžzH]çî÷þ3fW [æHº~Þ0Ľ¿xëÂ^e.!ËFÕ "÷ÞvškFÝü¨!ôíüW )dæ+Iû§½¬¿m!yþ3„`=}X"ôD .è_‰%{O¨Ìá#†=mè ž×c0‹ñRh ÊÓ4AÑsl!+©ÇŸÁOy>+.2£±ÉËñšÌÙ™o UÌÜÄò0mþ“ @ Òß%§Òåî[ºÿÕñÆn0ö×öúÀ·Íém¶vPÑ)‚f ‹œhÁ¨üȯX؉ûX’½–nz¤¥å9¢8EñD8n R– &wéó½:JÚz­<2?¹/kúo‡Dp$â騤ÀVFHÚ ‡9Ð…Ùýˆë$¤?I.p=`„±! š•²~©Zå‰J î G7ʵ¸‚ïŽÐó"äWÕ9¦Ê‚S°!ghÓDxnƒSoˆÈñ8³m1|‹Ú‰¿x ÷S²’PIr~B-sjj¡þÏÜUøä´VIw‘ó ÐÉ×ú/Ó{éùŒd&¨…=Ä_f=ƒ².»K<fe¹ x…’2uQ§òЊFÙøMãdV¦Mn×E¨„¾S9D¨¨†\‘aeÍ6~–ÇÊj[›f“=tùaMã´SýËm€É­/ÞûŒì*þ=Æ*ë±Yݼð•~*µn˜2a®A77rè _£éçÞí"d„±¥àEÒÈ ¤Ôg‘øaÓÔc†6šÓ)™ÑæCwôUøˆ§e;á–°BÀcO­oÏ?s:‘¬~°#¢î2”•[^§‰J¯"JÖ”x¤dÚ¼di]íç¥Iö7±#!¨sçWxi‹÷òp‹_»‹í—;Â7s;ʘu^ÚÕyø—~ý®t—:w“ÔÒã­]†}¾ìKËŸT+¦ÞO# tT­âñXÀ Р•¹„?8˜h¤˜c#€t¡i•dõ™µ %ß ‚ ý:Ìí]­ÆŽêZ /C¢S‰Œï ž¬®^«ª$äÅõÇE#»o„ ÷8tÝÛÏe=÷(—¹Œ ¢|MÕ€Ü!•GÅ ‘òB]vá™gsH+UˆT&w:{RLñ¢gMrkΗI†‚0`Ëñ3ã¢$2; f*k).¿8´ñä×ìçn)Í?B±ü¿¡ÃÓß ´Â›M/y­ ¿žµ@`Î1ì³’’Ô­*ýˆ½k%åÜt±%çÃoÌçMÅÕ+ÜJqÉ ´WK.Rž!%¸+.•¿q/ºN¸Šš1·‰íåÓºcĸIøR€Þ4cXwkJ”ÉF|7m¬¨ºåâö)S^U2áðS‰c§ Ó J;ëFÑÖFu(´Vç²§ô3#9Ú”Ï(jÖò’O“2 \ðïÀáo_ Ñ“ˆmê†ÌA·îJü³"cz €MÞ©U&€Naæ†dü3 ãà;Pø®AƒÝoWÇq ók¶<Ф‰Iºýx'Í÷¯˜";ð§to™EN#dW­#Iø>ó§Cæñ±Þ‘g9°ŸFö§õª…Édµa !: ûÆa\ç)uÅb4z?(G/q> çX’kÁØjuFRA‘èTÌ®ƒ­‰D„Ò$‰ÅØ}öÄË9mÚ³éä½o Ù“úðR&Ù¶ú^ ®gª(éÜóÞƒ%*9yâÑÐE,L¹/ù@×ö†M¼[=‹§¥ËàÕ£—·ÈcUÖõ±JZ„¸}~ý¬òÚ!—jô÷÷¨Û±µYŒ°È`æR:*WÁõ­žYg6“€ïŲAUÎ5u¼›ØPHþ9ãyó¬ŒÌÙÆÜׯŽU kSèãë'ŒC‰ö,Qªb‚†´ÞsšþåQKÕ O´ Ó4]– @pC“hÌQbˆ©3OÔózp7c¸RšƒÏâ'‡9Ð6“¯š¥P¼ÍEŸ"k¸ÁœSæFZ²Ï…sŒRñž).”ÑÞ²—pVùØ­|ß’=Nx+‹$Õ>vˆ ñìâBìgTC¢½T³âeót ÂApžúPY–òšþ¡7)‘¦.ج’Õf¶$ŒÇ3ȱ7¼›)*Yžþ?`í}ºüÈÁy?H`×ḵ@íAÝ£‰Yqªá>¤'°Ü9ð´*o³@ Ü"ý nÜ4ÇwÅX^³ûüM}9˜@(M³“"‰ÜªêÙr «Ø 4+æ5jŲØ3`wØ€Ý'Õp8õ0£: ^¸àD’ÝIðHA ªŒ°áô Õuš5ìÁ®Ñü'Õ³×lbu{;,W¹ëY4-Î}⪵-æK(xîµ;cUí_*ÕÃrQ«A˜AW$=;Ž“ps…F&¯ï²øß#lñín‡òù ¤wÎà@Tö~âdÈX=EZXèUqÅDÙO)ITsÝû¼yZ}ã[—H@ZPäŸÔV¿ÄpAÓi̓‡|b€’œi1ƒ†°|Æ\ÂÌh8LA¹Ë<JÍÇo@JÓímC°;'4ÞzãÇña‡áÅî±2¶”o6‘¹ÌE6\‹©;&õ‹å{Fó\ljc!5/i×;j©€¹J€Aœ]TzÙEa/~•W-õÐ;·oõÜMIgñ(²|zY óˆãÞC‚6±Š¾ìYÂÏÂ5ªº»Ÿy¬Îÿ×iÿˆ-Òv6#Za—.C²?È%ʺÆ/áÿYS ­êŽ¡ìw÷ HÁ¨ëzLNàÃÄx’tsP¶ÀÎ`WèÁ:1©½Tbè¯â㘫>îèüëܹ€ð$°SêAi<=óÒ ,$Å[T;'`TC‚¥|üj®÷æ‚_Oì´ª:<õƒçM=Èžëgä‰ù*´2Ô:sèže—Rå§Ð†yÙç!v3Oí¾§®kûEÇ« ð–d66 뮿–I½çñ³eþÌl‘‡£°Ú*sÞš2æËÜ«`Óî$ ¥/–ÅP/äYºxÉfá±D% ß[–ø‰Å8°€p•p)=ùÂÌ_M¶Z>áz itŠÓжÓ8]}%× ±»e.©ô6Ó Îç¢óöUucHô´SOr(rÈI¥«ÄíÏN  LUÇ/ŸÙ“™ª¦h&8ã¤;!Yú­T€H`h»ÂõoA‚vM[ äåö¯0M5·°ô²`M¼rm¯‡§µèö;þ–a]¼›.grV ´&(¨½‹voœ7q}ÔשØK] ­…Çwl¬ôZº$¦×˜ü:܋Ƽu ʳqôäáŠé†DÌEœÙpI¶ƒàWœÄþÀ7ð6qµ ÔÜé¹€çá+$þY®=[lU«1å 4KÑÐ4g*_ Ê]´Ww&ßTÇè²ö±à¤Ôm½¶EøÙ.*t(±²ã­€ê0±ø‚ŒÞnŽšª÷…÷©•3`IÚ…ö5\¬;'eW¸kjÛ•å!’ s§hÛ“Jû̇.@†[KŽxÄF©=7þlfܵ0Áq:%/Õ8‰þö”hÁX ‹P©š=¸Ù9 (ð(‰0!ÝVG`B\n(±}ø¬Fß6³F<[•• k¹ñ:o@Ã|³hýU®±U•À"e¥9”¿ÎÌ6©½ÿ$&iYÚ:ðíÄ.+CŠ2[SкÀºr^Ù¥òž•f«˜%Á²ì=.æni&@5êš ¤ä]§Pz¹Yê)!vÇ2…©Üñê~_+“Ä"gDÚ eOmPÌ_÷í}N¬Ø9·“ËŸMøJÙL=’ý"Î:vhÀ~PZueóƒWÉÁû ™©ˆFëà­H@çCÏâ@gø–XLŽóE¢ÓÆ„ܧ\{¬í#*5 E9®GÉéþÎùwA¸PfÈ‚RŒ…‘·; í?6‰Š£—foJG ê;æœôÎêóSýg;Û—47šÄßÌ”Pk~l§ô’j¢ú¯+p¾G¦“ùG‡fƒ$Ñ…@×sGV³d©œûOeIù)]¦·öå9V=TÿÂŽ$±`9¡¿1¬€â6âJ׳Kao…ßf©ÇoßùÕíëJ±ÕÚ1#ˆÅ zVÛeìЫ‡’)ȤœÅ•Þ¦D)þ}LF¸ËˆÔ „×q<ìƒi7ª¬|2 ,å¢E\^DLx2»ß.{ÙG#lÁ“äê D«¦«cÆ[TÖ^Û†/ü“¥õþÖ~›ư‚D¿“ ³¬­2†ªë)“ õ»<:h' p£#f¸µÉ†¼j;13ÈmÄ3Dœ@§™5oß`2z´ï)R „1jþv?Y™¤­JeýÌ~í(„D­ƒï:H4:œ[EsˆD€¢µl8çö×Étàß.óøL­ìy°ü)WüÇR” U ¿ª×ß8pÍ ÊñßÍåñö8"ó ´0R€kY®n`Æ8Þᤙ;¿U½õ(à© ³_DðÆÁ}Ý/úQ¦Jäܱ~³\~¶ôHë‚â5õˆP¶zþ9r¹”ç“ßÉjGe¡ ÞÄÚÎ^•™6 aìø¨×òó&vŽŠŒ¯,ŸWÍs2êo9gÖ0šŒ­â¶Øeâ]ì9hœKG„E ú¥#ûK^O¶¦›4¢¿ê­ÑÙ%窚¸ðëÆW& ¬¾ý¼sŸÓ ÛŽ‚æica÷H)}töq& ‹£ãÉ«ã¹nMûÁˆ _œp<®yá+‹tÞÛÉú·íØwí˜yG=w*ôó´e ÖäYßý'¶dHÂÔJ¹æwo½?÷Ì{æ’ÊK•‘vGz[Em©Ý !.R„ó,©ð™·qÞ_Ýþr%÷×–¯ŽmÀšº¥¿ä<‹€Þí„Ì °!¦jLþžjíRêÆ‡ýC•PÃp «±*W—œ H$Û±j{xæ¯õ·ä³ï*4¦k’6Œß.ª=ßHÍM‡‚_¨]?˜ü ,(}²uTªìkÇááës5bî %{*¤ÆÐ×À]5lÍÌ7ˆáK¨Rü) '+R´€Òÿ©ÆTÚî³åïÅÿñ*g¥ôZÅ”ÉÓhDüåaørŽÉ£õÔ6£÷#<±ªVtc9øÍ"íî’Äþ2[0ŠÆrÈŠ]IäQ• Ø@øÊ2¹<QN0¹÷úœ(-G’Žö^èoÙ&Î7^¼M3†C†e%ç¢ø-Ôtš¿Xè’pˆqýšNùàk«n`M‰' °¦mÓ³/äýMüÎ7[q¨´9y3IIwöôj3†î¦'Qè$T¯b,øb MÃ1|¦ÒM"î ½òHe§£ç!mÆÙã4šHŠÐ¤“¥h¬ åÏÐ'f¿‰ÎR¤»GÀÉef s¾‰WRKB+BZkæÕ<–T•G דª¹Áýö~ß\L&X|bñØ' H/t”â5«ç¥¤/o' çx‡âGó9Xп #¥½ó qÿh{‘\Ä‘Iµn[1…ON§KÉâÝЖZyB>Ü-ç‡v£ ZÔÐd%L`Ú“d;>qɹÈƆµX hvm——ô^ãsr1O”UC @Ëü[ÎK t ï3ªhõ” cªû•\'Ͱ à¦ÍӶݧCŠu9žøÚd[|þjxÈ,[íí’Q^à< °ÚŽw>£PØŸØ7h˜ˆÛB%R€‹àÃ}}"1ÞpÚiL~žC^Évp6 î$ s^ ª^ϼñ6cÇÇólK%Ȧ¯€5}K‰£–•PCÜ¿$Kcš²wÝÆ¸É4¦—D+ ³J‚ßgâÐ;öƒ02HtÔÅÂÛim_¼I—kþ2ù’þY£i‘Þ­çOúöþ(q™IûÌNëI?”J CùßÞdr'6sòíÉH$ªú*ã…oîX3y…Hk!•WMøfí!g†‹gÃôʪÀ±Ëõ/¥ŽcÇcMBÙ¨àCøÂ§Rs8nºqÊã½éd' UÖ†u ë’Œò{†+ŠÐo틳šD"  / 4¾£­}¶Ö¡´z´”‚'š°L…¸KŽå"5§} Ï ùeˆM²Χ“î·³B“@÷ÆÇC(bkô#¿Á–K4¸†rèvœbÏÆ“rŽVU\QI£„¨[¬3`à}vàPQ]ruÀhÊHôÛFÚë @¬æBN;”Øèÿ™•üõ ¦SŸ:}Å. s4Z²^”Ϥ{×l4‡gù|Ú/¹¶¿9DŠO<%âb7”d«¥ò¯ÕäÔ8髬 Ç“RK&ýñ±e}-öj•pQ‹Fyæ-Ÿ6þ—2cn ØØ*üc÷ËkšÖõU€Q"X;÷GdF9jDLp@©Å¾1Lb%ÃG/ˆÌ@»ÂÒAØuBg7®å€Qm!ÊÔào0kæŒÑÝS|ÅxÑ»³”HíhÌïoÉ_XƒÂ9¯‘QÛ( °BÄe`2õƒ<”´çØ£y9_¨1¼f†ØŠ®»åÕ ÎÇé{Ìl¶<õ'mL=Ç¥(øq 6Ⱥ ôã›8lñX»Æ*¸»á÷Ÿ±)¶ƒƒC×c…8ó«^|{Ñ• ™¼\R½šNñµo pm†á6Mî¹2*và;'ÂæÕšfóc0ÎÔö²v¢7PCGª€Ž®+òxÉ¿ O2\*•‹x§†ÖÖû= ·F¯ŠmøÍKÊ­Ìh'Ó¹…w`äÄyªÆŒíq?Ò°6²VÜy¯GrYr&x¼ª˜Ü¥ôxÚxŽ_ù ‰A ‰–§“v0¯`ag…7ØÓüåy)L= *XMƒˆæ–^0SAÑùç|ü5¢ÓÑm ×»+^½;3(D9μ{þs팻U¯ÔÙ¡R°z{)E”jpèätÓA ?R+£jõ­Øô?õˆCö¸[æÏ‘ˆ"7U\RÈ*‘ï.%‰vŽùŸ ‰ó±Z@ôЯÇúÌŒÇu·$QOe¯k#ˆªSß JuƒÚè`õ¹¸ù9«iÖ¬•¢r‹ËÁZÚuõÌú5ÂÄW=ààˆ‡nè_º¶°‘ÖE¥“fàÕal¸ê§JªygõG½®0,›íæ;Wµ: 3 Øè÷×á1>Žìt- ÉŸ’k@£a\›µô Á¾åÃ.«H½íà‰ãÜ÷¹ä•^›Üö:¥Äs„‘ðœ|[?×&IÂfØé ¬€ò|@:ó!¹•3òpKŸ ×Ë— i[¾èIY¬A!ŠŸ-Gwcm~g²ìé#JEMo`Ñ Z¡ÜT­à©ÎYüU@½?.ß¡Hzf’d¦;h¿7eù½½\¨ë}†|{mœ‚UN?å|y°ç’J—S¨aDÿ//ÜhiËè˜`µ4œæRH|É,Åg¶Ï³ÍKB¾­.57£Üù7rŒŠ”g€Ø Ì ÐaM‘/í:]`@¡,ªøOì¸J´¿}°¼ˆ×õ%@ÿ·‚ðîyÍFVnÜä G"âjXh ú)àhòú< aÏÝV6³Ä A­ËE[E>Šœ™ƒÈ oý"1¨àš’Ya—ƒÁáš}ôž.Å\4ÅŸê³h[‡É„4_ÐTCþ X+`]nKê§e”úPÃqCÜç‹¥Èxbû'Sé)¢0t~UàäØrK¨Œ: £  &€xcJà·Þ NéʬØÙ'IrÕ¿¡ðN·G §Š±®<> Tòº‡¸àú²–¬ RY?õ‹X•‰ÓDúÆÉâ<˜äñÞÖ“{„¾U_¯ÈŒÎ)#yà)ð·ûá+ÔTÙ5—ù°³m#õ›ê§9C8‰§‡…B¦ÕokpØJãÎQy¸=Ô^Å5iÿZ-*{æC¤A‰..Ì1öD #µ^ôº%$`pRÒ¡äkn°€ÌJÅ~{i ’”¹{S!K7T'¯­leN #^âšé{ÐX¦dXZŒ4½ òï§2Ò“³fí ÅGÂΫ΂R YY«SÏ[q@ONl(§mRR˜xÕN‰©ÀÌ$X¡e~ø¯ì†Øp ®òäÉÝŸš»²¢t-v/C,Ù=Hà³åGQ èr™%z_€¿Ò˜ÊÎBìÏÙøf¡Â,\1”ãˆöÀžl^ÆRÝf¸L½|º5á&(…©u<àBÀ:‘R…)0îVêÝ´ñýìq!ýÑÇgM4k°VÙO°c"¾„4Ñ|¬Æ£Ví)gfÎoÐBÃìu,"€/Ú3D"ðÏDˆsq¦vǪ|sy´€zË•wi–e¹-y,ãìx–ãµø¯¦)¼çž9¾"QíFˆ'|ý÷/<}34\$2´ê@F ©e­GÑáÆ+Cäã*Ìa>º~ #"w‚×B5ßr;~,R¿*Mr<’¨ˆ›uRtTm‚›HÍ^¥ŠýÂôþëzd“b®‘goÈžÍ3«¼URj¼¡o8uO-2ãß›EOd5I2M0] "€æ¯SuÜU²ŠÃÞ¦4©ŒHÆh4¿<ëk´1vœ M§èÝÜ 4ôo%ã¼d_æR¦£‹öu'Wó%»<j´@ë“9zA²élHvN³(ÇF0`–í 2ºä¯äœã,ãf³Ÿ]µ2 Éz·È%ó YÄÙK.逫|Ú¦âb 6Ü.d?Aº“8ÒÀ6²÷1¿xôïy^Å x˜ÜÛ-À‘›Gm¬&Ä®½˜ø¥yª }q79ŽêKom ŠØYº f.GÆq LËa.!Çbôù^Á® ã JjàZC3‰DêÊ­®…Zï“ËE¦žm°ýbG0xK7Eª3°™)•|¤~>,¢Mbšâè⇆>–½ü*ñêž%¥ó2Ž*öð.”$¡¤•s_õÉ\0ã/m Ó"½Ì„ 1{{WæK¬ä!8µ É’§}à5Xí+ ®ÃõûÚ­_ÊÃõÒýkYŒùOúÈ~çÌ@z{Ï—È SÒ =÷Š,Ê7ÊòÊ’yÙîÔN¯^¤"-OYøï¡•›i‰nqâ7£î“cw‚ŸY$Û@mQÔVù÷÷—ü7¾ÙNµ%M¾¬|hçd:à±Îœ!IOѽ°ø7`÷MÔÏì7“¼,²(+hpŠ‚¦aøOG¡™«KNV:BC@~ªÛ‘oIMÍñ›Î¦=dü83ÚeO‡L™ÈéѽƸ}ŠúÅg’b·ai wŸXWõÔ ìm®•5ãY6/æDæ¿vP]a7› [äטנrV²F;Q•X:dÿëÌ ·ã',50á=ÿ?7P~w…͸á"Æ¡æK³j„‰ûhLakF—F›ñÒh×{å-[âõzÆÿ§†›y¡žËi°±ø5€§„…iœGxŸn–<“n×ðàÔçÀ)ƒ žˆCÞ£ZŽ0Úl–ëf•„h—‡s5‹I¼Ùíû Ä͇[e#a-§36á§™5´â@üø¹ë¯”¢1nÌîV\ÛÑ [ZÎÒÇ뤕´*®?é‘É%2~öÿ#/8ÛGgA^È z$Ë/Œ1öO éBž‘‰_ÇêO2¼áÁ·'Ó'tQÒÎ g˜>ºk‚4Uëé`ÖÀ£ƒ®ö#Fƒy§1Ý­}=•Ï\¯ï*OŸûý)|òA f¤/,9¥"ÔInû'“ïá5#™nOÞº¿WîbäX½‚Ö°ÌûkÑsÁ•ªØpF@«ž+)2OAjH8+mq•nçuû¾E±Žv9t»_iYæ•îV|}3Eœ_3Ú”Ïð¦'éT›Ð›m˜‘Ó…Ù½àÇÆÇ-¾dcæçQëÕåÿ9ÂúZ“ÿQ‚6>Y¸ 81kÑHšë¤¦ê' ‰tx9›pes|½ -þI[¼,ERFà¶Ä‡”øýƒÔ±Ö:.Ûw´0DNëÔÂÙ“üž¬!»T•øŸ§»E„¥’ÝΈÃpã ™“Ø'­¯éR\ Îi$z÷*}QälØcý‹ˆÔ)Õ+°Ín)“Î ­m<.ÍÅìÈFÓ#±ùfÎ{¨nB9¡úŽ˜XyÎ}mÉ#’\h_hòÌÁj—­á×$aéìÂÞ̼éE¯ñuʰ,š=ùläRÈø¶ªˆ^¼i¦"œÜ_X>ârkýŒÛs¹N\Ó›[ÓèŒWÊœŠT:2YæjýèüR~!ÂØ€£³Fÿë×z¼+Â?¦µY½"Š5ÞéÞÌæ!°³cWËŠ@m¬d‹7ÞêW5ÿm=Ó D_ou€Xc¼”¡‚Šç«}Ô±-¿^ÿYy¦”©ú)&‹hm ×|buÙw‡£WX«è…u ´`ê²5¸s™Öv5Ê{´p‰ÍÝÕ¯TI$— ®Í¿Ó餗ËÏÐm.0‡l틾}w3NHGâºîm¨· [9þQš$Í}Õ¾J]1œ‚zh%›d~©UeyÆt1|f!‘t'…Γ`nœ¢»-Á¨SõÜôÒ+çKŽ~Ðþ3ØÜŠÅÞÖkÄCÚc7Áø¼ÀÁ¡Ðq<ØäÓÑ*í­ECõT¬è!¥{êødMYÝø<–µvr*¿ÐÚ%üƒ˜Ç*'–âX§Ôð·ç,Åý·,XJÆÿ°ìÎoÇMEv¶#.›}"þ ¸Ç€„î?=˜dR]LëN(a¦ô°«ðÓíéêó‚:w+ræÿ‘‰ ž÷¬ÃnvB(åšx‘V*hj u} AÝÛ‹^±7OIÒíÿ|Sñ=Ž}$êªE|£3zô¸³îéÁ)¼7±3*h¾臿§m­ä®¦} hÌŠUˆ)÷Âá1*|9mÚb5ï¶S—Çü´¸¹?ÄÏÒ¨å Q’ñnºµI Mç…›@â¼·\ê,Æ#Ó+¦ÒŒŸ">¥67= øzÕËeIQà¥|5OÎû´}&P@À!.š»ëápÊ ìɘ.ü ÁV„A¶Ô­µ|_j# ¡f¸8ßÕÒ‘•Šêh(e°´)ôè%U¾nó3×–jMçæµ„•Ký€Ä×O]ÁýãÒ+±4Þù‚iN¦1'p]*í PYÃ4™,Ò1[Ãn£eó®DÔÈ8-!òƒÐõSê0 :™š­a2ÒªËì$e ÜŠQÚ·sÔcëW{Gà_ó.ÙT1Šx3•õö®¯ÑGßåVÓ¸èܹY¦…Ò5‚í Šïу…ûp²â ½¦Ô©¾d&ÂER:ª½³$ÆW}ç ¡Z«—6!ý‘‘â¸l´ú20ûRß4N.4@¤®+x™x¬î#H…ÿ”“c8Õ•×=]÷’êé›(RJ•š45ð`ËåRiÛgAG •~I®ˆŒrÿ_ž1~(hœçàªj‘„4K‚¡@ˆx:B ÅËïAà037Ê"oÓ¤.ÎÚ&™*Kq…£³NG‡ò5…Q{&a=`–;_ÚÇ·æß¶Ïj¾õš…;!©‰ÇP¦Wó ˰ ûgÒái-&‚Ø\µ)dú,tæç jõ@]Œ¸ ªõ½¼Ååd“ß´ Ò›Êòo7æx¿& •IPò×7 tú€z#åZm x´y<;›]ði¶ŸÚ¯ÅœÆAÁ9‡M)e„Js» ý—ùà'EÐÊQŽÚB–VÚöÄ\‹Ø·&/·QîK%©=hW´±H'›è¦öFÑ yÍé–›J[K^ipãš٣:âç ëF‰w´I5a± ê—yxª“}=ŸÄqR£×Üøö¸¢"´Yq‚vO‡œ}‹w0?¡Í6Ï>õ^ÄùÛ”ë Ìä°Êqzd/¬™›gM¡vb¬aûzUÈJX-”ÌónyÜ£q&¡Äo$ߨ¡§V"åjTmÞÃ|wO­S¥NŸ©9ûù]•árLub¯Ïƒ Áò>Pw±St>éa¿Ppdß…ýT¡ëAÄ⣓FkC4ú­±L¿7‘Œ~#MPÙÀJ¸(ŸšžVˆp=­4¶½ÇœV¨– ô°ÖÆCÜ4Á¡}txRB2l³‹j'8A䈂)'®ÂP–~hV+D ÑvüªÐî$¨ÄöØc(K0¢ª0èôƒâÞ­SZÃôÐýÚåÈfð¹*T(Vûz¾ö|fLŸ‹¸›ºCgþ[‡3æe ogõtôˆl@XT¢nGñìÈA×/`– ++^ú/ÜØzœàðOwì:‚HFŽƒÿóõ0zX47UŸ.9Ñ Sù‚w8®g—µ×b‚–¯éÔ ¿¹².c²³l¯ÔŒ4P¾-ô«e¼º/ž–)ræ1âe£­Õû®Ô•“L»žùÈBì&Õ6Á'¯hÔY;ñÞpD¾ÐX{Æ8Bg&ˆJ£¤åvR >w sC|qÆ _ßÿðÏH÷¾:ˆwª}Çd 7‡,¡JW›$ÑÖUDS°[WÕçDÃiÝÖÂg…*gG&àdëf†ÍÆà§)ôû;F­úwh {J‰F,ðô?4&jd×#›N…B„DdKRa’TüÞge{`-ïN¾ è_é¤rš"2â"´tÀ7…#†ðªˆí|ây¶€²}Q  YͪÌ|+!:Ç—ºÕü¾¾Zäüód-£Åúã‘]?s´ø‰âMÏo5Û~ák \Zé:8ß ŠÂµÿßÞ<¡/fsw¹â’uS—üиÞL,¢ÄÚ&U~©>‚%¹¸{ÊŽ†ÙÉb{ºj›—^už6™y·"ßñ}B®¡Tþi×þªþ_ L>Sÿ¡YÓcÎã ¬™ÌÃËÝ2¥O“¯Œd€ ê]vÚBdª¡TQð˜Ôз\EÚœ§èL¤|$8PšfÔ+ñìØ5À BÖ6öQcSä±VÓ]¿RKdHßDî ý­áô„-"V‹ö(®c¨Gáž5mÛƒRS{E:åqƒ@ø}¢; 9ê÷'IVÃDáÄ*¶­ ìô-e=çÉéa-Ô,c)qNHƒj”‡ï^ÌœNŒ³Æ¿U=Ì=Þ)´ u¤c&©Ë’.tž¡‰©¸àºW1r- —&¦‰æ÷Á3!Y7ÂÓq€ŽÿŒ7“Üp0‹í²†ËC\ÁÝŸãò47õ¢n' Ål¬ý‡—ÍF×¾S­|»hÕÞŒäÆUÎ(T~RlÖXÞÖÁz1Àr‘ÏîÌœ'GïŒØæóNÿÚGÔ}ý¾,ä!-.àŒ;x«N|Ëûk(ñâŠ2&r=ÁS“Kñ„Ý…Pú ŪmÃÙè})‘í9™‚UÓ®ôä 1ÆMLÆÉ¿d~ÿëiîR÷ç”I í€x¹þìz!÷IbP<ñYoòØàX L½M§„¨÷~YËà ÚPÀfÏ„HQ„ÀéØa'M„÷×ä^Œÿq\tüxi}ÛÈ.z"¥ñC€:% ›Œ§j«@Ô)]Õž>§ °™b;ˆ.”åÖOEB–àÉI žë”ºVŸˆ®eÅÎF2eOzÝÚ•F¢›glÛ‹¾Õ´K; xØŠµ*ç\mCÉ™^l ÞÁ·gí\Ó²­‚ª£YëËÁ̺7aÎê¹,SûìÙŬÔÆ ¸J…þC1DF¤GVþzø”DÌËÿ¯¼F>ÓP#„œ=‘ôïSS>ÔMÿè7|OÉÖÓzcZPØaßZô¹úNs×ø AµùBÊhZä³ÚŸÆ¯4ÈJ}ÙI7ZOÏ´gzë7²K×s}#Â&IÀk¤ô\Z:¡=B]EŠ´]ùØ·WøÏ¿íùw¼ÿ²£üw>Ó Ÿ@ì µÛ€â€ËTõ&È4:¼Õ2™äÙpC®³Ž”žDàð(&†¨ðH™f® B>-¶DŒ^õ'/ú!²UQ1/Aô8èwŽLA`“ Ý«šƒ\6–ê!~«÷0D'Uø‰Ó v¸l8hšHå)L›ì%ž ÔèÿÜ'@ª ýƒ Çݯv²ò¯ço'ie³_´£4žã:91VÜa5?ßB¿ ëBg÷«×®"'9'íüúͧuö?$Ò <ðös–^4QJ,vSô»d'·ü_Ç'€VH:%ȃ4"…ÛÖTX³RÁ“+à¦âÊÌäøê¤ 7ì’é±ðÅ›´µÇôY·éZY=Í—Ùä^t·<æÜ:¢ø ´´½ß~¡¨xa‹œŒ2f­àÎâá/«We¡UÁÿ³ˆ«h¶hue2) ¿6T"\¦©£ÄèÈí9´s­‰I{@,êxlDÔk&©¿Mµ'°i'np´‰à÷0¶ wÏbÊF•æl$—©ì6zþíÈ(4å"Gs;2øfž3$ý –Pì˜ï2@j}.ÈR¹Ø\ñ× ¹ßýz–dù3­”èožyZ}À¥Ò6Ñ¢ÃñGÜu1²Œóf/ðFJ%ßæd„3eA;ÐË)‰¡¬Ý–ÏR­q(Hò¸û;aáÜà;uÞÞVWm¼µç›Îwæ’Ü3È»Ö[›ãxÓWv fÒ¿.‚å£èæÆ#š"ºýô}±„ß&ZÕ*A ÒJùß¿5ñŸ®tù®Š¬}R±[ìŒæ«Cö[ý¥¿Úø³‹ˆ U@pê9Äî@+ÂÐÀûcaÿí~U xƒf'ÎóÎu1¶V ¡Ü±¸áƒO­± T¬}é#£ö¹uòë8oMþ„Í…€ÿ»v‘ÿd9 ãîi×N-:±Œ{e|nI»¥Fs3 v•—$ï÷—ůťÀN(¾òÏ¥*ƺ=ô–¡;×·¾ËgÐ܈µš ðk€§‹>ÿ`.CR³ÏÎàe(Œ ” Ù¸£’d\³}bkÖä:eÈž•lÛ$¬_Ã"QÈGáy$õ¼»]`ŠfÅoPºÜ‰•³ÓÅéàñýMŠLëºÎ»Ÿ1½¶ ˆÿ * F“É`Ȭ·ž1+/ÀNͰªÐƒŒž|Ò¡]¢Óô|×ÌÖ+³©Æâî—9 Å$©ŒZ¨žø x¢‰jµ2?G,D3Âï&ïñU•/?ÊaijÇnuºVBÉÈhÎ*àƒ}"uø#Ÿ+æÍ®#¿df*úŒ31õ™ºßNi0¹Úz:‡hÒ!n¸æ¹ƒ–s0 « w8´(™#UnÈûèæ,ÊÕ™ˆ[Fõ0–WLl8¦ÀË.“½)ü“u[*9žÌë–mðAÒW_¿ësJVѵ“PøÞ¶u ¨ð›Ð1N']èbniS‡¸`$U9úXÜ…1˜Ò+PuÜO#eɬÓ^Ç•îm›O'ÕBèA·Yj¡‹?¹ý¼ÕTÚ©¬³ü›»ž`vªGÄv5a†‰-‡ëW€ IjWȲwb ž]2¾¬ý[«MæHS9h¤?íݽ%ºcÁLžOÊlKËŠ±¶²ÚÇ]u"–uî t?Å’zHã´r§lÅHòRâf„†³9Œ=¾Õê»'ƒ.A㟅ãZQ»‡N["Aƒê ]^/0ya 0ž ÐvbËeD,;ênw;l'o«¡z³f)b8+mRôËÒT#|õd-Q׫RÒ fw¢è„Þ¦d :ý§¶ç·5Ô ûì wý‚솟Rp“v\¦ÃÕ²4†uEçÄ5C”½P)Œ±½­A ݲ[gÅÈ1)‰íœIÚ›nàDIÐ"|F('Úç~Ã:+‹”"KyàÞ ² ¸2¡#3;üó7Ʀù¶ÞO¾Ý+1 žj)É—ß‘jç<#r«t4ˆ€œ³ÿO@ÊD‘(•pIEV«ßE<#nçBóƒ©ÖU%2\Z›q½'Â×=wa´ Us3 ûQë_ËE()ð<˜îòw0E÷Wc0üƒÊœzu jOáp˜Õ pËh‡MPO½×¢MËýz’ìžÊóCGQäl=5¨´È².E@Ö^|móñnAzŒI…Pó‚>©5íËðÈ#”­+±TÕ†B¸5MÍUKº.Â}Ú”ýŸ¨ßEð—¥¥¿]H³`#Ri„G¥¨‚´=|ŸªäéØ'«Ã¤‘^ç; þxBæ±lò*lÖžhê䇼 øI5b 4ÉÙJ3ÉŽœFéuò+>6|H›íÚH}½¸·§q™ ÷f &µ.¯Þ-æ´Z5Y»ÛŒâW±»Ûá:¾.Bù„ Ð‘È1Q?2›¶S7•ŠrdFƒ¯¢üÿIˆS 'g$O)ù¦W¸œ0“І»¸€d¡cåJ=„táHÈè´ë_sAГÿ㯆£wÃxûat1wWìb+)ÛÔvóÿYÿ 9äO=4+î`zçjL&®ëîø„i+œ†ˆ÷-‡º eVG}ìmËlLŒ±<ëò[²ÜœqÓå ´ŒÂÜÌŽ–¨jùhü/™¸d¿«ÕMfXÈbÁ3AÞ¾¬t¦ûJc¯"ƒøLU¥ %Z`ðK­‘†‚^è7z1‰Žd*o ´ŠP|¤­Ì}c(uIh-a EET× ìí*ÈoŠž¡8H±A¢×lHmu[Ølf-òËÀá¼ÔTBè§V³}¦³Æ±Îlÿ„Ò' )p‰9dÒ„dÜHtI¤†Â5̰íO6ñŠOMXID»Ôþ6}s§=®\Þp=S[ÃÝÊ£H%Ì lùT÷èi¥<2ùhEf%²—f)àùÈÛØ Áú܆Äa¢©•ÔT+—é¼xöBÆ^Áfi̲u&ª¼`†¥5$-†²í©ÅÝ‚?ƒ4Q[— T0kJ+.dZ+÷Á•¥¾mdtµ)d`$ðMt cŒ´æ=`ÊZÏPé¥7XÒP|„¨…x+]¹,ø­A ;á €°X{—øùA®|À䡟ë2VU$!šªúÉ •²´1Ûñ¢þºâdG%ê+Kø•ùŒš×Ü}ôQÅóá¨CÁUy·Q;¥ªjÁÖá0¨§ÇÐÒþïúQ"}’ªŠëŽT ݧ9mûj7±:qak‘k¿›šy»×ŠG°u¤[¹k4Ƨüꆶê,#…±¾©Þ&α)ÙTJáÝWy/Ì@0À5J²ó±]=”èO N%¶žÎJÔÄIyøF_‡ø?¼ ­2‰–w#ÜÎÒ½\+8Ø:AÔ¥ÀåTHf‘F´\ˆ"’wäÆaCWM[/>ï›b¸”£cg[Ö±ŸY©a8çW·^0]ùýáÂ1ÿ=ô\¡~°á‡ì+l§ 7#Ø+Ï´&³ N›ÚcMÁJ땘>qxq™ÁWodT1²©”Á}÷vÂF~¿0Þf]…½è=¢ªCkáó bíßï.\cEÑ£…y´hõ´æ?_Ó)ƇÑý[aҶ펡Òýk¢PQ0€y6#:O!»ÛU+04ŸP=ÍNÅ-X²Ï_­¸³™§Ç†J†!ÍÜd<ú"Î#x»¼b`¶+^ìMfqÊ=Ι°BI̺¦§‰åØÒÈò1m€“Šñ3º‘VÁÇÛÚ-ãŒþÅý ÞC˜“¾`þ®B±'6q¶gà%î&rY#QÞšÁ¶ä©eFˬ’ÝFæbàQð#0š­‹MÅŽìý±úvÁø#Zª-Ëø›b"5bÁ—ÐŒ‹­+6³Ã¥C•å}Æ4_ò7µ™`ñ«q^Ó»=‡ß%]dyÑ-ãg‚|ΰÅ8-z ߤà ÓO•õ_ÊÛ¾\P0ÂcÂ}f"‘,6žsRÁ YõQ ò.Ȉ¢Z†bƒZXö!ara0 ?Ïf§„0b‘ë)þt°}ŒdÔ×J egˆÙísò ÒGqÃk>¼ÌÏû¹TËøÍG¨_¶-a†k¼€JÛœ1Ð^Ì&±£O [QQØy9cùdQyï—<ÕÛ²1\^¥¥!=ó’4Aë~`üøï '(n£$æ2^}UO’6ôŸÆ ¬¦íp<ŸS©Ñ-_Ç k‘‚ÔV£¼Ý¿$å8Ô¼_‹_*a5Ïø¶90eP†K°Ðøê-x:³¹v3ç€VFsh™øÇÕ~›i'ŠAílBÝ]A›!Š"©3ö• ƒìÄ2øTØŒ¢o¸O]ºüW1Å­C£ãwÅìÚ Þ²&~½h‘7˜EcOg Þ@jUE#ç×Ñý/²èà8®e|EÆ€Öxˆ3ÒðŠ(nˆA¿f768Ø-ò…h޲}{úü§`do í׺tCÌ&½6þ)+qÑÆ¸b”f'ÜÑ1êÅm"þ¡ÕZÄóµžÇKóô[Œdê”ð7ûtºBÕAÌ›r qŸ 2–/ýƒ-kûËhrõ:ƒë1M¢ÁD¡ïf~WÖ& rñÅåóbÆü,7q´„iàøƒPðøõ¦ÌÁ$2j5Óp²(¢%ðMr‰þúæãMÛ*±Xé¾ãíÌJ&-6¸ê,·ô¢k³!å3â°;¡ÊضAVù‡iAû7µ¦;^h½“Y‡D%»Ã³x :çòN~S£ªå–;³J0-ãCðûÐtô‘B•8T·ŠæòAí¼Ç1Ù³è}ïWz¾ÞÔ§ïBÙ”K±­­Ùe½‚Áû.ë êðª»L£Z›¶Ÿ…ˆe â³2K…÷ˆÎ*ŒÐšÔ`J™A×ÅvC ¡Ÿ›Uþ÷×O!ê]ü&euy0‹›Xør–}‡Æg²ËÏe¥„2èÆ1å1*/Å£/½¤£}†d5Ïè=åwD}W `ÍÅíb¿}¨øX°šÏÒ èM7DÎ-ޝwŒ0-T}0®6ß<,VÄŽ?Ñ¿S,T'Ó0«€ILèjª‚5‡Û&$›ÞýhDÏ€Ò&ñŒíð#ÈzÃUãÕÛ’œD+Œ‹Qè>PÕ /é±N7á¤ê޵‘%³¥s5¦‘…®è,¸$®ód+ÝîýR—øžJ!û/F¯Á÷Îå3¾ÉH'8ßáW²-íì©2)»êÕ_T'hߨ‘®è–‰"Åtò˜­qs¯®rα‡ê‹?L0_4LòÞñæ*É;FªX#¢Rðõº K;°?ab'¡c>[çFOø‘.\¥÷|;ÂbiÁ«À¨DXZ½º[Gƒ’téøOÓÍK ÍhmµÓa3ó —/$¼ßÈiµâÖ:­-Ó‘óÈ?é*"Ó>gì{˜vü>÷Ô~Õßk-ä¿uû¸¹ØÎm"žü- ™­N?GÑ£?{»«È•2ÐØ®ÀtFPEB.õ†¹™ßn_ÿQK‚­t -Åá. ë^üa#‘ÃLDg—¤SéÐn†¯|IgT`@œ÷lšu@;zmÉÿIú„ŒH‹:qüÛtXüÉÚ$q4¤mîÔ/š‡y¿>Àî„gx;°¢˜£é/+é_îÌN™¡ã0'4SV¤üBë,oDqGãÇßVš|³ö ~j7g„$2Wå Ej“@tobîËYb¶WŒÌ—ß7$nJïRæ,ÊXÔ¹.×Î+Hq³5<û¤…UOüЄ:Òˆ ³€ÑðÁËô¤#Òý¸Þä4YÁŸÇ³[°™ñ‚V]9é{¢:¥ø0å¤û:¹>fÍ@x»EÆ:~d «lBfú³^=;ÒÎ;g7PS𬛧œòizaúßÑýØl­DÂŽù½PÖVå­Q´Ñ”ÇwCb”·0ýôÚ€Xc3$s䤄éï9Ìõ. \Šƒ^b‹¡£G¨ (Q<)oü„~DJÚ×´°ïî“€¥†L¼Ûyá¥Èñ,c¥šiTî®Rå¬ôÇÅ¢¶šw[ýg¥E¢$ý·œ:ìë0A£Áw.ž|À¬ _Y8ÿ^gcÕè QbáÜtnàÚuWlŸàÈÛ0#`ƒùA:ˆ);èe#ŽïÿïmÝ€ÔåÛiéR «Dj1~žÔRÖS£4(Ú¢äß]ɹH9-ÖßNe ÃrÉ]€›31­ùÚiÎ2íòeê›´ï.ù¹)¥\˜žœ@2QÇîrBÇïÀˆµ?ä÷•HÀ÷¬d`êµ·hÕ&Žh¿Âß-qC€« úK"¯³ØªØ¼`®ðqP/«}Pb-/^‚É7ëL?Ô¨ð1È£êO3@å¬LŒ˜X;ýðq“‰p ¯aÓ|ȤwçÜ:bx¹Íå/ ÃŽ_‘#{kàL}Ú±IŠ@K‘fÿEجÙ.$7Ï‘HO+¡¾– Šg·ˆ+Ås„®>í‚ñ³o0;‰*LJ‹ŸîÙcÆ;æ¢Ve²Îá-@  yRÞŠ fX†fg]³É˜­‹ÁË9o­©ð˜W¸H¨v¨]Œ4•À*…›qI夿ÑÐŽŒžÂÛ[DSM¿À*™+ÈŽ€þÍ}%`Ë2Aªèp%ÅÞpØ@–í¿˜3í‚&»À$¼Dèg±f¶û[ÓŸüœFEH¨è ^ã~cèúw¤¢UÐëþÇჄ¹±i¬­$Z¥J´t¢2a›g%²Ø(Q8¯ÎÀfüç¯;\k XƒpÁrãAj“šbb±ÙgBEÈ"ë3PÝ‘¦ÁïÁ”ܬ!îðíâñKk"þq%Qà§ñ^>yl‹\Uˆ¼kå˃zþ¡<ògS]õ/€;×í'¯ »0$SàQSCO°Îv ãV‰¹nÌW.0µŽškðï|Lߵ傋Rþg7¦tÎu¢ì8ƒˆ«šôJú›ÈJ_¹ '× ;É¢ uø–ZŽ%Ï<ñ[`:h.¿¦ªé{ÍçÀ|*{¸dâß(DÙ=ïó¢ëkɼ?6ñ6$‡eŒ¢'ÑÁ¤¼j²žêXËe;W¯•_ïÊ íæM_¹UФ+ÛÜóð#¼?ý…ÈQç"GÒØú­9ôõn½%«º¾Ü\”%´ç‹Ô{`—q‰Ð€›Bì+Ï -ˆ³ÅBûc!ÙŒ%ï…Ȩ[b_ÿÊ_‚=q<ÄY@D0ýÀ°ôÐY—¾ötµ2ŠLÇzð‘aûû Ð$µ]Dmpx[TÓ» I˜·?G:—<´n ”f‰%áY_%ßm„í³K—éô!óì Ûká4ÃÚǵôv‹; äM{Ÿ˜ßiA§°êr6‹:…JñEëì5ŸæÓ=çªvÒUAÄ_$$ºoƒÂ:â›·ós”%ñfÒ̾ŸTÖƒ…?Ö×R?‚ƒ_öõ˜÷¸DƒQÖõ¸w[¬±E¼»§cF£^ úfHËEöfh×¹,zªFÕtécA——fÑ1ÎM3$éte;æÏæŽ,U‰ì=êò ›õ2ìnæ3ˆÈ'ÖC Îéõ¬’ë`ýÁìÄ·—"1^‚Úé`i¦·%ã‘?GÀ¸ÖßÏ¥EôDÅt›Ú[ëÛ÷¯<úl™^ý‘Vrô>ÎVþ›£vË“H|fâo+ºû\Ø— T(ˆ»V'ùUŒãßÊýÞd]á¾¼­ÃªNÁ2R_åYã:“ã–¶W <~A}ƒÉ<¡i·/ǃ €“Æaùkô¢½(WÂÙ’åRX¬Gª0 ÓMÁÂM|«Ìnæfyv€¿£ä×_ý™ß¶š%Ž!Ç*/òZª9C´”L/Zذèáü´¹Ì–Ön¬NuWÕË$:’¤÷–ú¿Â°ÈìÔŒÎm ø4½Þ•Ò¸…ÅŽJ¼Øõ¦'sé/ó_À­$a6÷ ¸¡¸PU§dÛUsp2ó i•ÆCÍí<prBœ‡ic!ÃíºBÒyi;¶Hº_<$Q^ Oš7äc]×Øíœ ¢@}RÑäj^; æ‰1zXNÒ¢BFÊú `¨©¿àÌVòƒ,þb<êŠmms£«0ÓýX¥#x$~[¶=9 ¥¼—Ö7\¥¹VÏ5ü7 ïþ5г¿Ôgo†@æCï~‡ÚYÚ(€çP¹ã·?¼B¶Ÿôó'‰’ÁO” ÒC*÷5­1Ì9ö–MÒ&—¹˜Ì›~ŽÄ2-oôd¹(db™ÏÏi uB™©W°£õÒ;­ë¯â ­Ù<=ÕKù³Ek(²ÛZó˜ßƒ««ßÛêAƒy߯#óâÅ ºüí{a—1½#>&MùCpwíŠräÆ/t˜“gjT >Ÿ¬î’r òwz|··HõQ0ö2*Bx{øÓ7¾ŠøÕehªgc– ç ¢s÷r±ÅÖæ½²Q@þ’†¿BÈôq làúA¼:Çæ¦:x“¤úc·q5,ZÃ?¨Dž±qù&rƒôbžp ೬$˜„bµwЮw a¨FrÊ]žÒ^èð(ºdF5ç;è,_;Ç_:üArt%:"!™¦|œã\54³ÿ\ù(ê%™íµa—¿˜Š!2Ðòsó÷@‰ÌŽ_á‘¥SJL³ç¤;—}ΪßÛã¾ ¯MßöDÕÔÎÜ+÷]ÿi3ŸÇÉâêy"Ú€­ç'ÞÙÆ?È™Ç"…A¦ã,Åù¥Ý‡’—þpÑþÄáF£"¬vfËÍxp·Ý˜Š÷‹ðf_&–ËVˆ OtKtƒ²K~NjÒ³·:vË€aZeØJ§ûj£[Êb Q ýëë’Ï$æb%Å™-gßéKÆf’¼ ^”Ñ-mn¥uä=PlÇ.|üŽõ>ÂúÛl¶XÅϤ•–v–ô÷—Iìáâª+¨7ýÒÔœN²` áì€Yq.óKUiŽäÌw(½ò:pe1þÐBÌ·‡x àÓ¥ô<éeùï¨Ù¸%½âH…Á›tä!¼~ÿ¢›œ›M¸wêàÁ6¹ÌØÜÆI€ž®·A¡+<¯ôy…ªiÕW´…ä·ª7²þo]ø… ôÖõ£+°KÇ‘¤/ããegÒõøÕÇø·/û÷Lך²l-Ùh;Þš÷*ý6¾$ó³ØhÿŽ€üE§2¹K¯LH~H ¬Ø05éÞ‘¸œD—ßöïkñ ºˆ}ðiÀ×mM˜Öm` Ãb„,÷§°Òa€[¡ `10Þ8ö:—)€*žÓHZ7{Y ¦>­‡V[ÂôFp~Htkµ­©çß01i±Ž‹åÕ]lwÛbzÇ6Væx2Âì!eM+ÂN¹á•ríš9åÀ°çBí@³m:ôð3»_˜Ù\åÂm=uº¡l4gVÿ)ÿÀ†žêçI`•Ç‚i¬øÄ›ÿnL—Ñh‡þ8¡êÒŸev²vLêÖ•Ê”1´aE”Ám8¹)zFJpsûövšêäh6X(!Q¤B+èÁlÿµf‚ðzÿ©dÛ<G'cúBéÛ¹2 `xüVÖf“}R Z{I<;¬–€H›Ë>ŽóJîƒ?ƒ·®šüùðÙ R‡DÔŒˆá– ¨¸)•L‘Î$©\¦q¨2 S[@aù×Ùx?ž5v×å^ÛH— ªÄ|’ß¾âÄ[*>VM”‹HoÖ·Q¸ÑÍÉ,ÜgkÑÑ–¥r–Fñê(À„Ñù!òφüíÛ‚a·m”ÚFùÅ:ï\ Mãª5’åítPMÁkLvyËX+ÃÁË[ÿvð©µ/ BËIyœè¸Ït,¯ ê®ÈöOîP’¦lÞøY£Óµ¾ì}LH»ñÚºE È‹`…mw®;ê{8Ç*ÜÑ_uròaI «àµÒݼL±K“•§‰lR"${)Wf;žküÚEç}wnÃÃÉa2á~’rɪµ6f£ØÇ`,ø4Hdl€ r—Zz³¦Ï+>ð–Í2(FPxš{ÃñZ\!Âzšžk¸Þ”…[u®`%TÉõfý Ùº^'bP¢ë3}F¼Î{A@mà3ÕŸ’ËóTQu‰ª½m‘zõú¸5bätè¬'wؘ! ½="`V–~‘Y[9?,ØMV­ˆ?zF¶åï}Ë‘53e¹j…Øê>ˆSþø£ã¡Ï6;g<è]ò©]ª·ˆ` 7þý žwSZgP%Ôèøn•`¶=Â(3åz%ŠžÅ?<’ÝÅÏL׫/Ãm‹½çNáI’쨂’Åeýó¸Þß>çx*cídÆ»zÕ&ªŒò:Ó\‡¼èÝ·d=²©`œ„uUµóêšäUýT¿.yrïˆ7fÉyFAÅÍo åWkIY^ŒD Üñ`9ÀÿŸÖ'B©‰œ{°G ¯JõApº •™ƒSK¯Õ™éZˆuÈU¿65¬j¨ø}+ö @‡^Öcכ oÖk4E…Ÿ‘!„&àf ƒˆ¯³|ç ›×$ŸÚ6$£œ† ;Ëá GC1{oúÝ €*% ÷ÄûóõçÁ/Ë~.·ç0?+“ŸÑ¹? ìEéĄώü€öޱZŠT:ø *&eW‹çÇTÔa3Á)0¼pÿºÚ»^£ÃSÍÌò´˜a£n¨tJ[ŠÞ\í#çÞ¹²è e¸£‰‚§‚±ñ;ù0§Ø +hžÇ`ÙÏ£í ;"5£%Ðìê¡t&Úúú‹F ôárgÜÕTÕÇXÕÕkÑñÖ‘°½\dja§»|&ÅUå!vÌþ~–Õ¶É«Ïd6Ì•Ïú[fvé:  V¯/àâ¡5òôVÛ¦"-T@REï_óyv¨tœîi7ÖU·õb!Õ”Êãå5‰_ø£ê€NØçZ•Í•hÔrKƒ¯ãæZÛàl¶„¦›§ˆ„ÿØV0Œ¤H2¤žœAHáë„, U{ô—PÑ8¤Ä¾ºÒZƪS4ºvERp¸‚1f4Ë™¡ OR´DCÛ!lMjê7ïVéàÝÏom”¤Í/ iO Qk𒝏0k¢’i éð”€üœâ3³ÔñcÊÿ¤­Hýë½××Í|cD_½ÈlƒŸèÝ 1ÔP•ß3^piÙòz1îÄã2¦’t·a, Ìšvç-HÔs[| 3|ËÞÀ1Ð Ø¡ÉYþÃào9Àe¡5˜çLL;'Òè¥%ªÕR©"3Xdf•§zŽê4 sP2cR`¼Òq–ˆÅQ®-pˆ1÷pSÜi×ÂÛ¹·kñ·C®a0§;ÈàÄvv¼ùlv:YøƒÒ3è`ÄÄVç-Ó'F6>j¦ÿ Í`½°ãÈDp‰'÷­›¨—^ÎÆ>Ò"áp&²§ÏÛ8Jk'Q€GEmQ¯XmvnájK.Ù#'ûU›EùRüä­·úކãÇ$×l‹&‚4Ì*ŸJåó=ÿ°Š¯Jü}fþé×§5g"¹{(ô½xï9 ÿboÖ:Á¹Öq”ž¼€DžE·Y} {Ó±ár®&R*eQÊZAŒs&#Ä$-‡3D¨…Æûm§¸—àpôÞ uɲk0F!™~òjÿ=btᤙ]]ÁàÛ´ J«àØlPAOh‡ŸXa`Ú€Î8”÷(ÙôPCØBÆcId…‰o {ÕÐ è“V ¸;ô˜åÿ–Ô…JïòJ Bˆm|—>ý¨âÂNX ÔÛXßø|ww᪠ÊÁÿéQ©ˆ­íýÀ4_O®Ýœòöç¹q? |‡-_<8žŸ?‘.²¥„ 7á?woG¹zœ”¸ð§© ª€ÌL2ª•.Aœc×ée«·.Âv 'Íœ µe· ÞK+ïxÕÝÜS 凙¿Q_ØA۔ĭó»?`"8ÉWÒQ£­ñ‰’Nß–üµVyŽýõÊÖ˜úìÉ=!ˆ#a9ÛÙþ€Àe Õ~.³9kZLÁK DÃô”²xcû&dl&fw²@»üó°éî6SѲF;pª¸ïÚŸ%ôZ ´w÷&й²ùÒ(päY©Å›k9œ†þp‹Ÿ¹.S ÚæÅJPYiFsÓ{Ë“o¾lHEK=ºIBÁY‹UK]2ÏÈê´ \x| ¶˜¾†ßJ“¯y© ùÔo¢;³ZkëŸ;ÿï®9p{:̼¿mBÔQ.B®™ÜÀâ<þÐäœJ,Àߢ¢¬—º¸‘«Fšpš×äZàüaôlÇ”ìÈW³@^i1êÏdi4^uê\ûê=ë© ZœäþlUqmhœ#Zé©k¶2"J“„½À¹C°¼†÷Ÿrùلo@Óšè(ä·—suWJj,)v‹&¯\"Ú¤)w}m#w×Z4¬ò¯'‘«íî÷ƒ¾ÝR™Ö"bgOÃt(qt¾š®  4Ð=£I'±ƒ%QÏÛ±oÛÔ¤¾!A×vè÷bè \ÛÌVH  ûNU—ƒ>]ÝY)j_Ê;ûýòÊ‚rä°³ °ÈU!•‡K¥gØ££*QÕBì¦úCé.º@X3­?™çdå/÷9Þj¨„¦½Ý=×@Æ.7žó=o¹'÷m€±l¿,Á$üÛ`¾Ü38‡ùMÊ?ºoðÑâï»# o2£™ò—7“öß à$D§Ÿ3i_£‘ïù´R§'·øeŒgšfÅà£Tëþ'äõsªp¶ÀîcD„L.mpë›4Æ(´ÝVÛO\W&Ñ¡¼BôÉ£ø±`i[ÅÄ]“Âý¸Îªª7‚;p–FœåÒ‘MÀsqfÐùÉàH½ŒŠ]9᪔eC Û š*ä àòP°÷\).Á0kkö(úw»‘3òª˜jÁi‰«Œœ#Â×Û¥Ü\Dyº}YÁÉ£Ú©ÎJЦ¯2¹2߆z ËÖ`7Ô~“”££Ä#ÆÂ%ãx,žu€\WµôІdörÏÌFíüðä‹Q_OÏ­Òò%1jTq5!³\Üê%Ph‹‹2™Ê ëkhωgÒÃRý'‘>gf†b{·ðrå/B‡~õreÈÀŽåÏ„ÆØÀšGit•…°ÍéêÃ3ýÚ3 ]ÙBíÿím-xàÔß…Ìu Oü|8Y+O•Ì®Ã2õƒjêÙÞ¥ƒ"³’óôóœ¾óôðˆe™yÅ[ÒЦ,>]ñdÔæ$߉xLüˆ ·ãÍ®|b€l¥v67WæuÏhWˆ¿ßv—ÍrnO£iâ!Í¡Šª ɱÑ`ÔܱäÑ…W<ßï Fø–VúåØW¸Ø&Á{9B·‰—vÑ!{ÔtšnÖ-#÷]þѸ—êRƒd3r ÷¦ÒÁ.u¾”ŸZ-ßf<:,=@^L­[¶K¸äf_±Kd‚½ ùßÃú'žaˆ‹ªÀï,gm¹wvÐGÂí%Äg¸œ°@z†[yÿ!†ü5ÌeàHÓÏÔÓEáqÔ~ Ъä˜ö”cu|=/þ~š œò õcŽl¬~Ie¤ŒÞÆ%Z ñ4Ù<ŠÍõf¨dl"ÛÍ2 T)JT~xãÁA§8ŠÑŸ…gÄ(1avlb–Ìžc»%6N~˜ÂX¾«òRÓ“7Ì£ü²2íµàä‰^Ì)æ=¶ôwCÝ4›·:ãc½¹×æAþ[̸IµÇ²—_ ¾È•2•2äÆ!‹lÚ“D~lVÇé§¡î^>o’;ç¬6~øB•×]îåaÿh"¯ceMêp¼ãËŒÈàÚô…&¹F±aèõúEHˆ† DýGM§¥{â9w…*¯¾ÊŠ# #’)ûÄ'¬q õaŠ›(Þ[·XPW¸ú¨ÿƒã0ï"ŸŒyšxŀʷoð(Ö‰¹®$„`£ÆÖ_ß“Vä{>Ε¤>Nï.¥kã¢îêq¡œ=Ç5å:³ïql4H}Ná Õ£Yy™ÜÅ×±¿Š°ªMZz¦-|Hd#=¤iVÙ׊•6†2ãUºƒøá ’3ÖgZYÂ3Yÿæ ì <°%¿%jÙ‰\õ”%©kl¥ë`ï{ì5Ú&¢°L8<$@ŠÉ~îÒ<‰¹‹¬¬Å€Éx¹G;ÏÖjKGþÄNïƒô{á^ɘýÝœ†è r6 QÖÓüν¹ƒ¥ä?Ú¡]“ÉÎNªÎ\šàŽ å=`¤²ÙzÕ[áÐD»UªCäáà hÛqö>¿×.ÀF{{¶e8 ',³ëSûTïCÒÎ@+(üޝyÿ'Íx\ÿªÂL šŽ{ø$ך8»nðn»ÎÄD«(PÎå4I’KFu‡†Ü䵘ª>3ï´è‚L]däæaçîîîÙy¿tÚ—w³¥2xåG]²ˆ¤p¾²§ª¼•âÖ}JùÚß â÷ÄA:2,=ñrÁ\Èwڞܪ-ò‡bí£€<½Ð©¤L¸¢Øß–Sig†ÿ00ÄiB# ?Ž8Ü7C)/É7·,á;RŒ1}ÄÜOP¶ðÿ–<¦ÿ¢ŸÂJ=zõï”áf¿Hü­PÌoßùƒ†Ðä|¯åÂî,Ú¦üÖË•%b”wæUïdaô©ˆàUÐÛ¢&J»ç4fM£ŠJÝõ¬/¢ž·÷%˜—ÿß²q'ÿ~ay¹ ùÓ%[­„õPüìZ\ÂhºÜ{œGúwÛ‹é±wó?³–”Z•¥ë¼ó•·DÛzKÌùýÓî¼B®q4kÊ›Â)I¸œ¡ƒ/ƒ„‡PMÿ`îäò Úà™éLUÈØü ^“ €Ñ_G?ܨ^„½ìéÙšiztð5½¡:Þa÷‘µAF£É‡Ïªo°*‹^D³­ËÔx/hšvBb&•ôÓÿ5Á(›5½ýïñ¯!ÿ°PÉ»R­[ÏÇôe݆F¢SiW vy¨Ý´ŒÇ–2Ae­¨+ ™ðâOIrMƒPY‘Éy„®NqšR†@ÀÔÿÒªBêV{sP±œµ²ë,¥±âèôN•~·’Ësm½³.¤—‰ðí.°‹¼°w“0¹’‡Ù{Œ^÷õ—9 ëÝÇw¡8rÇ]Œ1%GdðÆ~É8yÒX†’{²ã¨'zôFl8ZH£á ø$|WPœk,”5øž¶p¯V¼€¨š€ÅZ£/dx>60(.î+Ì‹8hò©– X,W¦33Šat]qŠ)6|—<ÇK®‚2/CRßDÖ[ƒ½lûGqÃn€ Pž]!ýx¹G1 d0YüñÿEâp3EçËzâÝ·Þ¢«ÇÈÿ_ëŽÃš(ÂÖäp"o´fU¥9$!ÑP2k¬:Ê–PÓ,$'DVÛ ÏèQòøym5,¡?ýfý¼;À°ð¬Á ~iÉ‹±!nP¯}T’ÚòºuØæÖ‹ôHP™Ý¤•§l1Ö• c»•M€AðC ™Žeƒõ|À\4'S˜°²u§[䞣ÝûIm¡ê…QýjX^·Lñó­rDˆgBÿÜä•<£Ä7)’•²t/MÂÜrÃê²/÷âçÙ‘îòß&æêÙæþTÆVÍêàï]äXnóe‚¡¹“@Là,ƒ{L R¦Ô3ˆÎž(ß𘆠*Í^ì³Þ®e*Fcp«ÈFÉ Ý§Ä³g™³¾CGœËèZ÷‘ûœyò0²Â­™ ŠÈtÒ^_KGB³^žV×rÛ½5á9M ,&aòÌ/8œ–‘ •?™â(Yãgûû+óbäcëwg¬‚À†R3²Þ™ƒÚ©ë•8ƒC·ŠI·\KYs—[ú¸Ù¡[ŒMßX¯®o$ÎïI÷Om@p„5‘–¦´§deMgšÈèL?ëÀʺp› …¹0eý’ÆÏ3ÛØÜ(NÎ=ÛÏ33a„µ´Ë¤]Ëß =åµ ŸãóIXÓkˆi-@²Ê3U·Ý¼‰(Ã|ï5Oàs°ÚáÞI¨g½çh `«Sñ–7Vm¨³½Ùéú€oázòB|™Ð8±/ó¶M¼Æ³bü¨åVßãt¥‘]X©ÎIôéÕXi Coäl&!ÝÏÁR ~­Ü­Å6^Þ´ŠuéùŒ%òF*ô„i\\JÏ¥ ´rʆD#ìÁ$¢}'E= 6)MV'ÕuIÄåÇæ‘ø$*š–ù‚J1ººJ¼$o÷Gí˸Ã|8ö1íßÊÁØTˆ“±s„¬6”åd%_X•ó¿÷)‘ËÓU½*‹+þqy‚¢c·é×û&×1åðÄÿ?>5( ›^`ŒÖ­ rè%§’hLâØ7%ñ›¤â®ê÷m>®LÐ¥o×Y¡[K±N¬cÌ©Nj¹¿fÌô¥ ¢¥c‘<ögøÅóWÉÈ+NŸ\ .@‹±ê—v;@ÙÅ—:ƒp“×XbúËš°ÔTH;F´‚'Eº8Þ ™ùë‘»(ñî¾€ñx¤N¼UÀ8Æ#Ô8™î/ï¡YÓ–¦³¢¨€É¹gañZs€¨áMïééÊYxÈÊ.–R”F(qVŒ%Åä{“QÅM»-·¦Ïk]ïa×.T¢?žÞÆz½·Ë\Ð[æ\ÐÀ þÏË‚K¸Z¦o¥aûWù2B5ÇEF¸ÊÞu".çwG§aØŒ&ܧ‘ø6ÙF«JoÔ5Ë®ÿ$kWnøöTôêp:írÄòEЇQ¡CaŒoDúš:I·…cF#‚º96b!¬+úºÏû\ظ’¿¶™€²@¾šÙqÏ®â½ßƒ'À†hݽ©ƒâÑgúaröM¼š>N·ÓË…2“ùܼ˜Ó‹$ÃûµyÙ™ÀÜaµ RXY pIÛÚë¡rk )⸬™ƒæAüiÂÀ¦ñ Ó燫÷=¯ö!¥ÀMŒöl&'éS.¥ÁÖINjwê?yVyË*ž`RÖ¹GQÿ”Ð\`5=„ôU5~ü î°àD(%Õæ7Z}H`Êcf\CC•*)#{ŠÂ×É6zýâó«6]4¶qË:\ueœSï?…5ž® WYBY0ßEþqžYfÍžl.Å¢-¡ª@-½]Ìþ£Œ5Ñ@ö„CC,} &cõ|SÙ'à °DëÞ1¡4µU+OÙÌíOkP„Ü’ÚÅa˜) P|0@Ü©™oZ+C6;•3òìUjÏ6Nê)QŽ8­ÅŠ_£ZZ‡VÜãÕOÄj^>\°ªå^zÐ$s1å Í™®O÷NAF!R”ÈÇ{yƒ’oIŠˆXxY!芊ԛÚó™ |xo½¸TN£ßE=´1ž :ßÜŠ‘:ùÕhlC°;]ŠLyWÎå°ÕŽ3v€Íö>¬Ùã³[÷6kêAz§à{çÊ·ö‰À̇åí¦E¶ñº^͇…ü‘|?Í9I³ëöèâ)±oÈäTu±êV]¢‘+KAF'j• ” ÂË/%'¡9WâcCœ¥ÆÎñPŸ˜3 “TØãiB¿6Ë—ò+\˜ I~¸}«äèDíà¿_¥ñçE²+B¨Ôα)¢"ŠøxÈŽ ”F+'±0¦îÞ¤ÝîÝ%"†°JSÄ(IâÁïÐSÍS}‹VJjç€Å£Y}¦ªú°ê¯,ª*¤—ƒ<ìêÉK¨\Þ¢upÅËÚ¶»IìÈ.]ч–ý¾ù $ h 5ŒSë•tV§™ÍŠ(”sÔéÁðOÊxÚÕÁ„R\tÍŸŠ+vN6aÕëâBø‰ïᅶ“û°¢¥Ôü쿃“Ë6Ïܙ枆\k S=SÓÐŒ¶ã‘³{–tzÐèß… !LõAÅÙE¢ðÕs-Œ¾÷2àÀ±ä÷ ÏMçfƒÖêmDÍ~„hËÜAý+Ÿ h´µ2Œ/NN*e%ã,ÿŠýî)œã°{ÌŸ>”ûz'ÎMÂ.:Â*"Žº;+R/œ3o;"(䉃DKTî*Dáðå×$é½úrf9×ì¡sMœÜx•!ÝÈ"ÿÿV¸†…‘ÕýmP’±/-ôËÇ9¶Á¼ GË•Ç.{£¦áÞ‘“Ã.frÄ5'%¤ˆSºæü=TCýkýˆ-BÁgÌÓoÏ 䵶溶ê”9Và ”êOFê–÷ºë)Q©ÄÚædúù;Ö‡ÒÑä39}=úf¤«t>õ‘ÜèσøÑ!ßY†œ)FÌœŽ_R¥Dð¼37Åô94G ô‰þ€#¢ i ˜­Ñ80fèØ]¶V}¹u£â¹«Uê_q·¬ÁçmÉî(ïí‹Xa€ÍÊÀqù,Ýjç~.¬Bx¤{•ØÜW¯3J'®”ûìÃ1'È.Bᆶ–"¤)Šñ ½–f/ñ«òë,ô×ý4՚Ą0 ÝÂ30kÞ^/{QD¹“€ïͼ«· ú¥œÂŽîhcÕÔ?ig= 4Ú®#ÉMe¯&ßx¹gÃjebCA9¶µ×çbLE 8c w€úÿaÙ9ó¢JåZÞKÃŽ©ROqzE`ðž‚7´¼€ým°Hø£–Œ™ÛøP? %øPª ¿v|­e‹ü;T¨@¹‘Á§°gÚ×VX)CÍÚÞ% ³òÂNu3î¿ß€þÙÚþÏ]ü-–Æ4Ë()@×( Æ ›çïyáNjg^éV’õêÖ6 øÛù~UÊ[iú“…ahÛáÿ×3dÀ‡Rù ƒoÝÕ’[üzáG6ŠÛþxæzMad÷úH¤EЮ„£‚¬ÛïŒ €Ê$Ln+cw"Ö>§QÖÚsÙtø¨OˆŒ©ûR-Ç{õ™Ô£Eæ[T¯5Û>wŸö~·(&Šë²G¹ä‰µûP¢™¸%S©^•8‡„¿D@­fÄ®ðTÄyù»àMRåa7bŽ=NH ÇÀÍc o†;ä 6ì{)$¤ƒza`iK¾lAfZ€Ð)W{’hÛ7 ØYœ§Dy šA5s㯠œE*†ükœ;¾Ë«8e((Ð+Ǿwt‡~} L÷BÔŸî5„ð†dxmvå÷Ì’Ž·>gÁÁÿ«A’;ì{Gžâ§´0Æ>¿÷Å` •0coæÐ ßZÍ_Êþ•Õ‚y@D¼Ñ¿<Ž¿¶‚‰_ ÊVÃb+öP ùöÿÂTàØ 82²›z4àúÀѨûcþº3ÉtôJ¤V¢Ùv’$e›.T‘ýË9-û‹¼ÂY³ °ßË,_C!×9ƒ«Jµ}a٨ǚcÑ@•’ ,ÓW‚$ýÎIÕ¯ÂôK/oåø(¨©ÚI¨Û>&zcÁJ"œîgûk®¹Ðs£›YüÌJ=°RÏ™JZ­52áÈäÁ¢Å}¦:º†]솬wð&áCħ OPhÜ?Õ§>'¸ëçh 1VÒA1ÓÇΧËĸ€¾-ŽÊ»ì“3ÆRÓ˜m}z/` ¨ûï·6Y>mqw£0¬—ïzÝ¢ðŠÐ>v …-¿É|ŸäoŽ·«Ô‹Z©¨ÿv…†ešZó_9-Ä «ÁxÔ0ß{HwÌcoëŸAÚ牰t37Óª¯CKàp®ÏÒ¬kãû^´ÊìH (wu³È¥ìÀÛ•fHî|2ŽHð_f´Š6hâe­cßy>»eN5Ó²ýƪ›¼“]¯ÑìË\ ¡/¥ )¾×sجJ›µ>f¦ê0 ðÒ&¹›èñoS°| ¬_º/~+zìÊ}2sþw¹¯3ôÄkŠâ¨ÅÊ&L”xéSù®ô¾q`æ´<æ7½*P‘ëÞ’ýkÆwa])ý{…y*œY$Ê6Lê/Â'š~_¼ô`Íø©î’¹ZI»•$‡îÜŠ GXIÄ…ѬŒ_Í¢ÆÂÇv$-^Teõû±ŒX³x4æ½;m `ª:ô£ÇÁ÷VÜŽócÜoˆ«<ãåÎ^"†_ƒ*ÒžW÷ê4iÇÕ³&FÔ;V1iGÔÇj1¸)Oó¯±3ÿzžðÔbÿ"ƒyHµÔ`ã]ãGEа©euRŠž×$Ÿ¾˜ó ’zƤ ¦IÖ–¦xx9Ê_&·zo[üGœ8hÒeä ,\Äšh¿îæ`ÉË`ÍXqüIDê¬è©4G`ûÊB„œ¨mW²¦vx"omëÝôa8ÒCšF|ì“q”®º¨ßƒ|°ÛBÕ*ÊlÆG!*éu“錩 ^¡S…ýPu=ÿ4Jß —J„§“ÖlU@:ƒ‘ýxCGNpìAÇLú‡f•vK̺DGMˈìþÚ™¸Ù?¹hwç’úxk"£OXÂq*é Ëÿ6DòKµÜz˜œ¨ ÙŒ/:¸Ø‘Y£¸ÙT`S(ÁrÅ¿|PN连SÓ¯kóÔpÓe¡“  ±fïxã¼ö‰åòäQƒœíq ×FÅÑ5ûÏô’¦,j„ ÔŒòJ¸Í<ƒè# Ù}‹·˜‹ü ÈçÂ*ù°‘DÖì,±SðÊ£dLw%oïÆS6ÛÛþ H£G,sè·@ 2Ãâ>쬔-¿2újCá+)|ªøÓw>ø3ß T˜1Ë\Û¢ˆìïÂT¿Jpéýh{Êûö$!,×®ãZA}ÑŠ_;†çOIÞ‘"âìÚ= Ijt-ìßõ \QžA6¢•—î2¥³¥÷Fc(  LgàÑúeL/1»POé`¤‘î#98L´å¯¼mg‰Âþî5$ÛAÙßtStüÇÆññyÕM'¯]gýN4‹ë¾]¾™ž ™<;u+æã¢³Öõû”cá–NjHLu¬§TË9žÓE—ÅSî†Õ/m¥c$çÅ…Ê·šûŒ)7öFŽEvùyÙ!‡Öž×Ïß\ðZK\šekåõ¡DT’ÈâL&½/QØkQ ­MÁ q ØÉJ2Ev5:lÏ9Ž Œ|©À(º[´69Õ Öä9‚oã‘K\88c£¡v9~í”1~ª³]OÙ®°÷äÙ[€Ó:k4[yLÎù^7aûž‘çªdߊÄHÂÚ ë¥B¼l¦ùy PÝa }¾EÊiü0Y/m\IrSR„.9'’®[ͼ°CMÕÍ #¾Œ¢áaJ*mP»*¯É\r•Ģދ.ß Yÿ·WÙ¿…xñ\7¦•i¨7×!:9ÊEâïAçN7º ¼8ÎÈôºfÝÒ™Ì,ü~&)ªÍÕѾ(‚*.cì,GÄmæS5åM€ŽqsX·o‘Q}åÍ™þüÙ[$vŒr4w‹XÛ’Ù\#<"¶ðñ‘ùfšYŸJºÇËrÈýË5ÔÙ­R. ÂÖÀ¬Wªi·}”†¥Ž÷QLê<˜ï§ûË“äô~pŒ×u“:¿hÄ]ë‘ÐÅÚâ'­QȤ„~ÝS çv„ÞiÞˆª`ËèçëŠÜprµûg¯~S‰bä+O´‹Çà2‰â†(åñª«%Ý+Ë—)‰-Ç2;Á*«HíÝæˆw(çn¥\‰æ÷fŸ-Ÿ­~ÈH+öKØX~Ó³`2YÄÒÔsÛ€ë2ò€:iÆTe£Í_UõY\݈á1ûm.øoU,Û|Oäôsû9#°ƒYb„ÄGnݸߪ“ŽžbçüC žJ^iŸ ŠÊ<‘®³¿BBZ½Àƒq¥~¡‘G¦2Õµó“/ÃC`a÷ª¼ D7ÈAýÉ Ø´áŸÿœkem×ì··ºˆ‡Âxx­çQÿsϽ.¸IDp7`ˆç`ø‹¨%ˆè²âˆ¯)ûUÜØ‘«d0w*ˆ³›¶ ‘îùÿÑc§r¾bÇŠ½ >XÍew'œÍÉ»»d_Æ5Á'•%EÌþ"Ãõï÷AíZU*µH-^ãQ ä ët~Ó- 4\ÃЋ|}‹:Ï`$†Ëê:¼zñIÿ5ÖíãÛbáŒÞûÂÛA{6Sç¾Jmg;ÏYÓØäó¬X _q Öhy ¥÷m,Ÿþ“Ë—,”®ZâÈ÷ÀljE¸vÂY*Ȧ·Í/šNGòÆ#Ù²YÜ€/r'´VÐ_Åàú:É΀$¨FJ1wÝ+˜Z‡‚:¦Äñdfh«—ÉÆb'æéŽ‚vìÕgU½AôôÙRãîàPpÕ¶k´†s%2Â.Ž`‡Ù±bæcQRÍ÷HA+Ìp‡9IßyÐÛ¦Îs–¥kBEH« °L˜öáÑÿÖ ¾Q—RíØ?¸r bˆý¶prõVËÏ®Îûþ6…¦æ%A×eÛ)tQ›À]Ê9~Éè„hÈd`¤âñßÀt·’ý1A-g6Ý|ÈÒô,ZœOˆ[¬äDiÈEôEîN±Åm7ysOÕ÷ÙãÙX~-€Lìs_[xŠpƒ‰²f"í¢'•—&” +?áïÓóôŽKcºË˜ÅÅ@ŒMý4߆^ÏIærÙá_R(£ Û³<Ú¿¤ÌûÊcžfÛnÆŒ¸­­P)óá·[Q.NÉÖRBÔÛªcá‚gÉýªãkÏ]‚úyŸ\ÕÔ²!ûqåì¬q·d s£Y®f3ÌWŠvŒ±óM'çj <ƒB/¨©@ÖŠ‚áX¾1\Æ<Å7ú8ZÛô÷LRP¸t²^saMÒëÁK ãL•ZÞ~Ç%Jv+=)þªC4¶'Aøl¿ÏoÔÉÛÌéh©ÿ+k1ÀöGÔ窃*švô.0XL$ŠÂЬb©à±1©3×ÊpNÇx:MµOY2½çûw®y¨­1ÍßËn“Ý<ô„”ìG“Mª]r+ÊDù ³ºÒHh¯™í¬Ú1<`³ê^¥¶‡ãA¹ûjÄ›'71_Ï}7rgo‚œ™õªÊoèJä£õt¬F‚¸’KÒÁÕ¿10iE´Ö-AHi(ˆ¦„ÂX0òž‡<¤æª¾·g)êtGhŠ†Í‹Î.‘•Ôñug<ЉäÖý¤nU¨RûÞFŸðWÁ®•ƒùÀ#ŽÁ/Àû4rþ# €\@K¯*FŒ¸Â–²ãÃÁÆ{ôhŠªž­†¨ Û±™â[¢Àê( ä…ø_öÃJ醛éî®”?ðHDAF¡FØsž"…iô®Cþ®®Öç6—âÞEŽ*ÈG– W?^Gø¼Ÿ[@¿þ;‚Ô3ƒäC{ÇoO`§‰-|¼/Êa«’Y pM!¼­Ò´)]M%š>0–û©5Ã_“•´ÿÒ³4Ë$ÎO³å̶h’Œß3©÷H”Çbp3J­³ º¤Ü#ˆ‡E51^«H¸rì®]ÑÛ¼Åþ ¤‘çžBgNÝÁ,ã³&Øê Ó S¸2r•&”FGÖµjPB&Õ$ü…œ;»±0v¢º¶wH‚± Ôêz¡ÔûRÚV™_ØTÇÙ¸é<Ý1î*/7$‡=f~ãDU×™LÎÑÏʱ º2bäfšÛjòî—ð‰IÚ´µ'5ĹâäÚxGeý;¤ú9 5Ý£gÃ?''µø2m“´›ÉMšR+µÖ3|õ%5‰Û@­…ÿXG‘wæo_7èškö—ôŸÔ9EÞ-‘¾—Ä-ØÆ°8ƒ|2QëœY©Q.…îûéoõÉ´ ¯ ¬kqÆ[áa§ w•Ý-Û™ú7JùJ-¶"9 ¯ÉÝë1Š1¹à"mòýRC,òC":’5˜å`#ˆ¾âɄżÉ^‚±KhBÆ·6#0CѸÊÈñ(ž±í³…ÍtsÁPZÔm¿R"•ï&¿Š]Pøu`´;OÂ" al 9ϯ­Žòν &v¸h)HeK0Ô1R’ÌûÝVŸQû;³ª=¡’¢Ð2· ›-î°äÆ—*Soƒá¸}Aˆ©½áÃávë/\sdEMKt#mÖ3Ë¡­ìLIIžàOÐ7 tæ*¢M\ Ž¿»·ƒàÂ/4~V¦]0'þÁ¥c$Æ­h¬©–4q®ÒÍǧ‰¾¯RÿÇŸ¾ù„í!NAñŸtb€¨vîë €"‘·|¥ƒ ÿ6×ß uܾ܂«/GV‡µ|ërÃùW1x—*¨Ô–|j aJÏ|u¾¬X§{sap|Àè]11¸?êåÕ"ŠAÜÈÅl„Êšs/ü/s@)#H‰±R§ ü?),ììÜÓqMÒè /‡•Ü–/p¢´]¾fD ­£;ñ4.ÄÌÙ_6yã«oÙæŽ Qò–—×¥Oľ¨]ÉZCó'wºéŸ¯Ÿo Ÿ‹¤° $’â?Å}†æ ÌFX´Üð¶¨'êÔäÔ»?vg¹€×àl'K«_þGAm0ÆØÌöGÍ%Œª_ ñ@‚iï¬ÎÉ%éN‚m¸ŸhƒùJ”jÁFD:Zeßkº5²½¯.Jýb,‘]-XiÉEŸÅI X¤hk›`šÛc˜,0ŸÌBhÆÖ|~.«jб‚H)¬ JŠ£QËÀù }`¿þ«¥bz}7!qºŸéh¿iLÇýˆ`{¹KõݪIîcF*ƒ¬Æz—s m Þ©=ê•­ ¨ƒŒ2xÏ&Á½e=ÙüÄ>häB”›±Îq6UÝoŒä‹~Ux+õ7‘.i‚r8ÅÕª-м1f±õÏ/Mø8ÀÑqK½o*­^_°»ˆK‚r‡ÀÙC`FxŒ»™™;ºb_æ»ÉiX‹8py`wnöùÔƒV0ýg6šNmB9‡ R@UÑ)šªiÄY%ñ;,¿Öj°tD½R§òËç÷¥sRÌ÷‰Lú\-‹Ka£k†C±8ÝòzTYÏ%9YQ@Ò®3Ó&Y‹†ôqæuÛ±¢˜z'¿Møß”ŠX»TVlÕô)ÁÕߦ-\?ZP–cX†ÜCÇP“"§z0ê9NÜNVÕ[Ì&Ìù`ätÞÜâ=$vš}ŒE¿‹¸_í—dz6××VºjRôurè–’æžh³¸mVÞõ¨›¢~ÇzœFLw"˜v4ó'hè¿xÂu>ZRl"§ÎK «¸æ5gˆâßYxýkD*<¥öq :©x'¡ cƒl»^¼GǪÉå€ ²Ãp(guëŸ?‘/#6ãkë† e= qa'ó¶»×%‚ðY, oÑDj[KÚŒ&L>  Îz`í«Œµ½ P½;Ež‰ Æóxx#Ÿw;G:[„ш&WÏ0#=øoØX¼VâßäÔN™•è0Bg`:€z® ×öûölÿ„d~Z¾AFÌɺf¸~ýûÊJL–ÑÊ YÒëœLZxÄer‹¼ÈÕHÒÌmJ¤DТ¿mbæP°Ò>Ϊœè·Én6–ŽI'óÿ‡ê©@?W™3D+³ùÅDލÀQÝæ¬q•ÛÍ­uÚ¡)SW‰Ï:³dµ,ƒª`-Xn¯,ô¹ºý0Ò°— /¯þ¿\OœÁˆÅ*â÷Uÿ¿YCoHI„¶4õ‗z1p…6Óó{§²zehf¡ªžÀýÖ‹à úׄnB±¨èjéqòµ1yg³œÿ!ŠÖ/\Iz²|ëéǸ^¾°ø°-³8” ž¹,C¤/ÔKò„êÒeÑ\ƒa¬¥4*Æ‘= R€½¿¡Ìêý=ÆØ¸Â¥é)ËÄ¥"pdðY¶÷r³ÞÿR *¥ÿ¸Âhÿð®-bz¯·Aƒ´8’jˆGÉ’BeNVæ1Nïn•\[iòå£Ïùæ>I·œg Ø$‚õÿV •¿¦MÁMâcWH¡¢Â…0\ΆêVÑIG'Çs§¢.^HnÎ/wà͸þœøžy‡Iò…Io6M¡,H{/ôÍ ù|º¸]n!¸©žŒÅ­ÉΩú7@¿ÑIÄ!~Bî&^G[*íY€ ª[ÆO¼]©<øüô?‰—j2ºJXk}jTÀš ð·kühr"ÞhóqÌv}Ôg’|xÿkO‹éˆçNÜ™L²†ßknëëÎ9_ÛÌ'ôæääãmÞ¢g°Ù¡]/<É~Kw}¿¸ÍÉfÕWÔ áÏŒy#,EŒ&¿£Äåmë°àqe5EA¹Û*DºínêùàÍ@“ÿ×¥eEçIWé%€@˜5Í]s]ܦVØþûxb°§”B^fgœÇˈ<Ä6µ¦Aöv4º†˜Ð¬Ž¯”’ Á%É)‘Z‚"”ã+K[^Þ÷òèÕ J(1F(ÒÞáòJ\N ’²„§Î¯Ô¨¥P“l𦦸ùR¤£‘àÄ1†Õ&Dî'Àì'Å—+ÇÞq§€¬3o„%W¯&+š5÷³›SË$ÊÑ7.\•„b\òùyCD›è^õå„ßóoXîžäÉs`w…}–Ú;'±\X&›¸q™?Ubª«ºR#}r»¬ù­åUoc£]b£”zÙ0}–A©ªÕnY éìhl§sBf¯H\šþ¨Ê놊tXÐ å ^QrÃ{#©©•"ŠØë°ï8¶TpFº[vÞB„ýxˆä÷UZ YÂøúB~ Ë ç•2PªÚ‚G²ã8SëlFf/QK. i¤›Ž™,h(*Š‹iyÝʇ&y ”Ë"'ÝË “)!Ó_9Z¶[ªž¡•…•ÊîœCôDþÃ?ÅÒQÒròæ ÌòTçÈßšš´4ѱ¥ãf»í§ÊÃú—ÀÏ/pîðÊ*ÒQÿCì[ñí¸^r]4ÜGpÑàE㥩V±wç0|ÞÙ×»•¥gùæá[îðúÒëåŒáª½Д„%¨—ر9 ·EXC(`ï_ã>ež}•P˜»ÃÛ€²­x÷~µF™¹ÿû%Ljd ØãÎÐ#ïÒÕ„–Àœ¬ËC~ó'?ãú“)XšíÃ‡á¥æö~†mkíi£­ïG›FjæK•ìŠ| _!¸b3O>žT¹Ùòí9b¾ö2«isHBB Wd_Ó->„‹æ›9_ÜAîk/&x>Žì™„/¼¾qp +™À,Mx=á´’XFõWy@wìö†4ÆT#Û‡¸Å_õ’zœ9nöækˆ¿˜«ï3NÑÌ ‘˜åp§£ÒRuÌé6æt1Ö¹ÄܧÁó@ÏŠËú^®Åóz“C¡á?PVñ(ûf*o®S‘¼Rô×Î8\u£á‡KÏ…³A†úùïûî6HÏ“P ïÑh÷åÔ6OÌ#b3kÀõdޤØÿ\EË&H“0s¸IÕÐ+%½eÆÑ¨²VÚQ¥†ÁŒÙ釅¶wŽÑîÝË´.-Ëù 7î®j±“jaOþ¡ÃóÝbb«o3àžt–s+¿ÓGþfµ®ÏvíÓ±‚¹‡ÐgGô"ÞD>¸ŠÕÎ^WÝØù ÕƒäûÊtœ0g«–H.šŠÊÔ)¿9pXáì8Ý«?kz»2I«Uy L¶;*5½\ ì\qkáR0G¶”3DŽÜ6š™K ÿF¿ZÜ«ö¨r^#`_)i ”x-t›­¥t8©™Ä¡@Ú¥ûû2½“y¾/Ò,¢vÜ¥Õ½ÒÏÚZÜ„u•1eYriì¤X£T‘ûYÛ𪭮ö|=Í´I)ýR©ß!E YÉÊ~Z¬~ÙÉf9œWùæÍ¦Ž È€" Š]>œã(ª'´æSä‰+@2É›xÖºNt Î9¹ÅÛ)÷ó€RŠo-þ …FBíðÑÈ篜 PÅìÏGhN[›ü?•”€URc¡ä«’‰høî ¡"Cˆn«2­ A«ä¼;æïm žõŽ;Bo…[² ’=Ïf:„ùhñªpLëæMß ”×—3|ºÕcÌNÆk鮎¾1xØ,ü°õ™XBI® Å\¯©“VûÜøNܹ¸2ÄÛÛsK Qâ¡ÇÙ xŸVrç«¿d‚‰0‚6HtÔýXõ¤µÎ¨<[cO0 ‚èá1²‚9®ÓNœL¶w 3S$ëþk¯?޶â[ &’¡÷:¡IÕh©Ä^ݼ©o€ªÕÉï:éªò#6ß{ö õ¿í8V&=ÅQdOq{r(E)àC9é7-ø²:/»S·ÙÜQ’œýö×ÓAR| Ãí±_ùO§"³àªF[¼ù¹œ„ŽõŠóf@6<ýIàs¼ul ±í‹›~ð0Nž_üÇ3Ê‹ÐõAw7Ó·J^ Zd<ò‘…X5ÉÕ¹FñÌÑDÚCÝ(3Ç«+ú–­KÍN«Gb$Jg €sYQŠF4áßM¤äÒRRŽåÞ²‹“’Â_©Ê:§°Pz¯y’-Æ(œ BZÁº›áe¤LkMã7ÞýÀ"o[“:²µ ´Pk acÇRôÈþË[˜æ>-@p¨÷|•Ûî½î’üê×—YKVØ9Ö[+¸¯!/´°¸ŽäHæýÎhR ý ÷ïF‚W1¦x/Ò`œe°ÅK¤¡ w?O¤o7.Ý¦Ö ÿBtE@á‚Âè{ŽôËjO{Wòù¤ütòÜùâs“û…¢|:‹ÉØm¯ÛÃÁŸÇ 9ÎÏ¿Gʯ*­B¿gÙè-ðsLFé2l]áãEJw${]k‚l¯éæ"–6EÙØOY$ cc^@åÎvi᥾eÝéLšˆt $¤xR}ƒÅSJ«Î]æZe¬ÜÊcæºæ/û*2rÙ`ªC-ï÷ìß‘ôx`¨N—Ò„Ð[>Ǿ¢šP8F‘AƒéSÒf¥y@Ö`ÆÿרWšE ~XƒiOuzñu SÃõÁZj0³HÇgäÒø$T©¿ëÈ xcï¾aÇ,YÔ<@Ë—s5=2d@ Q"ýíºÁU‚y†acœ LíŽTZÃÙÆ&Ç{Ñ0è÷íúJäØ'‰±":§ƒf´íiØŸ3UËT„£À±6¢LÈi†¦õµø<.³êgÒŒòé8P¬…,•Gí¯žÆ&@5¥îäb—ùVÏöÐ#Ämzºv‚œâ%Ôºð+Ž.ÃÌ?]t1ÑW©\î"`¿i,¶ÿ³@‘£¢§Íâ©”üNò/þYW+"0uä.~”XÓlIùÿýºcfk¸ln¢bƒŠ™DÔd£è_Íp.§ø|\Â_¾®4y’êbPµŠ’`kÄWʼN.Ë/þt83d,|ª·í=›3EpÞQY·§Æ ) iß«(%xç?GåI«kæÄ¾DpÂþ)"jÕ B‡9¿déBVZšL¹Gç>özXëºH€*96öqë>‡=Ôj™ÛÝ£r€aŠ a(¶6u'î³l¢½²Å| T3œÉ7€`¯ô(àÃf\þê*.†‹ë:³«aÀ’Z`€K^’<ÒàtkÜ&Æb3Þž 6ã<®‰Ì8×_ðÊŠ·ï.Æ;˜Z®óÉHj_à§>ÉÚBz*â´t‡‚ÔYÿAªjÆ>›±Í¶ô&½^¯%÷ÿ*$ĈMM|(¯ìQo»áUH_±ôùØFFeܪ +Z{ɼ›h/^8P‰-Ü’jáÃã•ZÑ Èd_Ÿ¦¸-sÖéèOþ/á•_ôuŸ‡W=©Y‘Ž6﯅ #®T¶õðÛ² ä7NÒšÖÕŠ¸‹o=Ù@Ž•U¨&»Íá¿72•LŸ¸¥ÌUX©Ÿx âÄÒPY¢3ªTÈ $¢ªƒÏ:¤Tz…¨´:ëDÚ™C8¢ì?!;bM_0„”KÑyFÅFÚw(ѲéÙî÷ƒÔp!Äóx¡¸“/O*ê먑}ìZ˜ Žø•¥àŒvm?9@ò’ý«lÊeå3íXNï€÷®Líã–Â&f‰*ëUoÀá½2¯BÓiG,©®FÅ?ÆAÅÁ ƽřð´JL{Ì݉ÕHÖ !½×»Ve…î|RñANFïT (k^Hr ×+tÞYU¹s|¡õ<‹ôrG °wÓI¼ G¦Ÿ²çï0Ä뮹ÆîšÌ†•ã› ŠQÕ=0 ‚.ñí|\²*Ogˆ;,k©éÌ%’ø©ø«m/È ?GÚ7‡ %Ëd‡~ß2bé`q«‚¬©xÆÖd0)• š˜H0E„lº8õ¾áçO;VÇd;d(Ûû3K¨Ø1Eœ«dL,USwúûwý”£JJç‡2e9B®¦Ø)º¨@`qÄ•EPN泋.í3q4ºªÝqŽEÝ{¤ÀóR-³>D?ÑÙ‰EÈ 0Óƒ~ô1º‘eÆ[‹âv{á•;ýêºbènà{wb¸÷.Êšù1¿©Ìý•@ÀtϱQÔãU” ‰#ë%$ªÈ?"v·+é»ô[âAIøŒ‡›)¸Ã€ÞFƒeWßLü-h|œ…8ÛÊ–‡˜“Œ ññøÇ«‚ Žj3ÅtMK*C“¦³}À 0þg®Ûj[îw®­ œµïQ¢0~—"|< EÍñ_ág…s ‰ßŒ0®m#}xÁŠAk*Yì´†„Ä£¤CM§ `ò9ñ¸•#{Oܘ:\–îQ*ô^ø¿‚JÁ‹®ÆO^¯š­YøTȼ7[xï%{ão¶(TN¨8@D gå»GÒ~¦cMŒâTCöÃIË@”Z4JÞМ…•PS²Õ~˜ÎP3…ÔÏ€ÁºšƒzQŽ÷:{PÚU£èÓ°Ø¥w¥âÒ8-áŒ6e@¨öˆà"uSúwg(bÞ²LjðYë¾õÂ$ÿâq¿>.V–è¬Ýœ’”ŽáQBSGJëÛ+>¢gú%6÷ù¿–öhÝLGx†±·[EÖBˆÌ¶iõØS/HðªŸÄó]¨¶¤Ô (N”ÌÝÝ©ë-æïúê4´}ñ4;ç}&FRUCX¶ÍŒ98©•°ý”Sæ=ÊľyµÕœg.ÈaÙ%b6Iº×z]ÓÓR`‚Žib»£’]À¿;K GHC—?$ÝÁ0¸¤Ð  ˆÍkh.Ii4fô??Í9yŸ[­Æ–¾œQ¥Æã”gµöËßIœ7G4Å%}(­LÒ#ŽH=¶Ž‹Õˆ]Âc^Zç—¤Œ¨Ë¢Rľ~%†ó269á!Uö8»™YE5~Ï÷d4‘g]‰…^ Bby6ñ _š6JÂ\Am`¡iŠ_WAàRÖ•Q|V8‰Íë÷‰Ä%¿¼fp¢ )#Ícˆ½,!3£9 6ã÷ X„³áa2¹0A±ÒgK7„«2¥@gD½ŽÙâã^2ìÀ½ÇN‚šûJ]¶.k¢½æ“ÍŽ =-–Ì‚ËB¾¢°B®”Ž•»˜Öê”;4œÍMá½›@/€ØzLà`¯a:s_ß5‹t9ô´ç‰’_›Ë3-ΟËÈW”ð*7øÕ5^:¾·§´ãäP²÷òïïp_Áëù^BCEðK—™{ÖôGõ‘{¹á¸½§:C¾¨1-«'yI#‘?FÐ"ͬ2ˆ"Ìø›h¡Š\¤@æ&“­‹…Þ½~+§;ÍI×ò}ÚnIŒ+PTÞ“6徨¿7‹7\ƒ?xP´[ú«nâ‰n­zÂîîù¬ ’%°×à=y²‘ Z,רÎ8‚‰‘OÆfmç·¤üˆ¶ß„ (v3 æ€Ôåãc)×_•P=«dä_A±r¸ŽË‡ëÔʲ©¯uUðAKkžßd|˜MF rV°ƒ,Bs:;S¿Efþ3rêªÀ¤›bNÇ/6üðo÷©íý<š ªîË.*É/|«}w½ Äð¡¶þÇ9‡‹è¯’jÓ–Œíäúÿúe¶¶kkÀA3«ùÖ‰ræ÷“ë`aeûꘞˆSD x¢S.¥qÆî–ÊOjð¶:Áí{¢àùOßâlê•J§éÚB4™êÜ‚ôÄôSȼjbB™iKo÷æ<¹¦WÐygEIQr»€‘Nóл2¿@šžÚ¥Û¸ªWo+¤ßªg½·+MT-Žúuv÷£ýž®ûñY¸Ì»v(¼v¤ÑnÕ õCdùtŇãrošÁ·â”¯ÑT Ü7Ú?ä£pÐÛÐŒZ½‚]Ÿ¿uוWk^^ðJ[WíãÝ|¯Din‡%âÓ²X§§'Œ¡YuåÒɬo”|Zq‹ü‹=މÚB‰â¸ˆ‡Vº›Jpòs§øº`šÙ­¹P’<±ùv±w/+ÕènÚýâWà9`t´³-ú ÄåpÒª”¸Ir)ýG-‚-%P1ˆ+Ó{ï—öh?-À1JºKzõÈòÐö«û„&µ€£á½å®'ÀÜ)ê2¢[Ø á­xç9ÍÎ%º%y‘ÞÇ'§ŠeÚÃÝyšìž2õJBªl+áZ L–„"$€q‡_ó˜Ã­•ÿ2+@H¯æ§* ¾þbùX™A'é«2òŽ*es¶¨é;E.¦lÒ…‚®§l&q@ôyÔÛU/g<ƒ³æ#”ʰ"~½íùyñÞbW¦ó¯7ƒ‰ÏôMÎAy;0çr,;éyᧈŸýkB“¯žžÎD~~ª§06ÅÅmýHöD•PS—ÉŽU(ü\92¹:lÞ¯Ï%[‹÷©=Þ”æoÙçR¶o?p¼›ìŸVÔœÔÚ¢!Ýs¡°÷:e¥f1;q¸?j²eÔõ»O{Å;ìÝÉ©;$ê“I jÀà+{ŸM½ê›áÔ»q´ÎŽŒŒšGB_shØ”yT™]%Ã;ªB[¸suå…'¤ Â0² <ýs­m|çµû+ìV”ù ˆýû=À’ ì#OJ·­µ¥'8vî*ü$Ù´Ö~Ñ ãÿ±à‚ ¼äÞ¨ÒRæ~ü~U]qQ>žÂ°¶tÚ‰9a%ÉjK3`=?%±®h‰B*†™@æŒßy$½[öL@MÌGÓfÁ(k‰m0ÀAøü`œ+e¿ÎSh—·Y<@æ IÕnò‰€Ÿ®‡ÙÊ÷±¿øCž xex§qo{¯sLc&ª’MVm®AûbxIµµ¶·üÌóX¾ñt!•rÂO¹¶ïMÏVÇŽ*Ú¥1Îü…3€Bz4v+¬ˆOøxÅö©ù¾U]Û¸š.$l}/Ž‹­0µ:ˆ×ÿ¥r}¹§•áwåCoÑUÚ@fpiˆ]³ÆCÑßkvšq'pëßm]KbBŸH2À}+œóDêCU:…§ÉHÁ@ûÉ]p@{±Þ™Ý.CH_:u`•Ìx¤ˆ}Ùªø¯~n‡yŽÀy*FðG4fî¬øÇš‰´h \ú•Ÿ w„b2Ñ HžlEF©yÊ[ÍfÐÓÙ6ÞOŸQ~RƦ\»—ö®]œ:R¼íØ_úçêwLó¹ç¶’'«¹Ãí´{ÃJâ•y˜LÉ< "(Ë£4§ç ­? kÙr4:ò§–UÔN!5².!a}Ý»µ$~Ü'zSÀ-Hy”Úe·±³YW,¨~íváõËÇŸúë³±4,j¹Žƒ¤Çw¥Håe:d´/Í‘îZâ4ü[ÓÛ µõy«2‹~–už3’Gó¿ÉôsÙ > ­MÓR÷xèqŠú7hF¯¹âUÜ‚hpUnv3°ÊÌróå˜|ŸCõ/Û(sÏåó;sBüÞV™„"#=»J{/a׈æT¹bÆ/øØfS$£Ã$²õèQCÚD.ñãÔ¹ÓÊ¿.çjÖ¡. òˆ**âyR¦V¬R›EØÄv¢ª\ A9 éc@†ß…MLŸízoæ2@¡V÷ÒxÿÞ»N‡KJïV¥Åàæ:Á’Y®-"u—J·÷äÍ ˆ™³ÇØR¨5Ë!ĵBØŠ¸o/ªyöÐÿÞ‚B_?+gÛ¦VÅC’\Å»U‚Ãé7R–q/vImó[yÛº:h.â•ÉC04»ü‘7\x«{Âj|!cÿ@â­»®ÞG äãTí(»ŸcÛöÇgc¿AxG3àpô²ö炽aÙeÖúíÂ<Ñ$LŠEV̨¥ÏJ0`>(‡›87§òo)v°% ©]§9Sˆâ×Â! ô)?CbBÑ¡5çyŠh…ÌçjP4_ei´³Xå·Èu ¬h³¡ªOÞ á—ŽïßÃ2ÍÇ k‹Ï"xr4‡+­Ž«Ÿ`Á:8H1;…þ„[™Úv%hhþk)'3ã Bö²Nù3{W•œÚq‡Oø=‡—µ$5$‚Ý!ÁE„m™íÔtÿxî.¿Ñ ƒ»z àò)*UbC(Þ—³8í§¤ú û0„SæFæNËgp+¥››…Ô„-·ø!m¡µ{ž-€fÔêáolŸ9ô·)@W«žQéï‹ —ÆÕ’çÅ%ŒGµbl¬ÙÕª*lF«t&¡® ‰e¡eã¿Ëêóš¹C{`‚ÐëÏ×m°/‰ßÏDù-Áqtëÿ8Nï(b”šMÁ½[}¿ gᱨþUüü8̱z¢u”JñD4}lœoðVg¸9–%ñÇÞK›,Ѻ‡2‡&ºÃeõ“1a%è˜[îPnŽÙ“À<ƒöè›g»SÓ 2RX+¦´>Y¥ã¹Œì,¼œÔÕò¼ O;>H¤ÂÈay@ïãDgXÖÚf‡H±,BÙ_\ȬlAGÇïŠnò™¼ _½0W0"›ì1ÚÒbÀ%È·úÖmÙ9VZS#‡zP ´„°MF…ø(à7`ØÎxÕ&Ô½/@,&Ñ,î»GßäÁ‰F-ŸòËr]¾n½ç ©Ž¶ôµ*b q;Koj ¨òX Š·ÛfRó0ˆÎýc]ô*Úé3F¨x¬#žÙêÀå 'º½ê‹â½ó+júmd£(i¢nv‰ïÒÏ2>”Æ`bw!çÕCµjéaÒØ8y/ZüÓÒ¦U"2oªªœPùà’Q}7RܰǬ|Åþ‚ÿ dÙT ð$E§Ì¼ü,ÀÛÜ.¥-T B%k %©cŠÖZ @ÂÚªqøaµ ÜF´ÑFÝjbJ“Ö>‰£²àÂaü£íó ­¢ê›ú!]–§bXQmƒKº*üƒª‹w-wÅHÂ9ƒ"ìcÿL¦•©tæŠdË{JrA¤4˸0¡Ì€¦¬g\HÈ]æ«àµíÉl$1:¶ßíGɸ&ñw¤ÔÍr®¨¥yæÂ¸Œ,…þÊRõç¬$²ø¤–]6c\76Rýiîî»É4ÉaI y=fþçïc¾î%ïé(ŠéYdUyk¸94å¾”Äÿu¼¼VKHèb@Ù‹‰Åñµ'Â×,5e"ãhM…ïÖMLñöž ÓÀDë“ÇÙÒ$œ‡v/ëhö#©ýdÓïUÂ1t|ùÄ?»1$ØÛã sô;’ßb@®X·sŒÙÀ]S¦ê?“ÇØŸÇÁ;‹÷A©ÌEd½ü8Š!õñ~K!†•”á‹‘ÕÂ×RÎ¥BËý|LûÙª[²4„Áæ ßOéÊo´À³÷«i÷˜ÁœQ[q$S·ÖÈœ¦ü*墩çTÄ} k“€Ž¼á³Ô¹ÔºRpºó%¹~[Ýb@‡—t£”¬­³;ŸÏ˜‚·û9ñÛU$9î[UºAºÉ„AÒ·õEÍwÈ0h·ð9õ µù°#¯$mÀ²ÿ 7m 'ûQž“„¶Ô¡YÝj„wôb¤3 *jx­xÓü%²q¢; úÑ}HXŠü¨: 'aõˆé€\ͬVÃÂòÇÀÍž¨¹yÈXú }¦y\'Ä<íÛ.íT÷ËÆ<Ö7Ø«A…¼t5#Õ‚‘b-Xïu”í™7m & –í”…ÌÏó‚qI/`ç†H÷ÅÞZÁ² ¢½fx+1(ÞCôÔïÃ+Ï\ø¿÷ÚY­ažýC`kÈñ"hr¯­a:›B&§«ehŸŸ&iÌŽ"gÚE7Ö냋 Ç:²ë¢#mlʲÚ$ËïýÓAƒ6Ì’ëTˆ&ªƒ·$³”ÐOKŒ=Që"âlI˜Õzt¯G徨ISÈîœïŸÉ„#G¬Ny`–£iî!Õ:˜¸]öµ¨ûÉ”aOb 'Ë Fjf:RÜ JAc攳Xƒ^þ!Ń^qš4nžRÂþL Hh 榠CNFÞ;1V{j㓺ཧo–bïmEeõ™²yš†½c«i½ÅÆ@Jù]q¤Ý˜iðXÔ£zr0;³À2ÎL‘"y²éÅI~EB;¼Áóf¡”¯(˜ù6ž³S B†7N•凨s â=Âr¬Œv äbÑØa;m³:)|H¾UÙåz„Îñ*xè5~tRÔõú«ƒÁ—åÚT÷ÅÁï&Å}Pý@-  „WÔå*rW²>ù<Œ‚`ÍÎ`gŸö×ß’¬hµÿŸÞ(GlPœUÐŽJV‰»î|h­ÿ©†âÝY­KNï$ Ä SÊ(ætö{À8–£.e©hz¯1.ôï% ýìÎ§Š»ãzÌD:šÜi"°»ÍUD-XÄXõÐ3š±R£T#ýMU„€BÅü иa‚á«UŸ#\JCŸ`]§­kò_ž6\ §Â—'íc–+×Lµ÷"šlÐì/Æ“° `:ÆÂ{¿„ÝUv…ƨúB‚Y韑|ˆn pü}BÃIý($yÔïÒÛ—;éW,f!x‰Mr¨BúTVIV…½EÞƒ¢+›¯ö‰Îäá9—Z;*ÿüd¢oCLt(ê{…¢f)MÁ…]*”X Ì»ÏޱР‚ðööÙTB_á!ú>¦Ò*ˆ|U¿û‘yx6Í‚Ü7+ŸâŽê!¥¸ê&"q?<÷ß1…¦}\¼;dTqoÑW™éU¹EÐFÊê ,µ#¸úí½”á=äH°ätÿ¥ÆmÚãmæâ`&‘Ëž’çrÜIÊVŸ·¶«Â}™Ý?j;ó7ÙM™ÌÃ?š˜&°¸ôr°¯uÜÉ M±ŠF8­_e—V!Ìÿe v¥ÌÁ}…Ž2‰1òŒ®1ÇvÈ;åË×,ß( n}ÏÜiñª¬ï!×o{•7£6;¦Sî$ÂÉ>Lºùö`¢&Z_ó‚{nùÕäÔ÷jh$/@Å0Ÿ)À«^P }Ä\^b¼\ÿ±¤LÈI±hÐJ†z È¿bš]—ÈO !­2›ßèof0ž¢‰˜œ¿²ÊñSX•I€W7'*:~É^¸ã,ÚàõýÈœhʃsJkII«jãb£šîß’¯ ° srǽ¬ú¯;€}Vƒ&½“±éåm9M¾DØjuÕWñw!^8¶\Vu×R×ÎFØë}벨;ãÞ=¬ø={L ¤‹Ðç”X¢§bþ’¶JçÚæÅòÒ=öªuÃ0'LODl’á#÷¢`11úi,`š¦l“ìT¢·Aïÿ£nÁÄJ¨×Š& iÝoígWêš÷Ùž=÷zµjBVÐâ€s1ç° ~óUâLµ&æ\.¼ðˤŠT©LqÀ¦â2pÞrêèÈåQJn€Ë°l“·Ï‚ñ™lnÉŸ—ÛHöB¹H¼CÀÊLþ!lŒ0ôA4,ýCÕœ´d"rA4`<›\ˆ×t<ÇIª¯:{1+€B¹ÿi xNYæ$û}ÕÉì·ûQúý ÞÑñZ’”ßHf¾èHâNK ›ÔK ‘"HFßÔ´>Kmn’¥+¿«J°¦w4úòmÿFQB˜Qi¯`~¿§‹Ì§N–S»€¸SÏï¿}Àøì•ìÁ1 ‘ŽpPàé ÿ“öê,xê-ìDü¸SûXPýÖ -À!Ò(«ÅÍ)€6ÂaÜÄžüÈâÎà\<" EŽ¢ ™ç5w3‰Ì’ü!¹È== ëÏ-ß} ÃßãÍ‹{——56•ÐL`rmNG<ËC)f·7ÝÔµraZ‘RÇTªƒØþS„½»9t*eÆÏ¨ÌʪˆåøPô lš4l¿œù*ƒ¤S0PÜë\š“ʵñ"ƒ¡Êž$®pU˜cÎP€¶cWÄB&ˆ¢þ˜ö>pýc£B¸ Ÿˆb‚kÌ^„¯¾µÕ†ëh  x¶"ª-‹ [Síý(ÖèÞÄ8ÝcóOâ•jXŸìlj¡|S„”ÿfC;͆}eC>9`Î7ZsCŠ$šû'IäXÇš—Š“”XÎ’ ›Ÿ¨÷ÚÓ G€'ÞÛÍwJdAVSýëÒîE*™¿üü”ùo¾óK¡.`jVC•©OAX¬·bÞí6ãÊé¡IðÎ÷ oæ­Ò ÇÖä9ܾo5,,RåðÓ· ^ÒuywêEì³1ï&uv$zg{‡ö‰Î+!ZùHû€¼Áy3À$8畳q—íEzZMÞ ÐHÍô·¾à#)Æ5 ¬¿³,zí)i6RN¢ ‹Ñ¡¿z§náàb?¢uj5ÑÁf-(¤ûOò§uå8iC·ícl2gm‡ó)6FÆx¿šÀÔüñãK^çå›®¿çQ±d «qÉçdÏ÷xïÎqʨ Y`®•‰Ñ›²„8à!ޝ7d:*Kg‰çâÙŽ›jw!œº]™µ$Èxô‡{9ïižWÞ7½Ã?Ôó= •+Êeç¾ÙôøÀ[{Ó-*êÔm&´§&½©›š<>|XÂMiP¨TÎyjCQVêAÇ ¨à~„Ò ®I\^åYxÍ’üÃVçÜ,{—î¦a!´š©dÚ¯ßZzfs¨†™Kèõ~L‹•ÍßGßÇJ_´L9?;Û¼~QåoÇ× –4ø__€9ç ~ø`­v‹¥7ðnÙs¢‰QœÇ¤K‹ÈòõNyÔìxA4£d€oLw9-"¡WÅ—ŒnöÝ .{\®EÚ×´w¦ŸÈA‘´½Ž9·¤®Þ¾ìÙ̾:ëÙKRÎÔÐ[}f#Þ´ÀR=‚˜#¯Ð•|bðâØ † €·Ü~t‹R(TïObÓ½u4µ‚§¿S 2=6”Ýq^2 >TÑ(A¦FØðßðâ0$b(2Xòòõ ‘øƒÆ–‹E^ÿ»gššGëé¼w EùO†=p€]¸¦ÝÍϤ3µÝ§áàծߌ‡÷=)š,´©DžV9ÿf•®C”Q -7B*éÅïï<ÇKüµl`Š4›Òõg9ÙÅØìËI3i®0°±·äªF@4\·NÍ“ÄunýhÜÚ5ÁµÏ1SÁtÿ•è÷"ï4²™ÇÿûýXY<à„í´Ò~~@ò+ZI»y¤qËýLYÇYÇÏ oÜÎb{ rw!—͈›ˆ2" (`ª&¼I}Æ‘¥)Pc[`o¸EþÎ ÖøJ`~xÚ¤$›{œû¿n-±y„´8’ *%^eñŸbiñ«cçsêà þ¦ÖÛS’!ÏóŠÛ`-îêÂÎgÅJ8‹ÌRú­…|QsZ=àêUñɰ“|ûü@`°#ÝIœbå鹜¥¿XF¡0éÃ% -ðùùÕˆ€ ÑWy¯p2 œ§G1Úó£-ɤ Uª –4ÑKwÖ7…x/"œÛY<]Û[],åðJ:) SÐGo÷pÆM‡ý2§¼Z0´yÂožª#à:ýOß ËàªR>móÏó²îÙ.~6Ëi̇Ó;Äæ eáó€ñn‹ F“aÚÅÖÊÚBˆäÿ…+Ëâ‡øG3>[ä´¸ùX³¤Ä&>Pÿ]§U6¹¿ñð=bœï,v±P›A½Í«”¢i1Š™,JneÏè~€Y+ ÷;p`jNq“níôq>{€ZnôhððèØ`Â/mù›/’cŒîm×{G¤7fy¦ÒòµÀõ£Ï±üµ™¸Øìҹʘ®Ît©óôý³ìh¸±ó÷»YB&%Q|MýT|c(ì'B‚LÇtpä z”‚¶Ûüc;Læ‰ç×6c\2xÃ0Ê*.x™k(¥Õ¿}«˜Z(Œ‹°â·•›Ø&C§x‡‹o sY3›©·þdŠ¢^Ìöq­¨™"ã›êœÐÆ":ÝàP¤¼é% oYü¾…Óe´¿õ)–źHSŠÊåÔÁ©s×Ûaái%— õûÄÙ#1–ô1âY„Áƒ¼¯0îõÆd ‡.PApô‘3(\Üë›DŒVŽ[ºVRFlã1bÞŽ‰K®Yr†: Ó3 ‘¾(eË"fä ‘×/gàNuwøeú%…Þúù3¡’²éØØËÜç(L|æ`ØäêÈùå»+Så¼ýM‹«fàιápþ1Ëã~í Õ,¾2+³(KXs $%ZfõsæàÞ‰ÏBC“Y)‘š]>ª!j¼®¿*nU|õÉçV]8'—ERêûY<+9àߤHF×çÇ#„¦„„n!MS¶ ü2•ïçY²ÄYŸý­0.T‰¦BêëÙ>  …§³ÆßYmecKxSºÁÛ7/ª1òb f¨œÕ«Ù‹«æ´#›‰|þØó½kç«zÍD:¶&×%kD"û~[bQDÙdÁn*+¹u-ß<Íêü{ÆÙ3Cg­ŠáÖ<¿¼;ÎÈ­û­óJa) OM™n'kR³}mšA¹Ë¼S[q.í Ù¸+}Œ<íR¦¯L0£|îz^N©–ÇÎÍC¤†ÿ{ûK]pt¨µ/„">?nFIíCø¹A±>Ç\Àù3µeM‰À =¬û(îÛ¯ØÑ1ó/~««LÝ€ÆÔ£Ÿ:ü`‡å0q´7rdÉ׿¥ÚŸm*é®g­ø8“zaoŒ©>äî¬Ê4Í”Ñ*crò-`Ô‚ûa<—aMoS:–/4”uÖ¼àîZjÁ>ƒÏP.¿xÞTdx‹…Fœî¡29®7…Öø:ŽÃ$oŠ“›eCû*Ÿ´€œŽ@*so[ÌFxò™,eʦôâAﲤAc¥q×5CÕ€0pÌ ¸~ ¬y,Ƴh/vÁàRö >›™nùrÝ» Z_v0ë_\*¨Fø5 ÷ÑÇ“ðÅTÇú.À„0ŽøsZO,nxÞu¸Ëí·^ˆ7[QŽDm,É9HÁI "ó¯c³Úw똠=L~‘؆š'ÄÞ}Ÿ–Ô°ÀÅ2ÄE¼×Ò^tá±2s¸š±è¥]ÒNxïN$T]‹tdjÍ¡lR]y—^usÞDò€¢3%=‡²qeÒÚ®©+ÎÕoÿ-{L”39•çauaô}KXÊøv+ßÂ+KÇØ•$¥aïahE‡1þF¨´œe<¥÷å¼ÈX*ï3ÅVt-k. [<ŒåØ¿­T; “ ÂD­“‹›¸C쌩׃T(•‰A„.k¿Ó}ϾTæðfÙ,ÐX‘<…¯ÄœâA£ÎFäµ1¿`Ìýš…5¤!BQ3²º(TÑêXw$ŽvéŠõ_š¨\Xv_¦³ul²u⹃zaqÔKë6/; ØÐ£öŠÉ þàda¢óµ+øPãÔÀ;.œ+ˆ i?d7ý5×M¨ãAœØN8ÛvCéý³®–õ½‰ÿòTýŒÇÝ]('÷yš :* ŠžÑ“|WNÔ- ´(©°V¸}€"P3‹JÍçkÚÙɰÓ9÷CÚŽH±¿²*vɪ€<±½£¥HG!•ú}^¿ÿoŽ¢!@yé ‚®¸O— ôûoÌ ­G´PUø7Ö É8& b#Î~õ½ƒ®Èº!.ì“nÄmq##Pnå…C"cÚš«úNýІ ÉBòBë$®=-n»BýrPh-˜it¸Úúßö2Œ6@Tà'zYY_=´ÄÅH­,âòÅT²îˆ´m»qáÔYyfbïÒlºü¢•œòÌJ½^¶WÇD”öƘ3rçÌD!–+õ|Øñ8NL’ ÍÃÃ)dß!S²¥`ÁÎ2¦‘²XƒÎ1·¶ÌHI§Æ#Œ(|!@XÖ±(\¸;PÂBœæŒdØP¿´*ÈßI. ½«¼Šh"A%jõå ó€Âœý½ Ì(ÀFw&¡'ÏØñ]|›ø M ’i&#ðËVä'?­ešå,ëØÆ¬ä|¼ÁaÒ8¡d®9™Êã“Äï{ØøæÅ› ¤,F!CNœ  30eSçf$Ä͈²‰’\éÎÈ”¬gKö ã†Æ˜¯+}ДDìüÔåêï-#ƒVBE—7ä~¸]²Ãy]i;»g0òÜ=™ø'cUû“M.E:Ršè`sXYÏÛô“þMœãE¥…ÿO©p³9b»¡‰Ü¿lZFÖ‘*‹äƶ ÚvDÈ#l†µÌ9˘ Âè|y™RHPÆ£ @p™þƒ Dæ/Õ¨é…rÚŽöÒü>mi'ƒ÷eæ"ƒRjp;§“òJreòNK+Û"p¤eFûÓyzÞXÉ뻋ømÅ4Å…»ÐÏÈÓœ ÚŠø„n,¹Í‘öX@¶™G"÷óeÓø„ëÌ$Æ0—æ‡þy¸êÙØ}Å—Æ©¤rNÚå Ùj;M"·€ÌDqPŠ…Kë­¤'˜År|új6¡yË£ÅÃN» ÞfH2šøh“oâqJ$9aþÍEX¶nvz{­î¾îË>~ý¿pO±²Ï{šwÞ¹ÊfµÑ÷GÄ„% Aµø×@Ï\Rœ…ý#™3%wñät†xÞÎ3»%ä×.iÍ[s·f‘ipĬƒ#,¡ö}VÝýˆûßR ë‘pºç8‘Ñ÷Îìç•?$MÛˆpë¥XcXùx‰ýÏEUó@§ÍÔj¼ÕléA7ìÎ<°o; r½_`»#B†d`à™È¯Ø<±ßkvKyXÙÜPدN•÷dÄW©Ü¼5£íÃn¶ÁçNćéÜ\`¸ñ’ðùË’*˜”9ç‚+¬~òÚuñd0;”–ú™¾’8@”ˆéÈŸÛ­šb¤ÃUâ¾÷åÿ&»Ž!wºÊ^ԩКø‰UÓÞ…ŽßþŠ*sð™Ó“ò° 9”§˜‰;û‡Úà;ïbGÊ–Huhú?úõÞé²· m}F˜¹5:ô!;cíÖ¯ë>­+ü¶V®ÆÒ0*4xµ¹ÄôUŸ¸]\¾¸b©ç«ÒN-†¡X˜©Ê Õel“Á”¾ô Od~/£ÃöÛÃÀ1 Ãë¸Z«-¢¦ÃKiÏäǨë©þöFûiÈøgN)?Ù¿«RqT™Ój$ÃÜ,â` šª)pô†Ê‚kÆ·õÂAúãÀPÛóÔœ¢û<ã?=@NYÐG·r… y‹¯Õ¦Ó°Ú¶ýØm’ý˜›4ç;øY”ã•%£3²£Z…3ŽÊ¢hàýÛ]“81À€…byÁûx‚j‡ÆàO˲gû•“Ðú[Z˜,ÒÉ…9þƒÑ%!lf¤ÆT§ÃëÐfbk¸ìvFÆ€ñxNÂmˆ¦ý»¶ÞN€yÎݸ¶•þ\O€ù@—’%ŽÖÝ„»06Ì[&zÓŽø^u\÷»Iâ’ æe½,»j hørøï›n†»|íÜË_ÜS[ˆö~°Ö§§ýò%•‰©ùv—^í=¯ Ç’‘·ZÇ› EÄšEÑD,”ße1ø+\¿y;Ç-º´­ ­{€{ Þ‚¹…#¨¢O9W)½³q2¤Ï^ævõ_Ê`¥·qbž-%H—µ¸¨ªÒW^9u×üˆmN-ì‘Z»Âi.b&Hý+¯øåï*’ž·×çúPàòMØCWiã Þôð-z†ÔÖo¬/+Á:,ZB}»ÅvŠB…BØ&KO( Ÿ’F¾Sò2—ÑzhgÌ7Má/v‚ú—î®AúåõW¿(Ívç=z¦w_£ú ùóÜy÷æ Ò7ž­TŸ¸¾XÄ¡†ZbG<¦T BHª‰}mŸ,W#ºùj‹Ø\ˆÝ$JI7yœv ¼rRø+̬Àv<%ÝéDŒ×qK•ña r^_é‡NAóê¥RRk†8ñ8Z™¤Kí?a4´20Úêxgú×Êir„%pÏŠ©‘iîI_3ò2{4Gâ8ÍÄ>šoÞ_"˜b|h…Í9ÇÑ µÒ¶ã"Ì”ý;mÔÛ¡Ç‚ƒð©HÌdÈBmŸH+jÍQj’•˜ì™IP–û’…_ƒè Ȇ.»}Ï¿þûA®ËB³ìÕ†@Áð²ÈÙ 2yNð_¨D*¶-K]¤o„ýwÝ;á?C~Á—=OÄVðÃ:6×ÿ¡Ûï .¹àmÞÛ•›ƒýÜ6+⵩§óæ[¾Ÿn)Pæ¢BŒU7gtÛ”5æ•4x@jM…YR¨@5sË›óÁüAq‚„Jïà¯Í÷uº„à¡5¿äç":çgJï®k/O@ÆvAÌCð{??eA@‡¹cº¢ ïï$cCªŸE“M‹z]|›V åñgv)˱a{„˜Ùä»Âr s|3½˜pn‘©èº‹Å. u«æO+®+ÌàŠœô2-]l~K¯…ÛRS™Ð*Æ‘že_·ðÂ>2¤½ó¢¼y#›]™#rKî7C˜Ë´éólÚO`+Ò dû\Vú¯Ö{Õ8³íugZQØ n™8NÑL3‰á¢ÊGÿZ4P㬞‡¨€ÿÑbÙìlüD~DHqTƒˆéˇ¨‰î`9òù<ß=úšr*ˆ¶syzcÊŒeÍ×ïfÏÈ>~lñ$Áô1&P0ž›g]‹z\²Óe܆ÔýË\îu¯ÆBðÁó€kIæ¿…Û¹‡Ýnýœôf—¶ ˆ#¶¬cÍqìÊáºN½]Œó&õô4RèãÍj˜@Gy'YHgÃ8Hk+¤I7M !ëÞ}__D:]ø®ßŸpôd_kõQ›Œ_m†“ba¬Ì¼Ö½ÛÖz›‘ÈÂZcß¶û.@“{Ã:ñÖïäð€¦Åº4#ÜWÑÑÿ0­ˆ¸ Jñm±7‹š=6Í&ÁÑÙ×Esõfzp”âÖÿÛ ‘ ÛêíFj¹ªª€êpRVS¬KP”…50ò‚SÕ);‘ÄF·êÊ´§™"¾ÖùªxY®".K1yÌ~†æ £þ%9bb4ø>¨K}¼96|Á.‘Ö-½¾)xä’$'’“ÁÜV$u ‡ç—ÜËóí„ô¥ ® Z0‘’Zo“|kÔFP£a$pÁ8ß`9.êÛ2æCèA}n„H ²ãö“y`É&5G‡ îëuj!Ú9B‡y&ßmtùA5¹û¨sÔ£ë×z33É(,ýÕð”cȨ–ýc?¹>ŽLÿ$‹q§ Airæa"Ã+÷ÂDÙf çNýRG?·]éë&è][‹¶ÌÏyÐ{€râ’ÔO‰8éU·1®†r¡•†YlÜs V à Ãzgö ØñN ÿ =:Ê AÊ[IÍ´¹+lÄË[©5¬Ý$“æúFÝ5Mé š âŠo ¤›Dˆ®­Õb½Fü„,WJúÓ÷V§íÙßp«›# "K¬2­9 AËu!€Ð] ˜„¹ý|Où¯S•ÿeP#˜Š>·@öŠCvR—ð´+æ]Wò-ªÇ‡dZBêCÖo;,jÀaÍ0ª+¸×z=@d\’u”2Þ‘È9tVè«?á™ùn7’ƒ¦%OT KGß·ûOŠ»CTÌ, Ó:Ǫ­@¦ï­RV©väñn^•¦¥óT)MX´"½JÚ$ñ¹sðND?‡rp«Ž ØVŸjŃ2õõÎõ›ÆnvˆNe‚ëQX>ªüUEÒ4®Û¤Qid‚•ÚèÇ*ßE ÕGY–@~¯dÌ”¥ð§]ØSH+psAƒbIŽ^Žy ¦ù¤g{Heò›/')šWjS=ÐÌÐè,Vë%ÖQÞ¹‰)ðÙÝ-Ùæw´ŒŒ‰#‹é›./¼©?'+—jþ„ßÐØIHqìê"ýX2³ò‚Ÿ’‘—GùäL9JA¹™˜<¯bH72)¤ØUï8 )m5ûÙìY¡M¢ qï«è˜>÷Çw&Û:ëw”g½O¡}òöòކ)"×Óä ZŽâj=žu…EPÛ;cÕ}Jy†7‘÷’v»±šÁήTä(®·^uÃT±e'»ë=,õôQ'gÒvæ/•Lø»G ìgå`‚ß2 QX¯pa7 tN}'ª#ø¤È«Æwÿæê4„.7°ƒßBý,”D±Ð˜(¬ñ“#°ËärJ÷¼C ìÖn6¡¸ÊF“nV¥¢Ø¹mɈwžû¶[5²©z“½Ðòn#Ïüg«ìäİ6mº¶|[`DA½œ8$ýCíyL4¸Ù½‰ø˜Ú.GÒí"ÓÚ`#`*˜) ©hßúסM—¼…x??­¡~u·~¨xÏs?öM!¤é¾ür*RiÅyîŽõßâ–¡[>E×С4½ÒÞÎÛ­Ž7ç'Œ‘¨ø^¢Cð®ˆKs9îÚ>âýSΑ‚%rSäÌêãú  aKb*ëÊx5>ÿ2é±ßñc_,¾N´„¦ó7ÄPo¿TJ|ÊiizuÌŽß³3Èà•)ÿgëæºhÄʉy5cúl’R´ 0¼Ë̇€ú\œÀGÁæÛhª¾ÞõÊ!SHÞ£>?¶TBÏñŠÕÞ*Úvt7ßA ÿÀƒý3ÈDéHhɲ*¦æœà¯X`ðQì6A$Ÿ¼Ú’šktd²AVèL¤­ô`ãáÑùoà%‡%{ƒ] „©ƒ’O®€±ˆ›CìcO_¾!RÏßô(¢Ô”5&ÈâøßFZК씘"ÕÑCo‚p4­9E±ã¤âÃ&x5Uk‘ŽÜªF‡4gÒ|jsn¥¯äøp›ìÔîŽ#KÀpãÛÐÊ’Å©ˆû L̉Oß’ ÞVŸz@iÕ@rYS–¿ø}Êq®w ºÔ´Kl8ÊïÀt¢™ç•…|$tkz-sÒhGÙ‰|ѵ G… Ù hý¼³æWÔ ÑÌ û ˜¸ùÐ=E­z°AÏ¥PGÞÈá†ìKÅ'až¸èDP·÷Þšèwž=eíBù¯µi®·L´³lÁ£ RfFåðð±]:yòmB#ù÷-¸õϲ´hD„ò¡N-m•CzYÑC«6r±>B×ôl¢·+Æ€_ñž<Ô«¦sx²ð7þïy›Ãoñ¦8ràëzx ’XcŸü¯MÇ%_ù —xëÂ=y^±¦µ¶äÝÓP÷%¶÷„Ñàæ3³­Š>†J _† ˜”€v&ŒÁ^EÐìÒ ¡®†¤ú)Yg» P½sJOÐ)[N¦ô»A+~ëÁ+j 'Â-1áÅ8§:ÿ\·Ÿt’fYê—?ÆêÝš‚?І³ñÌ&#Tù‘{«•Ü»_“dÐûùåöŽ0W?8QÈkX5í’‹5³uáPž1ÇP5—y”8ˆ}œ„  XóÇ‘J ¯ _O„_`ÿf¯,]ÿ) 8ÏZ©MA“AXQM¾ï¸ßÙô06Ês—'ʳò0T08¢AjOÄS\¦6€Ö¹UA!WÝçÖ— ¶Cî; Wâíu wßoÜ÷˜äå%—fñ;$¶Ί ¥ô@„ŸÊ{Þ㈠íhFJØr›À‘²Á!¤å™+‡~Ý„T‡‘ÎQèÄ$jâÕ¹üà0+q•dýÓÿíš”_m—µ¸°Æ»À“­ËÞïÇk¨l9¦ŠEðåÙ¤¶±þ3™¶×t¿”Åž‡Ñá»}ƒõ.F¡2TE{DËÐ`¾W""«:°7 P\?š@,VļD#™È¹Ã=¹J†ñ•rH<ü ­ˆHí*¯T÷Š›k@}ã ‰¨ŽLÊWúU{íÌ£øðÃú.¬¤D}r‚ö‡ebXí¡ÑšµŒoÔ)&€•ïÉ™QV›fCÂJf>.6:âè‘ë½Õ¦LfÒO|îí—6 Ûª$=7#,ùq)È]Ô^“¢sñ±1„yPÍŠBèµwSÌxTnhú7>MÈä±u4†„eá ÍÚP$ù„SÕ^HŠŽãV'+ݬÂzi´šé©0¹Ð7j^EA÷3ä踨o~E3QúÎ8œsCíh»N‹˜r—NR"ùÊ#÷YçêùŽ&&Àl> øó㼤EwؤÅÝ)wò(xKüÄê]P¤Êëõ‘'ÊÕ/üÉ/Ë?niìVXm.Ñ=þG_Õ!s»}K+nLIÀÇftx;¨Š‘!åšÚad¿Å¤˜àð(ž+âBÞl\ ÖU&ôÿ+‘iÀ£h+ Œiä£«í›øõLDÃ\©å2ÑÉΓ~«Ñ¶Dc÷Œblšˆ,«Ñ9*ónpHy«¶Œ¬"êw9S|F¬-T`àE®âš5)“ !†6&\sd(‘SËïæ[JA…°î´MŒÀ[ûaþ¾êe>ªôz=|£|zàÄ£),f…ÞMøËç¼2K0îŽU°Jˆu*¬)oÎ#xE”ä‚ìaFÀb`w‘çì+Vb@~_‹¢ŸÆÑÝA#Œ”f€æ \º?»ã÷&?ûXí-‘Å:2ð8– 8Æw4DÑ-n5dé¦s¤|•渤@päáŽ:^Öôjû;ÇÄœ™a3ÙK*8½{C]_°/Ìÿïww “GÖJ˜þ]u×·>Ú«‚1ÿ4FôÇ.a#BÀy4¯K F( šJ.e—U{”!PÒŽã|üsxË1ÓuVLñS,Ç­íô*„ûCÕrl~n!Ÿã¢wûÚ•FxB’°êP‰ÓÐhn…6^KßÿmpÔ¹¦¯}OÕ† IDo4솇ó~ÄÙš­ n3G3ćí‘#Ž·êjêY]–R O$18Éw’0ø”h‘yl¹hè\-⪖ȋˆG¾;X7¢RÙ\Û¾=  ÃYJðmÔ⢮}Zéðìióí¿ ¯ÀÃÍ1È“CŸ9£4C[#HÒ&QOóaœjî™Ô+¼6lŽdWœ¶_çù­5ów\‰_äj[ÉÔu]G·Ø±±|§$†Ÿ£E ¥—›ðz†9:¿Sý7±Äôö>íú BtD²õUœ;ïÛ³m9ra—ÈéFqÊšööE¦KDqý‡^¯ÖѸPÇÆäcê[ä;QÒ”œDbбç1J¬gEýèˆÊÈiÖr%Æy¾,œ/ß8l!Al±hM - > ‹Î&ÄO¸ú‘Ïe,ëEøxÜ2c‚e3IFlþ·EÑÆa« Š9>ƒ[Žt«Yª„f>ÈØ-—Í™_|´š·¸,AŽ¥tØ<í·œëÇ€½ÊdÃ'Ϻd|€7òdü9u³¡÷jgNë|b¤zÜ'vüõ!8Cèu·°…9i×QÈ~¨„Èøße~Æy۲Πk“qM4qCÓ±Q<¯Šd¸ˆnM(œ®ŽŸeÌBýlÇß3¹¨ÓHÉɳ‰MÇ)eá0°Â’{| ±yÓö8!`¥â%ÏßΧÀþ¢.¾©C&d1Xkt1Å?&{m‹šÏÌnö1ÒLüœ/ê¬-äÂÄë‹Ôa“•¼w>5‡åðØ’-÷_Êö)¦õ~lp1©,“(‹_š$¥\¡:È‹1¯Œc @I#=+SáL.WGái˱Jù °:ï¿ùÔ30ðÉ ¡èŒâìÖOVLbàmE´céu“t$²(Gzk³º™ŠÂúOƈ6Â+¦äÊúq@ÊI_mLwŒê%á^F¥ ¯"œ™ƒðÇÇ<8åòò¦4 Õï ¨~Qö=JWc^? z!¢@­÷ƒ>S2“XÛøýu§©i•ÞLL£ƒ×3H#Wñ” Æ Ssjì µTÕéj,…ŠKÚü"[uvÛx,¯²Íôd1iêöO©!%°Þ¸Žw– HÉA‘ÓL"AöënXb°Ò×qvãÜd]ª&ëÕÙÍ38Mv¡ÆC|d >ݳùމ,$ ü»Xef¿Sʘ›ò?þuYK„;äÄP7žÐ¸ÅZ–ÖTÓ¹²)8‡N¡€†’Ô2åÕÀd3Eð½™ÒqN]DìYHúä¿jIPŠ,?DD$KbáoõïQ‘kÅä½… €{ÂÐS•죈Nk£—ÌC3þȾ7}!6$ñ¥éÿþ <’)Ùªˆn7t©÷‡ÇN0jY•2ÀäÔ×çG„izì`Ç»”ŠJ]íÊK ì&t©ç\0ìÜûª_±O°Ry?XÜdËs!Ù0¬Õ¯Hò×s•t“9äj³î\ c,­ÏÄ ¶òiÏwég0 ‡ƒ1ZBÕJ€ÇLJ(2ì<…V•ÁGx9o Ÿæö«a)¬Þ9ŠBô¯—IùÍ´%Qg$ÇsJMÄJ5|je+‡Ld² `ÒçS˜m$xÎdÆ«€R8锛ˮþ¯iîžÙd‰‚œàèè1É(/ë £ÿ颧 φ¨Q»çùMRó |Bóé5>O˜¡õ‚Òƒ\ñ¦<¡Ÿ )Û3=&h?>ÌHùàšÔbß1Y³Ø¾¾62“ê·Ø´lm’*ÿ›35®B7g §¶A’¦^6÷à%e¯1ò† ÉJÇ*:•ŸÙ:´*W8‘³„üÊï˜=NÔaZ‰FB¡‡düßkó„SúÐî¾VØ4„†`‘#Ç0úb ž¶åuÔµSäüÅœb½ nö°º'íÞÕ–§Ià¥éªóÊC¦2›ÀçcüLÈðß©t‚ÇT´jÈoÃP¸çùD½„ú¡ýõ=2i~tømÏ%"mÂþ#ûü09t—m{ŠÍÇOŒ:bC<ùžŠƒ+ËíÔ’t•±“š~i¹rº :­“kò×x¨ªËec'ܱ[Þ¬!«Â„I&¸$„=ú{óåEÜÒ=w†ÀKåé‹ ¾*™Ø¥?7/·PFG×(+ˆH¸Ê½¥’•lȜ̂Í/—¡ÖŒoç´¡¯¢”/¼ô6È,¨×…˜I\bûŽUiDŸÞÕÁ¬Ã]I‚½@4ðoŠMöÉÌj°°ç@„ÚŸ·t­?ÝY庞f:Ó„³RRêó§VÒ5fS"ÜÙÕnµ5Ñ}óká¿’pj5â¶5vãÁqÕEl‡$Ý{ ä„?Gä4ë%[âö®mFè²)®²ëIMÒ‡ÍÐs–š“¡ v×cqµ 4›ég¢¶rÚ6xKÖŸ@æ™ó œvŒ_×î­·5XD‡ó:=@‘#‘~b w%nA/ Ý낆æ² k&Øhýh=0·d••ôõoº¥OTó»Óme,G©ø&ÆzÈÊêkí £;„JŠ%¹Åjï®Þ¤LÁÕßœàa¾ó)fGóžE·N«§ä6Eò¾5)Hr·Xëõ™(ÇůJÂŽJƒÆ\À»¥umñE)œ_ÆÆËqȽ¹™å‰Ÿ÷ž…!-å:³7.¥“æ;ØÍ„øçV¶…‡´7»r-%g2î=ŽiŸö|Îeô 0kƒ)‚Ìè9D>…¤õöÆ€yÿŒº;%Ò¹Uª¢÷bÎ8a3tÈÈ?ˆX_'¹Ià¤2€æÅ_Ó(Ík÷÷oÐì#aûÏ.õM¦œrÆg ñ©ÛC¨{ÿ`ØŽ ݶ—N57!2 œ¡§Þ§„o øH­“¢CòŽ÷Ÿ>*1ñêÙ¯ƒ`¦Jß«?ôDïãÝm7}RR7½ƒÜÎzõ\VÀÊQ ·±ær HõbÙÉå« Pep%Š/ > ú1ۈϫ…ÀjCæ\99Y“Jd†Ì]ÕA—/IûçÐýŸØõj?qøØö’YVs"*—5åÑÎ0u]:N}ùX±3CžýÄ3Mõ®Ëy«Œ÷9µóäË*Ú5ø|˜z&À—ûµŸshþ}ÉVc¦xX*¿T—Io«oaÖf0²\V&û¥@MŨœÿ~!s¡Åž ©I›«„K4› ûËÁzئÂl€d¤Ñ®bxê}dkrâí»Eˆ´Ïšúv o[‘ñBr I°e™sÍŦálARªì¨¾î„1…—uÒñäuñUºq- ™Ä*ÆMù1¼êŽÆœ’¡›¦Ê5×-&¯ƒ–ý*xgL«nÌS þ.ë ˜¥ô Ÿ'¤¡&ûjÛ- „ÇS¼‘5äa¸-´à(1Zíóë˜Añn|„€â^( » ÿ¸Ï4³ÁÎç5øõ?6ÅGªõRy„}Ô%ÂË+)ôÝ+^À”dxXyÐþËü`¼yPÁÄq™”éwFáÃÂU”]Æíq¯ ³›Ú‹ÙŸ±à¿g\W*ƒÖ•C}×^ßÊ{8‹Æp«!ófàæ®c°ÂàâØe÷@·ïg$[“µþR±œÎ”ê‹ Wj÷õ27A—)‘Ür´Ô¼£­‰WƒÅ›l\‰á'ºÚÜ#f%ÜCX@ÝÓÏ%án]©óM ʹy2_ó° !ýM(}W05À:æaÙó„øéD_TF¹ƒc¿üD©|æ›3[þü‡OYRë2¥\H iPTÕ& ÆTY?,TQÝ[q9»u{ Û{©Èp‰ÌºâÆÃœÕ<›wô•—®B©ß7ò®ëã5»CÐh{ùªNš‡€#§m‰¥—×dݧµd± H]F“´Kpº# 3EKÅZ4ˆ–ÓàÏo§#¦'Úï¨Ç˜8äü0gÔKù"Ÿ)L–Îá¼O£Í ß;z®™¾S«aÛfÏßÁ¬$¤r]nhEÜ㟕a¹¡ˆh…±Dº+šÍËÅŒcµ1›<·‚ ÎÂÛr'„4ôþ9—b(šŽjÝ2µìØ!Ù9Ãp÷¯Èrc V嵳픳L6ðÛèI+L×r‘½Ï> F2W@ý9|0ÆÌ¿óè4èéò꿇ôšc˜«5+š8Ä3G]¿ýŠÃ©½TâžqjLÏjÖïí Jà߇Ý俼ɮ#«•+#B"µðÇÌÏ$*ì¶ÍXc weê„äI„Žžå¶Jžþ¿{ë"^¨ò¶î…¥>CAW&þ9òEŸÞ}ršòE¾-dmd]•å'øÝè.շ؇æp«oïÑhB¤CýÃüüpÐKôvC^rywIƒ§Ùûm¶É4š#i?®‰d¡¹Öܱv)â„§Q.PjGªW5}+‰Öú¸ ŽÎp$ùÍO !JЈ <UB7Õû7vÌx!Bнœ§W[а«£èï°‰)€¶;Bßq 1Ñ3õ±bõê‰õ0 ƒ¥3î úÊëËñ[©m4ÛW‡5®í·PÄE!}¹Rèž‘ÅQþ ÏjKÆÁÊÂï´ß{ïh@¾µ]›TUª«ê ûâOa]?2hYæü®´x߯ø‡›Ç§aƒRÍ+vœ]^¿8Žî∠¤ŒãwTfQšódÆÄZ;׌t¢þó†ÞBüQ;n2C›/?Þìɽò濞g—0šñXoë ‚:Íý‚×=65Ù^¤q÷.š*päo]Òâ™û0]ó=h¶l+ºÈ¤*ww,I!e{†P*á2åˆü˜"F¾´ÿ)¬ë Å>îŸn“ZRtXŽkJˆì"&Ü}ÌåËKe—Û25÷?¤­[Žà‹iln†GN­ ¯'[Yã)`¤xXƒ0B9­Ûrs{ûÊÊÊí¯—Cé­Šo–SfûÁ!éÓ‰TpÈ”S¼ÿò;²ªBU™uÞ_RðéæŠ¢žr–½>\ƒw<*drñn&ºeîyOUTi¹0KÖ÷ WŒRL7Sµ¦’9mñDªE» ùT)¾ÍùFˇL«Â¢ ¨op¡1ðWoM yš/žP¼Ý2#|Pù­ýÈö“š5ÚcQ‘k{mæ >àÿ2·ÖÅ´òÆ5áÌ~}» †yQÅm/Ò?Q”QC§<ö.«T ™ˆió½»×_.»p\_îyôžè«¡bQ!FÐu›çK×iÝ€LgÒÅ- YâB¶Ë\šz­žš%{¢]Ë’rÂÜ@Î׸—Ôø®¶}ÐáDç k—/ož!ÖƒÊcwÀÖå€ãn²õp¨EØÁ8[þsõ'oËo\)ŽPŒÙ~¤±²jûì4ÆEy±¹íÍ|†‰ù¼"¸Rz›Ù›ž÷?ú"žÔ_äÍÛ[á\²0Gvì™€óØ§‰ Ÿ<ÒÔþ{E|êz¸ÊMHËå5„(e¡xßèk­r:(®<áøCÁ2ŽDzÊàÊîs³„¨ÐÇÄôvù7t ѧO~3¢,„ošÙlÜ‘qW[¼pJÙL_Yü…¼áj;˜MN÷¾H85v”ÕpBsVQf_ÀD4{/`®H,‰wMµÇ¿H˜hËN§‰Á W[jè%Ca™+€ý¥pdu0âƒä³Üü}aW76ª–Ï™¨ÀD¾gté䱘ËÄÝb‡öù0çÄh¯¹Ð‡8ìêµét½)•;ü¦ÅÅê_\p_ׯÖÁPÜ ^!ìë¤áŽñs±EŠ´ðëœ$]Ñ2ÛÏ‚›¤éJ]D:¶• 1L‰¥ì'¥]Î÷ÔTmºÁ§? gvAË,Þˆxÿ«ôÒš÷°pQ‰3У¤ ŒMe ¼åÌëhTÃiÌÛºØñúÛpD4‚ÿRg TqÞ·Cî¥*„ó %ŽTêŸ.x0Ú¥±Ép2Ôê6Ãð–¾e`a”´Ô™Qz±—¤-+ñŠ[Uæç§¶ÿG¿ªŽ 0-ÑHÕ…´Â QY|þSI°õ+ðÛç#MÔü'ª^¼ÇÃPçE¥[/ÑDúj®êB* Ô”Eá¿—:õ7eúÏ Î%íbT4XîUÆÆd«Ì&6C,öáÖ‹#5 @"húÙO8›ÔîHÉ¥kOÅé9¿6­÷q½…<©>ƒ/¥ &Ìþª¸; UV¢ŽÚœç™³Iò¸k!½ëaðR}Ôg¤v[Êí%©¸Zß¾û¡ï]TÝæ¥CQ*=Lw#3(ÁópIÔ”üžŽ|O³b°ìÝÁ%?`üÂ#1˜QQÅ0É´éYýçS 8×ÃGTÿ>Ê"³½ð4 [“Rv’Çâiödj—}T Içò‹/Oö€íÓd…“` À2óâÆ÷óæyÛ佞ÿë¢ÀS /‰g÷‹5Á”Lå*_"càhÄ”. ÷ÏkKàêvÕf"u½P<Õêžã¸’÷IÛÜ9@R]óVo˜’"brž^Ö©<;^¥ýrÒ–Ýðä@å52®@ÿœHHÎ7ãÓ®²N¤°Òƒ"œeÅÈ„Å>"¹7a±3²ú•ß¼ÂMhÜòÂ:°˜¬·Ø;ÂA:TAN µ/„÷ôªÏ;É^8ê-LUg~"öyÕÚ#S0p‰ÎeÛèDZs°:ëk»¢DÄÿ¹•œ‡~dïÕB3>ëõœ»¬¤ó9¼‡píÈ¢ß+ÓDyÓP@^·}AVÒdÆŠ>^ùhãy륀íjàjl &Ip¸‰éF‚¶_x åE+ƒeÏ7 /®­O§ö<Éz탹ׯcËnÚ…SMýÑ'Æi|=FXÁâÔÛ/Áºê©øúŒUœÂcÈ_õ$G `7•ÝÊ“2…æ»cpA\÷ÔE·[ iõl™Ð\ÜÉR­„ŽÁ¯|2rn!àºÍ’8E€‹+ØËcÜì×ä”~•ÊQÑ2ïì"x=T(b¦¿À.tä}øîçæhéÚÖ€3%„–ŽL˜‡'¸Z”‹`ç]íÓåôúDùë&Ûgމ áÞ¡ÿ½YLYÖí^-óËst.Mê±…ÌåÑé)òžÚ…& ž!M‹ßüûŒIö!ížDŒâÎe}uR44Ž Ú–j"TY=”¶bE¦­ãtÌPÏÞ,³Æfê¥öA};_i†W~'f4ÎmHºê+Q)—{碮ÁM”¤;3³¡úˆ>Ž£ã9Ý÷Û£åí—°·ÐÍd…‚R›óÕÂzÚèÑ­CPžåe—qóô”È”¯ÿ¥5ó€„oó!ú(j(r¾Ž§Yå ¤ïC1ù 7|)ü$ƒÿx׳ïŽîQnû¹åúÊ`m£/UZAÀç ¾Ñ]mVeˆÚE¸QâÀî¢6fóq-8¬ûTžj'@ÝŸw± QBHEt‘ÕSc•–V´É*ühhE½H>o‡l¹är?ºB ¯#Ë_èA’ ;Õ$ÓPdú£í]Yg˜’aòT_­ÌæúÁ?½|³üâ%êcu;¶êâNò,'¹Ó:Œþ©¬Ÿ º_Én8ûø1PÍÇ´ÓSô4_‰¿ÂI£)̦¦ûŠì¶_Lqkè0ðŽ+˜* ÜSø_èµkb9® -¥\‘‰ñ—#¹¸qˆ‡ ·ä¿‡Å„i;~=o^²Æ«{¼‰|}sQ;^þNFºµ(‰°rs;}Z¤Wޤ¼°*oލÄk¡Ïlà”áâG$v㣊ÀÄÒ’{¡„Ñóè^S="käÑ ¥„‚ Ò¶’K’(¶Cåá2Ï)"­0Vy>6Y¸ª3à‰À/Ícd:/ *¦s¢æˆQ+ð]¤`E‚jÊXéi_¬4¬B‰„n±µgâ+ôM Ðüvï±Z.ÓñÉh¾Ô‚‹Pï´ÆÙM÷QYHt I’™2n+ôÍPâêúó°Ë¶/Yv6Æ(‰uø¡èRÖ‹^|ì‡D£7Dr“ÿ²YŽ  Õ7càé%š˜î¾åœ-PÝ×Ç ˆ ÑhyqÚ…ü‹kDÃJ¬ºëEóõ:¤TÉ>g|³®ÖÛÝŽgpÈœ>þÓ4å$£ð»øG[@kè šˆƒV¾êÌG$þ¸üÒ+#±×¶® iH¡0 9'a8p„Nºg±Ñ";·8rX¢ã˜Cº+¹÷ŸÖ`6î.«0+…Ìl:Ë‘>‰&7h ™±òð¹mF|n¼ _§Å–¾¹-­B¥¬«­qöчíA‘0øuµ†ìHÊïrg *ZDá’e£¢dQ„Cå Ø1€¯‘n‹,¶(•ª†ÚþÎú! *e„Ds¤ÝÕ AZý>õ“†XwòÌ +6¾“^Ú,<±œ…×¥—å½”O’…ܪÓóÖ³—©rL¼ES»Ú¶ ÜÓ]Ë":ðÛjºþÙ™‚ ˦—sC»›7'7òŸ<ÌÔ S1%?‹¸ÀI¾!aјgJˆb¥d>pb70üQÄág2:ç´¾oý)¶ü@G€ÛD‚=ñn°óhôSwú„êQ­\¤'(6Àñܼ*ªCdv|gºõ¥z#)äCâª!ë*‹ÇD¨Øà™‹£“fÍøÔîCäK`×/ªÉr‘ËUÒ*²‰6*™–´»¾RS”ïþŠ95 ³¹eì»8KŸ“¾ %†¨ú\Hß’Ðj K*/ÔF#QC,I‹Ž{±ƒâ犬¯‰¨˜ÔKŒÇRG[šÆ. -ÜBQ¸„kÛÖj¥l‘×&¤`"E5/øýØ4øLÜœìQàb¶¬0ÉÆÕ&ÈNeèÿs nš8¶˜BSG2™Ioi^aôd]‰P¨@ÛxíâÉпÐí]æ­ÄÁÏx±ì=#¸I)~sÈÙhŠ‘¤åXÆŽD»eG”c ¡ù•Â5]3gÃͳfîk—>Ò&#á/ÃÞ¾_¾Ì5ž‹Tá¿Úóc°o- +zÇ’X’ÅOO}Wú ás-¼‚Œ|ã)xÜ(3Š—™HÖ2ÒÓ‘ŒËŽáW>§ä@éG‡5¾mŠÞæå¿i‹° BDîév¼-÷ µWHvÚéq«`öÔ1¯B£[ñ"ßfoä+0‚ðµ­¯©”ž8ùÝ6ýÌ 1cЪxpßN\X I9÷ zƒ¥WA{âóuâ7~ÿ6•7eRZ³º=V$¥´½ÆzàŠžFA4/#jß^Ô“T$÷6¦KO¬»Þè{7,ä:›¸<¢ÂšQÐN{ÿŒ¡ýV9›¸]kJT‘'îm"ý½›‰{²šâFÔ1ý×ʬÅùYÝÈs#á\õK~·X£¿”l7ÿ®„ú·RÄž"îêP/y¤q†j*žØVâòñÚcï.]Ô¾È q,¯=V¢7"©°P˜!v¥>g³þEŒOгÜ7& 6«4]Å*35¾û!1àbY¤Ñ•5ë¡G¯Úß:~êA* K–û¶t¬Ü¿Ë?Ð.|Ä©üƒ¹º¸L3”’&@³\V“-pfÊÑÍßþ‰{®È;u±` @…ÉêñFÀ0ÏÔð'pŠåëe Ïýû  ói, Ûþ<íùðrMi=¡™XU3Ü+)ãÒÕŒ˜ ƒ¶lhi¿+Bª²Óenyób.*žù°ÍÚã"$9ePÒ±¯6fÚòl"H6&1áž ˆ‹j¸«Ÿ¢+$©xošž™AýŸÏè,Y%ðASA‹ØYpžêD’i‚V̢ݻz]¦*=÷IuœMøì˨‹tûB\¬8iè s“w–mÈŠt=Z{ÍóÊãeá1iÒZÀ³åM( fCþ:˜á·u õe`L9ÇnL%ÆU ™pØù€Eo;s<áxHÈN6gÒ%#ø 3ñíêÓQƒÜ³fZnç8evD—ÿŠ ™Ã…y×ÁzÖCÎÎÉ„y ç2Ã1ÚÙ™ TòÙ3×`ÁŠQí‚’ÚÜ„ì Ã÷áÃ"ÖK­*æû ë¶þN…9Ç7ì" êúKþ(œÕ/2ü×ÇþsrŒ‹¶ø»ŠfzÛEšy…(ŒšyåŠOÑ—åxÔO’=U«,îVTä—ÞÎþ z»À½Ÿî"ƛۄÞaœx8ËÃ[2u|#.]t¼8Y ÕE´EòreÅïà„Δ–¨$Î΄ÐÐí9\(ŠÕZ Pma—&åß!?¯Ã%¹÷ïUn‘ÊmËÐeò£•mú_;¿¤ÿ4žóüL½µ’À´È¢ùl¸a"Â…1/ÄIÁ½÷$·åbëmGê{{”KTÂÕp`MH; ïO5¥ßÍã\<‡ë 42“#¹[•‚æBñcxD¹‹øÆÏèÒ•LþæDy”)t¦Ëúsãщš!({ K;Yk ýOŸj%7ä%È‚+oìÆ/ó ˜[ÒöÆøn¤|5az°v,aŲ§De¤&8Œ+ÇèNòζkF)‘^÷¨‹¹"q½XV#å~&´µ° û“»’äE%xYÍx3± ·E¸n«Ý—s„«qï"16P¹Dÿî‘Jn¥6Gð@ͱ÷’ö4Æß`l32ÿÓçî?¹xí×gAÆ£½¿> /BŸ|dŠM0IäÑE ét\W‚©g—ßÙj+»6BÕP©U zû¾õìR5¼¬ÙòèÑ7YR+Ë·C’¼ch)ˆ¿’:nÕt€±*×®öðºòà˜«Í’ÍÍb€ª*wPÂÊäÑ_+ˆ›3ÚaÇr€8%ˆ¶ãûŒ%SS„›ÕÂå´qú»1Ø8÷„i¦DÈÆmå°” =ÔxÙë^‚)¥’\@½_C€ÝIȵ„q%Ú@?DÄÐ2¾BŒíÔ7qK™ëš@kt€Ü™8Ð\÷áH÷Æ¥¯ÒĆW0+z”ùø6Ø ‰ A€|oç=L¡~ÝTË®ÂpI¼*EÆîv˜ø²ò"=g•Íë›°ÊÃŒxäû'ä-ÊÔ'¨Ã¬Ü¡›-t[¯™Á´4îdí'¤ì4þ€©¡Wý(»Žz]fÝC…3ÓâðY)-ø–¥z•ÑÓvÀžûÒT%Óo݇ ЍDH¬9œwj± †\± ôúKÇÃtx(ÈÛbbåëÓ¶Ò® J#·ÿ( ºØ€Z{[öШhT€ˆwa_'1f|¬ÉU;òêB³JT9Ä' Ö/V<Ä´Øÿ¥_€Ì´í®’ø¡0Ú A "ê<·Q?ƒMñeœ©(oå7Æ$ÌG„Ef¸Ëyƒw:J<­ÐŸÄœýæ‡×øÔÕ.CÏP%S­V¢PF‰Bÿ#Ÿh}±©_M@Ç%ǰtîøÖr CI!4“ìýà33UcÕí)oÔ=§”N–rmA¾ñâ%í8ƒvÆvrÝY-ú¸’½å; ž)™e—ñXpÌï7úÅ“×ìÞ!ë1‘N7ÓU0R6…æÕÊã¨ð¿–³Âî Io¦·MÝ9hŽb:-± ©Å¯AëWåh Ø y ¿ðbĨSX~ëzD\ûñîÖa³jfé‘V™tW .7‰d¦ ÙIú vu¹ ñêòÙI¢ÕPýI”°)7Äêá3æÃ÷ÇÇÚ‹½´ü÷”bžY0Bo}´Fÿ2PæY|Söגȉrwù çž@"8ÓmB­A©µã"SðI{u«Ô×ä‘væ¹_ŸÉ .~PüDFh¬Ÿ‘ȸ›æ Œ‡„èûJݽÝÜÆ0lá®ÁŽ"æõƒ”ºwà'Õç–7lõäzš“/ å}?ãˆÔlnU}È*S/Õ*s É+V´§¡sêÝý*(Ü5¬8{FÛÀvñÜÁݾä?ÿa0ÐÙ™TÆÞ5®À½üÐÎ)iÂe¥2úÕ yAHfåîcº§õ Žÿ#óià Øöèw˜Ÿ³£j­P]ÿTH®´:ƒÀ’ò±SëÀ¦×øâ6 ÃZÉËÌ̧:&%ÙÿBÓë ¹Óψ Ñâë?Ém,Ùš*"YvéÛƒÄù‡#•ŸE= Pë¸ïôǹúÈ:ÀX,ËôÆ{=WŸ×j%O•Rý:è ƒ ów$lF,z&šþ&ªîÎ˶ê¡ýP‰Ín—1"ÖHž|I²°gEÿ3]ØÎ@ƒAQë9}M¦©]„Œ]²!%¨ŸÃ—!ôé3ÞñÓЫ=ƒL½aï7ÁÑݦ$ŒI‹íÞxú0Š«l·9}D¢ˆ3Œ‘ nÉ‹ð{^è…{5òÝ9a ãðjÐFTè9éL|‰•\ßɵMÊ/<º»n4p3É\%Ò!o,b2ðùšü§… ˜²fåÖëàæ=‘EÌeß,œ‚Eâ¾ÐÉBiÓSgìH«qª+a…˜cÕNaþòÎPTûø¶åY ,wÏ5Ù?m‚v=/Äúâ\§ #¾­0„õV¹NävOŽšD¯I=›9‹ô^>Då@¢¼MT.‰Âж€6L{z±/:•Øa˜Àâ?Þí­O€ÎŸ¬E¾s J|½òÄ…¤³¼=s)g‹mÌE‹¢¼ëRïavÓµâbÌE΄ºÃÍ}Éóe<•ly×]B±n#°/qyõp‘‘ƒx[ú¿ç=Öü:~Àu(Í„¯‰œ’Ò Ô$µ8/"BÄhÔÒuŽxëŽQ@Û¦“¾©b$sm“È–ñ°ýÔ½…0¯lA÷êAn÷åGÄd³zÖî+°”»‹ ±3ä-›u·£7&Û¼sÓâœ0mÍÏPÕ¼Ëäáíxé|O›» íjó¾¤$ÏLûä2šØ=²¯3¥¯Y‘m!òª¬$zRS‘¬uâ¹>5lˆF¬Õ:õwo;<7æ:ö¿ ]2z”òâr¬SuP¿Êp]ŽWY‡WãÞÏ„›Yœ‘çì/Œ]]¸?£,š@`<ëÚÈo\êänê@†ªrª¬Æ÷a’æÊéÄi'ˆîõDm2> 3ÆíØ2FD6‡˜’>nÀ]Iaž—•ý‰¶ÃˆìA>ÝñÒÐÖì¥ÒÏÇ{±d“8âä²íuèûo=ã—¹“BÒDý•P!¹¶d§”̇–Èô#rÞp%r/0\ˆ)Qlæ*wMP|·ðì–]ô¨é»ÝæW^§(wk*™¾ @ä}ýÍ’îö•þPŸX¯œbð#)ùý£¦°¹— E¾?acÖ[Ÿg°¸&C4•ìP#…s­Tb0& ­ЗïŸ_1B—Òýݼ{ƒ£à÷_kˆ½*<Ñ@/Mˆ®µˆ’± êø=+éaäíÝ.CÝßiHHcZeò‡¢M} A…(TŽG:dzt_M­n‰c{Äç˜Ö+×ʦvFbí&1EŠÐTmg‰"ðøÐf XVMsÖüô.磌=ó^Dv 5 žH„WnÌ€Dð`ÿÝ=ö×ÁýúÒµìZà‰q:ûH+—ñ³OýùoÏHêÍ‹޶Á7_Ð+r©ó[Ë ìK„eôÖwB±壃1Ñæa ky÷…ó5ºb§rkÀÁ"fþëvß§âq!¤.ú\*CÊ|bºu+§áÇbŠ÷¨ŠŽ&†(éœK«CâèŽï 6ûlJxwhÓ1î¤êÀ–Þ³W8{Ÿ%e¨ògªÛÄ'º-nJü¢È`Y˘Jƒâו~Ö.2bñquBXÄb±Ym*c š–)—{=È<³?k%®/„“Ø&0þ C‡väÈ({½áÆ;çkMô}ȶ÷^wP•aV&ÐÄs6E£B-1“Ÿé&+ø6p¡€A­¨,ô^©§Í"A·ýHcK¬ä@pŒÕT盈[ˆØl;f4¨ÏªòàÁ£…»C°ªÆüs\ÔxÁ#£ˆîédKZˆzß/ªl›¬úÿŠá¡ˆ©¢âB·x;ŽCì‰}&ò­þU&ˆ¶þ}Oê†;ãA!³ÖÐÔNJ´lN»S—îOA˶q„vnîõÒ÷¾ó˜fQú;½¥a Àôç¡ÆûÌx¬¢XŸ®hÆ•½jdì61Kñ3c°ø¾=7­È¦F§Yëú•x•œe÷æp•É¡Ø4÷7PÚ˜º Ëþ““ƒÁ:¬khÐW>Ǻ‚Ù}ÜmÈ¢jRÁt§üÅ©Wi ÅÌ¿Á[8êŸÖ”ü×#’®ôüÒ2£ŒŸ©ž76nÃqwÇ,”ÁdÅñíâV¿Ï“£ U&o›¡)dù1kMaïðþ[øÎþͰÓ`™‘þ+=/É’ ‚m3þ ¿“ÔvÊ’•&d96Œ–N0ºOñØÉ³htbÌb1¦!q?ÿ”E|èù¯™’¡–*Â>Ìð®/@gó¬4%g,É0/ì²È~íÅ…°ïà&*ÚVSKO.<õg¯IÆ2æ žŠ-$3d::’ÅøEï#$"v„iÜ^ç ØcÂSTŠ5´Cû¥Ü’4ðP)زX©æ5}ÙÆ&C?³º!‘$«£<`¢ @Ÿ€Ì+ˆY_ªÑB,æ§tmäfªk¬¢ãJåc.¶€~¸º€ý "Fð:jçTl+¢žf4`Þ ­ÃˆQòè³Ýÿ»çNó­ìŠ‘Q+íìæ1™uq ¤ÚŸ?ûM˜Ê“\]ûöT6j_0Ú&â[ãç`!„Ê{D³[1Ž ×í›`Ù ³lLY)Ã]|´,>0÷zÀ ï|ïñ ¢½›äÞŒ1'úšv`Y #›ÐlÒ•‡jAOâµàE­ ¶Û¢ Ê¢¤´¸Á©‰ƒÛ¥ªóØœþË~¤ñYyï¨âþ ¬ËN¥Þ~Û¡Y”Ó«­»YHˆ=p‚|Ÿ’’Ú´šof,hé/gÖúüë³Tù¸/mvÔÍÈ`,8l‰(ï•4¸59™jô¤ÂÖ¶¨ÞpÓ·MäÐEh¾¢0YŒòÝ ¦8:ŒU¶ù"%€xJî«ÅCwÀS[Ié„`fØ€^´6I6¨ÖYk½Wü›Ãb¸òÚ®-QðÀS2~4¾ xIð)>Í€sµOЩé9<[¿šUÅeFFg§På"1‡h 8åÛPp¾ú‹žg 𚑺ˆ¯ÛªFûÅÁXÂ&ƒüZ3á³±òKxƒkiw5zä”âjW/;7¶]ß|âöHNãÖÇ(æ9w&ó÷‚‘ê·FvÆs8Á¡æ ªM_@fF¹…Ùó°Ü;9b,WeìWaÆd°(TeœÉøT˜Ë¸AC݇û9ŸçøüãóÊhà/8r˜ÚJ1‰Âe—@•QÆÝéÐS÷7ÁdÌ’äSÕ˜VòÑÞQ ‡m´ŠÁžé…/Ý!+<ýr0.e:Ø)qIŽ‘†•О®Íutx~½£ìco.­ëeUÔòH+$öË®*LŸ™xíÖºzÕ{¬‚(iÿrZñokËÞö/ˆÐ’7Â[,Øe–akM˜×q¾Æ±_üM® +ž.uF¹Èóºç>Œžx¿ Ê%í¦Ùÿ×UÕdk­Ø×=+œçœ¤šêÛ1ýçíÓ'„‡Ûj!¸ÁÙýTŸþ½#P~›”í Õ‰ ÷@ðùö’àl¯Í£aTé“R’· @løÛºmŸwFv‡±¿ú+’h&ôýa®DÎëÂßíë*Àÿï!i [6a"•G滚Šo-[ÁC€9Ìü2=+êü¦CÚ”‰ª«(šf:ùãá?‰+­:Ô)¬2«Èwz»au'5Ô²žÀ"sJYêÎ{I7gA…žÝÞ5x$È[yý*IuuP@{1­ ŠÂXgiÕ‰ö.ó®¥;†^O|éékt½,ˆóÎ|û‚ï?÷ˆŸEµ‹×[î¼IXnN{Î0v‚|ÏðüÝí)"QD³T'‹àoÔQç;5^Uõ±m­BO²ëp0/ ÛZøË%N:mJ>Ü*Nƒ†sÇD‘«àÎíåÿ–`BÇ(ê†D´@eÏú½lðŠÄvŽûùvâ&³ ûaŸ7ÔÅd´¸­7]qà ÑLyß”–8•½)›@×ýæz8—'GæUƒºÔLmìÒÄñ1,‰Ú}ˤ㫔Ÿ+ `VŸß^‚MúÆ& þ€¯§ƒj ‡üºž°rX^ÐØyŸ\Rp;:±¸³¥5Q`‚C#Mï³ÆFTçe*Ú‘Ú!ïrþûI¼ÎÏÕž%™ò¸6Ž`é²@•Uw ].ÒÜ9É9^û€3D€¯Jˆr²—Y"Z·Ï7cg >CNœTUϛӨš˜|ñû%‹ ¢Ü8è8â8ú¦çy‡u„¢”+¨qc8žVäHYZ²Si͇Ït½8™a‘t þ{6Ãð‡É|\[kÔÆ·6é…òñ¸‘þ¬Ü®ÛäFÍG‹„U ô&q?Ùe•öv¯ðÒ¹âŽÞÈ4n"ч‹«hÕÀ ] [ *˜“:UñÚáÉú«îîÕ–ú©P5&–ºó ‰™]C?é"ŸÁ}Ÿ rp#M…k™wo–U‡éLõY·õ }üX§5æe9uÝ”¢çéŸÚT¢e—kğʪ(%~1ùõÅ»ÙÐ{è–báâB>½ÎxŒ;]Ú}F¿Ø\ÙAÕýævÏÌüJqÕ&pâ¼Þš(¿u,£ÈM‘š·!¸B?ÒáœÇwÔëÊý“MÞ")S 2À]ûªfx^w6½ð5`ÐãÑwGuTGü[zœûÚiŸ Q‹ø]MÚŒªbCÏ8:fkãw/‹,Sõ.<¹F¤/8Ç r‘ÕøIädøûˆáÒØ” –aŸhP¨ÝÆPäÐðÈý©Íά]S@o4¬›üUŠƪ²ÕÔ$ÖÚuUãÔ¢`ôã|wùàó„­ìM”¬:uŠîœ’îP¿¤>Gåûòyh1Ïw)Ͷ‰íì¨i‡³”™ j~{Y„̺da=F÷~P˜M¦œ›²Ñ<—ŒŽÒõÎòµÝâ[•($z *…î"7ËÉ•ç²Tﻵ]Žr*ûÄI¸IÇÁž5öL9šýµ)–=Økñ£Ï‚õz3„OªväΊÿ©ÔôôMù’÷O0¦`;Í#Em:þf_£<íó-8‡Ç ÿIu­Üh²[M±OîQÖ”R¾Áîö…-H€.[[…¶ÔÍÕ›/@{ñ6=©´•<Äg¹XÕ6Èea0Œ,wsÞûÇêdDîý¾®ª)¼4{t÷®K^˜Ç~‹ƒ¯¸Yr`Žá®$ýUÕ[Å㟃åHƒ9ÿíãÊÍ7ô>×FÀYjá£ÒT¸/~îìÐÏpB‡^b¯0ÊËíèXSiQ HC¸™÷~†+ÉX »“äg'I'z’lh¬>$¦ÓàJ=oŸÔ+®s ]" jqQFU õòËê)ù2ðÞx§e2du¯×Éš¹aÅÀdwU²<Ð.=²í%ÊœÑ.-¯>Ðëß6Õ?}AÏŽ2‘¾ål«¶ë㈨æˆHm«í¼nÊ\¨¦mW‡`ž»é©üÎ}O˜F÷ ˆƒkl),J–äÑø#Ž˜åe%N‰iõ)ÏÞZÞƒYÚÍæì(î!×°UaS]‡.1ñH0ÒÁ=#¹RwþðxE¢Ìwv¿ƒ¾'È Ô˜6^éIŸÂ;˜.Ó‘;O,ŸŠb‡6Š©ÕYMç‚yÏ_XØ&è-Á7ލãøÃ”žO¶ßöaú€¸Fêò>æJ1bjÉÒ¨F’P~­þ­ ‡MêV=‚0‰èÅ:3.à'NÝŸ|‹ÞÆÿM×dör4Ô¯ÓÆQ@:É :Ûr2Úü Ñ І|¿D¨õ´Y«N¿«ètóEqyâe ð­bäÙ–5.ƒkÃC'8ˆ”:›Þ|[æ:~OáwµVø[ÓbcnŸ³ãî BڌȹB²ó1|™÷T¬ž=Bö»’ãðiýŸ%…‚fÊ  zMq/C‹ öÏÎF¤”à!^éò µ*W ‹ ^hê(:<ÞU x¶çêÃEÛø4N‹ÝNí7-tVL7À³í"Ÿ¢R$ß<ØFµ‹¾V鼯7FªðX]òšÊ=ö6ó™ÊB6±äÒ´jôÞ*D/Tf(¨ûôJí¶ôò!¯ÛªhÖäG‰½mƒèÀÇô®19ùj>¬J1²üú °-5¯A›Ú[*ÇI SŽÎàn=€† sR¹¦•¾ÊAYLh7Ñîîºìc²Pú£Ü÷”8”Á¸‰çÙ Ú~fÍv8[Ò¡ïó1ãpXD5\×ÅþÚúëpÛ· D·3£­%5_™Å$çZ3é¬K‚A:ò;Zü‘|lÝ £>Ðy{ÿI%ÄbÉŽ hÛã&ôQjSÒõÜ ’›çm MQæ`Y'uƒék7ÙË-ÿ"‡ä5œÖÎ32ézxVàï@–ñ*UÅÓˆ@ÞŤäÙ#M'“’e xmŠùR`D4'œf‚žûn«Ï:µ”Äræâ€È®³¢Õóâ¤WÏ ZSò9es@†(Eˆ]h°7mĄٟíÉö ½øFïeäíö_€)àÔ|ÏÝ"ⱜY"pS\Tgfz¿ª»&j=[ËHœkÖdÙq›+üÙì†þpä ›:Ú¹E†pÁ¼N‹/oÂûÌù7?/-ßTñ~Âݲxû<‹~n¾ùU ÄsZizkìsÉ05Ø,™%*ŽH0_C²þ¾¹0šeÃ~ck>›ë3¯ÒT@c~›ÞM1?âžj÷l|.‘?ãvÕDe\ a-›É¥ÁèÆÝ5wa¾>ktÈb—å÷;E®ŒžRä×Í¥¼&>WßôO/.“ÈØh[”ŠøG ÞΪƒ–ÿ¾ùðáDdmÊ:&¥<Ö-™a Óëµxx©ñùp›R¿ Èľ%B‘rÙ¯Pö"*µ8•j$~R²ŒÐ#~<ÀÏÑtóˆúôƒ‰ö¶6)ÎVËÒ®-ƒcr­B* Ÿ4\©?DÞùP>ˆ唆ôÁ¨ú½+(:†ñúò’Š®˜L“®=ûãÕS+öÅ=€øÉñ‚U5CH˜ËQ+÷yyäÞ‚Jͽ!2ªêŽ¡ûy±ÑÿõçÎW{¸‘´¹Ûñ‘¬§N¸]¢ó½çù£Á§Z>Û ®7…èº{¶sžêTŠÔF—Ç©`ÐwSq(Ô‰eÄœ\60qš:7· 6êÑWæ6@›«ì ¯‚Þ±ëAmŽ«„ÒˆCµÛ—ÎJ†‘õwøQýëP„Y¼ÅØfó;ÿùÕñ¦r{ÉD5Ù°L«ŒOk,@~Ãy˜ˆÛÿ/êæUM¼4ðèGËH%UÇ·“ l»ó…|†¸*n‡G¤ à›mKÕÎ:,—"„•ó/ñÖ·Óo2Áp‚í  öÞÖ; #ŒX‹#YfµÄy/ ‰‹_/ê{ð®)Á_,xäÐ'µNuk‹ÍÍ‚ì­oƒYt]ž¤TLzôÖ—ÓD¿NmÞëÉB´øc‡ vï* Ýîÿ˜&—æÛâUD)»ä5vü±Þžâ;cTq(SD-YI—u§G0E0·° çÑ|8‘`_Åm’mÂ׫!Qü؃1°›á·—v¥ðm>'†C° %aªžWfؼÂë\ÒÚá ôçYkŸ×5!ÕBqà‹e¨½Õõi44 /·nïÄ»ÐT$†ùJùÀãþ²V·(³î›‘à¾D$$Jó|¶ƒ™¾PЇ„Êï éoYO¯‡‘‚”*¿üå šG[‰4Áà¬öꌮûÁܯÃûo˜Ú™!/â(ø!왆©™›{ˆÑP;ߤ°#ÍgqÓµQÁîÍEGK8ˆ¹=I%þnT;5—ÅÈMöŠ!Ltš;C ßb0Xt-Qþ$ÀÍö4¢µ¡Ie x€pµ®Øå8øVWh‘D²½UÿFˆ+]Ï1ñ#‚˜lzòBB‚Êœ¡‘Ì+10xdYÌiž¥g€w+7fGgŠ >šåÑ“s±;(û24†—*4ò7.¥”ÌöH8–º*/äg©]CÕJµ¹ å\¶Åù¨Þk–ÖÉ3[#Ÿ±£‰&–Oã›éì8íÀQÄM*cd\ù©-yæ_&¶ö@µK8½¸Œrž‘¥æœc…qÉ+ÄKˆc‘ƒ¯ˆ¤‘‡¡ÕZÅC–Äi³M×¥"·ãû‡±•w–]óo§ETdÁB®ë|A…ÉÃáö­DKB>°,7…Ab™0Õ™‚+}ãµµÁ£ {0|Óˆð(a¡pH‡Þ_'DˆyÇéý{VËÙYDJ°¶WuváÖjð%ÐÐÃÛEü¯§63òP…sŽ;gÒ%”l:bF“D{wÖc¸†j×k;ðÁ͘˜CæØ+š»±Òp&»H÷z« V¦ÌäìªG{“Db°¨‚þ=…ü»þ•3û¨2W?Õ'ßß9»H± Ѿñ|upkxYÂC¶%à$«ÃʺüÀÙ4K)÷±¯÷$Vbb’xÔwŽü›ïÏ„ÍKÛ >ò‰Ï{²…\L«’ÊÊë$ÞÚ£ö+’ÉÚ¬\ìU&çíB»ŽxmvyŽ€Ê-:%‘ÎfÓèg銓«0Ý5’®«Y™±P¹¶„F%Ãå éä¼ÇR°!w"§Ï4 ^?ä#7ÜÁ+ wuxæٞöŸšõž,{ s»[BÐ¥ VÈP ¯Y˜,Wî\Æ]}ò:jh»-ƒ ¼Î–!P­›¢¤ O¬Zô­¯°¤êÏ€ 9ø%8’Ê¤í¢ƒnñÇ¥7 ³‚Ë{Û…øã¥Òþ"°M·«ñm B ºßiü?cš-“,H ÍÒþ /)äüÓî™N|½â¤‰Ñ $á+ KÝÀšÚ7ÌæL†ôÝNèÒ<¡‡‚î±§×æC#ßÔ^ãÆã¥±Ý;%nš¡èÁ§ÓŒ>%&¦ø»-™:œù“ègqPRÿ™/Ì• zb™9LõÞ:¿QŽÍw´°¿À„_¸f‰ÓeV xjÃØÏXÆPnÂ`u?áë#Ý0õc`žŽúÏC޵.}gD£çÊsíò~‘1ZSÖ«ž•^;ºuT#D+c²°þ k;êÐÀ£Œ·¶YUÆTã?ˆw«zðm !~¤d`åúg<+0Êà¬^¹í—VW  3pbG§82t„ä³èó"Ñœ…|˜y~5‡êþ —ÒøÓx¹Iý?vöZZ&Ãðþ ëqŽ"Ôë$kC˜ÕÕwö˹c$7rJ±7ÔZ×Ô8ÂT¿×ô5”†åYÐ ^Õ»{º¾²+%¯V¾6¯LYbœj2 ÇhT·E¡~FWVȵc}…ªd÷òú^JÒ×`k Õ8ÛÃvz6Âr<¤a]»¸V*ÄÎ .TÒ|›œß£T•飪fËM´¦ª[eØï}±*Ÿæ³ñÅ–@±ÄÉ´Òp†&L`ô…ÅdŒV˜bC³¥JsK7•'*ORòm®¡­®þÎÏtUEç=`¸*²s+µëÓ96r%ø[,«Ûøœeð¼Öï(ñž÷Q»=˜ªÙNÃt¦¼~ÉþurRê•waÆhQg¼95F bo8ò¬ü È™“ŹŸ™¡ËònUí`5­ É¥QºU)Ø6@ Ç¥ì@(>²EW ’*?K ý\o¦,4&¯éƒÙ³L¨/|hÂZ)#ãl“Í’øB![÷Í0@ðÝ·Òn‚φï{£!’nL˜WÙxZ'k‘‘u¹ˆ .k2YÚôm§Ô‰èY¾.ª2á™)EõÀ1nl1p»®,©_ëÂm-š³ÌÈÂu¶ º¼‡d G±œí=±:!ïRa&(ɬï&yœ/>¯Ðg`Dš²V_¦ÈIÑó9 CŽnÈ÷Ìä‚T& ž‚“˜ ¸Š¥áYR.)^4Kgc/A×€¬†Å¬ÙPÓØýÀX`¼†ÇÞz]ÎlÐ]«'8ca(XÝ%çz3eX~Â2ܪr¿³=M“!ÛÌOºÏN±ÒÝ”$f™c×ç¼L­×|¿n¢ž|çZ}R9>LAQMÌV#ÌL(r'CÖèã€?¨¨øSwú´Æì¨Ø[ äñ_‡®üØÑÌ5~ûz¨Ûxš‚àÆ[÷©±¸Å°dÿšYþ6Ñ”O ¼³ewÆçF©kúÐ y”üªŽ7~‘óâZø3!wç¸_!­rlÆ3vž@FHÙàWsCcn½[÷›x駃ŸØhjÚk$Ð5ܽÎg**”O2ú‡ ¾ˆ²7°Ê:ðK,«Ÿñ!T÷½!-é ¦‡7é6 ª=ݨ#Ü¢@òÅþžM#3©–Õ`êøÜÇhNÅ`”M£(à›B;ªW·éFá”2qí€Hauv˜AA´Jƒ7S×z®ŽÍs#4å[óxO¬=gJ!KõqD¨)Nž¤ÇÇœQÝ1Ð{y¿ŽÁ„–¬Õ÷£ ±`Ι,–Ša7i'8¹[Ê3Êaħ—!©<ÄÖAY.k-”¯æ¦Ìf rëYðÁëaÀû=M-ÑÝfû?؃ìÕ­…6)¿³‘%‚e¤a‹Ÿ“øW\g)‘•–âL³ð´¦øØS Q7’Œ‚yîZJfT¾w/n*ã¼X'oîVPF¶â!tÿÄgûË)¤l¤ÓБ„5“óËϵêÇþ?¯…ªí3J—•t¾# ¦8 vrÏRŠæ7!p‰p!Æ­²ÎâX¶Nº``bC‘»i+éì`8ß(((DÇo¤{4Z´p"ç kˆ,«xûy#SËGZi¶ÈƬw£à'N‘´Pan³ãDoN.K/„h¸TWõóL\oHÚ}h}ÎE@¼ÐØšd ÛéSŸ¸pIDÉQM-] Ÿ½=[Í%ÒóÄÜ*YD ½n©#aÖô5i¦ unþo9¶`rlekÈl-cZW¢1!¤öWÃ~†—'‘¼!(Iý¿Ê-v¼£/»IÙÌ{#F¢K€å;o’Æè{~ çŠ÷PŒíZdöljÿÚJrT{&ý/\½Ì†WýÃê<³âß ¢}®{àRר¨zÚ,=ÿ—•÷™‚æ—³Àb æ畆è†Ø ÞÁMäO€³Òp€i‰ždæaìhÿc²æM4,*H÷†)sëkÙúf$„)lì¤õ~†9¢ì5Ña$†K¥K,Xê»êÝMaš 7˜©X¯´E@"ÌF&PI{+#|AQT<–Ü75Þ ¤“mðfØì˜mv´ù +µEê@Áêe$*!«Ý >A^Å"c®IÏb×ÕºA^EZÏ®åHðGJ)°ÃÆm}µáá=8ïg*š÷ÞˆÓ‰r•?­$“cœÆÙ‹8í%~±,Ûcö~’ñƒ½¿-»C {~3^³§Øô±Ÿ\È&P\„/Ý º6Áã?¡Ýy€®ÛÒ®)Ý@ÀÌres˜£¹î1zúë\€šE¶‹B¢ñ{š#Œ«˜âbg%Š‘š”vP'žå‡Jýb•Ùª{›Z#°·ø‡â޲t/]Õ0Öfñ{`A¶âƦuq©º”%jЯW¿Ø?Nq™Ì—zÁêäæÍM!³3ïq–†4"»´&qá‰4ÿVi)HŸ*YO{Žiï /0­°QÙÞGyâ……å—ÛúøûP«ØÁ@]ž–¼%l§HI·ô…t˜¶ß¤¸‚Ìuùˆù~S5@#T¾¨},a‚ob{–¼µX]umî„r<~Yl’Ô¾ÖTÓ…xƒâZ;–Š<7|ÅŒœŠ°I&Úg#Aÿ%éÏm/Ìv/j†p ý-}„`õîœÁt”à#qG­ÑЫ`^å}°ßÊø¢ËHhñÂ%Q%Á©q¤~£ÕZ©™ë·aº7‚Ý«–щy´Ñ¿¨Qµ%ˆ*ƒ›HˆÉõÙÄèÚkw}®ê’-bW’µš$εâ‘ÌŒñŠÚeª&¸äƒ»ÏǺµIò³Æ¦‡W2°€Žnï²èÿuAúMBilãn!ÿ íù«œCÈe‰ m‡y»Ch @¶§Þäx¬&¸hÏŠ‹I'b…Ïa¸½.î7¦eÿÔÃý* 3@?H5öd®U7Ltû D@º3å‹ï*.%‰ H°Á!krQÿ-±EøŠsHiï ®%ôübâ— 0A+§ÍÖ_™x\2y‚QÇÚùµ˜ð8Ó/ŽžBi#d Ù¿"-vbmï¹H  L&S•”‹Ð2 ¯DÌëÔÐSºa²®I^3â•„WÅùÛs$ÃÈSûé*ÀoŸí&|‹Îñ6Ìå·|+nŸ® W—>—"y“mqÌw@×>¸ Õ†-mgßµ¢M–ëÑ5Ý´|šJÐQˆÆ¥hR¼`LóñôÔ’0ÊÇý‚9G\ó㮼ý¹Ý7h<µÄË]NºY¸¡%æúkm¤Êˆ«ƒ¦ˆãÁd§âÄ¿(ŠäRι%’×ia– ‹ŒéµyÜ ^Ë”@ó8•<ÜÞWÁ‹#i'à Bu`˯ˆ4ñóQ»¬sÒF”a¥d[ FÑzât™‹\ä‘ÃûM܇4¢ç1¹†súgŒëÒË<½”^ÍAÍvíÈ¹á ˜Žâê¬èî‡ØôP]Iß¶¾»6FÀñ}¯ÇVÁ|°ÄèÁ‚Ú¿ˆpTpØb]}„QV *€ì VäD‰›£žØ*èã¶e¼1ã5ï¹q¾³GÏ‘;="nöwŠ1“èY?Ç&÷9’¯1`Zæ2]Å–ìÅ2¨¢f |™²Ø7¤š£8ÓZ’­––µR77årI—É8\'õ8è.9)2r[dɽ1î nP¥ø¢«d-|u?˜S$zó`åfœƒæøÃ<6Ìh(#8YëuW§ÛèŒaýÈÀ²~ xÀÏî·ú‹áoÖ´± Ý™çÈyf…÷—™Ž‚¢,ˆ¨7ö»{Ãý,ìôè¡!„XÖdUh|,¨ òð˲Nñ3gKP«º“ÙToz>ÄqÈÝŸz!2ülÈBVeN˜EàÝŠè<ëôò`i%|Äçë Ä0U ²o@¨Ð>wgG÷F©fQ°K& W”ÇZ ;“%V¥š2Æœ@;Bvw8(N4ÀhErœ?ewtèM×,õ€J”/¼#®µOË·”óü¶ÂVçpCQbñ²¡ûÿ¦–Ðö”nw6Wt¬3ÁO³ö÷ƒŠ¥ú¿u 0;ÅÙ¯m—ñ žÿƒ†¶%Íú‚xbJ«Õ»âˆØ¶¸Ê…µê{w°f£tÞ "ݱFXRë‚Å%Ù‡ÝüÍJ,?2LL5·2¡ÈƒlŸÿú•´¬zLÇú†¬Â;¼mSà”(„‘QØ‹ëÉl¢º¹¤;šàtˆ °IºÂtÅœHeþPAñÝåßÖ_˜_,»Ày ÿ2ê%NF"Žò9Œ1‰}A=Ú¬¶<rvšÌa(çú•”x ÓhS™«ö’ûœäð>ÎY' 'õôÖ¹b€èÈ6z>}&0Àd‰ö3â Š©ˆ ï(’Â3 üÚÇovœÚÅA?¤¿R9}èÚ_Õ?pø2©k>×L""ùJDlû…J~Røö¤Óïã•#L?êUê¸äö’ù 4q¹n@!gÕPbè¡’D¢$9]ˆÉîèy+@êŸ=ß[WÍŽ×cºÉw¥CQšÌlÿ&ƒµ§h¶oW;[MQCòÁ;).>Ø”êWBÿî}pË<1{Q„Þ8Ô<Ít¯öšóKGÉýáã˜8ÐGkK&) lºì„mñúÒ`{HOcÜÒ™Ç ÃÄÍI‘»s✠C+&‡ À"hÞ\ŠJ i¶»*;fyI˜Z%3~†íä÷¶­l0Éå+ÿ.%®ÑáﮡzÞ1ç# ëV`™¶2ßìÌifÔ·Õ8çÔ;°STt@àñ|V¡»·FËö²'L3èS¨î*Ë̽,¼J|Gvc8rîâ-®Mˆ õÉp— ç+F.»Ù‘ÏëgÛZÄ®TJ¶Þ5ª‘ 8sB÷•3O.T`Úoe[auú·Ï ¢Ç^& ìú RA¯ ÏWœ” %j䟗>¶X—Ä%»»Íxo[äÈàBþJuœ¥”‘BNN/²éÂÙ<‘ûÒTžŽåFuðk|äŦGî‘»%P| z¥Ë.F/bIࢢÆ0ù"œð¡7çTXY»Fáÿ?õ³]ýÔ§e¡Ïò9‘|¬ÈŒDLBìV7mÓ4#P[4¢§‚Íÿ“ #ëéꉻ£p<|¯M{wá Æ†„ë™®³uv' YürۮΔj1ú »jK2ª°‚n°!—Qœèo.@D‘ñSJËÁêÅü9ÐûÒ"» &„²|œ]÷j‡9‚Â|f샱~®”•~EqyG)ŒKÜE\ÂÂØµƒü×+•£Ž2›*#‡©†*”YEƒA5sª! ±X5=’-êtµäEmmÃÓÖã}ì¥ámGÿ ‡ÀõghŠZ4l®!3 ûï×ÇT¯úˆ·þÿSÅÓÚ‹E0BƵι-0 ÞḨ“`¡Y¥Û×½$gëfAâKµåÎ*Ãfq-x”3³zYŸ±M¦3DXâÔ¨;]‰ÀÌŠÅòx‚’‹fá)ãY¤z>°k ‹±6¡^;±––ôCÖfèc¢Ü:¦Ý^YÕ3×xzxl>Yœ üPŸdQÜŒé[K@—oÞöJø¯n«C¢ºN7a8î’ØCñyn&$Yè5™\ˆ¡J¸”–‹MSm“N­³à¤¾µßäYùM6^_ûšŸ›Ó¨¼†*œÐsˆøöGäCn·éFâ²±¸ƒº¼…Þ¿H™:pÔä°2¶SÂô¨ª»Æ„º‘©ËzÜTú@¯¯Ñ´†£]‡´ê…G{hñŠÔG¥¯rÇdù“}ÍàÏ2b°àrFLQ“›p ÿïy¸óZV ¾¢¤÷¦]-3> ¾ÔOÛåÝqR•*K¸Vì~áv„>J+¨®—Ñ1…ß ìØæ|‹¡mñ+­»‘Öv ã»­w=6{²RÔXPaÑüãUþ*"sžÑ .‹%˜'[ÉoôIUÙzX–¥Cÿþ Ñ:Û™q/4…ÅX¹„³dp¼½¶j¶:Õ /K|JBŸÉAwݘ+á»P“dŽC}/#b¿m§dÓHvB¶Áû¯’ã*]°í_Gèú+jSöËi™êìñÄZ)42ó/d/GÒÍ„D™r£…m+ê2€kƒÒ*>Í#‘Z¾Z/bYb%} #s5¨:™þ‚ùˆòCï7›vç­¶pZb⣰ /TÅÀá2u³Ùyt^€Ìc,£˜¨O[4/¼ÜŸ¤n”N[bÊÊs¶é.9MÕÌ–>*?Ü5NgR ùe6"óHýavÀC»ó “†¹ޤƵâ/×½”E­ÔŒv'•¾Ô/ÆÑR³&¹]áŒécõío{à 6ñÔTŒ!ßÍjÑÜ„€Ögflïã ½j¯†pqƒeßžQjLôƒºó \¿‘ÏòúLŒ¡Dñ3Jæ)joœÔ»¦ó\èUÊÀ E¸hC‚“Ž6(¢‰:žïW¹J@’{×òùg㸱9¨Z*"”5eZ3â#4’·ÈyÂÙþI”±ë${¿püI@ð«™…} =…fþ^še§½Xï:ç¤È¾TºØS\]ÕKÌ<©>ˆÌñP«,æJ†—“¢—çαõÏÅ­×+ªVáÓC8ÄñkM`·,ñ´«»¼bK­ŠŽU_•kt3”-"9&z_;¹©ZL¥^2·´†¤> ¢#§£-±†^r\óÚ§1ƒ­ÁÚSª0¡RæaÖv s2RLËÜN’\Vß AŽÃ‹^H‚a>íQÙ®¡¢ ίµ %i‹1䶵бƒ¯'ËmƒËúçrp <Ï•nÖ6¾«AK8R©m/l1SùØÇ4¸‹…%¨A‰y4‡8ÞKž!;Ãu¡jØ–dqÑFoªpÚ‹ãÓ1>;£úø¸T#ƒfïý?Ì*Î%ø·/Ž}=.Ï5€3¨o…Üy]¶B80¬²å@ò!±ôòcâD§šÿÚij “>´ K^’\"\vò^BäÅr ð^ <Ö:Ë’]ãÒÇ—›)j›Ëó°‹;#@Â+ƒs.€g~ÒQîaó –”aLÅÌbl÷ƒº¨"-æÈRF„¦ÚnânvV͘˜‚]ÅåïRÚŠA™¤;áå¾Þw±õ“Ø~¶j —œ£ 0oÏôiüá ãT¶Ý|pµÃ*¶\ÙèÒg·ž¡äÜ—9FÔ²n4 Œí0Ðÿ„ñ[(9y陵”vá±Eœz·1Jñö\6ÄšÓµçg~bCa¢‡Dº[æö¦"¿¢›¶³Åké묶í{ž¬Ýcš].)ñRšš]&g•ã=„‘¿&×@¬t%÷Ü-Á‰ë½FK¯¶YŒÖŒý>ÖŽcõÁÅŸC˜Eü‰` ·±P kßX¿táÀ×M)úžiù×§ûGy,i± !éJ=ìñ4ÙqÂTö×xÖ¢8m#´x+njj …ªÕýsò¸!à‡š L¤HycÆéàs}ö‹b?­­ îLi¾³p&âëœb¸ C”Â.c}¯˜Ï‹úbÑ›gÂ2)Î+«X\þ3÷½‹ùU¨“{^¼` ¼h_ÙÝXê™å¯ºj¹ðõµ –(w$,¬:|ûýŽP /Nuèÿ‹'áfó_꼚´Ùêøãîäj.Öéè4)ò\ 8(À"z…LÚnù£ °QÌ.»Á=SYh³<ÍHf-#ÏH×í%ïûˈ~¦çÖ=ST­ÿ4¿VÎÝŠ·ƒžåb´%Õ}¶ q•Òø`gRKÉè‹“(1Ê ¾H›•ͬ×Q¦L‡Ncü ‰9“kbž/]²cKw€ÜÎ&àÂÃAZWcÅÅÛ´w‡°-ù!fo~¾ wR¹Æƒ ,xAñì4<3…Zu²ö5"ó›1ìïî0®Ó™fB)Ýol5—ûYLŠ#›…‹ÂEˆ«½­’f¦õ3.…Y„ÙxT?²‘W/“ôìüÞxÏpWc+‰åƒÉº×ܽåú÷IEuW.­viÎr`±A/Üm(Ãõ›ÒIÏé‡uÒGíæ Oúà‡•žZI[]p`º“›4 8l>ö‡¼_PéOGñI%­JÉÂ4EP!`yÅQq:¡¶¨n½|X衱çäŒÍIµ<`S‘ñSqvå‡9Ðô?T¨^f˶ çÄÁŽúäœÉLD†í+c¸¢Došü@ªÌ•Ì9ZŸõ’¬›éˆî©=*xT $™–¯œk+âo¾¢YwÕ݈yP)ïȡɻ"V«5¨Àí]-çÉá²qÝÍì+fÚÀž:¬tH®R Æ^7;Võ1_A‡¥Þ_GQ…ý?MÓók›ÝëÄp{6…#šÑ|’¬%ùoÐHÑdQÇãùˆRMüpP3u¬¢T–“kþÊ&! ýd0aÖ3S[i¸™Ik±6¯ûÌ?W“nŒÌŸä7ކ*ÁÍ‹çS+±G«ÿj÷`(~±L$Ãòš9{ºÎT»¶ý?{„Ù¾2¹}Ù+¦ ¦Ñ…Ë­%g?õªÞ‰F¢ËÒ_„¼´ZEKôž·Zd½ó©!¢u‹Hê`ÄHS×/ÀØñ`¸¡}î×!û•·Ð~zÉ5‘xÁìÑÏ#DF/TpÁŒù_ò2®o‡¦],`t«:Ø¡¶TµRìÖ›¨–„Ô9†ú½úŒ~ t” }ó R.Š0ukºúžÉ†± û;Ûu›¹+:¥òŽzPKƒÚ­X[6û¾Q“õ®cÐ|õ4ÆôfŒë6®/Õ¾T]&êøˆ?\ÑÇçc,@s ¨„ùDî‹2pþPZMgø-”±¹´ùÕä±®jBÅìRpþ'ºr" p{^ðZLŒË_ÍÐéØë¯““lô^m*}Â$¨’÷¬¢3k.hcæLÍZ+4ÑÝ §7|b; —n8 ¡a‘MG›¬ó«Sj=óñB“>Éõ4{Ø¥LÈÇnQslñÔPº˜ïUD‰ºžÂð‘,¸@¤“C¤h’©.IÁ8Q‡CPñ™TÀíúXtÁ9CR6Ð;£z¬Š¨Ý¯ÌGEڼݚ\Yù¸jùÂý*}óep">¹J;3 µ 7 ¿pr½ ¼a+¸sȘ÷[[„j…ûé‡x“ ’;ü³Î$^+•ÁËíÎóhvŸe:X/ÒRuÃpõ²¬âPÀË-©žÁêåü§ºžþŽÌŸn8Ù¼Çqn +:ëTÿ\¹$±\ 0ÁS9Ù“ …“dá¾""ÓZjUàÉÊÿá§îý»<@UQLýY…?&OFäÇÐÌ-¦cŒt þ†"¸µmE† ^2[h‡3³F«ZLxuÃ%u‹³WÈ¢ý{‚Â_“—@ˆÉ%I‘_‰O¹óÔ”{"»F7BÖ/Thƒ°ÃÞC0OrŒ®à#gÒäi‰•Èr¸þc¡(–Í©ÏÄ{>ÙYÇ~ïZu@w¥qÊFÈ–ž¢ôˆýß—ã‡ï»ÇÐ=…Â\‰Á-…×)Dzö‚ºüý £0ÒöXòº(飙;›Áí{9vðÒ4,¡DWµìÕ'\ü×ÔþSë»ÿK˜°$’ .ʦ~¹V ^Â6'2> -2É…3ÖEš6^j áû'Øý» Ó.u;,K•¾ÞÄǃšÄ~ñ3ÜT„ž[ìÿËØf›ÖÍS »•ǰÔhüVþ7y —h­îd;*‘>Wqx› ª£§2',Ö¨Ò‹ Õ±I2ÄàoV>¼ï²¢‹Kª¯…›ûüoÿì¼ÖÒ rÅ b%&«9çÌD¾øçâË}x ¡sB¯—¹‡Ç„ïKî‰EEn} Јp×¢ŠSRÑ+=T»ˆ§ç˜$Ý€¥°©µ„|d/FæÒ–ÀïÇõåøñE2ɕዉæÐ’=2¹Î‡!¶gÒÉAªT·ò ›rR¶‹‚ZC¨Çåfœ¡I¯…fbk÷VÅÀ³Êé„‹k¢¿ºýKovõŽ3£$Z÷g øñBâWÈÊógVR­úrýµ ~ÝfpÃP¹+8ÊB¹L ±žeLÓ9lWÚ©iï{Þ1îAØ*PùÃô+n»–ÚÛ†]ß–_q«ÞœÅTçìd¡‚p4vœâä/“P zhÛð± êÏÇÔ«–êk{¯#oõûƒ'äv¹QbD†ÙÛ_Å  ¶M!ÞħDó\Ù”[3\DÐäÏq•;ï% UÌ7ZD®üÞäÁᑃü¸Ö£#5ÙÏ‚RçÛk¥1`öQ€S„§ß"Jy“L”èFÅйá7/iÉ…Î-j kád W.aÿ×-:2(*»Ö[ûa€9¬;Zb™|HµÈë‹abu`ÒïH¤ÈYÕZNzÑÓÜÔ 8šÊÁtOŒz~ÁØQJ3 ×[ÆÎ[Y0<MîkÏ+ UàÆìÑð~$Û ¥U+ÈfKOŠ %ËaÒë~§9—èáý‘ò>/ñÑ)ÚÕ:uqtŇâ˜ö…Ý¡h–ŠÁ‡I¯¦¤‘í$×»£$Ï©<ïK£.b†´P.Ìk—+çØ÷øG#”9†if¼FtîºKýº7f$§ªú" ½‰>PK}ò|bÁ@øóWûŽù¢‡Qóø`W­è.yÄÒOñAï43žzzÿ°IŽòõJ[©gK.#†½ž.Oeê9 XnTä»ú[«3úÙ°[&§wyH&³;Ôâ…öÊ/ÿ`ći¶l®ÓrM¤ Ž y"‡^•YÓåóa×aÛ5O^Ž%WÔ#u½W¹‰nÚÛÒ΂Šä<1|•.²Ït ¨4l›PEÊ´"DœÕjGY5Ø^Éò÷#:U°d)3ŒY€Éa+ÍÌ ¦_›{>݇¬5f"«€¿IKV&+úuöÂ+êÈ™hÁÂ1?Ëlü2\)8ÃwbjþLó'7|óTPȾP”¶ý"¶ökõI¤Ä¯})ø×.ò¿!<Ê[3Û#9—†¿ˆ| ´?Ÿ%³ÇhíDê…»T­yDÂ@vFÉ—É¿ž<”«öVׄ—ôD×ßf„,~ ?ñ\Ñ1äsð½Ï=ÍŒOŠ3Ô™$[`ŒÍ [‡.¼¦ønò©èµ4¡TÑä¯À“òÉuûN* »½€=ýrÛm õ:Ƨï9zã"8²ãÍ…þË — ’ °Í®´N¿ÙýÊèFãÊÈÔÀOhÆ)Ó£_WG Q™É0M^ã¸= JµMp [%+)šþ÷›Û=d©ÇïÙ¤5^Ï}¸ÑŸÒ’ÏÕß^ 1&rU´»Í8~¥Î Uýóÿ†™Òj?¯îlJž¥ !§§ åÑuÁÚÎ5XôÌB`ÀÑGÉUKBA‡‹N¼jÿªr†ø9Ÿ ëÃDe¶yñ9þØ…7–)1³Ècç`‹**åný6íeDqó_Ô½ãÙû¸k*?ˆ->É14ëʱJY™·§A ±`ù=ÿë‘jE£‚×ù !Ó¨Ú<Ç<7Ù¥¢!<ÅvÎEL˜œîbÙF`\òhÐʦ¾Óíþ–wÙ]\…î§Å·¶‹ö³dú-ÙPÝI´¹Cß¾åA]7¡õÌ/­ÀFŽûwÒuéô¥úUQgÝ'Ýdúl\?K;„’hÜ)¨^ ¶ú¸KŠãއ¸Ö2ŸŽµ=_›v3(×ÎQ@OøVBâÜ8 „к‰xô}h3¼Z÷xCÂÒƒSéÙÞ`¨›l—Íy¤ø™ðit|@ÈŠ¹ÇU¢zŽäS9«ñÊÛ¯d‚\„Ä ¢]1n“I ¦NÄÎ{xa=Á}ÒåÚøLãßÄ<첄Ըbï·kn‰œ¥ï‹8×§§7iKƒE|ŸÒNÁöÇi‘ ±Ä¥áå„/=’N6"äî&¥®•†Ó ¸”7Tî#×±}W°éjâM~Fˆú‹WÉ©®”ˆ¦úsã,G숕6†%¸÷`ÁŒ =;é¨v†æ1ˆÁh’962w1dóo+è•û´òá•÷Ô¨ôt†o¦ªNTê^½fæv8ƈj’ ]LóKµ)&ìEðé×)GÕp»•Éh0 ½ËÝ‹cø`-ìâ¹J@!Ñ£H´$}³§¹.=’(ò È?ôfK 1Ó´²r ßÉFNÛú=DPzˆ™[Ƈ ,éÆ¿g Æšƒ kÙæ>vILNÔ@ÈvŸg˜“àØEsU£EÏÝ}F”…Å@kO™vþûüMÜ;Žq0³DêÕD¬ò³7eª|‡¿DM á·.sžvlø6¿U‘Ÿç¡L½‚.Á5…wy>AÓ“e ÚÊy«IGǺP[íîÙ¿Ú ‹‰˜AV9po˜Žúœ}çòàãÓâ/¥ëpVÇ µ,F;“Iðû£³‡ ù_¸p£hÌ[¯)ŠE^íñHI‹#}cÉM‡j¦T¬qìŸæùbËÁRég)XC>/¬Õ›¢>•>Î!À gXëV§'ÉIç(9d»ÙºVXŒ½02©¦-¶¼ ,IÉ”îÅIz=ƒ|(¯.°r×Ä\¯s–W[mòN®|@ãnŸðàâüŒ¡[cò£¤ó…~ƒ^0¾Ú Òåáo]Ÿã³Ó‡œ÷5ÂiW?s9ÀF»˜Ó2oM/— ò8s\[Î-梺À0ÏM£[×=ÓÈ’k¥)¬=Ï5gðKø zÔU”3ÙÞxF0ß¹qW"d8PGÅ–J„íààòHEán§…|ÆaXI6å|Pâ±J“Ú|fþQ¥)Ÿ¯Ò=Ÿ¿¾éò„™MÍ©žÒ¶ËuQ·óÁÑt¡ˆ´–nô´RֈثÐd™šP¸23& ªÖ ÚI2Ì7Òk?&ÈîF^¼ð)0–ÑcØÂ9¶OþS5\LÕi ¶‘áãà2¡åClÇ‹—˜hi©û Øä¸K³'3Œ©ëõyöÇ‹³Ûv†ŠÊ50¶ø¶åø›Z¨DŒSß]÷Ã,ÄàÛ/Ù‰ÕþND†­!$Õ:ñò8&ïwŽi½Î%A]ÒeEFÎÑáÉ“ß3½†¬B®ƒ®gWy¼TU°Yj;m»™÷1Í5ÆVñ V´–(‡#Ñâ7J_¸uáÙ;2!tî ôs˜»ÎhMáÒ]°ðšàZ¿÷?n¢42K0ÄO]O•þ,éoш%ÅFWœœÔíx§JžPsßKù'ÊÑqœ’Â/ëÕA0âžôÓ`L@¡ÍÍ£‰Õ–¬À?½3=€@B64ÏRm¨eÙ6‡¥Ì?•ù㋠ؘŠw yÆ6‰eaµE\f=/ó¯.ÿ*bÖ*pÐv¾ ‹[؆߯V@2÷„¿“[2¹Ò=qˆ'yú¶ ȇñvˆeBéÊöÑœ¿8}Ì0ÿD'ò¾RyÐÄ )¿N[Œˆª±,o5ML8x:õÝTÉxr¶0—Ç`Xˆi¶"SÅœL•ï–®ëñ˜þý…ËdÎ(‹H~[á“lEÕ­[.œlRf°ŠÑÅð=ûBÜFæF¼å…B*CòDOÒýn^€;ŸÒ4[ý§•(¨¨ 1=ê/jØ [ãš©aiÍÎS[Ì•5[¸Wî>YãÇÑ›Ç ‘ê&'78^=ë/¿\ÍØ”ûcF£y¼Ý ­×z3BÏi†­ã“î¸æqXRî(¾¡üÜþŒ¤d¡Q/›ì5%g~ý‚’åCÄ.¥’5­ Έ@iZ@ s ÔžªŠmê+ÊœŒÐ¦œ`+Š%Š®o‚?æÝÍè›%·Wþîðª;K™Vo”ò]2+º;™5¥^ä˜{O‹tüàÍfêOáFÐ^«x.™¯«IžFßTÊhÓ»’ìçM%ÿ\âãß:ÛCx#iÐ"Ê[»xG¨YÉb?èòY(Ç ZœŒÆ!P´ºÎé9_XØòq-g+†ú–8Ý ü[o»FÌ Á$?wûf8õñy¼òຽ‹ÿ9Í#•5©¶ÖÔ'!ý¶Ÿ2°òâ—:%¨®>»ß†Óì;Ê&ÈØ£˜YÅ;»“Ý#$ù.¹ú »^`xcéé2—®ß5²”ýĬ N…\j¹ìQ˜U¿}"²û4=8ÈJ*„jRÆ‹~5]ü)7E¨Ùè£î:ÜŸÑð1¹ú&l‘h™|wv=“ÑžKvˉ‰G3QPê2ùx›ª³ˆn¾ß},i —ïA±ÐθÁD(à@h ÿ’VôÂ@ vr¿öç°¬;Ńó/Æ& fLœ9sGà>+ƽ>­VïA¥£Õ3j¸/\¯\§'è>k¡y«”èxt¿Âëy¦™9¸þ‹;iO¬¸~€bÄs6Mgð}ŠÄ¿P€æÆ:Ò«=~û|Pë’Àgfƒ‹ï?ƒ+X¥°P¿vÚ6K‚pEóª.ð¿l·™@7;'!ÔßVšY²;'YÍ–ãt?SVŸãTñë¥)m°šÿ™|„Æ9¡bЙ™¶ÞlQª[\FÈ`œö úä=Ë£Vü8>¥x]Û\¬•ޝmƒÐIne)ò( zñt-[>E#©ózòåvŠ2µ…ÜgέX8Ài H¢â(gn&®9%}—. È–±Ý ž³ø!3¤'úé@Îû¬&Oã.ϳ?"ïwoËä™8Û¡ÌŽâÍÜ!LÙ“9dÆWÙû‘ÞãÄŠ–R ½\hÜàƒÎö1Ðp‚ìâÄ¥?RÛ•þƒì½GÀ‹õ´”³GÚpªÂ1ªA1µàê/.ÅàRë‰Xì$õ5ƒ,è${}PÔl Óó€BòdÞl­œZŽò™Ï¥Õ¬à\À¸ç»ö5óÛRf©I©›Œ¥oSÉcœã 2?ãeiùe¼lRƒg‡OzÄ“Z¨=Êëéë?ˆE˜áýgÅé`ýmKcÅÁ!Žß}ºJ+&é;$Ô-?ÄË©]MrÄÆŠM¸:¢ÄH6©WQz]U8Ìè0µ`üÏ”a€0~cÂÅ^JÊýö=m$d×Ñ{2`Á©é!ÊQóÂQg³`ìÇX¬TÃÇBTf“QóÃUyΣ"+TXeÈ^õˆ_AÃ9Óºî‘ =åeÆO?&á³B?½P…ë$d‘ú å^løcÞü“ÔÅ“¥·«û”æ´¼*ÞáAVŠ—ƒHðoŽMYyyMW™ïRu zHœسp>—%¤íÝâZ„dIt>‘ÎÍ‚i¡5“%¦S6a¥-¦½+ùø ÊM'ƒ Ä×ZÃ+h½à}Dtƒ—-Ž6=î~KM8…p^œ¸“¥$wWaP£?|Öåúórf}‹Ÿ¼ú¯Ónî½+³áá˭݈N a@’£_ÔæùCyG%ü>±ûú`ÖŒAU³@¬Ï,öÏZS5fâ(i¦öSû?ôiˆ‹ÀˆbúrVÛüå–TŠ…5‹Æ@f¦†±ZÆ´ttö ;àí±<2˜·¨>‡Oð'€È=¦?“êëuÛ[ÿ9Šv¤[@Õ0M3ÿý³Ìå#ÚC1‹ÆµúÈg™Ò{E´˜F¾7sœb9O§žŒ™«¥EŒP0™ˆ2ÙŽßþÞã&Sו5Ãmï 7`d[ØéE‘æR.ÉMZxžbrêð“KÓ¡r®'QýPurT ¥Ý¹ò²wwÄg£oþ”Íæ[iöô|°C«æ¯³–˜ ‰ï¼ZÁñ'3A%µ.ë%a²WpB ž‰ÚyáfxtYÿÕfžQìD±Ž_ ãÜp »˜œ5Air4ΦPiÛ9n$à6ú™è ¿´3g,7åÊV`½Z5–¼êܦ¾Ú>DæeŒÐÝ|yü«2š@ÓÿÐ9IóbôÁšï5™"±3øJ”ðÖBðÿc؈';¦‹\7ææ‡åQ¦¨Á¯îÌ[w n+°úŒ…Ÿ2DôUñNྠ¯qzMÙôª^zBèñ¶B£s/61 8:lé&ÂÀ]î~§ÐR¸F¬~›ß«Ü^fË4ü’$×{@Òi‡€DçôþK„¼dÒSBÄm}NžeÙ®N'îÉs‹Þ%PÏžËÞê5#dÔu÷8„%›U=gô{(ú/R÷î‘y±ã‡Ì2µ=/߯é5˜Î ôjÊùÁzÐ&–óF©;Hf÷ú6£²ê1:g„Ò±-([~E zfÑ”¹„ë—Æi=qÇFü* *\^Ûøë em§ë ðPá;z/øÌˆâ¸U‘;’ð#’µVޝ˜oþþ®³ö¬”Ÿ0#ˆm¹ƒØ~¦û*«PÜ/#e¼ÜAúÃL$1ÿHéBýù½fØW=}nš¼—Ààà“³´¶¸³×"ïàâ'gv#[/X Ôºñ¾Ç¢¢F}—ìùt ‰û¡-;ÿ>­²ÓºDÑ¥ÀyÐwêTZR·ÖÂݸšH4qä ‘´ †$m>¸à˜«Œ¶”ƬÏI¼.¯>â„á<Ö‹ÕQÄ‹³˜1?OÉ3ïrS,þ7zeëìnD÷]Ÿ”ÄñêUŽÈƤàúä…T€ÃDvdl†“è†Æ1d<°)\Z6¼Ÿü Ñ0áÅÅå\‡û8”ÁCIõœÃÍûbíbòªÍiöyé/Täw´•ûìåÉPÜ_õ}xÕ1KT¬êï¾­¶F IÖ±Kg[Ûû ýF_+YǸœ9aG€DÔmï‘×¥K·tÞ‚(ÊÀi¤0Zsð­}Úÿm«}sâÁòù­³c<58 ©ö1U‘9€½7k_Lå­i TÇ›6….kˆtôï­"j¯î¹’ÓÂo’ÜUcÉüñÄPxÎD#×Uªáˆ®ú.¶åèG/QÓÜîZŸBÈ[|QVÒûri zÉÏTWÿh¼i|ãP?!£%™G@ [Qp†·ø†•íÉeØ¢éZ&·‘\‰Ž2#öX½Eßׇ–0_—ð|ætK„îÚW’üsO ÆÖi­óg*‡Ñ;óÁðlIL¦óÂj’¹U-^âYcúi^tß‹ô%åÊiŒA ?|`‹×í¡HûÑ_1uÁdH¯ »ßóºæVå|…ç6d@\äWÅÊá%›oç¥qÿ‹y)ýr>ž¹Í—÷Âo)âïÞºä6ÈO9r´‰þ—»è´È®>D†4€yVß‚Tµ ðH–ªŠ“?o¡º>ïô¹¤¢8_ý” ›g¶ SéÒà·s{‰%òš]fÇ, À‰—ßZñH@ªN`\2‰ °'ôMÎÅ:ÿ’º>Ñ*­¨@+Ñ,©Y©¤:7ŸÃ”Ö%Dâ0îÒ<üfÄk§ïؙ޳áª2(\u3pX!žZ®¹çJ#Îc-ìH/'åp’´—‚ãçºlq.ÓôýÙVõYD›Ax=Z-ßšÇ WPÄÏ·ô».Á”öR+ š€½Ï—Co7‡H·»µÃm@ÀÄAƒí¥‘}äVðB_äZ[)Ã'ËäÁaOJ/6%3ÚÏy¥ÎNd¬ vO%hg&zKŸ¸Á…†üHh5ökôz³·ÂÆü `'¼½¬c“¢V þܾ˜¯6oOiÖsdð$Ðë^CŽLónâ Ó<ÖÛBþûGp¬{ß‘·_øq´k¼|¹ï©­–ò²­+ü[@Ðõ*r‘Lû©¯º »:nkŸ¨Àm&"0£4t  SàXôíþSïf§ÑƒÈyút2è_'›…ª4e-(É}ÜÂÈAH7>4óP{¼gïèäÉ×ì1×ÂP’31Ƈ~ ÿÊ‹Ð)BãBQ ÌYr-íˆ&9LIË{u‰’q ÝÊë²iËk{×ɱÅìàÎ4Vo"F屘¦.êÙìÚk°cëvY‰T]%Þt‡(¹F’LÆu€žQÚƒ` ˆo-lf„aKìa <`Á_¸¨2êlàH®%¨àã4•J+ËÑ{èé„#Ö.ÓÔýf SXò4è`1%ûõ|€P,´M(,Îûš3M ñ—X›œÂÂO?6<ØNЩpâGœ†¯Ý0`K¼ BE•Y7ñéi¹HÕÓy͵.çÞóš×_Xäqù÷jûêć>ûŸ´UµÃq0ÚåÍs”XJ—±²uv4¯(;`wˆˆGä]ú?'j}QôuH°œÎ*ê|)ÀáâgÈÞhS0üºb0Xªà)DC:ÏÞDwï%>"³¤ä<³˜;ÉšÕjM‡Ó^”7ékMAA§‰º£\É_‘?C²NwcŽvøyÁz¨è,ø=þü"è„àûVŸŒ"TQaÓ1ÏÓ2«é߉ÙÄiÃ4x ;«^RÇþ2N1%Ì÷÷xºE8¦ðˆüTãƒyôþ°³aªCùZrà§îÈ!Κàíg¡â¤ q ^‘ØøÒÚ†›¦¢ƒõ‘6KФ£ÐàʧüÜØ B«d.Î~ßû ÊSx¨Ý(A?g,.ôcY$gŒFªÉä×…à•Ø}€–áO¨¡KÃ’ú×@Šì(ÚuÄVȨ́蜜†X'\{Áƒ·w輈yX0ÊpëlÑ6ÌÌpÁ«7ÖÝσ«›9à ÇºtÄ ÖîWáULß9YçP`ˆd²ù¿µñ>šŸ<îi¡k]„xέ¤T)Â÷>Æ€e ì‰ßBl/²9¤3Œ'¹îµÌê¼Üñó†Z ÚײUSÁ–â;2ˆÂßWÅ6°˜Ò-?ëEÁ–SóB…£ÄÚ2Kîü‚Ÿ× ˵_ºeg«6|8§”+]h¨UÏNÇ­wIÑ7ù%X¸HásÉŠ o€ZÁ'ýßGPƒ¬ ~0sgCñìáTá4©>žmm î×r4”%¥iŽú7©·úŸörRôÐk΃*SZ”;S̾=Œ 0$úón{0Ñ7îÅv(®´°Ö­SŸŠáâ‘¶¾›úäfz:´íßøç\®})׬)>Xhµ×"{mŒ™XÈÂg ônúÚ*U2e#ó$Xk)ëü-L1‡ùo™Ðf~0½8w.è.Ì@FµmÛu¯·¨ÊÙ+f~̹™êŒimݶÃÚuúŒÇQò,øê? Æ—8ýÆ9`õn1DctŠÄ ¸Ížh"‹$54|ü•l8ÝçÕr~µ$„j„ËÎÅÀ•L”e JÅ]P‚R-¸ö"¼Ñm1Ñ,/#ÏØÈg±R Ú à{z‘Ët¼ªÕ»@ü6Æ,Û;D²>ýÇP ;ƒc»¶(–0‚JÂíw[ßrø´ž(Lm1ã‹ìM³.›w#¡ÓФGñ•÷É(O¸h‰o;§Ê•/ÎÙe(óWÿ°•«#{ ûà$à—ŸªÝܺ9g=h“®¬ãF?T|yzUú©|Ò³¼¤§°xQžƒ}˜¶ÅK^"ƒ^ñ%ºÆñÂÙüf||°Fbˆ ‹z,bšŒõîß(ƒ¸:»é—§îN‹Øg0•°žL;2’ ÌÆƒFV]pm¢`×Yɧ!qT9s›ÝÇ è2ŸBå.íÉÈKpdl_šÐÏMÀÎ(Ø%æ{_-Ã6¿²3ÎùY޾cê2fsDQ«¼Á&y„a`\oËh‚߬¯Wm$ˆ'RA£dËÀë®ZBûÊ7;6ã+zHãIöð436‹Ù¦9­œ£¼ëó î¬)€ñ5áV[èkç'F¦‹ê„À7ȳ1xÎŒõý„ÛdçÛWèå>húJ`¸"Z!zyruܣà ­riN8i@d9À*Âwe6.BFꊩ*e©ò0Qž½Œù<~]&ØùDDO…oMeH¨ý]%¿w+§ÅÁiJ°xŠí•è½%eu@©s.ÕÇ* ±º3)½YL¯gq+«ë9ÝSïÐòyÂ\Yïÿ¾¶÷àÞÑ1Ãm½%Î़ÿá(½7%è—@£É’8¿3-èänD°AvñkÖ®‹'ëö6Ÿ¶½@¯`ôç®dt ?Lo·~ µƒpRøôZìuÌßР3“‘¸mÍ qÖ¹ËÚÐóaíïÆ$GŸa3Œ8& î¬Àm,9 ì >¬Ãú}A™Ã-Í%aí¹‘–Ä:"½”;ƒC~ú*u­/ÆMõ›uÁ}yÚá5'‰JÙ¶\í<1§D·=¼S±+91Ì×qû hOvéô³§7æqŽ[±±?¨I¥Vo‘ßx&kÉç÷)'ç+ò—8?àŸËŒjEtêÆ"=\´cgM’9®kŸÜ`5$’0óAâj'q™Ëö½Y€§l<ÏÝêö¬>+î; 26a óçôúnuu¬­Hò †œOfv»?HÁú;ÁPl cÔCRjG"HŽ*&ó±ï¢Éõ<Û–Öwòj¦aî \­H§BÓÌÀ¸¢íÅ©O Èÿ@Vý–çôñ÷úB»±ÿXå*õ]):”üé$AöÈî‚ôþãKý®+ß|ýný‰ENyô±ãÍŸ1Üùƒò–m:\}Ù8k(*0"S+ÐÀ$ËØ)æã K‘SÞ= LÕ¤—«ýŠ®ÐS§±AŸZóhJTd¿6„`Ö®ôDbPz §BÁbøŸÛ“¢Ömk½Ñ6˜±¬¾ ¿3Ýìv‚êµ9“;Û‘W£Öeœ¨KŸø$ôS–§^|ψ=ä*v }®Ü´1òL=ÌÎuÅ÷ãÔœŽ¹t™Ib`ÚP7N† R„>“:²_’1,áÔ²S‚ÝùéYá…EU¡l¹¢qÈ””ŠSÎ$tNrøuDûÏ, §zlÁ¥E÷(’ꎚùº(®UNV°@½ŠÃ¦ "=4ò) 2àÀZuJË´D7 ~¹º0û=ól±µÏéc%ß@1gåX[@l‹2¦Œ‹BÝ—8ìU”L(¶`¾Ç©NÔDß|°&Þ<.WäWõ¶ƒ5w%ú”‘)²“læù7®ÏZ:R¿”ݪèEYBÀ*a2›FÛú*:–ܪëD+öbŠ.[¬Ëw}&)!qœst÷ #YÛ¶œÔ“gqà+0äYo—]€–È0‡îR`OÓC2‰NùÚâÞÝ¥íŒ2ÿ+ÅÿÁùÂuc•dÛ¹¦šé@*„làÀÒD&lVßµÙ·åDF«Ùºü—;æ''òÊÕ°wð¾vH¢Ü ã”væÔ†²` |mòJ´Y±ÖôŒä¢Ô§ICmÏä SÏå,ÁCÐ&¼Àʭᢴg2ÌõÑ1§(Þ rÓ®\_à4£"=’1Y}©€AϬøxj—¯¦êÌÓ˜2SÓž6äõJ?ŠÖïWë«Ü'§‰ËŸÙ/9{î÷%j›éèŒ «9wæ¥Ì¦ç¯®GC¢lÅ+ÊÒ“æF ^(Ž=•ªO¤P#Bjâõ}”²íÖòt1‘›R†aQOêeáª×-×}Mºzv@$#¯ÂÁÛ­ABî$FÅîqA…$ÒWb·ã5kNÌÎ;–ØHªà³–y#¾ø×–`9‘f(³“ªù,u62ÇôC˜Ÿ­K)x|å{2}&_l<…¬)dàšoÐbíÖO‚›}åàV؆׹Âþ“àóéáÉGî,þùÛýVÑíw?S± 6JRÚó=ê±T.Üdüàawš¸æ—³gë+c¤‰Â¸ú6Ü«•'~5 FŽò#߃Äyt&,èÕ©~¡ü&§´¢Ú»âŸÒÔœæ †!*óK"·c•õ÷}nø€8Ô*wpÁLá£Åí“_L¿_{ò­šêDÿcnÊUb£o¡ÂÖ˜ž½) mE‚~€jrE‘‹ù:ósÌi4A1Iî ¶dYm¾ƒôŸ§Òæ” íën¼JÌglÚ’'ýdÊábü$sH¢/—¥µWaY1ï_Ê0Sò—ÿÆó©ý”…Y€RYñ¦= º“9,òf "ô¥*cm|@KqJ+›2e›*e‡0û—Ò$5ìí%[0$dÙ¦>€ðE¼¾ê5z×͸ÚtŽ;Ü« ?ÒŸóXGl^z€oyÃî°žN.k!“ÒfɘŠoEÓd”åðŠ u¼°J.QÒà ÎÏŒ›v.Zd##ˆ'áç”lƒ»«ïAˆ…´Ë ½~b i‰Ÿ vhðï"í¥Ž€Â?Câkí‚jÜk½¼Ã…8w ꜄¶-‹ÜÅÓIdoUhÀäs‰Ej;©z˜¤Ëc|EÓ¸ˆå¹X*°äÌ^¦p)JD ;¢0Z\OÐqæ7*aÜ?:¥8Æ]ËžI²nèXê/l—ÅŸSÅYj¨é2»ŸüͰˆÚa)_O‰NorÁœŠ 2øZTÊùÛûÏãNHÉãÅ‚ƒZå™Hl®ÉŒ®\Æ,*pĉ`¬€[—ÿzVÛüØœû*ôÙXÉ™|Ìó9mwN·æ±ÿ£õysß;¡é[XηâL±€©uþT‹HkÌ·[)2 !ð¦ÅÃ_˜eŸÁZ éýtXx»ìí@fU+c ¤R¬+òŽœÄÌh»µFŒC5Qý¨2otOkS¼Þ=õ-#9Š2 <^  mq¤‚¼6–Þ ³$幯Ñאָ"Ì“çå8:°–ÑB¿ÃV±°óÚÏ2Xgpý:x©`é}ÔÍî+ñ£…‡¿ïOD³Ô qegQ="QÊ–Vpkª¾Ò–6ÄÒÇü>£‰²yŽŽ ¿µ§„A°ç Ælô͸QäÍ—cwàaŸâÁÊy¹¥ý.&;%àŠþ ˜ú@÷—¦Mýˆ%rÃ^ÜKeUÚ~1%>Ù‹ª&ãy*uqbf ¸oûP‹çGèn]I¹]䨶 ¡@nüÕÒâ’$2jÚ0:p7Û˜×yG"AY“‰á% ùú)Ù¥÷j"È‘åpê»éÕ™êÕ·»1C4¢³W„«xóÖv£„¹ÃÄÑh Uª\øN)ß*|ÓuÅ¥?^\x6Ö@ÀÔqÁ­2¾fêvû°¡tž(?ÈÝù͸q¿Á Ѱæ uìè©X¶â&Å\LvJë1cVá:֚Оò8¿…Æ/к|¥!ý§ÛUO[ÙŸô΋ÃÀ}ùüÄff“—éº[ÎÿG2ËðIrö/ë~ù*\–ß`Qž\nE‚5:ùÁ(þé?ñGÖ´&} ¢ÔžòÜây«¯­/Ç/±›ÿ‹¡þ™Á.¼â®i~¶`чBx‰,ζp˜É¦²iT`7(ª0©;”¸Þ}¯uIBý‡”Qh}¢É¤bzWQk…býñSCCü¥Hô¼AËI9X+9—¦Ÿ‹ Œœ¨hïÚîõL%Ï‹)è˜ì=ńԡÏ~ ëBƒÈlñ¼oE¢!æä'$jžÙv öû55 µá´O>IìG$eOžÌÁ])ä'§ÆéåŠHÝ’¿ººíñë~$ÐE'7…A›šºu«’KÊí ó<:ÖÊhÂæÎD:Æ*Uد=è15ðÚÕ§Œ`èR¦„¤Û~ÊÿŽ-'·º9ãåiâÅpîJ{K-yÕùÌ&v,\;6Ψ9Ûý¬Hö3+®fè¥Ó÷)ùmÇ<8–/ȃrKoÄÿâµ/Üo8>±¬Ð#¼ž­ˆ!D¶ZÌ"”´‹ðЫ§bÝϸS* 8zç^Št9—ôçþûÖd$Wø¨‚èÞ ª¨Ìüúʶ۴Y*¼Í(Ó€¡œÀWP`N•DnMþîŠâ‚°½£Bû Ä û|`żaÐ׃ Édä›péšÂ[ˆÎqÜ’Š*äV[eùÏ ÙÕãñ/u Íº+´SžKû¼¹9^¿£OWÇÛ%WO×a»¯KªÒ cÓx~¸Ý1XÚ!é‹.þ¢´Ø%P,s’ÐÎi;F}Ac¨5Ç ;/ú?á­p”..øÜ’+7×áñðf³¼äQ¦½xæIR£´BÙ`šzèOE°µC€ôGmÎ09ˆM_Ð=ìG½¥™´˜±;”ü.Û÷À?òšÎÚê4c8toW˜Çæèêiúg¥\#’Åý•uï°kÍ;¯;^»1Û›³‰{êvæû&=ù±ª¾ÜàzµRî„AúèšL¾KçmSi}uu}©‡QêVb“kQÁÐÐQžèü’sµ›ìÅá£bN®½Å[Ɉ”W$@åþ­¿m Hùú.ß Ô¤ûS§ÙÀ]þŒÁ´Ù£å–‚ – „Û­ãCœÜS¨¨RÇvÆñs…œ½»ùc$´¬:¾kvÛ‘]DšÝ¿Rí°kSm“:—-;yú!+ÑApÚÈœócmƧPb÷‡Dáì•öËu¨s¾ÜúzóvlãÎ÷tw—öp= FÉj€Ö‘•5m’”<Ü*ÉÐu•¥<6åâ¯I »å%u…”lÉNN‚ZVÉÂ91QÓLdºÇfñ'€Åg3dí4`ûŒO XT#™DÅQ¾?³,su\»Ëx÷¬ZÚ¯ûüAÿ¼|¨HìmÖzŸ¦X’•7F)‚º¿¢bQÛy˜3ˆŠ›.3ç µ5 „.^cÞ(¥‹Î³è§E¤ãºq{@öŽ{84¸†ƒ•ù lïçÆÒ+½K1šŽaŒH‡–v«1Gèb|û€Á5äÑàÁ• x¨¯ŠFu"¼”Nºâ÷flŒéH¡8c…u‹U)—÷B°ï“í-‘ÝG—§>Ü‚¼îñ";žØú5ß²›7‰Ké+;D”F{ÒœÞúš|WšA} wªaHÜ+Ô• ó ÛÚô¬“³•W›2¤d%ÏÕ¬ Vý ÇVrŒnuxÍÄ»VðìŒa;÷ÁP¥wŒ`K´œX¹>Š÷DR«CØ!6¿@ëu&}ÁVÅ:±9ß*ˆø ^÷’>iÀe¦æºÔ;b™OoU¨>¨_ë‚Ð9 $×KÛ*q¸Ð.@¨6”¶£ÚÊi£BäU¤r'³H^ò±=ržÄ†”A è¼ °bô+ûå8ξ¡HÈô‘ÍQ„äm2#G²è«d…žš~¯‰#6€]’Ž!áÁÉìcŠèX†t››Â!&´«[8µ” % ÇßámëÛ*qÑ8þiŽ%­ÕvUÝ¡›)°¨ŽY†ˆÑ\çqýu °õE¹r”ÏvÌ/ñÇ J lë¾Äèù-ÉÆMçM¼VOøô§„'Ä…”¬C‘ÒÓ+am±¿p÷ej'ã¿U&ºƒ^8£¬¨ £cdÃéa­C'–þ¶Éçn;8Y㽡1rÇXG±”ÅòÐ]5 †×ü ˜aD {d¦ý˜ð7yc¢ìãÎ'Úë…Ή-³:ó5Q¥(ŒÔV–Û¤ÛÅ&X«„@$ÿ^­ªüòü8# 2O‡ùcŒ…„?ƒ:%w¨¿&<皈6eë3téË€¨ÕE—Œ/3êIH àu”ÂM/.Âò…TyæU¼úW%œ.Åè+fH?QG`ªô1oHC=wŒ,%2ÞÅôø†dï_1‡B×WÏ“/Ã[0ˆéÓ5öüî/Äœ=½ÛBï[sÇtÿ2…ÿëÊӤ:åàÒ›@g_ÛÏy˜ˆAiUâá–ÐÚ›ì3߯šÃ|1:oEåÀR˜’¸>” °Ø;J›$ï­´ðÓ ´lþ ñ™Ïq>Æ—6y­î¨õ|(2ÄÚúÂ8—¡2¸'¿”ÍMUJ¢›î¯ÈU¸6ß9ö úÊÙ‚êw]0$•ÂîØvW¡@©yë^Ê(«öWKŠc+•´u@‚6®kˆ.ÅëS’0¶z8Ì^§%m ïÒÚ“†ŠÊÝ–j)n›qÓÐtÕ_½©Ê±+y¸Àϼ®’!>Þ#ꑎn³¯Fôì%FOIøòÕŠ#JÐüा›ŠÑ‹ˆOU‘±t·¡&ý>#ßø˜ÄO2Âb1<]¿õtöñÌcS9ñ±yŒU“±yÃݶó¿›R>TYB,Ü«tEçƒGȺÚÒ"-/nf™²v<Û¤-ȩҚ²CäŒþñ¼ÝøŠÆ1Ö$É¡ìóxGÃd×ÕN;ý©AÝiO’Ðqu?qé7bæÉ–¬ZÊ”3>úCq4ð %¸„_UM-ÇÌn¶ Ìß> !X~’¹¼âö1±ˆ«DƒG×,ÊêRT]8{jmIT}õé²g‰¡gµ|x$!‚glݤU,;ºMÚåºù lŽôÄ€B¸VÖ…rÚ7\ì'8°àú@svJ'c‘”[öõ™ Lgz¨T¹õDM?¦*{ˆ3xF ÐÇr€lùè#6pf[@4KgJ¬BДɒ°à9R 2gSKº›ÕL*ùy-c¬nÕÜÆÉ*ê@ÏY4Z`¶Vj~i¼ÁÝtÂ%K3Ç®&ª7f{ÔäãÀºÙ(·‘]–„Gdé©èºòFßzã4?PNEÌŽLÉ/ÅÏ£¹«é<ø ¬§Æ‡±øy»ƒrŒ°Êžd§í€è>ÌÖ`AQÖ$5%þï†ß‘NÂë¿*½·!ÿúL z³—‰ä*á‘15!¶°ð8|/›CôÁaƒýû0—÷£Mw„Ò\îg <û -¢ÃºáS-ÐnŠ#@˜Ñ]eV6Öà6·‹AJFvOJ¾l­…tßıú¿ì“­X¿ŒzKM‘ÄgÕÉRŒ„ªÌ¬zbb Ìû¨s¯n gßni¹£êÀîOPN#QoÅ´ËÈX[¡Ìo‰“UL˜MÇO|ÜbNÔ7 ”ÍyN¥ÿzÌ%q- ‘W†žÂ;<Ð "= Àg¶èŽÛÌ`Ý _7û÷keÅ‹@Ù’¶ îŠr¡ÂUánž¶Aý·ŽÐ)˜S@^wä‰fÜ#¿Ÿ ³!µFø6@j ¼H¸.Pß±oÂßÎS@èÔ`:¸UoðáÔsãîœ\Ô¤³í±ùÅv¤J†8š¶uwÏ ÝÛÔXE¨P—J³å›?ø;› 9¬¦Äö¬\¸ÚVx:`›DŠÞC3:ç{-ÐêÁo]Ø2"øƒò8±ƒÇg°¢gŒ@¤^çEº+е1ÕÙøÿŽ9¾›)Ϛ馾x½Å“íœì…lhŒvSðL½¾Æž‚µ†$Mé´êz"­Í_År#ü¢l(DV²E ðù—ë®fÈ$¬‘[ÜçÄë•Ð+×—ôô¬—ôO®òÑSÓ9Ì‹¶® ›ðBö´‰…¡©… >à dÌŸýØÊ_Åu„9 ¬AX­–J±ÜD Œ±DŒJÑÜaZ÷2mè¦áÒ *>*pÞˆÙxUž) Öµ¾8†ŒŸ<š¨6·­y:‹!gZD[h=d‚p¸»ÙX‚ gM;ðbK<êäà°61®$ÎдÝÑ@ÝŒxœj磦Ñèn (׸zì¡ø}€k¯fˆJNolñ›Q¯Ô_C$‹Ç(ÖÆÝñ1 o¦ÖZ £ÙU9Hǰ¼]Dvb ¿ËÔKÓM„d·"äõ†»ø_A #·}7ÓlãzÞ#xs^‚ÞôŸ–ð!esÚæòÛ*û¥Û·ïðv ¥ƒ]ðJc§GÏEG6“ó¦xU{ Úa#{ÐT6@±|†ª¼ÿ@å—]9–ài?<ªòŒ³ŽfÉÄ)»BUFx^ª#ÀÿW|pß}Ó¹pí†ÇïKyIsÞ(« L~ÈH·V¶ãú ƒÝÞå;휨ãÞS{Ñ; ÕH‰’mHÇ\ªÐÄØÉî"ú‡€:ùËÏ"P|¿s! ÓÅ·ý«t ÇO×ëŒßK‰dåªw2ïà_²ìÚ`$Žr©³P>‘vªy¸VÞñ5²‘Ê~=fàëòl››h Ž5÷Z7¸2­ÿ«ðåjR©÷0žxþÝÁL”Äפø½s‹/ÿ×-…GŒ[±å}¢#þtüÀ¨˜þƒ!IÓÈé¬7µÌ³RŒâ"¢yaw•]„ËDöÃòåXõ`ЂC+b´_¦Ë÷æîÕ``ŒGîÂØ"É9á鉺µ¸²š«úµÑ¾3Gü]_ÆaGú®€¹)6þ~‚8mÁ»ô× Ùƒ^þó Q´¢¥ë³ù™Œó¾É»AÐ]z]QP“‡I v›çÁdz*y‹)»N˜R‚ÛÉÁ%ñ_hô× z¦tGúCõ„RHº³».X¢ Ãu*ë'Iqàz=}ñ¨…¬FR ×þËxE$Üý.™ÛLLì¤îíÞöHf{/€û0ÙF;¯„‹ØëÿŸF©‹ òU{ÐOö)¢ÈVÚnã¤E&[ÞÄ«Ž7úIˆ5Ö»žfº¾æß|ôøj‹{‡êd9çoÙcºðÁRE÷@™7ïœTåìPèúkž[Vú4ëÓOÎ =.K²ŒLlwÕ¼Ñu|r~ý° ܈hkÃp MqÝ^pcø‹¼ƒôwÉ Ò„0U[A¥øƒFH§”š†"Ñ¢‡ŽŠêÙ¦aò¤¼s’׆ÿ¼ÍÒœ>ä]JË“tÞôÅñ4©ª×žý6¯”u[j«—jÔDìe®k^fQ=ÐzyÖÏËо+¼›¢¨ÀÛr¹o …åQ˜ÄÅJÌ6Á%ò ¡@£.úuïíY. ïä©wÓSøBª×ÅPã1-×ïG\sèNÐõ¾ "|ŠOzq£ëNÀBñ¦Ù!뾦#‚røýͧ|d‡J‹°ÙÍÓ]U+HIù¸zn/(£Qº+¢<³àU¸xFÑ&®üQדQ€½*ò¬Meæ d¸é:G×ɧ WŒÛßÕ–G™ÅGM¦ä¢C·H´FŠ×ê…*Ò20 ë=Ìì¢5¢ŠLKÛ̪‰ƒ¿åL§™–/šLw–%1™†¼Ô¸–J’à¡oE5‰æ°{¾ÅB¶7Vò0ˆbí]Nó›ï­©›HÖ lNäB^8…Ý*çlQLÐä“€lNd\¡ ßóÖš:LõЖÿ¾^äÌ7g̓O¿?ÓŒý,°¢àµ†ºyB_nÄǤsT·uœBÝçÕHL­ "¯ðIÔÓ¾UëdðŠyy.FÖX·J!o<Id7d—IÎAÚÈ;‚äÊÝ-g—ÛÐ*ÜÕªíN%}—{ƒànÃîñܱF)2Tœ±C‚Ÿe‡4ÔvñUnêo'ëÆbx仪³!X‡$où¥ŠKEÖµ3TÉÑ ŒRé$ VÁ83¨vƒ®í„à`ãalÉñ•«¸ì&«qÿÑAÉ ÐÒ:züæ½YOÛ!† lÞoS)Xenþi´Øz²u¨&í4ýìµqÒ3î==öh6mr{’y•jõ.ª¹ sù‘ñŒÁ/…ÃAùÇúùïÊåâpŒ+DÎ$nèƒÑ=V8Y·ë4ü^+'•RY­ëØ~C³×ôœL+öýb̽¦*h­x«{Þ²ˆÔâ¦ñ±>^ Ph"·ö„¤-C‚-ë0–2î›íÕ§8É #e¡M,kã¦;j3…IñMü^A9)¯Ga ZýÎê$CÖæãgy4Zï7hÕ§´¶zµ´ÌH—êïk%3Ì ^žþí§ZC>À¸B¨ÃG(Áœ_¢$uI†9_3~u[Çúwatž•éýZ à zF¿ôÎÍ ­uO®—Xf”#v6õ-ÇŸ½„ÒÏÓß!¬-öZT"‹½ ¯?TS雌ÒkÄ J¿*Øeu ¡—ø^}h×ïNI“TšISÍý«N±0w¦ y—v‹ LGŸø¼ºrD·ØG!³¯mž[g‡¬pðhK.À Ó—ãÈú †D @Ž6Ÿ¼Ô:ºíî+ˆÙÚMýé[a=•˜¨Ïüb[eúË,xCS^Û64Ýó±ÚÓàdpмK6ßÒWÌÄ„8€EÝŽ™Ã;ôH2gwÀñ™¢û£r܈oRÒ«A€pŒòBå蟃»‡¨ÏÏI£ “b¸1ð»LGÐÛ­Lþ%sûJ°ùÝVùß®îc«žLï³è`Vˆ¨õÛÂ<×–Íì¼bßú)=íÌhszÕB‚õMm9G’ðwT7^F\GÓ0+Žo*ùË$¦âŸ¼ªš‹Õ”j1á#h˜“UÛK³Ç„š¡Äš´, ?é`S½6Î$˜@ 7Ôƒå¦ÑÞc¬Nä«ã‰9¹? ¦ˆº;²¨!Ë»&áÞh"益òŠPÁ.Zeȶ=ú1Ao`÷lÅ”ÝyA ·¨2, ¶F_ЇmjÅe¡ËulÎî»K^Ïu‚ÀñcŸ“.ÿ­\V¹°>Ž‘#T"¬ôc©ô}²’8p+«Là¡ÞóL^”•ñq¡BnùáîF˜mþèÁ%(j-AD¶U.ä§¹5 zÜ##z\z©ÎýA¼šâp¥lÛtA¬óÁ/$HshA±âûªc¸¾D9ŽÍ~ø:6u¯:âqÙpEk®CÐXÆ×ÁÞWne¾§§àoœª•š~/ßÍyå08¸ô€5¦Ú¬FK –÷ù“Ó‘iùAí$]!Òÿô€Bï[@ÿ©Óð;àÓŽ´¡áÝžB½üØ5–Ï.2qîþ&u5yÀ…™ó×b›d¼™ÇÛ®HßyŽ­Ð²¢`œ;î„ÞíJ“xA|£ W§ "ßÕCŸõŽÇƒ9×4Flò“EÒ±€Jey?r,”ÀV­YÎ…ÎWÐc¯•´Ø Ññ]¥õ¢¹,D†[cŠ)@³(9vƒ×J§-3¥¢ï éCžªîi¨ú9óAcy¾ ¿ªS3à¬ê[æÁÅÐüšn¯¯m¾AQ¦g'6º‡gLwÁ´±†°ò'ð«$rÂà+ŸƒèaY?‰´TP8JMúÙKFØ+À·«Ÿ!s™Óñ²(.TûuÖ8ÎŽJ]­9jÑ€Ž¹Ï”—àJVï­¦îeǹJCBïz¶ë)ʰ¬Ð•é‘ü¿0b³lËÈu„:ª ݺ=£ ¢¥HË…ÃJ‹BͲ‘ú釞‚Uú7ßG¢÷ÑÓ¥H^å˜@1ùî–g„ÍgC Â’¯ã °Þ¹ šÎ»$ýAU“R8…|€ÝÏì5­Œ¹ŸÇ cNÖ§íK„ ›×ÈíÙkL÷ Í¿Ž€ÕZ ­ÞªÚcNë˜#»ñ’ ±øÝÇøjÝ€:&’ŸÁ=ñj™pXoF„ÇC/ifBFtÞ²ø‘«Y;z]Ø{\.¤‘‡TÄXd‡3¦Ý–W•šßÊh"Þ)U$hs8?ÖÜ]°çR¯Eý]t“•{³*rµº©çU*kðDÏ(‰¯t£nÛ̘E|ÿ`hmÄý|H…"”áñ¼äGì¯ïøúú1ƒñêݤÀVrX™ÐY}öÂ|³ìÄB“¯å,€n›göGŸ=y3ZØAº¼¤ÄÌ RêEn(¢:ɉv3ѰTñöž~2FCàútTî±zÁìZ.´›<×5KWdq“ièUz&ý9’W|X’u¿Y[þ¸adþïù$x0”Ù+ô¢~ v2Ü%g¥=:|õèJý$ì7?Ï[’6ãOæ| eú³e¦¨©¹VòhÿJ@€xZ™úg§flâlÖ 3¤•\ã×m0àJ‘¡éþ ÝÆeDèð<ÔìgéšRޤo9 ö¯<(¦™ísæu×™A›/2ðPê5³«LFùæùê%rß§šz§9AøkNÛ;ýíÛë¬ÁÓ§m\º,mb‚Ï8G™kY úÃÎ|‚æõ‘qŠšH<Ð*‹á”Í›¥S#ê4TÀð´8k“‘Ñ ç’?eÈ@^Wš E(uã•âCÚI »Ç3w¶EŽ5‰@sÚŠ9kê4Wí]Ô÷Й+¾Æ§CZjRW÷ût¯±­ç†å.~lÕ¼¼ OÌäÉ2¯Ž/ŒªXbõWIÖ^ÄŠ^è~.¨*t6rÖ*l O5BذæíŠrvj5"SõfIUÿ¤ï&³N¥d¾¦„kŸ Ëa^ ºµÃ üÁJ Ý0’sòjû7ÚÒ_šÊíP0 ±Ñmáv™ëË¼Ì º´ý½£˜­ó`ÃéIc,WËn“oW~1ôUsªŒçÓá9à¥ë±èfmgèXmûPž?¹Ú‚‹.0×]ª j2mÿ»Ãý%)¶6CžßË%Zp®Ÿ÷¹ˆÅ£°Šjƒoѯ˜{¢2XLJ™üžË“Ï–‰Fðo“MôeSQ—„'¼’×ÖÇ02 ý+3¢Þþà òÀÏ!,©Æ|ÂVŠa\°?.FÙþp2Úâ†ˆŽªÓѾ¼IQì®™wöÌt©*Ê‹Àep*¢dà!1]R¨?bïg.ufÙµä¥û¬IWÊ÷}DôÇ…ŸÅG5ÉÕºR¢gƒµF·Ã’QgÅÇ)G×ÝãÁ¿wÙûŸÉ}—j7Ã[×úIЯfwù"óaö×iºó8ãÝ^x¸£ÁÈzšÇøÙ:ªP*`¤»³„S±©®V¢¤‘B©x'ÿ~D\Ò†W…¥bŸ3¡³Yÿ¢xBÅCT¡gú=ùxíÂ`™Ò ±¦«“N’ÞÔcw²2éÂ>ŒÙƃY›öÆž x£evðxõ Û€ü*Á¥GOÚžT ÷ÐfAbÂé“Ùud³zˆÈŒnàB⻜kã#2̵þìt±IÎõݿՆ3R=gkà“AË|ý ªÂGf1š:1— Y—yô›e â!á{h¿½Æ¤…'¬G_lXÖõ²çpˆ=º\¿B»UAÇï*¶iðÙìELù*ØRqwé¾%éhÙ¾ŠÕÈ)b˜]Îz §Ô|ïKào”m‡QËÿàÀO3_锚?µ-N:¦¯(枀Œ§C„t4ðè€ s¹Š«ø~¿J¯q–†-XoÓ¼N%ã†:x¶¬+ý„5ã-?Šn‡=í‘<ª÷æ®X •3«É £üpá[ò¶ˆi22”6§Ó3™ÝÞ ˆÁÁPòûuô™c\õêmáp •ªš‹ª4¥ ? ¡®³iÒÝ4ň2u/¬,ÿXSž XºÐµw¬¿l šHXýÓºÒŠždNÖx>èçW„C5¦ü ÂFØl‡–`ë÷¡%¹±ÿä‘Èl5Uað a¶ð/ïaÂÏËÒ½ãqš£¯SŒQDÓÂÃ/ Ó:ÙeÕ#±‚Y¨›§×¾ô0ŒÁýPbWœôܘZ{­Œ\2Å‘¡ ¤ó캳Þf6uØÜ2Ò\ÜC?Ša@Û„žb xÜ…;IÔí'>YqBz‹"Féª3z¡SùkÏc#ͬ&¶š‚*÷L‡#¬Â§”VÇk)¦/fn}ˆGûS ‡ú¿=Û]{œs1k»í Œ¿rÏàáT—é°Åî(á* à/Ó½n¹{ξNiîÏÜÞ—>êYÐSXBÿµTþ£ïç~¬ò(%¿ ôB–öG‚–¹Ž7¢mí¥0r~NØ(—ºPøœc`M¥sŽiŽ*öȶ/rçüW2ÈVBåIY³˜B¢¡<òNå-?<¹¥gž»–sùÔ-ìð¨©9ívEÒ•Í“¯Lê ŸÎoon:ƒêÃäF‹ÖáUÇ‚¾ˆÃ‡N;V¸ªÄ&PK‰@n/ئ[ÿ,eÆÒ{1¬é¤-Úú¡Ó`ö°d%M;‰­ÄŒÜJd‹‘2:wø:„’x  ݇ô¤Ï0W#úåKq¬X‡ëµEpÏlÂeŽÚø¡W?ù'$шߖâ3tò#‡%+f¿ 7ð0¯CL7YlE˜“Ùïuá‚l]$Ç+»mÞËxªY°ƒ3½Ÿ‡z’KqD8uÔ@Šñâwر }FmišÉ!-§ßM¾õ;R’rn¤"NiArƒ^PR·JIôNiL5Ý-ckÒˆe ÓN„~ ú¿¤‡{[˜‘øA÷Åó´ã­*dßØà¹ œ²àÊ¥n#òÖ™@Œækf‡8 Åh›Ëˆ«¾ŽSbþq^ï4Ù:sПÍÇ–¥‹»°lj` Í+BúÆ ¾ùåk™Nÿ»ö‹ªÃ·CtŠeÞ9?ÊW‹/Íð3ê;#¼ë‚7ôž¾†>òÐr“îÕÚÿHTrœN©këvÏúfY¦ë5@úž ö éÓøÊ¸*ܾ RÅp(ÇK{àœ¬‹Kë ޵°EjÍRí¥]y(«’yKøÂÚW.ø ÍŠõ*ã;|¨2‚$MhZRŽ?ÇË ä9*£±EÄàñ^d˧» ¢n+ZÌí–’­Ê\ueÉ=‘Ð añqÂÏÝáÀ^¬XBo#Ë©| íÊlS;â§UN¶ ß$XŒS.«çV¨¿­ûăJäzþ…ÁG²ÚÕH济ç…nû/ê¥Ð&{Vø±$ éy¡‡TÂÔ„ŸË–¬ÏNA$Þ¾(øà#­¼ ‘1‰gS½¹]oä‚!L{¡(µbDÝ~zûºj$'Û}Ïô„PåêY#&ˆqÊÅx÷µbgá—¸O,ý©ÐÚ-t÷ÃGÖåe2ÔâƒLpLL4äyá ´ãhí†JöÒ#ÏÚ$hªH;¡#ºdjg cÓ¦+ÊwÝy‹QxÄ*Í*7±ÞH ýC$¶ãÆ¥$¢²{~´Ðg?\ÿqºa±o–ÿDtVÂaQÁ-q„”ѪkµaZ1cZ£?G·Þ:)û5,íEýų̀vHƒòO»g„äpx½ä ßÔ9õúÊuÄ¿ùôÏ'ÑÌç?&üNÌÑó….D>ò°#¤ª'r J²þØWÕËöG=©¸‹jˆ«iú;J‡ùrª"œ &"i5S¹j¾ü÷óM é¦>¡0ê™AÌWǦ¨§u©›„׫¿);´ŒôÉ›žØÒjgÒâhA@p¯Î¿MuÑô y±¶ÂCy)°ª– u쨧gœqEω5¸‡¾]Œá qØ6C­Ê^Øùƒl‰. –ŠŠºN§Üq8ã3'üÅvé.¾Èਵ…}ŸB'~È(I™J¸#{TßοµE‰éRm'&ÐkËT¬[â@«Š«¸O`ƒÖ¾D¥þùåYe¯Þ Í8`^¤½*Ù2Ç©ÞÖ"†VÚé1õëŒ3Ü.ìÌÍ(ÃÎ ·ÞCpð³ÙÔíÆñ ‹"0I2Ñv<àÚ”“-¯bF~=å­¨d¯Q»Ì:X(“ †y(› ܱ%T3|CV0*Qø cCä¨N˜Ê?-§ÔhFlü“k–çÿÅ }áë< ¥g‡ž:4Ú»“wZvóæÓ$hMî€Õ>+ ÓlÌ.MzþË“ö)Z°¨+'åPkë°Â3p¬•>»ÜÄ“ Ø‹q+n±]"êÓ\»±¥[…ÞÜ1³ÜA±ÌÈžxíØ8Dù­ÎB4 qÏ*F—6°õwí>’aCÔë¦]=âQ—.>ÐUÙþ]!õ1od<ÅÀ ¿Õ§5Yåa.ì»· ë ¥c“$Ãàô-é d(~¿¾’bªp9½úÙˆN™¢v–öë+úö}m¬Y{צ݊!_µåR†1^¿ïËèØ£-³ñJ)à$æEÒÕ·ë’EìP·jÂ{³¯×À•LÙúÓËÌÚ»[£U#¿2VÉ¿6JìøB=ë†Ç#Ý‘f·ë%>³ÞbÛ>} 5øÑÔXÙ'ª‰H(—™h‡§ÒÿoÏ´0Qg}ŠKcÓT<÷ÄþÍèCM›¾-nÚ¦KËŒ`]¢eñêr‰]ҌҲfFMîj÷´_.N‰Õf¾óƒÎÀžÿÀ%dDÞ´yÏG« 4°1™ba ÙŽ•ô]¥Ï_M,ë°MæóRNW¬# =˜¥¦0¼Ž ’×Îì^[…„¡Â™ô»Ò‘É–†æÜ¡ÜâÚz´)CÉÕš\‡U“P¬ÂAé­”ú®$Köaýߨ'þ?yŸ‚QÞhˆŸô} ¼Ýa·îð°L‹«ª´"œÍ(Gš!9RÚ­a ’2úÿ¯Ø6à5&Üø«êfÇŒ–ÒúoÝÔ3Ÿ=òVÔÅï@e´/¼„ØœBTÄ)…øG³¼¼K7c-†þ7F> ³q"üýÑZ# ¬Ïb8]aS®ÿù´Ië\tGܱ:â×éW¾Èçιÿ'ï-Nc>Óÿç¾6} t¦8_Øt˜ßòÿy |x8ŸÍ+)í¿†ˆ¡W 5ë³WËCmÊqÿ‚;tÃôç©Tž*pì^.SîE_¿¡¦kgĵFìêDµ/ùÖ$›:Ü ¬‰?©Ð¤VÎwÔ¨àQãæÔW2õÑzjú°»XÞÌQ½ËuXˆ.N ‹V4 j¸ë³#˜¿ésJ M„dÀ‡ ‹ŠWÑv7s´º‚É¿þ¼¶,lËá6¦*Üož¢vs6£Ò5—‹&°ç12ò¨½XT¿þ^7)7º˜e.ÕÓ¦Ô¢Íê÷Ó )üj±«QbŸ]ª±€àSssÇ™¨ê¬7®àd7¨öñqTeÒ|é…’t?œªÓ )§ùñü•nfÛd‰fð¤LM0mÌç2fîÇ×Çõ€óÉtNœ¼ 8áXnaØó-´Â¾Òr¤îwºÝg f*¹,õÛ6û,|Úµ¸ÀÄŸê h­•ÂÊ¡ô¸ýLÚG~oaä°üôz[ÂÞ‰«J¨ì”çÊþzyØ™d³~W¢½¥¬ 6‘Bë‚Ö|†`ÓD•‹|ÙäüI‰ØÞ#m63Päb áù¾¸¤/ýÜZ B=åû $,x1‘ýû¡î¿EP~†ÛntˆY´²Sì˜õÉ´OPKfìÜÓ˜[;Äý'“,ìtH£T–`F âXUt©ë~£4×~Hí|È®Ä(}‚ÈX JÊ»v3O«ƒüŒ¨I[°-0JIQ/Û«@‰S¸9ø¼ÿâs刔¥#oÓ`IпõHòR2H¢ØPT„ÿ_ üFÜj¯@ºù»yø½– k„2 Ú÷W< ‡;O–ØdÇë½=;<΄òŽoŠbx·g­òBÉ!§ŒTöE(Ñ—öaË+OÍÎ,KBü’Ä·Œ¢<Ç ë¸Þ¸þ”Œõ«HWB•€ýàlrŠ\¦}¹ÚÌEfÅ25 ]õ‚Ùº28$Æ—ÛG—ôáÔ’'ZO·ä8—P¤X°Ó%ãßßµFäYƒ>0 ‹YZqgam/data/UKload.RData0000644000176200001440000012475013514360421014214 0ustar liggesusersý7zXZi"Þ6!ÏXÌâ7†©ª])ThänRÊ „D2S†”;±¿œ%ªŠ>/ήm”²2-uCï=u)Ûã·éWèt@qçMY£}šŠúAOÁ´Ã¢ú%Š\Õ‹<»?W®¡l]SK8¶âô4aÜ«þ º×¸{‡m›}e‹L¯C„ï [ýú¡FÇ7/ïº3•fJõ…’þk #çÇÖXaFØ/Dñ*šn>ÐMœ¹êv«È5¾#™9¡ödØ%‰³Vd'ÛD™TщÍ%o;¯ù5ýRë‰#êk \ÑhëÜ¿³óµ³ûuqÇ'JzÿéÎ.·D-4qܾ® ™Û¿~`¬QŒ ävÚð9qe‰Û€ ÀÝéŠÓc¬,Á úõTvà¼®Ýø ?_¥ýßrD"gÁ†&ûÙB=ÑXÊVGÐËT5ù³åÃÑD$¾ÈL9|EA»©kÂU䦧ý × vCÈoÞE=Ó½”¥!¯¸ÔËôœ'^ŸFÌŽ9F b¦ñeÎt yÄd”Í/êO0îd . PÙæ®»;úŽhÑžé¯ï¶kVâíýIÿ‘INœR¹è%°õQu$“ùà RCt Ü”rDãÓt…ž´Æ¢‚gEô®*$ÃD·ß—º›œþbÈ|_†ŒîqœHTG2ùtÍ…r!ÐrX‹t€H!×´¼tb…eÛŽ¤âymŠD8º+Ü)f˜†QTìA”n÷‚`¼3;׫û–t3Ô4œ‘´“]LÕ©†3À4©WäÈb·” X¤B ßÍ$ÿV`l"™<®Â¨2T(Z¾{¬Ü‡>¿¬¹çŸ/Š·«–ð&SšÓîG0 ¹ MX‡„E)¤yâ S;ý$6Ά,È|=ƒŒGÿ,Õs„(³’k‰É’iƒ'hýçÛN r]kðx '4$ë@Û yw¢¨ÅDZñH¤Ø·)Ц@TÌ$’’ÛŒÆTV^vE†ïó]2òÄ¡Pçç1 S·²¥ÝÝÒËEmT~»÷cZ0)¢óƒhom ;u2Öô°ÂLSdR‚âð õ’@Å(Dp¬x8WX¬^&©ÓC§À$ÜëAËÏëy•bcpJÎ ÁxÇÅœŒÃ1'’k| Û×'ÏOØíë@Í~hNÚä ¥«0)ŸÎ­2íW´èšàå"ñ—Jf¿ Š?¨¿ÝçÀ^.·Ã…c´ „„Úqhp¹U5ÛRÕü´)öŒVõŠ.­'åÝëú-4;§;7„úS‚Öm×jÉyžt%CØ/5ÓJÊi-¾‰Ç±|ôì覅±Jtj½ðN¥" ÀÃí¥“û­çp9ôÆAË%"óþ/a‡ý|Ö‰P_¸& (Zm K Å£Vþ—–¢è¸ê£öÇ䬷Ã&. Ýz÷܉q¯dI‹—·¿úPhb©%%…š/2Á˜e•ákýƒrªAc½’'Î:é¼ó†ï(7SÏ·º'Uupx˜¼uÎéE²©¾ 5±s¬C¨Ì oñ¿ÌUf©ö¬E*D¾Ÿ+™†Äá¿Úð|–ÖEìïKÄt26áƒÙ-©!ËÍ\ AÂ]“V˜l:cRTkÿñjþ2âÝ9?Æ.š*_¸®”ß(sdO̦7Ås‹&æè—éÐÃåñ3¤þ+:°ÂìQÀh…ñCp*|+gW1±â_¼G:‡«é?åò›_ÃJöÈ™ì³pIW #A(@B˜ŸÝçvNÕìToº-Ü Ô=HÏþ7Hç‚ÅAz«`ýùø*®b•}9Üf±­ü Ô‚ÒLÉ+&ÜM“{Þú\ðZ|.Ž6¤kþ†Ÿ*¬Þ÷íÐÝ£ ÆAãɼÜg>®xÝîuyÙ§ÒknÀuZ¼t¸nU‡j’ó^â»&b×ÈZë³.JéÕÅËK¤“¥•plOÖÕK!T,ëHR«æq«zÞŸ”˜ŠS 0ö¨~ÈòQtÀ™¬¨²fÁïHäÃŽ ² &¹ÿ;m‚ºôt5侊ü£Éó  @9 t-?:x¹åUòdˆSÖ€*Ž—ÍF$¯˜Ê¸Y}ÛhO^}×>/dˆ9)2æ¨PmÍõö> Ùmºh½Rz‚3¯`U…å3d’4¬9yV–V4»©±¬µ~_|™„oöe³RQC/˜mup.@ûo$ïPPÉÜ œb%GKêôHÙJ¶/@ózM¼ÚÉ)„‹AÐN`5áœ:Ü÷þ5Øúªw`Ðü…À[í©1í÷ç©nYØž8~»JXBÙpÐÂßú¹îØbjJް€:[õšÃcܽ«!84¢On§dsT¹Ei Kiîë@¹Çá›ñtM+F%ÞËôß×™‡Ï$LAÄ¿»xÀAƒHbk0&ª(¿ºí­Msó+¥¬ý$ èÞxBA½­Ξýë§F –Îb?¶ÇžʤOqê$‰A·í.Á»[ª4É ÁÖv•£†¨t‹²Øî>…hAðÂi×ìÓhÓk{$–ÝÅ šŠëöÂ&TI·5`©D(„pöÂ)‹Öƒ[· Ã2™¦Û°UÁ»§DLœáN’¤½>wŽÄ+‡{"‘. k+ðuÇôþAåUÊ[‹åXJx‘ÆäãgqLúêÍ7ðò,þ'O725­öÊ”þ <˘òŠýñM‰¦¿|^Çn'“¢´Ùñ³ìŽTî¸ðù½u%ŸÁ`O¿ÚÝÍf€Ð˜Qu³zX§4@7Ô˜¼KQb†_áË 'Â[WÝÒ1‹œ?[±•‰ÍkîÙ>CEÓ¶d”+¶'C}Ï’Ì]~ýÏd¬çò:°òÛ‰ýçJþ(8–µfaÚ{Y‰[Åë"XQ—7æœ}$úBO›µ¶±Þé>£ o©…Ã*Tjøš¾Ùlû‰c¾ÂPì;ç#z w2tã ó¶Rð†¼´quógæþÂΖ£³l‹HÞKü‹jÏCÙ8 4‘6·Œ¿?V˜¯Š[0–¶Ö% Àx€þ}-O±ë 6È:é‘÷,P9f82¼]ý}iæÅ73¿œòš—q)£õ½ØýlVuÔ8œÙ§OêB»¿Ju+ü…~ Fÿ¨¯Ö+ð4KÌó‘­×é»SÔ¹Kf• 0c½¿tcaZ¼b‰re­q„×Ãü ˜nÓÉÑ‚ºò´$ÈR]þ§þz%îzàZ*rPóãdŸåÝ'Mܲk&±ÉÜhëœóé¾Mm18»¿žÆ…šNªŽַȳ+D{…*ˆ~j$+:þ$ÇÝì°]ÁÂÁ&°ÌÛ'¬°ÇIjbÐqÔ‰1-àKjS„¯Œš?ÿ+k„*Ú¤·`_W?Óà;©t’Éú89ð$¤¨%xÕÎÆ&˽s²ˆ‘7òcd³$QbPøOçZѤ½7†j’ úe«Éœ…üŠÈå[ˆ`UO¥GÀó¼ñ³Ÿ¹H>,澯Rp•cáWäÎoíw!° ìTŠƒg›ªëìg bGÑ ~µvøþ@{çùo£Ï÷gi9¤üq…ºSœj4XGðžòyÞL=¼Ô •Ü;JÝòl!h‡K[·1àW£—Õ ÅËJ#LþBé÷u¶ÕËøµ*Ð{ÍìØgCqÙDLØÎÔQf,Æ« S½$ëë¤Ï,اqÊÛ[g.vN¯xÕŸ‡t£^EòP†Z{ðáݯ®t‘I×aÊêÉÊ–^WBÏ/QÚç8H®o[äý¼#®kM3#O zžö; .9H=˜*Ód¸g‹ø µyÃÍÃMªµöù‘I|0žÔhßП2ï–e¢G`øy7 £×Ëc¶Vw„q¾JÚdh· p/)”òÖ™Sìb–{ðl¥ÌsÉ"¨ÍÕŠÝ9Gg“ÈOµÓ³j¯Ñ³JRÒ‰¾kSr‰é_'††9Û勞ž|WlÆ8¡Àëv@:]„R‡5|pºÓuæ{¸&ñ´ÁUþØÅX<ô¥è[úr³ zQÝÿ,¾åv1’I¡²ô¸ÐÔÉ?Š»–Áϸí 8JÌ%ߊØåR rwýw³P•ÀPγ#rÂ=(ø÷>³_‡–ŸÐ©6áx @­Ã›ˆ­½uj,\”\—Xˆ^Mîtê¼ÞŸ÷ÍÄ•,Ã5 Y¡aùûkTR'ú_‚ÔGz'#æÝ°?QY\âC"­t®Jý%ùW­J,âÄóPKñŽgãíIÎÓt—Í<K} D >GP6y|„ræu:<ÌŸºµ¥8ÞZ¢wÛ¸ ÈÛŠ­k·$m£œïÿ×nÙ(¿ç%@µŒ ¯˜üaXŸ¥é*’|%ÚR œx­(»:°ƒË>7UoÞÐŽª-yˆÅl"±4¹Õ¯§j¤¡'¾ãKOÿ¦Où‰'ž»E vQðMlßBÔ!‚iƒ…_i¾³ß{0ÃZáLÖ5ð0ãÒ<ÿ)>²+îÕ.66•dÒWéÛ n_Ê¡ä‘ø/¦¸‰ýZ¶ïÄòÆ?šw“;Z;ï€ý"M¾8­˜³Û² ñ7h)ç‚;è„B÷Ù 4D¤|w SÆGc6ÇÉò&¦¶«S´&™H?:÷xl¡5Ù^,cÝŸÆlE<<…w•‡ó§Õ¸—„>Üm£aU.lèL³±Ë~Wmô«8õXp ÅDî ´“Ï Ã§ÑºƒœJߥ6½ì–~µ‰-Yê/±±àˆ»^ÄœÁ©#9è³g]Íö4±¿ÎK‡%ì"þª£àyJ¹o{ç²a% ®Ž¾)SÐÀº^AÆ.#KØh„¤’w áº*¨:1÷úbùka-¿BÀÐ’Ž‚b…b7‹«Êßlö㙵¸õÒ¹QC÷øœÑz8ÇõÕµ ®(0v²ñd3= d,?œt•¿'-)èQË>fi›¢ZÖ8(Žßf‹ž4¦]"øŒ$RTúK£ò‹rº”>x]Ã}ê(,=ŠËˆ†BL”Sn[ß ±_ËÐ{[qáÛÒÉ ø¿!æ:¨¹ëﻀä¬ÇÆ/—B}²ˆ§A+›:¤¥ÇBÊ{{‡_rÜÿÏEí±‡úe?¦6Bà!ðsEüh²gk–fÏnÁÇW¿Î¨'«âF ´xWÉÚ›Ôìüó$šæê]ëZhB(…§ÔÙõ€'; ™`)JˆÓß^I,,kLÏ üu'I7¸ i¯819+Ayp’Ú·ôˆUo±÷WÕðaʪ,Ë»¾Ttµ¡‰VJC@Uç µvd)ïZ$üdþ¢pÏhxb™¦‹y¼ê]Ò3]xD¥YìE"&$Ò{Ûõý—Úbo8×HfÊ”$LZ˜ þ‘/*ÀŒß‰–‚c.'$•ûþë±%ïà™¬d;Œ×ßU÷îä¸ñŽóÍòídü'â-*Vô¥@ئmæl¼A°Å¡ÿ+tŸw&Mo­Þœÿtõ˜64š÷dët£­h‰é}À}zBÚÊt.Þ\¾«}9HcVs©ù ~Kâʃ•=ǯzÙ+!˜¨§% ³ búæQÁð5¿ù&Xœ&œäð[Сµ)«­3Z½-Sÿv`pÓØMØà Ëô(Éœ±·røI=m,¿{ÎjÇY³ C_´´È”Œ¨;PÂ4l£Å¼åÈŽrÒÞ•á_Í$µØÆž{KÛÏú6·Löv=uEÅrÕ#Y“/X k»ÎWxÁÎXo±/N:Úâ%%Ù=½Þ‡ >ß+Ó#Yt³,€¹Pã.á¦0-Þ0~ØS ÊwDnï<ÃDÁá@C¦4Õ´j¿%D œ„3€ Y}dN¢»;°@zþD †hýv9a—‹%±²h`ïèH8ĵËÖq9‡IÂéƒ_€‰áT/÷3^2›MíkÅl}ŒðjfŸon „þ¼2˜'vu鎨¶Ó‡ßÖz±ƒØ»6–îõ¼‡¨ l|ƒ[·ÉÉT=Álæ\þþXÎA''Ù3ïYqܨiÉÆ›Z•Ì9;‹6]O  `Y²è ö0g0w)€öË;›yRRÛŠ:V·p‡U?ñïÀ.M8a cè—Wó38™¥¿oµ~¢fÖ¢ôF®ãè½âvSÓÜz0¯<Æ€f¶â¢¨ûOt!††/þ<.góÔ4Ì]ÌŽ1Dˆ º³ˆ™@Y\­Á¡ÁøLSnW*‚P°}Î’Ãus #5T£Ép-»ÊUöšnÀ½’ýI%æ÷)—¸RÐ5ÉëR æOg~úAÁ—‰d"ó-I†ÙW`=O±v"š7©EÇ×±VnÃC‘Ãy;®ê³ôtƒs'»!—iµ6dõ®3ÿ=Çi L§äúÌbŸ’út <,X ¥Lðg^†¶ÕÏË©W;”µ ?S"Éš ÍÌ#ÞÙ¿y· c²–)J¹+¯ÑÈIºìÓŠ¶¹&å°4ñ–’WáU×ìvÉIÙ¥[:ÉÃå-æ•Þµð´9eÞ^}µ%_dçü½^EµrGËÞÃ/ÛŸw–yþÓ Û5-6P€.óö„Io×<<ì#JÕÉ¥¸5ФåœÐÚµjî×l‘ÙJõþm0g»„“ζìš][Ä´ ®/Ž·Ó“øDv–F¶¾HÙ± €ìÛŸq”ÐàéÜ­‚wB&!ˆ¬·¥Ü‹þËJõ÷ûýÌZu€l‰žÕ ú²O¤¬àÖ «‘â‡Ñ þšÈ¹vÇe¨§ÏtGð÷+ŽêwÇšöæÛL¬ôÌÖÃȹ„Õ͇FãgËžšY&¡ ‡*æ³Ó"ê|ã*Hù¼f M°©—ˆ ,‘‚n‚¤RÒ/>÷ Ä ÿ¾ˆ·NÒŽ®;a™¦ïÚOú´D€cµžöÛÕæ—ýs›£b`÷ýé9É=&=¶× d†Žy¢HþâœQ"—[lÙüâ~tÌQ"VÖÅØhøöf96¬>á­ÆÏ-WÞ³eUå;Ëuá"ŧ§âºË£'NŽ’ÉKû?k%Q»K1þÆ»ƒp#‡ —À¨ÒÍOª®v?æÕ–•vy­šSñD³ë6+ùdf)ÛuÅv‰©ÙÊí6›¡]â…Ü}˜o§Õ9U+.¯Æ3Í%Å@J`•‡¡UgD[¾Å8çÔe`òJ›Êð£2¤Žµi¥:D®¥í­V¡ñbEþJ&ñ<@ß„‹×`ïå+‰§ 3à ÞhV³€ÅÃå°Oä/Á“FV:ƒÓð<œ 2~Z´»Ü²†Ê{@Øw@@L•²b×NE]ÂŽ‘°Äv5èusÝs°›½ïZöžn.ÕÆ–Ïääw@þNNnJºø¥ã¦};D;É0æWàUÅOÌ û:Ž ìKÂçÉ ×!)R=©øòлshšÃƽ³ù8‘•ÿ”¢ý¦û›¾;þT+ò}Óî¬m!N¾çw]£ëЀ& |&±ýÜ­Ö©gÞïŒV+Ž_™šZ‡ÂäÚ=  ­¯çˆ,ȪD[ï¨'äfÓõ×Kª‰é÷~+>B¹Ì”îV§oùÀ®ÔÖÕ®QâÌ37Gò]Öæ†¿?—×ÔÀœ<̃i㜶Jrï«+PÀ’QâyþBD0þô•Ôñ1â~ïEÑÒgm¿RÆ1½GÃlJ}6¦ša´d½®½Ëãe¼£ ®m2åpNƒ<–9˜†ú-oIØn$lçò q;ÐÀ‰ôú«W÷®ø—¾œ{J‘ÁįjµÇžÒØŽuü«ì ³ßÔßí„'œ™ ›ÓQö¿!<Ö Ì¥&fÞnuììK±yMÑTû’ê¼2gI=l~!HûþÓôé*'Ö;Ò¼yqùþ:ûíîÉkyôã FÚ7>>¯–gQ”h;¶h…_:k«ì~‹Dª»u[ÕI4q{6Š€­qYÃØSIXš"¤b{¾ÞÀ´üïò'¢kB• 8‡BÈcÁ-bŽüuð8ß=æTþDád½ÌXt×y)ïgÿOLÇÑ-d² ㈞)yIY¥4ù%Bt!í F¤~5$¶EŽ›5fZ*<¬®Õ¸)ôã’¢PÕÌÀ¡ëyöYE_bò76³ÐÆ-gZÏD»`(Þab®½!ÆmO'õÂÙfø{e2Äç׊Ü?QIœžªÖ¼LD—$”EV3pÎÃÓÐFã÷+f©¾¤üÁ¨¿žñB*6nÚhEÃ¥¤µÄâqû¨Û˜$ž3ãMèaÕ’V8–ÝÉ}Óï€ì@‰Ã-˜¦Õ’Ô­™Ow=7·ó”\$‘¾kKU¼8¬,áùŒ¹·ûIåhDyøõÎõަcL”ÞÖxÆT”,¢Ûs|§jñ¤ÑAŒ.ãõ¡jsÍ©2T½¤¨ëB+x¿½:h|ôþYœË ãÄF!ÄJ,S?&–¡þçz†Eø-Ù ´ÒQÿã˃ÍJ<å§H‘ŸŠ«‚ýªBoM|BscÕ³ˆð”ŽPdަä€v¨åÜ5ZL¼ ꑨTNiÆéšÔVvãÂ8’ÏŽÀ¶*I@ކ « WŠ”‘[fàÿÌû{Y’**¸švšcñdB‰“ÆjåzW¥ ý=³ŽÖʨítî BõtV¾•eÿñ›éNœõP«Vb Z¸™›ŸƒânMYו˜`áA­r)Íþ%㻎'LŽUökOÁôYfÖÑÒE×Ú Ó>2ö·lߤ»rJÓ΀^~þÌ)Îaÿí–ÜB@Ãí(ŸpŸ1§£¾w £s»:Êmòöi‘`è:ÉIjv/5X‡À‚ôWÆ”<Ò§wéMùšaºnæ[fߎmOMa³Áó£ÀþõâhélÜ–nUÍ`‚2ZM+P oе`@©Úi¡’óÓÓÈ˱O6 ÈÈ[yˆ«}Pn šWáÌCÕÖctÒ@û2Œ´½R™ÅŒÿÊÞìÒ¼&p¸ûž«Ýr^[¸Z½W©+§3e—ý†±O–ùÔæ=óÔÚ_" ·Cmå8ѽ9e—îsC±‡°`ØúÿÛŸ7oÒLÝkÛ©O¸ª8³Ö›NÞv²DÊ]ÚÉ’¢wR(&êÆß®“ÝßL´²œLf*ZúU×=âm=øÝÿU‰D]M­žâ㥦½Tß™<Ñî’³©ye$ñø°¦˜Ã›®¼¦"ä0ò^lÉŠv=4“0Ø?ÀJ–Á¯K§=‹\1îð޳i’uW—¯##续ĵÓ5^¶Ýtçßïá }=oçè×îËt"¨Ï–™ N,Ô¾›åöß l(S2ƒÚ…º°ôI/6± ïŒ [;KM\ó×ÆËªÛÙ¦pØ}WCÊp×`“%†-¥Æѯáõ,¥‚=脪Œ’[s£~+Wƒ‚_ß{†5LÕ‡}…Gþ½‚yù»©é|À(u!± =­J—'¬Uæ±¬Š¬"–û¤ ’lôª²6SEa y;þ«Ã¤U·‘'씎JzsxÇz½¸Ð Å9VéªD Ø_N Ô÷×-¤ºbèh5£ðzÄ›¬Ð¹¹%øNÔѾMéÈv0Ò}Ø0üY:%Í0 ‡)>ôx¥;W±¥&ÂÐjHµÍGØê¥Ú×3šãìÖ ¸{3„*M‹ä}¹HpàÚkñYãà;ꉱˆrÄÊ ¹…_!,#Sy/·˜’Jxgq‡'f®´ÖîÓ¡½(â¦vîéGúàT–V>tHb8úNò†æadÅ)ä?ɳÄ)§’YÏ'ñ«€ÊGzHÝ/øÑGjíì¨C×zò+Go›.µZ»6øb;‰•´ßhS¿(,ΚøDEáë©Þס-Öä§ÍÚÄ™b÷Wy“wð²„NI>Ò{6ë¬lF& >öŽeCÍ0ö|j`æ ^è_‰›­BÚæe\ñØ$ؼ¶Í§ Ž—_ ² „•É9–‡¥·gÅ:4óá˜À¼+½‹¦ãdòm-ãå} Ö&b/~’äõŽŽšýŠAJžR±¤A~m‹×QfšI×{~©6 ª`€Ú4·gæêЇÍùÐ÷ÿ9˜m÷ÿ XW»KåRu¡u”Ù-2¢´¸«'Êç<ñ9(,×9$ øË/=!ö0GÈØcr€(´u¢‡9ÿšÂ ßwZéŤpút|Lƒz¿€1íüûª5&æÜ¶„ÛG„Ïã "4å±F§™°Ëý+pzà 8@}W†ïÌÏäwïÖÿÎÁÓ> ±˜îÒPù+`¸19ß(áyþ:ޱ–¦²W ¡[ ¿BnQÔÅ‘ …¶¨ä§VûÍa HÒ-5æ˜äÆoá°Ýi½®DáV%« ßõìzoðzè±.èvâÿŸ¨üÑgC{“{UîŒä-âBcð'aªW1âìMž\¨óàëŸXßÒ™^Ñ„ŒsGò™ÂÒþµKôÿ-µØ A –qËÑò†·\í×àæ·á¥e/)ÁŽå|aŸuZðBwÑMº$^þ¬2Æe²”€ðùÃG‡-Á‹è{¤Mâ…fkMá³þ¸¥G´!îh0]Ö€á×¶àî~hÉqÚ:[;wÉ•î4¨Þ15ëîy=v¥ÁâzV}¼‘¼YáÝÖ§zk¯í½’ôýÄ*ÕIR4Óï ´µs÷ûOý'ˆh…€Ï![_ËŠ"J0ûøçFû ë¶Ÿ¬f’Îrˆ.HôbÊ䦥TFc.ñ¯Î'šÝb&1Ÿl¶j”æ›í¦,hd¬Öàòõ4ÿÍú²ædB‘#P¨ºcfbSss¿Œ4~bs ŸÀ;“͉b—ÈÍÚú¤ÖQ dbµ-ñ$9ƒ[ÙÝîK +ÂØ„Ŋч6~þ A?ôl3dê—“gG]Í¥ …9›;;ïÀML·Ç&°€L59E5ö'rÊÙ~t+éÀâ«Ü“àäŽÞ¼*‡~ÖðÑ·qy$K“Þq¿5ä—:#î ø¦’±,ànÍŠÄ„e"éŸms¥3¥N·¶\ÂXß’6ˆ¼OD÷XŠ ÍŒ±fÛ„ ñBÌ©ØÓ·´Õþ¶VJ —÷ö™N6æó=øÕ=ý>e1ººtÜ×-#1¦4Û³ñÿÄ4¾ý™”ñÙL=×Ôp˜[Cu¡-ÔE‹@À—ÈÇâq^›@¿Æ¨ w6Ä蜋§»€9HÛ2¨î&=•èÃ%ÃÔwL—ž À5ÝSæ%¢hÏŽ>õÜW˜8ß'Y¼.1uÁø%µõ-íêû;•©Äbê+_6!Î&¾.§X"ûÿfÇ{?o£sþø¦rÖœ@ÈͺXY[”FØi§Ÿäü¡Ø±9ŽˆUQZý3õe:#¹J7Á£ná¹í*&.–þ -ÿ +mÌ7ƒFqLd7‹/—hD¯,(ŸÈ>| $Ø23…qm5Óëس|®vÄÀ¦~òG—³løe"eEèEú4/˜ø,-þ¥-¡¿ŒFÜy}@šÎ¸_c‡±ïÈÁ¡IëóYGèUæUbÇk€k0o#¹§•˜{˜*±)ܤPcrbÞ,})ÿd¦døh§{|cp*×ðÒ« Á•«5à°ÜÖÙ÷÷u²7œMû¿s—Y¨ý(a™<«1‘eÃæ¬”q_!ê‰m…O×ÓÜÍ´fá£+qðeÙS·ìm#zIXüfúò©†¦ý ùÖ@7î.|ˆ™Êý¾„÷‚"ñü¢gìµ–ÕqµýÌblQ ùU–Vðö\(7HÉoü ű¦›æ¨Ù%¤D©QlßMwËÛºõÓIC<^ð«X“º8D¸•=9ˆù­ƒu‘<Ñ=½¦3ØiÑ+ùµ ¢îÐýó1ÿ6¯Ä0Ú”Ž‡’Â#!°p … DÁoC½„ÜI ÂdÁVPÕ+Dù{h” —Î5²mÕ&nmMê9´ ÌD6ùNýúË.n’ «‘öŒlK±d?pÀwQ¦ï}؆ýä>–ÍxÌf€Ôä¬ðÄjŽ œ+¼1Á S|’òˆ•VÒèærãíš"5nÙ.¸±”ðNkêÛ{ÐÛ ¹Ì£Â>]ëK0¢{ˆ’ÀA À÷TSb?xk³jÇ#ü=•¾§Ò–A—4T«©]0L_‹%[¸zžóî_æÑý¶]¿ ìS ‡ÆïæÁ]+ˆ×Mþ {µ[²ÝEÈ|jnåýeßú“¼hCo1'B¯@yü@yD²Šç¨à—³›åú™ŸŽ‰Í}‰+3íz×݉ÂWs‘Aê[ÖBn.—^kŠ—ÏÙÈé2ÏovÖβçB;ÊrŸ{–›{“Ž"­³KG«%?‚ñOcñš¦ã(!“l’†ìˆ£RÈNòÉ0$NÖi,ˆ ¦Ã¡ûlÄŒxÒ²¯ÜÉm£³9ÝeŠ]Üë;å ¤õÓ¦…Ît§f)Ât«÷Ô>æF)ÏàžŠèd/`]"ŒÉòʃ •Ö$‰cí3¥=rò†^’‘Îö2÷ì›Á窂ïÃQ°ËÆÑ1¹ E ˆÈù«enÜUloŧqÉO~®xlTÿèÖ]´bs\+ò8 ØÁ÷)¸pVÕ2˜¥kc„̈²g‹e&³mŸ-„°  /£äxAÆúƒK=0K¾v!Ü4 ~RNeåÊ€ï½cmpš»<Ý« êwŒ.N“çh5}uªØ#êŒ?bwàc»(rà½`zl—¯§I#gXü- s[)QØLpQr¸ šÄÙ"ÑèÙ‹I0ýí½ÄÜ8‰õn‘ˆ ˜†Ðf=£ã=‰?ËP¾·¡òϧ/×=v…íźû\ý‰f%ÎÕ8—|?á¶ÖúëWãµsÐ·Š–ÐNN„ì}‹Î÷ %º1½„["q>*¢ÉÊxîˆdhÎ`€®¶£6ê>™l›.À5òžê™>D,ñF_°}îû)ÃôŸžÞ7Ê5*"˜÷ z…€IYÄtÊMBÒÖyÏýç¥+?‰)™å:[<¿(Šï«çüt ´cç_jÝf™ÜÑÿ¨A¯„òÈ‹qï¾?G x6 霿8‘Ô¦'W”uÒÍöª[Õ¥êM¹ðre&Ó¬;´¾›Ä²°’ÔY¹N;‡0«žïJNöî‚0t²×—î ô»*22a'«âüÈž¸KŽ·lRßÁ„ó5Ç€ËÜB"ø> T$q]a}gX›þæøì73ww¹rfQ$žKm,ê5ï‡^ÿ?ý¬®ŒÑü±2jÊB%*KNaJ0Ù @ GZm1³àfcŽÉ™?;@ gNwSåÆÌ½OåÈת†KR)' X§&Óå~w“íÌ‹;æîñÝ·6yð(qÉF ÖÊtâ4¦‘*Ñàê³†š¼†ƒÛÝêzÆ}q›ŠñcSI% uÉ¢… JLŠV Níþ;&ÂhŸœÓ®HñÅ p+‰å×Oþÿ—3Ô¿+yC`OÕó‡¾7 F]ùï‘`ËE •–¶ØI¯Qtθ·pÇC¦/sç* Iß´*0V-Q+ïJA8¥,­AÉ ÉžÒS= ”Ý…·×¥2wøGsöXXÔ*.Sô5Àæ˜DB¢– Þ}ž Dxê¡Þt€K¦ÁŠ‹&5¸]&>½z –èv«ïA#x!ßÇPÝT~²¯J¨èÓ ©‹¢J&M´´]²Ž-)§þzoµ¥ðè~ï¥*^eˆ¨ò׿™µ‚dý^ÂÂVº—Æ·©Îþ.b» üæÆD¦¤x@¤GéY\_8“z ‰ßŽ…_µ3\ÀnÞXá+ÒPØBæÀWÞ6ê¯?ÐSË(=<øçh¿º"VBn;Wëælñ±E¸Õio•œôáÏÄjuíwšÙ2ÛšH°Í5*3Q‚ëýßSÆ]¸ðî›m|ç¸Y‰ÛhdPP]M[›ÕÈà «súÍ ²É·¬³¸æÚ3ïoOÊy®èbHøÇ,ª‘ÅDU È«I—X¦9Í[HDF–~ôû_¨±…™ ¨ó6çÉf‚ŽÎo3ôY&$çâùÕ€½ºË_ð³Ù£BS° ৆ú,í¬Æ¿½ò5ÅsŠ8Ÿ~T€Ö.Mràçœáv ED7ÐÁ@‡p`zëC—0B:0€j‹)—V5ñß›‘`Ó|‚§¦ g=±å¬æ)8z‚ü'¡ž”`—çcñoY誩šåtÄëM4!½$Ý®ú™{îüÑkÞÉèÅì%urKÏ?ˆÆpW©TäýâÅ }dXK&¡[3Á~\¥H „°‰J¥ç`‰¸ ›DÒŒ¯ppÅ¥ïòîÉN®žpü#O14P`I³haÕá¸U€Ïãb­GÚÛÛrO}¨YsË &¹‡‹úÌfÊe¿×¶ì4>¼‹x;Ÿ7­† &­-?¹õ<в’ðëïÔ…¢n{¡5ðšÞ¿ñ™\ýÆvþý¹á´wÉ™ÿñ ¾S¦jp„Žb³®AëüÀ¢#މQˆ x"’·¡È@uz}ÜQqyÀ5ܼ-#ã†ÓOEjSƪÂa.„eûýÈÈ’’¬¼Ê€Z9¯·?#>Ô®ƺ…®åƽ9VtX® ‘Ož!â‚e´@莛9¿XwqÚ[g–F® Xêš'`r ?%oái H;4wÄ’‡£Új¾92÷¶Jžëy¢çŒs£Êa;mÃhl¿#æ”’°!|‚&ž évCIÿ¶ÛÉØw’þó´L®ô§“ÒŽ×YvÚ]«¥sŠ'Íš÷OÖ§¬ñJRÉ‚²B@ý#µë,/ â3uêu†?PZãÊ›¬DÉEøQ)è'¨áÅiþ®Dn3©S@ê=Ø×oöüP±ñJß>XÝY× …CŠgèfÔ£-'ßsÕEdlÙ6û­Ì<èHÇC Â8Ô°øX üœè¶=?vé½Óñmp)ýÔ:À È>åKºÀ‚;¢Rüø—;€kFŸ¹_|ÕwJÀL!R29Û­Þ ýÿõoÆøX¦z–q}¿&A°èÌÑuZÔLþc½‘\ßà$¹µÝH{b~~ _³ÓêjR4›eËÓ0OHì7sf×l6ÄóÜ’UczÙãÝ$Ç¥`Z[0ä)Õy Ž@õÇ~QŠ’Ëøæ=òaÉ©ôEݵñPþ0 Ži!«—Õ>a£@Ô¾kXT­´p]ʮԆ¾ Oè_òD`ŒñޤCÒ°ÁY mª¼äfÁ´í¨­žÍÒù›nèËL>eD&hÒ4EººWú¢ÇІæ¯’oósx½–LqY›ÜÕ5¾vžuáH©Ã³§É{Ô½BdØ…{Ó2<‰AÏB~³“í=(ä÷ic ˆÔù‡wQ©ÿ‚ tRÕµ1EŽËPÀø ·^< W¥³ —*¥6˜³Kõ/žë'¸íý¦qÖöò÷6Ì*ÍÖL”ov-&Ö”Î#OÙÊ‚ƒ_‚A ìòñ²~Ú/ âúÿ,«ïGŒ–ˆtŒ´|ÑöTÊ$ ë>¼ HkùFÖl2©¾yÿUä•n˧éÎk˜¸Û©×Y“t.=-ªrg«]ŒÀ’¡œ/H[í¼wD´[Å­Xeø¢Mp-îz6ý ¨ÈÁÜ3ïíÅ^“¥¢²®‡ß«\Š}wGg¶(:Ér>XJ×Ao{'Sœ¥+Å"çãx*ãì|Ÿ-oWÜÒH6v9ý¬‹ƒû.rð<>.mX Ð<àÖèiçãçBæ·W±ºVŸ'òÄ8JÕFBÌÉf•œX”6K.ŒX yM¬ð¾ª†}·_”Z¶dÎ٢Ȥt‹nZ÷ËMzNåñ X eZDì›qÛÜç ¦þÒò¿BývàìȉÀ_¶L!`ç—š]£ì`hrÎü¸oc«ç 0CôІ=E­ ñ‰UÎÎ ^Ý< Ìļ—gÃK{•+Ážá­9ÖŽ5¹#¦}Ý‚î;žšJ_Îè¨×ÊÍJLét^9Yü ûvCWÄ[@ˆ®£]œb[ÇäîÞµçW”•nÉç…€GJN¼‹5a‚¼Áú€°Ï_|«ÔsŒN ”úF-ϵåçÅz=Îòôä•vXâ¾û<¶œH?¸ÈF§èOÑ,ä4A»a3n1(¢Ð“yüû78 XI53¸’–Œl4—(›®pês‹?Dϳ~ ÒuxÌÎx±rÔk×ÅûYÝ<'Bº0¹‹Œ½†»’ÁíÐñˆ¤B.QþªWoÅõœ—=²õ µº=X;þdw:[`ÃÜ ïƒæøƒòÿõ{žœ ŠUá|)JÃx–Üeðë´ Zç…[˜\ïˆ,zÃfŽÜúêÊoóè=žÝ§˜»£JØ$v0j9 qL.˜BFZ=Ï*‚w×â=¤óÓo\ú¢<¹°ªÊ€m)U•¨*ò¡Q‚­…ÜY×£ÕYz¦+Éä<|¨j/¹êïÆb§qv¯ B%\H¼Ym5&lù6ô½ôºr>ê_uFcSŸE=¥x*ÒmÝô-[i©8Dï½Ãœõu¹,/d€ 7ƒ]ïuÛñ´¹]‚"j²Â(ˆ¨.`Å=Quxe­×Âk3v¢˜c!%ÒÌ_iÃGÑW$ŽÄÇ÷Šü[‹8[ GÄ&(À;ïÀÔ_n;¢ÿ˜¾áËÒç·9q?ý çaòß \2¥ 7µoª80ž¹0¤bLNÿ®zšvaÉx³¸Ù_q‚’¢øv²Û0ê.;ó¨™À7|ÖCšª÷1_È’6ë úw^”Â&×oJà›7e|Gu‰9 ÖêÄ ÕSxÈ©äŸÔjØ/_Iè²gE'TE:²FmM{•aÏ–FÊ=z$™>‰Ušz­FEAÇÏ­!Öié°qù¥/é–Bã”@Qûæ“\wùÁ38~ÜFh®d­yÉg£ôé[RdUaMD/Y àMáàØ“¨ûbHQ­â0b¨]û'‡eÓ˜%ûcƼ©ý/¶åë+ÏÅ[ÚýdoÿƦšräECµûê^ŒZh,|uzŒ™™,Î EÝçºÝ©}æ{nÔr ð¦>:.»Pzu8ó3,7êSbP"§µôörDL¾B+D{Km™ª˜­ ÁKÿ[Ƚ ­·ËõúIÔëà úîäEï …;àÐi_”8SÔÁ4û×ׂ¦Çw>R&Ôj{aþÎuÝÁp"íDÓ5æáº) ïjé(¢ R!A~‘'®ŸÙÙ@™ ÐŒÎÆ›¤~z§™ÀZ4¤,C-øÚ³s(hì&$q‚åg¿_—œQáßaY ,Œ{™XP0HMç¿ùKÁ\JTÜÃZoFÈŠ¹ª¬™a©¬ØÇÕ¬¸0äY[-j‡Çaâº,C(*¯4½"`ß·<º(dN©ýé‘bÂÅÌY>–’P‹< ˆÝ‹…ß?3÷§nK„Ï¥Z>°Sá`CÑøÂ·+iæ©hÄ«¯ðÆ#¾)%³Ê%fì CVÔ¨÷¢7ÜTgî%l裑C¥Ï=‰vâï ek©ÝL4?ä’42À²;r½;mªfúYkCAmgháÌRîŽ~#™¬9G‰÷Ì·œ>IIÔŽ;îMÁ>;†·‚´Òà¬zýÊúÔÆõ\ÕXŽ(“Q]L¾¶w¥y!Åa½®½¦Jµ¾~‘ƒ&ȧùgÉSG¹ß]väyÑJðŽ~†³Äsèö‰8Ÿ‹ƒÈrà_~x´ c˜“?Z<37çˆL´;8Ò‘æ”ý Òåbð³òv†¯)PˆÂÈ&SXÁ˃Þÿ}~(ÎJ©A¢ÛõpàbUŽ L€IG0’ªZB(/È$jîñh_éˆÈÅq“5éQ ;H¦“öÌ…Ó¡ÅݧtUŠœ;à@{DñÌ‚šµTAÎnªá‡æ©R³8  …hÊñ ‚{|]Ÿ 0I¼øÒ¥¤½öÕ^‡?ã •òµ)o††pŠ©õŽãôë•ÒrIA¼Ìãf&ÄFÿ7ìKí£¡D.€LV%jä>êíkÌ'nÏOUëD• ²ïpV¥ü¤rˆ^ÉYÎðnö@ˆ*ØFw]ŒkŸO̧&ˆÌ}_ÎÔ—í…ÊÊOÿ\ 8]ñb•î—ŽÌü^­¡/ltÐÎMÖU§ÆŽðxEfÔ´*;¾k§»¶â!ò¬‡°ÿíª_ó‰9áõÌ!›& x¨R×õº¨óIuºµ|ÂÆÕ ͨ޳èÂæpŽjp3E+g– M×B„M¤[êû½¾K£D†¿°r›Jðî \ׯLy±«> ©“é’Ü‚‡C+›j޽+Ð1‹yÌñƒõÔxÄ*[>“v§­Rn+`‘¦ÔcŸ8¹`'4¤åË´³|ÙxIh=À)¿ø)Tk5õ-ठpnáa ›š#å„p 11êM=›|šE¥žÉ~ a¸8KɵMâ¢ÿ7_Å%¸¬¨+@”×ÀnÁ^Åp°rãÕ¤‘ø6.Wæ)a_ðT ·H¢üFw‹_NYƒf»‚Ow>‡´_èeÛÌ©Mz‰ÁYÝËkæ¢Zß8ÌΙûX±D²ìl ÷’½’RÁ¦ˆèù|;5þª¯pƒ_¶'²ÏÁo4yÓ?ìogâÎγБxÎ^møxºJ“Æâ(ˤM‹ê>W•°¤åÓýrI™ ¤=( zN<ŸCÂj÷ÑL»7Aà¤#’• ¿ƒ”…zfŸÎÁ G½k^WæÆ±ŸØ9/DZÝqÔ“ª²YÍÉ‹%O—{'°O‹š:-LIT(½¿k÷>ÖrÛ™Oo|õ¹‘%• –G‚B·˜1]Æ‹d½jºÁó^W>€›f½(ôÎ3G\mŒ~èp’Gãûªw¯ã‚0ÖRâljWòíÀ«ñ¨V>AÅ]¬Ó;¾È«x”©œ}ãŽZl08tÊIÌÁm«Ç£0ÓV‡3(O(rÞº–÷Ñ¡€Q²–à÷pD¿‚æµã&ÿì=·T•Ü'5ÝŽ$Ý}Uòlá¿ÇJ_G»@êKü¶®Óá¤Z¾Îq›FG-YtÔ!Îj* ç)ß1$ÜJfÝ©…Áíµ÷žOb•Ûµ[{¸osøïOLŠq ‚9½±‹PB6꺎\¹Ì[ç/¼”íF"h;l‚‚N×›fj:i½éír#*Π{ÒÞ|9ÙREâ~"B¿ü”yh—àÒ…01*H  !¸2•Èëúèb¸P¥ØEŠwHA\|‹AŸÅ ·˜ñÍ_1!o64[Eþð¯yœD¿äB4Â%?\–m¦“9s ¡·Ü§È¿†Á¸¯«]I„÷9¥åo½ø¦ŽòÏ$Èá(Á·ÙCú$ůzâcŒ)&\†[z™Hž¾ÚÎk4uÙÕ”a^G$ ¡·ñòã7ü¦tdÊN0Ä“Ö8Õ8~Wg R²–¾n©:4‹¢æ1´££¯#šj'ÑN­ ú2äsWùr$ ™[eïY˜­.©Àö·úÆ©&‚°<âºéA©S#›6žæÁ}ÛÊŸ553z«r¤ícßÒ™º›‘Ã,p0§ÝW'ªÄ©S§Z»UsiÊGy0ô7mâŠq&’3(Irß–­ïRMéß0ý”z-c—ó{I_+V(M¿´Þß›Ón]°¸°º4æ~Ž*^È£ÞH‰€Ñk›çˆGõ~Z¦]-Ov8Qîâ˜S½ÈîÂ2_ÅžôÚ,l}Õ¨Gþœø08¥ ÙWèxŠqO®¨5lâšޤ¯"¤Tg[o áͯùló\>È>‰¡¬¶3_b†Ôᙄ—BòÊo·K¼»ÊäÊŒ†he2çצ¦pèD&–ð`×ÙÌŠ‘íÀÑJ§æºU“Ý©›¶×™2ÈÂ-v¦ƒû°Ñ²+?y|½SW"îÖ“b¼(þ+µZ<¥õ›ÇÛý쨗ùw~0|WX7ßÀ#ÈãíÆùc½ê_­Tì"4eɤOx+õ‚nÛn&¯ƒ&ž˜ê®d¢*H“öDVË*ë=tõïN½@-]l—Ï«wˆº¤×ó¸JºÅø×.°EÚgE:›7Î&jJb5ÖÎ,i,+Ÿ.ÚÏ2‘xæP^F1öÙA.Áª"£e–oÑò ~5wz¿áO.e¿m¨‘[VeÈQ“s éc÷Ô>ßžhyÓ÷‚"kU}Þ¶Lù[3:÷¥Ò($;ëz×f‚ÜÑóšªÊÈ‚ò)Î<2'$|:–|7ãä ’:¼#ÿíµøqm£¥úHÕ>‹Ùsý¼Õ‘Îw4®dÁ8Å„ï[¥$’ÀŒKãήm-bÑêûè@n©@².5>š9¿t$2*©+Lb‚¹°Œ¯JÒeéÇ%^²¼ÒX@nDšÀ?Η© L4þôŸµ‡EÒ“x:G¯V„£ÇœKÏiØÀýÇ|ý¹ç<µXÅW¾c ‰=+kÌu8ªÎ« øå¿¸ª÷Ce[@䜪áàŒ-r7D‹QvàÓálŽzó镙͋Y9¨˜¾½àbÏ÷§^¿/M‚ƒk{·fë´¡Î ¹Ëí% ˜d‰7§Ó‰’JEr1ìk F‹pÕVÐXâ_·6k#aTIQôñž—<ý š«_N0,@ˆîåøét@7ÉeŸ¶xàIºdàªL…cøÑU£}ûê^2 TÏFy´Tz'Œ:µ, ·{z~˜æ}~gŒ>çª ÀÌ/µ‘ÜÆsµZÂ$ÕbÒ¬òȵ° †–*_žG,Ðæ1èÅ@Ö$”©ÒÅ\ÎÖ™2C‘E~3Ü(Ïq›«³–Á)"–Ü~Ç"íNðZÕ0aºJÆ?ùÅÕ«“QÕ;ç—WbüUBr ô˜$ 27ú ˆ:º_û/åÜJƒR–gæ¡V¡HW¢JСÀ+hy܃ûÏ E0ª¬H÷OþYéËk°åê±Ë¢zs«]àq9)¦ë~~ÕÃ(5é{\æ?#2t`Zj1!3Þ’â¯&a™ºF÷…ê¼›0²tUôÕU¼½\íÛiQî¨xþ•ž¡÷"˜emôwì7\HÄv¨;¾lðVÊ>ÂFêŸHMÇ-_œ· W°xîà[D]$IÎL­Zt5.0e/%µÉíöÅvY…»:ƒ§cU-¾*À½/­ÝH›/ìII±¤§‹&æ(#åÍ®ˆÃÇÇ…¹gÌ<^²~ ƃR.lìÞHÜü{¾-†o‘õ0›öÙ[‹!3 =êèÊUñ’®–MŒ 0²xeXãôD%Ö¨çÙïE#oÐ.x‡Æ-,RBÌbÃ(CÍî!êfTYâs— ì—¸^Í„×9N‘©õÃ{êµ]§ÒÛ4BèÃðk¬l«õ^¨ª£“Ã1˜¯½©âíí)e/ÎÊ«þËVqy¾“Dßa¬ÑkGmxÉö¹&F« ¸+B òÜ~´i˜£²R}‡a·Ï¨/Úú²HNo /ÈK "2Ÿy#ž‘f*Pؼ–G×âË‹ƒKejV3ÞöÙ6¬ž…óOÒ² ¥Mk‡¶G‡=èí÷ÃÌŽVvÌZˆ›–Ý"%Ãëz§¬3àW§þ¯eµ@¨ÓÑQ¦1D@‹àØVR,’Çm¡Ÿ,žlw&Ú» 6@ß§'ÁíVÒÔ·”D+éÚ9£ßn°›tdGÆÚ¼¦&9ž:‹ë¬;0¤tÂ1/R6ê¯zƒÔ$²a¡¿ ãrÀ9"£¸ãC³ú&¡2žLÇc Qd/û±<™öÿÔðfþUÝFyÇàÑzmHþ»Bd»Ê ×éªïzày~;pC÷ˆ7Pl': ѧh>‹Ÿ ²ËïêoÚ8 å~da|ùpºC>' 3ï 9NŠêU.Tw_dÜwÝ‘ ŠßǤ@=Fz…L‰ÔPÃÝdJ)Ü•”ý¿xQæþRE˜maSTŽK!ªŒ«ÇÊ]û¯ÃóÌÙ¦zu‹ÅÇa¶ý–á-@¶FßTTÝçì;²M;•Œ#,˜ãq ÍZÔ7´=ïõ3¸ë‡¬Û_Àvd¨-BÅG‘¸-Ò¡Ý^Â4,'yÎÊvnæÐgH(Ó4ðÑþ(¡zùE¨AÙf.8ícÆx¼ïO¿ž¬Îï·ƒt¡+‘d¼nôm[ï³×öœxÎå>ËZ„—á'VÚFOa=¦Y¿²tñ¬ÿð-²°Ž0Ŧä-„îî@û¨&0žx”ða+Œ~sÎ5裋c½º?Ücä|¬Ÿèé8ÉD_qóåDóÈœÈ :qñ߀Q–ª¼ç0|/6Fzâ`­¤)CËu€Û\±|®àê?óq¯Æuøâ€‚­ÜfЇù<^¸ÁwxÕVÉ/qº›mùyQ¿çÄ‘NÎ6}7G©c¿¨­B Ï=gÏS ˰‹[¹öS즇‹Ž¯3’ÅÁ"vîD9,c3©»ˆ¤àÊ7C³d…\<6ò`´mô4 Æ'¶ù›YY³»Á¤o“â>zÁHkÿz,éQf…ÌIGvZv„ð_=ɽ‘Y¶PK{£‘hØTu —¶NÔ’aëUýŸÈl[q\«óÞyû£5÷áÎ~”úxNæQ}5JsˆÛ>¿½tù™Õ×n\kÏ=‹€üâ#ž~1wCpš $ø²ØcDXT?¾õz‰§Åþ¨èž˜¡4õ'JóÆT±hHÏa {úÔøtóewøÖ›"|¥º˜þùg®1I5¡«ÀtJ¼|•0£Ú%×»ê(›´»3O® Ì 톗òï&Äø»QÿD%,ýY—û¯ùè/€{2 þ²ÎS+PÿÆýTRØ™iÇLoo`t=öÄAHB3Iêh@ÍJ3pí,žPÏ3=yH(¯ëhx1ˆš–®Èâ¼1ÝO@x¬|{9¹R Távºÿ­1…'=ÉShsƒ? yÉðo§Õ\a lÌ"–µ”[ëZÖQR‡ð'º[ò#þÈ“mÎ^#´AÊê™GyöÁTàãÿÞÁF7Ú ‰‰äœ9­´Q£®¤Üª ¸õ>_‰(!\sæ,KÎñ Õ¾ùŸÇ¬zlŠˆnjݦ¦Kƒ³.>$Ù;À‰~–RQ¦Òv¦"ãÂl£ÔØÀL‡Æ…ð°Lô|Nc]Ÿ‰¯$’•­ŸÝJž²ª;²Aµ•‰ö/9=D}¥DUC.ˆ0}0 ¬ù·1NuBÐì1No§±ô°,eJ‹å) ~〽ˆ¢šôz€;žôèÒ–&B‘I ` Ò¼bÝfBŒ§äò+U^öžìH@·Õ°­ z‰ñI5´»KÖeÂ:@ տޤj’ç@#æ{·I%Jšûæ…œ KG8ÿppûlhõ‰Ùã3hDàS#M¬+ö(Z-1ÿõát€T·ªA‰ÿæÆøFä˜ZÕ¦Í{k*½TidòjÒŠ¥i4IY.Žò­w¬cX:U½SmlÏÁ›0É›úyü2¼ 4¤rv?§@Øæ ¿VŵnœR gÅüê$6÷dìtˆ/Ù»X÷µ³®~žPñƒ[}r,¯\¸Ë=~Mx»YTœ0Œø¼u¢Ž#]¼6î3àŠì1¿3àÆ>v’§Jb;dÕVôjúãêÂ{ÇTZ…6mW3äO û!û(6¤-Ž”5‡‰­±’Ö¼¶±ßZ~U _ÜelÜ„j¯ºŒ«¯BOy5[éÚB|Æ÷kúØeÃ7Ÿ, &ËËU“²÷£E"2Á·>S×!Mu.löê Ë ø œ5Iøt¾&÷­Ëü5~ûWâýdn»ÜåyïÂs³ÃC„ËÔùé æÿÙÀ-¸^ghw`L £ä,^¦¢g}ýM!Óø(¬LqæQ²‚‚,þ黳–'å€Aüêádµóé?—¥ñC ø{ Í ƒ™÷/Ý”O}«&u.•éºß àÜ”·âLó‹­¤¦ä]ߦTÇѬPŒö¸¦k¿©Uð!»nÊ-áu³ŽG÷»0=øÌØp'rRšbŒ“§C¨í@›+|¦^«Þ—åçfI€óTͦΉLÖ]«á5ƒñ]ýʼÔ4õ 4Ä-;½¦È@¡Þ§„ƒþ«ä‹vEYÃâæJ tTÞ·ã»Îr$óÆRf¦ÆI§ø ˆ5¼߯ÁUóå'_ÓÁÊgìØ:iRcÑ; m­"µg¯y¨©Tˆéz÷b¤úlúéþmf¬ÜÚõLôã;Ëu’…ùcÀÿ(çf¥5ûÈ´bðXô Ê((dz8¤Ø»•^ÕÅ0­œýGÝŠü&iAT9 †ß4¢@-„}ðæ€©¦ÁµZFWÓPQ"“àqÃÒ$جY­ôl¿àûU™ôwR²La«º‡„5+˜Ý¼;+ ÏŒVòœø†ß#¨ÖVžIý²pºL{ýàÕ3^ÿf7èºvO#1;KýÅL·t:7‘ 2ÐnN'óT¡Ê ¬ÞCí£ù“0ιH•ž-Põá‰D£Ò¡9Æ®ÂrZŸ¾„º‡jyþàȪ6¡ —ÒÂŒus#Î0~»ÆÎZ ;–¤Š·5*÷ÖM²Y!ÿm;¤Òý‹FkTŠr]ß/²Ó¤Ž~È€UPUH±®°£—J¨%Âi*Ê´‹L´{€JytNµ³uÑPŒóí7)"Y„H'JY „³¶ÅcO¦«÷ËÑ£¼yì1c $ù½e$èƒAdoJ; ¥ï£•ùbm­•{ú?áãxÒñR»sþ¨@ÁöŒ?æ°¹¾Íb|M%~&»8oMîµ_3ÂsÞÂG|ƒŠOP"ƒÿíVK€\Ë—TÞ¤ëWf3 R”eÒµÆ?/"þy(C‘ à> -hÎg(°ŸÙC*xh«!/¬(Ž4º_ÆÕ¯Éš£Fíð¡.¬•³'nÛQDho->Ù:® DIÞØFË{Ö+E>oôlÓ‘¯ë$É3ævéV?ÛŽH£~JÒµöýOõ¥Àž“fwÞ4¼Š³\w€cv˜Ñaó6ûóêÓýÇ;`昮sƒíò>Ž  †0¾„Ø¿?mnc¯¤ïVáRº d†‘ ÌEnþæM{·Ë Ð˜–ËÅ,:e?¬6Ï,"ÆÁBì­gÓß5¾ß¡êO}· ñ‘¡ÉÒÌ.„0·}ÀŸá„(ÞÓr¦vì¦[;=èÿ@ב„ÍòbØq6V1VŠR¥Á®ÈØUBYÝà²Èœÿ´Ç˜uÕsÍ#”Vÿó}|ü?Ñf”Ö^Ž4€KÕwO5>Ò¡M6—6mJ(]8º…ý¬ÍôÄîÁ¼/þPY*+f η®ëx86$7N­…çãHð³\5)Þ¦f±ËÂÍÌsŒñZà²G³Åz¦Ç¼éðŠ%ÌC+ìÜÉØü²ÚÓ‘'cA“‹êˆÄMd›"ízYÕfM˜j¸5f¾Aª°ó³BǵЅ‚±=¶•P­öFרxÈxÑýƒ,H”‰†ï¥På-~bäÖÔ9À‡Ä‹('E¯ìë{Ðo×\yͪš§•Ñ ñ×zŒÖ2À›ö?‡¤ŠõëY™ãY/†l¢7] ûäLig~Ý|*^Ä‘a¬uPôÜOЏ-ðíÿë×@„‡FK¿¿îS#÷0¬¦Upl¼ýWÙÁàXØwá—PÓÂBYß<D{ôÑ„ð®Ë@×”ÀqËU±Tj¨{Ö?é£ámC1-ßK°Zã³F½fxl®Rï°ö©Ÿ-™nœ!kØÆ9/Õ6„9,~ç{p·ülž‹:ãdl/fbÿ¼!XU_2ªÎMàϹœßö&ºúÄ\iKQlEâ–ê9xœy}ûqæ!dsÙu>|Qb^0IÃèJD™Üs°>+„ú_…|ïm.”ÂQ²ùÏUId«ô ‰ˆÊÜ•0ó.ÙuÓx*ÁF›¬&ÖäÂA1¨>~íÿìçAŠK®#!8z$+1çCþU „Øý7äô2&káê\¾–ŽÎäR•o„éDݪÛèwt±ägæj䜡(‡.VI·§a3:ّͩú)žÉݯì¸tW[…lW;„‰ü=sÏŒÏß¾aJ\ßä°E»¿ð¤^¦@vúoÕ5ƒs ¨Ž¸¥Ã¢ï§×¤ço÷}ô•Ū:’‚xJ-g“÷ +÷jÛø¬šÝ¯¹Q3„XW´N2ûká„ÊYžZ²©ç¡Né̺«â‡ ׆×~•™DLàÓHg°mIä*  {;I«$×õüŸöÅõ©¨œÔÄ¿Ò[s2Æ*¥šôbN»õ:ÌzðÚ€|Ùµ˜YO]¹aç>§>ÔÚºm¸Sm72гG‚èr#V”B]úËŸŸïa|éG ª„ PbŸµœ&u‘§•R¬˜=Ѷ)8&DQ;~Ê1­¬½™LK#ñE3æø¦úd€)9fMÿ/ˆÛZôÉîpÏ k]Vxk®_ÆQ<ÆýÆŠJ×#DÜø›‡ß³àܹ eNÓPnx1Onê‚ ñõ•.q’ÒÎ,b¾ÄEO+ÂGÙs!]ϳÃõÚà‚–,.V•d”Ü:rÞ ­Î•£² Dçç…ÝiŸ/ øÚnei„Óõ2°ýΘ$ù7›wN¨ù0Ч¦WŒ*¬„]lI‰¬I¦u‚åZ÷k&šE6W¸þ2˜k ¥8Áç+MwþI$màCÖ—ÅëÖMëE½Êl‚¹k^|ÁÐ1Œ—”c¢O/¸+aa*¢‘~,™úGj%ˆN„|Ý©µ*B¸ugu—"b ¥ÉP.Úé'>,o›ÕÚêP ,­—Å ¹ñ×Ã×NF©s? »»èvÆ)ˆ8ѹ8 Šdº”쯊3dtži—2oLàûƒÆöãø2ë›2±F2ÊÂT"¢läg¡ëØ÷+Ø©ÎÛo¢7úûÅh ¨+ ƒÙ¾'ÌóC‡þ&èKIº@gP-I¥e!m“B¡W½Ô´µ*X™ÑãòÙq‡èqMœ ~LNDiïla.€è¶0€Ê<\¢Þè½Õz‘âvD¼onš3ͨåXÇ*8F¸Ìøý'¤Þ3µ“¤Ž—‘î´ g?“M¿´ÂÚ€’>†ß¤ŒÏ8Õ‘t”É+G®˜&ù7㮽h¬U€ñBXœ2í[ÈBC’ª51ÏEsÁTL½€ÍÙ/Z«o$€ñ2YÒàWFŸø¾…ìx( pl…Ü¥À;fŠÙ“l†Þá8¾âàÀ§¼4‚>p‘«Š­a˜Þ€ðÊ/ž!_Òð)Áz+ÂMÎÐb z¢GWU –²½¥8K²Ãœðî¨jäÖ‰z÷£†IŒ(üá¸Þþ¼*bËA=#ô‰$Äõ°ÉWÄrö±ø¼qrh=F1mò~¸CT@ [Ôrí¹ó¯bù*ªDÐ8B#û ÆC¾ÍÞŸJÁVš/ LÚ–¿¥,þý $¦Ì^ßpGÛŽãÚ«=2µÙB~Œ"dæH6Pì_5 g B-|.ñAD’ÿÉîN¦®S$‘}#n«´ ÊÚ-à¢óq¤²—mjû}…±¥9‹ßwüfƨ᲼ACù}ä;ïP;¡P'1(вƒ·Ö ^a˜ËG¤›…óf…"LB“E‹ç*Ë<9`ñlUZ§7%G@ ‘Õ)+ßX| 6éo[’!¿ÍÏ®€¬Iˆ]ÿ2De±™ ‡‘<ŒV3¢e=Óìo.¶Ö™v*ÖjoÆÚ Ë}©ú¾.NOüpú1kZߨ·é3”†HXQœz o¯mÆ \8½5MÏxùâà>ʨU‚€éŒÜ IIeóèx× ©)Ðóy¡x¯Ä,œŽ€JృÛnð ×^/ÑNúH\â.WÀ‘¯ð˜Wõj1džMœ ­)¼,˜¹+M7z,Nö;×Ôe_zÇ«ã†^@\P'Üe(€âuÇîÞ½ã¤jÕÚfÛë4·ŸŠQ=udÞï’ûpž8Þ¸fí0Û–~bdv.ŽM^3*ó-(Gö‡N}U‡;³qÎ9ú9jRƒm¯<ý¿ìÈ¥¹É&€KýrãßЇBš]4¸Ÿç®fƒ“ÉpÃ}S¦sBÒ¶¢¯z8Û7¿ÇÙÞ¡äb˜>›²ª¤úzà¸AþÇM¥…º?‘ú™Ó¬†9Œ]xÝ.øN‚OçÓœŽÈ bä-Ì ZÇô2{åú÷À_µ*h2ÙrˆÁ•NÒ¸øŽÇ«+ÊbŦfÿÃE§s—òÇ«VSR‹$²?s/— Âhvè’€ ÖͺÆ7OèÓå0>uK£…hˆäøX­Àë¶šíýŒÀë Ž´sÚ'ê9¬XCî?¢.ic¢Á®‹/ÛÉFš5 UÏUñ>VûdJPÝÌxÙ"œìnnÑϰªÆy©žÂa)CÖ¡œzPå=gh ÅóSWǨO\‚V„™_xÊù9qx¿ÒÊ­¶à˜“Þ÷(´Êe”ÕvÂ]È‘QÞñi‚zÝü|Ñ9ß”>Ž5Ÿ‡M] R~m0áËÃHñ6xÎ["ƒ¢d&7üèž=F!_¢Ûyb¯ÔLÎ!§ á¹Ç6½$Þ9;«ïÂÇÌú–Û ú5¸oYzÝ`‘³3óçEÏ_+‚F ^¢Ý4â†?ú)QËþã`:ËN|=lóœR©m{˜ùˆJ9Kp–D^#0G:ÇËÄ“eÄóß*©_@¯šPc»3gñÈ5 r‰¯íknœ²6@ª§ðƒtßÞ KäD6í<‰úÔ¢R¥àþû{ý³.ŘÐþ俆Jf_c|“ד"‰•†TjN.ƒªì#ÄÕ}A‚Üái¡o'Å7¨o—YûÛÔ¬Ô0ïe¸ÚRÏÉVH|ñž) ï*åƒeÈ 6”5†æ‹û¦§ìZ¬—–V5i êº‰ØEtš5ÀXÄkMì¶Æ=ÙÃÚ¼KÔsW·ó/´Q›î"ëÞ^ðYyŠØ—²>¼~ëÊŠRä:q–ôàLà+&:îò™ŒòryêˆûDÙœ8U./ŠV¹^HSSã­8cëFG.#Ã^jNx‡_qj?RNTïY4¸X]¦€yäšìÛ`S¤S–²zŽØT®\1h>ÊMJ]¯âoST̘Û™_¸Ç§üË¡ý/Y”rWÊHù#Gìóð_æ=QÈ/#ü"âJÔ…œ^,bòÚ‡ùÐ- ÊqtçÐ*æ÷nC”LVU7GÞ©ÉÔi¾’¨Ä!Ò3</K•¢l/,¡ŽIcÛ7RÄl¯"6ý¦…Ý%[+bï’Ìüípn0 =}é÷w×þ&‡/†wî ¨ÆSÃHÚEŠb/êeê½ÐÝ=kݹ±ÉÍ1:Ù!6/yetDnˆ¡±vš“Œ·V¾ã>4&ËD>Ä~,ÏœOäÉ€6±î°ùü¿lKÛëdÂÞ'jîUÝ…ÜH5^¤‰´€™s«xY4¡ ?šË«ÄSî™SrPeMaÒÎyv¹3[CO(—’®m3Ïr¶XíEe1oK}nØ>?зL‘ -g¦xóeo6µE6àSBFjgH/ºŸhAT”e{E ÅðpjÑì݆wg¶*£‹NuºÁ#lQ߬GÏÿ_&†ýé†Ëö«z²vÂÈ« A‰œÄÌ<+w·’Û …Öñ\PY½Æ Rj$.G;›°<‹\Iç(•ávkÕ§7] XÌ'kIWF) }á/ªº˜6²–c³ç1ÂAw>'L¹ßÍÍœ>ôGêvuÈ1M».غþ,·WÛü=FÎpY¤¢Èú k?O¦º …²iž”g4aêâLrCÒÞGÕ™³nYM¬ÈM#t¯æÿ%éŸÒêñÛü¹Òc Ï®W2$2ƒni”È]åÐe?M¬JÅl‘ª¥ü꼋Y˳®ÿ„÷ª 6Jp]Æd›"×ù¼É\¢iú–ÏØ@ Ü,”4”䪬á$Õ£t}"-4…—»à]â3ÎAJ¾o¸È¬º4O§=Äòå5+ ozÙAÌ*8ôuk‡³¤+™¶¦ÜóI½¥"ƒ1÷±AíïÞiÇ|ÚÖ[Q8؈®7(J© ¦¥O²ûªÉò>HWñD^Ÿj]]{_·èɯ¡GÙdTf©§ÚÕ“ýþ4:‹ @=‹ŒÚÒJñtg»uอ=Ä^[:P!‰vÿõ>p@ÿ½ýºMË¥Ö ©’@»v2X5ôXüóõßÊ2@u7±¬¼¢*¥†5~ªŽí2YqÚ rÿ‘2Qú÷ÿ{IÀÍ€¬_•ð+…PŒU×Í1òT‚¢¦–ðÍ4póh9ñ.h¥«S\,Òs®¹z¤…æ­à;üRîÀSÍ}e¶ŽøwRÐ 4>ôç‰õd}ç?N̂ϋÛÍ;ÅËÇ¢Ðz5 M xµe"¡°I»¨¸¼F}ÄÚpÒÉÀ38s ø¬2žO«‘”§Ç{žz@Ê|²…5Ó®“΢åa Ïçaõì§Ó ¢ª’*s/ðGB;¤ã>ÛNp”ûæ_p¨³Y 4øð”MGMµ=ÐÖ`¤À Þ¢!Ϫ¨3m,!ÛSqó>¦ÁôùgdÀŠdTZ2g»>SP¯ü’¥xFÛ-_åÞqƒd~_)çOÝâ: æ§D:Í ¼Q)¬eÊT‡ ÝéÏB ‡âdB@Fw7z]UgàPtÊØŽ—Äà«1òÑô­½©µ:G>£@ø¹?°e†{Ïøér½9È—Ç©°“rÂc OŠâˆy¥ MªîÙ·“T ‘Îá=q„˜pæ t*ñ¾u¼/¦ qµÿÓò®Òí¦à_²Z&†©&Ö¼1êõ@ô?&ÕÙ«kP^ÑÈv¦™Á¯¶µÖôÜNÅIÍ,\v!ïmk‰¶¤YÊl­a‰Xž9É53:<ñ¾?ÏdòO?ã¢Ý.Ïvš€°ÃXÄÚýZSÌ%ŒV—ž©¤ífÁrÎ] ¶ Øtdz¡—cúƵdeÎ$_ìéÃùÞñ:¹ƒ:N9çœù2šø„~ÊLGÔ+§è%Áÿ’-pœT¥9¦8ßm!@X'â"10LArMGÐßpÀjpì9nkF寑þ›ÁùsmÀîç¬ȤŸZµ˜wp…ÆŸBJ]+ u%ê?!ܱ* ψQlÚÆÎOyç÷"N¿ýÖ=›zÚ<½ÒÅ–¾úVìa³_(êÂ\Y}¢~±€ÄãÛ$}Ž\|•ÇÐóË#Š2®žVb¥4Ì3Ý_—U@ÖÃRV+‹ +(µZÞ*N ¿çè¡G!¸¾±£iL«Ñ #„„8G¬yOÛ¾ Š{’÷\$7#¾€KtEÌ5À\ûÞ»I|)^¥8j~èd•w ý I®OG¡:øYÐzÀ€‘'®üªÈÑŸìUtg ’ÄvFúôbY …4s}<‰Õ§õeýEñèû6‹* ¬p ¯¯0€ñ>zゃk+€¤¸x¢vw¹dØêƒ¼Eûë [£crå²ÎÄ3G¸3xådÈçÑöýïͱ2³_Fû=iú æ„Üröý( %VeÁ‘É(Š“; 6ñ´®¢rÁ2p4 CIY„0€ß [Ž_€€œB|›ã°‰]{—B’zn—Ë'Äú FÒîø¡ ¨``7ÍSìhö³á¼G@9¦¾c«› ­â±'aPgbÙ"“|­¾ü˜ZàÎ2j¬²š±g é&(£è2µI¿ñ<¢–Q³ÃwDͪ.RGÓV…¹OàjIKÜÌç`J–kÛD˜˜š ânÜ_¾PƒÖ[Œ ˆÜíÙcúߥÆ9¯µÅ¼q×Qi±Ê›³ðü' |nî3RIzrAS-¥ ÉÐ+)úÞ-pq‘¶Òýl"þsjƒJT ÐàVÁʧX×™Xy^àrq›­”è!îXd\«p­¸ £ÒE¹y ÒÌ¥¿cb4™6ètfKD ™BÇ_ô”°òÏ'Q¶T‚ýê.PÕõBêh1[z(HÎþ; óTâå!ç' 8•0ócfþÝT‘W<Ή [ CµU¶dÊ;k Íz˜µJL•´Ii€rúÝÁ9Kæü¹Ê’À}®ñ³cÀVKÿvè)Æ#[E4À”aqx•’¯ùÉÜÅ/â°êUXÚ¿WȆW›W΄Ðß<Ü‚G¤[Ýc§=ÂA’ª£¶Q‡Vºµ"¦@ÐÝݳÛT«ÿ Iƒ¤ukð|~{äÿèCŒ"û´ìMIoE û½´§¾µ…Ð.W<&)‚ þauâô´ç9cw燚Ã_¼Ëp†ÎƒŸ³ì·gÈo’Þ8žØ@¯mœþÔ;|擜°ÜÙŸM!Ç>ðÉDÛw™|³kÔe8ç ýË_-¡c @q +èb‘œúÙ nwd–“¥u“I­EUÜG+†ÊP»BßΦRƒƒKLd¼Þ EÒ Õe¯J ÿi²r úÍûW ºÜÙEoQ¹C‘.nñg'S‘ÞšiH$ô£‘܉W’ӆܣbIsNSŠÆ‰Yçû6cýH¢ç=ššWµ$q'\ÆìÑýêì/HTŸ“o¬Û¤ÏºãûN›dEVéWÑU-Â-—ûIšì^+Lòš;O³ú£»,ïöMî¿ß…A´÷c÷ÅùMä›Î÷ä~¦ÀôziÀž©k/8Fâ’…Wλ|è5M³Š>bËÆeÐO²œP‡9i¦£$¿=]£øiP6ükð¼°;¸F¾|·¯#/‡û¶øj½?=9hOrÓ-æÔ‰@Z—i²ÈàÍA$l„²ïËP1í|‘¾Rv<’ß¾+"³ò/ÆÆöWŸOl®R2=:ÎTžaæq&žc榆²du’ßÖC»JU¹Ì||]å8EÈ%:\âO%p6øDÕˆû"'I­’ûî%9óa¡`ÝúgLÚDf:þhÞ#GX]ìgä¹úìK®bd ¡ÜV,pà ™=¸T\½9¥Ès9 R2£9€.ÐÛ¾Ž@ÎôkFi”Î-ÒO8j…Râ§Ï™™ù•Í–1Ø8rC}ú]õ/f»y=`öÀ^!¿GAóÚónMÅÀ «(ü§ ¨¢êöò„G²Ø=§üQ‰˜J¹ç=ÌËŸÎþç<¢ž¨Éí¤7Ñ׳]M$ƒØmF’ú\º@/ÝÈâXÓQ¯éiE¨owž!¿pzsJÖ.ü¬¬m³{+À º Úµ>Lˆ^»Å(±BуgëÎAørÆråzz&SuÀa'Jú^uyŸr†š4ŒÆ}p»z-M¹ÔòÔ4cöÈ×˪ww û>1V±â_LÙ.b‹:öݯáNĘýÙ½IÐÇšp-#cŸœ9¬z‹•V„ a|—æ¢_ú²8§kþñÆÁz7Zª Å2ÄÚU‹&Ñø©Ñ ¨ñ/Ý {µêÛM ¬ëý€#yÚ $#¸ÞÅbÐÕcìJáÅŽÜ2Ê´Sg*ʎ¡™TÅUõA‡àp1ð8ðx;ÿ( £¯#ÞâȃKPQź-¹­$µb†/äëÅÒœrBOþ‰HŸ×zK’""*¬n£Ñ‡vhT1«xY2¡ÞHµB,Ôù¤Ëó²Ñd· vRËaê‹UF‡àÅÉæ-ÿ‹ªbK«—S¯lòJ;Êo7Pkæ¯Å³%Áóãç~’án)¬wÕÅë©f™*!IT+ÉÖøFš¬8ÎJ=é ]fÕ«Ì:nEcx˜{;9/áÓ¦ÔN±z[{ïôöüs-ñÞÆ× ¢("ÿÌ%®œæ’•w½(v²p N*I"[ÝÔ—” µK˜›á´äK›Aø£¹›7¹ñ‘ž+äw|ziP­/âI<åšo-ˆw>|Nm¸0È¢ÓNBÎkvë¥ÌĶ,X:»ÒÐK¡"ˆçcÚªÆóƒä6Vã˜îÝ|qDøl/A#žo•ëö¾Ó¶Uã! 2?ïUV”™îåß0q½·þYÔoëÜ\*t•lØKUèfCãk,©6I|Ù¯ðŽ¥^d5KB›ô¨êv §A¶È=öÙ7çŒ&¸pÞ´·Eœ.L4˜§$‰›dñ AÆÐ0>ZQ@2¹äØÃ5;çlÆ)Cuq¥÷½ÇcÙdÜÉù(¤Ä¯0Swuøè¼lSãÒÚ®Óådåj.uûÕ<©j'YÕЂžæ ÄªãïåߊݮØýô}¡ÐÖ²0\îØnîk 2V·Ëã^g¤Y@˜dwÓ4›$€¨aÿé½?ª~¯-S|™Fú9)ýÁÛÖ©’µ ”¶;n'3"®Ìò¼×ûêïÈÑ™cfÍ¿õGo!£mBÈyHO•À®p1;·„ÓwEÎl0ê‘$í’[U5Ç‹‚CûZx‰œ‰Ð%¹¬ÇfI|û`ëù:7lL¶ß±ûé24uS}ŸŒi,^/E˜mÚE³< À5¼”!J<ØöàÚ[m4µÎ ‰á°Ò¥ð W`G°H‹Û÷0æ< ¾)È#É)t¨K»ëæÿ—ý £&áUK…KæÖmháæ>íÞï­ªˆ»£ÝV`¨†¡'?:ŒÒZFæ¾:ÉØÐçš}*ÿ‰³s¹H½guÍRŽæµíš™â ]#ã¾>ì!® nv¹ Úµý9Sß$£±Æ†9ÝË„QãµJ‘½×7›¨‚)²tr±9…­,rž Ev‰JÚÿ9Gç4sÄ>ål£kaM«·ã4X‚£»}¤ Å{ìÈéõgI ÔáÓù#ì·]u(¬%$'~1W1âAü}I/z™­Ó·_Ѳˆ>¡3A‰¸*ãòÖh¾„͆õ‘î¸äº©ýð %^}›ÙgÊCD½N×ïèë—~P<,žï˜#%Uܯf5Á0ŸíÛ:ý3D¢¾ ¨ws<aŨDÕ4âõBÀ¥\hœ‹±Oé~—¶J·ï§ñ2ºÆz$=ΫRêªÿþîÑ‹Ìc| AeªÿÒMŽaަ ÖÏøâåÁ¶;5^õ¾5–瘑`ÙÓAÞ£;*v=C–[ê¢óƒàYAk`¹¨?Ó ~ö¸&xdØ®/è æ½ŠKﱕaU˜ BèùĬ³ù‚nÓƒÁ v»,¢®ðÁ&Ýš`¦\¢eœäQº±& O_‡¤ A¡ °¼Ç耥!.»j.O(Dé#$YÜ*ÛSUZm4‹§‹É.ˆ-|Ÿ´r Ye â +Õig¾°Idÿñ0RsN;|z Üm>ÙÄ=‰fÁÒ€?—R0Êü:Ö9ÊQMúNEÌÅŒ¿O= Ty‚ÆÉ«Ð¨(ãáçóäÙÓ̰J¿ö˾Z°ÊÖ.om[<Ì"±É8V±Ï€¨kú³äo¨ï ~cö˜IÈ`è6TV „Æ^dÎo‚ä&lWÕ¦XÓ™2üÚvtׄ´ˆBBå¹X‚ÿ>ˆé zîòéiñ±r6è$­õp Éô6¯sDÙ#8L¥ Cûm‚ÙÁ&;«pŠÙè9¡¦ïƒ7îPµ¬4&mvïMaСCúh|!r~ÄÖÃdvN b£uÒ7³>¸Ö*Ûü˜áZ÷Q@÷Ní²Û®»ä}Ô§_X$D¢öDåŽESiÏ÷;”¯‘¡Uã-AŸ>lƒ˜âêô}štÞÞiM˜pGbõfì‹p›k ŸÈ™yÔÓ#ÛöóS”²Ø»”`_\~#¸iq;à‘H§Œo…iŒRrŸ±–ˆÿNSù’U‚xiQJ<‡Ü8»Z „+è©¿ÛÞ–¦§¸WƒŠËÅIñÊä4®´q í¿Æ d ¬UÄ AÈ𜟔'[ò«+øÓž ^”„Ó°×´ Ä.Tdžå¢úÀYKs0ów˜yÎû3•"ëÐ5à‘x)^3*mÃ$s[»þ8ï­„ÙÓí_SÝîûu¯»÷5âºèÎB+ _óŹÉ?7ç’»B˜@ÞÔIªÿT0Œ”ê=ך:3Õ°ªJG¡AÈèú6 ²ü ÅVá.¢6¼¦‹óP#æCL™qç»÷Ê9``ØöLoBñÎÂí§àþ±°Ǿ¶ÝÓ%XŒòF/Œ!º)Jå„ÌÛli·RsVŒ˜ É|v»VÕš1zÐäUBúÁö6ƒÛ=)ðCºáÏ»JáèCürëúНûÇ©¨Þ0Þæø[ìéô“ÐVɵõ üðŠ!I‘ÜÇâš{âÊ3PL•<ŽYðÒo•äÚD¸Ñ¼'¾7Öb… †`Ž+KfÓÖ­b_e R£íº• ¿œÖË/£HÞöl!fòsó˜`G´h÷àΪE݆ý¾"„%®nНžTjsŸ~̰È&Cµåɼô×C„„[ÖE4,Úy0Ip§« ÔJ Àß8éz] bÜúJwÚ…ÊK~%ОU1Ó*®bÓ<ã˜×|jX$|õ‘±t8îÏ¢Xöi£*² ‚ºb‹rmª C¿Q‡ØúɵÀ (}H‰‚5}ù†ô0&«~a4!÷åùxTÆ#gWˆ™¦œ£h*èªâdcƒ™Nã+bîr^XrÇH&PIëaTàSÁ&cÖ:vÈÃæ)ž ¾’Q6 \ü/c³¤“— A9gµsŒz'=I­® Õ g:ªmŒ­®Ï`VÁlAZ µì9éD=g?ÙŸ `Ö&©‚-Åëm˜ðúZwÂéF™{p²‚5MH±·VCØñÁˆ“zÝà=ƒ(Þ†SÇøá$d¯”9aDµC!_Ï¥iØÝ7|mÞ`߃…ù‹FeÊú ÛxhÇã:T?Éá|Õ»ñG9º™ª£¯ßÑï‘[K+Û˜ò4\‘RVgœÉ; q5npŠK(ÅV+±”~¢6(óÍ,4Âùv†È˜¯ê•&µô Z«)Ày_yQÃ^özÝå^Õ&=Wû¢èî7æÙ¶Õj>%º‰<LeêK¬Ö_5ÞÆ˜zƒñ-!/‘ê"?=†}W%ÉÒIì‹L/jš:wdl íQ%ôœ^öÎ=k}/ì8Ëh ß´hßÞÅEºÒXt&Iáü~X7DÿÈt_ÜU00!x ]ZžLrk¯O5œsî÷a˜ï / iîÎÛ;&£ä³7‹]d}ɑ딑ßQ³=vo ÌÃÙ4‡ÎSè¡:Æé-x ~›¶ö1|`wÚªR³è—ÇgcɃ}/κg‘ â7Ú¨¤v_«‚ Ñ<Œj´ak†¾"‹Ø›ÚvçHeÅ¿ÓrðïKHÛ„[á'ô‰o+Þ”‘irâL@‘Š´lP 6| ‰ôò A²P «xÏßûoaý WõYÄ=B_ˆŽ<ªQNû˜ ¦W[jê3š[ec’ÈIϤ´§<޼v©R¦u03p„¹ãŪÎ[€úðÜ«nkJ› ßBm¼éêøÃŽÎEfî0R¡ïi©QÐÃŽ†êqc:›1qòköÃ'=ž™$ö7(è¬R3΃AÐyué**}Ïi5Ú ÎWè·8‹«jлV‹-%˘¥#‰é¦þ±ûÓ÷í_0õ–réº gZœŠª%pžŠÕ3-ç&š٥[@d»'ëLòaÊ×ë„‹Ð7×Ö³™‘½<âçGú±LåQ(êa¹Õ³˜TW•ˆç«lA%†RõJ¸´Nµêà:“ÀŒK5̸\ÏlsPÄ¿:ÁÉ•¢½8OkqO:ÏId×f®èò罸ÆÚÀ‚iì DmrnòG®°è¡HÕøX™Yÿõ6”ŸOdN68/EX¹éö´GöfH)tÌ Hº/ÍN)º±—åkæ’x2åHîÀïk"ÀyCÈIÆ5 Sîµ~~ýR@ ©ë¢ œ pKAwž«z€Ïó!ØÃó/S +„†¹¾ ÑF 4îÂ)U>èAˆû§7↠Ȇ+œY¼Œuö¯[âÛÛ‘²{N50AanÕzɲ 6±z?$ÏÕÀUÃí1Wù¹kÔ¸,ڒΪÓVò‚éYœ!ÝÁôPˤæî3u„Ê\°`]­m µB`³2RâÉ©Ÿ P±ßÅ^«{¯¿Ìú›bj¿êljv¯åavV²È@fN˜]LؾðG…"r.š4½ \3ö˜ÜðúuU óL’†÷‰ XúõèŸÕà9ð„çøô¶¶›*Zn™×߉™ë’DXÙ¡ ¦26¤ÿfÆ{8@­ÎªkÚ8³ÙÃ:Wƒ†æõuܼô Ž5rÙgSöJ$|IùK!:F"{IVÚ°9í>Ñ?à‹ÜÃ!Zn0‚N|ã<‘8¶’Ú‰çÝ2–¬Ø€y˜YÌvëù½qÞaÅæx7Zï3üL3¶¥½>!C¾>d:/ã׋Ùáˆï[[BÏϽKy>6h6;á.…³^ÿ]É”Š]bŽ«Œn&>™ˆ#oÅôPø ôq£{ËFC–‰³‰>̬–¯ãÇêγéÛ–ë_„ÎTnq–i¨»)Y;áZÑ÷ ç[Ã¥§U7#0E nÕûª„”XÆ„Ù8ó­†—Îýµí¸kìà 4¯`<¢²NñÂDÞcâW-NÄáTíÛ ~úS¤ù8Α=8q6Ã30;„?zÛ'6„‹;ã þ>¤8ï‹H9ää ¿£ 5[ßñ]¤Fß•v•€šzÆx/­Qp¦¿æQõ†àeJ¼‡ïâ_ØÉ}äv‰M_ªW Î ‡‡°¹J3:Ü¥£¿L«¤*æ­n"%÷røkg §M\û+e¨ì;%ˆÿüÎË·=”v¹öîÛñäª2¡éÿ2A`ÏQ‘¦É–qàãNšì«8ytaU»».$ªÍå8Mª?l I‡ÎÀ08¼¥-.áü›;«Ví«ÁT¾`²'þô‚жã¢{v»ªBI˜Ø[%û)ÿínCÂÇEd…Íí¹’ñ]¤Ý irìð6`A›äì_ }®²ô÷‚QŒí¾ÇîMíë#k×ñ: \ì#>‡>J¤àk$¶†‚ñg ƒ+•ýÉpðò°ÜÉ1¦,ç=3ëI¡ºF·•ºÑXì”ÿ5H H­øÜÀ2¸ÞÃtÁ6je˜¸N—©>6“_7à²ìòŠs É5êåV»¦f×éÆºG¾Áðzhøœtö®``µTª6׎w¤å\»º˜·‘ø6›å×ÚiåÐõd½àzº3TKŒª/S@ï‚â‘J*Þ®º]UT‰c[§«Ü÷ |—Ž:Ÿ¶ò'?´gŽ"ŠùòÞ 4ɳW³£“+ò±Ÿ;þCÕÞ±H=t¶*éªf©Ê1…ÉijSîô¹I4µøZùäm2`<{Ïa¹ˆÄêJ×uQ¥ü¬«gÛGÃýÃÑN`ƒjnòV3[•à¤mܪÞd)†à˜¼^"Wã`g'©2U{Rk~)®Nwd7Òa£R®Ô&s\°ì])Y=¿ ¼¤@"ŒwOß’afØh÷“½#Ùé´êq³Î›ÃõdÚƒÙT[,‰}½›(‚ä¸Ä·^NÝêNRcœÄ•ãÿˆ° äJˆñ9ø è§GM„fÆYË*1è_gÿi?èˆò.8ã™”fnx–ÓæacåQªd¦Û£rYßús`võþ8é–2;±ví-ŽÇSÅ 9“'GªdÑãGmèZ‹‰c0®Õ­5íÕYµŠøQã2,3«£ÍZçñë…Š,¥xÍ¡r.Øðo\pˆ"‰iÁpZé·@u#†ÈÏS´hºð¾g1Ó»G)iòØpË®j¤Ú˜˜Ô*@z}YéÖ:y“ªa’}Uû+“g£Âš Ûœî÷GGZ&’ñw¤¡ÙƒíÌ´²¾À–TXx ÷¥“~Ì ½#2”â[„Ÿ1Õ·K ‘'S¥ slº©DaF"¼eNó]Ôªf;M?;T—¶ý6]´&àíÜ¢T¯×³¸ %m(Rí=H/Ï 6Avn ^pºË‹s½ú¹»{ñÜÕ‚Š’À|NÛàc5æÇ< "ÊóJ”|„´øw¯wN¬õ¿LHUˆÐu¯F8’ï§CÝÏY¢í¦EØV¤ýÄè˜"GÈû¸Æž²·¼ybˆ²2Ãsç‚"/ö‰±Åù>’ôZû°XxÒÄáñƒ³ÌXÝÂÜC- ²2÷¶z·”ŽE²¸bZUÞa[ ®<³»Ê¿¼3 ¼ÿÞým=Ýdš‘Rœ˜6 ¦‚%bÜâ:àæÁ/æ‹ÀuVMnÂ:N& ›¾+aoMA;’·m-ì÷sìçòz˜T;Šq¿Åþûó:øøÕãK=Å9‹ßŞ/´MñÕ÷"&WŽå çéeœ]ûp,„ÿ]íû0)Mꈣ¡Öi{Ê­ñ¬æy‚³ËÃØ-ÌÖÆpý/‹ÂI²)1„%V;û5vQ¥–tÊÊ8¢b£²·,öE꦳…1®ƒùÝE;/üïϯëõêÄÇz©Ì‰ ¸a4‚†¦'À3mƒ Ý÷놀¤Öâò šïÌŸ{zîБ‘&…‹NŸÒ²®þòvâ‰Êàê`͇¡±HI!(H4è°–V×â(óêëÎèŸÆˆÆéËbVÒ‰×ìè)wÌNǘál>]H…!6¤¯k®¾‘­4õÒú“ÛU2AceÞb¦-öÓõ ¹MÔñÈ)­£ »1‘TÎÐò¨³'Çõ(¨¼A1:÷•êm¥ß1.†²WŒ@Gž•°AÕSÓ/×´×Ó+PTp’Úwüó€G¾!Ô†[´Éœž‚5Q}YÅVC·_ž˜ù °ðaí®·x´ð+R±õa ¶$&þðS{‚ŒkMÅÍ<<'⬎ì$ô9,$ãÊy³å[wì¿Åç…c°ÒS)Ö:žôSæNŒÎ‹»Z Ÿó¨uMè¦ÊÊ“€ò0ì|â]¢Óò]*ò"ú±%F¼ùY°éžXÞ Pr³u¢³ÁI(…uÜlSÿI‚ÀnË€­dL6+ëœXÞ‹-|y¾¥­™Q2’Z–Û«ßK©±Ù48¡Š€È½ôûòB Gýâ³2„£z¶ñ¹)D{‚×愳G±ÑK ?ï*á±±€#KÍH~ãoò.z QÕ­A¯¿&W-ãŠAš:©[|CÍaª¸ M™d­©çˆxì%mòžHatÓ"¦&ì\ä·\5¾,™DÒJ7pè»â.ç+ïø÷‡þYN(Ñ8‚_³ÍÀPÔ:cì†Ð¼ÆÓçðØ;ÙZ.÷bK±$ØàîoŒŽŒÙH‚•sWB?ù ¢ „WMØ…ú×h1ª®,›`qþyHðA˜òN´²¹« Û¡xº‹_Ïï“~ ‰(„´ÂâdVèejE³þñùM¨ÇX‚îcu£xy”`¥6ø7»”ÏR„hÔQ³:K¯I)·áBÇ„I2i•ôݱPµÐ¤\Ó/’ÈjÂwTo¦”œ÷†Z #—¨3”)Xœ+¦,¸á²Oû’ÅÎÙ‹€¸îå•FáÚZ~ʧñlw ß, ™æ¹nõ è²5 ×^@À—CÞpâßëež{ŒÄ)ýã_–ÊÒ=ÂÙÿ§ä~$Ù£²¼ ßqo³ïÇL”ÔòÆÌ+qëÙœÊá–9)Œi»šŠG“æ`-:pÎh®j„Àl(•Mùš¯W2Srà‘t"<ÆXõ&åŸGñ qÆíp¿Cÿw?/ƒq‹[I©l{Ù“€¨Ì»`ÐøM„]Ö ê¯ÝÒP¬îPáy†q“]nÌo$öª={á4ø\ÎvZ”Á®ã¤Œ£‰¥[kÙ©ÕõeЮÄA¼‡Øó·»®hˆ9D$B‡ (Ã% ç3ñ¤5Ö`m𵃠öQI§ÄØàimB-<ÊÜ&ºÁT?Ç[…ôRAÍíV3ûòÜúVé9eå|XÞñòˉæE²æaã—nZÞŽÇ'©Ô¹J‚ë-½¢Î«T"rlo˵ÉûŒ^p²¡Bƒ”oÆøhwå-vK¾÷q8$¥ø2 hT’®K9ä#F¶CÏÖ‚cæÌÞ; T)å7] ÷lI«(!ª¸Î¾ ˆ8x¶àÿ²àƒ¡ƒŠ@ÁöÝ8ÍúHŸëßÈ·4¾M|÷ÆE‚­£Äu׊ ÑÀBÕx»÷®üȡʜU"y¸ö#U%^&:ÍSÂh5ò¸µ‰Ï…¨âJi°¡òÏ,L³X X#‡¾ÖÚ—å CIC‡Ý ³&œs xÎ-3Ï3d‹É¢U<µzº"56 GLL`nJx²6Û´‘ â¨öq‡œ¿ ŸÁ ä|:Û˜¦R“n¡W“o`ú`Ë•¦|£H¡u0­ï]4Q…YÛdG''šï„QÑæ‰œéW±{ß¹T»§KôSLyå÷¼×T€´ž‹ÓF‹pÓVFžØºkJ÷°«±þ¤ °:x§²û¿‰2øã9XþsL‘—eƒþQ°¦u¹ýSNý²sœ_®!e`²-Û"="ý< < ò‡jäÿª[ñö=É´iIŸ[eüºŒB^'ÆëåÊ)žnŠkùmß}Â2Ñ7ò–甾NH,ˆŠo¥yÕdí´¢6ÄõpêÎ5*­þÕ|ŠoÊ>ï,e¼´JV¿ç'ºñ‡L—Ä©óú/¶Iá®×ö†k­`§["šÆíT3|¾âÛÛØD>Þ›"Pç,î8 5¡/|Ÿ0r †ÿ¿/;̇Sñúìaí…“p¥‹Æ‚Ö]× ÂƒÖb”ùšë)#. ƒ›ÜÚˆæ6áBŸÌ¾.îß"¸L–h¸ÒW¡§ª\¼~Õ dCsœÙ|ðæ4ÄMÏòrœ‹ÇÐ&9?ð@M1»ê/<, †¦G¿K }¡¶’Û+鑵a¦•.Ï xQ€^jü¼SãôÐA??¤9.Øš›,4t¦ }a$#i1 “›a1r¸"[’½eìJq´mѱ¼©'» “ÜŽ´3=Ž Z/òy%-@}Ç€pÅ€—“úgN84ƒbPøÑÓw‹¡JµøåHFìóº”ë±WWñÝÚnf“åBjy,E« €ÃËÐÿkðÏI}²Yu®2¶åú(-v.0}á¡‹€=˜­Nr¹)Wþj]’Æå™ Ì4ÂuÇ|:H׿»)áŽüëL„ tPæÁ-Ý;ƒ9Ñ¿Wÿÿþ’]ü؈AkÅô%Ÿ´E´9â¾ÿ­(¹HÄ·Ä,ÒßùñÒ¯™÷Æo§¡|î×t:Û·¹í¬áª<IÄ÷÷²ã›°ªØºõ‰Æ»Ý4ððV\Âï<sãQ'˲xxuÙ¤M ¾Q**^„™B¢ÝÅÀ9tÕžpsÍCßÿË ó°Åq Ì!°s8ó|hü4ÖMœ€F€o!rÃú"Ä<WSaŠl´DÕÿÚ˜úUáˆøËÊTŠÓ#ô‹ˆ—‡F~D“ÂÙ9³)˃]eÅí„ë`³ÚÚ® ­¶R"ê†N•«Óyùpø™Ó€ºÃ~œy™Ðb†íJÓðâYW³+PšCØ1`Wâ#~ñãƒÎgκÍMëQaNç?>ë\£ClШJRSg¢|~Â#ÒvÁƒ”ìoÝŽW» f¾¥Ð3­ EzŒ13¸:6Ñž­@Ÿcçvi%‰ „°­W·4Çô›ù5C\àòÇ×¿Žª(p–ä[@ã)¹³l¡ªú¨Dlh!` ®Ôr{ÎÑÓ󎧑§R-¢¤ÑQQK4ëÒ¬[œî¾‰ÿ>où*Zw q¢çR”—Ö«>Ggʬ£ú‚^2{ÛÕø~f¼¸ÈÅd?im ¾ÌÖÊ4súKy™û»d¥==#ŒŠ„œUR~E ÙV­'Ÿ[åiHŒÍ~1·O µNþï$: ˆå.7•‚©lŠýùUNZ§òp±PØâÇ;µÚF¬hûÚ õ#h ÔÕ‘Ð<ê|òïø.5G€Û≑ø¤9Ðs<šèZõÎ/Z¦^Ó¯+A"O· ;)·HŽÞ‘a?Ò³£ïþ&\æuÇQл@Š¸Ã í-}bÍ­¼­œã³Ùl®Í›,8*M¶gk0>afpTÎoØÚɇô˜ð!ÖÕ[XzzXÜíÐŽ®£:™lÊeoù—ü>Ê•©d†‡¿P%|`£y†\óôŠÔñJU)é·€aã‚°LE+è_.Ç® pµnxòØÐ0ºJ¸Â‚c“K:4zuú½:`[†Ío,à {•û +¿êÈÝ÷e‘_òk‘ë£å׵Ѐ$G~O«ðT*Ê`… E4Ñ@?䙡ŽH‡ù—7ùB—r}˜©E3yA hŒL~êªI½¯‰g<µrfih¶8 5?ó4e¢ŠY;9Ð7~^dïà3ý€ Ï@¶DÏ3ju=ÞÅMZ2Ú ~²âМZé–]¨^“@›µ =?N„¿dÒ–$c«BðfžÀþq ¯ïµø‡ŠÅ4J‰ì6@VxŠ !È%$+­äõ¸ŒkÙJz›(Øå'šìèÿÙÚN™˜y]yu7ɉK0j8®æ±HŠ“Œfº†¢Ñ%^9Žÿ™›Wñ ¦§Ÿ4勤Dù&v;h‰Ö{tŠâ‹nˆÒ‡?å{¨hæ³}_;kU÷“;òØæ0ïmWÄòE—©OÐêG!(–Rí<%átpÙ.b¾èR‰]¼V±$Æók§~ \”ÆÑ+Æ­ç"!Z²QóxRšùz¿GN~£‘4fóðeóŽõ‹ÇÞYÐë«éö7F…êÅ«.¥  &Ô9Ã(=×èÖß¿1ƒIWÂx€OYZf¤„ÔJ!i‚hdÔ-g/æ©OŸOK¤º˜¥rÛ„–)Ã…Q:½éðÓ7E”m?¦ÃÁ¿+€cõˆ)Çðù.ît‘¡½åSs²ÎžPMô…46J±`ø}Ø.ù¿$i!–L…Ý”'`[f’¡.ne=ˆ`$þå~?]1~ʦ®@w™LKòUæO.r{õZ–ª¬µz%¥ Œ1Πêàg¹,ûÌ„r^›iôý-“ærú_ RèGrôÇŒPs3igÝÑ%8­ ×Vƒä: 6-ðì›Ò‘3U'€£]8‡’dˆ°-.(ˉPRwW¬‹Œœb–V¶Y^òŠä©®7>W¥øŸ§~¢ëûšû§•ïŒw§@OñLB BÃG¾ ‰¢5Lå³ ^ ³«äÖV>·:Æð®o M•ä1e¶0¦ 5'+ÊýZ’ÒƒíÆLΙ¿ò²b„«p^Ð#’à$ºz²ûñ€«&½é¦ì{ãL8>N¬û,оd\H_¾ ¨t[@ ¢•ùmSÑúÿ†Ïý[NuG™f<%„# Vt¡Ü´ X7« M´£Ž2í[¤I?[•{¨ãr¡¦±fL뽯´)è¿KÐPȾrñÅThŠ&ô ´Çwª×* ¸ø¥I°!\Ü·ÜXfl¿:{Ì~p„¡Õuñ Ó»Êc`ýÆ{\Û|Mq…3R¾Ã€Fµ˜ŒÔ¶ÝÉ!¥þŠé ´“ÄÉ ®€©0î*Q‚Œ/!²{4 Ò›zI ÐÍzdgÝÓiU÷ú伂½Ji¹>mWx‘Fõ.!ôÕ›ªzZ ÉÚ“ASvBSQy5u‘O¡¶Ówí–Z-Ô÷†7˜ˆ?_}y_¾ wqfûrzœm-ùleE?aoNRdF‘ÖX³jõW!Ìä˜Vf´+‚ðÌ^–âB5Ž“üôE äF–&âXÒ,Y-úžæ^|Ÿx U5›¼ÇÕ§ˆ#y?³U<³ž]f;¸AðVm`ˆNÑ1ðe“–øµûÁQ ™ì_ÏÒ£ìW”æ#Háq3F}tsQ¨æíˆ ±I‹ÓdMW{8*¦eHECú!Z“¡j̽Sðó¼lèN¡Q#b`­’´Ÿ‚´µ$°g "[‹x»$Q³v=º}@؉ÍNwP` ú-@Ÿ‹n-–­ðÓÀTA3»¦t¼,ù—» zâ&›¿ƒ û98(ù©ôlá¸ue#ÇÞWƒç; ~2w´µEyðÿõã ×/åèÝ„…s!O‰XŠ­êr˜TÈPÿWîïÝ.=uÝm¸û—lÞÖ(sŒ5Ú,`#¼+C5¼Ô‰2—à õÑä…”è v?Ø‘­ûÕ>%5×ݸ*Êbwh)¶+¹Ó â.T¾Â²ª‹Ö‰†]dP¤›uÀ1s÷ûnÿ§’6ÇB¾\Tî‹é)±¦¼ÙÕ|w‡}¿¦-µ§€ ÓVS&MBF€§\èD±°Nh4÷öÙÓàÚÂ7ÛEB~äI×"ÜÙB\5kóÄÍÁ"_ Ž¿M5ú'ÙKæktÆÙÙÍĦÁœæ¡à«m^ AV Q'´" Ü®$º¿ÀŒ¿\yÿòçë‡+ojtüSˆ]KfÖê7;/47aÏý?R)åÂLY‡õ ¦~¦Bf‘Ⴥ½zó B£pÒõX|¦ÿ¸ð¾¢;œ<‡ì³ê ËEÀ«À>ñM’ØÂÚ Å2Ÿ¦Vx>a«G Á_„NÒ6PÏ.œ¤sé8»ÀúJ(°$¤ÖV½Ô e'+±µ<Võ 8)x¡VÇéLRTiÿöG*}Ç£%M «U¸ÌºëÃÙWú‡ßo-óò•Ýz²K&ffÖŽâ~ˆº_#y½gu0³L€j,ò®]"Í›é¡ZR%-xß­­eôÕƒ¶s^ͦ6q†¾Z‹iRÔ’—ñ+Émr ±'ìÂ$Z¦§êIà&áééK³f’ù#~DX†}Ô>ÆâÁÿæ˜i‡˜îƒ íõ9HŸm6ýÈö†´%Ú$½+ð‰¡þ›Y³#ÅIsîËÚGÈ;Ð×6X=`£÷A…ƒ(в¹8MepŠåÑëE4<è¥9!xzϘB²Œ½óM±Ðç” ½DOþ¯ÿŸ ÍõŠ>@­’ã@±°E‡Òž±mÀÉYß­V ‚ãÕ¼†¾Õœåqzm¦É‹m2¶ÌŽº+ªâpÂh/ÑfmQSicÚª­ Ÿ@'Ï,a Y¨në|iÕaíÚÍÀG]²#|v™Î¯AÀ1£‰¼J˜r~ †’åo ûËoBÿþ1ùq÷¬Jª¼Æ0>=}Ã48.do!ZÞ’»{YßËòDjbù]–ÙÐjt$è3«9ü–·—XÒÿ£ýr,‹è'ºl™/ò®U‰oãÿzðœµA¬!"žSÂÍ®Çi^ße@ŽF'¾ôqfÉ}iêŽó"ÖO³p|A^ÛæŽ ÁrµËd âZÍŠZËŽ,ÆKå)äèú7>¿N.gØKÄ„G1M®QAÓKOµhü¬ÄÙ«}ê OŠ|6誽4HS*‘|ßÉí¨®g ÄN'Àû°– %Ó€…ÜÄíCýïÐ!„XÐ5¿"E>œÇô­~2ýž¬.r¿N匋K·é&L“ nㆯŸúÅÎÀ¬>]Ð:+}kýø¶àoåµb›×rÖöÿ°…1W°bÓ³SÒÓ¯·…åÓnýZ‹…%1uüàJ•mÇ#FßMæÊ¨Y1ñªd¿q;u¶à–W‹/ÖiHyÁæ¯lw‚Biý:¨>ê“™XV‹Õ´Zx3÷VjXGÔ2%p š’²*l<Æ™JFzÌìö73f{›WFÝWî¶3þÄ›)]Æ`Ä–­h Ô\ |Û‚€Zé;H ø"Xz]Æ·I%YÍõ†Av}¾X‰-TÑõl,å.t˜ÞrLÆ;eV”u5ØÍ\ƒØôÜh«åiAA+Yš›Á‰JªøòȉjŠ„Þ( «ç ÿŸ´Júÿg“gݳXx¸Á Ð%9à5P˜,)Ä2˾á%6ë:¦aíiéµñ&Ý`îF(pëŽW?³³£sÔ:ž&õtð0‚ÛÅb‡V±™#Ò<%«DÞä½èWNàú0'õvƒ>QhÐË`3ØFP8¾ iÏóX&ó…tHµiOÿcm²CÏèr”˜$ßU+êK.iÆŸ&z½ m›¬œ1 jñ-(¤άåÙ[xž Ë°XFE=å˹dc¬*kK€¿ÈÈÚõÄVYз'§¹“.;añòÈhjÿÑu­-íÚgŒ …âÁÊÖ’‰>>¢rÓh>’þû¦6ÎÚº)ÍÛ/ûØÄ ë_o&Æ:šP¹b›,œ ÜÜÈ-ö¨Zucó$85¨XëR¸(ª‘ì¦ñÏ+×äö̱±“6L½ û¿¥4/2`øI߉ѽLë¤à8|š¢;cÒ˜ö ­ Tø7Ùcöy¿‘.ávί'óO‹P柳V yj¥òWYÐ' Wù}oKÉ!úÉÑÇð_Š6ºì¹¦]ìbÆâù…~ΩiqãîK'÷n#÷QDĦ|*ï•{[Š\‡œ?9?ΉÉCy¡øôH ÞPXí}ÈŸá2¿~K›÷j©fœ[dê D§‹ž—Õ´ð pÓÛýeTVfĽZn]øU¡,â‚»f±ÂL2 vidÂÓ‡ïtÌnÈ>0 ‹YZqgam/src/0000755000176200001440000000000014775743132012003 5ustar liggesusersqgam/src/mgcv_wrap.c0000644000176200001440000000550213151257162014124 0ustar liggesusers#include #include #include typedef SEXP (*sexpPmmultPtr) (SEXP, SEXP, SEXP, SEXP, SEXP); typedef void (*voidPLS1Ptr) (double*, double*, double*, double*, double*, double*, int*, int*, int*, double*, double*, double*, int*, int*); typedef void (*voidGdi2Ptr) (double *,double *,double *,double *,double *, double *,double *,double *,double *, double *,double *, double *,double *,double *,double *,double *, double *,double *, double *, double *, double *, double *, double *,double *,double *, double *, double *,double *,double *,double *, double *, double *, double *,double *, double *,int *, int *, int *, int *,int *, int *,int *,int *,int *, int *, int *, int *, double *); SEXP qgam_pmmult2(SEXP b, SEXP c, SEXP bt, SEXP ct, SEXP nthreads) { static sexpPmmultPtr fun = NULL; if (fun==NULL) fun = (sexpPmmultPtr) R_GetCCallable("mgcv", "mgcv_pmmult2"); SEXP a = fun(b, c, bt, ct, nthreads); return(a); } /* qgam_pmmult2 */ void qgam_pls_fit1(double *y, double *X, double *w,double *wy, double *E, double *Es, int *n, int *q, int *rE, double *eta, double *penalty, double *rank_tol, int *nt, int *use_wy) { static voidPLS1Ptr fun = NULL; if (fun==NULL) fun = (voidPLS1Ptr) R_GetCCallable("mgcv", "pls_fit1"); fun(y, X, w, wy, E, Es, n, q, rE, eta, penalty, rank_tol, nt, use_wy); } /* qgam_pls_fit1 */ void qgam_gdi2(double *X,double *E,double *Es,double *rS,double *U1, double *sp,double *theta,double *z,double *w,double *wz,double *wf, double *Dth,double *Det,double *Det2,double *Dth2,double *Det_th, double *Det2_th,double *Det3,double *Det_th2, double *Det4, double *Det3_th, double *Det2_th2, double *beta,double *b1,double *w1, double *D1,double *D2,double *P0,double *P1,double *P2, double *ldet, double *ldet1,double *ldet2,double *rV, double *rank_tol,int *rank_est, int *n,int *q, int *M,int *n_theta, int *Mp,int *Enrow,int *rSncol,int *deriv, int *fixed_penalty,int *nt,int *type,double *dVkk) { static voidGdi2Ptr fun = NULL; if (fun==NULL) fun = (voidGdi2Ptr) R_GetCCallable("mgcv", "gdi2"); fun(X, E, Es, rS, U1, sp, theta, z, w, wz, wf, Dth, Det, Det2, Dth2, Det_th, Det2_th, Det3, Det_th2, Det4, Det3_th, Det2_th2, beta, b1, w1, D1, D2, P0, P1, P2, ldet, ldet1, ldet2, rV, rank_tol, rank_est, n, q, M, n_theta, Mp, Enrow, rSncol, deriv, fixed_penalty, nt, type, dVkk); } /* qgam_gdi2 */ qgam/src/init.c0000644000176200001440000000310213151257162013074 0ustar liggesusers/* Symbol registration initialization: original provided by Brian Ripley. Anything called from R should be registered here. (See also NAMESPACE:1) */ #include #include SEXP qgam_pmmult2(SEXP b, SEXP c, SEXP bt, SEXP ct, SEXP nthreads); void qgam_pls_fit1(double *y, double *X, double *w,double *wy, double *E, double *Es, int *n, int *q, int *rE, double *eta, double *penalty, double *rank_tol, int *nt, int *use_wy); void qgam_gdi2(double *X,double *E,double *Es,double *rS,double *U1, double *sp,double *theta,double *z,double *w,double *wz,double *wf, double *Dth,double *Det,double *Det2,double *Dth2,double *Det_th, double *Det2_th,double *Det3,double *Det_th2, double *Det4, double *Det3_th, double *Det2_th2, double *beta,double *b1,double *w1, double *D1,double *D2,double *P0,double *P1,double *P2, double *ldet, double *ldet1,double *ldet2,double *rV, double *rank_tol,int *rank_est, int *n,int *q, int *M,int *n_theta, int *Mp,int *Enrow,int *rSncol,int *deriv, int *fixed_penalty,int *nt,int *type,double *dVkk); static const R_CallMethodDef CallMethods[] = { {"qgam_pmmult2", (DL_FUNC) &qgam_pmmult2, 5}, {NULL, NULL, 0} }; R_CMethodDef CEntries[] = { {"qgam_pls_fit1", (DL_FUNC) &qgam_pls_fit1, 14}, {"qgam_gdi2",(DL_FUNC) &qgam_gdi2,48}, {NULL, NULL, 0} }; void R_init_qgam(DllInfo *dll) { R_registerRoutines(dll, CEntries, CallMethods, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } qgam/NAMESPACE0000644000176200001440000000141414666605755012442 0ustar liggesusersuseDynLib(qgam, .registration = TRUE, .fixes = ".C_") exportPattern("^[[:alpha:]]+") importFrom(plyr, "is.formula", "llply", "mlply") importFrom(doParallel, "registerDoParallel") importFrom(parallel, "makeCluster", "stopCluster", "detectCores", "clusterExport", "clusterEvalQ") importFrom(stats, "pnorm", "coef", "qnorm", "printCoefmat", "predict", "qbinom", "make.link", "dlogis", "plogis", "complete.cases", "na.omit", "quantile", "runif", "cov", "optim", "anova", "optimize", "residuals", "sd", "gaussian", "update", "as.formula") importFrom(grDevices, "rgb") import(mgcv) import(shiny) import(graphics) S3method("check", "qgam", "check.qgam") S3method("check", "learn", "check.learn") S3method("check", "learnFast", "check.learnFast")qgam/inst/0000755000176200001440000000000014775743132012171 5ustar liggesusersqgam/inst/CITATION0000644000176200001440000000157614146701663013332 0ustar liggesusersbibentry(bibtype = "Article", title = "{qgam}: {B}ayesian Nonparametric Quantile Regression Modeling in {R}", author = c(person(given = "Matteo", family = "Fasiolo", email = "matteo.fasiolo@gmail.com"), person(given = c("Simon", "N."), family = "Wood"), person(given = "Margaux", family = "Zaffran"), person(given = "Rapha\\\"el", family = "Nedellec"), person(given = "Yannig", family = "Goude")), journal = "Journal of Statistical Software", year = "2021", volume = "100", number = "9", pages = "1--31", doi = "10.18637/jss.v100.i09", header = "To cite qgam in publications use:" ) qgam/inst/doc/0000755000176200001440000000000014775743132012736 5ustar liggesusersqgam/inst/doc/qgam.R0000644000176200001440000002427414775743127014023 0ustar liggesusers## ----setup, include=FALSE----------------------------------------------------- library(knitr) opts_chunk$set(out.extra='style="display:block; margin: auto"', fig.align="center", tidy=FALSE) ## ----1, message = F----------------------------------------------------------- library(qgam); library(MASS) if( suppressWarnings(require(RhpcBLASctl)) ){ blas_set_num_threads(1) } # Optional fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ## ----2------------------------------------------------------------------------ check(fit$calibr, 2) ## ----3, message = F----------------------------------------------------------- set.seed(6436) cal <- tuneLearn(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8, lsig = seq(1, 3, length.out = 20), control = list("progress" = "none")) #<- sequence of values for learning rate check(cal) ## ----4------------------------------------------------------------------------ quSeq <- c(0.2, 0.4, 0.6, 0.8) set.seed(6436) fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) ## ----5------------------------------------------------------------------------ # Plot the data xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) # Predict each quantile curve and plot for(iq in quSeq){ pred <- qdo(fit, iq, predict, newdata = xSeq) lines(xSeq$times, pred, col = 2) } ## ----6------------------------------------------------------------------------ # Summary for quantile 0.4 qdo(fit, qu = 0.4, summary) ## ----------------------------------------------------------------------------- dat <- gamSim(1, n=40000, dist="normal", scale=2) b <- qgam(y ~ s(x0)+s(x1)+s(x2)+s(x3),data=dat, qu = 0.1, discrete = TRUE) plot(b, pages = 1) ## ----h1----------------------------------------------------------------------- set.seed(651) n <- 2000 x <- seq(-4, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma = 1.2 + sin(2*x) f <- drop(X %*% beta) dat <- f + rnorm(n, 0, sigma) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma)) } ## ----h2----------------------------------------------------------------------- fit <- mqgam(y~s(x, k = 30, bs = "cr"), data = dataf, qu = qus) qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma), col = 2) lines(x, qdo(fit, iq, predict)) } legend("top", c("truth", "fitted"), col = 2:1, lty = rep(1, 2)) ## ----h3----------------------------------------------------------------------- plot(x, dat, col = "grey", ylab = "y") tmp <- qdo(fit, 0.95, predict, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ## ----h4----------------------------------------------------------------------- fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), data = dataf, qu = 0.95) plot(x, dat, col = "grey", ylab = "y") tmp <- predict(fit, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ## ----mcy2rnd, message = F----------------------------------------------------- fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ## ----mcy2rnd2, message = F---------------------------------------------------- fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = 0.8) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ## ----c1----------------------------------------------------------------------- library(qgam) set.seed(15560) n <- 1000 x <- rnorm(n, 0, 1); z <- rnorm(n) X <- cbind(1, x, x^2, z, x*z) beta <- c(0, 1, 1, 1, 0.5) y <- drop(X %*% beta) + rnorm(n) dataf <- data.frame(cbind(y, x, z)) names(dataf) <- c("y", "x", "z") ## ----c2----------------------------------------------------------------------- qu <- 0.5 fit <- qgam(y~x, qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ## ----c3, message = F---------------------------------------------------------- fit <- qgam(y~s(x), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ## ----c4, message = F---------------------------------------------------------- cqcheck(obj = fit, v = c("x", "z"), X = dataf, y = y, nbin = c(5, 5)) ## ----c5, message = F---------------------------------------------------------- cqcheck(obj = fit, v = c("z"), X = dataf, y = y, nbin = c(10)) ## ----c6, message = F---------------------------------------------------------- fit <- qgam(y~s(x)+z, qu = qu, data = dataf) cqcheck(obj = fit, v = c("z")) ## ----c7, message = F---------------------------------------------------------- cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ## ----c8, message = F---------------------------------------------------------- fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ## ----c9, message = F---------------------------------------------------------- fit <- mqgam(y~s(x)+z+I(x*z), qu = c(0.2, 0.4, 0.6, 0.8), data = dataf) ## ----c10, message = F--------------------------------------------------------- check.learnFast(fit$calibr, 2:5) ## ----c11, message = F--------------------------------------------------------- qdo(fit, 0.2, check) ## ----check1, message = F------------------------------------------------------ set.seed(5235) n <- 1000 x <- seq(-3, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) f <- drop(X %*% beta) dat <- f + rgamma(n, 4, 1) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") ## ----check2, message = F------------------------------------------------------ qus <- c(0.05, 0.5, 0.95) fit <- mqgam(y ~ s(x), data = dataf, qu = qus) plot(x, dat, col = "grey", ylab = "y") lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) lines(x, qdo(fit, qus[1], predict), col = 2) lines(x, qdo(fit, qus[2], predict), col = 2) lines(x, qdo(fit, qus[3], predict), col = 2) ## ----check2b, message = F----------------------------------------------------- lfit <- lapply(c(0.01, 0.05, 0.1, 0.2, 0.3, 0.5), function(.inp){ mqgam(y ~ s(x), data = dataf, qu = qus, err = .inp, control = list("progress" = F)) }) plot(x, dat, col = "grey", ylab = "y", ylim = c(-2, 20)) colss <- rainbow(length(lfit)) for(ii in 1:length(lfit)){ lines(x, qdo(lfit[[ii]], qus[1], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[2], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[3], predict), col = colss[ii]) } lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) ## ----check3, message = F------------------------------------------------------ system.time( fit1 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.05, control = list("progress" = F)) )[[3]] system.time( fit2 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.001, control = list("progress" = F)) )[[3]] ## ----check4, message = F------------------------------------------------------ check(fit1$calibr, sel = 2) check(fit2$calibr, sel = 2) ## ----check5, message = F------------------------------------------------------ check(fit1) ## ----edf1--------------------------------------------------------------------- data("UKload") tmpx <- seq(UKload$Year[1], tail(UKload$Year, 1), length.out = nrow(UKload)) plot(tmpx, UKload$NetDemand, type = 'l', xlab = 'Year', ylab = 'Load') ## ----edf2--------------------------------------------------------------------- qu <- 0.5 form <- NetDemand~s(wM,k=20,bs='cr') + s(wM_s95,k=20,bs='cr') + s(Posan,bs='ad',k=30,xt=list("bs"="cc")) + Dow + s(Trend,k=4) + NetDemand.48 + Holy ## ----edf3, message=FALSE------------------------------------------------------ set.seed(41241) sigSeq <- seq(4, 8, length.out = 16) closs <- tuneLearn(form = form, data = UKload, lsig = sigSeq, qu = qu, control = list("K" = 20), multicore = TRUE, ncores = 2) check(closs) ## ----edf4--------------------------------------------------------------------- lsig <- closs$lsig fit <- qgam(form = form, data = UKload, lsig = lsig, qu = qu) plot(fit, scale = F, page = 1) ## ----edf5--------------------------------------------------------------------- par(mfrow = c(2, 2)) cqcheck(fit, v = c("wM"), main = "wM") cqcheck(fit, v = c("wM_s95"), main = "wM_s95") cqcheck(fit, v = c("Posan"), main = "Posan") cqcheck(fit, v = c("Trend"), main = "Trend", xaxt='n') axis(1, at = UKload$Trend[c(1, 500, 1000, 1500, 2000)], UKload$Year[c(1, 500, 1000, 1500, 2000)] ) ## ----edf6--------------------------------------------------------------------- par(mfrow = c(1, 1)) cqcheck(fit, v = c("wM", "Posan"), scatter = T) qgam/inst/doc/qgam.html0000644000176200001440002453610314775743131014566 0ustar liggesusers qgam: quantile non-parametric additive models

This R package offers methods for fitting additive quantile regression models based on splines, using the methods described in Fasiolo et al., 2017.

The main fitting functions are:

  • qgam() fits an additive quantile regression model to a single quantile. Very similar to mgcv::gam(). It returns an object of class qgam, which inherits from mgcv::gamObject.
  • mqgam() fits the same additive quantile regression model to several quantiles. It is more efficient that calling qgam() several times, especially in terms of memory usage.
  • tuneLearn() useful for tuning the learning rate of the Gibbs posterior. It evaluates a calibration loss function on a grid of values provided by the user.
  • tuneLearnFast() similar to tuneLearn(), but here the learning rate is selected by minimizing the calibration loss, using Brent method.

1 A first example: smoothing the motorcycle dataset

Let's start with a simple example. Here we are fitting a regression model with an adaptive spline basis to quantile 0.8 of the motorcycle dataset.

library(qgam); library(MASS)
## Warning: package 'MASS' was built under R version 4.3.2
if( suppressWarnings(require(RhpcBLASctl)) ){ blas_set_num_threads(1) } # Optional

fit <- qgam(accel~s(times, k=20, bs="ad"), 
            data = mcycle, 
            qu = 0.8)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.8..........done
# Plot the fit
xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3)))
pred <- predict(fit, newdata = xSeq, se=TRUE)
plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80))
lines(xSeq$times, pred$fit, lwd = 1)
lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2)
lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2)   

qgam automatically calls tuneLearnFast to select the learning rate. The results of the calibrations are stored in fit$calibr. We can check whether the optimization succeded as follows:

check(fit$calibr, 2)

The plot suggest that the calibration criterion has a single minimum, and that the optimizer has converged to its neighbourhood. Alternatively, we could have selected the learning rate by evaluating the loss function on a grid.

set.seed(6436)
cal <- tuneLearn(accel~s(times, k=20, bs="ad"), 
                 data = mcycle, 
                 qu = 0.8,
                 lsig = seq(1, 3, length.out = 20), 
                 control = list("progress" = "none")) #<- sequence of values for learning rate
                 
check(cal)

Here the generic check function produces a different output. The first plot is the calibration criterion as a function of \(log(\sigma)\), which should look fairly smooth. The second plot shows how the effective degrees of freedom (EDF) vary with \(log(\sigma)\). Notice that here we are using an adaptive smoother, which includes five smoothing parameters.

We might want to fit several quantiles at once. This can be done with mqgam.

quSeq <- c(0.2, 0.4, 0.6, 0.8)
set.seed(6436)
fit <- mqgam(accel~s(times, k=20, bs="ad"), 
             data = mcycle, 
             qu = quSeq)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.4............done 
## qu = 0.6..........done 
## qu = 0.2..............done 
## qu = 0.8.........done

To save memory mqgam does not return one mgcv::gamObject for each quantile, but it avoids storing some redundant data (such as several copies of the design matrix). The output of mqgam can be manipulated using the qdo function.

# Plot the data
xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3)))
plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80))

# Predict each quantile curve and plot
for(iq in quSeq){
  pred <- qdo(fit, iq, predict, newdata = xSeq)
  lines(xSeq$times, pred, col = 2)
}

Using qdo we can print out the summary for each quantile, for instance:

# Summary for quantile 0.4
qdo(fit, qu = 0.4, summary)
## 
## Family: elf 
## Link function: identity 
## 
## Formula:
## accel ~ s(times, k = 20, bs = "ad")
## 
## Parametric coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -31.270      1.829   -17.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##            edf Ref.df Chi.sq p-value    
## s(times) 8.956  10.33  659.9  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.781   Deviance explained = 70.1%
## -REML = 609.61  Scale est. = 1         n = 133

Notice that here the generic function summary is calling summary.gam, because summary.qgam has not been implemented yet. Hence one cannot quite rely on the p-value provided by this function, because their are calculated using result that apply to parametric, not quantile, regression.

2 Handling big data sets

Since version 2.0, qgam can handle big data sets by setting the argument discrete = TRUE. This is particularly useful when the number of observations is very large. In this case, the function qgam will use a discrete representation of the covariates (provided by mgcv::bam, see ?bam for details), which is much more memory and computationally efficient. Here is a simple simulated example:

dat <- gamSim(1, n=40000, dist="normal", scale=2)
## Gu & Wahba 4 term additive model
b <- qgam(y ~ s(x0)+s(x1)+s(x2)+s(x3),data=dat, qu = 0.1, discrete = TRUE)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.1........done
plot(b, pages = 1)

You can check this model takes around 5 seconds to fit, while setting discrete = FALSE would take much longer (but the fit is almost identical).

3 Dealing with heteroscedasticity

Let us simulate some data from an heteroscedastic model.

set.seed(651)
n <- 2000
x <- seq(-4, 3, length.out = n)
X <- cbind(1, x, x^2)
beta <- c(0, 1, 1)
sigma =  1.2 + sin(2*x)
f <- drop(X %*% beta)
dat <- f + rnorm(n, 0, sigma)
dataf <- data.frame(cbind(dat, x))
names(dataf) <- c("y", "x")
   
qus <- seq(0.05, 0.95, length.out = 5)
plot(x, dat, col = "grey", ylab = "y")
for(iq in qus){ lines(x, qnorm(iq, f, sigma)) }

We now fit ten quantiles between 0.05 and 0.95, using a quantile GAM with scalar learning rate.

fit <- mqgam(y~s(x, k = 30, bs = "cr"), 
             data = dataf,
             qu = qus)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5........done 
## qu = 0.725.......done 
## qu = 0.275.......done 
## qu = 0.95.................done 
## qu = 0.05...............done
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
qus <- seq(0.05, 0.95, length.out = 5)
plot(x, dat, col = "grey", ylab = "y")
for(iq in qus){ 
 lines(x, qnorm(iq, f, sigma), col = 2)
 lines(x, qdo(fit, iq, predict))
}
legend("top", c("truth", "fitted"), col = 2:1, lty = rep(1, 2))

With the exception of qu = 0.95, the fitted quantiles are close to the true ones, but their credible intervals don't vary much with x. Indeed, let's look at intervals for quantile 0.95.

plot(x, dat, col = "grey", ylab = "y")
tmp <- qdo(fit, 0.95, predict, se = TRUE)
lines(x, tmp$fit)
lines(x, tmp$fit + 3 * tmp$se.fit, col = 2)
lines(x, tmp$fit - 3 * tmp$se.fit, col = 2)

We can get better credible intervals, and solve the "wigglines" problem for the top quantile, by letting the learning rate vary with the covariate. In particular, we can use an additive model for quantile location and one for learning rate.

fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), 
            data = dataf, qu = 0.95)
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : gam.fit5 step failed: max magnitude relative grad = 7.59500625267603e-08
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.95.........done
plot(x, dat, col = "grey", ylab = "y")
tmp <- predict(fit, se = TRUE)
lines(x, tmp$fit)
lines(x, tmp$fit + 3 * tmp$se.fit, col = 2)
lines(x, tmp$fit - 3 * tmp$se.fit, col = 2)

Now the credible intervals correctly represent the underlying uncertainty, and the fit has the correct amount of smoothness.

Neglecting to take the heteroscedasticity into account can lead to bias, in addition to inadequate coverage of the credible intervals. Let's go back the motorcycle data set, and to the first model we fitted:

fit <- qgam(accel~s(times, k=20, bs="ad"), 
            data = mcycle, 
            qu = 0.8)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.8..........done
# Plot the fit
xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3)))
pred <- predict(fit, newdata = xSeq, se=TRUE)
plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80))
lines(xSeq$times, pred$fit, lwd = 1)
lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2)
lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2)   

The slightly disturbing thing about this quantile fit is that for Times < 10 the fit is clearly above all the responses. But we are fitting quantile 0.8, hence we should expect around 20\(\%\) of the responses to be above the fit. The problem here is that the variance of the response (accel) varies wildly with Times, so that the bias induced by the smoothed pinball loss used by qgam is not constant (see Fasiolo et al. 2017 for details). This issue is solved by letting the learning rate change with Times:

fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)),
            data = mcycle, 
            qu = 0.8)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.8...........done
pred <- predict(fit, newdata = xSeq, se=TRUE)
plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80))
lines(xSeq$times, pred$fit, lwd = 1)
lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2)
lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2)  

4 Model checking

The qgam package provides some functions that can be useful for model checking, but a more complete set of visualisation and checking tools can be found in the mgcViz R package (Fasiolo et al., 2018). In qgam we have:

  • cqcheck if we are fitting, say, quantile 0.2 we expect roughly \(20\%\) of the observations to fall below the fitted quantile. This function produces some plots to verify this.
  • cqcheckI interactive version of cqcheckI. Implemented using the shiny package. Not demonstrated here, but see ?cqcheckI.
  • check.qgam provides some diagnostics regarding the optimization. Mainly based to gam.check.
  • check.learn diagnostic checks to verify that the learning rate selection went well. It can be used on the output of tuneLearn.
  • check.tuneLearn similar to check.learn, but it can be used on the output of tuneLearn or on the $calibr slot of a qgam object.

We start by illustrating the cqcheck function. In particular, let us consider the additive model: \[ y \sim x+x^2+z+xz/2+e,\;\;\; e \sim N(0, 1) \] We start by simulating some data from it.

library(qgam)
set.seed(15560)
n <- 1000
x <- rnorm(n, 0, 1); z <- rnorm(n)
X <- cbind(1, x, x^2, z, x*z)
beta <- c(0, 1, 1, 1, 0.5)
y <- drop(X %*% beta) + rnorm(n) 
dataf <- data.frame(cbind(y, x, z))
names(dataf) <- c("y", "x", "z")

We fit a linear model to the median and we use cqcheck produce a diagnostic plot.

qu <- 0.5
fit <- qgam(y~x, qu = qu, data = dataf)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5.........done
cqcheck(obj = fit, v = c("x"), X = dataf, y = y) 

The cqcheck function takes a qgam object as input and it predicts the conditional quantile using the data in X. Then it bins the responses y using the corresponding values of v and it calculates, for every bin, what fraction of responses falls below the fitted quantile. Given that we are fitting the median, we would expect that around \(50\%\) of the point falls below the fit. But, as the plot shows, this fraction varies widely along x. There is clearly a non-linear relation between the quantile location and x, hence we add a smooth for x.

fit <- qgam(y~s(x), qu = qu, data = dataf)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5.........done
cqcheck(obj = fit, v = c("x"), X = dataf, y = y)

The deviations from the theoretical quantile (\(0.5\)) are much reduced, but let's look across both x and z.

cqcheck(obj = fit, v = c("x", "z"), X = dataf, y = y, nbin = c(5, 5))

This plot uses binning as before, if a bin is red (green) this means that the fraction of responses falling below the fit is smaller (larger) than 0.5. Bright colours means that the deviation is statistically significant. As we move along z (x2 in the plot) the colour changes from green to red, so it make sense drawing a marginal plot for z:

cqcheck(obj = fit, v = c("z"), X = dataf, y = y, nbin = c(10))

We are clearly missing an effect here. Given that effect looks pretty linear, we simply add a parametric term to the fit, which seems to solve the problem:

fit <- qgam(y~s(x)+z, qu = qu, data = dataf)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5.........done
cqcheck(obj = fit, v = c("z"))

But if we look again across both x and z we see that green prevails on the top-left to bottom-right diagonal, while the other diagonal is mainly red.

cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5))

This suggests that adding an interaction between x and z might be a good idea. Indeed, now cqcheck does not signal any problem:

fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5........done
cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5))

Now that we are fairly satisfied with the model structure, we can, for instance, fit several quantiles by doing:

fit <- mqgam(y~s(x)+z+I(x*z), qu = c(0.2, 0.4, 0.6, 0.8), data = dataf)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.4........done 
## qu = 0.6.........done 
## qu = 0.2.......done 
## qu = 0.8...............done
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully

We can then check whether the learning rate was selected correctly. Recall that the qgam function calls internally tuneLearnFast, hence we can look at how the calibration went by doing:

check.learnFast(fit$calibr, 2:5)

For each quantile, the calibration loss seems to have a unique minimum, which is what one would hope. Objects of class qgam can also be checked using the generic function check, which defaults to check.qgam. To use this function on the output of mqgam, we must use the qdo function:

qdo(fit, 0.2, check)

## Theor. proportion of neg. resid.: 0.2   Actual proportion: 0.198
## Integrated absolute bias |F(mu) - F(mu0)| = 0.01025554
## Method: REML   Optimizer: outer newton
## full convergence after 1 iteration.
## Gradient range [6.47955e-10,6.47955e-10]
## (score 1654.726 & scale 1).
## Hessian positive definite, eigenvalue range [3.788784,3.788784].
## Model rank =  12 / 12 
## 
## Basis dimension (k) check: if edf is close to k' (maximum possible edf) 
## it might be worth increasing k. 
## 
##      k'  edf
## s(x)  9 7.39
## NULL

The printed output gives some information about the optimizer used to estimate the smoothing parameters, for fixed learning rate. See ?check.qgam for more information. The plot has been obtained using cqcheck, where each data point has been binned using the fitted values. On the right side of the plot there seems to be some large deviations, but the rug shows that there are very few data points there.

5 Setting the loss-smoothing parameter and checking convergence

Let's simulate some data:

set.seed(5235)
n <- 1000
x <- seq(-3, 3, length.out = n)
X <- cbind(1, x, x^2)
beta <- c(0, 1, 1)
f <- drop(X %*% beta)
dat <- f + rgamma(n, 4, 1)
dataf <- data.frame(cbind(dat, x))
names(dataf) <- c("y", "x")

Assume that we want to estimate quantiles 0.05, 0.5 and 0.95:

qus <- c(0.05, 0.5, 0.95)
fit <- mqgam(y ~ s(x), data = dataf, qu = qus)
## Estimating learning rate. Each dot corresponds to a loss evaluation. 
## qu = 0.5........done 
## qu = 0.95.........done 
## qu = 0.05.................done
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
plot(x, dat, col = "grey", ylab = "y")
lines(x, f + qgamma(0.95, 4, 1), lty = 2)
lines(x, f + qgamma(0.5, 4, 1), lty = 2)
lines(x, f + qgamma(0.05, 4, 1), lty = 2)
lines(x, qdo(fit, qus[1], predict), col = 2)
lines(x, qdo(fit, qus[2], predict), col = 2)
lines(x, qdo(fit, qus[3], predict), col = 2)

Since qgam version 1.3 the parameter err, which determines the smoothness of the loss function used by qgam, is determined automatically. But there might be scenarios where you might want to chose is manually, so let's try to use several values of err:

lfit <- lapply(c(0.01, 0.05, 0.1, 0.2, 0.3, 0.5),
               function(.inp){
                 mqgam(y ~ s(x), data = dataf, qu = qus, err = .inp,
                       control = list("progress" = F))
               })
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
## Warning in newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,
## : Fitting terminated with step failure - check results carefully
plot(x, dat, col = "grey", ylab = "y", ylim = c(-2, 20))
colss <- rainbow(length(lfit))
for(ii in 1:length(lfit)){
  lines(x, qdo(lfit[[ii]], qus[1], predict), col = colss[ii])
  lines(x, qdo(lfit[[ii]], qus[2], predict), col = colss[ii])
  lines(x, qdo(lfit[[ii]], qus[3], predict), col = colss[ii])
}
lines(x, f + qgamma(0.95, 4, 1), lty = 2)
lines(x, f + qgamma(0.5, 4, 1), lty = 2)
lines(x, f + qgamma(0.05, 4, 1), lty = 2)

The bias increases with err, and it is upward (downward) for high (low) quantiles. The median fit is not much affected by err. The bias really starts appearing for err > 0.1. Decreasing err tends to slow down computation:

system.time( fit1 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.05,
                           control = list("progress" = F)) )[[3]]
## [1] 0.347
system.time( fit2 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.001,
                           control = list("progress" = F)) )[[3]]
## [1] 47.322

Even worse, it can lead to numeric problems. Here we check that we have found the minimum of the calibration loss:

check(fit1$calibr, sel = 2)

check(fit2$calibr, sel = 2)

In the first case the loss looks smooth and with as single minimum, in the second case we have some instabilities. If the calibration loss looks like this, you generally have to increase err.

We can use check to have an estimate of the bias and to have information regarding the convergence of the smoothing parameter estimation routine:

check(fit1)

## Theor. proportion of neg. resid.: 0.95   Actual proportion: 0.951
## Integrated absolute bias |F(mu) - F(mu0)| = 0.001017127
## Method: REML   Optimizer: outer newton
## full convergence after 1 iteration.
## Gradient range [-1.027622e-11,-1.027622e-11]
## (score 3438.722 & scale 1).
## Hessian positive definite, eigenvalue range [1.428662,1.428662].
## Model rank =  10 / 10 
## 
## Basis dimension (k) check: if edf is close to k' (maximum possible edf) 
## it might be worth increasing k. 
## 
##      k'  edf
## s(x)  9 5.05

The second plot suggest that the actual bias is much lower than the bound err = 0.05. This is also supported by the first two lines of text, which say that 95.1% of the residuals are negative, which is very close to the theoretical 95%. The text says that full convergence in smoothing parameter estimation has been achieved, it is important to check this.

In summary, practical experience suggests that:

  • the automatic procedure for selecting err offer a good compromise between bias and stability;
  • the old default (qgam version < 1.3) was err = 0.05, which generally does not imply too much bias;
  • if the calibration loss plotted by check(fit$learn) is irregular, try to increase err;
  • same if the text printed by check(fit) does not say that full convergence was achieved;
  • you can estimate the bias using check(fit);
  • if you have to increase err to 0.2 or higher, there might be something wrong with your model;
  • you might get messages saying that outer Newton did not converge fully during estimation. This might not be problematic as long as the calibration loss is smooth and full convergence was achieved;
  • in preliminary studies do not decrease err too much, as it slows down computation;
  • setting err too low is not a good idea: it is much better to have some bias than numerical problems.

6 Application to probabilistic electricity load forecasting

Here we consider a UK electricity demand dataset, taken from the national grid website. The dataset covers the period January 2011 to June 2016 and it contains the following variables:

  • NetDemand net electricity demand between 11:30am and 12am.
  • wM instantaneous temperature, averaged over several English cities.
  • wM_s95 exponential smooth of wM, that is wM_s95[i] = a*wM[i] + (1-a)*wM_s95[i] with a=0.95.
  • Posan periodic index in [0, 1] indicating the position along the year.
  • Dow factor variable indicating the day of the week.
  • Trend progressive counter, useful for defining the long term trend.
  • NetDemand.48 lagged version of NetDemand, that is NetDemand.48[i] = NetDemand[i-2].
  • Holy binary variable indicating holidays.
  • Year and Date should obvious, and partially redundant.

See Fasiolo et al., 2017 for more details. This is how the demand over the period looks like:

data("UKload")
tmpx <- seq(UKload$Year[1], tail(UKload$Year, 1), length.out = nrow(UKload)) 
plot(tmpx, UKload$NetDemand, type = 'l', xlab = 'Year', ylab = 'Load')

To estimate the median demand, we consider the following model

qu <- 0.5
form <- NetDemand~s(wM,k=20,bs='cr') + s(wM_s95,k=20,bs='cr') + 
        s(Posan,bs='ad',k=30,xt=list("bs"="cc")) + Dow + s(Trend,k=4) + NetDemand.48 + Holy

Notice that we use very few knots for the long term trend, this is because we don't want to end up interpolating the data. We use an adaptive cyclic smooth for Posan, we'll explain later why adaptivity is needed here.

Now we tune the learning rate on a grid, on two cores. As the first plot shows, the calibrations loss is minimized at \(\log (\sigma)\approx 6\), the second plot shows how the effective degrees of freedom of each smooth term changes with \(\log (\sigma)\).

set.seed(41241)
sigSeq <- seq(4, 8, length.out = 16)
closs <- tuneLearn(form = form, data = UKload, 
                   lsig = sigSeq, qu = qu, control = list("K" = 20), 
                   multicore = TRUE, ncores = 2)

check(closs)

Now let's fit the model with the learning rate corresponding to the lowest loss and let's look at the resulting smooth effects.

lsig <- closs$lsig
fit <- qgam(form = form, data = UKload, lsig = lsig, qu = qu)
plot(fit, scale = F, page = 1)

The effect of temperature (wM) is minimized around 18 degrees, which is reasonable. The cyclic effect of Posan has a very sharp drop corresponding to the winter holidays, we used an adaptive smooth in order to have more flexibility during this period. Now we can have a look as some diagnostic plot:

par(mfrow = c(2, 2))
cqcheck(fit, v = c("wM"), main = "wM")
cqcheck(fit, v = c("wM_s95"), main = "wM_s95")
cqcheck(fit, v = c("Posan"), main = "Posan")
cqcheck(fit, v = c("Trend"), main = "Trend", xaxt='n')
axis(1, at = UKload$Trend[c(1, 500, 1000, 1500, 2000)], 
             UKload$Year[c(1, 500, 1000, 1500, 2000)] )

The plots for wM_s95 and Posan don't show any important deviation from 0.5, the target quantile. Along wM we see a large deviation, but we have essentially no data for very high temperatures. If we look at deviations along the Trend variable, which is just a time counter, we see several important deviations. It would be interesting verifying why these occur (we have no answer currently).

Finally, recall that we can produce 2D versions of these diagnostic plots, for instance:

par(mfrow = c(1, 1))
cqcheck(fit, v = c("wM", "Posan"), scatter = T)

7 References

  • Fasiolo, M., Goude, Y., Nedellec, R. and Wood, S. N. (2017). Fast calibrated additive quantile regression. Available at https://arxiv.org/abs/1707.03307

  • Fasiolo, M., Nedellec, R., Goude, Y. and Wood, S.N. (2018). Scalable visualisation methods for modern Generalized Additive Models. Available at https://arxiv.org/abs/1809.10632

qgam/inst/doc/qgam.Rmd0000644000176200001440000005410714775705616014343 0ustar liggesusers--- title: "qgam: quantile non-parametric additive models" date: '`r format(Sys.Date(), "%B %d %Y")`' author: "Matteo Fasiolo, Simon N. Wood, Yannig Goude, and Raphael Nedellec" output: html_document: toc: true number_sections: true vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{quantile_mgcViz} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} library(knitr) opts_chunk$set(out.extra='style="display:block; margin: auto"', fig.align="center", tidy=FALSE) ``` This R package offers methods for fitting additive quantile regression models based on splines, using the methods described in [Fasiolo et al., 2017](https://arxiv.org/abs/1707.03307). The main fitting functions are: - `qgam()` fits an additive quantile regression model to a single quantile. Very similar to `mgcv::gam()`. It returns an object of class `qgam`, which inherits from `mgcv::gamObject`. - `mqgam()` fits the same additive quantile regression model to several quantiles. It is more efficient that calling `qgam()` several times, especially in terms of memory usage. - `tuneLearn()` useful for tuning the learning rate of the Gibbs posterior. It evaluates a calibration loss function on a grid of values provided by the user. - `tuneLearnFast()` similar to `tuneLearn()`, but here the learning rate is selected by minimizing the calibration loss, using Brent method. A first example: smoothing the motorcycle dataset ======================= Let's start with a simple example. Here we are fitting a regression model with an adaptive spline basis to quantile 0.8 of the motorcycle dataset. ```{r 1, message = F} library(qgam); library(MASS) if( suppressWarnings(require(RhpcBLASctl)) ){ blas_set_num_threads(1) } # Optional fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` `qgam` automatically calls `tuneLearnFast` to select the learning rate. The results of the calibrations are stored in `fit$calibr`. We can check whether the optimization succeded as follows: ```{r 2} check(fit$calibr, 2) ``` The plot suggest that the calibration criterion has a single minimum, and that the optimizer has converged to its neighbourhood. Alternatively, we could have selected the learning rate by evaluating the loss function on a grid. ```{r 3, message = F} set.seed(6436) cal <- tuneLearn(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8, lsig = seq(1, 3, length.out = 20), control = list("progress" = "none")) #<- sequence of values for learning rate check(cal) ``` Here the generic `check` function produces a different output. The first plot is the calibration criterion as a function of $log(\sigma)$, which should look fairly smooth. The second plot shows how the effective degrees of freedom (EDF) vary with $log(\sigma)$. Notice that here we are using an adaptive smoother, which includes five smoothing parameters. We might want to fit several quantiles at once. This can be done with `mqgam`. ```{r 4} quSeq <- c(0.2, 0.4, 0.6, 0.8) set.seed(6436) fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) ``` To save memory `mqgam` does not return one `mgcv::gamObject` for each quantile, but it avoids storing some redundant data (such as several copies of the design matrix). The output of `mqgam` can be manipulated using the `qdo` function. ```{r 5} # Plot the data xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) # Predict each quantile curve and plot for(iq in quSeq){ pred <- qdo(fit, iq, predict, newdata = xSeq) lines(xSeq$times, pred, col = 2) } ``` Using `qdo` we can print out the summary for each quantile, for instance: ```{r 6} # Summary for quantile 0.4 qdo(fit, qu = 0.4, summary) ``` Notice that here the generic function `summary` is calling `summary.gam`, because `summary.qgam` has not been implemented yet. Hence one cannot quite rely on the p-value provided by this function, because their are calculated using result that apply to parametric, not quantile, regression. Handling big data sets ======================= Since version 2.0, `qgam` can handle big data sets by setting the argument `discrete = TRUE`. This is particularly useful when the number of observations is very large. In this case, the function `qgam` will use a discrete representation of the covariates (provided by `mgcv::bam`, see `?bam` for details), which is much more memory and computationally efficient. Here is a simple simulated example: ```{r} dat <- gamSim(1, n=40000, dist="normal", scale=2) b <- qgam(y ~ s(x0)+s(x1)+s(x2)+s(x3),data=dat, qu = 0.1, discrete = TRUE) plot(b, pages = 1) ``` You can check this model takes around 5 seconds to fit, while setting `discrete = FALSE` would take much longer (but the fit is almost identical). Dealing with heteroscedasticity ======================= Let us simulate some data from an heteroscedastic model. ```{r h1} set.seed(651) n <- 2000 x <- seq(-4, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma = 1.2 + sin(2*x) f <- drop(X %*% beta) dat <- f + rnorm(n, 0, sigma) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma)) } ``` We now fit ten quantiles between 0.05 and 0.95, using a quantile GAM with scalar learning rate. ```{r h2} fit <- mqgam(y~s(x, k = 30, bs = "cr"), data = dataf, qu = qus) qus <- seq(0.05, 0.95, length.out = 5) plot(x, dat, col = "grey", ylab = "y") for(iq in qus){ lines(x, qnorm(iq, f, sigma), col = 2) lines(x, qdo(fit, iq, predict)) } legend("top", c("truth", "fitted"), col = 2:1, lty = rep(1, 2)) ``` With the exception of `qu = 0.95`, the fitted quantiles are close to the true ones, but their credible intervals don't vary much with x. Indeed, let's look at intervals for quantile 0.95. ```{r h3} plot(x, dat, col = "grey", ylab = "y") tmp <- qdo(fit, 0.95, predict, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ``` We can get better credible intervals, and solve the "wigglines" problem for the top quantile, by letting the learning rate vary with the covariate. In particular, we can use an additive model for quantile location and one for learning rate. ```{r h4} fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), data = dataf, qu = 0.95) plot(x, dat, col = "grey", ylab = "y") tmp <- predict(fit, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 3 * tmp$se.fit, col = 2) lines(x, tmp$fit - 3 * tmp$se.fit, col = 2) ``` Now the credible intervals correctly represent the underlying uncertainty, and the fit has the correct amount of smoothness. Neglecting to take the heteroscedasticity into account can lead to bias, in addition to inadequate coverage of the credible intervals. Let's go back the motorcycle data set, and to the first model we fitted: ```{r mcy2rnd, message = F} fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.8) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` The slightly disturbing thing about this quantile fit is that for `Times < 10` the fit is clearly above all the responses. But we are fitting quantile 0.8, hence we should expect around 20$\%$ of the responses to be above the fit. The problem here is that the variance of the response (`accel`) varies wildly with `Times`, so that the bias induced by the smoothed pinball loss used by `qgam` is not constant (see Fasiolo et al. 2017 for details). This issue is solved by letting the learning rate change with `Times`: ```{r mcy2rnd2, message = F} fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = 0.8) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ``` Model checking ======================= The `qgam` package provides some functions that can be useful for model checking, but a more complete set of visualisation and checking tools can be found in the `mgcViz` R package (Fasiolo et al., 2018). In `qgam` we have: - `cqcheck` if we are fitting, say, quantile 0.2 we expect roughly $20\%$ of the observations to fall below the fitted quantile. This function produces some plots to verify this. - `cqcheckI` interactive version of `cqcheckI`. Implemented using the `shiny` package. Not demonstrated here, but see `?cqcheckI`. - `check.qgam` provides some diagnostics regarding the optimization. Mainly based to `gam.check`. - `check.learn` diagnostic checks to verify that the learning rate selection went well. It can be used on the output of `tuneLearn`. - `check.tuneLearn` similar to `check.learn`, but it can be used on the output of `tuneLearn` or on the `$calibr` slot of a `qgam` object. We start by illustrating the `cqcheck` function. In particular, let us consider the additive model: $$ y \sim x+x^2+z+xz/2+e,\;\;\; e \sim N(0, 1) $$ We start by simulating some data from it. ```{r c1} library(qgam) set.seed(15560) n <- 1000 x <- rnorm(n, 0, 1); z <- rnorm(n) X <- cbind(1, x, x^2, z, x*z) beta <- c(0, 1, 1, 1, 0.5) y <- drop(X %*% beta) + rnorm(n) dataf <- data.frame(cbind(y, x, z)) names(dataf) <- c("y", "x", "z") ``` We fit a linear model to the median and we use `cqcheck` produce a diagnostic plot. ```{r c2} qu <- 0.5 fit <- qgam(y~x, qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ``` The `cqcheck` function takes a `qgam` object as input and it predicts the conditional quantile using the data in `X`. Then it bins the responses `y` using the corresponding values of `v` and it calculates, for every bin, what fraction of responses falls below the fitted quantile. Given that we are fitting the median, we would expect that around $50\%$ of the point falls below the fit. But, as the plot shows, this fraction varies widely along `x`. There is clearly a non-linear relation between the quantile location and `x`, hence we add a smooth for `x`. ```{r c3, message = F} fit <- qgam(y~s(x), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x"), X = dataf, y = y) ``` The deviations from the theoretical quantile ($0.5$) are much reduced, but let's look across both `x` and `z`. ```{r c4, message = F} cqcheck(obj = fit, v = c("x", "z"), X = dataf, y = y, nbin = c(5, 5)) ``` This plot uses binning as before, if a bin is red (green) this means that the fraction of responses falling below the fit is smaller (larger) than 0.5. Bright colours means that the deviation is statistically significant. As we move along `z` (`x2` in the plot) the colour changes from green to red, so it make sense drawing a marginal plot for `z`: ```{r c5, message = F} cqcheck(obj = fit, v = c("z"), X = dataf, y = y, nbin = c(10)) ``` We are clearly missing an effect here. Given that effect looks pretty linear, we simply add a parametric term to the fit, which seems to solve the problem: ```{r c6, message = F} fit <- qgam(y~s(x)+z, qu = qu, data = dataf) cqcheck(obj = fit, v = c("z")) ``` But if we look again across both `x` and `z` we see that green prevails on the top-left to bottom-right diagonal, while the other diagonal is mainly red. ```{r c7, message = F} cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ``` This suggests that adding an interaction between `x` and `z` might be a good idea. Indeed, now `cqcheck` does not signal any problem: ```{r c8, message = F} fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) cqcheck(obj = fit, v = c("x", "z"), nbin = c(5, 5)) ``` Now that we are fairly satisfied with the model structure, we can, for instance, fit several quantiles by doing: ```{r c9, message = F} fit <- mqgam(y~s(x)+z+I(x*z), qu = c(0.2, 0.4, 0.6, 0.8), data = dataf) ``` We can then check whether the learning rate was selected correctly. Recall that the `qgam` function calls internally `tuneLearnFast`, hence we can look at how the calibration went by doing: ```{r c10, message = F} check.learnFast(fit$calibr, 2:5) ``` For each quantile, the calibration loss seems to have a unique minimum, which is what one would hope. Objects of class `qgam` can also be checked using the generic function `check`, which defaults to `check.qgam`. To use this function on the output of `mqgam`, we must use the `qdo` function: ```{r c11, message = F} qdo(fit, 0.2, check) ``` The printed output gives some information about the optimizer used to estimate the smoothing parameters, for fixed learning rate. See `?check.qgam` for more information. The plot has been obtained using `cqcheck`, where each data point has been binned using the fitted values. On the right side of the plot there seems to be some large deviations, but the rug shows that there are very few data points there. Setting the loss-smoothing parameter and checking convergence ======================= Let's simulate some data: ```{r check1, message = F} set.seed(5235) n <- 1000 x <- seq(-3, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) f <- drop(X %*% beta) dat <- f + rgamma(n, 4, 1) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") ``` Assume that we want to estimate quantiles 0.05, 0.5 and 0.95: ```{r check2, message = F} qus <- c(0.05, 0.5, 0.95) fit <- mqgam(y ~ s(x), data = dataf, qu = qus) plot(x, dat, col = "grey", ylab = "y") lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) lines(x, qdo(fit, qus[1], predict), col = 2) lines(x, qdo(fit, qus[2], predict), col = 2) lines(x, qdo(fit, qus[3], predict), col = 2) ``` Since `qgam` version 1.3 the parameter `err`, which determines the smoothness of the loss function used by `qgam`, is determined automatically. But there might be scenarios where you might want to chose is manually, so let's try to use several values of `err`: ```{r check2b, message = F} lfit <- lapply(c(0.01, 0.05, 0.1, 0.2, 0.3, 0.5), function(.inp){ mqgam(y ~ s(x), data = dataf, qu = qus, err = .inp, control = list("progress" = F)) }) plot(x, dat, col = "grey", ylab = "y", ylim = c(-2, 20)) colss <- rainbow(length(lfit)) for(ii in 1:length(lfit)){ lines(x, qdo(lfit[[ii]], qus[1], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[2], predict), col = colss[ii]) lines(x, qdo(lfit[[ii]], qus[3], predict), col = colss[ii]) } lines(x, f + qgamma(0.95, 4, 1), lty = 2) lines(x, f + qgamma(0.5, 4, 1), lty = 2) lines(x, f + qgamma(0.05, 4, 1), lty = 2) ``` The bias increases with `err`, and it is upward (downward) for high (low) quantiles. The median fit is not much affected by `err`. The bias really starts appearing for `err > 0.1`. Decreasing `err` tends to slow down computation: ```{r check3, message = F} system.time( fit1 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.05, control = list("progress" = F)) )[[3]] system.time( fit2 <- qgam(y ~ s(x), data = dataf, qu = 0.95, err = 0.001, control = list("progress" = F)) )[[3]] ``` Even worse, it can lead to numeric problems. Here we check that we have found the minimum of the calibration loss: ```{r check4, message = F} check(fit1$calibr, sel = 2) check(fit2$calibr, sel = 2) ``` In the first case the loss looks smooth and with as single minimum, in the second case we have some instabilities. If the calibration loss looks like this, you generally have to increase `err`. We can use `check` to have an estimate of the bias and to have information regarding the convergence of the smoothing parameter estimation routine: ```{r check5, message = F} check(fit1) ``` The second plot suggest that the actual bias is much lower than the bound `err = 0.05`. This is also supported by the first two lines of text, which say that 95.1\% of the residuals are negative, which is very close to the theoretical 95\%. The text says that full convergence in smoothing parameter estimation has been achieved, it is important to check this. In summary, practical experience suggests that: - the automatic procedure for selecting `err` offer a good compromise between bias and stability; - the old default (`qgam` version < 1.3) was `err = 0.05`, which generally does not imply too much bias; - if the calibration loss plotted by `check(fit$learn)` is irregular, try to increase `err`; - same if the text printed by `check(fit)` does not say that `full convergence` was achieved; - you can estimate the bias using `check(fit)`; - if you have to increase `err` to 0.2 or higher, there might be something wrong with your model; - you might get messages saying that `outer Newton did not converge fully` during estimation. This might not be problematic as long as the calibration loss is smooth and `full convergence` was achieved; - in preliminary studies do not decrease `err` too much, as it slows down computation; - setting `err` too low is not a good idea: it is much better to have some bias than numerical problems. Application to probabilistic electricity load forecasting ======================= Here we consider a UK electricity demand dataset, taken from the national grid [website](https://www.nationalgrid.com/). The dataset covers the period January 2011 to June 2016 and it contains the following variables: - `NetDemand` net electricity demand between 11:30am and 12am. - `wM` instantaneous temperature, averaged over several English cities. - `wM_s95` exponential smooth of `wM`, that is `wM_s95[i] = a*wM[i] + (1-a)*wM_s95[i]` with `a=0.95`. - `Posan` periodic index in `[0, 1]` indicating the position along the year. - `Dow` factor variable indicating the day of the week. - `Trend` progressive counter, useful for defining the long term trend. - `NetDemand.48` lagged version of `NetDemand`, that is `NetDemand.48[i] = NetDemand[i-2]`. - `Holy` binary variable indicating holidays. - `Year` and `Date` should obvious, and partially redundant. See [Fasiolo et al., 2017](https://arxiv.org/abs/1707.03307) for more details. This is how the demand over the period looks like: ```{r edf1} data("UKload") tmpx <- seq(UKload$Year[1], tail(UKload$Year, 1), length.out = nrow(UKload)) plot(tmpx, UKload$NetDemand, type = 'l', xlab = 'Year', ylab = 'Load') ``` To estimate the median demand, we consider the following model ```{r edf2} qu <- 0.5 form <- NetDemand~s(wM,k=20,bs='cr') + s(wM_s95,k=20,bs='cr') + s(Posan,bs='ad',k=30,xt=list("bs"="cc")) + Dow + s(Trend,k=4) + NetDemand.48 + Holy ``` Notice that we use very few knots for the long term trend, this is because we don't want to end up interpolating the data. We use an adaptive cyclic smooth for `Posan`, we'll explain later why adaptivity is needed here. Now we tune the learning rate on a grid, on two cores. As the first plot shows, the calibrations loss is minimized at $\log (\sigma)\approx 6$, the second plot shows how the effective degrees of freedom of each smooth term changes with $\log (\sigma)$. ```{r edf3, message=FALSE} set.seed(41241) sigSeq <- seq(4, 8, length.out = 16) closs <- tuneLearn(form = form, data = UKload, lsig = sigSeq, qu = qu, control = list("K" = 20), multicore = TRUE, ncores = 2) check(closs) ``` Now let's fit the model with the learning rate corresponding to the lowest loss and let's look at the resulting smooth effects. ```{r edf4} lsig <- closs$lsig fit <- qgam(form = form, data = UKload, lsig = lsig, qu = qu) plot(fit, scale = F, page = 1) ``` The effect of temperature (`wM`) is minimized around 18 degrees, which is reasonable. The cyclic effect of `Posan` has a very sharp drop corresponding to the winter holidays, we used an adaptive smooth in order to have more flexibility during this period. Now we can have a look as some diagnostic plot: ```{r edf5} par(mfrow = c(2, 2)) cqcheck(fit, v = c("wM"), main = "wM") cqcheck(fit, v = c("wM_s95"), main = "wM_s95") cqcheck(fit, v = c("Posan"), main = "Posan") cqcheck(fit, v = c("Trend"), main = "Trend", xaxt='n') axis(1, at = UKload$Trend[c(1, 500, 1000, 1500, 2000)], UKload$Year[c(1, 500, 1000, 1500, 2000)] ) ``` The plots for `wM_s95` and `Posan` don't show any important deviation from 0.5, the target quantile. Along `wM` we see a large deviation, but we have essentially no data for very high temperatures. If we look at deviations along the `Trend` variable, which is just a time counter, we see several important deviations. It would be interesting verifying why these occur (we have no answer currently). Finally, recall that we can produce 2D versions of these diagnostic plots, for instance: ```{r edf6} par(mfrow = c(1, 1)) cqcheck(fit, v = c("wM", "Posan"), scatter = T) ``` References ======================= * Fasiolo, M., Goude, Y., Nedellec, R. and Wood, S. N. (2017). Fast calibrated additive quantile regression. Available at https://arxiv.org/abs/1707.03307 * Fasiolo, M., Nedellec, R., Goude, Y. and Wood, S.N. (2018). Scalable visualisation methods for modern Generalized Additive Models. Available at https://arxiv.org/abs/1809.10632 qgam/build/0000755000176200001440000000000014775743132012313 5ustar liggesusersqgam/build/vignette.rds0000644000176200001440000000031414775743132014650 0ustar liggesusers‹‹àb```b`afd`b2™… 1# 'æ(LOÌÕ ÊMAç/,MÌ+ÉÌIÏMOˬB“ækË(ÉÍA“`ƒ˜´X, ‘&$U¬y‰¹©ÅhZÙ]R RóR@Âÿ°ëgüîzïÔÊòü"˜5lP5,n@_Àì É,s˜\Ü LÆ t7`˜â~΢ür=˜xAÁÜ$þºG“s‹Ñ=Ê•’X’¨—VÔr7Vרqgam/build/partial.rdb0000644000176200001440000000007514775742676014456 0ustar liggesusers‹‹àb```b`afd`b1…À€… H02°0piÖ¼ÄÜÔb C"Éð‰{7qgam/man/0000755000176200001440000000000014775742642011774 5ustar liggesusersqgam/man/qdo.Rd0000644000176200001440000000313313462144020013020 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/qdo.R \name{qdo} \alias{qdo} \title{Manipulating the output of \code{mqgam}} \usage{ qdo(obj, qu = NULL, fun = I, ...) } \arguments{ \item{obj}{the output of a \code{mqgam} call.} \item{qu}{A vector whose elements must be in (0, 1). Each element indicates a quantile of interest, which should be an element of \code{names(obj$fit)}. If left to \code{NULL} the function \code{fun} will be applied to each of the quantile fits in \code{obj}.} \item{fun}{The method or function that we want to use on the \code{gamObject} corresponding to quantile \code{qu}. For instance \code{predict}, \code{plot} or \code{summary}. By default this is the identity function (\code{I}), which means that the fitted model for quantile \code{qu} is returned.} \item{...}{Additional arguments to be passed to \code{fun}.} } \value{ A list where the i-th entry is the output of \code{fun} (whatever that is) corresponding to quantile \code{qu[i]}. } \description{ Contrary to \code{qgam}, \code{mqgam} does not output a standard \code{gamObject}, hence methods such as \code{predict.gam} or \code{plot.gam} cannot be used directly. \code{qdo} provides a simple wrapper for such methods. } \examples{ library(qgam); library(MASS) quSeq <- c(0.4, 0.6) set.seed(737) fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) qdo(fit, 0.4, summary) invisible(qdo(fit, 0.4, plot, pages = 1)) # Return the object for qu = 0.6 and then plot it tmp <- qdo(fit, 0.6) plot(tmp) } \author{ Matteo Fasiolo . } qgam/man/elf.Rd0000644000176200001440000000436614775742542013041 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/elf.R \name{elf} \alias{elf} \title{Extended log-F model with fixed scale} \usage{ elf(theta = NULL, link = "identity", qu, co) } \arguments{ \item{theta}{a scalar representing the log-scale log(sigma).} \item{link}{the link function between the linear predictor and the quantile location.} \item{qu}{parameter in (0, 1) representing the chosen quantile. For instance, to fit the median choose \code{qu=0.5}.} \item{co}{positive constant used to determine parameter lambda of the ELF density (lambda = co / sigma). Can be vector valued.} } \value{ An object inheriting from mgcv's class \code{extended.family}. } \description{ The \code{elf} family implements the Extended log-F density of Fasiolo et al. (2017) and it is supposed to work in conjuction with the extended GAM methods of Wood et al. (2017), implemented by \code{mgcv}. It differs from the \code{elflss} family, because here the scale of the density (sigma, aka the learning rate) is a single scalar, while in \code{elflss} it can depend on the covariates. At the moment the family is mainly intended for internal use, use the \code{qgam} function to fit quantile GAMs based on ELF. } \details{ This function is meant for internal use only. } \examples{ library(qgam) set.seed(2) dat <- gamSim(1,n=400,dist="normal",scale=2) # Fit median using elf directly: FAST BUT NOT RECOMMENDED fit <- gam(y~s(x0)+s(x1)+s(x2)+s(x3), family = elf(co = 0.1, qu = 0.5), data = dat) plot(fit, scale = FALSE, pages = 1) # Using qgam: RECOMMENDED fit <- qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.8) plot(fit, scale = FALSE, pages = 1) } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. Wood, Simon N., Pya, N. and Safken, B. (2017). Smoothing parameter and model selection for general smooth models. Journal of the American Statistical Association. } \author{ Matteo Fasiolo and Simon N. Wood. } qgam/man/qgam.Rd0000644000176200001440000001213214775742542013206 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/qgam.R \name{qgam} \alias{qgam} \title{Fit a smooth additive quantile regression model} \usage{ qgam( form, data, qu, discrete = FALSE, lsig = NULL, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL ) } \arguments{ \item{form}{A GAM formula, or a list of formulae. See ?mgcv::gam details.} \item{data}{A data frame or list containing the model response variable and covariates required by the formula. By default the variables are taken from environment(formula): typically the environment from which gam is called.} \item{qu}{The quantile of interest. Should be in (0, 1).} \item{discrete}{If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details.} \item{lsig}{The value of the log learning rate used to create the Gibbs posterior. By defauls \code{lsig=NULL} and this parameter is estimated by posterior calibration described in Fasiolo et al. (2017). Obviously, the function is much faster if the user provides a value.} \item{err}{An upper bound on the error of the estimated quantile curve. Should be in (0, 1). Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). The old default was \code{err=0.05}.} \item{multicore}{If TRUE the calibration will happen in parallel.} \item{cluster}{An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster.} \item{ncores}{Number of cores used. Relevant if \code{multicore == TRUE}.} \item{paropts}{a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.} \item{control}{A list of control parameters. The only one relevant here is \code{link}, which is the link function used (see \code{?elf} and \code{?elflss} for defaults). All other control parameters are used by \code{tuneLearnFast}. See \code{?tuneLearnFast} for details.} \item{argGam}{A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}.} } \value{ A \code{gamObject}. See \code{?gamObject}. } \description{ This function fits a smooth additive regression model for a single quantile. } \examples{ ##### # Univariate "car" example #### library(qgam); library(MASS) # Fit for quantile 0.5 using the best sigma set.seed(6436) fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.5) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) \dontrun{ # You can get a better fit by letting the learning rate change with "accel" # For instance fit <- qgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = 0.8) pred <- predict(fit, newdata = xSeq, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(xSeq$times, pred$fit, lwd = 1) lines(xSeq$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(xSeq$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) } ##### # Multivariate Gaussian example #### library(qgam) set.seed(2) dat <- gamSim(1,n=400,dist="normal",scale=2) fit <- qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) plot(fit, scale = FALSE, pages = 1) ###### # Heteroscedastic example ###### \dontrun{ set.seed(651) n <- 2000 x <- seq(-4, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma = 1.2 + sin(2*x) f <- drop(X \%*\% beta) dat <- f + rnorm(n, 0, sigma) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") fit <- qgam(list(y~s(x, k = 30, bs = "cr"), ~ s(x, k = 30, bs = "cr")), data = dataf, qu = 0.95) plot(x, dat, col = "grey", ylab = "y") tmp <- predict(fit, se = TRUE) lines(x, tmp$fit) lines(x, tmp$fit + 2 * tmp$se.fit, col = 2) lines(x, tmp$fit - 2 * tmp$se.fit, col = 2) } } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2021. qgam: Bayesian Nonparametric Quantile Regression Modeling in R. Journal of Statistical Software, 100(9), 1-31, \doi{10.18637/jss.v100.i09}. } \author{ Matteo Fasiolo . } qgam/man/tuneLearnFast.Rd0000644000176200001440000002266414775742542015047 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tuneLearnFast.R \name{tuneLearnFast} \alias{tuneLearnFast} \title{Fast learning rate calibration for the Gibbs posterior} \usage{ tuneLearnFast( form, data, qu, discrete = FALSE, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL ) } \arguments{ \item{form}{A GAM formula, or a list of formulae. See ?mgcv::gam details.} \item{data}{A data frame or list containing the model response variable and covariates required by the formula. By default the variables are taken from environment(formula): typically the environment from which gam is called.} \item{qu}{The quantile of interest. Should be in (0, 1).} \item{discrete}{If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details.} \item{err}{An upper bound on the error of the estimated quantile curve. Should be in (0, 1). Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). The old default was \code{err=0.05}.} \item{multicore}{If TRUE the calibration will happen in parallel.} \item{cluster}{An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster.} \item{ncores}{Number of cores used. Relevant if \code{multicore == TRUE}.} \item{paropts}{a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.} \item{control}{A list of control parameters for \code{tuneLearn} with entries: \itemize{ \item{\code{loss} = loss function use to tune log(sigma). If \code{loss=="cal"} is chosen, then log(sigma) is chosen so that credible intervals for the fitted curve are calibrated. See Fasiolo et al. (2017) for details. If \code{loss=="pin"} then log(sigma) approximately minimizes the pinball loss on the out-of-sample data.} \item{\code{sam} = sampling scheme use: \code{sam=="boot"} corresponds to bootstrapping and \code{sam=="kfold"} to k-fold cross-validation. The second option can be used only if \code{ctrl$loss=="pin"}.} \item{\code{vtype} = type of variance estimator used to standardize the deviation from the main fit in the calibration. If set to \code{"m"} the variance estimate obtained by the full data fit is used, if set to \code{"b"} than the variance estimated produced by the bootstrap fits are used. By default \code{vtype="m"}.} \item{\code{epsB} = positive tolerance used to assess convergence when fitting the regression coefficients on bootstrap data. In particular, if \code{|dev-dev_old|/(|dev|+0.1) 0 and values > 0.1 don't quite make sense. By default \code{aTol=0.05}.} \item{\code{redWd} = parameter which determines when the bracket will be reduced. If \code{redWd==10} then the bracket is halved if the nearest solution falls within the central 10\% of the bracket's width. By default \code{redWd = 10}.} \item{\code{b} = offset parameter used by the mgcv::gauslss, which we estimate to initialize the quantile fit (when a variance model is used). By default \code{b=0}.} \item{\code{link} = Link function to be used. See \code{?elf} and \code{?elflss} for defaults.} \item{\code{verbose} = if TRUE some more details are given. By default \code{verbose=FALSE}.} \item{\code{progress} = if TRUE progress in learning rate estimation is reported via printed text. \code{TRUE} by default.} }} \item{argGam}{A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}.} } \value{ A list with entries: \itemize{ \item{\code{lsig} = a vector containing the values of log(sigma) that minimize the loss function, for each quantile.} \item{\code{err} = the error bound used for each quantile. Generally each entry is identical to the argument \code{err}, but in some cases the function increases it to enhance stability.} \item{\code{ranges} = the search ranges by the Brent algorithm to find log-sigma, for each quantile. } \item{\code{store} = a list, where the i-th entry is a matrix containing all the locations (1st row) at which the loss function has been evaluated and its value (2nd row), for the i-th quantile.} \item{\code{final_fit} = a list, where the i-th entry is a list with the estimated conditional quantile (\code{mustart}), smoothing parameters (\code{in.out$sp}) and scale parameter (\code{in.out$scale}, should always be equal to 1) at the optimal value of log(sigma).} } } \description{ The learning rate (sigma) of the Gibbs posterior is tuned either by calibrating the credible intervals for the fitted curve, or by minimizing the pinball loss on out-of-sample data. This is done by bootrapping or by k-fold cross-validation. Here the loss function is minimized, for each quantile, using a Brent search. } \examples{ library(qgam); library(MASS) ### # Single quantile fit ### # Calibrate learning rate on a grid set.seed(5235) tun <- tuneLearnFast(form = accel~s(times,k=20,bs="ad"), data = mcycle, qu = 0.2) # Fit for quantile 0.2 using the best sigma fit <- qgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = 0.2, lsig = tun$lsig) pred <- predict(fit, se=TRUE) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) lines(mcycle$times, pred$fit, lwd = 1) lines(mcycle$times, pred$fit + 2*pred$se.fit, lwd = 1, col = 2) lines(mcycle$times, pred$fit - 2*pred$se.fit, lwd = 1, col = 2) ### # Multiple quantile fits ### # Calibrate learning rate on a grid quSeq <- c(0.25, 0.5, 0.75) set.seed(5235) tun <- tuneLearnFast(form = accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) # Fit using estimated sigmas fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq, lsig = tun$lsig) # Plot fitted quantiles plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) for(iq in quSeq){ pred <- qdo(fit, iq, predict) lines(mcycle$times, pred, col = 2) } \dontrun{ # You can get a better fit by letting the learning rate change with "accel" # For instance tun <- tuneLearnFast(form = list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = quSeq) fit <- mqgam(list(accel ~ s(times, k=20, bs="ad"), ~ s(times)), data = mcycle, qu = quSeq, lsig = tun$lsig) # Plot fitted quantiles plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) for(iq in quSeq){ pred <- qdo(fit, iq, predict) lines(mcycle$times, pred, col = 2) } } } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. } \author{ Matteo Fasiolo . } qgam/man/sigmoid.Rd0000644000176200001440000000242113301766721013701 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/sigmoid.R \name{sigmoid} \alias{sigmoid} \title{Sigmoid function and its derivatives} \usage{ sigmoid(y, deriv = FALSE) } \arguments{ \item{y}{a numeric vector.} \item{deriv}{if \code{TRUE} alse the first three derivatives of the sigmoid function will be computed.} } \value{ If \code{deriv==FALSE}, it returns a numeric vector equal to \code{1/(1+exp(-x))}. If \code{deriv==TRUE} it returns a list where the slot \code{$D0} contains \code{1/(1+exp(-x))}, while \code{$D1}, \code{$D2} and \code{$D3} contain its first three derivatives. } \description{ Calculates the sigmoid function and its derivatives. } \examples{ library(qgam) set.seed(90) h <- 1e-6 p <- rnorm(1e4, 0, 1e6) sigmoid(p[1:50]) - 1/(1+exp(-p[1:50])) ##### Testing sigmoid derivatives e1 <- abs((sigmoid(p+h) - sigmoid(p-h)) / (2*h) - sigmoid(p, TRUE)[["D1"]]) / (2*h) e2 <- abs((sigmoid(p+h, TRUE)$D1 - sigmoid(p-h, TRUE)$D1) / (2*h) - sigmoid(p, TRUE)[["D2"]]) / (2*h) e3 <- abs((sigmoid(p+h, TRUE)$D2 - sigmoid(p-h, TRUE)$D2) / (2*h) - sigmoid(p, TRUE)[["D3"]]) / (2*h) if( any(c(e1, e2, e3) > 1) ) stop("Sigmoid derivatives are not estimated accurately") } \author{ Matteo Fasiolo . } qgam/man/AUDem.Rd0000644000176200001440000000402713616054731013205 0ustar liggesusers\name{AUDem} \alias{AUDem} %- Also NEED an `\alias' for EACH other topic documented here. \title{Australian electricity demand data} \description{ Data set on electricity demand from Sidney, Australia. The data has been downloaded from \url{https://www.ausgrid.com.au}, and it originally contained electricity demand from 300 customers, at 30min resolution. We discarded 53 customers because their demand was too irregular, and we integrated the demand data with temperature data from the National Climatic Data Center, covering the same period. } %- end description \usage{ data(AUDem) } %- maybe also `usage' for other objects documented here. \format{\code{AUDem} is a list, where \code{AUDem$meanDem} is a \code{data.frame} containing the following variables: \describe{ \item{doy}{the day of the year, from 1 to 365;} \item{tod}{the time of day, ranging from 18 to 22, where 18 indicates the period from 17:00 to 17:30, 18.5 the period from 17:30 to 18:00 and so on;} \item{dem}{the demand (in KW) during a 30min period, averaged over the 247 households;} \item{dow}{factor variable indicating the day of the week;} \item{temp}{the external temperature at Sidney airport, in degrees Celsius;} \item{date}{local date and time;} \item{dem48}{the lagged mean demand, that is the average demand (dem) during the same 30min period of the previous day;} } The second element is \code{AUDem$qDem48} which is a matrix with as many rows as \code{AUDem$meanDem}. Each rows contains 20 equally spaced empirical quantiles of the lagged individual electricity demand of the 247 customers. } \value{A list where \code{AUDem$meanDem} is a data.frame and \code{AUDem$qDem48} a matrix. } \examples{ library(qgam) data(AUDem) # Mean demand over the period plot(AUDem$meanDem$dem, type = 'l') # 20 quantiles of individual demand over 5 days matplot(seq(0.01, 0.99, length.out = 20), t(AUDem$qDem48[c(1, 50, 75, 100, 250), ]), type = 'l', ylab = "Electricity demand (KW)", xlab = expression("Probability level " * "(p)"), lty = 1) } qgam/man/mqgam.Rd0000644000176200001440000001177514775742542013377 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mqgam.R \name{mqgam} \alias{mqgam} \title{Fit multiple smooth additive quantile regression models} \usage{ mqgam( form, data, qu, discrete = FALSE, lsig = NULL, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL ) } \arguments{ \item{form}{A GAM formula, or a list of formulae. See ?mgcv::gam details.} \item{data}{A data frame or list containing the model response variable and covariates required by the formula. By default the variables are taken from environment(formula): typically the environment from which gam is called.} \item{qu}{A vectors of quantiles of interest. Each entry should be in (0, 1).} \item{discrete}{If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details.} \item{lsig}{The value of the log learning rate used to create the Gibbs posterior. By defauls \code{lsig=NULL} and this parameter is estimated by posterior calibration described in Fasiolo et al. (2017). Obviously, the function is much faster if the user provides a value.} \item{err}{An upper bound on the error of the estimated quantile curve. Should be in (0, 1). If it is a vector, it should be of the same length of \code{qu}. Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). The old default was \code{err=0.05}.} \item{multicore}{If TRUE the calibration will happen in parallel.} \item{cluster}{An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster.} \item{ncores}{Number of cores used. Relevant if \code{multicore == TRUE}.} \item{paropts}{a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.} \item{control}{A list of control parameters. The only one relevant here is \code{link}, which is the link function used (see \code{?elf} and \code{?elflss} for defaults). All other control parameters are used by \code{tuneLearnFast}. See \code{?tuneLearnFast} for details.} \item{argGam}{A list of parameters to be passed to \code{mgcv::gam}. This list can potentially include all the arguments listed in \code{?gam}, with the exception of \code{formula}, \code{family} and \code{data}.} } \value{ A list with entries: \itemize{ \item{\code{fit} = a \code{gamObject}, one for each entry of \code{qu}. Notice that the slots \code{model} and \code{smooth} of each object has been removed to save memory. See \code{?gamObject}. } \item{\code{model} = the \code{model} slot of the \code{gamObject}s in the \code{fit} slot. This is the same for every fit, hence only one copy is stored.} \item{\code{smooth} = the \code{smooth} slot of the \code{gamObject}s in the \code{fit} slot. This is the same for every fit, hence only one copy is stored.} \item{\code{calibr} = a list which is the output of an internal call to \code{tuneLearnFast}, which is used for calibrating the learning rate. See \code{?tuneLearnFast} for details.} } } \description{ This function fits a smooth additive regression model to several quantiles. } \examples{ ##### # Multivariate Gaussian example #### library(qgam) set.seed(2) dat <- gamSim(1, n=300, dist="normal", scale=2) fit <- mqgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = c(0.2, 0.8)) invisible( qdo(fit, 0.2, plot, pages = 1) ) ##### # Univariate "car" example #### library(qgam); library(MASS) # Fit for quantile 0.8 using the best sigma quSeq <- c(0.2, 0.4, 0.6, 0.8) set.seed(6436) fit <- mqgam(accel~s(times, k=20, bs="ad"), data = mcycle, qu = quSeq) # Plot the fit xSeq <- data.frame(cbind("accel" = rep(0, 1e3), "times" = seq(2, 58, length.out = 1e3))) plot(mcycle$times, mcycle$accel, xlab = "Times", ylab = "Acceleration", ylim = c(-150, 80)) for(iq in quSeq){ pred <- qdo(fit, iq, predict, newdata = xSeq) lines(xSeq$times, pred, col = 2) } } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2021. qgam: Bayesian Nonparametric Quantile Regression Modeling in R. Journal of Statistical Software, 100(9), 1-31, \doi{10.18637/jss.v100.i09}. } \author{ Matteo Fasiolo . } qgam/man/check.learn.Rd0000644000176200001440000000346414775742541014445 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_learn.R \name{check.learn} \alias{check.learn} \title{Visual checks for the output of tuneLearn()} \usage{ \method{check}{learn}(obj, sel = 1:2, ...) } \arguments{ \item{obj}{the output of a call to \code{tuneLearn}.} \item{sel}{this function produces two plots, set this parameter to 1 to plot only the first, to 2 to plot only the second or leave it to 1:2 to plot both.} \item{...}{currently not used, here only for compatibility reasons.} } \value{ It produces several plots. } \description{ Provides some visual plots showing how the calibration criterion and the effective degrees of freedom of each smooth component vary with the learning rate. } \details{ The first plot shows how the calibrations loss, which we are trying to minimize, varies with the log learning rate. This function should look quite smooth, if it doesn't then try to increase \code{err} or \code{control$K} (the number of bootstrap samples) in the original call to \code{tuneLearn}. The second plot shows how the effective degrees of freedom of each smooth term vary with log(sigma). Generally as log(sigma) increases the complexity of the fit decreases, hence the slope is negative. } \examples{ library(qgam) set.seed(525) dat <- gamSim(1, n=200) b <- tuneLearn(lsig = seq(-0.5, 1, length.out = 10), y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) check(b) } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. } \author{ Matteo Fasiolo . } qgam/man/log1pexp.Rd0000644000176200001440000000146513301766721014014 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/log1pexp.R \name{log1pexp} \alias{log1pexp} \title{Calculating log(1+exp(x)) accurately} \usage{ log1pexp(x) } \arguments{ \item{x}{a numeric vector.} } \value{ A numeric vector where the i-th entry is equal to \code{log(1+exp(x[i]))}, but computed more stably. } \description{ Calculates \code{log(1+exp(x))} in a numerically stable fashion. } \details{ We follow the recipe of Machler (2012), that is formula (10) page 7. } \examples{ set.seed(141) library(qgam); x <- rnorm(100, 0, 100) log1pexp(x) - log1p(exp(x)) } \references{ Machler, M. (2012). Accurately computing log(1-exp(-|a|)). URL: \url{https://cran.r-project.org/package=Rmpfr/vignettes/log1mexp-note.pdf}. } \author{ Matteo Fasiolo . } qgam/man/pinLoss.Rd0000644000176200001440000000130613467305150013674 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pinLoss.R \name{pinLoss} \alias{pinLoss} \title{Pinball loss function} \usage{ pinLoss(y, mu, qu, add = TRUE) } \arguments{ \item{y}{points at which the loss is evaluated.} \item{mu}{location parameter of the pinball loss.} \item{qu}{quantile level of the loss.} \item{add}{if TRUE the losses at which quantile level will be added up.} } \value{ A numeric vector or matrix of evaluate losses. } \description{ Evaluates the pinball loss. } \examples{ n <- 1000 x <- seq(0, 4, length.out = n) plot(x, pinLoss(x, rep(2, n), qu = 0.9, add = FALSE), type = 'l', ylab = "loss") } \author{ Matteo Fasiolo . } qgam/man/UKload.Rd0000644000176200001440000000270114041552722013422 0ustar liggesusers\name{UKload} \alias{UKload} %- Also NEED an `\alias' for EACH other topic documented here. \title{UK electricity load data} \description{ Dataset on UK electricity demand, taken from the national grid (\url{https://www.nationalgrid.com/}). } %- end description \usage{ data(UKload) } %- maybe also `usage' for other objects documented here. \format{ \code{UKload} contains the following variables: \describe{ \item{NetDemand}{net electricity demand between 11:30am and 12am.} \item{wM}{instantaneous temperature, averaged over several English cities.} \item{wM_s95}{exponential smooth of \code{wM}, that is \code{wM_s95[i] = a*wM_s95[i-1] + (1-a)*wM[i]} with \code{a=0.95}}. \item{Posan}{periodic index in \code{[0, 1]} indicating the position along the year.} \item{Dow}{factor variable indicating the day of the week.} \item{Trend}{progressive counter, useful for defining the long term trend.} \item{NetDemand.48}{lagged version of \code{NetDemand}, that is \code{NetDemand.48[i] = NetDemand[i-2]}.} \item{Holy}{binary variable indicating holidays.} \item{Year}{should be obvious.} \item{Date}{should be obvious.} } } \details{ See Fasiolo et al. (2017) for details.} \value{matrix of replicate data series } \references{ Fasiolo, M., Goude, Y., Nedellec, R. and Wood, S. N. (2017). Fast calibrated additive quantile regression. Available at \url{https://arxiv.org/abs/1707.03307}. } \examples{ library(qgam) data(UKload) plot(UKload$NetDemand, type = 'l') } qgam/man/elflss.Rd0000644000176200001440000000551314775742542013556 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/elflss.R \name{elflss} \alias{elflss} \title{Extended log-F model with variable scale} \usage{ elflss(link = list("identity", "log"), qu, co, theta, remInter = TRUE) } \arguments{ \item{link}{vector of two characters indicating the link function for the quantile location and for the log-scale.} \item{qu}{parameter in (0, 1) representing the chosen quantile. For instance, to fit the median choose \code{qu=0.5}.} \item{co}{positive vector of constants used to determine parameter lambda of the ELF density (lambda = co / sigma).} \item{theta}{a scalar representing the intercept of the model for the log-scale log(sigma).} \item{remInter}{if TRUE the intercept of the log-scale model is removed.} } \value{ An object inheriting from mgcv's class \code{general.family}. } \description{ The \code{elflss} family implements the Extended log-F (ELF) density of Fasiolo et al. (2017) and it is supposed to work in conjuction with the general GAM fitting methods of Wood et al. (2017), implemented by \code{mgcv}. It differs from the \code{elf} family, because here the scale of the density (sigma, aka the learning rate) can depend of the covariates, while in while in \code{elf} it is a single scalar. NB this function was use within the \code{qgam} function, but since \code{qgam} version 1.3 quantile models with varying learning rate are fitted using different methods (a parametric location-scale model, see Fasiolo et al. (2017) for details.). } \details{ This function is meant for internal use only. } \examples{ \dontrun{ set.seed(651) n <- 1000 x <- seq(-4, 3, length.out = n) X <- cbind(1, x, x^2) beta <- c(0, 1, 1) sigma = 1.2 + sin(2*x) f <- drop(X \%*\% beta) dat <- f + rnorm(n, 0, sigma) dataf <- data.frame(cbind(dat, x)) names(dataf) <- c("y", "x") # Fit median using elflss directly: NOT RECOMMENDED fit <- gam(list(y~s(x, bs = "cr"), ~ s(x, bs = "cr")), family = elflss(theta = 0, co = rep(0.2, n), qu = 0.5), data = dataf) plot(x, dat, col = "grey", ylab = "y") tmp <- predict(fit, se = TRUE) lines(x, tmp$fit[ , 1]) lines(x, tmp$fit[ , 1] + 3 * tmp$se.fit[ , 1], col = 2) lines(x, tmp$fit[ , 1] - 3 * tmp$se.fit[ , 1], col = 2) } } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. Wood, Simon N., Pya, N. and Safken, B. (2017). Smoothing parameter and model selection for general smooth models. Journal of the American Statistical Association. } \author{ Matteo Fasiolo and Simon N. Wood. } qgam/man/check.learnFast.Rd0000644000176200001440000000426114775742541015257 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_learnFast.R \name{check.learnFast} \alias{check.learnFast} \title{Visual checks for the output of tuneLearnFast()} \usage{ \method{check}{learnFast}(obj, sel = NULL, ...) } \arguments{ \item{obj}{the output of a call to \code{tuneLearnFast}.} \item{sel}{integer vector determining which of the plots will be produced. For instance if \code{sel = c(1, 3)} only the 1st and 3rd plots are showed. No entry of \code{sel} can be bigger than one plus the number of quantiles considered in the original \code{tuneLearnFast()} call. That is, if we estimated the learning rate for \code{qu = c(0.1, 0.4)}, then \code{max(sel)} must be <= 3.} \item{...}{currently not used, here only for compatibility reasons.} } \value{ It produces several plots. } \description{ Provides some visual checks to verify whether the Brent optimizer used by \code{tuneLearnFast()} worked correctly. } \details{ The top plot in the first page shows the bracket used to estimate log(sigma) for each quantile. The brackets are delimited by the crosses and the red dots are the estimates. If a dot falls very close to one of the crosses, that might indicate problems. The bottom plot shows, for each quantile, the value of parameter \code{err} used. Sometimes the algorithm needs to increase \code{err} above its user-defined value to achieve convergence. Subsequent plots show, for each quantile, the value of the loss function corresponding to each value of log(sigma) explored by Brent algorithm. } \examples{ library(qgam) set.seed(525) dat <- gamSim(1, n=200) b <- tuneLearnFast(y ~ s(x0)+s(x1)+s(x2)+s(x3), data = dat, qu = c(0.4, 0.5), control = list("tol" = 0.05)) # <- sloppy tolerance to speed-up calibration check(b) check(b, 3) # Produces only third plot } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. } \author{ Matteo Fasiolo . } qgam/man/cqcheckI.Rd0000644000176200001440000000700613616051551013761 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cqcheckI.R \name{cqcheckI} \alias{cqcheckI} \title{Interactive visual checks for additive quantile fits} \usage{ cqcheckI( obj, v, X = NULL, y = NULL, run = TRUE, width = "100\%", height = "680px" ) } \arguments{ \item{obj}{the output of a \code{qgam} call.} \item{v}{if a 1D plot is required, \code{v} should be either a single character or a numeric vector. In the first case \code{v} should be the names of one of the variables in the dataframe \code{X}. In the second case, the length of \code{v} should be equal to the number of rows of \code{X}. If a 2D plot is required, \code{v} should be either a vector of two characters or a matrix with two columns.} \item{X}{a dataframe containing the data used to obtain the conditional quantiles. By default it is NULL, in which case predictions are made using the model matrix in \code{obj$model}.} \item{y}{vector of responses. Its i-th entry corresponds to the i-th row of X. By default it is NULL, in which case it is internally set to \code{obj$y}.} \item{run}{if TRUE (default) the function produces an interactive plot, otherwise it returns the corresponding shiny app.} \item{width}{the width of the main plot. Default is "100\%".} \item{height}{width the width of the main plot. Default is "680px".} } \value{ Simply produces an interactive plot. } \description{ Given an additive quantile model, fitted using \code{qgam}, \code{cqcheck2DI} provides some interactive 2D plots that allow to check what proportion of responses, \code{y}, falls below the fitted quantile. This is an interactive version of the \code{cqcheck} function. } \details{ This is an interactive version of the \code{cqcheck}, see \code{?cqcheck} for details. The main interactive feature is that one can select an area by brushing, and then double-click to zoom in. In the 1D case the vertical part of the selected area is not use: we zoom only along the x axis. Double-clicking without brushing zooms out. } \examples{ \dontrun{ ####### # Example 1: Bivariate additive model y~1+x+x^2+z+x*z/2+e, e~N(0, 1) ####### library(qgam) set.seed(15560) n <- 1000 x <- rnorm(n, 0, 1); z <- rnorm(n) X <- cbind(1, x, x^2, z, x*z) beta <- c(0, 1, 1, 1, 0.5) y <- drop(X \%*\% beta) + rnorm(n) dataf <- data.frame(cbind(y, x, z)) names(dataf) <- c("y", "x", "z") #### Fit a constant model for median qu <- 0.5 fit <- qgam(y~1, qu = qu, data = dataf) # Look at what happens along x: clearly there is non linear pattern here cqcheckI(obj = fit, v = c("x"), X = dataf, y = y) #### Add a smooth for x fit <- qgam(y~s(x), qu = qu, data = dataf) cqcheckI(obj = fit, v = c("x"), X = dataf, y = y) # Better! # Lets look across across x and z. As we move along z (x2 in the plot) # the colour changes from green to red cqcheckI(obj = fit, v = c("x", "z"), X = dataf, y = y) # The effect look pretty linear cqcheckI(obj = fit, v = c("z"), X = dataf, y = y) #### Lets add a linear effect for z fit <- qgam(y~s(x)+z, qu = qu, data = dataf) # Looks better! cqcheckI(obj = fit, v = c("z")) # Lets look across x and y again: green prevails on the top-left to bottom-right # diagonal, while the other diagonal is mainly red. cqcheckI(obj = fit, v = c("x", "z")) ### Maybe adding an interaction would help? fit <- qgam(y~s(x)+z+I(x*z), qu = qu, data = dataf) # It does! The real model is: y ~ 1 + x + x^2 + z + x*z/2 + e, e ~ N(0, 1) cqcheckI(obj = fit, v = c("x", "z")) } } \author{ Matteo Fasiolo . } qgam/man/tuneLearn.Rd0000644000176200001440000001556114775742542014227 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tuneLearn.R \name{tuneLearn} \alias{tuneLearn} \title{Tuning the learning rate for Gibbs posterior} \usage{ tuneLearn( form, data, lsig, qu, discrete = FALSE, err = NULL, multicore = !is.null(cluster), cluster = NULL, ncores = detectCores() - 1, paropts = list(), control = list(), argGam = NULL ) } \arguments{ \item{form}{A GAM formula, or a list of formulae. See ?mgcv::gam details.} \item{data}{A data frame or list containing the model response variable and covariates required by the formula. By default the variables are taken from environment(formula): typically the environment from which gam is called.} \item{lsig}{A vector of value of the log learning rate (log(sigma)) over which the calibration loss function is evaluated.} \item{qu}{The quantile of interest. Should be in (0, 1).} \item{discrete}{If TRUE then covariate discretisation is used for faster model fitting. See \code{mgcv::}\link[mgcv]{bam} for details.} \item{err}{An upper bound on the error of the estimated quantile curve. Should be in (0, 1). Since qgam v1.3 it is selected automatically, using the methods of Fasiolo et al. (2017). The old default was \code{err=0.05}.} \item{multicore}{If TRUE the calibration will happen in parallel.} \item{cluster}{An object of class \code{c("SOCKcluster", "cluster")}. This allowes the user to pass her own cluster, which will be used if \code{multicore == TRUE}. The user has to remember to stop the cluster.} \item{ncores}{Number of cores used. Relevant if \code{multicore == TRUE}.} \item{paropts}{a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.} \item{control}{A list of control parameters for \code{tuneLearn} with entries: \itemize{ \item{\code{loss} = loss function use to tune log(sigma). If \code{loss=="cal"} is chosen, then log(sigma) is chosen so that credible intervals for the fitted curve are calibrated. See Fasiolo et al. (2017) for details. If \code{loss=="pin"} then log(sigma) approximately minimizes the pinball loss on the out-of-sample data.} \item{\code{sam} = sampling scheme use: \code{sam=="boot"} corresponds to bootstrapping and \code{sam=="kfold"} to k-fold cross-validation. The second option can be used only if \code{ctrl$loss=="pin"}.} \item{\code{K} = if \code{sam=="boot"} this is the number of boostrap datasets, while if \code{sam=="kfold"} this is the number of folds. By default \code{K=50}.} \item{\code{b} = offset parameter used by the mgcv::gauslss. By default \code{b=0}.} \item{\code{vtype} = type of variance estimator used to standardize the deviation from the main fit in the calibration. If set to \code{"m"} the variance estimate obtained by the full data fit is used, if set to \code{"b"} than the variance estimated produced by the bootstrap fits are used. By default \code{vtype="m"}.} \item{\code{epsB} = positive tolerance used to assess convergence when fitting the regression coefficients on bootstrap data. In particular, if \code{|dev-dev_old|/(|dev|+0.1). } qgam/man/cqcheck.Rd0000644000176200001440000001216013616051551013645 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cqcheck.R \name{cqcheck} \alias{cqcheck} \title{Visually checking a fitted quantile model} \usage{ cqcheck( obj, v, X = NULL, y = NULL, nbin = c(10, 10), bound = NULL, lev = 0.05, scatter = FALSE, ... ) } \arguments{ \item{obj}{the output of a \code{qgam} call.} \item{v}{if a 1D plot is required, \code{v} should be either a single character or a numeric vector. In the first case \code{v} should be the names of one of the variables in the dataframe \code{X}. In the second case, the length of \code{v} should be equal to the number of rows of \code{X}. If a 2D plot is required, \code{v} should be either a vector of two characters or a matrix with two columns.} \item{X}{a dataframe containing the data used to obtain the conditional quantiles. By default it is NULL, in which case predictions are made using the model matrix in \code{obj$model}.} \item{y}{vector of responses. Its i-th entry corresponds to the i-th row of X. By default it is NULL, in which case it is internally set to \code{obj$y}.} \item{nbin}{a vector of integers of length one (1D case) or two (2D case) indicating the number of bins to be used in each direction. Used only if \code{bound==NULL}.} \item{bound}{in the 1D case it is a numeric vector whose increasing entries represent the bounds of each bin. In the 2D case a list of two vectors should be provided. \code{NULL} by default.} \item{lev}{the significance levels used in the plots, this determines the width of the confidence intervals. Default is 0.05.} \item{scatter}{if TRUE a scatterplot is added (using the \code{points} function). FALSE by default.} \item{...}{extra graphical parameters to be passed to \code{plot()}.} } \value{ Simply produces a plot. } \description{ Given an additive quantile model, fitted using \code{qgam}, \code{cqcheck} provides some plots that allow to check what proportion of responses, \code{y}, falls below the fitted quantile. } \details{ Having fitted an additive model for, say, quantile \code{qu=0.4} one would expect that about 40% of the responses fall below the fitted quantile. This function allows to visually compare the empirical number of responses (\code{qu_hat}) falling below the fit with its theoretical value (\code{qu}). In particular, the responses are binned, which the bins being constructed along one or two variables (given be arguments \code{v}). Let (\code{qu_hat[i]}) be the proportion of responses below the fitted quantile in the ith bin. This should be approximately equal to \code{qu}, for every i. In the 1D case, when \code{v} is a single character or a numeric vector, \code{cqcheck} provides a plot where: the horizontal line is \code{qu}, the dots correspond to \code{qu_hat[i]} and the grey lines are confidence intervals for \code{qu}. The confidence intervals are based on \code{qbinom(lev/2, siz, qu)}, if the dots fall outside them, then \code{qu_hat[i]} might be deviating too much from \code{qu}. In the 2D case, when \code{v} is a vector of two characters or a matrix with two columns, we plot a grid of bins. The responses are divided between the bins as before, but now don't plot the confidence intervals. Instead we report the empirical proportions \code{qu_hat[i]} for the non-empty bin, and with colour the bins in red if \code{qu_hat[i]. } qgam/man/check.qgam.Rd0000644000176200001440000000450014775742541014261 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_qgam.R \name{check.qgam} \alias{check.qgam} \title{Some diagnostics for a fitted qgam model} \usage{ \method{check}{qgam}(obj, nbin = 10, lev = 0.05, ...) } \arguments{ \item{obj}{the output of a \code{qgam()} call.} \item{nbin}{number of bins used in the internal call to \code{cqcheck()}.} \item{lev}{the significance levels used by \code{cqcheck()}, which determines the width of the confidence intervals.} \item{...}{extra arguments to be passed to \code{plot()}} } \value{ Simply produces some plots and prints out some diagnostics. } \description{ Takes a fitted gam object produced by \code{qgam()} and produces some diagnostic information about the fitting procedure and results. It is partially based on \code{mgcv::gam.check}. } \details{ This function provides two plots. The first shows how the number of responses falling below the fitted quantile (y-axis) changes with the fitted quantile (x-axis). To be clear: if the quantile is fixed to, say, 0.5 we expect 50\% of the responses to fall below the fit. See \code{?cqcheck()} for details. The second plot related to \code{|F(hat(mu)) - F(mu0)|}, which is the absolute bias attributable to the fact that qgam is using a smoothed version of the pinball-loss. The absolute bias is evaluated at each observation, and an histogram is produced. See Fasiolo et al. (2017) for details. The function also prints out the integrated absolute bias, and the proportion of observations lying below the regression line. It also provides some convergence diagnostics (regarding the optimization), which are the same as in \code{mgcv::gam.check}. It reports also the maximum (k') and the selected degrees of freedom of each smooth term. } \examples{ library(qgam) set.seed(0) dat <- gamSim(1, n=200) b<-qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) plot(b, pages=1) check.qgam(b, pch=19, cex=.3) } \references{ Fasiolo, M., Wood, S.N., Zaffran, M., Nedellec, R. and Goude, Y., 2020. Fast calibrated additive quantile regression. Journal of the American Statistical Association (to appear). \doi{10.1080/01621459.2020.1725521}. } \author{ Matteo Fasiolo , Simon N. Wood. } qgam/man/check.Rd0000644000176200001440000000152313462142537013326 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/generic_functions.R \docType{methods} \name{check} \alias{check} \title{Generic checking function} \usage{ check(obj, ...) } \arguments{ \item{obj}{the object to be checked.} \item{...}{extra arguments, mainly used by graphic functions.} } \value{ Reports the results of convergence tests and/or produces diagnostic plots. } \description{ Generic function for checking R objects which produces, for instance, convergence tests or diagnostic plots. For \code{qgam} objects \code{check.qgam()} will be used. } \examples{ ####### # Using check.qgam ####### library(qgam) set.seed(0) dat <- gamSim(1, n=200) b<-qgam(y~s(x0)+s(x1)+s(x2)+s(x3), data=dat, qu = 0.5) plot(b, pages=1) check(b, pch=19, cex=.3) } \author{ Matteo Fasiolo . } qgam/DESCRIPTION0000644000176200001440000000337114776014752012726 0ustar liggesusersPackage: qgam Type: Package Title: Smooth Additive Quantile Regression Models Version: 2.0.0 Date: 2025-04-10 Authors@R: c(person("Matteo", "Fasiolo", email = "matteo.fasiolo@gmail.com", role = c("aut", "cre")), person("Ben", "Griffiths", role = c("aut")), person("Simon", "N. Wood", role = c("ctb")), person("Margaux", "Zaffran", role = c("ctb")), person("Yannig", "Goude", role = c("ctb")), person("Raphael", "Nedellec", role = c("ctb"))) Maintainer: Matteo Fasiolo Description: Smooth additive quantile regression models, fitted using the methods of Fasiolo et al. (2020) . See Fasiolo at al. (2021) for an introduction to the package. Differently from 'quantreg', the smoothing parameters are estimated automatically by marginal loss minimization, while the regression coefficients are estimated using either PIRLS or Newton algorithm. The learning rate is determined so that the Bayesian credible intervals of the estimated effects have approximately the correct coverage. The main function is qgam() which is similar to gam() in 'mgcv', but fits non-parametric quantile regression models. License: GPL (>= 2) Depends: R (>= 4.0), mgcv (>= 1.9) Imports: shiny, plyr, doParallel, parallel, grDevices Suggests: knitr, rmarkdown, MASS, RhpcBLASctl, testthat VignetteBuilder: knitr RoxygenNote: 7.3.2 Encoding: UTF-8 NeedsCompilation: yes Packaged: 2025-04-10 13:23:38 UTC; mf15002 Author: Matteo Fasiolo [aut, cre], Ben Griffiths [aut], Simon N. Wood [ctb], Margaux Zaffran [ctb], Yannig Goude [ctb], Raphael Nedellec [ctb] Repository: CRAN Date/Publication: 2025-04-10 19:20:10 UTC