nloptr/0000755000176200001440000000000014765676562011620 5ustar liggesusersnloptr/tests/0000755000176200001440000000000014472612401012733 5ustar liggesusersnloptr/tests/tinytest.R0000644000176200001440000000013114472612401014734 0ustar liggesusersif (requireNamespace("tinytest", quietly = TRUE)) { tinytest::test_package("nloptr") } nloptr/MD50000644000176200001440000001364214765676562012136 0ustar liggesusers85976d834369c525c42c780437ce98f2 *DESCRIPTION be48e9fa0b8b1abf0e1f056a6acc4897 *NAMESPACE ae3a1a44253457a69513c1a78bf3ca8e *NEWS.md 2c9eea2671549aed2473f5ecf26aef5b *R/auglag.R a4d741da1971102d9a2c8a95e718012c *R/ccsaq.R 8706da0ffa93ea4cff2e8d2dfe4f39a6 *R/check.derivatives.R c4261b17a40d117c8fc104a3cfa3cdcd *R/cobyla.R 1b6a1ea87e47aa865b7cb7dec6166e54 *R/direct.R 3320b563947ebfb5abaaaff511a90dd8 *R/finite.diff.R 638427a200f1b1de773337d301a91c3c *R/global.R 3792b2df9e5f8182e83a2585e3f3dad2 *R/gradients.R c6d0abb037c8d3ed43413c4fe7fcb7b9 *R/is.nloptr.R 1012ad9882d174e8df18c13bc88f8fde *R/lbfgs.R 44cef8728c80d2076264ea1fe6eeb440 *R/mlsl.R 7734348be66484e73d96f99cc2498667 *R/mma.R 4f39342517f60bfa58a1fa60e595a71c *R/nloptions.R 2ca3fde24d91145116ae904694ca1895 *R/nloptr-package.R 6856303c3b111d52b12e332981f58c76 *R/nloptr.R 87b6db027006b426f4b7151c8856358f *R/nloptr.add.default.options.R 8ad321c4454af668c8db647a059dc774 *R/nloptr.get.default.options.R d45fe0c993e466fc311f0b98e3cf840b *R/nloptr.print.options.R ba6c876d36576ebd561b7431ad6b6c9f *R/nm.R add17b063aac9bb9558baf51883d0898 *R/print.nloptr.R 38cb479973dc647f6a548b53b354d211 *R/slsqp.R 20d674fd10cc1d4a25d8b7f024d330d0 *R/tnewton.R 442cdf85bd35202e9a862fbed687a52f *R/varmetric.R 458de6d2b18b14864567014e08953eea *R/zzz.R 5a110ba363d78e09d2543488bd5cd105 *README.md 2c0aa98cb95e85ff2f87962a2d0fb93a *build/vignette.rds 41b24a7410fc707ea978acd5073dc371 *cleanup dce8ff9324571fee31b6138a3817067b *configure 1ca4dba53f7b443e0dd8e6654914511b *configure.ac b13c04c6ff93be16915e4d59145683ad *inst/CITATION abeb4fc0319880235c2561853c02351c *inst/doc/nloptr.R 619958a6b7ea49b4bcdf5bf0600d1336 *inst/doc/nloptr.Rmd 1c5407649cad9196baf91eec719e6cf8 *inst/doc/nloptr.html 8ff1729153f0592dcaa284f4471b228d *inst/include/nloptrAPI.h 5fdee933a7104d867c8e234820049d14 *inst/tinytest/test-Rosenbrock-banana.R 01cd0194d50eeb83c285b6a42eff484e *inst/tinytest/test-check.derivatives.R 002a4ccdca7baa3d8e60a064336b13be *inst/tinytest/test-derivative-checker.R c444b18a7a246750683d4be611facdf6 *inst/tinytest/test-example.R 160466347214bf0a8cc058ec9b5b12b5 *inst/tinytest/test-gradients.R 2eee41b62f88010bf7243e0082bd08de *inst/tinytest/test-hs023.R a2ac031fa9eff6ec3f35404f893dd0d5 *inst/tinytest/test-hs071.R 953d535b34e32314d55fcb5708566aa9 *inst/tinytest/test-is.nloptr.R 2901a91c515a92eb20dbbee6f7d1f67b *inst/tinytest/test-nloptions.R 3b0501eb7d3f2d4536640e6dc842c793 *inst/tinytest/test-nloptr.R f3a8bee74228a90418ce9d85ca7df862 *inst/tinytest/test-nloptr.add.default.options.R c072a836125402cba5f2a0b7947c13d3 *inst/tinytest/test-nloptr.print.options.R 0b5679928d00f4e3440b2ec2732070a1 *inst/tinytest/test-options-maxtime.R 2e3364c8b202dd590e29836a7b060119 *inst/tinytest/test-parameters.R ca34d54377139520253ef7274ed191d3 *inst/tinytest/test-print.nloptr.R a2fc55db793f1a3c0d93e5df25da0121 *inst/tinytest/test-simple.R feae5e58b876b903ef0d8ea269037ee9 *inst/tinytest/test-systemofeq.R 267dca9d164f31bba83b6a32d7eecb7b *inst/tinytest/test-wrapper-auglag.R 79ba0ad9c44692aa3ff324aff119105b *inst/tinytest/test-wrapper-ccsaq.R ebaf8a4801a1db3693be45167278934c *inst/tinytest/test-wrapper-cobyla.R d79078c65677a13c038ed4d233c2b1ba *inst/tinytest/test-wrapper-direct.R b84d99d4e525783d9b6f3ff59fb9eb10 *inst/tinytest/test-wrapper-global.R 9214436377834626deefdf1e43f6b9a5 *inst/tinytest/test-wrapper-lbgfs.R fa581e8b29166a2b1868eb59ffa01d02 *inst/tinytest/test-wrapper-mlsl.R 4aeac1345452c86157c784e2344d3168 *inst/tinytest/test-wrapper-mma.R 68989551461a5081accb2b9b8849cbce *inst/tinytest/test-wrapper-nm.R 5449d71f7f7ae359681fb98e6d1e242b *inst/tinytest/test-wrapper-slsqp.R d72091f7293151325d75b86dccfc4ab2 *inst/tinytest/test-wrapper-tnewton.R 9fa9f5c8d40e7e8c1286e65f7d8919b8 *inst/tinytest/test-wrapper-varmetric.R 7a334477c5d4f530996c2ee22b0413bc *man/auglag.Rd 331b234ddd5f8bf58270bb939d75bf4e *man/bobyqa.Rd e0f617551ee0dd04d92178e0a953bf6b *man/ccsaq.Rd c9fa25267c65d4678c34ea132e1ab903 *man/check.derivatives.Rd 64b60c929a88b8d4c1e39a6d007176be *man/cobyla.Rd 72e5601fa9a61df9c497023f382351ba *man/crs2lm.Rd c65670513f9a04bf72194040045494f3 *man/direct.Rd 123679eb319498c0be11dbe28628bb58 *man/figures/logo.png 5a891bdeb9abfabfd687355e7a4f2c06 *man/is.nloptr.Rd 426a333a57703435a0d36f37fe34d9a5 *man/isres.Rd 630d7cd97a0dab1ac277c2e181d6f48c *man/lbfgs.Rd b9271b8c5c9eb95db464a73cce389c7d *man/mlsl.Rd cc701525850d01d210e8e11d1bfd91b5 *man/mma.Rd b828ee50bc7a9319767c1bb63db35092 *man/neldermead.Rd 1a2f5819e5dcba4c5e7b6cb728e1a3a5 *man/newuoa.Rd c7ad4c8b3c37b83985c7cc9729848419 *man/nl.grad.Rd b0e622c84af36c9bc7b6addbba5bdd16 *man/nl.opts.Rd b1600c7815b219501c6f32f7a9c271a0 *man/nloptr-package.Rd 1c11038346cc9dc02cb13fab29bb6970 *man/nloptr.Rd ee1e5366588c505e06b6d586f3985d37 *man/nloptr.get.default.options.Rd c9f1db0752fca45dc5737fcc992e9b22 *man/nloptr.print.options.Rd d8357d55e9d181ad9bdb6dedb278ad20 *man/print.nloptr.Rd 4f177e182a19f65e5a4708cd2121cb16 *man/sbplx.Rd 0af31d7b7d33248aa7dd7fa44ca0a25b *man/slsqp.Rd f75535fb06c5fbbe14889c97c779b589 *man/stogo.Rd 2db8666fe18fefa27d470b4d9c0e1f49 *man/tnewton.Rd 44388ad7db4146a545057f6ae282deeb *man/varmetric.Rd 5c6543c598c636336aa61450ef23500c *src/Makevars.in 03973630c5039fd80d1e1145ea73327d *src/Makevars.ucrt 4adef5279df6e6085c67f45c29ed8cb8 *src/Makevars.win d41d8cd98f00b204e9800998ecf8427e *src/dummy.cpp 6de1af1c0cbddd55b644f2d68e24dbee *src/init_nloptr.c 3ca4da30e723c3b14e9f9e198ce43a02 *src/nlopt-src.tar.gz d1b92e284d4266d76dbfc4fa1f6b506d *src/nloptr.c ef3a88c4ac5ae104e35a38c79c93a3c4 *src/nloptr.h 2d545791431e62c06e17ed4130ac0d13 *src/scripts/nlopt_cleanup.sh a48f1201ec1ecbc4dfd8944f3465f37b *src/scripts/nlopt_download.sh 3fd0eb363669e71650dfe0834fb09258 *src/scripts/r_config.sh 2edead7f1b9f4909c311e3fc41830c03 *tests/tinytest.R e6129759fca814e28e8d52f29a06b62e *tools/cmake_call.sh e41bb74bae49869371461edee73b5323 *tools/cmake_config.sh 0e377c2bef61f13be9df61bcfb9b9d8c *tools/winlibs.R 619958a6b7ea49b4bcdf5bf0600d1336 *vignettes/nloptr.Rmd 475041bb34f2f2b507c809121dd96fb0 *vignettes/reflist.bib nloptr/R/0000755000176200001440000000000014765064402012001 5ustar liggesusersnloptr/R/slsqp.R0000644000176200001440000001444114634272373013275 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: slsqp.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Sequential Quadratic Programming. # # CHANGELOG # # 2023-02-09: Direct Jacobian now converges to proper value so removing # confusing commentary in example. Also Cleanup and tweaks for safety and # efficiency (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Sequential Quadratic Programming (SQP) #' #' Sequential (least-squares) quadratic programming (SQP) algorithm for #' nonlinearly constrained, gradient-based optimization, supporting both #' equality and inequality constraints. #' #' The algorithm optimizes successive second-order (quadratic/least-squares) #' approximations of the objective function (via BFGS updates), with #' first-order (affine) approximations of the constraints. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. This is new behavior in line with the #' rest of the \code{nloptr} arguments. To use the old behavior, please set #' \code{deprecatedBehavior} to \code{TRUE}. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param heq function defining the equality constraints, that is \code{heq = 0} #' for all components. #' @param heqjac Jacobian of function \code{heq}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export slsqp #' #' @author Hans W. Borchers #' #' @note See more infos at #' \url{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}. #' #' @seealso \code{alabama::auglag}, \code{Rsolnp::solnp}, #' \code{Rdonlp2::donlp2} #' #' @references Dieter Kraft, ``A software package for sequential quadratic #' programming'', Technical Report DFVLR-FB 88-28, Institut fuer Dynamik der #' Flugsysteme, Oberpfaffenhofen, July 1988. #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' S <- slsqp(x0.hs100, fn = fn.hs100, # no gradients and jacobians provided #' hin = hin.hs100, #' nl.info = TRUE, #' control = list(xtol_rel = 1e-8, check_derivatives = TRUE), #' deprecatedBehavior = FALSE) #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' S #' slsqp <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_SLSQP" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) if (is.null(heqjac)) { heqjac <- function(x) nl.jacobian(x, heq) } else { .heqjac <- match.fun(heqjac) heqjac <- function(x) .heqjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/ccsaq.R0000644000176200001440000001403114634272373013220 0ustar liggesusers# SPDX-License-Identifier: LGPL-3.0-or-later # File: ccsaq.R # Author: Julien Chiquet # Date: 02 October 2018 # # Wrapper to solve optimization problem using CCSAQ. # # CHANGELOG: # 2023-02-11: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Conservative Convex Separable Approximation with Affine Approximation plus #' Quadratic Penalty #' #' This is a variant of CCSA ("conservative convex separable approximation") #' which, instead of constructing local MMA approximations, constructs simple #' quadratic approximations (or rather, affine approximations plus a quadratic #' penalty term to stay conservative) #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin>=0} for all components. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export ccsaq #' #' @note ``Globally convergent'' does not mean that this algorithm converges to #' the global optimum; it means that it is guaranteed to converge to some local #' minimum from any feasible starting point. #' #' @seealso \code{\link{mma}} #' #' @references Krister Svanberg, ``A class of globally convergent optimization #' methods based on conservative convex separable approximations,'' SIAM J. #' Optim. 12 (2), p. 555-573 (2002). #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' gr.hs100 <- function(x) { #' c( 2 * x[1] - 20, #' 10 * x[2] - 120, #' 4 * x[3] ^ 3, #' 6 * x[4] - 66, #' 60 * x[5] ^ 5, #' 14 * x[6] - 4 * x[7] - 10, #' 4 * x[7] ^ 3 - 4 * x[6] - 8) #' } #' #' hinjac.hs100 <- function(x) { #' matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, #' 7, 3, 20 * x[3], 1, -1, 0, 0, #' 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, #' 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), #' nrow = 4, byrow = TRUE) #' } #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' # Results with exact Jacobian #' S <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, #' hin = hin.hs100, hinjac = hinjac.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' #' # Results without Jacobian #' S <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' ccsaq <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_CCSAQ" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/finite.diff.R0000644000176200001440000000327014472612401014304 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: finite.diff.R # Author: Jelmer Ypma # Date: 24 July 2011 # # CHANGELOG # # 2023-02-10: Tweaked for efficiency and clarity. Also switched to using vapply # which is both faster and type-safe. Not sure if we need to carry # both this and nl.grad/jacobian but not changing for now. # (Avraham Adler) # # Approximate the gradient of a function using finite differences. # # Input: # func : calculate finite difference approximation for the gradient of # this function # .x : evaluate at this point # indices : calculate finite difference approximation only for .x-indices # in this vector (optional) # stepSize : relative size of the step between x and x + h (optional) # ... : arguments that are passed to the user-defined function (func) # # Output: matrix with finite difference approximations # # http://en.wikipedia.org/wiki/Numerical_differentiation finite.diff <- function(func, .x, indices = seq_along(.x), stepSize = sqrt(.Machine$double.eps), ...) { # if we evaluate at values close to 0, we need a different step size stepSizeVec <- pmax(abs(.x), 1) * stepSize fx <- func(.x, ...) approx.gradf.index <- function(i, .x, func, fx, stepSizeVec, ...) { x_prime <- .x x_prime[i] <- .x[i] + stepSizeVec[i] stepSizeVec[i] <- x_prime[i] - .x[i] fx_prime <- func(x_prime, ...) (fx_prime - fx) / stepSizeVec[i] } vapply(indices, approx.gradf.index, double(length(fx)), .x = .x, func = func, fx = fx, stepSizeVec = stepSizeVec, ...) } nloptr/R/direct.R0000644000176200001440000001322214472715012013371 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: direct.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Direct. # # CHANGELOG # 2023-02-10: Tweaks for efficiency and readability (Avraham Adler) #' DIviding RECTangles Algorithm for Global Optimization #' #' DIRECT is a deterministic search algorithm based on systematic division of #' the search domain into smaller and smaller hyperrectangles. The DIRECT_L #' makes the algorithm more biased towards local search (more efficient for #' functions without too many minima). #' #' The DIRECT and DIRECT-L algorithms start by rescaling the bound constraints #' to a hypercube, which gives all dimensions equal weight in the search #' procedure. If your dimensions do not have equal weight, e.g. if you have a #' ``long and skinny'' search space and your function varies at about the same #' speed in all directions, it may be better to use unscaled variant of the #' DIRECT algorithm. #' #' The algorithms only handle finite bound constraints which must be provided. #' The original versions may include some support for arbitrary nonlinear #' inequality, but this has not been tested. #' #' The original versions do not have randomized or unscaled variants, so these #' options will be disregarded for these versions. #' #' @aliases direct directL #' #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param scaled logical; shall the hypercube be scaled before starting. #' @param randomized logical; shall some randomization be used to decide which #' dimension to halve next in the case of near-ties. #' @param original logical; whether to use the original implementation by #' Gablonsky -- the performance is mostly similar. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export direct #' #' @author Hans W. Borchers #' #' @note The DIRECT_L algorithm should be tried first. #' #' @seealso The \code{dfoptim} package will provide a pure R version of this #' algorithm. #' #' @references D. R. Jones, C. D. Perttunen, and B. E. Stuckmann, #' ``Lipschitzian optimization without the Lipschitz constant,'' J. #' Optimization Theory and Applications, vol. 79, p. 157 (1993). #' #' J. M. Gablonsky and C. T. Kelley, ``A locally-biased form of the DIRECT #' algorithm," J. Global Optimization, vol. 21 (1), p. 27-37 (2001). #' #' @examples #' #' ### Minimize the Hartmann6 function #' hartmann6 <- function(x) { #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10.0, 0.05, 3.0, 17.0, #' 3.0, 10.0, 3.5, 8.0, #' 17.0, 17.0, 1.7, 0.05, #' 3.5, 0.1, 10.0, 10.0, #' 1.7, 8.0, 17.0, 0.1, #' 8.0, 14.0, 8.0, 14.0), nrow=4, ncol=6) #' B <- matrix(c(.1312,.2329,.2348,.4047, #' .1696,.4135,.1451,.8828, #' .5569,.8307,.3522,.8732, #' .0124,.3736,.2883,.5743, #' .8283,.1004,.3047,.1091, #' .5886,.9991,.6650,.0381), nrow=4, ncol=6) #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i,] * (x - B[i,]) ^ 2)) #' } #' fun #' } #' S <- directL(hartmann6, rep(0, 6), rep(1, 6), #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000)) #' ## Number of Iterations....: 1000 #' ## Termination conditions: stopval: -Inf #' ## xtol_rel: 1e-08, maxeval: 1000, ftol_rel: 0, ftol_abs: 0 #' ## Number of inequality constraints: 0 #' ## Number of equality constraints: 0 #' ## Current value of objective function: -3.32236800687327 #' ## Current value of controls: #' ## 0.2016884 0.1500025 0.4768667 0.2753391 0.311648 0.6572931 #' direct <- function(fn, lower, upper, scaled = TRUE, original = FALSE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (scaled) { opts["algorithm"] <- "NLOPT_GN_DIRECT" } else { opts["algorithm"] <- "NLOPT_GN_DIRECT_NOSCAL" } if (original) opts["algorithm"] <- "NLOPT_GN_ORIG_DIRECT" fun <- match.fun(fn) fn <- function(x) fun(x, ...) x0 <- (lower + upper) / 2 S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' @export directL #' @rdname direct directL <- function(fn, lower, upper, randomized = FALSE, original = FALSE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (randomized) { opts["algorithm"] <- "NLOPT_GN_DIRECT_L_RAND" } else { opts["algorithm"] <- "NLOPT_GN_DIRECT_L" } if (original) opts["algorithm"] <- "NLOPT_GN_ORIG_DIRECT_L" fun <- match.fun(fn) fn <- function(x) fun(x, ...) x0 <- (lower + upper) / 2 S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/tnewton.R0000644000176200001440000000700014472612401013610 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: tnewton.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Preconditioned Truncated Newton. # # CHANGELOG # 2023-02-08: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Preconditioned Truncated Newton #' #' Truncated Newton methods, also called Newton-iterative methods, solve an #' approximating Newton system using a conjugate-gradient approach and are #' related to limited-memory BFGS. #' #' Truncated Newton methods are based on approximating the objective with a #' quadratic function and applying an iterative scheme such as the linear #' conjugate-gradient algorithm. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param precond logical; preset L-BFGS with steepest descent. #' @param restart logical; restarting L-BFGS with steepest descent. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export tnewton #' #' @author Hans W. Borchers #' #' @note Less reliable than Newton's method, but can handle very large #' problems. #' #' @seealso \code{\link{lbfgs}} #' #' @references R. S. Dembo and T. Steihaug, ``Truncated Newton algorithms for #' large-scale optimization,'' Math. Programming 26, p. 190-212 (1982). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) #' } #' # 25-dimensional box constrained: par[24] is *not* at boundary #' S <- tnewton(rep(3, 25L), flb, lower = rep(2, 25L), upper = rep(4, 25L), #' nl.info = TRUE, control = list(xtol_rel = 1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' tnewton <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, precond = TRUE, restart = TRUE, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (precond) { if (restart) opts["algorithm"] <- "NLOPT_LD_TNEWTON_PRECOND_RESTART" else opts["algorithm"] <- "NLOPT_LD_TNEWTON_PRECOND" } else { if (restart) opts["algorithm"] <- "NLOPT_LD_TNEWTON_RESTART" else opts["algorithm"] <- "NLOPT_LD_TNEWTON" } fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/varmetric.R0000644000176200001440000000616714472612401014123 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: varmetric.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Varmetric. # # CHANGELOG # 2023-02-08: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Shifted Limited-memory Variable-metric #' #' Shifted limited-memory variable-metric algorithm. #' #' Variable-metric methods are a variant of the quasi-Newton methods, #' especially adapted to large-scale unconstrained (or bound constrained) #' minimization. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param rank2 logical; if true uses a rank-2 update method, else rank-1. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of control parameters, see \code{nl.opts} for help. #' @param ... further arguments to be passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export varmetric #' #' @author Hans W. Borchers #' #' @note Based on L. Luksan's Fortran implementation of a shifted #' limited-memory variable-metric algorithm. #' #' @seealso \code{\link{lbfgs}} #' #' @references J. Vlcek and L. Luksan, ``Shifted limited-memory variable metric #' methods for large-scale unconstrained minimization,'' J. Computational Appl. #' Math. 186, p. 365-390 (2006). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) #' } #' # 25-dimensional box constrained: par[24] is *not* at the boundary #' S <- varmetric(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), #' nl.info = TRUE, control = list(xtol_rel=1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' varmetric <- function(x0, fn, gr = NULL, rank2 = TRUE, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) if (rank2) opts["algorithm"] <- "NLOPT_LD_VAR2" else opts["algorithm"] <- "NLOPT_LD_VAR1" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr-package.R0000644000176200001440000001220614613534600015026 0ustar liggesusers#' R interface to NLopt #' #' nloptr is an R interface to NLopt, a free/open-source library for nonlinear #' optimization started by Steven G. Johnson, providing a common interface for #' a number of different free optimization routines available online as well as #' original implementations of various other algorithms. The NLopt library is #' available under the GNU Lesser General Public License (LGPL), and the #' copyrights are owned by a variety of authors. Most of the information here #' has been taken from #' \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, #' where more details are available. #' #' NLopt addresses general nonlinear optimization problems of the form: #' #' \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} #' #' \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ #' s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} #' #' where \eqn{f(x)} is the objective function to be minimized and \eqn{x} #' represents the \eqn{n} optimization parameters. This problem may optionally #' be subject to the bound constraints (also called box constraints), \eqn{lb} #' and \eqn{ub}. For partially or totally unconstrained problems the bounds can #' take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} #' nonlinear inequality constraints (sometimes called a nonlinear programming #' problem), which can be specified in \eqn{g(x)}, and equality constraints that #' can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt #' can handle constraints. #' #' An optimization problem can be solved with the general \code{nloptr} #' interface, or using one of the wrapper functions for the separate algorithms; #' \code{auglag}, \code{bobyqa}, \code{ccsaq}, \code{cobyla}, \code{crs2lm}, #' \code{direct}, \code{directL}, \code{isres}, \code{lbfgs}, \code{mlsl}, #' \code{mma}, \code{neldermead}, \code{newuoa}, \code{sbplx}, \code{slsqp}, #' \code{stogo}, \code{tnewton}, \code{varmetric}. #' #' \tabular{ll}{Package: \tab nloptr\cr Type: \tab Package\cr Version: \tab #' 2.0.3\cr Date: \tab 2022-05-26\cr License: \tab L-GPL >= 3\cr} #' #' @name nloptr-package #' #' @useDynLib nloptr, .registration = TRUE #' #' @author Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) #' \cr Hans W. Borchers (wrappers) #' #' @note See ?nloptr for more examples. #' #' @seealso \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} #' \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} \code{\link{nloptr}} #' \code{\link{auglag}} \code{\link{bobyqa}} \code{\link{ccsaq}} #' \code{\link{cobyla}} \code{\link{crs2lm}} \code{\link{direct}} #' \code{\link{directL}} \code{\link{isres}} \code{\link{lbfgs}} #' \code{\link{mlsl}} \code{\link{mma}} \code{\link{neldermead}} #' \code{\link{newuoa}} \code{\link{sbplx}} \code{\link{slsqp}} #' \code{\link{stogo}} \code{\link{tnewton}} \code{\link{varmetric}} #' #' @references Steven G. Johnson, The NLopt nonlinear-optimization package, #' \url{https://nlopt.readthedocs.io/en/latest/} #' #' @keywords optimize interface internal #' #' @examples #' #' # Example problem, number 71 from the Hock-Schittkowsky test suite. #' # #' # \min_{x} x1 * x4 * (x1 + x2 + x3) + x3 #' # s.t. #' # x1 * x2 * x3 * x4 >= 25 #' # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 = 40 #' # 1 <= x1, x2, x3, x4 <= 5 #' # #' # we re-write the inequality as #' # 25 - x1 * x2 * x3 * x4 <= 0 #' # #' # and the equality as #' # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 - 40 = 0 #' # #' # x0 = (1, 5, 5, 1) #' # #' # optimal solution = (1.000000, 4.742999, 3.821151, 1.379408) #' #' library('nloptr') #' #' # #' # f(x) = x1 * x4 * (x1 + x2 + x3) + x3 #' # #' eval_f <- function(x) { #' list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], #' "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), #' x[1] * x[4], #' x[1] * x[4] + 1.0, #' x[1] * (x[1] + x[2] + x[3]))) #' } #' #' # constraint functions #' # inequalities #' eval_g_ineq <- function(x) { #' constr <- c(25 - x[1] * x[2] * x[3] * x[4]) #' #' grad <- c(-x[2] * x[3] * x[4], #' -x[1] * x[3] * x[4], #' -x[1] * x[2] * x[4], #' -x[1] * x[2] * x[3] ) #' list("constraints" = constr, "jacobian" = grad) #' } #' #' # equalities #' eval_g_eq <- function(x) { #' constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) #' #' grad <- c(2.0 * x[1], #' 2.0 * x[2], #' 2.0 * x[3], #' 2.0 * x[4]) #' list("constraints" = constr, "jacobian" = grad) #' } #' #' # initial values #' x0 <- c(1, 5, 5, 1) #' #' # lower and upper bounds of control #' lb <- c(1, 1, 1, 1) #' ub <- c(5, 5, 5, 5) #' #' #' local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) #' opts <- list("algorithm" = "NLOPT_LD_AUGLAG", #' "xtol_rel" = 1.0e-7, #' "maxeval" = 1000, #' "local_opts" = local_opts) #' #' res <- nloptr(x0 = x0, #' eval_f = eval_f, #' lb = lb, #' ub = ub, #' eval_g_ineq = eval_g_ineq, #' eval_g_eq = eval_g_eq, #' opts = opts) #' print(res) "_PACKAGE" nloptr/R/zzz.R0000644000176200001440000000054114763300100012743 0ustar liggesusers.onLoad <- function(libname, pkgname) { #nocov start # Set the option to TRUE if it has not been set before. if (is.null(getOption("nloptr.show.inequality.warning"))) options("nloptr.show.inequality.warning" = TRUE) } .onUnLoad <- function(libpath) { library.dynam.unload("nloptr", libpath) } #nocov end have.nlopt.ld.lbfgs.nocedal <- FALSE nloptr/R/lbfgs.R0000644000176200001440000000653214472612401013220 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: lbfgs.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Low-storage BFGS. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Low-storage BFGS #' #' Low-storage version of the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method. #' #' The low-storage (or limited-memory) algorithm is a member of the class of #' quasi-Newton optimization methods. It is well suited for optimization #' problems with a large number of variables. #' #' One parameter of this algorithm is the number \code{m} of gradients to #' remember from previous optimization steps. NLopt sets \code{m} to a #' heuristic value by default. It can be changed by the NLopt function #' \code{set_vector_storage}. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of control parameters, see \code{nl.opts} for help. #' @param ... further arguments to be passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export lbfgs #' #' @author Hans W. Borchers #' #' @note Based on a Fortran implementation of the low-storage BFGS algorithm #' written by L. Luksan, and posted under the GNU LGPL license. #' #' @seealso \code{\link{optim}} #' #' @references J. Nocedal, ``Updating quasi-Newton matrices with limited #' storage,'' Math. Comput. 35, 773-782 (1980). #' #' D. C. Liu and J. Nocedal, ``On the limited memory BFGS method for large #' scale optimization,'' Math. Programming 45, p. 503-528 (1989). #' #' @examples #' #' flb <- function(x) { #' p <- length(x) #' sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) #' } #' # 25-dimensional box constrained: par[24] is *not* at the boundary #' S <- lbfgs(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), #' nl.info = TRUE, control = list(xtol_rel=1e-8)) #' ## Optimal value of objective function: 368.105912874334 #' ## Optimal value of controls: 2 ... 2 2.109093 4 #' lbfgs <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_LBFGS" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr.get.default.options.R0000644000176200001440000003515014763300100017323 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.default.options.R # Author: Jelmer Ypma # Date: 7 August 2011 # # Defines a data.frame with fields: # name: name of the option. # type: type (numeric, logical, integer, character). # possible_values: string explaining the values the option can take. # default: default value of the option (as a string). # is_termination_condition: is this option part of the termination conditions? # description: description of the option (taken from NLopt website # if it's an option that is passed on to NLopt). # # CHANGELOG: # 2014-07-12: Changed from creating a data.frame to a function returning a # data.frame. # 2023-02-09: Cleanup and tweaks for safety and efficiency (AA) #' Return a data.frame with all the options that can be supplied to nloptr. #' #' This function returns a data.frame with all the options that can be supplied #' to \code{\link[nloptr:nloptr]{nloptr}}. The data.frame contains the default #' values of the options and an explanation. A user-friendly way to show these #' options is by using the function #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}}. #' #' @return The return value contains a \code{data.frame} with the following #' elements #' \item{name}{name of the option} #' \item{type}{type (numeric, logical, integer, character)} #' \item{possible_values}{string explaining the values the option can take} #' \item{default}{default value of the option (as a string)} #' \item{is_termination_condition}{is this option part of the termination #' conditions?} #' \item{description}{description of the option (taken from NLopt website #' if it's an option that is passed on to NLopt).} #' #' @export nloptr.get.default.options #' #' @author Jelmer Ypma #' #' @seealso #' \code{\link[nloptr:nloptr]{nloptr}} #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} #' #' @keywords optimize interface #' nloptr.get.default.options <- function() { dat.opts <- data.frame( rbind( c("algorithm", "character", paste(c("NLOPT_GN_DIRECT", "NLOPT_GN_DIRECT_L", "NLOPT_GN_DIRECT_L_RAND", "NLOPT_GN_DIRECT_NOSCAL", "NLOPT_GN_DIRECT_L_NOSCAL", "NLOPT_GN_DIRECT_L_RAND_NOSCAL", "NLOPT_GN_ORIG_DIRECT", "NLOPT_GN_ORIG_DIRECT_L", "NLOPT_GD_STOGO", "NLOPT_GD_STOGO_RAND", "NLOPT_LD_SLSQP", if (have.nlopt.ld.lbfgs.nocedal) "NLOPT_LD_LBFGS_NOCEDAL", "NLOPT_LD_LBFGS", "NLOPT_LN_PRAXIS", "NLOPT_LD_VAR1", "NLOPT_LD_VAR2", "NLOPT_LD_TNEWTON", "NLOPT_LD_TNEWTON_RESTART", "NLOPT_LD_TNEWTON_PRECOND", "NLOPT_LD_TNEWTON_PRECOND_RESTART", "NLOPT_GN_CRS2_LM", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS", "NLOPT_LD_MMA", "NLOPT_LD_CCSAQ", "NLOPT_LN_COBYLA", "NLOPT_LN_NEWUOA", "NLOPT_LN_NEWUOA_BOUND", "NLOPT_LN_NELDERMEAD", "NLOPT_LN_SBPLX", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG_EQ", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_BOBYQA", "NLOPT_GN_ISRES"), collapse = ", "), "none", FALSE, paste("This option is required. Check the NLopt website", "for a description of the algorithms.")), c("stopval", "numeric", "-Inf <= stopval <= Inf", "-Inf", TRUE, paste("Stop minimization when an objective value <= stopval", "is found. Setting stopval to -Inf disables this", "stopping criterion (default).")), c("ftol_rel", "numeric", "ftol_rel > 0", "0.0", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes the objective function value by", "less than ftol_rel multiplied by the absolute value", "of the function value. If there is any chance that", "your optimum function value is close to zero, you", "might want to set an absolute tolerance with", "ftol_abs as well. Criterion is disabled if ftol_rel", "is non-positive (default).")), c("ftol_abs", "numeric", "ftol_abs > 0", "0.0", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes the function value by less than", "ftol_abs. Criterion is disabled if ftol_abs is", "non-positive (default).")), c("xtol_rel", "numeric", "xtol_rel > 0", "1.0e-04", TRUE, paste("Stop when an optimization step (or an estimate of", "the optimum) changes every parameter by less than", "xtol_rel multiplied by the absolute value of the", "parameter. If there is any chance that an optimal", "parameter is close to zero, you might want to set an", "absolute tolerance with xtol_abs as well. Criterion", "is disabled if xtol_rel is non-positive.")), c("xtol_abs", "numeric", "xtol_abs > 0", "rep(0.0, length(x0))", TRUE, paste("xtol_abs is a vector of length n (the number of", "elements in x) giving the tolerances: stop when an", "optimization step (or an estimate of the optimum)", "changes every parameter x[i] by less than", "xtol_abs[i]. Criterion is disabled if all elements", "of xtol_abs are non-positive (default).")), c("maxeval", "integer", "maxeval is a positive integer", "100", TRUE, paste("Stop when the number of function evaluations exceeds", "maxeval. This is not a strict maximum: the number of", "function evaluations may exceed maxeval slightly,", "depending upon the algorithm. Criterion is disabled", "if maxeval is non-positive.")), c("maxtime", "numeric", "maxtime > 0", "-1.0", TRUE, paste("Stop when the optimization time (in seconds) exceeds", "maxtime. This is not a strict maximum: the time may", "exceed maxtime slightly, depending upon the", "algorithm and on how slow your function evaluation", "is. Criterion is disabled if maxtime is non-positive", "(default).")), c("tol_constraints_ineq", "numeric", "tol_constraints_ineq > 0.0", "rep(1e-8, num_constraints_ineq)", FALSE, paste("The parameter tol_constraints_ineq is a vector of", "tolerances. Each tolerance corresponds to one of the", "inequality constraints. The tolerance is used for", "the purpose of stopping criteria only: a point x is", "considered feasible for judging whether to stop the", "optimization if eval_g_ineq(x) <= tol. A tolerance", "of zero means that NLopt will try not to consider", "any x to be converged unless eval_g_ineq(x) is", "strictly non-positive; generally, at least a small", "positive tolerance is advisable to reduce", "sensitivity to rounding errors. By default the", "tolerances for all inequality constraints are set to", "1e-8.")), c("tol_constraints_eq", "numeric", "tol_constraints_eq > 0.0", "rep(1e-8, num_constraints_eq)", FALSE, paste("The parameter tol_constraints_eq is a vector of", "tolerances. Each tolerance corresponds to one of the", "equality constraints. The tolerance is used for the", "purpose of stopping criteria only: a point x is", "considered feasible for judging whether to stop the", "optimization if abs(eval_g_ineq(x)) <= tol. For", "equality constraints, a small positive tolerance is", "strongly advised in order to allow NLopt to converge", "even if the equality constraint is slightly nonzero.", "By default the tolerances for all quality", "constraints are set to 1e-8.")), c("print_level", "integer", "0, 1, 2, or 3", "0", FALSE, paste("The option print_level controls how much output is", "shown during the optimization process. Possible", "values: 0 (default): no output; 1: show iteration", "number and value of objective function; 2: 1 + show", "value of (in)equalities; 3: 2 + show value of", "controls.")), c("check_derivatives", "logical", "TRUE or FALSE", "FALSE", FALSE, paste("The option check_derivatives can be activated to", "compare the user-supplied analytic gradients with", "finite difference approximations.")), c("check_derivatives_tol", "numeric", "check_derivatives_tol > 0.0", "1e-04", FALSE, paste("The option check_derivatives_tol determines when a", "difference between an analytic gradient and its", "finite difference approximation is flagged as an", "error.")), c("check_derivatives_print", "character", "'none', 'all', 'errors',", "all", FALSE, paste("The option check_derivatives_print controls the", "output of the derivative checker (if", "check_derivatives == TRUE). All comparisons are", "shown ('all'), only those comparisions that resulted", "in an error ('error'), or only the number of errors", "is shown ('none').")), c("print_options_doc", "logical", "TRUE or FALSE", "FALSE", FALSE, paste("If TRUE, a description of all options and their", "current and default values is printed to the screen.") ), c("population", "integer", "population is a positive integer", "0", FALSE, paste("Several of the stochastic search algorithms (e.g.,", "CRS, MLSL, and ISRES) start by generating some", "initial population of random points x. By default,", "this initial population size is chosen heuristically", "in some algorithm-specific way, but the initial", "population can by changed by setting a positive", "integer value for population. A population of zero", "implies that the heuristic default will be used.")), c("vector_storage", "integer", "vector_storage is a positive integer", "20", FALSE, paste("Number of gradients to remember from previous", "optimization steps.")), c("ranseed", "integer", "ranseed is a positive integer", "0", FALSE, paste("For stochastic optimization algorithms, pseudorandom", "numbers are generated. Set the random seed using", "ranseed if you want to use a 'deterministic'", "sequence of pseudorandom numbers, i.e. the same", "sequence from run to run. If ranseed is 0 (default),", "the seed for the random numbers is generated from", "the system time, so that you will get a different", "sequence of pseudorandom numbers each time you run", "your program.")) ), stringsAsFactors = FALSE) names(dat.opts) <- c("name", "type", "possible_values", "default", "is_termination_condition", "description") dat.opts } nloptr/R/print.nloptr.R0000644000176200001440000000642614472612401014576 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: print.nloptr.R # Author: Jelmer Ypma # Date: 10 June 2010 # # This function prints some basic output of a nloptr # ojbect. The information is only available after it # has been solved. # # show.controls is TRUE, FALSE or a vector of indices. # Use this option to show none, or only a subset of # the controls. # # 2011-01-13: added show.controls option # 2011-08-07: show 'optimal value' instead of 'current value' # if status == 1, 2, 3, or 4 # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) #' Print results after running nloptr #' #' This function prints the nloptr object that holds the results from a #' minimization using \code{nloptr}. #' #' @param x object containing result from minimization. #' @param show.controls Logical or vector with indices. Should we show the value #' of the control variables in the solution? If \code{show.controls} is a #' vector with indices, it is used to select which control variables should be #' shown. This can be useful if the model contains a set of parameters of #' interest and a set of nuisance parameters that are not of immediate #' interest. #' @param ... further arguments passed to or from other methods. #' #' @method print nloptr #' @export #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' print.nloptr <- function(x, show.controls = TRUE, ...) { cat("\nCall:\n", deparse(x$call), "\n\n", sep = "", fill = TRUE) cat(paste("Minimization using NLopt version", x$version, "\n"), fill = TRUE) cat(unlist(strsplit(paste("NLopt solver status:", x$status, "(", x$message, ")\n"), " ", fixed = TRUE)), fill = TRUE) cat(paste("Number of Iterations....:", x$iterations, "\n")) cat(paste("Termination conditions: ", x$termination_conditions, "\n")) cat(paste("Number of inequality constraints: ", x$num_constraints_ineq, "\n")) cat(paste("Number of equality constraints: ", x$num_constraints_eq, "\n")) # if show.controls is TRUE or FALSE, show all or none of the controls if (is.logical(show.controls) && show.controls) { controls.indices <- seq_along(x$solution) } # if show.controls is a vector with indices, rename this vector # and define show.controls as TRUE if (is.numeric(show.controls)) { controls.indices <- show.controls show.controls <- TRUE } # if solved successfully if (x$status >= 1 && x$status <= 4) { cat(paste("Optimal value of objective function: ", x$objective, "\n")) if (show.controls) { if (length(controls.indices) < length(x$solution)) { cat("Optimal value of user-defined subset of controls: ") } else { cat("Optimal value of controls: ") } cat(x$solution[controls.indices], fill = TRUE) cat("\n") } } else { cat(paste("Current value of objective function: ", x$objective, "\n")) if (show.controls) { if (length(controls.indices) < length(x$solution)) { cat("Current value of user-defined subset of controls: ") } else { cat("Current value of controls: ") } cat(x$solution[controls.indices], fill = TRUE) cat("\n") } } cat("\n") } nloptr/R/mma.R0000644000176200001440000001434314634272373012706 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: mma.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using MMA. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency. (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example. (Avraham Adler) # #' Method of Moving Asymptotes #' #' Globally-convergent method-of-moving-asymptotes (\acronym{MMA}) algorithm for #' gradient-based local optimization, including nonlinear inequality #' constraints (but not equality constraints). #' #' This is an improved \acronym{CCSA} ("conservative convex separable #' approximation") variant of the original \acronym{MMA} algorithm published by #' Svanberg in 1987, which has become popular for topology optimization. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. #' @param hinjac Jacobian of function \code{hin}; will be calculated #' numerically if not specified. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 1) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export mma #' #' @author Hans W. Borchers #' #' @note \dQuote{Globally convergent} does not mean that this algorithm #' converges to the global optimum; rather, it means that the algorithm is #' guaranteed to converge to some local minimum from any feasible starting #' point. #' #' @seealso \code{\link{slsqp}} #' #' @references Krister Svanberg, \dQuote{A class of globally convergent #' optimization methods based on conservative convex separable #' approximations}, SIAM J. Optim. 12 (2), p. 555-573 (2002). #' #' @examples #' #' # Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' # See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' gr.hs100 <- function(x) { #' c( 2 * x[1] - 20, #' 10 * x[2] - 120, #' 4 * x[3] ^ 3, #' 6 * x[4] - 66, #' 60 * x[5] ^ 5, #' 14 * x[6] - 4 * x[7] - 10, #' 4 * x[7] ^ 3 - 4 * x[6] - 8) #' } #' #' hinjac.hs100 <- function(x) { #' matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, #' 7, 3, 20 * x[3], 1, -1, 0, 0, #' 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, #' 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), #' nrow = 4, byrow = TRUE) #' } #' #' # The optimum value of the objective function should be 680.6300573 #' # A suitable parameter vector is roughly #' # (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' # Using analytic Jacobian #' S <- mma(x0.hs100, fn.hs100, gr = gr.hs100, #' hin = hin.hs100, hinjac = hinjac.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' #' # Using computed Jacobian #' S <- mma(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8), #' deprecatedBehavior = FALSE) #' mma <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LD_MMA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptr.print.options.R0000644000176200001440000000556214472612401016270 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.print.options.R # Author: Jelmer Ypma # Date: 8 August 2011 # # Print list of all options with description. # # Input: # opts.show: the description of the options in this list are shown # (optional, default is to show all options) # opts.user: list with user defined options (optional) # Output: options, default values, user values if supplied) # and description printed to screen. No return value. # # 2011-08-08: Added opts.show argument to only show a subset of all options. # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) #' Print description of nloptr options #' #' This function prints a list of all the options that can be set when solving #' a minimization problem using \code{nloptr}. #' #' @param opts.show list or vector with names of options. A description will be #' shown for the options in this list. By default, a description of all #' options is shown. #' @param opts.user object containing user supplied options. This argument is #' optional. It is used when \code{nloptr.print.options} is called from #' \code{nloptr}. In that case options are listed if \code{print_options_doc} #' is set to \code{TRUE} when passing a minimization problem to \code{nloptr}. #' #' @export nloptr.print.options #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' nloptr.print.options() #' #' nloptr.print.options(opts.show = c("algorithm", "check_derivatives")) #' #' opts <- list("algorithm"="NLOPT_LD_LBFGS", #' "xtol_rel"=1.0e-8) #' nloptr.print.options(opts.user = opts) #' nloptr.print.options <- function(opts.show = NULL, opts.user = NULL) { # Default is to show all options if no list of options is supplied nloptr.show.options <- nloptr.get.default.options() if (!is.null(opts.show)) { nloptr.show.options <- subset(nloptr.show.options, nloptr.show.options$name %in% opts.show) } # loop over all options and print values for (row.cnt in seq_len(nrow(nloptr.show.options))) { opt <- nloptr.show.options[row.cnt, ] value.current <- ifelse(is.null(opts.user[[opt$name]]), "(default)", opts.user[[opt$name]]) cat(opt$name, "\n", sep = "") cat("\tpossible values: ", paste(strwrap(opt$possible_values, width = 50), collapse = "\n\t "), "\n", sep = "") cat("\tdefault value: ", opt$default, "\n", sep = "") if (!is.null(opts.user)) { cat("\tcurrent value: ", value.current, "\n", sep = "") } cat("\n\t", paste(strwrap(opt$description, width = 70), collapse = "\n\t"), "\n", sep = "") cat("\n") } } nloptr/R/nloptr.R0000644000176200001440000005317014765233776013464 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.R # Author: Jelmer Ypma # Date: 9 June 2010 # # Input: # x0 : vector with initial values # eval_f : function to evaluate objective function # (and optionally its gradient) # eval_grad_f : function evaluate the gradient of the objective function # (optional) # lb : lower bounds of the control (optional) # ub : upper bounds of the control (optional) # eval_g_ineq : function to evaluate (non-)linear inequality constraints # that should hold in the solution and its Jacobian # (optional) # eval_jac_g_ineq : function to evaluate Jacobian of the (non-)linear # inequality constraints (optional) # eval_g_eq : function to evaluate (non-)linear equality constraints that # should hold in the solution and its Jacobian (optional) # eval_jac_g_eq : function to evaluate Jacobian of the (non-)linear # equality constraints (optional) # opts : list with options that are passed to nlopt # ... : arguments that are passed to user-defined functions # # Output: structure with inputs and # call : the call that was made to solve # status : integer value with the status of the optimization # (0 is success) # message : more informative message with the status of the optimization # iterations : number of iterations that were executed # objective : value if the objective function in the solution # solution : optimal value of the controls # # CHANGELOG: # 2011-01-13: added print_level option # 2011-07-24: added finite difference gradient checker # 2011-08-07: moved addition of default options to separate function # show documentation of options if print_options_doc == TRUE # 2014-05-05: Replaced cat by message, so messages can now be suppressed by # suppressMessages. # 2015-03-22: Added while-loop around solve statement. This should solve the # problem that NLopt sometimes exits with NLOPT_MAXTIME_REACHED # when no maxtime was set in the options. # 2023-02-08: Removed unneeded or inefficient calls, updated code # stylistically, updated help by using LaTeX and code # decorations. (AA) # #' R interface to NLopt #' #' nloptr is an R interface to NLopt, a free/open-source library for nonlinear #' optimization started by Steven G. Johnson, providing a common interface for a #' number of different free optimization routines available online as well as #' original implementations of various other algorithms. The NLopt library is #' available under the GNU Lesser General Public License (LGPL), and the #' copyrights are owned by a variety of authors. Most of the information here #' has been taken from #' \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where #' more details are available. #' #' NLopt addresses general nonlinear optimization problems of the form: #' #' \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} #' #' \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ #' s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} #' #' where \eqn{f(x)} is the objective function to be minimized and \eqn{x} #' represents the \eqn{n} optimization parameters. This problem may optionally #' be subject to the bound constraints (also called box constraints), \eqn{lb} #' and \eqn{ub}. For partially or totally unconstrained problems the bounds can #' take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} #' nonlinear inequality constraints (sometimes called a nonlinear programming #' problem), which can be specified in \eqn{g(x)}, and equality constraints that #' can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt #' can handle constraints. #' #' @param x0 vector with starting values for the optimization. #' @param eval_f function that returns the value of the objective function. It #' can also return gradient information at the same time in a list with #' elements "objective" and "gradient" (see below for an example). #' @param eval_grad_f function that returns the value of the gradient of the #' objective function. Not all of the algorithms require a gradient. #' @param lb vector with lower bounds of the controls (use \code{-Inf} for #' controls without lower bound), by default there are no lower bounds for any #' of the controls. #' @param ub vector with upper bounds of the controls (use \code{Inf} for #' controls without upper bound), by default there are no upper bounds for any #' of the controls. #' @param eval_g_ineq function to evaluate (non-)linear inequality constraints #' that should hold in the solution. It can also return gradient information #' at the same time in a list with elements "constraints" and "jacobian" (see #' below for an example). #' @param eval_jac_g_ineq function to evaluate the Jacobian of the (non-)linear #' inequality constraints that should hold in the solution. #' @param eval_g_eq function to evaluate (non-)linear equality constraints that #' should hold in the solution. It can also return gradient information at #' the same time in a list with elements "constraints" and "jacobian" (see #' below for an example). #' @param eval_jac_g_eq function to evaluate the Jacobian of the (non-)linear #' equality constraints that should hold in the solution. #' @param opts list with options. The option "\code{algorithm}" is required. #' Check the #' \href{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}{NLopt #' website} for a full list of available algorithms. Other options control the #' termination conditions (\code{minf_max, ftol_rel, ftol_abs, xtol_rel,} #' \code{xtol_abs, maxeval, maxtime}). Default is \code{xtol_rel} = 1e-4. More #' information #' \href{https://nlopt.readthedocs.io/en/latest/NLopt_Introduction/#termination-conditions}{here}. #nolint #' A full description of all options is shown by the function #' \code{nloptr.print.options()}. #' #' Some algorithms with equality constraints require the option #' \code{local_opts}, which contains a list with an algorithm and a termination #' condition for the local algorithm. See \code{?`nloptr-package`} for an #' example. #' #' The option \code{print_level} controls how much output is shown during the #' optimization process. Possible values: \tabular{ll}{0 (default) \tab no #' output \cr 1 \tab show iteration number and value of objective function \cr #' 2 \tab 1 + show value of (in)equalities \cr 3 \tab 2 + show value of #' controls} #' #' The option \code{check_derivatives} (default = \code{FALSE}) can be used to #' run to compare the analytic gradients with finite difference approximations. #' The option \code{check_derivatives_print} (\code{'all'} (default), #' \code{'errors'}, \code{'none'}) controls the output of the derivative #' checker, if it is run, showing all comparisons, only those that resulted in #' an error, or none. The option \code{check_derivatives_tol} (default = #' 1e-04), determines when a difference between an analytic gradient and its #' finite difference approximation is flagged as an error. #' #' @param ... arguments that will be passed to the user-defined objective and #' constraints functions. #' #' @return The return value contains a list with the inputs, and additional #' elements #' \item{call}{the call that was made to solve} #' \item{status}{integer value with the status of the optimization (0 is #' success)} #' \item{message}{more informative message with the status of the optimization} #' \item{iterations}{number of iterations that were executed} #' \item{objective}{value if the objective function in the solution} #' \item{solution}{optimal value of the controls} #' \item{version}{version of NLopt that was used} #' #' @export nloptr #' #' @author Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) #' #' @note See \code{?`nloptr-package`} for an extended example. #' #' @seealso #' \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} #' \code{\link[nloptr:check.derivatives]{check.derivatives}} #' \code{\link{optim}} #' \code{\link{nlm}} #' \code{\link{nlminb}} #' \code{Rsolnp::Rsolnp} #' \code{Rsolnp::solnp} #' #' @references Steven G. Johnson, The NLopt nonlinear-optimization package, #' \url{https://github.com/stevengj/nlopt} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' #' ## Rosenbrock Banana function and gradient in separate functions #' eval_f <- function(x) { #' return(100 * (x[2] - x[1] * x[1])^2 + (1 - x[1])^2) #'} #' #' eval_grad_f <- function(x) { #' return(c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), #' 200 * (x[2] - x[1] * x[1]))) #'} #' #' #' # initial values #' x0 <- c(-1.2, 1) #' #' opts <- list("algorithm"="NLOPT_LD_LBFGS", #' "xtol_rel"=1.0e-8) #' #' # solve Rosenbrock Banana function #' res <- nloptr(x0=x0, #' eval_f=eval_f, #' eval_grad_f=eval_grad_f, #' opts=opts) #' print(res) #' #' #' ## Rosenbrock Banana function and gradient in one function #' # this can be used to economize on calculations #' eval_f_list <- function(x) { #' return( #' list( #' "objective" = 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2, #' "gradient" = c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), #' 200 * (x[2] - x[1] * x[1])))) #'} #' #' # solve Rosenbrock Banana function using an objective function that #' # returns a list with the objective value and its gradient #' res <- nloptr(x0=x0, #' eval_f=eval_f_list, #' opts=opts) #' print(res) #' #' #' #' # Example showing how to solve the problem from the NLopt tutorial. #' # #' # min sqrt(x2) #' # s.t. x2 >= 0 #' # x2 >= (a1*x1 + b1)^3 #' # x2 >= (a2*x1 + b2)^3 #' # where #' # a1 = 2, b1 = 0, a2 = -1, b2 = 1 #' # #' # re-formulate constraints to be of form g(x) <= 0 #' # (a1*x1 + b1)^3 - x2 <= 0 #' # (a2*x1 + b2)^3 - x2 <= 0 #' #' library('nloptr') #' #' #' # objective function #' eval_f0 <- function(x, a, b) { #' return(sqrt(x[2])) #'} #' #' # constraint function #' eval_g0 <- function(x, a, b) { #' return((a*x[1] + b)^3 - x[2]) #'} #' #' # gradient of objective function #' eval_grad_f0 <- function(x, a, b) { #' return(c(0, .5/sqrt(x[2]))) #'} #' #' # Jacobian of constraint #' eval_jac_g0 <- function(x, a, b) { #' return(rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), #' c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0))) #'} #' #' #' # functions with gradients in objective and constraint function #' # this can be useful if the same calculations are needed for #' # the function value and the gradient #' eval_f1 <- function(x, a, b) { #' return(list("objective"=sqrt(x[2]), #' "gradient"=c(0,.5/sqrt(x[2])))) #'} #' #' eval_g1 <- function(x, a, b) { #' return(list("constraints"=(a*x[1] + b)^3 - x[2], #' "jacobian"=rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), #' c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0)))) #'} #' #' #' # define parameters #' a <- c(2,-1) #' b <- c(0, 1) #' #' # Solve using NLOPT_LD_MMA with gradient information supplied in separate #' # function. #' res0 <- nloptr(x0=c(1.234,5.678), #' eval_f=eval_f0, #' eval_grad_f=eval_grad_f0, #' lb = c(-Inf,0), #' ub = c(Inf,Inf), #' eval_g_ineq = eval_g0, #' eval_jac_g_ineq = eval_jac_g0, #' opts = list("algorithm"="NLOPT_LD_MMA"), #' a = a, #' b = b) #' print(res0) #' #' # Solve using NLOPT_LN_COBYLA without gradient information #' res1 <- nloptr(x0=c(1.234,5.678), #' eval_f=eval_f0, #' lb = c(-Inf, 0), #' ub = c(Inf, Inf), #' eval_g_ineq = eval_g0, #' opts = list("algorithm" = "NLOPT_LN_COBYLA"), #' a = a, #' b = b) #' print(res1) #' #' #' # Solve using NLOPT_LD_MMA with gradient information in objective function #' res2 <- nloptr(x0=c(1.234, 5.678), #' eval_f=eval_f1, #' lb = c(-Inf, 0), #' ub = c(Inf, Inf), #' eval_g_ineq = eval_g1, #' opts = list("algorithm"="NLOPT_LD_MMA", #' "check_derivatives" = TRUE), #' a = a, #' b = b) #' print(res2) #' nloptr <- function(x0, eval_f, eval_grad_f = NULL, lb = NULL, ub = NULL, eval_g_ineq = NULL, eval_jac_g_ineq = NULL, eval_g_eq = NULL, eval_jac_g_eq = NULL, opts = list(), ...) { # check x0 if (!is.numeric(x0)) stop("x0 must be numeric\n") if (length(x0) == 0) stop("x0 must have length > 0\n") # internal function to check the arguments of the functions .checkfunargs <- function(fun, arglist, funname) { if (!is.function(fun)) stop(funname, " must be a function\n") flist <- formals(fun) if (length(flist) > 1) { fnms <- names(flist)[2:length(flist)] # remove first argument (x) rnms <- names(arglist) m1 <- match(fnms, rnms) if (anyNA(m1)) { mx1 <- which(is.na(m1)) for (i in seq_along(mx1)) { stop(funname, " requires argument '", fnms[mx1[i]], "' but this has not been passed to the 'nloptr' function.\n") } } m2 <- match(rnms, fnms) if (anyNA(m2)) { mx2 <- which(is.na(m2)) for (i in seq_along(mx2)) { stop(rnms[mx2[i]], "' passed to (...) in 'nloptr' but this is not ", "required in the ", funname, " function.\n") } } } } # extract list of additional arguments and check user-defined functions arglist <- list(...) .checkfunargs(eval_f, arglist, "eval_f") if (!is.null(eval_grad_f)) { .checkfunargs(eval_grad_f, arglist, "eval_grad_f") } if (!is.null(eval_g_ineq)) { .checkfunargs(eval_g_ineq, arglist, "eval_g_ineq") } if (!is.null(eval_jac_g_ineq)) { .checkfunargs(eval_jac_g_ineq, arglist, "eval_jac_g_ineq") } if (!is.null(eval_g_eq)) .checkfunargs(eval_g_eq, arglist, "eval_g_eq") if (!is.null(eval_jac_g_eq)) { .checkfunargs(eval_jac_g_eq, arglist, "eval_jac_g_eq") } # define 'infinite' lower and upper bounds of the control if they haven't been # set if (is.null(lb)) {lb <- rep(-Inf, length(x0))} if (is.null(ub)) {ub <- rep(Inf, length(x0))} # if eval_f does not return a list, write a wrapper function combining # eval_f and eval_grad_f if (is.list(eval_f(x0, ...)) || is.null(eval_grad_f)) { eval_f_wrapper <- function(x) {eval_f(x, ...)} } else { eval_f_wrapper <- function(x) { list("objective" = eval_f(x, ...), "gradient" = eval_grad_f(x, ...)) } } # change the environment of the inequality constraint functions that we're # calling num_constraints_ineq <- 0 if (!is.null(eval_g_ineq)) { # if eval_g_ineq does not return a list, write a wrapper function # combining eval_g_ineq and eval_jac_g_ineq if (is.list(eval_g_ineq(x0, ...)) || is.null(eval_jac_g_ineq)) { eval_g_ineq_wrapper <- function(x) {eval_g_ineq(x, ...)} } else { eval_g_ineq_wrapper <- function(x) { list("constraints" = eval_g_ineq(x, ...), "jacobian" = eval_jac_g_ineq(x, ...)) } } # determine number of constraints tmp_constraints <- eval_g_ineq_wrapper(x0) if (is.list(tmp_constraints)) { num_constraints_ineq <- length(tmp_constraints$constraints) } else { num_constraints_ineq <- length(tmp_constraints) } } else { # define dummy function eval_g_ineq_wrapper <- NULL } # change the environment of the equality constraint functions that we're # calling num_constraints_eq <- 0 if (!is.null(eval_g_eq)) { # if eval_g_eq does not return a list, write a wrapper function # combining eval_g_eq and eval_jac_g_eq if (is.list(eval_g_eq(x0, ...)) || is.null(eval_jac_g_eq)) { eval_g_eq_wrapper <- function(x) {eval_g_eq(x, ...)} } else { eval_g_eq_wrapper <- function(x) { list("constraints" = eval_g_eq(x, ...), "jacobian" = eval_jac_g_eq(x, ...)) } } # determine number of constraints tmp_constraints <- eval_g_eq_wrapper(x0) if (is.list(tmp_constraints)) { num_constraints_eq <- length(tmp_constraints$constraints) } else { num_constraints_eq <- length(tmp_constraints) } } else { # define dummy function eval_g_eq_wrapper <- NULL } # extract local options from list of options if they exist if ("local_opts" %in% names(opts)) { res.opts.add <- nloptr.add.default.options( opts.user = opts$local_opts, x0 = x0, num_constraints_ineq = num_constraints_ineq, num_constraints_eq = num_constraints_eq ) local_opts <- res.opts.add$opts.user opts$local_opts <- NULL } else { local_opts <- NULL } # add defaults to list of options res.opts.add <- nloptr.add.default.options( opts.user = opts, x0 = x0, num_constraints_ineq = num_constraints_ineq, num_constraints_eq = num_constraints_eq ) opts <- res.opts.add$opts.user # add the termination criteria to the list termination_conditions <- res.opts.add$termination_conditions # print description of options if requested if (opts$print_options_doc) { nloptr.print.options(opts.user = opts) } # define list with all algorithms # nloptr.options.description is a data.frame with options that is loaded # when nloptr is loaded. nloptr.default.options <- nloptr.get.default.options() list_algorithms <- unlist( strsplit( nloptr.default.options[nloptr.default.options$name == "algorithm", "possible_values"], split = ", ", fixed = TRUE ) ) # run derivative checker if (opts$check_derivatives) { if (opts$algorithm %in% grep("NLOPT_[G,L]N", list_algorithms, value = TRUE)) { warning("Skipping derivative checker because algorithm '", opts$algorithm, "' does not use gradients.") } else { # check derivatives of objective function message("Checking gradients of objective function.") check.derivatives( .x = x0, func = function(x) {eval_f_wrapper(x)$objective}, func_grad = function(x) {eval_f_wrapper(x)$gradient}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_grad_f" ) if (num_constraints_ineq > 0) { # check derivatives of inequality constraints message("Checking gradients of inequality constraints.\n") check.derivatives( .x = x0, func = function(x) {eval_g_ineq_wrapper(x)$constraints}, func_grad = function(x) {eval_g_ineq_wrapper(x)$jacobian}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_jac_g_ineq" ) } if (num_constraints_eq > 0) { # check derivatives of equality constraints message("Checking gradients of equality constraints.\n") check.derivatives( .x = x0, func = function(x) {eval_g_eq_wrapper(x)$constraints}, func_grad = function(x) {eval_g_eq_wrapper(x)$jacobian}, check_derivatives_tol = opts$check_derivatives_tol, check_derivatives_print = opts$check_derivatives_print, func_grad_name = "eval_jac_g_eq" ) } } } ret <- list("x0" = x0, "eval_f" = eval_f_wrapper, "lower_bounds" = lb, "upper_bounds" = ub, "num_constraints_ineq" = num_constraints_ineq, "eval_g_ineq" = eval_g_ineq_wrapper, "num_constraints_eq" = num_constraints_eq, "eval_g_eq" = eval_g_eq_wrapper, "options" = opts, "local_options" = local_opts, "nloptr_environment" = new.env()) attr(ret, "class") <- "nloptr" # add the current call to the list ret$call <- match.call() # add the termination criteria to the list ret$termination_conditions <- termination_conditions # check whether we have a correctly formed nloptr object is.nloptr(ret) # Count the number of times that we try to solve the problem. num.evals <- 0 solve.continue <- TRUE while (num.evals <= 10 && solve.continue) { # Update the number of evaluations. num.evals <- num.evals + 1 # choose correct minimization function based on whether constrained were # supplied solution <- .Call(NLoptR_Optimize, ret) # remove the environment from the return object ret$environment <- NULL # add solution variables to object ret$status <- solution$status ret$message <- solution$message ret$iterations <- solution$iterations ret$objective <- solution$objective ret$solution <- solution$solution ret$version <- paste(c(solution$version_major, solution$version_minor, solution$version_bugfix), collapse = ".") ret$num.evals <- num.evals # If maxtime is set to a positive number in the options or if the return # status of the solver is not equal to 6, we can stop trying to solve # the problem. # # Solution status 6: NLOPT_MAXTIME_REACHED: Optimization stopped because # maxtime (above) was reached. # # This loop is needed because sometimes the solver exits with this code # even if maxtime is set to 0 or a negative number. if (opts$maxtime > 0 || solution$status != 6) { solve.continue <- FALSE } } ret # return call unnecessary; .Primitive return will be called. } nloptr/R/nloptr.add.default.options.R0000644000176200001440000000557114472612401017307 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptr.add.default.options.R # Author: Jelmer Ypma # Date: 17 August 2016 # # Add default options to a user supplied list of options. # # Input: # opts.user: list with user defined options # x0: initial value for control variables # num_constraints_ineq: number of inequality constraints # num_constraints_eq: number of equality constraints # # Output: # opts.user with default options added for those options # that were not part of the original opts.user. # # CHANGELOG: # 2016-08-17: Fixed bug that sometimes caused segmentation faults due to # uninitialized tolerances for the (in)equality constraints # (thanks to Florian Schwendiger). # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # nloptr.add.default.options <- function(opts.user, x0 = 0, num_constraints_ineq = 0, num_constraints_eq = 0) { nloptr.default.options <- nloptr.get.default.options() rownames(nloptr.default.options) <- nloptr.default.options$name # get names of options that define a termination condition termination.opts <- nloptr.default.options$name[ which(as.logical(nloptr.default.options$is_termination_condition)) ] if (sum(termination.opts %in% names(opts.user)) == 0) { # get default xtol_rel xtol_rel_default <- as.numeric( nloptr.default.options$default[ nloptr.default.options$name == "xtol_rel" ] ) warning("No termination criterion specified, using default", "(relative x-tolerance = ", xtol_rel_default, ")") termination_conditions <- paste0("relative x-tolerance = ", xtol_rel_default, " (DEFAULT)") } else { conv_options <- unlist(opts.user[names(opts.user) %in% termination.opts]) termination_conditions <- paste0(paste(names(conv_options)), ": ", paste(conv_options), collapse = "\t") } # determine list with names of options that contain character values. # we need to add quotes around these options below. nloptr.list.character.options <- nloptr.default.options$name[nloptr.default.options$type == "character"] opts <- vector(mode = "list", nrow(nloptr.default.options)) names(opts) <- nloptr.default.options$name for (name in names(opts)) { if (!is.null(opts.user[[name]])) { opts[[name]] <- opts.user[[name]] } else if (name %in% nloptr.list.character.options) { opts[[name]] <- nloptr.default.options[name, "default"] } else { opts[[name]] <- eval(parse(text = nloptr.default.options[name, "default"])) } } list("opts.user" = opts, "termination_conditions" = termination_conditions) } nloptr/R/nm.R0000644000176200001440000001333014472612401012527 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nm.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Nelder-Mead and Subplex. # # CHANGELOG # 2023-02-09: Cleanup and tweaks for safety and efficiency (Avraham Adler) # #' Nelder-Mead Simplex #' #' An implementation of almost the original Nelder-Mead simplex algorithm. #' #' Provides explicit support for bound constraints, using essentially the method #' proposed in Box. Whenever a new point would lie outside the bound #' constraints the point is moved back exactly onto the constraint. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export neldermead #' #' @author Hans W. Borchers #' #' @note The author of NLopt would tend to recommend the Subplex method #' instead. #' #' @seealso \code{dfoptim::nmk} #' #' @references J. A. Nelder and R. Mead, ``A simplex method for function #' minimization,'' The Computer Journal 7, p. 308-313 (1965). #' #' M. J. Box, ``A new method of constrained optimization and a comparison with #' other methods,'' Computer J. 8 (1), 42-52 (1965). #' #' @examples #' #' # Fletcher and Powell's helic valley #' fphv <- function(x) #' 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + #' (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 #' x0 <- c(-1, 0, 0) #' neldermead(x0, fphv) # 1 0 0 #' #' # Powell's Singular Function (PSF) #' psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + #' (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 #' x0 <- c(3, -1, 0, 1) #' neldermead(x0, psf) # 0 0 0 0, needs maximum number of function calls #' #' \dontrun{ #' # Bounded version of Nelder-Mead #' rosenbrock <- function(x) { ## Rosenbrock Banana function #' 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2 + #' 100 * (x[3] - x[2]^2)^2 + (1 - x[2])^2 #' } #' lower <- c(-Inf, 0, 0) #' upper <- c( Inf, 0.5, 1) #' x0 <- c(0, 0.1, 0.1) #' S <- neldermead(c(0, 0.1, 0.1), rosenbrock, lower, upper, nl.info = TRUE) #' # $xmin = c(0.7085595, 0.5000000, 0.2500000) #' # $fmin = 0.3353605} #' neldermead <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_NELDERMEAD" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' Subplex Algorithm #' #' Subplex is a variant of Nelder-Mead that uses Nelder-Mead on a sequence of #' subspaces. #' #' SUBPLEX is claimed to be much more efficient and robust than the original #' Nelder-Mead while retaining the latter's facility with discontinuous #' objectives. #' #' This implementation has explicit support for bound constraints via the #' method in the Box paper as described on the \code{neldermead} help page. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export sbplx #' #' @note It is the request of Tom Rowan that reimplementations of his algorithm #' shall not use the name `subplex'. #' #' @seealso \code{subplex::subplex} #' #' @references T. Rowan, ``Functional Stability Analysis of Numerical #' Algorithms'', Ph.D. thesis, Department of Computer Sciences, University of #' Texas at Austin, 1990. #' #' @examples #' #' # Fletcher and Powell's helic valley #' fphv <- function(x) #' 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + #' (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 #' x0 <- c(-1, 0, 0) #' sbplx(x0, fphv) # 1 0 0 #' #' # Powell's Singular Function (PSF) #' psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + #' (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 #' x0 <- c(3, -1, 0, 1) #' sbplx(x0, psf, control = list(maxeval = Inf, ftol_rel = 1e-6)) # 0 0 0 0 (?) #' sbplx <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_SBPLX" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/nloptions.R0000644000176200001440000000403714472612401014146 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: nloptions.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Function to define nloptr options list. #' Setting NL Options #' #' Sets and changes the NLOPT options. #' #' The following options can be set (here with default values): #' #' \code{stopval = -Inf, # stop minimization at this value}\cr \code{xtol_rel = #' 1e-6, # stop on small optimization step}\cr \code{maxeval = 1000, # stop on #' this many function evaluations}\cr \code{ftol_rel = 0.0, # stop on change #' times function value}\cr \code{ftol_abs = 0.0, # stop on small change of #' function value}\cr \code{check_derivatives = FALSE} #' #' @param optlist list of options, see below. #' #' @return returns a list with default and changed options. #' #' @export #' #' @author Hans W. Borchers #' #' @note There are more options that can be set for solvers in NLOPT. These #' cannot be set through their wrapper functions. To see the full list of #' options and algorithms, type \code{nloptr.print.options()}. #' #' @examples #' #' nl.opts(list(xtol_rel = 1e-8, maxeval = 2000)) #' nl.opts <- function(optlist = NULL) { opts <- list( stopval = -Inf, # stop minimization at this value xtol_rel = 1e-6, # stop on small optimization step maxeval = 1000, # stop on this many function evaluations ftol_rel = 0.0, # stop on change times function value ftol_abs = 0.0, # stop on small change of function value check_derivatives = FALSE, algorithm = NULL # will be filled by each single function ) if (is.null(optlist)) return(opts) if (!is.list(optlist) || "" %in% names(optlist)) stop("Argument `optlist` must be a named list.") for (option_name in names(optlist)) { opts[[option_name]] <- optlist[[option_name]] } if (!is.null(opts[["algorithm"]])) { warning("Option `algorithm` cannot be set here. It will be overwritten.") opts[["algorithm"]] <- NULL } opts } nloptr/R/cobyla.R0000644000176200001440000002322714634272373013406 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: cobyla.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using COBYLA, BOBYQA, and NEWUOA. # # CHANGELOG # 2023-02-10: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # #' Constrained Optimization by Linear Approximations #' #' \acronym{COBYLA} is an algorithm for derivative-free optimization with #' nonlinear inequality and equality constraints (but see below). #' #' It constructs successive linear approximations of the objective function and #' constraints via a simplex of \eqn{n+1} points (in \eqn{n} dimensions), and #' optimizes these approximations in a trust region at each step. #' #' \acronym{COBYLA} supports equality constraints by transforming them into two #' inequality constraints. This functionality has not been added to the wrapper. #' To use \acronym{COBYLA} with equality constraints, please use the full #' \code{nloptr} invocation. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin>=0} for all components. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @author Hans W. Borchers #' #' @note The original code, written in Fortran by Powell, was converted in C #' for the \acronym{SciPy} project. #' #' @seealso \code{\link{bobyqa}}, \code{\link{newuoa}} #' #' @references M. J. D. Powell, ``A direct search optimization method that #' models the objective and constraint functions by linear interpolation,'' in #' Advances in Optimization and Numerical Analysis, eds. S. Gomez and J.-P. #' Hennart (Kluwer Academic: Dordrecht, 1994), p. 51-67. #' #' @examples #' #' ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients #' ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm #' #' x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) #' fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + #' 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + #' x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} #' #' hin.hs100 <- function(x) {c( #' 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, #' 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, #' 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, #' 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - #' 11 * x[7]) #' } #' #' S <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 2000), #' deprecatedBehavior = FALSE) #' #' ## The optimum value of the objective function should be 680.6300573 #' ## A suitable parameter vector is roughly #' ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) #' #' S #' #' @export cobyla #' cobyla <- function(x0, fn, lower = NULL, upper = NULL, hin = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_COBYLA" f1 <- match.fun(fn) fn <- function(x) f1(x, ...) if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, eval_g_ineq = hin, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' Bound Optimization by Quadratic Approximation #' #' \acronym{BOBYQA} performs derivative-free bound-constrained optimization #' using an iteratively constructed quadratic approximation for the objective #' function. #' #' This is an algorithm derived from the \acronym{BOBYQA} Fortran subroutine of #' Powell, converted to C and modified for the \acronym{NLopt} stopping #' criteria. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export bobyqa #' #' @note Because \acronym{BOBYQA} constructs a quadratic approximation of the #' objective, it may perform poorly for objective functions that are not #' twice-differentiable. #' #' @seealso \code{\link{cobyla}}, \code{\link{newuoa}} #' #' @references M. J. D. Powell. ``The BOBYQA algorithm for bound constrained #' optimization without derivatives,'' Department of Applied Mathematics and #' Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). #' #' @examples #' #' ## Rosenbrock Banana function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' S <- bobyqa(c(0, 0), rbf) #' #' #' S #' #' ## Rosenbrock Banana function with both parameters constrained to [0, 0.5] #' #' S <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) #' #' S #' bobyqa <- function(x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_BOBYQA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #' New Unconstrained Optimization with quadratic Approximation #' #' \acronym{NEWUOA} solves quadratic subproblems in a spherical trust region via #' a truncated conjugate-gradient algorithm. For bound-constrained problems, #' \acronym{BOBYQA} should be used instead, as Powell developed it as an #' enhancement thereof for bound constraints. #' #' This is an algorithm derived from the \acronym{NEWUOA} Fortran subroutine of #' Powell, converted to C and modified for the \acronym{NLopt} stopping #' criteria. #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export newuoa #' #' @author Hans W. Borchers #' #' @note \acronym{NEWUOA} may be largely superseded by \acronym{BOBYQA}. #' #' @seealso \code{\link{bobyqa}}, \code{\link{cobyla}} #' #' @references M. J. D. Powell. ``The BOBYQA algorithm for bound constrained #' optimization without derivatives,'' Department of Applied Mathematics and #' Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). #' #' @examples #' #' ## Rosenbrock Banana function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' S <- newuoa(c(1, 2), rbf) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' S #' newuoa <- function(x0, fn, nl.info = FALSE, control = list(), ...) { opts <- nl.opts(control) opts["algorithm"] <- "NLOPT_LN_NEWUOA" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, fn, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/global.R0000644000176200001440000002743614634272373013403 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: global.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using StoGo. # # CHANGELOG # # 2023-02-08: Tweaks for efficiency and readability. (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the Hartmann 6 # example. (Avraham Adler) # #----------------------------------StoGo---------------------------------------- #' Stochastic Global Optimization #' #' \acronym{StoGO} is a global optimization algorithm that works by #' systematically dividing the search space---which must be #' bound-constrained---into smaller hyper-rectangles via a branch-and-bound #' technique, and searching them using a gradient-based local-search algorithm #' (a \acronym{BFGS} variant), optionally including some randomness. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr optional gradient of the objective function. #' @param lower,upper lower and upper bound constraints. #' @param maxeval maximum number of function evaluations. #' @param xtol_rel stopping criterion for relative change reached. #' @param randomized logical; shall a randomizing variant be used? #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export stogo #' #' @author Hans W. Borchers #' #' @note Only bounds-constrained problems are supported by this algorithm. #' #' @references S. Zertchaninov and K. Madsen, ``A C++ Programme for Global #' Optimization,'' IMM-REP-1998-04, Department of Mathematical Modelling, #' Technical University of Denmark. #' #' @examples #' #' ## Rosenbrock Banana objective function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' x0 <- c(-1.2, 1) #' lb <- c(-3, -3) #' ub <- c(3, 3) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' stogo(x0 = x0, fn = rbf, lower = lb, upper = ub) #' stogo <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, maxeval = 10000, xtol_rel = 1e-6, randomized = FALSE, nl.info = FALSE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel if (randomized) { opts["algorithm"] <- "NLOPT_GD_STOGO_RAND" } else { opts["algorithm"] <- "NLOPT_GD_STOGO" } fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (is.null(gr)) {gr <- function(x) nl.grad(x, fn)} S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #---------------------------------ISRES----------------------------------------- # ISRES supports nonlinear constraints but mat be quite inaccurate! #' Improved Stochastic Ranking Evolution Strategy #' #' The Improved Stochastic Ranking Evolution Strategy (\acronym{ISRES}) is an #' algorithm for nonlinearly constrained global optimization, or at least #' semi-global, although it has heuristics to escape local optima. #' #' The evolution strategy is based on a combination of a mutation rule---with a #' log-normal step-size update and exponential smoothing---and differential #' variation---a Nelder-Mead-like update rule). The fitness ranking is simply #' via the objective function for problems without nonlinear constraints, but #' when nonlinear constraints are included the stochastic ranking proposed by #' Runarsson and Yao is employed. #' #' This method supports arbitrary nonlinear inequality and equality constraints #' in addition to the bounds constraints. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param hin function defining the inequality constraints, that is #' \code{hin <= 0} for all components. #' @param heq function defining the equality constraints, that is \code{heq = 0} #' for all components. #' @param maxeval maximum number of function evaluations. #' @param pop.size population size. #' @param xtol_rel stopping criterion for relative change reached. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export isres #' #' @author Hans W. Borchers #' #' @note The initial population size for CRS defaults to \eqn{20x(n+1)} in #' \eqn{n} dimensions, but this can be changed. The initial population must be #' at least \eqn{n+1}. #' #' @references Thomas Philip Runarsson and Xin Yao, ``Search biases in #' constrained evolutionary optimization,'' IEEE Trans. on Systems, Man, and #' Cybernetics Part C: Applications and Reviews, vol. 35 (no. 2), pp. 233-243 #' (2005). #' #' @examples #' #' ## Rosenbrock Banana objective function #' #' rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} #' #' x0 <- c(-1.2, 1) #' lb <- c(-3, -3) #' ub <- c(3, 3) #' #' ## The function as written above has a minimum of 0 at (1, 1) #' #' isres(x0 = x0, fn = rbf, lower = lb, upper = ub) #' #' ## Now subject to the inequality that x[1] + x[2] <= 1.5 #' #' hin <- function(x) {x[1] + x[2] - 1.5} #' #' S <- isres(x0 = x0, fn = rbf, hin = hin, lower = lb, upper = ub, #' maxeval = 2e5L, deprecatedBehavior = FALSE) #' #' S #' #' sum(S$par) #' isres <- function(x0, fn, lower, upper, hin = NULL, heq = NULL, maxeval = 10000, pop.size = 20 * (length(x0) + 1), xtol_rel = 1e-6, nl.info = FALSE, deprecatedBehavior = TRUE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel opts$population <- pop.size opts$algorithm <- "NLOPT_GN_ISRES" fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) } S0 <- nloptr(x0 = x0, eval_f = fn, lb = lower, ub = upper, eval_g_ineq = hin, eval_g_eq = heq, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } #- --------------------------------- CRS -------------------------------------- #' Controlled Random Search #' #' The Controlled Random Search (\acronym{CRS}) algorithm (and in particular, #' the \acronym{CRS2} variant) with the `local mutation' modification. #' #' The \acronym{CRS} algorithms are sometimes compared to genetic algorithms, in #' that they start with a random population of points, and randomly evolve these #' points by heuristic rules. In this case, the evolution somewhat resembles a #' randomized Nelder-Mead algorithm. #' #' The published results for \acronym{CRS} seem to be largely empirical. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param lower,upper lower and upper bound constraints. #' @param maxeval maximum number of function evaluations. #' @param pop.size population size. #' @param ranseed prescribe seed for random number generator. #' @param xtol_rel stopping criterion for relative change reached. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export crs2lm #' #' @note The initial population size for CRS defaults to \eqn{10x(n+1)} in #' \eqn{n} dimensions, but this can be changed. The initial population must be #' at least \eqn{n+1}. #' #' @references W. L. Price, ``Global optimization by controlled random #' search,'' J. Optim. Theory Appl. 40 (3), p. 333-348 (1983). #' #' P. Kaelo and M. M. Ali, ``Some variants of the controlled random search #' algorithm for global optimization,'' J. Optim. Theory Appl. 130 (2), 253-264 #' (2006). #' #' @examples #' #' ## Minimize the Hartmann 6-Dimensional function #' ## See https://www.sfu.ca/~ssurjano/hart6.html #' #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10, 0.05, 3, 17, #' 3, 10, 3.5, 8, #' 17, 17, 1.7, 0.05, #' 3.5, 0.1, 10, 10, #' 1.7, 8, 17, 0.1, #' 8, 14, 8, 14), nrow = 4) #' #' B <- matrix(c(.1312, .2329, .2348, .4047, #' .1696, .4135, .1451, .8828, #' .5569, .8307, .3522, .8732, #' .0124, .3736, .2883, .5743, #' .8283, .1004, .3047, .1091, #' .5886, .9991, .6650, .0381), nrow = 4) #' #' hartmann6 <- function(x, a, A, B) { #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) #' } #' #' fun #' } #' #' ## The function has a global minimum of -3.32237 at #' ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) #' #' S <- crs2lm(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), #' ranseed = 10L, nl.info = TRUE, xtol_rel=1e-8, maxeval = 10000, #' a = a, A = A, B = B) #' #' S #' crs2lm <- function(x0, fn, lower, upper, maxeval = 10000, pop.size = 10 * (length(x0) + 1), ranseed = NULL, xtol_rel = 1e-6, nl.info = FALSE, ...) { opts <- list() opts$maxeval <- maxeval opts$xtol_rel <- xtol_rel opts$population <- pop.size if (!is.null(ranseed)) {opts$ranseed <- as.integer(ranseed)} opts$algorithm <- "NLOPT_GN_CRS2_LM" fun <- match.fun(fn) fn <- function(x) fun(x, ...) S0 <- nloptr(x0, eval_f = fn, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/auglag.R0000644000176200001440000002262414634272373013375 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: auglag.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Augmented Lagrangian. # # CHANGELOG # # 2017-09-26: Fixed bug, BOBYQA is allowed as local solver # (thanks to Leo Belzile). # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also corrected Powell example. # (Avraham Adler) # #' Augmented Lagrangian Algorithm #' #' The Augmented Lagrangian method adds additional terms to the unconstrained #' objective function, designed to emulate a Lagrangian multiplier. #' #' This method combines the objective function and the nonlinear #' inequality/equality constraints (if any) in to a single function: #' essentially, the objective plus a `penalty' for any violated constraints. #' #' This modified objective function is then passed to another optimization #' algorithm with no nonlinear constraints. If the constraints are violated by #' the solution of this sub-problem, then the size of the penalties is #' increased and the process is repeated; eventually, the process must converge #' to the desired solution (if it exists). #' #' Since all of the actual optimization is performed in this subsidiary #' optimizer, the subsidiary algorithm that you specify determines whether the #' optimization is gradient-based or derivative-free. #' #' The local solvers available at the moment are ``COBYLA'' (for the #' derivative-free approach) and ``LBFGS'', ``MMA'', or ``SLSQP'' (for smooth #' functions). The tolerance for the local solver has to be provided. #' #' There is a variant that only uses penalty functions for equality constraints #' while inequality constraints are passed through to the subsidiary algorithm #' to be handled directly; in this case, the subsidiary algorithm must handle #' inequality constraints. (At the moment, this variant has been turned off #' because of problems with the NLOPT library.) #' #' @param x0 starting point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of the objective function; will be provided provided is #' \code{NULL} and the solver requires derivatives. #' @param lower,upper lower and upper bound constraints. #' @param hin,hinjac defines the inequality constraints, \code{hin(x) >= 0} #' @param heq,heqjac defines the equality constraints, \code{heq(x) = 0}. #' @param localsolver available local solvers: COBYLA, LBFGS, MMA, or SLSQP. #' @param localtol tolerance applied in the selected local solver. #' @param ineq2local logical; shall the inequality constraints be treated by #' the local solver?; not possible at the moment. #' @param nl.info logical; shall the original NLopt info been shown. #' @param control list of options, see \code{nl.opts} for help. #' @param deprecatedBehavior logical; if \code{TRUE} (default for now), the old #' behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} #' instead of \eqn{\le 0}. This will be reversed in a future release and #' eventually removed. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{global_solver}{the global NLOPT solver used.} #' \item{local_solver}{the local NLOPT solver used, LBFGS or COBYLA.} #' \item{convergence}{integer code indicating successful completion #' (> 0) or a possible error number (< 0).} #' \item{message}{character string produced by NLopt and giving additional #' information.} #' #' @export #' #' @author Hans W. Borchers #' #' @note Birgin and Martinez provide their own free implementation of the #' method as part of the TANGO project; other implementations can be found in #' semi-free packages like LANCELOT. #' #' @seealso \code{alabama::auglag}, \code{Rsolnp::solnp} #' #' @references Andrew R. Conn, Nicholas I. M. Gould, and Philippe L. Toint, ``A #' globally convergent augmented Lagrangian algorithm for optimization with #' general constraints and simple bounds,'' SIAM J. Numer. Anal. vol. 28, no. #' 2, p. 545-572 (1991). #' #' E. G. Birgin and J. M. Martinez, ``Improving ultimate convergence of an #' augmented Lagrangian method," Optimization Methods and Software vol. 23, no. #' 2, p. 177-195 (2008). #' #' @examples #' #' x0 <- c(1, 1) #' fn <- function(x) (x[1] - 2) ^ 2 + (x[2] - 1) ^ 2 #' hin <- function(x) 0.25 * x[1]^2 + x[2] ^ 2 - 1 # hin <= 0 #' heq <- function(x) x[1] - 2 * x[2] + 1 # heq = 0 #' gr <- function(x) nl.grad(x, fn) #' hinjac <- function(x) nl.jacobian(x, hin) #' heqjac <- function(x) nl.jacobian(x, heq) #' #' # with COBYLA #' auglag(x0, fn, gr = NULL, hin = hin, heq = heq, deprecatedBehavior = FALSE) #' #' # $par: 0.8228761 0.9114382 #' # $value: 1.393464 #' # $iter: 1001 #' #' auglag(x0, fn, gr = NULL, hin = hin, heq = heq, localsolver = "SLSQP", #' deprecatedBehavior = FALSE) #' #' # $par: 0.8228757 0.9114378 #' # $value: 1.393465 #' # $iter 184 #' #' ## Example from the alabama::auglag help page #' ## Parameters should be roughly (0, 0, 1) with an objective value of 1. #' #' fn <- function(x) (x[1] + 3 * x[2] + x[3]) ^ 2 + 4 * (x[1] - x[2]) ^ 2 #' heq <- function(x) x[1] + x[2] + x[3] - 1 #' # hin restated from alabama example to be <= 0. #' hin <- function(x) c(-6 * x[2] - 4 * x[3] + x[1] ^ 3 + 3, -x[1], -x[2], -x[3]) #' #' set.seed(12) #' auglag(runif(3), fn, hin = hin, heq = heq, localsolver= "lbfgs", #' deprecatedBehavior = FALSE) #' #' # $par: 4.861756e-08 4.732373e-08 9.999999e-01 #' # $value: 1 #' # $iter: 145 #' #' ## Powell problem from the Rsolnp::solnp help page #' ## Parameters should be roughly (-1.7171, 1.5957, 1.8272, -0.7636, -0.7636) #' ## with an objective value of 0.0539498478. #' #' x0 <- c(-2, 2, 2, -1, -1) #' fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) #' eqn1 <-function(x) #' c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5] - 10, #' x[2] * x[3] - 5 * x[4] * x[5], #' x[1] * x[1] * x[1] + x[2] * x[2] * x[2] + 1) #' #' auglag(x0, fn1, heq = eqn1, localsolver = "mma", deprecatedBehavior = FALSE) #' #' # $par: -1.7173645 1.5959655 1.8268352 -0.7636185 -0.7636185 #' # $value: 0.05394987 #' # $iter: 916 #' auglag <- function(x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, localsolver = "COBYLA", localtol = 1e-6, ineq2local = FALSE, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ...) { if (ineq2local) { # gsolver <- "NLOPT_LN_AUGLAG_EQ" stop("Inequalities to local solver: feature not yet implemented.") } localsolver <- toupper(localsolver) if (localsolver %in% c("COBYLA", "BOBYQA")) { # derivative-free dfree <- TRUE gsolver <- "NLOPT_LN_AUGLAG" lsolver <- paste0("NLOPT_LN_", localsolver) } else if (localsolver %in% c("LBFGS", "MMA", "SLSQP")) { # with derivatives dfree <- FALSE gsolver <- "NLOPT_LD_AUGLAG" lsolver <- paste0("NLOPT_LD_", localsolver) } else { stop("Only local solvers allowed: BOBYQA, COBYLA, LBFGS, MMA, SLSQP.") } # Function and gradient, if needed .fn <- match.fun(fn) fn <- function(x) .fn(x, ...) if (!dfree && is.null(gr)) {gr <- function(x) nl.grad(x, fn)} # Global and local options opts <- nl.opts(control) opts$algorithm <- gsolver local_opts <- list(algorithm = lsolver, xtol_rel = localtol, eval_grad_f = if (!dfree) gr else NULL) opts$local_opts <- local_opts # Inequality constraints if (!is.null(hin)) { if (deprecatedBehavior) { warning("The old behavior for hin >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hin <- match.fun(hin) hin <- function(x) -.hin(x, ...) # change hin >= 0 to hin <= 0 ! } } if (!dfree) { if (is.null(hinjac)) { hinjac <- function(x) nl.jacobian(x, hin) } else if (deprecatedBehavior) { warning("The old behavior for hinjac >= 0 has been deprecated. Please ", "restate the inequality to be <=0. The ability to use the old ", "behavior will be removed in a future release.") .hinjac <- match.fun(hinjac) hinjac <- function(x) -.hinjac(x) } } # Equality constraints if (!is.null(heq)) { .heq <- match.fun(heq) heq <- function(x) .heq(x) } if (!dfree) { if (is.null(heqjac)) { heqjac <- function(x) nl.jacobian(x, heq) } else { .heqjac <- match.fun(heqjac) heqjac <- function(x) .heqjac(x) } } S0 <- nloptr(x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, global_solver = gsolver, local_solver = lsolver, convergence = S0$status, message = S0$message) } nloptr/R/is.nloptr.R0000644000176200001440000002211414763300100014036 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: is.nloptr.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Input: object # Output: bool telling whether the object is an nloptr or not # # CHANGELOG # 2011-06-16: separated local optimizer check and equality constraints check # 2014-05-05: Replaced cat by warning. # 2023-02-08: Tweaks for efficiency and readability (Avraham Adler) # #' R interface to NLopt #' #' is.nloptr preforms checks to see if a fully specified problem is supplied to #' nloptr. Mostly for internal use. #' #' @param x object to be tested. #' #' @return Logical. Return TRUE if all tests were passed, otherwise return #' FALSE or exit with Error. #' #' @export is.nloptr #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface is.nloptr <- function(x) { # Check whether the object exists and is a list if (is.null(x)) return(FALSE) # Proper use of return to break out early :) if (!is.list(x)) return(FALSE) # Helper values now that we are certain x is a list lx0 <- length(x$x0) # Check whether the needed wrapper functions are supplied if (!is.function(x$eval_f)) stop("eval_f is not a function") if (!is.null(x$eval_g_ineq) && !is.function(x$eval_g_ineq)) stop("eval_g_ineq is not a function") if (!is.null(x$eval_g_eq) && !is.function(x$eval_g_eq)) stop("eval_g_eq is not a function") # Check whether bounds are defined for all controls if (anyNA(x$x0)) stop("x0 contains NA") if (lx0 != length(x$lower_bounds)) stop("length(lb) != length(x0)") if (lx0 != length(x$upper_bounds)) stop("length(ub) != length(x0)") # Check whether the initial value is within the bounds if (any(x$x0 < x$lower_bounds)) {stop("at least one element in x0 < lb")} if (any(x$x0 > x$upper_bounds)) {stop("at least one element in x0 > ub")} # define list with all algorithms list_algorithms <- c( "NLOPT_GN_DIRECT", "NLOPT_GN_DIRECT_L", "NLOPT_GN_DIRECT_L_RAND", "NLOPT_GN_DIRECT_NOSCAL", "NLOPT_GN_DIRECT_L_NOSCAL", "NLOPT_GN_DIRECT_L_RAND_NOSCAL", "NLOPT_GN_ORIG_DIRECT", "NLOPT_GN_ORIG_DIRECT_L", "NLOPT_GD_STOGO", "NLOPT_GD_STOGO_RAND", "NLOPT_LD_SLSQP", if (have.nlopt.ld.lbfgs.nocedal) "NLOPT_LD_LBFGS_NOCEDAL", "NLOPT_LD_LBFGS", "NLOPT_LN_PRAXIS", "NLOPT_LD_VAR1", "NLOPT_LD_VAR2", "NLOPT_LD_TNEWTON", "NLOPT_LD_TNEWTON_RESTART", "NLOPT_LD_TNEWTON_PRECOND", "NLOPT_LD_TNEWTON_PRECOND_RESTART", "NLOPT_GN_CRS2_LM", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS", "NLOPT_LD_MMA", "NLOPT_LD_CCSAQ", "NLOPT_LN_COBYLA", "NLOPT_LN_NEWUOA", "NLOPT_LN_NEWUOA_BOUND", "NLOPT_LN_NELDERMEAD", "NLOPT_LN_SBPLX", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG_EQ", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_BOBYQA", "NLOPT_GN_ISRES", "NLOPT_GN_ESCH" ) # check if an existing algorithm was supplied if (!(x$options$algorithm %in% list_algorithms)) { stop("Incorrect algorithm supplied. Use one of the following:\n", paste(list_algorithms, collapse = "\n")) } # determine subset of algorithms that need a derivative list_algorithms_d <- list_algorithms[grep("NLOPT_[G,L]D", list_algorithms)] list_algorithms_n <- list_algorithms[grep("NLOPT_[G,L]N", list_algorithms)] # Check the whether we don't have NA's if we evaluate the objective function # in x0 f0 <- x$eval_f(x$x0) if (is.list(f0)) { if (is.na(f0$objective)) stop("objective in x0 returns NA") if (anyNA(f0$gradient)) stop("gradient of objective in x0 returns NA") if (length(f0$gradient) != lx0) { stop("wrong number of elements in gradient of objective") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the objective function, ", "but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(f0)) stop("objective in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the objective function is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } # Check the whether we don't have NA's if we evaluate the inequality # constraints in x0 if (!is.null(x$eval_g_ineq)) { g0_ineq <- x$eval_g_ineq(x$x0) if (is.list(g0_ineq)) { if (anyNA(g0_ineq$constraints)) { stop("inequality constraints in x0 returns NA") } if (anyNA(g0_ineq$jacobian)) { stop("jacobian of inequality constraints in x0 returns NA") } if (length(g0_ineq$jacobian) != length(g0_ineq$constraints) * lx0) { stop("wrong number of elements in jacobian of inequality ", "constraints (is ", length(g0_ineq$jacobian), ", but should be ", length(g0_ineq$constraints), " x ", lx0, " = ", length(g0_ineq$constraints) * lx0, ")") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the inequality ", "constraints, but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(g0_ineq)) stop("inequality constraints in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the inequality constraints is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } } # Check the whether we don"t have NA"s if we evaluate the equality # constraints in x0 if (!is.null(x$eval_g_eq)) { g0_eq <- x$eval_g_eq(x$x0) if (is.list(g0_eq)) { if (anyNA(g0_eq$constraints)) { stop("equality constraints in x0 returns NA") } if (anyNA(g0_eq$jacobian)) { stop("jacobian of equality constraints in x0 returns NA") } if (length(g0_eq$jacobian) != length(g0_eq$constraints) * lx0) { stop("wrong number of elements in jacobian of equality ", "constraints (is ", length(g0_eq$jacobian), ", but should be ", length(g0_eq$constraints), " x ", lx0, " = ", length(g0_eq$constraints) * lx0, ")") } # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_n) { warning("a gradient was supplied for the equality ", "constraints, but algorithm ", x$options$algorithm, " does not use gradients.") } } else { if (anyNA(g0_eq)) stop("equality constraints in x0 returns NA") # check whether algorithm needs a derivative if (x$options$algorithm %in% list_algorithms_d) { stop("A gradient for the equality constraints is needed by ", "algorithm ", x$options$algorithm, " but was not supplied.\n") } } } # check if we have a correct algorithm for the equality constraints if (x$num_constraints_eq > 0) { eq_algorithms <- c("NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_AUGLAG_EQ", "NLOPT_GN_ISRES", "NLOPT_LD_SLSQP", "NLOPT_LN_COBYLA") if (!(x$options$algorithm %in% eq_algorithms)) { stop("If you want to use equality constraints, ", "then you should use one of these algorithms ", toString(eq_algorithms)) } } # check if a local optimizer was supplied, which is needed by some algorithms if (x$options$algorithm %in% c("NLOPT_LD_AUGLAG", "NLOPT_LN_AUGLAG", "NLOPT_LD_AUGLAG_EQ", "NLOPT_LN_AUGLAG_EQ", "NLOPT_GN_MLSL", "NLOPT_GD_MLSL", "NLOPT_GN_MLSL_LDS", "NLOPT_GD_MLSL_LDS") && is.null(x$local_options)) { stop("The algorithm ", x$options$algorithm, " needs a local ", "optimizer; specify an algorithm and termination condition in ", "local_opts") } # Check if the vector with tolerances for the inequality constraints is of # the same size as the number of constraints. if (x$num_constraints_ineq != length(x$options$tol_constraints_ineq)) { stop("The vector tol_constraints_ineq in the options list has size ", length(x$options$tol_constraints_ineq), " which is unequal to the number of inequality constraints, ", x$num_constraints_ineq, ".") } # Check if the vector with tolerances for the equality constraints is of the # same size as the number of constraints. if (x$num_constraints_eq != length(x$options$tol_constraints_eq)) { stop("The vector tol_constraints_eq in the options list has size ", length(x$options$tol_constraints_eq), " which is unequal to the number of equality constraints, ", x$num_constraints_eq, ".") } TRUE } nloptr/R/gradients.R0000644000176200001440000000506714472612401014105 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: gradients.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Functions to calculate numerical Gradient and Jacobian. # # CHANGELOG # # 2023-02-09: Cleanup and tweaks for safety and efficiency. Also Changed # nl.grad error message to be more mathematically precise. The loop # construct is 4 times faster than full vectorization with apply and # around 25% faster than partial vectorization creating a heps using # diag and pulling vectors off row-by-row in nl.grad & nl.jacobian. # (Avraham Adler) # #' Numerical Gradients and Jacobians #' #' Provides numerical gradients and Jacobians. #' #' Both functions apply the ``central difference formula'' with step size as #' recommended in the literature. #' #' @aliases nl.grad nl.jacobian #' #' @param x0 point as a vector where the gradient is to be calculated. #' @param fn scalar function of one or several variables. #' @param heps step size to be used. #' @param \dots additional arguments passed to the function. #' #' @return \code{grad} returns the gradient as a vector; \code{jacobian} #' returns the Jacobian as a matrix of usual dimensions. #' #' @export #' #' @author Hans W. Borchers #' #' @examples #' #' fn1 <- function(x) sum(x ^ 2) #' nl.grad(seq(0, 1, by = 0.2), fn1) #' ## [1] 0.0 0.4 0.8 1.2 1.6 2.0 #' nl.grad(rep(1, 5), fn1) #' ## [1] 2 2 2 2 2 #' #' fn2 <- function(x) c(sin(x), cos(x)) #' x <- (0:1) * 2 * pi #' nl.jacobian(x, fn2) #' ## [,1] [,2] #' ## [1,] 1 0 #' ## [2,] 0 1 #' ## [3,] 0 0 #' ## [4,] 0 0 #' nl.grad <- function(x0, fn, heps = .Machine$double.eps ^ (1 / 3), ...) { if (!is.numeric(x0)) stop("Argument 'x0' must be a numeric value.") fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (length(fn(x0)) != 1) stop("Function 'f' must be a scalar function (return a single value).") n <- length(x0) hh <- gr <- rep(0, n) for (i in seq_len(n)) { hh[i] <- heps gr[i] <- (fn(x0 + hh) - fn(x0 - hh)) / (2 * heps) hh[i] <- 0 } gr } #' @export nl.jacobian <- function(x0, fn, heps = .Machine$double.eps ^ (1 / 3), ...) { n <- length(x0) if (!is.numeric(x0) || n == 0) stop("Argument 'x' must be a non-empty numeric vector.") fun <- match.fun(fn) fn <- function(x) fun(x, ...) jacob <- matrix(NA_real_, length(fn(x0)), n) hh <- rep(0, n) for (i in seq_len(n)) { hh[i] <- heps jacob[, i] <- (fn(x0 + hh) - fn(x0 - hh)) / (2 * heps) hh[i] <- 0 } jacob } nloptr/R/mlsl.R0000644000176200001440000001300314633255630013067 0ustar liggesusers# Copyright (C) 2014 Hans W. Borchers. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: mlsl.R # Author: Hans W. Borchers # Date: 27 January 2014 # # Wrapper to solve optimization problem using Multi-Level Single-Linkage. # # CHANGELOG: # # 2014-05-05: Replaced cat by warning. # 2023-02-09: Cleanup and tweaks for safety and efficiency. (Avraham Adler) # Question, should passing a non-Gradient solver fail directly? It will # anyway. (Avraham Adler) # 2024-06-04: Cleaned up the Hartmann 6 example. (Avraham Adler) # #' Multi-level Single-linkage #' #' The \dQuote{Multi-Level Single-Linkage} (\acronym{MLSL}) algorithm for global #' optimization searches by a sequence of local optimizations from random #' starting points. A modification of \acronym{MLSL} is included using a #' low-discrepancy sequence (\acronym{LDS}) instead of pseudorandom numbers. #' #' \acronym{MLSL} is a \sQuote{multistart} algorithm: it works by doing a #' sequence of local optimizations---using some other local optimization #' algorithm---from random or low-discrepancy starting points. MLSL is #' distinguished, however, by a `clustering' heuristic that helps it to avoid #' repeated searches of the same local optima and also has some theoretical #' guarantees of finding all local optima in a finite number of local #' minimizations. #' #' The local-search portion of \acronym{MLSL} can use any of the other #' algorithms in \acronym{NLopt}, and, in particular, can use either #' gradient-based or derivative-free algorithms. For this wrapper only #' gradient-based \acronym{LBFGS} is available as local method. #' #' @param x0 initial point for searching the optimum. #' @param fn objective function that is to be minimized. #' @param gr gradient of function \code{fn}; will be calculated numerically if #' not specified. #' @param lower,upper lower and upper bound constraints. #' @param local.method only \code{BFGS} for the moment. #' @param low.discrepancy logical; shall a low discrepancy variation be used. #' @param nl.info logical; shall the original \acronym{NLopt} info be shown. #' @param control list of options, see \code{nl.opts} for help. #' @param ... additional arguments passed to the function. #' #' @return List with components: #' \item{par}{the optimal solution found so far.} #' \item{value}{the function value corresponding to \code{par}.} #' \item{iter}{number of (outer) iterations, see \code{maxeval}.} #' \item{convergence}{integer code indicating successful completion (> 0) #' or a possible error number (< 0).} #' \item{message}{character string produced by \acronym{NLopt} and giving #' additional information.} #' #' @export mlsl #' #' @author Hans W. Borchers #' #' @note If you don't set a stopping tolerance for your local-optimization #' algorithm, \acronym{MLSL} defaults to \code{ftol_rel = 1e-15} and #' \code{xtol_rel = 1e-7} for the local searches. #' #' @seealso \code{\link{direct}} #' #' @references A. H. G. Rinnooy Kan and G. T. Timmer, \dQuote{Stochastic global #' optimization methods} Mathematical Programming, vol. 39, p. 27-78 (1987). #' #' Sergei Kucherenko and Yury Sytsko, \dQuote{Application of deterministic #' low-discrepancy sequences in global optimization}, Computational #' Optimization and Applications, vol. 30, p. 297-318 (2005). #' #' @examples #' #' ## Minimize the Hartmann 6-Dimensional function #' ## See https://www.sfu.ca/~ssurjano/hart6.html #' #' a <- c(1.0, 1.2, 3.0, 3.2) #' A <- matrix(c(10, 0.05, 3, 17, #' 3, 10, 3.5, 8, #' 17, 17, 1.7, 0.05, #' 3.5, 0.1, 10, 10, #' 1.7, 8, 17, 0.1, #' 8, 14, 8, 14), nrow = 4) #' #' B <- matrix(c(.1312, .2329, .2348, .4047, #' .1696, .4135, .1451, .8828, #' .5569, .8307, .3522, .8732, #' .0124, .3736, .2883, .5743, #' .8283, .1004, .3047, .1091, #' .5886, .9991, .6650, .0381), nrow = 4) #' #' hartmann6 <- function(x, a, A, B) { #' fun <- 0 #' for (i in 1:4) { #' fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) #' } #' #' fun #' } #' #' ## The function has a global minimum of -3.32237 at #' ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) #' #' S <- mlsl(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), #' nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000), #' a = a, A = A, B = B) #' mlsl <- function(x0, fn, gr = NULL, lower, upper, local.method = "LBFGS", low.discrepancy = TRUE, nl.info = FALSE, control = list(), ...) { local_opts <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-4) opts <- nl.opts(control) if (low.discrepancy) { opts["algorithm"] <- "NLOPT_GD_MLSL_LDS" } else { opts["algorithm"] <- "NLOPT_GD_MLSL" } opts[["local_opts"]] <- local_opts fun <- match.fun(fn) fn <- function(x) fun(x, ...) if (local.method == "LBFGS") { if (is.null(gr)) { gr <- function(x) nl.grad(x, fn) } else { .gr <- match.fun(gr) gr <- function(x) .gr(x, ...) } } else { warning("Only gradient-based LBFGS available as local method. ", "To use another method please use the nloptr interface.") gr <- NULL } S0 <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, lb = lower, ub = upper, opts = opts) if (nl.info) print(S0) list(par = S0$solution, value = S0$objective, iter = S0$iterations, convergence = S0$status, message = S0$message) } nloptr/R/check.derivatives.R0000644000176200001440000001522014472612401015516 0ustar liggesusers# Copyright (C) 2011 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: check.derivatives.R # Author: Jelmer Ypma # Date: 24 July 2011 # # Compare analytic derivatives wih finite difference approximations. # # Input: # .x : compare at this point # func : calculate finite difference approximation for the gradient of # this function # func_grad : function to calculate analytic gradients # check_derivatives_tol : show deviations larger than this value # (optional) # check_derivatives_print : print the values of the function (optional) # func_grad_name : name of function to show in output (optional) # ... : arguments that are passed to the user-defined function (func and # func_grad) # # Output: list with analytic gradients, finite difference approximations, # relative errors and a comparison of the relative errors to the # tolerance. # # CHANGELOG: # 2013-10-27: Added relative_error and flag_derivative_warning to output list. # 2014-05-05: Replaced cat by message, so messages can now be suppressed by # suppressMessages. # 2023-02-09: Cleanup and tweaks for safety and efficiency (AA) #' Check analytic gradients of a function using finite difference #' approximations #' #' This function compares the analytic gradients of a function with a finite #' difference approximation and prints the results of these checks. #' #' @param .x point at which the comparison is done. #' @param func function to be evaluated. #' @param func_grad function calculating the analytic gradients. #' @param check_derivatives_tol option determining when differences between the #' analytic gradient and its finite difference approximation are flagged as an #' error. #' @param check_derivatives_print option related to the amount of output. 'all' #' means that all comparisons are shown, 'errors' only shows comparisons that #' are flagged as an error, and 'none' shows the number of errors only. #' @param func_grad_name option to change the name of the gradient function #' that shows up in the output. #' @param ... further arguments passed to the functions func and func_grad. #' #' @return The return value contains a list with the analytic gradient, its #' finite difference approximation, the relative errors, and vector comparing #' the relative errors to the tolerance. #' #' @export #' #' @author Jelmer Ypma #' #' @seealso \code{\link[nloptr:nloptr]{nloptr}} #' #' @keywords optimize interface #' #' @examples #' #' library('nloptr') #' #' # example with correct gradient #' f <- function(x, a) sum((x - a) ^ 2) #' #' f_grad <- function(x, a) 2 * (x - a) #' #' check.derivatives(.x = 1:10, func = f, func_grad = f_grad, #' check_derivatives_print = 'none', a = runif(10)) #' #' # example with incorrect gradient #' f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8)) #' #' check.derivatives(.x = 1:10, func = f, func_grad = f_grad, #' check_derivatives_print = 'errors', a = runif(10)) #' #' # example with incorrect gradient of vector-valued function #' g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) #' #' g_grad <- function(x, a) { #' rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8)), #' 2 * (x - a) + c(0, 0.1, rep(0, 8))) #' } #' #' check.derivatives(.x = 1:10, func = g, func_grad = g_grad, #' check_derivatives_print = 'all', a = runif(10)) #' check.derivatives <- function(.x, func, func_grad, check_derivatives_tol = 1e-04, check_derivatives_print = "all", func_grad_name = "grad_f", ...) { analytic_grad <- func_grad(.x, ...) finite_diff_grad <- finite.diff(func, .x, ...) relative_error <- ifelse(finite_diff_grad == 0, analytic_grad, abs((analytic_grad - finite_diff_grad) / finite_diff_grad)) flag_derivative_warning <- relative_error > check_derivatives_tol if (!(check_derivatives_print %in% c("all", "errors", "none"))) { warning("Value '", check_derivatives_print, "' for check_derivatives_print is unknown; use 'all' ", "(default), 'errors', or 'none'.") check_derivatives_print <- "none" } # determine indices of vector / matrix for printing # format indices with width, such that they are aligned vertically if (is.matrix(analytic_grad)) { indices <- paste(format(rep(seq_len(nrow(analytic_grad)), times = ncol(analytic_grad)), width = 1 + sum(nrow(analytic_grad) > 10 ^ (1:10))), format(rep(seq_len(ncol(analytic_grad)), each = nrow(analytic_grad)), width = 1 + sum(ncol(analytic_grad) > 10 ^ (1:10))), sep = ", ") } else { indices <- format(seq_along(analytic_grad), width = 1 + sum(length(analytic_grad)) > 10 ^ (1:10)) } # Print results. message("Derivative checker results: ", sum(flag_derivative_warning), " error(s) detected.") if (check_derivatives_print == "all") { message("\n", paste0(ifelse(flag_derivative_warning, "*", " "), " ", func_grad_name, "[", indices, "] = ", format(analytic_grad, scientific = TRUE), " ~ ", format(finite_diff_grad, scientific = TRUE), " [", format(relative_error, scientific = TRUE), "]", collapse = "\n"), "\n\n") } else if (check_derivatives_print == "errors") { if (sum(flag_derivative_warning) > 0) { message("\n", paste0(ifelse(flag_derivative_warning[flag_derivative_warning], "*", " "), " ", func_grad_name, "[", indices[flag_derivative_warning], "] = ", format(analytic_grad[flag_derivative_warning], scientific = TRUE), " ~ ", format(finite_diff_grad[flag_derivative_warning], scientific = TRUE), " [", format(relative_error[flag_derivative_warning], scientific = TRUE), "]", collapse = "\n"), "\n\n") } } else if (check_derivatives_print == "none") {} list("analytic" = analytic_grad, "finite_difference" = finite_diff_grad, "relative_error" = relative_error, "flag_derivative_warning" = flag_derivative_warning) } nloptr/cleanup0000755000176200001440000000014314765523732013161 0ustar liggesusers#! /bin/sh rm -fr src/nlopt src/Makevars src/*.o src/*.so autom4te.cache config.log config.status nloptr/vignettes/0000755000176200001440000000000014765523731013615 5ustar liggesusersnloptr/vignettes/nloptr.Rmd0000644000176200001440000003406314613776363015610 0ustar liggesusers--- title: "nloptr" author: "Jelmer Ypma, Aymeric Stamm, and Avraham Adler" date: "`r Sys.Date()`" output: rmarkdown::html_vignette bibliography: reflist.bib nocite: | @NLopt:website vignette: > %\VignetteIndexEntry{nloptr} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setSweaveOptions,echo=FALSE} # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ``` This document is an introduction to `nloptr`: an R interface to NLopt. [NLopt](https://nlopt.readthedocs.io/en/latest/) is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of `knitr` [@Xie:2014; @Xie:2015; @Xie:2016]. Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged. ## Introduction NLopt addresses general nonlinear optimization problems of the form: $$ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} $$ where $f(\cdot)$ is the objective function and $x$ represents the $n$ optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), $x_L$ and $x_U$. For partially or totally unconstrained problems the bounds can take values $-\infty$ or $\infty$. One may also optionally have $m$ nonlinear inequality constraints---sometimes called a nonlinear programming problem---which may be specified in $g(\cdot)$, and equality constraints which may be specified in $h(\cdot)$. Note that not all of the algorithms in NLopt can handle constraints. This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation This package is on CRAN and can be installed from within R using ```{r installNLopt, eval=FALSE} install.packages("nloptr") ``` or ```{r installNLoptSource, eval=FALSE} install.packages("nloptr", type = "source") ``` to install the package from source. You should now be able to load the R interface to NLopt and read the help. ```{r testNLoptInstallation, eval=FALSE} library("nloptr") ?nloptr ``` The most recent experimental *source* version of `nloptr` can be installed from Github using the `remotes` package: ```{r installNLoptGithub, eval=FALSE} # install.packages("remotes") remotes::install_github("astamm/nloptr") ``` ## Minimizing the Rosenbrock Banana function As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: $$ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, $$ which is also used as an example in the documentation for the standard R optimizer `optim`. The gradient of the objective function is given by: $$ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). $$ Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library. ```{r loadLibrary} library(nloptr) ``` We start by specifying the objective function and its gradient: ```{r defineRosenbrockBanana} ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ``` We define initial values ```{r setRosenbrockBananaInitialValues} # initial values x0 <- c(-1.2, 1) ``` and then minimize the function using the `nloptr` command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use ```{r setRosenbrockBananaOptions} opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ``` Here we use the L-BFGS algorithm [@Nocedal:1980; @LiuNocedal:1989]. The characters `LD` in the algorithm show that this algorithm looks for local minima (`L`) using a derivative-based (`D`) algorithm. Other algorithms look for global (`G`) minima, or they don't need derivatives (`N`). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix `\ref{sec:descoptions}` for a full list of options). We then solve the minimization problem using ```{r solveRosenbrockBanana} # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ``` We can see the results by printing the resulting object. ```{r printRosenbrockBanana} print(res) ``` Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance: ```{r defineRosenbrockBananaList} ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ``` which we minimize using ```{r solveRosenbrockBananaList} res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ``` This gives the same results as before. ## Minimization with inequality constraints This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is: $$ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} $$ where $a_1 = 2$, $b_1 = 0$, $a_2 = -1$, and $b_2 = 1$. In order to solve this problem, we first have to re-formulate the constraints to be of the form $g(x) \leq 0$. Note that the first constraint is a bound on $x_2$, which we will add later. The other two constraints can be re-written as: $$ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} $$ First, define R functions to calculate the objective function and its gradient: ```{r defineTutorialObjective} # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ``` If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints: ```{r defineTutorialConstraints} # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ``` Note that all of the functions above depend on additional parameters, `a` and `b`. We have to supply specific values for these when we invoke the optimization command. The constraint function `eval_g0` returns a vector with in this case the same length as the vectors `a` and `b`. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well). After defining values for the parameters ```{r defineTutorialParameters} # define parameters a <- c(2, -1) b <- c(0, 1) ``` we can minimize the function subject to the constraints with the following command: ```{r solveTutorialWithGradient} # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ``` Here we supplied lower bounds for $x_2$ in `lb`. There are no upper bounds for both control variables, so we supply `Inf` values. If we don't supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using `eval_g_ineq` and `eval_jac_g_ineq`. Not all algorithms can handle inequality constraints, so we have to specify one that does, `NLOPT_LD_MMA` [@Svanberg:2002]. We also specify the option `print_level` to obtain output during the optimization process. For the available `print_level` values, see `?nloptr`. Setting the `check_derivatives` option to `TRUE`, compares the gradients supplied by the user with a finite difference approximation in the initial point (`x0`). When this check is run, the option `check_derivatives_print` can be used to print all values of the derivative checker (`all` (default)), only those values that result in an error (`errors`) or no output (`none`), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option `check_derivatives_tol` (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance. Finally, we add all the parameters that have to be passed on to the objective and constraint functions, `a` and `b`. We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case `NLOPT_LN_COBYLA`, which is an algorithm that doesn't need gradient information [@Powell:1994; @Powell:1998]. ```{r solveTutorialWithoutGradient} # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ``` ## Derivative checker The derivative checker can be called when supplying a minimization problem to `nloptr`, using the options `check_derivatives`, `check_derivatives_tol` and `check_derivatives_print`, but it can also be used separately. For example, define the function `g`, with vector outcome, and its gradient `g_grad`: ```{r derivativeCheckerDefineFunctions} g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ``` `a` is some vector containing data. The gradient contains some errors in this case. By calling the function `check.derivatives` we can check the user-supplied analytic gradients with a finite difference approximation at a point `.x`. ```{r derivativeCheckerPrint} res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ``` The errors are shown on screen, where the option `check_derivatives_print` determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list. ```{r derivativeCheckerResult} res ``` Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with `a = c(.5, .5)`, one of the errors is not flagged as an error. ## Notes The `.R` scripts in the `tests` directory contain more examples. For instance, `hs071.R` and `systemofeq.R` show how to solve problems with equality constraints. See the [NLopt website](https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#augmented-lagrangian-algorithm) for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in `nloptr`. Sometimes the optimization procedure terminates with a message `maxtime was reached` without evaluating the objective function. Submitting the same problem again usually solves this problem. ## Description of options ```{r printAllOptions} nloptr::nloptr.print.options() ``` ## References nloptr/vignettes/reflist.bib0000644000176200001440000000454514613534462015746 0ustar liggesusers@MISC{NLopt:website, author = {Steven G. Johnson}, title = {The {N}{L}opt nonlinear-optimization package}, url = {https://nlopt.readthedocs.io/en/latest/} } @inproceedings{Powell:1994, author = {M. J. D. Powell}, title = {A direct search optimization method that models the objective and constraint functions by linear interpolation}, booktitle = {Advances in Optimization and Numerical Analysis}, editor = {S. Gomez and J.-P. Hennart}, publisher = {Kluwer Academic, Dordrecht}, pages = {51--67}, year = {1994} } @article{Powell:1998, author = {M. J. D. Powell}, title = {Direct search algorithms for optimization calculations}, journal = {Acta Numerica}, volume = {7}, pages = {287--336}, year = {1998} } @article{Svanberg:2002, author = {Krister Svanberg}, title = {A class of globally convergent optimization methods based on conservative convex separable approximations}, journal = {SIAM J. Optim.}, volume = {12}, number = {2}, pages = {555--573}, year = {2002} } @article{LiuNocedal:1989, author = {D. C. Liu and J. Nocedal}, title = {On the limited memory {B}{F}{G}{S} method for large scale optimization}, journal = {Math. Programming}, volume = {45}, pages = {503--528}, year = {1989} } @article{Nocedal:1980, author = {J. Nocedal}, title = {Updating quasi-{N}ewton matrices with limited storage}, journal = {Math. Comput.}, volume = {35}, pages = {773--782}, year = {1980} } @Manual{Xie:2016, title = {knitr: A General-Purpose Package for Dynamic Report Generation in R}, author = {Yihui Xie}, year = {2016}, note = {R package version 1.14}, url = {https://yihui.org/knitr/}, } @Book{Xie:2015, title = {Dynamic Documents with {R} and knitr}, author = {Yihui Xie}, publisher = {Chapman and Hall/CRC}, address = {Boca Raton, Florida}, year = {2015}, edition = {2nd}, note = {ISBN 978-1498716963}, url = {https://yihui.org/knitr/}, } @InCollection{Xie:2014, booktitle = {Implementing Reproducible Computational Research}, editor = {Victoria Stodden and Friedrich Leisch and Roger D. Peng}, title = {knitr: A Comprehensive Tool for Reproducible Research in {R}}, author = {Yihui Xie}, publisher = {Chapman and Hall/CRC}, year = {2014}, note = {ISBN 978-1466561595}, url = {https://www.routledge.com/Implementing-Reproducible-Research/Stodden-Leisch-Peng/p/book/9781466561595}, } nloptr/src/0000755000176200001440000000000014765523731012374 5ustar liggesusersnloptr/src/nlopt-src.tar.gz0000644000176200001440000770117514765070675015472 0ustar liggesusers\k{Ȓ~2Ko~6{cl` xvHmXR&^oUyN!FUVUލP{,<|+kq:^kfu *s_Ot/KR']#׿Q4%C ?Y,0}\32B (e=g !&ZpAg!H"BuH3>D!}P̨1Yf"k3TMm d`30b-t@.r;{OL#̩-oDg0Џؾ5qF_әXP j"p\`<{jY]Ps ["<&ڝ>toBw815Ι@|YDždE@N<,ED`T(%Mxp'Yxw<JpX,p7p1v?}J:#굢"b,͈D^j8ȽuS% %=Fwsj=D 8"MXurar0Do5"<%LZ4q '^7ceR0ǥeYo'gp麦!чHLθ{K=' QɃB76d_w>!ImB?y!Z1WVWǵ@9d`v@ȶHk,+AL$GNY 4lM"74 c*6jJK yeS#95Bz,A(ꔅ$,K%_Ob@TP,6v#[)ô^τB4)ed %ӿM(lvרi֓LlZ hoUpF4  _0pw$bRgmURҎ筷qz`9^^/zh|M:5^Ђzm6DEݐPg<+d/R(4{D{ރ) f׫M'ﻧv|uvϴT"G.iiABR"dvÙmiUGm=#I| D-7ZE!v FD[!CJH MQ=j뤊N/TQ^ս`_󺞗ɇBrz z-\S0w) aȲ?/&>[l,Tw > rBv(4\>f\Mpk, |:j뀇 ˼S\ewսODhy/]-Rv- Eà oiTߺ_34zO*?bG-h@ϧXÐ+.s9#dsS37.@}ڑ;<ԙ{.I ]Ձ:#o"CW9%@F]Km<~&FnDnDx05ta8 CpJjuS8y5釼Tԧ brȜ&PYF@>u6bԈ+\H?-'>m9GXD]@)owGQO oJ\azt]܄ *MWH{`G!mF^TSū]גNbXa;e&p6%Z <. fbEChȷ?i«Un=+, M$53)]`40(\ֲ.u &H[k2Z!M-M\ȀS-kZVyygu9nX>q, `V~H!9^?Πəd5+0SVv*iX,Ō5C7PS>/ Vqp;Fa"IO3,}6Lx @ fC's%(̋Yigp btFu}*&Rh,y fc+^u"}H-raIZ%;gw,}2+ IfB&W;E`9 _.)7 Uj*Sk[Br~z Z1e(`kx2d AGЇ 0D]>]y> aQ)6cN,jhrV{ﻝNgEF@YAD`6xp(^N2Jhm2֐9[vY c)6MܛP@7L=&\hţ^3(Zܞÿ@f֦-r\CN8e.\S_jEyϢ =]\}N4bb pW*TR)#b!J].|[09s-Kc1rD#ewkeʎhώ| Z=+657aFA9=ar]oT$$fE+6VWUci.jZM8xǵ&akyk`v`w* RL =2+C{@ۚST">ZO@ˀ" AVDy=uSEFU&Ȝa @eٔ_I>&>jY> M輿>JZmr. $VnԵ2gU8.n1ysT7"Ht6ROh}=܁ 8Cv@}Q`غi Gw!!IY\=h7Cb8SwY30`[3KA$ԑ^; ;b f[~$~Z l@8X>թd`Tf9kzE/>e}=R▯GnKG #|%of G^*)4*l 괈׵I4 D! . =$슀͙6&\ 3 ՃwIjE@SnJqRlR5JGvhAqRAH6~<3zfen4U$XiI|Ȏ7t%tL ُQRXOp"ȳIqĺrjoʩψ}EɩARH%td8ITa*I.60XVⱝf1~ nfdjj 5#pE6s1=fD$|܆hDCbazppx]VdJL,Ũk 3.}=4JPz2E$Mcc H*Z*r IxC=VJ:ٷȀVH+${I;ͶS:LٺI8dGBD}:$uTHk;ݛyy 4To Sh T+n;= 7-M,Vb<=^=< -7ROVV4wwa4A=^<6z#;fB ?2fݻ<1hLxA[V:^/{6w 3U'Ȳ%gvI9kE9go%ֆQaK dgJ, n4jv-o9hf5Se\w0b>B 낇/wֱP&iֳպ ι݄7F MYub ` AmY XazU6o]DXUcb|'DA=\|uNsESk7ŧPl]VLunGZqTǓ-L V"M$4P~N@pu'W*{~v{06)8B:M[*_Au+XomްvN>6;M<ԑ wH)(Fn@ }9qָ`5Vy;=h兌1,*j7sa;z^#jt&=IM?Y0U"bҹvDY8쪞 X l$4'\²Ɇs`2c%|dLt^O[? _WjWP)[l%d^+ `娐C%5ÉfL,1n ij=}6ԗ@6.vDupo.0"; H ٤:b4 +vj6֍[+Q8Nory dfL9+ xeg}1W*𐘮p4vz?]oCP֕ mE|U+O (4 r>t9# ,(7JtJGWw`a 5at<^*Q)~~ى⸔s̭xna۠B p颟Ei1zRO[Ӻ@}O0=W䨾;aS DALPi5Ǫˮf8c$`9.nrPX%?C?C}="'PCJ4,\%ۦ,1۽MFv7Xۣł@m 2hH/ܞ-!2BA&&1 qo+Ҏ#}SI%1*J蔧)wt)ɝBHCFg%.5oHA# 41f(~i-%կ֕ҚPPGJHI TSxzq7+}G-EQӇqRkbFɫqD@ Aweg/IR^w_d; 6wVZa[  ta;խ;n7I8= .t[xkX|>caDg\k .p)GVlR7YPc!HjKaٵ(gxgЯlL>äld=!SlNQ.2ýXkdԱb{2Yl+O&f.My <]esO@?&@:#j5 uT_?n+YJNN9ג"5NBO]SHEý+w Tnȕ$>S @t{kQvz77ю:BM-n;P5[JTTg=1c2vd>Qkut-, /h|g=ݫM=!w<s%k參1M6E3t6[-Uٵ0l >1AˌUzAZ|ni{I^[w#0kىŒNc`Gv6)j^5u {n= _{vG}Kj[v0pM:>s" 绸`:_;\Dɔ42{,nJ(NEpA: oۢn`r [~!Ӊ<"q~:Eãsh 6ĈнT!~vWwyp} 1q?B)w[@| qN7܂cA"6.F$] .BN+g  Aq3rTCԊ-R+F>dYf"[yHF y+Z) hːw5iA7nhȴVq`ؙyKG}t6H>PW~HHZ>tG;cqЍ u@,ju믿Jw eURaCxP V2ƙd)G!83|^9M/+Fu˶^Vy58d1T+ I5Kd3uD&gU.W]T oaBg7RM_*Tf~0$P (VSp5nƒr^-]W)omRR)|u(Rt%%eZ9XPs^$^MW+Ga+Oǔ0${PfKT.aׅfe;i&w~_.LT;o>DO:Goyxn_ k;#%Nx%TӒ[mPGɛbyqv8"coU, wן<:/gaȖG?@eɍ*j4Lv0H*N 7vE 0lǩ#l;,`4 rr)  ( w$2N>bMSCaĆƠ!s( sRu( =q"U/ 4)@0l Zn`d@ S~=a*i G 3L6_6BEt8Bu^Bg(J.R B mk4TԮned Ă* cY] `=~Ct L\㢌6e|j: j5 Ɛ-" <єyAp*E]Za g Pǔk7d_!EtY2wO+{87ہ`8KRŽ97ء+ETÖ@M9ߥ˨F NP0<̘ hrcrF`LQpԚ+)=ZXT<<u䴸=²Ѭj4¬, vaE뙲ؿ+ 4٥<.G]͠Bw )0ĉ{\T}QŽꑯEo/~*ar Fe ލ\Q8tCn|IPv%r(B˕]_TK SD{ȟdtlP!Stg(ʰ%쾋 eUZN[o6jK3i]Q/˦- ~xy䍅XRrH7,Gx;+{ ݭnp[! R0*0d\ز"+.vª(AFy7 R?y)k&q49XہIފT /WØaQ!oNHMV%>9-t>1^y2ՃXA+ka#=.Vnͦs(u}= r^،*}V_r91,GR1U촟~{12^ݦ Tk;|%!Ȱ. sIKmVR<5 y)lc.jB%K.@5MDu3,Rn{wrn0iսgO3|,".+c`/%j\NI\} tV3NmNV1Fat?n8LivJS>_f^D"a,YBU4Q8˛4Nv*{#t;-JwEAG.`:jD Q \.随 Y:V+"nVU1ƳTRϳ 9Jr_˩s_p,_g>TKM9|VjLC8~gL@U{dQ9L2$ R|DScѸctC |$(Jnb׸96. 6J4A궇NNGkyg:6dktBSh%Ђxww(اvc;xjoةV}lDR-n9V~yT>=&>JU~4wWp9We2bC|r@y[bxo=uZS)1Hx.,A4dm\Ӵ! ckn#Dzm /@MRQEQ$4#pCD2TƦ[w;/macsllCCKf}k}swPDfv2Dk7\d:^\켟i:ᫌ-+tDj~Z 3廟E"ŬɐDH0$EZi^r<ǖa`e= ga:آ9S8I'C&TZ sUsK񘴞$NoYF5,^ukEʼ\Sm1vz@PE@m X/z-RRieBG ?+P] &-6<@*"Sní}rڊ,>Oi qtI:rnB8:~s))rS&qv$ K)jhv"9Gh)R/|d%v]$ʉ0\vSƧO_GB%'Moi64b#i^;e6"ۊ~ye̗ 設 'S4qr*uT$0~үl;^(҂%Fd:X2Ğ^r'ԅ}x\ .# >\CD,뒡GכtF_lϟ dY˝wO#i~5% otiD8h0ߠ91f=r~FyU)Ȯfen"+Wj/ Ts7aB{ȅKLܴ뢻J%frS0_/]ΎN?SZD2|~dif_ԗoȆ$񒧧+"!@kYнfg'\C7#Q"DH) jB^]HcL'g:28ZupۗgN>#OukH*=O|Aer/1roe݄YA"uZ5~y/WgZVs-c= O "IKDpdi3lW7)݉ϿgcLWD$dUW hF_BsE6|CFGw\}jT-=MZ YpAٱGY tR A22Ǘ`12w:%飃N~^8 P$#@ N d|8՞$@∥b tX.G6D3R+{`1 H] Ҝv#q /0Nw4l8>iAxM:at'q7<٣Mc]nRυiJJl5ߋIk%v6h/X䑰o9,$Ce%LkKׁ3spJli,~c<7m[r=Q@o[goVL,f dHKH'>a ZZ*L-!s.FE<& Zl/iP%=ʫ;JmZײ/8W.-ƉD.MūݦHM|w(=܇޵xNLA`QSHIz Al鬰EܰNY}<'d35SVq)lݳhqf4b\ĭn'T ]қYBҜD|n Pϕѳcƃl9g㉱DWrqPbX)mC31oiΒI|N44N7DiCX\#ĘY){XJJ qbhM~iO{,%q$r\̴UPf0WxcE5.fUTRpeKj_:>)b]ċe033(lΦ%WC'[H+)ݿi:jˢy T4+~8Z06j˜ 4Gp-u,p`L,b~a$d#R$-\ ;uKďz'M2w[QKm6h]5ZoY >4vT 8<,AZ_}:$  ;E\1zw%L)R a4+_l<;<'^Tt n$޸28@5ob`ՠ`W`Me;'s.LnQ\|J1#1k(*e#.5~or*Ӌā%LJd*ce"AKKD뛚E6QaN):R.4kF9<>z /~b4Tk\"&uuxg) H}iz]~,&Vyhö86-Γy?kQ# X$Q Dp'9M #KPxd xql*:ω{{?]\}@Er6|.hR0cvnC8Xh;G Wv!|(SUv,Q#v҃N3lT$|qlm?CWsF h)A2C'd"1he#(6xKwSbIF-,1Mk2fW?+[v0q/0l GA80-i3VoR[\l$q1DV"ͧeG_;bdg,i9gz듋% +T%Bo KX4DPZZ-pDžMƱ /a B a2|i`K +Y}k>'=@º◲8۴<@ʖ0{SA8p.ZBE6 "}ˁ8|Dr~\ĥ9,[xY2THVBr±2qwbdMR.d)r)C*A6dרweIJ5 N5HSJI?e@'_qafISUtCU 3LRl)Pl>DW R<'jJ`j s#KY16~HYrZ]O^55QiW}: Kfmp0m_<rfkHj[F12`L;@8Myh8⸗W8ʫ}<w<3M61tJ$/vYi"fnbBBQ U2!,rYe&dc6V74fvy,X(};eZ"%@MmMd;A2|X2{b NDbޔ=5`b B*Z=uَji_8B< ag+j:7ؾ0sP#oT|&ɦAZ,yT|[BsKꀩHG`䂔0 NQL_yab$p!+3nOy| IˤV}3!SG=wFKLj/*d HLHrYa$F ܤ._r)]9ȡALa 7<+F8_#LGkRD&+7 4#L-aUshvx43XFc7U4Fkh0.Da&ϵ|sQzb'L&3#NEHd^Zh!|N( *ep:Dť] vGs>' :,qz7j} C/f/0WYZev(j>[GףOpII.yecsSn╻.q-^`Irn3Ku>$Yhz۽pIn$ 6/m`!w/Iݭ^$zyv [K~v~mI~ov/=KHTKd%iVG_,[`Iuo82o=6w7зzIzݒ3E6/=B 6u_Z!Ǘ$K6/q{{O-]^r8@MzwIn_ikZrz|IP,n$yiԅۼq۸KpB{#>rxnGݎc[SL{ۼ{zxx v2??Z%{eߵ_?{s೬fYv6=]L3XJݸ*OD]^䷑f+xE[/Qp8gsŧB뿯 ZRr4߅(>S'[_@%*Bch0T8"hm=vY6>ӫ^Ҏ Kc{ERB4UqYR8Ll^}@Whe&yf03z#dxhRx&'Sz OzDPsE᝛"(\z䌕S-wlg:%獻kf(B˱< dԄDX,?DрX$-Ћ5; c(n JT:g6]q$&2/,5]Q+ xvU)=y2k*i YA }iz4r&]3Gͨݦ%Z~qgvSClҟMz L}MvEKڢ<>m/G$qFSfto}?{oj?ݿGRWtgCj_>+z]_|?*yd\BNYN!EF2ٓK-}$6m0%MkM9W5#b,M{%.3T#40"hk%v^h*94yc*~CHpp'1< ~H%zQ`LyKnHl :Gio/w^.ks|85ԇj(bjW gu[=h7_lמomlP9g`+ ?5ci ocڍ6Qx,>%YQYy ': ws ;: 6_l-8íp!'֧Svn*º_XڻM'?q@L7? 9@U>W`ߵKc叹Kc0.[3#R(~<m9e>?Q_w!Z0R؝"g Iڬ`wPy0|}tpMPl;sj_mnm3qX!Ap`4gn7@{a/]imnNA6=;y|*Z>b[?!7ϭ$ %:v%B~>25WR7]F4I?fOLx Xa0}a"o( MQ3*EzQ<}s'q-URn @WhcZ_{QZʌ WT>nL s8= $֟|F1M>Jg:d0W$ j#eQDG[G`+yt?(yS.J&3 =Htmyid9"h갚Qo:̼^Ym[㑨hu7`.m:xw.#7@yR}y[<=6ʏW~q+Ns &%Qr@DQh2hLVx,VJ;x=qz@6vf'^ӆ(41yϲU+ VUɑNm"3Đp"NYu8O?IFkHOY+@toNy7JgMAUSVQgciy#yw/NwM~>|&S:{Uzyԟf4\5o9`$˛4 r aVp ?9.k].g<}}Z̝KE۽^fE&wQ{A-b!w`sE׷-MW]*~aE HCmFv C4#Ǜ!i0}ijSkV2=S9GH}}0tFUgG95B+v?}}k2W`_u/imh3-lb )PI'2o `3l4I{%}Մ63#h&2H f` wQkbc ,֥+ njY*IiSkȾPKz=en},Te [(qp1[8j#~{qwMhCl!IX#dӾn,G|\m-3[we:5n)wX~Z'hͺ"OR6X(H2wWPFoA0/ HQh \4~`)q+Y,glbu~&{dKL[r}! ^|[w@XX(_]55:]3z0r5/eXpF&a<O(?yV>v)5LVHSzw389K^`-/1C狼] chh߅JgLOe$~2A8θrT,v^#Rݪ %vgQ.Bqt?Pl^2gQHykYj'֖UY6 K ObD|srO8+W8[w3[{#zx,BzMB{'ol/?@W;;qIᛑ8xр|qOOOrT 㿼ՎcyxPՆmmޞvD>;/R|pQU{XwHx `чM5/?OJDO뭠5y_Ita7oy% GOFǯ y=Ir5F'Q* *[vjٴsg9pH/LzI6Ex2v4 ~lAr-cOH|W/,7E- N}UY {gq:no߿"pz75}ns}mW_OïNaj2j|RMd佽ԝm:aizٯO>~U8yDm:\Bk+|RlW"ܚi#pmo.don/6`B'vq93E&'{VV#>koPߙ3ΕVagsot؆o藺}wW‹c[4SM*εϟn vp-Sc {׽0`l1n ^G27#K֔HO'ƺ)=9@W$DUHaa'$m|z?nW✩|yj>F7i/4x/_ d Av/seZz~v)9?,Pu⮓*޹FxW/'Qg-7 _j~>[+ݸk/ðz*_"iE#T:jQaÔQ;Y69ɧuLaŊlަ<r nLZACZ.j<̇< I`eh&UFq `%AE--:~tЌf٩^{H\QjR|Ch :OzPJg:J *0iVP0,CD RƨyHtu@#Zb3ʳ%,͈I.{/ 7L$aZJL!z *? q߅O\D8O.|~Tگ_j![.%|i`r@frTqH+dZ sb:O&Ӥ"^դ1 ]*(4Q4_({)\JKF75 &AY#>S\21Y=W2tfݣ053kcLlpݙW](m6; Z7z.Qܰd+I`Avlm MtrZdw>t*(ܗh)YCi×M*wYwE*4-ŮagI}v"WzET B }\IտZG%__G`3' Xym .$AD6WΝ-bFmctJ݄&\w&7i:& ѽB]P4-WPgm<#5aX;'dyUؿP+>uT_1#cr *28â*AѱnRF/ [5EtC0-E{pT: PwIqXj]<Ɇ)kwCa6x89'4(Ld_ NyT/i4 ^_UDh Kw,}`t/AV(K1ZM3]l>C=f]f"{Nt sȧ+o4jzV,ǼU`D}gN.T*tv;M+CSP|&w^4-}6i1qN~J ƘOJ2^~br6ŌHw|fNM"_{S3OX\ۅXUͱ^.}>0#L7{+"\ݍi4sebJ8]Lh!y b7(L~­{.A Qv *h|,XǦ#F^u3\lr-Hp\x :&'0yVA.fLPB-Gk/-|u5YޟfY'6 Ќp3a'( ɏ>^~ӿ K16vfd"w$-{kO A'mӺ|cM|@癲5`ݤ%jdŵβ!, Sh5*8 zt3λwWaoC PC{|>w߼e`=1lќhkM5FyVC(M>#PHŕK-s7kXÅxGq71,hSnnx)؀%HqF jΝEӹ`N7ΰj1];&9IXƠAKlY{Ty}oyh'":Vfv"yʈGs-_xf|R.gβsb״ Wo>bEh*Xڋ }1/+l*(zXLJ"2#ޓcqdQr(bONv \l^摁r?*__PhY0O1_<gGܱm^SHg' fl:DvBM f9l<՛텞LQd:l!r=t!JK7'Iԗ^5\0U7 BE;0<Ψ)uY8ggJ{0#)e[Wݤ)sx/e;/N]8-*[3/ޛUۛʉ#×k@J!б1vlOqWC#mkhmeA;hZ6E`8$+L q3DH G`!9K eC>t&mM">H+0ʯݥ%Pvަ>qA:Vvtb_8hټftӊ SҮO9p9j]}M1$66I;Z }T{â,os7µln'Zu4vtM?jGC)Kq^9Q uY)'g&FD6h*뫫k 3HJ"؍8@V2jT >Zq{ԣ94.sX *wxgird8!!RC)-"/fF֍pBUΧz0VZ" Y"s&޼^.vtrcj*4!{E R4}6N3:K&/M/rc $x`DY]Sf1ׅ;- /Ngpd)&`w (9#YC $"9Brsςl!kh.1f5$ܟ? VMr3VMY bbg E5Y<хI2~X61;aQGhOggyYO8ῳ<mہC"Ĕ^qIֻq/W7{bc]_ۦ>c Fa/':c-Ns\ѽ¤k:n?r½cY}HxL4B/Xo1: \$Z (T!I(e<kV9QH x,:r9$DVWUf3"F:2ʬGJCo>.:(jO\u4G b$0M{R605BxqYش׬pBe3\bRxEOchl";F+`2=˶H[GCbC;Ceq*i5fڀNn,\kra[Lus_xu9XSi}I1阼{,moS*\IѢQ@ԉQ$DQJ lm8,vW],ev9O{tTkӕ;ZC}}S:r15׹4I>|b/oƸZOظIr91Gĩ_#kNP]ug 糌fM=Y"cnb\Ehi8lU\McԳq.VqaK/^Go%vhY.d[aqu z2Z:]G~=PTݐZ`DM/6e%UCǕCkkދavUEv*gScy I*Mbm_xWGBPbz6bIY =5$P no,(5T8:̺xPVzJƸwi &y& Z ;1գ:'Oɼ鞉nQܿ2UR 8~7A9EM+Y9ɷEq( DE̍UO62Wg+W [vy=#h{vzAV[[?XH.QxvԨ"NFklj|a/{,_0*첣{ 'Rx@E ,^o3 34y:'yMO\=(@696]0$=qt9] jP۱>E/IMNAxA+Lw5n*8BĶ~>ئkE,z39cAPyt,^MEP? N,#F]HE"BcnRߊ&Qݟ7+Z(_{)Y$0l4$iC&Wyƅʭ<ޢhn..eMF)r=QټJt{"jip):r,HČ ju/ի yZ.sYb U E ^v "%]s$(ǹUؤ;r'@{W MdXC3l71<*կE\ﴆrz_7_t^Dng'G/5*|(Gm˞Lt%xkMKtJ*@ݼ?":9kID^*C{Þ<׌OiY}~#D)qVhėM;Z+;~)F6;;\HkLӱ9N(J$ fqL fO?Sx3\Z W.Uulljhn(!\7Xgk?\]v/ǧfaK"e'vi[?ڀ@e*6_ŴJ:kU 8vWĉГprj:%F=U]rdo+k"&eWV\ tv36fI uiswxFl7rе+sOKܝy:AUyH.m,y9XHq"fbi΋Oʵ˗*׏'J"8`3[rAV]Wt8@F]Ʈ+~g3gRO/YQa4Zg3 A\IY0=E2Nk[MݲIs@9ʚq`:jsDdz'%Fm-JZ}ȯ 8REeE[VW1~X~|\[cGIkn@P NxvjܬGDefzC/U͂ vEFEZe4>YbQoN9L(:i>(&\+e$YLz=cfVU:f0~U6_&$u=#h(?6OKcosʈf[XBEğA.\}=H'AEiNi?WWWЏ%mr^u1#a 9JKўe>q3 k}vcNQ9h)åM+^{pсuW;g$4 Ү߿kG6hRvJNEZ|N$TӬngDd1oC .Mj;G? n3h\skrƀu^C Wcl4^KzLm""[yTs#Ni=C4l@/ˡ",QH+Bqd1GÑllf}|gxV_ǫ`QގHs`; ͽXC.8,zm;ӽ6z]Fk|)&FEM_ hl4V=chø`[]@wWv2Kt 碵2vv3X,]_5'ƈARCɤI3k=(edcR-!biDMo#1{6P!#CX#q{*`ZRm,X; e GFlp4"EXKk1A^{dB5mU{E.}@^;Ʋ}9i>p4d;dYl^~|V[f9MG8:Lo1yY`fb9!##YwV M6 ]9as)䏭$6Dl=0xN2,ec"g |*4ZL",9X+XRrI!†sZGIkQ@>e)n`rV4a'"SG_v1㼘:Žd#ە${s KHL)ɓ=Ar4iw+lrym<;"'wnx$>%-l6 -j8-}n$*} v.>Lu[흝өĹԧho2IK@Ctk6k|~RٝiFH:"PEԄj §ˣ2)0D?R`p#a!r؝t=SeEYvO٠"P8*bZS.Euyޥř P3~!0jc+kW 27aŭbr" IՌU$ b#=4P%%LЄ>Xl*f]_֏.ceusuTUEj>\=WVR[4(7WH?d`$`g1jY EM"$щ,6t(6[xDx 1ä }Z96oc]h^2 Lћշ5:[f1HI7hu+ v2a|8ԁDrĭ#95܌T[J; H_ZbseG[BGDT|mc+)M]iSdUr|y0̱RxuE*j=dHϟ=Xɉ^ԍ-H$zW9H/N;ߌK'SԖ1#hج-}D{=d)mGaq{U|J~sADIcyLj\֎50p5w?mҫy-JBI pmw+4o'Sc㠌H1O[mO P-J ` ]t(BxEqƴ쁓fv/^{fd2W^n/&|'# 3v.:'#/=8ţ4&t(6N⤿}s/\ꢌhQItI̠:[a9)-Q@]9OLb\tȿ5N$"iaZ.亘౗_i]nabLY+U+F?)_7ehڂg5 =%5#bAX sg2ͼ]ax]%]<54zSzpcW :VDقugOOPj~յջ$ ę]%K$2eas6-m 6ɣs7:,niɥztH쬂=~;˙u+Mdaq G^i8u}ə~2裱Ѽү-V7ИGUqsop/b=3,PRՒم/@LG/ei \O|<&Zg/}V+k#B \-}Wpnl5Fvk&D8V\T|?pn9 L^*5,@0}  L|NHH脁{sF \.F8.*& UZZD 6 TnJ3ؤ4{ylL-ek 6M?4s 'sߔ[VS'n#uN=j4̔l@V&V>q%TF1?u/8`F\ޔE*v:j0:`E&~,,0(+r&M$ɲڂF<0d<m4[C}/:~̆idy^S~ƿBL}(SY({߯R! D}gd"| i3XY[y ^ ,nqt5Ca-{Kb3'/>?Ak>XF}.j܎܁B,R VЬ--@( 3blIFI-KeC1E[,066 / F,BuPv H*yɕ϶7u%;$qeMۧ|lR!on1>lmmSr^d" 2OFطdܟO%1S4KMҙoO$2Lz[.s8tNIpfO+/ۤNAqI|>>|q>JXħUL.UP7֓h4Kj%әұ!^!Ɩqy RlMX5\h*ah R$y*;A=)L|牖om_4`JEڕ>5In\ 9:f&z 8њP^(Jٯ Q-n֗$x _6c C݇8/m_41Lg6Ab7haQOd ,XJrr)9 | 2/3\M9ᡢ?I+Su\T)E֦m^W0~2RWUH-{<2HhM;MZ>v4*кlbݞ(aI:֋5flfD9@0lWE+)uSvƼ~h&\gaLAV c=c/ǘ}T004d<.k˾`Ut Ϣx IT@2 }9"圑erTVO_~aJ(hʐHδHF@wwog.EI=\$ipwcԕ2+ 'JóUH0܇o{U!XH/%E,ij ӉNA!łI^.4Kj(=UB%RWPhP |Ԗy=ED0I+.7 ^~*V="~ sq8*lKzy}34%KY:bVQrٹ􏤠65n"yT|4x +ʹy&$ ϴÄ!I>{o`. C*8 No"A}e^+9!Z"Fkn'y5WWG3du"!ް,]2} l1`yl1BIC 8+5e1=MiƕV l7N$tyޖCڬsӕ\L(RF'vW: o U:$uSpKv)T32fZ(4X=<9T&?VgUgVq[X^/[z4YE F- >d!^j:?F8z1>~Ѐl/q%3-Xm|vVWEg1p:sM\W# ͘ص=Ʋ_&3 +r7 Zb&uY٭@*Wב E~ )1Fhi&Dg TlN2k͢\4>>G"t~H'HhDYdm{}pv;lE uuK{ZH2z1Ԥi*-\@ ]Pa ))(Ϙũ$Κz YP LNB+G}>f f1UG7 4B; L.4XFB 1;Zu]xAxV9 xx8\[.j  ej25>4g;PjMp#BR9^p6'z5`$I#BՄV;3tv,8zqSkH6 -͆ hFs&zʚ556ݢH}'*10u~)ʜ%Go&BKȦ@P\'v|b2ս\B3.?$S܇,|z arw{i´mЖ'EoAj5M:rj hndtGyop 7QHJC>IQTU0MҙZ$1'˜Ȋl6 H T8i|g(wt|̚Tq,&RCcn%M}ϧy"vf,[LTG\$<#E\f{~6F\< "wr6N} s0`), ȴ.W.Zmb#/p2P8at>*9祌s5߁$N^"x:MV=F14ercsL٪QGES+^(,FFک *1tǧrKL,@L:NE"DpЯ ^P{^[;8BK?XN 4o._>*M|K4C;FBWՃ"W*Hl\(}Lϲp6ȫdyr4}$Ug2K!Xlګl?pc0( hnrg;ʄs%N'p-AA8f%݊bd֦߈ lYa"}<`DacI^+U5NjchD s7ゥŢ\`Lh9H/u {B\d}QQKye~7Zg$ѸK'D"/b'5 H߳_?>l?lF"NgtQ ;]I[PJχ R3'k2 7e vN+CzP]$3ODzB&֞7ξ 8ԥ1ĢQDBrtl G+.稈eFwFV{hqx6eq^iuV=8mMXQ+$Ob߿j \M5KJ+AGb#;ŽzG% ݞD)t=dͬ`@nEJX*6Xdz902ib#p1'$9GAk3WC1Б=6Z>`"=1H%kMt.%8l;%"I&60ʾі;MOSdѥ肞Cnlpq%84;q]˒Żur&I]b6@RA).EP+Y 2<.&-ܛ$ i ۽ə?qygFdEJlR/@M^OW#OHBc{H;yk"(yhhYq"tXdۑDL!fAL08̎ɜ]̼?}UĂ\/ ÃV8XM,A eS*@ю4a1 ݎh!.0%3md!0hlp{ϼ%H]-WP!Yw*a1Sdiɕ"O HEZg8w%Bt~+ԯyeOTif\~1[tkL կݒ2T+&QJ{ ֛A~@.<0YՊ]",*O||bsxMaI Rʻ90Qkf;+:pkGtMn}J"xu.)=a$D4Wy-8Z9 дhm$t~BI'sy\N9\ˬc$FsW:Zyzp !S]Ք q1l<܍e! `tnr3\>Gt)4TB@4 jksbL:kXeVbhcXE:t['vYDPS/Ygen҉n2%Ne :%&7O)¾+,ƞY?6x$xsGWZ YZDY-%̤%G`G*-̘<ϊγ:V_2ˆfzl[UuQ*k0d-ws'Q`'bDj8mD* 4L/ ApK8b&a||ag /_-q[_}#F4PHUčЊ.*z4[i$!/exvrrˣ}d5oo|vr}xypq o*rӑ`møB͊Lo uJ/,a#Eu5Woy`ψgڸIzszVswѶ*/Fet.uK, V>_]{zz]9~1{X_oF>U97)11qDjm๼@NSkJZ$?˛hC84\bj8ͩ3P]S6SԢU͝9Nl`=?WD^&YHi݃5N jv=ȩ&@yڧB{Xt |T [Ȁ\NLA|;s&B92@ȡe @3S1|9c$h~C+SFuM+)TtT37.z?Hf8vT U<戲ܭy s8;6lV 4Qnn|OlcNj>]THB3.@Tsp@ n{Cl3j VQׂf&A/ bSR!a<{;;.q1N$9?tU%K C*f(,3Nt|b?NGI{sNN<PRwVSQ]so0t___{poV P,]u'W#4~;QbU3u\eжL .F*srĞrt'-[Βw E=|l2[R(F-&s0g, N5)$ A@NTcISrX ʄD"Ns +4āN\pGœ54@ ZgԄgL쨈9!TQ!g&&-rXr4dta'To5&NgSݽ?Y\tgGİMy~wO1Or\oLzAJ**}ǃdviתJ+U>7Xy$@, f47ULQ\vkh[|l| xX%NK"SUZKQuB+.miSrf^-*E8Be{otiv0+CHoG {6qțqѤ5Cl.0 : u`Zh[m0pY5v}K9 s-f,X;=^RmD 6֐_FG:z6L NO8s2Myc .Y cOi>q[- le$l}}a΀5͢AuK͏ "+4Ce*501!"r_Imt.W Q[ I[&`:ς;%7_ZB*8t17iw3) PӊX[K/8uƝf!J9Lt6wR:APURcdžyTW1CkoZ)iG)0kXԖR{; ?^5`J .m)WhK0|Ǻ]]0rP6l"uTҔ48s6}!T\ tsp\,:ٱȋ(~gNErgT`xn8*Zt B{wtJjr*<~ţr g:A9b~½ S!b 47\@_KQGϵWf6> h4F L.v}T<7vY<&xxgV{%>򔍗Ֆq&Ă4 W4>qv#橃x?+Fd]0'*s z)1;)Mu`(awiyu>52qx$O;}&2aҥX! h}!8KB( sۺIof[ bt-h%U+ߣX1s#`%\ G)K^¿w(H4ΚRpDb]4S)c@A  \-&Zu.:~|mޣnJiίɊ=b_.T3V&1Xh,|P:إ"o៪?[ʵ`ZxZ6eyf>*d|jË,Y);N` Y )7{w1qqi5qg5fcFwxx12jKn빘t/"~#K4ׄç)>tDb eDH]ε#DSQռ <,gҙ`f)} 2zWX1TJsKa5lͯS@F#htEFz``bo]psMT-7<&lE(hFupmCIWe$RfmGXP{0 p.'^2l֏cY ~b4cje7Hߜr0DN;Wy!ffnr>&tN- {`dM`(_]OCWqV,Uڽ*!:BHA2Y Ҁ}XMmx0ՠtܛOB5006)݀93JdaR.ыN΁B tɌ.+v{!h׉h*h 1~*2*&TZak R<-^ +{)z9vѓo**sā]'  3o̼[܉aW:@Q"dLX ]5'\L"ZT(<Xj(!a12]đbR'1_uM4MwlgW69drYFYWy#[{!0&UuJ>b+R_^~4kmz/e xdIBeSϬY*]]̺=lRpS+ wN÷1T\+k)I ӥuFe…Xw+tr'EμQt؀p̺Tp3Z[ō""w_18xitLҷ~mǫcw0[ۯmQ'0\Ӟ/Ե\f.Ϟ.kbVNUKgTɬ6+-vn|En8隕]tmD`qWtսݡȯ"D"U@a=T MA 5֏##vX8XqL pdaj0fbNDκuXP6of|4*V?T x3sah_s_d=d0 CC5nѹWE[DWqj^K+7|W/r"OEf80ll~0*_G|+M%[*Mn/.( "+Ѽ5iaGM-Zl;A_c)oJD.qL:Ua/{p.3"wTtG0)}^mЯ`i4`iJ̨%'6*7T?1#QNguZNNV ]ѱSm=L`pa/$ v%!?9%INU$PhU`x k /X\4iU ڌ yk&~ %!ƴaE˥p)R֑XQuӭT=^<_Nޥ&KΡݔj7勼(s_V ;H)*R5Dl*35.yzq$2oΗ@i-XED }9Á["z $̤a6uJX4 0`[H:*enRqqT0;l_Y4-:&h@0 X#G_^Zʵm7XZ:F8k`{t`؋$VM0:3$vj&B]ahPS2,8 =ML1p~!GWB3bU`=!1WL󫈐E}8VUT\֜{:pԢ3Ti8G|m V9DiE[)  Rݨƞ'N=Qgʷnjx9_peŪ+ΐx|b NmVKJHNȵB_px("q,tp'\cۘ8p/zFYh괐L$(ѓlU VwZInբn4:,6We{/ҽ7$Qnj1d%w(Wy2gĖԊwK%`7Ysn=THe#arzyd&}6lY(dE}/~ߋg|3 $_ɥ@@l7 [!^Wzr9h(_"`bL kYSwګ t/@7# RC&a ;P{r^*MK4%Mվ/EWPA18Aexe9;vW"y &v,%v<Ȓ*Wq⼐hZ0G{W2kUU*'{yI}V`_ .Rqӎbylfן3mCnMIпP+՝ {׌g־gF㖟lˆ}IiݎNخ8u'ӷi_Jc:k.%FKB͠ Yh0Oq?kݽ%w~Z0h&U@'Ĉ:?_SMZ8׻%Q44cYԚjB4&{bYU}jFlA1 l)V-dhYd MijsM3@0b-D#Q KsZxάD9jI504ayiyXl df>N%cQOBoYp/~ƶ$ ~u|=f᣸|^Npuuzuidz@5C8؃? v983#QYB΅ jгUىbq,Ut>*՛"YI~`JY_ hHa ldT%1>F^=|O "'A4)Gzع5۞ n0*JCG5?IY){ubwş{P#ɯeUZn }^&p'gS)g䈏W.ERCJkTf\I!bďWY$c&5~n+Lu%: A/Olog)r&y~c,i?|Z34p=U{\j8 ;Dvݸ%TPb"|KLeھ(QV 3M}ڦeQWC%SfHp*qhrvUeOCh wX 炷aw/g0]U'pFEOƢ,X=H*f}ҩp:&JIo?t0@n sQkU;pX7<+}/6wܱXSƖHŋ)/g~ PDa?eq٦t΃-.bAE2$-\.]󺋌:vR 1: 2{6AD077e֭Bamk.801+]P|䀩$ҴKl02W$p9+~6 ^3cw fX +?pU$759K,2פF<j!; h\d#RKz .-\;zej fzuf/Δk3gM!49F%{ݿ3 z -ctU:yS5 %YPXvxrdZH&SbelYo|Vx>wW!;j,aз"cܕ 4`20dR *5"UsIb8{5XKg;gy*j'\|z߂#3z0΁ۺ.6_IQnBNHtM$8ʻjc{q>gu"r?<yv][oА'}ɤӳGvkT޺:+\2b^TFJЃ_,C]dIQ <0 MUrDQ 6,`Fï72ܭwߵ*%\ H98$՘4+y*~ˢaƠQY96=@"tVhI;OVئQT xA/ZR+!ڄ2Xs!hq6ԠiH؊˵M}#mfA=*"1*(9r]x\U@je/ 3=/[ɔRYrZσxJF9YّB9&{ʤ:9+70¸|t˾%v^٠F}׋٘&GGHXT(d8 cB<:睿 µԮ \TK/6̺H0 Ex7GN+ ۸)18BdG;!彳>Ԥ{qOJ<⬃ek!;M JBWeƍ܋-RJK͑V´,+L\Ϊ[x^.ĉ CB'冸TAEKȌ@Cyx /Oą 8կ[i̞NjqMv>xo]%Vl--'Sly8C<Ѿ WӃ@?N{ }{a,T_aKB6c0'd:r΍|fZqXq ,~#cDY8:oi WNz453!Vs啐Xӵ'゘@ NzƜ67oXﱷޞq5&0j]EƁeXLZfE3x HML#R jNzl`o{K01~BQs=riW& ҅Agis/}q-*iːcMJE>E q,HAgJ?y}צj0Iq.$*aag شv,~*=JUHςVS U醩cܙ(U/=RJaPj^GցQ[:K wUw{3%Q+7̿=_N*eٌ굹u_O&~l#\*[cxj:yVV:ks,+Rpo(8LŌb3IĚK,a\Wve. {?MrɷUyq?uaꩄ; έWWV۫n ܷ / xP/ȊM-TVy@yUQ-/ߊnʔ&-@2^^y6x8i#]MMҐ2ti^Ma`eB#yFc6#qI7Z_]zk%K@r iǹ;?Q0 iGY7*!,} Au۹W,HJ*!{v5gPoJ-6w ~0ٳ,ϞH{U̳{ q2wla%52 '!j7n#,Y='ޫz6|+߫&jJ K'xK AZÁRלИyRzT^u`KX1R2ڠȘZZ1hDiL_ZDtaE1 c"myKRc1e,pbux2>PD̔|Uwo"7(.L@\Y3cu`G\9+⦃.]&L 6Qz1ng*ҽ\dCFߖcE¥?7C |GhF}3}o7X-X V+}^R+T MkK5LdPp>*ѣ#~'Xic߮3 YBCSImmڼ[xn4i[F\ YhV'dV|ڣzT) yݱ^Ewݯwl8(몚% hhZpM >q:Ɨ>>2 w]I9Qէ0˰W8T3o^V }ɑ ÙZXϔN\֑;pv?L-/$c[|ݎ;zoԞ)7O0.poQ-s`Ns~!ie1X V2ڬIa̧W *BONs-"z  * ";Pj,{Ņaa klOGc?-*NeXdv8t0ctGgAWEwLY/.r. 騼1^ eU0:> rkR}+ ǼXBf"ȆI0ctBmKZ\\TCM~X+cux8?M7k¶̋NTj0)ncCרuLV%; Cq4cK)Az-`Y FtXiE}Y!$F ]wa go)@.IauXxX~8|+4+ ~W z[XhQ{6.iĺ;QT[~Enj |O4c4~xj{u|EJzs]~n[7kw?k?s(4fW=w;i[Bj,YNޗ!Dq%$fzAe̱ieS7V$ m{YR{ 5%[},g&4xRħ (|vM-V(i,,;<9z{WO^m,.>]US1\ &D%qȿ]ZigH.&$" K P3*$%u剱=з&dl|rYq"8I~#ܔšF Zჭ%V^vMBЮK fUxpOX}q)KMH0;ޞ /lFC;G'+ -&iڋWv骽`Y6n- _;$˥F%yCKs@dAL`SN qO12BH3 1UAhoJB{ŗy :#.,y˽a8ǃ%n]${%t"o*øK_z}dkKE8bA sBkv<2 +Av >R[Xҹ@閇eyDTP\=ۛy R6t2M]ʱiq#CS"JW9 >1<OUܸyMyG.H]<@M09љAq Wkno AɃzo) F&*F|hHSTbȵ'`1(cUv@H RD}x =CSr/$TݞZ]\xo R~"R%5;g[>Fqf n6ޑ.n*(zM鯃\|NrA]TH[Um *kl% o RAv[ŋ#b>F3 OFdeCs;4ih*]TЉał9˱a&s mk,sM%_bVVW8Q, [>&̤[0l[6SöV)J˚!2yjqv.bF<#>u4]Ȍ_ &qʠg>~9,c 2῎AAb`KQ6RGg$NaF,RޑCj9h9Y#wL(_`pE|ΰ66T]t[U8gO Ы(C-ŗ⋛$SO ϞOޙ }A|gPL}"G6P,3{kShuz,}#y^7O`B")}s&o{P0Z}-hMjqwXVs}5GJ^XϠԠĨ]2Z+%I!o ,gpW0\Ug&%|8V"IzGw֢o?F3SMZU_tdc"0"(#/j+ZuC?v]s =7;ܐKʷ;gړzFA1prSN8-OS?Ѫ)bkcc}= GqqǥYC2m#7EX3+RB3EXʮj8.UFrf|Oj*Ś;OJ .]9'tnUcd_-WXI@ՔJƍ90fAwd~#&-9GK2 ;.d<ώ8^޵p$-~^%ΣRYxqScDjtLvE;Ukb!J+16io$zzl#2ڜh,$xO*}Tق%Tܪ KGQ$$f\ƅ .Fm X REP(wNagXDcl{LBoSui7U5PBRa>4@[m.9(ǫ.VwLtq`2YIGUq5H16;}G;NS U'k7RDZ"o;<*YRZ/6cBEs+ϒ^7Eaш1eZw㝟P4(V)ʺdSڙM^M#*9GA> %5j0x hcLa:b.%/iVfi,Ko ԠZ @F0 ɭjQjpRu ^90 ҿ!%9fo^M_`?y$JMC]|4so+I*]_8Ū^E2'H \+=Y6-}]/UrGcNJv9dϷi,|vi:^U_OL`Si2Z1y27CIWVh;+=CUpSdJU3SjW! 7KdG]T#ӌ #@iq RiqYwUQr2jEV+\ժU,$$B81u^2eG( )o@ݨ7R̮>R e-l2Ikk68*~fX,|¢s\$˜OSUVXZ{yRA#CP)e:` ד3yj hQ,UQ͈Ux z`SX)~[s!w*Lm>!.TVOf&T8A2-DF -(_-TMVpua"ި-=SE79%cޥ$"vߴL [Qϳb ~< {+*E2ۦڏ^U"gԄҦ?Y0^)4bp*P܆^~j>L Uwwh{N$o@2-|aއ02$Ɔ4f~=+8vxeUA-}D]dV p,Zv#=J ?$ cI[dsV7H&hS\۔?JmF5d8M$P~ Te&>FL'dgP=`g|jv[ƪNk;@W a į51da~A",`j$#Fޮ[\=eBOxl0tм$[p{TqMQ'4H$uBz3wRs-@b@5PĺaKrB}תZ ifRp)aMGAw~#xF2胨#‚R5Kaq4bsX`[Y&KOUOR;sSxI d8IC}&dy oĈ@6aA< fiJ.7>![ə4a&}lϣSc>aZ[=D4-zfErx]I)-wqˀZѓ_"sJ%~ΥQ:S?#De2Ꝯ8\_irie]oC3VT&.Z B[\R䍧 yժn~]ׅG+]zeVW=3bڊ"WWNfY|L7DiSF2?Hrf\e eRyy/cНeQ☉,:i~YQHzy򬥎$vgm0 t-o%H[q_.d!z4ؒ: T 11<>Vtts@ך͹N9WwQ&<%0I@rYvPC-ݝ ZI 5;ʼN$bO/h~6oCx@|_rS<迈,8 V_oG=?v809Ǔo_ommz~&y|XZrK󵝁[TF8squf+oWyu•k2 H쪤߲.[oH!gժUgQ7KŲuCܑ6LuBe l<0qiv@ 7[;n>6![ƾ MȧA }T) 8 ips%cyγ̓fݘ)gWFbVIC_k#^(yc8w9[yUBrt,L*pOvwv04_o<A +DK{<.V/@fs?++)k`ka$3uOҌK$Ε"OYDB!e2֫s)z FLG?qU+jq7m|5k[Uȟ^g'vzĂi΂G3J9\xj\ɄGG q$Fl~l= |xzX#"5 Թu0>G2&Eí¹鴌LoŸ6&4q[ ʣl))çY' "FX)-E;ֵ%6r'NYJJ7q|>+.L7*ZDݝA[f)&XS3%oWa_ p|3ҍvth[=MU7ؼ @&-1[C b{$ /x{ztEPr Y zp*]zw0߈=ܬet"?ZY9??og9)Yr6 OV Ƈj5IZ3FqSLnݲ#nsiA{~j6̔]uU)Ycp>?`ɔ}|]_ =>M 7F Q/u1\F#ߓx4'IZފScvY ^.>0L9.ew9,{/BJFyeƳnNaJ-S1G3CBuGx >NqRl<4vfKҦHL}カ:@קֱU--D+9VhLQ7؞\zV'4U n*5w}W[aHk3Sib>ZieX+At*2 Un(U((:((bn(KOExj>IMù9N$]?fdlBWbWn8R!4un')PkWQA UxȦoF_!:~ˇPzW`tߎ~>gKu(fbulXMj%jNF^WW< ۡӷ[Q/} 0ҧ!ǯP~AP?7?Vm <G}x482DgtVIMKzl˯]o`G/_9+['H|'<̯5&q q\1;ttUiPh6[()NVu:ߛȓ&$amF+u(_gNݛJA@/4= )팽EjהL>o퍺?:Qm2>Bk]\W6a;?[Sy7p~ "I;$^OVtq0_0NiY#ryNBhPӏېBE~C.Z~FMLAIJ~fπֳIъg|z(̓m&'ϟ[w#$ST+lܑ֘$ ꤇B I0|ћ9]ҥެ9|WexM8Z-Kސ37CɁ3@FEkוvcFc \ʑjƃK*7.vD!GOAnrZQ#E,ohw}rtl le|M?+pČ'+f]ڔ|% ?r:`G6G D=MDu@i:a=@:F, q@Lfi{)Wz݅k _ꘔ8zi -?mCSXӫ(L=X)IyF4#*q=erC 6,'uv _)/>Ν jf;4'"0"wh6(!gK5L=1 ފp#W=-B4y4T`9(z/uFo d۱P&c;xvVޣU :Y;Nk+=B]#xu d؞50Np+#ui㨑'ǚ%58Y :OϒnuE'D;q /GI0+y{O'dh_ì/lsӦ&b9LC&!8 h 'Xh1=9͍+z{`cwoMX_NhEixjTИ7c|oTabLYadnvsl˯_,ly- 5-Yf`8.lm =fΟ|^Z7J^:%b'O-@~"!ZƁSϱWmBMUe>u/WMhQiop=V ]N"2Ǖ4t]^m> $R3 ؙ:t\󖨨>PmK:}|.t[C+vx)g%@|yo$T Ɗij?a$Բ=}gub#R'L]aso?;IalN*vQs e+V$-!wvO_>yTq( NVLmM&a*&\&025)Hr BSKpɣ)@Ɗm)_*1L-j΅r29@ P:5GuC-Tjž86Y$M$R>Mq ]a}K9hp.qo<9L Zs~BP6*c_Se 77v uEZ0}.{cb<[XA4`c|"'zTk޽{? YY6_GAܱIMptQS8q/5Z.&T?:b ◉1oaiijڋr3Ir0z2 w|Cwߐnv|wt,t;xA}Ysi<Ai4 ϵѸߦpN5d=xo@;;-Q>MNkD*:I+BhPKw:/۰{J ˜>sGO֚ ,o:SZRcؕ sTQK0z_n?)v+IK 6?f+m1 4 _2'2l\)8%X2Ǣ2y&{[ ]Xe'X?b:xYA$RbGѨB$v^7D5olYIOUJDI8 #R9 \59(H'F12X7hZi`R@M UJr|j>ZBd6= 6ZpɇZGpVhS@/tm@}zhXnm3>K*1 V.dڜ!S|f Hyq-sP5D"D_5c櫛0, ]U07+!J!m*6N9aX#Od)6:$ Sl*|[)UTǧG( BX))hMJy1 ָ6a` ߄vz,fߵj~&n p0 iaWA|fnS3[EOiX,VoSo72Xm|Scgyi`$g)-+"3HfmVT.vZRMD1J;W'Q!k?r ]YFr<=B-Gќ._Q2mTQm|"؞OǪrF& )ݏk$"?dcxaZ6Q4Ltͦg@ECz&Fda@/s3Whh@0'M}"bvIF@Ȋ8QF/5,򲂶vT@%FP4ME"} FKMk>rEh[^O'o׼?KzV,](ӘvYh[X11褰n0GʡGHr,ٿ@:,$ Voarr~ yX+ąDZrKk:1R.+%n9~]˛ s RL$MVc%i_.^mJf: :_XշA:tR!&λ'pE/:%x&C?`8bӋ瑮 3`qt<ȧdIӼi$)!]5/E(D83<*&(e #GHVO968=AiAqgIk} oth0~87̉PQ&eHve 1F [J4GsHK&E2,CXxd\,#N*OE %(eH "Uz튫]}#Fǃ' Ci7r:ֱe %+]דrHV8v?y -BT_ 4&fW~̇8Rd?XZQ)Xİ,6Sw >?_ ^`%κC;;ŝrV!"=OsapiҾ='ɩVU@VT–l+zegJ\¸1f'TY<7\[0F3xZw3ьN SQɧ 8R+HZX훖?_SW)4)c }AIP&Pe=lPAzTC dʶ(Ra0L'm~j nfnBS`ql>xӦeԮ%3aS.8V4_0gb2捵 h1 Ry59 $4[dȥ/ٝ;[dIxݹp74o/cT1r UDS6Xf6,HQxJuFCj&")ވc!^K{\'ԺŒHy *P(jF{ F:9S1];r8~煩,54u9qKl+|4lLD\Zg,庁%%k^E!MɻhB[wNO؊f+~7O֚sAa5XSY0OcGaB79,8X-Q߲H19)^@H.G0~9&2kؠ>W1|6 pct \^)%TPq#( kԆnRlR S̽]xNλIL'sAGd^ 5 1;U&*R)'艖|w,ɗw$ȿق0ԡ9X;:@W[Ҟu!0) L'|Ӭ~O.^b}8'$ETsHunAR1)]#~PDD,%ѫy 1f|A6νInP.D?aI8\TO ʓ-b Ռ~)lM>qss5aӤqKqh.Qh$5qqh#& >SE B,&_Z ;e B@h@3M~E.$zi] LS#jV] l5݌̂ihؾEKR`^,RΫ4LڤPg㲋|MwR%Ólar N 7Y?٬juŁl08tgɘ' ږ!Qۀ 3YMax-~j7',9+ ׂrfJ.ȄJ%H<9lUB̟܊ڪ& bbI5@s:g /+I H[琂Ia8 *bt1Nsu~pojH}_YcbQk4f$OӘu}TUj%qs 77^4*67͢8OP5OWF' UHmUZ=M) %幼ϺbctBTHt>`dϮ}>Я'dhV/ ,9R+#'Faz%q1k'儲gAn(yi?9)\nHoL7Wֈ(qb Eo4>L -9͈揥UtbժfI!O??Icъ787+>^9'HbI26Ud+3 gBaS7& Q >8ȀDw\r(o1[ϟ6fwЩYU΂9!좁J3?g*LX+kwƆ/OFRNh[Z (ģ@I%puy ni]=4u\EL>}g65צO9Ys(P,שPrzn3q2S=%Q a475>D*P~!:CASeI99nm^J’l7`>幜5ĸLB&?ߛ+)ͧ .6Udf1fHO` tz z|킿&imPD% SItYV;`Hӭj(u@F6nc>l0?bIŻTsAGj=E-0jד B%LmH}{[-r]-N>l Ro!-)4LVL=]B9M H#O/ s[(hMB[҈|؏w7{ؠD WΡ.q"E9*,GWŒG*Y8&s2`?"XZVƋŁu_.z.ޅZ񥢠ڗsx5OkhuD6$.9FطUgM_&]Χ13( H6ī5:WHj*JOSäEw%x4kжb&jͤL-@,D/JTj+ y2}8!Ǎrsɕ40MÈ$cŰrEJ0j/p \Cuۉׂ*}vO,(c]YeV=cqb2Z Wg]”imK%(qSY82#Hz_C6{ mU @e /!$";;!G?Ym%FOȠ.fR) 2 =M2 R6R*szOOCBn[;= s$Ba_gˀWP4{ Gmx5|my0q"Sj$ϊ/ap`mr;Ud+x"Gd"a=)S׃Fc4$hdYA8zlāH6D D$8't5ҠBBBcr 摜HKh%rQ9N^4;$* U{7Ulߙ#>XlH x`8w .SŶ*^ Pot1T` l?\ xPcu'q*:%2!# z8IEe:46&ndo !F= %b[1m@@ HalDianvQBoydmef"=Ù@vO$4#?jhdLx h]].,CϋTCrʒ!#0ĖrEzYUG3)]{nFC\3۶ݸr؞V6ݕx xsBa"~`q̈gr|3]s~%nvb{tzNBH1L,87 ǘNY3&-٭LTީ=P% {u0vI7z1@:#_LJdP{3SI2AcA,di {s!vzZw{ R,X}!]v˅fڐז%vĤrb&[ Uȏ3|"<HY UG0rάSԦG$ S~kREY~WVYDAD2˽lO}UNII8ɓjЭ mFHĄm1:uKE.8f:nSg=>ţ4kA”Fh1vt!j1 xH .߁9lLn;Q9 Z]UN u(]ժmU0L^Tbw}+%XgV~yX(w~k~o\^FA thH(bp/e+ƧzdSJ wc*"ȅЍ hNLHWJqeٓ n0S@ Ԝ\bD(x /NUDDpE!v+J4[ᣈy8DF^ J)}Sb @?F^0K%%tYG;BJ^WZRxo 6d3 uQ&UMBMCb ݱRSoJ HPSX0`")m`w*ݣodvf$]yb#bD lDTKj-d)`Wճ}7\. -u J!>s&Œv8kGIԳs /~*5R Jm.9P~fKns.$6S4G&CVquQA1itۊ$Y/T` $llW:PY>ALiг4ه,ج(؜QYfpwZZɏE^͒cA,L"I+*j`{#x3#vk|'EV}uO*`# B,!9F6ÊjF5B༆խ5sjk![_}h[Dx81C .q_K ^1BT[!TBye:g:C%%@)6(czsw*._r-y[cvkɷV-zU;RM۵*c`/ؚR{&*KCh:"3@U!xD׀^4j!@ y !r!v.T"a+arӞ+$PXt {9wRI,a3x^[Btz($8%:gPr~RԍNTC$K&Sa(hp o ĉedbu3*4 ѥgOu؟)_W g T`\/ E NbyuXs M`HVJ_P%CwJ9A6IP,ɛ95FuS }e=|w9tC}{=98rHӰzRW+V7Asky쒏::G4~eEomءxB\ ZP(WWrلQ[mg&@=V`_a4D7 ߐqbr\3K y[&ayt*AT cN(h J/܇eD ՂXTkچnްۡ ڬFLi_m)okQdРn!̿a}.3L!_FTP1:#\{@pdUt? 6Tc+J)g0σF5o(.!?-;hBNzDī+-#43S:*W *bE 3 JP, Ab푫PGZֳԀ(F"(w<@+p:)TS'ڝ'A%_F/k߿~z>|!I_  qđ Os>f<"# jP|H29dMJ:p  j{Q%KBՉȮrY @n2DjlF$W~A5Hӗ}WaPG<@ Gd$TnK;W}s`aաpB}H ;og$ G"ڻЯR,,Fe rylҨ5S#zbok| %L@8Qnã.WUU75s*E)`MZV12Ym mg+K^@uN) Y|0 ؗʶ8.wL"H΃ẘ>&c#P6R\*:8nMN~=wcNeMj3G992D coqBb[*"D"Gw!P>SMenQn9ˆP Cxi  B78Q$!] eP}O0a88Krd=aG)IYEҭCC#@Or^Ƕ;H"윣Ns{I MPnM(ij22"1O[O9"SX (pBԧ9b@ع>9Ik+.-ˑryJW6FWJ" s`={>T4.PؚQ.o'UBVȻkkFRGRӀB2rfR>&opux F x͡QZb]XD 4F#&yBS:&'? txYBǶptc"1u`}@EH+hث1ZܕH } @Ya6 zԖ17 -xў)LP u2~|T>M*)Y7K|S/Mxz1 ["?bƬΣpcHs p,\!U\{^@r-ڲ`w4E#˂%r^DWḦ`z]zrkca(ʖiiL_x`Ⲋ9eee~/o< r0Ia'1ZIcBNXA+:T5<Ϋuftsvv_W$Pʓ+C EW98rFi!}obmObpp^b4uXSmB/\I*ahTHH ? fX5Zi@e'Ǿo~ +T{'D^j6TrtPZNgpՈ圡% v }wѡ0:_$ oKnPi _ɂ#48XB Cc S^!$9)Ɛ3Xx+FlH̊R+ O3 fcݙ \08~_թ vfqVfopN`Ngxrt<P@=^ӐT7TE iPANF@x6υ,&N?ld0Fo≁b`YSM>!b'pg2Ouf7:~g>LC)>I&>_jaNjɘذfvlcte{XX_a<ao w l 19ZIZXq[pB,Ced3S]Ž*>ȏn cDaErG|}3ˁ? JKKK_Iio.:XWƖ[fPɥrO™PDj酐Ao -Y^@(PM_oBI g- 5,5:?Ӂ Ӻc5 0K%`,CQI1 (g1L&헼+kQ*P}ŗB1]);U8#\5RB(&44yOsYOҐs d vDN5Z) Fho0lB7u{-dY/XRSmE Ė...}j /`囃aS_0tY5xAGB;qՙ;H 1|,|пji#J .rxPi@l:$-G ejƦZXmu3Q:O!ᔤ\=oĚ -뒹!V\[c/vRZHI! H.ƻy/_2L:(oQ{i`Ҥ%BiP)W/KZ@-?a5ATeB#|QU`?]zHp3S5 VO1ie|ZuסoUr.`<| l r3[$ ΀~@D!FLED dçK V.bmHoEn`q2#O(ĥBM|I_ m0=v&@DnQ*@ s`P #0PCrge86ۈj갎钆-Bԭ;_atS+}oBnKsC]5cwIܾ/ªηrWd錁<] D:Kg 5gQ UoD]yZ곉y}:@T/Ѓ eBF- N%l9b+& &lj~QEyB'y"PqX I:AA'MR<0eBo%9jQz YR",tCGvGȸC-u(s |X;X[V.kZu5ۥkã@uȻ^VՒlH$#nzӘPyYie^0(U ^v>M͒`H<^, g4AjrXD?08Mi[b@%t |}9E#.Dth(] ")bLYIi.XG,-hc]}Q uݢ(f-(OP'HX/}]X&ZH|#)f!6y.9δ v2I,j yh7ol_1͓]8HQu $K CiKE÷`ZblR!еxZ}Tj[[xo9Q?0j!$՞xsjOkb0lN &`3lpZzЉk\v>f4`m,-"K8TN- 8H1C6ddVH1XeHrBmq'q &GmRlɷᢞ_)޽y39 4dBr32q>7"">߉cAU=iCebl֬SҎ0.c;MVl(ܦE{kΏ"iiڀ}!uі-l2bvt2am8VMdawA[F߃@ШhمxT -t$yl>q~Jejח)3e0ֲwZopQI 3t6*_I$nzp  f@GS9:PCw Ͷ/Lpּid=Ѿ6cTiiBcv/avKАnMYK|k&\0Z=Z$1-1ݜt\;κA9e]\9]]SI+;`'RSu䅬bȽ%ʷIf_cşŤ!Ϗ<״Ɯ,'N؟i} VE_vBhYH$ߨT*{B4.ASպzz}{<səF1$5!CH U_ۖ5f4(@)?bAV+;%O[>{!mB6wcDG1ד0㢦<"XJˠ ck~:(n|@Y"`]-T)x8F9R^LmT/ˇ>*_I(P@tXOL:SXg| н1}l}T0˄RJ-HCZrJμ)I)ϷzxFReLeSCGէUm_/ŲՅF/߄nŴ(,G|ꆭ4)E)O(ch퇋 YT#\ROFM,$J,VeD&u's*m. I6P!X?!!eXQeR-lX@S=Kӈ^`H9)ߔf,USMAz.f0-7oy˥Gn#|M8xѠv C$_zZ8*^xg<)YpIay~n{o|)^蚲4N6%64/F+ðqəkADD|fFP ?h4k / 2xOX P⹀}l #¿Qgam͕[FΆadOR 3-LϠ0=NeR/`\&KoHŬx ꬿ-dQ2Tx)FuMOlWloκnlz@ERq'jU\ͶRX#Jcdc=bZ`(juoʕ9#6~SxCm+q]eN: rV#یKl|َeSbr XFKceox5T^h S,#PՆFE /|rcL@P GY)T,K9(4o5L?EnXԪ3x(NzT j)I3Z;EYWT(1Up E 7QZ(<+ȫArO5Bq2rR̝Ix9_vuǏdcǦġd^·+ʧ4\$",S#&@HҢYM ڙp4?Ǜ~O0CX'e,.J'Ba6hf>B1& %L%pn{cxJdj,_,Ç"2p 9 t68j7|>Y4}|w'F-fPEY+]:|3Q)ˡ|zu',zv!a ELԙTZTgVBkjy V履r|i|^C1l]?AdrVZU<u`8_1b]! %bm_>nɛ 3uÅwQz@g$Tgd+"hS T,B4S?Ȥ5'" @t=Nv@&qF.q٬T,"Ɍtϣm Ph V*f=e1o)ԮQc8g%4cqlG,#.Px\zeDB\p2sG` 6|Ưs7p+Q:nv&UQc@`tӌREh)zhhFʛ7L4kc3p] Atd{[_' EZl?t~տ ~m~9}nmɛ7m9\ؿ>2Ѯ46~γk?A#sҊJ?xMSN Z ؎EKI07Ƅ+]3$FRf44cбJ9L<{a`m*\y"S6dk#I b?ZRjt DKY-QoVDW1]ȹL[JK8da OR<}nfyVg,C<]T$Y$U9vX凲ًgެ:ǢwAS aDog^Eq5&铘ig )vd/aolyrf8Α ^Mib'\ͩ;cg!/N7MsJLvs((Msl9 `V*&zBu8R%P( }@rHL=KFdʈb8-`cQTw5?'-uImIBt /ɛ}ީ<1y7Y gXshfKPm \am2pj 7hOL{̚&┐hr|tFķW6Y*QATe8|%D+[dP~d%l%ƴ=Gu־ww@%UE)C1 w(} ]E~8$@0?Ff J53KG=w \) %MUW.;f錒AO RP yJj0>F+})bE c8g@q <}aڤ9]&&0[7XayW Ǒt<f"sHZ@W;b$> ύ8$m` w7Q|w qB `5pe] <1()!!+e)BTQ3j/ʃLj ՗uI`1[fJyu/.H: Tg%a-_(稻 ;x۴14CF:ÉPIzss GXmEu$ggD$i=) )r(CMHz(Ҫg -{ {іDVJ} O?OWa7oom 7$|8\΍Õ(n7FϗH: bmkcF 0+sց/o`kŗzm.LO g!U4aIv4Pco+Q,D+?yuJ8y=5vBr=Wrqޛ,3  4ERTxbj>I/j ژ@Js8qr) KxY8(9Ɂwgf yj3Ge^n]a Lb54-+GVhh1}*- tsUe5Dn%ZQ^ǃ^Joȏ '֮Yy,k?}5 '7j1J"Fp+/cW>h[xlr8|K.㲾'a1e=S1!JHRLbI i/-Ldđh=;DPҎ2/k ]oI !4̶+Cx Jw`+7(kůTPsο _`<̋ [O*PƜ[>evexT1f?`|$7旎H3woM<#mnڝ%rښF\c]t&U?7~0)̢ ~>vb]m[Ozt_/JCN-?ն?斖pVBH& SRJPHgx 1¯⚗rnùvK a؏}A-('!=AUn1->"jdNeg#+@@LpUeŽxW:AxS5~V@rᵀX1K`XewЍ .ߜ,ݶC!t@߈%}T«cwQLˀZdN \ņx"fШ5bf:+η-R1J!+dA [%@ )D\2X{FDQ(FqLm!uTF+nA#Ѡh0!N(Z,:טWcstXuLJhYj#WfqQcz&LF   c+LZ򫝪 'HF%h(}r#W _wXW*+d54#hZ]#nKsZhnS.9CmyM :7JtKD>6qa;Yj y<;/)M.؜%*klsN2/(tDsİ3~nd3q>0)aXIub?F \5ċV:mlZ%rWUQ|AK#qH73mo![89@ o82^G s%1Hʇ^ۻz#V1Io0I-wl(em;HՃE/R\MaۘlEaPey* ۞rV9]mf `۴nL7MŀP[R[Z8G)t.@1jZt, 4(X6=KϻJYՁGqxJ.\|NnP|v:0>`0T&b/ 1l*Qt 4{|?sU?PaTI00*bReԡV@R;eKi7Xa'+Bs*R/ ,av aZ##ltn -ĬT*]L~慵a- т'Ddž ʤR؛8BV:0й9ث6L$r"Țj1&hU| mxA(lpThL ت[c:؊+Ru/=Kg!VO*:%+" OR v&7e9# (MØ!=OmZ\< BpPD+7] Cm%$S7_؈31f!^%Mu+µwFqNq;q8N"L*8傣MWPH=3# 0@dQBǠG,ȍN^^?x2` 8Õ- : McĦ'mLK(ye\ۭ5Z <+ۘz64/r]=>?{OBk9 }[j՜ h_++kl WĴ㩞@$f1$>9Pijg7a)$WOX f-ߔjK ևetG va6s\e5|,SAopAj8~Fps1=Pi8O=̭B^ٚhw,r#W- )0Cɩ^g- }R2Fv4^;9aCm | >=̘6 5e`z kg4%hs ] qpi:tÀi1">wsэ]"B$_v,zg L25ZRܿ.6kgᔺh[/5)\#es"hciik. cf5|)=xY@Ѫ+4v#񶾹>瘹cKVBM{:^.2.5W.mI+)ݖk%K UQ7 -8pIB*ƠDue|WpDF>~;A$b,Mui1n^TyK7?ƻQ`v L"l?OuJTXX%/xOV\ Ad%,*1:k^;S>F3 4,ͭBϘ= ZEs Zdz"+-g жZJ<V*3}v5QIT=4?R/޼"_PC՗H&6L%[uAn/ Pmk^Y694W& -IEdX-f/["V ,X,EOƤ^" &BWLyK3e ˿\Qd℉b)OdzX-6ʃ-@Ki4tJU2B t@yj^WeyQ-i.t2wv`BŀD%` N'zٶXk 'Ya"127Jvx JbikǙ\Z*rT0d;fWȘ1G4\Kj+cҙ彭+njafee1CCZK2Sb7ZKGq.[R٢Z`iaRkT역JGL|Vc9+*ZײcA|g<ᵊRآ,vNEJ!ΡHvWP Q6$[))*J'zp-@|*Cx'IgFqlrEɤTC0{N؀.`6bIjbLىqFT+($,a,C/e&0.Ӄ7]%}!#3ҍz3R;y ę,C+ BtNArqa$`|vAe Dh-=Q0| xM*g-HXc9Fq𹏑\tn6J @`宻͠MrssNNfL`}~HDv$b*rbz1,E)R"JJ_њˡd>DЇ5ਞ6x(k8ԉ(F^Kj$@ bq/VX/&w,77ճq>wK]3^೮j[`d*ZF' J:%CHJJsFf + U3":@Vʂm =}$;;Kh YWVK{PΎ\+'ѿeby|9CÝ 1dD(\.Qc=ۿ^}*0ŋO_ JDEaUӺJw,W ^B{ U9՚U&tKzZl@RhhF$V!@yDPW/\mKdzƿHu(z=qb K+ټJ%+aݡy'L}(^~-&%Jݔh4 TRh{3%_(},%Vݪmr{q/Y ChQj$bK^('n{;#;WcC*T|mnA+ZAf&N` x(K>˃;P^|0Qr͕-><I"Jx|"UFbS39CL1eѻX~XtGa|7]4!Ig[4LB0c4<0lRI8cd* :_5ٿldȨ[Q:cq?ËKspqu'>K| l9$J߆=i^0'ŬE \*Ѥ%TcJ:F ,{z:!Cr'F:+ JNM~[sC%qJB|@0$Ӊ^-t.@DX9s~<mLXhHjSy**G.ͫ8a@?Q^l &=1<H7/9&hAD/B!,fxW 0{5.=Ziaeei2(GBE@X3ւ@vU6x,OzbW33fY d2{dL,٨P_,<+Y+T>Qz"ґW =mVG,c٩9݉Ev2 -TR`%**PR'+V]\8yWLB];@w,,fY"%UK,!xB etTDjC:4Ga<qKQbgtѼzp ]}+ {dJSbcCŲ͠ɜ5J,-/-+8NX椭FQdWMO*.Ew싫Ό9Qͤc]qG7-Eie`t"C0v@]߉~iH@ TxQ$vCi9!o3 4bX԰"풧c8nLNsJȐ%*㗰P5Z(ިnC#Qt $0!H( !=g6Kg[O$![Q I?khdm' 8d exdZZ1ZJ S׃]K^([9` tEb* S3xLD8t-A {O4P&!N\lL@ݜ/՜I;*?# 2R c0O Q4\JEI1 Eᱨy}F; r}Л:@Sp;c2qcamt=ڰ+0;.~27%p"kC'AfB>a}]xCX]3u/9;1H"C"uvfu zl2z.~pZzwg-U32\=At5J{[j!39V:d.ni K߲(pE\9WKJKR_Y.dLRǺf>b'8J(t1RpTwoѕ)r<Ք)>B- eFzIh0SuqG|cw8\;_9]wd 8ʹu%{q!{:v*"Nc \`?|Ǹmg:HAidܦ O(M3Fs7a) :cTR/A 򠖆mC2c^cpn|8h:=ޜu 5G wEצ?mgY̴쀪16#vX+ꊊ诌V@൑%OQVj E/ Zq<[? oXGQ"BhlB*?HAx*%R0 M1&9@䁴G;A ?bo27=>Hw&8A y H"Q0Xrfchqaӕ/i.~T MA)Ǖ-\ܰpƂ͈4mDW&rWBc[e=6#+[!gZn[ j`MaabG)Pr14)/ >QG qՒ2O20eFZEGNyQؤ)0/$FWaߐrs?54q-m^Pq{>7DEr?ZiMi@fKu rBit6;/ <5 O;.g˙zjd&#0{yؾs>t>-y]t|3L(xzY%j*P1@w^0e okU{Mm)A3LS&g#e97L;j/Y9EnhOv|ʪcr'iv^l. FC8&9XrNT^u̐=`!xR|΀bK}'B}8=efJ"t!21]#dԿ <%^כNZJTc=/V}1=,V0_l,CZil Z\y m~9A"c#DQOKBiE1!Om:M,OLU 8-_CTS B3bM(mD2eHCW26uGǥ~K]8[#r-2nUv![VmmQ!sjbjR( w$-]+I+JD˯N&#c{3B;y2v%ޕ x E1QMwv*eRW;rV䆽v R̒SRZnUI3&5c.BʴYhH׺q,n1~o;Lbm{X"=39bן[Z՚IiyՋI,E2FEp;ޕnW;*Y2U+g;yh E {(C&lcΑm:iS86[˜ F*yq㌔EKKyla^UMZ*x# TXt;U&DzU㷗 Dc >ԾD*k00&u}g¢hK r,}3mgdQb-Iۂmn^[G~IS fje,Iц=0a0e2G/0!^Oj ^a˽\rb%GwRVM!TjLȡB>Hybhcv y?^YnjkC[8MJQJL%)];oPD8*XAGpik{C"/?q͢ nq~QP&Ta>( p Yt& *;EDRk%x8K,\i҄}"5lCqDտ)KeJ'MJRj^1l(˰yiyz/%KҺb 'OX&`!>IS_MTQZ<}EEICڦ)!V@YbF/Qc!x*wǭ nuH~}b؛KY@TehSE쓊eZiNN@+wCӤt&@e|MʑJ'Nפ||m&`œKKf"a䘿"ډh!B-\vy}NG$ /l-.zBDW_zTUWجgp fj>.Fg3gP~%cJuQY]I(.DZP3Q8/ڋƵyCH2ba>SrVIݺ5C ^\Wb-f3/ b=dx2=^S5x΀bEvh#r -/ᐚy^~$b¸;0xg`xTM#W O 33 |?f. rə_Ш"ZV>-K%ev-8jG34oeP% C`e&mSSE,4_(8dEIE;D,Qؖ^ysllĠjy1J:.4{hƎ֕ '3:._@n-cE [@Ҫ-Cg-WJVvY0XOIل l/0ybU"HqE& HQGSU#^ݳ5btl-YjfId18FgS7EgkC!˿KXJt5E~(#"j-@l gUAaqh:pDdQ\%$r] bE4gAϨnif2ecr>iA!`6<4КiG>v!: V@lCڄCbĘq"8FZSЫFIBC0tTh4؛VlxKȪ.?ƞ:`܅FF@x#E8>a%h=B"ɒj#^zC`(z Ѵ.Dh, Rt/xƖmZ ɡ̝xzU NGOoIɸ+5jy|(ճy s{Ӈ  o²op`?uDXjlI0 UϘ1uv>?YhMPb}@kz=6Gh4"@ P\PiJ& W0dD{`mOj(.r `B|s}< sn12'`z іQbsC 1,( Y= g؞J<ĊP6ig7KZ^&O_1@O)E8$Hir[irl&?9%F Sd`mV(U%?,)1ZXؕm"޼a_DE46KWղwbeiy/4B~:9o޶9.3|PvN(u*̓:q0 E q} ;ӔI3y;@B*A-ns%h>ކ.hAdy$-7^ւl6ll\O"?ՇV6,nSS_Ӽhk.l\)S2!F(U h70p^9]33gBPz;89z$1U2|/L+YX2\.9d`zĄ-UxN l&xRډo3Q[Mŕ)\Kzv{B3R{ ٘h\ 1& s Eǭ"@f4G[*;"A̜$CPC %*P0a)l]-ЄВ/Ѐ~Q(~MҰ%W\VQ-ļbO@5D.uPaęJsd_}ppiE@4 KX%)3ՎsD́:Z ga%P9/<:vǀ%"]TLd(!r;-/qG*! MZv~^I-y/ n@Lidm"fXL[i7E& d oX"6\70h"^QtF_D݋(x#3.U9 *O4y5tGV"!ph>Z^(HlXK;T՞^+RT͖يh @ds> N3=v.5c!G(ڋqYr攈1m}Ш<⧑R{.M{%(nBmsq$Ӿ~eZN Ӡrj>3APdhO*ܱz?e`=&WD\/Arf{|v)lph(bws>-PU6{ lӇ<+&|hq}4+ 3 =>?g1 bi1a|J"rSlq]Ă{[[9CIT` *Rw*neU!F-SnZh !⹅SjM}B9LFE}Z]<bΎRxJ@HVq<5ɨ4%&㯉#.W mn2imFaMÔ޴Ʀn^aЄJ^'Nt&U[}[RHLlݜ{*ieZe"5)k,$Ed18'S3vlk,-b4͌[ҖWJ fg/`ZVQ/ĉBM(8;tYweX}xR>/Ii.;!϶a Ɏ%ES ;lWXyK%L+EJN`"(f?&ُ%%++&K&[ed {e: n/u$.D0G0WT/Ēh/տ[Jpҕ@E&i 1DȡZQ0Ã`y{1 BncL>⪸@HV*1ۻU!g]1C#MkX߲-\'"ߐl+Pp2caV(iQ+AԸbBEDxXB@[_Ae:1̫q=qMKF bԴX+p%+SdenZX3n^TT V p \6v:`=)B2Nz ^X&ʢ#K“&O(L!)x #҅HLǠVqhrQt~Eآ`6 F#٢c;R"dfD9e>*]pRbCʍpt^L >9VnBdYl>>*̀9ad69$'2Fn*#dn3RkGpw,{2kZd%l4Ǝ55  <^O$=5 2dtųF? Fi9 Ay(k]Yρbe0OZZhI6Bu6Ƙ)eަ"kn>{5`NڶRdW=#]ɿ$ y*\DĠm19{ҁ%J{hq99C=ɲEV:\D.rcM{0s:btg ֍-{5X>Bd*n>Lxp_ ֱGR|Ʒq N%E1Ch7VgСѴu TX [x ?,κUĉa0qBAVz??^Ond`WcSVlOs7\3wvcA [3b[Ɍ][`ٱk"`m:=Z UN;{{#L*L9S݁IFɄ)T]0/cu~ *k+gMP'T%Q ocCFA޵o>sDk/<}]5\[>z26ٝkpH֋rDA3a#&9֦rYUP0s޷5[L=7>G#vFscjxYg揟QqݱU5 ՑmS|eW_ϾȞ8#W}tb퍻wv=EO|M# fӷm3e,{t>)ܻNx۳m[0M|VܪXzGoU|lssGݷ#eh7pw{:9'NlW]Ihc^I(ۇY/ƾ_~?MamX}N(o3/:c+76:M׫{6] CG`4/{cꋯ\7-Wr- 묍w=n_P`Jv6M?v͟Gge=e[?d_2r9 D+vXqW}lVr]~uG9?ڣt~d/lϿ^|T8_|p/r>|i^98IEE?<稓{#o"t[[.*Ϻ}YwUo_s߫o+)Il>cz8qKo{)# c=/;ea^sclS0{jGOcmOz=n0v[|wGo>vn盞Nj?]*:2n0FOXwd}gUյNug8v`տW޷Ա۟8lXCӥgk\^s{oQ,pղ}v}ﻎ]y{ܢ(> 2\=⾻^ssq6_:iY;zdݰzqN9 ֪oXZ9úU~տvO­2?q9s7=uACy^=Hب37Gc3Tyqk>_T埳{2kCX|z/ }E 7^y׫kFվ+F|pEsC\>Gwi#(zsg_?{?]n:kO^ރkFgpŗϙ={ZˈYu+W>t_6G# ַ=qbz_0o{_{~~Z7mG\z%{[;cs|ǣӃϽ6^]|Ѓo|z7<7(O~?~Oݱ~wYc\sk~>ëxgb[n'[sW{-?zڕ=p݊)w|p͌?ys?V;rNbdvž+~ ;p ^6n?t:gkO9'S^x==χ;7̿"ZW]E/~-2+z';‚}[ϟ wJ?wɧS^sIWpg~ws+> r} 3pcDۧg&O{uZU8kUݳb˾|aSq+0!'hO|׸q_&ZO_aӟGK>wS -/uKu~zw7fOo/un3'8NϦ g=pkzp䟞q?M}գ{~{vǕlLz&^ٸ㱧(Zvˆ'E_mS!~i/߻Wy;-;i|{a㋷m|Y?oxW!qTӯtw`ldW =bXUq碵^2ykU۟4Ԯޓt4{g]6073Q81 Λ>X;e擆߻Vq7~AWlXgv^=A>r9' DcrM#RM{`U>6Qy$&\dؿEwЈil>x«׶OQpڮ*_;hNaF{l{ꑌۆGrjZAigڦ\E{pqici'jdR#ag6zvǴmModž5l"qj|רTgw6I_-Ά$NbU}5=}gW̍fa0qS׿L6woXS=y|7_>͂kߝQw\zһF5;m}c|#?xsw\O4;r5;yl.#4cliN(=`MITŇkā_k>p˾اnD6UOOsv Fkg֦ߚǤ*KgD2scƊq'VB+9ZlQ7p51̑.qUSجoϬ߹㋧_ B;*ŤM|ܑӾfϗ.xW׽o 0#>iظ/hkYmf]Tϳ<]̚Y _ol0ϿpE_Q]?]~w|cyGSi $֕޹剣,߮ॻ{G2lsnhZ5p̤s共Q]{o{WMgo|q Kw+{ƒ5&=.v{̝=P懟տ_}K==//+0*65ix).4Z/Ncɗ~٩_x9vgʆէi(`nγ9mvݿw}gox34GgW6b53|o/Yge/.xnX25{#vت[y$_, N`8iQ*hw{FkK+qQPBcǗBU0!hotE>uyqQ1|puywCK+w}6v͙;qD)26;C7cxڸ{~[/}ӾpY6xFnoZ^kS67뗱U:m:~QjsnM`pkɨn=3|le?.cl%]U;9cG~ʅ5M[ ] mU$?3g͝-(kMwu웯f1lTveKFs>fc/mӏ Ϛ=>h_vw0[4SϬ,sΏ}Ojo4,ctN0V^~×q]pE+>훧9o'_q/ﻩ|ӝ#N}򺖝bggmo[[>t~?6yfmXޯo𤝬g}ekm&nIo5/Λ֮<,ӟ^w?C/guGtFvW+wy?|;M]xKe\k.^;e>/>uKfLǯo{zϵ=OQx#伇^yoʆc._Oս-mc&wz:v)|Y`7y~ '|;??]Vr'oFqN3N|e ae\57ωG.~wsSow'|o/<9w.;Xˍ퍟L?z܉;So9\׳ނWzW5|>-dS^ԺauIۘϾeufN}'~=fM1;PL~/Լnyki˦׍M;{d=p齓+&ݴ?n;V} >4W3{ٝ\{ו\2s J~p[&</ IkwW?zx;+ݗ<}u3v+oqןz[o9~QK_8西\:{]wWt%>ݻ5^_V|ጥWOnڏK*>G^8o|l_y~i_u^܇O>+_zۿ/yepɴ?~<džp݊3^[b0wKԼ߾Gv۩؃\%ߛmN(޷;W#S+Z>eV,-evnl>Gou\Gݜ-퓳n9op3_lxnG}7\~ڕvW]yn)S::Yxޣ+vfMGv/rN/[ vy';=_/n^#N(ފ?}K8r[^Z*|C~4aQh̓glwzy.Xk~rWPG~&>}ٱ\ECU/k~Y?F=^sw]•jwyckypïY9Ʈ]i* ww}5n={_ac}pGOglFm5vpV)q䫮145|ȝo7kJyeŻ%Wa靵 9]6^\`]s;0&׸.*zϏfI?083i)<ħ'M˷[ǿRg&>eDq~ )^:~#z=sww |w5# #F?::f?`epM/_ԓκ|ԅc.ḫ9k\pڶ-~R׶ 4k~~tŬȴt5ןl׵wň7yiEuފcMMm;xaM|L(gg/섮dTؿ^;<~uo=vdz#eV?GUNYq~sq];byk3ޛl3;xx|Myiب=m]onu>_}w}n' m۞2YS? }W;{X޾rP{G|1k=f5s[]۟'QeNY5pVMg kړ=\Z[ֲOGu?wn{/_L=#nk_;vzx_|u#ͩ#yo,{ۙl#/Ϲyп#WGoz}><>9zٜV_ᶧ={>|c x*?BAIddco8ޕM !{SDdG쑽=}>3Os{zߧ䪚n,JZґ;bٯ#ߧʽU"1_5s[~&C8 Cj_hwMŬw6parpV1hM]A9MLN혛H ՕN?%3rirFXL^1,#}`ш}?OG_ݥh @zz劝񕥥$cD5F霈,gSuiO,А" t216+J:&Cb|BCN;M~T Ɂ MYdld-TFkbPqxx{h"dNB V*1\_S bSj/^y+x1ȣ};Kr4v^/x@$-ه\y{P=YJޝŘ7lQWY>XX"9)L݈[V b_,IiD]b)y*4Ѯ7s) d!vghS<6Jyo]5:Ev.˜<ҤgEńCHxY8ɨW^oڽC8P3gH,=t ;+x/ai..yL>u!eB0[!Uѯ0"bvpdImANR$eݟ=3)O8=s$a-1EEK{p;7"`/~ '؛b^G7<*M n/1 s0̩) mߜ=F'heu`9}J@WMX9FhjD%yB1'jd4MPi A<^Ȗ44(|̱/6F1 _AJO"ȞLpʞ n^ZT OAܺw8F({q:yP8+H#xHziCԾ6~3uSE]# y'l4>0@|M gT&xq9ٲc%y}Zߠ|鉓 !Ъ_d)7+,Y!?| ~₝%Sg\ ԺP{ifw0}IZy)ԹC2s6.QwޅpHOTa?}&Xɾ7vTI$ |hb޵{#Qrޓ~St= o9@̸5n2U?{x/ߏ8tF,D>aGk]=(EX=u 4ﱱ*s_I{` pEP+Ap<TVY6%/hdž̭?\9,t{jxMC҄5/e8|G 1P@KS'+}؜cw*`ȏ 8M!g^U( -S"ɾNbj~Pn,ťՓ_6/wў9 Ib/Sw*9D _L!n2ۿ=X?Dp'o֊cE w&n'|QB 1աK'iDn%}(蹓% P%^?de$gf%SW>RZc$?$ 3{Rr ܌踣k}] 3kf;x!g+2+5?JV<@)ݖdřk%KPQy1+2ܾxO ovl-|y|8wxS{k/.bmEG'm%wfgvM%IO{(k !buM穆83֫FUy`]8`P<:꥓mUZs+MF4_}&opFy!rXkD_fXi;=M 9J?L KCU ٴĔe'⻤taSoahBQ>li D߽fxpo3Lp%FQF-<xN5CMȵS+Ϲ[#w`w,"F]x·F&€HD `Db `2Қ,rcx{pTC;7G2 !AHq%c_އ]8"r܉^A \hN> eIt'˗)M`toeHa!B`.Q k8aÓ0 xE[If#˩v8 RՓцoА1QRА| ^! p2Aц^h%h)8Qh~ױc>oyҼh"=]Gh9^*Jܘi(4St"){}xtXCs>[ !HH ? 2F} +_Vg[eB쎅<#>hG 8KLNGG}gٺt;kG@j{ =.P Uߕl`]]8h]lzZ"qw ӸEY [>J}n`Bv+.~zp85gl>lRn8^۵^hOkw7徘_VN͌ tỦxʑQ{UX;-y.lww=y%ǍQ Ӧssx_7:4?a~vSRuyo$֮;.$)iq] jLO#Gʒش@>ҏ2>wSQ`#!8O=/LL{S~ys_F> yq |>~p 25H%e.["aqn2Ԯ "Or' X-!-Z[ 1q1XH|og(UOvEn(e3jy4 gκG"! kx<@)bBqo>kgZ3fl`>_ mac8[HwFx.Ы(IElw?p1s/|]p7y $#xk^~u*x̦:VQZ{W)wd8%]\I(F4(M2-~ OxpvY~YN֔̇)W['yv+og-ܻ55ۼI&ٽW͉O65zrY=t 8dZ[{{_ &SZJTh D"w=NSMA~ys0zKibq o 1Qs|~y}.p^ D24݆ޕGe(y׿bςƾa>S9Q8b@;>;jhrG7׸n+?ǰǪK~sE?Lfku6eJd!/X0HgJ„<7MdYr'Jֿ>/ eB( |Ȅ? oIJFαm/ \&=W! !w[0?V2-)UWhc,u;E'{/"*'XT|s M$!!/f覉q[bJav^ntrQG鎝e]/߿TAe]<ѐ??E2it̜*W$ 'Q9ջ4S&d779M 󗖖B4ss$Y_Қ`$vMIhQ`tz{*P7x`Nr0hVݮ.ff/S*J*_wII02M?^,zWft Ԟ+ KbSߤF@0˽FGlD1Ӂqp{X 3A|ƈ5mƗ{$vUqڏɘA^6wPh('<=9Kk[NldRIS O4*_kh09{fUwij{?̐H cĤkۀXL*pN}KSo} (׃TLt(!=b2pzrSkЏ'nyU㋌1x*[Xi&x>h*mߚZZ pmLq)!@jGqǥgâr%MNqy@ OW3i6TuɾTXfr{\(Y"Ы 5 Ϻ7kݣ t~lS$^\L] `g{qyǥb!c菢gK|wr]@j!oj)@O§-?orƦxjMa`&&e+=Z?`6Oƃ՛dM11re= sR"_/j(ظ.U;OBV.`00EU+F;>D2_8K ٗXZCO j/'"n'ޞ_D* c_`%=F~uY*Ie3H->W>#rUJ25@]&vS-2&NӇ{l,rBxKN&pvZFE`XO4eʱWUHv ?'ʪ[>\\sU@xo|ck$n2^uX>+Wjϳ_6hN2NVY~ǀ0%.Ҙ 1= ?Ǒ y/8G qzbrpAw} |3o؁}y9򊊊3 9kt &ZY W:q 0ClRQ Dx`;bjǹݨIZgCѬDQ\t{@zy[\g)PGɿb0 6=. +$`8H%ߔ} X0ݕ%I -7\;CWv/.##}` HS7 8Њ"|΍d#;8ltpsb2=}|}T s@%:ť%flk@^Fjdsqrreաum3/ׄ8APkTCħcPqR!0*$9$F_מ\x 7ȔJbo.e8=a|ygO(LCb1P@k$ 6%z{0\öߡv[Dc~*_DYD <[| ,ze5^k jˏfy=&@5t i9ݖ-)gt$rpG.vwg[.{A"䕍 2Θ<VUHջ rCփ(J' j0%?\ ! *$]-|@%h?xeYk?:7i[( 繛/8`ꝡK 5 MAXOtr'Ǖa>25Dڏœ7a5mɁ?j ;ä~*VC\+\6 |?ҾS(ݞ*w΄8B!"H򛴆; $;22n Tذ=ם s:a>ڔڀ 6 8H rm%qĂز=)oLO|T܋d҈ ]&/zXkALsߴ 7ocT2,临5/'9|^@EWG J*:ԱZ?(Vܑ@?TſjWO `[&*_YdII=O eB9/Mu{ ЪjjkIG14Oz;JKph4WxeSƏ ]pE (nU9pPt+a޹Xհ;#V5]-%P=:_9mBͱV/d,? OLqy9Z v `rMza{^Y \Jֆ6ǩUh$,*C.|PKS$C@^._Sɡ743؁BuSj$Ҕbɳs(.{6FT3RAv2B P|3?@<zd7A;hWUwK ~Y⏯uXS7]hKIZ<{7ā`9 R ywO(tRhr\x WA4,nH-/ Y)蹢jJݖCp)'4,u_7i[w Ϝ`hi?mxR,atDhYTf+iN10:tG.ZX$B^ SDу^'*|S{owF~8]"SijOuǒX\Q|R,z <ޙŐV%dpkTpiH&5׺<[ X>vekg*]d/+PBuEyˤ KujqVsPL/w Hq9Zu/ۄ^Iɠ<~ -юM5枘"Htz`[Nz_ztFAi3ʞ9MɈD'SaڐU3=?Ҿ=1gEDs4=zcfáx|Kg&<+TI#wَ;BodQo~QөkU)M %ٝʏZ=y3^XhhcL[A\wW_wKt4yo\`LJ#6=Eu>2GQ5k&ag/\Փ Y+62g Ш}ؽ|Vz;B c )h2 qQ5Q2ڌDFDΐG*/Is βiju9.|Q0=/.ëHP݇ۍd)VXsȽ}]&k0 zs5d_ M=s*mL)>&)2[teږP,M5k&miv-'\T}2Jm=Jmݜn/Lߖqh7Qcp,Cv7[KsNHgZ|~T?h+x342G]n7CͤAx1<+%jL,s_,BX(h Q߸㷩V9~TH{~NǪx: QXP6ثAmP0Y:m̤s|痜^ ߩ6_xŅ[fe >1E3Ƽ|AJ-EX^QP)3qu4իWiA 0=wdׯ}#/9ynqsp!loXp5y n!Z'977 :5x0;y Xno6ϧeA}$j_7=5%i^tbUF gxlUa/O%E6wh$oE.-/kͱŀ&T_cǤv}vK"N6 C:@Td$r2tocϙ67GgM Nl|y:aR-\jtsYn=b>@E%"{~3]M.id[Ss e#93r&a"⯄6kL{ɫK?ہm ݉ N15s6'Wvn"a9\{n Y ;&++bHx/ߋuY0*te2^>n]jZn֛} jj2T*2ڼe?dD)=n(Tڞ`K|}e"(T0Kpe!4pp46puWHefIP}ޖjJA477ģ)NW /g<~hбiJror]}OP/J$ >hP3E0^Qi(V>7u.xTް;XlکyjXG hUsݢ!,^{kV}O hڛ[ W"î~* kxsHVwޗ2>vy%Rƾ'4`ͣW-<c .Ǽqg۽=(Ņy97*-Ej7_ Cbuq{|l" ljUSA769ݾ%{V ]σ,<Ϡ-x1߸xL1ceJHDtQi=PuLs}T+c7riJ^rM_f,qXw0s4؋Ooh%ȫ!wCv Og+.^1u(B\{&YQltFݴ xRb%T[5^e!o4MփKQe]=x܃Bl۳EۘU\.gbhh)֍I`dUDQci6J8<"?DMG}rޟ615C/0GOrfdi] /[!<w$lÇ}0wIO#hFL-bP'x},G`FSnZ}W?M;+^aPrI#GJ1B@R_?&+voDqc]a\xlD]H*+1r4o 0ՑHƝon誖ӃdPbugx]ƙaWѹ56u^JMܝir^ nbVA//~ʝ{WerZNMyv4谌=nV,n5YՃg؏wDQ!nX찝5Y(okAraOĭ ʫtK4MPHz׋fHA~ ~~po~ᅰEΩ<fWA@/`飾AI?J*g2=Kw-v]tЩ^tGQޟ~b{f`ڈ.a͊lRҶ.B8NP6R3$q}L,AbJޮ#_Ϭѣ[K j_NۂVl;=>曜 6M&+ݔ.8ޥcn N3cՎʋ[5DɽvY=\g 2 .jdMq|tlLF읅*NZhGec8g>vW*P%D֝mF"$-dž3#Sމ6twnR&~qTll^ JXݟƏ9q+$ݩQBrP"-q\r[Wn7•.^|onv$Ҧqw&h~h/1syܴx¥ vEA*-1׾ﻹvd'{^Z7E}v+tS̉L0fT[F06lcߧ>xb6B& I~Ny(c V^!6FlMyMA'[ʅI粲:gХ+_&G%x'0,E5G[s@&m[yma~\|o<-"'wGcNnbs 񩬰o})G!H RŽw#tgtK<aJXǎ# rk%fRvd)8 Qa$|V|b-=C5|{/ڔOAW0c~U K4-~r53t;eT1>V?D" ί᜚Tu(| r JΙS-A&O}.y=mzGܠ`SiKvDD "Wԭ,`^TY4zt=(/:Wߏ$ #ue L"I}GJe20;,>>[ y쒣w+7+ 5||a]`Њa'viٗOԬ]k6WС0Y/*wGX^P(%&5+ xSMu[Jha*ۑDHʾrr D @sIJ=۽(9A ZZD{V&L..P&Q˜r)L?A|=a>!84>c3A9-¹'cQNs'J VAK9 Μd9n$%Ck6!82XMfa˄Fcz`a-5RYOt DtBmF4"sk%̬c) dnCJ󟒏ڀx!q7 ݃OgH*N۠7x*d>(x|âQ/Ƅl2sBgctx@DLz{Oc}s?d^ncЄ&Yz-i K\ [.t+^ zR ׼ WjSGcXCtWֱw`KYϯO7ϟ%:} em r4@}` j$qaʹ֑ag/o 2ӛ 9Co&✊ Y"U0W]2))Fe" ]\2Lciu~qଁx=28!m0V8}oTve3Tx uƥ~ ր Sxr%& =X]?S]Y F Z>Co @*\*|.]SVL /qT>#I8!ݏ&vl6e pXKt(U>;cfPԒP0o|&FIWtk{i0< atV-JːT4[9CNWd s ?,}GI!Y`͝BNp^C ǤOH#Jzk\^s=|pgc;RՕTmkX* 1^zrJF$NeͰ-jM>U] |cUGm>}*9,AwYZW>a>|6w20VԟԹ!O'Ė\Qx}A9JS$.1v9mrQ_:'vAv2޳@΁Z^7$M ҏZsoiHJLq@eTsr*>kҸ746RpdrKNv~H"qQC"۞Uf t Yc3L+׿> F0z9# Tm,[vm3msLB?m^tEE%A7rv' RٻdHx>D~E>.?`8 B): U=^FaW[V%MQgf%\^51/e$%c*ݑՌ/3uH@3Ey&HFu7W1>äqD?/Q^ղ% ]~S" twJcp6}]\M0MpLQwz)x)qD\5BŪY2R;({?Kw:m%9%+_PŎw: +VcwF=S͍k Ӈe"Q_K F m{tMq-!j Ke'g08|`,z!065{ꇱ?A |M8aWa?jmo4T{i^5x9oFVtvnȃ59[NùVQ_rx.Ծ{xu 5j_:JSyy.ѕ/^11[m\7v钰/)aeo'i۶:QtE+C 6ݩ\vj.?u9dw6/~OD5/ax"\N PՠwyC~m~tjpUq5EiVVi] =l r;Fdg΁yXk`EG1SNN GF:t(lD='+ڗW;ek1F r\u-6㌡NE,]Gb Lb;lEbai(Ԋo~G{K9᪂j Ϋҍa]g?#h=n WS|9ZiT$U ;P7v N0g)TqnHT(ٜZP 33YnuhUnJ>dfd.Tc9ͥݓ-s׎ezo]yuCZa{v "SIne,>aXIّH.{Duxu Nz+(Zr*wfr;Uut@c/drsvbˢEsKM\s mT?bW_H4g|SAWzkbAtCY| w; jrQ26ddF5ǷjQ~2S|Eדl1]7G2Gv -"%K!`-pĸu늈>FmD_]d ]A<̱-8ڳ2q&%~9rA=Xjiz|pYz9"L0 Rvޥ~=.r゜?l]xF*mDR}GU't?W;/h$AʔS8UiC./"WȮe/ysmWQV8UХ,F5Lut?9깙~GIX޲ Y9B~[+]Qгa}vͻһ(cq- zA\Ĝ^$׸so"Rۻ\rqiȋJt+&0O-х1F'w)=iNbj wY"\~k,9HUxgx kU?+hL<.= UK }:/=[le)bc, kT=8u?jO %*yüSWֵ|cK^Y|"q6U_j]N(}GDd>7;Ec\@=bwtErBi0\$ G">=riŭ4?Q6IjrCnr &ϩ&G8;a5nV Gr'EFu>bE 8 roT!X8o[Tb =ꄇZ֖kM%2o1gݻp_8EuQ[ NYF_$?$9csםuM5XsBCFٻBۼ7'X !.$iЩK)aPYܣm~bhCɴ.a ,frus"}ʹ-Iw@ ?&07mۧ{d LeVݑ{n}dʉ1+k#Iw1.ܾ{Qjٝ"Ay\Be9Fu9zM4—;>E> MOq-gD 8'g޼İ uNo.N@PJYtRZ 5Ƣ=Y=} f[ 擓TٌґqGz>RD~f-^VWLw7rz`ij\9dSTC8ꛟmskSnp٠K&J Q.$[z H%K)*W(FJ#}ଯsYV' KbX=98ג?s"g% mOYdW") vUm"̭B> `R-{/`dA~޻ߪs>[C?͡M##.~<(=DDDZ\Ȉ. GC/h?pznj?.9*7cN Ύ}`%ɍ+,GvZ_ b rVE?-ebQlo$v950BhD*cɪMZxĺDAGdY՟(݈WEerHOqN*Iq'v? !թmL{ _$.ʹ%~LkQ,@3nΦTJܽȺf߹u ҡ^/ <]n+V䨫WdILu aInB2qyJj:YG=dZX"7?ylĹ{RnQe^{:1f3.S[V~ZtJEuwpT^`ݮṂ[r[a_̢%}^7ϳj#._Xr*/a(< /,TSgvͰ6 ̳DՋMj4K'*4xt) =-(+7,Pv6sw,@ٷ+זFeLw6$iVFdDوWSﰵ `[8Y@wN|[[ĕ2Kz6űpQ- -^e\ կY_r>Y !JuF˰8 LF$b4T7^fjy#yPx/IUۡ;N Q\[|BZ2]"@JL O$,>2a}-[cVoȉMfc>!yF sneJ~{vVyƍ5ꑕ\iv $t|U 7o' Y)f,f /nʞ[,.T2N}x̌m͍^+l/ӕ+[%2RAg0 7+|9vk]JYmB JҨ( w"ᤝ <p!?0:zq7ʍE\j[Ec,):<'38{AH4F׹'_1댷*K}*YQP|l Xʯzm2yA$u>EۊgA,KR[1 ^%ž3کuxRM&CN,}Y;cTShabPڡ¦uOyCb s\]2oMar󕫚xgmdkfTv"]zb?lKp-C Pf7؞OI Ylb@,Ϡ h.=S,KP w^f rݰ\}XYtqP^NSNSgDB5aMk$;yk#= ղb3fBrO٥RLL;},nէ4f|BFO;xGx l 5e儐+,ŗd UƋy쉴Ǭ/fH%װ(ƾ= A]v(2Y PW?F*h`RR&K6cgWYV9^ŋp/Dhj5 2"<=KVj7 >)ݼL05잩|_P~kXj;g?F京ev}1K K߻'q@iD3;W-/l&zr3+@HL |N5dۊuE?tUhc/ %ə Z ʕ C[ Xv =dǻgibR <DMY^U1|_i>29UA[,WuM1Y/ۙk_[%7rU yD}7G*'<}h`'L5((hTӝ3W:$ ʿ1+ɏ1ץv,]0̰Il _z}jrHS$ǤHe¡7~X;AT,t+3Y{WpNβ,c%sgin\9?ˍD"2IxtI eA)TCv4[d뻹vT}Ʌ{eJ./^<++6R$4[;>t 㲹DJWv=4b}Øs+GWFTM4(y <Ť7 ;,Xu5O0pkv2]wsRV[m*"Ûσ뚢z*o$8Y-TVy lT茦<_a&JćΜ?諾BVXa2Y B7[U+`yPn914|1$| @e޽R#Z~ VeVw"_,Y6nz`x"~Q;r2N~F52'fʕdkaBf4fwSp"[XH HnGBVp7˴M[o ~(,ȉ4浠B}bၸe\x풏E18`]nYWq %K-9Đ;2pZ0|揢JWe}^xa _ӟX3ݾ#xc|0ү6ݥ?⧎Tzg ~*e9+K#r[ &\9R~.ˊ cc$vG׆s/bA<*HV8y2vjnTݯ䞣9@{}q| oIiS)y#@jT*#}-Isge^SLt.辣!U{e:@ 操 8a>sbͥX@A&ygDfuљcZB0oiL!K`[yVfZKV4Sc3􁚦%!{+E?sӹ6b]hQwG O58rF'$^NJgKݣMtkİ/"L4zwǍivOSp e2غYsB.9P*|#:^==ٺ): :%Kv7ٴD.'mם띏1rA%-61~uqoѐUU2_]S(ڐ\Xf$rXLװD( Y*֔Gq;E1j^ǜOiz} 6uW?ߣTRlh:;߿atjaF]9{G8Jg)mi}o?J+Z}2&ݞF{sS *:ï?Ki"<[0O`4 UU*lxhrEF@$[~R3o-hSZ7qP|thB+~FCCk&m]3da"T߸9^C#B h$DgPk RKGzbX-AzmsԴfcu q-E"9>=R' 3mJfuWG[J^*05^eUvkVUg*LN;<@ۺ.AUn5}~PWnfe0_9K ncI-Z[)-6ƪH'OmxWBףȓ@}U2|mx|SXck]9S$#_ڥiSI~`aNn"ʻWLyOMK+N!O*O0J?6'µKtrT;W>gc[?q%V$ن4SJ'+hpl1*;)V~ D{ ~`zW1Tڏ)G1TٺsUs6/GV>$>FKO`q Y aEs _d%k?tow}ajJAɒS-^7׾F|ί?2}s-,j%IJym ̚L>eB)VͽK&'S 7 k_TKOS͇7ǾO|>#F6Y1 RîyW]P>|[cWhL;6;"ܘ_S2O51Z3A c9/NMDN̫׺͑*qpC&Kb?=1\7zmߣ$z*̖S]<~$ZbtyD#g!>Rd<jJVɌVZo. J0InϽMЋUx*]xpy*(y\rf(cMAv}UЏf&XtjQ9ӓ6&\;I4Τ٭(@)8g/,sH6\Y +Q⊐}KkR(i<4"\3Lm.Tsr[Ԛ 7W (ozJ$OQ̪?-tYf 'ZMtN!Ջa4J9[~h%\V6 Uruj{u@og]vdL-UH~OU攜0A#XDSGT̮MPN,B[A}yk$cm惔f/{ 8ML̞,.wP(۶wNĮ-"w~|uU,_|{dri'5Q{1b&ffshIQzDR:# &|٪%䑽"55,k Ub,nKƬb!*MVWX#(_ጯSL"6eiU?`HZ^jS-3_:AB#&sP$ػp>/V)tDO qhl(uo'+O3sY7wG)l0ã,٢}y0`a ı1 V鱄qPXH@x]a:|(oly(ҀRFҹixl#/VTv, "F,B4;φ"efTj"o%+'qVʡSywkJ6}9fݛDYC֢%nNZf鱟%^VTNXzD>5-A@,ժ ~* F/N:2e2o 6w:D1OΟ/h u#eƇCԘm)wշɞe;Bvwr6?y0.Ki\OA 5ۣ|Z pk@i5Ї@ՂS}s_+7GSgo5D9 QӜ2T&ϴ؋"y Qxe·he;5A}5h`P L|mE&9QUA;>0' :1)%jď0R0&" `ћ3O( ΤIK7O+'x\^b;VOR.D"v~)/т\1UNwTޝVJY~Xijk~:: ؐWv*O.>KA)DWfS/MÒ2HS;WWWUuOYfuS#q-꯲wx&-@?Xn5佷'g vxG CyRI2@ ۶&骩S9{{?篫R"BOײT4e^R&{{l|gnTs|^{qvROlNOQ"99Oc_"qs(:m0z֦)XED/l=Wg*z>l{Q,lsm5))&I~'Kz󐱼6}{ЏN{?|ܸ=*O!N#Ł;c-tW7.ɮL}YV;G7`I {Rn1/1q'DM1c>EJJ$K'ymdaakrzUUW ggX|ZDԻtEހәUQa]% r7^&jw8nޑ:Eֽٶ$՞h5 DZpa['_L \7{zQ4HU76rTx:mZK|L4RyR5􍰴 ~K>we`Tǻw=>&Pb#[Ez@,w?mu0XȪ@3(TNu&A~QhgړS8{OuS&y'7,mM-U8EZ l tؘ ͐^r3K~lU }$-VNtA_,bT/;2C8?+Х@Ȕy~ܦNR{Ksume3ES]¾@Pa#Qw?l؞?FxAyV]i"zRrig=%|B4/v6 "qA#'ul%lϗJҎ e~Qz˛WۙJQF'lI#_?qe47N ]Im>tKFz&a|/T; ;̥Kwa v|zLPNrחZgQF ON&5k 4'k| Sjn״l)PN5./1_dؚNh}M|auv-'? 0jSѸ|5N{#ϯ_yMKRA rߒ{ˣuՒ0>/枴!G۹aI@K6}T3>1=Ic2l"e$doxs{bWc`eIѝ2ȼ|ie~Kp!y̨jזCf*tq/68e8VZ2k3WZ&z8|JaF5߽2/yei`bPzM'O(릫сk^;?N=xM?'lWNs1)JjjZ9臗S4|ML7M|g;U'b:C.[oWyl H-A2J'/_:u SQIęR-UncaxԜoNZڑ+ q] vyIܰy{;6ҜNv*eh8G {xB C-.%o^T_4rbn&OTj5y[q{)XAB[R4 |nO>[;WܔAW:].>gm(p[X[;abv鰝i;=A$ rnxlenjHZl.er33ajpj07AT[xY0鼥W46tsfX 7?-3]JLo)waϿM=n璸1\* w{2  LUe )?K)e=WKSD"ϡH_SuK 3Ə}qd5x]%z3yϛ(Xd &BYMrK4~'a/ӷgtg0FmMg;~Ƈ<7¡Ǣ~Tص^,GLҗWf iY I_k-;{M2`h>p.Mw] ppnIҴs}7NDIjϣzidD."ث/J~~|r|։嗓d0e:(L}4{O6>i2fb{>0_g˷ GH$KNmmדaP|1@7[j-m'`3ީ%s !1$1 =MUl `wsD>vΤ"ow1bD{?Fi1;rqEts=Zsb3<{lQ:ҫffvX~#^6(i|L7 7j;16oWW ?se? ;(?Pzy}cI˞Y%*kTZK6싃ڃ2u5ݓq',?BQʟZR8LT~]=BpN*ҲA˳~/SYA7(;3ٹ|5F^լg|k9zmQB;{ mG;ӏ?YM3~q$FX@Bc08'5 _<&ثeS}\xzPC9۹-k0_A+\/TjEDʂ#jb<ucnkX|焺!u3q۝[[IN"%@zV/Wj=!/R >{תMǧnNH> ?9PףܣZn44cDlb nU]ba(Ib~5FGfFNr,5(²hAIJ[$ORsO2m9^\{i:q^"aAFNG ZB)`" A3q(6E^f=HU7IP%g{c3^t`/?EFV*r:S[^lLNI O~.>ab'|'^V!`zPGZw|'/+ :|l%"Qz9QhWt|%˕dGAxXVyXЧ"_Įr8=R8NA[s2&}ӔCkQٳ֫rn%U;񡴪;RԺGuBƄU,qFZ#"˧٧Mg4,|Ҁ*~{[{qKmu2tWaHa e :/\[f?~h%Cs_IgRgv0)Ѓ`V5J&FNȟseoAvDYa?G@:FX88bo>:cNH%;n6eUq/=0 iF@3člcr0v4B:am &k:[sVF뿝cAc0k3TE[;M~rD7U -pcW2* [#{#$Xs5G[[Wŭ͑X#?Yc.ph N0pOc P+G,{fbx  nn1& ʿ3}#"mdd X+iro5{".gVXps{#S`_ׄI {lYG)?~aD#yA𷝣5sk ?T, ^#mG^ZY7MDٜQV([)7v0PTJchl21Gcؗws~.@:SFL0 8`1uĉNg1NH{' ArpE+= (=;` )(4d8^G5~B*(tAkH`7N~ 8.rq4>N8l `3w.gF&@+0/GZ#H#1"v#pמ]QRKo!?Y{W5EbQ搚;6Fd p4(Vk66p9( 4 h.#`d(y4[!YlZDٛ߾}byvj3')pÉM Բ] 70}mW^=D&h?U\ g, ` hyp @(J S B =hP;;xe$}kMА 7rZ!oh#ΈLe?8CǦӠ$hOL,0ΐ 7| ?p{ATWp]}qk7O-u#c .c_@pW# Ծ:`=jӁ<\'[5`߿Q;<΍9灛U 8ZOkb2b{)+i t@Ș°٠؀XQhvh8$;4€%z#g8dD^mMBCþ%kG 1h/MQXG,?};S>3=.U:`lQhPcѸ'L P>\Wh 5C"MUt28!0`qu#A y& )3Gbj4q DMgq_X SsH\f?\ږn} Z%,p$i>J&W*)6;%L>rLoe4 ?7[2l(G"L,~'ӹ]-v*OOc(MPTc#($ AU L lt@)~uD;Y n T-#%o p#́7SP;6` ʹw>b?p!NHF68pPaB`[Aop >sCvs/PO/|_lq[?6FV >8X gs/ퟛ‚mdq,$=ϊnlpY $F CG{ΉAnO?+~;CZ?oM+=11P>O .H4co j᭰0&` `45rp7Bw3h7 ؘB7H4cmmdoh9/,b$&Z *lnugvU< `f(sAu-VQ5CuyzHkah#'뾌D`y)Qu0qY/Bý~?m o#s0RКе??k'{Xqf濎G5?YFywxs0/S`_gAONxߏɪ7V ms }Qe_!x'?%[G}=m?lAq8ensCCÃ/nTD?:]C?5aCk', "(" *'iPTS7TVBa ibx0}'5cpw=E啔GI TE6i'{pX̃X q[~<?XUSRU hP!G7*O뾏'ݸ'lA@S U!762&"hCܓ&Oڿ~Vf_$pD" I߾.9lmd~UڄP?*/Zbjuo7p[~+ (. .\ Au Ka3FrB8ClA9L!.'L< \i Wjc0k0Wg0a񳂿-P֦X k9<\ u8^"µ ?aotЈu@jdbQv =҃NďR؉ٙb j268xz 4A~?؟ܯḺn4v45@5>l83$?+pnI##1fFd~KFTSTWG(H*IIj4ݶP/ 5j,Nx.Vf&F@f Rjj)ɌPZk!@A? xJ_B[=&Cn쟮 EY~N!'6c].-k5m5C6@G`8H-~~LPX5BDE56 _ K : 2 TQSRU7TʎuaTv5u ⿣7*ZM@ yoCJ/ɇ(\oL0vL4t5hG"/Tt4fj!IP_`_Xk]Jb­`d "? F JEC?P@*[AM̑\YT\NTςwA#?+ kq6: c+x(ЪJ*{A:>p_0}7jźC`5$-pMg?AځY,׼-nl 4NTs,H7p@n [: 5QaQn8vD4-#gs(%t]cW0TW b0O(0"d-k _W9;oDM ȟŽ_9A[a7(3&aO_AAe޽/\ڛ_?qprx//"#ksX T\X*BZF55N/?@{pAŎBWk5q_q7b6H{  vP A,,f9JCq/ӀL*'Pxۺ/Ј{YŘpgj 8Ҩ̠a-b4&>x#.=`2?@-נE$Gt,#HpNNnSpr_bkFpZBo٠Vq,X ?b1G{#\ [91vm 0X2aŝV8%%GB~OYtF~\` @B(S?_xFqDnC  ːoLp"3 %m?1c!BopѦĿc" D5sM%!nֱdCaFhsk$w@5׍ψ!pKG1ɡ "mmlb7=E )Ӵ6ɚo,$O_}w/2fbEBm qϯl&&5_^.d&*+r(AX@e_yC)n -Da+A T\ b5 & Ao9B5 ! &{ׯ;`!tF utpD;Bx%A8/k 1&+2^Tuf?B!~Ql Ow LLFF,_m~™LXpIL.,>uXį{s L'Fbw= jKMC\TNQ ȼqc_ F.(F`.(Z?5AM!a(}m$I>E$$ic`TBetY%qqefdB]kTwFF/2-#=ͤ su*? 3=VQe̼]疡~B˛t7XbA4ŸUiCY`ZY"&e U"YȼZ?]}] Ԃ4HjG gzT4@:[|!Ɱ2opdD^2 [l m "@$DXD=C! kz' !0Ɲ3Oa <2jD\ܮqi7r%e8ioeu`z„.aat}`IH:g0=mǃUrZgBL.h方}UR.[؀s؆sV= oư~X6%~ I2 S ?+1Zz Yw.|z:_ap6Ggu:HtZGvNNܵSs8HǬ)l )gN89Z}(k+AX !,;T;iDbg+{T|/0A,X`LBKbvUf3Q ǩ;LϹ^ JF ҩmfvSor%M{d/CkQG c Tw7ѽ͜K4ڠ;b-y-qyB|˒eze Z#KRވxgiRyX_QhD-E0knP@a4Ln@G7@;Tܯ|~CE/Q؁jnAj%zm,@?fbV%'rccswL0fwAbOqg#QswY~'(dEjHW~)y!z#kmO` =HZLOSVMklHa)CRM̎ m^)4 ]Nu9BgsM:l³VXTfD㑡{e֮`hiYEv4C =K)$naY֝5;))W[^:֦2_1C A-sAtA퐮v:0ga8wN̚hP48ΡP8Bvc/wv6u0$͵'da?m 0ƒq2s+z4G7g73fB:3ޯךq/0 m܇u< ݏ;+QVkD7yx/ i't8t ?1lj3Y,Bq<p0Ea@Z6Pg9oL&cnCPG_~ZU=3dG [ s87l LdK9^$b9 &ڈX5LG~Pb+ւ98 ۧ 8yKifVa&XNLV5h/ix(r HU+dԶR9B2$SeͽbJ^C;''{ǧ(j/ߕJ~m%Ǹ+*ioP*)YE BOɁ?MGl#B<y{^'2hA DǏM^9gD`rFST4( Yl4z!1'm妠,3Rz 5@!|yzs>wW&‘]j:}3?J$._x/ >U#9V߻`oӀUfgK'SdPw SG𞏇@TEфZ11te Ui:SZ1Vx$bYߞ S(_Y"xvs읖o?cıA;%d\o>z{| dLQBL XYL{2=Uk5qÚG˭7?T6X#CNkEn,ׂ&dcN'Д>:UZ?f#`}QCtyËX5:a#DZS[zɕNqovɦg&kivSHnALaU@zaLEb* +X? 'S ?Hx}΍̂WlG%X3mxĆ@K|7Q h}L_>ySO T:Tu/[p*EThxԌHwS&" =sZBVl_PkR:) 7jb,E-Z*7?K3?څ/Zm6ҎWz9&#;[ >ւ "yqp| IҠ}aFvGM>"4l g]`VVm+>jU#^6?* `)7eD%V |"x9 i :/Y@'+y;>~4QL.#4WZ wb*Q^BN%_ DžøN]MKbm%868WL\.21:̷P.`kQ'[bz~/VrCnU^_' ]I3jiPsmfOݾpH-@UߵeOy^hkIFFыP&cn3$L y/㋖["gMam)Ton C-qY F[~Ѭ^iLm}@ k*؍b oX-ѿg Wjnx=Z|ݮc< JG'r+yrIPұYN="\@FWwIuLz _ϝ 7"bk/e5v ><~ѧʙB 5-VwҰvS^qHW(x99;|10(#3'O|7gh]2&ޏY3 b֑;Vߵ/#(Zz=; 6E-t>xMgnM?FݳlY+sXѳ&@5662L(d(fo2] ߦpx5Cs+.(x^KT"t"y]v2oN,O1K 6M/jGUQ725M;c{WݨE@h [Pи "2U'Ss3'9ڕtvDQ~JOO9?2Teƍ}'C_rNpۣKL2Rx葉\$N^!9UnGvxv%.fWSÆ>Xm4}@z'X/UrRk[i앿i֍[ Qxa7 g:`9~܆&FG<7ӂb緵lsfGԽYYWoہݤvjnέlѿZq5j0\=İ yOl2@iɚʩ .*{Rebk$T 0,fU7+Ø2q@&BXA]ȣh=$/P*V,{zU'\SǷmw?reER*$QTҗ߅j1My" /. of+m.~:+!ІbFH U)3ۦ"#nfHUX-ťQ\ piO=.UAh8lAYIqFfS4DsR+:H_NpĠ}1jDLm>o͡lQRhQ`IEȻ.+΂B7N}(jEG1p# bl53?.=> :i_tB~S`ů*@fT\ &8 XD&aԡ:d:J^ KH1)[xpU/':@\ﻘEl;2D|jJM +L7AS:v5UTsڃ;/iE`Z8oɆJ|6;oT7ďSο)7FcTPvvm…hn3´r;vl~iLJvw_1^B `)W(msm09ZuYLAG'tg(`9zyh:t} f{.떍Zд8߁\=koz="N%;b=†UOPw/XeL8I ܰj~/.uF FQpX{E(RrjgR77ibDWKւ{"z*҆RD/QY%:`aSBD?@fynV@׭w04Wp Hu\|C,+U MZȍ}n\$A. kq]\8:mF^`oQ_3<T_蔩.Ԛ97=J/-qdyOH6M`KmF KtB2(){[t #ЅmmFLGM`[=Y|U#!j8PwD?u4]=;(=T|{ID !Zw6 C6ߧ4Jphێ؜-]ʷZibW%ďcD}/M Byʸmd6 I(au6~E^dM0r9 bΈ!ZM%Q#d޸1Üfr~b҆7^!+Mqޤ>,x.X;*Vu#ܓU3608L6@*m>Db!C4 JkyGj^ɸ9styo'DE;27ii\2SՔkbu s0h٧SSWLZޞ։Q}@dqw*Vae^[f ˙gkXV+Տ{ ۆLRjGj#O.:f[$q\(&RYk0ߪy}3{^!w~3t!31قͲf:"Dx+n^&[ ޒT;t[ȿ^p9ۛ!8nyż[$"otn]cc^nAttEHNUWaKl[$ Ȇj*W# s] tL sc: "vx31EZy+!geJ c&ǂu[PL.!bb4x|ZYFXo 81Bj(of;E>]i~q8VVh|)v&86&gk<%4 hYEER,ޭI1ȃ1RbaѾ^]j<ͣFme.#%UBȴ!Mj!n[ȋg}yBR**7s*Fܯ* d!F1E+T})%kYi_궚+̂9쩥¶trk}tڙvdlUsY3'O:s3O%qnCݴj0ƜGG aEhYnltӢ/l*V&Z sWG=zj=xw|yng9B8yS8ȍ9q?gi}G 0As8V_7f } 5 ?FêfpC#v"#mn9Kٌڈ #?M$ hbN"M 6k lC\)KZkjLo zg T0YKJ54i5IU$ ȵ{6 ȄHॱ<7 %(՚|gN0\ hϦ[X/{jf&zVgM:3zExj"/;I5rH icͼLRw4;NqjI.(Df;K7-exnȆҽuOiaqcV#-G7g̙6LK%t(겉mM;$#I^fEJʱf7f\6c)r󌭹B_z5:Ex,U6ه0 DCXung+إriup'?M] \TuTi qHsV"\lqĻ$RCb,sgc=ƃ Bd髳ݽ{'J܈&Q< \";v<羰FwN7(~J[('eL{lnM*S:"YJ[-xZZJ\ 1pCӝ:hP`S-I-ZUo^?4PzCQ5%ڵfc; [DV*W5?  n8Dfpsxv69mtyBiPK$'O̙P/v^L>l<>@Ӟp錣?^L$)0LT`k!v\3'f(#ւ÷i;oe〇 ʄ_*S~<YeYFTS6+_i)3*tj3ςO{=r9#Y|W/~@M~6gg<1܉|]Ѩ;0N8;ф G zahJTGYh|(Lc{˨UV VJ71F*$zI^6gޠfFNgPW 5_"`0gjNiB՜UE Gz9^{+{p}9|y䓒 <4ӵ۴k3XZЀ>@}7Ƴ*\mWn$yQ-r.ɼ*ɽ,]gE(?<8zz`_CWo_sI4 d^ȳErݙk6z#i&1O_*) ՂLUyV+]m>C_iءaxY/+‡VӀ1 X&Ā+,B3E؋Z5~O3n ~i.Tь 'ȱ KpՏfht}შ rwp>SZQ !)#|;YYTDedWr:F䦌M hph>0OfKMu Gl0 ~RTsMpl ݞ grfD(A]H$V9LM dfӂW-#kbXFDҞyI*!T /Y+Iaxqt|ofp>a\h lG;tf|.4c`L) ǢYiNi>fKaJc%,*ٴr[+R+l$X֠C`A /^ql<Ù5uXt(G PdwV2xmȊnA( s0rɄ$K- D%6 RC}bԴlHE&.JF|9!kw TM@oF>ftu# +Lϩ-o^g!}ᰠypdWIהi;c&:y1*# qAp hQP "XKQ*jH¸aQ#eIL\Ƈ }E;-{sQZ"h۔w 1)|ҶU5"wn"+VRɻ ص[hj#{7AZP#Z[Iz; Xox:#~ymU{Qxv^-‰"A :.YLJ7;d{-%3 =،{nÿ|]M'y.S \֠UӀc3ԣ8 ЍA8tn :oZ2nOcv؞L&]i,J4\In`wޝ<kNM֡ .-|$38=:XkiN$ Jw~K'Ctg\BD fl" 8R !bQs3sZ j*ԽwFITdQSMက8==zBu13ţKƥ#*& W4FX9!| <$`̆/JF‡$1xH2Fx|W~D?u]/8y\Ĩ$C6Ĉ\DGQ=鄃hq4h8%-#@6kqꔪ@-華oBJ&QC*3ᯈ}̙P#4EFqQ<MOb3xSQO`pկy0GUҦypqGp+ ^Ivpg;}Q?)U&!&n ZEjN&VC's +4&sk 66†t7hڇ#3;̝k|KDglUnD93Ysx [sȜLcZlƔ Cڥw8ښ͏|$6PX"d$6h6G6 # LVz灝ƾ|GE_]i`|E/'#21\5wx؞J!PnC(<&F^pr`$xs|npo~髣89<[p"9[]Zwo ovy9|~vwe O#SZ߃z/{_g/OY Ă;oN`Xhckig#8ysp@i(~`w>Öwq0;yGc*&c=.wO%XG3>>?٫;'8/\]qD@=.GP =s#9N.-^C lw޾nm=~?O`_!Z~Na1Y4oaL#w;M6Yx>?g5=>#fUdzg뎻3 N5¥oa2:(^ p*ucv 'pJ)7.Im`[3 1sRo`n=~ܠDI0OI|`8OkPƂx`׀[ITpuHT&0j'WFuS)zLһ$AąAR'j5ztTY42i$kϥa `J( ( ; WV-S `& XKxDQ2Nܧnِ&˰ۇsq둖LI=t><4kF_'Qx31Dý_F.*nCSޣfHcOr(8KjAԍ1?qM< P=Zp604$Uj0P \Ç֏ IKpR8= q>pfjWS$#3frhiah<3$A,L2D̵s> ,9%ZL?ZȪR*ɈC.UF8ؑ $\_1ޘAXj룟k.~v<;zG}s p@"tT 9)|qVV:Od|2]3[Zx/lRc5D!qưuusOG<#gXrǯyuwK-9lh G `E(I`3jdi<^)LIIC[2p1:4>դ{6J``Ȓ05-0Jִs`$l|] A͑@e  (0ЍĀΖ#3D)U C߰M#bKeKstK+b{:|Bj13{_ aBO3`1 h:ш\#ovݯW0#fS D M5y-XTe@NZN79I%v9܁*A[jSh)&/kgn} >P".Y.5.w2Q<Ƀ e{afCDPfD'yݛ9P0JV-氽9]tD..ڧL!n f1:uh%ICTw•)EGuを̀'8jx^ O0<,&`_Qb|9b$``Kh|Ҏcf'ώޞIGrF&KZD7vF7*Fpn% Gl~4Fg %I1DZd,2_cueuwŁ|Dl=z|lDqf<G' IlJ{r(e拼/)eý_烝TƵxd/r0 R#$(aQ"qJsBr< lVL!VU|Y 1zwJBǼ1ZǼ$1,G6-JC9!p.ֶjSM'v!PD31a\a> \s&ɢ"/ zcק>+伭J< Y`-8`ʹZ\zkdx3M^&W ţ 䶲ۋWynf){9Z osKчзp5) ]qSx$X= #؅c8d3E4^š8}q(.CE0X|,m Ϫ(Y;Ԟ(s/sOaD8!ӧOY2ᅩk%| xP^&>bJ:3WdP7ݪ( ~A l{e[ˉ*zV䥙uܥ, *_iC ?-Tb>Nn,r&Gl^y^O_}2v. {0\%s{hDՈ rNaǃW*u`zlD^!D }ߍ4z Iovj`.Q݄'O  r0N>e$lm5$Kjm R0{> ;r$^ғWo?Vjtֈe'D80 Q"]ȔHHi,|c9V7Ѐ @4aZjS,1p Zy#EBPo8Q0m?DIGXB+FfSz{hl~E1VCʐ(v V^%)p6^ܳ#M|Ե*~)nA@!FðiP!b/Rp{,r)MqbyR#U7 ,+PZBɐ1Z:CΚX7Z,H:h{#;`0A)1v{szMy3&QdO[Zh4jpܹZYB(Z΄."}J(i֏ր`407ho |>c&ѳȓ/B9;@Ze|z`|&s4(P1E*K@Ϊu~6)4y-^sڈI&h8:KD%m>K}Sܥ)c!jukdd#As[A4a5 {@Uddп t 5&ƙi5/]Mȑ&,e0:HRZ+/_I` b&k ל1 w2s < d@Ȧqh!.=ՓJ5:C>O>5#8u r[Iikx0^#PhݤQ.Dd/xQ:6h;;˒o:[Fܞp>PQ479'|IŪlp RfIèx9EZ3kl˕2ڀ6ߐ6?I/[\}2 0;Ď5Īv,.@xfQϨM&U? KZ3F]a.Y!8g~i񓷯 J*ɵp,V8.SGJIRx];Sf*/xtJ\5(Cva;M dia'4/ع"TžxS 鿐*3%E="gj 6 0EE+6)B5V5$[ᵁ7O=!hev\󒑦 MeA04GVֈ $eQ0@9)vi0ǁn oQE]ZA3R羓M}#7ULV<\Y J}C {%I)i_&r7E ~?4%*c7+z>rz䠆c] Ӹ¥GdHSI@Oмen.Uv{ Q{4<2oJSbW]E3Km{ӧAWĀ'Ux&\%4]/sh6;w(AnOiDׂ y5^XUЎScRZYуv& Y(D"؊4B)J!Ɓ yOM3DLc0Ds>Ch$+qTB:זI|OtlR~d~HO?XhIM,,a[N{FoR5=Ukg ~(i2QWS5rK- ]zgeT 8)[ -Ek+*O&ոtiEU[t꯸|}q5Cg}[eYEuuo#3!s&`L)S2?Âb&y(e+F-lh ҔyZ~. Ee)j5SXzpp22wĸtOg?o*5F5~}ʠ7X.kRϽh%OUѫic؟zhq4d=^ut_/mǑ٪J ٛڈE&|t[I!˫ý_* ZWl1]KMK[3nWGYrv2u.ůz/m|Kh"c4BB5/g'ȼ7-B ׂlka0V;˾ eZDy U.OiI,]s͵1HK v46+^ 驢8m(FgHQtN LjT/EA\14 t+-. ~a}ڑ@Xh},e!e$ 2Z $Djq KĝG )G #}f.^L[@ulϼ`ӑ@\F/ؙP25S>J=c6[zt&-̱,Roѷ}RCK7&jVfՑuEg Xe3EhFEiQ#[s2ş+25{ Yho[z2AAfFk/;Yu.ޜuWkTXe.-w̲Q%%Sֲm`P_UC&!1[g6îKӉ[R1;" B4;ZW}Y5m"Żi)t;N,Vnc  =@AēNZsD*d?1;; L}lܪ_Ժk@9/ʖXP vg77za%[EDIar ^ʬBy8o"qws27]ТdRqw)OOOO*|a,5(rpwS4%|H~+¥цR4j EFj}ӯ||MIaR'LI3fƂF[}YV&BZUMv_3EMSp!bW_L*0MX"*p&hzT/Q Tٍc)Hx&a bqTF@u{.On!')،k295N u2r^$8c{S)f;ư+alxGT2ϓP8جe,r9[PxJl~fR(G0JS4l" ^/"NTn0Y0P|`IVvļ$"Hhb?4T)D ʺH|lPy>"zQ%5Vv;o[^k[.,;i( &jpusZ; cu`,z/Qh1Z==nGV(,l'guUYj ,z2 v\JaVuW>:V6{#iॿ`D!ݰ8)C:acGNq"ml9Ծ bb#![Db2`UEccξsT[윴{Aa\;?ims3骚xԀ}W?\j3G,iî&K܆;MѼMISMvw:rg۩Vtګح3 òd#eJ{!{rlW/bt7e3E⸹xxI$Br(f^=m5WHM!d>. uS';?{nW";$&n2,cT2`)sk˃`Ȝ[#rxXAFל)K2`M@((EAۧ'+1$SJ B9 hO=\/:E'$ Z5k`@-hfnʕs Xܝ,2{l:6jtg:N-%˹[7V†3C֦x Z*` v..lԺyN.mr"gAW޶R1Àc { 璥#|R0R yMXlʲXke/OHalj^W +ϳQtX"824Fl+2.[뺎!Hetz9%\7m,ƻ،-ړt]9K,w@"}2䄉ɺXL|7[EUD,ږ`[Cæ6Z3{Š o/­pe[󌅄t2#3RBqń_ݲ"ؒ?e|&sko !" bbQs +`Uȝ*#;$(O]NiP(L*<}!Rjd"rm(hӚ'6 6jfPa͚F<s9Y/涮*ߧYi4AjS8%%jfqWL$J(OʍۇRq){5GO8OgUƔ&R%_qpƊ?Gŀ` @YqHmg.!ѭ3PfYMN߼oRk޶ Yh#G6 ' i*H *~?%p9 @1ULӰ'q$>K]@EHQxek&)𼳨^fvy5|mZq|MӃai#kɿi&V|vʜOƳɗgʦ6dz-f <ʑąHf)rD & WcB3E8+iEx(Rd!-Q1RH=h8wvV⮺N.]\7j敱g?$leJf$ jlp6_JM/Zy`P־:U__F 9sF ?GiplZR{LoK [VQJH=,{GTii5W&ö*ם+Jﶃ:34cR6ܚX}ٵtPu"Z, 9mj2)ܿ]f+ %;aGzbV3SeICQ{Hq0o`5MHKt1A)]E6HL2ho̘D} ARHS[rTe@n"A8`. _wu\jXa/ewgiI#Qjۦb-D4ԁmͣ[yDs z6M/6>~0C)v*"ھ|v7VmZD idjCǿa3NMSwf}1Ng?~Q@:0O8YBյ2" #)#tn~$jXk~qM@YJCs&1RAΰɟ [Y~XQۍ}ݴ/'t5tZpՏ;~*$.T@ bVjPR H.y-ߒ[;0]CT )}W YOo ]Y;88Z")yWНOM HXuGg̦޷o)i妰nT ' +653`2{b$vq4%A$׊*'MMc$zԳbQNɸS20 2V.WV6!)%pؐۄNeK#ohER޳9SRp'8Tⷓ4jd njf#"n@i,ը=: o -ȫ]w()̷%lF'u7qd14UHJE櫻>;#ɮhG(voJb!<zmUh%вY㟑ZJ-I Y*$2Wڢxq~N,jwT'CSyMPo:ܱihqkrt?ALwͷ,C'MN/,SI *CVj <fuAnY? ąt{$Xd-u $، b"ʁ(BW4>ٜBRaO  4W1p@G#\k4Xî=ϩo.Q~`yƏbF#a6L6ZZKSՊ0]G9_?72-]4=pm}#W "^_]VP71{_"+^&ڌ3%dH+:=e5%q1/%Qvt^ÝrVwYSUCv. 3>-2dfn93Uk)l^IauH/ jrR8kJHL&c09Sg ׺Vfyն ۾OG\]eqJe,Oɹ 9w:%@`šp^xzHOӂlfob1EJ: "n`Dՠ=:*Ӏup}j4;٢^:crL ӽc#yCxTMCcze囨E2I=uFxTEN3ZB[F"&FU^/+SOV81e24̈3Ӵ2#Zq-F+W~ЉͨzÌeekCG"%јˌ(Œ8֕[j\G|ns؆ 2h8  {YC$bB-Ux&zl!A17|wpzMfjZdDe.>=/TSijlxsH N0"Xb: T$; 8O骱U-M^P N4sJ `19kaR"?p1f ՙTCg64q KPMw)QΰoN1 [x<:g SXuu!%MFUۡ xB#(E89E?:!/)B<ö:Rð~ҊS@&AW?moou!K],>@:ɷMvff R0h,e~gqb}" a(f=G#őC9| 2N{)2 dtmޥGBbKk-4$ J Q 3O)p.NpoBX=ɬhEڬ19dkM^e^t(RſUc3S2MrAAت Āg98n?pϽ?M<{^ί^ YLKܚFu3}Eop/x|(~NʧQ޺R54)8;j -|(MdoS~FC;ʗ޲l;og~y`Cn>no4>avc4IlsaN2UY%s]$6ՍV/[NBbq%K-RDߖ@jژݮvb*bթ p+?ϞsʊFm ]F+y֑zg%c㎉.Z@qzh⡮X%褷lp,ť2P,#,S=#&#L\̌&s,Ey< *AӍKm''H)l牽NOhkq2s)K ؝:13daJxXmR@sF=&Yлd$D1rX)'fo#B?EjSQJ=O%?6)ax`ԋLijaD3yghC62nm u3"ݪ!pNlʤAQϩ%[Գt = d+:glY+p8 ;X$dHoȉMJ?=wtp3>cISe(v.Ɵ f1G[cwLRtʘiY"7ę0?i;0I>E5誃54t0z75AP$8'|`3LR{W{DfVWj?Q۔U#[Qu}C-P2 SjƵ.:2{Q)7EEx6@1Ҳ7͘ͼ!έS=095EeCAԬdmǜφJ8 _EdTQ+M+~TmrQƻ7YjEHCC -r Ql)&E,C,AYUlIU3|8[˝G~㮛VG~kzly5.=s575jxXvj}o.ƘYfBU'YUѡ} LCU0#]$pe+ǼU~\mKV"tSe"!djs!4l^g@AsL4O"ً{g'Go:a*izgdVUJPg{;_sp{xpzo\$(ԗz휼}|D,Wư+ <=Hy'$Npkk7UP⌂ӕ+VN_ 'vugQ$c ƘWPҿ#|ap @.4 CP1p zS49y^X_/v14ҿmFdGVS/ieWjGH"P) H9;YfWUV{yyU6;TiqE3ȎR6oI8 ~#&t%+mO˕3dAڿxx7=0ߗLdlF_%[<2냤yfr3P!azsacISN[av+4n^~pSͮP@ὄ0ԍ&Ę3DaJd )FruQz2hDyTFuQ`1""6i8ET@CK V$ cAMcSӑ)_cp}ciԲ>M~.yeCb㊮NѰ)Ca+ctz!QQ,e |ɐWVl>z~+*9N6'x T<1UJ1f |7<(Vv$o*19͋ {LVL8khxDŽN`f2u3w5xAЦ#HG ##In)3 o@mWK+CI}y@WȖTyYaL)nAk*En 3g:Lݡd@"\iӫ| .rh9A SpSdŢLO܇02kʭn;RUYs\]OefQ;](TtյШ]SUWV@xK 6Y\3Wg{˪:\ši8"핅7Aƚql{ZV VrW!̲/mޝWWk:5A;GW,E®GMc빭G )HJ/w^ƁFddOˑ`$Hm1:PL]´Y8bt:_u~R Q]k_p1 {/PR-L.ϙ",s.> Riۻež11mqfrI*BKLVPy<Ӊj// ~Q-R>@)x~FԾJ>_Q<e`HX N?Rrgw:5HaBhgXyQPփ[(-l>Yڹ]ƆB| reks=;oDdN|rZEg/{IFh"B@u-+d29O9'w&v7˓*hgj~LIk:\}"X+BSw 56XEXvA/d+ uK ?n>|/hD7#+H]qv|TRk:|ĊE0=Wˎ&l^;NE5mv%# %W{|yM%_%ct٠je$A3_Fx2;wXunqLґz=uz3y N,?7Khyݛ+leˠ I?2\q⤚Ce(Mf޹.c֕ ]+]|@gana`V)꜍ {LYb< SfIDU {"BƭLHErn Kc#s"f,ADSR8;y}ul磶sLBY[xeϚb`@4*%f Zmfc.綤w?omldXAֲތJQF_`&A:) !Zk~d_vBvmرX1VeXz6ge+Gasgh^'% WC,>K +Y$Ɋ5U6CE ymĴ^6\F-~6|# b4_A8x4i+}[}fE,tz ng- ŝazs+lB_oV{aBB?xV]Xbٳ>u9EDJs5Y/[@LTmxKUu=+*]ǜmXp_pŨ/n,I6$f8?_i]ݝcQXrE̔q={%4L(kե8]͹ӴeN۔ /9hTQU@"uSZBkUeǖJd)12^A AT_dE ʊJ+V~յ/~7tPv`8E]6+?yY3T}3l prr?%7b(GBƓn:э gP (Z0ؽQ9$;9^!}+ [hQ.gib:M1rӥIxx@y19]Sɍ^;ƿHVTjBJ1/OY~ۍq2rdqW/Y:V2$ˏU jRN/˺f+3Ӻ&=b5T0‘,rm+i l<(cA{WS>ZSqO@wQB~(0ge|J-.@O8qwxp&^V_(7&3K{Ĩ[ZvXtW͵3c*mc^.Sy7B$ًe(%XV2}˻ȋ}-&sWU#xTY_|8`vdhxB3@n?ZE^K:nȵz؋߁d3_,|6/Ou+]Dp if{v٦h(HR\hIJ3V+v"3Ʀ6v]51Fڂ9:+SN#&1*Дi]G黯L1nBRxtd&i AW>S+|>G[FsFFXk(K^MZU5_X+zuKQZFK2h~P?$]7Q%&JikDQS  ǽuփMI:ֵgv %&Ʈ 7_Oc!Qj\ʬc\g 9{g[ o =uMy9LsmY$1PۍFB9j7Pxb&&ĚDQgN28qӰ!]p=k6QC$k&"ˬ(:EBTE~˙+k)pjis`,$glae%&X.ܺs.-  M &甙\ĨTo@imr 0>EhwTF#M Z גsP R&ަ$A푹/NAtfL7mWLVY{ffZj &KqNm5}N0lk$¥{+C 'g0*3vθ[9s8I*a[GKs1C#vQ"\G1D2R:ar.*{. 9#كD>1=\t nh| u5X<ßwwv_l*K^g{2`?vv>63ׯd<&p0*GU6Y 0ĸSF(9ұDE TS4Sc hUx r=K4!1 -pw8sspwJxƎ^h( N3>ńFcP~0% 8NP$ d=WV8*7~L}Bc.$.ȐY Tx"[Fs=`YjTX}|oCĮ~;'x-0\sY1xX)Z4.%oTP0%!7|1bV:$XSx; q$)'boE0?  ـ-#τJ0H3TVwQ4ӑ,}ppMS;$4nߦ6܆c,B/TͬN%tRK+9&vbL=p;͆RV|ڬ?ZC#xN!$Ot0 ZU(CSFfW76r!r qQ%z}ܬޕ[2xWDTwe_VsWs嘙S7y= ,;hJ9c#s~%D<*S`^gCEHytg?9de%neJeQmvʗ[6EBI-`8&3Y<~#/BCog5dyX"!Q6F (eif&t"ݎ4 9.h$l3ʸ%<6f0" عP~D b5qI1,nǘVy.HN^06-*ĹK-jf{*9IP[Xf-]˙p$V'@m)qps:VulГhJ!_!)- oka,^g!)"*h٥vaS(wWtg(|M()$ȃ[SN_җL[Vmx)LV_G..piS_Q/f^HX֡߳iT޸tC$n!,fo#EbÈ'P0K;ڬ~t Zg|INPTBg(a+ {DiO;JʽEetÿczSd UBd6<[<0Tsѣ~FQ%uUOPWEtGOIԶmKHHFg\ߕǁ8.˘ӊG2aN<1Dmk?].@$ ~$ -tIN˶5Iӟ4eܞNP:c,l&n;a 9w[۔=|Vk -ntvf$[%:]=J.D|9Y:C(83xMN%ׂ*8\c=4H *ԈVR ̒abdյ],r'(F?O{PY}hjL&7)P]a|bad z;|>m F6蒎q豦R(-/w @ cd|]'crn?ɗ'i//~ O` ܴ;2_B#KSzYek3t+sYWW7sVڨqT9y [zc}-vy;'c>=I]5<~_-x|~F6BxmӓC- SnGp;>/ݭKzD 1ډ͋:MJ] qOJFp~: L&fQ4b#X l޹{$ٯ1Ξ07x`J .|J+?5#]7ӎ,X~X &qPnFQ&^7a{/. % wnpSoǡ(6e ͗q;k5V` F S0=n%8~g< H$铆bH%3Rm ‘ Z\vJd@ K̹Z*mc2nWJpx؎ɲ@IN;g ;FS7[ !fJ9N [0I[2amiƃM)zI" Qe\#1Cm53 ǢӸ= 6r03ɸ7"k/̌$NL3wTJ/FztB]u#Fd^YB*G<6cJPHjiiȤ`΢8oh~`6_+o"YDnS"QAkz 1[dŨ(t)l_g_dƻcb4a"DVhWmyC2D(5vfvS lcSi4@^'G/N9 O7G?vՂ_O_= ߂߂{swrpT=<: $\pzD}Jk{Pz+xl`o!6 ?{sy{d_C_{{?ÏuqL_`w>Öwq0;k띗{T:b2_^#rt[%z~txz Oj0S[}̊szՅG;ܳ {ۓ=7ݽh 5%Yz: gF[=IfAN?Cc|v{d.44aWFzVA9O{y ng ~K0ָPt.OQ_eڿYis"LDCbQ;1:hu͐Py]'<ܫXյʈBdT=4 ?clȮoU6j)YU>v1ņT6-Uܝ0e/_Uo=;(݊:Ql:'QҐxԲ2b3Y2 o+}<&ټ,}9qxx&h4zQu\d}>D81wGEx+Hy9& U%Qƿ3` k WnFliM+^dw֍!Ė~a4ӊ%xjI `"KՇQh́$O>O) +?GY:HWD^Fj5VZOQCƓ`p"AsX\͋1nP1۽c$Q8VȌsy {l&)[WƎF!ň{Ua4kP~Qgg>&,ǥƋIlSjنjWŕeN$n5Z2~S>fG'kp/T`Xak(4=mQSSwM*ӈ/)ML%ERU9.O13]2{ $g0\ 51S {,*D* ?bz?/;,a*q1՘@8!N3lg7،Xo7  6Wuv+ꪅ ]Kh}Xog]HڛQ[`3i/@X2}@ @&gSqR`&g$L9u NKK3;3-_ Aub@s[}Y&&&m>Ǻ'c0WlRA;p1fX:Aa4"8ҧؙ˽8M_0!xXl `Q1z2ϝ0ZzlئzKz^NgPb˛5b&c1':=?C#X6eзvEfARY n#Apx)\gr<3Pﶋ C#YagHbH!0*Axz*.߷Z_Vm [KMɶ*IQpB Iޮ3B۩Bz)diduKU @ -' 0*M3@\Zz9 KHISz]S8'')a`(n`j P#;Sa4Ln1$u:<7uٯNoIrpj׵I !Sd( SP'M^٨εRRǫ5AIxKL˻ 7aJyv4Žwzc#Sq%vwvzt<- 1DS0'"x]sg%xb{d=(n XNJ)KЂysHSRKy4c%pQN>DHAe`Ώnzg4SZ|:j@xo|cA BPz$Yr$$#qy#~AzET"$7 }W_Q6(iHij.좠m>䰾SH @<F:muy atSrӠhf20޿ZLbUꥰ4:&o*Fjv4$ߡg'Fꝧ$Q8 @NzD Y鹡hf&DZ+ZtF 721 97 l"Lf1fTlMjq+UF|{+շa)F]lURI|e'qp#R8Fh!Zp DHYxx4h`SD9S7'w';NHf@5Jr eo[LO?}0]%c+23`"QFALZΙh*IW'q=O,QI|]` 9Z3G/ |0xhQi;_V&Iƕ2"8bkb0&BkR6U(S5r{jUdQ_8^X/M)י_fLO5L]*Gѷf3.ԁ=ϵ Z$^"+0 m u})/~l-_VmO2S XHVՑM _kM ca U3 Ӕ|&ӜbXT iM@4g0c-B1'| ] \QX#F連)ӆL~`64u^҃6Ur $yr}4z;-Q>wgWպDh(n<X= u:R ]EW` Z!^ I42~w|J>A\ P=z2sG@D6'91J &= 5S 9Wx;Ű kօ> O @MY?:9v[> O*Ӗrf`33U@7z&X/m)PhKðޟq;=w@m֚?ci nXxOIES"e (Y k~li^ڎhG> i&&-mk lVMnYB[hZ-VN "p(67믈,OZƔ~glxj&Zpo8WsHnAAطL-kʽ,[Fh}թGvC_͑ -c)BZQ)G׫_Qݨeh?ho9~bL/V]s*JĐ ,Lr,gTaooE a LmL6X.ڕL970m{*X\ԚejkI© ā(( 1dP3yAVUW1GFޒrK0).6ekU2\o<č $J &.5rFB} CUb";gsLI ji[F,(e/aEYV܀y>  xli>YdL'OÐ4ħasi3y$W&YW3`-O7P)LT!ud ]?%DC'y ^~ÌE㪟*lfb u>-H-Z-ڡLtdpᨦ cDk$*Oʮ|y|befL\nn ZNto! Kv?w,2aq3{ӏUr Iu >*@Yu! YfLiF[E,=zrPlQ8}Ȝ0l IAKk_hP|%60veJ _I:pxtgwԩ±]]O-+^"Oaha/ADdp?m^qf*%sK ǂL 酲aG#c06Ȩ^Ȇ;VSFW[D^E.|J yNr/m^`8\ʁ3R(䥋9Ʀ=9;蕼bl iނ;X^Ch! [ tsNx+Cdh?ktb:10Wn8 ck#`:Ѐ̮m19xA&HAֆ/ `%E11;ۻS!v 1g)gS8ĈmxqN-'^r ޖLDN֪vn|r1Ђ5 a ]0 x` VUx.J^d`{zim]/cˠ?KLHW$򋿖IoIW*W46w,,5mH^ojRU[GꖴN9B2*b$N?]qOf1cG(nOObCqMuz bW}Th h-8o:9ΛUI58wEt_/"8!"b-)sIpH `mx$OnFM=7!U؀Kދ=Z|1ɭ,Bc*(O7RM/`/r] ;͊mhz%[}<?M{ܾk?~XKSZ{[ԯV `#mjm|>[u 67c _7~j6tlFi/*ZS'Q;Lfq4 7Ach0[}ȱu#C-\rJnoܳ]ϔV0Q3ZY]Cn֝F#]!x@meӽD:ʼwVvF&ZuFp^ѯTFM#xF,e0d; Γxڅg }g%Js`:<0|>f@@0 `f^&Yc 1 nAbD iv#y`)a|z#giRֶy.N:L ,1 \؏si>X)8A$ ?M]]]50#/h-Ѩџ `C@#Bo 'lrbx)ѱ,E4t0fAp ?RM kx?a7P0 YʖSj 8% KelHssHFJnEbjƸ) iҦ9SGK P}(IݔѢl]@(͘z͍zh ; <;3 &+3$U@pJN'L(T fEDyEܣS 6A&'_B02 H:khG#ZC3QwxG9)Qdxj?q O%L1uo)h>xIk={דKXcrXfeµ,ykLGuc=]0[s95n FQLI`0m5@QV*MuL.dt+#Fꉥzj-%fU!.LXb5JOqakDŽyLsDŽLpG27k;kpZ>XC6,3$khcxUc(d%D;7JpOE&xrCm5ʘaf !e5QyRHRpV#1mI`>xH`)D+8S%6ضGvYsW=G>Jb$8 m1K@.bR5ɩb\؂1os?M3>{p>"G rIg2-0C?zav(Y*Y:BI~lth#x4HbhX7-ޑ9 tJNΔdGx':HfԹA[|0n0$\lB|Ib?3yn[q Ux\T!qDS't@Af}!DSAi`c-b-,k/@IHٙ28<Y*on8(`_j;@I3 O¼Y.JΛ}_}E]s,ȹӣAcQP0Oo`@>x204fCxݒO+ߘ% yB5xUIW $t1{+!]nN|i6Fp]*MhН~ZĈ "=\|Q>EQg.AXc8Ȇm 00Z ԓ R2O{].u9"Xg'"Kv 90).WCItгrG-^c-Y tA(9 +HX\XPP:U,IL(A:X%xiB*rpB*i^j1,pYz~{T+WQtƏ-V1+3nԹ/`ލ g`drX2 :!Et$ꖮmA|'_27ihe-PY8R3Ϝqmx+HꪁkTWW=JYu FhFp !l.h4듗gk'  Up):vR !rC< G(eU7a`d@Y|FLnI(]"7R0‚oUFZz&MH^fD:gfgudXd[D (Կ$dPfн T5גiWitkyuB`Xq  RvO[d僚QVХյ*[/$X^G Nq:Al>. T&Aa6 j(c 7=}"Ζ2SJhe0޹ |n`9Ay{kB^*Q2CGl7)BL %#o!&RE*~%(ΆyxSs^\ڞ?v 905Z:5 eb5s0(:3|km+y&nii~iO.uht`'DDQjdalVrt&d2#Cxu1ܚuDJ)܄G*H YZtP8">=Za=XHJ 7Rιf GVIC F62E®%#2i#ʰ\覲j!w:\p>P28?YeֶI`2*\W:C?b)|aދЉak*=נH}LG|L#q:~f(P[-{pbi +4(&E I1$p D2(Q>mx 6E;YjOuZ=đ'sk70 Mme͓yGZ2@ `z=/09eOl@EUmzOES \* U]J\'9kf qYn7nϓ-Efb]Ia ԑu9bI  :n42#gk(,]!ex2vXRݣ518yƿ_5+ I܃F0iOV_ͰBcӉhQ5zE5=jcKtx-9Kt\@;}amOdE![/jG xBpVxrhsVvl<뺮lϧ͏VgU#^&UWޜС!U&-oj罳ӳW1xvVPv8BUz U6ZgTxoO_D>ၕۀ6TT4tN~@$x`Uo3NtKQ/Kmzd :g`>[VKՠ\x|znfkC/s~k a;:mB i7N`e*mUELTjȨT yXJ2Bǔ>؅Tp6 UM'K@+Bِn漍AN_aYk8ogd6d?gmoq<0M_ԏx x:ҫ@]{o i ė<&$@M9P 0|Ɯ^5p7%MYu6}[y!fΑ/*ZW ssyW(d~'Je]`GID$jJ*o Kue5 2R-#{ԃdܗ).tiLeOiѠV~0>M85!(nbZfD{9p `4d|F @[ ŽYI1ЂTz]PNC~X ^422S:O/7⒤td tFZ cph y4;Mqqx0ؐ~4/n<[q1)A[M9(La#W1"[ XZ_~hlxp^ 9DBN:;>cF"ZoOdI$7,󟭅,DdB]d x{(ю)9ﳇ(D :o2aJzss> 9ʇKd?c-$3! `VcL ð %'O_XH")zՙK$NÛĵC(_:[p<].aQ=\mU_6uSOp>)ݏ,}br9jP3s]{N>;>z{g|X{]{W{Q{~tXqw_ ջr/O8jAS I5 MH0#BT`Ȃ,OruZ$sV7;ǯ3{Mȥ`TÃȪ4>mk!!ΈuW蛆%(̌]zVq^A;e$l> Ux@9y[#5?3z?VR?zҴ~4Ld`֟ =ŭFtvNN2[@ˊӶujJ4zP.g{;_Zۏj7qzO7Y& أler*A<E2 ^G;wNlt'+Ȑ۫[XS6`k,{5jENK;z!H1=o:LsNtFm)V34#C%X(ٯHT\}luosC޵ B* Se*Ϗ͎"NoCP~Cb#NbhE7&Ԁ@lqB:=RG"^2ނB;\g4 $6>|hk5ElU/"-(3x㼼n5'\æ}Ʋ>qKl"ȶzH#k P.ׂuL!g93=B,svT $xk4 <4:Tm`%AEj덞{& ׵w]諭sI"c\ß'h$Ǯ̜br-,1Q OÃtVX*`?Ot,yMc4"*ယpF:8¡'Fn( 4)9gUM|w#&3n2 Pc1LITѡtqTJVdEzTG72{w̐M<?;NeJ[!B<>}וOD̘#psoq*jpFaJbcꬳK ]$O((rq>1yp3 >P(ev[Je/ͩナ7NWc HZ/]4)])aoʽӼ[Ds#SL_T+7Sgd |/q:( 1*̀8D HҜjDPvK$h uBo7eF!O1K`/2H+s(W 񄯸I3B{DxQTJ63Miimdo11 ti:+cn_F`2=?lmYMX+3% :GIṊ@b2BJnq= Jic2"V /#pxndx{rlx_XvKe:\t&T-G3&7*Sk9'.Ffy1ԛD}hY*,~Y$=֊i2neH+6;OW4ˋ3j Xsx%GQxVG6T6R F mʉ0†.M̝ u f}\36bJ'|zCw) &1eX暔N#mVaqhye>9FbZLYN 8?{Ե[v+@H@T[TҐ@$$17ڽޯ{g{ޭ{q Cb3U{=|qYe}Z(.N; 7)3X6n4ioRȭI[9~t 2 M0~!TO>zӋx`WEKNAm|, HQit4H tf~G*ڿr>Xf6F'i^GJsg:;V@PymC^믍GvnG(rz34,4FVx~&*qz_R8At Ut`pzXn(3 yrGyp4: 2_$R ˧ )[V#Q"8Ox@@eKK95t)Θ;K\FmjvdM4KY8=0t`RG@J $Q)͑?tn^8P(87tnwbH\r T:3G`  !&5`cLS4d@ 72/٩Gkj0̲al:gah#L\1zP?Jm@qj[P%*K3¡fpYdzJ{9q9vY}2'ځ3J u+ĺ-dMR=XXM]:A/0w F̓-ЄWJUh5/KAf+8k,d5 EcY|"l~Ƿz hJF.hv~UMt= I5 c6,s*ŧd5~Cr|Y:MF-D#'^ݰ:LIg̪G ~u4a"&I7H)1.sPyap'uM /l[ ..^[(ȈuA|wıcbƦ2rc0|BuJ`]):Ģ"O׭rD^씡d)m KsjDΣՉ]DD)U Ӥ*j 1\ˢ ) lvP0 ]/@rab^eQShz&-._o 87/ R7 &NDeCa-c 0D8Ԅ[6B2D.Z)BݰJl64f~f $;qoL3qi_ZfVD栬f AWQOj}MشNM]w[wM,. xPFa"B#g!t ɗjmk:T?pCjز,i@xn .R 3҆aEx5Tk$pBb)P?%eh|p*[^ bMs4!c:ܰGbu4vNHEm*dJ aZzj)uK$KRp&xf71_=oh?X K>Ss3.bK'gHc7b`nݦe(&D^Fl=Ͷ0)2RrK*-1H 进P@Mvu! YR[M ftcy&hUM[_nˑԋH$vSd]Dyw}3Neh+EĒ |QniӰU?I*Jr#vtĒ3>;1&CD+I8o Y?6.(GXG7]Mޛ@L TUs͛M ,G/<lL@Fn Ȅ-lj=Kyا K(N@I/S°>CZV+l0WaVmUIO2 -'XU ~U*M5BBC) ? ᬆvuQpU]r"4RP /X )gCAGAAjQ\/ 4${TÜLh-2ا٠QKZҁPSv1fjoaAX8#z/3$iԄ ANO-kGϋƜ`&i4 z©Z?xTP )QJ^ZyY7"n:Ζ΅iML;{ófvI̝gP. FGڪ&wJRoebķCn";uĥ a^7ZAZΟ o ]ۘHo~lp pI"NEj ?=gi#L1(f73ɔU%˥u!O'XZeF$шHxī|f_dD^d^d&zI٫/v?K[pn7Cw?3ifB214Jt  串( ^rBw/KT.; h&CŨJa :lhĐ . z5-5Bm!rP ̙Vy~y G?6uf1k5.!pL`~UZa&[ôx 7rr62#W*xux0 ƕ "5ϴ˲ e cs"Ѧq8ׇ-kmm)*oc% "SI&j0jrWHQ<%KwjcUeBǀާpy=Ȭ46Ro 8„ HM8k;@UMeϙ'/c)'C6uG'iS߰6 3U뫍`303txaW*e7|bA)0K^S-;-XAe;Ԙ eg8|7f1ږ1=AZN)+%ZӔ&G?VHh[+yXl%F h5*I9LB8l&m|%W+k(#ݶ,2@ LncWem_fx1hK1만U P/== v卥@mT#*:F+PY*hA`.Gx>8J |]3zA'44?8mG9}A)!#EyXN kYewq Āoe ?lt1vV#0ep9TL֜/Im4R06"qš `[E|4h0uհ0H:d@#5σ6pVX؝Eh C?1 ͩJ6+0V:|8;p`+ qzwX4uHQÙ #>1E2H#![s/]\@Htvts#Q*@ :Ŝ1x`{1 zPhZUӹgf2QR lp6s,.]Hkf㯍.V;:xyHeG4&<ډr"0W-AD650SgҞLƵAIOg8iPC+`S2 CDV 9[=j0@W;u'hT8?,eiBF'17H'wgbqG4BNBt؊<™S߬n5j8TqrJ))<8ڙ-rB˥;(UKu+o)x Hӑ$`Y40ge;yJe2-0ϮU`nַ#-nk|/݅~Ĭ Xd~ї_}!kbUn*{q(>ԪY }&; ra8&bF$|` S蚀ǖQ2B6Sas_mnPܕG=sM2uu1_h ʪST.>]Ott \B̕ Ҽ7!i##׻AUWه ԝZ,Zm=vsŔKbwO1)&͗5ʇ 1"NY j `YjO b/0YDbۅFƑXޤs/ˤ1Ȏn "l-^6`/Fx.)&zjX{ynjViiUIOQ9.tVӄ3v=ed;i ԰`3mw*'cP]xyk] U H5Zs UB4^Xhi-IJE08eq('qF^t74{VNm|bÊ9YɟCO6m42n9>d#a@'[dRą, # %M_(` (̜P~T2 :+iev&B%lah p3v]eL.}(Ad!kZ-=4`yh՛һk5)Sd)pL蟂BdkBe= B>=b`qRnspEv3lJ<,[Xm|t͙*VAB"4glD1dh^,=sQ(y[#J0 X BN:˄g w!rV-+]z?1hXI llm9xFU;pU|"m![!eMHDvs#ԀItַ>7򒁌8rPY1hʷe(ø= AB-7T26sPߑ^"3:2pZ"P菴i;ȧoIIȵ%F,y}wTHwPz'Eu2%3sG+Ɖ<)0Hx".1U$mIp*1c|..heGp\KGgCw&"qzOiGK&կ%Äx7r嘯5\&K44Z *VzGx ݋Vo%"0M;X ~X Ja:"0h>ByM<'*3;^XTbb6i TKDȌ`7 :4hB_w]P GP^I ɉ!h,#yr+Z ;d#o'%2\!Q&g%q@EFRc4(3DFmPDФ4{6)5PU;D IdBVz \45LlUX4)fTUW)yMwKU<I9JD~2ʥTϞFؿ&QV[SM.OQUS?IOohV&RinwjH}t]uJښ9.ebMs=YHD 3j+i354UFTk'6UU7cjez&4MV hlVNh6fferCmU58r|m5}[ܬ^UYW9l 5bIYye%暆z ͍cC,UTR*k`p&667蒇h}5F9";3UUW֒yyBa8k6t|YBc(`KfZ e2.TɩK l$Yɪ$T#a` < 3y Rº&h;Y+$?;dgJV~ZtBhhLHoY(eTwǕ=áhP )-tZrwR/SpCuX[K Ii_MX7!/w ̝TwҒ=A Ʋ .dA}mDTҮ9"ԘGZo!& 1ϯ~~D%I QE<A(ee ?xLN.NTj!"65hOiMMЛ ,,еr ̑Q2Q䱌]1 X`t5-M3k& [)L?"ڀDj=^,eK}E,_9WGcd0nJ1f $ӵR<;.B @E"])J|w+gKY ~>MC:u;cAQw"8c`:rV[&pY`%YGSP)ʂ]$ߋ<ȝAMyJɻPeiDR"ĎY΢Npr/0:OT.7R=E['\L nFmf6 E &H^!}7?{lAK_@O/`"J&638\Rc"30{b3wijR\x 5jBfAd0c\"W|TwhEj,ĮFixjz1&ksCAuYd>݇B7YR" " hj[)oAXN).+>_,1,%8S3vII2qxWG\q,>O+7''G|x<ٞϿ}4-3;zEh~XV5i2aԦ=%h [pk+UN,!!N&Bd4UF%d|Q$3:N2M-JT<szM0LVVx&7o DH5I}ZRK_m/%HfJpVe~Y): "0ʥ$ Rr5Fa*ML4DW5nu3E۬C"ʼc3$=/'Є\Iw:TFqwcl^J9&UV}@F0V#d z~I%" 1T.jG ?A$QEVHDeh0צP ,FcitŤ;Gt37ګӯΦYprp~.eyag ˏnI=A,_H ƿx%I[ӥ־ R"?\'ô``DB1P|lNϾ>=R7HJuð Hl+<6ԓ_oGs$d| Ϭa?8f͝~aZ鱐#%bqlj: z(wQYsɦ􂿨m]&\48v +R8zυ!s|%ۯCrh}>泔}`C, )Z=?9IxH7g҃1oFKNp\,E |;o+ΰ6|L!i41{nG~ ̖Tn?z #3kaC)eàN7 UK7B_XN#с֐!jdG z"a0zd5f̀ģ1[>5hz y QžeF"vA',~QB 3 ++kiv8Lc&2+#ڱ"$9 ٺ\K^>PteFXda냀_Ɇ.lC = {A] Z&}I6TegL]6utؔeACoo)6t)U'dㄏ=i1h)(yty'e? T#iץ6C̃ m `NFx-MU;HM8F! @jCq"Hͣ$3v3B-,'H\TW8{ ‹o&NJֹ'|7%֦X2 n'HK'p(BXlXץI+Jӓԓ]4}:(e&QE'WJ$ci(BX邈&"L1X(r H9/mAƟ@ϷwSմVSDLM><RDVƪLmg."emT)O{ֳ9 1CK|˒'}'9 O>ab|G00v>|`Tf&U54aQEW Lk0ݠ(Dԟi{rv5j-Օ&] DK|sM]t*tmTl*j)P1ۖApJt=WT4нUnns;dU+YE@H7e V !o$"J| 0BR*, zŖ5n*쿙xHB? { SRG77GhHZvS6, 9VUYENJfs ɟ#:)}"dȁz1i0)cX͚QB6dqܥҦ%a냭_pѲSbh<#ׇ)ff\ˬ0h)@E|bdBL4x|8‘[xRuԬz,]aeЃ#IDpV Ei1e4PĦ<9(Ia-1QXgLxqm 2Hp*x!A_IK`1F9l&'p:'I\^1*XrЮ]s3d|b(:|#6r9e3N$H .-vK/K"*풂rViVʕyƴLDVB;(8i;%&j`B6zɑ >=Or'+ⅼ@nA=e`l4ڢ ''eW*m2lH.`sH9O0kcP(77ZKReݬ&ƣei]M}2+&a!E(2m/E-{o\ &b/k!&buw0_ԑ~0QlKj+?BMxB`[7.B?B+)Xmj@'. ^\焫!aYw1cX@ v*I~0K!f[ʓ9y6OcZu]-%,]&-ZfFw83 1%x\zf~Uapg??*#KO>)AyK:)MM&5 ' zrAG5f}rPC;`A3`&#@a1?`}#v_5 O>eW^<+f3Zc#}h1 <( p;豴AI%ACh jBF,^_5|0 g:SRO$ 2Za L/JJB&f* GtCS\PpPkSR\Ҥ)(rrxRE@sIלYAOf[VggggodJ?'3 sɠJֈ?Ё: gjUe|cE>̣l)SL](zVRO`Mu d=WA#&p,H{Y{L" ,9@~\R X?`n 1ІFs_@ !=@:-I8ȒXYun\vJnz yQӸhXD[^Z[Ěz6r\<}17!͕@v o| %cGMM/S:yh$uIA=ձ:|::$8"vx\F_x{ᶀ$fAR -VEՔh Rdo!8Io{M2p%h)B+rNrBtz|Q - [mx֬&ѴP4P] Ԅl HA-G%fkZA v_d/YQI O@|"s 1I^t# d;q 0̮€Q!Np=,Ƕ 1qMQ01Ua!lj'K)yd\\أz3 5A6=d"IE 09lraUjpЋ"t xbHy.EcI8C[pYrǒU!jnLQCMQdRN&1y0 0IBM]R)C~ȡm#X:\<3݃<^nGvKGcF[= 9hx l@8n/9bIE$zK\kAH&ԫL]x)@-+<5QT?#+TB 5UУZU[V40;=bkpJҝVp`BWhA񪂕u.)P0*L.X'3V_۬^-^(6oH ~faKۍ/,/x84ȡH9ˇ¡ȹ3?vk!9_w6s_ 26ML!+8J։}{M{^[|}IPh(oXiSSq6 d<~}y>ld|>OxD2/KtSu5٬V*c9 7#ґVR^u-u3+A S}( uZ a) k0Z `a``fg 1I·%:ΚL3)=2G(`YDFP -h%\.qdCإ5C`&D3F@֌UpC(,SvqEvDD!Ae=@ AM9l/.sQPv֟ :U ^>G#Q *VO\eK:BkZ ߌR H6=Mkko5CX-\Q}kx M@a0-D [}pem}\5&'&mxV#Խ *hR"Q BexR rI(9O35J]SfX,jc$[~nsQFDb]n"j5m_"N ZN%hw!szx+±]EHOnN+ .Y# ))T%dDysOu@rHE!atB&2dʭ\Ǒ zi#ᢽ&CQ6D1uK; abY:}%Gu544لaK%[T!<g)<O KyGHI>*TUʁzNȸ^:zY+Z+p :A2)˻C+07>kAêo9ncpMvkW}fxtyrˍdzx${Θ ?}R5o5wgcVS%BEHa&R92+t |k?W'iU _e5d >Hi xyJ  [G'ssړxYaaWWW'R@* $; 9_H+]+*a-P @l!XNk 09;=w8 *CD$:*5K@Ԣ_4S/pΧ*$-V1ތ~ʔ*l9~}j!"%+SFndT߬DEa"}(+vy=gw酃}OOz`!ZPo?e\8{V⑽`Qi 2"6A61&옱c8{[x!l#Ө.H178s}+W8NH_(z]Ux2WKe4S#2\Őh ')<!EƟP-09axxl!GQfe:G?^|Џ F~:{6![$b|G/*iy5VCpDǶpN&P/c:Fw i1.xY3F@U VM-c}%b BXy~@]# 1<agh6" GɊ(yD{[d@>Td$Tp#Aۣ/l~)՚ g~!u3{qJ(x Ѝpm `6tjRNw3)BVRp&lBC嗢WJ )靄8SNMƌfS[M\I&_E.aa5㘊s(g>0=ZR,AìdonRZZ|ԉSzKbɘ ],K5wҳ]@+|u03) m%p%*L@D Tyr*gOQ?3U!Oȭ^.Pw+UTOUu4VOê/YƮӊ1Ff&`$#UQ#%g7w~Br t-- (e~e|P<.Ȱ*-˓!6 R,k!0DX6 K!EU5n,OEBBْ>o,iv%c16@왵H#iAr!ly\us)X !"pƑ @귎dPEz•C9=~NInBi8TsIMz+4gkKc>84雍(3#LJ,bŽe( =LJ=LBisuڍ=H}*CAYG@(()LRI53݈uq0 Y,G74J{raROQ/#aX+&;@r1G q`tF814sЕhXnVP{"~o pu?QSP*wI>ƸDeiQ}ԊpUE F f F21ԇt! /"\R_s[Q#`2(M}a Y`A} M\_H,^m9TƺPUOh)H}P IGi.F ^bfIx9 HQR΢:;uO6NR:sg24QsPp4U(VDV֖4a/76E[=qmd_I/d BW7v:uvcAr'VG*y=3-YpA˨ )ƾoS`~y5KlԹZV$4z_2[BL+m1r9h9C/QXdSTXpY?Gl Glmꫡa7`"T1F InAʏPU2oaR2X&C_}/~%GC\Ll<'-"p5f赿r?y'趋 I@gK4}n&:C+Z/ǜt/䌴EoY{G; 9GOW:k@7d\>r srf) a-ҹqP%>H.LR-5.+!YGk ~2$ 3Tg?R&A?]?Y:b?"7H GIN6ﯬO+㡴ضOZܫi7*[Ƕ=d,W/K= ՍOQ?kŤoU~MczIXB5FKd3Kd>oA]a\4 []T3?*5*$$Kq$J0ZaT֗ÿg?R%"ZId԰Qkwu)ߡ}> FBM;(cQQ=nϙ+~SQ++ x%3GO^ژkղ2.KG>} C\0e+nc@} W℥1cR4"# ֗x߾+ș[3LuUE ikPv>S?\]OǶ7L,wsЏ 1mw'"Ў٨`3]ġ>8/՝괩%MC5Ev'ďu c}u'9x<+$6O~3<䅃"~_K7~QQ꫄_|pkC00R."AnC}ܹ 0^K@ tT 3~=&A3ٕA2ݨ\|Кώuva|$D}j1ȫ25N FU#^L~o.#JudjUbtZ]W[nmu6Nd |9uqғYÐ"EA7v?/F2| .$Й )!fLP%AІ_LbGpT g 4Z䯢l h"I#xX@᳴Vu 4Ԙ=a_;Dz.xkTe55q$b0ݖBFujqڇa6 P;rar+_&˧GjtG5ǧ 5%c,ڙ_⒘>fO|֚ cNr&:`eѠy'3̛YAmbHiʝ>Am`Gil>8Lc A@ePֶ(]@UFXNё2Xl1sc4GP/c?oevNwb=v$8XaQ5Pp~̜noaе B"4G} TCm3zM G|jl_E}5"X!fnkd&V->zk}z kkCUFl$hLodaQ2Cқd{o wYgOӭty ŅE^>B$1sJm=ǯc"퉐TQQ _~lj鿽t(kW#kvLSg%zo봧==9vD|r'}ņ;K[g 'v` ee%b<ݧ+;FϿbNCDg:Uyvɿa'f"\xdeb@a`247")Aoel--ed˹pϭx!{6 7"ixwdQ, jUpPs P+*j#Cv(⏃cOuO]bz>1*>Sp{cĔ=`hO'*y>E\P JveJ3$,uF?`ΈHwy-7q{wfG$B6HAGhlpC0A8Lp*?/,qb@Rܙ X(01 Y:@/i|C K.D\%I"wh P0|e`PJGR13Hk=/A!W(ڒDž]cQɟzHXwE~FMb8A!u>&A7 A?թ3A@y"Z$]a# ܎֪]dQih`p;@ZR樑 ѫjwYE' /Kw` 1 hnj q}u"83pe$D8 ~zΪ?Lt|J5kZ c R*b۬%"_* f6ⲣAV-Ʊ0%jd>5,BfU6O*K>< fCCrI?iG΢χP.%`u9CbŤ \ :7&HZwa %x Wj):٪6B,OFL9$+g-#ԖXCSl8%|-d]7UTϞP]]U]e;VPKӑu=Tq>"=ԫ]ܥn'~LtQ8 w!x>7 Ġ29ee$L O`-#p%ʰ`'T yгaA{g9`sE>ny úE3,/q@׳):.3GI4=f85%:JR6 $aEgG!7MFԁ>(ǣ?(BU,de"sJ!D,H.o/<`x}jǀ Ȇ]ԌS5k)C+Bwl;5qv+Bd͊ϔ }=22wUI1<ӭ&b `P ,<.)|^.$23o^e=w&I=(!Qa<\KUU33f؄3wTt`L<2OiƐ̀hnM.<{ @ D@Lab1bm`HT[ e ʀ_P_  I/Cy\JRmhtH4ΊP:9QvG$O">z>8拥nm|¿uC.ERx cCa$Y`p~{jSA1hp"ǐ >xoq %ifı {8[P&R#_MPvdq!9KeynyԐ~A:dC4>Ӈ/{ʨ lk+Uⷔ_4 9@s x] cpqvtϕ=\x*¼ih qͥVrXMR%}JUEYJzbiD,9S u`cǒsTcdeMb*=7e,0JJ׌!m1rLDKa,:N%dmp %tb g$5GӐnfKûBA.a2E03E`Gti(50M79yV2 [PYw l5P${WڵZ`OF.x ڦ 6,@Kr^}2 P_4'84mi ߖJFYYBUv1 gy Q9N.7&䘛K2cyGu@j. -C%jй䑦Z2Gk$-s~Q9#oYU ѤwS[ Nyhu*VmhdDVFurs? G0Ej8ŅpBU:{m-(1;ق BρZ,V瑳ZgرLdZk+ΰߧ]?'Me[~vfwuE2iI& h¬nj LI1Ó5- YL`lș,2"ۀ8"I W(M1'UN3tI 4qn!nުF3= \ic2Jk(Ma^>n/9DhfǏb3i'Z[\7H#R+]Aސ  XFc {ʅ["sZ,"|H6ШL*?ԙ5|JpFВc`ѕ!}JzMK6gބ 906la3O#x6 %%Vb+iB.H,yRW^5uig!.T֪A|1Si1[.^uz6"2 +1j+U \]kYBi0LnFviR/Z56b.sB45J Ֆ0 %udVEeve"IPуa}ѳY]^]f"6ͮ]N( $ >EfLM“.Pޕ8u$ə,m)Cduʚq}n)3,w*5ZvAatHi1!CV7y]eI  uxhc`(>ٴq2&3&ڍa MkfDBݪ`#o DN53(5G03*X4#91pePEA^ң swRzӫXPcª2x$e_NH?MiQVUuD$E9 ׋:*vL04zD^ǤD]N-.,\:9%upg8V״i=4d7*y ,PWpL,9 kTX"9KH qJ௵u8^U!TC0-m;T} M!_؂լKV ]1o9 Yfqf*v,`v*@0 mG_ q^RMQrȁB$EDU987n:I{ GvluhG=ҟ*!dXV`X'>Ah`h˲(Y&QTɜ C:n$E̺Ixjύ^PR@R}S nD@V蠘^2qgowI: ̗m"wZ'C١WD;.iQ"Zqu:)+}rw)29-q'X />K? WBߚw7o륔!cF/Q+c.m 7]rq ϲe?>n[)*Brkم9O$ ESZZ7r-oɨE%#K}^+{*nߎ2%3sY,cdը Ե^(TA7XӤ)2FEM;"5T\TJQHv\xa8`'.r#EPi (~X,ytbKr(ə>ekN2[5iu}&Il>5WKQE3c,gYm@ wDdR7G(NP(BB%S0-CMD)3i2*"") Y\l9kj+"6Krs9\Rd( c y8sM=dt*mjxɞxsQhjl-R: גhM[Z5!rY#&7;{Dr%f,'b-kGNɎjҺ`>(yPf?S6D^>-M}F2א :; 1oߪJu7eW Ъήih*wpq E*vtA3hb c}^40p>K@;=ؿ?pBȤ0ivic0ATUJa*gW N!+a`r}bU6ʴƆ MM eRu\Sդ4LT*kk[ Ĭ ДO~cjYrx~o'@B6T-;1 @a4-wӚ!Dv{gğҕf;5k*Q(M{7eSn߬@F5 TI z8rI`g [+#A#ze>7hV#[b\k"3y2YάjslXr3ޱjmxڻ3c%kPsvEU'Yt^U{/ 8}~[AWT2̴FAzRd,9_0E8-Võ^>%5yfHW E@x5\U!Y f:"}>]>_M)e,YQLUA [:Ȅ5 V'3}Yv#_73IǔIٗEf4WUWk 9 APÍ`)3-˗``"_Hq98o:N_c( Kaor6\6]kBt5!:-Dfa~X ܣ6%:a(A@YZ@bw5y|}294wG+ysPݪ`A*sH0Y," innUPBs Ju<"h0%Z]""/=3w5 tM~/rfڱ*[[Ʊ%MK)0q[|.)ci06ǷơԾ^ZLt_,bYYsh |PZlzwȒɖ/E'#uNˣ/E vf~̙࠮t1<ȖgC*PЊ$'׉X(,[:E΅W?\@FtdIϒ[R>fyYvqK17AR쳻ŒfoTݨ'xOR<4I7h% jc Q̙cKpbҔ&_MQYH5XgtԃJ{Wm(Lc!:: Ntc鄔R:F9.TÇW~Eb'b|LQdA|LF Uo>FkfJfD=HU$2+e4?E^sȩф#$!V;.oWop>Ya9m8$ ʮ%cQU\"x  txE٩BS?/B4^9`[쫩0v:qB6ZS0Ʒw0sٟɗ ^Fm,WA:-m S/qQ@X\ʱWV!]x%qC'!#5;41fzu4a49+nͿ1$=-'9ꙤicLSʣPGM%}iV[_Ǐ|5[/cYQ({sE17*1BUi~QᅘZn3҄@E*+d hl7 ^jtoθfwg'˝R!U8,A\!ai̺Źi_Z}y$nRAV) Zv$%&gkkj|jr&NA *˾iIm6w Fn';ЮM;>vz5j/RlK'-66-i~&Cgzgޏl;WP@*dzUoIlUiϤ'N1efeTdž᪄Q Ղqd[) FGsy댓7A~ w0-4@Ә!UD/]@@6&d5C֑fB,&/#,6˚2SzXZi,Vn~/D.7^t* er5sΝx,CѶи}yHٱQZ߶Ver05Zk1aL%%N㨽\"}} XC&?K&lwjZ"1vDb̏۽;Ӕ#:`O<A-?:DxXmVtZ5v0lտ[̧\i84^WSDn, R rKZH3|fͨ7ןy2/#`~ RY^eJR#I bTÝop107G橡,~A5"m.ʄnog$){ŬBCMTS1F2Cr̤݂z%TC8:v 'kN*{a.l/TMDxIxP2G%P<="C)щ= qó]%m(yG Z nhnQMzz|Ȭ2#A *zM]R2?f>?s@8'&4^Qj9"w!.3HQ(muL/U΅qU &,6{œjo :0`T6EE#+d 8!|sHq,0jˠ9ZרʕUfŊI/\ T&-i ep暤1qB%lH2\e?35{ߔݩ 3qa+,?{19qFa,'ebGuRBC}M= +L "C7gRR,Ѵj:)_ovQKa-mu M~V?&#;ueMHi;>f-MaH"i''\$gGYXiƲKBYdXzE:R$O.,syM齈f!<%h檐?Z?FhHXK^ bT6aXV.8f?*E(W%4H#WIm9c-iWjurffNbOqe/O$-4I3jl gD5Y(@Z n^M K(aip|_b>`,~[LZt0_>Sv8E]?荤q78 k[EQӇ5KfUt}j簙d0uS4h,˙pX= PIӕ'Uaw*#c UT @Bt)#\(PFXFN3QVe`#}3{@d\vBW?%zHa>T*c K^`.Flj%j&n ը# #Ac5gʔ<Ӓ7Ɨ'RW{,B'eTCT( t61M jлk&`A7Wmd}R5aMx ~#XLv?1?ÖdLhF>VvV52CI|Ad(n#_ї0y$:fKʦqzD"&\4'1ڡkHMdG =#u0Ԫe7Y3-F5򈴥$2;J I(C-)jyP[ʬj2&4n^7[ȸtv n`6V$f;+chHpbXq kAdDMYg S \uX: FOlZw=_h %߮2*@DCo 0;)1pM Gsb 5UGAG9=L3WM9Ħ08z^Q|D3 ZPޢ|.6?S~&C4\4CKA]DD.׫~Lz?7ϥK,/ %M>2ɦ/?pMSF'7v[C?9@hO>Gaq1}q!rX8U-_;5Y^(~v@a$=.R $-Nٓ`?CI 0!gL?l 2xYYx{O{h` yͮvJ;%$):`p4K-zn:lópx@ e#PfLV`+5akLcFd !aTŲdf=iZol3Zt"cŌߟJLxOd#@ ֵԡ1RG*;F{!B<-eHaV3?r[PP8Cm #99^]|MbIf^sF>7`I|Mxa\L~5Qj0EX1J>CnT.$^ND;81Yr"?s[R"U:[El $s{rТP>,\Rr2)<)&AHO6%H@ätJ)FqY޼,qh1H֨Nw_6eVQ+K ٹA@|8B6YfV!jv7O7>&4rYs=rD5䆓9 LjhnP|EUnK? TOϮ}hiE}nwѲ(/k&4ԓ4]O*Nj{"JŘp;]ȅyvc#[1ߐUm! Kd/4Sbl_nNa&-G)6Ou-&ߤXRI-;HfkUMv!/g)00W|Lʔ@BZӴϨfϠiUur¶mwL=s>b>DbjqGת sx[e?r{\ grJό`쀺AoY\/: ȐY0! n̍Ny)qJ:Ͱh::=D[Lt#"}6g8eX.;UW>%/"km^kmiA\G{ۑ`+dtaq(*IC1PJ.d%ח֌%ؿv᫘4Ÿ ˰ NeFvxe`z օ$yHH>>;(d}B3L+ΛĶq%X#L7=Y|T>>Q5  0H '=i|F%%.jÐ\@@!%GϨ.Nˌ·rRB0 Ћƅ}pas^9'*Ydڇq >^y_}1m2Y8gsN(H`wT57M=i-7s2wL0M-I黢2=G]9I nkɘK?0 ʬ信}R\_l!`?n)'"(1N4JdLQW8pz-և}9-#i~üG]|zrК ~cJQvKֆZ`ӅJ86G0gy<ܣS2ZtΥPH:%*aL馁m%Qwr$ |ULnuÀ-N~ƺd͍iq9zLNVPģ*O!費PVt(s)ئ?@Q3HcndY51pFt6K7^u3[[ӽT_d,; ĔզMmK4),H?`0/ nbK }(Oj(HrJut J3-願Ui>C8~x$ʁjc"wJ# #ap4%F2RK PY].PY3М&8+d&zXAs1ԟhK!LX?1QHqӷOK3М˩Z =oZWcS_7_%q¥~ X~#AG1oTM #8-z5o?;"_`{klXXopP*Wma^(H*\\6]4A6>W+WRWY}nR_?(Jԑ27C}7(rV>8 v'fNW e\wKWvJ:%QZF-TΫf|ҧG( 3lqQ>I-oki؈|xsПg?-[P3;!Y8Ȥ!DF 3W-ʘlMwBL2HCkF,#vLjk,Bqo8Nӓ`9UpYDH+Awo#B1?z@Tex7QK^᫴ٗB7_6v1U |5&ɖ~svegZ1Ec8n2s ǯMFF{I4VݶIiKoISC+*- «m/W()(%ZNkbE|!쏄{@@I)|!0뵩i%v?z= U+IXvMG}c #}.{ ĶX@;!NLn˞<`@ĨkLinBl"R_niЧN?DU~N= 6 i_>DimU#4# A;n>hR?s.T#Gſ\,3cOX3>߁CWⱀ j%[d?XC`JWgejhVjD6]&m9DIuyC--@nJ/fQ1eJBՙ%b3j5 2jׄ^\ mZ5!I!\g5KWXPNG?a]ʦu EP< )< a11j(t$|v>*c<ё"d9JP(E),И!M a)D<ǚϓFϣnK<m륽'cY,aĪvPwXb!谞2ףw*MbأEv]>Ħ>15Hki>I964p <Z<=P_}Z$3t3}IpyޠLFIlR!ߠ0 4*RCY$ju ҎM.(uRG`kxJ@ sE]%co (BszN 0O0ӗ+˚BļR|+" WFȱNC4(um\SWR={BuuUu$[-,l3~jZ8j4"p|6)1]H2T:7 D}8 @/f2p_BRgJeR|asQ F2<Àdrtv19Sg56Jrxf\g(dO|z&+ڈ7Ph`{y q]CD'f#v\ S"ɚ#Yak!ϱA=NkP #iU΃?% (=ؚ ^&oK| ̼`Na&ꊖP؁{;ĬMTle%W3 [魻}ZK/0ٔO/ə„W&nfBrbrݓ'`yI1 x!Eqz4Ҵ/\{DC_P};a:ԝ^c{zEibIo7z\Ax *pzT,ˁ*z2\Ak7ه~OB5VOk* }xB'Gar 7|խX^HdeVQbQ%Qz!";T][@D#yBH$ѵlMV{SHW`=q>}R1x54B0y1".yV(c*YB5ѣ{?CL2 d3JݲK0T*'> BL#a Yߠ4^%!~ uU jM׾?*C>l[ :IH$Z I/ǨO ceUEqYJ~K POŐQfMtLP0j&Vߪj)e!LAD=Hn` b ":\0~9[axݚ^A\fѐX_dq9aIbGJd4",q>Kf?@IqNrU0 3n y0#7zR<.!皑c^t; c$;2vT-t^DLevqe0ifЎ6B'cTmX?bH }{M= q-Ƃ9 cXn&o!rN@I~kVzz]o$o7O~``ioSbGnI*LVd+΄xmF=DT.PP\Bo%ȟ˪W+ 1ٵH,.}nSj:7Ggl}ӇYt pGn1u b2I8O%y#WØfESaA" Wl{j8Pv9 %wEE4ȇYOj-OX,rs2hFvvzIA&MLZIA'+VvbYUtNîY MtmWq'sm~}FO{>xTӄ@tu{1c2Bbp:dc k6 C5H_NexŜ;l^W9H*'E[N{-&T aCP㳛;й  hXU{;:AEfFt[gB8lI}*'>GyEB-($|VHWacueU]*ϢK>kyKF,*Yuoiiȵ~R8O^ŒvܹɧNrT, c'AsKnt%)h*jD DHor̖TyFR&x{H&SQ5Jc=JGiJCD^mprQr@1^ڬ`5]O( DةaFq)q9Jqxnj)vzrsѷ 5BTMӨHnhBLr\ @[lL%QLa8G rD@X +MP7ihHU&D/ i%PQ&cPIve?s 9h/YZN:rs+m|,nl<>m2Љ-%HdC-N̅j Ůu74l7d!@e"rmCQ V2}C ${n.By5 ˆ ;=Ƥ~Zf𓱫h1bZ+Ҙ^md=!5Hh ՟h KZDcQHAO("k*# YUԐҁ` D.vckO]CK, "$SI 11= U4kQ{LZGu/IQ&RChPOFq'4>wdRoyP~pjvQ КږɹS͝ٮWj`8ig WKytmykt1 4ɍ4%4/*yrݝs"oM*:$aQTQ..2L6]e"ݢZAo[P 6>z/DA(T(:t;$H Flւ*yeÂPPni' 'ճk[&Vh&ז <~WSq8 _T{|w+gKY Z=B6i|PnN7(<ԠxaMAī$/"EV'֕ћ<ͤPI`gŸ4|0( @(-}Uäkp)*~U) c<`|LK& c,Zoj%W'u64qlvΨ'$F̗5ֵuX@oVhs38F`jG*avہc OBo2,0[`߆eD {iW>7iGC,vTߝ&ta`BfZsNKhdKOmy9e>l_JYoe2Z[, ;1Oi| 8齥"[n4,2J/c!>a/LRZJΤgJ`hJW a Y:j:g,LC8-;؎ K5Q^wLpe^,kaV7˃|2R6[ֈAn>Vkch¾.YL`p͐\j" 0D JGz?diNg=ۓ} fTD j\ vR[˰O浜n0ffE]rz#2֛ֆKEisdq5 l1O"̙>r /ZIjIEwyA?P+UjU\]_ ߢ7hF?zF`Zx'H@8+yit(e-p2SNN|󷩄Q#kCcͤ]¤ MS}%YY[S2aF}U͂n(PW9{b5)0f:LU0u-6mV[=P&T])4Xg)RC\I In;\77fR]%cm(ugjobK]u]CZd=:5qBuUKSs4O25ηbAUgOoU2[qž-8Bkb}0CWIbTAZ58BcT̛ 1A\ClxHxxʺOȰ),H-hJǰ[ 1p `$g9hϫ{&ܦm.zcH[vXApt%qO`/35C!krZ zZ1㵄4M8*Smd_Q(.J5_Cg#.Z!:t?-Q,{)+je-1e!Ήį,E{)I,by$/xb)PVm| mN"o(Bgɳp?3Q{Sm&v"=( PPsu !*bn?jSqW-hWbb̍Y21t?k"УCn'μL:zԗaGQ\'|A$P10ǦDAAy0D_*Pr6͖h1@%0„ :Sdlbp~@Tu\RmV^10xU¼*RDKthuTp(kLpN)yPF:5wIx `B8a`DIwP`^G^'S{4ԅ$GԒtX9 k@Ǩs:Gz@{?)1BK~@ 'g@mXRKEŞZ@ĺ@$h, \G-K;v߄iȇq=,*E OO}`ᆣ~Fm-Q46YLծ,)b&iX5[GN`HfәK[2`B)A)H˫¢(7>* }k~J/Y,& ̊aw"BxdKi4_c;mpFF _5 047\l1hVL—Dg,?11S+H!YĘ+>4C#&d >I3 Iɂ#sW' r+RL.VNr%ix:.pI@2"6%X金W7F+ } p3u`LiB!aoPUGDd3 zX~2I-X}zJGW~[}!St+fYJ1.wg9x/TLD`@.82mi&+9_0IcqIJE=Bp3!N(3IUAsB*E;ۙ(? 5YX O{ȿr]RPߝHY@2b_Py Zm͝KpOJ? ipdxF͹>Hȿp0m# ' W*oII\ED ' a˓ZFұm..W"4פ3ur9E/cqd+,/[.xy:NsX\H"p (G!};}1{Vޏ!H-V*ZHpkE˰6',H' RAcʌw!Wڅb%15i1aBuSSN5'o;2ţ|53lZDBJr= sGܱc k\i,)j*qL5kx}-_4D]'Lhk<7qkv^?Ez믞5{n14+੿n~pҽtO;L>N=æ߸N`m7_ǝ'jKZ9SCܶ qwN;챽OoVrаzn ϽwLƒ~|/^MC+4Ot7jS>99{^O3okOT'<|Sߏ7w{Wp%O7hv؃so>mG=,op^@SKũy&^_}W.> ہny~:';nv >zaG_:ol2bϣ-ö9{JWx/屢[k>55}޵W?Nl!Wϟn]xj|h7L<:'Ç_7Wmn(Çn9go|ř}D~ NZv珸ᠷ^z?6g'[DM)eKdH~ih5/狽^/fɨwdi\'O/ysz_1lމn _i{\R?}x ~<}׹O/U Ⱥ ~쑟qsxⅡn}I_tAʟǾۏW]yq8OStF=`EW֜곏z{yJk~qZ=1agsͬÇww++yiIE.yUm{wrk?#Kw_#=<]6b{*߷Yyv_t6y^Qt3>Me9ᝪVe^s_|E'ɓ_7ഃ.{ޙv}s>k{~xG>jfʳ~;vʋwTh?ߢEv`;_^r}VM&UwOve_Oӻr.[=LbE}8mSY_p-<`'M9՝LpSӏ]ޗ.~Q;js~.QrPeϹM_2{O|dwmj~#i}vۭ]C{yp;缷ҳgh˯ZG}Ϟ|̊-s\aќww=u |ɬ~xjr]76}Ŗww]婿mz޿n~{<jYqg磯5{ͦU۽쵋R8|oQ!ofu>=vVWwpPAؒ]}k[~ڞs{wᣎgŲMwęwOmO[|Csݞ#t+k۫~W으,{ A'.hljg'[uQisomܐ?uv>yk~坛=Y_۽+֫x+n\6vI Ʊ.|aBmըl^|u/镣W-sҦ<2/]qY<{ًyoئ`iE#<`#6nJ(= fnġ7uˆmǎc;<|]<ӭ׹ ᕣdIG ziڊlY^g,/J=臼yW|+'c.o~C9V1?~n~%ӵ9GӬrSH=^>j ~7wdVRf_g2uI#~=fWe]_s1$|}EŖ}9JϙG7w`=nsK.Ywg.Y{yv߼f''<%<ӷ.qYz?ywF]//tQ]z~|禶p ը;ósym[UGyȜeNϘ{wu=GO\7KvM=|оԴ_Ww=y UFS?u?yҺIa{]Prz=qF/μ=}nzp=9tIw]tz;5.8|хm͝_Lo^wߵ>2yނ?`|~ҡ9?yh/9uSsVm;N}0練mzw v:GYΈy9:˾?۩ptzI'xAܸQӷ;qrֿ/O:aOpnqFYd'VnjWoLGZ,Q='Pvґ7x_s_>tS {E?xe }+^;ιs}~sVdc6:75g3=&uҵ~}]5_y޳}jč.;yV0跶6c6-Ug\{s\9vw'i[vU6o3_䍷Q[kX뻟lwY%}|c:> D'Uz| >kˢN$wn=T G̾/u׵̒Ok^[_oCւ}ZyK^K_ᗧo[GpOl(\<6qǬ|y ]=ksSG.l=nVOMM3G^ӈ/ ~F'/͟xgU/yO{d z1qKےWN|]{?^C&^cS7+Uַytee 뚳|ԁo<>WYs+ꏍ_}COO$gKڙ;| S+cT|l:aǗoGxnaך3Fto7mVU[˭Ν&s=7vm'n)⧿+ ~dxs[GxF]kRwDyҧv]߶EnY/rsk?;~ܜ֩v<h%cUUISO-}Pʩcn>y.ܷcSF?7Z{n,Zwp_y;^r?ױ9i/j9'mqvExO3k޽WOhkl'wۃ$_.u{bOyӖx> Vs7s:ֱwvqn2;ow}>e˦sotɌK;`Idqv{c9sN|≋??2uⷉ>k/qE]_t\|NWǾ^A F]Wp#/7sJ谇^clȐ/8C>x쿑w?}P÷6uϹwwf~;蹗.LͲ[IQwӋ#Gs+s;ݺ9 ooZSO>Y ՟uSvktZUɭ›ؼ&>%owfx;{OOz㸯SڞXy9mrWusv/{]v?yzy빧o]|bZGRV zSs&հCgxմÞ7_{]LS YDO>{]t~9rrY|w𺜍foܣdH{م&7ᘅ׎](jS$_}C͟U{X5/}\f׭'}._8Ϊt,_y֖/_V+Jo::x˳+ɟOS?To?Nyw;Glku\ؕq^:{3ܣ;ǷVS=ƬGtpɇܡ=X}w0={=ue#w|2~/o\gw='~.rfǾY}#{] ^sgG~sEu86UCt߿}kj7xؘM)bM?}׍~3.Y'zkϺgv_{6a#:XCv@{΋wuO] k+xVm^KeY|]o6찤苳=4Ћc wpE;uv ?yR:x!N;⩽=-ה\xf9Nu7d͏ՖqorozȒ^磛]ԟfi7nږm{~~ǽ;;~;>.L}:Ohع۴#nky=y-sY?|u3~yƜ?w˟U/S<sӗlwF%WZ3{z 7^<,M3G>p׼aJ㍦vDž[lmUyt/hba=Wh˛r%˿pG͎Zb7F5O#+WףOgOxu <|o%o祥v.‹_~}Gs.{H^|Ÿ|ęg.maGkہۥ>Y[~=OzƷ8$}!5W43{m<ܘMM^v=?c'uܽE`rѵGpۋeg,oƦ33=c%ϟ~ܮu]2'4OJCn=#=ԓsGoo\<ߛgFeל\za_=pOO>OqDCxԷ{+˾zyʙM۞u_붿8eo϶W2_Êz1)?|cGp5/7w3ʗgs}iSއOQnkvxĆmn2Զyչw\xG~W_}ul5g]ϵxS_>#;.e-ǜuN7W~JתsPAGom-j+?<ͻSm|Đ;rߚ0Wħ|یoü>:?}|>7W'}6:p}=iz甭ƯVk9sg7~Yymŝ={r?{_fG.蚼x{~Θû*qZl%w~vgvyhgՆM×_o{i[m=ϡZToQpwn8b~Ì;/|[lv˗nSk<.1`sKkñW|vyW޹O٩7vd|G^XWnt- L;|m]|c [ }>`绣|ҵ^]{9~G?NIԼqv-uNi9"sϹOjY0o_з۷3&=ӇwnW*覦v~=x2w۽<_Cߛ'^HYpKJ9g^ނezW~ & {=_:K]Oy+~>^wqzŭc^x<ˋqH忇ZsGːVNPs|nk+|[5RXpf]5uƍzmiOq@qpW-G~}x˜ j>n޺ŏ5Wu|Vȥ~T٤F_vC<U]<mYRK7<۰oF}Sl7[ N|Aۯ"iQ#W\/[HW/ L.yɿ=IK.LYz?Wۏ)oz];LxOvy}'||e;ޤ;ϙw5\vGoEwG+1?yG׼P۷5w8.qۗ]o]G~ma;O޶KwMttE׾VAHt }}tGx#>Q|G]| _Wv<>Fxf?0U_#oppYQ̡N`;r\ӓr ]wtQ:k=kGr.O6?t?>Hې{}᛿?-[9W{/_zG+.{;}JY|W/]~ݸg=G|s^9S7\ѓ.[:+=|7WzuD}'×VmW3r}]?>OD敕 wu~{x ?ڼ_1t7oґO]Y%κ7[w>W~q]{=uv~ ],mo\y1NA5[nv*۶m*۶m۶m۶m9ž9bfޞٳ6UletUD{~&{kri1BA6dKC\=p߿X#{:;+ Pt2X6!ѣCuQf"\o3/LK929b`fm{%$msån5濣y|g)YԠoD$ U rWшK(i۫Wn542!]:9/%P*,a8uM[ύ8nH˄ hA,͉60twM/ރ#G_SO^$SC:^$X;uNIAm2 ϓ/X"NqAe$: OV(rIzAy]|DXl`(N$Z-j=8E,,+:5`*n06aXx@pH_F?FR C,C+Ə @oY .}i Lq80HVUI ɇխ^eL[Hf'bd[i?Ue쎍$u ڲ}"<˞v;9hIfAh{}i! O;4Pg:Qi5 !r'Ej6sT:w QOs,EPوqyIƺ6NM(c+Y,ݛpۙ&gMgnŽeJ'PZ[YORbtҝUE9W;EgMZ'0 0ٚ-I߉gXCń ?7)Җ4E~:W(ۓjBͤx> Py"_1Xud7d' VaKEYRG{*k2Uժ*&5?{ >xP [&`.QVDz<?HAyhE$ btR9\ao3a$H/˕% m)ޒW 䉰Gɲ .cyF>"iIjE},>o5əƧvY%#t,e ]\b {@.8rdya>VU$mQy}|1ߏ"W뻏\T% )o,)s5`м͆Pj.N?aƕm |&܋JRhrg! 1,zb}8QDpQ+>(?qi2r+v/J<2Kjg3`ssxS@MuНnЇlf?j E/}FI^t}D?  ;9^ǁkq"iq>A\hC" OE½Jp$&h(Cge>r%,{Yz"%H -? cMfHH~ F. D+N#֩Co%6D|7k{<6 ^ +ܞQA6처~&vAV,؊2ȿJé, e?NgEۍ3+MT9yB_AJo⁤ +o4A!^cN >vۊ_S86T&FWtpL!:lSm2k |"]i'Bw8L5ˆKE^l4l uovb$W9Z'G4ҙLѽ( ! I&⋃ u {)C;mYuT.VUM 8B¤[?)Ml$—TKGJYsO}Ke(ĞZ({&ڛ6L䑢qrn< faj<-Rkz1F+~EÏM{#bq.]pU<_D3<,?;Gj#>Jpj8(Y!cɥGk$F߾ DJ 1GzՎX ʨU)e >z]rG`qk^p'ا`D`7%]V$~!Ku$27"b t%00r+I~PA<2ƞlKfA;l3^נ4[J^![/ܥG5h}@mg,6+5.T%jӤ+CAM 'ҡ (D\hލ+OVAf-GQ`w2꽳Ke58\ɹfr+ ªÁrS"LK^d]ѿEndt Zzլ;u`Uj v .հ<' րՅfzLr#ö_+=onHu3gqw'8|+m&dz*'.uQ2xzwoBchl;OrfgwyYsq馑8YbGG$C;?<#Ie\ƌ3}-Ҷm<\")ԒG^x Exwp1j 0~C6>^"@8J"μ=wzwԽ 6i'^#.5rK P=VVtM&= QUݣpR25|C*Q |jk2yO&ѳA` mmc/niP4fU #i x<]0~|>r0o?iDŽtQXtSh7T{<|Ku"me}FKB|bőp\Usl, qRے!ٍ_M)dRMOD]sC l@2__KFtB;UE~nJw 䄔 id/UMzK:Gk*7UMDGkR~1'?Jysh+i)Fh8.`1Os LPsq9/4EYu?اD8ܨS6|)o$nI IeL=f/.ߎ¦|ao`>[]=ݝ;Vsbԑʱ-9N"Ǝ\dwJ'SkP4ZmQ|2NfIn!3kh^4`: Օ?iEk Ƃu#+?&I]<)-/+5@;>5'Mkpo_PbT:!ޟv̓5l, L32xD^8Oetf߿7XPvd@n D507f:++.h*Os0c]' 4S}jBRcܩ Q絖Dj̛1ě DyMکV[-+I5./ObQf'5?IFsxI3y4ŧ;rd9Nr{`l%Ը6rm <|&h#_םAM_>zn*<~uώFF %koPǶV2Kq&x"A&ʑk`Y,X3"ɖU`nь,o{ɯ$|p,7[!11(e #e*B_ :l ٱ֩tvjIO3(KCjgBz1DS֮br7g>Y jK%X:L! PL+yKGR!L (mpGP}X pJ*Ei4у2,.4ݜ;MUL/%Wo8;xa~E *? eg i;_(kǁJ'cj.Bc C:[ 4 إW,_bPa8H*#$xòGL3֍uPJ *MO(sW8u|2 ~lGQF8|lh~Dۛ$ 'qD}8`;]wTP ʗWp¬ֻgLK79g$w~K+4B=PE+1/)1}; ܢK 2<$,vy$v~[an@MR4߻hJ]d0bF(k+)T{)]NE!vљ"ZӉrUլ}"Up}gBb5nj~"˂~֮X7)=bѣ*zSy 'i\ [Rת 2"s-RkJؑuȌ0S;g Ѻ71rDZƷ/M7۳dY7 @%߂ QVdDt$!%"HCRW,pF9D/' NWiwFtrIXׅbD!4'iF-1 pDǗRş5 zV%'Z٥ď%Ȳ*!ō[8<D&fo/ʒ!xkq@@4}%?5oBOV8,y`YqцfFE5eyB7&Soo80~)`m\_&NaF$fri~@TOo?d7yY)×K1*l^s].x?I'I ۟`!Sl7͈"$] 䌀5{~wvZ 9{5p_\ mB{&).ձs̳h/[ %8ڜ>x>#5s?4Iv:64pv8uGE}}8ݟktO;p[Da>S;yAw@܃x}g8>.<ɚ+2yqBd)LDQ{қdYGp_~)N mJkOP.-q]EA3{ 7q p. !;5.J@e(=C2˗Z"hѦ2|bCZZ1Jbb9G 2@uI@ 3my/)0A⸅.;΢B*U机cIϘ|y)@!'2rh/>g#މcYN/fvV"tvHUKoLA8cQ}Ru)jx.MXG5U5sַviIǗȱy>~=x{Z4ͽW0Q_ s5 l=,i x UJXz}sl{grPWĦi qK^ '*]nE.mY<CFkw *$b&Y 9~|󔒷|Ι!f {" lO윸'߰ѯ1Fo6R \#Sh<#HK[%bSǸ?9J*CKM8MsWZRr];/|l=7̘"(BFE++Yے ,B\K W6SXrLcԧ؝OU/se:8}"db^ N_9B]g1.fB.f/#rCL37- ox B^VgdG:WiŊwDbP$yTXS@@U4?t%鰁%j6Rt"zkpԿ3&7ע$lTC;(*@]AZ:|*jzy[GdrWm茎P! $bd)!ѓ9f48%hF $+jMFuM!Rγңţ}fCU.oĈRx~UY5m}*Xk@O-*S]'nwu&4h+&R[vD. ۉքU2pT(YE [@d9XT5h㳣"d 0#tߠj/ *!ݭ[)(c$Z>yZ``b̏caZ#rzHAs+}rO} J7)v& ٨%ȇsy,!)1qr][$sK:~T9tM^fv/y.!nCW~8KY`wpFojf<!sڽgd1t(dh0=$A:۲ K]GO9K0R%\2 RO'ǾE8צ|񳛶KgNPy2]VVQXaeCs3 ]UI[Or `M(;b&lis9iƀMɓX8:"N)v 퍛H_ #쓟,2;#H|*Q>v|oݝ}g:R+s29 _F𔛬J+p70.,:1$M]dplajX(U6}GC)9Rl} ~ ǼItDnSmZby͎!5;r/ƙ+iq[: +m$E;z9}p(wXuGg%ZDobF )W&ZT!ɒJ+^#T8mb1>WC:!˒ ^= \5NBp;[]k|7q`-Pٕ,Zon!@58>  a"tĵ+ʴdU'@kH@U4_w0Y,U.5%ʠm6y-^(;Ee)^iF8]ߚEp,qg`O` f{|e+TX<%@\&0j8aDŽra[;fU0(Wۍ} Y!9'vӍZ?x̧Cv:,٤pDꩍ/Uqd en@&[V5|b)ټ?");IBܷ4s XF٣79[Y:Nןh DLR(˧(NMPUT?xsH,F,ɈJ(?KL9%6(,|]Cx+oJޕj.YV[ebxfyZ+A ځkwih"7nkħ?ӂX1bҨ14ap̢̠ռ̤h_~2@l!K2C h'(Alnc&iT7wƂw&!߃K7ͮ7^!?Pѵqu˙Uc$3i= +@5<lB ,;Ò;r #:Kxz gVVQ2<b` ML^6,!v "^ \Č~y%p;w<`ANR~bTQ >c 1\%ꡫDAؠºF|@z\-p4u T'tM~b1VQ~qΣREX89uf9f{D>oLT/Y/^(%|ۅx{Ӵ_(jwg)fQaȑc-iq= 11nj5u6 @Z~B'*`W"R"rjEc۠K~Ջ񽳤$D`9ۛ{|eqyC֮ OOg&).ۭ!قCiIIN{w}7eG.i8%B@!Gz ,lY.I  <3ֿ+ذsKU7'e 5a*%ݩYm1|X3NHi^8q}+r1ɨYRŸC[;u8cH殸+Q YҝiO7R)"np+֎ o2?ދ׎6'x#L.ܻY3[1LVA+uϊ~`71"KZڿk5'DTv&2֨.Y逾V=4%ucY=ߪٳ5vSibK=8hf<㝶AB.r/4( 񼭤@)V$ iы*52\ݗ!JFMnK&"$ 6Z6pĿ￲PNI#-Xb xj+֗a YI +3]6ۅہ9BV &^x5q\/YRtFe,(Uਨ{_w/D{9ce\JY Z^`8Ygo xN*=8Gj"49.9_a󷽆]ʞ(Yijܯ[1 a 2Y҅ *x*N i ?蘢-XE"Rf_R.+!&9,! I[ЃW#V@Ҩ5rϮ<|v͚, |`ADFw"(d-{c qא(Ϸ*ab8waS[#TxOdp 'ԅVEISQx4+mgEHty/ʰ˯ īrsTbceu]r )Ra "ZSӲJ*YqW+Ī0tæI9Ĩ3(2_h`ף&Jp |: 8M{ݥQ&!} Ġ Clj p2~ik4; x&w=1L#cPB5Kp*;R_zXFޏSo2 ߄nJ>5!-,8lx\3a MX?rxf|ST\S؝Ur}"_}!Wf`7x#O#z;Һ0F/e 9^c`Yz9 ^;).W$؀9vjapD` di5=)6y%pf}%6ߡfZݘ!m>>s_`mn]X$rFNz+qS=&;zg,%5 -ïOtZ&dSש/t fa K?oA?- GM5@~8G ,M$3ǿe9isȊqgK~=n=om!Xo"VMbB%#tA;i0tFE954C$_ou$,+yQ2P[eL|s BE ^ng;mO2r@!@wD34B!_5ʼnjQ4珬031fM̼辱83T~XՋQbW>WXf@WwOG+!uQШUD^vbb1Lr ŏrLCSJʓ$*~ZhB>p,EBԔ1@Fd*jNx"08s$Fx~-W*QXeʟyUDtFk3p o'`޶O HHQ5}B7 WMj0Pnqr\XbZ3>4bX@1Eq"vHßQjYwkɿx%+H3C1dT##ͱsk,hxr]aUwc1XOrW9ƼDuwYGGVՒgĵִ^]UP̭tJAUa'l,\h4ȖF$F_(Әy0XL8Ͼq}|2vۑ2릘%/wn}3Dzs. rbcʽ s4'ϝ6xi9{H=~ U5{4䝉=rݮ>(w{3yhZo b|4s =,c7<֕] Ms m4MȦW2j•'H#~PH#B`bjґ=gwub&{Ph2 b D]`7Fg< Đ /Dn^A T|Y,hBeG,9 {f>yE]ƙO.w8 K$߾fu<.وπ?m ea; ÿeެ.(9bH/OqO]NBUCW>ڐMb|S1$οYi z`!_5`X~ hV*o'ۡ'k(u~ޙH96վ*ԳTE:i~QYqʓ IĎ+Jd$Rڗ D $Kbb is•1Tc -F1:CC+s]e)+󈳫.wּ\;[]]'F֌7;g}20 NʁV*e"*mήrN1%Dp/0w~{ɨeSif$~\Sf܇PU[ІI;Avq6]eܩ_e4BΗld=z2fN.8 (jg0}|x 3f q ܵ9npGgmdtTwS6g>F6wk pᒑy3_]+Aß,Š{pDS2ҊHr i }~̰ xxu'G}\@nlgJmBCTRod >pU_ 䴝dwq׾­44ʃ]p:1Yc~OYAxeIcn׌'| A -y6w@#LF1ì(Dە{bĦdcRoPcA&ϣ#\5>Śm=r%@tO}qQ BKn9ӪC4R&vpcBeNl׳ܫ~ZXi^ p:K~,h"c (oB (ސ2GX[9o(aޙ3`e2r]:ӁᗱIx"ĽtQ >s!ǹ92?\g~E5= s)=<";H&_ *YSxwROIFÇ# wwmkb™& X&i edk]Le`:%RXu,EN",A>nF\9Lzۜ Q!-|/ٞE Cǹ%tr;uo:7KIREr"SUI:'Y;%I$Vm&&쮨3u/69-BJY*zC\ t{錪^֮5<?}~@!h%S#vv˱0[rÚH3JAXC  lh u/v1C1L?kU1kp`/c8z*۷%C%|>%6Hr㝐%/lCN3%Q 9r":Wx|l蠎zۆ,ݧ U!vS׋|raur+S9.0 i~!awN~}j/5%qXQR!9,_MxN2ݜ\_'[^q# 6U7] -zlgҁccd^4&iuṶ4smwK7 vW}}G Ot>/ی c3s0&\gjZ]nfKFj8?"lod/'b`wV+\[M<sj^1\^W|ކ6O~Jr3XtP/z5+01BHODAšmw׋U5m5pՅ)%H$ 2ijgruKI3(JF<F?[ㅴ{AW>C(mPx׆~P]7" EWyaL_)B_]Djf)yC]hpD !UsdZlVN\s+sʋ5tXp%G#thГCp( {Z6u99 zX` yš2WϐX_~cDՕoLϡ_~*Cx3?MQd;T5ɣZ7ᱪL&wk$ w탏\h\aF85GEj8sau 0|mHNvZ SgHYMWo fB QA0Y9x7!;z" aI[ M ;:_` :S) 06AqѧiH8Up;.no<(2ZeqtQArmW!I+j0-{CLLo$kRvb m;[$hߞL'#7%'}Rh]IEX:(#7sA<\S:rWu=["Bq CR~O%|{qER0☉0[ϗ'LS8HҍZ˽]Ԟ@͆g9u?&C%/ZJo_zC=V/%%R\?+5 a{5 &DGHhĂҴju;)( 4jYY,}3(.X!0"s4z@lZކYd3B"Դlk{<3e6']/1ވ7PE4l 70+) *6@K#u{=?K/!?Zi_z~/R*}tI)/Mxe*#A4LkZ<\0Z+ `\?oؐXVZ{ )?2p/#t%v =(^\[O3ٔ?jp| #fGڈc̬]=.BIp{0ߘ VO&:X^oFY9Ba4c9Ri V)@(/x> zXw$qEJBB=.%4* {zd#M>Us^>d$72iY$zJr$K@${|q @ m:MDU]+c&fXE$*=EApr^(rpdK&Y+@يS*TM^DPD7}*PK46_) wu\ɔBտd KY mH)5yZN|wL^}eGBEY96pxk+6 m1@v6? ) ڂ~k1@͟=k\Τ" oMbzi:60'},@(ḻF( A09;T{P lt88ڏD]*/0@Xirl^3$0ix'oRmwgS3BA{m\N>68:jŎo33|&iu/gM)5z3Ԥ8~=q1 X8 kfhkҵlrf:AtyE\ve ߆KfS׷M鯯kkYUG xk9fz{OOgQjZobd´~5noG(1b4tSgLE6YSK%4\b X.I}n-RGcSΩ Uchkkh-w"a^(XC4EnH+IIaIz'Mʡunoo8cSeswc/kpܧpm}dFLI$|ɶv#RhyYb*_TGEW@KsoxNCV3ixōX+ ֦[ ܈u?z5"؂+/l,;SNG k6 F|VyH,QB>6\@7B4/TZw&4c FFNޱN/LJ;qy@ bm.N/Z[G RQOg)ÔWn o8Q-LE Qb"756E)cTh]M=3ͧxڞ.хɎu@@&h,W "S1ۢR eNKx]+ z' b#PKNidP"@1ٗE(5 \/ꅺi&M Χ h%'4^ \B8׉eHzoNLOLM嵥`W)Gd;khML.$${Uu s.a4,Cׂ;$9UhA_p4^W-Yv ]^4\}r.V=/=iϪ{a r#"!]rz @#Aw?naų$\i'D$1DK`yDV Sq !+SʼD*=TQXem +-h Pbh,u0{KM&D1 J'7W)V%q\R`HJ`OC6UdσݦH,^ RKzCydPxo|B{-u&%kY}5Žσ_CAILZ&SyۚdFe܊J[)7c/rOk3?#&Q]v!A4} ^tf&Q2ض+Wx}*u[AU8tı?uٚ_ˬxX5[u g]jZ+iMlW&~ B6wschARa1D咧Ih*ljqySGUL):e¥ _ [|-%cZ]k~29Nrg/U gëd53cfڭ])ڜt}\%kLS }L!D,uZ'@8ZfΙasv5b/ex'eEC+8yzH!Ŏ$B%. e/cQրi!s|&H!n@_d_ чT"@ F*bjz4268.o7'c:XC_Rra,ZiNfT zAbDZ%{s r:Wҥ"\RV1AQ>$ x4;ýJvT< qQSD42Pdh2f ݛNuy _\1~% +K  /Ֆ)5' /4ޡg)ask콀ٿ~h--+tr8Pyx~ny_j=qx:֪ 0OJ[Ȫu-iy,H5m +2zVZVW'!2̅:@[Lr(0/,y}mΪkYR})~ϊ5= Tļ.:[>ieU9m%6k=Z8;3k;hyٖkkBR[Oaw)3ߡ9Ny!z{ܰK@hy} g6{,L 'xny `Kr޽Z?܏Z_؅JoLPǴa7ӿd ?)ԥƍ]6X -ҪG ƪ%ުv St M%U1+?t]bL2M]>aߊȘ@@E8 ,\ۍ2!z,_Jx*`|N{<4A1@>Ӌ>/ xiԍh^؆{͉>"x%;O%[},+~k/$_)IfydѲmh+?]d{c _yYP$',e):I G72mC%6̺dhQQEN"U\Zxn9E|(ܞ,0qAoH?f2˜}08?ce.G^2C}1q18E,bͼ?C"VQBC~]H`1B,Un^"tBa~*tLBc\?46$.MKZD pXh>y6Ԑ'$tr&N"Aڄu4v,nR*{5Ro~DRy]bmGBD[)ƚӄTq!;'?+"1;!CV<,f;(BeF[2AMix@y%M:v(*-m%MA R\\]8|G+D(=t51o):zܫ %Lj^$,~j3f˭.{O0s꜐H3/WXmYG}T5zM̘+,Kz3ȗ3c#-]UL2@rޢJggyje=_|Y`6xT]_&Ew|*2M ^czPqgff[E690[MۚR[H3߀W[hkbv k #c ꊱfIkyIM 7(ͼ[XbJ I?Y^^e𡤌CkRdm^|%p`eٚݜwAcI|osMPcd$Ŏl[w2[3o ߜl ,_k1i|-41(ʖ1Wwܸ]"]{5u%cOEM\!@4'N(;i]04\\-QQ`K鑽]s mtk p*[5\@B6P՞H wz[Nھ(U]4_v&e7 7}~f[C%dGL=@CJ7vKDq{M#@a9tP?G֖/BoN,leeA2~59\vU=%Fm3>vM>J"e f[萳&hGCe!UXLZxyuZVù8V?Ѻ% P= N<9#4H.`F*C;/q;rJn(~v==0! U&<PuHI-KDA0Sc٬E%DL3zG${ H^T'1}s>7hll7t*"|--i"H*S*\)BeU9`$Y06G"jf-SyDCmwf֐?PΚiR Fx)W > >E'g/5f2k/ Nsץ)Iܳn|8ptD6BA*ý8!A3KMa/Ji)`!PQV0Frk"v=w n(DM%_U62@/ՄmSC"aq[::ڂ.5hFѱCg*w >k, ]/٭)$+ea@1!ldmJd4.4TY1ٴuIGߛ+^8`Y♝kX 5]dR-R,6 :Ïw[%Bk=;წB ׀LfuS$LDΙhxeLjd2lq'U^vU.)If)3Ku˙)Z\{(9.QWH{o*M3g/<'Zgu)xM]բ,ϫ%&jRvabW"^..̯w-`Z f,w} ?54y5*}qw R-' J/ffV-9*m P Ֆ/ڛn㻵F'trᒬ8F!_$bmOۚ5s%l,igimb$%q} վ cٲTKR8c͸HѠewEXn#tv :>~&zce`dGGWƓF:xWn )hh4r?Rn6 Efxk E;c >g'HxRC 1e̶a0ہEGQN&!:cFi#G@P]0 pq x%iĴdSMis[foeJ7s[bAZ%7O4FD]+9) FS\چ4_%_{rG]=og(1ƲJxgC{`n<|7mi}@`wO.FHk/ih~=OsȬzFsºFmjCcAq?XEh$Ir> uz%D()P?@DZ"Z\ N^QJ)Bzԛ$Y/= dn>,իpQ4M;9anrN AlOSݑo""8I]ĈĪ C۝{oȈ6sey2 C,5歷zwҶx3eCsfD͋yAeYg7uL:D8aJ ҊȆi}7.6b]6E-NcT|\)M:"{;Pg!-)q۲GR n -ŰI1"#9?:3.u~OT3~]ЧHA`PbQځ ܫqBwYB(E iKMU`pUPIqǙϗ ^'zMdoY釆\;Ua,*8F@aLXfDAy&@ZMڨ Yxﷀ*/tuMwzwh=R%v&/JrVĵn⧛ᦊ n^vq^ K30d7`&˒RMZ鯂{aH4eJ"%Z^K{ٓ.Tee8m2TsZ^Db˛l_`uE 56a?FbV~`Bx ;:.v_We7 bD#S}6]@9mrk/mc#<7T',Z&~3>p92͋i.}#mmt d/QTUJLeS_-M - H*ٱ]s'c{iƠm2->Q9/SrzѴ)M#-rȕ ߻v,&:ӂ&I4 ؇0[[@ڝv #_ލ+'tshptO}ZXo"o 1x4Ts'>wÔqFL\ykz'dHa֟ 7~n5 E3!)F)e78Gb|=B3_m+mWP1fqDT"P0Z!~^Ъ#q' sG_v^căf$o'kv<'|I(kkq[ZZQ~a/o@H~8D~WΘ&GR,H8*}fz1o +_ELGQ}tZK&qqڽr1㰬a0n tLA{b8RC׎c SAơiW`+m;^*©[pn1}-3wopږod$KcYhwA&<'4zw+%<ַm1.4llYoo^6Dሃ\GoRM"(@AjA7|AL[rOoIl0ie{G͠gv°wh r{ӈL΁ξ\}G9`YY E9,jD4BZj5Cg7žDRWC9qqgǾ SFI4'Dk-G@/lvYeUG:hl$B'.VoKpFzထҍT&>))$,;rVvc >U8%4 =ݪ5T-zz!DuxƟ0.>}gClNgOeh3bZRg=e:?pƯ$6@){B wvJzm]kULAROy:^"1;kq? 6#\8섥rs3}rsjxNЈg!VZh`\"z3K[C@/r!IaWMBjiǥ,3(8q|?hI8tu QLVXbckS# f^zxWrHv\IL.Kq0Pt"PezKųfu{j_+0cA̪-בּ.v+MCjpF*q T(2|&Fؑ"|IgܬB Kev-5ޡC_"^Hi:*f2{ )^rWv"I2g=8GKDL-s JضC&VHDW1Q2E<,̚R!hǝ&(; kza#FpZ 1$h #G+M#" ʂ_5Jۃ20|Xa|CYT ӑc9@5qѢLIк LFUnDDMՋA)oF;{TCH87N7g 1R9e`lkrL>3bA}lHv#>ފ'ȒCb 18i]ɐScnQCrZm30rҷӚ($E(|-.~a&+֖<*thѲ*h\4N\g*h~Z {X٧Xed`НN:-(_  |^nv)36 -U"ɺIbUJga*NtN 1{tUd`!3!Ċ yF,|pEݫcJ*,]rXLGA8tYAQeTuLɖgzfm*T~ cҵ±Wl۶m抝۶m۶m۶?~;UJuǸ9mhG1 ψe*ޥ4ˆ"T55e8zHA}/x$a V'_XIn|ȈN]atliFCiϧԻ-hRBSբN7j7i[|c+*[}sRMU ;̾-w3)D9^>=J%[O<"jx1w`73at qs=Hs@ $\II2iK .AJPͩJVZ_HWa'o \>^>x^hSFZryH-N+Bo% +׎h(xAsLWrsh8$6q6ƌgQ[@YQ\I7^Ҳw}%O&W"_]ZCsOO;6gJXz$$cOel3juʼnP` yl dRI(qKqv?ԕ~l@a( !cfVvD0,J w@=ɕT URD*vKpyU:VO 柲Mݛ[,gpU"oѶtgs8I :ϸ(I6/iݣo9=u Rz `n3y\5J͜*#j2uWK*K 5$GEn$Y/sA1O4k!OIK]t =.e%j472RdӠ5Sr|# />f+Ahc (׀%7u/ L->\wӴ:j<p!/v]s+1դ2kC{.Lg*+ǬOS>L5uUw'!ox3;$2@qe ]=(.A[db(,s޸on&JhR+AûAϝ*Zxs;#Fsހ:ƅkt3W|6iC~@qp)zjK rd>y SƸG\eLH.Qw1($oa!R3af:Z)`g퉔ꜚޱf< PaBb]Bz>eo<'<$'kZ=%nd֗˷9sЙ޾K`X{zݦ/e+)r@Zg%O]/~U eeVYBȩǴ縬2jRnjl#k۰aBvW7m: [j!HIzwEڶza'@,+nS߯}މUZmz\OQ^K Vm0qXK\&-"-7ovG V LS0$nz/yj 7z bkqB]%ћ6d7u %TDI&_2+pC)i][6rNo)BRGd1ksj#8J(j]Fv[R/\+m~e^i4b_u"XӋOF>jJf2ij 0Yග%'rp CP3p4A*V8Q3;ULQn1T{(V9ƂMD툾~YBR:Zqc|O%!4%֓i)',ACq̖v;i«rQa(lIb)bC cRaGitf4H"9"jQpk, FY b&XssF9b3%ɩ4n/ 8ErP="HI"[~k]ˑ>R2ŏܝ]`K:+A-kF\V2W;+ Is F8pD(qjME[g_@X!rćްg P h^(XJ)lhIiF&ݝԖvXE k;ҬdOmE,~;,ouy( u}^t)l}Y!NA@KjeRv EwnQH8s,J,=x!A9E(I,jك|9 7e`Մljb &%'0} X`t7PmLUQb>S*|h,OӴ.D['mTͲܥC,EGM_u{v0|ښp>sm@()9Q{E[K)\hc%Na9f ~ߩ 67iޢMZ<-94"<=^ :dD%)p̢U)RqoK}d1%0Q_+)pQ91VQ@Ѱv{@'_S-3j-EjUZx}ݴ3IE5X(u49Y}GoCZh(@dlʝ2Psx'͐6ZLdgO2ϜD{0hT,=} 13]f.16ĀSn.^k.Jxu)Peme4! =jY9mݜGAclF=ˬRut5ص>OtN VӴz1fcŁtaW+fOj$)xj[8F(0Q”,nI]3g;:f>4au*]c(c 7_GR 0w;i L N9Rp'e&o6c="inX,UT,3̩wOޮڜ'd +)N cVwfAK(ȁ%|/pc8+UpeYuLwjg,#,Tծ1K`tQPIg<`KV@<\A.; a1;XB"I^o?ډh)4g:D./|ѽ>l7WOvPa]4Jcu6) /ޕ=(茺\qW,ևu_y-zMj[)9H1`KrC /1K'qVUqz>EFTGccl^)`0(EtbrO WAP[4 +S1",G۹BWos y &`nb˸4U>MTn5-Kq0K_'|>5۟\M֍]pzy?{# 業j}sQUux|sm)!w.' X|E[ިlURv\<v8Zi[;_TV̅_"ھnJftRʉYf^Q-[եeCE|Q>4P霝sKFVL歹}yV[xvx86NYCظ'>xPc4v{ȪqR>~zdSVss/o{pfJqe^hw.K|6r?/$D_ G'pSNà !x͹Q҃L~ĴG f#-zsKǦ#Lf9لդtQōA @V pi{bh1c>Oax-5D=Xe(f.ZWtASKAUbrx-jӂHX ~ΞMҰɬ9retLvˋNv$RW&,gLP#CO"ӾUY8\^|9ˈkOouDuIx*2Pq}< HNQ)bM*-V ZZWbeF@W8@0/?`<̌h<3m[mj'0Lojq"+˂(xY`CH?{@i/*k$艖@C] 8iV=–Iz'^@Yy>m@~"L_+{80|AdKA/L"uJ>DـܦbI~F/ عZtEǝ8 8] '{Þ'ZHmĽ8uqa7qAĄ3ql N W3Q1dgGį\͏nq$/_ʂkK2*/OEv["(O8FS$im8'a6+1#؀زf3tS FUlQdTwA$I4|ʥBv;ގF3Tkf6[j@ՒCOg&=:.1װi]7n%Af$cbD; N7&>g̩c-K:wpQRy?q#vJ3^l>,[pQG#O악hC怴8ɬC}05|ScK:Qv?zT,(oߥs}:Y QhgNQս8;)[8A2!a 'XHgRPk^cIrWJ6gUK:LA"jsTn d Y껈F!t΀&:&`GS- BE`d LF8׭!Vߦf"K$jճϵ=ѩkFŒ'w->'a:p>HuM6I!5 7EP~huT2trOJ,(T[jP70ԝÌ U[sT$[$ H0)az?a8/7h1"MA>Aԩe_¥P?l Um إ9U&dڢ1mJ]*P:,rR)onEq)= b*T@\]%A-$mz+ᵽ#9|.uؓ~)Ng(:3xC+.Ö (GEΫV{ (EA *S'l.ɛ+)v"lPů櫀J-Ks)0 ɿG~"Ux =E}KfRz 55\/W"yկ짆H==Od |j/1ݦnWKD :;-gw楫?P(k<̝9=DUvD(Ġ1 +Y+ jejVc2zf>E~mwL9:`!` 4SϮe$dk̿w @O D. !U `սr^ q-Ɛ#pSH}qebF[ٜk6 21] d`~ Ÿ1..®Bf_= وb>qzu?4Aу*׃AU LS<[4-z`#V +_ۻ Pϒ%iPN0U$5~L0"!#bM:S392?bN$er 5 ?M*^ωƗ'4G7/WS&lCɲM )o>jʕxU7UT,<]]Lon׷]YFmM),V5IYqt-(2GFc#Sӧw^\-ZaPns3X\Ay9+nSVngq{mٴ^TyRTG1yB֜kRɯym,(tDPPrr|A1Ap`%BqɦQ SZF|f=3]8hHV1xVªkP, X HZy5n~~b?M>>bZPR٘hoT.79h(d,(>;x>~+ɩ`g.(#rAa*%`IzŒ2??ae2hGńBUsG;HSW V} ajt " z0 i 5*8jbrcF摮fyPHId3"dƃb"yZ6 .bC=Fdj'mT+FJI%S?͉K.r>= uzrLV0LK{ڒ$iZϻ v,珦 OoFoQ%x9 ?`+=( ?n>w?MƁX{YTAUaAR 6P$WQ92:} AsF$UCxkU"M bBzbUeCN2Ͽ(dZJL~ Ov4@|N }4w?X2sRS~#@q2SRMP0EuQ&hB|@|ۣhflys<$p?:3К@:\L&%ػ/ g^I9 8An ;E8~*2hb^La[0d#n!WNT Ÿ!-EdaV;A?E[^z(X {P  Yq\$aW^PA $BOv]FX2ķӑ 8V85HPgZl?#BF@zH\DXr9x;CĞe@g6(A /l`l!j8v/;QDؼ L)=Ye "@zRv[3`cOt1 _ _*@@m$Q)RD$l$%A֨BG L̈SmyE;h:@gb00D`QbtP7)B-`Pط?yM_ ض6}oG @y{MmVQ6ddZ Jl) gK BV}`ovpJww1=dwdUiI?pxn8J#fPz/v fPE CMIu;{ (n}gVw.&X5'_oQ<7ܷ13MbLӟљ1UNq]v(2M|ҵCx _]nPx4XZ3f0Ɂ-qbB)8xYcZa0I:6J뻍( c+" bk(c[qw +v^RL!hBѳcHmCT_A<ܓ6[B`* M05B{o!{1.6WViߟ#-^iv_d-qc!^ؔB%RHԬP6ZQ#B _ޱ*ǐcL B~Τ@6djPX &@poٽaǎd2,}ˤIExWԵb `9x,p// yv>R'9}-4ޢ7;z[-%7"EIjA?<c#";= *qDȭlcc [̿O\cmo9(aF>M$%léJͷhcK,B($>܊OGRb^2=E n`EP(oNϒij!#)A2MS; B"+8mN輆Ad1k&v y=n!]PI)l`EHcx,o`aO/7()$O/ ipt no3q , L?k,R3+3A|/yRi<6u^AqX]q_ :sly%Lg/앿{f Q)4ƫn-(? Xз7@ x50R]d}RĖ~ Hzpc&ދw9dbkO$p CϨYs`HžqƩ>s)<B-Bp%nѼ&.=zA/_#!.eXoy"S$\rPi+ء-RUMA Jp}Vs(YꚄpYTB+*[L-2qP5(CCԝ}&9!! _L2-8O5R>"ecR"\ULCcV"^[ѓܷ̊=rzX =u㝳:New)8?cٴfZjs/Nqd4 qpzܩv$ d`~2WMm>tv x`7ΕpvE Q![vJ1BEWGctjr5^[ LSvp#Ky`dcDz[M)j{]y{A\QwɈ5 =\NWkTl~ WmNy@4?8BJx_:Bδ(6of55ݳ +PXlLC~WPWbʫshFӫNuy6*G~5/<%ǂ鞲gIڸ"ʼnoo5ɀ`Tx#C. >y#i?/i<&Lv<})8Z,m"OU7W m7Ҵ;GR>2y6>e/V!/ET*uYI2^=CmFbdqp./dF A50l\6z|Ql89c>8;.'^'d ֩q-wq=W/P_=.h6 ='~yH5wn+=фt*>;_cKUM_en$L>hLӆ5l;,v=55[(߯-܍m-4ؘu_<<9ox\5ŧuὟeGҔdst|`VwG $f vpZ?y]y毌qnjov9ڊ`rS,2MF&V[И}Jvkv"<ąӦYK}4΀CvQL\xE}}Y ;{js=9V'ޯaI[gᘎXɓ.{^OczuvZ~!bJA]XDuƛWLH%jTRtԩ6Nh3iwۚoFoϹ"oq[kZ ڄ }m%"\O5pj\%:QG1;f^Cg7Zӳa3@,Y[u5.3-v>xgڟIkVݦGBh(P4n]t{ۺ?%K`iVpiܖ,ye,%{׬"6ˆ4PUz@0=/'=ϮxܖM;{(D赁?WfSd.?uO0ȵ=yOr/2'7濬!fǡsNĽ,['9T Cka~j=Ŏ^bz-rM--zo>o1~gx_*wzZϾO~͙D ^٤=lwKo~_T匘HQ[~a]D-@oD*POL跨4?=y=vRQĭ)!LL\R:#ոO<<5/k|NZ䬻73A/}D@nqtntVm|I6hz{Tş~ú5 AvRa/u7J5c#~[-2/8Wq;vtYzԛ`hTK~ZtP_%s 1Gō>C_B#`b3\6¯CDlf;c/v vBINg-r/ ! -߉ śGIrZG(|6n8B^>NF5HuEs*5şWm1/4(},0Oʨή vx^PG̈́C<6Bgb|7BR)#g=e~Ɯޞ너x2~ۊ4c { &-}x|t \$euDki:WՃ ui {CKSbܛnҽ^SS3֏ ̷ ڰ3;L-Aȫzf j2L HeM91~sx|(Ш}42nuZBOQ(G;#}VH?/eL,,E>nCAXe\mz@oϟ ύW5UYszdeWT?ḱfZ5bZvPnv]Y^E {7o$I?%$ffj9t_cc v$28&׀Q7t=3'n(; )WLiSK][iv =oEQЇZG|5Q&hy{M:,T--FIN//[jQ`_tqwJlZ&+}NAu>s=;.G!G&GU#C_&sf+Y %g]U)*+=wHC*{_L:?ܗs2yB|7J-M˨5QD/*!O> AwxZ>]:߽V\N+)[¸q-y6A0Z`++NZx  )ִ@HҘ$7"}1K3Ai}~^1wysjR=44ظ>oq TWsb )H;3f9if4Sֆ SazTbNɊՄ{#FMbrJ%H"z2(^A9ud?)E_LH&$u$u8&{2.,&d۱Wmm}q/[3d^llp.xW <AO,LL}F7ߌStٟ_w.Z:_x^i:_||tO|#"WdttܝYvwt__|_Tާw:{ivMKxS|4F:Ն07r_Bܺɹޗ۟S'G-絫6I^7^ߧ6 K*XNnI# ݔ1n.g_ݓ:ɗ:ϗt;r:Oܴ=;M\7_7t?UyY-y]lM2V9u~7qZ6mdT=~(zz#KcݏsÏydO//Z/'O:OoB+ӯAoWWs {Ax'fD\UNKהukGDܓtq2&W9JjڡKs7s ˣ?g/Q2\Gq$ΑuϨQN\QKU4ƙGGs^?uےscrNUwrKb3癦ŪrUOek\uWlyypT邷8iǘFc$ WQArq"'4?pIkr=TZe$\F&-'F˫*[*շ& O.A9o*nXV%$YV=횟v4),#+y, jj gbmmh0DZ{ʹL3ݒ+N4:H܍~fQY{ bR=O) T;ljEAJgZ?ϹSyp럠"קEJO&I]\o*c]EWMQ,cJ6]U=Y5Xٸ[G5WVgJMU<ͮ7wMkoVLX^M뒟q 72A%يgm[FfGם3=0u @T߉u:Ѣz d{Q̦T?ʱW׵ˮ83r&S1IE˴߿P_Th欆7!'53WǰO1tsOU\;..Ge~xiE- Qw85n٥|y-tjh,.g\rcn\V79ϜΘt:]xiqZW᧡Qg,3Ilcu:k>M8je%ps{`3*l|tS2̉z=kɒhe ExMmCHWV_5YI5Bifx v+쒩t+ Bihvv:jMxaG&cFu"+z@9A&ɀA4bEzD5sg>џ AgOۍp;ӫH^$a1xV}(1/ەp1\ Od±MJWD|u q/q`p5& Ï+E~WL)^P h,!?Tk7"gф~x/3+6gf3 zJb|YtpNV{F"~f" U lRπ6U[C:9RB \-u)KͯN8 ޿΀?O6Z~tB=|4IZ>y[04:=]b=x¬IVuMpx~!`6R ITT?u,~ 97,pG@CJ7Քñ3w `ѥ0wJ ?5lE8l'%W݃[j0>=l֐CS44>f!aP az4$NZ[W7]« z$.h%uMFh Ij\!(\iz>!%u0eP; ٌ' *T-t4Ԏ.]?ñl=܉^04—jQٽ1Q'q A4X>YudfXgEę"y`@[ -w ?۽5',HH#.:C{q +roqBY2|mC/7P*_\S>`2e'fL{߳[a3uCCnQA/Bkt'7 ?jE灢kS)CcU?WprLp/?pc}^{הoV{ WCjPj|C3_`buʊoz L y mKۃ{q~!/?Dq=lE#Υ6x:vmE8ȉ؇ (Ex_-}fp // ø:1O/J oǩ?Ry%',c@>239v1&շ9'|#Bi3jLfܻQU'@gS=,܀ƥtv2鑹!)dd[*qwx'9El8g!26̙$N ꧽ GCb qUF$\GLE" I0UƆAt;c-̤7A^Ɩ(_8O\`c6cvF$$mQ󏢵P#yKV&O$EU|7]DU%mTQ`sb3$U}FmE#n˙[(|W%dS[ .`oSӠX̑Sf,{WfI׈`1!*k#*,IX.::VSMo"LۿTb_zTOL+uAs2P>-^o}W{xk'( #nv?ٚulGS..Ww 3~kgƟClhsbܵK" ߚ'%t؛8.j%#m|DpSٴ8.UWN6-8=[9 [ORém U zE{:nX>+cwg0܋U7%1O Ƥ/)0&1nUx~|{^7Xd>:Ƅq/LM=)6yX?q|iuiZ}{x)^dչ90}I4T f&ȷl){&5.xGv;L<# D9It)N}H&&K[#?4>\S x>(O;*78GH tHda(BPO5] H&P R yU8C*nXI\†ws4g_;5 e_`ә}MdM"Qd4@<.>d%D_Lp1U3}[_u_pg}t|a45Tcc[M#LOy|xˈ\($*8*ȵ#S7ZN0"OXP>+m%ᐿ;?o$L1<l)8t48pq Q5˟AV< 7V^F-OMrExg7qhLK:ڡn&<;perȕjʕ, ]4$$4e OV@FPx~L)G^[W#1?prc ('9NX@_ T:1nsjYY*%gD?% ё?P*pU*ӵBnkȸ?eGbF3+ML\N/Dv:huHo!H*S ?)`;6WlMy"' ' qlT*!1av7Q_Ue1~ztǘ,2>%a ol/J#6wß~mUBYɈMz@{C˩h^hh1!+ܼbjfA3=NLxҥ3]~9ą޺1Z,<;uj%n.b#7?g,n6W'7џǿ 1_?^t©J}!N рm,NRp@Zpk"0 9h7J 4t:[N|L>3pؤN3=ywr~Y'=aO}& dm`B?nYu#O'9`0T< Lq p[z ABo2gE1< .IL7BF8cF'0Fěmaqg d Q dtǭ%MQ|2QC!ݬY[$0>y%@5 O_"Ve̜ * GM_=_mi iw]CL#?BB i6wR G ;ޓ@FH='BEHS+ia! X$t#݅asCgGLfݑۯ np~1 G{ 񈅿xS!Ϻ0wF!Pr'6RcH4J2Zok!7Y1E{g8 _B" `@ 2tB:WSHKG̚[(UQ)i}lPzA/oP@WX"6a ޜ3 k*7@ 92k%?!֯LqC@2ϏNFG{sTgcT6NF?̪~I3eoդ;?z*ݷZLTNA9ثUX*T5t!)4zh\ֈDhbAAWYo&Ri+}gƏ\@]"mːz(C\O6oju|553_/N45ЀZH_FG#x x:hQ?΍P-CkYi8UgXդ>PƸ3vR((ؠԟ!Z.ote*&C5uƉWO3JbK &ћ{h^=hG=XC ob!C}p2LyĸnX|K1XR|!Y+T#[y[zT\zr89N0Qŀ4@x=7vT8852!(]ʸk+VB|OO T?DYtHq$Q ^=B&3)7,:>6i^=BI,=Z@Q%M+DCch2DBTNFD1"J4V@I}O3g Y` >0`~ZiBp\pݏH@H=q! z31݇ 8vE⧱J^h>KbX@Jhfiע! arJQ B\qny11I.ZߏCƎa㷣q2Ns .no`[pYD!ĸ#EwA؝ĈJ` k_`*}l$t5 |Q)ۢщlP@FL;ڦ~xh ^-/OĿc]RZ"E[=jZ}ae2b fH/M߼Q1B,Mhm?6Ru K]Aox[K_m50Qc[YakCxk~9hS3WnW47&cJ:7? -G@d8tо8LZB8o& I|kiԛTqh T`wk\!E@M -p"K #F~/&~lBTk-;ZukA˯ns8 X68d#JFelcJ^G`1X`1:EDUZw<REm;F!6A؍oKi,;ړuHiNpSlzЬTmq|&xHQ;w#d0E>_2M7Z+X'iL.ypaw/Tj 53\}t+E/ ;]-lEV kcOٶ H_Eikp%Ūuȵș?KC|x? Ƈ]3WI!k0[|jaf-&ȨPYoO37/ihS6A-ZRJ+@M^CXփ_E[~6j:ˑh42oUυ"di0/F;IxE`8f>bSqqw1"AʛO0 @y>7XD9F&Ir{& >g9#18c2=xDm~Dѭ|=:`~η۰nϦ2F%rQ:ehZŽ;ɟmrRԁW=oG'rVj|2l'ڎh0 "vPWۛé"aŘYEeV#-B@bsQ= MMC + D)|, YN+g9W +=:n+Œ+Ά8PL\! V౮DNY3/f̣Yځ<흟tdF:q V΍p,^A4CDNgyxT_@fKSP8o{AķʆŶlڝ!/n ,6Yyspw )VɀU8!(RFOB28Wӌqas8(CdFHL ";$"(oQk?y00ن==oZB Ѿg: p 3tsU/cYg,t?Vה |@H@&&wW;fp i"ѓOs1cNlx<8Bp.z=`tBYr#6W"Ag]7cuZUS3Q>,x#tk:IE>K{V`VšF?]npRYBwClJln׭F1W,-خ3Zp5c;k*ht!\ \H \ QՂI6.v$PׯzCѥneVk=s;a.=r;mH}:Ķc=Xy %ۙ|{l,w~8M"fBxǐpj)?n)x\}B"}i 05YS8ǎD2sHH<5d1i|.QALal/򳏓рg rA._ #ۿrn7J@jAl: u܍,)'&ܠ).ee툉u0'JSas uK?uG ;؉Ԁ cDKk3z}1eKxfHe-XԂHq:]mZ蹗d_6\L2۵QRY~WH:1+1xV?dEsfH ~PCQ1 %˥IR>nNMBtit8,id{V @tb?R zjV/pgރaK ¥G:6 69KV 1,"S^V,B<ߟ\ɴdzTq %1ay&3 [)3? !me$FJF1&7:C7mHڃa3ȖeN/-_902P;l {W $D)`[͊7+SߑN\؝"?+·bkFwE3> 붍%NeF' 50`q==hW[ E dqqv$Ⱦ8}bd`v>x,ls6;VR{S`7`΃ . rOw]{}_Fx(ţD"s(GٴҤfuM#knad[#eסSq C&[w=z^YLOy0~h ]f=hN|a_o6"Y\NMR2żLx샏w?%ڌk#0C ̀f22"뜿2Cdm3J!er<=ӈ?wN7=0dEF,_XKt{b/I%?%d_.o7'K,g;|M~ w*٤ L kйrBjoaS%OmapHɂB $r(A%xS6C`y7)E9?sY${ alۭI%$"vϣۋα#Z#ڃvq ZmP]bmVC?q&I9{b 2@][6mp( D"|,u\Gd_#JXcR/_sa aqBb8m2hY5.?i.! x<:u#"Es,bOBI` 5 Rl <  ZoVZec,2K-ȸ@v 8Z@1-OqHR&_- 6kji*Ltc>e\<b)ᒾԿ0㠮gPef#'edC{,ϙkT%!:N{;>: Ji#v`,*EsfP?b4Ff񶟳q]\UY.|(p?6\~uRRsR4u pE,N?Irz<7NVބ‡ hȜ %uZ0q?HC0=7?:\\ZaI,B~uwXǾ,A1rP޾REDm3n7?Ul*XcEe549Wѝ*H^zzE~tq0(IBR &{;I N)>˾ZgLA%+0wLSGT/n4I,YSbSO}pu6O Hwm=/.SBx5a=9Y~ZKQ>?./b.=SIbvn3-z<4EO{B%Tb)^=TxTȭb$B}}wk]YLK&8x]/E8)X\—lG]]pgd2_ª<ʷ4"2E-RNCUe'_ܹO,CS js+4NY1黓6jevM޵ YUBUSlYTݴa84nB.O8lwXc2+-f_b7(Hh8AC^8,IU(HQK$Xj.6T2MJ ^X#yse $=+,|OFLX8c0=T8 '7%m,(;N0bX)k_WPpU¥ [}o;Š[v=jt:ŜMzx͡ E7+Li)S=k<-OTpjB˰T"sw$lf : `L~6m, f+Ĩ<7 cG0ۯq3ԉg*$KbPF4`9Iݮy#^!RDC㠁 eU:E]-2<`1 /"-< ܻF fb7:r$@__C7"v P8 ҿ(I;:!f`E<`-K~s-2Bڹ gt]u8&P/V)Ca2/٤on-x\/0+%xh!Uj-KN۷$({򠔄i|VŠ"Oײ%%AUdсmriIMW&~L_xiTY:78rtPTTS)0i4?laIyc -k4@֞n&$NY^U L_ 9[o/ 4z>uGy5C50U hJ6NˀĺGLŷBM/pl֏H]) op5DtSbB=e*e5< `ķ9. $+dc1^*~SEA5\|qק1`0(1b8ngo O Z5 ~}$z!b#+i[pSJv [_1"Ϫ'cYM@qeb&hi!5+(_))~hv)VIh@(v2 )iKǺ퉡[6ъ7DqK9DH4Ct`e~_EA -sPW!E?'!QEcŠ`C `톸R#TDp]: EO.1(x2ssD)!JL#9h="B\nm//rƇ&mhsƆτkOZEuf8cnkw )ti"zYoIm’s{UuCs0"\3w1c^"J90ؒVxaC`83qvCűYQz=s@SCQC䲥I.xCo\\ 56$Vv(Ǧ%*4 rhn[x47 a"|HcEؘ1uM6ùdҹȢw]_7m~˾-zj8m^2btkC^87'8Ԏa p@fӇ"}Du_as}wf{eqep(!nl<1Br+fB0 2CNjk L#Jf S~1AKɡf,D,mffdT!X迀2 gy]$I4$*hU a!j.AkyQ^]yyΉCmCv[ : q]P)~66F!8~˪I*PK Qqն Q2S,hܐoIZ,,OI1N[`D9BsjxpmyDX#@pjVY +CI此oIg[ XhUZ1oP*'{pѕ r-M+8~ 97lIіqzМgTࡾsw {k_k}~<_ f:~ܬ@`>1|́:ŁO"abS g-p^LHCXXFflM1KR0u Ҕ(;iͰY`_8gl/k@oп=L׿oyvA9@6~$g Bz48J&}Ѩ$]Č$X6_6W^M*XoƜPXs$L5VL/76[RfdDj3@YyĄ>Sa0dQ(ؾ-R24t+%ZtAmoq 霟BYk6Y Or 1T8UqьZ>+Oe" pّ0)4ȌA8jӹ%i{R ))MlQɿT 77מugSu[R}TJOQ8bTuga|Aΐ314AtM "ϫ)Z@Q gs9'A!mVT2{@9TJʊi2PG $$s$sr)/9Ջ߿.*F`cDG DDsy,,_Q#$ݩY=^>#d*f:e!֣%7ĬeɍRƬu)bf1F]ɓdE*y @Jpe8ZWgp)P;0P+6tɽH tq.j9`H&"6T%666&hK=*/J(\C\PN]` `|afoͶm67=6<ٶm]]{\ә3͜gC!8ߚQ7(x^E'Yv[XY%r֏$ebpJJDf]Fԩt%tkઐbx3BmhSS`<kFNS:%O|n*?Z5%Eۦ7hx1*$  .rK36KUs)#msQ9gA4.l$a"cהi#a&i?h!z XgIib'.oO yr1!*p&b,/Ik\+;KZ*y)i)NYި !LJ:cqd[~I}IU1ZN; Lu28m}qD9jlW%N=)I5l,ȭs$oqo]P_DdlB=l }q<8V)fĀ/EHơ/ mD`5q4b# >SzuvEE wD4,TMJuF"2vsm0fopn)ZQn "Ľl t4j3s,G0tgF~?cdnsrJ+3bS馀kGu9Zr{ߠTn3I S 㕣" ^6fُ #NGu"&:(Ό%eœ#cV4 Bڄꚅ: pqu3uX-B3ӑ-)۱?T!1z[z| 2:2oCKv_Q$T܏KRoUƔJڬY\zHȿ)r$=B41F@m/WD> @}ʫ&*@B&.#\VIM@=QCAvT=96Wi:;%e,M7ԓSG%6ƩEijf-%j8 3bEa=ZlwR=rm@rRAiVΡlr5WX`[vW"u<,$0ϒȗje fO+AF?hĢ [آU[~b ׍ 2mc\dvJu4˸ݮ[`| {<(Ï`%Hm%Gg?KJ9EZ;I{8Iddhd׵s +S;ݭRe*)U>2HuSE PxZyY4{20 ,f(IwsoگlqI;I)a4s5=|?RuZ]U_-.2ۆMR%NTW㥧JXGr8NPa~W$:JHkϧI=G#Wg3_fGe;ИQ~4PVgډ N;AG ow-jP03V()i%Fg%z'OnQ;hyf#n+Slg/ȣEO=;3hjH[BNъʃS+'Z+>?5+Bl~|پw´A)&[- TuqKҞǟwv_4|c17ഃ?iCwRZ&b W]YKĨ |;_ͫ-lHY֖MqbbL^Ryxn3+n` O&Ij_*doXrƌ3puqƮ,=UJXy.Cv.XAf  <OP.'CDd)D`DB>,>ei$K!BЀ^>mG/΀0qps.0OangZ\H8!L" ʵ wKlBib$oUb%bHH.*#~zk!C .s w0yE)G¡BFE3Rjv+9tۈv8o}yӥ!9jm[{@g,s3WC. W7#ltA S$|-6U;"@w| G;]19;#Ac4譡)=al)-k)i295tz +}nTAUz=r.יxҭ.~6hV'pR|}ڳ82W_pP9dk=OD$ȯ=bO; rft:|<\{g˶Kq6 ;yܓ<'14'lc)yP^?čxҁX],56Y9,<_Av~LZ@S*b3okn>׎ʼnr Vn܌ pmȁ-x>Q<ܓ g4?u'- #pNNRvp=O?'nzא'I=ObJ6H0}ǿe-F?Ф(#ľ' SFcD03&|/v(K w$)8\ [|N2g|xw3a``A@KЎ ojG#) 2gˆD#ހkq²-Ξ5D*cBnaU0Qnvlz~o5d3J,m&YpD$2^_L=C%3[@FkpKBCH萰 @CKfN# zX5TXH`@1IO Ə d3 3O[8_m=8V?=\9>&G*ӄ^JDC%e! /$VM[X?? &\'҂o{z*kϘ=:pٵδ{SWn8"gM";)NuvjSm=~uڴ,m%o";`|F N|TdlsOIW7#W43ܖ;sfpatq"ة]Uww~\7zW8ez~T^EnK=7}ANw`tq. FCrʧح9\~Pf;*RԷS58&*JxI\ "5IqGueEخ)aGDshVPO"vf\Bv@Z"r#)w,,gԴt~Q;KLk)>\">YM3M $}@7n`! UDݒo;^&Z;^W1B½bJb Rz[ !EhI7/6. _9qWH^L GtKS.&'R,f9H7aާz h pޚ]|g3HRG:2CCdgG rjzi; >51SQAJ \g)m,~(#sზg]"*#MZhcz⯲+ !_BbnEmZ(`[#-"7z˝=U7VDO5]$oń@[($Rus{\:ؚ5o̎5[3#Wv(x]qW^Yp ^4:IՒ:0|Iqxx{O7N<ʴ(鋖}Br#@g/h vIzV.'|ZtQU\r ɋcrߓ̂w,B%;?O x[(\x2j5y3Ie ϊӏ+'RP` ڔ<CAۑнCvwYW)7VΥ@4`mydr|^̿t5@W.fRK' !J1eoLoN" =[ =OVzg:T!oWT7o>)d[BL,/؍if^O&>ŋ̹( vroICS\T.fͺ2;5Q(^YO R+f2.r+1D$ ډpliD$LYB& )F!މ\bv}s4/9B)^da8ڇr|l pS5mȦPD=xܲ^7Z&3,~9o">\IJ>ir8zPP%{&kBWkmZB 6J,"AdҀ dw֘w%yF.O*p0ТW^3U;ji 1XKcRAFB`x?UFiݡ6RCtU5ųXvfj Swf mO 60Z`U+OW:#^A댆nE{U$o§vc%YˠG# IÓDSN?fEٗQ5s<eԡ”M#˺L> n"/4Y~d!#P"`q xyC O@Ab g D[$)^t17oSG=(pbvߌ rAbhC5X^ ~a0jkB%BjPjVuy?]0 ?o +iJEO8bDsBFt?^~ Pٿm^;'Gּ55FvF"o}"~VV{ϻ Qn̩*. 20J˨,rEnoP&m1c6&D7ϱd5I{{\]moS7vLѿ<ĘU{X,xgqC(RNM!D=b-{oE~;`CN’[7TEXc.$xx!؂ O=^_>QQ(H&4?AQhJ`FUth/.TGd(Ȱ던LXUsS|oeYvզ%-ƙ'р*>;Ĺj2iFō|ˬC?Iw{^ /˥ঘϡ'/m/Ntb.Mˀ=\v@,X{Ņ2lůlO v乩&]—n9ux_?H; M8:64=.*—ѣc0^=f~qU"kgv>Є] Hiӳ9,[KĈ6oذGnu~K^bʥ}+ kCWS11Q# Zb[ش}bZkҽ?ݵ8`vtnS+E>(N¶٭OG8qygZOWQQM]:]qjKT:Ղy5$FENM$Jd@ns]iPkE7֦gV+Sڎ-(aZfLƧV0/AHˋ8nDF]wtL&Fرa)4NZ]f蛳$NJ: )>p:,9={[2?}4yPO.3EІ7m; 뿒ŋ1O#R=g_?tPNAd2d[υ s(ǔ TŃehb݋qR4 f1QtB΍Zrj11VjC ]VjWM?ql/7ײjj>BQr^e(A1V4pg]#N5V7v aN9V"Qϡ߬4Q ҿ^}!v Įߚݬsnb1FߡꤨUW#^(1MR{Avnۚfd>|ٱ~L5Juo\6Fl6F}"ɽT8VY<ɱDza[cg ~Eb< RJs3WzQ$H k=mo5ғuw*;GQօ7,0wѺ7NC" f&9#1d?ג,b 949npXWoT18&Kay*ϪVb']S85Mr\X4f'*R`nퟡcB-G\TUjii9TtX6WvTMb:.)N+WhZoa>ߟu'z$1'VViZSly_bv۶ǭFfȫB-jˡ^um=s$Q=2$%c كK _.^[N,D8[;L6 bg>yƥ 念֚ $ۢBDy BvFR5Sb' 'gGU$img"?l w:q\En9KIMAFҧcޛmPL5G|F3fYm1i6UX"C/䅲t'UV {n ;;%B`5y۾tƸ|:6IF&6M&|<,(R,GԖ;}0_y߈QUK񑾩R" Eg>͚{zFQ/Uaq_}Z^+gҀ <,g 8#>EzW#ŢjqܫPIdroP/ς@`8NJV=vdaaq̚Y?g+_Rl+Z6:}wE_5z.Hg\k֝v/$"taU`TePsyԕЋBd rFuw˃`1Er|)[@h Huӳ2}"6He'8H Lce楮Bozo;!GoMX_W~UQu5XξQ_c'@׽:4$YRI̷vlTW69r2EEG2}0{iE|q#VBwq'!eMTӘ;#z?z}P")B[VL#@;:Kw \h!\[ڌҒlr^JYUFM3pcaa;ދʦtt2|ZX$v ԫQWvR9uE@۠[cKmQh˿A' Q& 6R#͕a1 KlK,.L/YI\DN]1#GN˜F26Nh<@ux =5]_:}O@V)rh)Sf/Q ܿpX"Ʀ"3|1V4-&*۸K h '~)Y\;*iFnS2YԸi=t Ԃ2*9B;;saAĂvAu22wFwq1sE޳s8?SFd|B(:cfԑI =` EKR=)KZMnK+1&X+&د"kߕ0)vNkT5L4_2(:J`-ЙWn}"mVx/,w2Oĵᘢ=<`C"0!WIjq'o !M"_cR3cVٿfWEr_=s"+/^YXy9V>o|$mc C5'7&?O9?ʐ*^8[4Mxs NlEl'gUck_e8qkF,(>"鈴sMde0t–wp]'7ERշb6Gf"M  4ҵqS6~Zm :p6*L)R|}p{wZaJANrH<1D7C&mُvK^ : i ~Y(~Dp Bؽ(A_~S ~zWƿJss'a'wM0QlYa[57;__V;U64:>nvS%1$sۧ@ Ʃ }d{gMp6R ]w`I"IjJJyqD\ivfh( ^GO(zpMFG>Z0=.3HKJ@ɅPXfO7.?ሡp& (G걈FO:ږLy)RKP38M5[VIhbHmqEH,,m3KkA##9MR]r|MtUNU|E~rn%9Þݶ_kBY 9Ah2&F8%ՠ.42QG-kMN@jr0 pUC8ʵ++y#n7jqWO)\7kX\T;&tw ׎%"X%D*|dS]̇ "[m?l^h|ѪRrz i~lAT;p Sf[KO(Zj$ k_t4}AѮC qz(Od8dȺ$olBw t}5!%l!39`1BdTWZ@Z[Þ5*X]Ea$&Η| QX.HpAh =Va{GC߬°Oj(i֩E9N)q "rjF/mY)HPk  n#;1o 2&ڏ< M.CXtEg;opS_L,2 BBYXh1LҴKQ[T2n<57W\MJם6BV_c8iPd~E"RqxwŃ=5c|CEUYr3qA,ap`8ըlh$ HMmC9v<ܑ+۵NJ7!=סr#j"Q벴L4=#,ĕ.4OG^Bhu(_(`WB"(PtXSSyu:K >_-`rDIRҐ4?J @Tb׏$W[ze6*^OpBn $ WEc]]nsPvHd;E}Fizw>Peo+\T=0: ;RՖdu8rFl@ngפx㽴I!#:Z0.'/yxVIN5qksnJZ&>5,xqQ,_Vhr~{$ + &R7azHO-;%hH7Xz_KPjß[$"4HTz12#hqHx;3T0=$"_j݇}WS$!)}~x,Ak{S,VFjS$C6uX!ʯ J?PM8*?^@8A:z/-E,? )E@{$>"{ 22-CSͬ >Sr3R<Ԥ}ʏ48lɐ>tEAR6RZ?0+`CA*l30&W>drY[?|*q$"tUoW{ny,+ľ}($zy@H%~!i,4+ns!J)|OÄyy~voGw,w1@(_4yAgȀthLbHw\HѪ2$YZMRR${͸vjrX4Jf ڍ}bţ}#9WQ?jRI"&CRߗ5, 淹p TsRJ};TC(^H&lC/ڌl$; O $e*( ļc>_"NC?9GV9# e&3230&]jqȩ81X("aCN^@;OK$>bXsXvoY\Fŧ,[B{Mysυ.-F$; ,ywiA,fM Z玵#*=CNggѢVƉgY@1,CXL$BdD_U¹η?ߞZPtS@g!o Xq#FXiwhxZZ2e. 5Y#u4`ϓwщ[\ث-Mn^pA7qVn7]6^p=vAgR}Lf37.;Sau/A|릱EڒZU#ƴ(M.Gjxf`&_h7"A2ںX2vU1*8F:Zy ̦c_ؿKY¼JrҕCE- ApT6Xb7V'D+WK!ݞ{LԅSCf+xŽOS[[|ȧȏj4͹)XvǩHddM~wUNG4[ʳ^(7z>^#UհuG0[пj! 3$9oBd~m'CO56­73Ouŗq###$Vi:joVwMۢ.RLj(-F,YMCq}.Xծj1ʭ~[OqB{U4k?eEk[$ͱ<&Xu 7HH*u*Ԉt nkUąןFVdԓIe-:#rJĥen*ĩeZ/"ƳcB%|4Dl~1'V82SwSo4]8fqTqtjq&ktHjb&:=8%JίA⌚x: *Ě3R <OS7:ׯJIp?q'U{y1tA}}, qWo> #7tde%MU:jã :=ܬYn7ީZ|V!; q2G ]+m_`Zo)kodvS*l9^ a׹RkչӞr*/c);2m'fiAC>N3mst v6%B] W j `yYQ]&kYycrc>oi^ZAgr̛)ouU} Z%zlTߏqTYw_eI΀^PBBi2囶pHS:T|9~&tF<F s("~+rqT*.7ǯ).ZY\UU%ːBהkm9s"!ȗ3kf{[ E %/帽8 JK4JwRKtn `*fņ(UriJ׫ (ټ\Is`T|%^y ]/Wnzoc2r6]oe{Nk.RWW/&%Eh[6:7dl(j20X`!*)SU+;ASdW2EFG3|)Xs[ڕ8Z{".r( 9KyZuZ)w-N7xY&/ήvwG-*]V ݢ; I1 t7ȓ&-}ׇ!&Lz tGpPC|zJ6]شna vYj^ $NGm$V:_揕̕ϤřXW͎&VZ_+5AAHe~o>|@?LZoZYlFr/hCc's)O͜~չ:Jq_jE ɼ5{a+KM4d\65NKƅqÔCdz|/M)RlVBէJ $X]$iV%b4 iR 'Lif7$추ޥSǪɻυVӼ,KƧ6om.q 'ew[hN:m\\sX2LgGծv_ fbwu+۪%n;N` @]15yViى<}^mQ6yQ3Xm_iCpRhflEyaO$Os8h&8QlᏧvOlfV÷_O}۪Yɀ"w3gK$NcBʞ;^?2h . 2^4 W Mb6vp˨hТݒQ][ُhZaO\zO*,; I6=ڢR{%qs٪WtG2+#؎C)q _7qtU-mC IrӐQ1D Jq%@y4wBpESSuȖDhD՚&x A%AI ocћeo>I*n1Тni0s&rDxzaml'N{m]zm "ÿz[ޭ[ٔ ޚ]G{u/!b'=eUvt8Ljԧ_ö4TlPm%H4GڀUː{]֮nIh%MνgnCdל}iIj}SH'ga yrޱL.fߛD-Yy{4v%u}1-r'"#* sXbѪ¾ TgIPtX ,F۞ZUS|k!^\uah8mouCC:)ƚFrP9k+<йC oV[e3[^wKG2T_[u}A# %8WPRwVe!u݂15[y.&MӘEͶu/+Y.78fǗWcUJNgEDJsͩ\5m ՛r߱O,+8Qc;+䮒S^5/(S"\߼ijs>}+%۷͇R+y|:̟̍c9ξ~{RJャT{nO\Ot 2K}MJѺyȈ[q$)2oWƺ,CNe]+̸|rOH~5Z4 8B@->[A]&  8 ӷ+n \*PbcQrKT)/6¥*Bh3~\} ։7 m5A9ǫ{XW#uLzvsӋLqxQw }e(gI:4OaȪA<]2.UzG&A%|ٯ$4.GT?k7/zz2À?tTI#TsJ=3{{WQ:)g#EGqʀ\򰳶3E~)J郝3|'MnE+$UNaR3960`|Qj0'w#)o~DBۍǐ_֭3y8.Ņ_ɮ%w4_haHr9 bTM[Ύ/e׷oY\&ٚc[l0;B x4]y ۭ>T+T\5yg( <ȵ';ae&./ӵPYʙ| Kn1,Atqw~އLJw) ICr`ݨI'h%1C^loo2lo>ٹ*jxjþyŐoQZ n$ YJR j6o-3zy7g+ZioU r|d K3SDt \^Ѥx7+׬] 0y>E^y`HC=Ksf:jRxV/HapK'WZC)Z>'uM+]˞Xsm'B[s($Y_V\|& ~ƟmpBG/6-? ڏ-S#WJHjG[7իm-҉hYz`qE/K)k93GH=CXpc5]{?ѹB QגCsW cgdrdQAy`\ 1j̥T0Tnn"sy~d{҇#KjjoEFTA769gEb)o62gɏŴB4>U7OI}΅`)o <@{NVwZN颥ykӓ n3Je>|aa} g2E5~ӧ>mG oHWϲkIΙkb^7骓3b{W:הm#Ѱ(q' XʲOW0ٔVY{Y$byRwVrIf},iT!x!e`w+z)6'Y~)*6zTԥiSno6-kJa:'YVRkcJ<7ѷ2\9s 3ߣxv~k&K{/ٴ]׹:/RvՙAI][SW"×|57v_s#KT+p/>{h=ʎIr/gP)T!RmA(/sv.%_\\RBãkF-јZ{ί)O Al"d%svI# QpblH4,"y[v$WU&Ta0uk99S~2K}zfÌ|ĹmY|wLƭ* ̒j0ǁzdj^ȶ |؇1} lZxkb*mcod_)MO"W>Z@b3hIO #if]wn!vODt2idKS˴`V;܊Z+יSsw2JJ3k=DLGt.iZ)uܾL=*Juv^:izS~Xa(Q/Zj~HP 7b}*E=4|έ'菗/"Kd> }ȃNrrj٬i)E,ʕOѵ$;@0wp6IZ-zW>*W p,^ iU/j*ɳtà2*z0JiY+Y+Y*E}K*lwuS lb4K"6,;t'x6#O/]ӑl b%xQ v3| ?>> -7[d.Q?rОuq;7^17BϚ~c\X變</ךKۻB>/g{bR=eOWO˟afoo_{D{Y-owDWiK.Dҹ۹͟wg۟GOOr<ݱoWvdSu--S .'?K}wuK哿$MGʨ&,Lh$&S3^d=o9}Qu31!0Yi|ԥ73sBqhM.K~QP* }>E`!2z{䔟C>ӌo#Ο9mMҒK$ٚ(sjg4ўV5 ZƼ vZg>Z>_t/!=c9R\lY΂I0񣎐לxw7zfK=!HW ęTnGnaTt, .`|n+Rl{–-3i4lL+UיN.wkN_R5*Di8+FiW$;H|nskHO]lz`;z+7)^eq=֋³̟!ڒqY b^T]<\9Jy?NeS9:";O%9r6-ǒeͿw5w=Djq: ^ë]n=G4f#T;,pΣuPT%s{)3ԩxaRlne/Iϒa-qZZJɈ1SOsyr@ʅ* }={H500}8qIO*++'e6{*٩Q\|Bu)t(ׅUJm QlpJM|:O=6)Ƴ ͋q+X710N a ]M҂gO]TQ=-{iKX衑^c7>Tz;] _0R7냗EbsD4Ru lsfj0#']/Ϋk+.Mhw,@pϭM x֛Ed~dBu/.;\Hl%Fe# v`2ަ<6lљNEEj{ 4r2ZlDòpeT`jLd*ߥ=I --mRٹPPg_E7xhQ~p8wt$Xf)Cάq\ {0n%p&1RF 9^dd bLED+&\{7GH1He?#0z=hm6vxXt]rG{D-a X؆blVVfr XPL1)qdλ\iB[0$(-eٯ]&Al_rA$v쏞OcxV3FX>64?D`p~ַ`+f`Sn_LN􀸥m2P 5]BrcʒT@qb KPFaFmkf7/ v,uFm}? ɷ!|c)FMDWk1IF (ଐ.t C:+EBr _Oeێa׆-ٓA7+\yI߫EwUdrSV?fKBR&oF_z3Qؒucq>3nv6]BuITTaoQ+AN:Z 񆐤a@b0NC;EA/׺b0`4@KK?h"Iˆ+SssqiǬq=,Έ1RҺ0ƚ=:NR=OÂru - 2\XC6 ~LHPFE"Q:S)6𚘨ͱ0M k&3<ә?=AqV9r" *ݮ' * ^;418N?$V,Lr`:-t`5O5WX_FYjR+g #jQ+E ">r'hٌ63uбŏF->#Nq3mokk3c_q?ͺ?<"vC0PPcWƮV-FO緖n Y7ݢ[# հ9x|4 kG9vˡW wSC(t+"PzaS 7ew!'"/.荦Vz@vʼn;3 *5\P-Ka%i~9Rsb}̣yuV{$t6TԔ`o_U/ߝĽ B.|FY0DJgd/mB!>prh7| * X h(ʸ &yhLl~U %ͬyDl5Zo)cS`f ">1|_m _o\ڨC&~KE=_O 4'rqabyQMx[^,۔~? Qde i}cUit$/)W/)b@o3C"1td=X*^:X+uZ]Fa)gyF \ٺzBs2=ёWTϞb&qGv~@Fu3/=]S)S"CjԛBMB}!2_cݎTW߁ROg&~oP+JF1)>@,.av/YSD[xCԓUj#'syqj jn)4'rDQEI6G ܼ';UJ/U dڏh* t&[5$)H_jo*`Y#LY_D]). e̟3oBLi/gFN~5Vnf@fĿw>Ι>fG5w߾j ԪY2^bJQFt5[`3,G1j1ڐ[H-W$77uU"*)8~X|[CmjV7h \C7ôBqQ4N%Wl|X$=P!<@jFkXE9MYG_fǭi>Lҩ+GTħ^VPP 6PCELs)wj՜xUؤTJ؝G \[})"YJ)dvhO_b89#o}&5`ht P58|g,ZM“{#DbQ E_5 Lqw n l% Lkw]prq!9F/Hwgx 7,7d=S2H(5m@$Yx: Ii+WMu@zVXM r+$DAr_[t^\ "M-+TBS)Apg+tU_T˞e T_)6)Y@aK0"3`Tu7'!Nez+5pC==훴<.zP;39/SÙ[W39{xVv1=}0Gnj#! 4Fu$>FwOFW,/ >Bk H]8)o j2.;x4d~nrW/%Re-2FU;#ӫK@!%aO$cߛs%M? J0G ^lAٮmŘ֚X.X^Y8]21\5ΥLr7WGt_%&*SwZ.zKj?Հ8B}.|KzQ?h8ꔕ<Έ*Hʶ};B'Zj ۭ֛vNM7c!&0 qjX Q.i<*AJ$,ەF-wcwhvM 7 XV5OcXVݿЍ$ Wm_ <^n^a7v([m{ԦY;^ qȃEL%sS*Rq>k,ځΆPk]K*aiX(le `tP:R^o,8RIOX,, E<9'C]is7Uϙ8xv#JD۾؊ zRرƪG 'C@=΂DV.B]ٗlv^7QC<̭Jk|6q>牝Ұ pzy1*A֔K);uNzfg]2ANl,~UvbNo U6jRsnȌ/y"Izo<:F q0UMǧ?%N,IV, GHȘ~\ΚEiq3lL|PPyqw,!g7 9AYoJ& :څyD}OD2kS!oc?Tvc;M*gMhߟG:4^ A Fia f$@My#Aؾ(K%›l+q`W(h/%W3JeVxn}\ r ʳNANAfa;z1P~jYo}54ec@+ i-# n!֝+l#R嫠Zm/HWQ6g U؋?BzkJ$ki鸽ȭ0ɽn6xfI%ik0zmKX*9k5&cqSPYZޯZtc=x5+,3\u\rl=ԇܖF 'jHR1?.I-mq'YCA#-ebTAzL?ՔVko{Zb礻3E q$.S9KyL]rwc4 󂒬x!f)wr3)N ʻtZ |&ФkU:-%5K4Sz dARl.[ľ\ݴp']K`70sf2^yA(Yiʏ3n$0?vcqE*`R!Kn>Фߺ3UR-d= .Vê39VKTH 8@p&/U.􀥰9c6w^;<3. Ģ ?8ji3#MO&qwCR|ppPWiE0tEknbʮO nrkvŇ_I#E+,Q5NJt8jw(bRfʆ i1tn4w͵dil]a'⓾@lF^Zl4WαJ1&mh h-/9x=:ɇ1$J>1! iYl}6ndW<tXw=zTq+y%P! fp~^}9^ !ھZ{)n-} mnP %wbzgӡ_N- kr5N\+qڙzHr!EF<,j RDn&Kh[*V'鸶Kkk(h3d- QE xXs7I6OJ ~^,e}K@S/ !srџkLCI$7/D`Qşٴb9 ff%Uķ+˜Ng_ZAQem4`zX 验P+={;X¶$cpM\T)C>d foՌ}ĔRn"|M%zhPZr kUg]tgoƅpl.I?,F͸=mހUxWeRB'Ctr6dŖj>P'9}97_UǒQz3úQn}ʃ3ܛ|HވuHX̣_8o`Jc}xyyƞ̤m3pkEzZ6R0 S4Z_O]^T9.<󱺾 /ՕMJLۼᯉg:ή㠐fy*<`t2@دiKϾJا́s\*iq65,)gsCe)[Ԭۍ"9Jbf!b 7@ñ=l3u 0j,=1,2ccN "uh)#{)-Q`I_!?`9M] ݤ@]hmEm]v7+gWuw8y<8nkyҶXuWؿ{nΣ7Y&gM85{RHY'awyRj}!~?T9ytG_Z1qfggۜU_~O@'K}KPPd=N K#k[3[r9:³>cl2 m,a87:?0Ug=JV倌 ~pٱav7ǰ[/'TVJ!ˉÈFx=ǽb|39}KV;ʂ}PI^i\ ؗnh#ҾC| ߏQq5=]Wu}|)~Fc~. GгV!mnKpqhHG#T@ODtS]28~,"ij[QI φdF[:)}T?ۑGFmD L= h'/$EL-<6lPH"3ĵ[q P|rpRz}*BdGr}>:#!,,w\ |@'P/И:b)9Nq\)a[SI'Ek] Ow$H`W3 8GLFqvq#(y)*V\oiz,I D%hf3cvZ%K6h ^vb^}mYsJ%-90)I pX: Up@_.5=~\, o?_3ee}7eO/YƚՉy uCɢ9/t3& %9 NWظϒRiۓN/ `l̹5ÐL4R/s$wwVO:mEQ%9$N#WB >8(hKXg~AY>tv*Gj$V9 M6"`L)pY˶ ЅWZt#A+/V}:wBAf`8$|>,/ cT*gOl)\, ^Im%dXgejw7!g#/~.:{IN{.a{CBq(M< >զ#G) 8M ۊG{?Љ7fR x#kp%pyλ"NΧ]ր}^CSر'8tڃdhXnv4f ͦfߜd3O_} }pKGao'X8tdn1`Bvemռ=oKH m(݁+fM8@JopV]ѻ{:`4[´9fG# |J }ADs٩V@<,Jr-wvC6 Pm?T*J%dH+l11ꍪ|öPz7v8`%VLiD@2Qpn>W BwYvlKl~Y$-Om>c`2U![L,J8exN$X RKɀ=A"Uj#aҔџ5d̅< I,OX5{1}ˆ$ʟMN; xT"c럤/ZU:hQ3 災j!7^f56CWz0@mF3[ sZK*>Ipܯz}[cZT`4(prG~.AsK("$ڋ fN!cHup]5po:cGʷ+ @%<XPIg/])_iHz.W|8з^`O0NlPiNpЧؤ<'{mT#5:=mRA7t g"| M*!hiL^{eg~G嵶IK?o'yT*WJ<+1:< iD(3VGܕzgݮyKW)1s=Cs .ZT߅|do?^lDGvC*]0;3[(cwŗ G39M4]JF[|z]ϩ>̨|R;4qQt`cbO!L^YP.[<$Eō |Ƽ*ƼQ/ 88ui5g wS[^`=3Far4rnbG!avnrQ ?we W l2`1!6N#1lIߒԷYѺq:R gs_Φ؆'c僞nX*xAr7k|`0`=,oea1OY+2-MxY߿|Rߡ6xA2F;h n^ɀ'½ QI݆pPM܎M 9}.7,Cv|x5b.[8+@B01*g{j\HQ+:.'( <[|zMC@9ԞfU%t8^wbຢ='ubоO6$`Hz!]K*)TO\2pBfKGr͂w;Eb f [~oWEj0[1Zi4iUF|zҥrzsgA--)KMp!ZRuP4͖cFZwJK2Ud W |sWt dSv7C)GIjk"4Spc}H}RFČ9T 2j@0,\<<wen DBGQr-Z:`+h#J!ttRQp?D@.+1M9M!Yx7=>z,x2/+i)3 E6^;5tUG#} oemcJe)'D;vd菮xEζ+o;"n*̫N R: MiV s]V<]]c O2m7cmQ Z^i5|!mC*\ l&s;6$BYR"*:j4t]JŸB|ŸZhmKZU/8PSbذ 8"O[Lq ANS$~& gc|S@KjKي1(E!2we+2j{v{=8{I>%s6 O*|Kre^יRet^R֕=wx X:OBsm+ޕM~)_ ʘ^tDT~4oT6#wGSlW 06pȿ!IhoTRqS{N ;<-S !RVJćQ Nmd{-"\FٽMVk\Y9 1mINmur  ߌsݔ#V^k&`@䟾P4,iyo41om,4^)IXTdqN_E-tP›cmϴZT_F$G*jP1DSw,7rw yo4El^#|HBp'Z)NX=%s] hP hnSI7/b_ք+qQyR l]2%S*9J 6%j'.*(C'FOV'MU[i9ti^$ -}]5I /Dž҉9j8 vhC̪Z|V"dAP:V~8,Bvdĩg RE4 LFJ}q)x/SӅC_͊oy.GzDSOCn|Qe?znlJVJK󸉨R=5I/s\άUԻ}O1/Oma^EZbj1D={ MXngJ4pR*QjB업 o ePK|L*iwXtXY(ʺw.mO,)!3?7;=hZ!)E5|PV֍nVD#F;紎7lh-Uzf;?zL*]l"smˎ(OT~\p?_h* /B6э2O`7LJHHmB-*KrA{ψ?cI}z*qQnؖzUC?^bVU7e5>4}#.ЍhxȆz(_ >/dIʼnp+1u(dp*1@Y@7:HowO.e6uX-eHy:{ALlm1ѡ޿]Ƈ*&vEd묥"D|eo^l ħb̯ɉ^.8̤'b?ۺ{W#. . oum@4Ӊ߃?6}ILh bO J2|l ˼ BFXE4ϾR&Mardmu'%h䷧!2!xF(:7w} K;"_BsS{ O%( ҆_:1 ׀?NSz\HW MSG#O |Tv3(v*s=-n7O}1PZ Xdc4֍|GȳgGwH+ЌTܯ%e,?8oGf8p^LBW9.45![pńJpMo$uC,>`4=w g 9Qc0vOp\┝DlS4LS*=PD<.TJ{)5?8IʷP37&i/DGd|}1jZTIۧ9 B8Cx|ca -yaf{R J_vW@K[/ϩ3ߑJLb>f@"zlF&"ͤ'|wpAH5S g&|oYsOD_#(h $΢'A Xr'ETUaTn~.?el̇X5݆Che=/w(>b+2In[nFc*BRǯtI_B٧WseNX'yA@w~a`9W}ةU(|Y[tT=k^iN|g>D/S2S;E":N@ \Qf1=ꘒ (6$-޻ .Y/άڦS_Qf 鿕*H瀇hN*[a7\ ]=k\JO능~6_V6O<( MOu*P=+eC,5xLtq bo blMm7?vx.庪w`="ȡsk}x9om1TΕT!ڪX◞`EK$>2@ұ\ ~+˭Au>0{3쐥 މ=i0q&nER z7IxB$D \#-óh|Դ:xv=K?Y,ܮG>8ˉ) 8-Ch5߷%aW:` :6KaQnu"# 5oO*/q]EM>c1R-=mכ+3;c'_~.l*{Wc8UR؀^T>;ę!ǢKHq[<9f*wUdit Iy+%2@x4_. ^ȑ(!OJ ?z#5O ӊ$\3L|[C3opy#: _ f-,MkDlXZ) q"?yLXQH{ɞg+2̰bvCܪIW[)fg!XIAB~S PB|nrܺWB,;H횒3Vylea@r0uֻ5tH^|l , '=p$n~u H뙄wJ#Je M/kȇ1H^yXzbw,j8jnq382; 6N=3RrҎtzEUkڄs}p?RSJb~%xRgQ/wg~?UnBky\)_k!"u-y>A104܄2k<_q-GʎkS"? 龤toHuF?2@Ă&[H?rzH("CGԨI3xdЩ@,kP^>3"0?ŖQ&XXQ1puOfIsF%^լP.i`SBQU£ġg-G:vrϾ߱\$*jx*zKxڣU7Ը'ڙ~̎u$]tkfN:Tl$<IY1iBeB3޿gWD,1&YNkPMΒz[A#cOeFG r_6o/N7㍤3[kI ohܹE)Z 9_K!&eŚ@+Ͷ 0]M/s__*,LR'] Jɷ znC{TՂ?a,=ߔX!}҈c4ʤx/OĞ,E?gfW P+HW1?CP'["A&IE6Z1 ֲ="۽ȴe QsK V*=}0 潐^cbO%4:o-t-9 9jƎӭUY2Io#cșo'v5oq˵bgA8VqFhe琢lhrlF`q"!K4-)mYȢR2.š ua}GY``fl̈q]8}[{&!gZ`n< -{Dl,x3\*hc|] ̅"Vlh ǧާ9>-rq-vv ^qI-rSqtg*?x:ث+R~V(UxT{u:2Q=(9F^t#ɯ7&%lobQccS#(7lf'Q{KQ].-l9nyH.09߇8L)޼7:$ y@,&h8p6xva#*iakcN}&A,}::G޾ۼ9! $9n&ܧχ.0s' l`-@ҧCGOhOw!p_gblp}5fYK|o I%jķ:jO2[ߒJ{M5n:3V@&C1Hi!(VI-]vگ\f+>zCk]FK}ɫo) b rq 3.=,Ʋ>7_5 #aG$QR2EGB#W !{=ff2&k!&\@vINT:XAXc8sݧ99jnՀ*Dp4X&J*Je4?U3]- !q\YYC 8;[Drx`坛󁢟um:FŗdPO1!x9#?*Y}b-nI,Qo<xݳ͡~V: x4%ICIxJDA Yu+kbx_&@)i28CrÐʔ]EKI7`US Ë0]")!&$ԧZ">7{!4< k1iӥ"0 |yм) M2ʲ M%(΢8`tC5D}(^/n0,~ޜ{1W~Qnam.Qv!lwd<:>Qu+!!yb::r$O2^6iUTJudf]}\!NZt6eҪDE1nɁ8{( Huy,WF uh6IZJQQ!ݰlSY"á!Ct*6qmu0|t Wҹ81QZd %h㷵S33Ω/q}3or9(/IZqXqpkղwkIvrlUk5-8_d}ž5_#]`r"8Ӧum_R;:k"iTs b[ꔸ$x&tY׌A`IT;b~Q?'C3º2qwE~"P$t9KtzM!-#xo4۾_}wI19{`}`{LarC|;Vr}~fw-jeMs]oܷz\w͉uG]6߲]%2bO+xRQ[~vhY贮L3?5d5]LPzn̸W%6$IE>Ҏ|A2\afA ̅S FmRt^d;>gaNTOގ]mTtEy;x3k_*wfߊv%:+N2=IrDuQ9qHjj$tfmL䒜ciOJkʝ澿 XYJ<5&6*[/,PW7~i Lc.o_t?nL;5rU%/pzlMU,{y=W.eَxӊy |?華%KE#ef!SF$ɖJm\_GK[sl}=j+UŢHL3)|c,F>cRhsRv>{Z3g/`^X#TK\->/n'鏇)AVp|†NT>S޹Q if ~BI'ƛyeq5!|JJMyoiԁSr'߻}Zh>Vv@yZ"4;|WG Ͷ=Dp%ue/5vVe4lN^r5v)g_Z2,ËKȎ;y|Ķ-0$fjX eifo/N/Ynl *HWЩp8l,o*Bw C$T3+zW{ Rf}NN{jd/#x|!8)UJ} ֦id#ݚq4ZD׮䏰_k6 [~,yv-KJ>1.>C*w@aQDn9ZDt#.[fȦ6wJ'^]725^l C}pZ\, ϸBڗQzSTSV.f{J`ڨrEEd1ݸ%[M6>^NW8^'|ƥݓu6c+E+ߤK.$x_~a N9WP%njFc]]_3z\ z 肒Z:FõWfeÛNV&\…G1 >4\8!2|"'L;`a*'s@"7p5+R~&8ؼ/͟fޔb|r L.;[rqv9JUsr@"zl볮R8': $KWx?Wݣm),K^9 ^AGڐVW촪{Z+'UB'uX?EMTNDc˗OGUDm@) k1i}T rDHs;fga z:~eFݲ]hn ptoRqד:]_NDDo= ؇bIy폅[{S?$љ #މ""\x _q%3MyZ`Ate ϟzjq% 5}weٵz<Ьu,g đ Z3^z(bhЏM}f]K^Rl';lo#!D%*ҜJ/eNw(O OR*UO]dܘrk`V\NfB*`xV„GgCT>n3^qOmZėX);"5t@-tRb$?71o|yz<=3۷ E&m'f pzȁ;Vw6P۬93+KCA|e, `VeNĊ#w|t&[g<9뿙x.v!Kw,[r/.,!tD)0T+ZEaOD4ȑJKJ>E[ %)p  ]TSk3FI2سr\e~|Kթo*bFe(>qRs??'[XD?m]ѦF&vJ?qGc< L瞀trף8 +:5aƳ.nw1PRXiP7 BI{V{S>〽Sm~Gq?5Sfd:}db>@ {\.{P[ tkEb7Nrass=W#L.Mꦍ eĭ4hsX:Yn8[$ZH17uurx8E=r*4)śp !Lv~y,њyM`~;gKaK:-ɻn!r͐kE>'zZn4aL؁9MB8\5Eo_\LӸ\œ>Ae[v}Jmiɯ#7j!*V!%pΎ\ "ۏhXW1dtV)v7k``980"Sj:\?bs4' p:;-_A[ ʋkpV.^6U3sgT;$CRlH;M^<oܟ|˞i==uYu Nw`QA b(\3Eu^a%A Ek1S<t<4j#j/K߱>,1c07=Uu7&ը[/*!3$+a8tn=;h9qs{}-pM Ou{o؁ Ÿ 5 ]eUN'rb|oQ% 剿b x޹C+SFĶlh\7uXۨ8hemN+ĎCΘ&mD,S+څWmA?o6\aE?ن޽ZmjJ^<ྻwSx69jTOS_wHmyOe.s^ncmlp:A X+Jeb!H@xUv[F%+.eppo앴lUS#< S%=Ba\ˌY;e܀wZֵXQg*O.Wzd]w m.P;B(W'EՅ [7$]} wM2~44]>7.w8BT~?mRFa$͂!2}`M{)L)Ӷ2_AXsE97U/ĒwTYrogfBlo M̑> ejЬh``kA^8uWV{*n Mq,v!Ӳ^> s|oW~w`єY첦 L%'Y+v$Ğ5-/ 3<"fH>Y1x|I|DU U"6K9Ϣ2OS۸~nKNuDGI~k\n>59fޱ&T'SSE3]5P\:+  1d~i_̛qf;QY3Z{V PPΡKBF;pj _-\b Q'e PaǬo]Sllq:CRBdsA"k&}W3SYĵ%Z i P'#)8̭* 1Ս]Q!D%;c8{j8m)UwƮg+wg6ϸ\+=QKQ2KX;WN5ibZ'aݕ9z_8ԇ pc7ebE&NA~.4.]7`dQ7[gc۷t$GKx2H{gOTؤx{+C/xӂfVRMs:VkVfgd;J[PII?AAMzTt#WTjP@ Vxa8~j=}zk'ʱauEY`xul97jߵ_g!&lq5i<2( EYɽrQ0>Ǡ<_ct/qiX}7?D뽚Ėn+aAgYt;M4˺"wXdLV :e.h|S9vF-,@WX谺`/xJ"ʠVKT( 4Y2!T6x#b˓7}b]q,ĎV&b(q+^A>5q:8-/廕_.PWx_w4M7]K`(ج%ɳaz-gXUzȟ@Y> e+2RdkG@&[ O^-w~//>]Iݨ$+*͌ r$oAU$%sGW_iu/_[jb̚C~[oYZ6\uu~F/qU1c]S&Cz~@&՚bqGSMкܕNl{~xl Lw׭Á:^hUЌiA1r{| 8qHTe0<. ԳZ\_9y \0 A-:OD8SYLGH} ?%٤/)eM޵a0`FitHI,Jp׭3 ܒUWc=,XQ!ҮYÐehK :lzFt/]4nnJ)Gά&յNma[ z?>X&(]{};jl.n0ۊQ~zyP%v#g; ? Y{r^Fοnʖw=% ~ZGOTGfp SIf! ]/e/Ib'cM)GCh!,_w'G'Ip]V;[)#GgJ۝k=֊L*NA$SU  #%?6V5U H^sTZs;}(g=x? z5 xt'pG^ZBYa__ E9HsXCb-8ٝߖ[p){IڽʧDT*='ե(~>GkGʀ/"rO-1o"oǙ1CwC 1~*:* ^omVFߒHr#B,Y)VT14AY?"Xz¸V% AlZ<\ƶF²I:طo+B'1Ja\XonvL˖;Vy`!n3dV4e>|^pz&nhkj/4CMbnChlu6kME 7!zaPCgnm9Ҷ2XB(Cdu ҆Tf!O7Cn|"yr_A&nD ?-3YF~R,Z[JP 7&>LTlvZJ"[ehNk\}rӦibOͪ4jv܀+c5T(3 F,/j*Yqh7b (F2&=ŘDfK.ٲ7Gy {ɿgg ލ, Zb] @$v#CJE"dSe~|Z;3~ո 巼O) aes /-̚d<{ ׆#'Ў:5$%1~滝wO{Jߊ7]^I pL%5, |J5R@OP~e\+҃]1]M~ObpԨvB> :**,8piVvLr/KZܽ:$pЀ8G`)K81D5EI$cȚ~LYp#Y(ݣ+YKu>2J,QB\'&:AX93sٰ .G* wK?jG,1;6[aJ!BI z3ǖ,JP@Vh)+\X)Ը=aWًA)`˻Rg)~e@ K4//jSezY҄'qg~9.#s$٤ g*/ybv̙ ٸrpۭ\/|7Tr񷫞iqgEX+$uԉ$z>َ~Wxdj'rFHP4҂o |!fr.n :>}qzlE7eЌއ{&iQR@6Ʉ+EY-Pgʎ$Z0k$UKPO{@$i*T\Io&_[Dv :*S |&zګ/HG;喉i VKga&^jR7/ 52X EҢM6Yot~|>Pǣ|Lk똧R)c\EuzӴ˵ٙceAQlqVbT@x(c"4Y3!ebH}ӏj(rT@ΪR9.ؔ!S]/i-)]'aSi(F.K(m v4z1-0+]*m9*sozOKjt\ }u'>#M/72{H;kխć|Wϵՠ?R`)CnJZG2 *e4ϭ썃ԅ"ؗj[TlK]/%FN Fik Nщۿ:jOiš.<)A2 vN.έ{`ZS1.t` ߒ`hzň z#+W~0p$A{X!>_%v+n}Bb&X\8{++pR>[!`́)-^Stn$rv[x kČJPm7VUщŠj@&-KC} Rͱnu jFheZ?@M >xJC  #^EQP};{5h)*tpUu ضl}%g:WTғ+6 -׫]Juq.4o*wql~Ӈ`_H~@u4ض[}ZyH*J+u#swJϳZ% aw>Bsō2m檈XƀE쪂NQS+nEZa(9,Sht^ZMHGy'DbZm; TI5mCB4x- f= zf:1x cӬoSR\HG&g =. tY$7JR3}v##`}'T,Vvnޮt8:2 = ,!6m\t "dֶ{ 8! 6m=X KzV y3+ `W)7@Qie h9^ƩC`+>z@P~ Y %*aze%.h;ET X|RugN(yN8%pc2Tq8a',gKb\IÃgrMtdU[B=&VK=R̴n@Bf.뽿&kc#VUԆu0w}t[%lM ʐs bK\#'@|zɛ<3$1LjG f9RSWvu?XRr P=׮FDdhAŗ0+BG~ݳ1q O!G`K݆YdP-JQ\8Ҏz@G,G4o Q'\¶!y2Qr׮HiOiSx.viÒI4zKZ8BV1?kptcHWGFR G;5yrs`W?NXwep<9CJ8x .8z1"Qh:~YU$yRPEN1٧T2ge=rb<,S9î*8S=7n'jP ac!Nh;|!rn?yJt~Sm,vs"bB5~_HX]sx a~h6v,0\asڽ XN|B.Gij[Acߙ~$cJW4x]椆P8"JO޻K{ɱVbI :]xaf$Wv[Tv G%n;+ro|】;#'E0Ӫ&;*k0rҾ!Q z`O1wjB=3$ZHwxd{7*sF ŋ6H,0ޮD*X%AFճʸ)sVM}`ęDxpIoD18nۨ9Aa>aX=ߍ vB:ØzK3rP8[agiSy/% w6OYOXs?K23` Rf|n3Hw;Ǯ2ܷT \&0c}];60eתzFjFdo.u  2r-u6'jbq<ֽ\99s bقR7|=*b|A.3rf&]\X6M7AZR7)ϧk?%IpvA6EqrDMKJ.;,g!q x 2ҕ1\zHd5#JƾeZXIkb~Ց<+Gեh-0CFI{"VjP F A yd#;{:,-r,K52lt3y22Ox.<70@݈ 'L[ѷؒ9b[}>|L~wm*4ƀ"S=@J BJ.:@Ut1~$ M;~}, 9;,%%%/z^Xldۗ5! 㨭@>^/v0JbK+_m R!?+F'5 ϯVPV} vD?e0F1.%6]>6GH)sdK$ gr[Z ܟ%ZN ?`oȤI .SeS'i8JӀz1&7ybej87nڜa`'!1ޖvgL+ƱC-rxȔ7 rşhZյ-Y'\QJE= LJܡD´Œ$?aZkձxZ'Mu$3 3˴F40<ǝ~ FTIlRB$!kRf|.@\ z<=AGw18d[&v\Q v]qSAۻPLd94]WNہ=L72 V,3N8Et} TZ-a m%n `X*xznΐXpno AhƲ%->&t"fDETəFɟ޽×QVNq?>W@2P)T=u+U-,vq@P-~ߵ}VJfCeCDxRqYÉT!pANzȧ_X\Zk38}K-ć&=HJj-q ܗdˎeW@[HI)`:Dhg6tj@_5j]tdc^-; BC_dRc$D ;|y/#V2fU6%v kVw$8xR^{ @g|O55?I/ў- $ޔΗz ~4-ڭo0)Br=袊yH4fׁ7KT x3.@rq+.K7v|цluFxQguWM6B^[@}f\[h.+}vK ^+OiTmW,2rIqw.EB}{~?&Q!9W=rڔw?uW[zU?u֦DA~O=TƯ׍ I0Roe^fC8w&\Ջlu׳Ӎ7 4z-#o@DZ^pp;?^mOcfY n%eMp_Q$ϭ} By7 +ɄȗGb%~UJ !*2@wƜzVz=<"f_ʡ :Nfse?6F9.&'n1+b c?DJIUκw@ד'm bϦETR!Sr) fF6/nwZ%-8@@^e+z园 ]dt/8LJI{Cw3-fL6ᣎ;`b|yH9I@slݯ½tcYE-5}JOv a.mAX#Em\ ]u"'4z%ҨA1bg-h[#L{2 C7kC=2č&Edmj'K4J#?oJf<=<=ßAҵWno$y 17Edİc 棉}R])*IHT!S(,uV ES}/N69S?bc#(BWuRe~JCh籷V +9 |U96]Vcw "G >0!X"2Ph)cG ~snEʆ},T 8wo~@`sIQʞScVtkrùY;1t1g"OrwMBpaCS P{I-|"23m;!>Smr.pv~۴5&@sdypȄ;jxz;u8g yV0I`8[O= /up~Cd]}ÿ\n4lWV8#uB߹}msFͅ?`f+D)be"s4A}H'kKeHn>{Zq%g8.lAfl2DRZ / t/e0UgF&@pu^gv% wjV=)|eٖc555NNv gBv9BݗJHlJ{(βXk(2P8"=UtaMD_[=ʰiCdA%#u{BxzB/̲w+ W1j>{ՓnʲiމUvSMO{+o N]o Y,u[.0յ1Y6]#P"#5OhZU7lY6tEm,Yu[tXcܔ2/ASN Zɮ>X=ۃbm ȔP3QrL]ih,t*<'${=g3ݓp/a> /sh3:ZtLr_Ȝ 8SS Í~TE=?r|j*IHY؞B*þ~2ea`Irzac)(x.=!O%x R܋7mǜ.-Cq˰~LLߧ's=aBpɍ؆S2ٚ+u(ɻZH*v]`ԯe/dՇ<`Dh8oyhQk^[t~?3ۢqto!Q-~]L]ǸY^[FyLd`%HO?0l%7G88u՘V騪EaLr`H\> 9)PL}Ťnv1욬S葴Bk`s.vëN!v7:2cح? y F!fxޚ?2? $--GD/e^W4w@Ove(832N!j1Dzÿr€D-"bh^w /jiI+i&2&nAfUq'TjÉ眪 Q- {mf}W /&h5IYp%-߱7m >0?4&]7x<ȏtz<Ƃtnbu΃[/WvY>eȿmqacp59hZwaGRd g͋[d<9ꑗݦFD~ H_H]c _]?;;-;n~MBXNvE9+aq(7?O+}bs%p1jYn0=Y-]eDg<ӬŀPm}kS>u |'Ԛ)-vuV}Vɑ ޲>k&Hsj_ fً lUTw:|0ek} }(ebjOǏ|aB]*+BVg:'Er`="ǃ21_Sp/N =߼碮|ܸ =H9݃7-ɉ ko5eJ6'm%c)fgFQGOJrBv_ߦbX%)(<eoD= 4B*[/<,nʡम5k\p-% */rlʐXb* ؝igi_]8G4ڿJG}.i e@R?Ζ]Vp2 U<ɼE e$䪑rjO!>x]hͷS9_B;p:چF c|SzpDn(cFq; cMϿ'精?ĎӬ``?ɐD1[Eyk vQv:Ϻ| N}'i6K6ӊ, sW "L҇E?k̳xhj3̃LgZ c:ٳ .wL;9ڳfuv_Kw4Rl+Y77 ^y}OWU[imfJXW"p hZtQ|m)%/o>Qcigϐ(͗ы$03׆Ҝ&nCy@tm&w4?f&\};XeD֓| J+Qe[T6XnVs:\s3(-|{;oeO9s+Oz_"3;,%It7Keʚ٤\~r"BЭКۚG:ZuRu7aLO vVSi^m)69D*C^$^@t&\o 1^N:қʗ43RvEL m}Bt,_"n[JE >uQkQ(r-KFG9<{ۆCk4ʀN']Aր51qXΖeUi-<{G/R,e$|zzvڐz*d(h[x*C#Bn[|@Y[*މ1A^u9oɅXk,ew2T| HbjR1_Z8vovF>Y*J')?5ܕ:})p*!q1)6CCg_N1SWnft>- 9E#Wbo¢M]9 1HE68-4w}ue^"?ed|if>'#פ2[K+Sg(^3 +ߺ41}(E3MR;-6).f -+ڮpIŏJ3iWCsBbCU7\In~S|^^ k;_ԡ?4%hxw@=J/6/ y#YU] =_5y'z:Ѝt)2\̰ M &^3I_µςQQ6ulHY쌑pJV07I[v"9HtN :cCMe$ۚ7ܿqcYh1[_UM.G&[רCb\!forfKDZ⁝Pp,msB-<U-fi*(cɤ޴0t_k e|6퀳.Y.͘p8t(h% Ĩw:g??LwL n1?_rI${>Q)3'?2RR )%%-( -]%9sv5לk>TTZ^L[QMxl)aɓÃ;c:GM ' x9lWbɾuysxKl.)GSNSYivDՇnX{Or[WvH(8ki$Q_P5+5$eM5OE3>bӶֱZwj岴iUD <%H.yNS2VYO -, }?[*K1)XSþvj„Ki(r?u5)̰54d`^ʫwliO2J3ޛe=V՘a!2ϑG4i>:],R3|/wGY,t 2Cm}9՝Un9.tJsUHC!5R;RA01*u\PZ|;{4/\ag4r3Q_ܴf*Ӂ_YRx6`[a}ے=.ih[b%;K1Db?`cb'Vܙw̉L?w,dȩi^Zn>c@L$K ȧ/ }. %q316x#ơlUуEt0n!W}\G*Yhahk2:@ 3YK%- eH$]ASqs񾁊H6EdJd"M1Pg!QPW²h|Ussx.#'G!|=Ѹ)GRV(V'ƒS]Z*M{)W*3B {^i!/:7p lsTInT1#ṷע3?x(,qV{\DރM5DZ;`j\=m663Kyl'^Ȁ qU0J𿪶*M=q7U>qܗw֐*eG+>۰E$gr+0މ9]罫~U\Y+ zI 8`4HnrpJ+x{d:?h[LRt6P ~˿Zc < X԰ƍܗl(K4^/9k$ S?ih B+Sc[m<:L(5iŹFu.ixNv[+o^c9$B/)7MiB|(Q %cLMkљWFn Hxe`(ZʰrZ63Q(vɬ.` F4pnx(RA9A!"Q(XO$H2?2ppq9BgZa0DJVJ{KIc/+|*UpXzI; ;.&P/KPhۈFF\઎~šŒt90{Bڀ̂"+g{Sίހ&gw Xrt0&``)Bel-9*X':V/1X z~hTC2-=ێ;U0 Jq^2x7 {fW$14y4iU0Jҏώ2І٦04tNFg&zBSDj_F_. A#_bc10rر6yja d;8PH,뤛4H ?8.;/Y~'D3œCg变{֖ʒVM駔bwqҀ[b%AjԊ[|2K^90ť!Jȅ΂ZM4ޭ ;\!QGS.vmX96p! 9.9 \75R?BG<Ç,'cx83[=fA7 a3ҝ7M^7eJ"0TBW!d#kb)^7SBa,h1EفE' M5Fkkӫ6I#γı2b>E2ǂ;9+lC#V+ߐ(~ԫ2xMLe38 }O$c LUDd o RnHŁiyF.OK:t*Ke!,rFbe[i[0 hm )aPIⶬ?o$mBؐPQS>.z#ѓaQp=nW!.9 _񐏸mjM~ i^ym'vj+i-%d/\-eeה+#X%{}zo "_aV96RW^IFyeQ` ;G! |hbaTA'fAwn1_g5\wE1$sx9,zbm!Z@)_fu2ǿ'c宠Hii#AιRu;"{R[P%XR|x;Lu (Nx8w9Cq#:y}6<S8JGl b2[2")YDžq͘:Dr(OEU7)NQ'1z <4B|e܅jw</?"2\F4e`|?m6åP:2ῙStw͔l C)V=ޔG,"pz^_aDe^.qi}ÉںzwxyyQdRiD73C-yLmlt)%ZoqV5ėkugZPsâ\t5StG s7?x}* ǚ죀'`JR_{[D#ʈctmY{{G?Tp0 p]YŻWxݟG6lR]J u 羖fV|Kԇ ¾_]TM'GYrE/Ē ȫT$-joFұMh&"2bzpO,Җ=M&O?ɍʏ8p#&GC9WvaI޼U+^_p<ԄDJR y$*_Xd_w7_lYR0[0)#=V2+=Jǁv>r x0x1/ xy*(.zS&Eg?1hc=KnxHo'qIJ+M-,U}B:$z >0c|!v"CsP/9?5V `wΜM*Vv)#gd\+ʧ1G#`WdMl"=M"F; 2+$:GM%}9׷ k=%6*UHH:jK _:r Sk%d4$YHlp?!tS|\0WKam Y:^캓DP]xJE#a~l_+{ CZ֟EGb\*Z9^$O9Glxik_B!l rzGT6a}0mCNQZ i$5:USЬyvT.osp$!oGr_YzkC.q ºTM>Pm[% o0h6mgYjA:j͕6r*|G@bk%O.Ҕ0vQ{ECܬ!e35)th\# ߤpբM$Ԡ[3`])DĶ|vV);"ş{G_K fֹpƒnb4Ppqovvv_]N$sV}~Q&5jQd,9KbH9ֳO$̵?i16JNcs$}uU O{๧]aY~wD'rA+ȴt-YVcQOi>:86T[<8 %2|W'UTA{)ifewO#ޫ]!*u0} ~Vj`(&stʅ8|n`_5- YI阬̦\]D]У0LBnaQ,z\!̔fkPhV\wOtiv"F ٫[:2F]99 C\BDm ~K\Eo0hhϭ1.IsBk|GPLhɬݽXx: %=4xaNEQŢ\)=tHBϔ fS>( Ja{9MJ: #G 01759GS/q&Z!q8m=Kvwe*dR'Mhem҄_$u|XOb ٨VyN9k̀(Va2VP01Q FമE - ՍZlc%)E|^,p_)](1Gĸ}S3ܻJyr^txi0SZ=&-# mtrcXf+#cNkxA8D*mlZp6UvEYɔ=O S:QWcx7]KUtTWlx~Z"МLI\ǡLŮߎ=hZlI+6hgy^glN'ۙ5MQbyx~2za޺-W|' ?V7eQ}|΍;#Lloߔl@)g߂ꯣwלSE:Y[m'EuuM:Fڄ:X[eqi$tȯTyA_jA;p}C$d&14i ~Tq\ m[Cu|BKX18G:eDJT4nOl^2TLp@"yʮ=Ou"SC<,'tyLvv׿iUQwAk0vh5m~iNWdLT3v4:^B*_ l)j6Z9*Հo]OK->'\C} fvE6}5a4f緰|~T2|=<[ۥ)([^3KTIXѕ!c8dױ؄ E-Ci{CZN(nsV.-*}TX9 e#1 o>*QݺYłz#7/؜N!}OdA,R (tT_WTz)đUv#rE/ѨOϢinb}]]/߽&p٬өVChĂcSͩNgȟz3[0&kş?;C,oӑs(q\Q y v ʐ1hU+R=+ Re/2ȉ?^xF^_G/:@ f0xr@^n⁏p˒[ ԾÙARyD:dZ{i!ΘdN )]ޓxzs}4[tu)!Wr*XH87 ^4VR )\5%3&{gV1:n*R`oRGݦ@ ̭PMR8+@Vf/6k`H)"m Mv&ww%ïY26UP[. wUbĿ"jN=A\"(g!޺q+|鏯.|G Pk "IUU8`AW-{s>1S) fvGyXMdkom'~!!,j4h1^CWaRHCzPM(9\Gc.AgR,G\/-,悮VRZ}HM%(Ω͌"Z7nm r Ab)u)I7>UxђPm7EL*m,wJ8Zj h} V2 yt*Q(c8T #PQnpʕ㞎SIdf"($yHtTYfyt"ozUW7,Yy68Fc} E_BFhiyuhlG}|&I8E)v>eI55_T{?1 A 0Zu6er$4^d.H:<n,5OU]M^jJe.8O~h3:m?Lu=97DuÎbd4y*jVKz k G/Q?UZxe -q/F{lUmfc(qOޡ<#ں$c\k)4r\zcKxgHQ\enlsD3ɋ¥[..z m.9ГLjaW$o{wb5~BxD|]#-V?hOJ5'^?MkaFW^E xSK.c,=;pOaLq[6%sdyׇ1c!̇,a)Aw' : +ij)Jܪ8ΝZa'4f/C ,Yw4}gz~j"ASzm^D"{13*mfsk*F6\u ]9,3 t!xwEVӣMzoιpxǞu߿ ;po}wtd﹖>\g%{wzr#yS/Qcj1F.}[eʫc6YSĝ%tjsڕb N!, CAT0xřt )\JnX45YQmuyYQFna kd߀CfJy4St謿obAzNfo˳ ʆgYڏ}}(l )ѕd\YN޲ֈ) 0U -6%`)Y?e|mR(F4s5U`)s-;k{|`%;Y ߾=~Gc}R Y@2*dZkeHζ|~9HrіAw>'}/9l3ƥs$i"vթ23>I -w(ů/޲-#U͞bģ+QV[F<=*xn} oh~ ~_% _}#LyiVy_Ÿ+3.j "#,>] DMNy pVhFaä[.i&̓ܤ_,OGgk5.ؼy/qwKL8RDp^@A&i9:`C㏜Z58505{hmpUzoNV-6IP1qÔq\ů3?p~xsvN>fOp]t*@-,$v7 zG/1xbZWѝ9I{Ї*Zo|% {v5 =8B3ot?zŁ;30Z /OWyOecin^",Kr|<ʰ٦H8Ld]n m #荜ElvƋSHchfѿR'o zڼJ FQ֝"8#VTu^}YIM>!}1[ܟ$T[׎P5zTGV!o_i# qs,.8 Z#} >p3ug$eӣ WYZvoC9zINauWgVe\]кTj8ੰBGrY]HR]PXueAz&HDwmx?]M6|ePI8 `& P6iK{IǞ* 5|4K#g9 _ ::7&UYë|[ $NeG(n14|wFNmk[ztsӉm|**3' t jd݌.WH3i LU%٘: FCwNkXEx1rk%]Ӵ  h/ z~5*+lգ(C,2y}E{A0Z0`KC+g6Ō}L18mYuVk&ECi 5; 8,#4IoK-`q+{m{=227D9!ZPar͑0Z۔Ό~vܩר\~Z]YY`V/ܰhGܖ ӊACjOR!cv>Q|KD 6씃*2ܘ2egU\4 Bh΍L!ܯe<CZ#g|hRf:>s 2[LyfB~]2s@,V8Svnn< pk}dtA5Hwі=9u6TGr4\O'!/(s(bas]nP x@6WPV\]jq6{o+QQ `(R 6Wm:ё*U~n T8np(Hezt(s V? Y p/e̊kNyxladp;f`1|z\+;S"85ȘuBRˣn&\G3u[fN_kk Fq\΁i⋾45YޤHj6Đ5KVw 0x5 [nEsӭU+#0å7 .(g'Ļ/ʞ4/QXv[.ͯiALEIM(^V,@)拇Xȭ]јjU+ԗ}PD Nڛ]k{B0W֕ӂ dk]Zb_"∯"SJ3|گRM|L~v Spd50Zݴb|ږߎ,~gX;V|{W:p XII+Ŷ[sxY/45&]d1(9Ùi[89$(ի #n|hj 5Y}QQd:4L 7VaXIw_Ȕp`oѣx`c<K%8&6uwS7@:3 hP͕DR UoIq,1;yTwʄ4j$ =Mnz?\RlЈWe`7WcO?`^N/۬ei78B_#uv;#}q?Ufeq).ÂmF 18ޝ4 GE6{M!P8YQ7لc0sW:6?ϛ\۰WA"+%0eM`t+c;V#)= GYpn̊MͩT{ZLmcNxXާ1a #K-NkNIk 50rA6Bǔ?9"I%E="#%U{wE\X@^&r2t̰;UD  7'uXGs=fv}"ٜX3%+6b ˇ>pZMN ΈORzTӺkf^̳%Y격ʬqb kNVJ jbCUd+4W-6" emhzb#DXU}$hV&,8#$N0i덧8tؔ<'t庫\<2993,psX=G`5 G-Zk1C1%LYKB3L*T`[twZ(\X_6q5 =lUqzހsr)ӧ0ΉrTvQej>X f=*{2j] Yp[܇7vEs7OD ?ڇ=]!أlww|()ṭygT !7 ApOOM{6Z{^wG j3,&/Ձ`Why,t+W<3t\&tһׇ澬UJF}/זC 'yKط &Kz;Zu4R0~ Z:0oW<{Yŀ6\BUxf.= du=U) JtEg*-f#}n iu7W\ yT̻q"Uߛմ!֢kva8*#i;Ƹ5ړ'LjޝPѱ%+Yug}Ѻ.=~B4x76 .Jk+S ]Sqr_ZQLGլ̻D`CU b+eʼn_o5Rԓ9tHY79B܆5|r L9I< Uffa]oN8#HAFʵ |&tG~GOUS3lyo:B\6m)SI]clrX!jJDN>R@$yV7Jsu6 '^AT@T{mR*O? 7+QfBK+tڠ3퇉H~ՍGWJqoLzάc 1Zewfek5>OKz28pO) Я> r\D޼jA`Cꘋ*Wc<ߗAYGC n.[Zq/E-Ÿ$.m|ݾW5j,dn2ev;pJ6QqVh! }K [=%Mk%d omMuPYl11Hn%{ڣN+p76fM.{*S0-+Y-BsZYxM5zE5;O4qD}G{\?~GՎ m/b7*hftK!Sg#ON?|:;~ c"gq ,Aɑ)%r8u>3.E>&^s4^5tE 7BiKToWӥr4~^D&!)^L2%|\`§)\.[d?@ƭq> gvU s).tP=7HGҬH+|H  wk_R>&Rך7u=5 _gi  ӒOoKkҌ0^=Q{cJdaU/z+.Q=$hjvc1`2H ;SݮgSGmZm4`{ M"y5֞5ĮKWER4&W ` uT`,<~:> 2$qVX&5q~8j 9֪C<-W 8+t vݽB/cBRkh+80e7>k Wm|vttŔϢ;;1s~'e#B¾"3 |pHӞ Ȍ&W;8#E墕]du/%;='t fo3_ˣDt+!!Cn[CJ;Gug['n o? |g $(fi&#"׽ӿ^H½E C\;hք`lLQL>߯, o%xc2VOUv,JLZ>Aw{H9ew@~,6c  TG&IBw>(4g66}[!Ս蓌p_8)}8q1imjO^Q.Uo=y'#؅h6א!2+g6&}ZY)jghD />"|uv(sh&@C48&!qL =(Y၉T_/r.\|ǮppxL08A:-6{WEv߀mwkRY+q|)N qLb ef ˹8P5uZ󠕽h9v\N|j]Cن{jl0$Bw}٪/fyM'}Qh`U73{NBBUr뭭Ԛl؉WLx&t.4- C4^`^HjD>W4hW ~k ԿuH(Vפ}'Qԗ)Պ|CQ0]J *Wu ?V,U :g@>|D]%K 0 k@9CpcV|9]}C6dI~>ɝ]\&>捣B%dAq&O딢FW{uYjyKpXY@^_U9Y9!OoE~Ԯ&ya͝ ? Q,-bșCz`qVtSzB JyJ#|>8fGРɺe8k=s Ɗx^s7ǁ0fˉDBi)0Ag|-_w;{'쪃LK#tHftW>jۡۊBE1/jBx58rIY(u$I^1`TIֱN&pᑱ#x\j  =͝&n0(CѪk+NAzӬcvmA|C"qBfO#,0>}|CM ?I ky%nw[]j+O,ֵ\zh[S /mfsP4me ƅT d'$$>z-oюCwe2fʮ/V*OLȏzX4\>U>w >Ks>iH`(=OX\;v|" ޜ""^*&~l~ ;NrUb/6)%ԱKTHk}+Q~R?eQYYnx{i2,LN"˜cmo[x 7waYScl\؛5e&GJA\[h8m΃YnۻNIɬ'ѸU0b2յ1ʝ W0hGuO'qxzIsn E/¹<𑐀HD<튊WVv{SS2@?%1kOɧTm[es%8)c&hOgz; &p "K~ȹ9؏J+ kldj}Welag0 (_e!r4}1QĻ))ܻP8FN;DO,~!5uv˰p)R?薐Kcsn.Xu 6lWlvۧ: s,lR2Rm$`%oxk򎏫l x#?4um3M$FMQߘe83PJՁL@a3%]I듡WԝUf-Z(-!Hk |L=O\HS-sB<4ENA`G_sGYn-*.6;Ďn-(@;\ϵ6ISWz٪b\[k<ϕpX<>mHhæ:I5(|ecaFQ [!1}M-KxsO&L Gz e'mЭJ\\cIkKia5e]/(f+R*lCOl68Y)j{%ێ,vY/!sQZfrd\0$٩9跮}#~v)3%3r͕^ɘحَ묲iN4KĚ̬P5auʙ~x4]UJ(imҭoF mNJ$bЏl3.㦰D Pʅ|8! x/\mjB (bӫ'=<o6=7ہ죊y8zLH)ڑ"1%iLNpF Pqt(ǂI'^c9w\`Dq1sYCHFlOB؁!YU: &I;3\RZ( >KV)?/CfjZnM$ʑ P046?ras*ﯳYX8_;(;c7 ?)ZkΗ磦,8~xBgVgS߁~~\T"nW!֗.o er;>p|ĥbFL~0&6\F:18j6e|S,-Ib9k:QBGl%7 e>yNs]LDG bnvJ!ecPB}_`#}Zm2D5gzu/w&{cՑblp-6^>.G/PLZ_X!׀~ٟ$9yїX&gv]!)ltRԏ| V]f  @ʄrWjj)u,R~ڈ<>vhp@X s1\ڜ<-^^[tC^t5&n^mv]+1Jj ͕Ȭ:*gK `-&}ս([`A [EJ#V1ST?4:Grf]sqe3m8 6"ގkYEQ\f\0o3__i[XTT;*|YW L .֣cdӔ2f6~쓊ǁ^>G|Iw[5'~t;£t#DTK8 s{N}) a A?9O燔@VV_Z)h.xޓ}!M$Ok]uzuY*#7$%ǚɡg3F_]qc`ܘwIE3*}"^c@u i6 DrJ16觵kK i{|(X:߾υVߴVqűgoS{zPQvY\cOT뚩ڒ7hµuklNnMjaзżGeeb$4SȱP ח\H5*X8yD=T;(}JJBlK(ݠJ|L$XP hE);UCR+)!BJȫTgȷʵWAAK c}gat}^%8\iYO QZz0v,ޒ㐩aY —=d=t1|MN3=w5jLqwYGfCv5ê_0l5uND\k4%fwZh恶/[{uc19ؒm* DEgNשP Z]#v~<Ԭ괈4'/]iV荇=pRM#c_ 7NDޏE1;޲bG7o.\9m)E j^ 7m~ ڛ#dEI_(n+ q3p _>7co)0+z4T}Ưl&eL_6 㪦-vGF ~C hh]ײ1y^!-n',!h0)|]NUA%AO5ԵڐPrҮmfN>%nwł= A"tІ|rZNH{ hD30Cv*Xo`m@p`zYE4. cCQea~NA5Krz S?YEb\_,1Q~A5,~DEc%8Fuytޡ<&= 7H^SV8oޅ}MˡNa,s0?i6.3į]#alO\ gDevp;-:wtXqѮ?]TkpVnd#"U"`B׳R3aajs_l|X&R?-fiKmjt4*:qލwimaƠɆy{0AW0ҁo]v1o9/5ZQaDF5G'QVr+ЊfHP^ g9:ܱ%XI]=-1vrka, M9wS +n~9R$B-GNB/oћ_(:߾u** ,?e?6BBU-'af`=-R.f9=-M= 1YIfb&0`|9{QЌ\8j7WI8; n uUƵcH6O8*LFcڪ6:=l5?UZ=("fh ɘKt (€dHr:c*zHPlN;vjnN3s=,łWYCK t Q.vx#~rDp>}Z+y\J·~y&jHʷӁ:..[;Y\^qfm*s`q+߭_=Rg::`AqLx-Q=\DANRY? ){5= e@x^Ҷ9ʐjg# 'KYb("Me1 ճ(Wϭf2;uZŮvy޳ n|WY xzx PpeOQNrtU?|ԞA\t(zsB o [ vHjx>ƳA]my9Y 5nb"BEG "DԠ/lѼxs]vay:m u_/c_7T "ތhaBKn5x_;=`= $ԚET.GIY+Ps륿5=ҿ@g+NX==>[ܨwASS{VNGuvUqRw_06rY`s9x@8 8JwD$23F\:BƧSrBlT'YWY%\`nC Ρ6!}ŒLĭGa 4ZÙSum܉%ڗƱ{t)Mu|.{GD9f+QuW"ScKr.apS++|U_՗"hrNs#B3jwE8ܴ/?ւytz6Rzr۰)sGv g^qH6%?![AӌN[OǸtqozgy#0Nm:q')<{Gy ^RQp3e4^˗?:Qmon:o(_)7؍Wh+C k~țE~~D{skyۄL CwvHrbm/8b7 _k:H5LT ݲDr+Sr6`ӰK7q'Er>Ah> XZP@˭Oѓ@aeT$%̴ V2II/b+'~_^ckUWE2GkTr]NhDHP.zħp/ A 2j(UWWLc) OPr2cbQfT _<>Cݞfx,Yl볿fP乪 g'!`2L.3&mφ9,Jrk>`دk*Xvr 䁮S8G  u:m[ CAiMlKrn?R,-da0t!wh٪?' og\NdxUAR(ޏ*M˵<ėXcr&x@KjF;K BgZ2L[sw+BYoi\#8xPkc GUuKͿ9NɐwF%4Z;Xa1M>}4ZU*6{zƹxV➔g*zBc6ǯ[ЖLu@K߽NROTă SR{i ;(ޮշ ^V ]L>Z/':|"_^po!>m-Q(jT&G tcTɜ)*X >Rݪû/v5TUm%Pks`=[o7.nXgh5R |ہQ,zl9P- ҘkYd۠RjmO`(C(:5YYMoٚ g'\͏f,D8DTYLцSnn߭H9UE/ uI(1p&y{1tۋ=PS^(v 2qO%3pAҤi; D;2 $Xv̉_|M@`!J |e=MnH 28+'6Y"DŽ2pYO_⣇˕B2)fRZ.w]/2|Ķj-_70RS[p?VZޢq?BݖAQ`=VO(Gō@-B̀]"*<Σo6 IMԝ]U$0 ^/t\%d^;@EE5oy7L^#V3_osL(N9Ep섄#mB( KS`wmR1StDqWdҩmP8;o|4(ǮcźW)2TW;'̥3Z/w++</K?4 |+Ck}ӊfmT!K)G,@`JVm3G@Yx7|ʂ"dOڑO8cRgf\x7D.bO/$hBSDi6氭FU% ە-ۦG_xEoxS 9I X/qDzqyxvyC\a E6.N~4wY2H)G4_*I2TqfX wyEe* LF;,YGs|hfiNyUdҘ5d3h9н' F,=?iryw2ĵӅTHw.A[r)j5:XlWd{9- V `QI*eu ³A#%V8N:P檩| M4Ċ(_2&;tMM*k7X7'} $+lEY~YD)FiӼ˽t$cԺLE 9"qupͤBp{k1?cmb>a1EuyŞhV0yjҞuGBΙ"Or>4y1[dBz!"S,Uȯ '"UCLLF` X*}zf\،f䋧ˑgB hپy-jф[u?q2[)N3m~JYzyMջ$TɛeXhӌ&d^;J/1wٖl͸P$!@vyБ>|yQ'5Jty!(ʮ9q1vrj8 2K&`Fօ2܃uR, }w<M,E˼?ioV}.[ӱ)"shho=%sWFz ߥRHڗAf%u;zf}WMneUE\A;?0&fJlc @0d%ihSn{N<`8&Z4;F"ejG&.%b\0Kb(m(!8& Z,c [ & tyzm Y=;芳<l"-? +wx(J3umIkS!קY/٧e*1}5&wYYƃh,Vt[;:}6ޚdCџsڮjw%}QE\'1£*sMb;+Iðx |V52SJA+P/5tr&0;T,yӱpi0|qy@Uk1Ȃ<~QeXʍat*yE8 T9 UK&RrIlL0X${rx}ƐPTV4qUԑoa.?ma`g͞w>*yU4[9ݔ(`PGÓpw&$/džС+ʔdc#_ ;EyKc4Ϸt#њͨ%ʤȥ忴Sr|[\:qЦ7C3$IaS3Tw;"A`͝r2J/\,> vNy9y!˦}y|Ihlµ+SƇԜsSr^w[Dxq'-@K6ui׻"LF7;>YW󡞃~ Ӳ /b7W6q`qswoh񟟩}#]I^`+*\Ƕuۥz9lxrxS$('z>dyJ689r ^=㨡]m1gq3X&#K>&QI"%g"A~)X-ZkYr~ˀ~n)iGDfx}*j0= [ij/MbzK0Ug7W |DE.vSQռi!G\i ${:X׈f_j;/DZ5 x6݀/bZ7na:() kP%8{4D {_'EK_lWM%/E,Ssnwc9fA֌"|Q..nLP-8Bg_Q]8ۂ:&{9},}C;#VL*&+/,Iɱ,9/FާsdpM}!'ϧsh~d"GZF)bhZ%RȝS>C,ʳɄ^T)7#+yvwi* X5R0V~`_l5z;"âs).}. $YE'n30Ó\_D͆v5Þ;+2gޢ>Yˮ;~\H1q qf;>|"ZbȜw 3~C|ՠ9 ± V< unw(e%Le h$2G]cڄ^NUǢ/ ,vZcg1ڠ. yv2y`ʳONF|)8/6`!S^.+qwjlOk|ً3Y3ΑG>@KcSNSEM&H5N2fZIg2P nY9  zʼ@GqB>1b)jڒ bBQFfC[?ɧt*t= fQGցd"/q [Q޽+{@);AG? > 7a Hem ➮gA,Cfh",#f a0ktI2UŃ%U-fYzG|{TT _$B~.v9,'z*8b/U8i _~р9-ϵړV(/JFN]a$<BѣFȿpkƇ}I> &]y uK7FŢOଯPGB0gif3)<'YDdJTبٕf#Bȹ؅䗇qDOs*uS>y|r :fy:t!O7cߜEJYyNM|{G cmӅa߫7ez>v {ڴ}iQXp*4ÐUj%iR= ZY@*.Y`$ʤzo+H[qmC=xAL4n/h0&J|,)ĴT)"K Bb\Onbyb+Sm'FB$"loI2Q3԰1eNN]Մc7įL\ʯ]* ii{Og)X0Ljn"c+$~F;ds:JQὦ/L(L!]CM.KGV e<̦+BGVpܿFzt"e=-#X,ݍuUNqEG,o'%=ȷxu,[ į?Wĝ0l?ϙ1Vٌrб>% aΤd\#y/E6]DodktZVr{eHfU2(c,}KBa|&(k)UӤ#\K<4_qM"ҰR} )^~`~c9z2&tgk2֊}GS $ |aӓU RNL1KKYBk)(,OO+ﷆ$&*uCA|y㸽;:`c.,!'0% 2I獧}H1w-aJ>0zJ+N>4ӔSj.im9o]Z~za;t5=!dP,'n^ۛ?;Jq*O&pݬbC`oj #k;A[*%T;.B9B+|McH`٧ȷ4yP:vpgfShrjceNe%\=خdP3(q0zJnՙT].y:D~sحR'PlEθ`X.V; }_u)8"9E=fFrUtc2S -Y-b(=F&s>?wu=7\ %DirnP Pvq=)1fG"jY0GFZu) ]e/G@]ʧY馤:2XJMC#=~rqr)@M| ZSYk]GU!0/}r|NbftwwOP@ *([T9R#538LM5@Gæ 8bvƘFd1jcg=#i]Q6H3Ԍ7J3-2%C敽bȀ㎬lTMj\[ Uá16ADfhkcD7+^]>Sk_`Ju@V73KN8"B9a7?U޸CH}ٲ@0d@j%++EpgNA{~OarʦT\G WѕDŽ)_Lz5@؂[K,M{3ƢV-v ~";=K\<- W]*#E/oM878nÁm L,q훻&=ޕQ@n!'!|+ĥ^{ ?6iqȌѦȸ7_P*|W>\!]{QK+7LpɔJR {%!8WDYWQpgx~bJEڲFy1xT~>)L\!8dזܜi^_Ϯ½DX-?OɼvPӊ 3H<߸)֯iGa܅+F*~%Z~&@$bcbY2', $19jOc?Q,Z*UAJՌ-'uɬ{ [ *1O& 8Z.$㗋i?$If-cѮ4}Xg4JZ '/є[(h{NI^0]oc+I_o!Bth"2#ۥΤ+T;栐k{G.KM9G.nִ.8F(0iXg ïӖH$H/^$ k&zHM2KtL0 3v5\ UZ+fvs -E-0hm\uޅBڲa@NGF-WU\#7F5û>eDk֫ k4K,Kl!W0m*|7_5b;ȳ͆ ';.߬_;ؚJT9%'Nŏ!B 7j} M͍^uR_Tsm6.aM5$9nwEԌҿ璎eGQ'NjOмL><]J~zm$Q#p׍ X=9zz/3.2V<>S#ߜz?Fj`Xک||ƂAFZMT!O7e>ݲm۶]˶kZn\WϾߟSs\9خz+4qNO.;gDr׎ Vʙ"$eEH]+W_o hɭgM^X) qŸ4WeK $r* [] V8njW .W%A`,Οy'kqA/pTode;t7<& hKo6QM y(ta (KT4Qh PDG0wmru% g/!B'~dܴ9TH5+$FOI _œ?O-E/jol+FӅoXiE҉w]ڿu| >^e)ip9i+aw\m 3ZXtMݟ}|~͆@eM7*Zb,!Wl)^KUk<|6 xg؟E;+րzyJR87 av(=A{+̙)yإ$N+87f_|)UY=EǔhnxƐ]s*yDijRSCP>Ll+~pf+r5ѥ(SUD@&YbZAD̼,gX|fT9$˚5{BZzW[4R_sa~*>EW<*'Up9~~/H":-sne rL%u,qK1Y4->U*ǯK `묄}c$619T&k d2S*ԁ(*k հHRmKawld!OamVqj^JLĈ'szV )c8583(kķؽ>Bj>vW3G3ޮe(˱U9 o9b+YUNєg{oUE3Q m WSq(]!ha9R\ iP05 y0MJAr16~ Ok44p|2ud@ &$!x`~(Fz5`aåEu#f9)V}:JY ׈ nÖsXK"bI-JVH&T%H .=.DV? Pnքa5Fnef ܺ׶U6y 9S@ugt6#D9rE@cUw*7xqH8mfZ=4]@ĽyB9o,@N?7Gk LN6[>ci%3f p ķPaiP@E-\:B8QOnk}Kd7;C4h~)TM7y5?V| *"a?Og%uN×$:R+Wa? z_I<yCGkY^YP` wt^Z^<ψ1 ap!!] y'^F2HtH [cWL㽧M+U0Ds*qdKt{!!H,l('dlH>bd R9:2%0眍*3q*Y 1X{8=?eD41e.??*&dH4&d;NvЌa +݈L4g{*#X#<b?D!Ke9զj)Q)7GWF9ab7"\[;8}}׎ּ1N1NWE[p,I KY'V.!oYjv`~3o;1+^U{wfj,M$bw&{gu+C=#,NPVЈǺlr?/۾$.mt@wp/Qdm`L J$})vg˛ ~r Τ3Ό+>E0b{ %gА&v{SD jT_|sLJ9Ļ&G"#7SwerZ)yvua*Ը2u-@bX2ЧQC%(?`׵ʙM<th g/"i0;D0EL7cş"Ǡ0Vm)/Oq]PIo!a΃I$k[i/s Ō1PQ+?,z-ZٱG{Rfh#F x{wjb; vL)4׿Ӿo.Fkc'0m = !cF 4qk ~2[ ž5uU+'=(2ɠ+mpv,cb:Zk$r_p~Y [W%S )r; {7?jB OFh\ G֟i;47dUSgQ+{}z*4S}99#nQị{M3.mT5q:+UGyOQJk޿W^UbO?$8Dʤ6s=\;AFC;Hk_0NA蝵q?ry$ ^.DΪ LBI ˠ^5\^w|~kiկJ n=#;4_JȖr9vH!xH0/k 0>Q?vaf~Z z[|R"z%7c$]4.qz޸ڧ獀Ba3R0da0[Q?.@хvyeKX2 $i g}) TM NJ]h1W]Be8UA(+H2MQIq7fG"{`3<3ښ6j?hf7?עpux r:<:5$V7_yzjN; xmY蝱IU`eḞ͔Nx7*B7X}#w ĉ I4cAfrw):OUmYABSgCuFb_˖5&D0j4'_([a:yeX2"M%СLdNXja.J4$kƔ3+YMZ/ gt{H'˃&Yr鯘9D5T=;LdckQ`%xG5o jtc h*ޣm?h/L~#MX#ÒJi.31OEbϘr0a,"ڸ~l4 gZl h{3g/ !69 yAwIGw,B88G.l;QzZ25-noRljp ]8KYagO;gZK/;Fy`B } .-C_yl7ώ`*m`;b"PST{f܃fZf)c]Cǫ9\Q/W@?Tީ8ĈͿTRoVX.HJJLov NwKt*`BKWL9 ș6MzI%2sH |ـNkHJҳ &fGY,Rńx˓ ,PMzNMRQI2AviU9ƨW=ƽdz/wPFBzB'mH'TaN:ο1NPSlI 5,؄4ln|tU ڟ5MnH>&% (EQ,69 nK%JTb?\UyܸЛB>E պl_?qZ;ckq@WU4貸Jٵ)LL{K@n dmCtSYkVSQ)JQ gup3.uܲ1EZ~Ac㧕ydj^[zn |x}B,!e} ORaM{\DPk̜bǥwW )If1!ԡ+d*ڟ2#6_=ױ-k8]4G\qr _났Vﺫ ~k@6aǣ2\0lq2h_Ҏr2M'evqgv\b%"? E :^e%j?/¯ r4Aϯd,l'5lḌrG1So:Rvȶ[GAxI/vbyDFDdF1Īr9J1xT˪IXfG'R؆Lfdg^%mNpZxzmJJlkk§piLG`e+)g=EUizNBחszkͽ]wR3q!@h x8J4W.+2sjF%QkbX&u:`N!/I˗k: ػq )?k /=Ivܜ2BIHl~}qs )l1/h&PknUNk95S Ó:c^ZlgCaSW2[֓ߤ(G ۬GT0 |ؤ~^t8oyNx)0IA 62vgs<격guiɔ4PENY<;Y2520:F: XIQ x:]!Ҟ%%7ɤupW aoο2 s!Yބʟi_L<5@m3UV{?Ѳ)␇ ݹ{iC5 wlb J N\p;F%2qOK|n5 \kAa8sНBsְv f,—Iμ\ J1CKJ}}]VH' 3W(j{/n_=|zp;Y'/xR-]3 #]t߲}IFL5b6o0 nЋ U_1չΆ5E5 8X]фp+YkޜZoT O ,X!BCY$^XaՊ0ʫ^Ix^c9G,ާFe,"3<.bGP&ɺq:J~S!erYc7xOOrzRXjE_g?8KD$Un);d7SD\pgr*MEz٧]JJaj:Pe_Λu)?0SRAy&Y\Q:1s97Ru9{+d 6܉O25GW+>  !ʈHUNFEq-K'N_$/^ߠm畴} 0">Y2 ,D*ՠy'JNx鳕Kʈ\Z kJ8կEz_5)$HAE &W"xl)Z@9jN'ӊ5^:x :b{s2¦!rNze/ňXiǃeD xp̅EìLrciۿ´T4c$l N-RI|Ӊ {:m%NJ%mNlze={,`U`ɓ;h87"8pPi M[kP_@֢L;-Oj2$"+6ڼͺ- a~1_d쭯>-)tOʴt Zץ`͏̟RL|X:lh@5i3<$šD`sڗ]7QWma1Lc<`#y %n$b$BObׁ0=X&Faix||4YgQeXS3/ƾ6nДuFzkS`ԧ fi(Y(%'KRVz#VNd~|@R+Yq.pd@ki3, 5 P ݂0-E׭Go'6Lm aX.T[l]2McL sߝל=F;Zϓv&l-HFNCgOƟZFszA7z6 2AQPh(Xq BR4°lr{1xDo Dhӌb9 YjHf4dx?bRXd2:W1 #X3ټ,4 Yn\ x,O+$=[bhn$D%`ӌ{bq x!4W|QRc F:$|(7M .HG;9_%%H/2,;kj(3h,wT#\dJjG NS󬺟y*h3Ϸd h`S9A̴4O6QdnΊ%gӔ(Fy1ѽ &[ /P}xn?X2#vh i{K xk>uLv7 -= FpZ+ǸQFi"مdFQ_Y"k -?kӑ 3b"}o}㿓hoC #/:vdthQ6aXorkp+jDf:MژUå!+Z/^aTIZ]€s#rzkRVމ -XEIL @zПQ*[SћR]xe4mˆJ8G!w)A( _Q2dvƐJ13k9] 3!\C}vg)eh`D v/|QI0R!R{cvT-{668 +,4QxgC4\^ٺl.dbH-G JhDZ>y-c%|H.|\ Բ/2GJ8n W!|YPyIdXc6n807C\#{gXqgi{$d] lRuǨap֦DP^( JlYa}Iާ`Tt q<! Io@iC>c!LRbze ?rsn)F[ifǙA -ځbg4g> #nK!{#SQ; C9g0 3偾TIefLЏ@ u+L)`(˪?EP`-BUDԷ,?Boq4( ӧ+?~ŒͯVF wV Ij߱O3(d|Bޣ 5x+Ze? lRgCd*' &DX$!O*#EdAu%Gvf8E܍Oh &co;2[2'lm2V6|Rp10ͅuEY__rY̓sH8P˟"{oZtIdpSJB#)l!q陻vv]'zI93VGX4E*?z!8}&~:x;13c]^khC~1#\y$ZÒcƑ>aπ9lF߅\?Y Zgl[ b$D-⿪IEv|N* _˩?'6,?XkW譶J(@vi5*sJ<30DZa,Tl5z7>mt/Lz#m~ sʤ_?p8`g*O wK~ڦ͢s}0'|/yM݆sY<gbR,2M˱[pAF?հZ |7k?^+TQO6]X~#G`sŮsۃdRՔ1Il7Ӗy] 3:hVN'|#Zw]P]G]iPqV"3<$*Igt?rV}o<p/S][50AЌIB)pABX[𫲟m7MIlT7B~ueӣP̒)M]1Fbor%;{| !ɒY/%4g jV!F7Qzu97ZpkejI" 0Ló܏O6Ո;K+zϑtݨLE]I)2a%u꓏@Ľh}E-SW6ǦoAI܊?+"9"FEVvӧwzg[3٧&h(Mލw]:Qwޡ xǸn4s% X ;fcn*D[|v`fzRD`CX! ׳p+($L k ΍\'iuA<% j1 "%LrD~^ǜ?mڟ7 ~bi*+ ?@+5]ܶѠ>H(H|.0X'THLkD"R*HځHi "p.R~OSKU&oQQw. ,vp8o[Hc4߼` 1"y}rf(_oN@/:De0'e6mG0mt6U=҂dWGQ8:? _7MHy} mk(]` g( C%a+~xY~|(ѷUJ5nxEP'J%\R6_azJZD'0M@sq!:C22CjЛ|qoET0e`A /zw^k2U=|BD49E |ǚM:Q洈x.*ĒӲL 'Io 9tҭAD_7BS3@Al}S0ø/i s.=IEzlsrTFwJKP)yحdZ.#:vH8'>q $9jO؊oWRt &fUsFtqnm-mؒvĈ`uA΀jhWd,I(_PɼX]+_mna´Ba!sKLf^ieDen-'אrYCt>;[6@ @tjQ2hd%QT"dD ^^giŷcƦ?Slеd5'V*V)ϲ]!N¥Ho;ÕݡJ}ڔv'7֐oiX%8jLuFjZF:|ф.'J+5ûY5x.n@#74=ܭw߁bʇ 4(l9X8Qs5g;Ls4budW}PC)&Rs+1az)lF#y@JnAF56h{ Y0vq Qi8U3əD$t<soauQ]:[ΒrY#O81اׂ҈,lBkQ956[ @ү/ eW߾-B?[emc}m=ҩbM]=(2SBT(GoJFji82O"2"`;{ۼ SRF\Y gSjTQĄE|ZY:qKV,U?VcVYu t W3ލ{x;j ^(Wm'1<n D5c.dk/ m, KvtL"w=kB Df*deJgU؊ԅɇxy@45fiec@ӯۼ4J)dt^h"[Ȃ? MD VSR3b_؋>y;A|v*o -VAؑy $ "9+G^ 8Yb-Mc̶m(00uh2LA xg2C`8$Er( JVeؙklܾ㾃Q@$ELaSg+*hnLatuEL5;J*}5ms63_'T0Og?.P,iJYdlO̥*Ajw7$P0\Mmf'sm>jCROc좱K&p4rb@vH5%?^dz~TvQi޺_q'ZڟOJ)A:G/ONV~ %0]XEF0Ζ#kOEaX҂}YyZq"S34gyj ~[7irXq-يkԋ{5#;uIˆ%-jƏ,H|Q/|[At %$]  ܓ>=x|;=8]8Y9*/(9%/ %aL)O;+s#Tf")`(iEn}=Qm־:zMZ+U7q=px`%Bk2sl xݔ[aUkQKގ/d%˗>m_qu;^}_4'm(A14Y_F Wm}\txU)ފĔs0te-q,>ۿx03tƳ|f'nAMW3Ζ˨c ~B$VsJgfm/EFrόǼV"#0N%zWEvc#H,Q*3%Űt=Od؇BL4j @r;u0 bEh Z".RjugUT+")UO2p+iRc'p{d?41. Z*+Ef!SW`1vފp{h9*E IdB׼Wo9z/ Bze#Y'IO{G*29}I7 |rrmZbi}$D[V:-|}.e?{L{O77vVE ;-G ~RU.O< {sc?SkH.^3%/" S"/T/DuOW|]9& ܵL譭?c kmt%oRE94.;9?- Fb RNRP'5z>̑ ܈dH"UVEC`>v{_s&FҒmc4|e!Pپg7(*ODo\nPN"PT=W$Ɍ,ka& "܇KiXGVp^nVB>ROP֓43|>YVȓh)9;0}j]Gm rQF4ߢVSHy7wv-J31d[);˖'nu%g!͞q)'P(tvSoظwimBq~* W^!)Ԁ0U!+#陯Hkב;y#``OʬBrH3YgH^翄L-tq*jNݦ-\X`wC`sBH7rJ4*cr~ McuH掾-iA}o9DɫTLF&9D 8x%v^C}2{.T[o&kdnqotv:kl+,޴ǁ1QΔ9 D ,4 q(Rp]o #Qtvai[Dd)IWIEl=`])z\c,/wdnx*[N҅{UfׁF#v A4[)<;>۶sv z|Ds,Vyj68t^>6k8n7u^6#Q9xU'KvH qs"M Mx[m{ިc;q&9VsP[ x?_lq ,iW}ֲ~ fhئq+*@y z$jLZ\*4} bB @Jw0H$ng?+QFs \F|b2fX?JR א-\Ar|w\ ˡ e*({TJ&kjQYAc&}.ЏP_d-/S}!$Z%͘Mb|ɓs&r"nDĺ\ вF|섉'N ,DsJҖnN1arxIM}hbG ˿kN^ecfsKw[DWV2MbS˳Ϣ[3&ilU~ Ͷ%v@i>yFfOsJ0VŇY=hB/ ֩2tJ) @Zk; %*M;PVVs T.""㷮~j5e%V?RQ8l'ucJ>hr^7M?Ђ@;# |p7߼ÏJwAGQX>׋P]HK^#@8U+D--,\hb$稡/P 0]q`8l|wy?!V <6<+[жdFG)dsRb=G]-E!n+(Y3N7boZ\V8DoI]" "4@!y,NߏBO;{_I.wU On$K,_7nrg,?P,4F3%_svZn DqF ׉>Vŝ\_}>" gCFKe"MuG>*B>&2i9 -0gH6.^dUr'A(z7? woT P]hG'&5x䆿q⩮bCK$Z泶$p˿7fTF34?4TL̏쐋`[xސQ1 1/9=T5ֺh(;s7,l^6%z9Jg+E80-%4p(/jzLϕXY-ioYuYVtFu&[h)tJoQ|e, f>} K9w-b4ݠXCLڌ}d=S`K2שUQ^}%ݴv5޻0Bne{?-{U?/p"{#/˔/.t)4jb.͘7{LW[&MQduB fTLfz aR3XQ@KZytNُK ӣM&9[w?mZ/}< AȯRȖBs=~BWb?DEIh5K:am* ֡X5+C vi-̌򨱞BDO[t0O`.%v-{!QMtInzL &5S P{3dB{h  -f򜍲?@{d\w򾢂F@idrYpR8>`A[Q {fG? t1<:YkɼWQܐ[<'x">>lC>l@8d#C0Q Tl$+|PZ7X+n50L%U\>nah7SQ ؼ~0D# Bh?Ѯ=nCZI]R͎ISK+f=4[ ?9w[rs4T[Ij$MOr^q ]ɲ@w! Y]W]׿NulbuJSƻ7kVY#" ʾ̧f Xϝ_.G<=x}_ %%%Hέne!X.2g8,lV5qrX%.=r 0=UVycU^#{+|a_Ƌn_ VT8e'6we"XZuOBCAkO,YWVPl˚o="C_DMoA׫mO'tQ>!9_50_B=8Ҁ[ֹ-Y0_N:s\;{$ U"p\V:2:by/6>khdixex!^砥0+?>fYotVeK-̀BׯP,ŲN61u}[v7LF^঱E%gUpo{i?^_Zx1(Kਬ{Ħ^hOOav~W Tn,F6 J511bưK>L$\*ӽSW"%#$dbd-)' d7#sd7@cyIc4 ̭D6d P$k)KM2! P+*elKC/=OLU3UQc͵yJ``n`:PR[qQMQ 孽]&wbϬVpT3Cl32HUVBGS"7e-& -Kt#?}e)@%zkQ'dg&+fHqx\Un_Ҷ)T[Pб`;+qJď2MI%\h^zYxA,S)# FʕK.e6V2^N^W1hz[fqbSn÷rn nisՓ nc6 } Fn8Xs(pm&&5̓6>o׽+?711X8w&nM>k(x+4DX5*lxދ42qZ*?+. \s1z=*t>`/V ]qw1J>lhZd*فˆ(MX-n폽;ʥ=wSרaf,U ]o͸['2 [CjQSM$C4tX['2'.@ !%@c)bd;6>g|{ySlgS|ME6dPWا#-H?cI*:p>yzAu=| @VuC[iדQ!{ ceH #5۸tKdVǩͯ6|IOJΥU|$ZR@I/Dэ m{D[}WKBWZvo|fŬ~@M]'s 7aHx=Kd 'êOUY+F kL,J,2Q$cr^kӕ xi|EyAȓ;1/en^)r-K1~Kl GHŦ%toJa Cw#"4]SIظq_f2+v~;z#.!&|t0rNO`7cfOZP/q׫+C qLɇZMQd^ dV40uY>A/¬Ip޿3_=q-o28xzx3ށ&yԦ"\B !c!V;- \҉͘(؈-0 =׬I*X ʛ ;j1&2PJ wao+3jDhz3~dW"cꮃdpTR%> z}+D ϲC3. Bww#{5Mw#*y( PzKJAXύ"g[N*Ă߷B ӚkzJf $4|_U՟暠DoꜳuJOguicMGh6S*<=PMSW:{5": %][$.+S/~JC[2rҼ.ߌP V\y9{}h_<1 if+u|IAr̮b'&(SE $G{>Ӭ$||Ի4{r{^4uw ~yI?N_`\' H;_ҕ9oL,?oTu;(t2ߪdnE{]}f<|9Ro;9%ɨD PS8ҾArӕy]V}ȷ|~W^gGpaϙM[m.F|):ɁZZŷYYY_|Ҷ |T *"h岲F,G*\0VZ£=HG;O n=E U:2lΗ9'pm޲C[?gjxd9/c@VK)E ׵!w'kO YLp,8+֝wje\q-elΒ*6]F- M\~y~s }Lcu0"$-9M_S0؜"i6NWߢ)0Df+:҈FyJK/:OϾ(x<>cȢ ǩTk_ 3NL&XM ɧ5Rr\4 HKVw_|XSwyf*\fviv[,wcakyao\D HOݙ^_ TMVy0 ]kKSJ{kfPMՓHeը77=YL5c֭rM`kͤnP[,ңzӭeTҷ&hj%K0''t0I/9(C+G׮9G3s\-' .=B.*UGn A溅.'gYPv=OQ*l#@wY"Bz 0$ˌZO7{]\4,!ۊdD7[)&\uH|{i}E (-Al&)'V[oz b䲅ۡabͯ~YP?y4A:y<63_90~?j)U8$AIBξRMKd+9ڨmqO7.UOsf2Bd`M|"XFΥ1,JLFVlUVSDio-^+J?0rͰ*;t2F$Ʈ'hkڡ?`̧yT$; ZS=45{7oOB!^񉇿~uEYQeޓL:֜B\[ΤIf,Pæ/] I#N]U9Ҷl֪Pz5<אTC7:=ѿ7>XlTu btAȒǰ)߷D=GFYH|l SȤVE+|6r98# VgkVb* 3iIk$"Ud{ˬ@ *.>+%g52{p_.AS%lΫI^ ]١hZQ%" (C?\T_^C܍)̵r5L_9߃9eR ;g{}hP&SΙl @mڀ5h)DhLL:,\4DTv]-UiBCp#mWeÌXTybX)Xxz;#MwhCc״y44[ l^$xH΋'Cu0Aib挼?M&MNaAt#F <E$GִHiŹ6C0Ł-= ih68%ŋJ=z==> 'w׶M?!Jo ( c:6}!rz%[+*-쇼U2yjw~^hX HbU9{Ƈ)4i@PҠ >dX̥(Ed 7댐N:=M:Xmc_oZ|GnM`y+,&hGe <֨0pY"^Ueg:I??SĆ9*C[sy|N4ҖMtA$kzA4|fQ`RBm Ig62d{_[(FPpWleN9NA='w7 wsϻpݟKF5ٴs8xP |j i{g0@g2Ҵ%f&20AKm)l%Uu_1I!?=Q~2\"4}Ǒj頂95/bo$]AS/~kbv,; {3ij.w0i Y G%]7x*;۵ni¿6Z }i\%M 3\1.b]}~/^+߶?+tC5t\IzCYY|~s=,yx\DkeZI^{KrfNedJ{P!o HxttK m]9еXhq#? HtL$mԣ^W7ToP#'Uf3gOp1<ý>x?Kq֊2fHa28URfǟKRLwzp$d˜~-[7;~M*2|=Ũ#ƻr-Tɺ_BBE1)0f`]1Eu;O2na]*٨6oN!)cиEnyo&y98 yY˯Jk ^gI}\C!dkONn3\ds+:|#&`O#!+Q)SRfȧhdC5 y$7#H$h` m~:eɾ,5`)Z3Ksr X3ֳV:qRMİ"-)(HAb&/!vHaɼ5E7懎+"/iR~ōdu S| A2ƄE&"●wssj鳁Cddvg9*] j*AҺ6)kR0ǂ[yD\-IϐnCUWij7E ָ`w9`x3M2 !/4zl\OXYS`ɞ!9ĭX J+K`e SWO42xk.YJ K*rMRM=H'N(6A?ݼxja0FS2]eraǵZѦmh[{8k"XJؔ}3|F<80@JВkzn;/@;Feg7LC~\þS`H]T ~zaA749W=*ԗbV$c>Qny;o o2&Ǎo4D_,gO~\~R ڽ+KysoXp} R:_D󾇘tMNdh/H03p3xω 6H1ͨL5\F{@2-JΧ&[~0YZjrpȤSQSFt6۸:x~<%=ǚ靹4!`FQ r l4&qčI h}dnT83ܥ|jy-qcȵ _ pDR{ 1luu]D.Oq +udNJ~ ^i7SligL('Wl,+n$%)2ş#s\C' ߷W!ـw$遶U5&Nƪ tg\PjiwjU(6C?Xtq)ת463(rT/SE1@^ Nq,#ECuzu`S;:902LtX?}ҵGB$7Ș:9N颅OSyõWEv#y" Р1ΚJdIo{ddʚz,R vïּCqmYT~SF=W"z>s ϦᅟpF:~WYis&ˏ`^:i-'x%6df/(lꍯVm|\s]GYK O|o*_:_#ߤb8?Zo gmyE29ٍ$_zQ~u~ ÒGɋ)>Yv0\a\佮gSVeq@;^`|x]+B܅T "pGKΚ6VaYϵTCyWd|ZiZ lIJM^Wz֘t."h'#xhX\#}/W `"qtWi' zVjmʊunR+x,')]ߜ=l 4*Y?yoHG,ΐV7b0Lf0eAfs5펻%"N<;oV`pa5'Ʉru[jC:Սa*T_.{`X^%̬#^̕iA3憯{vWh,s mq)WC;]/dw@mvHoLsqUA/ǎHblgzo'whro_1vnwb5,AV nDT>X.n=e83C>mzBěY^-N|s'J6ETOvpEYwne}M>{/&0_ˊx$ a2(dTy]JW5`fsj <IߑC7--^>&YfX,;tg/UWīP˧:g}eFiMcrn^S~BTO6tض̵?~07!Q Y]^g\ ͗3p!7( _-;:7$ 3dG":"tW+EwW` |bЩg:i|%` [ԕ'q-ՔLIos~rr֓c4jITݒ 6<yLos!w?Nh w $o\`'PWG H mK=;7ٙ?qm ̜r)uN*ݹQ HQׁN`%X|ԭWM?7) 'pЏžov(ui'cYUӢ岛(ɓ-J# ƌTO\)}]ў`G2;q IS5]ldžY}Dy<քtQΉ=ڸZktcEX3fHkUzܷco,5Xڭ*-_JgdZ귉wYK:-P]${<BY\4{?7:e>jr ˎI]Oe0K -jeVN~'Bި}M!t! DD6{-Dy9ge]{_" ̏ӌI䚽]wk]}b$S ښпM&BX [tԣX#tyH+? 8z&BDV,1Ijt`Tdqʳ:#Cۥ~]KmUi~9F,5mG˨؝s|Mjyr-IBt<z|}%8"(Y̕nYyUu\gaZ[? \bx9PM>j2bA]i"(LSﳥ};U FCc"|'V"Q>pBFBYr5gxSFCkjPeLFu NOOS'y]9chk[tuZ& 7zР4lӵFL1aҥZ87<8GwngL`qewxgȓ݅x&ݨ]P܅K]"ūg@ '3c o33-ŧf\K.rDd]?:P j'鑧5xz<'P{h`V`@xaĒ#+io&~M&F]s>+,,PvP&wNć4Caqv}"dNA--n% gk;*lR եI9=N`$4wRd yXvksϻї(rKڶXJvE%,6ΣN>uHfK =r,Oِ@Ni-cAIe-'zYR-gK߿1Hʒ~Ifƻ˴]D9JǷ9\* G+V(.d?Drݸ<[~F|cj s"4זN:>jW%KX.;IgyA}Xa[Pٕ dUᘡ0`IpIbJ;tx{r@4D|q"nGs[&wce|cZ &$:ذg o/IH8MMBB͑hn57165d/+j;@8g=d޺uB8_fnnغxr0WGɌ)z\Nʭ\DIsqoS +g)M?]-j$h ؆b '۲/m\/|?&1=Es #)kEtZ8ܐ̀z1Z6mYʌ9Z>Q#{WX  [nwAb{ kw! pUeNHÅh 9;rk܁qX tĚN8SQT hFaKl9i J۶Ocn?e}m$|@ lUlprmzdEGͣ[oA ,ſrO"6ߜ^T  Uΐar;e;YlΔY,FD*ְ Yj,%* n]R_Y*烽6C,x潬nqP|#..ջ!$#]'3IEFڶ܁'{,I4zm}L'ݠ>q$Ykqk 5_e֟R}jnw[ƸQ{X{ G#r [9Pl!~63wj#b䍕=&2XE7_G^rgJ'*2Yhu Ԝ\.o!0|.bżN`'Fd˵~4v.\̱WgF ٣?0~qFw)~ s7lqƀ#Nxu^=~ѸZoezIxLe#|0{(ݠ$qb2ERz7wy ;s*$k2_|;E_i:r/0m; -˓iNnFu~.YUO.O duhm?o.RP\ݏff/,WuH Bʪ{$߾*$(@xՀaC3c%hپտgz Ҭ`ZMyy\З*)T GG[}%,眓2z$LÐ юZ{.=\iGx[V)kHG(pРM\lvXs%,dqN2ru>;" Bh# 9'rJ: ou6 {~}6:q$:u?LWwz X gĝxɯV Ŷ|/oi!,FypNgl6MŸaK O]xΣ,OM$ }T ɀ<'zǏW;#+Ltz{6}FoORqI[Vפ@t[E>2s o~+h5zC^/7h ^_{7詽~55m:4^* (b!Wcd9T_*!{No鼓{XLU]E ^4ݭ (j|t3ʕM>Rub C W9Br%O)>KbIk< lxOfLo6VAMH%,t,S*"jhP ŀ!VWi S9K1!dބR4kƭqd#.|w5RZW[rΒgy8 lӂP)ڢX _syUp^GI'~N[³{Ln%U[!{s;i<.C?L xnϘ[DJ0%q5U>, %Wk "Ja9K(P| 1p *5:(GmjnJf^@4'aǀUXW-8x%n5冠m϶NBWE RL?߳Ꝕ?,I6Tm?V&bWeZGX:bbHyV07΋sjixu"OQ}8dE][zZ|mk&[-Pg ,em>\097ɵUA# \w@r1U!Gyu#<=(,0p:rȺ:! \=`qMCa@LVC,yj} ҂f_i7 >69>ucTmAafm]2$7 4~JRzȲ R.h<]e@[;%iF@[ABV}Y97gf򫄁IAH" *m Y=Wv+qLD>G#s(-.$-ߚgux-N GJ,ֽdH_oAoǸDT$Ivv0w!E~xQ,{/@" wl$ 2X0_AЌ9K`[wv7#1[+:tx1  >gB3h?FfN˥kuŽ{_-&|!|Zg<ðJ6" +mI]t3cnpK~Re?',hf|@ l>y$dDb(Qpc髌 A*1%tliᎺLJ`ԝ- TΦ|q TDŽKuK𿩨R OH|%+ڑ,HpmIg>p@\n;n)UH+9v+rV!SGOŵQ|A4`߃qI e]Fm4>-Gk] ~2RTíʒ,+}*рxgS~FĢzWاSъµ>SanݣBRNG%?r;~M7C'PV_q6 oF>V??3;XhT!^0'S PeG{.v=۴@N=D=Ka|WCdG 8L 'nUX4nwKS@7¶%LWZ@4 L8ՊMSkn98rN`g~{ke|hFYʼ/@UNm5 Gf?RHqJn Q~j-O;qu *3j["0rdZx~FmL#1o{7t353I/s.&UΌ9}4R!Mq3 Nf+P6fSQU;&ZС/kA/aOaפ7~S>͹ A6'DxO:LF;SVD4]Mh|S؟ǯoݾh)8OɁ$rMEaG %(4cATN}&yߣdMZhkF q(./Rm)&tbX*,1JV;^8fȃũntx)4Եb\d߅a@dK> e9fhA{H!qo<7}´b=kNWgJt}zpmY,[=xdev1@rzO!:*D%5lӦⱫ,KK}XSMG7E?Err?i;hVF7d/GXF0B6t' . s8F:p sRV>wlR_lj ? _FÜ!4zǐW-2^=I6t[~sU̴X FCZ;XSZ/^#L5u GZRXoO]VUx>G}L>4Iua+p1!T㌝ !%Wpb :Ѱg@3**{>^۩;QQ|U 2De?=7dIw׈쯻Š^7sߌb/>KN"(; \xT dG^^_2;N93fՀY)E+ra۽x7dȸpZ7\ sFɝ"/S?O}'BB. N2U{ $Ph=^gTs{ 3mۖzpX6Zђ5hŶ ` ף IOw#R5\v~j^!.` InY? x|\)KQ\qY{g0Nר]]S[)׾bHjXe0{I6tZB3ɛ?ykCq+R9.g!t)p:ʰ?SڵySGRPjGC=|RZpmԡr/C?@3I&q5묩g)ro]na-z2",( o~mx{(XF-AYS"2O豢ҕ-k${{i$Ieo\T-W=d:[|ۨcͭ.]l(&1[|2EѼlFcUzؚxUZ]fsl6I;l+NF\qVdp逘oc,XKq ϕ9,Rɚ܀^VŖݩ²vnou> ?N7h+]@DY_ZzhjNf>z19?^_~%|fsf՚ж GPnV 'H^@MWesO&BTյ:tloh0bC5+&eŌ楂ٹTK,?P97ޡcMF);PSkŽ TCt,ˬ(" FXitiP9 'G2Kn׬4'ծ)֩+_tD4rR_Yjv:933]8 dD"dHRqP',m X56F{lyPdfLf\c$\9ft}<0ؑf)_;;m='6ѫp_(A&} ma^`{d; +TP\2nhf2!I7h9PES.@!P?.ˏwL4m݃d .,+lOno m_I#Uxpf5]fRϡ˅/l5{m )m&v=[a\ЀV0}~|^B*,uoǧzK/SWma;\@&'=9EK1i\_UmڮjhcD)y;p<||_|XW} s7h7xPbpi[|ǣtֈ|Cp3=if5KzN)@){♺Ή-wDdt|S;䭡\POG w:_TeDޠ Am~`%-qW2f9"R4 oGA kT.Kζvf^wa|nPExZ[-JtLJw}m(7fq4ѳÒm}8Lv!n1ʯr/kc41ּn ;CUgfͬÊ"Wvҏ+^$(~-xmo발[/&,Hˠ҂(a~{_dLϰ٣`xCТZ@@ J"އnMoMi5t&QZ7u Jp`AsA!26+'"8萿 (3֎afF n\*+5pGŖӪ۶\9knmـ !zW^:REQ0\SO3[}h[ +C/VS=@pd^$x.,^h H2ܷ[=@b0]C*jd %;EUe(y9rҗa_xxڽz}V(.Mm&UyWc\'PTҿ,! |^p% { _(o?ϣAâ5O^vbutTiۂMS>>]*qFo>4Gnc15TΝE!ҸZH=4éuչ>!)}$=5+ƃ PBG<l_-.Q%eVwSޓ=eVʦk͍wnŐ,C9s?i(=g X3FB1TZ$ S7ű?L}u 㒳 68Op棔l $h~O]MzN#q?CxjR*s2ׯ̰;nqc"'_NN3/ {l&XE|۸e]'S,׎w] QޟZCZohe`p^L6TW8];JN;}@-y1>UC$-r^t~ 4=I+ Q"|&zZC^Ǯa/g|Wr$NN=T?8|2cEcj2Y$ŲmdKp5^ CQR(I4 [1e8?`Re;ы;y54%]irq3MbR8"{h)0>%O8P;)p{2OwXPCc@<rŎ^AOg]|k\%w.*9H9 j{YdcRx{p z_vf*λ}|*T)1cުB}_^n[VΙrZ`fom%L6;Q99d6S7ZFǪ/i'9pDhS&{2k$'=}0nbIЃYf_+\63mamc `)b'UN!bֱH~~F'v:RfZt Ƨ|s&kE ?)$~dlpȫ~lA~reH"RJD9,>EQ-e >B?G^11c;F&+'[v< ޒ{ P8C`l(]{ el Ԅ̯BYgMXІ͵[Aη'PXj|B/>189˱!3o7kh1^»ÒKʰ yshUo9 } W :˼!W/SQegy3yR ~M*-pg3$0flp=Dp4{Q"CHUG@aVK ބN.)m\ uDY/z0i=l:Ӵ3s98cp) ށ,ir']C^{yGck­Ux{XE t R>0jM2ipp, 稷CdU>v,JY|{u\/AGSԺt<6v875:D(&=~P}8-Rb1|pr"g60hs^^fM+53`K($f= cyG^%?C bwtL a'dS4 ~*gN|R},3߇ڲ98is R 5{}PEZݽzeʵ*mq&f8L$dFQ}ނ̷TIi)?Z#ms--FȦsۍ!}8WBuu`-T]wTgUڊ`gL LS\?1kRُ~hv<@:a%$rC=_]&!ץ`gcG`t\*CXz$- W7^iv 5JCe$zM8yPfju+2p*!`%ٴv(u׿rO؏UH)M3 X^B;H@~S]HQ0 7YֽI~ƒ1P@mٶяD)gla!'LY{D6̂ a{̓n.r0dfSM?L6~2_鞳%=2g3W6a1ZO*¾kOu(.gDGZрrabYM !ZCi){,x:|Б[FZl#}' :Q;gS{}QOm~ݚ@^ XƖQndzWo2jn~QX~KtQ{wWɽɊKkU~9OkC͂ اHͺy2XLf\菉RIU\"פuePsL|NP~.;:gX\\Sr[vm;`+OŋH15wl:ߔsKrhhB+E?s#KEl![ҘY8ܡ<`=)( Ki7^" @ka@ Cah[FPʗJf(dk~nuQ!0ɖmB4ыwGp 7 9ɞ6H[xA(_";F-(g*2_3>y m3/py ~W$\`>9B2ΪݕͲ8$ƕ2E WW ;Ӫi'E* pwq!'=G[ܐF^h ʵ:D֌?oGRE7ol%)sht#(~_DlDQfoHÚXN(yƛ #>p+ũ*kqPi E'p%)*{u'+A@{%SoG7 ~uq|k@v,n-1so[#Vk 3Cd?Cz"z)OE \v(@3.oiC_(;4&gKhnO=-.9/5執nЩlF]$Yt#ܱ!xhGOR>b?9O 21 $[ G /*] uHLVշ6fE:4, ?zk)~hnu,)D{ 6F ;b`u?7K׻vX+}ֳ,÷;az8^6JB>l9p!"Eseh@ %MC;CV5<- pǰ6P:27幍qcM˝wrH"KZ8Z+; + [6/DN̔j)F]?ȧ+@\)~;A *Иv=f2r%Ze^dy8ja툷pg nFllՐ9)h7F͒{2ֵ*,b>/(0)|Vq9je]vVWVBn?o7odYwfN&[w~*=XxRzBͨ@ǒ<ݺr"NE& >_S tɶՆs~aKUQj"fw̬hs{>{-y῅HΩӸ&2F߇*Gg D!P .>,Ï=瑃z4Gs2xTlP]FVƑOO2Lݙqqt5"Zmղ?V|^p~CMpHrpf)N[ֵUY|'z*<+ K[  ;Yz;ܔ4R. Xe8\m-_Vj kq: ȵ=4& gPK?J\~j*4صB\5h͜)U{'RPOI>Z N>Yu[YCe=ِxcL[^p.pxޢb ޽ڻ^ϓ#9\ HCYX7NO0W̫ #noO;6=F&]zn)'ՍDAmEK"==Tw#n˚Wwo2'&T~ș!}TZT%d㝺YX@# RbA <`wVJp}}D _rSz$K PYs,9 ƐD DaPX5DԘ!.9Ol}BMФ!rSpbXgo5=^Ì$*a跘eA')r,^D,([)(2sG ,kG kXF-/ ràݿi^AP%8TcYHMRe+LF"۳+NeW#m (-`;~D;.%KRr(d ]cNo)'u^+$4N5m^ 3: ٿBOV(\jI<8IrB" A?eg m᝼Q]yZ 0?Ԑ3-iC}<mpixv[ Md-ɍH/pFnUPũ5>FihX@g 6ϗֳ>h$mco_${hJ"?Z]VQpq̰nla.)d ĔS Z [JWL^XKTV!jE('po۹`y= -Җ A7Z*^)B㹏/+P#U<+) F ̵2q5Q®z@AR˽tĚU_ȹ>5R_Nԛs*Yx"ѻ1ғ' U2q,O:˪Mpp%s!@` {7vV=pZ!& BA ݭ;9O&5QZ(Wm Evo*C ymjwB | :bB6)j\Al#ߠ8 aڒ{M"U!&ntdIۭ(L[iz\^ 9[H;  W4ڹ^}EsDgEsX8;(64q)!mN? kb(Y'+n" *^|Cz98_ Pq^ԓoyKŖV2M` +=уCApM/Y3KNG$@0}w5nƕ9f"f[ip`qpZ4H_ehC o7 W#%{߽i4 HOZz:jc 阁A"j{ݺbM|x+}%qKc>ypiMtoERGͿVz$^26lXT;{uη7ϟ>BSCOC߭?_#Ku}f'do6<_RCEeVӾI6"bȏBB;XX/ hR FΞQY'OE!u]sC+fZ :+"̱[B ng4lkىGprYErs l"Qqf%ݸ q3W%$Wfy7rQh M7o>,j&y3{x_)q`lZ*a.Zd#|1 p[APǙnhG\)](}רBVEuJIif;μ?zoOnB}12iP880~Ɣń$PוgTп6w=8 b=~p0cM"oivA}jꀛݻyJ&Fx `( 0UH.ES g:ƅ|O`=Ź& J !I^v(/ $x&- B@"pdsn к]!ݡ9.Yݙ޷{᭖!ǙQJ 4Ͱ K 2fG[Aʈ!=vLonE +E @Z A&J"5T}By=AEjhlC%@`3X Zw`U̺^zFE9W&] Z@'F;Wy+T]u Bn"Jw ">!91Ttm\ D֎oAa0&-$vygB,>Z!\ VA5+2--8uS[[AO?xٚcTGY9Dg{y)1BGbll.YOg yX'2(oEByTn+[Bw\x>\ڿ=?Z|!8oLV9oQH m r?qyyvˆR<ѿOU:8K* q';E18`CDξH!3I#0=]1൞~F1JMYzE6/s \Q<@ ɾ4}a7f#mJP7s(Pq  } ZO\(#غ3@Hڂߙ#*l<\Y'g%A_jSqMl:2' >v@ ͛ʟ :ĎUP^yN%`/CI=giH PJjt^qӈjLJ^dPyGC|^xCZmR0AZܡ!ssRr,o)BVgfBO3Ѱ[n9> m dVGߪ ^7?ޭ}2dɱ~XVm%ԈCq' QH vt?G_!p!A~Ҏ]-@`^n"3 }::r~wjex3> };G;%Rˆ/(6Ed{S+n cG]}un@(2}dǗS|omW=iTgMÞ`m*вyЍ)W@eQs:1~lS;K[by^L"!Wr}򦶄Q+y1puj S 1/#)]j%tVU Yvhݿ@{+RX-! Iw ys s v?M3XpAuo*pxHByfi |/=d08ybkkp۬^j@LN8yj!JdžF+-P!ZޥTעV,睞Aι***恰\QN4a8~dDpfe?.BosO Hꃾp~2۹q-m֐eY1eS˯a9z/(~^)D1⻠@t2)2NE 2ɀBL-~QTXR'`qd>W{m 8GVSB3VB\?Xf|n4 *J EbS !p]8VjH8|7'ʳM dl6Q$7,"sW `eUX^Yc 7gl0Jݢ2R1#;G{Io|+lzh2>Itˆl3۸ql6YsPz++D9zaU1>L7O(@–:d@ c{ tCNC;eX*chpț,[?6y.kVT3@ ۵Ⱥ;AX!Zuа~=b-3t=^ n/Tw Y;1&ۯѦy Ԩ* >T,c} OBSɗ%q^qo C'5U"ι&Ur2aєA 8eP)-t}?e|:=4w\ kU|<:۶J)QldBgdt@1d⦶"VM^Eu p)3,(^i'⸈ĺy5}[I&i%|y&^zF˗I6᧍2]Df\>C 捈P49 lx^5#{˅'_.%Xd~H%nY7*$xD}%<bQ`ɺz|'< ,20ʪŬr[JTg"6s&雁nb}f_IptiInZqdgmi X"nQKC^^+wi瞘$R).ʸ: T7g% dJZ7p-^IF-Զl0 e4v~.|cB*FBBߖdo$BEH_Z> ,zn74uc>W.@*Ds4$9f%uQol[>;ؗn(i'L4~]-^RۧS!ƚ?wH :7ǸAnA6$GK=&Wg[\fl%{'EE [6ݔEx N%G]1ymuSonbg6\D?LyKK[Y;49M;@ZOLѿ,eBs¦gM@\$fR4J\"6]#3#'O]K<ӠWc[%= 2÷Ku2km qbGnNDy h6>2N͉ֆ oU*ɿ~ZׯE/D'-t^/aZ.fFt\˃ҡG ЃLTYpOSY7z&%E뎳y IћBF=|#BÍ^")hGGz!p6&=Q|7xHMx5]qyzR=6kƠJ~@ >@%%or*BHw80x+x RSe+6ѮL$VA}+̲}\wœ-N0 7HKM gGzꯃ;98Bu#%3e8W>}R0̹zsP}H{j !tho>/eQm޼OmLr_T:Z1Ymr)dɔ>I yܶ)1icТ-˲y/^ R~4$޷o@W<6[dX&)3saf9u{fYп${S4DZO?A-@4ؓ"??TU؄],:j8hy;4hgӓ޺y9f8/G$oedU>fNJ6 kdbX|Hqf}\Ɛ{@1:=37NΡ-\|# 덼O6 s5 ~r/z7Of]ziX{uزo"<)Uc[͊O,]F">+5D VPj2rjG^=Owte5^{wHpoc&"u곴9M/+,kdŢ_^>smDX~GwWuF/[F Ykt6t4㕔,r >%b?FJ=PX8kz@-=E n 1[ 8~퍳4xs546!}= A'Ӝ| mS'9Goӓ0#;{/Ic<˒?iaѩrUseܘ46o?D*͛Vw)k}m+<Sr{~Pe1E :W`:VUßZ(K=̾>NQPN7#s~LkI_7[_O|sΞ`:۬'27e~bTDs?>g]7OɋBϏpA! _d{8 ʬi;4?ÕZ:7"jXRa6Lҝzh5{r_TR]\Str9BR8L8ˣ)śQT )Im=U+6P@veyNy!m3uK@ZXZ E=Σ8#{Zw"wWQ F&|9c)䲗]v zH|[1G$i˓)]W`N_mϒ˜r{n3n#l=f.j7P?zc#(u*V]pn!.,%U}Sm)t9zLxJCk)*ԕ{~k'GhL$/}47XLD2oG* ”}O~Ew(wp=_Jݐw]}*d8]ii>aMPnҦٸJ9*,#87Tm6 Yvr /.jq}lYc=YV8?)famddDXo]]r,;m⫗tbrfN a/_o&%waT1Hi:E @S:D<n OL&N+xjJY[d&DiQɹa9+ʜU.U +be؄>}m$_|-TQOd(!lOI *gwP6 y-аlnޚNPv/n>N: Fxu@M8kf%2rOjH=llDS{L.!r!BVvr6EpZڌ^QlD:` P2~GkxA{j- z?-^_*hQz_vgnINi3[XjkV՚+3`qKܢ#D]A`GƇ4sWh >^U@29ZnGOuv``j{)Pؽ {a6MZ.k{- i55A-A}w7x!RT, uewWXWW,ٛVxJH2~lzsZjcv-F|ϹLǎBdG.PycS?~r)Qo–nPYAXBw"n<W==H CZIèK[ ]ϵsf[5TWU ̀Y=FQCe#6ݓO;ym4?VgNC"nص[;!N +]h j q6BEI,V:n~v[X.tdFt@ZMo+E`[1]bxm\ R,&~ݳ;}7)bY@X!;BU^XB)<w؇RXgm$Ttd67RLH)/VliZN?ޓjIVZߴ~ :Tީf{nݝ6b 9UB~M/Z ̘a`S[[*]N>#9rf &^T6.pjR(Sk"R0lJ6](z^ڭ{4 >s06 W.15D}{%ױz1l%~Vޘo= . A, D)[FX㛞w/"hN$`sfI]Wk1PA)3$4nw[(䟹-֏I.s +NTݰ}+(>oȼ:.^AvTD$,WJWIG~s!a*+m:jC>Q)zk_tud@TěV+DIZ@* f}|MI:%Kw>އh2&n!/vՆJnS&PSUJ-n$鿆Hn]"+,Q߇𸫿_Rga6u8j) [h]sfh]!!AUO5H[>GW}"TlOtjs^.ZB9qטĵ9\ԓi'я|NrVI]׉u܄݄3qOvi4ݔ3|îS%ut}{3&iO8? ںHFŪ=۳6ЯI x ]X޶r/1QJL/ԟhIA-/; f7Dñb]=o"(丞~?ߗf)OO08!-/}b$X٘8ú5sPTg,NR Ll IglOi%Oo`=4ʉ'aj yBmhŌփ$Gmiܾ`2Q-WE<+C+X_ofTΎiqݤ: wM\E XÎno&"gyTL@@$oF5ImL>6]/m1*MP5G൳]9 Wcӂ%4n8m_KKvt/;L(#j+jc_ 2w& 5'dGOP,tϗm#4r<=[oMzϙX*O]~vDI|ABeP;|w)h @lYR;IwL20 "3)E[b@1eQ5=C.P8vԨ?r/XoJmE!J}7Kin y t8tswV 搬I+B:t݊W7bKo?Ȅk LZXx+p5@>Bdir/a~zJ}6#m\l>ˎ{&ؖ|Vaa@$xA-4MѬ6X%/bs ~ulyc/>n 6v& WNZ ;Ď(:EhLEw:b(!E*unvQdn'չFwHIN}Z"pkHucW[_VE ng~\Bnj'v[IPr<5݅ Լ][ X3")WNp;xeN揠V C4Aཫ&ie:Is?y& 9̎~h &%-q\5=S}󵾰,YΗfU'o`V .0(CdhS^zS IW&&tR?2{O+|V,Nάi^P)q)-:.dXU͕_۲"wvN/`G v" e*~ >Lx YZcw-lm$?-<,d ni|~棓-ϐEj,Lt&6W Gʜǐ '31q5{)z1/ڗ]WO_ /{-{%uM3_{`y lj }hPISY5Jj ]D9z-90Lչȡ= S]Yj)Htæf9]ѱTJ xڻ> 6v̮'!>yͶM[7@'/ 1Ak: :c47;4;[?g|o^QkRBAAuLY.+ <~@ 'Eg_"qJG-m=' cx7y\sL>7Dr7d<%:",3s3gH^/\^&3riOPt!@+DBd\U7()Җ_t޾~[JLYwNKS!w)TƯܷ;)o_҅fˌbΐb`d`q°R=Epc%f>w'0'z3(⩏_O}z\Lk(Mylw<5C0)7T#3 *u2xX}>;9{p&%u:r|Z pQ 3ۍBb D^$'<F'>s`2ko(ze}7!PC525Xup+S6Z,}6G~"K_9}`Օec{)}Fݦ*ؘ8I+IC_,M,&Q?u Rn~J)P3oTdǽ[&@-i@nRT_>hu`x-a&0SHqM>8˯qT joKO]}Ͷu E٢* /Y˲CPD5">zMXK F',B1^r L 5^ÜG^p!AŻm.HPթ\kUC%,b8:QC ?_kǶ:d4hޕ2e6?sޯpgHݬKcWeڤN2>RZ@‘C4)0~gSiAJn;>f69ro!Õ2K6},;u0p.'rDiRg1kJRf蹟 s9;#|ÃT vڞQ!ijC'Sտo%rv@) h /8 u CLr^|umVeM,qۮM==Rqq7DYyKqpi?t1X$z̬9"Nv)V4gV eVEahNmglIXߩacf82.[5hGUSH?nf^=?,rقp`~TIFϠҶs_;蹳Dw*˖>ǐ2W$U1 аC,^Fܦ;3#}+ys>>bXuB2ձw*? KƟ;A5?/ ƞZJ87 tx_P_QXRޡB]jXud7q&j&{&r'\٣.Ku(Bɼ~>v$␛vA닶B"K*8+(nm/pθ>@7 ϑj@qhGoŚ@%J >B 6됴r)(2ed^rH| fO.JoHj}vTq.fBU9ꍨR[)಻o/3y>飻jqO62|#Ae7OT,nLsSUUUԥBȰZvs. &(r+3hF@ے{̑?A#M Yqc{ˏwĔ㘼w,fuvu]C0%}]& EI!˼U1z}֖`ʙbW“hJ%Zbxrgѥq>K{할OTp'i^"^4DID1AMumy&)!~iT'z ia~U=HJܳg{\JLo[ѽ>ᭅjSQʇ/Y:p ĺ[̵K }~^3uK,bU$ ķ0Sfç1AMfXQo%Qw`AlpҲBu pz“B-0 ~ XGt$?z")1v:j;n;'*ka htx%w]V۲SGuvW{ m Y\o9`.VKS :|13# FlO=!yK#) L Vᶋ<!WvɌ@V c> OZUTlc\|J"SiH'G|[}PPnV}ߍua*>P*'LcϹZ]vUtlgD'ɵH89.{>4+8Mr~rŇ4K'^Y KJ_l$S=ȴ^VYqYXHD:iT`%$OޚSr/< e9Hy2"z RUָi16˼G;9d7 n YXfED,+sj5!; ,'Lu׆q]x߇ [qW껶 6}f!!QM% JZA?Kļ%Vdw,,ug\v'a7t6t4cQ>bĿdAi9l Q^/ZzXԛvwš!m qyr/rLqC ?hz7LZ쬬}(Z{\F+3j9/$fرj/ TN-@ocu_INfP .-/H%k픠҆&oWyaR*|l Y墋hʝ@Gkk اk}O[(%Q  H]Hg|rHwß5M&ZߖCpM` t6C|dY[ڞ p*}VFliws>L@LYDݩL?bWo~_@vPD3G {eET!oNF~MIJNRNf3bQ[J[F)Fj\[)WRї5Mr74qE8t4V>ΤM}/C蚂Z'RL}qi`DWf]l G( XJ7U,n0^oG~GL^I9-Ay".wh',>!3"j*Lp8> #MM} tP DFL$2[1|òߪcu< h [ꈭl1YwuVp&۬Ve{TDذݚ9U߆$q&^Q |=nȔ:@v:Pr<9}AiC>$R %hfrȢA;&K:`ܬ. |ւh8YPGV VXnfQSuJ2*eK =XԿ픮 ߌ4N"#VS4䝐P_)(w*;J̈́)B8A|kdyK䱭l6w!X/ G1hsiSE33rCf-u+!>b%f’aQA!Kesɴ${!&K}t}[`*ﳅ+C;L&M1%^NHn~z>G]B8 8?(M3d|(ɿ" ?J&\ַ%-q#֌$1/F(3=>,,"[ <xжȕD=[Zu PnY}ԉ?Qg 9$EKh=#Rr%Q/:pR갃rYG:"q>4!*=1*/.jܫj~k-xpSWSg?c366W>P aݬTl0;҈D%Z)D3`(t~5FeVcV!UFtL,`pjqB<3AWUQw,h*Er2r]MooVi~KQoU}2 ߿Ao+-j;|#ȣ#ψ=cVU_jEս/Ayd)8uȬBgK9Zf iD[Fvt KŇwmkzS(yBE+0'6cT-cxJZ{e-eJܸ~bJݳt,7p}x6߹֘oC)BQWRl:E:E!J;tqG}$\X8aHBzVq4^T'baF_i@pF.pGQFyM*eA]ealQ΍qQ/MLl՘4яf#Lm[ݧn&b rXO'uy 5H?)!GuBҵ ~Ld7@yhbhHv<>\_BF0EzJ" >yEeDA>ĢNwSPqes<^g4, du ߝB_bg6 lh:~O:hRܾ׃=-oE ~ ـV%K=kZE|w3D@H( Jcg#ؑ7b&0=siASV4Iwť[KF~ #UW-/M =DzF6 KGb &hS[;D+1W7i"H 2LZ#%\+>{= Eپ _+I1XFTR[.GD9KJn6Zl(UHY-\]9!HY  ĪwS;}N$)%)FcqVjQHv< -seOx}W/ӡ&>4fy邽sBq9B><߼N{0]F:߸EGaCD]Gv|7wXʬRȼCt:K-Q##bU)CfUH@ 7>]Xy\K*ղհr 3Q=df[p]ŖTd ?]RCbyi 5b7e\{Z-0r_Ud ,62xoikM^\B4N*莳W=7OetI:p@u!W 'L>h[8[tS]p_Hv^Ao{ 5r _-&)\12@džڄ\kc lA[H6v,,{?/;5MZ+(a- gՉomoGȌf4Fݎ-Cifx@0zٙCi~jHT D['ګ\H*!y|Ιd*!ܫ %bf[{fVKs ~ʳhu")c1}ʹq> ={ ǓqͯLħpNwsd)-wY6h5;u&w w*/Ğ#V%$g'DYd/Q!ftn[7XݭBbvAvL~O {o9@vO-g-ݜ1ezha&Oy@Ğ޷pi5򕯁~zL"-\?);wǠ'=s b+OاmϢ %,mS uʐ &TUmZ[_vM)i#ٵIZ_YE !즡HdΉ ǿ}Vs,ͼLzND^qUAj,c[B vK/&r(<֙uUtSz kj 4yA]jSK ,o\8&R9h%q|B^,ܨ 93yA5RXSfJ ܺ.X7JEB5ؖ=OBK /z-rRT)5Ё.eLXW'޲JD$9JW47`aAo@ʹgER9бCĵ`nPqp3J(`r1m\wzL'++g=E7&@Dz!lۋM:b || G \[~a*v3@ ]Xd#y*rt,NwdrUn>Vt1<>XCmStr}JK0"ȼBwgw \_~#XK/J=:`X5SnnY^? _Dj6qN>9j֑6/a#K{{oI5u673ٍ ]tlry&k8!^`SqR8=-͞g@@c⽁E0.DΤo-Ȳ~4z<"#ge6fX`^^nck%lAGm&2PucHTLN^K ^pd~FK6!{Wmf>knfE`A4C+ɥ'=ϛ(@VnDq)osv r$0!-RLM={z'M<eO~xzܲ>q@hwBͰoYCx9Z2HÛ(W yl L+Б&+^YVOcr80"d-`Cy8 4AROCPbNRǟ՞d6)P wtU4]FInn%K/ҍ^)Μęٳi-ºN?ث2 1%I/]q26"mkذAž 9+I?l̘'ď|`p\qA3x[9GE`⾰J# 7V#0Z*~%M;!-q^Ɵw!Ы6T{TEbݮ2u<D/t& I ,&[~<ОJ262af;Oj8eMGy$B}:=O=-'t@8giBLK/TOgA4F0`=Gu0|wL ϐ #x!b8wwK0z8 ڜYSH՛<-cdRLQ+*5 gh{ 8">- N9刂 [{!&{NۯE24D=GLW |Rn(|dw;SQy#7Gh"lB]>_OLtM$:ڍT1U~C1҂bT!e|ZCAlL1+yO Ԙ]AIdh{C)<1ǚ3 聻uE1^r{HV2 hPS|!ΕWtξUM\|dnHbȺ.-ʫ&@w?5HUg'5]<>y6~*wn'?⊏v嗻?];r]6F5bY_рyP_$wy7 У=y*,54۞? "iIn>-#EpZQt3Xy;֢Xe@o)ɧ>r([ $\RzÜ F}m||x:Ų;8ڐBD}-52X4NNH-Gms3S|g&vqgw ׃ Td_ǃp^kͿZ gQ@|W|qc VlRsl0'VtR# @ 6[<%J6GnٛDvz7Y3NS#} ]:$VKTd?o*o&,7QA -?CvMXr,FX`}Vc(CTkMC7JT`Z\u6Eaak;UFWZu] 4dac!L^I4-GDj%l+ yUq-ttWTNk^tncYaiBtp~{yn#5eC^7$osmC2$h*0U?o;X-⾛|-j ܣChg[TqN+{&7\JalmD s?$0Ϙj`VLld[WrF::Xquׯ5P&YuwV[2a"݃/] V@1w -|sլRKj=JE#dKI̲v"WxM~G Siz rpXk`];qv@ =nC[,s5]Zh3tǷuSLqgS$\QqܢJ;s6VIIc鰶L]RM&Cn|u\e#9:]!@2w#*RWDKDB aJx(pRce% 8ǴE,[,{̍rxJcCb&V)xQ?B($ZKӡ!WrAgl.OіM ִZM:͚0d+> ]>H_&~`]δb&( 0UBpD!Z9F yJ$mJe|2+W=+|;-f\wr|(|hs<5u}ڏZ;2 ^o*NwƧW%@s3{ Tᖮ+Z/q^X`ɣiS5dx)38˿F Kt`17"uvS>HPƀ +Eܖ!Y/9HbZVr(G~^5Y> &l'I 'e{$ \ŏDn \~X7Rp~n"GN vse$ŕ<,?!f٪ ̐䭟6Rf|6 mʐ#O.NKF*PW >֡,;({3Y3;vJS$@6i c\]ק-vJESnu٬^ƼN\vJ( 6G$ᴨWs4L/Q%[zIγ+Qط{N- !$ZvXBMT:"kN=e(ujN}W8m %(FYG5M~~,YßWLl֧qV[;p>B7}\%i_J҇y Ay]t5GoiFPV474jQ65>Iqw|9qp o=:-&j;3::ϲև&'U"ZM DcFZ3=|Uqc8#qywYKzY ^mU#b5=gs]n|>"zʻ;kz0OFp^A'(FYå6uFD U7qfaT|kPhG|}phOhLhT 0!|ྏِ:XUY'#5uVL?l7.N/d.s @?ŔW+@̑bu!.Ix%Fu- —c5^~VnՈ>[ۃe"W-m"t_8tlTR^I9D=}(!رt -VJdދ.Z wO-\' vD5Fqp-[,f ǎWJ=߻iF'0Ko_uhS. ߬׿}4)^y |WO?:}VI9Zu;QzJ{9`'u-r(/mEOX|rQm5MW-!uLI[h.g/"6GW<\@"ېi:[6}U6YA{6v\1<³b>NN\dXxńaԫy%ܓkժ>goU1^AF6^MGwa+\_S~ %\Y ",?ʇl^8eQXan勀+5B[kL&;9%aofr2t@-%eo'?MЁGC؃sSrS6Yn çC ZAvstd 4ȓN{H5o/@ܝrE9Ws%ndQ)s1}1 `YiHڞN=߾ 7Pݺ=YD.NЎ|F-(5w\&ls(FL/IV-Gp6`KP8mgMA|B@~{nRb{ǟSil|O'4 _1C5NP.?eM'=mdfKRb36fC׈ꅇ& |ɨ?iۅv9 d>H2 ,1o[94K6`M$I2dOUMk@!cp_(2r ׁ'Y2m6=DyJ?8py~7zë~\s=oNCLヮ%d2ϋ=!Unr&ŨrLw=E~6$,-.C:.ڭ oa8SN;RY(fK?y3)&wT5ٻTOzB0.:K:}e /S'"t30Y29.;?)e/#rd"wIV_J6Α\es9P#w ؉ІFO ~zz[nSo=O7Cd+R ꮕ]{RLT DUu7v-&]v]9Վ<׉5rֺm}8J- ZYeƽ]P!UxxK)mjVwmKk.YV 㼏Jn'v_P`9G|=jh*jهktw^^iaƓ2~Yof}jUDdņ|C TQ==OX2_w5RiT\PxS|N1&{"{W]@>鉧к ݭ\YyY׭Yn55EƿuAjϩosZNrMJ]xaZ;9MuЖ\ruA[iK0M]{ ^- @J&e][+L- NM)ߋ1XK])<[*+ޔE_qDz:h*="{oypl <&ag9Պ4Dl&3י0INɵm۽9*@g<a*M[T(Q!eWA `BFR`m 7#͘iM^w}>ЪMp{sŖ3,T5S˾UMKM~dӍPzr5]-kՇko}~"5Z:VD^H#{Lr+W[]˒l}&i;Y$o6[x-@*Q X[c'}'14}s|7)Y7~Ķh"åP^ګWgFqHIo(z<< ( x&=>?peș_{}aK8DhǓ)iz];`t)cwbc!&k8O 1?$61I݅[ (Ax.'qx<ꠒYy6 7XF3l֕6;{z5muщFfOT0K` v:u F*9G+Vz7 v͵=fӹ*_([uL)yz- s(wd4EiZɪyq9^\D8c|KD pvjKM?8 ^ [ ˍ@ =I,Ga52ޭ,0uM^8ydXIuK;@)W\B[<\=ݝ\b;ڿAeMO<'*'ା Ot<.+֚-1vsu׀1Ǔ].dVt$П>WTqsr֝o%;1;\e8`qȢEzMG?G4 'kW |xwDW㺔/+) J4i?)*_ LbikT9^bf(|õ H웻cJ1fwJel ̲pޮInt+JrVJ*2^O тOSӯ68a>9TFL޳z4,~?D 9X4TRw*j, ж=X͝:9Bv0z@`?7`}ԪV}1d:hUsÃ:1(@cGUL뢓<π4Gx}j G]2€[S3(DS6ޙ޹W|_T9qhQn%]2~DZ6 u茶| 'ȯ2-y[@( ϧ Br^ Dղt񡋨&wt$Ѵ"ukj GH~TxD#Qz@(1MwM`&S/lq|3"xZҶ3yW?IGC3c=e.D۵U(:nKTB~j(Y3'u3츸snu+>1De=,贵O.UdXb [@<ؓ>Q}=6juu](u!^EU2ɅSaAlzm;,Kb菀q %S덮X\$``Vo$bȽF--uJ&we Yu(.#3?i+ ظ'pֲ OMÈzBze{8L?bg6t>s0RKmK_67-*'FIʊoLjHѼPdsˬ1'[SOuZp*{MErhL+k%扬Wm]1̔Xr$W+]SYJ^yӔQzǯbSyt?k%̿g+0nj~);j^LU{ǟ&5 ֺ߯u/`ffFǯeֻ>3};avAUZoN7njUHRˎ8TNSw{B[3n`]Y$N ~͆FqM6/Rk+ѽG(k @X8̃kȩؑ'wp$5ˉN]2ՍeYVNŻЀR}XC>'$q*ow< f[8we0j%ҭ[qʖ7RIU5R2D!H|[Uvk,װ\ T$y&Rfv%37rOrq/my+s Tǀ R"$J]6q4L{kZ#ET @]QM̽W͝$n VY^~뢮S*!W4ɯlm/seTd+v vNFb`2ȹLf6ZGÅ6~VX%3k՝fi/oRaGI|Ê?qyRt|}vhJd޶SzoMU"Yg !w =`u=V <n+'@Ϊ$-\iuɷ}Y;GkgqFx{}z)W]\s{ۼMsu[O UKɘg8 "sTǮW8R 6B^e14V F7-PY8 viȂ<4N9מߒuܧ#Z)Y]tk=k,s>W{hRm-Y(s9]o5 22BRx0]ym~i;]z)}1nmWUu^8!`_3rɗaHj4 ʵijޑ;>xPa~yh(1vYUe95Xc\LJH"-ƹIPMTGOe>,``/QxiB,1}[AT;/I5vF&y ֹ-nhtFRsQv?qzɂ\k+F@]κ֞g?V$gxpstI3:pFGhy~>Ւ8΀{wlNi`$d315MRѴwooy+[w pCWa};U i4f!\柌!2+$]/^7X5'Ò_(cC+4奚MŁAbUe*%xa«0=YٽŠx`sosK'ϝa>92ͱtsF^z,[Wj/l$&[z8jՙf -7~D{98JTI{8`Z&"sea₺kF~҇xp7J܇D{7G}}bO߅]ew99+h =k!G'eG>e7g2mڐ%}| Sߦ2TvUjf^>Aȸ "{~dWewvEqb07٫cmbrO_qXxnENB]Z@|< RdŴֹ^Ud\S>S<|R_^ \½55sU)\EG͌4w$̛/ 9xBU5oj|b ۜϾk${+m4Ͼq,GWd|K$c>"fa M݂? e[ՇQş;!;kӗM#~uPͳ .\*!.mX)&Uwm6upi%ڵP|&QM:_=y[ؾT[S21@ =|-v)mIsL=k%@hkD80{W!ğQgZn}%D]-{op 2挧DI.҄+_Bq8߃>(ti;fҊ(.RĽ?1RBkW4B1 ps[VN}IG"&9 J T ?XZFO Qӹm.rxu/9YO6Fi(:ƀŜP?E{ׄdk\]!.[G_inHI9 !i+7(0p<ndS|6&Y1_-zтVPellB84$ ՗#O%oYZ:)W`>Ni5ա]#K>{I똣:ڕ<0C뷑 ۟ #R $L'ZO{" >ꗘs>m]SrqLKvdI-B,`\=4}޵0q3zsJ vt]Oևaʜd3;Pwl6ݻ_.9/OW[XA;8N081 w3ROvPO_=2>8WǤ sqUFQ5<Dأ1*] *Dô1 ]-6պCc@k?m5C/1uTz#GqsQߤdG p.zmNfԏxA_%htozHc 뿂Rhƒ-ig5˅R;0W"9N- _m l[C5Yk̈MyBZ1?uSE{vaKC]YV>[~oMWQ߲[/cOi;q<{k Bf98@$*Eͭ}xmP,- -C/hPlj1[೜hfJ=#Mڸn":5R`֯caBCr? ڌwoAHE܀%+ ~^"}?'P.7~ |dȹ{*آm?E .t')FI~B6S ^لɐV#&#7Ixćc ٍ9ԸOnn F`g{a Fb6'^N}϶F6TfwU+g\_)hV)= խ\xqwh;e{'b _Q+0kwY~3k-?tr̫PkkH+?w6HhA,Xd+0Bh"V^_ ~ɫGm*,`U R}c&Ϣ  FSTHW [eDe#aD >Jsn?PUg 7tІyHow.0TS9jQ׸rB,{I @P*ϧof_<.aŠx( .9N`FMa{Q6 e y|4ܢ_uS*,04ih+u7 گ= hO!>1Ė=Fh E+I+{ݨg<y=uk/iJ!qrudKz0#FHkiUV/wEo|\9HjZ!Mht 'ŕ}?PczBߣ$S&I^ :;M㏃&7M/ 2KDׂӀ{RFKa1O; ?4V\W`r ' q}5#_'5β\bNEa%{5%5AϽ" )B1׌I{Dd{!Hȷ fĠ"f(T]E"@&$*%(J(^,$_ϯۅ\èF2G%6.jwcz-"3{8eM~J[g>iH:{n6]/ˉ^2-QawPéa\hmhתWvYy$aVί*3Tqmx $ݾ% 4~V'@+ 5,FnM.EfsW`:aCnz-qKw{]# Jׄ~WgBʱI1rۤ,2^+dkXCѐy|e!wm0PDH𿢣i !=ZQf @><٭3m¸<&wʤvyyKP_" /SqMEQ"`~>.L!|- g .,2 9%6Od!*DO^Qj3pФ0$ dA- BiV@ rTcV=(!_{U+d8'bhXA-!)ʵmFNh0GfryA܃oÚ //C7dp7Q3GWeJ!zS'9 M# -t[YdABRQ2ό 5R͟9CӀ _o,Xk!.jC${ЈE*;ɋfZTw>;bE.LICyп oGoŋ jE( 9CM2xKsɹ́+v:d2]t#|rNLKˑ׸wWɴ_m{N>ʹN{WFl <}W[ 1z0.tL5ʡjLA>Yzb++ڧ—C԰qnJ.\/a*ߔCʚI@gatXV7Ό Ȼ$E"vRWywHmm?pP7<-Z3WFGX7sp-D HʽUC |}9(\4{4EC9R C5?Z%廻θ@jJۥިnԡS NN},y[nr}@XQ61WM]jjyR8mJہ>R0q5[?C̈"~ot>2Lf(vSa2`2OxSTWpS >S3e&\؅ PmO0#GՔڞomlAEe%ߙe=~;0wCR}ͯEܙ/dNTZc_^֯`쟸Ry(9^Qg ıW>)`$=`#(?C R;qԟ {&C:'ym CQͥ(z** Rhgs b=Ik?ij1hCZ[8ċmskLǩlγ\caҋZx錅8XTKvYMJ4SK<P]H{1L)&3 ְ?;ծO񔡖(a2uiոFݙyW7\^@(.K$W D(K 26P0S1K8P>QB+%*ELsS*6h#6#Ɗ6.c8s,^i2EZd}&UVGǕi \e{hWFʓo2ݲ2Vx~n] .q 2o[èS''6EߵU`sڲDFѐב,|Wl:/_3ZjN;D^w޵|.Gg!sz‚09'q]"}.=`ߜ(vPjO*8'%E%?~d(D /ҔpɂX;#fQgZgU]e qC7^I].V' C~~'EGqn% :f4|mM!;ߥbȑ/+9VdΥcYu{Z?+94WaU"a{[6 zFO Xv;$N.i^4?ڮ;sU mcL&'@S atea!Ԝ2m$8]WZ\b|j˙pN s-cD`M_{Uf>98ƐjsD$%+ 9s%na0Gҫ0~֞5 {RR)U$ ,\bPP?EgƸ:{Lْ:Wߢ0-0"b68 +)]m;4$iJ딢6.-㘘6Pwubrl`WK<є( mcխ DtB:g.p#}pĪic^m f$0e%;11V;zz=d'Jry#T y`3q!;e/Z (#x.Jx v-oMoWP-U!.qVQC4>e ;}8pP,3G\zcc<ܼlYw<hgX Sjezu?5˗0dC{2Bz/y%I$ 8w/[KZnNR~ f rG[/ {L UM@8hfyWoih>ޟ5Z -7g¹v BE/~&<;cΔ<D϶ /yz"WSC86qtVUnK*re5͛qk^[{3a/`x1,ehԫ DE]R{6gK0%ϴ-#N@_bA xD}1 xqsjɹBOO f]Y[_Ӑa83uB=E"G)Cc=@\C w4dzdN}B9'LT JJ^s@tdʇ'jW}O/" tzF1_F&E@F׀)%*shg5'{*&PG~FNçtKntݙF.ZS]IAd2$~;5t>3J~T3!,QeFk"rzǖ̘>(u%Qj|έ`=Lc81ǁY З՛7NaȚ M00QʤFC)ͨ$ #ֻ d2G:8[M[Z_HU1bZfb߬>mGWNUюة,`N=S}圷{Ji]t͉x>-D2Yv[,cQH(Em.KB34.1AҰ'yVu39D.JćnKZIx?7%X}0oB 2Xկ%O:'*\\(-XL!biֽcHB9~տxTVh%%L6vs^i2Q̫2BUo-m/ ȕʻI?*R#9Co#@v3ΟBL"?C5[r#p)l$$$v LJQpG.tfvL ;1rUUZLhMGG>ުJV0FA\rVOoq2߭u_hɺ=><_B / ~%Irȇ=br:Ⱥ&YJæ͹؏JhfIxh]e=]1 JYM!1p|5)q82Rc5&Kn@q([ܳdMRHz uO-˲9iTBml~T. C/77ߺ*no-U֡z4a=,+dgۏf*Jpok?s LdUCVgEr~\â)?Ҧɡ SjbX F_$ӅlvDg ӊo3Դc$ fsCr iRFrW|3JZCPCh˫!DF~9-=ή4 ڐ#F|: c\,7zWKOR.>#4hmE_Wt>~8LÀКG:8-WȨQ~@Ix|u$], P&KEW(tt2[ִGվM#7|zTL k)K73/Bv{d(g  ǞbZ6>Ov+uTʀBB2~1O%1Eތ>îa3e %{H\]%rhC9ɮ_GGF_\(.G6-Έ.Z @gG&]xGΓ"5ӻm< c}Qo R)ɾ}m5%~is]{"RyH߽:<+VgnJǬQVL;Y#z B(ڟKHAJI@bs[E7|POO_k־@J%fzbpDt#*g  gcd/=;E"a}3Uҳ?0.'/8oZ7l2rba-yZsJ͹cƤq7*$s}tW.’K>XLlMRԴ捈 h4 FG1նAg(8g&>ݻ9EcviEUiCvݵ*B_kEODJ)^?C85/^MyVJ~Z+P;D@ 4|;&1n:Vĝ$XftѫQ7[l2BTdo/ K+FnǤ9^Rf*&8mTf.7|> h(Q?4P 0TSѽ*;OҚ-ggA0:݇\$Y\O)c΍i]| N`6LN2QtBPxKx[U JTX_A#$<)ՙ ߂ _k֩$iH('y$߉JvIHEƻ}$rՙM$NNXvZ\W( }iʿo=l*3Fh5AЪ4vN A{&eA8 ;GoWaPB @M3L#㏔]>)1zav`X8?` ɱIT(u+V *VɠpwI'nj8^fTNR۹ຄw_#n\uSYx[ZԨ1![:t6M߲hy^X=3֪AqGmq#z_JpCX D+ImK\!4bʟ@R4`!%9]xErO:Wʓ1_+th|-Tnm [9GxY602NWf{'g.J⋳F83k}Ks\anۑηF@Nϭ>u'XN٤Jr"bPނh\y !k\>p {$^/^64ΡQUO5RFU1g&|m(R+[r.O<;be` H_KgZM݌NHCS pQ7`3bGaƔ419R>eE9[T'..QFLn5.ҕ[z/-{#dĊ{J#!"ɢQB&?7^*$,mFLJ5QƖ%||ja ӗ y!6{8tR)8;gVG]?2AE47Kܡ`:칋xJ 6YI~$0y:{RY(/N.%xZCn@s"#o0qH)98bꤵѕU'#H(5t?@-9V~M&)M!u hm|{C7.C 1c[MZ #\x>I-ᓆT 6o~2a"; + ^sn7lMF5P`!~#*%*fhXxz&uiCH̄z|zW2ޒ]ZCoG^2c.}}⩿@$}/."zѤF+CkdI,j4ú)]QwŞ[܈c "4DЫ {3}n%ѩhMw`mv13ݒ;6{nU'9M{h`22rDŽ`1'bJqƗp 9*CCعJaDMZdެ vCD(H>B:.L=^7ӽuPlQaJ~|sc'˯ط{S +투:w}_4RP5܇U9'~l+=wCj5+&Rxj ]!3TnbWjƓ$ޣ&@g|nh='U~nxC'@k\6~3[9,U wFѸ:Xa#q cIdakj+I״2k!Ste'à1JuxPk_914xML_(I$ C.9l׌ӂOBu@>Z&UwtOj锝O:3O :mRSmn:&2 є).κ7DSyqO]tпtQXp{"p(ʓIlީNN/]\X;3EH{jj*P >bs/X~UxaQgo/ +NZKXԇITqSQHJNVU'/$ *MYk6>R MϿqU \ g<|@A*jg:_I;lWK[3C?0Ǭ kr?0?tV=?͗wUrC`^qKZ6!̷r<Yg^D>iD XP\׽x|7)H7.u'v|b.o\El[0޷ݓ' y9@;6a}SǾ) `'-VlѪ bю:=Nj-[m53zH0htsVJ ~^3GnfxN6~Է}:J%jmlw85WAI3 A^ 6]P1FH>)_9hu9;vlujP45g<vUZ0"dA'K$7S4"o888cs suW!\Q,=Y<%ؤyҋsCeGy/jYkS]K FH O#4=nQȷߐ P5qǠZ@#P;(KȳDt#JjEyKGU7?6JЙ&RZd4љ.Z-˱C F}ɟQo19t4D{n(]$>jw &N}'xYy!#Mͩ#X <+1^RC *3@NQ?M$RD#-LÁ3Q/O)WD?2Qt@!ı #^S2BJɥ,]fDm~<Կec&E쇽\N= l<ڲ{g~!Ps(-~4Rc5<+G9爯-E9ƶw1m? 8z QFԇ1{0M#_nhV 獕i >T 'U0/TVnqo{-w]]XZSL;%VYds{|VmȦ~hUa 3GEkwllS%6+Yڣ#_b Tr=PNJ' c0m Xyu]Yn(l>(qoKrYBC|GAep ^0r?Yl?'QGAĸD'ĉҕBc5pE#ؗ'3oWQ=_GyE:tΈ-ot "ۉrc { RUP 4 JjZDL_L~A/?nEˤJ^F'"d~ s~;V-@֫+vg |%e/'h1jf~>=z0hϠK#rX$aZW!9__iWIٔG/<h>5|5oDyvE7e~~x[g+ru x#ʂ*:#OGwƖ9yy`x4ާG>؅Y}U Nqω1i 跫6tbGѦM}b܆xgU?0m{l~RxFn/y SsPjj)+â^jE ^CvQ {V|dd`% Tl9kK\M=a&aYJ>bLHwnĉcNN9$nyG=bHNeM['y0/3‘a(j ~> nPƧ"KJNߌͬa٬!o69)`( z:EikcsKQTVN4{ ĂOK1XeXNp#{3.)j$?]&k~ɶilZ.#}*N(X#ԋ^nBnaH!#{\A2@w&C6TIiȀ:k5rr۵碱>e"H^Ô#,L!X=$A'C/$5J$p'Bpj=d({ljxgԪ?J2hġ:"yఇ\^}=nU&8U~Ilsw vP Rݱy'dds]bv |&Ԁ2jI?wn!.uD\1S}P IJ;7$D!#PxrACGOܟNm DƄ1I.[Q}QmAa=bOX] 9ǯ;hU\g4 \3.xVӼ'SoeWe HL05K 0$n`㠯 $2@H1hh˚{d7f%gb ɿت9~b6na" vQJ#NhC!7"V>Y)^4lJK5Y& {툏eW_RowdEAJ̑4aF{>/1_a^:Ot1: -ࣺ 1%Z5Rݠd p0`evNI e7dIl:gwu M:en ;A_Nkx*Fwqc7q(\z^VZn >'2 <,#fYfΎ,ѷ/ d\lCм+UE/꡸;ZBXz))i9# 8WyN9EC"@IP:F,ƟmS_& cX0H8S&n6F.pRpU&.ہ ?_m-iNj߰$M|DqOÉu= )q=. h!]{⬶j|jEjN1ϻhs!<579|YFQw(䔑p!<SYSNoii <<ǏqAKi V/6G-Ǩ ݰZgvmލZU6}.2$58|6c{1ⱻmFHuT3hm,VҴGAx m![Eد@t6f&"0&1%JQb6xȩ嗾#CuYZE}/ӵX/|UR?8jnn:fof*E@ @o Dljtep6%Zun6>Ԡ~f;iKғ\L(0SD{-.w;|&kUQSX8o^#έ.PCC6icWe- 5)@w%ҩߪ˒+9G'c!0NhTg4-y@E[S"fԠ!9+:Si y1w?>I=fm6[9K ]Ap.}wH"8CRt~W;]Tni3IVf46l;8qlk9Qti:17t`w~GҌup̊~ۼwK]cv$5vqo>ņf}}(BRŸ62\ ܄9 =ɖU)f} uyL:x̾Td/׶vHGSD0\ q1_gČi^z𹟛J&6 e>cZ4߮&y = E!{gE18W2椫t%8 rr9PIÙ[>s/2(NOmvΏryNfDY<]{mةX_, w9E)j=Jt-JDFc򷿿 &і7ؔM7"op)a_|!r)~D*/ usmOd@YZ~$5)TAqe` @H R盋:Mv#/V.ԾpRlR${zf9_W$7+%N'LFUD%!ѐ=oth^}@=FF6pc PHi<6lSi>C5xT~AED rq(&x]*d<<Q`wxU 0鱟7s_\?Txg],5%C GMNnx{)J0o!]fr=~UޜS_D5&\}c;.{ěLﱸ1 ! D"o$)DC*OgQR@/8y3_>7zRQ;wW)l32襃Qe7xZMCM#*L8s{ < MQ,R!5o*As.5КėRFD*6aT :ޕ Ywae{kB䲇$gv6Z!LTm?/-)~רrV E34K0fƏ^ٝezkx6'BY%gYdhEW+YWx;?+)*S,8N`grK`onou`_Ffh^)UyUqKߺ7Z*B27i#)C:&ʥ}2é{Z!D49 d*ff*L5f)٪L=ō'M Ͽ֒6 x%\&-ݧ\-j[\l@Jg1-ߎD] oRLNv 1%zZR:w1E+| &?k#E2>Y G75svv'k. 73N(p9ۙ99di [(K5:$^ 0ݽ +VN sؘ;С5@qt#kv$[cm[1 U{2)֞T TJ(p+k_ yWգ|RukѫʂM-˽O^QܯWjWPv$5yÃ7aip r*BPR2.- Nڸ(үs{|y&fkWk]8M =ŏY|mAkR"wB㉨aȞRc)e@J(Bf$~Й^_[iFKgˇޒaN?OɭQzz K!!VGONT wQĖx} _ vglnH7&OSe5g/B-ͻlc9_HnXUF}],z=D?_u^!ZL{kAKAh?pRHRIEj5fUۡN#cw²֧&,zw>7Y&%[`0Hέ摄`;닜gx@1&-3QV^zz toKQK6!>bsC1\Qn!~ "uzHGka Z͍5UQv3|{R~ "]~aOK6 #i2a D`V.6/p^[,_lzZm^\!Sr tQ0tf ̔qm;zvgI3i5eНO5){mYB`4' }=C[de Wc<"3M-:y=$鍉,}]:~'ࣷIR_=бˡ*)^bI#w.◲vm|Um{D\߬P\?<漝TcډTeEo> D"=SURO*}h}&*wLgؾQNyFQJ=.} (Ny%o"ÑL!]u c bxCO7A7=Z\OP WD~{iv4Kozkh@p\ >ˣv;,ű/:Y察nVYyʵؽz˯"X&(/삒vtd&Q}ǿD JjG"eI;G/Ig+YOf{n/l=ד Uс+_)5t䔹Pއu7$x7sx'I)wdQ>] _ לf͏,SNo?;0` k#spRpFhÃ/ʱph)VkF% rTr`WͯRN8PSFp5pg˥Б#M5SdG(\~g]nݸu ڨo(&kRIzof=ɐI b>j}ꚌHʜ(m;ԋw*4\ULe̽ v}tDVIYyCR _m<(aľ-Cu*Sn>^||]q߯:kʙT ;\beKih˼>wt*|P\yvK-!^Iͳ1ؾrqjM$z{Y,{*ۑ/{?GޥYlzĠq!mVW-JZGl3 Nfs!@%#UQap> DB)or0pSǿ0}&[W_rGɳ9U=D s ME٫A yцn:1ꆍuUt÷T#wujs:Z7"&pw* ce'ʊ+n\x 1D-F*nW B&:ٓ )* dtvxM U;|*3 1>Y1_ﳧ_xh>'W͢-Y_S# T&^S:hKrD 6+ᛗxx(&7y|n1nwI>3?O=.yw(wZHnP^$R3w)J/^ {1(cp| p?3IV1tpAгqγCiqVY)Wgvd S60ќ8:'j1^6S؞v.=s>jXܳRH2IdooK7 A>s52g}cBs⮶Oc.P?Sy00OZDs3!1ٙ}FPTdNy5̈;%_t&وŰl{M0rŷ#=2!*yv}q{17B]S粔z*nxۯ,Mp„jiNu]M+wn먖}Yhea]{^%"ud ^E)+7'lXjaYus~?y7KqVzsЪܨ@ \bv.1 }^=ۮ6 \|\_JpRk!ֽVR'aꇓƜgiEbx<ۨ-L Q'jhx Vw0!bߢzϻE \h*XfFZʢu'T`MB7OI0c4xHsSJK3 5iTI{c~24C}ց&S9"K8*Ջ{M~tHX&ݜ֢Ԧ]aM9yCDḎ:v6SDH,EXl/_گE]:i~K|da,qI?Mb-dHTx$Ey*\Aq9- ehpG,DUkLh:r\xhzxI|eVQz4C*o ZVtԡIsFl4I k91[PV5?\˷JnʗS( ;ŷ7Or܈Nu:s*Z[,ϵ0+±MYŔZUBf.&'|mD֫h|Yi8"Crҹ4Ueʨ&>lH0][ςUۆHغ>`N/2ͮaޱ,UUuKGckyv2HM/q~2G҄ưW)|T:qKMr]}0/gGJŹyNÞ"V-!.V|3pO  p lU=*R`"3ݱyS>Z\õƟ' _nq<ڳ>Z$8'Xy9<{"7ugAnb4-v7U\:.p8+o0o.Sσa@duA700 lTU~I%2ංaֶT2 Pr[bޅM й2*\mTE\gzǨB@ |j]_[]eԴof X{eY1V3|^CLfq4ě' K,@Ƹğ+O9VD6CM d3ֺW'Z 3 *$dAgϢ~ԹTёԠhÇJգlbHz,4Qwj1Egm7#uRCK,U2Jj*$C5q@"ip!}uSmtv73@I w| Uv辘Fnk]~rVt$ȈqT3"7ڢV=*:ni $XA$$!=ݟv|l\ϗ(.Mc1Smt=]P,!=ax'a*Ɋ[YmǗ]֎]}nW=m|0YWROSMkԴDSQ ]%Ve7#)Xd*gڵꆊr?OkߚUnVaaU5dz{{t z߃܃Q7&ߍbT c Ь/茑ǂVO*D)M:- yCʅ8[NXPLfG$UoRNSf$-_sf}/T$v˥خw&9֬kmSq>KGdNQg:ܩߤvw6߰A~o/Fh$7.NqzB k:Ok,n3M_n!G:! +ߏ`iW8' Y܅)eAHbctR'Ֆm'3ymx,/s&Z 1 HBxŢĘ!B6Ju MaܟNs[TZz(}<1S#u}i߀)Zp. "//б3Xt!Ҩ}0g E'YNQ"V:wR7A[I¶9do>l>TxXRPf[&f2O{KKiYfO϶'}A>r*Qw-t|_+Wr msQR*/}j.Y{cG2 L6[-m\{jg kȱwvRO:٫(Z]nP,k<0O'tF1['/ˎZb w{o邏3;kV}|Wj[a=aq9al6UfyR 6+HvG}2/ nt{=B67\-j_'*Ŕ\{4.Q $XĚ a#6l}yU۳7wwdBijrеm/}/sr>c8܇R|*rv1~M&|,iӱp&6;L ;snT>usz-/RC'ڵ܉?knl.>>2ߧOvvR[yZHnڈj|ŅbřZT؂=ysh׵Yu΄pbTx;=xP‹Zl||ת {jA`goz6MHc)GBT<>^E7xxQ(D)Bz#OGK)(n[?"`tZ4s84rifS{(e `}%ogh݃n5KpYݗeB^<`2< 3UymRE:M9lаb\w{=5غAMڇ׬eѹ(+I:^.T5qtx7җ78ΡsOqZuT?ysm+wi,n)])&S_1 "S)t.,Of? D+ѮuӫЎ⪽^At4|)oe[sю"@!lBM穣`,ω;Y/śo t 6Ê8cyt472ִ|""v1\ҘaR?עkNٟN~ͼI vV~5B]kLpDVYnvsq"X]1cVRE$"*:0tT(➴8:Z2s)StG"Bΐ7MaI0=(7Mv|Ck/X!n?)֗_8#LN' gS-⥯ir~5nM.Dݻ9j7xEa*̷gBf2Wu#r*Qd-뫤gul}%xgւAKVs&w4ևzWj)OTFc|0o@v8Uzg$iQFȱʷ:o D0E`齿bE?EAɣ~*|c~كh2Pb3#ٛ[΀B@+ 6/FZ34 Gn|cھ" A.Ų̇0:ũ?kJeQغl c)1*]pmQ(@U-ib״Ӯ"U,l%xDZf2`XEFh4-5'8_UH\U\f3yS2.tlf3oww>愀]rg_՘Fj+?~Pװʒ:wh j2.AKBKJ!I7B-G(Ps=Y)vz͹l.dw.2OZRG ,c%nr:8HݠĮ";[7J;qurY9̡"Ytl{ 4w.yU^3cgL R7ˆG=6 ŏzl-_ eTөP_յOOkj=nS\ Teյ3q9ѿPv.R"CD qquW;%9=(.?-*64%^*o<9N):7A1FjMqAog -0S  UP4 ~gI)-HSح6*pմP6FwI>i~H%)^BUN8߷q/s`d]Qh N2ɐ$*'7 1:6\]7Wsk1 D%:Ctat7I Tn_ Ai$PF ճ`yox2<~-ppBa_cwgc:8@|YҏeBGH$jYc*:}Պ+ CHy(e.ڴ{gD;y!pClEy"ߏqqjV{z]eA1WgF%ҝLpYF*yjqm1+M0k_e!.Fٽ dGt|8oaC~9Ϥ_sLJ] Ziy Rr6Gԝ…0Hm 2rh,$ j2kR~^muO.`!; P~R\Fԧ-l5ZYDžӈ5)/W<aM?SӂA>+9$46nI6=1CR/%rJ/Z0r`tVk Zg iqRZq1Ę :jvFU+Csq~-ת7wxe@/VÔ5B]K? a(TfdmmHm@*AB4@#Pd칇Zz?)۔uL bG@)CcЗ\ *'r3oa4(/U{ 7^ ֈR2b c_SpЗG+Jx߾5|/T|+"- #ڒVN[@}N{Ygv0Ғu*;-0 aH+^%Ml9/  VxZν5a4!XaD@U M[G(X8(d$Vs) –6<7Yxk-EJRQzU=l; Jj<{Wk+ SXv_jS>fӠ~I/!9[HςcV\ VPͲ6xټ3X2*7a@ +jlUBw4 ;;%Or#ۍS2nkt.ӔC?OeŚB@,y?m"xNO%gṜ'"cPNŒmcxDD eJѫ}Yi޾ޡlRutƷbGxJXc rzwa=C e\W?8P;oyUis -ҰN^?,cI%h5~o:g#ˢFGNƒH]G#Z `*p ᪔ROzҐA+E"aRp^&Ԟr "17B=ͦ&6HeE#Յŏ7VTv1V"d10Ws!FX]aˡ 5JOZ9t!oz4lT#Lwp]ibj@|IYUwւfà_6Ԣ˹$S,xſk@&%A+ξ2C ٺLX7,ܺfҰEuD2X {|A#y`^%g 9ƌȷA`cM8#DJOVπRk|*6 ;+WIeSȠZ}ؐ@%P3dأHpdR}/%>iN@!vh\cil\[U{!`hx톘܏Rwga ΄{ %|$ʇ |2PLP a0:ɔtx^ Tdb^ޢ?!O@Wָu qt&c&ո7oZTi[RX"ŬSqq&vWw '}AM; j QV[!'id_JL1'LSJkѷF@budwcn5ӨxC#!Ԃ\O1Nǯ<7ăA%N`M#3,F-Gu2y?mأ"k#1WPij`壬pjx?Qjv>%&eg>ƥV*LEYՋ=VSUy~]"l86I_ ׄ`d 8"]mU Nt!Ni,^M! V7$u:m c;)UFnsMP `RemQMԳ3`Ay$XOe6#EYerRv{%$R'U|[F`lYD~;lہFXw2 [fO|}kYe#v}~Nc!VP/TzU_'z.bh}v8f|C' +EpNm0PPW 3w<]yJRn36y].+(Xu9bl##t.B?7 0JXb>dW) p%(N-D &54UKxt*+~0'Rlg#y1`X҉u9k##GS'4iES򏦆{A`E|Uً #C8rerʣϒw}KH@A)V44iR=D Ŏv%GW1sfJA?yK 6 GPg oS'#Oi_B yV` PVK%\=٣@LYj:HzxY=FkT!}%%G].uZ3+N+擘)\nRXbQGp:%j8% sWm y /fV^|{=~!v> ^~UKestlvw5hC=@wE9TS']bk|ɝx%+;aNdqNd.Ԑ23Yd&.^d vBhw'fulm=D jQmFߘѾ6{/clʄQBh49$S0zigx+DqK"ϱۙ=|xgTR&'+8#u3u,k oMʗP,&[ֶ25 իiHREO8NGTFJX ;vڏ,^(] yO}{4?.JX-P?tՖ(S,/T:=czK+QgxO'&טtl&puuM.jiyٽ|DP^#X Ɵ{|FճUP>lEQTܖ6LPb.|ly`!{ ?.Hc9S#al ]R(4ah?\ 'C7v}1VI 2_4ٟ@+/WJc}Ee!y)Wׂ9MoP&z ({F4j]24DjqGd)5*3;^ҝu7 ?0ŇO1.1VmqO55s V)#VNw;}2,,C(vgܶAWUIW[%%~N`yNAn<`iIMf)YRى~EDt ƬVUQ='" t-AnK.̯GLeH '휝(%vZ MZ:QS:2v6 *Dϴ(}cG%dw*{X[*O-o"\_q.ZJ_6{N2PpX1f@ ij7^UST *x|"Oa*x4cCLF]Q]Vg?-f8WM|KcS]K?,r9;ӎFT\h|,/fa/M:w{v#+9>Fl'ArIJ3Ό=CDٝ2Nd_=qD -$T0NhHb;e3`pl;8Q!u3r|DjLPhF6b5| 3s='XeqeUj_ySkW%أ+OGɲ.Ay\>(KBTų*Έ Y_P3u{6W3&Snon0CN@B0`u<{OƙX"ՕCqsmc#5Vfv1x  oHN$ 3-1>GJ3CUUh0a ᔰ̰ZW%6Z9?ASPp^1֍ot \zUvk_ln W8cy9%JMBC}4Thρ/4m'bKpuv@4Wnk"z#ɾ&JًrL Us(#7 ʮTR φ"-yO. ~PU|(0ݑFmYĿ(~2@(r׶ l#Ot5(["faH4a&WdL}{<ܳ\qJ4Њ5c䫮Wt|Lċi0_+SC+Y,˸_A@~#'빖Gn/5wE$,S<~#SJ  ʔFԊg6?m~3I#\-s8 m5zլȪeo.%k6-UzmegڷB,ZkƈI{% 9%-NҴ(Ou?/P$|~䯯D:i>%*?ёN$b;u99/ǖq2'~vA?S^S56(+_@ 5ĝ-8,%)P.S훻m" [2<,^ChKѹ5s=B_ut% sP(U3 +k}$蕃uf?u"BH3tUlfv+pEF"oAɿ1WdGZ9a":k13K@&/C(- / ;Si+}xyu`|Z@ (b>jQt(~vi˯]uk:<6E֐  O:v-4i1+pr] j*ߛɭ֊;Rj7Kn)qX ȒJo+;E&}zA.<]1[ė/A[n WtSF[ dK\?]C[5,xs0-xha:v&(08h{2%C6@`]\MZy;$1*H5 @~Cf+ l*=jM0ttj^B9af:yl!yj9Ω PT#K79#n8ғY8ߪ֬jnwَ_73 ,K;V) ŌΟ?AAyXOĻ?rM|rD80[!(U8.x]̸QWa ŀ9u4+4Jjn->-6ybs?N,] {T9=`%t~Eo]s]7I'N&Mwj!wkͳĭ_~%uhP5Xin p:ݙ FK4+YjГR47z'n|#\ B4ܦ  v޼|ˤP͹IlbyѮ:z8kXj[Hꆽ}tiŸReOtfí"qx_|-ڌ`y[ |=v%(oC(fz~{VlY\}M4;~8r\`0ͫS;7U``9k\s M TsBpq3k`5*e'o!,YYf>ILLIjSBSn{gR&濽ф+m~tgr8.Uizw=}_iޑDŐР6y{$XZj&|iƽD[C*N.5t< 3(#O{Ԅ@pJϕşz]R@ F b#ϖ.;zw&Xespx +;G<J9v{֡hXK:#h?@/ɓ$7-8kp/iحfY1u \1g=tS2PY2Xrqquk$q'rjj8%+]up8BR%r76{䞖u(0 0صmQxȰߩcwQ[j4}G_ޱl(h_$OPC/dɤjƛ| p:ؑe(0+d:箿[@ ۃz]fxdKf{g!miAL{XO#EDn[WȻrKU(WxIj|Bң|R{.Y;gzZIMd!blI++<,"I ƾypyxެ}qb8e4o5inWVBe02_}7 blf>䄥$$Zy?O?dͿ0yj!*ؾRђlt }.'<ܞ턜Tu&DdĠ*!fx$[ʻ;cNɏҴ44FnyҴg뾫(a3 sfo-:í|]{d2yuX'qS8" Zâm{PXIߣ;.\I<֓L*$5?/pcL4E'֧ӯ??qu^smJP^E5A2ˑTwLЛzgws`,ɼ<] FSҜM;vp VU}ޮb5uUˆfzuQCTGWbD$&4D0v< VӮ9j0N:,5/F1,_fw e)|.ԫ*yܿ扄cxoP 5= F14-V0OwwƣJ'L[<oO-dXg+=uӝ9R@!_y~;Hv@~Xzvnᯔ>j*!@%=4m4~% H|uc#-m4Kˮ+@oFeBXNdkQIvlyL%ax}$ćNMOxvl{?]w(2/J=3bPJr6Q0w7b<{f@` ѳ'>DdC}ӯsoEZXWeF\VCgyavӓ3{.kGWE'>GuǪ'%mBؿ7VCl?Uy?m]>It#o( >FIp/B5wY_b8}g>{Z'=p5ΟhΟІBm-od뗾BK|íw֊=w9up SϢDOOC @p?JxΥ4`k=[3v,F-%&85uD&bT{LLS/n;iwI s4\$峠݅$MݐZH9~+*\G?UK46Je.^x~dC8\95W`B "蓑Y\ߢE?T}y0poL>C}?P,v,#y7e?9 GRևp!D؇s6O y d蕶+vcS0B2/!`O$6vazۖ L*VNҭL$fw5Lo :)ۣ݇{=,MC13IҹDhv[K'ԷfeXx\uA>XJ˖tN>&"J$Ƭal=i=kGʴP%jWD3If z dT2Jz)Lmp<Ȟ~'DfdR lP#Q!+S ()>Qa( ~IAs>ٯgO}Ο<ŀ\B5(1 -̽: ,W?/uϩ#(fZf^ UW/YԤ,s dL_'BC 80e`?Xz:5ɤ#Ť&|p}!Adc%C>.Cl3c[`jaєEʘq{:yAE}^Ra\5E⃒ħs7bׅ&D黽c31tdJ&FhaufU笭ݙ\/F,nU 圼 VsתkLbFhʩB *Z0IUUyog=몜hz(Zm:Dv9@&kBsA0L P |jӕq?Tg\ cq#6]t$oGt#:-;mM{Vj\Ƽz=JgR'noocNo(TQѱ3MS}p o 4tos<ޫ /WI,i~hp `Btw\C9RY/nQ]Jo _2^ri"I#4vgyN< u=ImF;zGw1N( rvx9T jpyg``1|\ ^2gs `  Bn VA=W/q}go (C`qV>"X,%R+|`6 );XY4II ODff< JW {}O)GZq+̓AswG<,5U?x)HE=eFΗ6Ohoʺo1Or ֿC|WN YnK #oF4΅0%Nyq fe.h&gq2'M k5CTgn&Z9X(uid+FߏWQҝ qŦtLP3ΛJW`@cT|+ēJj̣Fm2]EB#֝fi.!7_wBe]AoZѧ #m۱zOF=I9 3Z;םve0V 3Q1biO}qka?HT2vt?HO}G9XўlyKѾ?ř`gI ?9d[^D雚[R|E?cG}-QӷdsҚ]`vJ$Yq {wrCbYY _R=759<}ِQ@lv-C&߀F~3<,5u{U=]i}C<1k";gR >d 83ʫZ,Iѝ~QPm6N9 ̌QHI@GU6z4pE`T*E&JrfF4>M4K|a\29,,%f05>aVj߷ܳ*+8Y9?K4#mpuc%d Y/Ouغn6| lOl$^.HUF֋. dS]7wQ`J)U1}y(nwM}Σcx*9sX5MY*zSf$fF=z7vrg2,cʪFG͟L\-("iB(a55O\}I#Ir_Π:Ƚ)XteRSUoF1j \Ǝ^ EAv/N /w':@JH(`zj$ymk*!W9b]Si_DYݒ&6_ '_*%tf~`[vvD;8 X=tGM8=!fVp^kfۘUӂX3,k+JcamE6z\l5/$Uw[eկx-6d?7d:>F1y/Քz]?^F'I`6ЭU{a [[?w.P담) Mk4 Ȫ eMobOOW"6ufի\TOfp_/IkXl,ՔlK;Ħ@|0L+WSw3 meBJ#1>Ы}tMQ)ݸFi62 E' h=ꌻ꣗g__ ͦfŹ떥pNsI;5}ʒF.V)(pV1=z> ҭ镾x$W8AڬV&'eOIH$>,Vu@rcA$ 5PO o̵HV6Jؔ|U ORzFk5JD֘$|a'])L螑 cT'JXMJB‹S'IP84U׷5^\1K?,ًgO*tNȳ)'?Ƣ{Tu؝8#>tܥȇ*;=&w.Nf(-0!9iV'j`ƻ3U]G hR9~CoS0mCi O{-ħlMkqkT[5,vg^لjuR|$ky[2⎘\́oU@4jV> Iz9+LAIZD=c#a̬HҋQr!H$.3>10_(?EU [Q:(>̱cN$ֶ_AL׷49eM(|oo}Y-k  a:dV)cR/PSq$" «,p~n+TkCa0{rWXSf ?S1.^; ܫ[ @^N _ȃh6\-kq t&NG KoN݊b22k.eLj~IQs_O pST ,ZCN#/8&hvH 3Kuc<{)+@k̏߶Lŏ.h7ɨx $r7 G1*=oZ%sL !$ U&|Ds/|T RPJ\zFB~0`~h@}dLA0t:6ݡ9Z.LDuZzC攟N]M[$i6 iwJ_h ĦN}^ O(Kә5Miс@Q_M4霛@ 0.N%mu ,Y)us V ;r b ʘ4vV~Z> ޒW1W0;:gO ;pzb;S>xNC:F]0Zi_Xlm. U* C#gӺX/S- Q=IPLɸBS^bt0|jF%ylѰu酦2n9$cũ-K݉H`!Dtr$ cHD sMbgI2 UAtŒy..e#"r':@I"qǢ cOB2U23bq4$%x0^ |b9r Ntj8]0 <l".ra.(n'TP,(euBo ƥ$M^2B+S`m&lc:G0I[_>=v} oы˧Kg^[A"Zύ4r #2,Z컸ZYe^,G]o5yoLK4_vOBcQ˂Ƕyq Yz&Kg\/"ӧ.hċTha4As xz)3/P!'A$ t*NqUeE$` ia "Z;`-;C6 7;vYo%n穃r϶uFArh%wL 9&|!mЀVϩC, ޤpF,&cRH- 4M| *Ugv7!m.s9мMDcPzL?PTt4Zlf,oDĎ{xcvT A; CMOd. cXv0'Y_jj~Mfld/K x늈Z$)ƹKe;2@*t9V=FÄ8Zhb`wnO4DNYo"V`sc*iO9>eĘA /yL|4/8\N2ˆ<"cd [F=_T2qPɱbєNwS# J|ƀ?eզfB0kaP(k$lj<^]n{$w%~Wbj.ni7gNN)+t6kcӼ(<B/#e%i:G;uv 4ߧ!QzS.|ܠnF^pB1Wo5Y- X{9O@I\x>+}vU!A0-\6=.rՄUOUF`&)M'3 ZcFœAڤY-_MHy!.i-؇F WZMe`.9AT(TWǬC 1IfL#e [ VD έ!D>(9'\n&a~ة?l{@KI P'ٙzC04kb=dXrGJ3F 6 aS(}exDg"ڗHKm{jz!^F[ U QD W cE"]:~p Nsk)K!$ al!j Fjoo'~UV =M_x n0RF֒ӊ "!0GoϪ9t.;GJ.}Zm}K8_P jy撱(_qmy:KNe- zZdal|8n \5=л8 0,p^)*5s1\y:Q1o9 ' 05}h;ԗO#DIwf i{㸂iޚZīRέLy_pVEcfhK[^ |/OINT??!#2 %rzuݟRqMĆ`1Y?J[*Tp?x y1@N)eayW< {X'zST`h!xNLw?Hj# c\ψA(:\_fæ)&z7q̀嫘D(XXP5-Kk9^eq?턲Dsn _oʿ }k =j-8xW0aiQ.N>,;Qд2+ݹ )Cp_$>vk1EWEi5/v@7F2ZyIq{|9Ӄz3%UvqhYӪsOAI8'T]ْ"ܶ>bv{!.1&L,͂5lHݔg)!cԝO:>$sD'NdEs4jTK@K3>,iћ8Y,.dg=;'l?_GA %֖NMmQ;8VN n~%ӛmOgB_cuL ?\AThtf*8%w>Z3븝Xω[$wE9Q5Ǒɉeotd/aHb b L(̧ՙN`,">o7 \9yFk@MѦ8uA%ib=bЪj(N!Ǫ8PS !ŗ,/B;䨛SgĮE $ c3EVrli4kIZJj}Mc6"* ràlJ*'tUzeuBEq4Diz6G!K Oc%}@xgUOв-i 9Sz|XEu PX㳩}9Z@ ˋ1i)}fx7-,hU꫉u8_` w/fI ʡ^(qA Z~Mp*U?mwͅ?۩hy`344L:#]m\tz7no^4f(GC\XQplVl3\kuC\IJ dF,GCK4qHǾ}}pV, /v9q|fs] Z ku!½i] 4`svE Yl87Y6ELQb1Ba 0憏{a[6 ݷOqds,-PWt[hBʷ-3M'<0ub;Gp[ocmv|Ыxu% Qݗ0]h1XcoBp` bvٱ%B(МQQoOQѶʬ7A Z|gDY!զjJAbGމN$F2}\xJNQ JHޠ4DJ'lm_P*b *,NucY6Xٵdm)`;+|+b( :io -iU*xc]^oH`@ne-H 2BSc* -ڷ}ͪz)l"l@#`As$IU3=dhAbQ] :pb(|Փcoc$ li< ad ?kQts]$^㔾MW>ڕ>?ki֝"i~s0l؍%WtE&3Di V- B>ݣgQ~#Tbk(f[eԈy%5n>wMp?6׶F#ձt!S? .F#|45we-.o/dۈ? ?UWhԞ2 jyȇ&J)bjCp>(S53kED!÷~NۀÜYn4BXd[D?'Z>es̮᷼@Te9G})h v18Oơ&MP{9x~#dɠ2~UW_~1#)G`uE2`Ԕ]ҕy,5ʘ7oe̓$BoGs{u)oJlHL"4v )ʞ H"mc0 [0ߊY8HIb]of>?FFW꠾v_HB5ÌhGԎT%!b`mӴR`6& vu[ʜKwT@tf6Dx巔r$< s7@0788ՑHua'o ծ DӐ ~ szlߨK!ԽA˿.&*#{qYU3NhAIyJ_1 dK]Ffr1%\+ (Beuj;RBpzpʬw~SP҄e <~x(D%0 )mA |;ɇ^璔 LGZsEҨC hfAs`xf*MlVMlRdjEc@nD~;R" {k:IlJ@)bY9SY taOI xisN$杳=+VX\*MLOߞe\9J ,STH#=~`uʝlSWܼ[eYWJDuS@8)+RVǡ<W B_ TTvQq*36,B y1bǮ kԑc LJV*&xp чȋ_XA"APķ8tӹ biV陉%t&0k-h_Vո0jk9%j /O’V;¬GϲPr'#J,Q@1&+;$_S5wH6w F 82*،ɰ~:/,F-^@3$Oċv aN ʨ: kwHgofG!RFT]ik\][q`mI[-Xk(ttG' V>4z1ؑ #>^c]a*A\tZq6'JO62?ꓡbdy)o4S-L'kI QTϬ:@O_DUEc2ͭLZ)hsq&YZa\ ]:8 XG0)֓4<z>{VD0>_ι?̩NZNhTmFb5&hj(8:yRʬ ^s^ CT3+z{P? 1+ڵH/ H \Pyd \ecԾ*h& ّ_^I Kkr흷SWi"CŪ(poT(J ^Å]r,W:)_DU:ՠ&6)8^5O4\"&/,Hq"yJ@LA#!)AZᗔYSjD8(& Rc!#tP[NVF} QRj~Ӛlk" "> ]-C}Mt/3X"x+iW&wLjcW7#2aQ O>JuQ;]7YI@rIZ<~ AubTMnp6DU,iO>bz~,-?HRBqLe2uLIj<YBxIɋL/:ĞEWk$~k芠 ܢ&yk;X[b18%zk)JphUC~< hĉ2ALkp_:ۀ)(RݰA whH]gUeIMc zd!{xK$<}X g\`0)P/M=搤i1:sM'Eykcۖ;t%.wgIyQİ;|+4Y(W| |.`,XS Ky{0JT$ci"9)5XfUcz|?Xg 8$'e>-uEZ20x  iՇkx>j4nqOfnFF4<)'I$u.Mrߜ"`JiX_|FL!]x:SI-r,n.Sm0<+%Sڋwtrpa0pˇp/'G`=Ï0^%3L1fI0+{`g]l^* &KODf''ۤ^A;^ 0zag0eW䁴ucb&~An[S!W4(0r) O hy֤"M1븬2H Hf.5:0 BD_B&j #,-BF+#XyZ.ivu Ƥkt>x7*NIzwⶻI:fT£&QF7ɑ+%Xx2fzkͶXrJX}./ trQ& (ըʹB& d6ͱjFIZ`56v0?R^'fo[ʻݪ7}Ĩ#UG78 Z)MɻKVO9 TOj{N4>+3 %I`*9PæH ۦAq `C7.rv~59 hF~ڮϤtGϒJ-rZ7Q8ST'k%BE4ЧSD= JHmsFP9y']3Wݻͩay]eɳhBM,˲%|12.IǼ׃d<2=9o t_YZfS<}g-TX߅zx?{"q[LlGz:6p?*B78#`XSryr|guh1x͹;fqR>Z8eUF2lxN#z'Orh';gy6n[\ܯ>\a`7ϰuaPKSmEIOCL[CW= qO HoHԯpw.zA7~avQqvfƆ<|KE򾻡>M|z}}}޷{xٯ}/{|5@`ztUSuK"ޗO)vЄ}tmqsmճgKAI?iŒV=dϕٹMs:2N4;IR%oBDWg/|p:EuEz}iw( & /?8FS6 1Qğh9g\EM^]s>ϫEc2)-5UU#mVloSLA$qxq17þ;o xHWvp?`475NΠFwml|. 5EyueJ4CZ;!|5CFkH3ol&, ϝ) Ql|+bnޏgwj|`|Te|j} ЙPx|zY7ֵ6JH1=~VD}Jou*"#{2kik&bHGԲSve~σQ}Tj腞C^yZ[MjnE!_;k-)N'z\h_q)xmN1vuvLe* Mh(Og~K tc?Qʄz?_Ԫ_fyl\tHh;9R:pH:R8I߹ܟ;yҐIbhId*i1 ;W(?1=dF:PJWI1ݡ33yy>F^K ;5'~[N|0w~6itwUU{wi\Ux^Wv=v)gkr5au{A@zK9Мt54FldxW!*b7FCQEL/y+}z@/pүdZHM~ѯdݨ'׹a o`D-[ =+|i[:5]%h ouZj']%eYI^/\hYoІ4]OFu>:hk~~^<$@@?lxhAU.zӝ'9XwSigy:˛&/NEaKQ_Ra!L]6p$l܃FifsOhL(b&qtbXtkdGg}N#|o$LW0,'"e>6,2uh\yC=姸[]_=^=hJa7{[Dv1%jYhJ LB &7QfN-45vrv41?ƾ)<&:mĶLl۶93mOm{'`||f$ʌVf$Ffbf&fpӯg>'҃gC n+ofx6KL=%ܳ>^ox*4EQ~B`xZQ.PMoU>Kw.}UcEƢ+JM uwG$F_V?wbשּׁG=!?RZnc"Pj=]zQzV($4b #r-es^N$܏*qLK5zlnF ^nczBIo'1[?}N.UbO֪YBDe!$lzz{>zc}"alX3+͝tFlM\9"NQvHLOP4Ж2wTJIp:3xLP^zhTʪXU/Rf 9zZXw(t"IKd3DK|uk^rw?Mb!Y"E3T> b3c b#x@|~9xMv|:-ERLbك4 2U#fE;{iX!9<&s'^Hڏ5Jp }$|$O$2A}-F6(r.Gqn|Ra(BC4wcReyNX0Enjq7|~5O&+_I$h3[6'nwht|[=T l!lA/.F L*nxz'ƥDOd4[Bw󰕚n;H1 K;l[1Vm6|.`;|d ZB3Yg+-͞8_6Ĩmkב,VveHV4-Kթ^ͰE;K;A֜]^f?qfAInв 92I"c͋e 3[](ߌf7Ne3+wX)g8ܯ r_#x,\ًG2y Dlb(,` y 'qB9#B]v墿Mre?TeN(sx%YpMmMhpKWqw]8o$_%潞xdӭIkm2Է ;rNE#lgxgkbOg#FiPHfl_oH/`Enh[iaggZZFe-Ҽa1x=; ysUm tqnUZȮp:bD㍲e'voX|@%? ATW͑gz/V|owvTnaK7CiیKݞT]+7G6Ji OƊGCpJo,/gt5}|O/v Z*|GBvOq%HU^D}>a SU=/4E-ݏi &4,͢;[5(%`j=edy]p:Ȼ)f{ੑfJ<]4xK}+)K;Ak g't߳{T[xL|*E .읔[v^j(/|2ԐF7ie+4H%&ǘO.sWLFA X nt?:A"'%W/Hϙ NR9l^AựhwXdTui}sD J$EenDj@_k(qflVO$D&~LR{ri><8|}|z>ޏ_*OPG?^[!+(5Xd{k{児=}XdɁA;D>1X]o{>&!E@!/Dؗ qH?% $kcviuZiq1C%:huޮu(vt{!KiJCP(P:$,/s w\|jTB}F΍,CRKרфOk&!_Q.s8|R| p \jnoqߊ{m>~O51MUs?&1noſOףX^-`Zk6ư8ҹhi\rEd V*D,p7TfJfVwT6YU}24ё*D cOw^GuXÂz:Lrz[<@x/c%u=a0 Fp>)rRQO#LV#?\{mRğ:Pӿas3|r`>w7Vܱwr[ .l.Fb]$h:!䓺4RY'܆%_.obSlD5V ۪)4-HoodײW0 AiHq4efe ϕFJO"UM" C 4sN sի5~j@˩fhnk/uU>%S%³2g<w" TQf [&t9*a-CJ:).KE%(-JՕPX;C7T#S[wp7퐻/N7-ZecD󽹅kegr |2l|gy$_ǔpȶ@V48HAbshʘcD3Mӡ-2dDl46 ))Yƥ6heO&Ge7A(i?dNmdI|ʐ3UshT̋Bdu| s" y9*>a'.!7@U`j-'jViVJu"?O/Rs1 uuD-9DPz6>kV6KOeo}j؍mw\y+p,Ʀzܶ5>}^_z>: >^.>_ >x>>-  n?>7;t>7k |n^8|~DWMt۹101q񽅰$52_a!L: eöZ'}|jۻuY]狊b@P٪ GF{^Dq|j{VإU^hŠn鳏8[ʥs3o=KB@˴`Oqo~M۷"Q7e.-N#3Ko/G?ޖVS;?Y$S ݪnyN{^:k#&y:[+'=~Ğ+l4=.(hp9+k0/x[ m(Jqi-]Z2hm0!\ʫ\J@j4^Cܢ@`~I|?=~k6q9-ޒhHZw\AY;C7j;d2e;'\S<檢󒺊:yg[ &KyW>'Utg9uz&Vx8>]:T Hn|3]_13C3@JzpUf2vÙXU᠊ef'̮Yqi@G[VU/pFz<8mY*tWe/uykpPfx5>֋6]X<؃R8-E]f_cӾi^W#jXRZeX~By\}59,* >k$m0ZnhZg~MSW$w-\T 1!y3bpQ3a\<>A (n+ML_ƈXϬ֎ߑmu )}%f,b@,Vi ܟpdᇴ` 㣨~U1`0ۼB$Rj`"4Jz D TCJW!َE ./v]>#}LVbQ> YKja81xN*vdž?7tu.?3>Q7FRv5m1S:?_{8e/̝6QU܏|ɗ8[^0"-FXI4g)“]M' "CzsWw *LPC}(/ T{VōIZ?^|%yAESc_CGP^gޓ8 Xм+B$ \6E+n>Z%}4v/\F|agޑ $(9*>5%5fQ&rya#sW'^٥^h}e!'9ZSV U7EnwTPZ }hE"t]dq#86v#Ph稈 dit&UyY%^X:;= />̗xlwb1:"_I`Yv0¿SgSe7\ވ#Հ'i_θUnT,ky$iLy&j2-/+1WSiwԿY6>,H a.1sj(|4suZz+ȵrp&߷;Q"kL4V)k5DP>P|qDg\gR>OEc^*-a&,uQ** [f%Sk nM8'xZPZ3C䞇'*JB\g= 

(_a} +^.ߖ<'ms;e=\CqDJof~K' c XR}㓫ʖK3*Y\tmt8C>V{TӾj[|TX^{}H]U ѫAREcd X MUR&&ryfy>qޑw7m/uE @4+@r㴴 O WgYBPwj{wT|Go]JvGiKxwgw"ם"Zѥ5ο(ɤV;x=.f3r1ַ~ kFin~WS0;$cOA%O;RY 9D4_ZTj.k\1K2@ƙn?k\>mM?s ː>Gs㣿EWu:Ծ$DzDpU2UEį\dv{:Q߫zL|F#Rrbap5ӃЯd}(NH3~eXAr1 &5ȦKD4T˭]e"8gG_̂c܅pCgWג=|P[H,evTbt1Ir?ʵxs3#t9i}eHV^3ŤU6*a5e9Ԑ3Yj74@EF)4{ԈZs :O s%c2i\JKXF֙۰ѮmGcf$/~"gY"B|ݭNƵ.HsG~AG6B3,ᱡYQALlNZ@ok @eKbmE*v&ENURsZHh; kí85duᏡ>gt\bj4i]vy~2'82+eDG~T=̲΍d_8`Q,1nCN݋ShJ ̎+`;ʕaZDtƚK3[.߲/aDM̭?6t\"d`.wRPKV5W'uvB3Qz{ ]lA ?"B"x\^lzs]RpNw͆~+[E+ bq?& sH>ܻN8\ͺvF(ǧxج[x-,0R$G'")Sv戈s.Fc-㬄"y"sUyZM /9;(J`?˓V_<;bcp>'wpTxS.%91 6X >Q3RBDh3e]m~Ӻ ~ӽ/|f`S 1Mr3=1>њ?7| ݵN֧+^_Lj^q#kh{V2 .LSɜS3񛮻"S ޔȜkAܒa12M" K$2 vܡYxN׵%7]\B(K;QhbV88U)رRؑ/*B;c([S H@0ڂ/T8,>/ny۔yU^vLw6#.u* +-5/Qs2а^FEݝ ',*ǣJzX8% 2&hh]>8/l^:wy6!Hkŋ׀$nCX^$Aqן#BՎc'w,O&5Vɍl +>s9a34Ʉ9v*{PתIƎs=؈MHH%aiB5"6 U;8tsɳ˧"JdzêZWK1_e}Ps uG+τ6L+:T- !&=Z=ҺtOi}1xn /z`{QAPt?i-96̒0}޸+loJ`^M':kIm|wHڗZӋV%6a3u%ldɶLόnfIZuD^pݓe ˉ-s)kEF|-H"*ם;cVغTY!^$k!$ٓk1Emhpn/AE!L?0Ōjjv(wΣ^Bۇߢvt"2VC? )aعLnK6 ! UXa^>@[qc˛ =\LCo3/î&o~i Ł@Ism ]N:FX\&fd3ɢ*&[2QZN݁%^_mÑmԜ:û9xI$V;)?t\ܵ*ri?LP"L~FgTVWz%(;n]:WH'-&\0=˲d6\u}m't.xq?x6鷣'U/(+ЋW= `BPT񑥴Ƅޱ\le]FQ#CSWW{V`/@6Rl5qxw8ORXK7jA wjrM≿>1& ;VSZq?eWS`lgZ-=puԥyĢoPEcn<}h¾ζ`i GLț$VaɭyϹ>g-*߹>>ڞP"﻽^˿G;+i $MB"55q@:L ׈o쮴Ӊ U]zSuJGC9ba! PGz@b*SXGiه4j|Kb ⠿yQ#ܷe[}s=]vBϮµrj+ߋeyW+&uqS|Kį%@rPs.`<ҧRp+z_)~*a?{K4?0b`~a?:h=Spv^2O:o&#Qrv.>| X۶$]\/iuR2v3 ~k2p8-Z0y gGI9ɻ }Uj ,%/>=ɚyX,c+Y3͇La4úI2ӯ5̮rY87C`VpN Qgyٹ.A+`Η(F>sսyxN 8j˫ E̊"b&BGyI}!r5́E] ".5&`@ժꐲ <\ nJsa\8>XܫI陶ua ~hVMD6Qru` I8ړIڹNy6RF-'Z('1h<Tx;zjL:s]jgE8I' /4J.TcuL}{q3xN,̗C*k?ZV.urC]\ԮyR]Su8 ѭ%xSLYt { n%=w·a,.AЏ=νmsONDi+ӕy ñHD8?#twzp}.qgXx_J(|d`^*Oi8FԕpބËfiP|GD|Poc@>MKڅC{)Ar{(B}JoӒ㪣c㩲T/N߇AwgGb*-GuM{SX}ñ*A+e(22MMnvN\ ߽P ZKN9䜏ѳ~M{d&յ"Ef˱P`%.YrUF t%#Q}H{*_19(]yg c&LKp/!E7lYO>؉j~4Ep&W!A.B> . T(#6+߄JC!>,^LSIv^re0QcZ*T֎"_9gy3KtDv/L%ku{`,&;+|^= řlYw:pv ^J#܎c7 C)'&;ǤQ~FI컸e^n]cOsWiաE+Msx9,Pp@rkQ{ޙ8=*4Wc}t*!0%n"N5̋eav[ \37?gM(o'oi4&=Y ȏ3]jޟUabPHΘ:.ދ"^3KgNhՔp'P}9Fy'Ʋ#:y-b1@]Ub H\q(j){gqT|܊9gY_< o] YZKʠ&Nμ,#9O-(?U< ѓ3vgs՗i@nDg7sJwZ_Gf ?3ф-ة] qKM܅_m^ZQ#6Us*o'fƄ &sd/vޫ(l^282)k7Kc;C`gq_MLu8Ґ(/q8PטQΟ$6wsoy}!|8yJ*on2)2q7a HMutVygqC\!΀a ;]5kiClHH pJH:V<cD iok#XD]]`hgYHl2-r^.֫u>V)RgG5H˃> āFjNʽfŕb߸; w/L9|nZ#ڟ`gv:/m>5dqe=q5&|1hľ:d;`l?wjmEϋl05xp.X-u4x1~-/xloޚ mG I-#B'%3}g\HY("h NM>RB?B<S\*6Aʃ8>?<z^̉0H1IbP`5H gb6-zբmd}O\W7&(_~N6Pˑ:#1׮shgE\F;1bY/}lqVgr5-IyLhN%Q9-PQ?*wz=4 Omn cڹ4A+yҪ/,\ CFjLf`S|©yɨԔtnT$h:_k>h6m(r ؤ;,=[p?2/n(?VaɬdtDV#unFmX=xb>ݽso=s#:i_gc )25tdcj[y*0$0rMr 㓫:G]Vb~Fg_r\N/;lH"5}ܳc\g:<8m/1mO-#jsڏxVvXhgq? b"Pz\x_+m!M[L_H' . a$;y#L:!%[%2rn kJ l>[nkg">rdǝ6]GmN,GUwޅؿmn?v6DiF"s-CQA3_ ^< ƙk٨18 ҏU KMߦ~ <,츰Bt K 4|+'#hF;9rtuI홇A@ek&7(sB-c2tH χE}2Cn)H^` ̭.9dPlǮ:<.hugO[&Ew'ρ($_~<=^?G |ڑnտkN5Ӄ[O;vx=i: ܝ @F̶Oc>/T+Gk%W|7lcm)[$݌K{uvh 8}f[j,K+gWh^i+;PCf&Pc ,%Ҝ5Q;QOExu;m5.45Hщ̯@BϿ:3ZG__c8К?{]zD!Œyq7gNn@"Z.b3#MSam TDfx""љ!hx Ḵl^-);SYLI<\@5YD\"#lWIe\vHƞ㯰ȳHhS,qPF ¼5 -=H< ݏ^x.{ܓўl_>H@R)ʬ8ﲀlJD(}25Ȭ>|a)JO k삻YR#9M7"Dra.\QDB6@;!ޣaT*2GZA\nW5.泬bB8yW47emOM5tmu:FhHWϣb`{;5p2+?w]j*pД8)HZP T̠"f7ʲk }j!#ESEH+Yf-3v3AZСgPa[E_2VYJ,A5zz""{w3pa{Y;/jӤaEKL n=f-׿-;ݢHCwX]I"zF\0d"DG4"ðc9U}x)zsjiU.X"] y^-K"ldabKnQbqJ4~<}93իkwm~:c1ȼ͉,]TIS,9d;9 ~7푌Rpau4* ˙F$=^Qmc{8ÓzZ cFKzʷg>~ux+s3d^,AȈy2Xw +?WOllO.Ry[#5+]+4]l _BӍfi/svq~ -6@m0}hȂSU:,K,}uoQkcrpý~HpBBExFFq]vnL !P7Ƭ =6,iT$}{T<+z,=<$0Oe~8w7?5"!,ܝG 4-,bx`0~mQ" ?U_ak6}0n3М /ב<`H{9g.yM)":|]|מbǃE\ b`0#n1U>hCJnbD6nDwC Dg'h@[ɧ"wE[x!`Xh{s0n4yNse}Ɂr'zo ٌ$!g w0Eɳ(A+Ks'U=悗^3hdeZ7>#c#sj;R9|rx!l$w'Ӫse{NRAG  (Y+;mG 奶!CXy9an{S!sKw="+@4^[Eju1u/r͸SǶO.w-Q?68?Уw>G39a[0p8KnLHhljxAM[Nu tԞH8:;I]lN>LdS?XUMe)WoǍ߳zVRiyr "gboL684=ZQB\=D.@ҁ T_`5U\-0$*KƏR[ U'݄}@9+R F$IBtSiQ {T{RG;F$_^=C ̨ˈPZ / ;9D,kTFpvs0msq?!7%=5Brzn#z*\c!8@#ףQşuW, zs&ĖPv̽>%WI#bݢb|$˦Y|-T5\ĦhEΚ˘) M^9bz_`YvZT? }nI/ R Ǯ=Nԟ0kb 1lI*8x򥠿{;ڝЬÖʋDccuI4P'K 9s`$8r(p|@XY ^#@4wD՜M'SrjJH/6FB}TfSެ]mZ t#fst *5 AHmhU2_Ҝ"IMaG?<#p:mtҀ.n`L;ñ\Tx&Imp15v[YЧcZer>9Vsnj;j%[wV\D;%6.(HyY}]SN0y;8{O;ZU K̆`"0bpN;NE-rwjlCdP#Mund*h3`U1QWnۚaD3dB&!J$Xbՠ#-As'Qܲم5(=-%)U)ƫa\*/cTyVkFغx䍱c8<`ڳQu,gvuΈ,YHOjfo XUwY!Id$);uH8{!x;`SN0ɓj*{DB9d |v_cu0C͂K 7_,A=b"8SX3c ۖu>EB9+PeΖM㽕yJi3y-ːO0~ 'b׶ѨW/|찆 {q&!nsdP;A篶pvDC;MpW45-Z[05ix b'(m&[lH?ݮI}W%ވ ;oUEg,^ 9&ZeK5C"(S lS~:>9*dDأQ 8-Vi0pצl/Fgx$w$bujVA-&U}ҝf:Zֳ46r_[?=@q5Z_p X.uѸ6$矀"):+8o~[f|̲x:'|?t7>v/4Go-Iĺ9U{S>;F-Dl/k౸ )x?<'{;$vnJ5t_@(ͣR?Z\7I]ts&EZ ^VevUr]+eI MD43]aal RB#خ5mwf.ezkH 1}-+#+yV/1T?I5WzEYAo㢐CwͶWj:<>n4H<7ga[Qbc~S00=#isekc__vA&A o]?Fz7^.䆑l-zV9YOP,QZVTָUܱA~Oeg":ʘ8TC6*8^5+Wmi=E%r^9gf5xE׳(gOa̳<5QʄN{fݿc:Vڤ|f{qA&\?ZJ{PxAO58A붍[L#͜0+␕R l5 rmzs jLHbö&^)j"4w`y]SDqz?ڶ'gn)F;뷪x}ȇ2cx櫲$( Fi}v/eϕV)AgGd~d݊ 6ݬTk`Ycc(;3-YV&ܾ'5&H*fx%!M͓BaDhC}z.a,hyժq-˫̗d>U"ވΩVŤې+N.wTNmEȱp:4pSԉ?sy \?z0h0GkSʓgȦnU\mt boA3h8X[fFqW ",%9L'׳\.b_΀h:'c0鰃|YeOx'9QD]7T!O;]AbRs,Z8 s 7gNfZyͰ0(#mvkulVEB'TvkK>Je~B"oVRsW 5{Bّ^NɌح)lQ̘~"v K?)`&2/w~Nx̉n)3TqcXjY<ݑi %N_9m|.{ T+$4JL A  f*CA[ݿZVgʌ:˂!O>,I <jþn>qo5 *{vma&?5+?5}=K O#7_2VHYCPxZpK,!xUsQ쪧m#`Z%{*:UrX  A;̜/N96[M8}Ob}m^Kc-|O պJϫüc)@.Ԛ)VS%wɠӵIOl?2Ȧf#1^pDˠsju a O9o>F QtOWR`솛mNEOX_fI(B[@Ju֍l'@+QT S*fct~0rJ@}e%H e?W[/gYIO)}cqƩ0ܣ-d@zj>9eݤ_!i?*\~ϩ +4EJ =BҠ=BT\?,a =kU}N)-܅Uѻ DCMC2F1TL/\ɳl)Չ-yRflOZ8N(LIA0(:ޞ[C~QW?źRF3$|ˑ%%$͸$j8ib⅌ϓ@򌳩Qm7QUyv$t K2T3r~A PjjP@|6k:sTqR`>I{eA cQLq=-I&zy)sn8fȕMP wf:ޱ.]hޙ2L *Dx<]d*4^Y|-J,D3K⇤5 J9閈=hFF%cQrT:`g#yqsgupF|h2qm.1\_eA\i{ToXj8 õq}־M}e{@k3KFBثh784bL%#]2v 5릺C<_;/&;D:?!aCsw+- MDg垦bݤ.<)v0:w0xhIfS׹ ^@:&6=~ů%-޴v  AqfO~\ڏI+}R V ݳΈd;`E/J5ߴw[yиoq*;9g6dZ!I*`KӺ+N؀^lMh'w@v*gsrF6s@\4q[9=ԕXC 8\\us~ \ua"yYM_C'r00v L_aPIE9ЁVfOSSM6za) tlɗ5쒥>a S.ziwVwE@*>]ESjsp?{=2mRM1=w'qOI b۶3{d:txBQ9na Vhd@e<Ro)yޓi/U=db!*3NRojiЙHԼSfrfTP<][83EAD7!f+W:PmǍNޕOU@& aǹIe~Ō,6^Yv< }N^\pbZ^.OW+G^fCځ?=j$tDO:]aL7R)*2dN]b^ҝDpOR{;z=nPk ,G8"blIz^<4lhd 2]/Z3'Aل&7;Xr3 t ~؉@glС$>4E'D)V4K8OH!Džz/y3ߞ*Xg|/[VFg`+0n:6d\Iӱ,ҟKLDr N [XP)lY# ֯|Rz+_3pRK`C.-1WHXnnt1 <  P9C*Zghx8xtѣI8¨r?uEei eeҭl% UW]a ܊b\q 0!/WU)Ǒ:X8w $a HĈ)c1$Pн̥.4_+:3G_|/!x1[BpVv>wAD0ryy0rK^N R ̚W-9SC;Y? ʑ8~ƈ@.0̳lLr6H _@P勔h ^gu&W'',=G}Z!+ı+ӪqIYM|@[uFQ.GBJ{D4`͟"noU6'(v?8M#j6tMr3wT+j|֑Wb½56H>VH>zk#UKJwأSɪ D T{L _kᚎ fX! UW0$<+錇z7#C@> ,2-S-la~+]ouP!qWmŢk,}0|U3fFX+uS|c6mIQ7jB'ȖȖ2nxOr+p@|;v{B8@㜿,aEoTx4% 0KּYTb $Z\F ,0kp b=TG%Z Q^,qոM+j  a-};d$E{G!Ct:=`b߸g §I̡ 9WDBD U~tĭE hc Ʌ Wb~M99]M䫣{gđ:H٭ 9L]"ϔ=Vi]K {x9:`Ox"^Pc)Pv~ǶjAIC]SՆ7" MR.QnG:y 7P +h׶YmlO%: s M[F~|*nJBr @f1A{}G&|@QGв{gm rJ8w~g>V#`3?s '#L?:Rl*+\W,n yJT=]D~<EZ˹#@V^ۯԺH Vy_=J#z9Y?4ͥqr{>kAyUخZNXs y8jkdyt\ےe!_(DC^G-!Y&Zsvy ʅd'dC.Ĺ1N!4MlI5r6붕aK -8?nU; k km2~@QFNTWm"lVtol|cP*߬8&G}:o¹=BԮIVc kg訷whFͦÚ6@G#ZwŏYDkˊ-`zB>P+R!r4Agw9u:2ۂĒhM,:ƬjwA$%׉kWM+@~nBO-yW<#7MVaܛL^k!Wa 1w1 l_*$5FB܍$QsX>ݷy̶McFyy#gդ6+O)y  xCV}F DZmЃf ΃,2 ;u7p&.ʚCW Y;u.+B<2 ҏ6#`l9#Å)D=#LUv`)~;ϱbB{tÿ&q36Lx{;fY܋p]0o'Tr#Dؚ{hƩGmRB ܮ$u֊biƺGDvB.,\ oæTv%B)4*h񭠀.zlrv%Ц5X >6|g޲i0LTb:n:Q"u簊dk^3x{}s K jMO8R9s}R:p=Wc1iy`jѯ ɩ[e8]o6Am1$`q`0k@{xa6SV+yh!I7~t 8caLp[S_<|<%8Ugn >ְ" ӴL%eB2SDEĖlUp+E="X>uN 5@ m)ԧ!nו(Id,Q Z1֋C<_0݃zq@e2Oh\7,"]#p/DPk,4wѣbt,PϽ(@Rpcu%z@cw}Iɏ{;/zҨZU2Q#)tAU$wnD~ȸ e1* )#4 7EYYE}G|BSH58=5ְܼ*th\yF6Di b57rhN.d G/,bϮ}aK"@'@(5]JGUEɕJ6O'oG0(٪Ab dRXo)l1lbv)?;ɺ IIB~Qe"M穉(nXOjarkm^.yd橁gLPT? W-HN3aw?1~ ];Au(Q&0{'dJP\Gvx`6Pfn48|f6!v{N%Qq-a t f*\F~wBK8bןK ƯwL-7eRlXs ¶Na-zhӶc %SPl7IyRw<b=@B"l&\(沷A]~,4hs[yd WW.WOߣEˡܥ>N_0eHߣ1c8`,I_} Xbi-nA.]:epDBr(*&&WID^-H}PE2ehM"'W߅B{ sKM3AXYS(xIKCvjb?Z \3 ylsR[ ʻS}ϳf!~#JNhV2>7w?KլVq|i0L̛AtQE[?f*bDLFɾbG`|7@Ñ?j6_=+utpe/v!yy!#) /e]XֹWsN;hu&N)O9hSmNуbŸ}?"\!!ecs\żm6y\7V_"a9e!}uMnu*8h/5ASGpe!0cQqIOsjn(YgNW,&k/ 7e0!];3Euu! |&^DvJon]wo2y+X>t9 =ִw&BvJ?G(sVFz ]ٲ":@ڄ~q'NS. 0 *F4yF,doR΃!13-^?E\+}۝F R=؄Mq\N;lG$ uE~HtR7iff8u,WyDZZ1˼q?_, N>l"Ptaxf n z% =ěYN҅сRDK]AϿuv>Eg-36z߄/n_xMuy uUc0;xPĬ={o?%U}NUx`:N`KXҲ w;DWgd,  U۩mFk̋.N~lgт^9Q@шJA6P)Z'_KYOÓ. e.SxrsrMj'D@/#Ч.4“ɍQuԋ|dGHuzʖP>5r{uxpSg.'"/, YX#p|*`aI j $i+ju hf?S ײ̉W!Ԗ&MG>bהQ\{UQmAjbӡ&_@x‰A.a*—Qdv%!PCinhAk:򢚁Ѯ%-*FKXR33ؒ(+Np:H $m1|Ϋѓ8xs_} '/Z ^i&XG5%7(GcჺOh֝tK{M,>HOىb:r݊FWbťՒr $ ТF1D383}8K% S5KJPl <q8V"-RS}%@5y쟽=@f[K&W3"Ea*mT n&AĶF :?#RK1H@ͩYr +J>FW 9UVrf؃t8NW+蠋drn@C-mULE&l3+ώ.R>b$ ZB7VYkdfIȹo_[~&nLi!`OLOk-iljjNx#ma"y XmcbKD7w# fTAE0 ZJ"IYY:=S ,CFd-#ʝ`i_cbpC<C?Ӵob92t:N^]%Ǧg)rKڝ Z4E4-WM{@3H<w졖s 8}D-ã+{"ae@n=}èIPHe z6X{h`+sxX u8-[?ģ1B9;р'yIT;q}$3m dogfzk>1Z:{?ID>EU5QCςWNkʜgvùzOE)Xsj/+ȜÆd»;ɺpU[\exppF`-k Rh͉KP9u' -|pSNjߓCx_I8%&ΈԨr1~){~af'a͂j ȏ7]qhW(9N%0r׫#ӝJ bob1yG:Yow } Qgג'eh]R&&ԉ+.pV]-}ۂw}t-\xpv X*~T֣ӛ&s{[v v]*`jOkzx1X"A5i΀^3y*ƦdYKwX+H J;=^mɫC#aq?ϹX_*,vM5ƛl(/؋ AqI iƚ^߿ɴ9߼߿M$Q$shd7 OۀgO3B(&H+}Նv n̪NlSܔ#Nxm}uwqzssйb9&Kwi(Ǚ7/l'<-!mDa͈:A kcx@NE36FE(nIc*4Q06GܕCvkPG(a0YPLHeUdKJ!Y={Y+k%{<5_>1ssY =1I-]zDàf_g ^ϝh61!@4DT]r5sR6g.pȱqZ]<[˶wI ۨHJ^pcRW">睌Ckr qϘkNG˅T~tyg `Q흗0nbכ{nte]ՊE.ĢI[aךl}I"׊ \ï]eU9W|ެ_UM54iUW(:R5]Rٛ 6?e+Z Ѫ%DŽ_q\ZtsKgij2H\7UOL dzνjU-$Yq1 ɳ>J{\HӦ\>ΒT)<Ҙl=o2>ʒqysptq|%X@02i̝L>!1{MWe־7|3'6wz^Ns7 G1б0"k=o"5ڐK<.KKxCjqw"g1[P1u81h>0 ąAsa@}Enj>;~׾0MFLYEjaWNMMh1Gzuվ~y#DGt$';A\m*dhȝ3ӼP_asng ]CaVD5as N?'+9>]dqEN.EY=JjZ^(4&M{)ڈb9]Zb]Co+dK#]fF2ԧ>Ad+x9|2Oy1F #iU`e5m5|ĸM Bn<O2lVa~\:0,HHcaۙ3/ɪܶhC5|5= JerЋHM$kݘ{qٴRһ)@<8!~eY [BjYiz~s&a Z:s*iP%3޶J3_0 eYX'`\7TGj\۬̚]9|6or'=O]:e"6};~eW|ˏ* ~6:*a(Weso $C6,Ͷgy"yP;{æ>GċHxdkb D7'NȤyUҼUUJGi9yb/sƣdF2h:oVdMZ鍛OLxSuMOPSoT~S\4y6&WCAoP14դiiӺS5s_RZ<'w%]U _Ԙ'$tEJ%!iCL/ i+!1^{N\dyiHy^7塸)è7p}CRY.xM? T#>OHãY5 #Tbi ;"=ӈ)MW'Ե|84;ҀFݾln#l !A-DE,LJ BD}Q- ԃ"bVhi"phQKF,^s1U=_$0>E^b޸s'b~.#4-"7Vç>C 'ZuTn=Wk*ÒZuΐcR%y!]BJu'$l<\T6e›!Fr'jUCUkn}6O^qPĢ+ Hyz6`Z/^9WoӏXN$-MU1e|i#cۙh.:w7&-ZZ={KF?.z D?Z'b΅DWh'?p^;x\O8j}| ϧ?H|VHxoA|E?uɽOH.[S`V\x涡f4=2u!L/gRWբR1D1DvI2j'^?4=F2h1Ep1o%r_ǟc k8u-(v:>)gcS%֠ i\?$.hf>71Y˧h˦H D{}P,fem>OysBKO\ )34J- ףu^k~r%j2T9I\6`-&_{v)ʘH,efAbsT4إ TYdIz;v/״O*8kF]J&;6"xa"ETt9x`3e™G^=Bfxhπ7 hF Q?A wL lmʆȮ,aV'?oBebׁWƝ2}zl4G^w*$ź!FX% e>  +RCjJ2+&kJVD| ~JHIN?͜iC;o4f.NO[f^G-zm؟#޴QaH[CϢ9X*Fxx9TTHUpx`lo.] Ls9S.^槥`ZzӋxω,kd(jcNC[stXBe%&Pgt@uA7= !T?06y41"i ?Sfqb Ye^=|b br5D&GXYK W^@u0o)|Bi1/|:AQ?Ac}*QҐXSm Z$&pdz|W4,',PX+-t_2:FsdLoט# ⡥x.$s f{@+@z# sShe2^&,#x_Q86_!f;j-\~]PEC=WwJ)s5Z5 J>"#j>-5RDO %J/6CUغV2cM/sɊSm G4^}F1JUazv ;xO%_3u1c|zuD*.sZ7ùip=ɤyl/f-{ZsRW6K‘[4qFDXu^~408|iQROWvj^pZ'7I>%4&dCƓD#ffɰ$$DUZ@OIitNbm:/CP0?9IfO{LVøqnQݔ}"o*nUԔ)"e*"0Yo^hRz-XPZZ(2%R0oP5 F1E{i"1]"QeP#rTsi ~)W˛hj>~3U% emzNKS-?:w}54YӘgsE^d>D.=GSZC<+O^KV+lE2X G\8lhޤڛ},r]TD6q/fůc[jdE>GsIZsF"/Z8&!6 uӝmfBgC)^dP7sŷ Mf n7S)O'oV!Nh0oDJ?z] bpR{hѶ.i^[ݘ D@>xj\zE;kи`̲C ;NY̧n=cO`= N3x5aP)a@ L:[8{>gT5KL cBLciCNfk6|vGD-ZODGGc U*Զ*N3f<W]vI),>z>`;է'4Zmh=P8z|cB'ͩo5Qp>tc{_iXs#'V>ᦖyo-1u>}KE tJvMY/uvj B.ᯌ:<ԚpO\@ӻ%Ƌ4xKN^s,gd[f)<Ը#~fxe}gngqB"N:/J -T2j_Z}p0ލ&F)ӣE k0虓G^M Mtр6T'I/ 'iNuYmLDF?m("YH8 DQm/h*{X*Z,f/bp뽺fw~|\j}(}*=y1{҅C<8*C(rpԈ|Ov׀13H/a`4xK%'2A+ӻOQ<{qG\2= ʝ(pEȺЛ^f Tc}T^UIHKބMdGKav j" QAki`4lX\X2eCxgl O,!>ɡ]{wgUhVŽnRo6+G\kq i+=}FtQΜfٕ}w_ (9>_u b5{7]WO5Ԣ¬}$:.q?hV0R,|mOb`9jv=᰹a{MY5x331Y֘|&zYk:4zFH>}G'M!,!-kqi!uxҽ~|0rqjAEGB_'8^ /PC%ԣ7z;%o6᝶(?t.-,ڢ7?|tI\¥TJFm1pMXhfyyB;dLY[k\e6+Bs5)I`)K)ƂM̈́HCxo{2*|hj#L/2#&LA>2 ^ ZUKO؟iEoX䵥29qv豵ʫc ..wzgW]l ɲ1 u?˄3I6(OL>oXuT@x݁+Les m'aDWcz@ o"Cz'BWs|8)ߧ]v9F׼4wKk>ֱGSʟ&Y_bo\ I_tlt~4еP"F^'=b,+(iD1#\)6=3OcJ%?",Fm+0:SD3!y^I9ۀ-UV,ֳ*0AإT j MIqVrJ{e|d(6[ :A2*/:e;ok؋'eihRgVԺH1ֹ1!\/OwN \HaoW 39ɨ)=Cys:p$xF׭WZ7]oV\Mƚc.y0R5dpL9-]}15'%_窳XP 8^~$*'h+]̪)$5<RTW50ay"D<&nSxޮd yry=C#~Sc4SuW#}OfFfoύNj/\:5n9mVծ}yicYO,9^UۏՎ?`o-a 3YjYO<#55QK.7=&C1 ΌKXfZƁE&$#=$+S $=}=ڳ2c2{}ٵE.UHU3Oo3:,Ljc%F:;U,tϮ9>Y4ekvL;`AasH<%@\SF#)V%B g^^a ȵbɵfhx`r<Kk7Csf(ˁDغ͍z.p=Iw]mޝ#Jz|P HRʫň0d-l?U7KBV"kh"'zSl):_q*`3BԘ0&**xȂuUBUa+p80ČFsW$S-!4P`]Wo`oCh -Pt-^oYlCYGQRf, +l!z}kzǧѫE>N7{N-#iPjV@ci̪cf6W̌I0O&$Qa擠(? ..Χdfs:0H3u>9s+'3>9+c'fW$%I?ft%EnC%P&̳HNZ!C# ! \GYEL3Žb &Zge^jbǦ;AO(H_Ҟ]zsK$eR4~!g<>ꪚO203b$3N)=gSVzU"m\KV">AhB~,2IԤ1sQXCh Ȝm||\Ou-:g]{2m2Ψf+z"~M gn6kOvs ˀLЫ%D̬6~"҈ H)^xat#92k4,J~~Z> ܛ FdNƧ &myTqE'(vvwi3ǜj.z*ܴ2ˎJs =|#iٺ %Y\ ڹ8,8O|v4qiz |@<4+r^$ݐ )8YbU9dvŃjRveς$DHN^/3튞6$[a\=f`uͻ52|6ۼsPrd$jLuz/3{ݍ {_.oSzc)V c>Sպ(SfQbP|:Sy7hs*׫m9۩ܬ mL[}W|SKA+o,\B"3rPzד^pAG*_| Ͽ}w9(jyRjjѶ[7P/bR `+&5`gERj#Mu1Y(-+0_JơYRNMqP/;c>R.Oaj 3xY°daI-}4])';WaUA"WR9(#w 3~oB^;PTX03أtF>a›p$.t ^WG8 O,|*8g(%[Kw̨īZkq4/TJ?6|Xwb|ΖVƜ] pi$Q<.dN?[ǹtHNn߅aRFh>_o[9<̫}T꼷M~Q(;i sZ,0 x5@8uPm {}#V|AMgȈӽXQ!SUsi/ׇ[94޸qTPfPj3ӷlWuL?~bSL>\{A"Mgs.7t8x.x'*@8|#(w 6z\u%ƖjxDw pu7HcZu2T/ϼyk9?v?>ݏ`_άU~}qu Lf1Z<9HG!a,`bqױ#iR.Y=h.C5%{+T6*L]Gbǧ-vหEl(Ok"H\G)rHI4(!OO;L  3x7/3\e{nUP?tݒޏ+ސU;mN}XCS\zt7'hTGi_ls9J (ſmyJ'ᥚ/I[Cy,g_ Agd\v``PO{kyάkSUFN Yx>Q5$Ou_|3MFOpv8єj:+L0hܔqfzBӁْN٦HV $n ד?具{hHv8{[ 'TYeEQ?gK?uKD(k38o\sײ2I?H#mX{ ?ȍqUĄ4?nW,dIQߤ9mc$$c~+ȕ~de[7KdO 9i&FN2 "mlKXQQ ޶0Ǽ.<:Cz^(zFu|=ZfRN:2.$E3$G̨]hKJT)]GCz٭n{]<0e΂dfF⾋&`NoOH7i[?<Wt JAܩ`"&߬WO[Cݬαe74C9ZگId+&:"~'Ka?2ȽMrbatkZ\Ͱ= ;"BOȏ `{£z]] Jk}/R~y_{sa9饒pX"֑G,:NQ9/>ye m \XZMFn#5o=Ck1~\oKtK JBmѤ8VLzzǗ@*'ː8`e䗪݇-&x<7)zJ][v,~"8^uѡYnvIH[5YAR9崳M3o30X߹v}8u!f]gYf۰K.|Ol".="M=}*W!1O;mA>vUGŻ I/ڮiT`2BKǼ $27޴lZ=|M^:CSS%#܆6-ALzE^sfM=x"ci! kD6I^wQ>T;_N-[м z}p D$;sso_J2a{5H"N&Hᢵ9Upڔuݳ+UZ_" ,m+Ԗx憪vj:tVKYk"P] !>Le(a7qox&_HY58HVLL"mUK.OMS 2GLO~xHzUCv^{q4EҠ8ho'u3Fe7ǝz?e*Y>+IV̓c }5"fwCjB@N{W;<ϝ40)RQT-XYꩲWp9n;s暘C|F CɏAwB4fpz-_ Q 6hzCPNg݈dg?T}810H=q^~ TeΥc:^QH u5ݵy: g/gR(sE)j'x xB |+DgD~BuYsLsDĐ,p\q=W\fW=4 =CeAea6ъW9f32To"FsK%7z8SN.ַ^jȂ_2D+"QqAy9lCٙ[ƉYܖR}d<,#T5ηU(%Ppk.,q*},=xN!>:$pߡڹ`ɘf43p(}+\;Ema wNh n~i\mI'g5v+źgJکe_vq8-z^3jΟr-ȁkŔsY]O tΑa(x/p\u -RK{Oӻ"h<.hj`fB +OK׼P3m'x^XB\^z>EKCrU9gJurQjift52Y=7pgOU2 y?4<Z`@ۆY-+"Ww׈NK_2UPrE޴ޕX[UD:4A osGo^G:SN眊Op (ɋ&n,@:"?tDtJDɻZIfsyП10^c>ϻC·+|CMv"#%'֌2Pn:V^*r0mC٥FEo޽y` exC?|!gץ 'RU78wNJB`/ {ʑb[wazV% Ơ?,S^P9*wBSqs<꘽ |Z!|q8#-.;KybO )]㻋UTy >0k=ek~`DrF6KJݫU]}rT]\` Tl3_r"25-!]rkizXbBjx29ύ/:_(VZ6O8]et!^Ƃȵ,OZŤ!&$mމT'9ڰnNv+1JReN>REbgMmWajzg%d[w;bNiw;wzset5Ƒo^=$WLV(-A&BZ2frpFY!ٶ%gwU78ZQy=' Fnq1z)Ӿ:l>)$jjJ<?rO B4jH{9WgTJW19 fvIʜȀXL/өGU5h=65fHNRx l`qPguH)0Tֶ /xmpIe1k\WqroLH7p&G]ZE'ZYqس.i!H3>hfM)kv2'/ϿL9Bw4W[SF0^ܚk[|#&:^μ'qBM`dz#עsKn?@!<z,6tr˭W /xMs Ws,B]53Pd?-"RJTo 9#OɜKx,=GrC‡\QV|9~_GAOOFFyPudti88Y&xP qۗ$PKq\xuǢ)Ͳ>J4D{d'R^d̕ -SK-O>8ЙFwR$Gx$KFѷJ^NіD͕7 \88Wp=((`hٺ҉w1鏈=S? ɸ/yJj '_}r-Z[}Q<-@{P|p$#Yæs:fqln|Ҹ?g*&q$>#B U:*DSӿe:Rֺ6ޤ2aR3avu0ɨeݚ BW\Sopt؆'.d >A ?9~#gi sB֯/! +W|}04m]GGضlpYtSB|Ő3DsNO}˸htJֱå1R]qkk:7'qƕ:nĊpt^p269g?˄lnIt%~]V:u+AS ? ſ%P S컟ϹG\!zeyp:zĺ^3YDE>φ`RHQ; z|.|a̒3 Zo30iWIg #Qq ΎItoPK\#Fp*IkyMݾʭĭGhqƹ'ijBhRY>.1[}LͿJ`iWeZd1ۓ[NQ^7[KQHXn?|:~' hH4z :?3oT-Kޝ3A::'' 7/^\S|$qR_NBdBĎ@(δIP((I?;K.-o̖-(ՖL^}rRT҂kѣQ!Qoj?ԖtZлwşsE򘯛J6ߡ0?Pcmy-rA.d&+avDm̴J<t;LV|ޔ:maun(n]mo3.;5@MjDtcSwNB*ؤoA7İ̓őzײ2j{A ]aP>(%HIҤٰ^NOj?U,f4eA'邦R2?/y'aڥ[Zu>m@).n49R\jɆc!ЁwcA?v ?ffC>t(K&xF pO<8~="o)GN. G8cd۽ V<5jJF8sbQ!bBhzY"fS~bpMgH>Fp"ZH*Cϼxg^[\{M;5e䑴\ Gٝ(PMSٴϡ%Xvw\wVa} !cGr/Q8XYɂ+[x\yYuai/f8)xE #{*Ɨf@҄kœ ? iM`9s)T-.a9=+ęN wntxG$Kd23mjyϪ7puj_0{>ЅTƫgk}i M>7Tl4-*,|vQHd(}CL;}B_-G>ONE70W2w=,qz赧(܀ܛ~^33K#I^ľg5<>{v3v۽R>}\ĀtMt-BM.<=@L\0Sk˩NJw6KMY#ʯ53>`>It='@UVOS;e+27Y7/",*`H§nV-3'MI!jfN|jgX4n:a~M'yo*,+r_| Fd1|#}'ZKBo0(, ?֘FV;+Z RpT SANjS+i 0 JTRJx*"S0Hx`jE P ?QKؤ ?,]S "ߤ S<'0DW*& ,SEh}o6 ,?B; ?C U YK;;5$w*w$!A,6IHW$6w*;G ݁EBAv8ێ!-%EXH΋BRAx ٥ 4$+X35;} k}f!c֜TAبվCA)|m3cEBV"+oV;w"0FE.C.j_ DS)K`ѽ_?Dߩiu!X.D7+?YQ]TbY_0I0?jA-a/jvCaߩCaNc]T2/,S aѣ[]4|#,|WYIDr[m4շ8@vI};HP,oαoPN շ!6HT߆_F}:ogmm,ԷհSV%ª-L}{ I Y0,t\b1v2;ld|/,¿~=?OUM_RG~O}Pmw>u~ ?dL[;5*S]dS|T~ n$D¿7 /) ߸7 `wolͿ`^։ 5 l/"AlxT>/Iw{ k bؽ7FR)ox,kZIV_p c?=&^{oi:<{W]xO{=|ߪѭ￱[Qۿƭ0e*}J^pzk+״k{w]b_譭_S s(o$ ah!X{{[5_)+kEw]!̟1a  lTr1[1\y3""ooRWnOT=="5m8wpyR"PxKL}6Wn]!;kbnj./$.gB;> x_p;>ς??H}P`~,y;w1m-b1E,k|}'vo;d~Q;|?Nwv< x,} x_`?߷A|<7;ߎw' w s%`H|C+ a߃&!GܫJ[9'*0(E-{&-[:7[ _%[iYs";a:ZEF ||_"k+_N}cgw~>Aa QPԗZ6]PБR蓠fP`&/**fM^su^wxq_uvvMEZO -PtFdgk5#/;eH;?^~o^.yYr4Sa'[ l:0c Q@Z{sn"~]۪DsU{N׬gWɛ5=mQ~5A \|js3Y(I?ty =2h1E ;o̿s1$ h*e7[$t>&^!DEū$pC=>}') e SS8@f֧}7Oswr&0xc@s9I)AƄm<3PWAM|+.qQ)^yQ)%<0qR3:4:Ƚ+$ch1>֒ez:'fo\k \pbMP_kmB1l{ O{ф /ո^5̩ҨҜ ˦q>7r=Tšd~nJ|"6%HڌܵeD {H+Z-k{YOXxL/ ]TL$S'qPB{d'?6B~\?&?pM'*Vmwv}3}:q5BQq@j8#m=볳p$kuѦ5Et8IKP` AWC|K~oDtK1jh|SmB1l|՛=""HY(az2A1[?iP2j|)( +t=Ic0eB{!lx?i5/cf?hQ>+P]}I,/o ̀@3/գJٶ#}Ga9wcɂ#{A]vRsKϪc,(GmK@zVؓQ[E\I<'*=L5|봺< @/+)@Mτ"4/=j,\{P9vEw>gy7p&8fŨ0z4p tbA gOgD-,YmuzՉ*~MoKP?\Fo -k%~3wnߺV<7;j^m=26t/"wVam /L,J8GǏr]Y>A #ˋZ\'N*4Sj^Il-y L {cbztӻ>pP11Wa O|&;HtJl[q3a%<@j1ʍI4h}"/r/iQtT>gĸ?&ᜤ>3Ag;kFDA9pZDŖ%2r5'><3X{VJr\|ڀ95&i!5{{x.>RTŭY:YIK#]9|/|4SHۃ\bs e{pv&םU4zTp̽f)}4!`Y4ЎFcPib!_E*!~7MHg:mJM#Ųjʌ+}#ravPph |I<#L{c.1c1HPc $%œ5,g 欥 |;k{q}S77})B{<RQm\6?)dU>VQN,60,ft),MJiV /l ӯ Ƕ=w{+5G.rdĸI1[nk'P&8ڍbvPa,ÑJĊq q!^"#coMU9> |GXo% b@{r[ c\ܔ@~ jHE10sw}p8nGnÉ G}y S?Y3D & 20dƦ&1:mHazozGDUP'Jl+.I]0,Whߣk ;P\ *Iku^W1iDK!k|}W9$zU-?G+͋Xm{fٔP?7ؔa.㜙m^u(5պ=BEȻUw̾5+78 3Wc0g 6 (ؓ%l |Oh۷:*wKdXto5oį(]T88""FڎkDlVYoC3tc+KJ2xڼ)B!u Or*zT0hr# }e ,aW嫿+%=w x?5ؗef`#ms|/^jQDp]RUãږsgj*|[Y"^P,c[kqj[zvJHgX='}bg}o=h4ucm5 ̥42^Va V VR橾/eC1d܈ F 7adXp/AJ[m8c9G5yn`xux{ ߸QZ ! E>퓾nkď n86 p@luqo%u}t>nAczPl"$]z-6Uv\T}\}FƑR=~%'hؖ.a 6i=kۣ_^رu6xl80-)>BL4FD\C̣=#+\opAgyŷaW=9Tu\''/`4ʬ6]1diwnsʪˮХΜJU3z}&ꮚ))+ ;ElZ ~")ϲrMHmq>(s]9<+6n [CSx $lr ֡ӷf7Ne# >Ǻ)5P?AUzTJ=ehz%e qw W7J -k+Gd La?)h裈$o2m흞ؤ$1k'4@IWk@vI|#Հ{9:LA+ls7bg1fѝ#YKKrxCYEƑ4⩬Ptۼz2 ^al+ 5"۟K]bл,do4\-,/nUr]#(f>8{^ D;b@{~ۡ uw.~!q"jj׻Ң,ѵ#gS5#?3kVjVR>~{3ل٩}ۿ;;~izM,ꌹ%kYtoZ?n37O6JP{X~lmFPWyEo.D"Gr!._(͏nwotm4|Vqn!d*;J`Cg( dx@|`E,MSۧ:k?4';(lN ۚ:`7'è* >lj,jo ~BcSp @[>dOqy]&Ų<{AC|[dw|_ yy*'Obώ>+>>۾2 hYt:g} c4…'mPsp4tm`4mz7 E>-xcy}ۂPO M؛b`l#|#&"H@u;s7-j+\ 4\FWvLv9|4taqZQX"g{TVF s6 J)ڄQ'6p{k%!;V>-E!}| j:?޹XƇ!ku~6'qF5,:`VF?E)<zWqc$EtdLQT ,:BQ_2 ֲe_x|hq"0>^mLfB.tjxcAF{&Fr⮁/I>W1~nekA}gq)x^(<۷7ykf{6,{&萶_i' ;-Km}#uT,[59 i3 oj;@DEQqQ>o Qב:IIY[b!t,/F.!n|q-U^x~90-Ս{,]w{Ϝ/ >?^-9xWyf2D既1CÞ2St[izqE|2`q}0(l MZBMxs~ puqy.6\HvWݷ7{ }jn::b]i찌z쟤 $}p|ѧTO%!Z_j5'a,;pC|nc) E }xoGgbk4#]#eLv-qR wWF"mT`}-]Nhҍɋ H 5[b_\dw<=΂fi ll#_HC4~T 2?\Yn0Ԇܰ-^:$$Z`h -纩oirLޑ\Gc[pn!ݯ( l?^j=VC3[u, ]X ֍~T^c%ʎ3`I\ V}KUmGw?z eV|آ|⎓ \ eHw6OR[Qt'՗Rzkm;Y7867|x?*d?x˳{HTwXgMԚ,r‘o]ӽIOyHI:L u26KE"It*mOc r,O6%vʿ7@m6x؎#q>7KWk.w AiFϙS29_\Z灂! (:&t?@_hk ׂ oTd3#w|>U#{G~pDgE!2#oCP*WC_]Ѐy.zUkuG*r2}-w 1"bNEN^G!'c6ENQj 5 vmc|ߛg|grWZŹƩsPcJXh z!az /f?w!k[m{FSF# C[8ԩih4v ,#f 8-Ɓx>7= /9H+ 6 ot`aځch5:/)&38`,6@8kb{S"W޶i@0rl8#dgG7^mtK5zKmP; P}PP 1`zR8dr$dfJiX7]/%iVhPMA ?NO`wiݪk~ȅ4 @j!aV٩;XR{Ӌ^ߋ?K.H~=ı0ZpQ  ci  G-[Ou@דym >m%{#+p۝s Yn?qQ0=uڶm*}|igÒ6}*ߣ+6P;dw[6~Ő !9 (bݠzT>O064Λfn|Ph T\סmf[l-$_RM{+[ps}AD9K?`n>/_a.z-"=pwC!$kbE6W-{f?nĉ»jZRM<q:\rAru_f``X^F.H]qP2kO&{aeabGT jЁO%.IZSMuiOlSϳ1ǖl0dVD![t~VS,?kڵk4YԐ0e>4vt9jc#أvamyXlaw6 l%q3L~Q.P|o>uקdPMpXX)p&|(f$$F31 Q wbj)l;ї<(2p&w{D5I@#BPd{7 ț@JZRkf@*lu5 ̘DO/˓  f2bab}\=k}db]> ͣNg7Ɩ~vm{=~ڝiĪ/úI 9`"ǻئưĥ,;?)2J|Xt{A:v_{s,$OCD}jsKLտnwlzDF{2م*ARNqJmeJ=<~*ߨ)3;>n}E (X2ze h93PȢsM% P|5 =7;F8#i-,$=)֢r,'R~D~qÚg*`1௶T7||L]#WﱉR.0!,R)ˉH#lN]1ujp5CV,tw ap  =-&М&!(˵n!PD5@jB"o*'Ff X2t#E2%T&~Oe h 8p KU~Af*A,J?ګB)LPFڇ+UՄt⍷Z @ p̴S;| 7 ),I7"E[DئyoF8̠T֫ (hEr 69t0"C 176N-ı7 &Z7L ;pY%p+H C+C]aYd_7zm"6-NjoO K0_èLrQ㨍OF٘mړ;znj6by9Z^@_)Ez0:ߋM.ILjwsl\sR ]ނG_|?L_]lEp@|@n?F'p&!Wä 'DH|so}p把/@],^r}_`u 3{BN~Vҕ^ˇP$o _D—ihXG>LVnVۻn| C%%"\3})\%.#~6~^k*[SGNQㄗ__Hu> ׮RQ0$( ,D@P Dպz$ߨbxypB o5NjWxO6Fے"m^[[_ݑ3V!츷Pݍoi;H@gf.kj脄"-tlS ZUeDN[iaDmX3dA 8U2ͫuɝG1KB,Dj\H9 YC_Xt3+htKʅVlIY?v玑T'~aM՞BKS&Wl5-Y u{RҎ 8`{!OLx}_nQl>}*6sJa(p~kS+j;%gèЧT_Uޘ# Zo^_|&}YMMhb4EmE>^Yz{I ́Bo08H9j$%gԒxhіv`:I2}QG,++)ca\6ѡKh @I4< #l{J^p$DpLM癞^^tWZ e-R*z{=+!IA+wVZŲې5c8[U{râ5|Z68"rƍtU(C+fyoНl{1P56t4ު:$%C s+[vb0 G|b3">wh풕1܌pŌ۳ЫЏׂi.o Һ( Z[i.EBR]\3y 3s>;K?B30Jʰ|֪*=:y7$K7`,j"MF{PhFGfݑ֛]{:(O $ 9 ߦ\ozذ6PܜZX齔 ӳ;;yyr%JVsfZ'ƣEU ;1nX"1y3[yt)A Bf#%*g,Jܱs̃ ^uT43@})1mظN,,W}G+ɕImEsF#zؖWe|wb49酞K(Ve @usGEO[pMS~ۊ8v¾x_DXWO[nc`ç Qx~ӥN %8FKVp_&ܩ~&Q{ J"_;=rXز=TPCp8O~O/ňXuQ @'8*ccVFa,~~~lLLc4}ceaSHԯS?u}m-V"\h3MtdB|LHϼlA=sN ]0I$F/i +S*Ysc<U郟e3 j1g w|;~e ;UxFDV.]No%60c{%ߕV'=X_t{h lXnToio=Odo0ɽuOa̅u2u5 ~"0Cb(JGifcvap\Kz-H>TuAv~8ɦ=NߩVX 7ʯ~21_V;IgrzDuVss9H p|;" )B ZwP;=h@__왷O ƗCPPp0M? qܻ40oqƠC * R޷\n^j![6ɴw@)f|-l?]|#{Fg5Ǹ+&+^ ɐoQlj5nS2p:YFءZ \M+~N~G ٛ}!Ʒfv_nI;cҮ3'o`1mp3Q'ME ȱ;>#fӓH_z6zb% 87D5a;vʇAhoſB !ɬdUύR(F/i(x[6jgƸ/Dc15 kcFk3K 1n["1ȸJwGm g1gotŜ͎ sMmkIYhU9Um?Ԥb[2#bGSh~f-6 7C?8&G>'yШ~i@SZEiH>̋T.QJUmiK?e(i`=(b)??sn.I]#-Np^(zH C.O۫!yhXj\vr 2lCeQu'̝m8P _ɵBqStkqс?g,׭.߻ =߷y&*OʳrgL%%8xNU{CVT?;[nOà+}h` $=,gK1:^:{}> ?kO®ϴGږ`0n0-UƏ9BZYϫs=/?X_CSQy2Zmq?{`494hD㺽"_N Օ\sw.G@RF<R͏6ݦ̯-~MiQ,031Ƒ>_B__%QtV0I^' OJ>Eos8jJ62dal*FRSUy!Զ_\ཥӱE8&TTLsL5Ҩy@΁Y*ЧJyŪxIJ=Π~>*kssE(f/\Q d&݋nk/J-5 /H듹/PSdeJZ5vkb?#M!<,n /"RrHUŸ ?dLR![->:} F}ʹmkEeF4e>@,Yp}k@:j)I3[yϝ5|"!!C2ٖ 2!e-^B6lJKsSrQ:# Q7lY7HV Tx SQKX`ou7#é zf I㔰 ff ,'Y&zǙ'5`qV.>78$xWI!VO;ٞ?{gGֻG?~oA`m0ƹ=9Iwkp=_FΩsn]@6,:M@xozȮdlB%C NJЬ0>ke,2am>/=sKmQ1!@1t k0sa3>> .1j;NHZ+؊BN[4YHtpPL{7S;RKkyg:cS(?l(:f?҄:ANƉ5 F0^Qn^qŵEʊsT#6ߡ0=}#cށ|;VwKIw>?c0!U}f vyƙ0X=!$R f˾:{*öSc+)Lu籆,aPfS/gj Pa5~|+4c,[\|C"kKP`Tӵ4\ sࠉI2 )<|wW5҅XݭzV MdI 5\$.:.՜ <^OVD;51;d}8򊛃oiZR$e.ܪcV2zN2= os*r6c,^Z ǒݍZ?2A 96G8:p-Ű1`~ UXXD  37SD"sNw=1.ARXXVĎ b2Hta@o= 5}g_g9"ʺ+\\:ML,Rk]h06> 2HEhXU( FUշ =h|xI5ͷ/L4L,"la3ቒ(0$+!).ؼDv_kPa~ _+߶j`ocPkͲZL>[J[Nuǚ(C)/ "ℵ33a53` XSR -5E>xEqbB9Njby,볳wY\ jwq.Դ7f}ck%yڕePQ}Ѹu!c52zXY'sf^8G=7avӠ)voϡGT>ƿ,DGB0]V4f֕?$^:h>|CUB1w??{5|+2_&>Y,\pr{ISpjDu%azSP,ucHHH`hbzk*q$P^7?( '4erK;>OWqAmV9&7˙mXzB"xlR_)ODkhO/uI'/:%ޱ};ߧX+p}d21ʒ^gi4y ˸ѧo4+hڮ-fw%/7Di0.3Ʈ[oϝ;m]p~^Ss5{Ž'~J~ ?1[p:ο\[vJxBBL 탪v=@D$jV=>QMDD(>>Y,qnmç R œxu~! #鸿'Ӎg|Fmfj g/CdF:FmzTEzK7K'f9˝m %EFdBy9$mm @6~~Wj|X_j |/!%@*Rȳ8!bW\hݛO!5] -!.5WeiJ)%HmxH,b{E}&?k7?iW̐/ޭR>ea bsKkKk$:>1RD}{D+оb_e(_H]x~fBm:t>zc$b&'{z򋝺fγO?n뢀^bXZ|xQծ@H}k}*su 5Ih- ~P,8`sZCx|sU׀>G-`n5UXDm|Yѭh?ֳicoׁɞ}~IQ| ^uoʶ|P0,Q|,,xg, 6nYd9!,0߳OL|$bvqIY:Ȁmא|o)?k'j|dK;?oc_/e{cH8l> hkC@>:4sTSR1@PT9UXnqqlKL0eeýgwlF-ĿپU`-T ņTfъ0&lf/j bEL2_5bXWnlteo,={mqV~w8ހ 6M0Lx5/L b42._ocVxSFij:J:tP2YkIdI=MBdE!2IͨF9EiTFRK##5Әf~3O{\us~;1.QE%t|n9y'g0:rAil9ҲvB(赒pt'n7'.W?G]w#,?2X"fYz 9< Xh/Mo#œӥ0g="B Dꇛ91΄ 7Ol\T<{򺔮n.-[3Y kv|G3g†*{HXL A]g`Omܓ7|bd!ockE,F8g]}-Ǝft;>njYrÓ vS1lp3`98quKNJ9y͘Ս~z 0-<'/g{MeQo=W?M2G轿D#"TQ7:I;ss^U˝0١jU_9#E$b(:0vЄHdllc("b)d1&ϧeQ߳h9 "o S€lAçhr7(8g63̒W$T5~NhXB2 :%B=|B_TRy1B=Db_Dt^f9E$tgB0&yw C%Gpڄd-bs].~0H_+$̈;4ereWط4TL͇jSfSt//~"@@ $@6r9#g>BBAש2&Ɗf()@q|e%tk ޸CJ };rdeH,J%Ոi̗!cF?[IUPS4:'B6_A;Ä-i/OU\+pv66ü{X[B]bd:%s<4^(* g 𞜞~96mHlumP)4Ƞ.6mmK9UW*`n2;|sI?B9XZ(NIRVƶ7թJ+ېbsiu(Ce'(OΐBR1e+0n,?)o0'e>^FRWf".yiZ"qL\9a琖zRtn 981nT=w#,oI䌺pBK 7Su,`6Z]TAMl 0훿M4"ONZ6]*?Z^y[vDbJ)L&Ur)QX/`A -(ЗuBbM4iqjE̖j5+^/i}JMg'5L[|G=ReB2f=!yڠ$(sSCD Q,(cn^V`68 6>QVͽcWv&JQ?u`X$ X0*w=CuqO& [z b0n/֒[2n>Vi؅4Cf$#H͢t7X$zpC)+nvZr\"Pѭ|89B5LOa j,_IѦ ?;YG-ްQK=O531!C oKLJJ|EtD@} Ii3JJRNNWWF^CrsYdps㺔 z|-ꬄ1(#UIē\[e˸Bvck埙bfw7x̑cڲރ׳(ⵅ"R'UG߻7QC}y 0uD`451!犤 QD/&(Oɹm9[b!s'@%~J޼ws9ܿ鵻*[ ҂@ufhF"y/KmMH;VL=̼q^鿖J)ݜ~߫>clyf?H$~pBO.+Dזi9M^C^UW!o}Z+9zam`o u.8KpfC*͈GJ*.O_yg3!b?*oQdr~_j~ӶgU;=AZ-J%͈vv€Z[`秜܆ˆpLg<,Lo~b#H23!f}*1 |P.q+'C{Cl psnW-L@KT멛m+#:ǮO@b+}l|ǃ؉jGCTT q*\WowW7YRU'}>tii SPn$dar;!<$S{ԗ r#}J9C-A̹"zt({B=#m57O t½:xt]IcGyMG3ZTvNJf]oU" e ]l&S`) 'hvuZaSj0ު1aɩKފyX8 |fHZq)ά~{Y\ؚ 9d.I ,.i#~׹STG{oXhgOjpcC)PcGnnXL2nt8*}mv<}7~KM+_4cj&%5 wQF Fp9tΚ_w|Mx|"q6iK6'  D>!lBT3~G:īK}Z9'EbZ }sQټ֚u4'wyFX:园z"]|3 zu/MPIѰ?"# H ^x~XlnŷB@|}T_1o {\"ck䋛 7eM7 ~Q2;;Pߝ=iEjx0_G]'YjN, VGB *iUپ;θ +ǰcf/ K@uw[YH#d̖i6o[9fMB}u|)ik~~1D͜ڬPI+R_InQ_0O(և1on`cE h:V\S<9Ba%A\ h59ڄt!F?#FӊP IpU}= n=EZv1̼zIWlނhtJOW  /夤|FfT3=qSX nRh- xjf@ɻ@Yϵ>Wn b4 A/_3s]K^ ?]?w$С Q0ЪԗZTR)GJ"گڢ5ʨYMeDQf|> 3=z=_#v rb) @ ܳ#= ,2S,ب8Yz~ Ѽ2A`x@qfM.| tJeɨO?nrxwC: c2xj ;v ꬒ- i3y>(kN",.$9Ha憡KyhT!5qZދ>bGAt} 8f,F~ 0O. FAzK̮;["]j7L1Mf,2u*={ԠM mKeF|:-Z eڠ4f6kuѵKOfD}ӣ}=HRVvnZ34T*8!} ѷQnS^E:_35&\0ء,wchg7`sAM.6 8B{6wLɼ&%Jbtv$vY1N2*i\ZߗOXW6=h2׹iels'$^ fp8C8c?+XGU~ >oC^rGeb=X08敆w\1JEf,ٱ YQ=پxe.LxҚe@̦ ?``ݞA[K?2{{y"0ZޫA"w,:M9cQLa̼/Hj<)ի=*Vp8&8Hԕ0LLA'Be7 Ul><_?Z%꤄ f(1+'f7x39"EЁɉ>deg \?N@Z.A0'>"P)ߌ0:ƣWGz:5OSAWηC+)q-Gcw>.3aR d5,h#驰?kddu :u.%>BȰnGҫ,^Nx?9%~-'vZiQc4\lUhPo+ݪI`YlAZ? [.̟_Xn;Umu3`( ٪zvE 8w:Tf[_T:TIm^ B 48Ə!eլ"x':N㱷a[ ""RP֚jaH⯣Ҭo;cfǾSuXշ'L,{ )N6;|aoٶ{DU2(dvi(~xRc肸4JO邗,-$x˂w Cl.KH+5͆Ti^kYcVaRzCl` i2)$buȩ1]*CWbqK>/ &b(K >IIaG\t&$y"=tҽ6l !̥" 0Y efO:3g>UBt${l,=0bfa`CW3]l\>~Ө(M|,`GEDcqPs7%Z%}N' ngIHKFY隍1"c.?x0lt3_l }JC2Vo^D_nˏIH$heo=gv0o P߸em6wBZ=Jg̨:ӴiJ}bPȧe.}&ƫciUPϮ[,v53 *P%>3N?AWR&oPX =v> /]" Ղ(0 .8SFAEcx3ƎFs7&3|Mu"U1\?_ƃ4Jk%O&~eYRUFg/6isOd(mBuelE5 ][9ۦme,-]SiDAEʺ$\-PxYEo&(~,{ʜq؝8 h kˏ8.z PBT59S$R~ѮJw { ZJmTKy\J `̮ [5Έ2]O}ۃ57J=B)G7Kw箟Pv' !_ 8Aj6IAaQ[.Gږ㟪*=*e^0GZW-}MP/+۷fş.'9<@h!z/"ߴbZ_V.6'7oa&y91KV;!"qZފYҙPm9ŽTK;,Y-l+ _fLsR# A8t2 i7lz3[Et0ÿ.}Lwo,{{~FҢ E;[Yge\;١˛Aqڋn zpNwQwM=f+e?Dzp GvCN4žbGOu_yO򞱗l[`B! :X`d7ʳU}(ge$]ԼYEpl'T"v}m7p(:d|bgpNխhkܸiUA EuHOk(Įי/wYUMDd^p w~ԑ6Wݸ:n /Wkoc1b mxѐ)[q9 Gr5IÑpQ"Y:H"!1*y2aʰ[̶,T ^D<;.AXCaЛrB*=Í:FfSǡkR l6K@f`NgtYCӣ.#/E^B={4hl+!6O9×fm%66EIH["!_(ErR䳫Xݏn",'n`]kD%kބ|ܦlzѵi' r+0**S>1p4{@ݥRT|GIj׿_ga-(g]ҎXap&~76[ G(l$oRǙ̓Ə 8U$ ]$OD+~~c#u%z>iu5l֒Gf o%K -&vHa s,?FjWS꟔ժ͚l~?3b1c)~`G젘O)2l&d%1g3^ D"VWDRRSMYבNmI JүJX,Z` bfr҆ [8[ F0|k_ܺE р;#h,+JwnHDNJ4J$Nz.$= 1u4Vķk2E(V'Qo lQ8v2i/FɦDm:m*RT;DJZ#s Mxq}gΟou]G&}ZJ$0ow恈?X]Hy)o"ϥdCf5]p7:qfsd>Arrի^{23Қ"O_B6ﻼlhnh>06f%IO!-s60㽕:V8FU7a[e,*u#/! a-}5-u)i/P&5fsAX|ÙƒQUkL 뿞\$9*'eW:ԽJ %{B0ʞ`LđS2f04I}OE[ UvT(%L{oDg"Qf ~6A -ZvHჟgZn>0)6DV.[ZZ!7ރB`[@=ٶfO8 "޸ "N{p%ı3`44 U4.84U2}۸f<~vN‹-ڝ"ZOm!dr;`ka) ҙԴ$+nȌ 4n@׽VZP+aeNfLKfnGSO5;Grz}/=R֙3Z2E1?Cߥ]/~9ˁepJV:'u;sC~>ߒf>)ka1@$U8)*r,8l']vcB{Q+eqv56^و|)7~aә.;M -((\HfF>Yzu2In7<0uYd 9Kz>K!j>3ڢKG/ͷm(UHӅ̿OA0'\E}FpZ43*o)KX<猡C7Ct7x\1x> 9J*ijc7+=<=# XN#ꢍ0|įY13}z!>i}j>_E1w6I&[EX=}A9y| }F h^X#Ӌly:(->t-Gչ,sd̉T;y :|Wvo1SOM%/ޔ#,vIU`i+B@D:r;qV~bFolJ!k\{L/22[v;1pV2fk)㔭=ܠ ^EAknAY QsJ 0SI{z*Bvd!8hL>^[ :-U%Z.~~|f\('@~ hmezw{sR297+KsVqn fbfeKic'ܿ?I15rדI:rN|.c,fc59fboAlJ^@ߢD| 3 E eSZ)>q!'a'l6y>.z2vy = NSl P(O)+<z@;aq8N-`Ї'y(郙gޓ뺽7xK7/VNMNn/\wɀTH5J^! `s>[7q7hUp+,Fb$ p%'}=mj66vHFs\3Kvd0?s>S;]`vGms͈ӷrsR5HGYdR 1έ Cܥ?swoͶf&y;ȨrG(5 Bm:X_Srzf2{bNBa\b8Iù85r h,!5ܫf\Q} ^ryׯ* #&q{n*70?;2<7Wb8W G˝|ܬ8("@xœ5S1;% M긍;HZ9yj75hd.'À a,Eˁ)b۬˂9M oE<HSH;%.>Ku}swjMǤAUT Ǻnp|$g2ٓPtE!?X|y ٬P VyYA[A |1 MǬ UQPYn{|u#.*UqIs&%=[ê٥z.h:b8:ɝo6:S$xZlx{&Fpik} g3 0s+]**cȒ毰ؗ/W w whe­_f:Dgۍ>ݯoQ*8:{ 4N}zPBfڳAD g~ +LOel▚9h$ʎ'a ޿2vL Njp C}HHX_H[g˷[. T@OPRsݗ|]ji'v< ϮIJOBZ}{)(K7pKbsbkAR 57l+A; 2ݏ.B.Gj&LZ*UULû՛1D|pr[:ĈU+p7qвeҕ;biqJ ';H7y;^غ?(2ENF8(պiƒYSg`_E7| w({{2(띠n 9Hp0 z\KzW86ύ^ʯYc_NN Y)Yy&) ߋ16Ao 5$kpBU\AU`dڵ>sO$9Jxo8ɩ#n}|j#&q<|3x{rv|Pq1뚪ݕi~Q= = /lRoX T]6 M Lϲ_J"^Kz*u02c.z׋:?#lkc]kwBXV;+orB }wA^|X@=@ g ɐpi ~xkmռZzS ԟVϙmQGdd ^BH~uYlX_wsmHxϥt0=6(UvDWwNuDp{:}^e1ޥJNZ2B1ܕs=ߓ7r.~SuZ8o+ TlՋ%!j 1QaYzm W+;+5~~}5#"8)Æ(}7$ۡuQ\w]u>0E%"Q5{ ێ'W 2{͐xy DCo'*Q3fm `:FA{񛋦jOSupZ(Ңiz͇eSg EhjS5$x RJK#E`+5 FN}gC3.)N<8/-40I7QI n*}-u^]yzq\V"-g%n)523ǍSn陼-z.'8L^"ET jN I4x_q.]iǩk@#+v$(4!#Okwlvut66aBml*o ߸ӿ%ZlFdMD? vG>#6UvlӦYYk Ɗrr䂆Ķd6>=~~h 'Tj#*>N%6{90"gޮ.ED9)ǛP8x:c@RF_.(PJDmF+0z=A0DY2{@IXaiTo28LKY&&ӏE"~|w\`VcGbj=PXe9_:$k۽]!!os&ݧ"%?9DTi]{/"c&[S7S#t$|ud72:-\϶hXFM܏E6F`{E%H+ x%.:_/:mMGN)_\s<+a1×/Y藬JE_qsjDO]{,P-6Llͦ:ۆc.m^ZWpDRjV=tϓ $-O# U'Oe u-C]wxAqM\&};>EGPӫ⍝ץ菇y*[Ͷ)+>*DAlG-r[}jo2.+ ɛ\tě0ϋ!A&Ҋ[{Itq u*JTJZ?H8AKpp&:".=6@ [ҩDFO/GmͅZӓ dyY@9ԕSE47訾/oq?;7˙z)~U)EOXM]z-R/BF:Y9pjSٿ}42z^(n=;?'ZON7ZWtYC fwUXǀ۰/֚'sZ1 =^.e]8iqG6>䘭/Q4tU[ꦺɂh=?{qb{#iQ6{D9ooKl+sovFe0)\_e,6BZQη0‚s̩'$عUGlq)/^@ !5>H qWF##uy&R/Now^z\mO^k -OyC '4.nM a@ A͍ TAl6m+Nz!dD @8?4icGq>@Ā @dECڀU?y `&n%t63)^zS w2#t͓=9P@{鴋.NE;xtE o> @ qr"`@' GFLKX`l)oԶsDnuV/&Elgh.miӽ acno+>ú!vsnqJcooֽUZ-/<t*M2̿0_,^rd$N:5Fx?lJB%!XY͵ F{1T&Ȍv_+>qh|86=mO N%މ~CFދ4G OtC;uL6r52\uFf2>ѨOOCtF|îL&ZWUTE+ٵ60 PFTG5"+ Lʼ(ȝ{3x_svf~O9=εw~c\fHee|J<=΋v LF[aJ!}xH6BR4.fO0S$3Ɉ.\a9Jt2HEC1bߙ֯tzl0l8Ԓp򄹶=ә>}0m젺i!-]jN+uA]f&o$>QqpWzR!+X9}F П>ss9Of Y !(t zk949F*Nq䷄e{+ߺug"e6 @܃UO׎V΄*.@EmF"~K6iUC%jF`ZƇ(XC b ;t ^GnsB?i,nk/9-*REF+Wy\^J }_e}BRf:o"y@Z<F}r cpYyTt:_nrtMvzaJjh4vcGUcFI*I5Hi@DT|{m^>}O,>+KO"!JYfA2 .1HX ;FUH>q>]'P%*4"  _dجh@ض# rS ne/z^Sאּ!U+ӭ#"tiVfZ,c'c3c>0O,S:8pkՓ xH~wM»jB<b.N@K*Jg]hd;6͠09D$u fI [W:=k݂l8榖{qa\d]H X8{P]&T$"q[O:fׄ-jYzDOor8-PXVk継X="_a<r֗: 2es@C7&*#¸ L[mGmj)ƝvMj~Q[&hkf ħiOMZFE|rQ4\EijhtՁ;"v;4'T}+!PڡCʮlW;1~[s)$tc-yWsNc$Ԯ>_c_+_o z-0Zm!ak-!~bxD f(N9F$ޤ;Y\5f SF-r83Ic>T7);3n߻ku@9b*x#A_z<~} cKB ]-sJ FVYN{!ǝI0g!xXc/[Fk"]vG,M|YvVADNtp1S :/iNR#d8]TVP ׫i]d?1ptŐ煛h.C!^ h"$ܮgs`Hs,Cwx5i.fԎ#MfL Mک^J F*&lLMmriIl7ir!0f9.IYNVm8:K,w#7P9xbȮ 7y}=h{n摈&(zh wJɰ/A;ܖ5$8~) pAE:k`弃ɭJS&B6LU)fsD{-/zwc +2*0;庯˷ jEQ5M H"KGg}j"X⸅3REA3yN)sG@dSzDYJ8{eG}BI׽W4yw/w<Q- jo[B^lt8\_ޥ.Gq'F[5ne=Х9铆ˡ^ x@(Q@e:_+:PQ SܓzN㼵L\eѿO9B83v927^hHPC1ZK 2Rݷa%-+rIENE)ғKGْ5ZI[hJOqN*' Xwr,m:L։PLɌޙ17s][ľ"Jmטɝ2n ]h63{LZ?mXD8DwLϥ%t_>TFrR;YfIM"_ԏd]<|!_X&W,d4֎p-B!uBΞEύr]H}cfA)nR4B}i j]޶^rXi+^0 P$GxffA(~kY*sR \Qy E+ nZ1 X"W1JxHP@*^;~b 3/ĭF>@ =]-J-= ['=dPa,p6&b&|(u}/CqTngn7U~O- K-MrA QjŠXȅX7%~ΡUߌFE=!;l8ut\3`G̯nESIM99]1xM;eMӥ;"1#7q!A Yf=Pfa?!iG|@!@cdSM~0J.r짭ѷ}Yd9/c|-hqF3җ(*1唍~{n)b :Po'9xX2< PK?Cݭ_.mm{gٔe,zm:EHt1XG FprŝyP;;\locV%;oInĮ.̘}"ةEqO\!Vb2`zShwnXSbr*)Wiٔ y?x£KgnTzg7{fŭN<PY //i]\ys}Vqn&=t0:/ 8w4.=Rײ^ڷȽh "1|8}^]x5Xn *>*_Xpzk{6ic^L]BhD1DVCǹ_g5i=Y*X\銚5KԹW}_qXs>PyZFN#kcouN5iyeč|V3Ңy}gcE 0&cw@2A{JJ+ٓwnTg$vvfߌ,WuMr^+c;Aomg9AxZwuy;;;fOy3 } ZbbgWzXvCFk`YX (۬FGB !wl/h Häwgd#|e4o~R5ԙzS$?4sXa}Fѕ ԸkWZBg{ =t=)gf '^}B\G>^윃x,8~գP6SY&YZSA:v6PRH@u5BP~ @ i-]v-F6va/X益ݩ+RKYQp¶ą0V(ڶQ嗙:{Rb} Y ,=i; ]`]f""&ΚvC}n3CːuRR騴z^5ȴ_2m ނe`Q9ͷЖp\#G>O63&[ `(NPK&EfLZ3PkAzt6;_|5 \ ar~kS慪uu+JMKrEM!e8SzV#|7YTTjV@| K\iMI +_ӷSR%NkqG oBFbKƬ5,ZMH<[ A8Tx$moDV!7 N4oؠ>V=HNoeu'&~L"To;gxR+FM}߂Sy( סi⏤~\hEsP;DR=,@ueEz?`mD-I߉$kp&-7| k]B< 0MEѣzF8Cu^_Чg@,b\Gs6" Lp@;Wyɢ|FhHYeul|ea>y`~" sGJW>v2)&|yH58Niq}1tTH@$rz傂"7.E/ G!/LD~; 5ZD O6y[~HNg|#2\ž}!#c-!ćqdgk6=t1WBʼF ˶zz5I)U`]B%E*8-K 4Prݟ<0`v:B$jܝ古L9QTM_F|&eB"\6*!%ػ  'N\]8ts {"幖lފq8|1sL B ?ZΡrHsHd!;&L1szhp9Ƞ - ꣸<Zު]W)Jm`8d93C'Qw88`m?kU^˪GʆlWX(2tȶ5|O.=zêYTnƊx%;BޖŠNIF36MHQs2PLʪaX/sk)yK4ρ]qa;BNI* Qٵؠ^>XDRfAf@O &l9ґ!E"U@\ɫ NI2@!.\bsNBTOU6=OdB7cPq a:{# ʗ.:v2w!QyΓ-i+ Xl CYܫٞ]zkg$/_%Om!4Kqn4gb'r)1^Y?mwv](yTrs,띢k`uv2:ך$S4~!΄po`_M3yz'$Cqn}{4uۻlh#aB E",H&py匛.\ٱKv]eRcx/m-xݑ_V!.4sܚԼ? jLf!d0`^.ʪNl߿ZiPZtc^ +pMڦL 02ᯉ nyNHSRQBoxZYI0(.Q.nf!} A/o?$ݴC "ra 'kvjE1Li>!{)lLϧ0G9ѻLEZ'6d3cWmR%G5~7kJSiusnE^WuJd%9vozpo ,\ ҤZ@O9?]y<,%RMK͠bWu֊)+2Mfj+B*I[)q43KjjCÌ3Ι|1<+kB&ToVB ϵt=W3zλJ}l}yRe@jøچX燠Aޢ&r[ mƄm_Z0mzÒS=)R!Xxip[{\ȔXj\.+kyGQҠeԵPVc߀ D42q60.:o^Ia)SPHM7$ޛwnKL(j#. _N"Z4–+cP^Cch1🎖%xs!ڄAVC. 5trBBOa}ʓ$ȴM;\QD9eQ3BK $|.6Z!DOc6\wB ˓"_[6vHHur@9CDt=4|-[L}p4Xe(ϭQ.2Pe5O=J9S/\e*jYYxx`! p'53۸:ٚw =>ߧ^{z\LAV"Z e{-ҦPG_3nl&nWRJ{M "~[1HӶ:. VT샃nD(< A/}jt3ij&`ʪ)I-U:ء唢v>_W{S3}A2k4OۥNDދXϞScs_`9e'X+` MG6e]Ss6꓁q=a! u?bTi!-['RC'Ж' /.M?W+vHvY!ȁ/ӫ:ږ+/2 xS7a_gkݞ dq=$jcنQx ;eR\=;PV (E tsy.n`QupccMBp{ZʓYօ_U(tT{W^4Kn֣T;ed -~$2|㗏C&FFœ}8";\Dw+-ţHcXhu'֗t4n FSF㾋,24lH49}TJg i7jߢ;VoӪx~_В[b^Q`=6F/՘3z|,TTU?nvt ą:.ƷqU}: B0,YmGAxTؽ^H[Tj.~ *f0 y%B@ ȝrS X):vbRuc_ +JyVE4r(-;ybP럴X"Z\uް/Iqsı,PfJ9 +MJ j?jq^@~@s|Z9.7[ 9LIm}eMS%8Ir?xOZ+JjF&?ft2X߱ P*C !!~G`Ux0"7WV_V;/'(򤦟_AKquC.r۫rn.vu%H-0<@LEYwyɽ(^>obw⤼xg}Uw˸lD4 bM[J#KuSNTw-Z_ Sq1%)4Y{Xd5Smzöf%}aw>%)~\ 1l׌K=KizuǼlԒrnʭ{r ujvxNpa;?}A"q :xMY[aah.\8$*GN םU:pVVw>yP9[γL/'P0 f8<`ʑjoFKt1*t@NPaVEfFi.;~d!J7L21Ijϫ lV'j?,uяCIWP2S\>;AҜ⑌4 jb3!+3D]Х}hYzuay,0ӦO>#  t@ćIDc +l~F]#T#ĞuWL jfǚ˽rAÎV:r0ٔ}7-p[k;m0DgMv#J3^])?x)`rݼv[(>&F]̌19 ?}nQRr=l ډnUod~jY׈rN& Ĥ]<1Hl|ګ˃jTzkKrcoÙtz\6|uFĸ7'H%Ib4^J v7u7.8-ؕtANOpoN~M|BBBUҢ_ꯎ텶o#f֒*Q<8fK+3ַS:C"Hg'=h^k~twM0za~d8Vƌ2x*h_tSzk9$~!A/~ ġHmrfRI)'6"YVگs<ѳ0UdfdmqqTWLҍU.7o՚w)v, g6w!INd[ 2kIҹg1\UFC;d:ߜBσ=l2gFWӕ9ZrQ^52 y?ecICիCTTԝS܍K>Q-1h:\$d<< 8k`&2@Q-_0vt)WM̛TLwLlCQ3u5!Y WɯG8wwGl&nKٵ-쾄:RU(83cu,(Ia^M\ 4Go 2ܾlv(g9F|٧^gy~.luڋCGQ)IU \A%lg= k!^}%2ayCW* ˦dG!cu>-`*MggBnnR3ߡ DR ޽6^}U H&,w~Ĕ׫;x- FgK4{!e:!*aJSKj޼/svB\Iދ9@-yDBx@"I4ByV ^Y w--.h5enrKF C"Ê2ɳ&(FEY7#t J+ Lদ>nJe Ɯi5"&A[雼l!=K [Rrvj0kB[/K6Ï,1ɜ@\bQvpyOLc 微'D;+KMu N'Vr)qYʋE*b7jeOM;0]hH&?i|1_4.f+ : %.N?RUQqi7{;hl $u0\M+ݷJKMmÏEqMR= %xSl hPsDZjGLʻ3׺U+Rt?;>%!k:Cvpǽ(Tľ\-WEO R&Ť.l(9}*ۯ4L UB*ZƎr#^V*k{!5c}RQRmӢ6^Z^8_¤f! , `nF7Y~shdQ'W2~Dn#0b0\5ǢFNYJǑPe]>ްS-.(UθJB\~;yكV :@׋*71IdsiJؤ=>53s /~WX$1ziߢF$q4{nӢTN+Dvd|5 "VXVZPTɊ[q=|%F+hLFώðވ o8OK˵gMuQT?׉Dk\"z| BKw1pTd'Peͳˉ?pf H{3k#&,V3_2Φ3kyd@-o(A0CEX]¸6 B MMklo{zM*N~6"D? )*7"6‹ qkh{$/\#:W$*g-7s%?ś 3) %va-⸱&kh  h*C+K@mAu],(noF0giɉA{ƽ=QN,=GW^ͤFm;42~G߼~0sjf2qLsK-&[׌ClVUOi#Pmx`,MY|\/zV})jgdf 1<o.eV*iS9UҐN%l|a CB;@) ior֝#4,`9U[=ἛAwP;b#GVq`+q"3e(X]ڨ.|u1t,xq`Oӯ7MeUͣ;\ kkgꥏn2U :P$2G+uU F}~;jUnިbjs}5Qp tYbƠ3@b5R6g34OTMXЯkn&DMۣ '`FxEl\ {TK҈- ~@G5Sz^uh66O%حX8LȄdPm&@YX\|'&;z逼oSV%;46|59‡25_Fb2L G)G:a`Ȭkk(Q.I=꺤-sxrkpo3(2JgNCgϜ)!6%٢%[$$<>х#xU*LZ<`b), zHIϘlF*K] BO_wH^Xeِe-CE*{9*.qWB|P8lb=pQËjޞ4\1#xb?q3W~>"%/W 9ڪcFٶ P!y]Jv|;&L.׉ #7ɧZXi6'zdPMsj/Y^ lY a֘ÅHh\C`0GRx8>j%ݵ.rٙM!ԫT(?zts-ׯ}WK[c_QKS4VԐK: ˺;mw RٛTpYf~&dH~WOeiI46@NvceCI9T!uE7mKA*p&;rU 0R"﹍rpQάpMO1!XsxN*)4:AAr~yZQ+*k5pCLǦNT Eԧ|[zX3RP?P[W*a+?Ho.Npͬ'\̷͖|~@>1Wʍ45k5Od'E7 ]%c͏Y^#XH& >ZN߿iv 38{ٽz-Ί7u9 #1)@A|񍗁agIW5r6r:_jHGmT8 [$/M=Y)l3<,x=s3ۦ^jmۃPGU^W;dgu9i -? D {9qK CR2*^R>ݨH!9?bhM9pYjٷbNkkw'* n:6/#/8ֆmw.xݏ׮v*Kǂ;EγOqivޚ7izd8 Ǜ9 Hm[pyE&?&}4H|XsI#er)S i ₾8X8ճ)2W# lS5a!M ch֨tT·!2usrn;A,nT/w&VCztyϿؑK`(!X&DZi\/JPuԀ^˩!KpJa~UvE??ٞ`ݵ*"[aB7TOG,c{=^o;{)>tB 80 ':8"k'2 7Ub>fp677]-<'^~ GFyp%é^*0g? T,ד r٤]qɜ=Ux6jU% G|ܭ+[ _b#Q`?Pz}?=J'< !d~Rݼ h>ֵNMypA@8),AIߋo놱Lg7ڃ#ԝ3 i&QQLt")Jn@{ԣqe[ 0'6F(\oo5m7~L53dH> % ՇP99\UMvv~ZFyxdL86° G]{z"F5c~]v FQ?Feǣ|@\Д7]t='>+Znc@ן`^>4*Ռߝ`aD) *9.kTa>.ȪOq vxI LJ1O~](pkH-ld#nӈ!$&^lVxe&ov)~ EpD&)Ϳ´wHuL Jc_폅{gj/0L Q`LGnY#A)@T''c#[ L3N^,$lr"]ω͋2'Cgdq #8ھW58AFc0ktQ%a0aHr^Vб\T~rܝ$~zZK)v'c*Ldomە͚(,{Y'pك=;sK 7l$Fq!5s>a UצsUL 1K(.7u7 C@Qk=lpÕhOwڸ7/=Us:sK.زt^i@ex6?% B_#B`,"2W6Jcܚ\]?;iRRߛ- ^L][LYĭ;s8RС5>.\@m;t@Rȕs"h5cAvP}<[JE6D鶐,Hl.5Eh1HQ)& E+J{Qd8ᶒ+Xc_Lh,3fwf fr}^8s[jQ?W$S PZq 쌪8⅐v~XWF| ƒ Da!魃HkPҨj(F0R#Ü ?hA _` (Gc`NhNY ck$AqDk-+Zik7ndП̳ŅL s 0hA:8Jc$"|/ʕ9ޒǮw>bw_pS⽽, J8>7v,(zkU<'!@JL{"YN Ma5VMP!0m?.73Ҝ:(4,i;>OL{P_l5R*NpK[f|@C:jb:UcbOJu_SAI]KP! q.{$ۏt:1_eӢ"&~4R%l8|n|nK4mKxvEX&/ſ"DRҳv/7 wO)'q*9_b^O:N]ن'9H8\(gퟡW81hb/|{3< >jG[w/˺W;ŭb}"`GA(3 M0?=rBrM) }[1Dܙ>HYuWV6q#>bj"bP5gϭ]54tx1̵)AV"..%E=[5`ȈRzеDUi읷tCYgUґ)r9E _'Bfb'X|RxG?鉢Y'&eM)iNq` b$vX뗸\Ig'a?P``Y'?Ň,3g~(! WllR469a:>ޛjCpBW:gdmġ7qZ06M_4mQ57ltj Zol-B$ ԙshedI&KΒYx+ǛJJ6QFPeqpA@ntW&c>5SBsgDS -J(QfCųp~}`aml%֞+;41=t' 42b ,2Φ)˝޶yڋ nӓ;d7J΋Vɯnd]]рƛ{Xy#LOyIBu~Z&vT(~Ce;*$m ߃u)4*Kd=od\mYY5;m>  dOâ:01ΒZc1W HaD tj4"*#(4$w߲OQXVu)b='픴hL%zSzih#JÆ++]![DUjW=_U*HQ_x&1䷉ʧ-_ﳻEs W^+_U` 劣ѻ-fnljQrjGkण_ӢOd9 PDCޒxAhdvR2ЗnpGZɏ, 3BY'ka8݈F~%pK_gˤ*VvVx~ezeIlNYPFaFA(M-i(LƂl9vWF+x"L#J*49;u풺VpCFh Lf0%&5̛:We^\a0j/}XgU3,mR61gj(&76]PMFhX 158hD]/6@Ky bD @Dץ|QUnb>ye4;^ b4΀d#%"l&]y-C?.|jԬ}[R*;eki,vq%bķ|pέ%gVxM7 bdk8ˏOG3v9 ^ %8W +A KZ8 |:8J7%[')Bf{l_t $<hܑco°N|x2ȱ)F))3H Dv7Mh=<'v)]u?1d'񅰴+q;h32FH0mc-kZ/,W֕2x]:^j{$Q;Ɵu*] B־ǹ=g'z8z2Cp_i5Α@ ؠӯk oascz&hdBomg`IU YU/ժɠlZ+\>Tp}٣ۗ}dƾwy %gI`'1^Ln03^XM[M"׀be..j*?Qh. cjMp0"f8p2}̇<8eXxo>>ɡ@sYh)KMdţгKN<2OJ^U*95 S%@?Ndbzc! lu6'8,o^[;==Bh_S/ƹ8"4ִ̆i#0Cn>&F]eS!'}y6p7%S{._=,!'|N!6t^tSs[+3j_ 2͔.oҝ'A>a :MҘ-@a j~7eP*w(\\W͛Os;0dB9{N"3oO\+Vd荃w^Nkr3U8:73S.AYzXLp^@o3aYةk@1!R6vb?h*LzG=y9XwML;r c0듊?ev_P9hG:Z oqz5L6@#D] 2й6э> A\_ma[\Χʘ[oisH:m/qoA7ܡ}2v!\B8͸îd/Du`YtJ͛ xkGqC/Ѝ]b@N cU%|;>+;8˚xoݬt\7G!!]laO4w6l+N#Hձp7DhPYDi*8Grr IC4NZY9EDK!\ rKX%F> Ab2_=3`ejzzuWU~ߟJV>fۙW(/^Ѳ'>) ~e/Z>2pAC_s5T&Okb= Ò=_)Ě%cwp]#/㏟Ӻ%FC|G# wo#׼ϖͳNhS?ٔkc)?YnGvS3UB7r Lz>'VtmK-@^W5id ZI^#?|jUIɤ:͎-lأ!?N oŕ2mgsPr>ڥ-G/V1-0/QT tuW҂֞Tq#Ml8ⲣlG~k6%)0d't l0:fNy;sNeNK6 \G'/q_aR| <~e33e\,S9lMeg37eEGPX|„woPE.򫑅kW>*l4-2u/fٺ|A$$ރm,Bxs6`+:tWQؑrc[[W:sAO{EzuLL#G]w-ߵ*SK,Cۗ.?SE%q':G?'{m8fuI3'v sjx#}~vI5z ʗ'<^ _%s]NY6{n-d6W^âRWI q_ExI4jG{&1e#"?DM(=~xʅ@ eǶrr-?x+ lozSWeMR[1K2_$o3'μ7gi/#7\Y^̬, <؀k+}G(B֣[}̮6kYvL ģwcXFr:a :kG9oV9+ J+!dycfW) +7p{G :'l"2.F ^Jsϧ)άvծ͆&k'^#s" g}\oÒfYu +{<6kpgDz%{aѱ.7}Ny8?% 2煒 /O|lzV6i3_n9yLdT6t/{hHs粰;T2E%t{AV4Kױy}}vO6r}sYaȒ#27$oxnHg" #GN/@&& Stgf)lWv~=83?MpUqw/Dit'uuN4V{*N7٪#V/䍟yX biG*6[29A g[LgmvPj*q*yiI\uaoZ9dtFTaKwp0* ; !H!8$ƢV1z%؛՗"2gѬ6PwOV_=X}U$"w d/gJŶe5zZl#l5/^nd0,S;w+g/CgO4B.;ғ3f/stGw!7g=N rܝ;pzwVbw(~jܣK30''QwAE|x{3MNؔV\|WiN۶.ӇޱLl*nbw_|׷®.5)a_Ss;?UAmV|7T;%xyܷ'IcOBUvXۡ60ە N{OȂiC=Pa 8@ѮPBy,/ۏHh;s+"D{@6~V-8g/񜻁l;/pۭ(] cxAs#! ID Y>E]/J c ]A>%՗ 28p"'8 c&dv@6~+=}.` z]@6,nVE["Fd~ $=,/Neq=qL8B~ :€ȂdH=QW ݋br.AGvUyj!G =s4& t+<`/`z`)`€U!!Ffd}h (( h#j(2@X,(%3Ljs̀h.vcC<7NcD4.〯@>M.Y0Cz2s8si `eYq[vX8 5"0=`ł+ Rzf:87l+@%"[L5U= tYXE3bd4m Rj~ckbeON=g'V-΃9L|/Mv|:O~pSY]{m5Οu4PsjzKK8`S{ Yڿ'no?/x̹ ~f}i E*.ʁӮFtIL̰)NXjR֤]|Il,*Sd)ݏa)*XUVF7ۗHB6IlڝE22[KfeNV6ZsAH".. 0J`RX/^SfE30 [#i"k!l[\ϢF +x -- U!=(ssM NΜ_9^ `\տђ]Qȹ+ZCk8vj<5;ho/Ac&Հn ]F)## AQh7zEwY [@n֯é:tnurp-PP+ 8 RAFUG|+0'p!dT|ڠu X ݨN1[W 8=$u:ӇSx,#>B@Dafs0Mx\,K ʢEdS#NW%UN,y$i otPjuMߦZϙϙϙvϙfo_hk1BNؤVGCp/4yI4FI܎ 9Y5=5M+^/aNfq֧}xE5X=nߥ\%y%}dVߞ_cҖzv9PUԓ G3|-Gw|ZEۮ2߇T@cQoTLw96}˗8fJVl&T'ddl}@S_h 1%.aӏJf5kI#ktǁl&:XgXe͂laAl, `LNY-AncL2'XOW$yqƠci\ 2Zב?bueE9 w,#'37Ucmʃ35A3mfT Y5&x%hb㍀F^ S~U]~MVn5 l:usgkHUh#ݝ5ΝtN<Ξz;xmCM>aqkE^q},Ժ{TCq/弄#&_{B!93|jGuƾ^zuo6y/~b;B#fK9=Uv'6 Y/׊xj5grsC+#hh2d4DvR(OC@" HƃHJ#m05Ol$ E,r7Ȉ$\5Du V,ɓ^!<4[Ίq\v]fIGHc9<OS3qx9eNGliKL2xKIjFAלVuQutmZ#gNd|LhJ14 USO\^u(t z*m<.aWϿ7!p*` 9S3n./91[]Ehz6t{w۔ {)qڳG=KjMóh !QD3V0"X`ZCݬEw/(FJs@vƀa*4q*b; l , 6c8&bFK"F>4(iT("$eOfU<'DfFX)aB 15 `R8 |ఔowS2N RA6/z<="` dhQ̍q`$n C߬4R݂L d-xU"1Z(ZAA1~紛M!0dB8*`OYTdXvKd0?Fp1fkr9H),K ,[s7TK&fUjש"Wq*![{% <n'aY 5pX!2Abpk1D؂VZCFSRk=I A.QԸw=:-!Ó7nUnN6S_նnf7ts-J~OVf%IGغkKrϺ>?V-&=YiGdX81ok_5sm/.LNXa|{rno?827`_L3N7PGa֣_~p/-/VRĿإfi8,2z(O z^ 7Y=/xgN5wv$y#;REVL;x|($j^3I,a) ZD ai ѫ@'Ń#(; Kxm%s O | Ix-y?R鵓ܖ!f$c) /Z+9& ה[-%?iaqŁ62"'9Pe8CҠ+dmWY'uud+hL@||;)%0r^qM rAecNӽ9^6Ƅi~mwbw:L-q0j٠t&X-¡U`4MT0uTۤiDXiQ  Jʴ N^Gܤ $><&DbN+C1.5#sElɬ" B9On,o'|2OkB=1 Y?0Z{ׁQ,[, c16`3(H0T4:p32 h"IZ X.R d$3I1NBŴ:d޴#s<* F/TUU,vV,_[Ò@q$wڸ3-kPW"nF[o9o# 志5¢اZGNJ_ycr$W+yy'N\Y=oжW~]}WY_jQ_h`ҙ9=vimw:Gwٝq.~)`Z_SD !@?&&j {ν;=97fGv۾vꋏ7nc}7Տn#_OrL:KR51.Q8)ش2[\]dq]oX} :x/ JtWtl,|(MXF-EYnm25c~; ]%BeoJJpr%PZø.pma%c7}g$m;kP/8E_u׮VXh ם]8&yS;tnty>ØI&]6!\7pClS(\ȱo@.s]?uyAP]^i\YE]P{CUw)0ZE8)sJ: shKE~4t3/?|2g%*/o)qb}['Q[̺o!6|`=ݒ1SI)7ܒ Urv{<ʐ~cJf c. ׏.hq%Ǿ[/jjM$hV}[)~C/\@k(΃gp]E/ X^-fJ Y7}L*ݱ} ~n! u  P ̔ůg2ʓU8 7v'/䏅_ÏG3u}>oWOzߋ~_?>x ~ȥ}O e^O7wxcsws7o_m~5_ CۘzG;7WRXʏ|Ig zoC|fL"6&|bem7CʗlEɹ/6h%u wɣFfmڔM&nf.y1]tɾP#кb0$3w T6lr , WCR=tGڻ%ߧGIЇ.xN<+a`SǥLlP*H JR~"ub7%6Ư 2L-ngMCLY;)dj YžtR˲0)vgq]V-+I")=dpoL?d&gƵq\gAI 5f=#ṿ͋v N/oǞ:Sd/X={w/G/عw/'}xM?;LFpGT?5yO ~%LNLڲ+eQZAyX&7E ^L \.iQR7$f0 ZXr1\\֓rI-uKq-bD֦]"\Dn!Әn/Jo ;ຘ2/_NtqKr^S\}][%b ʕ| vS~ݝuw&SUFfp},p]^.AݎȃHyq}6w P`\ٳ \*KNpS`.(߰X; _o{o aVh )!mJ=aCw4\C Cz< 톡K%3KPŎ e}--9%_tgj.sEbFG B,4j-& ѭ2Qp#15 `!LQN!f_$t ,$g:I_N]IS^b\'1RX\GD: Trܭ6cihP|֠Yh N -,AKC@Bӡ&>7go- ӻ'h0N9SSL(0,H@ONh0cdO)ÌxuWϯ>~q~t2?}ƟP'[kwܹ|rZ~ՙ+K[3k4;<|rajora+Yd?xnɷO=qmnn_5f6moiֶ.^>0Gn?p ~>mퟛ|e;^SfΘ1sboŝrg;;N˛Y5W^lo7/6[6/޲lriz5@٨eڕLyH ^..~K˫N;뿺igۻ a&Wj F)<1aL݇wb(&9;r`80WrO}-p'/n._zw|YeGhe֥"zFt7BOܺ@ԜZZn4G67zW!}ōcv WW2T#|@ kM.kmɻ\MFL7Z&?&Ѳd|Fcerl\ֵ. m[%%M˄hu_ZwxGyytIں k轘d`Zul}bZou@T=/'?/8C2jY V-}yP{iκndvJVѼo5R%k#tqY˺m0jgɮ"k;edhޛT5lT+Fd#gc>1=aOթ^s~1Ppu05]tjKh>cyCm kh| ?Y4 WlYQwa)5A#dubY_5z<`)zB֐&(}ZwKSԧzB6TR[4AҺD&¶p.8@x>:yW9;Z[N篃ϵ^% Y[)b9ϐUdZ [5`H;žP'Ypm]L#dW-6q#4p,Qm!9؊P8/lwԒ݊s ck.#E{$kaL~%ẈJFm]gW3n).:%_(Ƭu4dc$YRB|NX28يWqimW!kI?ǨI7Oay$ m+.X=bK#iAkΪ@cYus9~[d$o*O+ccE9FG~=e&#I o}~ֹv5g\ˆv5i/>"@}ƶm=A2m*d-a~esFNe'MG2xy^o>zr"c1l2`u5,Am{$C.BEPIkU17) 0ApH\x 0+d ?'O;YEP]`9ʭ}'Usc lYk!Xea8 yuR9'G>/H8eb;j*7~ ؇t"FglTˢrl&~u0!7H:y sK0T Up!ȖE)^AXLKЧl__ WN#aW A\p?œ$~CKDa.Ve(oIgӒ!5r*]cq~x \HYKNQN G˸{+mxNֱ,Z9PT/IӤwDB'iW8(뉻~!zK()p8.sNQbj,ﭟlKWW@w"%f"]gRm $'Bդ@:,*a.kۍ>mאx9c2ZX5'#- ˜*HwH9xvM{Oq:h<t@'SċBax&אw!Ijr|=ڜCk쟣".0[^!iQFcd#%LpDHr 8sN,=`Lx/m')T;aĢ:8\gŸQά/:_gQ>\HH܃ϥx_qI"Z{KA! S?$kZEGJe!(GSӹ]]Fy@jUe2+,eup.t]ҊjMO,r1)1|F^ZXݞ:p;~Mܩ^Ϲi_\l_l;pTfDܡ:,[B.<oZX-m6p >Wyѩ}ōͭތjVl/-m<3|nnS%.>{`Y v$Wnc w>g?Ɠ_>9deMyIHf,/,J hn{F s=2!y36]UTkoNۿBò/ooώ?2&Jf^"ˉB' v}qj:14E-˾Ɵ~Fh}T =}4; ͂\a8S11=n70,rD=0B|u;}g )&C } F&XXqW}Ӱ`rۆ3zD'm-Q`D7! q[cW,$ږ?*Et>L!Ц ߴm"bA:aQ~1f"A]sбg];}oE0m7tIcu濠F׽6Y4im$mZйI+gN`a@&J]9VSYh4okc^iy ~Omf/kǬύf7jエ]].ވ@YvTjUj-׵Z8/ VDl׎.*MѸl6*8&ċE⤉Ջv }MTAN+ggab4يqDVy}VBJ +7UFP?V ]VQV JPQDK71OV *ZsҬ.0Lx՘)?=FV5Z9%c.O#7#* >moE;yc cg_#E},侇9N粕p/8r y2e⛒xmNńi#A! jҝg~AXQsK.2'€Zw2b;{_{e5x5g&tHDv}@&~ԽOd2 "~%7 r>YȗHE6ŀ&W1:Vs#W``'Pp뺒2Z@3΋H\asr~'LAnSbs #] E\Iߒ=4(fNt\c -ߠT  ՜&"/F2NGd柆П9W##qw/nsS_Ͼ~зni*Նfj[`4Zd6̐3h*XN8FRL^uzY&-G#=1,9}nlDߍ o]ri6 pQD_uЮ M`EFn_L VsUȬ $-`㖽+CށHQd 0U˥ ؘL=*YJ'$g ۹+ |y8lV(Nj~,Sw~}cK\ØXWͫXX@K,{Ilھ9=,PHmL5ibX8|yEk%Sߺ!EU ?oOK@C5+-Y)8/mϤ%wڼV>hd08jcī<Ĝ䵟v-LApSti-یNۉl֤Pxv9'22nѢKQ|u?Bd7V^0 LhLmG-fYm @BzNuZؓ^p=^9WoXqVnj$"BG{,tvFg -iI0¸LaD XyX  |Ab} w2A V$yIiBkhҝ_u9`Ӿ10vmxѥt7i$;UÄA_N9LH2{C3b~BgXJ Ky繾?q{32Y/Am$TChvx@Y1`P`0e%} ӗr06R#=ƃuFfHa"X?4Dɍ%ځ!b:':O4B _k,bvx[GǦ$EH6'b"`,6 "Nt,S'xX6t$QU9[ dgw@olt\4?כ|)suܗ۹8Eg[Zt>k$p,çb En$T4vq|M/*K,B"n/KzqګDG3ڇplbAPht>" ?yS gdAÊ$U~9כ;@[/vgB_66rYOh/ ~$0i'wrf ';G6{{ Fpñ@ix40${dm,hc(iշh/bǂK$PV':,{pi߳|Pll_/8Kl Y۽y3y9PkN2j6hs~{ 0Y(& +A s=M`%ӛvi;մMi`آn6NNq[nrɪTjvf~b<9%.#zcLdcrv, L'jMewez.yu}N^.P=m+sJ-qo2M']vZwٚ(yssgO {Dik5imReb!ljl"8VjAi‹;d !$1<-/_!RfM &SY(gY ]T87ǝVސ}SJظM#.0*?wi8MAU{ W $\߮WSJ0fV9}IqNəNDQ1CfVVs_N֘hQ.^&6 D]l,9Hl-R#q-ƛq|2$+SVSfZj*!0l8̔0F}2qRj<B*ݙ-6G'^3G 9R2r$gĶ4t\Nm.-R7mЩݧe@9,J@^sف.DA'\_@g64mkAX+J"}"UKʼ @QrE:KQf>KQԣTeÙ&K9RbZ+޴P6;GH||ϪGcE\oy:t78tޯ4i;1oI9bh=9 PΧp?mУm_uM9~yd{!N4h`.rIĖ?:n?gqg vCgo?s?+mg>Bc횪A>5˂yM3S*%׭VZISҏ?w-A_Fof`a;9}'O@O@O@O@_tW F˪µm!d]#Sh:foxKrUqgJtJ+3Vy&uID0_B,|gIUsԚL3UM}U)BKӬAՠeT7w fKuS:'0#SJ 26xH>{̃xy(E1Y1b8LçfZ.NEo6g0eճjLr!K|dEdI}s`@9jIV**#71`yᢽsr~. ')*ihIcdh0( J(5N,uJ~w]0LWh]6"j3O/?kP)J42dt JO!FU]Ngd=86޻^nnڰgp%tBP ;.V#niyV~@e11~"6e-|/P^vV pM=0BL~9d9~\ lH33y5_A`MtR):q02US!V\ J ~@3U7[~Yα9LJ{e9"?zA;wݻ6WY:_]Xʭ)M/6/01$ @7Ӝʾ¥ҕCp%Ng ,/Z Gh[d$Q{sU2+ܝʄ"HP/Sģ88~&܄ELudIJ],DruPQ[tcK@OxsZɘ_0YrFUIْIqlx<040>DeKZrU݇KhPOM}G;7~\1FAVם۱B:Gn[\UrqB7خۧiYubF34FV&|ɵFQ#7#6g.'Y@45ǣ8yZwdEDA8&*zILmsł%;Gp`t,0ҝ,̏V  ]m$8k}3GKPUZXV aFB69s8${o,VeigTKfddfDdddf/H!eF:ޠcx@~ԽdvިA; F3x>ePEͯ5TF\Z*r<^x 3(K&} G}>^Ƹ)LJ0,?()ĉ P}RCӦ(%3䡏~ޤ/cs}L1q:v`5,+Hk| ƻH YFT~ca=УsURiNVwɿOhzJ)j"P~Ox%*IoF2[V< {VK F"/Z_\x>: [HSq9t7=} {`{#_nn%K|a>* YD^_kה, x 3Scx$ sŘI Ml/Z&?s<0^$?-_* 'BAI=eV~@DAF}3\qKuE!#XxVUE01}М}T-ԟmP0=+kRū5 HӗTb(x3[ӳr 8=MdRM*L0k5M,S6|)ը}/()w=C4yC;ASoJG2h6lĚn"Gꖎf)܆W;_iVOKr5y-HZȄZ\XO_2{afqz+nʶoN/糑/u{^6l~ !py>[}[?k{2!s~%[}u|;?3p2;?W|'|DB$Dr<`ڠwwڬ|6|w*D> dH S CD|y<ЯYŤsGyߍ+]er;\ \x} TO^!L0L\~3ubh.d6!5GS|`ۂg2c7Xvm{wLpT/7M43kxun S1@! 3ZqF`{DӚ7^B$yUA8!ghȈ{]fQ1>A018jv:h;y4#-Q3-ׇ@AHRY\]NАۛ2-0>5[!#;7dnh|bwuw ҡ(bigC)ӐofwRN/|ꭚatzp.Q @HXE$~_ 7K}42n"`A=?|^kJ!0L-&}LesYj?|gpY. 8@Z82ŶtN fxH)3a(gGTiҢB ap *Ʊ3~aKwle_/f`48LnO}.*k6"l{Dԓ յTDCؚfB#WUOO&Ww[:7yc03>=b)?#`ݓNi 5'ˮ2HtM$~AD*CltwGcTe&/7?7j&/rζM<`_͝żw|[ wfzcU[ n2[:p3u p.TP1ggL)3 M嵀`|Y܊<0.[yeqkDLV't# rYVM"me1DW/'-tW+%G W@nHtn~qPT= a_0njWlA崫ݝhdOd|y._1JDu-fd\?kG#郑(,[NFށ4w2'<5.'Z\]D.(22L9K4BU}_|KSWC~½7<lĿ7"1xvl?#GdavdpkTSJ|/NM#hh}?q`Ulm#|p]&#;MDqchAPRnf!hna[3qy_]ӈG# ':".fv5:vCʞ<[#H׌"&7)B( Cxa) FF\x`{Ps8Y1{PRx<~4FW]OxmS!.PyVy7_]: ]WPl7R/LgÛOhpaܓ{3}BT)˻8ƈ.fAK}~4=e0iR[>A[6yM'#k-iw ]6'1?q/ru$sɞ:J<~)rz"^pd=H?v lԇk>\ۤL^=3?x6sVitg/x^gHz#ZZk>fݠciY.7*gxKfj5kz"wXkT/#߷y ^=U xJ>ψKZ-?m(O1kH)^"cE)/.r>)jt@à 鬧2׻Ii# -E Gγn3SvsqA\%ܢ f-2a5#XO#_w+d06 H{Ipqh\tv\ppVnFF];ʒl]2xn╁BIvS[͏}jmKųat(uL͕+' ;GEECM#NۜjVҊuO3|Qh4,&^C.q>nk\=Β#||(j?K /o7y1@X7ڿXi앉0ަ7crT| OS!P`9SZb|9W' ߕbDJCLoJ޹>:Ս%>PNo/?:@0IDTZR cO]NC!\T\rgI.gR|dB/IGʑpp?7󼱶ykh8^ЯCsn>Zn=ߑٖ ʑܳiXj!GQ bU}SgX˪_teeuo}\ʳ֝=C3ϣ~~Xk28Ґ=B;)pL'O?Gs(˗Y scj4 5ѭNԮ6`ZXA^vf- ffCL𛐜ЛX4&_GFLU ^ %ͷF8m%;{ @dsPXw3y-ީ#lXxYNoXݍo ?(b k+ all]'fEgiOձ//R1&e<bWbG40"!q8c[g"RAWɃ L/cq쪽]/cגcS?lZw2d2}+y諒C{oq^`H{IsrE.rCzˌ`5F55O\6%I3(XڠH5bJ<256sYD^r78bW/K.,VZ)ndu#:kd@]z`Wʡʕn\ LڡѤoRˆF^ş`s^U嵳,HW>۵^`y!^*{wK3S0[Iif!wrvIrI.ER8b6*-vZaƞ{NG!v Ikcz_)\.5-ҖWs3/k7=sz7v(Cyhch&NՁ_R[~\Ph:,,? a#WK[mc!nŝ%nqAϱ$A>(wbE_t"Rst[ɿ\ʝ^̒˓Iyyri~]ԏ8̣d]Eߨ>'TU:lo4>OKO3<1L*TPԱОx1QN˞ٌ 2J=QꊎҔ{{Ts}=2sl4΋ ~2n8_o ځyeсhņ`$~=YLַ\Jrv8 FW O +M_ ?J߱nL3Ti w0V?fU)H+ȰKhd~CPyH*=f ߉W~=jG)#|@cv'qNaw2U3@ʋFX K(5T5? hlkA@>r5(LOw,+9{wY}{{W;W%u͚yf Sݍ*JULV& laR܄y"2_'≧>Ks;; ^ )J,[&͏߅}Onqrc+x-)r|JI VFx".$l_> VWVf]y(83>&5Pe>dU0MaH c]~.F5!ꨢ#@j;>ƅ JWq6(z|B@rEy' uk[ ˺[Jn7Ρqj5%-zcT5Th~yq=gCsK6+S4/O<\41`m-awq #bR..n%v,|P Q!a|DV̰Eܨu^>7GLt[B~De]s/=%p$.4"@UJ/ eUk(23Z(>Џs {hE6v ]Vr!^Vsw8:rokڑT1GU:k'8sODUՍI\8 Z_:,: b@5-opj?COn'''2D J_[މ *Lb;;I˝R:1ԝ8Gs7sLQ(3P Y2@zLI6n%dmlTLn/jCՇ85Ȳez瀥_ "`CZn@f `m9KMnҌPSǺW 7x*!(lfӣ)|96hDiK(t@!]=nu,u)Omfj0}3n6T0r5aWMH/')I1Ciߎ$:GbgH:d_xVzVwj[jo児.,ߓ{͞O @;,%-6Y8~F%b} 4%[KМX{/߃9Mژvh%~u!w$=^D,ůf*)ZV.c `B苍]ިl $;)5^ ڋ@}+'PQAJd[!0ׅH5 Ek( B%HP7suV#*>3GZ6+:֛AZh6Oi3h*|]Mp!Pqd7ې<8, 1ŮՇwwsO2 n֫H#ycР|\dzIb߂* Fh%BAh Ɔ22kɓnDq in+wɺTY~*dG(@nrj2$Azes-M,i,L'Pl*+KzOm햻(4]IGh-Sc+)Ms}]+Cv1(ZZB5NjIP3nZh PBGn]|Zi=G!1\ ͅyT)Ph?yC( 7U84!%+D `f`@Q|P0 SsER1] 1>O5˫,Mj'74*C{axs3!1 FNJUkԭ ! /pQxjçeŒs61MXy|Y_YMje=6uc=ɥ _ ; C[BE2n!5fxus.;bn۱E`UΎf @th˛hR3gⳜwcR ޟ `>y"36vap0[ z{qYg =$.KSrYKkuQF TtT MDŇ93桓Hq51$`׈O| A.;oYKک5_̔@O[Xlcw3SǜtƸ! )ѐ;;dFvL" ,pPMzI&/خeN{X-i׍ݨOuIXeC$XJTl,ygʖ<6HrlP+VScn%:fa. aY/$lө&4%Q m9󨒥)pYC99<_p<ݿ@&cM:s>^#8%Y4'?JE0 9TT\,[2P )_p&u9d!9^{eq,AH@8_ ?Dh51t JŐU(2xQs結=ctc6oxx<?t,h9yriҌM4jsFaўuza2z SE R,#8"2Ĵl=)m=Aؚ=`2+ מּxzPVv—w{d|hܨצذŊὁ\5NM UFvXfvGn _Pr㰲h}YӪꕃ}Ci2wOO$ N)QJ3XmSP@ڙ0+*|ڵ|znFkl ʓdSeݔ q,^bhc?\ L(sA [lj16hJ.:plUK jH!Еm𛮽UձZEL"'EBUi1SS}QWc,ݑ~҃zNFݕPx)[ZQg;c !ڇ{9s͵ޏ҆qPFgjE@M$v,EDEE }D5!N:yeKɕFw2 U6\]UvٛQG^vC&Ctߩ]-pˇ$B&t2rަt 6SŰ84?NS'嚛KV-b}Tvh-:Gu,+Qr8?%߆u 涝O[@G g;3碖6a41]رŕ;}ZKEgޝۣytcA^7[vF#V&{3$nT%IhwoVPR7N <Y+^0 [<s0I+VTc`T"f&o?oZv΄LsE9K)"w% L\E r%('@tѫ'o32&WEby'rޑz|Q8q;uCBlPi%.w N=g/sO;5 );xς (8oAbW5{FU|Fs$LRo,)8& H۸ Dy[Uvs{CE}iPWB)u^~ZZU.AZm\=tQcT%V7UWڕWG$ EР0h[Z%jZ3O {{_.vCԿ s9@7HO)3MAA"œ EQ_F>Y%p T]LȴY:uӓPQ6<sE”U4zC=bAWv; a6x4FWfE!HhG=>N}FtXϴqQbob8/cGU?)@0Ȑ'BH`{*N z2VnԟiyLiMuQ ɼM(357f;2hY,]"AMԖ1*/4(*/XO5yDt35V'ltKs1}w'Ò B?hRJR(ז> ⌷JDeBr.U+4WGD΢:1܍mR,493J,lH(08N88ШoY@aYwBͣIr oW%eXdmW:hƃ"p\-Wd^irATR68i X7BY#np׉i(6m@KPB/"1/.m4#-UuyYL*~":$GB:@RnH؅G)FU}E^x,P[|zXQOE{+G׃zP6ALh;wC{_E(!ШDQ&c\ّ@٤]ڦ/B _hh\Csd0|ʨ aQQ qv3;B : %]D:L֩T>pwmwN> pb~_kj曏zd,u?1#EZЂ>6k389¯3ĿAk'^ɪJ!"Qk^xr)bkקt"p3B2>~E.w{۪0j )j r]pvRSj]tꑎ+tpj* Jv9c]JktkBcϡ JʁQ)G(9+\T5/BR]Y ̚bJvǩc|TM)ݞ𡡸=l,dyՂUIXTb- H/6Ǔ։#mQLtp4! u o4WxJrѬ27s%M3^)~[%*/@ NtҜV2qp/00%}\DW7F"͍3/Jfh2ZGӸH/k׎fd)M!<).Һ=i7u\4b$ʗ fv(" ɼkPyр|(.PeTX%E%MkŘ^$~)bn8El,+l@.fV35&Qc0GVJ ƙE<:-9MP͟li:tZg #뾞4<?T2 q5i6R]zS'4grY 5@OqaP7}l(13Fv"tHZ›]]"ZsMqS_1oԢb{UV픵шV$-4Z3UMlL)z\M$&eZ\ؔHߕ;jW._Đc}V|QlVﴪgm1l*opV:fW[5[: 0|rb7rNkExZt(ҤOMj#S;,ӯA_xvruy[m M7Oa~aZ?}cօ2]NDM~(K'z$cfJmɎS +` ,R9\b^_|.TDAcA7MwCԅaXiSIm@;ؓ ׶CRؗeSVRS<Ă/Yt·tF o79 #,.%2]~yjg,PlȋWؗ#Sc&O-609Pu" sj ]hd"'LLu=O$:l2A 8gmSZhG^hfrjF!LE,+v`.HS*5N5m9<8Ȧb%oHag6mg$ f B‰ӱ;y]AA/ [rG%lS caac 9oMKts%C<{#";# f/(/㱈JU7 B+1h-Bˌ \!x^B͖=F3r5.&MTL^^Z<U8>*S֖F(20_(Do\#,BMmZw4pd bO$yhad - t$5wMj|#M%i~!Q&bOQEE*vۂ@ZօY-2VߨA.Z%6[x[d=<Ƴa<&n M#J5"ᇏe,jRIޜm'qV"m;z)FCU̪,ѱm;<U()8.[$ܿG;;Tt_1W665޴=E":#M֊qϣ.]V=Ҷؤ <x."wGt6Y \VԐ,7G2 }I>{ mx9YvO(P:`{[\V8l.+P8 g ^B,Em<>Ď Ȧ7.y X8ېZ/eޟ=r]G_ hp]My]TtV3s5\JpBLDמKZBi-qs WO- &TI'nh%\??^6&:=x@)X;!tj~NJ֋sR C/[Ҵ7=|H|gX{yVЛkz;0np؜r1lL< L_ncݐ61;CNJχ&lc)+%[ `slG\bݟ(f&zHLVuIn"y20im%7#y-[|O8I{3*ojOHsoVu0DV9gsE:Ì(mIְj^ q_GPw |M *rX&qZY`8Ny=XΓdSsHoOW bVs ͑f9N~Z>OgUCг|[g9\3ޚmtu&j׮#Enh|Ҝ;Ahw\vl \1YMZ~HOUQa һv҂8`AyCZ ;*NJᅐ[{jƐBFMW)K_N΅ZiӰ"Le9E}lk%[zMؗQ.ζrD$b7ᱨt*;P*9}QߵH_vLaNȘ8}/e+pMCRe@D݆bGLlNHsw|OezEl=j_ý+V+cџdlN15 }Exѥ9)ԚM jw8Z[uس"mSдEŒ9=e9 ڪV&NQNꁅWΕ+Q+G\ztFz*\jStxj'mWk .y`֏Nl0as-{z4fKxX̞}QP].G+ʵTuXgͲw'nXH#>yj=i+@ T@5IbVNܞFv39+U!k Xwig>wb6!MuZ'A9y.Bǰ5:J?9KR>[lB(UgjU/IMzȂfNr ;6ɨFS.zR>Bވ^[>}!潛m;*Bko}@r𗇿BdC4!q;y {B\^ į&9vz;Q|(ckǂ4]eOḞƳV|I|AĩM3@ayjBBiiG:R+g[+ 79ǽʜ908njZLG8ۧ@a;r*/ cxovB-i )Q(f)nIek =-lڛj`1œV"M[on8Us$ڭ$Mv$ԩ'D C KY.הy +S ]¢ԅ෶0Ĩz`a }Y("ޑ9-GFIVv5q:;ߔdAKIwFb fjEcm#qu{;"[I-)\Gv F8u0Q37A'.wPH45ߧUqfז`Ix+Oxv(ͧiUݸ1s)vi(o/y(h&D-Fx9>fllu z7\ p:LezZY1HƒVJ3ݲ-{ )eA)G'n^ro ]ʋ֛:CkSzr2M1:4ZQKGN%|CunQJhSk5hYX5yM=n{@6jq0d:?UW bhB8N'$޷^_!l)֋iyjy{;XM5O?e8DrB 'r֟@Y]KlD;-ڑƮ3`> CT:2#eui<cEVV;b-0Z;aX=EZe4Gے"xƻ3쵒؃@83bD3$0Ǐˢb/TGhKUB,;k ~9&9 2E"]k]ml1b&:3H9*'\tIs!l^Awq{uN:IqkwViFf|;nU4| Seř'M>.'*iGR~*hp=;RG3g4wZ[g"0LAaөZLd\SN+.J2Y:RʲvJeh!i!cwhc$crq+@ #D19`(ŒAI$@[3Y_Cis_;qioo =1K C lНu&Ƨr#Qޯp'qNRƴ *.Dh@\B 0 et*D4H7*m4@[ -N/ݩh $ x(Fz ,3Wlݲa6.T;GzLPǓ?@Av\gA o`hW="r7$#n SZXdzljKT8w.#dfuw̄S2kI9򔋢-.D@!ܴͭ kڢâ7V]}1} v}IddฅNJ0iF2B ~ tg%QuAf$ǩlhtQLI bh6[ t/^8`^Z! e Rˀ) 'ap_vα}:ۂ>O|0ߞ[w5=Nů9)fb:=5辂F [!:{O3c/(vsR=n)} b( ҜOH#~@ө_Н%t2Fõ$^dJ\Tw;%<@ТdIn#D>Q \lA7&yWQY!-zT)dv]LdCXG=L=K}2=KиĚCQ# t])$B&-:iq14K }1 0J20@ Mn0`[o2~le?'52\v[@4uWĺysPu{Zcpr J)R=2JԦވ4%c)Uq*5N L#pjmQw~2"t@59#\ BuYNc:]#G=묞By$ty"bFV!.ƚi\!ڵ &L9LgMKz[%JܖH\%}밂VZ_B1j7TGzg*{HVٰ:^(BA+ά`1 zC՜j-J{VHξK.W~%.,לP\ J\@.y )U˙5ѓiY.)9aHhHPNe e̲|&j-n F'rpR@PJDȮ]ceL,\42/%*6Ȯ%V H.K'ɳ q=10JsHY+5AF&>xp線CLhuDiUL[Rj]g^I ګn&0܎^[bbPzrqXrcx%(" )# 3lH(6cP!)$T]9xҧbϕ*5.C-Gp7#n&WXM{@Q9FZ:v =5@~(Qq+t*5 kҠ*%LzV-}h'(&EHc>wB^) md&/CJ|͸]cRy" ƹ3 ɋ`m5:e9 ٦gc]2" p|Wvt6v}n = bTNmH9}Q[g6JB0x 2t"Xx2[Cm\* uݬl8Qb7С0YtQl ީ[aU}=+a9^y [qũscĻO\䴅+a7}k %{df09Oszx>wCw ``eN(m%yQlug [8E*o w{n{!}\*FVvD\}HDh w{ R;-5H`e( թ^Vtɺ: CtaȃEt~c#e=(hs:pq4KՄct+G6H.qYI,q)TLp}Tm6Ej")Ņ V`a`|WCJ#.K5qn,]{/A9XyCjgW1]9W\pN]jϵ?KRTaLޯl-wSEZ~\j yfK+3S؝ĥs#/l(ݳ hA$-ϲFA4Q[hv`\sÛ3k*X^DEZ =+ nϷ2;1ia ՚;8E4OUj BTQc^d=śwX:n,-\>}jDS+7hܬ> )͡iqS1Wb)OYbl*!gW>guqUq'QY n#j,MQcnWN$5Ӂq2ɔԍ'z!8Ŭެ~.{ȭӍU1kQ+ke,s [\=W{ES;ŵq-Dz3zSW#) at td֘J՚v,22rt;hEu$ݍN4`,яG sћkvgJ '|=G2ZkV?/tzedb?6r861;#M%m90cbd(r4 z֤æ#; /džiMqbN.Ob| \HXE}v-w!]H|ޝ'>{-OS򼱭w[Ͱd*9'bj:rK:a$cT|`. 9{l kGg{bPzj&J14!VZ`p*{J $W-KJ"xA8iG7 f͓DL&-PJBgє ^!Wvٵ=g`Q|cm݁!]JYLnb\l16C'c*G:ޯ3nLRQ;jvVpq:~Xm-D+sfb֜mq6fnmu:'t`K+~oy=S1b*EW,S٭8?L YŚdYV1ShjIgVV7u=$j:jof%T}׶!$.Ђr4AmLN@C>xPC1Y00R;+9l U~}pjK=Vː<)"Бٹ]jxכlEmS_N[f6KVQsJ*v@dӱ Ɲ|ػ+M)?dr^]L-!+ƗxB5vy qpѢ@zO4+l9يAUP7@vw26=>fuuu@J?>>X  b(jU5ĊՁw]+QD}M=BX||_c Ž^)΂{]>wZN6ZgAP+VR#hk(IS-r,57#V)E-1$PLHјAYOV9M?NiC|BG|kE?7!aW;Bo ߯u1= µ/f<тN Mg"h]5,qx& -`:#rsBBG%Y= J}DPZ]/;uQG!˩~)Xr_dSuܪ[@a>ϰ髵z"Ohz`zQGrP-g`%K }V.wz}p9YCGdH Cq(@'>@J׮*M#u1aJ@#xٴk;LSLS">Hp?Yk?' W-sݢ#]ǯ}cȕ4[g&/;HU{\R@'lֈY'JG" R;RP5J's6πyj`zuxXY(^)Tt,_x wJ-I\⎭uL3P$z~~lĤ6Sxne7KFF.Õ gx7zsd|ww;y}7< _? 2WO.# 'r/(v.`23og6Px4K}r_ëunp?N2~Ig~vߛ~ ֳ0e>%uf0\_d~p7uJ5͔?GS&^oz6_#4C:G?6 ^g^rQYi(Q%M:XC 2R-bPݎ8$v8`LmT-%<=L] TrSVi= !ҳQ5FwuE6/Kٴ  OspAH*&U1.nYL!Vi#F zҤ {hvJ~^di3wgȥ:Lߥ $FS;*$ &W1vcnG,0j s)6#rknNDù`.$WP7ML:y~,lt q*Xa ym6k'':Z< N;_*^(8Ad Gi]T(~8'(iD"zQ9L8+j4 ۯ+{ 2n%J kg$,i F+½E;•\߁@ VQK3J*D\vpz$AO[͊xǏsLd9>sĢOg›8b/.}Ёy+}(w:Ma$sy4s/@Gh쟹#'񨦫.£>yģ[;gs|μ9;SUwިze+_䢡4QhH>1dAtT*;[M`h>RiނZ]-cAр^{ItR:d(=g37f"O[ rk D#CQ3o@T(L*".}(%iDՠ8/8=d ўJC?ZԳkS !m 'J}حwN(v"Di:f|xE]5 eva(Et>/ }pꠛpLi季Ԉp mtJ9B[Uh΂:,Bh0I1vÇ ab3σ3˺xN-42q/VVơ 01I'd)׫Chv)+@D(- ])yUpPAāo׺tRO]BNKbb~na9eӲU6iTu>,>_ uX {܁0[*rxIJn2+^ l*`3Ƶ sMq;zΊUI.zkn޸wwy̆Wh{ݎ{׾7za*IP(8}oSbΠZ]H7Jh(T!ɴ7\y_Fk0 >xq{ף%(%^θ}=)J62>glz2ݣX/[NM 0+7@*Z6`*n0tP^~IW.F!"7$Mq{qݛRe!ӾM{?{S »Un})ED=၏߹ g6J%eaz_zA:x|:][In nta~@0;6}_ͭ7C_c=պ|Klio܃돽f}8UԙN HսխzTWF;y5xT4/Uyo]o$^WRtoR! DgTOWSÛ[O@HݔrzS#Lo4-< ھ5RQ귟[D|F^$or=2*b-o ̛AAND)O2w ~ BA0d\xL9NpT~. RчG)m{Tu-էj|3{頿Est,iPI~|HC/ᄏ\ v$-fZFq& % ķFbe(xtڛm߻Měع(' TF ] qV"Կ=_@لx |W@'ß@>' H! ؤxF3HI@HNGާ$Wm^Sɧ`MuY4e/!&-k^nG"n^8Ƅp3Z)݅DA7[p54E|JG*SBV$Df;g{^Ƞk.iqJK'Y mV J2()nFf3J;PE`9!8BHvEahzu3{ -cXER-ePz%gRƆ8. +\=_^-׿,t1TԶy`*F9h+ބqpu9..8xGO_(gB~ao뫬0\ Tx/Ik#`z{Y3&J<'7Moo9fe 1kԳ 7Ha9fz&^oeLWeׁ+ÀCh9]Xz۬.IS16كjXQ4B1Ӆ a6Q.rtCi&ySq(4fQfaB0o]2ũvJA‰WN&Ozh;{02-6Vl'?o4 zH)xrd3gз0%1% uzv_7)XDLZ5GMK Ұa?x xnh´X2̱ I+]7?ƪ'3*dIo!HWb3 j?-}f[}~4fR n~:&4fA[qF6\Xsn5xO<4#Z'|}ȀHl lPuCyؖ 5wH6lٮ@w?dNg3{{m*ݥ7Y)fQePN:sd} %*o^rF?Y#z|%cUe+|{ M?yڸaׇ.r-EOīxp;)UG)UZ6ŕWFC3Zk d2z<³Faīxh 5#\oJN)O$, a&3yK:oK"5w#.$4o'@1RG혓l&!C oa6murB&B)%>,`E6|xz(WCm1S[V fi'^,h0s)fN~r^, mr.%X IEB ;݃J6F{ v U'/"8q| <5*齽pkËY & 'aۮ(ۋ{ayb;B sJ!9͸s|Ŝe7ܥŝ* j7ҮZ弑^i( l{JsvzS)wf'TQ^ARHu }8M*S/q\)b*tTme.83,UJ(:sG ۩Nq[9wԣb rtu-iO vN+8ٕw7 O{d8΍A!1ەN~։IIN $ɦ~s6G7ŇSuH>}7d#߱^PRG#=ɸog}W>uvGstK=ϭ,qH Nw[XNNvBhS璫'ԢXzDgS2')'4J]dӓe~U_Χ%M_ˑ+Mc%}Bӧ')\i~V"5~s߯UUy . k};ʼnR|q;?YF,' +1d[oTK)$05+·A^٬nWf? 0pڶdi(䞎 VRcyxЁG!KU`Y{K= GbBZTI@*E-/x~m-((9+㙘)_p}1CDoT-K8VO{1#dƌy9c}yDO 3%꺎Lsjx*:^,J/%ŢbQz(9XϋEŢbQz(X^,J\UX]ٴDU L&?/&oycSalbjzSg<25=GĉsDHDXˎZe1 'b1[9tƅ+ ! ! EP17A-64|lX# !!\˄0/ BL=K=V0,A\!>O`JeC=`j `kO bxgӂ_ OA,Ӫ'TUNLŜ0oB^&քNgBY"ƄN+EJ\ +1%dē0Gpw, đXX`N#4j#4+č pF+Nj0>!Vijq"4/F#C6$!\CgZ~?oG-y?j8Uf>Ti}+k|H! I>=>Έ|6ƙ/Ⱥ:;EC߲ zߦMմwu4:$:?9~u{_OjU2d^U௃~+CHhWJ4>~&=foBCa+k-}W[~ԇ-?Bߡoˠ. ~ů=]a+Yr+lC:49~ȒGi+^@`t# ~vn6D5O) (փ.";ɥ @NB$Mi\{ȸ~7@Cj(SN\ CN&:-I#bjK{{{}NEN+AHmRA:UCM^ L0=z9Y>R3>ƣ=~0U `O Gn,9bP(52G4%َ$ab{e\\lP^T)JV vP#NJ_:nyrZft?bE675j/]J7_8-#I%O-'B1$2ǵKo9U[TÐX]IDk)ay5tnHLL|tPuWHyP]2/T.aX079?S7e; QI^M&Lv'ړrŚEr BEQfSk q@RJBIYgha PNK2I8`OHku=` 8HQ zv ,(ht%8I-u>KB]qDkA)Ņ}+ ԓlw;2CMKu`Np8 `zqa=LvGUΤkq{9vZ2CQi 84Ih!&TqK ؊DSNP$\Xօkqk,&2'vQS7-Cts P9::oADQ&|tRW,"o lcxK&,s*QiRd2PUN1AC-mdOD֘ hN1GZPMy0I>p g е)[&sZ^_zņ ],uO9(R v)kqR =mZB&~˽0W4m1IxhG^+1Y͔Hdx(U>&.j!QEk^T*7(qKDMu)125bpb`)wdܔ!0eMm )nSwBv=oZv":5GP&%&XtGrsНVò Q}~<$cΈ/ ІQV9.&BfSo^'惔j /?V¹l>{gl!W,IW^\?jkВR{[gH<^ΉDjxt=#OoGx> ø5 Fgr.{:0nO[|0yWwI=;9b1lV:6:(&`hrLI9xPu7eRHx<ƓЛN!'AoAƃG9>G_^PA44:VzPd2WΨщ!3=ѦC5-?}k&|'dDI+q ٝ8o'$E? {1@p5jV3و}p Kx}2{@FIhy -AQ2 s0)HZb܃L {0bkՁ\qI$w& f1Xƃ $8?XDۉ#L|{vgl uߏ}n)[NjqFCc%ë5FJ␻I <x3Em `!x'^5WzK\󎱫`ALu{a^fp5eR6?Sv6@_ /1l̢ ur݇4NG`~"#gq/Fs 4-~{K@J{riRf@4.CW=T<8vr` nh˾ -}y4n$@(TZ-ռ&zE8 +:G7``|5UlxԧnXl<4죟$.x0b]3M:z@В% ^7`260Wΐ)1(]O,F_PBhę՜D6~1FeI/wn +lɄ $\P6`E)%3t/8(C# rC3 >H J]`8$Qaj(#'/eyo)cqPSaPzƚ-_~ S "{¤gH@3FR(|#+D߳>J8-jUz/-W2?NTeמ|AD \!Nx}շ<-\b2B _"hWr\x<ZSXnuZ\Ξbq7 { I7R2-|2e< G,-PoχkFOV;ؖn\} ;&^@odG=q>9tP  kg3øWǠ1"G\P]fp qXY@mh-NMSWk[=Y(脰LG-gTкG8]u(CqJ*QUFP% OPix(Q3(UiY#P&n~j0\1K>\]G~r3qi,{WZ?>@:I R7xX%!_'P3 %w|-ї>(tF|z&x' m\5Nf 9ǗY${O |L ;9Z/,߻ Y.Al܋))66Ua,0l0Ú cB{iH8,94} A.^:Q-A;#&ɓ0NY{:PUݠH:Fu1cEX!NrAZzGmuG4O{ǝ0.uLJT.4Wdt3M|Ls1`4P\Sf$ĉWW,;|K\VK^6 vq >+UmeA e0XyLq'1) W`E ,'v%0$N6 ك,ucd0_ /^W, ̶c %0/IN. ^1W ^+r;9v;q4f@Kvf/F5qs0vd/xfs]@&]fv &f\6+1e%r@ȉY,8)HcH/D9hsq+`Č/n.ہzn nn \>[ ,YAm;`ћ\`XBd+IcMgANqp$ 6 Ig;Ywt {ζ mVS*Fj) Rcgo/+H]{{h钀 ŝBM`;Ř6TTe8d1-wwd|1gr^A9A,ؓ$3A~w{;cޞ[jXI,r.:C)إ%:P5;݃n.qVkTΛl v+0>Ĉm g-@zbl]-[Q K6lbp:^S_&RFoӼMq+_ՕQe5/n>&{ɵ<ݫHHJ{嶕њ/I$:PK +#r{jLY).i˃8$gc)ϩ11#O-.f ݫ(S/Ueה;{{6 y{^A>V~a8PRBB3;"+`yRJ11Ģb LX'ߋy=a; Nppb{Z)v1e`K8`{zDt}#^K3zNOrbEWh΋97quf &Gl3Bb'qNҀ&+HIJ`|{칫z3ToԽ cu@|5]@W3{mtl`^{|q%MLg:,P"^(x5zpg8ƫwoh =o6&c^Pi3YRWtӻ{۬{:^}_`eDWcҼPlE3gmd6*΅FP jx: ˋEᾳBw ꔯzoR&7N5Ɲ泿0e>% (=2%˿yxS:ei92z{&kfZ\. "1(@ɈGbvHiWmYGQ$J~XF F|fIg4{Bbki X;Tc5ZNF :aJlqUB8Q%,{^7.D$Fd Y!*c(2CYhV/"EKDk4∍V6Z2 e荲C]Tɟ0ZC@ghN2.(*0n*pB HsM_w_%`RҖ *hvtGaBw8D !C~X(uAV!ke$>-Ĥ5p,.QdL=0IzW:p?q$M[a*IP_2DN/$n" *xq 7xxƋ;zooħl*Hf\ό/PQttgQ6xti%=2_LðWv!E+X+lT^|W+r6~;Y|rBx?GC,nNĘ!Ehb^׽i/_Z@\͉S˅WOW1ָ{pg@0"el]'˷fi*:gݵ=V?G7S L*9O{{>.i&>~Ou0!\[Ǭ#5`j6^O5m]2<6fލ,c@JTctB:bCcbΌx_WI8E6!Ci5L t譸[u&z9SWwjiV\oh>o$DWRoLeTFx x8ut=O?}sbG{xxF3HIWHg`!xi4XS]Aj(vjKHg> 7 p$7O@}B&ae!B=qO8NQk+/#SlU;z?r(Hu|omwxvawkb4J+rSd7Jjń UryӤ@qv=J$2W"Lh4+kiVmTF#G[)7FSWMgxE|0(H{V 21)qN"*sVT4j.«)l9a3xE\J117^iHυ"iqL49g!!^T_]0ʹ,0*na/瑚D[ʕC\]?&yaM]MmSt#l^bj§[TD aQ&~C veV^s:Qޘ|Q :&׵߆ BrQlYVSw#n)Xй)<4EhuQz7QAGng Ȗl ʆB\{tr Gw #pBY:&m6|(0:BJ^(;\P?%%fZ[cZYޜvLƛrHx&A󝰛gZ=)OVBgi i B9@4H6W%,,#5s ֲVo3&C@dV<s'N.Z]^6kf\)ҙHS5+!-+Cs&\0dV ?b;vA5Pőzczr_P?)f}J!^ҫXXh_Tp Q! b,]'Q)P_7~? ]COujwP:{:%'t7t-r}"R5<[H$Ki|f<,M( d.h1ǀ itd-]t0댲(/ʉYgD%K'rt dJyExOqeu~2'3~bu 7jj\` =.4]c@ґsh<%*!J5I/g!4 `ḃɄe2O tkv~Iyf8F. a7%l'ieo",euND#8"ChuN9NR8BE9b >h}è;i \.9,zqmy|\eE~j0nUZ1{||4/d%fMRU2$[ 1"|L>J{,/-2Zv|rV&ʅU]Dtz<Jg+%`?%CN/_Dp*J0}s齽pkËY 'Aۮ(Nt|oO,cv " OPsqz+G<朞6Ngynj K* .YT:L <,.<%E`Њ^rP3JB0n}<k>ERO8g?Ⱥ ˢ~A՝L?  1ƨLhD L%E+'7SPKNUzǯ.r/h>EZ[V-#s|#k- đxبDHapkTQ6o%hnY¯6)]Q紅myn?vTGBy)VSFV,;ܟd ώBónkK=.;:%QJ'v4~ b[`-A ͉߼-ߢpDPL1sŜsHlLѷvn*|Os/6ϋbySRa9ywetV5/A$1ȳ?yk<'6#Ъ'7<,KVKKe8~.)v8|r%P9&|A\&4Ցwk-}W[~ԇ-?©ߡoT૬K _U9+gkerW·Q,_M9vir,z9:8EHn?%s5۴yo~)SJֵ?wKХp)zy@NB$Mi\{ȸ~7@8ʠOJ'TwD\fuS9]]P3s-2^/uXTmQ=BLDX](reB&NE=S{& PR^džwIނI$0:ODhrː]Qo0S ZZ92ך̴݊Gs1 Z)+%oI VaKEKLb+$8BGίLZU@9,M ɵ~4s%qURp\ 7%8 I^ Lvړ:ZEr\)C J\U}d85Ue,خ2:ΕBiꀪDHKϥ J%/(*+i%Kŝu#^1i(vf5PKvaư^֫@-`:Xfc^ElB8-Y!<CC 0a9t-77uYIDc 'LK Q!zuSPp*u|1hUpfa _:1]Qщ#ph*.6`i]d&rؖCU;9uLl)"d Kݰ)B ;0m.”  } '? ]>l;w )Ϣy+)D他~a]NR =m탶p1ܯpԤǽ0u;9 #wMgn3JŜI(9$IUu^tn)hHw$a:n5,V5{0gdJ"ĆW9.&BfSo^'惔j /sYV‰yۡgbǹ~gw^m~ p+/Z+׏Z 5h? G|}ۭ3}`Y|XgjD"xtq~MqiƷd0=xewdzP`NסTr45F MeU/ޛLfS3z=>d֎7`bg*yā$m%ι!ĞDÙ'_?a/_j;qnOO ]_7$+Ht)Z(DFewaR~#)d¸)*` D׾ P\:=g4L< Vફ!=25v8 _:C]q[lqo!;!cXnvQg8bB-%!Oی?Sv)kv{X l琺U>0Ɖ^0^}NonW[FjCh'bDU<yy4'R0"T!5j7)-GK< HG0=BԚ=yYЊ1R1֌D#:s 2\"Elϙ7'(W]͋@ ;@s*3xDmKEd(6I54$s)hAGʍ'*tF?LaʔԪ7 '%2IyMSfYqNG+\2zFh6\HJW9g!3`[VGtiL Mq{T(myD{Gb]2ynv6 ޑ [{|;uƘƂNFh-j\#$T4H$=C,:J1 0cQ^X CB$qczܮA0Y=P*t U}};bEiD-R'X]lGѬ`,ą }PY{ [jܗR.l m%sZ,WK ~Jw)O OpF@D/Ȑ,,V}^zbGЌ4_Fҗs y: #똪țg5YXPa̫Q%nB'@X(ۨw?_n9DhvL2c0G봸<ŝ}n-% oef[2 >VaUχF[֐i>6wұ-ϸ0B3^@os2`4Wa:Sx]S4lбfrbޛꩋ!N-%ԭv@W%05K.hKNq.FHCEX*(/qCß;0M1u pEƽ1Te[$F{ q;rq4 Z'?> tI &/n &0gwxG쵑}C1 J=+rʑ`]LH k6$9i—s`Y$v= |&: ;9Z/,߻ ,zP6 Z{[ z`~ sۄ_kG2{p6+ hCĨk k(F3L8yg! I^BSwVvB")U=b.ǪxXKrn/n=ݏibSO'lqof]3zaa6jP vXV+lU y /|)g㪹1v=9wf: t`nvw@P,6 7\!c0x Q̂@fWtFDHݝ=ݘ6Tw$0D`{LncawcmI;t(FNv@1ӛ3bw'PJ: tUDc*9f\!6mڌ<؛NEa# ke+Ҡj) =)7fA 9 (HyƗ,W(`/oι bt6+e{\qY\x3I`|Iɢ.L{}H`۪7钄#ȌmLCfVA /4  ]W,a:X}GR*85*M6u+n8z #Z}2EiMܶnHiJpmÖt4ȴ]FoL@Mq+_ՕQe5/n=&{%<ݫHHJ{R"/U.V>g`0JWޖ/i[6vn;nLRN)rtYQf ȳ#ZPԽ(rw˪?5uN.W{6Ә ^ k/WxEs(dݺWQdTz]VIkd{#<)we 8AQlg0mHC:u_4 B] | nڟieP%/!|* {?ӊ$闄~6^ .gp1n3)(/_F<)/쥼_$\7x)kM3єכ 3${ :y%xW;x>r>3,{Y\AJPzrBtO-G( IhY?,#>Bʤ =!Da`0z ['d` j U2lJYD>40֬Uy^U*P 2HvɝV $:omskVct%7nnQfe?1s,K4s^c$i1֢f%Btq`H+ !|G|fB`ɰ^6,N`2W⤷lFJc |]FMzI "J5밠yKl0^p~v]% Y) hCYᜉ0nk59P=&>}2sNs eq9D߇0ȋ4Uψd!MsȬF|N3IImZ3 VY>U~cN< ̹lPg敃@nX':Af阠&-ʰ >6.Fj8vűB v je^%tqvv%ˆJ4"eCFrVԄТڭ3!FuCÍ -9jJQ5X.]Ïdž CN?)9۝x3USLq`=!i׏u:Hn*<5rMLӧmEU%c긁~]Vb>­M>noGSI2da2\{tD/.}i|^yxqg\q=)YFF2qbg5yY`<=ξs“Kтd:zxZxe o.x,F>׷VѲqSyuE]2D(~12qkO4/Ѕh(hFNM{b0/Q>mtބy05<;6!wӁ>^Deΰmxף][d_\$wV H~:=+Oξ荍 3`j1  '^|w. w~;µ9~yDF5tj6^O+ w{Fߐၾ&̻q~r1~%CJŝv !L!1{cbgB'.\ }@)%/]h4\by&S>.(9U nգgv+rnTWGLseUn]4q%a~xIx/Ee~o/_xLeTOW 7 )a!:Z#Lĥoj-KO ھ5Ry H4{{{ANGnE4-!]<]X2D짃zGO\V'u #x, #")gRP躑 D2{T=-RtAM,A;PXRo!Nu t*; PHZʹtύL|J|#\oĬ+Q |'۾p愮F 2(' hF m ] "Կ=_@о|n`ޟO!IzcףdHg>xoOzm4D+?tJO>fwk 6@i .C-&-k^$;Iܼ/p ?-# >v: :xZQ>O'_i?fPTOw%O(wfZJ{;/-hfɜ(h˅}Ou3,d3g)Nq32-e.0L(g^14oWr-\\$q3PRp1 S&l0S䦉 Z ι M1EO.PF&*m }ݎ@.Ճ 7i j+>e?t|u+Nl7X6&#`\b e! ̦HiqaAZ727pa(G~0 r!܍!kB@ X ߜ* RƖN=5IQb6~H}aIZr|oS깡"pdF\Od,B9?mEh$N~3*D#&\PŘXۖ U3Sxc G+_isWZy, )!*Q:W*?O~,r@G_@![mؿU<$:q­4#`iR]\W < e"i u)γ!ʥ1[#(xQ!ku^`x1 % 3_eԶr^B *$x$όS!So @$E&P{m &oi$}Q0nDXn M<h$*$J|\&126J.ڐ@3*d%oCq=*)oΨ%K;>Œ|e4.j0F^Il T=[7XW|beN~ג{OBuaa>?Wj֖6Ѱ~+UjayxlcoN5R^ qz00o[YL.) fl:U.i'F=B-䀮X"'1eÝCyLoѫV4cy滻3vTȴpis`>W_鍭/VE=#j^iM+Cc:!ޛ36Ȥ)oF sh .ʥ&`1fSv!E*X嘶IeUrP6Qzύxlf2O0LH]FUԧ)Jn;d%El #=OewlZ= pa(/L4y.FI ?.{eCoSXb]Q@h^tvѩ`M w|͹RpY u+ff]xc^AJ YG\ƅk3)L>d2}m48 Y/re@35hKƐ]׏IJ$SLG\+oaǓb 6/T/c6,v|֠xkpتIBQJNm7\'-r1{w7& )a~pWFrzE+ٙ"IN[,FnĻ!9VPq7dOMi25`F' NGK>V( \z^WchU߻y8!Yh#VSʤ0F`L\ \K[O-K|Pp/ץ^Vu:=ETډJ[Pi)n:坦ŔRIj&mQc8RnlQ$V? x o;%6} pTi<8؈{H8*^bLtfʻ'H >)8)p]ӳVYE )˵k ˳cJt~!!)t4 J| 4d澎[l _{ ?D_I4Kz -b =Yu!~D |)Pӑf'kɼQBN<=hTUGn5xO`>fIHSHn)ślj2#ظ1Z KoxetAs;6J]c@;Ivvw23:b+'f9>b7/9ˑk*2i^,▔JɌˀߨp-q7إ O0īxpK.k>zLU0h9EX8,"3{Lƃ1Sa>|Zx(lxEp˜u 7%&0آhN)URHx= ` Nq !28d8\r|Tfx=0; ׽ ]^V=xs` R"o>q={CGr~joUZ{" >Oi'ИAx"4G FNt!Ax@H D_ӫO<g#^ƖTgEWDP+Q>(2CوB>|f"Y~v^g׹\וr#:@o"s|uq2 Os}^$1P14Aj#+uΙʗwsiRuy$z G6N(S+92³<_B2%2 ,v;'0)[!ӑ#ò^&{$u\ pWu'$:Unbv}#7+LM˗- [؝̬Tɹa;s2lVfNE;MMsٶĶA> /'.[EvZx=tN+ޑw -~oz̳5>_gCݺ-乘t1x_r._Mc%Mjw]&Bk2<7]ͳYEWlqkHerE2YߕqE}W\Q("mi\coK2R/p9R)p.v.t zB Nzm=P* kw\cYibYfq՗qT󴺳[\}6D1>*~Gx瓘Hrk"ϓ)_%x^7Q~[p p} n0: h|-> a5  *kz7%a]Ւh x ޝM kgxI٬n6}j)/紅m9큙=wTB#u,V*tiܟJq-30s3yRX0yc#uH~+-8 Ad'&)mo@%7/V+Vu9t`?'ż{Y.NjȼQ52W>1!Bc&ゟ&WtJYVr*K p*Tj`SUb\RyQu*k2ycqLѸ.5үȵLR#Je*)^,hrIU<$U HMѹl R H2 >AGrH>)Ш==[/Ȩ`Tﳆbtg_LA&,OUULD<Չ㣝4KD:ՉԠnZӂttS+ʑMeF5J_? _74dӟTJRh,TzR#olR#MlR3ͼ(FJ_օ^օ\B:`h BU!l#rԆT~?oG-u?jM,>*Uů}:q2,MZ8q>_ۺniz5 DZ.vAGw;E[U]w7?7b4J!Oę}Cua@# T}x ~+CYA JrL9x_"Me5y\kvoՖ_=_?=ƄA7*4v*g,~eמ_r~] 4W/DyS67a2.+^M3GgNtO'maMK:0Ϊx~ Ⅲ" &&ݜ{gG6mmS x#"/n9KQQOn/OD̻c4-Uh}͛7o޼ypa`a@n%;9юh qbI%[>WbsF<^R_&ql5674 M$NFĻ2oА=,5߅ջ|7Z2: (fvb F KfHpI؀ᜁWWHj,fenͿԢH[o%b{YLz 鍀9ƞUV@ȁ/0s) *Y´E-RBSyQ9PFII2"x`] [z%!jbuj|2l=! @!Th9&\1 kRG852f ט l9kF} .LC+bT*[#Lw*tUŤ Z5t9Ao !XёR !vU] QfmB܄`j@ %1VW1:5h9r+_Fp$({H bHt:1GM09I5VL 24(NDIRT/rԧ7*XZ<u: aK*PI)e5b@@BIq4= +'ȸN  *ꖠ~Yd\0;nz3q/0fLZjP+q6E`;f[1MR,yYDiq7xGv(uh"l9^*I5o=xC]z0<,,_OnE32zMK`\5az\sMI*AѺFW$&pj7,Dꐑ隇Si$kP<ڸ9$nD`15^DK֎fx{ µ)cEf&h%[aJf9c}hסڋ<m }EoHԭ(YP9`"pZ'>3)Ϡk9 ]v!oETii@#if-h(?'F;۫_lσn*Ʀ+ۘ[𝳊M98,j[ޢywφI\ Us4iMFS)KђSlBuY7`A0:36/3#K c#ncK/w~3dk8n#EuH4F{#g5 *:,1_c٪. 81lUŚ."dj{ ew5p_{&5`uGI}vY(:}ϙyWT7}?{B}}o;9?:A+((A< ) gBJ,>ٯys[[ʮZdۯeqZ]3/ nX1IW0L Fk+fUWZ֊S3 Sj8o-k-k:/nZ?~-nƥQkuN JqqqȉSner"Ff\#벖L@6l@\g׌b\\;>z ol=0>;;133-&7M~V;7KˬX?3*Fơ#33K2ubd;&WL6VW/=!c%C6 !{-g>58!_tUb>hZjz ]f[G\9l41>s4iS|ɹ(ԅL},Xxi`m$A 4]^9=%V2 @jU_9~jk2g=`VU+'7PU`9q|]n 6i$@40[Q;yښ4=6ཛྷ4Tm8|rm4HYxʉulf'X kbժW%P30fLMZ7NmGMp. 2n\>цjzjY @,, f Lj8 ph8$Ѐh&l`.N3@*$'p2@5aWr7WN" ^+&-T%8v8I ~k/B (JkMk'ǧ樴ǀQ S\ψRϳ|Tkׯ&Wt޴53^NNظT+&40G|)6=߲PuYqXV2 Dow@.6>7əI\&0T4ʷڵSG!8 P+mU&u1B ~H ,T+m \[SD8+(J)*Vh 3LM 7[>Ksiqm<7 M7H=&ׯ)#mG93H2Y3Ĝ 0,[ >5g e27_䵆Ɔ1mAVR(l!oSǩ ɗ#6NEy_i-Vrkɕ }vFQ |%Z~ X m2]ul}1!k`]{ź_ƴSW{ , )U:ľ:Ø: 9C0pBƑ`dQ.U\6Xf$6֍o"r6>y.g`M9Npr㠍_-9nJ=1ϋˆi= qL^Sx \S+CW bUrV0^7rw+Ac4ÞhnF[4l,X`8 .X# w߱⻭D^~  7jlՒ-3-zV3t< Ps7A!P`hu24^~C7 D|%O8svϠ樷~+]HI-9_bb,r?:!hOlZ11lXjD{VՀֿFD5tII ܄]ʌ!3눍Hk-PS҆pRb̫+, F7f]hGxV qل\a4*- l=$ν [-^%' =x{.}iJYv'\;]#ӏoFj|ZB1/*iB XiWfɖmP+'ҙ(NgBqrÍ;4틻؋A*͛3(Y=Z% &pS$/i-A}УǦ C_2^3-OTNՠ\C]屝C*SLOX钡CKFR ~5ʯ!P{=1><^EɥM&$  Wd0,^f)kD"Ka^0( -(xz$a^1Nsj=c)&hgJ F%hk'f[I2+|یl61Zn9FHՅDfg؝0&3Ӫcىu릠=)MNO6nXU J`b#:_) (YYma, 3P|$v)#f0I a]3xa;mN^KF4^ l F" Xo0Ku3$iѴ"@h0u3;YH K`} @h`  PBXz#ސl@,ŁEHI E"]!ұ᳈>gH#,U4`^ XD@opWx9 `4 ր7&2Ѵh {B> j4z{"NpoOoȠYh3`@!Y7< ߋ3B̒9ȤF304t M'`Po? "^tqπ Moa?l̀ް<T|6$f@O_π.`PsDi3 n<7% E#: @r: u=BS13JaBHX4ml>pA1wz(A]Wu嫲e/Y Z>mt/VO4ҽ,ҽ{640ė`_MRDLw>8zCb8 R?j`TǐX iR<{:fի^.Aq{ }:7>;>!=}| vFH @("Vk\Q3 @$G3o GK}P2>" ~YPoW4L}:{ZNN@q{E1towl%KPOӬ >c: ~eK ":`Kf8$u^;8BmБh t APgr#AK B祡;+'/3 W0Ik'Wؒ 硡Ix~XF?ށ~w[yuk&͸k3/`moX:p<`vv ?d<$Xw3RA^luwz[@஘1QNwtc鷓;L,TS{BmVV.+)AMw}]H_]ZJU5ZM~?& cjX~+^VRmײEaPYxpSztJC7X>{ٱ~:YlMnȇk 3CWڎ%Mٖ6y6NڍAtCC64s%=^Ime*o l4`@Tmy_yga6/>&7g NZS+8ڱ zֱm [Mo[b?rcNK5 bgߡG䦃!6W0?; jdlZkk/طS[x7`0@98G &m{-d5{~cS؇@ F~{#RT[xV 9W:kP-\$ 1|bOKҒcPrvq #H)N}HsͨiY˨UnVjp*u-̊+֌eGQƻRQy ~Y z@mf6KBlU]xb< bIL*PE6yw5N#t/xYQh,e~7H2 )Ei:L~XrV[n~j˸qrL3V\`kOkk¿J{AA{> K0{´jlju^cܢ}Z.>@`%X/_KBk[څtW mX KOPk5vfUވ0ag jG,Q@O8cDD9xOʉI,(`#uXHlhЊBG֢01UU`qTQ/3NVmy)HT=+p"k:ZfS\I>L.oFryt52w&(F˽qqa [, TTW".,M;,A Ki :@̞f@R ::#gN}F/Ij7K-bSeJ/CL6Phvc;G R'ce0XN9fD"U|ɒVRXfrO4a)rB] PC6s;B3@'"ҁK)t)-V3dQDRJD{xnwA ДT-:f 6m`-WPO+CB󚡜W ƼLOlX;qdz'&0Q*f gLU(P<PXRiR@ ߪ@lqP²6O7iw>:h/M̄X1"0<+D1e(*|UT\l#[Ȗ9el#[,%eoY[[ںzXֳ<ݯJgkR0x Nt`TV,le$TihӻH0Q+zJSޣ&*T/]0l8ο@ ' `=F`(HP0xۋժk 7*%{496ƈ[ll^c3'F / ϱ!=\琢wctת"힃JT՞Oތ5AK+X; tv.Z)ݖ%ǚ5 kKX:^M:'xg`߽Ƽsτ|ŗ ^sOi7h|̺I=2`UZ%<)5oշ٩3[7=>2E JaJ~rVOOǶŒ(39>]gs1! 9ڵ:ϖظ]ekk#?_>#Fê3/9'3Qml0F`1裏o"!BFkZPagBک=ĉoa[D}cC؏0o0Pze n{];5Ȥ#VoYG9LC_# iA36ܻ@ȡ3k>:CUMkUvy4`c FX U8*nR!N9z,_R$wIkG7墜vKQ%Mpg-<~E\xdpSç`iM ,GP*^o/[̰Xڨbż(x͉kk&M.̲8wE)/Em_ntۗDv}򾴳؏vRT" : W77BvZ`!s1N %6"/ۃ=IWR7&KVp"):pBzMxm%z\~/O pW Y+ :%C- BFn#TTTwmm$[s4<^Ŗu2goa"wx`EXB:6m"CwSX^y|Pא; ZD]G #dp|4 A?!-[A*_ѵ CÜz%ى4H3P~- j5D^t!}kkzu1]"ie_ĝA2AŔo4G'Cކg/S(p¡ K`-g$C8ֱ:P.q=&WYY-œjEJFOK*Ui~ڀ6'Z?y7aÈcɴ8lnD 6 韠oy>p;RQkQk lw?cꩿP$ \R:=a?q4P1̿_稅I ]=,~,P#V *r|{#@C0Qb  p\LU[l; \L OɞLd+~pcXCfJ܎VLYc)Id6NS4V$+\2%dL9̦ UfƬa)&+ߟ,~Z-_j-%ԞRT5FX_{_{`<@oRIr]٫KA:yj~jD߄ P077d68{g/?,1d(|WFL@.D&dŭ9H~|O9Si8 @_R#2:4Sbv⪜8\AW9K{ԺppYTs[n\;!" ϝ7S~ڙ#AzJwB.Pݍ93ZsQnfw~*^|IzFcmkm"m<6ڑM48zJfVOg9ᴎiY|12MGцni!w5 N/p WN[C4wZ1{^' :!c'yBf'Lҕ[J4nI b Fi"8jXg=JoAH^BEf( mGDsFT^=@a2mw#m^|I¢oԻ_mDr 8u8ͅց5<{>g bj$0=BV.T5o-I#N[/6ْwaa00A*]ҷYcHOc^35{~۞ׂftsa[~fʼnٰѬm_`[L̚n4g'o@~[ij>-gQ}Az;ڮ:Qm%ꭖt)8cL#Sx?D":Xe=%4W"%fXyMn3Yk4fGfoa]xGll{w`t {v<Ԕ,vey)]v-k r2ԋnVF2YYUe8\ɪ ܊:-uCX,SszZ"WLm81_O}JsmzKg0ga NB OʔAvr=g;R$13Sƺ*s J tyC=]МcuvP.p#¼zFH=<|u=+V8udsO8ۖ]Gn%X2s_zG3oRЬBF,GFEm#Ցw(xL#d=f׌xUSfB*v4rLLΆ !@PT#7 aU[0ݤn9rƓbn̝shrB:L SJJ/Sθ }l%eCm~.ywħxBf0m a5zL䶝L $Z*4PVU0>0~0\!AE P? 0 z=P“N.wPI: Qj#Kt>7xSXt.!l`r#ޭwѳ{T.JCtuPM'٩N˯O.7oV[iČ4qbL>}.!|Λϳ{Qo:kT+:&/T@1sBoTi pg(`Y"퓨DzQT.<%MH(#% ;lYur,DJl"[Zo2=^Z)$uuR~*1̹ظk]8+zĂ۬sY2\?.ad#5s[_;W4ga*q V1s0_i&{c0aE;S,jPAL, j!XoDuj 슿+7[ eS-R#|݂q>ĵkD,`v卥,-wtatG菱E劆5|% *t^Z38Y$7IѴ4T.q,h/\|wR])b8qP:h58^teR]=z08TޱR*rZj }%v @N}obV){b  9eW-ͯJJl$p}t0pbDiε!_Gz u y?9dGȯ DS0wKʎ$7B2ntzFݦCN͗^[%+"UHXx,&Y\m.|U0jY_ ׌ޤG,͠}z+me:b 3KAԿ*qĶv#V{tGWn΁'7!R3U u-%}<lF/+*CD+\+rK `dm7WshD٦eT%,fU`TcitR*SeMڹ ćٗ瀪 Le1GJ(.u9Mæ8Kl.0W < swWιRi') wɵXȐ2d: !3ʀ:x7xARBDA9PXyDdG.H+^Vg՗H;'%1߀b`Muּq[' L ?/v'\tzNLC'ժ^, xiB!_}uV}u*9"gcUq{saN}k3q2-^ ujN߼z(1$pǗXİp0vB#cO^^ }1ڽuOo3OJ6~jb cͦs׭Ź> }{Fbb\<یѺ.4%VIM9d ~ؑCdzϟo?u n2G(,Tǩ>R;gluk* ~[·5f8PY`k=\b(5N)s*wvW֘)vfq'T\Sd/{:Li/J KuD1f;ԧQt4) HJzXr Wt%kQe*kTt!))EZa䎉NBj(*hU%F|H\wjKF+^K(څpVxvE ~ݒQZSmW_h'd3.9*+ۭlίBΈ:?znW=|!<U*BjIuA/՝$驓I/;|6@urÙkU3b*troGHWH*zdsU-GsB!fb 5t).XD-Egc+u2$auNquh:qKG^0T̓AKn/7M0^@ṪmZĭ1|$fV(*f)9-aV~FڞMyU93 C0J[ͪNF L)$-P:S/<1fYT5V6) @w$Џ3]  9x{}] 0/Cé g׷ys%em}r[r{IsY ?&z4Y  /.BO8-KVԯGJi\F.PiSJªY '@\͊#(t03}@6 5=nIH rUJIcwk J;I2Y3K-._lR,1 {_gJmJ;NU eSY?jȬQ{TnG,[G jU?ZQP@]r- ut2\r] a##~G8xBgl!]nܶa-?7R!7%╞OXçxx-umб yhT,RX!A[CC\LriA/mnqCfg6j6 w<ɢߊ47@.R tҰi*`Sf DGc&@c5nn&@$+/TzB=Cp})f\˩ >wL[)fT2\LZKa\*Pff w&NT]+jְԱbF15*Db".8PcDT:ԄEF  *jB̒̌#Edd!+`wVhKd1N7\PPahj5zT 3b@b1x.B@S E| u3z8 z[h:Mw«k ﯮƼ@"^4](i$^#K.!saS ƯL͵`0*S(OBA%P>+WCV+ݓŤť*R3U( 򊻨ZJ11cۈVZNKjd$(S;4t"[MdX.aPEvdkO#ۆE1z2<Xi^ZECzQYL,l}0QA<O[=nH+Bbu((wߍ":P cIVLU>P粣zQ=]b E J%@ᡃ ~Ђ3ąD W ce [.mBOЉi I.Լg;]/46Y&5grTNE4ʧ oiks@d-Ql*ӼE(,X)ՆEG]S%kB$ R/d@ޠn A3;PtrKS 6(\7KeRѬc1.MLZ@w z˖n"1O(KhR-N!Et]O[ޛ2Mzb".\HLJu%SBbQ8ܵ+vtăo20TD0UQ귞VDNKT,Cp/K iuXHrJ阭.BC}DY;?L䉤=V0 Gxl.Ѽɂ8Qov.asd~ 00 u<!k٠+"Qu?Ƙ.XXs@ Ga,LiF F@ʇvG+-M'C&s#$ 1꽼n-!9B% F(/W#d8KݾO|XTw|Ѡf\ CzHjT5 P@.F-Dv_d7@@d')$CP<$O'JlnEHFtb Eԕ/jpqWޗ%/b\tV}y2ZLk0!VBQc7x(aqi\R%֣^jgx&(,/ tq,.e&gsAKY*eA[)E+ biԊ4[Nk|W.X-uuJMz0qW^GyWvcӠi,K ;G0xB$:~IUy9niR{l>"R#jrK̗mj6ȚOֹRzXaTDvLψF2R⃾HFڧM!RM,fp Z0S"ԛn *1PC!rQV?%/k\G<,oae!KPAV.kHyPK(R OoEDU,I3h+oH7/%sL!3f gU ecL{ʧpЉ=II@ ڗ&H V]:ݘNM & ^i/6^ŋ(rEij"p ʔ\ZVic r3p -ެyK\='K\W6Zl+U,c5ҵ8HQfa|pNG(88굡 !b()eزD,/%qTl+,+"0`kia̗âvh".OWh&~#%-6юhq{bб ;^2 YP\f$4*mլ+]FedkЙE?pB0@;r?j4B! eXOXP)la+hwT`֑ʵ1NSЬy; 4[#}"<ؖ3dpLբvHTg"ٜb+C'664BI04ebVh@;hլCR: #+㴨2rJ٧ԆUrsRgQ9`=+JQk"Xhcaʕx FWeX=gtrV0GS:슊GZ hq\ДIMTZɝlj$VgzTPV>kczjډ(v35Ct 'lUic|=ɩg~,"4VFe+zcАQ@Í8  xl*Ajۈu*hwPẺ΢yjy-3]U)\LxF("KiZ"4L#;x (Q6*dkQ7SgoiH"Ǝp4 BcZg(! ]Rw `lo}9[Gh)>R˳ZxoiP F5@#"cL3Aשg+nT 8yxyQCb ۸qnN$*`SE;u".E=Łt9b٘L;~HW$Hu5HMcE+dkel[иD@QlZz# fR(ZdbM9^ʫ=[n3?Յ,[^m1}dzGg\6ʆ7993c6 lb&Hl+V#;Y_AښZȚw5x#|T~}}&iT8 )Fp̟-/S *TR= 0oTrۣgGoEnGb P;rs 5-&zy_Hl3 P ,=q{(P/X \jq+\l:*f7'(5qN#е']V)6حm@ ZCEC[ 7ՒO_(f ܃S='SUG 'e`n˨Rt4Ω6C9NƲS ZMj Ξ1v](c!mulg%ZNȦ)#JԆ|Gu3mjItC#eֵkr}$0ksW#Fybۥ*%tx&:]kMhuW2s_w3ܠNJ\w:fw췮u&ZATE cs3# qtB T+6O@hgs P"^ABo hgKɁE*q,l(P2rj֣8* >I.ʱMhϡ k8]S&+ Cpgy݂\#[(0FDז A/(b!8ҁi :xAϐibp yjA.y-o2:;1hʋq )-dt3q 90c]/G7?10;V0w6frŒh%Rd:|܀cUe,aU+Ü %=Li{00-Z6²=2d{dȐ!![! c"!ʖ&5ˮU\gXO|j~uhnZtcSU|u>TB3nywg{dдٛdz o% l~l~ cmև߄O$b?['N iKoCekdkdkd zmAk ))&A?1ESo===E?Sn R|NZ4{]usf8"ۨ):{xHV%22[O ٳ@a^S;k+_vΉ֜ϏskŇj˥_6CI6'%c+][S/n[qKx v3% 9sjIτ1on72#Fj&296- <3>cɼnOќNLĐ;b=thOMP'SRyp1%il)[hyu\VйnFAˤ$c* ᖕsEy-(O\ߦb=|Ѳks ӹ!Gw6NRc(K`v|)zEc4Lf+Th/U@Z^0&NlTߦbՀ3Eڙs͋Hl#dit`nnxUl gd&sNhWb/CtZ.n=U@dzyY-KaB0ȐQBMbZ%JO%`8-V,ZETt !$R^Nvi#JS0I;%0,5%;MY{ڣ!S*P*biƑ+a8X@p_P#|O]D>ڣa&UcLBAD^TkȐ:$T1c{.=v۰`uqb@!gpGu"cDdXEd])B W^b!1 <{ZV.5 ׀?OB2֞#>8 < JL0iq#ցh {!gq鍪I#E; |mD 'LQ|͕;oxZw5=9 \Z,P:CtLѰ/}_ݣw4C'`yNLGvX#PI6gbbr1nlA9gL`k'SS}H"6$(), =z/b$@iSyRAJa3[.V Wqvlҡ6u$hB|<.F EO99 8);e~P+cϢb};کh'=bXq#I:QQRio{sCH}j $FlHrth56Գ$O+*}NL%Ǥne zg:\r1/UE\/pf1❠0p1'׀τ#Wa7Q,P#SUT.YծN@N''ΚD(DZ^:[Dg%WXs:%XF0D u(Qa ﲜ_=ȜR.dO@j~@Xs# bc ?&tk$UuhOPՑn#ḲQTFTSE# c!%1* kAoW]:!w-yW`ܯGjpܰ8?® N24zc@ b\6LPI ~P.GOL ZF$2E..@+U.ÚOUb<*j|@1<=$F[t?X)dxS13a#þ;#yhnnHTQw1ԦDiA3gi f:yNNj%1stD{BpmM&U6*Xw;Kf?B$Bh w*G }dYDBE8XSFM(:]gS>r o܌jvJ70j@ܓ`ȏ~-F LHi"[( #/~Tz.שP|4 m0ĵܸTy/ؖoTNVa5-KSo<]T_ȴb=ur$( |΃˸έ?,Hq0&aJdm6ӄ};sVpqБoޢ 6oEj͛T;1sS &:"IN\)k'bxͩ0v*|l[c|f))]8?|f~:cV34Pi;Ћ kgCJbXд~%?3e#g.- P ctT!#\,,La\Id:ƧZ4erovHK]KSDmAȽz +^Is[>Ovо8ԝ7I{Jm>b%ᵌI 5J\97\a?'e;)cRjTNG!I=p91ϔC)b//['o/ҵehM,zU.[ڸ?xVfʅ!n+&Y-'֌~)hf])FR:y6,s X~j$h3 A!Us֪K|.RcUuӫ.3eaZRwY`ݺ>Vq:֝ҁ@c ՕbP5Ѵci j66%Hᱟ\&d11ѰYKN{ULj2T5cU] (ݾ,(׀ ~: 5q7@λVb+U{2AʱRQH2TK>p&פ-2GQ2U.U~ A8Qt! LMbSㄙ;1$K-TZӕjR)gDHnTkT&bjYIdFJAeJD=lxۜ -ډw׌̡5zv&_`wputh$"F[D#hP{5^Ȓ",˻RXZC'\՞ӹ@7 ׂe_ץZw)]L\DD3!~8 %.T0 ewj vv7YXy 2M9bXA+O&8@罏YI>lVD#A3Z̏D5:t ҼGD.UM< /?3DF`'<nj &)XF2 :Vŧb wb us=u 3qԜ`JR=$1X4BGxFшD֜K_Vѝ﷎^U礥޴4{kMŦ `@MWJ7::fUHkM5 Tr*jY m\6Y;]:~:k-u`lc5;Eu}^.WЁ\΅^=@!am5FKN#àDE=Uǽ>5iXJ$׈mo;C68Р!ЀijXam-47"i6 rGãvc#b+"rw4+`& ("X!r).VH TqT(C8;,s k/]g2,Y_+F7zxa0ys4yHɅ\' jWlX6ڞbBnR ֢dы¥.,":8t*);6FqՐ/a>95YNrc5:K!|߄)E5c=Q s3K qՂ1=l: `cPѣ6:c\AteT}cC{e%+ Dn=żTD"`+^eJDcXBA\c;p$;5sKzvښE/luYH@o2sz:?=$.D,ȍ N9ԄYU-o뇽iaX9R8b1'HثrBTsF*ޤ!wC,⊲1a'RZ{Iڅ+x#ev?q`L"\c!Z8ňEAa !UEZCSWțiҴMGܟ*΢W,e1Oik"*^^5(J%ƅNIpܸHK)$RqQ[H-`gXuq4\X-={>Y$ 6J,otYD {l<~=44BC`gGGnx)JふlHrֽ|Us~ cvca{,bCv:l#`sCv9f׿LeճK rv2 FjF&08N2oe^ ІcRn! ˳+/Y=dk[y,I8[mH`hVw#A^dZhL_² %Rʛҗ8|qRy5\ӼW.Tiq )+p,{JgYڥqDˎ. ٶ$: X M\\Q a #v4M*aV ʪ=I`ADZ^\NzrUh+JSfDqЌL80J3KYCO/ }ܦ0_\\ZO\V;b"4e!EW_NB@(ƒ4ly9F$T8g5j.@Ky SX|*iNZ¸!N~4\:wJ*҅VSx-fLDut;qP3AJt(:>jGPxTBڥ/@=HVX+bP15Uw혬bG&LWVɻ#1 W(J&jVoY#Dz Tcr$F)0eB}-ty {=dv7y`]\_(bTյ"ֵ" 5ll6!ېmȭaCې{/b/mzY[fgֱ'lFTtr4}hƬo&nm̆`붜ӶOMI2ZY9WFJ^gKjjrZ,Y!GRv6(B4|A"e5E6 .n'5i'-R0\hME]iʖJ=V\/KSOKTL:"qP4>йpHsڲ|J Sو#_D1Ng`dž읷.Hj Kـ|0RX-GQ܁%;rL;?Žߕv;X (ksK? ]ۚ\$oKUixh% x rkğ*׍ 0>,^ 9E'YYu] -DCA`p\,C#AִJ(A0ce,== `zT|ie8X( e?h/C/HY K&^ɂe< y64 ) A_dJ+t{SĢ,V;!%ӭ&3wzJ&;DD~&;S|HǚfNx4f )&ȄZ/ӊ1qmkw31V%OȺיrSqTYjek?9+p$іO T+5om~ z]o2ѧdFyRZQI9]dWz7}s6at9͔ ,jd8xb( ZlVshV gb=Ҹ (ZLr3QR \ۄ^AMsv*T+)t^ Q@ xUm ]yhj n~\V6HuBu8ͳ&svS n(DF )U*\nwy {*L wr7CmUJۣI;YwWTqR;w`Ž>8GJw=f\5JrI):@>7MI-@H`Tϼ\@OWJsƕ!%`lf6mQ@xT,Б\`Rc@JaA5MG6:7'E m'YiwF5tV C)h:]I ے:va(ť#>R Dwg;OW-J:`ʌ/TZ}K܇sQFqu]mk:vsZ`]yޒ UV]U;禭n]5m&WiOSEmTܺT`Mﵮ?a~7s2vcl.'LuH/uz^ Ӹc䴰+J`}h^'@w;xZZ'i7+gfk ZJ6_ʙ7T5S-%|77UJd\o{.^IOW?@j2`pJ`ЋN.cLJu=ߢho62Dk8H]NWl3wS2|RcXPwxkq{Z̥N(a)Nq|ؙ4[ѭTZˎ,B֛Cunrd Z;*<UV @lk!0|0!>P6LEg XY zFZ73]JA#YR% 6Kb;l8 ?r4Ce#βC lCL9CcB9G yC0R+ !y %U͎4%[.(? ~E n21&jeZ9%*2rZ|1KHǢC(i.^X 11,llhS}H[qC2Q}_`s9YFsd>UQ_1\6@uTJ7V8h&6)S&l V#|@ސW!yP8LVj堣UJ[NdcRXrK5(aX;&:L˙Ne,|5ҕ2ʲnG #J,9dXh.t`*YF˞ģ\-L\uU`4,rWbq.T/-'ô|V0pQF ]Hm[+{T@L'L@įfSf+ '"m S@ۊ!}{ETQ;_E?ұVw&dtQDH84Umd~_#4y'ڑply_#I(g.VmX5sBc*鋪К0M}oV+{j5eKJXu[-]^Nxz[i\ڹ~;'Q7BWF( ݎM]nLmJU@JE+ !H-"GHTurͻ@@).#sy/jgtU ~rc |yrXO#yҵFjP'bRzm5W.!d 8 &l=YZTcSg (x}WYBr2F̳E^ EŔu̻e{F kyO}Mf^IhgG'CIx7.6z~/-1ɗum0j>nf~dѨ9U Z.J=kGmm%d`,[vb=Bo'oJV= ٹ+괳< ";_Pa[O۷o=mzھ}ɭPS[O[cI-;?mOή /kRL!8@nh@0v6۾iӧ$}J5G^):5ܛT}vnCI({Dxچ vx4qvjv؁ k lumھd.;]s۪U~ l^6qcT2Wr/j97n\DLX W#.r bU_qmnV(ڕ]A ](uiR[o!xW j7 봔9lߒ͚ تfe HxF@oݍ>Y 8Iu};d!Gm/Ce˩]R.ZkFٰ wאZNWhrU 9>b//SUu],$]o!d MVV%7nUlMf7FklR¯wXVvZ[/ҒQ.,ц&:Vx۪U[}Ko$7.}~_kDT['j-";4-JVwer .;NU*,2jqRvZ6DdV]\"]Fž%3U iQ#Sb/jLbtfUVqu(ZR.W#L$#*dMG*t2]kn|=qPnpvd(& ᯰv7sۏu<1w'>kPxjɨЏڲ9Ā2ۿ3 Z{oOV՚Tٯ:1PX&>HJ8`2Iu :f1~R% \({p$xyWwdUkZC2"N^[aUF@u]ZUbAjjMUYdSkxƪVbW.7Q TUF|>o=&0ʅ r[Linw(fd"&ʗX V;vٝ+бdDT pFG#7#]k,XγRGk=ѡ39t"N!ߨ`}yK8axhdA* $8ժ`lFlN;9:ʺD)0g!S֩'v xpܜ*3jX]A 3R۬k*5-S#OAep;A*t:Uq_d{ih~XQNJqaM$\bg:BΈ" UW@Cð@@$tfmˁ먝$ q dnX m+FCQjl/C(N-|vj#Q ]=A@C~B4 oe6n[ (M{fW`Gv8 qǮQ :P a<а M q}{Q!FlձV֘.]M)^Eq0SZ z@^[D$Z0c] 6,#~ rBązc4/WndaxZL&CodB\``I&l+wPv+ ᴨH>uf65sǼ&yyfib$J[0.züAn.2@:C\G{vw_"R\ pkTڕŶ kCn7ͯ-ȇA41)L6\iM װH5۴N9E ΔrYh]eI: wI*3vlYufUAEa 3Yw+XeleV(=q8s:YTQR?]ԱvQY2\L,\2`2Е2꾤i.XWU,CH-T"J8KM}7?xJJfc(fFEfԯG8A46Kƾ,S*wl,AX1ҍY2(l6/;pv4SZh{ɍ?* ӁcbNO(U 6 l& A߃Q|]f$qfuҫ9OTbwObgpCᇖT/8&Xϝ % !4n(%JNA*"=:d5~w&S)dZZA*`cΨ7߱4y6)˒q]@4f g$@ťj;&ۑP[YJ6udcj9VCR)U #S4b^A1:X1X撚&bz͌YSRur/`y`7-ri %xmhWC275hcP*TmKjkC:Aq|@81WƸ..;u[}8CE|ɩ4/LM)$N}+Û(A*hOeK*PqZxxoZbou[~Ч5T <DB"ƆUXL k5XglC% R&.PGx xkЧ kĈ^0I8ff0,*W`8ɽ2X;t8N_)wpGl8?@/jWk SSccX'F腒-vց3sDɯ)f9_Wx44YT++A݀6ǖWJ_³StLhPX Йeh't6 F<5C:a{2\E :UĠiޭ7n+ᎎvN#hԨToi01]Sݖ5հ-];?@`X.VH`Yv[mXȤX!A R:J s#㤃9cǚ[B15CAy=B}].TUYyN[/6ْfE.Gc)4I7D$}[)[1Rs#1ԗ])Z*aDy.ZyY 3VV N+EM#ZndLctD4~@B)(q#P`KB> gQ}%Az66Q؆;DwMȔhz0|.~rbǖbFVO55Ts7qXB_lr_hEɈ BNyG%BccOw=.v|~5"8:KU.x yݍ v' 45b&-(hڅi \H`E4%Pyp `vStclv܃awQwQ'@.]t'0 $,`03qbg96T SDGEl뢒|m1FbS]j*WoNKP^͡6Y<A*A0V=plGigX;6hB燥̓ʛM,u#@H6%H/-1bЕ*Ksy@Սn0i~GPZRvrє9PS|Wm6T]K0HF{#v0 s;83QO]rwvLI0l&ֽch^UCBfzT Ka͚ y? yxwY;I^'4@qiv]PM@ձ0!mzTAR73;ש|}1?Z?IN iSަyx_S>]}:(h["Bh[ZBT2y4 lKW}uu?3zBS+Tg@q`u}8Lڤ¯zTmp/O^'76=&axvӆQy+. g%Fmm&Je80ͤż,G˞9LJ:֘O68Z}WHvvRb˩HBs8QEs@B1 i&n"v@grKcZ+ #MlLL6f~5u-(O@DK|[r9T> c Sny!pr,㖮ķPcsTK'}YiyxiK|?4Q*պ[4bpFP"8ahpM{@b P9Qh1+83\~pdC[:i6^<]yj'L6m=nbvbQw̖HN%Yg3,.NXҮ!( M6^T9`S.cΧ%x\uNj"x,u--bEe[JwJ%wf6`P,-&hGs#p(5PϡEyxNx/UG1b ]'So[A05QFUmiK8iJDv(yӿPi A;fuגP&Dp;Jl3N3/ y]ޛt EzQbb=z$on= &J̧ٕV7KtE=2,\ob8gqwă} l<:V&i{zƂXL7L|@hEPďF)! 6RK 0L96p? e\"JvH@q۟xl$*%v e t9 n |̫RwIg#Ac@Q%f %Q|ӿr%_"]g0E ցݥEXc8 c}&~g=s,v҃# v%sCTn7r8nA}a,8 V,mAt|(;u]<$dl[㛪[ӊ5[iJ,[*iK!04`dMu%0%h$jjKtã-u.u5/se*,(ȥWn\G5FtTFKx~c.2FRVJbAt,rc+^iVdrNAn8}c'$nB+LVRkH\ (9Ku1#R!C4W#W\pjQͯrTWA#)l/O.d+{ 7rX 3.I*6H;Y; IWJEVCNeQh^ &t{*톏eQX-TW*hsoT[XNZx˸j\\a/:;IJ1 .Dhcy.ջ-;UtpK<ědSidVSI1d㇗$M.)fi+u)/:J%ZЁN6Yg#Ձ%E!="q|4^V]1F]R)vr/ţ=Դ_@^(PA/-m*#u t4^vImYKOI=ikӞGтxZEU4d/7 x#2!!(ܖڴq hZObCLv:1Ll%*z2:T|{V9ZYWb9[kITab8+wnp0FMY"KRe0EfHJ*дD=V3XÌ\ichljx< HT픢!㲊42@F#1󑦛baMl)bk+kd 6[c˔.B# .ɥNp&E^hlI@zs׮'׫G(HЙ.6*RCom/YX<d K%WX5D*d6=2=c M4RQxaN/Bȑ EG6RҵjKoK?T(e9~s@f͚i|lLew+ՔY]>Iɬ<)=!@ūIiF|͌|S9ւyDMj17f[Ȃ͞K2a`]Pt}:VRzxDp]#KZ\$jE,K#Κyu:#Ăk^*B{'WkN\e6Y9 N XQ[5J!;do6yf[n..L|Zh؏؂m q`qrs!0\D{D"J5+F(xr-AIQR9l; 3mԷJ9#1 g/ȣ<faM#k0˓ꏧR%!ė>Qd!E SY=BF9c0sx=UG $^HJ☱3zfK%|i͠o2;'xw%3>!BjI!W"OpdrP?c ?7 u@{ӈCN㷀ѻMdǟÌ"*N/l57+c᧧ž➸e.tWE%t=t6iؓ+kMf 'QؕꈧNgS ()x ,`9k{wFoHȪ ]C!mWEV~qOn\q,ڂ7T.| jkI-B,aRq8=hE ہ**~jޑAuJ[]ys[<%|*-|V4+v>a'2e|Q`adTR~+`k-].X3FڐBVX5bhk foz|~έ}BmS_cw[%EJTALd|mNmE컉"~2X2YcOa5g 6ȚȘplM8Be<"edEdm:4V0dubnصNlUovl[gV#xT-]XDuUK@+w dkB{N[bn@NWChKU&7ur?n6VQXE1?E:֫*ֽ0R5k"Y`S^3%M]d&FՒ z TcCrC9%umldnJ 2rNЬIYSb3B#Ռ=&l(bݞkپhSY%pi|"H/\2{[Bn VqSq2(5THM! A2q+sT6nYUZ][$CI ioqźH e61;4ٽb>x`jNj.yu,.Wm#ROA'ﴓ4w:wx,*.*S(!r?` "f2Sna%¬9*b~B&, 8[iMg^~֯0 w`gWt]=ӽv3뻏 tmXjs聟^ ?Po__g`P@_Oo_8硁0N83;> MNOM+轳s!?iEzo>~A[cM-?sWϮI;=oNHNZ9qm36}{#ι{Ӌ˟xx_*_N#_㯟c㹏ßU{~ߏQ,{b軿^tOY<nq͟=cw=m\྽_yg,k'x깃/O?_vw=Wm_į7q͏>!?>I׼w u='|՝8?,=G*{U{%_;.gKٷsmq١ |j{l]tO,;{+neMvݒ}Kģ9s;۾E wyOn?ދv{~.^?|FNg/xi7'Y_k\E+gs&{'7]9M׾]yݏw^yɫ~>??}G/mko?k"s /]ϼhً|xqe}?:;N,u<=폭NEWԑ]{3]zY:?pێqC<_{S{ztWUkyo.|%4Ӟ n-gՅ?:sݝK:}|?󃉇?2}oy ߳?qY_{,%_^o}OUv}+}tͧ8̇nٓ=?yŗ޷k#\ᶙ?poN˿~9CwV7>Fwg/{5?yԯo/;{<_Bw~xqdɛ='}~b7=S/N][kE3/9>TY<돸 F.w7{]П^Wu_X;uџyӯ/<|wjki+^]o}>x ϿCO}xQvu||{O֫>a)sȮ;툷?u_.9oO,ȩ}_z"={{^v =O?uwWrg] f]7uo \9{'uܾIߏw-pfkVRSo [C__> N>xօ=Wz]?8μ̮'u]~)?]O ڧs{l孷ru+,?}O}CZS;s;ڟ\}zW~mN5u9_YsQ?W_}O՟˂uk4pN\{] \ӎ;#ɿ>wY+~r?}[}oּcGٷȩkT}?8L'sُ/>ew+^[ذiOދ~O]ʉ?_sW|g}?8'޸˳ɇ_'u~؎lE͋?y+MXY1?v~_ :}׾m袟ZG~*mc误ngrv?ﰿ>Waݮc?y|E參}oyڥ_|DW#{~̍]wx+<߳|;G<73 8_ڗ~뛹2xo-[.>fϽkfox]_n}_^w_e9+~r/?N~wZf]㧟'?vߦ^YX\~]핗b:wcUj7>S=l`;7S?wQ7'nՋ?w8M7u^u yQ=<8G R>y׮Kno';/=gW<>c{=/O:}Co{WE"o;_.ھ[_;{?e w#w_}sb7-gnetQྍWoT|Ǟ#CYuԩ'~_;z%gO-:dͽ/;^vU-'~u}G<-CVv9jk־Kwź^usN;GU;^g3?{{6d\{-3]{rc;;>qWSʋ>n=;^{s_)ɽﹸppeg]V^|ϟa]}LOXV8䤋^~ץ~e? r?;waYrco{vo)_gS>wV{yLu 6MN{k6?~wk'ݸ^u k/>+g=k6e?{#8jr-oOW?[[8k>y}؇tkr=ޣz=W{V=}3sguV;|z=;g>][v>$1?tc~ї&>ߵ띉Ԃe9w#\xES?_xQ[VM3?pu~wzדÃq˯~~{~Dz~wzWO~}SOS_TүN돿{PO5|e#o9m͝/:vKՇ>ǝoT>qe8m8egӗ'uEo}Nw j]?w'qɍj܃Xwݲ.7\}GңO/7_玫g.{.Uoҧ~ޟ=s_}CO;:K9iotqAv:GFk$e]F|솷l\_/#7|G7n?LJ|;:Kqb|u͓_o{Do];n{W?ǜM_o& OI__zAw\}ti}_"reyǟ8#-ww/Wqymn}eW[_T؉g8ɟo_8]CXϾޙ8E'?/f{yӁ'Nʓ>;gG>{îcn~w#G'v: iqx5yә?VxgqK[,pɏrx?yϊ 7}+zY=/.zçN(}wuo9{G L }yO/_~p_z콻⚓z<ɵeN>{no |#;?Ư<1KTxɲ_cN羻y/t~3>}Ļ?W߹C8|)yr-oE<;,Z~3/zκ=W}؝~DpWaqWVnǍ k/es|zhK?OW=z? N͏gu_LJ;xw{5/{} ?镯உW#S|O}Kvyn.zg}?zK>%=:v򝏽W_~ˑG.O\pxu_Ǯ;_?,U߮u= y]廞SfǞ=)tn>1^W[px}_z_G|6Mxم=>g:ҥ=I)x.#т%id+[{ʔ}C|'{W7^ySϿۻvS7~׬٣gxdSj_zk/~//㔗=\,_)o?|oz#G|n{Wm:nޑ~qks p} .x[xVxP~ўgwyw^[ƚF~_p+V]qv^o_4}ч77}g-=ɛo{krk_|#ϛ־?}G{YOr g(|=?/l#}ۥw}?_'V6Z{:uXSwu^|r?[y[Z;qջ'*}zw/;}z_}cc?vDuf>u}Ł/>5ݍkv{-W].g[~șwlggN}e,xs;k{xx^]?u?uwwcfώKO9⅏u7s=ٿ/sW׌u}fܒ}ۊ+voo;<:v}ίO|K̬GOx[rމz/kEkUW{~%sgvܦs/m;s]o?q_|~#.[]Ǻ<ox+~dh]Nm?|2'o| y_>8ܮ/~ޘ͟>pb<唇2w{qxI;~?oS)g㏥&߻S{|;.Sv:kgO\~n,;1?(灞+|7->xNC%'g}e]O] }`8iO>nOu?Y=lթ |?\Y#p~{ٷϼl޼yqaWc~ @}'~eoz?{=vwe?_x_Wǎ9ktYO</?wG?kv<v?|o/E=E/ً8xw"z^ٶL;vr_/.K;"muofEW~ޱϗTח:s=.d#GWF=̾?wg V|GŅO.IwG~;|빯gpQ{ٶmm۶m۶m۶mwwNV1M/̬38 vv1mvh*i!@WFٟf zN1ЈCv-`c4 W5]\ТMY,W\B,m fkQb(bZpPZV]aLaayGu[y \2c1$4+\;!iE6u8檡np)ay4b dKt**k%[U pI5 UHq, F$.y Ig/[ `|0 }ڟ&@`XG(`pCÓE3w`0hRpEFi8 aYK leL7|1R۫ėnrj=֚ UXT<:-: Jq5C >y[* f`Di3OwA+sS!-Y7yӕk4+иR$6ESnSQM,z;4:`8̪htSkg;gug=4)>Nf$i#i?^ fE2/Z@l\W{xlΞ \}C:s:8[b.k-bwEE;; ^$dQO}ZWy,lz" K˜@xl6*N ;EAa(nɾ+hBXG84!A2  `mGAAA$ X7:#;1ܡ"U1pwG~<IA/F2>+X @dj] KǮ'>G#"Ħ7Xk1ƐfXGP*Ho(IKl$YuHy#+yb{OeyU\䊴dH]~x~ˍPT U4O0eQ(7NAwx5JE_zW ۝i#)424V$~;p[6A5g?iK1iC*6|uj|%wqs"`3j1_*]W~8 =zFP?I ò=_N:M "Ŏ_K h̃RX#dp9SPЃ,&NXM~[\[B#wPhQ H85RՀP8 {<pɊB ǧ4.QNыPPƧ@\N}) _V DÜ+L[a *KaMb[au>ګD%٨±Վ;ˏ_ &#a)vήIDs  6 y6!JFޤi*pԧ?#ߓ#8ːf[ iSRKANQ9 ?Ŵ)Ěe&E7'N$N tyY.In=sYSw Rmxgy%(v*7N*o F%N-JהWt|0\R bՀVcN67껤:0)gf%`ŴO o w DP M FG6` %B K#m_aR TqoDILTʥ\'4;s+LŸ]0{aW Ez;--\W@5ƎB7nYW?AJi \Qg u1-w{ᓄe^׈} 9Is" w"ԯ D ;v*AHu ߔm9 ֟.6K//D>ӺI.r]~>lwB@4!Í (4U(K"p%pT:|PΦCfAz?w\QhpSp1(DKx}Q=hrk+-рhq;](K' .opT]t7b`oԺ?~?:}=$qG4D8"Ø<1Ѱ1FPsx89>;$f?[7Ȕ7@G~6<qY6 ?eg@bf@&DdgA @WQ*wW :+ljqMOWvx@ >x>8!nG>x.<' !] wSOl<||qp|@C[5kl}x-8=.%axnOa 8pvv\5 |7w(6ɞhn3kɢ@l_D_ѓ8}%0VJzA2eW?pQ+]+RWM z5']a "!uCzID+L4Q]#tmD+/]<4f5$)C$?x$`,j/YF5ψ}iU;䢍H]$iHVJn-\6'ݛo ?t.ڸZw-u^Ե>nVzੂǠb*ÈN"=ʝB _M}[zռ`yՑ.w޼UQmP!P7.8mO~6Uf)M tڀU-gKb_bl^){(`{=*"_vutYvw/!/ CSA5QQqIĚ C(;1ôƪه_^-tn ]W!i +$%Z`+"@ӬeXfb}qXL=|r;:صpc~iig*14Ui!F-ӂD ͪM uj7cgn 1Fiڳ }k-y wZ`7Ěd8m :pk:̽kyu m pE[5aǨf/739CyKicwPx-ǭr|dRax_cc [1k{U1 Ryzu2ZA>RLjjN<|`ΜRRN!Mu;!,W%|ZUVUN!+[ xZumkGf_sn^@繷̢?מv*VZS։tR< 7n'%<& Y} v݉n",MHquh| lw\HșKi`.v- -(Rm[vht{l6[A$Bq/X{EV|%\d9HN}NE}6 rJgwY 4~i U GCxk JMr ٩׶ 4ן-WmSin ȺbM0G9;:95 NbApeR,fy% `pO$׹NKW:8Ioo`\0ma;4xN84(kp T N]mXFdԼEi/N:!ixp!2͜>i>W)\C" MۋUɛ|'L,lǝgj!&3[Y윢HQIϴ5|Kh] K~T[6SE~HT w QRb< 3W,s*TzvU!U֟8 ,k7 TPڢv31?Lٸ6:=3|J~[x\53In&MK-v#sPLm^KrAbC٥dCjF3wYrr0fM! 09pxb;iOk48jpι.8n-K.:n[w oK &bXƅyK @qߘY!Ω /›I.LKa"+*1>\ttrHCAe-q-MIBT:{ UM^$ތ=&/0cgu\ 2\%CGfb]ǜ2Q'T ?)Zk_VGlw*SX$yj҈07*k-b+g`P^Xf]b-cR Wp ëG3mG7fqG緑G`%\# KB +LVˊv,-v虮T& LmITv-'Þ3/e̝*jOɽv$}{YR/Ao-{* Γrx~gT} UP]8 p~xǟ@6X>ۈxM8<8iƒqeuҿI8 nxzA+'x{:q=A~<(Z/ewc37פX6ՙVQdosaʭYJbK|#8?v*.[Jlwg}۷-Bo8=ej. ;3[$i-q(]g$dݜ}9u=HhF{Gm9s$cny|Ե"M͗2~ϗžYU*l0ejsn?mD7eࡇWH 1<}|>X9A{[f#um!y;,o9(uK/0 '{Nb0 X?& )"d$P N1?Ra䡃TߥsȾۿ1z+F:qf@Id N%}7ʇg_cgDš({&WMu> uFg .595j9Ь"n[lR'K]⇄Q7uĔc}Ք r>?2gYT,Fݢϻܿ;?Y9ֿ_ ~g5=ckpec\Ꝟa;q//B}𻳳g{|wJˋk!=׳+{xGr >,YȋN{!-ub~N?IԿKYz&7>oN7՛k>Mt7>+<>L~~_Gwsʘ?ΣcR1.Kz6_#g_}/d 7os.19k.ޞ5[^۞|9v^? =9ɥ!w&X"g,[a:U"r_3qtN<5^M}&A!z"(PmrQC)wfC0sBƒ} x{.1D;OHH]دduו5B8Q)T jB+> o~1UDU/z$E EI >$U-o>P8 &E%6eVVb/JxR7yf"S#N^\[[1:xuvT/]k&Dx FT2vY,^Lgv>>"cc:Y??gop@ty FwP}I ȡp5x-kjq ;_r!z=F׋= .] SYf*݉tv3swZ o90(aDnu>RqHAlþbyxDჳ77aNL'ٝh~_r.+ZXXVUa [M99ѠufN*̪W7g:XK_v IݪS}Y#-S&bD-&lr;PA3WI[{S 1(a9UA,~Ml=5 #>2pfG +B/CȒ|p)ǽ|HJ }#  !%(|?Q?^D?R+QzGlJ"!{1Y2%rY9ʤfF'EIƬ_L̀J{Kt& iYLn1Y&[d?:\Y ݘ[XC|7+Cx"JM&p%͊ ƚlmb+NOAX7Ӯ$vBKtUTNwf F/};JȈMFS3fM|/]j!yfqRRw mg$hm8Z;%8SV<8$8(FsMGCqgp9\Kj)CjD<%e6 \++/1]YN A2kʋ7y,~Ց|4:˅B[{L4BW~%v|gh{.դt2+qr/hlNg!2^Uiby ueiYWܮXE C"rgqwIx)K[ƫ4@X࢔8ɘ`0Ahh3F6P[QBɜKxtI3|D/"qĢ:'| 0q< ;B7Et`QxAq OAF~vTBP`)8"#H='țfA`,ܹލƩq8}RcMp)&\Ags )w]<Cjr0S&H%W-a&HN%z7h-GYMat$ɢV3VGܽMMVT'3+`@|0*h3mnOp1F]OxIOG8#~tFkU#lLh5j~p~:1`KJ(mpd[X$[tQТQ)&l"65<7 EEɱ&#h+VЖ~; =apO.fy „d&V2A*e i>R2j`DL4X44+>ui:w_\*OdgdsHDj!zY4k4I؁tj5~1, -L`%reNLjPqNh$JKtV3#oVg -q-3u$I6+)D(/`Pp4(ÚԊTݴ7dFR*o_G|2ͫ4SAc&bFQGzkSkY !J#k !J'Pãrz7zf1WMuv^j84Ҽ vdJ ;+2k]+҅\}O@ KMfzӃ hBaV/UI6hA2%iT¸uy[԰c9C)܏ny ]>~Kl={M t]裼;rJڬ4'.NQ&\ 9&"CT #%L3Aąxq>V&*4R:kdBͷe5ct',۔yT7G6Y#{ ~Q&j"Ri>ވ/AuK R%bz`SDNإ daB'ϓgpMq[ {"d5@Hq iYtb4cbAӝ?3x2F*@'û@n1wtb78wJ/M]X:Lb'gOY0O2Hs8. QAr7)#U4ۜJ!S,GG"BIϙƖ h՞RDi)4&+R|'k;Y66_:d\R%$&6ěH'v͸9%;52e*ORqv^$[]?zc1 q[k;(icW#LH'=ROj!V;eKCs D6[蕩KzݥeNv} Ų"2WO֣.69Bhx+G)mSb$Ab7ըIdxz_ naFl LrN,BӋ4`aFET|'V] LR0 ZY,ªx,θ|Hz$EnfW@WBS^,T=/јsYŌ7Eh籜oUiو2>iefqH>ٳVFԖMFf8w Qb:OnJe6TzAzVDĴ +~IїxY=4!(5 Ve1[B ^Ҫ*05'H,0[ޱgLhGgrtp0bnju|gw$| }Ne㠲&+~G64UٸX,e⬛nDev8C9|sy f>L=6K+hrI7B\!@;Ha4@Y}h Z1=gV+w'whlzgZ7jn@ gY R~It~@jj|[1js*  >~:0qT$##1h"%1Xy xdBSV%l5yhLf]$O @ # i$ *n^5Nˤ DgMdȼE(">,Uy3ք9"ʺyZrfF"' Y$a6_@4ȝEVyg4 YbJM rD-%;Y_sr.$-y gz㙀Upo]ge7zly>ztzPD}Vô uDo9;Ȅ x Db4}&ǜ(F|`D 1iklIAd5qkjKPsє~.9PDžf.+6Cg'j:ObfGEgaJrPx4i&6 K]sb,X>Œ~JBc")=4KAa}ʊLw uR Foj iIN-Ӈbԫth( 笜iGoГl0< H85V~z*nyX$LۛWQ_vۣy]YfۯGVs!Vݸ^'gM *`ZLj\GoaG <2 pEGy) ʉ N2XIQN XIBJ jX {-lG{])@u0S F0-Lpz+tpۭ6fPܳm897>ك[ ]j/๠gZ_![<{,3{@g{p a`ޜ>abh 8^sVs 1vEتe %X[JU^*`gy5xQO} x.%MmװrXЅ*Ꮧ-!$< *%n{.Sgκ˛} ŦN+C-Jn-J=}UC<f{Og:W;;A6M@lD= Y/!W1f4wϦ^A92}]J]ZxV^tlsOc\w9̳>G;pgDtIn)oFin7Y,wYguO;gځ&϶cضOZcn޷ w |΂ =IQMess3ts> [#oq_sos>s|T'tӡ/^!RX^Par4ybKҭ"(itte,t;eG$ɹNsHͤ;T|e9HYymn^rKuށrPr]De,U"iH;'7|seW9HtvwfJ:Jmb%r}H,:PeS.taS;>H:>D׹TWI>7WȮ>|wWJ:IsZIowk|[%w;ZmR{sR7CiRYa'a;HhNoO%%n_#{_n>u/! g6C!^6,wWݰb^zAb&PʅDVXV pdmKJK0_eMm6o8?6S/`JW 1, F 'ԍ!+9BWJ` W!#1ƭG%(CACqP`:`4OWAX5.a` vj2)lM *(Xe.G> zFYœv `_aTGnBu1{>"܌zqrS|(l-=]!sRJB=>5svmisb,#U&qa/ܬ|/{\Vە;Q; .VK^j]uJO^::+jL[䘖ӄGacĵh΂g忮%t K :H -//ۛKr[;Q;B7I3T'5=.Oݰ5K7;-Vw5_mߓ'ծWԲsaXQrW% =e $eƭҢWW&}!E(!>HnqoiM?p μ,Kef5-0Y@W%7榢9\&* Bgx y%G ?42­,lVO -8 ܚMbʀ U41đ2DR\ْ.:p>go\r"-D;UMd3$C2 :!8ɧuxtz;\er.1jm=:HxN1)WWHEb.vl|b&J&̱j̐?%-,0\M <Ȯss5̂`vsMgzi ᐁtL\WE⸎X׈ͺŬ:cTfk%}a=*YԄ}Ո-oZ%N .^NZ*ԇ1 ScY%230GdirK:vf1nU hlNX!k1FS۠ v%6TRCC9̐Fdhhh`˾0 JȑKgZU55 O¹]!$K9bL1|k@&mW 3/@HҪ9=fDtvG*QNbT9Jpx9R$ZgKo(JQj/ƙyM("=uY`z42UVX1B)eDd Xfs(SƩfږB?mFeӁF% Yӌ;sIv>}3;wtg`g'3?z~o30oy?ts#2\?y=_gaw|8yP~}/qqrϿWc R ]JGR^~0_Ocݩn:4N>F7{@v~`Iea#[C~*a 4'-5\냏wRg۟w f3 8'Mw;>jޔ fTC1PlCs%1X%lX>pk@ )jO<>W.?>ϸ.<'cI~ԞKq iUhAޑk!=~wDͯ?>w>hdQ9=~t$K*w vtڼ_ .0ŧ:"wѠ_ĕzƌ(O\]BZ"aZ"bq}p:Mv@x/-m]1g!@3kKohy- knQgѷ~pJ<ɭCF*j~X]8_ܸ'тE޽ :Ye ^ Qz;fdGMQƅ[}0]<&͢}u#ҷ>đ||/AN 5 S$5:@- |:D{gN)R'æNcpBSȺ î,Dro|Sg lKNs} 4aQݙ{S5ڊ ۺ.4e5HPU2X"~`RfB=/~~"kWX;sB;y| 4=+|\@{09i2 ZzO\!Pz&"y|,mDE]92S26U8Q x}nlW9]۔1T75~|;{ Ώ$d_[hԘ ] ^ r?*#>+׷W$5cfLE̵0/ ΏY?\m ƶFLcͶP*G݂ iu u_s8C;:ov[-CF^Y (6_= 皃8?. y)38k_|ϳ'y&BR,7Ԃ}{8;aKsv,\W<`FXJ-LN6o&rԵftӵ)FN,!.dɠnvd@om8n E7Fo;dujWiL]ڋ–I٘ KI0d}#_wL9^T/>;KxuS?˷j%[WZ54$}<)٨ سdf,"*5{#n]i7&v"9JTNU\KH#%UۮP12n\78<F[miYLjՆܕ/esI@ҤmVtJ_9U+mdA fC 1S Ֆ[(aiBPkQ$PNo (%g{ҲG'rjE=2li7.[3xXy]EuS-SnhoȚhK5]Mw,R#wPPoGgu=ъe;Be]lZUGxH |)/skN!Kc&1V|AJ%CE UH%S6VЯؗyów,[~ϥE d18Ol1cP8U ]ԋ{acK\w@8{Z;1n\xGf^zao 06 ?:7O 5ȌT \R'a ;NzP/?w Aj951FxiKi!Ǚ<{P (tTTno¦Tܧ&vo61;6vG`:tXt#ZQ41Oۮ#;<4G}x#9Nr\tÊF^,^L-vm~kd ˖~aͻ(R:̣d0h7 U~tv/Ю/L?dt]䙮O+-Š.̙>'B?׿Hҳ /u8,Dpd9Cլ'Q7,Xv^.BF`)04!.@\Êצgx#@y)@6Y/OS_յ*ԡ䗎t^۝lȋR~ɟpVo^fa ٹSE\ҷ'^1+$Gon1Qߌ7ŽAQZWsO6S7#'U5Q1O$`a^HѸ6L>.::ջ h\bF[N7#v~MAGn"u'6Ȳ,RgJgݵC@)]L`# o#Wn4H-I}geB#T:f}sIt9]*8^P+D*:-8r_՞,Fl"ުh@:eF 7Ľ |SWvw/u'5idkWH2d$K>ǰNz0/Fi3)b4L=M5 *n*͟˜ſ]}698 a|"Tl85=W#}`H> AJ-^ER4o!k.1礶,ˢȭ?=cDlH~곤UV)J;Ncc/DJޢm~l+nAz9[!փ|ZۙR^$4wb[a!>BV:KSM;7+E# [Mb9pDE (k'2N}rahN/{uc Fԑ7#qpÀa()_O:9Vv+~>L#Q 8vp ճzT{=VBs 0E)>_U$\fm̦oN-z!mRpRw)فY-ReXzxe]OmWsYPO& YW|{ 4K}8V[bqx :<$7!] c&`Ql s^%%Rё1 /.$U6!?QytIZ]ObD;"zvX7a!d\Ѝ Rv̾EKZyP/E@5pyxuw184K>5'y{|i=X5Rsu-7)p{}.H6#7Ly%OL0ȗ EնiQD"-azԊD>+OqsFw4wH:VZCA>Z H+3{e_>69s =T9ҁc靟(R{ūPeQ;"O1'Y篧sr\[y$[41>SkFNUŀЇE~\*)9J{=8Gν%Bp$1yIe&fQ@i}TXr'R߳Z: J4uswB.Cz $@-@eF6 md7wp˽w #0qKjpn" 2"r"=knKHq5EyoNa])^qI ا|2B֟g P z98n;a?4}^ xq硨x!iĻlr+n, A^]?,_ѣ4):~x) y~n8#> .@5`@ C<[I52VW$'}k?/gh< )#oÏ.W 4Ƅя ^D^`3#5股!)4z)\bYT뫤ioRL<0.Ն̨Ho*γs<90VITvF)/ }X̙kgƐ7@lsY/pw!Shɹ;zV~\5W ŕ[ 5,cFn,o"}Cl7 1 0W܅ۏTMmHssk َ,xzփ#!%Z˖'w@I7k͘?/9ߠ>3Gl%˫!$/~5V?WLl\&/sent4pE_ZOop*|C7aŢ10$=TULhw|fuXA?Wu;|3Rpc/嗢>D;fNǠsJV mZ6u:+zNw"vN>Kr89Ϫwp>i,퍓g1{8X5N]n_cRB91d)J?OOРnZ QF־ӛC*w<7tT-8 l j.WJŰ9ރZA>#:hd뺃 B030fk3-{ʰiiXr]jMc,/bvzeGBʥCt%GLN {j*JO Nv)1`%RMsM?yY ?8w.Y0ЄAҠ͛R@M  Ȥ{HFny(N>JjoD#H#.Uvdpw`g cNG~\bAASG={NPvza-c;D^Ҟ1֕JgjJqNE h  F}@xH{'k28pļ tVOfծrjP-_3 #(< ]ɘst"6>umC1-]7N%s)̬&]sVwlVYn1Ɋj_6I= FVo~6O%`rH31A >c)g:'RV`kc*|`v/4 pwb6UAjBѺ~՜.77ʻZ( WlȜ@P9<'5ʻ9W"8;V5GL v\"R_ 8fn͢* 4¿>`[TCWu#R᠐L'ayH!@iB^L[_a+P:汤T-go67 qy6JyѳC}S3?:~7Ɯ3|XlC^d5VwRG.66N6[2c;FmHʲ+Q`/F6(aLvo~qSw< &HX-`GE>z[~ܪ^?H\fibf\Tva8!I:kQb~I)O{0 ojRt<ի68n{t]( N2VV P{$ OL"*%YtyZj+GM~{Ow,Ui%:M%.zr[%#A A2:Ͻp,GVE55P!_;կĉ>|V~p ZyYyL#±PXI煟f6z̮Q"? Uozi'&2? ^^S(`6. ,&Ze'1;~TEL6+m8adG 2bԄdGL[̲01 "nh|.|40w Q[򀉶uDRӲ~dQ5 i@MÛhBpc)𥉡[=L7Hs2ERdQayt ]nD^y J+LΥ sĊQb؅@k[ٌbnZ*{ٽFjE+ij~k Sx)dgs Kb3#=l)1=O?ڀqQ&ՖBG$v2 ]uib ڍ*4HcSB&M9 í dex]"Ma 91qlڪ׽3V]ʹIC ̈́ljxj#W$D̎"{8pcGY!sWtn KmZe[̤4=@w,R!0.^ȸcaDwrQ.*# deGq_pipM6pii(mOy=y+# @z4rQzxYrApA~hETT}lzG0h{Zʕ|8(''cpZ1bFA }23k)kC-ՒPoqT!HSvdC EӋ:p kHOY`p E< :_E/Mӄ\apՑ'UzD2k.T(e&}.7FMKK!@FȈ|1|Dp|=qK*Ang>CMp05=Z8Oʙ<=.^Fe~{Xv_W@/(\T<}h>(/ ya\3Jhg m᡹%:F&NLE l)H%tYZعϛV kx^x_ Atc{_5P.;PQABg1BS꺃E@\ dk},:ynF"F `\ױoecUj-Tgwxa=V6/29 Y !jk*QC/p&ִlȟoZ_ \5̓fu3zxਉ{XG #$AH UwX'(7<{R?Oap0"$?0 \F?zçSxQV sȕ3%@(oNŅ=/U5rI fHݧpL'1*Q֔r،I\Hl)FӍd̠٢#gnܩѦ2%}50İq@wSt,%t[nu D;.m 0arsBuŬ%0c7.ݘx/,,7CSb@hB;9C??K/(pxxLilrhj^S[G}Jew؅@abM؞CْaL2%:C@ 2>z)o( rw4Nr h:5cCM @8C#SZ*$L )2Cׁf6U<ےZS+cŨ!CB7m"]f}-nws{Er)[" 5 sĞC!k!Bijw8F}"m}? J>@8ms`ZyBnt>4Jr`Zhv*_eEBw Xù0zN0zZ; F e|ǹ1D.!D jTn"W_Xƿ!8u's%2@;Re[t`y) 몁?

IE{fu&_>-MacbG Qp*){yxv#ёz$TrK $nRHjzj ;s o\+ի..1Oh=`C_[U@K6ZĒzO7NIGO , ;5'dy19\Ť 6ҒmAS1 2j+h)s|I:Al`L}9gLʋ<0%:3[Jxfo?dK/$ )ŜI4avD(Nk쥪&N^\zLs0~L~'YL^PS08pm&1чo)yA#QÕc0T`Vf]Eu Xhdf0˲k(4vnHcZ-;.Ԧ*FmMǥzyJ5]3wT] _&"^*TL.t|6d R0+8B@#kmS/%r?k{8 |WYYRԠO7|R@Hrel՝u%q&CHFUѢ^ݹ|{ *#%G;3J%˽oUFo}`2b OWG%ʨ-W*ٓTm : N!" i(dڝhD2JˎRw{9&*jcE};5Cԧiy\ud@/rsr}H\†x7C"jo_xr&1Ƣ?eUMG5/c1/pGc(4?p1ҋ!Y[0DzpJ%z$'g(O%ZKeQlI8VL>^[#7yj _bG=eߴx#־_}\%˹BKըCڽ﷠U-Y2>"O%%խa_Dko thmP~ ~X71 L}?;ف.yN bWxBR׮9ia_HLTkGX||R&^=.0Yd/XxvGG=rf9J Jt;mV5stdP"0L..(P{p!t|>ջm/ c)Cי0@˥N<'# Mdmg4..ɤx(03(_68KVzZ'C\\{ӻ{b; 0L?Bv:/$fX'i!gJ?Sp|px yc"%?z+~{}w BcokAO_E;Vq R8&pἧN< /2%F|刄@*Iݟ1*#'j7Z.ןgFYg݌gFF[*,=C-$| ŠV ˁcQ%/yir |qp,5*6D8sK. *` %$틌pS1r@:=BUD)=W,N<"unsO7*sQ/ށZ+_ߏ9/02{pkgnw㹆=RUTQz1iW@9O*X<B,>P 3kMAJ4%^YԖ BR6Ͼx.yIQM 9|%K Z]!??S.3zww\gtz Ϝs M/?0w^WЮƴ#| 95pmtY/Ѓ9/Nh}Fas.Q]%p?zoӗkY| ,o@1ʘAk?{GW7RH~u M{?V@p~.uԭ>s8E}6B#}\lkOW'.X>QT,Yɨ-!^w{? lm۶m۶m۶mm۶:/eTHGU2ie~i{)q2_$5H ?\P,D$dy ##8/`kYȼv vJ.Z3;0ҭN9{aq =3rv)'#l^io/PMݍCKDf3`?CjF'.MͷvD}`r>hkOD>Kx-#ypp gIř Cr#e M)D z*ߌҶ==8 drFvv)AdM4zaK==p}$6OQ]^\ A}"><Oyz2s`R8/L5~8>?d~<1{&1>֟,MuI% %ZWU# nDzp6 b"b,x@tj-B+Dװ*4m+pe\D#xK $Y&FԖMŁ2MoA"eybyP|1!ܯ* %PXC}zڢ[Qj(f,qVΛ}!ĸ#}w Z~H:U$fëTۍ~#ZH"\WXnNaYFcYAXRI}H8>,aJZp#ֿoVKBRvKP^6 s񠍂 jB!?{3ueoJ ]jyJ(>?vr.Ra?|7Gv[ c?z~#.RwgKV;}|!]z[8F͏PL6_T DkL@o3B#Hb{Z/mc!Y~C ޶=\<,cK v3Q]20l* ɮp>֣ja/Fd,V:Q.D8װm̢Ce^h pgHyHtW8@zǸvO#~W]>@> ]Hq8vz?jT;G:*+60H]sH|AjP\Zxx}1'8{[ǹsĩ~! |i}x[gч:$ᷢ'[;-E( !Sﱦ? 4ӕbp+o|L$[篨10RюV!2Aq+_V[l hӾKD-MB1rtԘ4VE΢@$=ZM@u?ԴH[~Z3S(8n8!l 4U5GX7q[T$NdZsAKV/;4k׿֍U =6܎ x5\ّ;O2*lV +A4`8|KݻQ0-s#Z]&kY3Է& ;69 M| nEU8X>y9(bQhvO7j}R?nxUYzL^07F`p}߱t6C1*ЪI5OaK, ,X-@bu$<֏rg *]o6՝q{Wn"tcE`4KfV n*>nS[<ͬ{aQ_ˁd}O:>tNO}"a:N{;k={y ;g4\Xo#|n.nČw%͚QyQ8,t_qFPcceG=ӶAD\szPfOs35>h鮢kw)g/I7]:K{+R J>3˒yz'G<)Lꃏ _zQm%N^aSw-}R7ZrR%)f+!sΟ ؐ@Ĥ%/͐:VPO5,1D! ↋K;٫wZZ]Ֆh E>U)Ⱦ7 O DGaiM.>%yha$[zL dQ(H |PF`)$_bꁒ6 ^|)6& 93 <.v.fQpl⊙W7I@afjWWYN}LA,F;rL(ߨdUE?f'O)lq.@?Zy'VbS:¨Pgԏ')DX>x*RL%W3RVP(5%e%A_`[F)r)X<;6:^,'\*'Jf}&;ؑ"+ ^O@± lQWݟ^5I(-NbNTNϛɻ m.t VxyxF=Sh?@`1{m4XnA£ܾ%~lG o9WQ|Gc^3oG*qG('~N4?^2ܙ`z}.OlMcAcфbmYYbeR'8gҪ~~=FndUI>l1|;X-f,[QTvV;V~:1\߾+t+?gIc g5>!ރ\ x71_O烗y%~^GBSWh[s_~fvGPʫw?tp>ޭjVV D;=>+QrSka$KbV[:<=AQZj,p-8;z/oY.? ǭl_܅toW\uNtЄ}$7_d5}eQ޸﫯{}g.-to?/!UT~yl%#ZULS.ed0ө>\1 ɚ3Req|`X\O]L]ZN0s> 'PeiXࠗ +' 9LziY&hr{5(/1%~)lFAW,*Ӱœ"p,C-nj!8]Hךu@RDMA:~S?< zvF~"(Vt%`X š4- ~`tH + UKYW`ý;}|e/؃`\+僃 ՚^hA}܋8a 'PxGAػӒ܀Ot+7&O8ʼn%CT 1Mn4|sb>|Vw_=x ODbE4!TKZ g;Rݹ$tk\A,75d?4Bp7ƞi(jE 1uqk]'lA٨# U ؽXj'5_2$"h$)R8Eb%#[VT@0a;Cl*ŋԺIk?sVE0B]DMĭB\|cvu=`ZDj_l1ؔ8 W~5YTJ\šB5Cu;T%< c{p ljDaIqALOö*D34J$CBG-CD!U6{`eO@4WT2U"PLHb} NКƌFtIbL*2$@!К!V*r]Er0'^ auﺋs@F [L-W q@7VX I1>Af8.gPr_(Dćz._{s]sﴩEX7ZRrLIcB`lbzI{u ƪ&A^roMhxݪ&@[cD%:ʇź~RtG+'b cS늸(WB͙=ܚ9$Rcu<s 14UMj%XP:P/OǯJnt6VP%uC0]7%Wg)HVgޥc*p|+ʕ?mMkpE~_WdPd6bt^zy @ ؖ\ Dc@PsT Q]8m)>'|qH '4NA%0<\]P,M 蝳㗽خTG'g\agt5Hv5'p SaUMHdu1_?Eo ouO0]7y5yrOH?wN,Ł5G`o?Ҭd]d rH%W>4 gqA$k|n@JKe>?s<zM'VQDL'[ig#r9}3FWa8 ~_ӣzeԝlْ{InyH_DJ)0-0ZslIuʎb rX?|חeY̱+"}x ]q#suE*~NGy4{{t[Z]Kvzv-n)S#r_b"5D)$y7[UhuAIZYSJ4t,Sܰn{hTfby?AYj:x9@G4'z!37yؘmgTSØ] 9BA+s.ֹtɸ*3xg1@ʼ9gyF%&]G'3,⸬yA,>{FF8U BpW_ˈ\a.{{E '~K8L7jqM56Qv48FߵiywxOq[| nػuPqQH%۸UM|M"Α+؍<{C`#%mkQLrg3MxۺY3W~{FWGA7UC.T՛sRptyb/~lu6ZP2I,nj\yps,ҨW }Ѝt;@oCڕGUcm1֤R=Ǯ3G!`G!e܇Q){Egֵ)X|`ot׆RHJ/qo4CvgrbW l!Idiµ/^ver|sH삳=Ѐ )hDW>:ʹ6hsU*zad&#k‚ 4 H:W$2`i;ƀDCPu e-/N Lq|?)?>`~?)[e1IeVi1.JZ'cZc(ܦI^s4wZ Eg3[+y},νk+߭ip5UN)'`63tDޯìL˾]IDN ;|"U@]6G~?r@@ǓIk+,0N) t)_޹dc䮕Pp/UX%ԓ8A@9Nvt8;G$ZvRkJy)BsŌI5lZ}Bg{G^mp+8"PpSaSЗ hA%|qyHi׆gE&Уl@q ԟ(KӅ#s$8c.}t@M*lLYŬzg0(F2ĻߤaAHCFnfĘؽX!S"CUk4U\;JXPEL}r2'02fiGCH8'đE2PV%}aB2"G\ZgpMQ4:e5L)sحhZ3Y43^#XM^F@g?RB[m.ي;e0EC>) X ;fϠEq^M7͕ӵ ݂JS1;[QhhxnW){՘ÇOCm p5'ЖUR2%6e!_WȤ&3?&Ls&&Ip&/thGv9>>Hʘ]-rik 23xw9$jZ񈛫pK9&f.KAhPtR~Uɂ^dBm8z+ 1_8ݍfQO/ɼXtS#E#@|I$M/rY =a:&qgs/ڟ@{7|y[*a |_#<(Czu7k}z>>?qzy#D#5򉙢0Ôwomfj6 C3重HZw$0E瞌p"oC;=<ݬS])"=%O'ѡ֋jR q`!VɃ L&Uz3^pvO !oo c. H>ht)*w5響#q#63?h7<ИDtWPC}9mԵ|wߦZvhD=Zd%i-~_z^J$9Rzifov}MBx%ڦ:W6E(?jy}5 A켔K#a3ˏY$2cDu^3 |d!ԂJ | 0z5("af:W42 Tfڂg7[XJ:> 18w2q&k5ڜߪCU#93 ha0rFZZTVl i+G1# )x3`FQ$?%(ģA@|o>/zm)oS[W''Z/WN7_%w/ab}yic#sikxcXS²C j;9 d`="Q($úLH yJ_j@^C{@H@-@ ϛEQ9,LAnzjK'qN>W8v:t4~}1 \' };8MjE'~v["p tZƲOw`?FmaJ3Q/9H|jba+xv;Ja_JJ 6"у(;N)5{] *H.qP~ZK݃慔զ]o&CT]V8}%KI/b<}$Ԟa g5 "UZysjo{dF:Zz7YdreߪEG9wZ*$x @S6X s!=8b06?Fէ.JHȩ 'tpg&&)Iz&DP,9-H|"jLEh2ld٨ B*M]b߀*J uS2-A$zRw?زy|J۪2$3ype`Omقڵy*`։j Nn_s4swId&82As{֡Brs!Ktsƻ= K;$"' W=Mxܿ6;}-]2[؊6ޠ| O©t}H>{4DtctزPǭ Wv3(ff$6¥`&a$0~ϩ~aE\<% ,@J ˔ޑ %\JACilR0 O_%0#e¨RfQp uNhU_iEќ#R4!Q:}|ʦ߱"Ja(Sk']. 4Tx.+ &d7߀ۍlPfbi0~MY' oN[  "!CKYۆAptԀc2N  Dغ-'.R9%6 xύ}@S{p@".qmB,33"8|OP{Znk.̤gr*DBofQcUXYU< @\=Crްh¼HD 7b4)ġEC'?6#4pJZV˫ª|6 ѢB6> T(HP b`,a Q )xW +)0뙞HDAkv)Q f&95B_Z12C^9*.G_euxD0 t??;p{Xv}:r)P.>\n orSD(X+;xW1*g{A0:@ ĉ^BN%X#=ԉaA\ݵӋ .v G5oQF2C\)'UZT\i&߭$fKk cœ-&VPCl}c()RhT˛:qUa,~Bu:n#R@"_(}v'&lM} W:f,Zrz&\߽ -j}e8@gܨ%{6ӼsQ:&̰rMii،" +} ="PE-0䟎7*jAƚfNBO I~ugUYVڡEF5i*!{u'ħ<6Kc+WLm~yޱB3Y+M @49e۽'khLE877l$cy++[.}͌Ue`){|Ӕ}E  [ tǺ -zzϸIf|^,o$fYl0aZY٢K-dü \[@;F |Q 20Fj9"+7tb}ʶNabWWbi9d*_kYh0wz*?c%A@Q v}_;Q^ úA=hv4IW+z,UhsxavRjJUgw}!POwvh{1 KOgpqOؾqw lNH3FiuR/\}sa< sb5jCt=e3G'yؿ:y :ױӡ!: ,{Rp٥D:qqN묙J*gm/]K껔> rdҝϚ˗v=>Q_۵)[Bn4M~m]; tb{):zGD3| u>ԁ5xqW#Ɖ[,' 4$Y9i[W^#,gWn >gTgMBڬVt` 3|GQ UR~ P$୤$aSW߻4uJ,HS6iFZ_\512q)i=J⦗{JVt>_.u=ɶUL,SAiE^^(РU5/G5 FCl,.R`L g)].OR͑t` R~Vh}mhQmžS .jNNj~8ǖ[1f"xtR!m)h !첚wm\`hl!ёY^6;%JV[pY B> m7[C\QBᩮD/~+YqyJ: 좡{kސkIgkÌF]U%X"tlKve䞃Ґ M QT#D℩ljy9HRTh%b=\JYUV+edj%F*ՌJA=*X_!#LOZvpP 4[ki'mf}w#Er.Iξ=s+YrP/ӱgʣXn.FQtu[ʯFQ- Uvajͼ;"ÖG)W)"pؚSMLM tEze%0?c N=li|r`KL{7o"TM'8ߪ&B}JT'd}ec[G 'bo_0t3qhxX ½liϬ/pj:f`Lw&n۔FPvJQvKjߟWY6Ln3J Y0WPMIPź?ueH4##L -k+"{prYnog:ݗphe`PxgXivwe oSjHSs u†fҶނEg' ]/*~Zݾf)fU>TYqN:~R""Kũ$ޜrg1r@hqʫgp<q|i cY bԮ#pҙ-C\)د؀=m|92^3DAѷWT$.(3,;Gcqr6̑XX/p^?1 60Q V}4rv30`-\8TrW2.yT e d=$TD杆_$X b0g_XIvV |̉h/1>8o>jU 5$FcE8Y$)J/cAd4>Gf 뒜bZr(UXIⲺ_Vpt!+ZD @ 4mF!t 3Fw7N=lRo2WbI#(h.szrF+fmUˑ5.rŢ;NUs]eħK}~غ|Ufm·M3P1UwEEHn$;Z=ѼYƍAJisp<#NGkPo|&;H~Rp^ p$}\^ipS`I^0.CE✯bCĖFh XA#NRdS[ NZujhZVIfc$/4ę/zUȫ.~E5ʷZ'Jow* H0g}-J4J} Tˀ^٢xFT+sȟ|Sۯ} ߝ_xuGQ&#ؐzu4#U9~cF^:I6(zZ_1QV24VR`5I+Pq!)t`"{T 'uM`\OlUPdr^*$pR)Tp(bZp؜^TVѯp{NŢCҏY.(Fg]cG tF`\sL'8%ۺW˷XN7z hqOIkzzj 8ئ| ZHlZhCXƹO$NG1Tp1uT9Fl^lmmEl>Q{gԓmgON>=,k̚`|a x]*֓f: ί,G61+#r TKْ0Rɸ4p*iSl}(70,0gR|ҏfL ԇ쐐k:VhΚsi*FUUzP?C{ EB.)/'u~Z@f~FjMdj =]t=X-U/#qy{^4kQ3gLH~BT?Lز6PB6܈$ wrDw!^t˞1YD1/oZ׾?GÓ dLn+g[-GVXPb0RhW_=y}:w#Ĝa=KΌq6CoUWr^\Y 8Vr+,kdMfύled NbN82m> .-ӿVv.;4/c کxwxGy[/] 4la?z}$q]9N^/nQzӂH-#$@+1pMM{KăE:>?;?_ҧۛ'}f8ʭIƺe7IZ F2 rqtq&JFʒ 8jĸP+Aiٮ{o7bM F"7(e/!*>j<<"SZYu\@s k >*x|ߠP?BIigӿќI{ LApd:, ,!! `LbB~&'/m w"P&)td=HUAy J}{H#g&6 wd%Zw7,ŖxXH2|xCˆDZRH,09tXܚS~{.ѕ.Q`PPW'8K 1z٨ìIUYٙ߂_Pы0RFvvvq[b"Q Or*n6(Ød+qB"弮 m.q9#Fy4&-魌|0rAeo%ѣ݋r8W⠀܎BOm=7gy_|C6ȳCcq#=8@bֆ67kAȦbk.#eAZͨ$rKAFu`vRCA>yt]fx{B&M]Wnjn1sl<1%034\bf?03uӜw#` rAt~Q<|fԳe5M)dz /cG'P5x4R>C%D$:5JIS6Paso u::=Bvl|zPAoosU`O/Jyrb5v}{kv_Kʥ{ W0t8רm~|qW}05Ɔ#O25R'Ut ՒZMb)Dwa"?%2Tu|I0Xm>8*"nL%R<Qâ L /ߎh"$ ryFpx*#&=K?YXB)較f< {AtsM}>Y$ʡ]Yp0 Ʌ<爨tRSJ9PNƃff}-"cHʝ>Ū)Ƨ60I{`tr98Ⱥ@Zqdi!M ђ4BfPƧmH(4B洀>"S;8~0JER@.&#Q.'lr8: XN榦ސ!L8_Aso4x~O `Sj 2B3Zp7Bc0s,lsu < Ԣ.kmaЈ*Y_o4iX2نCi}L]\"V ɔn ꤪ>tÙ.=}@NC˰.EG\I] A6FX+ ҥoq)Dc)l4^: l>pfHG;k] ]焒\wI~ ~E9Szbq_j4+;a@c9y-U@NA'#?{D!U~m2Z8欍~|3Cfk{TGb+GzՍ5ݖg(PS|UyEbMh{j;?F꣄aA >mS ?d#P{ 8XSikǃC/dlQjz9y,1 6!\DUX6}foQ7CZL:~ q#(Tlޭ>2Zm!ˑppZ̔3Kq9Y%ҔLC0bn{Ձ.}?ͅ9`yJ;{վU6gEBdıo516b=|Q(հK{;b$׺iTBQʾ}(IhIߐMNC$3zPi :ꇥfMt5}9a%L¼ǀ(H\- xv~y. kGK il"iקV +C gk7IoI`X<$Mv-]uBm=74ʿ&"5v0r؅ ~ie )Q3Y> ߃04]J2ljeN=&NS@FQ1M("u\;xO0͖]Z{QS-idw-{<ěf$BO`a4쨞6+$3jtz 汉o|[H:B(J]Y C:0BK5'EHЂT.lPÐ9!V1+ύruxؐ$K!v 9 ] .!98 I׿GL3vN3V+gs@^&8h,!?J5 G $?q+?6Wb*=Mix>i3'u3'7l)m*hh7[ECpn[&! a5,k>.vŵ3*iYde)v-bo}[kWn k+5d{5ֶkz1U(DO 3^RK1"*c ='Ӆ "QN镁~ҵHSPs@JVԐ=)Q̳*eca.쮀 lZN0G2"ѰiYmy,l aXRyɜj4\8=}:dcսN/-c~|ȁԗh 5Y kZZEp XEC` ;n=*)kȥ/y*^4~sSB5yU >Լiz=aW"Y~+ż[tϬ7LsϢhC٫;+R1&M7z]$csTMfFO'V[U?:TJѕS5yKrbJ;Jpl!J7)y v׌'%SޯI͕jLCvCj2l`Mh49_aӽQ+v5A}XKJOYVڢkceKw(@`+ h~Puџk?QUo q#lF` X|l[o/v]Qޜ7U~.ZG8{9R2Z`v{C%f[}EI;VHrCG|ƥT҈a^9<>h%6 #I?ah4'Q^1:Ub.irŸ"ljLu; G7^5CV=j tn"i`_]`Sa<2՛o!y<" Rm/TqN66:8L 9 2>oZݽ;b1(дH98Npes]# wz$S/HmKYC݂20w9ZZyJ(ou_ CVe}S+j۸cN{'IYi1 /Gz؏lD? m`jSݍ7Y}9=k-(P`7:yb6,sP~"TL kbT6L)5f=r'gPH R;嗏(VQ7҂#4b\v-u5<1:6&6WvƃB5L1E.]ozmtd >6 hx J?̬dRj…KB7JàhsT %ؒoCFfK:{~'п&-nD&CmSXKdCҴs'bmy_5E`mUf[dA܃Z[o)Y] `s^km2 mvx罗@.)-uSE IӼMTKBɤ:BG֯pwhʀvn8>*mz.=ͪM@jxƯ.Q!]4A7HL1aL,%(^c947Ͷu$緲 ( n>T2])3Eb$ဒTAf;]L[1[ZPBX\mۺ|XD4|˭"uЁ%ک&-Lyn~Q`Q V'J{*:}o3𱱲0/>Ӊp0_thi_`S m| &AH:^}3SZ%`4U5:$yxC??ח+`!{{JS֞ښ{iVMz^~?GZrrk[/]۸%X"n?,?✖I!w.l~X?8>MjvdK?gZ2çq#1ft&ûC2HVq<ˠL.Z9[2kehRT]m:9KFɃ%~;56κƺ}i@iQr`O 2k9KqnɈIKS|!rs؈zgC,߽~p7JM;( ļ"=$?$]@hL%mu.z0,`$ (U)II *bh␼F@ -aJ6x@n'KHpMy247ӪrB*$`&qXA g܈Dv Ci4q)ça>@6v I.8y%љ0JC5p?< JhC(BX <߬嘏 :KI;1:CMc|7w6wq`6+E2,n46v773NBarPG沤/ĩ. z =7Y+"=h.L`hbFܱ(CLkƳL(G= /q9z?(p??1tնf;|P[r<Kv3yO06Č$F :aNO,)x𻅹Ͱc'0Jp/֘H]"ψnvM!Su,'7&ḅ'`d!VjuA*%EN9 {;㘳m4mvw-G\n:D\\OSŹXs0QљSYɎ۵-M1]'H=?+s}ܰ_؎ZVjd[qM0I,U#f2Aˠ Cbz&`*3epex?6tlT NQfڡ%ǀU08aleB.Μ*Г~]g)e De4z-7P0VY=QޞUmw}1 |>PQ8,?K)[q$0*އGD%kXz$x hco^BArØtoe^;-k[U4KX>U/(fKalU "/$P_$hhCwk(&5vvt\ G%m25ʵ\a׾52ؼqhbfGH)Z)úhhLh_rh)ܴZ`;-H!Haq>y Q"(:yAp&PIzØw\? C#$_JEJo,aO0;љ pVdOc(`;l2ȚM|b !PPIKD}cSjRcu@wj~b:ix2h6<@kxzG@t+nk::O5"Aބ<j+zX@YYCgrHەyة.5rج]j̾1E3wibPby>{LH B)[Z2Nշ'&,2PrB O(3J#x*F@Xj6$0BNEI2Z"T0P (d%{,hrSzMBm{0;B&H.D=\AyK͎ %{D"y֏pq ,{8~8RcC~.V}u۰sՍ3\,@f)? t Sn$D @V1I'җQApA'pfw3,6"`XS?*u@.&?ghbʘ?70+`½_|Ul_0@bMИmZdrP"1A\NJwu@d-{"0GgK?D5T֛w `Ѧ>f%Fbm'CvU16E$b{kS:I2Y6`0ГAczIN5?ȳ UϴAeĒ4@]lvǤ??י xGOZGG':w .Sc!ꤏ__D I&8=Xj# o%⒵&>V-?,c޽~ vl(CV] 8C٤@#!ᨽ dN1r?CV)&E#)VEï]`vrdtri!6p'_LE<ǼL^kߞ46m\قM19)e+=Ock|?0AC2$P'|%04(>Ip.1hI|yC@PS)vэ,Ch#j7i K=R:_+3&ZKŞg%׌>i5 5ҵZ+~jʧ:i?*C4ăݴoO2 WH.cC5gN2k'r?˲X/ wq8ϟcXXeO3\d,;Xmc磋v99"*zwŦd 6xRtCt?L1K?iY7h4۟|xfCoRAela-^ce%JQ` IĻhVkv7 lD9܎&yZ :D!y-ԌIaCzAʧm{Xuj ubuA0#ǃ(.NѺcϚ4WvoQUl;%cςV$lݕH~oRj+hdqtIjX,s,~^{9nZ2hսUN~ e)۵ͫ]nG9X%Tq>!j$%7{98 `zj~kH8Tq2‘XI8މ.߿B¤a !+>!d&A`yFN.'R5'f7ӆQyk4  VI#ͼc6?n#eoIw)-5±=ttXej*bq*Z[xray)Bq^FXwepS>u8}ї}ZMCcY0Bu&+8 ~-比 1⦰B5gmK0(P䪪eSvfm|?Ft#QlXYc7[G/YsŒ{ 6[0)WR̄9:g]6Kg@R 7ESLBYSbӨ^icVQ v#Mha"@JA䢂v۾} DXOQm_rk"40wa>yCG^R~R򬪖? Tpggu"ļ04ÍL29 m@)!> $E=PpL h dd#|=ĸ?' hf Ue>0d* Wq`:+:4-tS]EBÐ:Z> 6clwqy) ?^/(a }uOr)b/MdKvtSfr$A qTo~5J]2iҔҢ77{} $%ٍM]l& =y2WdG7@tnQ25{ /AvD.*$~f_,mJaZAxY2_#1?ZyW6lu.:;4\B}DTmDQǮepdԵGFOi]ZK7mcSPS:4 >s~ =TxD[PFw4MM)XVhSZӁ͜`4Ќ&mo^vk_ SEYlq=Vښ l,XFv;+Yug(2WqcݓxNR{n>HdVS]E3650Raoǵ|.P*cǚ YcCMP8YC1k6v9P/z, }?6=;Eʡ3ʡH7E)kMmS"eM6#mؠGP6m?,0%m0 )er!a*z4p4f^B8;+IDຈE`U,Yy@Q5Ϙ78 J%K5/o p9mqaʫIHg[׳?v2&=`Xp6SlCY>'qQ , \y9_M$qEc= gG|M99(}q2-#< ƊR$ݬ(!\"-_ $b*" 1m˨8kΰicKv8‰ \3PvG"b ә֙";5 ڷ0ҴRV\'1H e䊽ƼRi ~a3S7QMjş˭=hP4wgaM$7&kW_V4/gk5GIf|_Iur<7)h|/^RF&U S=-fœd=2,QRӲdSfMrURKܒ ֘eL' -GHk j5{-+P~S2 mQ/Eͤr ԅ\.v!8:V$z"_X~}.l"7my sD a6UqZGiBKy)NP 4@=_{ӀWqYkr uRfyEO0!#"C{Q) |1N+h 5J9)OJ[=磣&ӓ g7sN]#9‰Y#]-؞uSמgK";֌V ՚;AIiBwVcO.ի0^v@v+Yq}ς Tиt9G3ˆ}J\ _xm b,\z58NyRYy\ YqCz*N0!`&==oڻGش.2$Y'cQv@W__!zoo~'w\,UXG|4㛑1o+ Q*DA Benj6wspXMMg߈Uv~ݙsy)7WXCVܿnyOHj)mYE<"fzth` ^x/+Y4+d e+tjNiqu= tjּAJc1,>2;a># q9=ϻz vy1CJNߎN"S4h2j" 1~E,qb#78G_=HKU޻"cjZS͍ݙܢDWH1g/d/$p1 39cZqF;M#i *Bd٥T-bR85!Iy~1װʖޏU{3e7a:yߓ)֢3u*jR7 p'O]0b6c:%*ucՑ5TtT r&cpc,/c4Y|[]4\3#jrd5eeCF/#e}x ʹ L0))YP`@wmR7e%*)z#'{@h;=4UUjœ|뽪ִP)1P$,4ijNͼ @L9.|0_EEK _l:=J-Y?k]eSŪ؀JiL|uQ)rT]XF·6U|]ٵtk8`JƄg̱Y};X\'W8$kg'[E*^R 3vj8D+"4 {-vJ|w2]oH 6W[lu/]cWwE̴{Hh+q]n=)5e}yX19&nD@Hw(OBc yqٌb9GSL0՟$3MޮH3a1n- P+r̩:.愎oIfԂ3m М4=1v# 9$bR }2 ?B7CF%iQFa}!{uY͊MyAP0^BS'xaKpW%(0ց'X؋ ,ٮs]!VA %B հ,h"c1 3yὸ^ڔ XvٚXZPÀIb\ܓgݚt DQF ڢmZTJ2\V-͋lR"[G?b`SckBSmS$!=xMv3e ΌyqVpNNVxi(~(ˏx]΍$+@U!,Uү#rBר½`Px9bpҒ{nMV=qd#u}5^{ HIñ;Q @AO@yk.0YTpu~"Ϊ@Y>/qҡ!$V$@ ~C0"Oc͇ / EGBdO{7={GSLP.qe;LR4 `@g+̪d_0OtXܵ1VB'fho\Xɤ]6|Unp=3Mg%gp|_ekGm#,SjUтCrT*:DBwDŽAG `@ )7@a>BWLfY2FNEӧ(l梩%QPzK1u(|1ph|$^GC![1FI=^/sX}TZʺ9zEQr钞 VJ@2bHjknYAg>C)LR\y(^ۻPA*l^c:VobM5o0C1m bOD1Ywa驷.@jq d_!vqIm/ `,=yM MJ_J Ye279%+M\ 2P5Wi4GmH0OCkIFب'?!X`ݶm۶m۶o۶m۶m۶N=8;IE '+sŗC ;р?fwv1ުXUS*b_I0eanK>_m ͷAgRn8Kl{:.1 ,R yFn21&m?s+PZJg]y)bq=Vx* B6A6\jwqׇrO؈AİpCSxce _B$uXW|DОD\kFŴ[G%:Dhh%!ߑ pV{48; ֏Le+T ]Ŏ;?[Eh:NbS3s^p.-(}^iG<*}%A p"'F$ >Q9]Sl2(PX9G+Z o MG YbGr1ѵ{x1~|KQ+O#Z3}n꘸{SrKi^(9CX"$ƒJU8tf(Kj1I)u.;9bxLlYC&TL`.Toħ }ma``WUrVn|Ѥ>ZY81첥s8c8qJq?NW^5Y ]d*%;% x2ulݡ@6ϢD#N^ľR7$c94 dByI*3@gu9er"}9:ΒrUZ%Yj #P:5³fɧٹu2@:vQzSI;|\ubȿr*{^\9M,Ft4qCXjlp4ƆʍIdc55[锥Oٖo:KW=D 6 7|US`91qAA؛~ n#"e;8l h'T䎚ákTF̓ikōzvH$èj݄ )cvڔVj3Z*+pه >HZ򣓬'/=.W'9hW UN_qc_N:^_G 8Sղƍ{^8H0YW}~Dcs,sGdwzjO+k $l8-MEѫܻ֛ Y8\T:77VϒRZ͗r+qG\|`Vo/g 3߯PBgD͍4i!Qzȏnk=ac>+[ŹM5;i:SnNxy -%? "!7e(.=?jU'8N@3!c #C?նu.<ӈ[i~O'_47SIxmk''϶9?꒨]ݕR "Ja.`oڙͦ2~AX;1ߝ3))>/A}~/3AW)ݟk'|eu|>)fUaydݏPy[ȦWz i\ğqu>S\TSJQSF6v_(4]?8^|b%&;IkC]k 6zw?HM0o@[Kt"/F#@9=xl"X,mMJiw%:)腷WiМ E|hapsZC#ߕJ^yz{ wN'tu'0 ̠FѮ ߭cʒO"3QQ\g$ ۾ΰXI{RT#L3iSU5¬E/Y+*2^eHQWŝh+t䚿DfKu4`4+E`1'uz)V<<6HexVĪM겡K99ݍ7%g쉹:"/6n5IVP<;.%'P\(@D.0/:"ZgJT R8vR5 WrkhP?|p;xl'40(ܱ&imGdZ*7s%ɖˣ,hTF5=n+2 Hh}[b*"jgoZ):H!!tFt_5QF<2O$'0@D )X _?Cf{GJ՝VY3ؐ^>"x!DBXq'+T%h:!isQ!J hZ a_+L9  Pily!pF0/^xAqU!tռ6"$) #IpRIV:j/zY+n Qtd$1-#֚vr6V ^1u ~\-ڝE?"YZ*zpcƟ"K"vOn3WRr40AtFrF|-ܸ3-ݚ1["U0UfZ7] la&Yh S(Okׯ,)m6^u/Y5Y0{B)r4@@/͚ ,c\z ϊyI`rj)_ƸwPDPiJ=2ij dA~[Ҙ l\u4$=ّ:j=s!jO"{]f󰃁`gr'~ _>f/SZl%WQZRrQZ|93k+hO}+y-dsL1e}gn.<^ٌ%ڎDh-۰>7op $ ,/;m+Ђ?O{Mo?,OѨ^:}rty7r`yw[C9,nr3 `p+Fpr qs)osIM0+_Ak VDl G߿۴Ž1>8#1Zo Z T^p!(VXB*dxVn!]B_|{Q?iJJu#sb刪DI 7kp7ui7#ZQG*%E-8KR||u@fm.vg(p<b樐R n[g't<AGE,Hh%ro&"bϘ)bሁydbu9yp |i̹rZ|UhV?{ߦRJ2jf`|K6$}l%c=Yo@ج;T)j?V+8tb|vItQb޼i 1-Y{XoK\2Dl  1Idg֏"䐵TǪM%G@4 ] +J[,˼0;w8_S|ř';zg`~rj'`}415%g8|5|Uô$7`yhw SVg9 cNܗ$FBR7VL~ĭlKjg;]L*dϊ4 :U\&>ak uс߭>,74:Em;4!G/pלK@H׺h=K0א_h=6)!HV{0xJA:X UeY3WԘ@ t.Xày'Q,R>XЛRۆ{VθuVXu7&q귾ccԙfh{aXt Kec]*U5+Ax|ʤHYO jrѲ {[M+,б#wuqƿBݲ;`_Lvt _cN>R 8Vc򗄓R Xg `34x:=! bO>#i+6 dլ  v$z׿sP(QVNO-55W_;2.y 23!lǭNc=[1z??=uwxߑp >M5BxA6ztjVs38CƆ@uْ7 KnP]ͯS0ri:ʛاAo; }E,4IZKTitw+HzgS1c6ѡ#.?T@iab9$I3[@<K ;bU898=^@(ׯ"~u.l'A%Jվ"-0PmGVߜlAs$wf{G\xāYev2 ڧ*XyWG>8<8)?h&hiK AIf SIa-eE{Pcv9UΫ{J~> W((bU' %fZl"nPCt}e^\"l|d&ɫALֆuuNx-a&v[qCAL WEW8~m. D\r]zuK&8bo󐊨inLL3#djߨ60$"mHgH Vؔ\ ǩǧ[SQnu}_nfqi$cӀ5/sv=w^h{8}_y_Tmlw^oxTu-|S9$HM&^"2yx[0\*B`V ^|*\35 ]63TO\pQ{qڝB>|zr;A!Z ,:#SupHx0?jX:lGm ?̀ JKbX7HLt1+gAy7퀦/8؉3M~rix׹"А>H$k/d A9)S* ݓC6A L,S7w_;;9Ч+yPSO%ѺB(?})bt '(>zXR.嬱ffU2U#xEhE1j<%*I..=HD$7C)ڂ1cP@ȼ7LtAqvr},s4"O!e͙C-ݺq?Fӽv0*B3|@&N*2h+Z4whx]M ^wZ'+j!6PYp % 5otvkT)34] wJ˒?6)_ǀ,!K ҙ]v#z'g>Z;>i3 axSd6f32# _Ȃ;=?3,q66 ^t!SpAc$T:sā[)uX =rSl haLC=V!7On07ӕR㟽 fq#)}Mv4d"]v4n{SGbTuF_dJDrviMĔ?%[ )"T;;atTq^L'ŋɢ.AbFKVgB3x In0 EV lq/u8bqxq JY{#j^i^%&zlaًNƘoHu  %3'gn}U*4W4?9@H5hH I|]3<ԘNUC+\EbD5IwT(A2U/0YEK@Ly{@3]GBK5~xdbZaiAD9_6E^Ra\SO{/[`S!&jdVʾbrbz&m_л(QvIz/}7Xw^%|Z Ut\(J)uaIgd7/Ze|$BXt#McA8q{gSc);(Y);{s wHH<+ .*Xz ѢWW2"lOmch|&P[O΅e",q jKmóJ)<ek-_#[/DU=2#yH׭w^_߷WF63θ=U82beF+4h9SC v5.E!P@E9p,t9 ĔQEcjr!Y{H2J 'f;tGίJspSHaoC2 q畓=p1l+cx<+"|@Zc“jq4RYf ~|$0E M4͜$㬢QP{@l+O6v`&Fڣ%6k]ЭDhz?x tU&zV1 TwoQ(H%/s鹴{/SԶDu o.d]ZkS[3^MUOݦnvƖD(dW3dP3[ bDS`# =:ƕ6ʿf&15WU|ͶotPAX-C厀1I#>6ÝNfb00VrO4Pշp)B{;мyPӺ2JՏKmQE 6l!ZâעCD]x7jBem[[iN@."poUӳ簌(Gn<.'O)Ni1ŗraǴۆ];y4A9tdًA, PuDkEin4İupdͷq9|-|P CA+1clB@ i۸.;>;Ƃ@~rE>j62Ov7w\į쫙st2W_띤tJg r)b,BU)O&8bA@. H)y6 0OxclVt>nvuUN.58-O]h}1~$OojUbs!_Th -cKEtQ F\֕W%*5A]uCb^^P'MkժĿ׋FZtMKF(HCLT(:"fKȭ:yɏ@]V5)dRMzҵ>Ga~l%3ݣ)~ca ^bbE: sJ'h)283PR6{A'@d l1 [}nm ¸M#sD˽ It,heI' |Ȓ]yBG-Mxqh.+28V2Y~WH& 39.Pey3랡Uܖ$VMNQQK vzhJEhSM{;|x'&ּsӉ>m۾૲Pbieߢ!祶nR]$ASQb`z5 J'@G*_҈)+SР[$(4fl] 9oc7.[,+ vg<,l1[nE6[dIȻ`ϟ 7ʮ^j14ѤR`iE`X> G%6Q8sJ3tA~Fgs}x5v3&G.>Nrʚ >=wANGG3>qm*j/ jl¦i`a)gHIb5f{oHu7ك>RBH Yf0#FYYvIYա9ʊ])˻ b*>xނAnO0 :l|jԖU=ILDx$lHt´LUo2n7HޙD(y~LXdsс~=8ur2$ӘVT1+mwB]ZˉۏLVC iI =M^#]Gj5 G9{,I l3L372[;ugmypP{e#&cGmX1y`~:9 $=&wj-En-D0h!MG@c*F1wڟ?5/>u1$wi#CrVU1)=/t?.4^nb%ts9TB8 $I¡k6#t%9#O&ͭi5JC׭Nz_}SaW_u&Fu=ʈGԥ _!s TDH80j<:U5Gzy&?E3L4 Ewy~^naZ*9=u!0t^2]1ҷZKR=;2Ւ)aY֬oŔX6L%Wӳ2F@rM d(XP#nrGneŢٕ:Uܕ>}J]LE4%_Ge؁6C@ePoѭkk215Nf1|hkݛK]_AdsGDGto]b1D|?xC(9=BcvkwCᦗ[,ZD[Ӈ-y-lwDL2$ %ٴFiJG%Ǜ?}-2h ם ;o?}_5@שx^] TWWPnŸdȯ~f- O6M %׳adn*A,`Ru Ua?1 0o…Ih79ǽzltߨR0!K'ȨHHF}22O9+5Tzv[<ma -ux^ޟ~eܤdMnVýNTCq?v~:Anf9J#g v;Jc]yxZj_֍M2 Ke HMt{'wwS`3w *zuEm$yj^ @X~*Fx''% e{{2f*~YjIoKfOʀ:KLC_O^4 ZLDs F{;aO Cfȇ|G:2n!G&X~( u pԸk"E0-;6(K;sDHhDf9[[1~my$dƯ/CS;w/;}q }I#\r8J-U|¶CEV "F*.2>|fG^ Nl㒜yE*cy2TvZ(Iq?)'dxEn CC7羅kޞ2lɎ=Wt Fs3~~'4Pe<*8ɶ}V:>նGrlWc0"6((/\6^⎛-L0cXxwܨLb`PfM0Y?R'M`7HG dݩju݈ Z{= Wv*5*lfjҔ&, Qzp"AP1Jgmr$5>Xا%ß2}1vųY72kd0_y `5M74sX؅4w1N|=\u5-,pc_edcI_`Ni/j׊Ӂe2Ȼ15K#X`؊^P|hH; Z9mM -'A ӬKMqֹx+✤ƶh5|Mc/_~>w3{@4X_KQ/v{=m}߄S^6Ue`438L,`3dl{eK,K1zk݆ZQbڅ: H L(1 Qjw)G6ѣ{@pfŭdݞ&RK cg*, %y̒  uWЛPvͥBD@PdC6gd BL4i#%S]a6HXڝ;yQd\i vÈ&JraA4DTIZ38sGHT̅Mt~:EYؐ M s2-BR=;Sd~B޻ DJxb28LQA51{n3gUP`@O!-U1XwVvZnTO&y>d#'L#Ҩ.BVŜe ocaO "|#$t+#r7bK< SJj3ms׶{ҮWP|*RbezHȈfm.ҋLk%, ̏qN5,%*ѪG$ O1627:'>[#Sv]Tc_=vMY_xS  i&kq3Aa3.7ZC?1 l a\OVΎzE8{$.㌠sFe%IVPF"S9Gp1zP0ʦ 6'(<8u%z0kg>潼^M(IXv&#AaH8m5'jsAl_߈7a)#ʳsDeS L!נ$t՛<#>;+LCW|n)>nĢJȃ+9)& YSVLn* s<1#@G!:Wc6i2r ᴑy:L$- Nboeja**' rq|U 1oL z&NX@O!x.,f̑p2}`Vro aCy綾HVtI(йB3NɌr[.#N*#MV]( u5­QMJSx)ndqӻYOw4'8#<':q-`SΞlJYCЃ2[HN~\"yMPU~sHUcNS.w`71Ё  빔N%'8T14%'*f- M1 frj\P%IUP Ayp }0p)`,9a?tʋrǪhFhԍ8N O;pߴsM3NcIJQx;]f"<s I7 A5c3n̓Thz&) S'BVqS0l'ah=:t!}:ZZ|h[؀䜩\.HY kcem>O;`~~xHP |$cB5SeĖ>CY,Cvb$sӽF^h( 6#b" ^Rk`֦gn4v@![QYАԺXj71K-Y*-!XYTZ|!W&9{H17с.4;ٯH X3[GzA U7E!0%3`Nr&vPmAg7Esg㸆X>(}rh/{ |q9uDwR zjނK*d n:޾h :YJ\ yIʤC딫@(< zW0:h\?q5ůf'&q<68E=!JŭEZnrgk=6BXXftI=' orHeΒ]B7V<3%Hx"ܷr8xHA9rʭ#-PNKIy'OiѓXuSpTWmĐ7QII& SI(khr#G叓c6LCW(=6x5Pe=r,@H+x],1l1/,-u<4ӌ7kp<_Um nƇQznQ2GcJX^TR*mJN$>ޞiH/l'PmDPu/;xO(Wba 6{ Jڿ/gʭ%QѠ{x`POUI]TS6dɄU -/d%͎MNì!\zaEo^|[YExFoR6.@G ֲ R_ܙ&RJt2x+l!{t6jhdqoGpѩK?щF˩sopBAϠUt+|7OxG;Z y8̞^^ki.CӧiWtlanآjJ〾,s )XwX;vJ* *}}&By6{B=##QHu1 =Nqt'p ~Gic@5)7q_Jw"_uJCD'p%L4b|$RsL׎Y`Y;4a{yͶpvk0n ~}>2ItٕLhAK0džIu"Dģi.TSIiHoWy~CPI;E;ʦ֦\+<FEjlWlƇ*Y'z>0<?]\og^!?<9!}*I*b_+,_ǑpqĤɩ#?%d->~*6F# C=A&;yo'%_Hu9N~_h`vIIywvU\~8wSwQwm8A3d>ߠ:#U &G Lo#<'K2wj!tX^M1=9M=$rv^hf3-c`t)ָܮx,xw@uI])%A\Ljǥ/xe;&8~ |r4Fv?m;nHw!SCV! FDI Ki!YC(;Doo*g2!{ХRoFP7Euw/r$1wf&䞋%  3m>7X1̋g9@nd4rXGv󧩥jj n}v9ѬS ŧ`{23!@ٻ\s0gKwLfϾ`#oҏbCI1P7xtsjJXb\k M) MN `Dme|>:{˃ilJ`y&cYHCWȳژ p|x d@ q)%&c 㝩 /:]؎VM8 =ަ {tA?ie{^e,T}91\bo&==-zTCѩAq {o/,5p!Ӏp`͜Vw^o]};Y~]w9Ouu;?;C^8rnƜ3DRhi8IY[ 5d$/H̘@߸vx'.ZyQ QyӼTK9ƈǩ1[F7>J cGHӉ;Z& bkk=Dؘ@yZ&Yތ{tgS@s)%XMP@;Y+Ϣ,,5s lffÁqvc0 H-b'Z.=iPHXzBETY8%t5oDҚ߶5NTx ̔Ct88F0Z`,U'oU C+*houVxt ]&~sy\zǵ[9U\s w@8׀t,*bXݾa,u'}-A8p{? (@)A:ú+$>ԒWp *Ja@%eA`sOeƗW x.k*@?~\H^N3`2Dg#g6m!lR)K7@gʗ5v7!o(o5BQj/)<Wo[zg4 *$m:cq8(-dI3,pwV4B9B:!Ps_`i&WBB۩WD-uyuHwkVJ+N ٠6~?LVjdi@嶍P5bN-WVpoYnPsGr@r,TvfE˲S擐=^B|ص.6qc66mJdEFmjn-vw-ٍZW/ yMB.K䒦^ ޴=;a=L6* Preß@**g͐C raʳBy:^uWقN;R9#E-$37wlPy0iЋ ]?k8?@;z PUgߒ4$AL}|6I#}sxٵ,Q H:<562O`ZLdzYϜ;6} Dh1AvˤuEr吁z> kJdG SFE0fC#^Kow YRNՀ>PSހ$phttJ tN{£Ɍx^n eb#6]˧}=bM!%.l8z`E( -NJR! *f8i:%EI>;&pȈ E"(DDjl*@9:nn\XZn8B1O)1y?7IXOsM<4&'n f@4s /0sPY 0+37C[}v`މ* k.v"^6Pcb!W.rIV v{T(gs5Kkl.7[ѵI'h D9 Boz1L't3/ CaЫ0'* n}Ap6deYD0$>QR0@k (uIJJ7wh}{rXCVO5` Qm R p_RD H8 B$ p*O,&uEتzCvV'V** ?$y&('av7U9i_lA53 \lac+֭6fN#?blȘ"#YRrۘgtFD-Ŀ5 J),6%Un} @RQ ~Џ>")~EA@Rݫ;8YԖ \m9ޭao\~sKj@!#"vS=36 £?֍cyz:g ЖD p}V&O{9x2{(V09X\kS*0{96h@k$)MwGzX]֩Q^3.L]F}a;uܢO52,hPݕSsQ!8+.#90VwCzIXt"ޢ-{ya@ڶ5"ə8rNИ>JQ;Ĩu-O PT T9P_jk 槾ݞɧL{uFyK:ϗO7)r{mt|I߶M1sr U5<{ܻ|/m^>'57_CvRsص; %}RECFYg"6`x"r䣆mBg9x -އYecs#1!ʶțIPy?];|"4ޛqĔqp>j I:I@TO_,Kumy%UYfw\etzjAzޤ_.ER] "f^^I ~uSANmfXT+*1rٵPfI$dHΧ\EօO9868D'EoM3s6 tq;TsA׿7`BizaJgxZg4;BuU p q󥦄|]i,4N.y1'DdmK\Z= hV: eW#^ 5W4I(hDKlʫDJEsۻHc42K&{qC#n*:^_gX| N*ynM4xhp3U g+)p::^HmW^b>q 3,` |>{$6JlR j"Y H8s8+'pGBǔ$6TjL}kتwd,O A(OOdLfx +o1+HVaјV+Nj7rA+xFξā͆'e)N7NZHz~ NJݽTڶ` ϸj]M߁ }i o f0 lDB`{Hc(h 5+` [}R ]oЧ!#qBf[ۯ m[b2ZdKU3Ppbנu&=h" $f]h4Fp^&fqU#1 'Mkn8"#Y9D[ʧ̪!ڕy^&sP_k$`$fd@Jlk" 6zzxBݝ?Q v/?,22]$1Һz!ҡw6c dE`F8!h Bռf)+?3EaZNN5uDu eoMs=_~/Uk/W~'ĚaEu~@'H5|^$Sh(=ɓx_szEsC{y^t3L ¨LF_V#ܣ ]^EYM.:!>$۩^h:u}eъ{%CftDfV#;3쁟fCkMcrQ|ƴ`&f񾮔ƿY>,J6 w%bQws ” SώV(9+x{Y=?@A}9K:8jOj5N] vە+\3(54!w!"OPOM^ TqC. 5]v`kǣuބ 9Rc4}Z:,?oǢ"-Ư,.2m "x)u | [9<ޏled*]"Ʀ$ꪽI 0E[?I1!e95؆.J^{r1ڌ>pP^_/L(ste4P8UQ 9dVٍ]?1T:Cx^@U&@T`&Qn\ar>k"]G )K tSwt8 U=f z7MP(,g;/O!nm PqfmSsTe(|((#WwڑoN \~ѿ(a"FEbHJib6\>#l/|y  ~olcãy+|٣=(j++z͔^zB$4ND~K4%VX߅Q[]{tӯG!;VPg vR o cz)إ)v9@6zbݝ-bp4><srw\[v8id&׾G v%M < Hݭ.[s[>i`7O:[x59J+cMbERFnLCVgO:"._@p,b7p,dBN~d"00 ΆY(9?SwS! +v&ts7G] XЋ/ahս7T'mmVv3nJOq5o%w!ik}%ҹ GsՈI?:7y~" mHuT;Sͷ(;NɅmʣ#YbR=}NZ+ahﴽz^1 hjC1h#[J֐HĥǬsCG٬ ;˒BCG&;4^/6pW3Z@O5jPgל tY|֨N iC™H_3g j@S#;35"XN--p"JSsL.%_amWkb`@qt) 'htSwKMAJ4)C ;^H⪌#xQ`&:6f=v(+qVB6H(ͥԭn Rh &;P؀A!F{la "qս%y%MAH"oSP3$5mU9@K![ R%p_C4ʏRxK6V~0ka6O>Hrh$x2/2tc+ eg۶m{m۶m۶m۶mtIՠ{v{,)j)/A{{'qSMsOr\F-փ'S^R @e~C;rɛʓ*Z`<M3.ehbvi3c 4 =iگdKגR*VSr^7e ^5-m&:tZvhXC&r 2=K.>G?Ow7+`e}GlWB e?'#]jH\HԸn*89?,м>pؽX9)_u;R7UzԤTuʕI:RSQ`"ds Nz08&2qE%R5uznuʅjt20A$q:J \oUِ{MJC8[Bm=^ULydT5G.hǻhѫo(ze><:o-~ Q׀Ȗ5O/>=Gݭ'θ>ŴL!bㆇfڑA2s~'F/m媸cEsm) /N[m͉[O0R9=sX/fKSRJyyu)]_m8C@7捍CQÄ\rz3<:lb)̳! 7u{']2 *ԿtО?*ň4yڎXRy`"JabtwjۃƱѯm#Pѳ% {wYWp9C[ޙwf߉Xsk1N$R&{ǺiF9rlWRw@fisURs_|vה< ҿaX Ɀdϵ$Zba`v-Pcٻ=)c 7܋CK:"'I~XU _ϕgTAݝ0/%# D],e&[7X:s@oJB!*~2t}]cAg)GgwxBdyk=fWQ=*E!V@:!]~/6Bc?ܐ,bDuFEMNњ4IClƇ" {cl#o4uWT pG~ |7?tr`&&smC^9zre$}sY,콹B]Z1[٧4d2Ŗu"fT#XF(QN?Sc77^qibo *xcTWE0k*Ta<位8W+*7Jkv麑/Jq2eo @-ӹ7.B;KJ>[5qdZrs@:X٥,m*-a=M ;TnȫτvkkET>7&޳IzT::DBRSV:kRlh# Xck\$XGacqj ϧ{B:<&X$HD]웨n_2.-rx`+} _= '83"ȐNП!y8$(>Ƞq>mBq,a(:~AaH]e.L9^of@9)f@=/ѭ b}. wÿj7/Q#8RչVn—3pY!pr/#iC.!XP)s܌eb 4J s`PxlGZVKA*Eitމ:ǹ+yRko;[.?1X@J4:ȷ&`ε>Ր^6\.Oc\ȦFjKܞtϯ ~Ȭ쩃"+B(]Mwд9'q%a+LB!J="c6ʓ v%Z>^M(,+vJ:2p)].N@F3j?Z ם{T:5 J«q}Xz;5?m,v%zO">47Wwd'RK\"pH=UbH*E "(@/Ĭ)u%ԓvqfE15tB@=KnF#H{#d^F!3xSN'}-NG0p(NrX%͵ 5;uhԊ5DIϬ#"Iu7fmq 0 3%5T2/Fn(e/Bd.D8{av/e&wjowv4nwzX40lkZ[Ro ˰<:w|'ЁH=52Y ndr|ǺXI3/6EEǻsg0tBj7Ata&uCSɈ]Dlmj&WbrwT8U=wX{y~諞ejŦA6;.f?LI 8p4aվ^!ﯿY@wkU.b/yD&Vv`(e(O4ԎҺO}ΛrB%Pv@>&.],] &=(CZ5ĭo Wabk/Fɯ$ zE6,7.u*f`!Gr[3E5bx@E׆¢p&v9>TWUL5 W@G}Šv(O5ꭥ :(V=L& #a|-Nˤt8=hCE1N5+X&T+}a|Urg_Djxq.;frcn~*M3w`Zcs@Ž DmAʢ@J٪HW7sɆk.?S q.KJfәKekt=YHmwhp';8bvق_Zhfvew?Raƽ62I mUH}X/zYNw O(f0eO}+oCPsŘ]D 7`\HZKMR]?6P¹-A&ӢmqK_cn@Qml"6M6$T˩L3m&}$Xkݼ0JVW[dHf:r;(2Tz:uɂ9|Љ(J4.KIUk}.J9n=׈r쒺>of̤NqmINt*;Gc~F_9$ w8{ֆ2̣/k^x;ndc~<*m!>e,6L>_{=7. Ro\`9)[P`V=5 M0 wNézTy\6S>K-p7)nZ{SudY=8 !I )tJM7" WMU x?*0s5*ճ+~cG6{:[}ΨۆJN{9-ޚruMxW>xQI uKɟ~8;X{i `[ (S'5-{lu)ߘe32$14=g/<3颫DD@PDDw}H2@(`.KNWTHЦ㓇aѿNw6[*..?=>?Ƴ2W8P_O,A C{;2_^~_kgu]h?|\Ħz=NЊ%m]\Xom<Ocw " ά=4)= ЋMmNBLkSDfzIykz,w񥮋t$B2Lj.rh2]B ݯDL33l9_nE"6PQD+! )ZYY:{a/Xx2 +v7l.I1d&EE3}#k!'?b((i UK4qtH{ qCV"neE\i8! /I5MbAL \ "9 IkKp=9 ԤҀ/`*n|Y nBT-5*z: awZFI$3E"uA&iM>M̌#Tqz2`ٻwh}_ )."\fjX@jr=M`uhYɭ) ^)~S`)-ZK! .KaCT'yTnᦤ<~JHV3I0'Rsؒ9 ^rl,,ЇRNBŰϨ>( M@6ۮljH)5&B>LI$4$Qy8|tX/GUs[-'g+wYW SE_EUaq|;>?kjVx`wIߤOj]y? M;גC<9|IP}< 4ËPa`Ie kDGfMM Ж E I̹9bdv5ugwJ>צWBL3BvVc{7R0 +{y"O+ͺەvκס`.1 o~]osF.F|TZ89ymfd=nl#H(y,m%_$ڀXj nsu qLN@";Vtꟴ\{l1b_e1*4 iy6D(jm `2{[vbT%swgIJp +K~BvrϏ<آwz<{Mts"΄h$ZB)N%HpczEUϰ(ē,R ,"ٽjZ+)#>Gk:Z;y Ơ "~JYB2|kn0'e<IV%osd>\TL 0b 1ޜ<*tϣY .  G"DrfPhs" H~/# X4N-ƶX*UJI~VFNΕ|2+vi\a2ǕrܖD5(DgL?V"o=$ xHCeSdQJ~O,q"tx8~Z]`br { F/| ֧ ꁉRALiT@B7vɛ4 l!a:kp0 33SO#l9G&[YIOƜ.cDjtޙq>~rsZDа5Mߜbayw2,*{,Ui)>t (`=El MK0.]-d$ӯNG5RU pF 9XP -n:G`k, m aV2(:9t pIN]T WȤ'VVxn~qxS*P F[EB?Oƨzufs~ڃ!*cV5EֲT#b36(q$O\7ieJS*C8 +B˦}rF+ڊ] u&]N`c; wbd}3=n`ieٺ *ؚs'ek \#tRţ ŃQg O3& ̞ |; lI-RBQ K9B ++,Und;/Mjt4sL >{TVO9͟aub} GrHB& s^t)Ion3к94̉MR&Fýb-`RKY:l8 Tź}^}1W4bHF}ۈy=g(W׿;'oPJk#uOc^WtVHރ2ajP30UOL+%>+2^˒w:*SMC|XPX=:)ng*om|\ BFז7T JfvMKb;cUŖHrs֮D^-І"a7+aDy'0؉G^8m0Iȑ2t&K1rjMIH^Fnb0gzOQSo&Ҫh4֔j fJ(D,] -C3ҁus'" u /weldJmo3]%cGGqzպ@ PM sf2 eG fRȱO֣Il ;*莽:OW>wG{i!iSDj*-q=]F<ʩը h_z>9)2B,/)s1SN.0 ]XpaCp͇b2Fڢ~p˵\>U|wg>or K?VۉUܧRĺuNhz hC.zOH;G"nc& 1!~ l[e0ϟjϟ :3vEvK{:ʇz\ߣrh)%vHvq}piz([΂] 94NPgq?k[_pQ'M#QߩJjvo]6.yFF@ύ"⣿E_9Y<% кruh]L+^5D@ح$fs9'5Q*}^*z25+*r7rLS_Z4Z<:_:FGmj҆2YTZkZm;+p_䩵Yn;ꌢ$muV: YXW */Kο  xPXAN^Aɭ?tC8[Ҿ%}AI?kw}sfaT'7'ؗC<7**}h ̱Lu,٦-ɰz&~#}9vŃI.lMB߭Fhw;Q:bԎs lheCZ_ zTW#-H9_c*;m<߈?ǘԀvg~E☪iAYƲ| ٰD_)yBfDTᣐBc  KܣT`}J| yb%j1VRחERc;n^Gs{&q^3SaN ڀ N',聾8RW e8Vqv71DzV({MS({M]>`jيP'{Ea.UA'u/uEK-vM{#T[]3}@-n]O,ݳSջGԊg̴f=ً? zrlG Y b+g)?bͥ%T7O8 8{j[iYҥ*miӅFRd!L r=w>l]dsςNFSH9MSmn#)6ζV-f}O 2wͧ6zr^%+T#ωmý1C'К,FX{6c;cr1 l:.ۙBU n\p(|gYH[i*ni1bOfeOwtGrlx@b܈&7h5FA7H ZlÉyxҙַ:t :!uG)v7/(iц-iqkDh-Qz^,#?qdLuڇ%d XG gThTg}H$.ڈWۍݖpTt@k0gh:e;YKN}&BK-']AM yX?kբ;/ܱ#fuWr7sZYf(2$C~3Qx(E&,A6A+$䌲n{=2FnܱC^b4OYĥe*ͤ4}YxĂNt'r$8(柫p]1eL" HY x /OF&_קy1_" wt4HB~OLӞ!IQ Hx{ut?_bǙ+;\CudT1>Vbԏc&=>~>x{V|}>%> ~HX~ WG?bguz?;ܤ/Iq~_'J=3e#tvcO8Rl<d96f@Yv@X7!I\u?5?yD^qi[.kHx zD(t6#E9j(ճ!,#V+}6 cp, !դFԻr z/NY pcpy~D =*J.;-f?IZ(l%Б E+Y^JyЃ>qnlI :/{\j ^!+w^[`I{Ӈgrp!m4)v: Ll1C`P/kLTSm58~a~QcRn7;P{A/#佟/FGS~HYEM؃W JVfUCq+V,%Mܥ 6wsuZNݵ)S^GB͙͝ ]<]mw eL&ŇC&^i^S[WScOaѲ^^ע.HZF0%n'\ Bc:fY!]{\ z˜aJ[LL<89)Pاؖl4q7gP# QB$Z_GiF-a\=g[ )4ϯQX*+hO|G4" u dž!_f5X8xT's%P=ڲ8 y~@\{EѦPcu_ ~ m9T7Ex-zVAUdgH5Th U+iX[;P~>~udWC\] x103-0392x]f44"gOF'[ىg|T֦մ#K<~0<'=A!baz""TD{%B&nH &SlKF6h/%275,*9tt,ѐg?ty/ jS*z7 /-Q"H2k>,I]͋ DJ\VjEXu6~=>u߲p4}&$B()!g˟U&G ,̓M:1/V(?B#q/~]^h%3!Q]T }% {~7Ce(6xS4䗜;O׍jKV)WCs"LšL_2o51T@ IW c J[+'V|e{F} E,9Nd`{7uM0jߣׇM` hf/<9"_ŔñQ8r䁛§ ll/"˾~[KB^.Ag]=d?f)J#(:t7 !OdC"!0GՊvW76)d/7VB $Mkjy.$rׯ4@⅚? tg0=DSB.'k<&a{J^s_604O}nM!`-qL.~Ѝ ݆'f3ۚTiPa_Gr)>Tx" *[6όN" ܽb{n1 =%mel@fxF?4᭒h[t=FSä( aͼXD:]J>^“_(}%[wS&FNpC-Ƽrщxor[F }NSkG;+OMO܏fi8ͰѓU C/3XFmUM`0lqR:釜u_Wʡ/|^VI\ZT/`̌MjA m7/r ~:eAI]jS 9{Tޱ=4!iN):]Az䠚ΑU sL䙗?qJ#(T?rc,[+">p3dRӢry|?ay^S{ s8`OQ {_5X}"lDOw^-dءDҮCz`.l=ئ=.;Z|P`Rؾ`fXf[f8p/FIH:e~hJ@f*Ӕ8SuI(VhP!<w~y)Az*fƀ2~kn2v*%f(" -P156 _7msbTBCqw|{sgJ'G%yqt72=͡r5;Ǫ 9|%)o @k =L/;1|lXE x`ig*oΈXM´EgzJ%C~<4Q {ny{! ``b>]#V#ƖbE-y:H;K5C։[otslo/q;[(G%y#E %CE~9kD+ @;8rZ<+,CcJVOg'$&wm\pdWշ'jkwp^h ;0{a/ me"+9k[UcI)Yaf.~L3ɟ!"o{J4Ns6H 9Fo.L9͝z|ON %5Ċ|3<(1MUVQ"t :rlUKz&J%+SP1n5ހi8yG9`:4/iǭC9r2-8kԾt7U|43,9d?D `qi٤zOvRiZ@y XT:佨Jyb`Y{Ԑ2=:&FRDB;ġ@ͷn|oݍ)o~#m8k*bSjV29MJ"*хc,p.Ҡ,ӕX̢) Ĝ# Y\mWoVo v3)qYHx7Z.ߝ&?z5NvdK0nC3B ϋNe୧f9DB]+<96G)LN7@.S*} lDW}0Æc#R gz;-N K h&i[s)yVZ g2[U؏ӝagRLVݞ_]N]\vZ L C'1%-?bcDZžC tOP'u.1pq!7Z KNh>'1<)JY9+Nހۦ-(gu>}_w+LYΤ3#:Hg[T'?uWI+[Ue 1Ϊb"A?¥ebSfC!*/# 58OzJFB!M/3}#D6XF(t`pyc9R3fbѨdFCPv:rժ (g.-FO+[ X'[%gn%4fu^0XF#yB6zs'}P %eIez{+ hfo2.>|&?:˖t]wd-nS[eӸWd.ZiGT a t 򆥅 ?[`e 9$fI9o9!~]8;<#@y$ơ0;xFYt7:WRhFb꒱Z.1Zt+D1y:u?<xsa!d58sm0$Il!,ׂ_ \wY>$YhS#ef;C|M ?lB"\y+L694N'C-AH էbL 1Ϸ2H?XE}i3<#EO2%Q QyYX,BZR&`#H~8TwzcA|d^qeT,ѯPm]3Ìo)+0է߳.—f{ezDG_[5^FC< (kM2ʇȱɾR'-LLU֭W8A`Oѻ=-l cRˇ!fs>퀤Kk + m}(ql"F%_ -ry,\e,sMY<2|Rč.T޵uıY4\*84qZqr_T( \TW$r;%q1VlgB9Kө\ESmxa\SG:a۔7hE<㝘7 JzGHvme-:IovrۋTॖAL!¼;N1ov M &J@bų*76ZU*|ǵ&~^,r,{_Ѿ'M=򺉬F!3ʪU=O1ҧXn ¶7R^%i8 hVl./ !H)]oCLhL*>Hg/ݷ98NDbK%7J OʿmMv.g!T(vsX\=óO?_yT K?O"m "?.+Ba{R,K]̇ΥĻ@=?'`U2:N^qХB/ =(CӢF'9ӱ-haz sk3__ӆ0_N\R]ԟmkqx0\Ydu\cuc$;wi׈sMW8`Cfڶ/FMl(?*J0ޢ#Q6//Ji,zGm\Ev?4hlv1](CObCfdQ99ɹsjcXD5M+h!c7eEִQ]<Ȝ'e2Q Ʒƚpd% Wв(pJ Ʊ5ёbZ5uI 9Bt;=VӒjid2cNYdNlOF O'֭kƇљփ"{)%P"E7' 5!S*V.a_%7:I$mO!?my4o R"a8 #q:xR̀ʄ$]ff&֫ʨxzh{scyz=wkjx._/+ijQnDi5\{ГE r3q0EW-b-<|p/1,D޺mp@y<1BN>G=:g g X^"_V}53 ~?^l| QJ0h af PjN)V 9IC*;v@q[ wsƢb4n1  izBXxFB5D8OǼm>c<+Sִ*:ܶD{~JGv^Kʲwmr~3r'ы=ߦk4EVz<`8\{GG&0؉~-fD۾t >*ڛdM3\)3a5q+uDSTl?@q0z\%h[P9jq+Jj#QG84o4xk\;56 k d/w#; ngP6w"ƊJ{q:L _gjfvs }_LDRxQ2}(OyY]Ȃ싲%)'ZOFغFȕrgiƅtӛ!D!t@E=-&++E#45sq@\@?$ci :|) ""4wƎ4`э6jdرէA;؋4O EG3iZ' 'jiFAr[.m(nB,Arm@u]AT mo@D^WLoTY&"#@`*IX!oQj~Q.!Ӎk&^e<ؖT ;rK!۳)gt*M \&'8c&(V&,8}P\IuCSnY=b^uDa)w5\T[gƒ ]3_֘}2}<mii(5uY乫3 i:1F1f к NXR΅\'?[g=X 2,D.cƎ~w;h[ܹ֚lR:\{Σ6rW,cc;xJmbZ\F^=&خ!O<%7q:="Shsdh\?d?Yd_A8 pmɵn"5J S찿jIl 'Qd-2*xj=Zo[ItA`{~ "{^~}I"7Nu "D\ cE\2uTҌJP+`.wi_ 'Ƙ bQFJ~X-~B z  jy7 t Q YEWM FYҷ,5l,0uFEYgt(N ׯZ  [T^S5AXeWSFz~ .m9H5/B;z$xFxzBzq%bs z?Ȃw{$}&wneJ:Jk Z|]vU ,au_djm@K$5o!`H +# ;%=>Ϡr .ؤo J"6!%':%'hM}F;dӫWf%"\%Vg>$P6הU)U2~:_,\: 9$CQ%"&$nHK43eGqy5M*jϾ਄H;썩jF6KH/O447'F[ 57$Dᢰ*,kA(ZOwtgR\&{pj9M2ve >X-%g5xy&N}B11Gbb-) &hŜ˯u~j.rl?YB0]tdeěTS,p쥙L8 tΪ j,rYOgm'ۂ * }y/B1ufj)΍rT壆(ޣɶK) ,oryqCp{DDeîQ:WVw"> QNCkҰO6wIRٟl`ԜNWΓ6-|leh;'r(@Aw`A%mLTg $ɸzl~(i7͝/ {j%@~!E;MD7=݄ 6)(o]Drr67.&(GQm@Qqyۏ4c^s EmX.xf|:88Kq GSo9±Ր6]Ĭh.,H+oSM*Pv;л4 QO@mU&R%+'~S J,}xٛ vXzuIۧ\9[嬆jο?hptZ&Yyu+hȕYo.i .r-3&6YK& Ω!ӦAd^%rUaiRA۽IL(7fwDj U&3 *x3oP*kf{n\`$aPXӻcJN!{^59dH05:YU=OeMudsV5]wf,j7j[<$J`9l Cf&`v9+olcTD鋣Y (1/5q c z2UFOd毵bؕofh3F8bx? M@t%qk>e}p7Ƥ=wIrkBfޔO(q^P4P*[$JscM3 *WA{d@h"Xer݌Y.vX =8KDH.M Dև<gɠ5&a.OS hm䑶WFF4ۖmpM>L( Jȋ6ӺA <`UkԪVs#,٧c Y0b aTu!si59R>B"b>L5a^gR;%cWʆ޽= fݬrLPMoC*ܛN$hHO0`G%̹HȺaff9YA~+jYZ8`k'jn\Kp]u8_u?l2mY36u4S2W_Z=MvoUȱN֬ݩF4:!=V Z~-ShQ 8.JQR'qvM}yuktۜbk0;+t\P,ilG1l*=k+ay9F\֬yulU ㉦\U _zoGV) aT)]hVx_᧚tx2W]WswLgnK+8TRcb7Ŝ$=J)"4a /~޾ۜͿ)M89i/ b/uɻG7R=ҺୂOfd)݄,Փ eC vbw﬛_ oq\lg0KSϳvrψ'3O]Fs./e#^`Qe=ԃ} %7ME^/"c=p)"{ 4 WRuf, "«{kGl#0 .Xa\U+i2Xrrϩ;[%ǂ> Ї$>w`?-;aT8ITJ)??tGtk ۚ㜂* Tv("7#2ݶ0^-iqetxr 0Calu-V@LLtg.ޢEŕHVRoWD%z֚A>+}L\ vnaKOCGX_K4`|ON_—,sD˗/m۝J=gJ25,Ct {,K> 5d^=md 1 Bo1]2~2^^P3Jʮ)l5OZetc*C G] M3DߒaKf/9{E BsLzp7IbWAJ$NU8Ƕ#g<9M{ᥕ#".[MΙy]<`7sbrI$g,9/.e*'3j@N'FYP^gaV>l>= S~W94jV|tpMZ]Vf-W3{_V;,,tWekH[Ҩ֯1Td;xaώ ZWlYU*c@ s%Y7uV c`u0W?nLKMTatK e)FJgd #{ +FfLEm"+nYM䄻oTgx&ooDL"LR9bEW>J=KNw. p q!I/ש.jE[hIXŭ͒Q7X3(4P0Ǿn`be}jIsHsVZm9=Nd_\!t]F#lu Є{%Ϲi<:2DdQĨy!HuKD+‡*Rb^nDVsλފK]R'>,"89ion/^c[5\kK{ʅޔE~Dn m++k{3*t^`cjb1Sa4rauh&84A2ϨH9'/4M\P ,*^[Q4*Ұ^6h<P4P5K w*vO~W}IwlaxW՜~ OZ_d{O\֟G쪽#In? {HV09{-|\pRLqYU&f›!U&ed#YeV۞uthЁ2,y31*io0Hɽr&0 ]Plr@U .^ff)Չ۬AZoxԒ{QL.^\c%K|](,QأJ2.QI.@RzX,dl\U @`Uˋ*9S<)x "SY:h?"$C+eVO:p~YWrCzj1'M;0_B ST>_6`]K!i:`eouԛ@z#s@ znwn͑wuhف<)R|+NWzbg)S~QAD -Y#k[9NA9Ҵ/l_+;ASu%i o" H-G@T6sԶm{A HBMdĢmj@WGI L p:4/|W _nՂ$L9qV̄ze,t/3,#ζF̰S`$0!7bߧJf2n~ILh)1.(ļP(p4Q GuL X$U,+]ߌv9UӇ\ƥ j \pc(&gLdήY29˗W5QI:.NXu!!-\fj2FUC䖝q<$|yE]&lk bDکjDe5ӱn*fxʐ8y2|nodA=Zl0ƁP‚A/2b\AAdʃ oD%-E4LAH'RIMڧ@ZZڡuK E=/2͔Pdj2F?EXv4芋d`u+!=OIw&h E).틜ֳATAf L;@ ;CQ_83`OU*"N6H=`3ażtRv@=q `PWcV34bgX(O}b*az5T`lX!axF≝̬픈C]U$.M2][V%BѴKl, ( -O9l "lLDuY4\? Ow%X\~@YХlvwhq}8ct. uJI|S L_pUj0l7/8€XF2xS0ǍܕҤ8"!աB +w'`r^C!0O:\jCe 3^jfQ`1tDsl.B(L:̳m8LI>VZ ѩh{atg`#0Z$u[+Wk4JwE-xuusT lBJd 'zCFXo8;~ĴZP)[=*#7XUO"5CznP.0 R"s:8},=!L٣6(0Vj'Rۙ,9/)T}/5$85tC˾F<="64]h qvq]3<Ÿ`ƹYj@ |=.NFרPsU[lhIݰ}QzkyN&n]ÈnqUKc{<B?_ DB;"R~@{ xSRw:+AJ%*P(ꇠBmR8 ?yiRD򔂆@ѡn앃[WU uI`YHFsGĠFqi$us XN '\2 |rnDыyxL.nvѝG4OUj%e("vs!}cX4gySd>϶LHh겧^0-@x|#0FhRh9.B#f.pWuђc 9O- ଳY7V^.-rL"Pځ'3q=ց˔j9PCZKS3u[9PGxvr=Ą捫@U?"9yQæ^:I4@⢐"mr Qbs 0P B53g8.׀-3_u(+]t)9eq)FoWwI ;=($GLE@>xb#N<%~ Pߡ-DR]W/#0FNA0]L'ZG4V%m9ŝ ݷ. ,jh2 C}-0 G"tZB(0#@}t1ǰ|M25hfj$~ Q*Gj?]vViVRqFWYϹ̘ >` F 8? XDE -n="f@_r q3}248ܐ'1\IbS*B~Qfmd 9RKAUX:HhLZf35[D4Sc;P*Ȩ,OHJD\O0 ɒٻۄkQ#f5[LleL~KdW&%p%1c7rj*c7q k]viby>Al@#oERl ? H5ut2}*&v$\^4ҷ~IWd0ouoIZˇ0D05SgNy۪;1 n|uFfhxq*:EK{2등,Ԣq8l)ϬQ\o,[⌫ %' npy" qf{>F N23Yqw?R4˺ia^1AHp!)}бLqN+A%Opn$NLʃ2 M(f!F`~SzNAɎb"L %C.^ʒ#e/QoMLJґHæFnoL]Mko@$"~ 2~xQNtлPTqVY͏"c}v&TC{wCә5if7Nqnbf;}jgH1|!"wJ<^; kg8Ɲ^ __ILKJոLux3$5[׵.:*wOB+z ~n{B'mϾ/Dza6lq8S`gx.Q,YOg;. & w>M=H> {Z6 5'?D1fGNMHd: <-ӚQ,Awan*z MŒ8HH7?d?cޡw :1H+U#X_i7`$@3t)0@egH?7AAH%EX`aQk}˹xM'2 ZLjr iu6ӳCcV½;٫G|̮ =sϦtzhGŮ#&=!,uD5xAif*P{tlSD@iG:3w+p&[ S? VNyvx{ńL<}.ifSX\K n0񦭐3ǓBϋ5Bo765h ӄLDZb D,zm&h7_1y3c< Isn"p7TSx:핎D(c4 'ubOzOVQ2 =$}}e}PL|56L'Ezk 0[5`pmț4_9lWpJ rTUKVkQ΄W = rP!<.]٥&f%mbd&bx_wut ,LbGh[E)l*L1M>刣s)~!/1e'@L (_:5f0$_)t' 0Pv"^ 2 ؗ0n|Z^Ef~gت/`HȀ|V'P\nF:9ro?jW]Pd%&8j ^LB0KF=|[2+G"S7_XBI*ARǿt@."^X}@M9)Lң̐W!1S|e)!"9ۯ#|&{X>4#j) ,uvTҤv+kE`}XZ7+@3+ߜ.`j5j9ojf̒hAS1H+f¹ Hʍ:6(t̼,A}Ќ[_- l˔BC?\aVvIqk"g;b@ zekL"W lleEF6] Ik{sRkEOK9F[yy 7+QR!5YeѱPtDr0..jjby{l!UzrN:հjhitl,+Pp;d#1ӄҖ@LkV%'];YESQސQ0s1e1<0C~8žvmTϨ ,m =o}cP ͺHϬ][KKW 7\IzN*t]2|¾pm.6npm/6ۘN[G9PWx̘MnΖodL9KI(6ÿO=o2gR|F? 7$vN-`xz".tr&K dJYw3owqB$S9Ygݤ >˘#_Ex7ł~U[e9|<[Qײ^&wT_RvW"j]QetԷg[o8Divq5LJb?Vf@%mRpCK~v4t5;8dVM]7)fѿԎܱqc=;?U$Dsq9CUGn\ʶ _En㐚X:aE"όԚ@\ | h7}Y/By6j X=ց.pǸ#>s }1<$9¬';o0a,Qy.)< ϕ ^2.' y}ذ6cr0U-l;Tř_5z:֎k m!]A딨<9Wv| %A{YcĒaĄw,SX;pqQb .˹u(d:^i]^U7  5w=mmSYrc[ҪLAY!*z%d ꧦ?1 5?$x su$>*0gX_3ӿev?`׮;C[+=5cO 5?%Sd-_g݉ XR5 UV2<)Z>Vmyl:j_ZzhXhY>'KSź]ջrv{|l&37`2Lh_`džסRiWOLL+N!?WdYq1By;7R Dϙ+ dBԩ6pࡿR?΁.Y,NV/jVߟ`Ϛ턼eblˍr!{6}TzH _oOTkDʹ]nCܑu#;OOE񂎕V6PZt%*%L:e70. ?ޜ\:2$%Q5!׃g$]Ͻ+Pct6;= MBgF^8$j1/z?:ֱ;%S?zw 5'TR@s|jŀSG>~=s~TvuvĀ`oMJ;Cu/I˂Y==<0!ɡwuK},Cnt>.@ufo`hl8壗O[yiN7adF).M% e{FLCdӸ^^[OWh2`f# !22Di]x7npO  r8\Xr~ 7!&ڣy=sM_iܥ[vi Q&v"!LH/FF!ȖK{.fr%Kl9~Ë H/}R}yHjpk#.YdW@(siVXAp& 3hoʤtsB_ËUH3PG7n8:|wп?OK3lį+aK%M|8djn_$ݽ *W؊൨5|v1]%Qs`4y`ߐ" 4X5Ya4/vGM+ݷE*NƇfi$lPBtTLӨV,mWA ;L(6c0=>g2TJޛyMBe7;Up7UTXc"e>ۂ/V[@g^RZ`"Y'/? zq$|ចOtnveРLY]I(*R@׺GXv;=h|r5a}؂gj~N ,+\m'|~1ɒ3/TqE5=>{gE5㭨JIA`մ]oVoc 7%(6C} wZ>-74Y֘}"34cL [7l|~to5uQ_dˏ-׏)Qo`M anwsr>|\7n'ާWj;@| h.̤CoFRI͍2**i1wC5a1 nm:* 'xNد`8tnˁc)7]y 6ϢK]H ~aJ'w 74xQ+^&+v?g{q㙉DcRmXT}'ϹE,؂ Dv36dX)f5לr@{۩5V@",Sͱhyzcx/@lTV00 X5DD&DB1py+60>EV8#S@X>kO"Q#,B288G:dt- M -a(f*٢WM=^82 z'ޡAd%9;1$u#z% jY s}Nىm滐ČScCc6*UD'G*_m6&#%D;9:fozQk25)LBCc ͦ@}*Pױvӌs0$,0.(P>NkX>wDTVH"02Va2 ȨXBt5)\_D `[$ M"$!UBUxڷ9§աa풳G;\ X MCT09zic p"/XH1T:Xea6 A-0byy4sjI @Y6PJ?XLCxy$Zޞ*3* qcOSVF DIF4@C|*9X}VŠ)y2MpHnQ"*-릀svCq?!L04HAm#JD~D;x!U(v?wH @m GqYkT +>xM6X(?&#?զkР}vgFt\cXHkϗݞ#e$ ޥtD^3.9 N?Yvc ܷD0V!()vgv/~?h~Plw; HȌ3żTya~8Zu 32U&i2VEM7~dJ1MCtffq k= v}_۝GA~LNWg?<od&j3$H'H!a5_H_p#k*ݞ}.0̢6@LND%Vg/>e-#_XaeWth?cbgR:pQא5ɵ~akqW-fT)tG4pM%OzAFb+"M;|L|9aǺj=xô âW9I=d@ rom6gi k!zф~>vdݐ̭_u;ez>yM(u881-~p߭l˟?kF= Ji{tS5~eTR̖+\zzʛW7 t+lfocq* oQ>^uehClbp/ve=b/3t)FoY0کŌ^;-? Lsj9+d$^3`oHhL^^827w 3,dV(WSBƸ@ N{ClB}Mzm5O۞rB{BIfNb?ȾQ:`)(hH-R͂⠊`n\Q(zj59y "y^s63!.H1&qH{e=WJڊBgӖtI"SY5ޡUC7[M_h2jk-;g:zrGbAe )ʗ;bHq|N.!Q9?3vۨnm L:0 E"ߓkk4KFb_3ċA\kZ L7ZTnᑆ=0s)!QZeˠ4E0gL@G͒&|QFaOߘ{%GVi. lu>!ERikӄ$|sJ!"F$,Ȥ/Ɔٓ't /C QqRͿ#_s+-,a/)s0oHN"RS-l$h%w`QF@>hI t:}Hob Hb(:8|KV]n-6];MjColu=}\«@kHc"Y M*'$KsKکe}Os.cʬe~#řMEccC2сBя)gd/FOI~ʇ?" WFꒇJmZhk@z6-7EU+cX3ow 1Cȴz}iC/U|__x"A!njy [iR$ V3+IN67H\OR5-e!{moݒ5YBn uP#n5X#)q4HY@kOL'!L~f" L*Re0xEƤ {:~1H^F{L%mu;K F;65D2dV &MQXK }[o̰ps$PTh4@Ejl0d)mMY6y_7'?k>EeeG} ΟS8j'OmjyvVH &x۞O)okQ[ Y7BZ5Ồft͚X`ai`e.,Gël7F:2HR&??IcwQ؃Vu胚y6nrX%l0`>Ga1ZP᫭u囬8n;4GzzQkx}?qhI)@ M$aܩ v>ӸcVqŜ+i|%jNۮV~W}~wNO؇1S$|Lթ*]Ňx7KIgp(x mSB0/75 @ aEhLذ@[HNqj.xG\/O\A.5FvN]!"[  ^[c m"zĈ|~ +69m>! I#hO2+>v~LjCi, ] C}ɠ ;ͽNN\11 3 i#+N*ظwкcX̨ɛWPD3 r=SE4Y]<+dGJ-۝]ל^(V[OяHW"jjhlpXIkmiܛDƽx!ZF?OGn1-`ϟ{"\<"€M65\.|zrzz2wNET aJ~o$p_/W=Bza{^!utGY :to^娇nw*OOc.99Y-ߡ{$#} 1lc:;:h6PM~ZnwsfUoĞxļ(7ΡmA_%w0dVWp/e2`ɼu6%qs)8Kpuv&b }"HHɧTgFE.ЧmF}, j\kw%mՅW”"ܔzW389v܉xh润>9|dǭ "}k"--̈́Gz+ 3׻ߟݟ@#G+m'ImqW'~Sצ+2x)[IU7Ux,kTUxn%E<-q$6K_} I " Ehդ7Tj#P h) 'N4>-iGR%NgD4:^ɸ^^"`ʖE! A7 p`-B;9, RE}ǶD켆`ۆ>O6=qv3kEg;`h~v~-xYyXYoO qV PNL;Шbq MEn8\ 󟢎Td+i,8A'ֵ`{taY<;d7a WD:rpQN_YUx3AF♅$$J! l~ O{!$Uֆls˛M?#)OÁ¸Da NsTbZZdZjC00sams&Bۇ<&& Di}p~ Mw~vTx6ix#' ~ygne о}Mx:I;ݵ4EƧЯnSWy51zfzy eb<10nnNj>̷$Fx FV"/[ &8r4~Q,P%:5unݧ/Հ.7y"4ojRYmnL[P"]ކ31Tb=N=ua`RAnM& gJwZa.CL<2 "sz lc3Z5ޏ |IW_sK#AOA{JjD$[˨cxg`cd:ʩξ_۸FNtEub'?y 2QfRR 9΋)OdQWOCF߳ڧ [BNHXorT <3`Q;&R/V5XÙ~>Eڎ%]Kq"<ׇY=PO׍kqӞPxھJtjUy`(ǦؒP鏃x?X ~Y(x(ALn@ud_C.FXɷ8h~]5פc`]`qU|gk,f5/5HƖn0FE~'-# UۋA>V +}“y"PՕfmzSW۱+GU')uC]x~# d;F`q&^2{d!"wc,~"΃C76JKȠH \irfEP++)*lSR~/W[BNOغ |pwS$9yǰ;qgt碆KKxvUI&rt ̔۟U~툘pz؟\} ; $8O$X;u8nxI}YҟNH0\ʫ&(&dv)EjQJQP;}u2]m,i %*:;"rXg9h&!mD=6.GG g6,VH( lŎYja*,5AW*! '&t |caq*}gPN@`S) d\skD:Vj /!ޟ9>|Ӹ;-^v nIɴ7|I[ֻ+#a7C11[rzpT(,ϹFinDu'h8v5k$ׇ/X)V~D4T7Z*Sdt\TGzzaPKICCY$\AYGQ%ڈQ^(oY|6DD=r:/2-p{Q O섍 Xc3?nzsz'Qh*c--|vtbTKS^Zآrt6p%* .% cx QP+ڛΌDpv@aqZӻx1oIJC]~o#`zlL)5{)-쇠szjLgX9I,mvaߩ w!ߣզdԢ@d6ڔh]=dҘpe*y{d*gZT-jPp3d>y^Т$7pds S-0l{l`8SmmnS҆jó)V\,NJ9aSIu D/{=ld~$x[GQLZCZmU*hq [fQy5eτ:(41\<&RO%P8ne^*UPppE=zgl)y} èV'ԶpW?{$?2MD%쮹 Зqp=ŬР:zx/+Zm-iy5ђQ:8pF׬I>X_0`@R;&n \|ݪ_ Yn{f,8z/BXڼ@/V9?JmkiKd `/)?TPM[e~v[YXa48&cUnywΌU 4 7x48k2r~j~&/meTmmI9hllmu!Գ~|9RlEU_)2 `at^ BgD+O6 ⟷b>|g`Cu(,HV6eGUPc'RY۞3OŽS1S3ĩ(y/9#\;İ[а7eeDfN`?^]+Lڄ߀ycRӑfئ'* Dv pѝ h3RP2wOS;r O$Ѹ@uL zl-XwYX+Ѽj ;LѴ YY5X S OAo阕 aAx<)y1-#F6 Ev8KY08рCC UK{Qe dnjϐA% rGmeh WjW, )@,9|œp)^pXԪɬd{)md8NAT1a(˻+>/n4 ~G@\ Y0h]֐e`vqp3u8J?"xw=E~/;Evw8+ aߋ\fI۩;ѸYµzKA|6:>I7NR%ond_bV#*-*&}muZ W=B4Fڇ(C;v%#⑞c@=cdg\apiao1QgfB8N761g<穝y CQө~l;-Qm΀1;ƍ#ASw r]#--es+qڙԚ> eڞgIrH-QI_$a: x`fԿmwaG(s`HћaŁ{/+jhJ\wjsGfjv=n/^wx+X}\Ul!w5{Otp|g=COZV'bp~F;Li݅Hf$rRս~i%ky+C2o =܀x%͞ zC>bkZ:sIQe5T#es#sG^vrb{oLˣŴ7ٻ9YZbҵpG@ㆢ o#] NǼQCnIt[ۑ_eV}.dYSP66ݽ?66,JýJySޥM«dXpY=NޠjIYM֞%r׳kڌg4ĦY_IFqC8zڛ]3WPںѺɼ+zq9tP)o(,| XJ T: |1mnegN'K˥o5*-y 뒵I pGw) rǏRV}pnv >o0d s)nmH_zZrKzaR>@ 4mM2OwGQ]bkn.G9@hm5Yxì@hVMǫ XE5l ˉl3/"_v\7c|`Tm[8`zn?1 hzRu|GS1W<9m$@NMdV34.IL6.RY]:"+ ybŧfJl=qwY$Sϲ\-)XS̭{k$V07$ɥaNY ~Z,-m!E "yUN 1቗_qvu=UG3eqsx4=@w7ig[K]-yl>?6PD LwoLtJB47$側s6e"=<\|g[uFbch+ZbcSL$Jh*C&O&mZ3ܵ`HD8Xaבrka`i(j 4n ]T`3ŤQd/؋C+x,0{=9- wrF7˟.q0ͥh~_^wEԗ%(<:E{'NLj՚:7M{r%f=\8+XVTZLi7~R)i1@Ulk=xxA[p"Gt69v!kOÎɲHuaHβ$6f GYQu SRw}2qnZ#cGdq@p1`e, >Y)bV,lZ}rusx<J"IM*p /㵉 ]9R^szR+B!|0t GNCE1zf ;>2q`"ەzRwrpV'ώcu^9I ^+xF}4(PʓƍxaWg.Fڪ&6#X—%))). ,׍6BkkN l[ Ue[m6]V-W|. i@S󝹣`6GO>DlD˅Ă鋡F!'ItsqO[eh h*(jns1A׃(G=5]/%_ͬx\(SdĿ5J~wTW |د6Qlv^;{gC:zޱ ŗ&n/o2¡{:Agl2-]0X]"j:.D1?;Jd 3㐞"iDKvdn=p ?I̾> ćXQ _(o2zg #tY']nl#-6-}ç>xɍ^(<&׿ye3"CW_ovɻ]?ޒ$^V-"H/n^p^DR&7=~Gnd$ť¡ϪzZ5wxCU" }OjSA@H~vzJZG jr&0ʁq( ]@ژ)߼+9 DC¶x۴UřF)噠U ek`heS)0^CV$/pvg/ |BO"LU?i=v6ddo3LK+vgWvXRw6XvZUC׏+\20c`O8(DjiHy$!UES oIۃwyl_+L4gFE :XQc6Zh M"w`1[m;}st{f_hֲ ;|V].SѤ!WQХo"lgx 溘;eN3/ >;[0ʣ]MM9A h=ƠWb\D  =iHe ?ҏn 3v%WXq*iP<`dA?J-IBrG Y&j$P-fx3gӨv@'P"_aDn20ʠU Y:qдjξd^NPiedOͨ i1lMnȄJ$6 g"r;fbb*Ea<Yť56I۽5"$)P`&$3&I,HI˨9jhBvṔ(I_6#p]w!glA|lV f].a] %AR ZW`䵂 &)}TD&׎ 圮HrU3kT;B?<#JR3~C1EAIUMv7C5%6;8Y.6GX -'a:X?++ѨZRQh;s%DLGdגq8V# ^D``5Q~f66L@HЈR`qA˙C#QzcWzԱ'BbO,5ԟҬ? TۚAto௒4L5]qطic1jr !4/Rv:Bw+=L Dz3 J~ fp4T6w0{kvwUKʰ9d%se^~q <<KKhH I阄< @:s">LrBV|ȏ!16A|Xk\])OBWh<6\5p3d_!)~b1Uat%i  jvѰ6_`n\hz@4>s0CFnm$qcT$vrW^~+laQ1IYSBX:,ޭDXJo&ئ:Q/kaZ ªJ'탵@[~Jf>Dk>#7ҏ}SErǍ@ibr,)hIMG~T )]MD$/$2(I&{)"1$DyTѪxuT$w1%,Kk`ZKeSHԧ{"Ȭn'3hu;ߩ)!|V3+-OG,%n7xzE.b罤?^1 P9>H4+U }e5[9 .G/g Lc# )B_=R[|.i;=Ǵx1|. w֖URPY2ԟ>Qt?p6zF`&g5qR7N mVלrsN'I_t8RLq\WqG1RBEcE|3bXl KijN@ ?g4 B˲.8>0;ҷsYn꾳OρaGE{Iɼj8޸}>s rny#{.{uɊ(1d36CO-NNԈ wDP$崊ޱdq-YUP:* f: @XI`+CYIbӀNPJDz/\{E4֠UW+ߚs*>;&CfUfY jtP!뷲*佂e:2ǥyz|kW9iPQ $MS#G?lܰj=ZRM3>XNeۥGJty\6;l< LȈm^3ǔ׺x@I@Y Oկ{s!5|*:ԕl:,dN˅aT޲Bh{\:FdR&z.$u`v!=jS)ܒ!K|E!7EȂIӒ+kieGLmj CsBwcW *eRvQF31 ڨ""ƭ1"IS*s]#޵wdDJ`01 סRĞQ Һ;$=;.h&:Y2ϠC?6OU?鿪FǢP~&m? `s(Ϋ\"ZCM]w*EcWHѭb!aZ3K۹$G@;h=K!srVٓݍU 7F]fQr_G˱ZYZOzh@6Ez޿-]Py f ‘]kWč}V5y"Br, D$rP, 1wUrhYY#Gyz o9}kw3oyaBjJ.XbhA2HNKH lҽ *KV}S 6'U#T*{ޖoqs۷o..tz?+;?ndϚvzo)}~N.4~ %va)4\K|Rnz{?~Iͺ["yHᅬŠBe-,]}#u#dl.unb:^7],nOS8!!^pbG$zclNsuC|䕔E~d&-4fs'~~~ENtxsZ}MB3 3~;ʍ\5Cn~./ Er=t J6/xi@o3oc|N:px*h]`TRq8Bd]t6 %ԙ^(82}n B jZ 61j;8ۖ4t45:G\3WP&&jrI'Tz W_uK@LvW+vB=:v06.4QF&kq;QSJB*#N-F3̔iknEbDnϱOA3NV(e'J$F*EOiavoby5N9ՇK-ߚ}Bݼ!b Q}{֎؛vC1KJ'*+Yp,yxagw *`y'oBs{8GfRDК&+6v9}s$ RuQeܱ;/RKc"4ExFPPf~Rpo6vI,xPeg b|WVRx?y$vHyx{)aqL=D$/KokT p:oPJ=>^P-ٟ-RaIF a{ӸW_L/nG |PI>FP!r-\~y+o| #2/8&0wLNWO'i R?C&6ludCªFޖάgLZ>2FAE+.|%fa&X2Gtv4H=eRr(,9sNa>Y1?끯#ub9`AͫK7 ]c\ VSݎmtdP¼LQֳr'D<0e}&_9)X|%0 ^,srй]#Hy0$dy(:a@&=D}3]\fmU{H |\@[߼b`2<仩-~ġP'I7`R;#C1yHvgy`2ԂljN~$5@#ΆI'A _!UɷU?H.0 ݚqD̶bDT3p ~0S7( h..*5S^iAHSOr۟/m@*e_dEh)/S]Ad,Ԑ nld Ndi@!\,;Yp<%!`JhT(c܃!P| 7hAuV_a|IkcR-֟4b} fAL08C̭!^\X뜫bTp jW$Ɩ)b ?/y| vH]O ~3l~c BNd?h0h3@8-A Oc)"8$ht!nk 4K;-Bz$}oJweK' |6T7jQU]BzAY8 D1]p5mp>-%ፒ5^E܅ʉ8RjyvZ-I$PzvRmlF9ʉk='fD]k +yp{qF{3 l.(<]<@xǃW׀!~ Gge *{>}a3QMe{m=(rQ{dq=W}Ta&Sԛcg)]^~PlL&X f*Ç4|2m1V+ɑ3J(̨ByZ[+ōӆn&\Xyo [[`oCr/=jNSew,M0nL^DSJ2d'b~[[vI43t#d @tv_ZFXW<x=^CT_3#p{Qc8HȂDavRJ MExsrbw;Wݬ%=ʘXermU~8mw[_(X-a0[5b%6a(rs:tHS7d8k-'ZAǀ۴V`Tx*׋ ,rڴ|B`Cꝳ$grKj̧@ LND;i³łޜ_6:*hXHj.~+[v'N#Fv¦4Cߙ=9QKNyOL;m'ZHIea 2]hlV_SlÿFVywֵzg)fVE4TLQѤ#ip@<<*} Lt8) N;oi҈eQ> cmk;S8nI(d#ÂED)FzR:GmvYWWE Z(,t4hgϓղ8)D +x;ŭGRWؤtNu;sISE%JuɐU6 FL֕|jF0c=ǟE1\eSx$fڀD]۩TBU. t9 o\OЃ"}H (*|%) C w${x͊)锘jQ pc̰*KjL+hg; %y'3ggoIRxʺ,eT ՁRe2td!GZt1q(jw-TxŎ/[+@B!fNA<.CW'˯&*tZ*@4]zU?\_,9Q^i<"DaPX#7}͎ƕmżxQP-IM<; C18`?#58=]$grkzˣH'fb(ՖF$Cl. %Gn]ٚƿF*e C@qy'{ɵE^j/R.ty Y!WA2TӉA b MlO+{ڧx'aeLm\MϕrܙU*Eb+vK.OGhhg y6_;?!ݩm\otlZA3}e'12''xԾLt<7<)6yƮM:ON107:r:Ptև8 7h<]PQ!ؕwm#h6jAS+hѱo`5gʦ2m8..Cq=ܭ]ϔ"ˍ־)q:}rƅ.6<JBT1n !ZF5' >hAfHe0M1` TiVyxU8s@ uP@PjmuvD?lf/3Op&}S/ͺ oxmZ,ܛ.ENuJxo?,kD2=D5v)毦@YRI_Dz I葯ч*a*JMLM?$57fI?~m"PX.N:pc:KɊO*.E dCe(k2AvQy=ukw"@=hS5Uw'|FriLj-e'Sa ZxD4dwxeLu}pZ(uaf6Ȼ,iWNº3nwAu,[ʴKpcكZɈh t/rdFi"OɴxY?'>|l ryjQΐ ^Q\ߛw6΅y{ &i+iL jǹ-䱟l܃AoA$#oZ j%}Ө+ꂹ /b)"؝؎ZЦcUpƇWTt+Y uQ?3f]faty`V^˴EB R^+Y=]X^SMDoatJb6^tn&vvuc?o͉Γw2Ya%Zҏ[>mDZ+'m]arf)VgD#^-KƤK_Wg'j,TA=vMvJta4c#\]A61_{>[m თmO6E&+!,IɢzUR4r&[OB8]fS\Eq3,)Nj.Ĭʮ]); Uv< ҝ3$4W!&Lc,[?ǰ8L^]`Srt0@5 #!c#lݸU fmۖ{Oz 7 ;sp{Tv9ϋ˴u͓OHK+(cMy2}/zX!m_О'/0h%4yC4gKd^ OTG)~z@'SNLLڊS:l-֡Xp_7dJNS\ am&i]Se.Nv'3X9Lt:-Xߦ^nC3wR:_ ў.# %˺غȚQHpc4>`NT"!,2Oʨt,vz\Hp`Պi̚ iX],=XݮgtNP7C0kQo7Š~N Q-I ykNN?w=ֻZu7z]|pr<HFEsC\6Sqo3~Xr;\%8CS Ǽil'c0зa#V(}kt?Ӹв}t0M&ĵߥ/ä}{MEX|}Gs yBuzԁ/x PE"2nם⭁h}@4f\֦Xk@1߫f[L;| vC1击ԿsDEcUǠЗpohf)Oר뤾E.^=&s@P%[MZXߡs{3}Xl]Gc/RU$+ gҥ4_Bhd}y0CE7]&xk4e| 02[hW^!(&tL ԇ$U6vQk)_ۊ(Qs;:gՂ6zS&X`.`If?t۲hpkTwn [k!Ƀd/1NI1.bY9iQ 37/ėVF]* ~1r6p6IIW΅}eϥC3,HeU)( &29{uՀ tԑܫF`n!띑XsQkj\nK .F`p6q[0.!ᗗ*NJ .3GkmrT'iB2T.v'tkw\g3D>H) nf^xPWh8uiqq!a(1e#ӏ{' 2RuҡR08'Z"1)ǎ&=À)I^p]HP#o`- p<46[2z$-#J]D3տ: 8?8PBi?w΀@>[32³~Gg0IB/xxp/2ԍ_$GYq3 JbYW#7e$woH3 c`0kDh@m֮WgS_L6@଻I >lkr#G(THnmp=n5'y`D|W_cGes'-:0iG6 u##hRexyb mlM3មH#Ή+jNe2'YMD*&ldzQ D?=h]_[["/7nvHk"Rw/_ͮ};0n/XCvrOo3W󍶭{,EOW;C?]pZ`f5՟=y\`w,]N4W`NZцFsNc ׅWEd]SӁƚRY$iB&$^ MjJdFVOo{ Jpv5 oWhp@3!PXhYv[R8`WiMtE!Vb%|hw1ka%lFBV&rmPzH)k*ꓼtUao6K}?ikt,|=ˑm R@]+\HO! XR _~C!tt?M|C OmȲvO&'"=@<1jCfai'+CH4BQ+O-NKބ-+u^鈪wrjhYqtH,x(dd2 pum9BD0)`{ $=cNJe]zkk/Th]u*]]QU!^sP tZ.L$入V w%SPFsEȯN#0sAj/ *yi-~(0_*ׁL6E ՏNCh5hQ'^BP}Pfhl\猬̲p~"-M#n4}RSSw(w\,gW1P* %μE&W =5;^ y8Rn=#`QTd,J;m[MgC8zǧǂe(C;!52^'`+皣$<1a U|h:mkn®)\=`Xa=H^>VA[sڣ~Ӆ7jÜq->T%GP zyaon[. rxFl/!%&j@i%|@YFԯGHc3jamԯMg}2D7%| =9;Đ֮ 3{l|2{Pj C_9OۀwYG\_fMCL]Uc4X6[@ Ӫ6{Aq|P!-3,_|. nsnuQc9NDТh-OoS菣I[أ@Yx^܁2- ~+U6{ۃF-4j\4s[pA]`\e=i8YF#Z9 !Hg%!GU`}~nձC-r@+J6GBf% =rs rZ2w߽MJQn4E )Yzޥyƹ9|Q%aI>T$ m)I;^Ãu~|vSA_eȗD13T80zއc(Y).$84':;"@ɒ{d6Uyz__(jMWJve3 hov9bw}=zC+:<y`6K .a4໺lKʦ?]z\;CY%/lfr+Ty OI*]"q5x=d742$CŹ ^D{A{mzs0!apIC' [_-5sۛx"Rrڞ<=_}D({(aeݲl۶m۶m۶mUٶm6 3=7{`Vs\6XV#+E:Juo&xj$P{.!>jqPcwٵMX`55˗ uήcʼnC "!g]cI䄈7b$H6_7,Akh&b6z5&1 6TnVĉ%pԮ`3lҲ{\m=mqL^C ;g9t}`:; Ebe) ,~+M08LV3)P g捀ٽ^>ӺwN^>/dv 7=bO|gȧk/U1_ê Izd :og=w]}h/Nos5@mVI_H~*BX ->^ѡT߫ClKm>0Hf3/$Vy^t1R14Nc\]qG`F2G6"{tlڐFTz#u>{Ijg`ԗTJzQiS#vNt8Լ:εm@W~  yuϖ.gdLNC_LM 7e9llRg&=N77?\C>rIY( pO +^< `}G0rj2,uh~~COs@:?U޾Lijtc;#Ʋ|ȯvBe&PDu!#7n"l;?de&C#̡LaF! /zX|C,M{@? tPˑ:N7Aҁ1M))#֫r")`Y\;yK0؇JL]+wG$Ѷ/{6 S_F  +{rg en[A9 O$R ;bm񤅧_J 6<ߠ(}`n2\U{,BiBI)LJMT A4rrԮO}OS0?#ʗ>FQ.` l)',ne}!Z ăVX`MV*䞤Is -ܖ< L05t @aSm̒_{CY"aN=D\_+#@}{7 ڱ (q} dMwqB<0l8Fsoi MB0 $ gn5ngMA) ź@*lo,`,̾a)T P#wԟxAķcm__:bwOȧ$E:3L㙗ĆifrYp\$5,GHE< &)r׮_򹔻 9iK9_ !P6aHaďH*bW eR#jRqхQ s ,D[`٨ЦzMHdRg<nPbe#Uc MG- ᖵ-7j*(^:-sCpEO,/;bToSnE v`V Jq"(NBD XWXL 9OBbJg3/0]WňK譇d;CΥP|`4ScHiP7sAû6_.%&\Z3I$)gl".4X~Oy!B! DrDg/:$lڜKh0 &/{vGQ\髥[k]g a3\'c|& `$lMnÓ`\ 0#/qB fi_3*@!tf!36$&ܐ(-Tq\ ڂ6Q.%+o3ڝ%d cqQӆHTbe[mנ3 .2tLEU! H7#N<;ajI`Z_l*;F6_2hT">L;{2'01Ë|ևEBt$0Qͽ=(@=}~Zp׵ac4̓VP)2%Z%[f#~,l+:" GG|pRϘb8\n}PK_@mh k5Qnz-9zjTYC~ T'▛yJO@?-0_w@8$v&%gFVLF LO8RD,wtƛe`REZ fzbkt>wpPQoITNi8u@A '\FW= #7%>]s|&k:3a}5kh'] tV=O@ÚŻMoIϲ]AO&h6|5Ա1-MJF*t'#sdך'NXYd#gGcؙu PU8ȧ@G߯b؀)0)= $>5J/Tn"zD5ݧ nnc]&r+Ͻ82#[ _4 #^PBY Zdʺ(>{IЬ҄ZR,6"\:H`Ȕ@6'fPlLЮGV Aa |Pzi33Tτ).$bTa yx`$tew.NO iϽ%x,>F)}q:8ŢL9 7)(-n5RFĨ}#6IgvbRb"xϩv+/׬ t'D,*p{lQϟ5,d d$e1Yf cC H8.7Z c&-gOt2!R.rg8- */ZSXC P~07 feǝ.͞b_{$,KGGz'xHooɛ4qR?xASƟ[ڟ[jTGJ3P zWs༇#Qs0*%꠾:힋vuacj1 śTp?c&`HCy#g\G?Ҿ\̚]yq,VUS^jğꌧӇԇRb8=Esxn~_U[۶^\h}.U]N#٥hY{l\^4%CqW/cȚH+^wt+Y+}vAԺ]}I ?hť` 0Te0׾t8+Wu} Ƭ:WzxWagឳo)\6pFZ6 \ҩ_Loq!2[/+57䕔XvݖMN 9 9+ RoتJ~n{D]ߺK$ƷlQnYfU)Xϩ wkJun?v){4oӊ'H w9~Wt 9tDOg^+NߠH:?$?g4?XWNJd-_g`)a֖HUeb(\yJ9yNw@r4=#nOJߪoPTTIu5/ww'W:A:'j6PfJ܁Ã-\:+ nsw:~sPwkL:CW_}BV6ݬIR4bqq=!u:5jvTS{uiQ :'ҭ@W>x8RHș8}}hZ~/vIF5:"i0j `Dh>lٔGΣf}hoή.e֍6YnL=|'NcHyO Cj?$}S\?,(>Sp+8&9|0Oɘ/Cv2J=oֹ05 JBd_ɦ"wLk-@Tjߓu/XdducM50)i]wqIYm[/Iy}G#ؗ+@ !7^淤w^37_} AM4Gtin`S0;zۮ+pE !&OBߢϒ{ҋ}z!DJ cjǛ xI5#n_-I',Mc;@pd mW3]/} 7ֿ+^Nkk}]'ćYx jt <3 ٘/gc{W:vn=I/SIsL֋ &⃽l[橵0BN i" zJW-ivvv+SBZ`bIVpf`ʾ쑉dL)3XG76@|PC?Z ް0D7.DuנKF~CfA<1!,J1$lgECѼr߂̌7yh3舄`ҧ 5B!ZMef* Y!"_e!1" Êrٵ5m11T[.Obà Fe'('_]Z{}=]K#eI?@)H+dDYIH=>4W@>|3up߹@_j̍݊4z%EWᆂ{ɸy Bȉ6WPߊ/Eۏٞhx}2 VR'1inA ʶ7>ǣh'%6/L;=\ , wirl܊$=pg]1fyjifn#:8f6on C4bMjw_u|w7tkP1qym 茜@њi "pnttz ~rn˱g?oi*E{h93"JZk`?هH+f¼isub3,#:&Nlf_6+lImis$$Xp{)m[ _aӲO),\:D0 v PE6Č]v~`Ѧ NْTԩ'`$3kL\B!QHJ*'[PuZ(,&, X3x"a g9wsԁ8$w4eŽo?(&+m%~} 1f׉1$'[7n]=~Eצ9[B3[:9gSZbɭb@4tt/8yz02>39D@Rm&XayNS+wLŠw'6>zm|<)U7 I3" uăA@ =!Ke0fLdB~ #1 ϋEDhcY#oZD.d6 A1{s?m?2Փ v}-Iq ,w-@XT] (EV5^!~N dJ@!"hwKh='0="J)g(0Ϫ~m]`-[6f[lb".Gcݤ>8L83/& /gl.~nt" :7i<- I.L DloHJXQ컯JB/d8{ ҥo?݅Xu6+93-yJ#GBQp`.̳dvkꃈZcd!&EKev4vWZh-ߪ"Fؕy3< Js»ncsA1p[q'JܾB) C=qds$ƬA:AʌywQRF@ dhU5>iW q:姻ۥQӤ-C@d$W2F73݀; >+sFQNX#-du8 Sh4Y#;*d\Wy\gSߨ$:*$Hoک,yCf qQk{JNv hp%QH 73jg0W8hR/6(1yYfH0{o}15H\tF# l:+&1!{;(8FL 67e5;0{7Q%eKEC>~2dXV̛7Kb0F'J\GSx[CL =DIDPq7[YӆW“#8gjO Sv/خ8`Jfu`zf3h*fqh>?`KtX jK-dIvca.Ͷ@/J59HI}&S=EK{FOowQ5k2V8zj7RÓ5hxN[x:䀸o1>0aQa-/ t~ku;ƣ~ȅ]͘z2э/qe{KO]dn u0N³rnƐ9xU%wD! 1)Tkt 5(| թᏐMړ=؅A YZٺń=nDnͫ܇f_j J`8WT9,29ypJQW$zRBzIiETW7OqJ 4X h (P=d4*0+{)o5NfH &;7c_gs9a\' h3)%(XZGcŎ/6OբLYbH{-5[Cڬ֬f#٠۸ ŷjF݃3l@h9${[ǭܳIf8YW)| VXlT{%I#'Y`*uZ#B\b#9&1۵mj߁.*b'sd(ybֵCjV<8el4֮ ̓f_gYP*܆-r2UmI Ӷ]]I OR$>vi]Ɠ2/Zt,X *^0(̤/GTX]&{4O5mf986B&+E(L+c}`5E/K!L%-xqbCB` ȣjgh/x/>b. &:yC9`ˇ)3|oj#сmjۋ ͥvf|2WǴV-}R+u14"M5Yjfu#IqtEۀR֤J'~s^~$<')wnEdJ!*<ﶶV[y q)_ngk*t ~{oی^٧[* o3>0A+jʙ«R{ģ83$7,Rn=D4UEs2*XDcVqnFXTqTmQKWhhje{5U5=D*? ѹ#MxNW5Ov)iF*d-}˻w+J(hAi1g0 b0{=a31e.V31Z4z BtCvC'X{k ,CM7[fXP}׮ît_\K]AP9X9d큦e-YY_4FF_nf(WφLzLOd*,/yapnP5q_V4G 'zݚ7W R9&"'X3ag??Zhǽ8V|ޖN⿋ta1cZ5 ^MY1xIiS1=jka_sXT`LܧPI U:1f{2fZJ)mN㑶˿T\qfHKdO2䍌`N~Oz& >tl"yl;^gڕ$Lj6x,q ]Λ/9p>~J]8VNXe! 8t@ Ց3lt59x;`?fȚ!L[&oCgj8A7rj֙TY&y:ϥbZ^y2{}+ڭQ"?Í5?eOdaS7mؖ7AabU2AL{ GXtH[ƞD&Ad<7-C뤁ezf0ƒ[5]2-VPQ,޾8Aww?-c?~/]=_֛x]{7M:0Cm1Gvܿܮ(!ܣmm.wjNsO>Ce?ix猥>N;ySExDDp:ч:h?~#JSɁJ&*?[J:+=ee-?fvb-NkJ++=3RQlݽơR_XYSu9#)qG]~B__Сb`OkQ˙Tm7 Z?evo?HS|0% /o"}kvK?4YmHĈ0eԼ}uqJE_oF^[-ofbݾJaVLj Q΅<:VB%lufgS}-x{eڭx<9O^TKQOGAʙz[9T3ڽAS^Qnx_Cn^4ԃ:L6a3H +kIV}^}ӯS=NW(/LQ%JNkh^ 2#8Ì5.vbʻ߯}b0u'f}&f":*7Dc|WgY"z=}X>Yf2rsc·z| e@'p Ѓ֎Q}ݟ{z|}~=}? @Cowxϫ9gp!l E! Bml+{%sM >4jy'~^rnW -B:м p?0fY¿#H:HDHo?&Yօ8c12DM@~7pNR^"U>v??Ø3 jb3oH-I@fR6Vb_g8pG2_F,zFUR$5,wcԋ/F?WIb {ݠ -SohŌ9PP89M@E0@6Q\v@)23)mgeoZ_}^Fv>#x\s1 Hb°0?F~#J F҈M_j"!gGb8z6(k91 -$pdX!(4:'Վ.Qc~AsN=3T0RVvyG$_Jc`X"ww EH MT\K^Aw@LpRاh=SSj"oI fO"|l]$%KbUF³@a}-/0w5!, )%sY#L)sIp?e"ӒTचh??_L]r~|poC[ny*ƫqaDEiip[oF8p:d\&=Z;U~I1Ӆ Ɔ_d¡O!djŌ@燩A9Ҋ gyPZԝ#\Za'Zj~ҸU{xlXM @l@=cD`L,HH4իͲ[RݵNcP" 1҆uV& y64;{\~MRȤ.cvWU1 q^ kΔaϛT88/WLYT;1Z,LyA 5 yUٓ)~ rAG$t3#`:\H} T}MъMi2 ؠ5(MǶU 6lC@>]JP6ClfjjJ'+4|mZbp, SD<%B#W邘Zu< j&̿)3+ř V{gBpg'AD #Ʀ1ԗ>] `=TC1B~Ə%$X"!ɊݎT{)%ȤGp_1 @=HەfYo4ɠ.D*^9j'hbYiX̼D@[m^gK%6+Ǐ-=719c .`RA,B]o1kfϚIN5.?[m. ׻+GyO 4zvz[ aD->u9mqU&6/6x.4UX EMyɻw,m6A<"p$}Ð1y.1ӕzwE˵}lps3:hoi5P*ʲM=۰V.ЉRkRQ1"bx+F0@ٓ.1=Y6P' ǜ Ҧv}*0ul]wQלB za)JsGFH&RP Wn#- g`LF]8O#elז!"n>n=Vܲg6SF1U<5 $ћUFnnϛ*:dpT}ܟVsr=ɲQ8 SGZPOCl~FP^7RlUnD kS(nK+N?쉼ON| _A*4L,$KXA.H߱Yљ੐ H/gHYP;iAed^ - mx\({+Vdg^ug}i'oU]47:Sn,>aQLl-xqI ·aDC{ Ns b5+ei, kyqn5KeOm梈bmrG J&էPhCl?`J%F:ԑ.} 5O[*S3ӗVV ɿO!6l>}p:Tz }Qc \(ɷx/8 &a0G]ǯI>P6m7-EFCZ[JEGq"̱Z56dO}IlrՅؙӃ> [}'<<їU*_q=2ՋM[~d]7AjbC$A&Z"Nwǥ] {} 8c s\=Qvv" Sn[HR*TPMƵ`DT؜=ک"g+&6**T `6CSF ZˆtJ{U`Qj%ejEJh@*UYB1s!:sbz_XL:/J9YE ?UIO㎊8S=/^@a,8[ &++fMsWJ:^+{O- !M6Lo_0sk{_;7Yi_bd#?U02/^)faj媽Xv!٭aZ/erWa\6zOA3֍[T!WӞ[+!VBmJhkJ=noB5 ݉0_ G22`icPDA L木!KÃWILI- †JGݐ,mUv\V'ص_J܀Nǽ2,H XAXN݊#%c%y&q{`LmYfa^0iΆUΥln'dގL}:Y:[Uɵvzcne~AtV$TɑBvsth+ʾRe-nV 9/KՠL3]E4V&}w5S_}i Zz5WPjL=[of î 7M 1P>[R Z2gAmt$L}ǽMNK1+p5 W[ѻHnk!b (: jPOrN/gO㾾Kq@qvìuJ=Kp x qۂhRw4zׁ+Hb j[{Xt5 \6FRF`0z]›Hz;L"CGUU]e3R .?uu8$<)s jbjTNq3S\3؄}g'jZ؛ٴtn{۝C9vڻXm* ?zsOmx|j{ Zeȭ&*6E/F[H`gZ8=*-s\0՗}! +6YVJrҷ]<}6Tn8  wZk(U(-!Xr^ՃvRϝX!~)Uz-ڎj$ڠU^9$ N,( =4^b1ڪK2VXr}1nZ/Y4_,t{\W!^n%zU2ǯT؛W&fn.n.hߋ1t7oHm-W6 m`1^{ ߀χ +@[2LŅtfjJ=hطDuA=|HPr.aƇv)ռEF#:E~3\ $"Δ=xo7"M_\xq?fnoXg%y!`sW+W0~/o(}.k^:5lI֑sK7lc-?ޱ[QQ6ܿ< bPU%gjc?usggJsR ,s4Y0Jͷf@-6>f]=Z4d4E!1?px@CjanϜ4848й&Tf*e1{C:FPK6g d>y`%#iݑ,nr!w,U%Yo+/XLm} y'.pB3.2+ nְā~LZ>b\-dxN[ g%,+G{] 3P|Hh +j:dC_F T-`nϏ=(-d_6B^\4qyX+FJ|ŵfNVX.`Qw~l7`Jd="8BYV}=!ze #Ez]R3]\fLgG?1\TvEln;lT·Y: PTgwIs@/3KRqE2gᯘ+{+/P[&'ʻ;bS1}U<Օo%'T|H"L7v'W$Ar]Ǝz97FwnV|ٰ;5اOCzTYYE}ǤTi.bGbEf$9J`In@p˺9g`7 )5(Ͷ "t)"WءkJ뱢:_i~-5ϷgP])CC-Z^0鴫of7ƃ_^zmWY;)+R!!#(BXZiObEś19\zyp%#T@߫/S_jxXʥGyE ZQ뎖v9sKN (~BuPwWGxKk_gx#4N.٧fjN@3L~hwDPW\EQrS p'yH?UpsQ =V:e+=\ 5/5"+4gZlPռ3 @&~1koެBj J1RFH |]5ej{z߲%> 5GA7dUK><)j9#/E=ro{Db* ʑrRߊH+CLEJ1Z(§QDEp yw۶N@GٖJHXTgљ6}tTߚm`Veכ6}*|8]1Za^}t#JlGL7`:s((B7A],>-lZľw6/~@=v#cfT{Re3̶n>Ͻ$k49u֗7;‹ȫ>7ԆtkzвّӪl/ef[Bu&|NE-ub6OR[λ/WfP\i;NkƈX|w-HnkKzhԪf^[O`kۃJ/)RH&%yO`5UE 6JW j'o% _ZY7Hp&H$p:YVy&coq*tcgQ n)9P0r`ܹfv!źȊxCe RNGGd[vy硁.0(u7_k4:'əBF='xwLuEKrgJz ;}}؉.w0n5 J,UL?s].b s+׾8 ?R7DW:-Փm/f"w5 _"\2quϏYуDAsyyY+ {%a|,=RpENƉ|OmMb+wye:j<%MߏxO%ҋ_$&֏~![R7!A)m͈ ?%FmM~_knnO[݇LZʽTDO ۉ?e/ĕwq%8h81n8l4 Pi =t_KcXnB~RՋH8pDyRBIAb~UN:'uO:j.f׻vN$kQ@Փ:NjFfANooli A_f@TclɩA\8X!1 ' NDR檙L KuSF߾V_i#A#%{%6XD瑣g'g_[rmEuБfoD`=yw SYxZF]f,(XA!>ʌI|v"hX]1=/Enѯ{3=As^ AqF^NRb U3/t64'uxtmq_2EBMHRY1Me-Yy`|]aݵJ'%p)(8fZTrԼ{Y wSvD wS}ǒ*sp\8J#wFf*_î,|^qIo dkh(7bZj¶ղ̼8%|p~Â(2Hxxhx%IbںI@,Y~a PDiHPZcQݡۣp j+QBFBkv3H7 Iч 5'W$؛]~ 7&PE1+}e>_ ]"D&<  |o)ZޭAXߒ5)mqaNY#3`}&[&Vvx0Za\vpFC0Z:m]?@ya/k7uyR:?Qh7^X<M< <9[mih3MPre>T Ƭz)V{iL1O1P5q654ǟbLY{*f:Yȏkhf3BC=9J,j5L%v)Wľ %gn.S&_\Q3K$e.F6 B!~X$Ѷ^1zɠ5>}1Oԗ4e-?Qj aUnfj@?TaP$cG=*1]&mJ%l!7,5Jһ}*bn/'@8fRcTi6 J)/r*c{>wW Hר㤈huXcP8n]`Ib0*sfTN gkey$%_Yׯ?㯰{-okAѤX40p`qgl!U@-Gzg-2%/)s xZjG<]Խ44B9aH!Yg2ɪ.I]2w(u9 X뫸"W0,ehCdTDp+C6.>S߱Vn2UWȨ9b Mb76P)uy✱ѾYj߈ՌoX,ZE&!6pkDҊ"0uWҿD;UCP-(@Ct}фY^Ȗfk9>yLh5welɫhd#Z!n#@CihMa4>=6BZyf Z!Tsvzg mWG,4 pu N`U8~qW`WcJZUJ g?lV+5U;|mJ97 πuDF1`VFXVCRziM/onlt7T_\:F͚+,8?Uܘ9pJe ;M0í&\5gkm-6ܩLNIP*g+jJd9;R=Ѿ%dMDL~ř:F<~RQ?VPt[qtҝ7ĸ?}}/,fk[; 酚XOA"u |Yf 8E{9ݗ̸:IO74rf96_NtF!aAq2v7 Y~3lVd]NbQ#O~vK?f `u0.!9kq1,y`3u=r9ޥHI8Vk? iEOBBBk2q!`I#Е7˪3VG A SB)Tuϸ}$ר*h~ OqDUKM5dqZSu]vK,7KG pcж1@iK2&,u|Jk1+3Mv5f,朣X/c(m&89Pjl vO3 N` s| e4rT~ÅH+hNGDdB:"(Әߌa>g &N# FY2p%pmz@^hO@2+uY8(+6{BѹBK͖MWl#gd7븳}$ "49bf8Q)F󥂤t4g;4PX>x5d)#A6YG,#ʾ'FHkv2ӻ5t* gkO>qOxg JC'.T RŧT !&C>h$ 4|}~1Ekƙ#)Hp9r^N4EW!dE< bq&C@fb`*'=m a`:otOnAi,^G<Tm=-Bq ; :oc|Bguo/8z뤯&"S [\>9&>Ƈ/ m Oq|F^oX&.1l7jѝ&KOR}Bĕ\ac+ ]n\/׎?N'؅N} xo˧.lSLJ)Z{oWǹ`=shr,3rzaqP"FYb; At [?6"β!5E}KΟ/4tn>?񳎳^JYKj ]<3kxZ> c/ fݵÚaN,%rrb5sT\U Í.ޟ2-X e.ÄkWJf= 2}V0MFJ`QFGO[:҂-@lnG 8e__% }CCT#3iwA}3'ľ{4. 06tĬ5^Un7>&DH M2M4qwhewgI_Bޖ Z n5¤7po`FgԓeKz${Q&+#:t~{. 9^R]N*ki9RKm @[?F1B \};朑3*˰ (CؓG!|K9sS{n [)q`S'Q68}GݒJ!DBp5TfjaXtV\* $wUX~yNjgeeTIa0|^mXӖxbM]Iiލ8m4˰_fKEՁgYtI='t4FP gRtʄTOAI$ l N1@<^b+5̼yӐ9)g`!Nr-}Fݳf:1LOX5E1߻fL0cgGجBj`$p⭓>oJDmfg^b6)/x2ZZ9̃16jSwj-R]t͆\7qQ!C]IPB=}eܸڭX9n0 M;lIOYAwYH;ew)j)rs}Sѹ,p*sJD<<Ƨiަ^ەt?^'{ۏ3~ 2_rv522gru_uyoT:sZ_]Irލ$ zՕ!9tMэ0BQަ?1<ԧfv9WIZi.Wówqu]8bhUjgf0:>2ܞg03yc8@ r]bNs^Rx5ixgԥly';M77!g@/^9]s_}v(v"Dz5x#\7mJkjh!NR5ߗEݽc[a.y=qzl$/ Z"b]edin.7vN'&ذLqWEK1-󶪜~7Eug6fsm1Q7|!~BUx$:5W 3ޝ ޕfyϡ.>~5loʎn|$LC&~`7 %]pg-*<>!@i<ŰHjcỊԜN%N<[Πݖ K̮~l0N&7#w*btea/>nI`~iwb2-V%;d/=QĦt[gR?$R'<(+8A:)ex bzt@UPUwR$DT*X4ބJbפ"4SS&T8~joD(F#;2eMm*Qjjv{?|jWۡpfJ( 쌝ݭ{l UO:vAq[E[fjwlRخ{~Lyv9B1QG )z¸7ufJr݀`@Yfxw4݅|K<BYb]VH?IyqÝ)ωľ uw6c%ʶ/%8ytLO[L-p S$ɧ^\YL^`Aܗ"mb[TL_]ȧU0@%U,NfuUȩ=g=r,>^v-܂lӕt!dkG10Jݸ_{ ūP^,G`zҠ|n^G.@km0,sػL 8fShCImbX8Zr_S[#_c%2wrՃr)nRF.=w"3Ϗ1#EY<~rDIGGm0`8z;\Hճ( E'`+r<g%-`uDn >?8轛] VXϺكR`]7HYPkRk=SqA=Cׂ|y.m6n0? H|5x凈db"pdY=CSw/~rBp!BO ]Osm;L3%o0/'MjnFtp4*nf< 6kpkuiz2vJzg){lm޳ Z끥_MCK,B[oe'/wT/AURt\PM \8)x5޼[ѐ㺢I+0#LQOWw+6%2ٟc]ӹ~Q/V"=]u93CcŐ[5z)(b)Ntyi.y9[ >nMtSip&r6G"02"T|dW $$ )j~ə.<[RDv:dd~':$,&uۈx[#0FRPέw7( S,S.>ClЖ0afZK*.uP跰miS& StZ@FMk\>9` \xo+[|z\^̇v+˒Q]G#dwL,kQhFr%N 4Eg D |*Px 'j΄N۵amE$h{=%~9r,lwL_E}h-!i?x-]=gI0u'[eQlǍj6VB,9Ơ0${@tjo1- KnҽJBn۶aѥU@e̅Gb8L`[8xz*]lҞW޾^.^mY :ҒSrxW ^vwMD6&zBSL+dףX=$N}$yt |ְ{@]n5V8u~R!a ni2p v^,Bf|BDIC$?FJ"AFLeSȂ jHz <)IcROɼhLaR 8jgW[ NZ_% 42UWqf_0Kq_N_k՞ '>30 0 FZ-D#͚vգ§fQ|UQ`B}T):[~DDJ(:;6.>i>l#(>1DHS~ΫC w:8ӧ3tE \^jR>=>Trnq-3g6FG2PM6 weWlL®M+댬 -unܸJ5BɈmw~TSj5^h|/_eɍ"ݥ{6rA*fH+ 6vt$_sw i'yRMߕk*WiAmrs5IJ MeSU ,#3Ÿ =nx_-_Q#_F99Oe""HmZ'IrZcM=pwC}> X)Lkrc;aFiNm2k<\?;}r]gt1OJ%Le`LSsBrˣwE[Ob8 TNH(VSgbDX]z! J(r2 4fY CIN!#:07=<U~Z32EZqNz^jfħҵτ~\\zAJn%L&Ѿ t?˾n#CKuj5jȒStVA}MqZqfcJI,  %1*ȑe5:G'{r?d%5[2$FB٩߈%ɬ@KnĵJzk'Os3Y?{Hj 587kӎZ3'`K_@PuBVc|FAwe7 Bs_C`Tlk`T+uI a5qoU QO; 'LenO&.FaLi1/P?4CJ0I>H#LnAcP#ʂv)$8`{LG,eqEjޗ`8Gny(⬺RR85rJ"LpzIQpJkv>hLmJdkaF3Ű"@/wj{rI/>ǁ&9uA9كvgꅄ>&ѹO{4e' 'nB8oi?m۶m۶ym۶mٶm;3s":*xݽreU^ԉ-;BJ.p|ɚ+[Sin> /&l_x/Owq^E 3N'>>\J7!F|{ءҤ3@äk$>\K~@56ɱ~^ӪYeGg\[NyeH;;΃i'c`<1$ nDKqu<ԔVGG}/{wZ> C ;:zd9Tѿ2@U>x8Z-Qmv}[z^&MG'/D![V 6n8 6Aԩ@611 $j!#M"I%^yyx8u#7@;C`V2pϧٮSG3-ۛE(2H壓t6[pG4u.iذLnobA(բxO$} Qp#|+;̺7Õ*yݗzz4h诎! hp9:7̂cbwSDv9sjEX&A|4x ZGp7G-! R]>:{'Hc{ʅ ik xlĴ韈*.])m\ؓh#iF@?#L6xUi?`zy7д vi ѵMr?+ؐ属+Omd5B1]t} H6np*tm}&U `uߠ֟pvj˒=!=O>T. =~XZO@3D'rg(); nm̧9)[~ИZ*}?ZdK S߁d#`c-}" F̓AK@7yIR[ؾ T%ֹuxQJ.6b L4!wU_P5,vΓ&v0Y@[%(T`^ N|293[,+%='c< ,i&޳z[JM7 S|<|!T1PLwR [ޠ%],yr怳'=*P"gI16R{JiC1n~ҟB4,5oݔA4iV//LY8 Iir sXDl[R~%ڦ2su'A)ng EnU 1[08q&$K^0'< O[T7ycGaYTR5Eu4lR0uY$AꛤY-<GC`&xC,#ĔƵu+!CQ[#Π#שkA~n?8- ,N* Aˎ4+8-)6kNL6+@RM39QNMxUi׿]-c8 WKC{Y4 #qW}=S0 PB~r#A8wh{$8e=TcD5ǞIt's_vthŠ>~d[/n$ތD[\)% ,xAb}y"8>K|i|a>癁#\%IC_D^g2д5L aOF-*!`׊uvK< \HC;*cHd pxg|˞e~ϴRWXA]$N5=P*ĸ4}c0&>D0seqRel@~Re|x $#ΡʴNm]dq-'T/끯b<4XR޾@ĺG=V,HE`o-5OD%U]=i˹ <-]tک4kD6pTZjw<9i$xsB!BzN|~WPA$&AMݽ1F0eυ.#\b }]ur>_dk4A [60`NpGmpEi@O߄=IlpLI>VI?4> +aq5)M`c8bJ9E=FȵVg(]JoRp/,mbv['ȶ;8>itd"h/ca79-(A z'=%DBCPyF2)[Ve@b7Mݸ.ͩ>z Q0DX2,$M;PXϦ՜do l ' Ɖ9 TQQy|n:m8+ s:-^~P.pJ&& bΙ/NO+_nR _bF|F#cy5-e&1"!|~`2 R@M#8uN5%LޑfHDC܌e%y0 G6)t"V'y߄+\c`bI0 X dq-UF2&b :!2ߧr9 -0NQ;pm+7[tFӣ~J }Jl{-du"& u$A Q4l! ~85Z'q'CP ėfb6#w;uS MDCx uUe%,,h.G iLij` !w!-M8fErI>>ѥ)`n cp&S#Cx^BJIl!TҐYGcη=N %ϩYuKMr(|&#=[xI,`浡 `stzV!;W>D8C2vV滚("sנka{*jvos$wPH]7jWQφ㴿Di_4^Q ukh!dh j!۷A'g #38 |N~6f|"l?jPs[#=)eV0vKm+^OO,p^euoeq yI(8(s(L[_sN+ρ,}f"L?~1֝lv?cYh;w4Aq}jݬ mw'ᴯڝw6k\]q=T*%^0C%9,Y4Ugv/}JzPUt$%Jnf,i&fkD^72忶}Ϗߊ!zcMB:C.=jO>r׻Nr1 S#Բt-O#V፳"M5d7Ơe;ݚ Mmea/)qc:I[/aNٜ0ݪ)Qٲ *֟$)&eH X6paEWR+ 0{uzOwov:֞k:~nx}M_;(AפT}¶>on.{~?\_?ٗdĽ[?AnvGzɿԞ >][ncɻAhNJ.[~B>݁+Xݺ>Ƕ|]0 ;9׀%te<~Q,ƐjN>#\tDMDLװ~oisl٦c Nx;ˍNQ +eKR u;OIh&۬]N:y /y/BELͦfq&?q׸͎AA-䥚 xY4o\H U{i E"^1WYtDAk$?*BFcIec}imM!*/\ ɏn J9)Җʮ{*Ps})Η&U[y} :I4ÐY;JK^_Ն^RG#xH4>S4?˵jܫCjl,LkJlH ( SpLGt @\\ :㢘 @R}@8R . Vd$sH&OQyyrw*_>0=>Wk俘{/KC}UBƖEBpjR䇽ާ_y=]%=Aj)lIU8r.\ 7y +¿kBzfpS@DCC9 [pg]S@mھ-*o7 lsAXlx#W~k͈>L)šO <=XС$Ik)+?D [A#-Yv;+R!NOe%M/bKjP ^Px;d>ђm"Jw 6[RԫYj,* 1XI5no5,RQ/H6`%V3sE3='XΥ1%4Ѐ9-+bAǁFmW~jR$xRRwψ~{ZgSZ?cqS~"iT. :ԔYvI@WU:ht%>- Y]ebZL@k'j:[rKuk}rql c k!uWN_5z+Zt}^ͼXsahVb1'\OWM}[f4x4VsCCٟ hMCK(9 =. F*VQ!2'&VXVq,4Y[S'Vq1ˑMo;N@}bHuTm y1$ލkbhs.*6QZ'վ^{測)E6O3uUuN[- p;`웑%Eu%D-7USrJSfl?4PǥDꄅyUQQfeN{0O-f*FJ[ͬDbDbh0xWy|'֕m<685L[ՠ$.g4R¬:E,ju+zQК`,Mu'>;L)TXRj-Y&Eh{2yD4o0NN{tzx2!|U1/FwڧA+t0[W?45έIש/Um$_Hx{ vxNv3J2]HBJ5Bd @W6T@Wq;2m/\ӡk _$e6*6LғtNS_W[eLF 26b}3=07cIEsÀlySݥFs98XSnYXG,*W _ "/|oZu@o!(Dq(C~')Wl>˸VrR X9 dKM6eb^|jO$.oV@ P˃F|T4rr%SBR=l k"TGdu_Dx% pG an`kqT [,+k57d/ށ嗬޾: ?]X~i~0޼~)R<{=@kŅY"LwsBc G켭fҍq)Y$iw gx78zJד5$e/UF!EׅwH$Y1~\:& w %d<1ALf0Qd<7rDi*2:',i;Iweotz T ֈ)CnZTKbj5 u~׭_x_6_~@}Q땿w25f=Uѻ6@U:||#UB%N?rZSg_hh:(ŚB*+ɥYt>pZRc2lޛP\9Ș7)-A[*ϾkxI;jv`f@X "~ K,uO;݋{x`1VհHk|EXmܪ[xɽteH@gG Yc2kMCqTˊǤwQe͝:qI:. MuCK p}U-g#GҨ7HY̡p} _YÆgkcA$&ML mtӺoK ]Q+b [^Y`& ]ol&r.Hn7B ldf2l+ֈl0 @m1Z{T(ndEʼn?VQ5#5;5 B+ߤc?0GSFSYFUYf37)! ЌvL n٪ CCi ۟eWϦ-65C(v{[V8-CqF+0Ǔe-/qfXTwN > (Zd4 K5Iy2$kRb(7o߀v`oPQ5R  jlb%'Ƥ&c<=ݹe7^&iOkq[NsgeE "Y;iϟAvmN $9cI~t;PJ􀮷ZZ.Hd͏< iZ2^ఄ;Yvoheں#gqi%cd.*;d%P*T6Nvwxz8-{wE2;5@@ ǩy?bii'3k.y)YbU7^Y3bJWp:{x4~R A ttW۴J+él)ܶI<%Ar3BhLrĊx]|Gį?kd+z>"!}YxXz#(+0l"TqcXgu,8Պ( nX*R݈C*~%Z7B&)G !؜1C 1}@!rJ4Ὓ#8m,Sn 1x%WYX/C^I_dU6wK<DҺx]*VIw9A2 H(qtԺkbV ;7%\nԄ+h&*\}58 4c59 \X LdLN ۜ>LBhl0RW- j:"QiU+Iyyds|2NY'wSThfц RfoZJ|.eUc⊀Oyjuuq[,w(12f:X5GF6S`n8he;HA.Ri^.cTdeSI"M#,hed9 {3 \A9-f`@i;ɖgϝ$iozg+@Jd;4`rK睊r8{`(Έ*l#9 QnG%6GC)ޯZ#t8ϞCyu;iF;Vc;e:425}1NpR9;KgyV|jFw+NqxGMwlɪ*g0T6"Xǚn(V&wkidQɁ-֨ĿN.9̘a&v\Ni<"ʌy֌qѝ$7/N<”~+L?˘LJe*ӕ8+w9JXz/JCI ysGF~X9iįY\5uNٞsY%+IYXNOi)njPo`  A)&1Sd7v]_؁}e)}5KYvq @ ]l*) Up">Yc2;)N(#x~tEĮʲ0Dn/0;ILMDM <@@| +YBѓLeN.gKyȟ֌V.$~*dFC"r2_(ZBlyڂ"V;m9z,#3N7sEmyZexn Trb?.V7G' {cv.3rqxh*N{m?:Vkﲓ[@^VXѓ[j;xcE\SOϮԎ<&Էj9!o%5o_Nef4?fK[g}eOYW dԪ(^BrߟH|5DY{J16ұb΍8a_bkq=K~LJ&QzxkJ':g1*{;iZJK&Qd,|/1407XrPEϡ @k`@W^E`6wć>l~*0(NSaBm4U~Mm4]HZB>Ԃ԰Y6@6f4e6-Mz]E ܈$F"ͭ˅]ȕ^{}~5 3֝a"c$"b@yR 75;)S͎:l%<XhaiLH2ϱj0zI?,=$/dKO?`umX`Q| M MHp K]& \MF:N.o+f,E)7 !uefI-,gU7}NgØw n}v=]*m~АF!^vBrLO'6=0 U\mB"R.HAK*&)/mD 䤰jꦨG;92=qy(jdh*S3pKv1M#T M^@M|!yeFFTyI4AY|jou^N,":_ә$>Λ {?ѪNagG1&cZi⽑RT7nbJQ 6$8QөEo܇ת<׹+ٰIZ, WQ|ŌARc>^]BKi>"jj \ )g1A^R DV邵y`@^(4eGv,A`>fWGVL1: M%lX,3Jۙ[& >`(/+7  )ў㐎@~BkG)#k}]B QXBԚj)UL=?ޑFU`ƴ 'PP V \9R7^kuP`&Rn~)^ߢ5 9#ȈaC;9$mЌ9@k`A01{&tztu3٪ xVTeC7! FGRc0G]T|!YZ`T [8X۪}뱯ªɔ2ۏVUA)-;.ן&W]FO!ۂ-f "+hTGqT TZkT;IZa/Tb)A` ל0"MtNԿAFdMš_ }Iog򷭢E# ӈ;oA+;3|[ohAK2۵OWz%ii[$IUfvryMHX, NWbƮƌlk LݙuU X4qo ֤dMRL83,qG_47wEnk+i23*XU*kRQPQp8e )T-K hX"?`5~(Eh$߄_uqtVBEXK-iul]K!B0h}c~qQOc6A D@,_cJ@c7(&$pY b.$A R:gGR9?gp"zNVK:2Joy=tO,{`jyT;g6-$C$F_ )3K;bR_B\Jqp.W0T 2#7&ܞ--Ĺ=bӄ;̈́Ti9vR:^lv'R8LT>7 ӄ7D=<g _4.;b K`(iRv+2+ldF! {<~.NyD` 5_S95_#L[%k'j&\6GH4OO bK b 1ys 8~j(30м=P퉱87Pslp&{{?CWS5[{[R3:[6gE<;޽B)6äMl Xmۨ`uv`A%_ـX׋$Ч3 !-VNbvV2C ggqHn)Xʫ_] \YL @7vs7~jyؚ$G_՛aEc7smǭm"4^K 1dZ_rF֒r%\CY=04q[.\*RV"K4$@At^!\v:2QFvL/)7EmfbyQl96Z@egb n2$˒v9ߍRMA,ceIMz-WDaJD-dϢ {SӋY}e)Qc8HjHB m^/}L5c"' X^2|,GX8(c&>*x=м"C f*_#TQQ Pl5m,kzݑ]44͇[,b 0ɈpƐG$)BΥBav'Tװ;ૻ٨Cru.uZsTbQѲEKZص٠ ;B ~pU#ý Jl I8"MEq!zd~& '06d}5= (\H}û],[Hy .aEd߻χO^Qߗ{hG¯gaľ[aan^Fr$s&LF\Ӫ lRjUs\kc5_SuUd܏q,!),%ފ|\z Na:^K6F\`SҰ&ǍCoiT0aa]{.*gYW u6r+RsVqӓРD [9;/(#-pPvn  ê6l̸9D@_JC;â1U|!]*knF `r[.l>F<'xhoѹ.EtEϯS''Oϼ.%[v_F~=vu-Wc34Kro&їR~8pЈ3&,DjmXzg@ܼ۲Ю(bFvVXeҨg^ Â%p`găZaDh-f^yth-Q'jkϓ[zF-4ZTIb{Lr })́%*τ39%ЖnrkFa>6E>AiOѐw]G%==6ؒ=`hhۿm%({@ 4'kw ^yMz)m5֔k.]}p$\ 6Nx-W ?\{5<7.[/+3|`2Dsth<8Hm%$\yHVT( $0Z2RmVJz@wVh!}|T1S{8`2h!* 0"W\oAATZ@l(7¨23=ކiD5WF{\hl kʹo R"Dlj1qDFA$"$BJ|pP\ Kgi"D)2X>D!*"[~PD@'IK(PA )RnR2bzZ9D$׬H;;Fp$ݑ($d?;Wk;ut=jH-3`V.F?pZCc,Dh@jy@yWtjuA jX9|4Q7󳌰k3]l\fB4M &^Q/`tU"1p3B-ü#^{J'St>- fm@j\-Xkk^QBq=@ "׳J /!4?=ShjwѱEHʿi,?CPBCMvR6W`QBf }.7-)*2\mNO?L[Z<B!\tz@wP} #M"VMZ99-ξU[U+tj!R3Âz8Jr ch ̄DP lp'aρA$Rgac{Ruk~yw)EJo+EF4<(a LU},18ޗoi=f7݉HSCRh.Gpख़cIYpw\5v"1ﭮj#+{|>C\?\.^k1>"1" (94Xf >fҗm.d9rjme  CT9c-Dc%8e3dH:͊-@ sэ6B ,6C4Yz:Sc6$x8,Li@_$Ca`&.UC؈pX:RFɇ _DxwxD@8yAtDv{I3TvV[ I#L )|Iq$d*2md\Ci\: ujDB{ sHvش!PRv/"bҪ\tjó?#Wb!7$ZEl<BxbR{H; w!V3k7΅9AuG5:00Xؠ7Zi˲cF.V܃RaA;6ٟg%/- -y}]RqzS='bF_XY:RHwĻ8_V ݙcAnV[Չ=״NQC`gc&('Cxеĸ)Dh,#QyoBk1 ٢ˋ&r=,IvVLlҥN~lP5ZFHRy`ۍ">X]F|;\!'/O=)ܡR+r]`ҙsx[s[0,xmJ=Mj.ڞ2SYCGU^G۟/LӒ2' =j Ho^7Nh(>(&6QZWԉ%*lU 4b8mU~K( {iw3!C[$ͨ!2P0ޝ?탙(C0uYY҈SA*|W\$Jͽqi7sK }aH$6ܶ H8aCqw[ϧ-1q;@lE˹<],_f E}\?oQ?wCeEm\|>^z{pvp<=}Nr&ߗOqFOR~ 2|z!ˍpwZپlV8mw.HX|soŜ6)72<E!3Nd }GȒEXIzk姆r'nQܶD\h92`@)Gesi{{tgieub7\Uh%M=L @yUܕ+aL8ͮU\Rk>Nrɿ~Ȓ% DE`dIտ$k\tCu찊وԶu8qp{Rk/ ;Y)t|k0lKy ?)ݪ3D$Xc(Q/`gdn}l<.l8VMEI0:x֧ƻu\28 9 &3tA7cOLv4@t  liϐF++뫓.Ls AĜ3X;C:ywaKd'$ެodcYP_W55>嶀YךQ#BzY:&) ŕuqXBCrditgzM}c'pjIb`fr&DLwu[܇jcV,Zrb3pGrɂf˝ jIpJ'ӤĩtPvɱmkzQ=mk٨%$p2n C VICm(%tN/h j"ÀA3M%m5M[nc[yD̳z:q=\|S^~RwX߽P8y{h$/r;:a|/?OnI؏~de| 3ڗ#Q$H^JG̈́(w8_X%ϵoQY O:@\77W:0B<8?Yb:;U%{8h8g# 嵶}M}RD ^lah˵E~+Ԇ,r=sQX>JSVN *:BpĶ/b+K2Je!li$ Oh-B1MYٷE;L6"Ɔ9Ojn7Aeah1jb3 BI(Kt>@"BtE47nF#|Ck8 HKS/r+C8(-8OJ~#qPv7Fʇ1Cp%IbÚF !'Jȟ*0^UKC(8Qh!&Ğ)2[ w#Z™ /-ԙ= p[5\TR0 6ZE*zvɆ CC[ˢ`,J+C MAwrjLe@*=#NYw8XARF*d]NH(#;z&& C&^ˉI)Ec;ptŋ#EFZ!Du)+L+IjI,9D?s, E9mfsBؑA iTpD#+3ApZA:O\o[\+ӅlȤJZ?XZ,hhC4hD# @Fͫw4#.@Ҳp .E娖jv60U8!c 6p-JIvGIeTG _Y9^c1V} dE8tQSD˟ào;I1an~Ѥ 0umPσTN|07AE)74K@2JKˮEjndPgLR0H4fwpPK;KtDרiA~NY I(Zv6,h騟((zʫsT6:upl0 Yy4rَlm wK5=DEybNSN؟>gncJ'$ֱ-f嵉ߔ$*G@>sU %1s/خ Yx/d vy 'A; AluOm:?CgrD!cR˓QtcVT5k잣N ۋndĬQw\8Cr@i'Um|V"FE.]}ZU٠̬:3~=CyB$PWem /gRO HS^ލ92%'k瑮qfEm[n޷>J$<{֝:.EcN_;< 9Er]0pd/m}ĄgYUh(U#. EtE}a!`nԷtoFWx] ^ #bO%s2_(Z{/-2K d}C7蟓Y3p`ݨKảv< i kTτ㵇 ;n scu׳zvFLZ!-iG ?Hg}% oW _ܡtr6-sh n ANdϬeAq|!fͪ}rRw֖^?N±~u Y&*یH/QFR~oa'ګ16'՟z`7!xqzhCPTVbl/qN`z>ɩokB^:g(1C& :g5DǙv9Cf5ylh``g/2`vBBmo_m:a0X;8I28]Y(a-YA[9QX+fxwŎ5qVYvNm9WYFPށY; AOܝězkBafXJ53p*y`i4q4kiB*lޜ(-:,_\BxAҠf  ZCf41(U xM Hm%vA,(m131hQ1BE- ȐӲrJQ_n,$pY wQ,nl+m2A';iz+X)>KE+Lc;Vto}D J9YǢcap̩\.aiy v"`fefJ= eH3Fqk~^گ$2l~.:w^m8N?hՁnHm%1ÍG,/^V ud<)pKS%Τd8MzP풆V2)gB Wn^[;^֝ 7B/M[};Sϐϛ1@nwn֔ꆩ$M9X6_|N2^P?M^5how:yϷ2=jP<A=՗("bx\҃?J! nJM( Mnl>1AV¾~EhR794tK4$q-[¶fǬJ(~R=@'wQtaHF` oLG0|Wk%.QA4N +ruCyS Tp6d"Q3'yu>%MŬpiW"O$w./^ѭLa2Í(Z,;|ŏQ$9,*R,PDhkb)Q۲dt|vV)B1杣c+_j +AL@X@*;vPwH→ÖSU9gLPoZz &}n=i !5S q U8M,3r_5y40i iK3fJl;|JASSgEzR. V0tk[9I)ƿK,."516mා[Ҍ]ko7-W_4wLQ팈6$S{Z2O<>) q%ͭj6KQ=ut%Ǣԁ#9Gj2o|j>;/xg%fнb D^@Nl W zAXB#27EF185Nav!9F'fΗaT+0T#h[oU `{[ZFk^:3&Ty$c*:QDuI=oZ\SKJ\zkLҚCvelGk$,P s<3ߟ >EGv}saxhT$痥Җ)վF[ͩ;qF v]^c _%MCDSZtė=PqwM Å4q&#o& |(x[HJʕ]ŕFF5!c?k}I4{%fm%;Wܺ?iQwW?pR񀖡=uѓ9l#όe0V+kTy!%/C: $KwRk6.@n7$.8̀dݥ>/.(R/W ji`qêě5*f} ѧ>z<ǂO(l}.T p|mɐφ%V Nװ+z雋~yu I7)JL9Qa)L]]UIf5 g8}ϳ+LIfKOn1ygl_5?4|ݥMp+cAV/~]v^פa1,ܚ۩;aR<*H!+ww>< Z3M&V,pٺ\ۤ&M̍0wUݷ#p4D\5YjkSLr _􇓯/ ?I8קP)dɷVL'*l%!ZzA{Xe+>j!uoۏ,t(T`~Ǒfp}z(ԑ +s  w d* I K1IbNJ%6ʿr]M$iZ'.p1 Yu7}+A^9b AtKy!D,vR)Nf\r3^%=^7 b!3{@A   v*.荣&oI@GH䞌 %!Aَ(0Z-;d mpS_*CI FSWƠTzB-FTndGܠ27MnflMUP ^V}bYiY\J][X_\iTIh>|]gٚ臦i+NQG6l˱WeT՗T PF lFC>?}EHg =u>5-DLNON`jiu>0L^͍d.2=rf Q=2?K+Wu\oS}@Ũ1?n|L/,ct)h<+Z*:>Np:F|U fŷhoʧ|~|VR5ϫo1xyyzv3ZPб0*BCE~SE5nِ3쾓&(jW$,e;TOޠYM:_#0in?qltۢVJ1Z>_Zp#o~djꂌZ_P%V奖Ѽ;`߈ewO~ kϖzZuӥV5bp}G Pg\nG'':G";69~]7USw׎~%j1cH׮gЃjĪ.2=ieu@vpV dU?:1Rվbպ=-1:'t5vSoHZnoFz>[(m##9¸ѣģVIq]י[heOci>gFh^x'vͧinp3=Vj¦P9O*%DVz'H]M TAZ l2!1(L2v%r8*"m@m2RN$xL-~豞)S#/HT}JZVxy.M&y7z=cY+QOikJXev($ & x|q[NVs֣9 2ﱛl,0 ]6t qXQRjRсz- P>)an TwJxԒۼRlITw$L3! t`3"fkifER(Ŵ$aB[[M]*R1 +TΥ.vk1WQ.2 > 쉋oʁ< ü~,bv} q6)T)S<1-צ|/05ss)/Uibg-?&Y" 02@ ṗq,FβVӺӶNxXk.RoxJ by_yy@ob+LS$$o`>>Ca#Ca:\M k1fWJaږC\9@cq"+j4`uܮo;nI[Akm0 hND2)krK:7b v7D.OA Or_+cE#nK$ƸՌeP+1O(ƋE5Ll~pKs\"ϋ$ Fe:w5}}o kVA6n:/0vv51ؽzkqt+1kBOxlb-/J.γl3H&\d3IP-ѕT'8H-,n}C&J=ws' #Lmg39\\%Ҹ4uE7/߉1RL. QC,^wq^=J˞ Nu$a$owXcQkmw9Zۙ8U I5Ԓ'*(TQA6NeUZ+Z:E<) 857c\ Zoyq=iBo@ȯ4u(<=| N˩*ꤠ G5UV)FP9eH4%Yـ"9̤"bj+,)F#fu엣l4x`h_P R^/y)uQgDNRx7Tp;υcJ+5s#+m8Y+ĭLA k-+˒f4tu X%9M;xxn(bIP}\CnKClNM2,Fr,̲b?;va*,](96H:x~G%ǠpQ!i'QAz&GwžRuJ&njٸw[}pǻu9f/g(:~Y0vsJ aMC)lB ϭ5FҳExS'w~)&0T' v,^գtM~pW>-$jЬ;Q nb,s&ݚ KVٲK_%D < g}mvw髑9?;IJwG+*;?w;}RڢvtmπYGYI9qmʢu",k?Ul~܌̜Cpxj([&=)&(4a·앯a 7KlTea[/tXp_-ls܀w$u^ߤ!)c#`Pe#n!d8 oa<܅Ȼ ;~/B87t1zSIrs8`WT>ϵeOVL\#'7lBeش]w;j--zm@ .v,QbuzRIYTyU`]FPL@,đJ0 HcO! FLL=D Qh& x31õ6` U3" @#AX"Jd8>]RdMϪ&?7bfouڳ@ڽɹ,dmb$\nZvcpȫc ?? +Ql;!{՜t7v f jG /쭓"_쨼??w/P^'TѺQ^ / |QX1Yր5Me$9ljZqREP=mLR}\d mjkOW,rH~fUbX1m7Pv =P0 ڌmL ?)}rdCYc쟂t[l۶m۶m˶m۶m۶nw8{+%##2Ɯ3Q)DgQT&n(uP`&\ix pϜt0R2PgEg^QԈ/YSQ $ z"|-5.9ףH1Pi »ՉՉk<_`ZN~BgW/846ƅtq,_ M aP1-LDZT~E8淤? Z sC̓Jdm=\ Qet[ ȹ=hK\ I1%CstUF#1I#5. (\M;#>ܕ|UٜPUEg.'-ʇSQ2visr =VmJԶ:FK(s92i2i 58Va;Q$_mn&f?Msr8|T;_bG'(5n:1R,p.~L4=.}_2)f)D]Zdz(%jA "3;H l7`I86lUKכ%DzT]$UQ걀 ujzLjh 끣}vbdA~+z2+x}#:"{? e߮tpl&E. 6bܬG#ST= 䢈oX;4pjWy5/{~$= Oivi2TmQoF2N$~:ȑ #(/Jw3F (uCH$ax]23V̳)9m| au *jQd_ ZiP_je?(ydX0K.}kkYP47l䟹8B׹%@"=M]4d`a ֨`P~g/M+[[}$+lq7HN/OkM+W@D3#!UY5rQ|b C/9V2ʜZ< P#RL³ &28 gYQ=Kr?9H !@7DzfZ{vo \N1a2{OcRRҡq.d֕T~zX(Z+ =J'0lIǕ;$8u.r Xx㦊%J7|FoM2{1<;!  1fІ۴qp-} "@~H!9|q $ ׷ 1V~ˆ-&uPWB )c\iE|AajY| ;&2]\˥VJ}41Rd/q5`N-y"V=jOk( 43 8H3Svp*JY:4WRK k/Y  i/$$$ tIo` z+ezz1]8H0W`ӣ܎%?X`gF`dv$46*L⻁g_h*RP܈)@GYOaD7(Gg ?ʂ+ZyL⺐^>d.%.eN+4dop`>yvPi -UJc,P{ʱ qq3P>蔇ϸ.+&\}kc{|7B ۯ9PgVkޒ?s0LtW_LztawaN#vꈄ[f^ -Muڸ^nkI*sMpS.91 sZFB$@NԮC4<r>m(PcVEX5'/mӡP*ZPp.ԏZ J?hsX7Id^s%J~ԷfMHשC1U7٠ ~G u'965jVf6C=U=9 &gՂ1_̥A>\FU%0MsO:4LS0`iX'/U]x!R+*-8Q$BJv|Zh{${Qvᚶū zj _5bLS-3=D7l~PH=J8W\mW(m~yfi$ 9$5@[˱fXʣnFPd3@YcKۇgүX.P^ mtzcx;&{!HXT4i#k"0ktW鳄$83)e! `1wP>b.KbIԵ.DZ@˃x!Y) gt>%ө&Eq{d 1 A-Waa%O}V'0 Ca$ҭSSaGSYTMjDuc?le{F~73X5sߣm>M>|3wd@$`2}E 1ڧyrUQ9[i[d|ϑ. ,vEXgv 3P(Ubf2s y,AVC8] @#2b= :qR%9W,W\e]xV]HNwttp!qb 6},|-vH>GmN.gg`D〼on g.ϖJ(ji}{_9L/sۉd_+jIXUE=XWfb_5'{N\WFnYL}@L)Ѳ}\ j=Mw jKtײg<% Wh7P2_|_^x>\{Bk/c/dhnDG_j'?24{'P(t%b!0G l@1^i*Vd?AGorNbA^~p@l9#Wy^Sf+MXI!t0N c!a%77Μu3`пXFmOXR6FiyIPrCIjY|!J3[>)i@4H@ [ L"PGcǟ} L͸,x"73z#$uCLJ4<+Sso*дL]U'zD;Z)s S=}z[D۩ɹmmAu8=vr{yHS8?K+;zzI{x3[hp!aISSiZck޵ѳqtȵl emjXgk-Djq2cokTԐ::zZAA|mt0Ĺrv>]D/l1KoɪosʳuW[`XM>-ņxl6GL.m#*Ng<*1~*jkjCb6CIRҥdս+|-g, 4%Ob-vѱKf9<-v@G|yC^Jc ף"R@3p:a aaHt69pf8-O)h?Ƅ#4>bƏFej35SL ޺wf )a:HEheޯQ8u[MTAxJz]BAW)aMg :-XM"}ȥ \2(%)j/f]}U/WpǪP~Jg# P(׋uDT k3Z.WE̳%,]LK%,@]CNnm:Ve׿7Jty~B#\^l`҇*` ьPǦᔬ0aSh } Fϱŋ&z#j4(?ז7>F NP[OR*z{S#ԴhKckoG|`1v5SU]F.xUɮl8+1bWaO~ğSa(&M%Y'σxH&alԂz}ݹ z6I᮲^_fFj+fμJڡlD}>,[tr9%ꂧg-F#!͓;.=M$ʒ0@TME7h۝ tK6YO y}!E{%zк[7zHi"TЩf031YW7O ^P"D> ǠK(0P?wDžOв㓓Pi-F!;HR1sHt9KA"ț%iϩD;NSWoƧ8b KS-I T43p6mFP>% 1_y#.@Fd 4Ԯ>%GY3)G_ջpziH_( O݂c#!6j(5M/U:G {ڞHpN4}sʮb 5d1;tflC][ \7!/KJla0c ^X5 ` i@daO[ %[X`Oa 1-sxX⎔rـFt uF Yһ &!/D:·-xQ@MxY cDp~% /m8Tm3!:|uQ0|"txE&!U QZ x&_Z Dpm+Ħ~f~7tRTv޼pjO,m8")oV Еu ^c1 ^>۽j!M0; 57ɚxdÌ7L㜮ANL>3EDȏZI=BfR#٦ⴷ7 MJ{?>S.V^ l\rIO҄5Gb 7 'Ně+.ȸy+nĐ79]e^]*0x#g+ |ZGrpGH9eYâeǕ8+;h) /ۊQإ]%ai$鄫K6NgoR_&/-|T=ĸ  dW.Ol5w&$3 9WWyc]`AٮYUiwADvE~ eԨsλJe%%t\KuG,#`Ņ|{@-e,K߹2÷[0,,q90-,]ٝ~G&6ԎՀ-yGMk+[~Rc8qÜۊ3WCG݃0O1KDF&%핔ʁO\ G^{0ol=My9DyIr,ˇD;,! SֻIav`Cs1V4(j*>slrn}- <έ2}tmon˫xioxOZǰ0v*'ƐLqOWfXG$<;:=UV Nbu<[bh+K&aᄈaHǻF[P,uwn=!0݈FuD"z+(:5ȸ0r#7ݭ`ﮈvkE%LQbCJ WLT- $nyQҨ%2*]4XHKXzix%$v:S#_.cxU[o[b&sKgoù7y2=.~ 7|+!z\UŪ>K;{G@";@^8ZgmӜnΚu'Gp hiT5ڠy }QRT'*1?~ڀ-JLI70$aQ!aș63|3"HhL<~^UÕCwIl~I,z>aNZ,B؜9y0GC(kp$@guO؝MucߺZ [^'&ٿV 2SwG yu]ֻ"w˽Ȓ[j<,MKWzg@1NJ@'hHW؃s8Q¹0DDFO–56TM87]YE͐:V9~`n!$B8F ϒ45趵–\5HNui,n%]41OWUVb&$b?T\L}DF,[9JWGJ)pGX1웉fvc3DSL\ I9(foLvR) lvnP[dl-·׆a@RL"qSv>{}[hpފۛZ `BGBP+Y㶼=T_ $Y>Ldrԯr43#lpH rZTO$Nd2s`Fr%t-{ɸ7B-5-T7F[H/IAϮ vUo"P 1N%lWª}':9WA,iF$fC2ãRcTOD1aץTq?]o"tb9N+=`xz,~}+_#S$}x&q5B_'v߂jjNA{FM#׊9앋l"' 5 M)S}:D̀Z`@gujn$eeDזK48n&t_̓,!z8ؠ5 "֝?^&d{T*]RY}Lm'$RX.m)'SXi?ÉOŘi[Ps'Dc4ymzpt{;՝v~j?91j韟2dVndK C.ޔ`?':v|cjhQqU:f7Őŵ jqF1f= j>T>"a۽6V$uNBG9B&T )gӔuK^r$6; [=FdmU|ǩ3N>HrwcD}{K5B+t'}';ONk~ =f=Ύ~ONNmB3f. N*Rr5b'|B\(+1 dQ1v-"z8Cz՜ j0%q9\ߞ//v{R4i0SL/4-2kw 'wai3 Q&C!)鬬p7ղsZ/|$TG6UY)7opV,:Eɓ('_YOѢ\N-uZz=n:%jz_6poBCF Z}TLV tƞ$jwp ǭNft>(p[ٿHWkz,!{6#Y . o([O#Вy48ɖѳ-R `؃z)[jhA;ˢ:$ ;kuI1%{Ai`J!9uAi&\ ʼnu!8~e3ntKlA[ d|\dOm_4ȒL5Xv'/xv+h  3d0zj*X" 3◃D۩>7yP2 (-C?0U%nf; (/vWw:uY*05Qj 6JhVpjk<ԢdW"j"Ǥo%>D;ۗrՑJK.\l< ԣ=XYzpkO-؈ٲ ON {G 7O9ꕦ ҮCDAT9%zg\ 4]YT~[W|,7ra6chxb}i,9׿*| rC~Acm㈺h׭nORpL%1'^|D1H?F57hLD%r6SP 9v<&.C;̇%Gx XSL#p`Pfb$ kq-X%ݯ |yZA)Nו4jyN Sգ` 't7 6K kl4cb/]Ni|#dƞ!aAzsEHaZV$B|؜ateʗ 6PsA壇$SٓDd`Po3 m2_qM6W=PMP|nWP  s*ÕQeQѣl'Xąa&%LGKO-X~662`W22 :NQ{J3B>bԍ:/ @@Bmq% w9@ʻ#fa^rA4&wB39e\P!"ge  97DjRjϩmwL͑Mt'<3bk\qrQΔYZ)Hh6a Kh ݓkv>{=@_`e\]$T9PlIƘ[t%4W)D *Wαˉ+MMiZ; .9mc0W#y+ur[yGwUu\s<_0}.bյz߶-/eg9oWs{g*K0 f/<㎕2/S1zm9-j}rtßY5*z}({XfsBXše-=;k&g)N?sž1!9@We>YS~?l[I:njL#QrS2X{7!D}{д*.B6̱- JRh&W8Lyu4ck }(-h. }T O\,C tD5ld!\PWW{= $}A4p4`Y5l=Х-['!3cod[K*/Y+ɶxy3*Ot%k3zgb*s ˊv6քkxI>J)^y q=l.r$tԆ z٫^ZeOL;s@!aQnxa+%0cjSWe(0I [ z2ӽ.+h: ^ϼI׸DReSrI!gpښUe/uQVi)%^~Z 7Bے, aY+q6 "Ąc@@(yQT'4GOwl1,2Fbj n'JIHZξR1.bBz?]( K[/Q㋷4;#̞AXٲD<}lX27jFXlh/ B=,m|`B @.<}(yِepb8pԄl-N >4$nYDm 8*/3$oVqbzYT"͹7/HUCP߰18 }rsX̉/]npt)FQmEQEW|9Л[HI#3(Ѐ=_=ڷIh  tle%5 *cC4Y=!!hRfTBqp ]i141qsW"eEtBNhCMx#ob eOOeލ=^45O"e\x@KNxޯ"^ vg { AE`72nDujг3t!&S1 ι}*͋0`RIS$swlA~b0lda( e> I41DoýX z_)z /=iA =5'lW%A;*uƝΫCRo`;XPwlYQRY)@0~ۡ @+_l Y̥a++HNWYn.:؞@;KP{d!Qþ_VpMr6'^Oo=;r_,}5AV޵aH`5ZZf ~اluKEvztp8ui {kOZd|2V9mfx`|كה Tǔ>0ع7&|oA񠷼`^:MrV ] $}|-Os]w01@K2dC&*ŢoWa[fMUE02w%Q̜75xĕv26E(Qy-6iY+)k 췀317XYI{m4z|Ơ5R cŢ]xǩ^nd.0095wXE4ť,2VWjWe%Z_Sd`4~sT>EPV]w>O"ī44 p8ρ 2jO䭵1F d6Z))pBH]]'S؊\~,!GmJZ_14> ߠ1:G cʆj{|[:5{pYJ' X_~?fos vvیp xDlTcԽ](JWGghQwv vt:>nzZY}H =ݸ\xK + L91 n˳Z eF2gg,U@tN4㝺M!gW훽g4F8Ḭ:Pȳ}aE E,OX7F梖YF8pCzVUM{dT歀ǯU=%1g? ?j5Au9;=tĺҭoCebcQx=HVP_[z4HGtW]nsOXDT\^y^m] &Az纞:$z ʜN!p^ 2Xk{vG6:X4Hصxtb6fB6 >ܥmFe/J{74e zzJ _:zm69 .t UrW9jnc4uZhЇ`yiFtZugZck*U_q\qTsNs;nc(<[+5$"}}H?.HJt{[k;BqT(oYȮcr82Rxʝ`@⼉eÑ:QA/閴噋}]c3h =rSb@٢1s& tfz=6ηb;4z%J˻yP[x/z$R׋U>Ml'yփ2$d'Y+bWYZRgbo˞qFg5v@rj!{1O Nwh Ss^ֳ)x.8իL|ty'e}! -i>fx:ٱԨ'`mZ7Oѽis,=#^ZimAV3z7p?|RuSNc!ou$*‘l6B_g0*+t_W2D2ЉN+Mg8H!Pf[Jf,Ai/eQB: 5WY^^s1jM}yLA `釹,rEDZ LX\1X)yKh$SvVoA.Fuwd.=#i=B'}~h a 7xE45~3@t("M8MK$u:X:U,-U3!Ba^e>@h0lb>/,te\<.5H2292s|5Whʕy;wDK/esH~&(Ά])-KYzҮobcْZn$nfַmr{9Z)친ډtUV/|"V~״A"~r32z{f.=H$haoJ׭/M3㣑* "l:-~oNc odᖠ[~b- J.{|{0kyLރA]mC.|b*8/uJxsEO7R愾* mwÏ"a Wbϱa0UǮ ZiGs]r7P]h+:I.GҳpIv U04㤈mಘEVWԯ)EN"92 hʟ`}?2ᙱYLkZ`_!U0扵Z~act]:ì b{giS>"$F1:h5/QKм )SQ@8u؞-HKb]abt KsoY+Nu\_y1|$o[=j?+GʹOF⦓x,: !T>.!:mbTpQxt! KA}b:c@[yτuep^^0P@rԫOsL ^@JL0)pu{{Sx 0/)(!0OIS%`Gس I  P&u15Ӻvz-.F\cϝ͜^Oz˭9q’l5x7)@L%/?@` ;ع,! c& qi (۹rF? Ijaja Wmh\61.T_MYnBVf&R)7pM4,& L..OfJ4 ;3Ͼ!Q7{|O]Q#t AX A71Y%O^ c5 '#~[[2_H뒦 $`4g O,{zwBcC-kn'=gneG }V ND #&ml!8[=OBszV#O-fo뷧w-gg żg y2y6zk=xS-dtx1sgg?4 8Q𸘇jUb\/^߽C"ʲȄxP :#ll \K{ cE^C~QÏQ}~8Կ2:}0('muLuTr-Hy3$^ѐU)NS&`͓`?}Xm|0*y">;ZDNNXkg PV[LS:lAL T$ai h(jm0ڧC8F(yN\-9B$.zg覣ɳ$,^2mdD9 Š&kcNHyXYE/ap- t*:`-O^ HuB4~kJxUՉϯ9ȏEJ-OQt[:L9ý0V $3޲211tHbrpKa8t bCֽHō ZvہygLmGpGr[ڱKG M OIYVyͷLï.YAM|j2E0=7I *Eb,kUO5Yȕh{`6zYRQ3 )D,@)ިTw`#-ۥQ،BU(iл^v %-e{Vm\3{¾XYYS#7-OSH-v` [pZ,?6 \4;,n+ [%kwFGJOUZB.?Иl) 񘳟Ã?YN; ĝ$ىbeԪQU1DkϦ| &q5طJ\ԜN4H pGE_2ca*0(+Y+8&r>S?!H@59leVr|?k.,=ݦ67i~ˑĶ_U% Kub1݁ ;ngnd;Upq*} ;2|X"<#d!c.f"-)L7Sxt.u/ގEN*a.NM_ѽs·]4]S \E 3h(#YT>vJҶ J]*jlcS/~u*iœN5Y/MHaUnv1ҩ`k&CGVU 3GO^=? l~я @R#&\2C'Bl9ֺQJuTb`?YZWX ^-;~BW Z*pz~bZZ[4UFAJ6D|t w5P.G CZ/z+uba%&Ф4G:QT; 6fQ«ޠe1VԨ)"*ZjP[YW%e~%sJMyQi2ImMR h5GaKHPO=LH>`tfUI*+nPòeoʎݍiv3XM>cy"9])~p'E[ -2)n7)@[ԃ.G/y@l'+'1rEn"/ݶb-eq%է,RY+Qe_=\Js;ٰ﹑vq8E?5g~r~E̯K磨7No;㗚Wwv~q5(CZ@_6fHT7ZB} !M/Rypj%*p.dQ |UD LNc?" 5!<5Hn^֯4Y*P)ۊՆO&sX\b_TB[Ls^ţ ^ IS@lBFT=1WQK.֦a捕n2ɣqzjOVG !=q[M|B, {-00^Wa)0eg,7 ?$C%&޹DT+`6lroÿބJCM`½s9]2٨yCM?|+a#XYj O:kxXV%<=z3]s$mv$jF6L/dx`,XK#1u&)9)Y`s:3H9&qX.Ѯ=Fmr~KR-hO"Z>!BPuGf1s@캔]X="=MR-[_(.A3>_s, bMpzFn&Evw<4.yR< %sqoyKLU=)6;R &c6H?((+*6``3@"BBD7۫m݂̫jͳ% 7Xkϡ3=\ӭ;x],]vdkU6- Uˇwͧ0>N0>=_Ӥәwmo~ ~KHRǚ|ӧ6/gRO/%Ͷh|ʖt^5]*1H*?U Sэ [%{<8{ҟ(W+ס4Ϳj+{ uЦćUʏtyZUCC'g\Pj{V5 )ijR>Z{su"ASX5ihT"4Q^2dKI].8#f5pXتX'j[ ae#喍ו]3cWSv'G5B6,t+Kk,ya֝Ȇk cD֏3>S~vBVvjLfe98;P S;mcs2S G*}<@> :L8Q`tt$G`60~a2IP%.cH.*n憸T.D# yPJ j"!ȷ%R:b`؀`m-XB bRY4C3VPN&+)C~+#;%Վ丁7-utI.P2Q_su(1&UW*Jy_0ưy WKҟʕIS4% DI-J ރv F9j#7;DhC:"GV@ <:VGs,fe_C^Bqj'4$/r ([dDoXe-3Zl}'ko)bX ˇ .XYI~?D}ODc:U +~g' &,kcjR(u mN츼q `U.̗awO g !h-3s7u2(^I[La0%Kg"19OLgcvEϾ,kT3CSQr+u(SBP`ONe"KYulݟl5(dfAE'Hb)=8ETA;KNY>+P};6 nǮkL}CJC7T)'%>&N5}&`/T&&3cSv_E4`Dz8.i=Գ^f&mٞAye%lgs褲^&bَu&\-Y+g)HYF5X ÔROo1(ս6@XOA5W‚*^/V[7+BtQ)0) !5;(' ґ>Yn3j/B^@[!I7lPNJs${c7&)cj=i GB՟M0#3t܀@w&=w{~*6DqÛ4sG67j.AO#,[(PU+ \uJ"V8gb)92LLo=ËFRu֨"ƭ)sA3TOJ|ў[pSN{݆X?̝LV 9||H>, i0"Z /PMrRrCX #xUA 30+ta E7r'Q:i~%JL͜|28, UU%l6[>S6 (#t/r$ &YM>)V]v \%r)- 4*yl4_4Du]Sr\ ;/We|q5S|ᘕN[!_J'HM/2r@!x0w}T_Ĥ3U@̓hgpY}D]R;7|wنuOķƓK ,J-ڑB{5JFHF&'ygNURc+<%N[III* %t(Mc͖u~4Vڊ[t`4ݮ^L`~HF _IxӋQWRY6wɘG6>KgxaT,^%f,:tl6MR+l >%xW%~)tE.J\X ˻o`T .wqgU(s֛#䑙C#,VMXYL!`(tmEIfC8\z7@c sU&OrN]OާC4|kL/"2/^l8Asf{jܞ?ܰq{ |sKQ lO7y`l)V) )/!?. S!W*ӌJ{۶JkTQH4$ToK46|q0 }[ rfY Q?|Ov3Vl*"ҏBdy+fG5vn$lG'0E#Y?CdJ^^t$,vPjLay?ߨ \V\FUr@)_%_ B,Wb7,B O`d@~ Og#i8#6Nh@t/K+k٘6rsxXEu1O,Wa,__#X2_B_S*@`e1lPdA;zrjVLGF3wV!T`Hkww>kB6p z9*1]\'s-֧naY{y}5Ծj9;aӷwz=< "skPo7s(xh?׷3"=r=%ܴpPn㐒(u} OTcЂeBFR#J?jIH"2Ï+\.OY8*YZ]\o-dsܐ@֗Iy*GvX61A@P- f5L u6 ^EXwgeɂdR2U(IIE/i#y؍!%tiԆp )ށ1+|y$rNzN7+0z2)(?()T' HPz%شe zM,r]8*\Ή{+ ݽh %3[41~T24-5ȎI: 1@u *DJmeRT\w~VFfH;-bsQnνd ;T`a!.F8==JdӪTDV6MMC/&21)h|6'!a+L 2WEAYAO穖dg+?q_@'$^}p.CƼ?R5j63H(/.պ~ w6{E8&Q=Z7\}:;U~޵UYbx8'"5LjZ Q%`R> 0͑|ELYcͥEC!(\_u 0r-$Wc}:5Y{B@c9Գ$>CdR|2v3]fqJKU9zft'O?9[)9D 䋘#RcgfdO+-74IBz? fQr戉[1+_k*Xxj%3sY h@V<~Ǧ.+*E'K$+|[D&&.{~D xpdL}w%~68f6bhsbh_ F!3S7#k FC_<0Bs@h}~<Vq0[ՑHWiDzq*ٍ}I~̷Z;KUman*_:eJJ;+xF@;AO5<1Pz'ti\Ls6hHrD!3kMiWR,tx,7l0{"A=sІ< GeU2[LS<# RUd%Gٷ) +&/As;9:R 'g,RC ~ UC? rYr.'i2gVŊ0MN*YDrÔ+~r WJgu/sߪ'T$q-;"6hο۶Ο'[{5Il=C~}a)-̜=\:LͿ[m`dveo?wo, zce WhjVj?{{4;m^.l8C5}. *2( y?!͟{Տ^i4g@cdipLy7:$ԍAĢeۊ"e;0Ph6U+f*`种C6_@=__,a1LW|x>J/#vƒ$sЉ;@30r?!KGJ3cdk壙WfXvYno]ȁxrܡ̱1hҲ959T3aMbң&Nj)*B (y Vڼ6Ԇb ^{j 6*X$D&=W҉ſh#dbsۀ1GMn$?Pz{`LފoZ۾_r03rJOqg"J"$JMu>Q+5;MpV-̅r )XI;\z+%Va: Hú]ޞn٭M"Q.?M ~ IqFf>;XN`O  e\YO9ا)чԚsɚ+DBkDZ4{^)|zcyccެw{0~]h|C" G4oi~w_^i.ZQ(" h)"'i!;%m)/w ,G#xOt9ym[ 8SVA\ hE8ehV6IJl2jyZ2&,ļly:"MSp _>R~m g6-Z֭'0z-=Rrd ?t}F:!}b'> Oϋ/ϸ#/\@=kPۇˑQռ} y|ȥwd[J.B`)-3x.Qcjͷ'J^9-FC59w$F#aae%:H\?PubtNʷzyɆnBFyf<+aD''8(*=80.`#w'!T]D 2V4s+C яʀe73o@nN ۖjCq ++L4y!o 1ܨ8lx%0 PA P;]JX90 Ԋ KW##z\fXJݺ}^="?M|9L\% .>C{:`]0Q `@sDr *b< _+P Ož%>[yt_& w̋*Fc ^b,nV̒+^+6ӧF}\`wZ` QPt^9]%\5Y9ϣ6+69 iUj ~ᔭ3+| +6 HƏC~WnCZ?rRT}f ̖4Seǃ<䑜: ga `[>eRؖ2i]i0ּrekAzL+E*|!2/,,-xOtQRJ"f-zUD^2$vVVV!}FQcD+udvbKtb<-}"pڭR0|#l`:Rvı&#GWNaq`dLz H -۴[#4Eʲ6|)U?\Nds_L^=o3^^iBXmM gnAMzçDPd|6wV;-5gúYƜJoԷo72eBxI.7h7B 0#a c |7{:Rt!wkW mI i]0s)w݉5aEk2):V=X]–X!+ 문AM uӲП(9<["ʌQJ-[9и(f]ٿP  nN,7㠷mO1oR?P"uh% ENsvzqB:B Oc?G>m1#9t:fJLWClqegIs}ːV1mL,:b`L(틜6vFC ĺAK,9!Q[ukEcjk~ccÃ=1n=AX2~%LNys].E*="J:|@du}F h,V~)H#O|4<߄ܲ>Yq;Vnzk7*ޝ<sP֢iTS2=(v@WIALŤ772V&; Ə%feq}0W1B&7Q1CN*g3oe~4'^L3QHZ=boR#L\M,=i *=ƒ(Em)/<@_6:|F4BACu%g1n:H7Bfw0og9kS )bӎk>Hm5Ͷ=" 0^uM9ziA{vCNMy!y7P G3 v;)-v:Z8:ˈ7&6V27jOdqnʲԨ˹nIi-YP[nCg\ zv%.k":}Wh+8S$%ZRXk Xz{+2S[(LZy]" XɆsI?XNj߽2O(a4g{[ӒQy)_+A0b>X+ -=fz2T)%(_?K Zt"P"L4auT+,.T F.f̈ytLL^akV,%cmpVԓaU5]]]\6}fR9n{8d, bFι'o?qSHb4Т-*xQ9i"{o }opBj3(Q@\"Q-&HǕϥIk(R `PFQ?898VCL4פԅL$Y"N[@N6Yt n9< bA{aVSrdY]EIĬ2L+c_'Xb;@w#z)<+{LGYі˩5r@&*J]'DwVsjb*"Vu,?,487ɋJF+L9c_5sI{ DXIcUƲGF%T JS 1-9q1'ᲗhS WPc62>&*,c~/*{an1[:,xҊ^ObTfRn}uKe_Z|oRyq nϳDqf#,*S<[kǦOרR'eFWYpeoF0gTN931mTfW #ǥ0cOEwJMM*jshDY~B'ĵ jDܬW/(WmӼeG_{Qִ˻m۶mϴm۶m|m۶u޵{>:Nn ,Xըx2,ST, Q l0}u3jRpxӦ\ Ý {ّ5,8yІQGZ Jg-@5 ˻ t zMyO%.ĥy [[BTt3ܦC{(XP~3/.(*ac$8)990%PoLT[%zf4Xf/,s : n7N4},!ouqH;Zt7Z:ݚGPsZC.uL%"9P3_I· :NYEH7BMOh,2e"R,ÙĻR-.xJ=uÑ.9ϊ^ 4S3EKm|˽$3ٛ54^N x-]٣8/+SMR9 1;mR`'TSˮMVHf-{e _m1 %8IL[EcRGqd8ԑ$S1WlK8 l/{f7#CAv# +%2/M:֑9`~T?}޹O Ξj/a-mo35#}[z߿F|Ϻ[x|s65< pۇIڪ 'E9D I:ňvO4 /:a+= X7|ӨT7poX*mCE`-ѹen~n*H-*R?5?/R-鎭,3όe'Lj4mtU@=PHCh8|\S& q)3c Ymș4(2g,;9O+>\B̎`*6ZOv!i v=6'bw^zPZ'&@=9n I-FBTP4O Ee;@mdQ.ZeWGOEM6J0K>+4 OOO59D>hCc.Pi<~)Ę%mTJ\FJW)oUN*07}$;ekmJrF+QuMJ6=u٪Oc5fƑgGHf"fղCjƺ81=^w|'iy zɔBȄT 1(PiP2}5 E&2,$bM"̬C“Z3` IB5G27*d| 4xʍQl# "񰩾$,AIQ3U)МVMk۵"v/1J>9ai)npXfU'O4:bPI0Q1P.5K-ێ~ŢaaY#==;ྵn\ qx1ez] jH=+VIv-Q™$ڡ-ɖJN_`}pm9 OV:ݛ *,у>XA`8ҳ Llu E Z~3m^J@F !QOB[jtt$x^=W|H0΀b݊i2odUgĭT,<$ ڠNLShtoɵ׋AZdtx78:9l(av Rn2[&5Ń I<`׈+%h0tBci:WUq;hYikdS˻2QdW.C4n%F+Uw=Y l=ݢ,toR?~S?y#kl* jG!Jtנola lQ@n$W@]g=& i,}xii(*0PXY5i 4U>(G-Xۑdx`8T yz%XWӓd$|8ls}׎c`w?qmQ AQ!ƀzc2F渫%'%`NP$/]*2>n}npݹFGX $ȏSqo~~ {ms;?]6w׻{uن{D$zďF{s ,sg,J}q?Vޅ'hfWbg3W%,}yܞ,۶3e1 f{Yq=gܪ*P\Zqׄ g'@9M>#Pw~j\(f Y,~D/k-]ax~e̦ >= +(&|(GhXFƄGVgHbc4=+'4\4_U|z!ԩy{+3(Q/ۍo~ Z*PjWV 遲'6YWvb8/Y3+4Fsx _O*+:x.=J7] }9&ZQt[y_^Kȝ'H1\CΐX=R-cOҖD1=`b? \c6>i^V⩅x?,wK?x>Gi%?0=_Y)GjQ䠀ȦԵFInUJ'YgajD&]i0;xdY.?KcD\.68b&W`^e-:Ҝ-sCh ۜ7^KE/Ҙ4ʡj JՄF7%}[[6Z+dǁ؂|֤[ l J3Mf؉fPhpԧa .\M5j)>LotH xHᙥã˙Fҕ>&c0#CD5y!'Lq'/F:dj` Y YŻmd fC-d"'uli[J-fڟ)ݦ(+i)0 ߧ~[K5F;T1_v"GV@B- 1JuO+;4ab {eF۹B;`+[`uإˁT'KJPXSQ=5@>G_; p,]>yʨeҰj6b^_iy|C ]e9A0f9:'3Lԗ H4 I4$*g9q9ӼAuLZO",Bu zB@)(ި-ԕlXebicA+JDiEQ'jl&o:?\|̪3͵"]>&,Q9@P "r]2@)1vlo1agGrhn7%CSSRoAwE6+nP3Тuh|tU\!8}!_ L.Pc PFj{"s D^Qgd DkG S׶k&Y cS澟þ-1vhX9c)C="~l*-3~25z7ߦo%cF*UF=v69fHb{ށ/f,4ȂEkk&y@ 놭4HoDB%ɳr2g#VGSr4+r7 s|[J^._npMh=HajnGTV٤9";)X|ԫ5+Ho4vei'hP <ɦL°i׏~tF5ڱJ >O٘+Q,1:,,7gH NnHa? Ey65PN⑆(T.yO<'?fBGcϔѽoɦ WX5?'=(;7NZR>j^ӔA?8iؕ־ef=_ҐF/ tCQ7.ԑD=Q4⊎M?cB[ `^402~0zvKpQ;Cw$o+ɉ4}4Ys-d)9q.n,eشu|Sb~=h^k@5h8p!Oh:\zra@FD]ңy'5>Ŧ*M"2M.ȺEh'1@;5w'/f6Y`4@G ߹PڲIGa.PKb%fi@&n_^Jtiۼ£"2&)KҼ}Q`/D_/n+7}7۟= 1ж*/l35s=;};oevnm~C7/}z}[~]]}7]۟~7O^Ab?A|[α>'c,@pp zyw&(B.)7a[RċeBvuyЯJl`#cv.z46W K G,ԂV{< a:s,GYh ~ueմ8˒9 WXa9LK œ+ҋE1ͮ^wDvh-@u$\EӷOd'm/dr'8 d=@AZU|+͇?<-be99)Y3 ٳ|oqSuR3OӅ,3N֦1ۍFB'4~ާA8Ġhh<&0 u9ڝ ;C?oV3]&u Ε-yϯ4?;? Ŷs/aK)E2SqKBDBWBVt"OD>E$IN36Q? lrNփUV{H)UcȞB$9ָ0XvaײrWrdO\TRq *48bl RJJ!ZW2FgMD NS=K11|J\AgY5QzszDŽ|Hk[vn>cwi3F? h`i,b+`MoOf7>o2PG2V#AjNA+A+:}I{i[˔ |td12 3.)mܾJ$eGI! Spq UgqP.?6jMp6Ӛv6,M2! BF^G4Ni-9jX}$W /{Z>V^EIݔ wȬ<}NxhOXǰ-|BN[}vJNosekق_uź"bXzu!h 6%MN8O4BlMۉj X``R5rEDܩɘ|鞢%4-Fǥ%d2Ҽb[h(*ջ6ARYV^U8~̀5qp0-DZ 3θ!ؼD8G&K3j6+ i3|,>9"~3u& ,*BBk-Q1T1B2Y9ƕ\.%$&Œmޠ1e$9΢HKp69L#h>+%kO6-jM@RZ&FEY%'1C=q% Yg7Z#d$U[Md9;JYU7.[ ·'s͑5D %yppP1x!?$ca84;rR,\+)u7ȺR7x"?$vRRԜpዏLUzxyzoKR &7vt3K)Xc>_ cF%,fiWςp>Կ ^>uٝʡGQki3zލHIeR4wLr^v1qͣQSz2gv9Ƶedtxs[~aMlRÍJ,*T<%\X9IFH-T5e=3UБ&({C Zq8 C+ed#P-KKѦOn-WJP%h2 ?kk%Z#YτD]Z5dte$frGuMQTK iݬwK D$N֍9d5@.idKJk "Ӓd9Sqfܵ<Ӣd% {nJvFZO=Iz"Ry^( xk-bɣٙxFJs2gȯܺ'H)Nj݃u~ȒJPӼ||,\-l%;&ڹ'VW)th]ptXa|^9Zڠma]P#y>*1ևv&rq">nȁ֨sZ#A4f4vQku.w)t|Z)ș^[(Aw'>]/x·(JZ6\WҬ AU2 #hΑ@\E@qn1/'!Mfq-9RPV0 VAdJ|m5U,յEQmEI5PzZU4@8.yBr1 huR6 Y]::,*\Sա+fiA]8e\#9Nڐb|Ī}̆_kJJ2"f*&!߶ j"Q* lX$j!)r""ԫ4RJ$2kHtģMF8Xy7~HKDN٣֔ͶQs/]IL[R9#ZK%P]紸tA<>r5E$rbOq3PrW]9&Y7+ w0{VL8+d:K2i`oPuKKy_4% %L@(2`+wT/d M.ٹPyϋKݮ]E k⺘DIFk ֻ^󙩓ca|̚G{G}GEnݷ+㣹| " nxow|츘4HI aO6i"i uzsKX`˲+9QOߺ_Wǎ]<"J=ۓz p0,ABA,F80%a| J֚h#C$;iԸ/C%6BȈWw`!~^UmKm^q rΐ =jH =g2# DR&U,LN1  *UV 9z3M(atptTzX#)D-;0qLȃ HAtN1ɒ%\u`fqh]8@H`aj3 D R t `|x t'FihbsM&jR܁,34\NYRF '}&ltr!u:륆 P,;s#)9QS *''C0Cz II&'榠K-0t=8H&( :6Of-e.u5kz[ZvdNU(+>yS-}0g P)kVTM=x'k ]B2~ y -Erʹ W>s.J/I^k+tzhɜ F=8t,"<$~$' g˥H Ҍ%I^wsf"!  '.B Pr䵺9P#F o!82[[DJ\lO8'4 #$JbHBNeKR +V=DC 8b~1r]soe+G-5"CRG%,pSF:a+'Uq0ӟF2<.?-A5Qf,5&c(ӥ>828EΗ$N>v& j^j</*DztrGv=@0P܂-!(\l.W8H8'9pC&{#&'~in,oi^WV?ba{(M&8R~"J+Ty7\%dn@s|rJ?. 9#Mɭvd9;V`8Ǒ+r玂v3(WlV`]]z,/03;3$gj4ެiT?Z ](җs13(kp7Uu%ByJ4yg/jsq%/nhI[r=zoŐc랷f$xvB<k)z~w:F7Oos'ht10<9 _'&eq̼#*}xL^zAs;K_<&rE|ۮ,LBLED.E*!*:-*奂|:SM:L4QX0omK_iD_s"܄IZXgRqۖv5׿R~%v~-07)#;嫯FZV@vq xHFG'7!}UI6Mz?b$ mݓSs9C]p~h|~iBXkB9NuEwW$(Wl4L/ԇ`D{l%~VZR~>h~փ&?߾pD}I#y{Ff=i{cUq}px1.iٜĠ elJIɗWtNHi>.&}˥MJ_t*u* aI_ )w^Cs'cp 'H9ٴxvx\8܉;k_=Ϋ p峮v.yL+ʒO肨~YŴ!T fcѫA`."2gP<^\VFT}(x1آev*DУ9M:y L&) @TʟE㱿Zp&0b) ()di4i:QZi;QVecٴӇfғJcRsZ{Ɯ$PDJiMr봛y =Qߕx Z&ƕe ^mzZ`@h˔yT@Fkƹp %<3 Sgv0 g@&L=?J"fNEM0`duIr Lra)#Cyz {t:me>1!bZz;X_/|C|37!=`AyMJ9kӅc5 2 VY*076%Mlh'ͲG 爇7 XF A0; ~ۺ>"8.聬&՝ Uay0fz$p鋶uylXv?I"9d<\emj3>i|tZfQc>+H.*f7XҨ :Y:GO8̱wTS0 @$ĩПnAkC :mWY۪cr :̓ơk23~od}d k QHYڷ%t^%˹m%\Y7Gw|ţ ߅$j+=/>1*nGu},:~b-$g?SurDp|uEMӣ 3MJ2P~ݟ'&}(t<(ㄱy kJE.$ZEA,y el$6jEdϤnKO%֔sU-=lxy&b @PH3ʹ!oBBp?ĈD&:.fcpOi1f[ T}Jk qx9(NiIfkok5)9LЏ4Q-]5~tY`eeTwiKDͦmbЎLr-6S'쯻3Pd&}#/Z:0A@}y4B)sݒP'15=bEứnɏfDMU3"3:b\1Dz. +kNR8j:![Nu0Z&0藚gj+M5QPsC'*Q6J:D!QE)f0x<>.FJm>@0p>;YģnѢr΄%2 |@#}GBKK?z-:ȩ(RL |i oo˫GbEؒ5)JߊQ`@rr"{:<^geGykj63Y šv3-En@*t.}h@W =oP4E #n 6c=,]IٖW`B&ŨJ\AMuwпƎ6K[M !G &09(H4ztl#i#MK9=NzcǞF J ¬w'lt!$hxijj2e-Q`ЁjRv;{jrdMxj~qƒ fc0Ǡ;i',?*(?elґs/nWW F8i%#Z瞟Z[kgg .>D\5dɄz&-\_hOWQ]&kNP([[WU7y%:|gߛo͍P]g+=~ꢎ_W[Ґ_vg{sm`Qhќn9Mkߎg;sOk67u/׭˄E/O\x(5X?VwN:Px#K޳ )n6j \c}IP,ņ& XaszY jipD .PgX8%+}_e,;a6qҎ1c ᪽i*01&#`DOLzY(prxP>ʐo^`/eYpn1睄J`xprb(xN4ld'OHdz9{eπAwb-_*\`" :+"B|{=,WYB͡&tFBV>Zo~|bmSq #3LB;cyqY rpLxX`U@=̣t !F@iĤA-]ldfa4O7nJx1[T ,+. 4¹TUFZ%!{tW< 2V0#dBƜ{@TXZWT c1k޷HlF]-6}hT6ޝv* I[~xbFDFta;K$0,?ZM6EnR4-gH5E 8lcA#38-=c %,&liM:Ȭ6wx؍倁u9z8q ؛ k|*uX1q];]BЏ*G辗~! fƘ0GE>MUρ,(-F4sfd6B*$!hˠZPt+$]م5o|nvy٦&ZmTԴ3s)Mh]%!aqytvoZXV=?߰hS(cD5dPdUV0<Ia-"BGdhz!~J6AK%`1y}cߌ<X|,wc rmjSA uցJc)Ӊ{:;( ҤB_"::Ec۶uܴ};0 \~ ` ʣ =4B9'vL$ wD3uàt,G?)u&Yopk[V cݝdiN'|٢<IXoC捣ӰKu6~˼{m?3T5yWqg־1ibzR>r=ȳ0WE3:Ղ&fU޲`qr6pCq~~=3X 7ME>*B>fU6E0kQ} 4X*(R^y C3:kyC"_n9I er&].=FGNNbRgPوLýٗ\a eZ\.K{[e<2]-3h3kZC4 t8kYHϋJѕՑ+MeГ=b>qu AR`Ϧzen,.141<f{03cvMo{/;:i CJ*K ~VT;ad,/4U 'YVqEX'-ຏ|W-?pڦ7OiTD/EhN0I- /.[&;˝[p\{Cp @p0ehH/Z ٸ$svԉvD- 7|S ﵫQySf9nsw #̈Vv5_"iY32\k+b΁@ıFj֌#v=mμXU(06#I~UW0Rq"E+!cZTq{C7ƒ|m{Q8WU/ܪ K+*EBmn9l%RlHj+Ŕt.;v) ]H* P;ƓL=ΫT$Z>%>0@ eA")` `{-[SsWT!'U$O7>,VU3[7UE$h686i"b)(Q,xmLKlЮpswKIc.R9dNAՐ3ҎZyb5Ҷ;uM ^ 1m/9B6hd6gIל5,F8,k9Ԏ)q]H2UYS9h},;-۽~H,iED[m!VNq{nAo?;?@a%j_kdZ2?M xނXkh_x001(iIШwjMnx1+S;ސ}iAo$iZ(tx1^N|):v%}8XB5 <[ :IM l T^Spܙk6ߍ BS\X= {2"Ҹg1]|A`|}@[ :`fK8*E7"dmsQw QbuOgCaq^xIt.m?m5sѻp@7y$ t9߬ɩ64Y0:,Ȕ‚[fzpQ:Vbͺa)iBw3HWSn=8='3RuGD>@'PW}>1I _ԓ )gJbU&W F1U5P$]rжin1 " $/ȚGs=*|Ybޫ;s[OIEGmifK9궴fHۙCK?KgbHӋaf/wG#G9+ӽ"ԏ2J@ g`n"j&=jd&. 4l{-u|\o-璣<?|*-JI2ҩ:;_ѫ~}?κ~X>{7tzԕs1JG^ܕw̕Z^~:>|3 <ڶ7>>5&9>oO ܓpO+˓'ՓRYu5GeAܱBݰTC9c̒Gᄥ{'PϋLǪsp:Kit9h(C6P(tN$^8Hw;F [>(4Tj]h;oWT0T46O_RB&5;6XF.d7v D؍7h?yS =ĂY-& ]Zo^];3YNi@@_BzK:LRDద2 ńW"ToXb|U+׬owZ^[*X6D{؄mb4H٦Yi3}BQa|( d#\V@ &_1kK࣎L 2W&,5ׄʂJ挒ݺ2|v2}9]@l4Iw<3f~|c;/%mI1P* CB It@nU{ 5E 2LQ8_0T.X;.GJ )_M4,A<"'ӆ+g#ʟNŻ3G4s3gkPi'!}=k"/bDrW2ӓ*7J<$bp?CkASBB=6)0P0pqdw%`5NUiIE`uSd\X@A@u5"BHŤ{'K*Zf|OTIeLXSVT!#6i} YrD!^ 7=Hr& M AT_@̌a :\'#4mPϹ9cB0 fZZBcV X%BJYu<-w0e *E>\m`:Cu!%Sw"`r.u4^73f8Fƙ%2>j&CtUi;3M3?e%L 4~KzK'\egeI_5-]Ok;,x3yɨ'諝9|aaOcKKOVaN )?bh3gB$̈|3Uedv>a7Szb[ #ԍ9HW'UR}s冖p*QLeZrb+E|⺰ixrePc Kh&nRlnߐ64yTxTe~E,4~.>6b .$Ġ%x(:H7Ou'c6yH70(\x3UT};njRQiB-Kqb#V'!h 4Cm\5XIysA` W}]BGtf|)]_w!zE}tb?2 :jΈ޳wފ=>>RN_ ecG*Jnl´u'&<=>Q]E V(̨NSxؖnhr>k'Ca0gf1Oy[2n>\bsV9uKbJ if&B1#H> yb<|%0a6*FyDAdgbZ+a`rr FTc"8u1XǦjQlw- $wʌ"exg d4*+> >4Ч9$sgf[3{٤;yFax  Rk݃;,m0CF7/q.# mMFhLCR9,yh&{yt%GjX+ qTp> OSngrTv\dP! 7 rMԹcJ`$̴rSp,F uEqQeyq\#cz0{s>b`*\;jcKGoPHUߒ:ƿNhVM٧&a74+ $iƍU6"stD\G2#9s+$eWe#9hk#(+@:kF5;>ғ;B "/KUm)u_F5uUh1LUЭ2h\X>V_%+:FJw[WH9n<`"[Ɓ do앆8wTaD K r]fEV@ĪR)>AX>I- >~@P&bNQ5Z.пY*@aG+"])GS~=9V8S< 3Q3 }VzKFPMEܕVTbRt>tk_Q S1mA#;訁 rRV(Q}=G+ TM |Rv"ӍI_|SH>z[mדM`оfr H =E1-ǥLuGX[c@S[.*9oj&f'n~:ȔkNtBulzy,fsxsa+A@u%Z.qdŎ1;6ˊxy,X빎*Xȣ"Kfպp[p8r/iQ[J-ք(B1 "Xՙ4uB朗E눕13w=MجHwzW%J 8@4Ya߷16kt|Z 5?O,\?F˩l.ϵ-QTl#1WwozxSy~?<;͞?kWοsiYf퐲JAίط#KW;:~-%ߦ* 5/Lƫvуg,~8~[1@׫v$Q?-zN"[XYV(w_QUı*rti8c>qL-fwjWm'R2*yzYBD z5!㲈\7f(FdgJ] +uZ%P¡sxhZd0J14J 8 \ V$qvM,@ށJPy0_CLO9OӭՌ:O=usI# 8&>\WB1(q2&5R փ\u?tx}(N/' 7 D7C88bA?&RWM DL>57blٹl{GCi.-A]k*\1Ou~vChBh8?Pr^z-Y1!F+RkZ(8Vi>Bkd}=v_ZE2Ҵ l#>Gzt'MucV5w=V4fxt!L~\k2R5%+gD. )C$yFcD~ }$,VNrxC-]7$8m7Y/]W+`6g0.[Mk{]-{wκ)`nzg/'a:%M< WteHe"[P֟wlUQsȪC}f[kh(-L.{W$j aP~2М{SBj \i2ĸi/U:,˰-vсwm„*> 9h2J=u!Q4rEyy{X^+Qz-ptrRcd%Ex43#uҾ(6@!Th{T<ͣЙg+Kd9B^P9/w-9{||ھBM;6E#㚞SJd Hﲗ}9`W;u-y$Yds58,❯+ǯz[Z|dyAz} xz==Ǎ]Ěedi׀*GAs0.+aUiתs:M~p&9xlRX}9E+|E!=L4?.?-t}0s]Ti.l$n8k%1MV~`HkĬxtŁ \ٿG?w}~kU^o `ʼnp8tyov}޻s6xoFwu]ʺ~^ BǷ"3nfsfg N{v}z~읅*G#B o}A)?oI?_ ^?rdp/ʛQkh㸊\` kO'jj&}=9<9wqc76JdP8|X>/,1?W;ul}[ЀHH!ABNU!SBW%'nMΛnIKece>)eŇf v?ʓio>(s\.fT'@سo+o[e?y(D'r5eY*-[G.Z@)՜?PBͬ, 察Lp¥kCQYsD NεӐI՜YeAaQ=EM>v Op7xY_@20FFiȂ)8  wEzrZKVLo.1uHVZgW\xKd5ŬNMeCu0.o:gkɱÔqdY'lfT+[,gQJSw,ޖ˿nJ<,v͗wh- ՉDiȜN{^ ZcAXẄ8A38r'.yE&B|ͧ u2Ϛ0OTJa?F%鎑uŇ[t3:j- ޠe9t Fc~&M3QCJ 0!fJח@zVVs~ _O̩ lHЧ>a#mٺ_{';ڿ<_>([zoQG >IudXh՗ggb01(Rb%s2 F17ҡkzG`zhv/;MFwv'ap4T~rl>'%k\ n>vN6F⚾}w6fcV\'~ }Uff0-84mwj\L%uf?*znO=pWp~EX]7\9|69_`r>juKi^xcl΂]}Vgu 󖞔 f-O KO<>jϷolɨ_֑^ӏ!)~T/>HlWq/$380dFS+orlf~YgBDAL[ґY7e̷lo?NÈV3Z7ݘ@J R H! 0'e^MM^3 J% 7SWڝ}?L-YY}oQ;~yoeܭ4/CUhFasfR73} =9ٛo7_Iu仱ekvcً˴`넸LH| ZV yHnA2fC00f$d&IG`U+Pgeh;_+p[R`=?u YŨ^`Ia^Cha[Z@lG瀸 !k4eY r{svϢ~=2lŝ߽jXhcsVϙc !)N+0b.m_ѳEH[c.Y=T;uO99L߳yXWrq2m(bo+6*ƾV09WZ+ܿ8i}09Ec?K*|IޏV=m813LE,KqieMXr ry f1qy1Q;G_.IN'+Z ̫6-[_us|ȕ$#sp rkݎ,.bezтm6Sy3;gLȌy= hC\Ձ![C h>Hi=$*ux|IPw%/j-7!MLv,Ҽ{7(igX$.NP|Ah3Oۦ>_^>^x{aAF|l^3qA8&|O~>b'`.jXG9^ CD}g̬,(2'>Q$~oWksŠw~˦?nT$"} wqSFOQd,KX IC-E^1?T@KbFr]ɌztW7z, xQ&l al#ԅmrGQ,&@H# \ 1 |Rjl8mWR 0zCM.t5jn`(j9Ge쉀izal'>&RE7 pшWF8R( L;h5PLGՀ#'n ƺW樅[4+q%<&1̮tɊr6# {'MgYaXv=PXytt⸤tP.-) $wL`ER|@NF y Iu {̅b#[p.l&B a t34ՐUG`X`?{ ! ƔD 7Q6> .ly 9ҷ"n [LqvT^_ψXaE䰺mbpoJ+Zu4> 0vɊ(HTe~dj[e]4eGxtT>8W2*`ֲ΀{-rJw2 6VbK Ce%oSŒjcc%.fgW)c-خG\!TChӁB F|,eKҔw-.(sH!G`}qZsVx HP l&tӤ1*{ m9bo&~ ('?x& !P>r:YxrH( ќ]G:A|u^'zyv! :g҆yɐ oG X^!P! yˌ*'te&iI6$͂eXM: (GpJ/U/>gFrO1MڛX4\GU3ߡqQɗTn!^8 v@e'(TC @S_ܡo)ܞPy0 U뽁x_VެׅtMmQQOe.P3YZm Of q)ݐ7/.a6c>AlRy*G5!'/~RlՓ*π.5f}$MoY`qh- hbľT;|~h# +[$=Y)0CCHy,1y+D=[(()2wj % ;<%ARmH bKUvy] 4Z3j0 <(eR˶lxgGlx+o.Ϻ(m!eL|m_X9Gu26 p6\`z{Ä,{ys[U (Ѻf؈H'^p& {8>и <Md=`a!KY Zh6b]rV4c4TI&@?a -\xͷg 1 ST>49sݘ'j,ҋJj̩LS ,EFⴻI*8,3h鄣a<τ*8̙*Df0L6JH)) 7T#M!|ż@}gb4eԆrM'RpnXrCn~I] qVi`AiT3bSld<&RYYh%l[|#Ysc!ĉ# xQR\:p*"F"JDck]fD^[,`H{G#hRHKPUsFQgﲭ'.3' h;8Z.InTpC_M\QYQt&J auk"d0ȤáVv ai[aFU@F"ETCu= dP& iu&&˃ӡqceZ%$69!CY@G,1ԕHG5rf*`q HHJ[}=zixig*$2a7g٫my8$gʔuMw,4XHѥ*ֈJ48g!H #QoWԆ$wTU< G,mjZVĘw1ICOc}1p f,;voܳğ6Y%:[5+nBid VᜪRDПm( Vybj}5@P_5 ~2DoEY\yBqCTp`}zgri\[Er֟o^Hꆮ'8nOZ#eP"7Z s)ɹ{JH635KSpiAĎ6IJ2{*1ڥ>EsRg",(Tn;ebM c$%݀{gg7a9jYI{Fr}&)꒲WA # LfMHm\JF\qTOח>Z?jh|m XA-3TK (b0aYRO*8;3H1Ƴ%K^@&0DB]a(dW[:nbFAj MmΟs^`<<|Rt:BpKB[^ ̚ H~_ǒJP&'i uo`W8d78[1m7  > A:$lS=L !D}(0@[UT. B9xzgs@QEUٸxܹdwC(dhPm#yK"4PTƑtpD4!"x &2"ǃDGS,q+UR)G:HRFmwIrom=<\^D+#D%c#[U췍.yxV9Tj7^3.H,5U7HɕA| {~fxs :x UGz"B"6PR0awڽD{E.ã n%쩿hej| dX ^""4:,6Zw:vLm]5|wϧ'bU[OΌK; 闗GWyV-WWo/gN:?}P55{M\o57?{a߷n:WD]gP%Ŏ-NU-4o)JY#niqϟ1[{ѬT`Vtڏ[Rئ89Nٹ.]%0wNPO5j]ޗxE : YP'e58pP}p}͞6miRs6+77zS ZR?%IiFINev_;1=^|m)j>OS<~곙(.aH駨m49 /r[cG{,>y@<څE0-PW~'Kr&!H6(8@[ B*cۛE;iʟn0]åPi߻DUP6@Qya|op~z5j(e`rf)CP#HL8n"(vhr|IF|0㚋ge VP0P '4۔M;D ۾l ͫ Ž\ZY7ǁ~O`зjcnSBllϮ,he\' !@I ²ΐX;h;4RxPr6Ӕ'nRgD3LlB~Aj%b ߣO4J/ qPI]LlZ/_y\O!Ŝ?3L>MZ6L ym0}0 R]K_  B xM/swc*x;h$%VtVV[!SGܬ9cLRe!4 pQܒQ -3am8 k+ώz(Fhm $% _vApE^FOO.'uYE6+жLÔ.nN4p}eG'/6>1 \_gٶ5"L5-r[y[5 &gؓY] rZ ˔^v‰'ޜ.g;Z~>{`֍O &BA0U䆩S^o{$Fi;c1Gw$=q 3"q2Q p*HdX6k7jLc=1=B=ޔbGF "aH@̃j!)Td XB"E(N(`# 3šr jnTO]<>Gw0V:u:GX?d$*rMm>r-"s̉V 𶣘V,s~G1DZ$㾛 Am69aB8! ٩jZxи 8rgT+ۨ͂q7g wjhw'@T*E?.e|.l(]Qrn'J-]Z(gnrt9J!DQ9"r-{Lx<ݙy݂֌Sўkh=gXN񚟗}1kl]6W%qfqdf(&k--VGm&#zf6 }:{.7ؔiCn ]Mg 7KWWuw4MLʀH1! 2ЂgOenǵ /~I!n!';IxG$X08-Ti %eyetUm^ uh] @`gS׏Wi gj mt` sʰcs "Mvd :2^Lޗlӹ .e *߫'6) :ͬŃ`iK*s7}{FMl>ɵ:^eL2FNZ1nִ8}ZnOL{6ڢg_+]ޢ7Z#wֵ~9-_SY4/W)W=4nȘuf;6KwٚȴU0K8rlyg+rW)'mowdgw tn6"hDr]g g)ؠՓ&Z2=ƶ yIi 놾;!(զKΝVԤ0U:J A5=^ uޙBU-Bȳ1vGnf _go;ٷ|[WֽeP𴗓qL Sluf$bm!;Yì~mvҋ^U}ɸ^}4VӞ"osi>)ck4Z._xYͷu /8:_xdSsJ.>g^=LccV|G>^#YKҲ-yxp_Noե+M.Y, >  #p6s>{P}c9o%KsKoz+^zx׫A[W0WI7G7~fcK}Z>]{R89*w˃*wCh"O+i觔}MX91<@qD8lʓGjuۣ3hZա&i+ M+/ s( =ْqI2no4y$}9QWf)+n]X@eG{lƑ;DhGY{z~FA _Z65.{Ϛor;k%Nq;kx0%.ls µ-T"/pJT=ڳerL+ 8]iP۸KR )yM+'Z[/l_=k^kan5^)g9ޞ`Mfi_^^ ?C{fC.ypGł3**8^^bݾDtV>u$?rѮ|5vZ},=i&=4Kѿ =4q w*[2WdhSg{ȋNݽҗe W=^:8qhV:|܍?^?keOlZvϳ 7T@olL6No5\ZL>'/WZ0;BH YMc˖7VX>xuR)-iWu}19[ʀݯ6t ouw8zӈ&Sθt?Y0Sk ;ozUffEU1{O.#g֍P39S7f}_-Wc4f~6\79%W\hzR;`ńڰd-J\N~Amذʉ36~"ݩHh(y w.{-j0ә9ŕQa6}/Ewu nI{$_zbqVw[r&#Y+`?kF5|}>ᐔ/-}e{PެG/*ǜ)y$U/yыnGHWP @eU>~dڞ{:ّ~;0iKQ5_vgIv1 q5 /Q5p{P~FϚ{‘7 jYj}Vzt_#E/?1PUَ&qyrjzvD;z;?>6Ғ$*V0_k zg~vH1%DY'˲;^Akh7b C;ZG]K^"/>]9/<iJ:z;A'B*ЧXaXs٭"$]:rDD7*Y:kíj^;I+9^(6w~M-vc~hͤt߆K*?X7}5*{]Q1++y*{W`sV0q9|g -cS_ )Oj}茾},& (Jn=5+Β!ufw|/QrgUWX5z]Yœ?cFªɥ_^*dOYoɞVϹNQÍO7:Oh\6iՠ]ßZ,5ؑ\dیI K]-B<#Z)zE&Vֳs3^]Y `-J+?WXwCJ'oްKiQ_V Gįȫ+G" Ma>XɸlCF W7 Z>eQ (m 04rtI߮*<8h'{ʇ5Z36;V֬:W??AyM )QקnnbQص:-N8齾8TԮ;ּq.:<yQdxŠ'!ugolgEj7̎<}'6lx呃wnU48ٍ4orΕU :/߆U2\9G\1LӒ+9Ec(kcӦݩesH3Ys#OCޔ Xմ3VA%(H{˘r2'TN]l}1(5f̸g'Զ`CUUsʶ,?p$sied=O 15E鄪ҿ lԚ`%5(*|1eɾ^s?^$LL:tuoiɤܓbU3N2`8{.E95V}V Ms>s^PtT{{ /| ۑ,l@R]PsGY d_.JlGEKı^ǑᚽjW_iB^A#,7̸휐_uǪɴr<]h7 F~raۛd9?nx#=Zm$αMq~[Wi\ٓ=3Snsr3A;yV2J[*!-Rǔt\Q,gOvta‘c}G,*g^tݼ&K}ύoʿv\g6`B=.sX3?qgf8Ӛ}Ok ~sRo~TQ]  8:%Cyq9Ua,T]9qq񦲑zrϜ5 f7F}^(L*ӛa+b8e͜wLy>\!79c}Qj3"! x+5q[%u+i-fRڔqw5r#TCE}vAN\RaƿYUJ?^Đ#7Սe}O[0yַX}ut [6qT/O,ٜPZCE7G(樌,\d`dȌTټ\ryu;SS7,.9w ر5VϖX1iUi|mI֩^jE-3R_w;;qI>ܸB0A~lΈhD8@Nۯ .\|9X18ΰlMk\jpޅkFd_|e6gG-^ \q{퐬#iˇYU0S˥zҗdkR8zYoQ{k}rߙg0|aRa5Z6(8ɸ0uwKd6h)`Z[ˆ3DLyģؗy]ڻ~ŷKn-5mGN-Ԑj ҋoIk/ hӄkSM *خ>C4>;{$}E"f}Z.Ua;9@ҝkb"0X$KiJ3tЕ@bsP7HF bqàCYh#6Av, "mΈHgrC93MMro5Gxi:zL;? $ (ב X\Rb€0(.!*"! 0"()QIi#)"))L%LALLQL^”*)SDSj/aJĔ)USjb*&!MKTQ,i%MK4Q,iO tLi{ S tL题{ S,*@A.*@%X2"$,YY? ))@-L!L]PbS-L/\!1L{+\/\P(\P,\{+\/\Pc@p쭊 (Tj2XQ쭪 (T2Xa (Tj3XqL i@: (V{R j@Z (V{Z k@z (V{b l@ (V{j Um (Vzl m $VzlӽB|o.H))^+@ $T6X BXk rO\!\)$ G0qw=_y"¼Hi09B*ugi"~'6~?Nƫ1/WlZ_e` ~f93\?Og""B.H6DаJ{C%p (A#Є/E~7- R eEr?~(kLh]K!ut$rtL4Hxsi$`J%( @ "Q*מ#wRIv3*7,U"VRIĊg, M"@%/CA;(zxKDۨHT"?_ޣc*yerIĈ_ g-Q7%[(Q{i@ЁIds~EH2R$H0)Q dWþ/o@3V,4 H @$Y~yrR%#FB?2!oW/ڀ*Ph8 TOm*kZuM5K֚sZdZ$K$րĄftguotMuόH%kXV%kG *A /!/hA!ht_-)' J}@!ߧsoF=PÓV3j5%k֒ =L m*Ot-YkZj-9v]K֚sZC{紆$gn3xk:A% <ܿ3W8&RRjxވ൒)AK8߈9vZk40ZyizM&~\RXϮҋ=ot} ݺSa{Eρ0s:⬺fۚ XZ ~K e^͕Qvŷ̓]i88hzGl`=/h faO&\gni+`8ADޓ${~l *"J،]L@ LfɤYL.@$G;xӈ  wlp0`?;ҹOitw{ oû( [ڿj [)?L 'oمq0D1XA>Zy'w~g==YA,?w ?=丱xAl/o[}yy ?o6H^U^/L Cna8'YB'Y<>0R@G;UHHAL;S*]-fd&SF sn<e}6FF$0j,N&Fn DudcjkL.i%ҕ@CܧK藑~l`Qm ڂgʉZ.J) 6|p9E}Z6)(d9irW~ T7rױu'Y8s\-j]ڼ>OOu2mӽZѬV{'.?ac.Kj|(ZVYU+*f%]yX{旄V Γ8:xW5D3IQ:#[]C>K0.⡼k=`A$fPO#7tϓ愑X>,_T<L!"؇=W5#,̤xwd 6EAAhta ./YY0y h&=h 4n2bѿvqDè;T>As  B<Ğ$`|D4l F-APMc)sd:k E.v*MYKX/.qbx3 @ay0QBPz" qy&bokm<ÊhT~*OÁ!Q#'q :08:}[[`z swڽKFFN澣`>HEh*%QXscb бGy*= s5s0BC))*W3TK=A(\AhLcpܾ(tPQYAaaA&ɍa(H,՗w툲DHA`z-2Hb}x_EK@(a3}hl* }r?om"rAߟ(@b4 r]Lt(@]ǏPZ;@ʀ Ok[ĹP C2!)ndK&@]L߳0r_@@F`|.)c]~T  );!`1e˘=[ŧ =&ޅ s퇹oKekffaa"U&\wACĝbWTPx gTr f`6r21no3y݃6F9ƽuDm} 9qU.@L{2cABPqh`qfa|@@^auܹ)y"P/b B%%O:[ ە"za&3 NtAPJ ,(;e0]PӐki][;cϹ*b Od }Js1b;,$&3C_p 9:G;@"-)#"-[񗩑:~7~@z;w,߿g|cfd%30Jb10@~I~Bcf_#83o-2b+3; iK߾F_$~ <3?35%.%_3fk_bۿcy C5,V!HQwiN =_듮(%ʆVgCviC5)#KFˏn"=LowF%7iQ'pؼ'^zvL;>gŨ/fʽorc+F>_|HBJ0N'"EƹzANckiߡS ))9U_WYwG׮~Ű]N<-3ï0H{]?~_ 67K) *ᯯa%fz~?F10f*ƿc@DĤ*r0?AF:_o??hp?L{EoM?_(edbZk65 =O'V/^傝C hzUzztUsd"  ޑ*o }_cX:fDaG.獂eCv!mRվq= 0MQڊ4 /2skć7.e-u<<͓#Vۋ z#hh]F}1C) ҺB7ai. ./Ě^YŞۜF RYR{L^|X8Rg QikoL خ-^^>=0UAc̅G ͓m38)HӅH|ey b] wElv|{O$41r Wۤx'`zxoPinPYDhK;~ }pXYr}_c-/u=e Y9-D&QkOΩ ^1}wy/jŸFOئo22@ PMp"I*z>YÒ-eGbÓbɐ:_zÎrG7*dA!r.H7vÚndhs:a!az`=rl!,>TT:7TLw\y1/ot77rt.(rŬVsϜ4eo6vBn99LtQ { 7Ӎ:0Y@,Lf` &Ɋj 擮}ƽi^ˢNCәM=01#S=qLa&CeF7+s=\!v'ܒ6;#n;PzauA U ڈE"I\p֘x]cv =zg FV'4j-.gPg K#6h-Q=YM]klhv ϊp0:D*BIq8%MEoy\m*:m݉+xs-K^}==='.A~<5X95h2~.~G5Wk-裖a0Iq BQPea WC}KI'&kjU_pIIx̑A AdlQ.=YVEE r! x*wG܂9%>]NΪ>ni=1MxdضeP~\t%b}Jud@0}> [8ڈHL $]zoN0_T ffc+,eqѯF+.Rѥ111q#`3`?z߷@pŻ[+b^j>|1&2G GyBD8 АB]uѲ}PSǜcA^' p($|B@+NZv7O8 BaᰈBuΧS=+y=6L<4I>_?켮#Ԧgf ~!}[.Qg9*Qh']x|E\X>%j_' cv.X)^ʐ$\2?6P96TS4=WH(&[òY7$R[}I>7aA?׾IOIMVdtHEm̉Æ]aHo5'λFOv#l])ђt`Luy^E;{٭@9U; ԡ-w3Nޅe_ɟ<}e0ͭz&[^izYԚ'Tx[mD L)c=/q(R-#4>ӥ$SNu[;qǮo;In!@.JY VK~'/uH2L w/ ) x6P-lxUp;@ڐh P!_ پt *ҟ|a:ޚ}qjfS5J] r3l>@:뙑悵ҡQ+`q>'eHZ38$0J>TZd`ih.eO-&ady#XֽU>ki@2 -.nSAPhB+$F,[uiEYϫ]_+Vp55($ʜ1$2|3t]%{f_aczU1eti>Tԉ(.l D=G!ZQ 1p +*h*FGͨbTU1>R 1 Yf72H]VmHS-BIꈈU m:&& 욉[M7kNugV!L؍TӉNT#n~)4-3(M n&Ѹӱp]ivIpbNjё< poK+s ʧPv}6Yh _;Xj5\aEIFcxҋIͷILVQtDK0Į~QYIF¬YB!q,4cyX*,-ɸ:yY-wlLQ 8qTQNɫ4O8|P07&^=nn|/r-TouEQ.SLq@|Ay^4޴AX,^ld>]"S"!a _ݕ~W2 9WW OB_RsKBNrWLXs;gEh s%b&'Y(]]I-Whyygԋͭ :RWl`P^&3)M_ w#ڤ1iw9Aq\is>c%X *Ke::,P7FL _RmZ_9ױW $ /+~iRZ\%׬~6pEfp\<"1HNg4gεO˺EC`3< Z/ +uB@'S >Vዎ/{[ݛ:fk  p5:7Jq@$j>gf7S - މ-Ϥ>nybk&:F|Z]N~B6:6Q[/z6>h<4!*a`~jVAA!!@zkNzUxg9 l[(zt*J` !nGM_ !V7uSAu͢זmlHk!ރ{ˣ#DIRSM&Fxa <,[?r G{< vy-sĊ{rq j]͡Gmq4cB()1KD8+~H3YpC s$uPOKAء}}ط-Wd=o&%f&Hfw&ĩ{kW^eP+_V &_w@n`o̵\f{U~.׵mCCnhQ ^S}tUCBp6Jgo&s5Zl\6ǝOwr¥L1#z4#LhgEB,2Տ8kxzKIp3 w3ՉҶϴkdO8mX?ڨP|<XZ˝Vp_VZv9y>U0D@H]sk_{/FCyy29|hk|B0DH0h@Aډ;1~6j;!F#]q}?#tq1}ڌ[ '!9+ ?"E㑤ȡ-BOeQP%3^7M/+:{:WƤmK"D 2#pfz29f WޭEBΙu4[>cT); ;ѻjn5J9Yq pC[=ˊcaNT%QК#jV@9ĞCqwQv[K+1IBýSd쮗l.ncw>XKEAm"AxLh[W<Ϻwl8Ta4=p=~{%HGCpBt2-}2['z{=%N%HfID`7wbrB γ9L8gjq]oG€&p?8qÂ&DRK./Cbhʓ\V8Ȋ D}I&r}4\+e a y!vM։*=tXavnL~;o `+W|MEψKEp#ffܚ0/[FFFFFW+ߺh h Y'l݊ʑƆ)?u M}7|Y~|+U *+zzWw*h%R %: &;cu_aT?P}hX|`w&bKxtr|7 K54Nd궣ķԾ +JFaN-Wg&R%!퇳쥖̳43mCTFmqU&{.qԺ\퓐б갵B➘k@1 )uy B"6!6;qp/twqXh- b(Tu[-av{z7!`;^zDאt*B}f;x;;;VzhנI*ҜcYDD!šP};zm9M|>}HAwED$ \\.9jD6y\?l6XPd-xpc;zCjE̞EcٛჅo]omS7\#FTJ̗7 ؟\<~BЙ7K"#yNÊEDeh @,@)x})rD{ 8mHB1OW+N,t*~Q`ZΚy"g!ߙwn d)_Z07ECӟn|uvHiwP^׌İWLW@j̵/XFY6`)ѥbk# yRiLeJ#EvEI> ‘GV|6ȝfOu GTk)Vӈ|H3f-Ҭ+uq#^$\Fnz~y:L.[0DzHd<[|Ndc{>/P'gN,0u,CJ3NpH4Qgzy fDf?Lc9QKv?\\}-|606-ݞ(#~N_C@K_:(UO5s^q%k@4v|H$e KMpɺW*MrMgVis {7Sxu.5*;^qi98bbki%=x%l+<8b &j4^"Vڧ<[uraI^ᣈql\9phTtY},oPд,P+]kdsl.{Ku}Om@6W=}(tmAt? s/mȵzQn_gIPpڝâp X8K0%Oq}0[e>fjzX^KKwX&'-|G8@6uAg ;"ݿ̾eHn"uzqƫȭي&%nBbICkhM vU |C&]S iZ7qxm9YlkGs'7CcCkVe^jU @ ~Io h6ϦC "}4? L9>lD3(w::Jp|j񶞏B{vjboΙܜ\:6gZ+U(l\<0WĊ|qkGސ#/~7|vtZ{ݹ*?--H[J \?zoMO(¤MqNHwD- crfz+9xFwƥo a0z~قM޾@"x{r<:9̼%ir[Lͽ~ZۺSy bciq,8ka$: ]6V^UsGiFpD4clN/|SWt*)zx~ ؎N O3SM7%crvj. T@@LG2ЭHj2Kj5ؐMK^R9rbHNuyʀR@4t0Ym8TųXDvX&gǩ@j`p:(=>^Pj+M\ȆM?NP$o=?hl<ۿ_~Y18<9NYjf:I 2FZ/ `N:rxhkẒb STϳuVӿֶV̓1zޠV2CS }ʷ:Rԯ2ɘ N|?)QS] ̜:Zϱ8I%3v~S:$E/6Rs_7 pzp"$$qa}}@ #QdW,z Y6~'dFZHKFkE3nnloiDr}"DlnRd*&\!i~[)!փze+i\+]R%DїGZ<2ɟ7;ׂh;Y(@:|:B?[`Q˲KJ/__j%,DA94k`ĊKkDW `NmY~D՛Y(X*"(c\h34>EC^ Rb*%p ߉g]?m.vWȩᜂM garMC֊6 գP;N梴up crX/y<8y{㚽l@'CɍSb?kjHDz쁔Y1b VGi':5 Nvd87Ex[ڙ'!iv|Jz4A.EL~=R@$JǪU |9+CHDTAfm`@d׮5äO+aӷ˹VH/(^|fTSaD+c"!/O{vJFbȭe_QjC7@i9\* |ʭ:P#:w@'tplS5- 5|u@}*KuK!:Pc)X :pXJ$[;_/߻f-[SEK,ӊͨ77~Ч4ZЧMB>E`kB!FFȢ۸׀%7aYtSCcn̵kz¡7qx<+$,B>vkw`{h](G5}g_UB&b9,J 8QQV x3LQH0]k27?5з 'C|t$J`w]A &V]DF gɩIN-?%$) ӳ7-V5!ޮx[{+42'*%*I{xf=N" L? |,%!D&\GQjf߷5[NA;RR&xʍC\cASаpzf@4Eutcĭ;Ijz1-Nc4GR<OC18hkj,\.B"f `5\k4ȷKHwt '9CI?[lDCB[sUI~frz6|¨YrA/tDAhUB)C.S09UsFw]\ rDzޅևmaR#nl huFvfz49 Fۑ*٤vMԨHR=an-0;O;̞gba`Sگza:k4U->"ѓXV:;QS4Ad\%TX$c>ʌo= :d\L;U9̧M) ZKeŅjE$,rpp'G,y߄(4o4ScM)yM0/Q妼l/+~)6a)TBjP#&dhUnMI&Xшdn.ߺQ̖15n|FZ 56 uYhm(9Ԃ`7lڟ-W4i?_iLNVoZMFFFF_oFd~u519?ɾo޳F4v!7A78!888ӸиҸjG$ce=`x)DkKHF#O,95N#0U2=>ZecI5ˌCI+]Jt.2EWv*z_o=ib?YLTw4AH(>$q&zjn6&e[#uWŷ [/5q$nNۋvWĄ&nǞGP ;b"0o ;na~q7qIu$_Sxl优;h<yBR?cR3c␲i"'i$'%%%'C'#&E#kU•ib T;YLO!\i+ԕbZ F1 :)"k P^89 ^?@\)( 0O<,+J+*UfU0TFUkjRワ.W(a2@+ ӺWz OPT)i03IY04YZpv;iZ%m  C}f=_d޹K}ڭ-`wMvr8;2n !~l3 y=(fkuyrЎ>oY{_H2DP|Իk}plɼDŽ(ۃwnTlmA=4Oɐ =\dU_`B %a*H nP|iUq*?OkBTcљOQE_m%}L5bL?G(p(i|7MhF+M@ R֨쐞gc (̤hφ ɝ~⏩9A8mMPpȳV2(䋺ԗ= գ ߚ&$u擒;J1`;p2> `Yْio F329LI %z̙3f\3>)b6 P37}sCwyZ +66K{=?# ȅ}"~*Jn;f._SBuRe1uƇӷl>#ᘶa-tXjJ|ғsf5%1%C(NXeTZ6ūVFPP4T:R%d=ꇻs?jfBN5q(jYoC,<8o*lT@4(BݐOGaY=Bz ]  "";1XHoe{7m)6n<@d򬯎w(J+bya'\ȹzR=xܣQ6 ,G@+1DiQ~se⟞Gb4gq[Ê#bsjivjMF}o_b1XЇ;@ ri.jݎ2q3-snDE͔/]9#<d=PKҤ*JO CZ2N׌S!_8-sk: е5Z JhR_7ޱ2cGON.S/#r{J[bWl6]*GNY` (]Uu+~p7|.6!vAO"\qޔXnp*/8iF9JGo NhjN?A 쌲joU[2z:4 Ēne o5=]C8dnJo>t)wG!lϩ2EX,TO7wWq$zE_wFD7bKqU CPz-c8 '  t[lRЌx31z[b}LiTp8ӵa,5ѝ4ށ Z@-qfIB.\xӓy lFTDGLV4lB.6DˁI9YNs>Ӭ[2*BYשܖCbp{T~gF)?s~]k+(G_us$2pw2?ځ-\ LP,x"ȂHXMcEIn9g|E %jkBʖA᝘} W+Ӏ.SܘzMv (phv;8HD.4.^z=}q&H9("٨=n &xO|L@Vi]޼phs^(X S Ғ=ނ^\w?H4HI('đ:]aD9;*Z'͌{KBz $տKn{m=ۢ=FHX+Onb g}!2Ym;$nGPI`.:6i oH-DA0fAa!X<"~|gwQ=ēƋ$Y䀺3  *΅Dh yoU`uj|oU6DY*q&)o&!!,S&-NrrPkIiBVn݉t>hެ(zTض=?MS؋o4tJ!TLT1?:rhu:%1}@^bt$hu}N)ZfD,~?w-$j:r-kϰ@ڞjF/w N$QCqD k@Az9, >D@, *bO|͝JKo?|^6=-j=z:oRQFb1IA+sl ּS`VL̵8JBq-moc[Y)>GZf oOLJVMף@_c7M(klѤڌn4qd B]=Tє#;MFd0CN2@%gW?ʬwZHQYmk4ӗ#zeyHIp%+eEȜduW8n-q76W}҆XpWY!KȥBBZEg'ҫy|1E_vX?Nb_b\p09v Tt*6^&rQ#Ȏmkfixࠬkƾi0$b^4D ?ԁ:Č*RI<P#xkj?%U?-0G:zB̮~HfAu*Ԫ%:=9C/W)d@[5Y$2My*Y_LXcXr;6{8n&JQOVKտXS >z!te~rp.n*$@4BB9|;fbؒCt9&K .Q*>dO m, "Ws!fyQwzk ͛L_GSC>Y8c$EHs(ԝh(Vs6nݙl降)ec ў)9W;;t֍'g̓=Zũ:eLd2 xq`{ŧՋZJ4_BSm?0RpWéB(||XV6K(Nwz5gnzud6;VAwD|`[Ҝ% K+Ͼ96mr%Be:"[=~ʡ5 r~o?a9ÅI(NCT.x2<my Evo(gh>DzWxoƎLpD #!ixnCwtx#Pdgf<)Ց c\FHˡ6bXvJ>DMpNYo'څ ~oL_z{T64lml:W;.+vt> `Xy؀kk} A*i#O PoS)*+۲z8SܺJ~{켑eܝ_݀2+.e>_+bcKMh@LR]Nes"YqD;P.)#w\p^iQNpiI2ũLpZh' /OB( @m\91K{SR3UTǂC~_HzW\7!eصg͇㤄hUNVMK$P;/RMVdswU?*KY*Kl̏CFr0_zi%e$hG\d=ug0u8݆:ҦMPK*3sbp1?ۻ(cJܴra+sָŕb]7[|rM1Fua~ 늵4Car Ak:GK1;eIC?"ܾO6o./ਸ਼dWǫcnwۈ\ 扛@眗yY[xc˰UF3C\5<*c馌6n`n`ŒA >c fZ>\DH8B-b$lOMΎd2[ˋ }1qgMΣ)%G:vvJޒ /Jț Z`Tm L@C7\4&P""k  FV6-G<"WA }]QՕXqҏ] F8յJl+5p_F7ŠYcDI3SR%a1 Bq*|=gGUnh(ɡ6ӊhbdhyDڢFͬŮߔyLournD4Qd+e+t0}|r.5dہ' L@zf\ZGSRf|@uU1_Ô[w˗b/LLneV}Nx09!z,[P<)Y\$:5. ݶI b[%܋m޵!۹Uchd'A5-Ul+6Q|5`y2 s&2ZJ-}.SߒI@DA綋]/x3L ktBذibPFp"uU'0sV l{~3f #s`cl}el5~c~RHTe{Nth=chvueϩP3?_d @XV歺*[nǐ R[A62EK"t*h'%<y)29# VNĶS?+bnًpZ&3u߱*| Sy2+&HYFro}qzG]SJesscGV1/t]qm!P;o%GK'7h_O(AFswĸ+[7[9)C#!31hӱ% ;d#+ū(M:w>!Pj^СE2 OP?*ey!n+j08꡸ 6Qy}秏j6|}m0ė63__6P6/ }]_ŀރTH0X)N( N5۩a˧Hghb5Ϻ TNfEF7ؖ+(Q5AuR;ƩlCm?@RnBx2)W? 8/h+T "~;əehuУRme.sAqQ6Vxr[WgmbߌyBDϏ(7yy$3z[2/3"3g7PnxOx@˰:;SA}XivO=[3=cS@p_'nР Lt;[k ƺ'x.ԫC\UְJaMyF w=ӡKqN?K|_F4)tggZ/5huૐwnWR1P;X4}DY)7.S=½Sy^~-`|A猟64ҁ4 Q/ 37}Ar /;FT;ZP*v]~h+86p  4._S-C0S{d X1JU2&[ p.mИn':l ϯ4%` u{Nx$ͷ[_.$짹ani|{{ܣhkQOKRh)oG-s;dδ,Ƴ8G_zNUmcMevlSo8Ƥi]+֞;Kp^rc+ŋs)0Y qƷgM6M{ scG҈bYS\)UC@6H&,E1hou~gITYzl8v;,'ޕ]v/ogt;%U6j!cXf=&oz>pTj4kCE^=3gyWK;هҩ\핲`0"URG~W s; .7 U+(# Q5MF1>cH4˔c >7>nsYH;#fnQ`g.ٓ<03ervÆX+d1҈zET1䥥xi49S/c+KJrUI+I6N4T4G$P(X#8K4Hfα>?_iAnQdi_Zk1ۈlFבRUNň8723;}djj993Ɛ4%9Q3;b05\bjY993}$Y94Q23F_ŒcD<7yR/oOL nYr_K]e %:DNj}`bonsbT2ҝ0p)? PYQ֢ʓ'T8~4I9?ikl~xaSYthF>i}1!f{߅?^V8Ω2E1^~PݏB$}GԴǛM'O+簇s.1%biw39,=@ C ;׸gc04R,GVȩ\`M)QGhڝAd--*$)-|%8fO4Y2Fdxs} W1,Iy[W/ )2PUWiӪx"&~* <`D*HfpCJ+fV6 3z x*]-yhHy%=d|vi nBB}\)XyNWxJ|jtO 率k}}B?ܥ!MƊ_^SL(]vB5=aARs@zzڐR}E("K1p1ɋx%DMT*4'YluON"⥈8Φ/2FxȎ;MTjJ;Υj.8b ~iY ӏ6Ѫ AejBPN!@njen1?і!SE#P@05Tuɱٞ9f32/H9Ԕ / ]M?*0 ֋|HWT 7 ' w r E]__<9s=X/Пw9eV8Zo.xh58ASi7{A:D=} 7$mؓnU̳p!g-/$=r%k]ua؇ nqzQ B]R)O >m>IE@:h*iX =IPd 𓲦6.~=g*u q|`vԉoPk= }]]E{I~]yQW,Гn~1CLf־VSE1-xoF),*ttYRBOm *dr .2hYxYevfR: X61xAڄz7the rzxUVb"ȵG3CO"&o(*B.WUz&kfE7M,p΄/M\vLb ()e#aU@' "F= |.E13) y&3CCn d]F$aj~EyO1%sWb.FPc.wsa"+}𼊟$ RZU?W7\j (KC,lX40 `CzKטQ|Bo1"~J2pBUtR R^Lmrgp/ps SP zn09$E*tDŮ )l`j |Jvw >J:6 G+.=h.$ 6ۊM.A[+L*%:|;isGhϫ^v<4Rݦ`axn7XyO{ _'a!w%O)4M)No < .f!\|]IFIS/O6Hn]1AW`\6c[ Ft#89&E@ڛ/;nO_* \jnr( /zDUh#݆/09+frp{$U;V-zYs ;6E>+#q?PP  0ţjsH*~*IQ>NP<6V(QӫF@` eﬗ*Y#Mdx,-'^I22߾ `ѕa !?3$ @f@~D0)Qy86|hcob@ijރ6#aK@a,=z$EELrW1w0H> .~x`*] FnZgj+[Gى׍`kJIy~! aQȰvooI:[\.6 񨅡7jI,_xT)[x=Ro.حW|6Ԋ)We&^_< 9LK cאvV?#=>uU?iH #u]j_jeYj!A,TI߫,QTF Jȓz*EZuPuS+([XO3QBR*H1 ""+6HQp3)Ô<_B1Q6[(^SUF/I?F+@z%;wB~5E n ~"\Ĕ֍N}g9Ke\RPiӻOXRA:7|.JLՄWje:G(]\_cszJx>t2`#Ҍ >,dF/ cOl{M/4}4G)3a$V85}ClyOt{Vi߹+8wհzu&Jr \GQ :c ~`)G@ՂLH7ۍ*D9\&.듮 R؟G#xI YЮH]&[}m8v)kdW/"胹 kKzUŲ`o!3>ms qcuHH2LX}ABcʯw8U@퐋ʠϑBT n"$%ħgo͛8 D͒H+9fG#ݽDٕ6HbX!HvCeipsFb↖NLUh>P"͊໿ ?m߀\0MFqoBXޜUMZj-菇6{B텳鐺S1fZ#$%qà 0go[I =W7?y7 ʸi?ƞ+AijN4{D\Y/?@2=?EledQANr8ddOL,N3Rt`!Q%5S%rJj^W;U)ͩ B@FTUP6ϯ7"[݀Ԏ_'Rò[6aR}(Z:]U(M1Mi3FABYk 1=TS}+@/qbR>6E/=?GNp={2Ө'Q jƝx -ՆWs0jv$ )A*y=zh 9t%)TuƧݖӥ|X^]_%ϋ,^[Z*&2ɭvT_g)+1kxVЌa)W\~:iE 0ي?$/uwS8`P!W@Hx R6ieLukp?Mp2fj&(8p,Ilcm6cK:`kq_ݒY-DUh;#on@n;'RWZX7. N.ba}$>v b*uB|<[ˬm:[疕5@FZ6^NI ZgVK 0jhQ5A ynX(tQ1`gfݒ`rܩ|Ro2:~2&KMVTqۿ6CP?UyM؜7;vv/Ʋ62]Ё)ґOG* XHae4pjYu%'A+Y=V8:3sʈ3ݰ2OhVpazĊͅԽuk*.b XML؜P?eGniUB, R$Q A7 cQa>N)Hqa7*Bꚥ¼*#FFm/lHq@me:0ˎjkzmÎC2hXYaa#>gGC6b~ FRFN-^rtsBo?C+^wQ'z{ ^[:!T|u&ZxNQ$=(jSi g_OebӺ}pb !LZLtLg3TY^Ab@yȍRO 6+,? {R},p;)pb2HUgTGhq_P(@RadBY 97YT 5mUU<)Xd% *B*OgK_ތd:7,⓽.#Qzx TAU XѣI@݈`+| ЉwT+pjaVHd?EӋs\Wk [AmoE m7-ܻsG'qHmar[Gxjj0Wʱ+_BA|LpYuXx+1|^8Ѫ5}7>{ S<+cvD3MS}N]>M=׎@q-f|_](̓qIXW(#Rv85|в`XjʼUCj47Z]ڢy!SGgcBkGVf!^2U{q+!#1 4`˘yTlg:(=Enl *3`pː%$g}!BfB]xݔ}PP/A*~X~9D8ՠG`--mgwvJvp>#g-xLd䣪ʂ%siStYf|p=|fGw.J]M>mLopAHэN.xz?v +#{QnXܗVkb?Y8I)[KoZP(fhv=<{Z ES/?!+J`#Q;aFz@5g8hTmjŃ@OcZٷjQS'[N ʕvwY؈dXe[$>-M4}dF1(IRVRq o O*1J {'\R>X'޼$/.ŹUhf;sõmrR.3|c ez $YO OYv/\38Bo(78Wi%֟fG,t"o ѲLwn?+??kJ4?=#W5w/ݿ)\"gXes]Re`僥2rUqg5q>)n&j’:&𥝨+t !ܑ|afRPfr\RfPz|Cx”1rKˇΗNlYF ]L܈@Yc@.!QHD"BlM rjKԖuz4eRqD_0ܑ_n` 0rҌ BX~FD5kF31NH!H)`(:8KkZ2Yٚr`c}d&/Ha4-I+.'T_+sW$ +0H@`%%2PL0(E /:+OdWYfUȢ$SLB(9}x|=MI9|kR?ֵj){(ÆN]? % ǢY׹pElw1[杞WRL/9qݥrTrCj5]h(|,gK%{sc9-]Ѳ.6LȝOOc*H\TPº_[ )g_.7ҎZK;6 lvK`5Eu(<6LX͉zJ.N\vTZ";;p[e#S%aR69B:(n,t`\kqS+$z|S/˚v ;Sj"i!TEpV.V2nJ8@:I=SwdoKmIK;!;@K=X"dBRh<%hOEhG?|5|UnN'Xgq(=uL㩩h!GE9˓bτ&o\pE4/p |!!mJ 碐Dscda$ԮW3>! OK/Awis!htp0招P5y@ 1 ~Q=-p/ 5'*[:G ʊ.$ExewMwjI͔9rxԠwWc}q6:+glKG2x~83ȇ4d70} #$\r#YP*h" 4; J:3 G2i;pV?kw ;-J$︬ԀobLABS[?[JE!&p\RA]S4&2)u~8fHv 1v ODB{T3^E s0iO B;aEl\ݬ\o~N;Wrkř]bS5FCiH/F^2JvmN,=LZ:Q ۼD.qV|ۣƺ1Min#c;d9r3CQ܆Gӻs-(}gqi*s9,N=&hҜ '!GVˤb* nЃbfo Nun>5 :/*Kw\WҰZW1N0GcDZ0Mmc˕ Ɖo)8-:_e!6q>8$SЊbD,879_;t""//Կ$tlt,1};㊿tN|]?߉k09elY\w`Xiz}wr\O7_Q޲U:ɔi7D+(X{9b MC 'G8 r3pmGA}A QUzk<|6 1CIw"6`~}HfJ3gyeB8JLUw>K)TEp -+8 3`ځŭD,"Zvw\QMjw+QJKeVM~Q5ʺX? X7YQۗYO:x%^vP0f1"%i֊'MTA8;!ǔ3?<Q:OC0I`_` M'25ҹ=b4DjxLawD9  EI}*6`VcGXڈλCU>][z)|p8*wFvC>y'Z7}fueOaN[}hMVf̓^7.PQ1$ty':3:d˭&]눑l'Is ѵ0oVGh68;g apz:17L۴.@WdF83/0UedS*ceN2_Kyi8 3qyU|Gn6`/Jg<>SXqė껿61 laSb@W%@8@G?9!IY9E}"ppYfYs?,kswq,Xd~r2q`sc?C~P sQy]TҤT'b3B])+)!X٦vq)9Ll\LQT$x1b O7Y YaP+u ry# E[_r A]|zd8`N,-l[ʔp+Z>۳A[(M*-eeӠq}W!dPqf iN'e4@ J387+ٗq/ϭs2Ƃx/ٷq$ɻ:YY͉D"g"5ӎa0? eLI˦҇z^06?As!^~%ؤrDjd,lzJ**`O)4gMen}ƏՍO"nju|Jw*q03z ǰlڤnij<J#ٿj<8CY5 FS;uĹ/r_vOlA h59;>"a+C>""E+XEb Aa&E)ZA jgH?`]oC>ڪ+~r[!YfkIt(ΙcIU&&vǷqw L,ޜ:Q{g`]1MX$P6[Z~#t=_7 cLۈ@6)CW&ڌYdRI'u twalkf7]* )E4׋+N/Yiͅ1#cĿF:LLLB\+o  YC/^7?hvk >9"%߄Quܺ%Bl<ՍAAEX9͈ i"g 2QK2.d&H%?HTɐ1 Yx1F&ˇll_qpOFXʴ-ǹ %ri@R m8 rޡ@\.B;☛p!-ɮ8_@u<'/kLBt Ks[qDwJرPNΫu-0KaX]_17Vg lnZ-&6t%b:qZT(=Q MIB΂'H31_X"wVva+ ܃b΍ c+0 3I)kn:F[0J5ZO 'N>_!٫u;.oP5S+FNú`GoyYV}fX_ڈW@?h}܃8PO6w֮&bO)5-kpQm8,*))Cw 0tHw !RҒRtH"t#!-A|y>>{(s{E@ġS:OT^Փ4?l-e@<\U_Q7ӃD4gH,SgZ B=DS`띁u#Bvgv^`YDzxs01.1G& _ ayxxtPBWQvm?˴}3QI)<'_6e27^ Lv*HpFڵeIy 9dؓk/&ST&1蚰8aNF>h-)\}3KmG{Sx&W%)_P v|VhoUe/]e+H6:, 8v'N<' xYU /ЏOnƛ>.&MW"ѯM3~`Z7Ѱ>9JVu20~3)׻+%d=hiAni~:zӇxz. FhZ"͐R-?*hHQM{r@e W% _Nm7?O׀ȵ703uU`ۿvOj8M?yirmjj _4ؿ *sZ,VE+**O[d7:C[?H^QxiY j2r~d\P>R-~~<95y<&)L) (oܰB>0󡉨񙎙/Rp߽O\]HX" o儆ܞhը&f'wujΞ}#x0~>-޺i?$>uԐCibQ#iQjǁT"WN>i~|I-ݷV@w6It؆B2rٳ%v㞴; <*6ʉASsBKд!eh99O+1s]isQ%cDҩUh9NsADri*aD ߉C줥[Km=<~)3| oW/*mggҧ|u`$pKqt ->Z],'th,i$`ԑ>|kʪ0~}.Vϭ Nx*"*-#gݨ?Ɯ+1Cܲѻ$dmsDW'M,o\ juZV)<|~ZI[olF]5 Vw9FgJImSHmDyHJ7owTLD[/E+n}H~/m}N]Wx:*߉4g6X5? N 9 Z mOIwS[I~0q%xLz#pN]%V6yǿT .1A|)<lHV-7J-]џ)#'nܳG~ӐNCmLyF\9u@?+ CUToOh,]+Gvӿ)+hM"XHM\Oʻ'!#пi,$\<'lCE!:Il);߷QN(rF¦Exݠ';,7f̌bf_S{OT)d%0@C\Gd}fm>,ou2,D 7߿K֡M)\i%.<$/ gzn t8Dp:+܄-''Kb{@F]eJia-&c|F !OL֔W\}wE[^HzFw$_'[-)np͎Xn9`yEL͛[Lv}n ڦLjt!2zneVD50p6:#hJ/hQR? #FREH`b>*@U&0O-QE>.[Muq۝0YZ@{7VZ8Ӛ4xD[2yyby4M2ͼ%T4pE"]VR^\f wXsH,C~|1j5k2W$Sh&ٴF"dEXeA -jr'ګ_iH1[>B!$):I>ܨO__i|,C̏dЊ(430|FϨ\me{!s8"΁ϸr)%VK|ި^t'{IR<8A4 @Ȉ}Tۥ4LsV-%-מ{ɯ+^|A k ۓ 5Vӭҙm9/dNPC{Nv*^bH3Ug\>P֝[2[23V';jbu1^%&dټcmPV\T},o2 n=ni+oW2=˔!=GkJPّyma<Ŕxa怛$0p.bM[{\ٵoo4?>bs[&f(c͖9v a0hwƑXDnCFE•8^tݧdsR_|8uw".qS=UMgZ\=iWQ;TۧW2f QlZۓb-'&xvN'3?4>{%CIܬ,E9bU8Bf6xަc+ Hhz;*V ry[3{?Ejޭ5Zg^4yGMMLιOJ4rB58,-W3q* ?T}"$vvz{%̆XJ{YLi> cr.G5Y&xZ17.3Ȝ\gwǗ!a/9<ٙ {mS'ykܰFK,o^C+|o;T kS{3BPpOQ[Cӏ5mV}O_w {6jlFesDUܫ*姼*9`>V:1ҎW Ew:kEsYq&NCVQ'[jsI$}19kR u;j*7'>YR*L)_Of3qV{=a L Ww Iݒ[5a]ݗ' s!e`7kǼU|ܸhK8V,E*:4^AGpSA_;Z_k$愹Hݧ@ʈUuax~.:o&`UDOX؀;Em]Kg̃YBj+ӊ9jJ,z} %+֬83A oFߏH1 uVi!]8R8R2ۓ~3TƘ۳e|ԤsR!ۘbPl)XɚvJfdM>at?kbczvJ~6N-ؖB4N3ZYyiҭ7VyOTwX<L-6Ǣ^(u5}S_::Ahgq:[yaKv>P[\pvA;=;FhiqŌS(d~nĕhg{5_jmCDy@&4)'Fd͍;fTtX]ypSN!=ߒd@q5 }DZi\@ҥLKvwi!<4YNTT4+mݞ[f8[\7+[*,>1hNK]B* B+!VVGTԌzu}E&ܲPzg[BI'J9;ydSh$`>|#4NmjjU ڸ8Nܑxj&\TtG{fWT)kJR1b|xYt-ۯ⣢Ə99{LJfn|BeuV늄D7Mo_AEϨ>7Fllzn Q sš 5"-eZdTU侈V /A̪͔4 7z%,}M>Fm<7ȳ(^>xO,7pZ/q4$,DF?j`vP2Sg!Ïcm W-(v7h>Ik?O gK~s5%4Nw*}~v]:K}ᎶR2N9wF!ʢ9y2q3GQG~7qv)?kC{ϯ`GŸN߾> =+ҭfos&,8#l+v,ֆJPJ;Q kxДWa ]Qa  ԍ\H}d Q2XDZ?R55G2Y 3uFxKk/ۇtVz@6G+Ka[1>Kok2 >*jsggxb|fqѯbom>/j}<3('Xo7Q$ WS&"mƟcClz)эF'Se_SR;Cő7{w5()i.C1;Ie e?׌{qcMd~ {>6@^i/b`]*yӺ~}{0A wø8L?nkUX $Qkxy cG7]]ױIǓyw-%vFG]]N4" !>=#)ݽ=f0RC!徚ޝ9:tUk>'i$Vƺӑ&h}m=oIi+0)8Ui q޸3~nqg{?|K7 {;Eph9ޏS~uy6훘|mt QSIyr׳)ryQ;̞b‹'=ݤR"ߒDԿ_]2JLnM>dkR^V[l;u6o.Z>P/|(+pO/t<^z@A)%hhfdgdof*_ ¡rb˃Ļҩs?Zi2+)2CſgVU ωrs]As+s\1b+о#I)椑T`{K%쀕O25諽@>( #N8[oF-4NFMF֦>^>~:U{s$~ue‹Z<}:4{wrv9qC3=moiӒ߬z*-ir*98ٸ| T u|3Z=c> dytCXGP~4(V<3vF`[݃R}i=mN$""֦ɣKn~> N_=)}Gi7VOYmx4/YQlyȜoqȂ5 T4ZDl0s8F~n*("Zy)1GXsy^І<2 ).} spUk檖~wHn1\ݎ/ἩQe8R@Lӽ,a aZޗ)km+W-{#m:Fan >s4ybگ/&J{JK߲~۹Ů!O[WH0H(c>ov s1l%?5a1v7hiqRx-qxŊɗז;tW"C+B}.#b?cQ^NPܛOL ęlI=jIcm.Oa9G e޼pݔJcMDc&AodŚh|W|4oY=&hͭ?Eݩ_4e)|K}rn_Wm%^?U@΋~ '9 ETwA:#z'|m~ן$#`ב$Lsp12f& zbZjkAFFG!k5J2SFУs %]dmfQdy6'B~~q1Zw]4-I9ѳW+ r2"&fK~Ȋڔ¢لD(F'g pv%mn"Փ/XwF&uM:U<rս(2hؤi7UzY=ͥM ĵ.GJ+R,RDrcmvœ6|h4^!?1 t &/D3+7uXCz(EMQO:RW 1>'@oKuFMg8EN1y'irBH0PR#6QXX$?j!xh^{I?fn7\B>m/%N9HN#bIНk2Zߍ-,(哏R'M_O#䈱ދ']d/NL&bJ)o;Iuo>9Xjh1sQCzݕP[tѨYc2Ex{IߏMuw몳m_nXtopl:-ᴍ0=Ίؗr~1Aeѯ?({AAw=BI;{Ȍ,aT``)*!*epOu+lF'Ѿ<824;'X:}X{}AIjBkK$׶124a}w= tArjL6LJ"#Է # hi@IB4C*W[P\7)ݸ6]FA$I}#p~M@OWX*S/yGĴ"xBX .nwE{#GG>/\xzY*;ó35NBBz<4̀)|gܓxocR$?́p2;i҆A|_"DY7vlU="}]d 6xvOg 3TL| Cstj:f'd׋ZYx6 Kݒ6*rZ b+2L rMQ%%f`R0'N;tf}ܽPM{ތ$¢AQ{Un;,Z&7'YrM' dh. }V($1Ȳ"d՚)qjRWW5eΝڝYQjS7T7(! #u¹SJFSlO==$x`[o(XX>^Ͷ%B§ ^MLh\MkH'{e;j*l+6vg\dDZo]3W~gKn{ #K==4sX0^6e2g6GʙojJ?x?wKJKKm\/V̹7 kgJ~1)&`x,/yWa@{lJ{AĽkW%gDkh?o}ݞzŀBѨ-(,YoWwٛlvo OէE6E W 9ލ{:mW4B%;Bw6hHm@'̏M1';fPW#ENjN|'+MU 8"22 ?tXqx;`GAȃCx ."]e4U]jiAh\Ig丞f##Z iy'* |yZ/l:okՔ_|L]J<1@Ǹmއ tP(.jpBG2w`.mۣ+!J `'ǰE_ q[J;B%VMk jONQLz5BsDm%L9b/]y;`q$s#}kd*Em~(d>狂b2h:1nl["*SaԨMܵfCyRXh>OoLAq}!c&y Á@T+؈`ʧBmƟ5v/jQa1PFPsѳ҈hR"'RJ/zdM3%EQi(Eʪj;CtqwK3;YNVD+Cbvḫs`N|1J'E"C٬[*;{GW|hϏ3BmeM)&%RNŕXTb>ew8"?`2$ a~jxu;`#HtkQy2N^EI=m]jmna(xa;p3zBLJ[H 3˾%5͋B1Rښ}myDaC/Ƃ>⯣Ou4<ߞZ5•.߄^5 /!c'yϛ*XJIg1M~\ALs/7$zX} 46eճc|jY=qqrwDjC{xeM_RxCKo^Zom*L!<+;_Ԇ.P>- Qc{-z4`c=1*l\:,*W _On]'ShsX/ZI#΂V#Y3L,mfl?'+|e\^8)+c#ﭢ /*Zںߥ-H9)3Oq3j,t^9a Eg3i##S(8D̄+-Z6cP YCސ=MseQ\K L[3VAbX*Q|tw){@;U++¯g -e+!!{S5ww7xozDCITfwC_b'Io)!ȭzzÚ}@Ϥv:#8oa zܴP`\|c; jJ)[RA=BѠl.<_67I%:GamI0@8ɿy yv;1ܒ 8 nJ5|?8$τAYiԞczʇ1Vr o1;o,$TMЄd4 K-!<ǘlr2,-(ӬS-`J7"nџDeo+rwzMY z^AU0=7Y[.FGaBե]G$.=g;E3#zd5!A%f3Y!5GDVJB%&^oBo.^9 Uu\oDhBYb'}N$i)t2 jP xQpKj(ED˖G[5PfOR1 Z84tp)".o =/Vؑz^_)8UPLT!.vh{Ld%&AxZwV[-Ӳ+1/B1R7}/U8M/HЗKgm8 /\Q<cdid:dtjC:wٕ*6Lk(5ܣ38޾3:8IQA_G"Pr}Lݩ=ڣEX/°jwHγQ>:rp&٬ ~ A>bZ!].J-[r]mI%,ꅻSW9~yvFMA 9%$HUTfiM>ź'ܫR^k%Ƀ.Wʹw-LR)~Jͨ5)ã/;LڞT80  {LqgA\8$,px5ݺ=›ƹaס6&oVmP>q ^/&ppeU.@-E"rZ6+r&o&9B,Q$ORX| FiD6k锜j99@ sŸ8^0}9R0#l/TNzRYC,'mno袍alԢP1?s޼7>qD_uV$9ƾ`?dQ[VUcvʋqm wMQjnT`=Yҝ]AQ:T8O͒Su*.Z7ʻ͆7>l5t })pVG<i䡼4[7鎙;I*E|O=8JV){k25ѫճnAezL_#}>`!\ 9lDcOm=:j(M#CHzj.6HӟT!TMio)M|[D'nL}UJQ&]}WA{욚]Bޖ[fXԍ"%$Ȋ>{tRGRJl.xdKcC#LnlӠ\4 Iֵٱ%q%E!)ӌB%[oD?Yzfypt>kHZY7aU0V7 ^mOWsE5$ؼ)͗sq8<y vYt ]Lbfw{ėvwMz!$kU=SÑUlwjZV*k+Hʋ_# 35<N5THt!yқPJF_yW.`#7iU{B +w:|־\p)r)a~y͊dgUQܙRG9+m€o_Rn0~u홫@w.,zӠć/ : kK{筙$݉wu> dR|C"!Pjdˋ,rY TQSU(3(wעM*$gEDA$:"AxQ9▯BrO;{»Sڊtz)iNᕈɀg|j$<_h9m0uF=Yb]ѳvS~<;զh\Ż0r ץXO[Ý8\TiMg ,8z{oKZ䤐M6`ID YLEXj$GSr37rLOd6 x/:2}t--ԪL$՛oRm;+ʷL¢¢1#V Eh%ObXC&?~dsfM8%=u炣cFxIzAͧ>"νX:w 8up`gx?ZxY#h19Swiʍ0=@jO]OMM9U1֍"E5uۏaQ3dتƌ?B>]/:SNCryk,[xlId4hoP;U*t|F3e~ XRn}SB.^9bnP-KTWHNo7Vb6h'yL4&#ǛňX`ALD^)d-AxcHwc c JCk>ҏQ pTp| _Y>q/?(- }P*;|"Q7%VoU!j8ö|t%kt;o䗷qS,)E#q܌ۼW.eTBSD);u"=?H oYXܱi x'"oHtнHQoư@jUmQkHLk3i_.}JǗMR6u蜟Z眫WZm ۛ#\&u_s41JXYr$N gd#RQ 9½([E6K\lu7#6e00ɞ^:yIT0EG9Hfie# huMxCQ'2)*osrn. H^q;*4\)zJJW<{{g |k4M7yӭ麻C2ִ=5vϙ"{w Qn~q:exMDW~-U8ܩ^ASCx/*r% Bqx+v=}hqm)I[akDYN yc\׬WB$k'vҷBq?Qu=) `G6Tqx:`T)~|l%%F%RamxwV}Mk,#?ptzQFF㊼;ij$zU44J;+*}޶3v7,$ ~uf 7EDz%6Ip-|v@Sڄ6yο:y%1jmHS`^XwMl꫏o/=yM a@Nhf oLdwO JVqߨڿXUu`7 PI,8)e#و$CD9vV &4ֵ/ LVgl<:+È^!6ܼo#f(h/so7NnpN|Y# 򯶜^H/*W+q_痡 7:'Yf&mGtgx;XLCNy:rxppGQQlXG5C\3XE6н4͐*gT MgȄm^.x9=PۨoxyhSt#w OMT>i.ضeA3Bgcl. By=>#:ʺ/x G|z(^TcZvٖ笘ou_71^zrp߭yz/\wy3iP2ں2m#%驌Hb3}]krfGnIQ4s}ֲݐM++ T?v(8A;]"e]UEw ija[uĈ66O1ۆ' Ik o6Qu6*'BOkXkBKnΛ<~ҡVk'N=LF5ݺ>{g.ǖqizEsZhK\~r/ #1}]U[?X2&WzM%"St' 4R!Nָn9O)e< ~4)V֕QP܎OԒѢ2^h3?eay1U`۬8?9aqrBp*'냰*nK `/vyA?z g ##?CrD؄a_( ܽz@|-$ 1Z8LXW! Hhغ^,hE@`.$u05:?,A6fF aKK l=HWH ʕ+lW^yw+!s WAؿyh_)[3?cEoyeu!(8LjDx`N& ̜ⴧz$u!(b:"ⲤV!HNBY 61HX7h7HЮsGOBǸr( :ר (N< q}}y5܁lX|-=iO^_? ~=؁foMzQ~<˶-V0[7GǦƖV߶eqTwuzG̑*PUtsݎf5&d-lǣgGUF~ +^pYPhHpRÇ*mٛt {60 I ~tԱ;! DE7$,7Y]Jư#r_ܿY9VR޳b<tEpEt3đwfҶһꗑ"3 q4bnmZ3^CiOq($P73cppjcp D$ɔ9NmIRu;hMS ᪌95'ՕNG*Е=p;A{]Z99޽*AKA: *jDY2)DrJxi۹a y8xlTY8aw!8c\Aribі&&{h!4J]jYGR]L"|.ۛNߋ?oX<-UؕЖѺYhZAaJ`XZϩ<'BXIfG1vaj7)ܫW;[_pD'Gѩm#=@*}\ B,GySp/ y@|ŘCffZswjNg,Fb6beD0~kn5.* 'u:4BeI&k6޿s^qоk%FVHCZ57믵E<,>T1}B!:-3kg(ɱCIVb(Cw+Z/3aCMgmJF5+ [SsFbGQ<Gi@O*7s5}&&fsh[]'+*]G&JPnmMޔt{A>!"o P%bC+z>]T-6Lr 5euOvbjIT_rݫVX ҽEzĤp PǥO^=Ssɉ-.J⬅l {o>;c-BDtC%E5|k,3JMfS@zyo֪|GYĦl6[٦w 757AYiO?b TSʢ=)r~߂H>xL$z?5!"e(d2/wey}4Aա~ۄI3+~!FY{ R=U1`tVGgDT |hh."SKϭq;CGNYfp{mƴ)."WSCÒiFz֬ Wb2G?f FI7i4Lj3 5>3y:{ʈ}>JDn\tZ:^o#;wzʓ-Dbr( 9cFEoNTDN!G\ɞA_1WomNpb.+5yAG_#W$#([r6RIf[q>kfowoR>a-FL+l5uCDFnoߵOS&v`g$WYo~oO̡O,=bS0:uHgu%owGc+241T>r怎TٯѳX GܣYFt ֲ ۤ|l'=?"t$k.i]/:eϻ4}O`/-L<\FM͞V| ]ı7c) i \ݘrySFuo][K"c81L<<6=[u%* m1۳i }meM>ABKeAA&HAоGF'Lzu;,f{N O!Щu#سz=_:$[Lĵ֕dS517R}=4`Ӵ-+l;AM_XIپ`ƁIWt$|MH)fi!śWABoq ƫTUN‡HP|%O3B@~"l|OnBM${q"cg^0d]7{ C Y$ɸ.'Db2X >S*Kt\z!֪n|wl4gQQ">x~E) k*ւq#iVqYEkEddEbcs~ɾ*ʴUe7d+qPv^`;;,|k EدUu ͣ$+[H& v+^dk84pȓ+G$Lnԧu6k~}bn<. {JW8|\=N'ဃ/*MKFOgF0=(w]oHS#E3h:M6ɱ\Y1d2N|2Cܦ$g2,/6M4<.)/yZ'"a V~jzj|꣩ ˖ڧC/qDN3-+:7k6?7o<$ 'p Qb4AС+~ 2T' 2o#9;z*Zӯk[yE; 3|oբ:]>+G+ҩ/gFt#ۙ}eAUֳG/M6NfP8>(p WZŽ9?U+F8ݭ* (cgM!>n(gI%H'w4w= 9fn̖x< qR)E O ?scAAţ)PzwTvyoAҢmz"DzG Ͼ=vlr|'!/g0= /@>%C19K ii%gC{(rdFjjrLR=庠d2rŝԆ]8ư_VM[*{g0=BuW|x$8mHU*)BOTR [JˮJpu5wm '>GIdѶL2[!y}!mDN=9:`ge`mehk,Tþjә k<&O-*YsȘv+Z7|L'5U'+^fCiMLf clYdwmm=>Tͼۍjѳa.v9kQ)sʌUEOmƩ_vT<6O*I4ܡQH[0 .)Mg=*A @]jJ4]`_z֣Ԋ&x84Q^N ^;ŧ}+=k1+Ouۅ*hjcZq'eeX0q< 4۲:hv|Teɼg&+|OkC3w[_0*|?SPjG+Bq\e;B0F G'*˦HYpF`!c6_"HQC;&y,RQ*QC6<]Ph"H #N6+~uI#;;! '(_orjhqTGvCʭ`XʖbOj21\= 14D/Mu|ڙC\g%Q<=hʍL;CCRsK:S䜍:Sg$\3ώG+7s"yfQO^2,ydS5TTi~|WD#$d|dtI+c,_Y?_þ؟EeooolW&C).Y-.:3Lg" )9o_qψȥo/1Rʴ4f6;@RNoao"~$mnz׭;nmUl5hK\'ɢCRJvu~8n;@"> oFv߿GN|?R\@xwkCkTFC~n>rK;1)>ۭUTN:OSJX}<|EdoO4f7|\k4x~c~a@V^^ES uE0v`; m/ cmj{w bfmlfmz&vYY;ڳX9Z:ZX@l/5:u:186QEO`L&<"^t3)3M~~BSI.U[¿tZјSMeIg2Rz7L)4pQ"_ 8L{Pˍ[ZGx $%WJ:W#c !\Pceca_cn\Fl#mo!=N_7T X<h;c@9 ۱lľk$@\FQ B\cACy`]IY!üVfv}+ɕBGTim#Ŧ*Wq.AhyYyf8LL()Ĩire؍W?cyBihUוh3*64ġ=;Ѥ &|CΨU 6.N$Q2`4{OV`J^]'c$p@߃:Ծq t]ER+G"Zm]T{<'ZY7ϔ ͩEdC9?%6KV+#/O%S_H#m!iME:;)6-oxn-v> a΍]oV)h,q42r̾%#UiC2(Ԥ>*d:K9@M('n|,.SlUc.X0kb4A9Q ؼ 蓷:Hl;-n`\VV皾;xì1^|G\%uI G?fE{AzZV>)ljKM̐IRE$̖{nmow# 7>!QHlp=ڴZFS_˩32/mj,D3™n5$f uZjγ@;3)b̭T7MiFmH!LUEBo1URGE.bM`Kϐx >ZR5 Iwy8%fcG6nIpCNi%ՠ'/5$O"QpĮPqb15Y?*: Bmj." Wug@KSR.U4KγCmzg =mNi U3mnzQO\KV5!KNr&.=4.YJh@+/.fp-OEKP/5{R(OJ IzIE]#d_ؕ.bW[ތ ~BtJ?%_ʾ{WIH؝Ѐ3YF Bv?|PM'۠o>Y-!_];O %+SȺBFnk%ՖyH~rLj "ml9.tMɏmD? ڢtyǬrSe1kQo}O6ڋk_]dQ[p,aPJymDb6RkN5Z5adnA'2&(F!,F kg/CWCMCNV'%>yYT}"ə.A5mM*(@"Е }]c#ӫz}ԥ.6 Up;Co:Y]{EbdH}uzsu 977n&ƆIv _~$v5W-GWξڿg5XWh奄vYF6,?aXZz I,$/ +caN;C*?-Y@7k+]E?;rt⟴7.ƒZKY/6eȩ@s fhEQgquW dLV,k㤮GJ5ͷ^I^YD~v^}fMN1U* 4|&O֭bmIqaPfRy]fRهD,[(Gve^KtKsIJԬk7[of&u>^A C{ŏ`ʎ2EhlDzjIr$u*NNhOGyFYZmeѷK{ +KQ~=U;./,^yCCW\ukju}Z_,xyCg|܏M {KW6n>"q{g׾ оLUVʉ9n."öRTήToaNC  V/ԩOG]8U^]KG|x 4WYCwf1^fI?~tNcV_7cR||v`r Zv{*[l=U!KWAye{~ n,"z%10hX(H``{_tG=AB&b_|\W쌸׃ֵ0nN*{ _Td+"Z|zʒ@\Kmáe$vǧAtb!/%wn2+ tWmFSքRϱp.jG{ ipZ$_?pF_\1h>ŒH|@ڞ3mVRdcEA?P̽"Ad &x&q賂Dg U2(>śbZ~D$gz=fd+?qMC20b['%HЀyXp;%4IvmD0YmIgttw bI 3%^4ZthՕ{`f|uyXzMU$;+V> >%}@~ mO`$=6 )QIVєVVѽ CzxC:L?$:w?xuYX\Go/(x+=nJQ6'oҋˉjsgISdұUOn׳?fap b|L*kK%6s & ;z6UZA.4)|ÓT;EF l{gsϪ4\mGd!]|J5TD 7VVT&#;RyRߢ _'o; }r$K}׵p+blM" [Uכ]e F(3D_xuZvt!OV> {5%E)9%Z*0R$Ǟ&X)@<7,׻u/|c3C6%kxUEMoQP?$4w>Zג*9R?MܷgKxHW8Nm={uhee4xZLGΡaVY#T-3+TO'_$ePa1fQ0:7ٟ>?,^'-ȿZҽMp)HM}Pİ$KsV\R % q.WP_>c-b"X>&S! !vK9ߎaaL/kyC䄠D-n፵܌}d;\7XVK+ . g~>;e' Y :٩4c$S痞Zqh_ $֟˷Vqk&,.G WVbcI]Eo=kf2Μ^3hBvyjUN@W9ufFhȾσUgDP]FL졌7~.z\R)-\zۊZ;RF>Eb;hϔO^Yy݃A9VFKH'nlM!-[+c2De\Ǥ4CF4Y:UPvb/o27EY lT <ȳۊI)Y x#w2_{:EU$a\x]l +Kk{^!wX3 袋 f3lcg3s yU$~~ И:88;;3;3ؙyxxXXXؘLP&k{ 4fm|A _i5o @oa2F\L@Ȁ&(*`WNFRI$ijc5A#֟ .<+ochf*d 4l@&VDhcROs){`g ?,f_|ppr\/ 8r2N2gc/8÷@p^xe_M\xx0xt`q Gٹ.4 e}_6yY<<񈝛+e<˱s;\;}2}`nڸqprà X\ g9 c eZ`m2<68fC.<._s\_|'\p h,#0rk8w9x./2-<| !\px!`8!prC88/>0xqpBX4_  m]I0=6xp6D nx=p7<8Y/?vx\~Cn C9Y9޿prOR? 弬w₯?/}}H#]`! b-`uwgfD8x@X`56n68^qH`<Y 7;_{mq&FXsyrvK`mc[{­qsrsWWqsClpk0xp0nx_ ?V8Y <@ Qp2ú2+7\m?eZ  p/mm0xpkGd_mp- |}_X\ n=0|$y3lSxjINw9`͗r rí Se=e[H`Nu WwseY }XIop3;+W[map\X>5-vزe}^}6 [a?@ٰ3prA~fFvh U37#MHu ikcIh,b m~H9¢"f =tv>9pFW@3΀jibbeio_S |.Tf[`cQ?|a]$B^&@vk xAIr TFlf.]G ۴3 @'WK?sa?,agx5)# A  ,,-a@̀ h A'.;SehGq`Rs Balc N764puՀP}' kTlK@x_Cڬf!R UE * iU}i1q1 .Aդ@@a5MHXA$+ v{q %qUU HZ^INZ\$ *.& *( US80NE^\ET hVdIH)JpAJ*jҢr* %u%EUq1@Ei 6}HUJXN:0 *  )E91qQDINZXDNB`r 1ayaI񋁊 n?i| %~UVTAX$03VQkiUqF*9*wpq 12z~MN60_?K?KXO2LП2LI&_& h˼R 'Y |8 rS`3@VPCr OؿJG T`P?pkgp! m Faj {7v)LGP49Y4g)/Y&&F?\` uD jf `6?'?.l0~=?ÊۿAZ9S! aGk+/"BTV @ZLw~6,-7@Hnokfd7-_,&K7< amUCf3t4H.>H 0vt "C\ @cR @U;-?=PY,w!:{BAZR: @@hKF0:k`c6e 0R 7!\{[(Bi A@nK f 99ȺP,}X5[İ،~A4jH1#wA8gFI _]`2F.&D_`eKAi)`MWmb|210MC3@`J5rZ:BNP0#{G"- j0;ZF.9, 1 -MkXB w#9P fSZ/jXhB `#~hL?B+cG0{_5 P ;O' = k0 r~7_"Z^|a7 ,m'g/7 ?/l~d9sciu %0.`݋P;;Egc5VZL1H(㻐 ̷tby]XJkp) @0Y쀒 y{fff3 =P`K@-a⌡ErManGh.b6 jÔl~,_lJ10p9"KEʅ; \5 0CG;{S VQny~qRDŊ-L1a. dp C`j ЋԖX6w>=`~,ONk._?dmiѿm@aoa$h?N{  mV]1lrC` , eY:j#X Ss33Oi1ZmfhisA&@ րb<08+P,-@ aEkY/ .A3/;2]10?@0rقAѡT_ۂ¾v+l~$h ZtYp]/uaoV>4I/Y4}gt@$. D h` @W b=|Iɯ^l񒥻Z~YԜ 23:=f8`m3 |WA kw 65aX#;;4C.`^xXWC3쳽X0Y?;p%wh;b//Do Kb//׬aK ?G]tSեc1]J]R\ᄚ@:to2L.$hA4]~E8 %/ezoh-+eK+8)?@j[{ @Ob51G6rJ ? (@iԲ@]Rp3m a",k78a`8/dg [^fv XԀX3I~$j PXD9`s88/)0E3ֻ+he¿T ;ԦT _9rXR^PLۿ\_% 42z,QzwJ.'fVz ^7l l0Y*-} [Z ]a?߲L3{=[XzGڿr=ϨT 0r+@Z/؅&a8\*R=_EV` ;G ~_z!,CEKh]~$01 Qg wzQS?oE(6ɲ)Ih9a;/!\`.7lG+1aepqrpΥ΃xU`Ț;~g_,\PQ¨XJ 8ۋ;(?6~޻bx1pt16+[zK` S3 oNj7nt vlfOzC7 l%1s9 G -aI-LeqLjb%0b:At,[_t\AA2_H A зNJzM{A̪SU"^{KᯚR¾ NK?BbY%E鳏;v[X6 9:&08h2RW< ,UØeCZ6W\Y+lX q\\nݠGpG=xV-UlZ )RxtaZ0B#]fJQc*ˏI#)5bv{=GP. VEinGOH/!Baah%t{ t$˅Id3(J1y}DDڈ WXT_~yr]wpX @4YɲSfSNSҲt#sHja来="򰲄4a$ TE y37E7mii~426-h&BkPB @,9c"hr8- 뜏VbBGf$ $jy $ 0QLU񐭢0De2M*h`M\67FX:ġv:F"iIh, YJ\90 tMݹ8YʶA dI7;PiUg̖9 PN7>8|ؤHբCӴ\POtņUUPw o~)ciZ0$8v&UcN&OÙ2臝Pg|Hg29M4ꂔZјyTBbͤ.+ś:ٖAH5ޡ>DCVɥW"`OaW0#c+WX`!d@Va?hƢG.3%%r6*+EBp.\$Ǖ.1T/D  7ׇ)0l dW* !'.,yBI,j9b\7Wf7d6̛c MZJ6:'?\ %6lF1"PnܸRl͢Q{^0XRcnVe1qm蒁eR Awڲ̼ńQVBKcmc}䥑9LqlǺ< V3T6C\j_okDҦCvT*h~Lx\u<L:{>.]мbʲa$E-ї)pj"{D""DPϿCw)߫_7Dsul.\.=)l u\p4{$_R9VL{KgthOY-~A]2迁=(_Odw w7_}O35ߖ4-z-SW>Rd4A{ob$)QYJR6QO+xGazư^?M˳D1YP@S2Dg (J1ZJOr GcuTj cmma1G ̶$z={^(d}6e݊)8YH+1ⓆjuA;q;-ih1C.7b@bG">>%Dan=3aa|\o<:d`)ﺗn^9;s*$k1SA !/:\' 4[}9n{! 9͸$zpP$OSM'&#5VߴOnsA,& #dщSSb C uvř#(S&X h:Ɔޒ HVpơuB|46o& ja;$KYMzpڞ>z\jQ +]K`q:p&Gc=` ЄB*tm$(&Ir$hEch XN BkINA%gIH {ц!aܥ" >,DmZuQAa2?1S+{Z{$O6bo :[MY[^Y[~ϣQ.GWlJ2K9;"82-:"Q١ȍ2@\2/Ow?bvaQ%tHu10 c!QuoLPȉNב*r<4z-5c4̼p=zY}oӥG,)@kM6g5wzSKjyn[s_DI@UvTIeXH^㳎:@t*DCXV\Xٴވ*arXÆ/A\}5^z8jU^=+, d(GlnJ0mkm%1p&plז)KaN% `ɇX"-,"w!z:\6L,, ʁ*zE%yNne}$s0OE n?1B˪+He 5JarYX5J,cEYJ.;M9Na)0@KxF-ʌ0"=#c^D*?608%aQ.tzWg`,.H).`8=MW,+-L^bu\$a7}JAlDAw .JޥžTѵ GdzN&WNB\3R+U5b{ےzghN!0>;۩yMuDʫzLqǨ2׿vvd{EJ/vQryҟZ+܉5Up;9J3PЌ{99-BXonS*`$^zE;%/3ebd \"QX!ބX✤ywNJxWT-EV%6?U: [QAc%4"Oz(rN[٭vd݊&Ix.[Q{6;I<οRC*k;N;bts=~jxxĭ=6U߽l!vLL-x]H8:p3vm90| 6\ID*if (.WukR{ N#w `1Mq<9ӧ<)lȀYhw8,P =87l`Dj51` pC% W|u!# -jhCZHFvIA{~hEk}%NN{r؈NyU[o.e',c􊮙J49H bB,9\׽:&>б}ӤNoÚGIpV$%~pBէ^ٸfށ8<˧ #2 +AKC//mSaDcBYhɱb㉒Kց_4P"k-h"ʲy7wDP*Bɼ#U$mb"i*;rUJ4NmNKGi"HÒg P(RNbӆsm]lLVE#DA[O_WH,g**;,Δ(BFs X^NQxᲣ"nge;CQVӢ(5¨QA'5i.cʘ(.Cn\crdIYY V1yʉrYVɒL+!= Gf2*0^vax̳6 Дw)F]*AsxhWig@И2FjWOzx$9OhVoc#'T;[^2W~Ik'ĊBA5?htn]QXK("V vgXYMѲܱS`9[:w**tbdžWoO!1KŠ~sDo &ؔDT~05~HDv3,x vDݲF)SZ v7L>.iB*ũt>| 8zmмK 38ނMlam_&/Cqrd*a,,*j 76Q(ޡgѠK%13:e *t~yYc‚Zg:PHN42w н 쇶PYJN2 $潷D1v "KyWg73Lأ|c=+5SUb,nbvQ ?qhvǥ-q}oz^PvޟsqF}J'fgz[gMx dQY.2V}p OȓC"@LCabg=['J%@F^pίE (˂D:=֢!G-r[Ҙfl2[a{f%q( &3C=cG=d*Na}ۚ>-svc6m!TF[Tvw.2#DVqЙ>F֧||tA+䩠b aB EqPոIk{xvz`Sgڈ?i 3 |[YVjgko1co!}D* a`xTc8pT G1ӿC'%Cm&W2\T GpꮨPfL(Yj] E!=VX(!QAE:Y2sX'`"qlgJE4xD&P뙓q_JZ* Kӂp\EOIF9SoINkZ}QUIgGhZn+;c',#Y"Iq"0Yq&Lk󟋦b/ 6]..W^q gRN="t)=jXWW.Tx^5eU[cxuX7:HC1GKh˓-OaϿKWk)ߵG?  w\{{C74휞v7@<'[Or%0!-o!H4K7>`A 73Nz˯ZN<?0wwײ֪s71Vk|u#'|) a܏ᚋA@y@}S,T*mMhMiKdBGFNA^Zɱ=;&Y7`J s fčbpi喏T4M]ގ&:x?·IZ`pd{_rv8AFѤMᐽ׍Y\һV=8o [+maFK$])w܂'mHsc+JuW_>[+Ў45 :uCL*Qxaw:<+NnK9U1:ns#a?bT"OT%qA(݃ àM`X#"pB Ȼ;G#0U 9|G(%I mvs D8{49]Ye}9ta =MsaMŘŀ>aR. bpni&c$>qP,ա91$T4=,wꋗEWĂ=9H -[ثތn*⤌18T$b.@+ Ik5O]i}?`@ ݀QQ3YzL'xO^b BQ6f> XD"@ +yDBbMl"2Jh #AnƹKSX18!XEFzGw;;X-}`l#!{gi`УK׌%4#$"h} ?.F1}xLQv˗}[~t=; (bq0 , 0e1P5|4dQ-`xr5> hzuoJ!k2s"W*70tpMS uW4\;r*M|1}c($PkM>J^]ʹ༲]K67QV arc2'Ǎq;duT}r䫁`>cpąjck 8['ʐ^TF%@K\er%;LCDHg䓃)!l#.( uޝ~hpRBR"XEc :b2!yU?(vH }%_2C{5NfƁQz8Ux^_yfWGl\.e^}i`n4էs/ӜBT/$cK4ZS!3ļR-O}OCs'#B@MO$+iO6yM@P*Du#j%Fb td`Cߦ҅ZMNIS!VQ&YbcdCx;lh(G:tM.O}Jz,t< p R UN 0)[A;uĀ q<9(_]+^n \Z % ض71,`6=[w#M9tIϟ@ҡ19P5>Z_,%)5_l tZb'a>"MsaY$lnbszz YKtX,((4q%yC/:x]Շ]꒦,+tː葍H|S&m mc?>#H?2VdR8&-nw.%D7:JT G cH)ۙ(Jm"9~AT~Flm6 Jb4vrě?c@'a{6VgO8TE̗P1o*̖Џ`1OW7U1ڕ-Bz@epy70ڛ$ [AUqoj˚NCS¿~^H2JQI) @b>GSm[Ӈ}Nk|?.C٠Ft,:RH-֓Wç>]HCՠ\]Af~^PHM Nx*l&v~nriJDy2w >>Xe X`_P&A^VHU}l`)jn'Wg}e`+~L8dsakcnspZ+IH@A&(7c8 ֶBEd6T؊ uZi@W6QK(4:nN smB9VK`K ] jW (\tƙWRz4N`cAMŒC; cHÜ'G p@_qFL"9W.2EӧCd39鯱p$g$C^:w&c%zo:%B>\zѬ75G^I,hԆ ` rrCnb#coHz"/?LK} kX-_2X֪)S{\b( SK"()0=: by4{߲tU}7A)U˲u.Yyz5ftk ~[s嬾cX|;$T*6n"'qe! RMO$s,yXp=N"rPu# 3g͛ 7Px䤛.wc9t Q*BkmhCwjޅI-VS|uz(/}=#CCCKjn7wOy|#GbHvȵՃ/*l6=E3v4ŶgzTi= AxxTWUs-:iM@kw-s,A8]4 R`#=S.")bDJ( i zdI@2i Tu6U}5_TLHecPMkt/\R㿆 ʸG#сwP9+dXgqgee׶ği`,o ̌w0 ĝdnϩLdw(ђɓ/nОUݟ:{VBm Xo¡E)2$α|# 6f{s~~_je7Hw(?&q$Ɍ\` JZUBi.(5NbҎG;pH)JJ (keD uU˨tƘ;`vxw޽6iu2(a4K)WВ⪶١5mV̆-a!yb.F|ڴ ``Zj0`ݔ;(.&b7t&| 7f](m.uuy[*'3Vp O$ن'-IgnSNFCI~ʄ#RStvf-pNIoM֪v|Jƣ3 2)4AX"gAܘ_3tWxZ }SxEjM҃%CҚ كs^2c^mK1N,BA)r,4 LKkWWSjj^%lq h;3蓥 J.VF]T E%$u_6"fȱ. *87$]gkW`dĉUK%~lpa"kO6^v2;&!M_HZE;bqF0wti)Ry v{U)0u L4OB< eu> 5BcXD[|~Nx*[Ƅ,Vxڔ3lSXaCH;FH]8חQnF2vVx@ S<r%_w:eSz$oH=S^!,!l[ 5c ïPҵ(5c|y 02<_SFR07ֵb{ %Vu=://Zz+VqR0D@\}@=qKs @I$¶a4}%cdŻIyIdTNUMO]q8M\˕Kcwf,#[gZ96tT{1+f{*t6ʅ^d^u)VR`wR(Hѽ 6?)K)K^*Z1pc߽^Fl/uR(>QuW eHGmϣOtܯA{{]{1#,h'|V=κ]FDVݫS^$lh6h6h6h6grZW==cNm?ٯ!R8Dڹn0?SP2afRfZ<H)E 4c23WeKءU<(Lhk3>!lanͬ0Mxԩx˓s=-;]AK#b[aǜAM5oHҸyR)<0G+1=%[{QP"%ap8l\7ҌF´<v@]KrZhg 6GCʲ#2ra+ V+'+]  #q@@5Z\,(ta{D$"W#籠ԫ^R:0ƑHI>)_dveǜd9)I iT4)i8^d0IR!LG ETD3Jjl欈܇ rjJI1K(NAJSA)JKF@ў<l~#acb'BߍOB}\Z*D3fim+mZ&2M*Y{clƷ3?soo#'|H`o -Y>>CtNW9N1:o 1t_p}1Q:nC?f=EjL[v I’ ;غ9ف1|? Rc+0;>JzRm%y~G"fEVG2rdߚ$ajiL<4JҜ8 bi>rK-#E+h `rUDhCua:pmFa!> D%+SwNdC2vժ#nroC9  MŤe6\ PAbz1σdooZUB8Ir]ZIFL2 $܇1hQvn *S7S:QY.D8STİKהضU Os]m:QkZ䱬 Ϛ4.8,84"bZaIv#QH̆xwOGzt"6mO A/#Rц}^[ä82E&Pq\S$b|4X(6Pg ó3o'"P9 't,.,X/#D!@x^<I`LJȰxf;ކ%mCyx\fEpb0Ubcr884BJP`R(VBs}bd[#KGNP9@tk]#$@y$@A'c[}69iv{+3p߁Io _wgk+ GO|ocؐu?]S2kI=VrΤJb5ϗ?PF߫uJD!q1*3#`n8mQ&Cú+ODlp01Jܵl~]Mզo)XS.:(l,NАJzrG,$ūO9s܌λv|`6r_g=%P9,{+E"A,bIS'E?)dÂ'?d^$R^0~.卞}2Rא8pVs,0!8>~)bУv2ǐd5SMȜbp;5G7T%])vӳ+ ;0W0jy\I\)_>v1=LI7A(窺PzrrlՊ`18?2t%5Ug0OfxK۞E­ qzm(zn2vθ8],.vzNYġ'%yO~8~ T*T[C*׫Q`H;o~b%S7"4&Gz"DY1HQVCK8a|fv,hU-,5$ W$"Z4IWn}2ϭM mۡ~yzj5gB4[1:σpc;=+*- hÀiRD )P+LP0m:=ҿ5^mwct+Fc/%RL6&:=h䝝 SܭnBSF-vPF]V'RF߅B@ 1x_J%pPMUqK "3ʳ3jS؃Z$xЖ1TPX/کCɫ[0ut)IR>]~"L̴ qbD*a\L"?1恒QBњ1* KRx?al7vj^dYaWQTlD JFV` з0mݑnkR"RGS l~Ziʭw~#H"Ki0()]D;AFL?aRFd'qN{Fq*sNyv{Wg=c'8 s(6ohi4.]dv"FmK?ӠKKV0H))YwLb=(ZF\(KX+E'M$ֵEo<[]u}< '[~oEC,>łuD́HEI)+oZqlXrv]oxw~t%]Er5!aocf  d*d-F+*:\r!~t[aW0i}\*BU#aW~D3pO*wrz_B0ejI^ܩx$)S2<'q0 &9iS;W O\RNR6(l+Տ♫ۜUmw9l)r^Qi,? DoG>݁d  mɚ0&AwO%UNB q/<@V NJ˩Wʰ4J(Pme4 .,_pt6D(m)tlZ$xDD ;c `(<#%mS(aCVըA` p(QM>%TW1CVkmثywGfH!{aE3h`*`L#HWʡ O +9 k[=e+5C~PFŧEEl!BdPěsuVi rd&آme$1,`\L`jѐ'e1e136SZao⛹ xVwէUwAySu9dl4qp*IcLz}آ` I7X v zE.`7CPʞ;|1`Wr ıK YΕ$\y2} o@Y FMjI2]Em&-ІjV )%dQ Bh=Inw!QP5!l`-|J2zY7 fL0#$=MB'xѓZYִuA9QҚ%# ,biWZVTxic^+u)+"UT61W=)(S7OkW`ڟW}2-U-{2w$ Ht 5 F6e`G]/qpK9<׿BxA]e6,u[VmʼnL63mHĄ5GP}4.z#AGX\nS֢[ڲչZk/lM=k-s庸=&+OVx3ڕf]MS"1M]nm9qW6*jiSmϺP ^ӬGv^ XBEUf%/+٬HάqX5%j 7YŒU=3~_L}UqN:QvH5&(csZ u#p 1-yC̟o/?ЊcOQe6 +b0i vFɆ5CO0eEd;b*aE($)%Ǩ(] āl`͹`%P$9̠Ե:8NrݤQ1*\,Tvi W=50i#1+N)toʼ$-h?[;UX ?{BP,!=H Ι{j\ɦFuGFX@[lKMZL^m5ާM[~z6"L"B{4,ReF{,OV Ab8c~mRe!G}˼L60$iU[Г㜋fE#m5YF;磐芿ua-,[y83C/%[6e=1^ !<9Oxt=}fO:f͋‰[UBmK1Ct뇮͟UX";rۊ!£  B,FieҼ,ބWɀ8⶞Q0aQN<=1L6Xq` jXuAS۶ M ZT4 ؠUPBۉl+ٖlW1V_pfz@cKJ͎okkڮ~*w]@CR*^?Ufk&v`ߏle '=5h~Cƻke\\.g0φ3lo߫GnpM$bZd̘639u6 3Tki&HjtNacaԬ=)ގrw*rU{GGIL?|ݟ}) -E(vY?(C̘f!89~@a> 0nf0 B&w @ɌfA %QN@7&+QmnͰЪ6RT2#+-/Ǽf˗8pxɂ~=O\j%I>戌m!?UIŒjYҮ]IꬭkJ "t]Q_AR%G{lwvN%ԐjKWv\IoLP@ ԏ5;(bgv Q118.(*SMj 7qHHѮ"0'ZWq|tuk*rik 8Ws@u "m"~_0ĝߊ: S.^pe‹.G x0޸YM0 h>jJD)@9@"N%v7 0愧RdZZ~x<9rkq#׍qiZ'ŐbeGR2S@z<#I^KJ^ yoUv6_QYl>.nڬаE%hڨ.4ufK2jGR-U UfHsbDB2f~X4]S)@b;HR_ew+{&i,k*j+j+4TaR0`z6`ZLIs%BSs/Wr.Q+(_86ѠlJq9%VF:w.RXxGm 6[fajyI ;tj: UW-a3XL8o0JvfXno,q2߮}ܰV_ B.h[.qxx.Ut'-K6_NZkQK.a9՞}L_Ļ^G,BY_ e][`\{,N3`z:+jN />T-x?#nN [0i@/m^4uQ/+\'A?vW(e`cQ ^EJsɫ%pi&B:vQ?]1'zZS#S— 4͌mj7g\KGJQ[Mr25 -_a@([;B8+;q+~`Y\ݎײ#z]Z; a|'EY>_A\I#EǁGRz8m|go:lJ$f\ w7'-hz[}2-\ ~쫒8c/,*/ZZgz\[yjMuX k\3he5ÍYm@Ma!^F7TAjݳGD4?B-Bn81lS{kiBNm wMLE(QV|qO\Q8]KBiM0gBRHXToTC+v$\t9dwYla!{o!n"$bKRKף1fnf{`ݧ0dYßmm^KjP~i> ϝ hF(66O[ƄFN+*L6GEbQsw.u\]KG6LKZ"TjHq?cO(jl\5!4*ܦ޼"ޣ٥7(63I :>ʚcĄL;YĄ#Jh1+`aXDd{h C%>z߲PDէX0[':Eӡ߼kLieAN]aY(G %u;_֎Gwu9SKrKQo+n蟍k[&I"лݒv .yG`I~h= NΪ9G3Cb<'&ۿUv^p$S]m/Fzu7#R_35m- +%"Hz(wB&:?YhdEhB9?0Ή@:Pa`nAB$̸ȟX74r1.Gdz ?ē'0YGՙ)ƒr̝7l(# c|\Y:F'mà-x汖ߍKa۽xqpH t",iXZ3UqD{Mai"ShԱX֮|w,-kcs!{Sⶃ1A&ߴn ~34Un9>Nvf7-MQk\XW;0fVTq>QFd!&˳Fy:iː ɉ͊]x6r)iq&tg ٙৈ-˷w4("̧ΥQ_X2+a;ətdRg*(b :xھQea픗Y:7*KPe=)40ap\"[1- G"<#%:SKB,b5i6zD& ѐ.eЦȈ4X1f){ 7C`)9"vhd!r*.auWȢA"T\`:üPhP(6,.D#>O58 n wR*ִᡎǪO",ugsR*xxuױj]F7?瀯|?Zl—vi$ީE|Ѧ,ë v")Pf֩c޲?D{NTl.j !GlAjb`գG t%++$UVi=QX.&)V2}|uxB ɂEvE4}Aoz)w8R;ΕtJ@ul$CS\z ؐr3BYs$I Y:$J2^̆~\/E%ҔHfWY׿]\%lȤp]fSC8Ye* (KmX⭪(J[ŢǵBC ֏ Q񫙃@:eaADŢ,Y3r]%W=WE=#JdtuE2DFK(?E$Wa/2OJxf~xoZo}<>+^}õ趖?s]Iҿ+w &^倖HQA'%-ԆdEq, Hp0jpXGK;*Vz@;P-^2Xům:_8=ywqK}:>9f8dp7;i?:94KT++3t*l;AO{!Ko*;H(.'OSJ{hXKJ6w aicgp @MbutxYh>(]I\PGgDlm Ij]Z ab:ARdޔ_8@=/65e.LBB,=hݩFe6,ٔeʭJwJއwnM-mK^b^I!p)JLgĦ£7'VdԏgMImh]Iɔt6 8|ĭ?ax$N M+'X]K$m!F==$fY8NN6]B!Rw1ڱ=FgѿdzIڞ_c=jmZB{3 ys~<""1QJw 7hNOQFKjӓ-҃-mٲmޕX6 I8lmGA~>V>$m9Q^ @Za/ ~Gmf`Ys0kt!{-2nɤV$C|}u{3,>EÀ, 5JM*.o$޻MXtibPbFV].n<-ZR[}fdAK 5]X.(?oc=p[dKdUKWQ)AZvxR* @z \Bl qhk j۝$WR4Zƥ$&#,Bmӹtxw[)OrrwU!RB%&w~m8\4{@ ܧ!6SO JWqz r|9zdiT$[;! fPA6D MLw"vOs^(0xl=z?Ip[ -C+|Z=6{l# j-x ekB*qKl|7Tfx(^`d*m326FCTQJ~h߲,LAJDL*vܦ4\2^]VI>|l_/G$Z{c->ķ*s&K/,Q̤7y)R@sܹ(q͌9O\KvGRy$V9̉" $?!#%_haEH[n( ȗ.yYnɴk| FDZǩ.R(dxMT8.B// =$ힽ[f'ZUѰlcD| "/{& (-gGP5{D* A'$ x ,wfQmTF, E@8S4Tː Sy=S/Ry)t"!iAR5^HCew$hIM]-u#A9d!BOT(9>hG"axU'^Y#pռN N|tx1}s!ev9"\%NDrOHJdji'ׄ XDMVB'%.+o`)vohл#vNxʢ7Qe%aXQJb~d'l[K xO(1JMʿײ8Eg} E<|]TGǍ&h~RD=bh濫.>1@dNȨ|lbB+v)R@YM s+$E할ɘ8bQ.1z\zȶYuK50nxܴ.?cXp7#JcHS"E&qiYέYUDːl#D]'LOV03[3#56N uYhJ8a%0)ZoKBPB_ ^aWRqb1aHv2 q[,Kzspd=݄m{ī#jBgELЈ1'&#XM(x QكPX+[S+,>.4CgBCV(U*!(RiI#+xlp6y0+ 7IW6RhBeM>S4@j K`nc^0sH%ǷI0a: "иfF%ZjrEa U;Gє~Wc;8h^v8D%׹bv;\ox:a{TV}pbuDY]#!<5 H(.٫Ӏqg:&,AbVIع^ CE  .TcboRJAE\\) DP@҇NJ%A hs0ه/;vB]fЙmT 8kKe~O uGau(RnJ&mFhu$]#H)EU%S#iR4L;&4Q/;^qO> :c'&t_-9]d/iQ" Lj ^h( y!u˜>%i^EOF@(z& rSz?G#y G8D;C_/Z'/T&)ѥyLyvE XrÃu!k|8^{:ٷWiG`Y134H a")X6?\rs?uCĵ-a=eXz=#aP Ftl9(p͠@'z7G>b_C Xٌ5"$J"hY,loҥxb_D^׿@2T_ı pI/W |B_Ӯܗ/hN@\\4 #;ea`_[?Ch\T+KѸϢ%^aS9>*OUW-=Uk|V2;>S.ǣdV'?7or_Eڮ0Pn'* JX:/SE6?)庣k% ZN:La{=[8L֗l ZIh<ȻuY='`4a9] 1$mrg?#ï裉?Ҿ5揽z49@oC&%~}e|;"MٍKeuFWl 'WHZA(W}9p#f߿MʾI؁[Dytҥnme[Zӓ/X~4 >x?·h]?Ttca$?0 G-W({}!/!ռO#@HI qL7r_7t teuqKyC*.iTi򱲟 O@O5QQhX^Ay]q(䗜VJT49wqW0$F8'0/kn 4bMT!64",~Jag[ %nKS(GM<2V3dܚ`+=D~|(&,-+1BJ^H$2 tk{YVt1T3'Ӽ,lTt&fc8[UB.~"?*~r^[.b ZXbXET;N/Q+Ȑ{K!%gijfj-_05r\ŋŽpWRVMu_T[\Ov3;3o/-8e,_,D* !]gmdN8H){Ys `%P&0[Zр(tYQE}kPVReYC"7gsi[~cfNj4> JT) p̰ ,_S>cooll 7r6 5ѩXLκ j68DMe"S?4g&啼wYl˺:e:1ɂRPm'[`ܦ"lձޑj[ mwNvXyq8z;l!֙-Q8V˲ uxqXom5*zǍcج}7yI3z{2c8>کoC,Q ѵnWGoqI1 6wejNV&~q &x!U=#6h]a^c١XsuGAC7~Wh' 6=ޫ0k8Y&|nT.zY% P(ALFSaves#+>va.6. ,wIУYܴ1=; 1ƶUgv ;b 'ImO0uŪ y#!Hoo~e"T R=KI]5d-ra6VB_^IG1X<aRR<%=Sxu]ZJjއaXly}zN77lki/1.T㯯EvKIJ8˜iAi 8ȉV&ZXU`Us~,wk%ݶuڪNı"Jf_!D4Y!7 !'PNskQl9C’K ΎM82+WOdzK.an!&i;4OVIW,ZrC9 X)@Q+. TqB5bKE#W^5>ULNeȖ!hϩ4,y]]QV qpkjG@Ot*P@יT Pյt2> ؄$1R"$<-tFI<4PyylcmfAghfCa%oUa0`U㱹|:K[9e^ۇZ#aq!&aacԜ<$0,haՃA}B"\N ~5"WP05!mSjXBH&jP< L[6]nبXG|_qS;ezrݒ%-VXU軡H\C񷗓aYlfe5eZ&|ew; 9rtaZqx"öň I\^#4d\1p:ղ4@k.kުH}D`U=6H#M.bnZ/E_ ô+Okev`fD];T^+l62nHFH3?1ɖ7ݛs fQTULӖJ\?.mjb֎;5Q WgP5+OmUs" yjH/iЉ%8_4Ќu%hS'Iz8⥈2:I'֎bn˹E=b Еa)!M)zwobEQ|8hKjIvE(Z$ 57G'4€N#oq٘cf3K* ItixhYtК)+ C?nlb7=/pox5llZ/de"0OѮ" RrB2,.R&!=i^4$ٽ}~>.W6K#w TDH "ɵnFĂJ/lV>wi.dgV|wޠ;M=M>[ߦ %¹J$8ۍ1vQ h^|䝕2Koз)PP\7 )->ek1@`\P3R2od)cmg(t+2pd=3T,{DY$xMZ5Xс~Vr ,.Dݾ4'ѣ؁tN ڔ,S2&J*s55` Oq F/)^HdY(]ov|t JXm 9f7K CE*M,N*}u!BYMڊ}XfCQA|x6 %H^s{,sJ5v ?r~k/h~_,{` pDi^$!6]˹|S a\0/5)^TM?K9Bʍ@{W W7JW% O9EP CKa?6f3Ep`s;o[ܝNA.lPr TL?jM*{sn:Uk{aSpB ʼ@Za'2eM[<,Zroy3u2̦YW%  D {~|_&, V5w9LțcS+P~86z#'֢l*ox8<?aCm恑vU1ʦb|loE3Ô7ֈn̈_,!ݨJ]PTGoI+ȾEmYYq8Dc[r-|cc$4+vKCh|hx l6'ejj |IE55:Q /G6ὐVܙڸw6K*ҩŐNF:_,SsN '6 2ϰh(32䅁[m R8Lg8B],ŒPH?s>>|Y!O;>?`r^s_+JmRTp|V r,ˑ,[`y[Xn @6 "1O؀~:6o)Ȑ&YHťnФ2O6v%X&Jy,Kf_VnXFF~S2 Y2C[R9jV9?onEZ돊{Ufj}d"R*?C1QK dSfnA!VwU4MIWGSL&ۧǂwhpJ#0zrBoNnOIDuz˘^m7v|rjQnװnIzFѭ0d1be"<15U *qXbuK"K?,!W&&#l pީTS;'m3Ff"H,'2Y(AoQil'6 IKyvh>1d;ߍفjpx@q0$//fjlR߽"wVج[ԺDm嫊h%| r;,p:s3v? *VA)z˩_n -e|: i$-4qo\E>el_NWf%* 媢zXha\AL[W9X6~g”pPhAs @EXǺΊ"Ju!t¡H"3:K^quqBGȄQM=RK ̻5cԻ C?3u; C%KF)ҹwEh_lq!ܤxkOr}5t<۰jw7eVZukmu,1$2Ȓdȧ.:З9A(Θ &yM1P\WsW-S"1Cw-75km{L`গKT<;ltI,{K!'ˊ}wN(%4q$&5ЮI'mR h߿Sb48 b< d Sb "qՠ:+LPx͂K7eV|WoKĢ|B*Ұn d:dh󃷾E˒}1\8K9aM'\[~ح|_4eLxW&Zo/zD:֖fa[EjX(zEj .ڌ>*B@WнjV \c\Rxx W(Hn~C,X˯Ňn7xѸtiTp1X[ӣn -#^$Y-,^*0 OMfkr1)&Lt%d^gq4kxycY^,JdՐùTs(ICDhr WQfL…ZH'*ɘOP(GwVĮM}5cFK[n"ޥS}QՆ$ÃrIƔtvjn^T=rH?exRFӟ8Y,ێ&HJSf}O4JU(Ę7&~&=-5}ݭM,`xXVOXs$BV4*M=>$YJ|t-#0*A*2u1X&mT2 NdwgS2c+~d3[[lf##3.'& hΌ4l"b#b+WXwpZ\Y^Ɲ%-񅹤ҵcyl'wUW-=Uk|u-{Ch2]KvD?} tA/ӟv  \bs|zi?\p{h.@p:"DMn*tJhmEuFC-&)_u,sH]D5µ^$FmϷOWK ?_<=vמUWk{ `[7q_}yWkOlnw ^vH‹v*zQ?JJ2;v9 Ѽ0(M`ep$dA|8n3; !a{JƤ3zh:1$,prt񜀲 ƣaa.x\S8 }D^G>گx"S{m!'ۣJ-p4 ;AHf(F^V.xNUa@wJaN6 A#xPwԙW[0cCmvI:T _ ~ 6oiЂ-izA\WBc0 ] ׃Ѩ7* 9Z8fZnn56}NT~r(y:u M }4S8jZ* a5s[L=.Zb%qJq 8W*F9z&ڰbzC0بX%@4 oaەl,7"|:drluಪ\!VNxOQ7ҳ5R>uwڣ7dUO3N^ۀi֡VXQpEyjm}em}m+/-/GEЙ{|8Т4PGXz;-`g`|{`x>JޏS2Ydwށa1EuΆS#DniV cC`wp0#Y&>iKo]]g5s#W1puC+J90 )[,ɹ`_dԏr 4;ADtUmH,O;瞟DvdP* vLVjza?\V@8Shr`Gȯ堧+eH֔sTW ةf?$Ns_9R|Ȓa> . \%8"ҡ74RÎ$K-]3cu0Gk0BӟR!Z=xo+ޏao/4e,*@}曶h@MO:SU9qH:aSa8R cb`@CQ{>Mps"&x?R`Oǁ qcJϜ/+V&!.X88!Xb-$læU{ĻVr=i{8nQP$ !JEGsE$'8j<~ՈBXRH殑Ny1R=U#{YhY Y)=ɲVrG4vFr!2WV t LLRգƆ ҂6?fИ y((kLF|M7x8Nx v4rp! &$) C(jMYçOv/BAB۰؁\Iu,Ii^O#Jed`rˢɥ y80 9Т%d !v@aqYdAx Zc2J[-NigHoNĢf9n-.ka)ژd\j: }j+WגGA"uM Z~`3~!q(n`ԝ10!R-d^S"!*rQxy8f$JCzް-[>fQl`4Qw,7`xL7b^!k8Q+WW_[OIjgcXn|fcEs F=d,Kh TR8"^]jaw LnZ`ke>G(hJDQuTյZV?UZxoc`d^]g.ٯ]a^3 XWB .`{Il7]$άPy8\Y\6l˔ۅ2dv9M׸8]n:l,*}(a,גQ m'nwQ=|z6i{~?oo[e{kd[QO^++r~HvAn&輎- &vr]7? 7T]J*Rzk>lKz<6$ۂ׽-qWU]~G ҪPGUu@JUIlD];wZn]V }Ch0>-۫龺[ٽG (3{gt`<~5_l`ц^,mR/P 5} >~0:O GใYK.ҋӪFx)@5d]r3mhdٿKa!a=\ Su(/(𯮀Lx?Et"7kO; FvN]`p<V!{ HZD1T`h ~ y׺۴sC~X@W3xa3Io~W05&>#gJK ]r]g5[_H}<|?{N)yv7g>WD2Bfצ%k+g0꼜ߟÎߴTSX qyTLSX7gm;!e(J@I;WUZsM7 U٭m߶wXނ%1 쒗na_Q|Um9 }ly;v#I ;7#>n5hnImZp(y1ahKhypҹ`tNWn%֌da3=ObƪO稁.K潫z{WlAcn|жF48u%hِ, qzA8/ŝ84(I9hw+5 (h{cݒ+N\XM Itrl_U,>IC-+Vm-,vJ}CSRH0Peɡf`©͆a5٣H=wK`a䘭US5t|o7wRfWق$w f 2{UWq߿kn`~us ]Սms&g&Յ4g _2e&Vh1{6h/2-jBMEe4O26C־8z1xؾka!,S+$CLc!Y:sdpL*PX_JOUю=*7BQMb16 rd'n]VZdl)6+, eG(SIHs'-:DN4,X= |W,sVuƌ(Lm`YV".=gd;0Fb̀pdBU!Y|q#SNfQSJlny#MDhQ;B,]Y^8vWHL/SbI5msXm1<**r#b; 1َ;*{:F4TGܨv8N|ZD 1 >2{!ʆG!bIv./uŰJ|5HzXx2m 깤t("Q#ǜo?5j3{aV&G%h']pNa8}@]M,qa;5E5rd˘*](u&^|lr{00dJ;:<u%ob r·_໛ejNl ߅@8>,4 `Oz~!L 8u᭸ o%ZjRoL&z~KhW/y핕2MI1ܢ@˖tѩJ?ÕB} ToUӸ]/ZɆ~qUA)X?50 ?>.Q-ԑAzmUW`]*6R?dȿIfwXV^!w׭1u9O${BmM5q71J$^@ND&0XOEXՀEnt@3zZH7p?5Nvۍ:z )I@ |>͉>̰2,6~'j ,jI;\ Sx2'z`h8>GMohr EkASӶbk!nl-s^Kk %2 5EF^PLCeC%D&WNBD6Il-ɡ]?ڙEv>^EC69)igɆhM+"|TeQ#|~Ք@YBRvWO {P› Y[t(Ls]lE,o[EmVi0 0W]-̳?be,hXN>xR1r=ʦKVs5jwPj-Q?>ԫhV4aX(9>³_u=ND4SɅ'>|ƞ{,= hVSF3@b4wߠ~(M jw6@auǷe[Wy˺0(#r({KY{\Be9RiW"H\)g+V+"qƶ}TyEpgpQ \UYьB H.95E!(k>lt-`Gb?h_θ9ri.Xb6Jd߷fzN,Vdz. n/G({ 67jRMƽ^gȼ_]Vx(-(tL󠊞)nxc IUDPmwc; _6YjTEj kY#@o3WenC JMC<~bƋ fz4)LC_hu0so8Jnn $ J4ҺxoI@mx$BB`aNJۥMwh kC\pk^;sh%2jvx /4WJ+:S:jhmuKuu*Uouԙξ:V? `!Z&(cVvSԀϱ-T{T>ʪ"S`$5 6 \mk6O[ "#ߪ6Jkhe=SA(RD ƣ0xh c5vh/TN,8SOę8CY̒;4CBѰfs7pXJn؍=T`Omg#v8T 1!Bu-GD ~]Ɯ'|f%;Ӝ*ϚQk#|Nr%֥^߯95xeC5&0$CUh2|z~~dYTаŗOUg@:GvŦ S77M}lC> Zt{ jEͽ\Ȳ [UlՕcEC[q|3c)'ӌcj12 B4-ƦuFbճ /6C> K1u^[zBu& -$a=r4,D]B" p7]|=K좧ڃ@{l&_«R fGg1ʷN݉a6ܘ)=:1~+C8T~2D}~QPA[bއwG E怭rd}$|S`-gFL5H7W4|ѡlTҳ9p љ\!K";̶fm5fC{#.6JB*m 'J;JOb*M6ӻxDOo=}J"T٦?/`]pK*!IU{?)yo@3|`Jd�$ݤCp6獭lw`]7"[|mC ;njES[Ź XW[b)KhJeZ|vS?wסmķ |/^G zzQжi~`~p6CMnmeV1WfҲ_(5aa#RԔ%ٻcTCWZi /Ai a@Z ˰_bXyS' '̫h3-#bܚ % nbFgܜCq=5|M8 # +yؤn=o[!qrn\ϴ"pgpKfZ*Y`I lCm[!e/ls}&44!1Tn47N/x4 Tf+Y83̈́v2@jo(6eGhRơOs {zêB` 6TH>&6AW¢LBI'cV~E=H'ټQso lp7>M‡8J^S.[(^e=W-ov l˓.VR0Z%\[b>ffȖm51Ƃ3CڴmzX*80>@8l7F[+$ݥN{DO3)Nqq7dW1]&6Nl32{;M)LioJ7qA9a\CjPw`ܭl- kn4-^$`ǀ57[NHnm-{>ZմU''aL2yHs4b77{$gk\q߆| g|S~kL$;{p8ޏ1^<\}`QTc'jX ,thG%~1TteTlۄv&ýWd2+lin#XE~Q=y`Bӝ.c̚ackҲ"նm&83A`Y2bh6>f8XKt˔7rj]e)&ڌxz}, Z(bRDuz2fPŔ)Bʋb^4!J,) Wq&(($kXaUiwF5Tᥚ%TP13+OiܙiǪk,CyC2"n4NŗWpɋKV"sbS.23^1XUv0z}hKy 1bu-3SUDThݍwjF|oC,B5rnxsسzv LW*&b=~띳fr%4N9Dš>Ֆ c'oE}ތ]!$? ۓee0"$FF"mQfHekUWϧKIfg@H>y\r[eJƽڌUb,]?1^ͫ"NjYPbq@ j+V):F6zv-6 / UWYRY)pT/hRI ϕfČ @_CڿcK6J7jc.T‡}~r|>بIѵkbAg>3cҖfvaL۾E=$wlg^}cԦ#댽yM0L}LkT%e:0ӆpM2n *.o*;9':JFqO8roGMʹNvwg+R,VVdOJ T%TI^XZ{.O=X#"耤"2~dՌu%F$1[ڵGr/ۿG l @G#x?|:[sy1lcU_T0틪k8v~hy8<ة4Z0pVMvpk { a'NU.a-򗋇 :Z<_e}%h%t,)L# _<@5^y䩪qb#`*^l}K /& j6|T 30;M3 QLc_\t6&L+ɴȜ72 5tV[?%LTg)@nnPůfWg1;@ŵdf,J`mN2Z#,3w]m/"IY;b@ aw㔭[Py] =b7'owC'κ9gBƣeSwBuY[D&aʕW .B 8R[1_\wo!T%wg )[N vF\ ٷƅVǎ-w :nnV\mP,&;SkS=g[{O2QL3 ~.N!Kkl폣nri4id$ȩ4/(]$#.˔eMpRmT%' +V]+Z"aS-P~ZS2>$9I; $u86,R j_nXZn3!cmԊ-wt-[k:xN[-LtE쟴lhz--t 5 38cVDV3PYi^ίOiT' vܟ@wfD(HB1w\ p ƻ>&&@D& CIqŧ凵MՀ͆ =\q‡?0%f(XxAep OtCmZ<Ѝ䗆E9 礏 V)j}gi7\_VyMG$$ cI+)~lEIkVTeiVj^0Ên S3JpzjL9'? ĭz|(fO1zꂲr!ia8N1`W*%vi`-Hra0w&byQbH)&<(BwC]`q-:=`LW}8$þ~mՎ^Q޲ 7ͮ7u}i8p↋TZ\֙ujj" zgАv" HiMNl#OGs?Я ]C?_`OQPKOoPwE_R Ɓ럍L(FqZBױ.YHW33T->//iU n|c, XpD^ǟF'gs8_M T MN(:9' _iDvwifI T6WÃF I6 lŊ̨#ݣvoa4[' H)9"wX֔ƇƖI % wc-1oQHEuط#ʓqJic$~keZR0.#[\˕lIՏ 9t`k,J_Z'%`4*mQ1Ļ#('SH k}f6Zl"zamۅ3i5vi8Οptiئ̲{\&U8,"~ t6MtoSH۴n$, CI63&K (~QD EY"*+/s]}/K;0L}{{YS M `Vu485zp('aѥZ}Ow]N;rT,wG)tהrֻ\u.U킕qwv/LZkq{%̾[(NF/-ぱ*FGmuPKjcjihOK[F e#!#=8R[dk.%Q2yv,j"{ ̚kW 'H dk8KS]ܒbóǻ bUz`2 h8Z+F(HbPvTkPVbHv)|cqmR/5@-<%cCIyޢ}KЩ8$ )© 4y 3ȡʋ@!4̹Ppnfd.VH& sa,fP(򨪍>WT( x^5l?zu_(. JbV:L#jj7^p7q&Do^d+VJHlm3lV:ajR° @iBD¨UDAUn`@@7ZAͬ-ju#2j)YCt2%8w ).fhyvI|Y2Z'E=E R-k q#Іyflgє"se&.`v h/ͯSqb*Bkj 7C:bX iR*etB`97G-mj ތ]xcPRР8TD=KhI%a /,`ÖC`3h'WKxg^Υ$v'䧣lX;a R3f9*'XX9w`E\Dnىac%FMC+@gۯ\GSsY49gYga6|,gfDcw[iV@ƬDA1`/qj!swf˪]EM:Fp{SphVXiEY5vl"9'20 E N완#ۺhʯfSw**גUv*zlMJ,RSn6/f^c5cU﷩%b͚ Ob’z+x!zQ2V;յ1cSBmV^%)Y}Z/1EpX xos'Jj_%KƋU>[9tۄsu*:+/`*.x"`=TTvKQRA!'#:L_e,H݆^zS>/lz c|Fē zJvƙqa:{әg>IW [Y%INLOILhL GFN-י!Mn$} )`ϽjH;|S5 7ѼQ 18ǟJ`񕢣n=^m /2XLʡ̷)oDta|*`ׄ00GÄ@8 39N'a0I،0I$lI$lI؂' +qVpVpVppټxWs=qM8EݪJGc158*T`niZiU,UPoR@7 kj^pV{U,t$G͎܊$!E1<7(2-tF/C Cdȉo yEMLJXassnaI#Ge2tE "HilZ BCW>C[T6TDF#'O*/_qO}Lc%(~.z>4^=~^F.oj#-]bƂ W/_AzIgj QZ$ 4ʶo٥TҔ]{WaSbHl! JK5H5`U'}?ۑɔE9u.mf,],iFw/&K&+V`cBNd)~ɽ#Ian2d!eu@1fꔼЎZܘa~5)Sӣbb)̽aaӑLkֈ,lcc@p6 Lg$;p [aDiB8D"u+I/Q\1 HBal ͬsh5Qpm)/p /Rub,KUxs߀rJusmb1DNp yQc}lc_ѭQsJvj`79 49*! WQرh0MܱC}vgEW[99 B)q-|pz$k`~siZbœX[MX7x:LqF.@&=Tٰ,7ls[3ʫgL%LϘ8=#(Q|!N+#A0L'βU~J)PP0y稹82Yx0(.XYj<T:(y1kxZ[sy¾Ә r|dFu!aYԋ5~#dTM[^0UL}+Y8 9o J> n lV'ONQq0)ϔs޺qgƂvo>l:g>(u.r\PNgCU}L~T'x9#Icm(!:l:p9o6_?*+yP"0.h "89@4W̗:́)fn):ꭰ %j%gQ"1Ao @JIʜzǟ0|̕ Z墅b ֻ2N{{Ʀw\!f/iʒyŻ0\48nBwU)OzM9i-21^28x5/+ )=j(+f Z2= |CZ4-R$rHGsQ 7LQh/'f9Zv. 8س%91vf~\*n= k2$w8^aMyF&2;&XC2 9M"*j* 3Ux*58n=7bx1 \J_Fh2쭩WCa.fbitW9p:kgb\H¯à{3B؊U/1ŘuI*V17/yEƕh F\Bɨ5iHh>)zge4O--ѷ&T3]PT K:$InZE!ZBɅ(ݦ&&+1[tyt_v-NXe6tph0aK =GPdII 2KM+߰^鸼:0)ptmtۡle^@{)ܼ{vSc@nU0 qP5Y;"вf>JZ+1dn$=S5FLZ3@gB킡9թ |f筺d5joVQW(ߤS۞g h˴5~ڊ5X6Sg6ܧZ%^%S$>U-6!$ch YX"׽__0^b3T2< qIV2C~A80xzn^Avw>hŇ|bVa]N4/(73EU^n!e}eZ 7bC3,aL#XO4rRnXJjS1 N_ʄ/ m9A԰q.͍zzD~=n۶YHPa/ͣkMCoCrX]{ڶK~4냆ˣ=g јjA#[Ma}2ZD,0LH=h<ac֌oSMNQͮ opk" =T)Lwh MIWCffZN'ALmCRaJ|6 -Vmc B:h8SZn*BfmTYF6S prQ͡)ٌz]ߌQ[7yUAbu5- cL m m&453 jІ)S8uORy ڠyLc:&6X1#B|3[,ՃföH XTL t `J 8<1>3Fxc:m@1<˶rzͽ_AO+6쩿֘'tɘ Exӌ aDFdtMܹV [Y P/ [, .L\Bj/ ii4 Ht42@BY?TZvytUuhSA ;EN\>a%xHd~4w#q@vj@uyf=R채;xU+adȨ/I2o,i?0Ųcׄݔ4_Aa_rZ|_ڶdy+i{ Ylr:* ph<^ :(UŔ|5uʅc F(fn,֭)[QMj,~?}ZBYk& pԹRhI`!D+Dq+6 ^ kКM Ek3Y#Pvxk LXI`u0^ j}h˹Vm\RCC/V//_20MQU~* ys .(<bXm[,S鴙FLuG㍩{`B1 &6y1V9h;$&'}1s=esjV?gc+hc]*ǯ[sT/?0a&=5ޠg+hNjVmy,VR{>8aS041k2oC2xX/K]bELY@Ɋ{5&̴XV+Rf,Ѐ8 $M1ݠ껵j$ nEQǠ&, ly\dg: 6=OOQg٧B?f J@UuVm/> 4Au* P*BT+涍ǝ)Hh ,_0R K2Z(ș=p;&F kQN&ӯd1{9>t9Qif?60pnƒqk{͞Q`5@'Ik"UMmx rQ@V8i(v fhHnk#4ʴR+Wvm@Aa +P?UVhSuŸړۦuZ:QI[yۆ0I0(=s8("p> A~4Q Bs]5I`馀 '{#ɓ-dO-qe6c",0K|{#wpzzRά0FpRY C:: S( 9VԘJ=21< #K#L†c|RvQH3"_ ֻ@قl#jF{ h"|(AL/ibbH  cV-a_ ,#$w$0cszq3^bnq/f$zItjb$O\fN8KFvFQ n * K6Ԇ"lmf-uɼf'\p`Ց}zj?Oa+"ׄ-hq'gu/3`DgEL3餫y=0a9>}2GӔgQO[JUob<5qtdrT0{q*]cdcR&áQO'@Vt й0SyZ"S;mWBtC'AgAs Z XE\B)pd܄1t|yh0fDuqh^WPy\ h+Dc1=T)DyZ EѶ^@Z"Qp ?S㝝\&CfPVҼ6Cgz [H%Yn RRQx/ٺ h{m{oyoCԅ~Qqa>lb{ m$32ԑNˆܾ\ΊP?E^,6 ䷊%ĴS6墧TN^M=d05(g!/5ߌQ TT ɞq8yS MS=/di<֒,= f;!j"LER]rHi O"sh0.tIv5880f^)>TĀpߊ} c&˄|~CfF[*e1P$KLu;"JLJF5RıLQd>RGN6.nMY`dw.E1GJ~フTv_PqnU?Ԕ+,f;7*?l1Gx1.8/4Yk8hdA2+Ma˭ԦǶ`@ƂmÜvK̪R<0ڔ۠ɲiQ%cRjY!oj[ega?Il. @\u_v۹FY\DJ[m /Y@A Ԛb ?\d9+¦2}%ry}ozӹ$R)\:`5SNMyw@wUZ\?e'+E330Bgj< ͛1'!)活a_-[k RĂc_a3Rv*(89@/PE= ;yV[Cr~+a4V]S ˵1IItlʓ2>:195o*8HBW30rfAӳd*Y\XG3N|QyZAL D'r5$ay<(,d#+ 0NNSV1"eA*n(Hh)xCҡdg>%;!$K1ET*l'iڎ4'&z!OFߙf5Z:8fH/}QE㰽4 M1>0X\@LtW /ߊas ˌ45q'@>ƣE|?߾9}0,KOrKvƣNbD9YE/ WZ*eXPpp b3h&N@QpQIu-UL),t [KANaU5X8x;pF&i5wTBrFd2]bT7v/;S-ѫ:{XaбQ;N6ף;k`099\(Dl䏘g9gOX=eL} [ɳ$2.eRz`"fIW*LF_u{XTZƇaZ˨AcU j<^<G%p m3K$6Sp2 WSJDd7liI9Ť),smUg;#Z!+Z)Uy]oljtvלxm}V}z qEֱ *ƿeLHq"2& =6azl9 yE\)zfm6hg\6$2yf NpN =HTE5L%ر 3ˁ1SQM6:d"cgCkrے 3@h::\%["ҡ(҆Im9 *Y:zZ~ۆt!]oGd:K~TkHwwr-¸ ô*9]dCfl%NV639,d[(l4h/Num =_tֽ׶T1#zm- L&PBhz{>BQ DDF/8XD[?; P wi[%-h bj ;c- iXtTףz(5JGE@G^!wHaQI_Y(3 |?i4LEZ+`DhL8YI*;iU"h!=͓ j>ce'Vg6^!-Ct=hS)ǚ,8\i/͡4U7zO9≉XD NbӸGN?3-`̀jr:B6gI Ybnly^Hs1+O2Y. BaEݪhSXs)/9*ba=_"`{2Os\[Ά.$Q?d&SZأ!DNsb1ڊ4B+Õl C!f0߁Bh87ʒK;,A E6Uzd^(NJ8A]I-$glY[PqmȏYB_doƴ:³U,ǜѢ Mz9BҤPYG]- # nYSoƂ/eOu" g{$D/-ڄ=R|4dfǹ1B"W4egH"lJJb:e*VqmmK-9s1V.Z2 "Bg*fB^4UJ Ձ^@"`-La`"o[f%TNk4{X FJ4*p#kS)=U ژ+sZT1aJCߠt|I<ʤ_ t@1N$LŽ(^]hF0rgE6$H&aF*0HS_xVX\|~ T&ȓ 6^eWūPN`ZmNU.FU<sV -.[].9WWpl?0&+bYG}hy*ϿimBv ɤ6P`|DɹHL[d&2|](I"mKc4L 4qJ\*Ƀ%Z&RBYz|[FTra*vyʾdz4oIVn|rOp&Ilj%xzHΙE1ݣuO[[)l6 HA_E|B&"ts, e6Ã~Sp g]:Rb0`ڙlfE`r%ra@ 9v vR1dB" ڤG°gChd~v5d1!Y9X9rBrTa' 6f }t)ɷ;L,t^ÏtW擉"`X8grbnK(&hq a9^0`;](nzʩ2b7 s<{Q++H̎&-HHE1'rFb63mda%eÃbg ":0RTJLOyTLa&t&uK~w)mPM-NGȓZaB H)gd+Khk٭g`<M0 zYaS>tQ`ˊ|e(pjM2$'6Jll`]@b N8D?z=QamkpTt̠J{Q(fZpˤ󳥧9]B&TA<7aLPàE zY D{u@5>2ϸj/kT&hĿz&2@Wl*T@J+UXo10ɉHdf(80=b;u_`y snZ$IP:g)D3-u|&:&;,Əx۳)P)x)OaO.+gd܀K^#UgTf$LXX6>!?-C:/8K:)ڮFڐ)мAO_ >"Rb3x05?Ay4'.cCDе$*fv^0(حl!c_QZ\VFbE&bٌN21RBbwR ôQaZ\xGq w8h5;cb*& !/@lfm˭!r&1d`DHfk:eFT.-TsOzlc4|M\-+$7KfP 돝DF[+ YGȹ/HeʄDbgLWdO|K3:y&!ui fVl[Ґ|h yOm#,[8 3TSjYҘllDWn&f&۳\2sD1XgNWȔ]JS-D߬}R>%hv$;P;0,LfڬN1*Qe_7 Bu.PB˱0e%rJ:/9N+،;* J2P- l#l`t&3_t6{8 *W %_1[ `8+[I,Y lzq>w|B#s:~>*Vst<[)nFw˧ժ1 ɷFkQl6%!8kVQA#l!W0WU(/pX}q&1R4Um~ax~Z/zI/U0J|/?O}Dv`GU{EgU"ݚEr[td_bF)#&b$SyCA2NI``jJ,gTkF%VBE:[ȠOҙ6骗 M,KK-UaRN\8٤M_M)Χ;Le /&vmE'nT_"M@\y]ϔztF!C3! k{1<~- FcjNˊZWKN8I'׵85|a\z<^⁏ :F$(aFQ-Je ~ff[H̊HokŒS(8þr,+wDVVGHǽXBT6JОHZ=˿`"zUkG,Ϊ6"f  gg &@μ1R#gUXzlz{UTd,k4$3F<* ,$ɻRiK,EPJ&YY \LnOZbH(fMh_l;k>Ib7uB=0 Nj^4NMf縊'>Z~Ͻ6xVio0)؏eъ8yA l)ij>Vt:nq#hQ45/Qjq EhJLV L 3PM9XjH*|u8,[Ci@\+cA7&К|vd g1ɒnKE1C63u,2!o:(&g2U*m-k?f =T1MxCKկy]nyRly[$Lɗ{66zzC3Q ޳a2h@4wR jB/:>ǜ%旚F?8BY,\e$N:.slnUe\pZ JezCҢIS#ޚƚ܀f,^+ WxZ2O{d1~Ki~hTcƺJ6ZkD+JiUT@1&Ϲ _ѭ"=eP6hdpd4CeahrQQֻghoEM\J#LjW>/XA9f&N}M4NGh&$;L g-Z?ǒl5ZڥMFK5GӒ x.QS5VOK+%j}Xk2hZsBi8%T^.pzGVeO- /#kK5^ct"f R[ltvAqXz1Z.R&2k8Nm~KdС&Mm~InЌhbg S1#KH ,?N%؜.ةnoN6mD X&~5a0RIػr=pPZSk5Wa: ƥ]w]]a%5j(3K&Mk\r =$d`v b*8궭t$*VH}BcbjgFZΕ6GѦRhceCB2^v<\P8Ot[> 7r G3;(6#×ƥC: ȸ[,#%XY f⟿ت+۷т)_Xhx`+9-pV)WP0&nW50Ԏ3&;v-V+Z3_t /oSy?҈Q<wRl>OѶ7JzrtJ?v<(F5`S* bT6Z7Wb} >n;B@Bn5kCEc[K2h`-ԍ3sf"nJuK s6iJTz V&C3ثܪJE&LP13Hͩ 9$(™eki> K*^ahoWWp1dV12l6UWYR0 yE {lV@T6RMzsg~;Ř:Mt6'M،`2sDHYr z EҌMbkX+$,i x vkCQƀ̦# GX*R"0x1'oXz_4i\Z %b1A`#d?uX^o[oe`LZQ 9:X<ہW_jXR'SYލ$-Im{&hNC R,TaĜU'8ʘR= Pe{F%iD {(~ɣ_Lc<(+6# FΎ43)Ɉ89q0?`IY ,':5#4:ܳ{E0H7\ ʦ렰ZɊ+ʲxTнVd L-)]дHdT@hT;;hjUFrYWWJ'hWv+HRv8r4\qI*06&eK'EBe*!9$: bgۅA\(fp2<~]c,-hgitb00:3W 8}3\.Cu!"qd鲩`cxbvgreKrrPliU{ #G4T)#M&cј2ZrbP s5G2WA6%sJq}Q$T -%A6[" h%#l\VPZdv, ~&(܉sl|FdKs2SdS! 9q& Y2MዙeĽ@^\js>ڝd.=O X`MpjP_S"Cel]+|voʦ`(UU0DEIb$ L  àW_LBѴҡ3EU'I_XmSqѸީRB6Gn"9Յ3I !}(Sz5sD*X J|xw%Ņ=#DFC>8f󤂊iZZlvQY_ػ&[眻oҩz\ngٸGaFpUepނ=UmrS 9Rrk,v *Q7U@qg:gS)X@ݭ&ljd>ftiD.U+ Ӭ /ǽMEJJxdK'3"2 -a$ u $qm{يyLPcYGQFFШHؑkw*r.bG;)Ix\H++Dl:7AQҐnGkȕ0R5<ą4$G/q&J I&ّ,%u hҞ Ur,u=0Y!Z mS3vhbw٢gY<dO>@"()ب%JD2]Ҙސ4DŽn3xA`6+e\BQϑHZDkm#o ('GRG &AS݇0L ZM[3 - eoص`د]D p<So-x*Q(,UDJvq0QkPloh[s`'$X 5P[khQ[St[ŠU]-lgA6"|Q~ `EE gd/zqBx쫉2˰d=S9"C ٫)5}ZpPSS9-2`c皴F=4<7FU%Bm]"AtWr$"UP2PQY03e9w+U3r|~EQ>km|NnV_*[f.Wk fjw:unu\tNuVt@ U0*Ye+ֱR@FZFtuTnuwWvvWV몸Tnxm:srm>O޶J:f鱎yTaY:n^1M*0ZyݭxA5 QC(Z5۶/7 vt A:=]`{/ umog[{`;5IݏF敌]WN8!81f%|ư_՘Hp2J0Dt4=l i]6`c]CzdOO~;졧G~Ww+[o[>y_/o?+9KO6^^ϧogo}:=}~~Fo"tS|=m}{GWw\߱zo}=mIol?❷Oxco>/}s?|jGo񂓶`߅~~ϖ_u}g﯏\{Α[6Tʋ.wӗۿ;wkO8rշbd⶧~3ӫ#=6{חsR=g>q÷^qć/8U'~y_\\Ϝr쁷W_~o8Ï?Km~_;7l0rwagêUꠁ7xao~y^vi1G_oJ&_oolz~MOo;t|IcO:o{>Mvw3;=W 7wMOΥ\rsq0vz%c-x=G|կto~63/y{znouϮ7٨rKۻZ_}=}7wG_h*0BӋQF Sb2:[(cj)TvFg<ƪLgs #o @m*El&LC:;w8[DOF+^ UA::VaktlffpJ{.a {VW`iemZ]kiɟvj]iͯnapݝ6Lы[[Adi4<5X.`>63h(+J_:e_"Y{ Czb9BcAz[)yaύ ne:u'.ޕhmA=o;+ߝ^V?sk>[Io;D :ur 40yp, 2p2{]8&l@JeNm]Za]p  u%EyGSSlҳu3_OkV G8X``3-f?6_nF|{Ak~xv%;[UO~|x| 5ϑ{Ϝzmoyp?9WpӮauGq8p:ONϫ9-ko]Qp|i߿d,/Swz׍y;?ں#rGM~u?F)ӓ_yo,\?pfz{>zyӾxmeo?>+ws9㘼7mGno7F|Gџ^~δwh~{^xB%~>WW>ΣrpߕoKM-ٻ>8~LfK7|ztcmSr>:^xM~Ͽ_x#>t;߸^#'9p7~?zͫ~'Z8W\s+&O:ο|h?ϼr{ww}g=7f.9p ݰkOXN~pڽL=pg>?٘d67W-wa5xgvqk ųϸsK~kzۚ3W|o?>sq:66_)n 5l^_g쟾鯟bcgwSp7>lxnSW\=OtWu摎mW7~8oK}sБ_o8+1SN]K?.ϯ=캻^W/5?7?tUg}o֋ZsYZ}?-]xg/nupnr̃7w^x3]+¹}ONNv:݇yۛ?zk#&__v֝=ʫ7gz{wbG'^k.=ç^}~yҵxyϜ>pW6}};yϿqv@t7.~͡5g?]?u}{Q|wp'c=آ>ok>qν6MOӚ[;3%o?uOYo |o_< ~QMw/pc_x!c=eٯ]mؕw zo[G_컫qwv.;kWy9kz<9pS}禎8m/9롥+߳PEz'_/>ŧwg_~o c|p/Om>O.?Gn}{r}IoGr;O#_??w/?-'ny>xԏ~_=ڵ=_x]y[{<3NݾO4xU98ď 2643Pʪcc ZXD!'qfRDM 6q SG|Zz[ȟBN{=J [8kE[ Ҿm3 Q>񼿏QϠ%q=Ci#j ħ b:Cfzx$jHDUGHƙSPJ%,XG2~:??⎗#DQѝAI#/%S+E:S8nf =;60,=SRa:iG(N> RzEyõ4u [h# `loѱqE /f5KYu>)Qot`L lbW#zDL MϢW͇ V!Z*}Ė:Z7Z~\ b޾!i]ńeuV! E} A^b!5ҷ;.Ŕ}n0ROLn8KR1z &](ˢM%pmV?K8CF Ui3)>.G;?016g2C'9R+(]q,l]Dwp~O?%1!Y}TeA+NϠqǀzlFCV3""4ju}5XgUڎX'.Rw/QqyUyyALeׄ}Ҥfl8X-NBBN,G勢μesM0é֊2mVɻp *~CK̋sU aiREFS"Bhka.$r;HuCk1M#%M:YugJ@ԸwyShʬ𝸖f=}uqdnwajlvZ)XnIϯdb.\K` u1ΒI1&{ hTGCGn\'m}^=ЛB)(ζ@,"?ŝRq`btҕn$EG+jyMX2ܺ+`}ӧ؂6YƊ+B9/SCW,{t5&y~j?B|/@;vK6|Vt,9Lrl aP1Mn]!)J= .}8-ʗ:>3^"x(P!\G:iy$4#B?B@g m lqR::|ěW"þE|Z]jsF}Vє0x^l 0Q rF7(o#\?X|JA]ۉNby4sJYeeIWϪ. lL..noq4LX,Nk,*5ў9NazͿm% Ss>Zw iʁx j'{FEpi3 aWԫ/ct W-pRΔMc01S)y؞#G5|[BiDn&PWÏ g qS>J)pH ,)SF2-8Tfx衲g .{׶'^ٚ@<2`ǹꅔPG@ntCÄ r):0H3%x{ [eUMAquөfNIwr#K8F?$)ID>9]t-nH:n g<џr>!,Ĭ;*sa|42#r$6Ӗ1 !y紱@\7YBGטϻfB/Q>KzKNVVUlUKW37I]K\:&RsWmlnQdHCs:KFιߞQѱlgV2P֗|zxhߒny|.A2"qߪj pZ&Ӽ85iapVEb(Lݩ.$dqݔ:g4l0v5sᕨ{ٶA_;d 083x-I2ĢkTC>M#Ҍ$i\{} TRUk.E* @U{4@s{Xžwƽ^(rVi6x,zRTm u,/,p Ӛ%N[R/[V. &x O\V=jK/`l@9IQdM-L` |nժ՞fcwc/_DQh^WC[]B4taOB2 qȐ VycMޫ%~~F>'mI;FJ?'~NSSBJrk>R&,'L~;0dtYщCn'*"?;4OP_DwgDbt~ZKJ/d5vW& uS!.M ;~l%g)Dr鶆OhAFLM:m rn6(d /~m58qbbc5xι9,b=6QhXhtD$Pڇ UhaQjgԋx䌦HHM0n [!$;]?ʪVt@f)++5ep/1mqgqc~g߉;hZ@+&y ]B \|LEk:%2zz~ iX )FŅŅ/jT~yHsx?IVR/ZD̝/ذoD%[G A6)i10OPmׇ--87Ю&1&j9ܼ*/Y\jg-<Pۖ#fgf1 :LOE9!쓓ZYxO/@ g*x"%5 .X'ǣ"Dd,%u8ǝW xu^a0akGQL2»mZ߸4.#q0bvɅhxZ[}Ϟ.uxA'0o.Sf?R-oCRK{oKZKcG&؆Fzw&8/~Gh!=L"CHOH8).b^0Ck'" QBQQB|ؚ7_Fh8!}?<_Ԝ4GiQlߒ7xYn+jF=d`FmJd_*m39X/̼N) lG/w)9V N4C4=;eunW \K{N,* TRj)t+ljw`٥#PŌ'nZS.s5?yB("8񶠎qwi ؐz@!"F0Si2YK~pwƎ<5MqerJ1 "{5ao Y,J9 Yz怰w3@v׹VS;7@l[jM'<3T2#BȗS~Ga&/mD] Kd 0 X7NNă NN$PP9~l^0$@/[#4*&_.F+`\w*IQh7oJm)a\c!JTE} ;}^ߚf230zJݺrVGE y+?GoLJxBJN]6'PPF&NZLp޹, oG_ҿ!p_K?߄l  N4DQ)RwIIrywT|_ P#|G_QNO@'dwzyCw;|6w}Dwq|Tw u}76w[$ddagžWY>|`O !_BSk'@ڕd~b˱-;_WW{ddE?G?%w?ˆw~v;7|߻佳 ߠcn}7xIw[/e!B.6q25~~hS|hWCcyH5A*Ǥ|* ;ҝ%DĴ=H8H^l08l'7]1qRK]/?4*vv/)}Q Kz?an<ڿNGEM4.:5G/^TVF\+5)5Ϊ!$M&/%b$j$s7j_pmnH-q7{SRFNj %aJmu.1ǐ+zf 8$OvN%F<ᮊ 1&-5Xe*_D7yب5 F[ەml^Bywt8&R} ,%H.6+tda{S76$tWa턜 h‡H꯼NG&*Qm#tsdlM ә%?^(v\|&HWԍ ʑ;U Zv,;h/KFD`5)tمɯhQVThOHE%kS{sbml}NZOW+kxa[P8@sEF=V<\K*ps12c>r?jk"7HF"D0_,կK:-a&# mdKIy$xq $f>8"kUAX~Pg@v{j9\L1&"A jl Wi-_vpT{dC60AkH/ޏ~.Ei{ۻFoMXso`B+CrJ @҈1,ڂ3NQO1Dy^[5Xքf(EP=3Z%zۊɣ"RM[gCb <`ϧUD=!><:!M]WH*w0>un)^,U+iɣw\9CH=Dh*-;`=C&F2 gG5 VA#̀fYM:w\ABT$IA*U*<(.@\"2L`@)%,E>"湥#woZFH4ڡey0d5e\<)כN=sAolr1{Z3AodOGJAA(1 jQBO')<0L7ε\&X&0nㅹr,;]XJm@aKԡ Bk2>!qJT h\7Q[JV2m0zIML[R1+5|J#N!x=RWxPI'yLY}BFi%}1$p+";oY&i@!A(SM*nMCz N܉e+g9IJӄSR҆v.w u^RH36ؤB1̆)Α(0pXA_[8 GSJi1DUs) ؍mҟ1j&hޑ^]*P* ;y|#鳍k+Qqm &U΂PN= ͋L@daflNxLbk-=7^9M !Z-նfV [# r8SyYG4*F-0uKG;agTģW F?}%cRN}+Wg N]>26Rz!aNX w $R f "O3KCISkCAlM?'q`tHx}L=e 5Q"~qp191b=:[1]sRL_a@JI-X%KP`#GM^: [[0 GߪH/d62+եͅTJ LeF4BLIRJY_*iի_WdE"iUzn֏X#)Ad]+ z&jqQ5;htf1 $6Y!_`  H{qx(Ovgڼ*?mgQHEpk"DD< ^&g~P;jsI^XD3?^{m.ILaH2vO #Hߡ{ȑw{8 gב0xɅ/k:hRѣu` /9.(;HJ#4ѥd?|*6z? < wn%9 H CNpKe8vetQz曨dMࣴ{.?lcV9yD`+RaIrH].b&'UK33ы2 ]2Ꝇ~QцpX(Fʖ$=PV0U&?ߎKՒj/ ` X&ȧE{Tė&x`!Is Pt5=' [Ha/S$%~9/^"c,dFCSjlU KM6uQ#0Թ̬]Z_DdҖ^^r0Wäʼn;̋:@ UYX+n<zTwK`4ydiȟ%_OjZÅ,1itn:Ps ddadž~Ju,C7] o^j[͖CIp;OK]G(WVVÍ}O^@bc585i >`#*2PGNЬ_Q;~ּ_w ävFQ"/ɜ6|zpÁ/=k駤EkcTwhmb᛬4k:0Mfxܖ-*YmMހp/)ibI2VzUT=ʓE}k>wtN^]4n$Np,4w73 jGG;?zF.GSkw'C'_d W_6!WX׼d6ޑhhdecl0qp%Mx޿c+ 5<&fԞ6pz24p46'{DMH813ʼnwD_?9Lf8GoZQ`?d  2Ύ1['#?)_t, ,23XGmr{?!+' X|Hr IMmcD  :ΦUcvC~u4m2,8E)JiLnL7BHtNQ\|ӈh 3qtgk֡G!1/CYVe*fa8XdNBChD5aavxb %$[9~tzl7IKUI;%KΩUmZK% gZZnԍBV+S UZYZap pWkHqӥ 48O?Ӣ!5x U 9|`hB^bX8 M@֏y:iij8VT[ U.|Ba㍠9PWR=[IP~r<.3#qd!!D8i  *o}1 *1txi3T`Vu匕M2hKRS2yEYԤJl o@|:fO۰h39e],tt*f F.g G>ne@@^P/6îϲ>/A4;72ts)e<̏^Q00u|fhJGT:i9s`5?Ba o~T ˭X{yiXCߩ_AUJJ~A det,cS=ӽ:ΑpJ$jA|%6MQTB@ SYp:-o)%a!}/zivS(3@F߭!d=yd`z7nZ eV*^Q̧q{3mKA`4XQ[h%ԂD/UOt,R䀽JA[胞Cj|^vs]sv}p 2ae ް}mɷ xr's,6V hZ/H0D<fzjRg=!aieD/+ҹAw`$1 bD?L BOGI:s}'# 5DnS/Ě0Cx"8'#B+m㰚8ֺTS2kqP|A#, czeݚCT}ƥt8d=\ld9WUԚQ :WI'.}J*s+ lM-r箵tu^0;Y2S*s5b,ਚM]ϲC?~BYk[[F27{!iɅ_u۩|*Jj}%Dzz[;u]y0,.(R }4Iӷ"v)oԹe­qԫfeE<҅*=L;Qĸ4COB K uPtn4PQ<{Si$kRW9ە jÃhv\;tjL7gʫ"gchѭd |Wzc Y ~A 0Y<ϴZ'7kAR1,hUZv;o:uJ@ _* J *41#E}!oZPئ=)2mER/"a-_LYyq"62I{2}+>b &tG"ţGa":g~DтE+ DV7_纯\j>b!}Ƒ bb$r~1XZJG?FR"4BS}ÄWtTMPV1uC,tGەa#JCMD*ūՄs0X@:(ݿKG^D\T&Ձ盼L%Km=c#־-~(F*bs9Qf;b'gd,f E4g.oQc0ҮO .F#{lޘ9 <+'[[nDF1lQX`R> & ӻ8LՅY)ǖPW ;8jj6.c0:ȶ~evfZi? jS}iJPT"#p -[$x1hQVb#өf̍7nkʑy3GJ\G&?h̝6hGX IePVL-~@vP\WlHCVɱ&9'gxzEE},6 O킼%Rebjsʴ\I^Uk9`zlޖऺˎuo(|d羟[%q =q0jB#[`?7`,+odmZ_&ws-p;HӯL'%KQ+Sb@LEWZ09Ҫb _hO*#xQߋwd+eecq:@#?7rMb.e!1u`-@oխ2~M-'\ ж[Ľ5k֕ `E)]M0޸8첁WV[\r= r꯾,Pde򜭒cl40JyHĩJ ) &YU4ejU&T 5uN0}؂9:K})h9q03M'jT錈tHjyf~vߑ!qXؠM @PGU+ёˀ)M9TfBU`,9+W9sxVZ>Fl&ڴB[)? L̏@8LG| |8^&7AWf<;j…22yEȚZ /ricajfIQ?&$viE}%(0R,. ;<D6 9mBӁ+=}i͋j̇ ]`:P^4Og_EI0`Jwr4hE_ڝN+M:.ЍQj 'W"9|w^OMA*|[@:9~{q rݍJhExm19hF]1[^ }X-}T t/uhjϵjU|38-kk86tx$t}d7ȹ I"B \xb%r 0)/z Wq ݮh3n-TDkbM^78`fNc쁋*-/(9 @ڏ#X DҰn(tRf`YPe%Ŝ$?p86κO#Gc&EL?郖nk!rGͱf?alԐ, Vůܬ^ndžFO6 ju#E~G=Mp %)\ѣO*YHzhw o`ݟ[D>W(2 ;VxU"Vvn͠e1z2gFtw UfbkYR*1y![A[ VXG֖.N{ 7@h~{$B;dO VaH㨐MU(2u^i'M!+1|DTgQW|#YRgIGdd J$UQla3לhg3I5ԤLK͇*o-6!N埌 Pa7Ru#a>]3SPc otgwT^PA\lxh+Swӧ)>Oalc7Tˑy"D wn`;PjYYy|-ڠTRhCP)$%0f&d8(j*vm$&~_¿=_H1e ï3szc-8F>OD#YgOfZlܮ9(=3=lWmyNn?Ϧ^xZ2u'r0a P_ع?k,~=dH'|FE@zz xQѼA!Wyn`deW x[?[e}]H$Dau53CDZ49(ʅ~ӘAO4@#X~R sWҎZZz% YC8.ltPAyWB2. !"*Wm,,scgljXDǗyApWܰ-L#)@!LERψX_lrBb۵fȫ*t,Z,Cvct/$2싐̭W b@ڍeJ+V3h4}xDf4UnbLLЄ&ܥ=tJ Ӂ&9u^ wK̷h4sB/e),zdZi*jQ>XlCns1y gtŸBPҊMd_7a?-3;5sqߥhObs])pjEfd*KlZML-R/Ѐ/;h1~srz8M\׸y5ѕpa zcVEZVsE_T4c7S(nn@Fi?EJG_3{vjCy(a%]TPqXKwcOrps>3 TNAmjıO7wuA83nNj-W~"uIM{nv4. X- ԭD呌8IPc %0kr֢}nWvۉmd(.h>'LLEBgMV*-时GEl;?? ]EqNXWeKQdA1Mianvݖ#YeiLJZ4읜ɗ坁H*b?y&-_O#W{4Gng/pyD n{U"?S;hέ節IQg*na\(WFa_5܎l A/bLfzGlWY#k5s#,U~#)V0/d8Xy`'9_9 K>0wm?"0,w4@`P&k;{J`Vb9/) U 0["2@Ybdwu)Ũ8jȀKz>0 E<ֆDm,iE~++l ;1 bZ16*]] -{2jNm:Qס[N-RLnn)0 <=UV 2&]ԃ V4@IKIn\OMEEodRD/kFNC~rf b;_}ՠQ"CvExP o Soxf%)Kԙ԰ļPD`20Hg"a9>`(r .lNgTt Ac{"IIXd5={W{8>%_"aBM GɔH^,u `㷃p0@]E@JI`]R; *Bw㷄رTm?}E#0 (5t ӯy*XgdoN~ {M `Ju/feς_~V,Q28;]1_ 8-\ĻxΐN3j:j^2)j7.|\ BL4?PnlIc?< @ YC/422 I>l{G/E,;`ʘ᠚LQϡrAiK| =EAƚ!3x?A|o4ZQ89 ꞅaIN39dxˈ=4e@t`z,wwҼgb=P:bhm/Q_槆:gBvD=*pp/WR\kI a(7)hj Ϧ5T6B0>w}Gh/]_jm~~}35 f\ȝ={a>F4xVwu]$Ns'g:jKzWMq2s.X"I2 qЉ#NYV!ē UgD͹B3aLIiW~-qB1̡$?_֌#ԩbgg!y#{s{lbfjkC݉t Chҍe<TYOdj~q,=6~HYg0kkzf^;(d3XG^>ϿHTjhCQWDrgJRh C';' 3d.-:L_לݎCvǷ)pY>3^l`6? . Y˪mdð?;8o3/YzlL}&<2'Mo2D*+ Z6M }{8*r3wUOy'6yGxއL >w:obOGU^_mˋcg VQDg{6 p ZMv@ 7vAD6n1 ĢCu\zυc͵R 2Z6օ4j2U ~ oGfz}e:wvUNpE]E4| ma0底Pq[ 9yidIƣ~I{j|ַיw2 LJϿ.XgI[`{hQdMNEՓ >1tU"|x6>~݇эI -mܶ)&y[OLv7JCˣk/+1VkҁZ~=V?sZI AP!&w'52KN#mi Jw7ɐlNԣ{o5*T/Amf,(}%oUH6Gv)U+?}G]44_*(b|+|߈ *W)Aij=!6?oDs[oTY{=D>ې͑9 B=@];#LLP0~cױw"şFlaَTc>]kv2Pׁڟ?j~O1NB:N_D`K_ĘY fsXS?y?xq/,˜es.fFB&q0128Μh0qCL!cTu0_ٙM㷆פf`e o9ޭ6MCk0%_v?_ffs92XY$?U̿xjcXY}}"'ux7'lQ_<۟/5-_cPlk:b 1f{ W$ 0=w G7k%j/2JxE8@?ٶL@jU(1%A@ 0lpr3PwF!0wxwuBv)99 l޷72%y},k%;# gzBkkB_{8}{?" PP6 Jf@ 2;ocTʣ0*"'39=-7?/)t+1:%6 ;62<#*4ȴgg}_O)A!ϤR!>AAQUd!?$8Ef &d4oyt.{}~tDIJ.˷1 F} ) NGxS( AX#`'${|b7"$/75%:.%'([+zjnD^K7,KsnD*S3J>15% Tc3e"%$!5|[&@K@s49@oi"g `2 3>{š~awcË=@d{ؒO^ݻZ%B .J!hv"bjWo),د]yƅz9|KOIi$6%Ih_DOiJM=:2r2{bYG &޻$_)MGӰ& BRڱ`uJ5ƆxyƎX_5/A C|a؇5~X<肍ZZZ~^ l6H}QtVVƯt-: Rmr&r: j\Oچ/>jyV^D9x#1v4mj{ɄD/)Ӟ?`/Il dM#gE<+XRw a?;SqJ/31}M?vrq䀞gNP`6ӪΘ6,Y2sߧw$VJR8/CvbgȚ֋&5f -U3=HDsuOUz~4*4GJo[N|© R=q۶Au) 6ԘWvN\*LZFP 9H|^b46 7+Uf))^'+uGl\!^~hka!m8n5*^JK2Hg <>‚ɍJӂW&ς깅j.0Sɹb^+=anH_aP *SO)LI-?^sຈC6A4~S̗T(@-$Zk鲀|i2}j@$\ 53%|m'Ga xی)) YbW"]]8rVfq+*F⦖u;8#E(aGYyc /'=\uaN6KNҬx;oF"mQ7^N jlϽ|-l8 Yo1J?_Ӱo<vl`s-&~!2**ZMIlI9v(gcuf1B}1=4El8_VIHK`y2 By(rp8zbnt1ęD,+Q\Ðnڨh2uИRZZ UM60ST2cU ^F– VK}22RzS"{#v"o2U>S[@2̏46r)&(Ĕ͕o<@9-%Ԑ<~jV/zώq@O-$EX}0M~U=ÎYGyrE+{ƀbx|\Wzmf?ܲ { ||5q\\)S~  : dzi[ʧdPnX2$KnF̈́HQkR#V u,D)>}~yg-J EP7gjhxTLEBqa99ʳn;Hc?sOB|aW=Xа4я H}"أ-LSR,1pp{MU : berUy!#mk;:t<עmRԺu2n5_=JʶMKͶZriLB ^vl% I$JԧxP}#7zb{L[ʫ! Ue/̉w)˩fB s">mL_[ j꿸]8Ĺ9λj%F((b @wx1*op;%V/UׂēAh$ J>,m6< <[!sG;Y% :t=˴Riy-!CMR_f_m%m!} u/Sk&n 1C;w)Z"( hPP. VX.xc!8vUɲ80?XS_Bfۧ^~>'S۶ GxW[⛉٬$_:ɳNqX< x~R\Kt" 5 HmF i8a6Q.&)zȋT)"hwpE›舚qsĜnऋv&pW0՞_Ma*GSXzc%w;܆9xJ&k%[܃O.}:!HL6%E FjLΆ>gqt%T~)uER='=E񨴍?C7v*X0;N\ܦM`6 E~<Rҿٻs htL),4ڃ4Y3ϖ!aBYhL-9P_ =8E$9|4[T_g;TdULxޓA =@F/6CXHf}1ߛ0B6ƏH694\>ZnOcmV7YCLG R<(d9P(n:3FEUl6;}j+L~e 'AU>;'5c0}P eH}4Z})_)\{=C_Zdb|eȆ34/Z!0K%׬BeX|B$@&`s}E]8ו4<5..\Zh %@ZcIc A/4*)_jef.>rcj #rzezozWnKp+J@ DZwrZFTꆨA;*lkwG:lņQS=(X)@X-j5l?͇S`IPh@"*dMGGGdtqt}}uϽbylGEޮy?h냬YԲd^tY˳}'|&պӛD^21+ K Z9"vK "” K~;h^)Dg j 68F}[Ip4L'H[\"'5)io|3/YN RwK,oùwO3/ qhD9 !iu?KSQV@L}"g:hžgn _=(Q/Y>2Ob?,>Mp_'9eCp#5B/~LLXPHs3['6ahR<[,2gm4[ ȯ=6Gm'{xWsAMX))ux oP8|XZ'VC8>۟6g_Lx 3 |}XڪRRx5P 5"mXUXEHXXmv 6POpن5#Z(l2uqE.>v*#HRpEz5#LiJtfjYtQ&~,oLiu:s?^,'&Rci}k+ZLyDSXPB 1ȟZ;xRS+"6 ]hIW`{95B:K77P-oyxa50(65O M&CN~d_l,3 imݱ/"3=u lj'n7ytۅTЮj0*SUSytQtw4|>^K8+-K-$d}u;8*kW@@JD-!VmG@33ϠYR %`n<im>z T:: 3{*(;zr ;$̲oLX1|eKsEL@/aUꎢ8c҄d+o]+'ByR3AFc-}\z_i@ʄ[?:̭˟xf"7:{K醜.P}[V$8&]{ÏU/. 8͔4{l5gEJ_\ uKS¯)i{"VQF[M,ѹp@G9㸾٢!2Af}ʧG; gN{jcH C&|0[t'0#}+d_-RW#X{Y} S,?G(-N&\[=ogD_M n!7`N9>YV\]UO:mgb{HQ.}w S[`gZAf0cD-n:tŕQEޏ6FdW 1t܄*쉟K Jr͆BY#!M0Q{[ho9QK`*Cp'rg'۠Ie=s&R߶,FON/3F2JSzD STnyD@(Ed~s%%AO`XQ`-Yn;43ޢiHe 1(E5Ӱ 'pP ̢إ\ÏͮmٌsM 5n+MkGi]MI0]*B8" L :FEEf DDh/}wOG#E=W2[ 2J"`c٤^bئ|gIfń !g:NV]]S!U{ӰnWNƲ\c^H:嵅(Mܶ+p %ZLl˘~_?(E$^1UJWPvI,b0+M诫VVF:"붺 a4 6g2qSErfl יiդܹZ2u5c::~OmO`h]$; mh/JKN*Ur&I=G䴖sLȦ/:^VN &߂FYŌMM1&ڛ!SLXh$."/WWcfs.8 ^n ʜ_I^W,JeNg~42o|:'ws1 4Šj6<9QuY Iwj^kڭCkX\,Qz^:L?VZjaEu5sYԅP*򍾹5Ji{0I#I,G?` d?SleCX jj`+dkXbP˹39, "H$y;,T.Ʀ G)a0߲8_bH5:wᇘI/i9[vo,zoErg{8r3n8geIJ0  G1J~h3t֖aT!ѩ#m1]K"#&%AcT'2ūM T qjGoܓ ^7ltiDo&ErȾ?ɞ$t6dj| +DĹqpqrwq%x* x:1i'7w}R>֊aMˑku%`C |w w~ՠtVa.NmP!s'.6W$MlԌ0ŏHlw'FMLw ;"YiʦF-`OGJPl%S,(]?SW&P@ERNw!UZ|3$Z:Pc-]:'sSŢ%-zcƶlwFaPD7A~_e6fUl,tٳ3fTx&@9Goн!/x&6ɯʂDJx#@ިYFbj *DG.,RJ3JDP(%U9k Y=؀7dlp%C-'nvT3я.4,qSIp()X;,7: vX ldr BT0YoaBSe'B6"\Z%*Ga fu+(n22'Soc%uvug8)`W Fg}qS31AVE-#(jRI*a@IMF4B.FҷZwDqKP9rK2>E*E+&d8)́*h6)bG QvpYlלT[~O@[CyUZG0 ӝ lO8)wQZ:U)9uo:.dZŗGOD=E8},l%o/ SXy(}2<$ ^騉ڗ,gjFHp֔eKV{NTQL@‡3=N;#wg;[ V=4 z8.|_*\uX}%OcbCSq :ep%wJ*..""itc&X~k\xK9fs>.1ҁ2b9dCSAzI4 c}ЭkyI 30Y"_s .N4qdð}PF|)TL#Dd{`1 v!iOC #kxac9ch(HX+X)VJ"KQ|gs˼((<{>zysamJ?%?=:sgG!x-Y=j~ zBh7!"7Iడ!I9)}.9ՙ'(x><%H:0I%1Pg*m.:@fW^Opv-Ӳ94t㛬qҘdjmNkn!."ߎzxX$\sqҶ)Hl(fF-`Zω )5rN _<_ L@͠TH]?LBc-d!ʹ_~wdyx`>h:G E71fW] N*!c.+Ƌ5o X5Yg nSk/o/05&HKq$XЧMDϔ{\I|ZQoFOgwbRR]IlNy\hނOé<|ޮ {z/3ߊgLҮtk2E?bj&#{\/c:yac%}慱OY{\+m) ͟B^jdts raЧ(TкU;"v?j2 E|^36e1 IXVpRuQ^]9vOyђQ#ƞ/iBHMgɲJ8-vONBP9&9wmVvaeTT49Ӝe.w$ko'gLU7NPE2BȵPRqo~Z4mU-:!^7r,!VÝ BJ I<$$ƤYu8ݴK sΧZe&ׯf[w|U14R0{{&Z TTk8E-o.5z ||advͣrf%ߍd?Fy"শyh: R6]ѹ 3QjHrJ, BXJ`ϛiqXVʹV>^Ff߬"ˋ$? d 98ٴ<LZVK=W a|lLVҒḣA7;$cV#T \yj?:;.JiqOlK]vFQZv)Ge) /w[۫B"1|d dEnbJA w;H;z֠y}ubm`P & 2sXpj5`/ݼev_We6՛y/ϊM.pf^4e&IsجHGs[y ={QoBr}9+rG[ĂϗX LAPRx{9haHM;g/`uH_6AXa6ːl uPۜY=:BP4 @,OX}.K,ѿka)zHNiM~֡(7" )s`6'kTXG >E-ɘ(iV ʪܢ"L(d]~0vIާUEaW1݆'3 ^/q'T6T3KjOFm sGk OFJ 'Ry>@/ݿPRp6 qAy!Y|œqvll>D\m|#ײPx^:큉q>KCӌǣn`:@!IOەF 8s6bTQ ڛSN+GEpy2V¯ʈd۽"X@9n6`QKbXvk* ש S[[uYI a۔֑H6м@&t4a0AE 6A=. | @d3iGRDv2&>|fsۤܩIq)cRZsseL×g|z*t:M ){o)O>JrZp$3kq-nGrJ֫ yRLk6ͯE+k>Rc8 ̱hp+eLN=\M6E0-7W¢+6:SAL 7q9ۨ{!UQHѳxϮ:e8 ߾*T}WBL'[׺yꍻ5Q'_{ mcJ?*N.)3 DQϽ!$aUoz0?7S7< t{.O<{is ?# WM y@rwˬrO!JJҟyo`9 c^Okl#EPtruvRfWgJ7Qݞeݜ<`m $1hxMnZ3.ƠN؏Ę#F3mD><#A;ONɘqr?$hƊLo n"F֟qX)vQ0_j(IE"0;ZK.RRj%I*P*qC ݉},ZOd1j,F[դT* oWBi]ߔ[{geHgq-KUhDB=aJX|+'>P0ciօ41G5h ae}TE`pIC;@i@uyWDq4R)'/.{㜥 EH) NfQ7RXhb)-k0lA,#'=dT +)t `UX{q~+?mħșG8pO>ٛ=Z8pC^*0.[NCRJOiS^\QMt[3v^jPndW% AY 'Tm W%' ).J&rNd*7hMܪtS¦G'`M>C4nN\Yy.:yV ر$O_"?z}w0 [w'B5l%9 w!DCmkr*6wlɁ%^Ght X֍SaIݶΤWhA,ADYvsS]H#`&)zN|(<4qLA*$A|nѸ [lw m|0#k-.eCOʳٺ>SB@AJzs~XhNa4e$BH+?֜Z&4S6PP2]w}aw.5(d@ ǀ<%r=%a{&F;=tҺ.}r/jT ?R)x!WʨSeTAXb`kHTQozpq0oHKd>53Ly},Qqej`(8(gVx,bC0Aou/#HiD l $\,ТS4=# ;ąVGR+eO&+yй;c 8  :l[=Wqұu&"Jw_}w8s|ATK9 %'M:!{K60{1t:bP {TA'Ț;@|-qY\;ŧ^`]N Y1:1<]rQ,(edXRI9-tiW7e%EX"Ik?ᆓ@˴Dka :TmW2;U y\X0# g FCZQ>=Bcc8<.KL֚ ٩ ;k̤"KW(^Sg^ܭ$RZFVLǩe?] +*s,׫`z_fl^VԔ5?i`60~\\ﯿq2午E-u6nu`GޖK,M' de銼T>9AZo ҋfVKQd\G%&t݅\)Ӄ{ (.y; 7ΠyպZC/QjHN"JPUjf)u|#k.arp"WFQ~.Ftray"6aC7?ڒPODe_Dt-h ֱf96U>Ѻ|y#)JuF*84<:-cOs\ޯCd]h;dंdhg0zP=%QcI^1{)sBV ɬKE?Fپpڶm۶mm۶mJ\iۺ]U:ws4#&bmhϯ=V$ak\4 *1Xl}Ux#b[uNHQb( SLF>Q%IZ Hb^Y~(XA0FwS9S@ؓ:w5CC^Wത :h']:g10=]$bJʿ-p(D} O -E",$M~'>y} K}RK0P5h떝yFKuHwf^vYT]MN%"F(,ۦ9Cn uI âW*UVA.nP؊wE|^ Q}Rݦ?-C(*Q=KJ 1z5H9wC)bsfDžȿo"ddLʖZ9?u#k.0+Smw'#0+s.#?#*/Cc}C}cCX{gǗ%gXpxO(ܰ08i~;Tr~_Z:d`d⢬6'_AESOЦ@#[KESG@;CI1K[C" -v@TR30 02_">nAwk>]^`O}I lr6X.Oe NgI\YQzk} ],:Jo<QlܴV~ /{V8O`,+l/::""38/)}M]Y/Q$q8?z8Ăs=#4;y%űyPgMw8ĭRrҖ:tʪL{=NVdtQj:,]y-Ah*K(s>l^?2V(kj<=^jNe֤].2EӡS$yEP?M4dmRl;2kp}LA5U1,G v` D.BfzEԑG~jYKL<@M-.ONqDƅ-Y Y]-6#>g#<}yz" oH^2%9 W&*dljɜ0\r q74 0 |eɏ0#;M? 97'=0- (e{ʔ+lv-}&dz٦2A.1mM#5j0 & ֱw@TNfI hcn%cm]^p2xf(L͎ + zY׼̮{eEאr7z篐4-Y,@/V5rڵ(ܪ^3sE5hTѰˠ8[!5BN{FFo|~}>)ËD-|1ڳ9;{y:E" oyŹ\>}D;'",y΅/N}[ktUugѣKɩF*VugN N,/N6BzIy96JlQ`}c(X,H;z 1wv\{)pb 95;yם7AjvXIK5Vgz/|$UXJj6Gy|"GF|"-@ExCKtݽv׷R+iq8= Γ4whi){9i[p9.Fzqw5`@>HܽKȸqK)3 ~Sdׇ9v@,Cwy[z rBKuárYx~Fy91  g&MTڒY%zGEvHW)wt-F>!悇g1*X:GhdeMu7w~8`*P*#pO7^_`h n xa?/fH ;~7pZ~HgN^kw- munP 2Ḏu #>F\w=륋CQ:~]ZT9K~ UɎqޞwm'1?WCM3/IaϜv/oǥަ5ߏ@ˬ] UM5zrWnv7Кe/Ҵs&ff[̦~CkjYZJ7Ǵj mB?!M%jSt51/Khaפ"T\&Znv}KRkXYt;72 kuCKsdU7/k/f*h?YN w)t}/ _r3_LU ]v{>;DuNDEA^JTl&=.eל9_6UK>_>13U[LEk+EnVOWoeοeŚ9sbF_OJv F}Vĉ_,W003]큉_/Y%)/:?op˫#^B^AD^Y^Y\oʌ޿`?q¥d"h A$ %SL`|LJ /t ⩰QoB_d7.D5kl.>6svO8Ư ?wQ9׻"سѫ=N6%ATI"ˮub!jMtTC8Er|ͼQ D7^Vjs3 ]+|ܜjQN8G%-є5z΂`/u$9j?g g][#wqG|踁e?**DWLng&VYRH6 g|KW^Hk} OB'0OiǴ+76gWI6GVO1u4Gb!$q (WZ=Sc TmȘ~'cdP]FP/WbWT%Q)P!SdL?㍼=vsJ8{6Fc}ecXiPNRkQ3{tʜ]K:;QjmS5`,\Vg+8Ή_D,/O'r zH?KRء'(уۖB9j~6a[ 2AE<^L:b(GyTt~ y,`C٣kjEЈ11y׿0*# '34g[Z3:gJv%#c}z"H+U%, ~}2*MQ̙3PA > (w,*tCNP*KSסn`v=" fNb„XLaefq J 1idf,hs.( h)X8Gt_&adW3RT/.i~`9Eӎ^*=sU'd&R#Y*uRE$KSH2PBIwTA }H$ՔP{%/ C@zz %,? 4ݏtiA[${|rC3CFJ3 E>o~DjJDx@N&S-vTx:򩂑^+|9%x5pܕ 2fyw0MPSTA''$*1#~XgOf9qFV*9͚B -bwN;NMƒSg+vF>?Uj_fBwF{WQ? RJLj⚥I:,;QcIkɕƜp7{"yk< u/ I31\QS򟻥!sa C/HuowDQ*JY.E$X4q$w|kқ mW뒇7 'Him@xH'IbBHh wߙOGŊG@E+EBiQ+GB:mXR$ow;赝ZTXP}"ǂ [&vxPE?▮lQE:機&%Xʶ&R(ޗ۶fXB(Ā܅D̈D =&Q@ŵ7/uyG 98e~%-Ig4@h 67Ӷ!9^mJ@k_o%W^kbvcpX^M7%[@Z )#dD0ӮR\H/OSvw?"bݗ`Cmj1vH QUv1О~?Š'f}Q9݋40n \SIݮ2襚;ʦ5\DA#Ƙ]e`b ė@^Em^[_= JDIt]Q5XBó^OxX ݷ#b@> t'JEЉULa?F Q&ҹJ# umT i*bGM`K|e4bYA`8u5X o(ɐ ^R@?ǮcDѣ(W*ZȀ^-imPFC$T$}W؎٩ڌ!M,;Z&M] 2Z'@0 ԯxݭ9W_Z. teo`tw> Pt#4AHQ+e1jܣX?LnҀg*[^AZk~$UC+rt^r[#~)r(q vNT7m!/tiRZNj8"^{n!50W[>M 9gvr(lbq{]$-(A>\/@0䲃H`o<Y3g98 Ӌ12pOʀݪkGp@Et%lkn%} U gk&Khynv~, :>?~>/{ .a[&2!g;U:sޚ;x^\&@PJFt,*eXiLN=ˡ=nyy,fY-[[z[$O'}[j&:2Bx}i뒭fM躠,d94btۉyfnu.u5Ъbu Du2KXl¡nG$ q+]0 @)3̀!ͽ~'M `FRIkj=a6WQ k\A~ E5f5dB7+™PgۗX `o أb#; +m_³i3X^0_wn ֍x?GڴZ˔- L:A$P_t(.HשzFtGh( q2` Aue=ƷoCZ'c0 .vxkrivZlbl[.C"!uzSퟌ~ 4,t*qy~tN ]n:P3v#9ZI ] }\Gw8pjc:n)Jh A̘P1̗R* !tP<ѰMQo4@eN' R\df Zukͧ?1!zjiRŝ>J*̞Ԡ@hu>Ra9l_?tPGrCHE,}-8byuB!G?uf~*PIlڣpn.2t.Dp&\p=:z>;ը;"ĀT6hl%3W|#ե bC=G<\0[eRK)2 Jsy U Ce"e8d_cPoj!.1{MYx=5 '5?i'2/) ytd7T#vs]r$X R#ʭ}KnAeC"d 5%{0Zӏuu_Qi!x0GzZ@&ESZ^r;% n=ꤡ%mZX&cD s=./NZ,LBe,juGI6F>B;`%z$!SsrUN-^PV0=r]9 Q" _QsMȣ V.ݏŭx;+ :S>IgQh>*l+Xr#Iɖvz V F3yAhnBA+@-"Q2ARKOirY NٮOF>߹z4әE^4)`Ljv;}U*ĪԺor㹚JX(h^%TzVo!b0c]FjǢn彪 3{e R,7o^5LOb("u:*M)ϋv@?<ߞ(?Xku$hj|ϲaRBn8pC\ E6B/ǃf#Y{74v˲ӾW#DA!\-ěs1H[kWynLO+xe&H^_dTm&T,TdjSi G]uxiʓAE}x@g?"t82CwRb=T&oI *N?we{C7'->l CCHkQIGwr2TRڂq!xF %`98YtŒLga:Ubc]sY*CcjuYE=si m`plKX:N),U];܍p%˩$L{o6Od?xN/B c1L⹳5һݔæ;x#orǽbS-d._TNtM2(qtG. : .Oƕv(Tu/p$?횉2+!P]X{5+lգJEl& wIm=|vy(uW!}Aؒz&c;,rA!ruwtd4?ՙ?&lv՞VP>>MD\r V6! GubȊ%4bȵ3 C3>eLGG& g#Yȁa%rӾ)<H,q)tp3eInHY߇@L5K]z='@/ѵ\7sQ̚܄.<ޑxe磶c>9lW=}ۇ #b[4(8 &uI- b'^JǙ4oDx&5עsF(dJeӍȬ˧bۤ!) \-2; it(upJMXj;Vƃ;.Le&'zRM!gXUv{]TS( UD)k[Mrz]i@N54ӱݑ*W2Ye\zA/;"2zt6F$$n+'ݽ\ǰ{cWl0۽ %DDDLpNQ {C 1IݙjrPCxj>^mF1f6t/<50Iگ#׆ܞ(o cHZcѓ_ENN^{7ZЈg:ᦈ!jzBh4R[T?KY ;t(q͝ڷS . 62J@IF+兏srM๗]ȕy?mYR5 6_"_Cc{Z۩D:qaqE۾Ս!2e^~~pSzqTlc ne?#Àn~,2 U=.kjpU'&@f]rڻ,+Iׁ햊AO.Ad *7_ M.:o|WwνkVvΫ+DM!1+~~ڿI`ĝ8fv^]$0>N?wF*U!fRۀ+Kӌ^HŽ"mp{bO~sqOTݫvA߯uyKS]Ϳ7?(XK%uPm9xr %$=} Rk,n!vI ŁR g%(sfMtR(=E`5,5NpfȤ!Ώ ֒UEO- h8QRCL? 5y.8n%\(3d -HDQeOȂmêN[ƠlRF,ƥ_CВg쮌! &1H+"帹$=JV0܋d"37cO"(eqfm;ÊC@j?iFq{|in"׊ט HH@T}^ۭ3QytʟW"} @+ xd[Oz hbc1kFSGp7@{>((©붙Q_ hImMcv{r0N63 OŌlzvlOT~Yu˧,삾&JF8=AAvss _ KJc $ #Q6fNψh}1\ mvXOk@.oX| eؖfq Oڹ.&ƅgIG0ZDS0a\.VMkQfJ&2YG3BRe|Vyj(2NN+8i̶p7 ?ך~  b֛0?K-)^zg'GE>Atb)ZH'KNSF0VI _ (XVAԂ,qo % sN:lzPed+9@ K|Я h59j0g6ޖyl{)X0t"oJ+!ӽ(wkL:,>p(5|'JKѨSFuNr$@cQ, <h᪠{=S@95 bg @J@\i$^҉'4ǧ;# yTNmQߤ.y2j10тUșZC d{FxC f<@l[Cat|wvRL,61$CcöHWmeKlu0cLx[IVg UGD|װFo?Pɚ;L$}0bM٦+j$y[K :Avߐ g<08S* ;M^}c٪fLQk+$ul6 ?[>Kh)( O9ΞvX"Pf#y \꡵]3n|ד+`/y=H4{mnu- `-Gǯ(&xCoskn 6ƆVYpa s^?@;Z0@&# ?@0[^mߢ{F32g| zF,l7ch?1MW%u+alSXwW~3 cj!O+T]|yb\T. )Rhe}3tp?ilC(2¿e@˕$RKLZFwunZ2ތBlNA_ +,"9ft_ 62BK0\ho0ʀqswﺓMμg%VY1PѠpía["Tǹ?v\ܒPd+ZHz>n?䄛95_RL` fv$Ʈ@E*#_-+wQ$6:BX+C8#dTй~KáFjˤ5T`Ny.L~Qܵst)c]V|:rTWza?l t!*;3%?|.+rR+DvœyRIn2 16= P i@HTkػZJߋ.~?m=( _T8*d$J&#Ufx櫣0ɫdlXzTՏ>1q1VˤJr {l9Ț P7=Ր4ϋCt58I0 {ٮ:} B1=]3uNexdUjSx9mٚ0 {V}Z|+?0ފ= 鷏'6&Bɵsa57Q%hGXO=ũ/i >kkM޾c"ʃp>Z ׄՂ$0 WD*GD_>IڝU(V9 *Pw+(>vRɜ#1YJ6]SezT/nSMS[L_ 6K7UJptQմN'ʦL,̥KMc7QDeٔ'Hp~Hc- #\T5O# -0XD:gh§ʪo*Η8GYF7S; kofk*PmV{r؃|LUJr 00X]6tJ Ʃ-Us:L&зHؾI&,[p[: (I]-[u+}\Dے"NR)ӆ* +~t|2}dkLsT0- i-r 2 l!yH8 m}hx(d_\f_b]$JzPU=u}~=a;Ժu0:Dx~HExdmLl$ҦI>\.7R.(/d4I*W`_ W]C{okҔb9gQ\ZIO-yrɽfhsjK*[ۣwZY^(7C4G+_ >$΢_ j2@$A+3X^2xt9I", NP IK@0:MJ='oID_9L͋ם'f E-@RtЌRXf&1 ݥɌ1#MLƔukG+(+\{o U96Е:PXYGR̕1g-_5_<[ZZ':O1mGJt%Ev#;Ր{:Uwj"1VIh% ލw}~_5ܜ9;4"x";Ikn6\(cr43ZXtt oI =3![)g\9hexhCd@p퀕E}ْ1YӸZty[E8!Yc g[r%8kxWyKnɽHuHT]OQPjWj  lrǡUs {^^uƱx0呱ד ʕZ fG (6ߟD~™@R{kSD".}k/ "s1ܰdFԴ#Ԗ_}gɓ`U{w"J%I+,KNRlJ墾xSÒ4Xԧ+3B\{e76}giG17tn]GQpb@ɀz?#0d,Z! ]mq~ -C'T `?'X,ꓶ[kP|lAM[hE4RJnq?%{T_'1^*z6]| |{zV/K"78}tkN^~m }\: Ʃa_.,7ͪ,] 2mVX]ٞQI,kIm^=xPHTUΕJi)޻ K$ ՃyMףl\67j46|d阘:6=9k{/3_e"NŐ)z/8#p5n;K=A:.g?53mb*d1 ] $1Y<%fVTX>ҸE,JKUxW'grTuNƟA>OKhnv4cً/d+Q$ 4< w4׷wNxPuUJugdf =7HJֳwZ>":8..;eX8~,DKҏtևp7fD#/}jai9Gr#Յc;bZCn/x~,1密2E 09@;NUb{3{t Ӭ^M1?M/STDxR7q]\m( ׀=Pu3DW/`.:Q Q!ֳ+<<A0.'~e4a9.X!SC`eM%[.{|#b$0RqPOb!YE;Λ ]yRf|rVĜly ! v*m-kW(2 DNW}Y °gR|{`XJv~Q3Fߟ)aK) A_]0פ/R!9lnyѺkN-`dTuY0}]eЧ0Vtg9}lXACKm7VWH#[][L LRkzUqK?)3|H֠^x휒:3* κ%Ltr: fNɖ{֫ ?l@KJ6*1^^x]|c֣n"B{?2Dd!j̨$.mn2 6qnnvG4#-U`הDiw˷ S2&zw v(ɁvknxV2m[)'$4C&/ü#R" (ì:43& MJoP';#؝kH£苐Y MMR4S%稛kڳ*#@/i%| .=yrjRTBf56Qeo@dft[CrA\ e܁I`/sxLpχH1s_2pOِ-ʹ֝b9io~ʊx#>[E"j`/h7ypuep)88l%jU ٕJAAn-X X+y&⫬Eq|AN!ɮ5B3&LSzPKצBn/&OF=T|+Nl0;e@SGvm;y !ef~mmI??c-Qnd>+k#\v$dt\)`$5$ZK8>jGńtN%=٠dY!9Stԉ촻m6z,A5GL!hvܾ;y|{P䒔 `SCFي:< FQOJ!*nuW+b/;8 Q|[i-ȩqj_lʅrY-d۲?um=RK΍K1L:8Y\YM'FwoBT3Pr.'h!ÕX(BHpO)>5#K*J-ە+YB@9| /Е&ZJ0a̯{Gy zֱC=K<V51_7Z@.-vwOYͳ7Ae~6P 5QSc:j~M[\3C2i Pf[I*<"Q NSLzR"F/+遠/ɬ _[#%MA9o(D= x*lh!I סuR% ix}<1gɟ?D+g<5B{Gg)(D2\% 8zDpؼl==㿨'zLDž%Ő*h!A =^dpeMasAIѸLN NsTP$=A$ Hnl+z߶߿ퟮϳ^[z{;WAdt&tvytPW_EPD=| ۲NJUmZNu̮lʦcm*IpjjΏc0!yr{ ]Yf̬`Li#UYfsEL1TMZm45f7ٸli,_'3K?i,=1kBf'¬6PfOZ}ʠؼܪvfx1į)i>dhkݸ`⬫ن´0[۞aZ'; BϪ9qmZɻ"L6@oPk28]aNFl [FT.:P~ޢ7FPK5 O$ <c{e~`X'Ǝo}Rk7hs-ǧ n;PЃ_.fTF~ Vs~mM- ZR\F~@^+P٤4`R{? qQSD6o\"|u`싻v܁ ^7+4^N[#o*@.c0$^o)m #`:y2igZ/i'Q/cN)w[{2=Tdʨ#D7_(c&O)S"X<3L+Uв:$%J. ?!S"pT.]ZFEzu$:kfoA;RPQȑx͵jSatzl>4<\LQ%w;3dΗebl4HET4s5gt΋-NSI*r6g"GuYef_F!<^ 9yd'3]52Pc {_S_@'6Q7: r涉jqRH-SߓҐ= ;Ad<;Ƴ~ ob[A#W+B'Б:V̽.<e??!%=A8=@##ƫNLA0*M&]|| l1QZR2(  ]T%H_(AElOaywgMLE6!%AQ|#ᏴP>ϐ;h؃f쮞xQ!+i.þ&9pYcP1Q )," |cLwđ갴aB3y)ToF0[Ӆ{ bUA,Aӕ2omh# 揹3SU.6XZpQdic%!0㦽95R9|Z*^AFfVcفv/8e2ۚ?^\yD@}cPt'I.e8, 8b W*tb}5d Dd{HK Ѥ 8Ѥh\vw4IM7^՗.DR\QV/30#bIݵN/rq (UN90 g) d6~lR^%Tl&b]!iuNW>UT漂8ZuuU(R/mɺ@mC7+b%1f?~kFCH$h}K˴R*C|&\tGd~ik?U@LQd FKJr^D\D [Xf}3E'lʷ]o:oŐŎYa5 iw}q7vj|,zQ{![62&_TZc!zs~o_d͠ )cb!!}j*9q?K $b5V]uS̜,Zh~La{T4Vc%Rў6d*l;eXk`KHE}K }Mgi_WǦzd}0oP]aU8FWØVDKքJg*7q:V݇ƷW vA;c%eS%Mi[e8Tn0sZEH?8[!O9FeHzpK7bf踄wMC"ч&3Hİ*TwoXTIȜkFQķyxTe]UZ9e#DyQXmsu`~tLFųӭ^Q6},ϸhev{cdtA&jOF;rQ\uu"Ⱛs0K~;繲PG !VJ[;t%׺Ӹ*pLyg\5j3%^`9lJ-DutE4~Wۓْ-+s\V\k dN9V:J(mMA)% w?[Z;t elÃ}ҟBϏn>j6]\aS3y16쵞qKSB3XW)X%x;}Qb.xGY08-dFn;uZ"*MmmԲ@R>!V-\2+ze7He%.({n[>#ҧe_DM TVQ&c^cDJK!Z꾁J1$k!Vtf!кRёL#|_BE97f-ER`;&}!j'buƜNJqUp%;6ɟjF'5,ΰQ1:Q1 >g]t.9$O&@^sYB􈌞fmB7QSS0H&uH;4%Zo1L5'c8`U>ۂB5=B#FD$8bpWlLRɒqD#>HYQ0 'j<&gde!4;oĢ1v*|\`Qhg(݄ڇJG %qD@!Z57q *& lV**I왭j64DY |Q\!}WJuu̠ruyah~l/{kXC ;8~SRCgjˉ }{,1jX9xM Pn`u"- M09Tק@ # {Qv2g@:m"x!9 ,ml8+[w gWd- QUÏiҕ׬wKp囋$]x mN6ZR_ V%౴v: 4 %+󂼪n|F"?vc)b֟s_>󵩙z~;i3Ē\ ι2EZ!F8N:#hoZq8# ^Q=wd 탪֬xFbFS$$+}xY2⟟^Cz`P.hWs5Vq+(pQnSd#בБ3"yN'(f)285 ->E4"4,QBk}J_boPMV Wq1GYE4?t/koSl E吃ٍCJy ^ A D6sdGHwx'd!̗۳ 4iQeY-zD>ܔڥV_5Btu'GVGB63Y*E8Cc KID4Ayxk7e=E8OL`KXK66 tM*d!9r"BА>?`sRU}ζ=(BuQPv&c¤1;O$[Qơ#x,P#c@Kp U1&VrbJ=M363y}&&S k͌Y(eM:֯x(E1SˆRI^@`8PleG>Ct[e'eKTkK|H'+ܟOE:RFق蜪RMu0X|6ӥ#->TBYHpqR_8jlѳL9ߤqig d5@&$1A慯ޜ%Gr)JoQRJ`Ty-R\pEnYA [t\Ec[~[H(,iTq68Nr_L7So3.Y͸ \AGDp L AV]dvOevD}~[<à 8#(;y{<:=?V(:i`rjO}nq밍(uɮe.,ؔt7 8*M{cq%Y"[YI(Syk?ZVgDk. XUCT+Jc E|D^"Y{5JlZH` P0m:g/S4ţe“PMefp'oʺs߷c$v%\Jol̅$=ic]7>l;t4O-5t^BKs8>t#tVHև~! ;fv8])9H0I8g}Zb`dO)ʓKW5d"e.GY~jftYCwj]"ˡ.d@LYJ`qPaU 6{ףw|>NN.翬C5ޭw=q̒Y>'|U@ *9j{klOr>U(I٨JLў0K\p;JN'Inm<), rfB5zfj& u?R&/c#tQͦX'C>Ctv`h݁} SP;L\0\2r`dcGVi /! [*?]p <ѡ(&-(oBAW}wJo6!9b uiW,,^HqTtpycG!%fo.#gba=Soj߾oќ2#B/0M5gBGRJI@W`ծqOmTWVx^;ʇ\Q/ѓϋ~`aTѪJO7ʔPc~cĜ)8Ʋw .]E2OTuGTGKDaie>J#.xyN=G lfł#h#7?*Իe:pJnTQԻaj:t"拢GhF^DʷZ1u͝ kDW5w!.Hfł&C]d}"ՋJTR4#@QGZ9/вA6' 4ہ,vM8VLik{72Xh++/.ډ )^(]<q xSPm)ĒLS:HDYcdY n5GB]F^H+Q%3puk* ݹ;B,54RHƢ=Z-mQ镭'i@K4/Z^zZYV/X]Љ~ cE d>]d.3S. |.~ЍFF*jf& ۣPI.|>6)l(ZAѰ4 /x= #EZ\iug _a0[vXqca[lvGʽ|ġIv`usEA#[m`oyRF29Lq8eZ\Y%Tդ$`G_2":`%5dfnƕ;d?82"Jm+.t {'Q߽xwy q 7h-å&>oG, mdXCfIܵ֐ ĉU#wsABfJf xk,zo04i4?4fV[?=H>)QI~"i\]?F?829=\V8pb`=d MgO̚Fk;%|#uXϺdvA_?sU̫*B[Q6G}CӚnUFiEb.lk9|)}Q1Їlf?Cr%q ׊Y?#Zo6,+ )ࣾfvG̵ wШ| :zڻ†c0?V ,,K|"ŽX/z`Jb*L\)BÑp =E$UB23 :xnʬb?&x+-26큰~1',8ԮtKK HmZⱟx&v\Ҵb>JZHI\^PPb5l,S+! Ysfh φySD(>cyQj-Κ KHz.lo4 Ct(2n=!SŮXQ `1\u#֛̈́!>q$b@;}3Cje`lEyoI]Umb㛠!CM<3 3~lڷR>뷕Lގ?joXy?Jaͬ5.+ޮ;9#o͏m_8M 3 X/ԲZ}ZZ-7{(9,Kq>2+K@8 w Horkx+!X7&;SDx4)p #O8nޱa0NLU65j=W7-[Dn qe.-fl7ep,7Y ĝf)JE/.ʭRCrNF:bAN.n$Ei$ !X/}=̬Zk߽5D`|A>+d0x \`$&ۥҺ9[઒iKU~ܲqiܰsA(Ƨ'v@bKr dkH_5 FgNқ.IOV|2>XF[L!:_$cKDCk,IzRz{ҮXsN5s{i ,C@ro=`[T=ݜͭ41Uis zKЖH{pKg  IK# 8c*ZfPhݛJ3 NBˍ$n޴^QV򤥯\5 p5 4^)8TXY|83Zn`BjK-bKP{Sfez}CS}o5e#畋*{ôqF)xDw:=|nxsz<샞`{8CC$!<[g_ w_'c+3`舼úkhH5d"w cw{oNi\YY?qmRU}4&`h Ev rҢ8ެ+9P1`s¼{}Җ| ] z+L\)Z=t1YQڃL*3` Ki .w [[ŨZn$ \a)}|G_V=UUv6v邆4A]q;8]o1ߠLab_{p Y.WbXN* ݰW]ERđTya^|E6s9վaG~z;Wis[kW_=I UZlx`:=Dc'L tDFN,ܕsmQmG^#${I.YOpTJwm^J/ZЄM[?'~Yd)6 q>,h\Đw!S"DmI̺H-nݜ>JwÛ7[*rZض42o + 7ՠ0f.xK[7ݖ2rWr<;OrƼ_k%9LV2L3+!N={#v{>ZIQMAdi)]G6=a%'Oc0J܏7NR hHIEʴZK "tTP7XB`cc0`fan'Okh1IrpPM~nyBm+*u8rvqKH^ßuU1.qd]MsT =%U̓Ҩ&-z>yR!!/PiѦ٫;&xUa%6J(Fc\©Xz%CKpv|FTcs?~3Ki)|ǜ3ރ:'Zt$Y_5lu,6o36 vvqi?qVRB]^: rygw\9m-v$:]zgFgKV2Q1+ *S\>yDnΎȶ|+Ez͈MJ>CL,,9SoN6'],O R&?oGns*2&{ţtOfW*ik@8M6yoD"eՄs4s&" mG+3Íy鰶ʥ))Q=Zk=4}#LzPM\):},DL20[^ZL< }w^dW],m.+zbIuL2)&d3fsޯM2jxɽLP rB<3x_bF$lլaQqg F* NH4ױx6 VÔ<=;F'Zo]UcWW뾌El,}VIa+97F8L3=:%'S lÕ9S5zG}<u+O>ؚ2?\*?Yt8%l%DFn$IWg_Z~W;F3o ;lJBJz{vS ),M3n*٪bmyѲ'|VݮXKr0A.ӛ;uu>D#;<+QBўhK$r-E0p} ŝ $sN?#R<îc6vEt3KKs((rJan|(J P_^;[c(Dl9mj>.N9L ^0L0&:rNAougojEa9`Tat^wcEnwZ"ED0mo^UTueO2RVUZ+_9r^'/X2Cv<7 A+ =q/ b;gשYkNjܶ޵KhqBe50@şpɽ>N /iKvԗ6$>Oe*Z liS Ib MdYγ8kGO ya-X捚e.CzMRe۹(R}WۘẀt_ ehZƅMvܳ{ݱ.~zOwwT !{]{uԐ`SۮA/a #Jiqϧ6qpvnXU| %䡘| B}b"^_t7$B>`JҤaL=㚁_#q5H|" |a>].7L2 d6N9?hwX4i{3|b/<.JJQOQQq>-I 2KפJ58.7ݧ}G,,lN IXW'K=?k/C8y t'p g$?ʚ vE]Y(j[BQh|ع $ʜ5`"ّ_$'zX,tVkE_welމsѣ̠yI^;VNr,~+uǶ)H:}QS&zEH܆ 0N=NC?ׯLZGa-nlISEzok֝MNcl>YOw6,lILJ[Hq^j;Rugc%ʘZ؄/2(W١lr'\.ԥ> m+ZAFփ9uB=B-̯ܸ~$e4[ie3}[Cd:sЩ +@r÷lgjZfh-0nSzK~$숽[JaM/4NJqnx~EvP}:n* {b^M+lt hJwՀkvid2 WG$n&-*Z|QVs\٧4Kb&ˍ sE=4r }7^*błw3 &OݽHdpl5͒3~cC {ƽՍ<ȒZKUI+] ,qʅdV_=$D4kr|/>^OajZZHr5 []%>@? $-y$Ċy@Mn!qMsnNKoY$P-Dsy 0&`Uf@dDߟsfD;{W\dZe!~HH)ֻ^GC4 z/BN~D{cVqH}hK4X 7 ah{/_7RW+ڜzJME~MvR)>PםLR1j4c?q(;)|y e$QuXw3rQ J M;armoVfv}nNrY?%`ï=C$WB{xQ Q89Z"*bdJ;r}p{aQdֳOfQ̼yB)!IQFw[g 6>qu=쿷͓:YRPQ ],ly͍e=vOeG2}D)_+TӰZY|vId+VI;)<5d|}ف-PKV%T^/()8uK[Pw|]ߪWݡ4~5֕wzʢfpH/s٦[t|*<|dXr$_[-C/8z㗺 ftmT9FIv%4zCf* '/k P/IH %fKE5h&6Lxu)MqO LWXx֎eB8jekc7@I=NTC᜗+K7P1..XhC231AۋhB{O\5W|tx˞[4)ƀ#E +v[\'VnXS2ըˑƣ1krR32S7#0Qt%Gnd^7"[؜czܳtRb{IU1Ƭ-(y(=8n֘oSb&)F"(NIʇt5B4x$ߚ9RИ+,UG`uGn#[xaQJ& }E_^یB EQh.=G 1}䱝w`Y^4m ߋץ')]ר >…4vo]\i+ޙтJ~)n~䍿t*!oʄydv%.vӇgkAY:42d|[ `iw?\1"\ٯ<9L-PeӜvYSJ~P 9{Tp9[ tMa<2S_.IV|i~Q^2bku/w!҃뱖z(uN훐 t`me1i'S\OvfĎ%.RZnm;fzciyg/e$9^iNͷdS/䏃΄fbǺK=uG^0*:Qaeiz- Ep_rfS\`51t T"S#EyRLS+F|}xSm(!tXH`ǙaDVMȬfXbsWb{nNV`8>lW# HCBYXo&kn%o /&(G+B:+.9(/'Rh{k < ^z1r1Tk?xX xHrT+#{xl|5\e[pד\B"!5v_=u_Ѿ6v¸aʢV&ZRL0V|B ,JZ8SM5m>$o=}%qȫ9Ps{`P!Bs kdCǰL†R[ iEP 'iL4joxb22Ś/rHM!=(?Ӵ[-c{. ]/T9o`q d.3-tPT"@znT/K7PŞ;6Wxļ͊igQ阮^־ZExg|Ey=I(6 u{p9}== D@gދ&>)5K5 TYh<QE7(sA `[S 4,]# ,]&[%= |EY,5${^ި+-X-͜aoA vIɎ4JbS9%P 9OXe.hΒ\`mdT X6!G5\uIRS&FN\</xh<ꩢ_kHwWM 9pIZl2I*D@b N&p9>#7%Ónbuȴ.8:hUgy_;emmW2{SO'W!V9jeOTuZ弯T_ S ;c0[H :n#lo4*־qظ-6 d7*"΂&3Κͣ ZŸ-=5laܞC;OphڈdF#w?^#kNCL tń3n): *̓r~}Ǽ_[L!uQpnI+@0Gyn1ڲlTK1 Fi|{<<VGQn(}$da'BNitSZTP,7$E-%iqY2oɴSm{e!v&.!HB׸ԏusD[:޷SQx69LG _L'ѧvưwɾ}xRh1`Ǐk`X\ g&MЂpɨq  .Kd䅳&i٣BrI%ުs<ޗO駪>y0LWsA雡b,Il@AEHUT /띄2Rx $REb3tܓ-h=w58~AT6e qdui(- j^iU?( -7X`'-ϋSbGO;!!iG4 1 *#_gt!%$r%\1_/*S̹i9}1C ;p ̼Rp3+ޥLmF6M}ұ~: :mnޠ,13|%uBܹ |ƗOlfeشGX Ċێ\J}e Q2p#q۫r:'<5j)z-+TM{Naf+H<(yIv^]8v5iwY/k"d2H Yp{MYpMdcpSqݗY7>Vȼ)ύʿ6뀇qĄC.56 ot}_p xzv.̷Y #g aj Sw| Z0&N|}XS /^n[NnNJF:""]$}ԂO A͞=.;3kO5ץߎHO]o!zrSyzI*8.nbCѯZ;rjGkD]^R.s s&]]ƣ zh^|hg Y3CZ+㣗"&ܙBE>Ǐ%j Sz{٪Oh5Ӷ lʏF<-m@Sd%`5**@TV@Jí$ (,g  JcX+ĺd `~vC+sYyK: `KB׆((q^+b8;"|ᚅFX꾙hxa6U&b>K^WS=OZ(n"mzUV&ީQoyЎEaqD0d;N &0CzNw;fz8`Iw}۝d3l ۧb% *1[=cI|&EjP}jjyIx*4xv8V31yvxuAO}T1r KT" ͌-(v7wf(-`$^6EwbJ& @eFw-?S`W@1;yytqr^q6 ?89BX/~PE_a1VZ{LΠ#SB%˦ϝX4?VxIz4_?o#[UGB~vT3j z^u{D,niGn;}8C7VBDܧs\A`! w)"m=L:Yx 9?Nyz|4r7"191>L ]I_\9of|en$e(9*+{1YN?tؙ<2PW{9D=ip!ˣɶ"GI7L##c4䓶dwJ\cԻ'_iMTo-n@ f{9c}SK9edG?>젡eaS/C_oVb#h_PH)\+EW[vC]W.#0x6Y-&6AbIå<-27)FigfdD ݏe}DKEgrus+;sURPC1euJjm)oxqPuIۿN;sOzqXg3!g.|Pt |5uKIw~X?خÚts< 梔2s0y iWJ}m>+;.m3N*KK '8=uUٍPއ܇QPW:mRE~Ip}c!b5=o cqT9__my|:ĨӸO/Cf}njC-7enϗm  ޾*za5~>_g@ė ^`/ZL+\6]_օ({ٷ+-?FK*kQ?5:U$ }'.~,ؘ`9n~s|G{^R0˟1H}xh'awF5\&jEuw6_Q>6y]3'G58*hBy})}3@kLM%FS}y/־/ܭ-m177fxpY\&ebc4IOwo[#p9d.jIheMʆ%m[L½vϕ2+TUoK77zhVˬ*Yɇ:uoa l~L$W91! #1{ l!sߗt*ebʩkzm*kqǮň/} ߩ%xJiÄ('77i4f@r~yow_ Ty[L@"wՔtIBH&D^^x.CD(*&&7rcLk>CN+NAP"57z渳`j4%~r^wnS-hTt LppnT HG@:Kk;!#LF-,"r]ddږ,_~'-RA(Q}JV8kV$=CY>GOPDZ p o,&\KG됌HZ'/`A~EIEhaW.fRcJWC {ԛ52Ԧ1S&.iV_ MufoD_IWm "fFBs-gLn-ОD,w-cg(|p#n9VYj:ͥJČU5?Z<|wk..~%sPN\&bGM%ĭkJ[sin:0+yh_! 粒z;DCqXwE#wE@3V䂢"|[le/>W.Vy_[GX⡊Pl^!kPQVگ}i_m?Iw%xUJ[cF /գ"X{Y>]:ظ(&n;$XOD:j/v; 3bOFSº7k!񌼮fU6;; qC0D Ls'oŤiMa@MbLD rWpwd9JQ).S}SO䭭+SrT0A[Wa{V C ZڳI>[˧αX%i 4suvL4mcB- r"ucgI v,lܥ@SQ!}1Jx3 RC[8 #"Ϩ۾G7xm)D0n/5pGtْ%h_gm.D5{10I#I#=@_`(n>Xeh,t:'S0oJMLS}VӠyjGx r胊{~'ٛ#Z='o<eRr:VW%bUҰMϾՊ0%>8׫oadѡcC,~5+/.-X]g&Nm&kqݪmt{wٓw:~{48OzzVh7Օ9&oХ==iUq7&0t*`56u/_$"  jݢg]qX p)Q^yH[VT!Xk*HҬNG^coŠmDT݌g׿mZFH' ޑ|4Vda2m0B%NśUs$%Lʇ4pO;7ъ"UOO)]{r,y^+q 5 Q(X 橽ijwHCRvm7H]g4t/[Zz/G _[F̥?}_,P ~7lx3}CckgrR]֚U\JR?ha6$ s}zDbgI_E>rgjg/ŸK(s>DzkC:*"9jd mVknsNmb*ON@!O"^0J:dD^䍨* BGn[a qW(/vNr3 \E=jZN\*pYZ=H:`Drԉ5:[%JCtR1X|mg!9QJ9%4NX`dOlZ~|@s gd}bU Q%ctȧU R:$7dr);#Hi,.ʅ 4fb/8MD$Z*s&PMبRLQ9Wױ>:^ kcF&)sSlPdňyU8&p􉶨REƉpHM(`HrU>}+Kqb[Cn{R>B+vt%1 (I͒&o7FFQS0>Z:;~iphcןD!+s2oy-R3n,.&#T%9F 9kXN9JGn. J9D_޵\C5`K kKxM[&.e4eqԘڠl$8iyX <nCJi ;YuR4hSs챛Hg)-6"E\e%ReGM<afpS.:fC 0qm}|^yBGk`[J Ҧ# ` q;>$؉,ӎ1d ~cxG,Xb%L㶓]MNPS`4՚Tq7~b]ye}UCk-Mul0[cM雌p%# /r`H 4,xe0O9GS.C&[B#&o`#C+f%ݚ=لv(IR @]2Þ&S"Η}c/÷<,%co\ʴE@_$t֠cEG{8I$yxOW>g7Wg_p~2k4]ϱ9@ ĈJf.R6f(dYڸpsp/;uǿZӈMxMMRARIIJY|rM E 0t%./0yݿ(_㚮@g P"$yρ99fpBesCQ37&)3'y wr!=Blmύpq7 ـnfl` # ds:_\/?Aųy!lV wh ȓ]hg 0op; kii Ь2W4~ԏK>t#Q'ĚC @ÄC FKhҦW @i+(U3 g$8Ͷ>eh=1r(v"z}ؙsէRdB8쑽3;s^z[qɍrڎ54jǒP2?<8|)uWEr;ƽ dF/2Nۭ2 ;w|)ZXEXq%@`CE d^AtjWhgb "r݅ʱ7X #Wml}[Lp _\qջM;ǭHVJ ۛr8U7Vv Mo[){*%C[4tl-5ۯWj;^41`4*$DF$`l܅n5Jk ^f(B8ŝÛA bY MPrVt6V4_SAXopĊ {?m/Z:{q\YCF:ӞO3trWփFo1 &M;jꁃGoyɬ +nj8)0>gJv YDCec#Z4ƒ%bAju4.+8]y[6 μ-+3Ξ?Q5@u\;AѶ( !421 Y:*ܠl!# ]->(߃ sCl}#BL"V RswbzTafCʡXHDXwԻ{46=ZNj3ž?!&\o@vemRoqܱr#y0N`r8kf:O=1I8'BGcg9bqu ѡ7u\ej,Yӹk8F@9d`p~G%~ p F~p pqA `jw0` r[\ͼB" oWEoGK7 ן}cp H"TDT'H<ݶޚp'en+ZTh"]WZ{s5^Cل'i28䉄]]]1`=[GG{-;TJ 7ߏ~<}Rb|b=kdɂ&W$5(sɟh "uվ݀.XVds!oUA9wĻGs&˷Jx?$'/> {5ai+~ϞC#Dsv쇙7`طH@bA9-x^$~R|ழ B[j<%\ݾGBr;Tֆ7Œ_:p mNa5yq_y @[ujwGEO.47\5,ZYӻ5<%hqdtnZT1f{w>J0ºC7E=DrE&垜`;?gq#0,`>?w{h/>U|j3w*5UI0J~Vy] Sv ]e EK/)S*Sc'Ec=rhT]*&:X,6eHH8+VY5~KiO?S}3RM[j#~t$m$+~R>21Y-/U|)m̓avOs8Q0 k,j_SCj%u0[`S[K,VVsJ;ڌrmM&o^$lTN/<*vMi/ ßQt7|Y".Y6yySP$l(x{ ?k PVZon͎b<#}{7_BG/4m0Z C] $ BSŀTz2̕2#7Y4٤pCGG7hrƅVW'@?kuWD{1.V wIa|||{qK|/yQyR=ץ~K/ 4L']P?@R2y@X 0Z";M( KJ]eve') HVѲEtprJx:؃]=E(͠l W;J.V>vJQ4 Ԑ&Bi$f`cddrx]_CLdU3~pygи~^?A,o4^_h|n~ko:3>gg?߯m㇆o|\)kym?7/߯o p~m?o-v8yO׺иU/Tz8x~].._!jk/o}$[ ;o퀎_+ G8y~qsFӠ&>pJbWrq`+ ͦhn o 4B"t) q̉h442h0y;:pr@,]\\wY-,:;98`8J1 ByY?-.F-.)/x./@Ȩf.@ :D8.>B4@4 M"*9O"@@O%Ѕw]M_yO~-Y寥?')O(Y?'=ߟT\~VO /r!ןXK~VO.&?gU?d.?؏EُE%?52}Iۏ%?+]\*IOE?ku? 8]MeRS~*Y G޿ G޿ G?>ŸR!y˄ 4~KX6?_TS̜OgMtC??iIѥ2N{)+-W;fB#5tfF(2@;9W;?S~2~ifQo6؛AnߠO}~m9vSEEi?&s|9 J76asO!?PKF43W0c*r_mD|8TTS/yy׉ﺮ.Jstd-=MJpmo9mƏη&ԋVK_|ECE. j =H] &&-60KޜpAa}Q$h徍tE m.]`Kr;5Y?#89o"CBҿ󭹿9?us9c 1Gp__ySNe[~r-{:дrA!Ź!%< Wݥ-#tOwPL|LH:x:^a5~hfaeqXA](q#5/Cj\Oݝ: ̀?܋[BW{U=?OW}zo)Д{K. /rŧ 2JeYlktuS d1xAeXXȱm.`_ω+GuN ]]}AN /5iYVn4\[բ;w_=.遲eH<,pǚYv[j ^KW'EY N5\+ ZX}l%3fO~G[o_Az>] }YmV*Msg7'ck98VM_g??X(27Cȴɼ#Kckm l~k8OL )w,Å&ӾE엠0l;6saL)^YT!)9ҭߟ:+䎃c~TI(\F[7$ BZܼuy@~3Z MA 8Yv>.熢7]M9;oLƚLwGF l̉hW5zAXMieH a>[Xw?Gy(*SE Ms%hjkZ5lz}:,G>ωyb/ 6EVJHs{-[#f nj)UqX~c8%}UI?a<:R]{i狙As,ڼd5L fRj"W`nx*fqd16,4 0(3VL\5Js _C 1z^J٪B`=BZ \zM:.Gl_C;^vn" OP7QX^<#xk:^2{KF4u 1?R#;㦵%/([J%";zek=b|b> . -/|%qvmHm@Ls,u]B#TA&T-Bq&'FZ~/q޼@k(=g)V=~ʻodl*p!KPg`5N7:9 peұ& BBvqЬdm ʌPZ3^+ҝݑ5?$ aOa*zӇƧq=vQY܂5gymie48m&,:?@ SDߡF5q9s:!DjR^GO %hӶwxWYƈ"0!LR.:CBu6rgj5恔LcxR%2`mev`i8;<6'Vm-|}S.Lݘ – &)v؀GmUEM/j`gKaUǕvFdCjQ;H+*HN&y"r 繅T[#:&l,d!馊[m[eՃ^<%щLBVN]}ʾ,a֊~U< eULRu0| Wܡԑ rǓq$z4Dk r`BRX453QG.Oۻg;i;8~@I$n'l.#neJϣ|}N&M=eS}d^ +!z`.`OKJ+n.˽Vknl#'-a0`NIu{ۧL`ϡ*C]齵D4?(YLkƛ:2 AUCq*ΟM{M!PDŽQF8`)@޷a-2>} h5ns%Q]9#Nz'=[6OS2I.5fIꏡY:j\VܘoS[[tp -Bf(o ߯j/Ot#g ?Q%KNyOdK6ʶњ6Ǯ 5Zqgf"%[3*u}J-y^ㅩ%S)-W͢5J5bL3{v W4-22C&K- Ƶpx?3zOU'HA>MG4L{GjY?FոbWv,)'<9 m>bm` 1x8mo>^t .LƝq뀳UF1D!vi勲\r89K:R +V .SFoOA2Jʒ@''޶/8=fu`䬁0 wV .Q(.~Ǻޣ}[z[QE[_TvRk2]75+ЋU<3X= ҘRu_vEL."D|ZڃvA^dus( q^Yf5۽꿿-ʋ*ʝb ùih*p"aJ @{rj 6I|fV$KUN [p$rRj; V,}2ny!"#ŒT Ϫo)a1 #ܟyRA&WSIxcYp҉"޶0hov#70 m z#j)`zcH-Y~2O49 5L 6bl@k>bX׵H4)Ȁc7}O&Ři <* ^u1)W=܈-vyNU͒QjulKf*sNs* Vbrctb^ĝFdm}I1et3߽Ntȫ]94]EK6 LJl4pѝ 8#=l^^VZ;)HԈkLS3&4.CtJ`oI⣴ByH&b?iYKV{mkj-U?\DXZ$ye[{Bj9aґv FR#/\?1.~3,J]nWA]AjTbvMBȘN0kq7j /ܲ}HĂ(_$4`B\I)Wg bЕsј Y;+^]=D$ԭmSkRŘۺ઼A ے*Q]2㲱fcw@2rp+"k#gE\<Ͷ0dW#F'+R{tG_p#+V8gnFr@bϤ[Ƶ+BL˱oLQÔ>|ΎHW8+Kh[XEuCث>4UGܰg(vP℗ƐYܨySJ\WrN?/ӓ%f⌉f=na*>G* B[\^a7XZâ=ևMTIfR_LI1p򈟫I𔻳&W #Z!0$ϧcAbS <| UFsj q->P )i H@BML;=^y3xj9ěO١&4el 9`"7e\VER5v7|& fG)`WV=ځOsaz ;Vل<0Xbmcm1>fde3ҁtޏW7-#].ݓF;GHF8+'Jfӷ#K0ni}~>;Uܛ1Y9K"!Ӵ̛ave]fbrf(`Y~z%.< Wϣ}x2WgݻTG[O>$M }%h>x;ֹXC^7 yܖo,zF5uOwn{y?dE|ܒ쳪;n$5LGYݴ2I2uHh(镊2iڍj>{,(noYygU{J4vkunuEYoM%!뀄3 >D0=9+%2n 8лeJ"bd|SB& )UcT/-haNLiEwܳ*h[T_/2Alwyl{pCZ]9IR RlXz 13~r?f8H _;u"b?0KXMF~mAޅ6b 'ѰâNn>:~kPTཹ( AYd8xJyP%Ln[&bMK.Y}B=L fnWֻUl&Vɕir򝠯v8y"by煮C d9FFg `&d+Ѹzf w 4*,l\G85ғֿ:Yct(S[hMPn2AIT"f}q}#RNWG?j.?MkdBGZ?z,x0UD?jq h\W)BK |}˦W׋qwiӒVJk\C?'*l"UՅt2lb=Phf4tSuIX-Ҽ|f1ܑ7 7/7)3Lnd$ ^ìXTuGs1ӏH6pav': Fjkcj4Ku?಺a U =@K`d+v!TZA4>mgVx`. 9)>AN=8U<>d*Wu ud5u9lYųO+GoݾSX۷N,r̫:PG&jgO5aJeK{PT]yyKbIKcLߓYʬp֡2b>kT1bt5Yaplk0`V=ET^z,]([`sq~ۤt~4] WP8g9KJm7H$5$bL؞,橦g)7`Rp؈ iO:)'9V!HZ$DZJ$(XT%;ԦHf?>Q⯰fs)H~@d} 5k.v64o4.68]X~&T\G#؈:{U;DTNnOGj8((RTvlqf/_ 3wR.?fck WeH)ol>=MId[k9>Jm<˺g5y]WՑ#~ikΡy1j~:UZӧ/,} JHU]ܮ3IֱMvܕY#CvlUIYݴce>W˯?v,mqkT{Ҏ,C8"1#6ɣ4[շ)(K([8DN9d#6)ɴ1v>\_1MRc/&lW RHp)...}I/c޽7FwY2 Dmp>"/K´HB#ffȅ{ngqssIJ`_"kyg/' 41XOtk-Wej$0xą2Z_k̯3YpbSxOuf|jR#zXH>E+R3*/5_:^z$~Mĕ\-Ot(aj+gSvx훢8Ts}~zGTj $3)05KO[qxh72 Yy59RAk\L q[Eуp­mD:WY}I'7=Gn EܥZp)Yf䅁x*q"w\U6> ?TM}|:Ffj!j]8Q6q*ҔUfN8n:fJCB Mm;%,5saQdNLB{YK ƸֱuWNz~L!d#x2vzDSeUw[$C)H %2C2P'*0g‡E,WnFeu-rPEelp'' i)kp/rmK11 }<@e*yyANN &k ,'䦷 *h1#z>x OL8X z^86k 0FW8a+B ۤ~^D\;ʡ`'Vi#C9l1eع%^rU+]* 44b{?<ɁQkC31!z>+^Mύ hoWRzGJL*3adޥ|]e@ԟ7C t>P`TC$1'4ci\ Qbp &z k DyBKpS̥TK1$P? gߠwja.(bN誫yê}pm}HPB=8%}i`{K|^Fz0=_/S ZP,=bVcDhâDQ}AAD~݌iBTJf'9R+JZ>' Sz0k<9ܽ#TQ3 Nowp}_yIB:zsϞqAFH$/7! ),5z>D/й?ަNʪEZgY:&nk! f٦lC> PtruA<ܨGI5FH憓Z?M>ZWWڀ!1GC<ʃl'=,1bys3O4P%BФ]nĸG5F Wr-FTs-jރ.J97+QZ 'uHSCy,Yb:z00- qb3Di4RRy.|4|o1Ň$̉t2Qaczj6 {]jdk;~pKR-Vd֒c!^<1O`ԈGs^ֻ#1(=3aBxd9EzVHr D-k>!M$4:?&Av5vgU!Qd,رܛ n4b5XVÌiJQA\ vk4:ܕrݮ&!5;d+Zer6+Njз(Nihq?LS{g&gY& 1 4$1l5pTxQ+Cd2yZuQ#,槖4~7\yrg- B-=ʃVT/gK}w)43a9cݘ  %/rUJD_o\Ucb(}--i T!ƾM ۏsx㣗 Xq\/d8n%"/0-嘔B^]2> AvGr멮EGuathzVPN='M<ؖ_'AmJ3>P>DF¦Pu*dm ?mr,fV`\k)gI 7UMl` Y෠KLQv' R`┿[d]ШFP5na̰a} $iz*<]~=90f6>L5M]{iη&1(DTi># wkER |軤|<[y5NH~^a&m"ށ%BdʅIUct='($O;: 0U˛axV~\ ch_-qEtSO={\*?cb^ӭ5rSWHRxEh:GV;/p %9Vaڝ.W9GINI#eZxVeqW.d&0|VۇTǴ8qnt)MGeq1T!;GѳNoW;H7Yyg WeK4f7(@fF2;>s^Upu/IMG|؋b'+f3K+4LenŚI: ~jtxm.d74]f;6Dh ڇq[\]  @F1cgsYt O!._[muv:?TJvh3r$FWDO<\Sb{b-3O1}~|ZGR<>՚NHx+zJdRO-O[Q-tzpOAify?HDJ;Ԇ1@; -ۚ۶m۶m{۶m۶m۶muEq:ٜˑ9Uk%,6>?ine4{# O#X6ѼR\vK\X;xݴa`Uǽae 49&^O]eg b;ANiNט?gS)/,+`CT.Ad_X ,co+CPq} ˌ$ eYC/^3<N1cF8q,TQĦ#q <Ը,$(Th;LN0sc2- J-4z V+#/$U.oʹz;+5SfzI ,hunfJQs=FcrDynڛC)=n0v"T,nr.Uqh a M9H2Uz8[^I3-B'<~#~doKdf0l 70qw#Vw77#[EZ<w7_"YR EtҴOGM}LD4R&Ojom0~ Oe.ύUpD_^OlOCj奨qk]x '>mMݯmzf}?5շIIZG34ӴMa8TΞ4G(9 q\Z2rw=Ʀce`wgsvݼLj~Bz1s[li=k+b:@3u "LhER 0r3}SS=7R3"! FNYkW[#[[X @DQ+ԜC(^D xsH/@:9qaB(ohg,EʀdFbMub2v?dyf "l{>EEiwn#!1L>zQ\_eﰨ: =9t8,AJ- k85A*OV45'(V-̑^'#ST!B+x,N. AT1 ^$Y1a)wy-s `D-YTFI]B4:b6hB}o 5Aq x0\0╩f=G-xaJ<;7Qrb{;- i]ҸU7B2dFPiLʲ*U~]>ߙq{ OYpmj`+ Ť4BYXwpo?vs\@s}zr&o x;UJ@/NB`Dy}$^^oQPn`Q%4ԐIG4QH̄<ˠzj|zc\#ӡ~~"n|]& @GS8fx"h3 e!QOK{LH/9yIe"[rBN+uel}}I0Bf׈elj86"椌ߦ,iTIy"|2*zw[@s]=mph?QZ#+C :Y I|$BNK &V>MQV5n8zGCz6~BA%!9GZvAA\Zؐ%GmEYpNgC?ُC嗦 bmLIPʐQ3@)z"t`S+%9ީT^W\0<XGákg {Jɠy9wFSm`?[nk횛!)1r?GKVh*>pȍȰF)74%WlX=` 2g8}D1 揊TzzGY\0T;o2d]#e*>0\% `n(kL$MoHUf:Z1=H\ IOH^hd*V.$>-~sx)cX"9[^Jʑ7HgG.(Eó6IG&bη !hRvpd~'Pq^yxfl XCB :!ff-bBdmpؘ0Y}L&go<}Kᓡ:Lz6(|b{?r0&!i.τ~LzWއ#Z?Oc:FevCEČj$.RU#ЂLSG!$'QlϏ$9N%I8G,5MCJf%F xUMcTwCEIY?1LOä9@ Oɸϔ=Z:/FlWrOGk-10!@! FǺqC>6h\{ể<Ч3a`b'0[-yy/H4PKb4 vWpՄa[Ekc6`<=Յ7xF,q0RQ>y"(RG~ o~8wE*͊ +8צ>|5l7hgoq~[T-oyzv*[^qUc j W6Вپh?6xNNҠ EIro)jw 1H?G$ cA{ 5d'.Tq'*t9ޤm d:%lށsg @|WIfoc„tif&z2y0`"~:VJ΂6 zaH[/_ Pr ִ h| >,VrbivozK7M³%G-L5'fVͪ6`l{zt0_dRǰWFhzREzS(ʂ2arq /^0őrEڷzNw{Y\9DZ[O't ޠ+"2+OR]3`MAXf{J/TSKx~kWvI2鯲Ąa[C +lS4|rPHЈ:Djՠ[RdFş\p6m4JN>|,)R,UoS^ b_VT,*ZNo1+zk\Q `jivD0IC^Epk ͬڋA Gs%>ykzmhOkV!^*>0/B(whS^!e(}gt)-4FKv\rFb 9951XW/@eXJ1 ɔ+,Tqi9XQɹKckkRO L-̈́;)rӰ = `X3st6n)'m8 T>,߈N4`l$&B 3FیݳWMF$ՠ$^}kd,#;# <N vYZ^BҚxf{id|V }TxB7 FʻxY DRn7[/g5V*uPn멼힍bަiD臧lF@-'kDHeDmH.Y'{J)~XdhA|6qP*I"6FAJS*}x#_+$B+ê}Mx#a7\Fޕ;'rt ^9 ^Aeĺ??S2/#^9'rLzĒ^7fiK!oFSr]-94Ew .%#׋- X\Edy.@TY'xhB6 ˟;bDLwIdmx֧ kx$?QJXAwP~BT;[~!;D[@ ^gʨV"=X!ϩɓ覎XX>4<)w9|;S֍^Q7̚S IYT̿ȃfK I.`duhPZleM0( % +km!=px& \aK$\H,} i10Z^ gWK4ʍkuٿomq\,4.<_J>_eAmΣ*?w^t}>ì<^.|~|>WȫY(ܡ(;}X5#@WS#XPf5<*:0;A9&"7bcl|+yN@ћDl[e!T}G*UȖGl8uԵbDYQb$`XTD >[wpt-<䷯6+$RB=/eܢ\JVmIұ֬V+0iqAhlըw2qZ[i:pe0L-Yqox+;h9cv X8դg+bV)祍nQbBdФ@qFaҒXNjVH)>vI7Ƅ̵ϿҦs e^52ۺOg! ׏NE~9j2#rN<+xy;͡n;: 6l`.U"y~$JdCt ccP4e&ꋫ m.&Z=` yJdQ++~V.c%a6b~/:D׌|SvөhnJDݩ({Xouj"n#F"lLaHRR1v%F|#4^]+"kXY"C&)nd&<ؚEZ?rM _1޻Mg2]ޜ51?8,nɃHumY_NmRB"}`w\ה=*/`R&ᅲ+ʒ.E1Ǖ6 8KԦ y{ei`l71)433b-]~QV Odߥِ#}1<5sx΁_eN33{Xx.ܿ:`'Sc7]ʝ[L|Fx"m|5•u GR/1Y=@Op $aY89ʏ ˟婵qy"У%NmܧVb4P{ڧa0M}^'_s?)6^הl2|Gpc# QܺC =KLd#Ųi-(>?xӲs}3.uG5}y6ixWrz/fn<GzVS e6O330eocHy%h^[:.mq+Sk{'$hHV8}شmk#nlNSpT/9za2|n៰pL%ՄUq 4`F|ʴ4GoWt%w{J暪iz^W/׽c-e'NB]Z 1as~1?6+s<hűh؈[Wa_±ou6’5qTMśf!TY G?枆⪀ld^w`φ<"':U{`:uoz1(/~g[K $۞/b8QbLWZXTY E"X>N-@lԲT> \Iu?.P!^N%tCɰS _x,y-9dBzm*9񮏜XoPtX(cGM/% [&H++7@_Ν) JxU F"Ad2_|1B 3oT&NC߁A ybg>GC2}+7cgϿR>SpMm茶l^ę2iB[8XkqUU[S3%C@S{H+ռβsqD9EEYjຓKb`W0 \,/ l5=AB?_BsuRv-\G_!Eo#YTJRQ RY3fFЪg0Q`/8_/W vOP!@sy$U^K]& ~BΒ [A}[?e|.  چ:Ԡ7k$z+G5!ah,]xNHɭKe5d; pS&,h,-H<8Ap[E|bgJOq+4TP(u 6 _x˧VP$:_+ =Yʱ#16{bߘ<A8{(zFi? p~M4+1KmHVCIdӆ22ANɆ1@3_ ]:Fu&l{YOYä: M1Q&/EܰQHUtf< \4Hr0) 6zov]s~HW^9#LxD;V_N(̾WĽ/Y *I);ڂo-,6HBKEnWd>VneAR,oi+ Wdb5f0❒҇n0BxZT숀r^:cۻ -|6RDV+k?k6D)ϜM`:a❔s<(q1$\ iNiw·H>b :e TDK, z-J\cpM>"XpF;ƹH}^U7hU:ˑp @ ?]#×o+Pb+Ztl& O Ԉ\g2٥=T`3 ^̈́Au%nhv%; ?I/k-dOH>r!ɅH `ֿ6E-yCz/H57>`%Lƹ4 l/ZsQA`rca' xK\{3x8V۵j3p^<ԲO\7!"G DOY#K!=SLQڻ-KrRCBmpLߌ7=!5d)KqtPqz8>a$wMfG`)K̓darO느2$JC;$KCXXFJ7[RSGrq~KS}؟}_=g4{X Sa&\,N 5ڈP;N; 1?xCjsLZ?;h <[W ۆ3 .«K=ZzV0f&(_R}PxQNk\F )Kq~42ֲAc۶hXmXUoRpZ⧅*CN[G)L;KP`6;*M 'F.y__$rV@ɍRBEL*u1fy?.9xA$}䧃C&~`YK:!ޚII>(w. k׈0Kd}T,eȯuzG4I֪_*xoZNٌ=`z- ߔq B~Sl 4vqO |"bu{ KK*C{/[(@NMB,NI=hŵ> 1.ch^ba>zmBf_ll+/,1P8̂~ix԰⥨gɅt:@-pL%7z]U7ల(?dV=EM`x)|Ÿ#oM4gi#5"G~_ Ջ=cь'b}vr]/ J In'[G Wf WF_ Qk*E#8bf7Hq ?@/s,, ׸tR$e6푭&9xeroBh<ꦀ^7M״c AHtjY~i^?M6`_ ߛ mNadn6DlwOcb A!#wmhc|#p 5ݰoü]a_0`tYik`:#ϸB(\Ůډ\S[WmxM4>.L=++I])__#;n4w(ۮy/kdbm;9a'eyTK[$y", L`GO×*RIl$4Oz: 3Jqa.5m`XӘޚcx4L>t\}% fm8 `zJ\-`gq#!t8) wz4!\,UcvzEޢ^W lV Ae&<54,>n@ꡯ$L"PM#;&U|R' W`8wM6#$idy(8$~-Fy3n0śvpJPCo;."X mg uK58'(n>n-VܶD~K2˒nƒQ3+0]-'b?(ݮsYlw="n`Gi]j!Ɏ$8Nˆߝo%Nh*4?کV瘨գa8)f vMCE.qcX0&GQhQcXkydWjuˇmN{EL4Rgoh?ܐ.OZ"0.jTB6))osŋ#O͉AQ{)Ú爖)m" kfe p0N-'q ZJo1| Aع&* J?G̸h:Zo[nצQSy~!-zGZش!0RY|ʠ{-*-4 ~,ddGen'Û*AW@&JhmLɻ'r/K~ cE eLPTЗ5$R4i ROq) hޡ&bGwoޡ9M녦Ɗ!0E<Tx7 }@57o;M KI &o49 I @dlMrDZ֌͢$S,{}fN}yIaන|_j?_&ޟZmOcкZD.B q|9D{(q#J]둳 +[m<c=^4ƒg4MxeHV)qV @L,߇ ? (.o\:hoc/HzP-Ζ-V29\AT2ɵrK*ʵev?tػZC=K 훣Fx{'#Id||b..ckf0y_[h3=(ny%nuߚջ-ΈiRN62:mܭ09>reW95QݵvsLTIIr}x<8Ԑ?"` ڰmՓHӯy[(A"{nb(VO5qx Ur]$ ~<]Hcr `NXׄT} F? P@>˶Hg߁h3K8Xv hϿq+HƜv7N:yd$a!AxK1hڏD:KBp1E:lyKC+\ e)V7 i9婨'#ֹK`aOfI,.*Pˡt(ps1a@Nr$ a't#*6ҳM$"1qi+_%YkV@;!2k `L]ۑj|nٝA?.!jsD\ kWG>T8 8bV /G%m&{0eY0pߞJ4O3SUgSg8S01rPw`?$2[Y=)9L1D7 jod8r4ڣ¬m-Id6S ٺï0hu-誇H')gi,gpr*&-1pJOzȰ|Py?yJ:_ !4>H9rPl[*ne !$P+*]5=.Vzv0M9:6=V٠V<YF3>S#_LU(8rv0_%)Zj(U[Jkҕ=Q6X-^ߋ5Rc i˛ࢡro<0-(Tx @L-Ɖ5 +>. yܜqp (-U0M4,X]⤫20L?:[^=5> 7eNhEG 0 ?QDT&).D2p-&l(SL|FiaV84ƥ< YW@D~Lb_?/_Vp3ʞMz1jÇ'352." kd jV&>LOӮ8%fP\̎.sZ])nSs}!`ZQ+o$Ay`P[Dx=(p[:\Ɍue:@.mٍw#{ Ykդ7t~An-"DQ*N8VGwJ_~k+5ч#X3lɕ6Q;^Kei'=YghҬGj:>D|B.:A L>l1Xk0 -X69i$n9E WERb0;=iYv#3e9U̵ DЯ;]'B/iHN#oE;Gu^&=\E=UYmH_O2Q Q$A~8Bd!ݡoOJz>1ZV͹( aGCN$NxcVUM`H#`L/Kn! ţ}&ck,W/.idh 0G0"ʌ4k:;F47 wƟ{Ԉju\:@ HV>'ܩ!C|ñreXDډEԹ:LizG}v#G* ΐr~q93kZ=ni7 `l)"/Xxػ^ XWxj{c!xpodtJw]-PFc)\_u ~KLɂ9ؾ66387gفʡgN6Svjy+pМz_Yp'ⷿL$;ioDM9Nt fMHZsD}y1)7ǐJO{*N #>2=&H$& d˹) `y(5,/l*<-M R܂Uӊġsgfz㾤^ZSEV?^4fdo ʂjjWpj4 R'3K1$1!lS޶T5DAJ'n]:ߺ/ϑ-jxu&v:[=}?o<%-oԵY3eEn8E~բʕn&k'Pmsޫ {gc^6 7㥍zf7N}b3lzdge0~?̮H/ERq(fmӷEV]YJ#,+#j6mP TH09Z{kc勓Qra:-܎F%ighEL׾WA t (dj 67p(1ǥ0'Wxq>71 9T$6PP=& @'Fz N9Gis}M?2ŏN|=reԄ.\}O G+uAX>J{%B,&^[M\c 8s/KAhu\}AYMlB 896 }zs+$=4 [,rvեA(yB &hz- %Ur9q(9B"83&jIU-OU)bqaKxoHx썺dz2<`+O?j<T`qN?S-o*) 䤄s#XdpVgw jB.%ټHꥴ&L445p $P3MM&(}04gZF[߼j*y% kq%ٺETnMO5Yc;90 zgfj%:wP_hvy$f]R$"T٬)%xj_h8PNA[ $PFBIȓ.s(KX:A䆊6:<0IgIg+<턲P):rbCY""o}e% ^ԫ'GWQKmA@" /JI& p8J |QSmQ;{m #Ўǝ (ײ%.ﻳ(,o ٽj{ޏ;}&Y U} `}@hj j޵Ê[S!лQqGhFQŶt*zU_{P%yl I/0"NgquDq9榯޷x9A~6_rtE:eXl^ .TL'fT840^{Haa/:_ ?v: _MpD:ͽdsF#^a 0 $i Etol?1_:߷okhYk?k޹C8h@ꅹJ]nDM$FkGÃJ '"uxVΓE-Vy<тT%2zxKZ,n^-ZTג=cؑl.-w\j7v> AU[iFޙDhڛ Xԋ&RmFG~[NnL e IWRT#q@ed1Zl5o% Mc {u#'=|b!M|D'r:P=o?lg:\YME(AA,-P7PblQܒ *PIBi/Ӡ@6lš!'Vq,bN]|; %?)6Rmm:+d6ƻUJ5jddQE /6ԑkJDx7i? | h일=9y:ڛ9xՔ܉5u8t}ԗ <%Qv jm+T&a,L:$^pUoHy>qCcG Rgȼ`9g"gH\6 ^* {.|v!.[sӛ%Vڽ7>Յ lm g2(]i^UmPG&RmO >$~nc3gZPD>z[񭕓p|]W/Gki0 M#PqQ^;A˭"ix(U"㊜KK`1+8p6,, BΥrvn}ت.b? aj:]3 @( #mJgd[R4c΢Q%ԒI [UTML嵐CВ>bx<ۃ$U=Aũo/&Z#@ p#3x\+) orZ""z8XK (;>+b~VڷN9hҵ\h0N@iz.웰S$%+^RL5f9{ʧbb@uę63zzkKB JgR|kjcS4@:h;=m!T.,Sgf6dM&SA ~ƬW^]od3h [GOeA$.3_qŌXmh?kd< +-`4tY6l 1{rjceY]gD'P6NԭeQMʛ7ED&&L:f\]u2[#Gà}mŎ {Ti,.A0姖jlG@OybgyI⚛Pkg,|~l,~Wa75_T n0j@sltj+Q9DjplQ0$YGkfgXճ,[}TAOzTG-/-O_J+g=qbDdTR^, ]@[j+m>׽N{ zW4zS!0' n?D=JB>Y|n9_#f=$OBbCn$yB-;1 F[q}T<{'󯓱 ^QKN._Znؙto{ED$'Rfфb6JGKjTN3 =ɘ${n5B zSSR Ne/"K^4*1c.ú@m5\ owQ%D+d-jJ'ʈٷ(bʭfuq@ 10&VQOnCmY+vl.sPaޕPfFQn 0i9 ^U]$5NMpFut)8=+F|i5:$J=y|i`^Ѝ$wY6tJ[maf-Žp'd7qQ#bIݏY#ItȘL ly[RsJDt7cN,R>4(]E1F@\l2n{`a@UH! %¶j{I洑 /K8wSREn{1v1H(:S%Mz-mts,ގ+Mtf廗1Uآub EXB}Dm\fUꗏ0M@?Zgǎq٬:Xa9S 5kQ|#&cK_[ՙ'wӒבU)T m2<)_^dWj=Wi;h#A_͉'E/b𚂧ƏȻH!~0g3mvZD葋uKۧ($k` 4LEj˕W^\s`c,%[ CD<(z;7|Us[3 L" k_20_y02UMEXEdm.'r%U aJR'Y,SGtiM?Z[SX&4D`]|R|xRnk}ލ>Agun /H$5gbf*rwf;ЪUk9x=6Jg۳Y煺kaaօܮ $mf+'{Q2}W|8[1p+ZIO %J:{ϲoLgT_a1qz# q!)gQ6 B\FPѳ0Hux~48pR=6[uaO|6ҷj{" i1_6XɛËtI10rima_}vtTgBvK:eNLGK@7< Q3.2Zt4xlwvڤI|Ь?`ZݻBL>WwAkFϝJ*!=w1(;GVG~ rحW4}_//y=f@L#VZpwaW.<8:(FF{y'j5ruar3!4$2sVK.BN $(϶9/XO<:Nt!䝸USk4v|Ԃ^C&!oZB.ff~E|ux mJ+ ӛ|B=u9eU81h$s%G/V` d0篚݁pPVhv=胩ÈI0۱TWX,HF[RYcEZJ7;Aɶ/зE%')4BW$Vs A21>G]g;=43j@9H@>%AK(/bNܢbl/24; 5*|lD,;ވH68(}4=Q`)c;1H5g.fWkB1=p#?Vx V\=Yg;lFDF ᓝRhd!3#.MOؔmڻ:Ǖ/_/a )J ۢ߇RUEK]Y$ L鍡eAf#[vE$TDF%vgN(#0Ԗ.aMD @W~\V"i[QRc>7G,s첎ƿ`YH5nO'x+q$=0,/ Yx)__ݨwMi߀U4 ̮O2Lubs}k;zPq>ܯq@os"#Jf*z\5, %~2Zw+AMfp/:}ϊ$V+&` w^0{8*eUC촯xxV㦾/9Py h$Ƞ^1Q?5^aG97^B&yTm&ˋ9d?ƭl2)wd L?xP\޻n'Y";|`GU6aQQyWoFr_Љ&Ñ<,nVBD..,)YgZV\[h,Qvʼ6+%`Sz6lF1FC_xê>.o\[ *;[o;Bt`0^ CN8>d8ҕVHkU.Oh jCFkCF8R;_ ߣh>;'v_yOk 堘gpR:h([}\qnNT?8dbUW~7u\ Jϓ-&1w'ME=Oo|q"-0g/RapZ+|$ oܥŖ|]6ӡF%~g&8]:ծؔ]|k5i-͟/2qTeEvdlcD^y{;9ZKZP⢮*yp"23Fdž*+…R$81&*_j΂K8kt7_̠9-^ X~.>nsm9!ϷFrUS}tRO!MSv_Iؿ#ۮK0 x{?8"@,'&.id o@ Oƥ 94ԄPCl3X2x0mLUB^zܾtxgrNsZ.Q1QjO7"8 !Kg̓yTb 3ɓiQ^n}PWsB]+~v)>1iLzx.5+o*bNbvߓF  5{k{$Qu3Y.oz|\FHSySi+{I 3`)Wpzĉԩ^o ʙ 6e+ M<|QrGٹe}u33,D! 'omL̆Cr6T^;Si"g|hBod%:]]@{}rҫRgmVE&fX^dR, >OA)}*ht ͻL<8^n7,/}-ɷa@F$JO*ɜS~y)Jq7Avbͪ'Ȝ oJE̥~aLJq4\q_^]+F, },9oKȍCwK]|Vg\$|=Fyj,h} =V#?p~x6 !YڌWcHn8,옙 y@LeS6 жDx\cɵyRJS/[jU1rFVz陰9 Tw:"fH\os0рDh9Ah3ΨL=$P"Byf⤡Jo& r_Pbƫe=c"z3RS͡L<”hX%ھA:&Ih% Ҟ@4 ;A䴜ѰlI|Թ9<}֝Q{+bg P41J1լQ/֢(%gر٘)" ;R #Z)pnUOӤ _BCm]T|-ݻP žV;Uljfp sk}#_{?F'5l2C/fC.1 WSplViHO >+#Om[UPCsi6 "@@b YËI:" B(aŢ?}.fScVf_*yY>-嘆.aOMdB "k OrL$XoQ!c/xg|ʀfIȆ#ſzZ _{_CJwY^o|&da ;>촖j~MlO9ߠ ~$P&T0;)D𙆺R[f^R&z{wl|~X,_?ٹDoxܢq_9M@zɃKpc?B} @~_ׄhugQX^ Z-5m\9wil>LY2aB n zQ8./Z;앎xta!e*}íA2C wcy:F5# ɂ@ft9YU%FT+5RTkI_]I0(1 tUp(^C}bBDSI]M,US G/y"PMېFT*4J+!o bQ=Gד5_E~7Q‹%N fDP͈\1=d@]"EU;1iNݟaN_++grU ǘ/|嫺־p};5t>YjQFta6ۂ?߳ |_P7v>֯AjGƩKenTSs`hдa$-r7f y*L/EWƪ S𲈟և;Kf}_~|ԛ>T,?4?lyPjp6҄زzbRSIg % ym6cFCjeD褄7gE;לFĢD-S~]GR*h3A+?7y5+ l7Hڒ ó5ٻ;K紧^F q͘g1%)%91pUQ܉~NU|&i#l:%nVeND57aCj Rv6 e7 wcH/0Hš Hl~*W6|CJԿ X?CaAQdbDUEQV&1~1P4 *HSFSzn𲢄I}>J1 je$"K+ם |id aH&ZDqte9$ FT`1/A?}Ci+= 38svPl 7~PMFNy  2AtV*-+ո}y.5esG t ]6TՕ:P#.!,OӠ ːXg&# \7_ykiT^ e%U  nG]$H )9^ f̥G.3ǛH#-z/lw% >EG9D8+Z0ӹCVHc۽q3wk.]SzGĢ'!kp[lKj-K? mD0+]΀e2Rb1cBW[ O3󣺫v֦PԳD5Sg+sbi.-xD b \(`8+-MC;䒙ŀzJY1ȐTtT/[Nhi0OpZڌϨB !nMmuKSκl垑grU=/6#FgL'Hu_ !JiNrK,M^*1\ b7M'w)-k8]X [Q*1: X~sFArlk*BՇ 3gqH4&Ҵl̘D?o5D+ "P^uXuO~iUF{jwUDf{ߙ'@+'OYfzC{#$ږL%pۺ9B"<וNkOЦ9`.o/5T2L>t *ƬNKHpN!"'5/QMϐ؉-U2*4"< {Bo4Lv ^7 6TgX.kЖMlf˙#z7} e&T GȬ02mXiZTyBӡ,]!Sܿ"O?hyw^iSx.luMM[/fxt) K͔D'^O.։vL뎓;Qgd'(  mʼnR7!^voe]튈/86#*S1Q_ȑgӐzAq0}许tls-ٸALŸNɖӂtC|\w&AN(,H~L17Hh{&$1Gd$o]ܻskuJ0>0rOQw2F" ތ ;16so)eO=ߟߴ-,Hή-,1ɊH7sSvk-^>Rfҳ3՟]dW::q 5g+kᏗi >\I!x`mq`«̼s]1dacm^mSi%U>{ 79[@\Mݖ&sϘ+CC^vh+5JQt+#(<+R'uػݾܽj 2~M͚oz[3yؕ`S˸wrm |v uN]Jx 9 o+7WNgV|\+"(ͻ'r@Aco<3y{AC, WI<1J-)/jwl"h"H 72B}UU_]@':QHԀjgjVeԉb΀q󭄯XN9GoXcwMbA-d8BǛdca2L$dvCCul.ehk1| q;c/_5G`r9# XUE;N_FO (6CDqLz3.,=ohem%jnWK6u>ܐ;3RڼK%H }3.<ݗ\勽))[U:"z0K W‘ ồ[3ݞoIĆ_8viZHg;ws`,gX;mv9@Aťx~>I/WNoR.Qn27YhQnϊ!Yz!EAA\.;hCGDg'SKZ"..xl9B祏[QI_ĕm7YQQX/&ÖaF#lcg-#b][SI9rnJP$K2A FAPXj4U@/\D;Y딴SIj_hYgY\VR >C6*$#i ɏĦQq:֊'o%j͍s+[*'%ߦdyoC)lX21P뫂}|?giXޗ-{^;?PiC82M7g?Fmrs޼&jAyڦڮ&YBP@U"=dK",qHkSϧRuPcb.p, Դ\N--wOl6܍?&hlgH+zJHҥ5p^i8.UIMRsquQi潗Ļ$E~d6Tƚ9={v|JrNpJүj}Wadmؚp2lwF;u/h?>ff 9F; aI'WB<_Ƣ,88phS},З:άcWo/OOۛ:ά~OoH>Ozã7-~ }Ioq6H>M1Imp~!-mL= -{;QJM>{1 +^f8-M˔u06.e=٩KʯO{=qoO/Q7jrovo u{Yx㊛1亴.tRzf8XϢNq/0,7V~, \[&ۜN#^VsOo-d>Os7Q]L]|f.QLS8>Rt0GSVв)Y!s #.A|Tl>B7j%pve:` ~2ntDFx%jK/@?x/i2 fiDefyej/{)t-S9.WF\uvxVܧH@"  g\yv8:2^}=y%)F3~R=qF%b {Gʎn=bL_Ee^5J=4jKʨ)PэuNf{Hi*IrB OmMRކYz^'Tr4PqiK}2~J8FF*t]`Yq(L"vEUkre?Z؊{$6=(`AD%{K/*%O +@%_ĥb19LR"V! _KfTFR=wG <;|1H;EnYsdʞvG 6΀{襮: !)s,$Vx\bnW`KIo@Erh؆=Bu/ }ܥ d*JF[6G9$J9\f2K/?m,< R,j !\]-axtFw\g12i$^ Xq@^nu 1֣Al&6\τ痪 5X&C[@Օe¸{pwwwwwwwwww4Cp=H~w߽{o=緦8餂n'Q_:PLZf@GKUQУWk5*DS&iɌO :T=rS5˞M PQw]-[\^A|Š1;u{vT<>'(hNo[g#1^[ݣR`.sy 3\ ~CӬg [$-%Z{7R"ȳ@G 2gN[?JBB2H>Ҷ&ݳPoRXo^cr =!M$uм Iہ*2Z ̠b*AzB~Ū#LEyܤ8m%{'Iz0QȍOL9lYACl{|&m;a"E?!cs?gPE#!W_R-Ɋay= ؓoaG0lmF36"Jing!(Z5$$a.HdP:(Rf"ˁHKVCc "#BE~ BA5"sYѢzO;]a.dz=HC$'YQ+Ya u1tԿ}|V8#̇CIn@0U>N;W07Ic N(:f0!tM^-PY"[cLK;dut*Kr,6qcGT ~rjđOU$<˯=yt;s'JRu{H-|iwFKNR7dkB!+YM,>B3|R@4LeVK:p*gpX Mr4^]wnޜZ="Tk |O #)9 !1o;D0з>pעse F(~zͮgHǙׇ(tUx85 Cbc6e \lpUNGdrD\+İ 60uM#d;ʁςWNFxߞu-Yc`nHG{8t-+ͱgOc-a2<#8Z{4WSקmq %2+-‡4.6'V\LkH\,}:LB,{8r$4d1Q T('IriK៌98edT80A(+si3;&!8%( gS"31hI"H;.лG|95' Z#m4d#I\# hb$!W* n{p h^쪫.q{-pJ }5'nTn*f>`@NS1nY诮=V }CJU3Dݧ NLŸ/iÖӖSPOK6$!>Ǒ1QdÒtl۷I* I`M-ʮG:ˢӋŕ3گ#1lgNvlQB惇O3םPC3[/}MRieN0žN{Z{|.#bVN)K&ӟL_VjMy>:jֶQrJ&LXShh\;jaF*k.TW\AaCV?.|^mٷPC;OI-.*=_#C80fpڴ楞 Ce9`#"Kf̛>*&SU ܅e푐YP8hFvc:ahuL)ue2h #/Ю({1HP %ͼ"HEҍrkH]ɤNDKv8*F#})﫫3cs%X`t>\^y +,-9`P@9'ATF$-(ݴQv)B{1K@t3}xc=`t4G4TugRrhm"h\F.7rrP!J4|2Z o=yu=u=riU5A&#n =Y>4Dꋶ9Rf!ux_kQ.'hCwRJ^Th'Z`acl -ph+ G:w^hG6V D \TbW˯TS_@:&f|@GLM)]&TJr94wXwT r ;^juDL,M61_ZGY|7wL]oԼZ?@{V݇ݩ/zRR&nNPp>*”:':g#fe`rڡG|3ͣ;T*ms63N,ĵ}CD {VW}V\܍vcjWP|'-[!z*I3ЗJ {=CW`Ǫ|n^&B(N=`&@۲`@sokg.Zx3+N{{j"DNc *ΪΛyD]´f>_nUș.9@g+bIZt~NNuӯeFg yiB |T3ril'R98;XVWʝG H5QR[vyd&i_[7u^>W.^|->z<rra`Gď<_/Y/W^p }G.T|ʧ!Xed0Ѫ" !F뒆2 7??s^+mŹ B/t<1W?l fGIR;ZY'z٭v3{ !r?ԍ.,)D1 lZ15|Z`R& 7&}]}Jk6 ΢=rA7I%9n,dpMA ?~J?e/ܚDV bM?@ω8b58;81MCF1&KVʴN1]om"Ut?~;NM4JCoZp!З()(^=v4мˋ]E lWvj5OM<_^a4k*GtJ;u{- dhF:PjZ\jqv.5 AўM{W 9U*g9l*di-J8>0v/"XX{_v\]* m^~T/i'p߲2T: pJW A~J|0{QX:w2x5OCΈsk\h}0ٍ+5`bH-q2Ceb\mXCy 2_'ѳyaI75oY zfs /-m*aB탛9<7]CO9oj25vsN 4=񕮯Y RhgSw<{d.Mm4r+yBGymIR)`ɺ@ުWIox  ~jmܼ{Q_6tϲȰ50F@Cw2+kGUOr[p>y ^m+_Ymf< ZlXjbl6XDcK$tO>+P4"3΀9$*؍$i /iP |hu_4gر|_nSU(t"ɨ@;bUT(a W?A(Jv 9S6ǮeC)O=ud!#Y }̨fb 󾅈مvSJĦ]9 N{@͓J暓7^Eb綦@.aD^p~`̣,#W ^xh~*\H{#1dmh0w62Lq>WB472q KO"u0[ëj>2L@pŒK73tK$ʖ˨1HܒZ,{s6ZLčJV:TBfj\LF?jq F*">"ִm&)/:f>H2H>B[$ߖ1oVw" Mugd|lsV(_k|xO&8vA}U?&w02SWx T $-ذbgĹD_ҖD@ A!)4a^'ߗ! 7*LHѭA,avMZ1ҙ42MJ1du^V"PRZHYAAcpLɦM  7vwmr]nVQ{iL1wx y(qp-T;e0mk/r nGqZW\ϏR+0ޝ;3RTهh+>f)^8p24>l/ԹYm/ר&FHz[9A$eAo*$֧ob42E rE`pFKPs3GC@rO)-f"Te&FpަkAg] L(qp*)>TQTY;$[OItUfLTRLqe]Ǣ瑫e囀[t1I|$ |LOƒ8Ɠ__Z$֚tAd.g_DHljb`اj(Ӻ}p67D~IJRVO?h gls"p=jʨL\:jX{S6BML_30l+y': 3QN,]$hBTˋdx5v5^ z5vq].z}23Q TO _QҍäK)~<`W0>a FE q)\W_ZlMzǾlOn"q%"~:H(^2& dBӲD˚/{Yb9|%k+qod4L02Tps?Bs OܮϨXuQ W-. +$I.>~,a x|ڔmje:-2+u@wztAEO[0dQdYl4bBj?D;'׌>њOi[Agإ*tzvD0ᖆ}%8)5;$W3Bbw0LaGO= x4#TB%2e,cA-4N dH;\C(\8'qX>tz 5A A+f QQ9ד/ҿ·sHE~#@ʵ |0Zť&΁* ągX]=(ĊAX.Fk4qs_ NAԽ3wc/(ᬩ*٨d "S6L,m- \+F-pa:X7&REr>9 N5`iSN>)c)bܖr(#tI[=8v̍6*ъ}i!S+(cDl9-=Pk,7!9lsKj\|b[$>wnt-I uAJgqiM;7L)5R f6UZ-pP'2s3E6r'z%7| 09k*7f?%Rp~Z&%0t#(I +avHB }'DgA?AeJB8x7SX2ԼKArf݁V@hkeZ{z`'p(ԂlUt>K3DE@|VxU maڪ.LWд?8xn.z/։5:2 LsG&F^bly A*Ș{U{Q!gb얍>n""Y$RNg5b" 䠟ʹU2魁 \B?e;rV?9b m#g{Ip4<^ 7:L+$(ɛMf~&mf&:-iTCOv9Jxĕk7q$c;w=aFkQΑoWmbvb "T*9RlmBk#XAGQwR F#YwT /LjPحqw&0-4j}-;epe'CzDu8^ R`79b Y'ܑX8bCV_)<*9gOx߰s m/-k h"&U 0_I _AiƼH~ atGk90 p ">XӦ@ӌwr]s vec?@p}C ɘOso!u9 v."l(߭VB^$" F,Jix˷0FĂO[Ll8dfe`{Wi; b~H%!S`? K!O*PWѥPR*%;V"f~$p?`~~?,ϣpwZ/^zA]_ysvaеjz:*q(x'􁯍wEij-_ja"- )YBF՜*޾{ޜbT Z'RU;fObAӥ'IY#D?'fKޏq;p iVӫpnu-kK: v0NmcZ`t#*LXh_Y^;^Ķ8W07`="ZGd" Pq7y<R<%^{79ʱϊzxEes89j6JH!}hB2U7,|^& 9߼t" ?47 |3@+};%nL dTקkтig;W\`&iGۓ% =tm 8-]K>Z?v׮E2DEy>`k;_P@UaTMygp]vx޺i|ˤJ6=A?.ܺ]N}u" Zdgb˂8b.f%,W*$%v|ݼXZc {u; mEX REO]o0"6ͫ #n: @( EoLӦJЎ[&@?Tm4x<eg iiэ&5ц.$YrݧKM b4nI٨8F^mB;BXCGoI@|8B wy- |r!ĠjB~pSu^]-4[=ؘjzBv H!?2)K\s:O p&UO,ÎHp54cTW x7 ;,.bM9zP5 ^'y2.7M5+H܎ -vy9H%|ڬ^m$.d<: ]V"?]@1摳z#ki79&LJ2kDyǜ bF5VɏQ!{鱰=X+"_ g "-lxG+P,:jْ{11Y Aob0bK#b`Pgt?Z!(ˠ:6F>5떋2T}-3c ȟ<љIgT(MГy +G')@zҾ^ʺƓ(ÛKX eCtu 5$|b,XsUrE⌍H=!1IF4ťu / BuF/@v|pFOND])2lDpa-23mxOFY) O #6l/XlI2;]D_[E8@yym)S0ix]!#}9N"A2 /eZl2M' a9 S`OE*^~<زR@=aVVCy~[V}XIH%c-T0 * %*s)?{]WT6.jj;̾)kgf~` Dk hjK׶Y[h2{D̻IqlmG)i1DqPGܙLN|[@^1\~MPTbWzdc2UTF>T#XnW87jU^f{ QL!tDp?Kbu;i\ V6`JZI:I6@ج6$MR4-|\*+y֡#5;}s 280DOjѠs/UY- 7q, LAo 3MG0o0ERr\}NwX_̶q5?B~sàaN˓a1ѥIOբܮ\}zC h 놠rVv2zvXބn}0HRr8C\LJQ]ۇI2S|w @e9=  %:.ϩ♼3I>_fY"(O24n. R骖.p?/LI>ML>Id3mwdkKرi:ePVJѧ=FhoyqJ5^rmbSmf3Am*cH>, %@2cf+Ξ'l8Zs(H'ƖsXWLI-Ost+64 ke|i 8uU AY3mTפ"=fiqsiIP CAaHnôm!. qR+2(jxVF N[b1h<VwC"6ӿN=1dgb4S/Z?+{TU͜"~(<ǫ<ނ.>Z[ᨒk=ޙ{mekDhI]xhMy}vqoz&!3L 䣜tVE(:A  NM{`";80}'LM, v)oGkŵ8 撴P:tP.PIfRzJ8"Ӊ`x1axd#ƾqzWD[ XPa2l]1mulACr+E^զXtȞwH wg3\ NR=tɇڟh'wK)z6?UJT!qubt2ɮhC;8TFz}1 ڑ0#i1dCN*Y- -lj! `F-ٰ ) M:NC(~Nˮ:7Z/w#wyv+^Kٷ\BOE|/8,C)CA"Xi1_ 못?9@/>qS\5~Pd@Vʚ^:Gl`m"[Mb }3dDq4`}Ž|*ѫҮ*-V<7?-{2uOOl6Zq`#RPxc߁"ջ`#uc/5!6zkɎN[v(JΩ|W]%&o ՌlG\\܂)w Э7/6NvE}jp{ρp'[ʆ؇;1i4qK)J6,h-Om=Czl/磙 #B5y<BE*{KLS@\ۚ)'%{HVN`3 4 CD-P1zV 0s|I,o%g]~etu5Gl\(p9(a(/Ӡ$gQZv͖nIe*jcow wF-׼ٲtƦeJ%iEGolp˒]|/['dvyQ+=qr>}Wj qRLIQ4 b)@]ν+.ڌW-ZJ\#] PzQ6lAaޜ7wa+_=**q*Cs߻/KA_@}Õg+:7k 0/7o \ "8@Uۣ>a\^z\o1E #@1  pHɐ}) .d^(}CQ8cVtͩ8hU6K!k-ۼS|VJoă:^Yn:Xg;u(9]oH2dЙ'F{Ćαgw,}b I&v* mLk**}n#zy{uǃ_ -Vw6xι.k8n/rZR j)EZu9Evj*̾%ĝ3s.LL.Ya9˶P&GD`KR<ى\x&FAKF?cZa20UI+۸ )~n{Ӥxcaƍc*XzCIJyp?dwy i1$vCԖ֝ZAR<$◧T@wv'Ts#΍lQ}[{Fρg2_HW˥JSͺTK0}3QЧ| e#kQOSC;lƵsOPX#õ׬ўwA1$ڕL'>4|}~(- ds19Htx/l\ ,)qP(ɖ^=jsX]±zPD]zy3U_,@;\Y7Gdb~ZHj4hh=ۉz~$G2__&D_+lʓ丂gPJx/t=Agw!tVh>m$e$wro<) ~ڹ>pA[ݒ{ټ\~ՓWd0_:+;Q(^O;gW6ݡwt>ރcFGHɵgyޝl@̵~ jhwQ !1<>qc7-腌"AOMSc sZ疪!%:!n{ɩGW|?vM(#:zd9&>S(By (fKrFNd;9':2TLЀ|흟=WI!nx6n7,=mּJlz:NAVE89#0aB4F]WSr=@!6*;{@Uʷokl墖&Tj?'J[(䟾!H*C̪̕]y?VBY|bM y:H^( Q(g<*&DdaU<*lBK|kgIv B{D8虤2yQ62K*l]sҏSݽ[=aJ;([ }3o[`^ ?]w ˕iD1,? Y]jiyS D( #0IWFmhIj<2Ml9;˂] I 4L;pѻ}&D<:u!T7#胲| @9i8;~1U*c(IӉ(7P[v_ h"#?SvKKFS0OA{U5 x(g^V{< Ep*LȢO0.-h xKeJ!>-.ωLS{d:*杋GyQ Өe_IkaQZ=#MOnϏ;ϡ7[q5,>k}ڥ7ΤpLY4 pAN:l'۪V/`mxmn$Fank.9ܕm"M ]$ ˋ+F8̱r{ o[6q36ΒmxZhU2HY)^Jeі1% }nh PC4cDuEM0»{Qw)j[5jMV,l_A!(ъ"ycLetTVxW{=M)o4 UX_B8Nb!?myF ?t~8#D\ 7RQ9>%V69<68"xg@""~[%Z6::a蠧(=䏍 HWOzFgw) csD@CcH?[˥8h5Gl^LP!YK}XYl(`7vqd}VJ n9.@}1t3cfa*pQfUn达ޤEpmZF|>~]{)M4mz*~jLGMAઙ&GgzGx# \yZc# >#Alڙ$ d'ё- BXp22<Q9J$j˄V#D!>ER$LɺՃt~7 [=1 y; xb,Ŋp;-wN^_n%\'N&wI/cĬX'ABYF nN}69p* ^W$*w@<('K%q$)CX6P:ЏTo<%Gj @qMD$0%. w<#ÀjH.e'hwI%~EuD1&Z 3SEqwXd7R<*Ms3t{DӢ3zT?A 嫛<uղԑ` " a\kQSoO BCL\^PK( u?bL/ʧ oDbocԥ\ j5Z2@N<;XfSw}#->m! ,mye͟~8'S2ϭ|ʜ9jiK H~>Y\v$5H&;?ToFm^z앑^|IhMEmLq9XբI+<ש-ndq(pImH _"" 4rkF."|8ي g@`uo|KngK ϘYpNMy:­kK'I[n݉;mmgY5f)w(m)ո|שf&a b+g KR}sFA(u?=&J!е=%(pOYHC|Yhk1@ .ohi罗q'ǀUћ44a뇗JiGYYM#gHJ3 b' C>FeYq 4{YqS fZ o`DƄ4}QƱpQ ҀLu d\;J-8Rq(/k(A<)G88r5<ٗ Sݸ53qsj?>.uStiɳ̞j]g!nu(5u;|_= WMh^mCE\Y q&1E2(6(9UT91?z]B8PEwQEOj#Sh%22<ƠR哪e,GO!淲Ku IBj$o^nlD,TY3,ơmp})V Cv5&<7)dk2Q̌xB>#8ju,CC6 )a nZEtyM?Amߑ/ :://^Fހn`+Xf[dvBn}7N f/Z^"e^tcSKc b;HwBuNl>«(؉wU)3Ey^1#ykr炏b"Pj_旴*7,3d 2lf[>~`>V iO.DˍCuΦs:#%>~$N 2Z`rɡv<8]_-t/{#07?~tJ?q0W:u4p|î'+σ$-05c_P Ʌ72\Lux0`NU/Q5_Q(~-4<,/tuOzƅvt|? }Uy5ʈͤxz#.ToJՂrY'p*҇v|p(5m/e8ٔiUR! [w.r˱;R}Ah{)^ʐoeP5{aM| ,ƣG{|Sqb{eƕ/~ MR+5-9u!Sjz}?s [%:IwND;8B y*)Sk2\$hnU[Q=Gḿ ϑHD$;<$zFMЗOt-; CL@R0*G O0UqhNPO х3bvXiA|+ے@<< blO,G2KI <+ޕ15X`f UX,˶8xIL D~b2'{CRTTl)we^KqBF0<'fζ4$RrtE!؈P41;יx!p +02Oqdž#?`ܸ깧Jc(d]a[q0UWd.Qߪ%מ,}$OrZ+f1LMzva52R+ccbVGOiJqqɦ9+B R 8VLռC]S@DաcleI 1DՅqN}xzԒ@,}Őd{PiQDHu-PryMnDžJ;k 61qtJ=#XRQghĴC@ě$1V o4+l=OZ{s3栔K80KpHfC:T{~/qwK1H!ObQ4.M-f({3)W kA tobJӾ`F 64 e[л~)d2KP0yգ~D{Q##k.MaK/6BelIݴfTv73u&)kGH@%q`@bF+]~q>a酺qUC;4d'k)Ju}\_nptYf=NNB8onKmwz6_'ciT+6X%#^`4c;2 q15O!2oG d ֞:?ڒ2֯Z(W 2@̄]~we`0ďxfe ʹ «!?)6 ,#f0D zaB+ߔfQG[.BuievFl%_\uK##Ȳ9v~&!(󴧻S"X> eH鎰xqJA @4Bn;;x8%,_cRGy]H5$],‹톜-TYa]aQX"3D0ICn '(>bEi)8B! pidL&kǡ=ʷ*욈HJltW:h4C&- EhMybKLi!mO+X)fve\*V~VtKlje.6kM;Ej/po]X*㛠oa\CJid_V ͼȱ8|HJF1Dt 1q=\b?\'?X뫈N):) hI=JufR2}& ^iFE'뗘bM")B!e*|׮qz0jIj +ך/L 9O#ՃȖLB2yڃJ%r!>g f4Wm}nAz-^ ȸXǁ"J9y.,*)DlqbK!gfի녾œx̸AxtHD ,@ZeJdX6Ydk۠ DXID_GbR!S4DdɆF2rf [cnx5hB ~ Z P$ &öC"~6QXtNk$ pH&;i33?׫>D'W^4*NzbTeEEPq[ $ ӣNoJv c=ZSeϗ)/1cgjEgj^j*QbT=]I]#jIǟS wOPB6ُ{Y;Qlcs۩-)51f׌;YNÛ +^ +A%x.1l;đ 2.Kf@o;19"z99 B؄wbM~3==B>QToѓ-Np4^.S)ohjpՌ`NmsG:ǀ@x MmluWmr'A3ҐvM*grs'\c&!ԞO1Y|c6&f3zsS>@!)4bĂ`]Lgda1WQ 3U-AT~/z H^)/^aT}T3O{aeD-ъ@6Y'U ū !9^O a~d |dm@$v0(KxJ'j+ }is0:M@ydT:!E;cg+"h1_.qCԧv *"}ow^_=t0pf 40`g]/U dF!e«,:m BUhGP `95yxEˋ:*I`8ꆫ\ UxW_*xR<M([ƌZBoq,=ŕpAՠMDv.c7xym IT9 "Ԃ |ޮY],9+ -{ vC6$,) ! us%m0C!ÕC+: rA\O}3,\kϦ<lޭ\(NOC eB4,*;muicC4Ӌ6ul]OPH^̾ޕp}UȽžGm7 D?.+PmKGɞ@Q]UG˘_j 6RG٦Mj^{"h飴YKl]T"4"D,e1ܤ#w dn'E5oተovBHÏZ8J%XQL'_QΕ-OH 2osVzced+:T~\nʫu]جpnGmYt>5HX;9<߰8"_@NHwF =ca@Qo$8V[[,-(W@QΦ ڏ(gh~a$` ~;$.L˕g$ 'x.'"2y Z{e9l 6z-;Q窷**'Cqo7W{ǙbhVNuQe*kvѣvs21j7̸;xQQ(`E>Cc{[MbW.e `ڊamJ]/ >\NƅuG=/K耬D8'Hj1V%;dSLg10Z_3@xEp. &KkI/X.nnysw_SFb"`bZKcSNܦ^eXv}W=^>|K^vGG2C%iطHM z.Nzqso]6`$CC[x%{(8~QVǟrj8 vg>2Q^(d/G.gI T,*h,(J?4YU,3X\~7}p fa  ^.PQTcO?QKszKM7%h%D3^a[c(<촡5>ߘS&Jp^({uvjF_*qzFF?#ŇEq"iF.$S-YAe=}J|nɈX>1o:lKɻdǾ7*m}Gr MGTK'^=qr1ڲA`|ѸY8 4yDWtH0S-'Sm*z` |sz+~x}[$ ۇ,{Ƣp$Y ɲO2_6q0/VP@f콲ƻCH#mk#NH DhrXc+P0ؘ*S,=<'Zzɂ~*bM*,g6Aќ jMR5akH>nXeD'yL@+z^CM+m^TE3j:Dɥ{J"o h0$>#!QwnbX๋(E|< {_MX%^^V8njË[>HLBZe]lfYI]H+VR58Rֺ߁i,oK(ovA#``mJGZǝVRvNT8P[Sqjyi OYQdjw ocmޅ/n}Y` ޲JO#>ِk@ PzS19 _.]#ܐa /~nHȂ3Tсi!QNbtvLS@9FxjwE`<6!+`KdW"V {pfŶ՝= 2D+mQ !n꟱z9lc!oՠ$ZЏj{:_Ⱥo dz 5q~{n0 ~DfZRV2jII9rY|UW8>+^YL {/mAXtBY~LG LL 21+,od A)PKf?Rg BC_(d?]m?bX+,gSֿ_1e)1e LYSGS_1elĒ/dW,aJYŒ.+?RB?b:O_Ɛ2 ?_$ N _ 7~7X~+Vb[o%47UNOz@ֿ,{gk;62&- *Qg[G?"ۯq P ~db`##{dmMo6o6 `bO117713743$?Y#,gS)SVlz)lz)iz?0BbHoLsG9X yHo.{R?,OI)/$D%$##ˣ 89Z;93zogӻ˵ptr27p|wt{f`S0v6wg ;ԯ'f 鷖a}_W^G>#;̿axODKL9O̘~ya ayJf6(_ݾ3Q,|{o֟ᅭ>Tr1tO"ÿn>/Y :Y,lajjG8ZPa^X!QYuTaL׫2̿={:Nj/>,L =Y2F23p*3q<_ugedy_-k.+?yxWV&7{o[𧴼Z߾+W/ ulD1s$ggeb*{uAv'3+NvxxvO?QgmaY4xPϸt6(Fg~~MB8N]jYň&Ecȷ~I"?bd7'eK**ʇ2h]y*k[2>pQ/P.8 "dI!,'Si*SM&sMtZ:CsnPudCwYUQQU% ?o(lbkP|$^z߅=MpYX{݂/++۟u}#zfSs;l~sRV5 o%z: ['(&wM-l ͡L\,\ s416qwr1t2q~ -̝L:k$ 3wxEhh`%ѹؾwyw\tM{mJzV:Cǟ-&_H*d"Gws4J? ?-3ǿ[Ng9ßuL m{O~9Mg,oFԿ;>VwGp9Vw4ҿ;?weOֿ+lec_3lyo/_6w_Y?ՏA{O~^sg-SB`jJgjAgj`.&&i(ɻ&LU*A4@ $;ӿMv ;.?lRr"_<33>1Ybe1K-~ub[LScYս^-Ph=#Da+s')$w,7g+PRҔU)J<? =`[v2 bƌ!cbfkf=X/l'&0^,v]XLE?#=ޙW "v&_P]1GLl)?2)((d:C`?|[c k,9d+ #.S"gs3=or. L5)c{c_3-LlůA=;our+od4(wcfe#2/M~1ޯu=e2W?|4r6csWR2`W` Ngv0׹@A7{䰋F9 _,wN!U[c6dzKj-b(0se&]$nU̫'I4%qӒÝl4ra><*9#?%Ii_'c7Oo;+{OhWRQo_\?f, kKځ Qo=`fq_EYrsעyFI;Nl:?5 NWPtB&?ߊ?P(: gk #[3kwF锜MlTXd,ީ>D)8 ӉI)ѩAGgLgBgJgFg??5 -=#3 ;/> OeRgψ nd۔ᮤmj l뫖'|J:-F$,9STEryUJ|ȝ]Vߛ8&;'Ys1LL ;4aDj4۴Tng7Yg0ڷIO\%#eM=씃d j6:2 Q;+Ezv|z)!wQ8 q78/(\jrS-cq/BR=F$p}aZ':r-ovb%MN#R ?EtS"VFL  ]1^ Q*B84b $%ffh!Fsuu)i;6 i|@kt)+EW7!RR.#g=ć>Y5qAS[d#_аsUřQ˫@֫S$F㩢Q;T9;3U_Y7bTV[6hւ ~ʒv+źT ڀpìjn/}D4,qj^_9_ngۆ`2im;QuF("0cHOex7CG:'mAx N

NE3 C|3lE$b& ioo0vh}>*y5Qy B 1(,+quأb3! +p23CMmx/ iiyd'k1 ܔ1iI5^ԎTJȓ<ŔR19O!AN3 嘤 | &w!.k s2)]AAi"l6[c v#Caͧ Wl0!a|Eg0FWodn6GwM2q=y0K36;"@J7Ԥ)Q|]y5XHr&@,ܨA ;1e\!;0#w1)]Yh= ;b]l+'foH;&uEt=d yZF55yd$}efhj| H3S* tİdǙJ ӧ6N*UOnuF4rJ+t+>Ƭh V%SD>\zb]4Wʻ\6q7zlywq3A^GT45;u?>-xS|m鰯{IdAF+-(u'!%ݜm5ֽ g~^Fƭ @ k*q*Lsޠ4@K#'%az"X9Q_MD]}nEnj[_ ̞)>3xv5)E'h4B{& Puz9lƘ 2j7Hl{lzRag SZl,[+;ԝYSΉ{T-vN0_=on-LXWRÙ<"R|n Q StzhU SS6K \iV+εis@95 pdՏAS$ubO4j.gƍ0ﹲy|jr![Tm$E/aדFjͤ)l SsBDpRF{pZ]-[ڂl#ҔA)C>nl5'@Jir 2+vrt,)V'/G=0" &Z KZrVwpWk f3}Lv$Qd-k'zCW\{1EF1nG%{JˆHS`;K毓xG𝠶ýy^v߃*,g;4pϮ_zfR\I2 cWIx/DE?qu%載YHVi{a{s e:twD,};“Uo?Pq: 9DM);d'sTPG75 W󡷖 =j*R:ikRѡJsmHƃWTtW=i4Ώ" W`4A٤`T&O\y ڙ*jogǻE[ktL;:Ocn}.U WEq 95h*Cϵ*R y_7r< Uk퟽zPJm8FQ:Tk")R+M;\/~!k3*+V_|^/[)'ըBU ^noZ-l4 Q}Jt}%o߱>W^ʔ \I|a{s;F8O98Jo"(i@~Es/0*1aN@ܓxgOqLct5鶙1gU+f*+Of-] ;фn}ǦNj?uL'{n)y>jqn8Hx~B2'kV_"3֜ۿSBՄ0b6NsGSOz9b]SOA4a?[N?\jO?Tntr'[m6gHӳ Woz(/]ۿSm,'9@.s'1hnAn$~,P(:[E|~1Ti>=r1v\"lbqBAP8&G̅-悹s)ss2`e\e=bvM.֦H+0j3ւB֘ql q@am{S[$l;N;c3; &6C8f\W%5)xr\&9rHLo&:zK^}e%o7/z<}w"ӓQ ɍa 6  jvL+\s[[+[ge{g{̓ϧ2H*>,Decx {wG\*+;7;@ѧ7*Œg~15t75y0)I@yMzR,8eYfϬ\Eu-M$ST|kA4s:x 9tbi+rPU6jgj=1@3W+ 7}] T9w;C} Mg;:8d.:r>.y"B?a8XZi{mz% o:3:|zv@٘I,8n88JTW7+)U{QȄOZ7\Ӽ?$pԧ=4M-$C0Y&G-ﻝo6L#{ 1gDɹi2C+y Q2adB;y@qsM6u(PgkNZeHyK 2ڕZ-1otr*L;T.f{4?`jqHFݭFy_W e7o}xbrwJ~Sz|e6%A@7V/6YHU$9aZYm1ͅL󿖩Z@. ̷/P.SU7byV+op^u|stf7Ƶէㆄ)-X4Hdv TҊj4ӥ'JlnRYM5j,!ΰs" ၔ|<:O/[zLLIytnh_qlCWN<;<mD$zU}*=9PLPGwD+iO,^^yVO(3[{}g1 g0+#EN1 NNtu8LmO'#^|(r䇪3 CtH}^Iq;wY1DM5Eɦ/%Ol~'zS"Kfz(A)sbԭFGrk+e+Cnn^A7dsʋ3;^`=`jE YZ9E?6`橫L)>a~BծyORwwsQ6&ݫي;`滣v#; ץTN' Ydsqˡ:+Tx1HN.܆"N#xuT\wZkIJFô7]Vk/,W:Z]]z^WDlL_Kßmܩ1bYl94M5N$2M-o mt;QGVAb*f|a"9Ƃ3Ojk|~ιzf I|իQ4nQgBa%F#uJxb&eۏ,(3Er {@FC0neW$Ƥ 7_<ș@d%Xt\\U۲X}Ņ?TۇO/'Fp TA 6O1FSpn_RGoگT`5Yt([a;6CDGTud˃BQN(\v; 9{vU"o&Yn_' ̈0򧕛 -2 M~?p*:s][rB4{kr٧J3Isމ~{#`yh4ސSҾ嶾SMc_K000|v)}$aY8էi%qK85ˮLj{糢Ӓl<1ʽWܿ$=V,2y4{irKhM[S!q w1ʑ뫭뫩!("2r{hq٧BF%C_J<%~I cnŴB}gVӠ,%Ol|kn߅#LY>voE0{xܰm'v n57ͷ$oKؒ^g FJ،)2q۝PN'8Pn.-NZjٛ^C9?ңNFS(sFϧ 8$Oӷ?݁%< =g?rG;{W], fx@C֤Ɇ(jR%nE#%vB#n+⮔")iESMI]k]T/?R fQQUZI<ު9)#FZ=lL%ym",hjzS\,/{UE#*OA0?śD&;B,6tj&Z1[);ߔ_V꛴pXDƫT5Vti$;4෰$Tr>vRr&ʝJg ts].MrcR_oO(<)vM/qcd/K3M doIa7?t)oc+wE(<=sNjrr M^xL'TOޱN\rNɔ$ψ/ER|O(v?MhM1#]ϭijzYO5JcR#L:#|W!:n/.^`)Z K9nDJb^[M|t܋;׮}_([vV(cg/%{)MD_Q*8]^$^[vmyT2=k*0/DM _й9jz鰎 h{+xo]%@GVlgR㵵 `a'|"*p5q><5>?OpT^Wcֺ䏵aO;nTe<>^a?Hdrsܳee/E%Ko:bsL"i<80As!pY&x_k%_庉?7+"XBhMz=ٔ36@~FsO"KϹUj_QՌOcpfJNK˫?> W?KjUbwN kiXc-Gs؁.+9oM[j wOA0ϮE[tƲv؜dy{r܅S?n~|NaS+.r}x^ηTd HCh߸4]p훚_}U'?zm*J#>vZG$=EreZlNՏ痊>R$?_Hf:$UqX btӱZ=w]0tKALJ urq|UvMa8= A/!?=uQFѱ<N ír 5ݜy 3O6Ȯw!p8ggƵ-K<KpY%lXVUj`uX ַF[m/`bߴYkՂ}g l6D[3"q6lhocGa_zB0o>śm>Z`+K?Qh#`&ljSCD9]H[v ӪB7V7~ նOg63{G$#[)*  l(kO$n|vC.kj=~-.e9bYH+,_ b={IzYT)< Y==JgG~7`pF8Kau8].wɠR@JWJ>1;_K=F2#Hv"ʩZHDz}4zȞN֌ӷS43|?-^4+U#a$]UӞ|FA]}y%9RY /Mڌ|좦 ̌)Fr=W%sZt8MR&yW6'{e d[G,:ʕ;>u^HɌC 1oKO~|^>$*v焋۽,O?]a#wޜ^a3_ Î9t/Ƿ_l9'jG|N_+UqUe\#eY5p4sV=-b Vnx9l6-F?BgܮhҶ;oxkFT54)G;2rOӮf e\ ;&2O6xGΜqWϹ-Dt;Q2Eso9UG0Xhs~DB~Q8^ JSl>w̍uDWT|-bcyE3<(XF?&-Hw-["ad2h N5Q<"^U񢺛7[맥t}oHF:>8F N~"cX]e CmAJvi !I" H{D=-gƂN hX'M mxXn?nk s2:X'@'eꜰ3N-ĩ+ Ƥӏ|nYMWLvаx#.g*(]9ƒܠA0`:PE(b4|': A\Ɲ:t|;Ljp񉬌LG-/?N酡YEHZ_%*81&jЇJ/hfiÝ7v#$ g7f)~D x;6ZD)L'YSK5uZE?wI)2MO34ٷmMLCm㨩)Oh3 z> UH~˓N R&0\krItC3 Eu0rq1U2/l`_++jx64Zq^xZe~ޣ˪N'ѓYg(ŽAϖ\QkH1 MLC24ZVd2U /+n0e3-].ӹD-8qD+9^zcHuř v¥"4oI譧?1>L p壹Qn)[R%1uQIMb;ky+*L8엸:nB#>~dzNi$T1wid g/^j̻mz[(ި}60skg}-h t22ࣈ.({Zr `r"~yhsߨmb9g5~x"$̽(Z3:sLv T4e tlFM>G>Lx$B_t ?ΠD.ҌT‰q0߁ ĠO.43EPV./sϒN{rAT)_ϋ|瓦O3 ; 2O_}}gZ7Ċ5ۉOi5Vuh_AH5 L Կ8/>zDjzS;tr\TyL$Z.!״fF=Aϲ坒x7x,TЄ$냸K <Katf+יc5 *G=,ZOa e 'D0 = cȲ颯2]˲jh coxE0pճkC_ÿACi2ӧ}t- Hߝ("2exGf0/PV$ |)zRN+/H-/KFҧ$ߕA'I+Q"R@(kdoߛM!V++ygY<:-fGu3㌐REiGmVQ:]NEIk>sk0k@RUvP1^詏rQ/#k(V*ڍu^?}(Jhr45ox +ޕt7M~k~o}?Y'ZY*?e]úPeL]ϳ|mB(}G\I9 WgVn50Sx&$R:Mx|ƳЫ'[:{R5 5Cd:׻}sx1Q-d.BWZOZFQS}o~=83kqȢ+AP9 ؅t޴mϪ*PfCeڨM_SW[[uͭP2ks$)i9#' ?=qUN?R=W11w(;1ew&'ƄN傾HF&ur\ Q]J|Ϗy뢢Sa QS'P!Wr?dH*]P1T~n8nfPc#B(ڵocQi&do UC% %b9\"Gň6^db^MZ4/ Z&x>~Fdl ,읞"mSʤ>z5&ʝ<[I&I_Ϝ;֡ AYD6HZ&N:&72|9SeJb,'omS}==C=tva L]x2jďONgʮ>Ӥ #lo e O4HЛyKʱ{o_j^û|7iUڕhkDyƀ% OE͔b;+!{V~ %Kй\sI~UqБ^R"C,7_=W] O#lj~xqoaBã_wMPN GDҒVg8rtV"=#-'Co +;IIff w}Vɧe;+tB. 7)E4:4Jxfy)| K?'D?7<5:Ayڝ]v5Lf| td32Am?0/D#"""("D,z0{ ^&31ڎ 9悏Gj*棜26=I7]oǖVv#W?}p~/A; j9=%ŖX:NKsl,D^1)6" t ]Z&C:7I] iUުF6<}NOu+]m3 }S[V%G5 '&08QH&lʣaqC<B){-9x?`>FBVwX_sy>{Rf8đCܥ5}R2Nsׯ>FS˿cXYp$Mst:G4 6/d} (Gܛ-N>Y/zb೛ڈB(&W-_(Ԕt='Wg ,SV_iYbl8t5dԤKer\nwtuZ'D!ݏ9ܣ_NdYA P4unHO<_e x1g7 UZ07K-yj{甗r>c;y%gd dDbqǧbcOg,)&޽+;p2Xwԍ+]4 6f9䬤xK*+r[I3ƅVkSf=+Z&Q L<8wFZFG5yŹQ2x {H5ec#DEy{~XiTQ]&WZyS#˓?|8GR/T_>1AjQE@֮&IWW$ԜuXR$.5A2CO5>"_?>Ρxp*-ܾ}$HاzZ̭B+_H m9yɑBg>kZ+2ө? Ʉr>5n)Q 52MsW~d_X6RZL?Emw;~hAa4~>-B+ ֯];Ismq`Fyo'Tfa2̞;‡xVrWٱCJtCV;4 0TFFSp,~<,q'ĮehE., b\Ko-VB%nn݅|3?\=5]V s۝:o7w] c~fwĶYVHAvMl;is8w\?ɵ%HO@i!m/Ҽb,͏*6choIO'R==}#iilo>0]n C\g+P2)V' ϶֖t\ Y;"]TUVE򏌐G3?N!"kx9u@>7q{M=J]zWS~-wsг]\ 4g={D wPV*gq|>.dRwi[ #T7w6u64uO~z*kxEtBo~tygLuxaU%^Uѱc~͙;_c:^v3X~;H ɚ趌16wR+0Ԗ°)0`{vɴ\ [6_DjB9nPHv/Vx -mkӢO7|%HsF?HrFtL̈́gU?5 5źm[?r#tܝy͓t5)YcA+-j3/#=^8C~0dy(X<sY]8辌Y!E1)i_I&:d?T+gP/XgnʘJpqWBˏL"X{Pս˂ br1C;\5"3J?94ntEou Sox˧w.銙RI8c|CejՏiC?muI/NxhC`l4.c¥yd|m7m*4!!5&%O )lEFK$9//4UZѥĢyf_oR}%%2Bv$$'3\[|ވ@MAf"¤Sm<$׾\@%H5Fk x8D\OMBV->k0T Hu,%6PrWMhva.ȁWࡢVR"k^ky/%y+ĶNY;4ņ|?؛8+[)rhߗ˨i%ϲT?&2+Xr\,-܅p;=)aލ$ofLn4bȗt:\Iy[hi N1pIDpԕ>(xg#o_$" 4} 1'K׉8_ !1 oʹqa~u$-]3oe2D~L! WM:K2ҹw@& KzB}3Y"y߀g9=O %xETЊ!2w:oȭvdcG #fO\ρbRb}a"/cK\x^ :R;$iGѯ$!XMax+l(c؅'tf}hNSB WxWӿ<+ArVmL˳U%n|ǥnsϞ7L6P0e67eYNN.!ZϰI%k:TJw 'Cp*7ĸL*extPa29%Ȫ^A WѵW3}}i(EqC %x3gkPIxXGCO$;QнMV!YdE8]윴 zDc yjgftIy2XZ3ݪbi έcլiYF`\>nLl!I8,DL3?LNG:cܿuΨ=}[Vjv'<ȡJEY:p22"Me,x1Ɇkvϕ`s5gw]G+猾cjҭ4IL>E]R$%R hʚ0Ыɚµ¼FNuߍeͶ>eqVट~|Y Ek !g5? .-B&,l6ԨTJۅ'ErX,a-N|v2#--^<}.,] o-}kK J6&| &Ecybw+?o~Z?!sS[­v"ZRS~,`P@ OV燭GFuXZQu?4! .,.RR|ʝ*s?@`m˱Tn2eW`g$#.^[I+T+/6>T+MYYY9D{OtATa!Ȃ1aDiw]>CoS"LL=d&dTp̌_XKqE@vGL$Μvמo?sܘ_9s@VA1,ݺtyLӎs<_ۋfrAUr]:9/{=/+:L6~处t=SI_tV}!10F~cnIY>"L(ؙeؕ'eqq76<~?Ma Ϛ K*u{d]{.40]aTS (*zVKCHuI֒\gjckF,GڋR;G4ʟ@ݽz=3EcFչIχZ]:tkQa٩/ S<J&߆{0{S:ҽ3`eM  1:zOIS#7t-fUawiޮ9^ƒםL3rL- &Ϗ\){r6KOw^evR%{;k3F{oO YX 3hܐ=(rns{$]nﶈ8XVnsM<1v)B̳MUOP><^{ԔKƼoϴ>ɦ-7?TQ+xr'C.jud@p43;y) gJmnt~GnKW&q=s.s.Yk"5ޘ]}Hi7cT* }ڹeW?N'K]?RAWS5-͵_1#uo#z Hʩ涥2=#}4x>Zyng0 odFkq,?u^ ORKv-虁Wf3zR HQk(fc,?>%``**:d8a'wOXk߳zzӁS䓦=nﻝ9p5cуݙyOȵj)Ϥ7_ 9/zTu ='ɎZin㾺(߭3w?vLLD+ !H(A|oLT.^+?Mw2Oϟ r_ʗ.?u҇8!k)#29>S~FXW7Cb_b&*)MƵK~ehxUa'L^7m^B'ٰf<`u1sWP]TlY=̐Ь~B!ȅsgo^du/4},Zm'Rw;lW^5yzBs:洉śɈ۠9&?zSvCF_bJ<;wKVf97s& ',;>fsAy}V*DS;I+q<184O6 2͔"~O#uab*V6^t~XWJ=nTBL6vRM.Rg]6 \3mîⵃgcSt3v6f5Kk/re|ؘwSqɩc~*d*3uM^M/~hy'ۓ䴶< :Y]ybhέ7^r#]J.̈́?]S}'#}1fY(_AS=5=;-7ݻf,J}ޞ{%$x-kҔHbB]]!V[_溜(gL NUyv] kvXXVL;>刹M@{I"oLk'e zfKDŽde(%m}{kz,wVYX>ė8}AUxo4 hn'+=1bILSu:@!Gp5=.R#<6G^@\W4t2jfgY<22R s(֦BE5FS_5tlϴ+뿠9gwʢ3䪀tw7 `Mq[LllX >dhL o-TQRDXAAH\x=鋡|z_47/'@D@jEd?|)'otFihߑܦ3(h+GE -!eDo*MӽH/3mXb;^25UB^k,'Msu>dX,;Ѱ9`Ъ/>#٠/*$_#ʛH(֖w <ӵM],nၢ˼d6):@RW>;o ;h&TZgD/] (#x C"YMd/_V769|Nfwx@/itO۝vĿqڹ1ލFh!n[g[~C}GB"<'Isq UEsYYϟ;Kls{-OϜ.<}cF}?^+jW=퇫P^gk7u5u43is&8*ǺUYVuwvEYµJ?M>4$<5^DJm/2^m$;V¨66;g\t9׫*:A3/K[1̲t E[$op꽌=ߦ8=W x!uB2![N`V*l?d~Ȋc~ Zƒ*\5tV.#͟-mB#R&~vqcEP㱞[ q KQ't+#t^4S ~T V=Χ+ju;ƹt.|1ӣe7dҐ.IR`Ks_;*W*њ€ׁ^>kެo#:i{VyבݪєˢܪVխE>5,a>\fD}طAYiό ^.^_tH_3{> LLFo/N}U_^1qvPRnXOe="i)ݒLuNQn:CHZ3oETiک}myr&W'G #G5riXbx+ne- !Fy\}GIѴbr_W~.U7@#ߗ4.3]>}1ouG1HEIꥏ|KSl>5_ eUj)O |4TUε3.}Ͽ>u_PEDG\pc)Q0.Cf?P"ѣ[P.+ʕso$ڸGW_sSҍLMj!9ł~M˰Uw'|C xܞUpVz8EyK%G?PШVMx7ܵ}IEĂSz oy}䰘и?>LZGF:".Z~ɞdG#c3hg( r=YtsS DEn3oyI6x:%g ֽQ#ܐ3* %o$vq0VۋDHr_N J;+WKOДv}h'0zSKm+C"SF #w4Y+ (]>:@~@jH:ٲCc3s ^VU꽓F7xoBu\OR-]HIݫ2_2F%D~>^=UxUqz(!+*|,C]=2MIWe%5h.K j; ϟ5i,̞&gGԕY!!9b]xFI SԾwYӏ:п^քG˿ [}x_`ga74ѥRćHV{.JyU@RVm #/=ݙ#/k. eqfLa^ǧĴ'I eN-^*1dQW.62?/WQu8-ݣI=Ad'CxR@.HtNy2 ` ci[:3>/r'7ӔރSM_ܦ|pl*pZO$5=x5l F/7YHM.I>kbZ.C6EVZ`oԍxZU'UFo%YѲX@\k(j%7zsBoBi 'ᇜ*l~9qoHco^Vo!:$hSHUD -(y~i|'o/1J(CYf#hҔ O vRt}]ϣTÎiը6. 4W^ VfO0W?`p}&2fߥ~g'7Z99}s<ճY */:UH V`0gKtI?A&2{=RU@IrT0?!Eڊ6T )HIUA=] 쩧Ι ;D)ZP>p&"Az롸OX[o+r2=6)"l(xZ0w"nଣB|_GST5_ I68Ew+L6\>y(I> ɓUEv<Ä f5:7fu1 T>3 nb|!x[ˎWW,oɜx)k>\hk2C{RDg^6&Xp>FխƧt֯Xko2gz VopH? E[tBYT+ݥ;ՁgwZ y^Js޹7.gMǪ hsT ,M[F.]LR%[5_oK1b .֟X|50Tl5x&PQ+*y3V Ң ڢ<'; D]v[|F8~JNiY恽?~~"S|rڟql8BeUZ>+l+QerN)|%Yw-LzjYG!mj3=R&7L=˟n`"{=&X> DÃx3)> WBz):ȁ J- etxiWCLĆ4[u4LzPJc;Qϼ52B`#Ia5^No}S49v>_[G,cO*=8|IJ[f{xjO|(sn!ٱ`jŔGL=Ge^$e֠ gI?Χ^5eq뻬Y5bYr"v%=Z!(HFLbiŧG)%C8C+MROKD{E-XUD'6 :zt2'~OMJ9}E?#Hn #LuK}:3 $Y' W?8.E&7WsܷΚnyգã˲%5>ʼ'J9>~M0t39^%/Ɍm oPZl D{l\"myU#~o^[7/;s%{n^lܝ?w~i+#o3UͭCs_ #|JxӔeofq3cJ+upl B!PG85iI<},rdkۖXgLJg^͜Zb U\j[*|K_38~nuAlEFMDg%uǶOZm?;&;WJU]ЖxE`<;lͩޅVw{DoAqQR8XD\<䥎;;zN<_3$Joh4}pU/zdwq^~NL\SZy-E] qHoK6p{7t/i@_AF6M|h/_n9 Dd}':C^9Y>{j& [,"*/7Z֞Sϳ#"!4~U(xܞ>Nzt4_!gZJzS벧h%k.7+\ʞ0NDuԖ T&OѼV߹-!S휣G_s8k)ʁ{ $JUT)hEl&T%0T܂Ja >oVV,6`1 |ƾEB3CP?o ^ya!k׷hJc ~xCM#C% |."s2xnϊ)ir'eҠ8@|//h&&7m>J#C\q!ЈݓaL?e} ՟3M_KbF&KJmF*M%: ty,}W4~V;I*?&vۈ]wI}O/]TёځK|s&o [5\R1M˻GշY'^e~,y^U"pYmaW!ʽH-KCn jK+o-,8Tf)XkOІ.῀zh7nU l:fIFmy'NLހ `7yr;uq=3 2Ⱦc[>JWo] BrRZScC??c;[cϰ MPV Ny%jTqUP5t575bZX GVLYNSirsd61`F 0Gك`Pv( dl D'952S\ 2[NNNNp  0;P^ߙʎqJc'C%r@mg`a F0#n};! ErcV=v>kimѓ u<$lFH[AF)%9)5CF(cq@ 2  ; {&}h3!͇h[U`* H +(];wu%n|hC̯OɈ^gpMk[ ,Gn*Ȑm XLY[ ;Ű0C{R=BDљi`a(Ap9p@O!7=f.Mq"/(`]zrC"bbfB°-@0aG*Uf'/>H mm8AFZ$\ -h 9cZiLT;sA2n/ְOpeP(7/727/lg Ż ӞsgY߉ / ʅYg<//zNx<\0]8yv҅*)''dw[̋B;!a;E^]0x.:rq c8w*q#`9w^.\8aU sAyxv a]CyvŻ@bWw ]|ʼn͓p.Z`; ƙkqn8w'v f<] *#vXr'Yw7x`iF(Cxw9g7[x]eJG4&eUQ3 rr@P ~썃 {GN@0(G&1euAYك9$31eLl L10c!((ʊe؋Jf@ 5ډəɌ]_mc5PfTX rl;i`kRƎK )[GZ16% Pߍk\\;#k@EVA&řɜs3 3dܰ!Æ0JP\?Z֛֛K1^2q fDU;Z`6FUF! lц`Vve׭v즮C^v~7`[XA,=knd0,)!̂0&vDYa+ l+ޭpm'b41&I1,Q7÷PS#ݷt4CYa9=3@M`Y +b.n%h08;hr4Emԇ*~;yw l7B;g3D3.6g(V:؜aU9X k7(JJ7 Hgk&v m-[?8e - `5=y[L߰3un 1@%3Po;J6bz@7:a:,J0mi̺ƒ!&:n tjҷB@^r`{ &mr lltŸ,-,e  /h6 3cĖ`V5vLڃ!uS "z0ŽU@6?=7q5l.qs w a,8h}U[e <}N$,1׉0ol K#-mA b! ؛ceB[YH% 07` _Ѝ8*,6eh3 VHs ˟jZ\0Z*K g1艹wyAk`21Fca,n'l,m- Cg^PZ:ߑZ/&`eG ,Aֹ- nMTmQF;M3ᘛO~5v\7x[p7fc)8L^Y_+؆c{a@7N;B7G%l0VA\+lf Si)9n 3N`Xö"mZo4\:l+t b]l%:zc+BvhGY8=f\7$6`h #m>D@6m!n>+  }A.0flQEQyrWx[W=, >Vl֟Bן_%Y}C?G'~Cs?V| pRؿ1}KOM1q&6`qG6@0 .z8H ̞dw'vA8*bLaNߘ. 6p( 013\wVy?mehH(&q37,$|0"K륛 3+cF#Nl@7 (3XbK&(/F)'.vkwd2Lظf &;z6ڰC7*n0; ^$V`++1_0&a |;MRo#oRoF vF̲cik?M8BbȾ0D`JawrώQc -#^@ e7gT)t{n"?I'n'58O\[ [A6M~v`wNlt K٢NVț,IfٛJ m5CHwtjga=,!*z  w# _P'8#  fDan  $ttvN({CSa1VE8 ]^]L?V"{N}swc#,LP.VwXX}ߛ캣d Su6| aژ' 7glw12X`oQ[6{ | IeWg+*K:B? e&D N11=:|k19Jc;ݪI'MK*M; IlA`~p@`4iA8/Ή@/aaR0_p c`} q1_+|`>' FP{= 89#1X~QB' Ld\`>0~?] uccpj~ C!l`68|[Zlh`66&Pv m ]ep-a&.hg5نf;n^p~ !h+fv1tn1lf1|\#v+3l #WmXbl͌,(f9P uqp= S6S?r{Ǎ/,B뤯c1YaL@lK+kc,ΰ-6@f ~S$@hcڵIogo2A1^~O)p߀hඐd6}= G˜rwlS{'dp8c`[B0V3n5Ҫ:!qanal_i ;@ 6akm3ف{E@Y(cগa36oy ZAZ!}+0=ouo~o1_qf)I(c?)!mw۲S[12+杊ڰ1_P6$smI hۖS U gdB]3gb´4(kZ0:Vņ4gh[׀7C7Ӌv0;pt;&6ے&EE=7 cI-đCa&~L_ (af1g]3ߜ&m#YR1`S11fu?l3VǞԂL̆e xB /`Ŀj^) %0-}fҿyyag%xAYľʆ};掉hauY[O! (o8ĘVq=6`OppΞ6څ3R  w ?Љ Sf,-`aݩ`av(caϱpžӌ6ޠ؁k.W6 AsB"@66ߝA1[`>{Ǹ~QFhԞ[\C5yc)G<|Lw7~v@½{&^8)bf|acҺ0F+q,ѡYvQ΄*Vx@| ߌ ¼!h]n V@m :± .lÈCU9={A1UwI^R]ALF F;%Ĉͺ=koi/X١L!]aѵBbĜIkUA[5{{)uVz]j^OeoE LbYĴ iND/@, 939Lu1ϘTqkXk0 ~ۖ-(#-юH:ꖱccvI $C 9F[nnwI_ ` aU.cZZ7x:,a ?==@<5p-htL,Cf 3wW1 ! m+{-"fxhdmrGws_={h1m1dXsׅ wl8(L#`0l009#Vll{`6pBH^y t6}cc`H#l\Ci[XiAH}+L%I(f86YA@=@i!8074DZoiⰞkgg7wE1@.'8os܀wFpXY1sA'@F[?qY102,s&XCPV&8d@.@3zp$v$=йFeo=\V o0p@nږ8WPAo"a57+=a edbޥ1-P/B@W0\b2ץωr#m!l 췜 2gY\@(1́+`墰RR'A9 ^edb@ag?cKnݖp&A]l>Ipэy# lXQ[ 0ɱC̖᮱ϰyXznM;@@*io&003r2EZ9Q'h9Vؓ'~$H< iFCrd$M@7ڈ-7} ̋+6PX]F(;kLj]p0.Onb] żU{|4LL-0l-@yLGHnlss-ch_Sio͜Y%6GpWM͙7O1u[FV3LՍmSbcHc(h+(s (ܔAa^-";D{ 2.;m ,yh[#`=pCa:O[P|m[)6gic+lݮddm(WMV:}{X4.zs;Hav,] L&2s%11lHR[ Mm0[M_B FO&A@ Z75$ũx @bLs"fM0-"\(v;6I~Q .a|$bP;,) >T` F׍v0Н 6j G0llFKlGٓ( T,6%s&WHݓ|&8<9\/\<- 0ڦ07:6 Bacv[]B.dK]F]rc$\. pL0v-`fV [[1l̈́l 3h 3Awf3azM\[ [3,(v5AXZd!ceψaI#8.[d†ٱݥ+߶漦swPWl&=A mk[W8%6N oP["qA EÐG`C)]ѷXδvN'-e}s\z"D96s' *-*bfaOSao#Ia bVJ& 9^Nq<=1l鿙uʪ[. alc=OĔQ 86 ޹oܘnq]nmuF>ĨkܛCt}g3&^q<)n_Fܚi7ᆄ;ѕ`6)3  a{ d"v,[L6xHm uQĭ7Y:Y1 i> [=#Z؆I6 Vdp_4b=yocP_`Xf̰1"leַ6i|2ȒHqa ܫmZЈfh}wڻE'#&cAwN:u֪ÈUkf}?eDb8>%oz*^xx;rܡta/f 2>5}5 ^'t$Cdm|G+bI|gkهKK%!/kEUn/ {{ /{nmW6ks v3tZ"~[Z{ \0*X'/_e VRyPׄoҊ*N[pt KvYI%8`%;aƎa4Tj׫l|"2G 7Va+lanuI(艺S#s Fc>,vvkr6Yd?ѱ~HeKc^CӚFx&+=߻cc2R <07,E4\KZr[LSs8 +Aȅ`}{r BhOYnٟ?y$i]aNhl 4H ϋaW -K|8==jio˪Ci:im8IUiz=qT, ,jo%}q~)ԋo1Ig>Yiӱo}^ xK Uy0hxX" X;W'g7JY'i'JɆK<ǔT5.TQ=цeuP#,WrYziZ, FZ#kCE5|:ueklV:](hYǹ/O>;?ǜp'ɥn 4 S%D@VD3 (GƔ x݄naU{?7; f4{*v]9áJlkKð*Oۿ> eybh_;|6[pβӝ_z x%mZ,feŀ$]0-/*^j{kp8xj g#)䉄<:6ʀ.すrHjܵB (GH+e?z󗮈E }aKNd͋vAG~ xNx>{'xw?ޠ8ikIo9IqU\Fh]pLMbK'Oj7%Cl .~}F[^(xo)!`¶ʲ[\*6^J pit 鵨 hzd6' rue1; P 0M=9̻C7#O2p]<$0}{ n 2M`{KQsH *4;WHvAxAni6FB2Eص;xjKwerF~Dn VܝUHqSL77i<fr'h+GAH/^dl҉y"R.i}2"E+ x%'YYf#% ESvЌf~:PN&LPGh ցhCL@[ti7}Г]/%!M[Qgk<s?OG0';}8l"l 6AC#IeAdGٞ^YK$qԉk >ЫH2Jt*NJT/n6GHF6xe[QC;S mK OJ$67e}3 CCc‰$FFr۴;PbkLdӼOp3r1K;~9? 5c>GTDN%Bbqf֚p| # qg`2h^?xKs\?nkŃڦy[o^5~(N 3jV&l X*6Zͳ"I~tT7kY2aoN?!:XۘQ ^M%g8Û_C(P'(ieo}1AˑQ48SaջbwfSu5LC6d6gIP76'VQ=rRK`q=ɾeu؝ 3lsCx}zz><ފ{[#ǭI# k{S텥T:8=>n\d?"Cc e+4[ו ;9E BVT(g}Hv;̶Vޮve"AzPvmU]tv d b'hGVdzֈL4**=F+W -_?)ݻJRRVCtǦ4@hd||Q=̻λλ'λ'λλ+DsQxܾP$AuU)DeD; m |RB?WtOO,=̋&>W{ϗx*Q'R:hSvOt>)RCs-yd>Fi.]^Ygwy" 6z`}0*lg*ߤz?Җ l~,Ó2ynp*ata("ˊ Hϳ٥ TG+m-$g-;3˄ cs--PPY Q\)!DF-ZTFYB\Btw σt{|h,uSPcʪ|d۲C'ԀSMI 陯0䡁j9)gG yмaZk&k2-CEj $ qwtAMiY,E}H*\̀rf=h"(sOMx߈W؜Ѵֆen2܁zYNx3mݣ*~TlI&ѫLդ ",:39\ OhiZF4FV;]@!i4{WBEާ Mխ+'?l< ,|Vm@d6>VbB eܠ-ƽtTZPa %jdru`pO\lm ^ "'ƞG2 (GGqLg8H'6E+*}u(17txsf+0JLl;L^<;ie7}G9{ߜ˸ `o8#3>O'/;ĻE'+OW{"P*2? ޓ |34NCӌvI6fg 'Np6n[r׋>?Kb;'x=2E_zIK@~&C"=c4~cҘ,7;IyVx j*0S'~0^ۥBr(= mn Iae pO}/[v2* /L,&=o5~SQd[Ƶ+<7*l_qjTŹC&IϠ>xXh_VӰjs̯,+.ʆ+"4c8<{^=xF#zq:1V-PW M=qf@:mقȿOJa>v2#Y5F4,' N`4{pQ}U4Qƕ9j}/GKQhпq@8ť#eUvFW3Gbi@^VX-XXV4`j*2H`tX|/F6#q=_)baoYXҡF 6O=>(,.}l*kxX&.%8-?6/T1; ki?q{&~ E[2 5/_ رFTdSeNV'h%@3Do_E-Ʊ-08q;133O]ZS)'j Wp  Nt:+_v_ pT#OJ&tC*1ڻ)[ywҞꖐ "\/4v6~N2mIM~հ،I] 3'ӭئ43X%&2 /!9T\$"4P^SfeӢlCU~nnSW\qbst6 L+)l\YʻOo2S`)P~ƶcOֱ`Yra럅o!%L2ԭO}IN B: Ul2)^AW nP!=3)*_ݼ:.ɱ^!6Aq=؁Q fQC X;~aԁX`9OkQjMB肨L>(/!ۑ1֛AM04)hYd~ V2z6M^Iړ 9j?37(F Wsơ#1@ק/] &Bu +K,T;d)l-XT͞NPlM ֶa)xc>=̺yoOa(@# BR02^D@ҊnͿ)|[Ƿs^l2;zdzxE1/ {CӥȹUhR>C5N6O溪0q+x+c}("D*Mjg-u ]B>Ԕrqm?m#WVn'-j%r=MQޱ)J_StXӋ y(4 ̎]e"OCGl&mde$R7|Mk6o^X/!P\/u UwEd .l1 |j'BV5P9LP_gf-;q َ=bM$80-)GʔE1l*P}qdni]i5j.WҁcNA<-1 &2?|e(/W*̅>iʏRS_dccP7GagV| ݛ=)$ҫJ7?>KnM%&po\vfq_B^7c")`C.^LL8N0XhkqN!͉XoIH:W4˭hq2U#tF^{$7VNM: pcdk }e:cS>lXnm/,#$U!Ky&P1b#; O{ CL5xl;A Y0.ОlN\Lı5JAmm@ *k*"䛤$a轍4*^p:t3X xC&fZFXXcC"׌eU=vk~O[*KBI<./qg{# bddZ ]B@t\H~KFhb aOMQ5suoX#&芅P5^Ӷ[\\}\ׄ , ԋfgeFvr]лb @)7Esi|e~ [/+sxe qS3fJ>>LB%]qrTdWe*Z}p͂^%p4+ǝY&/EO؛PMVIF[}:K@74,3HOHk)1 EY" ~<:Q/?gK5rRGz_J" hp]Vnvd 17/X9$; +l\G2VK͋ڒڮ@[Kzbں- C{(oi3Yy: (O!Ǔ$Hhs+ *>ǘ ;둓F[YvP]v6]Բ`L&€8%Vd Xa` ЊhΤvObG`xOiWG)ہ0 U|wl0SgǸd;C Y5 n ֌ 5#aI 7Uq!PѼ2:UjeMI;$Mg1pVh P4lTcb``$we%Cӑ:N6и6ɩMFWaqg*W;f=Nt6Fŧ\KUE($W? Л ӻ.i @}7c8Qe3il)@W7!:;0xx| lQ@u9 !(i)ǹ@u|0ml$82%@e]6L=8.sޅ48d!p{ci]IE8Yڤ.#)!]fq!K%`!A`<D9_FV6)aESi8D"N$%pImYxs WŐbvܣ aNڎXtDՏG[)pfJ#- &,Xd "(+ufe5 MxKWju? 0,`'*t%nX[^2d0b#eqMSAIkNKrOgD?}0ģ/htk`2$. Sdlc6M(Z *K'/7VAt<3nvsQ.@קm p񅉟 T|Ds2D7 Po]l_ e87lWK$9+D+q~JUS&CFKC۵L+tX[#UŊ|G1;top~)"? !!S\䣓k0qUgx5Z&_ V-4AXn4@4IIR'V3E(U’&JiNQ/IJRJ/f B3ȝAe6h'P^/l %XAo\Q`-o2㦺wqԕ҄n-QIbrx4n`[s.+iLw!%/׊VNM^<썶ĺ6[q[w{0 yXt1U+heU'I# QՑЛIy!d(P'f%[W,%mrshhj]&1\qc(&R`uܤgQů0 60TQ Dٕk yikh]jWs6쉧ˑ#$:WCU6l@U:&PW4QH_A@~z F}|v[wwK|0T61}a#tD \;M󠙏NPkw ;{f) A⶧+5@ٰzOFo?eIQrme.ָ'$-\OB9YmQh=f,yZӁ#;׻fa_SZ^/(Vd Ⲏyn->;a+hMH)K>nF[G|L6-kS$&2@"H>uC^*.c2c>H5ո{ٹ-7dVVba_(_i/(ӵTN9B** s;+my.![Ga42=d ι(u)dUxcsEsPO=}S[7n{,CXF{)ɍC,a[o2ݳux!([[!f:l=‡5ֿzM nYoԺlOOAr5ڏT6OWj 6O(&iu&kxpx-W>¡#!?tm4q=42&w֎хQ>׼Rޤv^vS9Ы`ZA*&v&&5eϪ`R(vJĮL}9DSTIr{*ca&u%Es狏>㐠VP$LAoM6ci+%2=Pb ag|]O/x05# lc~2MՓ?YƓ1Vd_)lC󎐡vA]`UYtWV0}ꇌSI2tWӴ}頬%)aC+\Q!bIȜ⹣p!Khx#28,US}L~v?{ݝ]xٳG}Ks\ ]Ntܲ (hyqvZ3OJ_'`dhXV_rf&Ib`n*B zcUIʛ6%!ui\SV(ӖnTM Mu󶹊j򁔳,8bO'[ógO ?~g-# VXLw<{O9:=hVr럴N_xMԩ&7$[aq$m̀lin] pWq~8<ֲ?v + cTijoʱ) Ħ"ɴ$JV0p(9 [p~ XsYb=[ia 'z=NdzocJ[^GLJ0t|Iý]" }0Alĉq+!˃aRJ֎-DI7})tEAq/mkR1r|QnS2kO? (a&ƹ&~S߽ .'3x]7X7v՞=Wor 35m"AO*?eVȞaOWOE [P{|s(p*ϕۅo?lnQl}@6 $i;`RW-Τ$ Gژ)QrACջĦ x mYUe@0=%R=b_)R1p.^pklS4 H mHFvn d_hLۚMCT/L(Qmk|oCZ3K]l[3^ Հoƥjͤ'2d( m>#@!0@\CPA&kE? 䆣&z`88h*5{AF6e#׀ҳmatשQFOٸxMPlI<0%Vu7hwп GX@yN9>w;/E,4v Td ]tqR}Uӥ( *$;{GˎUOtSy.Kbib<IU|XEܢrXbpUDa2KQ;W8IYE"X,8)iح PRWOhxD /徇XXxLo2h8 1$ X\,zV||f ̆ aRj6C#z%LU8Cj3RyAX+SU?H{nAxf[ '|O84Z R(˪zqnDӭ& W&p2v6FWWӏ|5D‚ },0N"JOP3贇mpSerAJ{/éqUzv 7^_I3Vqn +m1[a SӪZ\҈"_p"OlK6qZf!#_#$ZZW( -Gp o/ Υ.LGL|%1 x)]Pvm|/pb!p2yeQo]<"ʳ'Z $],KBM&D@Ynlmgpѵqx_ jGhgo~Äa_2w08oFI'ŸrLy>us8(LC'3]͠*SUTO*4)Yt%5#ֲFn#vڥIThIܤqQkLX<\6( 8gO0U7ܚqLxxam $E@܌Qm=|A6hyn ̢ d؜o͏Z﷢l\ ,0 &^y{K8>>E|Gr_;;;wwGYMauɃϚaT`|5Iѕʜ2Q6~u)z[=qѐ|'ͼIS C? sEc뎭"6exhAӻa[ZXvS1 ho2k_Y[(LQ 2[6%@ =~ReIH%I?c;z;tB+T)p6BCܾ-kJoZa_ u^d1: : A:ȂVًU5&7|wjO _ӉrOF쪗ݶeVݲ#˒ήuꨥ7X )4twx/{p_Vo:s]_\}36O_ 9-NiXPT5a<8Xl+:S@w|9?PͶYkX/ @ee[ei\2?K_)V,-,}>ٽ~ϝN{'N6qkݓfL{pwb0eJ&,l[~1T:w(pM:S G/Qnd4Q hV\3ጦ@( HH{zwmG[!v}pި_Vl+6WIЊ\ȴ{'K 9-JYۗkՇ%s4ƒʈ3EhG.Rs߱ՍRZGr@OC].|CF^l: @.͓Fjݒ.3+z|u6@墡%VfӞ< i$-\qyp?-²EAp%a:=coigSa;XPU~8o8}srR{┷cTś|2cR}n4 mEk鈘y@/vERXK]?< y=P4t۠8NYxCTpɢjym7\gKQ6k.hQFY_ ͆!<h ][ $YJ֦qLԂ.נp u1u4m1ekQtv'(VE VxV!}yqztmA1RRVQ0Fߜpi 6y4R> s[nʤ 6BÆ$voК^/t6g/{yz~h#t%shq7dM|Y.ԏY@򫊳ӳ7G { [O:!L"uX2UF-)H l]4\n;n˜UϪb\ݝ/XZg#XW:uR>AUw;];` QDEAn5e ]8CZ*IbEߧ`P>E8r7/_yy{ jdX fȕSrI'.,m-o ysQ& %lTRe΁x UQUUakL$6Y Y^Q&%;n5M_ZJ2ඣzr51dտF҃Qj;WL:QT%=&ce([$(sCpH$hP ܱ B":o'8bgy+laOSěk0.O;Xp X{X{Dh:`}pڭpԈ$Wdgcě ~% [t,*U7tV5vk 7j+q]tq=QDX'DL/~GNx5-Θ ViExǻC5׬oJ6-,Gdi!gC/Ƌ5QقKߥ6 _Bc$fxE֢oBT?L+?KbvВ-+qVsъ1*SjQk]pEu!XGn4,`>Jb3tr/D:2KJo/{=exs?'ߟl8RNq-~Ӵ7< 0/[OQ,7ī6_#9PQ|hay0X,{r,7-}R}F^l=_V&P5oN:IqYyZG# IqYAb}yݝz34|PTr/,y SX>[T E"TO[X V^U/W&xj;x(AJ&`n\m݁b$_8G;тl/ jQZgG?8Ilͫ+0? B3Wjgyx:'m涝NQ눅vP-i` E#qu,7z,̨ cz2Ad zq5]^9堉{(tRoosP20 b'P k;XďZ8DZl  z57F% N5cm09VT'?8ЗћA )n?q L%q9ӗ/Rg*ou'kcY5)-JQW~C HK|5E&k/dMihdG~yKw b>y8gɣ;)ܹtr=9TՓ#tS5ԈSLj: x8iq)}r9 R4Ɠ31`xg~>k|p,>UWg(lݠ>c4H -Q]{Dpti{]%Ƴ1Bт0?^`D{[j5ڝb?p_@ɡńMWJ~{p`bNP a\ML͵k]I͵iWkYӀUC,D`\SԽ=npL(.EzU #p]EofF; TVQ n{vp;,D#eeR1uppfAv&4}yxM\G[ dл@w!t$2Hi<~Hl$j2]H}oV̖:62|E a6!Iit'!M~@!L w.qO] _ZkS0Iedq|ד|wk|l¾/{Xʭ`Se {+M$e3yc1 A*Ĵ6vQiIcEVNߏL?wO!ɲʤ^YJiuέm3`woɃEO{,Ii Th~G48Y< |c-|q6 (oGTdYL;|L?Z2w/>dZTFB@b7W+5T~4.X˚OcM2~[+KUL!@i$By_+O [ba%VE4C3c r,}P[>F:Θ额L2R}WrOsyHx !(2er.LifڗlMєl+|Uh6Y^ &[0%$ )x5(`0~5)uʅ\wp伢‡{cute: wzV+)TD]4[k8y{hZMJ4JwfVZ/I;KX] ʗڋδ2xҦl4Y%\d.hn0PnI Il_!حX+IY@,_!.ZI>rЕ*dkn李9o,2{;[FЙ=ssX}LdA U "Lj8bUm7>l.bsvoDI1x-\](r_ B@0`se+|!Жғuٸb?JA g'ucs5n Mlj|@pSc ؁7"搼zJ*z+G>)^9#ڗ{5&SDrR <9}|0haǞ{ewq"ܳɚ")%R1ߏț=>C0U|*'Ӈi:lS}g?-T iEmZg. "Cl'E#,6q}НȦ4 4S[ tc 7y /$S2Ey[`afާdaX5y;h,T>4fQ#IKlO2+$W7[(3S{"*狉@%Iqy 󢓰~PYWͻ I/ۄX7ҩkG: o[!tr뗿~X^dYB }'[nO+*WBzkJ"y[J:ΓUj%%,J1Z n2}z ׌k&KPڌYS3Z'qO-,YںxʹO<[m8n^l E=]K>)¡b *֏^\q\N5UhxrzjJ[^id)Et8zfn6D 6WVj ۷S mpDox0NvdGzS5-ŽP/pZ ¡R%y("6V5mhB4efG+P2K [~c̹.exjJ*}IFYIPPEZbT벨] eSeu8:1nhrLigT. EG#E3WSoR4dcwRw4`Bi]\┙j sv8ʒu2qԴXLx#܋tKTbUIfAce$e##* ml >H{ =  O.F Փն;UG?&hDrIH4B5I":بBHHK`! e{Fs, ]@h'eXV@qk3yuUnٔb8FG=0"4 OAdQu&!噔zx\Re D]p{,-i٠Fؒ x^LckAiX1PH\-4*3mdLC\m-܁z^HwJ)0(skH'6)I l6CvzوP :M妅Ni/koN<"ѧ#iI{{LX-%\$P܋ ʀѣ20#'h>fs4B$pv(1oOL 2QafxH>T{GHx[)E!տN#9,uYnawU%$BnN)tCĊU(`3dRo Z(F 3 jEIV}t!bh#>zM^_m~] *՝iB6Bgٕ;*zKafp ]jΑR:z4K~CeVvCM8еgvWqTV%j-Rzl<)f$~HQ~H-ҹnp M:Ofr9Rl#9 4Iyԯuq^o\J,*?s*DlnFd1Qv`%nL$wSRWY$.}\;pޗa'RM;ݠL!Xڰ>mvY 8ӥN*}+,B\q%VWloO3 /=-Zj*G2۬B\F dʓx  k*Z4+֏ 8w?sP<(SXfn2&"j+J?[l'%) ϽsMzQhن yhd;Ӣ1_pl@tˊ¾F824AlFMH ÀfGx]A$px$3B}>;A4) -ZZUB"@0xҋ >xAZEIr}{Kf0Oߧ6L,Qu#6I%d ^A a,+g)C'3уD(6xdʺlvn<1!a4tC'G͓F9S[RX- NϛڇsdW8"Qa^c!L]jŏGhyVy-߼:l¼*%ElH: ޖ^$mVR9fe.}{^yo9w2b8uFJZ'Ceۨ8xM$ cny=y[fQݳ{? 5P"Yx}Dgd#y4`np3wۑyF1eVoj%jyJJ9 z@sκPm%k 7n0Z< rpHXLiݙdR7+lSf6; p?% ԓS`#\~ S1&Y)KHxzPy0SJ. ;@[@A3%wM9I8>loj|D>ۧ)&uK4 N-]WGaB!"%JRņh'is(b6<(mh ^XWRBIJZ&^ n ]ħ49 Tn!k]Y!O]H7v[ZRhz?i™-u$YVJҭiDn-y~xܐf*Z'풮LHfUw&dDfm\pf[/Do'wL8Fixsتj5=?e`)#դaFD{TQT;Z풶N!ē^EoGNfx,hVD@lkqcCE=j&4C&Vח"kۆ!`Me FdgA_--%!Фl aUJGq)2q]% T)S!<:8#˅43G@W0rX2z+fRX>P!edd`yvD{rAKk]B/g$N䕻}T:'̠U~U+'wh7T;;b߸*"Fݓ  ;5/{旉&! Gؗ7aghdgwJX tˌXȳ"?{sl~Tjܴd-p:-2Pi%wQ݊q*?KHW,ʇxc0'<{bS69s̄<4j*t~ X2E_z|fBQ@MTF2בCMOC[$<oE`X^%&@L,3ieq{IF\dmBl?l۝V.NT_I2iFI+6"ZfDxt>i`c`ƭ|42&7O4Q;Ʃzn-9Z2/MLU:Js( oG{bN'sip]Ńg|՚c>2lۇ]ˋu)wxE2L1\̮aU BeJp/gT_3v w;3";(y-ѲӻP*3i1F*$BѶ*nmm.n ]LmuD,Lu0^0E tQ6{[v̟vc! Eâr2^B&>w@..³V7an 5LrFpkyfHħWfE %Ϸƛz+8j`%6鉤#sF*"m$a2sTaPbXn oMql% rgrx +JOW+]E҈e>dƱ>˞k7iN ~pxX4hbd7pBUkD4؊^b'hDEjO-b֛FUz~,IG Jd 0y~qDlxmBv" %JZ1Sˋ՛UW!ԹVuWCc8Z:-v 8Ԡp*^Dy_Eey漡egQymV9Xq`7h/ .+紃4Ѯeer>vPg61o/ǍK)hWCr|ٖJK=^Oz+3F=4ȼo [D6:̹]%}|u"}"b*g<f1;SQO F@:%bTYdk ҢD,V4vs( B|`θ;); ~@}[̒;鞴㜊yԯ-e%+5(žjk%`G.60ZkF7'DII13&H/W<3E Ǟd6+,L8&Ol;& AY|`{yҼhnj]4D ]<|5Q/8m#Ӆإ;=ɏsI(jb<j~ ..cF![ofwgk8%n0DD#bTl78WIɽ٠!NH9k^hrU@Tǥ΃C1QQ7ܼӜ Z7CbmuTj)hI'fTJE*Gd64A<5zZQ2qeROlpC&`uMl|~[goX boVM@@ jzd3;x]o]4ٛ:EY>]TBVNld^[aDDk'MCS6LV `sM)\ Ig.Q ըJ`> 2.,ݒ.e:"BvnaаN:bx: ̅S3V*֦o'{j9~&P+̇1a6۱67E&hW;@}͢,C@c K6e:ЈtHUh;ܙ۩x} HsVlM5Ֆ?qvVʧ=n<^-wj4DuQe(>qAm8ߣv=gw>f [$6?qD+ˤ@bxg*80D^:%e4xRjؐ}+B_ZipM;3c!x&6ZFwh3W7?Q"J'GJ |Hpw&Uǿ1OW  |A窊ٕ:SW912?MN(!FzN1|J B\Ʌ:b.,|#:ͰPjr2'C3`~VbKuCN_^|_?ofK~b#b>=ڥdpc1r)o<ڭ[G  穦B8j];e9&n*؍5ݾn VqseZ B%(n^QܫD]t$"b~S*!fctS^šjPYl Rk{X+VF)U#Ȯᨚ\Tk'!͆䠑UhihE?`EE%oqg7rw08,jxٗ4 7KrK $G2ҘPUТiBV\Z ?1r' DٶB0 ElDAe14RCcV XZP7mM'0hc|&O3m\5|c:p# iOlxvdiɭ 8N$3 DZUtuC:`% %[%{oO>7՛2C4QZRK2ƶk#G9-f "2v P煊:ΩeʵBv0!}Y7J8UpИH=;}T~S*ԊMW-|ɰ^39 8hz#P/݇*_wTsvb2C5TE(x+S,~kpA&CDI4*DG'>d )UC۔'+_A"*Qx*TP <<1^Cܭnp>49GI*Lߪ#8l=eJO5C=0>7IEY? 123[u`u|gw;Mfaihje4lU8BiрbKfZm -[sVip*zjӼEylʟtO YtY5yOz! U%*f`\7Ur&7jڕ?2+E1J\ T 62QnHCy+~ ezQn+Tb]~HPCMsZ)J!"!;I»3휔nځ)Ҧ6획&ing9X3JпtfX }-ӮgT8@nK-.·Z9lH} Z3HN -UF{u8AO'SFjul@ƻ^/yon&"䡸R3~Q KR9p(e >'VJ܄zWq|S Gl ÚBjbRɨd列=CYmLvV|hORJ*@SCOo>T Mcፚ–W. s]C*]bss#u3<|x]ٰ`YMq08Sws 4 CXjak!'4i>7iFOlJ8<&(_ґ|'X«Ɋ);cX(1&lt鄛"Ґ[tY06lxd|oMk#}?}tO?g QQV ഠiwӓiZqV! ûJ;ø̆o?t)Y;rn%NnrdŞyuژRAr$vņ`S;0͢97 8V#NIS;kKѕ~<9=k5[Q6hjz bYn0|cycD6T0bnn: a˛՛VϪ1_2*kQUYnR 5-:J,ºd6K6ѸcY4fMa,po]eڀ0\C}3J@>z mFyFLDeMʕRl8!CCBd)zG\vL)H1^* RQv%0{'L;~k79d4MUmɥVfR r+M~]R@$ Z9/%:t"J_F٢|m,ϪlsĆeXV pH'gb)d1 U&(sk\R"wd=)ݔjYyY̘,ȝQH p-Lnh'6Ndeo vS K},MxJIC2&R6ԭ EEPatQ,A߼q44@:X_*S7Vv7G\h}?էuGRq2=-: *xLnΏ}57' X=s'EOJzT8‛yfaq esd`rܜ8p:0̓$N|rTQAp$e cF A>)Hnq &P@&p< U]I`JQnnh{04nAlxi 䅁C[GvY#hkQOt]AbcypfѨ={%5z^Z]+4OVSՒloC+]3IE%@WпՇ~2.S>JIM!Me(B3=H$nY.˓XٔAɢ\TY0>0 i,;d^ـ ,ڒ;[yByz.#2gʅ7N~iR.1M9=eĺNgv KZ%X&09AO"M&lbV.3Di M޼%-fkm6o4 Rg)3Xf6ien­%Dvp j7 gWBo{5Y .9ĐNSl?Kq}Wi.ۯ~;~hd"=>U6w{nh˙Y5t$fV^&FyrmݺksI˩LdxGr%+0^U>,g dOȊ ڐڤ͆ І5$>k*yu٤{yoL\)w ,J*8hĉL*rOa:~ÇSS RˊW:,i#)O*.in!-o\-jXګS+⩦KKwׇD\sޙDHyj15}Q1i lۇw)wxŽE2iXHx&?^h]3wm_)Z/ iau>?}o%#fW@9,c6hQ(#yTIPIDMmT{.Pt3LC6HQAY4$nmm+H9Ӹֹ&|#Kb&Vd׸T&xtQ*68>+uf98  Gd J(pI^w&G;Eog2z;Qى9.-luݪjlRCFx sbo#2w`s9'3ǠdVUiyk7⭹%D5|` ԮGqS6OXPBzlRKևJXMzg&-Ib`pt1w9kmrL>f9wս?ܒ)-btpaK'unBf,ؑǐTM ~ʌRZBb3xp޼h7cuy;ԹdM]ǎvPÕ >O3c,@ߑeq d7G7Uyel:•g\-4h9iYߣ%B0?njk2g2ZQ4vCDmX$׶ 7-a|nVU?x{p /,a}% ⚮v$mj[(~E־f4e3T&=,\T:L%h~r^} U*Aȸu*= 77wP>JٚW LGY:@n&i*ޑ"**)pA wR$CrTݑoDzbꫦSW 2qfTSr`zs9Vi,拑ʷy U5_=*@69V˅'՜m1Z҅ 5`!ؐZQgA pec 2M2!#Iȕ[*M_\RA_ʡ Q*B2`Qc22㍹ud2::v.O0O[;5o)#]+.{*}M[ 0'*sAuUga3y.43FW&jMXVkGIwJ$-g]쥻Kwb/Z%! %Piu&Q38 ]_Β1Uҁ$q/V)ך I46JUӂJ9Ls򹖻SSJ BgB\@*q K1a.D]UUFn!7Q"5 60|rzr+0CyR:]SֽuQ,*܋n+Ot٨[Rec\=4DVJ-/7AO#tvSbX[a$ ΎYi^-ETBf(!1$*޳i  &ِ}VavY񚬼ݼ4-z^ n I-'U<ȕә1gߠAxG+QM}by:'{)3Ga< }SQ9XGfaO_6ȹD@ -{ڀ4,ialDr\\W+EgOLM,HU;bv"mBe0>}`XE0[kEfy.]4˻hw,YEfy.]4˻hw,YEfy.fy.]4˻hw,o-b.Zg,UCycPj.bR$&% l=2Z GFYWA44)Ib#iUbeLa%Ӫ6ƺ#co7a"jEԼyQ.]Dͻw5"jEԼyQ.#GЬn<@O0VVXsggwg{׋tٓp3sMS8C2eohI>#6cr&)XPrv)C`C_ NƓv"ݴ33(8hJ*GQe-rnG3HT c B*Jq7IKёPu wzg1 ѫE11Hlb+UBzߗGʨ>8o `Ær>+B^Y :6-_eNKlAeSkr!FC̀%oWRxӗg5bނU}N7Jr8})'?i?/NE8ћC\'yܼv/NOZ^b+ǍyԼ*^6/Nٗn]/oi Cxrzsq8؂h|?Du:){ċtԬ8jp0z*W x S19_7tY8 :8=8'U}ըyyy~ = t)N!FP i5̈ja}0.RDͦAr!j3S`?@ #[+|frtI[F`Q*=ܼ= uƨǯ>0W[1*޳{5yZr Zdd8}I/޳Q~枡0ޜfW}v m˫d@GqOA.%|Vl8CK@^mW#CFV  m;rDoΫ\Ofo%5/YmΒ_M_aUu3++Ab{D…U)s`"c 3S1]cx1i*@%;iXĠ;,6R~E!ĵPoXHz."8wPc@V?УM==@T9|RV%*ۤ/}]E.0veX0‚j̸0-n,qFze-]z @UDBJ[qEd)MNsI#盰6l8w.%."(y%._xV]44({$fU W Q~^|]̐bQQlue7P&<:&sm{Q+9F"}ns FR;gOǏHN4;7) 4#DlcA(( -QTw.(2U" /)x/mC -1&K 깫 @7t1*WVˬ,?/U'~) > :}΁ɭ#d:q_HD+QÂZr)|F/b- ] z+q4ģmڹUX =1ϦQYl:ЮC!…L;oAv 4:.YlLah-wS`<*[jE2K Eg+wϲ~۟OQJ(|b(tO"jRπz.KE%y'MtٌJ.t`ᮾat?bvaH$ Xdw KA-(!k8Dcv%!F]  UŸ;H5- 2^,C4E4((XJgH,&zHl C̐ եtV3Nz4ϘGfcaq`:3`,A5ۀp(-8>uK«%!ШMߗmV=VV}Э%N:PQ'nv>җ]yV[Wo-kdc!<;,b<!ӿy_`o߳K-8MxB8\A5+KlmZ^]Z1_Jz\.Hfr#-PjUyqHלЯ9nȓh蹔K@j+4ܗd\n}h8BAKڱUb\l*h_Mg3u$9Kd0EefnGIi7UC\ÍM2S3Q&PQB1lJui>a]T.&v6i(]T̻~Vϒ z"EyoӖKX77k1Fx5@B~IcI07{.С9f:v~ʶZ.HgdhlOmOaE0^125܊ d\dž/4A))l&+ס.0d<m@V1d2̮wCEK¬\w|ʶ]m 4|-eBUP TBѸ!E0j]~[E^+|+sy6g2eK 3m4T_v VlxX5]p8U Pt@v yVqJmS+Ư6WYQYJ_VsS*m!GN6GzGWZp!W}ZC :5>FW& vjAkTrH䧶Eca{y<_(/gQֽ?)|f,Z_& ԦY]xk ӧF(Y>sE^iO-1;gU*s[ QW](0J{pVEmgJtVVuʫ%吻PeWv/;LUEvwaF>'%V]t k6OG@2WG'Cd!D.A6&-ya&#VۚdсD19nv^RHȋW7Zq 2Zo|+\ 69 dpp|ɔ2v.~|v8;m\nmaȽߠy.54~8h4ndnФ @FWoLZK*n 8[wGG@j5_s%ra;s%-.8p&_4HqvA$^.ReUfbQz YLT[f :_;f )pEc*qaN@YDClé][uT ; .u4:o9.rv^'cwqJad e˲/*g._ \K\pPtǡ@A0ϪLw]'X{++$*  g- 9 AG>~ @ICV|fRgv?nߔseӵf! b9l& +pW`a kaCRH?1HDW(񜭖0gOG$45'! 9*gH¤R uvR MQ':;! lhGl÷vۺ}p9HY2 MmBHE3`2' jx\3jy :H& H V%<\Q{+ouz.j"NXsޝ ˄,@~85JQ9dՁ` xӂz qXQ*;-FW\OⲧOu/~:'ݢNj#! eSun:&\ɂw Y?boPF=Xb| gƙ3 E _" o:~6}R22F6Gq* 1e\f}D2Fka zʦOVY*(AB^:ƒqIܙM2JUhd?5Xv'C3YE1EyT-˶H-KQ:copݞI\YWBCbym _ /֞=_yQUj#r`+R^Krd@ Rt\!d09:(/Otfiqm,\ܯG# I0T"OPT61fJajN+Tר7Fp6bBg ꚽ- X#SL!t>EBO޸!7u%\ 7/4 ](Z.FmYdٝmڻxr)%[bI?%ʠO U`!vϛl5v0|e=r૷7t늱ҙ8Qaܣ@5߿!'ԞggLP=2axls[*-)`xc c.b* #ԲV2R[aA,A/ؒaU `u]ޫ BO) 1^(t5 5U}gfVa1.TTH<6Lۡu)9͡UX$:(CoYgbuhfl;VUMjX`&lE͢V7yfzuN0AMy$"CՈ >Qrg:*]lG1x}'Y^a2#L*EۦX[e)&q u\Y hv ??4y'[^"ޒ2WtT ՊCsS7é"~8t'1Wt햺QUqo U_!h (Ȉb2[T= >^TąLw*;J*9p1_AV͚" F,(bQ? ǦPzBހHQlź/ƕjӰJ偧ӏߥ%\lz_]{I[YZzTgpz `{OaH8`T*2mw۲8G, EL rJ5P$ Z_+"%=+7A2@Q@I\ BQ\ g?<+oY;2~[~I|0PV KBwV~L wI-q>薁kIpȯ4o~t[0Mc8WNʸNc '#{mt@<™am; S4}Z@tJzy܄44N>^@ՅKfLfL4ITȣ VH2 QikETg/0mNawʄҟ :SfTkSTwzʽZpٿRtC |JDZ?&n-̋BE|8JSCWKL7AtZ\H;N3L~V"Z|7sM^40WU!$*7s c'T+9_ᇢwQb rWP mꨮێZ2Zh=}^6UpJܓqk"ju 9ŵ[q<_5Px՚*f*ȮA :WD!,*'a4X)r(O]CX{g;lRMB5tWEeN\Uñ} tf(̹[&<ބIϧcu,(l;{~Q|f5I]3 (Cfܨe ;x4/gdzaՃoYw&eI?rN+δwSԝPU#ܹ̾U7k蝹Ka]_w?𧶻0tFaJ9O>qgٓO;t3CwxrE喽'>HJQTcqeYπ9oi2,pm;Q:HKbӀaD'L(!\Z)dH0pAϠBz9 ECKYڛ0pj۴33fz /hJAޯ^i& eD33uHT :θla‘e &eY$YtW:֎<x@Y*9nLSleJQНX>A):5LeC$"I"a(JhɅ%4ࢌbWY}. D(GmDv#ޤ8^7DhwơبFU|߼x C%'?ӗ~!Ayy|vlVEaxUON/Qy^RfVIEycUl^`/ݺ8_4ٛVqONO'/ϡqb g(o`4ʃӳϛ^_קh/Q8_5)4tNݠGe;h`KӓsxR_7[7[BjR;P嵐BkVÌɫַ "c *lMҭAr>FӾ_ 9HYoF\c@yyGJ0%\G+i %n] z[-ƊC9|pBdV_-*w{zȯ>d=vczM7NgI+7Mm㉕[gXG] _ .g#H|Bc`Rh׼)W%z*|-Z)fy-@ U5z]?zuzD2t~* Ju~e3Yź:{fgn2Vv >r;:^U0¤ƺR:tku &5jU59OHgcMw&y$JF$RX7O_bWb"/CGee`ZD#`Mo*ڜ9 mOoE-V@G bGsνpՈI9uMD;>Ž>:D6tTxur9琊7;NiL s_<k; tkL?R?썬*߫˲5efFz + $:0~74&:U8<% |6xC;\ h-@X[㗢1`-QW_/Ֆݧ<-Б*;El΂]a5VFXa.[7A7l: DO +oTJ}ڢQ5EhΗEkYku/7_| ':_~uS҅˭SRI68eHMгW娂!+\m@IV~TqBX*z(,{Fvnwq鵓+(_R t#,U7 B&k!g1V:EGUD -:j8@DH)#¸!.ݷ+c%pʖW(C๭:jԵ銭tccfD1XĀ1Az% D>iy՘Ff;,+U6;uΛѶƼ9t#NHVQU;l0OIM}M OFՌdc֝"le-h1-vVD r#@8X{;edk˘NE uʡ'L,O9n_SD2923M9 S\קWybB Z+D֦Q%"̘Q9ݖ (xVp%wx ͭv=5؂I%35x(d$Rg1$z牽|ÁW[UVƋη6Pbm%O[ yȴcWL7A(m,QVUGީC. C-Rm#ʇtqUu7U9iV{D8OKX%ܕ`X/%ϰa?4?'xd>'#t#6hoZ2MWEW璏EzЯ: ]pco=gue>E{)p02;syfذ,r 8Pze.d]?ԼkST$+KRUlRu  S]8E(,2ϵSVC:u o͘dcLx9'F\d{(~!,A_su1~l- #0gP)YMB2+!Wue+_ՒCV:ԖCx@wWW%$K9tZwCX9v_c%C+\|0(}Ѣ$5պW+_뭹Ս0ZVݐXGΙd1~SIXn]U%5$Yaњg3&Ow$5B,Ȫkcv4~ņ?=IKFV^36 - 0b6/V +@+)p~ڼQZ6'@?"o:8`=ۢ ΦY6N~O iYIsW~sWn`łOf@hJf4$P?%1E{P]X}lƂ\%1ǨI }Yb,qr=i7O OF.$D4Omh/ø`LbswA,F :PxՃwn 诜5*#WkxV=2Q !Uzq]2#c&Ŏ&K 1yY?)ɕL0f?M;bKG)`$yǼiފr $9sf:_"'d,R򃠔= (`3nmyϠT|_x_IIkAS/<26+xʜ4d ҙ4̋N+-ق9rʦ-x)S_,ֳpWFBdroV$d:zFn.>:cZB)0a϶"~gh2-GcCyۈ_^eI2 RUB(se۶XJKPPD R77WK:/m.^pmwklyv?> /}y'OwwvΓ6Q.'i:]Tn{rOGo#tp?Og Lq?|1%De2I쮽5B ^acyc{p:=pzt>zU<8ih"w߻'GF~~zuC>uՆvG㣖3q7[~"gݛ7DaQw^`?`:{ +RSF홓~൝o ȥ~@Q^:W}X7p۝H FowR h:./Y?/,Ct5sQ>7AVG8{8_O5O}q  ż dB$,]͜7nntELZpik'Bm[cu4E~ @}nm տ_P 0β8餃f`x/g%o˄|I"*=x2g{z8h/a<>0I7 /" zɫ7W ![wEhD@Ǎ`}`ǀzlw+6Ф@h0e n !!IWP8Oi~X<Ӄw ޥv/Ģy^bE}# r/6s]4~•GY+׏~4OpN4HY׺8E=_ОϮdˣ ҫ$7<] qD6Y&)Eػ}rÑUi}|\U?ݒ?n_|yb:Y!}-O>tn_\8 Imhw5kd.f%*U4Ej^Rmu;^Dݝ>+߸^飻>kVdIPm~H>N9>i4kQwoicSgzWnSNaK]o?"قx]K6@44%_گ|\#]i|-]Rk4~o*hDJ-Ƚt^iԤ>+w6_P,d糹*rcHқ) bZ{ԑ}ZM (ʡb BdlA1!.u oN{"h2H˵O|y~ yDge`@gIݫlix`ě1^.)zMШ.k&_7Ǡw=5뼂GiaOM_hl 3Kn`l4OYEyW>5a?O[f.|~?=O?)]j:Z/&Ãc߫1VLo/i|ZAkd]^7 +< L`FfC, :ᩨ!:o3)(I#[GQ#SjS(eE , Mlb+zKZl|3 )W(ӱf/DKJ %̈́烌Pi94 e(iޠLc6#W됑n!%KY!΂rrx f9ufb":zUb) 8Ҹ\e)!6:6bRr~L].aqؽG^\(KxP[_3SkO#Xq)QoJF Ï(ftb0Ć;mxR'fUh+ud#80J!0 :ܵ,9p:ˡɁ.9@SrKVyne:^r]Dbc`bS0n 4u ǚSF >Fpl|7:ki ]BP G p6aXLHpA!#e}DT,$Va"u˹9R $  PUQY3HjeP#IH*63BIp`P1X;x霴7~ [׍H HnLx"@^Nd+:;Uΰĵf;Ɖ FX7#:Y:o͖.]7*U,=J4.^1 s ҁ!r@&yM(Q^ɹ rb3$6b%1 أR^{ X(&C oIҌ !^zΑFrҷZ{ڠ}1'Sn'9#m{;k~G4?wWhx/V4T-cGQ@2:\FxO%&M\kZ%56'❔RD6SWE^/EE9 n$hP>_. A0(-%Rt`z/HZ,< ח/JMدa{+v 퓺o?IU`]?_#??Y{poO2(/  ;_ʜ`&ђ+hgJhP+帊:fyk;;X8"s+݉s+Ă< n, ʥ\Z.;ygnqo-gRmXEvOŘKă:vP.G&xL8Q@P : >d}<_Fb քXKD#F}'ls !F,Wh' Ax XVE_̦xF7a'SUn\Un\Un\Un [EaPf>/@-  M)Y}_yOu"A,y,H7{+o-1/j! 1T)c ovͼAQx^dʕZ|`Ub}7DžN焻^t@w*{j"CkqcSFERT^j r;>khyxNGSӚY7934G88oZ~J`F5( U£ puJr{:52IhAdIk("EV՘#WL ˂}6B J3]V%S̏^y:R־r83Ō `cK3cDM  1iڰka) +8jj2&Tiv[>BSTǗ3eM [#E3ՙل%eܶZg#)̦@g;iu'Is0'gﭣ7ȇI 4r?1it>@"nNڭ&hCa9v:mC]V(Մ|Xiwx1wvF[APn:h7zw7#x܃y8Hn Ќ{srEծO5vBۍ G&؅z,IEA AF{k}?M4z>2ׅʁ|_2?G /̀f 1]ˁ9ݙ>.ˉ>B_:dɡmىp1538 =w"8攇1Ó+粈g bªiۧ-\qU)ckܗ5rE˙[` .Oh g"1yǓ[}GzOcj137 dSɷbj9 ˿G {04}9 l|ţOH_Aƈ"i/l*s„1AJR;xWbHD;E2`DJo+8|*>a L/E vl"+^rfCNƻWR#u5" &WQ%cSۆ-9`>T,De.'IT9raiK@PLvM<&f-8Z ѷ(<= I=b/=y{[J3|_4*Z%h+?oBD& S{oB0Ɖk.{r_22 ,Ioϟ{!Mv&(lUug3wz0ݏ1:b=ӊ3g~mTw HHH[Z@(>Xx?QpC([=x j!C 7ئ1'cKۦl˅tBGX?)U!ʑuC_ $V)'3Z'- r4`Ftyosq:hw{Ӿ'E пŠpt]  &ammr%X_ 15* M.8cyG0Sf)g&fͿr;rxְA*('>rӗ̬ R?޼#[~?E$ j;\\\#Bb$a߳VU/o lk=u:u/7?Z6ݹ{DSsa|!GRfklάִ4W[Mju4!(79Gt5kDWe#ʮɕKoSzZZfJ~y 4 RL@D\fU-1,fɷs1+VS$V2$H̑eKkQf:l×ہhX0E5bR"H$#p3FYΔO Jޑ*F^;]im9i<j0цR֜uV5)% ;*Vs +W9dKeHq!`~9V;Rhڤ߮)YUʔx+;@E} Y& V$`Ʌ#y$#R65+(."F0rFK8N~ hEjл9֦;LdA!HrԐrYɲg/?#g(Em mc+{>cFXxLV9E(8ްyy s6ݎ 9nnma6gx͙jӜMe4gg>9+2g1,9˳I欔/g󱗳Ils3X܄ʙ0x]9՜ZpXEr\n.EA"ÓǀF*SqeGH8} 0Sxd/Y{alk2c޽/t7,'cPR3xv|@ ~ܟ??#;"tPdN筋woK_ά=P## 0{ɂ{9v7ln}w,(@ JK0Bgӗ[;hۗl`]烿tOuM>}v|Gv@tؽ蔼(tppPS9Ωߓ t;RUuGM̼#YӋ>|ߞ8`l~뽑Xl<"#|M QͲ /P٤[rcM&W(Ձ9jPVOTL83X{ۧ>hNr;H ܐ3@0 J+5pju6 ě~Ϲߒ\]^uȝU %O#!c| G[~@Ӕ~ƣkFˊ=p;Orpi:h8,^#%G &.Z]4ȯ~y.jFO˻|2;vcv.ScVTih6[\ԓҀM ݹ<)9 RuLu05ւQZ‚ʥk>.+ e} 1yj3~T{p^pOZO&;\I_ &cM[%U'9o7csAz؜ԑ96[dKٯ1҉S(\;e=e끜erO3e8qD!p"cIѬ$\y{լOV3{f8?34f'0h׉pPP;xxK;=Uz94If7z0 {_)3' 8'zJeTY9V{J0hDq"| rg9wDg#kHM0%[Tr ZEnN3ۇe>Q^Κm].0ۻ;Rv70]$fX z3!6zF.ݓ/.]wekΉL?6lj&峢7[}zʨU 3H:2]S:]KYmUH'QQfAqɽyXM-ypgV;NIY)-g(|6Jln=g3l"qg1lM۳R?-ڳ;@YcDl 4>c953aْAd%\5  }/;ݟ~P/Q >#s]DDʋW97iQx~Y\mx^[~q60?0DYo2WkpV\np*|ax%T {{n.[z}#{1{Dъa'"+ĭ{4ݻ ]{.>>eY > Թ\:JW_4={z:_{~wDM>vݹsݬ=^m@wڳՆVfެ=ǽڂf{swiw i{zb(bLe֥v־ĕ9w/C˯pzMe۹˿?o0_ᾸmcOnS23X̍Ј"YZRІ9r ݝW[;> Q P ŌBWtꍖ]͠ĮQ;Fv 67NN,s9e ]rJu*5/F:]Ȓ^sV5vsٝ"N~EW_"ݽ=<pskn^\QۜK]z`!bo2YF6jWgpA&ȳ1)g4CA'TK) }PJ)!#އBgŚvC:BnϹ (-Hݶ9FUpG h;92&Tφw,vt;NQ1o=Lb/~kwflF~˵@OfqW7X8lnxfO8wj'^5(wKco꼱%lʶp)F2zѽ=_]j1`%\~1z2:-:E㾱gaǼdp` 2{}g8MN^ 7^BUUΫyEOZnWeo.PW3JGH^*%q¾V#Ai0辸Jݢ[8KD; ؗ`S`@_ccd"w՜"9{=PbS5|:HCGBgevsaZo "3\!v㌌caR%D`aet n~U(xKFn-&MyN0:887]/V˗{Tu?`;ظqMl\O" G!I9{Qԣ0ۂeGS\1{5$\ϓJxd%`Sy랰W^cfo`a)=Xd䳰$ x #>> Q< :.!VϾu<8Ԑy肧˟{Z# ա]r@_8 ա#@v}l*\4ݫdYC1pdFƍ#qvƼ#0U [ﺽ 'W-TQ'V@eU.fy 1x317ް1pAX pE/(ljӤ hM-yQn<|ZۂxY#lݫP{[ 0%oc}SbVo A >̖Fa)d7upxxs<},V;U0qe!-akg}G0}.h0g__t]Jp|Tx8޽] ʌy@H#&zx/7-m/~]_մCa@V=ũ=eZyϡzj}c[Z[ʒ \%+IJzy{{;o۴& d`"k z## Və J}AD$i^ hR]^.&Aܧ{^owGPqz|67w./pcc#- Yy7q|w\>W/.mс0.{ڶ;x>v%HR綽W;/_; `+a5uI-@ŸMqy0]__=^ڼu=ݝW,/6#! Q!rɌؼd_&ϢKdq¥"K::>/nSrj .k( COH9~?xV^m%v*o@L=oi~ׄM5PKk<2Jbݲ&/H4Ka59,6>{v@P;D3h ̳q?!+Z_JVh+KŜ/0 D`ciwl{ucDxŀr x9 7p42I&ndPswްsks(w[^$SEǼa\52֦pG,e#}7.&iNݱrE\Q ǏlOS~9t 3?7{`cp%bwtz4^5cI[J5Bn | bd XL098f`l' FRĊ>61CEnZ2UBƗ} rˑۮQg莭?jwjjx4v[Tn2D 7 lۯl)$V{SEt(&9');1_ _t};zk<4yeމ'/s}̠^(1~"@{AG^۫afU"G~ ׼h̸!Zy7oo04L n-s!Fak-jnv<:4@PD=OMUzr!fW[MZ~t/oӞ&5lo[`ٝNCˉ7InvVLfz5P8ZZV8~a=d`Oy^X!i F'+>a6qk8?zt]0_3z1Cps۠)F WXVDΒo Mߒ/4~z?)鿜1#Ï(Gyyqd!> L @AmWuȮfv۝7ɍ10 !(qXmY*;+; Heh[I=` G_PR@^!^zj71/̶8wY'$jrU*z̡0_i{+I|=Lj ;`R/S \Vz)g/Ym'-'jtz#pn2G~ϬUU$4~u2,mf*[I5V7پ*1/bNhRNr %xK^2)?L2}Lɇ_3C9Ɛ^Ny90ό&'?.0z.G}O;m:?/t>Ew2IO9@a\ Ӭ}Vvk6;T?Up[ _H:Xx42bv&a?mnܼUgS@6;=.δlu `-)k0mK_n GS]_Y}3kM1}h4Մ4C+.߬$;RKޱcyˆͭR{!MĹZƆ aQk秗xX΁{Ҹ"pM3MOMkZ]ta⎡9k!%>}kI'?y+O`)F0`θ#S: |+zxӳh 07q;̱+, O=nuO6f_.vYI[r /&L%teIʮR%o ͯy@1DSkZc2ɔf7c$Pn}QyHU-~c*gg KbI !³p!k#q8 =6Y8=J&ȺN2T:[9@: ɜEell;ٌ/ikxr<: 鴎11M,V:6f¤vX>piQW39J/w2%Q0*Pڃ8Vz 8 ?kp0QSR(/{v 4lbFsIFSO d W`Y"&e2@WiÐ<ʒ(ʲWK2ʣ?$1s 'n|74C4q.5vv7j΂ epIx"$8ETӭsEN7d]YFR[oF >M"oYrN-yK4->zs'??>p>fZ'Ato}_ߴ>$fj[<=^NaR ?u:A]d6șe*鯯 r0mydJV&|;wI`D/X(b1bWY||&1g}l)\{ Z>7aMdR>&W0'[D TjdBB-b§E ybL}lOZώN4~M}gk[gjT3>{֢RnV# {X}NїtC~礒+ӰTs>F 6$Ϋ(ObJzT>鼛=(+6,|\Jʛ=8;gKM‡bIA__AYMoPWJmj#`O@љ#sesjU/0#)aYѡeHD%gNK ݻ__ԧOOaY8OLj6ndTd/pCPnZ**>D˞4޻/Ͻﳧtjgx0a9.!]pй9'C:}j=, /XD0W>MQ~`I9?4&빝SvIǒ(jm=fxim.:@MzyqO <7.NUUWE4媷D*>+>lOhhƇ{OKf`K0fasndĻi?mOB_? CϿ۳$ხU[_>ޤgRYēыXT`>GfrM M ;lUo0%c)O7%q-)g倳VwFiNJEgXY.ϾCN-T!<冫Ulg֒ͬQX)Fv N[Iт2e^8 ߢ=TC,dμݽleftE9ޖ/{CXNLf,-%DŽ B*ͺMB0O7mWS߶Y_ ||;A>Ŝ:a_N"@2ܻ]P,uޖ=e򈨺 ?X_?tGb 5oz'P 57ן7bW'2kKi- N*{?7֗B=J|b(1m[䫯C~\84+.Ȋ]_4QgALfQi'Xi+\~L fm3 vGP9:9sfʃ"YAnOfٯǠalp} [IYMa}7ӛL^/UEb,inTʶ ҽ1߶Y3*kؖ˽xǠ];t0CHM+2}L! ~ò1=u@PktƬVd2z.DLB&j!{||9P'HqpV?8'rp5B {S4;uŃ7DyCcNYSwLj$(+Ih95[#rMYT_w_j=4={cs'nO3(y`9廪bkNH}]IE'5ddd20s67`S{zZw2lbOp0LZ6HVQqcdK٭Iڶ_&lʭ>KA `KMjI Z>:,%>VڐX<{+M$YY*Ksrn|Jkzߪ~up,RJdN5.EV C- 2>9~hh,ԳrAUMaס[V-ʂDˍCS?Vs$Dx" 0+S0Tun fT2 j>3- Ǚ=y`O믔=4P?!'(bj$'iߍefqB7ޠ?~ @ػ~Ƣ8I: Y=z;{5NJ^ E:8xաx<5ÚEt}SjyD _?2gmϘ 3(f;uS.Ti->&D>9D>9YތS:v 9Nq;1L [X. G,5.2H֓O~_)¸pߏ37b= s{ vLp=!SB~)vg}B{T4#N>5P8ly\Z<× $cQAÓ>[ bW_w5G0h3bH qzJCS9S`CT,AxNoD7 ] >1opNmtݑ<ɽoM Tt4 !0Si[=$1%9b/O'Vb|: 6|-RwC̍ %(9-e%I :5~9qwPE#J0ajpnfG1U }?׋_p}G+obN6|_NuuOzԆeoȌ _C|U jx5qգM'9^{JcƪQgj8GX)qn_QAV@2WPU*{v 7r%M;x?O~#{ 7g;$i +?1 ΍:>@ צ v Cy/;vTXӊhXnQNsP NKԀ3w:]I!ED+3hZJKq3lD.`LddM[-c;:ir3ޥ3?ozO[7{?/7ݽ_^xשuׇT^w;x<8v=L ؝í̓s08b#VbMo#|]a/勭>zo`=:dk{69~\*;]lg};]M);͍Ck|Uņ($ pلIRf650l"mƱH^ppup{~& ٦x}E $kaHסsΙqgswlAQ~q#x j.7b%&fl|rsgc bC?ol.m`-0ErȢsVz?i /}|? ,)n|xY;M@[o=תl olK=nԥGkg8nN~0N8*C v]_a9uZpkH|]V}xΖvOXw )hsB,{zטpl>) o?z}z:=%=8Zpkox$gk5޵FQ;>DU>8{?^b2$CT_Yk$z KM9fnFfW7mP;j*E#R+x2 Ež5^S Gxn]fSqp$tY@J"!,?'z:K@]Køśૉ?l-{O7۱?5xlmcp;"Vm_6i֦=ٖ*%Vۅn䚶Xv}0s9)63aBo:,팎n uXIu:]*P=Y^qicjOB@#WR R:;ُx#ҚfL2 Ϸ_$_  p D(8i@L{<5s4P(mΫ@$T'4gAW3Ě/ȗI;:F^. \N3[̷ԧ=40?m>/mêǨv;$<  KzxhUjygN vAAV-BdxN1am42F3S [6 a/=)sPQvݒg+BdXⱼ_*nAoZPgq+:!^YEw݊n`bY|TRyx<6_*^3"zJ+^^U{;T.ox<͒ɝ`%(n婸ɸM(v}So W~s9?EW| 7ǃ!9K CL#(W#QXy}x@eMDAx|U,;9Ѽ2.Fe\Iqǭ 'fsaxOs.R?QaRPzU67^lrV#YZΝwj_=4 b,n3vJuM)buzQ0T_|-/֛˒\8csx).>Uuwj q]67!e18w"7sV?pZ-OOSԕ ;qٌWC+W1 U@=}[3{qʭdc(njW=z-W=t:ȫf8OJ:+[i#_ $m„sqfmβ~;ON9㭃%oO;; 3<.X~ 8fP%A Oށbe@kWhJ'-4˶KżSAf2 ^nqg4r->xmP-3 ǫ9;ܢ9[],=,hWHp+,7hB" v d7籰P>i,B=֍KE?X*lr*)Y+Lc Y-cc[F7eLӟMVpZu=+aD'ՋѠ8hIh_B'^eg-D6ҩjǰɪ=#uG煸!SC3ZD:MmjLKEml]Q͉LZzx@s[P 8DÍތҏ%anj$o4].(o~:tT?9= B.#|n@Tip$m܄ ~,`/Nf_C@ĮMH뼱|3]]$rdQLfl[-rv EI݆?7aU[ p,Īb,+['xJ*e;Ffzm@bG"Er+>mqʶszw*c[´sI/in ۃFr_y kk5aK`H)o3b7_µo꿷}F, D]jW463?  _+εIXdׇ#;{0:C=,Uǽ`=} qwg:~R*y';Ԁwuw9l]wԙۀe4GT_+x݇?lɆp%PQ^g-swFw|RXe퉭0-+Ȫm6vY0$Fn@̸bw%\95:k9N ! GЂIU(rN]K&c黄-a4D@=JkYUO;ݘ E*=.O-i~Ż|\6,K+%7e*kWT(NJ-*#p֭"DG)Yx(JwX|wOԙ't5 1rlg%PA9:oNMܼ-"SX7[ s4xZjU`0mRL2S#20xLGH[toW+{Eo$SoNi8`7Q4 V N f9e{1vkL&v f7]&i ? +v2vӇ e 0p Z($w7}omg۞w*w/˪}h1W$5i"zQr;^ŋO+5-=_n`&d4a2 b8˽_9NU"y z &1ZuQk{ZQZmk)96((PO; k pY}WG2Ss: M,@xrAij ZtԹRY a:Bc~)"›M u{:êԖn'b,>MI[Lj 2\5+Xivl~#:my2lߒq%7CNf]y2dogyW2y%7sNiF:f<̪H; ;ޒDgkbg |kWXWn*w^MG[[t6P5`4ݍwp3~%ǒu>ҋ.g{-:W/X KDUneA w85Tڈ _CAMH2R_ȓڲQ!z% 2%e1D:- 'CNwz#s70sDfJʅf͆HgԱ+`uҊ.t#{^K[/+an3))7 g?p_Tp wNt|Y-=ϘVIIڗ5˘'Tu8x'}z#[5v3T`^ұ[vR~ 5QzeΖ+vAz:OOx(dBS cn0qJgI0"\4ȡ|X<ʀ3 N~޸" /4k#7voZ<#(ޢӋs^M>B](I`S}M/Gia Kl}xe@ZbggA'Y=4{ZzOmo<ʿ>כ]bMZ6{'`|]r^V1Ǥ1:,*(-u5.֣,[|Yn̋΁VȤLPH3a.ᔙ'&hfMp5OD[SAqdS"f>{c.gʰ8 !? UNG=UGʹ@qwT"49 MN'I49/:~TI9)#(?晝]P`Q?ǟNJQd!}"et'WUg)tEݨP,Q_Hc M? dyi۹QMΫNjCwϋ_|^P}LK(di0EBԁs^|& _#xIT;g -cTLW^\kn?wAaMl@8V|6H[it)~,ܢ>nwH,ؿxP,Q,Xw|l#,'z~C;LS09$!V m.Yƣ4s h%ˁs96_p#9 y)H-=xnKʐt:3 Ie):Rzeeyq fpi `DUȕfJ`K\n<{ShNJq;-"QxoA#*d˅ ӂРe 1 8xF>Lk}3tY' Ws\0\UY|,]!.XDKjh&H6[t9lɆdnߠ>{#IΉ/Zh_ɒd CJYqbgKj"82"۝yӝ9P$mCa_kos̖I!o'O%j_?_m3s3|7un=],vb>L(OYnK2]:onNZʋSMy)/>])}MTyɔyg??&$f_lDCNAO <+ayS_bSxۈF"|տ!xKؽ2R!#Wz"^z "(q2 hn(fnb9*x09-Y,(|Zy*ԘiK9qq+3(=ʳ%Sǧ Ct}Iv^ 8uOXeiQu"NMZNKG<׾p_X=w"ŴzR_:Y51ҔWVsF.2? ,3IS|,s'ckeG,Oq SN7CJmyҩ!<'JzKY罦qh\x|񵓇w/Dn' k.8?%z7?#Zse~yy̍K'ӻBwEJӬi-NZA{6~-hGk<gBtw DEy/mQ" ~ ,,eӻgvdnnw[9yHt@ 뿠 O'3?xψ G6?!|eBSOr͑l} lFOkSPwa{ui;_#fSKƁHR?_:;w05ouUhYvF1O=]^"U m?2)Vۿ2Ŗ׬A4럵n5,w|x8x9z߭]oyk cڼ:n"`X"cp8sqiywߌNkזJ*H9a+\GhuǍO[K2g{||9vڕ<_$0KTTNf22 w>=_h[fYD3/|DI_ OxYyO1Ӈw#+9o(pO%ժ+\m/Af5̃srlt .\" y w1OAaz?aUHxlxB_#Ciw&WdIDFt}{,Կ| 0I2iALܳLVLeR,𐘊oMkG՛/V)Eg3H%ӖiQ2s3s$”5y"4ap Ĺ5LϗLO-\&nL\3 ҆L*Yij?1P?nd }`!u[i>_ݍ`ՊngE if2컍>>8hoM3abFV.xQ-Ce9L*[!dfλ U~^=fA~ UF:l?_x|nr¨>s 03o'ct?}!fbOMPxv:o|p;W^HF#^[3U&NܗuACuxJ~in~Y߆a*&qف"{[͟6vwLܧv6Shu2Q*O(owO|X<#2{V3{,/9@{n T3m?XI1q9mn(sEoP$s\p%̛h" LV2EbcNAlc𝛰oJ_Xs¾ت}0IXd Ag4Xx'X!6XxQeaqN?G7~r-c w33iWG?YW3/ŜǟtҽV349}܇߫/Ugvl#"oؾc| /)W=`^n>n͓/ thiʖ\#?Ç]B[yZt dsC2Z`T•eɛ&xBkdƭqg NYgR;8xQQ7x..z Vhmu4x _tT=k@R5&\)2kR0J|_7+re?_֊@(d(8OO+Ns_gzAW;/4 iie:Qչ_NBޠU~/^O[)c11uq,Cc<_T4zaP^/ ׫GѴu/LYcFm=z z4)hRpNwg1O\]8`0 o[w4@"bcd63WʧO~DԐY)/kvĮyx/X(}Dy7>fn{M Zy|0z0';"p!92/^n2<ꖳ0պ jy|ѻq۠2=r}(ǏbU=m$iA>Qnd@uDF`){jjFG`A?>j$1}O$Eq=xG1ھT(Csl;[/w6StPZX7S[JA/fkkeOk8ֶ3`;ƨ MOg &0huY/ 3oǫibծҴ8O^1 cG6_m7j6DP| N[g ON:\:Akf7om|6hu:!%Q8D ~iE;NArǨ'v #/9tWጞv>u'8 G"qRICӝ>P{Z y$ZVn+h#-KP,ӮH>M*ۨy*UzB/iCweF,C7郯koAAZ`u|3/-/{'9\N%p}wci+mFv~wqKfwZb]by\Da+"NN`;DW^Yu0jpi:5}:&,tA%8ySƗe0mqQSc.99~Rh,#KrG"}JW xMv%;/ yW/lEnٴW bvV:pPB;*@Q:g)ʀ"oérϸ 8T" {{0,k?ǵo ms%?̙߀#=v;sd{(N z1g!v~ z &ZÜ)4*a~=9Cx 2<)f8&$' ?{B՛n^q^ki@u?0-5h(%:Á5L0ydB@cQ3ʀpھ\Ϟ&px֐VA GV]`dEA$HڲQI]v L6~8ˋ:S=+7rX 9Y.K,_ =Gݵ_b  4 {Y:КIVSQ/D[yxǕU N+e7Bcr`'3.Ƿ _('A~~Q>NVudJ?'ȁa #b~_iT2ZNS(0n}zy:A޻4XkqPX牗ljT6jrN&~4Z6Umou}/?V_kC[{crOO;c} ~\a-g5iLPwCqUU>6B-DLpEU1|J|;e<^gp1V8L)Bhգn<taˋ6Z>V"/po;"zApW*:C mw 82o;r6xKܷz+J[ڏVWYÇ<',J7뿹 Ta"E',b *$O`7-_p~ +gU!eg(q]w"v ­~0xdUw< }U?),M4C8φ}y'.)NqָS zeb;Chg5WzT boק oeYǒ=`᩿C|pҎiBjt %|(fTF2EԌ c\Hkd-s|XX1rw `6e2t3LжZVd:ڗe9 y{?2̡ݶY\]Lpϟ\g]9 q!ID;2 $ywN1F9wi4gxZ4hnkm>xV=@;?=@hnz,t'ppwI(Hj;-x9dX dun& 'wN=v0;ң,0hwvLM+ݫNsM̟iGkNKˁ*:k󜤐Ȝ`yba;|ME6 'hXs0xlۚxrbcؚ :ܾ'&V؄nvlqcg&̱ =EOG v^6_nǏ6>7x AӠ"hz^5T=:fIA= {Cy_wؒyw1oU~w2B{v5@&@ 69,ֹXTϸ G\:Y>>2wi?oݾ翣ZPI^??X^ `Uh:>4$_Ig9({FEBPq:8[uE:S}z6 i㤿T=>lYU]"ҁTZZ %Astل`EPF%z]0)lA,hSV*6cなwXQQ4ahkxa#ߝ2L ur UGb9ih%X5! 7ŖW3LqvDmB[8:<1YX s\ӷDl]=1P'WV騒%*Y=bb"lm/d9pI'=P :8\+"pbPUB߅DuUEmg4Ϯjjc鈞oPa.U^n*(O0'm(Oƒ}FL; {*GH397! 1ż]yGf50RZ;Q#s6/w^o4RoRHD揯_n6ZEGV/T<' }U-?֊GOi8_Յ3kGwOZx'e>иFj uj0h9<=|3rd!xrUJ~}ռy'Qj{_:*ښ uRNr>ɌgPbK^(E߷vڳe6tퟘq *uz~~@ѫ Qz_8!OKIdfg3(Gw0w|<\׫?/; XllrxD>9i]BY $K=TijJ=1=L @ۼ`nͷo֯F >*~4@&hMaaMMҫbv ygVq4[@4מQyYq$n I m`ik<:p׬|j.Xb2w0q--[uxXiW*\^LJ0Za5e'!$Q k48<\GÀ<x2ru vG`cm(UVʯv*wUѲ7`1/ nQ0P[ox7\76P󼵀 Iؾ$ۥNڲw 4d-ݧPί1A_Q:3W+`B}JCrD_ X]}qn3c읦^_?Nugl ,#T+W] 28NS ζ^PWE ƛ~*{lY7)`%+ٺ1ky0Ziqg3AT9$ aͫyBn¹}8 +Pu/Ay_ .}0B"<%m= .C5y$ D<|x|:'<>t"/>%J9"(A ;76z#Fݻw$cK 83gvA?&#ىsA+ۘ! U[ _-GSbxةҰ,,d,1A-"ݦ-YaxP0=\Ǘtc13øh`9T%{ൕF BC$| Ya0l]:`Zo~Zoi=i vbzƸ律 SO> LtY: B| -B OSBCoe#wq^Z]ؽO- #hM*咽RV!q t4Q [`?)jg^yl.b@&vU\W j k=^dT5]}&ZƤ;ȰiaĽUތ@gx Ԉ>[Űe}$ XBh7171ݩ|\LMX2Nt5m,JLXsuEjhs E- n QH9t>ӷV, Q+] ?ƽkmEClDG_SQ-QU^onRx;[ _/T r_X2Ѵ~c:FBx}'8/3'|c߮L%@f rKS |2\vqW!-PQŐy"? :ˑ)鞊v9=N\9ՙ7 9ʡ lhle=Mܘyxc6zҽµ{l%*1fݤX߶ypWmb3|r7CӏY6@ V19be)P2l"s\µf!la 4({k?•G\ȈܨqrN  d8 PTu*^("Wb$z%S3SRY`_䪙**7FioNF^Z,$ JE9~;sp/J۷CD ኹq՜\HEU9IRBg -3ͲUʦݖ16tK_T+xRSɤj*¸:̲ς Fzپ{s+lfe|t"HL g۝:yuA&Z"cڼȾ$S|DÂJY-e'zile9 [;Aq%UM">}/BvW^/D|sE*E8to.=zʬA3ef .h#.Eu);:6 Ʋ豣eT3=jwJ s}twT.!DhsG46r`'Y: t~Aܧ#΀NG:hMQcOe–X/O*,Ք$4gAgmR4uw=>CvEV~l6jdOʴ4MCcKZSsnA ZD ^Ԏ[@Ik]=~혩69U|s*+a 뢯AA%l R`1;;)5t&9)kZ3M7̠}p>{w ^\)~|<*s~[r,[pIw-*~e纽.O PO}ݸɸ7d>(:w1”;"8|Q[|'aY;θC&ゴ?/4۬)ʹy~^ЖGf38 c)UjrvZ+})/\@r<<N§|Bf*3A;%pp  ;d&0kz ^fRda4iU(I@һc  iPFX?9&:`cJ prj3o4G4rf˪u>Mi_^J֮Q˛P?]k$7(9%L1"SbNT+,%+7fIuOPbf7 c)a;$ŗL4U[㌈7d9uzS?|zk :8v5k$!ns& +yhTΰc\f%wr`ZlJGϨ^P6adY3O{mP0ʳ!w;=#F{eCWdf_{1Mxc7ob\͑c^aиV87ZWV9A6(ܵy_ S/*8cCdv2Qݵ s IOwmv})d;K'r\G g6M,\4%ύ!|1oH{So=fN UK/wJݻxH `t=kfY5@קD=|*.݁ ]ll'[l4'JqE|c2&BMeP%yxcaȍ|NP oP/0@Q,V}k #s@@5`kZ7f3S{lSVN!Qz7Ut&G+gŰRE #?ؙsSJFid K ϐ9_be- d~& ZJ)(n=Xut4o:@X1=[ɩ%jui %"3y1?N#[@ Z@m:@ j3mҰk!4ߨF덍̓5;kgz~&%wǬ_I3~>_!;{^tcO?zTt.t(Cd?iY6 N`"#}tqVU>ԾVxoU6hܹU(ف19txfOHZ}e˓[8NLi}=o"s:5 XejwNZ`<8 G/t>zs5m^QO 7¤6í;~矗$e2֛Džy^1Y+ˡ@pve<)???G;K3dWV69|v0?WS9ADƕO尙+,o(dA"@m 2( Zau"&=Ijۧ8ׄ bz huAS! F" aoEHaЪozNjE4޸m9wcF#L N%iz]!s=%5V6HMJB<HBH&R`Р>'ߠ5mV=UR9AJ_o*CM Yl ya #"~d\K:a@ȫ~ <C—/3ݐ };$ >dKT"븈7#$Z _BbaD}bTtGA=%1>c4!&Y@%NM+uZV' H&4_@D1lt5@0XxxؠC)BN",ðNTE5KTCj='F\;!"ZDJߩNE -=#ÒsV)"Y(Q$*W0Sm#iP[ C DHsQ\D5h̍3 "J1Xp~Vw~@>bl7)61A &M!Tj.bCtߤxc£8Aꋉ$}(;18Ĵuz-ߤJaQ5|y;}=@,uuZ:TF^iXy Q,GRg-lV!W' 'P zH~X1j84F~7 ) ɳ$@NBRRM iI+&hQ1I$#zB"F#!$HUHN$4A#Oik%aQ=E!d4P TaVAsVA4ad ͶAAi zנTxkp#o/(0<^̱߱AT7oIPzo]^@쯞A"if y ͪKu Xjy777XffAX zjDmޥ5cZS䐬ꤤo%S YSZ;MdD$uLɊIIKI$Q9Y+)1)`)JTMiX!?%)n4F)/iTSkFT+jXݧ)ϔgJ24m)qn [G!OI$3SRit4Id$-SzR))>[)iZ)iZ)iZ)q0%,lD7GRE?[5LK`5ZA&L-~ ߸Ow 3vͲP,j3Q>|  D&.~PH$c]-R&3>"3&RΥy",î-1nBh L£H_u}%*%Z׶i4Nl F" ZX% >Ô'ŌA$}Y|=󋄿'`Š}_J3$/O\ګ=$!铝--ݲ&"G\<`?"c)ID{ .qp3 >q*Pi6N FOvpOS<`7x Q0!E.`oM@jD\|"]Ľ042l.`X]3?xZ`f0AMu5}8 v$3 a$ ${3`w &hqJ0 gW#I<kd76ߌt!2A3Yn!#U0%>pi߅llqm)͔Jn ࡥ\)KyRH~̎~0tr'GJLL̊q)&4~x_'MhA5}Q|P֖8YD,bKmb? )W"dAG _qd6g+-݃ ,bF$|3pb R,suv .IKlq]q"y< fNq`p5b11od㖘Gޱρ01}M^kph5:Tg~6a PLZb5l~-1ZխUgN%TGlLj! nsoc|5<-Z[=(&s:tVFݽu6xgnrOO+؅aZoҗ?(q?<>w?<>}X[~ڪa5;.LbƓt a|IXeQ$ Ӝ1 }R*8 )%aY-BqgY&EgH'ql gyj%U/v*טH ϹXqmzlRI\I)ډmZ5=HʠE%΀lP0_Cg8(rl?.VRX[V91ff:$vap#q;N]bdla[W`n~g):C- plā@_͔8]Y $qں#L۾3Jsn6CIdfg;ͻD%ɖϡIacu,BEa9qwd,lR6ZM,b^c9"Na QB0 9?-׶;M GII&9lrMh&?,lo.3q6/n 2&y؇|q.sam#srO ՊvW,Gw9tωw.BþTh]$p`ʚ8[0egM2I%١8IasjY$[wƧ#pYy)ݺdT;hmɈ0۪BhbJvѠ6o7΂EDfY6wrBdrCKk68_Z9.6a98p2D8n.q"xEQVskf9ͻ{?۶-`cۅEs,<W9Q6B ?ZR;v<"˜Ʀbq#v|3kF`dlF7aR3h1`ĦY; vS@(ܩ&e9uWDDca ~uiYg`~Y-W63C&.d3،]jeKyKWA2HM~:T3xl;q3̠DAq$C%?qhE$ug P/3TR s3Ύb+/|g݊.mhFL ۴_vybm`0!G+N.Fp~ks3B4t*mXYf:͂$v8W;tpm$ΐER#uZ7wؑFVp RKRpv%L&qHPkcVzٕH3N._b5a+YgfYA̔%teLf驀cGudg@xV2Nb[TgF-,mL`Y)Sr gTh  ]*ꡟc/V`J`UjȊ[ c S.).U (ln.W,'|*s /0٬jlؕrY cDzn8,eeCe0u8l2Z~& fU uAձCZ*[=%q5ۡ~ZhU޷;pS؅R# ;:5hkX!کq:X&0'GĩA fXʆ"*bu&Kmzr٬;$΢q =*r١vq"6l"TsGE"b`%_|+ê Z{jv+ړ\tsoh2~]< 1?24)=#0Hj׾+ғ%3Al"3(cXYglB&HavFr]ZҌ]Te-:K)|Us qy@q:f!]]*4᪾K7`2ls=/s10L+@SřbhjXú) G@W,=eH>”8QӬ[0:Jg[aq +S"w>6tMi; +gu(16-[nؑ9x\E>$:R#sesX,,hV.òoXVZ5аD匪:B*Wet-TQlULg IZB&{D$8u`z2$@ Y餘2KA2cjVeP>|-!XFU0m)5\h11[Zd;h@)u!9H`t/0] rȓAYy, FFBR4/2/4sւu8ceM2\n\͖ZO$zCȄUmyVrdt4D c 35z AuD@pTYg'ŕ|\(8'c 8)D*RJ(Q Q}(T2(I LWX2DjtyQ,0TF(G\.rܿ`V̍To 䉸DE3H(_ ơAY3խ Tb%KYRKFgHe X"G6j+ǂqB2ѩbV@@ LU1;XC!mrA~_**/0sؽe/<=:c,E(|ZUrd P5QTbߪ:R68fs(\5 T$`\iJg L*N4-"EBӑiU-8ę0o:;uDaDž*‚rl(1pgA쬖*4_WM,Vtr6̘ym;+,XuP4ͤCQb]zPԭno 8ڂ^F8WPXv\ -K/i6DSr6T>JQjG*5XebXe0 O@ 5}VXJ7/D"XVolSN$]1TERҪ OqP.̉* pHkah+]Ω58{7Q(13(ϨBdnGn0j],_+IWZuNp^"W E!eܳ*BDngZJ ra*m#|(KԈbe\.IU֦f T$V3Jz tR0YƩC,YBi2 (툠ШFg4e al5*TM^ldd [YQSef*b btz4FvjizivBO+C \xP(̈вbIYMO I_FG2IxcAXe2Kf*u[x3Ba2#e5qƻ(r%W ?G7D oitzt\h9sij Z5B3iU/-E \7Ǫ~քu`6#2!ˣRnq /Qn%JHՆ t"xfкC}ᔼr,eMnTdՍI#5-̂F.h× -]&#M_ %:Mnz9?|c*TDNMf]L|ICKt/dn: k:c(n j+YYW%@ +"XKN枑 2 ^7_ xw*Dp% k[qoꦂEP]% OQSa>)Ʈ[C%r̋ FE2ky @u&ѫBЍ")jj []1 ->zUvbU"HSHĘWWqIڈB[H(5Vʰ#ՍeSJD`˚54/Tq(xeu0>M)U1e*m(u9H+(?=ƒH0t_B3bS¬&d|*0RI%ξ Ԇp(|IXij`.&e05oZhjL&5AJW5@}56PPL0TSfxn< E2&TMeZuQU],|P_4TRŪPc1NUUL-aDP>T&Iw#nT-[DJARpUJ4UM&b#+Kxz5X| EA;<AaeuCG7Yi1M]\E*)kĽCMk´BaM`S]&Zw#E,f*.2Rs$!c9OK܍)CUUp~nu80\j%4gf@tI`,嫄m\紐+cm F\a0ѳ@f?-zT"^QB`IMʝț(57.1hC[.*:! 73M1]_KƗ@ ߮H %MHk~K0&EF蠴0!GVW=NnO䅂p$ YP!aC`Qx{` o;N2V/sh$he %Pc*^ÐDtꉔ ^H(+{ +GOQ"QQƗھȒPT Yꂄjb;0$ֱnVt9{V%DX)7 V< B14 CG2#O+Ndp;.m[b;UiE2r_"I)*SQ" B6S9ɫ򄚬CA+:],̞INx6ØJU븦@|yMyI| d _䵍KAWSt`FbH ^WN,e9Jl9>Bb[Ϭ4Xd`YeXt/ V rLɾ1е T[-ž`=:BkMCON*S f%On@09ޜ8RUՃhb섿6|$c} kVIQV31P Fc6૞봣 6o!1|YY$&;@>ŃDBB".d8P #<Q5a7a%#0wk-ZfT cV c iUC*!kبr&I kuTb"%,vPĠp,IDH#E-WnԦ0@gmgYZT^hMŚt5uU8'&͘M%UwbxE*Wظ7E.FQ)ǢWHXJ4Jf̖1X"_d$T3BRuP!dBy6+PlQP0Զ8M\y*q[!ԝhׅo9g("$jjXD(VW"޼! 7cbX96 KĥQOSQ A}[Ғ&v 3{UUW@ibT:2VMܘ{LdzޢVQ$$*cE ִDlBG0IY麷 }khCX8owQGHP6)T};ƧgIFHMk$5o `jsD TV!lFo|} Ԋ{"Rb/5TbS!"^dT&`H[,MGI$Y)0T2z9B:; Oзㆩ}D6.{ݚ+dDjԍBC3$a~"2;/0'gXE=f6=,]@r=ͺ<+Ʌu)N+KB1 dM\),b+f:#%R♆h!z"Ch3.{Leq-ir=@8Q 32q[y€p1Pv181)غֳK 5DbHbj4b!U&~؉{>{1K Q@i(@#$V+ңq(".3k<|QYqF>MF?||>1 !#ȭAƃ aNzScw [i 79* \ H5ĐIVpS;J2a#63bQ60Ɇƺ톺$4bɆ|P:6OxN#c1=UZ;+3@S0@1q:e`l&ˀEfd:bn$R-bBq-3@HGʣC% ϪcR ˹BNEʺcb-Km*KF2 w,Cx-W-=Ȩc"Bͫ8& fCهIr؆$QPD2QU!k!RD\Ԥ/gIwc U P߯:LNqf#3B`H4P[ RnifňIFm!_1Ip S/NFWJ3GIJvÀ4YCM >Az1d@E@BD+$A i' %TIzX4`oh#F̢&101)a=(Vl&̏X0t*14 ɮXa:Yc^lE9ȌO)¢jgV&Tvf&`' O=7n(q(r""h_SYO2\gdR40úFmS_\SaIֲ ->'$IU= ޯb÷!<%gs+&-l ;d$1їA;094A#TI3֣bUrg{:c 9PV`Y6 RhHN{أ' rc9*5 aK=u2abak2 ˥]V־q8*xu"$N)%TD};5ק~*7ƒ@ \*P9F14$UKAƽ W11uIc!J94b80c'’CjP i%*V0BT5EdO!N_0V ޹d"h 4gH&"5Vi ϭ65Ud&a#.h'4Fu[1dmNuvT`DT4#Bn[ւZ"ӈHa,L8Tx-FU}XH iplB9D,T)BKT›f5.!F &m0'b%bP|0- mner*\9S7T Ew!k Xx*!aȪ %N*^RΦT5V:{H9VcgK7I[%OP0`QRjPGz :-a N8 M2&camBz1dgH1.$c>*qPlck0*4 X *b5vHhD)vCC"vcKyxP&bNgs82B13xZL,&f_b!S##Iyu1TY˺|K'8){t"0TaĉԏL0UUlh Ed%{H !P]c+N&5Į}]S&j&lV7OHc)0Ze?kfM0S ܀áK]#DYM-$2݅iǂ)9УaY㹉&=YDID)}kxCLSU-,g:)aMKtnj3HG1[΂|۱PʛdkSZisgũ1BHh8^R 'PZ`4kvfll*ET~5tO#&UFIh 8)5E9cA2o%jѴbv I?Q2>sr::_;BPc%2'FB2Ԝ"2f+h&ڜ4 oyjlRTkC}3Md&B')oŔe4,a6i"#3զz:zFdF3Ą6*IU 5A:$i*U}GWŗD(8!!?m Ba8?xM&i' qhϺV=R#+iebstRqԉu67Dn$"9gZ32Lԁ(BXc2tͤڪs8c2nk6{*b5#Q9pHk[b?ŸzMfEq+rhi!?j7YDݾ@ё~$E"7|bA>' e-*XSpbTCk3$NL"c*$-$$і0*T}*$؈2B1&4&1j)q],RA $"/㢣Rg2JyiUrb"+DCX(U2oɩb34x:z"{ߴ"k8H_!Bao'ٟf!8K(=pgՕxbI_i PHvuJ񞆈0F^B)j*o#CŰќ@:N6Xbf̯"&&n {ZId}SՓI0Ϟm`*SOFlTX<5Dc{ YAmhtʑѱ(Ra!ŅT"~UqL/?v~!Y5>Qjyۑ찐36]C(gC dfjMYX,?x'G$cX/fhu$W6m7.@'x`K}HJ+?0{ڐcysR4dR WOy&%ȻZnuʹ͎oT#q6})s3|64MNZ[6@dtR.HS|dyvW _msQq,&N%}>ǻ3,W\&Ʃ&5>1 ?*eiǜ\A.2yBvRC#HAiqƞ\3f=xןs$,&o*=\ ݇Dukb #8rqslO uhN†t}NF.uÞ#F|PIJqp "xIzXT5r4݌dQsLIG2' t21GQW,5Q4A|Q|ƪc{聨 fg DyLIkCvWr2ǏJVT%>]Vj>|(ZBxb,3ք&loAJ*Xv}F871o;%vџLr8~&m0Ѕ3&ƕRy =DZ$ĆQQ$ e'792 Z7‹H5V(ic$b(,2i!CNB̥yZb>I%hL70pMn/id5k(Gƶ.u?k#ݙ-SCr&q9M܆p j#ۑ[ Td3JX(טhUf!DZ7ę$'hgV%05,DoZ#ɎK5֮xBEjB/jٿJb5e;,/ĉ|1|yTܭ>Ǩe3Ԙp`nU&Ǫԙ]f2qFQ j&#:Q#kb1]2"ְT|q(7EʎVѪ"}buze_u8QoQ`% RR,<\]|h dHQ6'gN=A_<g-9F3?b2u* ,H3̋D:r(aIw!69GJ NF m/8pΆΊmdPC*9 NJu8)#v52qԼI9"V +&>[! I#K Ѯj xf't_*%A~Zr)6HJsDH 7'k5MUO%^ Fn@TH&.%}jOl8ReCoLlcUhSXxəG& 4QlX+C6>ctH"{u>` I/cӐNݔ~ᖱZHUǩ+* :cg< 173Ei-kh<5cQ,IG,ٗ>Nkn=7$Sdيg/E>B&#pD4!cr3 "qQ9VX#eֹуHkMH(xBHLEJ }_҈.:#>;nr2 {2c%ʞqp)`ɲ[#t#w?ߟkH5aeH̓yVHHs&nV(b$^C*qK0FO8`?i|na)8K&d&խ8)cGdCŊ%i!KgH58cE0Dvf{QXSfAsvZ%>sbr|vAiD;Is=5I Kg'3uT٤3۞4>Ȗڞ%+I˼OSjaܚY\?L' Oț|蚚A /Yb'yB 0ʜ㟷 țVC[5@/]ߚ2PX&#KM|hD4)i|<1]9f9(4lNbno4bS\R|Fvn1Ȋ'ɾ jvHN,O 9wrfZ Y((vi7[Y'ۍw$-qB~>jXBCN#Il!LfB᭕7%1ʙT)@[iDI Gr?ޕ\X|s0b{7!NC͜@Kc?CzETV?Rc%gs(TڰC$WP|.jNE, 8JruK8w$!\Qw9NnulH 愋|`[|bD;9h'1FWOHL6ibO2qĈ%8A9\^*;mjPZwonSy'+r%ܗVѸ +tO` @^9vEBriM=RͧXc@U˰B>qg   9aIB$i4lb>_p#$)zBNbO5nrPk$jB" PN㤱g .mp7FTPᄃX4b/)v$-r>w2؄QJOD%ė#)6ԏTn7D~LuD̜6-؍ƑXgNb !ں0\Pp4 98|Ѱ@2ӬQ$HefFY.s"XrR>5HX( OG3%Eۿ7. " @eׁ CN#9yb dPEno+TEPVv_Iʧd)_)Jqui? *|5ց>-Lo|W;fOKeہ){"4ncՄ*9e4EZP 79w"T(GmDNerD28=&p s'|G]֟y|^yǴ:Rk[ AO@VAf'4H۔/УOr 9-hp62GGw+"c$|Dbp\7r XZ",8\N`aSP*`̶zCR†5-Is97N9†B(E&_ΛFhG7-:헓9>2ƥUB HD&'t$Ei:ͰJeiV#WA)=p:8TӘ>@IYa)|8Â0N ג͑hn&N4Il)&O1ˤ1%=-'IYf MHr[6iXOyWj7أLKEz\L'U#' ]g_LMM]ZQ hrd\/l/'e}LL+[BPB%Q.[!x@gԃy+T&\"Y{g b&+(du7PK(0s<d8:XMq.N(W>7BҺѸ9Vsx79+m%98/*l [h0rg@B27 !gflq Wi.ۨNGb|$wLN:'!I8^D[q;B&\],t|M ]DAh0b$=EATc-x?rIowr8I1K$NK((K$Z3aJyqUlDl2FMu/BbIXzCdpv$iΨ3p7<|&:e -\$wI|#"pB`Ôo$Y>M>e* RAN97䐫ġ%K^{mf|OrMڴM"s)'aI;&̛vӯ'9g%N"fgh7O=x9܅7gm#\44K^>8V"eWJ3,w>''cָb(AD>K(I#>@p] LBρwRc+s׆akڔ@tiӼ>X'^o ƩKZGD0appU.j˫Y qDg(-gvC Z܅ @~v_mx{?m=|-ᏻ=(s[ϭoxޫUokg[;/jk{=ܥ>M[jbp}{{[_{{v6aϱ΋}ks{sp gO;q+p5LcFw_=߄?l]{Wƶ^>4镂16ϤI܂ahOojɲl#`@nnZYfٳ wZo۲C pg9A]1WS8E貅;.Av(aǧi;'hwN8{LJ聨 ??GEg' vkN^NSPXᄌSw5鄸A wQM<&{4 B8GdY{9h0' ftTnS讨v|^gõFӤ9K/MvH]n.O@ ^]R?Nݒ^-o ._2 @v̂} Ǯ+ / $M ]փPÃ1!5(9'%m\ֈBLJ%hM M*bȬ #k(i*4z .M`c7bC1 II014FD FB5x_"q¿ u?@ P2O]F68 !&@Pr Z`+/F#(~V1.YF Ԥ fȎ(31LrcKu(i f: ::vaWGMZ`*aD˵ư 6+`F N =湜`р~ =҄@dr~h6gዢ3 N ϑ7y7H7"7FM 4E`Q+@+a1^(kJL Ri7Eth!FD|}\ct(1`]> ,_iƓ-uրϕ?z7Z٘JgY'~> 0ȁ}}맶ur vj7 2pQC@p34Y]N pڇ{Y޵aB|3qԧiG$q hoQ{wT@bȥ- @, zwH )YthoǶOSh{K$I2ԇF @S[XvԎ\cp ^*I6|HmQIIJ#3Q qnSqp3)`#LÊ|@l xII urbIx ӠƜ)L $ A |7V9ܭtt$7,Ъ``GAD 5" \eV⏚'K ٚH&D!&6>+pˍA75Ԅ g#UljL{1#!ϙQ}:&gO66W^i((2$i~j ]qM߂!_Ip B:5]k? vCz"xJׁ. r(TdgWV9álIVzqiLV]}{CAfMJaYibGyR#. b>%+>OxKH zY&Lb:ꐳQPNruJ&h=' wUCw=Nx$QjH˃9{pJ󦷉ݴ"8Qu ŕYf2ePr>遇⅙@j a%ceO5ǫy) /|C_zsژJQ.7h-|x|6u)%7bK"T3`ǁg0f5Jc\4%l\ÕaɑBX ,ng.C.QRFS46Gzbmue.K$<^تsYZu6?2 xP̗t[bv!4kcTYrkٻe(_gO21E=:KF!W3R'Tu5yz>q~swGͧ+OAS5rt7v\ Q-sgdG{!Y=̑W܁FsѴ% =q1c$L:ƞi ,W;bgITdK\ iVX #cV.rς/Ή'igE ֵY+Xv7׼aXp RcvrP柧[??kiR@"#AQ0x8h&w Ll*"}!QWh+߽e8)V"!Ƭڿ)Ҷê25WujooD!moKPϱio~6TLtd Ґ򜕲]}mPFBrVkC1V _i0 'j1bܺH<@{S}GJdt%tiwDUnn/L;¯{u aJ3O'O*@͸B+ vL}]6MˢI I TdXYRIAdu9oUb4L7 \| ʤ$_:/ȊQ<.mCm"N/Vahb~U|Bהԍ<C_ iUo(p6y1d.1,LN(jʶF]r<׶b:ML6͕Js|M-!;%۽'M^Ɔ~\mu৓q{'ܴGm:w26|Y0V% _E"ĥ&qcd!"HHGzRN1Z ^z7pgj@ߴI7 Ѐ܏EM$.NRcԷR9RX7g#7=b$IO]Yռ^rA(yn^g*ϖt_cơZ1I2H^%kXeKFZv=(m*'YRɡA\Zze^6`z P7ISJB0'- v֋Ž˻o+t; ^HNwu%Wލp7%tf7*U~hgurr0qFvyY'go{EHbKA16}' Vwh/;*L~[23b\}?h]ZmL2%l7lӎ]Ig{8[)썽n6)?m=7͍_yЧ %wmG vuerbsfh9= 'ur!OAJn+,6쪐'|e#B>haprRzZKΝaϋC;V#u\|F4kۭ| Uݕt}R9քScx{xڧDýݖ+:Wwdʡr? ܗJBkNl燡C/@ }N.yDq\Ŀ7IWNݥ ZaZ^oXDȎ0zU|F~΍OnVL (]]aؘ޿~K NU>>eDrz.dt'(p. JYt($۾ܨ[u鹎C7:'whN,t79&_/.ӧY>џ9Ɍ)*BFyBйYoeÝN^4Rˮr&C d"Ȩn(\bJ%T!UsRDo"Jun_$%}$#)X)Ng-Y]\+էWx~r@`lŔa000GWL>>g6mNa;sSV/ug6kvmIߝ| ,y+vPqiԻ%mks|i\a;jJcL1Yn &8-3-烃VwWFJE9hbUf1ԃ{?1Y-0X5 x1t. Wwt|sO.%(ijo?n"~IkrԾ?Qg)4 Fro5]\.emJ ]&d*rݲ,tKZj9nOLJisLRWc<̗LD`I 3ȖUuǦr D VBM@?̫0ee7xACLi>OфAAqsc>+ 3 +{7q{Q):K)z-:<W=Lʯ ĺ='3L@nӇJa'l(wn'cXc!}rM>&20- Ť+pm޽;N|YA%gs$YDbDLT' hL+9HFW5avwbIs]Ђ g`W/({da"n _``eg/J.fe/`[61CYۀ5rzLmPk,= a'm,ʗ+70p❀H5I"-]8/Gx %+HJC|qi[=Ï5Bx d.~>;JuTL)RM Tsm&FMnX!zOq+Tu1XSnUL9I7 uԈ$)7 FD`\ОHv\ im\l_߈gȅ߀g d}|] Y?"6Ţ@#h?7M)6NQ4lwtṟx]zgb29*ONiL(^~;ؿ8GwSQ=5%MQsZcn6j^=7 ?ï)@[e|2x.Q^ou(GːvzyRxؙ@1׮_ J${]+C/RS5#Q>VAjs˨>B AnC$׸%|Ås v9=?B6+Irµj5ڼHW GOk8{8ot-*5?SVq.>Q~yi-lz-[f/1PCG&e4UP~DGiKDx64AdClm&17F]DJ#T+6&LhZC`\c~rO0M1#PH Ě'-á jnIkjs+k#kH8Z$Ϣ5;ߵt|zp~qz\誃qSJr`'rv,Ƀ7^wmTGcZG2Nvvg*XJumT iխz]M ޔSu8Ҁw R5:w5*2zn2ܺoW Oq}gn^p#fث7= `xu3^3{ @H=%g؆>t 1[=kkϲH\BӾ9}{9{YɆ|rɝ˧">h1' 4.!lCEOV YAuh\Bȍ%Cއ?T%lpS+.`=ݲW[_y\KYwt\&i$ * q*79^ʬ*>a^\T_^ J8LQE-/h{WʖW4j^橢+H?Gi2Z+όb3(kU ˙aJ$@2&oULkQg O/V$WKUJ+a^${vC5 Gp5 pM.lj ub踹=.qU+>Z<ULi-%I%xqx%nɥ*ǮwYE'cZ&W.^UJx,Y#d5j4J5sV]|+Y쏆 opGhm8lGh㓉@a?i~8= 1njv#3Lxj#}DvxB3xƹXA!v6FQ.IgwG.^_$9gb> :c4laOGGQ88>!.e A _soZ nfEھ\S͐#Z\fipK#&Z_q`4%Swb hi\Fks5 1HjB$ Y\t*̿7)Q.bubAO ="/RZFc{מVu1$7KR2iPFyfh|#*:J)L H|[r[5-͢7V-";\q,gyo[2 w7(dC2x[U񴟲"9|>a2F. *tX(7zv`cP72S2QyX(qo8gW - )c9v0f%ĠuA4)#o:gpDtURn~&r{dP7'\<ٛ{H-¦D htv-9x?D" qĽmIs+),PWHOt!t,j 4Ftt m ^[R~'['e1U L.h$8dyt+k3#7xx?:1IcR1_2!s6@H 7ű>;zrn>`]wdk1CE]KuAG 59/ססd%-Qn!iUSP:- 9? 4U7k6!_ƾ>A5ja̿_xIx(;.Zq}F`c870ZO}z85۠LBY2#zKL4HbG6.T(>fLB4X[c"-AYdžNAi^ :VmZٯJ N$`ODj.:J%F2xv\|zTj#RDB7/vo)荆q`*#Ʈ~8b=f"ZUrE nT5\-cp2u<-ߴ5u C 2 ;Î:Znn+9 ᫢0к$40 AhqN _։D\ډdeˬe%Ief.Z" XE^q$,m\%?֖݉a U g$p y \@4rvǩqqX;ߢ]v Blfzmɀ9FLz&4l4y2`\*V30"$08R?J*vxg+,o Ѳ_  ǡn4^; ``8JZͦj+5,ݓ m`[7A拂Ʈ-~ᐯ5@!Q dLd}8t7(( mi)(yKuK̈4^h >>xw~ FD~}x|x;?[6UH.wwʞ|D8*G"}"PIW2->B NQ\.sSn|;c㸏 ;IW {2i0pMT ZbT[Ba'LZT1@#h >tFm>=2Q_.6P>`A m Կ~7s^{kd?;gO,~:()>K@m0o|o6)zGO #[,BH .| >m(l!a6} J3JĹ^[B]alGCcu?? AcYh887ل7߁Wdm؇ zMo:gʅGFeXJtߖw?qփ7ZW>i5F1-v{ZqD EWtc?~OHD4~'}Ɵ@8JrSF {R\jm)nSw4f/{m"ذˤ5< }$@f]`N]f^97m%:Ux(D] Epk}[alfV]dZoQ4N R 7.z*$m;/S'u#-Ҫiݠt?L4F#`9@ZrFWSM>`TMP$6{5z_@O)0IεfI3x,7sVk/p$_m`ϥ)|!msOoD=ߜ|e5=-g&`9qj7ӭ~\i7DWH3(&u766n)^ϡ Ϝ@cތF͖9[0tZh$LQk9a6$)kZ/15x]7UϘWiO@5w7 mx2DW 偪0ujW?lOnuڀE񄯚_3\aIػ:4Kyh}Yb 3j/.h}Y酃0<@YpWpsg|{ʟMeQϝq/ua1|!͟]9D` {Pks|ªo~ȝ.Jk3ڧ9خ]a'zzau0sUd͈$b\[Vz82 zbeTǸ?({Ӵ6#M<8jDJBiM*a6=#$yPqG#(L #ΏY£ZrX~Z+fZ5IX< me+QxHau7ׇ~1O#K{ȩs8; 3; tXST+_FY}Az7>/ٙq,mK/FT[hƻ/ACl<{$@?8 -6aK xɧ-& 43&\Dt| &W1@Tvrsh c"T•rIok-'W8g<JCih ]EWwWNV\9??T%ٯV_XI^w%~^ʼ88;x\?g/J"ݼǭ!e,"c5Ӹ0O`+󴽝dTdg vm>“KK3eR,tyWh[)F,fjQ,j$e%_E9IQD=V+SskJ(ί5P}K@}ְ^V5Nk g@ˠs5Jc,@];F4fw47j6"=ĵ-aςW5$ig֖Je0\xg&(7SzKGMX+kG 0=w,I2UI< 4 4,W1ɷ~=>`g4Aj%:5ƼnWN4 2@䴁Zs|UQ"ouZpѿ"hsZ%IZKvV5QT|(o,kKzcS:#F D1:bBƩ0Ӄ&7̓t $6zv66& =­ݗZ3 %-3i ޝZ7/Y]JR^uJ$c7,yc^_Qp0W%N'y< `}.eA;W:6ٚz[*U؇z˂e{Bo סT7TRC>m3Ò\i\̭Z]]Fz4[2)> K#;Zw*̠OIlZ_g^ h`/?QNǫV^b\>15/Fh}=ƻȘ1DVx6& QD!SK+9;mQ-Ks.VZg^746I>;ɘ-=B:$qh6. )-P(r"У=<ʷ7e.RW V%& ޻N -dEmI-[G@Ou=6+91){4[ & zGj4 "DI7x&E %U(/izCFfq͑("-]9JL r *2Zkf7̧!Z4,fYu!'lŜT"}N$OakD^Pz_{pq6(-&7U hO5+x4_b f0f0{ ]gsV qH? !6`E"q-WX*$5Ud子/)_]ZEjظ#V8 %ToJ+V0uUGmɘT/ ]2Ihp '?/{,(dG_.Tsu-d$T%uq2 TVP QrjUk,Jk5Zo* 덚UVꋱ{Yr{5DX^quF^x}f|7@=ۨ+gw8 o\"ϑ"}:(=mr؞k CmjӶ/c?f$h%2&(kҪER׃m-(A0fW~xfA:[!ķ&~B%%Ե Jr9ke1AYf&!Z&s6۔aBJGm<.G3u9,QDɊâHb7NQ/{ [rU+ղ{߾BHo))5EUA9Iշ].2HnWKu.7KPibѣ5bR>&R\EDC%ЖI#R`2-\$DtS}Ѱq9I;I㙳{qպd,? } ϳQU ժttŚHȾ*O=0{5m 7}\}Gn͚*(>OR~QFHnCϙr 'uՙ՛Lj;%_ծʕZӷoW Z6.XqUR-4YG$:¥T/R4d\bA5ߥ%N9a*kX-L/>S'|> f0O"qxoyEo&Mƣ;H~]y.ANߨՒ+VdfmN*[>+fU:|{庎=Өݍ_| Yܤ~dm3QG*f,+Ӥ5 &m:HSm璆KeȔZR0IoKJ45\sKM1Czɼ6R`a:YZtFRR/RhH ~Qs*fqjU9ղK˳NM 7`tlr3*9gf;zK5іyJicoJpcI̳cwR=kT>AdI&G4@lKy({p+ߧAgLm/Uy">̥8Ѱ]F rd{9b}I2UMk cQE s;cje <3 c;w|xz, kyH+gpƣXOviR N c%,"K·zGJ[e۩zFEAdɥjjJ-}qPdjWn~%O%&V8R,m-Jk2২ xe|&BӸqSM#זr``4r'EZ Si݈s(+JTaKWqUˮA:嚷<&߼۸{`W?]=e?܊?=}S5i|67F8M|:Qͽv'>F!h_U)=uY5_'6W~[ nAha5FA7Ebv7dH^ԏ@/0ƢZ? C*Ɗ(M'B-`0!hg8fq! @NH0@1~s5Evu>;C`E{ 0t"PT9|ZJ6pنr2J*[|(F/< 7Ɯ@gȵc.-;;y};O|V|hW$ _r[3?q؞ =RYjz8=?͌o3:f'$Ī;%&a;@Tpo凚@\s: M>3gHZD+p5q&gh&-?)WCj8"1%4ظVClvݮcuXWr<٥sּ#%35iJ-"4S>1Lafx9Zɥע BL#8 >i"hDM.G+ ^*DPЌ@ͮ`'=ceK-]Gtf#3n y ּESXD%J4e5>kN4J_ R=1;u)v[Y_E(7L 39hD)T4fdJW?~޼ 54& )~Q WYDꙐLgW1!-X,a#h g{.ŧʐM2ˊLH^نT*1 ⋕u 槤VrfkXL9l%8F,s"D93Rwl$J]G˪wc)Yq\:NQy4 m %(5:5GE\%ׄ4- èf!Zl4p,­ꙟ@ՍVcaXqz :e3cA'+  բ)lbGjhdqA8 &ڴA*.4 o—~h&6BR^+pS`hFr!OAq4M@)tf`-:36|A?ĭ)7gw<TQVyⵈz_Fb9bS ֘lje'h|h"H{؁~mWl!!/Rl%~'wNO._~ݔi'g'Rh <0ټe^Z,T.k#m63T:K8O:Eq22Vn1;h1>-n?32$+^$fK՗dy2U[\Umbn{/ tu5`O/>HdaɄh8W̥`yJbC} Й$tbhCSɧB3g_|^[rްvɦ`"V1gZj=ߟ>؆y -sopr¤ dR9S#(8 26um%PaJkpuH5Xx)XG7z\M6^QQtA%|'yCKk)hLQv7e;!Z}!v{Oϰ쥅hmk~]Wao4 q9;"rv\rч> V ؏6pKĪrIg(6#Fzm9*gs~^JrK8/tn01bN$?e6` qJX m >f&ʫVvxE-Y^oNcSNdp:)|5mm9lV/@?o Ɓ##(V'H97B԰ $<,3z>[-:҇!F^ oa eWƔ̭Rwin+ܮ `w\ADY/AܳpE}p @zպyX@#eːkt!mPfmv%Lu-x-fB Ridhn󧂕s6#q$NW0FC+y6ԀLcJC$x"KŅ; vn;ٝ}mn8*iA`䉚Ou*I 7.Ξ)\ƮѻN˫cĚ2px~y^vq8&P2qA$R %#DR6'C>Km?ţ<3Ux4N7\A#BM/R8L mS]J_rKDNKo֦J^ ;<8=XPf+pp YPFd֗f9nί\DQ=qM{D"~č|_y(O4=4^E\9QfYᚶz[V.+uV'y'dJ*^%el e80R 2KgKT.fm"B׾b=.(~. * * File: init_nloptr.c * Author: Jelmer Ypma * Date: 3 October 2017 * * This file registers C functions to be used from R. * * CHANGELOG: * 2017-10-01: Initial version. * 2017-10-03: Included registering of C functions to be used by external R * packages. * 2023-02-07: Use "modern" method for invoking native routine registration * (Avraham Adler). * 2023-08-24: Delete files solely needed for testthat (Avraham Adler). * 2024-07-02: Updated old include which is no longer maintained and other * minor code tweaks and efficiency enhancements (Avraham Adler). */ #include #include #include // for NULL #include #include "nloptr.h" #include static const R_CallMethodDef CallEntries[] = { {"NLoptR_Optimize", (DL_FUNC) &NLoptR_Optimize, 1}, {NULL, NULL, 0} }; void R_init_nloptr(DllInfo *info) { // Register C functions that can be used by external packages // linking to internal NLopt code from C. R_RegisterCCallable("nloptr", "nlopt_algorithm_name", (DL_FUNC) &nlopt_algorithm_name); R_RegisterCCallable("nloptr", "nlopt_srand", (DL_FUNC) &nlopt_srand); R_RegisterCCallable("nloptr", "nlopt_srand_time", (DL_FUNC) &nlopt_srand_time); R_RegisterCCallable("nloptr", "nlopt_version", (DL_FUNC) &nlopt_version); R_RegisterCCallable("nloptr", "nlopt_create", (DL_FUNC) &nlopt_create); R_RegisterCCallable("nloptr", "nlopt_destroy", (DL_FUNC) &nlopt_destroy); R_RegisterCCallable("nloptr", "nlopt_copy", (DL_FUNC) &nlopt_copy); R_RegisterCCallable("nloptr", "nlopt_optimize", (DL_FUNC) &nlopt_optimize); R_RegisterCCallable("nloptr", "nlopt_set_min_objective", (DL_FUNC) &nlopt_set_min_objective); R_RegisterCCallable("nloptr", "nlopt_set_max_objective", (DL_FUNC) &nlopt_set_max_objective); R_RegisterCCallable("nloptr", "nlopt_set_precond_min_objective", (DL_FUNC) &nlopt_set_precond_min_objective); R_RegisterCCallable("nloptr", "nlopt_set_precond_max_objective", (DL_FUNC) &nlopt_set_precond_max_objective); R_RegisterCCallable("nloptr", "nlopt_get_algorithm", (DL_FUNC) &nlopt_get_algorithm); R_RegisterCCallable("nloptr", "nlopt_get_dimension", (DL_FUNC) &nlopt_get_dimension); R_RegisterCCallable("nloptr", "nlopt_set_lower_bounds", (DL_FUNC) &nlopt_set_lower_bounds); R_RegisterCCallable("nloptr", "nlopt_set_lower_bounds1", (DL_FUNC) &nlopt_set_lower_bounds1); R_RegisterCCallable("nloptr", "nlopt_get_lower_bounds", (DL_FUNC) &nlopt_get_lower_bounds); R_RegisterCCallable("nloptr", "nlopt_set_upper_bounds", (DL_FUNC) &nlopt_set_upper_bounds); R_RegisterCCallable("nloptr", "nlopt_set_upper_bounds1", (DL_FUNC) &nlopt_set_upper_bounds1); R_RegisterCCallable("nloptr", "nlopt_get_upper_bounds", (DL_FUNC) &nlopt_get_upper_bounds); R_RegisterCCallable("nloptr", "nlopt_remove_inequality_constraints", (DL_FUNC) &nlopt_remove_inequality_constraints); R_RegisterCCallable("nloptr", "nlopt_add_inequality_constraint", (DL_FUNC) &nlopt_add_inequality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_precond_inequality_constraint", (DL_FUNC) &nlopt_add_precond_inequality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_inequality_mconstraint", (DL_FUNC) &nlopt_add_inequality_mconstraint); R_RegisterCCallable("nloptr", "nlopt_remove_equality_constraints", (DL_FUNC) &nlopt_remove_equality_constraints); R_RegisterCCallable("nloptr", "nlopt_add_equality_constraint", (DL_FUNC) &nlopt_add_equality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_precond_equality_constraint", (DL_FUNC) &nlopt_add_precond_equality_constraint); R_RegisterCCallable("nloptr", "nlopt_add_equality_mconstraint", (DL_FUNC) &nlopt_add_equality_mconstraint); R_RegisterCCallable("nloptr", "nlopt_set_stopval", (DL_FUNC) &nlopt_set_stopval); R_RegisterCCallable("nloptr", "nlopt_get_stopval", (DL_FUNC) &nlopt_get_stopval); R_RegisterCCallable("nloptr", "nlopt_set_ftol_rel", (DL_FUNC) &nlopt_set_ftol_rel); R_RegisterCCallable("nloptr", "nlopt_get_ftol_rel", (DL_FUNC) &nlopt_get_ftol_rel); R_RegisterCCallable("nloptr", "nlopt_set_ftol_abs", (DL_FUNC) &nlopt_set_ftol_abs); R_RegisterCCallable("nloptr", "nlopt_get_ftol_abs", (DL_FUNC) &nlopt_get_ftol_abs); R_RegisterCCallable("nloptr", "nlopt_set_xtol_rel", (DL_FUNC) &nlopt_set_xtol_rel); R_RegisterCCallable("nloptr", "nlopt_get_xtol_rel", (DL_FUNC) &nlopt_get_xtol_rel); R_RegisterCCallable("nloptr", "nlopt_set_xtol_abs1", (DL_FUNC) &nlopt_set_xtol_abs1); R_RegisterCCallable("nloptr", "nlopt_set_xtol_abs", (DL_FUNC) &nlopt_set_xtol_abs); R_RegisterCCallable("nloptr", "nlopt_get_xtol_abs", (DL_FUNC) &nlopt_get_xtol_abs); R_RegisterCCallable("nloptr", "nlopt_set_maxeval", (DL_FUNC) &nlopt_set_maxeval); R_RegisterCCallable("nloptr", "nlopt_get_maxeval", (DL_FUNC) &nlopt_get_maxeval); R_RegisterCCallable("nloptr", "nlopt_set_maxtime", (DL_FUNC) &nlopt_set_maxtime); R_RegisterCCallable("nloptr", "nlopt_get_maxtime", (DL_FUNC) &nlopt_get_maxtime); R_RegisterCCallable("nloptr", "nlopt_force_stop", (DL_FUNC) &nlopt_force_stop); R_RegisterCCallable("nloptr", "nlopt_set_force_stop", (DL_FUNC) &nlopt_set_force_stop); R_RegisterCCallable("nloptr", "nlopt_get_force_stop", (DL_FUNC) &nlopt_get_force_stop); R_RegisterCCallable("nloptr", "nlopt_set_local_optimizer", (DL_FUNC) &nlopt_set_local_optimizer); R_RegisterCCallable("nloptr", "nlopt_set_population", (DL_FUNC) &nlopt_set_population); R_RegisterCCallable("nloptr", "nlopt_get_population", (DL_FUNC) &nlopt_get_population); R_RegisterCCallable("nloptr", "nlopt_set_vector_storage", (DL_FUNC) &nlopt_set_vector_storage); R_RegisterCCallable("nloptr", "nlopt_get_vector_storage", (DL_FUNC) &nlopt_get_vector_storage); R_RegisterCCallable("nloptr", "nlopt_set_default_initial_step", (DL_FUNC) &nlopt_set_default_initial_step); R_RegisterCCallable("nloptr", "nlopt_set_initial_step", (DL_FUNC) &nlopt_set_initial_step); R_RegisterCCallable("nloptr", "nlopt_set_initial_step1", (DL_FUNC) &nlopt_set_initial_step1); R_RegisterCCallable("nloptr", "nlopt_get_initial_step", (DL_FUNC) &nlopt_get_initial_step); // Register routines to improve lookup from R using .Call interface. R_registerRoutines(info, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(info, FALSE); R_forceSymbols(info, TRUE); } nloptr/src/Makevars.ucrt0000644000176200001440000000010214472612401015021 0ustar liggesusersPKG_CPPFLAGS = -I$(R_TOOLS_SOFT)/include/nlopt PKG_LIBS = -lnlopt nloptr/src/dummy.cpp0000644000176200001440000000000014472612401014205 0ustar liggesusersnloptr/src/Makevars.in0000644000176200001440000000013514763300100014451 0ustar liggesusersPKG_CPPFLAGS = @NLOPT_CPPFLAGS@ PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) @NLOPT_LIBS@ nloptr/src/scripts/0000755000176200001440000000000014765070675014067 5ustar liggesusersnloptr/src/scripts/nlopt_cleanup.sh0000644000176200001440000000005014763300100017232 0ustar liggesusers#!/bin/sh rm -fr nlopt-src nlopt-build nloptr/src/scripts/r_config.sh0000755000176200001440000000231514762774214016212 0ustar liggesusers#### R CONFIGURATION #### R_ARCH_BIN=$1 CC=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CC` echo set CC=$CC export CC CPPFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CPPFLAGS` CFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CFLAGS` CPICFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CPICFLAGS` CFLAGS="$CPPFLAGS $CPICFLAGS $CFLAGS" echo set CFLAGS=$CFLAGS export CFLAGS CXX=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11` echo set CXX=$CXX export CXX CXXSTD=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11STD` CXXFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11FLAGS` CXXPICFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config CXX11PICFLAGS` CXXFLAGS="$CXXSTD $CPPFLAGS $CXXPICFLAGS $CXXFLAGS" echo set CXXFLAGS=$CXXFLAGS export CXXFLAGS LDFLAGS=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config LDFLAGS` echo set LDFLAGS=$LDFLAGS export LDFLAGS if test -z "$CXX"; then echo >&2 "Could not detect C++ compiler with R CMD config." fi ${R_HOME}/bin${R_ARCH_BIN}/Rscript --vanilla -e 'getRversion() > "4.0.0"' | grep TRUE > /dev/null if [ $? -eq 0 ]; then AR=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config AR` AR=`which $AR` RANLIB=`"${R_HOME}/bin${R_ARCH_BIN}/R" CMD config RANLIB` RANLIB=`which $RANLIB` fi nloptr/src/scripts/nlopt_download.sh0000644000176200001440000000021714765070675017446 0ustar liggesusers#! /bin/sh RSCRIPT_BIN=$1 # Uncompress NLOPT source ${RSCRIPT_BIN} -e "utils::untar(tarfile = 'nlopt-src.tar.gz')" mv nlopt-2.10.0 nlopt-src nloptr/src/nloptr.h0000644000176200001440000000026514763523341014061 0ustar liggesusers#ifndef __NLOPTR_H__ #define __NLOPTR_H__ #include #include // Rdefines.h is no longer maintained. SEXP NLoptR_Optimize(SEXP args); #endif /*__NLOPTR_H__*/ nloptr/src/nloptr.c0000644000176200001440000011153414765045541014061 0ustar liggesusers/* * Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. * This code is published under the L-GPL. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * File: nloptr.cpp * Author: Jelmer Ypma * Date: 9 June 2010 * * This file defines the main function NLoptR_Minimize, which * provides an interface to NLopt from R. * * The function takes an R object containing objective function, * constraints, options, etc. as argument, solve the problem * using NLopt and return the results. * * Financial support of the UK Economic and Social Research Council * through a grant (RES-589-28-0001) to the ESRC Centre for Microdata * Methods and Practice (CeMMAP) is gratefully acknowledged. * * 2011-01-13: added print_level option * 2011-07-24: added checks on return value when setting equality constraints * etc. * 2013-11-05: Moved declaration of ineq_constr_data and eq_constr_data outside * if-statement to solve segfault on Ubuntu. * 2024-07-02: Updated old include which is no longer maintained and other * minor code tweaks and efficiency enhancements (Avraham Adler). */ // TODO: add minimize/maximize option (objective = "maximize") // nlopt_result nlopt_set_min_objective(nlopt_opt opt, nlopt_func f, void* f_data); // nlopt_result nlopt_set_max_objective(nlopt_opt opt, nlopt_func f, void* f_data); #include #include "nloptr.h" #define AS_INTEGER(x) Rf_coerceVector(x, INTSXP) #define AS_REAL(x) Rf_coerceVector(x, REALSXP) // Extracts element with name 'str' from R object 'list' & returns that element. SEXP getListElement (SEXP list, char *str) { SEXP elmt = R_NilValue, names = getAttrib(list, R_NamesSymbol); for (size_t i = 0; i < length(list); i++) { if(strcmp(CHAR(STRING_ELT(names, i)), str) == 0) { elmt = VECTOR_ELT(list, i); break; } } return elmt; } // Convert the algorithm lookup from a nested if-else chain to a lookup table // and switch statement. See https://stackoverflow.com/a/49215742/2726543 typedef struct algpair { char *key; int value; } ALGPAIR; // The algtable table must be in sorted order for bsearch to work properly. ALGPAIR algtable[] = { {"NLOPT_GD_MLSL", 1}, {"NLOPT_GD_MLSL_LDS", 2}, {"NLOPT_GD_STOGO", 3}, {"NLOPT_GD_STOGO_RAND", 4}, {"NLOPT_GN_CRS2_LM", 5}, {"NLOPT_GN_DIRECT", 6}, {"NLOPT_GN_DIRECT_L", 7}, {"NLOPT_GN_DIRECT_L_NOSCAL", 8}, {"NLOPT_GN_DIRECT_L_RAND", 9}, {"NLOPT_GN_DIRECT_L_RAND_NOSCAL", 10}, {"NLOPT_GN_DIRECT_NOSCAL", 11}, {"NLOPT_GN_ESCH", 12}, {"NLOPT_GN_ISRES", 13}, {"NLOPT_GN_MLSL", 14}, {"NLOPT_GN_MLSL_LDS", 15}, {"NLOPT_GN_ORIG_DIRECT", 16}, {"NLOPT_GN_ORIG_DIRECT_L", 17}, {"NLOPT_LD_AUGLAG", 18}, {"NLOPT_LD_AUGLAG_EQ", 19}, {"NLOPT_LD_CCSAQ", 20}, {"NLOPT_LD_LBFGS", 21}, {"NLOPT_LD_LBFGS_NOCEDAL", 22}, {"NLOPT_LD_MMA", 23}, {"NLOPT_LD_SLSQP", 24}, {"NLOPT_LD_TNEWTON", 25}, {"NLOPT_LD_TNEWTON_PRECOND", 26}, {"NLOPT_LD_TNEWTON_PRECOND_RESTART", 27}, {"NLOPT_LD_TNEWTON_RESTART", 28}, {"NLOPT_LD_VAR1", 29}, {"NLOPT_LD_VAR2", 30}, {"NLOPT_LN_AUGLAG", 31}, {"NLOPT_LN_AUGLAG_EQ", 32}, {"NLOPT_LN_BOBYQA", 33}, {"NLOPT_LN_COBYLA", 34}, {"NLOPT_LN_NELDERMEAD", 35}, {"NLOPT_LN_NEWUOA", 36}, {"NLOPT_LN_NEWUOA_BOUND", 37}, {"NLOPT_LN_PRAXIS", 38}, {"NLOPT_LN_SBPLX", 39}, }; static int compAlg(const void *va, const void *vb) { const ALGPAIR *a = va, *b = vb; return strcmp(a->key, b->key); } int getVal(char *key) { ALGPAIR key_pair[1] = {{key}}; ALGPAIR *pair = bsearch(key_pair, algtable, sizeof algtable / sizeof algtable[0], sizeof algtable[0], compAlg); return pair ? pair->value : -1; } // Convert passed string to an nlopt_algorithm item. nlopt_algorithm getAlgorithmCode(const char *algorithm_str) { nlopt_algorithm algorithm; switch(getVal((char*)algorithm_str)) { case 1: algorithm = NLOPT_GD_MLSL; break; case 2: algorithm = NLOPT_GD_MLSL_LDS; break; case 3: algorithm = NLOPT_GD_STOGO; break; case 4: algorithm = NLOPT_GD_STOGO_RAND; break; case 5: algorithm = NLOPT_GN_CRS2_LM; break; case 6: algorithm = NLOPT_GN_DIRECT; break; case 7: algorithm = NLOPT_GN_DIRECT_L; break; case 8: algorithm = NLOPT_GN_DIRECT_L_NOSCAL; break; case 9: algorithm = NLOPT_GN_DIRECT_L_RAND; break; case 10: algorithm = NLOPT_GN_DIRECT_L_RAND_NOSCAL; break; case 11: algorithm = NLOPT_GN_DIRECT_NOSCAL; break; case 12: algorithm = NLOPT_GN_ESCH; break; case 13: algorithm = NLOPT_GN_ISRES; break; case 14: algorithm = NLOPT_GN_MLSL; break; case 15: algorithm = NLOPT_GN_MLSL_LDS; break; case 16: algorithm = NLOPT_GN_ORIG_DIRECT; break; case 17: algorithm = NLOPT_GN_ORIG_DIRECT_L; break; case 18: algorithm = NLOPT_LD_AUGLAG; break; case 19: algorithm = NLOPT_LD_AUGLAG_EQ; break; case 20: algorithm = NLOPT_LD_CCSAQ; break; case 21: algorithm = NLOPT_LD_LBFGS; break; case 22: #ifdef HAVE_NLOPT_LD_LBFGS_NOCEDAL algorithm = NLOPT_LD_LBFGS_NOCEDAL; #else algorithm = NLOPT_LD_LBFGS; #endif break; case 23: algorithm = NLOPT_LD_MMA; break; case 24: algorithm = NLOPT_LD_SLSQP; break; case 25: algorithm = NLOPT_LD_TNEWTON; break; case 26: algorithm = NLOPT_LD_TNEWTON_PRECOND; break; case 27: algorithm = NLOPT_LD_TNEWTON_PRECOND_RESTART; break; case 28: algorithm = NLOPT_LD_TNEWTON_RESTART; break; case 29: algorithm = NLOPT_LD_VAR1; break; case 30: algorithm = NLOPT_LD_VAR2; break; case 31: algorithm = NLOPT_LN_AUGLAG; break; case 32: algorithm = NLOPT_LN_AUGLAG_EQ; break; case 33: algorithm = NLOPT_LN_BOBYQA; break; case 34: algorithm = NLOPT_LN_COBYLA; break; case 35: algorithm = NLOPT_LN_NELDERMEAD; break; case 36: algorithm = NLOPT_LN_NEWUOA; break; case 37: algorithm = NLOPT_LN_NEWUOA_BOUND; break; case 38: algorithm = NLOPT_LN_PRAXIS; break; case 39: algorithm = NLOPT_LN_SBPLX; break; // # nocov start (Guarded against by is.nloptr lines 81–85.) default: // unknown algorithm code Rprintf("Error: unknown algorithm %s.\n", algorithm_str); // Not an algorithm, so this should result in a runtime error. algorithm = NLOPT_NUM_ALGORITHMS; // # nocov end } // Leave old code in commented for now in case of catastrophic failure. // if (strcmp(algorithm_str, "NLOPT_GN_DIRECT") == 0) { // algorithm = NLOPT_GN_DIRECT; // } else if (strcmp(algorithm_str, "NLOPT_GN_DIRECT_L") == 0) { // algorithm = NLOPT_GN_DIRECT_L; // } else if (strcmp(algorithm_str, "NLOPT_GN_DIRECT_L_RAND") == 0) { // algorithm = NLOPT_GN_DIRECT_L_RAND; // } else if (strcmp(algorithm_str, "NLOPT_GN_DIRECT_NOSCAL") == 0) { // algorithm = NLOPT_GN_DIRECT_NOSCAL; // } else if (strcmp(algorithm_str, "NLOPT_GN_DIRECT_L_NOSCAL") == 0) { // algorithm = NLOPT_GN_DIRECT_L_NOSCAL; // } else if (strcmp(algorithm_str, "NLOPT_GN_DIRECT_L_RAND_NOSCAL") == 0) { // algorithm = NLOPT_GN_DIRECT_L_RAND_NOSCAL; // } else if (strcmp(algorithm_str, "NLOPT_GN_ORIG_DIRECT") == 0) { // algorithm = NLOPT_GN_ORIG_DIRECT; // } else if (strcmp(algorithm_str, "NLOPT_GN_ORIG_DIRECT_L") == 0) { // algorithm = NLOPT_GN_ORIG_DIRECT_L; // } else if (strcmp(algorithm_str, "NLOPT_GD_STOGO") == 0) { // algorithm = NLOPT_GD_STOGO; // } else if (strcmp(algorithm_str, "NLOPT_GD_STOGO_RAND") == 0) { // algorithm = NLOPT_GD_STOGO_RAND; // } else if (strcmp(algorithm_str, "NLOPT_LD_SLSQP") == 0) { // algorithm = NLOPT_LD_SLSQP; // } else if (strcmp(algorithm_str, "NLOPT_LD_LBFGS_NOCEDAL") == 0) { // algorithm = NLOPT_LD_LBFGS_NOCEDAL; // } else if (strcmp(algorithm_str, "NLOPT_LD_LBFGS") == 0) { // algorithm = NLOPT_LD_LBFGS; // } else if (strcmp(algorithm_str, "NLOPT_LN_PRAXIS") == 0) { // algorithm = NLOPT_LN_PRAXIS; // } else if (strcmp(algorithm_str, "NLOPT_LD_VAR1") == 0) { // algorithm = NLOPT_LD_VAR1; // } else if (strcmp(algorithm_str, "NLOPT_LD_VAR2") == 0) { // algorithm = NLOPT_LD_VAR2; // } else if (strcmp(algorithm_str, "NLOPT_LD_TNEWTON") == 0) { // algorithm = NLOPT_LD_TNEWTON; // } else if (strcmp(algorithm_str, "NLOPT_LD_TNEWTON_RESTART") == 0) { // algorithm = NLOPT_LD_TNEWTON_RESTART; // } else if (strcmp(algorithm_str, "NLOPT_LD_TNEWTON_PRECOND") == 0) { // algorithm = NLOPT_LD_TNEWTON_PRECOND; // } else if (strcmp(algorithm_str, "NLOPT_LD_TNEWTON_PRECOND_RESTART") == 0) { // algorithm = NLOPT_LD_TNEWTON_PRECOND_RESTART; // } else if (strcmp(algorithm_str, "NLOPT_GN_CRS2_LM") == 0) { // algorithm = NLOPT_GN_CRS2_LM; // } else if (strcmp(algorithm_str, "NLOPT_GN_MLSL") == 0) { // algorithm = NLOPT_GN_MLSL; // } else if (strcmp(algorithm_str, "NLOPT_GD_MLSL") == 0) { // algorithm = NLOPT_GD_MLSL; // } else if (strcmp(algorithm_str, "NLOPT_GN_MLSL_LDS") == 0) { // algorithm = NLOPT_GN_MLSL_LDS; // } else if (strcmp(algorithm_str, "NLOPT_GD_MLSL_LDS") == 0) { // algorithm = NLOPT_GD_MLSL_LDS; // } else if (strcmp(algorithm_str, "NLOPT_LD_MMA") == 0) { // algorithm = NLOPT_LD_MMA; // } else if (strcmp(algorithm_str, "NLOPT_LD_CCSAQ") == 0) { // algorithm = NLOPT_LD_CCSAQ; // } else if (strcmp(algorithm_str, "NLOPT_LN_COBYLA") == 0) { // algorithm = NLOPT_LN_COBYLA; // } else if (strcmp(algorithm_str, "NLOPT_LN_NEWUOA") == 0) { // algorithm = NLOPT_LN_NEWUOA; // } else if (strcmp(algorithm_str, "NLOPT_LN_NEWUOA_BOUND") == 0) { // algorithm = NLOPT_LN_NEWUOA_BOUND; // } else if (strcmp(algorithm_str, "NLOPT_LN_NELDERMEAD") == 0) { // algorithm = NLOPT_LN_NELDERMEAD; // } else if (strcmp(algorithm_str, "NLOPT_LN_SBPLX") == 0) { // algorithm = NLOPT_LN_SBPLX; // } else if (strcmp(algorithm_str, "NLOPT_LN_AUGLAG") == 0) { // algorithm = NLOPT_LN_AUGLAG; // } else if (strcmp(algorithm_str, "NLOPT_LD_AUGLAG") == 0) { // algorithm = NLOPT_LD_AUGLAG; // } else if (strcmp(algorithm_str, "NLOPT_LN_AUGLAG_EQ") == 0) { // algorithm = NLOPT_LN_AUGLAG_EQ; // } else if (strcmp(algorithm_str, "NLOPT_LD_AUGLAG_EQ") == 0) { // algorithm = NLOPT_LD_AUGLAG_EQ; // } else if (strcmp(algorithm_str, "NLOPT_LN_BOBYQA") == 0) { // algorithm = NLOPT_LN_BOBYQA; // } else if (strcmp(algorithm_str, "NLOPT_GN_ISRES") == 0) { // algorithm = NLOPT_GN_ISRES; // } else if (strcmp(algorithm_str, "NLOPT_GN_ESCH") == 0) { // algorithm = NLOPT_GN_ESCH; // } else { // // unknown algorithm code // Rprintf("Error: unknown algorithm %s.\n", algorithm_str); // // Not an algorithm, so this should result in a runtime error. // algorithm = NLOPT_NUM_ALGORITHMS; // } return algorithm; } // Define structure that contains data to pass to the objective function typedef struct { SEXP R_eval_f; SEXP R_environment; size_t num_iterations; int print_level; } func_objective_data; // Define function that calls user-defined objective function in R double func_objective(unsigned n, const double *x, double *grad, void *data) { // Return the value, and the gradient if necessary, of the objective function. // Check for user interruption from R. R_CheckUserInterrupt(); func_objective_data *d = (func_objective_data *) data; // Increase number of function evaluations. d->num_iterations++; // Print status. if (d->print_level >= 1) { Rprintf("iteration: %zu\n", d->num_iterations); } // Print values of x. if (d->print_level >= 3) { if (n == 1) { Rprintf("\tx = %f\n", x[0]); } else { Rprintf("\tx = (%f", x[0]); for (size_t i = 1; i < n; i++) { Rprintf(", %f", x[i]); } Rprintf(")\n"); } } // Allocate memory for a vector of reals. This vector will contain the // elements of x, where x is the argument to the R function R_eval_f. SEXP rargs = allocVector(REALSXP, n); double *prargs = REAL(rargs); for (size_t i = 0; i < n; i++) { prargs[i] = x[i]; } // Evaluate R function R_eval_f with the control x as an argument. SEXP Rcall = PROTECT(lang2(d->R_eval_f, rargs)); SEXP result = PROTECT(eval(Rcall, d->R_environment)); // Recode the return value from SEXP to double. double obj_value; if (isNumeric(result)) { // Objective value is the only element of "result". obj_value = asReal(result); } else { // Objective value needs to be extracted from the list of return values. SEXP R_obj_value = PROTECT(getListElement(result, "objective")); // Recode the return value from SEXP to double. obj_value = asReal(R_obj_value); UNPROTECT(1); } // Print objective value. if (d->print_level >= 1) { Rprintf("\tf(x) = %f\n", obj_value); } // Handle gradient. if (grad) { // result needs to be a list in this case SEXP R_gradient = PROTECT(getListElement(result, "gradient")); // Recode the return value from SEXP to double. double *pRgrad = REAL(R_gradient); for (size_t i = 0; i < n; i++) { grad[i] = pRgrad[i]; } UNPROTECT(1); } UNPROTECT(2); return obj_value; } // Define structure that contains data to pass to the constraint function. typedef struct { SEXP R_eval_g; SEXP R_environment; int print_level; } func_constraints_ineq_data; /* * Define function that calls user-defined inequality constraints function in R * * m : number of constraints * constraints : value of the constraints evaluated at x * n : number of variables * x : point where we want to evaluate the constraints * grad : value of the gradient of the constraints, grad[i*n + j] = \frac{ \partial c_i }{ \partial x_j } * data : additional data that we need to evaluate the function (e.g. the R function) */ void func_constraints_ineq(unsigned m, double* constraints, unsigned n, const double* x, double* grad, void* data) { // Return the value (and the Jacobian) of the constraints. // Check for user interruption from R. R_CheckUserInterrupt(); func_constraints_ineq_data *d = (func_constraints_ineq_data *) data; // Allocate memory for a vector of reals. This vector will contain the // elements of x, where x is the argument to the R function R_eval_f. SEXP rargs_x = allocVector(REALSXP, n); double *prargsx = REAL(rargs_x); for (size_t i = 0; i < n; i++) { prargsx[i] = x[i]; } // Evaluate R function R_eval_g with the control x as an argument. SEXP Rcall = PROTECT(lang2(d->R_eval_g, rargs_x)); SEXP result = PROTECT(eval(Rcall, d->R_environment)); // Get the value of the constraint from the result. if (isNumeric(result)) { // Constraint values are the only element of result. so recode the return // value from SEXP to double*, by looping over constraints. double *presult = REAL(result); for (size_t i = 0; i < m; i++) { constraints[i] = presult[i]; } } else { // Constraint value should be extracted from the list of return values. SEXP R_constraints = PROTECT(getListElement(result, "constraints")); // Recode the return value from SEXP to double by looping over constraints. double *pRconst = REAL(R_constraints); for (size_t i = 0; i < m; i++) { constraints[i] = pRconst[i]; } UNPROTECT(1); } // Prsize_t inequality constraints. if (d->print_level >= 2) { if (m == 1) { Rprintf("\tg(x) = %f\n", constraints[0]); } else { Rprintf("\tg(x) = (%f", constraints[0]); for (size_t i = 1; i < m; i++) { Rprintf(", %f", constraints[i]); } Rprintf(")\n"); } } // Get the value of the gradient if needed. if (grad) { // Result needs to be a list in this case. SEXP R_gradient = PROTECT(getListElement(result, "jacobian")); /* * recode the return value from SEXP to double*, by looping over variables and constraints * We get a matrix from R with the Jacobian of the constraints * / dc_1/dx_1 dc_1/dx_2 ... dc_1/dx_n \ * | dc_2/dx_1 dc_2/dx_2 ... dc_2/dx_n | * | ... ... ... | * \ dc_m/dx_1 dc_m/dx_2 ... dc_m/dx_n / * Matrices are stored column-wise, so basically we get a vector * [dc_1/dx_1, dc_2/dx_1, ..., dc_m/dx_1, dc_1/dx_2, dc_2/dx_2, ..., dc_m/dx_2, ..., dc_1/dx_n, dc_2/dx_n, ..., dc_m/dx_n] * which we have to convert to a row-wise format for NLopt. */ double *pRgrad = REAL(R_gradient); for (size_t i = 0; i < m; i++) { size_t ni = i * n; for (size_t j = 0; j < n; j++) { grad[ni + j] = pRgrad[j * m + i]; } } UNPROTECT(1); } UNPROTECT(2); } // Define structure that contains data to pass to the constraint function. typedef struct { SEXP R_eval_g; SEXP R_environment; int print_level; } func_constraints_eq_data; /* * Define function that calls user-defined equality constraints function in R * * m : number of constraints * constraints : value of the constraints evaluated at x * n : number of variables * x : point where we want to evaluate the constraints * grad : value of the gradient of the constraints, grad[i*n + j] = \frac{ \partial c_i }{ \partial x_j } * data : additional data that we need to evaluate the function (e.g. the R function) */ void func_constraints_eq(unsigned m, double* constraints, unsigned n, const double* x, double* grad, void* data) { // Return the value (and the Jacobian) of the constraints. // Check for user interruption from R. R_CheckUserInterrupt(); func_constraints_eq_data *d = (func_constraints_eq_data *) data; // Allocate memory for a vector of reals. This vector will contain the // elements of x, where x is the argument to the R function R_eval_f. SEXP rargs_x = allocVector(REALSXP, n); double *prargsx = REAL(rargs_x); for (size_t i = 0; i < n; i++) { prargsx[i] = x[i]; } // Evaluate R function R_eval_g with the control x as an argument. SEXP Rcall = PROTECT(lang2(d->R_eval_g, rargs_x)); SEXP result = PROTECT(eval(Rcall, d->R_environment)); // Get the value of the constraint from the result. if (isNumeric(result)) { // Constraint values are the only element of result, so recode the return // value from SEXP to double*, by looping over constraints. double *presult = REAL(result); for (size_t i = 0; i < m; i++) { constraints[i] = presult[i]; } } else { // Constraint value should be extracted from the list of return values. SEXP R_constraints = PROTECT(getListElement(result, "constraints")); // Recode the return value from SEXP to double by looping over constraints. double *pRconst = REAL(R_constraints); for (size_t i = 0; i < m; i++) { constraints[i] = pRconst[i]; } UNPROTECT(1); } // Print equality constraints. if (d->print_level >= 2) { if (m == 1) { Rprintf("\th(x) = %f\n", constraints[0]); } else { Rprintf("\th(x) = (%f", constraints[0]); for (size_t i = 1; i < m; i++) { Rprintf(", %f", constraints[i]); } Rprintf(")\n"); } } // Get the value of the gradient if needed. if (grad) { // Result needs to be a list in this case. SEXP R_gradient = PROTECT(getListElement(result, "jacobian")); /* * recode the return value from SEXP to double*, by looping over variables and constraints * We get a matrix from R with the Jacobian of the constraints * / dc_1/dx_1 dc_1/dx_2 ... dc_1/dx_n \ * | dc_2/dx_1 dc_2/dx_2 ... dc_2/dx_n | * | ... ... ... | * \ dc_m/dx_1 dc_m/dx_2 ... dc_m/dx_n / * Matrices are stored column-wise, so basically we get a vector * [dc_1/dx_1, dc_2/dx_1, ..., dc_m/dx_1, dc_1/dx_2, dc_2/dx_2, ..., dc_m/dx_2, ..., dc_1/dx_n, dc_2/dx_n, ..., dc_m/dx_n] * which we have to convert to a row-wise format for NLopt. */ double *pRgrad = REAL(R_gradient); for (size_t i = 0; i < m; i++) { size_t ni = i * n; for (size_t j = 0; j < n; j++) { grad[ni + j] = pRgrad[j * m + i]; } } UNPROTECT(1); } UNPROTECT(2); } nlopt_opt getOptions(SEXP R_options, int num_controls, int *flag_encountered_error) { /* * double minf_max - stop if the objective function value drops below minf_max. (Set to -HUGE_VAL to ignore.) * double ftol_rel, * double ftol_abs - relative and absolute tolerances in the objective function value. (Set to zero to ignore.) * double xtol_rel, xtol_abs - relative and absolute tolerances in the optimization parameter values. xtol_abs * should either be NULL, in which case it is ignored (equivalent to zero tolerance), * or otherwise it should point to an array of length n containing absolute tolerances * in each parameter x[i]. Set any tolerance to zero for it to be ignored. * int maxeval - stop if the objective function is evaluated at least maxeval times. Set to zero to ignore. * double maxtime - stop if the elapsed wall-clock time, in seconds, exceeds maxtime. Set to zero to ignore. */ // Declare nlopt_result to capture error codes from setting options. nlopt_result res; // Get the algorithm from options. SEXP R_algorithm = PROTECT(getListElement(R_options, "algorithm")); // R_algorithm_str will contain the first (should be the only one) element of the list. SEXP R_algorithm_str = PROTECT(STRING_ELT(R_algorithm, 0)); const char* algorithm_str = CHAR(R_algorithm_str); nlopt_algorithm algorithm = getAlgorithmCode(algorithm_str); // Declare options. nlopt_opt opts; opts = nlopt_create(algorithm, num_controls); // algorithm and dimensionality // Get other options. // Stop when f(x) <= stopval for minimizing or >= stopval for maximizing. SEXP R_opts_stopval = PROTECT(getListElement(R_options, "stopval")); double stopval = asReal(R_opts_stopval); res = nlopt_set_stopval(opts, stopval); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_stopval returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_ftol_rel = PROTECT(getListElement(R_options, "ftol_rel")); double ftol_rel = asReal(R_opts_ftol_rel); res = nlopt_set_ftol_rel(opts, ftol_rel); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_ftol_rel returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_ftol_abs = PROTECT(getListElement(R_options, "ftol_abs")); double ftol_abs = asReal(R_opts_ftol_abs); res = nlopt_set_ftol_abs(opts, ftol_abs); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_ftol_abs returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_xtol_rel = PROTECT(getListElement(R_options, "xtol_rel")); double xtol_rel = asReal(R_opts_xtol_rel); res = nlopt_set_xtol_rel(opts, xtol_rel); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_xtol_rel returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_xtol_abs = PROTECT(getListElement(R_options, "xtol_abs")); double xtol_abs[num_controls]; for (size_t i = 0; i < num_controls; i++) { xtol_abs[i] = asReal(R_opts_xtol_abs); } res = nlopt_set_xtol_abs(opts, xtol_abs); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_xtol_abs returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_maxeval = PROTECT(AS_INTEGER(getListElement(R_options, "maxeval"))); int maxeval = asInteger(R_opts_maxeval); res = nlopt_set_maxeval(opts, maxeval); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_maxeval returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_maxtime = PROTECT(getListElement(R_options, "maxtime")); double maxtime = asReal(R_opts_maxtime); res = nlopt_set_maxtime(opts, maxtime); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_maxtime returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_population = PROTECT(AS_INTEGER(getListElement(R_options, "population"))); unsigned int population = asInteger(R_opts_population); res = nlopt_set_population(opts, population); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_population returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_vector_storage = PROTECT(AS_INTEGER(getListElement(R_options, "vector_storage"))); unsigned int vector_storage = asInteger(R_opts_vector_storage); res = nlopt_set_vector_storage(opts, vector_storage); if (res == NLOPT_INVALID_ARGS) { *flag_encountered_error = 1; Rprintf("Error: nlopt_set_vector_storage returned NLOPT_INVALID_ARGS.\n"); } SEXP R_opts_ranseed = PROTECT(AS_REAL(getListElement(R_options, "ranseed"))); unsigned long ranseed = REAL(R_opts_ranseed)[0]; // Set random seed if ranseed > 0. By default a random seed is generated from // system time. if (ranseed > 0) { nlopt_srand(ranseed); } UNPROTECT(12); return opts; } SEXP convertStatusToMessage(nlopt_result status) { // Convert message to an R object. SEXP R_status_message = PROTECT(allocVector(STRSXP, 1)); switch (status) { // Successful termination (positive return values): // (= +1) case NLOPT_SUCCESS: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_SUCCESS: Generic success return value.")); break; // (= +2) case NLOPT_STOPVAL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_STOPVAL_REACHED: Optimization stopped because stopval (above) was reached.")); break; // (= +3) case NLOPT_FTOL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_FTOL_REACHED: Optimization stopped because ftol_rel or ftol_abs (above) was reached.")); break; // (= +4) case NLOPT_XTOL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached.")); break; // (= +5) case NLOPT_MAXEVAL_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_MAXEVAL_REACHED: Optimization stopped because maxeval (above) was reached.")); break; // (= +6) case NLOPT_MAXTIME_REACHED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_MAXTIME_REACHED: Optimization stopped because maxtime (above) was reached.")); break; // Error codes (negative return values): // (= -1) case NLOPT_FAILURE: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_FAILURE: Generic failure code.")); break; // (= -2) case NLOPT_INVALID_ARGS: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_INVALID_ARGS: Invalid arguments (e.g. lower bounds are bigger than upper bounds, an unknown algorithm was specified, etcetera).")); break; // (= -3) case NLOPT_OUT_OF_MEMORY: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_OUT_OF_MEMORY: Ran out of memory.")); break; // (= -4) case NLOPT_ROUNDOFF_LIMITED: SET_STRING_ELT(R_status_message, 0, mkChar("NLOPT_ROUNDOFF_LIMITED: Roundoff errors led to a breakdown of the optimization algorithm. In this case, the returned minimum may still be useful. (e.g. this error occurs in NEWUOA if one tries to achieve a tolerance too close to machine precision.)")); break; // # nocov start - Cannot test as the nlopt_force_stop() function is not exposed to nloptr. case NLOPT_FORCED_STOP: SET_STRING_ELT(R_status_message, 0, mkChar("Halted because of a forced termination: the user called nlopt_force_stop(opt) on the optimization's nlopt_opt object opt from the user's objective function.")); // # nocov end default: SET_STRING_ELT(R_status_message, 0, mkChar("Return status not recognized.")); } UNPROTECT(1); return R_status_message; } // Constrained minimization: main package function. SEXP NLoptR_Optimize(SEXP args) { // Declare nlopt_result to capture error codes from setting options. nlopt_result res; int flag_encountered_error = 0; // Get initial values. SEXP R_init_values = PROTECT(getListElement(args, "x0")); // Number of control variables. unsigned num_controls = length(R_init_values); // Set initial values of the controls. double x0[num_controls]; double *pRinit = REAL(R_init_values); for (size_t i = 0; i < num_controls; i++) { x0[i] = pRinit[i]; } UNPROTECT(1); // Get options. SEXP R_options = PROTECT(getListElement(args, "options")); nlopt_opt opts = getOptions(R_options, num_controls, &flag_encountered_error); UNPROTECT(1); // Get local options. SEXP R_local_options = PROTECT(getListElement(args, "local_options")); if (R_local_options != R_NilValue) { // Parse list with options. nlopt_opt local_opts = getOptions(R_local_options, num_controls, &flag_encountered_error); // Add local optimizer options to global options. nlopt_set_local_optimizer(opts, local_opts); } UNPROTECT(1); // Get print_level from options. SEXP R_opts_print_level = PROTECT(AS_INTEGER(getListElement(R_options, "print_level"))); int print_level = asInteger(R_opts_print_level); UNPROTECT(1); // Get lower and upper bounds. SEXP R_lower_bounds = PROTECT(getListElement(args, "lower_bounds")); SEXP R_upper_bounds = PROTECT(getListElement(args, "upper_bounds")); // Set the upper and lower bounds of the controls. double lb[num_controls]; double ub[num_controls]; double *pRlb = REAL(R_lower_bounds); double *pRub = REAL(R_upper_bounds); for (size_t i = 0; i < num_controls; i++) { lb[i] = pRlb[i]; // lower bound ub[i] = pRub[i]; // upper bound } UNPROTECT(2); // Add upper and lower bounds to options. res = nlopt_set_lower_bounds(opts, lb); if (res == NLOPT_INVALID_ARGS) { flag_encountered_error = 1; Rprintf("Error: nlopt_set_lower_bounds returned NLOPT_INVALID_ARGS.\n"); } res = nlopt_set_upper_bounds(opts, ub); if (res == NLOPT_INVALID_ARGS) { flag_encountered_error = 1; Rprintf("Error: nlopt_set_upper_bounds returned NLOPT_INVALID_ARGS.\n"); } // Get number of inequality constraints. SEXP R_num_constraints_ineq = PROTECT(AS_INTEGER(getListElement(args, "num_constraints_ineq"))); unsigned num_constraints_ineq = asInteger(R_num_constraints_ineq); UNPROTECT(1); // Get number of equality constraints. SEXP R_num_constraints_eq = PROTECT(AS_INTEGER(getListElement(args, "num_constraints_eq"))); unsigned num_constraints_eq = asInteger(R_num_constraints_eq); UNPROTECT(1); // Get evaluation functions and environment. SEXP R_eval_f = PROTECT(getListElement(args, "eval_f")); // objective SEXP R_eval_g_ineq = PROTECT(getListElement(args, "eval_g_ineq")); // inequality constraints SEXP R_eval_g_eq = PROTECT(getListElement(args, "eval_g_eq")); // equality constraints SEXP R_environment = PROTECT(getListElement(args, "nloptr_environment")); // Define data to pass to objective function. func_objective_data objfunc_data; objfunc_data.R_eval_f = R_eval_f; objfunc_data.R_environment = R_environment; objfunc_data.num_iterations = 0; objfunc_data.print_level = print_level; // Add objective to options. res = nlopt_set_min_objective(opts, func_objective, &objfunc_data); if (res == NLOPT_INVALID_ARGS) { flag_encountered_error = 1; Rprintf("Error: nlopt_set_min_objective returned NLOPT_INVALID_ARGS.\n"); } // Inequality constraints // Declare data outside if-statement to prevent data corruption. func_constraints_ineq_data ineq_constr_data; if (num_constraints_ineq > 0) { // Get tolerances from R_options. double tol_constraints_ineq[num_constraints_ineq]; SEXP R_tol_constraints_ineq = PROTECT(getListElement(R_options, "tol_constraints_ineq")); double *pRtolineqc = REAL(R_tol_constraints_ineq); for (size_t i = 0; i < num_constraints_ineq; i++) { tol_constraints_ineq[i] = pRtolineqc[i]; } UNPROTECT(1); // Define data to pass to constraint function. ineq_constr_data.R_eval_g = R_eval_g_ineq; ineq_constr_data.R_environment = R_environment; ineq_constr_data.print_level = print_level; // Add vector-valued inequality constraint. res = nlopt_add_inequality_mconstraint(opts, num_constraints_ineq, func_constraints_ineq, &ineq_constr_data, tol_constraints_ineq); if (res == NLOPT_INVALID_ARGS) { flag_encountered_error = 1; Rprintf("Error: nlopt_add_inequality_mconstraint returned NLOPT_INVALID_ARGS.\n"); } } // Equality constraints // Declare data outside if-statement to prevent data corruption. func_constraints_eq_data eq_constr_data; if (num_constraints_eq > 0) { // Get tolerances from R_options. double tol_constraints_eq[num_constraints_eq]; SEXP R_tol_constraints_eq = PROTECT(getListElement(R_options, "tol_constraints_eq")); double *pRtoleqc = REAL(R_tol_constraints_eq); for (size_t i = 0; i=2.7.0`. * Use `NLOPT_LD_LBFGS` in place of `NLOPT_LD_LBFGS_NOCEDAL` when the latter is not available (in nlopt `v2.9.x`). * Add checks for `x0` and `eval_f` in `nloptr` (#191, @astamm). # nloptr 2.2.0 This release fixes a breaking bug which affects **nloptr** and its reverse dependencies and brings some minor tweaks and corrections along the way: * Minimal patch for build against nlopt `2.9.x` (#176, @jaganmn): specifically, the issuses were that (i) nlopt versions 2.9.x had one less algorithm in the enum list, namely `NLOPT_LD_LBFGS_NOCEDAL` was removed in these versions and put back in 2.10 and (ii) we were using `inst/include` in which we copied nlopt headers conditionally to build the package (e.g. listing it in `PKG_CPPFLAGS`) resulting in possible version conflicts. * Fix the 2 failed tests by adding one more termination criterion. * Update GHA workflows to latest versions. * Fix reverse `LinkingTo` dependencies by (i) unconditionally copying headers to `inst/include` and (ii) fixing `cmake` path search (#179, @astamm). * Fix for newly broken **kergp** package due to wrong usage of `if` statement inside `paste()` which works differently than when used inside `c()` (#180, @astamm). * Update artifact action to `v4` (#174, @eddelbuettel). * Correcting some of the unit tests in `test-banana` (#167, @aadler). * Correcting some of the unit tests in `test-global-wrapper` (#166, @aadler). * Update the code in `nloptr.c` for compatibility with the `R` API, efficiency, and formatting (#169, @aadler). * Bugfix: `ranseed` expects an unsigned long but was passed as an integer, thus reducing the range of random seeds. It is now passed as a double and converted to a long (#169, @aadler). # nloptr 2.1.1 This is a patch release to work around a bug in the CRAN checks. Specifically, one of the unit tests for the `isres()` algorithm was failing on some CRAN builds because convergence is stochastic with slightly different results even with the same fixed seed prior to calling the function. # nloptr 2.1.0 This release deprecates the default behavior of the inequality equations in any wrapper function which uses them. Currently, they are calibrated to be >= 0. This version allows for the equations to be consistent with the main `nloptr` function, which requires <= 0. In a future release, the default behavior will switch to assuming the calibration is <= 0, and eventually, the >= 0 behavior will be removed. It also includes a large number of safety and efficiency changes, and an expansion of the unit tests to 100% coverage for all files but one. The major changes include: * Reversed the direction of the inequality equations `hin` and `hinjac` in the wrapper functions which use them, bringing them into compliance with the main `nloptr` call. This addresses [Issue #148](https://github.com/astamm/nloptr/issues/148); * Cleaned the Hock-Schittkowski problem no. 100, Hartmann 6-dimensional, and Powell exponential examples. This addresses [Issue #152](https://github.com/astamm/nloptr/issues/152) and [Issue #156](https://github.com/astamm/nloptr/issues/156); * Updated roxygen version; * Updated maintainer email; * Deal with NA returns from `parallel::detectCores()` (contributed by @jeroen in PR #150); * Setup rhub v2 checks; * Update cmake installation instructions on Mac with brew (#146); * Allow use of equality constraints with COBYLA (#135); * Replaced the unit testing framework of `testthat` with `tinytest` (See [Issue #136](https://github.com/astamm/nloptr/issues/136)); * Brought coverage of `is.nloptr` to 100%. The only file not completely covered by unit tests is `nloptr.c`. The uncovered calls are error messages which get trapped by tests in R before the call gets to C; * Linted package for code correctness and consistency; * Updated vignette, DESCRIPTION, and NEWS; * Updated package website to use bootstrap 5; * Expanded unit tests: coverage now over 97% with no file below 90%; * Removed forcing `C++11`; * Added safety checks to C code; * Added many safety and efficiency enhancements to R code; * Most R code style made self-consistent; * Updated documentation and messages for accuracy and mathematical formatting * Updated Github actions; * Some bugfixes (e.g. in `isres` or the warning in `nl.grad`). Please see the commit logs for more detailed descriptions of the changes. # nloptr 2.0.3 * Improved compatibility on RHEL/CentOS by first searching for a `cmake3` binary on the `PATH` ([#104](https://github.com/astamm/nloptr/issues/104)). * Improved backward compatibility with older versions of `cmake` ([#119](https://github.com/astamm/nloptr/issues/119)). # nloptr 2.0.2 This is a patch version in which: * I link to the `nlopt` library via `nlopt/lib/libnlopt.a` instead of `-Lnlopt/lib -lnlopt` when building `nlopt` from included sources to avoid potential mess where `-lnlopt` could look for the `nlopt` library in other places and possibly link with an existing too old system build of `nlopt`. Additionally, we contacted [Simon Urbanek](https://github.com/s-u/) for updating the `nlopt` recipe for macOS users so that it does now match the latest `v2.7.1`, which should avoid `nlopt` to be built on the fly on CRAN machines. # nloptr 2.0.1 This is a release mainly for increasing direct compatibility with most user cases. In details, here is the list of changes that have been made: * Update `SystemRequirements` description to make it clearer which minimal versions of `cmake` (`>= 3.15.0`) and `nlopt` (`>= 2.7.0`) are required ([#100](https://github.com/astamm/nloptr/issues/100), [@HenrikBengtsson](https://github.com/HenrikBengtsson)). * End configuration sooner and louder if `cmake` is missing when needed with clearer message ([#103](https://github.com/astamm/nloptr/issues/103), [@eddelbuettel](https://github.com/eddelbuettel)). * Ensure system-wide installation of `cmake` in the list of suggestions to install it when missing. * Update GHA scripts to latest versions. * Configure git to always use LF line endings for configure.ac file. * Add CI for R-devel on Windows with Rtools42. * Fix for compatibility with versions of R anterior to `4.0` ([#111](https://github.com/astamm/nloptr/issues/111)). * Look for a `cmake3` binary in the current path before `cmake` for increasing compatibility with most RHEL/CentOS users ([#104](https://github.com/astamm/nloptr/issues/104), [@bhogan-mitre](https://github.com/bhogan-mitre), [@HenrikBengtsson](https://github.com/HenrikBengtsson)). # nloptr 2.0.0 ## Major changes * Use [CMake](https://cmake.org) to build `nlopt` from included sources on macOS and on Linux if no system build of NLopt (>= 2.7.0) is found. * Update included sources of NLopt to latest version (2.7.1). * Put back the ability on Linux platforms to re-use an existing external build of NLopt instead of building from the included sources (contributed by [Dirk Eddelbuettel](https://github.com/eddelbuettel), [#88](https://github.com/astamm/nloptr/issues/88)). * Now builds using NLopt from `rwinlib` on Windows current release (contributed by [Jeroen Ooms](https://github.com/jeroen), [#92](https://github.com/astamm/nloptr/issues/92)), or NLopt from `Rtools42` on Windows devel (contributed by [Tomas Kalibera](https://github.com/kalibera)). ## Minor changes * Added a `NEWS.md` file to track changes to the package. * Use markdown in Roxygen documentation. * Added a logo and a proper [**nloptr** website](https://astamm.github.io/nloptr/). * Added coverage. * Switch from Travis to Github Actions for CI. * Use Catch for unit testing C/C++ code. * Now tracking code coverage. * Update NLopt-related URLs following migration of [NLopt website](https://nlopt.readthedocs.io/en/latest/). * Fixed bug to avoid linking issues when using the C API via `#include ` in several source files. * Fix precision issue in test example `hs071` ([#81](https://github.com/astamm/nloptr/issues/81), [@Tom-python0121](https://github.com/Tom-python0121)). * Made NLopt algorithm `NLOPT_GN_ESCH` available from R interface (contributed by [Xiongtao Dai](https://github.com/xdaiISU)). # nloptr 1.2.2 (29 February 2020) * Replaced deprecated functions from [**testthat**](https://testthat.r-lib.org) framework in unit tests (contributed by [Avraham Adler](https://github.com/aadler)). ## 26 February 2020: * Fixed warnings (as requested by CRAN): R CMD config variables 'CPP' and 'CXXCPP' are deprecated. ## 20 October 2018: * Exposed CCSAQ algorithm in R interface (contributed by [Julien Chiquet](https://github.com/jchiquet)). # nloptr 1.2.1 (03 October 2018) * Build process was changed to solve issues on several OS (many thanks to the CRAN maintainers). # nloptr 1.2.0 (30 September 2018) ## 21 April 2018: * Changed installation procedure. NLopt source code is now part of nloptr package and not downloaded separately during configure in Unix systems in case NLopt library cannot be found. * Registered NLopt C functions to be used by external R package and included C API. * Documentation is generated using roxygen. ## 25 September 2017: * Fixed a bug in auglag. BOBYQA is now allowed as local solver (thanks to [Léo Belzile](https://github.com/lbelzile)). # nloptr 1.1.0 (22 August 2016) * Fixed a bug that sometimes caused segmentation faults due to an uninitialized vector of tolerances for the inequality and/or equality constraints (thanks to Florian Schwendinger). # nloptr 1.0.9 (22 March 2015) * When the problem fails with error status 6 (`NLOPT_MAXTIME_REACHED`) and `maxtime` was not set to a positive number in the options, then nloptr tries a couple more times to solve the problem. This is a new approach that should solve the bug that NLopt sometimes exits a problem stating the maximum available time has been reached, even when no limit on the time has been set. * Changed warning to message in order to show that for consistency with the rest of the package the inequality sign in the functions `auglag`, `cobyla`, `isres`, `mma`, and `slsqp` will be switched from >= to <= in a future nloptr version. # nloptr 1.0.8 (22 February 2015) * Changed description in DESCRIPTION such that it does not start with the package name (as requested by CRAN). # nloptr 1.0.7 (14 February 2015) * Changed title field in DESCRIPTION to title case (as requested by CRAN). * Added `donttest` around example in `mma` documentation. # nloptr 1.0.6 (8 February 2015) * Updated description to better reflect installation procedure on Linux when NLopt is pre-installed (as requested by CRAN). # nloptr 1.0.5 (28 January 2015) * Added non-exported functions CFlags and LdFlags to be used in packages that want to link to the NLopt C library. * For consistency with the rest of the package the inequality sign in the functions `auglag`, `cobyla`, `isres`, `mma`, and `slsqp` will be switched from >= to <= in the next nloptr version. The current version of nloptr shows a warning when using these functions with inequality constraints. This warning can be turned off with `options('nloptr.show.inequality.warning' = FALSE)`. # nloptr 1.0.4 (02 August 2014) * Increased version number to re-submit package to CRAN with CRLF line endings removed from `configure` and `configure.ac`. # nloptr 1.0.3 (25 July 2014) * Changed NLOPT_VERSION to 2.4.2 for Linux. * Changed `nloptr.default.options` from a `data.frame` to a function returning the `data.frame`. # nloptr 1.0.2 (25 July 2014) * Added configure script which tests for a system NLopt library via pkg-config and uses it if it is sufficiently recent (ie 2.4.*), and otherwise configure downloads, patches and builds the NLopt sources just how src/Makevars used to (thanks to [Dirk Eddelbuettel](https://github.com/eddelbuettel)). # nloptr 1.0.1 (05 May 2014) * All unit tests are now enabled and use the package testthat. Install the package with argument INSTALL_opt = "--install-tests" supplied to `install.packages` to install the tests. The tests can be run after installation with test_package('nloptr'). The testthat package needs to be installed and loaded to be able to run the tests. * Changed default value for maxtime option from 0.0 to -1.0. In some cases nloptr returned `NLOPT_MAXTIME_REACHED` without running any iterations with the default setting. This change solves this. * Replaced cat by message or warning. Messages can be suppressed by `suppressMessages`. # nloptr 1.0.0 (27 January 2014) * Merged wrappers from the **nloptwrap** package. # nloptr 0.9.6 (19 November 2013) * Added a line in `Makevars` to replace some code in NLopt to fix compilation on Solaris as requested by Brian Ripley. # nloptr 0.9.5 (12 November 2013) * Updated references from NLopt version 2.3 to NLopt version 2.4 in installation instructions in `INSTALL.windows`. * Added a line in `Makevars` that replaces some code related to type-casting in `NLopt-2.4/isres/isres.c`. * Changed encoding of `src/nloptr.c` from CP1252 to UTF-8. # nloptr 0.9.4 (09 November 2013) * Updated NLopt to version 2.4. * Changed tests to use unit testing package testthat (these are currently disabled). * Fixed a segfault that started to occur on the latest version of Ubuntu. * Slightly changed the build process (Removed `-lstdc++` from linker statement. A file `dummy.cpp` (with C++ extension) is added to the source directory to ensure linking with C++. Thanks to Brian Ripley for bringing this up.) # nloptr 0.9.3 (31 July 2013) * Split lines longer than 100 characters in `check.derivatives` examples in two lines to comply with new package rules. * Moved vignettes from `inst/doc` to `vignettes` to comply with new package rules. * Removed dependency on `apacite` in vignette as an update of `apacite` on CRAN resulted in errors. # nloptr 0.9.2 (11 July 2013) * Made changes in bibtex file of documentation. * Removed `CFLAGS`, `CXXFLAGS` from `Makevars`. # nloptr 0.9.0 * Introduced new `print_level = 3`. Shows values of controls (16 April 2012 on R-Forge). * Changed `Makevars` and `Makevars.win` to link to version 2.3 of NLopt compiled with `--with-cxx` option. This makes the StoGo algorithm available. (31 April 2013 on R-Forge). # nloptr 0.8.9 (18 November 2011) * Changed CRLF and CR line endings in `src/Makevars` to LF line endings to remove a warning from R CMD check. * Adopted some changes proposed by Brian Ripley to `src/Makevars.win` in order for nloptr to work with his new toolchain. # nloptr 0.8.8 (28 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.7 (24 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.6 (19 September 2011) * Updated `src/Makevars` to compile on Solaris. # nloptr 0.8.5 (03 September 2011) * Updated `src/Makevars` to compile a working binary for MacOS. # nloptr 0.8.4 (12 August 2011) * added new options: - data/nloptr.default.options.R: new file with a description of all options, mostly taken from the NLopt website (for internal use). - R/nloptr.print.options.R: function to show the description for a specific (set of) option(s). E.g. `nloptr.print.options(option="maxeval")`. `nloptr.print.options()` shows a description of all options if called without arguments. - added option to print a description of all options and their values (`print_options_doc` = TRUE/FALSE). - added option population to set the population of stochastic/global solvers (`population` = 1000). - added option ranseed which sets the random seed for stochastic solvers (`ranseed` = 3141). A value of 0 uses a random seed generated by system time. - option check_derivatives is no longer listed as a termination condition. - documented the option to set the tolerance of (in)equality constraints (`tol_constraints_eq`, `tol_constraints_ineq`). * `tests/banana_global.R`: new test file that uses the algorithms (CRS, ISRES, MLSL) and options `ranseed` and `population`. * `src/nloptr.c`: capture error codes from setting options. * `R/nloptr.print.R`: output gives 'optimal value of controls' when status = -4 (some error code), this is changed to 'current value of controls'. nloptr/configure.ac0000644000176200001440000000605214765050564014075 0ustar liggesusers## -*- mode: autoconf; autoconf-indentation: 4; -*- ## ## nloptr configure.ac ## ## nloptr -- R interface to NLopt ## ## Copyright (C) 2014-2022 Dirk Eddelbuettel ## ## This file is licensed under the GPL-2 or later just like most of my ## Open Source code, and is granted an exemption (should it be needed) ## for inclusion into nloptr # require at least autoconf 2.61 AC_PREREQ([2.69]) AC_INIT([nloptr],[2.0.0]) ## Set R_HOME, respecting an environment variable if set : ${R_HOME=$(R RHOME)} if test -z "${R_HOME}"; then AC_MSG_ERROR([Could not determine R_HOME.]) fi CXX=`"${R_HOME}/bin/R" CMD config CXX` if test -z "${CXX}"; then AC_MSG_ERROR([No C++ compiler available]) fi CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS` CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS` CXX11FLAGS=`"${R_HOME}/bin/R" CMD config CXX11FLAGS` AC_LANG(C++) AC_REQUIRE_CPP AC_PROG_CXX ## Default to build from source need_to_build="yes" ## But: Can we use pkg-config? AC_PATH_PROG(have_pkg_config, pkg-config, no) ## If yes, also check for whether pkg-config knows nlopt if test x"${have_pkg_config}" != x"no"; then AC_MSG_CHECKING([if pkg-config knows NLopt]) if pkg-config --exists nlopt; then AC_MSG_RESULT([yes]) ## Since nlopt has been found, test for minimal version requirement AC_MSG_CHECKING([for pkg-config checking NLopt version]) if pkg-config --atleast-version=2.7.0 nlopt; then AC_MSG_RESULT([>= 2.7.0]) nlopt_include=$(pkg-config --cflags nlopt) nlopt_libs=$(pkg-config --libs nlopt) ## copy headers to inst/include for reverse LinkingTo dependencies headers_location=$(pkg-config --variable=includedir nlopt) need_to_build="no" else AC_MSG_RESULT([insufficient: NLopt 2.7.0 or later is preferred.]) fi else AC_MSG_RESULT([no]) fi fi ## So do we need to build if test x"${need_to_build}" != x"no"; then AC_PATH_PROG(CMAKE_BIN, cmake, no) if test x"${CMAKE_BIN}" = x"no"; then . tools/cmake_config.sh if test -z "${CMAKE_BIN}"; then ## also error to end configure here AC_MSG_ERROR([Could not find 'cmake'.]) fi fi AC_MSG_RESULT([using cmake via $CMAKE_BIN]) ## 'uname -m' on M1 give x86_64 which is ... not helping machine=`"${R_HOME}/bin/Rscript" -e 'cat(Sys.info()[["machine"]])'` AC_MSG_RESULT([using NLopt via local cmake build on ${machine}]) tools/cmake_call.sh "$CMAKE_BIN" ## cmake_call.sh installs into nlopt/include, nlopt/lib nlopt_include="-Inlopt/include" nlopt_libs="nlopt/lib/libnlopt.a" ## copy headers to inst/include for reverse LinkingTo dependencies headers_location="src/nlopt/include" fi ## does the actual copy of the headers into inst/include AC_MSG_RESULT([Copying headers found in ${headers_location} into inst/include]) cp ${headers_location}/nlopt.* inst/include/ ## Now use all the values AC_SUBST([NLOPT_CPPFLAGS],["$nlopt_include"]) AC_SUBST([NLOPT_LIBS],["$nlopt_libs"]) AC_CONFIG_FILES([src/Makevars]) AC_OUTPUT nloptr/inst/0000755000176200001440000000000014765523731012562 5ustar liggesusersnloptr/inst/include/0000755000176200001440000000000014765523731014205 5ustar liggesusersnloptr/inst/include/nloptrAPI.h0000644000176200001440000004365114765050564016236 0ustar liggesusers/* * Copyright (C) 2017 Jelmer Ypma. All Rights Reserved. * This code is published under the L-GPL. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * File: nloptrAPI.h * Author: Jelmer Ypma * Date: 3 October 2017 * * This file provides an API for calling internal NLopt code from C within * R packages. The C functions that are registered in init_nloptr.c can be * accessed by external R packages. * * 03/10/2017: Initial version exposing nlopt_version. */ #ifndef __NLOPTRAPI_H__ #define __NLOPTRAPI_H__ #include #include #include #include /* * C functions can be exposed using the following template: * * RET_TYPE FUNCNAME(ARGTYPE_1 ARGNAME 1, ARGTYPE_2 ARGNAME_2) * { * static RET_TYPE(*fun)(ARGTYPE_1, ARGTYPE_2) = NULL; * if (fun == NULL) fun = (RET_TYPE(*)(ARGTYPE_1, ARGTYPE_2)) R_GetCCallable("nloptr","FUNCNAME"); * return fun(ARGNAME_1, ARGNAME_2); * } * */ inline NLOPT_EXTERN(const char *) nlopt_algorithm_name(nlopt_algorithm a) { static const char *(*fun)(nlopt_algorithm) = NULL; if (fun == NULL) fun = (const char *(*)(nlopt_algorithm)) R_GetCCallable("nloptr","nlopt_algorithm_name"); return fun(a); } inline NLOPT_EXTERN(void) nlopt_srand(unsigned long seed) { static void(*fun)(unsigned long) = NULL; if (fun == NULL) fun = (void(*)(unsigned long)) R_GetCCallable("nloptr","nlopt_srand"); return fun(seed); } inline NLOPT_EXTERN(void) nlopt_srand_time(void) { static void(*fun)(void) = NULL; if (fun == NULL) fun = (void(*)(void)) R_GetCCallable("nloptr","nlopt_srand_time"); return fun(); } inline NLOPT_EXTERN(void) nlopt_version(int *major, int *minor, int *bugfix) { static void(*fun)(int *, int *, int *) = NULL; if (fun == NULL) fun = (void(*)(int *, int *, int *)) R_GetCCallable("nloptr","nlopt_version"); return fun(major, minor, bugfix); } inline NLOPT_EXTERN(nlopt_opt) nlopt_create(nlopt_algorithm algorithm, unsigned n) { static nlopt_opt(*fun)(nlopt_algorithm, unsigned) = NULL; if (fun == NULL) fun = (nlopt_opt(*)(nlopt_algorithm, unsigned)) R_GetCCallable("nloptr","nlopt_create"); return fun(algorithm, n); } inline NLOPT_EXTERN(void) nlopt_destroy(nlopt_opt opt) { static void(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (void(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_destroy"); return fun(opt); } inline NLOPT_EXTERN(nlopt_opt) nlopt_copy(const nlopt_opt opt) { static nlopt_opt(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_opt(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_copy"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_optimize(nlopt_opt opt, double *x, double *opt_f) { static nlopt_result(*fun)(nlopt_opt, double *, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double *, double *)) R_GetCCallable("nloptr","nlopt_optimize"); return fun(opt, x, opt_f); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_min_objective(nlopt_opt opt, nlopt_func f, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *)) R_GetCCallable("nloptr","nlopt_set_min_objective"); return fun(opt, f, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_max_objective(nlopt_opt opt, nlopt_func f, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *)) R_GetCCallable("nloptr","nlopt_set_max_objective"); return fun(opt, f, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_precond_min_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *)) R_GetCCallable("nloptr","nlopt_set_precond_min_objective"); return fun(opt, f, pre, f_data); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_precond_max_objective(nlopt_opt opt, nlopt_func f, nlopt_precond pre, void *f_data) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *)) R_GetCCallable("nloptr","nlopt_set_precond_max_objective"); return fun(opt, f, pre, f_data); } inline NLOPT_EXTERN(nlopt_algorithm) nlopt_get_algorithm(const nlopt_opt opt) { static nlopt_algorithm(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_algorithm(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_algorithm"); return fun(opt); } inline NLOPT_EXTERN(unsigned) nlopt_get_dimension(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_dimension"); return fun(opt); } /* constraints: */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds(nlopt_opt opt, const double *lb) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_lower_bounds"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_lower_bounds1(nlopt_opt opt, double lb) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_lower_bounds1"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_lower_bounds(const nlopt_opt opt, double *lb) { static nlopt_result(*fun)(const nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_lower_bounds"); return fun(opt, lb); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds(nlopt_opt opt, const double *ub) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_upper_bounds"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_upper_bounds1(nlopt_opt opt, double ub) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_upper_bounds1"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_upper_bounds(const nlopt_opt opt, double *ub) { static nlopt_result(*fun)(const nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_upper_bounds"); return fun(opt, ub); } inline NLOPT_EXTERN(nlopt_result) nlopt_remove_inequality_constraints(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_remove_inequality_constraints"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_constraint(nlopt_opt opt, nlopt_func fc, void *fc_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *, double)) R_GetCCallable("nloptr","nlopt_add_inequality_constraint"); return fun(opt, fc, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_precond_inequality_constraint( nlopt_opt opt, nlopt_func fc, nlopt_precond pre, void *fc_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *, double)) R_GetCCallable("nloptr","nlopt_add_precond_inequality_constraint"); return fun(opt, fc, pre, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_inequality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc fc, void *fc_data, const double *tol) { static nlopt_result(*fun)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *)) R_GetCCallable("nloptr","nlopt_add_inequality_mconstraint"); return fun(opt, m, fc, fc_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_remove_equality_constraints(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_remove_equality_constraints"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_equality_constraint(nlopt_opt opt, nlopt_func h, void *h_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, void *, double)) R_GetCCallable("nloptr","nlopt_add_equality_constraint"); return fun(opt, h, h_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_precond_equality_constraint( nlopt_opt opt, nlopt_func h, nlopt_precond pre, void *h_data, double tol) { static nlopt_result(*fun)(nlopt_opt, nlopt_func, nlopt_precond, void *, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, nlopt_func, nlopt_precond, void *, double)) R_GetCCallable("nloptr","nlopt_add_precond_equality_constraint"); return fun(opt, h, pre, h_data, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_add_equality_mconstraint(nlopt_opt opt, unsigned m, nlopt_mfunc h, void *h_data, const double *tol) { static nlopt_result(*fun)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned, nlopt_mfunc, void *, const double *)) R_GetCCallable("nloptr","nlopt_add_equality_mconstraint"); return fun(opt, m, h, h_data, tol); } /* stopping criteria: */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_stopval(nlopt_opt opt, double stopval) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_stopval"); return fun(opt, stopval); } inline NLOPT_EXTERN(double) nlopt_get_stopval(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_stopval"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_rel(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_ftol_rel"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_ftol_rel(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_ftol_rel"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_ftol_abs(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_ftol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_ftol_abs(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_ftol_abs"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_rel(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_xtol_rel"); return fun(opt, tol); } inline NLOPT_EXTERN(double) nlopt_get_xtol_rel(const nlopt_opt opt) { static double(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_xtol_rel"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs1(nlopt_opt opt, double tol) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_xtol_abs1"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_xtol_abs(nlopt_opt opt, const double *tol) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_xtol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_xtol_abs(const nlopt_opt opt, double *tol) { static nlopt_result(*fun)(nlopt_opt, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double *)) R_GetCCallable("nloptr","nlopt_get_xtol_abs"); return fun(opt, tol); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_maxeval(nlopt_opt opt, int maxeval) { static nlopt_result(*fun)(nlopt_opt, int) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, int)) R_GetCCallable("nloptr","nlopt_set_maxeval"); return fun(opt, maxeval); } inline NLOPT_EXTERN(int) nlopt_get_maxeval(const nlopt_opt opt) { static int(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (int(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_maxeval"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_maxtime(nlopt_opt opt, double maxtime) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_maxtime"); return fun(opt, maxtime); } inline NLOPT_EXTERN(double) nlopt_get_maxtime(const nlopt_opt opt) { static double(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (double(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_maxtime"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_force_stop(nlopt_opt opt) { static nlopt_result(*fun)(nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt)) R_GetCCallable("nloptr","nlopt_force_stop"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_force_stop(nlopt_opt opt, int val) { static nlopt_result(*fun)(nlopt_opt, int) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, int)) R_GetCCallable("nloptr","nlopt_set_force_stop"); return fun(opt, val); } inline NLOPT_EXTERN(int) nlopt_get_force_stop(const nlopt_opt opt) { static int(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (int(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_force_stop"); return fun(opt); } /* more algorithm-specific parameters */ inline NLOPT_EXTERN(nlopt_result) nlopt_set_local_optimizer(nlopt_opt opt, const nlopt_opt local_opt) { static nlopt_result(*fun)(nlopt_opt, const nlopt_opt) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const nlopt_opt)) R_GetCCallable("nloptr","nlopt_set_local_optimizer"); return fun(opt, local_opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_population(nlopt_opt opt, unsigned pop) { static nlopt_result(*fun)(nlopt_opt, unsigned) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned)) R_GetCCallable("nloptr","nlopt_set_population"); return fun(opt, pop); } inline NLOPT_EXTERN(unsigned) nlopt_get_population(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_population"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_vector_storage(nlopt_opt opt, unsigned dim) { static nlopt_result(*fun)(nlopt_opt, unsigned) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, unsigned)) R_GetCCallable("nloptr","nlopt_set_vector_storage"); return fun(opt, dim); } inline NLOPT_EXTERN(unsigned) nlopt_get_vector_storage(const nlopt_opt opt) { static unsigned(*fun)(const nlopt_opt) = NULL; if (fun == NULL) fun = (unsigned(*)(const nlopt_opt)) R_GetCCallable("nloptr","nlopt_get_vector_storage"); return fun(opt); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_default_initial_step(nlopt_opt opt, const double *x) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_default_initial_step"); return fun(opt, x); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step(nlopt_opt opt, const double *dx) { static nlopt_result(*fun)(nlopt_opt, const double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, const double *)) R_GetCCallable("nloptr","nlopt_set_initial_step"); return fun(opt, dx); } inline NLOPT_EXTERN(nlopt_result) nlopt_set_initial_step1(nlopt_opt opt, double dx) { static nlopt_result(*fun)(nlopt_opt, double) = NULL; if (fun == NULL) fun = (nlopt_result(*)(nlopt_opt, double)) R_GetCCallable("nloptr","nlopt_set_initial_step1"); return fun(opt, dx); } inline NLOPT_EXTERN(nlopt_result) nlopt_get_initial_step(const nlopt_opt opt, const double *x, double *dx) { static nlopt_result(*fun)(const nlopt_opt, const double *, double *) = NULL; if (fun == NULL) fun = (nlopt_result(*)(const nlopt_opt, const double *, double *)) R_GetCCallable("nloptr","nlopt_get_initial_step"); return fun(opt, x, dx); } #endif /* __NLOPTRAPI_H__ */ nloptr/inst/CITATION0000644000176200001440000000150414613534413013706 0ustar liggesusersbibentry(bibtype = "Manual", header = paste("If you use NLopt in work that leads to a publication,", "we would appreciate it if you would kindly cite NLopt", "in your manuscript. Please cite both the NLopt library", "and the authors of the specific algorithm(s) that you", "employed in your work. Cite NLopt as:"), author = person(given = "Steven G.", family = "Johnson"), title = "The NLopt nonlinear-optimization package", year = "2008", url = "https://github.com/stevengj/nlopt", footer = paste("The authors and appropriate citations for the specific", "optimization algorithms in NLopt are listed in the", "NLopt Algorithms page.") ) nloptr/inst/doc/0000755000176200001440000000000014765523731013327 5ustar liggesusersnloptr/inst/doc/nloptr.html0000644000176200001440000016336114765523731015545 0ustar liggesusers nloptr

nloptr

Jelmer Ypma, Aymeric Stamm, and Avraham Adler

2025-03-16

This document is an introduction to nloptr: an R interface to NLopt. NLopt is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of knitr (Xie 2014, 2015, 2016). Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged.

Introduction

NLopt addresses general nonlinear optimization problems of the form: \[ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} \]

where \(f(\cdot)\) is the objective function and \(x\) represents the \(n\) optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \(x_L\) and \(x_U\). For partially or totally unconstrained problems the bounds can take values \(-\infty\) or \(\infty\). One may also optionally have \(m\) nonlinear inequality constraints—sometimes called a nonlinear programming problem—which may be specified in \(g(\cdot)\), and equality constraints which may be specified in \(h(\cdot)\). Note that not all of the algorithms in NLopt can handle constraints.

This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the website for information on how to cite NLopt and the algorithms you use.

Installation

This package is on CRAN and can be installed from within R using

install.packages("nloptr")

or

install.packages("nloptr", type = "source")

to install the package from source. You should now be able to load the R interface to NLopt and read the help.

library("nloptr")
?nloptr

The most recent experimental source version of nloptr can be installed from Github using the remotes package:

# install.packages("remotes")
remotes::install_github("astamm/nloptr")

Minimizing the Rosenbrock Banana function

As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: \[ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, \]

which is also used as an example in the documentation for the standard R optimizer optim. The gradient of the objective function is given by: \[ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). \]

Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library.

library(nloptr)

We start by specifying the objective function and its gradient:

## Rosenbrock Banana function
eval_f <- function(x) {
  100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2
}

## Gradient of Rosenbrock Banana function
eval_grad_f <- function(x) {
  c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]),
    200 * (x[2] - x[1] * x[1]))
}

We define initial values

# initial values
x0 <- c(-1.2, 1)

and then minimize the function using the nloptr command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use

opts <- list("algorithm" = "NLOPT_LD_LBFGS",
             "xtol_rel" = 1.0e-8)

Here we use the L-BFGS algorithm (Nocedal 1980; Liu and Nocedal 1989). The characters LD in the algorithm show that this algorithm looks for local minima (L) using a derivative-based (D) algorithm. Other algorithms look for global (G) minima, or they don’t need derivatives (N). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix \ref{sec:descoptions} for a full list of options). We then solve the minimization problem using

# solve Rosenbrock Banana function
res <- nloptr(x0 = x0,
              eval_f = eval_f,
              eval_grad_f = eval_grad_f,
              opts = opts)

We can see the results by printing the resulting object.

print(res)
## 
## Call:
## 
## nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts)
## 
## 
## 
## Minimization using NLopt version 2.10.0 
## 
## NLopt solver status: 1 ( NLOPT_SUCCESS: Generic success 
## return value. )
## 
## Number of Iterations....: 56 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  0 
## Number of equality constraints:    0 
## Optimal value of objective function:  7.35727226897802e-23 
## Optimal value of controls: 1 1

Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance:

## Rosenbrock Banana function and gradient in one function
eval_f_list <- function(x) {
  common_term <- x[2] - x[1] * x[1]
  list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2,
       "gradient"  = c(-400 * x[1] * common_term - 2 * (1 - x[1]),
                       200 * common_term))
}

which we minimize using

res <- nloptr(x0 = x0,
              eval_f = eval_f_list,
              opts = opts)
print(res)
## 
## Call:
## nloptr(x0 = x0, eval_f = eval_f_list, opts = opts)
## 
## 
## Minimization using NLopt version 2.10.0 
## 
## NLopt solver status: 1 ( NLOPT_SUCCESS: Generic success 
## return value. )
## 
## Number of Iterations....: 56 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  0 
## Number of equality constraints:    0 
## Optimal value of objective function:  7.35727226897802e-23 
## Optimal value of controls: 1 1

This gives the same results as before.

Minimization with inequality constraints

This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is:

\[ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} \]

where \(a_1 = 2\), \(b_1 = 0\), \(a_2 = -1\), and \(b_2 = 1\). In order to solve this problem, we first have to re-formulate the constraints to be of the form \(g(x) \leq 0\). Note that the first constraint is a bound on \(x_2\), which we will add later. The other two constraints can be re-written as:

\[ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} \]

First, define R functions to calculate the objective function and its gradient:

# objective function
eval_f0 <- function(x, a, b) {
  sqrt(x[2])
}

# gradient of objective function
eval_grad_f0 <- function(x, a, b) {
  c(0, 0.5 / sqrt(x[2]))
}

If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints:

# constraint function
eval_g0 <- function(x, a, b) {
  (a * x[1] + b) ^ 3 - x[2]
}

# Jacobian of constraint
eval_jac_g0 <- function(x, a, b) {
  rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0),
        c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0))
}

Note that all of the functions above depend on additional parameters, a and b. We have to supply specific values for these when we invoke the optimization command. The constraint function eval_g0 returns a vector with in this case the same length as the vectors a and b. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well).

After defining values for the parameters

# define parameters
a <- c(2, -1)
b <- c(0, 1)

we can minimize the function subject to the constraints with the following command:

# Solve using NLOPT_LD_MMA with gradient information supplied in separate
# function
res0 <- nloptr(x0 = c(1.234, 5.678),
               eval_f = eval_f0,
               eval_grad_f = eval_grad_f0,
               lb = c(-Inf, 0),
               ub = c(Inf, Inf),
               eval_g_ineq = eval_g0,
               eval_jac_g_ineq = eval_jac_g0,
               opts = list("algorithm" = "NLOPT_LD_MMA",
                           "xtol_rel" = 1.0e-8,
                           "print_level" = 2,
                           "check_derivatives" = TRUE,
                           "check_derivatives_print" = "all"),
               a = a,
               b = b)
## Checking gradients of objective function.
## Derivative checker results: 0 error(s) detected.
## 
##   eval_grad_f[1] = 0.000000e+00 ~ 0.000000e+00   [0.000000e+00]
##   eval_grad_f[2] = 2.098323e-01 ~ 2.098323e-01   [1.422937e-09]
## Checking gradients of inequality constraints.
## Derivative checker results: 0 error(s) detected.
## 
##   eval_jac_g_ineq[1, 1] =  3.654614e+01 ~  3.654614e+01   [1.667794e-08]
##   eval_jac_g_ineq[2, 1] = -1.642680e-01 ~ -1.642680e-01   [2.103453e-07]
##   eval_jac_g_ineq[1, 2] = -1.000000e+00 ~ -1.000000e+00   [0.000000e+00]
##   eval_jac_g_ineq[2, 2] = -1.000000e+00 ~ -1.000000e+00   [0.000000e+00]
## iteration: 1
##  f(x) = 2.382855
##  g(x) = (9.354647, -5.690813)
## iteration: 2
##  f(x) = 2.356135
##  g(x) = (-0.122988, -5.549587)
## iteration: 3
##  f(x) = 2.245864
##  g(x) = (-0.531886, -5.038655)
## iteration: 4
##  f(x) = 2.019102
##  g(x) = (-3.225103, -3.931195)
## iteration: 5
##  f(x) = 1.740934
##  g(x) = (-2.676263, -2.761136)
## iteration: 6
##  f(x) = 1.404206
##  g(x) = (-1.674055, -1.676216)
## iteration: 7
##  f(x) = 1.022295
##  g(x) = (-0.748790, -0.748792)
## iteration: 8
##  f(x) = 0.685203
##  g(x) = (-0.173206, -0.173207)
## iteration: 9
##  f(x) = 0.552985
##  g(x) = (-0.009496, -0.009496)
## iteration: 10
##  f(x) = 0.544354
##  g(x) = (-0.000025, -0.000025)
## iteration: 11
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 12
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 13
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 14
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 15
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 16
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 17
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 18
##  f(x) = 0.544331
##  g(x) = (-0.000000, 0.000000)
## iteration: 19
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
## iteration: 20
##  f(x) = 0.544331
##  g(x) = (-0.000000, -0.000000)
## iteration: 21
##  f(x) = 0.544331
##  g(x) = (0.000000, 0.000000)
print(res0)
## 
## Call:
## 
## nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, 
##     lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, 
##     eval_jac_g_ineq = eval_jac_g0, opts = list(algorithm = "NLOPT_LD_MMA", 
##         xtol_rel = 1e-08, print_level = 2, check_derivatives = TRUE, 
##         check_derivatives_print = "all"), a = a, b = b)
## 
## 
## Minimization using NLopt version 2.10.0 
## 
## NLopt solver status: 4 ( NLOPT_XTOL_REACHED: Optimization 
## stopped because xtol_rel or xtol_abs (above) was reached. 
## )
## 
## Number of Iterations....: 21 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  2 
## Number of equality constraints:    0 
## Optimal value of objective function:  0.54433104762009 
## Optimal value of controls: 0.3333333 0.2962963

Here we supplied lower bounds for \(x_2\) in lb. There are no upper bounds for both control variables, so we supply Inf values. If we don’t supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using eval_g_ineq and eval_jac_g_ineq. Not all algorithms can handle inequality constraints, so we have to specify one that does, NLOPT_LD_MMA (Svanberg 2002).

We also specify the option print_level to obtain output during the optimization process. For the available print_level values, see ?nloptr. Setting the check_derivatives option to TRUE, compares the gradients supplied by the user with a finite difference approximation in the initial point (x0). When this check is run, the option check_derivatives_print can be used to print all values of the derivative checker (all (default)), only those values that result in an error (errors) or no output (none), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option check_derivatives_tol (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance.

Finally, we add all the parameters that have to be passed on to the objective and constraint functions, a and b.

We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case NLOPT_LN_COBYLA, which is an algorithm that doesn’t need gradient information (Powell 1994, 1998).

# Solve using NLOPT_LN_COBYLA without gradient information
res1 <- nloptr(x0 = c(1.234, 5.678),
               eval_f = eval_f0,
               lb = c(-Inf, 0),
               ub = c(Inf, Inf),
               eval_g_ineq = eval_g0,
               opts = list("algorithm" = "NLOPT_LN_COBYLA",
                           "xtol_rel" = 1.0e-8),
               a = a,
               b = b)
print(res1)
## 
## Call:
## 
## nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), 
##     ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list(algorithm = "NLOPT_LN_COBYLA", 
##         xtol_rel = 1e-08), a = a, b = b)
## 
## 
## Minimization using NLopt version 2.10.0 
## 
## NLopt solver status: 4 ( NLOPT_XTOL_REACHED: Optimization 
## stopped because xtol_rel or xtol_abs (above) was reached. 
## )
## 
## Number of Iterations....: 50 
## Termination conditions:  xtol_rel: 1e-08 
## Number of inequality constraints:  2 
## Number of equality constraints:    0 
## Optimal value of objective function:  0.544331053951819 
## Optimal value of controls: 0.3333333 0.2962963

Derivative checker

The derivative checker can be called when supplying a minimization problem to nloptr, using the options check_derivatives, check_derivatives_tol and check_derivatives_print, but it can also be used separately. For example, define the function g, with vector outcome, and its gradient g_grad:

g <- function(x, a) {
  c(x[1] - a[1],
    x[2] - a[2],
    (x[1] - a[1]) ^ 2,
    (x[2] - a[2]) ^ 2,
    (x[1] - a[1]) ^ 3,
    (x[2] - a[2]) ^ 3)
}

g_grad <- function(x, a) {
  rbind(
    c(1, 0),
    c(0, 1),
    c(2 * (x[1] - a[1]), 0),
    c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])),
    c(3 * (x[1] - a[2]) ^ 2, 0),
    c(0, 3 * (x[2] - a[2]) ^ 2)
  )
}

a is some vector containing data. The gradient contains some errors in this case. By calling the function check.derivatives we can check the user-supplied analytic gradients with a finite difference approximation at a point .x.

res <- check.derivatives(
  .x = c(1, 2),
  func = g,
  func_grad = g_grad,
  check_derivatives_print = "all",
  a = c(0.3, 0.8)
)
## Derivative checker results: 2 error(s) detected.
## 
##   grad_f[1, 1] = 1.00e+00 ~ 1.00e+00   [0.000000e+00]
##   grad_f[2, 1] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[3, 1] = 1.40e+00 ~ 1.40e+00   [9.579318e-09]
## * grad_f[4, 1] = 1.40e+00 ~ 0.00e+00   [1.400000e+00]
## * grad_f[5, 1] = 1.20e-01 ~ 1.47e+00   [9.183673e-01]
##   grad_f[6, 1] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[1, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[2, 2] = 1.00e+00 ~ 1.00e+00   [0.000000e+00]
##   grad_f[3, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[4, 2] = 2.40e+00 ~ 2.40e+00   [1.179675e-08]
##   grad_f[5, 2] = 0.00e+00 ~ 0.00e+00   [0.000000e+00]
##   grad_f[6, 2] = 4.32e+00 ~ 4.32e+00   [2.593906e-08]

The errors are shown on screen, where the option check_derivatives_print determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list.

res
## $analytic
##      [,1] [,2]
## [1,] 1.00 0.00
## [2,] 0.00 1.00
## [3,] 1.40 0.00
## [4,] 1.40 2.40
## [5,] 0.12 0.00
## [6,] 0.00 4.32
## 
## $finite_difference
##      [,1] [,2]
## [1,] 1.00 0.00
## [2,] 0.00 1.00
## [3,] 1.40 0.00
## [4,] 0.00 2.40
## [5,] 1.47 0.00
## [6,] 0.00 4.32
## 
## $relative_error
##              [,1]         [,2]
## [1,] 0.000000e+00 0.000000e+00
## [2,] 0.000000e+00 0.000000e+00
## [3,] 9.579318e-09 0.000000e+00
## [4,] 1.400000e+00 1.179675e-08
## [5,] 9.183673e-01 0.000000e+00
## [6,] 0.000000e+00 2.593906e-08
## 
## $flag_derivative_warning
##       [,1]  [,2]
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,]  TRUE FALSE
## [5,]  TRUE FALSE
## [6,] FALSE FALSE

Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with a = c(.5, .5), one of the errors is not flagged as an error.

Notes

The .R scripts in the tests directory contain more examples. For instance, hs071.R and systemofeq.R show how to solve problems with equality constraints. See the NLopt website for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in nloptr.

Sometimes the optimization procedure terminates with a message maxtime was reached without evaluating the objective function. Submitting the same problem again usually solves this problem.

Description of options

nloptr::nloptr.print.options()
## algorithm
##  possible values: NLOPT_GN_DIRECT, NLOPT_GN_DIRECT_L,
##           NLOPT_GN_DIRECT_L_RAND, NLOPT_GN_DIRECT_NOSCAL,
##           NLOPT_GN_DIRECT_L_NOSCAL,
##           NLOPT_GN_DIRECT_L_RAND_NOSCAL,
##           NLOPT_GN_ORIG_DIRECT, NLOPT_GN_ORIG_DIRECT_L,
##           NLOPT_GD_STOGO, NLOPT_GD_STOGO_RAND,
##           NLOPT_LD_SLSQP, NLOPT_LD_LBFGS, NLOPT_LN_PRAXIS,
##           NLOPT_LD_VAR1, NLOPT_LD_VAR2, NLOPT_LD_TNEWTON,
##           NLOPT_LD_TNEWTON_RESTART,
##           NLOPT_LD_TNEWTON_PRECOND,
##           NLOPT_LD_TNEWTON_PRECOND_RESTART,
##           NLOPT_GN_CRS2_LM, NLOPT_GN_MLSL, NLOPT_GD_MLSL,
##           NLOPT_GN_MLSL_LDS, NLOPT_GD_MLSL_LDS,
##           NLOPT_LD_MMA, NLOPT_LD_CCSAQ, NLOPT_LN_COBYLA,
##           NLOPT_LN_NEWUOA, NLOPT_LN_NEWUOA_BOUND,
##           NLOPT_LN_NELDERMEAD, NLOPT_LN_SBPLX,
##           NLOPT_LN_AUGLAG, NLOPT_LD_AUGLAG,
##           NLOPT_LN_AUGLAG_EQ, NLOPT_LD_AUGLAG_EQ,
##           NLOPT_LN_BOBYQA, NLOPT_GN_ISRES
##  default value:   none
## 
##  This option is required. Check the NLopt website for a description of
##  the algorithms.
## 
## stopval
##  possible values: -Inf <= stopval <= Inf
##  default value:   -Inf
## 
##  Stop minimization when an objective value <= stopval is found.
##  Setting stopval to -Inf disables this stopping criterion (default).
## 
## ftol_rel
##  possible values: ftol_rel > 0
##  default value:   0.0
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes the objective function value by less than ftol_rel multiplied
##  by the absolute value of the function value. If there is any chance
##  that your optimum function value is close to zero, you might want to
##  set an absolute tolerance with ftol_abs as well. Criterion is
##  disabled if ftol_rel is non-positive (default).
## 
## ftol_abs
##  possible values: ftol_abs > 0
##  default value:   0.0
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes the function value by less than ftol_abs. Criterion is
##  disabled if ftol_abs is non-positive (default).
## 
## xtol_rel
##  possible values: xtol_rel > 0
##  default value:   1.0e-04
## 
##  Stop when an optimization step (or an estimate of the optimum)
##  changes every parameter by less than xtol_rel multiplied by the
##  absolute value of the parameter. If there is any chance that an
##  optimal parameter is close to zero, you might want to set an absolute
##  tolerance with xtol_abs as well. Criterion is disabled if xtol_rel is
##  non-positive.
## 
## xtol_abs
##  possible values: xtol_abs > 0
##  default value:   rep(0.0, length(x0))
## 
##  xtol_abs is a vector of length n (the number of elements in x) giving
##  the tolerances: stop when an optimization step (or an estimate of the
##  optimum) changes every parameter x[i] by less than xtol_abs[i].
##  Criterion is disabled if all elements of xtol_abs are non-positive
##  (default).
## 
## maxeval
##  possible values: maxeval is a positive integer
##  default value:   100
## 
##  Stop when the number of function evaluations exceeds maxeval. This is
##  not a strict maximum: the number of function evaluations may exceed
##  maxeval slightly, depending upon the algorithm. Criterion is disabled
##  if maxeval is non-positive.
## 
## maxtime
##  possible values: maxtime > 0
##  default value:   -1.0
## 
##  Stop when the optimization time (in seconds) exceeds maxtime. This is
##  not a strict maximum: the time may exceed maxtime slightly, depending
##  upon the algorithm and on how slow your function evaluation is.
##  Criterion is disabled if maxtime is non-positive (default).
## 
## tol_constraints_ineq
##  possible values: tol_constraints_ineq > 0.0
##  default value:   rep(1e-8, num_constraints_ineq)
## 
##  The parameter tol_constraints_ineq is a vector of tolerances. Each
##  tolerance corresponds to one of the inequality constraints. The
##  tolerance is used for the purpose of stopping criteria only: a point
##  x is considered feasible for judging whether to stop the optimization
##  if eval_g_ineq(x) <= tol. A tolerance of zero means that NLopt will
##  try not to consider any x to be converged unless eval_g_ineq(x) is
##  strictly non-positive; generally, at least a small positive tolerance
##  is advisable to reduce sensitivity to rounding errors. By default the
##  tolerances for all inequality constraints are set to 1e-8.
## 
## tol_constraints_eq
##  possible values: tol_constraints_eq > 0.0
##  default value:   rep(1e-8, num_constraints_eq)
## 
##  The parameter tol_constraints_eq is a vector of tolerances. Each
##  tolerance corresponds to one of the equality constraints. The
##  tolerance is used for the purpose of stopping criteria only: a point
##  x is considered feasible for judging whether to stop the optimization
##  if abs(eval_g_ineq(x)) <= tol. For equality constraints, a small
##  positive tolerance is strongly advised in order to allow NLopt to
##  converge even if the equality constraint is slightly nonzero. By
##  default the tolerances for all quality constraints are set to 1e-8.
## 
## print_level
##  possible values: 0, 1, 2, or 3
##  default value:   0
## 
##  The option print_level controls how much output is shown during the
##  optimization process. Possible values: 0 (default): no output; 1:
##  show iteration number and value of objective function; 2: 1 + show
##  value of (in)equalities; 3: 2 + show value of controls.
## 
## check_derivatives
##  possible values: TRUE or FALSE
##  default value:   FALSE
## 
##  The option check_derivatives can be activated to compare the
##  user-supplied analytic gradients with finite difference
##  approximations.
## 
## check_derivatives_tol
##  possible values: check_derivatives_tol > 0.0
##  default value:   1e-04
## 
##  The option check_derivatives_tol determines when a difference between
##  an analytic gradient and its finite difference approximation is
##  flagged as an error.
## 
## check_derivatives_print
##  possible values: 'none', 'all', 'errors',
##  default value:   all
## 
##  The option check_derivatives_print controls the output of the
##  derivative checker (if check_derivatives == TRUE). All comparisons
##  are shown ('all'), only those comparisions that resulted in an error
##  ('error'), or only the number of errors is shown ('none').
## 
## print_options_doc
##  possible values: TRUE or FALSE
##  default value:   FALSE
## 
##  If TRUE, a description of all options and their current and default
##  values is printed to the screen.
## 
## population
##  possible values: population is a positive integer
##  default value:   0
## 
##  Several of the stochastic search algorithms (e.g., CRS, MLSL, and
##  ISRES) start by generating some initial population of random points
##  x. By default, this initial population size is chosen heuristically
##  in some algorithm-specific way, but the initial population can by
##  changed by setting a positive integer value for population. A
##  population of zero implies that the heuristic default will be used.
## 
## vector_storage
##  possible values: vector_storage is a positive integer
##  default value:   20
## 
##  Number of gradients to remember from previous optimization steps.
## 
## ranseed
##  possible values: ranseed is a positive integer
##  default value:   0
## 
##  For stochastic optimization algorithms, pseudorandom numbers are
##  generated. Set the random seed using ranseed if you want to use a
##  'deterministic' sequence of pseudorandom numbers, i.e. the same
##  sequence from run to run. If ranseed is 0 (default), the seed for the
##  random numbers is generated from the system time, so that you will
##  get a different sequence of pseudorandom numbers each time you run
##  your program.

References

Johnson, Steven G. n.d. “The NLopt Nonlinear-Optimization Package.” https://nlopt.readthedocs.io/en/latest/.
Liu, D. C., and J. Nocedal. 1989. “On the Limited Memory BFGS Method for Large Scale Optimization.” Math. Programming 45: 503–28.
Nocedal, J. 1980. “Updating Quasi-Newton Matrices with Limited Storage.” Math. Comput. 35: 773–82.
Powell, M. J. D. 1994. “A Direct Search Optimization Method That Models the Objective and Constraint Functions by Linear Interpolation.” In Advances in Optimization and Numerical Analysis, edited by S. Gomez and J.-P. Hennart, 51–67. Kluwer Academic, Dordrecht.
———. 1998. “Direct Search Algorithms for Optimization Calculations.” Acta Numerica 7: 287–336.
Svanberg, Krister. 2002. “A Class of Globally Convergent Optimization Methods Based on Conservative Convex Separable Approximations.” SIAM J. Optim. 12 (2): 555–73.
Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. https://www.routledge.com/Implementing-Reproducible-Research/Stodden-Leisch-Peng/p/book/9781466561595.
———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.
———. 2016. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
nloptr/inst/doc/nloptr.Rmd0000644000176200001440000003406314613776363015322 0ustar liggesusers--- title: "nloptr" author: "Jelmer Ypma, Aymeric Stamm, and Avraham Adler" date: "`r Sys.Date()`" output: rmarkdown::html_vignette bibliography: reflist.bib nocite: | @NLopt:website vignette: > %\VignetteIndexEntry{nloptr} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setSweaveOptions,echo=FALSE} # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ``` This document is an introduction to `nloptr`: an R interface to NLopt. [NLopt](https://nlopt.readthedocs.io/en/latest/) is a free/open-source library for nonlinear optimization, started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of `knitr` [@Xie:2014; @Xie:2015; @Xie:2016]. Financial support of the UK Economic and Social Research Council through a grant (RES-589-28-0001) to the ESRC Centre for Microdata Methods and Practice (CeMMAP) is gratefully acknowledged. ## Introduction NLopt addresses general nonlinear optimization problems of the form: $$ \begin{aligned} &\min_{x \in R^n} f(x) \\ s.t.& g(x) \leq 0 \\ & h(x) = 0 \\ & x_L \leq x \leq x_U \end{aligned} $$ where $f(\cdot)$ is the objective function and $x$ represents the $n$ optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), $x_L$ and $x_U$. For partially or totally unconstrained problems the bounds can take values $-\infty$ or $\infty$. One may also optionally have $m$ nonlinear inequality constraints---sometimes called a nonlinear programming problem---which may be specified in $g(\cdot)$, and equality constraints which may be specified in $h(\cdot)$. Note that not all of the algorithms in NLopt can handle constraints. This vignette describes how to formulate minimization problems to be solved with the R interface to NLopt. If you want to use the C interface directly or are interested in the Matlab interface, there are other sources of documentation available. Some of the information here has been taken from the NLopt website, where more details are available. All credit for implementing the C code for the different algorithms available in NLopt should go to the respective authors. Also, please see the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation This package is on CRAN and can be installed from within R using ```{r installNLopt, eval=FALSE} install.packages("nloptr") ``` or ```{r installNLoptSource, eval=FALSE} install.packages("nloptr", type = "source") ``` to install the package from source. You should now be able to load the R interface to NLopt and read the help. ```{r testNLoptInstallation, eval=FALSE} library("nloptr") ?nloptr ``` The most recent experimental *source* version of `nloptr` can be installed from Github using the `remotes` package: ```{r installNLoptGithub, eval=FALSE} # install.packages("remotes") remotes::install_github("astamm/nloptr") ``` ## Minimizing the Rosenbrock Banana function As a first example we will solve an unconstrained minimization problem. The function we look at is the Rosenbrock Banana function: $$ f(x) = 100 \left(x_2-x_1^2\right)^2 + \left(1-x_1\right)^2, $$ which is also used as an example in the documentation for the standard R optimizer `optim`. The gradient of the objective function is given by: $$ \nabla f(x) = \left(\begin{array}[1]{c} -400 \cdot x_1 \cdot (x_2 - x_1^2) - 2 \cdot (1 - x_1) \\ 200 \cdot (x_2 - x_1^2) \end{array} \right). $$ Not all of the algorithms in NLopt need gradients to be supplied by the user. We will show examples with and without supplying the gradient. After loading the library. ```{r loadLibrary} library(nloptr) ``` We start by specifying the objective function and its gradient: ```{r defineRosenbrockBanana} ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ``` We define initial values ```{r setRosenbrockBananaInitialValues} # initial values x0 <- c(-1.2, 1) ``` and then minimize the function using the `nloptr` command. This command runs some checks on the supplied inputs and returns an object with the exit code of the solver, the optimal value of the objective function and the solution. Before we can minimize the function we need to specify which algorithm we want to use ```{r setRosenbrockBananaOptions} opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ``` Here we use the L-BFGS algorithm [@Nocedal:1980; @LiuNocedal:1989]. The characters `LD` in the algorithm show that this algorithm looks for local minima (`L`) using a derivative-based (`D`) algorithm. Other algorithms look for global (`G`) minima, or they don't need derivatives (`N`). We also specified the termination criterium in terms of the relative x-tolerance. Other termination criteria are available (see Appendix `\ref{sec:descoptions}` for a full list of options). We then solve the minimization problem using ```{r solveRosenbrockBanana} # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ``` We can see the results by printing the resulting object. ```{r printRosenbrockBanana} print(res) ``` Sometimes the objective function and its gradient contain common terms. To economize on calculations, we can return the objective and its gradient in a list. For the Rosenbrock Banana function we have for instance: ```{r defineRosenbrockBananaList} ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ``` which we minimize using ```{r solveRosenbrockBananaList} res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ``` This gives the same results as before. ## Minimization with inequality constraints This section shows how to minimize a function subject to inequality constraints. This example is the same as the one used in the tutorial on the NLopt website. The problem we want to solve is: $$ \begin{aligned} &\min_{x \in R^n} \sqrt{x_2} \\ s.t.& x_2 \geq 0 \\ & x_2 \geq (a_1 x_1 + b_1)^3 \\ & x_2 \geq (a_2 x_1 + b_2)^3, \end{aligned} $$ where $a_1 = 2$, $b_1 = 0$, $a_2 = -1$, and $b_2 = 1$. In order to solve this problem, we first have to re-formulate the constraints to be of the form $g(x) \leq 0$. Note that the first constraint is a bound on $x_2$, which we will add later. The other two constraints can be re-written as: $$ \begin{aligned} (a_1 x_1 + b_1)^3 - x_2 &\leq 0 \\ (a_2 x_1 + b_2)^3 - x_2 &\leq 0 \end{aligned} $$ First, define R functions to calculate the objective function and its gradient: ```{r defineTutorialObjective} # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ``` If needed, these can of course be calculated in the same function as before. Then define the two constraints and the Jacobian of the constraints: ```{r defineTutorialConstraints} # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ``` Note that all of the functions above depend on additional parameters, `a` and `b`. We have to supply specific values for these when we invoke the optimization command. The constraint function `eval_g0` returns a vector with in this case the same length as the vectors `a` and `b`. The function calculating the Jacobian of the constraint should return a matrix where the number of rows equal the number of constraints (in this case two). The number of columns should equal the number of control variables (two in this case as well). After defining values for the parameters ```{r defineTutorialParameters} # define parameters a <- c(2, -1) b <- c(0, 1) ``` we can minimize the function subject to the constraints with the following command: ```{r solveTutorialWithGradient} # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ``` Here we supplied lower bounds for $x_2$ in `lb`. There are no upper bounds for both control variables, so we supply `Inf` values. If we don't supply lower or upper bounds, plus or minus infinity is chosen by default. The inequality constraints and its Jacobian are defined using `eval_g_ineq` and `eval_jac_g_ineq`. Not all algorithms can handle inequality constraints, so we have to specify one that does, `NLOPT_LD_MMA` [@Svanberg:2002]. We also specify the option `print_level` to obtain output during the optimization process. For the available `print_level` values, see `?nloptr`. Setting the `check_derivatives` option to `TRUE`, compares the gradients supplied by the user with a finite difference approximation in the initial point (`x0`). When this check is run, the option `check_derivatives_print` can be used to print all values of the derivative checker (`all` (default)), only those values that result in an error (`errors`) or no output (`none`), in which case only the number of errors is shown. The tolerance that determines if a difference between the analytic gradient and the finite difference approximation results in an error can be set using the option `check_derivatives_tol` (default = 1e-04). The first column shows the value of the analytic gradient, the second column shows the value of the finite difference approximation, and the third column shows the relative error. Stars are added at the front of a line if the relative error is larger than the specified tolerance. Finally, we add all the parameters that have to be passed on to the objective and constraint functions, `a` and `b`. We can also use a different algorithm to solve the same minimization problem. The only thing we have to change is the algorithm that we want to use, in this case `NLOPT_LN_COBYLA`, which is an algorithm that doesn't need gradient information [@Powell:1994; @Powell:1998]. ```{r solveTutorialWithoutGradient} # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ``` ## Derivative checker The derivative checker can be called when supplying a minimization problem to `nloptr`, using the options `check_derivatives`, `check_derivatives_tol` and `check_derivatives_print`, but it can also be used separately. For example, define the function `g`, with vector outcome, and its gradient `g_grad`: ```{r derivativeCheckerDefineFunctions} g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ``` `a` is some vector containing data. The gradient contains some errors in this case. By calling the function `check.derivatives` we can check the user-supplied analytic gradients with a finite difference approximation at a point `.x`. ```{r derivativeCheckerPrint} res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ``` The errors are shown on screen, where the option `check_derivatives_print` determines the amount of output you see. The value of the analytic gradient and the value of the finite difference approximation at the supplied point is returned in a list. ```{r derivativeCheckerResult} res ``` Note that not all errors will be picked up by the derivative checker. For instance, if we run the check with `a = c(.5, .5)`, one of the errors is not flagged as an error. ## Notes The `.R` scripts in the `tests` directory contain more examples. For instance, `hs071.R` and `systemofeq.R` show how to solve problems with equality constraints. See the [NLopt website](https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#augmented-lagrangian-algorithm) for more details. Please let us know if there are any of features implemented in NLopt which should be implemented in `nloptr`. Sometimes the optimization procedure terminates with a message `maxtime was reached` without evaluating the objective function. Submitting the same problem again usually solves this problem. ## Description of options ```{r printAllOptions} nloptr::nloptr.print.options() ``` ## References nloptr/inst/doc/nloptr.R0000644000176200001440000001132414765523730014770 0ustar liggesusers## ----setSweaveOptions,echo=FALSE-------------------------- # have an (invisible) initialization noweb chunk # to remove the default continuation prompt ">" options(continue = " ") options(width = 60) # eliminate margin space above plots options(SweaveHooks = list(fig = function() par(mar = c(5.1, 4.1, 1.1, 2.1)))) ## ----installNLopt, eval=FALSE----------------------------- # install.packages("nloptr") ## ----installNLoptSource, eval=FALSE----------------------- # install.packages("nloptr", type = "source") ## ----testNLoptInstallation, eval=FALSE-------------------- # library("nloptr") # ?nloptr ## ----installNLoptGithub, eval=FALSE----------------------- # # install.packages("remotes") # remotes::install_github("astamm/nloptr") ## ----loadLibrary------------------------------------------ library(nloptr) ## ----defineRosenbrockBanana------------------------------- ## Rosenbrock Banana function eval_f <- function(x) { 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2 } ## Gradient of Rosenbrock Banana function eval_grad_f <- function(x) { c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])) } ## ----setRosenbrockBananaInitialValues--------------------- # initial values x0 <- c(-1.2, 1) ## ----setRosenbrockBananaOptions--------------------------- opts <- list("algorithm" = "NLOPT_LD_LBFGS", "xtol_rel" = 1.0e-8) ## ----solveRosenbrockBanana-------------------------------- # solve Rosenbrock Banana function res <- nloptr(x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts) ## ----printRosenbrockBanana-------------------------------- print(res) ## ----defineRosenbrockBananaList--------------------------- ## Rosenbrock Banana function and gradient in one function eval_f_list <- function(x) { common_term <- x[2] - x[1] * x[1] list("objective" = 100 * common_term ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * common_term - 2 * (1 - x[1]), 200 * common_term)) } ## ----solveRosenbrockBananaList---------------------------- res <- nloptr(x0 = x0, eval_f = eval_f_list, opts = opts) print(res) ## ----defineTutorialObjective------------------------------ # objective function eval_f0 <- function(x, a, b) { sqrt(x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { c(0, 0.5 / sqrt(x[2])) } ## ----defineTutorialConstraints---------------------------- # constraint function eval_g0 <- function(x, a, b) { (a * x[1] + b) ^ 3 - x[2] } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1.0), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1.0)) } ## ----defineTutorialParameters----------------------------- # define parameters a <- c(2, -1) b <- c(0, 1) ## ----solveTutorialWithGradient---------------------------- # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function res0 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-8, "print_level" = 2, "check_derivatives" = TRUE, "check_derivatives_print" = "all"), a = a, b = b) print(res0) ## ----solveTutorialWithoutGradient------------------------- # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8), a = a, b = b) print(res1) ## ----derivativeCheckerDefineFunctions--------------------- g <- function(x, a) { c(x[1] - a[1], x[2] - a[2], (x[1] - a[1]) ^ 2, (x[2] - a[2]) ^ 2, (x[1] - a[1]) ^ 3, (x[2] - a[2]) ^ 3) } g_grad <- function(x, a) { rbind( c(1, 0), c(0, 1), c(2 * (x[1] - a[1]), 0), c(2 * (x[1] - a[1]), 2 * (x[2] - a[2])), c(3 * (x[1] - a[2]) ^ 2, 0), c(0, 3 * (x[2] - a[2]) ^ 2) ) } ## ----derivativeCheckerPrint------------------------------- res <- check.derivatives( .x = c(1, 2), func = g, func_grad = g_grad, check_derivatives_print = "all", a = c(0.3, 0.8) ) ## ----derivativeCheckerResult------------------------------ res ## ----printAllOptions-------------------------------------- nloptr::nloptr.print.options() nloptr/inst/tinytest/0000755000176200001440000000000014765064402014440 5ustar liggesusersnloptr/inst/tinytest/test-wrapper-auglag.R0000644000176200001440000002013414633255630020455 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-auglag # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to auglag algorithm # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0 <- c(1, 1) fn <- function(x) (x[1L] - 2) ^ 2 + (x[2L] - 1) ^ 2 hin <- function(x) 0.25 * x[1L] ^ 2 + x[2L] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1L] - 2 * x[2L] + 1 # heq = 0 gr <- function(x) nl.grad(x, fn) hinjac <- function(x) nl.jacobian(x, hin) heqjac <- function(x) nl.jacobian(x, heq) hin2 <- function(x) -hin(x) # Needed to test old behavior hinjac2 <- function(x) nl.jacobian(x, hin2) # Needed to test old behavior # Test silence on proper behavior expect_silent(auglag(x0, fn)) expect_silent(auglag(x0, fn, hin = hin, deprecatedBehavior = FALSE)) # Test errors expect_error(auglag(x0, fn, ineq2local = TRUE), "Inequalities to local solver: feature not yet implemented.") expect_error(auglag(x0, fn, localsolver = "NLOPT_LN_NELDERMEAD"), "Only local solvers allowed: BOBYQA, COBYLA, LBFGS, MMA, SLSQP.") # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(auglag(x0, fn, nl.info = TRUE), "Call:", fixed = TRUE) # Test COBYLA version augTest <- auglag(x0, fn, hin = hin, heq = heq, deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_g_ineq = hin, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LN_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list( algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6 ))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test BOBYQA version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "BOBYQA", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_g_ineq = hin, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LN_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list( algorithm = "NLOPT_LN_BOBYQA", xtol_rel = 1e-6 ))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test SLSQP version # No passed hin/heq Jacobian augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "SLSQP", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_SLSQP", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Passed hin/heq Jacobian augTest <- auglag(x0, fn, hin = hin, heq = heq, hinjac = hinjac, heqjac = heqjac, localsolver = "SLSQP", deprecatedBehavior = FALSE) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test LBFGS version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "LBFGS", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_LBFGS", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test MMA version augTest <- auglag(x0, fn, hin = hin, heq = heq, localsolver = "MMA", deprecatedBehavior = FALSE) augControl <- nloptr(x0 = x0, eval_f = fn, eval_grad_f = gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-6, maxeval = 1000L, local_opts = list(algorithm = "NLOPT_LD_MMA", eval_grad_f = gr, xtol_rel = 1e-6))) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) # Test deprecated message expect_warning(auglag(x0, fn, hin = hin2), depMess) # Test old behavior still works augTest <- suppressWarnings(auglag(x0, fn, hin = hin2, hinjac = hinjac2, heq = heq, localsolver = "MMA")) expect_identical(augTest$par, augControl$solution) expect_identical(augTest$value, augControl$objective) expect_identical(augTest$global_solver, augControl$options$algorithm) expect_identical(augTest$local_solver, augControl$local_options$algorithm) expect_identical(augTest$convergence, augControl$status) expect_identical(augTest$message, augControl$message) nloptr/inst/tinytest/test-nloptions.R0000644000176200001440000000235014472716401017563 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptions # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "nloptions" function that is not tested elsewhere. # # Changelog: # library(nloptr) opts <- list( stopval = -Inf, # stop minimization at this value xtol_rel = 1e-6, # stop on small optimization step maxeval = 1000, # stop on this many function evaluations ftol_rel = 0.0, # stop on change times function value ftol_abs = 0.0, # stop on small change of function value check_derivatives = FALSE, algorithm = NULL # will be filled by each single function ) opts2 <- opts names(opts2) <- "" expect_identical(nl.opts(NULL), opts) expect_error(nl.opts("C"), "Argument `optlist` must be a named list.", fixed = TRUE) expect_error(nl.opts(opts2), "Argument `optlist` must be a named list.", fixed = TRUE) opts2 <- opts opts2$algorithm <- "NLOPT_LN_NELDERMEAD" expect_warning(nl.opts(opts2), "Option `algorithm` cannot be set here. It will be overwritten.", fixed = TRUE) expect_null(suppressWarnings(nl.opts(opts2)$algorithm)) nloptr/inst/tinytest/test-options-maxtime.R0000644000176200001440000000212614472716401020674 0ustar liggesusers# Copyright (C) 2015 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-options-maxtime.R # Author: Jelmer Ypma # Date: 22 March 2015 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Check whether the solver stop when maxtime # (set in the options) is reached. # CHANGELOG: # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) # Test that solver stops when maxtime is reached. # Objective function with sleep added such that maxtime will be reached when # solving the optimization problem. # eval_f <- function(x) { Sys.sleep(0.1) x ^ 2 } eval_grad_f <- function(x) 2 * x # Initial values. x0 <- 5 # Define optimizer options. opts <- list("algorithm" = "NLOPT_LD_LBFGS", "maxtime" = 0.05, "xtol_rel" = 1e-4) # Solve problem. res <- nloptr( x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = opts ) # Check results. expect_identical(res$status, 6L) nloptr/inst/tinytest/test-hs023.R0000644000176200001440000000456414472716401016406 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-hs023.R # Author: Jelmer Ypma # Date: 16 August 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example problem, number 23 from the Hock-Schittkowsky test suite.. # # \min_{x} x1^2 + x2^2 # s.t. # x1 + x2 >= 1 # x1^2 + x2^2 >= 1 # 9*x1^2 + x2^2 >= 9 # x1^2 - x2 >= 0 # x2^2 - x1 >= 0 # # with bounds on the variables # -50 <= x1, x2 <= 50 # # we re-write the inequalities as # 1 - x1 - x2 <= 0 # 1 - x1^2 - x2^2 <= 0 # 9 - 9*x1^2 - x2^2 <= 0 # x2 - x1^2 <= 0 # x1 - x2^2 <= 0 # # the initial value is # x0 = (3, 1) # # Optimal solution = (1, 1) # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # f(x) = x1^2 + x2^2 eval_f <- function(x) { list("objective" = x[1] ^ 2 + x[2] ^ 2, "gradient" = c(2 * x[1], 2 * x[2])) } # Inequality constraints. eval_g_ineq <- function(x) { constr <- c(1 - x[1] - x[2], 1 - x[1] ^ 2 - x[2] ^ 2, 9 - 9 * x[1] ^ 2 - x[2] ^ 2, x[2] - x[1] ^ 2, x[1] - x[2] ^ 2) grad <- rbind(c(-1, -1), c(-2 * x[1], -2 * x[2]), c(-18 * x[1], -2 * x[2]), c(-2 * x[1], 1), c(1, -2 * x[2])) list("constraints" = constr, "jacobian" = grad) } # Initial values. x0 <- c(3, 1) # Lower and upper bounds of control. lb <- c(-50, -50) ub <- c(50, 50) # Optimal solution. solution.opt <- c(1, 1) # Solve with MMA. opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-6, "tol_constraints_ineq" = rep(1.0e-6, 5), "print_level" = 0) res <- nloptr( x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, opts = opts ) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-6) expect_true(all(res$solution >= lb)) expect_true(all(res$solution <= ub)) # Check whether constraints are violated (up to specified tolerance). expect_true( all(eval_g_ineq(res$solution)$constr <= res$options$tol_constraints_ineq) ) nloptr/inst/tinytest/test-parameters.R0000644000176200001440000000310114472716401017674 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-parameters.R # Author: Jelmer Ypma # Date: 17 August 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example shows how we can have an objective function # depend on parameters or data. The objective function # is a simple polynomial. # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # Test simple polyonmial where parameters are supplied as additional data. # Objective function and gradient in terms of parameters. eval_f <- function(x, params) { params[1] * x ^ 2 + params[2] * x + params[3] } eval_grad_f <- function(x, params) { 2 * params[1] * x + params[2] } # Define parameters that we want to use. params <- c(1, 2, 3) # Define initial value of the optimization problem. x0 <- 0 # Solve using nloptr adding params as an additional parameter res <- nloptr( x0 = x0, eval_f = eval_f, eval_grad_f = eval_grad_f, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1e-6), params = params ) # Solve using algebra # Minimize f(x) = ax^2 + bx + c. # Optimal value for control is -b/(2a). expect_equal(res$solution, -params[2] / (2 * params[1]), tolerance = 1e-7) # With value of the objective function f(-b/(2a)). expect_equivalent(res$objective, eval_f(-params[2] / (2 * params[1]), params)) nloptr/inst/tinytest/test-print.nloptr.R0000644000176200001440000000272514472716401020215 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-print.nloptr # Author: Avraham Adler # Date: 9 February 2023 # # Test code in print.nloptr function that is not tested elsewhere. # # Changelog: # 2023-08-23: Convert _output to _stdout for tinytest # library(nloptr) options(digits=7) x0 <- c(3, 3) fn <- function(x) (x[1] - 1) ^ 2 + (x[2] - 1) ^ 2 # Successful convergence (very loose tolerance so converges < 100) fit <- nloptr(x0, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-2)) expect_stdout(print(fit), "Optimal value of controls: 1.004579 1.003978", fixed = TRUE) expect_stdout(print(fit, 1), "Optimal value of user-defined subset of controls: 1.004579", fixed = TRUE) expect_stdout(print(fit, 2), "Optimal value of user-defined subset of controls: 1.003978", fixed = TRUE) # Unsuccessful convergence (hit maxeval in this case) fit <- nloptr(x0, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8)) expect_stdout(print(fit), "Current value of controls: 0.9999994 1.000001", fixed = TRUE) expect_stdout(print(fit, 1), "Current value of user-defined subset of controls: 0.9999994", fixed = TRUE) expect_stdout(print(fit, 2), "Current value of user-defined subset of controls: 1.000001", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-global.R0000644000176200001440000002216714760162227020465 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-global # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to StoGo, ISRES, and CRS algorithms. As many of these # algorithms have issues, this test suite may not be completed. # # Changelog: # 2023-08-23: Change _output to _stdout. (Avraham Adler) # 2023-06-24: Reduce tolerance of ISRES tests to pass CRAN. (Aymeric Stamm) # 2023-06-25: Use analytic gradients and Jacobians for hin/heq. Correct some # of the ISRES tests which were pulling on Stogo results. # (Avraham Adler) # library(nloptr) tol <- 1e-3 # Stochastic algorithms require a weaker tolerance depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") ## Functions for the algorithms rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ## Analytic gradient gr <- function(x) {c(-2 * (1 - x[1]) - 400 * x[1] * (x[2] - x[1] ^ 2), 200 * (x[2] - x[1] ^ 2))} gr.diff <- function(x) nl.grad(x, rbf) hin <- function(x) 0.25 * x[1L] ^ 2 + x[2L] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1L] + x[2L] - 1 # heq = 0 hinjac <- function(x) c(0.5 * x[1L], 2 * x[2L]) heqjac <- function(x) c(1, 1) hin2 <- function(x) -hin(x) # Needed to test old behavior hinjac2 <- function(x) -hinjac(x) x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## StoGo # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(stogo(x0, rbf, lower = lb, upper = ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(stogo(x0, rbf, lower = lb, upper = ub)) # No passed gradient; Randomized: FALSE stogoTest <- stogo(x0, rbf, lower = lb, upper = ub) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = gr.diff, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passed gradient; Randomized: FALSE stogoTest <- stogo(x0, rbf, gr, lb, ub) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) # Passed gradient; Randomized: TRUE stogoTest <- stogo(x0, rbf, gr, lb, ub, randomized = TRUE) stogoControl <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_STOGO_RAND", xtol_rel = 1e-6, maxeval = 10000L)) expect_identical(stogoTest$par, stogoControl$solution) expect_identical(stogoTest$value, stogoControl$objective) expect_identical(stogoTest$iter, stogoControl$iterations) expect_identical(stogoTest$convergence, stogoControl$status) expect_identical(stogoTest$message, stogoControl$message) ## ISRES # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(isres(x0, rbf, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(isres(x0, rbf, lb, ub)) # As ISRES is stochastic, more iterations and a much looser tolerance is needed. # Also, iteration count will almost surely not be equal. # No passed hin or heq isresTest <- isres(x0, rbf, lb, ub, maxeval = 2e4L) isresControl <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 2e4L, xtol_rel = 1e-6, population = 60)) expect_equal(isresTest$par, isresControl$solution, tolerance = tol) expect_equal(isresTest$value, isresControl$objective, tolerance = tol) expect_identical(isresTest$convergence, isresControl$status) expect_identical(isresTest$message, isresControl$message) # Passing heq # Cannot check for value equivalence since the stochastic nature of the problem # creates different solutions to this "improper" test even using the same seed # and calls! So dropping maxeval to 1e4 for speed. # (AA: 2024-06-25) isresTest <- isres(x0, rbf, lb, ub, heq = heq, maxeval = 1e4L) isresControl <- nloptr(x0 = x0, eval_f = rbf, eval_g_eq = heq, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 1e4L, xtol_rel = 1e-6, population = 60)) expect_identical(isresTest$convergence, isresControl$status) expect_identical(isresTest$message, isresControl$message) # Passing hin isresControl <- nloptr(x0 = x0, eval_f = rbf, eval_g_ineq = hin, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ISRES", maxeval = 2e4L, xtol_rel = 1e-6, population = 60)) expect_silent(isres(x0, rbf, lb, ub, hin = hin, maxeval = 2e4L, deprecatedBehavior = FALSE)) isresTest <- isres(x0, rbf, lb, ub, hin = hin, maxeval = 2e4L, deprecatedBehavior = FALSE) expect_equal(isresTest$par, isresControl$solution, tolerance = tol) expect_equal(isresTest$value, isresControl$objective, tolerance = tol) expect_identical(isresTest$convergence, isresControl$status) expect_identical(isresTest$message, isresControl$message) # Test deprecated message expect_warning(isres(x0, rbf, lower = lb, upper = ub, hin = hin2, maxeval = 2e4L), depMess) # Test deprecated behavior isresTest <- suppressWarnings(isres(x0, rbf, lb, ub, hin = hin2, maxeval = 2e4L)) expect_equal(isresTest$par, isresControl$solution, tolerance = tol) expect_equal(isresTest$value, isresControl$objective, tolerance = tol) expect_identical(isresTest$convergence, isresControl$status) expect_identical(isresTest$message, isresControl$message) ## CRS2LM # Take these outside the function since they are unchanging; just pass them! a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(0.1312, 0.2329, 0.2348, 0.4047, 0.1696, 0.4135, 0.1451, 0.8828, 0.5569, 0.8307, 0.3522, 0.8732, 0.0124, 0.3736, 0.2883, 0.5743, 0.8283, 0.1004, 0.3047, 0.1091, 0.5886, 0.9991, 0.6650, 0.0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. x0 <- lb <- rep(0, 6L) ub <- rep(1, 6L) expect_stdout(crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, nl.info = TRUE, a = a, A = A, B = B), "Call:", fixed = TRUE) expect_silent(crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, a = a, A = A, B = B)) crs2lmTest <- crs2lm(x0 = x0, hartmann6, lower = lb, upper = ub, ranseed = 43L, xtol_rel = 1e-8, maxeval = 100L, a = a, A = A, B = B) crs2lmControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, a = a, A = A, B = B, opts = list(algorithm = "NLOPT_GN_CRS2_LM", xtol_rel = 1e-8, maxeval = 100L, ranseed = 43L, population = 70)) expect_identical(crs2lmTest$par, crs2lmControl$solution) expect_identical(crs2lmTest$value, crs2lmControl$objective) expect_identical(crs2lmTest$iter, crs2lmControl$iterations) expect_identical(crs2lmTest$convergence, crs2lmControl$status) expect_identical(crs2lmTest$message, crs2lmControl$message) nloptr/inst/tinytest/test-wrapper-mma.R0000644000176200001440000001076014633255630017773 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-mma # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to MMA algorithm # # CHANGELOG # # 2023-08-23: Change _output to _stdout # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example. (Avraham Adler) library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(suppressMessages(mma(x0.hs100, fn.hs100, nl.info = TRUE)), "Call:", fixed = TRUE) # Expect unconstrained call to work expect_silent(mma(x0.hs100, fn.hs100)) # Test MMA algorithm with inequality but passing neither gradient nor Jacobian. # As everyone is on Windows64, timing should be less of an issue. mmaTest <- mma(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) mmaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = function(x) nl.grad(x, fn.hs100), eval_g_ineq = hin.hs100, eval_jac_g_ineq = function(x) nl.jacobian(x, hin.hs100), opts = list(algorithm = "NLOPT_LD_MMA", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) # Test MMA algorithm passing both gradient and Jacobian. Now correct. # (AA: 2024-06-04) mmaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_MMA", xtol_rel = 1e-8, maxeval = 1000L)) mmaTest <- mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) # Test deprecated message expect_warning(mma(x0.hs100, fn.hs100, hin = hin.hs100), depMess) # Test deprecated behavior mmaTest <- suppressWarnings(mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100, control = ctl)) expect_identical(mmaTest$par, mmaControl$solution) expect_identical(mmaTest$value, mmaControl$objective) expect_identical(mmaTest$iter, mmaControl$iterations) expect_identical(mmaTest$convergence, mmaControl$status) expect_identical(mmaTest$message, mmaControl$message) nloptr/inst/tinytest/test-nloptr.R0000644000176200001440000002453014765064402017062 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr # Author: Avraham Adler # Date: 7 February 2023 # # Test code in nloptr.R and nloptr.c which is not tested elsewhere. # # Changelog: # 2023-08-23: Converted snapshots to testing portions of outputs and messages. # # It is possible for NLOPT to go slightly beyond maxtime or maxeval, especially # for the global algorithms, which is why the stopping criterion has a # weird-looking test. See # https://nlopt.readthedocs.io/en/latest/NLopt_Reference/#stopping-criteria library(nloptr) options(digits = 7) tol <- sqrt(.Machine$double.eps) ########################## Tests for nloptr.R ################################## ctlNM <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8, check_derivatives = FALSE) # check x0 expect_error(nloptr("3", function(x) x, opts = ctlNM), "x0 must be numeric", fixed = TRUE) expect_error(nloptr(numeric(), function(x) x, opts = ctlNM), "x0 must have length > 0", fixed = TRUE) ctlNM <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8, check_derivatives = TRUE) ctlSQP <- list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, check_derivatives = TRUE) # internal function to check the arguments of the functions expect_error(nloptr(3, "Zed"), "must be a function", fixed = TRUE) fn <- function(x, b = NULL, c = NULL) x expect_error(nloptr(3, fn, c = "Q"), "but this has not been passed to the 'nloptr' function", fixed = TRUE) expect_error(nloptr(3, fn, b = "X", c = "Y", d = "Q"), "passed to (...) in 'nloptr' but this is not required in the", fixed = TRUE) expect_warning(nloptr(3, fn, b = 3, c = 4, opts = ctlNM), "Skipping derivative checker because algorithm", fixed = TRUE) ########################## Tests for nloptr.c ################################## ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) fn <- function(x) x ^ 2 - 4 * x + 4 lb <- 0 ub <- 6 optSol <- 2 optVal <- 0 ## NLOPT_GN_DIRECT_L_NOSCAL alg <- list(algorithm = "NLOPT_GN_DIRECT_L_NOSCAL") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_DIRECT_L_RAND_NOSCAL alg <- list(algorithm = "NLOPT_GN_DIRECT_L_RAND_NOSCAL") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_LN_PRAXIS alg <- list(algorithm = "NLOPT_LN_PRAXIS") testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_MLSL alg <- list(algorithm = "NLOPT_GN_MLSL") lopts <- list(local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)) testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl, lopts)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_GN_MLSL_LDS alg <- list(algorithm = "NLOPT_GN_MLSL_LDS") lopts <- list(local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)) testRun <- nloptr(5, fn, lb = lb, ub = ub, opts = c(alg, ctl, lopts)) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) ## NLOPT_LN_AUGLAG_EQ x0 <- c(-2, 2, 2, -1, -1) fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) eqn1 <- function(x) { c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5], x[2] * x[3] - 5 * x[4] * x[5], x[1] * x[1] * x[1] + x[2] * x[2] * x[2]) } optSol <- rep(0, 5) optVal <- 1 testRun <- nloptr(x0, fn1, eval_g_eq = eqn1, opts = list(algorithm = "NLOPT_LN_AUGLAG_EQ", xtol_rel = 1e-6, maxeval = 10000L, local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6, maxeval = 1000L))) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= 10005L) expect_true(testRun$status > 0) ## NLOPT_LD_AUGLAG_EQ gr1 <- function(x) { c(x[2] * x[3] * x[4] * x[5], x[1] * x[3] * x[4] * x[5], x[1] * x[2] * x[4] * x[5], x[1] * x[2] * x[3] * x[5], x[1] * x[2] * x[3] * x[4]) * exp(prod(x)) } heqjac <- function(x) nl.jacobian(x0, eqn1) testRun <- nloptr(x0, fn1, gr1, eval_g_eq = eqn1, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG_EQ", xtol_rel = 1e-6, maxeval = 10000L, local_opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-6, maxeval = 1000L))) expect_equal(testRun$solution, optSol, tolerance = tol) expect_equal(testRun$objective, optVal, tolerance = tol) expect_true(testRun$iterations <= 10005L) expect_true(testRun$status > 0) # https://www.wolframalpha.com/input?i=minimum+of+x+%5E+4+%2B+y+%5E+2+-+5+*+x+*+y++%2B+5+ # nolint fn <- function(x) x[1L] ^ 4 + x[2L] ^ 2 - 5 * x[1L] * x[2L] + 5 gr <- function(x) c(4 * x[1L] ^ 3 - 5 * x[2L], 2 * x[2L] - 5 * x[1L]) lb <- c(0, 0) ub <- c(5, 5) optSol <- c(5 / (2 * sqrt(2)), 25 / (4 * sqrt(2))) optVal <- -305 / 64 ## TO DO: check why this is not working ## NLOPT_LN_NEWUOA_BOUND # alg <- list(algorithm = "NLOPT_LN_NEWUOA_BOUND") # testRun <- nloptr(c(1, 1), fn, lb = lb, ub = ub, opts = c(alg, ctl)) # # expect_equal(testRun$solution, optSol, tolerance = 1e-5) # expect_equal(testRun$objective, optVal, tolerance = tol) # expect_true(testRun$iterations <= ctl$maxeval + 5) # expect_true(testRun$status > 0) ## NLOPT_GN_ESCH alg <- list(algorithm = "NLOPT_GN_ESCH") ctl <- list(xtol_rel = 1e-8, maxeval = 50000L) testRun <- nloptr(c(1, 1), fn, lb = lb, ub = ub, opts = c(alg, ctl)) expect_equal(testRun$solution, optSol, tolerance = 1e-2) expect_equal(testRun$objective, optVal, tolerance = 1e-2) expect_true(testRun$iterations <= ctl$maxeval + 5) expect_true(testRun$status > 0) if (nloptr:::have.nlopt.ld.lbfgs.nocedal) { ## NLOPT_LD_LBFGS_NOCEDAL # NLOPT_LD_LBFGS_NOCEDAL as this algorithm has not been included as of NLOPT # 2.7.1 per https://github.com/stevengj/nlopt/issues/40 so the expected outcome # is NLOPT_INVALID_ARGS. Perhaps we should ring-fence it for now? # (AA: 2023-02-08) alg <- list(algorithm = "NLOPT_LD_LBFGS_NOCEDAL") testRun <- nloptr(c(1, 1), fn, gr, lb = lb, ub = ub, opts = c(alg, ctl)) minus2mess <- paste("NLOPT_INVALID_ARGS: Invalid arguments (e.g. lower bounds", "are bigger than upper bounds, an unknown algorithm was", "specified, etcetera).") expect_identical(testRun$status, -2L) expect_identical(testRun$message, minus2mess) } ## case NLOPT_FAILURE fnl <- function(x) { list(objective = (x[1] - 1) ^ 2 + (x[2] - 1) ^ 2, gradient = c(4 * (x[1] - 1), 3 - (x[2] - 1))) } x0 <- c(3, 3) testRun <- nloptr(x0, fnl, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8)) expect_identical(testRun$status, -1L) expect_identical(testRun$message, "NLOPT_FAILURE: Generic failure code.") # Tinytest has no snapshot functionality. Instead, this will test the output # and message against portions of the expected, instead of the totality. ## MULTIVARIATE FUNCTION x0 <- c(2, 2) ub <- c(5, 5) lb <- c(-1, -1) fn <- function(x) (x[1L] - 1) ^ 2 + (x[2L] - 1) ^ 2 + 1 gr <- function(x) c(2 * (x[1L] - 1), 2 * (x[2L] - 1)) hin <- function(x) c(1.44 - x[1L] ^ 2, 2.197 - x[2L] ^ 3) hinjac <- function(x) matrix(c(-2 * x[1L], 0, 0, -3 * x[2L] ^ 2), 2L, 2L) heq <- function(x) c(x[1L] * x[2L] - 2.55, x[1L] - x[2L] - 0.2) heqjac <- function(x) matrix(c(x[2L], 1, x[1L], -1), 2L) optSol <- c(1.7, 1.5) optVal <- 1.74 expect_stdout( suppressMessages( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)) ), "g(x) = (-1.450000, -1.178000)", fixed = TRUE ) # Wrap in capture.output to prevent wall of text on screen when running. This is # to test the message; expect_stdout tests the output. expect_message( capture.output( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)), type = "output" ), "eval_jac_g_ineq[1, 1] = -4.0e+00 ~ -4.0e+00 [7.450581e-09]", fixed = TRUE ) ## UNIVARIATE FUNCTION x0 <- 5 fn <- function(x) x ^ 2 - 4 * x + 4 gr <- function(x) 2 * x - 4 hin <- function(x) 5.29 - x ^ 2 hinjac <- function(x) -2 * x heq <- function(x) 10 * x - 27 heqjac <- function(x) 10 lb <- 0 ub <- 6 optSol <- 2.7 optVal <- 0.49 ## UNIVARIATE expect_stdout( suppressMessages( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)) ), "g(x) = -2.000000", fixed = TRUE ) expect_message( capture.output( nloptr(x0, fn, gr, lb, ub, hin, hinjac, heq, heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, print_level = 3, check_derivatives = TRUE)), type = "output" ), "eval_jac_g_ineq[1] = -1e+01 ~ -1e+01 [9.536743e-09]", fixed = TRUE ) # Test NLOPT_ROUNDOFF_LIMITED expect_true( grepl("Roundoff errors led to a breakdown", nloptr(x0, fn, gr, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = -Inf))$message, fixed = TRUE) ) # Test triggering stopval expect_true( grepl("Optimization stopped because stopval", nloptr(c(4, 4), fn, opts = list(algorithm = "NLOPT_LN_SBPLX", stopval = 20))$message, fixed = TRUE) ) nloptr/inst/tinytest/test-example.R0000644000176200001440000000701314472716401017172 0ustar liggesusers# Copyright (C) 2010-14 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-example.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve the problem from the NLopt tutorial. # # min sqrt(x2) # s.t. x2 >= 0 # x2 >= (a1*x1 + b1)^3 # x2 >= (a2*x1 + b2)^3 # where # a1 = 2, b1 = 0, a2 = -1, b2 = 1 # # re-formulate constraints to be of form g(x) <= 0 # (a1*x1 + b1)^3 - x2 <= 0 # (a2*x1 + b2)^3 - x2 <= 0 # # Optimal solution: (1/3, 8/27) # # CHANGELOG: # 2014-05-03: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # objective function eval_f0 <- function(x, a, b) sqrt(x[2]) # constraint function eval_g0 <- function(x, a, b) (a * x[1] + b) ^ 3 - x[2] # gradient of objective function eval_grad_f0 <- function(x, a, b) c(0, 0.5 / sqrt(x[2])) # jacobian of constraint eval_jac_g0 <- function(x, a, b) { rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1)) } # Functions with gradients in objective and constraint function. This can be # useful if the same calculations are needed for the function value and the # gradient. eval_f1 <- function(x, a, b) { list("objective" = sqrt(x[2]), "gradient" = c(0, 0.5 / sqrt(x[2]))) } eval_g1 <- function(x, a, b) { list("constraints" = (a * x[1] + b) ^ 3 - x[2], "jacobian" = rbind(c(3 * a[1] * (a[1] * x[1] + b[1]) ^ 2, -1), c(3 * a[2] * (a[2] * x[1] + b[2]) ^ 2, -1))) } # Define parameters. a <- c(2, -1) b <- c(0, 1) # Define optimal solution. solution.opt <- c(1 / 3, 8 / 27) # Test NLopt tutorial example with NLOPT_LD_MMA with gradient information. Solve # using NLOPT_LD_MMA with gradient information supplied in separate function. res0 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f0, eval_grad_f = eval_grad_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("xtol_rel" = 1e-4, "algorithm" = "NLOPT_LD_MMA"), a = a, b = b ) expect_equal(res0$solution, solution.opt, tolerance = tol) # Test NLopt tutorial example with NLOPT_LN_COBYLA with gradient information. # Solve using NLOPT_LN_COBYLA without gradient information A tighter convergence # tolerance is used here (1e-6), to ensure that the final solution is equal to # the optimal solution (within some tolerance). res1 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("xtol_rel" = 1e-6, "algorithm" = "NLOPT_LN_COBYLA"), a = a, b = b ) expect_equal(res1$solution, solution.opt, tolerance = tol) # Test NLopt tutorial example with NLOPT_LN_COBYLA with gradient information # using combined function. # Solve using NLOPT_LD_MMA with gradient information in objective function res2 <- nloptr( x0 = c(1.234, 5.678), eval_f = eval_f1, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g1, opts = list("xtol_rel" = 1e-4, "algorithm" = "NLOPT_LD_MMA"), a = a, b = b ) expect_equal(res2$solution, solution.opt, tolerance = tol) nloptr/inst/tinytest/test-wrapper-direct.R0000644000176200001440000001432614472716401020474 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-direct # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to DIRECT algorithms # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) # DirectL is not identical when calling randomized = TRUE. May be an issue with # the randomization at the C level. For now, need to pass this tolerance for it # to work. # (AA: 2026-02-06) tol <- 1e-6 ## Functions for DIRECT and DIRECT_L hartmann6 <- function(x) { a <- c(1, 1.2, 3, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4L, ncol = 6L) B <- matrix(c(0.1312, 0.2329, 0.2348, 0.4047, 0.1696, 0.4135, 0.1451, 0.8828, 0.5569, 0.8307, 0.3522, 0.8732, 0.0124, 0.3736, 0.2883, 0.5743, 0.8283, 0.1004, 0.3047, 0.1091, 0.5886, 0.9991, 0.6650, 0.0381), nrow = 4L, ncol = 6L) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } lb <- rep(0, 6L) ub <- rep(1, 6L) x0 <- rep(0.5, 6L) ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(direct(hartmann6, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_stdout(directL(hartmann6, lb, ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(direct(hartmann6, lb, ub)) expect_silent(directL(hartmann6, lb, ub)) # Test DIRECT algorithm Scaled: TRUE Original: FALSE directTest <- direct(hartmann6, lb, ub, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECT algorithm Scaled: FALSE Original: FALSE directTest <- direct(hartmann6, lb, ub, scaled = FALSE, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_NOSCAL", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECT algorithm Original: TRUE directTest <- direct(hartmann6, lb, ub, scaled = FALSE, original = TRUE, control = ctl) directControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ORIG_DIRECT", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directTest$par, directControl$solution) expect_identical(directTest$value, directControl$objective) expect_identical(directTest$iter, directControl$iterations) expect_identical(directTest$convergence, directControl$status) expect_identical(directTest$message, directControl$message) # Test DIRECTL algorithm Randomized: FALSE Original: FALSE directLTest <- directL(hartmann6, lb, ub, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_L", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(directLTest$par, directLControl$solution) expect_identical(directLTest$value, directLControl$objective) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) # Test DIRECTL algorithm Original: TRUE ctl <- list(xtol_rel = 1e-8, maxeval = 10000L) directLTest <- directL(hartmann6, lb, ub, randomized = TRUE, original = TRUE, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_ORIG_DIRECT_L", xtol_rel = 1e-8, maxeval = 10000L)) expect_identical(directLTest$par, directLControl$solution) expect_identical(directLTest$value, directLControl$objective) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) # Test DIRECTL algorithm Randomized: TRUE Original: FALSE ctl <- list(xtol_rel = 1e-8, maxeval = 50000L) directLTest <- directL(hartmann6, lb, ub, randomized = TRUE, control = ctl) directLControl <- nloptr(x0 = x0, eval_f = hartmann6, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GN_DIRECT_L_RAND", xtol_rel = 1e-8, maxeval = 50000L)) # May have something to do with the randomization. Setting seeds before the # calls does not help with check_identical # (AA: 2023-02-06) expect_equal(directLTest$par, directLControl$solution, tolerance = tol) expect_equal(directLTest$value, directLControl$objective, tolerance = tol) expect_identical(directLTest$iter, directLControl$iterations) expect_identical(directLTest$convergence, directLControl$status) expect_identical(directLTest$message, directLControl$message) nloptr/inst/tinytest/test-wrapper-lbgfs.R0000644000176200001440000000453414472716401020317 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-lbgfs # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to LBGFS # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(lbfgs(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(lbfgs(x0, flb)) # No passed gradient lbfgsTest <- lbfgs(x0, flb, lower = lb, upper = ub, control = ctl) lbfgsControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(lbfgsTest$par, lbfgsControl$solution) expect_identical(lbfgsTest$value, lbfgsControl$objective) expect_identical(lbfgsTest$iter, lbfgsControl$iterations) expect_identical(lbfgsTest$convergence, lbfgsControl$status) expect_identical(lbfgsTest$message, lbfgsControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } lbfgsTest <- lbfgs(c(-1.2, 2), fr, gr, lower = c(-3, -3), upper = c(3, 3), control = ctl) lbfgsControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, lb = c(-3, -3), ub = c(3, 3), opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(lbfgsTest$par, lbfgsControl$solution) expect_identical(lbfgsTest$value, lbfgsControl$objective) expect_identical(lbfgsTest$iter, lbfgsControl$iterations) expect_identical(lbfgsTest$convergence, lbfgsControl$status) expect_identical(lbfgsTest$message, lbfgsControl$message) nloptr/inst/tinytest/test-wrapper-varmetric.R0000644000176200001440000000560514472716401021216 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-varmetric # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to Shifted limited-memory variable-metric algorithm. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(varmetric(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(varmetric(x0, flb)) # No passed gradient; Rank 1 varTest <- varmetric(x0, flb, lower = lb, upper = ub, control = ctl, rank2 = FALSE) varControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_VAR1", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) # No passed gradient; Rank 2 varTest <- varmetric(x0, flb, lower = lb, upper = ub, control = ctl) varControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_VAR2", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } varTest <- varmetric(c(-1.2, 2), fr, gr, control = ctl) varControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, opts = list(algorithm = "NLOPT_LD_VAR2", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(varTest$par, varControl$solution) expect_identical(varTest$value, varControl$objective) expect_identical(varTest$iter, varControl$iterations) expect_identical(varTest$convergence, varControl$status) expect_identical(varTest$message, varControl$message) nloptr/inst/tinytest/test-systemofeq.R0000644000176200001440000000526014472716401017740 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-systemofeq.R # Author: Jelmer Ypma # Date: 20 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve a system of equations. # # min 1 # s.t. x^2 + x - 1 = 0 # # Optimal solution for x: -1.61803398875 # # CHANGELOG: # 2011-06-16: added NLOPT_LD_SLSQP # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) library(nloptr) tol <- sqrt(.Machine$double.eps) # Test Solve system of equations using NLOPT_LD_MMA with local optimizer # NLOPT_LD_MMA. # Objective function. eval_f0 <- function(x, params) 1 # Gradient of objective function. eval_grad_f0 <- function(x, params) 0 # Equality constraint function. eval_g0_eq <- function(x, params) params[1] * x ^ 2 + params[2] * x + params[3] # Jacobian of constraint. eval_jac_g0_eq <- function(x, params) 2 * params[1] * x + params[2] # Define vector with addiitonal data. params <- c(1, 1, -1) # Define optimal solution. solution.opt <- -1.61803398875 local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-6) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-6, "local_opts" = local_opts) res <- nloptr(x0 = -5, eval_f = eval_f0, eval_grad_f = eval_grad_f0, eval_g_eq = eval_g0_eq, eval_jac_g_eq = eval_jac_g0_eq, opts = opts, params = params) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_equal(eval_g0_eq(res$solution, params = params), 0, tolerance = res$options$tol_constraints_eq) # Test Solve system of equations using NLOPT_LD_SLSQP. # Solve using NLOPT_LD_SLSQP. opts <- list("algorithm" = "NLOPT_LD_SLSQP", "xtol_rel" = 1.0e-6) res <- nloptr(x0 = -5, eval_f = eval_f0, eval_grad_f = eval_grad_f0, eval_g_eq = eval_g0_eq, eval_jac_g_eq = eval_jac_g0_eq, opts = opts, params = params) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_equal(eval_g0_eq(res$solution, params = params), 0, tolerance = res$options$tol_constraints_eq) nloptr/inst/tinytest/test-derivative-checker.R0000644000176200001440000000565214472716401021312 0ustar liggesusers# Copyright (C) 201 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-derivative-checker.R # Author: Jelmer Ypma # Date: 24 July 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing results of the derivative checker and finite-difference # # Changelog: # 2013-10-27: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-10: Remove wrapping tests in "test_that" to reduce duplication. # and add explicit accuracy checks for nloptr:::finite.diff.R (AA) # 2023-08-23: Prefix finite.diff with nloptr::: as part of move to tinytest # library(nloptr) # Test derivative checker. tol <- 1e-7 # Define objective function. f <- function(x, a) sum((x - a) ^ 2) # Define gradient function without errors. f_grad <- function(x, a) 2 * (x - a) # Generated a using: # > set.seed(3141) # > a <- runif(10) # > dump("a", file = "") a <- c(0.75499595934525132, 0.9649918619543314, 0.041430773446336389, 0.42781219445168972, 0.65170943737030029, 0.83836922678165138, 0.77428539283573627, 0.53199269832111895, 0.76871572202071548, 0.7851746492087841) # Test nloptr:::finite.diff on multivariate scalar function expect_equal(nloptr:::finite.diff(f, 1:10, a = a), f_grad(1:10, a = a), tolerance = tol) expect_equal(nloptr:::finite.diff(f, 1:10, a = a), nl.grad(1:10, f, a = a), tolerance = tol) # Test nloptr:::finite.diff on multivariate Jacobian of vector function x0 <- 1:3 fn1 <- function(x) { c(3 * x[1L] ^ 2 * x[2L] * log(x[3L]), x[3] ^ 3 - 2 * x[1L] * x[2L]) } jac1 <- function(x) { matrix(c(6 * x[1L] * x[2L] * log(x[3L]), 3 * x[1L] ^ 2 * log(x[3L]), 3 * x[1L] ^ 2 * x[2L] / x[3L], -2 * x[2L], -2 * x[1L], 3 * x[3L] ^ 2), nrow = 2L, byrow = TRUE) } expect_equal(nloptr:::finite.diff(fn1, x0), jac1(x0), tolerance = tol) res <- suppressMessages( check.derivatives( .x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 0L) # Define gradient function with 1 error. f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8L)) res <- suppressMessages( check.derivatives( .x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 1L) # Define objective function. g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) # Define gradient function with 2 errors. g_grad <- function(x, a) { rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8L)), 2 * (x - a) + c(0, 0.1, rep(0, 8L))) } res <- suppressMessages( check.derivatives( .x = 1:10, func = g, func_grad = g_grad, check_derivatives_print = "none", a = a ) ) expect_identical(sum(res$flag_derivative_warning), 2L) nloptr/inst/tinytest/test-gradients.R0000644000176200001440000000326714472716401017526 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-gradients # Author: Avraham Adler # Date: 6 February 2023 # # Test code in nl.grad and nl.jacobian functions that is not tested elsewhere. # # Changelog: # library(nloptr) tol <- sqrt(.Machine$double.eps) fn1 <- function(x) sum(x ^ 2) fn2 <- function(x) c(3, 5) expect_error(nl.grad("C", fn1), "Argument 'x0' must be a numeric value.", fixed = TRUE) expect_error(nl.grad(2, fn2), "Function 'f' must be a scalar function (return a single value).", fixed = TRUE) expect_error(nl.jacobian("C", fn1), "Argument 'x' must be a non-empty numeric vector.", fixed = TRUE) expect_error(nl.jacobian(NULL, fn1), "Argument 'x' must be a non-empty numeric vector.", fixed = TRUE) # Test accuracy of multivariate gradient of scalar function x0 <- c(-2, 2, 2, -1, -1) fnE <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) grE <- function(x) { c(x[2] * x[3] * x[4] * x[5], x[1] * x[3] * x[4] * x[5], x[1] * x[2] * x[4] * x[5], x[1] * x[2] * x[3] * x[5], x[1] * x[2] * x[3] * x[4]) * exp(prod(x)) } expect_equal(nl.grad(x0, fnE), grE(x0), tolerance = tol) # Test accuracy of multivariate Jacobian of vector function x0 <- 1:3 fn1 <- function(x) { c(3 * x[1L] ^ 2 * x[2L] * log(x[3L]), x[3] ^ 3 - 2 * x[1L] * x[2L]) } jac1 <- function(x) { matrix(c(6 * x[1L] * x[2L] * log(x[3L]), 3 * x[1L] ^ 2 * log(x[3L]), 3 * x[1L] ^ 2 * x[2L] / x[3L], -2 * x[2L], -2 * x[1L], 3 * x[3L] ^ 2), nrow = 2L, byrow = TRUE) } expect_equal(nl.jacobian(x0, fn1), jac1(x0), tolerance = tol) nloptr/inst/tinytest/test-wrapper-slsqp.R0000644000176200001440000001430614633255630020363 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-slsqp # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls for the Sequential Quadratic Programming algorithm. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) tol <- sqrt(.Machine$double.eps) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior gr.hs100.computed <- function(x) nl.grad(x, fn.hs100) hinjac.hs100.computed <- function(x) nl.jacobian(x, hin.hs100) hinjac2.hs100.computed <- function(x) nl.jacobian(x, hin2.hs100) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(slsqp(x0.hs100, fn = fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(slsqp(x0.hs100, fn = fn.hs100)) # No passed gradient or Inequality Jacobians slsqpTest <- slsqp(x0.hs100, fn.hs100, hin = hin.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControl$solution) expect_identical(slsqpTest$value, slsqpControl$objective) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Passed gradient or Inequality Jacobians slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, deprecatedBehavior = FALSE) # Going to be reused below in new behavior test. slsqpControlhinjac <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControlhinjac$solution) expect_identical(slsqpTest$value, slsqpControlhinjac$objective) expect_identical(slsqpTest$iter, slsqpControlhinjac$iterations) expect_identical(slsqpTest$convergence, slsqpControlhinjac$status) expect_identical(slsqpTest$message, slsqpControlhinjac$message) # Not passing equality Jacobian slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, heq = hin.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_eq = hin.hs100, eval_jac_g_eq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_equal(slsqpTest$par, slsqpControl$solution, tolerance = tol) expect_equal(slsqpTest$value, slsqpControl$objective, tolerance = tol) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Passing equality Jacobian slsqpTest <- slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, heq = hin.hs100, heqjac = hinjac.hs100, deprecatedBehavior = FALSE) slsqpControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_eq = hin.hs100, eval_jac_g_eq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(slsqpTest$par, slsqpControl$solution) expect_identical(slsqpTest$value, slsqpControl$objective) expect_identical(slsqpTest$iter, slsqpControl$iterations) expect_identical(slsqpTest$convergence, slsqpControl$status) expect_identical(slsqpTest$message, slsqpControl$message) # Test deprecated message expect_warning(slsqp(x0.hs100, fn = fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior Adjust tests above when old behavior made defunct. slsqpTest <- suppressWarnings(slsqp(x0.hs100, fn = fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100)) expect_identical(slsqpTest$par, slsqpControlhinjac$solution) expect_identical(slsqpTest$value, slsqpControlhinjac$objective) expect_identical(slsqpTest$iter, slsqpControlhinjac$iterations) expect_identical(slsqpTest$convergence, slsqpControlhinjac$status) expect_identical(slsqpTest$message, slsqpControlhinjac$message) nloptr/inst/tinytest/test-check.derivatives.R0000644000176200001440000000267214472716401021146 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-check.derivatives # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "check.derivatives" function that is not tested elsewhere. # # Changelog: # library(nloptr) options(digits=7) f <- function(x, a) {sum((x - a) ^ 2)} f_grad <- function(x, a) {2 * (x - a)} expect_warning(suppressMessages(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "z", a = runif(10L))), "for check_derivatives_print is unknown; use 'all'", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "all", a = 1:10), "] = 0e+00 ~ 1.490116e-08 [", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "all", a = 1:10), "Derivative checker results: 10 error(s) detected.", fixed = TRUE) expect_message(check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = "errors", a = 1:10), "] = 0e+00 ~ 2.980232e-08 [1e+00]", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-nm.R0000644000176200001440000000366614472716401017641 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-nm # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls for Nelder-Mead and Subplex algorithms. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms fphv <- function(x) { 100 * (x[3L] - 10 * atan2(x[2L], x[1L]) / (2 * pi)) ^ 2 + (sqrt(x[1L] ^ 2 + x[2L] ^ 2) - 1) ^ 2 + x[3L] ^ 2 } x0 <- c(-1, 0.5, 0.5) ## Nelder-Mead # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(neldermead(x0, fphv, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(neldermead(x0, fphv)) nmTest <- neldermead(x0, fphv) nmControl <- nloptr(x0 = x0, eval_f = fphv, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(nmTest$par, nmControl$solution) expect_identical(nmTest$value, nmControl$objective) expect_identical(nmTest$iter, nmControl$iterations) expect_identical(nmTest$convergence, nmControl$status) expect_identical(nmTest$message, nmControl$message) ## Subplex # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(sbplx(x0, fphv, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(sbplx(x0, fphv)) sbplTest <- sbplx(x0, fphv) sbplControl <- nloptr(x0 = x0, eval_f = fphv, opts = list(algorithm = "NLOPT_LN_SBPLX", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(sbplTest$par, sbplControl$solution) expect_identical(sbplTest$value, sbplControl$objective) expect_identical(sbplTest$iter, sbplControl$iterations) expect_identical(sbplTest$convergence, sbplControl$status) expect_identical(sbplTest$message, sbplControl$message) nloptr/inst/tinytest/test-Rosenbrock-banana.R0000644000176200001440000002514214760162227021070 0ustar liggesusers# Copyright (C) 2024 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-Rosebbrock-banana # Author: Avraham Adler # Date: 25 June 2024 # # Complete rewrite of the current Rosenbrock banana tests. This also helps test # the accuracy of various algorithms. # # Changelog: # 2024-06-25: Complete rewrite of existing (inefficient) tests. Also tests # most of the exposed algorithms. See the comments here and # https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/ for # more details. # library(nloptr) tol <- sqrt(.Machine$double.eps) # Rosenbrock banana function (rbf) rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} # Analytic gradient for rbf rbfgr <- function(x) {c(-2 * (1 - x[1]) - 400 * x[1] * (x[2] - x[1] ^ 2), 200 * (x[2] - x[1] ^ 2))} # Used options opts <- list(ftol_rel = 1e-12, xtol_rel = 1e-12, print_level = 0, maxeval = 5e4) # Known optimium of 0 occurs at (1, 1) rbfOptVal <- 0 rbfOptLoc <- c(1, 1) # Initial values x0 <- c(-1.2, 1.3) # Local Gradient-Based Algorithms ## LBFGS (also tests seperate and combined function/gradient calls). opts$algorithm <- "NLOPT_LD_LBFGS" # Test passing function and gradient separately. testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Test passing function and gradient in same function call. rbfComplete <- function(x) { list(objective = rbf(x), gradient = rbfgr(x)) } testRes <- nloptr(x0 = x0, eval_f = rbfComplete, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## MMA opts$algorithm <- "NLOPT_LD_MMA" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## CCSAQ opts$algorithm <- "NLOPT_LD_CCSAQ" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## SLSQP opts$algorithm <- "NLOPT_LD_SLSQP" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## Preconditioned truncated Newton opts$algorithm <- "NLOPT_LD_TNEWTON" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_LD_TNEWTON_RESTART" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_LD_TNEWTON_PRECOND" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_LD_TNEWTON_PRECOND_RESTART" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## Shifted limited-memory variable-metric opts$algorithm <- "NLOPT_LD_VAR2" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = 1e-7) opts$algorithm <- "NLOPT_LD_VAR1" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Local Derivative-Free Algorithms ## COBYLA opts$algorithm <- "NLOPT_LN_COBYLA" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## BOBYQA opts$algorithm <- "NLOPT_LN_BOBYQA" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## NEWUOA opts$algorithm <- "NLOPT_LN_NEWUOA" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## PRAXIS opts$algorithm <- "NLOPT_LN_PRAXIS" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## Nelder-Mead Simplex opts$algorithm <- "NLOPT_LN_NELDERMEAD" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## Sbplx opts$algorithm <- "NLOPT_LN_SBPLX" testRes <- nloptr(x0 = x0, eval_f = rbf, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Global Algorithms lb <- c(-3, -3) ub <- c(3, 3) ## StoGo ## StoGo passes on many platforms but fails MISERABLE (Inf???) on others. Note ## that here and disable the tests for now. # opts$algorithm <- "NLOPT_GD_STOGO" # testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, lb = lb, ub = ub, # opts = opts) # # expect_equal(testRes$objective, rbfOptVal, tolerance = 1e-4) # expect_equal(testRes$solution, rbfOptLoc, tolerance = 1e-4) # # opts$algorithm <- "NLOPT_GD_STOGO_RAND" # testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, lb = lb, ub = ub, # opts = opts) # # expect_equal(testRes$objective, rbfOptVal, tolerance = 1e-4) # expect_equal(testRes$solution, rbfOptLoc, tolerance = 1e-4) ## ISRES opts$population <- 100 opts$ranseed <- 2718L opts$algorithm <- "NLOPT_GN_ISRES" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) ## Controlled Random Search (with ranseed testing) opts$algorithm <- "NLOPT_GN_CRS2_LM" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Different random seed opts$ranseed <- 3141L testRes2 <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Same random seed opts$ranseed <- 2718L testRes3 <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Results of different random seeds should differ. expect_false(identical(testRes$objective, testRes2$objective)) expect_false(identical(testRes$solution, testRes2$solution)) # Results of same random seeds should be the same. expect_identical(testRes$objective, testRes3$objective) expect_identical(testRes$solution, testRes3$solution) ## DIRECT opts$algorithm <- "NLOPT_GN_DIRECT_L" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) # expect_equal(testRes$objective, rbfOptVal, tolerance = tol) # expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_GN_DIRECT_NOSCAL" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_GN_DIRECT_L_NOSCAL" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_GN_DIRECT_L_RAND_NOSCAL" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_GN_ORIG_DIRECT_L" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # The follwing versions converge to the wrong answer; see # https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#direct-and-direct-l # in that the rescaling may be faulty for this particular problem. opts$algorithm <- "NLOPT_GN_DIRECT" expect_stdout(nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts)) opts$algorithm <- "NLOPT_GN_ORIG_DIRECT" expect_stdout(nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts)) ## ESCH - does not converge in 1M iterations so just test for output. Probably ## needs MUCH tighter bounds. opts$algorithm <- "NLOPT_GN_ESCH" expect_stdout(nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts)) ## MLSL (Multi-Level Single-Linkage) # Use LBGFS as local search algorithm opts$local_opts <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-9) # Need to set lower evaluation cap since this is nested global/local oldmaxeval <- opts$maxeval opts$maxeval <- 1000 # Gradient-based opts$algorithm <- "NLOPT_GD_MLSL" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) opts$algorithm <- "NLOPT_GD_MLSL_LDS" testRes <- nloptr(x0 = x0, eval_f = rbf, eval_grad_f = rbfgr, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = tol) expect_equal(testRes$solution, rbfOptLoc, tolerance = tol) # Derivative-free opts$local_opts <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-12) opts$maxeval <- 10000 # Need lower tolerance (or MANY more evaluations) without gradient information. opts$algorithm <- "NLOPT_GN_MLSL" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = 1e-5) expect_equal(testRes$solution, rbfOptLoc, tolerance = 1e-5) opts$algorithm <- "NLOPT_GN_MLSL_LDS" testRes <- nloptr(x0 = x0, eval_f = rbf, lb = lb, ub = ub, opts = opts) expect_equal(testRes$objective, rbfOptVal, tolerance = 1e-5) expect_equal(testRes$solution, rbfOptLoc, tolerance = 1e-5) nloptr/inst/tinytest/test-is.nloptr.R0000644000176200001440000002215614472716401017474 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-is.nloptr # Author: Avraham Adler # Date: 6 February 2023 # # Test code in "is.nloptr" function that is not tested elsewhere. # # Changelog: # library(nloptr) ctlNM <- list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8) ctlLB <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8) # Check whether the object exists and is a list expect_false(is.nloptr(NULL)) expect_false(is.nloptr(3)) # Check whether the needed wrapper functions are supplied # This seems to ALWAYS be preempted by .checkfunargs in nloptr itself (AA) fphv <- function(x) { 100 * (x[3L] - 10 * atan2(x[2L], x[1L]) / (2 * pi)) ^ 2 + (sqrt(x[1L] ^ 2 + x[2L] ^ 2) - 1) ^ 2 + x[3L] ^ 2 } # Check whether bounds are defined for all controls expect_error(nloptr(x0 = c(-1.2, 1.5, NA), eval_f = fphv, opts = ctlNM), "x0 contains NA", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, lb = c(-2, -2), opts = ctlNM), "length(lb) != length(x0)", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, ub = c(-2, -2), opts = ctlNM), "length(ub) != length(x0)", fixed = TRUE) # Check whether the initial value is within the bounds expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, lb = c(-1, -1, -1), opts = ctlNM), "at least one element in x0 < lb", fixed = TRUE) expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, ub = c(2, 2, 2), opts = ctlNM), "at least one element in x0 > ub", fixed = TRUE) # check if an existing algorithm was supplied expect_error(nloptr(x0 = c(-1.2, 1.5, 3), eval_f = fphv, opts = list(algorithm = "NLOPT_LN_NEDERMEAD", xtol_rel = 1e-8)), "Incorrect algorithm supplied. Use one of the", fixed = TRUE) # Check that we don't have NA's if we evaluate the objective function in x0. f0 <- function(x) 3 * x ^ 1.5 - 2 * x ^ 0.5 expect_error(suppressWarnings(nloptr(x0 = -1, eval_f = f0, opts = ctlNM)), "objective in x0 returns NA", fixed = TRUE) f0 <- function(x) 3 * x ^ 4 - 12 * x ^ 3 g0 <- function(x) 4 * sqrt(x) # Yes it's not the gradient. This is a unit test!! expect_error(suppressWarnings(nloptr(x0 = -1, f0, g0, opts = ctlLB)), "objective in x0 returns NA", fixed = TRUE) g0 <- function(x) c(4, 2) # Yes it's not the gradient. This is a unit test!! expect_error(suppressWarnings(nloptr(x0 = -1, f0, g0, opts = ctlLB)), "wrong number of elements in gradient of objective", fixed = TRUE) # check whether algorithm needs a derivative g0 <- function(x) 12 * x ^ 3 - 36 * x ^ 2 # Actual gradient ## Just checking... expect_silent(nloptr(x0 = -1, f0, g0, opts = ctlLB)) expect_warning(nloptr(x0 = -1, f0, g0, opts = ctlNM), "a gradient was supplied for the objective function", fixed = TRUE) expect_error(nloptr(x0 = -1, f0, opts = ctlLB), "A gradient for the objective function is needed", fixed = TRUE) # Malformed objects solely intended to trigger tests: ## eval_f test expect_error(is.nloptr(list(eval_f = "Hello")), "eval_f is not a function") ## eval_g_ineq test expect_error(is.nloptr(list(eval_f = fphv, eval_g_ineq = "GoodBye")), "eval_g_ineq is not a function") ## eval_g_eq test expect_error(is.nloptr(list(eval_f = fphv, eval_g_eq = 27)), "eval_g_eq is not a function") ## MULTIVARIATE FUNCTION WITH CONSTRAINTS x0 <- c(2, 2) ub <- c(5, 5) lb <- c(-1, -1) fn <- function(x) (x[1L] - 1) ^ 2 + (x[2L] - 1) ^ 2 + 1 gr <- function(x) c(2 * (x[1L] - 1), 2 * (x[2L] - 1)) fnl <- function(x) list("objective" = fn(x), "gradient" = gr(x)) fnlNA <- function(x) list("objective" = NA_real_, "gradient" = gr(x)) hin <- function(x) c(1.44 - x[1L] ^ 2, 2.197 - x[2L] ^ 3) hinjac <- function(x) matrix(c(-2 * x[1L], 0, 0, -3 * x[2L] ^ 2), 2L, 2L) hinl <- function(x) list("constraints" = hin(x), "jacobian" = hinjac(x)) hinlNA <- function(x) { list("constraints" = hin(NA_real_), "jacobian" = hinjac(x)) } heq <- function(x) c(x[1L] * x[2L] - 2.55, x[1L] - x[2L] - 0.2) heqjac <- function(x) matrix(c(x[2L], 1, x[1L], -1), 2L) heql <- function(x) list("constraints" = heq(x), "jacobian" = heqjac(x)) heqlNA <- function(x) { list("constraints" = heq(NA_real_), "jacobian" = heqjac(x)) } optSol <- c(1.7, 1.5) optVal <- 1.74 # Test simple error messages first; roughly in their order in is.nloptr.R Many # of these are testing the list versions of their functional parents. A list # version is when a function and its gradient are returned in the same call. expect_error(nloptr(x0, fnlNA, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "objective in x0 returns NA", fixed = TRUE) hinE <- function(x) c(4, NA_real_) expect_error(nloptr(x0, fn, eval_g_ineq = hinE, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "inequality constraints in x0 returns NA", fixed = TRUE) expect_error(nloptr(x0, fnl, eval_g_ineq = hinlNA, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "inequality constraints in x0 returns NA", fixed = TRUE) hinjacE <- function(x) c(-2 * x[1L], NA_real_) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "jacobian of inequality constraints in x0 returns NA", fixed = TRUE) hinjacE <- function(x) c(-2 * x[1L], -3 * x[2L] ^ 2) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "wrong number of elements in jacobian of inequality", fixed = TRUE) expect_warning(nloptr(x0, fn, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "gradient was supplied for the inequality constraints", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "gradient for the inequality constraints is needed", fixed = TRUE) heqE <- function(x) c(x[1L] * x[2L] - 2.55, NA_real_) expect_error(nloptr(x0, fn, eval_g_eq = heqE, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "equality constraints in x0 returns NA", fixed = TRUE) expect_error(nloptr(x0, fn, eval_g_eq = heqlNA, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8)), "equality constraints in x0 returns NA", fixed = TRUE) heqjacE <- function(x) c(-2 * x[1L], NA_real_) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "jacobian of equality constraints in x0 returns NA", fixed = TRUE) heqjacE <- function(x) c(-2 * x[1L], -3 * x[2L] ^ 2) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjacE, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "wrong number of elements in jacobian of equality", fixed = TRUE) expect_warning(nloptr(x0, fn, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_GN_ISRES", xtol_rel = 1e-8)), "gradient was supplied for the equality constraints", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8)), "gradient for the equality constraints is needed", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-8)), "If you want to use equality constraints, then you should use one", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_AUGLAG", xtol_rel = 1e-8)), "needs a local optimizer; specify an algorithm and termination", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_ineq = hin, eval_jac_g_ineq = hinjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, tol_constraints_ineq = rep(0.1, 3L))), "The vector tol_constraints_ineq in the options list", fixed = TRUE) expect_error(nloptr(x0, fn, gr, eval_g_eq = heq, eval_jac_g_eq = heqjac, opts = list(algorithm = "NLOPT_LD_SLSQP", xtol_rel = 1e-8, tol_constraints_eq = rep(0.1, 3L))), "The vector tol_constraints_eq in the options list", fixed = TRUE) nloptr/inst/tinytest/test-nloptr.print.options.R0000644000176200001440000000160614472716401021704 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr.print.options # Author: Avraham Adler # Date: 7 February 2023 # # Test code in "nloptr.print.options" function that is not tested elsewhere. # # Changelog: # 2023-08-23: tinytest has no "snapshot" equivalent so removed that test. # Converted the others to tinytest format. # library(nloptr) expect_stdout(nloptr.print.options(opts.show = "check_derivatives"), "user-supplied analytic gradients with finite difference", fixed = TRUE) expect_stdout(nloptr(3, function(x) x ^ 2 + 1, opts = list(algorithm = "NLOPT_LN_NELDERMEAD", xtol_rel = 1e-8, print_options_doc = TRUE)), "user-supplied analytic gradients with finite difference", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-tnewton.R0000644000176200001440000001043614472716401020716 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-tnewton # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to Preconditioned Truncated Newton algorithms. # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) ## Functions for the algorithms flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } x0 <- rep(3, 25L) lb <- rep(2, 25L) ub <- rep(4, 25L) ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(tnewton(x0, flb, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(tnewton(x0, flb)) # No passed gradient; Restart; Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: Restart; No Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, precond = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: No Restart; Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, restart = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # No passed gradient: No Restart; No Precond tnTest <- tnewton(x0, flb, lower = lb, upper = ub, control = ctl, restart = FALSE, precond = FALSE) tnControl <- nloptr(x0 = x0, eval_f = flb, eval_grad_f = function(x) nl.grad(x, flb), lb = lb, ub = ub, opts = list(algorithm = "NLOPT_LD_TNEWTON", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) # Passed gradient fr <- function(x) {100 * (x[2L] - x[1L] ^ 2) ^ 2 + (1 - x[1L]) ^ 2} gr <- function(x) { .expr2 <- x[2L] - x[1L] ^ 2 .expr5 <- 1 - x[1L] c(-(2 * .expr5 + 100 * (2 * (2 * x[1L] * .expr2))), 100 * (2 * .expr2)) } tnTest <- tnewton(c(-1.2, 2), fr, gr, control = ctl) tnControl <- nloptr(x0 = c(-1.2, 2), eval_f = fr, eval_grad_f = gr, opts = list(algorithm = "NLOPT_LD_TNEWTON_PRECOND_RESTART", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(tnTest$par, tnControl$solution) expect_identical(tnTest$value, tnControl$objective) expect_identical(tnTest$iter, tnControl$iterations) expect_identical(tnTest$convergence, tnControl$status) expect_identical(tnTest$message, tnControl$message) nloptr/inst/tinytest/test-simple.R0000644000176200001440000000467714472716401017045 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-simple.R # Author: Jelmer Ypma # Date: 20 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example showing how to solve a simple constrained problem. # # min x^2 # s.t. x >= 5 # # re-formulate constraint to be of form g(x) <= 0 # 5 - x <= 0 # we could use a bound constraint as well here # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) tol <- sqrt(.Machine$double.eps) # Test simple constrained optimization problem with gradient information. # Objective function eval_f <- function(x) x ^ 2 # Gradient of objective function. eval_grad_f <- function(x) 2 * x # Inequality constraint function. eval_g_ineq <- function(x) 5 - x # Jacobian of constraint. eval_jac_g_ineq <- function(x) -1 # Optimal solution. solution.opt <- 5 # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function. res <- nloptr(x0 = 1, eval_f = eval_f, eval_grad_f = eval_grad_f, eval_g_ineq = eval_g_ineq, eval_jac_g_ineq = eval_jac_g_ineq, opts = list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1e-4)) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = tol) # Check whether constraints are violated (up to specified tolerance). expect_true(eval_g_ineq(res$solution) <= res$options$tol_constraints_ineq) # Test simple constrained optimization problem without gradient information. # Solve using NLOPT_LN_COBYLA without gradient information res <- nloptr(x0 = 1, eval_f = eval_f, eval_g_ineq = eval_g_ineq, opts = list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1e-6, "tol_constraints_ineq" = 1e-6)) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-6) # Check whether constraints are violated (up to specified tolerance). expect_true(eval_g_ineq(res$solution) <= res$options$tol_constraints_ineq) nloptr/inst/tinytest/test-wrapper-mlsl.R0000644000176200001440000000672314472716401020173 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-mlsl # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls MLSL algorithm. # # Changelog: # 2023-08-23: Change _stdout to _stdout and _lte to _true # library(nloptr) tol <- 8e-8 ## Functions for the algorithms hartmann6 <- function(x) { a <- c(1, 1.2, 3, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4L, ncol = 6L) B <- matrix(c(0.1312, 0.2329, 0.2348, 0.4047, 0.1696, 0.4135, 0.1451, 0.8828, 0.5569, 0.8307, 0.3522, 0.8732, 0.0124, 0.3736, 0.2883, 0.5743, 0.8283, 0.1004, 0.3047, 0.1091, 0.5886, 0.9991, 0.6650, 0.0381), nrow = 4L, ncol = 6L) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } hart.gr <- function(x) nl.grad(x, hartmann6) x0 <- lb <- rep(0, 6L) ub <- rep(1, 6L) ctl <- list(xtol_rel = 1e-8, maxeval = 750L) lopt <- list(algorithm = "NLOPT_LD_LBFGS", xtol_rel = 1e-4) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(mlsl(x0 = x0, hartmann6, lower = lb, upper = ub, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(mlsl(x0 = x0, hartmann6, lower = lb, upper = ub)) # Test Warning expect_warning(mlsl(x0, hartmann6, hart.gr, lb, ub, local.method = "MMA"), "Only gradient-based LBFGS available as local met", fixed = TRUE) # No passed gradient: Low discrepancy mlslTest <- mlsl(x0, hartmann6, lower = lb, upper = ub, control = ctl) mlslControl <- nloptr(x0 = x0, eval_f = hartmann6, eval_grad_f = hart.gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_MLSL_LDS", xtol_rel = 1e-8, maxeval = 750L, local_opts = lopt)) expect_identical(mlslTest$par, mlslControl$solution) expect_identical(mlslTest$value, mlslControl$objective) expect_identical(mlslTest$iter, mlslControl$iterations) expect_identical(mlslTest$convergence, mlslControl$status) expect_identical(mlslTest$message, mlslControl$message) # Passed gradient: No low discrepancy mlslTest <- mlsl(x0, hartmann6, hart.gr, lb, ub, low.discrepancy = FALSE, control = ctl) mlslControl <- nloptr(x0 = x0, eval_f = hartmann6, eval_grad_f = hart.gr, lb = lb, ub = ub, opts = list(algorithm = "NLOPT_GD_MLSL", xtol_rel = 1e-8, maxeval = 750L, local_opts = lopt)) expect_equal(mlslTest$par, mlslControl$solution, tolerance = tol) expect_equal(mlslTest$value, mlslControl$objective, tolerance = tol) # See https://nlopt.readthedocs.io/en/latest/NLopt_Reference/#stopping-criteria # "This is not a strict maximum: the number of function evaluations may exceed # maxeval slightly, depending upon the algorithm." expect_true(abs(mlslTest$iter - mlslControl$iterations) <= 10L) expect_identical(mlslTest$convergence, mlslControl$status) expect_identical(mlslTest$message, mlslControl$message) nloptr/inst/tinytest/test-wrapper-ccsaq.R0000644000176200001440000001226614633255630020316 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-ccsaq # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to ccsaq algorithm # # Changelog: # 2023-08-23: Change _output to _stdout # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") # Taken from example x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } # In older version, the HS100 was not properly copied, so the gradients caused # an issue. This has since been corrected, but leaving the calls in to test the # gradient/Jacobian creation routines. gr.hs100.computed <- function(x) nl.grad(x, fn.hs100) hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior hinjac2.hs100 <- function(x) -hinjac.hs100(x) # Needed to test old behavior hinjac.hs100.computed <- function(x) nl.jacobian(x, hin.hs100) # See example hinjac2.hs100.computed <- function(x) nl.jacobian(x, hin2.hs100) # See example ctl <- list(xtol_rel = 1e-8, maxeval = 1000L) # Test normal silent running expect_silent(ccsaq(x0.hs100, fn.hs100)) # Provides incorrect answer expect_silent(ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, hinjac = hinjac.hs100, deprecatedBehavior = FALSE)) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(ccsaq(x0.hs100, fn.hs100, nl.info = TRUE, deprecatedBehavior = FALSE), "Call:", fixed = TRUE) # Control for CCSAQ HS100 ## Exact ccsaqControlE <- nloptr( x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100, opts = list(algorithm = "NLOPT_LD_CCSAQ", xtol_rel = 1e-8, maxeval = 1000L) ) ## Computed ccsaqControlC <- nloptr( x0 = x0.hs100, eval_f = fn.hs100, eval_grad_f = gr.hs100.computed, eval_g_ineq = hin.hs100, eval_jac_g_ineq = hinjac.hs100.computed, opts = list(algorithm = "NLOPT_LD_CCSAQ", xtol_rel = 1e-8, maxeval = 1000L) ) # Test no passed gradient or Jacobian (so algorithm computes). ccsaqTest <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlC$solution) expect_identical(ccsaqTest$value, ccsaqControlC$objective) expect_identical(ccsaqTest$iter, ccsaqControlC$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlC$status) expect_identical(ccsaqTest$message, ccsaqControlC$message) # Test passed gradient and Jacobian ## Exact ccsaqTest <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlE$solution) expect_identical(ccsaqTest$value, ccsaqControlE$objective) expect_identical(ccsaqTest$iter, ccsaqControlE$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlE$status) expect_identical(ccsaqTest$message, ccsaqControlE$message) ## Computed ccsaqTest <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100.computed, hin = hin.hs100, hinjac = hinjac.hs100.computed, control = ctl, deprecatedBehavior = FALSE) expect_identical(ccsaqTest$par, ccsaqControlC$solution) expect_identical(ccsaqTest$value, ccsaqControlC$objective) expect_identical(ccsaqTest$iter, ccsaqControlC$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlC$status) expect_identical(ccsaqTest$message, ccsaqControlC$message) # Test deprecated behavior message expect_warning(ccsaq(x0.hs100, fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior ccsaqTest <- suppressWarnings(ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin2.hs100, hinjac = hinjac2.hs100, control = ctl)) expect_identical(ccsaqTest$par, ccsaqControlE$solution) expect_identical(ccsaqTest$value, ccsaqControlE$objective) expect_identical(ccsaqTest$iter, ccsaqControlE$iterations) expect_identical(ccsaqTest$convergence, ccsaqControlE$status) expect_identical(ccsaqTest$message, ccsaqControlE$message) nloptr/inst/tinytest/test-hs071.R0000644000176200001440000000564414472716401016411 0ustar liggesusers# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-hs071.R # Author: Jelmer Ypma # Date: 10 June 2010 # # Maintenance assumed by Avraham Adler (AA) on 2023-02-10 # # Example problem, number 71 from the Hock-Schittkowsky test suite. # # \min_{x} x1*x4*(x1 + x2 + x3) + x3 # s.t. # x1*x2*x3*x4 >= 25 # x1^2 + x2^2 + x3^2 + x4^2 = 40 # 1 <= x1,x2,x3,x4 <= 5 # # we re-write the inequality as # 25 - x1*x2*x3*x4 <= 0 # # and the equality as # x1^2 + x2^2 + x3^2 + x4^2 - 40 = 0 # # x0 = (1,5,5,1) # # Optimal solution = (1.00000000, 4.74299963, 3.82114998, 1.37940829) # # CHANGELOG: # 2014-05-05: Changed example to use unit testing framework testthat. # 2019-12-12: Corrected warnings and using updated testtthat framework (AA) # 2023-02-07: Remove wrapping tests in "test_that" to reduce duplication. (AA) # library(nloptr) # f(x) = x1*x4*(x1 + x2 + x3) + x3 eval_f <- function(x) { list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), x[1] * x[4], x[1] * x[4] + 1, x[1] * (x[1] + x[2] + x[3]))) } # Inequality constraints. eval_g_ineq <- function(x) { constr <- c(25 - x[1] * x[2] * x[3] * x[4]) grad <- c(-x[2] * x[3] * x[4], -x[1] * x[3] * x[4], -x[1] * x[2] * x[4], -x[1] * x[2] * x[3]) list("constraints" = constr, "jacobian" = grad) } # Equality constraints. eval_g_eq <- function(x) { constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) grad <- c(2.0 * x[1], 2.0 * x[2], 2.0 * x[3], 2.0 * x[4]) list("constraints" = constr, "jacobian" = grad) } # Initial values. x0 <- c(1, 5, 5, 1) # Lower and upper bounds of control. lb <- c(1, 1, 1, 1) ub <- c(5, 5, 5, 5) # Optimal solution. solution.opt <- c(1.00000000, 4.74299963, 3.82114998, 1.37940829) # Set optimization options. local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-7, "maxeval" = 1000, "local_opts" = local_opts, "print_level" = 0) # Do optimization. res <- nloptr(x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, eval_g_eq = eval_g_eq, opts = opts) # Run some checks on the optimal solution. expect_equal(res$solution, solution.opt, tolerance = 1e-5) expect_true(all(res$solution >= lb)) expect_true(all(res$solution <= ub)) # Check whether constraints are violated (up to specified tolerance). expect_true( eval_g_ineq(res$solution)$constr <= res$options$tol_constraints_ineq ) expect_equal(eval_g_eq(res$solution)$constr, 0, tolerance = res$options$tol_constraints_eq) nloptr/inst/tinytest/test-nloptr.add.default.options.R0000644000176200001440000000101614472716401022716 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-nloptr.add.default.options # Author: Avraham Adler # Date: 8 February 2023 # # Test code in nloptr.add.default.options function that is not tested elsewhere. # # Changelog: # library(nloptr) fn <- function(x) x ^ 2 - 4 * x + 4 expect_warning(nloptr(3, fn, opts = list(algorithm = "NLOPT_LN_NELDERMEAD")), "No termination criterion specified, using default", fixed = TRUE) nloptr/inst/tinytest/test-wrapper-cobyla.R0000644000176200001440000001064314633255630020472 0ustar liggesusers# Copyright (C) 2023 Avraham Adler. All Rights Reserved. # SPDX-License-Identifier: LGPL-3.0-or-later # # File: test-wrapper-cobyla # Author: Avraham Adler # Date: 6 February 2023 # # Test wrapper calls to cobyla, bobyqa, and newuoa algorithms # # CHANGELOG # # 2023-08-23: Change _output to _stdout # 2024-06-04: Switched desired direction of the hin/hinjac inequalities, leaving # the old behavior as the default for now. Also cleaned up the HS100 # example (Avraham Adler). # library(nloptr) depMess <- paste("The old behavior for hin >= 0 has been deprecated. Please", "restate the inequality to be <=0. The ability to use the old", "behavior will be removed in a future release.") ## Functions for COBYLA, BOBYQA, and NEWUOA x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } hin2.hs100 <- function(x) -hin.hs100(x) # Needed to test old behavior rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ctl <- list(xtol_rel = 1e-8) # Test printout if nl.info passed. The word "Call:" should be in output if # passed and not if not passed. expect_stdout(cobyla(x0.hs100, fn.hs100, nl.info = TRUE, deprecatedBehavior = FALSE), "Call:", fixed = TRUE) expect_stdout(bobyqa(x0.hs100, fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_stdout(newuoa(x0.hs100, fn.hs100, nl.info = TRUE), "Call:", fixed = TRUE) expect_silent(cobyla(x0.hs100, fn.hs100, deprecatedBehavior = FALSE)) expect_silent(bobyqa(x0.hs100, fn.hs100)) expect_silent(newuoa(x0.hs100, fn.hs100)) # Test COBYLA algorithm cobylaTest <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, control = ctl, deprecatedBehavior = FALSE) cobylaControl <- nloptr(x0 = x0.hs100, eval_f = fn.hs100, eval_g_ineq = hin.hs100, opts = list(algorithm = "NLOPT_LN_COBYLA", xtol_rel = 1e-8, maxeval = 1000L)) expect_identical(cobylaTest$par, cobylaControl$solution) expect_identical(cobylaTest$value, cobylaControl$objective) expect_identical(cobylaTest$iter, cobylaControl$iterations) expect_identical(cobylaTest$convergence, cobylaControl$status) expect_identical(cobylaTest$message, cobylaControl$message) # Test deprecated message expect_warning(cobyla(x0.hs100, fn.hs100, hin = hin2.hs100), depMess) # Test deprecated behavior cobylaTest <- suppressWarnings(cobyla(x0.hs100, fn.hs100, hin = hin2.hs100, control = ctl)) expect_identical(cobylaTest$par, cobylaControl$solution) expect_identical(cobylaTest$value, cobylaControl$objective) expect_identical(cobylaTest$iter, cobylaControl$iterations) expect_identical(cobylaTest$convergence, cobylaControl$status) expect_identical(cobylaTest$message, cobylaControl$message) # Test BOBYQA algorithm bobyqaTest <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) bobyqaControl <- nloptr(x0 = c(0, 0), eval_f = rbf, lb = c(0, 0), ub = c(0.5, 0.5), opts = list(algorithm = "NLOPT_LN_BOBYQA", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(bobyqaTest$par, bobyqaControl$solution) expect_identical(bobyqaTest$value, bobyqaControl$objective) expect_identical(bobyqaTest$iter, bobyqaControl$iterations) expect_identical(bobyqaTest$convergence, bobyqaControl$status) expect_identical(bobyqaTest$message, bobyqaControl$message) # Test NEWUOA algorithm newuoaTest <- newuoa(c(1, 2), rbf) newuoaControl <- nloptr(x0 = c(1, 2), eval_f = rbf, opts = list(algorithm = "NLOPT_LN_NEWUOA", xtol_rel = 1e-6, maxeval = 1000L)) expect_identical(newuoaTest$par, newuoaControl$solution) expect_identical(newuoaTest$value, newuoaControl$objective) expect_identical(newuoaTest$iter, newuoaControl$iterations) expect_identical(newuoaTest$convergence, newuoaControl$status) expect_identical(newuoaTest$message, newuoaControl$message) nloptr/tools/0000755000176200001440000000000014763300100012722 5ustar liggesusersnloptr/tools/cmake_config.sh0000755000176200001440000000233214763300100015666 0ustar liggesusers#! /bin/sh #### CMAKE CONFIGURATION #### CMAKE_BIN="" if test -z "$CMAKE_BIN"; then # Look for a cmake3 binary in the current path CMAKE_BIN=`which cmake3 2>/dev/null` fi if test -z "$CMAKE_BIN"; then # Look for a cmake binary in the current path CMAKE_BIN=`which cmake 2>/dev/null` fi if test -z "$CMAKE_BIN"; then # Check for a MacOS specific path CMAKE_BIN=`which /Applications/CMake.app/Contents/bin/cmake 2>/dev/null` fi if test -z "$CMAKE_BIN"; then echo "" echo "------------------ CMAKE NOT FOUND --------------------" echo "" echo "CMake was not found on the PATH. Please install CMake:" echo "" echo " - sudo yum install cmake (Fedora/CentOS; inside a terminal)" echo " - sudo apt install cmake (Debian/Ubuntu; inside a terminal)." echo " - sudo pacman -S cmake (Arch Linux; inside a terminal)." echo " - brew install --cask cmake (MacOS; inside a terminal with Homebrew)" echo " - sudo port install cmake (MacOS; inside a terminal with MacPorts)" echo "" echo "Alternatively install CMake from: " echo "" echo "-------------------------------------------------------" echo "" exit 1 fi echo set CMAKE_BIN=$CMAKE_BIN nloptr/tools/winlibs.R0000644000176200001440000000047714351106341014530 0ustar liggesusers# Build against mingw-w64 build of nlopt if(!file.exists("../windows/nlopt-2.7.1/include/nlopt.hpp")){ download.file("https://github.com/rwinlib/nlopt/archive/v2.7.1.zip", "lib.zip", quiet = TRUE) dir.create("../windows", showWarnings = FALSE) unzip("lib.zip", exdir = "../windows") unlink("lib.zip") } nloptr/tools/cmake_call.sh0000755000176200001440000000211314763300100015331 0ustar liggesusers#! /bin/sh CMAKE_BIN=$1 : ${R_HOME=$(R RHOME)} RSCRIPT_BIN=${R_HOME}/bin/Rscript NCORES=`${RSCRIPT_BIN} -e "cat(min(2, parallel::detectCores(logical = FALSE), na.rm=TRUE))"` cd src # Compile NLOpt from source sh ./scripts/nlopt_download.sh ${RSCRIPT_BIN} dot() { file=$1; shift; . "$file"; } dot ./scripts/r_config.sh "" ${RSCRIPT_BIN} --vanilla -e 'getRversion() > "4.0.0"' | grep TRUE > /dev/null if [ $? -eq 0 ]; then CMAKE_ADD_AR="-D CMAKE_AR=${AR}" CMAKE_ADD_RANLIB="-D CMAKE_RANLIB=${RANLIB}" else CMAKE_ADD_AR="" CMAKE_ADD_RANLIB="" fi mkdir nlopt-build mkdir nlopt cd nlopt-build ${CMAKE_BIN} \ -D BUILD_SHARED_LIBS=OFF \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=../nlopt \ -D NLOPT_CXX=ON \ -D NLOPT_GUILE=OFF \ -D NLOPT_MATLAB=OFF \ -D NLOPT_OCTAVE=OFF \ -D NLOPT_PYTHON=OFF \ -D NLOPT_SWIG=OFF \ -D NLOPT_TESTS=OFF \ ${CMAKE_ADD_AR} ${CMAKE_ADD_RANLIB} ../nlopt-src make -j${NCORES} make install cd .. lib_folder=`ls -d nlopt/lib*` echo "Moving ${lib_folder} to nlopt/lib" mv ${lib_folder} nlopt/lib # Cleanup sh ./scripts/nlopt_cleanup.sh nloptr/README.md0000644000176200001440000001116514765070675013074 0ustar liggesusers # [**nloptr**](https://astamm.github.io/nloptr/) [![R-CMD-check](https://github.com/astamm/nloptr/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/astamm/nloptr/actions/workflows/R-CMD-check.yaml) [![Codecov test coverage](https://codecov.io/gh/astamm/nloptr/graph/badge.svg)](https://app.codecov.io/gh/astamm/nloptr) [![pkgdown](https://github.com/astamm/nloptr/workflows/pkgdown/badge.svg)](https://github.com/astamm/nloptr/actions) [![CRAN status](https://www.r-pkg.org/badges/version/nloptr)](https://CRAN.R-project.org/package=nloptr) [**nloptr**](https://astamm.github.io/nloptr/) is an R interface to [NLopt](https://nlopt.readthedocs.io/en/latest/), a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. It can be used to solve general nonlinear programming problems with nonlinear constraints and lower and upper bounds for the controls, such as $$ \min_{x \in \mathbb{R}^n} \quad f(x), $$ s.t. $g(x) \le 0$, $h(x) = 0$ and $\ell \le x \le u$. The [NLopt](https://nlopt.readthedocs.io/en/latest/) library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. See the [website](https://nlopt.readthedocs.io/en/latest/Citing_NLopt/) for information on how to cite NLopt and the algorithms you use. ## Installation ### Windows On Windows, for old versions of R (`R <= 4.1.x`), the *nlopt* `v2.7.1` from [rwinlib](https://github.com/rwinlib/nlopt) is used. For newer versions of R (`R >= 4.2.0`), the *nlopt* version from the corresponding `RTools` toolchain is used. ### Linux and macOS On Unix-like platforms, we use `pkg-config` to find a suitable system build of [NLopt](https://nlopt.readthedocs.io/en/latest/) (i.e. with version `>= 2.7.0`). - If it is found it is used. - Otherwise, [NLopt](https://nlopt.readthedocs.io/en/latest/) 2.10.0 is built from included sources using [CMake](https://cmake.org). In this case, a binary of [CMake](https://cmake.org) stored in environment variable `CMAKE_BIN` is searched on the `PATH` and, alternatively, on a macOS-specific location. If that variable cannot be set, install will abort suggesting ways of installing [CMake](https://cmake.org). The minimal version requirement on `cmake` is `>= 3.2.0`. ### Installing [CMake](https://cmake.org) (macOS and Linux only) Minimal version requirement for `cmake` is `3.2.0`. You can install [CMake](https://cmake.org) by following [CMake installation instructions](https://cmake.org/resources/). The important thing is that you add the [CMake](https://cmake.org) binary to your `PATH`: - On macOS, you can install [CMake](https://cmake.org) and then run it. In the menu bar, there is an item *How to Install For Command Line Use* which you can click on to have proper instructions on how to update your `PATH`. Note that the location of the [CMake](https://cmake.org) binary is always `/Applications/CMake.app/Contents/bin/cmake`. Hence, [**nloptr**](https://astamm.github.io/nloptr/) knows where to find it even if you do not update your `PATH`. - On Linux, it will be automatically added unless you specifically change the default installation directory before building [CMake](https://cmake.org). Alternatively, you can set an environment variable `CMAKE_BIN` pointing to a [CMake](https://cmake.org) binary of your liking on your computer for [**nloptr**](https://astamm.github.io/nloptr/) to use. ### Installing [**nloptr**](https://astamm.github.io/nloptr/) You can install [**nloptr**](https://astamm.github.io/nloptr/) from CRAN using: ``` r install.packages("nloptr") ``` Alternatively, you can install the development version from GitHub: ``` r # install.packages("remotes") remotes::install_github("astamm/nloptr") ``` ## Acknowledgments I would like to express my sincere gratitude to [Avraham Adler](https://github.com/aadler), [Dirk Eddelbuettel](https://github.com/eddelbuettel), [Mikael Jagan](https://github.com/jaganmn), [Tomas Kalibera](https://github.com/kalibera), [Jeroen Ooms](https://github.com/jeroen) and [Jelmer Ypma](https://github.com/jyypma) for their contributions and the very instructive discussions about the pros and cons of various build strategies in R packages. ## Reference Steven G. Johnson, The NLopt nonlinear-optimization package, nloptr/build/0000755000176200001440000000000014765523731012704 5ustar liggesusersnloptr/build/vignette.rds0000644000176200001440000000030214765523731015236 0ustar liggesusersb```b`aaf`b2 1# '/() MAaȠrCgIq*  :ּb4.y) 3G;<E T [fN*ސ89 d Bw(,/׃ @?{49'ݣ\)%ziE@ wVvnloptr/configure0000755000176200001440000037705714765523732013540 0ustar liggesusers#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for nloptr 2.0.0. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='nloptr' PACKAGE_TARNAME='nloptr' PACKAGE_VERSION='2.0.0' PACKAGE_STRING='nloptr 2.0.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS NLOPT_LIBS NLOPT_CPPFLAGS CMAKE_BIN have_pkg_config CXXCPP OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures nloptr 2.0.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/nloptr] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of nloptr 2.0.0:";; esac cat <<\_ACEOF Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXXCPP C++ preprocessor Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF nloptr configure 2.0.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by nloptr $as_me 2.0.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ## Set R_HOME, respecting an environment variable if set : ${R_HOME=$(R RHOME)} if test -z "${R_HOME}"; then as_fn_error $? "Could not determine R_HOME." "$LINENO" 5 fi CXX=`"${R_HOME}/bin/R" CMD config CXX` if test -z "${CXX}"; then as_fn_error $? "No C++ compiler available" "$LINENO" 5 fi CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS` CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS` CXX11FLAGS=`"${R_HOME}/bin/R" CMD config CXX11FLAGS` ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 printf %s "checking whether the C++ compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 printf %s "checking for C++ compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else case e in #( e) CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else case e in #( e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 ;; esac fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 ;; esac fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else case e in #( e) # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP ;; esac fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else case e in #( e) CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else case e in #( e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 ;; esac fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX ;; esac fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; esac fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 ;; esac fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ## Default to build from source need_to_build="yes" ## But: Can we use pkg-config? # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_have_pkg_config+y} then : printf %s "(cached) " >&6 else case e in #( e) case $have_pkg_config in [\\/]* | ?:[\\/]*) ac_cv_path_have_pkg_config="$have_pkg_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_have_pkg_config="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_have_pkg_config" && ac_cv_path_have_pkg_config="no" ;; esac ;; esac fi have_pkg_config=$ac_cv_path_have_pkg_config if test -n "$have_pkg_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_pkg_config" >&5 printf "%s\n" "$have_pkg_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ## If yes, also check for whether pkg-config knows nlopt if test x"${have_pkg_config}" != x"no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if pkg-config knows NLopt" >&5 printf %s "checking if pkg-config knows NLopt... " >&6; } if pkg-config --exists nlopt; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ## Since nlopt has been found, test for minimal version requirement { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pkg-config checking NLopt version" >&5 printf %s "checking for pkg-config checking NLopt version... " >&6; } if pkg-config --atleast-version=2.7.0 nlopt; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >= 2.7.0" >&5 printf "%s\n" ">= 2.7.0" >&6; } nlopt_include=$(pkg-config --cflags nlopt) nlopt_libs=$(pkg-config --libs nlopt) ## copy headers to inst/include for reverse LinkingTo dependencies headers_location=$(pkg-config --variable=includedir nlopt) need_to_build="no" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: insufficient: NLopt 2.7.0 or later is preferred." >&5 printf "%s\n" "insufficient: NLopt 2.7.0 or later is preferred." >&6; } fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi ## So do we need to build if test x"${need_to_build}" != x"no"; then # Extract the first word of "cmake", so it can be a program name with args. set dummy cmake; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CMAKE_BIN+y} then : printf %s "(cached) " >&6 else case e in #( e) case $CMAKE_BIN in [\\/]* | ?:[\\/]*) ac_cv_path_CMAKE_BIN="$CMAKE_BIN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CMAKE_BIN="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CMAKE_BIN" && ac_cv_path_CMAKE_BIN="no" ;; esac ;; esac fi CMAKE_BIN=$ac_cv_path_CMAKE_BIN if test -n "$CMAKE_BIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CMAKE_BIN" >&5 printf "%s\n" "$CMAKE_BIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"${CMAKE_BIN}" = x"no"; then . tools/cmake_config.sh if test -z "${CMAKE_BIN}"; then ## also error to end configure here as_fn_error $? "Could not find 'cmake'." "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using cmake via $CMAKE_BIN" >&5 printf "%s\n" "using cmake via $CMAKE_BIN" >&6; } ## 'uname -m' on M1 give x86_64 which is ... not helping machine=`"${R_HOME}/bin/Rscript" -e 'cat(Sys.info()["machine"])'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using NLopt via local cmake build on ${machine}" >&5 printf "%s\n" "using NLopt via local cmake build on ${machine}" >&6; } tools/cmake_call.sh "$CMAKE_BIN" ## cmake_call.sh installs into nlopt/include, nlopt/lib nlopt_include="-Inlopt/include" nlopt_libs="nlopt/lib/libnlopt.a" ## copy headers to inst/include for reverse LinkingTo dependencies headers_location="src/nlopt/include" fi ## does the actual copy of the headers into inst/include { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Copying headers found in ${headers_location} into inst/include" >&5 printf "%s\n" "Copying headers found in ${headers_location} into inst/include" >&6; } cp ${headers_location}/nlopt.* inst/include/ ## Now use all the values NLOPT_CPPFLAGS="$nlopt_include" NLOPT_LIBS="$nlopt_libs" ac_config_files="$ac_config_files src/Makevars" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by nloptr $as_me 2.0.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ nloptr config.status 2.0.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi nloptr/man/0000755000176200001440000000000014633255630012352 5ustar liggesusersnloptr/man/neldermead.Rd0000644000176200001440000000503114472612401014732 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nm.R \name{neldermead} \alias{neldermead} \title{Nelder-Mead Simplex} \usage{ neldermead( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ An implementation of almost the original Nelder-Mead simplex algorithm. } \details{ Provides explicit support for bound constraints, using essentially the method proposed in Box. Whenever a new point would lie outside the bound constraints the point is moved back exactly onto the constraint. } \note{ The author of NLopt would tend to recommend the Subplex method instead. } \examples{ # Fletcher and Powell's helic valley fphv <- function(x) 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 x0 <- c(-1, 0, 0) neldermead(x0, fphv) # 1 0 0 # Powell's Singular Function (PSF) psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 x0 <- c(3, -1, 0, 1) neldermead(x0, psf) # 0 0 0 0, needs maximum number of function calls \dontrun{ # Bounded version of Nelder-Mead rosenbrock <- function(x) { ## Rosenbrock Banana function 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2 + 100 * (x[3] - x[2]^2)^2 + (1 - x[2])^2 } lower <- c(-Inf, 0, 0) upper <- c( Inf, 0.5, 1) x0 <- c(0, 0.1, 0.1) S <- neldermead(c(0, 0.1, 0.1), rosenbrock, lower, upper, nl.info = TRUE) # $xmin = c(0.7085595, 0.5000000, 0.2500000) # $fmin = 0.3353605} } \references{ J. A. Nelder and R. Mead, ``A simplex method for function minimization,'' The Computer Journal 7, p. 308-313 (1965). M. J. Box, ``A new method of constrained optimization and a comparison with other methods,'' Computer J. 8 (1), 42-52 (1965). } \seealso{ \code{dfoptim::nmk} } \author{ Hans W. Borchers } nloptr/man/nloptr.get.default.options.Rd0000644000176200001440000000245014351106341020042 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.get.default.options.R \name{nloptr.get.default.options} \alias{nloptr.get.default.options} \title{Return a data.frame with all the options that can be supplied to nloptr.} \usage{ nloptr.get.default.options() } \value{ The return value contains a \code{data.frame} with the following elements \item{name}{name of the option} \item{type}{type (numeric, logical, integer, character)} \item{possible_values}{string explaining the values the option can take} \item{default}{default value of the option (as a string)} \item{is_termination_condition}{is this option part of the termination conditions?} \item{description}{description of the option (taken from NLopt website if it's an option that is passed on to NLopt).} } \description{ This function returns a data.frame with all the options that can be supplied to \code{\link[nloptr:nloptr]{nloptr}}. The data.frame contains the default values of the options and an explanation. A user-friendly way to show these options is by using the function \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}}. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/mlsl.Rd0000644000176200001440000000757714633255630013630 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mlsl.R \name{mlsl} \alias{mlsl} \title{Multi-level Single-linkage} \usage{ mlsl( x0, fn, gr = NULL, lower, upper, local.method = "LBFGS", low.discrepancy = TRUE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{local.method}{only \code{BFGS} for the moment.} \item{low.discrepancy}{logical; shall a low discrepancy variation be used.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ The \dQuote{Multi-Level Single-Linkage} (\acronym{MLSL}) algorithm for global optimization searches by a sequence of local optimizations from random starting points. A modification of \acronym{MLSL} is included using a low-discrepancy sequence (\acronym{LDS}) instead of pseudorandom numbers. } \details{ \acronym{MLSL} is a \sQuote{multistart} algorithm: it works by doing a sequence of local optimizations---using some other local optimization algorithm---from random or low-discrepancy starting points. MLSL is distinguished, however, by a `clustering' heuristic that helps it to avoid repeated searches of the same local optima and also has some theoretical guarantees of finding all local optima in a finite number of local minimizations. The local-search portion of \acronym{MLSL} can use any of the other algorithms in \acronym{NLopt}, and, in particular, can use either gradient-based or derivative-free algorithms. For this wrapper only gradient-based \acronym{LBFGS} is available as local method. } \note{ If you don't set a stopping tolerance for your local-optimization algorithm, \acronym{MLSL} defaults to \code{ftol_rel = 1e-15} and \code{xtol_rel = 1e-7} for the local searches. } \examples{ ## Minimize the Hartmann 6-Dimensional function ## See https://www.sfu.ca/~ssurjano/hart6.html a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(.1312, .2329, .2348, .4047, .1696, .4135, .1451, .8828, .5569, .8307, .3522, .8732, .0124, .3736, .2883, .5743, .8283, .1004, .3047, .1091, .5886, .9991, .6650, .0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } ## The function has a global minimum of -3.32237 at ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) S <- mlsl(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000), a = a, A = A, B = B) } \references{ A. H. G. Rinnooy Kan and G. T. Timmer, \dQuote{Stochastic global optimization methods} Mathematical Programming, vol. 39, p. 27-78 (1987). Sergei Kucherenko and Yury Sytsko, \dQuote{Application of deterministic low-discrepancy sequences in global optimization}, Computational Optimization and Applications, vol. 30, p. 297-318 (2005). } \seealso{ \code{\link{direct}} } \author{ Hans W. Borchers } nloptr/man/slsqp.Rd0000644000176200001440000000751714633255630014015 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/slsqp.R \name{slsqp} \alias{slsqp} \title{Sequential Quadratic Programming (SQP)} \usage{ slsqp( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components. This is new behavior in line with the rest of the \code{nloptr} arguments. To use the old behavior, please set \code{deprecatedBehavior} to \code{TRUE}.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{heq}{function defining the equality constraints, that is \code{heq = 0} for all components.} \item{heqjac}{Jacobian of function \code{heq}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Sequential (least-squares) quadratic programming (SQP) algorithm for nonlinearly constrained, gradient-based optimization, supporting both equality and inequality constraints. } \details{ The algorithm optimizes successive second-order (quadratic/least-squares) approximations of the objective function (via BFGS updates), with first-order (affine) approximations of the constraints. } \note{ See more infos at \url{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } S <- slsqp(x0.hs100, fn = fn.hs100, # no gradients and jacobians provided hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8, check_derivatives = TRUE), deprecatedBehavior = FALSE) ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) S } \references{ Dieter Kraft, ``A software package for sequential quadratic programming'', Technical Report DFVLR-FB 88-28, Institut fuer Dynamik der Flugsysteme, Oberpfaffenhofen, July 1988. } \seealso{ \code{alabama::auglag}, \code{Rsolnp::solnp}, \code{Rdonlp2::donlp2} } \author{ Hans W. Borchers } nloptr/man/nloptr.Rd0000644000176200001440000002253714614001640014155 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.R \name{nloptr} \alias{nloptr} \title{R interface to NLopt} \usage{ nloptr( x0, eval_f, eval_grad_f = NULL, lb = NULL, ub = NULL, eval_g_ineq = NULL, eval_jac_g_ineq = NULL, eval_g_eq = NULL, eval_jac_g_eq = NULL, opts = list(), ... ) } \arguments{ \item{x0}{vector with starting values for the optimization.} \item{eval_f}{function that returns the value of the objective function. It can also return gradient information at the same time in a list with elements "objective" and "gradient" (see below for an example).} \item{eval_grad_f}{function that returns the value of the gradient of the objective function. Not all of the algorithms require a gradient.} \item{lb}{vector with lower bounds of the controls (use \code{-Inf} for controls without lower bound), by default there are no lower bounds for any of the controls.} \item{ub}{vector with upper bounds of the controls (use \code{Inf} for controls without upper bound), by default there are no upper bounds for any of the controls.} \item{eval_g_ineq}{function to evaluate (non-)linear inequality constraints that should hold in the solution. It can also return gradient information at the same time in a list with elements "constraints" and "jacobian" (see below for an example).} \item{eval_jac_g_ineq}{function to evaluate the Jacobian of the (non-)linear inequality constraints that should hold in the solution.} \item{eval_g_eq}{function to evaluate (non-)linear equality constraints that should hold in the solution. It can also return gradient information at the same time in a list with elements "constraints" and "jacobian" (see below for an example).} \item{eval_jac_g_eq}{function to evaluate the Jacobian of the (non-)linear equality constraints that should hold in the solution.} \item{opts}{list with options. The option "\code{algorithm}" is required. Check the \href{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/}{NLopt website} for a full list of available algorithms. Other options control the termination conditions (\code{minf_max, ftol_rel, ftol_abs, xtol_rel,} \code{xtol_abs, maxeval, maxtime}). Default is \code{xtol_rel} = 1e-4. More information \href{https://nlopt.readthedocs.io/en/latest/NLopt_Introduction/#termination-conditions}{here}. #nolint A full description of all options is shown by the function \code{nloptr.print.options()}. Some algorithms with equality constraints require the option \code{local_opts}, which contains a list with an algorithm and a termination condition for the local algorithm. See \code{?`nloptr-package`} for an example. The option \code{print_level} controls how much output is shown during the optimization process. Possible values: \tabular{ll}{0 (default) \tab no output \cr 1 \tab show iteration number and value of objective function \cr 2 \tab 1 + show value of (in)equalities \cr 3 \tab 2 + show value of controls} The option \code{check_derivatives} (default = \code{FALSE}) can be used to run to compare the analytic gradients with finite difference approximations. The option \code{check_derivatives_print} (\code{'all'} (default), \code{'errors'}, \code{'none'}) controls the output of the derivative checker, if it is run, showing all comparisons, only those that resulted in an error, or none. The option \code{check_derivatives_tol} (default = 1e-04), determines when a difference between an analytic gradient and its finite difference approximation is flagged as an error.} \item{...}{arguments that will be passed to the user-defined objective and constraints functions.} } \value{ The return value contains a list with the inputs, and additional elements \item{call}{the call that was made to solve} \item{status}{integer value with the status of the optimization (0 is success)} \item{message}{more informative message with the status of the optimization} \item{iterations}{number of iterations that were executed} \item{objective}{value if the objective function in the solution} \item{solution}{optimal value of the controls} \item{version}{version of NLopt that was used} } \description{ nloptr is an R interface to NLopt, a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. Most of the information here has been taken from \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where more details are available. } \details{ NLopt addresses general nonlinear optimization problems of the form: \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} where \eqn{f(x)} is the objective function to be minimized and \eqn{x} represents the \eqn{n} optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \eqn{lb} and \eqn{ub}. For partially or totally unconstrained problems the bounds can take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} nonlinear inequality constraints (sometimes called a nonlinear programming problem), which can be specified in \eqn{g(x)}, and equality constraints that can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt can handle constraints. } \note{ See \code{?`nloptr-package`} for an extended example. } \examples{ library('nloptr') ## Rosenbrock Banana function and gradient in separate functions eval_f <- function(x) { return(100 * (x[2] - x[1] * x[1])^2 + (1 - x[1])^2) } eval_grad_f <- function(x) { return(c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1]))) } # initial values x0 <- c(-1.2, 1) opts <- list("algorithm"="NLOPT_LD_LBFGS", "xtol_rel"=1.0e-8) # solve Rosenbrock Banana function res <- nloptr(x0=x0, eval_f=eval_f, eval_grad_f=eval_grad_f, opts=opts) print(res) ## Rosenbrock Banana function and gradient in one function # this can be used to economize on calculations eval_f_list <- function(x) { return( list( "objective" = 100 * (x[2] - x[1] * x[1]) ^ 2 + (1 - x[1]) ^ 2, "gradient" = c(-400 * x[1] * (x[2] - x[1] * x[1]) - 2 * (1 - x[1]), 200 * (x[2] - x[1] * x[1])))) } # solve Rosenbrock Banana function using an objective function that # returns a list with the objective value and its gradient res <- nloptr(x0=x0, eval_f=eval_f_list, opts=opts) print(res) # Example showing how to solve the problem from the NLopt tutorial. # # min sqrt(x2) # s.t. x2 >= 0 # x2 >= (a1*x1 + b1)^3 # x2 >= (a2*x1 + b2)^3 # where # a1 = 2, b1 = 0, a2 = -1, b2 = 1 # # re-formulate constraints to be of form g(x) <= 0 # (a1*x1 + b1)^3 - x2 <= 0 # (a2*x1 + b2)^3 - x2 <= 0 library('nloptr') # objective function eval_f0 <- function(x, a, b) { return(sqrt(x[2])) } # constraint function eval_g0 <- function(x, a, b) { return((a*x[1] + b)^3 - x[2]) } # gradient of objective function eval_grad_f0 <- function(x, a, b) { return(c(0, .5/sqrt(x[2]))) } # Jacobian of constraint eval_jac_g0 <- function(x, a, b) { return(rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0))) } # functions with gradients in objective and constraint function # this can be useful if the same calculations are needed for # the function value and the gradient eval_f1 <- function(x, a, b) { return(list("objective"=sqrt(x[2]), "gradient"=c(0,.5/sqrt(x[2])))) } eval_g1 <- function(x, a, b) { return(list("constraints"=(a*x[1] + b)^3 - x[2], "jacobian"=rbind(c(3*a[1]*(a[1]*x[1] + b[1])^2, -1.0), c(3*a[2]*(a[2]*x[1] + b[2])^2, -1.0)))) } # define parameters a <- c(2,-1) b <- c(0, 1) # Solve using NLOPT_LD_MMA with gradient information supplied in separate # function. res0 <- nloptr(x0=c(1.234,5.678), eval_f=eval_f0, eval_grad_f=eval_grad_f0, lb = c(-Inf,0), ub = c(Inf,Inf), eval_g_ineq = eval_g0, eval_jac_g_ineq = eval_jac_g0, opts = list("algorithm"="NLOPT_LD_MMA"), a = a, b = b) print(res0) # Solve using NLOPT_LN_COBYLA without gradient information res1 <- nloptr(x0=c(1.234,5.678), eval_f=eval_f0, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g0, opts = list("algorithm" = "NLOPT_LN_COBYLA"), a = a, b = b) print(res1) # Solve using NLOPT_LD_MMA with gradient information in objective function res2 <- nloptr(x0=c(1.234, 5.678), eval_f=eval_f1, lb = c(-Inf, 0), ub = c(Inf, Inf), eval_g_ineq = eval_g1, opts = list("algorithm"="NLOPT_LD_MMA", "check_derivatives" = TRUE), a = a, b = b) print(res2) } \references{ Steven G. Johnson, The NLopt nonlinear-optimization package, \url{https://github.com/stevengj/nlopt} } \seealso{ \code{\link[nloptr:nloptr.print.options]{nloptr.print.options}} \code{\link[nloptr:check.derivatives]{check.derivatives}} \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} } \author{ Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) } \keyword{interface} \keyword{optimize} nloptr/man/auglag.Rd0000644000176200001440000001367614633255630014116 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/auglag.R \name{auglag} \alias{auglag} \title{Augmented Lagrangian Algorithm} \usage{ auglag( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, heq = NULL, heqjac = NULL, localsolver = "COBYLA", localtol = 1e-06, ineq2local = FALSE, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of the objective function; will be provided provided is \code{NULL} and the solver requires derivatives.} \item{lower, upper}{lower and upper bound constraints.} \item{hin, hinjac}{defines the inequality constraints, \code{hin(x) >= 0}} \item{heq, heqjac}{defines the equality constraints, \code{heq(x) = 0}.} \item{localsolver}{available local solvers: COBYLA, LBFGS, MMA, or SLSQP.} \item{localtol}{tolerance applied in the selected local solver.} \item{ineq2local}{logical; shall the inequality constraints be treated by the local solver?; not possible at the moment.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{global_solver}{the global NLOPT solver used.} \item{local_solver}{the local NLOPT solver used, LBFGS or COBYLA.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ The Augmented Lagrangian method adds additional terms to the unconstrained objective function, designed to emulate a Lagrangian multiplier. } \details{ This method combines the objective function and the nonlinear inequality/equality constraints (if any) in to a single function: essentially, the objective plus a `penalty' for any violated constraints. This modified objective function is then passed to another optimization algorithm with no nonlinear constraints. If the constraints are violated by the solution of this sub-problem, then the size of the penalties is increased and the process is repeated; eventually, the process must converge to the desired solution (if it exists). Since all of the actual optimization is performed in this subsidiary optimizer, the subsidiary algorithm that you specify determines whether the optimization is gradient-based or derivative-free. The local solvers available at the moment are \verb{COBYLA'' (for the derivative-free approach) and }LBFGS'', \verb{MMA'', or }SLSQP'' (for smooth functions). The tolerance for the local solver has to be provided. There is a variant that only uses penalty functions for equality constraints while inequality constraints are passed through to the subsidiary algorithm to be handled directly; in this case, the subsidiary algorithm must handle inequality constraints. (At the moment, this variant has been turned off because of problems with the NLOPT library.) } \note{ Birgin and Martinez provide their own free implementation of the method as part of the TANGO project; other implementations can be found in semi-free packages like LANCELOT. } \examples{ x0 <- c(1, 1) fn <- function(x) (x[1] - 2) ^ 2 + (x[2] - 1) ^ 2 hin <- function(x) 0.25 * x[1]^2 + x[2] ^ 2 - 1 # hin <= 0 heq <- function(x) x[1] - 2 * x[2] + 1 # heq = 0 gr <- function(x) nl.grad(x, fn) hinjac <- function(x) nl.jacobian(x, hin) heqjac <- function(x) nl.jacobian(x, heq) # with COBYLA auglag(x0, fn, gr = NULL, hin = hin, heq = heq, deprecatedBehavior = FALSE) # $par: 0.8228761 0.9114382 # $value: 1.393464 # $iter: 1001 auglag(x0, fn, gr = NULL, hin = hin, heq = heq, localsolver = "SLSQP", deprecatedBehavior = FALSE) # $par: 0.8228757 0.9114378 # $value: 1.393465 # $iter 184 ## Example from the alabama::auglag help page ## Parameters should be roughly (0, 0, 1) with an objective value of 1. fn <- function(x) (x[1] + 3 * x[2] + x[3]) ^ 2 + 4 * (x[1] - x[2]) ^ 2 heq <- function(x) x[1] + x[2] + x[3] - 1 # hin restated from alabama example to be <= 0. hin <- function(x) c(-6 * x[2] - 4 * x[3] + x[1] ^ 3 + 3, -x[1], -x[2], -x[3]) set.seed(12) auglag(runif(3), fn, hin = hin, heq = heq, localsolver= "lbfgs", deprecatedBehavior = FALSE) # $par: 4.861756e-08 4.732373e-08 9.999999e-01 # $value: 1 # $iter: 145 ## Powell problem from the Rsolnp::solnp help page ## Parameters should be roughly (-1.7171, 1.5957, 1.8272, -0.7636, -0.7636) ## with an objective value of 0.0539498478. x0 <- c(-2, 2, 2, -1, -1) fn1 <- function(x) exp(x[1] * x[2] * x[3] * x[4] * x[5]) eqn1 <-function(x) c(x[1] * x[1] + x[2] * x[2] + x[3] * x[3] + x[4] * x[4] + x[5] * x[5] - 10, x[2] * x[3] - 5 * x[4] * x[5], x[1] * x[1] * x[1] + x[2] * x[2] * x[2] + 1) auglag(x0, fn1, heq = eqn1, localsolver = "mma", deprecatedBehavior = FALSE) # $par: -1.7173645 1.5959655 1.8268352 -0.7636185 -0.7636185 # $value: 0.05394987 # $iter: 916 } \references{ Andrew R. Conn, Nicholas I. M. Gould, and Philippe L. Toint, ``A globally convergent augmented Lagrangian algorithm for optimization with general constraints and simple bounds,'' SIAM J. Numer. Anal. vol. 28, no. 2, p. 545-572 (1991). E. G. Birgin and J. M. Martinez, ``Improving ultimate convergence of an augmented Lagrangian method," Optimization Methods and Software vol. 23, no. 2, p. 177-195 (2008). } \seealso{ \code{alabama::auglag}, \code{Rsolnp::solnp} } \author{ Hans W. Borchers } nloptr/man/varmetric.Rd0000644000176200001440000000427514472612401014637 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/varmetric.R \name{varmetric} \alias{varmetric} \title{Shifted Limited-memory Variable-metric} \usage{ varmetric( x0, fn, gr = NULL, rank2 = TRUE, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{rank2}{logical; if true uses a rank-2 update method, else rank-1.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of control parameters, see \code{nl.opts} for help.} \item{...}{further arguments to be passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Shifted limited-memory variable-metric algorithm. } \details{ Variable-metric methods are a variant of the quasi-Newton methods, especially adapted to large-scale unconstrained (or bound constrained) minimization. } \note{ Based on L. Luksan's Fortran implementation of a shifted limited-memory variable-metric algorithm. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } # 25-dimensional box constrained: par[24] is *not* at the boundary S <- varmetric(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), nl.info = TRUE, control = list(xtol_rel=1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ J. Vlcek and L. Luksan, ``Shifted limited-memory variable metric methods for large-scale unconstrained minimization,'' J. Computational Appl. Math. 186, p. 365-390 (2006). } \seealso{ \code{\link{lbfgs}} } \author{ Hans W. Borchers } nloptr/man/check.derivatives.Rd0000644000176200001440000000455314472612401016243 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check.derivatives.R \name{check.derivatives} \alias{check.derivatives} \title{Check analytic gradients of a function using finite difference approximations} \usage{ check.derivatives( .x, func, func_grad, check_derivatives_tol = 1e-04, check_derivatives_print = "all", func_grad_name = "grad_f", ... ) } \arguments{ \item{.x}{point at which the comparison is done.} \item{func}{function to be evaluated.} \item{func_grad}{function calculating the analytic gradients.} \item{check_derivatives_tol}{option determining when differences between the analytic gradient and its finite difference approximation are flagged as an error.} \item{check_derivatives_print}{option related to the amount of output. 'all' means that all comparisons are shown, 'errors' only shows comparisons that are flagged as an error, and 'none' shows the number of errors only.} \item{func_grad_name}{option to change the name of the gradient function that shows up in the output.} \item{...}{further arguments passed to the functions func and func_grad.} } \value{ The return value contains a list with the analytic gradient, its finite difference approximation, the relative errors, and vector comparing the relative errors to the tolerance. } \description{ This function compares the analytic gradients of a function with a finite difference approximation and prints the results of these checks. } \examples{ library('nloptr') # example with correct gradient f <- function(x, a) sum((x - a) ^ 2) f_grad <- function(x, a) 2 * (x - a) check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = 'none', a = runif(10)) # example with incorrect gradient f_grad <- function(x, a) 2 * (x - a) + c(0, 0.1, rep(0, 8)) check.derivatives(.x = 1:10, func = f, func_grad = f_grad, check_derivatives_print = 'errors', a = runif(10)) # example with incorrect gradient of vector-valued function g <- function(x, a) c(sum(x - a), sum((x - a) ^ 2)) g_grad <- function(x, a) { rbind(rep(1, length(x)) + c(0, 0.01, rep(0, 8)), 2 * (x - a) + c(0, 0.1, rep(0, 8))) } check.derivatives(.x = 1:10, func = g, func_grad = g_grad, check_derivatives_print = 'all', a = runif(10)) } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/nloptr-package.Rd0000644000176200001440000001160214472612401015542 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr-package.R \docType{package} \name{nloptr-package} \alias{nloptr-package} \title{R interface to NLopt} \description{ nloptr is an R interface to NLopt, a free/open-source library for nonlinear optimization started by Steven G. Johnson, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. The NLopt library is available under the GNU Lesser General Public License (LGPL), and the copyrights are owned by a variety of authors. Most of the information here has been taken from \href{https://nlopt.readthedocs.io/en/latest/}{the NLopt website}, where more details are available. } \details{ NLopt addresses general nonlinear optimization problems of the form: \deqn{\min f(x)\quad x\in R^n}{min f(x) x in R^n} \deqn{\textrm{s.t. }\\ g(x) \leq 0\\ h(x) = 0\\ lb \leq x \leq ub}{ s.t. g(x) <= 0 h(x) = 0 lb <= x <= ub} where \eqn{f(x)} is the objective function to be minimized and \eqn{x} represents the \eqn{n} optimization parameters. This problem may optionally be subject to the bound constraints (also called box constraints), \eqn{lb} and \eqn{ub}. For partially or totally unconstrained problems the bounds can take \code{-Inf} or \code{Inf}. One may also optionally have \eqn{m} nonlinear inequality constraints (sometimes called a nonlinear programming problem), which can be specified in \eqn{g(x)}, and equality constraints that can be specified in \eqn{h(x)}. Note that not all of the algorithms in NLopt can handle constraints. An optimization problem can be solved with the general \code{nloptr} interface, or using one of the wrapper functions for the separate algorithms; \code{auglag}, \code{bobyqa}, \code{ccsaq}, \code{cobyla}, \code{crs2lm}, \code{direct}, \code{directL}, \code{isres}, \code{lbfgs}, \code{mlsl}, \code{mma}, \code{neldermead}, \code{newuoa}, \code{sbplx}, \code{slsqp}, \code{stogo}, \code{tnewton}, \code{varmetric}. \tabular{ll}{Package: \tab nloptr\cr Type: \tab Package\cr Version: \tab 2.0.3\cr Date: \tab 2022-05-26\cr License: \tab L-GPL >= 3\cr} } \note{ See ?nloptr for more examples. } \examples{ # Example problem, number 71 from the Hock-Schittkowsky test suite. # # \min_{x} x1 * x4 * (x1 + x2 + x3) + x3 # s.t. # x1 * x2 * x3 * x4 >= 25 # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 = 40 # 1 <= x1, x2, x3, x4 <= 5 # # we re-write the inequality as # 25 - x1 * x2 * x3 * x4 <= 0 # # and the equality as # x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 - 40 = 0 # # x0 = (1, 5, 5, 1) # # optimal solution = (1.000000, 4.742999, 3.821151, 1.379408) library('nloptr') # # f(x) = x1 * x4 * (x1 + x2 + x3) + x3 # eval_f <- function(x) { list("objective" = x[1] * x[4] * (x[1] + x[2] + x[3]) + x[3], "gradient" = c(x[1] * x[4] + x[4] * (x[1] + x[2] + x[3]), x[1] * x[4], x[1] * x[4] + 1.0, x[1] * (x[1] + x[2] + x[3]))) } # constraint functions # inequalities eval_g_ineq <- function(x) { constr <- c(25 - x[1] * x[2] * x[3] * x[4]) grad <- c(-x[2] * x[3] * x[4], -x[1] * x[3] * x[4], -x[1] * x[2] * x[4], -x[1] * x[2] * x[3] ) list("constraints" = constr, "jacobian" = grad) } # equalities eval_g_eq <- function(x) { constr <- c(x[1] ^ 2 + x[2] ^ 2 + x[3] ^ 2 + x[4] ^ 2 - 40) grad <- c(2.0 * x[1], 2.0 * x[2], 2.0 * x[3], 2.0 * x[4]) list("constraints" = constr, "jacobian" = grad) } # initial values x0 <- c(1, 5, 5, 1) # lower and upper bounds of control lb <- c(1, 1, 1, 1) ub <- c(5, 5, 5, 5) local_opts <- list("algorithm" = "NLOPT_LD_MMA", "xtol_rel" = 1.0e-7) opts <- list("algorithm" = "NLOPT_LD_AUGLAG", "xtol_rel" = 1.0e-7, "maxeval" = 1000, "local_opts" = local_opts) res <- nloptr(x0 = x0, eval_f = eval_f, lb = lb, ub = ub, eval_g_ineq = eval_g_ineq, eval_g_eq = eval_g_eq, opts = opts) print(res) } \references{ Steven G. Johnson, The NLopt nonlinear-optimization package, \url{https://nlopt.readthedocs.io/en/latest/} } \seealso{ \code{\link{optim}} \code{\link{nlm}} \code{\link{nlminb}} \code{Rsolnp::Rsolnp} \code{Rsolnp::solnp} \code{\link{nloptr}} \code{\link{auglag}} \code{\link{bobyqa}} \code{\link{ccsaq}} \code{\link{cobyla}} \code{\link{crs2lm}} \code{\link{direct}} \code{\link{directL}} \code{\link{isres}} \code{\link{lbfgs}} \code{\link{mlsl}} \code{\link{mma}} \code{\link{neldermead}} \code{\link{newuoa}} \code{\link{sbplx}} \code{\link{slsqp}} \code{\link{stogo}} \code{\link{tnewton}} \code{\link{varmetric}} } \author{ Steven G. Johnson and others (C code) \cr Jelmer Ypma (R interface) \cr Hans W. Borchers (wrappers) } \keyword{interface} \keyword{internal} \keyword{optimize} nloptr/man/tnewton.Rd0000644000176200001440000000452214472612401014334 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tnewton.R \name{tnewton} \alias{tnewton} \title{Preconditioned Truncated Newton} \usage{ tnewton( x0, fn, gr = NULL, lower = NULL, upper = NULL, precond = TRUE, restart = TRUE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{precond}{logical; preset L-BFGS with steepest descent.} \item{restart}{logical; restarting L-BFGS with steepest descent.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Truncated Newton methods, also called Newton-iterative methods, solve an approximating Newton system using a conjugate-gradient approach and are related to limited-memory BFGS. } \details{ Truncated Newton methods are based on approximating the objective with a quadratic function and applying an iterative scheme such as the linear conjugate-gradient algorithm. } \note{ Less reliable than Newton's method, but can handle very large problems. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p - 1)) * (x - c(1, x[-p]) ^ 2) ^ 2) } # 25-dimensional box constrained: par[24] is *not* at boundary S <- tnewton(rep(3, 25L), flb, lower = rep(2, 25L), upper = rep(4, 25L), nl.info = TRUE, control = list(xtol_rel = 1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ R. S. Dembo and T. Steihaug, ``Truncated Newton algorithms for large-scale optimization,'' Math. Programming 26, p. 190-212 (1982). } \seealso{ \code{\link{lbfgs}} } \author{ Hans W. Borchers } nloptr/man/isres.Rd0000644000176200001440000000650514633255630013774 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{isres} \alias{isres} \title{Improved Stochastic Ranking Evolution Strategy} \usage{ isres( x0, fn, lower, upper, hin = NULL, heq = NULL, maxeval = 10000, pop.size = 20 * (length(x0) + 1), xtol_rel = 1e-06, nl.info = FALSE, deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components.} \item{heq}{function defining the equality constraints, that is \code{heq = 0} for all components.} \item{maxeval}{maximum number of function evaluations.} \item{pop.size}{population size.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ The Improved Stochastic Ranking Evolution Strategy (\acronym{ISRES}) is an algorithm for nonlinearly constrained global optimization, or at least semi-global, although it has heuristics to escape local optima. } \details{ The evolution strategy is based on a combination of a mutation rule---with a log-normal step-size update and exponential smoothing---and differential variation---a Nelder-Mead-like update rule). The fitness ranking is simply via the objective function for problems without nonlinear constraints, but when nonlinear constraints are included the stochastic ranking proposed by Runarsson and Yao is employed. This method supports arbitrary nonlinear inequality and equality constraints in addition to the bounds constraints. } \note{ The initial population size for CRS defaults to \eqn{20x(n+1)} in \eqn{n} dimensions, but this can be changed. The initial population must be at least \eqn{n+1}. } \examples{ ## Rosenbrock Banana objective function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## The function as written above has a minimum of 0 at (1, 1) isres(x0 = x0, fn = rbf, lower = lb, upper = ub) ## Now subject to the inequality that x[1] + x[2] <= 1.5 hin <- function(x) {x[1] + x[2] - 1.5} S <- isres(x0 = x0, fn = rbf, hin = hin, lower = lb, upper = ub, maxeval = 2e5L, deprecatedBehavior = FALSE) S sum(S$par) } \references{ Thomas Philip Runarsson and Xin Yao, ``Search biases in constrained evolutionary optimization,'' IEEE Trans. on Systems, Man, and Cybernetics Part C: Applications and Reviews, vol. 35 (no. 2), pp. 233-243 (2005). } \author{ Hans W. Borchers } nloptr/man/sbplx.Rd0000644000176200001440000000422014472612401013761 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nm.R \name{sbplx} \alias{sbplx} \title{Subplex Algorithm} \usage{ sbplx( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Subplex is a variant of Nelder-Mead that uses Nelder-Mead on a sequence of subspaces. } \details{ SUBPLEX is claimed to be much more efficient and robust than the original Nelder-Mead while retaining the latter's facility with discontinuous objectives. This implementation has explicit support for bound constraints via the method in the Box paper as described on the \code{neldermead} help page. } \note{ It is the request of Tom Rowan that reimplementations of his algorithm shall not use the name `subplex'. } \examples{ # Fletcher and Powell's helic valley fphv <- function(x) 100*(x[3] - 10*atan2(x[2], x[1])/(2*pi))^2 + (sqrt(x[1]^2 + x[2]^2) - 1)^2 +x[3]^2 x0 <- c(-1, 0, 0) sbplx(x0, fphv) # 1 0 0 # Powell's Singular Function (PSF) psf <- function(x) (x[1] + 10*x[2])^2 + 5*(x[3] - x[4])^2 + (x[2] - 2*x[3])^4 + 10*(x[1] - x[4])^4 x0 <- c(3, -1, 0, 1) sbplx(x0, psf, control = list(maxeval = Inf, ftol_rel = 1e-6)) # 0 0 0 0 (?) } \references{ T. Rowan, ``Functional Stability Analysis of Numerical Algorithms'', Ph.D. thesis, Department of Computer Sciences, University of Texas at Austin, 1990. } \seealso{ \code{subplex::subplex} } nloptr/man/is.nloptr.Rd0000644000176200001440000000105614351106340014561 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/is.nloptr.R \name{is.nloptr} \alias{is.nloptr} \title{R interface to NLopt} \usage{ is.nloptr(x) } \arguments{ \item{x}{object to be tested.} } \value{ Logical. Return TRUE if all tests were passed, otherwise return FALSE or exit with Error. } \description{ is.nloptr preforms checks to see if a fully specified problem is supplied to nloptr. Mostly for internal use. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/lbfgs.Rd0000644000176200001440000000470114472612401013732 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/lbfgs.R \name{lbfgs} \alias{lbfgs} \title{Low-storage BFGS} \usage{ lbfgs( x0, fn, gr = NULL, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of control parameters, see \code{nl.opts} for help.} \item{...}{further arguments to be passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Low-storage version of the Broyden-Fletcher-Goldfarb-Shanno (BFGS) method. } \details{ The low-storage (or limited-memory) algorithm is a member of the class of quasi-Newton optimization methods. It is well suited for optimization problems with a large number of variables. One parameter of this algorithm is the number \code{m} of gradients to remember from previous optimization steps. NLopt sets \code{m} to a heuristic value by default. It can be changed by the NLopt function \code{set_vector_storage}. } \note{ Based on a Fortran implementation of the low-storage BFGS algorithm written by L. Luksan, and posted under the GNU LGPL license. } \examples{ flb <- function(x) { p <- length(x) sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } # 25-dimensional box constrained: par[24] is *not* at the boundary S <- lbfgs(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25), nl.info = TRUE, control = list(xtol_rel=1e-8)) ## Optimal value of objective function: 368.105912874334 ## Optimal value of controls: 2 ... 2 2.109093 4 } \references{ J. Nocedal, ``Updating quasi-Newton matrices with limited storage,'' Math. Comput. 35, 773-782 (1980). D. C. Liu and J. Nocedal, ``On the limited memory BFGS method for large scale optimization,'' Math. Programming 45, p. 503-528 (1989). } \seealso{ \code{\link{optim}} } \author{ Hans W. Borchers } nloptr/man/crs2lm.Rd0000644000176200001440000000630714633255630014051 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{crs2lm} \alias{crs2lm} \title{Controlled Random Search} \usage{ crs2lm( x0, fn, lower, upper, maxeval = 10000, pop.size = 10 * (length(x0) + 1), ranseed = NULL, xtol_rel = 1e-06, nl.info = FALSE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{maxeval}{maximum number of function evaluations.} \item{pop.size}{population size.} \item{ranseed}{prescribe seed for random number generator.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ The Controlled Random Search (\acronym{CRS}) algorithm (and in particular, the \acronym{CRS2} variant) with the `local mutation' modification. } \details{ The \acronym{CRS} algorithms are sometimes compared to genetic algorithms, in that they start with a random population of points, and randomly evolve these points by heuristic rules. In this case, the evolution somewhat resembles a randomized Nelder-Mead algorithm. The published results for \acronym{CRS} seem to be largely empirical. } \note{ The initial population size for CRS defaults to \eqn{10x(n+1)} in \eqn{n} dimensions, but this can be changed. The initial population must be at least \eqn{n+1}. } \examples{ ## Minimize the Hartmann 6-Dimensional function ## See https://www.sfu.ca/~ssurjano/hart6.html a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10, 0.05, 3, 17, 3, 10, 3.5, 8, 17, 17, 1.7, 0.05, 3.5, 0.1, 10, 10, 1.7, 8, 17, 0.1, 8, 14, 8, 14), nrow = 4) B <- matrix(c(.1312, .2329, .2348, .4047, .1696, .4135, .1451, .8828, .5569, .8307, .3522, .8732, .0124, .3736, .2883, .5743, .8283, .1004, .3047, .1091, .5886, .9991, .6650, .0381), nrow = 4) hartmann6 <- function(x, a, A, B) { fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i, ] * (x - B[i, ]) ^ 2)) } fun } ## The function has a global minimum of -3.32237 at ## (0.20169, 0.150011, 0.476874, 0.275332, 0.311652, 0.6573) S <- crs2lm(x0 = rep(0, 6), hartmann6, lower = rep(0, 6), upper = rep(1, 6), ranseed = 10L, nl.info = TRUE, xtol_rel=1e-8, maxeval = 10000, a = a, A = A, B = B) S } \references{ W. L. Price, ``Global optimization by controlled random search,'' J. Optim. Theory Appl. 40 (3), p. 333-348 (1983). P. Kaelo and M. M. Ali, ``Some variants of the controlled random search algorithm for global optimization,'' J. Optim. Theory Appl. 130 (2), 253-264 (2006). } nloptr/man/nloptr.print.options.Rd0000644000176200001440000000231314472612401016775 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptr.print.options.R \name{nloptr.print.options} \alias{nloptr.print.options} \title{Print description of nloptr options} \usage{ nloptr.print.options(opts.show = NULL, opts.user = NULL) } \arguments{ \item{opts.show}{list or vector with names of options. A description will be shown for the options in this list. By default, a description of all options is shown.} \item{opts.user}{object containing user supplied options. This argument is optional. It is used when \code{nloptr.print.options} is called from \code{nloptr}. In that case options are listed if \code{print_options_doc} is set to \code{TRUE} when passing a minimization problem to \code{nloptr}.} } \description{ This function prints a list of all the options that can be set when solving a minimization problem using \code{nloptr}. } \examples{ library('nloptr') nloptr.print.options() nloptr.print.options(opts.show = c("algorithm", "check_derivatives")) opts <- list("algorithm"="NLOPT_LD_LBFGS", "xtol_rel"=1.0e-8) nloptr.print.options(opts.user = opts) } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/man/nl.opts.Rd0000644000176200001440000000206214351106340014224 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nloptions.R \name{nl.opts} \alias{nl.opts} \title{Setting NL Options} \usage{ nl.opts(optlist = NULL) } \arguments{ \item{optlist}{list of options, see below.} } \value{ returns a list with default and changed options. } \description{ Sets and changes the NLOPT options. } \details{ The following options can be set (here with default values): \code{stopval = -Inf, # stop minimization at this value}\cr \code{xtol_rel = 1e-6, # stop on small optimization step}\cr \code{maxeval = 1000, # stop on this many function evaluations}\cr \code{ftol_rel = 0.0, # stop on change times function value}\cr \code{ftol_abs = 0.0, # stop on small change of function value}\cr \code{check_derivatives = FALSE} } \note{ There are more options that can be set for solvers in NLOPT. These cannot be set through their wrapper functions. To see the full list of options and algorithms, type \code{nloptr.print.options()}. } \examples{ nl.opts(list(xtol_rel = 1e-8, maxeval = 2000)) } \author{ Hans W. Borchers } nloptr/man/direct.Rd0000644000176200001440000001002114472715012014101 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/direct.R \name{direct} \alias{direct} \alias{directL} \title{DIviding RECTangles Algorithm for Global Optimization} \usage{ direct( fn, lower, upper, scaled = TRUE, original = FALSE, nl.info = FALSE, control = list(), ... ) directL( fn, lower, upper, randomized = FALSE, original = FALSE, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{scaled}{logical; shall the hypercube be scaled before starting.} \item{original}{logical; whether to use the original implementation by Gablonsky -- the performance is mostly similar.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} \item{randomized}{logical; shall some randomization be used to decide which dimension to halve next in the case of near-ties.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ DIRECT is a deterministic search algorithm based on systematic division of the search domain into smaller and smaller hyperrectangles. The DIRECT_L makes the algorithm more biased towards local search (more efficient for functions without too many minima). } \details{ The DIRECT and DIRECT-L algorithms start by rescaling the bound constraints to a hypercube, which gives all dimensions equal weight in the search procedure. If your dimensions do not have equal weight, e.g. if you have a ``long and skinny'' search space and your function varies at about the same speed in all directions, it may be better to use unscaled variant of the DIRECT algorithm. The algorithms only handle finite bound constraints which must be provided. The original versions may include some support for arbitrary nonlinear inequality, but this has not been tested. The original versions do not have randomized or unscaled variants, so these options will be disregarded for these versions. } \note{ The DIRECT_L algorithm should be tried first. } \examples{ ### Minimize the Hartmann6 function hartmann6 <- function(x) { a <- c(1.0, 1.2, 3.0, 3.2) A <- matrix(c(10.0, 0.05, 3.0, 17.0, 3.0, 10.0, 3.5, 8.0, 17.0, 17.0, 1.7, 0.05, 3.5, 0.1, 10.0, 10.0, 1.7, 8.0, 17.0, 0.1, 8.0, 14.0, 8.0, 14.0), nrow=4, ncol=6) B <- matrix(c(.1312,.2329,.2348,.4047, .1696,.4135,.1451,.8828, .5569,.8307,.3522,.8732, .0124,.3736,.2883,.5743, .8283,.1004,.3047,.1091, .5886,.9991,.6650,.0381), nrow=4, ncol=6) fun <- 0 for (i in 1:4) { fun <- fun - a[i] * exp(-sum(A[i,] * (x - B[i,]) ^ 2)) } fun } S <- directL(hartmann6, rep(0, 6), rep(1, 6), nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 1000)) ## Number of Iterations....: 1000 ## Termination conditions: stopval: -Inf ## xtol_rel: 1e-08, maxeval: 1000, ftol_rel: 0, ftol_abs: 0 ## Number of inequality constraints: 0 ## Number of equality constraints: 0 ## Current value of objective function: -3.32236800687327 ## Current value of controls: ## 0.2016884 0.1500025 0.4768667 0.2753391 0.311648 0.6572931 } \references{ D. R. Jones, C. D. Perttunen, and B. E. Stuckmann, ``Lipschitzian optimization without the Lipschitz constant,'' J. Optimization Theory and Applications, vol. 79, p. 157 (1993). J. M. Gablonsky and C. T. Kelley, ``A locally-biased form of the DIRECT algorithm," J. Global Optimization, vol. 21 (1), p. 27-37 (2001). } \seealso{ The \code{dfoptim} package will provide a pure R version of this algorithm. } \author{ Hans W. Borchers } nloptr/man/figures/0000755000176200001440000000000014351106340014004 5ustar liggesusersnloptr/man/figures/logo.png0000644000176200001440000005346714351106340015471 0ustar liggesusersPNG  IHDRX?iCCPicc8U]hU>+$΃Ԧ5lRфem,lAݝi&3i)>A['!j-P(G 3k~s ,[%,-:t} }-+*&¿ gPG݅ج8"eŲ]A b ;l õWϙ2_E,(ۈ#Zsێ<5)"E6N#ӽEkۃO0}*rUt.iei #]r >cU{t7+ԙg߃xuWB_-%=^ t0uvW9 %/VBW'_tMۓP\>@y0`D i|[` hh)Tj0B#ЪhU# ~yhu fp#1I/I"0! 'Sdd:J5ǖ"sdy#R7wAgdJ7kʕn^:}nWFVst$gj-tԝr_װ_7Z ~V54V }o[G=Nd>-UlaY5V}xg[?k&>srq߀].r_r_qsGjy4k iQܟBZ-<(d=dKO a/zv7]ǰod}sn?TF'|3Nn#I?"mzv~K=گsl<b|_|4>?pߋQrib 2* (Ѧh{28oIyes8';Z9h6g>xRx'b8ՃWOϫ[xn%|^z}%x  cHRMz&u0`:pQ<bKGDtIME (488qQIDATxwxކM! %bÊxc9c{ب"M^CzH}?&-IHM+%3<_1(cTN ng(44: d!p @ P4PнVolarиZ;AlRvKH,n-G~Y"&?h(SoX3={Ƨ@Zd },,|Ev(KmIVIE+ޜddH˗K7,{zTV[\d2i$+R|=d駟޽@N%d2NpCA׀{.-tT |N}Wj8#^Fdmya ٢!L%{.ר!={975Nc#RddN[c2D~n#렓Pt Ҳe\HO/F4M5y1Pu7( .\)12͛iT[7) 3A@ׂ,["yjTzM1_˲=*RFy-~ ¿vQ1%H>(mݚ?G6mƍ3]%k6l5=E F0|-#-t[24),%d =ύ gǓpvsgiʔn~e8/LO/N @C,|Ȳ :kIK/ͯ,rsRݺyn;MɚrX@,Jms+WƎ֯/ %3SZFR%B> /hQdskB+' $͙#9ki nNzd-ZX\wz.lR۶g_Y#&F#U+f+ΙeZX\vA 1}bݾxkKO?-Y[U:&Y5(YFI^p[ͯqmMR/B 7Zm­zӋ$#Kɺ5iӤ^-:1#qނK9ȞFn-CÐZ&LN_v8~\z-Y3q*fX+XŒ~FͬEKv[7F7 StҥKE&ty-=e %䋂l^l=ᅲ|Z_|$$&vM"7h4fE,!Y#t4^t5^y<7NM2"K̛cժҖ-<ןp8+UU'AoZRO.WA'<}Ұa҂eͯ*"l;@bE,ds03ѯ4ϵۥN/43Ybct[\5e -"6|݀EA@g`<0sW~}Nu-.`$sؿc$m` Y^2r'k*jV#G}At4nEap8`zx=6 ^F^KpOl~Ҁٖ_Y$%`ѷi=p`-ޅmїd VL7?ڴ>D:}ׯEq#}t^@3AW3,B.c]G@QQ0f qԭ F)[#=0y29j0x8K$JQku jjVCCvmX-x X8Y&~ڲr wfpMpШ5ϵ۷"kS8L>ErY˗ ArN[&22௿uJj6fOZ-P`p3qF.sgSBnEi&1\z]X4 qCxHA+`ظ9T&slaQT> _~ |bnAy 'l>z<p0fjԽBf`e6o߇ᅦUad~d2FJ>jp9vז.wnnYX7h̟o L爷1%}!bp+-dA0~< bfXX4qq0}:L֙=s0fqH,s[:,3Mnj,L?=V* y5ہ;:jFD¸qЪ5ϵ/0=V || \Lg.Àv {޽\bW Bs ̛gΏ-t՜JL'1܊A;;P_x lp饦cBE );sZS ]K\-{?-p0(Vs[^t VO`snGz LZ } Dd$͛in,s)))L65kR^=ի͚$[ K~ñcff&MqZ;jV%Pb~)Pݴp89u~))PZqc,,C^+:Z6[>ƒm(R%  \P U"'mdf+.߯<lo;!_/+UuXU۶ UBWdVMBC5f<-WN+۷O3<;wQuY$'K?,9ۢaH.a:Կz@覦2m4mURZjQB r\ZZϿ ӴP:u7ꫯo戗Y%4 '5u*lj͘zV%;Ė-[TV-;TzײeZh5k,{Oũs TΝoh:v옯Ev4{c+iSh?Rp\e+V'0+CΝ9r˱۶mcԩEҎds`dȑ|W~Te05nY>=r}Ì38sLUҲel6ڷonwjoذB pʕܹӥogر\r%~T)~f̘RޢE sݛ.]]h ,(t[Gy9)6mʣ>Jv툲gZ'8&gN\zڵkӷo_pbb"sq)_>׿3ZX~+\eԭ[m.n":t۱vZ,YRޥK¢[ٳy۴iC޽ѣs)߰asνv8qթSk׏?dž \;wqL]ʝN'WvYiii̙3e?f͚4h׏?l2-[R^fM0~`ʕnǮ]5kKyӦM 2Y~)M6 [֭ː!CWn]ZjR~ ֭[Wvp)rkk/ٸqKyin';UTa̘1nC̛7ty0pKyZ y.RZhRyf|cƍ.-[{~L׬Yvz]7[nq)?rSL$vRޫW/j׮da_ СC.M4+(Zj i֭..rJ/_R^zu,, pRR[ڵkiᎎ;reY*wN.]JLLLHzda uXxKyǎ Bʕݮ\9sƫm.={m۶~LsU^{k׮ԪU˥|ٲenlV5kִ'-pzz:su>YfZnM]ʷl¯+Vw\eaaan/{nfΜRޤIBzt ڵkݚV9rm۶faQcbb8y^pF}Aߜ :m3f,f?~m\vmIÝNgB .$555WYdd$ڵ+k֬vˊ+r\őfy5ޘ3gǏ/pdaQ\ǎc.uԡ|Er/ܭüyrh߿IÆ ΣE뮻1b'Nd.,, ĉnz]d߿?}q)_l %%ٳgiذ8\`t= /^wM޽3f 3f !!a - pW_}+h:@@@@j rt:-֭[ҥK]o>O癙2}tnz|` آXYX9s0a-Z}Ըq"wٳ'aaa$''*IJJСCF >y }mR~}( goUY&+Wv ުU+A\z.{eɒ%nC֯_߭WSNV\XѣG駟MfaQL͛7g„ ,[ѣGgoլ^m4PF >066z~F幍o> V 6t¢(idrETT=z`Ŋlڴ 2qD)WMZKhm۶eyfddx>mۖ Z\LMhŐzIϞ=3f Gq0hтA1q<놆e~Hs:6 ݞ=+zQR =23Ȅdp:!( 8n7Š%cpp0 /pY8;;ҵkWuvsJ*y.~Y'vb۶m:uǏsiN:ӧIII!330MQZ5hԨ 4QFT\-E'%]t 6jU7*- $%p:7ޝGG(_nСn3?o߾DDDx\`m۶uh-?^zAʕ_>zbСtСH(2Æmj=؃ 9RL:B P矐GO}|-,[A:v-^D?hueذa^xL-wO^#$$E ߠ#bbbXj&MbȐ!<jժ؆؅pj9ca߰| tn ;B8t傡~-_#Of/1{Ҿ}{BBB\%?;wdǎ.塡 j]k{Y ñ*h[4ߗý7@T!˕/_Ν;{p^F$ǏwYdddBZ?v;JPPHNNȑ#^ŋcY0O 0ʝdUW]W_5kp"ֆn@ 9eQ& 88]\\%BxU"# FŊ>|8?#ۇ0k,jԨQ$1,.n`;11B[;wN 440=p)::׏Op+LRRR:"LDP:?Ŝ*pհh,^Uؼysk"}0 H9Jk <|:QpHks`wB Vk4M`gcB(skz‡k׮}dqq)S3g灁?{_(K}_d p>7G&waڳgOv)SN|)ȑ#|7x㍌;m, >{1}o}0)̚[ì?ᦡ mFff!@6m%z˂ Xx1 .d۶mhUZzUNJ *W4Z6Kᇙofxbʵmo~3e֭c?7nܸXY/ǎ駟f˖-н{wqSzv*a@E8Z'7t'܇ʕC,*T`uYfw}֩S7xSrUWymY*5 j]G_Wvga|͌~WbEOdddL 2 ɰ|C:vj׮]l &<<'xmʍ7kǑ7ʜ%Rwgٳgە@"dQzw믿+v\t B<|o62GӦM۷onj9o٥<99W^y%=EE)@m_nFFFz͛dqq#>'O=o߾ 2w}ÇY_2h N0Liii,_Ϝ7kTFu:?6l`{zjyLj#8yoˢ p6e߾} \ 6-\rlْ2h իG\\餧{`Ϟ=̚5uQBBCC ޕ.T#==ŋzON'[l} N,:=/###;v,+ .W^m۶NLL䧟~믧[n{,_cxҏngرcǎE"Kmd!!!TZ.]0`:vH9ze9IOO'!!3c V\ƍjժ1Q ,, 0o<-@Ϟ=/{^V1-zhDGGӧOOŊ  33HJJb˖-,Z3gra$a٨T*޽{INN 0@TT6 l۶-[ҴiB{F5h\v-Z9soCx뭷}NNgw!{= !8O7(Nz <3j(NʼyXz5qqq+|Uá\KNM[Ќ9]xnErE|^K l{C{zCkSOѻw|ϕK'v*wߛaF) $'[$)"n `IaѣСk`= Na^ ` ͭ;JQQQQa!;VQv!UniǽG,*޽od̬̀` 0B 4$#pAb"J/?` 8wa&׭)K6c &nBY`m`r#dfqͬy=8__aIn֍Y a.vMp m`"3mQ _(:8 qfplf+")hC1\T}n]l:ݺU@/s9[ P9؈9 0J_-烮m`jXzw) avc'>6oCQIUаFu@P>jPO.os3cdSo8x vuaxZ 6LL?wM~ի:Apt6ܣcm/]q~178z$١9$<7F.]0 *]lTr]}b9oZ:l ikz6[PtnmEТ!SI`&3 5/-p Z?as@h Bhl?aC~Zs% AP0܆+a@܃m7|+4 c/ Ol6605ŁRRp~1[p~:vJm֊p 2== Z{qھ׏̲d51Ԯ 1$uPỹBr <;8.:0 hϭx}%',|y\VlNŜ䜈m ƢBz-Тw2o'q^[`4k1Sa ,.//7'_LEY]r+1P)nM[q+q:مtN7h!_|£#ZHrs@nW>yK;ݟpi]'9{51ƌvpiKlu֥#9:{8ۛ %p> obTYjq8`t37A"^L9_~\<}n,[㦞Dif?y -X(3=xQ"_>ofala{~lѩ[ZY`}=WB^|-<0h.:+WMC[o[@8ڮMsJH[h& ̽)ĨW0F'71')}9GO2?>{^wtK[,{`9rR..ȇ4K<15ʅ`{i#hPG0v6o7} vC6=ߝZCz ;bbЯ)c܄QQu=Fq跙hҒ|)?é=|19^m쁨He̐Aж%Xy 28kh 1B~0z\'셧Ҭt/ybPz{;_B;jqc [٦y;uY?EgzWbl^,blc؃s_h/iKIjSpD3-]a;>-X ^>j&ͱw'.Rc = .=:y̘mztF6-!ol 8+7Y>8r}݈ fh7{9i#>\"t8$&qn-04$>pt8'~͋1܌1u#iPkVMZ__?~JD8<<<Cﵞ;¾?;'!)pI5r-4ʕh{55)g1}v|9O=bJ`6\ +"_8cwAXZ`:1[uSô+xΖ vPX`\R*FS>%829Zn?:]Zzd!۲b{e&=K|8 P׋wayp)]yس3V.lQ5k/8+ձc(>bbk$e+(޹r>'̄dHL J(9>76} Νj{_eLeݙ7 Hh9sU#usm(輎S'4w&fZYԚĴa;?Ś_m͵ _> J8~Xۭ%`SZu䮐 lwv}PhpEC7zwg,viԾrB˖!s,ќ8Xڣ uP\2n` QnpD[P_1~6 sܘX0$ lт](o 9ĨmL԰Fr[ E4Pzb{I/P\٭n8\ :|y0Gꅝ3~(k*/N1|vb\w t-dOFH9eL}N"ţ ;3aq+WPFFڰtwӐ0W,3 k~[quaƪ5ͷp::SxUZw];sěvbTq%K4 {$ΛnCoOJ}6n~ckyIH2c]?\l,ߟuLCP=g1=ھ YAu&^}؞7FїSq6ھ%w03FV/$OLuo-ya Lw:^̄ӠC4-'%% ~oW;Pb¹핔dt(h\1cE)j-ΩSѤYF9^0qmE^[9W#*Ays 1QKjz];o\Bd Z}q :%byp.\ b1] -p:-Z/EIqTg{^a k1ʕ|Bg'{2GŌ6.Թ"!L9f^oذ\BDCOвQn3L#(z[z8otd [xa'9)Dg0S4ǃr\Q8%%$FN?*A! +ֹS23`Yp ҽ yxόap" 2hNuk;/1ZV׏6K @?s^S F tZ;JKͽ~Mݻs٧[_u>2v;M` M:1 ߕK'4+_LQbg51ȃв982q9GRlň(>c`pˈ5t>%yCst4?opX7F?E!KXCF :a\3Oo[./-ޗI 3,Ls`Du *V0;ўX0혓'!<<˗7+dDFVEܫgN ܄͚s~{@bOB`@O3eV' 0ݙ[`D%,`ø vBz-a1zFdغ7B9}D׶f ̔EC801F_c%<ԮmDEX@_@zy~v,;G3o zIr1v(_$_l KVS%ŏe C*Wcl .)Rgߙϵ옕6,̭Y|vWHH/ս%nM"`5(X fb_ аȆgqp/nAF [hr^͉~n-C| )?"ѽl$֬l/ Ĉ0nm }aa*x.3G|> GV`l?=/^4=_?hVcf Uw_ ))Kh0>v~;ԭso~[Gc,.iန3^iM~`UHg| L Gg\^O!6׷taf{`Ÿ//tcRƹ$teJLB>Bon>[1^Ebba0xUUZ;uzfYb"22ht+tǎܹv-T QQڢd F`tR)w\"g:w3g@F:5o܌־-F5x 9 }ce,8@j*̙=}Gĕ/ϗw+5jzu֭YOǏ`RNr9mY0r9?6'OZл3;ԭՋK?6F0hqޗt}4VMLϾm[;4p8`zx=6 3 RW"o7o_ΚU%& o_"w'xZ_njyhnQ%'Ӊ׭0}} 'AJ*.LLbGa$sؿcUG@+CCy72_'q,BѵZVc^f:uLdQ$H}&9QJIukJK}*q)%Jni&Mڷ7Eg;˕c5j(f:)KBaij*M]Y~ P HÇK!}ޗ&MuKJekqH[vyiWRL[7KKyaDPފP3IGE2}kѣѤnXQkl69<]Z5l_?Ob$_IKVҘǤ^3.Q+ҷ3|Z8ƍҸqR*^lǐ]jOg  l6q啪S /WӦKǎnf)}p.HuKGiޟ古 _aWF< WHFժ fl"S_x|ݺ}O z^JJ+&El&=_hٴSzEi-^锶o~X*3v~  *]r0>矛'J5SG꨷qtҩS~ԥdO^o)?E{KxI8]OH~kOA:G'NHo-5ontaiUPnTxHxa?¸{ Y"#m`< 9(HJ_?]*-ZKb\m-=4G)Տ^XKҜ%(5!ڜN 9Y6MK n0U#~ iHw¢5re-ە*VƌVa҃/HNK3Js< ߒҬϜI3nxPZ{&H4J_,p4#CZ\&B=az3 @MU-rEZy37?d{Ϋ]tY6m3_L#'`6q R˟`qP[}b[к%SROvh4 %j) >/Ç=ߢa0nM噙d8qdsO5;7v>bc}8ҶR[r7HMf.2f. KWzgtDteoVO>HjU|ۤI\gbbFv;tCx/Z_80we`]g`"3L4 W4SzBc?aQ)5NX20J燋i?d:ׯYc:ۻ{$wm6~ۉKM-E TEE^gUm[ZU.4T1BZК)iӮ ;6#SZV?4wi{o3#C=  WC3o/%Uڶ[ZN[sk软\篤IKCxw@Gkv?w!RRv-9IIr:ݷK`h;6-{K3p: 皽{ЭԮm>|:t00`7$n+, `H_heF)H [©SlLyfc}z:d, |߂,M3Q@ݭ[ n;s6{1|Ed,l))Pg\hlL@oF; U@P0lвڳJ;z kj27} M~#źuwիkr^n_.ifQt8RSJZVk+:L3Kbbeyusvz|yU-Wm 7={GUHZ۽--eY8Ҕ9f2*^Hexc}ݬ "=]ZX:),kTSvVS=XՎS,Y6 pf;0 :믧ҥ\{0wJCZԚ5[̈ XBqp@ƨXM*N'  S= HqDl},W[r 87G}`|!5wn-m6hΜY\< Sn1XLhy+LGn   u-J3ǧ"o K@\GπOJ,J  +Vn]Z7v%KfbtRxd7 {i]*?5<\9X5?.kHff>33:j&x1G]W=A-o/MhFƷ(>-}Ԧ,=@9oҏ u} ˕3#*fQ:9sF5K0tE!R_#@!!9O*}-CfntRJyz Z3YсU(k]w7{ˡCf(>3Cx@FG ,.{E P#k~vkWMS; ">^<̈<0yPݬ/Eeﳶ<-^{Y?-.-X ff"ĬR-d0ueLO/Dda6k~ if̗^44kKel!WRŨ]͛+}pkR&^+Vp/:D֖B 60Ќo-/IIwIݻ^{:5Ͻ Po/9m ҍ7Jm-%Ғ%ҨQ@)YkAp-VnaokՒoi/8fW*\o`Kkl!耷qVf909yR0Ajk描gY` "dϏۀ>yz̈3f|HJO<}H\-FD׬ݑ)\)zEg@3,Zau%ݠ ܾuJ=gF3ػWzivE-RҤIҧJmix,5\(f;dyt[2D7&*͞mf/4 2(A!a?mq8iӦmpHKcǚ&0T.[l!WQ#W#G|-! l OȞ7:%uN-nҔ)R^t *k'p-e^¤#Lm1-M3cdhW&utdaau,ӿmGKᐶl<2AK@#1]8kQV2,ysw'|-Q;&旇N#HKl̖L=--Mn II?H=zz+E"m7̈o0Ǩ i2 y? gQv8&tУbTSҞ=%ktJvI?.ըdO_s(EJYf[xq[ J9xSR_t"X'֖Ź޸h b'U$uvm̏33Un/ 3U, [ȕAcAe֫'=tw>?ωByK%x-,r(‹bH4tbj4wtզrϵ(n1=ΏUƏ734t8 {5]7E2E=?`qc3ѣK/I x9+ˁEqmymc@Ks,af9Ol)yR@er(YaQx2 or$yd[Q,7? #{9K= z'3k?v[',eC(yd%tEXtdate:create2021-11-29T20:40:30+00:00N%tEXtdate:modify2021-11-29T20:40:30+00:00/E=tEXticc:copyrightCopyright 2007 Apple Inc., all rights reserved.f)#tEXticc:descriptionGeneric RGB Profile8IENDB`nloptr/man/stogo.Rd0000644000176200001440000000422714633255630014001 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/global.R \name{stogo} \alias{stogo} \title{Stochastic Global Optimization} \usage{ stogo( x0, fn, gr = NULL, lower = NULL, upper = NULL, maxeval = 10000, xtol_rel = 1e-06, randomized = FALSE, nl.info = FALSE, ... ) } \arguments{ \item{x0}{initial point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{optional gradient of the objective function.} \item{lower, upper}{lower and upper bound constraints.} \item{maxeval}{maximum number of function evaluations.} \item{xtol_rel}{stopping criterion for relative change reached.} \item{randomized}{logical; shall a randomizing variant be used?} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ \acronym{StoGO} is a global optimization algorithm that works by systematically dividing the search space---which must be bound-constrained---into smaller hyper-rectangles via a branch-and-bound technique, and searching them using a gradient-based local-search algorithm (a \acronym{BFGS} variant), optionally including some randomness. } \note{ Only bounds-constrained problems are supported by this algorithm. } \examples{ ## Rosenbrock Banana objective function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} x0 <- c(-1.2, 1) lb <- c(-3, -3) ub <- c(3, 3) ## The function as written above has a minimum of 0 at (1, 1) stogo(x0 = x0, fn = rbf, lower = lb, upper = ub) } \references{ S. Zertchaninov and K. Madsen, ``A C++ Programme for Global Optimization,'' IMM-REP-1998-04, Department of Mathematical Modelling, Technical University of Denmark. } \author{ Hans W. Borchers } nloptr/man/cobyla.Rd0000644000176200001440000000700114633255630014110 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{cobyla} \alias{cobyla} \title{Constrained Optimization by Linear Approximations} \usage{ cobyla( x0, fn, lower = NULL, upper = NULL, hin = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin>=0} for all components.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ \acronym{COBYLA} is an algorithm for derivative-free optimization with nonlinear inequality and equality constraints (but see below). } \details{ It constructs successive linear approximations of the objective function and constraints via a simplex of \eqn{n+1} points (in \eqn{n} dimensions), and optimizes these approximations in a trust region at each step. \acronym{COBYLA} supports equality constraints by transforming them into two inequality constraints. This functionality has not been added to the wrapper. To use \acronym{COBYLA} with equality constraints, please use the full \code{nloptr} invocation. } \note{ The original code, written in Fortran by Powell, was converted in C for the \acronym{SciPy} project. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } S <- cobyla(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8, maxeval = 2000), deprecatedBehavior = FALSE) ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) S } \references{ M. J. D. Powell, ``A direct search optimization method that models the objective and constraint functions by linear interpolation,'' in Advances in Optimization and Numerical Analysis, eds. S. Gomez and J.-P. Hennart (Kluwer Academic: Dordrecht, 1994), p. 51-67. } \seealso{ \code{\link{bobyqa}}, \code{\link{newuoa}} } \author{ Hans W. Borchers } nloptr/man/nl.grad.Rd0000644000176200001440000000217714472612401014167 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gradients.R \name{nl.grad} \alias{nl.grad} \alias{nl.jacobian} \title{Numerical Gradients and Jacobians} \usage{ nl.grad(x0, fn, heps = .Machine$double.eps^(1/3), ...) } \arguments{ \item{x0}{point as a vector where the gradient is to be calculated.} \item{fn}{scalar function of one or several variables.} \item{heps}{step size to be used.} \item{\dots}{additional arguments passed to the function.} } \value{ \code{grad} returns the gradient as a vector; \code{jacobian} returns the Jacobian as a matrix of usual dimensions. } \description{ Provides numerical gradients and Jacobians. } \details{ Both functions apply the ``central difference formula'' with step size as recommended in the literature. } \examples{ fn1 <- function(x) sum(x ^ 2) nl.grad(seq(0, 1, by = 0.2), fn1) ## [1] 0.0 0.4 0.8 1.2 1.6 2.0 nl.grad(rep(1, 5), fn1) ## [1] 2 2 2 2 2 fn2 <- function(x) c(sin(x), cos(x)) x <- (0:1) * 2 * pi nl.jacobian(x, fn2) ## [,1] [,2] ## [1,] 1 0 ## [2,] 0 1 ## [3,] 0 0 ## [4,] 0 0 } \author{ Hans W. Borchers } nloptr/man/mma.Rd0000644000176200001440000001023614633255630013415 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/mma.R \name{mma} \alias{mma} \title{Method of Moving Asymptotes} \usage{ mma( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin <= 0} for all components.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ Globally-convergent method-of-moving-asymptotes (\acronym{MMA}) algorithm for gradient-based local optimization, including nonlinear inequality constraints (but not equality constraints). } \details{ This is an improved \acronym{CCSA} ("conservative convex separable approximation") variant of the original \acronym{MMA} algorithm published by Svanberg in 1987, which has become popular for topology optimization. } \note{ \dQuote{Globally convergent} does not mean that this algorithm converges to the global optimum; rather, it means that the algorithm is guaranteed to converge to some local minimum from any feasible starting point. } \examples{ # Solve the Hock-Schittkowski problem no. 100 with analytic gradients # See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } # The optimum value of the objective function should be 680.6300573 # A suitable parameter vector is roughly # (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) # Using analytic Jacobian S <- mma(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) # Using computed Jacobian S <- mma(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) } \references{ Krister Svanberg, \dQuote{A class of globally convergent optimization methods based on conservative convex separable approximations}, SIAM J. Optim. 12 (2), p. 555-573 (2002). } \seealso{ \code{\link{slsqp}} } \author{ Hans W. Borchers } nloptr/man/ccsaq.Rd0000644000176200001440000001003614633255630013733 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ccsaq.R \name{ccsaq} \alias{ccsaq} \title{Conservative Convex Separable Approximation with Affine Approximation plus Quadratic Penalty} \usage{ ccsaq( x0, fn, gr = NULL, lower = NULL, upper = NULL, hin = NULL, hinjac = NULL, nl.info = FALSE, control = list(), deprecatedBehavior = TRUE, ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{gr}{gradient of function \code{fn}; will be calculated numerically if not specified.} \item{lower, upper}{lower and upper bound constraints.} \item{hin}{function defining the inequality constraints, that is \code{hin>=0} for all components.} \item{hinjac}{Jacobian of function \code{hin}; will be calculated numerically if not specified.} \item{nl.info}{logical; shall the original NLopt info been shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{deprecatedBehavior}{logical; if \code{TRUE} (default for now), the old behavior of the Jacobian function is used, where the equality is \eqn{\ge 0} instead of \eqn{\le 0}. This will be reversed in a future release and eventually removed.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 1) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ This is a variant of CCSA ("conservative convex separable approximation") which, instead of constructing local MMA approximations, constructs simple quadratic approximations (or rather, affine approximations plus a quadratic penalty term to stay conservative) } \note{ ``Globally convergent'' does not mean that this algorithm converges to the global optimum; it means that it is guaranteed to converge to some local minimum from any feasible starting point. } \examples{ ## Solve the Hock-Schittkowski problem no. 100 with analytic gradients ## See https://apmonitor.com/wiki/uploads/Apps/hs100.apm x0.hs100 <- c(1, 2, 0, 4, 0, 1, 1) fn.hs100 <- function(x) {(x[1] - 10) ^ 2 + 5 * (x[2] - 12) ^ 2 + x[3] ^ 4 + 3 * (x[4] - 11) ^ 2 + 10 * x[5] ^ 6 + 7 * x[6] ^ 2 + x[7] ^ 4 - 4 * x[6] * x[7] - 10 * x[6] - 8 * x[7]} hin.hs100 <- function(x) {c( 2 * x[1] ^ 2 + 3 * x[2] ^ 4 + x[3] + 4 * x[4] ^ 2 + 5 * x[5] - 127, 7 * x[1] + 3 * x[2] + 10 * x[3] ^ 2 + x[4] - x[5] - 282, 23 * x[1] + x[2] ^ 2 + 6 * x[6] ^ 2 - 8 * x[7] - 196, 4 * x[1] ^ 2 + x[2] ^ 2 - 3 * x[1] * x[2] + 2 * x[3] ^ 2 + 5 * x[6] - 11 * x[7]) } gr.hs100 <- function(x) { c( 2 * x[1] - 20, 10 * x[2] - 120, 4 * x[3] ^ 3, 6 * x[4] - 66, 60 * x[5] ^ 5, 14 * x[6] - 4 * x[7] - 10, 4 * x[7] ^ 3 - 4 * x[6] - 8) } hinjac.hs100 <- function(x) { matrix(c(4 * x[1], 12 * x[2] ^ 3, 1, 8 * x[4], 5, 0, 0, 7, 3, 20 * x[3], 1, -1, 0, 0, 23, 2 * x[2], 0, 0, 0, 12 * x[6], -8, 8 * x[1] - 3 * x[2], 2 * x[2] - 3 * x[1], 4 * x[3], 0, 0, 5, -11), nrow = 4, byrow = TRUE) } ## The optimum value of the objective function should be 680.6300573 ## A suitable parameter vector is roughly ## (2.330, 1.9514, -0.4775, 4.3657, -0.6245, 1.0381, 1.5942) # Results with exact Jacobian S <- ccsaq(x0.hs100, fn.hs100, gr = gr.hs100, hin = hin.hs100, hinjac = hinjac.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) # Results without Jacobian S <- ccsaq(x0.hs100, fn.hs100, hin = hin.hs100, nl.info = TRUE, control = list(xtol_rel = 1e-8), deprecatedBehavior = FALSE) } \references{ Krister Svanberg, ``A class of globally convergent optimization methods based on conservative convex separable approximations,'' SIAM J. Optim. 12 (2), p. 555-573 (2002). } \seealso{ \code{\link{mma}} } nloptr/man/newuoa.Rd0000644000176200001440000000372014633255630014141 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{newuoa} \alias{newuoa} \title{New Unconstrained Optimization with quadratic Approximation} \usage{ newuoa(x0, fn, nl.info = FALSE, control = list(), ...) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by NLopt and giving additional information.} } \description{ \acronym{NEWUOA} solves quadratic subproblems in a spherical trust region via a truncated conjugate-gradient algorithm. For bound-constrained problems, \acronym{BOBYQA} should be used instead, as Powell developed it as an enhancement thereof for bound constraints. } \details{ This is an algorithm derived from the \acronym{NEWUOA} Fortran subroutine of Powell, converted to C and modified for the \acronym{NLopt} stopping criteria. } \note{ \acronym{NEWUOA} may be largely superseded by \acronym{BOBYQA}. } \examples{ ## Rosenbrock Banana function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} S <- newuoa(c(1, 2), rbf) ## The function as written above has a minimum of 0 at (1, 1) S } \references{ M. J. D. Powell. ``The BOBYQA algorithm for bound constrained optimization without derivatives,'' Department of Applied Mathematics and Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). } \seealso{ \code{\link{bobyqa}}, \code{\link{cobyla}} } \author{ Hans W. Borchers } nloptr/man/bobyqa.Rd0000644000176200001440000000423414633255630014121 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cobyla.R \name{bobyqa} \alias{bobyqa} \title{Bound Optimization by Quadratic Approximation} \usage{ bobyqa( x0, fn, lower = NULL, upper = NULL, nl.info = FALSE, control = list(), ... ) } \arguments{ \item{x0}{starting point for searching the optimum.} \item{fn}{objective function that is to be minimized.} \item{lower, upper}{lower and upper bound constraints.} \item{nl.info}{logical; shall the original \acronym{NLopt} info be shown.} \item{control}{list of options, see \code{nl.opts} for help.} \item{...}{additional arguments passed to the function.} } \value{ List with components: \item{par}{the optimal solution found so far.} \item{value}{the function value corresponding to \code{par}.} \item{iter}{number of (outer) iterations, see \code{maxeval}.} \item{convergence}{integer code indicating successful completion (> 0) or a possible error number (< 0).} \item{message}{character string produced by \acronym{NLopt} and giving additional information.} } \description{ \acronym{BOBYQA} performs derivative-free bound-constrained optimization using an iteratively constructed quadratic approximation for the objective function. } \details{ This is an algorithm derived from the \acronym{BOBYQA} Fortran subroutine of Powell, converted to C and modified for the \acronym{NLopt} stopping criteria. } \note{ Because \acronym{BOBYQA} constructs a quadratic approximation of the objective, it may perform poorly for objective functions that are not twice-differentiable. } \examples{ ## Rosenbrock Banana function rbf <- function(x) {(1 - x[1]) ^ 2 + 100 * (x[2] - x[1] ^ 2) ^ 2} ## The function as written above has a minimum of 0 at (1, 1) S <- bobyqa(c(0, 0), rbf) S ## Rosenbrock Banana function with both parameters constrained to [0, 0.5] S <- bobyqa(c(0, 0), rbf, lower = c(0, 0), upper = c(0.5, 0.5)) S } \references{ M. J. D. Powell. ``The BOBYQA algorithm for bound constrained optimization without derivatives,'' Department of Applied Mathematics and Theoretical Physics, Cambridge England, technical reportNA2009/06 (2009). } \seealso{ \code{\link{cobyla}}, \code{\link{newuoa}} } nloptr/man/print.nloptr.Rd0000644000176200001440000000172114472612401015305 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/print.nloptr.R \name{print.nloptr} \alias{print.nloptr} \title{Print results after running nloptr} \usage{ \method{print}{nloptr}(x, show.controls = TRUE, ...) } \arguments{ \item{x}{object containing result from minimization.} \item{show.controls}{Logical or vector with indices. Should we show the value of the control variables in the solution? If \code{show.controls} is a vector with indices, it is used to select which control variables should be shown. This can be useful if the model contains a set of parameters of interest and a set of nuisance parameters that are not of immediate interest.} \item{...}{further arguments passed to or from other methods.} } \description{ This function prints the nloptr object that holds the results from a minimization using \code{nloptr}. } \seealso{ \code{\link[nloptr:nloptr]{nloptr}} } \author{ Jelmer Ypma } \keyword{interface} \keyword{optimize} nloptr/DESCRIPTION0000644000176200001440000000635514765676562013337 0ustar liggesusersPackage: nloptr Type: Package Title: R Interface to NLopt Version: 2.2.1 Authors@R: c(person("Jelmer", "Ypma", role = "aut", email = "uctpjyy@ucl.ac.uk"), person(c("Steven", "G."), "Johnson", role = "aut", comment = "author of the NLopt C library"), person("Aymeric", "Stamm", role = c("ctb", "cre"), email = "aymeric.stamm@cnrs.fr", comment = c(ORCID = "0000-0002-8725-3654")), person(c("Hans", "W."), "Borchers", role = "ctb", email = "hwborchers@googlemail.com"), person("Dirk", "Eddelbuettel", role = "ctb", email = "edd@debian.org"), person("Brian", "Ripley", role = "ctb", comment = "build process on multiple OS"), person("Kurt", "Hornik", role = "ctb", comment = "build process on multiple OS"), person("Julien", "Chiquet", role = "ctb"), person("Avraham", "Adler", role = "ctb", email = "Avraham.Adler@gmail.com", comment = c(ORCID = "0000-0002-3039-0703")), person("Xiongtao", "Dai", role = "ctb"), person("Jeroen", "Ooms", role = "ctb", email = "jeroen@berkeley.edu"), person("Tomas", "Kalibera", role = "ctb"), person("Mikael", "Jagan", role = "ctb")) Description: Solve optimization problems using an R interface to NLopt. NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms. See for more information on the available algorithms. Building from included sources requires 'CMake'. On Linux and 'macOS', if a suitable system build of NLopt (2.7.0 or later) is found, it is used; otherwise, it is built from included sources via 'CMake'. On Windows, NLopt is obtained through 'rwinlib' for 'R <= 4.1.x' or grabbed from the appropriate toolchain for 'R >= 4.2.0'. License: LGPL (>= 3) SystemRequirements: cmake (>= 3.2.0) which is used only on Linux or macOS systems when no system build of nlopt (>= 2.7.0) can be found. Encoding: UTF-8 RoxygenNote: 7.3.2 Suggests: knitr, rmarkdown, covr, tinytest VignetteBuilder: knitr URL: https://github.com/astamm/nloptr, https://astamm.github.io/nloptr/ BugReports: https://github.com/astamm/nloptr/issues NeedsCompilation: yes UseLTO: yes Packaged: 2025-03-16 10:28:42 UTC; stamm-a Author: Jelmer Ypma [aut], Steven G. Johnson [aut] (author of the NLopt C library), Aymeric Stamm [ctb, cre] (), Hans W. Borchers [ctb], Dirk Eddelbuettel [ctb], Brian Ripley [ctb] (build process on multiple OS), Kurt Hornik [ctb] (build process on multiple OS), Julien Chiquet [ctb], Avraham Adler [ctb] (), Xiongtao Dai [ctb], Jeroen Ooms [ctb], Tomas Kalibera [ctb], Mikael Jagan [ctb] Maintainer: Aymeric Stamm Repository: CRAN Date/Publication: 2025-03-17 01:40:02 UTC

hs>%ƩX p%b[p* WRn SSx z 2z@eh'p-|A 9o_5oDFV6B> @DY\UJQCNoqa@ʬQKL_2KZ[VY^܁o]!Q!1G<;ޅ_Rא}ʝT}ɔZk̷:N5uM3:sJnɦ{8cPܴNےvpB}|DT5^iWMD&VKcUbYxӱ}JZ3d20mXKPe<?m;(lKr&UWJF/IE< ϙi&tJp~sȅ0?puj.9آĺh^wlOhnX p@f;OufuEWD4WjԚ:fT Z7m9St{Yv O^+LIg:v{<A¤MNݻnAABUcҼf_i{ D}QGY?Z:mnw:gnɒa:׮[Yl݊} 6Q{xw{%S'v[ ޚD(a(0s\ʿxm=cvEO֭5 S'n m$Y3Op=DZ&[pY:_6Ξ;a eN: -@H/ G2s?bŁ 'HwY+eGz+" $ф.-_,p̺ ŅKT lMK_C{X b]Js9~ %8<!=Aml 1}L(fRG؎K2FVɉFb),B{BH o^_Bq<[>cP<=R 5~l<7qjo\S@g@\h@(`Xi.?}R*k0 ޣf~d H̟40rvFmP3z"櫿Qmi*n-}mNQ6Vu;!m~ 'h"]%Y0j4a{@Ҥd |0-dK+P;y {(=`1?(J0 VS'SD..Nq8]-ďR jS ڤA6 uɦCBMܗݫS{X:#4~fYi~=‹h Έu͆#"=O^$^xڤ^׸~\ZZdrF ϵpfZs!:iDo1=z^g=k L>ǯ"S?|=l<LI$c*_O v*9 39XKXL H0= i &E$$p$&j1qӚ]ZSVCTl%|d*vT_d& wL,R$ _AbX:/'\x 薝FA} F/rۡi)Zyh`p ) *ʓ]w՝\m6ĺPЦdY0rO~o43wfM޼|Eu6c0% pՊ~ > U94 6u98gkDAm\5@m/3)xn$ز|QF>e*M .*N[`PC -~PPuvzm4?iCoS*U͡ ,i5LxɮTc^Di8ׄeb)s\䰂˫8q,<5+xSufZ̐f:|"|n;Pa+F++Kov ʪX4:` Z^ɂN fШԶڒ۲S"Dh&S3w3VK\e^|F%^+bm2ߙ2L_DD)ve3=ڂdjc.Jc1nY𫨔aj A|Wh+'@S"w(1[co@^ՖKl^[1o[ܱ߫So. ̪r~bccW I̙Э+OO GJ6s:Z1@f;Em.Y~ebA$zJGZ;"ܥ3,MDt:܊p:?٨WB1ˮ`QO&$zbma<3-w:>u^멷"93MkGb})kYS\dc_Jүӡsh-pXJt9: *R^/c9@{chLC\M rXe;AW:9Ai%YWbvn&4 Vғ쯹 ggRhԽ{k0f\êך]r)vfz>5,TϺ9yܘsSgwO5a%ysR`-NYáRFMt]ίsP`K|f.״ʰFP\o;4pKWuןH$bϣV*.Eg=~!f#%U$ C8KhlotS2_9Q;k)Urӧu|fQ]\WǐiSU$k3m5(rqcb\~CBݏ0D!$zwܨn[ 2ՉfTU<#k~b@MZ˼9ifO 8aL_cd}8{|o"va 3=*ynPEW(e6lRmю}W&q_P|d<]r/NfRE[@LP蒫Z W|*̰{}?Fzg0*-;}hp2d{;,=XX; `` Q*ނ%z?j ]E3}@w,~G8K5*_ JfK ̡۬y{:U/H-"L=]swx;!i+U-t>_3|78 \:974ls-,c1}iDnS<0,0{m z 4: uSA_A(@W˸&'<`%)v=+S5+T(-OPl  +KDEф#0иCP0/edjg;V=ʞ Wma`#&eRj6D/c_bZCe;?E |5RBqj `}hH.Σ[^8s Cs~Pl2Mbv99O$0@p߃թfzuY=j!ID!+>m03:֗PL c9:o=)Bf</lUg9G@穵ȇ$njC'hX<,*E~HaOIX`vmsIu0JiE&ZnGFq>E_ZFSVhS{.=11h9yd:kI>*HL ZB2*5ugu%G+mR@4m3~A.P1?dfe%y+TE_.HզFJ!~* k ą*N65cGTt }})S`yL&&H>H=WGbN81]2Q8]6\mrf]ޕm0|tadT%-Th?Ek_]<+o=!u1l93o.(5vOjIN⇕rNg+I`몂{Iy4,K"X蝽768}.(ٞzHdEY:杦49𬍥Ћy 퐼!!w&/լ}KP#>ּ6;}x<o{f@RqUfOM2-eπ<ǐ4wv_$v&/ZZo.h}<\k63?[ j UVf = gS 6pLf.];?cZjoz4@$;JIj& ΌJRGbs %] EŊOvLE<8.C% IRL$W%0y c̬/lZ:]:i:%-,x ʼnXO*ѱu(Ѿ0zKVQbm G 4:VJ1'pPB'Ogw',DD8 oєmߣlwE_1凰^Y4rNDT(۳eQ+іfȝT8|'HNx*)8eRæ<֌;UAjjxYɅ[U 5Pf Ql MĄxY7/ι,?٥hm{Q`s\x+K@A.*YFOT Ky+dlgn hv@5v۹j DZ-LnYD} _2 "tQ+vhj*wUiwRe0p#Ӗk"d \Z߽s#3uKvn.eHv_ DwJuPE/S\K@3΀9E׋C;Qvթ0s<2cnqfyC_qG:l3>V&tx#bH.k80q8etblO#+pM_Ϩ]ޕ 5$; ; n|ȕE- ?`U"b7^PbfZƋ}\KS?I2l7J~N+CtgiVݯ652qJQpeܤ 2C'U"̰Ob +0p+@@Lv;PZkndXC+zo*q|ܗVIt JUh6IzQn0s ٭>ήO\+$5pL>yA%XۅxGǙK H ]h1퉰|k4JM`R{_p:H/=G_- =J]CɤrT{=,TpG50HV;s[aߏtt;>w؆(d?;O%V0M. @šޮQdo7+xо>ZlpOԴ7/~3ߒ Z5(fL .sˬH~FBmJi<Q[t?S7 I0קK'vy_GrJ [,z.uR N .'--k(O,#)EHh@@<_6+`1J_5˝qRl 4DҟlVEٗڥԔӑ9br 0ؿx?vŮCdCl(-4X_Q[Y)}8脇luc:W>!b8:<ʚe#!qFkNΛ4c4Pxn<aSFuHദ˫x:[nw3M28ENK.mt}GŌP 2 N&֌Mŝ,Z-iaXB2r3`׸.xCMwOҐ'p XGMYYHeCy{ Mn%`9o^*  ܋:pEOoxhՁ70BR$ZVfKSG_,7&tLA$xZF(JY/ [ $ 5 4 ]t q>˭5J2vSٷ{"N`e/s҅6v.(Fm~-أىQ DSOΦ.f&!ߍY:2 UH#3P Tov]A%z&U ϔ%sc;yƜ Cֹ<; =|j[ 漙QVFw)#lC?_3eյG:adyTE2Xk w'S:zDTϑޙM k%s}0l S C]此&>%Y~%_/ZEtiR e]8,)F#XWLR6řerG?<]CJsv]zڭsC^C>֭Kf·Z^CMKSKsܫ,*Rg)\IU=LG[Ӱkʝp8 NvA,oND4f6?Ԍr-LSB=U\|*u!zOMkO8BG˹!(Ѣt1}"wc=4yrC>ol`ҸX4ҘDݞ%:ϺM;2 21F1&?PF!eW|lTCu}#yh$ՙ:qmB#PCev$4FF! '\w+짞P O{8y-}_kz|vQ{3$C[w*ؿO+Xe[0¬p`٠Ԇ,C!-$:*y!bȡKјau2J6J!OgA@`a3tƢdn I:ZZ^ˡfC 9K/!h/긭(4at8oGȂɖbaAEK/؊Jf'x[~|PEzJOJџg56{W)19țTicRō V1 H|17&foII(`"{j1fDt6rַgi'~~JB!C1񍭃yB\6(ba|82|YP8@G =)qSYdm!WI1%Cvjg .Ӗ祿s 0: \H܎Ϗ278떄2Al?: [v.:~(^W~P0p|_r#ͥ%DU<&! Xq,t2!F>Zo3x8pA&X܍+V5)qS6iHoِpڨ Cu8 =F}]cR_!G쟡~1,6bF,$h|/I)60_[6So'f`Xf5 O7- "r7?o $A2[wK/%'Or} Rqy"qԲc ۱R\DA*+_!؄0HjNW|0`E/HqF2N0+me{< 1T/lg 4)KǛ>u/Ժ| .Q#{Ռ*էYv|9jPES7qFxq ab*bv,9sMarV1?&`#^*lj_% !7,>lEB]VId pCq6t,KG>E{-nGϨT ǯ '`g N,lQشThK: K7<$~׳=I,ҁkL˟iآɕLF͓d$]j²a-GIŁ+v%/yAVDTh0e㞕O呮ɲ?`mJ—C:#,aH mdI`M^v]08TCh3yKH+ssq\a bC_CuTf$/c^17 61/20!-0kH.%ĄF'@u.xײAOzNt;q`}gHSpWXo OuJ /GH Q=6ݼ5+!tsg]LfJP-MAz G$y\B7Ev%/ߥfm ̔\q4& 1I}^fRE2nc)lYbڋ<3+Ru8 ?E[!Rk{ o&X 6]V @%Rnˠns"Ϥ quS*zҜLg fw|MԬ24&)2ӌ (UW?Wt4p*W%@#q@@ xힲ"[p_+ A2AAJ4 p|*~'[p1 lXPCʼu|ON&Z!`@xTDЎ2< TRlRsPd|>i-k09t '37a3PVMa,'#ɝm4;0p~6f;%x]8}>;e$x!9XnnPG![LKۅ/Ӊ]jDid*];׮# *^%|o:[^~*:|y- T6;=`_A\;?9qc5{YQ|E@0P8T $2fžT4$W اK}*Җ':,B=GjK 1AI}t)͑ ,j1R\ٳWs unoj*{]Se)P{n* <7.|Qa_r-..=b=fVhyj-%[:w^:8HaD9tةB/]Xc4~ @*8l@*r4LÀ"?ݶliYn7n'VW/B-Pڻv]`Dҩ/Oto(0_KTL޾-|{{؏TtIqT2AE }#?i`tOsK uHUl$5X'_#cBfZ+ "āZ\pdE NLh]NRpzt}X >;Js̲I n1^$Ɖ^l2OF]^q_>%ovO.cAxU6N X8? `I,Ȋg1xFQ0'h0^ʁP $̴vzs)Gs:Rܧ68 VwDpj4ѵzVBkSzZ(bUBfl!6 Ӂ0ea ?:>CnlF*.*G7< 81Qݝ+*^p7߾+$  \' Y ndtZ%]^7dLO4G"0UYԯQ퐿C$ưdjy fآ*2.6*bZZ8?5LA0uv` $UHPy#GOiP$u~LdZa#Vaf..i:!kJqfxF=8^y8V 7k/I˸w>6RiZmaHCoߒu$\(_ ȣMr},H{GypPq~ N솨dRc $ba3,"D23)H7C4Ƙ]^npӵPY(l4.ja}>n?b-hEnMaN*`=gYO۞. 0<%Ge?+oS=///GeOe=ojKE23nn-3d2W= sK60Z2rntdptk׬,ZhTbؘzpV:| RLyi Uzٕ͋7ŷ;Xy!bµAndPե.hìh̐&sFךa. Q fUS4F9祂>Agm}yhQl.}Ve}F*lJRB^^S'uG >& Q6 n.nB8[bSorŅߋR Σۇ v CGFe oVm^w: %4^hXuW}D91;FV`` }J/qbsP16V?#/#˧[JcT}= fb$Ln]dlzu&ާaHhBEOivH~+B #r'D7+,|bJ_ӭStPc#VOsJV2m=U,6!ᚆg㱚oC|Ib蚲f5 Am:Zg8Cӳ/@پKBjc#R^mPڥ"襬TgʸE[FGIcVxٯ_މ SP6]޴҇wm]p!/ڒ=/2AtМQ6 LH7So 9ONaGMYSi` j]2nG/|D8)Sgg8@Uz>(: C٣ԓDaydB_q/ko9'F. vz<]Ff.VO,\C4"~_祮%gpK؈Gm![p1bU ^ZA"4"ꯖqe1O oy{Obtb]g!\crԔ_taB#JP֕+C^]vh%sl ]ݴb'' mLt0n[e'Z`Ũz3܀~o)o>b^fJyTz S-uGY EAmДoߵM.h‡ CiŠ%IϖmdNKF#BL#tP'&F*pfҵB/MC\Um V-(eי_>Bq?<"x+>jW>I$Qad BL*zrߖB)L>`EJj9T !2YAV64O;Jߘ]HI4?aQ]>:m>98nB҆QM3#*b rޚqF*T$ )vdxPg/#Q 쓗%5 fkW5~KxUG"L:.ZE%ڃ晞Yq$`q"ut_'捘kJրg^MZ*惆f90Jy!iC՚W݆w `(3, $RZ%*U˭Gj`ʃA}N@#K)/`d[ƈːY31D$` K7!_JR5)'=ĥNM--!( *8WՌ%(ʍ*Dܹ_F .[^vTrw)pn"_~z SP0 sd?LBJ*X5Vʼn<=ޔh!Z12v1JsjTnJO+D*ޓݭҳcz¾@'h!r"mQ-#+~9u52eWxH7Se]RZ#)_f3sx*͘+:Ik6|dj7?w`B(T~%kԗBm-郗P{h{ZU$:v},(16YPת6.%!HGsg.nX^Gd'7eos~ Cȕ|\ca ŏˍL:!C#_/(֊"&%=ri*xdړtnkeE"Zz9JI%X@ VLGxE2TRf#u؉oF+`9*N"փk~ʐ;ht/9/ǜTU#먰 qh> V_hBvQ݄tVq8c kJ\%ጁǔ5q`eә¾ڎ Jq>PĐjTi" ڋJA*uQf.rg*&Ǵp|/(+;6eLm;<; iG_Q*.l~/A=hQ2<&Fk"V|ݹ*apWD^޺|VWi Y~h)N|%=!;곭y6g?g qa!,rF\<@o q?Q| 1%dWJVɽ]uKCh{ͷ?( ]( >+P_O{wn#F=>ұ 6H!iB#zjd "k#y"xp@(*cvh-D[D/qk>A9c!^f00JF:_ohk\#o6{v D^k6#M+ڊhlZ#7G uES> >O(h3r%WZct퐬;iڠ&(@01xZС;\\su bn3LV5?͗_@ը *n{m-ak.Y) i(M$J}$6'xn&x(+E s;^hdR܌t0^.,έ="u6A"'+Bt&Ț{[_қ}#U?}񔻥1 tr2A߾ ܭbP>b &(AT^ rHm#FZ mWħ[Q\ƶq|Yp}d'ދ$G'ݥHb^&& lZC>!t 6Zϻ)ü $ٻsI.% a&0rOǖe_VӂWKKhݿ!wF۳h>I'Ӌzs`]s.F̤D+E1&l~m' ,whHQ^BNb-B(G9ؒrcdلկfA@@C501xnuV"y%qG(U;j#!WUжv,vEVh@`8Auɢo 7iJRvh7aVC02ԑfNb~iϽ7ݨ'Ls.f]OVcIk[bہ|鼔: vax#o0/m~ڑHsng\3]jpo[ *zd`P+nN$Bseb!IoMlax{yA{Ô$oJ,r '+;ड=~ CnSqNcrBvXu5w~ Vi4ܷfJvR!wKo5fG(Շ fE >Eu%^Q^v,5bfס0u/Iɔپ)1eiq62"ɋk(e)j먽ܬLM~B,tU(FBbØA5Bpx{ 笚#/7]"Ӯt%vvb-aM-"q40?p}V)L1},t9[Cb:lTh C}ޭ{l@nhz[ F\@_)ǯ%2} qh:.?E[z:M>qkuJGR;mDcnr6rr?vCa@`.Ye雳R."![ QK+@Q1pV@$QsHX]?|b*y#c歝x,⧳?~T9'#)Fr4HVEf_[I+UdAa.3X@)nh8M=giL]4|ƃ@c2S`K@z@' LT -s̮xG 6N]::ޗX0 MMPџVZ>szDqX xfi=fa}DKsnoݵѲn=0S "8CSUd< &ie*p54(ձ̇0o˪t Ջ M.+tY6h~OQ3&;N.|]}cN=o]g5vkk{<%;Q(t/mA%}ګi:s5A|\ a !M){bTfϧyZKu(c) Kn%2.P{3_taGzgX#4u]Kq~/D<)|yrfc>^jQsFr,7աmwwGb^Jza$IӎTVVkYN%–W#߂m+0 lHo!8QU_f(G訯BAʅ-e<9ӡ3ӿ?΅U>eu%ESQu0QE6gp#*2Tig{]hZiZgx? lJ0Aeqs67O_qo(AeurRjN-۽Df7H0JOWDF8h}NOZB/ܰ`$P%PN;a._Sn&ӭl{>⧫eXQ8⾢זtַɁ e~CdRe$*_ç7ʫ!w .yD.7Uqαn3v4b1DBL Z K؞6- Ǐ3ւ!5}5g9R --ݤ{3yb aaZoxt!zij >9~Oc _+efąŬSM7C 6,ΰHZlXw. O&OJ jD{WUqx^=\}!c@nKgJGRF f'12}@JĿO:Z wl] 75uv%3PN A@+~J^b$ ~qR90Ϊk4$}rǤt" u%#Uir"KZW4N/c&~k(Oep8Oj_Y/"/;ߞ&ys4!*÷O? $D=f+B,L,xz\"eK L~JW J&?!A-,(=LSW}'Rqu 7yRLڱI$tq77My wJHMI a쌑,JyT)hE.5.7ma9.ƍ=Ybfןb0=ixuQ D‘0?7"4o +eEٝK|8E8rxI@uPY|?*=/JZ4g@L(&7 iH48>#0E`pO7*y̘I:W<-:dj ݝ"tdيO](q-*Y"5iU! /Pw첌(e+ѬJ*m;9a Aۋ B4GGI Ϧ v}D>@(v$GiNfUj% _@bL!!cQtɛ$ xzŏ+tD $#3-0{.L(%bS:/~lg!bL9ΒX3;hܩr+[.%7AVL'$x~G6Ǩ6=y7x95{8+A'R_((cG |[yI=SɃ?nTc!JdYC]QCFLVo{QbngϸQ B9`?nR%] s'Bǣ_6NeQ`A>~;a>uQfpx__M~[D &փa:r~rCS $gETM{عnd);H2‰\J_ٵz`M&dObC$LC@Yͽ]87:AKmfEx6ÁDZ!v)>k'x0fe@hx@anCgpDEgk`ϰ89yu7/`ŷW?E4 dwW_ _9BAhuBoh[&l?hl#|kdxh;?cڡppX] F%.!{wԘK/nHKta^.4gsࡪ|EץfJv<|KYSYoUf NyJ~0Zk~~[{&cwbVRIr4#ڲň|K*6s+t4{ET8ƬL \a 0E!iT7ڟ:r 9M?l¬m|FHSPh8l89Ge=LPcXrWlr2"󽑎k`d35< ^kL̾ Ήx߹/E,hjۇ%lp8kG·<aat$p81%yc[íxտ2oU+S+?XMd"zQ AWǡ x7Γ=Ju֡EBo9*REzT $zmj(J"V/_/*RzBF bE Ra[ s' a5 ]d 59:LV#˛I{K lw2Sp*CE!R49#4^ACe;n Li: l=faA6P]G㟥VvvblǧK S |ʐmˬ0#,Dl<_,TL߈8- an8 kZn#oc g%ؼPh6V9Ե BVHd/ט+`%5vpj)@H})T  l旟f:%F/(Tܧ>*0/)ycȢ>o0-ZG,8t1;!g: Kٱy {By#06(Ix9E`4 MHBf.ϝʉ▷ԬZu-~Ç״jAgb\M-bRrZnV⛾BR 5FOq'5I /oɵD0J-)P&-ޑy^ژ6+op>J_}qתL-k} $a,o>uAVq 07vpϰ6U}Yo䂙|NQ39u6DixJlHȐwuk#-TŲ m+D/ fҮ[%l(u Q%(-2;A`Ίsy ŵu$0lեMn*6mbp|I]!nL(&>)ҏ QEd+ॗRɪSpE4.1g Jk ~Ht3 Y"qYi댿IV=;P`C(ZTGd$Ix6w6iʌqϖ^0 R=:Sf`ȿܮ0GZ ܓ &ZPkvhz-<ߡ19a( 7ON;d1I?H.q3jR;r4C/4Ha-Ԑ*}ԗGUS!ty8΄} ILWhX\J_a#6o_рNj^ް y=ZVs S*4%ն(RYRϙk7~a!Tކ4؄q4%da֑α-zW:gAܲl2j~/*CQCs.KY>{5Ep7然3>: }c(2C,j` 5Xy`kCC=fEs ԓ s@2~# |$I.9uq߃ÞJg˶F2+McKcGKf?(FѬj:/+MdhϿO*NTSx ^ousk;WSUc!fT,"R鯱SabZD !(,QCD"Dp)5Θ64y`T),a/Q,!&9/ji&d$SKF|%2'D Y&5^`p#ۈFT$s6ďuG_2prf+A-fto i>ɵH~pRJC^r`RIvvlV6,d9TxdJ[ !E^B+܌WQ5zo]YL|7?"c|3C攽'ep/Z=ac#XudFLY3* 9ޅi5YJL>"N1qv]hlN6vض۶mF6c֙yDn`I{/<( w,e/0}P_p)]oo($ )𥵧sB!;$#^'yaIKk2Ս7@f?Ԏ+^2Bo|i$vdm232FXYX $v:jؔAApUT-zj/B\)e"TG?Co 0;Cr<;}:?ې#̷|lW]+S,5U412 6ҀI+n8|Oе bJzx`ͱvR{T%XA=RA0BH\`j|~z})~ a:u8H:Jnm@֒d͉7մZEGj%` .6a׻.e$CLGƲ7/jl"+ɚզ"xaOtZr'& *!PNGg1IG&-IMݓGo\\\*LYYoKyJ, p_ vFPZ"|}pPJZ*&pA17̇=<ɹaМZ6X텨Zse )!"4mVE&O-4jR]LYsp*/6Wڥؚcʒu 3b$MlyCFQ$9% i[Ha`yfRK'&6 a}mpNgu2"r|rh0LrcČXe,8cg*xbJ] mw<³?>uXTVHIm5v5i#fn"HtPFVE*!}+3 |\ur12[ڗ}AnYti(Zxut!"{h/gʈܞ `;F塆Y`vohK@1? D:AE)wntozJM]CVuAIRшa+ ,Cx)Ał r^1epU1w  AiK! (!+zI4$H8yM]`Ad5/Q2*tnHXaA>'‹@js~[E>\kh9^eC1k8ibQ_Kl Tp`EQ=d߁dO26ptK̉7|o0,Vf~4w}])tTrjLad'@g@%m ǚ¼Ljaak4~2#PHwNouޜDG\xd@CL! ,PNXC ^alqhBC",,MPG a5>7dxVQg*?E8O +&E-ܹMF{VNWEYsqwR 㠃d%^Ү+H>D .=C jJ9)ZduJev䫭 F:ND ^Tz S!bv5i7# gBNRDDc/vjjᚒ>:-S"R~LSxԾ&rܒLpGԒ@nBaql[R>uL5UBr0Шb|'fف/oQ~(2;n͡ *]S@d,+ܔEByr۶L&-kEOwNjTO <s@B!{|+Li(\gIo19J 24dіb꾮~WP ʹOar^4qF,i-{Ku^I;AjOyW,7WxdI zcvW]wد[iE9~;aXia (nx%1"t+ywW1H||FS=aخW \ QIYAZnšQQ8r{W_OWַdQaDbFL"yd{їkݻ%1R4c:Cx$?1A3ьM=3ٷB|0e瓦L6D(So؄^HI:nEi*() % akZ,# T~>uBp\_^Y[ިn)vEu3?oF(m{ 7;ҐȥXn @[cJKHd`9Yf(/C{.}x |;'r4ݞ>>Q%?L_?,"G-~Xse/]-$tEq{7uNLHFĈsˆ'"KpNx6*[E-ЧOf0-P\i] wӐ4ߵ}vVFYL'Q{ ڼEl''6œmMrkɥK!ҘXbӦ;ws(s> wD3kmq̝q@Mr`/#| 6 ~|ق/f6JZY+x3FC zû"uO>_H4X~믨9GnQcZ]r)ݖMu p謽lz+fjyit"1'-7[ 8 c~5akqyc-JZ9=;y`Ɂ8Å FDo׹.֨KMA:WZje!Q %5V|Y Dž-)e{U8*_S Cu`h\ G ܐ*R Pٰ{<^r9=ycWe㆔TbYWՇhY|iNlcaeSb$XeSVt !=3׿Z3vk§ko4Avf<aAwG1t}nI/p)q/Ƅi]:q[(-LsMR^*Tre#ח{#ؖs鼵ʂ4$Vy҈M2:ɶZgS-uTU<K~iDiQ{MG5@勐 xdjԬH@o9S;~_Ɏr?6O1>P< iN.׺bwc>- GuՌrd rK[S;Ueyzl2ϳ'N-ĥk:yӵë%Bq#[`5$oaa0|v6z4^$.")PWCjl6v儅0.rR_;>F}_3a^Loɠ @f5v 3Nofolfd?ckNn2f2s?g3p$MI̙ILLPGNM 3u[}S<d%͂_`T2ʛcD|1 zcIxzOױ{@}}`APK\Ek}e_ϱGFȌݏ+?^^mQ2m;|~^^>;|B|ʍ נM;}Y>Zlz?=?|wg GzM?zN}?'7j >? 3Vm&|IfJ7.^w.7X͈ [??[{v>>9gfIo &UW||?}d=7SJ>3*<\x\x7-jW_f=9cG҉Q;@`if7惗5BQ|2ew}'6ynLnWaˢ2<3QϝK/pYH<73Ciˬ]wҬhx7Кk"uiZkJ(7&6G5VӸǵ_E>/(l^?$7WXwښڊz/]Jp[ǵOfW[ NkE@nM_F{She[ ;"+fݷ +| Ĩ6 6W46M[5v`N\f)~<' |[|'ÂJjօ^F3SKj7/ΈeM~D/> tY3^<^럜7{FrIOE23 Y|Io{bZty<;UW!xY0dKt:4/H?AjF[m\=ǓTOtwi(z;EfjmV|9TFٚ(M93 b<)T2ͽrUZwUTXNxA>ͳnx3ZͶN;_nfۛ" 6٤-3o]<_4O7OMwqL m3KO1-~đe!~M}ŞS1ƕnfqIWk~Ӛow # <:Uc6,Y)e'A qCݽ|ǝ$mu)7CLZΡ~ňgŴ2:AY;e}xAR҉5ow~?߲?L}=Bj^qvGFW͸qo*(;8RB $ǡm)vd;)Pggzǀbr i2^wM`Սz)ԋw:+//g_yj鏄$ɾ+v<t-Cݫha4\gI/%v"%ZPNqIŸĶJ) W/SU&x{ ZiOM6x = ͩ՜#*E| 8+OVЏm|$\NK<ᶦNCgw~+}-v 7eg9nY܆=ظxKˣTp-j5'va Gd&=lrݟksL!F3* o0|EGKLy]-adf`Cxox6ϷvBB@i53gSEU{aAO$$hgd~y$~_%Oj޵M9bp?#m7[Bw\D`a6b+KG>T-[v g<1B /d vu; k-nJՍG~0F/{*i^ _1py*,UM[!r٘uUoBs1ڕy"7т9_"o~}[?W*ڭ1R;욱-n xPS%V뺉EES fP8\7S<8"pAOq[٘\$جZerh+Hڷh8VM}~),Ra{/kpд,wI8l3epS5WQb/8;  Y\gk(K-eB&]k_WRq.j/YP]9EV*JpB:@>}(=쏰,IC/h<= MAU [FAF-!qן_Sk +!OY:;&Ǝ[H~$1 2"B=Rs^g^AH;V ka(Ad)dp2/(q"ܭM(DŽ>6ܑkm27@FImK.( Mq0E٨ZHIm <.Ci^T 9' ͱ$b7&7&$CC©o[N1kYaC\ eذA\0q1ePt=]29OۋX4XsD4)]8zztE/_R EБaPD mSObxu9K1QDe I`mЙ(q۲E _];t`,|97nLН[H_@g}w 8Duv xxVa,1i5zp.kB ﲙ 9vVofPe6 bv*dOMQ R+Y_/pwmtb"kĞ$))J:w\]@aL2$cVHw=w\Eop6}1(T/5X#n#~s}ʰT?uIV~N.NŐLJd^c9\T/G7"&'ٝ#& cdؽ{y4su{9-zՒsfx N ]b  ޺Ql?_'9u bQI4*-Y *:oJ_E_P(3b6@4҂3w˽|EJr\tCrP[:jPqC\_QwDŲ-wlޠRyW{,ٙS$C{Ѫ\DtɯzUT8x[O|}mI6*]k!9_PoRIo' T ˿P'P HI 35qƘ0U3%e kz1W qRu[?hx4mVB( n#];wX?<  ;dmڽoO={>73Vk,/ը)eJQkS ɋSpVb9eiZ>&qP{IVBw75"󏝨 63Òg PR0yj'eo ʿwu]_`Z„ʉ}WIcMpo,qlHaYɿ%b%#<՚T~,29y\ K[]J(S!gԆ(~^˾d`t5R3"B7UQ7O:0~/0 &PmXedZ&;~f @xFۼF%Т?K<^5PR»NYv⏐Y_RBSu TJʴ kmdP7lDD[kK`#48(nyWs=yz(^A0d.n9Ә${In5 \]"wcd|Boɡ$eYvC+yRd$sn+D 㡫VlکziZ涏;;0(m+ (_{vhp,SA8k]CDl*n߰8 ]@٤VB`NsW8\|Om N]f=^Q"1y=$_]ߢo e0!1oB}{[bš~h9g(~FXڅWQ.&PDvj &R&򇦭"O?V'6B˫ P6NuwP5=gv\ nZ_ϩ]3@ < =z5z=di&wv*aeZi$"GvϪ XE70Ō+(50gOY#!Ⱦ5P OLQt;IcSU61 _o`X+뜑RuI2 /YbS@W`L[0m ;+/alM,Bsḱ'Yp:hI,c؏]9fm1'Z}'fZ.hNzMtu_sg&ը޴["05^`"җv8Zwdݑorɵ@?#&td~h9q_vY&iI,MmhQԸym+c1UkY0ԡԡPYiՎ%6cGQ;Gx,jw==ĬD"YKP?IboEVV1wSpoMpLN6\@kk$,݁s]2%/;Ӈiq#(UUp-߷RN~QtVAX4s?6>"9oOn_=7÷X< = fc:&N[4",v ,R ۇ rԱm5]O(V:.8 s%Am԰ƖRgJ|kشY|xB^Ù)IVi|e@p*̣1ͰSW8 B)D˖2V<L3f:&NaI{&EZe>7= ӟb1C 2U u).co[ƀ+NbKaվ- 2H3}?QqeITo0aD+xPсpziLQYxln_d#C+)ұ$6ưN{  {^YOK87MUN8;Qur(s浖G|ZoaP􍊘g y>;̃M"$:vi>=Q"r>K}X k׽ZV}&j]X={9oJ_/_t>&huWPA\鶷p=ޓ|.ٝa{}+͚'Àj g_{ٗ ay =Nܶ& 8$Y7xV5Ǵ0YF-' * ^ytUڍrc.E͸mƒMS13 "D?vWc'͕ dAKK-G,7<|{7QJ9y tŋ_/W,[==eNAr~}wL/% AP]XV+xXvODTGw Vm#j[p MsniTiti; _0SY Jsaқ6W,#0a> 6|OŅ)ߞOGމ?mC=^$fj `V#>?O/Di݉b i1Hr![T/,tMbc72oO#⢐+-@G_L{{Z/l>rr%@+k8F8Ζ8[?jՙ%8|2u` L(š Am_#oyf ^@1 D}ə1z1\vi혂 GNg'Lp*i )hzm,TqN^!Ql.ա; )3v3U!@ W^|AWpHtG@~TAǯߛY-d%E/>.aZ % )*=d(eW(4ӱI0FX7lx<u< ujDt:T}Y?U族Njۋ+&Q4IND}*ʟ&'Cpy5QgI {~{ṯ.~N'/Tc>]oBHZ$mg>)}o _^MbT$Ռ}=޿i=/8OvԏbtYLZLZ=P=a[e+L@ײ05+4 HLB@&\&Qh#?F,dVj>7SQk&O1|n&$ojyDCST4yD.j5K%һM-x شjPOiQܑESݥ1A.eD+K:y欢/ωgM$ĩB0SaI x *kѯGs%zN&QiGA}3E_ .ٜͯJm{Ytӗ | sK3:?CV@;nN_{<)Jg 5d|^(UA/2.xZ]AW+nRB>Uk'j™1Q]3wӹ> M{VjJ 3:*}~gvoz!Eш6VH̭2ʗ%,r)C(_Y\]XꟿE#=N!c{ꕡMue1RxSUg YT([*Q&&dIP:0ãn*,65ovyM zjS+MXm#dH.;K<$w,Mw&.{|Ai)Q%pPԅiՋ0t<~w܌Mg5g EJ̥;x|-2pdZfobôEE{!8b,Ǡ* a r =. 2b[Uf\QOSnZܯ*,)ŏ`QN;ö8jygG{j6VZո>>dNzmUmŨ>@,6#~)62jOP8Pֽ~aW8X $2R'pJHR@ ;;./xZVmtUx(⍿"Pџtk׻&vx-m&,:ⶹҞφsWpc0nw/ U+!q|X3oLt$)C ^:qgP!/ȴ\u-Qc7Qh%h59WBdMdqf4C"!~5sDBP\K]0L/<o0~+LNhY5EG|q&z q(3~:8{^jG>YBwQDBѷtaDyvvh2ӟ:k0'X%sl& 84"!ؾ:w "5cy{HͶW9r^)SŰ]ۿ>j"߅ Ğ\P1-˗#vAHqބ R8'fLM\[cV,`>i/Wp^auLpc%_|OwX[md.! $QZߏ1M~ ow}礿YWڑIsb)t'FmT I? 4=`V>1!+6W&(ZϬ3c9$dҦ]_{rY;1x2Wj@ɡ@BZK8|i'Fj`2w$DlPDOpWAWpeih߻At]j՜8j Y F8-TŚpf9wÏ0.fF?D  <_*Exq&f>*,9WFmߐ|3uRLhR` VmTX+4@.,w\+ [űFZ q[mBL<茶vRx{14=G71@Q޷'UjUSֱ"TF JDhPJ\zkiT6b#`rw餴c%^xSL9*zrI$$:B 6UIE~D@޺\|EB`#8-Z_W _xmgb 2X!YY-)> *:돢WuyXQgPc!ys2 ާaT6_'tEyW֏Z6;cXN?'-eQxg "ϑbtx':k,if]~" ȍ TOmlՀf`bJOs8߭1 #GXG!(cp(_>m^W?7ۢp_+Sox'sƬXh! 7 ƅBK&VLygtYoЄ~ynRvŸȑR0T$Q_tb)sP"VULAz BB4^<<{\%a+mwtSc{I~c ^ZY띷 Z 7pǽ? 4C/AgQtyU(ںElhp>REd5' p{ I <4V,u!~Y#9r .䀫%4bi IUBR$yU)`Ŭ?ބW.G 5%|l_M4+1Od=͎$aH(7Y_߷)ӭ>MɂjHuraGn }4m {-]NT0@*&Nc}Q<d?"A3>qGi01V vei gٗ~ +9 KD2Ѱd>8lt3-۳dUYHg .g+~h4s8+~oYxkpGz,El=.#[tE%Pdx63P?Q#nn,4 KLM- DPj ?Jx '#r߹ax#@à^ Ԇ.$w\SG &PBGa) (;bq8t_<?QsA+㊵lky]L 32*^+xG_- r N8 ]ZS'T:0IYm#QZ=>6:mB;e>C)k LL6{ JJQ-DFFk*/A+7[4nt3(xf>,4Omϼ;h컸2F:N:t%Br'"/Jb,\bS8:I.8 =oqZaP7̚IvB-*BiIrJKGa񑣄¤>r=Mϳ$P Q2Yu]@O5a-UZ.=#Z w|B>G3=)'Y2@6Ez ԋ.HYGg=$nxN,@bxEӘ@nEpVx}7D0=j0f)=/rox.֪(i(j؜IH"xxSFjR>/, %utH5IWsk7gw۝ XrNT*D3POխu(glX Q2u&eѿ JBTDn])>%. қ>;QMK"<s먶We@H9괙)I0W\׊u4ROL.,SJ@W!s /9!&J}yAZ3=dv.$aljj^)fYl# Z(*4ihfoʖФ Pjㅵ[!fXcA 4;4@)+ S(`t]/J@wћg&y|zJpo #-%)o".دD;>" Nj TJM]\U UX#cseSw,3Ng"ZTc m.oٮ9g:Y+[2++\uo]~aB@o ܋2UFc-'6/b٬E % Uj@C'q|Ӽ۴f ¬ޥ&tPj?y{G*09bշ+ VjgD1MX"HLQ \iU~#e$pMK:pb%K}͂r( Q~۠/zJ݇7Qֺ?UP@Ae311\;}^VsƟ:Ɛ#?h>[<50A8G֣>њXD`FP@h+DU |Q=Mwpl=ܚE`W˔F"ń7cٔ6ThO|J3;1hݨy<%P[ҟ3s]_w_ ¿\?_.4_wzfwNJ?3'Uߧg3W^Ni,d_5p`}\9M"ĠPj.̓Z|%$==͟(q}x1YWܝxT%;:&qbam/,S4E" E3oC->!ȗ#'y.DE 7Eˬ #:1+ݘb[SC}BPbݞ8UC䍱Qr@B|PM8~ז;DJZQ: K `svGfq׸5=ęnSt'}ppU yn!ZhϽhy Dx$;5R]% hٮ|l\&vz>.Ha4'b4ٌ zv9mi`WKr|_޳zS} cGS.;^/O+iC;ԭB &y5/Ί4a}ǼEv*Vhi7a36;3`@Ã:yb',6~D=KBS@1e-|4j>fv!oi:L5 a`5 l a~ewVR[?r>6)_W\Cڣ^}e=C)]O6:NL[ɀ kuzI;-ݤahz0Ia3_b8 D>rncmu,\Mh=V!_ZW1 H [ۦݠInB _ '\Qܚ6MR`Z,p+4w!%M+SEvif{XghRi+sux9mm8 j"W9x/JF?_ =较0!HBX]b_$ f|r-~9M8#!?39GVEum;: (%{+㶊;[ zmO&t_wT(d` 1yHp?M.%D5U*Ork_K|Pj iIfAlpN?tv;۷OAfӏɸg8ԓ Bw}[۳XQ|S!.L+՘Y3+Ύ =ׄ!}}lZ`/=֯/d=@ˊ=40 +<ݫT] ~Az1&:\|$]\ocO{Y) @ء5^#Rnx }hkwuNɢZ o1Dp | DQ-ZvڥzRD(4pWNh^hjS_kwQ2'/!v̱HkVbR&'Su*C$QG">3FbL9cq7r0HߠWw=A1,ʪF-JMmdvEFON_G)MtwmwAˡ{Ŀa{PV]6JeUHMǪx^3^>'Ϗ 3}1Nd>oH>|q>^~o˻LG۩vM6ެV^wPǞlj #_}.xy/>vՏ[r$Ehz6b+'sYVez' f\.V&^ٓ~xۑ$G"\ϐ*S~5cWBCVygDFlK'}`傑 IϏ/;|B,_]r:gQ[/뛀˹p}y1ifd8Y=x,$r@$7P[wW0 [E18$@Cc,BҗK%#'7J3VIPWޜ2I2e۪gUZ4 aQZU_\/|y7+<$3”t}u(-?crђ޴y U`[c$UbR:DUR}E@&C >KD~(>qqA`&ÓBJ#[= ZJIW z vc-ފ wjON, eQM|;{jH.:niڍGlLȩ^)j]!Cw!TE[ ˵0 buyx8Bu.{\,9]S^Aף,@ss[)=հczTV[ ?=q]$:<~s\NO<لʝ80_6SgPIy-u0I}@D5t,|ZVk7xL@[>"_øhشiBDO<-mIϟZ39›~'ͤ rlAP;WpO9/w lY=MBLca~&7 GS>޺hIJҀ[4f$]<p ̹v6ǐ؍b,X3HO fa<"?' Ӝҏ~fcq cE`23V6 Qޓr>l~$e:Q~q*(@ڦ}_(쑁`$[]~`DfʎGgſ~ d<&MG"2?H>@)mO4ĐWboPHGbn8Ƚ xVZx5CCRYY=f" Gz,,'IqUgd-S YѧuXAL5S4PtgulՌoJ?. GE,f~?߫ b7aAeA''13OcDJޚ6{6@*<:#P`զk&SDI?X& O08 JYN(k RO nzPbZKo*/p /ODwW>Nx;ua*< %o V4yZ;xa@x7Y9?4_ bFQ^蟷S"9,mt2ۋ|]&Y_CIG@r#6>'Q6ET/eRui S cR) 0Cm춖pT3Jdk{߫VxkNC߭rk-Yݫ]kZ\>!4G1[& i6h0Us6;悷C1#x̓Z0iȡ]vTlg,ZcY_Me~3ŅZ0 0yYzj,2i3>(;M*(2'.RjW#L R4j&>8 Rh)m~Nk]LwÁIGVYRNHw{/sٚ{A?<@yqIbP3ܚgLZ#3#`#sf5eըUZ(49+<+WP!O]ߊH)n]+fL"^x>&!4䄵@C. l<\@Rlq 5ki)jGݗ¨ ߥwewh}FVJ̎^6l^Cq5!?0+tPKIĕPgslўrVAJ`8&SbPDZJmK,DGK +"]G5feB/V~Jd8dKO[*uQh:)wL_}eu##w3;1=?[OA 9)5֫|~M飁#Jo<^PQt?"9VG@s3e ܮ5wNvvcΰl܎pCҪaAk ]uTBI#jn{s Ad75jeGGk{h|tJTWnPq,pLjga_Ä6@{qh]n46%k2N)hc4]4Qm"2{FU4ҫzIP9 r56ۣjfx~ ^kګm7Ф߄ Kj &b[`@8uk!EobXSF~*~ OF`*&֔]+C1yb  PM2!e|!GlP"x |d̀*(̗ Uw *Tsa7)▜duNw-g|.X=Bw8+jl]lkJC 4` s):h2ލ49ޤVϑ?L7>}veGwfXs ᮦ#!HVd޿g  !cyD9(>j=9P(M"{f)31> i ^Q(*] V/ 8pKޜNDjϼA+/FikYCʡhU.I^uGs0&^0!^OK㗁WEQ fr_/<W>( p,Eǚjg;êQ\s+=_=n|CU mkX!wPV mOv[_q  F_N;+.TMk%&1g<,2;Žx&/>#Ic-n =7uFoo; f`hyu w{5~EwzPlAe!FUܰU˕e[mdpqP$(i0jk@V a`Q?j<ޭNi 59:O:OC %]^o2dOq r}zlj_ Jͳ3*zrWZwBph˅~9^ҳ#W^#8􍴔g r/%V9vU_9ftޒ98P%gp DOQX6c2_\3Ekjz=?6d$Wa=ԧ_\" Iܚ8K@4 M (HvSK WV&bmg.5hHzc`%əyP<3Ι;Z(ԋCҊ؆dbNyĻ+}2';y&K53!Ч{pڍn*(!6=%P[vʔ¶nd0,Zһ _ vA^ʷ°67 %Lm<<w0FYkR[Hodmv3`?IMwNqas@TVn0gG//Q0Xo"Y>NXWx{2B4鴟MHKi2 @^OzwF=79Ů;sp/sGGKNB5w$+i"8yd~~FC4Xs9>'S$c/ഽ7p<$5N+7;Ӊ)֙2 a9ŲۈB^BcwjBqgP)aΊg1'ѫin9u J*L) qԆMe^,y"S-_-1wΉE?d%D?r;N[uy0 | ~?&oIpS!7xJZd89ph‚J-e+O?ʡd5ƍ3ZM);nC%4ޢ{42ۄGҏWY=A4ޱ+"tg֋HU/ tIk2rY-D?oHˑ!|tZ3r2jd}6 @{oT0J턐UCĤWXlcUO$:6h{]U\z~9!~]\@fvgO >Mz}t\m"Y1Qͩs Asbk]hM:$=0QF bZ+O=W ȑ% }< Uhcu\jf&0m>щ6nsb}}wMmUPqtTٿHn(k!IB ܂PK 0]sEg_yUX%]s,Ρhpk:Nd14ƥ+@AS1N*hP -D,A~ªXIVbs9f~p!N@qռLSX8 p u'$}D*({GwEf᳃n6Fo0n8pZ"L@WGFULFxPPkc+c7k&Yڭ>GjP-U|K oXW?ci3P+Ũ> ߨ>CWν6Y6<{);n]ă+%,xucOcCZ!qx@ HY/,_򢋫RosFu`G zqGh{:)a91rPd $}hqW% E}?V?;C]?Zl,ϷjҊ{3?d XuՔ>z3.}w T0lRO>bM$`AwEE't2aƖFj[L0c͵ut58 Zw'~SP ^@I*}M QeEFEWҹiȰ?u[~ (WOJUD'Y Q&f{UJxP)8tjἸ@/Nri۽-9dKD r3e!l= Kv` wio{kVK [8a>G M \ JC|ѝvЩ f39F ([:yz%RG$L_FzTA8ٜ xK}KV_ W'>PDBe/2t(z<u#{B>LjσDA ȢgT~-Mv_U V(ޢ &| +.P:Ay"e;a^" ǎP r<9P?Tn}s 'Cdi\S.7V__,Df}вMPѕ{ NXh+F=%˳ܭDcʈpAU>(TN zjZH D9Y| bwm*a7C]5D~?ϲ,Z3)*]h[ xlK,blD!KR־zgoI‘u R \ 7sub>V9w&K?thpBY4~QWB-ҙX (n>oϗ 3SFN9 @.7`73Ćϝ,A+QmۺZYf?onǸ$jx"u]{VH8P=̩*d'o5Ҷ |OT/@r/Ҧ$dhl̾"]J:eɬɒa5exMrvy;:[yNzgxlk{$G}4{! kZG|A^r \SG.{ϒ "DKn}@.), ̙^\ ~9h!GATЅ ~IwQyTK2(B*. 45h Sĺ<b=c_uY֥X9`,ҡ*P4CfdrS x XT9Y;"Q8}}:L x1!?@;"d  3᥂ؔ5q9r+C7Ɛ~cՄ_\yGC֪sȡu^ yiCet&"+VZC%@k&Ny~M ogRU7H!C|@@ ps{ ;EF$" Įd*Y#`;k+ b~||Jq;?!KF,?;}pxK F&4 +zRy-˧*9_"C4)N:<z>U^?c #ձH Z 'Z"~T@_0tHΆ*0#b@l`fFb6uس Pѕ\XC)-)wk2`, C0gwebW>,y=iLZ'@qF@Y-=K;鷉  zl1Q"',b虒ٞ d#A:XyLa={~Yi3\jᙛ04H%)uU/+} lIi|; `VK[˻D9vlAE( t"=тf]B$x/¼.>[Suo\ $ yvY.;Zok :{->u~-HװS3ЕdawZ%[|6IAPl,ϧ(xt<4Y qX6 _gQ?) o 2~Gx6z‰ $&.eA!zVV \Mu\ #wn̝n)?l*ժ?Ndڅ PWG>2 9ܹwv ` T6R@ulks6ewK$&+ e ,>l4:OI1w]z,d GJs4H~i$sE[}ƿ,ycEw9!ܿN6̜3 R^"ق^?r`Lq/!l K&-KUe&#Һ/-? j@;2 %{2d[|iyǵS_fqBKO5oķe*jrY]xv x$%+ti%Ta\*F.v#*bq?ѥ/ׯ /(^0p Z(':dz1l2K zXXu堋bf ٷ~×7Bc^~m[Ɂ;%TaP*0>CgZ;խENWb8{nw[V]'@YpVU5>7m(NSi7AyVK5$0Y yH8ΰ`@~|g%0! FFdd}/('?'=j#Ɂ'x0aTy淿"c̲Z g6{HwᨛA^ E6O;K"NN0 z>aH}m+;oC.>b80_eW$]P@6y*{7"'u2Y~ӂYJ܍O఍*Nlztí-A v6L&e+<,pJtuIu1|<6BOebY-SA@l6nD$ӔlHn><;fjDN3qZjQ;w'u{`SN!2U`8,ZdV9l+bjai3EFs,·gAAN7 -i?;C$)]Vqg^?YspYA~P 0ht 9вF%Ka>1:<@fhyf_OOp)E &NNҘ(;7[mqDU.+Jǣ km]f]:p&B*wg IH%r&lc2.z6%  ; Le);5 nP /C͒ҁs)Ѭξ-Q1N2r4p1gU*(Ht%ghEIPw}VNݰ3vA!:-G͒D5L h0[B֧Z89 b֭Wb$8T $9F"+]Q.4Lyg.?wjp@sa@3 p9/#}fX'U(H%V@ZVPRӭ͕)!>Wp,.> ×bQg| A#nYP0\ra6?\79BQ,c:v`tM҂FOv[ $9NzT| U.j)YPIYRo'zNala~ƲȠ(r *ʼnD[\әtjTM 3Wר'm+ϳ UiM7ÈR$2_@j\T%yEJEo~^ٶ|$-hIs)lFuyt/ $9يhX|_]rvlnZMR79o^}>^JS_ConYu~s+x'1W/0R M?M|&&aܲVL\OMA.eOum>$ӳeO}ͅOE ^tlB <^mX^\y\OX7 ؤ(6'Y+^nKS`[J W#F*{[Pƴ%fx{qfm碥f ` pIm$\տ";DQ! {lm Y(qukC7-Nģ˻_Y"#U[3ޝTB nJ|sx?I53^:Tt0X\+ cj;@fL:WB0żKNpqbz7*{NHfxޝ/sCWF27J=١Wh!+ k*݀hUʖayyGk?!|qߘ1-GnS}*xfzƏW37K7-d^q<8A= Nܽ.^Cl)≱ p4Sk'YRv#'~T;cJ&RFZ 26(8icFoe A3װ)_c^Iwzg 9cm٩pyYGarEG{m~=yE0lc-EHAS tP`QRzۚ ZUᎉb+^y !ԉ Ko.QNc-l(A&j^q`t!mz)xo^U'"7򀘹`=&eSQ!ݵCRvL6%=;sMZ@m0a(cl+%w/ n)7TZ,j܉KB[6l+-:2K)ӟM+ޑ% );;aynUtHH}-˨}'Ԑ9^JV1:2 E3o=a k=Wg3#n$fL%R˲rܧ$DџLQ%Ϡ‚K)`ԝ0Y,\UK^^+K0hH3V >"!GDUtPp\<ۅ7ũ3_[Mh1$'*yp0t5A[*+%n9Y.fPRQDV4 Qޡȋa6 8\볌]ǺpƄiM=+T$[?{ Tip$cxp~V9l%xh-)3bXU"ܫaZDLJٜEwՒgl/ڱq)sLuZ.$t%eKrPFd9 ]EqǖVړ_44^XMHj Y3&zW4д̲Kq4l=U0լûq 0e?8hj95#5 N>[3n7Ջ^d5o%M"jv5wőG0 WZ$~+V&GƠV>u[X=6o"ʏ3,P味Nfjg]!JD]uPz~ޱl1H%>0B`󃌻n˕9nq¦9ByeE ůWh#l+*vgt>۟wI@rm7 U}RxԯEsMǏd8\|ylb q'6H<D̞r@ڸ)UMbZZ\YI]/=n8knz%pwDܿfB46IWfo'Bcm*8T}-p{1GyW>ꞸH[>"8  4^zr*O\XGu>ꬩ-ϗ;΃LAk-\q~#C'V& bXf#s2 3Z]PYﮟzG~ۻ1(&<~}ڄT%6{{#qkuW;6P>uE\c 﫵K BS@A͹ÿـ|a=|M>_~p\t{7-7]v 9c|Bi4Lj#O5՘_~~P6Pw{ x~|+i^L5һU:yU >8/ іrX-s(nmk3SNlg;L ~15r^Q2~YXc N#tws>uw{rۼBJy~Rjr%ZoKi>|9f8Fꋪ;DO2)\N~\rXgr,<^FvTԥIGR{PU{h$zS;bWwxm{BA\i~4Am#|bq#h>E]NVcpm;ȭmska!ugfl[Ls ^KsG{:JzGժݿ^ţ"2Kk_(؋\ڕ6Rp8dgl+W `ڼ*eH 4H5ʉGAVoᛛ _X8Z.g&xM,!;,ac^Zo*Ej]Թ]'j,5p)~WN/.kj;/Eo{dth~{$)V~.:<DϭzH_X7#l]r9;+h+oy9sNκ"2LY<;7:i-e21 \2 *Mahh)x6Қ!`,>y_-犘 Q2]D] нM e+ +U-t?0NuVR8Mʚ|tmAd54ťJ;~<|,U ).[_Ze(MS]# ^}1sy1eeOsyX,تi/θ97V: v̵zˍݻiН(Q$շk mD+bvTVt'HYF?g?gR lٺCүO6xrr\>Ww9 ۫FcuU #ʇ߮^&47ku~,^b͵jnqju-zL|qu処_cFT_j +0[gp  d|hqk#]>NO~g[,@+KYV{pxD5-9h^HHW` )d|:7mႅ V;ƵiT`rUy)R$- VqLo-Iv k}{[ϗ˟m2?HJL>y8foC_KRAoݣF)Nɥ59 \CB5|Mv^{N9&((S&}B'G>>뤨 YkUb(2 {2f(h0TW!165:|HB[q6kMo0ԉ|JtO\>FpbأͳێO~QeӇdMs(tMՑDY3WR7:N@ӾaI5'YM˒4vPv:ƪn{T󹈈jAn5 órѩ-Ą%ONM1'٩Ь_vة }8xU`.X -_Ϗ;J??-A0;Ofyb"uf&TX D̡(G ,΍.DظG\Z: G6<VtDGJ#eE Oס 71Po:i5D 9kft/?C_.dG_ BUǖWyRV )%qf열?!S(T\QpTEfDH̱Z\;e!.?He |zܦVdF؁B&3(!\1av\IԱpZFl .q?+PUp9d,jm,[pѝlm>B( @$0!0!~N 9E`5Viá5y ޽~4N^, T,3MHEAe++{7;qk9AbS#/ap[ޤ'ՔaU6lK!"hqC!ͯ3yKToϑ:i}+*Z=_rb6GcG;Qzn> {HFtJ5'_aRho"]7nq⎽:5h>:Zɩ[J>TM$B]飼ڴJ5zޣhEwA̘wx5i'd6cnm?#1e BUOǺQՆ5"?}\ʰiש:vQ Ǩmg?l"{ӦӤ:q [~໮~ғMS+*D4#Unq0lԬ1,uwQK-j6Y#C$? J"ǧ?AژN(P~X⭘FMM3;\£g"x"^y&LYh .tXگiyrG#V;/q3ѩN,U &\O}=Ցȗ\~7j+eZ@!#KNuH;q٥{";w=*mHHKHei,0ZmcWx'+dL}Ζ4%劭+vʔ@1WxN'3mkr`8,&6ѧM簻qXڰ _+S|CN&w|&y".{=84z `Kص%(R!WT4wDLNft/GhߥzrV(ۨ hv]٠4=w,Żgdh䌈<68&"+zė5oI\p$syJU5TW^H0bce01ldzNDOؤBՈEvNfG4ȱauuq ͊ ଘ8+? n>p݊gy\bY8s0klMl$ dSK9.0l}kZ,He"x5< ^†Yt̒_޻(8H⪪tP] w3iIuUy+(Q۝;zUK ; q >rML:H8 sXgg[B%l]1öa+U1Hn)M%ҕqUm <Do=yY T6?qܼ:.5eŒax.kl#n5©I8m Y0VG@?7Ee5g־Qx@T`ZB*@[7%^=~D>#5Щ5g@y9 {p- *,'J:Ni u謁*9>0!+%uA,rM>:?j~gi+SIiͩi o|d{u|fvZ bC-k|nCc9l . O:Q]{͍/Tym>*3]d ּ].}q&Ul~D~:A H^Fxv=t6Lz=F#6O` JH NH1u[8Vi)XӪlfhȵCrzxv9_ؗ<Zviwv8s2:fxC'[ǥ;!X}+.ڽge<2^(#M,@F7h:%`;*b&3LQZ(VԪ[Gg@kE%q`բW=%IbblFBKW=[RD5c~Nϣ`"2:i0h߰֡}!Y>*zg ?j(Z#%Ǒ.]0|Ίb=U&M_4ڽ !,Gh>l?lčO :]aye}LY\Y?埬KU+ԭ+t1ADMw;<m5qItSP4Vвá-:3xy ?/va0G[͑U1mS\ѷ 7p $i9w"¾\ErQ\3J{B0 uEq/~ͤ꨸ۏc(t"oBS~&'.^@F!q˺y8R;YƑf) `\ |C\CVgUM/KʉU"<$76UyUVƌ F%IfI8b4` _.ٮ2c{InI!VaY(R'fZԓtIw˵C/TOwWĢYAWp24y3ߞ><~d>gu26iܤ5~V ADPwjwb!&edyv1xC<\1i-oZܤ+9b`ZzhiPf]iYĦkT _Alq)4ԴM#'*y[ZgFu8o;Y O/MaYVVD~|f0w-u94uZ]ZEg(ApɎϲ{|f;sE(;9>҆{Im1̐ R oTM޳;@sͫO1ܤcurrW. e[#i.ұ`{Y#*}H=qð}UȄ:l[tI խ>n螠las$7_jrb':GhG$N D.XxND7&`ȬՂxmYu1ē\}4m#*L$ RLG ;P.PG ,OcDŽ[%Swb&~):w c0bTLKIil r˜qTb9[Zy`^&HWǽCNON#T[g:4}BL8Z?ibzC4:6F9 KG$p%Y0MCCڰYO XRFh_lX= d5k?Q=NFl#u፵;+M5/;poكc1DN;h.R=DwG[h"N pV7r=$QERM`R{iܗƥf}.xW".VR^݁xq *͛I}f9N:5UgK`dvb,M&h3'2eIU0Vp#[irqvGuu_ۋa9Q{/(5I>/),}}ZC!%JK틘sߧBK)8sR --g[*alǾBZgm5q~.{Փ6K;qri?ZWN+{Hԛ\U\+$pՂ+xddT6$(դyg~Uhnr '=(A/}L;#G$8A|kt,y߮Am7=Cb?n* 9FƵ(/$tPq:xE&H&j|";j!UC9u?H(m@vZf1w3"ˢtfd0!?{YEj|ۓfu.8Y!aͱnV-اN(flazZ[UkQA+#m3xwagQmn)n1R/î8M3r$sVciR%󯘄[G; bQ6zt}b_DE%7veyIM,g'`eRvj9*GRNsi R9 tXCqG3$ptѤV4A_?@OlV^P{ ?S?܄҄d 셜+6 _R!8dx*C^M)B`*>55[y?PZWܶ&ΉAvcPɦﯾTx@TUa7ӟmv*)v;n)b,jsMDg;-UF,P5-y 5-vkKe4T UPDԺ 4~jTVX 8C)BQf4cO[ĔatS|Sb#u_E bv?.\+9r&N GX^e8EP2pJDB^P;m0DdJACUQ\Nu)X[ICw0#AH\;3 S7>6i3:j6;#FPƓ!_> k z(Ik鍕R+6d b:]E0 ^d6#·im*g3ylB^?.?]Vr|gEpPEA7Z3֒uXH 16gK?WC8,iJF)dd pqĻ+p;؋(;ieBKƤK @*'[i}=.A뭦 Je9 d+fx])="|9XwjkNEJ1O*l,􍴒/ࡢ5,5ӈYuZmIwÁ i6|Ӣ{Wr`-?vŪq fȭȱb-0-3,nh^:rP* +,1#'UUx5[ @J19v}vyօ gL>S5b LJz hs? 4F6ȳ!sJa9xOҖ.HZU8WXk"ƾK(-,P 'jw1kD^3Af>3[\d{,Rn„$PrA!ME3+.޺>+&7:PY9_M S߾Dﷲ 6M^ _5֎6u=#+'@4IB|8nR+s՗NpU 1|>o+dy )wZ;cW6 t8dѢ `k,&O~8 >5ؙd㤐Q5R@ r;kxhҍWGcmH iYށ`Sx=!"&#ft ܱ*B? ^l9;S"SDXlb᠂2\2z؁AT!# @/rpH6f{h}*ڂ$6CS,/v>Mqe%q]ڂb2-U5(}S5շaå\6ڰ${v1;3N24g#pb~Z_ECM%Q>c ^ۇm7&#^u?F,͙>]X. ~yY c1Ov뤳 [Jm!-ޝO:`bldi[5@^=FmK~8)i/.F"T[a=c&~ɍУ77&(m>OH!R/<2u8lSl߻"  0X-1kcKo݆*7T7RsfT O1_&J$}ʮf.օeho`&p7T;<>pbEw%-ehɠ uOX!kI%V@xԿ:fĥA]5K߸qIvs>V.3vՌ&}1VԂ);8'bR-43`q"v/2@ . GG' R!2 N2Ss_ڿE/t{珓ׅ&mV;F7N%^I vo =J$jY nSh'*"[e*?ˤZ@DKA>yNTNk-Ai(iɱTy|Jn}/MbB1%@1Uo2\n7ߘn, UeOO_H=aZG( ?' G]Mu>Q}]x"ՠS82>q9P \{6fQ+>BA(̡^ZܤP}j:Sn⹞r'P3>ʟ&s\ͧ#_uGN+xL(;OX Kuk[gwOQ} e#}v6u8 ѶDc9Ez 20GVZV3t~Y>B ;_~W6Lg`=qg;Uf*MM[$ $$nS+5ߪcm4xB(TBZvKq.skoͨT %˪SV +43+lzS`(/3< j`g#}NsUiD|' A6]4瑤aRA-$Xz}vt}Z|7"LdjD@A[>Z q*]zAz"\ 75k'eNJ0Is c?WSyu%Ǽ_*]ҟt[((>oI6ϯlKSbW;GיP, nmQvzj~~G8zatdb7%\7J!hc6Y4q<05_5[qD' DN4r=VY5hjAӴTyyz~ " T29>#GeEEf˘`Պd iF0󘮠h/4/ N :?t4@v$(-׽߼/`vss ZjNIZ]Mo3$m۽SU*=6ri^R1qUĨS{f:&ϕ&|KbeR׮ϒ\ԴqF<EuwvVJd$?3A8+!`TRJťU8lҶ3ea7 PX$n8X_sڷҜ:gA]Jǫ_Ǧ<ƺ'^[N=Ba\D$PlU,"l&rN}'13aEy uw@sbV*eXR3vQ3mԝ7Dz[%髃Ŕ DZMЋ|+҉vEDD~8%CҸhAe+'%;(͇F~dj{>4em`ѭm&L8{%akk;j&{\"Rx,Lue4UӮJHaŏo|z/@.ЊvWb$|-QudUHP/];8 YNN<ms\xnj83՜ ?<4h$x,ofjM"YTB+lM]FOضL9\LT0Fr7E)*li]J kIGϼVrDģ79C$ë7Pu+S#@ֳ)}o<+ a{*ueιNJ8nX4AkZ+RL8N}O8foَVFvtG\*"RN0F{>&infd\i'P`8e?hi TiR9F(_w,7?4b# ˢ4,U&<`6L5#Xn{J+>@Ǘ z54/YCo7q85ܰ8h1m6/C6{f6V=O$V!Buq ׶P z!R$l*D6'l`6rUgl0AT6Ҫ$~S)G<XYF,\x=Sl./m׾OetDtw+^7$)=)hAVvPtHj/9)q/DE|Abrx/lMWz$GS15ь4FP#ZW8R_+Y学2.q)6A̪Oԛ=? a؎ş ﵘ, [sU ܂WIGXVՐ/ٟn~ L;_JY(joG? V:Ja܀`MpB <L~'Pyd>Hpl{e+!ӌ# +`U Xw,"IgM/=4o,uJգ;;$p#`€Xϕ +^ *fAT%gv AsdJ#jH.ܗ!ْ֦^s!eɞ\n@TƇ%ܣ%Ǯ˪[iZLJ K:h%Du٥t9O=&Y&i~OhPR2<})- .j_Z++V ۴ NmV=^5{6Z:e$[aGl=]inS >0 gIW+ϭ%A@s/fN-zfxz1$¥.6J5D1ZvGC&)?TrY^腤OQT (\f[Ȋ{S׮d}@okS%mFάg\GdYEەգK !AV=8ࡃ);mj zmX>,:*|^˶/]I E_aW .s F( zr)e]A"/}/ cF}Z}X\^('oO'x(p&VOw*Z>؈I*M篑ґ\y58 Z- ۦYy;ۦ|׹sN; 8~R9^H'L* A >"vH "Ϭ Z1Y)ӧ:'$+g V(|k0 7C؛Je9D+oXj"t`Ap~m_GUJ&T,J{2FeEjnP=5 - VʤPN*#LmN>u?qEZheؓ3]OI5 TZ7ϧJN\f=Wm%䄛G7+͡<0+3jIxK{?fݘϳ"Uq* l1V!ŸW4ρ6lb"-'lLV뙎p58}bV-~n`@N>[?y,">6H C>毋2ؤ0+g⍤}Xs/sLnbQWd |nopւM*?#`jc_=~ttA]_ThotĦvtQvѫx}HďYREPpTZwf[rEFXX 3́OSHL{j>N|uc6}C-ޅL.MSQ&J) jH8y UWmT!wVQ0xY>uDɺjL4n$ϣ;WA"-EQ,4IعMq;B~^cPkNFnna\mZ*CLSE$EvW$rSFNTU`=jcݬX_ ]ojlnSޜؙc I}$}zӸ +HQ4G_Gµt=nZ) (uu4e˛̯UËޏ,?{ ^|$]9S-+n* 4?lq?뮴sUMр{Gڕ;&K^n%Cn@Xpjl1A#m7+h_7維XS2m$E-JFg:a\-b%T;"׺WIkG-Aht!)G]8`[E-kR~ghڻ|1'21Ē豁$lr= r௶S)~L7 +ȄAԯSWC/JKٰT@ D}УOpOi&]uŪT~0a+'|"?8|1N)3hOi`8k`Fmfc?)=@%?<# r6+IV3>^iۺKq<.`,\+o꼇))e DMf)$J?)޽,ueuFE.IpO昰2~(0a (\pęǒ\a{k}$d. |([4Ts߭&{A5%PL\@]2Dh#&'Yt@HMi[F^FN:Á%עܙYxhaZLutB#[T #`jb)G8HܸOs;=JY{x Nֹu5g"Tn}P&xrY->3}&G!q#t),AԯpEPUБnL \NYůnSl~txls q3D3"!n ßBf_ %:D;!XȽ HDwOVvo1 ,L1WTW 6绬N9w\{K 'g mqK6mh%&Tf7>?洣KͿr⨅u/'wN'ikQon92hukS-m4fRJ/'4kPk7=5_@BfB`vSػ{gJ%knV荏gu|pJT)3-ui0RmZ5KE_g a(( /.չʆE[ZEZ~J+Syސ!s c,@-"e16~F( iDKG[pv %F]`JZ}m!uY[0"O?v޺-B {(?ϧ8:nmcQ nޯ#Aʔ+0:m0G5aC<@$o`Q}vRoA_dl~srLsB[oL$?u>-lүŸvE ~ш[p⸆3P_;P*Wk8^&D ykt` pA$ںr 9SPzld+fհ},۳r{@Ok] 73c#cT!yJP4}r/2ӤpA,LJQa`IxH% OLYe0 $pOV+)$|.[-7H} :Ca O5 JeJxy0D,l2Q{~!zǜ 3P'ϕ X<yUߒ 5.4} :8=q3[{zv^(G.er ?iхHfbBdU&Xe {)VV$oA b7\6ǥ;Y£ȟUQ/Ixv?6GI9Xd`:4o1@<O;}^]Jk~CƁ¸\~\e옾Y# oث}BOO!o1CڶOLv׈{zLj5M6֓_ht P,RJm.H](BkxzH'l$kN3v>eb5Э ť.|N~:OBZ^de?ڨDeA2&E9O9Q3.%gޝ,k_/Rx&>2?P'oK6!uIwا.Kpya6=kA(|U]<͢8d'{Ho5-ŏk>NtW@cv6KebQ|^{d T}c kVB*/ȣr^"xCX%`I4C%ݖ)SzAr:I`Ė #e6S -gP "rU,DǙjn >[א 1],=]8?'j=zyg3i!=2Qq+;{8!O;7nv *U$gwg76Dr~p45V rK1SbC[͞\֯nq`S䔲 S0C\L|̫Wkb]K98 Ou *i>fe~ g{n{6AN"`'Udc̈́gف@6ZPO#;O8G+q?*VbdNlӆe'i1~SǸ]O9BnPϭpXfv^?j:6'm]c&@_%^ZOOu%(zRq$dUtA&!75h)~QCtY4G/Kb:x评x_`]aՕGaY0ծRiUsnNrGqg.}_w+i &( jJb`mRˣ;=pn"n4qP((=.d輄(hٻ_e^RǚZWme7wZߌ2Fyv9wi6[ƾlnz5ljĄ F sW?/S(vsIҫ|\.(Ys|Ͷ1(XӔ jw߭/AM8}i${ 2@`(bF/<8*QfO{Cpt˰o4x .1Q A~?7K}8(A-ocH#?2ߊqRdM#‘+) աHw|4ETCW͋$:fy!Y#ps{! iH^$ ְu W7T UnT+ cb@ C3̆:ZVSaο%^:qr4}FxýfO5-bWǒ3Cwc{s94r*ӽ&Jʨ/`^c iS\ *3[*fP|0Xxmϕ'ݦ@LmX މ@ LSϤ^P1gӔ^sL,Pi2a[rBnď7!e;EClIL5~ kIPjS GXpQ 2UQ\dgCYPoIk>39'`RʇHU|fEx!cK;26[(3]ݡ<6\qD4mr1pڶc~P;E?YLV̸M"Eh; s7kM1-4.'خފaa_幫ybE]y3Kn`Yh/Dxߢ/LoR5l[-Y] >q<\lvgw,+Clf bhزy Og}O Q ~$bܐmw|OV[|ɝ#@ ZHE> G?ºyfL/ b7ƭe.f dn/Hm+̐0XvJN\P $hrFw\79+ic,[1Tx,t\FBW  6{h=^]ZGVH_:( k:P6q"^?Șg sUe, <ӊ|ߠmCN.uћ(KawǹG.=MlDsI"HUB,>X7*{yJ N NUgD~b:;z`ʑ0, XŠ䏜GOkǦC74P`ϔ3{]HzH(?⊱L>\ܵc' }=AiuAVk^9UΠvϱ@5w R'Q;z/g6Uf -0-Erg̕԰f@`QzI$l5g51f+,Ef{\}UAifll av-)Z{RB<*?paG%h35ax}QxUxj;R'+U}EIA}@r(DvK, I+M  Ldh#aA3PLY-hEh97,dDgs(My@.[+e|qQGx$Uw'2A%)Q8]m?˨+ 3Kfi&ӂEۇAjMv=>B9|w4l1ixr7yW./NGF#ncn?rOcGus_M]_11Q6lksƧl~Kժ}+NԖ,(ZKsiɨeS ].Gf"btʳJΥ{t[|RWuDvy4Y~004nh: L};m6teIXfx Ofک+)@-c'>TWTj4c>nj0 Es U>dK8Ewe{iBTdQQ_3 .s}ūὰt\Ƣ0Sݜthtu ZnA?n9Y}!~ϥv~Btv.礖n$`@1k2T@J` %5EYicq!R?Έϫ[ԗ+>y;9bG#`9q4YCxJ`ۭJRJB(\⣛BCG]d|ݐZJf k' ^ T j" eDJ,ϊ=rB0xOcxwZCrp S6)TH<}?Rl{'&kP4  鲽TB͆[8`,v%n xG?'m#k j nDި{_ 8ӨeU&FH+E_C[t!Ey<DK4 000 .WufXW@4?!NRgKzRhzD:6c7ACPmRw6v3s:f: k,agN,wݲ6~E/2f,{%{$m0#GcbW,4=)2)[ã wځ3[ '^81 9 r1)KD5fCk-<'iGlۈ} ߉ M+#Noe[u !>M `*TE%+ 4Y^0vك}"o+uPV,~mjǧ[B|CR G0cj 먌2(6*?2YsiƳE*(`/S*6ۘTihxOut? PX'!2,լ<~U A^4mڹ.%k3c*pv HC8!yU2ZAeYHh`φ<zj +W&a"fFIhFw^`y7{k4yCzFfd '2 oС d*=FEܶ3{<;y,xySF]|5-7(sNN-fh:spqS};7Ԁډ"}Ww(-ul1PϷ<3Y%O1 eB}*ZZ~{j/SD#e_ #Vkx.ӫeGj@M HsU/"'AEuu]FA_%X>4N3e<GkҿR th,xO4j_>! {4 /li10\9Ǩ€tF,6ŲPvW\U(޻>_뙞pCS$yWv'ס}k270=gYz2$Ii] tD]:hPm݇zr$Ou*kV"Y7SEtɾ]}+:=4IZ˺c4\o!C9j2gjC Pc 7?qH'@1 qzF<&c7OvƣMpw;`1t3ΪSlsN1Ωy@LOŪ+D 7&&%v5=qkQ h\fRKk.q TcwKͶY|c;Ľ$()9oJoہ_}tH2A\KQ(3,ƾ9u#NHUk F)tVr(, ܬxaN$aM ˸ZYz!)-.> 0$:WV}Bg,cãgbQ;o>>dFk,Z=̃t:˂h99:xkkW֢>ISrCSƓҨ4ϸZU~) "p\yLVKzq0~Pɪ\LShp,Äe,6DŽF=ݲ2'Ԃ\0X"s~K 8A^{R=)PNӟSXvW@.Rp`C¬r{ukċs&[m =jdcV|zDvAN`[Kͱ?j}ݹ?o_5~t<=Ww-J-7[Hˆ,O7_?>0w.r&Xc^:䯮n 180SLk@Nc+15dFAf+9x' rt Md vccZ. 5ԪS,}%I]$a·&mZ1l,0=Ҫ8z-9P ~p.%u{Qޟ{|b3pRr hCk꣚oG.'B_oUC8_Lףrejò@Zt\wdf)Ge^#6Ӹ k,ٻc ۬֙bw+GXRvl2Tk֤wx2]Tkq{J 4bpZW+Ǖ@6,qd=T*l`f4պJ~s,`^~KzɊ*>.ҖbGv:$`Vhh XEnd*/!&f890`QYn]]_/W[Qŝ ee}l#ZGgʣ2-ݯmɿ jΤY+qcqT GQ|8q(%}rpEm294`HtMD|GB7usjRȋ;cC/98QbU<V6WwϿ7SR%TƿLA)x sϬ󱈟Mv}Cn0x Q)3b)B8N,n_Ri;,|=Ϡ1Io򈅀S2Gs#=<4_ʆDFXDB9zUnJߕh<߅mCs7 &1DB)^جk^)ΚvM t^3ҁ0<`|E_FɰG!yqtȧp,u;6*3)]CNKU;߯$fU=]}q D@Jp !̙aG-*a2sX& TuVXJ6V܍Ո~@O~Q_`͜yKg[T~dF83;RqEe1(';_!W#r\xsv|*b8poRHELzrxM+ڗ1<@=U8SN^GEt!ep !G7&A2.¿ZED3,/^y`wX"}bK_YÌABZJ~5FlA.BjU! mB Td[YCU4[(=4H-cjm(3R&EO%{&Qa[Q/hkjϞ\zd).2 崓{.qF8M(iǽc_[nKS ~aAH̱ؼ(DR]-#0<ΗH;y>m9erL a-mH܊ً+a(>ZJ[3f(C+v^Mj~aIⴺ DwgRIj0u`GC =QgMbLcѶ:Y_W@lQ_(⿹J `s ,vFE:0i"2o ]̸ paR}"ib^D렇M,Hץ:kx F3-@.X %5˙5~!L7̳RK,|PF*bjU2tjsg}2Ʉc"Cx{F=ix_."~g+ : v#MoΆ\2Yr!k9̖TkOlYj'ڌ L]ī4)3\Z}iqA؃qTSu k`5?h!?1Ҧ5ēmۙ8۶Ll۶m۶m}ˑ}Lwתkc $VҾ=HN;bg>\`sgzp&6&o5=g:Zό`u1zeb{ra¹įdl([M)fzEuP*Oo v$EYNT\$CA|wٍn{ɋ̷!'! *Q0~UΈ)GajW:}rBO7ԍ0M)h h7&//fQ6lh/8z?k{B^g!EﱧH+Acͤ/(RM/a'@Ⱦa;ެdx+rs2ִ||ĩM~:`-Ceϲ&i'8m0Q\QT&`F:S0+UaZ0Tجp#:$ mKHf8)c/pНg-etsy{ͳ;ʚLw} [;[oS\")i<?,`=AC~G{'<KvK<ߘMbճzys}g=qŏs? Ԃrժequ,mܿKVAͫ([6 I&Plslǣ- tWZP Zc @hzOY ~ƈ/@$X!ҁ)-kfS\/"IG=_ř s5a;/tWʤĥqy{Fkle.G||j5ٖ"v  D:߂R^AJgƬFYcf*,^DDy?v54+I4*x~c}!E8Y|+6q"VC9y2t@&ACiCEi)LR5'2+3@Ï]COB2Y*ĿFgCtFMtɾfV<9AC~%$⏊oBLm^$ͧ.p(_f mbQ5"K^o% 1|d_ߝI=ĝ=$ ,p[͕ⶏG3?4.cW+khq=܊;*-+bMKe[g!EXp~$* >ΗUxQ5X8jύ f*d]Vg/3O3Gi;,=m /A]'jYӾ\-Zj~j96cź-KQ]2?&$ b9H/0tc>~r}[DgR{&Pv~lNn2O[m6,4@>+!,|<|:ם(3Yd8.ϙor֧}-i؃kW$x OG;0=;'C|Rg./NO϶[I}LCe٠:Mc)-fhZ`սgdmhogFY_s߯餌MM Y9S5t4's46214׺fTt&i.~INe~OC7 ɾ%F5hO1{vCY?lwwou6+=tOoo|,nW{qzzz\o%?sxldw/LJ'8Cd@qKm?59^lڶ޼N޻?v uy5|4'kL__NY/u~oK7k _Bv6rr3Av*u1YwySCyۦtfW1zec͋߃?N}2Zg7|p[ X? XbdfϜt?zDnV}>91l,VuUZN%^mٟz̙S۬%i*άk뎻X,eY5u%WXYk9~wQ!}06غ\Ϊɩ˩}puuI֞%QmOGD-"su`mJ 8FʋEh6 {uVMt4GΣڕ9M"vvJN^iox#0%Kh&Cʦ*}n{C*Ue\$lmJ~ i*ENc=fYΧ굒{Uڤudvrne?}*Fw5I=|"6y/J%φ0XXՒaGʊZ'FԓnY8 ey82/m*B?yNXZK,ΕveǙ}"I<2ɒ L'΂MWxD|'~˧%Z0AƟ%RۗiyNYAz(Նv+#8lqj=EUHUŝ:?;\ڟV̬RE_3Rjl)=𩵵̹ `,e*><~rWF23~læExbrc[BeW5}lDҢ^:!_dէBba)Wf$9YH߭%ן(Ijc&+n4bAL^kɟ9,-,jvp2QP$^LI$:׫yT^V&I>K}1TKivGcfxMc;S䖐+XО<O'?nG+LK^2O9%NxL4cEI`wwę/$v$ ɶ"-9Ԑ4jBm&FL'SQ!QTVwӓ[\u֔k\ iWriNYB4NGqֶ{B6Hk,rH vmHQnJCuG5dڎJr }pg)!W-CuGaYwWY8Q$ðlᛗU8VYa˶x˘3 :" : sCO5Tu!~}@y?°V{mB#1)`Tn)Zjێ4xu!_qsgO#U0Ur[M9recxJ&4-lxm nøT2 ;xy"Pc616ֶx٭f=(D)N}vA ۟ȣ; +"۶^geܕ ǬW5 θZ2f^eݵW~ݸ4}>z6ÓGa٬u{\=O2m=)>9kl V~e3BʄMEO!)݀!&88;j!A'ܷ`pE͈AS,5ב1!3iaxD p#U3mP4?f]М72U.$-0$0 ӨSE@bNFi YHڹNw{C/bP6??$/J`^lLN>4,Q&gM%= kes=?4yRxf ߕtN%sfֿ/^R,PFB\խl6\|N^ wM[yZ'w5 ;FD+CH8.b7 6kyYFոI) Hnn ^ٗ,w`G;Я4($y3N{3(|&JrF"R?՟oOLc{ro?6i鮶K\ə5<}޷w<f5ھ9d(&9CQ WFARZZ͕Tl-XEaVDV O?đJ="*|g]&;9g~k*Cxre}He(*L@r% շ:bDWB+[TMkO'``ڧ+4 Ɽ ٵ>UݟrNT1:Si[F>,)ho\I@Cb@Jo M}1zsKA"hx  _"麄t-VPT#<,6`D؈A2-MRu:5r%6."uo[R8uaXr't*{#$S$5ttyZHHhfj]>t6ԬR~vPXj4OЋaIp '\v\+AQXYS+tj 59G[ͯ3DN6} 6NJڇ:z~OF] ]k4_K7?]Χ%T!'>j D֗&vqql6XaP;5z*ؿ2oDg ^!b;ssPRabyj8xA1(s IhߋOY_k08 t$DauE#軳xL웕.d%z&xNPI?2iU +Oˌ5Zak،/'oɵW0f|>ӱp9, 8Q$h.߃fpx 1>A @p{:;}{yYh<Ȏ[ˠ5.Kv)%P~:Q}2hS**qC,kl9,u=uV)U0dC%Mt4LWg"C l Yyz.hp =$EjBpSp[wz>{?uD>VqQu b)rq^{URwp|g0ȗX.kRӅHCZo$n[J∤3aU;p䧻A6x]sLAɜJ+hbft:ev%ЮmlUjhkG.dKd08 lxy2\ m$U^4س&`;zGԸrv;p8ʃGI^~di,┩ P t2_kFok.jk=K#;( !\Ys6얨'kO],TD< zW4xQRDN]/xbGfJHz Lc^lʽZ\t_ȽPRBc1NȿPbf7*&Tq=Ss]L 8} fn[y4* tjiZboJ7?2rtR3iA5dx/Ţmq+8p3MEq(1tz9X+9D76*V%Bfxs&gԟLzK;4Gwa j})eRK1AZKn8Hߔͣ^O\x``JdZ;0 % Π-CÙEWghXy\aK6+ͭwH4ҞϮ1i?^L4fo𙟨T(IS{i_EMѼT7)8MO㭕l6=n/H]Dmx's.-{gOĨ+,ℕ;<&4~g$b!TAUV,4);' ڏZ–(R;:Q@+“ <9W>9i&f5hCވfen<_?7JC!Ǐ`:2~f;#'6k!b|vIn|$IUrs8z'kќLR?jS1}#3VOa;rY~qJ*r[sT |Ԡ <<4E7#K#5 %M)!wJom'ٙU*Zb[$ާ r%/A|mRLp\$n^ 0MZGOBlRznmGXw%ԓi [C$51B6nA.4So|u)U)1=RSM9Z s:3wz 7wN]yZL'(Wc˰Mʌ= f..WPpcŎ ' OTQxbJzvgpm\cQПE*|R:?BC%$HC[M>=W+,gӟa|_oMHf$IzvlzsP;85D c]·Rx.ʑSJQg~K8uXuC_H\ OA@I:X0fqXFmm=<#W m^tΛumQe0I"62CHLJQF׈H=73U^֍&Z$2WDy:L{a9) : O>2  k |3< g Vk9˜\d#ںtdA6yMqLgQWB5(P~jB6-(L%^D#CQe_Ux FqۿNX,~)AP2~oeOwBK*jo_>I̛Lwso& >y?WĹ|d;+NR* [Wk˗U/L*pؙޫgTb^ߎk)a0*b^f+̼KhtѭFRӴu-\Dž$EE}_TD5~b0!RKKn(+l ԈyK^RͅƧΈՆ+F-;p>tFQ7ڃ \lEK"aƬl{(ҞFғ [:,/ $L8H tS R[Ы Nry>.l>9 FEZSB.e~3G,\m,qd;wҢR^+w͊`lG¯AƽOqo/Vɓ`eXY bARt%/CM5?W#`0A0/"bs0OvooJ:r- J]Mq'k4|^TtXj}g}]'סq m/O}TN&wэNb?u{~ަ*#r>Ƨ>^EYs4PV?zUZ?9"()Ȃ[eM+s)Kaa}MNCdEFSa :n, n%S3wd+?#-bATMr >/,%FZ0׫Yg[7RKOTp4h_^5,%eӶnx&Py8Pa:EWx\4ϊmJ@ !\e/)vϓiV$t*UZ*2$Pj߷5^(sg^3."L C1#OM8Zdړ⩎<\<] c W.~RryTEc8p8,e\##a='5@ܐcNjy}/i 7""i>9ԼƗ'`*}p<݆2q/އȷ~Sx4x;lC%Ge՚DߜEFkxb7IJ×9k( $,8OIxR'iC]Xb# psаg *82pX3ͼH&= Z3oQ[;/K n~)vC3={Wt2j2FiUZg9@XsH"77l0<YuR A2c6{4;՛&!?$~^4~?jsnypl >4JѰTlGp͂5?!MM=Ut^ )VQ dU!eRʎcWȹ>4. nĞ Q M !: eO?flxߍao?6H ܨ¨- 4g=u %ک7pp"8Q}Y-:+"?PcGfThV+j5R)+٥7W&x𘤒xᳪ?)VzFҊˣ Bs[EA&:;8f"nD(,p7SGU @$;M8fX" bRȇ߈6.1x>mj!DʞPK@TScڪ "9K"'F-s2bU  Bh yٶ "S55)o= *Ydˈ{Boh%Lj֩q2;PAMYϩV;w(dzYԩOӃӦ< fP_j\\ߞP=Z95m,)m'٠ x|JU.sXfL[V:_M^WAy%O*)2@~NoQ~0\s}tMų"~]e}w"7̅56v;$) . nN{:(TGMY3GmeR }/8YpҠ-z\ ga}՛=5#y ãvƞq$)nQGxс@{ѕz;y#d/@(,:Ӳ-%>wlV^Jw|v 5 :kʒ+Umgj}04O NBI (2*n5 g$F}Z]N4<'PWrkte&!OO*௺zN+r>60k!ʴH(J5chTˣ^Jn \h)$I~mX`|}L'r";abǓժD>4oFyXz ,{og .ށnB2Z1VYh#}!NcfKض<4NOGqҸ7(3ic&Y |Vb!@1+7!Lumm%I~z+Č˫? MLc]֕,yH){}m9VScګX  jOe F#.I0IDt\N7vpĚ&5}c4z~$#4f ?rS|tP8G iT,';>䮪bX #:p_:nl:Yn;Sj]Z FUIeNr*ux\Z7ouiJް'Cxd>r,gnAӅd]YkGT:7L祉ˏJ]FosbƂt<8 x+TLyVH4{eiiډ1TysըV ,iL;oM/W H,[F1 ,YѪ1{T"Rm1)/ sW=םy[së]r .Mw[ ?0}⧠ PSЁa'v guȼЛA\0l9y})JFzq F(ܶ{&Rj,&Ma +A~BI϶)3;$(pݑOX'=?Ctޑ0e  7b)KE\@Ymp ':6\&+:s=W@媩]`d;s\dat{RGre27"BL졒e;K v30Gd5 X xzHF$[U,!< yo$.|1Y@w"G/\yf,T;\poBEh 2hZ#1w!^qfdf~*6Z-k! ;ÅƐw̧D$=68?/ںĎwjO/[G YvtdZܡKt(}[k};MiDA$] ՙl p$OuE!4|B"pC Om蔸jPL{cuVM;<*6贞:gfx0 7_'~"訣8H$@|ř8~ z~b[$jc+j(\VKRAXk=.8;? x8p\ NTv.Lnevf9{:^= ?IP [c1#seXH٦aq4G|}x" ĿFެҗ23Yyd{sJh':|Z)'yד UMTnnoO` bπRaPp}LgH*kSNyk*l*ͷf2Z z 171Nރ)91::.F~,nVc/$\5Y,z:a`TZP{: '_kYkW c䵛6ҸL Yb.n/V,m@NY6Vq-K|nw:@ sR94tL~\6&r>I;R2us|- مPykl/OLkEĢݳ,IZ@ A\.B 3I); w!.lr;#i <:ϤVޚΩCGnw {o2mz=8!Q3{뢬Ҫáb":wA %?/Z91Aw`Q&\0 ) ¿~&Nu `dSHt<1%|yɽö}3HBP{2޵?a|Ml=v/?=p?ص7|c=sFtVSm@Ed}TlFCe. XgRwVmJqm4I Ȯ k'm d^\jȺr {ZM%TExZxKIpF7a=ήN6R|~˖s#Cg(liP:nL;7)%mI-ìaRk1B@K$ 荝9ɒjN{1#$QŇ{+rk8ma!E2ʩ^ŕ]IUyφMbc={7lv%{ᚼp/`~'Bo)my7P3ϧ9.fxeI%\Ja`zGskv{d?1Tu ro782JakNt.gTش-ߕ$C* Z @6DՋ]3b AagOd.\Xռ,!بXE)wZaތM-ӱQ m@nKGؗ|,>G>g^:~@DGZ/7_tY$Y;AOuuCp>PT'PWue`PfZ/9[N xR(ޘss_-/Y;\5Asr^Z(D *O }@˦"}J7)sl9w ٞu`OeB$C&F9%Up>);iUdzuUBiH!k>֮otV=\o)3D̻%@wPRD~,յxk(5,xɟ L`W|CtWа*,ћ] #t y LQ"('beXa"H]73C`b Pq:=OؔgTVK _L:ž}hG!cp)18zӭ?F:٤0%KFǽOp}fJ馴;ꜼBЙmgPMqC!^T )+\{NY+\EjrtRnRpJ7! O@ 4<~+qcȹC"Sg "aSr$2Ϝ}QϖT"C>9mqZʆa}&3, ._ɢy>N,U2W>cv?[v+ mVTW$-ki}2~s pޚ]؞6Eԕ$"t\NsVgJZGv̝c5ι쏪fwh@ ~sXK^(bG_XϏ&R<>XҎNX׹D .gH~dTW9ٞ\G;KU2" KO=(1}nU6 hP( d2d$# aCEF Rǿ![A { UvwUWG'Kb5.KB_rHjxſ31qN7 "71JDibc4J6([@թS>2nJg7Ԕ+lS!;|IcRCלqICG@fWtρx&F닔gTf?xa_9tcZ3YӞx<+m,3>DKLU)wS$TKD=`E<ʶ9ɱUu yl`'H2lrjju(#ot{¸?F)K}O;t{8}5]Mg34Ծx >pjP=If$EYJ,8M4v{ީg7'D Рg nE㲽xw - 3Aԓ?Pby4 FD\Tr|d*qb oO@-h$XFy9(l\tA'( z7u3sTf J|OXêہe{BTe6?vw,|sv9հѕͦ)JCyKk<8QwV:Г bgccaxH6E2&_E\Gt'jV"|wRvNce@&[پu L1֓z5~/ ?Q2&wR܊܈W2 ?&yX:=Փ\ s9|}uOuO>þwݳoGf`,F[R<0[tƩkm/G@aNOMH·ꥆѽN)X&QqWr Qð#}X)ȖȊQJU+Էo`5GvoG$co FwKu@`'g(Eϑ౜S,eR1⁷ŷ\]J̷( ?]^C? X9Qs k\[;$ CC]Y;;8CdP8Įv^0}rJ;|c uNW",_,ls˝"4{auGjuz>T 1US7ڲl5> ͐`5Kgƶ^nkq蜘vᗁ 9Gc?ҝ[+?7[Prbe1z /tD\Vf&z}eUÊA*kl1ÓiRul;>rk8 L'!)nݎRS]w~N !(TٵR ykD$+ -YaC H&v YjLþt Joyڸx,mnXO"6v G28ڝ1#X1&lP6Fl|u!cgcl2e&E($ITÃ@]!9$܇+tO{^ؚ imuΪL GU:Zfxį*B ou5T''r52PHG2o^fM6)&n-?)T0\vSj+| b/޸à4y w>7IGZ.^VㆱW`Π8P'f ؑy")|nszk~@jHVBp=3M'5V)j\)bKI -02`%y0;fw7ӀEh|͏F!Zژ%0_?F#AsmֆKxvׄ ˰w}P5^!蝈6}=gr#_{ݳ ?D>ňRD4Tq!q+^Z!u ģz:K -wF?r{ƏrR~!:UGMB!}V5ny>эq}_Q D/3IYtTf-|?D"E"*%A'8d迴UTu4}8v _^8{'ArA6v==5J2 Qla7Yɧ+%Rqa&q[ObȬ˸G-1<ʛ3%yl?s*UbQN@Wi|K5j ҝxu]gцa:~=2`Aȁ|& 7q]xM{Y JL%wVUwfK ,[~3i9!cP#iZS5;|l_E#&$ҝQӕgH]: .T&zQaЯ}-2 `ttVJR!qUC~Xiqg4F v GED|%a)~HJo)u(Ic89[{HemPu\v+D P<OvuJ<1ۦԜ,SNBUo[I|ߗ) Jp{~!xCto0P?ù+ XGYa!&_p.iK}cs@H.FѵAʹ(?qf`hwAJ̥VƬwӘ*hKewfU8tޞFgḞ ߡYjfG(>$#rǨa}6kcdpmVp8|.bEU"PVBC>t:''?W9R*O7Jʵ2ƃON5>l>^rH4U#85aQ;yHF4j{H߫h}B ~6[pwHtX7(CƎ!i*A3|~ bf?K?&"Wp"i%nHѽ $(-[MZo;^Sqa׃Pu#15U,O/G_ƃQsl z̆OodVm|fjBRO=R=Yɕ,x49#yz=-QaizN[NMR=|Xi$Ր1MQ,~m밉xZ(uW3'( "+|5{L5AJTܟh\F}yqv]yёF.bR1d+*@dEJpΝr9JJ.-KC_=ݑ5tu>b2сZQGcr1}9CòȐX⊔4*&5"Paw Ĝ7pwi2TIW{XKh\=>I_OG)JG WK,Ș Il}6Y[^\Dc"9(F xYS ]$ف?yw@2:!eS'{NГcٶQVPBV_ԘQ EŐCgV0h!l{lδ2)K$;s.TMDd1+Y1|Ec: m+phP'3J{OjR3oYOC[1"ee{Q* QM0Ь 5Ԥv+c$JMF|Ĕ6gknGݐc 虋YՄ}2dBN>x}KaQF fzq3x7̂~?Pt.Z+t [&$t%Fw5'W'q1>2tmJծ'-a`8p̮ c:dcI5p9Ax:_Dc-"a-ttӃú;ˉX²v/9ͫ-1m}Ԕ̵x4LvW Sqyn̖ÎG#.fSX.S7n8`Lx,,쳼Y&=??f먓 )S e>ǻߎ\~a1LDU\T ;wnLׂn TIwCDvzMOOa zYPz"%~eYwTn>`{'4ꜾnMۅ{0H#^&+?_Zd&-1u4 j5H4ncrT[&E#0~6]{./ + QXuuwTDv ~#! 79Gⱌ_Dz"jsB[8|Z`u!|D]'kS>~ r$.w WEE>>SBz|PW7$Cw#j9Ȧ'fX_Q]4s 3!s>Ԇo5&8035l S%@Bt'2Oc0W !؜97p_|^s횈W;ǣTas'w,XYr^T{ʮ( gN) WX)=GOX1E. WK W66%Oi`5PhU*зk~dԞP1:"UدFs:MͶ݀tu0Jwf&e7QR:NZQaٖP ."f~E[HBK埈>NҰ?;RȬKFmH"n Zh.KsNS}QcljJ|n1#?A BM|[jC XyF޹V5Ҿ\gz(VZ1~Sz{D9#CY^u}p Z v7_GaQ#39* ejT+}ط4J鄾6.dhyޗ mʰo牗Gj%?Ml8 t?8Ҳ&L]h+tPb` qR3=3 /{|YV DNLLܳC5KjAp&`$ckNƶU *DPݐXOψ-RalqPؼwg.i<h)ev*23yTC-yVxY+6tĈc5k?yzRU'o\*Օ( w$ 4%xgCw}z =sWOmMtT}ʳeK`)k"]O 'ݏ{\ȌȿSe!vR#Jxa@̱/ZEM"ۛטhN?>5j0\pzLj1tB*yc@v/K1Zy ⷝ҆aN{j1l5>]J`E<.g[3ׁ8R(b/4} 9L_X*%[|-oϸXlҌ>M$#fꨒltH򨰍?ÄF}w7V/}.24bJbWJ &.|j {gdҺm>-7MʬE9Ǝ ĽߘM$ yC/W^_QaJvzlA|vT sxAFesyrH"%/`&, qhk׆{"o0ȃ)ɧ +%bRy,F#?"H~4 _A`%#<0@mX0QwUeLzm|.:;! ,Q*5"7xvMT0z~՗X2ϵy𭤆qJH3?H>3ASB_k\˘tk\NHmk!ilsC1xt,˜I6E`ibAnɹOm?%]fz؋80 Gp4oȿ{tu^DZ(u̶.xbb{RD*PeznEx)Rf=2=]˝^vC-D9 IWmF90`1g?栍pg [xgko'*ۜ=f˂&(k/Aݶu4¨">@)H E)1ah Ł~ҬQ._1=u?i;:t=#vo|5ĜA0Ӎ@؏y xi~1*a N.xrK{wק_1ݑ /*#쿨Ǒi+fDt}iDX\Ȭ0:ݞ}s%O:mcv ӣ")I:OP]K =@7N8L@NQPx3c3uDլ4"9^:K&ϞW+T.FknJ2 o lDYاTK4Vd{Fp!_#E= 3qa*; }8~mX%Ȝ[SlH/R'ςT*d")ƃCru*_ۊts];b#@>.ѧ gĚ=_Xvc%䈼oib7Flx"]oFpf| Y}D UmdfbiJ_ܒpQ 9@ İRztw|5%tPDYx ", Kٝ%QxN Hl2Q3f?:OȰr"{}w ]T,ie]{~2yŽD0R1L '(fXI8dB>>H9#_+؂n3V,,yT:  ¯έ&Pj? bckJVԕ%rzXG`&"I𩻭787:WWDN~%% c` ZqI|r70`n{5sі?p!?Bt,@ߌm? p–tU ʣgf]~vp6}/PhӖ5Q"+nnfy*A=}HHRȡ-0?UBqJ{bMO%fqbʦhO#d̍ ")rޛ}駋PdxղCϛIc޶R o-~B`">,67sNIjxw8LǂcAYЊ>f ,%P`9&.$ ۬B:{/,tzؚ#iFZػ`n^R^>sdǕ[?J"]Q(pf]6BͰ9-[FMQTJ>Z+!=m0/^TMw&4[r@`Dk, nY S_[o*琔_T\Mu \2f@ d&m)裾MP 䝿?2{HCO" 11W^kk0hYJ[h?feSTz#ՆѰPn 秊ՁIϬ2^mۺ͊@Xk~I)H^rH8 =̅;j,7,+/:f:O${s80$YzԆM1 &:qpV]6XK|%&gJzXCǠn\E0f$>NB@M bt.-QN࣠(bʵj=cOw3I1)vd*JN?$u'1}ߊ`P4B2Y*1g3yS>+.,%<4[TŽY֏&2CF51nK%01pQׁJX,[Ӂ\6-hbR0Z Ҡmfš 4 T˝+̒`Lp4ڣ'̻r/Ի/ A8SѼ}$:~vwV(]9VTVT-<#Ot&ѶTT2c<Ƅ.+E@;xL>O\;`Dgu 7Q6q bר*XtҚW#f{=F>]~٪Ea6NgÏQCҫxadZ}8͇͝%t{5Ǧ8g1SS:)Gn]#qpXpZ_JZ(d:Rd-4: 6rlvšHϮ)˔R M!J;?:m1M[NǞCk3G|(J@6R/,hZeqGi?Q"!N[zpun {QLؐ]ms2.;Ih``t(&slܰ=ܔ7 u<AϯaLʹecC ]7tGF ^u$Eɰ9onɾX|KY*Ƹ*CB눃Iʺa؆A|걜k6o<294!ُٖ #?ߩJo>+Š $ K3ԛhQ53\H;j_u-I{)+rF߰K#,(*!<8-znkJ]KJ l鄻N*P,=B~u'~b/7'eǢ_rbތUS0f?,7jUX'ẻd-Uo?M29p7ufj|"$h QK Æ`'u˯XQ楋fsvw1 Cnu^  ߺ'RSa!OIeNbT>*_!VA"8_2=1nz3k\W{xbUHa%[5Հ"0xP~u2SiQBS+(V-&G;+8OCJ9Eak&,鍩jIǺbt>vWT^:C^5 *+Hj"j .w9WPr =SӝEة*v"2̓%Qr rlJ/ E“Z(ɮXQtp!7 8xKýМ0֨F'cۖnD d3ga״?L4 HZizWຠ .!QJn 2qUjS{hZTD%lB۔Z20wOh:؍8iƶmƶm[m۶{?g=3sܳȤ=W#JH;IF/8-"h"z`!ℾPĀ neٌ񽬣5}H(T!cvc0$䞖A#Q3ƍ 5;索w1X^ 햪ޖ~PΑ8Xh69RN; ] !~N>tVsKj18M]r>wV.MlKjaՅW!^kK KmHX»FMO zl1\i~|߷47 DGQ5= @̨<`}qdTܫ22T5;Y-ͽ]P8~jj~%m~Q cwrmcjNlRBG[r]@4aڄuX+o95A G77+a߾uxLr?|{+zB(ZD<7k.W~Z*e[{њ8TBU.L Q*Ss}}}|[Tz2%CtgafCR n'Uʊ4}[UWN/&}̷tW~\jR}V |m wwڼ]-ذ!8/(5:tujM8ܨvgzq2q֥9iLXmgGo,\f SmcH^ vl Zpl8jܒ O`˘~iI+/$$gn~aE7uizJ ޅ$1׀ߺ-Y,6]ˊ9id`(+lj؞U&m>q#,0Ri)'j9a~((f"[6r"z 7#RT1$$m=9&Wrf^ m鑕6Q~֣#u{_kBbt]E]}nlo"3xA;[P;6 x:L@bceMlu+RTZL!w&-͔f|; wbey{\?VG{ ^{ݠ1xpH )J8ij:xg*U"v1<+0Csḯ:F.<$)emC VjX!N5!FRگ9< bѫ4ɻ|\|OдM3 p4|]}fȋfkSv8Kx3M6 `h1=HPeBc:s$*j+l <[pƿ y]M7&k8`w|pU08{p:/Cb2;ϟҾt$0ayV\t$)B8oеݸ6y*9HO4˄^ew[KoGgoJv;p+31AqI ck9Ԍ9cF "]f|FLh,yƮa~074L.%T-G un[oz n֗%(?l aq`# {" n?/w=-;ӄCWboH'G0T'*]p={h/@l"a&Ԇd`8ӕhk@yIEb˹VtkݴlsE\8f 8#\+a4>fhrȈ`2HkK%jߓkBA W Xr^(g/z5$(^Ds}A; MþA)/芆]8]~ڀ7C_ 8>KNf- zpz<_u&к<>f}&DNos_08|=H^oDbU2jtj^oUfu_lL",͏X[A2ᆩ3ۦfj뀜h[L zfپcni0 ,Cqvw% 2 k90 V&q.5N'5P%CM~"7|3O+{dټcgVLoG3G`-`37 ه?P˶u&>WlO|KFy5LkʎwD0;u3Ǎ,!}c~r(cO6) AF=6Ƣef C AnޤH$8x9xY)Q߅O^Q;}Tw {GnS&w,u].lb~JI.]GXX\mO).&YB[kWfef-pG6#tdguΛSTV/GA]Uo߯ f:hVPu!v(fD742P/W m·-uC;_-w8kԉcIl /`P W<.xe J_5'[E%>vQY9P?V~W7ETkroj9{T.r-_v⻼^hrxY'N$[4b5ehD)'LWtO# m7™6^[0M7Ѳ`~4Hi19:} -ŠAeTژ_?fh)(z5`3,qAH$X_hȌKrryQRwA5 / ?gl7ZbQxMoQ=L%. lCse3l|B1d ܉;|hpS"\mytgs;+p ;As1M]Fg OD<1l|K sڸYX-:fㄽܯx7#Y$X,Tu( k70V "#7Yhgj\ŒmEgLPh@Ď *:Wb^fn B9 Mpq#2=RҽT tOLD`&5a0㝶ùVHhRU+iɩLFZ"`(*x8]5PO~mcڃrGIP5齘'$v[әxaުkjJ)FPLYaJn!?׷'rTă4X Bdٮ/4V.rc {a"~iDH5\5[xcq!-+h 0O$HF-M$Z֠%ǡ}cQA):a ~Mⴰ᛾>^` --i~,%װ)p&:FRs{:wqcA) S/>g Z2چJ`c.ķM(w; ߛN ]b^ll-;b=6bnBN·KjCVgc6+>4"] QhEA^2C¢'1M V^awԞ+H'|nF`P|2Ll>ELTD ʘyu 94(Vk .-}ijOGE1Q݅u^=@5ee?9V5JxVū^׫OՕ[pNqֺq!:8+'DjBS Aυ#q Fʂr:/0aS1$I~=x!PD94P4PFXS Iz\5$2\o~_f aH O:SLpIQ;vm͔?`K\UGr BnS; b% S̒|W9ߓ;xl*L7e$ڇlLဥ̓'KT`5 9NA_V 0e)в H츹x)+Lp_6fQy« B\~ī~Ce=9\sզgl ]B҃ķõ/v2jE8 d?&vi]9g)M?c@2H#lbEliNN[DgpvH8 (oC嗂R]*ҾL@slw:9,I$t`x i C@oݱ'G;Gy bX+A,<-t ĖZh+K6btd%WȸZNswǬۏ+6BJGq8)%ϊ 7UׂjY1ܰR^) ?d~f+2P2MxGʹ{ s$< xB 3YnQ#P~>8/ХBlJB@eGJFVdcP GqDmj1YS5ygeHJ@;E)`O6GIt鮖V Cs2 w5O" ryI)<kz=ux*!XBb#Wo&OTJcj-6Y/he "U/8FI}&?cv̰߮^5guA韌y3i"TrM޽9q?mgA'r"#U36t}MX.擗CВ'%ۮz9iMdaz{1l|eƱgrN\H`^}$XU dή46z%]hFԝf;❦FY4,$TfQC9}BP\V} QbGIju;`S< N\3Ͱ~7EC)bld"؞btWϽ*n i(ï;èw S!m-E" s&*mC1\NE󎕑ۼ`֦l6.c5M`O 91T^ >9vi5{|o SA[&eHZV){qW G8 L3-XɌs+ʕxaݾEŞv\+4V-{׍/!Я ۫`5PDFMgwZnl9oeJ~ͳb'TuBh3[iuחr J>`uD n(,TG)4{'=ׁ%gZALn6u|(R2¨!. 7Ml!6 bp"9}Dw6ۈ'Zl]55nsT'=p yc d˜ YQVc"FW6#M(# 0fגր"茎-u>[k#-2^Kꛪ'z)!+$TZOVЃp3uC]xmXbؠ~COcJҚ32 $Mo%Y"rfKS\t9&QF0iEGz:tO zf=Z/;̚gh|ZM|ߔFY/2(wxu3@T8o4f[E t*Υ/9(U%ʅ*hXmzbVȗyJ-ĥֆDA>D4D׎NEݐ+H.ͼU`!O铌Y`~pqy2!CS2`Np79`~#, ^TR[ѥ.? ]`ϚDo z8zOy)jxma>JSݝNqnd `8CŚ{q*[p2'eELj`BIz=YЍf`al{vm>1u ¹_HmPJ}ή5Vz-k+ίɺ̏2O+tL@ ^*QX~O &nTf;K.עeuZekK42OaMY'BPFVLf2E=V%H0ŗ"t9Odod`;r:m1 /)@jl">A] ~:`}WN'0U?י ң0U_Yq6kxp/bYyUwLʹ$r1 )awwsar8&^CU }^#2t^^]!Ʋr2Ŷph^k7mn c+V^o+Mkn|!}c%wsI+4z'ה-mJ/jy'AXU47xmJ8ؖbjO#Dtg*{x5 ~H.n8&5-IUqۙПK@ԌN[W`?Sj0ٸgXC4pBNf8}Vv2 rd6c{6*{_#wcӁؠ@C;|Mq 9bh &%_?v_ Z ?;/tC]?#H)g%f(C};}y7=IfԬ*mh]k0~g m+2ӌw,I.+oFE(%:1Uwa>6~@.qU@Z $OmڲY &m[. ]ybj>e@HOa–Xm-j}_t0kR`@^1ܾP5bgGIQ6M,49>NpiwuvE!#1okFt?ǽ ;'p]GAb+IAs:6c鸉M׿Q`n;>.ɼ*\ V~SN$O]K{7]H܀oJ ,~xYW{4nu;-gsoTa?"9AY:C]ԢHdk:XAKZ>!HQ\ 2L ۝?% ۯ h'@RXheVtjq kgYLkrl ucg\5:l;3c4/~ _2: b$ 'RM/Y)U_2d"L'.;b} )&MI}[薁$*?B+WyO p U pQJ)ѥWH$jaGY ( HQq`ފog2wHiE]]0!Ӌ'{@Qȥ <}ySF* T9y* xJnxmsJhI͉+0 0DY&tRv!C i]iP7͇zty󇋢őo"TAb%sg ~GxM),K0mǼ UMܩ6ԉ2%?BȘ|jw ~_=A.BЗ}BZ fr؁EW!TCmЄ|8BM)?o妍>[Ģ.hH[@n2Tʉ۔{I%͓u^7Q Tt|Ccy {w]BTpcëc ̼61cP҉hg=˱Fc:iv}q0ȶIc$Yg4 BQLl<1F'VueZ( ZxGgOJ6r>/g4XWtnH.n`+4 0,$TӇu{st@"Un)u!9H@9<$rKBUVkit}5FDI?:Ceu@dww1 ̹ CqPB_D޹'0p`Hv2R7B E<#/ RWod Qxv!V `lF5%QoؙB~ ʏ+U.']UYVTϱ:PZJ,y]6õ@`U~QW%@՞UUzT ﻽$sM+\uqpPxJ:NJpBZ:>PjMy#Ҥa͕%I <[ͼ~m0@zWB*V..sЅ|oޚJZJЁE$Y7m`Q h!6u3@7o|-~tz,WJ.du#:z8bI5^W2\'=r?}R=]8"F"lr/F/_z?eTzS>TǹYs9Mၥ i1͒?m*qx)2şauCV isz>{mД&z>y9zmO:Q鬱5wnQWWTv8=b@\qw5 /N('A>VG# )cxuK !HԮN;`jP꺊d8BqN<RAr%Ds>%N-mԽǢs{#f#'VNsRM:X?n]Bkf~aT&_khQ1p4/@f)^tw <{S!k]1k5r)l%2zfn#Մ3tirXFt“<;\It|vWr?USC!e9$N@Q1bAܭ{D?#]d>^\V$ kfSWISBf!)ǿIsC4L.*FH T2cAY;9w ͩQn +-̼fǥ$Ͱa|A}lCl[df6_۠ʲ&/0gI69&W%Oމ޹PCsٸSYK~)d_kC˳IR2йCYHi| FgUƊb/G ߦI܍YnVZ=$ YJ5X&BƎ_Y< :[+ ^lS86t=|Ԝ8ڜtr&tlLiT?|7ăY6 c?"Q"zV!jj~iȪ LQ Q  k4}ި [/ mvET ) ?oK4k׉3voUF#p!|SJҏY 1m$͈RW$m_#,#xSx/z~8hruA-9*HpKj^;j8&$7F"Raheťi".g P$!F M ng.ae5y*pZ`xDһ!{s4 Jɢ2 IzZz?DzjHYp#R+: ` m+L1H{Ѝb7炧cuPo +&OsVU+?IP5o'+;{*}of0=*`{0$]'ɡ}RhcLz\0ӞYTnl3fyIDݒ}0Ju0SƢL+B ]'&n;ۈB$.VL e!tx=H1/ e-Z/PAzvxڗ콴qRLcjMP~p֚[H"1!&m k7Y}ә<%O:'%TUm1t[b%Yy0R}Oso\$@YE[^xTuN3"l-*g} ?۰ S1V8e *74Q9S{5(Lgn@ }YCTu4MǖR^3Z Îp_=w3v7L޶)͎8'Px7Z{b{ ^69uQ6 &#ֹSVP)2Y WYS 0W_)ShIMdl!#~僠#vRY9k/>)r\>`E;sik, % ^L x\K9oSTv0pb 6G6:sP#_&~48|"BSF)o!79\6QXڒQi{5ҿa~&֯'u7un 8&9=uCڢE 'M3cq-c*~]xo9JIF> K*_pM0RXxp@n<Ď!Ù]ÖNm5;s"Xg@l$9;f/0jF82Ƥ׾0BS&JH`&`o| GbvP8m/ L ip0x=,ąX՟Iϓ)`ر$dnSh'jutL߀!hcAi1\>Ź[T͋XPF 똊c-<;)Qw"W`dI}2U?u{(a> O@W?STm>$VC2zxB(aT4(mvVSLlW,. [H-JTB}MJ C?9 76&T+K36'-xV[8g% M8rl2ĹɃǨK՛AKx=-nI8p&Nu[2u$um "KDO6 &180gT܉/~^j JpǸiկq40}]7̇ 6]-No|?).Ӆ8EHKwE0}RPg/WlpVNjk]*=sz;4ľpfF6dx Q:/޽2XTt,s腂>"Dk~X-'dHׁˁPMXyO %T#VrᑿՂ ,2yplIiJ0bT$YM*J4T7>vKos8wDy63#y-rxoEJl~4&e<{n_נ|H M69 Jߤ=⣊6鴨 G ,9hdFUܛjy5|L t%ITij߷{RرR9)Gĩ}~iMV+7;d:Oϻa~n) ])P~ E썦iy˜Oϭ۫χ-WBᯇ=Xbw$Э1ˆie&'_wgT;աWKў)힙GM2݋2<:U_Nm'_TH2 Z O?srg? )Cxcp0Y<x&-TBѶ!tQ|dM߁J+YqHKun~p/2R>2I`$L85\񒱲ޯ&]9Ly"rȡAcBq)S(!{en),6J ܘ\zhco/B>.OvQEڝ>jC[^_$|FUVM7йEEXgW1 ]匼%͝(o *ˮj\ih?!D(s%foBu7Q֓tE$ڪVZK’3Ca m' #0Ɇ lLYW6/^ȒyI/%'Ѿ:XBz 0R/K{74xB&۬=yBEb68S4I d0R{H@[_'(F#+*'\ԠkSbQڇPQCryGLk!vcZ 0mA_l}F[C(7'ugay5z8t{ZPd[e6 νH:!g(msmݗb}ǣ ~kM)DŲ]Kn:JMwK-N;{e\*2g2''YK5h{Ұ/ܻ.H@9\mxh\6PE%?n}Mu$"Խⱂ u^UZ^۬FTSm `=P+(wξ >ev\^ GDRvΡ$=fyC{a)0lIgN\Xd=6titǺi]:iҮ_`MqhR{dQxdG,ZT]8bwBKmح^MmOwܱ} - nڕg#-u{֛T|腢ѯ*ҊH +gZoE.#2a駱vhWfv rxPvVp=v #r;BUC_~ ǜPGa ν8㿐{G6Y|ً,e`ʩjҭP73!s&xIgIۚu^#Ɯe${y4Amf&p;BszLʝtH*nEz}X/m:.S@'Fwow^|/ ^DǗc_Y48( ߈ݰSHPbأ"E^D&lf)R(T ?ʒ>%0ƋmCwB& ,KX&ES2{{Yȸ0:5?Lc4 &5" 1{}<׈ & CT`£BSQsG{FM}\.g 6 ˀ}r-k-!?4<禎>Ϻ-8²7y6w#qhsJO8%+-wmp;2SѱQk\Hws6KwE4>th gρ9ux%n@67WdF\ڂҌsыtۚt9;Gxpn"Ҫl95-W$a I-@4(+{j}*A uQ*2]j6O`oU̽'I 2iwk&jP7Ef?Y%_FA*$y8fa Y% :"x9)?t׼Mj0+Ƒ/QOĒRxc7Wt%}7PFpٞNPmϒ9N;SٴsJYWZk}>9jwrРrU&ϛm%m_i;~лZE\T_k5_Fsy "nEK x!Py-.p% I:b5x0:6rqTEU._% '}UO-[%<Ш\lkh.͉3Ɣ \y׀"FU$G9=P2Li9WύTXO*L-QHkQOz{Gy ߲0zyO]wjTUwۡ W㒂( u>_4j`p=I5MV%E L۫ImBydҙq43bĸvy*5c pUu{2zdj0J&?C;a[SouGc1=m ߷IW뎊j|-Y$8_pB&x-8))lRyhi^Vku_q/1o+1_+ H+Ѓ]^K)=QwZ]v\ 2q#[{YAԋ^q(QGC qDKA+>}US0&KBTh7Q e)v%^?䪐,+r*:: Ž1tL:DuW'l:K7@u:4jox7M8vl_ޙ9rmt6YDdx7eu= `?r͒yসHE tpڄIVTF&h-zӚ pM%XFU޺ZB C؏ΐ=#r|;f߀)ve/=hauD#pg?i7d]ؤKo, BAŒ.X?$@B;/m0N><|R9I# ǵ>X M?l)l?~n!DyR*h٬Z5Zˆ{ SÕPZW7PdwaGpG6 }dmlx{ `$1`lJ<᥷RK&PNfYúya;L^ֺ"~b֗`y9wLVi {b~NWh/^,8$TT"z $X7k3Mр,j/<&0CV q*CVZTn\s tmxknXV-Dvw-v?57et~0&J^#n%7- /vW* ĮTPHp9B*y%oOEgy"GhW{:TH:T-)llM|{I(iWk_$fLH|v^1[Q4Tuէ 8iشpf~r1&0xR{7ο-6b nX?GUQ]zo;WjA|ԋ 2\PWʧ8@OU9Y#5dg֏1 1p539eGωs,>)7Sim ML\zB׭ʱJk{W?`r_4#Vo^ q?ՈrK9X 3&+LYU%WE'_K-#$JHq !ߺVATδΉX`ABW88an2!>(__4Ak_cq;']'X[y6 vM*=! `bj4!T\{"h4.*q~l0Hi ^Dds\.Y'CjY%tf+XIf2\.b7W{9KabIZ+g$}U1S>_5&i=ѯc6L0$F=_&Qp5yq4JhSˑ/>}ImhwrKؿ몃p)Ra;7Mɡ(IDy+z#ڞn硌)-ur_>ϑDђy>:],H&?$&{EAr 2 ؋*szò'g̀-{찶e5LvMxC^a6M}g+ @:!j5_ш[xСkIرJzп+q=O+T=Buس830U)EKd?3[PTϐT,4ΩO;ВIū.=lGgU()dVy6 @ݾʳ<]6T4Îߔhdf/ڳ(]ne|LKCͭZM~L?wqJ;0͖z- __$: WW6ȸ+!Hx'yoW5$>o?")XO¹P桠¬۸ [쮂}\f8kߦ)n-2S\X8qʹ.d2qs)}fw.L'azq=kϰZ]jOp dԟBbVy Bc.DDpG,;]g߼I&bB9 *ifme@I,:1rNwxLz xWkkJ­:JܖPzjC': ;S"=>_k[cHf$-ƭSp)Gn.l:âg܂xo-1OMO<K6[IA 98V0ߜObCYU&  inI.nc8ic犿{L+p6~VSq;t{׺9C ptZu^kݰ܇q洉 ZزC;Ki[W%Hwd#2Su -##_@B7֯FXMI0)Yܓ ^ngEnŚJ@izQ̓Y96@f\33IC*#.LY`)U!n[\.s cSki 9QX_d҅qxu`ɽNw"gyǷ pkF,YFhcͭάǓwXI*褂 e֤_Hh -ə ̈L{ ]̳`ϫMFX:K㌮]N&Ax[8b\0{(W>S'/NE×)MSd<NF3Pc;)i:8AဖmAFFnT"_btJ,NcCQn pL^(tFeڲi%m9:}纸:b0P z+H7VS^c^vغ %C^XNQ[B QU4A[q]3%.9Yxa륷/hI&@|s79ag$ 6"L>%@̚$Cz8[#cҩҀs_wm@7sJÊ֜n3D>}$3cG +_݀=oGx|_CvGml`M x@  z0TGiezf|1ԇ\kB˝%xSf%N{s)Z6`oT|R{_Xet(5,vS0RaVaCD$یk/#f"/SbxG*Q 5HUH4iS0S8;gH90S#߲0W?O;6sB40Ȑr4>Q^DFpVMRD4 Ig` ^Q Lrj@~њ5A4|`a&{M]"la1MY/NFrlo3ι՘{ȹS!Ї5f=QgOw8BkWUp;̌|-wwm.` v6> (+bb 43x9P` =VWk<ĸDYxaO`,O[#{G ~KaOF!^(nZvSIRqf8\.KQP ll.1=4J<^<8C)xT 4#>|jv1cI覣cx qbBd lFns9}˳ZK+ّqxofxY.^ptgSdSAg54ԗf4e򎎽' 6eo=3km}_k_Nȑ?e~<iR4gq鍴pfaM9}]!B 3"v*ˀMf-;@?jlDR=[B6c.weϱKӄ)诗:}COD3N :*ϰL&r՚p)TP(R)lG.YέǙmo^QzK%XgR0X:r PGi194zzv޽"h>c=˒Py2ף|%քcn03g\Z`_GW.fq7G#.">BgmOz#Da^a|* 2 9 BgxAHp: La`,fIE`ʟcC 3 8˺<+&IcVjKXCq)ʟ_U!לМ$vEEz]BHb\wZ&b˜8gBݶwU"'aU&f mg#(F]>|U3^&]vϣ1_Wi,JfԽk4lE} z C<şX^ E }S?7x p#^أ:׹@  ?8RS/|m.  ѵGf'R^hN"1mR:r)}AqnS+a栠x:RIoNFVmg2Q9y bh8zޟB u9 M1 "fd:95g},l:hv07{eId_߷C:L?Zlݒc-4a+伀YmHTs'^iyǽhʼn8\UK>m߰ͼQ㴹·(r#ҮS;%Z|"Q7 75 cg|,$R9HK-&;~n2r_tLG>YB'o ^im>xH9t xGba߈3t(6Oy0R|〴CU~zY_LG<v ;l\s>n- o!hrte}7NtR_8Fu;J}v5Yޱ ^cĝ/g+ka{9e4n&T9oWXkDX]*`lz |K_5?֩_Qj"!!yǡ?I;$rxB0.#I֠kCրX8FR1ْ;Q(f2 hr "N( kWa!n6]MCeky0Gv3o+PxSl uܭݓ{rNa֑OnO~24[[W;XnV->=_ݷ}  DvӽX}8Tv)q!'ߺ:W @zfd 1Wx?G~Xe ׄ{gd )9š2dv]Y="{EnwVr7U~R2cwGUmspTH Wcpy_`Ce$aI_v__&\1ldL,VW! )nc~c_/gv+e_OOK_/$~MKbo(a wi{yku 6r=>/S^gǞWDkk;]\ SfGn=)ߋOAvv/~EZϸW>v5.JА&WIxzFM u#ԕ-w>p)*5}Э]|_@lYQZR~~Y"HH]sd[yѽdBvب&dqᑨ╅D46+x׻dy񗞾;邅#4?4*E'_]R{%''cݩXiۜu+@lFDaQ!72Y,ZH _=44*87O"}"K?9Y9?=eo U.\ӊ5^66*Ѧ}~(eno: -5<(RjAKc&'"`W X={Qz\ t|2WΘt9kդ)\A1׮Fa I-LQ CniF3~'Esff/5QWX`RlU6l%L[{Lj.W E!&N⫦ϸ2P .v<PxA{Ys^5\_};Yriw;MxOB9)hB:1W8) :j \߶"c1r7&vTd.pC q.RDd/g2><"[*UEbw ]UoĞ^5?9PnuG`5e0n\%ҿ{Q vaaIX-ӳN Xi•, RBΡm2g3Qn6;2t?*`õVC/Iz'"X & QZP ߁!2JV% [ ICrPVg@a(쩪$+k{HIГV~8 iq{y3vDACe^ڕhN+!7&GEȄ8kmg4]Pc}|%Ǭ }A{k?$Q}.wǵ4B7a'^SG`~yT i 8h.I/{юu6$򐃎 'Ē_PyXzGŗBR1<Y?B~HǻxaOanQ}p|>0MY..l^Rwxi.l/ؘePOu`~<gʰr&a$tpFI3A=(j9m9`?ٱEw4h=a?920DSt(9 gW %m-Q%NV؈EsJVbdyЏAt+ŭĂn(2tP~pҸfTfc(.*R; p? lղ0TI BPy{@(Xe+CSw;7 Jg^G"k[Ar˗9?;`@Z~)C:!΃X>P͓C99MQFMc(3u+Op5@(~:,L 40~Eqct5А1)Ս/>%oĠ5CƁ6X̾W{pttw9uKۏ#?BmxoNٱebs̏Ң\7Qq}d?qsVʹVqn+jZ`≃@k$ډOs >]!sŌ, }v){NP׆oƵԗUqgia'/U%7G=(}VW%1,Ҝnc>I&q[^%YL ;`yYV?uk5e[W}ROkIŮv-IS2 }%?1<}Nض;il44jl۶۶m7;޿~ck]8K CN4rUzUaXı;AB{8|q5"k/z|ѪpSKǪR򒘢5JI؆/riaMto '{*'4͗*D*i6.|k lI\Qe|oev|#%Zz/#^jq'#8d/&ΦeáTd$ )mΌ'DʖJeZSYAm"7eO5[p~F{Qg¶Շ=9q¶G GU5č<=9f8Т2vvt>lþt 3C:Շy狓Dhg`W6Uh7 C2 KgBjW؝u?ɮ>3œ!&:2;p2O(8FԽ#/pCVa{,o Wbęgx~j/-[Lm&:Wo"II۟)$4=]K̖u\90/iIG9/O,?%\h&N?E<|j:6“k6n*wr O8& mwnM|`N yQ8)Y",*M3hl]C?o-p],$i!i2(ߜ;8&rGpI~]/sN/Wͯ晫5ݛ9M-RWo/~Yܴ#Q!Gni{|>f)^X0v- k"B)zS7,6>?BRE-s;S/GV]nߥ찃y=y"bÿ{w\DN#ەeXߜPNp&( zaڑ%G"\r /X>J7hhE'ˍzv3Zwi3*>ï2`RL~&a3\J#;n]Q+P)J84Eֳ2@eD*/}6<=po<_鹰gIvH3в:$ p|W9X^nDf&wR_q bP W%zK W eBڱdԋb&G2}}H4Iµ:}m3M?B0}2}(2fH2K&MS&R–^ާ{ջ8QU_&7)QWq˩MD2Uq+Rh.NͪX?GLp?';{2bx?[V5m{!ÿތ50u`f[N rZm*Dcr C=Rf};h^;T`7t~ #ō(Cw[UZ Cy+=^_inVm#7Am(z=y3cI5mMBnj\I 8uo#V =1+46W64@ m#=j $dc4yy2 سb[ѣ*d/wwD%$@jT[2TYliqKsھ))5m:bnV H¬D9|X DǣVcK5zV&rs0Wɱz)P @L|DCh~Pji>Wi%[H ebiqj/n*C-((ec~* ŎSV 㿑z`sc/ȤAAJ#ig:48gPD_IaSפQ=gad& @ڌ9ND'=Lq89""U.Kc+jD@m\1h2X4/۔ݷ׃eG%NnJ;q.30Rv|~Qxz{˶@V3DOs:\MK?<= (DR 5KY3/"Q9S !|NL.j3ߺ%) ܎y=bI;\8oMEaC/Z1@ԭx%Nns}] ,^?!ܬ2bmX7$"dHTd]VH}CH(A"6D&PZǗEP$>Uga ]C-eQVDQ&TPk'=ms>HhaJF^|6)iPBa ]Y""@a;47 HrkIcoQvة*%>h˺B~f<;M4JbZ@h5iްSU6J%LvQ! EkA(tߢwtAo6 xF/GlMG-Lg0AۭXtd)8% L4^0q\ Ј^xD[+=Ds"g|y20 X>IῃgBVpN<&rƣaI bE[KjBM~)B[:VK)R l_M%SF"^tUv=P TsDV ˬ6R㛘)0FڑjڱPh<[ "]#1e iT @=CK7d[/D_(Rء'*,|ӱQ (LHQj {׿37ےV R\ȍNE "V ]Kv&C-Ixײ˟C' _&Z(G)\_𩕩h(:QPcSQ>Z=Kq[1SbAcLGЁ/ hG$kծ3N"bSD$qh}ՙ[iׂh ϒJsKZmzMPYmlk|ٯa/kG G7ղWy]haJ7y,Br54 f1.׊Cij`1nBsUQ|EQnᓍvu27$v]c u'|CB&'eg%H*qN"NGN9m 8u'=WK-HnxXK%dMbrnj*GzutoP: C%d{IϜ_QH0cCa 7sn! OV ݫm-*`m o0b8L,Y:á0O,*Zs%tt)&yinFw6pۨ| ùo]0jc0==8@3 |qpkMQ9>c$zEa"N^!|`7-h-AlbLn8ϑ%0@y ?HD}L"Jqm fxnFW_XD?2:!rD fWY_ƛx*?gZ#'$S2: $/DLjBw~9P G7yp*pFxAFT[LUyF_DWuM^Y 6ע鼯yFzѳzW.͏t]pBڈ9ыQk1*Jb\9!3:H:q xaV0S;)+kd(]":_?FѾ YT) 'Po IH2'4V$#4DiRXkx#uu;TrHnm mClskNߩtnIn^ V{|* }ph/bu7HtPbZ֊&LZ4ips]qOt_ 9!1a Ѱ+vTit Ր6)}\NUI &~Y"7[e<;% +l' Gܸ~b1?}HL(pڣ(ȁtij,Zj_\ YG@k:0SC\#U]"5 Cz^ϻO !"dsȢc}ZPeaܿP'?#hfφepC=]K\'ͫ5!~G˪RGrռZpw _0"56c<:'(+N@%[hGL,o35h5jhxYmD{_O#] UnӅ KRiZAm0: ~ Q,u#!f M9dv{._kw(IȰ]o훓K;d9"i<䴍[Ix?nǨ b57Bt4/VLR1G1pQs8h2 q j$,k[ؓf%l ΝKEE 8#$]H K@D:7|&!4+~,d 1!/ 7bH3h윕wBleD F[BI pBC@E8mT%D }V!*Q F=FJO?eL2CRm цEʙyQ[Y&8HBڋ&6Ɨ@~$L޷?l 6gn4OGzqv%]/-z[ɇ mM搒sRr Tlﵴ<} F<1IO;_Jb5dCp[2;fadYEnS *iL`lKLeĠlHW n{ґ?)`=bI[Bv8IIHo˟WoQԂ3 eab$ADEoƆn)pdo^Y$`/]&]jFwQZ/@dZ/kyVx:S:׽,r a:U8WkCM Baxh~G:YN&"*)gS;Z l>9aƏokW`TJ:?[xM܇m 5WY4LrX;d#%-t[D~CWad0Y_V>{̕rwYFٜsy7w Y9bJR0y^]c4&/#YUb;U'(k G}l lštOє`B sъNʉJHUo፨nps͏9BѝDKf#b^} Le#f&;D@t5XA :xtTa;?:TX|aGd#?SCӗ-A/v?3P5$XT7"6o^,6ꇭאָm+:XE&|4 URd"~Tc+t/BHIF7XdАNW ߬p 7̋n}TC ɾOK`\@[BZ--֡1(ʾrZW,^mމCa9(~_j {g[զ ]5-^k\)4v77SDe4SYi>̡OckON dӽ^)Qc>ȸL3K fsT:% eחTrcZŋӞH=Zmv% =o!yIV{ O;/P#r!+|o5: ,NfziMZS@9J8~.6I\OD08)6gjF89J-dX>_ b\T7U yLV޾eʜ8)bm($zl- (t[:ύ.R41z{t-FQ?mO*,X莹Cso~tà/[vĻ@"1!B`x5F嵮 `JۧmѦٛBdcBR{qZ)iMO+-ԣ-4ⴣ=R?#D.LS̮]񹅝V` ̜6eLsV!o@Y'"T)? b;tR;KŶ..J4"K^e֣ Ws}KhgvQ(Qc`td(tَ4~V~nZxdw'K>_ HkOTV"3Zur-VvXG0ށmaJV=~)(yE@lUgr'@S$Yޘ#Qj.j׀ȼx+nXuZ{-?lzudu{HiaMl4tjDcn9F{LH`QV e}noJdУy 5\iWUd}bɰa甡*K7E- *:(DqxMΠ]a|0{wdF q\?""GQc-I^h7=xari%ō+Fn1k ^> īR֞YGoeTh%p$!LTv/MlW0j)=x>f͡N]T8׬/ZRs!JP$,*v]>h]n)x}fM ןp{96kpspd83sJOk5"p!]Ŏʪ;#F$ρ6er=ťr+<qnmMD>~XNca|OV]6R*(b…Ȣ`TO/ktH(ߵѰ99xvė"QqإKؚo^Tk+ _Ѡ tdDBg t&eZDӃg˛A1b2UjsjYN`ּ6fdДhE @ҏuJ8$ތj ?c[/lo" DRҼ.>Sjcj~"J2} ef 85j_ηUFU@Ԩ %1n5Єٟ7zF{2E)? o!%o"h?CVGgeAÃ|~\a%6֊_ ZJC{YKE?XPimJ+H*d=྾'^xb|\+01L l,$GvǰNʚXjVRtѥ@ehhn+%Ol)N*K=Ϫ|b1\LHYuwQU$EuO>DSJtD!vx7)Q0>vOӕOz>e"{1r*ւWЗ)z avRT Z `p?8pD3G'G֐(.GǛꍉrCjCG+T?lR={V^ O4yc F,,X!ȍ2ftzT{͹nvrϱp6Eo7k?r&a.g^Gw0\@gaFB-$GҌ^SR⛫2âк(lv_{ΩG_t'\N\F-`KLBQni=>f8> L gOĈ;`ՀȄ<ӖCg:S?X.31l68Qp<3!̖YSm_vh҇)O G4$ɽ2HdG4N)pNsN*#x^Gg-U=#̢юr7}A#DҌTLvͱ$#}Gҭsr~<2Ȍ!dF28ZI@8nZtⲿ]X$EznYܣg8?=26XUMv%lp\1K'(9%u( k~"L>qD=zSAT ( |kՁf4](y௑goQޏ^67{q ;%R,'mj &򒨻F 5૞uJ+JKfIXiq7@ q:+ ZӼ}O1B&}V Jo:CxӜY \mw^niyـX-X5PЗ05KZ3C*~gyW"~>]bTH0^{|h X('c(A{\~tM)Mr$|.:On~Y _VfwF%Ѩ )r5X/9 E)x.wی5 TC{>\`I~>˛2՚~ jǷ#K91 };ucAx Mb}:Y_kR9ok X UldW xt8pľ6[grUJ1E|א^奞Ut*,W_FVzP:N>~ycE_^_⧏CV {̗}4$9OxqT?46k}*w!vJUQ'YKVbLht ,"\8;HhE1Ϲ3!db:e"Ev'sTC$K1N<>8TJ ߑwC|{nG?U<ǑA[FVEGSKPk}ݷ+cK@}${[1=Z?"E7WZ׎5G/F%" Q +w`\Zx5,*T?OJ=TJ9^9VT1 l42۾4놥nM+YYRǾpDd(4GY`a,ɛCe /l.]矘!ei!lZi!țc[FdfմkJWɱ\܇xK9I KED #if/ ch[訊MQG}h$8chC^pqP4&šٵ.0pO}qpm+3iϲ^)C C9Y)$x^$U猲o6EM4&=X֪:2sY+[SnvͿgm54%*C滝0{0 &q ^ <\W0$.q'.|WZw1m*Z>Hu>E (t5x>Wy$T7ezTuzAf=k^&= 'ڰS@kғ> ¸Ih^F6̿pB!QȞ{f휪*锂ºXމGʅV>ݫ-Zj`^'wKi͚%[(?nӫ$/ƒ!93DQNǒ‚88?[Ʀ[1'\Kg5R=`oUEYÈOLj{VMk=Q  ܜ ˆ{];%16UkOpSѳȭԕ0K6^znO\jD!WL*(3ܚҥ#u}mZ~٪2R?@ )KH{zGA9%ir{苣. mQ9ʁ른`|[(hx'+ݾ\)N$K!.nr:4m; P<{$ jX|wi`+g:hvmZ?} VrWaD,v>k``(OHYTwU?ˇ$N6]:0k$v~#_EuKCoO!|I߯Π?StK%_f`а"C*xџeў!xUuwGc]o͋YTGmo?jaD) ]lYv-SRL&($T%g!+%Y+X!2zfޯFbdU¬/%"bV -w;! O$h#y5@mĘgOf҅ a6<<$* 겛m/ѳ}ъWPN_"oʚ/],te@~yK|Bă P^(UUԨSԧ1/ME-#p4yNvjvjv}k{  <ɬE(GW΋(h.s c܄}*lI|Rprؤz8bSka-ާ+|Ҵmg'IT9Ԝ;fs4Z$@Gvzu; ]o`q.fDU&6'`m{VߑWfsA՚"O -9іnN"J^SdU*Fl=Vv+6#b))R$\# {p~]j=U+mNp73Gh&C@U(/FV9˷"wĸ&֋jk]hKDl(Z^ܥqt>=(rˬ*smM Q00ufAGF85[LEAYgQ9'u u 7ئ)ْ+vpMoJkQ`VV2˞2r "ׅ1뒗ͳX i" |80y]4J Y#p=i"f´_]pG4 ?#q)Hfh뾱V2-~_:(%MXBib)cY6Yi#,tQ&eg e VXDZxT4'!/0lIL D<' VR7!5W4L 7=!yps0=Lc$GT*b8O߽|l#+#)Ϫ!CxΠe` E p s8Z㑳8 vQjgK몑ŽZΝϫB免I {`j;(`h?KZbTZεFZHR;zUH~u@IG 1RLDJP`i=s3n82AI ilaN,_U_qBL|-w8'5hwTP18{{ƞi014&S&SДUbc-F7֜.LvDa$PKD=i 5 E&TvXMS YH.Ny U Fr (A\"Ѳ9ڟ~k؟]fnKriLre<>'MGaB5y>GW/s^>ݝ%pKr۱Hw+ ;3:|+TcPQU|*DdGSL s Ds(m"%*3 QAod:d(-\`xsN+sYl#q09om9[:~ڤIrvM ;BX46&Ak:2ihRj4PO~#1GIqj$pb$%րJvl`} `UؘFo(RбC9遳sH1ϥ>g;BֆY+G&Տ!7Ч[ bEK&JSv.B5V !6%F<#5qLﶳդI'mH6;ucۜz(ܶ;M~ФvYvpJ@!1@eˁiLzTc42?P71icL4f 'Hi{șd|MdڈA-DѴGZvH8Mh{B z O>X#Ub1KZ0˽>+N>ov2?lǠybǾi\JȄ=E*@36g 2G("A7kRFl[`gOiBt B7+׺MIFޘTq([Uy{J*V A:KHưnw/kˇ_Ꮷ&'/&[-@"\cޞ9X$T%O7/$*{, VhT]/Z1c^DQsptD qJ{g*." b^*mpP(;܄`$f)䃹z+@e.=)U2N *-8'PfJa4y†NsJ la\-ՀfJOa~wNIͩ' |xНT͉/ "gUN@HD.>(˥h70j|n}#adže&h;0{S ٨GEaJ(Zor_pJ#]/+*PzJ+r8c#5)iHb7 d]DܣDMmnj؅)b|+7}el|dՈO|KRzp՟AS:^\9l]- x?]1MϰNd۠=ٻ"_|-WbhሴUzS-ˉ.WӨt$*~D;0UDd+#vΝ yP8dt]N12;i6a+ε=a1T871bBLO\N:Eiz:RBPGd{h&c Ix/ OKuPz[e62ן-$\7Gxv&нx} 'ycgIs\UAr&Ǝ- (|ᾉ&s%0W'Β9Ԥ;I@UU9$d ",\=Bя0?ѻabbQ.s`9` MPfBݯDDL"6tV7.8[yٟ-=֤Q%J]j6ȡUeS}/I;Ư-o*1qJv*Â膴sŜ>{# Ȏau!&MQ{]%|Ҳ@ jkg1T iפҠ@R //LM && ]_*#q:<=2m Da|NEA7\g6xVwI ;55*aEi  ‚:⋮Ocwy=}w몣gcqS'66S>XU$C-OrC:A\'o+#o_>ϩ*sMѲ~zgOw5t 賁ɏY'pLrGC|{ծ:mH.B,3+쁝֦ N%M-]8mp|r2%U7ˢ?kJyq4zϓ*8<祿9uEfs$bfEUFc =FMhнwཎ?n0鹅я ruNShC!"P) Q9*N"ÉuiZh~YyoچkWuJg{귳_$`6:PP5h'0=[1 0׃]yפ0O`TS̯P]ZIwȩ>J&!-a=N Y3izpLguu{G4_'Қ[s;7Q+D;x5iJ%u\}=_HjWjlEc6qNIvr.Kh޹=FCVE%=6?dn@۷hU_4m-bփWH/59kĒpi WA2si>_PX`5p\;.K˽w@ULFbƲSFԘ萏'-DecE9o?{[ImMRFz|Ӗ*̊2١IZzIHJ2 ?AMo$ۨg#hj4쾐P@wG^z$g+>]VSS Ժ)OY Ơ -{KHN2[(VI-ˁ,cزmc:ss|L̪}k״Naq3ep=߉ Ԕ>xSyc4Y#J*"kB{ˮGz40` Ej?xܝa)*85"z.*h,kS! ?hvqUum$.У2d+ƚ~qZ{jqLU$|^>0-k̇ѥ#fNYYPd; C=f#mCŬQWg?WNe{ HX++0CLN-W مl?[2SY+.|#8?)x!LIw$!θŬŦ0v&&ԭXd(uy>LoS.9k¤@VĠ^1-Z5gH`wuĽ)ܾ\ZEgO4e?xsnB/_3J MZE VWM6Edس` "LYK^:L}S1`/ ʶKحō"}t'w=ׅ-qw?#a@4c0# ̀:4 ëtV4C稨 }20e|FL7_u>1PXᮀۜx.<+>&65]r#I<:w/E4B 硉q5"afzh2 wXT@od`f>K>LZG"K1xvrQ$ΊϷ J7ROJjUozޫYg띵U ՔdN( Uٱtޫ%P_IJED(эf) ےVV K(IEn^[E+&gUj?~[w gE-E&pR^Wehe,8n%7 cwxO)z%_X)\#/9#^{. - {OB ǺVo**@TvoQbQ[؋aQ}\ښk=bܰÞYths2֎cE n+_fe2EVgyO"{+tx 5$AK> M~RZ7姨*wVyulAw̆M=9 /'|KD8DD* O H|.&g!5] y<+  [PğY[ S*=z+4%P{D5@bA7s9.7.t qL2o6's2ua$Sgs$QŇ=?WgR5¢2($4_:P'DrƼ@'U$Ԋ͹iz kmu ^-F}G-u%1D,Br퐹{c#\7s4!H) ٘@O/""BfHTl f^f/¥6хsYo '^yVe+=65%qz&:~XWeׇtphd$*p tB˳sK@XR6%>mT T[\')>'_%„1jY)pe1ܜkh'i gp2AgIF+/YrC%:} deYEo6I{: }"J-CВ{oA d(2HOV H܀!&5%5VBa\O^b&%b\T^M RC9|8,3y%PEZ\Qs*%Ccj)6É!fmEzhX|F@F]arv/!t9/-+FM~|RD=L/ -6[s Ub)pj⸰+JaT /(Rz|BÏ{niM)(z݆&.xk;]uHpR![ν_$_OMQHCjmshbѣf\L DƼw @ux{1'6aC:gs-Nz4pbkij yZEOG?t\MQ%>X[S0*W؍߂L9S%.;IJӧn;5J쪹ھl<*cfb+$B's/vşh9Lg7QFsn}a=O<6|1ٟ%0TڄMdɂ[:J7\1"j*]=SBbp\hGӎ8`C!Ʋ{Q} jق<0O %‹cw45O%~WMinWȊ{~._㬿LPc_<3^PPY t4OQgoo%^I\jr'{ӑm7WlDUy>0IuyQC5_(ʤI0T{Q (nȻoz#wm,DߺUys)f2 ~QNfؖc!CN`beA7.ou|HsXw䨢CO8@ʈ  ƢGҒU8<V%!otB~+w%;C7s*oړT=JG}IK=<3J͍Sa ƿE9eevI(wsђ+>PL--s !'U!OMrPeXc%M,H6%0M^iʧYMZ^j'@z.O7L3C;{d0!N p;hKa|laI`c&.!)wO^'€Up3kD9[8W57 gaunx*O&b)cD7bB31 |vU񆐂BaCqUs@(` IȻBaQhÑVu$4ހ``,dmj'OdX>&!f*ۏ'b%ea֐6I%v3SStm KŸDXD>~a;?'ZG MzYNt߭C;H!E{*xPL&5:t!<(W*HpA^^aÅ7ⰾO u~ry^&}BPCZQ/Ac@፩{߶冽Wu}Uj}D1Tu-j8q'0^xpwUMZU=˾öx9۱hwxn|%ǭ{HS8++CzJ543%J5XP6~FS/\5“ruɜƦϗ飓ٗdhUSp'k|]r&C*{F*U;)@C0W ;S 4)yۓY#2Hbd2~M8N4*p_RN%NW֘|SԟF,ݶJJKfNr3 F;#R@֭$Iv]FU GA$s)֨P m^¶:d^'?|x` ,~\+L*Shɒq̔HqqdiYlHNJNۍ^s h5oc# rxD)P)T( |&LM"znaPjY3 {9FWWL0t@AKIz-Xk+U(|P_i0[ˇXWU[⪀A 47y"/|,lHL:orIEl j/_8l.Ur ;T0K#sdK%" 1<{ͼ锿Vi y  NUӀm6Fȏ&:/0`'ei&cl 3vO6e^_:N{=Cۄ[B8(_XwhxAE~8yD ˜W(!21|]_mbG}aum? m-`> ceM2W~1G!kuzT3W\j[z)^J{81&E1'8LR1\U}>vA6Mw_GyN*2 UzC3/?)`Uޫ,'%󄚟>nwx" 6Q.JԮdM{Ka)'=zw c*Pʝ-CQu4穱!p`Zi=΁([$vҘDNktb_n?Ɵ Hl3D>%2~:[̫uSPع+U3[B( !éjJl.WN==X_u}k޻= gUoJ8dAxTjxS{''{j;WS ̾$zu H[lH1;h$E&xVyAXb<г ׸1xBv>$"ۊC&!1mJ#жվUN%E~֕0Y&~!GOo1=-U]+α e0%'FckaٓQ/4*,Q+-|%3M\lh}c!^:&ѾIİR( 'C uz(3ex)-e'(pdmVhärl$Q+BRm:݀Wzf* J*dKj] M*b\\f W&V>j槰!B%@\U+dhmV;#?G:in;\Nfzx2Ҭ%ˣFGMtc:[oد8<EGF[ m%_PlE_w'8u's-]i`m%:f3lxW+Ⱦp;fbi-K(6}Zl Z}=Gh,(g\4Q LЎ7߃둬-jի6U1 Zr#kN3bP2#5&ifF7hPKkӮWqrp:+T0#pjc倰da&1սC67y͓A* 'nt8bR( Gl v+G46Q<XЙIcp0fX3rikeE <گ3dhQ%q{FhOT'(za$X?v;o8Y~%&U|r,/| {|c&M}jha `uc\|@VgNOƁӄըH)#Mc%_-m*nYSAgTXC<-2h:; :.`W#TB£?4rxG>y|\p{>N|.bbW{meIQM@'k )̋iI*{oJʪ\e{ !=R5#>u-֏}X㬻^;QVYG#*dե\ qÇ*aN#*9Oe^ "h_Fxl%l9v u~V򂯍NS7++w'!E>Yᢱ/K>O½d'SQ,x'Z옖E}Bj~q q&y{;R /Z߰9fO%4Y~k8tul0=J}*pP1śWS҂3 l'1 B%b>W`2G&̓Cٻ8jffݒ}ړ?5 @/i^?dz^hڣGҞ#`gQI^r#вMM:觍Dy-N@^>3 $2I9BKa c l.;?;ȏa}&Ϣf6S >D=-S/EP8F 9>#(ي- ROc1O\)*tN4@a —hN>w ̼=s-ǒj {bMO 5}\ 4"|a)ky ŧ.E8Q* @FF}la񪼅/R R{tBg+4"DMo@eŤ'c }ÓL }p+R1׸vWu}OYbG\X'ks4ys'UtJ<3W$7"x\6%gx vV :U+b&_Y_PBc[&e09!&6-RF羈;PZ'8sࢢ;ϵLXGX^}((Hmp<7y^K{7p @N=VѠ1.B4؊0$CpNjoO失<40i` ݎ%ﯗa 1 SRtd&$ !SM|Q{0 ʾ8PT?zΌ7mHE(?1l_cQsg2L{-@_ãh}Ẁ.܃>8 @_K3=\GzRKXĺQ5QZ795r)wGciV kS)9a@XUOD.2WkxQr$ۂr(+qD<IoI=['cB3WbUިtymW%ZEjM~!O509Z3v|!Ÿ?<2:M{ I$: N;"@\)9FݚMiS]{4#4Ϭ@,SGNq Ak6|ȨNڥL6*ClؗU8A8T-8i |]A.<6ݷf."9OZJwYR(}w~6IL3m'{wxefWZ>K8\&Kf' Z΅Lymf3-`zE/Jf.+8%U\KˬY;7˿ٺsnJ{ox#e<>W Ñ^`uKN_3f9qbzVqȃZT(=L\Bh{. &1Fל0ņOob Z".6(jn HӡZ_!i[a+ Zx4ȝA 7umd"r@߿GtH w7 6unrd ʌX6x8ThuY_T$CU[W  SYw+҈0]2e` (/{%xKGj;Tz:Uc} {}v"̇28Sy>4i@F!/3\[òlwqzzLF ~QqҌD(9kfc2B9jHr9?5<JTϦl$a3)` V8BˍU Σ-V OqN\l HIĔNh(9,Wcs]&nX<MEQhϣHa8o/ 0E$9xcW$)/d뫼Pb! rF\O|"+V=T%BŢ[(scʆ}k= ˳xڇ|lroO?C(l˧:R6s(5DǍ,7 7+Y>/f= "XY+nѵ*b/qw' ΒK!sEő28]6N<$HߕOߕBsY%FyTS܆=ӫB|.hwUUg7p>o{WZo?~1xWʴ IJ cR1=rnUewEC?b*k+a |g1I4'9ԙi\7{ L7xh<\;H8!pY+$NZ5lVfp-n%rSGY Thz%MH _bhۼe7d RtWj0sUkCZ͌ 2n\'?c6GxA)9w`5:ҼĨ(L?Q&b5Mś{맪F?~-@u-0K*wО~ F7Jچ/1's9ED 9 FN3V:}"t`Õb/ͷyp_;b [ @n \[Y z͉GdMT5ب{ GQV$#dиר~Ra Ť޶5 .PQ̲td8|#SXiPqAѷ#'Wɝ*M jK; xbL[`_ēJT=m;59$ T0CN/Gq&6|.j6We> [i ttC/:rJP)h7#>Shr.H6/b ҷ=:nH@ ړ!r`ĢRõDwܜΕpe[X !wםptSW`sʰ:.KueI=?!O~8U3c9c` ~3 w.8r&>;.>^I1p Mvur-|$HSO-z|qdMiǨvUooa**0PmskZvL{~́j ǘLmSi7?~ɊF(8Lc`mx4zi5Qc*S!Z=܄!I9 ӨGy٣0w&쮝h)$ Ζ9aZʏGXh=:: PI+N⿙׈413nZ\ܑ؏HMrH[^<|5Y՝ %by/(oT]t sJ|j5.QɾTe:!";ΟV.V87_d]5 N]Ya8 S1.U;f?_n*sʥ#7 Oo'Oe~0OyDȾLVh=&kҕx%6M̕1rI[j$al5UzKp:iP,VuuҒg+29Uh^SKP1V I}p{_i\w3n.$6@Q ]`VqáZ .qLIm' v%t-4s}z2ZzE ,G]Ytn,w.L^Tvչ_0#6)=֊rAIᰵDIfMUn}7#-Iu м#3B#-aپ"tYbwn ռēYҲqy_/u TI )i 6<@a'>P,k՟-!s42eoޛ4 K~UXAZzMެKʚ^ bR ^UQ{4µ\[t'>R@#z;Cԟ _ c,|fyAe _~BC3HB]SD̏h;p1+:ؒ"R0bV;+&>.i|b5vL;RUc4Wۏ(%thL}@ޚjz@fX-ʿ-{/(P7UVk4ĉb;Cj'u(V9]}Iۤ߉ÇJ,Cʳ^á>h/tZjfM'y%J nJLB9s˅\R-8*`ʍJ,:d /0(.rU;zBsȧqhN*MA_|0]>Ѻ$Fn2=1QɅD\!98A"ƌ^gWG>^Dc d>w=3|K™EUXDW3{ӂνFHXnPDnv@ .TR45D$JPCcPQ!J"7G!W f뵧쁶a0NAneԘDG- vC@CMN$9OW7x?\y Pizs($`Zjxq!^jw1n~dDb$Ʉ B^zڸi9 H+VDAVRn%2 Tyc H:)a#v ?&W$?o'T̙qfV} jV XߥD8Љ ~%;+mtA)ex#d֎`S)\'j jXn Q/)QL/4&T6.)°9$s,}QF?~NcH/c40{ud WQAU)JL4z7qS10"EF&Xc\SNKcy' <$/@6uL/X:AT#}"ᝠgwŌorDYٌ*i:pUu⩫==l4:}L(+h{G| Lcβ[yD{(0D[N:~:ebn\6{mnCAHf FZ]*']^q398:o#X7$a>$;) z%H39IOySfTP6G*-hzHg_d!{`h_- S~`222tb볽lCaIʼnIjѯ6ccM"."*׸NݏhJ/h/g)owx:(E]qO=W4RYrqi5x&#h)HQV \a- o6oV5mƮ:m%_l{d7p ䷶kTk#iZQW~N&xBBEDRv.l/_y!qe&DB'.xH6}cC{ThtpA)2t`4`~l(w/L*C> *3j^;#6kԘRIvPNb%{D4Qoǯ%C'7p}"eFC *8rr*];^2㧠az<٦+{ӗ1tH|kPQ Z܅eĕárԨ[r$17BS"9(b B괨\bP:LpG&ĭBC-; $AGy0)!:0 s_W7uo ۑ,+֥h$"d}+8WTplΡ2,@iQ@ǯ l(\H/iѕP'<_2u'RqWU>ؔz:XUcV7TrY?G  YM#ҚֱYoˍQnq-n? 7,м<51^Bi3y3e/)Gq=r=a6%; U9 fNnG36 l{NA@oYٸ ")HF&+}'4$}![өZC\3@d@o]ѺBSr޳D0yޮ Y(Zsr>|df =i*XS(;5"b$}V* Ü_eTS] <}M. 0NJ^ȞRIh_XFÝ.+-MI _QM0NvDN"fOAa&^wޑ,F_cVFi BT-/dTQK( oiҲql hE7ߡ"͎Ul G1h"8qQ+|14qȩԩ}ńټJ~m˽dM~إpnNˠtC;>zzmAR t-=E743A]\=-k3 iNÅ^V^{F/Φ3e>U5[#N]~fC. -'pwM]c@3%jñ+wZCiBznЩBw&ը5-gL7!^ a{huYy)z GP.7`.ƹ2'F8 e31EJμK:cVOQM;T~f. =5QRy6Yd)$fXyHSF+}P1*<kW_%՘dl7cGWuƖac~,VZ/菼}dXw#Ce8r T o*缓ƜgNy=Ny=PpgI9efxFTs2Csqeoo?( 8~ $=}kx^wvn0]d`]JkW-Ni}/ M}<^:ΟIgMA I_-Z~rBAA#d&/jrIwu.a^ge+`e?Hvٱ'"LUg9{584d ݨ*?z )KΠb':)m%+[؇k# Tԧ-ږAf|29Cs\-Fcp*n[x?H^xr,9OPڂ#[ ў(\n:>Gex_q]{_BI@(Vf13z[c=Ct4Y[lEk5AK|3V1(Qh̽.y]ȲKk Xp*{,iJ:M3*{ xSG۽RDj8w57\MEDE U$)!| 9_V*<7C0;S 4!l2x8/W-JJA95fh)ySkOY]eQӪmm-лjH#MݬKr-:1{{v0t}u@)`PdX2IѰFzfy֣Lja>\;܂!ߪhWulWjl}WOjNs=La!!gO\#i! \h0|hglϡYYR  7n0򟓵 g= K+ʡB m=^fR j]!IoM/?"eF,I֠ ޢƟVCZua}w/J!)Xy2W>~_}鑙,4`s,F>%i.|W]pse2<{s/2XаC63V9j|䐩ҹ'qKP^z ^ݗ?ܱ%@89vⷠBzO>wC&0 pϰd;e_$ktu-Mp%բѴu$dL>95#y|޴@K]{\zuzխV܀&'?:>4pkO+E\1hJ&Jo+Jf;EXrvU׻l`-+Wok_^oәkU"5 Te߳<[u')$^蓊wXVuR]f|ɑ3tNWy^̵#>!2+2ͩ&n\UX/Px T͉ԋccWL`9k @OlV ؽ c8  WT8ݍ\+8u摤YnT*}^h[ ^IȎonx%Zų3v.??:v 餬rZO `hܛQM'xT}A}F\A94pI"* v^΃ CT3!~p(g9xkg Y#ô=_[{cNhb|1&p&]ά;2̜r2JkvA̚Q =4HSYo ֝>֌(r$9\KuSDOǯqY/AR?ʀmQaHJG:lyg֊)xն01I^pF|2Liur¾az٘lVߞ_^VFv S:ݯ}gJBgyJ%o_A(Čo_o4}2~ I1uں 9[y*l󛹥rUVtLoc>4&v@ωu(d7ڈswB3 GbH0pHeNNI] J`ʄiF}m2x2Ģ"|,5uS>'%m"_K;Cb}=Ɛ -:QÅsuylY:QhcE@-vnFxnrL+HJOpߧm9uIʸw;W#F`e#?CuMwq*cX_uik8-;r^u*`\9!ݎ mˁ}ah=Z>Nelc>8˼ŷ[\N&#t(`8IX0pf}xqɤ`Uƣ vQGXte3%A J €Wf=`T[?P`,{oX{=gxA :kk85WUn8~uӒ}C:vr<߆:@3׳5v^pB$㲙B]}#S M'} !ڼ#2xoAIM9@쑼vcs^8r$~yFt"ϽgmS6]f:ni R,ȇv3GCUzd (<9'MR_n 7\ăHhجR2}zK|Ҿ2O"3@n)R=(ino-SMiNN?Ko)ߋջKl r~'u&ERQtUNۖk!\k0 ;r%5FjJɹef/O" mHw6ŸGSPC+;2#'jngA_3 NPĵ2f 6{7l#hiF5qxxڙ⠃s3: ʘD8r)nw`^l^%ERS] h(Yگ־^Q7>ґnQvOSi nf!vzD"z8y4:Jb5.lyN#.~^O>bC&Z&oYcGFq&'g]vz6i8 K@t.pB!/ nif7eҠÃxቭ3qzZĽ%w=ep?Kx>21xkgxї^~e}|lSPob[d}D[ϭ/BӜ> 0Nl^T -Ȅ}<'^$PW T\<^}tZ#'^<0U(}SH@;~qiH>ũpV)SÔLTFs^zP4;Զ }#Fl gW+者&)!=P˷)2UkxwG~Ck ]E۠ä eOL5_t>$-8鄠ˤ]_xOR A達X#W#UWD(6 ~&94 ss2w+gDNPec]NjĬwr|ORS[O;ZCww]Co[z! e3oɻ\X޻fxәxڑFă̭e0k _ cxOpGDJQ.&RaU% {^Z:oGIzJV<+TwKI/ {"YyMzkgH_VR; r:d`dh]=w;Q]L>h8X ^ PG/ F $T :)ϖ+DEԫ-W.D)c: 9P (I +FLFPHI.I\M-{ȸѫ~KbUJpZZ#p[g KD]'Ac|\sv9-v>,y*V+ǗmJܠIqSbšB+H8EtZ&Mj0tKsFa3 tb:9-yėNrG(EV"i͠4D_tXC*5%LY҃޴TdN .unEËŔVK7,ի>I6 TNap}Lz_nR%}! Yi0#'fCƭ=&{>눸&wO{jq څJv=NFҔw!ab/ʎ)+HEzɰ[KUܻ7Hd=s~>:?gkU\T1lp,ܜyQDJ԰Vtl9M9h^$}bQxir1YrIv83} F4'?o:z^3JڭOٶ;t'u-G]jA4t*XSŗT13Zٻ~(7anZHJHA.e !stu~Gu+2ye Icz#br 4QsHYGqfx!̖j--گ@֏FOzBaIz&?/OU)KVLק$(|It9AR ڦB@w&f]zȪLj9h_ Ur U&MNbVKBGK`]ru2 \ WN?|Ԧet1=ʍ_=/_Ym_I>sW*=9|]wR&UhoՎA#&O#Dźb@OCMFӠBm `wukFsIO`4"U;3U?-{`P5K G,+BO:8{#-%%^&4x)V f>ȓKe5GpQ~wn t!nUR_/to!zMKXQںM6]7]=7-a]uv+gQ°kJuXk oO睙@T7HGnp\[vb&*m@) g6]IX(~bdKaFq%5"dy~2oR^?i)p൸Sh|-kIUOjr<Uw!Xz6mqe·@" I+NJ<q7wKcjOmQ :4[$nf)g9S$Z4V(}#~)Jr( +/>\Om}@XI!)9Hήw~(O] G,A g7Pb`y`~qE>Mv,K8]kC{yPAoKөʆKU޷7-n<,P{RBh&Ӽp?T].Bl,xXu)DkgP{ !!7ZYITmV|]6Zd^q|t⒓;pJK-EJ@XolR)/ v *8bhJ̎ RGL?#ާK#z4pmu@# %uLKtx0nʂWv}d':$L,,S8.%Z+݂03ٯs>\eh\&X2>uybj"z'Qe*D>}h,ݟA> n52=",Ć>6ISz}@qO Y_AC#tZ3j L3VvdV},/b DҕdZVJa`&n'`#@:RVS` _RMzEouln5oIoJ`+B53 sUŹ4mNA+9_z<)Ǟ[]䯨{Wǽ p2;˦kKA;R^ W@gg,+Hk\m=xjM ]> =-2kA a6NOkG@OdYPu?qߤvQ${iF;^W  *'8*)YRrxi5Dg쬥!ϸWO[}@◩Mߕ.D. LSWWHto<.}Mu>*IyP2MQaͽE@R%|H$gӨ3}Vv}\x`̂H&"8'Ϸ]A{AG_xj<(H<-]L)⨫Q2-V?28Kunj˽F =Gf 6*Mp?>śxAand *S @iD?vHfOQ,scATu*SpٲxRp Cbu cB]V}@ &Zυ"rסPKU8_L[' ;99srf+ Bp>cS'm j՜q%64U+'ީJ\LJ[9ЙX~ r?f#eT3R ; EAZxx~xG$_jI*Nl*[̷N dV"bB2)L9W(oFkxǦa6ɡGz.+YZC@A}s?xOC2>.K6xu{Rtrwdk c/Ֆ_*5jo-$8R _֧~6c}Cм1}4@&yF/ XTb1L0;D@dGǧ7rV=@lmόg|Y ; a+nEHc2a+@F~ :?S> bIk_ <*)_Mߞ@/@=yjqrߖ8 jjjKծ+qYmaiZ1ZcU˿խ;ɖ&+VK5"T=t@!Py#ɨt5,ՠ-Lb'hnYv_ VI/ZD2XV%bzT#wk+1^l=#*>9Lk2|m\1w鱑q" $!i͂΅v`3X4BZkIJ@fQ@ҢW3w"ՑwÉ)/W**>6xӑ$ut5t5HLTyj74~NF=+~)hCS+qa6)bwZ\Ko6=e1q4;g _{0w:o>eaׄAB$=V-Y76FAii$Xyrur4mos(N6;vxYwKL;LLne݂rӨ!uG){S>foĦT/`uPl3eI.oT˦_(.nl f#YFiK smJLEGp%,^=k.CK̈ex7? TjC <%`FZ:|VUͥĿ͵k}mmxnM_h+<.x=d[OC0dQYYiP*pNS@Sr%9}ZG;V"qSj|`G,*+G^fd=>GZ̹ρ9EbXPsI#m8 0g?m0kr62V15W偉 !M̬C?0?KP@MȑpqRF%aN7")rh޼<_jWEy9?.v~?Y> D=X~`5Y GcgExy#.xd){ȗal4N'O%+2Tu98u!1S vF! DQD"AHtI1*V4UZbdZ_nP\ֈJCH C.x3ng(66xuUQr 8 4dDnlqݤD!zҁ N2M2N/e oƿ.NATsFCT2ڙ!w#j2B4v@p%:= Vⴋ׋{hwÈa'.,S)4;v!<$!Aᔕ~}~39Q%KD_zRQ VdMX3x Ct 3AvLιٌi.mv(tjA> PL&W 4Jkk(uqzW?wD~ăt# # T`MA*8)u~k 0K4IY)m,QAORVÎ/v' RVNT:5=t d7Bg0EQj/@x38 ]i7j+]AVvaU 3 4oQC7Lܠedw=;QeΖT=sOf&\Sh*V5ڒGfOf58X13-‘wusG Xr# }ri:S{G y DhL}܋1jT$I)Ћۄ~᝽?뉝C7hIP=|S' J&5鍼eТeF$;>%ѨB=Gl晚/ hx\@/!6T .rZJg7TAu*s/9O tG`3ӹZ`؜%Mɫ+~S|nKJ@V'O/oq:C̹$U{/㏹ ]=6] Ö kkUZ>[_k,9iRluY(w8D)7|-[}هo$t_ y&yU4ߴOp4i;ZJ.{y9x1@qzPǰT~ZoF6HZ֡GkyٌRFRђn5VWQӭ8sLocOҢ aЎjv9-xFv&,V4ߴVQʥ:˃ڷYtyb ^b5ت^jioO46 $Oa69\iFcPP{JkU5IM=@N[«wbpo1b"n{_=$ǧlUq>=.D!"l8|ByS LS1W)E%?+It*]v9!ג(+ϯ;Nэi؋BĠa#r#`(،w"Q5hV! iUarĤĪ/n&#ӝ `W1>{Vql}ka6'8򸏲Լ/7"K*hnA:?E -(n/"FSZMpe75xS➫+ 1)(u4=JFCHTxM)zX6|sQ)&{ o(&%&{xDbu3Ouaw2}<@" nB ,ɘgRtr6.0_=uZa-O:M\\MxߟTo'ӔM$@Љޡ/XUANZ(%TV#A,Vr3kWB} u_^r/?9O4peL|Ѭl+:\`lڍ ae[)L`9N&-YZI|D \. tT.5[͏\({49N!~وrY0Ӈ?<ၡQΈsm*eFs,>r<֋G.'ˡplugDnYt,՛F:`^]#5 ,zr\Tރ_Lǖgt}W?QD_S'?6C nwT}m ?3ɦf2xCMOzNXZk^Ȕ)Q?jt~CQ1S% T%j7božȎĤ=VEeG?  Ʀ73b)`ޫCS5_c;RN^H29/O"r vH#O-ߚoI8 6G;>o">=|겇*e #~Þɉ4kvI+~$A3z>2p-N, ];Z;%:r#A|h#~nfk ǩ_(_/,h N5\NK~[?h#w b(,6z2mZrr)I%mN("0&n!6dp2֡.o06̞hZ[m==gP^BOut]ej΁.f?zE)ËDBH1xCpL%X WGlj=]:X s;f[N' gX!x!t^<5Ԉ5uOSn_5b~$A ɚԥsr&udM}TԐ~s h ڢf !#"g$_dpP9N(,mB.p1H!Fd []v@J<-њ_ْ'= `HVó"A#@:<&$_#uϕ=bF~X!SMȅ9-ij7'6]ވF" ]ifpQ m  )y%Bc(!#ƄgvZ+^#; O}B4άYqEpMv{v5w<UpGDAˊTrY-ȇi#'U3L&ZR3FPZOF1C:%_Kau5In)x/YK~')X:rFjZ_!h7dG&%AzVؑ=«*2ZQgì k4UC S*h X6jjQC o\]dMd44}L*$)'st,4n#S~e8[Jy,O݌'NJA)BZnO;O &Q-=7zW7QP9o+>ƺ׬J1izjxBֹr;&%Z&ɼҙi5p$XHG6#Af惗 åU_Gܯ?3)z ]B.~ a$|*W+n/kb^qFayH4U׷ / siBHhbj3Qt缭#zyaBQ9]l)ƊF9Fn9F ,c/-y×R T?X[mQ"5j9o&@'co7pkErs7l64_[a)JvBk tƏ^#n; >si EE^g\OۧsY%-FtJSIR"7kiv`1]T=]`_p݊Qh%8,7mNjS]Q:Ii|n~w8dF~TE9M'պ;>Og:$δ 6gNN~ zMsԤRƙ"K/U f;p_Cݠqz+|Y7Oe klF &ťW~(6ű02[ E 1>4H'/^Ar7=4s%Üd۳gƅcDNN9naxQ|4_؛&X3F4$HW 2y w)#j 踟B3 ||Q~ ON]AtE `qEWRI!_ȼuF;!QwmVk)_he4sۤ_W:vc3OAy3ҺZ2EJe.E8X(]f%Rhx!9nޑ˙ktm'gHu?~T!&wz1NȦX* 9XmGh֦eGe#*!]o&e~oaq,(:GqZ|[&,_I~ 7wىYh}ĠٺVQ6qZ_.4rZ'p *mRx;hߨqEʈ)̳"BGR)5mb3 tQROvCN-GLU%0]ߐw!k, #/iv<2bl-$ t  O--YrڟuNS:d`wy@i(:=-v|t*& wъMvJc܂; 4Z%j P*|V3oy)9$;0zP1B"'\Q?,4Y܌dӎelRxp b(c|`΅ 5g/`e3hbա6 >u~vI/PspjQDz(}_+8稖n>TN5BҔS~"z_ njw % kkJ`1l=$@nV#Uz4V)k׽Zʲى8`lG`0mS^ilP+Er1Wy/,16Y`ϱ*veT T1}_Pc1gH͕2(c7ʍ_b7Ic6E̮OˌM&fYrS# Ҷj&9O?#y)$/qsqQxҍ4W9 kto8u2ᥩon ~9inb߮]!Y'_L"anJS:l@8_yu2_%i;e 陼~h5sQ3ӮX3"h~\tgCӣ!4xCOS-9j&ӫM4s3cdta}锕L'[m6tAl1`2)_)G~ IwҐakȄsr;M0K=™ o'g0zzQ3ecȀoɸcr-/ > ~> WW\*¤PuqrQUnl^B5K&K `OVCB-<[0ؼelw[y*|/šVttoMfrp{"u`nM[R>3&^-xf [Z(~r&r0z#* 48~ #!ӓɍ"˝e@qje[EPA-XKmuDIz+7l9><:̅1< jx]3eXc,iwƠ./ɍF4mOP(}WNI.wn)[In/{=@cDP.wa(8G*ݧOntyhT}њUQ?u jkЧ/Cl9UȄ Z<0L1ǂ?sϘnetSt$4m=2չMHڀ}gOv3zF" U ow'Vkn;~Qso߬lfAPuˡ,#^Vg@:͹U2/m˖@ ȴYzERIzB2ZB⊧c=$݉<<?䛣\)iy;O){,C5mdjbo~>{~>%z^iC^Yi)L '(+i08TEx4|Tb錷sdߩ mx;8v7PNtEKkz4ˉun[_YéQhhѪItkēɮc]D!I1tV7YQ@*!?x $>";;=CT?5'1-n?`}~'u_xmv0D8İ҅xw7gcӯlz@ +V!{.N5LQ[ 8M̐Ĉ W huWܫ%Xb4fZ87Um5-H·a%G[yӘ?7s15/S>癚h֟uUET_X _砫 5+ZY*-0]eЊ^?,Arx|xeH[EToBҁ\=䵒37<5G)4'I-˓{%#܁˹ Ғ'ImrCXv;?RS|ktzQswwz\[a(SRP()$'^RrCFr[ ]pF ѷjiPmEնYrKoj&Ne~ɍ?\N+ 3]o,5߰.N&'k>pL[%Sҹ4{ƃ*1?W.I _I:=aRPO) ]|)tyPqꅳSON5kNm zYH>:hW5ov Mk п8X]ƩekӨ~[wғg t Q1 g\uT`snm":n [P,xIj?}L-8c:p.Op.S0jqp65:X"(Mh,VXwO9ga9wrNx`+%dNP2;zbEH^w? $/o ;}QJ=bbmt䢟չqNiwy1ΥZҮ%(pzL5D/Lt+5}#Hm 6l;3ud0\Fw,!Yl9!S6r@8_/;<27$_4ͥ}3Eŷ҉'|BVȄ$ȳ9A)+G+\_޽ܰB%MX؂ #'7ŶV]fW#TƤ£3OgJ>?7-Μ'Pa:m\fuƕ+#i[( /O&&ʭcX|Me3$1ị/;x$1Zc߶Lj&u^Z g",#J2'GFo$Lpuɏ˗mZ鋠DV>+ɎDJFJ.%h~<*R~yԣɅGS2ZQXJeyI22#3%|Z6嶥?V{lEϿ ;K."໨ޗi,#;>HnbrÙ] jW(c;ݢm5f#\vPxt^[5/u#Kп@ˢ>_Fn%QFPp1ƶ[s,޹2\lDj v$BA0{n urCAo|5i;3.VED[h!Cd/sR*tmuf\wY!ޒU궴"/E_}U$wcV}iRJG |9.Q Tk_:%ͳfu^2߉E R9][5tNʫtYc{J`loGzœ$z)L [7H<$]PM:ǘ(M3>oxr#O;)N-GiG 8r'V}h6cןzKFpZUŀY&.HT?g-+E%n:sid >Ie t BҦ?~i7cLs̹(}A Pw0 [_S_.E"D[@(oi2 5Ng]) ݖ2NebА3[ 8Stqex2IZ"e5S,x„3oYVji髹RZA8zQ]"5sy?vOlޔq:|{-yH!z$f3S?(xgn/5O|;gǧ`NGm@~ _A8Rb47akX,Ftx-Pw훵yF'r?Cmlsn4e gTGP½ߍ@4YɌ,bQARRSr𿒋Ns Q(g>91Wv@;:#jiY?8/VTd"ӌEXTS"(ʙjW"8;'Yy!UP{eT=ƜC[kNg"|f R]40|& [,H#qH8CH# :1=Loc!T#1MӇZI4{Lp>+;iU E6YL5+ټ@q]Xz]Vw_۰#;o-$5,BY4*!e.q?BaHJKhOg)B^o>7Rm.Ս$>KsNQkd/Ķ=0P0cC1eQ:>8 jBjl02B !Lz9mGrNSél2-Qﯿ3Bcu-^H䧁8:6OpE:c*9]K:LQ6 )&[ffaNZ:c@|@֟IL6bBQёSgmxN O|s2zǬ` }~ hNerГ( 9x ^׏|cូ \'6E zrq9GBDb~x&ˏ {4Z_@+7h@<ĸ\1 7+~guK (:jݶkֻΧ"O3LhǏDKlFi5J3a8"('2;vEq(gm bQ J3RQ=-&߃1H!/xV]p7CN`C!5z5Z1 '~zKPr^=MyppIx(šo6T=ؙף_0c*z_f 9\GW=radꂏamxhOTKcILq X;]3`Oe>2u\.$mgWefO(;MNʻۋUT-5RoŶr=X*.caq <{QGKϷg;_"<]1Ep3(l";槟L|镙. :6sgtX-H$^"BX[Vr ~=5q1 2uB Yt0 .{ A4ĤOFi@S,-ј{ cF[{"Gkp/ u^5h,5׈f> 5g-4kJ.u!Wr"B(fT-qF$ Us}E7ӭ aĩkiCÆI>!2 f(VcYz:!Jls0Q"|nݓѾ&j3Mjo5usAsI.*.Cv,GPꖸAtͲREoΠ=t׃2r{/ŵ_ =G&z*R\|I X}΁|:\ٰn2 ^y]:J FCxnE77P2`L?G4 n*ܱa1.G8Y2>H&|`c/gI4ww*R\ǝ~Ih*!iL2/Hx%5INF^01_Znw!Y N!rKy$ip#u9ShqʼnûR,k i՜Not5i4x'/={R@$w*Rot&BG8=&O M硍pq#? dyt1Ӝ+rVa?^GSNoM@qш{8XKk "ݝ3l8gM<34ȾJS9aʁ'˷\D4zX)> mخV' w5qrЇ1i ڱ9`E݂cJa ; 䫒1Nsj^xhH%0!~Om2jbbVMnhN=i^ zOڻfxъg?9r11 v[|ɼwCd0.GQ#PXUiUê3q̓F^˒)m46h\Az }Oܷ(jM :0SiMaYUEԧ=gJ-GB=;wOϖ.&j?2ʮnAADFKJB9twwIww7Hw=W9OgfBfR䗪){S2R5DJ_<6M3<5h`Hy`O@BEgP?ǹHF-O{Aԃh3(*[DsVH(W*!JfӅeGfZ-Hz+RJyyn~sfj-kGJ6| _/LWֹ2I\jBFWmoGӊ|48q{v|Pg"xї_Hi-?Y4#P[ĴrzUX&~зV\+m|y{쩲=,oT>IVbʗ/< FkGtN}0wѠT,֠Uucϭ~{~` Pv1ShkcnɼAԙ_n놝>>W /qc/LCȌ6:~e퇬'3*gBu #F˃5j#! 21Ӟ[D 4<뷘?1ƒJ.9"^8Ϲf | |H$5JnI J;(hmt*^]=uUL8.ojIIE@\aLUӽD̨'1<8;ۭ=ֶD"F)0)POxX<,;o$[ b̲0PzoW,-onp%m1Ot*U-o|aoʤ'A.3-B$Zlj%Yc ]9^7MM9svvم+YC7:Ջ,L:HQpJ/j&+3#%N_-V q~3θ(JI f'nC'ZLA.r2]Уs5R)vևTGJ NbUhҿɮD:vr-t?n7Y`K;A=rmc@D3Qw<Ւf9EVVXG`zQo1f~=d4 : HNm4vĬuώ2 [k!@c:^J=٠x)cjj-'-M%2m*CEdlj_&Ng3oU1tEklj>㑟% `CR,xIxid_Mz SB{& . tT6.qc-?uy8T1T2vޯ)rDEfɇqM@Q"Xp hYʣ bZlYm^Ňy.ԛáV{2fHY~ byB5He>lU,֙nU<⾩(:ʯ;'b/3ʏLP!-~7R[G)8[& HbjGnt6]< @BB7r/Fg1j.OՉ>njxU.xa`r9rjK[5=1onXV" /D+h4e:4)&jjQ?%fAэǡuR svvg0B4biEXߵp9ivݿ+mܕ!wC+mVIX"[']_dc&Zq 2d4qebr &9FO\-{3K4s}V $B FLBG%13cU#Ti߀^mOJ"ЯLKߙVU"G7M 1%]FoJa>,+\ݳj :9?&ڷ Th4#uI˧/Q2 -VY7a|ȜuQ3g­VI46;>k]j. ݥel7lvcxˑoi8Is9=A1) YQebkiz+Ale @T!jښEU,wG ]wG/͊@˦QǹSPhD {5*DWI羹w9j7 PeGr_eͿ"j) ^&M2E{h0f6|y hf#%eOʩwT|#i 8֚kfw9Ov%!pG +R$Hj)oო[WŲZ5G \˕uswZMZށOT汊BϊYJ5@q kǽU`T7*wMԞm6qb:bVM!?7751t;%tIq3S4YԼ'[RgHMc"г-/8* #/_k -ؙ ZV1(b'X]NC+:$9&a@CPlHi+GI ,LyOUb]Ļmg OΚO?fbO%)O21F$^P 2h8hE Cr~s%.A$dvg}-380DmCCT$E3ER.\]B 2fԃ@\PDӑk$Ҡ'wZPuDth"-en;X?|-_ JE~UO2S{Tv?+ﲯ`?f?lELF0eF9|d'Y7-5u8Q9nu.1.o:hD(MOO{SB+~5WV,PH\,PDwvNM3ߥStZhsO[JK,fdfF*Ԯ45OK1GXE{' _0vw4^ ¾Q/aEfޘ>eʼ$ u7γwX!ҒI>@6.8w˫+kWpaWgdo6 tVeqKfK B3WoԊdva+ʇmTw@{?;FHUnԜtؖp$˹̞$7.k̿琛`d?ɚm ={JKi{*Nջ ,q5Zk ]썅B$F5[ \7 woƓ\pn}oq/AN![*??m- T}zf|6"x۲UDrV $Cy>V8dREgڭb3/wm)HӟBT6?7GjXKDMs, XEBp\pFUTZNh9· StI5eԹZ+aϷ0%Q^d֠W0c,Ꮬ$K~2j-ͧ= a12,_8FҀ.npOC?\'Z(H]]Њ좣Jr7Suض'7ڪEwE_իȘR<?5B1L $0 9=?[` \겠^W5:=LW!mHzL]3s{XвwZ>^e]" `RqWP_䐠E*} ī-k>Οra-Y83%("l1PPflj]8\@r e,Uw~>\~fÍ/+ 1ݲg>_.I*@}4p8IbpCh nu/"97l\Q9$Eb4 [ɫP iQ(+ 242kb;;gg)?,h(]^x?r]R]>Q8y%FAMm/5]7\)vۛEUdO϶;U~T<)[.rx1Y(QGIC^ߘK{4Z:1NPaOMƭs7Lcѿ( rO[ K_k%>Rߠ^c?>kH"n(O]U,l<.\MhA`EgS. $]nb 3W" Z2Sn "Z8X& |zg9/]ܑvkw6̒]q'x+l=;/`I?MpI6RSwYߡp/P ϽiMȥ{w X& J᱾_c|ԄfJ1Aq_ο𥨱/u{X*InkŒJh>Fm/ؘu˺L SK v` [-Y Na%{$k,>asNЌN7sPA-R5d~|.`<H:fjRᐊ +"GIDNS4 B#6뇓)~D@bѨBXo$Hư*p'!EBci fy8\j?/HEx3ٚw|kcus8 |TGN[M {~Uxc@HҦj'kps9HRg)Ro_R8 '7&g8FlЄ"h8Q5D \C8 O58CgtT@4W!Q4Wrbs2h,`gg' (-i`}:HFq8Ǩf j)1/ YA6mǍgLŲm]C,d{o[`ۓhщjKbг/gKs i:c{\%{$﷧;KIsid 93 `fsL8x|׉tiM2&?lG *}{>q&b 1 QMiHVh}>eU(J0sq[?a,m7iSM;2@Sq1xmx" CkN[O9_YGk l e+[+>aƵqCԤ-*ҁCJa53]WRC2mdXs3֚n:paf颗+ ˕[ԍٸ%Д;_CJIZ^҂v8J Y%';X+A"ՠ1~zq-:A%YxLqs⮓9\:PC!m{p( 2I:_RO=V:Us0zɭI}g]%ڀr>T/J9H=~U}."<} Gx y\ѸA=BFV fOD!1.i0~ Nhgk|G'mM\ٞD]hhx2>ߖP΍Vx XH(k<$ܚ|B2%xel*ulWɵ1WZx+Nw=Nm!^OZhKZi߳:;%~Ʌy ^oGԗKz'nӅ^C:> `5[a IFLByh. zj2A Wet~f1tur#=cc~+ZsPGMYM-B P WG*2b5hF91JĮ.Wɯť;FОmފqmbSGL/U䦦V%Zs %H]Dc6u:(eᮙTnϻno*=DG܈hG%?;i5RWVYw,le6M j@vLK x v2 `+'bBp5g?*8u5Ŏ;zF+=t[NCbj7L%#jivn=r?o:򣰌|eQzGM@艇#5ᚑ)!olg:#Bhs=X԰\pn>‹"{Zҹ#oߓAk5!%hZTrr'p eck)upQ"?KA1"֞:`0M fEEM5yԯ|GG<{Z5UZcM_:7H8f9-0l~O#ULLz;__u/~&YksJiDpijj@Olg([$/fQ9ȥl7U[iқx(;*>mBlK\oVH{)Ÿ MĆ;Z}#4pRj B8cSl\^p6s2n@xg`" u}^Viv439]5-YLK'oa궳L@6:vrřmOI4әD:uhS(S~sn-2ؚ'jTE{K aJF}hQn@S6HeO2%_` qe~=`sV=s|K_ + SI3+)SJ*~D4j0߲P J1sZ"\;.o0Y tNGzι?-X$\*4GźR ЧQmN& px9*0=SQ~4)DH16i!­RccmZxh"X&݆O 9@;#^" xƴ k̷H|:~{}.>3O zSys,?l?5X<í3:bBpweC?ߴ.E\)%%oq:\e_| A_o "MvvMvP ݚuGzrb_B?DW6:R }7!eZvh˓ms\nK;<͒{4;5uah(>8ZwmsP`o:e ZE?P3ZM[[٫ !OcYR/ˊ(Չ<ܽc-y<2@9ǁo DbA(Vguq8Q<=GB@KhhܟSILac9,,fOwdEhyS^3?c[ nnG,H鸜w{R3/X_ {XŒkga6|O$ *ީ]a1Pe>H(s7P'*?(LwƆӖP~r[#z B5-2cB_;lc|ͼ jN 3Ϊ [;4DI;fP=+x'踗|`)>.H@=N*nH2pCk냂u Fr&0U󝴁S"?upUR{0T&!*4K!+(_bgZC\3$^i拽:1`0Uhۚbk+Msfn`HH?GJ1W /ɡ]a]:w4_v9;0B#׵+T9 Ȏk3ʞs[)y(94fF6 _{ks)r((G.O-ÁSV FsawʬoʅO#Q? D3x<}m#UhS *”TjVcƆjHɝ1H W˩8DCtLJ=ziq}ԒN;_(ܧl9=zy*v t>с4|ڸnsgOIXEc/Ӟf3, zVDߛHFh6N%5'.Fۿ u3udg*_PF' NP;Hs{ iێ= C;HT^PMW#F_=H?Vv635[m3F2!&t>i*8uOTNUJç^ gcs _nu%O^ +wW/;A=,-wȳ,p򋾽`(qe#f͞C+Q=Bca0`<JjuQ\N:c+B=omrgNd#7ZJ%dsaNcAa)&I;-_6!+:sψu;9XkaV>zerѩ~>^PC>ȹ&$$/,nӪbMa}4 G0 VV+#m, >Yh]D>m/_UqeSx1 %v*Thi|Hm@1 _e*QB#)dn _5LFsjdA5:LNN --wتb'מ.sRyj^~ض@<`;w*0]J Yx'V,\w&=3bkgr)Ɏ>]x.nqk$}r@ OdX٠{I^k.̛ ϐ(.z̹?)LF(AGT\=WA?02eZt-lީk#-rF@ݘlf뺥֨adI^K3Q`vW  "aZXi#+*^KEYI6CЬ@}bSv Wḍ ,}9"Bw!,ݑx @ _ 8SBP:143iԇTXcStC$/ݐZ\%}hLdȑ/H)b?>ؐO@mԱ/|9ПڼͶ.@mEKrSYy?}}9<\)kzHdղв$Z5?,_ey t2B~Ik|V^5D{s3—+"p;TҁǸ_a #{0Hzd2(yt63r )Fe:؝[Z >/&˜!Զ;8f`Cf `?Huc޷6ieR塽$vyثKnf>f#7/X GRKW Fղ.a[ 6F@D3@MmwFh5Q,Ck;CL͏E{6tPtR0t{"y%mWNL@Mmm>3z{9WE8d-ȌF_\*Om4f^-_cvv* h8[TO쑆0FY|(: {u\\y-Vn0d >} OY)*7!o%q7jYסi߿rW!1n&kDSA'B/ŭ#">P]]c" "YוGM S2}1~h\aǙAn/ݵkҚjʭ#rL4[f*QR%~'`#)G֘s}ZSs7aMh(<鄮qh ֆ0AZZ(dlsL\RL-/Ed73y(sOv\^+ʜ=pN8"i7:-Ⱦ5v5|n$6nG٠Hw{WzejX?sC!J`A:5IH[P0:ܴ[v78t$zbxFz ?@,""zP}9uD>Q샗+!#Us jV.,IRcAR!pnQ}LiÉa4 O>tFkp_>.F{W,FpF_ @;MkUڶ̔ ꋪ>Vjz&hbƯ\ȵ9E-&-BH1i:CB1B3]p5F36R}(k(PDKq "usCW7Bx#L0w[$o_>5r8_x+zD"CH6.<0FW=h2¼h8Z'X4@l RM8}޵m6Oaq;{ϛAE|ъYNwsuSVgV Zs+y+a#*}慕0 u?&#KCQ#tZlċpݘ)őO2ݨ֙^p&e-YL/CO|'A.? 5R :v C}dA%I#273v"w0<@q" 6AVbĬ(EjnR ShRhװs=sǏT|cw. 4BG=QMfEJv3@NB>lGfi&'($AvտQJlD+,dL6r\|itN|ji|".f5g]6,\,]59N.V76m9'!J0|cmx8$aے<4 Zay,ߓOgkyZ9Uh1؀(ʺntcp>8n螣s6|qr:aDN Ӣn&3Ձ}crf| / :#!`DW / VV DLXUXDyմg$>>ts }M%c)aɢniI]"Y^.o_helS HB2HM1wG ,s- Oxϰv9lIٌK/`ԧ@X_Ӷ Gh%/C-@*;>KhmMJLu`qï|7̄UE!ߍtіæۑJɲmVwmkslN9d^^u'8*l69cR hR}yzZ*N,s,ާIK s_ mϯzpԁ$ktI̭ r`kȔO5iVaU .uޏOړFs B0u1cEis1J+`Fa%Y,p:Bn}'''&9Ў:al-_GIY![r *x. sCqGH9 /z ԮEEZ-G Ҕ F wk'0(AU7GV)=>]o&|1b4[fY:^E∡ ,5pokde-7Uz:Ya]E#h]WKW5gpӆfXXR-RA{07[6]6’cٶi}Lªrf0p+zd7iD;m65 #P&w 9fW۪Osu툙|3m\ԗM?^XE\g^G}/@bD"M51e M!;Hpc~Ih ٝೋ˧fguOE'x iqݮVWOu cV1\qdgg  ~FqvC_>[*Ghjt:|,([6^K"ΫŞG>BK YMD 4pulq—&/la.5y8zOlS79%Yb3ByݡVg),k;֫j?دVk꜊԰~l E(?;7>B3Syà&vCgec)TG`s^p#'+"VȺRF-!cB[IT,FC5a MJTd:[Uz!gg>8'?US7i,?|J Jfd}ΩZdAjxeݳO7eF;Wq~/O4j!o~Ys_YXL; 婈h@ljpAi贲hb7訫Y Ea4V4n8YRֿܗkϤYȨۉr.'- +nՀajP“Tg߅7&0qze?u*>35[!6Z})F0] Nۭ}"B06cճj[>R ! -+._<ԁ~2YnhJw.P-2~qͪtT ̏GOjT, gRBjoXiaz>!o9Ѻ2*{ etDg-.@{.`sjbNRs4s0s1P?D3hrM<:E9 LE+R!16)ӧ@vũTRl.i7OٛZ\,ʿL Gy^Yh4 s,ӦvXjdisP`,G:N&A[<шaSxe= DhLɌb$ٕj!Y4+@cgf%,%~Њy[t?}}1ՏE6n)26HZ7Quz0s}b.Vj[K 9c01)[5瘬:8oNd%ԎjDr@j8Tpӝ[SL^9!)B!lms+\@xDdlOh")h;v܇tދ;[+^Ds7,j%a>m=x!U(1z'z}ѶVs2x@[O礽 2pDc3l =yWM/%ځ&<=4i-]/\/zAM,eC'wObu#4l.0f|'U"C+ͅxNm+;d!U]MJ&`p6.%Nj 6#e)qv+Wi9>&{Ʒ|Q VxX *H 1R zCb:lLx+OzCCX$(>oN Uӊ}e V3Gsi(:0|/n;~zEÅB3ē}[pJޫ KꖍŠ?>o-4uRbf\c](+GTY|rZFR,Ql2*~d$hDaݓz..v&e#_Eʍ^up"@"H$*u?cr|K Oͷxq9I }~,2ub:Z֞=7E 2Fb5qv5 U ejL@XP=^ #eGٰ-iYr/2qNx.yPijԡgŰ%s/]˶QFu/J*̕^ٷ ٫k}m2㥌hZɂ>k[ =r]'AQp+:&/Dgy 6n%n%*?Ƌ^^ ,ZbH̬SdS?C1KWzyc0m~ncZX/<3jdDVuqY0 ;4`A%"Apk\$:0[B+.&2 DfʢK̓־+OCaq7cR((X)#N2]k`7Z-R7܇ Ύ١C*S75AwZnF.(ʈ=q1t}evTdaBB>C-Z<=z.y:Y?J <3,1 ÇFYпl>dRթ>x|lu}z^ N/zI Ωv?ZAA%=;$J@k2|U讑f%(xJ#51kO0 N "5✕?3De{K=oG m7;ȁȚfDJ0 i/W_e @_ãs}{geSdSP/l7SAUO755gT9Uk nF}ڭmfIRo_w}ͷ:׋e^r+'6$I.Dq%SLrŇ2]ilQq.pmW_a_ri~8:Tb|^'ʍh`ou킭OYsqb&+ǝdtdd4=LمL%Q\kSf7K4tF$~K[⵸)$ ?PP;lWʦ&zJ:_EFǿF+S)X'rڐKU@һHh W(w{i"a}YF+ GɅغ9^UNч[Wq!q2*m|Lrtyq/<?xb{*sUt`k |Im* H79ӸYGd).lʿ8 1Ј_SU_[5Y򞵹ߖD>I@FHo%s~#77O`p-.-5 e5>Ua5pyŗH2۾!)OyF)(שMAw/~YoQpf&c %Ʊy3BzLX)Um{Bw uu9v??¬\Kv9& n-ԩ2yдaڛ);P4JN0U?dht b=~qgW[>{hjjb-C[{֭H*rZ]1kή٬6 = bx@1h`VHͦ59(_|}{5+XSdE~ ݦ~1M@W˷ݯd6:L}c{ڰw re"Qõ $f#ڶ.,GVrp,5s.ຘZlQ!Y66z#?W5%V:);Q̇Ǧs%\e^n֚9C6pnv׶Jqfj.b' 4cr?u( Lq["큣_LķQMMkz\CGZ{:rViqIMPҞ|sR Ӹn=4%4 `M+G}lxX'MO2m ~Jb #+KD!SprՄ^m1eF%@9NZAn}rC xO3 _61o.QvOnu&ý>2UHVo,OwTT |0x>s*z`.k"_mv5T^Scr"ϣ'x1-p 4!@XBey|26~]5a J'ȁzy!jױn Bua+s~}Q9e' +TOu}a#|V _kw֮Ex`ݱ?mCr;sp* |S HfũAoϞn(Z{NQޗS*\P$=BuR,|c~S{qב5,|4*Hv㛽6 Hֳ=gڗA$ [&$·b+"1& 7]RGcg)¿SΌFv 9g-2 wU*%hz\r%xaSӝ_;G&tj^SŦ j'{ .T{sF.GnU?cM鱆@b(,{̝iZ|hU jQEQZ\~Kd*!{*fٕ,dLBvv9s+aW~pE Gt ); +lu[E^*(.(.. @ vp]q3'r<} h/uYb G-kVH] hDz+hKY'-qWAL\|'mӆ- giَF1+oW| Oe3͈"^wcRטQ\h EPrugcfI*;:џrcSeE[0"$%_hSy]4_!ظgGӅ)E)}juUX_"CCiK^w]u9i!}`o.*zQw50הmܣ *c.PTi06_\xKxݳ#*18_FFDOᅣhhì璉rĈ .Zr}lEgfntNҮs\UE^%,q>oJAW^.(SonõSf5X̵0 @1*\H=[{w1٧nSLDIxN?Az`n ~^;|iL7#5sFTfH$cG!"RKQ,h4&TlE?xQN"RB|/O]n?K+n/G}e̸bI [b^]JW}4GntQÎ\4ԃ 2=tОb7pB^Jfg%8oS\hFT" ͓"n3b';_Fm}0%Φq /}qDb,OL]i֡M|v"#BaG_ue4o;S+n'QtK;3IAb,E|ZdJlÿYf7&jDiqRPʨIO+PLu51]!!GǓ\cS.3θus> gv ^j\9![4~n? x4tv6m^VJwM QSh-ɻYe$Y H@=蚆YgSVޣ7t6(H@ ܸ]X(+o/-U6u- @u'pbrtE} 5nF넖_T5 ,F7e]J2*6EH~vKf` 5ި㈫)WR1K>adiKF fQ}u>334 aXZ9dx׸-ʖ%-4f]ͻJcvfhV3lj9b506gp)TQq'+몑^8w).%^?#$9}tpt{ZW䱢wUXD5bs,)Ɣ|٥xeáb1`ԍc* #(1U{~x=WrF|$-ʃtmnRÛSwѭk>Ye{}/RFghNC!VB-ި+Ŀd_N sm5j/>[BN;Ejr{xz?;H"}AGJRCmI_ gŧ!?Y@utKC¡eܖ=;(Il'^2o Q^Tkyވ @y/Mqg/xhx-X nR\ݪ3ާQ&?OS8 >](j璴PD{-GN8,ķRa<5=YMf03Aq\[l*mD|L_Dp`m^sL?rXI F4+Ϡcd i#hTQ>(>)b3/H/MԩE‰-; Kh.4Rz'N_W  gn,N=s:dJ֜R+oD@;X޵ T@Fa$_Z4^l L(s^yǣc^r_4Su E"@x̔ZfZѤU ma R:Aov03aZĖ~/tT I%nٍMaT›*Mk?5`rsgCRroK4( UYmЋ:`^`f_Hx ^C*QАJG7˗ y;>#9IӉ=op`<)? =?!x@' /Rl 1|p! #%5vfjğޒ մ]V-!٠H6OmMA,? i U=260j/uY}I%wQr ;Orׅ G 3)#ݏ$x]Ӎ(5s˓؎k, neGM lj"0cћYֻP":$ڐ4@7EIHD 5HjW <2X c;kSCt.Y3E/Lʽg ,3D[6vddr=wVi4DyЛ 3lJ.[K.XpIcmf=N>^P2B(tۢĦns4Ta*$'זhѮ7+/LbB4bVv2ԡ5Ji,BH}wA*eq|{L8 OHef9ӃL)̃$!Nt/II}A7.鵔ߺ; PQv'N?Wr VkZ]`ʙKo}W;<;:q癧ZO7Dy:'ӀBUξu;7]HTM⦃kJ=ZzvqXq~ZW4Pm[g:ҷ'a4|D>CD5"!W?B&?ѕ?,\ ryLMYߨz]n]C16Qv+.̴:IT&˜=jlŌQ$xoG|xߚFktkFC^a^9=ՖOh. ~؍Yxn p%ҲbS!ìQ N|Ip[P+IVe+$\7x>VcKzfwdD}n2P}GBVny\imNl\epռxwڵC}?`/6oQY"/W:J{W}x_/6~W($jH>/])@c3$]:Y:Eu򆳴z.˗ `c>,EtGfW@ 4Uղk<TsO݌^` aFYQ *ڬlBҽ:ҝpM=nRX=zyWZ#E5fn9cIR;Sd][`?B+DFiALxQgT갯h.aY5M20w{Ƅղ"c $eM&3<%-`ڋ&: 'Dwטnp-3A*f`겅d3h 8&hZIMxLX y[̬GpZ_6V,2%Ȯ*A4oqwoX٧5!䄖t,?.>f`\?<|G|RrGRBURʿ'c\7wWObB |e]S 2 4 ^>E0 CՄxH/L0ԕ/K.vu[L7qF)i0?&rpZÚ(s B^㓥YE*ќ wv5HE9Aڐٴ\qjŻK\qxHxdo&Ι;U* wh6vݰ:;=C1̦C*w}R?852ѣ-';i%Ya R+s͈]?4o).VN'"igtcxy]l Sedȭbge]cT=MnXpwgZD +N_r7Bӗi{c\ l%S"\b|>6oG_:u=ЁXT GL XK wTHyoڨuؗ 79P)cNeT  E Q_$CIXw+:^\7n=`J t|ŜVdВ?fe}Y9%3y @k~rm~LAZW܍H-9IuJJjqolFͅüU<+G`ղ@qY #F>ި+u3 <'b+-A I$vًtu؋GɼM?G+0CFQ);٩fZv-}jj/2gpT~5u#G\M**Í\htЊ;-Ig',yLz㉟wM/ӌP&Bqk¹#)vK -{}SψK]_9 LTucsVpWj;GGN!i5fոt'T2O]:k!A {2JWP!`[Ӏt{OWr](/uTh'*RE(KY-%ojʙ01cZeclд=Zn_!Z1 m_J2rdwJ /,6=-4[ U'".>޹0^::QRH?ҢצE9rvVP&@?X窎+ZzHܟ(!2sX)ǎD "!m :H"MDB՜ Y8n>p 'EBS 0__(v8bȆ~\غcn \RK?m>7 LcPC8 tW碈ݥ=qlL!(g)~$UƧUMXs%4658&avmDߋfM dzԹ|`)seD׎aQsOʎhO$O_mw{hXӽJ@+XuGF7];ϗ-'ERd/ߺ׮:̝<)tڋ;s[m m*9)|1i,䖮;I[~3ލ\INt5v![v,wts~Kv#"fLT?M'0Orep(O D[`%uHPa+*r5|뤀\9$\[0 U!y;k(8@V9'I7VLvy>l>AaӒA7Xs#0+S%Ym`Kؿ`:0EPrr.1%c`k:⪇ZǙ1uE;kM%bTL"#䀗@X3̓KWSOڣ#+츸f۹_XU{LXiF7 `"|YRP57ҭ]`qW}/1bsR z%:cNCڷ<ֆq/&Upiio8&1[腟'k azT{U,h8`t$v1O൐UzxŰaGeN7`jCWsO$ط0]yD mNJrݷ,kXnJM7G SaCYu``\=Gdh֘)մj۸rC%AݏdC+]* @42`Fޤ̴ hMڥ93d^aj@ﶫ.CN'E\9f)cV?4dEQoWL3ʷ+"r.Ш*yʘ+HVum $<}1]Ju^Gj4Z Ԏ;~s祬јV!;|T:uZp%`Q z' G. LBQQ8պ'D$i1%gM_.5'xfPB^kgMFCWEs!ޤ=7i9RTEC/s*}A$f+8;wW T)U3*h$Vߨ*;e{~}X:̪囉o'H.,Gyh(}/mrB x!Kj(.1 B/ P,\}vt*\P-S@, =ܵᏳ-۠C ^]kᾪDC[; ZVJݹ(gI%c*/n}A%|I /ZNRExR0%NڱqϞw0L?P\ΜJo: ,ȫ:tz`AtW!fxR%<e? kr hR꼉{ul1E DLI^aM=%1N nd0-coDQە;5̍\]>@[vQr+^0y qxי}H?1dNMU%5K5nNӧXWxhZE;~?k+'kbP_͞s6t1 2 ۔C!rY+%y@jWXlt8xnl`l@jU"IVmp~rۓƛi~nmE53{_U@K2aj uyuY{=|Hta|[fb[3Z(dzG?w^$\ g gY>K]4# =Z15d(!{ ӌz|H:jKTՌ ;h8K*#+2xCAB)J3Yt]4`2ʚV@秆( \Fk}MFJ )clMZSt 3|cskAf(m8ҕd.f7mͻ.* )ڴao,^3|q#c^E2"j#AUӀ9vg;wiӺT47cf) aT)nj\dW'qN%|&=,\+FmOQQSD#pX<ş`=;e _KpSSq`C0DW?EZne(- PB07c))z˸iQkk'}eKiϛ|$"; XWE[)wcf ɻtL̥ZTJ'*/)|?bņѴFy;4ޤ%V?eϚ+R-`P^c +O㸑}{)OYGg(V HM/}J^ݛDL7f/<[l`g4i![i[ہ $4Sll= r*6k04l(XI|Z|/Xh`yEsG["{=ds90G&g53pdN2HdBem0k׫{̻tG^>f ) tIO`ǫL\ɬÓď ]'Z[~}Ǟۿ;t@sm{b\h4z1^{PwDGstI߷<6j.Ym LĽCť.Lf~QI=eJٗ4VLTذw2aq|O_z*xѪIOf۱_if4sPCh{iY/R۫-VubtgM)6h{NUQ@ęS 8]86i7Osx2 ~3C37y<\'ќ酛pT8б`*#xa| Z>L-R(yrBs',UAu8EES (iL"*ȩ~C 0@M`/ ,n_=Ԙ!N=BW?UH^c5mjOvWz-|Vl竄'LEx)Bg/hmꣻEreG;͆GZ^52-j}"RbDŽjCNj1u&иo'H-ErrD_WҔ;kΗj"!:ǟYU]#. ޷/$L*|r r!UsW1G?U.oHy+^'cE6UPZXtEY>6ND'+5??Z-_͖We4Rv?l0 R 4-<&g}'?l|?XP$ DŽ}7âxݻ;;<57m3=iߐ5_RE'w y.*S1yk̖LElG9X1x1YBͿ.K_\] jH%~6H'q ra ݧY&&7VD1~Jp?%X+BS"U~I\YBbaq0/]Rؗ9(Tn29В\׉;0-2ѵ}VΐnY3B_^VyFikߒ3#mW Ȕ mYUW\}ܧ e:,/.୹I1gۦZ/( b򛲬B Օ5 \03~|АO6 aיS*n E77Y12".EJA3Y?*sIvPez?'m7qCJwfryR&uьqDt EzZ6@-r]|@r[wmDy_ԳF.$dXDpOϼzbHimCqL]8,P0λ?sK< jH&Y< ca4v^w r6Kfvvٹ$&GAzBhR-<#woQ_4z'!%~TP;i-x8Wl0qK 7t+6(7F=YRY!%Tl[E@? Z(V߹ou}^u^p9C,NFV}})#nOD6gz+uؑzCXl_Sld X񐯽7X')N[)_}976}B+K~;,AjߣFD/eHũ>QN.C.-+7[`_ʆ[6! F S密#Ph64R[ÓpzIoQymO>JC~JGP`3yd䢶5=nz +T$2ٿsiَF\+Bዔ{ 6.zMObs?)"4i{?72R)&̆%_n㹮FJ-%h} Fŝ8isQ6xKfYc.qΛ%Bl.ys?SypwArڬd0 Bދ^“vd $8 jf(~k .b{K+W#EP`!CXgێXcy|?E+PRBi۵K։4`8,SBH#4my)lPG|R}AQiMe?A|zIW!-Aps#PJ3k޹vȇEVfV QGQSf_"ּ4|d 15)22#Z-QR(u<R-^& 嫳ij@Ub0cg>e4P-ԄQv2Ne8$)Vtg:k6̧| /Cev_{6{ YJl0 t /+Q>Qu%zT$cvtv˧)*79n<䵯^iX\ X*HœM"Wc%nhQzCrmR2/̐3۹LB*|_fZJQEy&/Fq\|!W|J|F"h[bATX{OJ. ]k(x٩-zhE)Ӣi0I-Jz @0r 6 %ɼ( ): >cg>qtǷ# SXv"m?WQ>Y1:xT9MHCVUe+j @ON#<W42V-?+s5K)yb۱zen7g`Xnx V/(ㄡo俞c%y-v!kS2A罗H+&I8/x]PhB~춌uǭ8!6Nb: ]|ek(_NrUϖ^SRU 7\Ẑt>[¸WCyzw_rm1p ={/Twg0 '`Ö/?Zea5>Qy ET6!C|y7bud/a6NMAM_+IRo/7MqpvPݤnZh[ܽ^7"+!@\3bZ~vuݹ ;;:C²R{ ]p+~Lcqє&ZR ,U0/e| f&ևR'F[%َw#ĜDVE*hve}9G;_BoYJMiK) of_k>+ #CʺqH]^<8^/k~/.J-C < 9N4aMF aTc j:c6 SOTƊk|fYy8R?qDiD `@F'1oCM>"J`IYEF͡-%xOP|B'eLP2^33žG[5"j$8 sO }ۍxp35LCt.\~^ z%0 pjTJ6~ibug資:s?ִZeZ ?q,Vl]9=;1 po-lIw_\d{֖p[O) cͤԱOtwd&% kQa!^&꼯]Y߀(i TQ+q!v26Y:@9n[ή}ht< 4J&^e xs7/X=)oxۊK쓫V.b'ߩc ~^#%X;%JdIbEهkQ&Ԛ3 ;ytByoiiX} 욍A%?U\qcPP4oO꽆 ʖ`ZuZv/1! 6DP%ɉ^x"h IE d΅3ARe@Ji%3ⰯӓKBYoѕ;H,7qhk|SWg5_Wi]'(bHW*UlMB&#R@^B aѝjmګf}]g":s% XjЬdc8D9u釟]ӌ4k驦Yu%$jC~lcɲB I*卲'#'ɳư$OH]}T" A~3TYq ,;y`cE y9¸(Ng(¬~@SBOR#鰔I?@+5nҪN!x٨tZ̦Uᝍf)#ƽW,@}{[r]~AமsHf;\)>#[TSvF+9H,DscJyߌrLF*gCkH?xY=?( l+x^RxA3^cSF_=l,;IqP&lo;o2u}xul_MW{_sQKDٵbݢa!q#[!Tv4z؊>]ʱ.5$+{a{ʮmĥV)Qw#?tf_[?liMw һ8STkvOaILwn =$l?أpt9O1 9 KA{W'>eʅk$%tqI =30=Z(|<7y֗lGql#n6SKP7QYR=>*LxP,N닙]BA#^n\-9N 䑔9Rg??V핏tst, ad!s$bn&UC3,_dfsrr_ mqeqJpE}3vhs1)Em]e3ߒO9BB OdxoDkaG'U,#?냊0ۂooO'~͡]&a##\ j#Mi7Rrny4 Ȩ.|~ >T\W F2@&>ز qYHr& ۤG>e h ƴnEkZ%^d&À1HټwGz!bɑ'$?ndvʜX*?禗sѳ#($|cب6V#F.KUVԯdVYtώj<熩OX#Nzm/zk+Q:XjjyKWUgB2MՏ_py,+!y?Dt^*02'k(<-@*j.'&~#ywa_T̛;Pc-2s]^4g-;k$2Z$T盂r4J+]Ey}tB6 cQV[uu SV)6s uI֜C;L[E?4_ͰJ᫗tƧ.#7ڀãKʓ]f$xɫ!7# O+JJH 57'7[] tHS %B@]D[zYG،|O+FSI%XF=7WAf5bBC=?~PnYP.&0ٵt!ڌ6[pPľr1U%t;q"(Cc5ߤCdtK 7\~Ѓ'^Zo_ RO!/jPu<`Ï^SeYJx̷ʕPã=c@{n|arD<g؇g4VL?:KL*&;?:Fl!a)2Öb~R%BC/noD@V4Jm;Cg؎ӫi6`B|<%p^q IԲU ImÜ):Wb@pn:N*ݶf4 C`^HJߺsBJ`f5QfĄܿ$> ^ *|YY\Mf|}0.;XU ?L9w(iF-I١5E -Ufu?@m%@SIkН3݋B5/Xž6IEd_|LhK۠S>Y1, ,]$k(񷸣5~2vݣM9>iرbXU&ZcJ=tgFt! NfqOpUa6sScJgJrl׏a;)%ՙէwfD "- t/_ iUj4[_@!HN:@k0Z&Tb.g`wI`쩝1xfSh!Vi V_7 \\SDfe[gLo:c`PVWW)=;ø[.Α$ aL}\~i>vKT>i=<&/}_dʿN6yGL6NY *HU}͠<8Y#P\o^Οg$Dˈ *v>Ik*Z8qy¡+S\#<{޶:6 %]ゎ2YypBvhCK\~b2Qo vQ,ؽt\%n?p3>E.2V`;!"VF\dYfCU8M4~;)CE^Zծ5e@ttXq̪pA<)u4u]Aõ,a^-LH?mT{Ɏ;l~jj0茟~ Ɛl" L5 ,L9W$.un(ީ.l9RV<ٌ1d͈8ZnYe]z7SGܮ5{VvPo-FQ:V˰Nqg]%#}U̶?^C 1avQVRU':Xw3'&R{x%@%]AօX+ 6j:T6@u9-KbA t+u[e"`7 (Lgxap<ݞvL&A}c]{ey#0QD\KŗR[+\yYgY9<wӪ&[w(Ӡ٦-8CŲ7p4;9}ClIW".[!&xY&j>rtvFa QF%cAnA CILRo;D?-(xi~cI|dIb7{[4?<&|WtM-wzfD6-q6a fb:Ikî_t5o޽7 !rHܡ rEXbӠ%"%k΍;v! ptL œ|[\;֬߻mJhw2-'ƒS/:KEQ{-:ИBD$\!z&_I| [ֿW9J &0N8FD9!@X*\a9."\SM%Jޒex4N+LvY nxKNݦ *כOc,*>V5J3P(b=$ ;ȌZX'qsI#PlxUPe|W=Ӑ Oj.͍6֗JI3au`lI^G/qK/%0 JF&;H"kx `?)mI:)#Gɥ~"+:FSmZ̛qt3e# U*?gwnKZ߮t\'˖|P}H%Yg3)bj uE^Pk^ˮ3؝lo3u[Qok١pXA9T!7#Cs]MAe?;ʰVαT#ht`˂Σk$|zYKzz/(;Wi#6 3LޗDZ-\U.շNJ }?u[W0TGFɮZJ=m2cQ,$&%%I_X.&d> z 1^Is\8|f_MBlB9?Bc[Ѩ?|`vs-3מ=j4 a<=j5Ԋ;hc f#ThQ~Zu/J96_jLκ^*ӹZ䦣HfBR8,yW&mRY$[&w$ ageL#f뽴>f*lʛh9Of>VVK/L8k, S DŽ+1[=s/ȠJ@9`clhZ-ljdZoJJw>!j" õd!EJ됈]F jO\^矴K\rX%Kםّ_l)vރT7҃WKz4̝f'Nɇ dTay~BU*C#yE\ 1DIM'Z7mrhOTSͭdǡN;>W[>%e8vƴ&SB@>l2wZ'WF'J6a%7E/ i7ڶzxPvP*!ZT-E~ѫZr&Qn$ Oadد?"'rW`.9 ھa} 'BDBT}isd+HH0!F3XQ7~V-ϼo6%cn,?Um$Xc>iM擸#+`%+)0S-c'O@^#,MbY=zhU>lIa{j_W][,MB1%ů+qX|ܖ J*k 쐽XdJD Y^{ 7xy8Xh-86>sⰓ='v =[Lދ}W(0lL䞣 N e9Jut]7%4"t<e۰G2M=K)|S,ߝN[?}La= f6yp\e,6ѷ()Jq&c"ψ*>jB~OOZll:ӨZ'ZWdü(㯆~0V3`i+ f 2͡.CQV-HMiW{)AO[q: ,FEԇ:4flR_J8/ћa(Gل[^!9#߰"v\iibBS.T.zI/%2\ӟr4NJ{CN<^BveaMȐ,{zu KTMˢչڇ-K֮ 16dRO7o_+VMwRdoP݁.l-:ЭbIƈ(>-p&#:&00RQ:jBb8~)ۿWWOx( Ε1 v)Xc:m6t *e wxF>H*7,f2/APVByJČY$&ᕭkMyK`ͿCsD I]eD|҆m;Z5Iñ"M׳m)+@g'rYAiDGRς޺ tVB~tz)嵥t{QWEREEYb]{`FE(lK]lͪJ{I#ژFY^& U?',wiB}=MI <R]32o~oba/i.[:/۠7RگCE_DD`H(g 1+][80w ]^M7 !tƸX*q+'H_a%/ ނW‚P zmr{t}M=~K=Q7|WpY7M`adWn+V-@jk/HvW A?+jgCyy[{̲mBwAP{ Z(Kc FET&8" YNfbY{5;,E+ YW'΅_in.sXoim|;ख़$6c7XKڔT#:jfx[j@1!:M! G_rdn{>7wi:@pY ̋ř}#Y:-: 6gRjCCMxݪh9߽ؑd BcZ}Ϻ(l Iz7%D yP=F2<0[J7b#VwV 8.¢%) S=?wgkIoD WݷtwtD`sȰ8Y\$eeUHocN19GV& /íˎ Ìh|6V iNZ=9qUN{>I 1bLmSo1 ՟ěbV$^D2v"-wc~!~hg0i<%egv[n .K;86iK-4Ȩvԉ[z:TZ˯Hfם\} 9k!M.@s c-#]qV<o~!MXks cXpp H.g6r{R|E?+UVAW?U[Qk~/_h4F82s&EbD|i3HmTQgh09{{1v9P};-xH'IL~i2NMFj6ˋ%(Y7+=4iCw  S;$*#Yv:(0%~hrYE_YRhn-\j麨k۹P(I6$r+I lά~e2?LDd~tki f(Ő&I3fimA`hm u]Z/M2Q>b|k p/#(ܸꗨDOܶܢV+OiyGc89mk1 Xh:,LZ]*nNbb.)S8\l]%ũ F}hixAQ灂sOvc8r@Pk_ 6z.F<H:U0}mu]l+qsV$v12q{u`ڧKgj7!Sk$=/K'McPh! 1dC"rM yg&PiVSoi?gp[4S[nHLK.Vo] kZv)x[蓻 kW)=I,-NcDqJl]Ha iڹ9K][`s1U9wq5]/> okiM=j1;v6/*!awEzAO)R^) gL>]SMu3h:1 3Ӿ_؆VirIj 9*z8}g(uU% Tnk ˤJ/gxT)ȮZZ>_Qtm(![2 Lb2:1~'DE.No!H=`U0q<>4!pHgЖ7z |S%wTL,6{WJIyw*2Γͨo0ҋ"p(ғƺ^I%e(ڑlVmZW6J#L٠҆8-Q0Uju:0˒%+$w)k7ڒ{W_]gC-cAsQ`vE+}A9Hھ$?f:n\@}g~CXe(1x 씿cXki-T9ʰkj/ܧ7|.*\<{A| >cD03Al=;/pA^MR5K *-.Ώ}~HDSdQ09pg] sN$*C"OL> . NS ~Ċ /o6y8T`RE*KGz[dGӐ 긕trwrNnP-ٔ=1/@ ^ut3txkh,%@nC .`Rʜ]ex> h̞5f <WھBtNc;iB0?ooJVI&\V/{! ^+"G LMʳQ44mX˻pG[4.O|XB G8̎B#ն2DF#{H"Xʖz:5>F7{Jҳoo?|? 9ŧcK?!#~!p"7fݿsʌ]6ʼ؄T{,RN%Wriz*kg>%: WFi(0W֜@2YCuixH͢4R&0BfcBw D` t\\q6?X'Qy\nj  eA794 >ѱB%x;Fl?q?ehfLpNৄNzP 4 ʉv$)J;1ؠXoxT*F/Ѳ4R'l[_L{ҒǞaש@Go4v%YQA A a]^i}4 AإAti,n(fS̃L;c 鄂^vfve#Q?Y@7xV~d%˱ [.HR}G`\vNr|ti9U9p7ZX .٬2FPΙ`b4 E-4dnX# U*5TXC/Yon`i^B1P X8Yp=D4\/F,[0@7[\@A&V DMZ,,M`,M$=ȺX)*}yP-ndK oʐ"7WVBÜ쑮i>Mx!"f!{!{R<%nuQme7 -!~8gY)i5A6z^Ɨsȹ.z]%J/LcC&|,W Dջ?>CS>! *eUx'+aZT y < , >LHG4zJW晝ߤA3RK-vؘi{7/T6dL|Tm"X 7!L 9,ڕrsؠ@{[ysbuGt>I\7)#up4cVԲ6ݱaV,\gv$aX'noN4՘N5lAlW 97`*KP+Ξӈ%`^9hW5 *錴9 ɅEnsGbKK}ziɷA/jVJjܻf y=ŝІr&kMAFlTiYEITޢ2% `#quLw\1M*?3vzȨ d!:#91~hg{C&S"%SO-'p h0:GNARhFLM1~.f-<@*6ڋi@AQH)THڒ̟-T.)°N\CjbysiOy~b˪u[nd.:qV!M#\m! 50ׯ4{]Dž삭?xxs9aSg08,;w۴O(<)aY~閜F7QI >cuv%z|ľ~ B\϶&;e[_ "FNñZkYfٿ~wжU̩"()?P J [߈ ;BЄ|mF>r0L#`;34= H}SGTbtQPo:+|?=LbE;iONa'Wx&m)T  C8&%I9] g|L x|3bqlʊNm4(3lIm^@7_ԷIƒf>kƊ})!#=`_A`f#Yٮқ\0]X >dQ0r[PZSASc1fs]a-yLKi䑂 -w.?y_bNA6!t9Cۤp D9Pj)6(깪z@-ce *+jR<'!TG@a 6>#kA1>umfN&b/\u3ekÿm2'SW\s-uy2: }Z mM >R^9؇tNJ=p #rR-Pvx=rɴA8QW3Q>"2M"˛i|P绒}rߊc`GZ=x Ekes.WTJHޛ z"',4~\Cr7͠Cr˲ǎMF )Fht5/0F/؟wFt(0oz@h?FBz䥩~{KK[:~{ D Xo(#.sE4G)UXZ^_O9'M3}h;{sn,`i=ϫi٩;4c *Љ?b'B$`Xozy x ^X{[P?-Xѵ_kN(yКM\2g9bۭMA?X~ގmooegm5!ڡ zB׫)FfeCU<:c6ԁnK~JӸ?eOCp Mc&?ue4sr\7*i{Ӭ|Y ocL:~^yA7tk҃=C,6&vRZ$]8fZscrin\.%yp9hEK R4]\|fS!-޾CtIGu,1^[&‚`_REt/8jxN!Hxn3 B |[TҹWou\6xf|t4LE^/n5Ss19-ywӴn- !c&:DMִb+51%: kUQi1F#鰛l"z>nPnc |%5 hv CnL R] ;>k/pOvX=" @&{cڮzP+BdslV%&L%.'.}BAK{/Y;t(YpPnv=}'y^m+,Dhq#Z~7B$&/@Û706wDKqӴ-@HٛhfϪ߷0ds %ak"~R^^ҏZ(epD*H32.q͵c?/dDzȘ=rMPHɕkρZųg_6Ô! A2g.aWpM$ŢvORȠ EÛ(m~ݱT^*kF\F.4H뻻#g=DZN⤠>b:*d>1RdJ%sSs@;=t)*{QN0*E `G+J5J*R[`?S]@ Al*  :yy"{u?9bq_.n6Ws_s7>{ECەt0xIC>H85 Z*{< {rvAA&D/H@UOl&1皃Kf!FRі2zTY S:nݭMlMs9q-.+`)"!Yz9sEoHC6 H;zd 9:%8͍J^ܷ]:D<H|zzrFp'?o$}bZYd }pT89d;(Y&D=)$uP ~`;V71H˺qVOtZv 8ׁ( tʻ]V z}4Lf~P + '0nyYXs>[i$jھL K'PPyA Pg'6[rZ|~Ր,j\\7L7Vsj\@~3/luˊBխ`\$^&zoEF5; B}izrrK-˜.eMʤ99{eP\`.al:+Ƌu#j=]? s6p3b^?Mq$S  a?$L XAIoEPCp~:ߪ#qs[``ft[q6|cNsFRx *.Ь>\]PE1Dg($@1"W[?󌾮 DcUq7LJ e>ld͟5fre1?aft#ԉ>c%g/)޽/ֿO/KZ&@@dbfôk)gѯM'mkq=h3 ~LtfC.lCcYq6E> 18qϡq%^ 7FR,b<|hPRVzrDՓm5*TI@$XOt"NQ^kF6$`J̬S*  sJ%_61R a'zD5ڱTJ;hUk1Q!աiD ]njl`z Ku`64l_W}V!gQDOEYo9##Ҙ@_y7QĿ3@͊7J t_j4 u 9֙~=rdME6 *Mz!Ԉm&58RUEYN L JwRxWb:TN4h?3/[ Bh#7KOx^뺠exoaCmу\1ntDu?Ebo^+YPϡ9Ќ,yq6ci̹>(X䐜7u/ V_J` OF[ 2ܐ>IwFZ;-6Q C./8NKqRX֥ ԀtsL r-d壭*T *CPu1h2`D2cgac%kJr6w9M wEN?lB6x/2 ֡肳qዯD]yਣ@+%(=v {byb9o`S3WU+oqrN(j˻XGlICMSCAܡij>oϙe8=MSy{geY!"EoCqؐسwN&Zqa"M aҰNyt>1tLN2-"+շx[!GXE 0.{0=QZu&da2:>N vg(bz ;f‘*whpǸK>@^6x*C4%u=jH):ym ),Ղ {Β2S) GFR娔GGRb UAc  ^$x68PI8f!ݬH:ĬH(O'=z/2/CH+rCcd\}Q%Iy\Cc Ui1NC|~@*UH2wg z@{2b_n.q6hZP)g+5d\qU]oP, |R(dΞ͉oB_a%GhE3!4ཥ"\ ׆?jq2'3Hm\R-uo^li)u)fN[bx/I-2)Z 9pᡤ:m(g#7FMIGC̍ǡY@,3RFӴwe*,Pqz>YuVYIJ!olg/{Ϊr 2Ҩ|/m#ֱv7hdpFed_W8~Itn0M a. SA N#} 56X߯b9jB6ajҀ2$^ :u{yl<\oUP\W_![YGHGė M_Yd1q?plf`]*X^zը1v5(;I89E><-!.ճVίl $RrW|ǴEmU4 ϗZE_F5_c奯W"uhN)<]WV,3Uz񍍤-Xx5H6&4}OXm@3tcd8٠$U` gŘ Ld5Bl-P+%WASrPޚK?J%~+s"l;pt؟ҭWK OK*Y{"cR 4]d0eOXG~O|VC.:;0,5g>$k)Q\bR^£ӅN?ב˸)Ӂ5k"NlgҸulF Y&@|ca;>+wwu:fIkfqRM+hq۾؀#eʑ= :b_eKTg3|~S ewiImcܽ %T0RO۲Q^ZGEm2H lqm/ݼ^:V"W?0qiq8'e"(.+ 쪱"_wl?N3_M9um;d<3C•MI՘HpgUwFPAҹI]˲0/G}H^xS uw)2 3 q[?^u%68}F3–MyٟENZ 'E;g2mjt4 6LߤL뢬:}?5 \buxqȝ $|;~Cb9B]2m~B&M@s(׹?}2B~H+:XGxcoKgSB۝5QMI+ OS:WyQ[^/Si128NZzZwWINY'p2R?JbD*I1\!tĹsw#NL#$㉗KꪥTGq `(7laڿs9h.jC \3?ܩB@t)uc"FDb#˷۸rc6 0w˄ffrGYC^oF+ Tӌ^T I6 (£d$_`@pUP8cCgDŽ9Bav#BN2n@f7(fAa%I@G_59LݓMO6J\6b~S_6F ]_E]OJI;j?j Ff%t\$gR~"8bV ~VVR~`Ǩ KmԕvJkn$Ag&;w%f(W^0҃0m)ۏU4h ov(=d D 6ʳYոBMY-̀f*)3~~c}+ݓB-.JEܨ|Fs}]U8=HQEB?S 7$t3 Im?Xg~1FGNj X<4 (7O2 eJ84ZdXST@55aicZ)LF?Yv&|1E!-X8 SOuի9EJM-em`k ЦpYy# BG^o}/jNڑ f1Q9O{4I?)8%v M3|-BpC&>$@ vW[zh\ϼxH, )M aGΒ^h?C/#3өX;+KwhTi)JzC!eIr_TeCNN;#z$J };;Mo##{!Z0gZ +bY_Bm R!L2bEm}ƽ0oIlAM'0BgeXyJ.< K|O/!._~Ѫ<kGs3ftm°.d) י"B~8w:sh2E 2h'(d̋LyVC s9QN<$PY5cfܽv$V]VWm>j9U'}l Ӻia" nKW/+?EՍ j[:!aP=9 b)oj/wEz{m6:tӒ|$?6 AJBj4H>QT򟇃̬O޿6߇CҠbmɇ%X^e_1@L/n#1f c'pDŽ5,K@ze;ֽp9c}Aա4LOW=1RO{<>oc)|d+@w +d̍c& 'Bo}CNG&A@o C޷l΢bZPKaýQ댑_7r&Kz|(W4 񫴉~kW@]m_1UD-yIx$ܷԫGC ɯ7]˹}B[X"BP+ʤE+QJ-##s>:k6q]n1Wx1uJ?#wx}i.JU,x/都x(f-[-Y +<ڮ`oh쪱1p"Xtx77 ͏dAw-HhJ.+_.Y)|9~oJԖG,(* 63tS=ZvlQyI>_f6[R.D(ryb]seڴyq` SbUkPߊ¦+!`pGim;d^f!bʚxat;p@|&^5a^h ygA)Fo1?TvQ \ֱ6ϢE8z1 X:O=նFg0Z2tM8=ON|ql^c{8#:96FJF53{0+:Mb@\7b"m1^ ,R>}obrWqQ5|}̝VB~%=LVDfLUd׌ЙP{Plp܂UX Jˠ d5hQUU~ \:ç%7pI +{I1NgD͂[[ LH׸頒# V|q|_üyG#3O]Bk3,&$ !@e|wUV6U[=bO)]Q ҕQ3:e'ӭ[Ȕ. go& )Ax|(Ѻ* txC< :}lօvɻ;N^5jaϠ,r:@aP2m+Ie{P7b״AA 7jǜ&5O `5]&", tBQ3'a0A =ŧ?cs ISpZ g>=돦L(eVVjtYzI[PR]'Ph2Z&-_6lܣ9=jg 0~Β tO}@M~K|E|Wsl)T69:{ o#se\ tj(s v:2Wff/\\|IgbeP $]V<LZ`!s n_bfh4zog{^* ",KskZcyQ^2+c㎗-mwAu+u11'9U2 M.?Cafj <6][p|`5~sAo2e=zO|6~9S#3HO$_Α"8[Yg efUt+Ϲ0[>ҁ)(y{-@%!uF8ZDO_yaxwUF҈YU.DŽ6@K>R9* t/^IC# Ս֑0I\xH@InbKx>ס'5EΈ yܚ%Ch&އ7 Xx}Ro[0@'(=ݗ%F ΔysWxŃ]ЁHsBGަ ή*bt$w2l.Ww߼]Q뭜gkoyѺIJsοr;,X (%YRXT㓞oR0W$Y s6ZH~[oG;=R@P@y(] &&E:%X]?Dk1܅XHA<)MlGZܿ1yvMp& I;ƶض8il۶٨m|3f=̚9y+|F)Okq9^1*n~<X+DFdcZØX\etto+jP:? u*V"X:\6Ŵx`ӿ~/Ay[^`>S9XbijJC%TcUع>QH oL%w$+J}C,[-=^י_MI>?Tn:kA>?ehgB#zω*>{ >BAفY UV5{fҴe$2 pu.׽I&mr⣙PyqZ; _%Ԩ~ztΨbbŚQ*Gu4Ϩ&h$D3s=v4*v\%ۜK W![IrI\@Y_fJ:EYؠvn{=^pĒR[;\>4h ~l՝W鐅_aУ{11W~»MP?l߅&&2pIe&5 _] |2;$ LN\a?E)KAO;}> g[~Q:)榄 =]⹟ҥnsw>Wv/!¿Iɽp>~5ɻjCɦ⭱0K{Sr|NL馮PjA>oeTl%`ǤP<(4TB aX^ 07E?3zZ|SYۊ\vREHMۓxRZ -a}cQhHCN8&r4qy^/;ڒO.=<`B~D-fs]!HVV Si^S~(AK7$|}eS-bNKV!m |w,ez;|$Çt`h+Q{G*6'T1)T_g&zBSka&ӡ̪-|Lh^4CpVϨ +YO-hL0sb-Y4X<o׿CPV[onmsNI=bs3{6dy2_PRDPD,mտ%|~c5Jm!Gf00S]3[I-^a09\oقgH?rm"rcHm2羘  b=c'O^^dIB}OKXW?A?Ď-Ii$IsK'*/)(Ē)3 +Ǩ4<g>eMf옺Bq U6u~Zz LLX$rѠ&W_a1=3ը`©%Ʉ=kD2f S؋)()=N;ft)7{UQ XQE1.ϰ]ǹ K76A=9lԜPWx$T+ʊ :S$;cK4Z>ֿaB;? 31کw/A8?amڱ,?S2UMc ג.(#9ս_3bEQ>Jp¹?'f ѭ3/TӬyvi^2[xx|lW DsAgEi!ըdSBJ[|)L槳#47l,G5Ł4ÒR$wjd'5Z m}_hV*:z-zʰk@J#Y呉rTUο5&}w6xʄ=ݚ<+fSgE.MFNsPӦ齞8Kx_ja2m9T.KSYf~s:ܔָ_[~t!C֌% xO38 j34AeV&~7,l4 H# &N7!Wnݞ<;o2WG4/f\O&4%tX P EnȒELj'_}IG?CߣVQ18,W{3SW8o:a)4w܌\eo dJ*W~X(~PDnۄꗷqm@`d{4{2euiBd:pD }ZgnOq|N;KVfD#=IsZYh?tA3WAW h*ȕaxlbb8xY>~l|%P~uHnQVTiNnh0?M5Ř9)i Õ?%H!8fQev1ao|A<{{l\nhqP.yZd%-b6N2&GhNI7*e'HdiL!HWR)`/kT+T.m=勡*\BCzwU0_+TipfQe" KS4zP^ _3܍& N Ӂ4HnUBfF~ Nu0==L~"\L>Di?&9 ң VS1S_F<W{NG.153@m˜'VBa|a-]i]4N<1ceWU Db ,|'…JLf縐M2|bPIYSj5R{Z)˰{MԴ֨Vڥ1G9N<';QLZ&.dK9r3id-P;a7/驍~L^^/foʯN{o[^k &g&gA:fV ~E쾩b{yz}z{zx[z}{zzxz;~x9x(:\9FϺu:=Mpg6*[z\Q"l9Og5m đn^ =K !;!FrbH\UXµ@֫iiHrXF.z(/߷,M3X@yTՌ /֧~/c} v\?$`<ʏ΂Ejl凙w-upDiؔ U0 5 mدC u+|r C3YGvvLtJ=ßdzSƦw.dS&q!0*2mMP\.hYuNڑM%~EJj?g]f T boNa3"-g4-%)1'`Q%PůT``Jr/LbAXb8OMW*oqWC]Kҙ#tZmcw n^mkm٦(r ޾) DB?'q0KXRq7^.P&m38>ՙoB &-芟 ]ٚV k}3'v qT+ n~Ae4xePrëfǸyA<0eKj:K{ 52=J{hټ3)$֐fĝ?txH_(>M!5`ObZ~LƜIȜ_+lJswS %>=xҮw'>^ 81'٣u. q{_hsBt} omHvB#ۏ[y&nƂUbZjp&w ب%8ok"S8u̺:Վq>vl?_f=!;Y٨=N9ҏEq3(Sm{5za҂rvވmAޞH"I/T4G]R 7RPԴ?nuW+)H +om+tYmmC=fm.ܥWJ6ed'`eMpҸ?8dizoxWPףC/XPrJ$Ǥ 7?4 K9ȥXN$XN(:?~'c֚3g K.n9&_$ Fo>/ Vx08q-9壯[ʵrrw=$Jrj[ZZ"*gu)8eoj٨dY'.vtya,T>ͫǼ~6D(3=8NʇF )fJiu,gyBteEp;K<9=l%{|ܗ`~gy '@pH (>>rq1eh_CtC'qRm]7(NQ3vGyOüY_Jg?0h8U*;oAJluÀmIh}SpMÚE5{09k_UlnKZZlO Y!^ñ(31U=f! Hǜi ;mƾW* -u¸sMz jُuF n+I*oe?};?kV8x/DYnAdmD*.xZc2ӴCQ5 a[ o&tO<+mԒ^O2qXG?5S/;[0Џ+BT.'QL/MB46{DF3qӷNؕ =b0\yU:NPT<ލQEG$rYrI\o0(+;<'GFdIۃB׬mSibAϤeK:t463-p"XDA Eai:n [ Y [. ISȣ99> sly(âj9J[m#݅v -L(}ͫc iưE>z]^)x(os~†Ҕ)gV՟O1`j6sVJGJh!{Kc"G`*6JU:xi5˸ 'TR*|cl Q=YB.`x,";_IJP2)wTF pM_oubVDԟ\g4;[=(Npwz| M{_({ˌq`/˘HSa\R"]-oU$cO/ցϿc6!2#בt#tCҺeAD[3y#yd5('g9誷c--r5ɺ>ZB{ 籁wvfYw!r|:]<XE_e&KVe1 .Дy?J(>؂Иtl >tA;]<)#MIyS.̘3-5P ^}KdaAE,ljQr34Wܛq$)vʬh؄xJO(csOsMW\*s=+$~/UW:HXb8ESJa&-Segq; ͷ L.F2TK2m"cKJ#n" 0>E26+KBb@$L*ox_Y?j^gQlҼc*4<-0z^~h?MbrNӹRbJ@sXP*j:QܛB` , (.;ȓY1hš PJ{pJ&Ii3sfPiԓK?FCǜ $,i.eu45B6ҺiyqdRs ҂$a2R3ɳ:O3h: JH[!(% iخ)Cs-BN}Jk+@ tu.LW9yo4OgQ^m0󧟁z,~_đ$lv[,T׬{t7*rwx7d8ܡȡ[d99Kg#S Qb Ag79Ih{+ q/[Q ʞ)nUۣM(U |;P<$,)蚅]9kGMoGns VYc2u5E sǺ89fOBcSm<ܞYf'Cϯ}q kF)߭)4ReK{^6_7Qƻte)| d,B]\ /juZ1xidǦ(elbUTw_\i@ GZL8F91!qKˍRT\^7T7BZ?A8d`8_2,1*<2ׁdn Y킺(yS(i-Mm WqspDqʠĕTm_KZo+/,LΕᓦ^yPc,u=3a 5)zxAqˌ)gw8ĎX)YiwF3UkM◗W9A[#^ueԖsnn[(_yb3CʅIõb =>?hhfMǹ8zpt0HECT3GAD5ں!x~x=2rȥ{{}ʃ#u* _bK`$gX {4r KMf\FmnsHb+6i_M!mk.Oq4}3~Vs0fg0Kv#Z' "M"3kFmUF﹤= DCD]8H@[ i"fj NMFP.dF׊"ƎZQ'=L}6m@[eLDZ< uO$h sɘЎ! F'="T@X8dԹ=`A+bX5' mko펬ҟW$hlʥs"XɧsTC:cއ"}Z2 ŚχR 旙Y` EҦW&J]Hz`w7ά(|Lo50&p^[00͇cv@%0c;E"ʕsAs;BP柩rZ wä\b,p`ℨU|RG^ۛIGg<$=5z(27kPaw<]x6hLU(7v# ˆ1VUur~lŌy-#ۭP?_P7$+Xc ,*VPǛ1T푃#Y" "Hc >hx`?A#a[cT1X:?ss`=K'JX:7T%q1p\ϭ:'lzY|=Ypdz C'{9ܴ,8L85r.17sڠt!3jg C(gb 7@uF̊U>q{/p)*Wۧt w = D35%0 &oɓ9/sKH*ne ·Ys}Ϩ w8_ѿ߄&D~αkF9l}edv K|ZۦX`am%5wR e v,5d?;,~K=^ŜQ$*.ST ,5KgO-vS>$Ll;?gBH9X('W~&!cQj󊜣u?1&..Am9p/m]s0n!vxjy !+͸1ߦ,q` v&wӦӻz='\ 97blSI V/5u3-atQ'&$m=i=}#]5NP3QUeX 9˞ZK'S+K(tB瀸Q%Qe eýfi9e2:AQf?v2Peo/-rj86ŕҸ'9ʺ (R׀Az "t&nv*O IP;<՛cCb (ධ.@#pAn&lE eg/ZX-BJ ݆2\' E"m=3'`, {^K"_wsv@r򊷰m'Doc 6:?vh_98hoȯQ2uWX6BQ S\|τG}J̖_Z+NnrX!=]Vs뀠R;݋lҦ4#-(G{ө&kDCD daA^Cw}̃2QۖrT?qH4P`=SnCw2 m_ceVؚ^ S8%)W|9.bt F)qqnD/] d3fۦ*K̠w!I>ӚِHUAWLI ]l}y rľ#>)aԻp~^\*%7v\UیQDI!6VɃY K^;B2GYis1$oݖ;2ݙ]=Ifv3pOm/]yd(2\&aʙ> >ձ~ͱISxy%G&dAwӜ)^m6j:ҮjC3`D6J7yb͂PAe($2:68(}q(By-4[^"WE_ QA*Fp? ֍{ CxZMV7RaX {\>D>;[xq [*-VPSTB7$:j#ǻm\礭 ›e?w mABUyKǙyLrd[xQFʈ"vA: `0?Ezm6#5&*i!9⩂z'CzM[>9hډB#YdDVai{/#Mq'?cnY0|Zb6Y뱪9p LghyBdUjPXI/ʬ~Ry 2jKM oZŢh+G!jAa2HćC .X}l<% N#`cL8eΩ3O`Θjj{[M1֪L&Z(a8i!U냚O%h]JFzH},T ݚr+m fTvҠ^=lVro#dif}Ȇ3^_Iq=YG${_Մ G(Y )TI9!֛1UT\ t -Vx߄m mq0GKVV WÛaȼ8nYS< @q;.QD{@N—rC sj\(3%#EմӟAѻ\#3A^dq?НL .[K1쎭3I+h `'>M É#7؅RZKcJ Zmo;,xJ% `ʬf ںIxeu_wUZGCj=Xt[cjJG paaXD=~8+-/9+S1:, )q-#hh1sC=)8Ps(O.e3, GO>%*^4"k+>.3O xJ8F݆<>ozgsms<۔O5H rȖBR {A}Ly Hҍjg+6tۗŽ&֡ݏd$+!9e݂OK,ԩqy? RyoAgHCsadZ>4&Jd.-ڕq; mp@}sϧ L`xV(ZZ W|euCBM+cڲ .NA6Vs0p}%t29qVDT&jth!JXEh"{(<)[_*` m`EJ.骷Q{b7|6슟kP0?+hGnWNf +Hi?Cb4@(LTNK]+%?H^*ߒk+ Q mp̀7Y˞xCw.?J="'Z(y]bsF]>dQegsYsխX Ʒs69u~Vnq{Z;>Dlv  ?r  Fy:MztQ./hQ}HQ_(6|2S-E  Szf&J"K, 3^%]sk>2¾9~sOfu*V{O_KDdF1Jut?2aDkbMX\M+!\OC7&CF]{UˡF؛ڬpofJ&>۫oPY(p/xs7& Yaz8qTu6C m%,T]7>Zz'jm;#֘xTëB {)cA0 9V[ pvrL3 &16h$|C\۱Hi$TH(]>̕\I$rPUI`(IFq@KK}^ T,{1wCTj\V8$a2aKo=V&ڬߞϓF@'Q4Xmal&E!7()&i,)2[Г6s[է'98(ݭ1&qMUtl.KbTt<+[=ڹ! b̖ү!tmjN c&+5 4{]<~nhd'[^[@=lۃH zP}9K0Z:MblFeo%{5UᩛbH?v YZh(\ ԟkrJcTeס(o1[v;;2V ?( w?UE&W9*Ñ|i:.VnoG5` G^wډŒͽ19eITB Ox_^0be0f5lqp3$TɑOj]4tS^QA[}i*" ٌͻb86/!,EDԒ¸U_7B8ԶZ&}p ^RhLop<͟ 7厜b0a;zq^O+i c3L|QniS܇Sfkβ@/?j85x\^pYvHә#U`~ekE/xQsx+sn> u@ E_o`<0om5O!gۊoЄ%+VSgueh 9%$,ش#a۩c7 U40̟G 6Y4;ly.MTzX Ni rXMt hh;bd6hIfW%D6sp~jSh75 kI!\E1w2tݣۧGg@u5 Vl{X|5x!-@Ř鉍%,/u4e%.H,ӊ4Ҙ6=ħ=[ڐQ9cg\RC<;d~q٩<7mV]O)ڀW "h\o1ϭ{k{.W) z[L45CKu i2JeJ$Ɓ%0j*s n7-M'bY%NW?1F2q-^vR eҒ6E*ޤR΄ᕅ׶+TCMb^!N5D tnDhVY 9S.&<S_eMO]7ow`タ %BalȺ36mo)_KxՁ,69؇M -zjsj [MQt|cI=jI*9k^~4D Sie,^6.eEX2B]qđb8Yއ1M`=5}R[0P0h%m(,@D"Dq11qy!Y{J܂m0G쳓bg 2~gŒ%S53z{c)LB/yCQc 2K]@G۩FbddSۈZPkJ$Rtօ3:ІS'wK#p"W1VSIcm|C -rg#B}[B4w0 dʹWahzibW,&t`"=8uO>;Q=>_OUk$ 4J]Ƙs(ܖfI aK䖹.D,R1G$#^w'׌a</GjƓ)%@п𫪉&[Q=ֆy#tsF(1S(r9dLݒimD46zݝgCA0O<AѴfS?0qWT 0@4Ѓ̛e2 fa: u82N'!;4],8^xZJoN7UfܶP,A8/holw?Xɚ,۔Z-+1&pn< ʮ5kb+ZSHG+BлNM=ʣrj3voDZȋ 7%EѩDyOݦ̭~Nf8]"d yTǿSeޱ'Vif qEY19CiM^Z:FFytyvm#sow7nw'6[ISp / sp:m岈yW{rXkg1jC4 QYOgu~Z]֒[\lsN'$29毪 zBYuWE8ٍM (<-6>I \s_#-Y2 ^FnJkb|Ѹ00=ݑwtLuL&9~h[lY!AdԳ{L ;Eo%|z!YP7 .X?Ac!!qp"E24$lf9TkW`=3: LDer;,cO|Ҳ k}3`@q#26MUEǗGV|}ئJ[oS{ b- mͤ?Rjڭ$+g/>gd.WQh+gyh5"3p41)|$%5at\*Kh?]zB3|Y͎ݦ+.$+<"[l86jshNy='h0.;ۗSfB_-&/m5 C_%˘%{s8)zdו`'򺞒e癋߼i9?8'?ppӊg=L^7+ edjCy&%.4%4vj-SCƳTfDN vYWT'u "rt"^&VJwQ (]*JE 4u [21Ŀ`ݼpN}Z'U85OMmESϯN~n6Zs.72šW7lMFxYg  z\g&s yp_qBfk.iGHvF!L~+=y.W t'_4zVФ-Z(&$3h,fs5MIMD->u튟ꖗBZhfm! >dKvEǺ{y*2`Ad#yFR41Э%惓u!DgFNRfEa6%3ݠ2C>%! "Z(+`:*Ԟ\ v#9q 2|6ؒ.rx(V獴1w Vdldq 94w4'fX lIB4x$($ɶy4'^=F)"ؠ'/qF;sVg=k,/]肕+,eIڳҟR)쵵DΒD~׭_Vԓv=v4A!̡l18<参s7N*P"\tM2EFޞ]%}Ȗ:Igd9DMy&\sZ:kZo6V &nc+gW#6=X4o HebfJs}rڌiXf"aX}mZjg)[a^FG݉zM(/oq×xhG4S%f79j=Hv_Y(0 //+F$U*-9[l<(51<#¯Nly+D?\&_H{M˖)'$M1VMłwR~.z̛Zڮcϸ9t i`qK}{+<"2nO~j~;4th}CQ~#v3ްFshΐ09 "8 ʨ%wc!H*3]'tv-Ulo?'gf*P)^JN?U;fP#@mFLwZѶaG,<{WSU@&&|aODSew;C3?~,K"5Kɏf⺓7E>;\C Ai$2ʕZS6%Hhr6+XZ`熩q<>-19:u[: L\kE7+ uI}4d|} d46-w 2"rju r%1BG -_X Y,=(!RYšmkLVK޲\l?qq^]S(Qg*r,,C֡3HnnI* ):|AqtoNl\arAmm(KUm y>3(\~ ۮ[ 'm%s؏&8 j3q$[q$`Gv%OP?^]ٮ?wzhlۈSլYIfk;0.%2,pY l?ht߽ GҮRj;ry'/p{YZwSl+dk,뺪|utҘ1Vg7hr&a` 31K d RRV N59)evW,Vl&:GsZ~sYR@sPsp{9jBW{K/E?{M@l.TTZʪaa0i T!&F7tE?Y>Mf0XD,ypAgyV2B+L*yjYNykYG4h ̋;w|~l0 CQƩY C#t#qr|OW>''. Q<. yL%̀h-=jGznS\:[;A+evV!NFG\LڣPAb@u(7yh̽}ztz ;(ؑcLaŶ_amst m }2~yClL KO Z3gYRJ>)r0r )~EM;?PNi\~U?|f3E7&/PZeuӔ'sGG ]0ѷj;EFrMrxlx>=N/KLC<ց3-D!}U0MFW\;Q;s]#BdNyfKfu Z+6f%<\U,pYkxuF\9y06삂рo,(͑S7vHs~ V|>6El1ZbI"gkY6Y[i]sfA:W㼌!8F:9^ O0/P%oex"_p$~`ާLax~{A \BD Bf|ӘrԘ.:qo5i8wiφTL!)ƕ0ralIP@t,י^x?Z0W}d$m >,)""ǾЏ|B M2RSCCȗ9[!J2y Kʌ0<SraC[qrK1l,?BSdʾ kRsTDT|#AM0D0s?2cQnv.,FdF19qJV^ȣuHwhge L8ir_=s ǜ s~ݢaM:͒sj$<u=r'[A3%ɔ*zQhk7ё8TѯwL="en#(hɤoJ+e)`]ڵ^=2B͒\cc0{ BE]OGR7-*iS7(_NVD^n<:`9;c?H=us7 7[ b&XC(YCPÇBliSf8 a/X'Jr>R=)'c:GըdMje^HBqG?~ k(gh#HnP̆ >OƑ&M6Z768&OC` FFNq+ry~p0@b=CO@8wHAd LL"pgY8MXR-S8FfK)`U?"!'ٌV/ܾ͔#lYY=  5%UIG-.K*j7}ng\F-#k黌 eCm{&PSa`˿BB*cb瑰i.#ԟx%/m:y q?**EmiYsrݖ;g3;2e3 'bU(/B\axcĠU=LzFK4sv!WӅޚس,$njUϮhWb\ȂoFm%I U a_MͿ /t+?TO"e)KgE9>$*ϬqN{b=-%q0o4ޢi3_gUxZi !h=͑Hz\YPAʜ 'I8FK;>`!*iŖgn="ߺ/>ȺOx8<(^" (UG&2y6)+4UkM߸><ؒyYmnMu7U1C׷ c#dB [$/nuNP?W4R&^JQ.А=ү 48R#t$F bm~tM {h W)rj}e/>I[V3cuQdI̥rM x$ƕs]sT;L%;`TOk ;d0-8l_j3 0&v\gNУ-K05"!a i/b՞={N~/K䣒nϙՇjnOS"(e |>g(퓝Qs[g(_@LB5360Sv{SdP '>%y"to`~ށ1E[/Q2_h Q=d{~ԟ(B5*0KX@sqr+VUO/^\c2M)>\ќQZjײP۲}{ 1wF-DIB/#;ȣm zDc-iu601 Si!M+$TpJ~,JY!yܦtˎ}{ߑWQ; <ݳhp-wQչL$QZBz`z7#w{NTfq]qQлFQ6vPL"^r̲c5̇ mY90_J{/3t_>R׉Jgӛ/<㽎IŜ]0Ō >Kks_q@!f4V{`Pt@mU1]z wƫ࿍ě\2GeaZ|{h[g쮿G [j$J< >Ny&c+gJ,Ov p`Ao\ ð=m!h ۗ1f_ձqCMB>P lvH08 klMI"ILpoK'p㹂t 3q߆,1'&WU>1XEæ{OJ$NQ25kiWeH&;çTgdn$R1-' Z4-1H02\6'NߖҲ㐚'qKfT^ AJy9$`E}.Oi;=Ouq٢N+GK/pm5C3)HkiC깭/[%O'.%Hs<ܳe5u㵳{ Ŝe.8.rR "h-2Q҂U49kMErF+?,o mdߢB6뿰 jD~7z/}PL#8mq<[d'!!wy@Uv)ƀ5_uԵw<5c :A<)Œ*Zr"%]zھ&=/7 *]!>ju[uÁ6Ze\ g5vP%% ~d :A'3%MM=PdsY?$lXeR.獤~P7 >'W ̐9C*?FǞY~.e-[rfS超kK:ȆN4bE[{u^$M*e֣!ˍ3[]O^JYWPoyqg,z{:Atd82HL9ĺϵ -q%yPI%ϊm۟sE%aE}|T9+aYIۘ mkZya4t}D1x#w#+oPLlQsq6Û ]%sb hߥ f%Q\9U!Vנգ l2,y^ I)<"-~BmO扸+&4o@/HL*Oc D>R;S\ZL#? }'AЖ<m:>@b8!%z}S>FJ p-~^ im)y%2 uK/9)U0nYf8زxf3-7@}7*wTHŀV\fxZw~ڟ(cF}e 蘥Mh>a*֢>^pK}fwI+#{w[uTCu4$%wtIwgi!!Y'H;PsC3ȵژοMGmO~Q+k6t$Yfc' vXԎ_!7P/nrwzfPQnWGW&[)ײ*\p_S uVY$nj^R7<̈́Sk-%IF}A yeh\u*%@'5}NmA]6 r%&,ϘJNᄶ}(RCŸ9\>o ,ĎrMg]m"tA~4S{R*nu\_x@.Crfxd )Rxw}$6ƣ ^ fXz^f)g (3{b{p)s*Ŝ2UY rq~*1IPkU/vxž$lѳ;X]%'Sn$S4S nm,ˌXOcT,_tw0pyn9bp5n?3yUڃ(p: m e:rH=D4IZJ{{@׏NY,܎jQ8E{\O!-(CD`zAb>֓JpK?)mXyaT9J.s8sxtBs˒}RF>:ٷdwULi -Z2׍PR {NmYS+|N.'s~$[4jbb+HL<^DGR۽3E6hyÿ(.l1LSI{(%"e>$fو4 >ESƕJ)GeQ`G˩L" P1!ށTFm!lg8I'0<<`x|;Ʊ妏5a+Ef+$S^DZ8BCIލ BaXrdɊ`M, c! v{^Bп%d!$Dc5'zF\ 3zalI/A?L,E'Fm..j)Q|j[Io?-[רcrcB'">Dz]'7oʟi)""2b9.%5ʝN޽ cA+4}bOQ~!a01`AT9s}>lc /o<ښV}/7tBi Ӌ!XF˜:*Gx[ LXښcE./${4ȩW\uĴ4޳]d"6c8AlA=F<ܓI&Yf&a2 Tv-*+T#m UeȑtD{p9<ܬ)ՄS|tatyH Z wgޒ;NBK*WFt8vSz5!3:t|5/k=Iu}t{DnCl]?6H.$#7~ {<Ezł|XXݚu bF"O߇^>a8 X흨Vt T);H`!7SێY'm_R[y4| h{c2jkzã X!kg0 kL[uJx^roU9,4l>4jrp~뗝zS%FTKth[.BYfϮU޻2RKtqE*qnv9y;K[:"N|x]KUbmwS=@^c2̺0~;Uq̌Bvr0OHOd~fW G3Ȥ ө4?3:+]aeF%Jj*_&@j`}R^n˿چ 97 Ca?)YOn"v[ܤ Cq\q)f1f2~+ɋxw+EYzLx77e Uk Mͷ?•:2tc?g|k+Gw`Siݖf*<'0 dǻZ⛆*'}iA`J{^R aܨ@-,r}9Sp^4XdՀL XԕÏ^ĥ& zu?=jڇlB?R"(ZT`o8ul3o߭I#徜3hGI,q=U\ɺLl$?Ά*KAR܃6 =tIa&}lq#|SCdB\Q! F|@kJ߭eR~ʉoVSy9M܍ЖL,FB6XټN);}a{Wfbqf,N"S }n9IKȔ@֤e$z-x%2: -eၻiU wbV ʠ )-iRLFdt\J]p-DܪsTKBZ.vYR.맑Q G2UV#XHǍLԷgf1Zd3a'8-*dKT -DrHA(ODE4]JDš֊,2B$ؤ2{PNˈ'1^O,-FW[K|TPD;~M'Pt#7Ά+vx=TܕʳHFKiUY2sl\H")7D)C 2ϧHꂟoն~P53㉐ÞpJφ{-REyéV x\Jt$_bz==߇{φF*VF KYAYV*_[o ᇁ Z],>,GSbdui'8N;r+pi`7xMqH6 gʺuu,  s!"g~x&#H=iQ0WwvfIx~8q b>idi1cwFƯ%6Ӭ<88~ؖNKb8eL,&wh˧Mf _S>*3Sv\@7P,:{V/5VVᝐTz]z"B%MG6>YFVQ+Jt\^LaDX{<qx U"m'ZR[42#[L\75]dpK9SJtd1,B$Pv%!62g39SP@/ er Q?♨%#KTbm栱}:dO2r1+W:3DFD1 !iT́39):J痡4D}c`mm m7ƶmضXmvr2~L23͵׺}v݁\pqMdm$4U\\t ivu1Km m(o*y o%9"f ǚ-H֓;&N>39YgO )09픭&nRM8H ƧY"_\]Pz}W1U;79;v:2P~}e$d$M(tvB8ޕ|biRg|GPaR'/9ʄƞ |w:C9'?8$Vjh*o۠K_tIFg8aA e_DeA(eR֪f7fS;VJPJ5(+q! ~p- WNPSY(~k}G C[$rAH&⫫GJs7{!- 9Xҋ%NEMK6n+Kl0 ,@r; {QVqjCe#֗O@#H@>:T$Tj$Vn 4:4SR63k:R>(s~3q{bGAw=Ǵ5 ,TμH[,/u wCTud-$|ٟgeb(.장7vq Mp)Ɗ tݳ׼ oWmA4Z€i MSt`[fЅ4iv"avQ(~ /"2N,SmQh2Ǽ1mK0.-=j HZ&727Tf`Yw6GbA6+b'teFˁUɌyVw֙0ELC֬O=mlq&O"zȃh2bJtϤ8 ~ƩS$1BK}hAPQ6`po@I'_޶;w:(u$1њԦfVēLK;@ KOwtkWvY.&}^* d9UDdmfţ=8%\Vix"xߴkW#'Q;,i7չ?G %Nǣ *Ei0QφeL5 }7|ԔW0taA:H})Ѩ%m`s' Do@`,K;#2/_n-rK)ršY%nBS9S]ZK}}T'F!TWWprg(.q>4۴YʁV‹OOq݃;"=% n/ Oڐ^2ߨ_S9 9m-"цì-.[ZOZW# go꠼ќImOI[9(<6eWq$xYy7ұY<}&vيڠ [#^+;v5M/v4f(Z8n v"LL hR= Y>])OhܮEMc -a|b0vR`ztmf̏aU KPr-ƫc1Kc@${{" ;tX~n_u0ef5߬Gg^%+1Om.ۋ JIHw!DiTCCvԑ]`Ǚُ?)) )h9>rg6ﴈqMp|Xv<biMDC}QZSIp - {2mCo%|g"mF,y"dԭ_xH6E5yܡHӍTLIJ\6sJ\4p?tgc[`+O%/!LB~ؤiiyCǩۦFX}CN쇶331G*-K!F8}@rEq#yp۱k! v΢ $*v=* 'Z{YY}z^7*6+WcV35C2H-{M`@e_tcP. YB\Hbg6?bf3@P]^*ۆyh9eBݴNUFݔޭ%p!Ԃo3;ϑH|xR*w|liB %YyZUl+ɉ,*Sx䫎5g^A]Y¸'%.dY-j&+uaXYF{Ty{8ѾK rS к6D>Py(|}:ZxthӲEO.)u!< @2!)YrSsN;f[JCk]cO{(~s&3 Ye Vu'>$n*jbӻ}IhHn!@~6 }?ZJ^@rxa*9_g]:f3m}2z810ǦCo f!*f<Ʋ, <6k_>W*iB1@$!VeY]O,va+=Nġ)O=9q79)=L3F!W#KfϑYg:rg2H>0ҴBaϱp\jkPs.&B]VcZrcB/sipx1 #Mri$%Kn,@!{=PT53\f'kڃ&_M(۾$GWQ߻JJo4.L6/`}{p 8MhZ+0 N)زG髅+kSmfzon$W ~ R䈽1;MujbTG+}>a tPvw.U=:z\~i\Iߓ>L42t-se_~GG}(iFRM=]-px7^o2fmWd}urQ0trІi NM/{'H.{C+\Dݝ( ]Ӿ->_ov JM):T-on7v]RSy(jG}KSs ɫa=b '*Ǵ)NSI3( |ƩTsֿ>p3xkAYsԼ|mԛ Xmk2]<ة_37yEIs]: `ҋ$IDX_^C۱]vEk8#K78 QE<: Z ƃ-qYmG xm_m] oM(o*tn"3ij7Q. k' yrd*P#Q8csf?~}iD( Yn䖠n'+Mmy[*eE^Dm#C#7Ȩ{_Q۵z( D*KPJKi ^yZnZi؜[hB~hĦK(iqk:8XB&:t~Y}eIte'Oҡ$Qbg0$P8K *h6XO}:+uoBS$7j { l(CrYT5є/sE;lCLo Lu_t$wխ}_y*FgeUfC; gzyo7%M뻹 ]s s.f28{ K$QFUnȤ<7_]=Ry-$tmG0;ӹBuUVWdG<I^wLzVO()=:C# s Dnv"BJ Lp-lw~`̑X2M9s5LSal2z}49LsI%(}ۀMd_?6l {BS2GL Wlt\&tzYoW;/cmP_K.ۃo#j7Q+Rr<-ެ g /=@)Lsvc& 9usw]'~PA&ڶ q9$l=oϙ(SMZi,h8!2- qUx'4MVk ҢAOY;Z{fxEPV;4~eA}d1K޼za`4m} FN#wm5iKkB&ZKj߯!JrBӃ3X1pVo_׿su+s윋F@4P;cjF)oSb.Qd'e^ƱsV'6$j4ũZ^.LN)H|eJWAH3n6mcȐ#ǤO6ncB4uLH|?G^A4X[KZ.CݚKOkz ȝ1X_xhq@ ]䇟Ovv Ұv~,8NMX.2XC" _Lxo_<+/+j (l435EUxU1Qn9rk8mRލsc'R8Q]@E)FFFdPA;? G~3ScM+GY,$}Kڨ Piˣ .j~Ny˕#/=x<\{cbcg[O jYٽƢhŶqveʵ]_0h \AJ$]AԦkCANRSMs gtΗxViSޗlr;?B4}ӝT{ &79} m]R.1uwحG7+bB*#έNyxhOBxTKR$/uI+)ݏ"}l[9"rB +m>u{m6 {59r:%G^3/77s [#ܝPВQwdt 4҂0kO*%L2P. Hx"%I fni]$ir.>s"AYux] OyC6'?yQod6:Ϥ)% mܻ|o^^\o2nNцi]Wq&ZjևKh Ћx. km7.ӫy<#+HJSdAh;8np~7\WMwəw -D=y䷚hAd:!sFtH7ԊnZ9wcU˧OaH)pCqAVjTeZ Uej&(tw$(6P?q78,]^>:Z?!3"j>cQ|˒aјX @Y(dWӬo0@Ҕ5aT;tG8TݠhM \)v hS t_$x GVWiʫ^`?씿uk5qai8^Vp|Yc[~mɎ6~n 7e&pQq٨K/~|˛{wUz[S Ԉ03qԐ\w24߻(cz"Z NT4[hDeG5 eSrICoy ] e^p.?yEoWTB Үww.Q7a7s \D6@ko|:ak{_`b[hyJ:݉yGy%'0QVMcAQŹ5R-+|+%p:})ygk* `sf߮*YŽ}ͲuoecJj J=TwglC:$(u <*oXq+D綊=Jy7fȲ2/@ө %P}61pW98e#˸!.YPᗔ)kXc=I>]'BFZqz9#Y7^!nacӮinZ8Ѯv08쬢gsl*2Gd&c3dj' /F{N]_N혙 չk?ZڙLtl},܅!Yɦ[S6Gu6J2mqȼ˪0纚E*DКԒSFIp$),Ywp|+:$"{{ BJ*0FBxx1ۃ?aLMz %S= Rya hDz}\ I1\$B9tcK!"m@=3S2Q<<;a,oF^20Ŋ&}֐S=']&,Zp(FGk[B"`IX VKXu 9탕Lmw~4 9bJXxnq#pn#X5/TH 6֦5e(|*dVXu_y.gA$סGp]dztNGܥ.Ww@K!bQN#ެ8Ҷ.quY mt;07Ċ4̸9Xg]Fsn і7O*#'Ku]C]'@#=!]iُ1UkK;3m^#~u.8?lϯSg Ch #F(o.oq 9Y>aId F Bw.=7n_Vӻ&Xҥ]*/!b9҃b;jBcåIF L6F Ǭ11iɞk[SCN:ֶꯤMr2'/yZ.ؖpJ@+P<+=zލ)~bź2IJJrL_^YbkY]A \WREt.`*8&YPpz!F ryj$6h.w2A5mxY)JFU!ߩiڸ\n7`yEg$3τ ; wօqANB$۞:~@&v'p1/%9P hTR,^)H`EҿPW5wh>2 !H=ٝU(s[ebaQ =E=G#kS T:4͓nj:+TVZ^M߿0'&\@ʔWćا^q1^'ٸK޶gU\}y;u,σm>=.ʑ`mzz{%)mg7 eHNH{\i %`xʔ27L,(M&Z0™ukGΣpxZ3;cFr?n Mk4l̈́y]pV/jxt8¬[uw'[.<jDu؉)ɖ|e(sN/?hV9e֑fM4=_e)N#b.8a*r.˫1E["8; ,uEwmyyA$ ¢PF#VZ6S}84+36-d YN*pNqB&m?ݛKF)bx腜: 9w&}fajާϑjQhM("5:t3CķlY$ ?t1,.C%Řj9h8+$:I;VQ_z6r`I.%[oEiD1?y.q0^':cSrl(:NoI)Jsݓr桱cB8U)wi qX'.8=,c]g ]t9D'̈́TA8FwyKGd@Nf|]e\h:L!a}q C4?'a-.';척Э xn F3/ ~H2\#8 vG$da>Nj tz\uMsMr_SGHC& u?\m(8G.dwQq1[ t64}~^hQA.%2̴[vrRpeߍjKR|N}{5Fh.Y3brؤYܗ '\yiݲ!kF( WLux.)9bi֨-Dxo昡]G_A0簶gn(Qpe榚4-u9ndgWW) s7`K}ou0K؏JuIIn-$:&K糛Sȸ۫eb&OF/2WE㛯 {]ȎM8c`ʇZX' Q[#l3 cA-(QV C7imNkDZӲ+sia2pӬLE@oQ#wvd 'R|xK6@>˜&)ǍRɬV` eM];g㟀܈'f׉ʔ~Rߑ3n 7DDAn3H 9rl#sSysVY/QVN~"Q +Ӗ*ʸ.&zN{?6v g^*nӂn*vբvqMR?a*;7禚q>iGC#OK_~JԾ%of ? cLBnUU>3ElȚm) @TjxP~DzT *^$XRlɛ<[ rӷ6ЫmjKBr~ք la&-lLD}|mV![H*y7UIf%AM\*/mߣVlXar E~Yȟ up"?gddZSNK mB˓j^> y,8]kxZ;O(؀'Uʯ^*$Qb&IէJ><#$߽nMƹIϖ;qCFOU{)Wrߍ.}ȱ@ f4IDx%$ml9840y)%{r>*vMܥ)y["HoE V SS{0!xġO?DtRL#;ל/UҖ!T1v~ Dn;zZ2^Wೂȷ?Oꈹe# qMс?^EsV-x ڨaϚ-aZ8 RjVQ_z-}O׹/9ϓi|pGa>糛%#r:}s_Y|=O~2/dxKڰ?wED}5Nc=4kYG/Pw:ROJ`Csxe ={@+|?i5xqhKl]}3Cc -Ӎ:`H=*f3k;[L-m4ZXi@&ݼL_j.vʑ4JV!j|v 辆naC[XuF%b=A}Ur߃,=zڛM뢷l[ReM'?%Λmnkem .VJPEݬG1'p` /X'n^Kw36X4PO$4.cQx_dd`0[=hkZq>c.J$s7ٙk@I+lUڍGu6zak+ -=-=?=V-u:;{Cē`YLвo4&Ϗ-ѶhxbO"-Ǯxh(?J~hg~@\w<Hk-Pixz,<Fd 2d^e0C|YhNHh鏢 -&`Ȃt.ӉGÿ M1Gkoyqy̹Ť7ɓX IFE/~#UXƔGG"Rߨb> ҦD&V :[]UIgG <2ywt=jΙ͈w=j NY 3tJ~xei5i@B u?.9]TrySGZUiJ=|XK+"&y?Ycg]X7k8IV; .``<J̲Sj۩$no|u&xt4_!lHII/Q [wzC6u_#`ԇ^$TVLh%eB h}ݦ۷{U:jzp}?>`7%@Rhp|U+m *_]VkõUL B^4F%r+9ܬ48tח"[# Q[4򀊠v.v ʇ11:lH3׋S[!ŎΠ%[v!&F?LMYk{- .,'BnVϣ C XZnKTs:(v|%[s|u()\|ą k8U$ɲ5+.ʈcNWHמq8x`REsٴCh?=?Y?یAu@qAY!oVypIPqa|'Aw LHC0")e]bv\%׊ڟ,`!nA&-JՒ_ RqSJ߮l7m$1@U}tGNsܕ!t 50kfi psEV7\Y]sHN51R=ژ.Ii=yʄsDEmj-n5/EEB^ʻ]j=^- vA O'-z5p抒w&k&]ss#6ok)F՚nצ~FW:@?ɹsjvY؊ eh}/ qR,☿qW6t;B ]%y9a|5H@-&ץ i7)ŀ#HvKv`(RZ MYXG15KQgx>A=Pܺm)V 7@ a[i?}2 rv]ܭt&J+oevBžVD~4\e4k\=ji*'=Y`JԫwнhHaՠmPg=?fS5$[nO\SLYe5QNa!JšR"ۅK2(˷:-D1nX͆TQU9sӊl5s2o.`Iin\ /iý#&d K2*ˇC ui 5L,~tq#s `Ч%X 3们;R .tf:ApFq*8:r2jE&~[A(ڷB!m/VcAQPٿw;twCu?!Iu x8,,tػkAn+e+!deb]6kD/WU.kDo䳯A1:NAT~bx-K% #v@T2׊P#hTeS%j 'OrQ[+ g%cu!Xwnr5A{U'BF7& (W%.GyrME|Frd ڥ9XV4ʊ`° lnz%pL=dȜeyE_mFU #l;AJe-Å6Av@nH+f Rf \BHʇRS6I#5JVH 'a[Ii*h y*_蘙L.@q.fCpB! ^EE"bk x;*UU./`lAEm5h2_ʰFvHp}遰柑3vIdЏt7pѡۡ,bS*Lޞf! [P6tw%Ӿ0GD0E7r囅aXyah~0Lوk٨F߁7p|nCdE~-Px%)? {O\sYy`4͏"}nð[v^oQ:+mX.l\:JS C}qYa!ύxt|-KAsnӼĸb<ȅ-W@]N۲uAsᾺd_beJҫ}b"Ǜ^6/`9SO|X0>gAޝvJyۿߴ|3Z_vޗeT8_7]_lpIࢠ8Z$߸m>[5c;hUXAK}MuW,,6GMfNxe2|P&p,9` ;B{ ie8 FoXJ* J;亿buq8ηܚrVOlWaQ[H>rq ~kGT#@2u|$P$OՊ@ a,q旙j7)p1n>QڗˠeGsHvG/ez5o#Ɠ^l 'ۑQίrI?7[Mϼ|(eHUW͎$ nl?Yie(]hXɵm."<~7][_3CMIaNk`㄰t`y:$+=:2_ҠXbI)vS{rl(5 !y$bM ,sbm{VfĴrT>=,;mZM HJ3z<*p7E2WǜwU`y{/ӄb^6^o"PmOebH&M$h6%8Llֱ͓OvټsWYE,eצĀ;QKݳVjH>3Hޣm)07̊*YW~']#D139P@'r$Ʌ,t"xkN _ .랳:tx<>[ ڿTL^yfi\~I wz4~՜oZg^)t 6 mQͧO]@PuCA;Y_<+rzmiZݪukzqSak1UG7?P4[oY - LWM,h )[_2MtcUT{NBQ( !INo DP|~C2$AKciI#_Pbq4W9w0g:&C^Gϡ5y&@zȤN(BeNF=.NSmm畁=yE]?ؠscίn%=?Қ,A'ZNaˤE r:OLZ8 yprHG;'Nz}͋>m Yd$VʥYeq*DzqP7\Nowk)mb`DNƂتV@FgW ؂f/ja\|2b A8"G3oVN4DRLܬ嗵Y%NU|u}_cBX/j7-pnU8pnOPG8;7 A9^U){ vOrkN9ZΝΨE ѡ@b#{|?0J$Tct`lPFQU,a+fnwή6Z;<;)dnGo_|gS+ֆ?j{^VR$U:X|ϣY4S nhp5[RupϼJGB1}Q,V$wJ4K'>B 7Lnƒ5I~ glK/M]`×xYJTz '<{\iGVwF^Ұ9>xV WTM4д?1z|a؂FA2?inJIQC7QE+{R3+w[pcL~t \kΚN} OwnHҫR1k}|vGf݀^I֓ZPSLS?&áQQnkNn.ʜL( k1 @XMm.Ŀ¦ o /zU|hςl{\@==oW]aLO~E5,0]O1| ½}TlgGث(̦+T \%CyM_;q0=B:5mwoH8 'y{ݲEϒ\rr!1Nnܺ6zN XrphjܺI]U[yh8 [352m(Hx~Xʨs3F=͞WPBh%t:QXW Jm#5Z0{Қ ys#"+u"\ιZic$qN4S¡VـAh" 3+tX;ֿR.Ѣ&)+L3UAΝ(# [Qe;[ XMqu'-p5\Գ櫛jBC+\"*!$楘?l}F6UEkYpxe)I–GzeKɕ/8܀ 3~8>~Pg@Lsμ?"tPpJ=il8Hk3]P Pt?,XI =k`CI16|6!+')[ֆHvhh)Dh z gC]wŠU'>?r4U'>7=9&'E:]QH"4u N񍹶F' B+*oi{6͞o?Z[/ ߘ2:ԇ lTslJ ,BplG[x8\βɼe 4ǻ?/s+m+GS-R$N]z^4Mדć.DOu %tp"$ǡ=@88d3 4"_pHϦi ,aЩ^Ÿץ Sf)7е,}<ܻ9 /S>xTdLmz6__qVGCAf/yE? >uֿ൛n>':G)5r`C7*oa6\UzbIuZ<@--7Kq g[&Lf_s2Le[4}ĔioȎl^E s7>oV{N#Mt^2|gJ#ͯoFь_j_@UF.\/i)p9~PsUPr!]Qu sx@±<$Ό#p*)bQhNkOH*qPH]G}~V8Ch}U׻Mb2u<@f߄!lDdwj=|k,#4wE:\2OeQ*,@n#ӤҩlF- h+, ޷GJ"{y { 3~bxCJ0DB;Z.,P%Lh!S 맾]|1C|B̧uNjPrSl ⿣/rQy!R> r>olɝ "? W:0M<~<\ v&_]d}BH COxC |=&JWX6+o w0 ER:J?s_hߔ)a9 G8O%M=cWe1/&8_B ^c!eR 1W͜ոx(3jm"Ԗk݉\GrxY@Zkx8lG{(nkegnq5ts됟YNY  xiܞp` ׼gc[yVS],qggㅈelXr?Qxpnc[ft=--R{)0+S)EL_SN#I`bRQ%#Q{DXcKv\j1 ņϭ s>F n"v{p.L4zls5NE؈+VK!}:kr6'@yvFPms0-<;-DNi,< كH>u#'Q{IA^ږg 2Nz+WTC\!Fp,5m-A;g'9/%;#R]u˳h57>NJۢoz;6wx#Nt`SlZ٦.@snb$gOh&z3~M/HJϵL˒\HKrJ[;9"f @$w-?.ߒvYl\-O$$2`(̏!Be+eaP'ZZ so="֞r)F h߅pu:$/9׋,IGZ {14G{q`-{w~";8f{mO@^sXvmYoAha{~u2+AFFEZuJPU,]fp5|b;nzJmY'v:`NF&L̄4WDi|a0WmEԇVxc W,%L=x1=_m&Xi9^y߯v#*]ӽ}1ݫjR~|"m"ch7 ̚-3UdxT*͸Wx?WߖegwW97(k|I f;K=/a13oTw"LJJQFyVZl^]}ǟmf kʄeps O߫`õ η'P]ʃP4&`!WQQqyW y^mU`nXV(j~.(2seA[6X2ϙ /Mswqu/9q9:#o@7Ld(fO~}ԙƴɏe=)o"PzjH~b+n15raV^B Q$ Gk"H;mcׂ{Š5aw*u_S_orPBQב-ۃ@ccE|QfCyԇ"(ҮTd2aߓ;vn ]xEEad;ZC}g,7Z-+Hx&0!vr@qܽdfl>ؑDLa@󍅍$uQ[HIN 2J\g8Y?uD=U> G4&tدt@TĐf#ߟ8x~v7agu)g@ æ-@:..1hp5YERy~8DEkc~{lT%S8,M^i9W4?}@+m Vkw];W?!133e$􍽍!-r&Mn#WvkjJyMLJAyYIJ?C.R>j)wFZ#e}3ez3c!FʽK "<4<`}J+iJV c{C;۶f CZ5RMa#-+T?U|kS$#vj_쭩R&('es;'֟ ^/qc8YD҂U1-u?`.@=ʛ,rHW™=A ebCp(OzJe ˓ɺw+f,ka712$ɘFa&YnkY.scFYqd")C.-jij=D6"zv }]=cxGY^n+mmP*ZW9>NA< 2EJajGG.+:ap8z=YXڌJHhM^\o(%ZA5# P: iDybT{yZ͊Ϳ*'g/y{ai٫ ?HdT2xqmg" 9E/wT萄|9'n_,g6(ZPRfAww '-@ J_G-F(i_<~!Rmz\H5hU=[r<-n,J]lC^v@@VL& up/S`~O)S%OE tIB4Lah W:*X&P~垹rͷWgOrNL " ăuIP譚LAx7͗Q?k:d~>MEL*/ϟ |?}1尿U\"b\,g0~Za6~@)uFk4iYNZX-G'-aTC02~-7WnKP1w^C}ebc)s|?So}!a{Oyrj1m@~ &P0Zys+叜[@LX[ըfi|h1_P&K}]Pq+jy֥˥N8c~:v*^>~EYKf7E! h1_2HN(׍-k ΀GsTθkIpKФQh{z8dGC&jCq 5%#xZ|Һa`V Ssɔ,`o.mihS W5U5,GV5R"9#20`ߜQ.O"|ZkAO>:ƶm4(Y!öUzǻ<0c87W(QAҢ0t</S&B~#9xOAsVZxmZ:uJ_#S}Xkk0L @N+1Qj0%5W$;-2R br㸋K_zJA뮲4A*A؋ ʾiD% %) w4g:Z=w"Js=Iɐm{4_G" ETD"k=CJRbvsT{س}#IZNrw7KJ1G2i{w4S%DYvP)ŠBΨ-|Oh W鯚^dxn]>"#q$`em%mטǗtM-b?> or; ))Fe_=F Ě$;rdk;l3[*c:ڗ\ܘo0yك}a t#ſѥw\滱nKG L֔ytL,Q8ĂLĚh9p0b6ږ5#xlzs2Fu'=7G`kNЇ n<p| ~[ΐ(jjOhQj~w|{f+xlkMu@ ?z)'m%pt\/!*L0N0笠/uoAPqcl~Ԕ=`4jFaGצtf ޲Ӫ9YZgNR=?kkڿǕu$}Av8)O!ǧw< %fµӎdVhdynߴ7C,if?TSV9l{1A3OƊqH_`a8;ZCq='(*VBf;Q' -JQniTwbzwusޭ#g1J*CVh˖mTd"7M(f^ 6N(ԍ$M?~xr" "z)5R(*Cȣ+E2'ՃHHەasEszš`J"&`_<\(833=Wp }Zxɦ10p~R0*&ŒsGle1AȪ!_W d'*xAAr܉s;Y/U=61Lj8ˊwE}$f| GÍUKxTdUd G+m|RG\-r2+!yř̃Z!;,K%Vw; ) f^關U4W[A pdJ_j_k6}P#:+u$)I ~.hC$:( 8MR$GAd1ɣV`??W);iVgo;_j:qyb\Yl UT؎Y[J;PnOɇDۢ|0SaS[ e/I@rEx,Ixɾ"3ZZ6%y\di 0Ջ/rۭg)b6z*1Jǝgǝ:m%Ԧ879*D9tŗߡ)jË ^H~L/5=#=w", l+Y+LQw[AKIi ;GKXzD -n"}MSj6*ґ1ޕZI9U>t٨v,!K>C#Av{ ;yfGqVx9$}F=Z5]C{̆Yp82ffp[|t67՞oل30s7NCGJWMMsG X*&<%ЏWq_{]õ3#@cO7qh/AMZ|>hS$oު"ͬ[sZNVNOyDnl0!ۓ+bw<7 UuD 6߭2?dY6.4heA3n\I 7QaRdE@!)@fnJ1GR}f[bo3MJunV>S9x0aFLrO*}|AM>p1e}pӫʺY8)Ѹާi֏:?1gp_-z&N#{fD:߰<ö^->4{Ո%sAU. T-z8ҏ(==5J;,^Wsw{'tFuY7-{ ׮ wY:8׻3UUEz.9V2M(V;)ނS_cu-/1'ԡ@I=.rnwBٵ$r. 2 3$:dШO@:)ྰH 5yu7EF|'Q}@͹$/(RILT?߽rCbZ̃f@Ė2#@\9MJblEok+ӻohaGZ'U8 _B#\k51]tpK֪}1ud D'QO]8e&Q<_X*Re8hQ«-D/1mje,&kv&>=rFYȖx}A(\=1~w# *˓Da]4FRhȄAF Dٙ'߀Ao'Q h?O҉k'"4*Nۣ'_Dl{T|Zu}GU^33 k~BUj`Ԕ/]z0JLsx]_=Gm6NFmvvضmnl9+Wk֜c=NG/A( n'1;DNCyXơʥ":t33#Gɟp oLju=o8:6zדh/쨟$c WVWoO~J-F΄eJb Me5ݩf ?49&p.n2}Np[#EyK_8/i]VǙPXJ7BzHSsJ!|]5#d'8iCO:'Tqɒ#˘ruR.\z w(=Ԡ\q]t:3EQ͔" 1+Up)~C঴%LjǗ|9}e׉/}Lc~p>Y箩Js;kZUkolٳvI2f2j*GѨ o xgl%kU(KT`ҽт e7,V`$AlX&xKjxbzo` Rm7A~] czRDN?Ŗ5h(].EؤBgc2 JF 5[b]ָC <µw=kpL(w-:%] #4Բ@=As{ߘ͘(LkbqN<oe]4u/5Oz 62_&}̭LhU3~ge0 $.(%lAS.sx4UfߘX?uO'̇!.;45KlEr|1\bYGEGE9zeCMֺ%C3Wq^ mADsogۦ 8בp qjW ZW/{uW[5ɫ1d.{W}s$vKa|m:/G  1u%ԇa{F۩d`7ï ,7A]~MM^PaCfe1EU+D\ |hwz j@Ngsg8\X @:5ż0{5C./Z'%-ߟ!r5n[#H-ʾƸI|_Բk->;'"vl/X!ոL m!{lN&;U~B>F1( DE^>u!wpz9寝+n<#<'$-Sfzxrg.S(se]2Ok@CŹM&ie b2&k!fQGWOqtUO?މa l[>|hm `2~ GX`BL= 4P31/GK2߄RRLW HOc&% }۟vD+^+izEAa[g"i@}% NA3c[vԦn3}ݴz&>YI:/JFo7.$/85BGLCRGz[Wߛ-bey)`u 4=TX SUʛb W_ͫҩF]sU̽BmF)N^mfzDzo]DU8:%,ߘ)NwY⎝CjN8~Upͬ(4+f{xL{~XCۅ׌,V@[j^9Em'7%ff|(Ar*MWS< +s$=j}8<ͻ3p^Ж/r P zs t*b5P5/bm,r;9wl衏vg~t|Y<4J+0oKi[~vY7}e K"}׎44۬Kfb8(n3 t0`^u#&EۼtNK%8˰Ĥp{3 7l-fۙ3C֪ g?,dBƦP&mE>*c.}d2c#$W4>:EC˪̅"Ax4T;vtAbIg_<&>81Xd]me^uUA;gW\W켪WqpWWΟ((v) ^a=|G3%Du?2:߄Opjbo!tFǐ\˺L Buԕ̈́%YbW  KlZTv/So/8rkU6!C,>.8h픐e|IfF*|A(m򃈯r5yade62PѨEg!S5#\'C5eK)˓1ɓN4.},bN#g,9LIXks}Qf@rZ+%TL Kᰑy~UN5-FAh ݴ!4vݪ"Ap"}5TL >Ata;j%#h0%SkXlQk*tqb^ўeӵCQ?RԈ;nT>IezΤ0R1kX?&2cYXOaeRYhc 3k 銱D%s!(y T9|?9$3;+}g` @tz?m'>ޣg&d)Pc']y̅}-!J:J;}:?meft4zioJ0qrlʮ`J}(?h/tVS_fZȶѤ.ȘWs<~3پA#Vo "^6n*FGJ~m" a=TҎQYn *^chѴ*Ŗ3$6-8 hZɺws~bh K O@ʏ>H4( Q%JߔfȩzoP*eo^,*Mt,zn))A}-t8q kn?Elh 9}'>ߕIkAֵ.і. Jx ?=s{5*YF]ud-ySmI2YD !YS_ #^>YuIu#uɥqLjbdlOAUKfUK9ȫbJP?~Z7{lVP/z7D.jalm2P J, L׎~X Р^œ}xM1{moH%| Y}be4c*9O#̌+-,qI)Қݣহ~fXex1nk jp5g7(ߠbT!%oe{G)^pAr3XL x+>s:Snɂ޴Xma:1wYk(8eDNFDqf 6ɅŘJ=*8>Xtx8ۛ 1CWG$ıy"ڛ/2۬9 >WUۃ/8ѣs)Cc217i M6+n*x9[EtЅcgOVU!FT^m!m@_Qb SLxk_H&R]:$}Ut`2_]79I oUEyon/s蜯r침)3,;#Sf?y(3rLG4g*R2k̀pРrškA惼=Cbx$?<Q5ю;pJ3pUɞP>zŇ)%m J#cke Q ђ.9fVb:D }I88q66~j>}puUt0^?} 8l^dRh%I*$ T|v\57s,tP2 ^pcQ刽K9gAeM{7:~ߟHxoU6%'8Ҏn͜X8MPviE%3:D:}:+߇# "4S&,KoYsX9}1U} ]e]}p9- bOfWM{9]q1!~=gɏ-ɐ+7lУ!NY+4hUoRmo~j2 nwza $wp| ej bg,Tj!{_;Ӵ9Y, {Ҥ)s@gi3" S)ٵc:{@x;kGX"dzmŠIh{X`9& Tg +R8.E}zF~ `>ʰEXgKg徇y,/z|1NE'~_[&fRT¦'Y5ӐfX_[VlM16ʯu੩$jq T`njpլ9>f $l%hQl> 5]:HU h.5XُLԅC_􋖘ʠjY"o_X*ޘWr.Jicᐓ'F$٨z\~NdZa^B?A>|*K9E9(;BVɬvǠGxw.9Nޏj#*8""y[;u)E|vLҁ0Xdba?\BeҜ] 5i n0bkg)4lea+vyr]_$6vS-2]-d1x!pA_!e?灒pWgF0:VkTӽ_W-LHF.gҘBn EV+tUO0nT$jCh9Ui~X)(&[(}jTd rxlblt?q]l)H<W)O>ѭ<+ywM)iX`Q`\cHT|_EC ԬJ7]"\p[_@}G/`̢7/Zco$֧U"#*Nu?3QɍL4BfojܢIVJ;=#GUY1IGvjPl>nGb 2G=7 B|Zf[XQry\^Y)^Zٸ_/nN_w kY tg)'-6۳Gp:@%+-L>+t۹" ?-צn@ 4cqρD5ZQ+!Ew(mV_Ԉ7VKNN#t ;':zwZrK߯)[g!7D3amI0b坚z;ζuw[6EqitCşdS9A(1svb'\@H;ړן?qj`ڠ;QN&.]*A7;܉,R9+hf~CBFldFʂLŲ+ ďjw ( .,|8AGߚomϝ{;ٳ݇_9 ]2;c8iC4~oႡljԙJc=%Y,B~<~Ql:6yL!v0+U%deFwty?(o :qo+6f| 6IPhT#>3<&/ph^&-Eg7\{`ş)BZ:w!E8>K&eT.Ll0Y8$~&X"~iLtܴ +^FSBcG=5ealEJ €QNGikKujl/hO::fWCpAnH)7802 IG1N~ŕhfV gKGGmϥ$(#ɹ BY"{+˝MMܤ5ps /V6@:z'Yb%y֜[>b`ļEoWڲSS~ʮz[azN3 *nHF&|X;qt\1hB:BX8nX1Uڄ L:CV{xtmSqk<AJv%XʹmkGj@>BF['ɚfbZ]#b(kqo)B} 8'-Y {-*_bVcbLNI7o\fUVH&t?>RGe?'to秚eWzZ-{65 5U,]ýCظFMEMYk Q8 ([f_(czyNorCkv:Pi18$*hҼ|.g|Y7Ĺ~I(/Gf2|//:mFZgrԌ8cwM*OQ>|~@!Z*25!uIf8=%;qL.0)#s2-޳7ʑηTיx]h -6|7Mј2|ߑpMV<\p$kIGU0wm`yY .~% "9YKKF] 0^z~'QRXc-R%@sUnKֱ! mYp~`}眻+z *!X+j-ZTvo# zEgdK/'zN?䲪Y+ &(j,ZhqԽK"7k;Eq%/Ӡ*@ւ hԠ/zK^r_10YMaiJA [3j+?8VS e jΗ37^B)mEo}fN=L{mO\^*3XAv*մ3m( X lB>Ĺ1jHw'p,k1j"81c8xCn6/ceq@~D_'6 |CSb|1ƮQ\"-SsAԌ?P-Tj%7蕆+r"۟p8oZO~ud Jέq^a"~;LAl33bH*"``a=Xb;'qj*64~NI«Ixu;BvqŽ}ːFlT"y,&X[U rN(an逧xsq4ucZ>mFDܿ`aFccx^ TVR`=odLnN~JS}?RdKrbZNbvn 1?$)Hy&d|wJ!*l({S!)mmcs"iE#Y)V ^=./kn¾BJ/B:Ȓ&u{kl,<1;H;֢UY ,3)iH n{u\*p7=a{s쇢Rгbniu! /,x,|Rf]8=+~sXoXdd?YR)>^Q͠c^u m7 ("|Lơ[fuaY21ᔂ%6MiFTӋI|D}|OXztB-m * lIPbAjbt8ਗ3{2^ )g*?|ycL]7idW<#FJ0˕a Q,Uۗꀲኈ&*,Cn#4t([DkuKL1= &ק=|烄̚Qr2މQgѮdf ""][?pTqQf9|*=*6kmrN#tM7X4 HtL93HO=I>- čl+~ G jf@'CwU1nOC`_ؐۨ>nYKHD:sbo2Ɠ]`s2ȅ%g&`(K0c9fHJDE_ ?>bG8{h9' Cfgӛ=/>Tb,ѕGJ#VsjGڵQnk`;,dg#1Ѩ5;!DK\/u#CJƷɘHx*5&s)`-guUZ4 Fr*#⭇3ļ!ןxIpHiC oRR-~X5l#kXY GRe"3=د=Lj%j y6%EjQQ.-̊ȺSCF{pљvѕ|_C:ӹ"$ UVB,I {)x똦3H+4`(%a8"ba`%Gb0}ީ)WछAdU;?F:/E I`2f/(U P:tb^Rеy!4U%u'[sT9$0E>|;5L GZh a_N.ĤJ<ok]}"'ow3`MR5fm 5фxo(gŦ9U=F˾KI޲_$)I'XݦGBo7c; .Qq3SHf_խw}`ZiJRJKfx;(f ߸͘(&^vyjy>m,blNi}\6p|@±M4Xcs.h_+7fX/Tr,,F+"rYi4h ]JWͲ@I) e/~(: RRM.9Rb:*̮#_LԳ ?sZKyQ,_93 pGj Ȗ]<ِ}9&")FXBzc<$z+ړ('E"qUZ\URۂ/L? [,`l 6mv fAE#*I'T@p|Lt$n8`I ']9kyynig?̄JCC/Ɂx[}k.u/{=}"*^jB7Bhf>z ` Lz܁{L7*ͥ(ڞDhX/&3݄jiYoC-6qM}$=i 8)zKNLH#uw&B gVˎʗ~Y'A  q \>}. \,QWcPJ v+6o1bufAV-cl>cѮb7=>_^;׫I%d90.h*X$O-kUdh(qs x^Kܲ풻Tm̒ /k&S Lŵ%'1t _瑬`5^p!;RAz0јg@7 $,m?Y62Y? Z oEe - ±4.(.͒aGK)Z;(&1ov](t5]5PFo1>yIfɏ4h}˄+٥j7)?ͰfΏzڒ EdbTtE|RLrtYM{FcVA|c{nTjWojAth սx>]V\@ 04 2C=$ye(e .9GVwB$͎WUTXm8P=Zɀy9SMjmRɠ\驦t&&u-'Rp`km-KӏJ'6Wܘ2wMo.5kfTnߠ$9"8KmŊ? ;W/u?R;q)0DDm7 'yFTBoz\wggS Cv矢鿕Sb H71H1 G!5av<._E rqxn=4wb5 Sw~g辇.q;xH[[Nɣ:qrI$u2{a:yj"MdF .nđ+AZ.x>Xҍ(ý-_ģ_(Ǔnѣ/|Q) 06Pv0΅Dž|?L@LS+sp@ &E# IV 2 lx;]J[O?~z YBG߉靇oyr;T;H~x%VYuf-wx^*9JZv'$I[䔶 <_.xy+mRHFBR )$ Fm-^뚽DjxM( 4`CvIA7z$_>F׃跫ߦ {E{3[eZU5땯}x*{k.,?í(p]x>W,^4P 譏vӚ%3UtrkFomJ6F>WNxo -YUH}9+f^2|<[I˼>,u&-=׊PnWK ɁfQw >$H5Lˌ8b01=\}Za1jo/r^S ف*,D5 '_,XI3_M0SXE+Bi7ӌmGSD~fc^C+t5da1(δTʦ.Np~ITI]A1<'W.!РJːUl :1q.8}3jPL`(c&3ՃKvrott㘷ƪCK5_#t0s*p9a,>ib4Z߯^IS:$J&tquA/y>ۻ !iJ 8 [vRnGlDm,chP4*2o\2\ 6Jg8ZgF&f$C&/~[{`y1e5B Gw8r(llQH?UeH :OMZI.2^UCPφ>UZ|O{Cߑ~űILBQέ)+Wqٲ6lTl)}Wzyg׷fK vI3v5ge[ RP^+\IÅ\J.3D-߆0ovC~P{m2diB>UZWtVz;o'MMB8l\ ԑmn> f,p1T.F\=¾W{%k_ox [ ܬ@O_c<-0vf{CCŀE\ѥ֍,gXTT+Q^$QC8XxR7ߐC_H0A7ʸf! n#wniHA]~s#%ue?^݌Vs-ڢz{IE+"-3$D(>R݃=dQ?)s?[-TQ/ vkXa` rdyWe ]M@ 2,0|jV>,B2@/dFuL^ =VdHl>H|3ipu 62Yxp=y?Z7lR8FqW`sg=տYV5E"~yp^;7~CV0iZC[KE Wv4ڜnr.&C?!_#gw4e -m;#[]l[tFu5)~9&oxzBjGo7H rv|#>/q^@-z eVwOL92ἵ?/놸ZJ`Ii~Ħ>Vһm,%Uv]od >O4V]9=NqmnoC顒+^>ۍ 01)%L쀆ZigvsiN / ' Ǧ!4Nz085J. Bxp6.p'g]W $v\vx %Ԍ-C >@axs8 j@KǭqվZ ~̌["SJNf/?f)W!nZ\"rZ7ڳPD6 ~h(a!g-dX']p`i' +q2F!2(  II~i7QkWӌ(g{Pރe=s ;Væ]  j`SXɦ6`⭏GaҞ^yic4#CiojMASw?,hR#]rgDݧ^X7^U- fOV y>:4dos=3{ <(|<( %Z>Qs03nt?'H~.~]4*O%y@O+.Ld|ml@,l=c?OѰ9>|+>fKޓwabJ(Qb;!s4hs6Щn4X\q^e_9_J-$lY%E0GCVω.eo1M:d %UBS,M|j׈ UX°n@JD?"!*[ +A^WSFaHXo~4"NRXvj"h{_D/7 ;m;> H ɄVPlӧ0%k]$H-]w*ćyx; mB2-톂MJAY9f<Ɲ ƈ,'"ӣN[;AOe y${?V7Y~:PR z3+$xN|%ǯcb6PZ G$f!D\8\瞌oO-/kNB{!/HvovQtȣ̳  hIA"%㠮U I.C%Ao^_Z֥>%!_;tEيl4[k*а0tAcHx+,GJAm~hENx=L QA:$Uw[ a [}1ew°^(JdܭCH5oXKOVM1<J 6b]lcJ?+LzOsM0=_[f9x.>%%Xxhܨ9ϱF]"q`k,SnjصŚLBw޵,b7X yk0A;jE'g |L+_3jCQKg83Z{J4}/v Z?TNi€u]P|W56V?,lV= UP| _'0e(q؉^ĤH蠣,xЃ^k1ɆM_3JRLkU$j #6};:۵Kj+4 A!p0Uirp>WlGEDKopv\ǯnt.wv##c۪.0oݞCe_?#ӠD]~>]v~6~=~G_^4Dn> \3~:3yt]?f~:|\s~>O}m}w}0 ^>~^1~m_~jayy|`l`ͺR;}U(j\$XEc~5OH1xzzXUy;t^WMQG Kǁܭ:P۹#gȝQ׳ؙ(McCTTSu*OI =|ߣ}S8xn;* nYM^>$ lo;>ÿI ؍-B}J&Q%y-,m%}V{f(-M&ܛ6z~Ҭk{xaQ&Y-n/:J HJXX*h5(-ZmDRp]#-՞hħzh`D:o6 '-.*c<*ofm>Pܯg^nr<;/9viY%S :]~ad[FuRYHP3S;<]`hSlP9YSRByEJ?ɓ ݄cK3g_傴A e"D`F,q}(7ۚ]ya`G.<4S]k1^njQi _eҌ֫>z/T`/U{<0a︩D)=9ϑZjC.-bVl~rb}qxgso'.^S5u.wI͂7+W]üKNÀ\L^ ϤNCU4= %-2NZom%.>0˸mrחx{ U04ă[i_Y-J11^ 4%plڬQxyRKfٽyMmR-A+!g!l\km b^&b} 89=Ov=e0<+OtSMԯ&n&*DY5r2s$gpH5?w>S:PRr@"|k*2Yn_^9CcJMUPUշ@ ޹f=Z!:h]V^܇܅M" _U⳪ֈkxmCTt.e9uB+wjlrOQI7ʦ-GwI%nq^rng}8c̍Kn89y8 AZ= UBF<:d߉e؁8 >āPsP&6SߏyApDu1DU'$ H4ߟ*vnYu^aNi`UfZNWU?Ǯ[Q3, }'(UB&e'zX#i~39˥Y߾օ} '߿yͱ2tS⣟Qp#t.Lǽw-"ICS`Lxocg?Lk< ]vLW&)Iq*oQd6)>t*#0) ":@$ ],MtV0e L-C5;vk`A! @udoP+:i_1Lits^o,|Ǩ~ηvD|t~/ZR-'ۚW16! -7;YL㋃P9yk[nEJ:Ntz] & MAf`IkT 9ŨeA%(g&N}SrwC:  *-X㉘I+)p3jw(& 4P[_֠tñcRJn$ H<}TҐ ZfՁ~)Ӯ+WT(ShdzuItHh:!d5<_3}. aXX,'[ptlY mJM1!#_@ק"4JG&Kkr"EJjx[hInj " ㍿@)w½jJ9u.]N:a[`:Qa|rPܑ떨4 'gT6OrI,zj01QE2iʓWoGY Dpt9r>21gש=&l ;*%BvQ~'>M;Eh tIx! Fbw$ekR^8ؽ8.tSQU{sV; f|BrbC౲@[tP9&{{ 7Q< \躋'I#%Ц5m˙.7B *X3ڝoRj.X4 T?-YpS0hP!J[+mUӤ֪R95i]F؁7vƩ!lOc@CcUV2}6ft,zhz> X?^zHP4 E 6p5S4☡a}pb<9:P(XG { JR}ICc_^$NBAnW 7m?玾@sX[^:{=QozNڰр,ΒS-ҙ}VŮ^:+if0֧-/xu4-NN]] 7kmPT ^++}?ysV~?)9߈f N6= _zRj%$4\9%\G\~=hch%*Ja7Lu{gɌtsXU ih 7h(C#ʇ*4[>Go =L L*R"+xgUEPB^^]1P+:{:~Cf*SIPi\\x;n+xIAz[o8 A;1Wv}O)͞Q!7)E\SĠچh)mlϤ u~wNS"'6^ydOX0VI"n}rPc3 ǜN{_4kww։TU2NWŏ(&=Cֆpnp5Db;dQ_}1!"ˁ!rf]^2X/q3EoOu~羰G9^"9KcBr=:4w3z*#-d&hs)kI>Be_1`㿨D:?nJTwznYmG R cxO3 d]Q~7󬹉#"صȞ-Y֗"@Ε"!&sbhZ5"aS ʛң$~V#!3N_ڃd`&rDY8ler/Џm]F7k+ fB<4y  9hW|6TXKԥ6ԏgchԀmմa͏9&k̈O4c0z\LTI7GLiRÒ|5[mc8-jOsOs:Zm>̢_U[mYC4/۬]քຢf1k>F˝i'aj->ׇRP`Q/>/t' deضT8N-l0#*uwXOb9Y~1fJC9Y+C'xzj%AIR fے?ڛdOXÄv$JVaيECӒlVX;H& r>ڵ0t.vrTv0fU1 f'1ӯ.f 蝇Č&-bO#l_K=9h瓢  ̝*K~.s]8yDK';ɰ[Lىdʤb⇥<1.puVߴ q>S'YƒgcQYTW~ '+t#sy(ƒ5ԗnwLc:z3)`N3)NJL4OpI>n"M|&YZ!"Y?ld{s !z>”j+w#͐hQaEmAel3먓ZsM/)$AT=,f'2 6yFcߺ6^ Q=s.@&p [?0Acx=ýL98` q^RW3913o5o}jAB۽Mbiмj `3j|NV|n곆iWO@ǝmEY Q_?-<'Ö.L41+!pO "NoaLt&zFJgj0g{:縎J6jWCJʹw0׬`RHmg%7w2 i>I1*moUS>R!CF s:dvV?Q8M5T+>e:ǃIO%+Қ:6jj{w+r]A('a8;QR|dއ8| b!]FWG-&2{3}o^!QH K?2-7v rz8FU9#nl .! }qeI4ya0Cx}p(&&!W-/P0i$P5/3 [)E,|&Ug`Y?FQ^*bK#  q!s#FTD}]"2dMP=xi[g%>iN6 G~=x5Q[gld`$];{P '5lfZGq|1 bb%#'4R=t%!s': pzRp ccBIބ&i-y+O*Dǩ/7ٌ~yQh XΩy5~4dpmeNch|Тl4G>uA5u +iˁ$ŭBĝht(W {Bu W9EkW(Rt(EgfllCݵ >(̯3p6IՁ^zix+3zDͨ^/)Bϭ k+TƼ)%3Ѐg`O_r3_ s]پ5Pɺ=iˇ]N1KAZfI9ˉ;!娧a+DC tn.EX T{D!U }MY <8+'C[YڷF1 ˩Cx#0sh%ڲ=&~77*X':졺K JBF +f\|#Ɍ@ܜ$Hх48&o"<Gw00%%O~"r!^,tۧ`3!Qfpvm$d4WOKEorOE+|w&ݢ[oqMf|4-&8=Es ݕLȐpvBD).;A^XTŔYcHz>Ks ݁5]Y}*[ZP#[XH8ѺuQsJsgE0_( MZla"5iOzBph[1mѮyKzHxjW=]eRP@C;wJGq$q(]X.v^py3R*ͬ}9*/[hw iϽ:NIFJVU#iYn$E.Ҏ]KqJcs˜h.6w(9[/KA{,+zӞ)i4};>1یB-xO3V?Xq<;^[-+>L:J}X;<=v EDd`IC4DU 0BMÙ4b(pӿ9.&eM܇Ss%C1^U|N5}%R~~Y(A=o c-'r[W eԭnzP4cLH^O$m[bb;EE% +cpեX@^vLf/B$JٸzS*Yߥpu`VƝc='x0{&6Vb2l8sJzWYA wD4K9+[G+Xn$xn?!X?3@T$FYFi u2szYk IɍX>j{=3p󥾙1B=ܷW||a>jCzPQ&' WS 7cy5 _aX+T=!Zɢ$Q4 ",Okp>&8ը>ÝW^is_b`HuVX"kUׁ #Cvы {|oRNQ8; M`(ېHVx]aˮwZDўgk^<s=Pb33Sz­Nwpd- bXΏwar'lAИdF;yTCKNTwjӀ1%ҊeL4ۺ.{6(Ō$^cɉ}?.J?JfMdSM%5̤G܉XcSsZpto/.ϰ|eӊ+}0N/aF B BS<()7c-{2^~:W_8Ap $+aƊ%LZXx(-&'!_~BQAEN[ OiiIm}7QD~{d$[_Aj0gTWlxhgCsf*pw0 D9B(JMJ?Q$ aD̾i~F~Wˡgxj0Iue̚,]N&P͋a_LaA!2uLO^f:3,?[@%W (\k 1' lƶضm6N۶m7N9gg57Z3Uw $QW͓Ra/ k–Aovڵꕜ-]iBFu27$\\"c}'=^*5Xd;[ҳKz$j(%_6tG2ޜ!.֝3*2؁8 >2gb)VtOT$$>eU,7GLbX{n|glu2 V'PVOQJMϵaVy ˻YrD&Z %<&Lf`ҭ ϑQw*Gd gyI{ohZ=Uw{+DgJzٯ&m_k@Qщ#(7t4%`;Cm jC&@{Z }"R3G{9tSu_k}aw w 0.V8aY*y|50kvfUuZvH&t)P:Ĵ)YujWNȯcZ[A3@%XF$ X@tKwY;˯R@InU 1 mg͕ݳ@cx8v magۦE<\ыڡ 72u6=LB3d&RӌW L̝ӕnk/TW0<.vK_*>BzbvgsES Xڜx!՜ 5頝U>!p ŤYy (ҭ2m'T3g{'fqPGujku4_Gkod 1hG,0L| n)feiR@{q;'o4wFkAAR"n =HJɪtZbi8 4+D =ʹvY2\]a$OW5W&ep 4{ P~:(+$S5&jiUE dy[@Ty b ҿA f YdЮ G1&//kO*zk!޶hV䎁43e7~9cV9UBmvѣ No[6K7yX_(̝DJ\j Mصekk~ύ*44+Y-RW.Oru\Ԡ"JwEB@-Gͽ&?P6 $Nǩd;e ){i:]I:7AdDȤJ7;_!Aoqڷ)m ,upd[ >*׎&2qA`1 iI/Wa"Lړ@P|TC/"0`V`^{å}+9uU@*-.Slˁg<s0v; `)D,rsWI uzޗe6j&vh6shTm}퓪>[r7gQyMOJH?Y QF_[;x)wN-xPc+R)LL};{׈23e+< !NE6pBj!pEC,O?9uṂo:/d(Nn$P铿:ܠJ9L k=cL7O=F?O;lrϋ1n\Qxu608@xd 0=̬*w[J nޓ3CX[)YUƵw1XEI@*;[[t'bUZZG8d}/>J)h[PXQl9`nD3%kd{`;C7#NYOzw/pFݹfPgrwcBbAPbyWN 3Qk6kJkjL\tnjU2JhS#:DE|fzD)qo)B\TyK!BE&։+?%'o\ scC)A:o|4/z3Id57ƛ@Z.WWu)XVУSv>vj{143~>*?ZWE3%H$ܸwȑPM%P]׮{{:߹M^A8[(BBngHɉ7wy4;Փn *Ayg b}`Sg;i%2 oת 3.欁7+g$1h&&T>%T@}f>Њa$̨;5~niɡOsriTn.WsbmՃ ,S V ɑn73j?F1&I~^3zⱌy~&S/:-)wNmUvʿmxG PaaϹn}Ќ%0JLJo񓅨\HYk5EfRZqNq#㷢}ZU<ʩ (v;o72\>T|!eC^RIAD:g6L25 O&On\ rH(uh{&~HiX';T?D\.Fg @e)G+rGW|3޳+@m2*:ǭ@/ b f/fyuH&o{4}Hť.؟]YҰ4&'mQߺO |0^zU@ SKZ|aŌ{<5 6FՇu+pM4a7KIq*=Rrr9KQ\w _\qZ|98-8K (V|~DDŽ"pcz!(>̼ӷOVjhwG[>ǀ`ĵD,oU)^OLMmU vmͣt)`Bo1+g{ߵMƖ1,X\x0 ŇJQ˥GѝWZcLq+/ K@A?-4v̉$'~ 0-+ŒPYX׉f'{ݎw]ϻ2myXzE6kXv+&y(TckoruE>N!7^FU B}*h&\"9hT3@a,xnREOhBF~'[LLc>O-'d/!t赯F硝j?U Sˡ%]Hvn²@p>t@)N.Zˏ='L&^ѯZ5n(gR1<<oǃ~a:OPMwuV@όy!FہyWޝ4!+֋RA^u|de1ׯEf$ԟ#F*}&'XN X푽8rPMBϽMEsii ꒪  59 䏡Tђqam1nn`ςGTÊsj'TTR.ݿ)p{{ԭ+0)hٻ!.&-8Oz}@ICcҝcvzռ^"דJl>ˢ} "5FJyxۛbYz'Ԭs v}dҥ I2Z N_uZ;o@Ry^/7HĹ.`y}| 1't.`Lb1Wi ڿT#.7A (ՄSö+TIsB~fҺVՠd$0@A4P_ihfp &^sG_)BĮbȐOY U.׃aps&ȇdi=A;;#V[.K谠A|`U y]#L=Y e gX5Hq];#VR^v 5FʍWG!1@SC11X!Pj8Gw¼O~D/; j)KehDۭ>q$kJ|,޶?t-Svs2ek1g?`YR@> a I@Ed'h3~?j7W:qٴz[7TY3-& IJq&ȵwoEY8JY_R$wK޴3jwh-"!x),@yR{ NcPctr=M39%JЏʉ<[ a$ 珍[%*z%MGUНypx.m'fmCdrj /KΘxlCԔ]-|gei R$kKYs+Ҡs*c?SonNnF]d8JAp[f/LA:Rm*B3Vs艤<:VZq=Eq"G$m[;eE⒊OiI̧dev^CO-*W夁.Qa`̑^-o2Z*|h;8m PC:@KĎփJFpoxۇ$d~*d}\y`#/}سR0[)Lpv֝iP/?IX?㬸Y7T*bw$[׷\w13a]>eB@_ ̑qrЕ:HP!/_0V;Wz+2,j$cXeY-W=NZd$Bؒ'O=XoP0ۣܱ@&=đ3$<½ܴO^$ZqC.o{\QGZ߰ KG{p66Bӌd;K}oT%p9h&9+=(/f&xTsp= Ǯo׿b>}F9"fu3lXn1SqP:q꜁WzN۴RGeD/(I%9hV)Ylb&W=s *{ E/\9m /y ٭]4=>^~E$,nh$lHpS2Ο#N k0\{f_vEj'_ҚT?/ηA5"xeM?}ؘ>/[4 /gaNM^;Y2GJLc׿)uQ͋(/>GײuHM[dd>¤_P xXFwpLm$_V6P803ڝ]4o 3wVZʼh!6V >wbVG-[+~PF])KGQ|s?,TNGC&銵k1і{|)Ql\(#5x͊{^6oك?3v|:Q]gK:J0 '}(sY}ݯb[- PΫ0'v7\ E"I(7=n*޾%w eh"z qAetg喹w^_].͠` x}HolN>|Rߝ5lcCkxYt[+kf{M8R:a'a(_yF5KBJ4oχ9[O7/u>Vͺl߀7vʠP3"BI_zisB2Hù.~_{x7DWZ$}f.x]M>%[D{j[4sp᱘ŏv.ӄ-W:n Lt !Z n$G- p¿78|,3ݿwO}2ClA7SeF{M{ƅ舋NFuߨ'ѷo裬w*T;wd<;#U.Z듲_qtWt4~&~3ם+.ծͭ>xĮ)[x= >6`6|)Zt*JdV @Y$`,=*E㗝DX֝X0_`zP s9v~.Lf+_͖:h;OLe)/SKyP} rxձ8eϓAɟcCe5Ka3ٷLDͱ0S=C"Ʉ2;ծ`tS=ap_zgjh }LNůZX3yєWaw8آr=:Pˎ zRf0d˥fIxL߂tHH_F^Ou2Zʃ[< \ MC6<Y sxg I4[;ٳ rtDZeLgYP-/ޅFLN)R›QP{RIr4x"M]1#-6BV_jVh.aLQ\_1/[66 l:<2y LNQ^jrk Gc$L~Ʋ {/OPM-͝U3Ola{=Óg>Vn6DŽF&3Ō_zم+,';{3/)6o <_fP|^)v)/l)e].5%_8aF<)C,#a3ODE{e.wUlNC=KQ:U',6)-z))ncB_a9۟Sm/in_MLNVл$PR~q](uMgum,a:[ж8̞#`jܶw=q7)]ZVݬZN*B@%le!_L$&j9{{I/FW* s]-QIU eZ!s *۔U,3uAS-\04i,$56YT|)~-}곰,́B3PcM7n-;n?rA JxnuK ߲CzhLp]<ۻH=#)9o 3.*aaQf *@3QqZ({*X!يS\FnebM=2DY{[kB]>kΎI;ɴ#m1>>L'$6EI&(y4c.8HB V[adiš:k[5iٔMf[dk?Q]C0jkG%|9RfKӓ|xTK*FtO!Qgb:$| gIJ)aK経ezvcϕ՟ES}sESܖ?$-sy0Ǡ=6s$/k幦Mʋ Bm4sxu#O˙:F0ZЌĚh'aq8~0DLw)% fY\#@D-/r`xXTNTίXՁ6=Y.__=ƈ&KsguO? ꁑ1 aWl560"}=ʧTsr1qyrNÀv6uWv &rP .^Qİp@ 9͛E͞ >"FI=a6ȸ˺Nw'#n4@U0S U"Gp=(Glvu.($L҇AT:@Vgm^#)b#He]מΕ6Z8F;5րn+%^˥cnH"vR03\7]Gr4`Ϧad~>?nL%BqxSgJZ[3+`=|WigKxޙJlzH:6pV@rlg8,3qH9lNŝ8/7!Ck)1g&[S_q O.1L< nƝN>ѷd џ2ssmM+.zMzhbp ^d63Rͦm6]/Cuu\J[;󆓱`w$5(ꋳ4V8O4]?W#K!Y0Z*i~NgX̯W4j9l4cRF puB-~ק߼lFڹ2+R}uTYt7{v]=5X,1+^N=e s<̆pSΪkX p^zN'ؼekPrٹE/fV1 iR|WVanfXޭ`7A{bCFptNy2,žQ)zP)mxG X#FյmqW䙢e&޻-af"eĎr%Gs]'K?Erꏓ7ZO!jyH_G\$QU>Vb3'U+vSP  ǾXU\5aXc;.Іd;DH;_.=?[\D$g[ X,z/:*_4CSniG6, )$p>] ly/}}žJշ.4\P%^`| EZƐ@ϑeI:R,ꖸC^WbvN?XͻJCgĭ'dF5 ;v !"M !B)PʻiGp1f×(`(nIRs#ĺL11e6.F}}INtUWL ZID+{ K$2<'>XҞQպޤ0O4mΊ>y? CRP*2Ph85ۥ:3=C{DEK!kLJPs۴:ZCWz>OQ*gm܋YAr, :.<<:2UV)>7sF :ĒDH 0 vto#cښ^F8yыIijL߃e6=_7O7w>M_f#ļ,;uWgLZnx7o'ߟdC*XF"CCT@Y Ě ;xt5"g E_GW۫"x~>>0Qr}H#WPQ>a.}~ŏ0*@\?ݵ~:}%%̧WW.(&365^uB} ziH5_ҟ[Ј[@ M+]_A;™[jY$ޠ+/.4I6,sk?mu=Ddke8Z 5P^x*GZflTRFmIlokso!솓U #t?/Fe< ?7# N?*fR;d>$~7Oㄈ^u*[=UOԯH軰%OgU׋$8k7\[Ӧӥ}z2!Iщ=**-9Ǻd`Րʼn\۬&8~HM]͐ac;OG0oѦm<؉z-c\ɏ5JyO>M oyQZGKkϑebkHVq&ut0 xhvl{+O '#4`k/o%qq%_j=DU waTO]1pxd#mV>@4EÅp/Q/I%b%@䇭C5{fuj{íh+:* eol!k,o*&=b3p~ߥBBM*_H Ub( _Z8& m#?P͟fo7ܶq-ԇ ` GVˋ煮顅qjYY 4:gSeȅT(3*!:WS$g9Qny EZwf&E 3kUc*=X9=+29 K7~n}A/O<2HKW7؜xh7E9jE3I|>s[i@RIީ_`vWJ&Zw(@W Q+Qhb)y8E46x*F'^b=.8CuS?S_>!Z^>~6Iz7?#jp}k>AdHfaJ6?_L=Hl MU,pȦ97R7t͉F<|$VhD- ay,NK-6" \@fxj0H!9wJ%լUXP:Td[uI9 "khK)}WNbhB6RgožXI11W?m#/&$oEcV MX _"+3w ;,{Z Fn`ټɻB۳@?,EQl]e'Uqă pn~oj9?ffg>($ȑ]5,W9TjR^Aqh?7j@<- x32`5"ߜ2m ǘ`qU.v="%1}rڷt6ՋQQMcI@/s7d2`9u?1mUcd+ㅟ^g8E+'D8{D%"ۙёGhڴ8p9$?t4/Q /6R H2DEFSV ngj *bp=^4dVޙ,)t]@2x@|W)a8e Ri-yo RNL]ߝUUѢ1|ОwSKd՝l5qo:o`s\:;)rK=kٗ9oob>@/ʘp@Xp*>y{^h<L9r R`d -;st= t}ꃓp!=)FM'Ww??=(O}l[p 3~B ~1a&zgD\ȧHH q{'=mA}3ëȧ^ I@:%[Uy{-[/,,[՛%|GcW_q#:ݚy-d`fĄ?R{q nsFCn8<K5/reyuQl=!OPj*Y)*x\*&ռH-N.IYszs[JSƅ,B7L+=BSe4^ѕȍq_RKF)3Ƣr,;b"ǧS56.݇AU,n8Ltçʽ 9mjTsko&iU &g>DE\CoX#8Po+霜c4৭J'/Y4g~1B7 Mݕk9fp8AȎ1䟹}@1k*]`Mk $fkAotXlԵ-苒KsWI11QF5zRsFczo.+BAzxk08{䡱gCb 6WX]tY}t3 VW+k X+`H!4%jXPkLe1t3N ~h_;tȍuIa ZxOR[YK~U|;Eȿ Fs?kzgfuU;y"Jl&gS$=d?nƋO?N FpvdR״:*iٹkpp_fgwF(3V8\jP d(:1)OvND7'}qb vw:Š$cޙ1Q$#22Y /zgQ8\%ڙR&reKv.*UG^ҎȉpAZRjCjfU0 riؓ&_OS։-q&bϖ{)EKP0ˠ2s^Ԏd,w%^C]s6Ԯ\u;ޣw{CL-R;#C-wg#à۔3 V2aɞPC1xS2/l߹eRLJ^Uv7{hL0D BJhRQ?rbe2%h hp^r=6 lLEpErskeYv?|?Շ*Lq#Q,=pt[׿ev!7s"2&#rQC%k Uۓa\Q1 uJP/lo@.WICA߶B^SЕǮ(3Qqw_頬cf,}m&0<]jLhqۮqvZ`>^?>ٲajs)u݂ "_ *nLKN.jFYq2iؙ y޸tI'6d+jߗ~2 bb%Ϫj 0&2yYwͦƫz[*Rzӣ[kqUg~9oz;OEi gj׍: D:Y7,(6W =q"3ӽ}wkM+MۼOŁST%rUz#o J+}xuժwuid –_eu5d!  F,^Uh;\ ]Y ;B[9&<.x7~K\qI7f{E"O:;$} B%{GdmcR1);I_{I4'8^ 8w0zopa+޸#ѐI( \Omq)_J!`fUAqYڸiZm ^]Rյk'z6*OBDmYMjCG=#wcئ1tV'˿ƆYڱ䵞?Q;T }ՍoV}A<6c`Uqv|mM .sz r>Y[kCp3-fkj,E7xrZٷ)X*ptSjg1 ܑ%&ԛõ-ۓOBx_jWJ[g?N*9\č?¹-RElCw _>}1?ȟH}Fep )y'axD)^Z֎>.7Vca:5 j0'!dvI?7+"˾%ܬʸU sJi#4F&yj:7Ӣo-:MeWZ(M+~q 7X=#?UM?س7{=qRٍCp}m*Ru8:K*{sfX;%wOzozd3q#vK(&>l`%L|uE?ڻSeFc+Ccu۪xc44|~\~2W;$(%Ɓ= #'[*glj0{r3` >HnI`%?)kknܲ)B?{6P݆bDIB \/SF:GY^-*NT i@+T.=DサMW+)YN4Y\:^{ӈ!H 3tQsԾ亶n s\is>T~Mؽy%4:HdZ_\', -,RR.R`Ѐ'D0TQK[5Xuhcq4Ej z"[0x̑{| >o[FNI)YҪ.9 N҃+ WaܛOThbT+' uՕ;t:UxclC)X5XY?W!TwFZ}U7Rn ˘ȮS$7\g%TĒZ{h)/rd\՝tX "47U F˃E!xb6{0V5P h6QOwV: Ư%HV\;$ ӿI=v/.5{4;\kO:Ny&Xj:US9DkAÙu|o3e2Q,H+t( P YgC`&/}Rm%!7>U~KF ? q-D5*7?fWhmMG ,_1s'7(5)-B^J\}N9^X"- 0LdQG̤~iB5 ׯݼR>/ vghm{C+$v]6ic"_Ɔ"xW1KRE59*gt؜2w@gL!׸H_E%g,P&/9ʩp$Af:9Ÿ\XtFH,HijcEVB7$ema 71F['!},L\2Do &r0F“X|(K5"zϕ"8ǡ~ʕ= ه˷9~%EMPS6rQǹzEEz'c˚.-E7^JL5|Ƥ}f:?(cI*O^̻Ub$ a RLjےezAG <eSs <&V9Hu\j77-IKSNQ@}YԦc۳vw\M}hi<}xHdRNwIQԦMg<EwnG˗2Sf.VS}ꘅJ(m9Q}Yw :^E=;h~ӣɯnXbîvKqcFP% fJOqB>]Ue7:%_U7y w7<3//ʢz߁Rj1†=F.ٌ%]anxdsz346ޞmX4Wg!˜\0+{ ,Cs]x{&:|LD#KNb#pUzpQ{}MW9@41j'oMFX(m˩qho;5{T`Dp,s=>4꾃ƱV$=).Lx@d[ ~Ě=|sMvcǞ7В.}ѡiPӔNPEo-A*h8ۘ Twj;$e[ ,aj N%LBP$fɑ(s v] r6?FI#lϼP,mJvtLC~dIe5*Beǰj Za`Z0ks0D+7*cH:27h]/CR1P+Y*^wW"uXLt;a^'DRD"U9E*vh3Vz*}NV0kbmdbޝ s#_u4Vcw#s:4Qw 㗖dD(Ά$VGRoʓ0+nרTU5.:CíeYto @$-F2(3!+uAz֓eB4(}Ny) ;+H$HNkw~]19K g.t~PaMkDɅeHzx8N||mAWY1t9z4:V07ڭt,* =_!no6c?}_O $ 9Ѫ 9fN0_;"_1(S ̶{E{+uc{6Y]W殼Rhg"d|N M8޶gF=Im.cޮaMA5aM #z kL`N-B%h$SZHW^.`uN[T !=P O5L91p.Jآ^9M=A` -j(Ԟ}m4|mb# w9C5 ӯv??#vJj^l@8 HxKR31) R~?-mv¦4jn2m6`"GSSIomS4JGMÀf߇aڛpi-N[Ei]Lvw}*UwbWwDK!`|ry/M __ogciu͉܏e]}l:C.M[;F5$HB)Lƹ|!'q`d㊘BRQ6!yDctY?Y]GfB_Mz0`6-`:kET\p6g8oJv!I" ӱm@5i?M&_% Z:&H:AiV1-WJf~[*;{-W8Uoɢ2q%ʹY$/tWVFk_T%BF%ь&R00k x)mII͞e4K'[h7@G448v7x!lk^a}&p5df"5 lus(kHn冋c?s KT-sEʓ[%h)o;]Q*5Ѿaתb v{Jp$tQ! a9jOmJ1\ۯk<8EIt r[xZ}6=$, / Xͅdx" y~SsFnTNLr8j&_Yyi7=O%pbweIJ/%F:-vpV &y{D/1na1+ ϵJrw/'[ҽ0S02Jh*4X/\ \DmLc)ko\=^v|fJ蚲zjU,N Deoq"ulfgoQ$X16K !j7 ,^TAz,aAP##k@GWzt |F9AR]W:o[Z:oG;@bpn+i6V"eK|} KY}ʐ1oir#aqSefʭC-1ySB7r\*>*s#{`gb*Β1ZO"%T(X#3oڽj1&`E;v0s=̼MwrDCc a3ӯ^'}J4Zz#@tr({1a+A~=[V<ȬӍ`P5on[{c={Wl@⌦/:|= Qt1A4U]*bs 9!4ȤG}aʮ eIR;ʈFea4p;a>q~Zm9(\0 \LvZeB)@QK[WCNi`{jA!SFV5I+OkX_nft"f!3\0Jd")ˢ=*OFv3z4׷]e_c3Cc}*v~[6wUi~1Zl 3DnY`e_pT:UBTmVlsԿYsFȁa@猻{+dq5독 b3r!Y#pϖ1D.S;x&TP }B5 àGYY@ Wp d(Nwg1#QWkA}Nיn;R8Aԡ;*1LǾ:QxMh(@ :_$7ۑLN.sYFqg|8P; +j< (h׶pR.LauwLm @J <ϜH9+$s/%W,\* XڤX<҅xm ;]jX7\4<h3 ɀ.{}(>Vqvp#>Æh)] i1W6s,)Vjh~~ixF6SuGpe{03k)G>K$m̚RV$lvLM\~0u(F5ʺ~9t.*7$Al ߵ-K\w% P.G ڪFb“_qF4vá}vE/ᾥ;~vN;Oр( ]#%_ď52& @sثlj)<@hl^aKUlvPIlmg[ɬōg[E@D('ؔWr*A5ǼwKrՖ.0i}`mɓXEnz r@P^d704U^sINoo][L&&;D)wQϬtsmrDg:r#&y6iԙO}a))"e(2;>AOAi@\ܛ/[t~H\ ʆq^PO\36 _ YE~ P1`>y:~ QCE- uv|SInu~ؕX0uÊE(TiV^@4c+O͐:б~#j!:(l,J;癝ҎTiB{b`Q[6 I۰&iؔյܫrP.  R Y\k)aXPp1űg ~O Ka7kČ>juYs]2b0 *\cYsY(zHfZn 3Rt6$ /G"/3˾j2H?.?ƔIW;R؎OD jX#:=PM(C͹l+p+5+c&=ƸfC2zdudFFW^cT"wś!p ܌M*zeW>W'Ljt#?/ާ50nO*,t6eœVhW9`A }ʻB2SEEgE F9 ^Z s~DW5E[/:DN32Hi/>ʒ> !r)Xݲ:toxI#I[$ m>u!D~~C)˞l݉5"%̛$=DDb?-Y^86|ȟZ/TnVZh#P8ٹUjԏ(☶N{G̚D_5=ay0ސBqmηoCg9{[S̈QAKS[B5n)mLo/ 6%ՌfPFuŚ6AFI9ڮض\LX&_)S,5G㊆Eko1EBC, ]agQe: hx[h_zY_jhP[<v0*;ڲ ץH&ۗ`uJ3yܡ>_?%A _]u{ ѻ0ځ];w6|fGy<ӲC09t0OijHVs QcgX#ѥwmCn"2Nr/Wa+6ͨ8؅cV:Х:Kec844y._}QxF;e3%1 ZZg4Rf+:n8KoۈEv0aZҧ}ڿ3=nZQEj5I!e*w pMT 盭n#1Cm:}YB/NӍJ jL+ b=z&>Iꝸv@fD(,y%ϟ\1[|oАĮCҹ)F|Ukk2߉rے:=g?a bW>R2x#Zw'R&#b\$3"*_1U;(mC@>w,ƂAAoX?ha`e#jg'lGMCOWzd9Ef@ &}1yJ겥,B2/J%OsMq3lu*b3uZ~?%g uٹ2J(k)NhGVyr4R'x4!>CHayҒ!GX(ΥU履pÙckɑ2(ׄ_#k9n&~OkĆ=f?ռڻ<(5p3%]S74eqIڅbnVZfe|+c I u[t@-Kl Zp89wCܦP=$3ŗnAAm޾n~} Dxm[Tf45xszvD^& b;B dH+١HY! 5'rh4{ UpR}3Bx zhKv-Y* jͷ),bO_g UZ&eEiKYo]h"QKk Zf{pów#kҬpcې3[Q.6ÁcJMb(23"29!.)R>s_SPS/?1ռǫ ۊ9 qv݇B>ϵcg7ogϑ/lt갖3hboicn;^nE {&O=UӳUƇtڀT@:udTaS+alz߉/W%q.vnSMXSX5'AFAkKrjGwl`=ri"5QMB>|/y}wV9@t%Llp;3uf$O .tE(|k̽+ɆF}XWˮV6xOYr(wHup7d1,}Q!6*Yaދ'GhKl& wF*Dܰ(96y^O/6fHcON.(ܵIc|VYh K aۂ3ӯ}xX]MP1ӏmfe!8ج-1%@ijM(cg'.ܯe#R4KB|S֡yגLnU(BK {\M zyn }$P*R37ӊKX[֚ȅb ­h![2Iid!9Ժ ?̑QT+k=ҡM0ddD}>JE9 Զ|T^ڢ>qKUQq" 00rDwp >;u7{ 0ǟ$X<#/\$Jm!Mv)UB!"~ܟ@Q+$)U~,[Wq_/BY%{v jW}vdR_l'_E<_R :=SRQ/:55u:wtb'5<{6(Qw`Ʃߊ4 H18j:XwN$apNX.}K~wGG'K#/{E~5\ٛs38f} cuH>b0DZ^*t1TIJ ^&w|4bp?l^d݅4Rv+C^a2c0*դ|bR}xKߑ X_ݨGVcdOzBҖJ'[jhJ{Y#9XHrUZ5@uԽ}D ~MYZɜc8x4YOngT5 ].'v!@#Xi-[{BbOY6OJ (uiOżȰ A[46u$kC|fZ+HP:]O™w}I\Gw?J3_n&&.݇/o*!3Q `ƚxR 8] @ܘ+9q4:\B,Rg(6øqlIȷB~ԏgc[9!9S˲ӫE]Sʼn@G߈ĕH3DOhMtqIoRr7A}ظ6nY,e9YE)#=^Nl#_C74ۿ| 1X'cݤn.%sOOkGiL=#2 fDu̴k%il'2j6Λշ{1LΞ{ҷTi1QW_ Gk-)]O!]o(MGPh[ ~&?pP^(`@;"ϺyOO)ղh⡜"-r-,P7o$LnU&hǦԴ @oR^R>d PŌLM^0 6E:}}^mdC>hߪE9"3+0)ے( :?M6ozGe/3__2t (Dȏ[޿F:k(R4c ohR1p-*eT.!Z0/mld$ Z8_G_2#"#M8%bi,9}i{Aw}eNKBaY>'{A9^?*U|>s aӽФ:|Z 3D;9*?%,k6 Y?)ˎs=(͙S@?v$ :-kNdtD.;i@L%J:rWGhDKٚ PJrd5x!؀ģU6IȌahhm21I)G&z% +HЏbNОf ZߌR,g9@FG?N{oVvA )ǟ[w{Mp瞷L\VctK\i}22$pw}C8nx\wY!jenbOccݵ햼Ó(kmК@'G=PQY]4[!!BϜ *"Vh 2KFN&7G[ud#7:~"oN&~(>,tOH{oh?m#|Eo{Nd񟪣 NG2x&}'rS>+'}PhU jFHp$o{搇rǹX>K ׶g+o/ p"^C563%f6AOvxuon.H^ڱ CnC@~{dDf_h^InJa~/ǻFp:gRXztɖ %_͛D8%-%@5{;_Qm;hkx{JR9Q/bтPT#GIeJTAK= d1Oq:S*/)MFr Ubߺ W  wS9Dyz :̡/10c~kJLVV9j=rUe̒73yb:&E=OTSGEA?t1۰ŝ1-Qex:צll۶mMc۶mm6vyz5f\J&`OI9A?֎pRP<`eQus2-Qd\S] C ҃ѷ8^R.YN1)yIsҮVdQj F#7('16UJye`)W;ghOx؎9?`8I~Zr&Ο4: Еp;a|0[$nW[_o闫-'p+'*?T3xb-$w)kС)_㟓) TZ3Fa͠b++GkH-2/}Og{|21d$LC HmQ9rēDu<̅M %hDaށ5']>_2#?x]`Cڑ3y~4GQ\DGAd'Mk  Q=2謊W Tgzir[FjЭ#g_P:c28 NJ\{Q\_@{q=2ALsJM5@4!\hv(J4*Z+qw7,4bX[PTk&FD?TG(AI QgPڲk$Lf)&˲G;l c g/Icuد2^xZ9xzWo`d+V/#D&+z, lh0M Ṉ0`\Fj 0f'mM.lH"uCU'w G4>`M5XNbye[dT\th; ʅ*Q . q`?jv<ka#^nGs=k-O6ڐ˻! $:|Hnx=!un8Fl\H f)anz7o̺'|*>{Ղ.X5Bݕ*&d!eb“E]c_zh9Qp L>,}F/_l= #$y*9ƿMiOL 5PScݰp?W:<ڂ^y%CZ#U=M$_ybz΅e6lCc%3rn \[E ^Zb>\|>.EZ,"yH %?Va3; # V?@>0Tꘞ)Kc r |zE6peg˧LsJm5m.F-FL>WD+ +¸ۈ'qW9&Ƨ5eN.^kaWz~Eh^ X;a(Bդ٩1̎it@Z*VxVMRe/i~ l%”G%r:x\䫍6*wh߁Sxjskh:j> ]3ԶWm֪:9!l౸=CBUn(_4+I,ˡl7MO4eT9 v~L0Bir/Pֳz._994<ޑ)Gijc cRr{ݚ<hهv(OcKm'T`։߄,ux$3-\aO ~#k~ 2(l]` |)4Ŀ45; ax|۵Y^LzCv.k_E10u! Eov.Vpge"Ǩdn"/8- &qlZҏ@ӕ~98Y>kfIBeP!+$*ܨipTUbuԧ byXeZS:W:tyS?)y:ORVBjJ;/ݳokznDGJo|r8EGgz?mK'뫛dr [db^`7KϥK'_ܩxtWf3]zNq.? ?Z=L8p;p*,;LTZeEr8>5PKW\M`wb> (}s2 [)$fRZHOF!Q3j#W6%D) Edh͸>-b*jBePMINbeb`,d`^wi3JnCImDxX$emb@RD?領O`?Ss|YOIG7ڇ Nu9tMC/~w7Pv>G'[yU.ɀO}=҄ߡ+EG!$rp-R57jLju Lb}Tb I;L=Zꙹfp>w@ zi" Oy& ʒ^y:A. .YBw@[Iɻ +HAz,h7% )|IP:P? $ MWn΁J'A'3 %R n?Ti݅JyxR8Dx|'5ߓȧ%Nruo,D7 0c{DJ&W.=0۱.][ih{OueպgG8XO/LYL<3gpp{xuTVٗkdIW1$۞,sg#w(?+.(O(>f$ҀaޛZ`WgpU4wf5Kx566K,*}ZnuwX81LУ5Nׂ:6(b9廰-TqוKibuJ-^/ר)Kf3~ g7UK:c@IMה ^,yAr$v\,jgmyc( w}^J9ا^[;k! 쉨̀A+J$M% m}}tN*(xϩ tŗ~Vز ۿEx'O@5 4y]؁CMF0*P^>8NknMmxc^Fh#|dD#'ǀ$'븎~iWR+Q4b;|\*Sswy3}ra8Ǚ}sa;fEԇċcM}g|S8A(֑v(f< 7б#rvG|Z\5y}?κ K10:rd:1rEuQ,&JyiȟD .Bݮs&c obẢW1LÜѹ~@4{ؒX\x`_ylŮ'4 DxY=?-fnAYګyȚj_ V93rtO2_{*[:TrtO̍6XZ&k qWR E%Z:=tJRqh4Ei+I&2+!^"u=qb76LȡOYd]/$՜x~G۞1hv+;775p]o; ?⫖d lYJQdXRJ8|t']5&XgŤfs@IqSЭ4C缇4,D'+k\5ے[2:99#C_7?* {ЧQjE  \>?!b`|]%ԍh J|模d,5sA9&/ o7sTock|7\yܺݸNf(V#eq^_ k 6uK5 JNa<#~΍f7:7WOsY: CKl`q)i&7MS|;iEcXKvGjVJہvB^#ea\9`OPoǓI3'%h Ejc, fP{fEn˥gr"YE܄,[| JԸj:e*+3 @} {^dK[7b؍ TşLfUյo=tkE͟w_|[LnI x\}JS]B%|{!Â6CgD̈́~i&Lh!KXy~CJ\a4~}*[}Y#`Ф