plm/0000755000176200001440000000000014742464565011063 5ustar liggesusersplm/tests/0000755000176200001440000000000014126050001012171 5ustar liggesusersplm/tests/test_Evaluation.R0000644000176200001440000000062514124132276015502 0ustar liggesuserslibrary(plm) ## testing whether parameters in variables work (bug by Ulrich Morawtz) data("Produc", package="plm") estimation_method <- "within" estimation_effect <- "individual" zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, index=c("state","year"), model=estimation_method, effect=estimation_effect ) print(summary(zz)) plm/MD50000644000176200001440000001720414742464565011377 0ustar liggesusers9100eb3ba3eb7b253e99119cfe04857e *DESCRIPTION 2b7f6774f9fead88f32f71e1ded6712c *NAMESPACE a4694977c6995ac513dc6fb683b7e229 *NEWS.md 5139be8db8cc86d3f49c391d091d7535 *R/deprecated.R ee26ed89a3b0aa186753c4aa695d9463 *R/detect_lin_dep_alias.R 332d89627f3ed470feefc0af78d05a95 *R/est_cce.R bf48a2ba4593617e2850b06e45747b36 *R/est_ggls.R 0f90fbd2408af5e63aaea929b1534593 *R/est_gmm.R 0d308c30759c2332706a7f6a35808190 *R/est_ldv.R 2d8977644f5eed4622115a54c8e489af *R/est_mg.R dc0fcd431d7c2a64e176838d9d7cf2ff *R/est_pi.R 09afacc40405fffbb249e3693e286945 *R/est_plm.R a91f483b7562a93d1fe041c8ec9bbafa *R/est_plm.list.R a46cc27f4cbed4c9d8019073ec9c0a7f *R/est_vcm.R af22ef5e665d146b1825c822b603e473 *R/experimental.R 50969521fcb8c17cc6aa125788b5b07d *R/groupGenerics_pseries.R 609819f5cd60db6d006680767f9823ad *R/is.pconsecutive.R 7a54b9b63e4017c9d57893187094cf76 *R/make.pconsecutive_pbalanced.R e30ac74532ca8c7cafdf2d0533e115ac *R/plm-package.R ca3cf21c5cbd49b8782684f8159ae00b *R/test_cd.R 41375c7d16106487af92442c7d69eef4 *R/test_cips.R ad92403ac2aff773c5273054aff84f9e *R/test_general.R 478449fab972fe8495ac99c2dc5d8e62 *R/test_granger.R 3404bd369d51827850457d6fcc596a1e *R/test_serial.R a5a5d3cd845480f57740de06b736eb10 *R/test_uroot.R bb589db52ecc297061fe112893374c48 *R/tool_argvalues.R 373ea05059a859f7f0a097c486f2bfb2 *R/tool_ercomp.R a2c8b2b7d31c11e290a41a912ed7deec *R/tool_methods.R 2a227658124745e52f0b3594e3138fbc *R/tool_misc.R 56acde982c967053ec31833a282e1e2d *R/tool_model.extract.R 9c0bec26ea270784279474f7796f4f81 *R/tool_pdata.frame.R 53c1256ddaa349f47427c632e40d7efa *R/tool_ranfixef.R c6743391987a7498a767d95cc6afb233 *R/tool_transformations.R 77167672c3a2b1b1baad9a05fc4162ed *R/tool_transformations_collapse.R d2403d380a4adbbc7e19a93807570ca5 *R/tool_vcovG.R dae543ca0f340484e3043b4ead83b011 *README.md b4114b5735502bc42106f4c57e4df1b6 *THANKS 13679c9d320184e0cd80c23482604a93 *build/partial.rdb 0caf7f4d06856c7c1296b3cb8d0b3664 *build/vignette.rds 64a0b1f81e7e59d72fe3d95cc39421b8 *data/Cigar.rda ffe29c0740dd0f297a6e03257f6d2c76 *data/Crime.rda 878bb03f6783f631b1479c5498551d92 *data/EmplUK.rda b1f8bdb5bbc23ee9295c20d9e3c86417 *data/Gasoline.rda e481aa0aed87e6449453bdb41b631d10 *data/Grunfeld.rda 4d32fb308d211b683c42fc299df43e6b *data/Hedonic.rda 4ed4eadec85ffa07af12d3706a57f344 *data/LaborSupply.rda 02a3fea3cc3a87f5a409b8733fc28ae5 *data/Males.rda d644f2f15753f28e20c6f29142816327 *data/Parity.rda 72c0e834cc150edcc6f5cc840a20e552 *data/Produc.rda 39f0ddf3f2283db1b93c24078f26b36e *data/RiceFarms.rda d970a865d86827db547548b196af8f25 *data/Snmesp.rda df5e3356d643dcabbf3e670679f41276 *data/SumHes.rda 0d0e46e15e0d943fa4d3eb218e87e187 *data/Wages.rda 3a09888e3da962d6407572264cc11ac8 *inst/CITATION 2dc843ad1428fcdfc2cca311f7be5b2b *inst/DPD98.R 46a97f1be71bc071b8cd9a97bd51c686 *inst/DPD98.txt 911c1329189e1238aa98f4b89e016412 *inst/REFERENCES.bib 12f63656535578383f968b017f650ccb *inst/WORDLIST 636033d9b78f2fde3af2f5bdce4eb00d *inst/doc/A_plmPackage.R e357f7ee801e15bb2b73ede2e85a08ff *inst/doc/A_plmPackage.Rmd 0b6f4eab7b2a718c16ba25fc753b45bd *inst/doc/A_plmPackage.html 0d62273ecc2f4006a4b78ccea4a72e47 *inst/doc/B_plmFunction.R ac07ce7a6633dc05032f5c4dba263017 *inst/doc/B_plmFunction.Rmd 42c02a896e76a35a34059d4e1f78db85 *inst/doc/B_plmFunction.html da8b46a6b433908d5256cf073f0f0189 *inst/doc/C_plmModelComponents.R 61e470020391967f87ed178d64db0a56 *inst/doc/C_plmModelComponents.Rmd b5f5780fd19320ce18ed1864e8fbba2c *inst/doc/C_plmModelComponents.html 1b297cd5f6693970fde4f29a2dd4df45 *man/Cigar.Rd f78f15d8753ac15c670a1140f21bfe43 *man/Crime.Rd 8bc89d97818327867b6ca8a5982d5d72 *man/EmplUK.Rd 6ff67d106926a43e70f9a37eede5e7c8 *man/Gasoline.Rd d012c8e6f0cac3fd938d94bceaf09ca8 *man/Grunfeld.Rd 3594b021c65985fef094dc15c9a15ab3 *man/Hedonic.Rd a32cd54a8bd8f57af5ca2f8dff06c7de *man/LaborSupply.Rd 78c351dac8a8f8d25df5f5b5529ec17b *man/Males.Rd 4c235aebdaa2632623549175be954790 *man/Parity.Rd b158db3cbfd38650cc079515489a4cbf *man/Produc.Rd e59e8d48ea330b43ffac56af7d7834cd *man/RiceFarms.Rd 92922fe66474edd0ee544e4b9277e184 *man/Snmesp.Rd 01172247babfe765971704fa7afa4f51 *man/SumHes.Rd 886f7ce02f12e8e09ee6fdc6d14057e5 *man/Wages.Rd 431d2c83d72f787eb2746b3c7b1bed05 *man/aneweytest.Rd 8a1e4a8fee9bb76599e64e1f3de20162 *man/cipstest.Rd 5adacaed491b737b260a39b4aea3f304 *man/cortab.Rd bfa91d212ec7870d57a89cb8ee65d8e3 *man/detect.lindep.Rd 6bda570e0ab9b8c775423a943da807d7 *man/ercomp.Rd d8bd8291d26f149233562b8a71ca89c5 *man/fixef.plm.Rd 7f7874afe6cc2d0bc7eababfe5453198 *man/has.intercept.Rd 56c1bc73056d4db751f39728fb6177b4 *man/index.plm.Rd b33065e98c5296a7af2e3d0ed90f1d5a *man/is.pbalanced.Rd e2271abd883bd1825ad26309b9334b4c *man/is.pconsecutive.Rd 600395679fd85cc1d4abc7c74c54031b *man/is.pseries.Rd 2619d20f1bf44ddd8ffd82fe3c810bc0 *man/lag.plm.Rd f29d4443e4e97ac776632acbb5f8dd07 *man/make.dummies.Rd cce2b9023095a6f9f8237352128a507e *man/make.pbalanced.Rd dd0391ef02088d29f5c19699f3828179 *man/make.pconsecutive.Rd 0359e3919c391f4c97d97e4b6340cb44 *man/model.frame.pdata.frame.Rd 0eb58bb0e2de3014ecf3fe2d8f3cf186 *man/mtest.Rd 2b09519eb8848e7d118016b2b325707a *man/nobs.plm.Rd ea2110a4546367b24f4992e1afaa007c *man/pFtest.Rd a834662943c53710e7af60bd1463e575 *man/pbgtest.Rd 0bee3736df0fcfdb4fe996e7d97c7f6a *man/pbltest.Rd 756ede8656fcef5ee3f0504be8dc245f *man/pbnftest.Rd b5603aa2711e45ff6db320c4f2369024 *man/pbsytest.Rd 66b9d8c7e8e6bedaa1f41a9544eae01b *man/pcce.Rd ee24360b49fbcca90293ab639e76f5d6 *man/pcdtest.Rd 9f07bd4f77e1ecf6c8d038467b2558f5 *man/pdata.frame.Rd a766b27a5eeb2aa741a3c214ae3a4765 *man/pdim.Rd b8a4a6e1d53ea4786918350dea1234a4 *man/pdwtest.Rd e28224d99c7aeee99ac85a442afa9b54 *man/pggls.Rd 01ce48f2b208beb73731e34be8013390 *man/pgmm.Rd 3e6530f4f25cb5bf74f4ecec24a3f242 *man/pgrangertest.Rd a148447f34a37f748edce571ef6e9afa *man/phansitest.Rd 8eed0bb06910908520315a3c0a9b8498 *man/pht.Rd 5f84cb97d952e3141fc1c863e16f6793 *man/phtest.Rd 60f1b8f6ebc210994f020bf9a96fa0be *man/piest.Rd 1b88bb6797562b3bd00b9f46c3ad3dfe *man/pldv.Rd 1b2bcb344eaf2320fca206bd688f7348 *man/plm-deprecated.Rd fbc49155443ba54e76dfed2bb37f781a *man/plm-package.Rd 74e3267b157b60c784a0d4f910b4ca99 *man/plm.Rd 5d4cea313ffd9fbf03b2afe028d6e3c3 *man/plm.fast.Rd f3849580095209c0e3a441d7db738e2a *man/plmtest.Rd e2a92a830a3190f6d2ca0c38a10f0524 *man/pmg.Rd 0afc9052d111f3b52c1806aeb1f260f4 *man/pmodel.response.Rd d146e78ca6edfd387d5712f2df38f85f *man/pooltest.Rd 20cf6dfdc25fbfbd2c7bca649357d391 *man/predict.plm.Rd 29c6ead07553cab587712d4a5a12aab5 *man/pseries.Rd 79230b6f879e065fd83edf5ec113321a *man/pseriesfy.Rd 8ad0fa74676dd9c4ff698a3dcb304cb1 *man/punbalancedness.Rd dd893e5525dc8d6034197440bd30f002 *man/purtest.Rd 936e07f3f4be70df9858ab755d0dca6d *man/pvar.Rd c3bf09dfebd86e3576f94d218df0e76f *man/pvcm.Rd 8248c631aa5f0d21359f9a59804d1780 *man/pwaldtest.Rd 0045cd7febe5350383a1fd61a9784768 *man/pwartest.Rd ed707bd9ef96d9b1d0db4984bb2bf4a2 *man/pwfdtest.Rd 4bce4eee7c171a6027367a78b36d5692 *man/pwtest.Rd 01242cb07d62e1e59ac9e426c9718b73 *man/r.squared.Rd fa1e59bf0a043ac2cbf20c90f31fa7b6 *man/ranef.plm.Rd 94b78c3c8cc83de1ba1534d1afb1314f *man/re-export_functions.Rd e392375dd7aae8dcfd8c4009bd030fc1 *man/sargan.Rd 67e64991b389984313a7b25d114fa538 *man/summary.plm.Rd c48a59c45338e359192f60c1e09ca978 *man/vcovBK.Rd f46646adeb38a4b7a4898c5359eeb194 *man/vcovDC.Rd 213fbc396efe900a7b1be31b20355320 *man/vcovG.Rd 0c3e6f2c1a661ff04695eea283c5e886 *man/vcovHC.plm.Rd 31f11d23bc25616c3563ab39f645da67 *man/vcovNW.Rd 1d34dc5b621011f81bf4594336f88a2e *man/vcovSCC.Rd 20bac2502faa015a777932009b4702b9 *man/within_intercept.Rd de8d974064d4dc8f29862ecd428e7b78 *tests/test_Evaluation.R e357f7ee801e15bb2b73ede2e85a08ff *vignettes/A_plmPackage.Rmd ac07ce7a6633dc05032f5c4dba263017 *vignettes/B_plmFunction.Rmd 61e470020391967f87ed178d64db0a56 *vignettes/C_plmModelComponents.Rmd plm/THANKS0000644000176200001440000000100314340404505011746 0ustar liggesusersWe've benefited from comments and bug reports from many people on previous versions of the package. We would like to thank especially : Arne Henningsen, Christian Kleiber, Katarzyna Kopczewska, Ott Toomet, and Achim Zeileis. The package was greatly improved during the revision of the Journal of Statistical Software 27(2) article, thanks to the helpful comments of three anonymous referees. We especially thank the co-editor of this journal, Achim Zeileis, for many interesting comments and suggestions. plm/R/0000755000176200001440000000000014741314566011256 5ustar liggesusersplm/R/est_mg.R0000644000176200001440000003156514642205557012670 0ustar liggesusers ## Mean Group estimator ## ref. Coakley, Fuertes and Smith 2004 ## ## This version 11: ## uses optimised data split approach (via split()) ## version 10: ## added R2 = 1-var(resid)/var(y) as a measure of fit ## from version 9: ## fixed residuals ## output matrix of individual coefficients as 'indcoef' aptly named ## NB the effect of including a trend is exactly the same as for ## including as.numeric() in the model specification ## Yet it is cleaner unless some automatic treatment of group invariant ## variates is added for the CCE case (where else any group invariant ## becomes perfectly collinear with the ybar, Xbar and gives NAs in coefs. ## Moreover, if the panel is unbalanced then for some i the trend becomes ## (3,4,5, ...) instead of (1,2,3, ...); the difference is absorbed by ## the individual intercept, and *the group intercept* changes. ## TODO: see last point above: treatment of invariants ## TODO: see how to estimate the intercept in cmg, dmg ## TODO: manage models without intercept in cmg, dmg ## TODO: output single coefs (see how the structure of pvcm is) ## needed for standalone operation: #plm <- plm:::plm #pdim <- plm:::pdim #model.matrix.plm <- plm:::model.matrix.plm #pmodel.response <- plm:::pmodel.response.plm #' Mean Groups (MG), Demeaned MG and CCE MG estimators #' #' Mean Groups (MG), Demeaned MG (DMG) and Common Correlated Effects #' MG (CCEMG) estimators for heterogeneous panel models, possibly with #' common factors (CCEMG) #' #' `pmg` is a function for the estimation of linear panel models with #' heterogeneous coefficients by various Mean Groups estimators. Setting #' argument `model = "mg"` specifies the standard Mean Groups estimator, based on the #' average of individual time series regressions. If `model = "dmg"` #' the data are demeaned cross-sectionally, which is believed to #' reduce the influence of common factors (and is akin to what is done #' in homogeneous panels when `model = "within"` and `effect = "time"`). #' Lastly, if `model = "cmg"` the CCEMG estimator is #' employed which is consistent under the hypothesis of #' unobserved common factors and idiosyncratic factor loadings; it #' works by augmenting the model by cross-sectional averages of the #' dependent variable and regressors in order to account for the #' common factors, and adding individual intercepts and possibly #' trends. #' #' @aliases pmg #' @param formula a symbolic description of the model to be estimated, #' @param object,x an object of class `pmg`, #' @param data a `data.frame`, #' @param subset see [lm()], #' @param na.action see [lm()], #' @param model one of `"mg"`, `"cmg"`, or `"dmg"`, #' @param index the indexes, see [pdata.frame()], #' @param trend logical specifying whether an individual-specific #' trend has to be included, #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param \dots further arguments. #' #' @return An object of class `c("pmg", "panelmodel")` containing: #' \item{coefficients}{the vector of coefficients,} #' \item{residuals}{the vector of residuals,} #' \item{fitted.values}{the vector of fitted values,} #' \item{vcov}{the covariance matrix of the coefficients,} #' \item{df.residual}{degrees of freedom of the residuals,} #' \item{model}{a data.frame containing the variables used for the #' estimation,} #' \item{r.squared}{numeric, the R squared,} #' \item{call}{the call,} #' \item{indcoef}{the matrix of individual coefficients from #' separate time series regressions.} #' @export #' @author Giovanni Millo #' @references #' #' \insertRef{PESA:06}{plm} #' #' @keywords regression #' @examples #' data("Produc", package = "plm") #' ## Mean Groups estimator #' mgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc) #' summary(mgmod) #' #' ## demeaned Mean Groups #' dmgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "dmg") #' summary(dmgmod) #' #' ## Common Correlated Effects Mean Groups #' ccemgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "cmg") #' summary(ccemgmod) pmg <- function(formula, data, subset, na.action, model = c("mg", "cmg", "dmg"), index = NULL, trend = FALSE, ...) { ## same as pggls but for effect, fixed at "individual" for compatibility ## ind for id, tind for time, k for K, coefnam for coef.names effect <- "individual" ## record call etc. model <- match.arg(model) model.name <- model data.name <- paste(deparse(substitute(data))) cl <- match.call() plm.model <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "effect", "model", "index"), names(plm.model), 0) plm.model <- plm.model[c(1L, m)] plm.model[[1L]] <- as.name("plm") ## change the 'model' in call plm.model$model <- "pooling" ## evaluates the call, modified with model = "pooling", inside the ## parent frame resulting in the pooling model on formula, data plm.model <- eval(plm.model, parent.frame()) mf <- model.frame(plm.model) index <- unclass(attr(mf, "index")) # unclass for speed ind <- index[[1L]] ## individual index ind.GRP <- collapse::GRP(ind) ## individual index as collapse-optimised GRP tind <- index[[2L]] ## time index ## set dimension variables pdim <- pdim(plm.model) Ti <- pdim$Tint$Ti T. <- pdim$nT$T n <- pdim$nT$n ## set index names time.names <- pdim$panel.names$time.names id.names <- pdim$panel.names$id.names coef.names <- names(coef(plm.model)) ## number of coefficients k <- length(coef.names) ## model data X <- model.matrix(plm.model) y <- model.response(mf) ## det. *minimum* group numerosity t <- min(Ti) ## check min. t numerosity ## NB it is also possible to allow estimation if there *is* one group ## with t large enough and average on coefficients removing NAs ## Here we choose the explicit way: let estimation fail if we lose df ## but a warning would do... if(t < (k+1)) stop("Insufficient number of time periods") ## one regression for each group i in 1..n ## and retrieve coefficients putting them into a matrix ## (might be unbalanced => t1!=t2 but we don't care as long ## as min(t)>k+1) ## "pre-allocate" coefficients matrix for the n models and list for residuals kt <- if(trend) 1L else 0L tcoef <- if(model == "cmg") { matrix(data = NA_real_, nrow = 2*k+kt, ncol = n) ## allow for extended coef vector } else matrix(data = NA_real_, nrow = k+kt, ncol = n) tres <- vector("list", n) switch(model, "mg" = { # split X, y by individual and store in lists tX.list <- collapse::rsplit(X, ind.GRP, use.names = FALSE) ty.list <- collapse::gsplit(y, ind.GRP) ## for each x-sect. i = 1..n for(i in seq_len(n)) { tX <- tX.list[[i]] ty <- ty.list[[i]] if(trend) tX <- cbind(tX, seq_len(dim(tX)[[1L]])) tfit <- lm.fit(tX, ty) tcoef[ , i] <- tfit$coefficients tres[[i]] <- tfit$residuals } ## 'trend' always comes last if(trend) coef.names <- c(coef.names, "trend") ## adjust k k <- length(coef.names) }, "cmg" = { ## between-periods transformation (take means over groups for each t) Xm <- Between(X, effect = "time", na.rm = TRUE) ym <- as.numeric(Between(y, effect = "time", na.rm = TRUE)) augX <- cbind(X, ym, Xm[ , -1L, drop = FALSE]) taugX.list <- collapse::rsplit(augX, ind.GRP, use.names = FALSE) ty.list <- collapse::gsplit(y, ind.GRP) ## for each x-sect. i = 1..n estimate (over t) an augmented model ## y_it = alpha_i + beta_i*X_it + c1_i*my_t + c2_i*mX_t + err_it for(i in seq_len(n)) { taugX <- taugX.list[[i]] ty <- ty.list[[i]] if(trend) taugX <- cbind(taugX, seq_len(dim(taugX)[[1L]])) tfit <- lm.fit(taugX, ty) tcoef[ , i] <- tfit$coefficients tres[[i]] <- tfit$residuals } ## add names of coefs for augmented x-sectional averages coef.names.bar <- c("y.bar", paste(coef.names[-1L], ".bar", sep="")) coef.names <- c(coef.names, coef.names.bar) ## 'trend' always comes last if(trend) coef.names <- c(coef.names, "trend") ## adjust k k <- length(coef.names) ## TODO: adjust model formula etc. (else breaks waldtest, update, ...) }, "dmg" = { ## time-demean demX <- Within(X, effect = "time", na.rm = TRUE) demX[ , 1L] <- 1 # put back intercept lost by within transformation demy <- as.numeric(Within(y, effect = "time", na.rm = TRUE)) tdemX.list <- collapse::rsplit(demX, ind.GRP, use.names = FALSE) tdemy.list <- collapse::gsplit(demy, ind.GRP) ## for each x-sect. i=1..n estimate (over t) a demeaned model ## (y_it-my_t) = alpha_i + beta_i*(X_it-mX_t) + err_it for (i in seq_len(n)) { tdemX <- tdemX.list[[i]] tdemy <- tdemy.list[[i]] if(trend) tdemX <- cbind(tdemX, seq_len(dim(tdemX)[[1L]])) tfit <- lm.fit(tdemX, tdemy) tcoef[ , i] <- tfit$coefficients tres[[i]] <- tfit$residuals } ## 'trend' always comes last if(trend) coef.names <- c(coef.names, "trend") ## adjust k k <- length(coef.names) }) ## coefs are averages across individual regressions coef <- rowMeans(tcoef) # == apply(tcoef, 1, mean) ## make matrix of cross-products of demeaned individual coefficients coefmat <- array(data = NA_real_, dim = c(k, k, n)) demcoef <- tcoef - coef # gets recycled n times by column for (i in seq_len(n)) coefmat[ , , i] <- outer(demcoef[ , i], demcoef[ , i]) ## summing over the n-dimension of the array we get the ## covariance matrix of coefs vcov <- rowSums(coefmat, dims = 2L) / (n*(n-1)) # == apply(coefmat, 1:2, sum) / (n*(n-1)) but rowSums(., dims = 2L)-construct is way faster ######### na.omit = T in apply was the big problem!! ## code as in pggls, only difference is here there is no 'sigma' residuals <- unlist(tres) ##was: as.vector(y) - as.vector(crossprod(t(X), coef[1:(dim(X)[[2]])])) df.residual <- nrow(X) - ncol(X) fitted.values <- y - residuals ## R2 as 1-var(res)/var(y); ## originally (HPY 3.14) adjusted by *(T.-1)/(T.-2*k0-2) ## but here k has expanded to include ybar, Xbar, (trend) r2 <- 1-var(residuals)/var(y)*(T.-1)/(T.-k-1) names(coef) <- rownames(vcov) <- colnames(vcov) <- coef.names dimnames(tcoef) <- list(coef.names, id.names) pmodel <- list(model.name = model.name) mgmod <- list(coefficients = coef, residuals = residuals, fitted.values = fitted.values, vcov = vcov, df.residual = df.residual, r.squared = r2, model = mf, indcoef = tcoef, formula = formula, call = cl) mgmod <- structure(mgmod, pdim = pdim, pmodel = pmodel) class(mgmod) <- c("pmg", "panelmodel") mgmod } #' @rdname pmg #' @export summary.pmg <- function(object, ...){ std.err <- sqrt(diag(object$vcov)) b <- object$coefficients z <- b/std.err p <- 2*pnorm(abs(z), lower.tail = FALSE) CoefTable <- cbind(b, std.err, z, p) colnames(CoefTable) <- c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") object$CoefTable <- CoefTable y <- object$model[[1L]] object$tss <- tss(y) object$ssr <- as.numeric(crossprod(residuals(object))) object$rsqr <- 1-object$ssr/object$tss class(object) <- c("summary.pmg") return(object) } #' @rdname pmg #' @export print.summary.pmg <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ pmodel <- attr(x, "pmodel") pdim <- attr(x, "pdim") cat(paste(model.pmg.list[pmodel$model.name], "\n", sep="")) cat("\nCall:\n") print(x$call) cat("\n") print(pdim) cat("\nResiduals:\n") print(sumres(x)) cat("\nCoefficients:\n") printCoefmat(x$CoefTable, digits = digits) cat(paste("Total Sum of Squares: ", signif(x$tss, digits), "\n", sep="")) cat(paste("Residual Sum of Squares: ", signif(x$ssr, digits), "\n", sep="")) cat(paste("Multiple R-squared: ", signif(x$rsqr, digits), "\n", sep="")) invisible(x) } #' @rdname pmg #' @export residuals.pmg <- function(object, ...) { pres(object) } plm/R/tool_argvalues.R0000644000176200001440000000637714736555464014454 0ustar liggesusers## This file contain named vectors of the acceptable values for different ## arguments used in plm functions. random.method.list <- c(swar = "Swamy-Arora", walhus = "Wallace-Hussain", amemiya = "Amemiya", nerlove = "Nerlove", ht = "Hausman-Taylor") effect.plm.list <- c(individual = "Oneway (individual) effect", time = "Oneway (time) effect", twoways = "Twoways effects", nested = "Nested effects") effect.pvcm.list <- c(individual = "Oneway (individual) effect", time = "Oneway (time) effect") effect.pggls.list <- c(individual = "Oneway (individual) effect", time = "Oneway (time) effect") effect.pgmm.list <- c(individual = "Oneway (individual) effect", twoways = "Twoways effects") model.plm.list <- c(pooling = "Pooling", within = "Within", between = "Between", random = "Random Effect", ht = "Hausman-Taylor", fd = "First-Difference") ht.method.list <- c(ht = "Hausman-Taylor estimator", am = "Amemiya-MaCurdy estimator", bms = "Breusch-Mizon-Schmidt estimator") model.pvcm.list <- c(within = "No-pooling model", random = "Random coefficients model") model.pggls.list <- c(within = "Within FGLS model", random = "General FGLS model", pooling = "General FGLS model", fd = "First-Difference FGLS model") model.pgmm.list <- c(onestep = "One-step model", twosteps = "Two-steps model") model.pgmm.transformation.list <- c(d = "Difference GMM", ld = "System GMM") model.pcce.list <- c(ccemg = "Mean Groups model", ccep = "Pooled model") model.pmg.list <- c(mg = "Mean Groups model", dmg = "Demeaned Mean Groups model", cmg = "Common Correlated Effects Mean Groups model") inst.method.list <- c(bvk = "Balestra-Varadharajan-Krishnakumar", baltagi = "Baltagi", am = "Amemiya-MaCurdy", bms = "Breusch-Mizon-Schmidt") # robust.list and weights.list are not used anywhere... robust.list <- c(white1 = "White 1", white2 = "White 2", arellano = "Arellano") weights.list <- c(HC0 = "HC0", HC1 = "HC1", HC2 = "HC2", HC3 = "HC3", HC4 = "HC4") oneof <- function(x){ x <- names(x) last <- x[length(x)] x <- x[-length(x)] x <- paste(x,collapse=", ") x <- paste(x,last,sep=" and ") x } plm.arg <- c("formula", "data", "subset", "weights", "na.action", "effect", "model", "instruments", "random.method", "inst.method", "index") pgmm.fsm.list <- c(I = "I", G = "G", GI = "GI", full = "full") plm/R/tool_transformations_collapse.R0000644000176200001440000010472614641057410017552 0ustar liggesusers## Structural changes made to plm's original data transformation functions ## need to be mimicked in the *.collapse(.*) versions and vice versa. ## 1) Give the base-R version of the functions defined in tool_transformations.R ## a new name (*.baseR). ## 2) Implement wrapper switched which call the *.baseR or *.collapse versions ## based on the option plm.fast (a logical, can be set via R's regular option ## mechanism: options("plm.fast" = TRUE). ## ad 1) new name for base R functions defined in tool_transformations.R Sum_default_baseR <- plm:::Sum.default Sum_pseries_baseR <- plm:::Sum.pseries Sum_matrix_baseR <- plm:::Sum.matrix between_default_baseR <- plm:::between.default between_pseries_baseR <- plm:::between.pseries between_matrix_baseR <- plm:::between.matrix Between_default_baseR <- plm:::Between.default Between_pseries_baseR <- plm:::Between.pseries Between_matrix_baseR <- plm:::Between.matrix Within_default_baseR <- plm:::Within.default Within_pseries_baseR <- plm:::Within.pseries Within_matrix_baseR <- plm:::Within.matrix pdiff_baseR <- plm:::pdiff pseriesfy_baseR <- plm:::pseriesfy # ... in tool_pdata.frame.R: ## lag, lead, diff: are collapse-powered but in file tool_transformations.R (incl. their wrappers). ## ad 2) implement wrapper switches #### Sum wrapper switches #### Sum.default <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Sum_default_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Sum_default_collapse(x, effect, ...) } } Sum.pseries <- function(x, effect = c("individual", "time", "group"), ...) { if(!isTRUE(getOption("plm.fast"))) { Sum_pseries_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Sum_pseries_collapse(x, effect, ...) } } Sum.matrix <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Sum_matrix_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Sum_matrix_collapse(x, effect, ...) } } #### Between wrapper switches #### Between.default <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Between_default_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Between_default_collapse(x, effect, ...) } } Between.pseries <- function(x, effect = c("individual", "time", "group"), ...) { if(!isTRUE(getOption("plm.fast"))) { Between_pseries_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Between_pseries_collapse(x, effect, ...) } } Between.matrix <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Between_matrix_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Between_matrix_collapse(x, effect, ...) } } #### between wrapper switches #### between.default <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { between_default_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) between_default_collapse(x, effect, ...) } } between.pseries <- function(x, effect = c("individual", "time", "group"), ...) { if(!isTRUE(getOption("plm.fast"))) { between_pseries_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) between_pseries_collapse(x, effect, ...) } } between.matrix <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { between_matrix_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) between_matrix_collapse(x, effect, ...) } } #### Within wrapper switches #### Within.default <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Within_default_baseR (x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) Within_default_collapse(x, effect, ...) } } Within.pseries <- function(x, effect = c("individual", "time", "group", "twoways"), ...) { if(!isTRUE(getOption("plm.fast"))) { Within_pseries_baseR(x, effect, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) if(is.null(getOption("plm.fast.pkg.FE.tw"))) options("plm.fast.pkg.FE.tw" = "collapse") switch(getOption("plm.fast.pkg.FE.tw"), "collapse" = Within_pseries_collapse( x, effect, ...), # collapse only, "fixest" = Within_pseries_collapse_fixest(x, effect, ...), # collapse for 1-way FE + fixest for 2-way FE, "lfe" = Within_pseriesc_collapse_lfe( x, effect, ...), # collapse for 1-way FE + lfe for 2-way FE stop("unknown value of option 'plm.fast.pkg.FE.tw'")) } } Within.matrix <- function(x, effect, ...) { if(!isTRUE(getOption("plm.fast"))) { Within_matrix_baseR(x, effect, ...) } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) if(is.null(getOption("plm.fast.pkg.FE.tw"))) options("plm.fast.pkg.FE.tw" = "collapse") switch(getOption("plm.fast.pkg.FE.tw"), "collapse" = Within_matrix_collapse( x, effect, ...), # collapse only, "fixest" = Within_matrix_collapse_fixest(x, effect, ...), # collapse for 1-way FE + fixest for 2-way FE, "lfe" = Within_matrix_collapse_lfe( x, effect, ...), # collapse for 1-way FE + lfe for 2-way FE stop("unknown value of option 'plm.fast.pkg.FE.tw'")) } } #### wrapper for pdiff #### pdiff <- function(x, effect = c("individual", "time"), has.intercept = FALSE, shift = c("time", "row")) { if(!isTRUE(getOption("plm.fast"))) { pdiff_baseR(x, effect, has.intercept, shift) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) pdiff.collapse(x, effect, has.intercept, shift) } } #### wrapper for pseriesfy #### # both pseriesfy functions are in file tool_pdata.frame.R pseriesfy <- function(x, ...) { if(!isTRUE(getOption("plm.fast"))) { pseriesfy_baseR(x, ...) } else { if(!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) pseriesfy.collapse(x, ...) } } #### Sum #### Sum_default_collapse <- function(x, effect, ...) { # print("Sum_default_collapse") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The Sum function only applies to numeric vectors") # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm res <- collapse::fsum(x, g = effect, w = NULL, na.rm = na.rm, TRA = "replace") names(res) <- as.character(effect) return(res) } Sum_pseries_collapse <- function(x, effect = c("individual", "time", "group"), ...) { # print("Sum_pseries_collapse") # browser() effect <- match.arg(effect) # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA eff.fac <- xindex[[eff.no]] res <- collapse::fsum(x, g = eff.fac, w = NULL, na.rm = na.rm, TRA = "replace") names(res) <- as.character(eff.fac) res <- add_pseries_features(res, attr(x, "index")) return(res) } Sum_matrix_collapse <- function(x, effect, ...) { # print("Sum_matrix_collapse") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { effect } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a Sum transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm res <- collapse::fsum(x, g = eff.fac, w = NULL, na.rm = na.rm, drop = FALSE, TRA = "replace") rownames(res) <- as.character(eff.fac) attr(res, "index") <- NULL return(res) } #### B/between #### # Need separate implementations of Between.pseries and between.pseries due to different NA handling Between_default_collapse <- function(x, effect, ...) { # print("Between_default_collapse") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The Between function only applies to numeric vectors") # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm nms <- as.character(effect) res <- collapse::fbetween(x, g = effect, w = NULL, na.rm = na.rm) names(res) <- nms return(res) } between_default_collapse <- function(x, effect, ...) { # print("between_default_collapse") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The Between function only applies to numeric vectors") # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm res <- collapse::fbetween(x, g = effect, w = NULL, na.rm = na.rm, fill = TRUE) keep <- !collapse::fduplicated(effect, all = FALSE) res <- res[keep] names(res) <- as.character(effect[keep]) # bring into factor level order (not order as appears in orig. data) lvl <- levels(collapse::fdroplevels(effect)) res <- res[lvl] return(res) } Between_pseries_collapse <- function(x, effect = c("individual", "time", "group"), ...) { # print("Between_pseries_collapse") # browser() # translate arguments effect <- match.arg(effect) # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA nms <- as.character(xindex[[eff.no]]) na.x <- is.na(x) # must be fill = TRUE [to catch case when 1 obs of an individual is NA (otherwise result could contain non-intended NA)] res <- collapse::fbetween(x, effect = eff.no, w = NULL, na.rm = na.rm, fill = TRUE) names(res) <- nms res[na.x] <- NA return(res) } between_pseries_collapse <- function(x, effect = c("individual", "time", "group"), ...) { # print("between_pseries_collapse") # browser() effect <- match.arg(effect) # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA i <- xindex[[eff.no]] # must be fill = TRUE [to catch case when 1 obs of an individual is NA # (otherwise result could contain non-intended NA)] res <- collapse::fbetween(x, effect = eff.no, w = NULL, na.rm = na.rm, fill = TRUE) res <- remove_pseries_features(res) keep <- !collapse::fduplicated(i, all = FALSE) res <- res[keep] names(res) <- as.character(i[keep]) # bring into factor level order (not order as appears in orig. data) lvl <- levels(collapse::fdroplevels(i)) res <- res[lvl] return(res) } Between_matrix_collapse <- function(x, effect, ...) { # print("Between_matrix_collapse") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { effect } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a between transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm na.x <- is.na(x) res <- collapse::fbetween(x, g = eff.fac, w = NULL, na.rm = na.rm, fill = TRUE) attr(res, "index") <- NULL rownames(res) <- as.character(eff.fac) res[na.x] <- NA return(res) } between_matrix_collapse <- function(x, effect, ...) { # print("between_matrix_collapse") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { effect } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a between transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm res <- collapse::fbetween(x, g = eff.fac, w = NULL, na.rm = na.rm, fill = TRUE) rownames(res) <- as.character(eff.fac) # compress data to number of unique individuals (or time periods) res <- res[!collapse::fduplicated(eff.fac, all = FALSE), , drop = FALSE] # bring into factor level order (not order as appears in orig. data) lvl <- levels(collapse::fdroplevels(eff.fac)) res <- res[lvl, , drop = FALSE] return(res) } #### Within #### # Within - default Within_default_collapse <- function(x, effect, ...) { # print("Within_default_collapse") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("the within function only applies to numeric vectors") # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm res <- collapse::fwithin(x, g = effect, w = NULL, na.rm = na.rm) # =(plm)= res <- x - Between(x, effect, ...) names(res) <- as.character(effect) return(res) } Within_pseries_collapse <- function(x, effect = c("individual", "time", "group", "twoways"), ...) { # print("Within_pseries_collapse") # browser() effect <- match.arg(effect) # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") { eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) res <- collapse::fwithin(x, effect = eff.no, w = NULL, na.rm = na.rm, mean = 0) } else { eff.ind.fac <- xindex[[1L]] eff.time.fac <- xindex[[2L]] if(is.pbalanced(eff.ind.fac, eff.time.fac)) { # effect = "twoways" - balanced res <- collapse::fwithin( x, effect = 1L, w = NULL, na.rm = na.rm, mean = "overall.mean") - collapse::fbetween(x, effect = 2L, w = NULL, na.rm = na.rm, fill = TRUE) # =(plm)= res <- x - Between(x, "individual", ...) - Between(x, "time", ...) + mean(x, ...) } else { # effect = "twoways" - unbalanced Dmu <- model.matrix(~ eff.time.fac - 1) W1 <- collapse::fwithin(x, effect = 1L, w = NULL, na.rm = na.rm, mean = 0) # pseries interface WDmu <- collapse::fwithin(Dmu, g = eff.ind.fac, w = NULL, na.rm = na.rm, mean = 0) # matrix interface W2 <- lm.fit(WDmu, x)$fitted.values res <- W1 - W2 } } return(res) } Within_matrix_collapse <- function(x, effect, ...) { # print("Within_matrix_collapse") # browser() # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm if(is.null(xindex <- attr(x, "index"))) { # non-index case, 'effect' needs to be a factor result <- collapse::fwithin(x, g = effect, w = NULL, na.rm = na.rm) } else { # index case xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") { eff.fac <- switch(effect, "individual" = xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]], stop("unknown value of argument 'effect'")) result <- collapse::fwithin(x, g = eff.fac, w = NULL, na.rm = na.rm, mean = 0) # =(plm)= result <- x - Between(x, effect) } else { # effect = "twoways" eff.ind.fac <- xindex[[1L]] eff.time.fac <- xindex[[2L]] if(is.pbalanced(eff.ind.fac, eff.time.fac)) { # balanced twoways result <- collapse::fwithin( x, g = eff.ind.fac, w = NULL, na.rm = na.rm, mean = "overall.mean") - collapse::fbetween(x, g = eff.time.fac, w = NULL, na.rm = na.rm, fill = TRUE) # =(plm)= result <- x - Between(x, "individual", ...) - Between(x, "time", ...) + # matrix(colMeans(x, ...), nrow = nrow(x), ncol = ncol(x), byrow = TRUE) } else { # unbalanced twoways # as factor is used twice below, make it a collapse::GRP object -> should give some speed-up eff.ind.fac <- collapse::GRP(eff.ind.fac, group.sizes = FALSE, return.groups = FALSE, call = FALSE) Dmu <- model.matrix(~ eff.time.fac - 1) W1 <- collapse::fwithin(x, g = eff.ind.fac, w = NULL, na.rm = na.rm, mean = 0) WDmu <- collapse::fwithin(Dmu, g = eff.ind.fac, w = NULL, na.rm = na.rm, mean = 0) W2 <- lm.fit(WDmu, x)$fitted.values result <- W1 - W2 } } } return(result) } #### These functions use collpase::fhdwithin (using internally fixest::demean) #### or lfe::demeanlist respectively, for #### the 2-way within transformation which are dramatically faster than #### the implementation via separate collapse::fwithin calls (due to the special #### algorithms used to partial out the fixed effects) Within_pseries_collapse_fixest <- function(x, effect = c("individual", "time", "group", "twoways"), ...) { # print("Within_pseries_collapse_fixest") # browser() effect <- match.arg(effect) # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") { eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) # in 1-way case fwithin seems faster than fhdwithin, so keep 1-way and 2-way # cases separated res <- collapse::fwithin(x, effect = eff.no, w = NULL, na.rm = na.rm, mean = 0) } else { # effect = "twoways" # dispatches to pseries method res <- collapse::fhdwithin(x, effect = 1:2, w = NULL, na.rm = na.rm) } return(res) } Within_matrix_collapse_fixest <- function(x, effect, ...) { # print("Within_matrix_collapse_fixest") # browser() # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm if(is.null(xindex <- attr(x, "index"))) { # non-index case, 'effect' needs to be a factor result <- collapse::fwithin(x, g = effect, w = NULL, na.rm = na.rm) } else { # index case xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") { eff.fac <- switch(effect, "individual" = xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]], stop("unknown value of argument 'effect'")) ## result <- collapse::fhdwithin(x, eff.fac) # needs pkg fixest # --> for one-way effect, this seems slower than collapse::fwithin result <- collapse::fwithin(x, g = eff.fac, w = NULL, na.rm = na.rm, mean = 0) # =(plm)= result <- x - Between(x, effect) } else { # effect = "twoways" # no need to distinguish between balanced/unbalanced # as this is fully handled by collapse::fhdwithin() # collapse::fhdwithin needs pkg fixest as it uses fixest::demean result <- collapse::fhdwithin(x, fl = xindex[1:2], w = NULL, na.rm = na.rm) } } return(result) } Within_pseriesc_collapse_lfe <- function(x, effect = c("individual", "time", "group", "twoways"), ...) { # print("Within_pseriesc_collapse_lfe") # browser() effect <- match.arg(effect) xindex <- unclass(attr(x, "index")) checkNA.index(xindex) # index may not contain any NA # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm if(effect != "twoways") { eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) # collapse::fwithin is faster in 1-ways case than lfe::demanlist, so # keep cases separated res <- collapse::fwithin(x, effect = eff.no, w = NULL, na.rm = na.rm, mean = 0) } else { # effect = "twoways" # no need to distinguish between balanced/unbalanced # as this is fully handled by lfe::dmeanlist() res <- unlist(lfe::demeanlist(x, fl = xindex[1:2], na.rm = na.rm)) res <- add_pseries_features(res, attr(x, "index")) # index needs to be a proper pindex here! } return(res) } Within_matrix_collapse_lfe <- function(x, effect, ...) { # print("Within_matrix_collapse_lfe") # browser() # check for presence of na.rm in dots, if not present set to FALSE na.rm <- if(missing(...) || is.null(na.rm <- list(...)$na.rm)) FALSE else na.rm if(is.null(xindex <- attr(x, "index"))) { # non-index case, 'effect' needs to be a factor result <- collapse::fwithin(x, g = effect, w = NULL, na.rm = na.rm) } else { # index case xindex <- unclass(xindex) checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") { eff.fac <- switch(effect, "individual" = xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]], stop("unknown value of argument 'effect'")) # collapse::fwithin is faster in 1-ways case than lfe::demanlist, so # keep cases separated result <- collapse::fwithin(x, g = eff.fac, w = NULL, na.rm = na.rm, mean = 0) # =(plm)= result <- x - Between(x, effect) } else { # effect = "twoways" # no need to distinguish between balanced/unbalanced # as this is fully handled by lfe::dmeanlist() # # lfe::demeanlist (lfe vers. 2.8-6) return value for matrix input is # inconsistent / depends on value of argument na.rm, # see https://github.com/sgaure/lfe/issues/50. result <- lfe::demeanlist(x, fl = xindex[1:2], na.rm = na.rm) if(is.list(result)) result <- result[[1L]] attr(result, "index") <- attr(x, "index") # index needs to be a proper pindex here! } } return(result) } pdiff.collapse <- function(x, effect = c("individual", "time"), has.intercept = FALSE, shift = c("time", "row")){ # NB: x is assumed to have an index attribute # can check with has.index(x) # TODO: pdiff's usage in model.matrix is not very elegant as pdiff does its own # removal of constant columns and intercept handling which could be handled # via model.matrix. effect <- match.arg(effect) shift <- match.arg(shift) xindex <- unclass(attr(x, "index")) checkNA.index(xindex) # index may not contain any NA if(shift == "row") { eff.no <- switch(effect, "individual" = 1L, "time" = 2L, stop("unknown value of argument 'effect'")) eff.fac <- xindex[[eff.no]] if(inherits(x, "pseries")) x <- remove_pseries_features(x) res <- collapse::fdiff(x, g = eff.fac) } else { # shift = "time" # make a pdata.frame the dirty way (esp. to keep names like "(Intercept)") # .. works as x is already ensured to be panel-stacked # and apply collapse::fdiff on it if(is.matrix(x)) { x.pdf <- as.data.frame(x) class(x.pdf) <- c("pdata.frame", class(x.pdf)) attr(x.pdf, "index") <- attr(x, "index") res <- collapse::fdiff(x.pdf) res <- as.matrix(res) } else { # pseries case res <- collapse::fdiff(x) } } ## last data preparation before return res <- na.omit(res) if(is.matrix(x)) { # original pdiff (coded in base R) removes constant columns in matrix, # so do likewise collapse-powered version cst.col <- apply(res, 2, is.constant) res <- res[ , !cst.col, drop = FALSE] # if intercept is requested, set intercept column to 1 as it was # diff'ed out by collapse::fdiff and anyways removed by the removal of # constant columns just above if(has.intercept){ res <- cbind(1, res) colnames(res)[1L] <- "(Intercept)" } } res } .onAttach <- function(libname, pkgname) { options("plm.fast" = TRUE) # since 2.6: needs pkg collapse as hard dependency # determine when pkg plm is attached whether pkg collapse, fixest, and lfe are # available and set (non-documented) options, which packages are available. # These options are used to determine in the wrappers if fast mode can be used # and if the speed up by fixest or lfe for the 2-way FE case can be used. avail.collapse <- requireNamespace("collapse", quietly = TRUE) avail.fixest <- requireNamespace("fixest", quietly = TRUE) avail.lfe <- requireNamespace("lfe", quietly = TRUE) if(avail.collapse) { options("plm.fast.pkg.collapse" = TRUE) options("plm.fast.pkg.FE.tw" = "collapse") # fixest wins over lfe if(avail.fixest) { options("plm.fast.pkg.FE.tw" = "fixest") } else { if(avail.lfe) { options("plm.fast.pkg.FE.tw" = "lfe") } } } else options("plm.fast.pkg.collapse" = FALSE) } #' Option to Switch On/Off Fast Data Transformations #' #' A significant speed up can be gained by using fast (panel) data transformation #' functions from package `collapse`. #' An additional significant speed up for the two-way fixed effects case can be #' achieved if package `fixest` or `lfe` is installed (package `collapse` #' needs to be installed for the fast mode in any case). #' #' @details By default, this speed up is enabled. #' Option `plm.fast` can be used to enable/disable the speed up. The option is #' evaluated prior to execution of supported transformations (see below), so #' `option("plm.fast" = TRUE)` enables the speed up while #' `option("plm.fast" = FALSE)` disables the speed up. #' #' To have it always switched off, put `options("plm.fast" = FALSE)` in your #' .Rprofile file. #' #' See **Examples** for how to use the option and for a benchmarking example. #' #' For long, package `plm` used base R implementations and R-based code. The #' package `collapse` provides fast data transformation functions written #' in C/C++, among them some especially suitable for panel data. #' Having package `collapse` installed is a requirement for the speed up, so #' this package is a hard dependency for package `plm`. #' #' Availability of packages `fixest` and `lfe` is checked for once when #' package plm is attached and the additional speed up for the two-way fixed #' effect case is enabled automatically (`fixest` wins over `lfe`), #' given one of the packages is detected and `options("plm.fast" = TRUE)` #' (default) is set. If so, the packages' fast algorithms to partial out fixed #' effects are used (`fixest::demean` (via `collapse::fhdwithin`), #' `lfe::demeanlist`). Both packages are 'Suggests' dependencies. #' #' Users might experience neglectable numerical differences between enabled and #' disabled fast mode and base R implementation, depending on the platform and #' the additional packages installed. #' #' Currently, these basic functions benefit from the speed-up, used as building #' blocks in most model estimation functions, e.g., in `plm` (more functions are #' under investigation): #' \itemize{ #' \item between, #' \item Between, #' \item Sum, #' \item Within, #' \item lag, lead, and diff, #' \item pseriesfy, #' \item pdiff (internal function). #' } #' #' @name plm.fast #' @importFrom collapse fhdwithin fwithin fbetween dapply fdroplevels #' @keywords sysdata manip #' @examples #' \dontrun{ #' ### A benchmark of plm without and with speed-up #' library("plm") #' library("collapse") #' library("microbenchmark") #' rm(list = ls()) #' data("wlddev", package = "collapse") #' form <- LIFEEX ~ PCGDP + GINI #' #' # produce big data set (taken from collapse's vignette) #' wlddevsmall <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) #' wlddevsmall$iso3c <- as.character(wlddevsmall$iso3c) #' data <- replicate(100, wlddevsmall, simplify = FALSE) #' rm(wlddevsmall) #' uniquify <- function(x, i) { #' x$iso3c <- paste0(x$iso3c, i) #' x #' } #' data <- unlist2d(Map(uniquify, data, as.list(1:100)), idcols = FALSE) #' data <- pdata.frame(data, index = c("iso3c", "year")) #' pdim(data) # Balanced Panel: n = 21600, T = 59, N = 1274400 // but many NAs #' # data <- na.omit(data) #' # pdim(data) # Unbalanced Panel: n = 13300, T = 1-31, N = 93900 #' #' times <- 1 # no. of repetitions for benchmark - this takes quite long! #' #' onewayFE <- microbenchmark( #' {options("plm.fast" = FALSE); plm(form, data = data, model = "within")}, #' {options("plm.fast" = TRUE); plm(form, data = data, model = "within")}, #' times = times) #' #' summary(onewayFE, unit = "relative") #' #' ## two-ways FE benchmark requires pkg fixest and lfe #' ## (End-users shall only set option plm.fast. Option plm.fast.pkg.FE.tw shall #' ## _not_ be set by the end-user, it is determined automatically when pkg plm #' ## is attached; however, it needs to be set explicitly in this example for the #' ## benchmark.) #' if(requireNamespace("fixest", quietly = TRUE) && #' requireNamespace("lfe", quietly = TRUE)) { #' #' twowayFE <- microbenchmark( #' {options("plm.fast" = FALSE); #' plm(form, data = data, model = "within", effect = "twoways")}, #' {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "collapse"); #' plm(form, data = data, model = "within", effect = "twoways")}, #' {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "fixest"); #' plm(form, data = data, model = "within", effect = "twoways")}, #' {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "lfe"); #' plm(form, data = data, model = "within", effect = "twoways")}, #' times = times) #' #' summary(twowayFE, unit = "relative") #' } #' #' onewayRE <- microbenchmark( #' {options("plm.fast" = FALSE); plm(form, data = data, model = "random")}, #' {options("plm.fast" = TRUE); plm(form, data = data, model = "random")}, #' times = times) #' #' summary(onewayRE, unit = "relative") #' #' twowayRE <- microbenchmark( #' {options("plm.fast" = FALSE); plm(form, data = data, model = "random", effect = "twoways")}, #' {options("plm.fast" = TRUE); plm(form, data = data, model = "random", effect = "twoways")}, #' times = times) #' #' summary(twowayRE, unit = "relative") #' } NULL txt.no.collapse <- paste0("options(\"plm.fast\") is set to TRUE but package 'collapse' ", "is not available which is needed for fast data transformation functions. ", "Either set 'options(\"plm.fast\" = FALSE)' or install the ", "missing package, e.g., with 'install.packages(\"collapse\")'. \n", "Having additionally package 'fixest' or 'lfe' installed ", "will speed up the two-way fixed effect case further. \n", "Availability of packages is determined only when ", "plm is attached, so restart R/reload plm when mentioned ", "packages have been installed.") plm/R/est_vcm.R0000644000176200001440000005343014642241007013033 0ustar liggesusers#' Variable Coefficients Models for Panel Data #' #' Estimators for random and fixed effects models with variable coefficients. #' #' `pvcm` estimates variable coefficients models. Individual or time #' effects are introduced, respectively, if `effect = "individual"` #' (default) or `effect = "time"`. #' #' Coefficients are assumed to be fixed if `model = "within"`, i.e., separate #' pooled OLS models are estimated per individual (`effect = "individual"`) #' or per time period (`effect = "time"`). Coefficients are assumed to be #' random if `model = "random"` and the model by #' \insertCite{SWAM:70;textual}{plm} is estimated; it is a generalized least #' squares model which uses the results of the OLS models estimated per #' individual/time dimension (coefficient estimates are weighted averages of the #' single OLS estimates with weights inversely proportional to the #' variance-covariance matrices). The corresponding unbiased single coefficients, #' variance-covariance matrices, and standard errors of the random coefficients #' model are available in the returned object (see *Value*). #' #' A test for parameter stability (homogeneous coefficients) of the random #' coefficients model is printed in the model's summary and is available in the #' returned object (see *Value*). #' #' `pvcm` objects have `print`, `summary` and `print.summary` methods. #' #' @aliases pvcm #' @param formula a symbolic description for the model to be estimated, #' @param object,x an object of class `"pvcm"`, #' @param data a `data.frame`, #' @param subset see `lm`, #' @param na.action see `lm`, #' @param effect the effects introduced in the model: one of #' `"individual"`, `"time"`, #' @param model one of `"within"`, `"random"`, #' @param index the indexes, see [pdata.frame()], #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param \dots further arguments. #' @return An object of class `c("pvcm", "panelmodel")`, which has the #' following elements: #' #' \item{coefficients}{the vector (numeric) of coefficients (or data frame for #' fixed effects),} #' #' \item{residuals}{the vector (numeric) of residuals,} #' #' \item{fitted.values}{the vector of fitted values,} #' #' \item{vcov}{the covariance matrix of the coefficients (a list for #' fixed effects model (`model = "within"`)),} #' #' \item{df.residual}{degrees of freedom of the residuals,} #' #' \item{model}{a data frame containing the variables used for the #' estimation,} #' #' \item{call}{the call,} #' #' \item{args}{the arguments of the call,} #' #' random coefficients model only (`model = "random"`): #' \item{Delta}{the estimation of the covariance matrix of the coefficients,} #' \item{single.coefs}{matrix of unbiased coefficients of single estimations,} #' \item{single.vcov}{list of variance-covariance matrices for `single.coefs`,} #' \item{single.std.error}{matrix of standard errors of `single.coefs`,} #' \item{chisq.test}{htest object: parameter stability test (homogeneous #' coefficients),} #' #' separate OLS estimations only (`model = "within"`): #' \item{std.error}{a data frame containing standard errors for all #' coefficients for each single regression.} #' #' @export #' @author Yves Croissant, Kevin Tappe #' @references \insertAllCited{} #' @references \insertRef{SWAM:71}{plm} #' @references \insertRef{GREE:18}{plm} #' @references \insertRef{POI:03}{plm} #' @references \insertRef{KLEI:ZEIL:10}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' zw <- pvcm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "within") #' zr <- pvcm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "random") #' #' ## replicate Greene (2018), p. 452, table 11.22/(2012), p. 419, table 11.14 #' summary(pvcm(log(gsp) ~ log(pc) + log(hwy) + log(water) + log(util) + log(emp) + unemp, #' data = Produc, model = "random")) #' #' ## replicate Poi (2003) (need data adjustment, remaining tiny diffs are due #' ## Poi's data set having more digits, not justified by the original Grunfeld data) #' data(Grunfeld) # need firm = 1, 4, 3, 8, 2 #' Gr.Poi.2003 <- Grunfeld[c(1:20, 61:80, 41:60, 141:160, 21:40), ] #' Gr.Poi.2003$firm <- rep(1:5, each = 20) #' Gr.Poi.2003[c(86, 98), "inv"] <- c(261.6, 645.2) #' Gr.Poi.2003[c(92), "capital"] <- c(232.6) #' #' mod.poi <- pvcm(inv ~ value + capital, data = Gr.Poi.2003, model = "random") #' summary(mod.poi) #' print(mod.poi$single.coefs) #' print(mod.poi$single.std.err) #' #' \dontrun{ #' # replicate Swamy (1971), p. 166, table 5.2 #' data(Grunfeld, package = "AER") # 11 firm Grunfeld data needed from package AER #' gw <- pvcm(invest ~ value + capital, data = Grunfeld, index = c("firm", "year")) #' # close replication of Swamy (1970), (7.4) [remaining diffs likely due to less #' # precise numerical methods in the 1970, as supposed in Kleiber/Zeileis (2010), p. 9] #' gr <- pvcm(invest ~ value + capital, data = Grunfeld, index = c("firm", "year"), model = "random") #' } #' pvcm <- function(formula, data, subset, na.action, effect = c("individual", "time"), model = c("within", "random"), index = NULL, ...){ effect <- match.arg(effect) model.name <- match.arg(model) data.name <- paste(deparse(substitute(data))) cl <- match.call(expand.dots = TRUE) mf <- match.call() mf[[1L]] <- as.name("plm") mf$model <- NA data <- eval(mf, parent.frame()) # make model.frame result <- switch(model.name, "within" = pvcm.within(formula, data, effect), "random" = pvcm.random(formula, data, effect)) class(result) <- c("pvcm", "panelmodel") result$call <- cl result$args <- list(model = model.name, effect = effect) result } pvcm.within <- function(formula, data, effect){ index <- attr(data, "index") id <- index[[1L]] time <- index[[2L]] pdim <- pdim(data) if (effect == "time"){ cond <- time other <- id card.cond <- pdim$nT$T } else{ cond <- id other <- time card.cond <- pdim$nT$n } # estimate single OLS regressions and save in a list ols <- est.ols(data, cond, effect, "within") # extract coefficients: coef <- matrix(unlist(lapply(ols, coef)), nrow = length(ols), byrow = TRUE) dimnames(coef)[1:2] <- list(names(ols), names(coef(ols[[1L]]))) coef <- as.data.frame(coef) # extract residuals and make pseries: residuals <- unlist(sapply(ols, residuals, simplify = FALSE, USE.NAMES = FALSE), use.names = TRUE) residuals <- add_pseries_features(residuals, index) # extract standard errors: vcov <- lapply(ols, vcov) std <- matrix(unlist(lapply(vcov, function(x) sqrt(diag(x)))), nrow = length(ols), byrow = TRUE) dimnames(std)[1:2] <- list(names(vcov), colnames(vcov[[1L]])) std <- as.data.frame(std) y <- unlist(rsplit(model.response(data), cond), use.names = FALSE) fitted.values <- y - residuals df.resid <- pdim$nT$N - card.cond * ncol(coef) nopool <- list(coefficients = coef, residuals = residuals, fitted.values = fitted.values, vcov = vcov, df.residual = df.resid, model = data, std.error = std) nopool } pvcm.random <- function(formula, data, effect){ ## Swamy (1970) ## see also Poi (2003), The Stata Journal: ## https://www.stata-journal.com/sjpdf.html?articlenum=st0046 ## and Stata's xtxtrc command, section Method and formulas: ## https://www.stata.com/manuals/xtxtrc.pdf index <- index(data) id <- index[[1L]] time <- index[[2L]] pdim <- pdim(data) if (effect == "time"){ cond <- time other <- id card.cond <- pdim$nT$T } else{ cond <- id other <- time card.cond <- pdim$nT$n } # stopping control: later we have to calc. D1 with division by (card.cond - 1), # so check here early if model is estimable if(!(card.cond - 1L)) { error.msg <- paste0("Swarmy (1970) model non-estimable due to only 1 ", "group in ", effect, " dimension, but need > 1") stop(error.msg) } # estimate single OLS regressions and save in a list ols <- est.ols(data, cond, effect, "random") # matrix of coefficients coefm <- matrix(unlist(lapply(ols, coef)), nrow = length(ols), byrow = TRUE) dimnames(coefm)[1:2] <- list(names(ols), names(coef(ols[[1]]))) # save these as used quite often seq_len.card.cond <- seq_len(card.cond) colnms.coefm <- colnames(coefm) nrcols.coefm <- ncol(coefm) # number of covariates K <- nrcols.coefm - has.intercept(formula) # check for NA coefficients coefna <- is.na(coefm) # list of model matrices X <- lapply(ols, model.matrix) # same without the covariates with NA coefficients # Xna <- lapply(seq_len(nrow(coefm)), function(i) X[[i]][ , !coefna[i, ], drop = FALSE]) # compute a list of XpX and XpX^-1 matrices, with 0 for lines/columns # corresponding to the NA coefficients of coefm xpx <- lapply(seq_len.card.cond, function(i){ cp <- matrix(0, nrow = nrcols.coefm, ncol = nrcols.coefm, dimnames = list(colnms.coefm, colnms.coefm)) ii <- !coefna[i, ] cp[ii, ii] <- crossprod(X[[i]][ii, ii, drop = FALSE]) cp }) xpxm1 <- lapply(seq_len.card.cond, function(i){ inv <- matrix(0, nrow = nrcols.coefm, ncol = nrcols.coefm, dimnames = list(colnms.coefm, colnms.coefm)) ii <- !coefna[i, ] inv[ii, ii] <- solve(xpx[[i]][ii, ii]) inv }) # coef.mb: compute demeaned coefficients coef.mb <- if(!any(coefna)) { t(collapse::fwithin(coefm)) } else { # NA handling: in coefm, insert the mean values in place of NA coefficients (if any) coefm <- apply(coefm, 2, function(x){x[is.na(x)] <- mean(x, na.rm = TRUE); x}) coefb <- colMeans(coefm, na.rm = TRUE) t(coefm) - coefb } # D1: compute the first part of the variance matrix D1 <- tcrossprod(coef.mb) / (card.cond - 1) # D2: compute the second part of the variance matrix sigi <- vapply(ols, function(x) deviance(x) / df.residual(x), FUN.VALUE = 0.0) sigi.xpxm1 <- lapply(seq_len.card.cond, function(i) sigi[i] * xpxm1[[i]]) D2 <- Reduce("+", sigi.xpxm1) / card.cond # if D1-D2 semi-definite positive, use it, otherwise use D1 # (practical solution, e.g., advertised in Poi (2003), Greene (2018), p. 452) ## Poi (2003) and Greene (2018) only write about positive definite (not semi-def.) ## Hsiao (2014), p. 174 writes about D1-D2 possibly being not "non-negative definite" ## -> stick with pos. semi-def. Delta <- D1 - D2 eig <- all(eigen(Delta)$values >= 0) if(!eig) Delta <- D1 ### these calculations are superfluous because down below Beta is calculated ### via weightsn etc. # # compute the Omega matrix for each individual # Omegan <- lapply(seq_len(card.cond), function(i) { # # Xi <- X[[i]] ## this Xi has a column for the NA coef # ### adding these three lines leads to matching the "weightsn" approach # Xi <- matrix(0, nrow(X[[i]]), ncol(X[[i]])) # ii <- !coefna[i, ] # Xi[ , ii] <- X[[i]][, ii] # # diag(sigi[i], nrow = nrow(Xi)) + crossprod(t(Xi), tcrossprod(Delta, Xi)) # }) # # # list of model responses # y <- lapply(ols, function(x) model.response(model.frame(x))) # # # compute X'Omega X and X'Omega y for each individual # XyOmXy <- lapply(seq_len(card.cond), function(i){ # ii <- !coefna[i, ] # Xn <- X[[i]][ , ii, drop = FALSE] # yn <- y[[i]] # # # pre-allocate matrices # XnXn <- matrix(0, ncol(coefm), ncol(coefm), dimnames = list(colnames(coefm), colnames(coefm))) # Xnyn <- matrix(0, ncol(coefm), 1L, dimnames = list(colnames(coefm), "y")) # # solve_Omegan_i <- solve(Omegan[[i]]) # CP.tXn.solve_Omegan_i <- crossprod(Xn, solve_Omegan_i) # XnXn[ii, ii] <- CP.tXn.solve_Omegan_i %*% Xn # == t(Xn) %*% solve(Omegan[[i]]) %*% Xn # Xnyn[ii, ] <- CP.tXn.solve_Omegan_i %*% yn # == t(Xn) %*% solve(Omegan[[i]]) %*% yn # list("XnXn" = XnXn, "Xnyn" = Xnyn) # }) # # # Compute coefficients # # extract and reduce XnXn (pos 1 in list's element) and Xnyn (pos 2) # # (position-wise extraction is faster than name-based extraction) # XpXm1 <- solve(Reduce("+", vapply(XyOmXy, "[", 1L, FUN.VALUE = list(length(XyOmXy))))) # beta <- XpXm1 %*% Reduce("+", vapply(XyOmXy, "[", 2L, FUN.VALUE = list(length(XyOmXy)))) # # beta.names <- rownames(beta) # beta <- as.numeric(beta) # names(beta) <- beta.names ## notation here follows Hsiao (2014), p. 173 weightsn <- lapply(seq_len.card.cond, function(i){ vcovn <- vcov(ols[[i]]) ii <- !coefna[i, ] wn <- solve((vcovn + Delta)[ii, ii, drop = FALSE]) z <- matrix(0, nrow = nrcols.coefm, ncol = nrcols.coefm) z[ii, ii] <- wn z }) V <- solve(Reduce("+", weightsn)) # V = var(Beta-hat): left part of W_i in Hsiao (6.2.9) weightsn <- lapply(weightsn, function(x) crossprod(V, x)) # full W_i in Hsiao (6.2.9) Beta <- as.numeric(Reduce("+", lapply(seq_len.card.cond, function(i) tcrossprod(weightsn[[i]], t(coefm[i, ]))))) names(Beta) <- colnames(coefm) ## calc. single unbiased coefficients and variance: solve.Delta <- solve(Delta) b.hat.coef.var <- lapply(seq_len.card.cond, function(i) { # (Poi (2003), p. 304, 2nd line) (1st line in Poi (2003) is Hsiao (2014), p. 175) sigi.inv.cp.Xi <- 1/sigi[i] * xpx[[i]] left <- solve(solve.Delta + sigi.inv.cp.Xi) right <- crossprod(sigi.inv.cp.Xi, coefm[i, ]) + crossprod(solve.Delta, Beta) b.hat.i <- crossprod(left, right) ## beta.hat.i: same result via formula following Hsiao (2014), p. 175 (need residuals first) # Beta + Delta %*% t(Xi) %*% solve(Xi %*% Delta %*% t(Xi) + sigi_i * diag(1, nrow(Xi))) %*% resid[[i]] ## Variance-Covariance matrix (asymp. formula in Poi (2003)) # V = Var(beta-hat) # vcov(ols[[i]]) # = Var(bi) A <- crossprod(left, solve.Delta) IA <- diag(1, nrow(A)) - A var.b.hat.i <- V + crossprod(t(IA), crossprod((vcov(ols[[i]]) - V), t(IA))) list(b.hat.i, var.b.hat.i) }) # extract single coeffs, variance, std. error b.hat.i <- t(collapse::qM(lapply(b.hat.coef.var, "[[", 1L))) var.b.hat.i <- lapply(b.hat.coef.var, "[[", 2L) rm(b.hat.coef.var) # not needed anymore (rm to save space) std.err.b.hat.i <- lapply(var.b.hat.i, function(i) sqrt(diag(i))) std.err.b.hat.i <- t(collapse::qM(std.err.b.hat.i)) rownames(std.err.b.hat.i) <- rownames(b.hat.i) <- names(var.b.hat.i) <- names(sigi) fit <- as.numeric(tcrossprod(Beta, model.matrix(data))) resid <- pmodel.response(data) - fit df.resid <- pdim$nT$N - nrcols.coefm ## Chi-sq test for homogeneous parameters (all panel-effect-specific coefficients are the same) # notation resembles Greene (2018), ch. 11, p. 452 dims <- dim(sigi.xpxm1[[1L]]) V.t.inv <- vapply(seq_len.card.cond, function(i) { V.t.inv.i <- matrix(0, nrow = nrcols.coefm, ncol = nrcols.coefm) ii <- !coefna[i, ] V.t.inv.i[ii, ii] <- solve(sigi.xpxm1[[i]][ii, ii]) V.t.inv.i}, FUN.VALUE = matrix(0, nrow = dims[1L], ncol = dims[2L])) # V.t = sigi.xpxm1 if(inherits(V.t.inv, "array")) { b.star.left <- solve(rowSums(V.t.inv, dims = 2L)) # == solve(Reduce("+", V.t.inv)) b.star.right <- rowSums(vapply(seq_len.card.cond, function(i) crossprod(V.t.inv[ , , i], coefm[i , ]), FUN.VALUE = numeric(nrcols.coefm))) b.star <- as.numeric(crossprod(b.star.left, b.star.right)) bi.bstar <- t(coefm) - b.star chi.sq.stat <- sum(vapply(seq_len.card.cond, function(i) { tcrossprod(crossprod(bi.bstar[ , i], V.t.inv[ , , i]), bi.bstar[ , i]) }, FUN.VALUE = numeric(1L))) } else { ## need to special-case the intercept-only case b.star.left <- solve(sum(V.t.inv)) b.star.right <- sum(vapply(seq_len.card.cond, function(i) crossprod(V.t.inv[i], coefm[i , ]), FUN.VALUE = numeric(nrcols.coefm))) b.star <- as.numeric(crossprod(b.star.left, b.star.right)) bi.bstar <- t(coefm) - b.star chi.sq.stat <- sum(vapply(seq_len.card.cond, function(i) { tcrossprod(crossprod(bi.bstar[ , i], V.t.inv[i]), bi.bstar[ , i]) }, FUN.VALUE = numeric(1L))) } chi.sq.df <- nrcols.coefm * (pdim$nT$n - 1L) chi.sq.p <- pchisq(chi.sq.stat, df = chi.sq.df, lower.tail = FALSE) chi.sq.test <- list(statistic = c("chisq" = chi.sq.stat), parameter = c("df" = chi.sq.df), method = "Test for parameter homogeniety", p.value = chi.sq.p, alternative = "Heterogeneous parameters (panel-effect-specific coefficients differ)", data.name = paste(deparse(formula))) # return object: estimations incl. variance and chi-sq test list(coefficients = Beta, residuals = resid, fitted.values = fit, vcov = V, df.residual = df.resid, model = data, Delta = Delta, single.coefs = b.hat.i, single.vcov = var.b.hat.i, single.std.error = std.err.b.hat.i, chisq.test = structure(chi.sq.test, class = "htest")) } #' @rdname pvcm #' @export summary.pvcm <- function(object, ...) { model <- describe(object, "model") if (model == "random") { coef_wo_int <- object$coefficients[!(names(coef(object)) %in% "(Intercept)")] int.only <- !length(coef_wo_int) object$waldstatistic <- if(!int.only) pwaldtest(object) else NULL std.err <- sqrt(diag(vcov(object))) b <- object$coefficients z <- b / std.err p <- 2 * pnorm(abs(z), lower.tail = FALSE) coef <- cbind(b, std.err, z, p) colnames(coef) <- c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") object$coefficients <- coef } object$ssr <- deviance(object) object$tss <- tss(unlist(model.frame(object))) object$rsqr <- 1 - object$ssr / object$tss class(object) <- c("summary.pvcm", "pvcm") return(object) } #' @rdname pvcm #' @export print.summary.pvcm <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...) { effect <- describe(x, "effect") formula <- formula(x) model <- describe(x, "model") cat(paste(effect.pvcm.list[effect], " ", sep = "")) cat(paste(model.pvcm.list[model], "\n", sep = "")) cat("\nCall:\n") print(x$call) cat("\n") print(pdim(model.frame(x))) cat("\nResiduals:\n") print(sumres(x)) if(model == "random") { cat("\nEstimated mean of the coefficients:\n") printCoefmat(x$coefficients, digits = digits) cat("\nEstimated variance of the coefficients:\n") print(x$Delta, digits = digits) } if(model == "within") { cat("\nCoefficients:\n") print(summary(x$coefficients)) } cat("\n") cat(paste0("Total Sum of Squares: ", signif(x$tss, digits), "\n")) cat(paste0("Residual Sum of Squares: ", signif(x$ssr, digits), "\n")) cat(paste0("Multiple R-Squared: ", signif(x$rsqr, digits), "\n")) if (model == "random" && !is.null(waldstat <- x$waldstatistic)) { cat(paste0("Chisq: ", signif(waldstat$statistic), " on ", waldstat$parameter, " DF, p-value: ", format.pval(waldstat$p.value, digits = digits), "\n")) } if(model == "random") { cat("Test for parameter homogeneity: ") cat(paste("Chisq = ", signif(x$chisq.test$statistic), " on ", x$chisq.test$parameter, " DF, p-value: ", format.pval(x$chisq.test$p.value, digits = digits), "\n", sep="")) } invisible(x) } est.ols <- function(mf, cond, effect, model) { ## helper function: estimate the single OLS regressions (used for pvcm's model = "random" as well as "within" ) mm <- model.matrix(mf) ## catch non-estimable model: ## check for obs. per individual vs. nr. of variables. equality: can estimate coefficients but not variance ## -> for "within" model: this is ok (output has variance NA/NaN) # -> or "random" model: variance is needed for D2, chi-sq test, so rather be strict error.msg <- paste0("insufficient number of observations for at least ", "one group in ", effect, " dimension, so defined ", "model is non-estimable") cond <- GRP(cond) Ti <- collapse::GRPN(cond, expand = FALSE) ncolumns <- ncol(mm) if(model == "within" && any(Ti < ncolumns)) stop(error.msg) if(model == "random" && any(Ti <= ncolumns)) stop(error.msg) # split data by group X <- collapse::rsplit(mm, cond) y <- collapse::rsplit(model.response(mf), cond) # estimate OLS per group ols <- mapply(function(X_i, y_i) { r <- lm(y_i ~ X_i - 1, model = FALSE) names(r$coefficients) <- colnames(X_i) # need to plug-in original coef names due to lm(., model = FALSE) losing them r }, X, y, SIMPLIFY = FALSE) ols } plm/R/test_granger.R0000644000176200001440000002500414414727267014071 0ustar liggesusers### Panel Granger (Non-)Causality Test ## ## Reference: ## * Dumitrescu, Elena-Ivona/Hurlin, Christophe (2012), Testing for Granger non-causality in heterogeneous panels, ## Economic Modelling, 29(4), pp. 1450-460. ## * supplements (test data, MATLAB code): http://www.runmycode.org/companion/view/42 ## ## * Lopez, Luciano/Weber, Sylvain (2017), Testing for Granger causality in panel data, ## The Stata Journal, Vol 17, Issue 4, pp. 972-984. ## * Working paper: Testing for Granger causality in panel data, ## IRENE Working paper 17-03, September 11, 2017 ## * supplements (xtgcause for Stata) https://ideas.repec.org/c/boc/bocode/s458308.html ## ## * EViews blog with introduction to the test and a Monte Carlo study: ## http://blog.eviews.com/2017/08/dumitrescu-hurlin-panel-granger.html ## ## TODO (if someone is willing...) ## * Lopez/Weber (2017) also demonstrate lag selection procedure by AIC, BIC, ... ## #' Panel Granger (Non-)Causality Test (Dumitrescu/Hurlin (2012)) #' #' Test for Granger (non-)causality in panel data. #' #' # % TODO: write about assumptions of panel Granger test: # cross-sectional independence, convergence #' #' The panel Granger (non-)causality test is a combination of Granger #' tests \insertCite{GRAN:69}{plm} performed per individual. The test #' is developed by \insertCite{DUMI:HURL:12;textual}{plm}, a shorter #' exposition is given in \insertCite{LOPE:WEBE:17;textual}{plm}. #' #' The formula `formula` describes the direction of the (panel) Granger #' causation where `y ~ x` means "x (panel) Granger causes y". #' #' By setting argument `test` to either `"Ztilde"` (default) or #' `"Zbar"`, two different statistics can be requested. `"Ztilde"` #' gives the standardised statistic recommended by Dumitrescu/Hurlin (2012) for #' fixed T samples. If set to `"Wbar"`, the intermediate Wbar statistic #' (average of individual Granger chi-square statistics) is given which is used #' to derive the other two. #' #' The Zbar statistic is not suitable for unbalanced panels. For the Wbar #' statistic, no p-value is available. #' #' The implementation uses [lmtest::grangertest()] from #' package \CRANpkg{lmtest} to perform the individual Granger tests. #' #' @param formula a `formula` object to describe the direction of the #' hypothesized Granger causation, #' @param data a `pdata.frame` or a `data.frame`, #' @param test a character to request the statistic to be returned, #' either `"Ztilde"` (default),or `"Zbar"`, alternatively, set to #' `"Wbar"` for an intermediate statistic (see Details), #' @param order integer(s) giving the number of lags to include in the #' test's auxiliary regressions, the length of order must be #' either 1 (same lag order for all individuals) or equal to the #' number of individuals (to specify a lag order per individual), #' @param index only relevant if `data` is `data.frame` and not a #' `pdata.frame`; if `NULL`, the first two columns of the #' data.frame are assumed to be the index variables, for further #' details see [pdata.frame()]. #' @return An object of class `c("pgrangertest", "htest")`. Besides #' the usual elements of a `htest` object, it contains the data #' frame `indgranger` which carries the Granger test statistics #' per individual along the associated p-values, degrees of #' freedom, and the specified lag order. #' @export #' @author Kevin Tappe #' @seealso [lmtest::grangertest()] for the original (non-panel) #' Granger causality test in \CRANpkg{lmtest}. #' @references #' #' \insertRef{DUMI:HURL:12}{plm} #' #' \insertRef{GRAN:69}{plm} #' #' \insertRef{LOPE:WEBE:17}{plm} #' #' @keywords htest #' @examples #' #' ## not meaningful, just to demonstrate usage #' ## H0: 'value' does not Granger cause 'inv' for all invididuals #' #' data("Grunfeld", package = "plm") #' pgrangertest(inv ~ value, data = Grunfeld) #' pgrangertest(inv ~ value, data = Grunfeld, order = 2L) #' pgrangertest(inv ~ value, data = Grunfeld, order = 2L, test = "Zbar") #' #' # varying lag order (last individual lag order 3, others lag order 2) #' (pgrt <- pgrangertest(inv ~ value, data = Grunfeld, order = c(rep(2L, 9), 3L))) #' # chisq statistics per individual #' pgrt$indgranger #' pgrangertest <- function(formula, data, test = c("Ztilde", "Zbar", "Wbar"), order = 1L, index = NULL) { # Implementation of formulae follows Lopez/Weber (2017), the formulas are slightly different # compared to Dumistrescu/Hurlin (2012), because "Note however that T in DH's formulae # must be understood as the number of observations remaining in the estimations, that # is the number of periods minus the number of lags included. In order to be consistent # with our notation, we therefore replaced DH's T by T - K in the following formulas of # the present paper." # y ~ x: to test whether x (panel-)Granger causes y test <- match.arg(test) if (!inherits(data, "pdata.frame")) data <- pdata.frame(data, index = index) pdim <- pdim(data) balanced <- pdim$balanced N <- pdim$nT$n T. <- pdim$nT$T Ti <- pdim$Tint$Ti indi <- unclass(index(data))[[1L]] indi_con <- is.pconsecutive(data) # some input checks if (!inherits(formula, "formula") || length(all.vars(formula)) > 2L) { stop(paste0("Argument 'formula' must be of class \"formula\" and may not contain ", "more than 2 variables, one LHS and one RHS variable, e.g., 'y ~ x'")) } if (!(is.numeric(order) && all(round(order) == order) && all(order > 0L))) stop("Lag order 'order' must contain positive integer(s)") if (length(order) > 1L && length(order) != N) stop("'order' must have length 1 or the number of individuals") if (test == "Zbar" && !balanced) stop("'test = \"Zbar\"' is not suited for unbalanced panels") if (test == "Zbar" && length(unique(order)) != 1L) stop("'test = \"Zbar\"' is not suited for varying lag order") # For statistic Ztilde, the second order moments of the individual statistics must exist # (formula (10) in Dumitrescu/Hurlin (2012) where T = T - K) req.obs <- 5L + 3L*order if (length(order) == 1L) { if (test == "Ztilde" && !all((Ti > (req.obs)))) { stop(paste0("Condition for test = \"Ztilde\" not met for all individuals: length of time series ", "must be larger than 5+3*order (>5+3*", order, "=", req.obs, ")")) } } else { if (test == "Ztilde" && !all((Ti > (req.obs)))) { stop(paste0("Condition for test = \"Ztilde\" not met for all individuals: length of time series ", "must be larger than 5+3*order [where order is the order specified for the individuals]")) } } # give warning if data is not consecutive per individual if (!all(indi_con)) { indnames <- pdim[["panel.names"]][["id.names"]] wrn1 <- "pgrangertest: result may be unreliable due to individuals with non-consecutive time periods: " wrn2 <- if (sum(!indi_con) <= 5L) { paste0(indnames[!indi_con], collapse = ", ") } else { # cut off enumeration of individuals in warning message if more than 5 breakpoint <- which(cumsum(!indi_con) == 5L)[1L] paste0(paste0(indnames[seq_len(breakpoint)][!indi_con[seq_len(breakpoint)]], collapse = ", "), ", ...") } wrn <- paste0(wrn1, wrn2) warning(wrn) } listdata <- collapse::rsplit(data, indi, use.names = FALSE) # split data per individual ## use lmtest::grangertest for the individual Granger tests # for this, if necessary, expand order argument for lmtest::grangertest to full length (N) # [but leave variable 'order' in its current length for later decision making] order_grangertest <- if(length(order) == 1L) rep(order, N) else order # Dumitrescu/Hurlin (2012), p. 1453 use the Chisq definition of the Granger test grangertests_i <- mapply(function(data, order) lmtest::grangertest(formula, data = data, order = order, test = "Chisq"), listdata, order_grangertest, SIMPLIFY = FALSE) # extract Wald/Chisq-statistics and p-values of individual Granger tests Wi <- vapply(grangertests_i, function(g) g[["Chisq"]][2L], FUN.VALUE = 0.0, USE.NAMES = FALSE) pWi <- vapply(grangertests_i, function(g) g[["Pr(>Chisq)"]][[2L]], FUN.VALUE = 0.0, USE.NAMES = FALSE) dfWi <- vapply(grangertests_i, function(g) abs(g[["Df"]][2L]), FUN.VALUE = 0.0, USE.NAMES = FALSE) Wbar <- c("Wbar" = mean(Wi)) if(test == "Zbar") { stat <- c(sqrt(N/(2*order)) * (Wbar - order)) names(stat) <- "Zbar" pval <- 2*pnorm(abs(stat), lower.tail = FALSE) } if(test == "Ztilde") { # Ztilde recommended for fixed T if (balanced && length(order) == 1L) { stat <- c( sqrt( N/(2*order) * (T. - 3*order - 5) / (T. - 2*order - 3) ) * ( (T. - 3*order - 3) / (T. - 3*order - 1) * Wbar - order)) } else { # unbalanced and/or varying lag order # unbal stat reduces to the balanced case for balanced data but rather treat it separately here # formula (33) in Dumitrescu/Hurlin (2012), p. 1459 if (length(order) == 1L) order <- rep(order, N) # replicate lag order for all individuals stat <- c( sqrt(N) * ( Wbar - 1/N * sum( order * (Ti - 3*order - 1) / (Ti - 3*order - 3) )) * 1/sqrt( 1/N * sum( 2* order * ((Ti - 3*order - 1)^2 * (Ti - 2*order - 3)) / ((Ti - 3*order - 3)^2 * (Ti - 3*order - 5)) ) ) ) } names(stat) <- "Ztilde" pval <- 2*pnorm(abs(stat), lower.tail = FALSE) } if(test == "Wbar") { stat <- Wbar names(stat) <- "Wbar" pval <- NULL } # make data frame with individual Granger test results and lag order indgranger <- data.frame(indi[!collapse::fduplicated(indi, all = FALSE)], Wi, pWi, dfWi, order_grangertest) colnames(indgranger) <- c(names(index(data))[1L], "Chisq", "p-value", "df", "lag") RVAL <- list(statistic = stat, parameter = NULL, p.value = pval, method = "Panel Granger (Non-)Causality Test (Dumitrescu/Hurlin (2012))", alternative = "Granger causality for at least one individual", data.name = deparse(formula), indgranger = indgranger) class(RVAL) <- c("pgrangertest", "htest") return(RVAL) } plm/R/est_cce.R0000644000176200001440000004605314642231264013007 0ustar liggesusers## Common Correlated Effects Pooled/MG estimators ## ref. Holly, Pesaran and Yamagata JoE 158 (2010) ## (also Kapetanios, Pesaran and Yamagata JoE 2011) ## CCEP and CCEMG together in the same SW framework ## based on generalized FEs ## this version 6: includes both defactored (cce) and raw (standard) residuals, ## leaving to a special residuals.pcce method the choice of which to retrieve ## NB the effect of including a trend is exactly the same as for ## including as.numeric() in the model specification ## If the panel is unbalanced, though, then for some i the trend becomes ## (3,4,5, ...) instead of (1,2,3, ...); the difference is absorbed by ## the individual intercept, and *the group intercept* changes. ## needed for standalone operation: #plm <- plm:::plm #pdim <- plm:::pdim #model.matrix.plm <- plm:::model.matrix.plm #pmodel.response.plm <- plm:::pmodel.response.plm #tss <- plm:::tss #' Common Correlated Effects estimators #' #' Common Correlated Effects Mean Groups (CCEMG) and Pooled (CCEP) #' estimators for panel data with common factors (balanced or #' unbalanced) #' #' `pcce` is a function for the estimation of linear panel models by #' the Common Correlated Effects Mean Groups or Pooled estimator, #' consistent under the hypothesis of unobserved common factors and #' idiosyncratic factor loadings. The CCE estimator works by #' augmenting the model by cross-sectional averages of the dependent #' variable and regressors in order to account for the common factors, #' and adding individual intercepts and possibly trends. #' #' @aliases pcce #' @param formula a symbolic description of the model to be estimated, #' @param object,x an object of class `"pcce"`, #' @param data a `data.frame`, #' @param subset see `lm`, #' @param na.action see `lm`, #' @param model one of `"mg"`, `"p"`, selects Mean Groups vs. Pooled #' CCE model, #' @param index the indexes, see [pdata.frame()], #' @param trend logical specifying whether an individual-specific #' trend has to be included, #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param type one of `"defactored"` or `"standard"`, #' @param vcov a variance-covariance matrix furnished by the user or a function to calculate one, #' @param \dots further arguments. #' @return An object of class `c("pcce", "panelmodel")` containing: #' \item{coefficients}{the vector of coefficients,} #' \item{residuals}{the vector of (defactored) residuals,} #' \item{stdres}{the vector of (raw) residuals,} #' \item{tr.model}{the transformed data after projection on H,} #' \item{fitted.values}{the vector of fitted values,} #' \item{vcov}{the covariance matrix of the coefficients,} #' \item{df.residual}{degrees of freedom of the residuals,} #' \item{model}{a data.frame containing the variables used for the #' estimation,} #' \item{call}{the call,} #' \item{indcoef}{the matrix of individual coefficients from #' separate time series regressions,} #' \item{r.squared}{numeric, the R squared.} #' @export #' @importFrom MASS ginv #' @importFrom collapse rsplit gsplit GRP GRPN #' @author Giovanni Millo #' @references #' #' \insertRef{kappesyam11}{plm} #' #' \insertRef{HOLL:PESA:YAMA:10}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' ccepmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="p") #' summary(ccepmod) #' summary(ccepmod, vcov = vcovHC) # use argument vcov for robust std. errors #' #' ccemgmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="mg") #' summary(ccemgmod) #' pcce <- function (formula, data, subset, na.action, model = c("mg", "p"), #residuals = c("defactored", "standard"), index = NULL, trend = FALSE, ...) { ## TODO: in general: ## * consider parallel execution via mclapply/mcmapply (aligns with the ## split-only-once aspect mentioned above). ## Create a Formula object if necessary (from plm) if (!inherits(formula, "Formula")) formula <- as.Formula(formula) ## same as pggls but for effect, fixed at "individual" for compatibility ## ind for id, tind for time, k for K, coefnam for coef.names effect <- "individual" ## record call etc. model <- match.arg(model) model.name <- paste("cce", model, sep="") data.name <- paste(deparse(substitute(data))) cl <- match.call() plm.model <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "effect", "model", "index"), names(plm.model), 0) plm.model <- plm.model[c(1L, m)] plm.model[[1L]] <- as.name("plm") ## change the 'model' in call plm.model$model <- "pooling" ## evaluates the call, modified with model == "pooling", inside the ## parent frame resulting in the pooling model on formula, data plm.model <- eval(plm.model, parent.frame()) mf <- model.frame(plm.model) index <- unclass(attr(mf, "index")) # unclass for speed ind <- index[[1L]] ## individual index tind <- index[[2L]] ## time index ## set dimension variables pdim <- pdim(plm.model) nt <- pdim$Tint$nt Ti <- pdim$Tint$Ti T. <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N ## set index names time.names <- pdim$panel.names$time.names id.names <- pdim$panel.names$id.names coef.names <- names(coef(plm.model)) ## number of coefficients k <- length(coef.names) ## model data X <- model.matrix(plm.model) y <- model.response(mf) ## det. *minimum* group numerosity t <- min(Ti) ## check min. t numerosity ## NB it is also possible to allow estimation if there *is* one group ## with t large enough and average on coefficients removing NAs ## Here we choose the explicit way: let estimation fail if we lose df ## but a warning would do... if(t < (k+1)) stop("Insufficient number of time periods") ## one regression for each group i in 1..n ## and retrieve coefficients putting them into a matrix ## (might be unbalanced => t1 != t2 but we don't care as long ## as min(t) > k+1) has.int <- attr(terms(plm.model), "intercept") if(has.int) { ## subtract intercept from parms number and names k <- k - 1 coef.names <- coef.names[-1L] ## must put the intercept into the group-invariant part!! ## so first drop it from X X <- X[ , -1L, drop = FALSE] } ## "pre-allocate" coefficients matrix for the n models ## (dimensions are known in advance/by now) tcoef <- matrix(NA_real_, nrow = k, ncol = n) ## pre-allocate residuals lists for individual regressions ## (lists allow for unbalanced panels) cceres <- vector("list", n) stdres <- vector("list", n) ## CCE by-group estimation ## group-invariant part, goes in Hhat ## between-periods transformation (take means over groups for each t) Xm <- Between(X, effect = tind, na.rm = TRUE) ym <- as.numeric(Between(y, effect = "time", na.rm = TRUE)) Hhat <- if(has.int) cbind(ym, Xm, 1L) else cbind(ym, Xm) ## pre-allocate XMX, XMy arrays ## (dimensions are known in advance/by now) XMX <- array(data = NA_real_, dim = c(k, k, n)) XMy <- array(data = NA_real_, dim = c(k, 1L, n)) ## pre-allocate MX, My for list of transformed data, ## later reduced to matrix and numeric, respectively ## (dimensions of n matrices/numerics to be hold by MX/My are not known in ## advance, depend on time periods per individual -> hence use list) MX <- vector("list", length = n) My <- vector("list", length = n) ## hence calc. beta_i anyway because of vcov ## for each x-sect. i=1..n estimate (over t) the CCE for every TS ## as in KPY, eq. 15 # split X, y, Hhat by individual and store in lists ind.GRP <- collapse::GRP(ind) tX.list <- collapse::rsplit(X, ind.GRP, use.names = FALSE) ty.list <- collapse::gsplit(y, ind.GRP) tHhat.list <- collapse::rsplit(Hhat, ind.GRP, use.names = FALSE) tMhat.list <- vector("list", length = n) # pre-allocate for(i in seq_len(n)) { tX <- tX.list[[i]] ty <- ty.list[[i]] tHhat <- tHhat.list[[i]] ## if 'trend' then augment the xs-invariant component if(trend) tHhat <- cbind(tHhat, seq_len(dim(tHhat)[[1L]])) ## NB tHHat, tMhat should be i-invariant (but for the ## group size if unbalanced) tMhat <- diag(1, length(ty)) - crossprod(t(tHhat), solve(crossprod(tHhat), t(tHhat))) ## tMhat is needed again later, so save in list tMhat.list[[i]] <- tMhat CP.tXtMhat <- crossprod(tX, tMhat) tXMX <- tcrossprod(CP.tXtMhat, t(tX)) tXMy <- tcrossprod(CP.tXtMhat, t(ty)) ## XMX_i, XMy_i XMX[ , , i] <- tXMX XMy[ , , i] <- tXMy ## save transformed data My, MX for vcovHC use ## (NB M is symmetric) MX[[i]] <- t(CP.tXtMhat) My[[i]] <- crossprod(tMhat, ty) ## single CCE coefficients tcoef[ , i] <- crossprod(ginv(tXMX), tXMy) # solve(tXMX, tXMy) ## USED A GENERALIZED INVERSE HERE BECAUSE OF PBs WITH ECM SPECS ## Notice remark in Pesaran (2006, p.977, between (27) and (28)) ## that XMX.i is invariant to the choice of a g-inverse for H'H } # Reduce transformed data to matrix and numeric, respectively MX <- Reduce(rbind, MX) My <- Reduce(c, My) # set names lost in processing above dimnames(MX) <- list(rownames(X), colnames(X)) names(My) <- names(y) ## end data module ## CCEMG coefs are averages across individual regressions ## (here: coefs of xs-variants only!) coefmg <- rowMeans(tcoef) ## make demeaned coefficients: b_i - b_CCEMG demcoef <- tcoef - coefmg # coefmg gets recycled n times by column ## pre-allocate matrix of cross-products of demeaned individual coefficients Rmat <- array(data = NA_real_, dim = c(k, k, n)) ## calc. coef, vcov, and residuals according to model switch(model, "mg" = { ## assign beta CCEMG coef <- coefmg ## calc CCEMG covariance: ## (HPY 2010, p. 163, between (3.10) and (3.11) / KPY 2011, p. 330 (38)) for(i in seq_len(n)) Rmat[ , , i] <- outer(demcoef[ , i], demcoef[ , i]) vcov <- 1/(n*(n-1)) * rowSums(Rmat, dims = 2L) # == 1/(n*(n-1)) * apply(Rmat, 1:2, sum), but rowSums(., dims = 2L)-construct is way faster ## calc CCEMG residuals, both defactored and raw for(i in seq_len(n)) { ## must redo all this because needs b_CCEP, which is ## not known at by-groups step tX <- tX.list[[i]] ty <- ty.list[[i]] tMhat <- tMhat.list[[i]] tb <- tcoef[ , i] ## cce (defactored) residuals as M_i(y_i - X_i * bCCEMG_i) tytXtb <- ty - tcrossprod(tX, t(tb)) cceres[[i]] <- tcrossprod(tMhat, t(tytXtb)) ## std. (raw) residuals as y_i - X_i * bCCEMG_i - a_i ta <- mean(ty - tX) stdres[[i]] <- tytXtb - ta } }, "p" = { ## calc beta_CCEP sXMX <- rowSums(XMX, dims = 2L) # == apply(XMX, 1:2, sum), but rowSums(., dims = 2L)-construct is way faster sXMy <- rowSums(XMy, dims = 2L) # == apply(XMy, 1:2, sum), but rowSums(., dims = 2L)-construct is way faster coef <- solve(sXMX, sXMy) # bCCEP in HPY ## calc CCEP covariance: ## (HPY 2010, p. 163-4, (3.12, 3.13) for(i in seq_len(n)) { Rmat[ , , i] <- crossprod(XMX[ , , i], crossprod(outer(demcoef[ , i], demcoef[ , i]), XMX[ , , i])) } ## summing over the n-dimension of the array we get the ## covariance matrix of coefs R.star <- 1/(n-1) * rowSums(Rmat, dims = 2L) * 1/(t^2) # rowSums(Rmat, dims = 2L) faster than == apply(Rmat, 1:2, sum) psi.star <- 1/N * sXMX Sigmap.star <- tcrossprod(solve(psi.star, R.star), solve(psi.star)) vcov <- Sigmap.star/n ## calc CCEP residuals, both defactored and raw for(i in seq_len(n)) { tX <- tX.list[[i]] ty <- ty.list[[i]] tMhat <- tMhat.list[[i]] ## cce residuals as M_i(y_i - X_i * bCCEP) tytXcoef <- ty - tcrossprod(tX, t(coef)) cceres[[i]] <- tcrossprod(tMhat, t(tytXcoef)) ## std. (raw) residuals as y_i - X_i * bCCEP - a_i # (HPY, p. 165 (left column at the bottom)) ta <- mean(ty - tX) stdres[[i]] <- tytXcoef - ta } }) ## calc. measures of fit according to model type switch(model, "mg" = { ## R2 as in HPY 2010: sigma2ccemg = average (over n) of variances ## of defactored residuals ## (for unbalanced panels, each variance is correctly normalized ## by group dimension T.i) ## ## If balanced, would simply be ## sum(unlist(cceres)^2)/(n*(T.-2*k-2)) ## average variance of defactored residuals sigma2ccemg as in ## Holly, Pesaran and Yamagata, (3.14) sigma2cce.i <- vapply(cceres, function(cceres.i) crossprod(cceres.i) * 1/(length(cceres.i)-2*k-2), FUN.VALUE = 0.0, USE.NAMES = FALSE) sigma2cce <- 1/n*sum(sigma2cce.i) }, "p" = { ## variance of defactored residuals sigma2ccep as in Holly, ## Pesaran and Yamagata, (3.15) sigma2cce <- 1/(n*(T.-k-2)-k)* sum(vapply(cceres, crossprod, FUN.VALUE = 0.0, USE.NAMES = FALSE)) ## is the same as sum(unlist(cceres)^2) }) ## calc. overall R2, CCEMG or CCEP depending on 'model' sigma2.i <- collapse::gsplit(y, ind.GRP) sigma2.i <- lapply(sigma2.i, function(y.i) { as.numeric(crossprod(y.i - mean(y.i)))/(length(y.i)-1)}) sigma2y <- mean(unlist(sigma2.i, use.names = FALSE)) r2cce <- 1 - sigma2cce/sigma2y ## allow outputting different types of residuals, defactored residuals are ## default/go into slot 'residuals' stdres <- unlist(stdres) residuals <- unlist(cceres) ## add transformed data (for now a simple list) tr.model <- list(y = My, X = MX) ## so that if the model is ccepmod, ## > lm(ccepmod$tr.model[["y"]] ~ ccepmod$tr.model[["X"]]-1) ## reproduces the model results ## Final model object: ## code as in pggls, differences: ## - here there is no 'sigma' ## - there are two types of residuals ## - transformed data My, MX are included for vcovHC usage df.residual <- nrow(X) - ncol(X) fitted.values <- y - residuals coef <- as.numeric(coef) names(coef) <- rownames(vcov) <- colnames(vcov) <- coef.names dimnames(tcoef) <- list(coef.names, id.names) pmodel <- list(model.name = model.name) pccemod <- list(coefficients = coef, residuals = residuals, stdres = stdres, tr.model = tr.model, fitted.values = fitted.values, vcov = vcov, df.residual = df.residual, model = mf, indcoef = tcoef, r.squared = r2cce, #cceres = as.vector(cceres), #ccemgres = as.vector(ccemgres), formula = formula, call = cl) pccemod <- structure(pccemod, pdim = pdim, pmodel = pmodel) class(pccemod) <- c("pcce", "panelmodel") pccemod } #' @rdname pcce #' @export summary.pcce <- function(object, vcov = NULL, ...){ vcov_arg <- vcov std.err <- if (!is.null(vcov_arg)) { if (is.matrix(vcov_arg)) rvcov <- vcov_arg if (is.function(vcov_arg)) rvcov <- vcov_arg(object) sqrt(diag(rvcov)) } else { sqrt(diag(stats::vcov(object))) } b <- object$coefficients z <- b/std.err p <- 2*pnorm(abs(z), lower.tail = FALSE) CoefTable <- cbind(b, std.err, z, p) colnames(CoefTable) <- c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") object$CoefTable <- CoefTable y <- object$model[[1L]] object$tss <- tss(y) object$ssr <- as.numeric(crossprod(residuals(object))) object$rsqr <- object$r.squared #1-object$ssr/object$tss ## add some info to summary.pcce object # robust vcov (next to "normal" vcov) if (!is.null(vcov_arg)) { object$rvcov <- rvcov rvcov.name <- paste0(deparse(substitute(vcov))) attr(object$rvcov, which = "rvcov.name") <- rvcov.name } class(object) <- c("summary.pcce") return(object) } #' @rdname pcce #' @export print.summary.pcce <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ pmodel <- attr(x, "pmodel") pdim <- attr(x, "pdim") cat("Common Correlated Effects ") cat(paste(model.pcce.list[pmodel$model.name], "\n", sep = "")) if (!is.null(x$rvcov)) { cat("\nNote: Coefficient variance-covariance matrix supplied: ", attr(x$rvcov, which = "rvcov.name"), "\n", sep = "") } cat("\nCall:\n") print(x$call) cat("\n") print(pdim) cat("\nResiduals:\n") print(sumres(x)) cat("\nCoefficients:\n") printCoefmat(x$CoefTable, digits = digits) cat(paste("Total Sum of Squares: ", signif(x$tss, digits), "\n", sep="")) cat(paste("Residual Sum of Squares: ", signif(x$ssr, digits), "\n", sep="")) cat(paste("HPY R-squared: ", signif(x$rsqr, digits), "\n", sep="")) invisible(x) } #' @rdname pcce #' @export residuals.pcce <- function(object, type = c("defactored", "standard"), ...) { ## special resid() method for pcce: allows to extract either ## defactored residuals (default) or raw residuals defres <- pres(object) switch(match.arg(type), "standard" = { ## add panel features and names from 'defres' residuals <- add_pseries_features(object$stdres, index(defres)) names(residuals) <- names(defres) }, "defactored" = { residuals <- defres } ) return(residuals) } #' @rdname pcce #' @export model.matrix.pcce <- function(object, ...) { object$tr.model$X } #' @rdname pcce #' @export pmodel.response.pcce <- function(object, ...) { object$tr.model$y } plm/R/deprecated.R0000644000176200001440000005763014641057410013503 0ustar liggesusers#' Deprecated functions of plm #' #' `dynformula`, `pht`, `plm.data`, and `pvcovHC` are #' deprecated functions which could be removed from \pkg{plm} in a near future. #' #' `dynformula` was used to construct a dynamic formula which was the #' first argument of `pgmm`. `pgmm` uses now multi-part formulas. #' #' `pht` estimates the Hausman-Taylor model, which can now be estimated #' using the more general `plm` function. #' #' `plm.data` is replaced by `pdata.frame`. #' #' `pvcovHC` is replaced by `vcovHC`. #' #' `detect_lin_dep` was renamed to `detect.lindep`. #' #' @name plm-deprecated #' @aliases detect_lin_dep #' @param formula a formula, #' @param x an object of class `"plm"`, #' @param lag.form a list containing the lag structure of each variable in the #' formula, #' @param diff.form a vector (or a list) of logical values indicating whether #' variables should be differenced, #' @param log.form a vector (or a list) of logical values indicating whether #' variables should be in logarithms. #' @param data a `data.frame`, #' @param \dots further arguments. #' @param indexes a vector (of length one or two) indicating the (individual #' and time) indexes (see Details); #' NULL #' @rdname plm-deprecated #' @export pvcovHC <- function(x, ...){ .Deprecated(new = "pvcovHC", msg = "'pvcovHC' is deprecated, use 'vcovHC' instead for same functionality", old = "vcovHC") UseMethod("vcovHC") } # plm.data() is deprecated since February 2017. Need to keep it in package # for backward compatibility of users' code out there and packages, especially # for package 'systemfit' (systemfit supports pdata.frame since 2017-03-09 but # plm.data can be used there as well). # # While plm.data() was a 'full function' once, it now uses # pdata.frame() and re-works the properties of the "plm.dim" object # original created by the 'full' plm.data() function. The 'full' # plm.data() function is kept non-exported as plm.data_depr_orig due # to reference and testing (see tests/test_plm.data.R) #' @rdname plm-deprecated #' @export plm.data <- function(x, indexes = NULL) { .Deprecated(new = "pdata.frame", msg = "use of 'plm.data' is discouraged, better use 'pdata.frame' instead", old = "plm.data") # the class "plm.dim" (which plm.data creates) deviates from class "pdata.frame": # * always contains the indexes (in first two columns (id, time)) # * does not have fancy rownames # * always coerces strings to factors # * does not have index attribute # * leaves in constant columns (albeit the 'full' implementation printed a msg about dropping those ...) # # -> call pdata.frame accordingly and adjust afterwards orig_col_order <- colnames(x) x <- pdata.frame(x, index = indexes, drop.index = FALSE, row.names = FALSE, stringsAsFactors = TRUE, replace.non.finite = TRUE, drop.NA.series = TRUE, drop.const.series = FALSE) # determine position and names of index vars in pdata.frame pos_indexes <- pos.index(x) names_indexes <- names(pos_indexes) # cannot take from arg 'indexes' as it could be only the index for id # the class "plm.dim" does not have the index attribute -> remove attr(x, "index") <- NULL # remove class 'pdata.frame' to prevent any dispatching of special methods on object x class(x) <- setdiff(class(x), "pdata.frame") # class "plm.dim" always has indexes in first two columns (id, time) # while "pdata.frame" leaves the index variables at its place (if not dropped at all with drop.index = T) x <- x[ , c(names_indexes, setdiff(orig_col_order, names_indexes))] # set class class(x) <- c("plm.dim", "data.frame") return(x) } ### pht lev2var <- function(x, ...){ # takes a data.frame and returns a vector of variable names, the # names of the vector being the names of the effect is.fact <- sapply(x, is.factor) if (sum(is.fact) > 0L){ not.fact <- names(x)[!is.fact] names(not.fact) <- not.fact x <- x[is.fact] wl <- lapply(x,levels) # nl is the number of levels for each factor nl <- sapply(wl,length) # nf is a vector of length equal to the total number of levels # containing the name of the factor nf <- rep(names(nl),nl) result <- unlist(wl) names(result) <- nf result <- paste(names(result), result, sep = "") names(nf) <- result c(nf, not.fact) } else{ z <- names(x) names(z) <- z z } } #' Hausman--Taylor Estimator for Panel Data #' #' The Hausman--Taylor estimator is an instrumental variable estimator without #' external instruments (function deprecated). #' #' `pht` estimates panels models using the Hausman--Taylor estimator, #' Amemiya--MaCurdy estimator, or Breusch--Mizon--Schmidt estimator, depending #' on the argument `model`. The model is specified as a two--part formula, #' the second part containing the exogenous variables. #' #' @aliases pht #' @param formula a symbolic description for the model to be #' estimated, #' @param object,x an object of class `"plm"`, #' @param data a `data.frame`, #' @param subset see [lm()] for `"plm"`, a character or #' numeric vector indicating a subset of the table of coefficient #' to be printed for `"print.summary.plm"`, #' @param na.action see [lm()], #' @param model one of `"ht"` for Hausman--Taylor, `"am"` #' for Amemiya--MaCurdy and `"bms"` for #' Breusch--Mizon--Schmidt, #' @param index the indexes, #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param \dots further arguments. #' @return An object of class `c("pht", "plm", "panelmodel")`. #' #' A `"pht"` object contains the same elements as `plm` #' object, with a further argument called `varlist` which #' describes the typology of the variables. It has `summary` and #' `print.summary` methods. #' #' @note The function `pht` is deprecated. Please use function `plm` #' to estimate Taylor--Hausman models like this with a three-part #' formula as shown in the example:\cr `plm(, #' random.method = "ht", model = "random", inst.method = #' "baltagi")`. The Amemiya--MaCurdy estimator and the #' Breusch--Mizon--Schmidt estimator is computed likewise with #' `plm`. #' @export #' @author Yves Croissant #' @references #' #' \insertCite{AMEM:MACU:86}{plm} #' #' \insertCite{BALT:13}{plm} #' #' \insertCite{BREU:MIZO:SCHM:89}{plm} #' #' \insertCite{HAUS:TAYL:81}{plm} #' #' @keywords regression #' @examples #' #' ## replicates Baltagi (2005, 2013), table 7.4; Baltagi (2021), table 7.5 #' ## preferred way with plm() #' data("Wages", package = "plm") #' ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + #' bluecol + ind + union + sex + black + ed | #' bluecol + south + smsa + ind + sex + black | #' wks + married + union + exp + I(exp ^ 2), #' data = Wages, index = 595, #' random.method = "ht", model = "random", inst.method = "baltagi") #' summary(ht) #' #' am <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + #' bluecol + ind + union + sex + black + ed | #' bluecol + south + smsa + ind + sex + black | #' wks + married + union + exp + I(exp ^ 2), #' data = Wages, index = 595, #' random.method = "ht", model = "random", inst.method = "am") #' summary(am) #' #' ## deprecated way with pht() for HT #' #ht <- pht(lwage ~ wks + south + smsa + married + exp + I(exp^2) + #' # bluecol + ind + union + sex + black + ed | #' # sex + black + bluecol + south + smsa + ind, #' # data = Wages, model = "ht", index = 595) #' #summary(ht) #' # deprecated way with pht() for AM #' #am <- pht(lwage ~ wks + south + smsa + married + exp + I(exp^2) + #' # bluecol + ind + union + sex + black + ed | #' # sex + black + bluecol + south + smsa + ind, #' # data = Wages, model = "am", index = 595) #' #summary(am) #' #' pht <- function(formula, data, subset, na.action, model = c("ht", "am", "bms"), index = NULL, ...){ .Deprecated(old = "pht", msg = paste0("uses of 'pht()' and 'plm(., model = \"ht\")' are discouraged, ", "better use 'plm(., model = \"random\", random.method = \"ht\", ", "inst.method = \"baltagi\"/\"am\"/\"bms\")' for Hausman-Taylor, ", "Amemiya-MaCurdy, and Breusch-Mizon-Schmidt estimator")) cl <- match.call(expand.dots = TRUE) mf <- match.call() model <- match.arg(model) # compute the model.frame using plm with model = NA mf[[1L]] <- as.name("plm") mf$model <- NA data <- eval(mf, parent.frame()) # estimate the within model without instrument and extract the fixed # effects formula <- Formula(formula) if (length(formula)[2L] == 1L) stop("a list of exogenous variables should be provided") mf$model = "within" mf$formula <- formula(formula, rhs = 1) within <- eval(mf, parent.frame()) fixef <- fixef(within) id <- index(data, "id") time <- index(data, "time") pdim <- pdim(data) balanced <- pdim$balanced T <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N Ti <- pdim$Tint$Ti # get the typology of the variables X <- model.matrix(data, rhs = 1, model = "within", cstcovar.rm = "all") W <- model.matrix(data, rhs = 2, model = "within", cstcovar.rm = "all") exo.all <- colnames(W) all.all <- colnames(X) edo.all <- all.all[!(all.all %in% exo.all)] all.cst <- attr(X, "constant") exo.cst <- attr(W, "constant") if("(Intercept)" %in% all.cst) all.cst <- setdiff(all.cst, "(Intercept)") if("(Intercept)" %in% exo.cst) exo.cst <- setdiff(exo.cst, "(Intercept)") exo.var <- exo.all[!(exo.all %in% exo.cst)] edo.cst <- all.cst[!(all.cst %in% exo.cst)] edo.var <- edo.all[!(edo.all %in% edo.cst)] if (length(edo.cst) > length(exo.var)){ stop(" The number of endogenous time-invariant variables is greater than the number of exogenous time varying variables\n") } X <- model.matrix(data, model = "pooling", rhs = 1, lhs = 1) XV <- if(length(exo.var) > 0L) X[ , exo.var, drop = FALSE] else NULL NV <- if(length(edo.var) > 0L) X[ , edo.var, drop = FALSE] else NULL XC <- if(length(exo.cst) > 0L) X[ , exo.cst, drop = FALSE] else NULL NC <- if(length(edo.cst) > 0L) X[ , edo.cst, drop = FALSE] else NULL zo <- if(length(all.cst) != 0L) { twosls.pht(fixef[as.character(id)], cbind(XC, NC), cbind(XC, XV), intercept = TRUE) } else lm(fixef ~ 1) sigma2 <- list() sigma2$one <- 0 sigma2$idios <- deviance(within)/ (N - n) sigma2$one <- deviance(zo) / n if(balanced){ sigma2$id <- (sigma2$one - sigma2$idios)/ T theta <- 1 - sqrt(sigma2$idios / sigma2$one) } else{ # for unbalanced data, the harmonic mean of the Ti's is used ; why ?? barT <- n / sum(1 / Ti) sigma2$id <- (sigma2$one - sigma2$idios) / barT theta <- 1 - sqrt(sigma2$idios / (sigma2$idios + Ti * sigma2$id)) theta <- theta[as.character(id)] } estec <- structure(list(sigma2 = sigma2, theta = theta), class = "ercomp", balanced = balanced, effect = "individual") y <- pmodel.response(data, model = "random", effect = "individual", theta = theta) X <- model.matrix(data, model = "random", effect = "individual", theta = theta) within.inst <- model.matrix(data, model = "within") if (model == "ht"){ between.inst <- model.matrix(data, model = "Between", rhs = 2)[ , exo.var, drop = FALSE] W <- cbind(within.inst, XC, between.inst) } if (model == "am"){ Vx <- model.matrix(data, model = "pooling", rhs = 2)[ , exo.var, drop = FALSE] if (balanced){ # Plus rapide mais pas robuste au non cylindre Vxstar <- Reduce("cbind", lapply(seq_len(ncol(Vx)), function(x) matrix(Vx[ , x], ncol = T, byrow = TRUE)[rep(1:n, each = T), ])) } else{ Xs <- lapply(seq_len(ncol(Vx)), function(x) structure(Vx[, x], index = index(data), class = c("pseries", class(Vx[, x])))) Vx2 <- Reduce("cbind", lapply(Xs, as.matrix)) Vxstar <- Vx2[rep(1:n, times = Ti), ] Vxstar[is.na(Vxstar)] <- 0 } W <- cbind(within.inst, XC, Vxstar) } if (model == "bms"){ between.inst <- model.matrix(data, model = "Between", rhs = 2)[ , exo.var, drop = FALSE] Vx <- within.inst if (balanced){ # Plus rapide mais pas robuste au non cylindre Vxstar <- Reduce("cbind", lapply(seq_len(ncol(Vx)), function(x) matrix(Vx[ , x], ncol = T, byrow = TRUE)[rep(1:n, each = T), ])) } else{ Xs <- lapply(seq_len(ncol(Vx)), function(x) structure(Vx[, x], index = index(data), class = c("pseries", class(Vx[, x])))) Vx2 <- Reduce("cbind", lapply(Xs, as.matrix)) Vxstar <- Vx2[rep(1:n, times = Ti), ] Vxstar[is.na(Vxstar)] <- 0 } W <- cbind(within.inst, XC, between.inst, Vxstar) } result <- twosls.pht(y, X, W) K <- length(data) ve <- lev2var(data) varlist <- list(xv = unique(ve[exo.var]), nv = unique(ve[edo.var]), xc = unique(ve[exo.cst[exo.cst != "(Intercept)"]]), nc = unique(ve[edo.cst]) ) varlist <- lapply(varlist, function(x){ names(x) <- NULL; x}) result <- list(coefficients = coef(result), vcov = vcov(result), residuals = resid(result), df.residual = df.residual(result), formula = formula, model = data, varlist = varlist, ercomp = estec, call = cl, args = list(model = "ht", ht.method = model)) names(result$coefficients) <- colnames(result$vcov) <- rownames(result$vcov) <- colnames(X) class(result) <- c("pht", "plm", "panelmodel") result } twosls.pht <- function(y, X, W, intercept = FALSE, lm.type = "lm"){ ## this is a dedicated version of twosls() only for use in pht() as the ## pht() code requires the instrument matrix W always be amended with an ## intercept prior to regression, see marked line below. It was easier to ## have this separate dedicated twosls.pht() function than to adjust the ## rest of the pht() code. ## non-exported # Return value can be controlled by argument lm.type. Often, a full lm model # is needed for further processing but can select one of the fast but less # rich objects produced by lm.fit or .lm.fit (the latter does not contain, e.g., # fitted.values and is to be used very carefully (e.g., coefs not in input order)). # As NA/NaN/(+/-)Inf-freeness needs to be guaranteed when functions call # twosls(), so can use lm.fit to calc. Xhat. Xhat <- lm.fit(cbind(1, W), X)$fitted.values ##### this line is different relative to twosls() if(!is.matrix(Xhat)) { # ensure Xhat is a matrix Xhat <- matrix(Xhat, ncol = 1L) colnames(Xhat) <- colnames(X) } if(intercept) { model <- switch(lm.type, "lm" = lm(y ~ Xhat), "lm.fit" = lm.fit(cbind(1, Xhat), y), ".lm.fit" = .lm.fit(cbind(1, Xhat), y)) yhat <- as.vector(crossprod(t(cbind(1, X)), coef(model))) } else{ model <- switch(lm.type, "lm" = lm(y ~ Xhat - 1), "lm.fit" = lm.fit(Xhat, y), ".lm.fit" = .lm.fit(Xhat, y)) yhat <- as.vector(crossprod(t(X), coef(model))) } model$residuals <- y - yhat model } #' @rdname pht #' @export summary.pht <- function(object, ...){ object$fstatistic <- pwaldtest(object, test = "Chisq") # construct the table of coefficients std.err <- sqrt(diag(vcov(object))) b <- coefficients(object) z <- b/std.err p <- 2*pnorm(abs(z), lower.tail = FALSE) object$coefficients <- cbind("Estimate" = b, "Std. Error" = std.err, "z-value" = z, "Pr(>|z|)" = p) class(object) <- c("summary.pht", "pht", "plm", "panelmodel") object } #' @rdname pht #' @export print.summary.pht <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ...){ formula <- formula(x) has.instruments <- (length(formula)[2L] >= 2L) effect <- describe(x, "effect") model <- describe(x, "model") ht.method <- describe(x, "ht.method") cat(paste(effect.plm.list[effect]," ", sep = "")) cat(paste(model.plm.list[model]," Model", sep = ""), "\n") cat(paste("(", ht.method.list[ht.method], ")", sep = ""), "\n") cat("\nCall:\n") print(x$call) # cat("\nTime-Varying Variables: ") names.xv <- paste(x$varlist$xv, collapse=", ") names.nv <- paste(x$varlist$nv, collapse=", ") names.xc <- paste(x$varlist$xc, collapse=", ") names.nc <- paste(x$varlist$nc, collapse=", ") cat(paste("\nT.V. exo : ", names.xv,"\n", sep = "")) cat(paste("T.V. endo : ", names.nv,"\n", sep = "")) # cat("Time-Invariant Variables: ") cat(paste("T.I. exo : ", names.xc, "\n", sep= "")) cat(paste("T.I. endo : ", names.nc, "\n", sep= "")) cat("\n") pdim <- pdim(x) print(pdim) cat("\nEffects:\n") print(x$ercomp) cat("\nResiduals:\n") save.digits <- unlist(options(digits = digits)) on.exit(options(digits = save.digits)) print(sumres(x)) cat("\nCoefficients:\n") if (is.null(subset)) printCoefmat(coef(x), digits = digits) else printCoefmat(coef(x)[subset, , drop = FALSE], digits = digits) cat("\n") cat(paste("Total Sum of Squares: ", signif(tss(x), digits), "\n", sep = "")) cat(paste("Residual Sum of Squares: ", signif(deviance(x),digits), "\n", sep = "")) # cat(paste("Multiple R-Squared: ",signif(x$rsq,digits),"\n",sep="")) fstat <- x$fstatistic if (names(fstat$statistic) == "F"){ cat(paste("F-statistic: ",signif(fstat$statistic), " on ",fstat$parameter["df1"]," and ",fstat$parameter["df2"], " DF, p-value: ",format.pval(fstat$p.value,digits=digits),"\n",sep="")) } else{ cat(paste("Chisq: ", signif(fstat$statistic), " on ", fstat$parameter, " DF, p-value: ", format.pval(fstat$p.value,digits=digits), "\n", sep="")) } invisible(x) } ## dynformula create.list <- function(alist, K, has.int, has.resp, endog, exo, default){ # if alist is NULL, create a list of 0 if (is.null(alist)) alist <- rep(list(default), K+has.resp) # if alist is not a list, coerce it if (!is.list(alist)) alist <- list(alist) if (!is.null(names(alist))){ # case where (at least) some elements are named nam <- names(alist) # vector of names of elements oalist <- alist # copy of the alist provided notnullname <- nam[nam != ""] if (any (nam == "")){ # case where one element is unnamed, and therefore is the default unnamed <- which(nam == "") if (length(unnamed) > 1L) stop("Only one unnamed element is admitted") default <- alist[[unnamed]] } else{ # case where there are no unnamed elements, the default is 0 default <- default } alist <- rep(list(default), K+has.resp) names(alist) <- c(endog, exo) alist[notnullname] <- oalist[notnullname] } else{ # case where there are no names, in this case the relevant length is # whether 1 or K+1 if (length(alist) == 1L) alist <- rep(alist, c(K+has.resp)) else if (!length(alist) %in% c(K+has.resp)) stop("irrelevant length for alist") } names(alist) <- c(endog,exo) alist } write.lags <- function(name, lags, diff){ lags <- switch(length(lags), "1" = c(0, lags), "2" = sort(lags), stop("lags should be of length 1 or 2\n") ) lag.string <- ifelse(diff, "diff", "lag") chlag <- c() if (lags[2L] != 0L){ lags <- lags[1L]:lags[2L] for (i in lags){ if (i == 0L){ if (diff) chlag <- c(chlag, paste("diff(",name,")")) else chlag <- c(chlag,name) } else{ chlag <- c(chlag, paste(lag.string,"(",name,",",i,")",sep="")) } } ret <- paste(chlag, collapse="+") } else{ if (diff) chlag <- paste("diff(",name,")") else chlag <- name ret <- chlag } ret } #' @rdname plm-deprecated #' @export dynformula <- function(formula, lag.form = NULL, diff.form = NULL, log.form = NULL) { .Deprecated(msg = "use of 'dynformula()' is deprecated, use a multi-part formula instead", old = "dynformula") # for backward compatibility, accept a list argument and coerce it # to a vector if (!is.null(diff.form) && !is.list(diff.form)) diff.form <- as.list(diff.form) if (!is.null(log.form) && !is.list(log.form)) log.form <- as.list(log.form) # exo / endog are the names of the variable # has.int has.resp TRUE if the formula has an intercept and a response # K is the number of exogenous variables exo <- attr(terms(formula), "term.labels") has.int <- attr(terms(formula), "intercept") == 1 if(length(formula) == 3L){ endog <- deparse(formula[[2L]]) has.resp <- TRUE } else{ endog <- NULL has.resp <- FALSE } K <- length(exo) # use the create.list function to create the lists with the relevant # default values lag.form <- create.list(lag.form, K, has.int, has.resp, endog, exo, 0) diff.form <- unlist(create.list(diff.form, K, has.int, has.resp, endog, exo, FALSE)) log.form <- unlist(create.list(log.form, K, has.int, has.resp, endog, exo, FALSE)) structure(formula, class = c("dynformula", "formula"), lag = lag.form, diff = diff.form, log = log.form, var = c(endog,exo)) } #' @rdname plm-deprecated #' @export formula.dynformula <- function(x, ...){ log.form <- attr(x, "log") lag.form <- attr(x, "lag") diff.form <- attr(x, "diff") has.resp <- length(x) == 3L exo <- attr(x, "var") if (has.resp){ endog <- exo[1L] exo <- exo[-1L] } has.int <- attr(terms(x), "intercept") == 1 chexo <- c() if (has.resp){ if (log.form[1L]) endog <- paste("log(", endog, ")", sep = "") if (diff.form[1L]) endog <- paste("diff(", endog, ")", sep = "") if ( length(lag.form[[1L]]) == 1L && lag.form[[1L]] != 0L) lag.form[[1L]] <- c(1, lag.form[[1L]]) if (!(length(lag.form[[1L]]) == 1L && lag.form[[1L]] == 0L)) chexo <- c(chexo, write.lags(endog, lag.form[[1L]], diff.form[1L])) } for (i in exo){ lag.formi <- lag.form[[i]] diff.formi <- diff.form[i] if (log.form[[i]]) i <- paste("log(",i,")", sep = "") chexo <- c(chexo, write.lags(i, lag.formi, diff.formi)) } chexo <- paste(chexo, collapse = "+") formod <- if(has.resp) { as.formula(paste(endog, "~", chexo, sep = "")) } else { as.formula(paste("~", chexo, sep = "")) } if (!has.int) formod <- update(formod, . ~ . -1) formod } #' @rdname plm-deprecated #' @export print.dynformula <- function(x, ...){ print(formula(x), ...) } plm/R/tool_vcovG.R0000644000176200001440000014464114742020432013517 0ustar liggesusers #' Driscoll and Kraay (1998) Robust Covariance Matrix Estimator #' #' Nonparametric robust covariance matrix estimators *a la #' Driscoll and Kraay* for panel models with cross-sectional #' *and* serial correlation. #' #' `vcovSCC` is a function for estimating a robust covariance matrix #' of parameters for a panel model according to the #' \insertCite{DRIS:KRAA:98;textual}{plm} method, which is consistent #' with cross--sectional and serial correlation in a T-asymptotic #' setting and irrespective of the N dimension. The use with random #' effects models is undocumented. #' #' Weighting schemes specified by `type` are analogous to those in #' [sandwich::vcovHC()] in package \CRANpkg{sandwich} and are #' justified theoretically (although in the context of the standard #' linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and #' \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}). #' #' The main use of `vcovSCC` (and the other variance-covariance estimators #' provided in the package `vcovHC`, `vcovBK`, `vcovNW`, `vcovDC`) is to pass #' it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or #' together with testing functions from the `lmtest` and `car` packages. All of #' these typically allow passing the `vcov` or `vcov.` parameter either as a #' matrix or as a function, e.g., for Wald--type testing: argument `vcov.` to #' `coeftest()`, argument `vcov` to `waldtest()` and other methods in the #' \CRANpkg{lmtest} package; and argument `vcov.` to #' `linearHypothesis()` in the \CRANpkg{car} package (see the #' examples), \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. #' #' @aliases vcovSCC #' @param x an object of class `"plm"` or `"pcce"` #' @param type the weighting scheme used, one of `"HC0"`, `"sss"`, #' `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, see Details, #' @param cluster switch for vcovG; set at `"time"` here, #' @param maxlag either `NULL` or a positive integer specifying the #' maximum lag order before truncation #' @param inner the function to be applied to the residuals inside the #' sandwich: `"cluster"` for SCC, `"white"` for Newey-West, #' (`"diagavg"` for compatibility reasons) #' @param wj weighting function to be applied to lagged terms, #' @param \dots further arguments #' @return An object of class `"matrix"` containing the estimate of #' the covariance matrix of coefficients. #' @export #' @author Giovanni Millo, partially ported from Daniel Hoechle's #' (2007) Stata code #' @seealso [sandwich::vcovHC()] from the \CRANpkg{sandwich} #' package for weighting schemes (`type` argument). #' @references #' #' \insertRef{CRIB:04}{plm} #' #' \insertRef{DRIS:KRAA:98}{plm} #' #' \insertRef{HOEC:07}{plm} #' #' \insertRef{MACK:WHIT:85}{plm} #' #' \insertRef{ZEIL:04}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package="plm") #' zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") #' ## as function input to plm's summary method (with and without additional arguments): #' summary(zz, vcov = vcovSCC) #' summary(zz, vcov = function(x) vcovSCC(x, method="arellano", type="HC1")) #' ## standard coefficient significance test #' library(lmtest) #' coeftest(zz) #' ## SCC robust significance test, default #' coeftest(zz, vcov.=vcovSCC) #' ## idem with parameters, pass vcov as a function argument #' coeftest(zz, vcov.=function(x) vcovSCC(x, type="HC1", maxlag=4)) #' ## joint restriction test #' waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovSCC) #' \dontrun{ #' ## test of hyp.: 2*log(pc)=log(emp) #' library(car) #' linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovSCC) #' } vcovSCC <- function(x, ...){ UseMethod("vcovSCC") } #' Newey and West (1987) Robust Covariance Matrix Estimator #' #' Nonparametric robust covariance matrix estimators *a la Newey #' and West* for panel models with serial correlation. #' #' `vcovNW` is a function for estimating a robust covariance matrix of #' parameters for a panel model according to the #' \insertCite{NEWE:WEST:87;textual}{plm} method. The function works #' as a restriction of the \insertCite{DRIS:KRAA:98;textual}{plm} covariance (see #' [vcovSCC()]) to no cross--sectional correlation. #' #' Weighting schemes specified by `type` are analogous to those in #' [sandwich::vcovHC()] in package \CRANpkg{sandwich} and are #' justified theoretically (although in the context of the standard #' linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and #' \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. #' #' The main use of `vcovNW` (and the other variance-covariance estimators #' provided in the package `vcovHC`, `vcovBK`, `vcovDC`, `vcovSCC`) is to pass #' it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or #' together with testing functions from the `lmtest` and `car` packages. All of #' these typically allow passing the `vcov` or `vcov.` parameter either as a #' matrix or as a function, e.g., for Wald--type testing: argument `vcov.` to #' `coeftest()`, argument `vcov` to `waldtest()` and other methods in the #' \CRANpkg{lmtest} package; and argument `vcov.` to #' `linearHypothesis()` in the \CRANpkg{car} package (see the #' examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. #' #' @aliases vcovNW #' @param x an object of class `"plm"` or `"pcce"` #' @param type the weighting scheme used, one of `"HC0"`, `"sss"`, #' `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, see Details, #' @param maxlag either `NULL` or a positive integer specifying the #' maximum lag order before truncation #' @param wj weighting function to be applied to lagged terms, #' @param \dots further arguments #' @return An object of class `"matrix"` containing the estimate of #' the covariance matrix of coefficients. #' @export #' @author Giovanni Millo #' @seealso [sandwich::vcovHC()] from the \CRANpkg{sandwich} package #' for weighting schemes (`type` argument). #' @references #' #' \insertRef{CRIB:04}{plm} #' #' \insertRef{DRIS:KRAA:98}{plm} #' #' \insertRef{MACK:WHIT:85}{plm} #' #' \insertRef{NEWE:WEST:87}{plm} #' #' \insertRef{ZEIL:04}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package="plm") #' zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") #' ## as function input to plm's summary method (with and without additional arguments): #' summary(zz, vcov = vcovNW) #' summary(zz, vcov = function(x) vcovNW(x, method="arellano", type="HC1")) #' ## standard coefficient significance test #' library(lmtest) #' coeftest(zz) #' ## NW robust significance test, default #' coeftest(zz, vcov.=vcovNW) #' ## idem with parameters, pass vcov as a function argument #' coeftest(zz, vcov.=function(x) vcovNW(x, type="HC1", maxlag=4)) #' ## joint restriction test #' waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovNW) #' \dontrun{ #' ## test of hyp.: 2*log(pc)=log(emp) #' library(car) #' linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovNW) #' } vcovNW <- function(x, ...){ UseMethod("vcovNW") } #' Double-Clustering Robust Covariance Matrix Estimator #' #' High-level convenience wrapper for double-clustering robust #' covariance matrix estimators *a la* #' \insertCite{THOM:11;textual}{plm} and #' \insertCite{CAME:GELB:MILL:11;textual}{plm} for panel models. #' #' `vcovDC` is a function for estimating a robust covariance matrix of #' parameters for a panel model with errors clustering along both dimensions. #' The function is a convenience wrapper simply summing a group- and a #' time-clustered covariance matrix and subtracting a diagonal one *a la* #' White. #' #' Weighting schemes specified by `type` are analogous to those in #' [sandwich::vcovHC()] in package \CRANpkg{sandwich} and are #' justified theoretically (although in the context of the standard #' linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and #' \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. #' #' The main use of `vcovDC` (and the other variance-covariance estimators #' provided in the package `vcovHC`, `vcovBK`, `vcovNW`, `vcovSCC`) is to pass #' it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or #' together with testing functions from the `lmtest` and `car` packages. All of #' these typically allow passing the `vcov` or `vcov.` parameter either as a #' matrix or as a function, e.g., for Wald--type testing: argument `vcov.` to #' `coeftest()`, argument `vcov` to `waldtest()` and other methods in the #' \CRANpkg{lmtest} package; and argument `vcov.` to #' `linearHypothesis()` in the \CRANpkg{car} package (see the #' examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. #' #' @aliases vcovDC #' @param x an object of class `"plm"` or `"pcce"` #' @param type the weighting scheme used, one of `"HC0"`, `"sss"`, #' `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, see Details, #' @param \dots further arguments #' @return An object of class `"matrix"` containing the estimate of #' the covariance matrix of coefficients. #' @export #' @author Giovanni Millo #' @seealso [sandwich::vcovHC()] from the \CRANpkg{sandwich} #' package for weighting schemes (`type` argument). #' @references #' #' \insertRef{CAME:GELB:MILL:11}{plm} #' #' \insertRef{CRIB:04}{plm} #' #' \insertRef{MACK:WHIT:85}{plm} #' #' \insertRef{THOM:11}{plm} #' #' \insertRef{ZEIL:04}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package="plm") #' zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") #' ## as function input to plm's summary method (with and without additional arguments): #' summary(zz, vcov = vcovDC) #' summary(zz, vcov = function(x) vcovDC(x, type="HC1", maxlag=4)) #' ## standard coefficient significance test #' library(lmtest) #' coeftest(zz) #' ## DC robust significance test, default #' coeftest(zz, vcov.=vcovDC) #' ## idem with parameters, pass vcov as a function argument #' coeftest(zz, vcov.=function(x) vcovDC(x, type="HC1", maxlag=4)) #' ## joint restriction test #' waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovDC) #' \dontrun{ #' ## test of hyp.: 2*log(pc)=log(emp) #' library(car) #' linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovDC) #' } vcovDC <- function(x, ...){ UseMethod("vcovDC") } #' Generic Lego building block for Robust Covariance Matrix Estimators #' #' Generic Lego building block for robust covariance matrix estimators #' of the vcovXX kind for panel models. #' #' `vcovG` is the generic building block for use by higher--level #' wrappers [vcovHC()], [vcovSCC()], [vcovDC()], and [vcovNW()]. The #' main use of `vcovG` is to be used internally by the former, but it #' is made available in the user space for use in non--standard #' combinations. For more documentation, see see wrapper functions #' mentioned. #' #' @aliases vcovG #' @param x an object of class `"plm"` or `"pcce"` #' @param type the weighting scheme used, one of `"HC0"`, #' `"sss"`, `"HC1"`, `"HC2"`, `"HC3"`, #' `"HC4"`, #' @param cluster one of `"group"`, `"time"`, #' @param l lagging order, defaulting to zero #' @param inner the function to be applied to the residuals inside the #' sandwich: one of `"cluster"` or `"white"` or #' `"diagavg"`, #' @param \dots further arguments #' @return An object of class `"matrix"` containing the estimate #' of the covariance matrix of coefficients. #' @export #' @author Giovanni Millo #' @seealso [vcovHC()], [vcovSCC()], #' [vcovDC()], [vcovNW()], and #' [vcovBK()] albeit the latter does not make use of #' vcovG. #' @references #' #' \insertRef{mil17b}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package="plm") #' zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, #' model="pooling") #' ## reproduce Arellano's covariance matrix #' vcovG(zz, cluster="group", inner="cluster", l=0) #' ## define custom covariance function #' ## (in this example, same as vcovHC) #' myvcov <- function(x) vcovG(x, cluster="group", inner="cluster", l=0) #' summary(zz, vcov = myvcov) #' ## use in coefficient significance test #' library(lmtest) #' ## robust significance test #' coeftest(zz, vcov. = myvcov) #' vcovG <- function(x, ...) { UseMethod("vcovG") } #' @rdname vcovG #' @export vcovG.plm <- function(x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), l = 0, inner = c("cluster", "white", "diagavg"), ...) { ## general building block for vcov ## for panel models (pooling, random, within or fd type plm obj.) ## ## * (7/11/2016): compliant with IV models # stopping control for weighted regressions if (!is.null(x$weights)) stop("vcovXX functions not implemented for weighted panel regressions") type <- match.arg(type) model <- describe(x, "model") if (!model %in% c("random", "within", "pooling", "fd")) { stop("Model has to be either \"random\", \"within\", \"pooling\", or \"fd\" model") } ## extract demeaned data demX <- model.matrix(x, model = model, rhs = 1, cstcovar.rm = "all") ## drop any linear dependent columns (corresponding to aliased coefficients) ## from model matrix X ## na.rm = TRUE because currently, RE tw unbalanced models set aliased simply to NA if (!is.null(x$aliased) && any(x$aliased, na.rm = TRUE)) demX <- demX[ , !x$aliased, drop = FALSE] ## control: IV or not (two- or one-part formula) if(length(formula(x))[2L] > 1L) { demZ <- model.matrix(x, model = model, rhs = 2, cstcovar.rm = "all") ## substitute (transformed) X with projection of X on Z ## any linear dependence in Z (demZ) is appropriately taken care of by lm.fit() nms <- colnames(demX) demX <- lm.fit(demZ, demX)$fitted.values # catches case with only one regressor -> need to convert numeric # returned from lm.fit()$fitted.values to matrix: if(!is.matrix(demX)) demX <- matrix(demX, dimnames = list(NULL, nms[1L])) } pdim <- pdim(x) nT <- pdim$nT$N Ti <- pdim$Tint$Ti k <- dim(demX)[[2L]] n0 <- pdim$nT$n # no. of groups t0 <- pdim$nT$T # max time periods over groups ## extract residuals uhat <- x$residuals ## define residuals weighting function omega(res) ## (code taken from meatHC and modified) ## (the weighting is defined "in sqrt" relative to the literature) ## ## (see the theoretical comments in pvcovHC) ## this is computationally heavy, do only if needed diaghat <- switch(type, "HC0" = NULL, "sss" = NULL, "HC1" = NULL, "HC2" = try(dhat(demX), silent = TRUE), "HC3" = try(dhat(demX), silent = TRUE), "HC4" = try(dhat(demX), silent = TRUE)) df <- nT - k switch(type, "HC0" = { omega <- function(residuals, diaghat, df, g) residuals }, "sss" = { omega <- function(residuals, diaghat, df, g) residuals * sqrt(g/(g-1)*((nT-1)/(nT-k))) }, "HC1" = { omega <- function(residuals, diaghat, df, g) residuals * sqrt(length(residuals)/df) }, "HC2" = { omega <- function(residuals, diaghat, df, g) residuals / sqrt(1 - diaghat) }, "HC3" = { omega <- function(residuals, diaghat, df, g) residuals / (1 - diaghat) }, "HC4" = { omega <- function(residuals, diaghat, df, g) { residuals/sqrt(1 - diaghat)^ pmin(4, length(residuals) * diaghat/as.integer(round(sum(diaghat), digits = 0))) } }) ## Definition module for E(u,v) if(is.function(inner)) { E <- inner } else { ## outer for clustering/arellano, diag(diag(inner)) for white switch(match.arg(inner), "cluster" = { E <- function(u, v) outer(u, v) }, "white" = { E <- function(u, v) { # was simply: diag(diag(outer(u,v))) # but unfortunately we have to manage unbalanced panels # in the case l!=0 (the residual vectors are different) # by producing a "pseudo-diagonal" with all those obs. # common to both vectors if(isTRUE(all.equal(names(u), names(v)))) { ## ..then keep it simple! (halves time on EmplUK ex.) n <- length(u) euv <- diag(u*v, n) } else { ## calculate outer product efull <- outer(u, v) ## make matrix of zeros with same dims and names eres <- array(0, dim = dim(efull)) dimnames(eres) <- dimnames(efull) ## populate "pseudo-diagonal" with values from efull for(i in seq_along(names(u))) { for(j in seq_along(names(v))) { if(names(u)[i] == names(v)[j]) { eres[i, j] <- efull[i, j] } } } euv <- eres } return(euv) } }, "diagavg" = { E <- function(u,v) { ## this is the averaged version for 'white2' if(isTRUE(all.equal(names(u), names(v)))) { ## ..then keep it simple n <- length(u) euv <- diag(x = sum(u*v)/n, n) } else { ## do just as for 'white' and then average nonzeros: ## calculate outer product efull <- outer(u,v) ## make matrix of zeros with same dims and names eres <- array(0, dim = dim(efull)) dimnames(eres) <- dimnames(efull) ## populate "pseudo-diagonal" with values from efull for(i in seq_along(names(u))) { for(j in seq_along(names(v))) { if(names(u)[i] == names(v)[j]) { eres[i, j] <- efull[i, j] } } } euv <- eres ## substitute nonzeros with average thereof euv[euv != 0] <- mean(euv[euv != 0]) } return(euv) } }) } ## END: Definition module for E(u,v) ## try passing: function (a or b) or matrix (unconditional) to vcovG ## robustifying against either serial or xs intragroup dependence: ## if 'group' then keep current indexing, if 'time' then swap i<->t ## so that residuals get 'clustered' by time period instead of by ## group (i.e., the vcov estimator is robust vs. xsectional dependence) ## extract indices xindex <- unclass(attr(x$model, "index")) # unclass for speed groupind <- as.numeric(xindex[[1L]]) timeind <- as.numeric(xindex[[2L]]) ## adjust for 'fd' model (losing first time period) if(model == "fd") { ## debug printing: #print("before FD adj:") #print(paste0("nT = ", nT)) #print(paste0("Ti = ", paste0(Ti, collapse = ", "))) #print(paste0("t0 = ", t0)) #cat("\n") groupi <- as.numeric(groupind) ## make vector =1 on first obs in each group, 0 elsewhere selector <- groupi - c(0, groupi[-length(groupi)]) selector[1L] <- 1 # the first must always be 1 ## eliminate first obs in time for each group groupind <- groupind[!selector] timeind <- timeind[!selector] nT <- nT - n0 Ti <- Ti - 1 if(any(drop <- Ti == 0L)) { # drop groups in Ti that are now empty (group had 1 observation before first-differencing, hence 0 after) # and adjust n0 due to same reason Ti <- Ti[!drop] n0 <- n0 - sum(drop) } t0 <- t0 - 1 ## debug printing: #print("after FD adj:") #print(paste0("nT = ", nT)) #print(paste0("Ti = ", paste0(Ti, collapse = ", "))) #print(paste0("t0 = ", t0)) } ## set grouping indexes cluster <- match.arg(cluster) switch(cluster, "group" = { n <- n0 t <- t0 relevant.ind <- groupind lab <- timeind}, "time" = { n <- t0 t <- n0 relevant.ind <- timeind lab <- groupind}) relevant.ind.GRP <- collapse::GRP(relevant.ind) tind <- collapse::gsplit(seq_along(relevant.ind), relevant.ind.GRP) tlab <- collapse::gsplit(lab, relevant.ind.GRP) ## lab were the 'labels' (a numeric, actually) for the relevant index; ## in use again from the need to make pseudo-diagonals for ## calc. the lagged White terms on unbalanced panels ## transform residuals by weights (here because type='sss' needs to ## know who the grouping index 'g' is ## set number of clusters for Stata-like small sample correction ## (if clustering, i.e., inner="cluster", then G is the cardinality of ## the grouping index; if inner="white" it is simply the sample size) ## find some more elegant solution for this! ## (perhaps if white then sss -> HC1 but check...) G <- if(match.arg(inner) == "cluster") n else nT uhat <- omega(uhat, diaghat, df, G) ## compute basic block: X'_t u_t u'_(t-l) X_(t-l) foreach t, ## then calculate Sl_t and sum over t (here i in place of t) ## here the benchmark case is time-clustering, but beware ## that group-clustering is the default ## preallocate k x k x (T-l) array for 'pile' of kxk matrices ## holding the X' E(u,ul) X elements Sl <- array(dim = c(k, k, n-l)) ## (l=0 gives the special contemporaneous case where Xi=Xil, ui=uil ## for computing W, CX, CT) for(i in (1+l):n) { X <- demX[tind[[i]], , drop = FALSE] Xl <- demX[tind[[i-l]], , drop = FALSE] u <- uhat[tind[[i]]] ul <- uhat[tind[[(i-l)]]] names(u) <- tlab[[i]] names(ul) <- tlab[[(i-l)]] ## calculate V_yy Sl[ , , i-l] <- crossprod(X, E(u, ul)) %*% Xl } ## in order to sum on available observations two things can be done: ## a) apply sum(..., na.rm=TRUE) over the third dim ## b) apply mean(..., na.rm=TRUE) idem and multiply by n-l ## In case a) averaging is then done dividing each covariance point ## by (n-l), regardless of whether there are NAs in the "vertical" ## vector Sl[p,q, ] ## In case b) each mean is calculated correctly on the right number ## of observations, excluding missing data. 'salame' has to be ## multiplied by (n-l) ## But notice, here there should be none left! Each Sl_i is k x k. ## Hence use sum(). ## meat ## salame <- apply(Sl, 1:2, mean, na.rm=TRUE) * (n-l) salame <- rowSums(Sl, dims = 2L) # == apply(Sl, 1:2, sum) but faster ## bread by standard method pane <- solve(crossprod(demX)) ## sandwich mycov <- tcrossprod(crossprod(t(pane), salame), t(pane)) # == pane %*% salame %*% pane # save information about cluster variable in matrix (needed for e.g., # robust F test) attr(mycov, which = "cluster") <- match.arg(cluster) return(mycov) } #' Robust Covariance Matrix Estimators #' #' Robust covariance matrix estimators *a la White* for panel #' models. #' #' `vcovHC` is a function for estimating a robust covariance matrix of #' parameters for a fixed effects or random effects panel model #' according to the White method #' \insertCite{WHIT:80,WHIT:84b,AREL:87}{plm}. Observations may be #' clustered by `"group"` (`"time"`) to account for serial #' (cross-sectional) correlation. #' #' All types assume no intragroup (serial) correlation between errors #' and allow for heteroskedasticity across groups (time periods). As #' for the error covariance matrix of every single group of #' observations, `"white1"` allows for general heteroskedasticity but #' no serial (cross--sectional) correlation; `"white2"` is `"white1"` #' restricted to a common variance inside every group (time period) #' \insertCite{@see @GREE:03, Sec. 13.7.1-2, @GREE:12, Sec. 11.6.1-2 #' and @WOOL:02, Sec. 10.7.2}{plm}; `"arellano"` \insertCite{@see #' ibid. and the original ref. @AREL:87}{plm} allows a fully general #' structure w.r.t. heteroskedasticity and serial (cross--sectional) #' correlation. #' #' Weighting schemes specified by `type` are analogous to those in #' [sandwich::vcovHC()] in package \CRANpkg{sandwich} and are #' justified theoretically (although in the context of the standard #' linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and #' \insertCite{CRIB:04;textual}{plm} #' \insertCite{ZEIL:04}{plm}. `type = "sss"` employs the small sample #' correction as used by Stata. #' # % TODO: give formula for "sss"; # elaborate why different result for FE models (intercept) #' #' The main use of `vcovHC` (and the other variance-covariance estimators #' provided in the package `vcovBK`, `vcovNW`, `vcovDC`, `vcovSCC`) is to pass #' it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or #' together with testing functions from the `lmtest` and `car` packages. All of #' these typically allow passing the `vcov` or `vcov.` parameter either as a #' matrix or as a function, e.g., for Wald--type testing: argument `vcov.` to #' `coeftest()`, argument `vcov` to `waldtest()` and other methods in the #' \CRANpkg{lmtest} package; and argument `vcov.` to #' `linearHypothesis()` in the \CRANpkg{car} package (see the #' examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. #' #' A method for `pgmm` objects, `vcovHC.pgmm`, is also provided and gives the robust #' variance-covariances matrix, in case of a two-steps panel GMM model with the #' small-sample correction proposed by \insertCite{WIND:05;textual}{plm}. #' #' @name vcovHC.plm #' @aliases vcovHC #' @importFrom sandwich vcovHC #' @export vcovHC #' @param x an object of class `"plm"` which should be the result of a #' random effects or a within model or a model of class `"pgmm"` #' or an object of class `"pcce"`, #' @param method one of `"arellano"`, `"white1"`, `"white2"`, #' @param type the weighting scheme used, one of `"HC0"`, `"sss"`, #' `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, see Details, #' @param cluster one of `"group"`, `"time"`, #' @param \dots further arguments. #' @return An object of class `"matrix"` containing the estimate of #' the asymptotic covariance matrix of coefficients. #' @note The function `pvcovHC` is deprecated. Use `vcovHC` for the #' same functionality. #' @author Giovanni Millo & Yves Croissant #' @seealso [sandwich::vcovHC()] from the \CRANpkg{sandwich} #' package for weighting schemes (`type` argument). #' @references #' #' \insertRef{AREL:87}{plm} #' #' \insertRef{CRIB:04}{plm} #' #' \insertRef{GREE:03}{plm} #' #' \insertRef{GREE:12}{plm} #' #' \insertRef{MACK:WHIT:85}{plm} #' #' \insertRef{WIND:05}{plm} #' #' \insertRef{WHIT:84b}{plm} #' chap. 6 #' #' \insertRef{WHIT:80}{plm} #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{ZEIL:04}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "random") #' ## as function input to plm's summary method (with and without additional arguments): #' summary(zz, vcov = vcovHC) #' summary(zz, vcov = function(x) vcovHC(x, method="arellano", type="HC1")) #' #' ## standard coefficient significance test #' library(lmtest) #' coeftest(zz) #' ## robust significance test, cluster by group #' ## (robust vs. serial correlation) #' coeftest(zz, vcov.=vcovHC) #' ## idem with parameters, pass vcov as a function argument #' coeftest(zz, vcov.=function(x) vcovHC(x, method="arellano", type="HC1")) #' ## idem, cluster by time period #' ## (robust vs. cross-sectional correlation) #' coeftest(zz, vcov.=function(x) vcovHC(x, method="arellano", #' type="HC1", cluster="group")) #' ## idem with parameters, pass vcov as a matrix argument #' coeftest(zz, vcov.=vcovHC(zz, method="arellano", type="HC1")) #' ## joint restriction test #' waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovHC) #' \dontrun{ #' ## test of hyp.: 2*log(pc)=log(emp) #' library(car) #' linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovHC) #' } #' ## Robust inference for CCE models #' data("Produc", package = "plm") #' ccepmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="p") #' summary(ccepmod, vcov = vcovHC) #' #' ## Robust inference for GMM models #' data("EmplUK", package="plm") #' ar <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + log(capital) + lag(log(capital), 2) + log(output) #' + lag(log(output),2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "twosteps") #' rv <- vcovHC(ar) #' mtest(ar, order = 2, vcov = rv) NULL #' @rdname vcovHC.plm #' @export vcovHC.plm <- function(x, method=c("arellano", "white1", "white2"), type=c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster=c("group", "time"), ...) { ## user-level wrapper for White-Arellano covariances ## translate arguments inner <- switch(match.arg(method), "arellano" = "cluster", "white1" = "white", "white2" = "diagavg") return(vcovG(x, type=type, cluster=cluster, l=0, inner=inner, ...)) } #' @rdname vcovNW #' @export vcovNW.plm <- function(x, type=c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), maxlag=NULL, wj=function(j, maxlag) 1-j/(maxlag+1), ...) { ## user-level wrapper for panel Newey-West estimator ## set default lag order if(is.null(maxlag)) maxlag <- floor((max(pdim(x)$Tint$Ti))^(1/4)) return(vcovSCC(x, type=type, maxlag=maxlag, inner="white", wj=wj, ...)) } #' @rdname vcovDC #' @export vcovDC.plm <- function(x, type=c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), ...) { ## user-level wrapper for double-clustering (no persistence) Vcx <- vcovG(x, type=type, cluster="group", l=0, inner="cluster", ...) Vct <- vcovG(x, type=type, cluster="time", l=0, inner="cluster", ...) Vw <- vcovG(x, type=type, l=0, inner="white", ...) res <- Vcx + Vct - Vw # save information about cluster variable in matrix (needed for e.g., # robust F test) attr(res, which = "cluster") <- "group-time" return(res) } #' @rdname vcovSCC #' @export vcovSCC.plm <- function(x, type=c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster="time", maxlag=NULL, inner=c("cluster", "white", "diagavg"), wj=function(j, maxlag) 1-j/(maxlag+1), ...) { ## replicates vcovSCC ## set default lag order if(is.null(maxlag)) maxlag <- floor((max(pdim(x)$Tint$Ti))^(1/4)) ## def. Bartlett kernel ## wj <- function(j, maxlag) 1-j/(maxlag+1) ## has been passed as argument S0 <- vcovG(x, type=type, cluster=cluster, l=0, inner=inner) if(maxlag > 0) { for(i in seq_len(maxlag)) { Vctl <- vcovG(x, type=type, cluster=cluster, l=i, inner=inner) S0 <- S0 + wj(i, maxlag) * (Vctl + t(Vctl)) } } return(S0) } ############################################################## ## separate function for BK (PCSE) covariance #' Beck and Katz Robust Covariance Matrix Estimators #' #' Unconditional Robust covariance matrix estimators *a la Beck #' and Katz* for panel models (a.k.a. Panel Corrected Standard Errors #' (PCSE)). #' #' `vcovBK` is a function for estimating a robust covariance matrix of #' parameters for a panel model according to the #' \insertCite{BECK:KATZ:95;textual}{plm} method, a.k.a. Panel #' Corrected Standard Errors (PCSE), which uses an unconditional #' estimate of the error covariance across time periods (groups) #' inside the standard formula for coefficient #' covariance. Observations may be clustered either by `"group"` to #' account for timewise heteroskedasticity and serial correlation or #' by `"time"` to account for cross-sectional heteroskedasticity and #' correlation. It must be borne in mind that the Beck and Katz #' formula is based on N- (T-) asymptotics and will not be appropriate #' elsewhere. #' #' The `diagonal` logical argument can be used, if set to #' `TRUE`, to force to zero all non-diagonal elements in the #' estimated error covariances; this is appropriate if both serial and #' cross--sectional correlation are assumed out, and yields a #' timewise- (groupwise-) heteroskedasticity--consistent estimator. #' #' Weighting schemes specified by `type` are analogous to those in #' [sandwich::vcovHC()] in package \CRANpkg{sandwich} and are #' justified theoretically (although in the context of the standard #' linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and #' \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. #' # % TODO: once "sss" has been added: `type = "sss"` employs the small # % sample correction as used by Stata. give formula for "sss"; # % elaborate why different result for FE models (intercept) #' #' The main use of `vcovBK` (and the other variance-covariance estimators #' provided in the package `vcovHC`, `vcovNW`, `vcovDC`, `vcovSCC`) is to pass #' it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or #' together with testing functions from the `lmtest` and `car` packages. All of #' these typically allow passing the `vcov` or `vcov.` parameter either as a #' matrix or as a function, e.g., for Wald--type testing: argument `vcov.` to #' `coeftest()`, argument `vcov` to `waldtest()` and other methods in the #' \CRANpkg{lmtest} package; and argument `vcov.` to #' `linearHypothesis()` in the \CRANpkg{car} package (see the #' examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. #' #' @param x an object of class `"plm"`, #' @param type the weighting scheme used, one of `"HC0"`, `"HC1"`, #' `"HC2"`, `"HC3"`, `"HC4"`, see Details, #' @param cluster one of `"group"`, `"time"`, #' @param diagonal a logical value specifying whether to force #' non-diagonal elements to zero, #' @param \dots further arguments. #' @export #' @return An object of class `"matrix"` containing the estimate of #' the covariance matrix of coefficients. #' @author Giovanni Millo #' @seealso [sandwich::vcovHC()] from the \CRANpkg{sandwich} #' package for weighting schemes (`type` argument). #' @references #' #' #' \insertRef{BECK:KATZ:95}{plm} #' #' \insertRef{CRIB:04}{plm} #' #' \insertRef{GREE:03}{plm} #' #' \insertRef{MACK:WHIT:85}{plm} #' #' \insertRef{ZEIL:04}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package="plm") #' zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="random") #' summary(zz, vcov = vcovBK) #' summary(zz, vcov = function(x) vcovBK(x, type="HC1")) #' #' ## standard coefficient significance test #' library(lmtest) #' coeftest(zz) #' ## robust significance test, cluster by group #' ## (robust vs. serial correlation), default arguments #' coeftest(zz, vcov.=vcovBK) #' ## idem with parameters, pass vcov as a function argument #' coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1")) #' ## idem, cluster by time period #' ## (robust vs. cross-sectional correlation) #' coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1", cluster="time")) #' ## idem with parameters, pass vcov as a matrix argument #' coeftest(zz, vcov.=vcovBK(zz, type="HC1")) #' ## joint restriction test #' waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovBK) #' \dontrun{ #' ## test of hyp.: 2*log(pc)=log(emp) #' library(car) #' linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovBK) #' } vcovBK <- function(x, ...) { UseMethod("vcovBK") } # TODO: add type "sss" for vcovBK #' @rdname vcovBK #' @export vcovBK.plm <- function(x, type = c("HC0", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), diagonal = FALSE, ...) { ## Robust vcov a la Beck and Katz (1995; AKA 'pcse') ## for panel models (pooling, random, within or fd type plm obj.) ## ## This version: October 20th, 2009; allows choosing the clustering dimension ## so as to have serial- or x-sectional-correlation robustness; ## ## This function takes the demeaned data from the ## plm object, then estimates an *unconditional* error covariance by ## averaging the empirical covariance blocks by group (time period); ## this average block (say, OmegaM in EViews notation) is then put into ## White's formula instead of each Omega_i. ## ## The clustering defaults to "group" for consistency with vcovHC; ## nevertheless the most likely usage is cluster="time" for robustness vs. ## cross-sectional dependence, as in the original Beck and Katz paper (where ## it is applied to "pooling" models). ## ## This version: compliant with plm 1.2-0; lmtest. ## Code is identical to vcovHC until mark. ## ## Usage: ## myplm <- plm(,, ...) ## # default (cluster by group = robust vs. serial correlation): ## coeftest(myplm, vcov=vcovBK) ## # cluster by time period (robust vs. XS correlation): ## coeftest(myplm, vcov=function(x) vcovBK(x, cluster="time")) ## # idem, HC3 weighting: ## coeftest(myplm, vcov=function(x) vcovBK(x,cluster="time",type="HC3")) ## waldtest(myplm,update(myplm,),vcov=vcovBK) ## ## This weighted version implements a system of weights as ## in vcovHC/meatHC. Sure this makes sense for white1, but it ## is open to question for white2 and arellano. We'll see. ## ## Results OK vs. EViews, vcov=PCSE. Unbal. case not exactly the ## same (but then, who knows what EViews does!) # stopping control for weighted regressions if (!is.null(x$weights)) stop("vcovXX functions not implemented for weighted panel regressions") type <- match.arg(type) model <- describe(x, "model") if (!model %in% c("random", "within", "pooling", "fd")) { stop("Model has to be either \"random\", \"within\", \"pooling\", or \"fd\" model") } ## extract demeaned data demX <- model.matrix(x, model = model, rhs = 1, cstcovar.rm = "all") ## drop any linear dependent columns (corresponding to aliased coefficients) ## from model matrix X ## na.rm = TRUE because currently, RE tw unbalanced models set aliased simply to NA if (!is.null(x$aliased) && any(x$aliased, na.rm = TRUE)) demX <- demX[ , !x$aliased, drop = FALSE] ## control: IV or not (two- or one-part formula) if(length(formula(x))[2L] > 1L) { demZ <- model.matrix(x, model = model, rhs = 2, cstcovar.rm = "all") ## substitute (transformed) X with projection of X on Z ## any linear dependence in Z (demZ) is appropriately taken care of by lm.fit() nms <- colnames(demX) demX <- lm.fit(demZ, demX)$fitted.values # catches case with only one regressor -> need to convert numeric # returned from lm.fit()fitted.values to matrix: if(!is.matrix(demX)) demX <- matrix(demX, dimnames = list(NULL, nms[1L])) } pdim <- pdim(x) nT <- pdim$nT$N Ti <- pdim$Tint$Ti k <- dim(demX)[[2L]] n0 <- pdim$nT$n t0 <- pdim$nT$T ## extract residuals uhat <- x$residuals ## robustifying against either serial or xs intragroup dependence: ## if 'group' then keep current indexing, if 'time' then swap i<->t ## so that residuals get 'clustered' by time period instead of by ## group (i.e., the vcov estimator is robust vs. xsectional dependence) ## extract indices xindex <- unclass(attr(x$model, "index")) # unclass for speed groupind <- as.numeric(xindex[[1L]]) timeind <- as.numeric(xindex[[2L]]) ## adjust for 'fd' model (losing first time period) if(model == "fd") { ## debug printing: #print("before FD adj:") #print(paste0("nT = ", nT)) #print(paste0("Ti = ", paste0(Ti, collapse = ", "))) #print(paste0("t0 = ", t0)) #cat("\n") groupi <- as.numeric(groupind) ## make vector =1 on first obs in each group, 0 elsewhere selector <- groupi - c(0, groupi[-length(groupi)]) selector[1L] <- 1 # the first must always be 1 ## eliminate first obs in time for each group groupind <- groupind[!selector] timeind <- timeind[!selector] nT <- nT - n0 Ti <- Ti - 1 if(any(drop <- Ti == 0L)) { # drop groups in Ti that are now empty (group had 1 observation before first-differencing, hence 0 after) # and adjust n0 due to same reason Ti <- Ti[!drop] n0 <- n0 - sum(drop) } t0 <- t0 - 1 ## debug printing: #print("after FD adj:") #print(paste0("nT = ", nT)) #print(paste0("Ti = ", paste0(Ti, collapse = ", "))) #print(paste0("t0 = ", t0)) } ## set grouping indexes cluster <- match.arg(cluster) switch(cluster, "group" = { n <- n0 # this is needed only for 'pcse' t <- t0 # this is needed only for 'pcse' relevant.ind <- groupind lab <- timeind }, "time" = { n <- t0 # this is needed only for 'pcse' t <- n0 # this is needed only for 'pcse' relevant.ind <- timeind lab <- groupind }) relevant.ind.GRP <- collapse::GRP(relevant.ind) tind <- collapse::gsplit(seq_along(relevant.ind), relevant.ind.GRP) tlab <- collapse::gsplit(lab, relevant.ind.GRP) ## define residuals weighting function omega(res) ## (code taken from meatHC and modified) ## (the weighting is defined "in sqrt" relative to the literature) ## ## (see the theoretical comments in pvcovHC) ## this is computationally heavy, do only if needed diaghat <- switch(type, "HC0" = NULL, "HC1" = NULL, "HC2" = try(dhat(demX), silent = TRUE), "HC3" = try(dhat(demX), silent = TRUE), "HC4" = try(dhat(demX), silent = TRUE)) df <- nT - k switch(type, "HC0" = { omega <- function(residuals, diaghat, df) residuals }, "HC1" = { omega <- function(residuals, diaghat, df) residuals * sqrt(length(residuals)/df) }, "HC2" = { omega <- function(residuals, diaghat, df) residuals / sqrt(1 - diaghat) }, "HC3" = { omega <- function(residuals, diaghat, df) residuals / (1 - diaghat) }, "HC4" = { omega <- function(residuals, diaghat, df) residuals/sqrt(1 - diaghat)^pmin(4, length(residuals) * diaghat/as.integer(round(sum(diaghat), digits = 0))) }) ## transform residuals by weights uhat <- omega(uhat, diaghat, df) ## CODE TAKEN FROM pvcovHC() UNTIL HERE except for ind/time labeling ## ## the PCSE covariance estimator is based on the unconditional estimate ## of the intragroup (intraperiod) covariance of errors, OmegaT or OmegaM ## in the EViews help. ## we calculate this based on code from pggls(). ## the Omegai function is then: ## - constant if the panel is balanced ## - depending only on the intragroup (intraperiod) position index ## if the panel is unbalanced. ## (code for estimating OmegaM/OmegaT partly taken from pggls) ## est. omega submatrix ## "pre-allocate" an empty array tres <- array(dim = c(t, t, n)) ## array of n "empirical omega-blocks" ## with outer product of t(i) residuals ## for each group 1..n ## (use subscripting from condition 'label in labels' set', ## the rest stays NA if any) unlabs <- unique(lab) # fetch (all, unique) values of the relevant labels seq.len.t <- seq_len(t) for(i in seq_len(n)) { ut <- uhat[tind[[i]]] tpos <- seq.len.t[unlabs %in% tlab[[i]]] ## put non-diag elements to 0 if diagonal=TRUE tres[tpos, tpos, i] <- if(diagonal) diag(diag(tcrossprod(ut))) else tcrossprod(ut) } ## average over all omega blocks, removing NAs (apply preserving ## *two* dimensions, i.e., over the third) to get the unconditional ## covariance matrix of errors for a group (viz. time period): OmegaT <- rowMeans(tres, dims = 2L, na.rm = TRUE) # == apply(tres, 1:2, mean, na.rm = TRUE) but faster ## end of PCSE covariance calculation. salame <- array(dim = c(k, k, n)) for(i in seq_len(n)) { groupinds <- tind[[i]] grouplabs <- tlab[[i]] xi <- demX[groupinds, , drop = FALSE] ## for every group, take relevant positions tpos <- unlabs %in% grouplabs OmegaTi <- OmegaT[tpos, tpos, drop = FALSE] salame[ , , i] <- tcrossprod(crossprod(xi, OmegaTi), t(xi)) } ## meat salame <- rowSums(salame, dims = 2L) # == apply(salame, 1:2, sum) but faster ## bread pane <- solve(crossprod(demX)) ## sandwich mycov <- tcrossprod(crossprod(t(pane), salame), t(pane)) # == pane %*% salame %*% pane # save information about cluster variable in matrix (needed for e.g., # robust F test) attr(mycov, which = "cluster") <- match.arg(cluster) return(mycov) } ####################################################### ##################################### ## vcovXX methods for pcce objects ## ##################################### ## pcce is compliant with plm so vcovXX.pcce <- vcovXX.plm ## for any vcov that makes sense computed on the transformed ## data from model.matrix.pcce and pmodel.response.pcce ## TODO: vcovBK.pcce, vcovDC.pcce missing? Or not valid? ## Have a stopping break for now w/ informative error #' @export vcovBK.pcce <- function(x, ...) stop("plm::vcovBK not implemented for 'pcce' models") #' @export vcovDC.pcce <- function(x, ...) stop("plm::vcovDC not implemented for 'pcce' models") #' @rdname vcovG #' @export vcovG.pcce <- vcovG.plm #' @rdname vcovHC.plm #' @export vcovHC.pcce <- vcovHC.plm #' @rdname vcovNW #' @export vcovNW.pcce <- vcovNW.plm #' @rdname vcovSCC #' @export vcovSCC.pcce <- vcovSCC.plm ######################################################## ## vcovXX methods for pggls objects as stopping break ## ######################################################## vcovXX.pggls.error <- "not implemented as not sensible for 'pggls' models" #' @export vcovG.pggls <- function(x, ...) stop(paste0("plm::vcovG ", vcovXX.pggls.error)) #' @export vcovHC.pggls <- function(x, ...) stop(paste0("plm::vcovHC ", vcovXX.pggls.error)) #' @export vcovNW.pggls <- function(x, ...) stop(paste0("plm::vcovNW ", vcovXX.pggls.error)) #' @export vcovSCC.pggls <- function(x, ...) stop(paste0("plm::vcovSCC ", vcovXX.pggls.error)) #' @export vcovBK.pggls <- function(x, ...) stop(paste0("plm::vcovBK ", vcovXX.pggls.error)) #' @export vcovDC.pggls <- function(x, ...) stop(paste0("plm::vcovDC ", vcovXX.pggls.error)) #################################### ## vcovHC method for pgmm objects ## #################################### #' @rdname vcovHC.plm #' @importFrom MASS ginv #' @export vcovHC.pgmm <- function(x, ...) { model <- describe(x, "model") transformation <- describe(x, "transformation") A1 <- x$A1 A2 <- x$A2 B1 <- x$B1 # needs to be B1 (from one-step model) if(transformation == "ld") { ## yX <- lapply(x$model,function(x) rbind(diff(x),x)) ## residuals <-lapply(x$residuals,function(x) c(diff(x),x)) yX <- x$model residuals <- x$residuals } else { # transformation = "d" yX <- x$model residuals <- x$residuals } minevA2 <- min(abs(Re(eigen(A2)$values))) eps <- 1E-9 SA2 <- if(minevA2 < eps){ warning("a general inverse is used") ginv(A2) } else solve(A2) WX <- Reduce("+", mapply(function(w, y) crossprod(w, y[ , -1L, drop = FALSE]), x$W, yX, SIMPLIFY = FALSE)) # robust vcov for one-step GMM, see Roodman (2009), formula (15) vcovr1s <- B1 %*% (t(WX) %*% A1 %*% SA2 %*% A1 %*% WX) %*% B1 if(model == "twosteps") { coef1s <- x$coefficients[[1L]] res1s <- lapply(yX, function(x) x[ , 1L] - crossprod(t(x[ , -1L, drop = FALSE]), coef1s)) K <- ncol(yX[[1L]]) D <- c() We <- Reduce("+", mapply(function(x, y) crossprod(x, y), x$W, residuals, SIMPLIFY = FALSE)) for (k in 2:K) { exk <- mapply(function(x, y){ z <- crossprod(t(x[ , k, drop = FALSE]), t(y)) return(- z - t(z)) }, yX, res1s, SIMPLIFY = FALSE) wexkw <- Reduce("+", mapply(function(x, y) crossprod(x, crossprod(y, x)), x$W, exk, SIMPLIFY = FALSE)) B2 <- x$vcov # is "B2" for a two-step model Dk <- -B2 %*% t(WX) %*% A2 %*% wexkw %*% A2 %*% We D <- cbind(D, Dk) } # Windmeijer (2005) small-sample bias correction for twosteps GMM model, # see Windmeijer (2005), p. 33 formula (3.3); Roodman (2019) form. (18) vcovr2s <- B2 + crossprod(t(D), B2) + t(crossprod(t(D), B2)) + D %*% vcovr1s %*% t(D) } if(model == "twosteps") vcovr2s else vcovr1s } ## dhat: diaghat function for matrices dhat <- function(x) { rowSums(crossprod(t(x), solve(crossprod(x))) * x) # == (old) diag(crossprod(t(x), solve(crossprod(x), t(x))) }plm/R/test_uroot.R0000644000176200001440000016025414557255561013624 0ustar liggesuserspadf <- function(x, exo = c("none", "intercept", "trend"), p.approx = NULL, ...){ # p-value approximation for tau distribution of (augmented) Dickey-Fuller test # as used in some panel unit root tests in purtest(). # # argument 'x' must be a numeric (can be length == 1 or >= 1) # # p-values approximation is performed by the method of MacKinnon (1994) or # MacKinnon (1996), the latter yielding better approximated p-values but # requires package 'urca'. # Default is NULL: check for availability of 'urca' and, if available, perform # MacKinnon (1996); fall back to MacKinnon (1994) if 'urca' is not available. # User can demand a specific method by setting the argument 'p.approx' to either # "MacKinnon1994" or "MacKinnon1996". exo <- match.arg(exo) # check if ellipsis (dots) has p.approx (could be passed from purtest()'s dots) # and if so, use p.approx from ellipsis dots <- list(...) if (!is.null(dots$p.approx)) p.approx <- dots$p.approx if (!is.null(p.approx) && !p.approx %in% c("MacKinnon1994", "MacKinnon1996")) stop(paste0("unknown argument value: p.approx = \"", p.approx, "\"")) # Check if package 'urca' is available on local machine. We placed 'urca' # in 'Suggests' rather than 'Imports' so that it is not an absolutely # required dependency.) ## Procedure for pkg check for pkg in 'Suggests' as recommended in ## Wickham, R packages (http://r-pkgs.had.co.nz/description.html). urca <- if(!requireNamespace("urca", quietly = TRUE)) FALSE else TRUE # default: if no p.approx specified by input (NULL), # use MacKinnon (1996) if 'urca' is available, else MacKinnon (1994) p.approx <- if(is.null(p.approx)) { if(urca) "MacKinnon1996" else "MacKinnon1994" } else p.approx if (!is.null(p.approx) && p.approx == "MacKinnon1996" && !urca) { # catch case when user demands MacKinnon (1996) per argument but 'urca' is unavailable warning("method MacKinnon (1996) requested via argument 'p.approx' but requires non-installed package 'urca'; falling back to MacKinnon (1994)") p.approx <- "MacKinnon1994" } if(p.approx == "MacKinnon1996") { # translate exo argument to what urca::punitroot expects punitroot.exo <- switch (exo, "none" = "nc", "intercept" = "c", "trend" = "ct") res <- urca::punitroot(x, N = Inf, trend = punitroot.exo) # return asymptotic value } if(p.approx == "MacKinnon1994") { # values from MacKinnon (1994), table 3, 4 small <- matrix(c(0.6344, 1.2378, 3.2496, 2.1659, 1.4412, 3.8269, 3.2512, 1.6047, 4.9588), nrow = 3, byrow = TRUE) small <- t(t(small) / c(1, 1, 100)) large <- matrix(c(0.4797, 9.3557, -0.6999, 3.3066, 1.7339, 9.3202, -1.2745, -1.0368, 2.5261, 6.1654, -3.7956, -6.0285), nrow = 3, byrow = TRUE) large <- t(t(large) / c(1, 10, 10, 100)) limit <- c(-1.04, -1.61, -2.89) rownames(small) <- rownames(large) <- names(limit) <- c("none", "intercept", "trend") c.x.x2 <- rbind(1, x, x ^ 2) psmall <- colSums(small[exo, ] * c.x.x2) plarge <- colSums(large[exo, ] * rbind(c.x.x2, x ^ 3)) res <- as.numeric(pnorm(psmall * (x <= limit[exo]) + plarge * (x > limit[exo]))) } attr(res, "p.approx") <- p.approx return(res) } ## END padf ## IPS (2003), table 3 for Wtbar statistic # x1: means without time trend from table 3 in IPS (2003) adj.ips.wtbar.x1 <- c( -1.504,-1.514,-1.522,-1.520,-1.526,-1.523,-1.527,-1.519,-1.524,-1.532, -1.488,-1.503,-1.516,-1.514,-1.519,-1.520,-1.524,-1.519,-1.522,-1.530, -1.319,-1.387,-1.428,-1.443,-1.460,-1.476,-1.493,-1.490,-1.498,-1.514, -1.306,-1.366,-1.413,-1.433,-1.453,-1.471,-1.489,-1.486,-1.495,-1.512, -1.171,-1.260,-1.329,-1.363,-1.394,-1.428,-1.454,-1.458,-1.470,-1.495, NA, NA,-1.313,-1.351,-1.384,-1.421,-1.451,-1.454,-1.467,-1.494, NA, NA, NA,-1.289,-1.331,-1.380,-1.418,-1.427,-1.444,-1.476, NA, NA, NA,-1.273,-1.319,-1.371,-1.411,-1.423,-1.441,-1.474, NA, NA, NA,-1.212,-1.266,-1.329,-1.377,-1.393,-1.415,-1.456 ) # x2: variances without time trend from table 3 in IPS (2003) adj.ips.wtbar.x2 <- c( 1.069,0.923,0.851,0.809,0.789,0.770,0.760,0.749,0.736,0.735, 1.255,1.011,0.915,0.861,0.831,0.803,0.781,0.770,0.753,0.745, 1.421,1.078,0.969,0.905,0.865,0.830,0.798,0.789,0.766,0.754, 1.759,1.181,1.037,0.952,0.907,0.858,0.819,0.802,0.782,0.761, 2.080,1.279,1.097,1.005,0.946,0.886,0.842,0.819,0.801,0.771, NA, NA,1.171,1.055,0.980,0.912,0.863,0.839,0.814,0.781, NA, NA, NA,1.114,1.023,0.942,0.886,0.858,0.834,0.795, NA, NA, NA,1.164,1.062,0.968,0.910,0.875,0.851,0.806, NA, NA, NA,1.217,1.105,0.996,0.929,0.896,0.871,0.818 ) # x3: means with time trend from table 3 in IPS (2003) adj.ips.wtbar.x3 <- c( -2.166,-2.167,-2.168,-2.167,-2.172,-2.173,-2.176,-2.174,-2.174,-2.177, -2.173,-2.169,-2.172,-2.172,-2.173,-2.177,-2.180,-2.178,-2.176,-2.179, -1.914,-1.999,-2.047,-2.074,-2.095,-2.120,-2.137,-2.143,-2.146,-2.158, -1.922,-1.977,-2.032,-2.065,-2.091,-2.117,-2.137,-2.142,-2.146,-2.158, -1.750,-1.823,-1.911,-1.968,-2.009,-2.057,-2.091,-2.103,-2.114,-2.135, NA, NA,-1.888,-1.955,-1.998,-2.051,-2.087,-2.101,-2.111,-2.135, NA, NA, NA,-1.868,-1.923,-1.995,-2.042,-2.065,-2.081,-2.113, NA, NA, NA,-1.851,-1.912,-1.986,-2.036,-2.063,-2.079,-2.112, NA, NA, NA,-1.761,-1.835,-1.925,-1.987,-2.024,-2.046,-2.088 ) # x4: variances with time trend from table 3 in IPS (2003) adj.ips.wtbar.x4 <- c( 1.132,0.869,0.763,0.713,0.690,0.655,0.633,0.621,0.610,0.597, 1.453,0.975,0.845,0.769,0.734,0.687,0.654,0.641,0.627,0.605, 1.627,1.036,0.882,0.796,0.756,0.702,0.661,0.653,0.634,0.613, 2.482,1.214,0.983,0.861,0.808,0.735,0.688,0.674,0.650,0.625, 3.947,1.332,1.052,0.913,0.845,0.759,0.705,0.685,0.662,0.629, NA, NA,1.165,0.991,0.899,0.792,0.730,0.705,0.673,0.638, NA, NA, NA,1.055,0.945,0.828,0.753,0.725,0.689,0.650, NA, NA, NA,1.145,1.009,0.872,0.786,0.747,0.713,0.661, NA, NA, NA,1.208,1.063,0.902,0.808,0.766,0.728,0.670 ) adj.ips.wtbar <- c(adj.ips.wtbar.x1, adj.ips.wtbar.x2, adj.ips.wtbar.x3, adj.ips.wtbar.x4) adj.ips.wtbar <- array(adj.ips.wtbar, dim = c(10, 9, 2, 2), dimnames = list( c(10, 15, 20, 25, 30, 40, 50, 60, 70, 100), 0:8, c("mean", "var"), c("intercept", "trend")) ) adj.ips.wtbar <- aperm(adj.ips.wtbar, c(2, 1, 3, 4)) ############### ## IPS (2003), table 2 (obvious typos (missing minus signs) corrected) # intercept 1% critical values critval.ips.tbar.int1 <- c( -3.79, -2.66, -2.54, -2.50, -2.46, -2.44, -2.43, -2.42, -2.42, -2.40, -2.40, -3.45, -2.47, -2.38, -2.33, -2.32, -2.31, -2.29, -2.28, -2.28, -2.28, -2.27, -3.06, -2.32, -2.24, -2.21, -2.19, -2.18, -2.16, -2.16, -2.16, -2.16, -2.15, -2.79, -2.14, -2.10, -2.08, -2.07, -2.05, -2.04, -2.05, -2.04, -2.04, -2.04, -2.61, -2.06, -2.02, -2.00, -1.99, -1.99, -1.98, -1.98, -1.98, -1.97, -1.97, -2.51, -2.01, -1.97, -1.95, -1.94, -1.94, -1.93, -1.93, -1.93, -1.93, -1.92, -2.20, -1.85, -1.83, -1.82, -1.82, -1.82, -1.81, -1.81, -1.81, -1.81, -1.81, -2.00, -1.75, -1.74, -1.73, -1.73, -1.73, -1.73, -1.73, -1.73, -1.73, -1.73) # intercept 5% critical values critval.ips.tbar.int5 <- c( -2.76, -2.28, -2.21, -2.19, -2.18, -2.16, -2.16, -2.15, -2.16, -2.15,-2.15, -2.57, -2.17, -2.11, -2.09, -2.08, -2.07, -2.07, -2.06, -2.06, -2.06,-2.05, -2.42, -2.06, -2.02, -1.99, -1.99, -1.99, -1.98, -1.98, -1.97, -1.98,-1.97, -2.28, -1.95, -1.92, -1.91, -1.90, -1.90, -1.90, -1.89, -1.89, -1.89,-1.89, -2.18, -1.89, -1.87, -1.86, -1.85, -1.85, -1.85, -1.85, -1.84, -1.84,-1.84, -2.11, -1.85, -1.83, -1.82, -1.82, -1.82, -1.81, -1.81, -1.81, -1.81,-1.81, -1.95, -1.75, -1.74, -1.73, -1.73, -1.73, -1.73, -1.73, -1.73, -1.73,-1.73, -1.84, -1.68, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67,-1.67) # intercept 10% critical values critval.ips.tbar.int10 <- c( -2.38, -2.10, -2.06, -2.04, -2.04, -2.02, -2.02, -2.02, -2.02, -2.02, -2.01, -2.27, -2.01, -1.98, -1.96, -1.95, -1.95, -1.95, -1.95, -1.94, -1.95, -1.94, -2.17, -1.93, -1.90, -1.89, -1.88, -1.88, -1.88, -1.88, -1.88, -1.88, -1.88, -2.06, -1.85, -1.83, -1.82, -1.82, -1.82, -1.81, -1.81, -1.81, -1.81, -1.81, -2.00, -1.80, -1.79, -1.78, -1.78, -1.78, -1.78, -1.78, -1.78, -1.77, -1.77, -1.96, -1.77, -1.76, -1.75, -1.75, -1.75, -1.75, -1.75, -1.75, -1.75, -1.75, -1.85, -1.70, -1.69, -1.69, -1.69, -1.69, -1.68, -1.68, -1.68, -1.68, -1.69, -1.77, -1.64, -1.64, -1.64, -1.64, -1.64, -1.64, -1.64, -1.64, -1.64, -1.64) # trend 1% critical values critval.ips.tbar.trend1 <- c( -8.12, -3.42, -3.21, -3.13, -3.09, -3.05, -3.03, -3.02, -3.00, -3.00, -2.99, -7.36, -3.20, -3.03, -2.97, -2.94, -2.93, -2.90, -2.88, -2.88, -2.87, -2.86, -6.44, -3.03, -2.88, -2.84, -2.82, -2.79, -2.78, -2.77, -2.76, -2.75, -2.75, -5.72, -2.86, -2.74, -2.71, -2.69, -2.68, -2.67, -2.65, -2.66, -2.65, -2.64, -5.54, -2.75, -2.67, -2.63, -2.62, -2.61, -2.59, -2.60, -2.59, -2.58, -2.58, -5.16, -2.69, -2.61, -2.58, -2.58, -2.56, -2.55, -2.55, -2.55, -2.54, -2.54, -4.50, -2.53, -2.48, -2.46, -2.45, -2.45, -2.44, -2.44, -2.44, -2.44, -2.43, -4.00, -2.42, -2.39, -2.38, -2.37, -2.37, -2.36, -2.36, -2.36, -2.36, -2.36) # trend 5% critical values critval.ips.tbar.trend5 <- c( -4.66, -2.98, -2.87, -2.82, -2.80, -2.79, -2.77, -2.76, -2.75, -2.75, -2.75, -4.38, -2.85, -2.76, -2.72, -2.70, -2.69, -2.68, -2.67, -2.67, -2.66, -2.66, -4.11, -2.74, -2.66, -2.63, -2.62, -2.60, -2.60, -2.59, -2.59, -2.58, -2.58, -3.88, -2.63, -2.57, -2.55, -2.53, -2.53, -2.52, -2.52, -2.52, -2.51, -2.51, -3.73, -2.56, -2.52, -2.49, -2.48, -2.48, -2.48, -2.47, -2.47, -2.46, -2.46, -3.62, -2.52, -2.48, -2.46, -2.45, -2.45, -2.44, -2.44, -2.44, -2.44, -2.43, -3.35, -2.42, -2.38, -2.38, -2.37, -2.37, -2.36, -2.36, -2.36, -2.36, -2.36, -3.13, -2.34, -2.32, -2.32, -2.31, -2.31, -2.31, -2.31, -2.31, -2.31, -2.31) # trend 10% critical values critval.ips.tbar.trend10 <- c( -3.73, -2.77, -2.70, -2.67, -2.65, -2.64, -2.63, -2.62, -2.63, -2.62, -2.62, -3.60, -2.68, -2.62, -2.59, -2.58, -2.57, -2.57, -2.56, -2.56, -2.55, -2.55, -3.45, -2.59, -2.54, -2.52, -2.51, -2.51, -2.50, -2.50, -2.50, -2.49, -2.49, -3.33, -2.52, -2.47, -2.46, -2.45, -2.45, -2.44, -2.44, -2.44, -2.44, -2.44, -3.26, -2.47, -2.44, -2.42, -2.41, -2.41, -2.41, -2.40, -2.40, -2.40, -2.40, -3.18, -2.44, -2.40, -2.39, -2.39, -2.38, -2.38, -2.38, -2.38, -2.38, -2.38, -3.02, -2.36, -2.33, -2.33, -2.33, -2.32, -2.32, -2.32, -2.32, -2.32, -2.32, -2.90, -2.30, -2.29, -2.28, -2.28, -2.28, -2.28, -2.28, -2.28, -2.28, -2.28) critval.ips.tbar <- c(critval.ips.tbar.int1, critval.ips.tbar.int5, critval.ips.tbar.int10, critval.ips.tbar.trend1, critval.ips.tbar.trend5, critval.ips.tbar.trend10) critval.ips.tbar <- array(critval.ips.tbar, dim = c(11, 8, 3, 2), dimnames = list( c(5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 100), c(5, 7, 10, 15, 20, 25, 50, 100), c("1%", "5%", "10%"), c("intercept", "trend")) ) critval.ips.tbar <- aperm(critval.ips.tbar, c(2, 1, 3, 4)) ############### ## IPS (2003), table 1 # right hand pane of table 1 for Ztbar statistic adj.ips.zbar.time <- c(6, 7, 8, 9, 10, 15, 20, 25, 30, 40, 50, 100, 500, 1000, 2000) adj.ips.zbar.means <- c(-1.520, -1.514, -1.501, -1.501, -1.504, -1.514, -1.522, -1.520, -1.526, -1.523, -1.527, -1.532, -1.531, -1.529, -1.533) adj.ips.zbar.vars <- c(1.745, 1.414, 1.228, 1.132, 1.069, 0.923, 0.851, 0.809, 0.789, 0.770, 0.760, 0.735, 0.715, 0.707, 0.706) names(adj.ips.zbar.time) <- names(adj.ips.zbar.means) <- names(adj.ips.zbar.vars) <- adj.ips.zbar.time # left pane of table 1 [not used] adj.ips.zbarL.means <- c(-1.125, -1.178, -1.214, -1.244, -1.274, -1.349, -1.395, -1.423, -1.439, -1.463, -1.477, -1.504, -1.526, -1.526, -1.533) adj.ips.zbarL.vars <- c(0.497, 0.506, 0.506, 0.527, 0.521, 0.565, 0.592, 0.609, 0.623, 0.639, 0.656, 0.683, 0.704, 0.702, 0.706) ################ # table 2 in LLC (2002): mean and standard deviation adjustments Tn <- c( 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100, 250, 500) v <- c(c( 0.004, 0.003, 0.002, 0.002, 0.001, 0.001, 0.001, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000), c( 1.049, 1.035, 1.027, 1.021, 1.017, 1.014, 1.011, 1.008, 1.007, 1.006, 1.005, 1.001, 1.000), c(-0.554, -0.546, -0.541, -0.537, -0.533, -0.531, -0.527, -0.524, -0.521, -0.520, -0.518, -0.509, -0.500), c( 0.919, 0.889, 0.867, 0.850, 0.837, 0.826, 0.810, 0.798, 0.789, 0.782, 0.776, 0.742, 0.707), c(-0.703, -0.674, -0.653, -0.637, -0.624, -0.614, -0.598, -0.587, -0.578, -0.571, -0.566, -0.533, -0.500), c( 1.003, 0.949, 0.906, 0.871, 0.842, 0.818, 0.780, 0.751, 0.728, 0.710, 0.695, 0.603, 0.500) ) adj.levinlin <- array(v, dim = c(13, 2, 3), dimnames = list(Tn, c("mu", "sigma"), c("none", "intercept", "trend"))) purtest.names.exo <- c(none = "None", intercept = "Individual Intercepts", trend = "Individual Intercepts and Trend") purtest.names.test <- c(levinlin = "Levin-Lin-Chu Unit-Root Test", ips = "Im-Pesaran-Shin Unit-Root Test", madwu = "Maddala-Wu Unit-Root Test", Pm = "Choi's modified P Unit-Root Test", invnormal = "Choi's Inverse Normal Unit-Root Test", logit = "Choi's Logit Unit-Root Test", hadri = "Hadri Test") ## General functions to transform series: YClags <- function(object, k = 3){ n <- length(object) if(k > n) stop("lag value larger than length of series to lag") if(k > 0) { res <- sapply(seq_len(k), function(x) c(rep(NA, x), object[seq_len(n - x)])) if(is.null(dim(res))) res <- as.matrix(res) # guarantee to return a matrix } else res <- NULL res } YCdiff <- function(object) { # NB/TODO: no sanity check here: for input of length(object) == 1, a result of # length 3 is returned: c(NA, NA, 0) c(NA, object[seq_along(object)[-1L]] - object[seq_len(length(object)-1)]) } selectT <- function(x, Ts){ ## This function selects the length of the series as it is tabulated if (x %in% Ts) return(x) if (x < Ts[1L]){ warning("the time series is short") return(Ts[1L]) } if (x > Ts[length(Ts)]){ warning("the time series is long") return(Ts[length(Ts)]) } pos <- which((Ts - x) > 0)[1L] return(Ts[c(pos - 1, pos)]) } lagsel <- function(object, exo = c("intercept", "none", "trend"), method = c("Hall", "AIC", "SIC"), pmax = 10, dfcor = FALSE, fixedT = TRUE, ...){ # select the optimal number of lags using Hall method, AIC, or SIC method <- match.arg(method) y <- object Dy <- YCdiff(object) Ly <- c(NA, object[seq_len(length(object)-1)]) if (exo == "none") m <- NULL if (exo == "intercept") m <- rep(1, length(object)) if (exo == "trend") m <- cbind(1, seq_along(object)) LDy <- YClags(Dy, k = pmax) decreasei <- TRUE i <- 0L narow <- seq_len(pmax+1) if (method == "Hall"){ while(decreasei){ lags <- pmax - i if (!fixedT) narow <- seq_len(lags + 1L) X <- cbind(Ly, LDy[ , 0:lags], m)[-narow, , drop = FALSE] y <- Dy[-narow] sres <- my.lm.fit(X, y, dfcor = dfcor) tml <- sres$coef[lags + 1L]/sres$se[lags + 1L] if (abs(tml) < 1.96 && lags > 0L) i <- i + 1L else decreasei <- FALSE } } else{ l <- c() while(i <= pmax){ lags <- pmax - i if (!fixedT) narow <- seq_len(lags + 1L) X <- cbind(Ly, LDy[ , 0:lags], m)[-narow, , drop = FALSE] y <- Dy[-narow] sres <- my.lm.fit(X, y, dfcor = dfcor) AIC <- if (method == "AIC") { log(sres$rss / sres$n) + 2 * sres$K / sres$n # AIC } else { log(sres$rss / sres$n) + sres$K * log(sres$n) / sres$n # SIC } l <- c(l, AIC) i <- i + 1L } lags <- pmax + 1 - which.min(l) } lags } ## END lagsel adj.levinlin.value <- function(l, exo = c("intercept", "none", "trend")){ ## extract the adjustment values for Levin-Lin-Chu test theTs <- as.numeric(dimnames(adj.levinlin)[[1L]]) Ts <- selectT(l, theTs) res <- if (length(Ts) == 1L) { adj.levinlin[as.character(Ts), , exo] } else{ low <- adj.levinlin[as.character(Ts[1L]), , exo] high <- adj.levinlin[as.character(Ts[2L]), , exo] low + (l - Ts[1L]) / (Ts[2L] - Ts[1L]) * (high - low) } res } ## END adj.levinlin.value adj.ips.wtbar.value <- function(l = 30, lags = 2, exo = c("intercept", "trend")){ ## extract the adjustment values for Im-Pesaran-Shin test for Wtbar statistic (table 3 in IPS (2003)) if (!lags %in% 0:8) warning("lags should be an integer between 0 and 8") lags <- min(lags, 8) theTs <- as.numeric(dimnames(adj.ips.wtbar)[[2L]]) Ts <- selectT(l, theTs) res <- if (length(Ts) == 1L) { # take value as in table adj.ips.wtbar[as.character(lags), as.character(Ts), , exo] } else{ # interpolate value from table lags.char <- as.character(lags) low <- adj.ips.wtbar[lags.char, as.character(Ts[1L]), , exo] high <- adj.ips.wtbar[lags.char, as.character(Ts[2L]), , exo] low + (l - Ts[1L]) / (Ts[2L] - Ts[1L]) * (high - low) } res } ## END adj.ips.wtbar.value adj.ips.ztbar.value <- function(l = 30L, time, means, vars){ ## extract the adjustment values for Im-Pesaran-Shin test's Ztbar statistic ## from table 1, right hand pane in IPS (2003) fed by arguments means and vars Ts <- selectT(l, time) res <- if (length(Ts) == 1L){ # take value as in table c("mean" = means[as.character(Ts)], "var" = vars[as.character(Ts)]) } else{ # interpolate value from table low <- c("mean" = means[as.character(Ts[1L])], "var" = vars[as.character(Ts[1L])]) high <- c("mean" = means[as.character(Ts[2L])], "var" = vars[as.character(Ts[2L])]) low + (l - Ts[1L])/(Ts[2L] - Ts[1L]) * (high - low) } res } ## END adj.ips.ztbar.value critval.ips.tbar.value <- function(ind = 10L, time = 19L, critvals, exo = c("intercept", "trend")){ ## extract and interpolate 1%, 5%, 10% critical values for Im-Pesaran-Shin test's ## tbar statistic (table 2 in IPS (2003)) ## ## Interpolation is based on inverse distance weighting (IDW) of ## L1 distance (1d case) and L2 distance (euclidean distance) (2d case) ## (optical inspections shows this method is a good approximation) theInds <- as.numeric(dimnames(critvals)[[1L]]) theTs <- as.numeric(dimnames(critvals)[[2L]]) Inds <- selectT(ind, theInds) Ts <- selectT(time, theTs) exo <- match.arg(exo) ## check cases and early exit: if(length(Inds) == 1L && length(Ts) == 1L) { # exact hit for individual AND time: take value as in table return(critvals[as.character(Inds), as.character(Ts), , exo]) } else{ if(length(Inds) == 1L || length(Ts) == 1L) { # exact hit for individual (X)OR time: interpolate other dimension if(length(Inds) == 1L) { low <- critvals[as.character(Inds), as.character(Ts[1L]), , exo] high <- critvals[as.character(Inds), as.character(Ts[2L]), , exo] # L1 distances and inverse weighting for time dimension dist1 <- abs(time - Ts[1L]) dist2 <- abs(time - Ts[2L]) weight1 <- 1/dist1 weight2 <- 1/dist2 return ((weight1 * low + weight2 * high ) / (weight1 + weight2)) } if(length(Ts) == 1L) { # L1 distances and inverse weighting for individual dimension low <- critvals[as.character(Inds[1L]), as.character(Ts), , exo] high <- critvals[as.character(Inds[2L]), as.character(Ts), , exo] dist1 <- abs(ind - Inds[1L]) dist2 <- abs(ind - Inds[2L]) weight1 <- 1/dist1 weight2 <- 1/dist2 return ((weight1 * low + weight2 * high ) / (weight1 + weight2)) } } else { # only get to this part when both dimensions are not an exact hit: # 2d interpolate # extract the 4 critical values as basis of interpolation interpolate ("corners of box") crit4 <- critvals[as.character(Inds), as.character(Ts), , exo] dot <- c(ind, time) # point of interest m <- as.matrix(expand.grid(Inds, Ts)) colnames(m) <- c("ind", "time") dist <- lapply(1:4, function(x) m[x, ] - dot) dist <- vapply(dist, function(x) sqrt(as.numeric(crossprod(x))), 0.0, USE.NAMES = FALSE) weight <- 1/dist res <- ( crit4[as.character(Inds[1L]), as.character(Ts[1L]), ] * weight[1L] + crit4[as.character(Inds[2L]), as.character(Ts[1L]), ] * weight[2L] + crit4[as.character(Inds[1L]), as.character(Ts[2L]), ] * weight[3L] + crit4[as.character(Inds[2L]), as.character(Ts[2L]), ] * weight[4L]) / sum(weight) return(res) } } } ## END critval.ips.tbar.value tsadf <- function(object, exo = c("intercept", "none", "trend"), lags = NULL, dfcor = FALSE, comp.aux.reg = FALSE, ...){ # compute some ADF regressions for each time series y <- object L <- length(y) Dy <- YCdiff(object) Ly <- c(NA, object[seq_len(length(object)-1)]) if(exo == "none") m <- NULL if(exo == "intercept") m <- rep(1, length(object)) if(exo == "trend") m <- cbind(1, seq_along(object)) narow <- seq_len(lags+1) LDy <- YClags(Dy, k = lags) X <- cbind(Ly, LDy, m)[-narow, , drop = FALSE] if(dim(X)[[1]] == 0L) stop("after lagging, no non-NA case left in a series") y <- Dy[- narow] result <- my.lm.fit(X, y, dfcor = dfcor) sigma <- result$sigma rho <- result$coef[1L] sdrho <- result$se[1L] trho <- rho/sdrho p.trho <- padf(trho, exo = exo, ...) result <- list(rho = rho, sdrho = sdrho, trho = trho, sigma = sigma, T = L, lags = lags, p.trho = p.trho) if(comp.aux.reg){ # for Levin-Lin-Chu test only, compute the residuals of the auxiliary # regressions X <- cbind(LDy[ , 0:lags], m)[-narow, , drop = FALSE] if(lags == 0 && exo == "none"){ resid.diff <- Dy[-narow]/sigma resid.level <- Ly[-narow]/sigma } else{ y <- Dy[-narow] resid.diff <- lm.fit(X, y)$residuals/sigma y <- Ly[-narow] resid.level <- lm.fit(X, y)$residuals/sigma } result$resid <- data.frame(resid.diff = resid.diff, resid.level = resid.level) } result } longrunvar <- function(x, exo = c("intercept", "none", "trend"), q = NULL){ # compute the long run variance of the dependent variable # q: lag truncation parameter: default (q == NULL) as in LLC, p. 14 # it can be seen from LLC, table 2, that round() was used to get an # integer from that formula (not, e.g., trunc) T <- length(x) if (is.null(q)) q <- round(3.21 * T^(1/3)) dx <- x[2:T] - x[seq_len(T-1)] if(exo == "intercept") dx <- dx - mean(dx) if(exo == "trend") dx <- lm.fit(cbind(1, seq_along(dx)), dx)$residuals dx <- c(NA, dx) res <- 1/(T-1)*sum(dx[-1]^2)+ 2*sum( sapply(seq_len(q), function(L){ sum(dx[2:(T-L)] * dx[(L+2):T]) / (T-1) * (1 - L / (q+1)) } ) ) return(res) } hadritest <- function(object, exo, Hcons, dfcor, method, cl, args, data.name, ...) { ## used by purtest(<.>, test = "hadri"); non-exported function ## Hadri's test is applicable to balanced data only ## input 'object' is a list with observations per individual if(!is.list(object)) stop("argument 'object' in hadritest is supposed to be a list") if(exo == "none") stop("exo = \"none\" (\"~0\" in the formula interface) is not a valid option for Hadri's test") # determine L (= time periods), unique for balanced panel and number of individuals (n) if(length(L <- unique(lengths(object, use.names = FALSE))) > 1L) stop("Hadri test is not applicable to unbalanced panels") n <- length(object) if(exo == "intercept"){ # can use lm.fit here as NAs are dropped in beginning of 'purtest' resid <- lapply(object, function(x) lm.fit(matrix(1, nrow = length(x)), x)$residuals) adj <- c(1/6, 1/45) # xi, zeta^2 in eq. (17) in Hadri (2000) } if (exo == "trend"){ resid <- lapply(object, function(x) { lx <- length(x) dmat <- matrix(c(rep(1, lx), seq_len(lx)), nrow = lx) # can use lm.fit here as NAs are dropped in beginning of 'purtest' lm.fit(dmat, x)$residuals }) adj <- c(1/15, 11/6300) # xi, zeta^2 in eq. (25) in Hadri (2000) } cumres2 <- lapply(resid, function(x) cumsum(x)^2) if (!dfcor) { sigma2 <- mean(unlist(resid, use.names = FALSE)^2) sigma2i <- vapply(resid, function(x) mean(x^2), FUN.VALUE = 0.0, USE.NAMES = FALSE) } else { # df correction as suggested in Hadri (2000), p. 157 dfcorval <- switch(exo, "intercept" = (L-1), "trend" = (L-2)) # -> apply to full length residuals over all individuals -> n*(L-1) or n*(L-2) sigma2 <- as.numeric(crossprod(unlist(resid, use.names = FALSE))) / (n * dfcorval) # -> apply to individual residuals' length, so just L -> L-1 or L-2 sigma2i <- vapply(resid, function(x) crossprod(x)/dfcorval, FUN.VALUE = 0.0, USE.NAMES = FALSE) } Si2 <- vapply(cumres2, function(x) sum(x), FUN.VALUE = 0.0, USE.NAMES = FALSE) numerator <- 1/n * sum(1/(L^2) * Si2) LMi <- 1/(L^2) * Si2 / sigma2i # individual LM statistics LM <- if(!Hcons) { numerator / sigma2 # non-het consistent case } else { method <- paste0(method, " (Heterosked. Consistent)") mean(LMi) # het. consistent case } stat <- c(z = sqrt(n) * (LM - adj[1L]) / sqrt(adj[2L])) # eq. (14), (22) in Hadri (2000) pvalue <- pnorm(stat, lower.tail = FALSE) # is one-sided! htest <- structure(list(statistic = stat, parameter = NULL, alternative = "at least one series has a unit root", # correct alternative (at least one unit root) data.name = data.name, method = method, p.value = pvalue), class = "htest") idres <- mapply(list, LMi, sigma2i, SIMPLIFY = FALSE) idres <- lapply(idres, setNames, c("LM", "sigma2")) result <- list(statistic = htest, call = cl, args = args, idres = idres) class(result) <- "purtest" return(result) } # END hadritest #' Unit root tests for panel data #' #' `purtest` implements several testing procedures that have been proposed #' to test unit root hypotheses with panel data. #' #' #' All these tests except `"hadri"` are based on the estimation of #' augmented Dickey-Fuller (ADF) regressions for each time series. A #' statistic is then computed using the t-statistics associated with #' the lagged variable. The Hadri residual-based LM statistic is the #' cross-sectional average of the individual KPSS statistics #' \insertCite{KWIA:PHIL:SCHM:SHIN:92;textual}{plm}, standardized by their #' asymptotic mean and standard deviation. #' #' Several Fisher-type tests that combine p-values from tests based on #' ADF regressions per individual are available: #' #' - `"madwu"` is the inverse chi-squared test #' \insertCite{MADDA:WU:99;textual}{plm}, also called P test by #' \insertCite{CHOI:01;textual}{plm}. #' #' - `"Pm"` is the modified P test proposed by #' \insertCite{CHOI:01;textual}{plm} for large N, #' #' - `"invnormal"` is the inverse normal test by \insertCite{CHOI:01;textual}{plm}, and #' #' - `"logit"` is the logit test by \insertCite{CHOI:01;textual}{plm}. #' #' The individual p-values for the Fisher-type tests are approximated #' as described in \insertCite{MACK:96;textual}{plm} if the package \CRANpkg{urca} #' (\insertCite{PFAFF:08;textual}{plm}) is available, otherwise as described in #' \insertCite{MACK:94;textual}{plm}. #' #' For the test statistic tbar of the test of Im/Pesaran/Shin (2003) #' (`ips.stat = "tbar"`), no p-value is given but 1%, 5%, and 10% critical #' values are interpolated from paper's tabulated values via inverse distance #' weighting (printed and contained in the returned value's element #' `statistic$ips.tbar.crit`). #' #' Hadri's test, the test of Levin/Lin/Chu, and the tbar statistic of #' Im/Pesaran/Shin are not applicable to unbalanced panels; the tbar statistic #' is not applicable when `lags > 0` is given. #' #' The exogenous instruments of the tests (where applicable) can be specified #' in several ways, depending on how the data is handed over to the function: #' #' - For the `formula`/`data` interface (if `data` is a `data.frame`, #' an additional `index` argument should be specified); the formula #' should be of the form: `y ~ 0`, `y ~ 1`, or `y ~ trend` for a test #' with no exogenous variables, with an intercept, or with individual #' intercepts and time trend, respectively. The `exo` argument is #' ignored in this case. #' #' - For the `data.frame`, `matrix`, and `pseries` interfaces: in #' these cases, the exogenous variables are specified using the `exo` #' argument. #' #' With the associated `summary` and `print` methods, additional #' information can be extracted/displayed (see also Value). #' #' @aliases purtest #' @param object,x Either a `"data.frame"` or a matrix containing the #' time series (individuals as columns), a `"pseries"` object, a formula; #' a `"purtest"` object for the print and summary methods, #' @param data a `"data.frame"` or a `"pdata.frame"` object (required for #' formula interface, see Details and Examples), #' @param index the indexes, #' @param test the test to be computed: one of `"levinlin"` for #' \insertCite{LEVIN:LIN:CHU:02;textual}{plm}, `"ips"` for #' \insertCite{IM:PESAR:SHIN:03;textual}{plm}, `"madwu"` for #' \insertCite{MADDA:WU:99;textual}{plm}, `"Pm"` , `"invnormal"`, #' or `"logit"` for various tests as in #' \insertCite{CHOI:01;textual}{plm}, or `"hadri"` for #' \insertCite{HADR:00;textual}{plm}, see Details, #' @param exo the exogenous variables to introduce in the augmented #' Dickey--Fuller (ADF) regressions, one of: no exogenous #' variables (`"none"`), individual intercepts (`"intercept"`), or #' individual intercepts and trends (`"trend"`), but see Details, #' @param lags the number of lags to be used for the augmented #' Dickey-Fuller regressions: either a single value integer (the number of #' lags for all time series), a vector of integers (one for each #' time series), or a character string for an automatic #' computation of the number of lags, based on the AIC #' (`"AIC"`), the SIC (`"SIC"`), or on the method by #' \insertCite{HALL:94;textual}{plm} (`"Hall"`); argument is irrelevant #' for `test = "hadri"`, #' @param pmax maximum number of lags (irrelevant for `test = "hadri"`), #' @param Hcons logical, only relevant for `test = "hadri"`, #' indicating whether the heteroskedasticity-consistent test of #' \insertCite{HADR:00;textual}{plm} should be computed, #' @param q the bandwidth for the estimation of the long-run variance #' (only relevant for `test = "levinlin"`, the default (`q = NULL`) #' gives the value as suggested by the authors as round(3.21 * T^(1/3))), #' @param dfcor logical, indicating whether the standard deviation of #' the regressions is to be computed using a degrees-of-freedom #' correction, #' @param fixedT logical, indicating whether the individual ADF #' regressions are to be computed using the same number of #' observations (irrelevant for `test = "hadri"`), #' @param ips.stat `NULL` or character of length 1 to request a specific #' IPS statistic, one of `"Wtbar"` (also default if `ips.stat = NULL`), #' `"Ztbar"`, `"tbar"`, #' @param \dots further arguments (can set argument `p.approx` to be passed on #' to non-exported function `padf` to either `"MacKinnon1994"` or `"MacKinnon1996"` #' to force a specific method for p-value approximation, the latter only being #' possible if package 'urca' is installed). #' @return For purtest: An object of class `"purtest"`: a list with the elements #' named: #' - `"statistic"` (a `"htest"` object), #' - `"call"`, #' - `"args"`, #' - `"idres"` (containing results from the individual regressions), #' - `"adjval"` (containing the simulated means and variances needed to compute #' the statistic, for `test = "levinlin"` and `"ips"`, otherwise `NULL`), #' - `"sigma2"` (short-run and long-run variance for `test = "levinlin"`, #' otherwise `NULL`). #' @export #' @importFrom stats setNames #' @author Yves Croissant and for "Pm", "invnormal", and "logit" Kevin Tappe #' @seealso [cipstest()], [phansitest()] #' @references #' \insertAllCited{} #' #' @keywords htest # # TODO: add more examples / interfaces #' @examples #' #' data("Grunfeld", package = "plm") #' y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) # individuals in columns #' #' purtest(y, pmax = 4, exo = "intercept", test = "madwu") #' #' ## same via pseries interface #' pGrunfeld <- pdata.frame(Grunfeld, index = c("firm", "year")) #' purtest(pGrunfeld$inv, pmax = 4, exo = "intercept", test = "madwu") #' #' ## same via formula interface #' purtest(inv ~ 1, data = Grunfeld, index = c("firm", "year"), pmax = 4, test = "madwu") #' purtest <- function(object, data = NULL, index = NULL, test = c("levinlin", "ips", "madwu", "Pm" , "invnormal", "logit", "hadri"), exo = c("none", "intercept", "trend"), lags = c("SIC", "AIC", "Hall"), pmax = 10, Hcons = TRUE, q = NULL, dfcor = FALSE, fixedT = TRUE, ips.stat = NULL, ...) { data.name <- paste(deparse(substitute(object))) id <- NULL if (inherits(object, "formula")){ # exo is derived from specified formula: terms <- terms(object) lab <- labels(terms) if(length(lab) == 0L){ exo <- if(attr(terms, "intercept")) "intercept" else "none" } else{ if(length(lab) > 1L || lab != "trend") stop("incorrect formula") exo <- "trend" } object <- paste(deparse(object[[2L]])) if(exists(object) && is.vector(get(object))){ # is.vector because, eg, inv exists as a function object <- get(object) } else{ if(is.null(data)) stop("unknown response") else{ if(!inherits(data, "data.frame")) stop("'data' does not specify a data.frame/pdata.frame") if(object %in% names(data)){ object <- data[[object]] if(!inherits(data, "pdata.frame")){ if(is.null(index)) stop("the index attribute is required") else data <- pdata.frame(data, index) } id <- unclass(attr(data, "index"))[[1L]] } else{ stop(paste0("unknown response (\"", object, "\" not in data)")) } } } } # END object is a formula else{ exo <- match.arg(exo) if(is.null(dim(object))){ if(inherits(object, "pseries")){ id <- unclass(attr(object, "index"))[[1L]] } else stop("the individual dimension is undefined") # cannot derive individual dimension from a vector if not pseries } if(is.matrix(object) || is.data.frame(object)) { if(!is.null(data)) stop("object is data.frame or matrix but argument 'data' is not NULL") if(is.matrix(object)) object <- as.data.frame(object) } } # by now, object is either a pseries or a data.frame object <- na.omit(object) if(!is.null(attr(object, "na.action"))) warning("NA value(s) encountered and dropped, results may not be reliable") if(!inherits(object, "data.frame")){ if(is.null(id)) stop("the individual dimension is undefined") # adjust 'id' to correspond data in 'object' after NA dropping: if(!is.null(attr(object, "na.action"))) id <- id[-attr(object, "na.action")] object <- collapse::gsplit(object, id, use.g.names = TRUE) # was: object <- split(object, id) } else { if(!ncol(object) > 1L) warning("data.frame or matrix specified in argument object does not contain more than one individual (individuals are supposed to be in columns)") object <- as.list(object) } # by now, object is a list cl <- match.call() test <- match.arg(test) ips.stat <- if (is.null(ips.stat)) "Wtbar" else ips.stat # set default for IPS test if (is.character(lags)) lags <- match.arg(lags) # if character, match from list of possible values args <- list(test = test, exo = exo, pmax = pmax, lags = lags, dfcor = dfcor, fixedT = fixedT, ips.stat = ips.stat) n <- length(object) # number of individuals, assumes object is a list sigma2 <- NULL pvalues.trho <- NULL ips.tbar.crit <- NULL alternative <- "stationarity" method <- paste0(purtest.names.test[test], " (ex. var.: ", purtest.names.exo[exo],")") # If Hadri test, call function and exit early if(test == "hadri") return(hadritest(object, exo, Hcons, dfcor, method, cl, args, data.name, ...)) # compute the lags for each time series if necessary if(is.numeric(lags)){ if(length(lags) == 1L) lags <- rep(lags, n) else{ if(length(lags) != n) stop("lags should be of length 1 or n") else lags <- as.list(lags) } } else{ # one of the lag selection procedures SIC, AIC, or Hall lag.method <- match.arg(lags) lags <- sapply(object, function(x) lagsel(x, exo = exo, method = lag.method, pmax = pmax, dfcor = dfcor, fixedT = fixedT)) } # compute the augmented Dickey-Fuller regressions for each time series comp.aux.reg <- (test == "levinlin") idres <- mapply(function(x, y) tsadf(x, exo = exo, lags = y, dfcor = dfcor, comp.aux.reg = comp.aux.reg, ...), object, as.list(lags), SIMPLIFY = FALSE) if(test == "levinlin"){ if(length(T.levinlin <- unique(lengths(object, use.names = FALSE))) > 1L) stop("test = \"levinlin\" is not applicable to unbalanced panels") # get the adjustment parameters for the mean and the variance adjval <- adj.levinlin.value(T.levinlin, exo = exo) mymu <- adjval[1L] mysig <- adjval[2L] # calculate the ratio of LT/ST variance sigmaST <- sapply(idres, function(x) x[["sigma"]]) sigmaLT <- sqrt(sapply(object, longrunvar, exo = exo, q = q)) si <- sigmaLT/sigmaST # LLC (2002), formula 6 sbar <- mean(si) # stack the residuals of each time series and perform the pooled # regression res.level <- unlist(lapply(idres, function(x) x$resid[["resid.level"]]), use.names = FALSE) res.diff <- unlist(lapply(idres, function(x) x$resid[["resid.diff"]]), use.names = FALSE) z <- my.lm.fit(as.matrix(res.level), res.diff, dfcor = dfcor) # compute the Levin-Lin-Chu statistic tildeT <- T.levinlin - mean(lags) - 1 sigmaeps2 <- z$rss / (n * tildeT) rho <- z$coef sdrho <- z$se trho <- rho/sdrho stat <- (trho - n * tildeT * sbar / sigmaeps2 * sdrho * mymu)/mysig # LLC (2002), formula 12 names(stat) <- "z" # avoids a concatenated name like z.x1 pvalue <- pnorm(stat, lower.tail = TRUE) # need lower.tail = TRUE (like ADF one-sided to the left) parameter <- NULL sigma2 <- cbind(sigmaST^2, sigmaLT^2) colnames(sigma2) <- c("sigma2ST", "sigma2LT") pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0) } if(test == "ips"){ if(exo == "none") stop("exo = \"none\" (\"~0\" in the formula interface) is not a valid option for the Im-Pesaran-Shin test") if(!is.null(ips.stat) && !any(ips.stat %in% c("Wtbar", "Ztbar", "tbar"))) stop("argument 'ips.stat' must be one of \"Wtbar\", \"Ztbar\", \"tbar\"") lags <- vapply(idres, function(x) x[["lags"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) L.ips <- vapply(idres, function(x) x[["T"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) - lags - 1 trho <- vapply(idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) tbar <- mean(trho) parameter <- NULL adjval <- NULL if(is.null(ips.stat) || ips.stat == "Wtbar") { # calc Wtbar - default adjval <- mapply(function(x, y) adj.ips.wtbar.value(x, y, exo = exo), as.list(L.ips), as.list(lags)) Etbar <- mean(adjval[1L, ]) Vtbar <- mean(adjval[2L, ]) stat <- c("Wtbar" = sqrt(n) * (tbar - Etbar) / sqrt(Vtbar)) # (3.13) = (4.10) in IPS (2003) [same generic formula for Ztbar and Wtbar] pvalue <- pnorm(stat, lower.tail = TRUE) # need lower.tail = TRUE (like ADF one-sided to the left) } if(!is.null(ips.stat) && ips.stat == "Ztbar") { # calc Ztbar adjval <- adjval.ztbar <- sapply(L.ips, adj.ips.ztbar.value, adj.ips.zbar.time, adj.ips.zbar.means, adj.ips.zbar.vars) rownames(adjval) <- rownames(adjval.ztbar) <- c("mean", "var") Etbar.ztbar <- mean(adjval.ztbar[1L, ]) Vtbar.ztbar <- mean(adjval.ztbar[2L, ]) stat <- stat.ztbar <- c("Ztbar" = sqrt(n) * (tbar - Etbar.ztbar) / sqrt(Vtbar.ztbar)) # (3.13) = (4.10) in IPS (2003) [same generic formula for Ztbar and Wtbar] pvalue <- pvalue.ztbar <- pnorm(stat.ztbar, lower.tail = TRUE) } if(!is.null(ips.stat) && ips.stat == "tbar") { # give tbar T.tbar <- unique(lengths(object, use.names = FALSE)) if(length(T.tbar) > 1L) stop("tbar statistic is not applicable to unbalanced panels") if(any(lags > 0L)) stop("tbar statistic is not applicable when 'lags' > 0 is specified") L.tbar <- T.tbar - 1 stat <- tbar names(stat) <- "tbar" pvalue <- NA ips.tbar.crit <- critval.ips.tbar.value(ind = n, time = L.tbar, critval.ips.tbar, exo = exo) adjval <- NULL } } if(test == "madwu"){ # Maddala/Wu (1999), pp. 636-637; Choi (2001), p. 253; Baltagi (2013), pp. 283-285 ## does not require a balanced panel trho <- vapply(idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) stat <- c(chisq = - 2 * sum(log(pvalues.trho))) n.madwu <- length(trho) parameter <- c(df = 2 * n.madwu) pvalue <- pchisq(stat, df = parameter, lower.tail = FALSE) adjval <- NULL } if(test == "Pm"){ ## Choi Pm (modified P) [proposed for large N] trho <- vapply(idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) n.Pm <- length(trho) # formula (18) in Choi (2001), p. 255: stat <- c( "Pm" = 1/(2 * sqrt(n.Pm)) * sum(-2 * log(pvalues.trho) - 2) ) # == -1/sqrt(n.Pm) * sum(log(pvalues.trho) +1) pvalue <- pnorm(stat, lower.tail = FALSE) # one-sided parameter <- NULL adjval <- NULL } if(test == "invnormal"){ # inverse normal test as in Choi (2001) trho <- vapply(idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) n.invnormal <- length(trho) stat <- c("z" = sum(qnorm(pvalues.trho)) / sqrt(n.invnormal)) # formula (9), Choi (2001), p. 253 pvalue <- pnorm(stat, lower.tail = TRUE) # formula (12), Choi, p. 254 parameter <- NULL adjval <- NULL } if(test == "logit"){ # logit test as in Choi (2001) trho <- vapply(idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) pvalues.trho <- vapply(idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) n.logit <- length(trho) l_stat <- c("L*" = sum(log(pvalues.trho / (1 - pvalues.trho)))) # formula (10), Choi (2001), p. 253 k <- (3 * (5 * n.logit + 4)) / (pi^2 * n.logit * (5 * n.logit + 2)) stat <- sqrt(k) * l_stat # formula (13), Choi (2001), p. 254 parameter <- c("df" = 5 * n.logit + 4) pvalue <- pt(stat, df = parameter, lower.tail = TRUE) adjval <- NULL } htest <- structure(list(statistic = stat, parameter = parameter, alternative = alternative, data.name = data.name, method = method, p.value = pvalue, ips.tbar.crit = ips.tbar.crit), class = "htest") result <- list(statistic = htest, call = cl, args = args, idres = idres, adjval = adjval, sigma2 = sigma2) class(result) <- "purtest" result } #' @rdname purtest #' @export print.purtest <- function(x, ...){ print(x$statistic, ...) if (x$args$test == "ips" && x$args$ips.stat == "tbar"){ cat("tbar critival values:\n") print(x$statistic$ips.tbar.crit, ...) } invisible(x) } #' @rdname purtest #' @export summary.purtest <- function(object, ...){ if(!object$args$test == "hadri"){ lags <- vapply(object$idres, function(x) x[["lags"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) L <- vapply(object$idres, function(x) x[["T"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) rho <- vapply(object$idres, function(x) x[["rho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) trho <- vapply(object$idres, function(x) x[["trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) p.trho <- vapply(object$idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) sumidres <- cbind("lags" = lags, "obs" = L - lags - 1, "rho" = rho, "trho" = trho, "p.trho" = p.trho) if (object$args$test == "ips" && !object$args$ips.stat == "tbar") { sumidres <- cbind(sumidres, t(object$adjval)) } if (object$args$test == "levinlin") { sumidres <- cbind(sumidres, object$sigma2) } } else { # hadri case LM <- vapply(object$idres, function(x) x[["LM"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) sigma2 <- vapply(object$idres, function(x) x[["sigma2"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) sumidres <- cbind("LM" = LM, "sigma2" = sigma2) } nam <- names(object$idres) rownames(sumidres) <- nam object$sumidres <- sumidres class(object) <- c("summary.purtest", "purtest") object } #' @rdname purtest #' @export print.summary.purtest <- function(x, ...){ cat(paste(purtest.names.test[x$args$test], "\n")) cat(paste("Exogenous variables:", purtest.names.exo[x$args$exo], "\n")) if (x$args$test != "hadri") { thelags <- vapply(x$idres, function(x) x[["lags"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) if (is.character(x$args$lags)){ lagselectionmethod <- if (x$args$lags == "Hall") "Hall's method" else x$args$lags cat(paste0("Automatic selection of lags using ", lagselectionmethod, ": ", min(thelags), " - ", max(thelags), " lags (max: ", x$args$pmax, ")\n")) } else{ cat("User-provided lags\n") } } if (x$args$test == "ips") { cat(paste(paste0("statistic (", x$args$ips.stat,"):"), round(x$statistic$statistic, 3), "\n")) } else { cat(paste("statistic:", round(x$statistic$statistic, 3), "\n")) } cat(paste("p-value:", round(x$statistic$p.value, 3), "\n")) if (x$args$test == "ips" && x$args$ips.stat == "tbar"){ cat("tbar critival values:\n") print(x$statistic$ips.tbar.crit, ...) } cat("\n") print(x$sumidres, ...) invisible(x) } #' Simes Test for unit roots in panel data #' #' Simes' test of intersection of individual hypothesis tests #' (\insertCite{SIMES:86;textual}{plm}) applied to panel unit root tests as #' suggested by \insertCite{HANCK:13;textual}{plm}. #' #' Simes' approach to testing is combining p-values from single hypothesis tests #' with a global (intersected) hypothesis. \insertCite{HANCK:13;textual}{plm} #' mentions it can be applied to any panel unit root test which yields a p-value #' for each individual series. #' The test is robust versus general patterns of cross-sectional dependence. #' #' Further, this approach allows to discriminate between individuals for which #' the individual H0 (unit root present for individual series) is rejected/is #' not rejected by Hommel's procedure (\insertCite{HOMM:88;textual}{plm}) for #' family-wise error rate control (FWER) at a pre-specified significance level #' \eqn{\alpha} via argument `alpha` (defaulting to `0.05`), i.e., it controls #' for the multiplicity in testing. #' #' The function `phansitest` takes as main input `object` either a plain numeric #' containing p-values of individual tests or a `purtest` object which holds #' a suitable pre-computed panel unit root test (one that produces p-values per #' individual series). #' #' The function's return value (see section Value) is a list with detailed #' evaluation of the applied Simes test. #' #' The associated `print` method prints a verbal evaluation. #' #' @aliases phansitest #' @param object either a numeric containing p-values of individual unit root #' test results (does not need to be sorted) or a suitable `purtest` object #' (as produced by `purtest()` for a test which gives p-values of the individuals #' (Hadri's test in `purtest` is not suitable)), #' @param alpha numeric, the pre-specified significance level (defaults to `0.05`), #' @param x an object of class `c("phansitest", "list")` as produced by #' `phansitest` to be printed, #' @param cutoff integer, cutoff value for printing of enumeration of individuals #' with rejected individual H0, for print method only, #' @param \dots further arguments (currently not used). #' #' @return For `phansitest`, an object of class `c("phansitest", "list")` which #' is a list with the elements: #' - `id`: integer, the identifier of the individual (integer sequence referring to #' position in input), #' - `name`: character, name of the input's individual (if it has a name, #' otherwise "1", "2", "3", ...), #' - `p`: numeric, p-values as input (either the numeric or extracted from #' the purtest object), #' - `p.hommel`: numeric, p-values after Hommel's transformation, #' - `rejected`: logical, indicating for which individual the individual null #' hypothesis is rejected (`TRUE`)/non-rejected (`FALSE`) (after controlling #' for multiplicity), #' - `rejected.no`: integer, giving the total number of rejected individual series, #' - `alpha`: numeric, the input `alpha`. #' #' @export #' @importFrom stats p.adjust #' #' @author Kevin Tappe #' @seealso [purtest()], [cipstest()] #' #' @references #' \insertAllCited{} #' #' @keywords htest # #' @examples #' #' ### input is numeric (p-values) #' #### example from Hanck (2013), Table 11 (left side) #' pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050, #' 0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475) #' #' countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France", #' "Germany","Belgium","U.K.","Brazil","Australia","Netherlands", #' "Portugal","Canada", "Spain","Denmark","Switzerland","Japan") #' names(pvals) <- countries #' #' h <- phansitest(pvals) #' print(h) # (explicitly) prints test's evaluation #' print(h, cutoff = 3L) # print only first 3 rejected ids #' h$rejected # logical indicating the individuals with rejected individual H0 #' #' #' ### input is a (suitable) purtest object #' data("Grunfeld", package = "plm") #' y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) #' obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu") #' #' phansitest(obj) #' phansitest <- function(object, alpha = 0.05) { is.purtest <- if(inherits(object, "purtest")) TRUE else FALSE if(!is.purtest) { if(is.numeric(object)) { if(anyNA(object)) stop("input p-values in 'object' contain at least one NA/NaN value") n <- length(object) p <- object } else { stop("argument 'object' needs to specify either a 'purtest' object or a numeric") } } else { # purtest object if(object$args$test == "hadri") stop("phansitest() [Hanck/Simes' test] not possible for purtest objects based on Hadri's test") p <- vapply(object$idres, function(x) x[["p.trho"]], FUN.VALUE = 0.0, USE.NAMES = FALSE) n <- length(p) } id <- seq_len(n) names(id) <- if(!is.null(names(p))) names(p) else id p.hommel <- p.adjust(p, method = "hommel") rejected.ind <- p.hommel <= alpha # is TRUE for individual-H0-rejected individuals rejected.ind.no <- sum(rejected.ind) # number of rejected individuals res <- structure(list(id = id, name = names(id), p = p, p.hommel = p.hommel, rejected = rejected.ind, rejected.no = rejected.ind.no, alpha = alpha), class = c("phansitest", "list")) return(res) } #' @rdname phansitest #' @export print.phansitest <- function(x, cutoff = 10L, ...) { if(round(cutoff) != cutoff) stop("Argument 'cutoff' has to be an integer") id <- x$id alpha <- x$alpha rej.ind <- x$rejected rej.ind.no <- x$rejected.no n <- length(rej.ind) H0.txt <- "H0: All individual series have a unit root\n" HA.txt <- "HA: Stationarity for at least some individuals\n" H0.rej.txt <- "H0 rejected (globally)" H0.not.rej.txt <- "H0 not rejected (globally)" test.txt <- " Simes Test as Panel Unit Root Test (Hanck (2013))" cat("\n") cat(paste0(" ", test.txt, "\n")) cat("\n") cat(H0.txt) cat(HA.txt) cat("\n") cat(paste0("Alpha: ", alpha, "\n")) cat(paste0("Number of individuals: ", n, "\n")) cat("\n") cat("Evaluation:\n") if(rej.ind.no > 0L) { cat(paste0(" ", H0.rej.txt, "\n")) cat("\n") if(rej.ind.no <= cutoff && cutoff >= 0L) { ind.cutoff <- paste0(paste0(id[rej.ind], collapse = ", ")) ind.txt <- paste0("Individual H0 rejected for ", rej.ind.no, " individual(s) (integer id(s)):\n") cat(paste0(" ", ind.txt)) cat(paste0(" ", ind.cutoff, "\n")) } else { # cut off enumeration of individuals if more than specified in cutoff if(cutoff > 0L) { ind.cutoff <- paste0(paste0(id[rej.ind][seq_len(cutoff)], collapse = ", "), ", ...") ind.txt <- paste0("Individual H0 rejected for ", rej.ind.no ," individuals, only first ", cutoff, " printed (integer id(s)):\n") cat(paste0(" ", ind.txt)) cat(paste0(" ", ind.cutoff, "\n")) } else cat(paste0(" Individual H0 rejected for ", rej.ind.no ," individuals. None printed as 'cutoff' set to ", cutoff, ".\n")) } } else { cat(paste0(" ", H0.rej.txt, "\n")) } invisible(x) } plm/R/est_gmm.R0000644000176200001440000012370514742163233013036 0ustar liggesusers#' Generalized Method of Moments (GMM) Estimation for Panel Data #' #' Generalized method of moments estimation for static or dynamic #' models with panel data. #' #' #' `pgmm` estimates a model for panel data with a generalized method #' of moments (GMM) estimator. The description of the model to #' estimate is provided with a multi--part formula which is (or which #' is coerced to) a `Formula` object. The first right--hand side part #' describes the covariates. The second one, which is mandatory, #' describes the GMM instruments. The third one, which is optional, #' describes the 'normal' instruments. By default, all the variables #' of the model which are not used as GMM instruments are used as #' normal instruments with the same lag structure as the one specified #' in the model. #' #' `y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99)` is similar to #' #' `y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99) | lag(x1, #' 0:1)+lag(x2, 0:2)` #' #' and indicates that all lags from 2 of `y` are used #' as GMM instruments. #' #' `transformation` indicates how the model should be transformed for #' the estimation. `"d"` gives the "difference GMM" model #' \insertCite{@see @AREL:BOND:91}{plm}, `"ld"` the "system GMM" model #' \insertCite{@see @BLUN:BOND:98}{plm}. #' #' `pgmm` is an attempt to adapt GMM estimators available within the #' DPD library for GAUSS \insertCite{@see @AREL:BOND:98}{plm} and Ox #' \insertCite{@see @DOOR:AREL:BOND:12}{plm} and within the xtabond2 #' library for Stata \insertCite{@see @ROOD:09}{plm}. #' #' @aliases pgmm #' @param formula a symbolic description for the model to be #' estimated. The preferred interface is now to indicate a #' multi--part formula, the first two parts describing the #' covariates and the GMM instruments and, if any, the third part #' the 'normal' instruments, #' @param object,x an object of class `"pgmm"`, #' @param data a `data.frame` (neither factors nor character vectors #' will be accepted in `data.frame`), #' @param subset see [lm()], #' @param na.action see [lm()], #' @param effect the effects introduced in the model, one of #' `"twoways"` (the default) or `"individual"`, #' @param model one of `"onestep"` (the default) or `"twosteps"`, #' @param collapse if `TRUE`, the GMM instruments are collapsed (default is #' `FALSE`), #' @param lost.ts the number of lost time series: if `NULL`, this is #' automatically computed. Otherwise, it can be defined by the #' user as a numeric vector of length 1 or 2. The first element is #' the number of lost time series in the model in difference, the #' second one in the model in level. If the second element is #' missing, it is set to the first one minus one, #' @param transformation the kind of transformation to apply to the #' model: either `"d"` (the default value) for the #' "difference GMM" model or `"ld"` for the "system GMM" model, #' @param fsm character of length 1 to specify type of weighting matrix #' for the first step /the `"onestep"` estimator: one of `"I"` (identity #' matrix) or `"G"` (\eqn{=D'D} where \eqn{D} is the first--difference #' operator), if `transformation="d"`, one of `"GI"` or `"full"` #' if `transformation="ld"`, #' @param index the indexes, #' @param \dots further arguments. #' @param robust for pgmm's summary method: if `TRUE` (default), robust inference #' is performed in the summary, for a two-steps model with the #' small-sample correction by \insertCite{WIND:05;textual}{plm}, #' @param time.dummies for pgmm's summary method: if `TRUE`, the estimated #' coefficients of time dummies are present in the table of coefficients; #' default is `FALSE`, thus time dummies are dropped in summary's coefficient #' table (argument is only meaningful if there are time dummies in the model, #' i.e., only for `effect = "twoways"`), #' @param digits digits, #' @param width the maximum length of the lines in the print output. #' @return An object of class `c("pgmm","panelmodel")`, which has the #' following elements: #' #' \item{coefficients}{the vector (or the list for fixed effects) of #' coefficients,} #' \item{residuals}{the list of residuals for each individual,} #' \item{vcov}{the covariance matrix of the coefficients,} #' \item{fitted.values}{the vector of fitted values,} #' \item{df.residual}{degrees of freedom of the residuals,} #' \item{model}{a list containing the variables used for the #' estimation for each individual,} #' \item{W}{a list containing the instruments for each individual (a matrix per #' list element) (two lists in case of system GMM,} # TODO: not correct, W does not contain two lists for system GMM #' \item{A1}{the weighting matrix for the one--step estimator,} #' \item{A2}{the weighting matrix for the two--steps estimator,} # TODO: add B1 description here #' \item{call}{the call.} #' #' It has `print`, `summary` and `print.summary` methods. #' @author Yves Croissant #' @export #' @importFrom MASS ginv #' @seealso #' #' [sargan()] for the Hansen--Sargan test and [mtest()] for #' Arellano--Bond's test of serial correlation. [vcovHC.pgmm] for the robust #' inference. #' @references #' #' \insertAllCited{} #' #' @keywords regression #' @examples #' #' data("EmplUK", package = "plm") #' #'# Arellano/Bond 1991, Table 4, column (a1) (has robust SEs) #'ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "onestep") #'summary(ab.a1, robust = TRUE) #' #' # Arellano/Bond 1991, Table 4, column (a2) (has non-robust SEs) #' ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "twosteps") #' summary(ab.a2, robust = FALSE) #' #' # Arellano and Bond (1991), table 4 col. b / # Windmeijer (2005), table 2, std. errc #' ab.b <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "twosteps") #' summary(ab.b, robust = FALSE) # Arellano/Bond #' summary(ab.b, robust = TRUE) # Windmeijer #' #' ## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4) #' bb.4 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) + #' lag(log(capital), 0:1) | lag(log(emp), 2:99) + #' lag(log(wage), 2:99) + lag(log(capital), 2:99), #' data = EmplUK, effect = "twoways", model = "onestep", #' transformation = "ld") #' summary(bb.4, robust = TRUE) #' #' \dontrun{ #' ## Same with the old formula or dynformula interface #' ## Arellano and Bond (1991), table 4, col. b #' ab.b <- pgmm(log(emp) ~ log(wage) + log(capital) + log(output), #' lag.form = list(2,1,0,1), data = EmplUK, #' effect = "twoways", model = "twosteps", #' gmm.inst = ~log(emp), lag.gmm = list(c(2,99))) #' summary(ab.b, robust = FALSE) #' #' ## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4) #' bb.4 <- pgmm(dynformula(log(emp) ~ log(wage) + log(capital), list(1,1,1)), #' data = EmplUK, effect = "twoways", model = "onestep", #' gmm.inst = ~log(emp) + log(wage) + log(capital), #' lag.gmm = c(2,99), transformation = "ld") #' summary(bb.4, robust = TRUE) #' } #' pgmm <- function(formula, data, subset, na.action, effect = c("twoways", "individual"), model = c("onestep", "twosteps"), collapse = FALSE, # TODO: collapse does not seem to be assumed a logical in the code below but rather a character vector lost.ts = NULL, transformation = c("d", "ld"), fsm = switch(transformation, "d" = "G", "ld" = "full"), index = NULL, ...) { # yX : response / covariates, W : gmm instruments, # Z : normal instruments, V : time dummies # cl <- match.call(expand.dots = FALSE) cl <- match.call(expand.dots = TRUE) effect <- match.arg(effect) model <- match.arg(model) transformation <- match.arg(transformation) if(!is.null(fsm)) { # some interface checks stopifnot(is.character(fsm) && length(fsm) == 1L) if(!(fsm %in% names(pgmm.fsm.list))) stop("argument 'fsm' must be one of ", oneof(pgmm.fsm.list)) if(transformation == "d") stopifnot(fsm == "I" || fsm == "G") if(transformation == "ld") stopifnot(fsm == "GI" || fsm == "full") } else { # set fsm if null fsm <- switch(transformation, "d" = "G", "ld" = "full") warning(paste0("as argument 'fsm' was NULL, it has been set to \"", fsm, "\"")) } namesV <- NULL ################################################################# ##### 1. Backward compatibility with the old formula / dynformula ##### interface ################################################################# if (inherits(formula, "dynformula") || length(Formula(formula))[2L] == 1L){ if (!inherits(formula, "dynformula")){ formula <- match.call(expand.dots = TRUE) m <- match(c("formula", "lag.form", "diff.form", "log.form"),names(formula),0) formula <- formula[c(1L, m)] formula[[1L]] <- as.name("dynformula") formula <- cl$formula <- eval(formula, parent.frame()) } response.name <- paste(deparse(formula[[2L]])) main.lags <- attr(formula, "lag") if (length(main.lags[[1L]]) == 1L && main.lags[[1L]] > 1L) main.lags[[1L]] <- c(1L, main.lags[[1L]]) main.lags[2:length(main.lags)] <- lapply(main.lags[2:length(main.lags)], function(x){ if (length(x) == 1L && x != 0) x <- c(0, x) x }) main.form <- dynterms2formula(main.lags, response.name) dots <- list(...) gmm.inst <- dots$gmm.inst lag.gmm <- dots$lag.gmm instruments <- dots$instruments gmm.form <- dynformula(gmm.inst, lag.form = lag.gmm) gmm.lags <- attr(gmm.form, "lag") gmm.lags <- lapply(gmm.lags, function(x) min(x):max(x)) gmm.form <- dynterms2formula(gmm.lags) formula <- as.Formula(main.form, gmm.form) } ################################################################# ##### 2. Extract the response/covariates, the gmm instruments and ##### the "normal" instruments, as a named list containing the lag ##### structure ################################################################# x <- formula if (!inherits(x, "Formula")) x <- Formula(formula) # gmm instruments : named list with the lags, names being the variables gmm.form <- formula(x, rhs = 2, lhs = 0) gmm.lags <- dynterms(gmm.form) cardW <- length(gmm.lags) if (is.null(names(collapse))){ if (length(collapse) == 1L){ collapse <- as.vector(rep(collapse, cardW), mode = "list") } else{ if (length(collapse) != cardW) stop("the 'collapse' vector has a wrong length") } names(collapse) <- names(gmm.lags) } else{ if (any(! (names(collapse) %in% names(gmm.lags)))) stop("unknown names in the 'collapse' vector") else{ bcollapse <- as.vector(rep(FALSE, cardW), mode = "list") names(bcollapse) <- names(gmm.lags) bcollapse[names(collapse)] <- collapse collapse <- bcollapse } } # covariates : named list with the lags, names being the variables main.form <- formula(x, rhs = 1, lhs = 1) main.lags <- dynterms(main.form) # Three possibilities for 'normal' instruments : # 1. the third part of the formula describes them # 2. all variables not used as gmm are normal instruments # 3. all variables are gmm instruments and therefore, there are no # normal instruments except maybe time dummies # the third part of the formula (if any) deals with the 'normal' instruments if (length(x)[2L] == 3L){ normal.instruments <- TRUE inst.form <- formula(x, rhs = 3, lhs = 0) # the . - x1 + x2 syntax is allowed, in this case update with the first part inst.form <- update(main.form, inst.form) inst.form <- formula(Formula(inst.form), lhs = 0) inst.lags <- dynterms(inst.form) } else{ # the default 'normal' instruments is the subset of covariates # which are not used as gmm instruments iv <- names(main.lags)[! names(main.lags) %in% names(gmm.lags)] inst.lags <- main.lags[iv] # generate the formula for 'normal' instruments if (length(inst.lags) > 0L){ normal.instruments <- TRUE inst.form <- dynterms2formula(inst.lags) } else{ # the case where there are no normal instruments : set inst.form # and inst.lags to NULL normal.instruments <- FALSE inst.form <- NULL inst.lags <- NULL } } ################################################################# ##### 3. How many time series are lost ################################################################# if (!is.null(lost.ts)){ if (!is.numeric(lost.ts)) stop("argument 'lost.ts' should be numeric") lost.ts <- as.numeric(lost.ts) if (!(length(lost.ts) %in% c(1L, 2L))) stop("argument 'lost.ts' should be of length 1 or 2") TL1 <- lost.ts[1L] TL2 <- if(length(lost.ts) == 1L) { TL1 - 1 } else lost.ts[2L] } else{ # How many time series are lost? May be the maximum number of lags # of any covariates + 1 because of first - differencing or the # largest minimum lag for any gmm or normal instruments # min or max to select the number of lost time series? gmm.minlag <- min(unlist(gmm.lags, use.names = FALSE)) inst.maxlag <- if (!is.null(inst.lags)) max(unlist(inst.lags, use.names = FALSE)) else 0 main.maxlag <- max(unlist(main.lags, use.names = FALSE)) TL1 <- max(main.maxlag + 1, inst.maxlag + 1, gmm.minlag) TL2 <- max(main.maxlag, inst.maxlag, gmm.minlag - 1) # if TL2 = 0 (no lags), one observation is lost anyway because of # the differentiation of the lag instruments TL1 <- max(main.maxlag + 1, gmm.minlag) ## TODO: TL1, TL2 calc. twice and prev. result overwritten!?! TL2 <- max(main.maxlag, gmm.minlag - 1) } ################################################################# ##### 4. Compute the model frame which contains the ##### response/covariates, the gmm instruments and the 'normal' ##### instruments without the lags ################################################################# gmm.form <- as.formula(paste("~", paste(names(gmm.lags), collapse = "+"))) if (!is.null(inst.form)) Form <- as.Formula(main.form, gmm.form, inst.form) else Form <- as.Formula(main.form, gmm.form) mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "index"), names(mf), 0L) mf <- mf[c(1L, m)] mf$drop.unused.levels <- TRUE mf[[1L]] <- as.name("plm") mf$model <- NA mf$formula <- Form mf$na.action <- "na.pass" mf$subset <- NULL data <- eval(mf, parent.frame()) index <- index(data) pdim <- pdim(data) N <- pdim$nT$n T <- pdim$nT$T balanced <- pdim$balanced # if the data is unbalanced, "balance" the data if (!balanced){ un.id <- sort(unique(index(data, "id"))) un.time <- sort(unique(index(data, "time"))) rownames(data) <- paste(index(data, "id"), index(data, "time"), sep = ".") allRows <- as.character(t(outer(un.id, un.time, paste, sep = "."))) data <- data[allRows, ] rownames(data) <- allRows index <- data.frame(id = rep(un.id, each = length(un.time)), time = rep(un.time, length(un.id)), row.names = rownames(data)) class(index) <- c("pindex", "data.frame") attr(data, "index") <- index } ################################################################# ##### 5. Get the response/covariates matrix yX, the gmm instruments ##### matrix W and the normal instruments matrix inst, split by ##### individuals ################################################################# yX <- extract.data(data, form = main.form) names.coef <- colnames(yX[[1L]])[-1L] Z <- if(normal.instruments){ extract.data(data, form = inst.form) } else NULL W <- extract.data(data, form = gmm.form, as.matrix = FALSE) ################################################################# ##### 6. Create the matrix of response/covariates, gmm instruments ##### and normal instruments for the diff model ################################################################# # create the matrix of gmm instruments for every individual W1 <- lapply(W, function(x){ u <- mapply(makegmm, x, gmm.lags, TL1, collapse, SIMPLIFY = FALSE) matrix(unlist(u), nrow = nrow(u[[1L]])) }) # differentiate the matrix of response/covariates (and of normal # instruments, if any) and remove T1 - 1 time series (xd is already # differenced) yX1 <- lapply(yX, function(x){ xd <- diff(x) xd[-seq_len(TL1 - 1), , drop = FALSE] }) if (normal.instruments){ Z1 <- lapply(Z, function(x){ xd <- diff(x) xd[-seq_len(TL1 - 1), , drop = FALSE] }) } ################################################################# ##### 7. In case of system gmm, create the matrix of ##### response/covariates, gmm instruments and normal instruments ##### for the level model and merge with the diff model ################################################################# if (transformation == "ld"){ W2 <- lapply(W, function(x){ u <- mapply(makeW2, x, collapse, SIMPLIFY = FALSE) # the matrix of instruments in difference has T - 2 # rows if one time series is lost (there are no gmm # instruments for t = 2 but there is a moment # condition with the intercept. In this case, a row # of 0 should be added. Otherwise, the number of # rows is just T - TL2 nrow.ud <- if(TL2 == 1L) { T - 2 } else { T - TL2 } u <- matrix(unlist(u), nrow = nrow.ud) if (TL2 == 1) u <- rbind(0, u) u }) # remove the relevant number of time series for data in level yX2 <- lapply(yX, function(x){ x[-seq_len(TL2), , drop = FALSE] }) if (normal.instruments){ Z2 <- lapply(Z, function(x){ x[-seq_len(TL2), , drop = FALSE] }) } } ################################################################# ##### 8. Add time dummies if effect = "twoways" ################################################################# if (effect == "twoways"){ namesV <- levels(index(data, which = "time")) if (transformation == "d"){ V1 <- td.model.diff <- diff(diag(1, T - TL1 + 1))[ , -1, drop = FALSE] namesV <- namesV[-seq_len(TL1)] } else{ td <- cbind(1, rbind(0, diag(1, T - 1))) # remove as many columns and rows as there are lost time series # in level (the difference of position between rows and columns # is due to the fact that the first column of td is the # intercept and should be kept anyway V2 <- td[- c(seq_len(TL2)), - c(2:(2 + TL2 - 1))] V1 <- diff(V2) namesV <- c("(Intercept)", namesV[-seq_len(TL2 + 1)]) } for (i in seq_len(N)){ yX1[[i]] <- cbind(yX1[[i]], V1) if (transformation == "d"){ W1[[i]] <- cbind(W1[[i]], V1) } else{ W2[[i]] <- cbind( W2[[i]], V2) yX2[[i]] <- cbind(yX2[[i]], V2) } } } # A QAD fix for the bug in mtest for ld model without time.dummies if (effect == "individual" && transformation == "ld"){ namesV <- levels(index(data, which = "time")) namesV <- c("(Intercept)", namesV[-seq_len(TL2 + 1)]) } ################################################################# ##### 9. In case of unbalanced data, replace NA's by 0 and overwrite ##### rows for missing time series with 0 ################################################################# for (i in seq_len(N)){ narows <- apply(yX1[[i]], 1, function(z) anyNA(z)) yX1[[i]][narows, ] <- 0 W1[[i]][is.na(W1[[i]])] <- 0 W1[[i]][narows, ] <- 0 if (normal.instruments){ Z1[[i]][is.na(Z1[[i]])] <- 0 Z1[[i]][narows, ] <- 0 } if (transformation == "ld"){ narows <- apply(yX2[[i]], 1, function(z) anyNA(z)) yX2[[i]][narows, ] <- 0 W2[[i]][is.na(W2[[i]])] <- 0 W2[[i]][narows, ] <- 0 if (normal.instruments){ Z2[[i]][is.na(Z2[[i]])] <- 0 Z2[[i]][narows, ] <- 0 } } } ################################################################# ##### 10. a) In case of sys gmm: bdiag or rbind the diff and level ##### matrices; ##### b) cbind normal instruments, if any ################################################################# if (transformation == "ld"){ for (i in seq_len(N)){ W1[[i]] <- bdiag( W1[[i]], W2[[i]]) yX1[[i]] <- rbind(yX1[[i]], yX2[[i]]) if (normal.instruments) Z1[[i]] <- bdiag(Z1[[i]], Z2[[i]]) } } if (normal.instruments){ for (i in seq_len(N)) W1[[i]] <- cbind(W1[[i]], Z1[[i]]) } ################################################################# ##### 11. Compute the estimator ################################################################# W <- W1 yX <- yX1 ## WX <- mapply(function(x, y) crossprod(x, y), W, yX, SIMPLIFY = FALSE) ## WX <- Reduce("+", WX) ## zerolines <- which(apply(WX, 1, function(z) sum(abs(z))) == 0) ## for (i in seq_len(N)) W[[i]] <- W[[i]][, - zerolines] WX <- mapply(function(x, y) crossprod(x, y), W, yX, SIMPLIFY = FALSE) Wy <- lapply(WX, function(x) x[ , 1L]) WX <- lapply(WX, function(x) x[ , -1L, drop = FALSE]) WX <- Reduce("+", WX) Wy <- Reduce("+", Wy) # Compute the first step matrices H <- switch(transformation, "d" = FSM(T - TL1, fsm), # for fsm == "G": FSM(. "G") gives the same as previously hard coded tcrossprod(diff(diag(1, T - TL1 + 1))) "ld" = FSM(T - TL2, fsm)) A1 <- lapply(W, function(x) crossprod(t(crossprod(x, H)), x)) A1 <- Reduce("+", A1) minevA1 <- min(eigen(A1)$values) eps <- 1E-9 A1 <- if(minevA1 < eps){ warning("the first-step matrix is singular, a general inverse is used") ginv(A1) } else solve(A1) A1 <- A1 * length(W) # coefficients: Roodman (2019) formula (13, upper part for beta1) with B1 = (X'Z(Z'HZ)^(-1)Z'X)^(-1), A1 = (Z'HZ)^(-1) t.CP.WX.A1 <- t(crossprod(WX, A1)) B1 <- solve(crossprod(WX, t.CP.WX.A1)) Y1 <- crossprod(t.CP.WX.A1, Wy) coefficients <- as.numeric(crossprod(B1, Y1)) if (effect == "twoways") names.coef <- c(names.coef, namesV) names(coefficients) <- names.coef residuals <- lapply(yX, function(x) as.vector(x[ , 1L] - crossprod(t(x[ , -1L, drop = FALSE]), coefficients))) # A2 is also needed for "onestep" model in vcovHC.pgmm, hence calc. here and # always include in model object A2 <- mapply(function(w, res) tcrossprod(crossprod(w, tcrossprod(res)), t(w)), W, residuals, SIMPLIFY = FALSE) # == mapply(function(w, res) t(w) %*% tcrossprod(res) %*% w, W, residuals, SIMPLIFY = FALSE) A2 <- Reduce("+", A2) minevA2 <- min(eigen(A2)$values) A2 <- if (minevA2 < eps) { warning("the second-step matrix is singular, a general inverse is used") ginv(A2) } else solve(A2) if (model == "twosteps") { coef1s <- coefficients t.CP.WX.A2 <- t(crossprod(WX, A2)) Y2 <- crossprod(t.CP.WX.A2, Wy) vcov <- solve(crossprod(WX, t.CP.WX.A2)) # "B2" coef2s <- as.numeric(crossprod(vcov, Y2)) names(coef2s) <- names.coef coefficients <- list("step1" = coef1s, "step2" = coef2s) # calc. residuals with coefs from 2nd step residuals <- lapply(yX, function(x){ nz <- rownames(x) z <- as.vector(x[ , 1L] - crossprod(t(x[ , -1L, drop = FALSE]), coef2s)) names(z) <- nz z}) } else { vcov <- B1 } rownames(vcov) <- colnames(vcov) <- names.coef # TODO: yX does not contain the original data (but first-diff-ed data) -> fitted.values not what you would expect fitted.values <- mapply(function(x, y) x[ , 1L] - y, yX, residuals) # fitted.values <- data[ , 1L] - unlist(residuals) # in 'data' is original data, but obs lost due to diff-ing are not dropped -> format incompatible args <- list(model = model, effect = effect, transformation = transformation, # collapse = collapse, # TODO: this would give a list of instruments, not the logical collapse as arg input namest = namesV) result <- list(coefficients = coefficients, residuals = residuals, # is a list (but documentation said for a long time 'vector'), mtest() and sargan() expect a list vcov = vcov, fitted.values = fitted.values, # df.residual = df.residual, # TODO: df.residual is not defined here, hence the function 'df.residual' is attached by this model = yX, W = W, A1 = A1, A2 = A2, B1 = B1, call = cl, args = args) result <- structure(result, class = c("pgmm", "panelmodel"), pdim = pdim) result } dynterms <- function(x){ trms.lab <- attr(terms(x), "term.labels") result <- getvar(trms.lab) nv <- names(result) dn <- names(table(nv))[table(nv) > 1] un <- names(table(nv))[table(nv) == 1] resu <- result[un] for (i in dn){ v <- sort(unique(unlist(result[nv == i]))) names(v) <- NULL resu[[i]] <- v } resu } getvar <- function(x){ x <- as.list(x) result <- lapply(x, function(y){ deb <- as.numeric(gregexpr("lag\\(", y)[[1L]]) if (deb == -1){ lags <- 0 avar <- y } else{ # inspar <- substr(y, deb + 2, nchar(y) - 1) inspar <- substr(y, deb + 4, nchar(y) - 1) coma <- as.numeric(gregexpr(",", inspar)[[1L]][1L]) if (coma == -1){ endvar <- nchar(inspar) lags <- 1 } else{ endvar <- coma - 1 lags <- substr(inspar, coma + 1, nchar(inspar)) lags <- eval(parse(text = lags)) } avar <- substr(inspar, 1, endvar) } list(avar, lags) } ) nres <- sapply(result, function(x) x[[1L]]) result <- lapply(result, function(x) x[[2L]]) names(result) <- nres result } dynterms2formula <- function(x, response.name = NULL){ result <- character(0) for (i in seq_along(x)){ theinst <- x[[i]] # if the first element is zero, write the variable without lag and # drop the 0 from the vector if (theinst[1L] == 0){ at <- names(x)[i] theinst <- theinst[-1L] } else{ at <- character(0) } # if there are still some lags, write them if (length(theinst) > 0L){ if (length(theinst) > 1L){ at <- c(at, paste("lag(", names(x)[i], ",c(", paste(theinst, collapse = ","), "))", sep ="")) } else{ at <- c(at, paste("lag(", names(x)[i], ",", theinst, ")", sep ="")) } } result <- c(result, at) } if (is.null(response.name)) as.formula(paste("~", paste(result, collapse = "+"))) else as.formula(paste(response.name, "~", paste(result, collapse = "+"))) } extract.data <- function(data, form, as.matrix = TRUE){ # uses collapse's fast *split functions / 2024-12-27 trms <- terms(form) has.response <- attr(trms, 'response') == 1 has.intercept <- attr(trms, 'intercept') == 1 if (has.intercept == 1){ # Formula is unable to update formulas with no lhs form <- Formula(update(formula(form), ~ . -1)) # form <- update(form, ~. -1) } index <- attr(data, "index") X <- model.matrix(form, data) if (has.response){ X <- cbind(data[[1L]], X) colnames(X)[1L] <- deparse(trms[[2L]]) } if(!as.matrix) X <- as.data.frame(X) data <- collapse::rsplit(X, index[[1L]], simplify = FALSE) time <- collapse::gsplit(index[[2L]], index[[1L]]) data <- mapply(function(x, y){ rownames(x) <- y x }, data, time, SIMPLIFY = FALSE) data } G <- function(t){ G <- matrix(0, t, t) for (i in seq_len(t-1)){ G[i, i] <- 2 G[i, i+1] <- -1 G[i+1, i] <- -1 } G[t, t] <- 2 G } FD <- function(t){ FD <- Id(t)[-1L, ] for (i in seq_len(t-1)){ FD[i, i] <- -1 } FD } Id <- function(t){ diag(1, t) } FSM <- function(t, fsm = c("I", "G", "GI", "full")){ fsm <- match.arg(fsm) switch(fsm, "I" = Id(t), "G" = G(t), "GI" = bdiag(G(t-1), Id(t)), "full" = rbind(cbind(G(t-1), FD(t)), cbind(t(FD(t)), Id(t))) ) } makegmm <- function(x, g, TL1, collapse = FALSE){ T <- length(x) rg <- range(g) z <- as.list((TL1 + 1):T) x <- lapply(z, function(y) x[max(1, y - rg[2L]):(y - rg[1L])]) if (collapse) { x <- lapply(x, rev) m <- matrix(0, T - TL1, min(T - rg[1L], rg[2L]+1-rg[1L])) for (y in seq_along(x)){ m[y, seq_along(x[[y]])] <- x[[y]]} result <- m } else { lx <- vapply(x, length, FUN.VALUE = 0.0) n <- length(x) lxc <- cumsum(lx) before <- c(0, lxc[-n]) after <- lxc[n] - lx - before result <- t(mapply(function(x, y, z) c(rep(0, y), x, rep(0, z)), x, before, after, SIMPLIFY = TRUE)) } result } makeW2 <-function (x, collapse = FALSE){ if(collapse) { diff(x[-c(length(x))]) } else { diag(diff(x[-c(length(x))])) } } #' @rdname pgmm #' @export coef.pgmm <- function(object,...){ model <- describe(object, "model") if(model == "onestep") object$coefficients else object$coefficients[[2L]] } #' @rdname pgmm #' @export summary.pgmm <- function(object, robust = TRUE, time.dummies = FALSE, ...) { model <- describe(object, "model") effect <- describe(object, "effect") transformation <- describe(object, "transformation") vv <- if(robust) vcovHC(object) else vcov(object) K <- if(model == "onestep") length(object$coefficients) else length(object$coefficients[[2L]]) object$sargan <- sargan(object, "twosteps") object$m1 <- mtest(object, order = 1L, vcov = if(!robust) NULL else vv) # mtest with order = 2 is only feasible if more than 2 observations are present if(NROW(object$model[[1L]]) > 2L) object$m2 <- mtest(object, order = 2L, vcov = if(!robust) NULL else vv) object$wald.coef <- pwaldtest(object, param = "coef", vcov = if(!robust) NULL else vv) if(effect == "twoways") object$wald.td <- pwaldtest(object, param = "time", vcov = if(!robust) NULL else vv) Kt <- length(object$args$namest) rowsel <- if(!time.dummies && effect == "twoways") -c((K - Kt + 1):K) else seq_len(K) std.err <- sqrt(diag(vv)) b <- coef(object) z <- b / std.err p <- 2 * pnorm(abs(z), lower.tail = FALSE) coefficients <- cbind(b, std.err, z, p) colnames(coefficients) <- c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") object$coefficients <- coefficients[rowsel, , drop = FALSE] class(object) <- "summary.pgmm" object } #' Arellano--Bond Test of Serial Correlation #' #' Test of serial correlation for models estimated by GMM #' #' The Arellano--Bond test is a test of correlation based on the residuals of #' the estimation. By default, the computation is done with the standard #' covariance matrix of the coefficients. A robust estimator of a #' covariance matrix can be supplied with the `vcov` argument. #' #' Note that `mtest` computes like DPD for Ox and xtabond do, i.e., uses for two-steps #' models the one-step model's residuals which were used to construct the efficient #' two-steps estimator, see \insertCite{DOOR:AREL:BOND:12}{plm}, p. 32, footnote 7; #' As noted by \insertCite{AREL:BOND:91}{plm} (p. 282), the m statistic is rather #' flexible and can be defined with any consistent GMM estimator which gives leeway #' for implementation, but the test's asymptotic power depends on the estimator's efficiency. #' \insertCite{AREL:BOND:91}{plm} (see their footnote 9) used #' DPD98 for Gauss (\insertCite{AREL:BOND:98}{plm}) as did #' \insertCite{WIND:05}{plm} (see footnote 10) for the basis of his #' covariance correction, both with a slightly different implementation. #' Hence some results for `mtest` with two-step models diverge from original papers, #' see examples below. #' #' @param object an object of class `"pgmm"`, #' @param order integer: the order of the serial correlation, #' @param vcov a matrix of covariance for the coefficients or a function to #' compute it, #' @param \dots further arguments (currently unused). #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant #' @seealso [pgmm()], [vcovHC.pgmm()] #' @references #' #' \insertAllCited{} #' #' @keywords htest #' @examples #' data("EmplUK", package = "plm") #' # Arellano/Bond 1991, Table 4, column (a1) #' ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "onestep") #' mtest(ab.a1, 1L) #' mtest(ab.a1, 2L, vcov = vcovHC) #' #' # Windmeijer (2005), table 2, onestep with corrected std. err #' ab.b.onestep <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "onestep") #' mtest(ab.b.onestep, 1L, vcov = vcovHC) #' mtest(ab.b.onestep, 2L, vcov = vcovHC) #' #' # Arellano/Bond 1991, Table 4, column (a2) #' ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) #' + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "twosteps") #' mtest(ab.a2, 1L) #' mtest(ab.a2, 2L) # while a la Arellano/Bond (1991) -0.434 mtest <- function(object, ...) { UseMethod("mtest") } #' @rdname mtest #' @export mtest.pgmm <- function(object, order = 1L, vcov = NULL, ...) { if (!inherits(object, "pgmm")) stop("argument 'object' needs to be class 'pgmm'") myvcov <- vcov if (is.null(vcov)) vv <- vcov(object) else if (is.function(vcov)) vv <- myvcov(object) else vv <- myvcov model <- describe(object, "model") transformation <- describe(object, "transformation") Kt <- length(object$args$namest) if(order >= (obs <- NROW(object$model[[1]]))) { error.msg <- paste0("argument 'order' (", order, ") specifies an order ", "larger or equal than the number of available ", "observations (", obs, ")") stop(error.msg) } switch(transformation, "d" = { resid <- object$residuals residl <- lapply(resid, function(x) c(rep(0, order), x[seq_len(length(x) - order)])) }, "ld" = { resid <- lapply(object$residuals, function(x) c(x[-c(Kt:(2 * Kt + 1))], rep(0, Kt))) residl <- lapply(object$residuals, function(x) c(rep(0, order), x[seq_len(Kt - order - 1)], rep(0, Kt))) }) X <- lapply(object$model, function(x) x[ , -1L, drop = FALSE]) W <- object$W A <- if(model == "onestep") object$A1 else object$A2 B <- object$vcov # object$vcov is "B1" for one-step and "B2" for two-steps model EX <- Reduce("+", mapply(crossprod, residl, X, SIMPLIFY = FALSE)) XZ <- Reduce("+", mapply(crossprod, W, X, SIMPLIFY = FALSE)) V <- mapply(tcrossprod, resid, SIMPLIFY = FALSE) EVE <- Reduce("+", mapply(function(v, e) t(e) %*% v %*% e, V, residl, SIMPLIFY = FALSE)) ZVE <- Reduce("+", mapply(function(w, v, e) t(w) %*% v %*% e, W, V, residl, SIMPLIFY = FALSE)) num <- Reduce("+", mapply(crossprod, resid, residl, SIMPLIFY = FALSE)) denom <- EVE - 2 * EX %*% B %*% t(XZ) %*% A %*% ZVE + EX %*% vv %*% t(EX) stat <- as.numeric(num / sqrt(denom)) names(stat) <- "normal" if(!is.null(vcov)) vcov <- paste0(", vcov: ", deparse(substitute(vcov))) method <- paste0("Arellano-Bond autocorrelation test of degree ", order, vcov) pval <- 2 * pnorm(abs(stat), lower.tail = FALSE) mtest <- list(statistic = stat, p.value = pval, alternative = "autocorrelation present", method = method, data.name = data.name(object)) class(mtest) <- "htest" mtest } #' @rdname pgmm #' @export print.summary.pgmm <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...) { model <- describe(x, "model") transformation <- describe(x, "transformation") effect <- describe(x, "effect") pdim <- attr(x, "pdim") formula <- x$call$formula model.text <- paste(effect.pgmm.list[effect], model.pgmm.list[model], model.pgmm.transformation.list[transformation], sep = " ") cat(paste(model.text, "\n")) ## TODO: add info about collapse argument in printed output ## TODO: print information about non-robust/robust SE, see, e.g., print.summary.plm cat("\nCall:\n") print(x$call) cat("\n") print(pdim) ntot <- sum(unlist(x$residuals, use.names = FALSE) != 0) ninst <- dim(x$W[[1L]])[2L] cat("\nNumber of Observations Used:", ntot, sep = " ") # cat("\nNumber of Instruments Used: ", ninst, "\n", sep ="") # TODO: more checks, then activate printing cat("\nResiduals:\n") print(summary(unlist(residuals(x), use.names = FALSE))) cat("\nCoefficients:\n") printCoefmat(x$coefficients, digits = digits) cat("\nSargan test: ", names(x$sargan$statistic), "(", x$sargan$parameter, ") = ", x$sargan$statistic, " (p-value = ", format.pval(x$sargan$p.value,digits=digits), ")\n", sep = "") cat("Autocorrelation test (1): ", names(x$m1$statistic), " = ", x$m1$statistic, " (p-value = ", format.pval(x$m1$p.value, digits = digits), ")\n", sep = "") if(!is.null(x$m2)) { # # mtest with order = 2 is only present in x if more than 2 observations were present cat("Autocorrelation test (2): ", names(x$m2$statistic), " = ", x$m2$statistic, " (p-value = ", format.pval(x$m2$p.value,digits=digits), ")\n", sep = "") } cat("Wald test for coefficients: ", names(x$wald.coef$statistic), "(",x$wald.coef$parameter,") = ", x$wald.coef$statistic, " (p-value = ", format.pval(x$wald.coef$p.value, digits = digits), ")\n", sep = "") if(effect == "twoways") { cat("Wald test for time dummies: ", names(x$wald.td$statistic), "(", x$wald.td$parameter, ") = ", x$wald.td$statistic, " (p-value = ", format.pval(x$wald.td$p.value, digits = digits), ")\n", sep = "") } invisible(x) } #' Hansen--Sargan Test of Overidentifying Restrictions #' #' A test of overidentifying restrictions for models estimated by GMM. #' #' The Hansen--Sargan test ("J test") calculates the quadratic form of the moment #' restrictions that is minimized while computing the GMM estimator. It follows #' asymptotically a chi-square distribution with number of degrees of freedom #' equal to the difference between the number of moment conditions and the #' number of coefficients. #' #' @param object an object of class `"pgmm"`, #' @param weights the weighting matrix to be used for the computation of the #' test. #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant #' @seealso [pgmm()] #' @references #' #' \insertCite{HANS:82}{plm} #' #' \insertCite{SARG:58}{plm} #' #' @keywords htest #' @examples #' #' data("EmplUK", package = "plm") #' ar <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + #' lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), #' data = EmplUK, effect = "twoways", model = "twosteps") #' sargan(ar) #' sargan <- function(object, weights = c("twosteps", "onestep")) { if (!inherits(object, "pgmm")) stop("argument 'object' needs to be class 'pgmm'") weights <- match.arg(weights) model <- describe(object, "model") Ktot <- if(model == "onestep") length(object$coefficients) else length(object$coefficients[[2L]]) z <- as.numeric(Reduce("+", mapply(crossprod, object$W, object$residuals, SIMPLIFY = FALSE))) p <- ncol(object$W[[1L]]) A <- if(weights == "onestep") object$A1 else object$A2 stat <- as.numeric(tcrossprod(z, crossprod(z, A))) parameter <- p - Ktot names(parameter) <- "df" names(stat) <- "chisq" method <- "Sargan test" pval <- pchisq(stat, df = parameter, lower.tail = FALSE) sargan <- list(statistic = stat, p.value = pval, parameter = parameter, method = method, alternative = "overidentifying restrictions not valid", data.name = data.name(object)) class(sargan) <- "htest" sargan } plm/R/tool_misc.R0000644000176200001440000007763614463527470013415 0ustar liggesusers## Function that are used in more than on place in plm (or likely to be used in more than one place in the future) ## - trace : calculate trace of a matrix (used in ercomp()) ## - is.constant : check if a numeric vector or columns of a matrix is constant ## - sumres : gives summary for residuals (used in several print.summary.* methods) ## - bdiag : takes matrices as argument and returns the block-diagonal matrix (used in pgmm and plm.list) ## - mylm : inner fitting func based on stats::lm with matrix inputs (used in plm.fit) ## - my.lm.fit : like the barebone stats::lm.fit but with some extra information (e.g., SEs, sigma) used in purtest ## - twosls : computes the 2SLS estimator (used in plm and ercomp) ## - data.name : used in a lot tests to generate the 'data.name' entry for htest objects from the model object's call$formula ## - has.intercept : tests the presence of an intercept ## - pres : extract model residuals as pseries (used in several estimation functions) ## - punbalancedness : measures for the unbalancedness of panel data ## - myvar : calculates variance with NA removal, checks if input is constant (also for factor and character) ## - pvar : checks if input varies in individual / time dimension ## - make.dummies : create a contrast-coded dummy matrix from a factor ## - describe : extract characteristics of plm and other model objects trace <- function(x, names = FALSE) sum(diag(x, names = names)) # opposite default for names for speed is.constant <- function(x) (max(x) - min(x)) < sqrt(.Machine$double.eps) sumres <- function(x){ sr <- summary(unclass(resid(x))) if(abs(sr["Mean"]) < 1e-10) sr[c(1:3, 5:6)] else sr } bdiag <- function(...){ ## non-exported x <- if(nargs() == 1L) as.list(...) else list(...) n <- length(x) if(n == 0L) return(NULL) x <- lapply(x, function(y) if(length(y)) as.matrix(y) else stop("Zero-length component in x")) d <- array(unlist(lapply(x, dim)), c(2, n)) rr <- d[1L, ] cc <- d[2L, ] rsum <- sum(rr) csum <- sum(cc) out <- array(0, c(rsum, csum)) ind <- array(0, c(4, n)) rcum <- cumsum(rr) ccum <- cumsum(cc) ind[1, -1] <- rcum[-n] ind[2, ] <- rcum ind[3, -1] <- ccum[-n] ind[4, ] <- ccum imat <- array(seq_len(rsum * csum), c(rsum, csum)) iuse <- apply(ind, 2, function(y, imat) imat[(y[1L]+1):y[2L], (y[3L]+1):y[4L]], imat = imat) iuse <- as.vector(unlist(iuse)) out[iuse] <- unlist(x) out } # mylm is used in plm.fit() mylm <- function(y, X, W = NULL) { ## non-exported names.X <- colnames(X) result <- if(is.null(W)) lm(y ~ X - 1) else twosls(y, X, W) if(any(na.coef <- is.na(result$coefficients))) { ## for debug purpose: # warning("Coefficient(s) '", paste((names.X)[na.coef], collapse = ", "), #"' could not be estimated and is (are) dropped.") X <- X[ , !na.coef, drop = FALSE] if(dim(X)[2L] == 0L) stop(paste("estimation not possible: all coefficients", "omitted from estimation due to aliasing")) ## re-estimate without the columns which resulted previously in NA-coefficients result <- if(is.null(W)) lm(y ~ X - 1) else twosls(y, X, W) } result$vcov <- vcov(result) result$X <- X result$y <- y result$W <- W # aliased is an element of summary.lm-objects: # since plm drops aliased coefs, store this info in plm object # NB: this only sets coefs to NA that are detected/set to NA by mylm()/lm.fit(); # covariates dropped earlier by model.matrix( , cstcovar.rm) are not included here anymore result$aliased <- na.coef names(result$aliased) <- names.X names(result$coefficients) <- colnames(result$vcov) <- rownames(result$vcov) <- colnames(X) result } # my.lm.fit is used in purtest() my.lm.fit <- function(X, y, dfcor = TRUE, ...){ reg <- lm.fit(X, y) ## 'as' summary method for lm.fit p <- reg$rank Qr <- reg$qr n <- NROW(Qr$qr) rdf <- n - p p1 <- seq_len(p) r <- reg$residuals rss <- as.numeric(crossprod(r)) resvar <- if (dfcor) rss/rdf else rss/n sigma <- sqrt(resvar) R <- chol2inv(Qr$qr[p1, p1, drop = FALSE]) thecoef <- reg$coefficients[Qr$pivot[p1]] #[lags+1] these <- sigma * sqrt(diag(R)) #[lags+1]) list(coef = thecoef, se = these, sigma = sigma, rss = rss, n = n, K = p, rdf = rdf) } #' @importFrom stats .lm.fit twosls <- function(y, X, W, intercept = FALSE, lm.type = "lm"){ ## non-exported # Return value can be controlled by argument lm.type. Often, a full lm model # is needed for further processing but can select one of the fast but less # rich objects produced by lm.fit or .lm.fit (the latter does not contain, e.g., # fitted.values and is to be used very carefully (e.g., coefs not in input order)). # As NA/NaN/(+/-)Inf-freeness needs to be guaranteed when functions call # twosls(), so can use lm.fit to calc. Xhat. Xhat <- lm.fit(W, X)$fitted.values if(!is.matrix(Xhat)) { # ensure Xhat is a matrix Xhat <- matrix(Xhat, ncol = 1L) colnames(Xhat) <- colnames(X) } if(intercept) { model <- switch(lm.type, "lm" = lm(y ~ Xhat), "lm.fit" = lm.fit(cbind(1, Xhat), y), ".lm.fit" = .lm.fit(cbind(1, Xhat), y)) yhat <- as.vector(crossprod(t(cbind(1, X)), coef(model))) } else{ model <- switch(lm.type, "lm" = lm(y ~ Xhat - 1), "lm.fit" = lm.fit(Xhat, y), ".lm.fit" = .lm.fit(Xhat, y)) yhat <- as.vector(crossprod(t(X), coef(model))) } model$residuals <- y - yhat model } data.name <- function(x) { ## non-exported, used in various tests data.name <- paste(deparse(x$call$formula)) if (length(data.name) > 1L) paste(data.name[1L], "...") else data.name } ##### has.intercept methods ##### #' Check for the presence of an intercept in a formula or in a fitted #' model #' #' The presence of an intercept is checked using the formula which is #' either provided as the argument of the function or extracted from #' a fitted model. #' #' @param object a `formula`, a `Formula` or a fitted model (of class #' `plm` or `panelmodel`), #' @param rhs an integer (length > 1 is possible), indicating the parts of right #' hand sides of the formula to be evaluated for the presence of an #' intercept or `NULL` for all parts of the right hand side #' (relevant for the `Formula` and the `plm` methods), #' @param data default is `NULL` and only needs to be changes to a data set if #' the formula contains a dot (`.`) to allow evaluation of the dot, #' @param \dots further arguments. #' #' @return a logical #' @export has.intercept <- function(object, ...) { UseMethod("has.intercept") } #' @rdname has.intercept #' @export has.intercept.default <- function(object, data = NULL, ...) { has.intercept(formula(object), data = data, ...) } #' @rdname has.intercept #' @export has.intercept.formula <- function(object, data = NULL, ...) { attr(terms(object, data = data, ...), "intercept") == 1L } #' @rdname has.intercept #' @export has.intercept.Formula <- function(object, rhs = NULL, data = NULL, ...) { ## NOTE: returns a logical vector of the necessary length ## (which might be > 1) if (is.null(rhs)) rhs <- seq_along(attr(object, "rhs")) res <- sapply(rhs, function(x) { aform <- formula(object, lhs = 0, rhs = x) # expand the dot if any in all the parts except the first if (x > 1L) aform <- update(formula(object, lhs = 0, rhs = 1), aform, ...) has.intercept(aform, data = data) }) return(res) } #' @rdname has.intercept #' @export has.intercept.panelmodel <- function(object, ...) { object <- attr(model.frame(object), "formula") has.intercept(object) } #' @rdname has.intercept #' @export has.intercept.plm <- function(object, rhs = 1L, ...) { has.intercept(formula(object), rhs = rhs, ...) } pres <- function(x) { # pres.panelmodel ## extracts model residuals as pseries ## not necessary for plm models as residuals.plm returns a pseries, ## but used in residuals.pggls, residuals.pcce, residuals.pmg ## extract indices xindex <- unclass(attr(x$model, "index")) # unclass for speed groupind <- xindex[[1L]] timeind <- xindex[[2L]] # fix to allow operation with pggls, pmg # [TODO: one day, make this cleaner; with the describe framework?] if (!is.null(x$args$model)) maybe_fd <- x$args$model if (!is.null(attr(x, "pmodel")$model.name)) maybe_fd <- attr(x, "pmodel")$model.name # this line is currently needed to detect pggls models ## Achim's fix: reduce id and time index to accommodate first-differences model's number of observations if(exists("maybe_fd") && maybe_fd == "fd") { groupi <- as.numeric(groupind) ## make vector =1 on first obs in each group, 0 elsewhere selector <- groupi - c(0, groupi[-length(groupi)]) selector[1L] <- 1 # the first must always be 1 ## eliminate first obs in time for each group groupind <- groupind[!selector] timeind <- timeind[!selector] } resdata <- data.frame(ee = x$residuals, ind = groupind, tind = timeind) pee <- pdata.frame(resdata, index = c("ind", "tind")) pres <- pee$ee return(pres) } # punbalancedness: measures for unbalancedness of a panel data set as # defined in Ahrens/Pincus (1981), p. 228 (gamma and # nu) and for nested panel structures as in Baltagi/Song/Jung (2001), pp. 368-369 . # # Ahrens/Pincus (1981), On Two Measures of Unbalancedness in a One-Way Model # and Their Relation to Efficiency, Biometrical Journal, Vol. 23, pp. 227-235. # # Baltagi/Song/Jung (2001), The unbalanced nested error component regression model, # Journal of Econometrics, Vol. 101, pp. 357-381 #' Measures for Unbalancedness of Panel Data #' #' This function reports unbalancedness measures for panel data as #' defined in \insertCite{AHRE:PINC:81;textual}{plm} and #' \insertCite{BALT:SONG:JUNG:01;textual}{plm}. #' #' `punbalancedness` returns measures for the unbalancedness of a #' panel data set. #' #' - For two-dimensional data:\cr The two measures of #' \insertCite{AHRE:PINC:81;textual}{plm} are calculated, called #' "gamma" (\eqn{\gamma}) and "nu" (\eqn{\nu}). #' #' If the panel data are balanced, both measures equal 1. The more #' "unbalanced" the panel data, the lower the measures (but > 0). The #' upper and lower bounds as given in \insertCite{AHRE:PINC:81;textual}{plm} #' are:\cr #' \eqn{0 < \gamma, \nu \le 1}, and for \eqn{\nu} more precisely #' \eqn{\frac{1}{n} < \nu \le 1}{1/n < \nu \le 1}, with \eqn{n} being #' the number of individuals (as in `pdim(x)$nT$n`). #' #' - For nested panel data (meaning including a grouping variable):\cr #' The extension of the above measures by #' \insertCite{BALT:SONG:JUNG:01;textual}{plm}, p. 368, are #' calculated:\cr #' #' - c1: measure of subgroup (individual) unbalancedness, #' - c2: measure of time unbalancedness, #' - c3: measure of group unbalancedness due to each group size. #' #' Values are 1 if the data are balanced and become smaller as the #' data become more unbalanced. #' #' #' An application of the measure "gamma" is found in e. g. #' \insertCite{BALT:SONG:JUNG:01;textual}{plm}, pp. 488-491, and #' \insertCite{BALT:CHAN:94;textual}{plm}, pp. 78--87, where it is #' used to measure the unbalancedness of various unbalanced data sets #' used for Monte Carlo simulation studies. Measures c1, c2, c3 are #' used for similar purposes in #' \insertCite{BALT:SONG:JUNG:01;textual}{plm}. #' #' In the two-dimensional case, `punbalancedness` uses output of #' [pdim()] to calculate the two unbalancedness measures, so inputs to #' `punbalancedness` can be whatever `pdim` works on. `pdim` returns #' detailed information about the number of individuals and time #' observations (see [pdim()]). #' #' @param x a `panelmodel`, a `data.frame`, or a `pdata.frame` object, #' @param index only relevant for `data.frame` interface, for details #' see [pdata.frame()], #' @param \dots further arguments. #' @return A named numeric containing either two or three entries, #' depending on the panel structure inputted: #' #' - For the two-dimensional panel structure, the entries are called #' `gamma` and `nu`, #' #' - For a nested panel structure, the entries are called `c1`, `c2`, #' `c3`. #' #' @note Calling `punbalancedness` on an estimated `panelmodel` object #' and on the corresponding `(p)data.frame` used for this #' estimation does not necessarily yield the same result (true #' also for `pdim`). When called on an estimated `panelmodel`, the #' number of observations (individual, time) actually used for #' model estimation are taken into account. When called on a #' `(p)data.frame`, the rows in the `(p)data.frame` are #' considered, disregarding any `NA` values in the dependent or #' independent variable(s) which would be dropped during model #' estimation. #' @export #' @author Kevin Tappe #' @seealso [nobs()], [pdim()], [pdata.frame()] #' @references #' #' \insertRef{AHRE:PINC:81}{plm} #' #' \insertRef{BALT:CHAN:94}{plm} #' #' \insertRef{BALT:SONG:JUNG:01}{plm} #' #' \insertRef{BALT:SONG:JUNG:02}{plm} #' #' @keywords attribute #' @examples #' #' # Grunfeld is a balanced panel, Hedonic is an unbalanced panel #' data(list=c("Grunfeld", "Hedonic"), package="plm") #' #' # Grunfeld has individual and time index in first two columns #' punbalancedness(Grunfeld) # c(1,1) indicates balanced panel #' pdim(Grunfeld)$balanced # TRUE #' #' # Hedonic has individual index in column "townid" (in last column) #' punbalancedness(Hedonic, index="townid") # c(0.472, 0.519) #' pdim(Hedonic, index="townid")$balanced # FALSE #' #' # punbalancedness on estimated models #' plm_mod_pool <- plm(inv ~ value + capital, data = Grunfeld) #' punbalancedness(plm_mod_pool) #' #' plm_mod_fe <- plm(inv ~ value + capital, data = Grunfeld[1:99, ], model = "within") #' punbalancedness(plm_mod_fe) #' #' # replicate results for panel data design no. 1 in Ahrens/Pincus (1981), p. 234 #' ind_d1 <- c(1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5) #' time_d1 <- c(1,2,3,1,2,3,1,2,3,4,5,1,2,3,4,5,6,7,1,2,3,4,5,6,7) #' df_d1 <- data.frame(individual = ind_d1, time = time_d1) #' punbalancedness(df_d1) # c(0.868, 0.887) #' #' # example for a nested panel structure with a third index variable #' # specifying a group (states are grouped by region) and without grouping #' data("Produc", package = "plm") #' punbalancedness(Produc, index = c("state", "year", "region")) #' punbalancedness(Produc, index = c("state", "year")) #' #' @rdname punbalancedness #' @export punbalancedness <- function(x, ...) { UseMethod("punbalancedness") } #' @export punbalancedness.default <- function(x, ...) { ii <- index(x) if(!is.index(ii)) stop("no valid index found for input object 'x'") if (ncol(ii) == 2L) { ## original Ahrens/Pincus (1981) pdim <- pdim(x, ...) N <- pdim$nT$n # no. of individuals Totalobs <- pdim$nT$N # no. of total observations Ti <- pdim$Tint$Ti Tavg <- sum(Ti)/N r1 <- N / (Tavg * sum(1/Ti)) r2 <- 1 / (N * (sum( (Ti/Totalobs)^2))) result <- c(gamma = r1, nu = r2) } else { if (ncol(ii) == 3L) { ## extension to nested model with additional group variable ## Baltagi/Song/Jung (2001), pp. 368-369 ii <- unclass(ii) # unclass for speed ids <- ii[[1L]] tss <- ii[[2L]] gps <- ii[[3L]] Tis <- unique(data.frame(tss, gps)) Tis <- collapse::qtable(Tis$gps) # no of max time periods per group Nis <- unique(data.frame(ids, gps)) Nis <- collapse::qtable(Nis$gps) # no of individuals per group M <- length(unique(gps)) # no of unique groups Nbar <- sum(Nis)/M Tbar <- sum(Tis)/M c1 <- M / (Nbar * sum(1/Nis)) c2 <- M / (Tbar * sum(1/Tis)) c3 <- M / (sum(Nis * Tis)/M * sum(1/(Nis*Tis))) result <- (c(c1 = c1, c2 = c2, c3 = c3)) } else stop(paste0("unsupported number of dimensions: ", ncol(ii))) } result } #' @rdname punbalancedness #' @export punbalancedness.pdata.frame <- function(x, ...) { punbalancedness.default(x, ...) } #' @rdname punbalancedness #' @export punbalancedness.data.frame <- function(x, index = NULL, ...) { x <- pdata.frame(x, index = index, ...) punbalancedness.default(x, ...) } #' @rdname punbalancedness #' @export punbalancedness.panelmodel <- function(x, ...) { punbalancedness.default(x, ...) } myvar <- function(x){ ## non-exported x.na <- is.na(x) if(anyNA(x.na)) x <- x[!x.na] n <- length(x) if(n <= 1L) { if(n == 0L) z <- NA if(n == 1L) z <- 0 } else { z <- if(!(is.factor(x) || is.character(x))) var(x) else !all(collapse::fduplicated(x, all = FALSE)[-1L]) } z } #' Check for Cross-Sectional and Time Variation #' #' This function checks for each variable of a panel if it varies #' cross-sectionally and over time. #' #' For (p)data.frame and matrix interface: All-`NA` columns are removed #' prior to calculation of variation due to coercing to pdata.frame #' first. #' #' @aliases pvar #' @param x a `(p)data.frame` or a `matrix`, #' @param index see [pdata.frame()], #' @param \dots further arguments. #' @return An object of class `pvar` containing the following #' elements: #' #' \item{id.variation}{a logical vector with `TRUE` values if the #' variable has individual variation, `FALSE` if not,} #' #' \item{time.variation}{a logical vector with `TRUE` values if the #' variable has time variation, `FALSE` if not,} #' #' \item{id.variation_anyNA}{a logical vector with `TRUE` values if #' the variable has at least one individual-time combination with all #' `NA` values in the individual dimension for at least one time period, #' `FALSE` if not,} #' #' \item{time.variation_anyNA}{a logical vector with `TRUE` values if #' the variable has at least one individual-time combination with all #' `NA` values in the time dimension for at least one individual, #' `FALSE` if not.} #' #' @note `pvar` can be time consuming for ``big'' panels. As a fast alternative #' [collapse::varying()] from package \CRANpkg{collapse} could be used. #' @export #' @author Yves Croissant #' @seealso [pdim()] to check the dimensions of a 'pdata.frame' (and #' other objects), #' @keywords attribute #' @examples #' #' #' # Gasoline contains two variables which are individual and time #' # indexes and are the first two variables #' data("Gasoline", package = "plm") #' pvar(Gasoline) #' #' # Hedonic is an unbalanced panel, townid is the individual index; #' # the drop.index argument is passed to pdata.frame #' data("Hedonic", package = "plm") #' pvar(Hedonic, "townid", drop.index = TRUE) #' #' # same using pdata.frame #' Hed <- pdata.frame(Hedonic, "townid", drop.index = TRUE) #' pvar(Hed) #' #' # Gasoline with pvar's matrix interface #' Gasoline_mat <- as.matrix(Gasoline) #' pvar(Gasoline_mat) #' pvar(Gasoline_mat, index=c("country", "year")) #' pvar <- function(x, ...){ UseMethod("pvar") } #' @export pvar.default <- function(x, id, time, ...){ name.var <- names(x) len <- length(x) time.variation <- rep(TRUE, len) id.variation <- rep(TRUE, len) time.variation_anyNA <- rep(FALSE, len) id.variation_anyNA <- rep(FALSE, len) lid <- split(x, id) # these split() functions seem particularly slow ltime <- split(x, time) if(is.list(x)){ if(len == 1L){ # time variation temp_time.var <- sapply(lid, function(x) sapply(x, myvar)) temp_time.var_sumNoVar <- sum(temp_time.var == 0, na.rm = TRUE) # number of non-varying id-time comb. (without all NA groups) temp_time.var_sumNA <- sum(is.na(temp_time.var)) # number of all-NA groups temp_time.varResult <- temp_time.var_sumNoVar + temp_time.var_sumNA time.variation <- temp_time.varResult != length(lid) # no variation if (no. non-varying + no. all-NA) == number of groups time.variation_anyNA <- temp_time.var_sumNA > 0 # indicates if at least one id-time comb is all NA # id variation temp_id.var <- sapply(ltime, function(x) sapply(x, myvar)) temp_id.var_sumNoVar <- sum(temp_id.var == 0, na.rm = TRUE) temp_id.var_sumNA <- sum(is.na(temp_id.var)) temp_id.varResult <- temp_id.var_sumNoVar + temp_id.var_sumNA id.variation <- temp_id.varResult != length(ltime) id.variation_anyNA <- temp_id.var_sumNA > 0 } else{ # time variation temp_time.var <- sapply(lid, function(x) sapply(x, myvar)) temp_time.var_sumNoVar <- apply(temp_time.var == 0, 1, sum, na.rm = TRUE) temp_time.var_sumNA <- apply(is.na(temp_time.var), 1, sum) temp_time.varResult <- temp_time.var_sumNoVar + temp_time.var_sumNA time.variation <- temp_time.varResult != length(lid) time.variation_anyNA <- temp_time.var_sumNA > 0 # id variation temp_id.var <- sapply(ltime, function(x) sapply(x, myvar)) temp_id.var_sumNoVar <- apply(temp_id.var == 0, 1, sum, na.rm = TRUE) temp_id.var_sumNA <- apply(is.na(temp_id.var), 1, sum) temp_id.varResult <- temp_id.var_sumNoVar + temp_id.var_sumNA id.variation <- temp_id.varResult != length(ltime) id.variation_anyNA <- temp_id.var_sumNA > 0 } } else{ # not a list (not a data.frame, pdata.frame) - try our best for that unknown data structure # time variation temp_time.var <- sapply(lid, function(x) sapply(x, myvar)) temp_time.var_sumNoVar <- sum(temp_time.var == 0, na.rm = TRUE) temp_time.var_sumNA <- sum(is.na(temp_time.var)) temp_time.varResult <- temp_time.var_sumNoVar + temp_time.var_sumNA time.variation <- temp_time.varResult != length(lid) time.variation_anyNA <- temp_time.var_sumNA > 0 # id variation temp_id.var <- sapply(ltime, function(x) sapply(x, myvar)) temp_id.var_sumNoVar <- sum(temp_id.var == 0, na.rm = TRUE) temp_id.var_sumNA <- sum(is.na(temp_id.var)) temp_id.varResult <- temp_id.var_sumNoVar + temp_id.var_sumNA id.variation <- temp_id.varResult != length(ltime) id.variation_anyNA <- temp_id.var_sumNA > 0 } # make 'pvar' object names(id.variation) <- names(time.variation) <- names(id.variation_anyNA) <- names(time.variation_anyNA) <- name.var dim.var <- list(id.variation = id.variation, time.variation = time.variation, id.variation_anyNA = id.variation_anyNA, time.variation_anyNA = time.variation_anyNA) class(dim.var) <- "pvar" return(dim.var) } #' @rdname pvar #' @export pvar.matrix <- function(x, index = NULL, ...){ x <- pdata.frame(as.data.frame(x), index, ...) pvar(x) } #' @rdname pvar #' @export pvar.data.frame <- function(x, index = NULL, ...){ x <- pdata.frame(x, index, ...) pvar(x) } #' @rdname pvar #' @export pvar.pdata.frame <- function(x, ...){ index <- unclass(attr(x, "index")) # unclass for speed pvar.default(x, index[[1L]], index[[2L]]) } #' @rdname pvar #' @export pvar.pseries <- function(x, ...){ # use drop.index = TRUE so that the index columns' # variations are not evaluated: pdfx <- pseries2pdataframe(x, drop.index = TRUE) # give the variable in pdata.frame the original name, so it prints nicely substx <- substitute(x) len <- length(substx) names(pdfx) <- paste(substx)[len] pvar.pdata.frame(pdfx) } #' @rdname pvar #' @export print.pvar <- function(x, ...){ varnames <- names(x$time.variation) if(any(!x$time.variation)){ var <- varnames[x$time.variation == FALSE] # if (!is.null(y)) var <- var[-which(var==y$id)] if(length(var)!=0) cat(paste("no time variation: ", paste(var,collapse=" "),"\n")) } if(any(!x$id.variation)){ var <- varnames[x$id.variation == FALSE] # if (!is.null(y)) var <- var[-which(var==y$time)] if(length(var)!=0) cat(paste("no individual variation:", paste(var,collapse=" "),"\n")) } # any individual-time combinations all NA? if(any(x$time.variation_anyNA)){ var_anyNA <- varnames[x$time.variation_anyNA] if(length(var_anyNA)!=0) cat(paste("all NA in time dimension for at least one individual: ", paste(var_anyNA,collapse=" "),"\n")) } if(any(x$id.variation_anyNA)){ var_anyNA <- varnames[x$id.variation_anyNA] if(length(var_anyNA)!=0) cat(paste("all NA in ind. dimension for at least one time period:", paste(var_anyNA,collapse=" "),"\n")) } invisible(x) } #' Create a Dummy Matrix #' #' Contrast-coded dummy matrix (treatment coding) created from a factor #' #' This function creates a matrix of dummies from the levels of a factor in #' treatment coding. In model estimations, it is usually preferable to not #' create the dummy matrix prior to estimation but to simply specify a factor #' in the formula and let the estimation function handle the creation of the #' dummies. #' #' This function is merely a convenience wrapper around `stats::contr.treatment` #' to ease the dummy matrix creation process shall the dummy matrix be explicitly #' required. See Examples for a use case in LSDV (least squares dummy variable) #' model estimation. #' #' The default method uses a factor as main input (or something coercible to a #' factor) to derive the dummy matrix from. Methods for data frame and pdata.frame #' are available as well and have the additional argument `col` to specify the #' the column from which the dummies are created; both methods merge the dummy #' matrix to the data frame/pdata.frame yielding a ready-to-use data set. #' See also Examples for use cases. #' #' @param x a factor from which the dummies are created (x is coerced to #' factor if not yet a factor) for the default method or a data #' data frame/pdata.frame for the respective method. #' @param base integer or character, specifies the reference level (base), if #' integer it refers to position in `levels(x)`, if character the name #' of a level, #' @param base.add logical, if `TRUE` the reference level (base) is added #' to the return value as first column, if `FALSE` the reference #' level is not included. #' @param col character (only for the data frame and pdata.frame methods), to #' specify the column which is used to derive the dummies from, #' @param \dots further arguments. #' #' @return For the default method, a matrix containing the contrast-coded #' dummies (treatment coding), #' dimensions are n x n where `n = length(levels(x))` if argument #' `base.add = TRUE` or `n = length(levels(x)-1)` if `base.add = FALSE`; #' for the data frame and pdata.frame method, a data frame or pdata.frame, #' respectively, with the dummies appropriately merged to the input as #' last columns (column names are derived from the name of the column #' used to create the dummies and its levels). #' @author Kevin Tappe #' @importFrom stats contr.treatment #' @export #' @seealso [stats::contr.treatment()], [stats::contrasts()] #' @keywords manip #' @examples #' library(plm) #' data("Grunfeld", package = "plm") #' Grunfeld <- Grunfeld[1:100, ] # reduce data set (down to 5 firms) #' #' ## default method #' make.dummies(Grunfeld$firm) # gives 5 x 5 matrix (5 firms, base level incl.) #' make.dummies(Grunfeld$firm, base = 2L, base.add = FALSE) # gives 5 x 4 matrix #' #' ## data frame method #' Grun.dummies <- make.dummies(Grunfeld, col = "firm") #' #' ## pdata.frame method #' pGrun <- pdata.frame(Grunfeld) #' pGrun.dummies <- make.dummies(pGrun, col = "firm") #' #' ## Model estimation: #' ## estimate within model (individual/firm effects) and LSDV models (firm dummies) #' # within model: #' plm(inv ~ value + capital, data = pGrun, model = "within") #' #' ## LSDV with user-created dummies by make.dummies: #' form_dummies <- paste0("firm", c(1:5), collapse = "+") #' form_dummies <- formula(paste0("inv ~ value + capital + ", form_dummies)) #' plm(form_dummies, data = pGrun.dummies, model = "pooling") # last dummy is dropped #' #' # LSDV via factor(year) -> let estimation function generate dummies: #' plm(inv ~ value + capital + factor(firm), data = pGrun, model = "pooling") make.dummies <- function(x, ...){ UseMethod("make.dummies") } #' @rdname make.dummies #' @export make.dummies.default <- function(x, base = 1L, base.add = TRUE, ...) { stopifnot(is.numeric(base) || is.character(base)) if(is.numeric(base)) if(round(base) != base) stop("Argument 'base' specified as numeric but is not integer") if(!is.factor(x)) x <- factor(x) lvl <- levels(x) if(is.character(base)) { pos <- match(base, lvl) if(is.na(pos)) stop(paste0("argument 'base' specified as character but value \"", base, "\", is not in levels(x)")) base <- pos } dummies <- contr.treatment(lvl, base = base) # if requested, add reference level to dummy matrix in 1st position if(base.add) { lvl.base <- levels(x)[base] dummies <- cbind(c(1, rep(0, NROW(dummies)-1)), dummies) colnames(dummies) <- c(lvl.base, colnames(dummies)[-1L]) } dummies # is a matrix } #' @rdname make.dummies #' @export make.dummies.data.frame <- function(x, col, base = 1L, base.add = TRUE, ...) { stopifnot(inherits(col, "character")) dum.mat <- make.dummies.default(x[ , col], base, base.add) # dummy matrix colnames(dum.mat) <- paste0(col, colnames(dum.mat)) dum.df <- data.frame(cbind("merge.col" = rownames(dum.mat), dum.mat)) merge(x, dum.df, by.x = col, by.y = "merge.col", sort = FALSE) } #' @rdname make.dummies #' @export make.dummies.pdata.frame <- function(x, col, base = 1L, base.add = TRUE, ...) { stopifnot(inherits(col, "character")) # idx.pos <- pos.index(x) # drop.idx <- anyNA(idx.pos) idx <- attr(x, "index") res <- make.dummies.data.frame(x, col, base, base.add) # add back pdata.frame features (assumption is: merge did not change order of original data.frame) attr(res, "index") <- idx class(res) <- c("pdata.frame", class(res)) res } gettvalue <- function(x, coefname) { ## non-exported ## helper function to extract one or more t value(s) ## (coef/s.e.) for a coefficient from model object useful if one wants ## to avoid the computation of a whole lot of values with summary() # x: model object (usually class plm or lm) coefname: character # indicating name(s) of coefficient(s) for which the t value(s) is # (are) requested # return value: named numeric vector of length == length(coefname) # with requested t value(s) beta <- coef(x)[coefname] se <- sqrt(diag(vcov(x))[coefname]) tvalue <- beta / se return(tvalue) } # describe function: extract characteristics of plm and other model objects describe <- function(x, what = c("model", "effect", "random.method", "inst.method", "transformation", "ht.method")){ what <- match.arg(what) cl <- x$args switch(what, "model" = if(!is.null(cl$model)) cl$model else "within", "effect" = if(!is.null(cl$effect)) cl$effect else "individual", "random.method" = if(!is.null(cl$random.method)) cl$random.method else "swar", "inst.method" = if(!is.null(cl$inst.method)) cl$inst.method else "bvk", "transformation" = if(!is.null(cl$transformation)) cl$transformation else "d", "ht.method" = if(!is.null(cl$ht.method)) cl$ht.method else "ht" ) } plm/R/tool_ercomp.R0000644000176200001440000011005114457212202013705 0ustar liggesusers #' Estimation of the error components #' #' This function enables the estimation of the variance components of a panel #' model. #' #' #' @aliases ercomp #' @param object a `formula` or a `plm` object, #' @param data a `data.frame`, #' @param effect the effects introduced in the model, see [plm()] for #' details, #' @param method method of estimation for the variance components, see #' [plm()] for details, #' @param models the models used to estimate the variance components #' (an alternative to the previous argument), #' @param dfcor a numeric vector of length 2 indicating which degree #' of freedom should be used, #' @param index the indexes, #' @param x an `ercomp` object, #' @param digits digits, #' @param \dots further arguments. #' @return An object of class `"ercomp"`: a list containing \itemize{ #' \item `sigma2` a named numeric with estimates of the variance #' components, \item `theta` contains the parameter(s) used for #' the transformation of the variables: For a one-way model, a #' numeric corresponding to the selected effect (individual or #' time); for a two-ways model a list of length 3 with the #' parameters. In case of a balanced model, the numeric has length #' 1 while for an unbalanced model, the numerics' length equal the #' number of observations. } #' @export #' @author Yves Croissant #' @seealso [plm()] where the estimates of the variance components are #' used if a random effects model is estimated #' @references #' #' \insertRef{AMEM:71}{plm} #' #' \insertRef{NERLO:71}{plm} #' #' \insertRef{SWAM:AROR:72}{plm} #' #' \insertRef{WALL:HUSS:69}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' # an example of the formula method #' ercomp(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, #' method = "walhus", effect = "time") #' # same with the plm method #' z <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, random.method = "walhus", #' effect = "time", model = "random") #' ercomp(z) #' # a two-ways model #' ercomp(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, #' method = "amemiya", effect = "twoways") #' ercomp <- function(object, ...){ UseMethod("ercomp") } #' @rdname ercomp #' @export ercomp.plm <- function(object, ...){ model <- describe(object, "model") if (model != "random") stop("ercomp only relevant for random models") object$ercomp } #' @rdname ercomp #' @export ercomp.pdata.frame <- function(object, effect = c("individual", "time", "twoways", "nested"), method = NULL, models = NULL, dfcor = NULL, index = NULL, ...){ data <- object object <- attr(data, "formula") ercomp(object, data, effect = effect, method = method, models = models, dfcor = dfcor, index = index, ...) } #' @rdname ercomp #' @export ercomp.formula <- function(object, data, effect = c("individual", "time", "twoways", "nested"), method = NULL, models = NULL, dfcor = NULL, index = NULL, ...){ effect <- match.arg(effect) if (! inherits(object, "Formula")) object <- as.Formula(object) # if the data argument is not a pdata.frame, create it using plm if (! inherits(data, "pdata.frame")) data <- plm(object, data, model = NA, index = index) if(is.null(attr(data, "terms"))) data <- model.frame(data, object) # check whether the panel is balanced balanced <- is.pbalanced(data) # method and models arguments can't be both set if (! is.null(method) && ! is.null(models)) stop("you can't use both, the 'method' and the 'models' arguments") # method and models arguments aren't set, use swar if (is.null(method) && is.null(models)) method <- "swar" # dfcor is set, coerce it to a length 2 vector if necessary if (! is.null(dfcor)){ if (length(dfcor) > 2L) stop("dfcor length should be at most 2") if (length(dfcor) == 1L) dfcor <- rep(dfcor, 2L) if (! balanced && any(dfcor != 3)) stop("dfcor should equal 3 for unbalanced panels") } # we use later a general expression for the three kinds of effects, # select the relevant lines therows <- switch(effect, "individual" = 1:2, "time" = c(1, 3), "twoways" = 1:3) if(! is.null(method) && method == "nerlove") { ## special case Nerlove estimator with early exit if (effect == "nested") stop("nested random effect model not implemented for Nerlove's estimator") est <- plm.fit(data, model = "within", effect = effect) pdim <- pdim(data) N <- pdim$nT$n TS <- pdim$nT$T O <- pdim$nT$N NTS <- N * (effect != "time") + TS * (effect != "individual") - 1 * (effect == "twoways") s2nu <- deviance(est) / O # NB: Nerlove takes within residual sums of squares divided by #obs without df correction (Baltagi (2013), p. 23/45) s2eta <- s2mu <- NULL if(balanced) { if (effect != "time") s2eta <- as.numeric(crossprod(fixef(est, type = "dmean", effect = "individual"))) / (N - 1) if (effect != "individual") s2mu <- as.numeric(crossprod(fixef(est, type = "dmean", effect = "time"))) / (TS - 1) sigma2 <- c(idios = s2nu, id = s2eta, time = s2mu) theta <- list() if (effect != "time") theta$id <- (1 - (1 + TS * sigma2["id"] / sigma2["idios"]) ^ (-0.5)) if (effect != "individual") theta$time <- (1 - (1 + N * sigma2["time"] / sigma2["idios"]) ^ (-0.5)) if (effect == "twoways") { theta$total <- theta$id + theta$time - 1 + (1 + N * sigma2["time"] / sigma2["idios"] + TS * sigma2["id"] / sigma2["idios"]) ^ (-0.5) names(theta$total) <- "total" # tweak for numerical precision: # if either theta$id or theta$time is 0 => theta$total must be zero # but in calculation above some precision is lost, so force to zero if( isTRUE(all.equal(sigma2[["time"]], 0, check.attributes = FALSE)) || isTRUE(all.equal(sigma2[["id"]], 0, check.attributes = FALSE))) theta$total <- 0 } } else { # Nerlove unbalanced as in Cottrell (2017), gretl working paper #4 # -> use weighting # (albeit the formula for unbalanced panels reduces to original # Nerlove formula for balanced data, we keep it separated) if (effect != "time") s2eta <- sum( (fixef(est, type = "dmean", effect = "individual"))^2 * pdim$Tint$Ti / pdim$nT$N) * (pdim$nT$n/(pdim$nT$n-1)) if (effect != "individual") s2mu <- sum( (fixef(est, type = "dmean", effect = "time"))^2 * pdim$Tint$nt / pdim$nT$N) * (pdim$nT$T/(pdim$nT$T-1)) sigma2 <- c(idios = s2nu, id = s2eta, time = s2mu) theta <- list() # Tns, Nts: full length xindex <- unclass(index(data)) # unclass for speed ids <- xindex[[1L]] tss <- xindex[[2L]] Tns <- pdim$Tint$Ti[as.character(ids)] Nts <- pdim$Tint$nt[as.character(tss)] if (effect != "time") theta$id <- (1 - (1 + Tns * sigma2["id"] / sigma2["idios"]) ^ (-0.5)) if (effect != "individual") theta$time <- (1 - (1 + Nts * sigma2["time"] / sigma2["idios"]) ^ (-0.5)) if (effect == "twoways") { theta$total <- theta$id + theta$time - 1 + (1 + Nts * sigma2["time"] / sigma2["idios"] + Tns * sigma2["id"] / sigma2["idios"]) ^ (-0.5) names(theta$total) <- paste0(names(theta$id), "-", names(theta$time)) # tweak for numerical precision: # if either theta$id or theta$time is 0 => theta$total must be zero # but in calculation above some precision is lost, so force to zero if( isTRUE(all.equal(sigma2[["time"]], 0, check.attributes = FALSE)) || isTRUE(all.equal(sigma2[["id"]], 0, check.attributes = FALSE))) theta$total <- 0 } } if (effect != "twoways") theta <- theta[[1L]] result <- list(sigma2 = sigma2, theta = theta) result <- structure(result, class = "ercomp", balanced = balanced, effect = effect) return(result) } ## end Nerlove case if (! is.null(method) && method == "ht"){ ## special case HT with early exit pdim <- pdim(data) N <- pdim$nT$n TS <- pdim$nT$T O <- pdim$nT$N wm <- plm.fit(data, effect = "individual", model = "within") X <- model.matrix(data, rhs = 1) ixid <- unclass(index(data))[[1L]] # unclass for speed charixid <- as.character(ixid) constants <- apply(X, 2, function(x) all(tapply(x, ixid, is.constant))) FES <- fixef(wm, type = "dmean")[charixid] XCST <- X[ , constants, drop = FALSE] ra <- if(length(object)[2L] > 1L){ # with instruments W1 <- model.matrix(data, rhs = 2) twosls(FES, XCST, W1, lm.type = "lm.fit") } else{ # without instruments lm.fit(XCST, FES) } s2nu <- deviance(wm) / (O - N) s21 <- as.numeric(crossprod(ra$residuals)) / N # == deviance(ra) / N s2eta <- (s21 - s2nu) / TS sigma2 <- c(idios = s2nu, id = s2eta) theta <- (1 - (1 + TS * sigma2["id"] / sigma2["idios"]) ^ (-0.5)) result <- list(sigma2 = sigma2, theta = theta) result <- structure(result, class = "ercomp", balanced = balanced, effect = effect) return(result) } ## end HT # 'method' argument is used, check its validity and set the relevant # models and dfcor if (! is.null(method)){ if (! method %in% c("swar", "walhus", "amemiya")) stop(paste(method, "is not a relevant method")) if (method == "swar") models <- c("within", "Between") if (method == "walhus") models <- c("pooling", "pooling") if (method == "amemiya") models <- c("within", "within") if (is.null(dfcor)){ if (balanced){ dfcor <- switch(method, "swar" = c(2L, 2L), "walhus" = c(1L, 1L), "amemiya" = c(1L, 1L)) } else dfcor <- c(3L, 3L) } } else{ # the between estimator is only relevant for the second # quadratic form if (models[1L] %in% c("Between", "between")) stop("the between estimator is only relevant for the between quadratic form") # if the argument is of length 2, duplicate the second value if (length(models) == 2L) models <- c(models[1L], rep(models[2L], 2L)) # if the argument is of length 1, triple its value if (length(models) == 1L) models <- c(rep(models, 3L)) # set one of the last two values to NA in the case of one way # model if (effect == "individual") models[3L] <- NA if (effect == "time") models[2L] <- NA # default value of dfcor 3,3 if (is.null(dfcor)) dfcor <- c(3L, 3L) } # The nested error component model if (effect == "nested"){ xindex <- unclass(attr(data, "index")) # unclass for speed if(length(xindex) < 3L) stop("the nested error component model requires three-indexed data.") ids <- xindex[[1L]] tss <- xindex[[2L]] gps <- xindex[[3L]] G <- length(unique(gps)) Z <- model.matrix(data, model = "pooling") X <- model.matrix(data, model = "pooling", cstcovar.rm = "intercept") y <- pmodel.response(data, model = "pooling", effect = "individual") O <- nrow(Z) K <- ncol(Z) - (ncol(Z) - ncol(X)) pdim <- pdim(data) N <- pdim$nT$n TS <- pdim$nT$T TG <- unique(data.frame(tss, gps)) TG <- collapse::qtable(TG$gps) NG <- unique(data.frame(ids, gps)) NG <- collapse::qtable(NG$gps) Tn <- pdim$Tint$Ti Nt <- pdim$Tint$nt quad <- vector(length = 3L, mode = "numeric") M <- matrix(NA_real_, nrow = 3L, ncol = 3L, dimnames = list(c("w", "id", "gp"), c("nu", "eta", "lambda"))) if (method == "walhus"){ estm <- plm.fit(data, model = "pooling", effect = "individual") hateps <- resid(estm, model = "pooling") Between.hateps.group <- Between(hateps, effect = "group") quad <- c(crossprod(Within(hateps, effect = "individual")), crossprod(Between(hateps, effect = "individual") - Between.hateps.group), crossprod(Between.hateps.group)) ZSeta <- model.matrix(estm, model = "Sum", effect = "individual") ZSlambda <- Sum(Z, effect = "group") CPZM <- solve(crossprod(Z)) CPZSeta <- crossprod(ZSeta, Z) CPZSlambda <- crossprod(ZSlambda, Z) Between.Z.ind <- Between(Z, "individual") Between.Z.group <- Between(Z, "group") Between.Z.ind_minus_Between.Z.group <- Between.Z.ind - Between.Z.group CPZW <- crossprod(Z - Between.Z.ind) CPZBlambda <- crossprod(Between.Z.group) CPZM.CPZW <- crossprod(CPZM, CPZW) CPZM.CPZBlamda <- crossprod(CPZM, CPZBlambda) CPZM.CPZSeta <- crossprod(CPZM, CPZSeta) CPZM.CPZSlambda <- crossprod(CPZM, CPZSlambda) CPZM.CPZW.CPZM.CPZSeta <- crossprod(t(CPZM.CPZW), CPZM.CPZSeta) CPZM.CPZW.CPZM.CPZSlambda <- crossprod(t(CPZM.CPZW), CPZM.CPZSlambda) CPZBetaBlambda <- crossprod(Between.Z.ind_minus_Between.Z.group) CPZBetaBlambdaSeta <- crossprod(Between.Z.ind_minus_Between.Z.group, ZSeta) CPZBlambdaSeta <- crossprod(Between.Z.group, ZSeta) CPZM.CPZBetaBlambda <- crossprod(CPZM, CPZBetaBlambda) CPZM.CPZBlambda <- crossprod(CPZM, CPZBlambda) M["w", "nu"] <- O - N - trace(CPZM.CPZW) M["w", "eta"] <- trace(CPZM.CPZW.CPZM.CPZSeta) M["w", "lambda"] <- trace(CPZM.CPZW.CPZM.CPZSlambda) M["id", "nu"] <- N - G - trace(CPZM.CPZBetaBlambda) M["id", "eta"] <- O - sum(TG) - 2 * trace(crossprod(CPZM, CPZBetaBlambdaSeta)) + trace(crossprod(t(CPZM.CPZBetaBlambda), CPZM.CPZSeta)) M["id", "lambda"] <- trace(crossprod(t(CPZM.CPZBetaBlambda), CPZM.CPZSlambda)) M["gp", "nu"] <- G - trace(CPZM.CPZBlambda) M["gp", "eta"] <- sum(TG) - 2 * trace(crossprod(CPZM, CPZBlambdaSeta)) + trace(crossprod(t(CPZM.CPZBlambda), CPZM.CPZSeta)) M["gp", "lambda"] <- O - 2 * trace(CPZM.CPZSlambda) + trace(crossprod(t(CPZM.CPZBlambda), CPZM.CPZSlambda)) } if (method == "amemiya"){ estm <- plm.fit(data, effect = "individual", model = "within") hateps <- resid(estm, model = "pooling") Betweeen.hateps.group <- Between(hateps, effect = "group") XBlambda <- Between(X, "group") quad <- c(crossprod(Within(hateps, effect = "individual")), crossprod(Between(hateps, effect = "individual") - Betweeen.hateps.group), crossprod(Betweeen.hateps.group)) WX <- model.matrix(estm, model = "within", effect = "individual", cstcovar.rm = "all") XBetaBlambda <- Between(X, "individual") - XBlambda XBlambda <- t(t(XBlambda) - colMeans(XBlambda)) CPXBlambda <- crossprod(XBlambda) CPXM <- solve(crossprod(WX)) CPXBetaBlambda <- crossprod(XBetaBlambda) K <- ncol(WX) MK <- length(setdiff("(Intercept)", attr(WX, "constant"))) # Pas sur, a verifier KW <- ncol(WX) M["w", "nu"] <- O - N - K + MK M["w", "eta"] <- 0 M["w", "lambda"] <- 0 M["id", "nu"] <- N - G + trace(crossprod(CPXM, CPXBetaBlambda)) M["id", "eta"] <- O - sum(TG) M["id", "lambda"] <- 0 M["gp", "nu"] <- G - 1 + trace(crossprod(CPXM, CPXBlambda)) M["gp", "eta"] <- sum(TG) - sum(NG * TG ^ 2) / O M["gp", "lambda"] <- O - sum(NG ^ 2 * TG ^ 2) / O } if (method == "swar"){ yBetaBlambda <- pmodel.response(data, model = "Between", effect = "individual") - pmodel.response(data, model = "Between", effect = "group") ZBlambda <- Between(Z, "group") CPZBlambda.solve <- solve(crossprod(ZBlambda)) ZBetaBlambda <- Between(Z, "individual") - ZBlambda XBetaBlambda <- Between(X, "individual") - Between(X, "group") yBlambda <- pmodel.response(data, model = "Between", effect = "group") ZSeta <- Sum(Z, effect = "individual") ZSlambda <- Sum(Z, effect = "group") XSeta <- Sum(X, effect = "individual") estm1 <- plm.fit(data, effect = "individual", model = "within") estm2 <- lm.fit(ZBetaBlambda, yBetaBlambda) estm3 <- lm.fit(ZBlambda, yBlambda) quad <- c(crossprod(estm1$residuals), crossprod(estm2$residuals), crossprod(estm3$residuals)) M["w", "nu"] <- O - N - K M["w", "eta"] <- 0 M["w", "lambda"] <- 0 M["id", "nu"] <- N - G - K M["id", "eta"] <- O - sum(TG) - trace(crossprod(t(solve(crossprod(XBetaBlambda))), crossprod(XSeta, XBetaBlambda))) M["id", "lambda"] <- 0 M["gp", "nu"] <- G - K - 1 M["gp", "eta"] <- sum(TG) - trace(crossprod(t(CPZBlambda.solve), crossprod(ZBlambda, ZSeta))) M["gp", "lambda"] <- O - trace(crossprod(t(CPZBlambda.solve), crossprod(ZSlambda, Z))) } Gs <- as.numeric(collapse::qtable(gps)[as.character(gps)]) Tn <- as.numeric(collapse::qtable(ids)[as.character(ids)]) sigma2 <- as.numeric(solve(M, quad)) names(sigma2) <- c("idios", "id", "gp") theta <- list(id = 1 - sqrt(sigma2["idios"] / (Tn * sigma2["id"] + sigma2["idios"])), gp = sqrt(sigma2["idios"] / (Tn * sigma2["id"] + sigma2["idios"])) - sqrt(sigma2["idios"] / (Gs * sigma2["gp"] + Tn * sigma2["id"] + sigma2["idios"])) ) result <- list(sigma2 = sigma2, theta = theta) return(structure(result, class = "ercomp", balanced = balanced, effect = effect)) } ### END nested models # the "classic" error component model Z <- model.matrix(data) O <- nrow(Z) K <- ncol(Z) - 1L # INTERCEPT pdim <- pdim(data) N <- pdim$nT$n TS <- pdim$nT$T NTS <- N * (effect != "time") + TS * (effect != "individual") - 1L * (effect == "twoways") Tn <- pdim$Tint$Ti Nt <- pdim$Tint$nt # Estimate the relevant models estm <- vector(length = 3L, mode = "list") estm[[1L]] <- plm.fit(data, model = models[1L], effect = effect) # Check what is the second model secmod <- na.omit(models[2:3])[1L] if (secmod %in% c("within", "pooling")){ amodel <- plm.fit(data, model = secmod, effect = effect) if (effect != "time") estm[[2L]] <- amodel if (effect != "individual") estm[[3L]] <- amodel } if (secmod %in% c("between", "Between")){ if (effect != "time") estm[[2L]] <- plm.fit(data, model = secmod, effect = "individual") if (effect != "individual") estm[[3L]] <- plm.fit(data, model = secmod, effect = "time") # check if Between model was estimated correctly swar_Between_check(estm[[2L]], method) swar_Between_check(estm[[3L]], method) } KS <- vapply(estm, function(x) { length(x$coefficients) - "(Intercept)" %in% names(x$coefficients) }, FUN.VALUE = 0.0, USE.NAMES = FALSE) quad <- vector(length = 3L, mode = "numeric") # first quadratic form, within transformation hateps_w <- resid(estm[[1L]], model = "pooling") quad[1L] <- crossprod(Within(hateps_w, effect = effect)) # second quadratic form, between transformation if (effect != "time"){ hateps_id <- resid(estm[[2L]], model = "pooling") quad[2L] <- as.numeric(crossprod(Between(hateps_id, effect = "individual"))) } if (effect != "individual"){ hateps_ts <- resid(estm[[3L]], model = "pooling") quad[3L] <- as.numeric(crossprod(Between(hateps_ts, effect = "time"))) } M <- matrix(NA_real_, nrow = 3L, ncol = 3L, dimnames = list(c("w", "id", "ts"), c("nu", "eta", "mu"))) # Compute the M matrix : ## ( q_w) ( w_nu w_eta w_mu ) ( s^2_nu ) ## | | = | | | | ## ( q_bid) ( bid_nu bid_eta bid_mu ) ( s^2_eta) ## | | = | | | | ## (q_btime) ( btime_nu btime_eta btime_mu) ( s^2_mu ) # In case of balanced panels, simple denominators are # available if dfcor < 3 if (dfcor[1L] != 3L){ # The number of time series in the balanced panel is replaced # by the harmonic mean of the number of time series in case of # unbalanced panels barT <- if(balanced) TS else { length(Tn) / sum(Tn ^ (- 1)) } M["w", "nu"] <- O if (dfcor[1L] == 1L) M["w", "nu"] <- M["w", "nu"] - NTS if (dfcor[1L] == 2L) M["w", "nu"] <- M["w", "nu"] - NTS - KS[1L] if (effect != "time"){ M["w", "eta"] <- 0 M["id", "nu"] <- if(dfcor[2L] == 2L) { N - KS[2L] - 1L } else N M["id", "eta"] <- barT * M["id", "nu"] } if (effect != "individual"){ M["w", "mu"] <- 0 M["ts", "nu"] <- if(dfcor[2L] == 2L) { TS - KS[3L] - 1L } else TS M["ts", "mu"] <- N * M["ts", "nu"] } if (effect == "twoways") { M["ts", "eta"] <- M["id", "mu"] <- 0 } } else{ # General case, compute the unbiased version of the estimators if ("pooling" %in% models){ mp <- match("pooling", models) Z <- model.matrix(estm[[mp]], model = "pooling") CPZM <- solve(crossprod(Z)) if (effect != "time"){ ZSeta <- model.matrix(estm[[mp]], model = "Sum", effect = "individual") CPZSeta <- crossprod(ZSeta, Z) } if (effect != "individual"){ ZSmu <- model.matrix(estm[[mp]], model = "Sum", effect = "time") CPZSmu <- crossprod(ZSmu, Z) } } if (models[1L] == "pooling"){ ZW <- model.matrix(estm[[1L]], model = "within", effect = effect, cstcovar.rm = "none") CPZW <- crossprod(ZW) CPZM.CPZW <- crossprod(CPZM, CPZW) M["w", "nu"] <- O - NTS - trace(CPZM.CPZW) if (effect != "time"){ CPZM.CPZSeta <- crossprod(CPZM, CPZSeta) M["w", "eta"] <- trace(crossprod(t(CPZM.CPZW), CPZM.CPZSeta)) } if (effect != "individual"){ CPZM.CPZSmu <- crossprod(CPZM, CPZSmu) M["w", "mu"] <- trace(crossprod(t(CPZM.CPZW), CPZM.CPZSmu)) } } if (secmod == "pooling"){ if (effect != "time"){ ZBeta <- model.matrix(estm[[2L]], model = "Between", effect = "individual") CPZBeta <- crossprod(ZBeta) CPZM.CPZBeta <- crossprod(CPZM, CPZBeta) CPZM.CPZSeta <- crossprod(CPZM, CPZSeta) CPZM.CPZBeta.CPZM.CPZSeta <- crossprod(t(CPZM.CPZBeta), CPZM.CPZSeta) # == CPZM %*% CPZBeta %*% CPZM %*% CPZSeta M["id", "nu"] <- N - trace(CPZM.CPZBeta) M["id", "eta"] <- O - 2 * trace(CPZM.CPZSeta) + trace(CPZM.CPZBeta.CPZM.CPZSeta) } if (effect != "individual"){ ZBmu <- model.matrix(estm[[3L]], model = "Between", effect = "time") CPZBmu <- crossprod(ZBmu) CPZM.CPZBmu <- crossprod(CPZM, CPZBmu) CPZM.CPZSmu <- crossprod(CPZM, CPZSmu) CPZM.CPZBmu.CPZM.CPZSmu <- crossprod(t(CPZM.CPZBmu), CPZM.CPZSmu) M["ts", "nu"] <- TS - trace(CPZM.CPZBmu) M["ts", "mu"] <- O - 2 * trace(CPZM.CPZSmu) + trace(CPZM.CPZBmu.CPZM.CPZSmu) } if (effect == "twoways"){ CPZBmuSeta <- crossprod(ZBmu, ZSeta) CPZBetaSmu <- crossprod(ZBeta, ZSmu) CPZM.CPZBetaSmu <- crossprod(CPZM, CPZBetaSmu) CPZM.CPZBmuSeta <- crossprod(CPZM, CPZBmuSeta) ## These are already calc. by effect != "individual" and effect != "time" # CPZM.CPZSmu <- crossprod(CPZM, CPZSmu) # CPZM.CPZBmu <- crossprod(CPZM, CPZBmu) # CPZM.CPZBeta <- crossprod(CPZM, CPZBeta) # CPZM.CPZSeta <- crossprod(CPZM, CPZSeta) CPZM.CPZBeta.CPZM.CPZSmu <- crossprod(t(CPZM.CPZBeta), CPZM.CPZSmu) # == CPZM %*% CPZBeta %*% CPZM %*% CPZSmu CPZM.CPZBmu.CPZM.CPZSeta <- crossprod(t(CPZM.CPZBmu), CPZM.CPZSeta) # == CPZM %*% CPZBmu %*% CPZM %*% CPZSeta M["id", "mu"] <- N - 2 * trace(CPZM.CPZBetaSmu) + trace(CPZM.CPZBeta.CPZM.CPZSmu) M["ts", "eta"] <- TS - 2 * trace(CPZM.CPZBmuSeta) + trace(CPZM.CPZBmu.CPZM.CPZSeta) } } if ("within" %in% models){ WX <- model.matrix(estm[[match("within", models)]], model = "within", effect = effect, cstcovar.rm = "all") # K <- ncol(WX) # MK <- length(attr(WX, "constant")) - 1 KW <- ncol(WX) if (models[1L] == "within"){ M["w", "nu"] <- O - NTS - KW # + MK # INTERCEPT if (effect != "time") M["w", "eta"] <- 0 if (effect != "individual") M["w", "mu"] <- 0 } if (secmod == "within"){ CPXM <- solve(crossprod(WX)) if (effect != "time"){ XBeta <- model.matrix(estm[[2L]], model = "Between", effect = "individual")[ , -1L, drop = FALSE] # INTERCEPT XBeta <- t(t(XBeta) - colMeans(XBeta)) CPXBeta <- crossprod(XBeta) amemiya_check(CPXM, CPXBeta, method) # catch non-estimable 'amemiya' M["id", "nu"] <- N - 1 + trace( crossprod(CPXM, CPXBeta) ) M["id", "eta"] <- O - sum(Tn ^ 2) / O } if (effect != "individual"){ XBmu <- model.matrix(estm[[3L]], model = "Between", effect = "time")[ , -1L, drop = FALSE] # INTERCEPT XBmu <- t(t(XBmu) - colMeans(XBmu)) CPXBmu <- crossprod(XBmu) amemiya_check(CPXM, CPXBmu, method) # catch non-estimable 'amemiya' M["ts", "nu"] <- TS - 1 + trace( crossprod(CPXM, CPXBmu) ) M["ts", "mu"] <- O - sum(Nt ^ 2) / O } if (effect == "twoways"){ M["id", "mu"] <- N - sum(Nt ^ 2) / O M["ts", "eta"] <- TS - sum(Tn ^ 2) / O } } } # END if ("within" %in% models) if (length(intersect(c("between", "Between"), models))){ if (effect != "time"){ Zeta <- model.matrix(estm[[2L]], model = "pooling", effect = "individual") ZBeta <- model.matrix(estm[[2L]], model = "Between", effect = "individual") ZSeta <- model.matrix(estm[[2L]], model = "Sum", effect = "individual") CPZSeta <- crossprod(ZSeta, Z) CPZMeta <- solve(crossprod(ZBeta)) M["id", "nu"] <- N - K - 1 M["id", "eta"] <- O - trace( crossprod(CPZMeta, CPZSeta) ) } if (effect != "individual"){ Zmu <- model.matrix(estm[[3L]], model = "pooling", effect = "time") ZBmu <- model.matrix(estm[[3L]], model = "Between", effect = "time") ZSmu <- model.matrix(estm[[3L]], model = "Sum", effect = "time") CPZSmu <- crossprod(ZSmu, Z) CPZMmu <- solve(crossprod(ZBmu)) M["ts", "nu"] <- TS - K - 1 M["ts", "mu"] <- O - trace( crossprod(CPZMmu, CPZSmu) ) } if (effect == "twoways"){ if (! balanced){ ZSmuBeta <- Sum(ZBeta, effect = "time") ZBetaSmuBeta <- crossprod(ZBeta, ZSmuBeta) ZSetaBmu <- Sum(ZBmu, effect = "individual") ZBmuSetaBmu <- crossprod(ZBmu, ZSetaBmu) M["id", "mu"] <- N - trace(crossprod(CPZMeta, ZBetaSmuBeta)) M["ts", "eta"] <- TS - trace(crossprod(CPZMmu, ZBmuSetaBmu)) } else M["id", "mu"] <- M["ts", "eta"] <- 0 } } } ## END of General case, compute the unbiased version of the estimators sigma2 <- as.numeric(solve(M[therows, therows], quad[therows])) names(sigma2) <- c("idios", "id", "time")[therows] sigma2[sigma2 < 0] <- 0 # if negative variance estimate, set to zero theta <- list() if (! balanced){ xindex <- unclass(index(data)) # unclass for speed ids <- xindex[[1L]] tss <- xindex[[2L]] Tns <- Tn[as.character(ids)] Nts <- Nt[as.character(tss)] } else{ Tns <- TS Nts <- N } if (effect != "time") theta$id <- (1 - (1 + Tns * sigma2["id"] / sigma2["idios"]) ^ (-0.5)) if (effect != "individual") theta$time <- (1 - (1 + Nts * sigma2["time"] / sigma2["idios"]) ^ (-0.5)) if (effect == "twoways") { theta$total <- theta$id + theta$time - 1 + (1 + Nts * sigma2["time"] / sigma2["idios"] + Tns * sigma2["id"] / sigma2["idios"]) ^ (-0.5) names(theta$total) <- if(balanced) "total" else paste0(names(theta$id), "-", names(theta$time)) # tweak for numerical precision: # if either theta$id or theta$time is 0 => theta$total must be zero # but in calculation above some precision is lost if( isTRUE(all.equal(sigma2[["time"]], 0, check.attributes = FALSE)) || isTRUE(all.equal(sigma2[["id"]], 0, check.attributes = FALSE))) theta$total <- 0 } if (effect != "twoways") theta <- theta[[1L]] result <- list(sigma2 = sigma2, theta = theta) structure(result, class = "ercomp", balanced = balanced, effect = effect) } #' @rdname ercomp #' @export print.ercomp <- function(x, digits = max(3, getOption("digits") - 3), ...){ effect <- attr(x, "effect") balanced <- attr(x, "balanced") sigma2 <- x$sigma2 theta <- x$theta if (effect == "twoways"){ sigma2 <- unlist(sigma2) sigma2Table <- cbind(var = sigma2, std.dev = sqrt(sigma2), share = sigma2 / sum(sigma2)) rownames(sigma2Table) <- c("idiosyncratic", "individual", "time") } if (effect == "individual"){ sigma2 <- unlist(sigma2[c("idios", "id")]) sigma2Table <- cbind(var = sigma2, std.dev = sqrt(sigma2), share = sigma2 / sum(sigma2)) rownames(sigma2Table) <- c("idiosyncratic", effect) } if (effect == "time"){ sigma2 <- unlist(sigma2[c("idios", "time")]) sigma2Table <- cbind(var = sigma2, std.dev = sqrt(sigma2), share = sigma2 / sum(sigma2)) rownames(sigma2Table) <- c("idiosyncratic", effect) } if (effect == "nested"){ sigma2 <- unlist(sigma2) sigma2Table <- cbind(var = sigma2, std.dev = sqrt(sigma2), share = sigma2 / sum(sigma2)) rownames(sigma2Table) <- c("idiosyncratic", "individual", "group") } printCoefmat(sigma2Table, digits) if (! is.null(x$theta)){ if (effect %in% c("individual", "time")){ if (balanced){ cat(paste("theta: ", signif(x$theta,digits), "\n", sep = "")) } else{ cat("theta:\n") print(summary(x$theta)) } } if (effect == "twoways"){ if(balanced){ cat(paste("theta: ", signif(x$theta$id,digits), " (id) ", signif(x$theta$time,digits), " (time) ", signif(x$theta$total,digits), " (total)\n", sep = "")) } else { cat("theta:\n") print(rbind(id = summary(x$theta$id), time = summary(x$theta$time), total = summary(x$theta$total))) } } if (effect == "nested"){ cat("theta:\n") print(rbind(id = summary(x$theta$id), group = summary(x$theta$gp))) } } invisible(x) } amemiya_check <- function(matA, matB, method) { ## non-exported, used in ercomp() ## little helper function to check matrix multiplication compatibility ## in ercomp() for the amemiya estimator: if model contains variables without ## within variation (individual or time), the model is not estimable if (NROW(matA) < NCOL(matB) && method == "amemiya" ) { offending_vars <- setdiff(colnames(matB), rownames(matA)) offending_vars <- if (length(offending_vars) > 3L) { paste0(paste(offending_vars[1:3], collapse = ", "), ", ...") } else { paste(offending_vars, collapse = ", ") } stop(paste0("'amemiya' model not estimable due to variable(s) lacking within variation: ", offending_vars)) } else NULL } swar_Between_check <- function(x, method) { ## non-exported, used in ercomp() ## little helper function to check feasibility of Between model in Swamy-Arora estimation ## in ercomp(): if model contains too few groups (individual, time) the Between ## model is not estimable (but does not error) if (describe(x, "model") %in% c("between", "Between")) { pdim <- pdim(x) grp <- switch(describe(x, "effect"), "individual" = pdim$nT$n, "time" = pdim$nT$T) # cannot use df.residual(x) here because that gives the number for the "uncompressed" Between model if (length(x$aliased) >= grp) stop(paste0("model not estimable: ", length(x$aliased), " coefficient(s) (incl. intercept) to be estimated", " but only ", grp, " ", describe(x, "effect"), "(s)", " in data for the between model necessary for", " Swamy-Arora random-effect model estimation")) } else NULL } plm/R/test_cips.R0000644000176200001440000005515514370543776013416 0ustar liggesusers## taken from pmg to estimate CIPS test statistic as "average of t's" ## since version 4: added type warning, and output single CADF ## regressions as well, use func gettvalue for speed. estimation loop ## for single TS models is now lm(formula, data) with 'data' properly ## subset; this allows for decent output of individual mods. ## needed for standalone operation: #plm <- plm:::plm #pdim <- plm:::pdim #model.matrix.plm <- plm:::model.matrix.plm #pmodel.response <- plm:::pmodel.response.plm ## Reference is ## Pesaran, M.H. (2007) A simple panel unit root test in the presence of ## cross-section dependence, Journal of Applied Econometrics, 22(2), pp. 265-312 #' Cross-sectionally Augmented IPS Test for Unit Roots in Panel Models #' #' Cross-sectionally augmented Im, Pesaran and Shin (IPS) test for #' unit roots in panel models. #' #' Pesaran's \insertCite{pes07}{plm} cross-sectionally augmented version of #' the IPS unit root test \insertCite{IM:PESAR:SHIN:03}{plm} (H0: `pseries` #' has a unit root) is a so-called second-generation panel unit root test: it #' is in fact robust against cross-sectional dependence, provided that the default #' `model="cmg"` is calculated. Else one can obtain the standard #' (`model="mg"`) or cross-sectionally demeaned (`model="dmg"`) #' versions of the IPS test. #' #' Argument `type` controls how the test is executed: #' - `"none"`: no intercept, no trend (Case I in \insertCite{pes07}{plm}), #' - `"drift"`: with intercept, no trend (Case II), #' - `"trend"` (default): with intercept, with trend (Case III). #' #' @param x an object of class `"pseries"`, #' @param lags integer, lag order for Dickey-Fuller augmentation, #' @param type one of `"trend"` (default), `"drift"`, `"none"`, #' @param model one of `"cmg"` (default), `"mg"`, `"dmg"`, #' @param truncated logical, specifying whether to calculate the #' truncated version of the test (default: `FALSE`), #' @param \dots further arguments passed to `critvals.cips` #' (non-exported function). #' @return An object of class `"htest"`. #' @author Giovanni Millo #' @export #' @seealso [purtest()], [phansitest()] #' @references #' #' \insertAllCited{} #' #' @aliases cipstest #' @keywords htest #' @examples #' #' data("Produc", package = "plm") #' Produc <- pdata.frame(Produc, index=c("state", "year")) #' ## check whether the gross state product (gsp) is trend-stationary #' cipstest(Produc$gsp, type = "trend") #' cipstest <- function (x, lags = 2L, type = c("trend", "drift", "none"), model = c("cmg", "mg", "dmg"), truncated = FALSE, ...) { ## type = c("trend", "drift", "none") corresponds to Case III, II, I ## in Pesaran (2007), respectively. ## input checks if(!inherits(x, "pseries")) stop("Argument 'x' has to be a pseries") if(!is.numeric(lags)) stop("Argument 'lags' has to be an integer") # but accept numeric as well if(round(lags) != lags) stop("Argument 'lags' has to be an integer") ## TODO: does 'lags' always need to be >= 1? if so, check for this, too # code below fails for lags = 0 while Stata's pescadf runs with lags = 0. # Use of lags = 0 is doubtful, see https://github.com/ycroissant/plm/issues/39 # For now, error gracefully for lags = 0 if(lags == 0L) stop("cipstest implementation does not support 'lags = 0L'.") dati <- pmerge(diff(x), lag(x)) dati <- pmerge(dati, diff(lag(x))) ## minimal column names indexnames <- c("ind", "tind") dimnames(dati)[[2L]][1:2] <- indexnames clnames <- c("de", "le", "d1e") dimnames(dati)[[2L]][3:5] <- clnames ## add lags if lags > 1 if(lags > 1L) { for(i in 2:lags) { dati <- pmerge(dati, diff(lag(x, i))) clnames <- c(clnames, paste("d", i, "e", sep = "")) } } dimnames(dati)[[2]][3:(lags+4)] <- clnames deterministic <- switch(match.arg(type), "trend" = {"+as.numeric(tind)"}, "drift" = {""}, "none" = {"-1"}) ## make formula adffm <- as.formula(paste("de~le+", paste(clnames[3:(lags+2)], collapse = "+"), deterministic, sep = "")) ## estimate preliminary pooling plm, to take care of all diffs ## and lags in a 'panel' way (would be lost in single TS regr.s) pmod <- plm(adffm, data = dati, model = "pooling") ## this as in pmg() index <- attr(model.frame(pmod), "index") ind <- index[[1L]] ## individual index tind <- index[[2L]] ## time index ## set dimension variables pdim <- pdim(pmod) balanced <- pdim$balanced nt <- pdim$Tint$nt Ti <- pdim$Tint$Ti T. <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N ## set index names time.names <- pdim$panel.names$time.names id.names <- pdim$panel.names$id.names coef.names <- names(coef(pmod)) ## number of coefficients k <- length(coef.names) ## CIPS test needs an ADF regression with k lags ## so fm <- has to be like diff(e) ~ lag(e)+diff(lag(e)) etc. ## model data, remove index and pseries attributes X <- model.matrix(pmod) attr(X, "index") <- NULL y <- as.numeric(model.response(model.frame(pmod))) ## det. *minimum* group numerosity t <- min(Ti) ## check min. t numerosity ## NB it is also possible to allow estimation if there *is* one group ## with t large enough and average on coefficients removing NAs ## Here we choose the explicit way: let estimation fail if we lose df ## but a warning would do... if(t < (k+1)) stop("Insufficient number of time periods") ## one regression for each group i in 1..n ## and retrieve coefficients putting them into a matrix ## (might be unbalanced => t1!=t2 but we don't care as long ## as min(t)>k+1) # prepare data as per requested model switch(match.arg(model), "mg" = { ## final data as dataframe, to be subset for single TS models ## (if 'trend' fix this variable's name) switch(match.arg(type), "trend" = { ## make datafr. removing intercept and add trend adfdati <- data.frame(cbind(y, X[ , -1L, drop = FALSE])) dimnames(adfdati)[[2L]] <- c(clnames, "trend") adffm <- update(adffm, . ~ . -as.numeric(tind) + trend)}, "drift" = { ## make df removing intercept adfdati <- data.frame(cbind(y, X[ , -1L, drop = FALSE])) dimnames(adfdati)[[2L]] <- clnames}, "none" = { ## just make df (intercept isn't there) adfdati <- data.frame(cbind(y, X)) dimnames(adfdati)[[2L]] <- clnames}) }, "dmg" = { ## demean (via means over group for each t) ## we do not care about demeaning the intercept or not as it is ## eliminated anyway demX <- Within(X, effect = tind, na.rm = TRUE) demy <- Within(y, effect = tind, na.rm = TRUE) ## final data as dataframe, to be subset for single TS models ## (if 'trend' fix this variable's name) switch(match.arg(type), "trend" = { ## make datafr. removing intercept and add trend adfdati <- data.frame(cbind(demy, demX[ , -1L, drop = FALSE])) dimnames(adfdati)[[2L]] <- c(clnames, "trend") adffm <- update(adffm, . ~ . -as.numeric(tind) + trend)}, "drift" = { ## make df removing intercept adfdati <- data.frame(cbind(demy, demX[ , -1L, drop = FALSE])) dimnames(adfdati)[[2L]] <- clnames}, "none" = { ## just make df (intercept isn't there) adfdati <- data.frame(cbind(demy, demX)) dimnames(adfdati)[[2L]] <- clnames}) }, "cmg" = { deterministic2 <- switch(match.arg(type), "trend" = {"+trend"}, "drift" = {""}, "none" = {"-1"}) ## adjust formula adffm <- as.formula(paste("de~le+", paste(clnames[3:(lags+2)], collapse = "+"), "+", paste(paste(clnames, "bar", sep = "."), collapse = "+"), deterministic2, sep = "")) ## between-periods transformation (take means over groups for each t) Xm <- Between(X, effect = tind, na.rm = TRUE) ym <- Between(y, effect = tind, na.rm = TRUE) ## final data as dataframe, to be subset for single TS models ## (purge intercepts etc., if 'trend' fix this variable's name) switch(match.arg(type), "trend" = { ## purge intercept, averaged intercept and averaged trend ## (the latter is always last col. of Xm) augX <- cbind(X[ , -1L, drop = FALSE], ym, Xm[ , -c(1L, dim(Xm)[[2L]]), drop = FALSE]) adfdati <- data.frame(cbind(y, augX)) dimnames(adfdati)[[2L]] <- c(clnames, "trend", paste(clnames, "bar", sep=".")) adffm <- update(adffm, . ~ . -as.numeric(tind) + trend)}, "drift" = { # remove intercepts augX <- cbind(X[ , -1L, drop = FALSE], ym, Xm[ , -1L, drop = FALSE]) adfdati <- data.frame(cbind(y, augX)) dimnames(adfdati)[[2L]] <- c(clnames, paste(clnames, "bar", sep="."))}, "none" = { ## no intercepts here, so none to be removed augX <- cbind(X, ym, Xm) adfdati <- data.frame(cbind(y, augX)) dimnames(adfdati)[[2L]] <- c(clnames, paste(clnames, "bar", sep=".")) }) }) ## Estimate each x-sect. i=1..n with the data as prepared above: # * for "dmg" this is: ## for each x-sect. i=1..n estimate (over t) a demeaned model ## (y_it-my_t) = alpha_i + beta_i*(X_it-mX_t) + err_it # * for "cmg" this is: ## for each x-sect. i=1..n estimate (over t) an augmented model ## y_it = alpha_i + beta_i*X_it + c1_i*my_t + c2_i*mX_t + err_it adfdati.list <- collapse::rsplit(adfdati, ind, use.names = FALSE) tmods <- lapply(adfdati.list, function(tdati) lm(adffm, tdati, model = FALSE)) # TODO: # * check if my.lm.fit can be used instead of lm (with minor modifications # to code down below for t-val extraction etc.) # * check if data needs to be converted to a data frame as is now or can # go directly via matrices only to lm.fit() ## CIPS statistic as an average of the t-stats on the coefficient of 'le' tstats <- vapply(tmods, function(mod) gettvalue(mod, "le"), FUN.VALUE = 0.0, USE.NAMES = FALSE) if(truncated) { ## set bounds, Pesaran (2007), p. 277 ## NB: there is a typo in the paper (see p. 279/281 to confirm): ## Case I: "with an intercept or trend" -> "with_out_ an intercept or trend" ## "with_out_ an intercept or trend (Case I): K1 = 6.12, K2 = 4.16" ## "with an intercept and no trend (Case II): K1 = 6.19, K2 = 2.61" ## "with a linear trend (Case III): K1 = 6.42, K2 = 1.70" ## (use negative values for K1's to ease assignment if bound is reached) trbounds <- switch(match.arg(type), "none" = {c(-6.12, 4.16)}, "drift" = {c(-6.19, 2.61)}, "trend" = {c(-6.42, 1.70)}) ## formulae (34) in Pesaran (2007): ## truncate at lower bound tstats <- ifelse(tstats > trbounds[1L], tstats, trbounds[1L]) ## truncate at upper bound tstats <- ifelse(tstats < trbounds[2L], tstats, trbounds[2L]) } ## here allow for '...' to pass 'na.rm=TRUE' in case (but see what happens ## if unbalanced! cipstat <- mean(tstats, ...) #sum(tstats)/n pval <- critvals.cips(stat = cipstat, n= n, T. = T., type = type, truncated = truncated) ## if pval out of critical values' then set at boundary and issue ## a warning if(pval == "> 0.10") { pval <- 0.10 warning("p-value greater than printed p-value") } else if(pval == "< 0.01") { pval <- 0.01 warning("p-value smaller than printed p-value") } parameter <- lags names(parameter) <- "lag order" names(cipstat) <- "CIPS test" RVAL <- list(statistic = cipstat, parameter = parameter, data.name = paste(deparse(substitute(x))), tmods = tmods, method = "Pesaran's CIPS test for unit roots", alternative = "Stationarity", p.value = pval) class(RVAL) <- "htest" return(RVAL) } ## separate function computing critical values: critvals.cips <- function(stat, n, T., type = c("trend", "drift", "none"), truncated = FALSE) { ## auxiliary function for cipstest() ## extracts --or calculates by interpolation-- p-values for the ## (averaged) CIPS statistic depending on whether n and T, ## given the critical values of average of individual cross-sectionally ## augmented Dickey-Fuller distribution ## Non truncated version rnam <- c(10, 15, 20, 30, 50, 70, 100, 200) cnam <- rnam znam <- c(1, 5, 10) ## In all following tables N in rows, T in cols unlike Pesaran (2007) ## No intercept, no trend (Case I); Table II(a) Pesaran (2007), p. 279 ## 1% critical values nvals1 <- cbind( c(-2.16, -2.02, -1.93, -1.85, -1.78, -1.74, -1.71, -1.70), c(-2.03, -1.91, -1.84, -1.77, -1.71, -1.68, -1.66, -1.63), c(-2.00, -1.89, -1.83, -1.76, -1.70, -1.67, -1.65, -1.62), c(-1.98, -1.87, -1.80, -1.74, -1.69, -1.67, -1.64, -1.61), c(-1.97, -1.86, -1.80, -1.74, -1.69, -1.66, -1.63, -1.61), c(-1.95, -1.86, -1.80, -1.74, -1.68, -1.66, -1.63, -1.61), c(-1.94, -1.85, -1.79, -1.74, -1.68, -1.65, -1.63, -1.61), c(-1.95, -1.85, -1.79, -1.73, -1.68, -1.65, -1.63, -1.61) ) ## 5% critical values nvals5 <- cbind( c(-1.80, -1.71, -1.67, -1.61, -1.58, -1.56, -1.54, -1.53), c(-1.74, -1.67, -1.63, -1.58, -1.55, -1.53, -1.52, -1.51), c(-1.72, -1.65, -1.62, -1.58, -1.54, -1.53, -1.52, -1.50), c(-1.72, -1.65, -1.61, -1.57, -1.55, -1.54, -1.52, -1.50), c(-1.72, -1.64, -1.61, -1.57, -1.54, -1.53, -1.52, -1.51), c(-1.71, -1.65, -1.61, -1.57, -1.54, -1.53, -1.52, -1.51), c(-1.71, -1.64, -1.61, -1.57, -1.54, -1.53, -1.52, -1.51), c(-1.71, -1.65, -1.61, -1.57, -1.54, -1.53, -1.52, -1.51) ) ## 10% critical values nvals10 <- cbind( c(-1.61, -1.56, -1.52, -1.49, -1.46, -1.45, -1.44, -1.43), c(-1.58, -1.53, -1.50, -1.48, -1.45, -1.44, -1.44, -1.43), c(-1.58, -1.52, -1.50, -1.47, -1.45, -1.45, -1.44, -1.43), c(-1.57, -1.53, -1.50, -1.47, -1.46, -1.45, -1.44, -1.43), c(-1.58, -1.52, -1.50, -1.47, -1.45, -1.45, -1.44, -1.43), c(-1.57, -1.52, -1.50, -1.47, -1.46, -1.45, -1.44, -1.43), c(-1.56, -1.52, -1.50, -1.48, -1.46, -1.45, -1.44, -1.43), c(-1.57, -1.53, -1.50, -1.47, -1.45, -1.45, -1.44, -1.43) ) ## make critical values' cube nvals <- array(data = NA_real_, dim = c(8L, 8L, 3L)) nvals[ , , 1L] <- nvals1 nvals[ , , 2L] <- nvals5 nvals[ , , 3L] <- nvals10 dimnames(nvals) <- list(rnam, cnam, znam) ## Intercept only (Case II), Table II(b) in Pesaran (2007), p. 280 ## 1% critical values dvals1 <- cbind( c(-2.97, -2.76, -2.64, -2.51, -2.41, -2.37, -2.33, -2.28), c(-2.66, -2.52, -2.45, -2.34, -2.26, -2.23, -2.19, -2.16), c(-2.60, -2.47, -2.40, -2.32, -2.25, -2.20, -2.18, -2.14), c(-2.57, -2.45, -2.38, -2.30, -2.23, -2.19, -2.17, -2.14), c(-2.55, -2.44, -2.36, -2.30, -2.23, -2.20, -2.17, -2.14), c(-2.54, -2.43, -2.36, -2.30, -2.23, -2.20, -2.17, -2.14), c(-2.53, -2.42, -2.36, -2.30, -2.23, -2.20, -2.18, -2.15), c(-2.53, -2.43, -2.36, -2.30, -2.23, -2.21, -2.18, -2.15) ) ## 5% critical values dvals5 <- cbind( c(-2.52, -2.40, -2.33, -2.25, -2.19, -2.16, -2.14, -2.10), c(-2.37, -2.28, -2.22, -2.17, -2.11, -2.09, -2.07, -2.04), c(-2.34, -2.26, -2.21, -2.15, -2.11, -2.08, -2.07, -2.04), c(-2.33, -2.25, -2.20, -2.15, -2.11, -2.08, -2.07, -2.05), c(-2.33, -2.25, -2.20, -2.16, -2.11, -2.10, -2.08, -2.06), c(-2.33, -2.25, -2.20, -2.15, -2.12, -2.10, -2.08, -2.06), c(-2.32, -2.25, -2.20, -2.16, -2.12, -2.10, -2.08, -2.07), c(-2.32, -2.25, -2.20, -2.16, -2.12, -2.10, -2.08, -2.07) ) ## 10% critical values dvals10 <- cbind( c(-2.31, -2.22, -2.18, -2.12, -2.07, -2.05, -2.03, -2.01), c(-2.22, -2.16, -2.11, -2.07, -2.03, -2.01, -2.00, -1.98), c(-2.21, -2.14, -2.10, -2.07, -2.03, -2.01, -2.00, -1.99), c(-2.21, -2.14, -2.11, -2.07, -2.04, -2.02, -2.01, -2.00), c(-2.21, -2.14, -2.11, -2.08, -2.05, -2.03, -2.02, -2.01), c(-2.21, -2.15, -2.11, -2.08, -2.05, -2.03, -2.02, -2.01), c(-2.21, -2.15, -2.11, -2.08, -2.05, -2.03, -2.03, -2.02), c(-2.21, -2.15, -2.11, -2.08, -2.05, -2.04, -2.03, -2.02) ) ## make critical values' cube dvals <- array(data = NA_real_, dim = c(8L, 8L, 3L)) dvals[ , , 1L] <- dvals1 dvals[ , , 2L] <- dvals5 dvals[ , , 3L] <- dvals10 dimnames(dvals) <- list(rnam, cnam, znam) ## Intercept and trend (Case III), Table II(c) in Pesaran (2007), p. 281 ## 1% critical values tvals1 <- cbind( c(-3.88, -3.61, -3.46, -3.30, -3.15, -3.10, -3.05, -2.98), c(-3.24, -3.09, -3.00, -2.89, -2.81, -2.77, -2.74, -2.71), c(-3.15, -3.01, -2.92, -2.83, -2.76, -2.72, -2.70, -2.65), c(-3.10, -2.96, -2.88, -2.81, -2.73, -2.69, -2.66, -2.63), c(-3.06, -2.93, -2.85, -2.78, -2.72, -2.68, -2.65, -2.62), c(-3.04, -2.93, -2.85, -2.78, -2.71, -2.68, -2.65, -2.62), c(-3.03, -2.92, -2.85, -2.77, -2.71, -2.68, -2.65, -2.62), c(-3.03, -2.91, -2.85, -2.77, -2.71, -2.67, -2.65, -2.62) ) ## 5% critical values tvals5 <- cbind( c(-3.27, -3.11, -3.02, -2.94, -2.86, -2.82, -2.79, -2.75), c(-2.93, -2.83, -2.77, -2.70, -2.64, -2.62, -2.60, -2.57), c(-2.88, -2.78, -2.73, -2.67, -2.62, -2.59, -2.57, -2.55), c(-2.86, -2.76, -2.72, -2.66, -2.61, -2.58, -2.56, -2.54), c(-2.84, -2.76, -2.71, -2.65, -2.60, -2.58, -2.56, -2.54), c(-2.83, -2.76, -2.70, -2.65, -2.61, -2.58, -2.57, -2.54), c(-2.83, -2.75, -2.70, -2.65, -2.61, -2.59, -2.56, -2.55), c(-2.83, -2.75, -2.70, -2.65, -2.61, -2.59, -2.57, -2.55) ) ## 10% critical values tvals10 <- cbind( c(-2.98, -2.89, -2.82, -2.76, -2.71, -2.68, -2.66, -2.63), c(-2.76, -2.69, -2.65, -2.60, -2.56, -2.54, -2.52, -2.50), c(-2.74, -2.67, -2.63, -2.58, -2.54, -2.53, -2.51, -2.49), c(-2.73, -2.66, -2.63, -2.58, -2.54, -2.52, -2.51, -2.49), c(-2.73, -2.66, -2.63, -2.58, -2.55, -2.53, -2.51, -2.50), c(-2.72, -2.66, -2.62, -2.58, -2.55, -2.53, -2.52, -2.50), c(-2.72, -2.66, -2.63, -2.59, -2.55, -2.53, -2.52, -2.50), c(-2.73, -2.66, -2.63, -2.59, -2.55, -2.54, -2.52, -2.51) ) ## make critical values' cube tvals <- array(data = NA_real_, dim = c(8L, 8L, 3L)) tvals[ , , 1L] <- tvals1 tvals[ , , 2L] <- tvals5 tvals[ , , 3L] <- tvals10 dimnames(tvals) <- list(rnam, cnam, znam) ## if truncated substitute values according to Tables II(a), II(b), II(c) ## in Pesaran (2007) if(truncated) { # Case III (Intercept and trend) tvals[,1,1] <- -c(3.51, 3.31, 3.20, 3.10, 3.00, 2.96, 2.93, 2.88) # II(c), 1% tvals[,2,1] <- -c(3.21, 3.07, 2.98, 2.88, 2.80, 2.76, 2.74, 2.70) # II(c), 1% tvals[,1,2] <- -c(3.10, 2.97, 2.89, 2.82, 2.75, 2.73, 2.70, 2.67) # II(c), 5% tvals[,2,2] <- -c(2.92, 2.82, 2.76, 2.69, 2.64, 2.62, 2.59, 2.57) # II(c), 5% tvals[,1,3] <- -c(2.87, 2.78, 2.73, 2.67, 2.63, 2.60, 2.58, 2.56) # II(c), 10% tvals[,2,3] <- -c(2.76, 2.68, 2.64, 2.59, 2.55, 2.53, 2.51, 2.50) # II(c), 10% # Case II (Intercept only) dvals[,1,1] <- -c(2.85, 2.66, 2.56, 2.44, 2.36, 2.32, 2.29, 2.25) # II(b), 1% dvals[,1,2] <- -c(2.47, 2.35, 2.29, 2.22, 2.16, 2.13, 2.11, 2.08) # II(b), 5% dvals[,1,3] <- -c(2.28, 2.20, 2.15, 2.10, 2.05, 2.03, 2.01, 1.99) # II(b), 10% # Case I (No intercept, no trend) nvals[,1,1] <- -c(2.14, 2.00 ,1.91, 1.84, 1.77, 1.73, 1.71, 1.69) # II(a), 1% nvals[,1,2] <- -c(1.79, 1.71, 1.66, 1.61, 1.57, 1.55, 1.53, 1.52) # II(a), 5% nvals[,1,3][c(2,4,7)] <- -c(1.55, 1.48, 1.43) # II(a), 10% } ## set this according to model cvals <- switch(match.arg(type), "trend" = tvals, "drift" = dvals, "none" = nvals) ## find intervals for current n and T. nintl <- findInterval(n, rnam) ninth <- nintl + 1 nintv <- rnam[nintl:ninth] tintl <- findInterval(T., cnam) tinth <- tintl + 1 tintv <- cnam[tintl:tinth] ## for each critical value cv <- numeric(3) for(i in 1:3) { ## on N dim if(n %in% rnam) { ## if n is exactly one of the tabulated values: tl <- cvals[which(rnam == n), tintl, i] th <- cvals[which(rnam == n), tinth, i] } else { ## interpolate interval of interest to get cvals(n,T.) tl <- approx(nintv, cvals[nintl:ninth, tintl, i], n = max(nintv) - min(nintv))$y[n - min(nintv)] th <- approx(nintv, cvals[nintl:ninth, tinth, i], n = max(nintv) - min(nintv))$y[n - min(nintv)] } ## on T. dim if(T. %in% cnam) { ## if T. is exactly one of the tabulated values: if(n %in% rnam) { ## ... and n too: cv[i] <- cvals[which(rnam == n), which(cnam == T.), i] } else { ## or if n is not, interpolate n on T.'s exact row: cv[i] <- approx(nintv, cvals[nintl:ninth, which(cnam == T.), i], n = max(nintv) - min(nintv))$y[n - min(nintv)] } } else { ## idem: interpolate T.-interval to get critical value cv[i] <- approx(tintv, c(tl, th), n = max(tintv) - min(tintv))$y[T. - min(tintv)] } } ## approximate p-values' sequence cvprox <- approx(cv, c(0.01, 0.05, 0.1), n = 200) cvseq <- cvprox$x pvseq <- cvprox$y if(stat < min(cv)) { pval <- "< 0.01" } else { if(stat > max(cv)) { pval <- "> 0.10" } else { if(stat %in% cv) { ## if exactly one of the tabulated values pval <- c(0.01, 0.05, 0.10)[which(cv == stat)] } else { ## find interval where true p-value lies and ## set p-value as the mean of bounds kk <- findInterval(stat, cvseq) pval <- mean(pvseq[kk:(kk+1)]) } } } return(pval) } plm/R/tool_methods.R0000644000176200001440000006717214427725254014117 0ustar liggesusers# panelmodel and plm methods : ## panelmodel methods : # - terms # - vcov # - fitted # - residuals # - df.residual # - coef # - print # - update # - deviance # - nobs ## plm methods : # - summary # - print.summary # - predict # - formula # - plot # - residuals # - fitted #' @rdname plm #' @export terms.panelmodel <- function(x, ...){ terms(formula(x)) } #' @rdname plm #' @export vcov.panelmodel <- function(object, ...){ object$vcov } #' @rdname plm #' @export fitted.panelmodel <- function(object, ...){ object$fitted.values } #' @rdname plm #' @export residuals.panelmodel <- function(object, ...){ object$residuals } #' @rdname plm #' @export df.residual.panelmodel <- function(object, ...){ object$df.residual } #' @rdname plm #' @export coef.panelmodel <- function(object, ...){ object$coefficients } #' @rdname plm #' @export print.panelmodel <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ cat("\nModel Formula: ") print(formula(x)) cat("\nCoefficients:\n") print(coef(x), digits = digits) cat("\n") invisible(x) } #' Extract Total Number of Observations Used in Estimated Panelmodel #' #' This function extracts the total number of 'observations' from a #' fitted panel model. #' #' The number of observations is usually the length of the residuals #' vector. Thus, `nobs` gives the number of observations actually #' used by the estimation procedure. It is not necessarily the number #' of observations of the model frame (number of rows in the model #' frame), because sometimes the model frame is further reduced by the #' estimation procedure. This is, e.g., the case for first--difference #' models estimated by `plm(..., model = "fd")` where the model #' frame does not yet contain the differences (see also #' **Examples**). #' #' @name nobs.plm #' @aliases nobs #' @importFrom stats nobs #' @export nobs #' @param object a `panelmodel` object for which the number of #' total observations is to be extracted, #' @param \dots further arguments. #' @return A single number, normally an integer. #' @seealso [pdim()] #' @keywords attribute #' @examples #' #' # estimate a panelmodel #' data("Produc", package = "plm") #' z <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp,data=Produc, #' model="random", subset = gsp > 5000) #' #' nobs(z) # total observations used in estimation #' pdim(z)$nT$N # same information #' pdim(z) # more information about the dimensions (no. of individuals and time periods) #' #' # illustrate difference between nobs and pdim for first-difference model #' data("Grunfeld", package = "plm") #' fdmod <- plm(inv ~ value + capital, data = Grunfeld, model = "fd") #' nobs(fdmod) # 190 #' pdim(fdmod)$nT$N # 200 #' NULL # nobs() function to extract total number of observations used for estimating the panelmodel # like stats::nobs for lm objects # NB: here, use object$residuals rather than residuals(object) # [b/c the latter could do NA padding once NA padding works for plm objects. # NA padded residuals would yield wrong result for nobs!] #' @rdname nobs.plm #' @export nobs.panelmodel <- function(object, ...) { if (inherits(object, "plm") || inherits(object, "panelmodel")) return(length(object$residuals)) else stop("Input 'object' needs to be of class 'plm' or 'panelmodel'") } # No of obs calculated as in print.summary.pgmm [code copied from there] #' @rdname nobs.plm #' @export nobs.pgmm <- function(object, ...) { if (inherits(object, "pgmm")) return(sum(unlist(object$residuals, use.names = FALSE) != 0)) else stop("Input 'object' needs to be of class 'pgmm', i. e., a GMM estimation with panel data estimated by pgmm()") } # Almost the same as the default method except that update.formula is # replaced by update, so that the Formula method is used to update the # formula #' @rdname plm #' @export update.panelmodel <- function (object, formula., ..., evaluate = TRUE){ if (is.null(call <- object$call)) # was: getCall(object))) stop("need an object with call component") extras <- match.call(expand.dots = FALSE)$... # update.Formula fails if latter rhs are . ; simplify the formula # by removing the latter parts if (! missing(formula.)){ newform <- Formula(formula.) if (length(newform)[2L] == 2L && attr(newform, "rhs")[2L] == as.name(".")) newform <- formula(newform, rhs = 1) call$formula <- update(formula(object), newform) } if (length(extras)) { existing <- !is.na(match(names(extras), names(call))) for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if (any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if (evaluate) eval(call, parent.frame()) else call } #' @rdname plm #' @export deviance.panelmodel <- function(object, model = NULL, ...){ if (is.null(model)) as.numeric(crossprod(resid(object))) else as.numeric(crossprod(residuals(object, model = model))) } #' Summary for plm objects #' #' The summary method for plm objects generates some more information about #' estimated plm models. #' #' The `summary` method for plm objects (`summary.plm`) creates an #' object of class `c("summary.plm", "plm", "panelmodel")` that #' extends the plm object it is run on with various information about #' the estimated model like (inferential) statistics, see #' **Value**. It has an associated print method #' (`print.summary.plm`). #' #' @aliases summary.plm #' @param object an object of class `"plm"`, #' @param x an object of class `"summary.plm"`, #' @param subset a character or numeric vector indicating a subset of #' the table of coefficients to be printed for #' `"print.summary.plm"`, #' @param vcov a variance--covariance matrix furnished by the user or #' a function to calculate one (see **Examples**), #' @param digits number of digits for printed output, #' @param width the maximum length of the lines in the printed output, #' @param eq the selected equation for list objects #' @param \dots further arguments. #' @return An object of class `c("summary.plm", "plm", #' "panelmodel")`. Some of its elements are carried over from the #' associated plm object and described there #' ([plm()]). The following elements are new or changed #' relative to the elements of a plm object: #' #' \item{fstatistic}{'htest' object: joint test of significance of #' coefficients (F or Chi-square test) (robust statistic in case of #' supplied argument `vcov`, see [pwaldtest()] for details),} #' #' \item{coefficients}{a matrix with the estimated coefficients, #' standard errors, t--values, and p--values, if argument `vcov` was #' set to non-`NULL` the standard errors (and t-- and p--values) in #' their respective robust variant,} #' #' \item{vcov}{the "regular" variance--covariance matrix of the coefficients (class "matrix"),} #' #' \item{rvcov}{only present if argument `vcov` was set to non-`NULL`: #' the furnished variance--covariance matrix of the coefficients #' (class "matrix"),} #' #' \item{r.squared}{a named numeric containing the R-squared ("rsq") #' and the adjusted R-squared ("adjrsq") of the model,} #' #' \item{df}{an integer vector with 3 components, (p, n-p, p*), where #' p is the number of estimated (non-aliased) coefficients of the #' model, n-p are the residual degrees of freedom (n being number of #' observations), and p* is the total number of coefficients #' (incl. any aliased ones).} #' #' @export #' @author Yves Croissant #' @seealso [plm()] for estimation of various models; [vcovHC()] for #' an example of a robust estimation of variance--covariance #' matrix; [r.squared()] for the function to calculate R-squared; #' [stats::print.power.htest()] for some information about class #' "htest"; [fixef()] to compute the fixed effects for "within" #' (=fixed effects) models and [within_intercept()] for an #' "overall intercept" for such models; [pwaldtest()] #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, index = c("state","year")) #' summary(zz) #' #' # summary with a furnished vcov, passed as matrix, as function, and #' # as function with additional argument #' data("Grunfeld", package = "plm") #' wi <- plm(inv ~ value + capital, #' data = Grunfeld, model="within", effect = "individual") #' summary(wi, vcov = vcovHC(wi)) #' summary(wi, vcov = vcovHC) #' summary(wi, vcov = function(x) vcovHC(x, method = "white2")) #' #' # extract F statistic #' wi_summary <- summary(wi) #' Fstat <- wi_summary[["fstatistic"]] #' #' # extract estimates and p-values #' est <- wi_summary[["coefficients"]][ , "Estimate"] #' pval <- wi_summary[["coefficients"]][ , "Pr(>|t|)"] #' #' # print summary only for coefficient "value" #' print(wi_summary, subset = "value") #' summary.plm <- function(object, vcov = NULL, ...){ # summary.plm creates a specific summary.plm object that is derived # from the associated plm object vcov_arg <- vcov model <- describe(object, "model") # determine if intercept-only model (no other regressors) coef_wo_int <- object$coefficients[!(names(coef(object)) %in% "(Intercept)")] int.only <- !length(coef_wo_int) # as cor() is not defined for intercept-only models, use different approach # for R-squared ("rss" and "ess" are defined) object$r.squared <- if(!int.only) { c(rsq = r.squared(object), adjrsq = r.squared(object, dfcor = TRUE)) } else { c(rsq = r.squared(object, type = "rss"), adjrsq = r.squared(object, type = "rss", dfcor = TRUE)) } ## determine if standard normal and Chisq test or t distribution and F test to be used ## (normal/chisq for all random models, all IV models, and HT via plm(., model="ht")) use.norm.chisq <- if(model == "random" || length(formula(object))[2L] >= 2L || model == "ht") TRUE else FALSE # perform Wald test of joint sign. of regressors only if there are # other regressors besides the intercept if(!int.only) { object$fstatistic <- pwaldtest(object, test = if(use.norm.chisq) "Chisq" else "F", vcov = vcov_arg) } # construct the table of coefficients if (!is.null(vcov_arg)) { if (is.matrix(vcov_arg)) rvcov <- vcov_arg if (is.function(vcov_arg)) rvcov <- vcov_arg(object) std.err <- sqrt(diag(rvcov)) } else { std.err <- sqrt(diag(stats::vcov(object))) } b <- coefficients(object) z <- b / std.err p <- if(use.norm.chisq) { 2 * pnorm(abs(z), lower.tail = FALSE) } else { 2 * pt(abs(z), df = object$df.residual, lower.tail = FALSE) } # construct the object of class summary.plm object$coefficients <- cbind(b, std.err, z, p) colnames(object$coefficients) <- if(use.norm.chisq) { c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") } else { c("Estimate", "Std. Error", "t-value", "Pr(>|t|)") } ## add some info to summary.plm object # robust vcov (next to "normal" vcov) if (!is.null(vcov_arg)) { object$rvcov <- rvcov rvcov.name <- paste0(deparse(substitute(vcov))) attr(object$rvcov, which = "rvcov.name") <- rvcov.name } # mimics summary.lm's 'df' component # 1st entry: no. coefs (w/o aliased coefs); 2nd: residual df; 3rd no. coefs /w aliased coefs # NB: do not use length(object$coefficients) for 3rd entry! object$df <- c(length(b), object$df.residual, length(object$aliased)) class(object) <- c("summary.plm", "plm", "panelmodel") object } #' @rdname summary.plm #' @export print.summary.plm <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ...){ formula <- formula(x) has.instruments <- (length(formula)[2L] >= 2L) effect <- describe(x, "effect") model <- describe(x, "model") if (model != "pooling") { cat(paste(effect.plm.list[effect], " ", sep = "")) } cat(paste(model.plm.list[model], " Model", sep = "")) if (model == "random"){ ercomp <- describe(x, "random.method") cat(paste(" \n (", random.method.list[ercomp], "'s transformation)\n", sep = "")) } else{ cat("\n") } if (has.instruments){ cat("Instrumental variable estimation\n") if(model != "within") { # don't print transformation method for FE models as there is only one # such method for FE models but plenty for other model types ivar <- describe(x, "inst.method") cat(paste0(" (", inst.method.list[ivar], "'s transformation)\n")) } } if (!is.null(x$rvcov)) { cat("\nNote: Coefficient variance-covariance matrix supplied: ", attr(x$rvcov, which = "rvcov.name"), "\n", sep = "") } cat("\nCall:\n") print(x$call) cat("\n") pdim <- pdim(x) print(pdim) if (model %in% c("fd", "between")) { # print this extra info, b/c model.frames of FD and between models # have original (undifferenced/"un-between-ed") obs/rows of the data cat(paste0("Observations used in estimation: ", nobs(x), "\n"))} if (model == "random"){ cat("\nEffects:\n") print(x$ercomp) } cat("\nResiduals:\n") df <- x$df rdf <- df[2L] if (rdf > 5L) { save.digits <- unlist(options(digits = digits)) on.exit(options(digits = save.digits)) print(sumres(x)) } else if (rdf > 0L) print(residuals(x), digits = digits) if (rdf == 0L) { # estimation is a perfect fit cat("ALL", x$df[1L], "residuals are 0: no residual degrees of freedom!") cat("\n") } if (any(x$aliased, na.rm = TRUE)) { # na.rm = TRUE because currently, RE tw unbalanced models might have NAs? naliased <- sum(x$aliased, na.rm = TRUE) cat("\nCoefficients: (", naliased, " dropped because of singularities)\n", sep = "") } else cat("\nCoefficients:\n") if (is.null(subset)) printCoefmat(coef(x), digits = digits) else printCoefmat(coef(x)[subset, , drop = FALSE], digits = digits) cat("\n") cat(paste("Total Sum of Squares: ", signif(tss(x), digits), "\n", sep = "")) cat(paste("Residual Sum of Squares: ", signif(deviance(x), digits), "\n", sep = "")) cat(paste("R-Squared: ", signif(x$r.squared[1L], digits), "\n", sep = "")) cat(paste("Adj. R-Squared: ", signif(x$r.squared[2L], digits), "\n", sep = "")) # print Wald test of joint sign. of regressors only if there is a statistic # in summary.plm object (not computed by summary.plm if there are no other # regressors than the intercept if(!is.null(fstat <- x$fstatistic)) { if (names(fstat$statistic) == "F"){ cat(paste("F-statistic: ", signif(fstat$statistic), " on ", fstat$parameter["df1"]," and ", fstat$parameter["df2"], " DF, p-value: ", format.pval(fstat$p.value,digits=digits), "\n", sep="")) } else{ cat(paste("Chisq: ", signif(fstat$statistic), " on ", fstat$parameter, " DF, p-value: ", format.pval(fstat$p.value, digits = digits), "\n", sep="")) } } invisible(x) } #' Model Prediction for plm Objects #' #' Predicted values of response based on plm models. #' #' `predict`calculates predicted values by evaluating the regression function of #' a plm model for `newdata` or, if `newdata = NULL`, it returns the fitted values #' the plm model. #' #' The fixed effects (within) model is somewhat special in prediction as it has #' fixed effects estimated per individual, time period (one-way) or both (two-ways #' model) which should to be respected when predicting values relating to these #' fixed effects in the model: To do so, it is recommended to supply a pdata.frame #' (and not a plain data.frame) in `newdata` as it describes the relationship #' between the data supplied to the individual. and/or time periods. In case #' the `newdata`´'s pdata.frame has out-of-sample data (data contains individuals #' and/or time periods not contained in the original model), it is not clear #' how values are to be predicted and the result will contain `NA` #' values for these out-of-sample data. Argument `na.fill` can be set to `TRUE` #' to apply the original model's weighted mean of fixed effects for the #' out-of-sample data to derive a prediction. #' #' If a plain data.frame is given in `newdata` for a fixed effects model, the #' weighted mean is used for all fixed effects as `newdata` for prediction as a #' plain data.frame cannot describe any relation to individuals/time periods #' (`na.fill` is automatically set to `TRUE` and the function warns). #' #' See also **Examples**. #' #' #' @param object An object of class `"plm"`, #' @param newdata An optional pdata.frame in which to look for variables to be #' used for prediction. If `NULL`, the fitted values are returned. #' For fixed effects models, supplying a pdata.frame is recommended. #' @param na.fill A logical, only relevant if `object` is a pdata.frame, indicating #' whether for any supplied out-of-sample indexes (individual, time, #' combination of both), the missing fixed effect estimate is filled #' with the weighted mean of the model's present fixed effect estimates #' or not. #' @param \dots further arguments. #' @return A numeric (or a pseries if `newdata` is a pdata.frame) carrying the #' predicted values with length equal to the number of rows as the data #' supplied in `newdata` and with names the row names of `newdata` or, if #' `newdata = NULL`, the fitted values the original model given in `object`. #' @keywords regression #' @export #' @rdname predict.plm #' @examples #' library(plm) #' data("Grunfeld", package = "plm") #' #' # fit a fixed effect model #' fit.fe <- plm(inv ~ value + capital, data = Grunfeld, model = "within") #' #' # generate 55 new observations of three firms used for prediction: #' # * firm 1 with years 1935:1964 (has out-of-sample years 1955:1964), #' # * firm 2 with years 1935:1949 (all in sample), #' # * firm 11 with years 1935:1944 (firm 11 is out-of-sample) #' set.seed(42L) #' #' new.value2 <- runif(55, min = min(Grunfeld$value), max = max(Grunfeld$value)) #' new.capital2 <- runif(55, min = min(Grunfeld$capital), max = max(Grunfeld$capital)) #' #' newdata <- data.frame(firm = c(rep(1, 30), rep(2, 15), rep(11, 10)), #' year = c(1935:(1935+29), 1935:(1935+14), 1935:(1935+9)), #' value = new.value2, capital = new.capital2) #' # make pdata.frame #' newdata.p <- pdata.frame(newdata, index = c("firm", "year")) #' #' ## predict from fixed effect model with new data as pdata.frame #' predict(fit.fe, newdata = newdata.p) #' #' ## set na.fill = TRUE to have the weighted mean used to for fixed effects -> no NA values #' predict(fit.fe, newdata = newdata.p, na.fill = TRUE) #' #' ## predict with plain data.frame from fixed effect model: uses mean fixed effects #' ## for prediction and, thus, yields different result with a warning #' predict(fit.fe, newdata = newdata) #' predict.plm <- function(object, newdata = NULL, na.fill = !inherits(newdata, "pdata.frame"), ...) { # NB (TODO?): for between and FD models: output is of different length for # newdata = NULL (output is compressed data) and for # newdata = original pdata.frame (output has original length) tt <- terms(object) if(is.null(newdata)){ # return fitted values of estimated model and exit result <- fitted_exp.plm(object, ...) # fitted_exp.plm gives outer model's fitted values } else{ Terms <- delete.response(tt) m <- model.frame(Terms, newdata) X <- model.matrix(Terms, m) beta <- coef(object) model <- describe(object, "model") is.pdf <- inherits(newdata, "pdata.frame") if(model == "within") { # remove intercept if contained in the formula/terms and, thus, in the # model matrix # (usually, users does not explicitly suppress the # intercept in FE models (e.g., by response ~ 0 + depvars), but we need # to cater for that suppressed-case as well by has.intercept(tt)) if(has.intercept(tt)) X <- X[ , -1L, drop = FALSE] effect <- describe(object, "effect") effs.orig <- fixef(object, effect = effect) idx <- switch(effect, "individual" = 1L, "time" = 2L) if(is.pdf) { model.idx <- unclass(index(object)) # unclass for speed newdata.idx <- unclass(index(newdata)) if(effect %in% c("individual", "time")) { # one-way model.idx.eff <- model.idx[[idx]] newdata.idx.eff <- newdata.idx[[idx]] effs <- effs.orig[levels(newdata.idx.eff)][newdata.idx.eff] # has length corresponding to newdata if(na.fill & sum(out.of.sample <- !newdata.idx.eff %in% model.idx.eff) > 0L) { pdim <- pdim(object) effs[out.of.sample] <- weighted.mean(effs.orig, w = pdim$Tint[[idx]]) } } else { # two-ways # two-ways case is a little special as the rows of id-time combinations # need to be determined first (not as simple subsetting as in one-way case) model.idx.id <- model.idx[[1L]] model.idx.ti <- model.idx[[2L]] newdata.idx.id <- newdata.idx[[1L]] newdata.idx.ti <- newdata.idx[[2L]] model.idx.tw <- paste(model.idx.id, model.idx.ti, sep = "_") newdata.idx.tw <- paste(newdata.idx.id, newdata.idx.ti, sep = "_") names(effs.orig) <- model.idx.tw effs <- effs.orig[newdata.idx.tw] # has length corresponding to newdata if(na.fill & sum(out.of.sample <- !newdata.idx.tw %in% model.idx.tw) > 0L) { pdim <- pdim(object) effs[out.of.sample] <- mean(effs.orig) } } } else { # newdata is not a pdata.frame: use (weighted) mean of fixed effects as best guess # (argument na.fill is not evaluated here as for a data.frame all values would # be NA, so rather weighted mean of fixed effects is always applied) warning("Data supplied in argument 'newdata' is not a pdata.frame; weighted mean of fixed effects as in original model used for prediction, see ?predict.plm.") pdim <- pdim(object) effs <- if(na.fill) { if(effect == "twoways") mean(effs.orig) else weighted.mean(effs.orig, w = pdim$Tint[[idx]]) } else NA effs <- rep(effs, nrow(X)) } } # end-if model == "within" result <- as.numeric(tcrossprod(beta, X)) + if(model == "within") effs else 0 # if newdata is a pdata.frame output a pseries w/ index stripped down to what # is left after NA-omitting (performed implicitly by model.frame) if(is.pdf) { result.index <- if(!is.null(rmrows <- unclass(attr(m, "na.action")))) index(newdata[-rmrows, ]) else index(newdata) result <- add_pseries_features(result, result.index) } names(result) <- rownames(m) } result } #' @rdname plm #' @export formula.plm <- function(x, ...){ x$formula } #' @rdname plm #' @export plot.plm <- function(x, dx = 0.2, N = NULL, seed = 1, within = TRUE, pooling = TRUE, between = FALSE, random = FALSE, ...){ set.seed(seed)# 8 est bien pour beertax subs <- ! is.null(N) x <- update(x, model = "within") mco <- update(x, model = "pooling") if (random) re <- update(x, model = "random") if (between) be <- update(x, model = "between") pdim <- pdim(x) n <- pdim$nT$n if (! subs) N <- n ids <- unique(index(x, "id")) if (subs) ids <- ids[sample(seq_along(ids), N, replace = FALSE)] sel <- index(x, "id") %in% ids T. <- pdim$nT$T cols <- rainbow(N) pts <- sample(1:25, N, replace = TRUE) thex <- as.numeric(model.matrix(x, model = "pooling")[sel, 2L]) they <- as.numeric(pmodel.response(x, model = "pooling")[sel]) plot(thex, they, col = rep(cols, each = T.), pch = rep(pts, each = T.), ann = FALSE, las = 1) idsel <- as.numeric(index(x, "id")[sel]) meanx <- tapply(thex, idsel, mean) meany <- tapply(they, idsel, mean) points(meanx, meany, pch = 19, col = cols, cex = 1.5) if (within){ beta <- coef(x) alphas <- meany - meanx * beta dx <- dx * (max(thex) - min(thex)) for (i in seq_len(N)){ xmin <- meanx[i] - dx xmax <- meanx[i] + dx ymin <- alphas[i] + beta * xmin ymax <- alphas[i] + beta * xmax lines(c(xmin, xmax), c(ymin, ymax), col = cols[i]) } } if(random) abline(coef(re)[1L], coef(re)[2L], lty = "dotted") if(pooling) abline(coef(mco), lty = "dashed") if(between) abline(coef(be), lty = "dotdash") # where to put the legends, depends on the sign of the OLS slope modploted <- c(random, pooling, between, within) if (sum(modploted)){ poslegend <- ifelse(beta > 0, "topleft", "topright") ltylegend <- c("dotted", "dashed", "dotdash", "solid")[modploted] leglegend <- c("random", "pooling", "between", "within")[modploted] legend(poslegend, lty = ltylegend, legend = leglegend) } } #' @rdname plm #' @export residuals.plm <- function(object, model = NULL, effect = NULL, ...){ if (is.null(model) && is.null(effect)){ model <- describe(object, "model") res <- object$residuals } else{ cl <- match.call(expand.dots = FALSE) # fitted -> call to the plm method, used to be fitted.plm # which is not exported # cl[[1L]] <- as.name("fitted.plm") cl[[1L]] <- as.name("fitted") bX <- eval(cl, parent.frame()) if (is.null(model)) model <- describe(object, "model") if (is.null(effect)) effect <- describe(object, "effect") y <- pmodel.response(object, model = model, effect = effect) res <- y - bX } res <- if (model %in% c("between", "fd")) { # these models "compress" the data, thus an index does not make sense here # -> do not return pseries but plain numeric res } else { structure(res, index = index(object), class = unique(c("pseries", class(res)))) } return(res) } #' @rdname plm #' @export fitted.plm <- function(object, model = NULL, effect = NULL, ...){ fittedmodel <- describe(object, "model") if (is.null(model)) model <- fittedmodel if (is.null(effect)) effect <- describe(object, "effect") if (fittedmodel == "random") theta <- ercomp(object)$theta else theta <- NULL X <- model.matrix(object, model = "pooling") y <- pmodel.response(object, model = "pooling", effect = effect) beta <- coef(object) comonpars <- intersect(names(beta), colnames(X)) bX <- as.numeric(crossprod(t(X[, comonpars, drop = FALSE]), beta[comonpars])) bX <- structure(bX, index = index(object), class = unique(c("pseries", class(bX)))) if (fittedmodel == "within"){ intercept <- mean(y - bX) bX <- bX + intercept } ptransform(bX, model = model, effect = effect, theta = theta) } plm/R/make.pconsecutive_pbalanced.R0000644000176200001440000007636414463637374017043 0ustar liggesusers### This file: ### make.pconsecutive.* ### make.pbalanced.* ### ### is.pconsecutive.* is in separate file is.pconsecutive.R # consecutive: "consecutive in the numbers": t, t+1, t+2, ... where t is an integer, # i.e., the time index var is interpreted as a numerical # ## in the future, maybe make.pconsective could gain an additional argument 'fill' for the filled value (currently NA) ## if so, check other packages (data.table, dplyr, tidyr, ...) what the argument is called there ## arg would need to be a (named) list (for (p)data.frame methods) because columns of ## (p)data.frames are of arbitrary classes #' Make data consecutive (and, optionally, also balanced) #' #' This function makes the data consecutive for each individual (no "gaps" in #' time dimension per individual) and, optionally, also balanced #' #' (p)data.frame and pseries objects are made consecutive, meaning their time #' periods are made consecutive per individual. For consecutiveness, the time #' dimension is interpreted to be numeric, and the data are extended to a #' regularly spaced sequence with distance 1 between the time periods for each #' individual (for each individual the time dimension become a sequence t, t+1, #' t+2, \ldots{}, where t is an integer). Non--index variables are filled with #' `NA` for the inserted elements (rows for (p)data.frames, vector #' elements for pseries). #' #' With argument `balanced = TRUE`, additionally to be made consecutive, #' the data also can be made a balanced panel/pseries. Note: This means #' consecutive AND balanced; balancedness does not imply consecutiveness. In #' the result, each individual will have the same time periods in their time #' dimension by taking the min and max of the time index variable over all #' individuals (w/o `NA` values) and inserting the missing time periods. #' Looking at the number of rows of the resulting (pdata.frame) (elements for #' pseries), this results in `nrow(make.pconsecutive(<.>, balanced = FALSE))` <= #' `nrow(make.pconsecutive(<.>, balanced = TRUE))`. For making the data only #' balanced, i.e., not demanding consecutiveness at the same time, use #' [make.pbalanced()] (see **Examples** for a comparison)). #' #' Note: rows of (p)data.frames (elements for pseries) with `NA` values in #' individual or time index are not examined but silently dropped before the #' data are made consecutive. In this case, it is not clear which individual or #' time period is meant by the missing value(s). Especially, this means: If #' there are `NA` values in the first/last position of the original time #' periods for an individual, which usually depicts the beginning and ending of #' the time series for that individual, the beginning/end of the resulting time #' series is taken to be the min and max (w/o `NA` values) of the original #' time series for that individual, see also **Examples**. Thus, one might #' want to check if there are any `NA` values in the index variables #' before applying `make.pconsecutive`, and especially check for `NA` values #' in the first and last position for each individual in original data and, if #' so, maybe set those to some meaningful begin/end value for the time series. #' #' @aliases make.pconsecutive #' @param x an object of class `pdata.frame`, `data.frame`, #' or `pseries`, #' @param balanced logical, indicating whether the data should #' _additionally_ be made balanced (default: FALSE), #' @param index only relevant for `data.frame` interface; if #' `NULL`, the first two columns of the data.frame are #' assumed to be the index variables; if not `NULL`, both #' dimensions ('individual', 'time') need to be specified by #' `index` as character of length 2 for data frames, for #' further details see [pdata.frame()], #' @param \dots further arguments. #' @return An object of the same class as the input `x`, i.e., a #' pdata.frame, data.frame or a pseries which is made #' time--consecutive based on the index variables. The returned #' data are sorted as a stacked time series. #' @export #' @author Kevin Tappe #' @seealso [is.pconsecutive()] to check if data are #' consecutive; [make.pbalanced()] to make data only #' balanced (not consecutive).\cr [punbalancedness()] #' for two measures of unbalancedness, [pdim()] to check #' the dimensions of a 'pdata.frame' (and other objects), #' [pvar()] to check for individual and time variation #' of a 'pdata.frame' (and other objects), [lag()] for #' lagged (and leading) values of a 'pseries' object.\cr #' [pseries()], [data.frame()], #' [pdata.frame()]. #' @keywords attribute #' @examples #' #' # take data and make it non-consecutive #' # by deletion of 2nd row (2nd time period for first individual) #' data("Grunfeld", package = "plm") #' nrow(Grunfeld) # 200 rows #' Grunfeld_missing_period <- Grunfeld[-2, ] #' is.pconsecutive(Grunfeld_missing_period) # check for consecutiveness #' make.pconsecutive(Grunfeld_missing_period) # make it consecutiveness #' #' #' # argument balanced: #' # First, make data non-consecutive and unbalanced #' # by deletion of 2nd time period (year 1936) for all individuals #' # and more time periods for first individual only #' Grunfeld_unbalanced <- Grunfeld[Grunfeld$year != 1936, ] #' Grunfeld_unbalanced <- Grunfeld_unbalanced[-c(1,4), ] #' all(is.pconsecutive(Grunfeld_unbalanced)) # FALSE #' pdim(Grunfeld_unbalanced)$balanced # FALSE #' #' g_consec_bal <- make.pconsecutive(Grunfeld_unbalanced, balanced = TRUE) #' all(is.pconsecutive(g_consec_bal)) # TRUE #' pdim(g_consec_bal)$balanced # TRUE #' nrow(g_consec_bal) # 200 rows #' head(g_consec_bal) # 1st individual: years 1935, 1936, 1939 are NA #' #' g_consec <- make.pconsecutive(Grunfeld_unbalanced) # default: balanced = FALSE #' all(is.pconsecutive(g_consec)) # TRUE #' pdim(g_consec)$balanced # FALSE #' nrow(g_consec) # 198 rows #' head(g_consec) # 1st individual: years 1935, 1936 dropped, 1939 is NA #' #' #' # NA in 1st, 3rd time period (years 1935, 1937) for first individual #' Grunfeld_NA <- Grunfeld #' Grunfeld_NA[c(1, 3), "year"] <- NA #' g_NA <- make.pconsecutive(Grunfeld_NA) #' head(g_NA) # 1936 is begin for 1st individual, 1937: NA for non-index vars #' nrow(g_NA) # 199, year 1935 from original data is dropped #' #' #' # pdata.frame interface #' pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) #' make.pconsecutive(Grunfeld_missing_period) #' #' #' # pseries interface #' make.pconsecutive(pGrunfeld_missing_period$inv) #' #' #' # comparison to make.pbalanced (makes the data only balanced, not consecutive) #' g_bal <- make.pbalanced(Grunfeld_unbalanced) #' all(is.pconsecutive(g_bal)) # FALSE #' pdim(g_bal)$balanced # TRUE #' nrow(g_bal) # 190 rows #' make.pconsecutive <- function(x, ...){ UseMethod("make.pconsecutive") } # no export needed make.pconsecutive_indexes <- function(x, index, balanced = FALSE, ...) { # make.pconsecutive_indexes: helper function, not exported # returns list with 3 elements: # 1 "consec_index": consecutive data.frame to serve as the new index data.frame in other functions, # 2 "NArows_former_index": information about dropped lines (logical vector with length of original data) # 3 "has_fancy_rownames": logical whether fancy row.names were used in original data (can only be TRUE for pdata.frame or pseries) if (inherits(x, "pdata.frame") || inherits(x, "pseries")) { pdataframe_or_pseries <- TRUE index_orig <- attr(x, which = "index") id_orig <- index_orig[[1L]] # can leave as factor if it is a factor times_orig <- index_orig[[2L]] if (!is.numeric(times_orig) && is.factor(times_orig)) times_orig <- as.numeric(levels(times_orig))[as.integer(times_orig)] # time var needs to be numeric [as.character needed here!] # [R FAQ 7.10 for coercing factors to numeric # as.numeric(levels(factor_var))[as.integer(factor_var)] is more efficient than as.numeric(as.character(factor_var)) # check if fancy rownames are used (to restore them later) if (inherits(x, "pseries")) { has_fancy_rownames <- isTRUE(all.equal(names(x), fancy.row.names(index_orig))) rownames_mode <- mode(attr(x, "names")) rownames_typeof <- typeof(attr(x, "names")) } else { # pdata.frame has_fancy_rownames <- isTRUE(all.equal(row.names(x), fancy.row.names(index_orig))) rownames_mode <- mode(attr(x, "row.names")) rownames_typeof <- typeof(attr(attr(x, "index"), "row.names")) # here we want the typeof of the index } } if (inherits(x, "data.frame") && !inherits(x, "pdata.frame")) { # x is a data.frame, but no pdata.frame pdataframe_or_pseries <- FALSE has_fancy_rownames <- FALSE index_orig <- x[ , index] id_orig <- index_orig[[1L]] times_orig <- index_orig[[2L]] id_orig_typeof <- typeof(id_orig) times_orig_typeof <- typeof(times_orig) rownames_mode <- mode(attr(x, "row.names")) rownames_typeof <- typeof(attr(x, "row.names")) } df_index <- data.frame(id = id_orig, times = times_orig) # remove any rows with NA in id or time variable as it is impossible to # infer their values, thus: drop them is_NA <- is.na(id_orig) | is.na(times_orig) df_index <- df_index[!is_NA, ] n_id_orig <- length(unique(id_orig)) if (!balanced) { min_values <- by(df_index[ , "times"], df_index[ , "id"], min) max_values <- by(df_index[ , "times"], df_index[ , "id"], max) times_filled_list <- sapply(seq_len(n_id_orig), function(i) { seq(from = min_values[i], to = max_values[i], by = 1) }, simplify = FALSE, USE.NAMES = FALSE) } else { min_value <- min(df_index[, "times"]) max_value <- max(df_index[, "times"]) times_filled_list <- sapply(seq_len(n_id_orig), function(i) { seq(from = min_value, to = max_value, by = 1) }, simplify = FALSE, USE.NAMES = FALSE) } times_filled_vector <- unlist(times_filled_list, use.names = FALSE) id_times <- lengths(times_filled_list, use.names = FALSE) id_filled_vector <- unlist(mapply(rep, unique(id_orig), id_times, SIMPLIFY = FALSE), use.names = FALSE) # SIMPLIFY = FALSE => always return list df_index_filled <- data.frame(id = id_filled_vector, times = times_filled_vector) names(df_index_filled)[1:2] <- names(index_orig)[1:2] # set original index names if (pdataframe_or_pseries) { df_index_filled[ , 1L] <- as.factor(df_index_filled[ , 1L]) df_index_filled[ , 2L] <- as.factor(df_index_filled[ , 2L]) class(df_index_filled) <- c("pindex", class(df_index_filled)) } else { if (typeof(df_index_filled[ , 1L]) != id_orig_typeof) { mode(df_index_filled[ , 1L]) <- id_orig_typeof } if (typeof(df_index_filled[ , 2L]) != times_orig_typeof) { mode(df_index_filled[ , 2L]) <- times_orig_typeof } } # restore mode of row.names attribute # [was changed by above code due to some simplification by R's standard behaviour] mode(attr(df_index_filled, "row.names")) <- rownames_typeof res <- list(consec_index = df_index_filled, NArows_former_index = is_NA, has_fancy_rownames = has_fancy_rownames) return(res) } ### END: make.pconsecutive_indexes #' @rdname make.pconsecutive #' @export make.pconsecutive.data.frame <- function(x, balanced = FALSE, index = NULL, ...){ # if not NULL, index is must be character of length 2 if (!is.null(index) && length(index) != 2L) stop("if argument 'index' is not NULL, 'index' needs to specify 'individual' and 'time' dimension for make.pconsecutive to work on a data.frame") # assume first two columns to be the index vars index_orig_names <- if(is.null(index)) names(x)[1:2] else index list_ret_make_index <- make.pconsecutive_indexes(x, index_orig_names, balanced = balanced, ...) index_df_filled <- list_ret_make_index[["consec_index"]] NArows_old_index <- list_ret_make_index[["NArows_former_index"]] has_fancy_rownames <- list_ret_make_index[["has_fancy_rownames"]] # silently drop rows with NA in either individual or time variable of original index x <- x[!NArows_old_index, ] index_df_filled_plus_x <- merge(index_df_filled, x, by.x = names(index_df_filled)[1:2], by.y = index_orig_names, all.x = TRUE) # restore mode of row.names attribute [was changed by above code due to some simplification as R's standard behaviour] mode(attr(index_df_filled_plus_x, "row.names")) <- typeof(attr(index_df_filled, "row.names")) # restore original order of columns, esp. place index vars at original position index_df_filled_plus_x <- index_df_filled_plus_x[ , names(x)] return(index_df_filled_plus_x) } ### END: make.pconsecutive.data.frame #' @rdname make.pconsecutive #' @export make.pconsecutive.pdata.frame <- function(x, balanced = FALSE, ...){ orig_column_names <- names(x) list_ret_make_index <- make.pconsecutive_indexes(x, balanced = balanced, ...) index_df_filled <- list_ret_make_index[["consec_index"]] NArows_old_index <- list_ret_make_index[["NArows_former_index"]] has_fancy_rownames <- list_ret_make_index[["has_fancy_rownames"]] # silently drop rows with NA in either individual or time variable of original index # do dropping only if there is any NA row, because calling the subsetting slightly changes the pdata.frame if (any(NArows_old_index)) x <- x[!NArows_old_index, ] # if index not as vars in pdata.frame: pad index vars in columns 1,2 to enable merging # determine position of index vars is c(NA, NA) if index vars are not columns in x pos_indexvars <- pos.index(x) index_orig_names <- names(pos_indexvars) if (anyNA(pos_indexvars)) { index_orig <- attr(x, "index") x <- cbind(index_orig, x) } x_df_filled <- merge(index_df_filled, x, by = index_orig_names, all.x = TRUE) # merge produces a pdata.frame with 'pseries' in columns (if [.pseries is active]) # -> remove pseries features from columns x_df_filled <- lapply(x_df_filled, remove_pseries_features) # make pdata.frame (index vars are already in columns 1,2) x_pdf_filled <- pdata.frame(x_df_filled, row.names = has_fancy_rownames) # save order of attributes to restore order later # attrib_names_before <- names(attributes(x_pdf_filled)) # restore original order of columns: # this also places index vars at original position or drops them if they were not in original pdata.frame # (do only if order of columns differs or index is not in pdata.frame to avoid adding extra attributes by subsetting) if (!isTRUE(all.equal(orig_column_names, names(x_pdf_filled)))) x_pdf_filled <- x_pdf_filled[ , orig_column_names] # restore mode of row.names attribute [was changed by above code due to some simplification as R's standard behaviour] mode(attr(attr(x_pdf_filled, "index"), "row.names")) <- typeof(attr(index_df_filled, "row.names")) # reorder attributes: subsetting with R's [.data.frame changes order # order of attribute shall be assumed to be a set rather than having an order, see do not reorder (see ?attributes) ## attributes(x_pdf_filled) <- attributes(x_pdf_filled)[attrib_names_before] return(x_pdf_filled) } ### END: make.pconsecutive.pdata.frame #' @rdname make.pconsecutive #' @export make.pconsecutive.pseries <- function(x, balanced = FALSE, ...) { is_p <- is.pconsecutive(x) is_bal <- is.pbalanced(x) make_balanced <- balanced == TRUE && !is_bal # consecutive AND balancedness requested but data not balanced # -> independent of the consecutiveness, we need to treat the balancedness if (anyNA(is_p) || !all(is_p) || make_balanced) { list_ret_make_index <- make.pconsecutive_indexes(x, balanced = balanced, ...) df_index_filled <- list_ret_make_index[["consec_index"]] NArows_old_index <- list_ret_make_index[["NArows_former_index"]] has_fancy_rownames <- list_ret_make_index[["has_fancy_rownames"]] df_old_index <- attr(x, "index") class(df_old_index) <- "data.frame" # strip x to its pure form (no index, no class pseries) df_old_index$x <- remove_pseries_features(x) # silently drop entries with NA in either individual or time variable of original index df_old_index <- df_old_index[!NArows_old_index, ] df_index_filled_plus_x <- merge(df_index_filled, df_old_index, by.x = names(df_index_filled)[1:2], by.y = names(df_old_index)[1:2], all.x = TRUE) pdf_index_filled_plus_x <- pdata.frame(df_index_filled_plus_x, drop.index = FALSE, row.names = has_fancy_rownames) x <- pdf_index_filled_plus_x$x } return(x) } ############# make.pbalanced ############# ## make.pbalanced.* methods make the input balanced (but not consecutive). ## It does so by either ## balance.type = "fill": filling in only those missing time periods are ## introduced that are present for at least one individual ## (union of time periods) ## ## balance.type = "shared.times": remove all observations with time periods ## not shared among all individuals ## (keep intersect of time periods) ## ## "shared.individuals": drop individuals which don't have all time periods ## (symmetric to "shared.times") #' Make data balanced #' #' This function makes the data balanced, i.e., each individual has the same #' time periods, by filling in or dropping observations #' #' (p)data.frame and pseries objects are made balanced, meaning each #' individual has the same time periods. Depending on the value of #' `balance.type`, the balancing is done in different ways: #' \itemize{ \item `balance.type = "fill"` (default): The union #' of available time periods over all individuals is taken (w/o #' `NA` values). Missing time periods for an individual are #' identified and corresponding rows (elements for pseries) are #' inserted and filled with `NA` for the non--index variables #' (elements for a pseries). This means, only time periods present #' for at least one individual are inserted, if missing. #' #' \item `balance.type = "shared.times"`: The intersect of available time #' periods over all individuals is taken (w/o `NA` values). Thus, time #' periods not available for all individuals are discarded, i. e., only time #' periods shared by all individuals are left in the result). #' #' \item `balance.type = "shared.individuals"`: All available time periods #' are kept and those individuals are dropped for which not all time periods #' are available, i. e., only individuals shared by all time periods are left #' in the result (symmetric to `"shared.times"`). } #' #' The data are not necessarily made consecutive (regular time series #' with distance 1), because balancedness does not imply #' consecutiveness. For making the data consecutive, use #' [make.pconsecutive()] (and, optionally, set argument #' `balanced = TRUE` to make consecutive and balanced, see also #' **Examples** for a comparison of the two functions. #' #' Note: Rows of (p)data.frames (elements for pseries) with `NA` #' values in individual or time index are not examined but silently #' dropped before the data are made balanced. In this case, it cannot #' be inferred which individual or time period is meant by the missing #' value(s) (see also **Examples**). Especially, this means: #' `NA` values in the first/last position of the original time #' periods for an individual are dropped, which are usually meant to #' depict the beginning and ending of the time series for that #' individual. Thus, one might want to check if there are any #' `NA` values in the index variables before applying #' `make.pbalanced`, and especially check for `NA` values in the #' first and last position for each individual in original data and, #' if so, maybe set those to some meaningful begin/end value for the #' time series. #' #' @aliases make.pbalanced #' @param x an object of class `pdata.frame`, `data.frame`, #' or `pseries`; #' @param balance.type character, one of `"fill"`, #' `"shared.times"`, or `"shared.individuals"`, see #' **Details**, #' @param index only relevant for `data.frame` interface; if #' `NULL`, the first two columns of the data.frame are #' assumed to be the index variables; if not `NULL`, both #' dimensions ('individual', 'time') need to be specified by #' `index` as character of length 2 for data frames, for #' further details see [pdata.frame()], #' @param \dots further arguments. #' @return An object of the same class as the input `x`, i.e., a #' pdata.frame, data.frame or a pseries which is made balanced #' based on the index variables. The returned data are sorted as a #' stacked time series. #' @export #' @author Kevin Tappe #' @seealso [is.pbalanced()] to check if data are balanced; #' [is.pconsecutive()] to check if data are consecutive; #' [make.pconsecutive()] to make data consecutive (and, #' optionally, also balanced).\cr [punbalancedness()] #' for two measures of unbalancedness, [pdim()] to check #' the dimensions of a 'pdata.frame' (and other objects), #' [pvar()] to check for individual and time variation #' of a 'pdata.frame' (and other objects), [lag()] for #' lagging (and leading) values of a 'pseries' object.\cr #' [pseries()], [data.frame()], #' [pdata.frame()]. #' @keywords attribute #' @examples #' #' # take data and make it unbalanced #' # by deletion of 2nd row (2nd time period for first individual) #' data("Grunfeld", package = "plm") #' nrow(Grunfeld) # 200 rows #' Grunfeld_missing_period <- Grunfeld[-2, ] #' pdim(Grunfeld_missing_period)$balanced # check if balanced: FALSE #' make.pbalanced(Grunfeld_missing_period) # make it balanced (by filling) #' make.pbalanced(Grunfeld_missing_period, balance.type = "shared.times") # (shared periods) #' nrow(make.pbalanced(Grunfeld_missing_period)) #' nrow(make.pbalanced(Grunfeld_missing_period, balance.type = "shared.times")) #' #' # more complex data: #' # First, make data unbalanced (and non-consecutive) #' # by deletion of 2nd time period (year 1936) for all individuals #' # and more time periods for first individual only #' Grunfeld_unbalanced <- Grunfeld[Grunfeld$year != 1936, ] #' Grunfeld_unbalanced <- Grunfeld_unbalanced[-c(1,4), ] #' pdim(Grunfeld_unbalanced)$balanced # FALSE #' all(is.pconsecutive(Grunfeld_unbalanced)) # FALSE #' #' g_bal <- make.pbalanced(Grunfeld_unbalanced) #' pdim(g_bal)$balanced # TRUE #' unique(g_bal$year) # all years but 1936 #' nrow(g_bal) # 190 rows #' head(g_bal) # 1st individual: years 1935, 1939 are NA #' #' # NA in 1st, 3rd time period (years 1935, 1937) for first individual #' Grunfeld_NA <- Grunfeld #' Grunfeld_NA[c(1, 3), "year"] <- NA #' g_bal_NA <- make.pbalanced(Grunfeld_NA) #' head(g_bal_NA) # years 1935, 1937: NA for non-index vars #' nrow(g_bal_NA) # 200 #' #' # pdata.frame interface #' pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) #' make.pbalanced(Grunfeld_missing_period) #' #' # pseries interface #' make.pbalanced(pGrunfeld_missing_period$inv) #' #' # comparison to make.pconsecutive #' g_consec <- make.pconsecutive(Grunfeld_unbalanced) #' all(is.pconsecutive(g_consec)) # TRUE #' pdim(g_consec)$balanced # FALSE #' head(g_consec, 22) # 1st individual: no years 1935/6; 1939 is NA; #' # other indviduals: years 1935-1954, 1936 is NA #' nrow(g_consec) # 198 rows #' #' g_consec_bal <- make.pconsecutive(Grunfeld_unbalanced, balanced = TRUE) #' all(is.pconsecutive(g_consec_bal)) # TRUE #' pdim(g_consec_bal)$balanced # TRUE #' head(g_consec_bal) # year 1936 is NA for all individuals #' nrow(g_consec_bal) # 200 rows #' #' head(g_bal) # no year 1936 at all #' nrow(g_bal) # 190 rows #' make.pbalanced <- function(x, balance.type = c("fill", "shared.times", "shared.individuals"), ...) { UseMethod("make.pbalanced") } #' @rdname make.pbalanced #' @export make.pbalanced.pdata.frame <- function(x, balance.type = c("fill", "shared.times", "shared.individuals"), ...) { balance.type <- match.arg(balance.type) index <- attr(x, "index") switch(balance.type, "fill" = { x_consec_bal <- make.pconsecutive(x, balanced = TRUE) # delete time periods that were not present for any individual, but introduced by # making data consecutive # result: no time periods are added that are not present for at least one individual times_present_orig <- attr(x_consec_bal, "index")[[2L]] %in% unique(index[[2L]]) result <- x_consec_bal[times_present_orig, ] # drop not present factor levels (some new levels were introduced by making data consecutive first): # drop from index index_result <- attr(result, "index") index_result[[2L]] <- droplevels(index_result[[2L]]) attr(result, "index") <- index_result # drop from time column (if time index column present in pdata.frame) pos_indexvars <- pos.index(result) # position of index vars is c(NA, NA) if index vars are not present as columns index_orig_names <- names(pos_indexvars) if (!anyNA(pos_indexvars)) { result[ , pos_indexvars[2L]] <- droplevels(result[ , pos_indexvars[2L]]) } }, "shared.times" = { keep <- intersect_index(index, "time") result <- x[keep, ] }, "shared.individuals" = { keep <- intersect_index(index, "individual") result <- x[keep, ] }) return(result) } ## END make.pbalanced.pdata.frame #' @rdname make.pbalanced #' @export make.pbalanced.pseries <- function(x, balance.type = c("fill", "shared.times", "shared.individuals"), ...) { balance.type <- match.arg(balance.type) index <- attr(x, "index") switch(balance.type, "fill" = { x_consec_bal <- make.pconsecutive(x, balanced = TRUE) # delete time periods that were not present for any individual, but introduced by # making data consecutive # result: no time periods are added that are not present for at least one individual x_consec_bal_index <- attr(x_consec_bal, "index") times_present_orig <- x_consec_bal_index[[2L]] %in% unique(index[[2L]]) result <- x_consec_bal[times_present_orig] # this drops the pseries features (index, class "pseries") # because there is no function "[.pseries]" (as of 2016-05-14) # drop introduced extra periods also from index x_consec_bal_index <- x_consec_bal_index[times_present_orig, ] # re-attach index and restore original class(es) attr(result, "index") <- x_consec_bal_index attr(result, "class") <- attr(x, "class") }, "shared.times" = { keep <- intersect_index(index, "time") result <- x[keep] # restore 'pseries' features # (no subsetting method for pseries in the package (yet), # usual vector subsetting removes the pseries features) attr(result, "index") <- index[keep, ] class(result) <- unique(c("pseries", class(result))) }, "shared.individuals" = { keep <- intersect_index(index, "individual") result <- x[keep] # restore 'pseries' features # (no subsetting method for pseries in the package (yet), # usual vector subsetting removes the pseries features) attr(result, "index") <- index[keep, ] class(result) <- unique(c("pseries", class(result))) }) return(result) } ## END make.pbalanced.pseries #' @rdname make.pbalanced #' @export make.pbalanced.data.frame <- function(x, balance.type = c("fill", "shared.times", "shared.individuals"), index = NULL, ...) { # NB: for data.frame interface: the data is also sorted as stack time series balance.type <- match.arg(balance.type) ## identify index of data.frame # if not NULL, index is must be character of length 2 if (!is.null(index) && length(index) != 2L) stop("if argument 'index' is not NULL, 'index' needs to specify 'individual' and 'time' dimension for make.pconsecutive to work on a data.frame") # assume first two columns to be the index vars if (is.null(index)) index_orig_names <- names(x)[1:2] else index_orig_names <- index index_df <- x[ , index_orig_names] switch(balance.type, "fill" = { x_consec_bal <- make.pconsecutive(x, index = index_orig_names, balanced = TRUE) # delete time periods that were not present for any individual, but introduced by # making data consecutive # result: no time periods are added that are not present for at least one individual times_present_orig <- x_consec_bal[ , index_orig_names[2L]] %in% unique(index_df[[2L]]) result <- x_consec_bal[times_present_orig , ]}, "shared.times" = { keep <- intersect_index(index_df, "time") result <- x[keep, ]}, "shared.individuals" = { keep <- intersect_index(index_df, "individual") result <- x[keep, ] }) return(result) } ## END make.pbalanced.data.frame # helper function: returns logical vector which rows/entries to keep # when balance.type = "shared.times" or "shared.individuals" # (intersect of all time periods or individuals) intersect_index <- function(index, by) { # intersect() is defined on vectors (not factors) # -> convert respective index to character before unclass(index) # unclass for speed switch(by, "time" = { id <- index[[1L]] time <- as.character(index[[2L]]) }, "individual" = { id <- index[[2L]] time <- as.character(index[[1L]]) }) times_by_ids <- collapse::gsplit(time, id) # was: times_by_ids <- split(time, id) common_times <- Reduce(intersect, times_by_ids) keep_entries <- time %in% common_times return(keep_entries) } plm/R/est_plm.R0000644000176200001440000007560214463547422013056 0ustar liggesusersstarX <- function(formula, data, model, rhs = 1, effect){ # non-exported, used for IV estimations "am" and "bms" # produces a column per time period with the (transformed) data # NB: function is not symmetric in individual and time effect apdim <- pdim(data) amatrix <- model.matrix(data, model, effect, rhs) T <- apdim$nT$T N <- apdim$nT$n if (apdim$balanced){ result <- Reduce("cbind", lapply(seq_len(ncol(amatrix)), function(x) matrix(amatrix[ , x], ncol = T, byrow = TRUE)[rep(1:N, each = T), ])) } else{ # unbalanced Ti <- apdim$Tint$Ti result <- lapply(seq_len(ncol(amatrix)), function(x) structure(amatrix[ , x], index = index(data), class = c("pseries", class(amatrix[ , x])))) result <- Reduce("cbind", lapply(result, as.matrix)) result <- result[rep(1:N, times = Ti), ] result[is.na(result)] <- 0 } result } # Regards plm man page: some elements not listed here...: "assign", "contrast", # etc... \item{na.action}{if relevant, information about handling of # NAs by the model.frame function,} # NB: na.action is currently not included as it is not supported #' Panel Data Estimators #' #' Linear models for panel data estimated using the `lm` function on #' transformed data. #' #' `plm` is a general function for the estimation of linear panel #' models. It supports the following estimation methods: pooled OLS #' (`model = "pooling"`), fixed effects (`"within"`), random effects #' (`"random"`), first--differences (`"fd"`), and between #' (`"between"`). It supports unbalanced panels and two--way effects #' (although not with all methods). #' #' For random effects models, four estimators of the transformation #' parameter are available by setting `random.method` to one of #' `"swar"` \insertCite{SWAM:AROR:72}{plm} (default), `"amemiya"` #' \insertCite{AMEM:71}{plm}, `"walhus"` #' \insertCite{WALL:HUSS:69}{plm}, or `"nerlove"` #' \insertCite{NERLO:71}{plm} (see below for Hausman-Taylor instrumental #' variable case). #' #' The nested random effect model (\insertCite{BALT:SONG:JUNG:01}{plm}) #' is estimated by setting `model = "random"` and `effect = "nested"`, #' requiring the data to be indexed by a third index in which the "individual" #' dimension is nested (see section *Examples* and the vignette #' "Estimation of error components models with the plm function".) #' #' For first--difference models, the intercept is maintained (which #' from a specification viewpoint amounts to allowing for a trend in #' the levels model). The user can exclude it from the estimated #' specification the usual way by adding `"-1"` to the model formula. #' #' Instrumental variables estimation is obtained using two--part #' formulas, the second part indicating the instrumental variables #' used. This can be a complete list of instrumental variables or an #' update of the first part. If, for example, the model is `y ~ x1 + #' x2 + x3`, with `x1` and `x2` endogenous and `z1` and `z2` external #' instruments, the model can be estimated with: #' #' \itemize{ #' \item `formula = y~x1+x2+x3 | x3+z1+z2`, #' \item `formula = y~x1+x2+x3 | . -x1-x2+z1+z2`. #' } #' #' If an instrument variable estimation is requested, argument #' `inst.method` selects the instrument variable transformation #' method: #' #' - `"bvk"` (default) for \insertCite{BALE:VARA:87;textual}{plm}, #' - `"baltagi"` for \insertCite{BALT:81;textual}{plm}, #' - `"am"` for \insertCite{AMEM:MACU:86;textual}{plm}, #' - `"bms"` for \insertCite{BREU:MIZO:SCHM:89;textual}{plm}. #' #' The Hausman--Taylor estimator \insertCite{HAUS:TAYL:81}{plm} is #' computed with arguments `random.method = "ht"`, `model = "random"`, #' `inst.method = "baltagi"` (the other way with only `model = "ht"` #' is deprecated). #' #' See also the vignettes for introductions to model estimations (and more) with #' examples. #' #' @aliases plm #' @param formula a symbolic description for the model to be #' estimated, #' @param x,object an object of class `"plm"`, #' @param data a `data.frame`, #' @param subset see [stats::lm()], #' @param weights see [stats::lm()], #' @param na.action see [stats::lm()]; currently, not fully #' supported, #' @param effect the effects introduced in the model, one of #' `"individual"`, `"time"`, `"twoways"`, or #' `"nested"`, #' @param model one of `"pooling"`, `"within"`, #' `"between"`, `"random"` `"fd"`, or `"ht"`, #' @param random.method method of estimation for the variance #' components in the random effects model, one of `"swar"` #' (default), `"amemiya"`, `"walhus"`, `"nerlove"`; for #' Hausman-Taylor estimation set to `"ht"` (see Details and Examples), #' @param random.models an alternative to the previous argument, the #' models used to compute the variance components estimations are #' indicated, #' @param random.dfcor a numeric vector of length 2 indicating which #' degree of freedom should be used, #' @param inst.method the instrumental variable transformation: one of #' `"bvk"`, `"baltagi"`, `"am"`, or `"bms"` (see also Details), #' @param index the indexes, #' @param restrict.matrix a matrix which defines linear restrictions #' on the coefficients, #' @param restrict.rhs the right hand side vector of the linear #' restrictions on the coefficients, #' @param digits number of digits for printed output, #' @param width the maximum length of the lines in the printed output, #' @param dx the half--length of the individual lines for the plot #' method (relative to x range), #' @param N the number of individual to plot, #' @param seed the seed which will lead to individual selection, #' @param within if `TRUE`, the within model is plotted, #' @param pooling if `TRUE`, the pooling model is plotted, #' @param between if `TRUE`, the between model is plotted, #' @param random if `TRUE`, the random effect model is plotted, #' @param formula. a new formula for the update method, #' @param evaluate a boolean for the update method, if `TRUE` the #' updated model is returned, if `FALSE` the call is returned, #' @param \dots further arguments. #' #' @return An object of class `"plm"`. #' #' #' A `"plm"` object has the following elements : #' #' \item{coefficients}{the vector of coefficients,} #' \item{vcov}{the variance--covariance matrix of the coefficients,} #' \item{residuals}{the vector of residuals (these are the residuals #' of the (quasi-)demeaned model),} #' \item{weights}{(only for weighted estimations) weights as #' specified,} #' \item{df.residual}{degrees of freedom of the residuals,} #' \item{formula}{an object of class `"Formula"` describing the model,} #' \item{model}{the model frame as a `"pdata.frame"` containing the #' variables used for estimation: the response is in first column followed by #' the other variables, the individual and time indexes are in the 'index' #' attribute of `model`,} #' \item{ercomp}{an object of class `"ercomp"` providing the #' estimation of the components of the errors (for random effects #' models only),} #' \item{aliased}{named logical vector indicating any aliased #' coefficients which are silently dropped by `plm` due to #' linearly dependent terms (see also [detect.lindep()]),} #' \item{call}{the call.} #' #' #' It has `print`, `summary` and `print.summary` methods. The #' `summary` method creates an object of class `"summary.plm"` that #' extends the object it is run on with information about (inter alia) F #' statistic and (adjusted) R-squared of model, standard errors, t--values, and #' p--values of coefficients, (if supplied) the furnished vcov, see #' [summary.plm()] for further details. #' @import Formula #' @importFrom stats alias approx as.formula coef coefficients cor delete.response #' @importFrom stats deviance df.residual dnorm fitted formula lm lm.fit model.frame #' @importFrom stats model.matrix model.response model.weights na.omit pchisq pf #' @importFrom stats pnorm printCoefmat pt qnorm reshape resid residuals sd terms #' @importFrom stats update var vcov #' @importFrom grDevices heat.colors rainbow #' @importFrom graphics abline axis barplot legend lines plot points #' @export #' @author Yves Croissant #' @seealso [summary.plm()] for further details about the associated #' summary method and the "summary.plm" object both of which provide some model #' tests and tests of coefficients. [fixef()] to compute the fixed #' effects for "within" models (=fixed effects models). [predict.plm()] for #' predicted values. #' @references #' #' \insertRef{AMEM:71}{plm} #' #' \insertRef{AMEM:MACU:86}{plm} #' #' \insertRef{BALE:VARA:87}{plm} #' #' \insertRef{BALT:81}{plm} #' #' \insertRef{BALT:SONG:JUNG:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BREU:MIZO:SCHM:89}{plm} #' #' \insertRef{HAUS:TAYL:81}{plm} #' #' \insertRef{NERLO:71}{plm} #' #' \insertRef{SWAM:AROR:72}{plm} #' #' \insertRef{WALL:HUSS:69}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, index = c("state","year")) #' summary(zz) #' #' # replicates some results from Baltagi (2013), table 3.1 #' data("Grunfeld", package = "plm") #' p <- plm(inv ~ value + capital, #' data = Grunfeld, model = "pooling") #' #' wi <- plm(inv ~ value + capital, #' data = Grunfeld, model = "within", effect = "twoways") #' #' swar <- plm(inv ~ value + capital, #' data = Grunfeld, model = "random", effect = "twoways") #' #' amemiya <- plm(inv ~ value + capital, #' data = Grunfeld, model = "random", random.method = "amemiya", #' effect = "twoways") #' #' walhus <- plm(inv ~ value + capital, #' data = Grunfeld, model = "random", random.method = "walhus", #' effect = "twoways") #' #' # summary and summary with a furnished vcov (passed as matrix, #' # as function, and as function with additional argument) #' summary(wi) #' summary(wi, vcov = vcovHC(wi)) #' summary(wi, vcov = vcovHC) #' summary(wi, vcov = function(x) vcovHC(x, method = "white2")) #' #' #' ## nested random effect model #' # replicate Baltagi/Song/Jung (2001), p. 378 (table 6), columns SA, WH #' # == Baltagi (2013), pp. 204-205 #' data("Produc", package = "plm") #' pProduc <- pdata.frame(Produc, index = c("state", "year", "region")) #' form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp #' summary(plm(form, data = pProduc, model = "random", effect = "nested")) #' summary(plm(form, data = pProduc, model = "random", effect = "nested", #' random.method = "walhus")) #' #' ## Instrumental variable estimations #' # replicate Baltagi (2013/2021), p. 133/162, table 7.1 #' data("Crime", package = "plm") #' FE2SLS <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + #' ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + #' lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) #' | . - lprbarr - lpolpc + ltaxpc + lmix, #' data = Crime, model = "within") #' G2SLS <- update(FE2SLS, model = "random", inst.method = "bvk") #' EC2SLS <- update(G2SLS, model = "random", inst.method = "baltagi") #' #' ## Hausman-Taylor estimator and Amemiya-MaCurdy estimator #' # replicate Baltagi (2005, 2013), table 7.4; Baltagi (2021), table 7.5 #' data("Wages", package = "plm") #' ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + #' bluecol + ind + union + sex + black + ed | #' bluecol + south + smsa + ind + sex + black | #' wks + married + union + exp + I(exp ^ 2), #' data = Wages, index = 595, #' random.method = "ht", model = "random", inst.method = "baltagi") #' summary(ht) #' #' am <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + #' bluecol + ind + union + sex + black + ed | #' bluecol + south + smsa + ind + sex + black | #' wks + married + union + exp + I(exp ^ 2), #' data = Wages, index = 595, #' random.method = "ht", model = "random", inst.method = "am") #' summary(am) #' plm <- function(formula, data, subset, weights, na.action, effect = c("individual", "time", "twoways", "nested"), model = c("within", "random", "ht", "between", "pooling", "fd"), random.method = NULL, random.models = NULL, random.dfcor = NULL, inst.method = c("bvk", "baltagi", "am", "bms"), restrict.matrix = NULL, restrict.rhs = NULL, index = NULL, ...){ if (is.list(formula)){ # if the first argument is a list (of formulas), then call plmlist and early exit plmlist <- match.call(expand.dots = FALSE) plmlist[[1L]] <- as.name("plm.list") # eval in nframe and not the usual parent.frame(), relevant? nframe <- length(sys.calls()) plmlist <- eval(plmlist, sys.frame(which = nframe)) return(plmlist) } if ((! is.null(restrict.matrix) || ! is.null(restrict.rhs)) && ! is.list(formula)) { stop(paste0("arguments 'restrict.matrix' and 'restrict.rhs' cannot yet be used ", "for single equations")) } # match and check the effect and model arguments effect <- match.arg(effect) inst.method <- match.arg(inst.method) # note that model can be NA, in this case the model.frame is returned anyNA.model <- anyNA(model) if (! anyNA.model) model <- match.arg(model) if (! anyNA.model && effect == "nested" && model != "random") { # input check for nested RE model stop(paste0("effect = \"nested\" only valid for model = \"random\", but input is model = \"", model, "\".")) } if (! anyNA.model && model == "fd") { # input checks for FD model: give informative error messages as # described in footnote in vignette if(effect == "time") stop(paste("effect = \"time\" for first-difference model", "meaningless because cross-sections do not", "generally have a natural ordering")) if(effect == "twoways") stop(paste("effect = \"twoways\" is not defined", "for first-difference models")) } # Deprecated section # model = "ht" in plm() and pht() are no longer maintained, but working # -> call pht() and early exit if(! anyNA.model && model == "ht"){ ht <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "index"), names(ht), 0) ht <- ht[c(1L, m)] ht[[1L]] <- as.name("pht") ht <- eval(ht, parent.frame()) return(ht) } orig_rownames <- row.names(data) # save original rownames for later restoring # check whether data and formula are pdata.frame and Formula and if not # coerce them # convert data to pdata.frame; if already pdata.frame input, do a sanity check if(!inherits(data, "pdata.frame")) { data <- pdata.frame(data, index = index, ...) } else is.pdata.frame(data, feedback = "warn") if(!inherits(formula, "Formula")) formula <- as.Formula(formula) # in case of 2-part formula, check whether the second part should # be updated, e.g., y ~ x1 + x2 + x3 | . - x2 + z becomes # y ~ x1 + x2 + x3 | x1 + x3 + z # use length(formula)[2] because the length is now a vector of length 2 # if (length(formula)[2] == 2) formula <- expand.formula(formula) # eval the model.frame cl <- match.call() mf <- match.call(expand.dots = FALSE) m <- match(c("data", "formula", "subset", "weights", "na.action"), names(mf), 0) mf <- mf[c(1L, m)] names(mf)[2:3] <- c("formula", "data") mf$drop.unused.levels <- TRUE mf[[1L]] <- as.name("model.frame") # use the Formula and pdata.frame which were created if necessary (and not # the original formula / data) mf$formula <- data mf$data <- formula data <- eval(mf, parent.frame()) # preserve original row.names for data [also fancy rownames]; so functions # like pmodel.response(), model.frame(), model.matrix(), residuals() return # the original row.names eval(mf, parent.frame()) returns row.names as # character vector containing the "row_number" with incomplete observations # dropped # row.names(data) <- orig_rownames[as.numeric(row.names(data))] ## TODO make this cleaner. This is a dirty workaround to enable sandwich::vcovBS ## on plm objects (vcovBS(fe_complete, cluster=~firm, R = 999)) attr(data, "row.names") <- orig_rownames[as.numeric(row.names(data))] # if model = NA return the model.frame (via early exit), else continue to estimate model if (is.na(model)){ attr(data, "formula") <- formula return(data) } # note that the model.frame has as attributes the Formula and the index # data.frame args <- list(model = model, effect = effect, random.method = random.method, random.models = random.models, random.dfcor = random.dfcor, inst.method = inst.method) result <- plm.fit(data, model, effect, random.method, random.models, random.dfcor, inst.method) result$call <- cl result$args <- args result } plm.fit <- function(data, model, effect, random.method, random.models, random.dfcor, inst.method){ formula <- attr(data, "formula") # check for 0 cases like in stats::lm.fit (e.g., due to NA dropping) if (nrow(data) == 0L) stop("0 (non-NA) cases") # if a random effect model is estimated, compute the error components if (model == "random"){ ## stopping control if (length(formula)[2L] > 1L && effect == "twoways") stop(paste("Instrumental variable random effect estimation", "not implemented for two-ways panels")) is.balanced <- is.pbalanced(data) estec <- ercomp(data, effect, method = random.method, models = random.models, dfcor = random.dfcor) sigma2 <- estec$sigma2 theta <- estec$theta } else theta <- NULL # For all models except the unbalanced twoways random model, the # estimator is obtained as a linear regression on transformed data if (! (model == "random" && effect == "twoways" && ! is.balanced)){ # extract the model.matrix and the model.response actually, this can be # done by providing model.matrix and pmodel.response's methods # to pdata.frames X <- model.matrix(data, rhs = 1, model = model, effect = effect, theta = theta, cstcovar.rm = "all") y <- pmodel.response(data, model = model, effect = effect, theta = theta) if (ncol(X) == 0L) stop("empty model") w <- model.weights(data) if (! is.null(w)){ if (! is.numeric(w)) stop("'weights' must be a numeric vector") if (any(w < 0) || anyNA(w)) stop("missing or negative weights not allowed") X <- X * sqrt(w) y <- y * sqrt(w) } else w <- 1 # IV case: extract the matrix of instruments if necessary # (means here that we have a multi-parts formula) if (length(formula)[2L] > 1L) { if(!is.null(model.weights(data)) || any(w != 1)) stop("argument 'weights' not yet implemented for instrumental variable models") if ( ! (model == "random" && inst.method != "bvk")) { # Pool/FD/FE/BE IV and RE "bvk" IV estimator if (length(formula)[2L] == 2L) { W <- model.matrix(data, rhs = 2, model = model, effect = effect, theta = theta, cstcovar.rm = "all") } else { W <- model.matrix(data, rhs = c(2, 3), model = model, effect = effect, theta = theta, cstcovar.rm = "all") } } if (model == "random" && inst.method != "bvk") { # IV estimators RE "baltagi", "am", and "bms" X <- X / sqrt(sigma2["idios"]) y <- y / sqrt(sigma2["idios"]) W1 <- model.matrix(data, rhs = 2, model = "within", effect = effect, theta = theta, cstcovar.rm = "all") B1 <- model.matrix(data, rhs = 2, model = "Between", effect = effect, theta = theta, cstcovar.rm = "all") if (inst.method %in% c("am", "bms")) StarW1 <- starX(formula, data, rhs = 2, model = "within", effect = effect) if (length(formula)[2L] == 3L) { # eval. 3rd part of formula, if present W2 <- model.matrix(data, rhs = 3, model = "within", effect = effect, theta = theta, cstcovar.rm = "all") if (inst.method == "bms") StarW2 <- starX(formula, data, rhs = 3, model = "within", effect = effect) } else W2 <- StarW2 <- NULL # TODO: here, some weighting is done but prevented earlier by stop()?! # also: RE bvk/BE/FE IV do not have weighting code. if (inst.method == "baltagi") W <- sqrt(w) * cbind(W1, W2, B1) if (inst.method == "am") W <- sqrt(w) * cbind(W1, W2, B1, StarW1) if (inst.method == "bms") W <- sqrt(w) * cbind(W1, W2, B1, StarW1, StarW2) } if (ncol(W) < ncol(X)) stop("insufficient number of instruments") } # END all IV cases else W <- NULL # no instruments (no IV case) result <- mylm(y, X, W) df <- df.residual(result) vcov <- result$vcov aliased <- result$aliased # in case of a within estimation, correct the degrees of freedom if (model == "within"){ pdim <- pdim(data) card.fixef <- switch(effect, "individual" = pdim$nT$n, "time" = pdim$nT$T, "twoways" = pdim$nT$n + pdim$nT$T - 1 ) df <- df.residual(result) - card.fixef vcov <- result$vcov * df.residual(result) / df } result <- list(coefficients = coef(result), vcov = vcov, residuals = resid(result), weights = w, df.residual = df, formula = formula, model = data) if (is.null(model.weights(data))) result$weights <- NULL if (model == "random") result$ercomp <- estec } else { # random twoways unbalanced: pdim <- pdim(data) TS <- pdim$nT$T theta <- estec$theta$id phi2mu <- estec$sigma2["time"] / estec$sigma2["idios"] Dmu <- model.matrix( ~ unclass(index(data))[[2L]] - 1) attr(Dmu, "index") <- index(data) Dmu <- Dmu - theta * Between(Dmu, "individual") X <- model.matrix(data, rhs = 1, model = "random", effect = "individual", theta = theta) y <- pmodel.response(data, model = "random", effect = "individual", theta = theta) P <- solve(diag(TS) + phi2mu * crossprod(Dmu)) phi2mu.CPXDmu.P <- phi2mu * crossprod(X, Dmu) %*% P XPX <- crossprod(X) - phi2mu.CPXDmu.P %*% crossprod(Dmu, X) XPy <- crossprod(X, y) - phi2mu.CPXDmu.P %*% crossprod(Dmu, y) gamma <- solve(XPX, XPy)[ , , drop = TRUE] # residuals 'e' are not the residuals of a quasi-demeaned # model but of the 'outer' model e <- pmodel.response(data, model = "pooling", effect = effect) - as.numeric(model.matrix(data, rhs = 1, model = "pooling") %*% gamma) result <- list(coefficients = gamma, vcov = solve(XPX), formula = formula, model = data, ercomp = estec, df.residual = nrow(X) - ncol(X), residuals = e) # derive 'aliased' information (this is based on the assumption that # estimation fails anyway if singularities are present). aliased <- is.na(gamma) } result$assign <- attr(X, "assign") result$contrasts <- attr(X, "contrasts") result$args <- list(model = model, effect = effect) result$aliased <- aliased class(result) <- c("plm", "panelmodel") result } tss <- function(x, ...){ UseMethod("tss") } #' @rawNamespace S3method(tss, default) tss.default <- function(x, ...){ # always gives centered TSS (= demeaned TSS) var(x) * (length(x) - 1) } #' @rawNamespace S3method(tss, plm) tss.plm <- function(x, model = NULL, ...){ if(is.null(model)) model <- describe(x, "model") effect <- describe(x, "effect") if(model == "ht") model <- "pooling" theta <- if(model == "random") x$ercomp$theta else NULL tss(pmodel.response(x, model = model, effect = effect, theta = theta)) } #' R squared and adjusted R squared for panel models #' #' This function computes R squared or adjusted R squared for plm objects. It #' allows to define on which transformation of the data the (adjusted) R #' squared is to be computed and which method for calculation is used. #' #' #' @param object an object of class `"plm"`, #' @param model on which transformation of the data the R-squared is to be #' computed. If `NULL`, the transformation used to estimate the model is #' also used for the computation of R squared, #' @param type indicates method which is used to compute R squared. One of\cr #' `"rss"` (residual sum of squares),\cr `"ess"` (explained sum of #' squares), or\cr `"cor"` (coefficient of correlation between the fitted #' values and the response), #' @param dfcor if `TRUE`, the adjusted R squared is computed. #' @return A numerical value. The R squared or adjusted R squared of the model #' estimated on the transformed data, e. g., for the within model the so called #' "within R squared". #' @seealso [plm()] for estimation of various models; #' [summary.plm()] which makes use of `r.squared`. #' @keywords htest #' @export #' @examples #' #' data("Grunfeld", package = "plm") #' p <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") #' r.squared(p) #' r.squared(p, dfcor = TRUE) #' r.squared <- function(object, model = NULL, type = c("cor", "rss", "ess"), dfcor = FALSE){ ## TODO: does not handle non-intercept models correctly ## see below r.squared_no_intercept if (is.null(model)) model <- describe(object, "model") effect <- describe(object, "effect") type <- match.arg(type) if (type == "cor"){ y <- pmodel.response(object, model = model, effect = effect) haty <- fitted(object, model = model, effect = effect) R2 <- cor(y, haty)^2 } if (type == "rss"){ R2 <- 1 - deviance(object, model = model) / tss(object, model = model) } if (type == "ess"){ haty <- fitted(object, model = model) mhaty <- mean(haty) ess <- as.numeric(crossprod((haty - mhaty))) R2 <- ess / tss(object, model = model) } ### adj. R2 Still wrong for models without intercept, e.g., pooling models # (but could be correct for within models, see comment below in function r.squared_no_intercept) if (dfcor) R2 <- 1 - (1 - R2) * (length(resid(object)) - 1) / df.residual(object) R2 } ## first try at r.squared adapted to be suitable for non-intercept models r.squared_no_intercept <- function(object, model = NULL, type = c("rss", "ess", "cor"), dfcor = FALSE){ if(is.null(model)) model <- describe(object, "model") effect <- describe(object, "effect") type <- match.arg(type) ## TODO: check what is sane for IV and what for within # [1L] as has.intercept returns > 1 boolean for IV models # TODO: to check if this is sane has.int <- if(model != "within") has.intercept(object)[1L] else FALSE if (type == "rss"){ # approach: 1 - RSS / TSS R2 <- if(has.int) { 1 - deviance(object, model = model) / tss(object, model = model) } else { # use non-centered (= non-demeaned) TSS 1 - deviance(object, model = model) / as.numeric(crossprod(pmodel.response(object, model = model))) } } if(type == "ess"){ # approach: ESS / TSS haty <- fitted(object, model = model) R2 <- if(has.int) { mhaty <- mean(haty) ess <- as.numeric(crossprod(haty - mhaty)) tss <- tss(object, model = model) ess / tss } else { # use non-centered (=non-demeaned) ESS and non-centered TSS ess <- as.numeric(crossprod(haty)) tss <- as.numeric(crossprod(pmodel.response(object, model = model))) ess / tss } } if(type == "cor"){ # approach: squared-correlation(dependent variable, predicted value), only for models with intercept if(!has.int) warning("for models without intercept, type = \"cor\" may not be sane") # TODO: tbd if warning is good # TODO: Check should this be for "cor" the original variable? This makes a difference for (at least) RE models! # and on the fitted values which are not given by fitted() for RE models # y <- pmodel.response(object, model = model, effect = effect) # haty <- fitted(object, model = model, effect = effect) y <- pmodel.response(object, model = "pooling") haty <- fitted_exp.plm(object) R2 <- cor(y, haty)^2 } # this takes care of the intercept # Still unclear, how the adjustment for within models should look like, # i.e., subtract 1 for intercept or not if(dfcor) R2 <- 1 - (1 - R2) * (length(resid(object)) - has.int) / df.residual(object) return(R2) } plm/R/plm-package.R0000644000176200001440000005452114557257145013575 0ustar liggesusers#' Functions exported from other packages #' #' These functions are imported from other packages and re-exported by #' \pkg{plm} to enable smooth use within \pkg{plm}. Please follow the #' links to view the function's original documentation. #' @name re-export_functions #' @keywords internal NULL #' @rdname re-export_functions #' @name maxLik #' @importFrom maxLik maxLik #' @export NULL #' plm package: linear models for panel data #' #' plm is a package for R which intends to make the estimation of linear panel #' models straightforward. plm provides functions to estimate a wide variety of #' models and to make (robust) inference. #' #' For a gentle and comprehensive introduction to the package, please see the #' package's vignette. #' #' The main functions to estimate models are: #' #' - `plm`: panel data estimators using `lm` on transformed data, #' - `pvcm`: variable coefficients models #' - `pgmm`: generalized method of moments (GMM) estimation for panel #' data, #' - `pggls`: estimation of general feasible generalized least squares models, #' - `pmg`: mean groups (MG), demeaned MG and common correlated effects #' (CCEMG) estimators, #' - `pcce`: estimators for common correlated effects mean groups (CCEMG) and #' pooled (CCEP) for panel data with common factors, #' - `pldv`: panel estimators for limited dependent variables. #' #' Next to the model estimation functions, the package offers several #' functions for statistical tests related to panel data/models. #' #' Multiple functions for (robust) variance--covariance matrices are #' at hand as well. #' #' The package also provides data sets to demonstrate functions and to #' replicate some text book/paper results. Use #' `data(package="plm")` to view a list of available data sets in #' the package. #' #' @name plm-package #' @keywords package #' @examples #' #' data("Produc", package = "plm") #' zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, index = c("state","year")) #' summary(zz) #' #' # replicates some results from Baltagi (2013), table 3.1 #' data("Grunfeld", package = "plm") #' p <- plm(inv ~ value + capital, #' data = Grunfeld, model="pooling") #' #' wi <- plm(inv ~ value + capital, #' data = Grunfeld, model="within", effect = "twoways") #' #' swar <- plm(inv ~ value + capital, #' data = Grunfeld, model="random", effect = "twoways") #' #' amemiya <- plm(inv ~ value + capital, #' data = Grunfeld, model = "random", random.method = "amemiya", #' effect = "twoways") #' #' walhus <- plm(inv ~ value + capital, #' data = Grunfeld, model = "random", random.method = "walhus", #' effect = "twoways") #' "_PACKAGE" #' Cigarette Consumption #' #' a panel of 46 observations from 1963 to 1992 #' #' *total number of observations* : 1380 #' #' *observation* : regional #' #' *country* : United States #' #' #' @name Cigar #' @docType data #' @format #' #' A data frame containing : #' \describe{ #' \item{state}{state abbreviation} #' \item{year}{the year} #' \item{price}{price per pack of cigarettes} #' \item{pop}{population} #' \item{pop16}{population above the age of 16} #' \item{cpi}{consumer price index (1983=100)} #' \item{ndi}{per capita disposable income} #' \item{sales}{cigarette sales in packs per capita} #' \item{pimin}{minimum price in adjoining states per pack of cigarettes} #' } #' #' @references #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:LEVI:92}{plm} #' #' \insertRef{BALT:GRIF:XION:00}{plm} #' #' @source #' #' Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @importFrom Rdpack reprompt #' @keywords datasets NULL #' Crime in North Carolina #' #' a panel of 90 observational units (counties) from 1981 to 1987 #' #' *total number of observations* : 630 #' #' *observation* : regional #' #' *country* : United States #' #' The variables l* (lcrmrte, lprbarr, ...) contain the pre-computed logarithms #' of the base variables as found in the original data set. Note that these #' values slightly differ from what R's log() function yields for the base #' variables. In order to reproduce examples from the literature, the #' pre-computed logs need to be used, otherwise the results differ slightly. #' #' @name Crime #' @docType data #' @format A data frame containing : #' \describe{ #' \item{county}{county identifier} #' \item{year}{year from 1981 to 1987} #' \item{crmrte}{crimes committed per person} #' \item{prbarr}{'probability' of arrest} #' \item{prbconv}{'probability' of conviction} #' \item{prbpris}{'probability' of prison sentence} #' \item{avgsen}{average sentence, days} #' \item{polpc}{police per capita} #' \item{density}{people per square mile} #' \item{taxpc}{tax revenue per capita} #' \item{region}{factor. One of 'other', 'west' or 'central'.} #' \item{smsa}{factor. (Also called "urban".) Does the individual reside in a SMSA (standard metropolitan statistical area)?} #' \item{pctmin}{percentage minority in 1980} #' \item{wcon}{weekly wage in construction} #' \item{wtuc}{weekly wage in transportation, utilities, communications} #' \item{wtrd}{weekly wage in wholesale and retail trade} #' \item{wfir}{weekly wage in finance, insurance and real estate} #' \item{wser}{weekly wage in service industry} #' \item{wmfg}{weekly wage in manufacturing} #' \item{wfed}{weekly wage in federal government} #' \item{wsta}{weekly wage in state government} #' \item{wloc}{weekly wage in local government} #' \item{mix}{offence mix: face-to-face/other} #' \item{pctymle}{percentage of young males (between ages 15 to 24)} #' \item{lcrmrte}{log of crimes committed per person} #' \item{lprbarr}{log of 'probability' of arrest} #' \item{lprbconv}{log of 'probability' of conviction} #' \item{lprbpris}{log of 'probability' of prison sentence} #' \item{lavgsen}{log of average sentence, days} #' \item{lpolpc}{log of police per capita} #' \item{ldensity}{log of people per square mile} #' \item{ltaxpc}{log of tax revenue per capita} #' \item{lpctmin}{log of percentage minority in 1980} #' \item{lwcon}{log of weekly wage in construction} #' \item{lwtuc}{log of weekly wage in transportation, utilities, communications} #' \item{lwtrd}{log of weekly wage in wholesale and retail trade} #' \item{lwfir}{log of weekly wage in finance, insurance and real estate} #' \item{lwser}{log of weekly wage in service industry} #' \item{lwmfg}{log of weekly wage in manufacturing} #' \item{lwfed}{log of weekly wage in federal government} #' \item{lwsta}{log of weekly wage in state government} #' \item{lwloc}{log of weekly wage in local government} #' \item{lmix}{log of offence mix: face-to-face/other} #' \item{lpctymle}{log of percentage of young males (between ages 15 to 24)}} #' #' @references #' #' \insertRef{CORN:TRUM:94}{plm} #' #' \insertRef{BALT:06}{plm} #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' @source #' #' Journal of Applied Econometrics Data Archive (complements Baltagi #' (2006)): #' #' \url{http://qed.econ.queensu.ca/jae/2006-v21.4/baltagi/} #' #' Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' #' See also Journal of Applied Econometrics data archive entry for #' Baltagi (2006) at #' \url{http://qed.econ.queensu.ca/jae/2006-v21.4/baltagi/}. #' #' @keywords datasets NULL #' Employment and Wages in the United Kingdom #' #' An unbalanced panel of 140 observations from 1976 to 1984 #' #' *total number of observations* : 1031 #' #' *observation* : firms #' #' *country* : United Kingdom #' #' #' @name EmplUK #' @docType data #' @format A data frame containing : #' \describe{ #' \item{firm}{firm index} #' \item{year}{year} #' \item{sector}{the sector of activity} #' \item{emp}{employment} #' \item{wage}{wages} #' \item{capital}{capital} #' \item{output}{output} #' } #' @source #' \insertRef{AREL:BOND:91}{plm} #' @keywords datasets NULL #' Gasoline Consumption #' #' A panel of 18 observations from 1960 to 1978 #' #' *total number of observations* : 342 #' #' *observation* : country #' #' *country* : OECD #' #' #' @name Gasoline #' @docType data #' @format A data frame containing : #' \describe{ #' \item{country}{a factor with 18 levels} #' \item{year}{the year} #' \item{lgaspcar}{logarithm of motor gasoline consumption per car} #' \item{lincomep}{logarithm of real per-capita income} #' \item{lrpmg}{logarithm of real motor gasoline price} #' \item{lcarpcap}{logarithm of the stock of cars per capita} #' } #' @references #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:GRIF:83}{plm} #' #' @source #' #' Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @keywords datasets NULL #' Grunfeld's Investment Data #' #' A balanced panel of 10 observational units (firms) from 1935 to 1954 #' #' *total number of observations* : 200 #' #' *observation* : production units #' #' *country* : United States #' #' #' @name Grunfeld #' @docType data #' @format A data frame containing : #' \describe{ #' \item{firm}{observation} #' \item{year}{date} #' \item{inv}{gross Investment} #' \item{value}{value of the firm} #' \item{capital}{stock of plant and equipment} } #' #' @note The Grunfeld data as provided in package `plm` is the #' same data as used in Baltagi (2001), see **Examples** below. #' #' NB:\cr Various versions of the Grunfeld data circulate #' online. Also, various text books (and also varying among editions) #' and papers use different subsets of the original Grunfeld data, #' some of which contain errors in a few data points compared to the #' original data used by Grunfeld (1958) in his PhD thesis. See #' Kleiber/Zeileis (2010) and its accompanying website for a #' comparison of various Grunfeld data sets in use. #' #' @seealso For the complete Grunfeld data (11 firms), see #' [AER::Grunfeld], in the `AER` package. #' #' @references #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{GRUN:58}{plm} #' #' \insertRef{KLEI:ZEIL:10}{plm} #' #' website accompanying the paper with various variants of the #' Grunfeld data: #' \url{https://www.zeileis.org/grunfeld/}. ## \url{https://eeecon.uibk.ac.at/~zeileis/grunfeld/}. ## \url{http://statmath.wu-wien.ac.at/~zeileis/grunfeld/}. #' #' @source Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/supp/Grunfeld.fil} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @keywords datasets #' @examples #' #' \dontrun{ #' # Compare plm's Grunfeld data to Baltagi's (2001) Grunfeld data: #' data("Grunfeld", package="plm") #' Grunfeld_baltagi2001 <- read.csv("http://www.wiley.com/legacy/wileychi/ #' baltagi/supp/Grunfeld.fil", sep="", header = FALSE) #' library(compare) #' compare::compare(Grunfeld, Grunfeld_baltagi2001, allowAll = T) # same data set #' } #' NULL #' Hedonic Prices of Census Tracts in the Boston Area #' #' A cross-section #' #' *number of observations* : 506 #' #' *observation* : regional #' #' *country* : United States #' #' #' @name Hedonic #' @docType data #' @format A dataframe containing: #' \describe{ #' \item{mv}{median value of owner--occupied homes} #' \item{crim}{crime rate} #' \item{zn}{proportion of 25,000 square feet residential lots} #' \item{indus}{proportion of no--retail business acres} #' \item{chas}{is the tract bounds the Charles River?} #' \item{nox}{annual average nitrogen oxide concentration in parts per hundred million} #' \item{rm}{average number of rooms} #' \item{age}{proportion of owner units built prior to 1940} #' \item{dis}{weighted distances to five employment centers in the Boston area} #' \item{rad}{index of accessibility to radial highways} #' \item{tax}{full value property tax rate ($/$10,000)} #' \item{ptratio}{pupil/teacher ratio} #' \item{blacks}{proportion of blacks in the population} #' \item{lstat}{proportion of population that is lower status} #' \item{townid}{town identifier} } #' #' @references #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BESL:KUH:WELS:80}{plm} #' #' \insertRef{HARR:RUBI:78}{plm} #' @source Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @keywords datasets NULL #' Wages and Hours Worked #' #' A panel of 532 observations from 1979 to 1988 #' #' *number of observations* : 5320 #' #' #' @name LaborSupply #' @docType data #' @format A data frame containing : #' \describe{ #' \item{lnhr}{log of annual hours worked} #' \item{lnwg}{log of hourly wage} #' \item{kids}{number of children} #' \item{age}{age} #' \item{disab}{bad health} #' \item{id}{id} #' \item{year}{year} #' } #' #' @references #' #' \insertRef{CAME:TRIV:05}{plm} #' #' \insertRef{ZILI:97}{plm} #' #' @source Online complements to Ziliak (1997). #' #' Journal of Business Economics and Statistics web site: #' \url{https://amstat.tandfonline.com/loi/ubes20/}. #' #' @keywords datasets NULL #' Wages and Education of Young Males #' #' A panel of 545 observations from 1980 to 1987 #' #' *total number of observations* : 4360 #' #' *observation* : individuals #' #' *country* : United States #' #' #' @name Males #' @docType data #' @format A data frame containing : #' \describe{ #' \item{nr}{identifier} #' \item{year}{year} #' \item{school}{years of schooling} #' \item{exper}{years of experience (computed as `age-6-school`)} #' \item{union}{wage set by collective bargaining?} #' \item{ethn}{a factor with levels `black, hisp, other`} #' \item{married}{married?} #' \item{health}{health problem?} #' \item{wage}{log of hourly wage} #' \item{industry}{a factor with 12 levels} #' \item{occupation}{a factor with 9 levels} #' \item{residence}{a factor with levels `rural_area, north_east, northern_central, south`} #' } #' #' @references #' #' \insertRef{VELL:VERB:98}{plm} #' #' \insertRef{VERB:04}{plm} #' #' @source Journal of Applied Econometrics data archive #' \url{http://qed.econ.queensu.ca/jae/1998-v13.2/vella-verbeek/}. #' #' @keywords datasets NULL #' Purchasing Power Parity and other parity relationships #' #' A panel of 104 quarterly observations from 1973Q1 to 1998Q4 #' #' *total number of observations* : 1768 #' #' *observation* : country #' #' *country* : OECD #' #' #' @name Parity #' @docType data #' @format A data frame containing : #' \describe{ #' \item{country}{country codes: a factor with 17 levels} #' \item{time}{the quarter index, 1973Q1-1998Q4} #' \item{ls}{log spot exchange rate vs. USD} #' \item{lp}{log price level} #' \item{is}{short term interest rate} #' \item{il}{long term interest rate} #' \item{ld}{log price differential vs. USA} #' \item{uis}{U.S. short term interest rate} #' \item{uil}{U.S. long term interest rate} } #' #' @references #' #' \insertRef{COAK:FUER:SMIT:06}{plm} #' #' \insertRef{DRIS:KRAA:98}{plm} #' #' @source #' #' \insertRef{COAK:FUER:SMIT:06}{plm} #' @keywords datasets NULL #' US States Production #' #' A panel of 48 observations from 1970 to 1986 #' #' *total number of observations* : 816 #' #' *observation* : regional #' #' *country* : United States #' #' #' @name Produc #' @docType data #' @format A data frame containing : #' \describe{ #' \item{state}{the state} #' \item{year}{the year} #' \item{region}{the region} #' \item{pcap}{public capital stock} #' \item{hwy}{highway and streets} #' \item{water}{water and sewer facilities} #' \item{util}{other public buildings and structures} #' \item{pc}{private capital stock} #' \item{gsp}{gross state product} #' \item{emp}{labor input measured by the employment in non--agricultural payrolls} #' \item{unemp}{state unemployment rate} } #' #' @references #' #' \insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:PINN:95}{plm} #' #' \insertRef{MUNN:90}{plm} #' #' @source Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @keywords datasets NULL #' Production of Rice in Indonesia #' #' a panel of 171 observations #' #' *number of observations* : 1026 #' #' *observation* : farms #' #' *country* : Indonesia #' #' #' @name RiceFarms #' @docType data #' @format A dataframe containing : #' \describe{ #' \item{id}{the farm identifier} #' #' \item{size}{the total area cultivated with rice, measured in hectares} #' #' \item{status}{land status, on of `'owner'` (non sharecroppers, #' owner operators or leaseholders or both), `'share'` #' (sharecroppers), `'mixed'` (mixed of the two previous status)} #' #' \item{varieties}{one of `'trad'` (traditional varieties), #' `'high'` (high yielding varieties) and `'mixed'` (mixed #' varieties)} #' #' \item{bimas}{bIMAS is an intensification program; one of #' `'no'` (non-bimas farmer), `'yes'` (bimas farmer) or #' `'mixed'` (part but not all of farmer's land was registered to #' be in the bimas program)} #' #' \item{seed}{seed in kilogram} #' #' \item{urea}{urea in kilogram} #' #' \item{phosphate}{phosphate in kilogram} #' #' \item{pesticide}{pesticide cost in Rupiah} #' #' \item{pseed}{price of seed in Rupiah per kg} #' #' \item{purea}{price of urea in Rupiah per kg} #' #' \item{pphosph}{price of phosphate in Rupiah per kg} #' #' \item{hiredlabor}{hired labor in hours} #' #' \item{famlabor}{family labor in hours} #' #' \item{totlabor}{total labor (excluding harvest labor)} #' #' \item{wage}{labor wage in Rupiah per hour} #' #' \item{goutput}{gross output of rice in kg} #' #' \item{noutput}{net output, gross output minus harvesting cost (paid #' in terms of rice)} #' #' \item{price}{price of rough rice in Rupiah per kg} #' #' \item{region}{one of `'wargabinangun'`, `'langan'`, #' `'gunungwangi'`, `'malausma'`, `'sukaambit'`, #' `'ciwangi'`} #' #' } #' #' @source #' #' \insertRef{FENG:HORR:12}{plm} #' @keywords datasets NULL #' Employment and Wages in Spain #' #' A panel of 738 observations from 1983 to 1990 #' #' *total number of observations*: 5904 #' #' *observation*: firms #' #' *country*: Spain #' #' #' @name Snmesp #' @docType data #' @format A data frame containing: #' #' \describe{ #' \item{firm}{firm index} #' \item{year}{year} #' \item{n}{log of employment} #' \item{w}{log of wages} #' \item{y}{log of real output} #' \item{i}{log of intermediate inputs} #' \item{k}{log of real capital stock} #' \item{f}{real cash flow} } #' #' @references #' #' \insertRef{ALON:AREL:99}{plm} #' @source Journal of Business Economics and Statistics data archive: #' #' \url{https://amstat.tandfonline.com/loi/ubes20/}. #' #' @keywords datasets NULL #' The Penn World Table, v. 5 #' #' A panel of 125 observations from 1960 to 1985 #' #' *total number of observations* : 3250 #' #' *observation* : country #' #' *country* : World #' #' #' @name SumHes #' @docType data #' @format A data frame containing : #' \describe{ #' \item{year}{the year} #' \item{country}{the country name (factor)} #' \item{opec}{OPEC member?} #' \item{com}{communist regime? } #' \item{pop}{country's population (in thousands)} #' \item{gdp}{real GDP per capita (in 1985 US dollars)} #' \item{sr}{saving rate (in percent)}} #' #' @references #' #' \insertRef{HAYA:00}{plm} #' #' \insertRef{SUMM:HEST:91}{plm} #' #' @source Online supplements to Hayashi (2000). #' #' \url{http://fhayashi.fc2web.com/datasets.htm} #' #' @keywords datasets NULL #' Panel Data of Individual Wages #' #' A panel of 595 individuals from 1976 to 1982, taken from the Panel Study of #' Income Dynamics (PSID).\cr\cr The data are organized as a stacked time #' series/balanced panel, see **Examples** on how to convert to a #' `pdata.frame`. #' #' *total number of observations* : 4165 #' #' *observation* : individuals #' #' *country* : United States #' #' #' @name Wages #' @docType data #' @format A data frame containing: #' \describe{ #' \item{exp}{years of full-time work experience.} #' \item{wks}{weeks worked.} #' \item{bluecol}{blue collar?} #' \item{ind}{works in a manufacturing industry?} #' \item{south}{resides in the south?} #' \item{smsa}{resides in a standard metropolitan statistical area?} #' \item{married}{married?} #' \item{sex}{a factor with levels `"male"` and `"female"`} #' \item{union}{individual's wage set by a union contract?} #' \item{ed}{years of education.} #' \item{black}{is the individual black?} #' \item{lwage}{logarithm of wage.} } #' #' @references #' #'\insertRef{BALT:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{CORN:RUPE:88}{plm} #' #' @source Online complements to Baltagi (2001): #' #' \url{https://www.wiley.com/legacy/wileychi/baltagi/} #' #' Online complements to Baltagi (2013): #' #' \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} #' @keywords datasets #' @examples #' #' # data set 'Wages' is organized as a stacked time series/balanced panel #' data("Wages", package = "plm") #' Wag <- pdata.frame(Wages, index=595) #' NULL plm/R/test_cd.R0000644000176200001440000006025414433204306013021 0ustar liggesusers ############## Pesaran's CD test and Breusch/Pagan LM Test (also scaled) ############### ## Pesaran's CD test for cross-sectional dependence in panel data models ## (and Breusch and Pagan's LM and scaled LM) ## ref. Pesaran, General diagnostic tests..., CESifo WP 1229, 2004 ## In case K+1>T the group-specific model is not estimable; ## as in Greene 11.7.2, formula (11.23) we use the group-specific residuals ## of a consistent estimator. This may be pooled OLS, RE, FE. Here the ## default is set to FE. ## Note that the test can be performed on the results of plm objects with ## any kind of effects: having "time" effects means checking for ## xs-dependence *after* introducing time dummies. ## In principle, the test can be performed on the results of *any* ## panelmodel object. Some issues remain regarding standardization of ## model output: some missing pieces are, e.g., the 'model$indexes' ## in ggls. ''fd'' models are also not compatible because of indexes ## keeping the original timespan, while data lose the first period. ## production version, generic and based on plm ## version 11: added test = "bcsclm" ## ## version 10: ## substantial optimization for speed, now fast (few seconds) on N=3000 ## all methods pass on a pseries to pcdres() ## make toy example #dati <- data.frame(ind=rep(1:7, 4), time=rep(1:4, each=7), x=rnorm(28), # group=rep(c(1,1,2,2,2,3,3), 4)) #pdati <- pdata.frame(dati) #' Tests of cross-section dependence for panel models #' #' Pesaran's CD or Breusch--Pagan's LM (local or global) tests for cross #' sectional dependence in panel models #' #' These tests are originally meant to use the residuals of separate #' estimation of one time--series regression for each cross-sectional #' unit in order to check for cross--sectional dependence (`model = NULL`). #' If a different model specification (`model = "within"`, `"random"`, #' \ldots{}) is assumed consistent, one can resort to its residuals for #' testing (which is common, e.g., when the time dimension's length is #' insufficient for estimating the heterogeneous model). #' #' If the time #' dimension is insufficient and `model = NULL`, the function defaults #' to estimation of a `within` model and issues a warning. The main #' argument of this function may be either a model of class #' `panelmodel` or a `formula` and `data frame`; in the second case, #' unless `model` is set to `NULL`, all usual parameters relative to #' the estimation of a `plm` model may be passed on. The test is #' compatible with any consistent `panelmodel` for the data at hand, #' with any specification of `effect` (except for `test = "bcsclm"` which #' requires a within model with either individual or two-ways effect). #' E.g., specifying `effect = "time"` or `effect = "twoways"` allows #' to test for residual cross-sectional dependence after the introduction #' of time fixed effects to account for common shocks. #' #' A **local** version of either test can be computed by supplying a #' proximity matrix (elements coercible to `logical`) with argument #' `w` which provides information on whether any pair of individuals #' are neighbours or not. If `w` is supplied, only neighbouring pairs #' will be used in computing the test; else, `w` will default to #' `NULL` and all observations will be used. The matrix need not be #' binary, so commonly used "row--standardized" matrices can be #' employed as well. `nb` objects from \CRANpkg{spdep} must instead be #' transformed into matrices by \CRANpkg{spdep}'s function `nb2mat` #' before using. #' #' The methods implemented are suitable also for unbalanced panels. #' #' Pesaran's CD test (`test="cd"`), Breusch and Pagan's LM test #' (`test="lm"`), and its scaled version (`test="sclm"`) are all #' described in \insertCite{PESA:04;textual}{plm} (and complemented by #' Pesaran (2005)). The bias-corrected scaled test (`test="bcsclm"`) #' is due to \insertCite{BALT:FENG:KAO:12}{plm} and only valid for #' within models including the individual effect (it's unbalanced #' version uses max(Tij) for T) in the bias-correction term). #' \insertCite{BREU:PAGA:80;textual}{plm} is the original source for #' the LM test. #' #' The test on a `pseries` is the same as a test on a pooled #' regression model of that variable on a constant, i.e., #' `pcdtest(some_pseries)` is equivalent to `pcdtest(plm(some_var ~ 1, #' data = some_pdata.frame, model = "pooling")` and also equivalent to #' `pcdtest(some_var ~ 1, data = some_data)`, where `some_var` is #' the variable name in the data which corresponds to `some_pseries`. #' #' @aliases pcdtest #' @param x an object of class `formula`, `panelmodel`, or `pseries` #' (depending on the respective interface) describing the model to #' be tested, #' @param data a `data.frame`, #' @param index an optional numerical index, if `NULL`, the first two #' columns of the data.frame provided in argument `data` are #' assumed to be the index variables; for further details see #' [pdata.frame()], #' @param model an optional character string indicating which type of #' model to estimate; if left to `NULL`, the original #' heterogeneous specification of Pesaran is used, #' @param test the type of test statistic to be returned. One of #' \itemize{ \item `"cd"` for Pesaran's CD statistic, \item `"lm"` #' for Breusch and Pagan's original LM statistic, \item `"sclm"` #' for the scaled version of Breusch and Pagan's LM statistic, #' \item `"bcsclm"` for the bias-corrected scaled version of #' Breusch and Pagan's LM statistic, \item `"rho"` for the average #' correlation coefficient, \item `"absrho"` for the average #' absolute correlation coefficient,} #' @param w either `NULL` (default) for the global tests or -- for the #' local versions of the statistics -- a `n x n` `matrix` #' describing proximity between individuals, with \eqn{w_ij = a} #' where \eqn{a} is any number such that `as.logical(a)==TRUE`, if #' \eqn{i,j} are neighbours, \eqn{0} or any number \eqn{b} such #' that `as.logical(b)==FALSE` elsewhere. Only the lower #' triangular part (without diagonal) of `w` after coercing by #' `as.logical()` is evaluated for neighbouring information (but #' `w` can be symmetric). See also **Details** and #' **Examples**, #' @param \dots further arguments to be passed on for model estimation to `plm`, #' such as `effect` or `random.method`. #' @return An object of class `"htest"`. #' @export #' @references #' #' \insertRef{BALT:FENG:KAO:12}{plm} #' #' \insertRef{BREU:PAGA:80}{plm} #' #' \insertRef{PESA:04}{plm} #' #' \insertRef{PESA:15}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' ## test on heterogeneous model (separate time series regressions) #' pcdtest(inv ~ value + capital, data = Grunfeld, #' index = c("firm", "year")) #' #' ## test on two-way fixed effects homogeneous model #' pcdtest(inv ~ value + capital, data = Grunfeld, model = "within", #' effect = "twoways", index = c("firm", "year")) #' #' ## test on panelmodel object #' g <- plm(inv ~ value + capital, data = Grunfeld, index = c("firm", "year")) #' pcdtest(g) #' #' ## scaled LM test #' pcdtest(g, test = "sclm") #' #' ## test on pseries #' pGrunfeld <- pdata.frame(Grunfeld) #' pcdtest(pGrunfeld$value) #' #' ## local test #' ## define neighbours for individual 2: 1, 3, 4, 5 in lower triangular matrix #' w <- matrix(0, ncol= 10, nrow=10) #' w[2,1] <- w[3,2] <- w[4,2] <- w[5,2] <- 1 #' pcdtest(g, w = w) #' pcdtest <- function(x, ...) { UseMethod("pcdtest") } ## this formula method here only for adding "rho" and "absrho" ## arguments #' @rdname pcdtest #' @export pcdtest.formula <- function(x, data, index = NULL, model = NULL, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ...) { #data <- pdata.frame(data, index = index) test <- match.arg(test) if(test == "bcsclm" && (is.null(model) || model != "within")) stop("for test = 'bcsclm', set argument model = 'within'") # evaluate formula in parent frame cl <- match.call(expand.dots = TRUE) cl$model <- if(test != "bcsclm") "pooling" else "within" if(test == "bcsclm") { # check args model and effect for test = "bcsclm" if(is.null(cl$effect)) cl$effect <- "individual" # make default within model is individual within eff <- isTRUE(cl$effect == "individual" || cl$effect == "twoways") if(model != "within" || !eff) stop("for test = 'bcsclm', requirement is model = \"within\" and effect = \"individual\" or \"twoways\"") } names(cl)[2L] <- "formula" m <- match(plm.arg, names(cl), 0L) cl <- cl[c(1L, m)] cl[[1L]] <- as.name("plm") mymod <- eval(cl, parent.frame()) # mymod is either "pooling" or "within" (the latter iff for test = "bcsclm") hetero.spec <- if(is.null(model)) TRUE else FALSE if(hetero.spec && min(pdim(mymod)$Tint$Ti) < length(mymod$coefficients)+1) { warning("Insufficient number of observations in time to estimate heterogeneous model: using within residuals", call. = FALSE) hetero.spec <- FALSE model <- "within" } ind0 <- unclass(attr(model.frame(mymod), "index")) # unclass for speed tind <- as.numeric(ind0[[2L]]) ind <- as.numeric(ind0[[1L]]) unind <- unique(ind) n <- length(unind) if(hetero.spec) { ## estimate individual normal regressions one by one ## (original heterogeneous specification of Pesaran) X <- model.matrix(mymod) y <- model.response(model.frame(mymod)) # split X, y per individual ind.GRP <- collapse::GRP(ind) tX <- collapse::rsplit(X, ind.GRP, use.names = FALSE) ty <- collapse::gsplit(y, ind.GRP) # calc. residuals res.i <- mapply(function(X, y) lm.fit(X, y)$residuals, tX, ty, SIMPLIFY = FALSE) # construct indexes ind.i <- rep(seq_len(n), lengths(res.i)) tind.i <- collapse::gsplit(tind, ind.GRP) tind.i <- unlist(tind.i, use.names = FALSE) ## make pseries of (all) residuals resdata <- data.frame(ee = unlist(res.i, use.names = FALSE), ind = ind.i, tind = tind.i) pee <- pdata.frame(resdata, index = c("ind", "tind")) tres <- pee$ee } else { # else case is one of: # a) insufficient number of observations for heterogen. spec. or # b) model specified when function was called (incl. case test = "bcsclm") if(test != "bcsclm") { # Estimate the model specified originally in function call or due to # forced model switch to within model by insufficient number of # observations for heterogen. spec. # (for test = "bcsclm" it is ensured that a within model was already # estimated -> no need to estimate again a within model) cl$model <- model mymod <- eval(cl, parent.frame()) } tres <- resid(mymod) } return(pcdres(tres = tres, n = n, w = w, form = paste(deparse(x)), test = test)) } ## panelmodel method: just fetch resid (as a pseries) and hand over to pcdres #' @rdname pcdtest #' @export pcdtest.panelmodel <- function(x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ...) { test <- match.arg(test) model <- describe(x, "model") effect <- describe(x, "effect") eff <- (effect == "individual" || effect == "twoways") if (test == "bcsclm" && (model != "within" || !eff)) stop("for test = 'bcsclm', model x must be a within individual or twoways model") tres <- resid(x) index <- unclass(attr(model.frame(x), "index")) # unclass for speed #tind <- as.numeric(index[[2L]]) ind <- as.numeric(index[[1L]]) unind <- unique(ind) n <- length(unind) #t <- pdim(x)$Tint$Ti #nT <- length(ind) #k <- length(x$coefficients) return(pcdres(tres = tres, n = n, w = w, form = paste(deparse(x$formula)), test = test)) } #' @rdname pcdtest #' @export pcdtest.pseries <- function(x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ...) { ## calculates local or global CD test on a pseries 'x' just as it ## would on model residuals ## important difference here: a pseries _can_ have NAs # input check if (!inherits(x, "pseries")) stop("input 'x' needs to be of class \"pseries\"") form <- paste(deparse(substitute(x))) pos.na <- is.na(x) if (any(pos.na)) { x <- subset_pseries(x, !pos.na) # TODO: use [.pseries (pseries subsetting) once implemented warning("NA values encountered in input and removed") if (length(x) == 0L) stop("input is empty after removal of NA values") } ## get indices ix <- unclass(attr(x, "index")) # unclass for speed tind <- as.numeric(ix[[2L]]) ind <- as.numeric(ix[[1L]]) ## det. number of groups and df unind <- unique(ind) n <- length(unind) return(pcdres(tres = x, n = n, w = w, form = form, test = match.arg(test))) } pcdres <- function(tres, n, w, form, test) { # 'form' is a character describing the formula (not a formula object!) # and goes into htest_object$data.name ## Take model residuals as pseries, and calc. test ## (from here on, what's needed for rho_ij is ok) ## this function is the modulus calculating the test, ## to be called from pcdtest.formula, ## pcdtest.panelmodel or pcdtest.pseries ## now (since v10) tres is the pseries of model residuals ## calc matrix of all possible pairwise corr. ## coeffs. (200x speedup from using cor()) wideres <- t(preshape(tres, na.rm = FALSE)) rho <- cor(wideres, use = "pairwise.complete.obs") ## find length of intersecting pairs ## fast method, times down 200x ix <- unclass(attr(tres, "index")) # unclass for speed ## tabulate which obs in time for each ind are !na presence.tab <- collapse::qtable(ix[[2L]], ix[[1L]]) ## calculate t.ij t.ij <- crossprod(presence.tab) # input check if (!is.null(w)) { dims.w <- dim(w) if(dims.w[1L] != n || dims.w[2L] != n) stop(paste0("matrix 'w' describing proximity of individuals has wrong dimensions: ", "should be ", n, " x ", n, " (no. of individuals) but is ", dims.w[1L], " x ", dims.w[2L])) } ## begin features for local test #################### ## higher orders omitted for now, use wlag() explicitly ## if global test, set all elements in w to 1 if(is.null(w)) { w <- matrix(1, ncol = n, nrow = n) dep <- "" } else { dep <- "local" } ## make (binary) selector matrix based on the contiguity matrix w ## and extracting elements corresponding to ones in the lower triangle ## excluding the diagonal ## transform in logicals (0=FALSE, else=TRUE: no need to worry ## about row-std. matrices) selector.mat <- matrix(as.logical(w), ncol = n) ## some sanity checks for 'w' (not perfect sanity, but helps) if (sum(selector.mat[lower.tri(selector.mat, diag = FALSE)]) == 0) { stop(paste0("no neighbouring individuals defined in proximity matrix 'w'; ", "only lower triangular part of 'w' (w/o diagonal) is evaluated")) } else { if (sum(selector.mat[upper.tri(selector.mat, diag = FALSE)]) != 0) { if (!isSymmetric((unname(selector.mat)))) { # unname needed to ignore rownames and colnames stop(paste0("proximity matrix 'w' is ambiguous: upper and lower triangular part ", "define different neighbours (it is sufficient to provide information ", "about neighbours only in the lower triangluar part of 'w'")) } } } ## if no intersection or only 1 shared period of e_it and e_jt ## => exclude from calculation and issue a warning. ## In general, length(m.ij) gives the number of shared periods by individuals i, j ## Thus, non intersecting pairs are indicated by length(m.ij) == 0 (t.ij[i,j] == 0) no.one.intersect <- (t.ij <= 1) if (any(no.one.intersect, na.rm = TRUE)) { # t.ij is a lower triangular matrix: do not divide by 2 to get the number of non-intersecting pairs! number.of.non.one.intersecting.pairs <- sum(no.one.intersect, na.rm = TRUE) number.of.total.pairs <- (n*(n-1))/2 share.on.one.intersect.pairs <- number.of.non.one.intersecting.pairs / number.of.total.pairs * 100 warning(paste("Some pairs of individuals (", signif(share.on.one.intersect.pairs, digits = 2), " percent) do not have any or just one time period in common and have been omitted from calculation", sep="")) selector.mat[no.one.intersect] <- FALSE } ## set upper tri and diagonal to FALSE selector.mat[upper.tri(selector.mat, diag = TRUE)] <- FALSE ## number of elements in selector.mat ## elem.num = 2*(N*(N-1)) in Pesaran (2004), formulae (6), (7), (31), ... elem.num <- sum(selector.mat) ## end features for local test ###################### ## Breusch-Pagan or Pesaran statistic for cross-sectional dependence, ## robust vs. unbalanced panels: switch(test, lm = { CDstat <- sum((t.ij*rho^2)[selector.mat]) pCD <- pchisq(CDstat, df = elem.num, lower.tail = FALSE) names(CDstat) <- "chisq" parm <- elem.num names(parm) <- "df" testname <- "Breusch-Pagan LM test" }, sclm = { CDstat <- sqrt(1/(2*elem.num))*sum((t.ij*rho^2-1)[selector.mat]) pCD <- 2*pnorm(abs(CDstat), lower.tail = FALSE) names(CDstat) <- "z" parm <- NULL testname <- "Scaled LM test" }, bcsclm = { # Baltagi/Feng/Kao (2012), formula (11) # (unbalanced case as sclm + bias correction as EViews: max(T_ij) instead of T) CDstat <- sqrt(1/(2*elem.num))*sum((t.ij*rho^2-1)[selector.mat]) - (n/(2*(max(t.ij)-1))) pCD <- 2*pnorm(abs(CDstat), lower.tail = FALSE) names(CDstat) <- "z" parm <- NULL testname <- "Bias-corrected Scaled LM test" }, cd = { # (Pesaran (2004), formula (31)) CDstat <- sqrt(1/elem.num)*sum((sqrt(t.ij)*rho)[selector.mat]) pCD <- 2*pnorm(abs(CDstat), lower.tail = FALSE) names(CDstat) <- "z" parm <- NULL testname <- "Pesaran CD test" }, rho = { CDstat <- sum(rho[selector.mat])/elem.num pCD <- NULL names(CDstat) <- "rho" parm <- NULL testname <- "Average correlation coefficient" }, absrho = { CDstat <- sum(abs(rho)[selector.mat])/elem.num pCD <- NULL names(CDstat) <- "|rho|" parm <- NULL testname <- "Average absolute correlation coefficient" }) ##(insert usual htest features) RVAL <- list(statistic = CDstat, parameter = parm, method = paste(testname, "for", dep, "cross-sectional dependence in panels"), alternative = "cross-sectional dependence", p.value = pCD, data.name = form) class(RVAL) <- "htest" return(RVAL) } preshape <- function(x, na.rm = TRUE, ...) { ## reshapes pseries, ## e.g., of residuals from a panelmodel, ## in wide form inames <- names(attr(x, "index")) mres <- reshape(cbind(as.vector(x), attr(x, "index")), direction = "wide", timevar = inames[2L], idvar = inames[1L]) ## drop ind in first column mres <- mres[ , -1L, drop = FALSE] ## reorder columns (may be scrambled depending on first ## available obs in unbalanced panels) mres <- mres[ , order(dimnames(mres)[[2L]])] ## if requested, drop columns (time periods) with NAs if(na.rm) { na.cols <- vapply(mres, FUN = anyNA, FUN.VALUE = TRUE, USE.NAMES = FALSE) if(sum(na.cols) > 0L) mres <- mres[ , !na.cols, drop = FALSE] } return(mres) } #' Cross--sectional correlation matrix #' #' Computes the cross--sectional correlation matrix #' #' #' @param x an object of class `pseries` #' @param grouping grouping variable, #' @param groupnames a character vector of group names, #' @param value to complete, #' @param \dots further arguments. #' @return A matrix with average correlation coefficients within a group #' (diagonal) and between groups (off-diagonal). #' @export #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' pGrunfeld <- pdata.frame(Grunfeld) #' grp <- c(rep(1, 100), rep(2, 50), rep(3, 50)) # make 3 groups #' cortab(pGrunfeld$value, grouping = grp, groupnames = c("A", "B", "C")) #' cortab <- function(x, grouping, groupnames = NULL, value = "statistic", ...) { ## makes matrix containing within (diagonal) and between (off-diagonal) ## correlation ## needs a pseries and a groupings vector of **same length** ## would use a better naming, and also passing a char or factor as ## grouping index ## x must be a pseries if(!inherits(x, "pseries")) stop("First argument must be a pseries") if(length(x) != length(grouping)) stop("arguments 'x' and 'grouping' must have same length") fullind <- as.numeric(attr(x, "index")[ , 1L]) ids <- unique(fullind) n <- length(ids) regs <- seq_along(unique(grouping)) if(!(is.numeric(grouping))) grouping <- as.numeric(as.factor(grouping)) idnames <- as.character(ids) if(is.null(groupnames)) { groupnames <- as.character(unique(grouping)) } ## make matrices of between-regions correlations ## (includes within correlation on diagonal) ## for each pair of regions (nb: no duplicates, e.g., 3.1 but not 1.3) ## make w<1.n>: for(h in seq_along(regs)) { for(k in seq_len(h)) { statew <- matrix(0, ncol = n, nrow = n) ## make statew for cor. between h and k for(i in seq_len(n)) { ## get first region (all values equal, so take first one) ireg <- grouping[fullind == ids[i]][1L] # TODO: can be made faster via split()-approach if(ireg == h) { for(j in seq_len(n)) { jreg <- grouping[fullind == ids[j]][1L] # TODO: can be made faster via split()-approach if(jreg == k) statew[i, j] <- 1 } } } if(h!=k) statew <- statew + t(statew) ## just for debugging reasons: dimnames(statew) <- list(idnames, idnames) ## eliminate self.correlation of states if i=j diag(statew) <- 0 ## not needed: pcdtest seems to do this by construction eval(parse(text=paste("w", h, ".", k, " <- statew", sep=""))) } } ## notice: without the line ## '' if(i!=j) statew <- statew + t(statew) '' ## all wn.n matrices would have values only on one half (upper ## or lower triangle) ## make generic table of regions' within and between correlation ## argument: a pseries #YC regnames is undefined, so is myw tab.g <- function(x, regs, regnames, test="rho", value) { myw <- 0 tabg <- matrix(NA, ncol=length(regs), nrow=length(regs)) for(i in seq_along(regs)) { for(j in seq_len(i)) { ## take appropriate w matrix eval(parse(text = paste("myw<-w", i, ".", j, sep = ""))) tabg[i, j] <- pcdtest(x, test = "rho", w = myw)[[value]] } } dimnames(tabg) <- list(groupnames, groupnames) return(tabg) } regnames <- "" mytab <- tab.g(x, regs = regs, regnames = regnames, test = "rho", value = value) return(mytab) } plm/R/tool_transformations.R0000644000176200001440000012447614433472251015677 0ustar liggesusers## This file contains the relevant transformations used for panel data, ## namely of course Within and between/Between, but also Sum (useful for ## unbalanced panels). ## They are all generics and have default, pseries and matrix ## methods. The effect argument is an index vector for the default method ## and a character ("individual", "time", "group", "twoways") for the ## pseries method. It can be any of the two for the matrix method (the ## second one only if the matrix argument has an index attribute ## diff, lag and lead methods for pseries are also provided (lead is a ## generic exported by plm, lag and diff being generic exported by ## stats). All of them have a shift argument which can be either "time" ## or "row". #' panel series #' #' A class for panel series for which several useful computations and #' data transformations are available. #' #' The functions `between`, `Between`, `Within`, and `Sum` perform specific #' data transformations, i. e., the between, within, and sum transformation, #' respectively. #' #' `between` returns a vector/matrix containing the individual means (over #' time) with the length of the vector equal to the number of #' individuals (if `effect = "individual"` (default); if `effect = "time"`, #' it returns the time means (over individuals)). `Between` #' duplicates the values and returns a vector/matrix which length/number of rows #' is the number of total observations. `Within` returns a vector/matrix #' containing the values in deviation from the individual means #' (if `effect = "individual"`, from time means if `effect = "time"`), the so #' called demeaned data. `Sum` returns a vector/matrix with sum per individual #' (over time) or the sum per time period (over individuals) with #' `effect = "individual"` or `effect = "time"`, respectively, and has length/ #' number of rows of the total observations (like `Between`). #' #' For `between`, `Between`, `Within`, and `Sum` in presence of NA values it #' can be useful to supply `na.rm = TRUE` as an additional argument to #' keep as many observations as possible in the resulting transformation. #' na.rm is passed on to the mean()/sum() function used by these transformations #' (i.e., it does not remove NAs prior to any processing!), see also #' **Examples**. #' #' @name pseries #' @aliases pseries #' @param x,object a `pseries` or a matrix; or a `summary.pseries` object, #' @param effect for the pseries methods: character string indicating the #' `"individual"`, `"time"`, or `"group"` effect, for `Within` #' `"twoways"` additionally; for non-pseries methods, `effect` is a factor #' specifying the dimension (`"twoways"` is not possible), #' @param idbyrow if `TRUE` in the `as.matrix` method, the lines of #' the matrix are the individuals, #' @param plot,scale,transparency,col,lwd plot arguments, #' @param \dots further arguments, e. g., `na.rm = TRUE` for #' transformation functions like `between`, see **Details** #' and **Examples**. #' @return All these functions return an object of class `pseries` or a matrix, #' except:\cr `between`, which returns a numeric vector or a matrix; #' `as.matrix`, which returns a matrix. #' @author Yves Croissant #' @seealso [is.pseries()] to check if an object is a pseries. For #' more functions on class 'pseries' see [lag()], [lead()], #' [diff()] for lagging values, leading values (negative lags) and #' differencing. #' @keywords classes #' @examples #' #' # First, create a pdata.frame #' data("EmplUK", package = "plm") #' Em <- pdata.frame(EmplUK) #' #' # Then extract a series, which becomes additionally a pseries #' z <- Em$output #' class(z) #' #' # obtain the matrix representation #' as.matrix(z) #' #' # compute the between and within transformations #' between(z) #' Within(z) #' #' # Between and Sum replicate the values for each time observation #' Between(z) #' Sum(z) #' #' # between, Between, Within, and Sum transformations on other dimension #' between(z, effect = "time") #' Between(z, effect = "time") #' Within(z, effect = "time") #' Sum(z, effect = "time") #' #' # NA treatment for between, Between, Within, and Sum #' z2 <- z #' z2[length(z2)] <- NA # set last value to NA #' between(z2, na.rm = TRUE) # non-NA value for last individual #' Between(z2, na.rm = TRUE) # only the NA observation is lost #' Within(z2, na.rm = TRUE) # only the NA observation is lost #' Sum(z2, na.rm = TRUE) # only the NA observation is lost #' #' sum(is.na(Between(z2))) # 9 observations lost due to one NA value #' sum(is.na(Between(z2, na.rm = TRUE))) # only the NA observation is lost #' sum(is.na(Within(z2))) # 9 observations lost due to one NA value #' sum(is.na(Within(z2, na.rm = TRUE))) # only the NA observation is lost #' sum(is.na(Sum(z2))) # 9 observations lost due to one NA value #' sum(is.na(Sum(z2, na.rm = TRUE))) # only the NA observation is lost #' NULL #' @rdname pseries #' @export print.pseries <- function(x, ...){ x.orig <- x attr(x, "index") <- NULL attr(x, "class") <- base::setdiff(attr(x, "class"), "pseries") if(length(attr(x, "class")) == 1L && class(x) %in% c("character", "logical", "numeric", "integer", "complex")) { attr(x, "class") <- NULL } print(x, ...) invisible(x.orig) } #' @rdname pseries #' @export as.matrix.pseries <- function(x, idbyrow = TRUE, ...){ index <- unclass(attr(x, "index")) # unclass for speed id <- index[[1L]] time <- index[[2L]] time.names <- levels(time) x <- collapse::rsplit(data.frame(x, time), id) x <- lapply(x, function(x){ rownames(x) <- x[ , 2L] x[ , -2L, drop = FALSE] }) x <- lapply(x, function(x){ x <- x[time.names, , drop = FALSE] rownames(x) <- time.names x } ) id.names <- names(x) x <- as.matrix(as.data.frame((x))) colnames(x) <- id.names if(idbyrow) x <- t(x) x } ## plots a panel series by time index ## ## can supply any panel function, e.g., a loess smoother ## > mypanel<-function(x,...) { ## + panel.xyplot(x,...) ## + panel.loess(x, col="red", ...)} ## > ## > plot(pres(mod), panel=mypanel) #' @rdname pseries #' @importFrom lattice xyplot #' @export plot.pseries <- function(x, plot = c("lattice", "superposed"), scale = FALSE, transparency = TRUE, col = "blue", lwd = 1, ...) { if(scale) { scalefun <- function(x) scale(x) } else { scalefun <- function(x) return(x)} nx <- as.numeric(x) ind <- attr(x, "index")[[1L]] tind <- attr(x, "index")[[2L]] # possibly as.numeric(): # activates autom. tick # but loses time labels xdata <- data.frame(nx = nx, ind = ind, tind = tind) switch(match.arg(plot), "lattice" = { ##require(lattice) # make a ggplot2 version xyplot(nx ~ tind | ind, data = xdata, type = "l", col = col, ...) }, "superposed" = { ylim <- c(min(tapply(scalefun(nx), ind, min, na.rm = TRUE)), max(tapply(scalefun(nx), ind, max, na.rm = TRUE))) unind <- unique(ind) nx1 <- nx[ind == unind[1L]] tind1 <- as.numeric(tind[ind == unind[1L]]) ## plot empty plot to provide frame plot(NA, xlim = c(min(as.numeric(tind)), max(as.numeric(tind))), ylim = ylim, xlab = "", ylab = "", xaxt = "n", ...) axis(1, at = as.numeric(unique(tind)), labels = unique(tind)) ## determine lwd and transparency level as a function ## of n if(transparency) { alpha <- 5 / length(unind) col <- heat.colors(1, alpha = alpha) lwd <- length(unind) / 10 } ## plot lines (notice: tind. are factors, so they ## retain the correct labels which would be lost if ## using as.numeric for(i in seq_along(unind)) { nxi <- nx[ind == unind[i]] tindi <- tind[ind == unind[i]] lines(x = tindi, y = scalefun(nxi), col = col, lwd = lwd, ...) } }) } #' @rdname pseries #' @export summary.pseries <- function(object, ...) { object.orig <- object special_treatment_vars <- c("factor", "logical", "character") if(!inherits(object, special_treatment_vars)) { Bid <- Between(object, na.rm = TRUE) Btime <- Between(object, effect = "time", na.rm = TRUE) res <- structure(c(total = sum( (na.omit(object) - mean(object, na.rm = TRUE)) ^ 2), between_id = sum( (na.omit(Bid) - mean(Bid, na.rm = TRUE)) ^ 2), between_time = sum( (na.omit(Btime) - mean(Btime, na.rm = TRUE)) ^ 2)), class = c("summary.pseries"), class.pseries = class(object.orig)) attr(res, "SummaryDefault") <- summary(remove_pseries_features(object)) } else { object <- remove_pseries_features(object) res <- summary(object, ...) attr(res, "class.pseries") <- class(object.orig) class(res) <- c("summary.pseries") } return(res) } #' @rdname pseries #' @export plot.summary.pseries <- function(x, ...){ special_treatment_vars <- c("factor", "logical", "character") class.basic <- setdiff(attr(x, "class.pseries"), "pseries") if(!class.basic %in% special_treatment_vars) { x <- as.numeric(x) # get tss, id/time b by coercing summary.pseries to 'numeric' share <- x[-1L]/x[1L] # vec with length == 2 names(share) <- c("id", "time") barplot(share, ...) } else NULL } #' @rdname pseries #' @export print.summary.pseries <- function(x, ...){ x.orig <- x digits <- getOption("digits") special_treatment_vars <- c("factor", "logical", "character") class.basic <- setdiff(attr(x, "class.pseries"), "pseries") if(!class.basic %in% special_treatment_vars) { x <- as.numeric(x) # get tss, id/time b by coercing summary.pseries to 'numeric' share <- x[-1L]/x[1L] # vec with length == 2 names(share) <- c("id", "time") cat(paste("total sum of squares:", signif(x[1L], digits = digits),"\n")) print.default(share, ...) cat("\n") print(attr(x.orig, "SummaryDefault"), ...) } else { # use base R's facilities attr(x, "class.pseries") <- NULL # factor is special once again: is.fac <- if(class.basic == "factor") TRUE else FALSE attr(x, "class") <- if(is.fac) NULL else "summaryDefault" print(x, ...) } invisible(x.orig) } Tapply <- function(x, ...) { UseMethod("Tapply") } myave <- function(x, ...) { UseMethod("myave") } Tapply.default <- function(x, effect, func, ...) { # argument 'effect' is assumed to be a factor na.x <- is.na(x) uniqval <- tapply(x, effect, func, ...) nms <- attr(uniqval, "dimnames")[[1L]] attr(uniqval, "dimnames") <- attr(uniqval, "dim") <- NULL names(uniqval) <- nms result <- uniqval[as.character(effect)] result[na.x] <- NA return(result) } #' @importFrom stats ave myave.default <- function(x, effect, func, ...) { # argument 'effect' is assumed to be a factor na.x <- is.na(x) res <- ave(x, effect, FUN = function(x) func(x, ...)) names(res) <- as.character(effect) res[na.x] <- NA return(res) } Tapply.pseries <- function(x, effect = c("individual", "time", "group"), func, ...){ effect <- match.arg(effect) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA effect <- switch(effect, "individual"= xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]] ) z <- as.numeric(x) z <- Tapply.default(z, effect, func, ...) attr(z, "index") <- attr(x, "index") # insert original index class(z) <- c("pseries", class(z)) return(z) } myave.pseries <- function(x, effect = c("individual", "time", "group"), func, ...) { effect <- match.arg(effect) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA eff.fac <- switch(effect, "individual"= xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]] ) z <- as.numeric(x) z <- myave.default(z, eff.fac, func, ...) attr(z, "index") <- attr(x, "index") # insert original index class(z) <- c("pseries", class(z)) return(z) } Tapply.matrix <- function(x, effect, func, ...) { # argument 'effect' is assumed to be a factor na.x <- is.na(x) uniqval <- apply(x, 2, tapply, effect, func, ...) result <- uniqval[as.character(effect), , drop = FALSE] result[na.x] <- NA_real_ return(result) } myave.matrix <- function(x, effect, func, ...) { # argument 'effect' is assumed to be a factor na.x <- is.na(x) result <- apply(x, 2, FUN = function(x) ave(x, effect, FUN = function(y) func(y, ...))) rownames(result) <- as.character(effect) result[na.x] <- NA_real_ return(result) } ## non-exported Mean <- function(x) matrix(.colMeans(x, nrow(x), ncol(x)), nrow(x), ncol(x), byrow = TRUE) #' @rdname pseries #' @export Sum <- function(x, ...) { UseMethod("Sum") } #' @rdname pseries #' @export Sum.default <- function(x, effect, ...) { # print("Sum.default(.baseR)") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The Sum function only applies to numeric vectors") # Tapply(x, effect, sum, ...) return(myave(x, droplevels(effect), sum, ...)) } #' @rdname pseries #' @export Sum.pseries <- function(x, effect = c("individual", "time", "group"), ...) { # print("Sum.pseries(.baseR)") # browser() effect <- match.arg(effect) # Tapply(x, effect, sum, ...) # myave.pseries takes care of checking the index for NAs return(myave(x, effect, sum, ...)) } #' @rdname pseries #' @export Sum.matrix <- function(x, effect, ...) { # print("Sum.matrix(.baseR)") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { droplevels(effect) } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a between transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } return(myave(x, eff.fac, sum, ...)) } #' @rdname pseries #' @export Between <- function(x, ...) { UseMethod("Between") } #' @rdname pseries #' @export Between.default <- function(x, effect, ...) { # print("Between.default(.baseR)") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The Between function only applies to numeric vectors") # Tapply(x, effect, mean, ...) return(myave(x, droplevels(effect), mean, ...)) } #' @rdname pseries #' @export Between.pseries <- function(x, effect = c("individual", "time", "group"), ...) { # print("Between.pseries(.baseR)") # browser() effect <- match.arg(effect) # Tapply(x, effect = effect, mean, ...) # myave.pseries takes care of checking the index for NAs return(myave(x, effect = effect, mean, ...)) } #' @rdname pseries #' @export Between.matrix <- function(x, effect, ...) { # print("Between.matrix(.baseR)") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { droplevels(effect) } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a between transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } return(myave.matrix(x, eff.fac, mean, ...)) } #' @rdname pseries #' @export between <- function(x, ...) { UseMethod("between") } #' @rdname pseries #' @export between.default <- function(x, effect, ...) { # print("between.default(.baseR)") # browser() # argument 'effect' is assumed to be a factor if(!is.numeric(x)) stop("The between function only applies to numeric vectors") # use tapply here as tapply's output is sorted by levels factor effect (unlike ave's output) # difference is only relevant for between (small "b") as data is compressed down to # levels res <- tapply(x, droplevels(effect), mean, ...) nms <- attr(res, "dimnames")[[1L]] attr(res, "dimnames") <- attr(res, "dim") <- NULL names(res) <- nms return(res) } #' @rdname pseries #' @export between.pseries <- function(x, effect = c("individual", "time", "group"), ...) { # print("between.pseries(.baseR)") # browser() effect <- match.arg(effect) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA eff.fac <- switch(effect, "individual" = xindex[[1L]], "time" = xindex[[2L]], "group" = xindex[[3L]], ) res <- between.default(x, effect = eff.fac, ...) # data compressed by transformation, so pseries features, esp. index, do not make sense res <- remove_pseries_features(res) return(res) } #' @rdname pseries #' @export between.matrix <- function(x, effect, ...) { # print("between.matrix(.baseR)") # browser() # if no index attribute, argument 'effect' is assumed to be a factor eff.fac <- if(is.null(xindex <- attr(x, "index"))) { droplevels(effect) } else { if(!is.character(effect) && length(effect) > 1L) stop("for matrices with index attributes, the effect argument must be a character") if(! effect %in% c("individual", "time", "group")) stop("irrelevant effect for a between transformation") eff.no <- switch(effect, "individual" = 1L, "time" = 2L, "group" = 3L, stop("unknown value of argument 'effect'")) xindex <- unclass(xindex) # unclass for speed checkNA.index(xindex) # index may not contain any NA xindex[[eff.no]] } # use tapply here as tapply's output is sorted by levels factor effect (unlike ave's output) # difference is only relevant for between (small "b") as data is compressed down to # levels res <- apply(x, 2, tapply, eff.fac, mean, ...) return(res) } #' @rdname pseries #' @export Within <- function(x, ...) { UseMethod("Within") } #' @rdname pseries #' @export Within.default <- function(x, effect, ...) { # print("Within.default(.baseR)") # browser() # arg 'effect' is assumed to be a factor # NB: Contrary to the other Within.* methods, Within.default does not handle # twoways effects # TODO: could add support for twoways by supplying a list containing two factors if(!is.numeric(x)) stop("the within function only applies to numeric vectors") return(x - Between(x, droplevels(effect), ...)) } #' @rdname pseries #' @export Within.pseries <- function(x, effect = c("individual", "time", "group", "twoways"), ...) { # print("Within.pseries(.baseR)") # browser() effect <- match.arg(effect) xindex <- unclass(attr(x, "index")) # unclass for speed checkNA.index(xindex) # index may not contain any NA if(effect != "twoways") result <- x - Between(x, effect, ...) else { if(is.pbalanced(x)) result <- x - Between(x, "individual", ...) - Between(x, "time") + mean(x, ...) else { time <- xindex[[2L]] Dmu <- model.matrix(~ time - 1) attr(Dmu, "index") <- attr(x, "index") # need original index W1 <- Within(x, "individual", ...) WDmu <- Within(Dmu, "individual", ...) W2 <- lm.fit(WDmu, x)$fitted.values result <- W1 - W2 } } return(result) } #' @rdname pseries #' @export Within.matrix <- function(x, effect, ...) { # print("Within.matrix(.baseR)") # browser() if(is.null(xindex <- unclass(attr(x, "index")))) { # unclass for speed # non-index case result <- Within.default(x, effect, ...) # NB: effect is assumed to be a factor; contrary to the other Within.* # methods, Within.default does not handle twoways effects } else { # index case if(effect %in% c("individual", "time", "group")) result <- x - Between(x, effect, ...) if(effect == "twoways") { checkNA.index(xindex) # index may not contain any NA if(is.pbalanced(xindex[[1L]], xindex[[2L]])) { result <- x - Between(x, "individual", ...) - Between(x, "time", ...) + matrix(colMeans(x, ...), nrow = nrow(x), ncol = ncol(x), byrow = TRUE) } else { # unbalanced twoways time <- xindex[[2L]] Dmu <- model.matrix(~ time - 1) attr(Dmu, "index") <- attr(x, "index") # need orig. index here W1 <- Within(x, "individual", ...) WDmu <- Within(Dmu, "individual", ...) W2 <- lm.fit(WDmu, x)$fitted.values result <- W1 - W2 } } } return(result) } ############### LAG and DIFF # # lag/lead/diff for pseries are a wrappers for lagt, leadt, difft (if shift = "time") and # for lagr, leadr, diffr (if shift = "row") # # The "t" and "r" methods are not exported (by intention). # # The "t" methods perform shifting while taking the time period into # account (they "look" at the value in the time dimension). # # The "r" methods perform shifting row-wise (without taking the value # in the time dimension into account). # # Generic needed only for lead (lag and diff generics are already included in base R) #' lag, lead, and diff for panel data #' #' lag, lead, and diff functions for class pseries. #' #' This set of functions perform lagging, leading (lagging in the #' opposite direction), and differencing operations on `pseries` #' objects, i. e., they take the panel structure of the data into #' account by performing the operations per individual. #' #' Argument `shift` controls the shifting of observations to be used #' by methods `lag`, `lead`, and `diff`: #' #' - `shift = "time"` (default): Methods respect the #' numerical value in the time dimension of the index. The time #' dimension needs to be interpretable as a sequence t, t+1, t+2, #' \ldots{} where t is an integer (from a technical viewpoint, #' `as.numeric(as.character(index(your_pdata.frame)[[2]]))` needs to #' result in a meaningful integer). #' #' - `shift = "row": `Methods perform the shifting operation based #' solely on the "physical position" of the observations, #' i.e., neighbouring rows are shifted per individual. The value in the #' time index is not relevant in this case. #' #' For consecutive time periods per individual, a switch of shifting #' behaviour results in no difference. Different return values will #' occur for non-consecutive time periods per individual #' ("holes in time"), see also Examples. #' #' @name lag.plm #' @aliases lag lead diff #' @importFrom stats lag #' @param x a `pseries` object, #' @param k an integer, the number of lags for the `lag` and `lead` #' methods (can also be negative). For the `lag` method, a #' positive (negative) `k` gives lagged (leading) values. For the #' `lead` method, a positive (negative) `k` gives leading (lagged) #' values, thus, `lag(x, k = -1L)` yields the same as `lead(x, k = 1L)`. #' If `k` is an integer with length > 1 (`k = c(k1, k2, ...)`), a #' `matrix` with multiple lagged `pseries` is returned, #' @param lag integer, the number of lags for the `diff` method, can also be of #' length > 1 (see argument `k`) (only non--negative values in #' argument `lag` are allowed for `diff`), #' @param shift character, either `"time"` (default) or `"row"` #' determining how the shifting in the `lag`/`lead`/`diff` #' functions is performed (see Details and Examples). #' @param ... further arguments (currently none evaluated). #' @return #' #' - An object of class `pseries`, if the argument specifying the lag #' has length 1 (argument `k` in functions `lag` and `lead`, #' argument `lag` in function `diff`). #' #' - A matrix containing the various series in its columns, if the #' argument specifying the lag has length > 1. #' #' @note The sign of `k` in `lag.pseries` results in inverse behaviour #' compared to [stats::lag()] and [zoo::lag.zoo()]. #' @author Yves Croissant and Kevin Tappe #' @seealso To check if the time periods are consecutive per #' individual, see [is.pconsecutive()]. #' #' For further function for 'pseries' objects: [between()], #' [Between()], [Within()], [summary.pseries()], #' [print.summary.pseries()], [as.matrix.pseries()]. #' @keywords classes #' @examples #' #' # First, create a pdata.frame #' data("EmplUK", package = "plm") #' Em <- pdata.frame(EmplUK) #' #' # Then extract a series, which becomes additionally a pseries #' z <- Em$output #' class(z) #' #' # compute the first and third lag, and the difference lagged twice #' lag(z) #' lag(z, 3L) #' diff(z, 2L) #' #' # compute negative lags (= leading values) #' lag(z, -1L) #' lead(z, 1L) # same as line above #' identical(lead(z, 1L), lag(z, -1L)) # TRUE #' #' # compute more than one lag and diff at once (matrix returned) #' lag(z, c(1L,2L)) #' diff(z, c(1L,2L)) #' #' ## demonstrate behaviour of shift = "time" vs. shift = "row" #' # delete 2nd time period for first individual (1978 is missing (not NA)): #' Em_hole <- Em[-2L, ] #' is.pconsecutive(Em_hole) # check: non-consecutive for 1st individual now #' #' # original non-consecutive data: #' head(Em_hole$emp, 10) #' # for shift = "time", 1-1979 contains the value of former 1-1977 (2 periods lagged): #' head(lag(Em_hole$emp, k = 2L, shift = "time"), 10L) #' # for shift = "row", 1-1979 contains NA (2 rows lagged (and no entry for 1976): #' head(lag(Em_hole$emp, k = 2L, shift = "row"), 10L) #' NULL #' @rdname lag.plm #' @export lead <- function(x, k = 1L, ...) { UseMethod("lead") } #' @rdname lag.plm #' @exportS3Method #' @export lag lag.pseries <- function(x, k = 1L, shift = c("time", "row"), ...) { shift <- match.arg(shift) if (shift == "time") { if (!isTRUE(getOption("plm.fast"))) { res <- lagt.pseries(x = x, k = k, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::flag(x = x, n = k, shift = "time"), k = k) } } else { ## row-wise shifting if (!isTRUE(getOption("plm.fast"))) { res <- lagr.pseries(x = x, k = k, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::flag(x = x, n = k, shift = "row"), k = k) } } res } #' @rdname lag.plm #' @export lead.pseries <- function(x, k = 1L, shift = c("time", "row"), ...) { shift <- match.arg(shift) if (shift == "time") { if (!isTRUE(getOption("plm.fast"))) { res <- leadt.pseries(x = x, k = k, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::flag(x = x, n = -k, shift = "time"), k = k) } } else { ## row-wise shifting if (!isTRUE(getOption("plm.fast"))) { res <- leadr.pseries(x = x, k = k, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::flag(x = x, n = -k, shift = "row"), k = k) } } res } #' @rdname lag.plm #' @exportS3Method diff.pseries <- function(x, lag = 1L, shift = c("time", "row"), ...) { shift <- match.arg(shift) if (shift == "time") { if (!isTRUE(getOption("plm.fast"))) { res <- difft.pseries(x = x, lag = lag, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::fdiff(x = x, n = lag, shift = "time"), k = lag) } } else { ## row-wise shifting if (!isTRUE(getOption("plm.fast"))) { res <- diffr.pseries(x = x, lag = lag, ...) # base R } else { if (!isTRUE(getOption("plm.fast.pkg.collapse"))) stop(txt.no.collapse, call. = FALSE) res <- collapse2plm_lag_diff(collapse::fdiff(x = x, n = lag, shift = "row"), k = lag) } } res } ## lagt.pseries lagging taking the time variable into account lagt.pseries <- function(x, k = 1L, ...) { index <- unclass(attr(x, "index")) # unclass for speed id <- index[[1L]] time <- index[[2L]] if(length(k) > 1L) { rval <- sapply(k, function(i) alagt(x, i)) colnames(rval) <- k } else { rval <- alagt(x, k) } rval } ## leadt.pseries(x, k) is a wrapper for lagt.pseries(x, -k) leadt.pseries <- function(x, k = 1L, ...) { ret <- lagt.pseries(x, k = -k) if(length(k) > 1L) colnames(ret) <- k return(ret) } ## difft: diff-ing taking the time variable into account difft.pseries <- function(x, lag = 1L, ...){ ## copied/adapted from diffr.pseries except lines which use lagt() ("t") instead of lagr() ("r") islogi <- is.logical(x) if(! (is.numeric(x) || islogi)) stop("diff is only relevant for numeric or logical series") non.int <- vapply(lag, function(l) round(l) != l, FUN.VALUE = TRUE, USE.NAMES = FALSE) if(any(non.int)) stop("Lagging value(s) in 'lag' must be whole-numbered (and non-negative)") # prevent input of negative values, because it will most likely confuse users # what difft would do in this case neg <- vapply(lag, function(l) l < 0L, FUN.VALUE = TRUE, USE.NAMES = FALSE) if(any(neg)) stop("diff is only relevant for non-negative values in 'lag'") lagtx <- lagt.pseries(x, k = lag) # use "time-based" lagging for difft res <- if (is.matrix(lagtx)) { # if 'lagtx' is matrix (case length(lag) > 1): # perform subtraction without pseries feature of 'x', because otherwise # the result would be c("pseries", "matrix") which is not supported as.numeric(x) - lagtx } else { x - lagtx } res } ## alagt: non-exported helper function for lagt (actual work horse), ## performs shifting of observations while respecting the time dimension alagt <- function(x, ak) { if(round(ak) != ak) stop("Lagging value 'k' must be whole-numbered (positive, negative or zero)") if(ak != 0) { index <- unclass(attr(x, "index")) # unclass for speed id <- index[[1L]] time <- index[[2L]] # Idea: split times in blocks per individuals and do lagging there # by computation of correct time shifting # need to convert to numeric, do this by coercing to character # first (otherwise wrong results!) # see R FAQ 7.10 for coercing factors to numeric: # as.numeric(levels(factor_var))[as.integer(factor_var)] is # more efficient than # as.numeric(as.character(factor_var)) # YC 2019/08/29 only works if time values can be coerced to ## numeric, ie integers like years. When year is period (ie 5 years), ## values used to be 1950 for the 1950-54 period, time is now a ## factor in the original data.frame with levels "1950-54", ## "1955-59", ... In this case coercing the levels to a numeric gives ## NA so coerce the *factor* to a numeric. levtime <- levels(time) numlevtime <- suppressWarnings(as.numeric(levtime)) if(! anyNA(numlevtime)) time <- as.numeric(levels(time))[as.integer(time)] else time <- as.numeric(time) list_id_timevar <- collapse::gsplit(time, id, drop = TRUE, use.names = FALSE) index_lag_ak_all_list <- sapply(list_id_timevar, function(x) match(x - ak, x, incomparables = NA), simplify = FALSE, USE.NAMES = FALSE) # translate block-wise positions to positions in full vector substitute_blockwise <- unlist(index_lag_ak_all_list, use.names = FALSE) NApos <- is.na(substitute_blockwise) # save NA positions for later block_lengths <- lengths(index_lag_ak_all_list, use.names = FALSE) # not needed but leave here for illustration: # startpos_block <- cumsum(block_lengths) - block_lengths + 1 # endpos_block <- startpos_block + block_lengths - 1 indexes_blockwise <- unlist(sapply(block_lengths, function(x) seq(from = 1, to = x), simplify = FALSE), use.names = FALSE) orig_pos_x <- seq.int(x) # make vector with indexes for original input new_pos <- orig_pos_x - (indexes_blockwise - substitute_blockwise) # calc. new positions new_pos[NApos] <- orig_pos_x[NApos] # fill NAs with arbitrary values to allow proper subsetting in next step orig_attr <- attributes(x) x <- x[new_pos] # re-arrange according to lagging x[NApos] <- NA # set NAs where necessary attributes(x) <- orig_attr # restore original names and 'pseries' class (lost by subsetting x) } x } # END alagt ## lagr: lagging row-wise lagr.pseries <- function(x, k = 1L, ...) { index <- unclass(attr(x, "index")) # unclass for speed id <- index[[1L]] time <- index[[2L]] # catch the case when an index of pdata.frame shall be lagged # (index variables are always factors) NB: this catches - # unintentionally - also the case when a factor variable is the # same "on the character level" as one of the corresponding index # variables but not the index variable itself # # -> shall we prevent lagging of index variables at all? -> turned # off for now, 2016-03-03 if(is.factor(x)) if # (all(as.character(x) == as.character(id)) | # all(as.character(x)==as.character(time))) stop("Lagged vector # cannot be index.") alagr <- function(x, ak){ if(round(ak) != ak) stop("Lagging value 'k' must be whole-numbered (positive, negative or zero)") if(ak > 0L) { # NB: this code does row-wise shifting # delete first ak observations for each unit isNAtime <- c(rep(TRUE, ak), (diff(as.numeric(time), lag = ak) != ak)) isNAid <- c(rep(TRUE, ak), (diff(as.numeric(id), lag = ak) != 0L)) isNA <- (isNAtime | isNAid) result <- x # copy x first ... result[1:ak] <- NA # ... then make first ak obs NA ... result[(ak+1):length(result)] <- x[seq_len(length(x)-ak)] # ... shift and ... result[isNA] <- NA # ... make more NAs in between: this way, we keep: all factor levels, names, classes } else if(ak < 0L) { # => compute leading values # delete last |ak| observations for each unit num_time <- as.numeric(time) num_id <- as.numeric(id) isNAtime <- c(c((num_time[seq_len(length(num_time)+ak)] - num_time[(-ak+1):length(num_time)]) != ak), rep(TRUE, -ak)) isNAid <- c(c((num_id[seq_len(length(num_id)+ak)] - num_id[(-ak+1):length(num_id)]) != 0L), rep(TRUE, -ak)) isNA <- (isNAtime | isNAid) result <- x # copy x first ... result[(length(result)+ak+1):length(result)] <- NA # ... then make last |ak| obs NA ... result[seq_len(length(result)+ak)] <- x[(1-ak):(length(x))] # ... shift and ... result[isNA] <- NA # ... make more NAs in between: this way, we keep: all factor levels, names, classes } else { # ak == 0 => nothing to do, return original pseries (no lagging/no leading) result <- x } return(result) } # END function alagr if(length(k) > 1L) { rval <- sapply(k, function(i) alagr(x, i)) colnames(rval) <- k } else { rval <- alagr(x, k) } return(rval) } # leadr.pseries(x, k) is a wrapper for lagr.pseries(x, -k) leadr.pseries <- function(x, k = 1L, ...) { ret <- lagr.pseries(x, k = -k) if(length(k) > 1L) colnames(ret) <- k ret } ## diffr: lagging row-wise diffr.pseries <- function(x, lag = 1L, ...) { islogi <- is.logical(x) if(! (is.numeric(x) || islogi)) stop("diff is only relevant for numeric or logical series") non.int <- vapply(lag, function(l) round(l) != l, FUN.VALUE = TRUE, USE.NAMES = FALSE) if(any(non.int)) stop("Lagging value(s) in 'lag' must be whole-numbered (and non-negative)") # prevent input of negative values, because it will most likely confuse users # what diff would do in this case neg <- vapply(lag, function(l) l < 0L, FUN.VALUE = TRUE, USE.NAMES = FALSE) if(any(neg)) stop("diff is only relevant for non-negative values in 'lag'") lagrx <- lagr.pseries(x, k = lag) res <- if (is.matrix(lagrx)) { # if 'lagrx' is matrix (case length(lag) > 1): # perform subtraction without pseries feature of 'x', because otherwise # the result would be c("pseries", "matrix") which is not supported as.numeric(x) - lagrx } else { x - lagrx } res } ## pdiff is (only) used in model.matrix to calculate the ## model.matrix for FD models ## wrapper pdiff <- function(x, effect = c("individual", "time"), has.intercept = FALSE, shift = c("time", "row")) { shift <- match.arg(shift) res <- if (shift == "time") pdifft(x = x, effect = effect, has.intercept = has.intercept) else pdiffr(x = x, effect = effect, has.intercept = has.intercept) res } ## pdiffr works for effect = "individual" only, ## see model.matrix on how to call pdiff. Result is in order (id, ## time) for both effects ## ## Performs row-wise shifting (note the 'r' in pdiffr) pdiffr <- function(x, effect = c("individual", "time"), has.intercept = FALSE){ # NB: x is assumed to have an index attribute, e.g., a pseries # can check with has.index(x) # TODO: pdiff's usage in model.matrix is not very elegant as pdiff does its own # removal of constant columns and intercept handling which could be handled # via model.matrix. effect <- match.arg(effect) cond <- as.numeric(unclass(attr(x, "index"))[[1L]]) # unclass for speed n <- if(is.matrix(x)) nrow(x) else length(x) cond <- c(NA, cond[2:n] - cond[seq_len(n-1)]) # this assumes a certain ordering cond[cond != 0] <- NA if(! is.matrix(x)){ result <- c(NA , x[2:n] - x[seq_len(n-1)]) result[is.na(cond)] <- NA result <- na.omit(result) } else{ result <- rbind(NA, x[2:n, , drop = FALSE] - x[seq_len(n-1), , drop = FALSE]) result[is.na(cond), ] <- NA result <- na.omit(result) # remove constant columns cst.col <- apply(result, 2, is.constant) result <- result[ , !cst.col, drop = FALSE] if(has.intercept){ result <- cbind(1, result) colnames(result)[1L] <- "(Intercept)" } } attr(result, "na.action") <- NULL result } ## performs time-wise shifting (note the 't' in pdifft) pdifft <- function(x, effect = c("individual", "time"), has.intercept = FALSE) { effect <- match.arg(effect) x.index <- attr(x, "index") x.pdf <- as.data.frame(x, make.names = FALSE) x.pdf <- cbind(x.index, x.pdf) x.pdf <- pdata.frame(x.pdf, drop.index = TRUE) if(!is.matrix(x)) { # pseries case (LHS) res <- diff(x, effect = effect, shift = "time") res <- subset_pseries(res, !is.na(res)) # TODO: use [.pseries (pseries subsetting) once implemented } else { # matrix case (RHS) res <- apply(x, 2, function(col) diff(add_pseries_features(col, x.index), effect = effect, shift = "time")) res <- na.omit(res) # if intercept is requested, set intercept column to 1 as it was diff'ed out if(has.intercept) res[ , 1L] <- 1L } res } ### non-exported helper function to align collapse::flag to plm's original lag ## https://github.com/SebKrantz/collapse/issues/183 and there is no factor matrix ## https://stackoverflow.com/a/28724756/4640346 collapse2plm_lag_diff <- function(x, k) { if(is.matrix(x)) { dim.nam1 <- dimnames(x)[[1L]] if(inherits(x, "factor")) { # cater for collapse's special factor matrix case x <- matrix(as.character(x), ncol = dim(x)[[2L]]) dimnames(x)[[1L]] <- dim.nam1 } class(x) <- NULL attr(x, "index") <- NULL dimnames(x)[[2L]] <- k } x } plm/R/detect_lin_dep_alias.R0000644000176200001440000002600714641057410015510 0ustar liggesusers# functions to aid in detecting linear dependent columns in the (transformed) # model matrix or estimated plm models: # * detect.lindep # * alias (the latter is a wrapper around alias.lm) # # doc file provides an extensive example how linear dependence can arise after # the data transformation, e. g., for within transformation ### detect.lindep.matrix, .data.frame, .plm #' Functions to detect linear dependence #' #' Little helper functions to aid users to detect linear dependent columns in a #' two-dimensional data structure, especially in a (transformed) model matrix - #' typically useful in interactive mode during model building phase. #' #' #' Linear dependence of columns/variables is (usually) readily avoided when #' building one's model. However, linear dependence is sometimes not obvious #' and harder to detect for less experienced applied statisticians. The so #' called "dummy variable trap" is a common and probably the best--known #' fallacy of this kind (see e. g. Wooldridge (2016), sec. 7-2.). When building #' linear models with `lm` or `plm`'s `pooling` model, linear #' dependence in one's model is easily detected, at times post hoc. #' #' However, linear dependence might also occur after some transformations of #' the data, albeit it is not present in the untransformed data. The within #' transformation (also called fixed effect transformation) used in the #' `"within"` model can result in such linear dependence and this is #' harder to come to mind when building a model. See **Examples** for two #' examples of linear dependent columns after the within transformation: ex. 1) #' the transformed variables have the opposite sign of one another; ex. 2) the #' transformed variables are identical. #' #' During `plm`'s model estimation, linear dependent columns and their #' corresponding coefficients in the resulting object are silently dropped, #' while the corresponding model frame and model matrix still contain the #' affected columns. The plm object contains an element `aliased` which #' indicates any such aliased coefficients by a named logical. #' #' Both functions, `detect.lindep` and `alias`, help to #' detect linear dependence and accomplish almost the same: #' `detect.lindep` is a stand alone implementation while #' `alias` is a wrapper around #' [stats::alias.lm()], extending the `alias` #' generic to classes `"plm"` and `"pdata.frame"`. #' `alias` hinges on the availability of the package #' \CRANpkg{MASS} on the system. Not all arguments of `alias.lm` #' are supported. Output of `alias` is more informative as it #' gives the linear combination of dependent columns (after data #' transformations, i. e., after (quasi)-demeaning) while #' `detect.lindep` only gives columns involved in the linear #' dependence in a simple format (thus being more suited for automatic #' post--processing of the information). #' #' @aliases detect.lindep #' @param object for `detect.lindep`: an object which should be checked #' for linear dependence (of class `"matrix"`, `"data.frame"`, or #' `"plm"`); for `alias`: either an estimated model of class #' `"plm"` or a `"pdata.frame"`. Usually, one wants to input a model #' matrix here or check an already estimated plm model, #' @param suppressPrint for `detect.lindep` only: logical indicating #' whether a message shall be printed; defaults to printing the message, i. e., #' to `suppressPrint = FALSE`, #' @param model (see `plm`), #' @param effect (see `plm`), #' @param \dots further arguments. #' @return For `detect.lindep`: A named numeric vector containing column #' numbers of the linear dependent columns in the object after data #' transformation, if any are present. `NULL` if no linear dependent #' columns are detected. #' #' For `alias`: return value of [stats::alias.lm()] run on the #' (quasi-)demeaned model, i. e., the information outputted applies to #' the transformed model matrix, not the original data. #' @note function `detect.lindep` was called `detect_lin_dep` #' initially but renamed for naming consistency later. #' @export #' @author Kevin Tappe #' @seealso [stats::alias()], [stats::model.matrix()] and especially #' `plm`'s [model.matrix()] for (transformed) model matrices, #' plm's [model.frame()]. #' @references #' #' \insertRef{WOOL:13}{plm} #' #' @keywords manip array #' @examples #' #' ### Example 1 ### #' # prepare the data #' data("Cigar" , package = "plm") #' Cigar[ , "fact1"] <- c(0,1) #' Cigar[ , "fact2"] <- c(1,0) #' Cigar.p <- pdata.frame(Cigar) #' #' # setup a formula and a model frame #' form <- price ~ 0 + cpi + fact1 + fact2 #' mf <- model.frame(Cigar.p, form) #' # no linear dependence in the pooling model's model matrix #' # (with intercept in the formula, there would be linear dependence) #' detect.lindep(model.matrix(mf, model = "pooling")) #' # linear dependence present in the FE transformed model matrix #' modmat_FE <- model.matrix(mf, model = "within") #' detect.lindep(modmat_FE) #' mod_FE <- plm(form, data = Cigar.p, model = "within") #' detect.lindep(mod_FE) #' alias(mod_FE) # => fact1 == -1*fact2 #' plm(form, data = mf, model = "within")$aliased # "fact2" indicated as aliased #' #' # look at the data: after FE transformation fact1 == -1*fact2 #' head(modmat_FE) #' all.equal(modmat_FE[ , "fact1"], -1*modmat_FE[ , "fact2"]) #' #' ### Example 2 ### #' # Setup the data: #' # Assume CEOs stay with the firms of the Grunfeld data #' # for the firm's entire lifetime and assume some fictional #' # data about CEO tenure and age in year 1935 (first observation #' # in the data set) to be at 1 to 10 years and 38 to 55 years, respectively. #' # => CEO tenure and CEO age increase by same value (+1 year per year). #' data("Grunfeld", package = "plm") #' set.seed(42) #' # add fictional data #' Grunfeld$CEOtenure <- c(replicate(10, seq(from=s<-sample(1:10, 1), to=s+19, by=1))) #' Grunfeld$CEOage <- c(replicate(10, seq(from=s<-sample(38:65, 1), to=s+19, by=1))) #' #' # look at the data #' head(Grunfeld, 50) #' #' form <- inv ~ value + capital + CEOtenure + CEOage #' mf <- model.frame(pdata.frame(Grunfeld), form) #' # no linear dependent columns in original data/pooling model #' modmat_pool <- model.matrix(mf, model="pooling") #' detect.lindep(modmat_pool) #' mod_pool <- plm(form, data = Grunfeld, model = "pooling") #' alias(mod_pool) #' #' # CEOtenure and CEOage are linear dependent after FE transformation #' # (demeaning per individual) #' modmat_FE <- model.matrix(mf, model="within") #' detect.lindep(modmat_FE) #' mod_FE <- plm(form, data = Grunfeld, model = "within") #' detect.lindep(mod_FE) #' alias(mod_FE) #' #' # look at the transformed data: after FE transformation CEOtenure == 1*CEOage #' head(modmat_FE, 50) #' all.equal(modmat_FE[ , "CEOtenure"], modmat_FE[ , "CEOage"]) #' detect.lindep <- function(object, ...) { UseMethod("detect.lindep") } #' @rdname detect.lindep #' @method detect.lindep matrix #' @export detect.lindep.matrix <- function(object, suppressPrint = FALSE, ...) { if (!inherits(object, "matrix")) { stop("Input 'object' must be a matrix. Presumably, one wants a model matrix generated by some 'model.matrix' function.")} # do rank reduction to detect lin. dep. columns rank_rec <- sapply(seq_len(ncol(object)), function(col) qr(object[ , -col])$rank) if (length(rank_rec) == 0 || diff(range(rank_rec)) == 0) { # return NULL if there is no linear dep. (length(rank_rec) == 0 to detect matrix with 0 columns) num <- NULL } else { num <- which(rank_rec == max(rank_rec)) names(num) <- colnames(object)[num] } if(!suppressPrint) { if(is.null(num)) { print("No linear dependent column(s) detected.") } else { print(paste0("Suspicious column number(s): ", paste(num, collapse = ", "))) print(paste0("Suspicious column name(s): ", paste(names(num), collapse = ", "))) } return(invisible(num)) } return(num) } #' @rdname detect.lindep #' @method detect.lindep data.frame #' @export detect.lindep.data.frame <- function(object, suppressPrint = FALSE, ...) { if (!inherits(object, "data.frame")) { stop("Input 'object' must be a data.frame")} return(detect.lindep.matrix(as.matrix(object), suppressPrint = suppressPrint, ...)) } #' @rdname detect.lindep #' @method detect.lindep plm #' @export detect.lindep.plm <- function(object, suppressPrint = FALSE, ...) { if (!inherits(object, "plm")) { stop("Input 'object' must be of class \"plm\"")} return(detect.lindep.matrix(model.matrix(object), suppressPrint = suppressPrint, ...)) } ### alias.plm # This is just a wrapper function to allow to apply the generic stats::alias on # plm objects with the _transformed data_ (the transformed model.matrix). # NB: arguments 'model' and 'effect' are not treated here. #' @rdname detect.lindep #' @export alias.plm <- function(object, ...) { dots <- list(...) if (!is.null(dots$inst.method)) stop("alias.plm: IV not supported") if (length(formula(object))[2] == 2) stop("alias.plm: IV not supported") # catch unsupported alias.lm args and convert if (!is.null(dots[["partial"]])) { if (dots[["partial"]]) { dots[["partial"]] <- FALSE warning("alias.plm: arg partial = TRUE not supported, changed to FALSE") } } if (!is.null(dots[["partial.pattern"]])) { if (dots[["partial.pattern"]]) { dots[["partial.pattern"]] <- FALSE warning("alias.plm: arg partial.pattern = TRUE not supported, changed to FALSE") } } X <- model.matrix(object) y <- pmodel.response(object) lm.fit.obj <- lm.fit(X, y) class(lm.fit.obj) <- "lm" lm.fit.obj$terms <- deparse(object$formula) ## use lm.fit rather than lm(): ## could estimate lm model with lm(), but takes more resources and ## need to remove extra classes "formula" for lm to prevent warning # form <- object$formula # form <- setdiff(class(form), c("Formula")) # Xdf <- as.data.frame(X) # ydf <- as.data.frame(y) # names(ydf) <- names(object$model)[1] # data <- cbind(ydf, Xdf) # lmobj <- lm(form, data = data) # return(stats::alias(lmobj)) return(stats::alias(lm.fit.obj, ... = dots)) } #' @rdname detect.lindep #' @export alias.pdata.frame <- function(object, model = c("pooling", "within", "Between", "between", "mean", "random", "fd"), effect = c("individual", "time", "twoways"), ...) { dots <- list(...) if (!is.null(dots$inst.method)) stop("alias.pdata.frame: IV not supported") model <- match.arg(model) effect <- match.arg(effect) # check if data is already a model frame, if not exit if (is.null(attr(object, "terms"))) stop("the argument must be a model.frame") formula <- attr(object, "formula") plmobj <- plm(formula, data = object, model = model, effect = effect, ...) return(alias(plmobj, ...)) } plm/R/test_general.R0000644000176200001440000013275014735570133014062 0ustar liggesusers #' Hausman Test for Panel Models #' #' Specification test for panel models. #' #' The Hausman test (sometimes also called Durbin--Wu--Hausman test) #' is based on the difference of the vectors of coefficients of two #' different models. The `panelmodel` method computes the original #' version of the test based on a quadratic form #' \insertCite{HAUS:78}{plm}. The `formula` method, if #' `method = "chisq"` (default), computes the original version of the #' test based on a quadratic form; if `method ="aux"` then the #' auxiliary-regression-based version as in \insertCite{WOOL:10;textual}{plm}, #' Sec.10.7.3. Only the latter can be robustified by specifying a robust #' covariance estimator as a function through the argument `vcov` (see #' **Examples**). #' #' The `effect` argument is only relevant for the formula method/interface and #' is then applied to both models. For the panelmodel method/interface, the test #' is run with the effects of the already estimated models. #' #' The equivalent tests in the **one-way** case using a between #' model (either "within vs. between" or "random vs. between") #' \insertCite{@see @HAUS:TAYL:81 or @BALT:13 Sec.4.3}{plm} can also #' be performed by `phtest`, but only for `test = "chisq"`, not for #' the regression-based test. NB: These equivalent tests using the #' between model do not extend to the two-ways case. There are, #' however, some other equivalent tests, #' \insertCite{@see @KANG:85 or @BALT:13 Sec.4.3.7}{plm}, #' but those are unsupported by `phtest`. #' #' @aliases phtest #' @param x an object of class `"panelmodel"` or `"formula"`, #' @param x2 an object of class `"panelmodel"` (only for panelmodel method/interface), #' @param model a character vector containing the names of two models #' (length(model) must be 2), #' @param effect a character specifying the effect to be introduced to both models, #' one of `"individual"`, `"time"`, or `"twoways"` (only for formula method), #' @param data a `data.frame`, #' @param method one of `"chisq"` or `"aux"`, #' @param index an optional vector of index variables, #' @param vcov an optional covariance function, #' @param \dots further arguments to be passed on (currently none). #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant, Giovanni Millo #' @references #' #' \insertRef{HAUS:78}{plm} #' #' \insertRef{HAUS:TAYL:81}{plm} #' #' \insertRef{KANG:85}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' \insertRef{BALT:13}{plm} #' #' @keywords htest #' @examples #' #' data("Gasoline", package = "plm") #' form <- lgaspcar ~ lincomep + lrpmg + lcarpcap #' wi <- plm(form, data = Gasoline, model = "within") #' re <- plm(form, data = Gasoline, model = "random") #' phtest(wi, re) #' phtest(form, data = Gasoline) #' phtest(form, data = Gasoline, effect = "time") #' #' # Regression-based Hausman test #' phtest(form, data = Gasoline, method = "aux") #' #' # robust Hausman test with vcov supplied as a function and #' # with additional parameters #' phtest(form, data = Gasoline, method = "aux", vcov = vcovHC) #' phtest(form, data = Gasoline, method = "aux", #' vcov = function(x) vcovHC(x, method="white2", type="HC3")) #' phtest <- function(x,...){ UseMethod("phtest") } #' @rdname phtest #' @export phtest.formula <- function(x, data, model = c("within", "random"), effect = c("individual", "time", "twoways"), method = c("chisq", "aux"), index = NULL, vcov = NULL, ...) { if (length(model) != 2) stop("two models should be indicated in argument 'model'") for (i in 1:2){ model.name <- model[i] if(!(model.name %in% names(model.plm.list))){ stop("model must be one of ", oneof(model.plm.list)) } } effect <- match.arg(effect) switch(match.arg(method), "chisq" = { cl <- match.call(expand.dots = TRUE) cl$model <- model[1L] cl$effect <- effect names(cl)[2L] <- "formula" m <- match(plm.arg, names(cl), 0L) cl <- cl[c(1L, m)] cl[[1L]] <- as.name("plm") plm.model.1 <- eval(cl, parent.frame()) plm.model.2 <- update(plm.model.1, model = model[2L]) return(phtest(plm.model.1, plm.model.2)) # exit to phtest.panelmodel }, "aux" = { ## some interface checks here if (model[1L] != "within") { stop("Please supply 'within' as first model type") } if (!is.null(vcov) && !is.function(vcov)) stop("argument 'vcov' needs to be a function") ## set pdata.frame if (!inherits(data, "pdata.frame")) data <- pdata.frame(data, index = index) #, ...) # reset rownames of original data set (->numbers rownames in clean sequence) to make rownames # comparable for later comparison to obs used in estimation of models (get rid of NA values) # [needed because pmodel.response() and model.matrix() do not retain fancy rownames, but rownames] row.names(data) <- NULL # calculate FE and RE model fe_mod <- plm(formula = x, data = data, model = model[1L], effect = effect) re_mod <- plm(formula = x, data = data, model = model[2L], effect = effect) ## DEBUG printing: # print(effect) # print(model) # print(paste0("mod1: ", describe(fe_mod, "effect"))) # print(paste0("mod2: ", describe(re_mod, "effect"))) # print(fe_mod) # print(re_mod) reY <- pmodel.response(re_mod) # reX <- model.matrix(re_mod)[ , -1, drop = FALSE] # intercept not needed; drop=F needed to prevent matrix # feX <- model.matrix(fe_mod, cstcovar.rm = TRUE) # from degenerating to vector if only one regressor reX <- model.matrix(re_mod, cstcovar.rm = "intercept") feX <- model.matrix(fe_mod, cstcovar.rm = "all") ## estimated models could have fewer obs (due dropping of NAs) compared to the original data ## => match original data and observations used in estimated models ## routine adapted from lmtest::bptest commonrownames <- intersect(intersect(intersect(row.names(data), names(reY)), row.names(reX)), row.names(feX)) if(!(all(c(row.names(data) %in% commonrownames, commonrownames %in% row.names(data))))) { data <- data[commonrownames, , drop = FALSE] reY <- reY[commonrownames] reX <- reX[commonrownames, , drop = FALSE] feX <- feX[commonrownames, , drop = FALSE] } # Tests of correct matching of obs (just for safety ...) if(!all(c(isTRUE(all.equal(length(reY), nrow(data))), isTRUE(all.equal(nrow(reX), nrow(feX))), isTRUE(all.equal(length(reY), nrow(reX)))))) stop("number of cases/observations do not match, most likely due to NAs in \"data\"") if(any(c(is.na(names(reY)), is.na(row.names(data)), is.na(row.names(reX)), is.na(row.names(feX))))) stop("one (or more) rowname(s) is (are) NA") if(!all(c(isTRUE(all.equal(names(reY), row.names(data))), isTRUE(all.equal(row.names(reX), row.names(feX))), isTRUE(all.equal(names(reY), row.names(reX)))))) stop("row.names of cases/observations do not match, most likely due to NAs in \"data\"") ## construct data set and formula for auxiliary regression dimnames(feX)[[2L]] <- paste(dimnames(feX)[[2L]], "tilde", sep=".") auxdata <- pdata.frame(cbind(index(data), reY, reX, feX)) auxfm <- as.formula(paste("reY~", paste(dimnames(reX)[[2L]], collapse="+"), "+", paste(dimnames(feX)[[2L]], collapse="+"), sep="")) auxmod <- plm(formula = auxfm, data = auxdata, model = "pooling") nvars <- dim(feX)[[2L]] R <- diag(1, nvars) r <- rep(0, nvars) # here just for clarity of illustration range <- (nvars+2L):(nvars*2L + 1L) omega0 <- vcov(auxmod)[range, range] Rbr <- crossprod(R, coef(auxmod)[range]) - r df <- nvars h2t <- as.numeric(crossprod(Rbr, solve(omega0, Rbr))) ph2t <- pchisq(h2t, df = df, lower.tail = FALSE) names(df) <- "df" names(h2t) <- "chisq" if(!is.null(vcov)) { vcov <- paste(", vcov: ", paste(deparse(substitute(vcov))), sep="") } haus2 <- list(statistic = h2t, p.value = ph2t, parameter = df, method = paste("Regression-based Hausman test", vcov, sep=""), alternative = "one model is inconsistent", data.name = paste(deparse(substitute(x))), auxmod = auxmod) class(haus2) <- "htest" return(haus2) }) } #' @rdname phtest #' @export phtest.panelmodel <- function(x, x2, ...) { coef.wi <- coef(x) coef.re <- coef(x2) vcov.wi <- vcov(x) vcov.re <- vcov(x2) names.wi <- names(coef.wi) names.re <- names(coef.re) common_coef_names <- names.re[names.re %in% names.wi] coef.h <- common_coef_names[!(common_coef_names %in% "(Intercept)")] # drop intercept if included (relevant when between model input) if(length(coef.h) == 0L) stop("no common coefficients in models") dbeta <- coef.wi[coef.h] - coef.re[coef.h] df <- length(dbeta) dvcov <- vcov.wi[coef.h, coef.h] - vcov.re[coef.h, coef.h] #### BEGIN cater for equivalent test within vs. between # Baltagi (2013), Sec. 4.3, pp. 77, 81 modx <- describe(x, what = "model") modx2 <- describe(x2, what = "model") effx <- describe(x, what = "effect") effx2 <- describe(x2, what = "effect") # Tests with between model do not extend to two-ways case -> give error # There are, however, some equiv. tests with the individual/time between # model, but let's not support them (see Kang (1985), Baltagi (2013), Sec. 4.3.7) if ( (modx == "between" || modx2 == "between") && (effx == "twoways" || effx2 == "twoways")) stop("tests with between model in twoways case not supported") # in case of one-way within vs. between (m3 in Baltagi (2013), pp. 77, 81) # the variances need to be added (not subtracted like in the other cases) if ( (modx == "within" && modx2 == "between") || (modx2 == "within" && modx == "between")) { dvcov <- vcov.wi[coef.h, coef.h] + vcov.re[coef.h, coef.h] } #### END cater for equivalent tests with between model stat <- as.numeric(abs(t(dbeta) %*% solve(dvcov) %*% dbeta)) pval <- pchisq(stat, df = df, lower.tail = FALSE) names(stat) <- "chisq" parameter <- df names(parameter) <- "df" alternative <- "one model is inconsistent" ## DEBUG printing: # print(paste0("mod1: ", describe(x, "effect"))) # print(paste0("mod2: ", describe(x2, "effect"))) res <- list(statistic = stat, p.value = pval, parameter = parameter, method = "Hausman Test", data.name = data.name(x), alternative = alternative) class(res) <- "htest" return(res) } ############## plmtest() ############################################ # For a concise overview with original references, see # Baltagi (2013), Econometric Analysis of Panel Data, 5th edition, pp. 68-76 (balanced), pp. 200-203 (unbalanced). # # balanced (original) version of Breusch-Pagan test: # T.S. Breusch & A.R. Pagan (1979), # A Simple Test for Heteroscedasticity and Random Coefficient Variation, # Econometrica 47, pp. 1287-1294 # # unbalanced version: # Baltagi/Li (1990), # A lagrange multiplier test for the error components model with incomplete panels, # Econometric Reviews, 9, pp. 103-107, # pchibarsq: helper function: "p-function" for mixed chisq (also called chi-bar-squared) # used in plmtest(., type = "ghm"), see Baltagi (2013), pp. 71-72, 74, 88, 202-203, 209 # # a reference for the distribution seems to be # Dykstra, R./El Barmi, H., Chi-Bar-Square Distributions, in: Encyclopedia of Statistical Sciences, # DOI: 10.1002/0471667196.ess0265.pub2 pchibarsq <- function(q, df, weights, lower.tail = TRUE, ... ) { # NB: other parameters in dots (...): not checked if valid! (ncp, log, ...) sum(weights * pchisq(q, df = df, lower.tail = lower.tail, ...)) } #' Lagrange FF Multiplier Tests for Panel Models #' #' Test of individual and/or time effects for panel models. #' #' These Lagrange multiplier tests use only the residuals of the #' pooling model. The first argument of this function may be either a #' pooling model of class `plm` or an object of class `formula` #' describing the model. For input within (fixed effects) or random #' effects models, the corresponding pooling model is calculated #' internally first as the tests are based on the residuals of the #' pooling model. #' #' The `"bp"` test for unbalanced panels was derived in #' \insertCite{BALT:LI:90;textual}{plm} #' (1990), the `"kw"` test for unbalanced panels in #' \insertCite{BALT:CHAN:LI:98;textual}{plm}. #' #' The `"ghm"` test and the `"kw"` test were extended to two-way #' effects in \insertCite{BALT:CHAN:LI:92;textual}{plm}. #' #' For a concise overview of all these statistics see #' \insertCite{BALT:03;textual}{plm}, Sec. 4.2, pp. 68--76 (for balanced #' panels) and Sec. 9.5, pp. 200--203 (for unbalanced panels). #' #' @aliases plmtest #' @param x an object of class `"plm"` or a formula of class #' `"formula"`, #' @param data a `data.frame`, #' @param effect a character string indicating which effects are #' tested: individual effects (`"individual"`), time effects #' (`"time"`) or both (`"twoways"`), #' @param type a character string indicating the test to be performed: #' #' - `"honda"` (default) for \insertCite{HOND:85;textual}{plm}, #' - `"bp"` for \insertCite{BREU:PAGA:80;textual}{plm}, #' - `"kw"` for \insertCite{KING:WU:97;textual}{plm}, or #' - `"ghm"` for \insertCite{GOUR:HOLL:MONF:82;textual}{plm} for #' unbalanced panel data sets, the respective unbalanced version #' of the tests are computed, #' #' @param \dots further arguments passed to `plmtest`. #' @return An object of class `"htest"`. #' @note For the King-Wu statistics (`"kw"`), the oneway statistics #' (`"individual"` and `"time"`) coincide with the respective #' Honda statistics (`"honda"`); twoway statistics of `"kw"` and #' `"honda"` differ. #' @export #' @author Yves Croissant (initial implementation), Kevin Tappe #' (generalization to unbalanced panels) #' @seealso [pFtest()] for individual and/or time effects tests based #' on the within model. #' @references #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:LI:90}{plm} #' #' \insertRef{BALT:CHAN:LI:92}{plm} #' #' \insertRef{BALT:CHAN:LI:98}{plm} #' #' \insertRef{BREU:PAGA:80}{plm} #' #' \insertRef{GOUR:HOLL:MONF:82}{plm} #' #' \insertRef{HOND:85}{plm} #' #' \insertRef{KING:WU:97}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' g <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") #' plmtest(g) #' plmtest(g, effect="time") #' plmtest(inv ~ value + capital, data = Grunfeld, type = "honda") #' plmtest(inv ~ value + capital, data = Grunfeld, type = "bp") #' plmtest(inv ~ value + capital, data = Grunfeld, type = "bp", effect = "twoways") #' plmtest(inv ~ value + capital, data = Grunfeld, type = "ghm", effect = "twoways") #' plmtest(inv ~ value + capital, data = Grunfeld, type = "kw", effect = "twoways") #' #' Grunfeld_unbal <- Grunfeld[1:(nrow(Grunfeld)-1), ] # create an unbalanced panel data set #' g_unbal <- plm(inv ~ value + capital, data = Grunfeld_unbal, model = "pooling") #' plmtest(g_unbal) # unbalanced version of test is indicated in output #' plmtest <- function(x, ...){ UseMethod("plmtest") } #' @rdname plmtest #' @export plmtest.plm <- function(x, effect = c("individual", "time", "twoways"), type = c("honda", "bp", "ghm", "kw"), ...) { effect <- match.arg(effect) type <- match.arg(type) if (describe(x, "model") != "pooling") x <- update(x, model = "pooling") pdim <- pdim(x) N_obs <- pdim$nT$N balanced <- pdim$balanced index <- unclass(attr(model.frame(x), "index")) # unclass for speed id <- index[[1L]] time <- index[[2L]] T_i <- pdim$Tint$Ti N_t <- pdim$Tint$nt res <- resid(x) ### calc of parts of test statistic ## # calc. is done w/o using matrix calculation, see, e.g., Baltagi/Li (1990), p. 106 CP.res <- crossprod(res) A1 <- as.numeric(crossprod(tapply(res, id, sum)) / CP.res - 1) # == A1 <- sum(tapply(res,id,sum)^2) / sum(res^2) - 1 A2 <- as.numeric(crossprod(tapply(res, time, sum)) / CP.res - 1) # == A2 <- sum(tapply(res,time,sum)^2) / sum(res^2) - 1 M11 <- sum(T_i ^ 2) M22 <- sum(N_t ^ 2) LM1 <- N_obs * (1 / sqrt(2 * (M11 - N_obs))) * A1 # == sqrt( (((N_obs)^2) / 2) * ( A1^2 / (M11 - N_obs)) ) [except sign due to positive sqrt] LM2 <- N_obs * (1 / sqrt(2 * (M22 - N_obs))) * A2 # == sqrt( (((N_obs)^2) / 2) * ( A2^2 / (M22 - N_obs)) ) [except sign due to positive sqrt] ### END calc of parts of test statistic ## if (effect != "twoways"){ # oneway if (!type %in% c("honda", "bp", "kw")) stop("type must be one of \"honda\", \"bp\" or \"kw\" for a one way model") # kw oneway coincides with honda stat <- if(effect == "individual") LM1 else LM2 stat <- switch(type, honda = c(normal = stat), bp = c(chisq = stat ^ 2), kw = c(normal = stat)) parameter <- switch(type, honda = NULL, bp = c(df = 1), # df = 1 in the oneway case (Baltagi (2013), p. 70) kw = NULL) pval <- switch(type, honda = pnorm(stat, lower.tail = FALSE), # honda oneway ~ N(0,1), alternative is one-sided (Baltagi (2013), p. 71/202) bp = pchisq(stat, df = parameter, lower.tail = FALSE), # df = 1 in the one-way case, alternative is two-sided (Baltagi (2013), p. 70/201) kw = pnorm(stat, lower.tail = FALSE)) # kw oneway ~ N(0,1), alternative is one-sided (Baltagi (2013), p. 71/202) # END oneway } else { # twoways stat <- switch(type, honda = c(normal = (LM1 + LM2) / sqrt(2)), bp = c(chisq = LM1 ^ 2 + LM2 ^ 2), kw = c(normal = (sqrt(M11 - N_obs) / sqrt(M11 + M22 - 2 * N_obs)) * LM1 + (sqrt(M22 - N_obs) / sqrt(M11 + M22 - 2 * N_obs)) * LM2), ghm = c(chibarsq = max(0, LM1) ^ 2 + max(0, LM2) ^ 2)) parameter <- switch(type, honda = NULL, bp = c(df = 2), # df = 2 in the twoway case (Baltagi (2013), p. 70/201) kw = NULL, ghm = c(df0 = 0L, df1 = 1L, df2 = 2L, w0 = 1/4, w1 = 1/2, w2 = 1/4)) # chibarsquared (mixed chisq) has several dfs and weights (Baltagi (2013), p. 72/202) pval <- switch(type, honda = pnorm(stat, lower.tail = FALSE), # honda two-ways ~ N(0,1), alternative is one-sided (Baltagi (2013), p. 71/202) bp = pchisq(stat, df = parameter, lower.tail = FALSE), # is df = 2 in the twoway case, alternative is two-sided (Baltagi (2013), p. 70/201) kw = pnorm(stat, lower.tail = FALSE), # kw twoways ~ N(0,1), alternative is one-sided (Baltagi (2013), p. 71/202) ghm = pchibarsq(stat, df = c(0L, 1L, 2L), weights = c(1/4, 1/2, 1/4), lower.tail = FALSE)) # mixed chisq (also called chi-bar-square), see Baltagi (2013), pp. 71-72, 74, 88, 202-203, 209 } # END twoways method.type <- switch(type, honda = "Honda", bp = "Breusch-Pagan", ghm = "Gourieroux, Holly and Monfort", kw = "King and Wu") method.effect <- switch(effect, id = "individual effects", time = "time effects", twoways = "two-ways effects") method <- paste("Lagrange Multiplier Test - ", method.effect, " (", method.type, ")", sep="") if (type %in% c("honda", "kw")) { RVAL <- list(statistic = stat, p.value = pval, method = method, data.name = data.name(x)) } else { # bp, ghm RVAL <- list(statistic = stat, p.value = pval, method = method, parameter = parameter, data.name = data.name(x)) } RVAL$alternative <- "significant effects" # TODO: maybe distinguish b/w one-sided and two-sided alternatives? # (bp: two-sided alt.; all others: one-sided alt.?) class(RVAL) <- "htest" return(RVAL) } #' @rdname plmtest #' @export plmtest.formula <- function(x, data, ..., effect = c("individual", "time", "twoways"), type = c("honda", "bp", "ghm", "kw")) { cl <- match.call(expand.dots = TRUE) cl$model <- "pooling" # plmtest is performed on the pooling model... cl$effect <- NULL # ... and pooling model has no argument effect... cl$type <- NULL # ... and no argument type => see below: pass on args effect and type to plmtest.plm() names(cl)[2L] <- "formula" m <- match(plm.arg, names(cl), 0L) cl <- cl[c(1L, m)] cl[[1L]] <- as.name("plm") plm.model <- eval(cl, parent.frame()) plmtest(plm.model, effect = effect, type = type) # pass on args effect and type to plmtest.plm() } #' F Test for Individual and/or Time Effects #' #' Test of individual and/or time effects based on the comparison of the #' `within` and the `pooling` model. #' #' For the `plm` method, the argument of this function is two `plm` #' objects, the first being a within model, the second a pooling #' model. The effects tested are either individual, time or twoways, #' depending on the effects introduced in the within model. #' #' @aliases pFtest #' @param x an object of class `"plm"` or of class `"formula"`, #' @param z an object of class `"plm"`, #' @param data a `data.frame`, #' @param \dots further arguments. #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant #' @seealso [plmtest()] for Lagrange multiplier tests of individuals #' and/or time effects. #' @keywords htest #' @examples #' #' data("Grunfeld", package="plm") #' gp <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") #' gi <- plm(inv ~ value + capital, data = Grunfeld, #' effect = "individual", model = "within") #' gt <- plm(inv ~ value + capital, data = Grunfeld, #' effect = "time", model = "within") #' gd <- plm(inv ~ value + capital, data = Grunfeld, #' effect = "twoways", model = "within") #' pFtest(gi, gp) #' pFtest(gt, gp) #' pFtest(gd, gp) #' pFtest(inv ~ value + capital, data = Grunfeld, effect = "twoways") #' pFtest <- function(x, ...){ UseMethod("pFtest") } #' @rdname pFtest #' @export pFtest.formula <- function(x, data, ...){ cl <- match.call(expand.dots = TRUE) cl$model <- "within" names(cl)[2L] <- "formula" m <- match(plm.arg,names(cl), 0L) cl <- cl[c(1L, m)] cl[[1L]] <- as.name("plm") plm.within <- eval(cl,parent.frame()) plm.pooling <- update(plm.within, model = "pooling") pFtest(plm.within, plm.pooling, ...) } #' @rdname pFtest #' @export pFtest.plm <- function(x, z, ...){ within <- x pooling <- z ## leave this interface check commented because pkg AER (reverse dependency) has examples that ## use pFtest(within_twoway, within_time) # if (! (describe(x, "model") == "within" && describe(z, "model") == "pooling")) # stop("the two arguments should be a 'within' and a 'pooling' model (in this order)") effect <- describe(x, "effect") df1 <- df.residual(pooling)-df.residual(within) df2 <- df.residual(within) ssrp <- as.numeric(crossprod(residuals(pooling))) ssrw <- as.numeric(crossprod(residuals(within))) stat <- (ssrp-ssrw)/ssrw/df1*df2 names(stat) <- "F" parameter <- c(df1, df2) names(parameter) <- c("df1", "df2") pval <- pf(stat, df1, df2, lower.tail = FALSE) alternative <- "significant effects" res <- list(statistic = stat, p.value = pval, method = paste("F test for ", effect, " effects", sep=""), parameter = parameter, data.name = data.name(x), alternative = alternative) class(res) <- "htest" res } ############## pwaldtest() ############################################ # pwaldtest is used in summary.plm, summary.pht, summary.pgmm to compute the # Chi-square or F statistic, but can be used as a stand-alone test of # joint significance of all slopes # # Short intro (but see associated help file) # arg 'vcov' non-NULL => the robust tests are carried out # arg df2adj == TRUE does finite-sample/cluster adjustment for F tests's df2 # args .df1, .df2 are only there if user wants to do overwriting of dfs (user has final say) # # Chi-sq test for IV models as in Wooldridge (1990), A note on the Lagrange multiplier and F-statistics for two stage least # squares regressions, Economics Letters 34: 151-155. #' Wald-style Chi-square Test and F Test #' #' Wald-style Chi-square test and F test of slope coefficients being #' zero jointly, including robust versions of the tests. #' #' #' `pwaldtest` can be used stand--alone with a plm object, a pvcm object, #' and a pgmm object (for pvcm objects only the 'random' type is valid and no #' further arguments are processed; for pgmm objects only arguments `param` #' and `vcov` are valid). It is also used in #' [summary.plm()] to produce the F statistic and the Chi-square #' statistic for the joint test of coefficients and in [summary.pgmm()]. #' #' `pwaldtest` performs the test if the slope coefficients of a panel #' regression are jointly zero. It does not perform general purpose #' Wald-style tests (for those, see [lmtest::waldtest()] (from package #' \CRANpkg{lmtest}) or [car::linearHypothesis()] (from package #' \CRANpkg{car})). #' #' If a user specified variance-covariance matrix/function is given in #' argument `vcov`, the robust version of the tests are carried out. #' In that case, if the F test is requested (`test = "F"`) and no #' overwriting of the second degrees of freedom parameter is given (by #' supplying argument (`.df2`)), the adjustment of the second degrees #' of freedom parameter is performed by default. The second degrees of #' freedom parameter is adjusted to be the number of unique elements #' of the cluster variable - 1, e. g., the number of individuals minus 1. #' For the degrees of freedom adjustment of the F test in general, #' see e. g. \insertCite{CAME:MILL:15;textual}{plm}, section VII; #' \insertCite{ANDR:GOLS:SCMI:13}{plm}, pp. 126, footnote 4. #' #' The degrees of freedom adjustment requires the vcov object supplied #' or created by a supplied function to carry an attribute called #' "cluster" with a known clustering described as a character (for now #' this could be either `"group"` or `"time"`). The vcovXX functions #' of the package \pkg{plm} provide such an attribute for their #' returned variance--covariance matrices. No adjustment is done for #' unknown descriptions given in the attribute "cluster" or when the #' attribute "cluster" is not present. Robust vcov objects/functions #' from package \CRANpkg{clubSandwich} work as inputs to `pwaldtest`'s #' F test because a they are translated internally to match the needs #' described above. #' #' @aliases pwaldtest #' @param x an estimated model of which the coefficients should be #' tested (usually of class `"plm"`/`"pvcm"`/`"pgmm"`)`, #' @param test a character, indicating the test to be performed, may #' be either `"Chisq"` or `"F"` for the Wald-style #' Chi-square test or F test, respectively, #' @param vcov `NULL` by default; a `matrix` giving a #' variance--covariance matrix or a function which computes such; #' if supplied (non `NULL`), the test is carried out using #' the variance--covariance matrix indicated resulting in a robust #' test, #' @param df2adj logical, only relevant for `test = "F"`, #' indicating whether the adjustment for clustered standard errors #' for the second degrees of freedom parameter should be performed #' (see **Details**, also for further requirements regarding #' the variance--covariance matrix in `vcov` for the #' adjustment to be performed), #' @param .df1 a numeric, used if one wants to overwrite the first #' degrees of freedom parameter in the performed test (usually not #' used), #' @param .df2 a numeric, used if one wants to overwrite the second #' degrees of freedom parameter for the F test (usually not used), #' @param param (for pgmm method only): select the parameters to be tested: #' `"coef"`, `"time"`, or `"all"``. #' @param \dots further arguments (currently none). #' @return An object of class `"htest"`, except for pvcm's within model for which #' a data.frame with results of the Wald chi-square tests and F tests per #' regression is returned. #' @export #' @author Yves Croissant (initial implementation) and Kevin Tappe #' (extensions: vcov argument and F test's df2 adjustment) #' @seealso #' #' [vcovHC()] for an example of the vcovXX functions, a robust #' estimation for the variance--covariance matrix; [summary.plm()] #' @references #' #' \insertRef{WOOL:10}{plm} #' #' \insertRef{ANDR:GOLS:SCMI:13}{plm} #' #' \insertRef{CAME:MILL:15}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' mod_fe <- plm(inv ~ value + capital, data = Grunfeld, model = "within") #' mod_re <- plm(inv ~ value + capital, data = Grunfeld, model = "random") #' pwaldtest(mod_fe, test = "F") #' pwaldtest(mod_re, test = "Chisq") #' #' # with robust vcov (matrix, function) #' pwaldtest(mod_fe, vcov = vcovHC(mod_fe)) #' pwaldtest(mod_fe, vcov = function(x) vcovHC(x, type = "HC3")) #' #' pwaldtest(mod_fe, vcov = vcovHC(mod_fe), df2adj = FALSE) # w/o df2 adjustment #' #' # example without attribute "cluster" in the vcov #' vcov_mat <- vcovHC(mod_fe) #' attr(vcov_mat, "cluster") <- NULL # remove attribute #' pwaldtest(mod_fe, vcov = vcov_mat) # no df2 adjustment performed #' #' pwaldtest <- function(x, ...) { UseMethod("pwaldtest") } #' @rdname pwaldtest #' @export pwaldtest.plm <- function(x, test = c("Chisq", "F"), vcov = NULL, df2adj = (test == "F" && !is.null(vcov) && missing(.df2)), .df1, .df2, ...) { model <- describe(x, "model") test <- match.arg(test) df1 <- if(model == "within") length(coef(x)) else { length(coef(x)) - has.intercept(x) } df2 <- df.residual(x) # tss <- tss(x) # not good for models without intercept # ssr <- deviance(x) # -- " -- vcov_arg <- vcov int <- "(Intercept)" coefs_wo_int <- coef(x)[!(names(coef(x)) %in% int)] if(!length(coefs_wo_int)) stop(paste("No non-intercept regressors in input model 'x',", "cannot perform Wald joint significance test")) # sanity check if (df2adj == TRUE && (is.null(vcov_arg) || test != "F")) { stop("df2adj == TRUE sensible only for robust F test, i.e., test == \"F\" and !is.null(vcov) and missing(.df2)") } # if robust test: prepare robust vcov if (!is.null(vcov_arg)) { if (is.matrix(vcov_arg)) rvcov <- rvcov_orig <- vcov_arg if (is.function(vcov_arg)) rvcov <- rvcov_orig <- vcov_arg(x) rvcov_name <- paste0(", vcov: ", paste0(deparse(substitute(vcov)))) # save "name" for later if (int %in% names(coef(x))) { # drop intercept, if present rvcov <- rvcov_orig[!rownames(rvcov_orig) %in% int, !colnames(rvcov_orig) %in% int] attr(rvcov, which = "cluster") <- attr(rvcov_orig, which = "cluster") # restore dropped 'cluster' attribute } # if robust F test: by default, do finite-sample adjustment for df2 if (df2adj == TRUE && test == "F") { # determine the variable that the clustering is done on by # attribute "cluster" in the vcov (matrix object) # if only one member in cluster: fall back to original df2 if (!is.null(attr(rvcov, which = "cluster"))) { # if supplied vcov is from package "clubSandwich": translate attr "cluster" to fit our code # (use rvcov_orig here for the test as the above dropping of the intercept drops the special classes of rvcov) if (inherits(rvcov_orig, "vcovCR")) rvcov <- trans_clubSandwich_vcov(CSvcov = rvcov, index = attr(model.frame(x), "index")) cluster <- attr(rvcov, which = "cluster") pdim <- pdim(x) df2 <- switch(cluster, group = { if(pdim$nT$n == 1L) df2 else (pdim$nT$n - 1L) }, time = { if(pdim$nT$T == 1L) df2 else (pdim$nT$T - 1L) }, # TODO: what about double clustering? vcovDC? vcovDC identifies itself as attr(obj, "cluster")="group-time") # default: { # warning("unknown/not implemented clustering, no df2 adjustment for finite-samples") df2} ) } else { # no information on clustering found, do not adjust df2 # (other options would be: assume cluster = "group", or fall-back to non robust statistics (set vcov_arg <- NULL)) warning("no attribute 'cluster' in robust vcov found, no finite-sample adjustment for df2") # assuming cluster = \"group\"") # df2 <- as.integer(pdim(x)$nT$n - 1) # assume cluster = "group" } } } # final say: overwrite Dfs if especially supplied if (!missing(.df1)) df1 <- .df1 if (!missing(.df2)) df2 <- .df2 if (test == "Chisq"){ # perform non-robust chisq test if (is.null(vcov_arg)) { names.coefs_wo_int <- names(coefs_wo_int) stat <- as.numeric(crossprod(solve(vcov(x)[names.coefs_wo_int, names.coefs_wo_int], coefs_wo_int), coefs_wo_int)) # stat < - (tss-ssr)/(ssr/df2) # does not produce correct results for unbalanced RE models and (un)balanced IV models names(stat) <- "Chisq" pval <- pchisq(stat, df = df1, lower.tail = FALSE) parameter <- c(df = df1) method <- "Wald test for joint significance" } else { # perform robust chisq test stat <- as.numeric(crossprod(solve(rvcov, coefs_wo_int), coefs_wo_int)) names(stat) <- "Chisq" pval <- pchisq(stat, df = df1, lower.tail = FALSE) parameter <- c(df = df1) method <- paste0("Wald test for joint significance (robust)", rvcov_name) } } if (test == "F"){ if(length(formula(x))[2L] > 1L) stop("test = \"F\" not sensible for IV models") if (is.null(vcov_arg)) { # perform "normal" F test names.coefs_wo_int <- names(coefs_wo_int) stat <- as.numeric(crossprod(solve(vcov(x)[names.coefs_wo_int, names.coefs_wo_int], coefs_wo_int), coefs_wo_int)) / df1 # stat <- (tss-ssr)/ssr*df2/df1 # does not produce correct results for unbalanced RE models names(stat) <- "F" pval <- pf(stat, df1 = df1, df2 = df2, lower.tail = FALSE) parameter <- c(df1 = df1, df2 = df2) method <- "F test for joint significance" } else { # perform robust F test stat <- as.numeric(crossprod(solve(rvcov, coefs_wo_int), coefs_wo_int) / df1) names(stat) <- "F" pval <- pf(stat, df1 = df1, df2 = df2, lower.tail = FALSE) parameter <- c(df1 = df1, df2 = df2) method <- paste0("F test for joint significance (robust)", rvcov_name) } } res <- list(data.name = data.name(x), statistic = stat, parameter = parameter, p.value = pval, method = method, alternative = "at least one coefficient is not null" ) class(res) <- "htest" return(res) } #' @rdname pwaldtest #' @export pwaldtest.pvcm <- function(x, ...) { model <- describe(x, "model") effect <- describe(x, "effect") coefs.no.int <- !names(x$coefficients) %in% "(Intercept)" # logical with non-intercept regressors set to TRUE if(!length(names(x$coefficients)[coefs.no.int])) { # error informatively if only-intercept model (no other regressors) stop(paste("No non-intercept regressors in model(s) of input 'x',", "cannot perform Wald joint significance test(s)")) } if(model == "within") { # for the within case, simply return a data.frame with all test results # of single estimations (per individual or per time period) ii <- switch(effect, "individual" = 1L, "time" = 2L) residl <- collapse::gsplit(x$residuals, unclass(index(x))[[ii]], use.names = FALSE) # vcovs and coefficients w/o intercept vcovl <- lapply(x$vcov, function(x) x[coefs.no.int, coefs.no.int]) coefl <- as.list(data.frame(t(x$coefficients[ , coefs.no.int, drop = FALSE]))) df1 <- ncol(x$coefficients[ , coefs.no.int, drop = FALSE]) # ncol is same df1 for all models (as all models estimate the same coefs) df2 <- lengths(residl) - ncol(x$coefficients) # (any intercept is subtracted) statChisqs <- mapply(FUN = function(v, c) as.numeric(crossprod(solve(v, c), c)), vcovl, coefl) statFs <- statChisqs / df1 pstatChisqs <- pchisq(statChisqs, df = df1, lower.tail = FALSE) pstatFs <- pf(statFs, df1 = df1, df2 = df2, lower.tail = FALSE) stats.pvcm.within <- as.data.frame(cbind("Chisq" = statChisqs, "p(chisq)" = pstatChisqs, "F" = statFs, "p(F)" = pstatFs, "df1" = rep(df1, length(residl)), "df2" = df2)) # early return return(stats.pvcm.within) } ## case: model == "random" coefs_wo_int <- x$coefficients[coefs.no.int] stat <- as.numeric(crossprod(solve(vcov(x)[coefs.no.int, coefs.no.int], coefs_wo_int), coefs_wo_int)) names(stat) <- "Chisq" df1 <- length(coefs_wo_int) pval <- pchisq(stat, df = df1, lower.tail = FALSE) parameter <- c(df = df1) method <- "Wald test for joint significance" res <- list(data.name = data.name(x), statistic = stat, parameter = parameter, p.value = pval, method = method, alternative = "at least one coefficient is not null" ) class(res) <- "htest" return(res) } #' @rdname pwaldtest #' @export pwaldtest.pgmm <- function(x, param = c("coef", "time", "all"), vcov = NULL, ...) { param <- match.arg(param) vcov_supplied <- !is.null(vcov) myvcov <- vcov if (is.null(vcov)) vv <- vcov(x) else if (is.function(vcov)) vv <- myvcov(x) else vv <- myvcov model <- describe(x, "model") effect <- describe(x, "effect") if (param == "time" && effect == "individual") stop("no time dummies in this model") transformation <- describe(x, "transformation") coefficients <- if(model == "onestep") x$coefficients else x$coefficients[[2L]] Ktot <- length(coefficients) Kt <- length(x$args$namest) switch(param, "time" = { start <- Ktot - Kt + if(transformation == "ld") 2 else 1 end <- Ktot }, "coef" = { start <- 1 end <- if (effect == "twoways") Ktot - Kt else Ktot }, "all" = { start <- 1 end <- Ktot }) coef <- coefficients[start:end] vv <- vv[start:end, start:end] stat <- as.numeric(crossprod(coef, crossprod(solve(vv), coef))) names(stat) <- "chisq" parameter <- length(coef) names(parameter) <- "df" pval <- pchisq(stat, df = parameter, lower.tail = FALSE) method <- "Wald test for joint significance" if (vcov_supplied) { rvcov_name <- paste0(", vcov: ", paste0(deparse(substitute(vcov)))) method <- paste0(method, " (robust)", rvcov_name) } wald.pgmm <- list(statistic = stat, p.value = pval, parameter = parameter, method = method, alternative = "at least one coefficient is not null", data.name = data.name(x)) class(wald.pgmm) <- "htest" return(wald.pgmm) } #' @export pwaldtest.default <- function(x, ...) { pwaldtest.plm(x, ...) } # trans_clubSandwich_vcov: helper function for pwaldtest() # translate vcov object from package clubSandwich so it is suitable for summary.plm, plm's pwaldtest. # Attribute "cluster" in clubSandwich's vcov objects contains the cluster variable itself. # plm's vcov object also has attribute "cluster" but it contains a character as # information about the cluster dimension (either "group" or "time") # # inputs: # * CSvcov: a vcov as returned by clubSandwich's vcovCR function [class c("vcovCR", "clubSandwich")] # * index: the index belonging to a plm object/model # return value: # * modified CSvcov (substituted attribute "cluster" with suitable character or NULL) trans_clubSandwich_vcov <- function(CSvcov, index) { clustervar <- attr(CSvcov, "cluster") if (!is.null(clustervar)) { if (isTRUE(all.equal(index[[1L]], clustervar))) { attr(CSvcov, "cluster") <- "group" return(CSvcov) } if (isTRUE(all.equal(index[[2L]], clustervar))) { attr(CSvcov, "cluster") <- "time" return(CSvcov) } else { attr(CSvcov, "cluster") <- NULL return(CSvcov) } } warning("no attribute \"cluster\" found in supplied vcov object") return(CSvcov) } #' Test of Poolability #' #' A Chow test for the poolability of the data. #' #' `pooltest` is a *F* test of stability (or Chow test) for the #' coefficients of a panel model. For argument `x`, the estimated #' `plm` object should be a `"pooling"` model or a `"within"` model #' (the default); intercepts are assumed to be identical in the first #' case and different in the second case. #' #' @aliases pooltest #' @param x an object of class `"plm"` for the plm method; an object of #' class `"formula"` for the formula interface, #' @param z an object of class `"pvcm"` obtained with #' `model="within"`, #' @param data a `data.frame`, #' @param \dots further arguments passed to plm. #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant #' @keywords htest #' @examples #' #' data("Gasoline", package = "plm") #' form <- lgaspcar ~ lincomep + lrpmg + lcarpcap #' gasw <- plm(form, data = Gasoline, model = "within") #' gasp <- plm(form, data = Gasoline, model = "pooling") #' gasnp <- pvcm(form, data = Gasoline, model = "within") #' pooltest(gasw, gasnp) #' pooltest(gasp, gasnp) #' #' pooltest(form, data = Gasoline, effect = "individual", model = "within") #' pooltest(form, data = Gasoline, effect = "individual", model = "pooling") #' pooltest <- function(x,...){ UseMethod("pooltest") } #' @rdname pooltest #' @export pooltest.plm <- function(x, z, ...){ rss <- deviance(x) uss <- as.numeric(crossprod(residuals(z))) dlr <- df.residual(x) dlu <- df.residual(z) df1 <- dlr - dlu df2 <- dlu stat <- (rss-uss)/uss*df2/df1 pval <- pf(stat, df1 = df1, df2 = df2, lower.tail = FALSE) parameter <- c(df1 = df1, df2 = df2) names(stat) <- "F" res <- list(statistic = stat, parameter = parameter, p.value = pval, data.name = data.name(x), alternative = "unstability", method = "F statistic") class(res) <- "htest" res } #' @rdname pooltest #' @export pooltest.formula <- function(x, data, ...){ cl <- match.call(expand.dots = TRUE) cl[[1L]] <- as.name("plm") names(cl)[[2L]] <- "formula" if (is.null(cl$effect)) cl$effect <- "individual" plm.model <- eval(cl, parent.frame()) cl[[1L]] <- as.name("pvcm") names(cl)[[2L]] <- "formula" if (is.null(cl$effect)) cl$effect <- "individual" cl$model <- "within" pvcm.model <- eval(cl, parent.frame()) pooltest(plm.model, pvcm.model) } plm/R/est_plm.list.R0000644000176200001440000002542214340404505014007 0ustar liggesusersplm.list <- function(formula, data, subset, na.action, effect = c("individual", "time", "twoways"), model = c("within", "random", "ht", "between", "pooling", "fd"), random.method = NULL, #c("swar", "walhus", "amemiya", "nerlove", "ht"), inst.method = c("bvk", "baltagi"), restrict.matrix = NULL, restrict.rhs = NULL, index = NULL, ...){ sysplm <- match.call(expand.dots = FALSE) if (!inherits(data, "pdata.frame")){ odataname <- substitute(data) data <- pdata.frame(data, index) sysplm$data <- data } names.eq <- names(formula) # run plm for each equation of the list, store the results in a # list plm.models <- function(sysplm, amodel, ...){ formulas <- sysplm$formula L <- length(formulas) - 1 models <- vector(mode = "list", length = L) for (l in 2:(L+1)){ aformula <- formulas[[l]] if (is.name(aformula)) aformula <- eval(aformula, parent.frame()) else aformula <- as.formula(formulas[[l]]) sysplm$formula <- aformula sysplm[[1L]] <- as.name("plm") sysplm$model <- amodel # a new pb, plm on every equation fails because of the restrict.matrix argument sysplm$restrict.matrix <- NULL models[[l-1]] <- eval(sysplm, parent.frame()) } models } # Extract the model matrix and the response and transform them in # order to get iid errors using a furnished matrix of covariance of # the raw errors BIG <- function(X, y, W, Omega){ S <- chol(Omega) N <- length(y[[1L]]) if (!is.null(W)) BIGW <- c() BIGX <- c() BIGy <- c() L <- nrow(S) for (l in seq_len(L)){ rowBIGy <- rep(0, N) rowBIGX <- c() if (!is.null(W)) rowBIGW <- c() for (m in seq_len(L)){ rowBIGX <- cbind(rowBIGX, t(solve(S))[l, m] * X[[m]]) if (!is.null(W)) rowBIGW <- cbind(rowBIGW, t(S)[l, m] * W[[m]]) rowBIGy <- rowBIGy + t(solve(S))[l, m] * y[[m]] } BIGX <- rbind(BIGX, rowBIGX) if (!is.null(W)) BIGW <- rbind(BIGW, rowBIGW) BIGy <- c(BIGy, rowBIGy) } if (!is.null(W)) return(structure(list(X = BIGX, y = BIGy, W = BIGW), class = "BIG")) else return(structure(list(X = BIGX, y = BIGy), class = "BIG")) } # take a list of unconstrained models and a restriction matrix and # return a list containing the coefficients, the vcov and the # residuals of the constrained model ; qad version which deals with # lists of plm models or with models fitted by mylm (which have X, y # and W slots) systemlm <- function(object, restrict.matrix, restrict.rhs){ if (inherits(object, "list")){ Ucoef <- Reduce("c", lapply(object, coef)) Uvcov <- Reduce("bdiag", lapply(object, vcov)) X <- Reduce("bdiag", lapply(object, model.matrix)) y <- Reduce("c", lapply(object, pmodel.response)) } else{ Ucoef <- coef(object) Uvcov <- vcov(object) X <- object$X y <- object$y } if (!is.null(restrict.matrix)){ R <- restrict.matrix if (is.null(restrict.rhs)) restrict.rhs <- rep(0, nrow(restrict.matrix)) XpXm1 <- solve(crossprod(X)) Q <- XpXm1 %*% t(R) %*% solve(R %*% XpXm1 %*% t(R)) Ccoef <- as.numeric(Ucoef - Q %*% (R %*% Ucoef - restrict.rhs)) names(Ccoef) <- names(Ucoef) Cvcov <- Uvcov - Q %*% R %*% Uvcov Cresid <- y - X %*% Ccoef structure(list(coefficients = Ccoef, vcov = Cvcov, residuals = Cresid), class = "basiclm") } else{ .resid <- Reduce("c", lapply(object, resid)) structure(list(coefficients = Ucoef, vcov = Uvcov, residuals = .resid), class = "basiclm") } } models <- plm.models(sysplm, amodel = model, random.method = "kinla") #TODO NB: "kinla" does not seem to be supported anymore... L <- length(models) sys <- systemlm(models, restrict.matrix = restrict.matrix, restrict.rhs = restrict.rhs) Instruments <- sapply(models, function(x) length(formula(x))[2L]) > 1L # Get the residuals and compute the consistent estimation of the # covariance matrix of the residuals : Note that if there are # restrictions, the "restricted" residuals are used ; for random # effect models, two covariance matrices must be computed if (model == "random"){ resid.pooling <- Reduce("cbind", lapply(models, function(x) resid(x, model = "pooling"))) id <- index(models[[1L]])[[1L]] pdim <- pdim(models[[1L]]) T <- pdim$nT$T N <- pdim$nT$n .fixef <- apply(resid.pooling, 2, tapply, id, mean) resid.within <- resid.pooling - .fixef[as.character(id),] Omega.nu <- crossprod(resid.within)/(N * (T - 1)) Omega.eta <- crossprod(.fixef) / (N - 1) colnames(Omega.nu) <- rownames(Omega.nu) <- colnames(Omega.eta) <- rownames(Omega.eta) <- names.eq Omega.1 <- Omega.nu + T * Omega.eta Omega <- list(id = Omega.eta, idios = Omega.nu) phi <- 1 - sqrt(diag(Omega.nu)/diag(Omega.1)) XW <- lapply(models, function(x) model.matrix(x, model = "within")) intercepts <- lapply(models, has.intercept) XB <- lapply(models, function(x) model.matrix(x, model = "Between")) yW <- lapply(models, function(x) pmodel.response(x, model = "within")) yB <- lapply(models, function(x) pmodel.response(x, model = "Between")) if (Instruments[1L]){ WW <- lapply(models, function(x){ if (length(formula(x))[2L] == 3L) rhss = c(2, 3) else rhss = 2 model.matrix(model.frame(x), rhs = rhss, model = "within") } ) WB <- lapply(models, function(x) model.matrix(model.frame(x), rhs = 2, model = "Between")) } else WW <- WB <- NULL coefnames <- lapply(XB, colnames) BIGW <- BIG(XW, yW, WW, Omega.nu) BIGB <- BIG(XB, yB, WB, Omega.1) y <- BIGW$y + BIGB$y X <- BIGB$X # Attention, pb lorsque noms de colonnes duppliques !! # X[, colnames(BIGW$X)] <- X[, colnames(BIGW$X)] + BIGW$X # version provisoire : emplacement des constantes intercepts <- c(1, cumsum(sapply(XB, ncol))[-length(XB)]+1) X[ , - intercepts] <- X[ , - intercepts] + BIGW$X m <- mylm(y, X, cbind(BIGW$W, BIGB$W)) } else{ .resid <- matrix(sys$residuals, ncol = length(models)) Omega <- crossprod(.resid) / nrow(.resid) colnames(Omega) <- rownames(Omega) <- names.eq X <- lapply(models, model.matrix) y <- lapply(models, pmodel.response) if (Instruments[1L]) W <- lapply(models, function(x){ if (length(formula(x))[2L] == 3L) rhss = c(2, 3) else rhss = 2 model.matrix(model.frame(x), rhs = rhss) } ) else W <- NULL coefnames <- lapply(X, colnames) BIGT <- BIG(X, y, W, Omega) X <- BIGT$X m <- with(BIGT, mylm(y, X, W)) } if (!is.null(restrict.matrix)){ m <- systemlm(m, restrict.matrix = restrict.matrix, restrict.rhs = restrict.rhs) } m$model <- data m$coefnames <- coefnames m$df.residual <- length(resid(m)) - length(coef(m)) m$vcovsys <- Omega m$formula <- formula sysplm$data <- odataname m$call <- sysplm args <- list(model = model, effect = effect, random.method = random.method) m$args <- args class(m) <- c("plm.list", "plm", "panelmodel", "lm") return(m) } #' @rdname summary.plm #' @export summary.plm.list <- function(object, ...){ class(object) <- setdiff(class(object), "plm.list") formulas <- eval(object$call$formula) eqnames <- names(formulas) L <- length(object$coefnames) Ks <- c(0, cumsum(sapply(object$coefnames, length))) models <- vector(mode = "list", length = L) if (is.null(object$vcov)){ coefTable <- coef(summary(object)) } else{ std.err <- sqrt(diag(object$vcov)) b <- coefficients(object) z <- b / std.err p <- 2 * pt(abs(z), df = object$df.residual, lower.tail = FALSE) coefTable <- cbind("Estimate" = b, "Std. Error" = std.err, "t-value" = z, "Pr(>|t|)" = p) } for (l in seq_len(L)){ models[[l]] <- coefTable[(Ks[l] + 1):Ks[l + 1] , ] } names(models) <- eqnames object$models <- models object$coefficients <- coefTable class(object) <- c("summary.plm.list", class(object)) object } #' @rdname summary.plm #' @export coef.summary.plm.list <- function(object, eq = NULL, ...){ if (is.null(eq)) object$coefficients else object$models[[eq]] } #' @rdname summary.plm #' @export print.summary.plm.list <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ effect <- describe(x, "effect") model <- describe(x, "model") cat(paste(effect.plm.list[effect]," ",sep="")) cat(paste(model.plm.list[model]," Model",sep="")) if (model=="random"){ ercomp <- describe(x, "random.method") cat(paste(" \n (", random.method.list[ercomp], "'s transformation)\n", sep="")) } else{ cat("\n") } cat("Call:\n") print(x$call) cat("\n") print(pdim(x)) cat("\nEffects:\n\n") cat(" Estimated standard deviations of the error\n") if (model == "random"){ sd <- rbind(id = sqrt(diag(x$vcovsys$id)), idios = sqrt(diag(x$vcovsys$idios))) print(sd, digits = digits) cat("\n") cat(" Estimated correlation matrix of the individual effects\n") corid <- x$vcovsys$id / tcrossprod(sd[1L, ]) corid[upper.tri(corid)] <- NA print(corid, digits = digits, na.print = ".") cat("\n") cat(" Estimated correlation matrix of the idiosyncratic effects\n") coridios <- x$vcovsys$idios / tcrossprod(sd[2L, ]) coridios[upper.tri(coridios)] <- NA print(coridios, digits = digits, na.print = ".") } else{ sd <- sqrt(diag(x$vcovsys)) print(sd, digits = digits) cat("\n") cat("\nEstimated correlation matrix of the errors\n") corer <- x$vcovsys / tcrossprod(sd) corer[upper.tri(corer)] <- NA print(corer, digits = digits, na.print = ".") cat("\n") } for (l in seq_along(x$models)){ cat(paste("\n - ", names(x$models)[l], "\n", sep = "")) printCoefmat(x$models[[l]], digits = digits) } invisible(x) } #' @rdname plm #' @export print.plm.list <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"),...){ cat("\nModel Formulas:\n") for (l in seq_along(formula(x))){ cat(paste(names(formula(x))[l], " : ", deparse(formula(x)[[l]]), "\n", sep = "")) } cat("\nCoefficients:\n") print(coef(x),digits = digits) cat("\n") invisible(x) } plm/R/est_ldv.R0000644000176200001440000004107014376210545013037 0ustar liggesusers#' Panel estimators for limited dependent variables #' #' Fixed and random effects estimators for truncated or censored #' limited dependent variable #' #' `pldv` computes two kinds of models: a LSQ/LAD estimator for the #' first-difference model (`model = "fd"`) and a maximum likelihood estimator #' with an assumed normal distribution for the individual effects #' (`model = "random"` or `"pooling"`). #' #' For maximum-likelihood estimations, `pldv` uses internally function #' [maxLik::maxLik()] (from package \CRANpkg{maxLik}). #' #' @aliases pldv #' @param formula a symbolic description for the model to be #' estimated, #' @param data a `data.frame`, #' @param subset see `lm`, #' @param weights see `lm`, #' @param na.action see `lm`, #' @param model one of `"fd"`, `"random"`, or `"pooling"`, #' @param index the indexes, see [pdata.frame()], #' @param R the number of points for the gaussian quadrature, #' @param start a vector of starting values, #' @param lower the lower bound for the censored/truncated dependent #' variable, #' @param upper the upper bound for the censored/truncated dependent #' variable, #' @param objfun the objective function for the fixed effect model (`model = "fd"`, #' irrelevant for other values of the `model` argument ): #' one of `"lsq"` for least squares (minimise sum of squares of the residuals) #' and `"lad"` for least absolute deviations (minimise sum of absolute values #' of the residuals), #' @param sample `"cens"` for a censored (tobit-like) sample, #' `"trunc"` for a truncated sample, #' @param \dots further arguments. #' @return For `model = "fd"`, an object of class `c("plm", "panelmodel")`, for #' `model = "random"` and `model = "pooling"` an object of class `c("maxLik", "maxim")`. #' #' @export #' @importFrom maxLik maxLik #' @author Yves Croissant #' @references #' #' \insertRef{HONO:92}{plm} #' #' @keywords regression #' @examples #' ## as these examples take a bit of time, do not run them automatically #' \dontrun{ #' data("Donors", package = "pder") #' library("plm") #' pDonors <- pdata.frame(Donors, index = "id") #' #' # replicate Landry/Lange/List/Price/Rupp (2010), online appendix, table 5a, models A and B #' modA <- pldv(donation ~ treatment + prcontr, data = pDonors, #' model = "random", method = "bfgs") #' summary(modA) #' modB <- pldv(donation ~ treatment * prcontr - prcontr, data = pDonors, #' model = "random", method = "bfgs") #' summary(modB) #' } #' # # TODO: check if argument method = "bfgs" is needed in example (and why) # -> seems strange as it is no direct argument of pldv pldv <- function(formula, data, subset, weights, na.action, model = c("fd", "random", "pooling"), index = NULL, R = 20, start = NULL, lower = 0, upper = +Inf, objfun = c("lsq", "lad"), sample = c("cens", "trunc"), ...){ ## Due to the eval() construct with maxLik::maxLik we import maxLik::maxLik ## and re-export it via NAMESPACE as plm::maxLik with a minimal documentation ## pointing to the original documentation. ## This way, we can keep the flexibility of eval() [evaluate in parent frame] ## and can lessen the dependency burden by placing pkg maxLik in 'Imports' ## rather than 'Depends' in DESCRIPTION. # use the plm interface to compute the model.frame sample <- match.arg(sample) model <- match.arg(model) cl <- match.call() mf <- match.call(expand.dots = FALSE) mf <- cl m <- match(c("formula", "data", "subset", "weights", "na.action", "index"), names(mf), 0) mf <- mf[c(1L, m)] mf$model <- NA mf[[1L]] <- as.name("plm") mf <- eval(mf, parent.frame()) formula <- attr(mf, "formula") # extract the relevant arguments for maxLik maxl <- cl m <- match(c("print.level", "ftol", "tol", "reltol", "gradtol", "steptol", "lambdatol", "qrtol", "iterlim", "fixed", "activePar", "method"), names(maxl), 0) maxl <- maxl[c(1L, m)] maxl[[1L]] <- as.name("maxLik") # The within model -> Bo Honore (1992) if (model == "fd"){ objfun <- match.arg(objfun) # create a data.frame containing y_t and y_{t-1} y <- as.character(formula[[2L]]) y <- mf[[y]] ly <- c(NA, y[seq_len(length(y) - 1)]) id <- as.integer(index(mf, "id")) lid <- c(NA, id[seq_len(nrow(mf) - 1)]) keep <- id == lid keep[1L] <- FALSE Y <- data.frame(y, ly) Y <- Y[keep, , drop = FALSE] yt <- Y$y ytm1 <- Y$ly # create the matrix of first differenced covariates X <- model.matrix(mf, model = "fd") start <- rep(.1, ncol(X)) names(start) <- colnames(X) if (sample == "trunc"){ if (objfun == "lad") fm <- function(x) abs(x) if (objfun == "lsq") fm <- function(x) x ^ 2 psi <- function(a1, a2, b){ fm( (a2 <= b) * a1 + (b > - a1 & b < a2) * (a2 - a1 - b) + (a1 <= - b) * a2 ) } } if (sample == "cens"){ if (objfun == "lad"){ psi <- function(a1, a2, b){ (a1 <= pmax(0, - b) & a2 <= pmax(0, b)) * 0 + (! (a1 <= pmax(0, - b) & a2 <= pmax(0, b)) ) * abs(a2 - a1 - b) } } if (objfun == "lsq"){ psi <- function(a1, a2, b){ (a2 <= b) * (a1 ^ 2 - 2 * a1 * (a2 - b)) + (b > - a1 & b < a2) * (a2 - a1 - b) ^ 2 + (a1 <= - b) * (a2 ^ 2 - 2 * a2 * (b + a1)) } } } BO <- function(param){ bdx <- as.numeric(X %*% param) lnl <- - psi(ytm1, yt, bdx) selobs <- (bdx > - ytm1 & bdx < yt) if (objfun == "lsq" && sample == "cens"){ attr(lnl, "gradient") <- - ( (ytm1 > - bdx & yt > bdx) * (- 2 * (yt - ytm1 - bdx)) + (ytm1 > - bdx & yt < bdx) * ( 2 * ytm1) + (ytm1 < - bdx & yt > bdx) * (- 2 * yt) ) * X attr(lnl, "hessian") <- - crossprod( (ytm1 > - bdx & yt > bdx) * X) } lnl } maxl[c("logLik", "start")] <- list(BO, start) result <- eval(maxl, parent.frame()) if (objfun == "lsq" && sample == "cens"){ bdx <- as.numeric((crossprod(t(X), coef(result)))) V4 <- yt ^ 2 * (bdx <= - ytm1) + ytm1 ^ 2 * (yt <= bdx) + (yt - ytm1 - bdx) ^ 2 * (bdx > - ytm1 & bdx < yt) V4 <- crossprod(X, V4 * X) / length(V4) T4 <- crossprod((bdx > - ytm1 & bdx < yt) * X, X) / length(V4) solve_T4 <- solve(T4) result$vcov <- solve_T4 %*% V4 %*% solve_T4 } if (is.null(result$vcov)) result$vcov <- solve(- result$hessian) resid <- yt - as.numeric(crossprod(t(X), coef(result))) result <- list(coefficients = coef(result), vcov = result$vcov, formula = formula, model = mf, df.residual = nrow(X) - ncol(X), residuals = resid, args = list(model = "fd", effect = "individual"), call = cl) class(result) <- c("plm", "panelmodel") } else{ # model != "fd" => cases model = "random" / "pooling" # old pglm stuff for the pooling and the random model, with # update to allow upper and lower bonds X <- model.matrix(mf, rhs = 1, model = "pooling", effect = "individual") if (ncol(X) == 0L) stop("empty model") y <- pmodel.response(mf, model = "pooling", effect = "individual") id <- attr(mf, "index")[[1L]] # The following is the only instance of statmod::gauss.quad, so check for # the package's availability. (We placed 'statmod' in 'Suggests' rather # than 'Imports' so that it is not an absolutely required dependency.) ## Procedure for pkg check for pkg in 'Suggests' as recommended in ## Wickham, R packages (http://r-pkgs.had.co.nz/description.html). if (!requireNamespace("statmod", quietly = TRUE)) { stop(paste("Function 'gauss.quad' from package 'statmod' needed for this function to work.", "Please install it, e.g., with 'install.packages(\"statmod\")"), call. = FALSE) } # compute the nodes and the weights for the gaussian quadrature rn <- statmod::gauss.quad(R, kind = "hermite") # compute the starting values ls <- length(start) if (model == "pooling"){ K <- ncol(X) if (! ls %in% c(0, K + 1)) stop("irrelevant length for the start vector") if (ls == 0L){ m <- match(c("formula", "data", "subset", "na.action"), names(cl), 0) lmcl <- cl[c(1,m)] lmcl[[1L]] <- as.name("lm") lmcl <- eval(lmcl, parent.frame()) # eval stats::lm() sig2 <- deviance(lmcl) / df.residual(lmcl) sigma <- sqrt(sig2) start <- c(coef(lmcl), sd.nu = sigma) } } else{ # case model != "pooling" and != "fd" => model ="random" if (ls <= 1L){ startcl <- cl startcl$model <- "pooling" startcl$method <- "bfgs" pglmest <- eval(startcl, parent.frame()) # eval pldv() with updated args thestart <- coef(pglmest) if (ls == 1L){ start <- c(thestart, start) } else{ # case ls = 0 resid <- y - as.numeric(tcrossprod(X, t(coef(pglmest)[seq_len(ncol(X))]))) eta <- tapply(resid, id, mean)[as.character(id)] nu <- resid - eta start <- c(thestart[seq_len(ncol(X))], sd.nu = sd(nu), sd.eta = sd(eta)) } } } # call to maxLik with the relevant arguments argschar <- function(args){ paste(as.character(names(args)), as.character(args), sep= "=", collapse= ",") } args <- list(param = "start", y = "y", X = "X", id = "id", model = "model", rn = "rn", lower = lower, upper = upper) thefunc <- paste("function(start) lnl.tobit", "(", argschar(args), ")", sep = "") maxl$logLik <- eval(parse(text = thefunc)) maxl$start <- start result <- eval(maxl, parent.frame()) result[c('call', 'args', 'model')] <- list(cl, args, data) } # end cases model = "random" / "pooling" result } lnl.tobit <- function(param, y, X, id, lower = 0, upper = +Inf, model = "pooling", rn = NULL){ compute.gradient <- TRUE compute.hessian <- FALSE mills <- function(x) exp(dnorm(x, log = TRUE) - pnorm(x, log.p = TRUE)) O <- length(y) K <- ncol(X) beta <- param[1L:K] sigma <- param[K + 1L] Xb <- as.numeric(crossprod(t(X), beta)) YLO <- (y == lower) YUT <- (y > lower) & (y < upper) YUP <- y == upper if (model == "random"){ R <- length(rn$nodes) seta <- param[K + 2L] } else seta <- 0 f <- function(i = NA){ result <- numeric(length = length(y)) z <- if(is.na(i)) 0 else rn$nodes[i] e <- (y - Xb - sqrt(2) * seta * z) / sigma result[YLO] <- pnorm( e[YLO], log.p = TRUE) result[YUT] <- dnorm( e[YUT], log = TRUE) - log(sigma) result[YUP] <- pnorm(- e[YUP], log.p = TRUE) result } g <- function(i = NA){ z <- if(is.na(i)) 0 else rn$nodes[i] e <- (y - Xb - sqrt(2) * seta * z) / sigma mz <- mills(e) mmz <- mills(- e) gradi <- matrix(0, nrow = nrow(X), ncol = ncol(X) + 1L) gradi[YLO, 1L:K] <- - mz[YLO] * X[YLO, , drop = FALSE] gradi[YLO, K + 1L] <- - e[YLO] * mz[YLO] gradi[YUT, 1L:K] <- e[YUT] * X[YUT, , drop = FALSE] gradi[YUT, K + 1L] <- - (1 - e[YUT] ^ 2) gradi[YUP, 1L:K] <- mmz[YUP] * X[YUP, , drop = FALSE] gradi[YUP, K + 1L] <- e[YUP] * mmz[YUP] if (! is.na(i)){ gradi <- cbind(gradi, NA) gradi[YLO, K + 2L] <- - mz[YLO] * sqrt(2) * z gradi[YUT, K + 2L] <- e[YUT] * sqrt(2) * z gradi[YUP, K + 2L] < - mmz[YUP] * sqrt(2) * z } gradi / sigma } h <- function(i = NA, pwnt = NULL){ if (is.na(i)){ z <- 0 seta <- 0 pw <- 1 } else{ z <- rn$nodes[i] pw <- pwnt[[i]] } e <- (y - Xb - sqrt(2) * seta * z) / sigma mz <- mills(e) mmz <- mills(- e) hbb <- hbs <- hss <- numeric(length = nrow(X)) # pre-allocate hbb[YLO] <- - (e[YLO] + mz[YLO]) * mz[YLO] hbs[YLO] <- mz[YLO] * (1 - (e[YLO] + mz[YLO]) * e[YLO]) hss[YLO] <- e[YLO] * mz[YLO] * (2 - (e[YLO] + mz[YLO]) * e[YLO]) hbb[YUT] <- - 1 hbs[YUT] <- - 2 * e[YUT] hss[YUT] <- (1 - 3 * e[YUT] ^ 2) hbb[YUP] <- - (- e[YUP] + mmz[YUP]) * mmz[YUP] hbs[YUP] <- - mmz[YUP] * (1 + (mmz[YUP] - e[YUP]) * e[YUP]) hss[YUP] <- - e[YUP] * mmz[YUP] * (2 + (mmz[YUP] - e[YUP]) * e[YUP]) hbb <- crossprod(hbb * X * pw, X) hbs <- colSums(hbs * X * pw) hss <- sum(hss * pw) H <- rbind(cbind(hbb, hbs), c(hbs, hss)) if (! is.na(i)){ hba <- hsa <- haa <- numeric(length = nrow(X)) hba[YLO] <- - (e[YLO] + mz[YLO]) * mz[YLO] * sqrt(2) * z hsa[YLO] <- mz[YLO] * sqrt(2) * z * (1 - (e[YLO] + mz[YLO]) * e[YLO]) haa[YLO] <- - (e[YLO] + mz[YLO]) * mz[YLO] * 2 * z ^ 2 hba[YUT] <- - sqrt(2) * z hsa[YUT] <- - 2 * sqrt(2) * z * e[YUT] haa[YUT] <- - 2 * z ^ 2 hba[YUP] <- - (- e[YUP] + mmz[YUP]) * mmz[YUP] * sqrt(2) * z hsa[YUP] <- - mmz[YUP] * sqrt(2) * z * (1 + (- e[YUP] + mmz[YUP]) * e[YUP]) haa[YUP] <- - (- e[YUP] + mmz[YUP]) * mmz[YUP] * 2 * z ^ 2 hba <- colSums(hba * X * pw) haa <- sum(haa * pw) hsa <- sum(hsa * pw) H <- rbind(cbind(H, c(hba, hsa)), c(hba, hsa, haa)) } H / sigma ^ 2 } if (model == "pooling"){ lnL <- sum(f(i = NA)) if (compute.gradient) attr(lnL, "gradient") <- g(i = NA) if (compute.hessian) attr(lnL, "hessian") <- h(i = NA) } if (model == "random"){ lnPntr <- lapply(seq_len(R), function(i) f(i = i)) lnPnr <- lapply(lnPntr, function(x){ result <- tapply(x, id, sum) ids <- names(result) result <- as.numeric(result) names(result) <- ids result}) lnPn <- lapply(seq_len(R), function(i) rn$weights[i] * exp(lnPnr[[i]])) lnPn <- log(Reduce("+", lnPn)) - 0.5 * log(pi) lnL <- sum(lnPn) if (compute.gradient || compute.hessian){ glnPnr <- lapply(seq_len(R), function(i) g(i = i)) pwn <- lapply(seq_len(R), function(i) exp(lnPnr[[i]] - lnPn)) pwnt <- lapply(seq_len(R), function(i) pwn[[i]][as.character(id)]) glnPnr2 <- lapply(seq_len(R), function(i) rn$weights[i] * pwnt[[i]] * glnPnr[[i]]) gradi <- Reduce("+", glnPnr2) / sqrt(pi) attr(lnL, "gradient") <- gradi } if (compute.hessian){ hlnPnr <- lapply(seq_len(R), function(i) h(i = i, pwnt = pwnt)) daub <- lapply(seq_len(R), function(i) apply(glnPnr[[i]], 2, tapply, id, sum) * pwn[[i]] * rn$weights[i]) daub <- Reduce("+", daub) / sqrt(pi) DD1 <- - crossprod(daub) DD2 <- lapply(seq_len(R), function(i) rn$weights[i] * hlnPnr[[i]]) DD2 <- Reduce("+", DD2) / sqrt(pi) DD3 <- lapply(seq_len(R), function(i) rn$weights[i] * crossprod(sqrt(pwn[[i]]) * apply(glnPnr[[i]], 2, tapply, id, sum))) DD3 <- Reduce("+", DD3) / sqrt(pi) H <- (DD1 + DD2 + DD3) attr(lnL, "hessian") <- H } } lnL } plm/R/tool_pdata.frame.R0000644000176200001440000017236114642212063014617 0ustar liggesusers## pdata.frame and pseries are adaptations of respectively data.frame ## and vector for panel data. An index attribute is added to both, ## which is a data.frame containing the indexes. There is no pseries ## function, it is the class of series extracted from a ## pdata.frame. index and pdim functions are used to extract ## respectively the data.frame containing the index and the dimensions ## of the panel ## pdata.frame: ## - $<- ## - [ ## - $ ## - [[ ## - print ## - as.list ## - as.data.frame ## - pseriesfy ## - arrange for dplyr compatibility ## pseries: ## - [ ## - print ## - as.matrix ## - plot ## - summary ## - plot.summary ## - print.summary ## - is.pseries ## - pseries2pdataframe (non-exported) ## - pmerge (non-exported) ## pdim: ## - pdim.default ## - pdim.data.frame ## - pdim.pdata.frame ## - pdim.pseries ## - pdim.panelmodel ## - pdim.pgmm ## - print.pdim ## index: ## - index.pindex ## - index.pdata.frame ## - index.pseries ## - index.panelmodel ## - is.index (non-exported) ## - has.index (non-exported) ## - checkNA.index (non-exported) ## - pos.index (non-exported) fancy.row.names <- function(index, sep = "-") { ## non-exported # assumes index is a list of 2 or 3 factors [not class pindex] if (length(index) == 2L) {result <- paste(index[[1L]], index[[2L]], sep = sep)} # this in the order also used for sorting (group, id, time): if (length(index) == 3L) {result <- paste(index[[3L]], index[[1L]], index[[2L]], sep = sep)} return(result) } #' pdata.frame: a data.frame for panel data #' #' An object of class 'pdata.frame' is a data.frame with an index #' attribute that describes its individual and time dimensions. #' #' The `index` argument indicates the dimensions of the panel. It can #' be: \itemize{ #' \item a vector of two character strings which #' contains the names of the individual and of the time indexes, #' \item #' a character string which is the name of the individual index #' variable. In this case, the time index is created automatically and #' a new variable called "time" is added, assuming consecutive and #' ascending time periods in the order of the original data, #' \item an integer, the number of individuals. In this case, the data #' need to be a balanced panel and be organized as a stacked time series #' (successive blocks of individuals, each block being a time series #' for the respective individual) assuming consecutive and ascending #' time periods in the order of the original data. Two new variables #' are added: "id" and "time" which contain the individual and the #' time indexes. #' } #' #' The `"[["` and `"$"` extract a series from the `pdata.frame`. The #' `"index"` attribute is then added to the series and a class #' attribute `"pseries"` is added. The `"["` method behaves as for #' `data.frame`, except that the extraction is also applied to the #' `index` attribute. A safe way to extract the index attribute is to #' use the function [index()] for 'pdata.frames' (and other objects). #' #' `as.data.frame` removes the index attribute from the `pdata.frame` #' and adds it to each column. For its argument `row.names` set to #' `FALSE` row names are an integer series, `TRUE` gives "fancy" row #' names; if a character (with length of the resulting data frame), #' the row names will be the character's elements. #' #' `as.list` behaves by default identical to #' [base::as.list.data.frame()] which means it drops the #' attributes specific to a pdata.frame; if a list of pseries is #' wanted, the attribute `keep.attributes` can to be set to #' `TRUE`. This also makes `lapply` work as expected on a pdata.frame #' (see also **Examples**). #' #' @param x a `data.frame` for the `pdata.frame` function and a #' `pdata.frame` for the methods, #' @param i see [Extract()], #' @param j see [Extract()], #' @param y one of the columns of the `data.frame`, #' @param index this argument indicates the individual and time #' indexes. See **Details**, #' @param drop see [Extract()], #' @param drop.index logical, indicates whether the indexes are to be #' excluded from the resulting pdata.frame, #' @param optional see [as.data.frame()], #' @param row.names `NULL` or logical, indicates whether "fancy" row #' names (combination of individual index and time index) are to #' be added to the returned (p)data.frame (`NULL` and `FALSE` have #' the same meaning for `pdata.frame`; for #' `as.data.frame.pdata.frame` see Details), #' @param stringsAsFactors logical, indicating whether character #' vectors are to be converted to factors, #' @param replace.non.finite logical, indicating whether values for #' which `is.finite()` yields `TRUE` are to be replaced by `NA` #' values, except for character variables (defaults to `FALSE`), #' @param drop.NA.series logical, indicating whether all-`NA` columns #' are to be removed from the pdata.frame (defaults to `FALSE`), #' @param drop.const.series logical, indicating whether constant #' columns are to be removed from the pdata.frame (defaults to #' `FALSE`), #' @param drop.unused.levels logical, indicating whether unused levels #' of factors are to be dropped (defaults to `FALSE`) (unused #' levels are always dropped from variables serving to construct #' the index variables), #' @param keep.attributes logical, only for as.list and as.data.frame #' methods, indicating whether the elements of the returned #' list/columns of the data.frame should have the pdata.frame's #' attributes added (default: FALSE for as.list, TRUE for #' as.data.frame), #' @param name the name of the `data.frame`, #' @param value the name of the variable to include, #' @param \dots further arguments passed on to internal usage of `data.frame`. #' @return a `pdata.frame` object: this is a `data.frame` with an #' `index` attribute which is a `data.frame` with two variables, #' the individual and the time indexes, both being factors. The #' resulting pdata.frame is sorted by the individual index, then #' by the time index. #' @export #' @author Yves Croissant #' @seealso [index()] to extract the index variables from a #' 'pdata.frame' (and other objects), [pdim()] to check the #' dimensions of a 'pdata.frame' (and other objects), [pvar()] to #' check for each variable if it varies cross-sectionally and over #' time. To check if the time periods are consecutive per #' individual, see [is.pconsecutive()]. #' @keywords classes #' @examples #' #' # Gasoline contains two variables which are individual and time #' # indexes #' data("Gasoline", package = "plm") #' Gas <- pdata.frame(Gasoline, index = c("country", "year"), drop.index = TRUE) #' #' # Hedonic is an unbalanced panel, townid is the individual index #' data("Hedonic", package = "plm") #' Hed <- pdata.frame(Hedonic, index = "townid", row.names = FALSE) #' #' # In case of balanced panel, it is sufficient to give number of #' # individuals data set 'Wages' is organized as a stacked time #' # series #' data("Wages", package = "plm") #' Wag <- pdata.frame(Wages, 595) #' #' # lapply on a pdata.frame by making it a list of pseries first #' lapply(as.list(Wag[ , c("ed", "lwage")], keep.attributes = TRUE), lag) #' #' pdata.frame <- function(x, index = NULL, drop.index = FALSE, row.names = TRUE, stringsAsFactors = FALSE, replace.non.finite = FALSE, drop.NA.series = FALSE, drop.const.series = FALSE, drop.unused.levels = FALSE, ...) { if(inherits(x, "pdata.frame")) { if(!is.pdata.frame(x)) { # check properties beyond class and if non-compliant, create proper # pdata.frame by continuing with pdata.frame function wrn.txt <- paste0("input 'x' claims to be a pdata.frame but does not have ", "compliant properties, so tried to re-create a compliant ", "pdata.frame from 'x'") warning(wrn.txt) } } if(length(index) > 3L){ stop("'index' can be of length 3 at the most (one index variable for individual, time, group)") } # prune input: x is supposed to be a plain data.frame. Other classes building # on top of R's data frame can inject attributes etc. that confuse functions # in pkg plm. x <- data.frame(x, ...) # if requested: coerce character vectors to factors if (stringsAsFactors) { x.char <- names(x)[vapply(x, is.character, FUN.VALUE = TRUE, USE.NAMES = FALSE)] for (i in x.char){ x[[i]] <- factor(x[[i]]) } } # if requested: replace Inf, -Inf, NaN (everything for which is.finite is FALSE) by NA # (for all but any character columns [relevant if stringAsFactors == FALSE]) if (replace.non.finite) { for (i in names(x)) { if (!inherits(x[[i]], "character")) { x[[i]][!is.finite(x[[i]])] <- NA } } } # if requested: check and remove complete NA series if (drop.NA.series) { na.check <- vapply(x, function(x) sum(!is.na(x)) == 0L, FUN.VALUE = TRUE, USE.NAMES = FALSE) na.serie <- names(x)[na.check] if (length(na.serie) > 0L){ if (length(na.serie) == 1L) cat(paste0("This series is NA and has been removed: ", na.serie, "\n")) else cat(paste0("These series are NA and have been removed: ", paste(na.serie, collapse = ", "), "\n")) } x <- x[ , !na.check] } # if requested: check for constant series and remove if (drop.const.series) { # -> var() and sd() on factors is deprecated as of R 3.2.3 -> use duplicated() cst.check <- vapply(x, function(x) { if (is.factor(x) || is.character(x)) { all(duplicated(x[!is.na(x)])[-1L]) } else { x[! is.finite(x)] <- NA # infinite elements set to NA only for this check var(as.numeric(x), na.rm = TRUE) == 0 } }, FUN.VALUE = TRUE, USE.NAMES = FALSE) # following line: bug fixed thanks to Marciej Szelfer cst.check <- cst.check | is.na(cst.check) cst.serie <- names(x)[cst.check] if (length(cst.serie) > 0L){ if (length(cst.serie) == 1L){ cat(paste0("This series is constant and has been removed: ", cst.serie, "\n")) } else{ cat(paste0("These series are constants and have been removed: ", paste(cst.serie, collapse = ", "), "\n")) } } x <- x[ , !cst.check] } # sanity check for 'index' argument. First, check the presence of a # grouping variable, this should be the third element of the index # vector or any "group" named element of this vector group.name <- NULL if (! is.null(names(index)) || length(index) == 3L){ if (! is.null(names(index))){ grouppos <- match("group", names(index)) if (! is.na(grouppos)){ group.name <- index[grouppos] index <- index[- grouppos] } } if (length(index) == 3L){ group.name <- index[3L] index <- index[-3L] } } if (length(index) == 0L) index <- NULL # if index is NULL, both id and time are NULL if (is.null(index)){ id <- NULL time <- NULL } # if the length of index is 1, id = index and time is NULL if (length(index) == 1L){ id <- index time <- NULL } # if the length of index is 2, the first element is id, the second # is time if (length(index) == 2L){ id <- index[1L] time <- index[2L] } # if both id and time are NULL, the names of the index are the first # two names of x if (is.null(id) && is.null(time)){ id.name <- names(x)[1L] time.name <- names(x)[2L] } else{ id.name <- id time.name <- time } # if index is numeric, this indicates a balanced panel with no. of # individuals equal to id.name if(is.numeric(id.name)){ if(!is.null(time.name)) warning("The time index (second element of 'index' argument) will be ignored\n") N <- nrow(x) if( (N %% id.name) != 0){ stop(paste0("unbalanced panel, in this case the individual index may not be indicated by an integer\n", "but by specifying a column of the data.frame in the first element of the 'index' argument\n")) } else{ T <- N %/% id.name n <- N %/% T time <- rep((1:T), n) id <- rep((1:n), rep(T, n)) id.name <- "id" time.name <- "time" if (id.name %in% names(x)) warning(paste0("column '", id.name, "' overwritten by id index")) if (time.name %in% names(x)) warning(paste0("column '", time.name, "' overwritten by time index")) x[[id.name]] <- id <- as.factor(id) x[[time.name]] <- time <- as.factor(time) } } else{ # id.name is not numeric, i.e., individual index is supplied if (!id.name %in% names(x)) stop(paste("variable '", id.name, "' does not exist (individual index)", sep="")) if (is.factor(x[[id.name]])){ id <- x[[id.name]] <- x[[id.name]][drop = TRUE] # drops unused levels of factor } else{ id <- x[[id.name]] <- as.factor(x[[id.name]]) } if (is.null(time.name)){ # if no time index is supplied, add time variable # automatically order data by individual index, necessary # for the automatic addition of time index to be # successful if no time index was supplied x <- x[order(x[[id.name]]), ] Ti <- collapse::qtable(x[[id.name]]) n <- length(Ti) time <- c() for (i in seq_len(n)){ time <- c(time, 1:Ti[i]) } time.name <- "time" if (time.name %in% names(x)) warning(paste0("column '", time.name, "' overwritten by time index")) time <- x[[time.name]] <- as.factor(time) } else{ # use supplied time index if (!time.name %in% names(x)) stop(paste0("variable '", time.name, "' does not exist (time index)")) if (is.factor(x[[time.name]])){ time <- x[[time.name]] <- x[[time.name]][drop = TRUE] } else{ time <- x[[time.name]] <- as.factor(x[[time.name]]) } } } # if present, make group variable a factor (just like for id and # time variables) if (!is.null(group.name)) { if (is.factor(x[[group.name]])){ group <- x[[group.name]] <- x[[group.name]][drop = TRUE] } else{ group <- x[[group.name]] <- as.factor(x[[group.name]]) } } # sort by group (if given), then by id, then by time if (! is.null(group.name)) x <- x[order(x[[group.name]], x[[id.name]], x[[time.name]]), ] else x <- x[order(x[[id.name]], x[[time.name]]), ] # if requested: drop unused levels from factor variables (spare # those serving for the index as their unused levels are dropped # already (at least in the attribute "index" they need to be # dropped b/c much code relies on it)) if (drop.unused.levels) { var.names <- setdiff(names(x), c(id.name, time.name, group.name)) for (i in var.names){ if (is.factor(x[[i]])){ x[[i]] <- droplevels(x[[i]]) } } } posindex <- match(c(id.name, time.name, group.name), names(x)) index <- unclass(x[ , posindex]) # unclass to list for speed in subsetting, make it data.frame again later if (drop.index) { x <- x[ , -posindex, drop = FALSE] if (ncol(x) == 0L) warning("after dropping of index variables, the pdata.frame contains 0 columns") } ### warn if duplicate couples test_doub <- collapse::qtable(index[[1L]], index[[2L]], na.exclude = FALSE) # == base R's table(x, y) # == table(index[[1L]], index[[2L]], useNA = "ifany") if (any(as.vector(test_doub[!is.na(rownames(test_doub)), !is.na(colnames(test_doub))]) > 1L)) warning(paste("duplicate couples (id-time) in resulting pdata.frame\n to find out which,", "use, e.g., table(index(your_pdataframe), useNA = \"ifany\")")) ### warn if NAs in index as likely not sane [not using check.NA because that outputs a line for each dimension -> not needed here] if (anyNA(index[[1L]]) || anyNA(index[[2L]]) || (if(length(index) == 3L) anyNA(index[[3L]]) else FALSE)) warning(paste0("at least one NA in at least one index dimension ", "in resulting pdata.frame\n to find out which, use, e.g., ", "table(index(your_pdataframe), useNA = \"ifany\")\n")) ### Could also remove rows with NA in any index' dimension # drop.rows <- is.na(index[[1L]]) | is.na(index[[2L]]) # if(ncol(index) == 3L) drop.rows <- drop.rows | is.na(index[[3L]]) # if((no.drop.rows <- sum(drop.rows)) > 0L) { # x <- x[!drop.rows, ] # index <- index[!drop.rows, ] # txt.drop.rows <- paste0(no.drop.rows, " row(s) dropped in resulting pdata.frame due to NA(s) in at least one index dimension") # warning(txt.drop.rows) # } if (row.names) { attr(x, "row.names") <- fancy.row.names(index) # NB: attr(x, "row.names") allows for duplicate rownames (as # opposed to row.names(x) <- something) # NB: no fancy row.names for index attribute (!?): # maybe because so it is possible to restore original row.names? } class(index) <- c("pindex", "data.frame") attr(x, "index") <- index class(x) <- c("pdata.frame", "data.frame") return(x) } #' @rdname pdata.frame #' @export "$<-.pdata.frame" <- function(x, name, value) { if (inherits(value, "pseries")){ # remove pseries features before adding value as a column to pdata.frame if (length(class(value)) == 1L) value <- unclass(value) else attr(value, "class") <- setdiff(class(value), "pseries") attr(value, "index") <- NULL } "$<-.data.frame"(x, name, value) } # NB: We don't have methods for [<-.pdata.frame and [[<-.pdata.frame, so these functions # dispatch to the respective data.frame methods which assign whatever is # handed over to the methods. Especially, if a pseries is handed over, this # results in really assigning a pseries to the pdata.frame in case of usage of # [<- and [[<-. This is inconsistent because the columns of a pdata.frame do not # have the 'pseries' features. # This can be seen by lapply(some_pdata.frame, class) after # assigning with the respective .data.frame methods # Extracting/subsetting method for class pseries, [.pseries, retaining the # pseries features. est cases are in tests/test_pdata.frame_subsetting.R. # # We do not provide a [[.pseries method in addition (note the double "["). Thus, # the base R method is used and behaviour for pseries is what one would expect # and is in line with base R, see ?Extract for [[ with atomic vectors: # "The usual form of indexing is [. [[ can be used to select a single element # dropping names, whereas [ keeps them, e.g., in c(abc = 123)[1]." # In addition, it also drops other attributes in base R, so applying [[ from # base R results in dropping names and index which is in line with what one # would expect for pseries. Example for base R behaviour: # a <- 1:10 # names(a) <- letters[1:10] # attr(a, "index") <- "some_index_attribute" # a[[3]] # drops names and attribute (a[3] keeps names and drops other attributes) ##### [.pseries is commented because it leads to headache when dplyr is loaded ### boiled down to pkg vctrs https://github.com/r-lib/vctrs/issues/1446 ### R.utils::detachPackage("dplyr") ### test_pure <- pcdtest(diff(log(price)) ~ diff(lag(log(price))) + diff(lag(log(price), 2)), data = php) ### ### library(dplyr) # first one will error with [.pseries, for plm 2.4-1 it gives a wrong result (lag is hijacked -> known case) ### test_dplyr <- pcdtest(diff(price) ~ diff(lag(price)), data = php) ### test_dplyr_plmlag <- pcdtest(diff(log(price)) ~ diff(plm::lag(log(price))) + diff(plm::lag(log(price), 2)), data = php) # save way ## ## ## @rdname pdata.frame ## @export # "[.pseries" <- function(x, ...) { # # ## use '...' instead of only one specific argument, because subsetting for # ## factors can have argument 'drop', e.g., x[i, drop=TRUE] see ?Extract.factor # index <- attr(x, "index") # # ## two sanity checks as [.pseries-subsetting was introduced in Q3/2021 and some packages # ## produced illegal pseries (these pkg errors were fixed by new CRAN releases but maybe # ## other code out there produces illegal pseries, so leave these sanity checks in here for # ## a while, then remove (for speed) # if(is.null(index)) warning("pseries object with is.null(index(pseries)) == TRUE encountered") # if(!is.null(index) && !is.index(index)) warning(paste0("pseries object has illegal index with class(index) == ", paste0(class(index), collapse = ", "))) # # names_orig <- names(x) # keep_rownr <- seq_along(x) # full length row numbers original pseries # names(keep_rownr) <- names_orig # # if(is.null(names_orig)) { # names(x) <- keep_rownr # if no names are present, set names as integer sequence to identify rows to keep later # names(keep_rownr) <- keep_rownr # } # x <- remove_pseries_features(x) # result <- x[...] # actual subsetting # # # identify rows to keep in the index: # keep_rownr <- keep_rownr[names(result)] # row numbers to keep after subsetting # names(result) <- if(!is.null(names_orig)) names_orig[keep_rownr] else NULL # restore and subset original names if any # # # Subset index accordingly: # # Check if index is null is a workaround for R's data frame subsetting not # # stripping class pseries but its attributes for factor (for other data types, pseries class is dropped) # # see https://bugs.r-project.org/bugzilla/show_bug.cgi?id=18140 # if (!is.null(index)) { # index <- index[keep_rownr, ] # index <- droplevels(index) # drop unused levels (like in subsetting of pdata.frames) # } # # result <- add_pseries_features(result, index) # return(result) # } ## Non-exported internal function for subsetting of pseries. Can be used ## internally. ## While there is now a "proper" subsetting function for pseries, leave this ## subset_pseries for a while just to be safe (currently used in pcdtest()) subset_pseries <- function(x, ...) { ## use '...' instead of only one specific argument, because subsetting for ## factors can have argument 'drop', e.g., x[i, drop=TRUE] see ?Extract.factor index <- attr(x, "index") if(is.null(index)) warning("pseries object with is.null(index(pseries)) == TRUE encountered") if(!is.null(index) && !is.index(index)) warning(paste0("pseries object has illegal index with class(index) == ", paste0(class(index), collapse = ", "))) names_orig <- names(x) keep_rownr <- seq_along(x) # full length row numbers original pseries names(keep_rownr) <- names_orig if(is.null(names_orig)) { names(x) <- keep_rownr # if no names are present, set names as integer sequence to identify rows to keep later names(keep_rownr) <- keep_rownr } x <- remove_pseries_features(x) result <- x[...] # actual subsetting # identify rows to keep in the index: keep_rownr <- keep_rownr[names(result)] # row numbers to keep after subsetting names(result) <- if(!is.null(names_orig)) names_orig[keep_rownr] else NULL # restore and subset original names if any # Subset index accordingly: # Check if index is null is a workaround for R's data frame subsetting not # stripping class pseries but its attributes for factor (for other data types, pseries class is dropped) # see https://bugs.r-project.org/bugzilla/show_bug.cgi?id=18140 if(!is.null(index)) { index <- index[keep_rownr, ] index <- droplevels(index) # drop unused levels (like in subsetting of pdata.frames) } result <- add_pseries_features(result, index) return(result) } #' @rdname pdata.frame #' @export "[.pdata.frame" <- function(x, i, j, drop) { # signature of [.data.frame here missing.i <- missing(i) # missing is only guaranteed to yield correct results, missing.j <- missing(j) # if its argument was not modified before accessing it missing.drop <- missing(drop) # -> save information about missingness sc <- sys.call() # Nargs_mod to distinguish if called by [] (Nargs_mod == 2L); [,] (Nargs_mod == 3L); [,,] (Nargs_mod == 4L) Nargs_mod <- nargs() - (!missing.drop) ### subset index (and row names) appropriately: # subsetting data.frame by only j (x[ , j]) or missing j (x[i]) yields full-row # column(s) of data.frame, thus do not subset the index because it needs full rows (original index) # # subset index if: # * [i,j] (supplied i AND supplied j) (in this case: Nargs_mod == 3L (or 4L depending on present/missing drop)) # * [i, ] (supplied i AND missing j) (in this case: Nargs_mod == 3L (or 4L depending on present/missing drop)) # # do not subset index in all other cases (here are the values of Nargs_mod) # * [ ,j] (missing i AND j supplied) (Nargs_mod == 3L (or 4L depending on present/missing drop)) # * [i] (supplied i AND missing j) (Nargs_mod == 2L) [Nargs_mod distinguishes this case from the one where subsetting is needed!] # * [i, drop = TRUE/FALSE] (supplied i AND missing j) (Nargs_mod == 2L) # # => subset index (and row names) if: supplied i && Nargs_mod >= 3L index <- attr(x, "index") x.rownames <- row.names(x) if (!missing.i && Nargs_mod >= 3L) { iindex <- i if (is.character(iindex)) { # Kevin Tappe 2016-01-04 : in case of indexing (subsetting) a # pdata.frame by a character, the subsetting vector should be # converted to numeric by matching to the row names so that the # index can be correctly subset (by this numeric value). # Motivation: # Row names of the pdata.frame and row names of the pdata.frame's # index are not guaranteed to be the same! iindex <- match(iindex, rownames(x)) } # subset index and row names index <- "[.data.frame"(index, iindex, ) x.rownames <- x.rownames[iindex] # remove empty levels in index (if any) # NB: really do dropping of unused levels? Standard R behaviour is to leave the levels and not drop unused levels # Maybe the dropping is needed for functions like lag.pseries/lagt.pseries to work correctly? index <- droplevels(index) # NB: use droplevels() rather than x[drop = TRUE] as x[drop = TRUE] can also coerce mode! # old (up to rev. 251): index <- data.frame(lapply(index, function(x) x[drop = TRUE])) } ### end of subsetting index # delete attribute with old index first: # this preserves the order of the attributes because # order of non-standard attributes is scrambled by R's data.frame subsetting with `[.` # (need to add new index later anyway) attr(x, "index") <- NULL # Set class to "data.frame" first to avoid coercing which enlarges the (p)data.frame # (probably by as.data.frame.pdata.frame). # Coercing is the built-in behaviour for extraction from data.frames by "[." (see ?`[.data.frame`) # and it seems this cannot be avoided; thus we need to make sure, not to have any coercing going on # which adds extra data (such as as.matrix.pseries, as.data.frame.pdata.frame) by setting the class # to "data.frame" first class(x) <- "data.frame" # call [.data.frame exactly as [.pdata.frame was called but arg is now 'x' # this is necessary because there could be several missing arguments # use sys.call (and not match.call) because arguments other than drop may not be named # need to evaluate i, j, drop, if supplied, before passing on (do not pass on as the sys.call caught originally) sc_mod <- sc sc_mod[[1L]] <- quote(`[.data.frame`) sc_mod[[2L]] <- quote(x) if (!missing.i) sc_mod[[3L]] <- i # if present, i is always in pos 3 if (!missing.j) sc_mod[[4L]] <- j # if present, j is always in pos 4 if (!missing.drop) sc_mod[[length(sc)]] <- drop # if present, drop is always in last position (4 or 5, # depending on the call structure and whether missing j or not) mydata <- eval(sc_mod) if (is.null(dim(mydata))) { # if dim is NULL, subsetting did not return a data frame but a vector or a # factor or NULL (nothing more is left) if (is.null(mydata)) { # since R 3.4.0, NULL cannot have attributes, so special case it res <- NULL } else { # vector or factor -> make it a pseries res <- structure(mydata, names = x.rownames, index = index, class = unique(c("pseries", class(mydata)))) } } else { # subsetting returned a data.frame -> add attributes to make it a pdata.frame again res <- structure(mydata, index = index, class = c("pdata.frame", "data.frame")) } return(res) } #' @rdname pdata.frame #' @export "[[.pdata.frame" <- function(x, y) { index <- attr(x, "index") attr(x, "index") <- NULL class(x) <- "data.frame" result <- "[[.data.frame"(x, y) if (!is.null(result)){ # make extracted column a pseries # use this order for attributes to preserve original order of attributes for a pseries result <- structure(result, names = row.names(x), class = unique(c("pseries", class(result))), index = index ) } result } #' @rdname pdata.frame #' @export "$.pdata.frame" <- function(x, y) { "[[.pdata.frame"(x, paste(as.name(y))) } #' @rdname pdata.frame #' @export print.pdata.frame <- function(x, ...) { attr(x, "index") <- NULL class(x) <- "data.frame" # This is a workaround: print.data.frame cannot handle # duplicated row names which are currently possible for pdata frames if (collapse::any_duplicated(rownames(x))) { print("Note: pdata.frame contains duplicated row names, thus original row names are not printed") rownames(x) <- NULL } print(x, ...) } # pseriesfy() takes a pdata.frame and makes each column a pseries # names of the pdata.frame are not added to the columns as base R's data.frames # do not allow for names in columns (but, e.g., a tibble does so since 3.0.0, # see https://github.com/tidyverse/tibble/issues/837) #' Turn all columns of a pdata.frame into class pseries. #' #' This function takes a pdata.frame and turns all of its columns into #' objects of class pseries. #' #' Background: Initially created pdata.frames have as columns the pure/basic #' class (e.g., numeric, factor, character). When extracting a column from such #' a pdata.frame, the extracted column is turned into a pseries. #' #' At times, it can be convenient to apply data transformation operations on #' such a `pseriesfy`-ed pdata.frame, see Examples. #' #' @name pseriesfy #' @param x an object of class `"pdata.frame"`, #' @param \dots further arguments (currently not used). #' @return A pdata.frame like the input pdata.frame but with all columns #' turned into pseries. #' @seealso [pdata.frame()], [plm::as.list()] #' @keywords attribute #' @export #' @examples #' library("plm") #' data("Grunfeld", package = "plm") #' pGrun <- pdata.frame(Grunfeld[ , 1:4], drop.index = TRUE) #' pGrun2 <- pseriesfy(pGrun) # pseriesfy-ed pdata.frame #' #' # compare classes of columns #' lapply(pGrun, class) #' lapply(pGrun2, class) #' #' # When using with() #' with(pGrun, lag(value)) # dispatches to base R's lag() #' with(pGrun2, lag(value)) # dispatches to plm's lag() respect. panel structure #' #' # When lapply()-ing #' lapply(pGrun, lag) # dispatches to base R's lag() #' lapply(pGrun2, lag) # dispatches to plm's lag() respect. panel structure #' #' # as.list(., keep.attributes = TRUE) on a non-pseriesfy-ed #' # pdata.frame is similar and dispatches to plm's lag #' lapply(as.list(pGrun, keep.attributes = TRUE), lag) #' pseriesfy <- function(x, ...) { if(!inherits(x, "pdata.frame")) stop("input 'x' needs to be a pdata.frame") ix <- attr(x, "index") nam <- attr(x, "row.names") pdf <- as.data.frame(lapply(x, function(col) add_pseries_features(col, ix))) class(pdf) <- c("pdata.frame", class(pdf)) attr(pdf, "index") <- ix rownames(pdf) <- nam return(pdf) } pseriesfy.collapse <- function(x, ...) { if(!inherits(x, "pdata.frame")) stop("input 'x' needs to be a pdata.frame") ix <- attr(x, "index") return(collapse::dapply(x, function(col) add_pseries_features(col, ix))) } # as.list.pdata.frame: # The default is to behave identical to as.list.data.frame. # This default is necessary, because some code relies on this # behaviour! Do not change this! # # as.list.data.frame does: # * unclass # * strips all classes but "list" # * strips row.names # # By setting argument keep.attributes = TRUE, the attributes of the pdata.frame # are preserved by as.list.pdata.frame: a list of pseries is returned # and lapply can be used as usual, now working on a list of pseries, e.g., # lapply(as.list(pdata.frame[ , your_cols], keep.attributes = TRUE), lag) # works as expected. #' @rdname pdata.frame #' @export as.list.pdata.frame <- function(x, keep.attributes = FALSE, ...) { if (!keep.attributes) { x <- as.list.data.frame(x) } else { # make list of pseries objects x_names <- names(x) x <- lapply(x_names, FUN = function(element, pdataframe){ "[[.pdata.frame"(x = pdataframe, y = element) }, pdataframe = x) names(x) <- x_names # note: this function is slower than the corresponding # as.list.data.frame function, # because we cannot simply use unclass() on the pdata.frame: # need to add index etc to all columns to get proper pseries # back => thus the extraction function "[[.pdata.frame" is used } return(x) } #' @rdname pdata.frame #' @export as.data.frame.pdata.frame <- function(x, row.names = NULL, optional = FALSE, keep.attributes = TRUE, ...) { index <- attr(x, "index") if(!keep.attributes) { attr(x, "index") <- NULL class(x) <- "data.frame" rownames(x) <- NULL } else { # make each column a pseries (w/o names) x <- lapply(x, function(z){ # names(z) <- row.names(x) # it is not possible to keep the names in the 'pseries'/ # in columns because the call to data.frame later deletes # the names attribute of columns (definition of data frame) attr(z, "index") <- index class(z) <- unique(c("pseries", class(z))) return(z) }) } if(is.null(row.names)) { # do as base::as.data.frame does for NULL x <- as.data.frame(x, row.names = NULL) } else { # argument check if(!(isTRUE(row.names) || isFALSE(row.names) || is.character(row.names))) stop("argument 'row.names' is none of NULL, FALSE, TRUE, and not a character") if(is.logical(row.names) && row.names == FALSE) { # set row names to integer sequence 1, 2, 3, ... x <- as.data.frame(x) row.names(x) <- NULL } if(is.logical(row.names) && row.names == TRUE) { # set fancy row names x <- as.data.frame(x) row.names(x) <- fancy.row.names(index) } if(is.character(row.names)) { x <- as.data.frame(x) row.names(x) <- row.names } # using row.names(x) <- "something" is safer (does not allow # duplicate row.names) than # attr(x,"row.names") <- "something" } return(x) } #' Check if an object is a pseries #' #' This function checks if an object qualifies as a pseries #' #' A `"pseries"` is a wrapper around a "basic class" (numeric, factor, #' logical, character, or complex). #' #' To qualify as a pseries, an object needs to have the following #' features: #' #' - class contains `"pseries"` and there are at least two classes #' (`"pseries"` and the basic class), #' #' - have an appropriate index attribute (defines the panel #' structure), #' #' - any of `is.numeric`, `is.factor`, `is.logical`, `is.character`, #' `is.complex` is `TRUE`. #' #' @param object object to be checked for pseries features #' #' @export #' @return A logical indicating whether the object is a pseries (`TRUE`) #' or not (`FALSE`). #' @seealso [pseries()] for some computations on pseries and some #' further links. #' @keywords attribute #' @examples #' #' # Create a pdata.frame and extract a series, which becomes a pseries #' data("EmplUK", package = "plm") #' Em <- pdata.frame(EmplUK) #' z <- Em$output #' #' class(z) # pseries as indicated by class #' is.pseries(z) # and confirmed by check #' #' # destroy index of pseries and re-check #' attr(z, "index") <- NA #' is.pseries(z) # now FALSE #' is.pseries <- function(object) { # checks if an object has the necessary features to qualify as a 'pseries' res <- TRUE if (!inherits(object, "pseries")) res <- FALSE # class 'pseries' is always on top of basic class: min 2 classes needed, if 2 classes "pseries" needs to be first entry if (!length(class(object)) >= 2L) res <- FALSE if (length(class(object)) == 2L && class(object)[1L] != "pseries") res <- FALSE if (!has.index(object)) res <- FALSE if (!any(c(is.numeric(object), is.factor(object), is.logical(object), is.character(object), is.complex(object)))) { res <- FALSE } return(res) } #' Check for the Dimensions of the Panel #' #' This function checks the number of individuals and time observations in the #' panel and whether it is balanced or not. #' #' `pdim` is called by the estimation functions and can be also used #' stand-alone. #' #' @name pdim #' @aliases pdim #' @param x a `data.frame`, a `pdata.frame`, a `pseries`, a #' `panelmodel`, or a `pgmm` object, #' @param y a vector, #' @param index see [pdata.frame()], #' @param \dots further arguments. #' @return An object of class `pdim` containing the following #' elements: #' #' \item{nT}{a list containing `n`, the number of individuals, `T`, #' the number of time observations, `N` the total number of #' observations,} #' #' \item{Tint}{a list containing two vectors (of type integer): `Ti` #' gives the number of observations for each individual and `nt` gives #' the number of individuals observed for each period,} #' #' \item{balanced}{a logical value: `TRUE` for a balanced panel, #' `FALSE` for an unbalanced panel,} #' #' \item{panel.names}{a list of character vectors: `id.names` contains #' the names of each individual and `time.names` contains the names of #' each period.} #' #' @note Calling `pdim` on an estimated `panelmodel` object #' and on the corresponding `(p)data.frame` used for this #' estimation does not necessarily yield the same result. When #' called on an estimated `panelmodel`, the number of #' observations (individual, time) actually used for model #' estimation are taken into account. When called on a #' `(p)data.frame`, the rows in the `(p)data.frame` are #' considered, disregarding any `NA` values in the dependent or #' independent variable(s) which would be dropped during model #' estimation. #' @export #' @author Yves Croissant #' @seealso [is.pbalanced()] to just determine balancedness #' of data (slightly faster than `pdim`),\cr #' [punbalancedness()] for measures of #' unbalancedness,\cr [nobs()], #' [pdata.frame()],\cr [pvar()] to check for #' each variable if it varies cross-sectionally and over time. #' @keywords attribute #' @examples #' #' # There are 595 individuals #' data("Wages", package = "plm") #' pdim(Wages, 595) #' #' # Gasoline contains two variables which are individual and time #' # indexes and are the first two variables #' data("Gasoline", package="plm") #' pdim(Gasoline) #' #' # Hedonic is an unbalanced panel, townid is the individual index #' data("Hedonic", package = "plm") #' pdim(Hedonic, "townid") #' #' # An example of the panelmodel method #' data("Produc", package = "plm") #' z <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp,data=Produc, #' model="random", subset = gsp > 5000) #' pdim(z) #' pdim <- function(x, ...) { UseMethod("pdim") } #' @rdname pdim #' @export pdim.default <- function(x, y, ...) { if (length(x) != length(y)) stop("The length of the two inputs differs\n") x <- x[drop = TRUE] # drop unused factor levels so that table() y <- y[drop = TRUE] # gives only needed combinations z <- collapse::qtable(x, y) ## == base R's table(x, y) Ti <- rowSums(z) # faster than: apply(z, 1, sum) nt <- colSums(z) # apply(z, 2, sum) n <- nrow(z) T <- ncol(z) N <- length(x) nT <- list(n = n, T = T, N = N) id.names <- rownames(z) time.names <- colnames(z) panel.names <- list(id.names = id.names, time.names = time.names) balanced <- if(any(z <- as.vector(z) == 0)) FALSE else TRUE if(any(z > 1)) stop("duplicate couples (id-time)\n") Tint <- list(Ti = Ti, nt = nt) z <- list(nT = nT, Tint = Tint, balanced = balanced, panel.names = panel.names) class(z) <- "pdim" z } #' @rdname pdim #' @export pdim.data.frame <- function(x, index = NULL, ...) { x <- pdata.frame(x, index) index <- unclass(attr(x, "index")) pdim(index[[1L]], index[[2L]]) } #' @rdname pdim #' @export pdim.pdata.frame <- function(x,...) { index <- unclass(attr(x, "index")) pdim(index[[1L]], index[[2L]]) } #' @rdname pdim #' @export pdim.pseries <- function(x,...) { index <- unclass(attr(x, "index")) pdim(index[[1L]], index[[2L]]) } #' @rdname pdim #' @export pdim.pggls <- function(x, ...) { ## pggls is also class panelmodel, but take advantage of the pdim attribute in it attr(x, "pdim") } #' @rdname pdim #' @export pdim.pcce <- function(x, ...) { ## pcce is also class panelmodel, but take advantage of the pdim attribute in it attr(x, "pdim") } #' @rdname pdim #' @export pdim.pmg <- function(x, ...) { ## pmg is also class panelmodel, but take advantage of the pdim attribute in it attr(x, "pdim") } #' @rdname pdim #' @export pdim.pgmm <- function(x, ...) { ## pgmm is also class panelmodel, but take advantage of the pdim attribute in it attr(x, "pdim") } #' @rdname pdim #' @export pdim.panelmodel <- function(x, ...) { x <- model.frame(x) pdim(x) } #' @rdname pdim #' @export print.pdim <- function(x, ...) { if (x$balanced){ cat("Balanced Panel: ") cat(paste("n = ", x$nT$n, ", ", sep="")) cat(paste("T = ", x$nT$T, ", ", sep="")) cat(paste("N = ", x$nT$N, "\n", sep="")) } else{ cat("Unbalanced Panel: ") cat(paste("n = ", x$nT$n,", ", sep="")) cat(paste("T = ", min(x$Tint$Ti), "-", max(x$Tint$Ti), ", ", sep="")) cat(paste("N = ", x$nT$N, "\n", sep="")) } invisible(pdim) } ########### is.pbalanced ############## ### for convenience and to be faster than pdim() for the purpose ### of the determination of balancedness only, because it avoids ### pdim()'s calculations which are unnecessary for balancedness. ### ### copied (and adapted) methods and code from pdim.* ### (only relevant parts to determine balancedness) #' Check if data are balanced #' #' This function checks if the data are balanced, i.e., if each individual has #' the same time periods #' #' Balanced data are data for which each individual has the same time periods. #' The returned values of the `is.pbalanced(object)` methods are identical #' to `pdim(object)$balanced`. `is.pbalanced` is provided as a short #' cut and is faster than `pdim(object)$balanced` because it avoids those #' computations performed by `pdim` which are unnecessary to determine the #' balancedness of the data. #' #' @aliases is.pbalanced #' @param x an object of class `pdata.frame`, `data.frame`, #' `pseries`, `panelmodel`, or `pgmm`, #' @param y (only in default method) the time index variable (2nd index #' variable), #' @param index only relevant for `data.frame` interface; if #' `NULL`, the first two columns of the data.frame are #' assumed to be the index variables; if not `NULL`, both #' dimensions ('individual', 'time') need to be specified by #' `index` as character of length 2 for data frames, for #' further details see [pdata.frame()], #' @param \dots further arguments. #' @return A logical indicating whether the data associated with #' object `x` are balanced (`TRUE`) or not #' (`FALSE`). #' @seealso [punbalancedness()] for two measures of #' unbalancedness, [make.pbalanced()] to make data #' balanced; [is.pconsecutive()] to check if data are #' consecutive; [make.pconsecutive()] to make data #' consecutive (and, optionally, also balanced).\cr #' [pdim()] to check the dimensions of a 'pdata.frame' #' (and other objects), [pvar()] to check for individual #' and time variation of a 'pdata.frame' (and other objects), #' [pseries()], [data.frame()], #' [pdata.frame()]. #' @export #' @keywords attribute #' @examples #' #' # take balanced data and make it unbalanced #' # by deletion of 2nd row (2nd time period for first individual) #' data("Grunfeld", package = "plm") #' Grunfeld_missing_period <- Grunfeld[-2, ] #' is.pbalanced(Grunfeld_missing_period) # check if balanced: FALSE #' pdim(Grunfeld_missing_period)$balanced # same #' #' # pdata.frame interface #' pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) #' is.pbalanced(Grunfeld_missing_period) #' #' # pseries interface #' is.pbalanced(pGrunfeld_missing_period$inv) #' is.pbalanced <- function(x, ...) { UseMethod("is.pbalanced") } #' @rdname is.pbalanced #' @export is.pbalanced.default <- function(x, y, ...) { if (length(x) != length(y)) stop("The length of the two inputs differs\n") x <- x[drop = TRUE] # drop unused factor levels so that table y <- y[drop = TRUE] # gives only needed combinations z <- collapse::qtable(x, y) # == base R's table(x, y) balanced <- if(any(v <- as.vector(z) == 0L)) FALSE else TRUE if (any(v > 1L)) warning("duplicate couples (id-time)\n") balanced } #' @rdname is.pbalanced #' @export is.pbalanced.data.frame <- function(x, index = NULL, ...) { x <- pdata.frame(x, index) index <- unclass(attr(x, "index")) # unclass for speed is.pbalanced(index[[1L]], index[[2L]]) } #' @rdname is.pbalanced #' @export is.pbalanced.pdata.frame <- function(x, ...) { index <- unclass(attr(x, "index")) # unclass for speed is.pbalanced(index[[1L]], index[[2L]]) } #' @rdname is.pbalanced #' @export is.pbalanced.pseries <- function(x, ...) { index <- unclass(attr(x, "index")) # unclass for speed is.pbalanced(index[[1L]], index[[2L]]) } #' @rdname is.pbalanced #' @export is.pbalanced.pggls <- function(x, ...) { # pggls is also class panelmodel, but take advantage of its pdim attribute attr(x, "pdim")$balanced } #' @rdname is.pbalanced #' @export is.pbalanced.pcce <- function(x, ...) { # pcce is also class panelmodel, but take advantage of its pdim attribute attr(x, "pdim")$balanced } #' @rdname is.pbalanced #' @export is.pbalanced.pmg <- function(x, ...) { # pmg is also class panelmodel, but take advantage of its pdim attribute attr(x, "pdim")$balanced } #' @rdname is.pbalanced #' @export is.pbalanced.pgmm <- function(x, ...) { # pgmm is also class panelmodel, but take advantage of its pdim attribute attr(x, "pdim")$balanced } #' @rdname is.pbalanced #' @export is.pbalanced.panelmodel <- function(x, ...) { x <- model.frame(x) is.pbalanced(x) } #' Extract the indexes of panel data #' #' This function extracts the information about the structure of the #' individual and time dimensions of panel data. Grouping information #' can also be extracted if the panel data were created with a #' grouping variable. #' #' Panel data are stored in a `"pdata.frame"` which has an `"index"` #' attribute. Fitted models in `"plm"` have a `"model"` element which #' is also a `"pdata.frame"` and therefore also has an `"index"` #' attribute. Finally, each series, once extracted from a #' `"pdata.frame"`, becomes of class `"pseries"`, which also has this #' `"index"` attribute. `"index"` methods are available for all these #' objects. The argument `"which"` indicates which index should be #' extracted. If `which = NULL`, all indexes are extracted. `"which"` #' can also be a vector of length 1, 2, or 3 (3 only if the pdata #' frame was constructed with an additional group index) containing #' either characters (the names of the individual variable and/or of #' the time variable and/or the group variable or `"id"` and `"time"`) #' and `"group"` or integers (1 for the individual index, 2 for the #' time index, and 3 for the group index (the latter only if the pdata #' frame was constructed with such).) #' #' @name index.plm #' @aliases index #' @importFrom zoo index #' @export index #' @param x an object of class `"pindex"`, `"pdata.frame"`, #' `"pseries"` or `"panelmodel"`, #' @param which the index(es) to be extracted (see details), #' @param \dots further arguments. #' @return A vector or an object of class `c("pindex","data.frame")` #' containing either one index, individual and time index, or (any #' combination of) individual, time and group indexes. #' @author Yves Croissant #' @seealso [pdata.frame()], [plm()] #' @keywords attribute #' @examples #' #' data("Grunfeld", package = "plm") #' Gr <- pdata.frame(Grunfeld, index = c("firm", "year")) #' m <- plm(inv ~ value + capital, data = Gr) #' index(Gr, "firm") #' index(Gr, "time") #' index(Gr$inv, c(2, 1)) #' index(m, "id") #' #' # with additional group index #' data("Produc", package = "plm") #' pProduc <- pdata.frame(Produc, index = c("state", "year", "region")) #' index(pProduc, 3) #' index(pProduc, "region") #' index(pProduc, "group") #' NULL #' @rdname index.plm #' @export index.pindex <- function(x, which = NULL, ...) { if (is.null(which)) { # if no specific index is requested, select all index variables which <- names(x) } else{ # catch case when someone enters "individual" albeit proper value is # "id" to extract individual index posindividual <- match("individual", which) if (! is.na(posindividual)) which[posindividual] <- "id" } if (length(which) > 3L) stop("the length of argument 'which' should be at most 3") if (is.numeric(which)){ if (! all(which %in% 1:3)) stop("if integer, argument 'which' should contain only 1, 2 and/or 3") if (ncol(x) == 2L && 3 %in% which) stop("no grouping variable, only 2 indexes") which <- names(x)[which] } nindex <- names(x) gindex <- c("id", "time") if (ncol(x) == 3L) gindex <- c(gindex, "group") if (any(! which %in% c(nindex, gindex))) stop("unknown variable") if ("id" %in% which) { which[which == "id"] <- names(x)[1L] if("id" %in% names(x)[-1L]) warning("an index variable not being the invidiual index is called 'id'. Likely, any results are distorted.") } if ("time" %in% which) { which[which == "time"] <- names(x)[2L] if("time" %in% names(x)[-2L]) warning("an index variable not being the time index is called 'time'. Likely, any results are distorted.") } if (ncol(x) == 3L) if ("group" %in% which) { which[which == "group"] <- names(x)[3L] if("group" %in% names(x)[-3L]) warning("an index variable not being the group index is called 'group'. Likely, any results are distorted.") } result <- x[ , which] result } #' @rdname index.plm #' @export index.pdata.frame <- function(x, which = NULL, ...) { anindex <- attr(x, "index") index(x = anindex, which = which) } #' @rdname index.plm #' @export index.pseries <- function(x, which = NULL, ...) { anindex <- attr(x, "index") index(x = anindex, which = which) } #' @rdname index.plm #' @export index.panelmodel <- function(x, which = NULL, ...) { anindex <- attr(x$model, "index") index(x = anindex, which = which) } is.index <- function(index) { # not exported, helper function # checks if the index is an index in the sense of package plm res <- TRUE if(!all(class(index) == c("pindex", "data.frame"))) res <- FALSE if(!is.null(n <- ncol(index)) && !(n %in% c(2, 3))) res <- FALSE res } has.index <- function(object) { # not exported, helper function # checks if an object has an index in sense of package plm # (esp. to distinguish from zoo::index() which always returns an index) index <- attr(object, "index") return(is.index(index)) } checkNA.index <- function(index, which = "all", error = TRUE) { # not exported, helper function # # check if any NA in indexes (all or specific dimension) # # index can be of class pindex (proper index attribute of pdata.frame/pseries # or a list of factors, thus can call checkNA.index(unclass(proper_index))) # which gives a speed up as the faster list-subetting is used (instead of the # relatively slower data.frame-subsetting) feedback <- if(error) stop else warning if(which == "all") { if(anyNA(index[[1L]])) feedback("NA in the individual index variable") if(anyNA(index[[2L]])) feedback("NA in the time index variable") n.index <- if(inherits(index, "pindex")) ncol(index) else length(index) # else-branch is list (for speed) if(n.index == 3L) { if(anyNA(index[[3L]])) feedback("NA in the group index variable") } } if(which == 1L) { if(anyNA(index[[1L]])) feedback("NA in the individual index variable") } if(which == 2L) { if(anyNA(index[[2L]])) feedback("NA in the time index variable") } if(which == 3L) { if(anyNA(index[[3L]])) feedback("NA in the group index variable") } NULL } make.fdindex <- function(x) { ## non-exported helper function ## constructs an index suitable for time-wise first-difference data ## input: an index (class c("pindex", "data.frame")) ## return value: plain 2-entry list of the index factors ix <- unclass(x) ix.ind.lag <- lag(add_pseries_features(ix[[1L]], ix)) ix.ti.lag <- lag(add_pseries_features(ix[[2L]], ix)) na <- is.na(ix.ind.lag) # NAs are in same positions for ind and time index ix.ind.lag <- ix.ind.lag[!na] ix.ti.lag <- ix.ti.lag[!na] list(ix.ind.lag, ix.ti.lag) } # pos.index: # not exported, helper function # # determines column numbers of the index variables in a pdata.frame # returns named numeric of length 2 or 3 with column numbers of the index variables # (1: individual index, 2: time index, if available 3: group index), # names are the names of the index variables # # returns c(NA, NA) / c(NA, NA, NA) if the index variables are not a column in the pdata.frame # (e.g., for pdata.frames created with drop.index = TRUE). # Cannot detect index variables if their columns names were changed after creation of the pdata.frame pos.index <- function(x, ...) { index <- attr(x, "index") index_names <- names(index) index_pos <- match(index_names, names(x)) names(index_pos) <- index_names return(index_pos) } is.pdata.frame <- function(x, feedback = NULL) { # not exported, helper function # checks if a pdata.frame has appropriate properties res <- TRUE if(!inherits(x, "pdata.frame")) res <- FALSE if(!has.index(x)) res <- FALSE else { if(!nrow(index(x)) == nrow(x)) res <- FALSE } if(!res && !is.null(feedback)) { feedback <- switch(feedback, "error" = stop, "warn" = warning) feedback.txt <- paste0("input data claims to be a pdata.frame but does not seem to have compliant properties, ", "results can be unreliable. This can happen due to data manipulation by ", "non-pdata.frame-aware functions (e.g., 'dplyr' on pdata.frame). \n Maybe re-create ", "data input as fresh pdata.frame after last data manipulation with other tools.") feedback(feedback.txt) } res } check.pdata.frame <- function(x) { # not exported, helper function # checks if a pdata.frame has appropriate properties # Like is.pdata.frame but with error output about ill-specification stopifnot(inherits(x, "pdata.frame")) stopifnot(has.index(x)) stopifnot(nrow(index(x)) == nrow(x)) NULL } pseries2pdataframe <- function(x, pdata.frame = TRUE, ...) { ## non-exported ## Transforms a pseries in a (p)data.frame with the indices as regular columns ## in positions 1, 2 and (if present) 3 (individual index, time index, group index). ## if pdataframe = TRUE -> return a pdata.frame, if FALSE -> return a data.frame ## ellipsis (dots) passed on to pdata.frame() if(!inherits(x, "pseries")) stop("input needs to be of class 'pseries'") indices <- attr(x, "index") class(indices) <- setdiff(class(indices), "pindex") vx <- remove_pseries_features(x) dfx <- cbind(indices, vx) dimnames(dfx)[[2L]] <- c(names(indices), deparse(substitute(x))) res <- if(pdata.frame == TRUE) { pdata.frame(dfx, index = names(indices), ...) } else { dfx } return(res) } pmerge <- function(x, y, ...) { ## non-exported ## Returns a data.frame, not a pdata.frame. ## pmerge is used to merge pseries or pdata.frames into a data.frame or ## to merge a pseries to a data.frame ## transf. if pseries or pdata.frame if(inherits(x, "pseries")) x <- pseries2pdataframe(x, pdata.frame = FALSE) if(inherits(y, "pseries")) y <- pseries2pdataframe(y, pdata.frame = FALSE) if(inherits(x, "pdata.frame")) x <- as.data.frame(x, keep.attributes = FALSE) if(inherits(y, "pdata.frame")) y <- as.data.frame(y, keep.attributes = FALSE) # input to merge() needs to be data.frames; not yet suitable for 3rd index (group variable) z <- merge(x, y, by.x = dimnames(x)[[2L]][1:2], by.y = dimnames(y)[[2L]][1:2], ...) return(z) } ## dplyr "compatibility"/awareness/warning, see https://github.com/ycroissant/plm/issues/46 # test in test_pdata.frame_compliant.R # # Approach: Avoid dplyr-dependency albeit registering methods for it, needs the # utils::globalVariables() statement to avoid a NOTE in R CMD check about # undefined global variable. # Shall CRAN ever increase the code checking strictness, the approach with a # Suggests-dependency is given commented below as well. utils::globalVariables("arrange") #' @rawNamespace if(getRversion() >= "3.6.0") {S3method(dplyr::arrange, pdata.frame)} arrange.pdata.frame <- function(.data, ..., .by_group = FALSE, .locale = NULL) { # function signature of dplyr:::arrange.data.frame idx <- index(.data) ag.data <- NextMethod() ag.idx <- arrange(idx, ..., .by_group = FALSE, .locale = NULL) # dispatches to arrange.pindex attr(ag.data, "index") <- ag.idx ag.data } #' @rawNamespace if(getRversion() >= "3.6.0") {S3method(dplyr::arrange, pindex)} arrange.pindex <- function(.data, ..., .by_group = .by_group, .locale = .locale) { NextMethod() } ### alternatives # arrange.pdata.frame <- function(.data, ..., .by_group = FALSE, .locale = NULL) { # ### this alternative would require dplyr to be at least a Suggests-dependency # stopifnot(requireNamespace("dplyr")) # idx <- index(.data) # ag.df <- dplyr::arrange(.data, ..., .by_group = FALSE, .locale = NULL) # ag.idx <- dplyr::arrange(idx, ..., .by_group = FALSE, .locale = NULL) # attr(ag.df, "index") <- ag.idx # ag.df # } # arrange.pdata.frame <- function(.data, ..., .by_group = FALSE, .locale = NULL) { # # this alternative just warns and executes dplyr's plain arrange destroying the index # wrn <- paste0("dplyr::arrange not safe on pdata.frames!\n", # "Before input to estimation and test functions of package plm, ", # "create a fresh pdata.frame from the dplyr-manipulated data to be safe") # warning(wrn) # NextMethod() # } plm/R/est_pi.R0000644000176200001440000003241014641057410012653 0ustar liggesusers #' Angrist and Newey's version of Chamberlain test for fixed effects #' #' Angrist and Newey's version of the Chamberlain test #' #' Angrist and Newey's test is based on the results of the artifactual #' regression of the within residuals on the covariates for all the #' periods. #' #' @aliases aneweytest #' @param formula a symbolic description for the model to be estimated, #' @param data a `data.frame`, #' @param subset see [lm()], #' @param na.action see [lm()], #' @param index the indexes, #' @param \dots further arguments. #' @return An object of class `"htest"`. #' @export #' @author Yves Croissant #' @references #' \insertRef{ANGR:NEWE:91}{plm} #' #' @seealso [piest()] for Chamberlain's test #' @keywords htest #' @examples #' #' data("RiceFarms", package = "plm") #' aneweytest(log(goutput) ~ log(seed) + log(totlabor) + log(size), RiceFarms, index = "id") #' aneweytest <- function(formula, data, subset, na.action, index = NULL, ...){ # NB: code fails for unbalanced data -> is Angrist and Newey's test only for balanced data? # unbalanced case is currently caught and a message is printed mf <- match.call() # compute the model.frame using plm with model = NA mf[[1L]] <- as.name("plm") mf$model <- NA data <- eval(mf, parent.frame()) # estimate the within model without instrument and extract the fixed # effects formula <- as.Formula(formula) mf$formula <- formula(formula, rhs = 1) index <- index(data) id <- index[[1L]] time <- index[[2L]] periods <- unique(time) pdim <- pdim(data) T <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N Ti <- pdim$Tint$Ti balanced <- pdim$balanced if(!balanced) stop("'aneweytest' not implemented for unbalanced data") ht <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "effect", "model", "inst.method", "restrict.matrix", "restrict.rhs", "index"), names(ht), 0) ht <- ht[c(1L, m)] ht[[1L]] <- as.name("plm") ht$model <- "within" ht$effect <- "individual" ht <- eval(ht, parent.frame()) time.GRP <- collapse::GRP(time) .resid <- collapse::gsplit(resid(ht), time.GRP) # extract the covariates (no intercept), and isolate time-invariant covariates X <- model.matrix(data, model = "pooling", rhs = 1, lhs = 1)[ , -1, drop = FALSE] cst <- attr(model.matrix(data, model = "within", rhs = 1, lhs = 1), "constant") # get constant columns and remove the intercept if (length(cst) > 0L) cst <- cst[- match("(Intercept)", cst)] if (length(cst) > 0L){ vr <- colnames(X)[!(colnames(X) %in% cst)] Z <- X[ , cst, drop = FALSE] X <- X[ , vr, drop = FALSE] Kz <- ncol(Z) namesZ <- colnames(Z) } else { Z <- NULL Kz <- 0 namesZ <- NULL } Kx <- ncol(X) # time-demean and split by period: attr(X, "index") <- index X <- Within(X, effect ="time") namesX <- colnames(X) X <- collapse::rsplit(X, time.GRP, use.names = FALSE) # put column names for split matrices in X: for (i in seq_along(periods)){ colnames(X[[i]]) <- paste(namesX, periods[i], sep = ".") } if (!is.null(Z)){ Z <- Z[time == periods[1], , drop = FALSE] Z <- t(t(Z) - .colMeans(Z, nrow(Z), ncol(Z))) # TODO: could use Within() framework } XX <- cbind(Reduce("cbind", X), Z) # compute the unconstrained estimates # NA-freeness guaranteed by model frame construction, so can use lm.fit # (non-collinearity is not catered for but code errors anywayif collinearity # is present a bit later) # was: LMS <- lapply(.resid, function(x) lm(x ~ XX - 1)) LMS <- lapply(.resid, function(x) lm.fit(XX, x)) YTOT <- vapply(.resid, function(x) crossprod(x), FUN.VALUE = 0.0, USE.NAMES = FALSE) DEV <- vapply(LMS, function(x) crossprod(x$residuals), FUN.VALUE = 0.0, USE.NAMES = FALSE) stat <- c("chisq" = sum(1 - DEV / YTOT) * (n - ncol(XX))) df <- c("df" = (T ^ 2 - T - 1) * Kx) aneweytest <- structure(list(statistic = stat, parameter = df, method = "Angrist and Newey's test of within model", p.value = pchisq(stat, df = df, lower.tail = FALSE), alternative = "within specification does not apply", data.name = paste(deparse(formula))), class = "htest") aneweytest } #' Chamberlain estimator and test for fixed effects #' #' General estimator useful for testing the within specification #' #' The Chamberlain method consists in using the covariates of all the #' periods as regressors. It allows to test the within specification. #' #' @aliases piest #' @param formula a symbolic description for the model to be estimated, #' @param object,x an object of class `"piest"` and of class `"summary.piest"` #' for the print method of summary for piest objects, #' @param data a `data.frame`, #' @param subset see [lm()], #' @param na.action see [lm()], #' @param index the indexes, #' @param robust logical, if `FALSE`, the error is assumed to be spherical, #' if `TRUE`, a robust estimation of the covariance matrix is computed, #' @param \dots further arguments. #' @return An object of class `"piest"`. #' @export #' @author Yves Croissant #' @references #' #' \insertRef{CHAM:82}{plm} #' #' @seealso [aneweytest()] #' @keywords htest #' @examples #' #' data("RiceFarms", package = "plm") #' pirice <- piest(log(goutput) ~ log(seed) + log(totlabor) + log(size), RiceFarms, index = "id") #' summary(pirice) #' piest <- function(formula, data, subset, na.action, index = NULL, robust = TRUE, ...){ # NB: code fails for unbalanced data -> is Chamberlain's test only for balanced data? # unbalanced case is currently caught and a message is printed cl <- match.call(expand.dots = TRUE) mf <- match.call() # compute the model.frame using plm with model = NA mf[[1L]] <- as.name("plm") mf$model <- NA data <- eval(mf, parent.frame()) # estimate the within model without instrument and extract the fixed # effects formula <- as.Formula(formula) mf$formula <- formula(formula, rhs = 1) index <- index(data) id <- index[[1L]] time <- index[[2L]] pdim <- pdim(data) balanced <- pdim$balanced T <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N Ti <- pdim$Tint$Ti if(!balanced) stop("'piest' not implemented for unbalanced data") # extract the response, time-demean and split by period y <- pmodel.response(data, model = "pooling", effect = "individual") Y <- Within(y, "time") time.GRP <- collapse::GRP(time) Y <- collapse::gsplit(Y, time.GRP) # extract the covariates, and isolate time-invariant covariates X <- model.matrix(data, model = "pooling", rhs = 1, lhs = 1)[ , -1, drop = FALSE] cst <- attr(model.matrix(data, model = "within", rhs = 1, lhs = 1), "constant") # get constant columns and remove the intercept if (length(cst) > 0L) cst <- cst[- match("(Intercept)", cst)] if (length(cst) > 0L){ vr <- colnames(X)[!(colnames(X) %in% cst)] Z <- X[ , cst, drop = FALSE] X <- X[ , vr, drop = FALSE] Kz <- ncol(Z) namesZ <- colnames(Z) } else { Z <- NULL Kz <- 0 namesZ <- NULL } Kx <- ncol(X) namesX <- colnames(X) # time-demean X and split by period: attr(X, "index") <- index X <- Within(X, effect ="time") periods <- unique(time) X <- collapse::rsplit(X, time.GRP, use.names = FALSE) # put column names for split matrices in X: for (i in seq_along(periods)){ colnames(X[[i]]) <- paste(namesX, periods[i], sep = ".") } if (!is.null(Z)){ Z <- Z[time == periods[1L], , drop = FALSE] Z <- t(t(Z) - .colMeans(Z, nrow(Z), ncol(Z))) # TODO: can use Within() framework } XX <- cbind(Reduce("cbind", X), Z) # compute the unconstrained estimates # NA-freeness guaranteed by model frame construction, so can use lm.fit # (non-collinearity is not cared for but code errors if collinearity is # present anyway a bit later) # was: LMS <- lapply(Y, function(x) lm(x ~ XX - 1)) LMS <- lapply(Y, function(x) lm.fit(XX, x)) # compute the empirical covariance of the covariates Sxxm1 <- solve(crossprod(XX) / n) # compute the residuals matrix .resid <- sapply(LMS, resid) # extract the pi vector of unconstrained estimates pi <- unlist(lapply(LMS, coef), use.names = FALSE) if(robust) { Omega <- lapply(seq_len(n), function(i) tcrossprod(.resid[i, ]) %x% (Sxxm1 %*% tcrossprod(XX[i, ]) %*% Sxxm1)) Omega <- Reduce("+", Omega) / n } else { Omega <- (crossprod(.resid) / n) %x% Sxxm1 } # construct the matrix of linear restrictions R | R x theta = pi R <- matrix(0, T * (T * Kx + Kz), (T + 1) * Kx + Kz) for (i in seq_len(Kx)){ R[ ((1:T) - 1) * (Kx * T + Kz) + (Kx * (1:T - 1)) + i , i] <- 1 } if (Kz > 0){ for (i in seq_len(Kz)){ R[ (Kx * T) + (1:T - 1) * (Kx * T + Kz) + i, Kx + i] <- 1 } } for (i in seq_len(Kx * T)){ R[((1:T) - 1) * (Kx * T + Kz) + i , Kx + Kz + i] <- 1 } solve_Omega <- solve(Omega) A <- solve(t(R) %*% solve_Omega %*% R) .coef <- as.numeric(A %*% t(R) %*% solve_Omega %*% as.numeric(pi)) # .coef <- as.numeric(solve(t(R) %*% R) %*% t(R) %*% as.numeric(pi)) namescoef <- if(Kz > 0) c(namesX, namesZ, colnames(XX)[- c(ncol(XX) - 0:(Kz-1))]) else c(namesX, namesZ, colnames(XX)) names(.coef) <- rownames(A) <- colnames(A) <- namescoef resb <- as.numeric(R %*% .coef) - as.numeric(pi) piconst <- matrix(R %*% .coef, ncol = T) OOmega <- Omega ## TODO: OOmega is never used .resid <- matrix(unlist(Y, use.names = FALSE), ncol = length(Y)) - XX %*% piconst if(TRUE){ ## TODO: this is always TRUE...! if(robust) { ## and Omega is calc. again, with a ## new .resid input but with same lapply-construct Omega <- lapply(seq_len(n), function(i) tcrossprod(.resid[i, ]) %x% (Sxxm1 %*% tcrossprod(XX[i, ]) %*% Sxxm1)) Omega <- Reduce("+", Omega) / n } else { Omega <- (crossprod(.resid) / n) %x% Sxxm1 } } A <- solve(t(R) %*% solve(Omega) %*% R) stat <- c("chisq" = n * resb %*% solve(Omega) %*% resb) df <- c("df" = Kx * (T ^ 2 - T - 1)) ## TODO: df is overwritten in next line...?! df <- c("df" = length(pi) - length(.coef)) pitest <- list(statistic = stat, parameter = df, method = "Chamberlain's pi test", p.value = pchisq(stat, df = df, lower.tail = FALSE), alternative = "within specification does not apply", data.name = paste(deparse(formula)) ) structure(list(coefficients = .coef, pi = pi, daub = resb, vcov = A / n, formula = formula, R = R, model = data, pitest = structure(pitest, class = "htest"), Omega = Omega, moments = resb, call = cl), class = c("piest", "panelmodel")) } #' @rdname piest #' @export print.piest <- function(x, ...) print(x$pitest, ...) #' @rdname piest #' @export summary.piest <- function(object,...){ # construct the table of coefficients std.err <- sqrt(diag(vcov(object))) b <- coefficients(object) z <- b / std.err p <- 2 * pnorm(abs(z), lower.tail = FALSE) object$coefficients <- cbind("Estimate" = b, "Std. Error" = std.err, "z-value" = z, "Pr(>|z|)" = p) class(object) <- c("summary.piest", "piest", "panelmodel") object } #' @rdname piest #' @param digits number of digits for printed output, #' @param width the maximum length of the lines in the printed output, #' @export print.summary.piest <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ...){ if(is.null(subset)) printCoefmat(coef(x), digits = digits, ...) else printCoefmat(coef(x)[subset, , drop = FALSE], digits = digits, ...) print(x$pitest, ...) invisible(x) } plm/R/groupGenerics_pseries.R0000644000176200001440000001013514340404505015733 0ustar liggesusers## groupGenerics for operations on pseries ## see ?groupGeneric ## see tests/test_groupGenerics_pseries.R for examples ## ## implemented wrappers for groups Ops, Math, Complex ## ## group generic for Summary (all, any, sum, prod, min, max, range) not needed ## as functions in this group do not change the data type ## ## groupGenerics need to be registered in NAMESPACE ## ## groupGenerics are used to allow automatic propagation to higher/lower data type ## when operations are performed on pseries, ## e.g., class c("pseries", "integer") -> c("pseries", "numeric") when a function ## takes an integer as input and outputs a numeric. Without the group generics, ## the class of the results would stay as c("pseries", "integer") while the values ## themselves are numerics. The associated test file demonstrates the behaviour, ## see tests/test_groupGenerics_pseries.R ## helper functions: remove_pseries_features and add_pseries_features remove_pseries_features <- function(x) { # debug: # if (!is.pseries(x)) warning("removing pseries features now but object was not a proper pseries before") attr(x, "index") <- NULL # unclass is simpler and faster than previously (up to and incl. rev. 1307) used # combination of check_propagation_correct_class() and class() <- setdiff(class(<.>), "pseries") # unclass handles propagation and keeps names but coerces factor to integer x <- if(!is.factor(x)) unclass(x) else { class(x) <- setdiff(class(x), "pseries"); x } x } add_pseries_features <- function(x, index) { # debug: # if (is.null(index)) warning("'index' is null") attr(x, "index") <- index class(x) <- unique(c("pseries", class(x))) return(x) } #' @export Ops.pseries <- function(e1, e2) { # print("Ops.pseries executed!") # debug output miss_e2 <- missing(e2) e1_pseries <- e2_pseries <- FALSE # either one or both could be pseries if(inherits(e1, "pseries")) { e1_pseries <- TRUE index_e1 <- attr(e1, "index") e1 <- remove_pseries_features(e1) } if(!miss_e2 && inherits(e2, "pseries")) { e2_pseries <- TRUE index_e2 <- attr(e2, "index") e2 <- remove_pseries_features(e2) } res <- if(!miss_e2) get(.Generic)(e1, e2) else get(.Generic)(e1) # result could be, e.g., matrix. So check if adding back pseries features # makes sense (e.g., do not create something of class c("pseries", "matrix")). # Need is.atomic because is.vector is too strict, however need to sort out # some other data types add_back_pseries <- if(is.atomic(res) && !is.matrix(res) && !is.pairlist(res)) TRUE else FALSE if(add_back_pseries) { if(miss_e2 && e1_pseries) relevant_index <- index_e1 if( e1_pseries && !e2_pseries) relevant_index <- index_e1 if(!e1_pseries && e2_pseries) relevant_index <- index_e2 if( e1_pseries && e2_pseries) { # decide on index for result: # if objects vary in length: shorter object is recycled by R # -> must take index of non-recycled object (= longer pseries) # # Also, base R uses the names of the first operand -> additional justification # to assign index_e1 in case of same number of rows relevant_index <- if(nrow(index_e1) >= nrow(index_e2)) index_e1 else index_e2 # do not warn anymore (since rev. 1181) # if ((nrow(index_e1) == nrow(index_e2)) && !isTRUE(all.equal(index_e1, index_e2))) # warning("indexes of pseries have same length but not same content: result was assigned first operand's index") } res <- add_pseries_features(res, relevant_index) } return(res) } #' @export Math.pseries <- function(x, ...) { # print("Math.pseries executed!") # debug output index <- attr(x, "index") x <- remove_pseries_features(x) x <- get(.Generic)(x, ...) x <- add_pseries_features(x, index) return(x) } #' @export Complex.pseries <- function(z) { # print("Complex.pseries executed!") # debug output index <- attr(z, "index") z <- remove_pseries_features(z) z <- get(.Generic)(z) z <- add_pseries_features(z, index) return(z) } plm/R/experimental.R0000644000176200001440000001045214240015534014063 0ustar liggesusersresiduals_overall_exp.plm <- function(x, ...) { #### experimental, non-exported function # residuals_overall.plm: gives the residuals of the "overall"/outer model for all types of plm models. # In the future, this could be integrated with residuals.plm by some argument, e.g., overall = FALSE (default). # see also test file tests/test_residuals_overall_fitted_exp.R # no na.action eval yet model <- describe(x, "model") if (model == "ht") stop("model \"ht\" not (yet?) supported") # for all effects of within models: residuals of (quasi-)demeaned (inner) model # are also the residuals of the "overall" model if (model == "random") { # get untransformed data to calculate overall residuals X <- model.matrix(x, model = "pooling") y <- pmodel.response(x, model = "pooling") # take care of any aliased coefficients: # they are not in x$coefficients but assoc. variables are still present in model.matrix if (any(x$aliased, na.rm = TRUE)) { # na.rm = TRUE because currently, RE tw unbalanced models set aliased differently X <- X[ , !x$aliased, drop = FALSE] } est <- as.numeric(tcrossprod(coef(x), X)) res <- y - est names(res) <- rownames(X) # make residuals a pseries res <- structure(res, index = index(x), class = c("pseries", class(res))) } else { # all plm models except random (and also except ht) res <- residuals(x) } return(res) } residuals_overall_e_exp <- function(object) { ### experimental non-exported function ## residuals of "overall" RE model minus random effects (=e_it) ## e.g.: two-way model: residual_overall_it = random_component_individual_i + random_component_time_t + e_it model <- describe(object, "model") if (model != "random") stop("only for random effect models") obj.eff <- describe(object, "effect") res_ov <- residuals_overall_exp.plm(object) if (obj.eff == "twoways") { res_ov_e <- res_ov - ranef(object, "individual")[index(object, "id")] - ranef(object, "time")[index(object, "time")] } else { res_ov_e <- res_ov - ranef(object)[index(object, if(obj.eff == "individual") "id" else "time")] } names(res_ov_e) <- names(res_ov) return(res_ov_e) } fitted_exp.plm <- function(x, ...) { #### experimental, non-exported function # fitted_exp.plm: gives the fitted values of all types of plm models by subtracting the overall # residuals from the untransformed response variable; does not have # a model argument so it is not as versatile as 'fitted.plm' below. # see also test file tests/test_residuals_overall_fitted_exp.R model <- describe(x, "model") res <- residuals_overall_exp.plm(x) # For "between" and "fd" models, the number of fitted values is not equal to the # number of original observations. Thus, model.frame cannot be used but rather # pmodel.response because it has the right length. However, pmodel.response # shall not be used for the other models because we want the untransformed data. y <- if (model %in% c("between", "fd")) pmodel.response(x) else model.frame(x)[ , 1L] return(y - res) } # check_propagation_correct_class: helper function # Function checks if the class and storage mode (type) of an object match # and corrects its class attribute if not # # A mismatch can occur if a pseries of lower class and type logical or integer # are propagated to higher type by an arithmetic operation as R's arithmetic # operations do not change the first value of class attribute for # c("pseries", "logical/integer"). However, using groupGenerics as wrapper around # pseries objects, this does not happen anymore. # E.g., # x <- c(1L, 2L, 3L) # x + 1.5 # results in class propagation from class "integer" to "numeric" # but not if x is of class c("myclass", "integer") check_propagation_correct_class <- function(x) { # x: a pseries object (usually) if (any((pos <- inherits(x, c("logical" ,"integer", "numeric"), which = TRUE)) > 0)) { pos <- pos[pos > 0] # non-matches in inherits(..., which = TRUE) results in 0 switch(typeof(x), "double" = { attr(x, "class")[pos] <- "numeric" }, "integer" = { attr(x, "class")[pos] <- "integer" }, "complex" = { attr(x, "class")[pos] <- "complex" } ) } return(x) } plm/R/tool_ranfixef.R0000644000176200001440000006746214641057410014246 0ustar liggesusers## Compute the individual and/or time effects for panel model. plm ## methods for the fixef and ranef generics of the nlme ## package. print, summary and print.summary methods are provided for ## fixef objects. ## The within_intercept.plm function computes the overall intercept of ## within fitted models. #' @title #' Extract the Fixed Effects #' #' @description #' Function to extract the fixed effects from a `plm` object and #' associated summary method. #' #' @details #' Function `fixef` calculates the fixed effects and returns an object #' of class `c("fixef", "numeric")`. By setting the `type` argument, #' the fixed effects may be returned in levels (`"level"`), as #' deviations from the first value of the index (`"dfirst"`), or as #' deviations from the overall mean (`"dmean"`). If the argument #' `vcov` was specified, the standard errors (stored as attribute "se" #' in the return value) are the respective robust standard errors. #' For two-way fixed-effect models, argument `effect` controls which #' of the fixed effects are to be extracted: `"individual"`, `"time"`, or #' the sum of individual and time effects (`"twoways"`). #' NB: See **Examples** for how the sum of effects can be split in an individual #' and a time component. #' For one-way models, the effects of the model are extracted and the #' argument `effect` is disrespected. #' #' The associated `summary` method returns an extended object of class #' `c("summary.fixef", "matrix")` with more information (see sections #' **Value** and **Examples**). #' #' References with formulae (except for the two-ways unbalanced case) #' are, e.g., \insertCite{GREE:12;textual}{plm}, Ch. 11.4.4, p. 364, #' formulae (11-25); \insertCite{WOOL:10;textual}{plm}, Ch. 10.5.3, #' pp. 308-309, formula (10.58). #' @name fixef.plm #' @aliases fixef #' @param x,object an object of class `"plm"`, an object of class #' `"fixef"` for the `print` and the `summary` method, #' @param effect one of `"individual"`, `"time"`, or `"twoways"`, only relevant in #' case of two--ways effects models (where it defaults to `"individual"`), #' @param vcov a variance--covariance matrix furnished by the user or #' a function to calculate one (see **Examples**), #' @param type one of `"level"`, `"dfirst"`, or `"dmean"`, #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param \dots further arguments. #' @return For function `fixef`, an object of class `c("fixef", "numeric")` #' is returned: It is a numeric vector containing #' the fixed effects with attribute `se` which contains the #' standard errors. There are two further attributes: attribute #' `type` contains the chosen type (the value of argument `type` #' as a character); attribute `df.residual` holds the residual #' degrees of freedom (integer) from the fixed effects model (plm #' object) on which `fixef` was run. For the two-way unbalanced case, only #' attribute `type` is added. #' #' For function `summary.fixef`, an object of class #' `c("summary.fixef", "matrix")` is returned: It is a matrix with four #' columns in this order: the estimated fixed effects, their standard #' errors and associated t--values and p--values. #' For the two-ways unbalanced case, the matrix contains only the estimates. #' The type of the fixed effects and the standard errors in the #' summary.fixef object correspond to was requested in the `fixef` #' function by arguments `type` and `vcov`, respectively. #' #' @author Yves Croissant #' @seealso [within_intercept()] for the overall intercept of fixed #' effect models along its standard error, [plm()] for plm objects #' and within models (= fixed effects models) in general. See #' [ranef()] to extract the random effects from a random effects #' model. #' @references \insertAllCited{} #' @keywords regression #' @examples #' #' data("Grunfeld", package = "plm") #' gi <- plm(inv ~ value + capital, data = Grunfeld, model = "within") #' fixef(gi) #' summary(fixef(gi)) #' summary(fixef(gi))[ , c("Estimate", "Pr(>|t|)")] # only estimates and p-values #' #' # relationship of type = "dmean" and "level" and overall intercept #' fx_level <- fixef(gi, type = "level") #' fx_dmean <- fixef(gi, type = "dmean") #' overallint <- within_intercept(gi) #' all.equal(overallint + fx_dmean, fx_level, check.attributes = FALSE) # TRUE #' #' # extract time effects in a twoways effects model #' gi_tw <- plm(inv ~ value + capital, data = Grunfeld, #' model = "within", effect = "twoways") #' fixef(gi_tw, effect = "time") #' #' # with supplied variance-covariance matrix as matrix, function, #' # and function with additional arguments #' fx_level_robust1 <- fixef(gi, vcov = vcovHC(gi)) #' fx_level_robust2 <- fixef(gi, vcov = vcovHC) #' fx_level_robust3 <- fixef(gi, vcov = function(x) vcovHC(x, method = "white2")) #' summary(fx_level_robust1) # gives fixed effects, robust SEs, t- and p-values #' #' # calc. fitted values of oneway within model: #' fixefs <- fixef(gi)[index(gi, which = "id")] #' fitted_by_hand <- fixefs + gi$coefficients["value"] * gi$model$value + #' gi$coefficients["capital"] * gi$model$capital #' #' # calc. fittes values of twoway unbalanced within model via effects: #' gtw_u <- plm(inv ~ value + capital, data = Grunfeld[-200, ], effect = "twoways") #' yhat <- as.numeric(gtw_u$model[ , 1] - gtw_u$residuals) # reference #' pred_beta <- as.numeric(tcrossprod(coef(gtw_u), as.matrix(gtw_u$model[ , -1]))) #' pred_effs <- as.numeric(fixef(gtw_u, "twoways")) # sum of ind and time effects #' all.equal(pred_effs + pred_beta, yhat) # TRUE #' #' # Splits of summed up individual and time effects: #' # use one "level" and one "dfirst" #' ii <- index(gtw_u)[[1L]]; it <- index(gtw_u)[[2L]] #' eff_id_dfirst <- c(0, as.numeric(fixef(gtw_u, "individual", "dfirst")))[ii] #' eff_ti_dfirst <- c(0, as.numeric(fixef(gtw_u, "time", "dfirst")))[it] #' eff_id_level <- as.numeric(fixef(gtw_u, "individual"))[ii] #' eff_ti_level <- as.numeric(fixef(gtw_u, "time"))[it] #' #' all.equal(pred_effs, eff_id_level + eff_ti_dfirst) # TRUE #' all.equal(pred_effs, eff_id_dfirst + eff_ti_level) # TRUE #' #' @importFrom nlme fixef #' @export fixef NULL #' @rdname fixef.plm #' @importFrom stats weighted.mean #' @export fixef.plm <- function(object, effect = NULL, type = c("level", "dfirst", "dmean"), vcov = NULL, ...){ model.effect <- describe(object, "effect") if(is.null(effect)){ # default for twoway model to individual effect effect <- switch(model.effect, "individual" = "individual", "time" = "time", "twoways" = "individual") } else{ if(model.effect != "twoways" && model.effect != effect) stop("wrong effect argument") if(!effect %in% c("individual", "time", "twoways")) stop("wrong effect argument") } type <- match.arg(type) if(!is.null(object$call)){ if(describe(object, "model") != "within") stop("fixef is relevant only for within models") } formula <- formula(object) data <- model.frame(object) pdim <- pdim(object) # the between model may contain time independent variables, the # within model doesn't. So select the relevant elements using nw # (names of the within variables) nw <- names(coef(object)) # For procedure to get the individual/time effects by multiplying the within # estimates with the between-ed data, see, e.g.: # Wooldridge (2010), Econometric Analysis of Cross Section and Panel Data, 2nd ed., # Ch. 10.5.3, pp. 308-309, formula (10.58) # Greene (2012), Econometric Analysis, # Ch. 11.4.4, p. 364, formulae (11-25) # # NB: These textbook formulae do not give the correct results in the two-ways unbalanced case, # all other cases (twoways/balanced; oneway(ind/time)/balanced/unbalanced) are correct # for these formulae. if(model.effect != "twoways") { Xb <- model.matrix(data, rhs = 1, model = "between", effect = effect) yb <- pmodel.response(data, model = "between", effect = effect) fixef <- yb - as.vector(crossprod(t(Xb[ , nw, drop = FALSE]), coef(object))) # use robust vcov if supplied if (! is.null(vcov)) { if (is.matrix(vcov)) vcov <- vcov[nw, nw] if (is.function(vcov)) vcov <- vcov(object)[nw, nw] } else { vcov <- vcov(object)[nw, nw] } nother <- switch(effect, "individual" = pdim$Tint$Ti, "time" = pdim$Tint$nt) s2 <- deviance(object) / df.residual(object) sefixef <- if (type != "dfirst") { sqrt(s2 / nother + apply(Xb[, nw, drop = FALSE], 1, function(x) t(x) %*% vcov %*% x) ) } else { Xb <- t(t(Xb[-1L, , drop = FALSE]) - Xb[1L, ]) sqrt(s2 * (1 / nother[-1L] + 1 / nother[1L]) + apply(Xb[, nw, drop = FALSE], 1, function(x) t(x) %*% vcov %*% x) ) } res <- switch(type, "level" = fixef, "dfirst" = fixef[seq_along(fixef)[-1L]] - fixef[1L], "dmean" = (fixef - weighted.mean(fixef, w = nother))) res <- structure(res, se = sefixef, class = c("fixef", "numeric"), type = type, df.residual = df.residual(object)) } else { ## case model.effect == "twoways" ## * two-way balanced/unbalanced model for all effects ## TODO: SEs are not computed in this case yet ## (can be computed for effect = "individual" and "time"; also for "twoways"?) beta.data <- as.numeric(tcrossprod(coef(object), model.matrix(object, model = "pooling")[ , nw, drop = FALSE])) yhat <- object$model[ , 1L] - object$residuals tw.fixef.lvl <- yhat - beta.data # sum of both effects in levels idx <- switch(effect, "individual" = 1L, "time" = 2L, "twoways" = NA_integer_) # needed for weighted.mean below -> leads to no weights indexl <- unclass(index(object)) # unclass to list for speed if(effect %in% c("individual", "time")) { other.eff <- switch(effect, "individual" = "time", "time" = "individual") other.idx <- switch(effect, "individual" = 2L, "time" = 1L) Xb <- model.matrix(data, rhs = 1, model = "between", effect = other.eff) yb <- pmodel.response(data, model = "between", effect = other.eff) other.fixef.lvl <- yb - as.vector(crossprod(t(Xb[ , nw, drop = FALSE]), coef(object))) ## other dfirst other.fixef.dfirst <- other.fixef.lvl - other.fixef.lvl[1L] tw.fixef.lvl <- tw.fixef.lvl - other.fixef.dfirst[indexl[[other.idx]]] tw.fixef.lvl <- tw.fixef.lvl[!collapse::fduplicated(indexl[[idx]], all = FALSE)] names(tw.fixef.lvl) <- pdim[["panel.names"]][[idx]] } else { # effect = "twoways": everything already computed, just set names names(tw.fixef.lvl) <- paste0(pdim[["panel.names"]][[1L]][indexl[[1L]]], "-", pdim[["panel.names"]][[2L]][indexl[[2L]]]) } res <- switch(type, "level" = tw.fixef.lvl, "dfirst" = tw.fixef.lvl[seq_along(tw.fixef.lvl)[-1L]] - tw.fixef.lvl[1L], "dmean" = { if(pdim$balanced || effect == "twoways") { tw.fixef.lvl - mean(tw.fixef.lvl) } else { tw.fixef.lvl - weighted.mean(tw.fixef.lvl, w = pdim$Tint[[idx]]) }}) res <- structure(res, se = NULL, class = c("fixef", "numeric"), type = type, df.residual = NULL) } res } #' @rdname fixef.plm #' @export print.fixef <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ x.orig <- x # prevent attributes from being printed attr(x, "se") <- attr(x, "type") <- attr(x, "class") <- attr(x, "df.residual") <- attr(x, "index") <- NULL print.default(x, digits, width, ...) invisible(x.orig) } #' @rdname fixef.plm #' @export summary.fixef <- function(object, ...) { # for 2-way unbalanced, there are currently no further attributes -> skip construction res <- if(!is.null(attr(object, "se"))) { se <- attr(object, "se") df.res <- attr(object, "df.residual") tvalue <- (object) / se # was: res <- cbind(object, se, zvalue, (1 - pnorm(abs(zvalue))) * 2) res <- cbind(object, se, tvalue, (2 * pt(abs(tvalue), df = df.res, lower.tail = FALSE))) # see for distribution and degrees of freedom # Greene (2003, 5th ed.), p. 288 (formula 13-7) # = Greene (2012, 7th ed.), pp. 361-362 (formula 11-19) colnames(res) <- c("Estimate", "Std. Error", "t-value", "Pr(>|t|)") class(res) <- c("summary.fixef", "matrix") attr(res, "type") <- attr(object, "type") attr(res, "df.residual") <- df.res res } else { matrix(object, dimnames = list(names(object), "Estimate")) } res } #' @rdname fixef.plm #' @export print.summary.fixef <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ printCoefmat(x, digits = digits) invisible(x) } #' @rdname fixef.plm #' @export fixef.pggls <- fixef.plm #' Extract the Random Effects #' #' Function to calculate the random effects from a `plm` object #' (random effects model). #' #' Function `ranef` calculates the random effects of a fitted random #' effects model. For one-way models, the effects of the estimated #' model are extracted (either individual or time effects). For #' two-way models, extracting the individual effects is the default #' (both, argument `effect = NULL` and `effect = "individual"` will #' give individual effects). Time effects can be extracted by setting #' `effect = "time"`. #' #' Not all random effect model types are supported (yet?). #' #' @param object an object of class `"plm"`, needs to be a fitted #' random effects model, #' @param effect `NULL`, `"individual"`, or `"time"`, the effects to #' be extracted, see **Details**, #' @param \dots further arguments (currently not used). #' @return A named numeric with the random effects per dimension #' (individual or time). #' @name ranef.plm #' @aliases ranef #' @importFrom nlme ranef #' @export ranef #' @author Kevin Tappe #' @seealso [fixef()] to extract the fixed effects from a fixed #' effects model (within model). #' @keywords regression #' @examples #' #' data("Grunfeld", package = "plm") #' m1 <- plm(inv ~ value + capital, data = Grunfeld, model = "random") #' ranef(m1) # individual random effects #' #' # compare to random effects by ML estimation via lme from package nlme #' library(nlme) #' m2 <- lme(inv ~ value + capital, random = ~1|firm, data = Grunfeld) #' cbind("plm" = ranef(m1), "lme" = unname(ranef(m2))) #' #' # two-ways RE model, calculate individual and time random effects #' data("Cigar", package = "plm") #' tw <- plm(sales ~ pop + price, data = Cigar, model = "random", effect = "twoways") #' ranef(tw) # individual random effects #' ranef(tw, effect = "time") # time random effects #' NULL #' @rdname ranef.plm #' @export ranef.plm <- function(object, effect = NULL, ...) { # TODO: # Check if the same procedure can be applied to # * unbalanced two-way case (for now: implemented the same way, but not entirely sure) # * random IV models # * nested random effect models model <- describe(object, "model") obj.effect <- describe(object, "effect") balanced <- is.pbalanced(object) if(model != "random") stop("only applicable to random effect models") # TODO: Are random effects for nested models and IV models calculated the same way? # Be defensive here and error for such models. if(obj.effect == "nested") stop("nested random effect models are not supported (yet?)") if(length(object$formula)[2L] >= 2L) stop("ranef: IV models not supported (yet?)") if(!is.null(effect) && !(effect %in% c("individual", "time"))) stop("argument 'effect' must be NULL, \"individual\", or \"time\"") if(obj.effect != "twoways" && !is.null(effect) && effect != obj.effect) stop(paste0("for one-way models, argument \"effect\" must be NULL or match the effect introduced in model estimation")) # default effect is the model's effect # for two-ways RE models: set default to effect = "individual" if(obj.effect == "twoways" && is.null(effect)) effect <- "individual" if(is.null(effect)) effect <- obj.effect erc <- ercomp(object) # extract theta, but depending on model/effect, it is adjusted/overwritten later theta <- unlist(erc["theta"], use.names = FALSE) # res <- object$residuals # gives residuals of quasi-demeaned model res <- residuals_overall_exp.plm(object) # but need RE residuals of overall model if(!inherits(res, "pseries")) { # just make sure we have a pseries for the following between() to work attr(res, "index") <- index(object$model) class(res) <- c("pseries", class(res)) } # mean_res <- Between(res, effect = effect) # has length == # observations mean_res <- between(res, effect = effect) # but need length == # individuals if(obj.effect == "twoways" && balanced) { theta <- switch(effect, "individual" = theta[1L], "time" = theta[2L]) } if(obj.effect == "twoways" && !balanced) { theta <- erc[["theta"]][[if(effect == "individual") "id" else "time"]] } if(!balanced) { # in the unbalanced cases, ercomp[["theta"]] is full length (# obs) # -> reduce to per id/time select <- switch(effect, "individual" = !collapse::fduplicated(index(object$model)[1L], all = FALSE), "time" = !collapse::fduplicated(index(object$model)[2L], all = FALSE)) theta <- theta[select] } # calculate random effects: # This formula works (at least) for: # balanced one-way (is symmetric for individual/time) # unbalanced one-way (symmetric) is also caught by this line as theta is reduced before # balanced two-way case (symmetric) raneffects <- (1 - (1 - theta)^2) * mean_res names(raneffects) <- names(mean_res) return(raneffects) } #' Overall Intercept for Within Models Along its Standard Error #' #' This function gives an overall intercept for within models and its #' accompanying standard error or a within model with the overall intercept #' #' The (somewhat artificial) intercept for within models (fixed #' effects models) was made popular by Stata of StataCorp #' \insertCite{@see @GOUL:13}{plm}, EViews of IHS, and gretl #' \insertCite{@see @GRETL:2021, p. 200-201, listing 23.1}{plm}, see for #' treatment in the literature, #' e.g., \insertCite{GREE:12;textual}{plm}, Ch. 11.4.4, p. 364. It can #' be considered an overall intercept in the within model framework #' and is the weighted mean of fixed effects (see **Examples** for the #' relationship). #' #' `within_intercept` estimates a new model which is #' computationally more demanding than just taking the weighted #' mean. However, with `within_intercept` one also gets the #' associated standard error and it is possible to get an overall #' intercept for two-way fixed effect models. #' #' Users can set argument `vcov` to a function to calculate a #' specific (robust) variance--covariance matrix and get the #' respective (robust) standard error for the overall intercept, #' e.g., the function [vcovHC()], see examples for #' usage. Note: The argument `vcov` must be a function, not a #' matrix, because the model to calculate the overall intercept for #' the within model is different from the within model itself. #' #' If argument `return.model = TRUE` is set, the full model object is returned, #' while in the default case only the intercept is returned. #' #' @aliases within_intercept #' @param object object of class `plm` which must be a within #' model (fixed effects model), #' @param vcov if not `NULL` (default), a function to calculate a #' user defined variance--covariance matrix (function for robust #' vcov), only used if `return.model = FALSE`, #' @param return.model a logical to indicate whether only the overall intercept #' (`FALSE` is default) or a full model object (`TRUE`) is to be returned, #' @param \dots further arguments (currently none). #' @return Depending on argument `return.model`: If `FALSE` (default), a named #' `numeric` of length one: The overall intercept for the estimated within model #' along attribute "se" which contains the standard error for the intercept. #' If `return.model = TRUE`, the full model object, a within model with the #' overall intercept (NB: the model identifies itself as a pooling model, e.g., #' in summary()). #' #' @export #' @author Kevin Tappe #' @seealso [fixef()] to extract the fixed effects of a within model. #' @references #' #' \insertAllCited{} #' #' @keywords attribute #' @examples #' data("Hedonic", package = "plm") #' mod_fe <- plm(mv ~ age + crim, data = Hedonic, index = "townid") #' overallint <- within_intercept(mod_fe) #' attr(overallint, "se") # standard error #' #' # overall intercept is the weighted mean of fixed effects in the #' # one-way case #' weighted.mean(fixef(mod_fe), pdim(mod_fe)$Tint$Ti) #' #' ### relationship of type="dmean", "level" and within_intercept #' ## one-way balanced case #' data("Grunfeld", package = "plm") #' gi <- plm(inv ~ value + capital, data = Grunfeld, model = "within") #' fx_level <- fixef(gi, type = "level") #' fx_dmean <- fixef(gi, type = "dmean") #' overallint <- within_intercept(gi) #' all.equal(overallint + fx_dmean, fx_level, check.attributes = FALSE) # TRUE #' ## two-ways unbalanced case #' gtw_u <- plm(inv ~ value + capital, data = Grunfeld[-200, ], effect = "twoways") #' int_tw_u <- within_intercept(gtw_u) #' fx_dmean_tw_i_u <- fixef(gtw_u, type = "dmean", effect = "individual")[index(gtw_u)[[1L]]] #' fx_dmean_tw_t_u <- fixef(gtw_u, type = "dmean", effect = "time")[index(gtw_u)[[2L]]] #' fx_level_tw_u <- as.numeric(fixef(gtw_u, "twoways", "level")) #' fx_level_tw_u2 <- int_tw_u + fx_dmean_tw_i_u + fx_dmean_tw_t_u #' all.equal(fx_level_tw_u, fx_level_tw_u2, check.attributes = FALSE) # TRUE #' #' ## overall intercept with robust standard error #' within_intercept(gi, vcov = function(x) vcovHC(x, method="arellano", type="HC0")) #' #' ## have a model returned #' mod_fe_int <- within_intercept(gi, return.model = TRUE) #' summary(mod_fe_int) #' # replicates Stata's robust standard errors exactly as model is with intercept #' summary(mod_fe_int, vcov = function(x) vcovHC(x, type = "sss")) # within_intercept <- function(object, ...) { UseMethod("within_intercept") } # Note: The name of the function (within_intercept) with an underscore does not # follow the regular naming scheme where one would expect a dot (within.intercept). # Due to the S3 class system, calling the function within.intercept would result in # a name clash as we have a function called 'within' and in this case the S3 # system interprets '.intercept' as a class called 'intercept'. # Note: return value of within_intercept is related to return values of fixef.plm, # see inst/tests/test_within_intercept.R #' @rdname within_intercept #' @export within_intercept.plm <- function(object, vcov = NULL, return.model = FALSE, ...) { if(!inherits(object, "plm")) stop("input 'object' needs to be a \"within\" model estimated by plm()") if(length(object$formula)[2L] >= 2L) stop("within_intercept: IV models not supported (yet?)") model <- describe(object, what = "model") effect <- describe(object, what = "effect") if(model != "within") stop("input 'object' needs to be a \"within\" model estimated by plm(..., model = \"within\", ...)") # vcov must be a function, because the auxiliary model estimated to get the # overall intercept next to its standard errors is different from # the FE model for which the intercept is estimated, e.g., dimensions # of vcov differ for FE and for auxiliary model. if(!is.null(vcov)) { if(is.matrix(vcov)) stop("for within_intercept, 'vcov' may not be of class 'matrix', it must be supplied as a function, e.g., vcov = function(x) vcovHC(x)") if(!is.function(vcov)) stop("for within_intercept, argument 'vcov' must be a function, e.g., vcov = function(x) vcovHC(x)") } index <- attr(object$model, which = "index") # Transformation to get the overall intercept is: # demean groupwise and add back grand mean of each variable, then run OLS mf <- model.frame(object) withinY <- pmodel.response(object) # returns the response specific to the 'effect' of the est. FE model object meanY <- mean(mf[ , 1L]) # mean of original data's response transY <- withinY + meanY withinM <- model.matrix(object) # returns the model.matrix specific to the 'effect' of the est. FE model object M <- model.matrix(mf, cstcovar.rm = "all") M <- M[ , colnames(M) %in% colnames(withinM), drop = FALSE] # just to be sure: should be same columns meansM <- colMeans(M) transM <- t(t(withinM) + meansM) # estimation by lm() # data <- data.frame(cbind(transY, transM)) # auxreg <- lm(data) # summary(auxreg) # estimation by plm() - to apply robust vcov function if supplied # NB: this changes variable names slightly (data.frame uses make.names to, e.g., get rid of parentheses in variable names) data <- pdata.frame(data.frame(cbind(index, transY, transM)), drop.index = TRUE) form <- as.formula(paste0(names(data)[1L], "~", paste(names(data)[-1L], collapse = "+"))) auxreg <- plm(form, data = data, model = "pooling") # degrees of freedom correction due to FE transformation for "normal" vcov [copied over from plm.fit] pdim <- pdim(index) card.fixef <- switch(effect, "individual" = pdim$nT$n, "time" = pdim$nT$T, "twoways" = pdim$nT$n + pdim$nT$T - 1L) df <- df.residual(auxreg) - card.fixef + 1L # just for within_intercept: here we need '+1' to correct for the intercept vcov_mat <- vcov(auxreg) vcov_mat <- vcov_mat * df.residual(auxreg) / df auxreg$vcov <- vcov_mat # plug in new vcov (adjusted "normal" vcov) in auxiliary model res <- if(!return.model) { #### return only intercept with SE as attribute ## in case of robust vcov, which is supplied by a function ## no adjustment to the robust vcov is necessary if(is.function(vcov)) vcov_mat <- vcov(auxreg) # robust vcov as supplied by a function intercept <- auxreg[["coefficients"]]["(Intercept)"] attr(intercept, which = "se") <- sqrt(vcov_mat[1L, 1L]) names(intercept) <- "(overall_intercept)" intercept } else { ### return model if(!is.null(vcov)) warning("argument 'vcov' is non-NULL and is ignored as 'return.model = TRUE' is set") auxreg } return(res) } # END within_intercept.plm plm/R/est_ggls.R0000644000176200001440000002751214642306446013215 0ustar liggesusers#' General FGLS Estimators #' #' General FGLS estimators for panel data (balanced or unbalanced) #' #' #' `pggls` is a function for the estimation of linear panel models by #' general feasible generalized least squares, either with or without #' fixed effects. General FGLS is based on a two-step estimation #' process: first a model is estimated by OLS (`model = "pooling"`), #' fixed effects (`model = "within"`) or first differences #' (`model = "fd"`), then its residuals are used to estimate an error #' covariance matrix for use in a feasible-GLS analysis. This framework allows #' the error covariance structure inside every group #' (if `effect = "individual"`, else symmetric) of observations to be fully #' unrestricted and is therefore robust against any type of intragroup #' heteroskedasticity and serial correlation. Conversely, this #' structure is assumed identical across groups and thus general FGLS #' estimation is inefficient under groupwise heteroskedasticity. Note #' also that this method requires estimation of \eqn{T(T+1)/2} #' variance parameters, thus efficiency requires N >> T #' (if `effect = "individual"`, else the opposite). #' #' If `model = "within"` (the default) then a FEGLS (fixed effects GLS, see #' Wooldridge, Ch. 10.5) is estimated; if `model = "fd"` a FDGLS #' (first-difference GLS). Setting `model = "pooling"` produces an unrestricted #' FGLS model (see ibid.) (`model = "random"` does the same, but using this value #' is deprecated and included only for retro--compatibility reasons). #' #' @aliases pggls #' @param formula a symbolic description of the model to be estimated, #' @param object,x an object of class `pggls`, #' @param data a `data.frame`, #' @param subset see [lm()], #' @param na.action see [lm()], #' @param effect the effects introduced in the model, one of #' `"individual"` or `"time"`, #' @param model one of `"within"`, `"pooling"`, `"fd"`, #' @param index the indexes, see [pdata.frame()], #' @param digits digits, #' @param width the maximum length of the lines in the print output, #' @param \dots further arguments. #' @return An object of class `c("pggls","panelmodel")` containing: #' \item{coefficients}{the vector of coefficients,} #' \item{residuals}{the vector of residuals,} #' \item{fitted.values}{the vector of fitted values,} #' \item{vcov}{the covariance matrix of the coefficients,} #' \item{df.residual}{degrees of freedom of the residuals,} #' \item{model}{a data.frame containing the variables used for the #' estimation,} #' \item{call}{the call,} #' \item{sigma}{the estimated intragroup (or cross-sectional, if #' `effect = "time"`) covariance of errors,} #' @export #' @importFrom bdsmatrix bdsmatrix #' @author Giovanni Millo #' @references #' #' \insertRef{IM:SEUN:SCHM:WOOL:99}{plm} #' #' \insertRef{KIEF:80}{plm} #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' @keywords regression #' @examples #' #' data("Produc", package = "plm") #' zz_wi <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "within") #' summary(zz_wi) #' #' zz_pool <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "pooling") #' summary(zz_pool) #' #' zz_fd <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, #' data = Produc, model = "fd") #' summary(zz_fd) #' #' pggls <- function(formula, data, subset, na.action, effect = c("individual", "time"), model = c("within", "pooling", "fd"), index = NULL, ...) { # check and match the arguments effect <- match.arg(effect) if(length(model) == 1L && model == "random") { msg.random <- paste0("pggls(): argument 'model = \"random\"' is deprecated, ", " changed to 'model = \"pooling\"' for estimation ", " of unrestricted FGLS model") warning(msg.random, call. = FALSE) model <- "pooling" } model.name <- match.arg(model) data.name <- paste(deparse(substitute(data))) cl <- match.call() plm.model <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "effect", "model", "index"), names(plm.model), 0) plm.model <- plm.model[c(1L, m)] plm.model[[1L]] <- as.name("plm") plm.model$model <- model.name plm.model <- eval(plm.model, parent.frame()) mf <- model.frame(plm.model) index <- attr(mf, "index") pdim <- pdim(plm.model) balanced <- pdim$balanced time.names <- pdim$panel.names$time.names id.names <- pdim$panel.names$id.names coef.names <- names(coef(plm.model)) K <- length(coef.names) ## TODO: for FD models respecting time-wise diffing: need dedicated procedure to construct index ## -> check if non-exported make.fdindex can do the trick if (model.name == "fd") { ## eliminate first year in indices nt <- pdim$Tint$nt[-1L] n <- pdim$nT$n Ti <- pdim$Tint$Ti - 1 if(any(drop <- Ti == 0L)) { # drop groups in Ti that are now empty (group had 1 observation before first-differencing, hence 0 after) # and adjust n and id.names due to same reason Ti <- Ti[!drop] n <- n - sum(drop) id.names <- id.names[!drop] } T <- pdim$nT$T - 1 N <- pdim$nT$N - pdim$Tint$nt[1L] time.names <- pdim$panel.names$time.names[-1L] groupi <- as.numeric(index[[1L]]) ## make vector =1 on first obs in each group, 0 elsewhere sel <- groupi - c(0, groupi[-length(groupi)]) sel[1L] <- 1 # the first must always be 1 ## eliminate first obs in time for each group index <- index[!sel, ] id <- droplevels(index[[1L]]) time <- factor(index[[2L]], levels = attr(index[ , 2L], "levels")[-1L]) } else { nt <- pdim$Tint$nt Ti <- pdim$Tint$Ti T <- pdim$nT$T n <- pdim$nT$n N <- pdim$nT$N id <- index[[1L]] time <- index[[2L]] } if (effect == "time") { cond <- time other <- id ncond <- T nother <- n cond.names <- time.names other.names <- id.names groupsdim <- nt } else { cond <- id other <- time ncond <- n nother <- T cond.names <- id.names other.names <- time.names groupsdim <- Ti } myord <- order(cond, other) X <- model.matrix(plm.model)[myord, , drop = FALSE] commonpars <- intersect(coef.names, colnames(X)) X <- X[ , commonpars, drop = FALSE] y <- pmodel.response(plm.model)[myord] resid <- lm.fit(X, y)$residuals cond <- cond[myord] other <- other[myord] drop1 <- FALSE if (drop1 && model.name %in% c("within", "fd")) { ## This 'if' parameterization is just for debugging. ## ## drop one time period (e.g., first as we do here) ## (see Wooldridge (2002) 10.5, eq. 10.61)/Wooldridge (2010),10.5.5, eq.10.61) ## this is needed according to Wooldridge (2002), p.277 / Wooldridge (2010), p. 312 ## but is not totally robust to unbalancedness, dummies etc. ## ## The function turns out to work irrespective of dropping ## one time period or not! Absolutely the same results! ## This is thx to solve.bdsmatrix() using a generalized ## inverse, which in this case where rank=T-1 is equivalent ## to discarding one year (N columns) ## -> as noted by Wooldridge ## numeric.t <- as.numeric(other) t1 <- which(numeric.t != min(numeric.t)) X0 <- X y0 <- y X <- X[t1, ] y <- y[t1] resid <- lm.fit(X, y)$residuals #resid[t1] cond <- cond[t1] other <- other[t1] nother <- nother - 1 other.names <- other.names[-1L] } if (balanced) { tres <- collapse::gsplit(resid, cond) tres <- lapply(tres, function(x) outer(x, x)) tres <- array(unlist(tres), dim = c(nother, nother, ncond)) # make array so rowMeans can be used subOmega <- rowMeans(tres, dims = 2L) # == apply(tres, 1:2, mean) but faster omega <- bdsmatrix::bdsmatrix(rep(nother, ncond), rep(subOmega, ncond)) } else { # pre-allocate tres <- array(NA_real_, dim = c(nother, nother, ncond), dimnames = list(other.names, other.names, cond.names)) # split data by cond cond.GRP <- collapse::GRP(cond) resid.list <- collapse::gsplit(resid, cond.GRP) other.list <- collapse::gsplit(other, cond.GRP) for (i in seq_len(ncond)) { ut <- resid.list[[i]] names(ut) <- other.list[[i]] tres[names(ut), names(ut), i] <- outer(ut, ut) } subOmega <- rowMeans(tres, dims = 2L, na.rm = TRUE) # == apply(tres, 1:2, mean, na.rm = TRUE) but faster list.cov.blocks <- sapply(other.list, function(i) subOmega[i, i], USE.NAMES = FALSE, simplify = FALSE) omega <- bdsmatrix::bdsmatrix(groupsdim, unlist(list.cov.blocks, use.names = FALSE)) } A <- crossprod(X, solve(omega, X)) B <- crossprod(X, solve(omega, y)) vcov <- solve(A) coef <- as.numeric(solve(A, B)) if (drop1 && model == "within") { ## This 'if' parameterization is just for debugging. X <- X0 y <- y0 } residuals <- y - as.numeric(tcrossprod(coef, X)) df.residual <- nrow(X) - ncol(X) fitted.values <- y - residuals names(coef) <- rownames(vcov) <- colnames(vcov) <- coef.names pmodel <- list(model.name = model.name, effect.name = effect) fullGLS <- list(coefficients = coef, residuals = residuals, fitted.values = fitted.values, vcov = vcov, df.residual = df.residual, model = mf, sigma = subOmega, call = cl, formula = plm.model$formula) fullGLS <- structure(fullGLS, pdim = pdim, pmodel = pmodel) class(fullGLS) <- c("pggls", "panelmodel") fullGLS } #' @rdname pggls #' @export summary.pggls <- function(object,...){ std.err <- sqrt(diag(object$vcov)) b <- object$coefficients z <- b/std.err p <- 2*pnorm(abs(z), lower.tail = FALSE) CoefTable <- cbind(b, std.err, z, p) colnames(CoefTable) <- c("Estimate", "Std. Error", "z-value", "Pr(>|z|)") object$CoefTable <- CoefTable y <- object$model[[1L]] object$tss <- tss(y) object$ssr <- as.numeric(crossprod(residuals(object))) object$rsqr <- 1-object$ssr/object$tss class(object) <- c("summary.pggls") return(object) } #' @rdname pggls #' @export print.summary.pggls <- function(x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ...){ pmodel <- attr(x, "pmodel") pdim <- attr(x, "pdim") cat(paste(effect.pggls.list[pmodel$effect.name], " ", sep = "")) cat(paste(model.pggls.list[ pmodel$model.name], "\n", sep = "")) cat("\nCall:\n") print(x$call) cat("\n") print(pdim) cat("\nResiduals:\n") print(sumres(x)) cat("\nCoefficients:\n") printCoefmat(x$CoefTable, digits = digits) cat(paste("Total Sum of Squares: ", signif(x$tss, digits), "\n", sep="")) cat(paste("Residual Sum of Squares: ", signif(x$ssr, digits), "\n", sep="")) cat(paste("Multiple R-squared: ", signif(x$rsqr, digits), "\n", sep="")) invisible(x) } #' @rdname pggls #' @export residuals.pggls <- function(object, ...) { pres(object) } plm/R/tool_model.extract.R0000644000176200001440000003546014427724071015214 0ustar liggesusers# model.frame method for pdata.frame ; the formula argument must be a # pdata.frame and the data argument must be a formula, which is quite # esoteric, but consistent with the argument list of # model.frame.Formula which is latter called. #' model.frame and model.matrix for panel data #' #' Methods to create model frame and model matrix for panel data. #' #' The `lhs` and `rhs` arguments are inherited from `Formula`, see #' there for more details.\cr The `model.frame` methods return a #' `pdata.frame` object suitable as an input to plm's #' `model.matrix`.\cr The `model.matrix` methods builds a model matrix #' with transformations performed as specified by the `model` and #' `effect` arguments (and `theta` if `model = "random"` is #' requested), in this case the supplied `data` argument should be a #' model frame created by plm's `model.frame` method. If not, it is #' tried to construct the model frame from the data. Constructing the #' model frame first ensures proper `NA` handling, see **Examples**. #' #' @name model.frame.pdata.frame #' @param object,formula an object of class `"pdata.frame"` or an #' estimated model object of class `"plm"`, #' @param x a `model.frame` #' @param data a `formula`, see **Details**, #' @param effect the effects introduced in the model, one of #' `"individual"`, `"time"`, `"twoways"` or `"nested"`, #' @param model one of `"pooling"`, `"within"`, `"Sum"`, `"Between"`, #' `"between"`, `"random",` `"fd"` and `"ht"`, #' @param theta the parameter for the transformation if `model = #' "random"`, #' @param cstcovar.rm remove the constant columns, one of `"none", #' "intercept", "covariates", "all")`, #' @param lhs inherited from package [Formula::Formula()] (see #' there), #' @param rhs inherited from package [Formula::Formula()] (see #' there), #' @param dot inherited from package [Formula::Formula()] (see #' there), #' @param \dots further arguments. #' @return The `model.frame` methods return a `pdata.frame`.\cr The #' `model.matrix` methods return a `matrix`. #' @author Yves Croissant #' @seealso [pmodel.response()] for (transformed) response #' variable.\cr [Formula::Formula()] from package `Formula`, #' especially for the `lhs` and `rhs` arguments. #' @keywords classes #' @examples #' #' # First, make a pdata.frame #' data("Grunfeld", package = "plm") #' pGrunfeld <- pdata.frame(Grunfeld) #' #' # then make a model frame from a formula and a pdata.frame #' form <- inv ~ value #' mf <- model.frame(pGrunfeld, form) #' #' # then construct the (transformed) model matrix (design matrix) #' # from model frame ##modmat <- model.matrix(pform, data = mf, model = "within") #' modmat <- model.matrix(mf, model = "within") #' #' ## retrieve model frame and model matrix from an estimated plm object ## #fe_model <- plm(pform, data = pGrunfeld, model = "within") #' fe_model <- plm(form, data = pGrunfeld, model = "within") #' model.frame(fe_model) #' model.matrix(fe_model) #' #' # same as constructed before #' all.equal(mf, model.frame(fe_model), check.attributes = FALSE) # TRUE #' all.equal(modmat, model.matrix(fe_model), check.attributes = FALSE) # TRUE #' NULL #' @rdname model.frame.pdata.frame #' @export model.frame.pdata.frame <- function(formula, data = NULL, ..., lhs = NULL, rhs = NULL, dot = "previous"){ pdata <- formula formula <- as.Formula(data) if (is.null(rhs)) rhs <- seq_len(length(formula)[2L]) if (is.null(lhs)) lhs <- if(length(formula)[1L] > 0L) 1 else 0 index <- attr(pdata, "index") mf <- model.frame(formula, as.data.frame(pdata, row.names = FALSE), ..., # NB need row.names = FALSE to ensure mf has integer sequence as row names lhs = lhs, rhs = rhs, dot = dot) index <- index[as.numeric(rownames(mf)), ] # reduce index down to rows left in model frame checkNA.index(index) # check for NAs in model.frame's index and error if any index <- droplevels(index) class(index) <- c("pindex", "data.frame") structure(mf, index = index, formula = formula, class = c("pdata.frame", class(mf))) } #' @rdname model.frame.pdata.frame #' @export formula.pdata.frame <- function(x, ...){ if (is.null(attr(x, "terms"))) stop("formula expect a model.frame and not an ordinary pdata.frame") attr(x, "formula") } #' @rdname model.frame.pdata.frame #' @export model.matrix.plm <- function(object, ...){ dots <- list(...) model <- if(is.null(dots$model)) describe(object, "model") else dots$model effect <- if(is.null(dots$effect)) describe(object, "effect") else dots$effect rhs <- if(is.null(dots$rhs)) 1 else dots$rhs cstcovar.rm <- dots$cstcovar.rm formula <- formula(object) data <- model.frame(object) if (model != "random"){ model.matrix(data, model = model, effect = effect, rhs = rhs, cstcovar.rm = cstcovar.rm) } else{ theta <- ercomp(object)$theta model.matrix(data, model = model, effect = effect, theta = theta, rhs = rhs, cstcovar.rm = cstcovar.rm) } } #' @rdname model.frame.pdata.frame #' @export model.matrix.pdata.frame <- function(object, model = c("pooling", "within", "Between", "Sum", "between", "mean", "random", "fd"), effect = c("individual", "time", "twoways", "nested"), rhs = 1, theta = NULL, cstcovar.rm = NULL, ...){ if (is.null(attr(object, "terms"))) stop("model.matrix expects a model.frame and not an ordinary pdata.frame") model <- match.arg(model) effect <- match.arg(effect) formula <- attr(object, "formula") data <- object has.intercept <- has.intercept(formula, rhs = rhs, data = data) # relevant defaults for cstcovar.rm if(is.null(cstcovar.rm)) cstcovar.rm <- if(model == "within") "intercept" else "none" balanced <- is.pbalanced(data) X <- model.matrix(as.Formula(formula), data = data, rhs = rhs, dot = "previous", ...) # check for infinite or NA values and exit if there are some if(any(! is.finite(X))) stop(paste("model matrix or response contains non-finite", "values (NA/NaN/Inf/-Inf)")) X.assi <- attr(X, "assign") X.contr <- attr(X, "contrasts") X.contr <- X.contr[ ! vapply(X.contr, is.null, FUN.VALUE = TRUE, USE.NAMES = FALSE) ] index <- index(data) attr(X, "index") <- index if(effect == "twoways" && model %in% c("between", "fd")) stop("twoways effect only relevant for within, random, and pooling models") if(model == "within") X <- Within(X, effect) if(model == "Sum") X <- Sum(X, effect) if(model == "Between") X <- Between(X, effect) if(model == "between") X <- between(X, effect) if(model == "mean") X <- Mean(X) if(model == "fd") X <- pdiff(X, effect = "individual", # pdiff has its own handling of intercept and const. columns has.intercept = has.intercept, shift = "row") if(model == "random"){ if(is.null(theta)) stop("a theta argument must be provided for model = \"random\"") if(effect %in% c("time", "individual")) X <- X - theta * Between(X, effect) if(effect == "nested") X <- X - theta$id * Between(X, "individual") - theta$gp * Between(X, "group") if(effect == "twoways" && balanced) X <- X - theta$id * Between(X, "individual") - theta$time * Between(X, "time") + theta$total * Mean(X) ## TODO: case unbalanced twoways not treated here. Catch and error gracefully? # if (effect == "twoways" && !balanced) stop("two-way unbalanced case not implemented in model.matrix.pdata.frame") } if(cstcovar.rm == "intercept"){ posintercept <- match("(Intercept)", colnames(X)) if (! is.na(posintercept)) X <- X[ , - posintercept, drop = FALSE] } if(cstcovar.rm %in% c("covariates", "all")){ cols <- apply(X, 2, is.constant) cstcol <- names(cols)[cols] posintercept <- match("(Intercept)", cstcol) cstintercept <- if(is.na(posintercept)) FALSE else TRUE zeroint <- if(cstintercept && max(X[ , posintercept]) < sqrt(.Machine$double.eps)) TRUE else FALSE if(length(cstcol) > 0L){ if((cstcovar.rm == "covariates" || !zeroint) && cstintercept) cstcol <- cstcol[- posintercept] if(length(cstcol) > 0L){ X <- X[ , - match(cstcol, colnames(X)), drop = FALSE] attr(X, "constant") <- cstcol } } } structure(X, assign = X.assi, contrasts = X.contr, index = index) } #' A function to extract the model.response #' #' pmodel.response has several methods to conveniently extract the #' response of several objects. #' #' The model response is extracted from a `pdata.frame` (where the #' response must reside in the first column; this is the case for a #' model frame), a `Formula` + `data` (being a model frame) or a `plm` #' object, and the #' transformation specified by `effect` and `model` is applied to #' it.\cr Constructing the model frame first ensures proper `NA` #' handling and the response being placed in the first column, see #' also **Examples** for usage. #' #' @aliases pmodel.response #' @param object an object of class `"plm"`, or a formula of #' class `"Formula"`, #' @param data a `data.frame` #' @param \dots further arguments. #' @return A pseries except if model responses' of a `"between"` #' or `"fd"` model as these models "compress" the data (the number #' of observations used in estimation is smaller than the original #' data due to the specific transformation). A numeric is returned #' for the `"between"` and `"fd"` model. #' @export #' @author Yves Croissant #' @seealso `plm`'s [model.matrix()] for (transformed) #' model matrix and the corresponding [model.frame()] #' method to construct a model frame. #' @keywords manip #' @examples #' #' # First, make a pdata.frame #' data("Grunfeld", package = "plm") #' pGrunfeld <- pdata.frame(Grunfeld) #' #' # then make a model frame from a Formula and a pdata.frame #' form <- inv ~ value + capital #' mf <- model.frame(pGrunfeld, form) #' #' # retrieve (transformed) response directly from model frame #' resp_mf <- pmodel.response(mf, model = "within", effect = "individual") #' #' # retrieve (transformed) response from a plm object, i.e., an estimated model #' fe_model <- plm(form, data = pGrunfeld, model = "within") #' pmodel.response(fe_model) #' #' # same as constructed before #' all.equal(resp_mf, pmodel.response(fe_model), check.attributes = FALSE) # TRUE #' pmodel.response <- function(object, ...) { UseMethod("pmodel.response") } #' @rdname pmodel.response #' @export pmodel.response.plm <- function(object, ...){ y <- model.response(model.frame(object)) dots <- list(...) model <- if(is.null(dots$model)) describe(object, "model") else dots$model effect <- if(is.null(dots$effect)) describe(object, "effect") else dots$effect theta <- if(is.null(dots$theta)) { if(describe(object, "model") == "random") ercomp(object)$theta else NULL } else dots$theta ptransform(y, model = model, effect = effect, theta = theta) } #' @rdname pmodel.response #' @export pmodel.response.data.frame <- function(object, ...){ dots <- list(...) if(is.null(attr(object, "terms"))) stop("not a model.frame") model <- if(is.null(dots$model)) "pooling" else dots$model effect <- if(is.null(dots$effect)) "individual" else dots$effect theta <- if(is.null(dots$theta)) NULL else dots$theta y <- model.response(object) # has index attribute but not class 'pseries' class(y) <- unique(c("pseries", class(y))) ptransform(y, model = model, effect = effect, theta = theta) } # "deprecated" (not advertised anymore) #' @rdname pmodel.response #' @export pmodel.response.formula <- function(object, data, ...){ # print("pmodel.response.formula") dots <- list(...) if(is.null(data)) stop("the data argument is mandatory") if(! inherits(data, "pdata.frame")) stop("the data argument must be a pdata.frame") if(is.null(attr(data, "terms"))) data <- model.frame(data, object) model <- dots$model effect <- dots$effect theta <- dots$theta if(is.null(model)) model <- "pooling" if(is.null(effect)) effect <- "individual" if(model == "random" && is.null(theta)) stop("the theta argument is mandatory for model = \"random\"") y <- model.response(data) class(y) <- unique(c("pseries", class(y))) ptransform(y, model = model, effect = effect, theta = theta) } ptransform <- function(x, model = NULL, effect = NULL, theta = NULL, ...){ # NB: ptransform (and hence pmodel.response) does not handle the random 2-way unbalanced case if(model == "pooling") return(x) # early exit if(effect == "twoways" && model %in% c("between", "fd")) stop("twoways effect only relevant for within, random, and pooling models") if(model == "within") x <- Within(x, effect) if(model == "between") x <- between(x, effect) if(model == "Between") x <- Between(x, effect) if(model == "fd") x <- pdiff(x, effect = "individual", shift = "row") if(model == "random") { balanced <- is.pbalanced(x) # need to check this right here as long as x is a pseries if(is.null(theta)) stop("a theta argument must be provided") if(effect %in% c("time", "individual")) x <- x - theta * Between(x, effect) if(effect == "nested") x <- x - theta$id * Between(x, "individual") - theta$gp * Between(x, "group") if(effect == "twoways" && balanced) x <- x - theta$id * Between(x, "individual") - theta$time * Between(x, "time") + theta$total * mean(x) ## TODO: could catch non-treated RE unbalanced twoways case to error gracefully: # if (effect == "twoways" && !balanced) warning("two-way unbalanced case not implemented in ptransform") } # between and fd models "compress" the data, thus an index does not make # sense for those, but add to all others (incl. Between (capital B)) x <- if(model %in% c("between", "fd")) x else structure(x, index = index(x), class = unique(c("pseries", class(x)))) return(x) } plm/R/test_serial.R0000644000176200001440000015516414414730002013713 0ustar liggesusers #' Breusch--Godfrey Test for Panel Models #' #' Test of serial correlation for (the idiosyncratic component of) the #' errors in panel models. #' #' This Lagrange multiplier test uses the auxiliary model on #' (quasi-)demeaned data taken from a model of class `plm` which may #' be a `pooling` (default for formula interface), `random` or #' `within` model. It performs a Breusch--Godfrey test (using `bgtest` #' from package \CRANpkg{lmtest} on the residuals of the #' (quasi-)demeaned model, which should be serially uncorrelated under #' the null of no serial correlation in idiosyncratic errors, as #' illustrated in \insertCite{WOOL:10;textual}{plm}. The function #' takes the demeaned data, estimates the model and calls `bgtest`. #' #' Unlike most other tests for serial correlation in panels, this one #' allows to choose the order of correlation to test for. #' #' @aliases pbgtest #' @importFrom lmtest bgtest #' @param x an object of class `"panelmodel"` or of class `"formula"`, #' @param order an integer indicating the order of serial correlation #' to be tested for. `NULL` (default) uses the minimum number of #' observations over the time dimension (see also section #' **Details** below), #' @param type type of test statistic to be calculated; either #' `"Chisq"` (default) for the Chi-squared test statistic or `"F"` #' for the F test statistic, #' @param data only relevant for formula interface: data set for which #' the respective panel model (see `model`) is to be evaluated, #' @param model only relevant for formula interface: compute test #' statistic for model `pooling` (default), `random`, or `within`. #' When `model` is used, the `data` argument needs to be passed as #' well, #' @param \dots further arguments (see [lmtest::bgtest()]). #' @return An object of class `"htest"`. #' @note The argument `order` defaults to the minimum number of #' observations over the time dimension, while for #' `lmtest::bgtest` it defaults to `1`. #' @export #' @author Giovanni Millo #' @seealso For the original test in package \CRANpkg{lmtest} see #' [lmtest::bgtest()]. See [pdwtest()] for the analogous #' panel Durbin--Watson test. See [pbltest()], [pbsytest()], #' [pwartest()] and [pwfdtest()] for other serial correlation #' tests for panel models. #' @references #' #' \insertRef{BREU:78}{plm} #' #' \insertRef{GODF:78}{plm} #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' \insertRef{WOOL:13}{plm} #' Sec. 12.2, pp. 421--422. #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' g <- plm(inv ~ value + capital, data = Grunfeld, model = "random") #' #' # panelmodel interface #' pbgtest(g) #' pbgtest(g, order = 4) #' #' # formula interface #' pbgtest(inv ~ value + capital, data = Grunfeld, model = "random") #' #' # F test statistic (instead of default type="Chisq") #' pbgtest(g, type="F") #' pbgtest(inv ~ value + capital, data = Grunfeld, model = "random", type = "F") #' pbgtest <- function (x, ...) { UseMethod("pbgtest") } #' @rdname pbgtest #' @export pbgtest.panelmodel <- function(x, order = NULL, type = c("Chisq", "F"), ...) { ## residual serial correlation test based on the residuals of the demeaned ## model (see Wooldridge (2002), p. 288) and the regular lmtest::bgtest() ## structure: ## 1: take demeaned data from 'plm' object ## 2: est. auxiliary model by OLS on demeaned data ## 3: apply lmtest::bgtest() to auxiliary model and return the result model <- describe(x, "model") effect <- describe(x, "effect") theta <- x$ercomp$theta ## retrieve demeaned data demX <- model.matrix(x, model = model, effect = effect, theta = theta, cstcovar.rm = "all") demy <- pmodel.response(model.frame(x), model = model, effect = effect, theta = theta) ## ...and group numerosities Ti <- pdim(x)$Tint$Ti ## set lag order to minimum group numerosity if not specified by user ## (check whether this is sensible) if(is.null(order)) order <- min(Ti) ## lmtest::bgtest on the demeaned model: ## pbgtest is the return value of lmtest::bgtest, exception made for the method attribute auxformula <- demy ~ demX - 1 lm.mod <- lm(auxformula) bgtest <- bgtest(lm.mod, order = order, type = type, ...) bgtest$method <- "Breusch-Godfrey/Wooldridge test for serial correlation in panel models" bgtest$alternative <- "serial correlation in idiosyncratic errors" bgtest$data.name <- data.name(x) names(bgtest$statistic) <- if(length(bgtest$parameter) == 1) "chisq" else "F" return(bgtest) } #' @rdname pbgtest #' @export pbgtest.formula <- function(x, order = NULL, type = c("Chisq", "F"), data, model=c("pooling", "random", "within"), ...) { ## formula method for pbgtest; ## defaults to a pooling model cl <- match.call(expand.dots = TRUE) if (names(cl)[3L] == "") names(cl)[3L] <- "data" if (is.null(cl$model)) cl$model <- "pooling" names(cl)[2L] <- "formula" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl,parent.frame()) pbgtest(plm.model, order = order, type = type, data = data, ...) } #' Wooldridge's Test for Unobserved Effects in Panel Models #' #' Semi-parametric test for the presence of (individual or time) unobserved #' effects in panel models. #' #' This semi-parametric test checks the null hypothesis of zero #' correlation between errors of the same group. Therefore, it has #' power both against individual effects and, more generally, any kind #' of serial correlation. #' #' The test relies on large-N asymptotics. It is valid under error #' heteroskedasticity and departures from normality. #' #' The above is valid if `effect="individual"`, which is the most #' likely usage. If `effect="time"`, symmetrically, the test relies on #' large-T asymptotics and has power against time effects and, more #' generally, against cross-sectional correlation. #' #' If the panelmodel interface is used, the inputted model must be a pooling #' model. #' #' @aliases pwtest #' @param x an object of class `"formula"`, or an estimated model of class #' `panelmodel`, #' @param effect the effect to be tested for, one of `"individual"` #' (default) or `"time"`, #' @param data a `data.frame`, #' @param \dots further arguments passed to `plm`. #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo #' @seealso [pbltest()], [pbgtest()], #' [pdwtest()], [pbsytest()], [pwartest()], #' [pwfdtest()] for tests for serial correlation in panel models. #' [plmtest()] for tests for random effects. #' @references #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' @keywords htest #' @examples #' #' data("Produc", package = "plm") #' ## formula interface #' pwtest(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc) #' pwtest(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, effect = "time") #' #' ## panelmodel interface #' # first, estimate a pooling model, than compute test statistics #' form <- formula(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp) #' pool_prodc <- plm(form, data = Produc, model = "pooling") #' pwtest(pool_prodc) # == effect="individual" #' pwtest(pool_prodc, effect="time") #' pwtest <- function(x, ...){ UseMethod("pwtest") } #' @rdname pwtest #' @export pwtest.formula <- function(x, data, effect = c("individual", "time"), ...) { effect <- match.arg(effect, choices = c("individual", "time")) # match effect to pass it on to pwtest.panelmodel cl <- match.call(expand.dots = TRUE) if (names(cl)[3] == "") names(cl)[3] <- "data" if (is.null(cl$model)) cl$model <- "pooling" if (cl$model != "pooling") stop("pwtest only relevant for pooling models") names(cl)[2] <- "formula" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl,parent.frame()) pwtest.panelmodel(plm.model, effect = effect, ...) # pass on desired 'effect' argument to pwtest.panelmodel ## "RE" test a la Wooldridge (2002/2010), see 10.4.4 ## (basically the scaled and standardized estimator for sigma from REmod) ## does not rely on normality or homoskedasticity; ## H0: composite errors uncorrelated ## ref. Wooldridge (2002), pp. 264-265; Wooldridge (2010), pp. 299-300 ######### from here generic testing interface from ######### plm to my code } #' @rdname pwtest #' @export pwtest.panelmodel <- function(x, effect = c("individual", "time"), ...) { if (describe(x, "model") != "pooling") stop("pwtest only relevant for pooling models") effect <- match.arg(effect, choices = c("individual", "time")) data <- model.frame(x) ## extract indices ## if effect="individual" std., else swap xindex <- unclass(attr(data, "index")) # unclass for speed index <- if(effect == "individual") xindex[[1L]] else xindex[[2L]] ## det. number of groups and df n <- length(unique(index)) X <- model.matrix(x) ## ref. Wooldridge (2002), p.264 / Wooldridge (2010), p.299 ## extract resids u <- x$residuals ## est. random effect variance ## list of n "empirical omega-blocks" ## with averages of xproducts of t(i) residuals ## for each group 1..n ## (possibly different sizes if unbal., thus a list ## and thus, unlike Wooldridge (eq.10.37), we divide ## every block by *its* t(t-1)/2) ut.list <- collapse::gsplit(u, index, use.names = FALSE) tres <- lapply(ut.list, function(x) outer(x, x)) ## det. # of upper triangle members (n*t(t-1)/2 if balanced) ## no needed, only for illustration # ti <- vapply(tres, function(x) dim(x)[[1L]], FUN.VALUE = 0.0, USE.NAMES = FALSE) # uptrinum <- sum(ti*(ti-1)/2) ## sum over all upper triangles of emp. omega blocks: ## and sum over resulting vector (df corrected) sum.uptri <- vapply(tres, function(x) sum(x[upper.tri(x, diag = FALSE)]), FUN.VALUE = 0.0, USE.NAMES = FALSE) W <- sum(sum.uptri) # /sqrt(n) simplifies out ## calculate se(Wstat) as in 10.40 seW <- sqrt(as.numeric(crossprod(sum.uptri))) ## NB should we apply a df correction here, maybe that of the standard ## RE estimator? (see page 261) Wstat <- W/seW names(Wstat) <- "z" pW <- 2*pnorm(abs(Wstat), lower.tail = FALSE) # unlike LM, test is two-tailed! ## insert usual htest features RVAL <- list(statistic = Wstat, parameter = NULL, method = paste("Wooldridge's test for unobserved", effect, "effects"), alternative = "unobserved effect", p.value = pW, data.name = paste(deparse(substitute(formula)))) class(RVAL) <- "htest" return(RVAL) } #' Wooldridge Test for AR(1) Errors in FE Panel Models #' #' Test of serial correlation for (the idiosyncratic component of) the errors #' in fixed--effects panel models. #' #' As \insertCite{WOOL:10;textual}{plm}, Sec. 10.5.4 observes, under #' the null of no serial correlation in the errors, the residuals of a #' FE model must be negatively serially correlated, with #' \eqn{cor(\hat{u}_{it}, \hat{u}_{is})=-1/(T-1)} for each #' \eqn{t,s}. He suggests basing a test for this null hypothesis on a #' pooled regression of FE residuals on their first lag: #' \eqn{\hat{u}_{i,t} = \alpha + \delta \hat{u}_{i,t-1} + #' \eta_{i,t}}. Rejecting the restriction \eqn{\delta = -1/(T-1)} #' makes us conclude against the original null of no serial #' correlation. #' #' `pwartest` estimates the `within` model and retrieves residuals, #' then estimates an AR(1) `pooling` model on them. The test statistic #' is obtained by applying a F test to the latter model to test the #' above restriction on \eqn{\delta}, setting the covariance matrix to #' `vcovHC` with the option `method="arellano"` to control for serial #' correlation. #' #' Unlike the [pbgtest()] and [pdwtest()], this test does #' not rely on large--T asymptotics and has therefore good properties in #' ``short'' panels. Furthermore, it is robust to general heteroskedasticity. #' #' @aliases pwartest #' @param x an object of class `formula` or of class `panelmodel`, #' @param data a `data.frame`, #' @param \dots further arguments to be passed on to `vcovHC` (see #' Details and Examples). #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo #' @seealso [pwfdtest()], [pdwtest()], [pbgtest()], [pbltest()], #' [pbsytest()]. #' @references #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' @keywords htest #' @examples #' #' data("EmplUK", package = "plm") #' pwartest(log(emp) ~ log(wage) + log(capital), data = EmplUK) #' #' # pass argument 'type' to vcovHC used in test #' pwartest(log(emp) ~ log(wage) + log(capital), data = EmplUK, type = "HC3") #' #' pwartest <- function(x, ...) { UseMethod("pwartest") } #' @rdname pwartest #' @export pwartest.formula <- function(x, data, ...) { ## small-sample serial correlation test for FE models ## ref.: Wooldridge (2002/2010) 10.5.4 cl <- match.call(expand.dots = TRUE) if (is.null(cl$model)) cl$model <- "within" if (cl$model != "within") stop("pwartest only relevant for within models") if (names(cl)[3L] == "") names(cl)[3L] <- "data" names(cl)[2L] <- "formula" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl, parent.frame()) pwartest(plm.model, ...) } #' @rdname pwartest #' @export pwartest.panelmodel <- function(x, ...) { mod.nam <- describe(x, "model") if(mod.nam != "within") stop(paste0("pwartest only relevant for \"within\" ", "models, but model = \"", mod.nam, "\"")) FEres <- x$residuals data <- model.frame(x) ## this is a bug fix for incorrect naming of the "data" attr. ## for the pseries in pdata.frame() attr(FEres, "data") <- NULL N <- length(FEres) FEres.1 <- c(NA, FEres[seq_len(N-1)]) xindex <- unclass(attr(data, "index")) # unclass for speed id <- xindex[[1L]] time <- xindex[[2L]] lagid <- as.numeric(id) - c(NA, as.numeric(id)[seq_len(N-1)]) FEres.1[lagid != 0] <- NA data <- data.frame(id, time, FEres = unclass(FEres), FEres.1 = unclass(FEres.1)) names(data)[c(1L, 2L)] <- c("id", "time") data <- na.omit(data) # calc. auxiliary model auxmod <- plm(FEres ~ FEres.1, data = data, model = "pooling", index = c("id", "time")) ## calc. theoretical rho under H0: no serial corr. in errors t. <- pdim(x)$nT$T rho.H0 <- -1/(t.-1) myH0 <- paste("FEres.1 = ", as.character(rho.H0), sep="") ## test H0: rho=rho.H0 with HAC myvcov <- function(x) vcovHC(x, method = "arellano", ...) # more params may be passed via ellipsis # calc F stat with restriction rho.H0 and robust vcov FEARstat <- ((coef(auxmod)["FEres.1"] - rho.H0)/sqrt(myvcov(auxmod)["FEres.1", "FEres.1"]))^2 names(FEARstat) <- "F" df1 <- c("df1" = 1) df2 <- c("df2" = df.residual(auxmod)) pFEARstat <- pf(FEARstat, df1 = df1, df2 = df2, lower.tail = FALSE) ## insert usual htest features RVAL <- list(statistic = FEARstat, parameter = c(df1, df2), p.value = pFEARstat, method = "Wooldridge's test for serial correlation in FE panels", alternative = "serial correlation", data.name = paste(deparse(substitute(x)))) class(RVAL) <- "htest" return(RVAL) } ## Bera, Sosa-Escudero and Yoon type LM test for random effects ## under serial correlation (H0: no random effects) or the inverse; ## test="ar": serial corr. test robust vs. RE ## test="re": RE test robust vs. serial corr. ## test="j": joint test for serial corr. and random effects # Reference for the _balanced_ tests="ar"|"re": # Bera/Sosa-Escudero/Yoon (2001), Tests for the error component model in the presence of local misspecifcation, # Journal of Econometrics 101 (2001), pp. 1-23. # # for original (balanced) test="j": Baltagi/Li (1991), A joint test for serial correlation and random individual effects, # Statistics & Probability Letters 11 (1991), pp. 277-280. # # Reference for _un_balanced versions of all three tests (boil down to the balanced versions for balanced panels): # Sosa-Escudero/Bera (2008), Tests for unbalanced error-components models under local misspecification, # The Stata Journal (2008), Vol. 8, Number 1, pp. 68-78. # # Concise treatment of only _balanced_ tests in # Baltagi (2005), Econometric Analysis of Panel Data, 3rd edition, pp. 96-97 # or Baltagi (2013), Econometric Analysis of Panel Data, 5th edition, pp. 108. # # ## Implementation follows the formulae for unbalanced panels, which reduce for balanced data to the formulae for balanced panels. ## ## Notation in code largely follows Sosa-Escudero/Bera (2008) (m in Sosa-Escudero/Bera (2008) is total number of observations -> N_obs) ## NB: Baltagi's book matrix A is slightly different defined: A in Baltagi is -A in Sosa-Escudera/Bera (2008) #' Bera, Sosa-Escudero and Yoon Locally--Robust Lagrange Multiplier #' Tests for Panel Models and Joint Test by Baltagi and Li #' #' Test for residual serial correlation (or individual random effects) #' locally robust vs. individual random effects (serial correlation) #' for panel models and joint test of serial correlation and the #' random effect specification by Baltagi and Li. #' #' These Lagrange multiplier tests are robust vs. local #' misspecification of the alternative hypothesis, i.e., they test the #' null of serially uncorrelated residuals against AR(1) residuals in #' a pooling model, allowing for local departures from the assumption #' of no random effects; or they test the null of no random effects #' allowing for local departures from the assumption of no serial #' correlation in residuals. They use only the residuals of the #' pooled OLS model and correct for local misspecification as outlined #' in \insertCite{BERA:SOSA:YOON:01;textual}{plm}. #' #' For `test = "re"`, the default (`re.normal = TRUE`) is to compute #' a one-sided test which is expected to lead to a more powerful test #' (asymptotically N(0,1) distributed). Setting `re.normal = FALSE` gives #' the two-sided test (asymptotically chi-squared(2) distributed). Argument #' `re.normal` is irrelevant for all other values of `test`. #' #' The joint test of serial correlation and the random effect #' specification (`test = "j"`) is due to #' \insertCite{BALT:LI:91;textual}{plm} (also mentioned in #' \insertCite{BALT:LI:95;textual}{plm}, pp. 135--136) and is added #' for convenience under this same function. #' #' The unbalanced version of all tests are derived in #' \insertCite{SOSA:BERA:08;textual}{plm}. The functions implemented #' are suitable for balanced as well as unbalanced panel data sets. #' #' A concise treatment of the statistics for only balanced panels is #' given in \insertCite{BALT:13;textual}{plm}, p. 108. #' #' Here is an overview of how the various values of the `test` #' argument relate to the literature: #' #' \itemize{ \item `test = "ar"`: \itemize{ \item \eqn{RS*_{\rho}} in Bera #' et al. (2001), p. 9 (balanced) \item \eqn{LM*_{\rho}} in Baltagi (2013), p. #' 108 (balanced) \item \eqn{RS*_{\lambda}} in Sosa-Escudero/Bera (2008), p. 73 #' (unbalanced) } #' #' \item `test = "re", re.normal = TRUE` (default) (one-sided test, #' asymptotically N(0,1) distributed): \itemize{ \item \eqn{RSO*_{\mu}} in Bera #' et al. (2001), p. 11 (balanced) \item \eqn{RSO*_{\mu}} in Sosa-Escudero/Bera #' (2008), p. 75 (unbalanced) } #' #' \item `test = "re", re.normal = FALSE` (two-sided test, asymptotically #' chi-squared(2) distributed): \itemize{ \item \eqn{RS*_{\mu}} in Bera et al. #' (2001), p. 7 (balanced) \item \eqn{LM*_{\mu}} in Baltagi (2013), p. 108 #' (balanced) \item \eqn{RS*_{\mu}} in Sosa-Escudero/Bera (2008), p. 73 #' (unbalanced) } #' #' \item `test = "j"`: \itemize{ \item \eqn{RS_{\mu\rho}} in Bera et al. #' (2001), p. 10 (balanced) \item \eqn{LM} in Baltagi/Li (2001), p. 279 #' (balanced) \item \eqn{LM_{1}} in Baltagi and Li (1995), pp. 135--136 #' (balanced) \item \eqn{LM1} in Baltagi (2013), p. 108 (balanced) \item #' \eqn{RS_{\lambda\rho}} in Sosa-Escudero/Bera (2008), p. 74 (unbalanced) } } #' #' @aliases pbsytest #' @param x an object of class `formula` or of class `panelmodel`, #' @param data a `data.frame`, #' @param test a character string indicating which test to perform: #' first--order serial correlation (`"ar"`), random effects (`"re"`) #' or joint test for either of them (`"j"`), #' @param re.normal logical, only relevant for `test = "re"`: `TRUE` #' (default) computes the one-sided `"re"` test, `FALSE` the #' two-sided test (see also Details); not relevant for other values of #' `test` and, thus, should be `NULL`, #' @param \dots further arguments. #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo (initial implementation) & Kevin Tappe (extension to #' unbalanced panels) #' @seealso [plmtest()] for individual and/or time random effects #' tests based on a correctly specified model; [pbltest()], #' [pbgtest()] and [pdwtest()] for serial correlation tests #' in random effects models. #' @references #' #' \insertRef{BERA:SOSA:YOON:01}{plm} #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:LI:91}{plm} #' #' \insertRef{BALT:LI:95}{plm} #' #' \insertRef{SOSA:BERA:08}{plm} #' #' @keywords htest #' #' @examples #' #' ## Bera et. al (2001), p. 13, table 1 use #' ## a subset of the original Grunfeld #' ## data which contains three errors -> construct this subset: #' data("Grunfeld", package = "plm") #' Grunsubset <- rbind(Grunfeld[1:80, ], Grunfeld[141:160, ]) #' Grunsubset[Grunsubset$firm == 2 & Grunsubset$year %in% c(1940, 1952), ][["inv"]] <- c(261.6, 645.2) #' Grunsubset[Grunsubset$firm == 2 & Grunsubset$year == 1946, ][["capital"]] <- 232.6 #' #' ## default is AR testing (formula interface) #' pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year")) #' pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), test = "re") #' pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), #' test = "re", re.normal = FALSE) #' pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), test = "j") #' #' ## plm interface #' mod <- plm(inv ~ value + capital, data = Grunsubset, model = "pooling") #' pbsytest(mod) #' pbsytest <- function (x, ...) { UseMethod("pbsytest") } #' @rdname pbsytest #' @export pbsytest.formula <- function(x, data, ..., test = c("ar", "re", "j"), re.normal = if (test == "re") TRUE else NULL) { ######### from here generic testing interface from ######### plm to my code if (length(test) == 1L) test <- tolower(test) # for backward compatibility: allow upper case test <- match.arg(test) cl <- match.call(expand.dots = TRUE) if (is.null(cl$model)) cl$model <- "pooling" if (cl$model != "pooling") stop("pbsytest only relevant for pooling models") names(cl)[2L] <- "formula" if (names(cl)[3L] == "") names(cl)[3L] <- "data" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1, m)] cl[[1L]] <- as.name("plm") plm.model <- eval(cl, parent.frame()) pbsytest(plm.model, test = test, re.normal = re.normal, ...) } #' @rdname pbsytest #' @export pbsytest.panelmodel <- function(x, test = c("ar", "re", "j"), re.normal = if (test == "re") TRUE else NULL, ...) { test <- match.arg(test) if (describe(x, "model") != "pooling") stop("pbsytest only relevant for pooling models") # interface check for argument re.normal if (test != "re" && !is.null(re.normal)) { stop("argument 're.normal' only relevant for test = \"re\", set re.normal = NULL for other tests")} poolres <- x$residuals data <- model.frame(x) ## extract indices index <- attr(data, "index") iindex <- index[[1L]] tindex <- index[[2L]] ## till here. ## ordering here if needed. ## this needs ordering of obs. on time, regardless ## whether before that on groups or after ## and numerosity check ## order by group, then time oo <- order(iindex,tindex) ind <- iindex[oo] tind <- tindex[oo] poolres <- poolres[oo] pdim <- pdim(x) n <- max(pdim$Tint$nt) ## det. number of groups T_i <- pdim$Tint$Ti N_t <- pdim$Tint$nt t <- max(T_i) ## det. max. group numerosity N_obs <- pdim$nT$N ## det. total number of obs. (m in Sosa-Escudera/Bera (2008), p. 69) ## calc. matrices A and B: # Sosa-Escudera/Bera (2008), p. 74 # Baltagi (2013), p. 108 defines A=(S1/S2)-1 and, thus, has slightly different formulae [opposite sign in Baltagi] S1 <- as.numeric(crossprod(tapply(poolres,ind,sum))) # == sum(tapply(poolres,ind,sum)^2) S2 <- as.numeric(crossprod(poolres)) # == sum(poolres^2) A <- 1 - S1/S2 unind <- unique(ind) length.unind <- length(unind) uu <- uu1 <- rep(NA_real_, length.unind) # pre-allocate poolres.list <- collapse::gsplit(poolres, ind, use.names = FALSE) for(i in seq_len(length.unind)) { u.t <- poolres.list[[i]] u.t.1 <- u.t[-length(u.t)] u.t <- u.t[-1L] uu[i] <- crossprod(u.t) uu1[i] <- crossprod(u.t, u.t.1) } B <- sum(uu1)/sum(uu) a <- as.numeric(crossprod(T_i)) # Sosa-Escudera/Bera (2008), p. 69 switch(test, "ar" = { # RS*_lambda from Sosa-Escudero/Bera (2008), p. 73 (unbalanced formula) stat <- (B + (((N_obs - n)/(a - N_obs)) * A))^2 * (((a - N_obs)*N_obs^2) / ((N_obs - n)*(a - 3*N_obs + 2*n))) df <- c(df = 1) names(stat) <- "chisq" pstat <- pchisq(stat, df = df, lower.tail = FALSE) tname <- "Bera, Sosa-Escudero and Yoon locally robust test" myH0_alt <- "AR(1) errors sub random effects" }, "re" = { if(re.normal) { # RSO*_mu from Sosa-Escudero/Bera (2008), p. 75 (unbalanced formula), normally distributed stat <- -sqrt( (N_obs^2) / (2*(a - 3*N_obs + 2*n))) * (A + 2*B) names(stat) <- "z" df <- NULL pstat <- pnorm(stat, lower.tail = FALSE) tname <- "Bera, Sosa-Escudero and Yoon locally robust test (one-sided)" myH0_alt <- "random effects sub AR(1) errors" } else { # RS*_mu from Sosa-Escudero/Bera (2008), p. 73 (unbalanced formula), chisq(1) stat <- ((N_obs^2) * (A + 2*B)^2) / (2*(a - 3*N_obs + 2*n)) names(stat) <- "chisq" df <- c(df = 1) pstat <- pchisq(stat, df = df, lower.tail = FALSE) tname <- "Bera, Sosa-Escudero and Yoon locally robust test (two-sided)" myH0_alt <- "random effects sub AR(1) errors" } }, "j" = { # RS_lambda_mu in Sosa-Escudero/Bera (2008), p. 74 (unbalanced formula) stat <- N_obs^2 * ( ((A^2 + 4*A*B + 4*B^2) / (2*(a - 3*N_obs + 2*n))) + (B^2/(N_obs - n))) # Degrees of freedom in the joint test (test="j") of Baltagi/Li (1991) are 2 (chisquare(2) distributed), # see Baltagi/Li (1991), p. 279 and again in Baltagi/Li (1995), p. 136 df <- c(df = 2) names(stat) <- "chisq" pstat <- pchisq(stat, df = df, lower.tail = FALSE) tname <- "Baltagi and Li AR-RE joint test" myH0_alt <- "AR(1) errors or random effects" } ) # END switch dname <- paste(deparse(substitute(formula))) RVAL <- list(statistic = stat, parameter = df, method = tname, alternative = myH0_alt, p.value = pstat, data.name = dname) class(RVAL) <- "htest" return(RVAL) } #' Durbin--Watson Test for Panel Models #' #' Test of serial correlation for (the idiosyncratic component of) the errors #' in panel models. #' #' This Durbin--Watson test uses the auxiliary model on #' (quasi-)demeaned data taken from a model of class `plm` which may #' be a `pooling` (the default), `random` or `within` model. It #' performs a Durbin--Watson test (using `dwtest` from package #' \CRANpkg{lmtest} on the residuals of the (quasi-)demeaned model, #' which should be serially uncorrelated under the null of no serial #' correlation in idiosyncratic errors. The function takes the #' demeaned data, estimates the model and calls `dwtest`. Thus, this #' test does not take the panel structure of the residuals into #' consideration; it shall not be confused with the generalized #' Durbin-Watson test for panels in `pbnftest`. #' #' @aliases pdwtest #' @importFrom lmtest dwtest #' @param x an object of class `"panelmodel"` or of class #' `"formula"`, #' @param data a `data.frame`, #' @param \dots further arguments to be passed on to `dwtest`, #' e.g., `alternative`, see [lmtest::dwtest()] for #' further details. #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo #' @seealso [lmtest::dwtest()] for the Durbin--Watson test #' in \CRANpkg{lmtest}, [pbgtest()] for the analogous #' Breusch--Godfrey test for panel models, #' [lmtest::bgtest()] for the Breusch--Godfrey test for #' serial correlation in the linear model. [pbltest()], #' [pbsytest()], [pwartest()] and #' [pwfdtest()] for other serial correlation tests for #' panel models. #' #' For the Durbin-Watson test generalized to panel data models see #' [pbnftest()]. #' @references #' #' \insertRef{DURB:WATS:50}{plm} #' #' \insertRef{DURB:WATS:51}{plm} #' #' \insertRef{DURB:WATS:71}{plm} #' #' \insertRef{WOOL:02}{plm} #' #' \insertRef{WOOL:10}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' g <- plm(inv ~ value + capital, data = Grunfeld, model="random") #' pdwtest(g) #' pdwtest(g, alternative="two.sided") #' ## formula interface #' pdwtest(inv ~ value + capital, data=Grunfeld, model="random") #' pdwtest <- function (x, ...) { UseMethod("pdwtest") } #' @rdname pdwtest #' @export pdwtest.panelmodel <- function(x, ...) { ## does not respect panel structure: ## residual serial correlation test based on the residuals of the demeaned ## model and passed on to lmtest::dwtest() for the original DW test ## approach justified in Wooldridge (2002/2010), Econometric Analysis of Cross Section and Panel Data, p. 288/328. ## ## For the Bhargava et al. (1982) generalized DW test see pbnftest() ## structure: ## 1: take demeaned data from 'plm' object ## 2: est. auxiliary model by OLS on demeaned data ## 3: apply lmtest::dwtest() to auxiliary model and return the result model <- describe(x, "model") effect <- describe(x, "effect") theta <- x$ercomp$theta ## retrieve demeaned data demX <- model.matrix(x, model = model, effect = effect, theta = theta, cstcovar.rm = "all") demy <- pmodel.response(model.frame(x), model = model, effect = effect, theta = theta) ## lmtest::dwtest on the demeaned model: ## ARtest is the return value of lmtest::dwtest, exception made for the method attribute dots <- list(...) order.by <- if(is.null(dots$order.by)) NULL else dots$order.by alternative <- if(is.null(dots$alternative)) "greater" else dots$alternative iterations <- if(is.null(dots$iterations)) 15 else dots$iterations exact <- if(is.null(dots$exact)) NULL else dots$exact tol <- if(is.null(dots$tol)) 1e-10 else dots$tol demy <- remove_pseries_features(demy) # needed as lmtest::dwtest cannot cope with pseries auxformula <- demy ~ demX - 1 lm.mod <- lm(auxformula) ARtest <- dwtest(lm.mod, order.by = order.by, alternative = alternative, iterations = iterations, exact = exact, tol = tol) # overwrite elements of the values produced by lmtest::dwtest ARtest$method <- "Durbin-Watson test for serial correlation in panel models" ARtest$alternative <- "serial correlation in idiosyncratic errors" ARtest$data.name <- data.name(x) return(ARtest) } #' @rdname pdwtest #' @export pdwtest.formula <- function(x, data, ...) { ## formula method for pdwtest; ## defaults to pooling model cl <- match.call(expand.dots = TRUE) if (is.null(cl$model)) cl$model <- "pooling" names(cl)[2L] <- "formula" if (names(cl)[3L] == "") names(cl)[3L] <- "data" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl, parent.frame()) pdwtest(plm.model, ...) } ## pbnftest references: ## * balanced and consecutive: ## Bhargava/Franzini/Narendranathan (1982), Serial Correlation and the Fixed Effects Model, Review of Economic Studies (1982), XLIX(4), pp. 533-549. ## (also in Baltagi (2005/2013), p. 98-99/109-110 for FE application) ## * unbalanced and/or non-consecutive: modified BNF statistic and LBI statistic ## Baltagi/Wu (1999), Unequally spaced panel data regressions with AR(1) disturbances. Econometric Theory, 15(6), pp. 814-823. ## (an example is also in Baltagi (2005/2013), p. 90/101) #' Modified BNF--Durbin--Watson Test and Baltagi--Wu's LBI Test for Panel #' Models #' #' Tests for AR(1) disturbances in panel models. #' #' The default, `test = "bnf"`, gives the (modified) BNF statistic, #' the generalised Durbin-Watson statistic for panels. For balanced #' and consecutive panels, the reference is #' Bhargava/Franzini/Narendranathan (1982). The modified BNF is given #' for unbalanced and/or non-consecutive panels (d1 in formula 16 of #' \insertCite{BALT:WU:99;textual}{plm}). #' #' `test = "lbi"` yields Baltagi--Wu's LBI statistic #' \insertCite{BALT:WU:99}{plm}, the locally best invariant test which #' is based on the modified BNF statistic. #' #' No specific variants of these tests are available for random effect models. #' As the within estimator is consistent also under the random effects #' assumptions, the test for random effect models is performed by taking the #' within residuals. #' #' No p-values are given for the statistics as their distribution is #' quite difficult. \insertCite{BHAR:FRAN:NARE:82;textual}{plm} supply #' tabulated bounds for p = 0.05 for the balanced case and consecutive #' case. #' #' For large N, \insertCite{BHAR:FRAN:NARE:82}{plm} suggest it is #' sufficient to check whether the BNF statistic is < 2 to test #' against positive serial correlation. #' #' @aliases pbnftest #' @param x an object of class `"panelmodel"` or of class `"formula"`, #' @param test a character indicating the test to be performed, either #' `"bnf"` or `"lbi"` for the (modified) BNF statistic or #' Baltagi--Wu's LBI statistic, respectively, #' @param data a `data.frame` (only relevant for formula interface), #' @param model a character indicating on which type of model the test #' shall be performed (`"pooling"`, `"within"`, `"random"`, only #' relevant for formula interface), #' @param \dots only relevant for formula interface: further arguments #' to specify the model to test (arguments passed on to plm()), #' e.g., `effect`. #' @return An object of class `"htest"`. #' @export #' @author Kevin Tappe #' @seealso [pdwtest()] for the original Durbin--Watson test using #' (quasi-)demeaned residuals of the panel model without taking #' the panel structure into account. [pbltest()], [pbsytest()], #' [pwartest()] and [pwfdtest()] for other serial correlation #' tests for panel models. #' @references #' #' \insertRef{BALT:13}{plm} #' #' \insertRef{BALT:WU:99}{plm} #' #' \insertRef{BHAR:FRAN:NARE:82}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' #' # formula interface, replicate Baltagi/Wu (1999), table 1, test case A: #' data_A <- Grunfeld[!Grunfeld[["year"]] %in% c("1943", "1944"), ] #' pbnftest(inv ~ value + capital, data = data_A, model = "within") #' pbnftest(inv ~ value + capital, data = data_A, test = "lbi", model = "within") #' #' # replicate Baltagi (2013), p. 101, table 5.1: #' re <- plm(inv ~ value + capital, data = Grunfeld, model = "random") #' pbnftest(re) #' pbnftest(re, test = "lbi") #' pbnftest <- function (x, ...) { UseMethod("pbnftest") } #' @rdname pbnftest #' @export pbnftest.panelmodel <- function(x, test = c("bnf", "lbi"), ...) { test <- match.arg(test) # no test for random effects available: take FE as also consistent (Verbeek (2004, 2nd edition), p. 358) model <- describe(x, "model") if (model == "random") x <- update(x, model = "within") consec <- all(is.pconsecutive(x)) balanced <- is.pbalanced(x) # residuals are now class pseries, so diff.pseries is used and the # differences are computed within observational units (not across as # it would be the case if base::diff() is used and as it is done for # lm-objects) NAs are introduced by the differencing as one # observation is lost per observational unit if (!inherits(residuals(x), "pseries")) stop("pbnftest internal error: residuals are not of class \"pseries\"") # check to be safe: need pseries ind <- unclass(index(x))[[1L]] # unclass for speed obs1 <- !collapse::fduplicated(ind, all = FALSE) # first ob of each individual obsn <- !duplicated(ind, fromLast = TRUE) # last ob of each individual #### d1, d2, d3, d4 as in Baltagi/Wu (1999), p. 819 formula (16) res_crossprod <- as.numeric(crossprod(residuals(x))) # denominator ## d1 consists of two parts: ## d1.1: BNF statistic (sum of squared differenced residuals of consecutive time periods per individual) ## d1.2: sum of squared "later" residuals (not differenced) surrounded by gaps in time periods ## typo in Baltagi/Wu (1999) for d1: index j starts at j = 2, not j = 1 res_diff <- diff(residuals(x), shift = "time") d1.1 <- sum(res_diff^2, na.rm = T) / res_crossprod # == BNF (1982), formula (4) d1.2_contrib <- as.logical(is.na(res_diff) - obs1) d1.2 <- as.numeric(crossprod(residuals(x)[d1.2_contrib])) / res_crossprod d1 <- d1.1 + d1.2 # == modified BNF statistic = d1 in Baltagi/Wu (1999) formula (16) # [reduces to original BNF in case of balanced and consecutive data (d1.2 is zero)] if (test == "bnf") { stat <- d1 names(stat) <- "DW" method <- "Bhargava/Franzini/Narendranathan Panel Durbin-Watson Test" if (!consec || !balanced) method <- paste0("modified ", method) } if (test == "lbi") { ## d2 contains the "earlier" obs surrounded by gaps in time periods d2_contrib <- as.logical(is.na(lead(residuals(x), shift = "time")) - obsn) d2 <- as.numeric(crossprod(residuals(x)[d2_contrib])) / res_crossprod ## d3, d4: sum squared residual of first/last time period for all individuals / crossprod(residuals) d3 <- as.numeric(crossprod(residuals(x)[obs1])) / res_crossprod d4 <- as.numeric(crossprod(residuals(x)[obsn])) / res_crossprod stat <- d1 + d2 + d3 + d4 names(stat) <- "LBI" method <- "Baltagi/Wu LBI Test for Serial Correlation in Panel Models" } result <- list(statistic = stat, # p.value = NA, # none method = method, alternative = "serial correlation in idiosyncratic errors", data.name = data.name(x)) class(result) <- "htest" return(result) } #' @rdname pbnftest #' @export pbnftest.formula <- function(x, data, test = c("bnf", "lbi"), model = c("pooling", "within", "random"), ...) { ## formula method for pdwtest; ## defaults to pooling model test <- match.arg(test) model <- match.arg(model) cl <- match.call(expand.dots = TRUE) if (is.null(model)) model <- "pooling" names(cl)[2L] <- "formula" if (names(cl)[3L] == "") names(cl)[3L] <- "data" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl, parent.frame()) pbnftest(plm.model, test = test) } ######### Baltagi and Li's LM_rho|mu ######## ## ex Baltagi and Li (1995) Testing AR(1) against MA(1)..., ## JE 68, 133-151, test statistic (one-sided) is LM_4; ## see also idem (1997), Monte Carlo results..., ## Annales d'Econometrie et Statistique 48, formula (8) ## from version 2: disposes of Kronecker products, ## thus much faster and feasible on large NT (original ## is already infeasible for NT>3000, this takes 10'' ## on N=3000, T=10 and even 20000x10 (55'') is no problem; ## lme() hits the memory limit at ca. 20000x20) #' Baltagi and Li Serial Dependence Test For Random Effects Models #' #' \insertCite{BALT:LI:95;textual}{plm}'s Lagrange multiplier test for #' AR(1) or MA(1) idiosyncratic errors in panel models with random #' effects. #' #' This is a Lagrange multiplier test for the null of no serial #' correlation, against the alternative of either an AR(1) or a MA(1) #' process, in the idiosyncratic component of the error term in a #' random effects panel model (as the analytical expression of the #' test turns out to be the same under both alternatives, #' \insertCite{@see @BALT:LI:95 and @BALT:LI:97}{plm}. The #' `alternative` argument, defaulting to `twosided`, allows testing #' for positive serial correlation only, if set to `onesided`. #' #' @aliases pbltest #' @importFrom nlme lme #' @param x a model formula or an estimated random--effects model of #' class `plm` , #' @param data for the formula interface only: a `data.frame`, #' @param alternative one of `"twosided"`, #' `"onesided"`. Selects either \eqn{H_A: \rho \neq 0} or #' \eqn{H_A: \rho = 0} (i.e., the Normal or the Chi-squared #' version of the test), #' @param index the index of the `data.frame`, #' @param \dots further arguments. #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo #' @seealso [pdwtest()], [pbnftest()], [pbgtest()], #' [pbsytest()], [pwartest()] and #' [pwfdtest()] for other serial correlation tests for #' panel models. #' @references #' #' \insertRef{BALT:LI:95}{plm} #' #' \insertRef{BALT:LI:97}{plm} #' #' @keywords htest #' @examples #' #' data("Grunfeld", package = "plm") #' #' # formula interface #' pbltest(inv ~ value + capital, data = Grunfeld) #' #' # plm interface #' re_mod <- plm(inv ~ value + capital, data = Grunfeld, model = "random") #' pbltest(re_mod) #' pbltest(re_mod, alternative = "onesided") #' pbltest <- function (x, ...) { UseMethod("pbltest") } #' @rdname pbltest #' @export pbltest.formula <- function(x, data, alternative = c("twosided", "onesided"), index = NULL, ...) { ## this version (pbltest0) based on a "formula, pdataframe" interface ## reduce X to model matrix value (no NAs) X <- model.matrix(x, data = data) ## reduce data accordingly data <- data[which(row.names(data) %in% row.names(X)), ] if (! inherits(data, "pdata.frame")) data <- pdata.frame(data, index = index) ## need name of individual index gindex <- dimnames(attr(data, "index"))[[2L]][1L] ## make random effects formula rformula <- NULL eval(parse(text = paste("rformula <- ~1|", gindex, sep = ""))) ## est. MLE model mymod <- lme(x, data = data, random = rformula, method = "ML") nt. <- mymod$dims$N n. <- as.numeric(mymod$dims$ngrps[1L]) t. <- nt./n. Jt <- matrix(1, ncol = t., nrow = t.)/t. Et <- diag(1, t.) - Jt ## make 'bidiagonal' matrix (see BL, p.136) G <- matrix(0, ncol = t., nrow = t.) for(i in 2:t.) { G[i-1, i] <- 1 G[i, i-1] <- 1 } ## retrieve composite (=lowest level) residuals uhat <- residuals(mymod, level = 0) ## sigma2.e and sigma2.1 as in BL ## break up residuals by group to get rid of Kronecker prod. ## data have to be balanced and sorted by group/time, so this works ## pre-allocate uhat.i <- vector("list", n.) s2e <- rep(NA, n.) s21 <- rep(NA, n.) for(i in seq_len(n.)) { uhat.i[[i]] <- u.i <- uhat[t.*(i-1)+1:t.] s2e[i] <- as.numeric(tcrossprod(crossprod(u.i, Et), u.i)) s21[i] <- as.numeric(tcrossprod(crossprod(u.i, Jt), u.i)) } sigma2.e <- sum(s2e) / (n.*(t.-1)) sigma2.1 <- sum(s21) / n. ## calc. score under the null: star1 <- (Jt/sigma2.1 + Et/sigma2.e) %*% G %*% (Jt/sigma2.1 + Et/sigma2.e) star2 <- rep(NA, n.) ## again, do this group by group to avoid Kronecker prod. for(i in seq_len(n.)) { star2[i] <- as.numeric(crossprod(uhat.i[[i]], star1) %*% uhat.i[[i]]) } star2 <- sum(star2) Drho <- (n.*(t.-1)/t.) * (sigma2.1-sigma2.e)/sigma2.1 + sigma2.e/2 * star2 ## star2 is (crossprod(uhat, kronecker(In, star1)) %*% uhat) ## components for the information matrix a <- (sigma2.e - sigma2.1)/(t.*sigma2.1) j.rr <- n. * (2 * a^2 * (t.-1)^2 + 2*a*(2*t.-3) + (t.-1)) j.12 <- n.*(t.-1)*sigma2.e / sigma2.1^2 j.13 <- n.*(t.-1)/t. * sigma2.e * (1/sigma2.1^2 - 1/sigma2.e^2) j.22 <- (n. * t.^2) / (2 * sigma2.1^2) j.23 <- (n. * t.) / (2 * sigma2.1^2) j.33 <- (n./2) * (1/sigma2.1^2 + (t.-1)/sigma2.e^2) ## build up information matrix Jmat <- matrix(nrow = 3L, ncol = 3L) Jmat[1L, ] <- c(j.rr, j.12, j.13) Jmat[2L, ] <- c(j.12, j.22, j.23) Jmat[3L, ] <- c(j.13, j.23, j.33) J11 <- n.^2 * t.^2 * (t.-1) / (det(Jmat) * 4*sigma2.1^2 * sigma2.e^2) ## this is the same as J11 <- solve(Jmat)[1,1], see BL page 73 switch(match.arg(alternative), "onesided" = { LMr.m <- Drho * sqrt(J11) pval <- pnorm(LMr.m, lower.tail = FALSE) names(LMr.m) <- "z" method1 <- "one-sided" method2 <- "H0: rho = 0, HA: rho > 0" parameter <- NULL }, "twosided" = { LMr.m <- Drho^2 * J11 pval <- pchisq(LMr.m, df = 1, lower.tail = FALSE) names(LMr.m) <- "chisq" parameter <- c(df = 1) method1 <- "two-sided" method2 <- "H0: rho = 0, HA: rho != 0" } ) dname <- paste(deparse(substitute(x))) method <- paste("Baltagi and Li", method1, "LM test") alternative <- "AR(1)/MA(1) errors in RE panel model" res <- list(statistic = LMr.m, p.value = pval, method = method, alternative = alternative, parameter = parameter, data.name = dname) class(res) <- "htest" res } #' @rdname pbltest #' @export pbltest.plm <- function(x, alternative = c("twosided", "onesided"), ...) { # only continue if random effects model if (describe(x, "model") != "random") stop("Test is only for random effects models.") # call pbltest.formula the right way pbltest.formula(formula(x$formula), data = cbind(index(x), x$model), index = names(index(x)), alternative = alternative, ...) } #' Wooldridge first--difference--based test for AR(1) errors in levels #' or first--differenced panel models #' #' First--differencing--based test of serial correlation for (the idiosyncratic #' component of) the errors in either levels or first--differenced panel #' models. #' #' As \insertCite{WOOL:10;textual}{plm}, Sec. 10.6.3 observes, if the #' idiosyncratic errors in the model in levels are uncorrelated (which #' we label hypothesis `"fe"`), then the errors of the model in first #' differences (FD) must be serially correlated with #' \eqn{cor(\hat{e}_{it}, \hat{e}_{is}) = -0.5} for each \eqn{t,s}. If #' on the contrary the levels model's errors are a random walk, then #' there must be no serial correlation in the FD errors (hypothesis #' `"fd"`). Both the fixed effects (FE) and the first--differenced #' (FD) estimators remain consistent under either assumption, but the #' relative efficiency changes: FE is more efficient under `"fe"`, FD #' under `"fd"`. #' #' Wooldridge (ibid.) suggests basing a test for either hypothesis on #' a pooled regression of FD residuals on their first lag: #' \eqn{\hat{e}_{i,t}=\alpha + \rho \hat{e}_{i,t-1} + #' \eta_{i,t}}. Rejecting the restriction \eqn{\rho = -0.5} makes us #' conclude against the null of no serial correlation in errors of the #' levels equation (`"fe"`). The null hypothesis of no serial #' correlation in differenced errors (`"fd"`) is tested in a similar #' way, but based on the zero restriction on \eqn{\rho} (\eqn{\rho = #' 0}). Rejecting `"fe"` favours the use of the first--differences #' estimator and the contrary, although it is possible that both be #' rejected. #' #' `pwfdtest` estimates the `fd` model (or takes an `fd` model as #' input for the panelmodel interface) and retrieves its residuals, #' then estimates an AR(1) `pooling` model on them. The test statistic #' is obtained by applying a F test to the latter model to test the #' relevant restriction on \eqn{\rho}, setting the covariance matrix #' to `vcovHC` with the option `method="arellano"` to control for #' serial correlation. #' #' Unlike the `pbgtest` and `pdwtest`, this test does not rely on #' large--T asymptotics and has therefore good properties in ''short'' #' panels. Furthermore, it is robust to general #' heteroskedasticity. The `"fe"` version can be used to test for #' error autocorrelation regardless of whether the maintained #' specification has fixed or random effects #' \insertCite{@see @DRUK:03}{plm}. #' #' @aliases pwfdtest #' @param x an object of class `formula` or a `"fd"`-model (plm #' object), #' @param data a `data.frame`, #' @param h0 the null hypothesis: one of `"fd"`, `"fe"`, #' @param \dots further arguments to be passed on to `vcovHC` (see Details #' and Examples). #' @return An object of class `"htest"`. #' @export #' @author Giovanni Millo #' @seealso `pdwtest`, `pbgtest`, `pwartest`, #' @references #' #' \insertRef{DRUK:03}{plm} #' #' \insertRef{WOOL:02}{plm} #' Sec. 10.6.3, pp. 282--283. #' #' \insertRef{WOOL:10}{plm} #' Sec. 10.6.3, pp. 319--320 #' #' @keywords htest #' @examples #' #' data("EmplUK" , package = "plm") #' pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK) #' pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK, h0 = "fe") #' #' # pass argument 'type' to vcovHC used in test #' pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK, type = "HC3", h0 = "fe") #' #' #' # same with panelmodel interface #' mod <- plm(log(emp) ~ log(wage) + log(capital), data = EmplUK, model = "fd") #' pwfdtest(mod) #' pwfdtest(mod, h0 = "fe") #' pwfdtest(mod, type = "HC3", h0 = "fe") #' #' pwfdtest <- function(x, ...) { UseMethod("pwfdtest") } #' @rdname pwfdtest #' @export pwfdtest.formula <- function(x, data, ..., h0 = c("fd", "fe")) { cl <- match.call(expand.dots = TRUE) if (is.null(cl$model)) cl$model <- "fd" names(cl)[2L] <- "formula" if (names(cl)[3L] == "") names(cl)[3L] <- "data" m <- match(plm.arg, names(cl), 0) cl <- cl[c(1L, m)] cl[[1L]] <- quote(plm) plm.model <- eval(cl, parent.frame()) pwfdtest(plm.model, ..., h0 = h0) } #' @rdname pwfdtest #' @export pwfdtest.panelmodel <- function(x, ..., h0 = c("fd", "fe")) { ## first-difference-based serial correlation test for panel models ## ref.: Wooldridge (2002/2010), par. 10.6.3 # interface check model <- describe(x, "model") if (model != "fd") stop(paste0("input 'x' needs to be a \"fd\" model (first-differenced model), but is \"", model, "\"")) ## fetch fd residuals FDres <- x$residuals ## indices (full length! must reduce by 1st time period) ## this is an ad-hoc solution for the fact that the 'fd' model ## carries on the full indices while losing the first time period ## fetch dimensions and adapt to those of indices pdim <- pdim(x) n <- pdim$nT$n Ti_minus_one <- pdim$Tint$Ti-1 ## generate new individual index: drop one observation per individual ## NB: This is based on the assumption that the estimated FD model performs ## its diff-ing row-wise (it currently does so). If the diff-ing for FD ## is changed to diff-ing based on time dimension, this part about index ## creation needs to be re-worked because more than 1 observation per ## individual can be dropped red_id <- integer() for(i in seq_len(n)) { red_id <- c(red_id, rep(i, Ti_minus_one[i])) } # additional check # (but should error earlier already as the FD model should be non-estimable) if(length(red_id) == 0L) stop("only individuals with one observation in original data: test not feasible") # make pdata.frame for auxiliary regression: time dimension is not relevant # as the first observation of each individual was dropped -> let time dimension # be created (is not related to the original times anymore) auxdata <- pdata.frame(as.data.frame(cbind(red_id, FDres)), index = "red_id") # lag residuals by row (as the FD model diffs by row) # NB: need to consider change to shift = "time" if behaviour of FD model is changed auxdata[["FDres.1"]] <- lag(auxdata[["FDres"]], shift = "row") ## pooling model FDres vs. lag(FDres), with intercept (might as well do it w.o.) auxmod <- plm(FDres ~ FDres.1, data = auxdata, model = "pooling") switch(match.arg(h0), "fd" = {h0des <- "differenced" ## theoretical rho under H0: no serial ## corr. in differenced errors is 0 rho.H0 <- 0}, "fe" = {h0des <- "original" ## theoretical rho under H0: no serial ## corr. in original errors is -0.5 rho.H0 <- -0.5}) ## test H0: rho=rho.H0 with HAC, more params may be passed via ellipsis myvcov <- function(x) vcovHC(x, method = "arellano", ...) # calc F stat with restriction rho.H0 and robust vcov FDARstat <- ((coef(auxmod)["FDres.1"] - rho.H0)/sqrt(myvcov(auxmod)["FDres.1", "FDres.1"]))^2 names(FDARstat) <- "F" df1 <- c(df1 = 1) df2 <- c(df2 = df.residual(auxmod)) pFDARstat <- pf(FDARstat, df1 = df1, df2 = df2, lower.tail = FALSE) ## insert usual htest features RVAL <- list(statistic = FDARstat, parameter = c(df1, df2), p.value = pFDARstat, method = "Wooldridge's first-difference test for serial correlation in panels", alternative = paste("serial correlation in", h0des, "errors"), data.name = paste(deparse(substitute(x)))) class(RVAL) <- "htest" return(RVAL) } plm/R/is.pconsecutive.R0000644000176200001440000003153314414356413014521 0ustar liggesusers########### is.pconsecutive ############## # little helper function to determine if the time periods of an object are consecutive per id. # By consecutive we mean "consecutive in the numbers", i.e., is.pconsecutive takes the numerical # value of the time variable into account: t, t+1, t+2, ... where t is an integer # # For this, we need as.numeric(as.character(time_var)) where as.character is a crucial part! # Equivalent but more efficient is as.numeric(levels(id_timevar))[as.integer(id_timevar)] # (see R FAQ 7.10 for coercing factors to numeric] # and the coercion of time_var in this manner needs to be meaningful numbers. # # see also in separate file make.pconsecutive.R: # * make.pconsecutive # * make.pbalanced #' Check if time periods are consecutive #' #' This function checks for each individual if its associated time periods are #' consecutive (no "gaps" in time dimension per individual) #' #' (p)data.frame, pseries and estimated panelmodel objects can be tested if #' their time periods are consecutive per individual. For evaluation of #' consecutiveness, the time dimension is interpreted to be numeric, and the #' data are tested for being a regularly spaced sequence with distance 1 #' between the time periods for each individual (for each individual the time #' dimension can be interpreted as sequence t, t+1, t+2, \ldots{} where t is an #' integer). As such, the "numerical content" of the time index variable is #' considered for consecutiveness, not the "physical position" of the various #' observations for an individuals in the (p)data.frame/pseries (it is not #' about "neighbouring" rows). If the object to be evaluated is a pseries or a #' pdata.frame, the time index is coerced from factor via as.character to #' numeric, i.e., the series #' `as.numeric(as.character(index()[[2]]))]` is #' evaluated for gaps. #' #' The default method also works for argument `x` being an arbitrary #' vector (see **Examples**), provided one can supply arguments `id` #' and `time`, which need to ordered as stacked time series. As only #' `id` and `time` are really necessary for the default method to #' evaluate the consecutiveness, `x = NULL` is also possible. However, if #' the vector `x` is also supplied, additional input checking for equality #' of the lengths of `x`, `id` and `time` is performed, which is #' safer. #' #' For the data.frame interface, the data is ordered in the appropriate way #' (stacked time series) before the consecutiveness is evaluated. For the #' pdata.frame and pseries interface, ordering is not performed because both #' data types are already ordered in the appropriate way when created. #' #' Note: Only the presence of the time period itself in the object is tested, #' not if there are any other variables. `NA` values in individual index #' are not examined but silently dropped - In this case, it is not clear which #' individual is meant by id value `NA`, thus no statement about #' consecutiveness of time periods for those "`NA`-individuals" is #' possible. #' #' @name is.pconsecutive #' @aliases is.pconsecutive #' @param x usually, an object of class `pdata.frame`, #' `data.frame`, `pseries`, or an estimated #' `panelmodel`; for the default method `x` can also be #' an arbitrary vector or `NULL`, see **Details**, #' @param na.rm.tindex logical indicating whether any `NA` values #' in the time index are removed before consecutiveness is #' evaluated (defaults to `FALSE`), #' @param index only relevant for `data.frame` interface; if #' `NULL`, the first two columns of the data.frame are #' assumed to be the index variables; if not `NULL`, both #' dimensions ('individual', 'time') need to be specified by #' `index` for `is.pconsecutive` on data frames, for #' further details see [pdata.frame()], #' @param id,time only relevant for default method: vectors specifying #' the id and time dimensions, i. e., a sequence of individual and #' time identifiers, each as stacked time series, #' @param \dots further arguments. #' @return A named `logical` vector (names are those of the #' individuals). The i-th element of the returned vector #' corresponds to the i-th individual. The values of the i-th #' element can be: \item{TRUE}{if the i-th individual has #' consecutive time periods,} \item{FALSE}{if the i-th #' individual has non-consecutive time periods,} #' \item{"NA"}{if there are any NA values in time index of #' the i-th the individual; see also argument `na.rm.tindex` #' to remove those.} #' @export #' @author Kevin Tappe #' @seealso [make.pconsecutive()] to make data consecutive #' (and, as an option, balanced at the same time) and #' [make.pbalanced()] to make data balanced.\cr #' [pdim()] to check the dimensions of a 'pdata.frame' #' (and other objects), [pvar()] to check for individual #' and time variation of a 'pdata.frame' (and other objects), #' [lag()] for lagged (and leading) values of a #' 'pseries' object.\cr #' #' [pseries()], [data.frame()], [pdata.frame()], #' for class 'panelmodel' see [plm()] and [pgmm()]. #' @keywords attribute #' @examples #' #' data("Grunfeld", package = "plm") #' is.pconsecutive(Grunfeld) #' is.pconsecutive(Grunfeld, index=c("firm", "year")) #' #' # delete 2nd row (2nd time period for first individual) #' # -> non consecutive #' Grunfeld_missing_period <- Grunfeld[-2, ] #' is.pconsecutive(Grunfeld_missing_period) #' all(is.pconsecutive(Grunfeld_missing_period)) # FALSE #' #' # delete rows 1 and 2 (1st and 2nd time period for first individual) #' # -> consecutive #' Grunfeld_missing_period_other <- Grunfeld[-c(1,2), ] #' is.pconsecutive(Grunfeld_missing_period_other) # all TRUE #' #' # delete year 1937 (3rd period) for _all_ individuals #' Grunfeld_wo_1937 <- Grunfeld[Grunfeld$year != 1937, ] #' is.pconsecutive(Grunfeld_wo_1937) # all FALSE #' #' # pdata.frame interface #' pGrunfeld <- pdata.frame(Grunfeld) #' pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) #' is.pconsecutive(pGrunfeld) # all TRUE #' is.pconsecutive(pGrunfeld_missing_period) # first FALSE, others TRUE #' #' #' # panelmodel interface (first, estimate some models) #' mod_pGrunfeld <- plm(inv ~ value + capital, data = Grunfeld) #' mod_pGrunfeld_missing_period <- plm(inv ~ value + capital, data = Grunfeld_missing_period) #' #' is.pconsecutive(mod_pGrunfeld) #' is.pconsecutive(mod_pGrunfeld_missing_period) #' #' nobs(mod_pGrunfeld) # 200 #' nobs(mod_pGrunfeld_missing_period) # 199 #' #' #' # pseries interface #' pinv <- pGrunfeld$inv #' pinv_missing_period <- pGrunfeld_missing_period$inv #' #' is.pconsecutive(pinv) #' is.pconsecutive(pinv_missing_period) #' #' # default method for arbitrary vectors or NULL #' inv <- Grunfeld$inv #' inv_missing_period <- Grunfeld_missing_period$inv #' is.pconsecutive(inv, id = Grunfeld$firm, time = Grunfeld$year) #' is.pconsecutive(inv_missing_period, id = Grunfeld_missing_period$firm, #' time = Grunfeld_missing_period$year) #' #' # (not run) demonstrate mismatch lengths of x, id, time #' # is.pconsecutive(x = inv_missing_period, id = Grunfeld$firm, time = Grunfeld$year) #' #' # only id and time are needed for evaluation #' is.pconsecutive(NULL, id = Grunfeld$firm, time = Grunfeld$year) #' is.pconsecutive <- function(x, ...){ UseMethod("is.pconsecutive") } #' @rdname is.pconsecutive #' @export is.pconsecutive.default <- function(x, id, time, na.rm.tindex = FALSE, ...) { # argument 'x' just used for input check (if it is not NULL and is atomic) # input checks if(length(id) != length(time)) stop(paste0("arguments 'id' and 'time' must have same length: length(id): ", length(id), ", length(time) ", length(time))) if(!is.null(x) && is.atomic(x)) { # is.atomic was once is.vector, but is.vector is too strict as a factor is not a vector if(!(length(x) == length(id) && length(x) == length(time) && length(id) == length(time))) stop(paste0("arguments 'x', 'id', 'time' must have same length: length(x): ", length(x), ", length(id): ", length(id), ", length(time): ", length(time))) } # NB: 'time' is assumed to be organised as stacked time series (sorted for each individual) # (successive blocks of individuals, each block being a time series for the respective individual)) # # 'time' is in the correct order if is.pconsecutive.default is called by # is.pconsecutive.pdata.frame or is.pconsecutive.pseries as a pdata.frame (which is sorted) was constructed # in the first place; for data.frame interface the ordering is done in the respective function if(na.rm.tindex) { NA_tindex <- is.na(time) time <- time[!NA_tindex] id <- id[!NA_tindex] } # if time var is factor (as is TRUE for pdata.frames, pseries): # need to convert to numeric, do this by coering to character first (otherwise wrong results!) # see R FAQ 7.10 for coercing factors to numeric: # as.numeric(levels(factor_var))[as.integer(factor_var)] is more efficient than # as.numeric(as.character(factor_var)) if(!is.numeric(time) && is.factor(time)) time <- as.numeric(levels(time))[as.integer(time)] ### TODO: can speed up with collapse: list_id_timevar <- split(time, id, drop = TRUE) # does not yet work with test file due to NAs # NA handling is different to base R's split # list_id_timevar <- collapse::rsplit(time[-collapse::whichNA(id)], id[-collapse::whichNA(id)], drop = TRUE, use.names = FALSE) res <- vapply(list_id_timevar, function(id_timevar) { if(anyNA(id_timevar)) { NA # return NA if NA found in the time periods for individual } else { begin <- id_timevar[1L] end <- id_timevar[length(id_timevar)] # compare to length(original id_timevar) to find out if times are consecutive (end - begin + 1L) == length(id_timevar) # Alternative way of checking: # consecutive time periods from begin to end (if id_timevar were consecutive) # consecutive <- seq(from = begin, to = end, by = 1) # length(consecutive) == length(id_timevar) } }, FUN.VALUE = TRUE) res } #' @rdname is.pconsecutive #' @export is.pconsecutive.data.frame <- function(x, index = NULL, na.rm.tindex = FALSE, ...){ if (!is.null(index) && length(index) != 2L) stop("if argument 'index' is not NULL, 'index' needs to specify 'individual' and 'time' dimension for is.pconsecutive to work on a data.frame") # if index not provided, assume first two columns to be the index vars index_orig_names <- if(is.null(index)) names(x)[1:2] else index id <- x[ , index_orig_names[1L]] time <- x[ , index_orig_names[2L]] # order as stacked time series (by id and time) first, otherwise default method does not work correctly! ord <- order(id, time) x_ordered <- x[ord, ] id_ordered <- id[ord] time_ordered <- time[ord] # if (!identical(x, x_ordered)) # print("Note: for test of consecutiveness of time periods, the data.frame was ordered by index variables (id, time)") is.pconsecutive.default(x_ordered, id_ordered, time_ordered, na.rm.tindex = na.rm.tindex, ...) } #' @rdname is.pconsecutive #' @export is.pconsecutive.pseries <- function(x, na.rm.tindex = FALSE, ...){ index <- unclass(attr(x, "index")) # unclass for speed is.pconsecutive.default(x, index[[1L]], index[[2L]], na.rm.tindex = na.rm.tindex, ...) } #' @rdname is.pconsecutive #' @export is.pconsecutive.pdata.frame <- function(x, na.rm.tindex = FALSE, ...){ index <- unclass(attr(x, "index")) # unclass for speed is.pconsecutive.default(x, index[[1L]], index[[2L]], na.rm.tindex = na.rm.tindex, ...) } #' @rdname is.pconsecutive #' @export is.pconsecutive.panelmodel <- function(x, na.rm.tindex = FALSE, ...){ index <- unclass(attr(x$model, "index")) # unclass for speed # can determine solely based on indexes: is.pconsecutive.default(NULL, index[[1L]], index[[2L]], na.rm.tindex = na.rm.tindex, ...) } plm/vignettes/0000755000176200001440000000000014742231571013060 5ustar liggesusersplm/vignettes/A_plmPackage.Rmd0000644000176200001440000032572014741261755016047 0ustar liggesusers--- output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib abstract: | This introduction to the `plm` package is a modified and extended version of @Croissant:Millo:2008, published in the *Journal of Statistical Software*. Panel data econometrics is obviously one of the main fields in the statistics profession, but most of the models used are difficult to estimate with only plain `R`. `plm` is a package for `R` which intends to make the estimation of linear panel models straightforward. `plm` provides functions to estimate a wide variety of models and to make (robust) inference. title: 'Panel data econometrics in R:' subtitle: 'the plm package' author: - name: Yves Croissant - name: Giovanni Millo vignette: > %\VignetteIndexEntry{Panel data econometrics in R: the plm package} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # Introduction Panel data econometrics is a continuously developing field. The increasing availability of data observed on cross-sections of units (like households, firms, countries etc.) *and* over time has given rise to a number of estimation approaches exploiting this double dimensionality to cope with some of the typical problems associated with economic data, first of all that of unobserved heterogeneity. Timewise observation of data from different observational units has long been common in other fields of statistics (where they are often termed *longitudinal* data). In the panel data field as well as in others, the econometric approach is nevertheless peculiar with respect to experimental contexts, as it is emphasizing model specification and testing and tackling a number of issues arising from the particular statistical problems associated with economic data. Thus, while a very comprehensive software framework for (among many other features) maximum likelihood estimation of linear regression models for longitudinal data, packages `nlme` [@PINH:BATE:DEBR:SARK:07] and `lme4` [@BATE:07], is available in the `R` (@R:2008) environment and can be used, e.g., for estimation of random effects panel models, its use is not intuitive for a practicing econometrician, and maximum likelihood estimation is only one of the possible approaches to panel data econometrics. Moreover, economic panel data sets often happen to be *unbalanced* (i.e., they have a different number of observations between groups), which case needs some adaptation to the methods and is not compatible with those in `nlme`. Hence the need for a package doing panel data "from the econometrician's viewpoint" and featuring at a minimum the basic techniques econometricians are used to: random and fixed effects estimation of static linear panel data models, variable coefficients models, generalized method of moments estimation of dynamic models; and the basic toolbox of specification and misspecification diagnostics. Furthermore, we felt there was a need for automation of some basic data management tasks such as lagging, summing and, more in general, `apply`ing (in the `R` sense) functions to the data, which, although conceptually simple, become cumbersome and error-prone on two-dimensional data, especially in the case of unbalanced panels. This paper is organized as follows: Section [linear panel model](#linear-panel-model) presents a very short overview of the typical model taxonomy^[Comprehensive treatments are to be found in many econometrics textbooks, e.g., @BALT:05, @BALT:13, @BALT:21 or @WOOL:02, @WOOL:10: the reader is referred to these, especially to the first 9 chapters of @BALT:05, @BALT:13, @BALT:21.]. Section [software approach](#software-approach) discusses the software approach used in the package. The next three sections present the functionalities of the package in more detail: data management (Section [managing data and formulae](#managing-data-and-formulae)), estimation (Section [model estimation](#model-estimation)) and testing (Section [tests](#tests)), giving a short description and illustrating them with examples. Section [plm vs nlme and lme4](#nlme) compares the approach in `plm` to that of `nlme` and `lme4`, highlighting the features of the latter two that an econometrician might find most useful. Section [conclusion](#conclusions) concludes the paper. # The linear panel model{#linear-panel-model} The basic linear panel models used in econometrics can be described through suitable restrictions of the following general model: \begin{equation*} y_{it}=\alpha_{it} + \beta_{it}^\top x_{it} + u_{it} \end{equation*} where $i=1, ..., n$ is the individual (group, country ...) index, $t=1, ..., T$ is the time index and $u_{it}$ a random disturbance term of mean $0$. Of course $u_{it}$ is not estimable with $N = n \times T$ data points. A number of assumptions are usually made about the parameters, the errors and the exogeneity of the regressors, giving rise to a taxonomy of feasible models for panel data. The most common one is parameter homogeneity, which means that $\alpha_{it}=\alpha$ for all $i,t$ and $\beta_{it}=\beta$ for all $i,t$. The resulting model \begin{equation*} y_{it}=\alpha + \beta^\top x_{it} + u_{it} \end{equation*} is a standard linear model pooling all the data across $i$ and $t$. To model individual heterogeneity, one often assumes that the error term has two separate components, one of which is specific to the individual and doesn't change over time^[For the sake of exposition we are considering only the individual effects case here. There may also be time effects, which is a symmetric case, or both of them, so that the error has three components: $u_{it}=\mu_{i}+\lambda_{t}+\epsilon_{it}$.]. This is called the unobserved effects model: \begin{equation} (\#eq:errcomp) y_{it}=\alpha + \beta^\top x_{it} + \mu_i + \epsilon_{it} \end{equation} The appropriate estimation method for this model depends on the properties of the two error components. The idiosyncratic error $\epsilon_{it}$ is usually assumed well-behaved and independent of both the regressors $x_{it}$ and the individual error component $\mu_i$. The individual component may be in turn either independent of the regressors or correlated. If it is correlated, the ordinary least squares (OLS) estimator of $\beta$ would be inconsistent, so it is customary to treat the $\mu_i$ as a further set of $n$ parameters to be estimated, as if in the general model $\alpha_{it}=\alpha_{i}$ for all $t$. This is called the fixed effects (a.k.a. *within* or *least squares dummy variables*) model, usually estimated by OLS on transformed data, and gives consistent estimates for $\beta$. If the individual-specific component $\mu_i$ is uncorrelated with the regressors, a situation which is usually termed *random effects*, the overall error $u_{it}$ also is, so the OLS estimator is consistent. Nevertheless, the common error component over individuals induces correlation across the composite error terms, making OLS estimation inefficient, so one has to resort to some form of feasible generalized least squares (GLS) estimators. This is based on the estimation of the variance of the two error components, for which there are a number of different procedures available. If the individual component is missing altogether, pooled OLS is the most efficient estimator for $\beta$. This set of assumptions is usually labelled *pooling* model, although this actually refers to the errors' properties and the appropriate estimation method rather than the model itself. If one relaxes the usual hypotheses of well-behaved, white noise errors and allows for the idiosyncratic error $\epsilon_{it}$ to be arbitrarily heteroskedastic and serially correlated over time, a more general kind of feasible GLS is needed, called the *unrestricted* or *general* GLS. This specification can also be augmented with individual-specific error components possibly correlated with the regressors, in which case it is termed *fixed effects* GLS. Another way of estimating unobserved effects models through removing time-invariant individual components is by first-differencing the data: lagging the model and subtracting, the time-invariant components (the intercept and the individual error component) are eliminated, and the model \begin{equation*} \Delta y_{it}= \beta^\top \Delta x_{it} + \Delta u_{it} \end{equation*} (where $\Delta y_{it}=y_{it}-y_{i,t-1}$, $\Delta x_{it}=x_{it}-x_{i,t-1}$ and, from \@ref(eq:errcomp), $\Delta u_{it}=u_{it}-u_{i,t-1}=\Delta \epsilon_{it}$ for $t=2,...,T$) can be consistently estimated by pooled OLS. This is called the *first-difference* or FD estimator. Its relative efficiency, and so reasons for choosing it against other consistent alternatives, depends on the properties of the error term. The FD estimator is usually preferred if the errors $u_{it}$ are strongly persistent in time, because then the $\Delta u_{it}$ will tend to be serially uncorrelated. Lastly, the *between* model, which is computed on time (group) averages of the data, discards all the information due to intragroup variability but is consistent in some settings (e.g., non-stationarity) where the others are not, and is often preferred to estimate long-run relationships. Variable coefficients models relax the assumption that $\beta_{it}=\beta$ for all $i,t$. Fixed coefficients models allow the coefficients to vary along one dimension, like $\beta_{it}=\beta_i$ for all $t$. Random coefficients models instead assume that coefficients vary randomly around a common average, as $\beta_{it}=\beta+\eta_{i}$ for all $t$, where $\eta_{i}$ is a group-- (time--) specific effect with mean zero. The hypotheses on parameters and error terms (and hence the choice of the most appropriate estimator) are usually tested by means of: - *pooling* tests to check poolability, i.e., the hypothesis that the same coefficients apply across all individuals, - if the homogeneity assumption over the coefficients is established, the next step is to establish the presence of unobserved effects, comparing the null of spherical residuals with the alternative of group (time) specific effects in the error term, - the choice between fixed and random effects specifications is based on Hausman-type tests, comparing the two estimators under the null of no significant difference: if this is not rejected, the more efficient random effects estimator is chosen, - even after this step, departures of the error structure from sphericity can further affect inference, so that either screening tests or robust diagnostics are needed. Dynamic models and in general lack of strict exogeneity of the regressors, pose further problems to estimation which are usually dealt with in the generalized method of moments (GMM) framework. These were, in our opinion, the basic requirements of a panel data econometrics package for the `R` language and environment. Some, as often happens with `R`, were already fulfilled by packages developed for other branches of computational statistics, while others (like the fixed effects or the between estimators) were straightforward to compute after transforming the data, but in every case there were either language inconsistencies w.r.t. the standard econometric toolbox or subtleties to be dealt with (like, for example, appropriate computation of standard errors for the demeaned model, a common pitfall), so we felt there was need for an "all in one" econometrics-oriented package allowing to make specification searches, estimation and inference in a natural way. # Software approach{#software-approach} ## Data structure Panel data have a special structure: each row of the data corresponds to a specific individual and time period. In `plm` the `data` argument may be an ordinary `data.frame` but, in this case, an argument called `index` has to be added to indicate the structure of the data. This can be: - `NULL` (the default value), it is then assumed that the first two columns contain the individual and the time index and that observations are ordered by individual and by time period, - a character string, which should be the name of the individual index, - a character vector of length two containing the names of the individual and the time index, - an integer which is the number of individuals (only in case of a balanced panel with observations ordered by individual). The `pdata.frame` function is then called internally, which returns a `pdata.frame` which is a `data.frame` with an attribute called index. This attribute is a `data.frame` that contains the individual and the time indexes. It is also possible to use directly the `pdata.frame` function and then to use the `pdata.frame` in the estimation functions. ## Interface ### Estimation interface Package `plm` provides various functions for panel data estimation, among them: - `plm`: estimation of the basic panel models and instrumental variable panel models, *i.e.*, between and first-difference models and within and random effect models. Models are estimated internally using the `lm` function on transformed data, - `pvcm`: estimation of models with variable coefficients, - `pgmm`: estimation of generalized method of moments models, - `pggls`: estimation of general feasible generalized least squares models, - `pmg`: estimators for mean groups (MG), demeaned MG (DMG) and common correlated effects MG (CCEMG) for heterogeneous panel models, - `pcce`: estimators for common correlated effects mean groups (CCEMG) and pooled (CCEP) for panel data with common factors, - `pldv`: panel estimators for limited dependent variables. The interface of these functions is consistent with the `lm()` function. Namely, their first two arguments are `formula` and `data` (which should be a `data.frame` and is mandatory). Three additional arguments are common to these functions: - `index`: this argument enables the estimation functions to identify the structure of the data, *i.e.*, the individual and the time period for each observation, - `effect`: the kind of effects to include in the model, *i.e.*, individual effects, time effects or both^[Although in most models the individual and time effects cases are symmetric, there are exceptions: estimating the *first-difference* model on time effects is meaningless because cross-sections do not generally have a natural ordering, so trying `effect = "time"` stops with an error message as does `effect = "twoways"` which is not defined for first-difference models.], - `model`: the kind of model to be estimated, most of the time a model with fixed effects or a model with random effects. The results of these four functions are stored in an object which class has the same name of the function. They all inherit from class `panelmodel`. A `panelmodel` object contains: `coefficients`, `residuals`, `fitted.values`, `vcov`, `df.residual` and `call` and functions that extract these elements are provided. ### Testing interface The diagnostic testing interface provides both `formula` and `panelmodel` methods for most functions, with some exceptions. The user may thus choose whether to employ results stored in a previously estimated `panelmodel` object or to re-estimate it for the sake of testing. Although the first strategy is the most efficient one, diagnostic testing on panel models mostly employs OLS residuals from pooling model objects, whose estimation is computationally inexpensive. Therefore most examples in the following are based on `formula` methods, which are perhaps the cleanest for illustrative purposes. ## Computational approach to estimation The feasible GLS methods needed for efficient estimation of unobserved effects models have a simple closed-form solution: once the variance components have been estimated and hence the covariance matrix of errors $\hat{V}$, model parameters can be estimated as \begin{equation} (\#eq:naive) \hat{\beta}=(X^\top \hat{V}^{-1} X)^{-1} (X^\top \hat{V}^{-1} y) \end{equation} Nevertheless, in practice plain computation of $\hat{\beta}$ has long been an intractable problem even for moderate-sized data sets because of the need to invert the $N\times N$ $\hat{V}$ matrix. With the advances in computer power, this is no more so, and it is possible to program the "naive" estimator \@ref(eq:naive) in `R` with standard matrix algebra operators and have it working seamlessly for the standard "guinea pigs", e.g., the Grunfeld data. Estimation with a couple of thousands of data points also becomes feasible on a modern machine, although excruciatingly slow and definitely not suitable for everyday econometric practice. Memory limits would also be very near because of the storage needs related to the huge $\hat{V}$ matrix. An established solution exists for the random effects model which reduces the problem to an ordinary least squares computation. ### The (quasi--)demeaning framework The estimation methods for the basic models in panel data econometrics, the pooled OLS, random effects and fixed effects (or within) models, can all be described inside the OLS estimation framework. In fact, while pooled OLS simply pools data, the standard way of estimating fixed effects models with, say, group (time) effects entails transforming the data by subtracting the average over time (group) to every variable, which is usually termed *time-demeaning*. In the random effects case, the various feasible GLS estimators which have been put forth to tackle the issue of serial correlation induced by the group-invariant random effect have been proven to be equivalent (as far as estimation of $\beta$s is concerned) to OLS on *partially demeaned* data, where partial demeaning is defined as: \begin{equation} (\#eq:ldemmodel) y_{it} - \theta \bar{y}_i = ( X_{it} - \theta \bar{X}_{i} ) \beta + ( u_{it} - \theta \bar{u}_i ) \end{equation} where $\theta=1-[\sigma_u^2 / (\sigma_u^2 + T \sigma_e^2)]^{1/2}$, $\bar{y}$ and $\bar{X}$ denote time means of $y$ and $X$, and the disturbance $v_{it} - \theta \bar{v}_i$ is homoskedastic and serially uncorrelated. Thus the feasible RE estimate for $\beta$ may be obtained estimating $\hat{\theta}$ and running an OLS regression on the transformed data with `lm()`. The other estimators can be computed as special cases: for $\theta=1$ one gets the fixed effects estimator, for $\theta=0$ the pooled OLS one. Moreover, instrumental variable estimators of all these models may also be obtained using several calls to `lm()`. For this reason the three above estimators have been grouped inside the same function. On the output side, a number of diagnostics and a very general coefficients' covariance matrix estimator also benefits from this framework, as they can be readily calculated applying the standard OLS formulas to the demeaned data, which are contained inside `plm` objects. This will be the subject of subsection [inference in the panel model](#inference). ### The object-oriented approach to general GLS computations The covariance matrix of errors in general GLS models is too generic to fit the quasi-demeaning framework, so this method calls for a full-blown application of GLS as in \@ref(eq:naive). On the other hand, this estimator relies heavily on $n$--asymptotics, making it theoretically most suitable for situations which forbid it computationally: e.g., "short" micropanels with thousands of individuals observed over few time periods. `R` has general facilities for fast matrix computation based on object orientation: particular types of matrices (symmetric, sparse, dense etc.) are assigned the relevant class and the additional information on structure is used in the computations, sometimes with dramatic effects on performance (see @BATE:04) and packages `Matrix` (see @BATE:MAEC:2016) and `SparseM` (see @KOEN:NG:2016). Some optimized linear algebra routines are available in the `R` package `bdsmatrix` (see @THER:14) which exploit the particular block-diagonal and symmetric structure of $\hat{V}$ making it possible to implement a fast and reliable full-matrix solution to problems of any practically relevant size. The $\hat{V}$ matrix is constructed as an object of class `bdsmatrix`. The peculiar properties of this matrix class are used for efficiently storing the object in memory and then by ad-hoc versions of the `solve` and `crossprod` methods, dramatically reducing computing times and memory usage. The resulting matrix is then used "the naive way" as in \@ref(eq:naive) to compute $\hat{\beta}$, resulting in speed comparable to that of the demeaning solution. ## Inference in the panel model{#inference} General frameworks for restrictions and linear hypotheses testing are available in the `R` environment^[See packages `lmtest` (@HOTH:ZEIL:FARE:CUMM:MILL:MITC:2015) and `car` (@FOX:2016).]. These are based on the Wald test, constructed as $\hat{\beta}^\top \hat{V}^{-1} \hat{\beta}$, where $\hat{\beta}$ and $\hat{V}$ are consistent estimates of $\beta$ and $V(\beta)$, The Wald test may be used for zero-restriction (i.e., significance) testing and, more generally, for linear hypotheses in the form $(R \hat{\beta} - r)^\top [R \hat{V} R^\top ]^{-1} (R \hat{\beta} - r)$^[Moreover, `coeftest()` provides a compact way of looking at coefficient estimates and significance diagnostics.]. To be applicable, the test functions require extractor methods for coefficients' and covariance matrix estimates to be defined for the model object to be tested. Model objects in `plm` all have `coef()` and `vcov()` methods and are therefore compatible with the above functions. In the same framework, robust inference is accomplished substituting ("plugging in") a robust estimate of the coefficient covariance matrix into the Wald statistic formula. In the panel context, the estimator of choice is the White system estimator. This called for a flexible method for computing robust coefficient covariance matrices *à la White* for `plm` objects. A general White system estimator for panel data is: \begin{equation*} \hat{V}_R(\beta)=(X^\top X)^{-1} \sum_{i=1}^n{X_i^\top E_i X_i} (X^\top X)^{-1} \end{equation*} where $E_i$ is a function of the residuals $\hat{e}_{it}, \; t=1, \dots T$ chosen according to the relevant heteroskedasticity and correlation structure. Moreover, it turns out that the White covariance matrix calculated on the demeaned model's regressors and residuals (both part of `plm` objects) is a consistent estimator of the relevant model's parameters' covariance matrix, thus the method is readily applicable to models estimated by random or fixed effects, first difference or pooled OLS methods. Different pre-weighting schemes taken from package `sandwich` (see @ZEIL:04; @LUML:ZEIL:2015) are also implemented to improve small-sample performance. Robust estimators with any combination of covariance structures and weighting schemes can be passed on to the testing functions. # Managing data and formulae{#dataformula} The package is now illustrated by application to some well-known examples. It is loaded using ```{r echo=FALSE,results='hide'} options(prompt= "R> ", useFancyQuotes = FALSE, scipen = 999) library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` ```{r echo=TRUE, results='hide'} library("plm") ``` The four data sets used are `EmplUK` which was used by @AREL:BOND:91, the `Grunfeld` data [@KLEI:ZEIL:08] which is used in several econometric books, the `Produc` data used by @MUNN:90 and the `Wages` used by @CORN:RUPE:88. ```{r } data("EmplUK", package="plm") data("Produc", package="plm") data("Grunfeld", package="plm") data("Wages", package="plm") ``` ## Data structure As observed above, the current version of `plm` is capable of working with a regular `data.frame` without any further transformation, provided that the individual and time indexes are in the first two columns, as in all the example data sets but `Wages`. If this weren't the case, an `index` optional argument would have to be passed on to the estimating and testing functions. ```{r setdata1} head(Grunfeld) E <- pdata.frame(EmplUK, index=c("firm","year"), drop.index=TRUE, row.names=TRUE) head(E) head(attr(E, "index")) ``` Two further arguments are logical: `drop.index = TRUE` drops the indexes from the `data.frame` and `row.names = TRUE` computes "fancy" row names by pasting the individual and the time indexes. While extracting a series from a `pdata.frame`, a `pseries` is created, which is the original series with the index attribute. This object has specific methods, like `summary` and `as.matrix`. The former indicates the total variation of the variable and the shares of this variation due to the individual and the time dimensions. The latter gives the matrix representation of the series, with, by default, individuals as rows and times as columns. ```{r } summary(E$emp) head(as.matrix(E$emp)) ``` ## Data transformation Panel data estimation requires to apply different transformations to raw series. If $x$ is a series of length $nT$ (where $n$ is the number of individuals and $T$ is the number of time periods), the transformed series $\tilde{x}$ is obtained as $\tilde{x}=Mx$ where $M$ is a transformation matrix. Denoting $j$ a vector of one of length $T$ and $I_n$ the identity matrix of dimension $n$, we get: - the between transformation: $P=\frac{1}{T}I_n\otimes jj'$ returns a vector containing the individual means. The `Between` and `between` functions perform this operation, the first one returning a vector of length $nT$, the second one a vector of length $n$, - the within transformation: $Q=I_{nT}-P$ returns a vector containing the values in deviation from the individual means. The `Within` function performs this operation. - the first difference transformation $D=I_n \otimes d$ where $d=\left( \begin{array}{ccccccc} 1 & -1 & 0 & 0 & ... & 0 & 0 \\ 0 & 1 & -1 & 0 & ... & 0 & 0 \\ 0 & 0 & 1 & -1 & ... & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & 1 & -1 \\ \end{array} \right)$ is of dimension $(T-1,T)$. Note that `R`'s `diff()` and `lag()` functions don't compute correctly these transformations for panel data because they are unable to identify when there is a change in individual in the data. Therefore, specific methods for `pseries` objects have been written in order to handle correctly panel data. Note that compared to the `lag()` method for `ts` objects, the order of lags are indicated by a positive integer. Moreover, 0 is a relevant value and a vector argument may be provided: ```{r } head(lag(E$emp, 0:2)) ``` Further functions called `Between`, `between` and `Within` are also provided to compute the between and the within transformation. The `between` returns unique values, whereas `Between` duplicates the values and returns a vector which length is the number of observations. ```{r } head(diff(E$emp), 10) head(lag(E$emp, 2), 10) head(Within(E$emp)) head(between(E$emp), 4) head(Between(E$emp), 10) ``` ## Formulas In some circumstances, standard `formula`s are not very useful to describe a model, notably while using instrumental variable like estimators: to deal with these situations, we use the `Formula` package. The `Formula` package provides a class which enables to construct multi-part formula, each part being separated by a pipe sign (`|`). The two formulas below are identical: ```{r results='hide'} emp ~ wage + capital | lag(wage, 1) + capital emp ~ wage + capital | . -wage + lag(wage, 1) ``` In the second case, the `.` means the previous parts which describes the covariates and this part is "updated". This is particularly interesting when there are a few external instruments. # Model estimation{#modelestimation} ## Estimation of the basic models with plm Several models can be estimated with `plm` by filling the `model` argument: - the fixed effects model (`"within"`), the default, - the pooling model (`"pooling"`), - the first-difference model (`"fd"`), - the between model (`"between"`), - the error components model (`"random"`). The basic use of `plm` is to indicate the model formula, the data and the model to be estimated. For example, the fixed effects model and the random effects model are estimated using: ```{r fe_re} grun.fe <- plm(inv~value+capital, data = Grunfeld, model = "within") grun.re <- plm(inv~value+capital, data = Grunfeld, model = "random") ``` Methods to display a summary of the model estimation are available via `summary`. For example, for a `random` model, the `summary` method gives information about the variance of the components of the errors and some test statistics. Random effects of the estimated model can be extracted via `ranef`. ```{r summary_re} summary(grun.re) ranef(grun.re) ``` The fixed effects of a fixed effects model may be extracted easily using `fixef`. An argument `type` indicates how fixed effects should be computed: in levels by `type = "level"` (the default), in deviations from the overall mean by `type = "dmean"` or in deviations from the first individual by `type = "dfirst"`. ```{r } fixef(grun.fe, type = "dmean") ``` The `fixef` function returns an object of class `fixef`. A summary method is provided, which prints the effects (in deviation from the overall intercept), their standard errors and the test of equality to the overall intercept. ```{r } summary(fixef(grun.fe, type = "dmean")) ``` In case of a two-ways fixed effect model, argument `effect` is relevant in function `fixef` to extract specific effect fixed effects with possible values `"individual"` for individual fixed effects (default for two-ways fixed effect models), `"time"` for time fixed effects, and `"twoways"` for the sum of individual and time fixed effects. Example to extract the time fixed effects from a two-ways model: ```{r } grun.twfe <- plm(inv~value+capital, data=Grunfeld, model="within", effect="twoways") fixef(grun.twfe, effect = "time") ``` ## More advanced use of plm ### Random effects estimators As observed above, the random effect model is obtained as a linear estimation on quasi-demeaned data. The parameter of this transformation is obtained using preliminary estimations. Four estimators of this parameter are available, depending on the value of the argument `random.method`: - `"swar"`: from @SWAM:AROR:72, the default value, - `"walhus"`: from @WALL:HUSS:69, - `"amemiya"`: from @AMEM:71, - `"nerlove"`: from @NERLO:71. - `"ht"`: for Hausman-Taylor-type instrumental variable (IV) estimation, discussed later, see Section [Instrumental variable estimator](#instrumental-variable-est). For example, to use the `amemiya` estimator: ```{r } grun.amem <- plm(inv~value+capital, data=Grunfeld, model="random", random.method="amemiya") ``` The estimation of the variance of the error components are performed using the `ercomp` function, which has a `method` and an `effect` argument, and can be used by itself: ```{r } ercomp(inv~value+capital, data=Grunfeld, method = "amemiya", effect = "twoways") ``` ### Introducing time or two-ways effects The default behavior of `plm` is to introduce individual effects. Using the `effect` argument, one may also introduce: - time effects (`effect = "time"`), - individual and time effects (`effect = "twoways"`). For example, to estimate a two-ways effect model for the `Grunfeld` data: ```{r 2RE-amemiya} grun.tways <- plm(inv~value+capital, data = Grunfeld, effect = "twoways", model = "random", random.method = "amemiya") summary(grun.tways) ``` In the "effects" section of the printed summary of the result, the variance of the three elements of the error term and the three parameters used in the transformation are printed. ### Unbalanced panels Estimations by `plm` support unbalanced panel models. The following example is using data used by @HARR:RUBI:78 to estimate an hedonic housing prices function. It is reproduced in @BALT:CHAN:94, table 2 (and in @BALT:05, pp. 172/4; @BALT:13, pp. 195/7 tables 9.1/3). ```{r hedonic} data("Hedonic", package = "plm") Hed <- plm(mv~crim+zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+blacks+lstat, data = Hedonic, model = "random", index = "townid") summary(Hed) ``` Measures for the unbalancedness of a panel data set or the data used in estimated models are provided by function `punbalancedness`. It gives the measures $\gamma$ and $\nu$ from @AHRE:PINC:81 where for both 1 represents balanced data and the more unbalanced the data the lower the value. ```{r hedonic-punbal} punbalancedness(Hed) ``` ### Instrumental variable estimators{#instrumental-variable-est} All of the models presented above may be estimated using instrumental variables. The instruments are specified at the end of the formula after a `|` sign (pipe). The instrumental variables estimator used is indicated with the `inst.method` argument: - `"bvk"`, from @BALE:VARA:87, the default value, - `"baltagi"`, from @BALT:81, - `"am"`, from @AMEM:MACU:86, - `"bms"`, from @BREU:MIZO:SCHM:89. An illustration is in the following example from @BALT:05, p. 120; @BALT:13, p. 137; @BALT:21, p. 165, table 7.3 ("G2SLS"). ```{r G2SLS} data("Crime", package = "plm") cr <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random") summary(cr) ``` The Hausman-Taylor model (see @HAUS:TAYL:81) may be estimated with the `plm`^[Function `pht` is a deprecated way to estimate this type of model: `ht <- pht(lwage~wks+south+smsa+married+exp+I(exp^2)+ bluecol+ind+union+sex+black+ed | sex+black+bluecol+south+smsa+ind, data=Wages,index=595)`.] function by setting parameters `random.method = "ht"` and `inst.method = "baltagi"` like in the example below. The following replicates @BALT:05, pp. 129/30; @BALT:13, pp. 145/6, tables 7.4/5; @BALT:21, pp. 174/5 tables 7.5/6: ```{r hausman-taylor} ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, model = "random", random.method = "ht", inst.method = "baltagi") summary(ht) ``` ## Variable coefficients model The `pvcm` function enables the estimation of variable coefficients models. Time or individual effects are introduced if argument `effect` is fixed to `"time"` or `"individual"` (the default value). Coefficients are assumed to be fixed if `model="within"` or random if `model="random"`. In the first case, a separate OLS model is estimated for each individual (or time period). In the second case, Swamy's random coefficients model (see @SWAM:70) model is estimated. It is a generalized least squares model which uses the results of separate OLS models. Denoting $\hat{\beta}_i$ the vectors of coefficients obtained for each individual, we get: \begin{equation*} \hat{\beta}=\left(\sum_{i=1}^n \left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\right)\left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\hat{\beta}_i \end{equation*} where $\hat{\sigma}_i^2$ is the unbiased estimator of the variance of the errors for individual $i$ obtained from the preliminary estimation and: \begin{equation*} \hat{\Delta}=\frac{1}{n-1}\sum_{i=1}^n\left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right) \left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right)^\top -\frac{1}{n}\sum_{i=1}^n\hat{\sigma}_i^2(X_i^\top X_i)^{-1} \end{equation*} If this matrix is not positive-definite, the second term is dropped. With the `Grunfeld` data, we get: ```{r grunfeld.within} grun.varw <- pvcm(inv~value+capital, data=Grunfeld, model="within") grun.varr <- pvcm(inv~value+capital, data=Grunfeld, model="random") summary(grun.varr) ``` A $\chi^2$ test of homogeneous parameters of the random coefficients model is printed in the last line of the summary output. The unconditioned best linear unbiased single estimations for the coefficient of the single panel-effect specific regressions associated with the random coefficients model can be extracted from the returned object, for the example in `grun.varr$single.coefs`, while single variance-covariance matrices and standard errors are available in `grun.varr$single.vcov` and `grunvarr$single.std.error`, respectively. ## Generalized method of moments estimator The generalized method of moments is mainly used in panel data econometrics to estimate dynamic models [@AREL:BOND:91; @HOLT:NEWE:ROSE:88]. \begin{equation*} y_{it}=\rho y_{it-1}+\beta^\top x_{it}+\mu_i+\epsilon_{it} \end{equation*} The model is first differenced to get rid of the individual effect: \begin{equation*} \Delta y_{it}=\rho \Delta y_{it-1}+\beta^\top \Delta x_{it}+\Delta \epsilon_{it} \end{equation*} Least squares are inconsistent because $\Delta \epsilon_{it}$ is correlated with $\Delta y_{it-1}$. $y_{it-2}$ is a valid, but weak instrument (see @ANDE:HSIA:81). The GMM estimator uses the fact that the number of valid instruments is growing with $t$: - $t=3$: $y_1$, - $t=4$: $y_1,y_2$, - $t=5$: $y_1,y_2,y_3$. For individual $i$, the matrix of instruments is then: \begin{equation*} W_i=\left( \begin{array}{ccccccccccccc} y_1 & 0 & 0 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i3} \\ 0 & y_1 & y_2 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i4} \\ 0 & 0 & 0 & y_1 & y_2 & y_3 & ... & 0 & 0 & 0 & 0 & x_{i5} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & ... & ... & y_1 & y_2 & ... & y_{t-2} & x_{iT-2} &\\ \end{array} \right) \end{equation*} The moment conditions are: $\sum_{i=1}^n W_i^\top e_i(\beta)$ where $e_i(\beta)$ is the vector of residuals for individual $i$. The GMM estimator minimizes: \begin{equation*} \left(\sum_{i=1}^n e_i(\beta)^\top W_i\right) A \left(\sum_{i=1}^n W_i^\top e_i(\beta)\right) \end{equation*} where $A$ is the weighting matrix of the moments. One-step estimators are computed using a known weighting matrix. For the model in first differences, one uses: \begin{equation*} A^{(1)}=\left(\sum_{i=1}^n W_i^\top H^{(1)}W_i\right)^{-1} \end{equation*} with: \begin{equation*} H^{(1)}=d^\top d=\left( \begin{array}{ccccc} 2 & -1 & 0 & ... & 0\\ -1 & 2 & -1 & ... & 0\\ 0 & -1 & 2 & ... & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & 0 & -1 & 2\\ \end{array} \right) \end{equation*} Two-steps estimators are obtained using $H^{(2)}_i=\sum_{i=1}^n e^{(1)}_i e^{(1)\top }_i$ where $e_i^{(1)}$ are the residuals of the one step estimate. @BLUN:BOND:98 show that with weak hypothesis on the data generating process, supplementary moment conditions exist for the equation in level: $$ y_{it} = \gamma y_{it-1}+\mu_i+\eta_{it} $$ More precisely, they show that $\Delta y_{it-2}=y_{it-2}-y_{it-3}$ is a valid instrument. The estimator is obtained using the residual vector in difference and in level: $$ e^+_i=(\Delta e_i, e_i) $$ and the matrix of augmented moments: $$ Z_i^+=\left( \begin{array}{ccccc} Z_i & 0 & 0 & ... & 0 \\ 0 & \Delta y_{i2} & 0 & ... & 0 \\ 0 & 0 & \Delta y_{i3} & ... & 0 \\ 0 & 0 & 0 & ... & \Delta y_{iT-1} \end{array} \right) $$ The moment conditions are then \begin{eqnarray*} \left(\sum_{i=1}^n Z_i^{+\top} \left(\begin{array}{c}\bar{e}_i(\beta)\\ e_i(\beta)\end{array}\right)\right)^\top = \left(\sum_{i=1}^n y_{i1} \bar{e}_{i3},\sum_{i=1}^n y_{i1}\bar{e}_{i4},\sum_{i=1}^n y_{i2}\bar{e}_{i4}, ..., \right.\\ \left. \sum_{i=1}^n y_{i1} \bar{e}_{iT}, \sum_{i=1}^n y_{i2} \bar{e}_{iT}, ...,\sum_{i=1}^n y_{iT-2} \bar{e}_{iT}, \sum_{i=1}^n \sum_{t=3}^T x_{it} \bar{e}_{it}\right.\\ \left.\sum_{i=1}^n e_{i3} \Delta y_{i2}, \sum_{i=1}^n e_{i4} \Delta y_{i3}, ... , \sum_{i=1}^n e_{iT} \Delta y_{iT-1} \right)^\top \end{eqnarray*} The GMM estimator is provided by the `pgmm` function. By using a multi-part formula, the variables of the model and the lag structure are described. In a GMM estimation, there are "normal instruments" and "GMM instruments". GMM instruments are indicated in the second part of the formula. By default, all the variables of the model that are not used as GMM instruments are used as normal instruments, with the same lag structure; "normal" instruments may also be indicated in the third part of the formula. The `effect` argument is either `"individual"` or `"twoways"` (the default). In the first case, the model is the model is estimated in first differences to get rid of the individuals effects. In the last case, the model is estimated in first differences and time dummies are included. The `model` argument specifies whether a one-step or a two-steps model is requested (`"onestep"` or `"twosteps"`). The following example is from @AREL:BOND:91, table 4, column b. Employment is explained by past values of employment (two lags), current and first lag of wages and output and current value of capital. ```{r gmm} emp.gmm <- pgmm(log(emp)~lag(log(emp), 1:2)+lag(log(wage), 0:1)+log(capital)+ lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") summary(emp.gmm, robust = FALSE) ``` The following example is from @BLUN:BOND:98. The "sys" estimator is obtained using `transformation = "ld"` for level and difference. The `robust` argument of the `summary` method enables to use the robust covariance matrix, in case of a two-steps model with the small-sample correction proposed by @WIND:05. For all pgmm models, `robust = TRUE` is the default (but set in this example explicitly). ```{r gmm2} z2 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) + lag(log(capital), 0:1) | lag(log(emp), 2:99) + lag(log(wage), 2:99) + lag(log(capital), 2:99), data = EmplUK, effect = "twoways", model = "onestep", transformation = "ld") summary(z2, robust = TRUE) ``` ## General FGLS models General FGLS estimators are based on a two-step estimation process: first an OLS model is estimated, then its residuals $\hat{u}_{it}$ are used to estimate an error covariance matrix more general than the random effects one for use in a feasible-GLS analysis. Formally, the estimated error covariance matrix is $\hat{V}=I_n \otimes \hat{\Omega}$, with $$\hat{\Omega}=\sum_{i=1}^n \frac{\hat{u}_{it} \hat{u}_{it}^\top }{n} $$ (see @WOOL:02 10.4.3 and 10.5.5). This framework allows the error covariance structure inside every group (if `effect = "individual"`) of observations to be fully unrestricted and is therefore robust against any type of intragroup heteroskedasticity and serial correlation. This structure, by converse, is assumed identical across groups and thus general FGLS is inefficient under groupwise heteroskedasticity. Cross-sectional correlation is excluded a priori. Moreover, the number of variance parameters to be estimated with $N=n\times T$ data points is $T(T+1)/2$, which makes these estimators particularly suited for situations where $n>>T$, as e.g., in labour or household income surveys, while problematic for "long" panels, where $\hat{V}$ tends to become singular and standard errors therefore become biased downwards. In a pooled time series context (`effect = "time"`), symmetrically, this estimator is able to account for arbitrary cross-sectional correlation, provided that the latter is time-invariant (see @GREE:03 13.9.1--2, pp. 321--2). In this case serial correlation has to be assumed away and the estimator is consistent with respect to the time dimension, keeping $n$ fixed. The function `pggls` estimates general FGLS models, with either fixed or "random" effects^[The "random effect" is better termed "general FGLS" model, as in fact it does not have a proper random effects structure, but we keep this terminology for general language consistency.]. The "random effect" general FGLS is estimated by: ```{r pggls} zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="pooling") summary(zz) ``` The fixed effects `pggls` (see @WOOL:02, p. 276) is based on the estimation of a within model in the first step; the rest follows as above. It is estimated by: ```{r } zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="within") ``` The `pggls` function is similar to `plm` in many respects. An exception is that the estimate of the group covariance matrix of errors (`zz$sigma`, a matrix, not shown) is reported in the model objects instead of the usual estimated variances of the two error components. # Tests{#tests} As sketched in Section [linear panel model](#linear-panel-model), specification testing in panel models involves essentially testing for poolability, for individual or time unobserved effects and for correlation between these latter and the regressors (Hausman-type tests). As for the other usual diagnostic checks, we provide a suite of serial correlation tests, while not touching on the issue of heteroskedasticity testing. Instead, we provide heteroskedasticity-robust covariance estimators, to be described in subsection [robust covariance matrix estimation](#robust). ## Tests of poolability `pooltest` tests the hypothesis that the same coefficients apply to each individual. It is a standard F test, based on the comparison of a model obtained for the full sample and a model based on the estimation of an equation for each individual. The first argument of `pooltest` is a `plm` object. The second argument is a `pvcm` object obtained with `model="within"`. If the first argument is a pooling model, the test applies to all the coefficients (including the intercepts), if it is a within model, different intercepts are assumed. To test the hypothesis that all the coefficients in the `Grunfeld` example, excluding the intercepts, are equal, we use : ```{r } znp <- pvcm(inv ~ value + capital, data = Grunfeld, model = "within") zplm <- plm(inv ~ value + capital, data = Grunfeld, model = "within") pooltest(zplm, znp) ``` The same test can be computed using a formula as first argument of the `pooltest` function: ```{r results='hide'} pooltest(inv ~ value + capital, data = Grunfeld, model = "within") ``` ## Tests for individual and time effects `plmtest` implements Lagrange multiplier tests of individual or/and time effects based on the results of the pooling model. Its main argument is a `plm` object (the result of a pooling model) or a formula. Two additional arguments can be added to indicate the kind of test to be computed. The argument `type` is one of: - `"honda"`: @HOND:85, the default value, - `"bp"`: @BREU:PAGA:80, - `"kw"`: @KING:WU:97^[NB: Oneway King-Wu (`"kw"`) statistics (`"individual"` and `"time"`) coincide with the respective Honda statistics (`"honda"`); however, the twoway statistics of `"kw"` and `"honda"` differ.], - `"ghm"`: @GOUR:HOLL:MONF:82. The effects tested are indicated with the `effect` argument (one of `"individual"`, `"time"`, or `"twoways"`). The test statistics implemented are also suitable for unbalanced panels.^[The `"bp"` test for unbalanced panels was derived in @BALT:LI:90, the `"kw"` test for unbalanced panels in @BALT:CHAN:LI:98. The `"ghm"` test and the `"kw"` test were extended to two--way effects in @BALT:CHAN:LI:92. For a concise overview of all these statistics see @BALT:13 Sec. 4.2, pp. 68--76 (for balanced panels) and Sec. 9.5, pp. 200--203 (for unbalanced panels) or @BALT:21, Sec. 4.2, pp. 81-84 (balanced), Sec. 9.6, pp. 243-246 (unbalanced).] To test the presence of individual and time effects in the `Grunfeld` example, using the @GOUR:HOLL:MONF:82 test, we use: ```{r } g <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") plmtest(g, effect="twoways", type="ghm") ``` or ```{r results='hide'} plmtest(inv~value+capital, data=Grunfeld, effect="twoways", type="ghm") ``` `pFtest` computes F tests of effects based on the comparison of the within and the pooling model. Its main arguments are either two `plm` objects (a pooling and a within model) or a formula. ```{r } gw <- plm(inv ~ value + capital, data=Grunfeld, effect="twoways", model="within") gp <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") pFtest(gw, gp) ``` ```{r results='hide'} pFtest(inv~value+capital, data=Grunfeld, effect="twoways") ``` ## Hausman test `phtest` computes the Hausman test (at times also called Durbin--Wu--Hausman test) which is based on the comparison of two sets of estimates (see @HAUS:78). Its main arguments are two `panelmodel` objects or a formula. A classical application of the Hausman test for panel data is to compare the fixed and the random effects models: ```{r } gw <- plm(inv ~ value + capital, data = Grunfeld, model="within") gr <- plm(inv ~ value + capital, data = Grunfeld, model="random") phtest(gw, gr) ``` The command also supports the auxiliary-regression-based version as described in, e.g., @WOOL:10 Sec.10.7.3 by using the formula interface and setting argument `test = "aux"`. This auxiliary-regression-based version can be robustified by specifying a robust covariance estimator as a function through the argument `vcov`: ```{r } phtest(inv ~ value + capital, data = Grunfeld, method = "aux", vcov = vcovHC) ``` ## Tests of serial correlation{#serialcor} A model with individual effects has composite errors that are serially correlated by definition. The presence of the time-invariant error component^[Here we treat fixed and random effects alike, as components of the error term, according with the modern approach in econometrics (see @WOOL:02, @WOOL:10).] gives rise to serial correlation which does not die out over time, thus standard tests applied on pooled data always end up rejecting the null of spherical residuals^[Neglecting time effects may also lead to serial correlation in residuals (as observed in @WOOL:02 10.4.1).]. There may also be serial correlation of the "usual" kind in the idiosyncratic error terms, e.g., as an AR(1) process. By "testing for serial correlation" we mean testing for this latter kind of dependence. For these reasons, the subjects of testing for individual error components and for serially correlated idiosyncratic errors are closely related. In particular, simple (*marginal*) tests for one direction of departure from the hypothesis of spherical errors usually have power against the other one: in case it is present, they are substantially biased towards rejection. *Joint* tests are correctly sized and have power against both directions, but usually do not give any information about which one actually caused rejection. *Conditional* tests for serial correlation that take into account the error components are correctly sized under presence of both departures from sphericity and have power only against the alternative of interest. While most powerful if correctly specified, the latter, based on the likelihood framework, are crucially dependent on normality and homoskedasticity of the errors. In `plm` we provide a number of joint, marginal and conditional ML-based tests, plus some semiparametric alternatives which are robust vs. heteroskedasticity and free from distributional assumptions. ### Unobserved effects test The unobserved effects test *à la Wooldridge* (see @WOOL:02 10.4.4), is a semiparametric test for the null hypothesis that $\sigma^2_{\mu}=0$, i.e. that there are no unobserved effects in the residuals. Given that under the null the covariance matrix of the residuals for each individual is diagonal, the test statistic is based on the average of elements in the upper (or lower) triangle of its estimate, diagonal excluded: $n^{-1/2} \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is}$ (where $\hat{u}$ are the pooled OLS residuals), which must be "statistically close" to zero under the null, scaled by its standard deviation: $$W=\frac{ \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} }{ [{ \sum_{i=1}^n ( \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} } )^2 ]^{1/2} }$$ This test is ($n$-) asymptotically distributed as a standard normal regardless of the distribution of the errors. It does also not rely on homoskedasticity. It has power both against the standard random effects specification, where the unobserved effects are constant within every group, as well as against any kind of serial correlation. As such, it "nests" both random effects and serial correlation tests, trading some power against more specific alternatives in exchange for robustness. While not rejecting the null favours the use of pooled OLS, rejection may follow from serial correlation of different kinds, and in particular, quoting @WOOL:02, "should not be interpreted as implying that the random effects error structure *must* be true". Below, the test is applied to the data and model in @MUNN:90: ```{r wtest} pwtest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ``` ### Locally robust tests for serial correlation or random effects The presence of random effects may affect tests for residual serial correlation, and the opposite. One solution is to use a joint test, which has power against both alternatives. A joint LM test for random effects *and* serial correlation under normality and homoskedasticity of the idiosyncratic errors has been derived by @BALT:LI:91 and @BALT:LI:95 and is implemented as an option in `pbsytest`: ```{r pbsytestJoint} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="j") ``` Rejection of the joint test, though, gives no information on the direction of the departure from the null hypothesis, i.e.: is rejection due to the presence of serial correlation, of random effects or of both? @BERA:SOSA:YOON:01 (hereafter BSY) derive locally robust tests both for individual random effects and for first-order serial correlation in residuals as "corrected" versions of the standard LM test (see `plmtest`). While still dependent on normality and homoskedasticity, these are robust to *local* departures from the hypotheses of, respectively, no serial correlation or no random effects. The authors observe that, although suboptimal, these tests may help detecting the right direction of the departure from the null, thus complementing the use of joint tests. Moreover, being based on pooled OLS residuals, the BSY tests are computationally far less demanding than likelihood-based conditional tests. On the other hand, the statistical properties of these "locally corrected" tests are inferior to those of the non-corrected counterparts when the latter are correctly specified. If there is no serial correlation, then the optimal test for random effects is the likelihood-based LM test of Breusch and Godfrey (with refinements by Honda, see `plmtest`), while if there are no random effects the optimal test for serial correlation is, again, Breusch-Godfrey's test^[$LM_3$ in @BALT:LI:95.]. If the presence of a random effect is taken for granted, then the optimal test for serial correlation is the likelihood-based conditional LM test of @BALT:LI:95 (see `pbltest`). The serial correlation version is the default: ```{r pbsytestAR} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ``` The BSY test for random effects is implemented in the one-sided version^[Corresponding to $RSO^*_{\mu}$ in the original paper.], which takes heed that the variance of the random effect must be non-negative: ```{r pbsytestRE} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="re") ``` ### Conditional LM test for AR(1) or MA(1) errors under random effects @BALT:LI:91 and @BALT:LI:95 derive a Lagrange multiplier test for serial correlation in the idiosyncratic component of the errors under (normal, heteroskedastic) random effects. Under the null of serially uncorrelated errors, the test turns out to be identical for both the alternative of AR(1) and MA(1) processes. One- and two-sided versions are provided, the one-sided having power against positive serial correlation only. The two-sided is the default, while for the other one must specify the `alternative` option to `"onesided"`: ```{r pbltest} pbltest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, alternative="onesided") ``` As usual, the LM test statistic is based on residuals from the maximum likelihood estimate of the restricted model (random effects with serially uncorrelated errors). In this case, though, the restricted model cannot be estimated by OLS anymore, therefore the testing function depends on `lme()` in the `nlme` package for estimation of a random effects model by maximum likelihood. For this reason, the test is applicable only to balanced panels. No test has been implemented to date for the symmetric hypothesis of no random effects in a model with errors following an AR(1) process, but an asymptotically equivalent likelihood ratio test is available in the `nlme` package (see Section [plm versus nlme and lme4](#nlme)). ### General serial correlation tests A general testing procedure for serial correlation in fixed effects (FE), random effects (RE) and pooled-OLS panel models alike can be based on considerations in @WOOL:02, 10.7.2. Recall that `plm` model objects are the result of OLS estimation performed on "demeaned" data, where, in the case of individual effects (else symmetric), this means time-demeaning for the FE (`within`) model, quasi-time-demeaning for the RE (`random`) model and original data, with no demeaning at all, for the pooled OLS (`pooling`) model (see Section [software approach](#software-approach)). For the random effects model, @WOOL:02 observes that under the null of homoskedasticity and no serial correlation in the idiosyncratic errors, the residuals from the quasi-demeaned regression must be spherical as well. Else, as the individual effects are wiped out in the demeaning, any remaining serial correlation must be due to the idiosyncratic component. Hence, a simple way of testing for serial correlation is to apply a standard serial correlation test to the quasi-demeaned model. The same applies in a pooled model, w.r.t. the original data. The FE case needs some qualification. It is well-known that if the original model's errors are uncorrelated then FE residuals are negatively serially correlated, with $cor(\hat{u}_{it}, \hat{u}_{is})=-1/(T-1)$ for each $t,s$ (see @WOOL:02 10.5.4). This correlation clearly dies out as T increases, so this kind of AR test is applicable to `within` model objects only for T "sufficiently large"^[Baltagi and Li derive a basically analogous T-asymptotic test for first-order serial correlation in a FE panel model as a Breusch-Godfrey LM test on within residuals (see @BALT:LI:95 par. 2.3 and formula 12). They also observe that the test on within residuals can be used for testing on the RE model, as "the within transformation [time-demeaning, in our terminology] wipes out the individual effects, whether fixed or random". Generalizing the Durbin-Watson test to FE models by applying it to fixed effects residuals is documented in @BHAR:FRAN:NARE:82, a (modified) version for unbalanced and/or non-consecutive panels is implemented in `pbnftest` as is Baltagi-Wu's LBI statistic (for both see @BALT:WU:99).]. On the converse, in short panels the test gets severely biased towards rejection (or, as the induced correlation is negative, towards acceptance in the case of the one-sided DW test with `alternative="greater"`). See below for a serial correlation test applicable to "short" FE panel models. `plm` objects retain the "demeaned" data, so the procedure is straightforward for them. The wrapper functions `pbgtest` and `pdwtest` re-estimate the relevant quasi-demeaned model by OLS and apply, respectively, standard Breusch-Godfrey and Durbin-Watson tests from package `lmtest`: ```{r generalAR} pbgtest(grun.fe, order = 2) ``` The tests share the features of their OLS counterparts, in particular the `pbgtest` allows testing for higher-order serial correlation, which might turn useful, e.g., on quarterly data. Analogously, from the point of view of software, as the functions are simple wrappers towards `bgtest` and `dwtest`, all arguments from the latter two apply and may be passed on through the ellipsis (the `...` argument). ### Wooldridge's test for serial correlation in "short" FE panels For the reasons reported above, under the null of no serial correlation in the errors, the residuals of a FE model must be negatively serially correlated, with $cor(\hat{\epsilon}_{it}, \hat{\epsilon}_{is})=-1/(T-1)$ for each $t,s$. Wooldridge suggests basing a test for this null hypothesis on a pooled regression of FE residuals on themselves, lagged one period: $$\hat{\epsilon}_{i,t}=\alpha + \delta \hat{\epsilon}_{i,t-1} + \eta_{i,t}$$ Rejecting the restriction $\delta = -1/(T-1)$ makes us conclude against the original null of no serial correlation. The building blocks available in `plm` make it easy to construct a function carrying out this procedure: first the FE model is estimated and the residuals retrieved, then they are lagged and a `pooling` AR(1) model is estimated. The test statistic is obtained by applying the above restriction on $\delta$ and supplying a heteroskedasticity- and autocorrelation-consistent covariance matrix (`vcovHC` with the appropriate options, in particular `method="arellano"`)^[see subsection [robust covariance matrix estimation](#robust).]. ```{r pwartest} pwartest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ``` The test is applicable to any FE panel model, and in particular to "short" panels with small $T$ and large $n$. ### Wooldridge's first-difference-based test In the context of the first difference model, @WOOL:02, 10.6.3 proposes a serial correlation test that can also be seen as a specification test to choose the most efficient estimator between fixed effects (`within`) and first difference (`fd`). The starting point is the observation that if the idiosyncratic errors of the original model $u_{it}$ are uncorrelated, the errors of the (first) differenced model^[Here, $e_{it}$ for notational simplicity (and as in Wooldridge): equivalent to $\Delta \epsilon_{it}$ in the general notation of the paper.] $e_{it} \equiv u_{it}-u_{i,t-1}$ will be correlated, with $cor(e_{it}, e_{i,t-1})=-0.5$, while any time-invariant effect, "fixed" or "random", is wiped out in the differencing. So a serial correlation test for models with individual effects of any kind can be based on estimating the model $$\hat{u}_{i,t}= \delta \hat{u}_{i,t-1} + \eta_{i,t}$$ and testing the restriction $\delta = -0.5$, corresponding to the null of no serial correlation. @DRUK:03 provides Monte Carlo evidence of the good empirical properties of the test. On the other extreme (see @WOOL:02 10.6.1), if the differenced errors $e_{it}$ are uncorrelated, as by definition $u_{it} = u_{i,t-1} + e_{it}$, then $u_{it}$ is a random walk. In this latter case, the most efficient estimator is the first difference (`fd`) one; in the former case, it is the fixed effects one (`within`). The function `pwfdtest` allows testing either hypothesis: the default behaviour `h0="fd"` is to test for serial correlation in *first-differenced* errors: ```{r pwfdtest1} pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ``` while specifying `h0="fe"` the null hypothesis becomes no serial correlation in *original* errors, which is similar to the `pwartest`. ```{r pwfdtest2} pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK, h0="fe") ``` Not rejecting one of the two is evidence in favour of using the estimator corresponding to `h0`. Should the truth lie in the middle (both rejected), whichever estimator is chosen will have serially correlated errors: therefore it will be advisable to use the autocorrelation-robust covariance estimators from the subsection [robust covariance matrix estimation](#robust) in inference. ## Tests for cross-sectional dependence Next to the more familiar issue of serial correlation, over the last years a growing body of literature has been dealing with cross-sectional dependence (henceforth: XSD) in panels, which can arise, e.g., if individuals respond to common shocks (as in the literature on *factor models*) or if spatial diffusion processes are present, relating individuals in a way depending on a measure of distance (*spatial models*). The subject is huge, and here we touch only some general aspects of misspecification testing and valid inference. If XSD is present, the consequence is, at a minimum, inefficiency of the usual estimators and invalid inference when using the standard covariance matrix^[This is the case, e.g., if in an unobserved effects model when XSD is due to an unobservable factor structure, with factors that are uncorrelated with the regressors. In this case the within or random estimators are still consistent, although inefficient (see @DEHO:SARA:06).]. The plan is to have in `plm` both misspecification tests to detect XSD and robust covariance matrices to perform valid inference in its presence, like in the serial dependence case. For now, though, only misspecification tests are included. ### CD and LM-type tests for global cross-sectional dependence The function `pcdtest` implements a family of XSD tests which can be applied in different settings, ranging from those where $T$ grows large with $n$ fixed to "short" panels with a big $n$ dimension and a few time periods. All are based on (transformations of--) the product-moment correlation coefficient of a model's residuals, defined as $$ \hat{\rho}_{ij}=\frac{\sum_{t=1}^T \hat{u}_{it} \hat{u}_{jt}}{(\sum_{t=1}^T \hat{u}^2_{it})^{1/2} (\sum_{t=1}^T \hat{u}^2_{jt})^{1/2} } $$ i.e., as averages over the time dimension of pairwise correlation coefficients for each pair of cross-sectional units. The Breusch-Pagan [@BREU:PAGA:80] LM test, based on the squares of $\rho_{ij}$, is valid for $T \rightarrow \infty$ with $n$ fixed; defined as $$LM=\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2$$ where in the case of an unbalanced panel only pairwise complete observations are considered, and $T_{ij}=min(T_i,T_j)$ with $T_i$ being the number of observations for individual $i$; else, if the panel is balanced, $T_{ij}=T$ for each $i,j$. The test is distributed as $\chi^2_{n(n-1)/2}$. It is inappropriate whenever the $n$ dimension is "large". A scaled version, applicable also if $T \rightarrow \infty$ and *then* $n \rightarrow \infty$ (as in some pooled time series contexts), is defined as $$SCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1 )$$ and distributed as a standard normal (see @PESA:04). A bias-corrected scaled version, $BCSCLM$, for the *fixed effect model with individual effects* only is also available which is simply the $SCLM$ with a term correcting for the bias (@BALT:FENG:KAO:12)^[The unbalanced version of this statistic uses max(Tij) for T in the bias-correction term.]. This statistic is also asymptotically distributed as standard normal. $$BCSCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1)-\frac{n}{2(T-1)}$$ Pesaran's (@PESA:04, @PESA:15) $CD$ test $$CD=\sqrt{\frac{2}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \sqrt{T_{ij}} \hat{\rho}_{ij} )$$ based on $\rho_{ij}$ without squaring (also distributed as a standard normal) is appropriate both in $n$-- and in $T$--asymptotic settings. It has remarkable properties in samples of any practically relevant size and is robust to a variety of settings. The only big drawback is that the test loses power against the alternative of cross-sectional dependence if the latter is due to a factor structure with factor loadings averaging zero, that is, some units react positively to common shocks, others negatively. The default version of the test is `"cd"` yielding Pesaran's $CD$ test. These tests are originally meant to use the residuals of separate estimation of one time-series regression for each cross-sectional unit, so this is the default behaviour of `pcdtest`. ```{r pcdtest1} pcdtest(inv~value+capital, data=Grunfeld) ``` If a different model specification (`within`, `random`, ...) is assumed consistent, one can resort to its residuals for testing^[This is also the only solution when the time dimension's length is insufficient for estimating the heterogeneous model.] by specifying the relevant `model` type. The main argument of this function may be either a model of class `panelmodel` or a `formula` and a `data.frame`; in the second case, unless `model` is set to `NULL`, all usual parameters relative to the estimation of a `plm` model may be passed on. The test is compatible with any consistent `panelmodel` for the data at hand, with any specification of `effect`. E.g., specifying `effect = "time"` or `effect = "twoways"` allows to test for residual cross-sectional dependence after the introduction of time fixed effects to account for common shocks. ```{r pcdtest2} pcdtest(inv~value+capital, data=Grunfeld, model="within") ``` If the time dimension is insufficient and `model=NULL`, the function defaults to estimation of a `within` model and issues a warning. ### CD(p) test for local cross-sectional dependence A *local* variant of the $CD$ test, called $CD(p)$ test [@PESA:04], takes into account an appropriate subset of *neighbouring* cross-sectional units to check the null of no XSD against the alternative of *local* XSD, i.e. dependence between neighbours only. To do so, the pairs of neighbouring units are selected by means of a binary proximity matrix like those used in spatial models. In the original paper, a regular ordering of observations is assumed, so that the $m$-th cross-sectional observation is a neighbour to the $(m-1)$-th and to the $(m+1)$-th. Extending the $CD(p)$ test to irregular lattices, we employ the binary proximity matrix as a selector for discarding the correlation coefficients relative to pairs of observations that are not neighbours in computing the $CD$ statistic. The test is then defined as $$CD=\sqrt{\frac{1}{\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} w(p)_{ij}}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} [w(p)]_{ij} \sqrt{T_{ij}}\hat{\rho}_{ij} )$$ where $[w(p)]_{ij}$ is the $(i,j)$-th element of the $p$-th order proximity matrix, so that if $h,k$ are not neighbours, $[w(p)]_{hk}=0$ and $\hat{\rho}_{hk}$ gets "killed"; this is easily seen to reduce to formula (14) in Pesaran [@PESA:04] for the special case considered in that paper. The same can be applied to the $LM$, $SCLM$, and $BCSCLM$ tests. Therefore, the *local* version of either test can be computed supplying an $n \times n$ matrix (of any kind coercible to `logical`), providing information on whether any pair of observations are neighbours or not, to the `w` argument. If `w` is supplied, only neighbouring pairs will be used in computing the test; else, `w` will default to `NULL` and all observations will be used. The matrix needs not really be binary, so commonly used "row-standardized" matrices can be employed as well: it is enough that neighbouring pairs correspond to nonzero elements in `w` ^[The very comprehensive package `spdep` for spatial dependence analysis (see @BIVA:08) contains features for creating, lagging and manipulating *neighbour list* objects of class `nb`, that can be readily converted to and from proximity matrices by means of the `nb2mat` function. Higher orders of the $CD(p)$ test can be obtained by lagging the corresponding `nb`s through `nblag`.]. ## Panel unit root tests ### Overview of functions for panel unit root testing Below, first an overview is provided which tests are implemented per functions. A theoretical treatment is given for a few of those tests later on. The package `plm` offers several panel unit root tests contained in three functions: - `purtest` (Levin-Lin-Chu test, IPS test, several Fisher-type tests, Hadri's test), - `cipstest` (cross-sectionally augmented IPS test), and - `phansitest` (Simes' test). While `purtest` implements various tests which can be selected via its `test` argument, `cipstest` and `phansitest` are functions for a specific test each. Function `purtest` offers the following tests by setting argument `test` to: - `"levinlin"` (default), for the Levin-Lin-Chu test (@LEVIN:LIN:CHU:02), see below for a theoretical exposition ([Levin-Lin-Chu test](#levinlin))), - `"ips"`, for Im-Pesaran-Shin (IPS) test by @IM:PESAR:SHIN:03, see below for a theoretical exposition ([Im-Pesaran-Shin test](#ips))), - `"madwu"`, is the inverse $\chi^2$ test by @MADDA:WU:99, also called P test by @CHOI:01, - `"Pm"`, is the modified P test proposed by @CHOI:01 for large N, - `"invnormal"`, is the inverse normal test (@CHOI:01), - `"logit"`, is the logit test (@CHOI:01), - `"hadri"`, for Hadri's test (@HADR:00). The tests in `purtest` are often called first generation panel unit root tests as they do assume absence of cross-sectional correlation; all these, except Hadri's test, are based on the estimation of augmented Dickey-Fuller (ADF) regressions for each time series. A statistic is then computed using the t-statistics associated with the lagged variable. I a different manner, the Hadri residual-based LM statistic is the cross-sectional average of individual KPSS statistics (@KWIA:PHIL:SCHM:SHIN:92), standardized by their asymptotic mean and standard deviation. Among the tests in `purtest`, `"madwu"`, `"Pm"`, `"invormal"`, and `"logit"` are Fisher-type tests.^[The individual p-values for the Fisher-type tests are approximated as described in @MACK:96 if the package `urca` (@PFAFF:08) is available, otherwise as described in @MACK:94.] `purtest` returns an object of class `"purtest"` which contains details about the test performed, among them details about the individual regressions/statistics for the test. Associated `summary` and `print.summary` methods can be used to extract/display the additional information. Function `cipstest` implements Pesaran's (@pes07) cross-sectionally augmented version of the Im-Pesaran-Shin panel unit root test and is a so-called second-generation panel unit root test. Function `phansitest` implements the idea of @HANCK:13 to apply Simes' testing approach for intersection of individual hypothesis tests to panel unit root testing, see below for a more thorough treatment of [Simes’ approach for intersecting hypotheses](#phansitest). ### Preliminary results We consider the following model: $$ y_{it} = \delta y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} $$ The unit root hypothesis is $\rho = 1$. The model can be rewritten in difference: $$ \Delta y_{it} = \rho y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} $$ So that the unit-root hypothesis is now $\rho = 0$. Some of the unit-root tests for panel data are based on preliminary results obtained by running the above Augmented Dickey-Fuller (ADF) regression. First, we have to determine the optimal number of lags $p_i$ for each time-series. Several possibilities are available. They all have in common that the maximum number of lags have to be chosen first. Then, $p_i$ can be chosen by using: - the Schwarz information criterion (SIC) (also known as Bayesian information criterion (BIC)), - the Akaike information criterion (AIC), - the Hall's method, which consist in removing the higher lags while they are not significant. The ADF regression is run on $T-p_i-1$ observations for each individual, so that the total number of observations is $n\times \tilde{T}$ where $\tilde{T}=T-p_i-1$ $\bar{p}$ is the average number of lags. Call $e_{i}$ the vector of residuals. Estimate the variance of the $\epsilon_i$ as: $$ \hat{\sigma}_{\epsilon_i}^2 = \frac{\sum_{t=p_i+1}^{T} e_{it}^2}{df_i} $$ ### Levin-Lin-Chu model{#levinlin} Then, as per @LEVIN:LIN:CHU:02, compute artificial regressions of $\Delta y_{it}$ and $y_{it-1}$ on $\Delta y_{it-L}$ and $d_{mt}$ and get the two vectors of residuals $z_{it}$ and $v_{it}$. Standardize these two residuals and run the pooled regression of $z_{it}/\hat{\sigma}_i$ on $v_{it}/\hat{\sigma}_i$ to get $\hat{\rho}$, its standard deviation $\hat{\sigma}({\hat{\rho}})$ and the t-statistic $t_{\hat{\rho}}=\hat{\rho}/\hat{\sigma}({\hat{\rho}})$. Compute the long run variance of $y_i$ : $$ \hat{\sigma}_{yi}^2 = \frac{1}{T-1}\sum_{t=2}^T \Delta y_{it}^2 + 2 \sum_{L=1}^{\bar{K}}w_{\bar{K}L}\left[\frac{1}{T-1}\sum_{t=2+L}^T \Delta y_{it} \Delta y_{it-L}\right] $$ Define $\bar{s}_i$ as the ratio of the long and short term variance and $\bar{s}$ the mean for all the individuals of the sample $$ s_i = \frac{\hat{\sigma}_{yi}}{\hat{\sigma}_{\epsilon_i}} $$ $$ \bar{s} = \frac{\sum_{i=1}^n s_i}{n} $$ $$ t^*_{\rho}=\frac{t_{\rho}- n \bar{T} \bar{s} \hat{\sigma}_{\tilde{\epsilon}}^{-2} \hat{\sigma}({\hat{\rho}}) \mu^*_{m\tilde{T}}}{\sigma^*_{m\tilde{T}}} $$ follows a normal distribution under the null hypothesis of stationarity. $\mu^*_{m\tilde{T}}$ and $\sigma^*_{m\tilde{T}}$ are given in table 2 of the original paper and are also available in the package. An example how the Levin-Lin-Chu test is performed with `purtest` using a lag of 2 and intercept and a time trend as exogenous variables in the ADF regressions is: ```{r levinlin} data("HousePricesUS", package = "pder") lprice <- log(pdata.frame(HousePricesUS)$price) (lev <- purtest(lprice, test = "levinlin", lags = 2, exo = "trend")) summary(lev) ### gives details ``` ### Im-Pesaran-Shin (IPS) test{#ips} This test by @IM:PESAR:SHIN:03 does not require that $\rho$ is the same for all the individuals. The null hypothesis is still that all the series have an unit root, but the alternative is that some may have a unit root and others have different values of $\rho_i <0$. The test is based on the average of the student statistic of the $\rho$ obtained for each individual: $$ \bar{t}=\frac{1}{n}\sum_{i=1}^n t_{\rho i} $$ The statistic is then: $$ z = \frac{\sqrt{n}\left(\bar{t}- E(\bar{t})\right)}{\sqrt{V(\bar{t})}} $$ $\mu^*_{m\tilde{T}}$ and $\sigma^*_{m\tilde{T}}$ are given in table 2 of the original paper and are also available in the package. An example of the IPS test with `purtest` with the same settings as in the previously performed Levin-Lin-Chu test is: ```{r ips} purtest(lprice, test = "ips", lags = 2, exo = "trend") ``` ### Simes' approach: intersecting hypotheses{#phansitest} A different approach to panel unit root testing can be drawn from the general Simes' test for intersection of individual hypothesis tests [@SIMES:86]. @HANCK:13 suggests to apply the approach for panel unit root testing: The tests works by combining p-values from single hypothesis tests (individual unit root tests) with a global (intersected) hypothesis and controls for the multiplicity in testing. Thus, it works "on top" of any panel unit root test which yield a p-value for each individual series. Unlike most other panel unit root tests, this approach allows to discriminate between individuals for which the individual H0 (unit root present for individual series) is rejected/is not rejected and requires a pre-specified significance level. Further, the test is robust versus general patterns of cross-sectional dependence. The function `phansitest` for this test takes as main input object either a numeric containing p-values of individual tests or a `"purtest"` object as produced by function `purtest` which holds a suitable pre-computed panel unit root test (one that produces p-values per individual series). The significance level is set by argument `alpha` (default 5 %). The function's return value is a list with detailed evaluation of the applied Simes test. The associated print method gives a verbal evaluation. The following examples shows both accepted ways of input, the first example replicates @HANCK:13, table 11 (left side), who applied some panel unit root test for a Purchasing Power Parity analysis per country (individual H0 hypotheses per series) to get the individual p-values and then used Simes' approach for testing the global (intersecting) hypothesis for the whole panel. ```{r phansitest1} ### input is numeric (p-values), replicates Hanck (2013), Table 11 (left side) pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050, 0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475) countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France", "Germany","Belgium","U.K.","Brazil","Australia","Netherlands", "Portugal","Canada", "Spain","Denmark","Switzerland","Japan") names(pvals) <- countries h <- phansitest(pvals) print(h) h$rejected # logical indicating the individuals with rejected individual H0 ``` ```{r phansitest2, results='hide'} ### input is a (suitable) purtest object / different example y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu") phansitest(obj, alpha = 0.06) # test with significance level set to 6 % ``` ## Robust covariance matrix estimation{#robust} Robust estimators of the covariance matrix of coefficients are provided, mostly for use in Wald-type tests, and this section provides some basics and examples. A more comprehensive exposition of the theory and the capabilities that come with the plm package is given in @mil17b. `vcovHC` estimates three "flavours" of White's heteroskedasticity-consistent covariance matrix^[See @WHIT:80 and @WHIT:84b.] (known as the *sandwich* estimator). Interestingly, in the context of panel data the most general version also proves consistent vs. serial correlation. All types assume no correlation between errors of different groups while allowing for heteroskedasticity across groups, so that the full covariance matrix of errors is $V=I_n \otimes \Omega_i; i=1,..,n$. As for the *intragroup* error covariance matrix of every single group of observations, `"white1"` allows for general heteroskedasticity but no serial correlation, *i.e.* \begin{equation} (\#eq:omegaW1) \Omega_i= \left[ \begin{array}{c c c c} \sigma_{i1}^2 & \dots & \dots & 0 \\ 0 & \sigma_{i2}^2 & & \vdots \\ \vdots & & \ddots & 0 \\ 0 & ... & ... & \sigma_{iT}^2 \\ \end{array} \right] \end{equation} while `"white2"` is `"white1"` restricted to a common variance inside every group, estimated as $\sigma_i^2=\sum_{t=1}^T{\hat{u}_{it}^2}/T$, so that $\Omega_i=I_T \otimes \sigma_i^2$ (see @GREE:03, 13.7.1--2 and @WOOL:02, 10.7.2; `"arellano"` (see ibid. and the original ref. @AREL:87) allows a fully general structure w.r.t. heteroskedasticity and serial correlation: \begin{equation} (\#eq:omegaArellano) \Omega_i= \left[ \begin{array}{c c c c c} \sigma_{i1}^2 & \sigma_{i1,i2} & \dots & \dots & \sigma_{i1,iT} \\ \sigma_{i2,i1} & \sigma_{i2}^2 & & & \vdots \\ \vdots & & \ddots & & \vdots \\ \vdots & & & \sigma_{iT-1}^2 & \sigma_{iT-1,iT} \\ \sigma_{iT,i1} & \dots & \dots & \sigma_{iT,iT-1} & \sigma_{iT}^2 \\ \end{array} \right] \end{equation} The latter is, as already observed, consistent w.r.t. timewise correlation of the errors, but on the converse, unlike the White 1 and 2 methods, it relies on large $n$ asymptotics with small $T$. The fixed effects case, as already observed in Section [tests of serial correlation](#serialcor) on serial correlation, is complicated by the fact that the demeaning induces serial correlation in the errors. The original White estimator (`"white1"`) turns out to be inconsistent for fixed $T$ as $n$ grows, so in this case it is advisable to use the `"arellano"` version (see @STOC:WATS:08). The errors may be weighted according to the schemes proposed by @MACK:WHIT:85 and @CRIB:04 to improve small-sample performance^[The HC3 and HC4 weighting schemes are computationally expensive and may hit memory limits for $nT$ in the thousands, where on the other hand it makes little sense to apply small sample corrections.]. The main use of `vcovHC` (and the other variance-covariance estimators provided in the package `vcovBK`, `vcovNW`, `vcovDC`, `vcovSCC`) is to pass it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or together with testing functions from the `lmtest` and `car` packages. All of these typically allow passing the `vcov` or `vcov.` parameter either as a matrix or as a function (see also @ZEIL:04). If one is happy with the defaults, it is easiest to pass the function itself^[For `coeftest` set `df = Inf` to have the coefficients' tests be performed with standard normal distribution instead of t distribution as we deal with a random effects model here. For these types of models, the precise distribution of the coefficients estimates is unknown.]: ```{r vcovHC1} re <- plm(inv~value+capital, data = Grunfeld, model = "random") summary(re, vcov = vcovHC) # gives usual summary output but with robust test statistics library("lmtest") coeftest(re, vcovHC, df = Inf) ``` Another approach is to compute the covariance matrix inside the call and pass it on: ```{r vcovHC2, results='hide'} summary(re, vcov = vcovHC(re, method="white2", type="HC3")) coeftest(re, vcovHC(re, method="white2", type="HC3"), df = Inf) ``` For some tests, e.g., for multiple model comparisons by `waldtest`, one should always provide a function^[Joint zero-restriction testing still allows providing the `vcov` of the unrestricted model as a matrix, see the documentation of package `lmtest`.]. In this case, optional parameters are provided as shown below (see also @ZEIL:04, p. 12): ```{r waldtest-vcovHC} waldtest(re, update(re, . ~ . -capital), vcov=function(x) vcovHC(x, method="white2", type="HC3")) ``` Moreover, `linearHypothesis` from package `car` may be used to test for linear restrictions: ```{r car-vcovHC} library("car") linearHypothesis(re, "2*value=capital", vcov. = vcovHC) ``` A specific methods are also provided for `pcce` and `pgmm` objects, for the latter `vcovHC` provides the robust covariance matrix proposed by @WIND:05 for generalized method of moments estimators. # plm versus nlme and lme4{#nlme} The models termed *panel* by the econometricians have counterparts in the statistics literature on *mixed* models (or *hierarchical models*, or *models for longitudinal data*), although there are both differences in jargon and more substantial distinctions. This language inconsistency between the two communities, together with the more complicated general structure of statistical models for longitudinal data and the associated notation in the software, is likely to scare some practicing econometricians away from some potentially useful features of the `R` environment, so it may be useful to provide here a brief reconciliation between the typical panel data specifications used in econometrics and the general framework used in statistics for mixed models^[This discussion does not consider GMM models. One of the basic reasons for econometricians not to choose maximum likelihood methods in estimation is that the strict exogeneity of regressors assumption required for consistency of the ML models reported in the following is often inappropriate in economic settings.]. `R` is particularly strong on mixed models' estimation, thanks to the long-standing `nlme` package (see @PINH:BATE:DEBR:SARK:07) and the more recent `lme4` package, based on S4 classes (see @BATE:07)^[The standard reference on the subject of mixed models in `S`/`R` is @PINH:BATE:00.]. In the following we will refer to the more established `nlme` to give some examples of "econometric" panel models that can be estimated in a likelihood framework, also including some likelihood ratio tests. Some of them are not feasible in `plm` and make a useful complement to the econometric "toolbox" available in `R`. ## Fundamental differences between the two approaches Econometrics deal mostly with non-experimental data. Great emphasis is put on specification procedures and misspecification testing. Model specifications tend therefore to be very simple, while great attention is put on the issues of endogeneity of the regressors, dependence structures in the errors and robustness of the estimators under deviations from normality. The preferred approach is often semi- or non-parametric, and heteroskedasticity-consistent techniques are becoming standard practice both in estimation and testing. For all these reasons, although the maximum likelihood framework is important in testing^[Lagrange Multiplier tests based on the likelihood principle are suitable for testing against more general alternatives on the basis of a maintained model with spherical residuals and find therefore application in testing for departures from the classical hypotheses on the error term. The seminal reference is @BREU:PAGA:80.] and sometimes used in estimation as well, panel model estimation in econometrics is mostly accomplished in the generalized least squares framework based on Aitken's Theorem and, when possible, in its special case OLS, which are free from distributional assumptions (although these kick in at the diagnostic testing stage). On the contrary, longitudinal data models in `nlme` and `lme4` are estimated by (restricted or unrestricted) maximum likelihood. While under normality, homoskedasticity and no serial correlation of the errors OLS are also the maximum likelihood estimator, in all the other cases there are important differences. The econometric GLS approach has closed-form analytical solutions computable by standard linear algebra and, although the latter can sometimes get computationally heavy on the machine, the expressions for the estimators are usually rather simple. ML estimation of longitudinal models, on the contrary, is based on numerical optimization of nonlinear functions without closed-form solutions and is thus dependent on approximations and convergence criteria. For example, the "GLS" functionality in `nlme` is rather different from its "econometric" counterpart. "Feasible GLS" estimation in `plm` is based on a single two-step procedure, in which an inefficient but consistent estimation method (typically OLS) is employed first in order to get a consistent estimate of the errors' covariance matrix, to be used in GLS at the second step; on the converse, "GLS" estimators in `nlme` are based on iteration until convergence of two-step optimization of the relevant likelihood. ## Some false friends The *fixed/random effects* terminology in econometrics is often recognized to be misleading, as both are treated as random variates in modern econometrics (see, e.g., @WOOL:02 10.2.1). It has been recognized since Mundlak's classic paper (@MUND:78) that the fundamental issue is whether the unobserved effects are correlated with the regressors or not. In this last case, they can safely be left in the error term, and the serial correlation they induce is cared for by means of appropriate GLS transformations. On the contrary, in the case of correlation, "fixed effects" methods such as least squares dummy variables or time-demeaning are needed, which explicitly, although inconsistently^[For fixed effects estimation, as the sample grows (on the dimension on which the fixed effects are specified) so does the number of parameters to be estimated. Estimation of individual fixed effects is $T$-- (but not $n$--) consistent, and the opposite.], estimate a group-- (or time--) invariant additional parameter for each group (or time period). Thus, from the point of view of model specification, having *fixed effects* in an econometric model has the meaning of allowing the intercept to vary with group, or time, or both, while the other parameters are generally still assumed to be homogeneous. Having *random effects* means having a group-- (or time--, or both) specific component in the error term. In the mixed models literature, on the contrary, *fixed effect* indicates a parameter that is assumed constant, while *random effects* are parameters that vary randomly around zero according to a joint multivariate normal distribution. So, the FE model in econometrics has no counterpart in the mixed models framework, unless reducing it to OLS on a specification with one dummy for each group (often termed *least squares dummy variables*, or LSDV model) which can trivially be estimated by OLS. The RE model is instead a special case of a mixed model where only the intercept is specified as a random effect, while the "random" type variable coefficients model can be seen as one that has the same regressors in the fixed and random sets. The unrestricted generalized least squares can in turn be seen, in the `nlme` framework, as a standard linear model with a general error covariance structure within the groups and errors uncorrelated across groups. ## A common taxonomy To reconcile the two terminologies, in the following we report the specification of the panel models in `plm` according to the general expression of a mixed model in Laird-Ware form [see the web appendix to @FOX:02] and the `nlme` estimation commands for maximum likelihood estimation of an equivalent specification^[In doing so, we stress that "equivalence" concerns only the specification of the model, and neither the appropriateness nor the relative efficiency of the relevant estimation techniques, which will of course be dependent on the context. Unlike their mixed model counterparts, the specifications in `plm` are, strictly speaking, distribution-free. Nevertheless, for the sake of exposition, in the following we present them in the setting which ensures consistency and efficiency (e.g., we consider the hypothesis of spherical errors part of the specification of pooled OLS and so forth).]. ### The Laird-Ware representation for mixed models A general representation for the linear mixed effects model is given in @LAIR:WARE:82. $$ \begin{array}{rcl} y_{it} & = & \beta_1 x_{1ij} + \dots + \beta_p x_{pij} \\ & & b_1 z_{1ij} + \dots + b_p z_{pij} + \epsilon_{ij} \\ b_{ik} & \sim & N(0,\psi^2_k), \phantom{p} Cov(b_k,b_{k'}) = \psi_{kk'} \\ \epsilon_{ij} & \sim & N(0,\sigma^2 \lambda_{ijj}), \phantom{p} Cov(\epsilon_{ij},\epsilon_{ij'}) = \sigma^2 \lambda_{ijj'} \\ \end{array} $$ where the $x_1, \dots x_p$ are the fixed effects regressors and the $z_1, \dots z_p$ are the random effects regressors, assumed to be normally distributed across groups. The covariance of the random effects coefficients $\psi_{kk'}$ is assumed constant across groups and the covariances between the errors in group $i$, $\sigma^2 \lambda_{ijj'}$, are described by the term $\lambda_{ijj'}$ representing the correlation structure of the errors within each group (e.g., serial correlation over time) scaled by the common error variance $\sigma^2$. ### Pooling and Within The *pooling* specification in `plm` is equivalent to a classical linear model (i.e., no random effects regressor and spherical errors: $b_{iq}=0 \phantom{p} \forall i,q, \phantom{p} \lambda_{ijj}=\sigma^2$ for $j=j'$, $0$ else). The *within* one is the same with the regressors' set augmented by $n-1$ group dummies. There is no point in using `nlme` as parameters can be estimated by OLS which is also ML. ### Random effects In the Laird and Ware notation, the RE specification is a model with only one random effects regressor: the intercept. Formally, $z_{1ij}=1 \phantom{p}\forall i,j, \phantom{p} z_{qij}=0 \phantom{p} \forall i, \forall j, \forall q \neq 1$ $\lambda_{ij}=1$ for $i=j$, $0$ else). The composite error is therefore $u_{ij}=1b_{i1} + \epsilon_{ij}$. Below we report coefficients of Grunfeld's model estimated by GLS and then by ML: ```{r re2} library(nlme) reGLS <- plm(inv~value+capital, data=Grunfeld, model="random") reML <- lme(inv~value+capital, data=Grunfeld, random=~1|firm) coef(reGLS) summary(reML)$coefficients$fixed ``` ### Variable coefficients, "random" Swamy's variable coefficients model [@SWAM:70] has coefficients varying randomly (and independently of each other) around a set of fixed values, so the equivalent specification is $z_{q}=x_{q} \phantom{p} \forall q$, i.e. the fixed effects and the random effects regressors are the same, and $\psi_{kk'}=\sigma_\mu^2 I_N$, and $\lambda_{ijj}=1$, $\lambda_{ijj'}=0$ for $j \neq j'$, that's to say they are not correlated. Estimation of a mixed model with random coefficients on all regressors is rather demanding from the computational side. Some models from our examples fail to converge. The below example is estimated on the Grunfeld data and model with time effects. ```{r vcmrand} vcm <- pvcm(inv~value+capital, data=Grunfeld, model="random", effect="time") vcmML <- lme(inv~value+capital, data=Grunfeld, random=~value+capital|year) coef(vcm) summary(vcmML)$coefficients$fixed ``` ### Variable coefficients, "within" This specification actually entails separate estimation of $T$ different standard linear models, one for each group in the data, so the estimation approach is the same: OLS. In `nlme` this is done by creating an `lmList` object, so that the two models below are equivalent (output suppressed): ```{r vcmfixed} vcmf <- pvcm(inv~value+capital, data=Grunfeld, model="within", effect="time") vcmfML <- lmList(inv~value+capital|year, data=Grunfeld) ``` ### General FGLS The general, or unrestricted, feasible GLS (FGLS), `pggls` in the `plm` nomenclature, is equivalent to a model with no random effects regressors ($b_{iq}=0 \phantom{p} \forall i,q$) and an error covariance structure which is unrestricted within groups apart from the usual requirements. The function for estimating such models with correlation in the errors but no random effects is `gls()`. This very general serial correlation and heteroskedasticity structure is not estimable for the original Grunfeld data, which have more time periods than firms, therefore we restrict them to firms 4 to 6. ```{r gglsre} sGrunfeld <- Grunfeld[Grunfeld$firm %in% 4:6, ] ggls <- pggls(inv~value+capital, data=sGrunfeld, model="pooling") gglsML <- gls(inv~value+capital, data=sGrunfeld, correlation=corSymm(form=~1|year)) coef(ggls) summary(gglsML)$coefficients ``` The *within* case is analogous, with the regressor set augmented by $n-1$ group dummies. ## Some useful "econometric" models in nlme Finally, amongst the many possible specifications estimable with `nlme`, we report a couple cases that might be especially interesting to applied econometricians. ### AR(1) pooling or random effects panel Linear models with groupwise structures of time-dependence^[Take heed that here, in contrast to the usual meaning of serial correlation in time series, we always speak of serial correlation *between the errors of each group*.] may be fitted by `gls()`, specifying the correlation structure in the `correlation` option^[note that the time index is coerced to numeric before the estimation.]: ```{r lmAR1} Grunfeld$year <- as.numeric(as.character(Grunfeld$year)) lmAR1ML <- gls(inv~value+capital,data=Grunfeld, correlation=corAR1(0,form=~year|firm)) ``` and analogously the random effects panel with, e.g., AR(1) errors (see @BALT:05; @BALT:13; @BALT:21, ch. 5), which is a very common specification in econometrics, may be fit by `lme` specifying an additional random intercept: ```{r reAR1} reAR1ML <- lme(inv~value+capital, data=Grunfeld,random=~1|firm, correlation=corAR1(0,form=~year|firm)) ``` The regressors' coefficients and the error's serial correlation coefficient may be retrieved this way: ```{r fetchcoefs} summary(reAR1ML)$coefficients$fixed coef(reAR1ML$modelStruct$corStruct, unconstrained=FALSE) ``` Significance statistics for the regressors' coefficients are to be found in the usual `summary` object, while to get the significance test of the serial correlation coefficient one can do a likelihood ratio test as shown in the following. ### An LR test for serial correlation and one for random effects A likelihood ratio test for serial correlation in the idiosyncratic residuals can be done as a nested models test, by `anova()`, comparing the model with spherical idiosyncratic residuals with the more general alternative featuring AR(1) residuals. The test takes the form of a zero restriction test on the autoregressive parameter. This can be done on pooled or random effects models alike. First we report the simpler case. We already estimated the pooling AR(1) model above. The GLS model without correlation in the residuals is the same as OLS, and one could well use `lm()` for the restricted model. Here we estimate it by `gls()`. ```{r LRar} lmML <- gls(inv~value+capital, data=Grunfeld) anova(lmML, lmAR1ML) ``` The AR(1) test on the random effects model is to be done in much the same way, using the random effects model objects estimated above: ```{r LRarsubRE} anova(reML, reAR1ML) ``` A likelihood ratio test for random effects compares the specifications with and without random effects and spherical idiosyncratic errors: ```{r LRre} anova(lmML, reML) ``` The random effects, AR(1) errors model in turn nests the AR(1) pooling model, therefore a likelihood ratio test for random effects sub AR(1) errors may be carried out, again, by comparing the two autoregressive specifications: ```{r LRresubAR} anova(lmAR1ML, reAR1ML) ``` whence we see that the Grunfeld model specification doesn't seem to need any random effects once we control for serial correlation in the data. # Conclusions{#conclusions} With `plm` we aim at providing a comprehensive package containing the standard functionalities that are needed for the management and the econometric analysis of panel data. In particular, we provide: functions for data transformation; estimators for pooled, random and fixed effects static panel models and variable coefficients models, general GLS for general covariance structures, and generalized method of moments estimators for dynamic panels; specification and diagnostic tests. Instrumental variables estimation is supported. Most estimators allow working with unbalanced panels. While among the different approaches to longitudinal data analysis we take the perspective of the econometrician, the syntax is consistent with the basic linear modeling tools, like the `lm` function. On the input side, `formula` and `data` arguments are used to specify the model to be estimated. Special functions are provided to make writing formulas easier, and the structure of the data is indicated with an `index` argument. On the output side, the model objects (of the new class `panelmodel`) are compatible with the general restriction testing frameworks of packages `lmtest` and `car`. Specialized methods are also provided for the calculation of robust covariance matrices; heteroskedasticity- and correlation-consistent testing is accomplished by passing these on to testing functions, together with a `panelmodel` object. The main functionalities of the package have been illustrated here by applying them on some well-known data sets from the econometric literature. The similarities and differences with the maximum likelihood approach to longitudinal data have also been briefly discussed. # Acknowledgments {-} While retaining responsibility for any error, we thank Jeffrey Wooldridge, Achim Zeileis and three anonymous referees for useful comments. We also acknowledge kind editing assistance by Lisa Benedetti. # Bibliography {-} plm/vignettes/B_plmFunction.Rmd0000644000176200001440000004330114340404505016255 0ustar liggesusers--- title: "Estimation of error components models with the plm function" author: - name: Yves Croissant date: '`r Sys.Date()`' output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib vignette: > %\VignetteIndexEntry{Estimation of error components models with the plm function} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo=FALSE} library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` ```{r texreg, echo = FALSE, results = "hide"} library("texreg") extract.plm <- function(model, include.rsquared = TRUE, include.adjrs = TRUE, include.nobs = TRUE, include.ercomp = TRUE, ...) { s <- summary(model, ...) coefficient.names <- rownames(coef(s)) coefficients <- coef(s)[ , 1L] standard.errors <- coef(s)[ , 2L] significance <- coef(s)[ , 4L] rs <- s$r.squared[1L] adj <- s$r.squared[2L] n <- length(model$residuals) gof <- numeric() gof.names <- character() gof.decimal <- logical() if (include.ercomp == TRUE){ if (model$args$model == "random"){ se <- sqrt(ercomp(model)$sigma) gof <- c(gof, se) gof.names <- c(gof.names, paste("s_", names(se), sep = "")) gof.decimal <- c(gof.decimal, rep(TRUE, length(se))) } } if (include.rsquared == TRUE) { gof <- c(gof, rs) gof.names <- c(gof.names, "R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.adjrs == TRUE) { gof <- c(gof, adj) gof.names <- c(gof.names, "Adj.\ R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.nobs == TRUE) { gof <- c(gof, n) gof.names <- c(gof.names, "Num.\ obs.") gof.decimal <- c(gof.decimal, FALSE) } tr <- createTexreg( coef.names = coefficient.names, coef = coefficients, se = standard.errors, pvalues = significance, gof.names = gof.names, gof = gof, gof.decimal = gof.decimal ) return(tr) } setMethod("extract", signature = className("plm", "plm"), definition = extract.plm) ``` `plm` is a very versatile function which enable the estimation of a wide range of error component models. Those models can be written as follows : $$ y_{nt}=\alpha + \beta^\top x_{nt} + \epsilon_{nt} = \alpha + \beta^\top x_{nt} + \eta_n + \mu_t + \nu_{nt} $$ where $n$ and $t$ are the individual and time indexes, $y$ the response, $x$ a vector of covariates, $\alpha$ the overall intercept and $\beta$ the vector of parameters of interest that we are willing to estimate. The error term $\epsilon_{nt}$ is composed of three elements (in the two-way case): - $\eta_n$ is the individual effect, - $\mu_t$ is the time effect, - $\nu_{nt}$ is the idiosyncratic error. # Basic use of `plm` The first two arguments of `plm` are, like for most of the estimation functions of `R` a `formula` which describes the model to be estimated and a `data.frame`. `subset`, `weights`, and `na.action` are also available and have the same behavior as in the `lm` function. Three more main arguments can be set : - `index` helps `plm` to understand the structure of the data : if `NULL`, the first two columns of the data are assumed to contain the individual or the time index. Otherwise, supply the column names of the individual and time index as a character, e.g., use something like `c("firm", "year")` or just `"firm"` if there is no explicit time index. - `effect` indicates the effects that should be taken into account ; this is one of `"individual"`, `"time"`, and `"twoways"`. - `model` indicates the model to be estimated : + `"pooling"` is the OLS estimation (equivalent to a call to `lm`), + `"between"` performs the estimation on the individual or time means, + `"within"` (fixed-effects model) on the deviations from the individual or/and time mean, + `"fd"` on the first differences, and + `"random"` (random-effects model) perform a feasible generalized least squares estimation which takes into account the correlation induced by the presence of individual and/or time effects. The estimation of all but the last model is straightforward, as it requires only the estimation by *OLS* of obvious transformations of the data. The *GLS* model requires more explanation. In most of the cases, the estimation is obtained by quasi-differencing the data from the individual and/or the time means. The coefficients used to perform this quasi-difference depends on estimators of the variance of the components of the error, namely $\sigma^2_\nu$, $\sigma^2_\eta$ in case of individual effects and $\sigma^2_\mu$ in case of time effects. The most common technique used to estimate these variance is to use the following result : $$ \frac{\mbox{E}(\epsilon^\top W \epsilon)}{N(T-1)} = \sigma_\nu^2 $$ and $$ \frac{\mbox{E}(\epsilon^\top B \epsilon)}{N} = T \sigma_\eta^2 + \sigma_\nu^2 $$ where $B$ and $W$ are respectively the matrices that performs the individual (or time) means and the deviations from these means. Consistent estimators can be obtained by replacing the unknown errors by the residuals of a consistent preliminary estimation and by dropping the expecting value operator. Some degree of freedom correction can also be introduced. `plm` calls the general function `ercomp` to estimate the variances. Important arguments to `ercomp` are: - `models` indicates which models are estimated in order to calculate the two quadratic forms ; for example `c("within", "Between")`. Note that when only one model is provided in `models`, this means that the same residuals are used to compute the two quadratic forms. - `dfcor` indicates what kind of degrees of freedom correction is used : if `0`, the quadratic forms are divided by the number of observations, respectively $N\times T$ and $N$ ; if `1`, the numerators of the previous expressions are used ($N\times (T-1)$ and $N$) ; if `2`, the number of estimated parameters in the preliminary estimate $K$ is deducted. Finally, if `3`, the unbiased version is computed, which is based on much more complex computations, which relies on the calculus of the trace of different cross-products which depends on the preliminary models used. - `method` is an alternative to the `models` argument; it is one of : * `"walhus"` (equivalent to setting `models = c("pooling")`), @WALL:HUSS:69, * `"swar"` (equivalent to `models = c("within", "Between")`), @SWAM:AROR:72, * `"amemiya"` (equivalent to `models = c("within")`), @AMEM:71, * `"nerlove"`, which is a specific method which doesn't fit to the quadratic form methodology described above (@NERLO:71) and uses an within model for the variance estimation as well, * `"ht"` is an slightly modified version of `"amemiya"`: when there are time-invariant covariates, the @AMEM:71 estimator of the individual component of the variance under-estimates as the time-invariant covariates disappear in the within regression. In this case, @HAUS:TAYL:81 proposed to regress the estimation of the individual effects on the time-invariant covariates and use the residuals in order to estimate the components of the variance. Note that for `plm`, the arguments are `random.models`, `random.dfcor`, and `random.method` and correspond to arguments `models`, `method`, and `random.dfcor` of function `ercomp` with the same values as above, respectively. To illustrate the use of `plm`, we use examples reproduced in @BALT:13, p. 21; @BALT:21, p. 31, table 2.1 presents EViews' results of the estimation on the `Grunfeld` data set : ```{r grunfeld} library("plm") data("Grunfeld", package = "plm") ols <- plm(inv ~ value + capital, Grunfeld, model = "pooling") between <- update(ols, model = "between") within <- update(ols, model = "within") walhus <- update(ols, model = "random", random.method = "walhus", random.dfcor = 3) amemiya <- update(walhus, random.method = "amemiya") swar <- update(amemiya, random.method = "swar") ``` Note that the `random.dfcor` argument is set to `3`, which means that the unbiased version of the estimation of the error components is used. We use the `texreg` package to present the results : ```{r grunfeldresults, echo = TRUE} library("texreg") screenreg(list(ols = ols, between = between, within = within, walhus = walhus, amemiya = amemiya, swar = swar), digits = 5, omit.coef = "(Intercept)") ``` The estimated variance can be extracted using the `ercomp` function. For example, for the `amemiya` model : ```{r ercompamemiya} ercomp(amemiya) ``` @BALT:13, p. 27; @BALT:21, p. 31 presents the Stata estimation of the Swamy-Arora estimator ; the Swamy-Arora estimator is the same if `random.dfcor` is set to `3` or `2` (the quadratic forms are divided by $\sum_n T_n - K - N$ and by $N - K - 1$), so I don't know what is the behaviour of Stata for the other estimators for which the unbiased estimators differs from the simple one. ```{r produc} data("Produc", package = "plm") PrSwar <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "swar", random.dfcor = 3) summary(PrSwar) ``` # The twoways effect model The two-ways effect model is obtained by setting the `effect` argument to `"twoways"`. @BALT:13 pp. 51-53; @BALT:21, pp. 61-62, tables 3.1-3.3, presents EViews' output for the Grunfeld data set. ```{r grunfeld2ways} Grw <- plm(inv ~ value + capital, Grunfeld, model = "random", effect = "twoways", random.method = "walhus", random.dfcor = 3) Grs <- update(Grw, random.method = "swar") Gra <- update(Grw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Grw, "Swamy-Arora" = Grs, "Amemiya" = Gra), digits = 5) ``` The estimated variance of the time component is negative for the Wallace-Hussain as well as the Swamy-Arora models and `plm` sets it to 0. @BALT:09 pp. 60-62, presents EViews' output for the `Produc` data. ```{r produc2ways} data("Produc", package = "plm") Prw <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "walhus", effect = "twoways", random.dfcor = 3) Prs <- update(Prw, random.method = "swar") Pra <- update(Prw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Prw, "Swamy-Arora" = Prs, "Amemiya" = Pra), digits = 5) ``` # Unbalanced panels Two difficulties arise with unbalanced panels : - There are no obvious denominators for the quadratic forms of the residuals that are used to estimate the components of the variance. The strategy is then to compute the expected value and equate it to the actual quadratic forms. Detailed formula are omitted here, they depend on the preliminary estimator. - For the one-way effect model, the estimator is still obtained by applying *OLS* on demeaned data (the individual **and** the time means are now deducted) for the within model and on quasi-demeaned data for the random effects model ; this is not the case for the two-ways effects model. @BALT:21, @BALT:13, and @BALT:09 present results of the estimation of the @SWAM:AROR:72 model with the `Hedonic` data set. @BALT:13, p. 195; @BALT:21, p. 237, table 9.1, presents the Stata output and @BALT:09, p. 211 presents EViews' output. EViews' Wallace-Hussain estimator is reported in @BALT:09, p. 210. ```{r hedonic} data("Hedonic", package = "plm") form <- mv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + tax + ptratio + blacks + lstat HedStata <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "between")) HedEviews <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "Between")) HedEviewsWH <- update(HedEviews, random.models = "pooling") screenreg(list(EViews = HedEviews, Stata = HedStata, "Wallace-Hussain" = HedEviewsWH), digits = 5, single.row = TRUE) ``` The difference is due to the fact that Stata uses a between regression on $N$ observations while EViews uses a between regression on $\sum_n T_n$ observations, which are not the same on unbalanced panels. Note the use of between with or without the B capitalized (`"Between"` and `"between"`) in the `random.models` argument. `plm`'s default is to use the between regression with $\sum_n T_n$ observations when setting `model = "random", random.method = "swar"`. The default employed is what the original paper for the unbalanced one-way Swamy-Arora estimator defined (in @BALT:CHAN:94, p. 73). A more detailed analysis of Stata's Swamy-Arora estimation procedure is given by @COTT:2017. # Instrumental variable estimators All of the models presented above may be estimated using instrumental variables (IV). The instruments are specified using two- or three-part formulas, each part being separated by a `|` sign : - the first part contains the covariates, - the second part contains the "double-exogenous" instruments, *i.e.*, variables that can be used twice as instruments, using their within and the between transformation, - the third part contains the "single-exogenous" instruments, *i.e.*, variables for which only the within transformation can be used as instruments, those variables being correlated with the individual effects. The instrumental variables estimator used is indicated with the `inst.method` argument: - `"bvk"`, from @BALE:VARA:87, the default value : in this case, all the instruments are introduced in quasi-differences, using the same transformation as for the response and the covariates, - `"baltagi"`, from @BALT:81, the instruments of the *second* part are introduced twice by using the between and the within transformation and instruments of the *third* part are introduced with only the within transformation, - `"am"`, from @AMEM:MACU:86, in addition to the instrument set of `"baltagi"`, the within transformation of the variables of the *second* part for each period are also included as instruments, - `"bms"`, from @BREU:MIZO:SCHM:89, in addition to the instrument set of `"baltagi"`, the within transformation of the variables of the *second* and the *third* part for each period are included as instruments. The various possible values of the `inst.method` argument are not relevant for fixed effect IV models as there is only one method for this type of IV models but many for random effect IV models. The instrumental variable estimators are illustrated in the following example from @BALT:05, pp. 117/120; @BALT:13, pp. 133/137; @BALT:21, pp. 162/165, tables 7.1, 7.3. ```{r IV} data("Crime", package = "plm") crbalt <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random", inst.method = "baltagi") crbvk <- update(crbalt, inst.method = "bvk") crwth <- update(crbalt, model = "within") crbe <- update(crbalt, model = "between") screenreg(list(FE2SLS = crwth, BE2SLS = crbe, EC2SLS = crbalt, G2SLS = crbvk), single.row = FALSE, digits = 5, omit.coef = "(region)|(year)", reorder.coef = c(1:16, 19, 18, 17)) ``` The Hausman-Taylor model (@HAUS:TAYL:81) may be estimated with the `plm` function by setting argument `random.method = "ht"` and `inst.method = "baltagi"`. The following example is from @BALT:05, p. 130; @BALT:13, pp. 145-7, tables 7.4-7.6; @BALT:21, pp. 174-6 , tables 7.5-7.7. ```{r IV-HT} data("Wages", package = "plm") ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp^2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + exp + I(exp^2) + union, data = Wages, index = 595, inst.method = "baltagi", model = "random", random.method = "ht") am <- update(ht, inst.method = "am") bms <- update(ht, inst.method = "bms") screenreg(list("Hausman-Taylor" = ht, "Amemiya-MaCurdy" = am, "Breusch-Mizon-Schmidt" = bms), digits = 5, single.row = FALSE) ``` # Nested error component model This section shows how the nested error component model as per @BALT:SONG:JUNG:01 can be estimated. The model is given by : $$ y_{nt}=\alpha + \beta^\top x_{jnt} + u_{jnt} = \alpha + \beta^\top x_{jnt} + \mu_{j} + \nu_{jn} + \epsilon_{jnt} $$ where $n$ and $t$ are the individual and time indexes and $j$ is the group index in which the individuals are nested. The error $u_{jnt}$ consists of three components : - $\mu_j$ is the group effect, - $\nu_{jn}$ the nested effect of the individual nested in group $j$ - $\epsilon_{jnt}$ is the idiosyncratic error. In the estimated examples below (replication of @BALT:SONG:JUNG:01, p. 378, table 6; @BALT:21, p. 248, table 9.1), states are nested within regions. The group index is given in the 3rd position of the `index` argument to `pdata.frame` or to `plm` directly and `plm`'s argument `effect` is set to `"nested"`: ```{r nestedRE} data("Produc", package = "plm") swar <- plm(form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp, Produc, index = c("state", "year", "region"), model = "random", effect = "nested", random.method = "swar") walhus <- update(swar, random.method = "walhus") amem <- update(swar, random.method = "amemiya") screenreg(list("Swamy-Arora" = swar, "Wallace-Hussain" = walhus, "Amemiya" = amem), digits = 5) ``` # Bibliography plm/vignettes/C_plmModelComponents.Rmd0000644000176200001440000001574314340404505017610 0ustar liggesusers--- title: Model components for fitted models with plm author: - name: Yves Croissant date: '`r Sys.Date()`' output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib vignette: > %\VignetteIndexEntry{Model components for fitted models with plm} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo=FALSE} library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` plm tries to follow as close as possible the way models are fitted using `lm`. This relies on the following steps, using the `formula`-`data` with some modifications: - compute internally the `model.frame` by getting the relevant arguments (`formula`, `data`, `subset`, `weights`, `na.action` and `offset`) and the supplementary argument, - extract from the `model.frame` the response `y` (with `pmodel.response`) and the model matrix `X` (with `model.matrix`), - call the (non-exported) estimation function `plm.fit` with `X` and `y` as arguments. Panel data has a special structure which is described by an `index` argument. This argument can be used in the `pdata.frame` function which returns a `pdata.frame` object. A `pdata.frame` can be used as input to the `data` argument of `plm`. If the `data` argument of `plm` is an ordinary `data.frame`, the `index` argument can also be supplied as an argument of `plm`. In this case, the `pdata.frame` function is called internally to transform the data. Next, the `formula`, which is the first and mandatory argument of `plm` is coerced to a `Formula` object. `model.frame` is then called, but with the `data` argument in the first position (a `pdata.frame` object) and the `formula` in the second position. This unusual order of the arguments enables to use a specific `model.frame.pdata.frame` method defined in `plm`. As for the `model.frame.formula` method, a `data.frame` is returned, with a `terms` attribute. Next, the `X` matrix is extracted using `model.matrix`. The usual way to do so is to feed the function with two arguments, a `formula` or a `terms` object and a `data.frame` created with `model.frame`. `lm` uses something like `model.matrix(terms(mf), mf)` where `mf` is a `data.frame` created with `model.frame`. Therefore, `model.matrix` needs actually one argument and not two and we therefore wrote a `model.matrix.pdata.frame` which does the job ; the method first checks that the argument has a `term` attribute, extracts the `terms` (actually the `formula`) and then computes the model's matrix `X`. The response `y` is usually extracted using `model.response`, with a `data.frame` created with `model.frame` as first argument, but it is not generic. We therefore created a generic called `pmodel.response` and provide a `pmodel.response.pdata.frame` method. We illustrate these features using a simplified (in terms of covariates) example with the `SeatBelt` data set: ```{r } library("plm") data("SeatBelt", package = "pder") SeatBelt$occfat <- with(SeatBelt, log(farsocc / (vmtrural + vmturban))) pSB <- pdata.frame(SeatBelt) ``` We start with an OLS (pooling) specification: ```{r } formols <- occfat ~ log(usage) + log(percapin) mfols <- model.frame(pSB, formols) Xols <- model.matrix(mfols) y <- pmodel.response(mfols) coef(lm.fit(Xols, y)) ``` which is equivalent to: ```{r } coef(plm(formols, SeatBelt, model = "pooling")) ``` Next, we use an instrumental variables specification. Variable `usage` is endogenous and instrumented by three variables indicating the law context: `ds`, `dp`, and `dsp`. The model is described using a two-parts formula, the first part of the RHS describing the covariates and the second part the instruments. The following two formulations can be used: ```{r } formiv1 <- occfat ~ log(usage) + log(percapin) | log(percapin) + ds + dp + dsp formiv2 <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp ``` The second formulation has two advantages: - in the common case when a lot of covariates are instruments, these covariates don't need to be indicated in the second RHS part of the formula, - the endogenous variables clearly appear as they are proceeded by a `-` sign in the second RHS part of the formula. The formula is coerced to a `Formula`, using the `Formula` package. `model.matrix.pdata.frame` then internally calls `model.matrix.Formula` in order to extract the covariates and instruments model matrices: ```{r } mfSB1 <- model.frame(pSB, formiv1) X1 <- model.matrix(mfSB1, rhs = 1) W1 <- model.matrix(mfSB1, rhs = 2) head(X1, 3) ; head(W1, 3) ``` For the second (and preferred formulation), the `dot` argument should be set and is passed to the `Formula` methods. `.` has actually two meanings: - all available covariates, - the previous covariates used while updating a formula. which correspond respectively to `dot = "seperate"` (the default) and `dot = "previous"`. See the difference between the following two examples: ```{r } library("Formula") head(model.frame(Formula(formiv2), SeatBelt), 3) head(model.frame(Formula(formiv2), SeatBelt, dot = "previous"), 3) ``` In the first case, all the covariates are returned by `model.frame` as the `.` is understood by default as "everything". In `plm`, the `dot` argument is internally set to `previous` so that the end-user doesn't have to worry about these subtleties. ```{r } mfSB2 <- model.frame(pSB, formiv2) X2 <- model.matrix(mfSB2, rhs = 1) W2 <- model.matrix(mfSB2, rhs = 2) head(X2, 3) ; head(W2, 3) ``` The IV estimator can then be obtained as a 2SLS estimator: First, regress the covariates on the instruments and get the fitted values: ```{r } HX1 <- lm.fit(W1, X1)$fitted.values head(HX1, 3) ``` Next, regress the response on these fitted values: ```{r } coef(lm.fit(HX1, y)) ``` The same can be achieved in one command by using the `formula`-`data` interface with `plm`: ```{r } coef(plm(formiv1, SeatBelt, model = "pooling")) ``` or with the `ivreg` function from package `AER` (or with the newer function `ivreg` in package `ivreg` superseding `AER::ivreg()`): ```{r } coef(AER::ivreg(formiv1, data = SeatBelt)) ``` ```{r eval = FALSE, include = FALSE} X2 <- model.matrix(Formula(form1), mfSB, rhs = 2, dot = "previous") formols <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp form1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + log(precentb) + log(precenth) + log(densrur) + log(densurb) + log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + log(fueltax) + lim65 + lim70p + mlda21 + bac08 form2 <- . ~ . | . - log(usage) + ds + dp +dsp jorm1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + log(precentb) + log(precenth) + log(densrur) + log(densurb) + log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + log(fueltax) + lim65 + lim70p + mlda21 + bac08 | . - log(usage) + ds + dp + dsp jorm2 <- noccfat ~ . | . ``` plm/data/0000755000176200001440000000000014124132276011755 5ustar liggesusersplm/data/EmplUK.rda0000644000176200001440000004261014124132276013605 0ustar liggesusersý7zXZi"Þ6!ÏXÌáÀEL])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷ÆkX@Q¡ˆ*C|W8¿Ç¶Á…Ö£ ¶ªOy_›¦f”Em ¡x¤Ï®wŒ{Gã=]!‚šlFñ’‰X-øÏÞ9椤6ÆÞ/øA”IÍXYC§”Ëï-Ù1˜¾®ÈG¯DhQ…œáMÊ`ž‘‘i}‹,)_®[ “¤¶0q ~@m€·nk¥|½íDC<»áóDÏ$ê:Kémü×çP¬ÒËæPÉ«vÊÔ̈*í„õÆ6×jǤu'ß ñ­6â_ø}žP€*njPjÿ}M-ú™Ë7½5ÐîU Ç,ÆÄÇE´rü“7ºâa¥púNœÇêùü>³ vï¼ì57jµß3!ù­àNÃFöN¢Ðüè};…OkOŠb<Ðÿm'èÆB”I¿‘®êá>e¯ê¯[„“®í7Ðàm>æ›[Ã7¶’”¥ž+"†,3Ýic3g¢Éÿm÷ÇHžÿòIÛ„nÎ@³{ÌŠ#Ð}‘ä`”R!¾šžòiw’&“aL‡ÖÃ<fQ°Y^ô5>²€¨'çY†Ñ-L¸ôË©þVÿàã$éÈî"‰æ¢kÚ=?ïÃ.ʼn{u—v·úN )|¾7ã}®ŸùF¯[BÅ‘B…»Æ¤4ÿU`1B‘ðk` ß<ä$&.¥ü¯;ŽyÂ%Eˆ>“r•3¶— íoq"Nn±Gfßä½1—6§ò^ûgÈŽ>gyðÍó=æjѽ{ÿ¦´ãÚr!gw•סíˆWcÞ—ê’’†(¢à•ßE ©r/¾mÜ=ÐJZ +ÿæAá|¶Ìq;àrj’†©@ô2ŠŠX¨Üþ#>8¤YúØ=šï!…ãI>ße0XšpëhÎ p™é]‘$¿tœÀЀå(Y†O‘;¹Êþo¢bÊ‚îõûd¤›ªÆÌ\ lÒYÅaÇtöáiŽäS£ÉâB½\Fa„áÍQdžø¸½׫„d%jâíþ°LR¸Þsì•|cr¯'â=š+«ð¦ˆËÐ÷”„Ç„ ‚¥ÍÊõ÷q¸Mç(@4¾Q¸öE¼óÎví±!8˜8"Ô8í\Ù(}rxü;´ªÖe¸ñà¤u×o²Ùíæ ñùÌ5\ TöÀœöcµq@·ú¶ß/¥‚û@:×zêÑ?Vªæ_ÒO¬¸É¦ù70È`GU®Ëqqóõ—eyè¸_èâ¹8\,C€ø‹2 °õ¬G*\:‹n¾^+ä«!Í{U2$ »eÄw>¡Vrƒ°×P‘×m‡5&¾7’B§_j»œÇ ëMÇ?I‰LUBâ3ytÄΠ˜f&ªÁ Žh×ñÑí ¥&d’Õ°5RÛŒ†Zë@hZ!dQ&þ‡;…äk>­ØlgÜÉȰðdÍ—Ýït¨ºñ©#äPÜ4ê v®›#Û¬lZö€´'0øø·ŸÝWã•£¤ øHY~ë ×£Ç0a¥yNy²™nK²1w¸÷ð@ÐŒ!Í—”Ä€|N‘nD(ê?P"„82[ô[bNqðšÍ€*3KmÌô9{ê«'µwqäi‹ñ”n _’}åc 7§’sÎÖ*Cô`† ébªl£Ž±†¯íJ÷?ûœ¡aþ±½OÒü$ü¡Cäq9ÌØüt\”6;è†éyÝ$Ž`£òJ¦-þ "s#²ïÄIò‰à®*Ðo`ƒ™~ØXÐdÒÀÚûOƒcÒØ-UލmZ–¨çîóKMÊÕÆýÐ&±„¶¡VËÌ º­é´òó*{¼õ>-Ì 0O\Ù-è¦ð½$?­¸ÂñZ5Å#~j’ÈÉ¡9m0ä:dĹ3E|—ɶ^íÀS›`ÂÚˆ€ûNÂÎ]##¹­äÀSгŸøäé¥Q=…G”&1è˜ÒÆ‘î[­Z®ST`¥|wÜ“^üÅÍÔS»&ò ÷R‘3oEþQQM?ã¤4È_špŸYÓW¿ì:­øƒ‚ ’•l^ãË>¯ [ŸWvênð:{Y±—XçÌþ”m'× k[„IæÄ˜~…gã$°±3»v‰@£~ƒÑtªØ®Ú&KöååGX-‡s.Ñû["Ó©7ÍyO”‹¢‘ Q<Ï–sMJ%ò*‚2ÀX=lsKÐóp|â飃ÈÐÈ¢iè}âù«,æå~òóOJÑ0¯3:à‰)x†¹M4ú'wkªÂˆÀ¨&²Á¦û&’T*â7Ê)Q¥å¬bh¯a|Z?B5ÚëOdzöSàóÕÎöóÿ¦‰ ¿|í °|G:ûìZœ©ˆæøvfOµ…ÆÔ^ÈëëuÛÆ2—Ìâ]m^Ü÷_Ú,r–b Àþ™OhåÔš¦SÂ*®‰TZÐn[Zà·AìÊû\§Ù¾âÊŠü¶|™é)UÖk_žnœP©üËØ’0%ß_5µ3b²ùÛð¯f¿—¿Ë?®¢*̯[¬ nûWl‹ö óGÕÇG¡ÝMa•¹"²g mÿ:²¯`ýZjA”N"2êëqjÈËj …IoF‘Ñ/€JŽI2˜°ñ@F©@R¤ókj/ñÙí¼c1TSÑá¾â›„j "äA·ó“1§ÐKz…õ9ËI±Þu™Ëé7÷k¹&¬à©Úz$o€ÄplÕ»F†Ô-E‹ÀÐÅO$éwÞ·²JäZ«¼HWª2±‘ù8¿ŠMæUæ"ù¼wS+ÜÔn_Ÿ´|FéùDê]òMCÃ-ÐÔJjbÈÔ~Xܺ˜¸£LPv>âòùÖÏ8 sÝ`ƪêàó‰´¿ÙQ-E÷‡ÓõSó\ñn å¦/´‹ÌÇ* [³%îPþåktºØLasCÓ@^1Ž+îe€7žz·BŒ[ЕРÁ+æ•JeûÄUÅ!=8âM6.‰‹ÁÓÓÜÒ–æ–Vcf07Õd¢Š‘dÜÛGÔ¡gã¦y exoÔ rÁå{äˆKeÛyÛæK˜®WéóÈÑ;#­D®Ú¨j_€Gž¡Tm†MJÇš¼'¿²«ÕC¨hÄ=f…ÊŸ¸|Ð`<ˆÒSœ™œ´h¥‹jSÖ9AEËåî•{X±tHÀÊ1˜:ž ¥©³>ö©FtðsTøû¢ò!Ä1Äܬ|lK‰¡÷— ªë÷X j“ÒÜ,~)eÙ*Ï¡õrÏa°ó!”Œ[úPȹgƒæÞ äÜæÞ§3¨›$íV~#ÅiɱˆWñ%“ð|˜Çð |š­ÇÙéÜ œ¶¢^™nÍXU°"5–ÞpÞ1¨z•Ï×zàM<t© ésa].*´R‘ïwýÓ“±™—Aè£Î@ÉÊp~Ä 5”ún,Z•ݬ¡'ík›aÝÀx?å ¨ê“FÄâ»ÕKKÖVÒaT, “}”ÓÛÜ­¥±±e@»ï¼È:›­v~B¹^¹ Ô‡bgŠdZe’•°73ëå·›ñ‡~I°”xm½a ú•º×w@øüÅÚ_$^{õH€1n^XÓuÚ W"ÛïtSsi_l„!Û´3<´ÐÔ Ó¬*âBxš«¢è†Ù¨8{lf?q>Ä@h½œ@W=íçÈWë)Eý]á0aÆúûºØfsü¯_`èŸâã.v³½Ý‡"ˆÌHI2T „¦“*ÿø?Ä7 Ôtºe¦6Þ #û–{*ì«?Êþ$èÖf³à‚VÑBâÔÐ]« 8Tð}nA§Íu¤ó ù½Ü‘± uÝí«˜æ0­ØXgP>56¬pŒ`³?.¼ëtùdRòVÝÝ}T¥{X=1ÁbpmÄ @2\¾ v‰ -6ËÓ)ôÖçšÅ¹¨?6¨ýyI¶Ä÷ñà¨Î7"5š(ò~ù©øºz´ª—³×õemáÑ9 ÍŠf¹Ñ m—WcWQbQ®’*gæs1ÓâXIÅAÞ»gW×ò"ܶ‚Ñ/1Ï¢ƒßz†ëG¸šløšÑùPkÿRdàðˆM«• ˜7Àlfø“‘¸"3ÅÑN¿“jR$½™™ãfKBéí²–­¼Ö]6ëö+þ•X<ÓðÊð*ð¨aµùAÁÉк¥ä„Aòzh@Ml¦·pãH˜³©ì-Êr&Ñ$Ù¹Œú)ºB9§Ìкô+Sû‡oÞô¯?Aš¯UሡvÚ(óœ˜%Y Œ§“d‚YOF¨÷bzÖ³»¯kŠð •AÞûukZ¶@Šâs9¨ó©}d >[ÀÇl­Nôð§äºQÐ++ÍèÈs{ýpöŸ:R[Mq«Á6¾6¾„ùŶW+þ2¶AF(-:á*³ûKhåTÙ¨ä4 µ±LßÀSyäù@ÓÞoÚg$ÞÙ¼À›10!_yÉ“is#â?½ƒCH¦‰·Y´³ìŒ0GÚˆQýG•— Ù?çžçú»(jlö¾ //O#Aá½I·d{´òÛ&òêd8ü6·t3 %ñT¶§kîkRÄØèöÀŠ*õ®™ÀŽ<Ý#¾¢Äé…«ô…]Ê5™‚ëI¥0ÙØ%t•}L“öA9 ”ò P¬kTH'‘Ÿ?û`³kÅ;„Å6.£8ÚíqOpÙ£W:°¡§—Œ8sî5¶xýãïl­¨×HÉånIëŠ-²øñ1š@‚?˜I"[_83µv¥ÜªV'ÂZSÙri²½žm¦È'«=D&‚ðO½ pQÊA—{Åxb[ÖLMK&­öð³ŸUP8Rìþ/{>|ç`Vuž§–ìfQ„p÷œ~Iãt—^MðŸŒÇ]ÆÎÜA‰_j ¤bgbÙfæCÔÈÚÄkÕÇ×ï§€Éühßf ›;Õyì”›«Þx'aìïk“iO/\òlj‡fm—Ó*Ï;0B8Šr\KVµ˜ÂõOô9juÓ]AR¡wÌÎóöT"CèFÕp+–¾vúX#z ³ƒTþCÝåt´1Z ]§²­}Ë]«DUüýçñSÒWêSÅÂóe¢â}—nÖÕ¨Ìáx—7Û|LÖ°v}\’%ÃD>Fé*Œ;ïm¡É1Þ€=ñ¸çyŸ”¨·Îÿ£»¯£Nʰ³‚ooíŽN ÎkÓ’ðþ@ZÎ(ÿyK™lùi*¿gP r£Äÿ£$sž§'—ö£úIó:xÀ[þŘ÷/‰|3q$g«žÕÔ-ëß4P–6ýñg,cqTAª cbxf £<ž´±ÙÁv:«5a–Ôýxp|+M6Pß«(dúè©fÛbÂè{wÁ³ÿémlÈ®*&¸}ú+‚°\ $²Uµ;_¥G‡!E8T·K¡™c‰ìE>©úF¶1ï´I¯ú?!ç‹Kò¤ Î*^3 µ[ë eÈ@äû3žBÝã,x÷ VC‚†qÓ|àYVsm†ÓÝÇ žsÃçàãUûí^¸J¯jÉqú —›Ô¿þ€ŠºWhöÀÛð*õp«š¨¤pÕ^áû¾6ÙIàíG·LK&|8¦&×8s–X›º=Ý/¸Ôóø¾×“`M3.˜00>Líew€@^þ¿‡³`Sþ>ÿWhŽE7 šY…ÈâëüÕõØOO˱f~UËsÉ«>•Üý~Ó:ÀQYnB­Æþ},‚@µê ôtdÜj¦g“}R€T+õ'kîýU´7’²ÖÛŸ÷fµ 8°´íÑ<1ˆÔÐ2~Ä­8Ý)éëí'âÐ|ãé”BsƒÙ¶ÄJï¹#ãÀG9ŠjS“ñ‡½ŸáU²¢Û>ÀŒ:.Y®^^ã¡(„cÎSÝ*Õ±\àáúnýÛ]`i{ƒ£MÝ ýbH%l’¬¥ (…Th’ Ç•"8 ‘¡/î<÷Ë„ŸL ûÆ~’.­jÊ(–|ɲÍÙÄ{%*Ê^ZQŠÿÑ”›@B!ªõïñ]‹y#Š* ò÷§JUZj Éª£¯Ä¼ ŽÁñcù>Ï !<¢üMÔø1°jeó– ”úz&RqR&¬ÄK|ŠÓ¯ÑB¹Rsª°ÍQíó9ß§óN+"\å ª•ýƒØFZàjf§¿98’º7Í ^ŽÏ†©ß*=,̱#Ã÷lœN}ð—A݃Q—ýÓ-ƒm›¤] ý/e. Ö1AQk™º¤P "ôšé…“\2$¤ád%¦“ÄÓüðÁ·*wϾé¦Á=¬z^sØ2º™*wç–ÜÆšmËÛ0ëÏP:Š{hØoXô¸èHðÎúk”™Û»|Š'üÁÕ‚°çNé,%/â=À$qåCÆ ±ÞH=U‹Í´»\8„–´|@“úäP•g¨÷1CNv§Ú¯O¿N´^ß™OܤJŒÊ¼Ç @"f©¾ätF˜ÜcÈn[®ÆD;£ý—ÃÂØ”_z€eO-\J¥ÍÙµñÊÍ`ÖU`xMO°ìŒ”š)u4¿ý»Z3 Z;¼½ÝÅYÝÅ‹‰ŽòßÊþû(,Ø•ÐóC·›‘ݸ¾š«¿ä•ð‡ÕØ_µ ¡µ&™glQ“¾¼°H?§Ë™ã8’mS·`µÓÛVK­Ãrï5ÊB8ˆ`[WµÿDa½ÔÕþûVtE¯Ý~å]qÕ,ÿKAÏÆé €Žvn0¶ýGA„íbzVÂM ¹ž+¹Lô¿i—À0¨ù,(¹öãG;1ʲc7|çt€žr2p*ÉCا§Yªä|ÊYÿ¨Ÿˆïá¥%XCEÿÕºÕg‡“ËÍå»ß}Ç*Àžkù“rû!5üñË ­X”¹ó74) Xô Ë•Aë~…Ò5-m!‹l©@£ ±N¿ÃCƒNSfi;OÜgpÀU“σfvÉËŠmB¥¬z…¶m rýF²úâÚ¦š›Àyñ©ƒ²+sN±S#ç]0&÷.r^Ã}Š<"0U•5Âô åË*„Õ(kiï`¤£Ü’ÛfåiÆCdÒ–‡seƒ¬ £•tc¡­LìG^;fvb:üýÏJ$=ª°B$ŒÙèþ³=Z£-š®·ß?…?¥7qyÏŠä ö)ØÊŸà)@¶Ð8ªU]Ç "Òô ¡\áÑBÀ?àò/-ˆ°¤/ƽߞxZ§ ï;å Q¦#±Dô"±Í¥Ã†æ  eR¬š\›ß2Öz4³*^Ø$'p(1œâ ¿æà.[«ÐóôV²@’HÙ™üÊ‚2¶!È,õ:À=]9ÃFÊ_"2Þ©êØiþÛY)•oZÒÑ“ÂëIµ Í¡Aß»¾»lò!¶’ÑÐNjab‹ X¢ó4u¯¡x&ÚÖ½ZÞë¡&SÄfùÞsá… ”¹Ù“vØ‘ÃfŸH¾ÍŽìýŸn{–’ÃQÎ<µ+÷Lè®}:FÖÙö‘®OÄf"s~󱨮½ éwr¬,µ9 åôGQªU¯E”¾ïÿ†~reí áÝÍÒ3ÙŽÙL("°Ò<ՙʚ ?@¶¥Û%ï¦p3âÓ(]?î¹ò™ìVÍK‘èöï4Á×/leQX4¨è—™.²4zI8ž±%Û¾´´ÓbÊô—À'¬P2’°œ´WO²vŽmîí†6í^DÚž^Ô5ëQ¿vZì¾JM5ÙÂQwN°Ú–ÅËHœMµÐfO#1*¹”Þêa÷e4x¤EÖr”OQ=WÛ£åŠI-v«»ÍÊ)G`û?ä5*C<\„ã¾iˆaÁ%˜ó}…ÿóXÜ4kê;OÍ^ŠæA¿¼Š-úñ¾d"XaœiTl6xœÒ=+vuV&Ñ#ݵ̪à¥áÇå—ÊèSŽ«êTIʃ@¬ÂÚÑt~P^Ö(EÜÇw”$k_Ÿ„¯­’"­Ô˜$Û±ÐA‘쨔ÌRa 7Ëb8ñ¡Ç!{XX®| Áš xú! Ôèó+!Cjþ4}O®9¿Œ_˜§ùÆÈu™cõñ2rÜL_¶ÛµÉÜÑEbqë4‹\­]†¼œsh‚ÕX˜ÏÊëô¨`^_ .‡F³±'¦ñc%² ð^°{ÑeШ¥0 7•^¢Âšò¶¹rs± /è¶AÚVÊßT)Ø­¿‹‰œ·ß=ô‡4,Ú¹“’hw0ëÚÝR#a™U°°ØáIK®¶ôÐùÉ"™ý¤ŠivÙ ömV¼Ocn§Úl–b“¾–|íóýJ e…Lþ“½<2××cvgØ=8ïÜÛÀâµ täTSl½øÛ9–DßYUÿù/bªÀ÷R×&%šä„„ ÿþ´a¶=éÁ³ÉJžYaÞÍ"’æiã¸-hšgá;/8KUN Þ/aVÙ›bW,qqgqõÂïl§[-™-R&‹„­Üø¢Ë ÿ%Y dï ²c”J‰cxzËN·²½¡ºA¡1÷O`Ÿr‚p9¢\ý5x¯Á¸–¤ÝW½Ê<½³XìÑ&ä8ñ";3õ~jÄž³R³|r·ÚiÚ«AÌènÞ«xêÃËÔÊI‹×Eó1Ru*¼‰ÂƉŽ#7Æy6âH,¼ÿî²"WÆ;rˆÒm^nTÈíÄ{æ@c¶£B°,+Ììò.Í6ùéÆoÎÙwŒg§+ÑÌÆ¾ ¥dýç¡dr$7T:…jìþÐ~*ü~ˆ’¯nk5G}¨~siûùE¹IÎ11ܹtßß¾çú]¥ê%ŠÀrj÷”$À]aE‰KùOü¯<³k-ä±W„³a>rO˜;+æÛ h‹ êŸxÕxœ*§ «¾Õ/… ~ïU„7xô&mù$ õ\w0(åå]¿xt¡ÂäAÍY=}Ý­¥¶ô]ñÝI«ç+ ³¾÷c6xäÍè]Àtb&|->¢—= 9zá@ðJRUÒ®W ZÆÄA–õœâG\ÏÏîW€¨x,Œ6üdCE ÀBnÆÚ–®fn…s6ùÄê$nåÚâkÒçààúxZÖä'Ççxm›Íœá‚ûCÛç«Ú)ï^„ ÐB!‹1·ì‘°‹)ËÒ=ygª¦ä·-¦'ߊ%¾û]O”(ØíDN¾‰ÓuÂY}#7ÞÐP"Ï}LýHrÿzE¬Ú*§Š¬ñµ|‘·ù»TÔ í§û¡Ó²x €‡É ·JTÆÊV)3P¼£€së<^\›Ü¬úâqìàÏEͦ¯/ÚäÏ9Ÿ†D¥K6 ¬UÿºU€=ï`õõ𻸖\œÄ³P£•0&øo8‡ Ñ7˜|B6{ª8߆bF†`MIä[ü\0çxéÔo½o MÑ–¶UÕT[ùVøOˆÝÜøO;©æ+Ìê£ATŸb°E’ñû³@ÈÜY_ïw!h›Ä0Žhâ£âo/-õ¡õ’õ¤ dëòq?x\xXÀÎCoçÖ ,» {ŠôSŠGáȳdoVÇu&‚^RrLç½´SoàòñÈ«›}õ¯Â¬RT†>%†A¯‡Œv EܹvÌ."rí¡«2Ó`§ïe¹ƒÔ40|>Š™iIV»ùÚbܬÐY _Ž”I£;©El$µÚÐ[ˆ`ô0m:,J .e¶³%6ÔÀ9¿­/<=é¶þp"Zµ¬ :Ë ×…lKyI¥(÷š…S@éϺc–)3 DUäÙTV`k‘ ¤mòTÓ×"&bz"g¸Ø7¬†6 5+èÞbÿ$†5‹6¬,BÍg2\¦¹¯>´ÁÏúò[›(m¹/*éÛˆàÉé£;¤­í•îÚûAî —¼šÑOív⟱/:o›- zB“ ñ°/ûZ3?¶7$¾âñêí=îœo ~D›oA4芥ÀófÇEcºÒ(áçÍ 8‚iu[·¬çŸÌ…Ð)¼0¿`ü½A‚…çËŠ;707<ïü9K•ð…„³¨@ÊrŸ‡Ê%î«þQ­\¢:, ,ƒY./’¦åÇve×(ɧõS3ÜFRÒG ¡;ww~>Å4cs™cè„•P'Õ^{À†ÌÂz<£KX³ztòõ)û†z‚•ˆ®M¨²aè'×­îÌ&|ç=#‚ÞHo v›ïªk8Ûº¿ã(z‚~4^Àˆ À¸»š£rÁ¹¦&“‘6⺕Þa€Þp(€ž¾[¥#_=º(@ðª@bš­V4 ^¦WþÄÆå®™ ­Ñ±û0DWêß³ßëž žhdÒìHIùOéÞ¯KÛV˾ßJË\0-xŸ#ÐÃèrX idY€‹ÊÂ[ÊÒ¾`h_µà”<9àiùÇ'°þ†2TÓ*ºß!è`‡\‚E½W½ú=-°h´j/üÐmñ¡qvàõH(_ê“»þ“tI6PémŸÞX} '=Ø·tÍn@eÖÝs£ÌaЀÒ½2·TrfàµQ²RoÞàQ˜a3šZ¦˜ #E"ÐÁ+ݧ<ÒÁ Œ2èa  •ÏËpÍçi*̆“ô Ã.-ÿßê¬ !V¡aÖé´—À«ìO$4’ |Ïïù’ênp<ê©xžÞ­T€8 qÑ.'žYÆnB¦ ¹dn]MòUº^É—¼BÜÝ>3€:kÓ+ |õRrÃÙÔrjLÎÉøt΋\GO‚(Ú2|í‚ Ò8BТh²-–g<:Zˆ*RØ!Äàyõ_Â;â½ßéaûØ”ˆïË8ø^éW·Ùr¬[£ çï÷®§›VÅÒÛdì sRãКÃã#µ3£žë‹æ“†’yMlh¯,¿™zÞá2Ç{ß­Fö1Lb$~  à `œýŽÚ¢Ù숎ò±Ì€î—Œa‚ýë-Xlj¾À`˜ÑZyÝõþ3ÏÄVߢlúƒs¤kmõŽò”$kÑ¢ƒVæ‹Wh‰²òÞNÙ ‰5›¹¢ Òï'B®&K“*£%t>EZË0-Y?ä&”ÆÙi9„3 Z\Ýa Î7Ò‘¡Á:Ãۣܘ:‘LüpÞfÀüX±Oê¨Ð"kÂ3å÷ÚRA×ÅvdÌ•¶·Uæê\‰Ï5mÂÛ„ÜÐ3ãØ•Ö=m/¨‚„|%ñÜ’’ò²RD¾“¸dÁZ¨(aì"…­ø+9+Ò$± í²1UhаKñƒµ-ô¯§šž+$à‹()VŒ •å¦dÞv{Æ·+õ©ÛåR„!á.³ºÂs¦¡œ–ˆÆÖ5ü´­UO$Œ˜lœLŤ»âaøúê: —ž½ùÉùÜ4&-\B¦¼Q4꿇OOØ{ƒÄ¸¹{ÌÑ ‡!@üGD jÔé`ã6vñ'§îÓ™·brtqÜ ØM²Oé|™øŸ@®í$‰@pÌim½ÀPÁ' 7R©¶ã"ä0È«cëëP4U :’¡Ä®‚NWjvÞÔÊF‡k ð]µ òYyáû0 7T½àc” N›d|ÑÞz’;Þ^™”»¬tåõŸ¢UïP´¦6»åò p©ÄÞ¹Þ £AWnXÇPõJ49TÜ.Úäv…™ÆÈ2*Èô>>ÁÍ“òe;§cÑ$Çɨ8 ª´QÊŸí¢kX•Є•>äwÙ×g5Œñ†Ëô}[¸‡ù»Õ?|ÑŽ1'^ê°…§’›ë[¥‚#ö€ì©EzñyôÐú‡[ò³­¯¤ê¥½<Vƒô9HµZ(%¾Ž(Xc×ÜöÛ"Šk1ɉèýlMj%ÀÔ¼\ÄG“|%Mϯ£E½¨ñÖ&=k.ò®­GgÏŽö°]â_±xJËfÛÿH_>íDá«:ãC¬6"¼Ôªôq¿!ž³Ïð¸LmoŠ‘|¥³£à]{IDªã¿cÃójœõË_Üö¬ÅÌÁÍ…ŵD‘¥ºÈð1Ë˰]Z5î<ápüîS•Ì¡ý“xo‘ž„Hàÿ›A¡Û¥|–·ƒk’ýþ¹îõ*"'åQÐ!ŽQ¸gèãjÃB+‡Ì‘Xàâ°Ð0X²WLñþ™ ­ŸÔ¬aC褚ûBTÙ¨¹0¶¨!ù¹Ï }›dÕ[¢Sµ5>¥ÛÊ·®ûç‚–U×s~D‡i °;ÉÑ`Å~Îh£EÉ8&c–¶Oйs¡:kZæJõ4±ãÄê8è³UGlñ»xó½,¯Amj­<y<8”³½õÂ#€ðÌóHîì Ò=ÏO!ãµDWÖ‰KA$º+'ì`qà÷ ¸!ÕÝîOî4)ÙÊädæõMæ;Ì1³dWi:Ž™DÙM-÷{¼cø9ÝÌô¨ÊâÍ‚“ÿíVè4€žWØ‘—Ù–2ß4 IÌÖ£¤üº†m0ÇG0eXøÙõŠsµs+¯þw×IVM¾€!V)õ4Ÿ´>³>±ñõ3mn>„^©»Í]`«qÍVuʆª0žÖËD°«‹Ê±]JrâôãXpéâ¦L‚¸d(VÜjrÕhsAXËXcò°M:Ã'AöÓ¥žkŸä®󃔃Õ*z‡uQ9™ªwþ0çú´ ÃèšžO°†Úíì‡|²@2ü†]#|õmxzx ˆÎ Y˜÷Å&*ﻞ„!Q¾ã¼¶Q­æù@ƒz©¬š»ÉqÑ2 ßÇ”Ž܉I¢Z‹÷Qs°~á£xý+±¿º¦?×¶*ìêÍaUzC…Þ°æ}[Ñ,‡HhŽ1²÷)úeW‚±»uöYØïéP #©ûä»ÂõÿšòãȨîL ÷ð œiÔ“¤ÃÒíˆ>“¡Èª®&T÷Å+–×Lè­«š.ë'‰În¯Â’\’ßƉ“tHjJ¬Å0t€5×Ä¢ã,Šð<šMŽNßYSýô²_ÖzÊú÷ÔοíŽÇ ÞÑ Î>ß±Gæ³(—rÿqmy±Ãó1í@4çd÷ÍRª{sgô {a.¯a­û<Ó[™Î¸˜·‡ètQé8Ÿz§â¬–S ™Xõ[Öòžö© KãeÈ× ‚ñIÞ+ Ÿ£Ç“eèĊԕ»”Nã(µ¸{ºâÔ3;ÀǼä.\3tµÄ ßêuÉ̓¶7Wm^jý¥½Fñ Cx…ö0BñPÔa=<<*'ðú<ΘÁ²ùut˜¦Ã>¦4IPÕkCezÌ?Îþ (ó©^n\FÃ4cÁÍV?z²0A¦¯Dî9 ¦Z=“¢?g¤5×ýþ¨2¸Š"Byp]d=Lßø›G"ï2QÍü] Æ•áS+ô¾vdL‰¥Ä1õéñ κ“Ä×F ãßh†×Zñ¢Y/¡UÎæNÕÆfÈn,±;´Ct‘ úè5&N åÕqÛàÕ»¸Áë¾Ö¬)þB¼µ/µÍ瀤£:ÈnDü|!ƒ:[c+‘5FÝß3¯¿^È”‹ñ ŸÛ‰\³%W­µ”­Î¶É?ïIë©B¨àóï4'êÜ“ý>¦,¶ Œ)|î^Ö^ëûû¢Çgv²8‚yEp¯Tù"à\I`5÷I<Óò¡ašé¹©#Ѿ.¬ù ƒ†~F¼?¹´)K>E(Lm|_}"Jœ(J¨|Ø—Äê%¦ õµ ݪi#mª§dÖóXó¦yš–.;2•f]©Ê®£WeÒºÔÁãíÏ|šXÚâ­W;ikÇ ?êI±KÍylÝ )I“&‡);PŠÚ3ó8ÃDu˜'¦¯šÔ,ÀŒ5c¤Dô‡îÓÓõ5š&<@4,{ÂyçzËðL`±ia»½·"$nãÒ£¢œÀ" +£>:Ÿ‚„A‚ÀNL©4H"y¦I–ÓÙPÍÔØLcù‹uÄ[£•dÊ… ÛWÚOV×p ÞÄŠÐ Ïp'xDrO"Tßc&ˆv²ž‚[7<Š²×º‡=5ºù«˜tμ‹ZSVÁûÎî ¶Á¸{8:#’¶Y±%`n[p„Á§Ò‹þâQ‚§Täõ¼â#ôtèæ^qлÒYÚW3Cß^!ð®„ï׬ª¹¶ÞÊ£÷,Ÿe@ÎAj¦4™vkªäu¡$AË…°p»*gN|2^jCw'”™9Å|àq ÿ‡»!K5övͪBcóa2gkÜ\öðÂíîØ&Cײ³úcyT`­:0ŹÅ5élj@å»tÁNøäØ9}TÌ'¾‚ƒÔ™f‘f5+{ê{>ói)L¢Œ±RŠ,weÅj[™ÖšY^‡HMË»B&m»LÙj(hN·IÝ´¥;…i8òÎkÕÊ+Í{½ZºaÅ{%žµjÂÖÝ·ZÑA`òØLà50u’¹lÎôçŒ*‹F`Ó2dÅ9&FµÆjT„@¸”*OO7¬â €ŸŠWö>ïGÈ+|ýÖ^Ùß¿âC‡Ÿ§”7xÞbÛÇ­'Ð'‹j”‚‰Å´ÍëŸÏâ0UÏ uë„æe»OFw£¬ñ·Àˆ;g°þpØR)H±»ò;î´à”-”|9ºöšG=Ïló×8?úëõb»‹‰žîX–ÇeŸg äÌ®+ŽP`V -7ô´Ž•Ä‘Q0ø(BeŠÛÊËg®¦I*v_ç*™AP)¾$$¥É$÷z‰†²¾UGÌWâW¢'3Ñb@CÓŠA}­N—u´ÜpYDVw€ÉÑáì ÛG œ5¾ñ†ùcÅžw?•léõ; íÓ˜múæÝ‡S”§ÿ:¼Mfä@îÔýÙ­1 –ºê .qk&™®%ÏiÁ×ÖV˜©1 (¼ Åšdòá­%ZR$‚|À;i‰jtAždÈmlàþHÕÆ&ÜMà)Ehé½ÝùjÂ<ŒÃc²˜ä(ëc`¢¦d€ž‡%æâÜ^n(.gÏrøÊ¨~#B X¥Iá5óbÅøqV &*ÜY|K­0ÌŽsiÅ:}%qæHRSæ:+”—Ð ¾ê7DÐÞ:„Ùéd )ý qMWí‡|dŽÍ½6¦„:Á5(¸ô™~Ø„k;Ü’b\7^h ©ù¶ÜÃo?Vª(¦‰Ëg~ÃûˆC+©ÛZ—Õ¡ ØIÆ~óµñåZ^O*µæ#ÄŠ–œDâîBfooì™I¶OS”ùÈßÿÙ÷.¤2¿Ì‘Ƒٳ7z'›–Ó(ó™À¦Ð‡Ì)¥Žæ$7äPLR»|O¥lârD“¾Ä ÜõPÎ<ùÔ:ÜL™×¢ÔÆFÃÿˤ¯ ™ø?jÛüy‰Fªë×½U?Ñü×Í'mô…2ÿ;}í•qÀœ7/ß ù“¹ÕဟÌÑæ™}ФÒÂåg IŸ³=Ÿôôo+šÐ,Ña^#WÜaޝßn st­èj0²†ˆo–§„Þ¾`5V,ãz\ØS™ç³?Ñ"ûXpûð&jĘnýÑ9Ã^—j ­Þ6´õqg~°ÆÍ5@ .€äzßjÄ4Âò˜ë‘¹©ÿÞžƒÝì½P¿oWÐÛx€n)ës®z¾—,nゃM dá®U#~Rs"DM];¿S XÛgžu*r×»·Á õ·—ðžçÓ»Ǭx ÉnUB7–6ŽÉ6ûK¥íŽsµH[¢-é/G%Œ+}-qS]Ûá2óeõäÇdÃ~zAò”ÔD,·¯^€‰UÑ=²~'8 ÊÊ<öm|…C6é…€Bh:hR·{ïxJ\ÂpÑóÐO_‰ÐUac*·íá×=làžì.ä+pý³À$mª1èVyzùÇue²±%xUv-kuÓîl7$~¬¾Éèl¨«aØü‘ÊÅч†Lú‘—¨ÛΫ’U0 —$.…;¯4çBnßû€×ŽKçÖÙEtÂe–,)‰êpŽ à(¸‘¸¦iõô }>°*k3o-D…)=ʵnó¢ÀûâQ›=<¨@vªØÿ`ítΘ<.ú•«@ÊÍK^ýo¶[ ¾Ö“È—ª®·[KùÛ¡1û%Ybóî5›ë÷±üÕ‰=… ðŠ‹MÞ F†0‘' ’Œ¸¦`§Ø÷m¢ºÙK}ðž…Ät3\¶û¾a(> ‚M:Ø4Û_F#Èéx=%ÉÌ^æNV=8ÝgĤ.ã]­ `0'u‚Þ!YƒäÑA3F[½K  ¢…=^I“î8,-ýæÅ\ ¨2¾ ¤ÿ³‚¹‰äÛeZO 1¢*ÌžF×&=sîg3Ýô©©°ûzdÐ _~ébÕÖnÉ_”ÜçSo¶B¸ðÖ1àh;q÷ëg²EqÈ®¶Úmº)ظÞéQYzUѲ„„> ”ð÷óNÿ…æ!äVRÓ »£w©§ïHéR)HÇ£8¢Êx¯[jbÁ4š³Ê•2ñø/¹k7/¥Å¤B"5£ÈF5º 'iú ¼¨õV•Ë¡DIb>;œUîI4ªå“òe@Ä=|_À…¸â­þùÕš+/@Ž›lŸé¨± ûQuÙ€à j¦ñAŒð ß’/1ØÚjZy»]8 æk‹]B´}32)–qòýÇÅtìaÆP#%g|ÛŽÀŽ|çlpxWsÑÅ&þs8>8‰_Q Å&׃´ÜçeAUc÷™ÓT:âKœ ›³eð?âÒˆKÓÏÿý3 LsÌ¡¡HJ¨ÝSþÍEHm‹†p¼+ ¹\ࣳ‚Ÿ¶1ÔA `X<¥ãxQ™‚N=Õm êKÜöJQgLç­æÏò@m¡Mñ˜§¬ŒúÊ=‹]â“üSwG+žØÈ ôÈÎ6[¼ã@_’ëXв½a%Õýûè൥OHK>{ºîk2%˜ Œ`Þ°˜mSØêºHÏpb-í2Gî`‹ÿw¤ÂZ¼<#Á5/0L—^-A {B>2<¶[U£š…ÒÔ/N‹PAvÊ.ôˆ°ïdv•Éñì°©!vœ*ƒJ¾ïn&Wå9îyËÄ;oêÜB˜TÆlóÔœ8??‹KýÖ³©Ø ‹Ó5šmüš_™Ý…HäG…’I:^Žƒ&r½® ËPUcð˜H剪À±r*ÿŠÞÀq:ÚI:âˆJ ;*»ÈH‰Ù±G„3Å qk—ÞÙGR¤f"DßÝÄ“c­¦àÊe+xTŒl2w{•< q¬| Ws`‘«´iQ=ãKžÎi^‹cN³‰7Î-£ÉÓñ=µ^Ž}/ØÐ^vÍ!¡ÜhTì¢$ Jî&N5t×Èò¶“ÎE ØI,ÆUñÒxÊ}i(<¿wxt…sÿE%´õêÕ(žÎq›“Á¬vG‰)ߪäŽ5;®OŒ~½,Niì«ðZdÛàpƒv¦-eà—v‘KÖKLIßUzh‡|NHû “_¬7ôQÌ‡Ž‘°3VJÇ]8ËÅ¢y?ù*Û~SØoâih¦‡ñ%9í…ý“||§/Æ(_¹SGε.FÊ·Óks IUǺÒXéqöf¢,1 ¢B'ì‡ßÛ­:».¾«x² ©sÎx&\p§v2ýd2’úÏ\xù¼2м»O4o úWº>äD—pAœ“ÒR¦–¡×G^ùøØ …³%þ3¸:A7=¼- (ÕB%qþr»×·­J!¿XkŽ]x€fƒÿß¶£ý­IZ+àw“‰Üµu“qsrG ®T赞Sã2.;Ýó¨je[zªJž¬øpC$yå[VêÚª¡^·®ý9~3VEÕ”Ÿ¶óÐ/Ãt0¼ÊXð¨§Ý]ÄÃjþ“ØYŸ‡ØVA[&NMW;÷ñ|8»5|çßÌË!=ër·!¦:^=ylj)5`ôÙK¦fW7œo+UÚvœã<Ïy^‚«û³ä!+n?¿Q›¸³yà…EKEiQ\“èRÿ¡Ê!òIk|{¹ýî%šík?P£œí•3Œ ÿkeÞäݾçWª=˜wl&ºÛ_·Å9øÙï¶ø”Ý•â•'‡Ò¤z!1 =Ýõ~òvS„¯ho4¸o z÷k<›¼ ¹RÆiq3„1›ô\ç[ý‚àƒ ͘œÓ@KŠ} èñ>g¿q,ÝZê¾\ó™c…!ôx I"·o;l G¸È;›wí…µes£ù"€E°7ð ÎgàŽY[ò\µF»äh ì­PÖå‡ùí¡É%Â?IÊ€BtÚ3ɬøèrÅHT+l8;d ɶN~A£Ó2¾&…õ)ΦÍÔp‚íØ~`ÀÊb³ÿ°×âutrT‡Jå &XÉ6K'ûgÙâÀ¸<±€DŒT…p—°€ª3ÔæÊ Ä–*V‰ƒ•M;þÚ¯øýò¥¸O·aÔ¸/6Ü~ûØs?= ɧٻŠràá,C×6åòP—Øþð¶M¯yDŒC’0 ûÌ9HÀ ©ôöSâ€Ê|Œ³V —CLjØ^üX%ž«Åج§SE'©Ý ®–í³©n:KÂ4þü¡ n s!üöÔq³•ˆÖzadל£µ(_€C¦¢ÊØw]dž :÷f< õ]ôîfV È8è¿%÷‰2Óoybn· œ.7QGëÐxm„’îˆ*@Q aTR&Ž.>jYwÜÓ&]µæÿÞŸÌi¢s ễVc¼Óz§NCÖÒ´j²m½ ÇH;ë~'{‘’œx<Þ.ó ôXrª>Ý– urw¢X¶ªa×bžh>Bqwëo= ǨvX0DFÚØUqxhÙ’c!Ø&ÙâS¸z7ËiÚ…£êµVTɈ"}Œ ©úºÝÐ̃ÏkÆm$RyvرÚ%Œ«?s¼5úÍO$ÆéV\((AÈek펈þp¸^nâlÿ×z¾î»1¼êï¡àô‘w; u3,ñ5Ã%I¢F¾cm¨ÂuN{A3B°IW>VžRn6Û‚/Ï@oS¿Ùg|k£°MX‡,ûSCkâ„€âw"çYÝ]цñ6¥ *ÆúKNëø‹ãHÇÍuøvÚ©;5H®kPÚ=Ë g¹ÛïúáÑ®ùƒÎlÐ2MÎjsóACÈ+¤Ä2:X;Œ§¾. º®¦iö\P©uu‹îÐÓY:äq›| å»9ÐõG`’ô u4*o ,s60a) A?&Iö‚ÚÙ¡ÀOc'I“ “ïLÕ6èBktaäÈÒ¡ô“~C—ùgÌ9Å„ˆAù+ŠOÓ31®'|ÎîI1~qÖ_>ÿ}“È·‘¬+#×lÍ@ÓŽØñºèùí,=}bB޼—0gÀ/wùÙŨj0®WÁOÅȯm×—Ô§1…šV™Lç_ÞչޠP¨]éP¯8cîÅÝYÓ}ƳoXµ¸(z%•¦ÊŠY®®7ŽeX{G@¸p¯ZàÅ„lìI³Ž­ (ä{}f¥—.F ìïà5¨Zzá“=l¿<ÈØ_TäEæ¦MÍRj;ìýcÏÙD3ƒ©WS'<¬ãV4Be» öNºøo]¥Å…!"c ß‚$¿‰7W®êh¹ÇÈ ¡Ð)’ ¦lVæ›õ†ý-νÂm‚Ùþ«õSœÂb«­Š!ÀÏý k®S‚î0†ÉÒ/g¤½Rmõ:—]í¥ÿõ¼í¦,T\POi\?ccú&#[jsD‘È×îo3¢í°a 2£o¬NÂ@H ú•ñãŽe±»pF²08¸´9ÐÅÖj™ïÞ0-NÜSN"¹?è®i¶ÈÄ)oC;³µœÙ£ ¢k'µÝ`Nðw}Å(žPƒp¸ÊÍV€°d^⓹yq~%½ù¶Ï¿1÷°#qîïV¬P¦<¸nù#’ü{`së½%M¸Z0L*ؤŸZ0Ä&ù|íõ-„…OV¶…ó£­›iˆç3”:-““íç tì"@?µ¾ýSʦ½ ^ÉøõP•b5â¹aZ[%õ|iBéEQãÏE!l—å5Œ`ྤY?öö¢ÂepϸJz2 SçÍ$(Ò•Úµç­_8'èNÝ âO—‚wTáG ³AD¬¼júcbÀ-PˆÕÜ`sßä™+wº¢=›P¾ûrËL˜§’²ÞtRÀ’»º µÈªõ×’Zt7N2 -²=œ3ÞÅ£ÕÖã/è_‰Ñžyê:~U˜\žE¾îp.0mõ.,QçÖø)t|Y(‘=Ô¹=\uÄA=Çic#d°Ì‰ûÇÑ0MD´JZ?-äfåo‚¡%ºÚMŒÒ p¹±1Q#»ç«tæëÔò±åJe¯í.Dj5Ì=`BäŠÁ&Ž…^>0 ‹YZplm/data/Produc.rda0000644000176200001440000006567314124132276013722 0ustar liggesusers‹í½uxUG÷/>ZŠo¡@¡ÅކhR¼¸Sh¡h‹»[ ¸&h°( D‰ ‘s’ˆ‡ ®¤ð›Ìgí3ß{î½Ý<¿çýãåé÷ìYk–|Öš5ûœŒî7QU{bmƘ%³²´d–Vü£µ%ÿŸ³fµx[}äÒE3WÌ`̪!?«ÃÛzüè.zü¿–UpXUÁa]Gµ*8ªWÁQ£ ŽšUpÔª‚£vuªà¨[G½*8>©‚ãÓ*8êWÁñY ªàhXG£*8WÁѤ ަUp|^G³*8šWÁÑ¢ Ž–Up´ª‚£umªàø¢ Ž/«àh[G»*8¾ª‚£}ªàèXÇ×Uptª‚£sßTÁñm]ªàèZG·*8ºÿ¿ÿë*gþ¬•³æ/cÈLºÓÕvCí~´fg:=xÒˆáÊiM»ÑC솱CçµûÚ <`ÄèáƒM=úŽ:b´]¿t^§ïˆáÃû÷;¸ï¸±J—~ý‡ÚM°Ý_¡1€?1¸Ÿ‰äÀþ#F4 XߤŒVsðСƒ‡¬Ð¯1xx¿Áv&ö¬˜ |®þ¿0ZsHÿácÇõò3×:bÜà1ÿãÑjÃìW8ª9ÌnôÏCí†÷£ózÃìÆŒ±ë;hܘþcÇš†6¸ï Áí†+CÌg:fÄXeÈ:ÃSùßÈ‘ƒå3cÆŒ7Z9¯1lÄð±’‰šÃûÿ8ÚnÌÓ†÷ogL½áý'Ld7lä˜AƒM«]yñ§þ£Çôÿù^Öâà¾#ä°¦þp¬‰×zú;Õ¬[­ ƒÇp[3XéUcÂÏ#¸Jš¹Mµó§-S¼ÆäK³§ÍX¾h)ÿô‰UKeµ F0?Bøq‘¡üãG8?"øÉ(~Dó#†±üˆãÇ%~Äó#‰ÿã¿cüwŒÿŽñß1þ;ÆÇøïÿã¿cüwŒÿŽñÿϦ]Ϫء«ŠÝµªØå«UGUÌ¥*v’«b÷õ?å¨ ™VÅ®øÊÎzUÿ);ëÿ)¶^|ü§ØGUè¶*ø¨ ¿ýOá£*ìò Žª˜KUðQ>Wº­ ŸûOɪB/ÿ)xúŸ‚cU¡Ûÿü¨ ½T…VUá·U —ÊíË ;6µvl,z(TʵòA£|Ð*tʽòÁFùЬÿç-¡O*—R¶¿ŒK<ðK'Û«þõh[Ûk*ÍÚòþ¶™Õ=ók÷¶ÍœrŽŸ6²Í|P_œgÒ×î½øŒmVÀ»m­#FÛf×yöË×&Ùf/žŠÖ©±/û¼;lo9-f›ígöê”FkËÙf¿ ÆÉù1ߟ_°MÊÖŠç ný[GŒzlk\œÄÉ-±MöùRŒ“¸Cô»l‹6ÍéÅ#΀mz@¨xîÊÓj⹫¿^|\{¼LÍÿÙf6mV¯3b^YŸ‚ÏIÕÀçŸa³ù?ÛœØæbž±±?øåë¿l/u­!èÄ·YÐÿ=]Ì7Þ­ºèóK˜ÿZŒ›Xkþ•+W2lG€ÿijs{/öÌ·M|íÁk›4h‘ ›4ÕOôKú±\<ŸTo€/ñnÌ×&°Mjuœÿ;aûqº£kÿ]¥ÜíØœS•÷íØqÏÊùر¢J}Ù±ûÑ•ôì,jdqrµí,õÏYXo¯¤kgÑ*­r>võkàzÝe•ó°c­ÄsìAïJ>ìX±_%v¬4_ŒÃÞ4®lm“ûCÉYGÊŠåb¾©¿x ý\ý™ÐCÚ¸?…<+¥T9ß+©KÄõ Cq~5`¿ÐûµÔA•m3‡uãgº•ÁÎÞý ä“5e¤°“¬»)Â>²—Nô¯¾Ï…]~óQôË|,®gMO|e]*äšýC ›½ö“=ÙCôËþòô^׳^o|eåç ¾³NnzË ?Èj|LÐÏ|0HœgÞòç'^ { ÒVˆyeÂþ‚W`Þ!?`œõSp>õÚ)«Å8!“`ç!ƒð|ˆu¬Cp!èã¹`·o„½ï(v¼núÍvZÊà‡¥Åx7Çr(û¹ ÚGƒ…}•»ý#äyk{Žïv¯^BŽ·_Á^ï˜)ƿ۴Ï]èñžþzßâ„°ãû!ðïŠÃDÿ»ÏCŽùÂ.m³³ï º9A%bÜÜmIBNySœ×»BùME¿üµ„ÔÙ)æ]XãŠx®èÓ â~Ñ=øeñ^;¡ÏÂR‹@ÁWé¯À£}ó„¼ÏY,ÎÏÿ \ñ‹Àùõ(ñü…tø›ÿÈ;°Öa!‡@×|Ñ?¨k]A?è\wñ\п!‚ÿàïGˆyO†ÞƒgÂÝÅ|‚s0~HóGB¾Öˆûû‡ùR:ž]„žSû`ÜÔ÷ð»Ë‹_ÒÚWÒ®Á¿Ó½a/WÂ_3¬¶9d¬€<3柌í?ãpœx.#b¬˜ßµQ°‡Ì‘ðãLÃpð;8“•÷q²{Kà™ýH1^v¾7âT+øAÎ:ð™ÛÜVÜÏuý\Ì/÷âoî¹#hwÓùøwî*à]Nè9ÇÙÏÍ‚~s+`y.Ã~|þô®wØ-ø½ž?IàAþ®ÓBù7ó?€ß-æ_°)^Ì£ ú.ÓU̳°x©Wáäþ=q?à‡1ÿÀÀ“À@Ä Î[Pp0èø ÖAÁþbœ¾ÈB6Þ:a!‹a_!ÿtB†^Èð½¸?úφsöÝãæºû zy{`ç××®rËwý óŠ>ºîã D|+úØRKê ß+Ü)Ùo+ä˜äXSØÁqÛØò7z´tŒ¯"ÿÉ€£)u`‡)ûq=åMÑ?µ;åOc¯¦nýÔÓÈ S=ž y§. óHø î÷F¿KäS9óÊM« ;= œy]´×‡!_º¾±ïõ ð½`ìëp-¿ü):ü=Ÿò·üYð¿üžÈ{ò5Èò‡À΂ý‘ÿ…üû¹?º¸f¡¸úí4!ÇÐEà;Ô þúz [çž!ž„÷´þ¾ü©è¾rœïù„ï,|†ß…kÏ“> ãšvk¬ºÉŸÀßSZ‰~©?!ÿ¼¬F\O‡|,=t®ì{+äšñ9òºŒ©ð£ŒÕÈ3~Ždü|Ëøa¢àûµ˜¿ÿOCÀäc¶i‚ŸÀTÄ‹ U3ÁÐaÐ ºõBpôv!Üø‹ÐëÅ~È[C«A^¡ëûa?0A?¬ q7|Î}›ƒÿ³S‘Gœ [+ÎÏ_E?¿LØç…Àÿ£Èc*!Ú„¼7ðø |{ úìgðm» |ò‡càÐ ,üíó-€õNC\)vÖ÷ŠO”>˜/æw³1òš›ž°Ï2ö WÖr-ësHȳlÞ׸nOy®_ \O¬‰ëB̵mËJêcœ§+aG‰ÐK„ùlÄàrDâsÄMÈ?²ì5ò*æÕúÚ;Œú öýÆØOcB±Ùð‡¸2äƒñ :býè?~ûy¾¸ÿ®1æÿ~Ä$!÷½Ý„¾?Üj+ÖiŒ¥VNÄŽýˆvÉ"¬Ó À:pÙÜJ~øýÐÊñíØ±•ò³cm`ÝÖ´:úÕ~eÇ>vnÇÚMòÎ\ ;ÉÐZÈ'ë}ÖéðÛœÞÈ×rŠ‘—ç:!ç9 >\oƒç¯'R|:Žu\C^ZÐÚK\/hÓyäçÈ :§ Žb½8 ø¸~xÕ ç±~ Ò o š }íE~T { nÔAÜþ rŽŸ!ŸCß!­Àgˆ­·ìð|È”¯5"žƒž+v~)ìðÁç«Ås÷ }?¸2Qœ?l<êáŠÍ¢ßÃün‚ïGun#¿Ÿý»ð›GΈg²· ¹<*wr|tùÉ£³Ÿyäô@ðñhÝ Ñߘù¹è—<ydræOÂRZ¢Ž‘²a8â€øŸZ ÿ»ü3âÕåëÐcÚ$Ä‹ôj°×ô\äýW–g¯äS>¾yÚÕ^óµZÈKIÀ…äùÀ­”ÈwR¢ñÜeÔ5._Ãsi!Ð[úP¬Ç®ÔN^ID”1vqµ5êWÃή^z(ƹš}_}‰y]kŸ)Æ©pÝ#æýðÓRqÿÑ*èíñ¯X>±Îòz|xªEáéô„õÂÓcÈËžê.æÿtC¬³†]ĺËú£ÐÛ“’ ¬Ë\"Ä8OæÏ^G\ š| Ú‡ü%è âdÐn²×EwÐ8äOA“§‚&/‚†S¿ïQŸ ú–âÃ_èxxxúÜNëT\§¼?þò½„ Ø{âYàXÒø“!ë £ò£ä• “œ\O鋸•ò ygª#ðúòx è÷$ò²ËQÈÛ.g`˜Öu¬Àaˆ?^„ûO׃ôÀà#CpøaðzÄéà ØUHĉíˆ#!éÀå‹Õ0ï‹ß!Þ]ì y_lŽy^lÙUèã¢;ô‘»x”×¥HðŸ÷¸>pégÔ®ŸA^–?ëž‚O¬_ŽXâ¼P¿(œýFè¡ðb_ÁGaÖ‹…ɈO…^ýÐßyDá9ä뻿ü=Ríöý虯àëñÍxاõ¦§î¨¿<[^*äõ¼üäùŒ1îó"7ñÜ‹EÝ—-ì…½t(ôöªÑs1Þ«½?9¿þÌNÐ}ø¥'r æUöµþ]víFñj ì0&zˆ]ü‹û q:.ùâ¥5ÐGü@Ø[ü5¬£f÷òH\ ?5´ƒ}'ÛoÏl‡Þ¼v"žzŸ_>]¡gä¾M@Ç·ôés|ùźÎÇþåˆu¡ê>Ã1®O=äCÞ7Aß»y÷sØuî?¯!ð)/þq}ì?ßùaþ+ªg`ý\8Ç úÿˆùÍ_E¢Q<~(Ö {.ˆy/>O-Åy?ÁGñDøIaû›ÈƒÚÓ}õZa¯ÅQˆ_%Ë£%WW ú¥ChÖuÌ›6Àϲqùbœò¯DáØ¶ü:£ºìýö¥bÜÛñׄünW¼Ïßi½EŽÆz$zøŠ½¿o~BŒ—ð)ì?Ññ8ñ p:‰âQRÖ†ùȯ ÀãTÈÝx¸fôÄ:Áè†ú¯q=òFãrÔÕò­oå‡<¤¼þQà…¼ñ9êy…=P§(ìµzõy¡-ò‰ÂÀ©ÂÁ˜GáoˆÇ…ó}QOôƒž‚\ _ S!w¿‹À¿GÀ%¥½Ðu† _o.¬†_øODÿ€ÝÈ«RÂþÔ öT‚¸¼ø2ã^´.‡_aýDü6íÃÄœFý3vò›¸qÀ߸ÛXŸ]úvxéò˜øÈâÇCNñ®”w–!Oˆ;/B¼Ž¿?ˆÏƺ7þ>òÜ„:ð³ð=è ôü+Õ£ŸÁCfçC®ÿ‹ß ÿ¸¸™æ÷þ:vzã†M¤ùF`]Þ8î{ ÏÃs»QG‹<ðÛz~X·\؉u“ÿè; äàƒyþŒçK(ÎjáßA´Î A fÀ“àÁà#X‡~Á]©îÞøü-ôzçm'1þÝ’:ÂNï­ƒžï½Cwÿ;ì“Ýÿiðïûß5Ïß·Nß Â¼ïm? äx¯/ê¯w?ü*ø¼ »»i–xþîlÔûîöO|ÞíŒzEšæŽùÿ…¬Äõ‹Ma_GÞu1ò €<.ôÖ=aƒ±~ ÛŽ<%,ã…]‡}‡ýIëkì1ü,­›¬qÓ¸ãœy=Åöƒ¾c7ÂîbÝÇc=Q¹ÇD`3xó9ì%úèFϼ¢»A.Q1¯¨ äùQ7@ß­7ì­'è»-EÏí$Ö³î`îá¿n·`Çn¥ôÜà–Û"د[WÇù’k1æã~]ój 9º>ÅzÚ­&ì.Õxrù+øMš öÓ'`>W6 Þ“±vrõgàßÕ|àâ5äÝ×üáO™ —gŽÓ >2÷£n•Y}gu£z÷jè+«õK?_ãk£î¿vÿy]ÂQäç ¯iŸr)䔘ŽuCRMÔ]’<±Ocø¼HÌðöcˆ=ãrØñ%ä“ü ä–|rt'¿t¿ ó˜~=âpî9òôL†=©}žù~wæúy F|÷š}xmz­¥vÆõʃy \öÞ‹ñòk Î™?øWPò((ªø¡Þ†ø²r. …ßi?Å:ªèäU´Ç!—¢¤#Èc¿¡è:ì½è…»˜ñ×wÄüŠ—ÌDž>ö’P„þ‰°>N|Þ^´I¿À“N‚ÿ¤rÄÃXàœaö ‡á'䟆XÒKì$èÉüVc?ÆppŒÀUƒ'ü"þ/Ôc!ïL(='þ<=1y{â=ä‹IA'i!­/N⹤xàKÒmàfÒ=è+é.öK’î"ÏLz¿34EÝÓ0r ŸIu¼làSÄhØODp(r"µûa‘w£¦aÝåûŠº†|0ºÕe毣ã‘ÏE?1µ¨ÕÁcöCn .ÈÓ¿ |6iˆ “´ù®áG’ëÖ[ð’ÿ=ŒclùyÎV¼ÿ¬¦zãð•2òHYŽü+e/p"ň¼9%yMÒ(ØeR!ék(äbŽ›cã2È#Ù¸•‰¼,e6ü7%õ³/ä)qدLy…<.u$ú_®‹|â²pçò#ø¹{oðíî†üÇ£äèñ7üÉs.ðÎÓúñôƒ¿{†Àÿ<“Á—g1äàù ~êùöå™{ð,@>à™EãÅÂÞ<¯bÜØÎX/ÆB\»ôãÇOƒž>Ažšçm ¯D#ü<©3柴ã$9AoII˜ORéu!pÓpy¤±+â‹q™3ò*È=a ½çá J89%DŽ¥u8]OÆ:$Áˆø•ù$TÀNJ!ÿ„$Ô‘¢PIð¢sOÈ!á(êã {!§¬Í´ßy uĬ/Ù3±ÿ–†øýû9_¾öš38’ãÜÏÙ*䛳ycÎþØGœ;û€¶XæÔ…?g¿neÇ/ M:oþ†] c6êÉjäÃÉN_r0ì&ù%ê§)Äó”? —”#ðû”Dò"ÔÇRÞ¹‰þ©}àç©{‘'¦V€NÈ ØCÈ[ª¤ÇB—'Âj n6zËE¾q?¢â^ÄHÔÅ"ÖA™Èg"›àùȈ‡‘át^Šþ‘h}tùfÒLèÑИðwäkÈNmïÓ±dÜõ;ÖK‰Ðñ*­›ÞSÝ­ùû{ì÷ ±_aÌ]ã%ÄãcØß¹‰ˆç×ÒzæüèÂaZ·Œ†¼ü'aÞþ]aWþ¿üß@?Àï¾£ýØgÀZ÷ ‡¼&ÁNÃNÒ¾Aàs p.ˆÞŸ ZAùø Ô9ƒ¿‡¿oÝà›ˆ{!Ý §5X„D@î!/!ç‹ ¨í½^œJù®;pñbäèúðÇõ僿€o·]ðo·|Ðs+¡¼ð!æëö/ìÙ½#ú¹ï <¼ >=Úa<{<ïqvçÙ•pÏ™ò˜Vð›ÓÛ '—)”Gþ>Ý_Ç!·gÇ}(ÑõÀxîï@ßã;ðï1”ò©‘° ]oŒq=¨¾âÑòöøuà Ô[Ó~$üíruä£i“±®Oï…øœ>q?Ýv“öq)Íuˆ´uÀ´à—ÿz-øL£ý·4ÚgI›€|!-ûªg—ÀNϵ¿ç–ÒþÔ]äyçCoçkGÏ·Gv~2äz~äu~ärþoÌÓ¯ž÷›Bëu=úûÿ„ó€Õˆ?ŒöžŽmù ÔË£ÞS^‘!Æ+|NØß­šÈ/Ë?À¾Ë3¯‹ñÊO5ó(ßúFù¦81¿òÙ)bþåk‘‡”¯FÞSîºå'Q',žxì_ÀùK3´”¯£Þ˜ …=$<‡$ÚaŸ"ÑyIRmzOðWÊrr7¨a§z¯ÄЉâÞ‹‹x®ô’’p?éò¯žÀY¯9Xy3èÏû+ø¿·ÖoÞ°?oèÉû#ðÒg4ö‰}vP½.ý}ÞSî%øðyˆç}J°ôm =û΃Ýç7CÝ"?ñ…x® ã,1Ÿ‚¡˜oÁ´+h×ÜÅþÒ¬–ôžâjú¼ÒúÊï}l#ì(ÆË×ÏýóëŸòûaŸ+_…¸6“Ö½¨^1ë’0;¬WÃbÃá–˜xÔ{»cÞác±Î_½‡£þÀÅðW8ø8± ùkD4ž‹¬ =;«…|5ì1ð/܈yGœ…}FS› =FÖ„DT@Ïwð|Ä]È;²=Ö‘Ó©¿'æ ýD>£üºúå1àÃõñØÍßLúøyIÁáW¨‡WCž\8·ên‘ðÿÂÀÛ¨§.À{C…Vȧ ¶¡ÞZð-Ö½ù÷‘gä{ ŽŸ?yZþø“{üÙý äàþìȽ:pÀí­çà/·©´ž¯?ru¸6λœ†Ý¹®ŸNÃx§'£ßéú°£Óõ¡ÇÓ‹q0êÕ‘OîÁú(ð=ät þüÖ÷Á«Ñ?Ø…âÝ<Šƒ¿ ß …¸üì)¸æt|ý†8´|í!¿ºyø6À}ߕЛïAÄWß¿ —³Ã`g—À¿Ï†!žŸ= zg7!^ýudz=1îÙo«g-‰ÎØÏÙ&ð³}à÷‰_À7ÿ$ÕD>”ô#âLÒFäIa˜‡¡ø0haφñ´N\Šñ »ÆÏá†íÈë û`†Ô­ ïQÏ(‡ºzQ7zOêêÔÅ—°./±D, }•¸€nI Ö%éWÝÒˆƒ¥Ç; >oh±.¼‘‹÷ÁnÃ>oÙ'Ö‚nÙwðû²q+]_ŠWg=o›‹¼êüŠkoøE½Õo½—á‡çü> Î]h{¼ð-ú_ |Úߊò8äíú øö¨ƒ\OíEü>=‹ì}4pÐå"ôê:㸮߻Î$ÿ°A×&°—jÇÁ_Nß"?Ž8uºììT)®ŸŠÂ¸§œÑ?™a›ì¿L@ëâdä©)XÜJë H @Ý%}ÆO÷BŸþó¼Òú»ÒycúcÔ¿ÒK€gé¹ð¿ôë˜o|ì0ÁëˆÄÉðËÄ ª[@ŽIÏῆ–T_iˆ}jÃ0Ô‡ ´ßcH_Æšô>ØÈ¾X?Òþvr;àaò<øIòÈ+Àƒö‘'Ðûàƒ¡ ÷ð°ÏH Ì3ªÕA‹ §èÞ¸Mûw1㩞Jû«±ÃÑ?v#êJ±» —Ø•ÀÑØÕ¸žHü$M@J:?Hz…z¡aäip zàfÊ'OÓ:ðôjðÀ8†@¬Û 鈫† ø­± òlcGØ«±ê^FŠ—^õ!G¯iÀ5/'ÌËދôz»ô*¤þTï;CyHüʧôé3róYGùÉà·ïTØïßãÙKÀÃsb[d´iæø ÈëÄÈõä!ä/'{žO¶@ü99 ÷OµÆ¸§rÉOHn}©®Jùý8ªŽßî è|%­;Nк¢püø"Øãñà÷øwèwüäu†ø:DëBðí’y»Bnn¾ÏíäàŒy{Ä<< §Î´‚\½¦o¼¯Ã_·vÄx[Å<¶ÞÝm.˜ÿv“\ßAëñWÀï._ôÛ]º{rÀÇ^/ÈkïÌo_àþ> âË>g<¿¿úgÍC}6Ûëð쩨«g{"Žf{!~äôÞçÜ ÷š·ÂûÌõtb¾yɨw\Ÿ÷F¯Ç¯ë¯ð~n~¼/š?ëëüýãoZ7FžñÖaÏnç¨ÞÝ‹êfõqîi yžY¿ñZ ¼÷>z¾u!糇Ñÿ|ìâÂ'—ÿ è3À¸Øùgàkص»-ôëAï?ŸñÂs^T§óÞBy·7äàk ò…Ýù¾Æ<ÎÆÂÏέ„]£uò¹ ˜Ï¹Z”7¤¢ßÙ[È/ÎÞE»€ÞSœŸ º Tè·$ú]Þz]Q„ë+ç þ¯±€Ý­;€ylüç·Q†þ×cÜÁßF²çè~<ì?p8ö%£è½ÅÈßi80ùpÐÄà•°£Ð–ÀáðG˜gd9Õ‘Ç#~ÄVG~·¸véoè#ž¾–Ðü&<ÄúØíg¬sÝR!?·G³{8äà@¸V„|ËçìÀ7›ô1’ÖÃiÝK¼Ðï<ò½ ð_ÿ%пÿøiÀbàßâ<·¸ä¶ðæ·À•ôµö5?÷õý,¦õîÒàséy<·¼/ž[Qã®…~W®E¿Uö°›UTÏX3öQˆyF†À^¢b¾QLJ¢“`§1þð“ØéX—Æþ ;¹ÔþïG'œÇz6ñ8ì8éOªËO§|r-Þ³0\ƒ<ÓqØë_Ì×ûìÍû6øö©Žñ½¯g¼`þ>‡`w>{éý”3гocÈËw/åÍ€“g)/ö…Ÿ½qÎý=›Žøud;ø=zò;Fû¨Çœðü±ÜwÞ9ž¹žZ =¸d®o%\OŸny¯ÛYÈͽ>ÅãWÈN=B`/G½Ðó‡^ÝĸÇèû-Î͉ÁÿqèýÄBðyrìðTÎOo£ø³•ê];©ÎU×ÝBÞîu¨]‚çOPíD,蟦øûíÉP? |¹ÀónÇiþ¯ ÷½´Ï¸þîû~T¿[ ùxP=Ðc6É£ìñÌeÈÙëWÚw…_­ÒUõà·+wã|Íàcmæ±>|oj {µï :öNЇ½?Ƴ§÷íOQ¿ÃàÞö£7o¦ú¾£æáƒþŽƒ _ÇA„0o§D<èž;ô7äyxάŸG>€Ÿ£^·6CßGwCG{‚¿£– w¤ô7X66„|7%‚Mâ¿ø±§<ÞޯÙ\ýoy >ú£ßöÞÀëÝ6àsO ÆÛ ºº€OGú£ãCŒ³(ò_ÒÏ-}~—?Z5ü­.½µi˜ßæ±é-úoŽß›7C¯[šàú–7˜§ís98@~WÁ—ÃcèÝÿ/¬S«¡Žø+p ¨-Õ mjPÝó ®\ N‚_„ÜGžÚõŽ0G¬?Â÷Ï"á~Ää¿{i_óoª3—Á¯w5…|v%€ß]–ÃÎIÔn…v „>öœ ygAþ{kàù½7 ·ýÓ!§´îs¤ï¿;ÆB^N+ §·ëÁ(Œo8Œ÷QŒ©Ôç—­°?š> ûWUÀ÷ÌAˆ'Y “„³£>œ½uºì÷sŽ#êŽ9ǰoœãõ—gÎ%ÔsÞ>Ïåjïc<“òƒ؉gŒã©¥Övuf+åíyÐÕQQoäpþ ìÃ/”p™¾ßçÿÎýÇÀ.ýc§Çc~ËzÁ^–9àþ2²³ec!Çå?‚îò8ÈqEÆ]EyÀjØãÚ÷ðÓ ”§oÒP[B~7™üÎz°¿Gö] ×/Í…Ü.½A<Žÿô.ý Ü»´ õ¥KE°«K!¸tñåÒ{Äïúþx"ÙWR-¬§’‚P‡5¨?ZC¯í!ìcÍÀ>Õ±ï0cƒ(? {>Fïã#r^98GP}ä9ìïd Õ?‚»<¹›qÀm2í¿®¢ýáû´ßûúö}Ÿpÿ'ÞC¿§ºCÞ§¨þIï/º„P¾»•öqÿ@ëñÕ îœHyæTÚw{\ð¦ú¾÷äÞØŸ÷ðU^ùÄ´EŽ9Š8“û±ÞÈ â† ŠûyÌ¥8ÔãâÇ`_|#aÎk€„÷ˆó q˜oÂzO¸7êž›oAî[6Àî7S½lói:Ÿ üÛ<óܼãl™ƒë[í1¯m~ïöHègÇ!ÌÇCØéNŠ;®aþ;…ÜwUǸN-0ÎAGÜ?Òã«}9ÿ}?Eë–8?Ñ‘Öj´'û‚î©îàïT4ú»¨ào®:ªç C>àæMõ»: »¸ ž_œ;]<ý?ÁxK>þ-Y~KÞÑ9Å…¥_C>Ë£ÿòÕ8_Aõ”UT/\Muã53ðüÚyhí§b\¯ðç=öW?§:Ó$ªÿ¸ÁNÏÅ@N~=Áÿ…/‘÷]øôzÒ>Wp)p&úþ(ú­‡ƒ¢P? €…¾ãG—ãÿÙ÷¢&!ÿLØŽºxBâ^â4ôKêÜOzë¼÷,òeãEÔ“SæÃîR}Qß»¼ õè´axß?í>öyÒw£¾%b‰è·uìÊäípòÞMùÅàɪ§nyy8XÐs Ðã6{ÛÞòßî ùn…½o/&ûMq³úíiy.žz‹k@‹wãù%u1î’áT/£uþâzn>ø]DõêÅc¨ÍßK¶À>—Ð{Km¡ße5¨^£ËÿÁ8gR’Þ—öJ¥:ïOTO÷Žø`gó¨.™Šq.¥ý K´ËCAÚ׬úXðvZ'ì@ ÞJûšÁØç9Guéó+0Ïó—á¯ç£ÁŸßvàØ…/ÏøS~øö|ŒöUóñ|ˆö2ƒÞßùßÀ|‚³`§!Í!¯`ø÷–ÄOôžÐæ<·Ù òÝl ¾7O&<+€_n.Às[>>m &<¤úšÃ=œo[ ½îp‡Þw Àù®Œ·›ö—ü< #øÐ!”@Ÿ?¢õÖ¯A5 — x?,èìwÆz3è$öm‚BOÁ½àÁ¡´ßô ìïb#¬ï/úÁo—x>Qž¼ø!ø]ü+䱸#Ùñ<ÌgISèqéwÓRº¾ììqÅóªªnÇxë ág.Cö!‡Í~‚®i&ÜãG,¤÷:#_ˆš‰ùEOB~óö÷9ì+®ïY\DõÚˆ_ñµ°oßq–à/þ ä-ñß`_!~ð$ÞïGÅ_A|õÿùAàÐòDý8d-ôj\ _Œ:Hä77*ÏÅì@·v¿ óO8Fûåý‰!ô~uæa†÷R S}èää·rôÿ×/¤AŽüéz[È-àÔi3PMuú¾Y`4ÕÍßÁ.n /Æ ìOvø’Æý?ßý­¸ÿ¼x¡ ûüß-¢}Q÷/1Þ‹/¿ó~AñúÅÚ§‚þ‹­øžã‹x÷Åv|ÏöŬÑbüs-1ÎÌUÂÞ^Ømò|¡j!äóB«ó{19Føað-Z-Gü ùzÏÀ/B Ÿ°3ÀˆÚ°ËÈ GÔtàWô'Øï¡ïOÄìÁ8±€k±1 çAvuùTüpm#AQð¿{àD¬Ɖ[?»´ 8véÙeú_‹x÷õ¨¸ðϸIȧc ao±M1¯˜dÿ÷`GÑ‘˜§Ë@؇Û,à¯ûdÊ?é} kàÓ³æåù)èxÄ!_ô8LõÐ_ÿµi¿pÏ݇òZWØ‘ûª3w†=¹½AÞ™¾·—6¯Ðç•jˆûaد»š#ä‘ÙÃMðŸÕûÎYFàGöàQöµöX¯ @\È ¨%èåön‰ý¼¯ÂyO±?—ÿì´ o¦÷ÒKØwÂ+1~b ÖÍIçéý‘ïé=ÝXÏ &·¢÷ì#QïL¹þ/÷…½¤@~‘Þ ûé±ÐÇ•åÐwÃùÕÆðû}^ˆÛŽ“ Ç4ª¿P^é´r?¸ú<¬žÙ†öè\Ú˜ÿvny;ŸA|8^Ï9߃};¿Cç7tý ÆÏ‹Æúÿúu=Þ{ Z)Æ)XŠï ®0 y5Ç{XE. ÄsÅuž>ŠÛÁNŠm¡çâÏ@¯èŸ<´ž"a±-ÒômaÒGѯpG¸ WH¿“ˆ÷)‘$¹b½o¸€õŸ±mcÁ‡qø7ž„¿½ 7ãùŽx:šê§^ЃÑ?3–Àþ4¾Ñ q¸ù€q)ø þùrH?øYÈ>‘,Ø_Hú_ì½]LÄýІˆG¡°Ïº ñ%´z \‹EÜ {B說‡©À_X]Ø‹_ü* 9ähýºB_AT÷î » >Aq|ò ‹ŸýTOï€xöö>tÂn¡Xð=l>ö9Ã:A>£ŸÂÆ€nX)âwø0È?ü.p+¢/Õ—ð\d_àXdì5ª%p!*8=~=H‹÷Y¶!>E–‡#7ÀO#GÁߢýÏb,`ßq]¨Þ°¸ßúЧ÷à⓱>í‰zLB­Wߣâàf¢ÿ àÀûÓ‚Ÿ¤Þxï0iò̤4à@Òyä‘ÀÞm†üGC?‡ ðÛ#ô{LGçƒÿ£·àgGé÷ŒŽÒ>Í‘?©~Ú㵆\¼…? …Ý¡yÙMç?à~ìAØÇ%È+á ¬‹Gaýô#Öõ†E{„\ŒÛwÉô^lJsÈ#åü7uÖS—;Ÿ/« ¿ËmÀ×åÖ°‹Ô(à]*ýŽ1úO“ øº\q }(ì1ã4â㵕è—ùì5s$öc3{6úÈì=g.ùC<—¹â­˜Wæ’ÖBž™«©Þ·§®?ó ð6³ào1nÖKÌ;;öˆÐwöKì·ä4ì.æ•3è'q?'¯HŒ›;üåz6Çù¹—BO¹Nâ¹ÜTä_¹E°ÿ\Z/änÃ~Mn‡ A?· øË­…ºÉ¥.ÀõøDØ]¢ü=©6ÞãM:ˆ8gøŽÞz9øäˆxgŒÝ_ Ï4þ üJ^‹÷º“÷‚~ò Ì;yú%ïD½&ùæèœ : ý7#¼Ð‚;Ñ:€Þw i{ é ú!QwqÞ…¤BŠi(ó ™MuéTøwð/°ÏàÚÀј<ØoÜä½ñÕð^fB+àf‚G²x>á½Öö’Ø ûZ‰Ÿâ{. oûK¨€ë_ý%vF>šðþƒ “½$P½Êù«ã0Úÿ9^¤ús3¬£œ‚q~pòŸƒÿ ÿ¡E°ÿC·(Ó{6G?§ýާˆwGï ÿÑ t½ž;ú#pâhä° rZ¼ ©ƒuÁEÚÏ ³¦uÃZЋürŠ¢÷obf‡âöQýõânüOxŸ!~;ô¿ zŸŽzk|ýBñ !—ÃëÁבŽàçè$ªŸ~ãÊ~~5ªÕ§úæ>ØÇ©Lª£&ã¾ ½¯ïJûSn®À=÷/pîNõkwÚïðƒ:÷¾´?ÐôœFaüƒôžÛÁ“áÚàïP9Æ=Ò vw´&áç:?Aú9N8Üz=r yëÚw8b ½þ¾ Ûñ|2CÞ“² ¶„ߥcÿ ­p2ív[ÁGúo‚~zíO$Ã?ÓØ ½¦¿.\¡ßC¸r󹿿r¸re#Ö‘®Ç1?×PðåFù¶ÉÃ-8ènþÝéýjž¯ÇEà¯gÌÓóììÌ5œ{Güõþ”êÈш‡>9ˆ›¾Èž¶î'ìëÙ‘HÚ>wÁï.½pÂ÷a^núJÈᕞ‰~¯»‰û¯B·}¾:¿@è÷Õ6GÜÿq‹ß˧øà—öâúËbájûr~Oò刻b^/§Œt¢\¡ÇŠ×±ë0¿¸mÀÕKýâÇÂ:£î—ØyNâ~àERC/ì³7G|3lF}Äœ4¤b<ƒ¸g(§|q'ðȉäxp,üôàDøóAÚ>è}jŽë‡¦ƒïC´yh+ìëP(Ù]Øíá°ûÃT?Vü>܃꿟"®C¿gg#¿"býq ñ%oÉí p·`f_ѯpì¶Èz/ú(^°³-^ˆu`ñ‰BžÅ‰q¸~ 8Wìï"Æ-ö׊q‹çuó+þ ó-¶Î·EþRôqôX5ÚçÅüNlƒßŸœ½œô½œôÌE¿S•û´O6üž ÷èNоâ Ú_9žOûj+é}°bà–3½Çæë»9wüžßOû _ÁŽýé{úATžJù‡yýŽô~í?‡íB> ýEVCÜŒ¼?| ¹Gb¼¨>È?öPž¾w ìjßlÌwÿ¿ÀUÇàËé7Š7NôÞC üý0ý>øÑçí“:wÃüchݽvâÜò9æKû’ðó„‰à;±Ö[‰¯’ûˆ~I¥X¿ÎàýD#åéÆ Ø™ñòãäÁÈs“ѹêTÉ^¨_&Ò`Ý{û©F—$ä•eß |ˆÜ+ä•;v–× |\÷ù—±ÿ^à‡¸V茺KÑB¬ë‹ç ÿ.™uoéŒsãá%1ß›GÄý²‘ŽÂÊ«í×˽÷¼!Þx-¥}‡ôfk؇·ôá³òóÝ »<»ôÎQ¾r~Æñ³ƒÿ^0`ž;Ñ/0êþà¿¡K°Þ‹¸¼°ÏÁ8´?·mèl¿ {Þñô¹“Þ‹Øù ýwÒûê;©.¾3tvù#ïÛu‰êûJ¿.æ·óØÛŽ":oBëãhc&Gc‹_Ç•Rœ;ÿŒßüLøù^BwàlÂ`Ø}ÂR²·Ð2!‡„WÈCžg±O–à{LX ¾6¡þ’Fû¯é×d4‰‘mÆ)нÚu›«3±xõOÄÓkÑXÇgγGý.õ¤œfXWçrÊó­)æß@¼(d›ü%?/R𓟊xq*rs-„<ÝŒð·{À7ÊÝïzœAÞâ¹ã©…¼Øk.®{ë?¼C°Žñ^=zù@^TŸ8ãLù}/>égŒg?4qö!ËŸWÒzNo!äilK~Ý÷ 1¾!ë;C¦Hl 3°ah2ÔBüØ >·9Á·Ò{PÛZáúÖ àîöAð›]*zïs5pjïhÌ‚\iëàʯ£q~„Þç:æù§÷WN6tMû0åkQ¯¿¥C=þVùeq~û ½Ðï]ôûX«WŠyTl /ÛŠ"¡³}@¿—ê-èmŠºL~ÍMB€{…KÏŠq‹Îaþ%ÿJwf y—£^\:yÂ?n¯\& þÊ6ÀË 3żo}·EÈóÖê(ñü­p[!¯ÛŠÄùÝCÞ‚ÏœÁ¨[äv¤zÀ%ØI^{¬Ç¯7‡_ÿ;KœîA~VÔô{1¯¢Ë¨_GaVrù Aç†ý{qýæØ‡ºé<¾Y‚|®¬§XpÙ–}*Þw²«ÖTà¯]õFâ‹ÈvÕïµ®äß®†ë‡J~íj>´ªœŸ]íÕ+Ÿ³«ó¹^œ×ñÙR)'»ºûÄy½DËJ>ì>íQˆ¼(2 ~õë—z¿56x×ùoœâû¥3ˆ ñk׍ޓàþõ˜_âÄÃÄkÃ_I¿ ×=²|?™ƒß!}òöïl¬Åù 5êd/«!¯üspªxîOŸ(1Þ_ ¿m‰ëÿ|¸ùvýaÏïF@Oï²þòz?yÌ¿«ßvì@ªxþÎàýÝIÈî}ÿ»ß|UÌþNÌëÁVäÉÖ¡ø(×Zøùcqb^O"FþŸ>Á{"Ï7´òþ´öUX¿X¿MÈåå§ðã׿}…õâ¬÷w¢þŸô ðßPíàÏðñÈxiˆ°³TØOêä›—é÷Ã.W`8í.êTiÿ`Ÿ6}:p&}6ì5}1ÞK0ýŽ"/}_;Cð÷oŸ%âú‡±b£Æö£‹°c;æÙ¶Ržv³_WòkgÑýðS‹âùâÜrî÷•vcgÕvSå|í¬ž‹ÖrVuñœåÝ J9ÙYuéSÉÕr‘ØY·Ê­Õ…U‚¿g Ï>â÷,žï ózѶû¬Oñ{¶/–cÿƒ%ÎNÅúM!Ÿ×êéB¯¯?& {xå’,ôøºò®×?c~¯7âïâ¼þó¤è÷§íMq^6ëÙr†¸[n_<þ]Hmo÷;(ø»SO,ôlïÎC<¸—¢ýï/è!ø­èƒ<ëA§ÁÀ……¨3ÜO%ô{?8uÿŠØ0µ­û¸ÛLÈɶL÷7øñõü—W»¾Î!¼5é0øús‡˜×¯±o}§ÖÏwÎ ¾Ý§í½–:ñüý)ø÷ Í·‚À›Š™Wm+E y>h€¸Rz û7"~—µD_悺uù2ÈåVŸTÑïÎpü=Ž;ÿ"žÝõÇ~è=û)b^÷»JrBÝôþ¬?+~.ž¯XŠuiÅßXw=˜ø~_†x÷Ï`ü¾É?ë#ÅøÿÄîü¾‡ø÷ÖzË?ö¿‹y¿ùRØ'¿þLœ¿k}øàŒüàýåÕbÞ¦OíÇÙðÏÆ•ýíX7açl‘Þ‹øzO §}šŸ)ª\1ü ÿ5>ƾ›q+í#–A>ÉË€³)C‘O¦~‡q’"ßIq¥º_m¬/S¥ýš'½pµdá]ᯥðÜM=ì¶ld âX?ñ‚™í­/ŋȶåmQ?/ß: ùS3䯷JÖ =ÞŽÄïÌÜÎDžqg!âætŒw·—XXØÞ«qGЫ¨ýÞr@~u{Vô߇ën7Ä¿{ ‘×ßß ìôîûÏý{gÝï‰øU¡>.üàÁètñüÃÅEÿGão¢}üzì#¾Èoûäæv¼ïñþð:è!Ÿ?—túû«çkØMµûâþ?ÝEÞaûfÔ+17«/¾ÞÖy¶xÿîùAï߈gïˆlßÅï)¼Ï;%ôúoŸnBžš¶óÿ°8z·-Ö¯÷j|Ü»3UŒw¿°˜ïƒ–ïÃ~â‹N¶½à·£ûðKOä¥ÝÞb¾!‡Ç:ãü_ì_=ùûàOÖ~+ôñ´·xqÚöÉ>øïõÚ¨—å[`ÿ'ÿêÇù÷轄Û3‘·^ źz5ì¡8~Y²ë÷ÒӨ׏‘úÁÍÅÈóË´X—­Åûëen¨Ó•³­íb¾w#ø¹·v}ÜWÀF´¶a>/³}øþÞÁÃïCïi°ãÇyø;m<ãiÑTAï™ëËg.LÈ÷ù°×h]/ÒÿÁ:éJÌçŠ~˜ñï_\ýˆù_{‚zVV8ê—YFä=Ùú ¢v&ö3sÖ ~‰|;§/Ö£9s6"/Ÿ½äDb¼ì?aGÙaȯsá½”œtö÷rP×ÏKB]ÿº#Ö¹Öðë‚?>Cþ^z(,F¼(ïE”lľbÉM<_R‚uuIùd!×Òu¨g`}ml¹ßb]“\Š÷R^¢yYKûë˜wÆ%¼{µpðj6êa× Ë?YíQ·Ï:€uÖ äuÙSÁoN¬#®÷¨ý¦þ?ò+È?êsÚw×Òûjg¿ÄþzDìbä5±o¿tã®_â­¡‡øHÄ«„ü‰Ø§›ŽuXbò¥¤:È×’Î ïNùúy< |<ék)ø}ºÞûX7>Ïþˆ|îê×Ïkaù|Ö4ìS<Ãs/|vy¿\ƒy¾,@^öjíLÁÏ«GÀ•×KGŠó?õöò÷ÔK²Wa]Ÿc‰¸—3ë´Ü–È+r3!§¼%˜Oþäâùü¿ > . ~ºcSü(ŽúCñ¼×WüvQÒõÝ’"¬ûKí…½Ù1ÿX±¾²X8U´–½ñw9­:_ë;ëßú‰uXµ©ýEþgyi$ò»¯Ú‹u U†¨ïÛYŸŸ%òÁjçD~gWíÛ·b½WíQ°XçU_&^@¶«ñE ѯæDñE&»šÃ§ïöî‚üÁ ¯ë¾ý÷b^!§§+ Èχþ%æñ¸þú„~_èi^²ÓóêÇ Ïב·—<Ï¿h6ZØÁ‹!_#O‚}¾ÞÿK>ŽzNÊ—ˆC)[°ÎOMÀþ÷åS°³´‰ÈÇ3–¡•1ùØÕ¨›\«ùL´™µQ—Ê]€÷’rÿžåµ¿†}“ޝÅ|òìÑ?¯pãÍ›xA÷íãnâùw·BÅøïŸ¬ý>L>!øû˜b+ú}øë¿ÛK¿E>³·šÐÅwž>ý„^Øøvb½ÍœÕÈÿ¯tú¶è÷ìâÝ1ÎíZÀÛ®×…\n¿§|a.ìñn;üÝÏ»é°Óû/ñ÷k*ì^¿©øuÙOGYB?Oï@îÏÔóz¾ëÝçn zª·UèçÙ~øÅukÄ»2ä¥ùá¨c„á}¬"kÚçè†uei(põÆ2¼Ïqs4Þs,û ,»ýò«ÈËo}ï…áHïÃ,@\3~ ½S‘Ã_’[“s(o?8ŸÒë¡”-x¯$e!ð7åwêW€õ_r#äí·ñÜí°+¨Cl*£¼z1òäiÈï¯B¼¨xŽöÁZì»?pTÈñÑP+1Þãyøû+½á7OæbÿõI)ìøé`ü¡g=Îb}mñÝ®vã‡k¿˜"ê"uVtõ¹ºµ‡ þVݳ’®Ý'ÖO„}ÕßQù¼]}ãOâþgcOˆu{ƒšo+ùµk+Ö™vfý*ÖûÇZ ;nüp¹h›ôrtšT„‰øÐ¤Å1/ã[ì·%#H™ ÜKºÓå=ØßHs†®-€|3Ux"3öòŒå¨×e÷Îf‡¯r͇õGÎY¬çrJ°ŽÊý%uÑžØ 8‹:{à ¬Ã‚T¨g•Ó~r2½—tœös€§ÁFøEHzŸæž»¿ Ýy„Ñ÷»ÂÖÃÂRQ— _ÿ‹nõKÙËI°ÿ¿ñwSnùáýÕÛ;WÜ9²Pèÿî~ÄïûçW ~*Ú`]]qW<ÇSüÞG-Q·z€|ôqÄÄÃnØŸ{rn ûÔøûb­ãûâïNÝþfpûŽËlàz(Ö÷°N¨pB]ûA‡¡ÈçËÀÏÃk¿ }>ÊC=ñÉ ì=m‰:º=®?½] öyQ|AÃöy›–X·ÄÂ. "€…G ~zu±â´3¢-ù€uõÍ(¬»ÊÆ!~”ÝǺ±|átwøGÙ³NÀ—ñð“ò=ǰ?x ù`9ýîQùêp!¯Û=°Ÿuû¯ú¢½ãáŠuìoÀ{ ¯ûsP¯¿_Zþ»¢'Ö³_ÆŠó‡Ÿõź®ygÑïa&pêÑjüݰGiõáÏuk~'Ñzg®FðŸþ|\éýÄ+ë'g|‹u}FâÐÕ“ØGÉitë-s½ÜØ—Êk‹q®7ƒ†A>Å ±ž/~Hõú=ÔO¬ŠÖ¸UòË­W¹ÃØ"KÆ–^blí@ƶeÌ!ýÛs‘±ƒ;Õ’1·†ŒŽá­ow2æU±À>Œ…[0ÛŒ±!ÍÇšô†±é|]=s:cÓÆ06+’±W[3ž±­ÇÛq˜±]~|ü¾Œí]ÇÇþ‰±³ü^ÈCÆz}ÁØ=ëß±Á»ø˜œöO<¡elŒ»)c“3x{ޱ)øgoƦNeìwnsù½…5™uõ™u={fýÓ@f½îwf½Ï—Y{mgÖ·ÜXµ¯W³jëCXµGV-£7«–ÜU àíŸö¬úÜ ¬zr0«Ñ„9óg>§³,‚±îŒmþ”óÛ“óÍù?Èyqá<ûx1vžÇ;~-ÐÀXh4cñ\^É<§IëÏØ1®›£Ëøüf1væcž3;ǘûBþ,¿ð-Ÿ3?dc‘í‹àó5ò9æcì6󅎱æ×kyŸ±ÖGû’Ë´õ4ÆZ]f¬ æ‹5üHæ‡/?jòÙ¯kÂØWŒµ¿ÍXlj̢~-fÑ*›Yôvg3>cX1‹_]øçaÌby!³8èÌ,ÎÙ1‹˜f‘±™Y\mÅ,ž,e–×3K}Cf9šËÁ—Ó ÚÈç÷–±«\ÏW¸Œ’sË52vë.cÏ}{3б·̂ۓ…õUfÑ´7³Pg0‹՘Ťw|5øÁõÙºˆóéÆX»ÚüØÃù|ÂX‡gŒuÊn9Î|Þ_sÌí¼‰±o>0Öµ#c]œ™eO{fÙ¯)³œÜ…YnÐ2ËU±Ìrvÿü5³<Â,½Søñ†Yî˜Ä,wîc–‹Û2Ëåù5ÞFöf–W;1VšÀØNçùÎë=ÆÞq½>ãxð1…YÔ-cŸ·gÍ1‹Z“˜EmN÷mgÆ>D3‹Æ?0‹ÖÌâkn¿KþäþÂ×´k¹MWç¶¡gl;·‰=\N§sàºæ÷œùœ]Â;Äýk/—á1îǹÿ<`lv cs¸ /ä¶¼¬+?~äÇ$ÆVq?\cÃØ† >.·k{.‡óÜ/ùX³ÛÍå±?“Émd{ó{~Û¾÷³ƒ£;°€Ó½Åý4ˆëçÇíÆ{cç†pŸåt¼ùÜCü ãv¹Ÿ±×iŒý;†YÔàs®Îýü_>î_Ü&¬Úòù/a͹=´Éb¸^»¶fo2‹øù8fñEfQ‡ßv/?8__ñyu(åÇ?\¯©Œuúžëð cßò9vá2ë’ÃuÉõÝû¾Šcv,czƾãóñ)漎`ì"×Q·±Ø-ŒEíà6Ççoä¼_ù•ÛǤ+ÜO®q{Éø±‚ŒÝëÂØKnë¹>Þq?ûðžó͘E£fQo2Ÿ‡#çq³hÂõÙæwfÑÞóÞŒÏ%˜YtYÈ,~ìÉ,¦÷bk¢˜ÅühÉ,<æsàöQÆebËýƒûNîfñÏGfY³¬þ„YÕç¾ÂïùrÙÅñãöSfiñ3³lô‚û:· /Γßd>‡X.çµ'Wñyq@¿Ìý)‡Ÿs)â:/åú(ZÄØM>÷?9ãÃ9ÿëËs³ó8rÙŽäþ>ü9? ›ÀûüÂe2ÛÒÌ:¼åþ2‹ër·ë\ïs9ÖÎç²[À±×Јc×I·“RŽéùÜγ9½›3sÌøû—Ç›çÛ¹ð1Ÿq[ÿLJËk7—Ÿ?×s(÷×Â~¿íkî³üü«A\¿~¤ssvæºþf.×3§Ûù#?\ùaÇ}˜óЙóØ'‰g™œ^?>¯óù¼8¦ nűÛÄP>ÇÜwFqŸÉù÷#ܦGrLÏ}m²5Ÿ/Ǻ–Qû¸ÌÚTÚ÷›¶ÜÏÚ­ç¶ö·-î=9FöZÊy(áxÊqºç±Õ/|޵mxliÍ1èË&«c>Ÿg§—|.ÜÖºð¸Ôƒû©žË±—ÅAÌbÔf1ù³˜ŸÊ,6ê™ÅRn_Óû3‹EÓ˜Åznc{9¦ cŽç™ÅéyÌÂû Eßr\}Ï,kqÚ*Ž÷jΟNÅyåsýþÆïÓ‹ÓøŠË‡ûäO\'C¹_Œàþ0œãËîKc¸<ÇrÿíÁ¬.þάb›3«¼%ÌêE"³ÊúY…´á×Î2«Ü\fUö’Y•ÏeV×Î1«Šfu/™Y7ÙˬvfÖÛb™uÙÑ\žI\îy¿qçöYÆéóØTÁåûšÏÃjÇAŽ‹µÊ™EƒwÌⓚ܇F1 ›ÃÌ¢ß-f1ŽûeSž 4ã˜Ñ‚ûcÏÚØr|ç×Ûp·á¸ÓŽÏ©=Ç¡ö³ìµ›Yv¼Å¯«™åˆÌò7w¯¦p™pº¸ÍÍ1¿ò·ö;ðxùU!oŸÃ§:q{îÄçÛ‰ÛmgÞ·?¾áóíúˆÛ+Çp5ÇžQç÷ƒZò\£õj®c®ËÖÚ æ-—E«Ç”p,jk¹àtOsåóðåyÏÎà¿Üþxžt™Ç¢«ÜOÓ¦ßÓ8~äp_¾ËýýÙqy²ü³´ÿ‡YºsY^9Ï,oc–‘´™Ï•ÇùR>Ç2žÜäöôçEqÛ±ÚÇñ¿ÏEB8s|ipŸY´]Í,´Üûq_œÈñò8—«3Ï]¸^Ïr¼â²åØÇs™Ë\w7¾aì·õ?ïññKÏry^á8ÏýàžÃTçsÀm`SC¸.†Ub1ï÷Ó8Ž3ý0×ñó&r_žÀãÃxŽWc¸mŒâÏå±j,÷·±¼O ÇïP>vŸg:·Û4î{ÉÜ>²y¬¾q“ωc÷s¾xÄqý §WÁóƧüÙ¡<ßàólÀãwkSZUâ0÷Õ6~‚~ÏyË·hè÷”·VÃ}‡xn«®o‹_ÛïâþŽyoÍcÇtŸ¾¾ƒ¾§½súï¬Àõ] q=š~7 ºÆé„:b¬mÕkâ|ÐïRÚøtz¿ôoôK,£}zú»âIöxÿ)©êœI+ÑÏ@ï§—Ø£ý—侄øsÆùÒÏ>[œïû÷÷·$;¢¿×à¸ôœþ!{©Ií^’w/²úÝëÃ$¿#ôûâG;“Ðï¿ #{ìAçô½­C“èûbñ4~+º>…ƯEvW“ì²ýŽÒïÌ]«|ŒÎOàþ1ú=>ç9¸~¼>úÍ£ïYÌo‰óu©}Lm;ôŸOóYptâ¹…oÐ.®ƒ~‹Õÿ—Öý f»t<ÆYú ÷ÝèwgÝÉ<=pîE¿ëé­üÑrÜ÷ŠÇ¹÷CŒãK¿ûrn.ÎÏ?G{¡;è]˜Aߨ‚6p>úÑï€ýþÎãq~¼Æ?±ýOuÆõSûÑž¤ïµ¢÷ö]HŽnÖ4Wôs»~î]h~j\w¿†ÖóK<¦!½7\†þsH®óHþ ÑÑJô_ì‡~Kê“SÑ/°Ï-…Ÿ%„@Ž?Òy΃»Áâ3ø%ü7x=Õg_PLõY[ºˆÚ0ŒwŠ~þ”ä]ý]éw]cqî2ô\ 7ݶ’¼¿§v5éÉ“ô³•úâÜ•üÒí0õ£ïk¹OÆùžßq¾‡Þ£ßK¿“´¿6Ú„³´¸ï¨¦¶tœHþN7œ&ྒྷ%žwHýí¨MC?Gò ÇÐßFzÞÖ•âÊ|·"ÂašÏ®ZgwŠ+Äß^’Ë>òç}ÛÐoßšW:èTV+éî¯Nóü×÷'ã|ïbÜßGx¹ÿÍã;j}hÛ ? ·M߃»OøF¿_vÞ??Hül‹ñ*¸ù7ÚC»¨­ :¨ÝDòôÀùAú}ìC ©?}¯èð.ô;2÷Þ œ¤8ì|íñµ„4?gŸãÕéœôz,Šü& t–Óï{®X‡ó•ßâ|%Å•ÃAw·šâÇšŸAwÍÜ_KßsZK8º†âÏZƒuôû`ë½ÑÃu´GQüYˆ~G‰ÿ£hž„¿ÇZáùcœIŽÇÉÎOÐ÷‹O\¢–~ßüD7j gOMĸ§7ẋ=ùÛjCòG8wOÄsézZÏÂÅ 8?AxY@×OáºW-´Þä?Þ”×ùŒÂ¹ÉÁg6Zß_ÁÏY_Ü?K¿#ì»íYoô;w÷ýTèï7—â åEçáºïK§«‡ðüù´~ô»‡÷áþaú¾#²¿Å¤¯H?ä·Ç’Èÿ$yÏB{’æ}Ò㜤߽8qZŠÏ§áü4Å‘ÓñÜòã-Yè·•òÎmgq¾]Áò£í1„/”WïZ@¸Òò<ŠÃ»œq¾3ývNì"ûÜ­ÇõÝôû£'ꓽ"¾Ñï$ýNíÉ¿hž”wž¢¼÷4µ.ô}X×ùh]]œ¨%9ºôÃ8®ô;ún¿¢¿ý.ü·ÑΡì¥õí¾ÏÑÿ/×±+Î?R>Gëƒ4ŸCV”/RÜ:¸ãÔ¢u"|ÝNu¥Î²“òò]v÷ –ê{–£ÿ>ªØ…ûŽ$gGÊäáúþšÄ7{`žs¤ßmv$» ¤y&A~AÝq=èü È÷ƒÆÜݨÍÃxÁ´^ N†ž‚¨]Mr¿Cú£¿ƒLò ^Kça跂潂üz%ÕkVÒ:pås“Ð[ùˆð„âÄjŠoká)áüW ŸW“žÖVÇõµ4Þ:ÂáÝ#©%?ÜK¿ß¿?×ÄÑ9­mpîxçNÉèwðíà!ÒÙE':§zà!ÊÏÛâùôΘEqm6ó;ÍÏ”ßs Ÿç‘ÿͧvÑ]H~º€ø_@ö2?|/ xºüÞä×7Ó|¿õÅù1ú»¬ÎÑïØv´Î§1ÞñxÜ?IyãIú»'É/NRžv‚òÅ”Ÿ"ùŸ¦<Þ¥#Z¿Qß/÷ý‰n`øPMò÷…°§à!¸Bõ­‹Ç@/´çad7Ä_áCù]$ÅÕ¨°ßH“•Äß*ZǬ&¼[CúZ÷%ž_G8µž®o܃çí©^¹¹µ„Ÿ›cœÍ;è:áЊK´žwÈÄxÓI?ÓÐoég&ÙÃÌŸ©í‹ë³ê’= Eû;ÙÏdWs¬È®WæüBׯ [‚v>ùÓç}¯Ú™ø9NýNÎÂõSTGL²çFÔ*矒š0ŒÓš®· ë"àã6£ó–³A÷KºÞžûÖ¬U®Iãµ£þŸQ«Ð¯¯´4nj¿¦ç•ç¾ ëŸSÛˆÚæô¼r½·%~Ñ8Í©mAã)×+üÐó  éùvÔO™wsj›ÑsŸ½Öt]¡«ðý•™¾TäGmKå:õWÆii¦Ó¼è¾"…/…s½)ϵ£~m=ÒuE~Š^êݺt½õÿ„žWä×ÔlþŠÞ¹)÷ÍíJ‘ŸÒ_é§ð«\Wä¥Ì³‰¢g3ýšô£èSÑ»Ùø&ù(çÔ_Ñ{Cºþ‰Ù<ºŠ½*ý•çÛ™ó«ØÝÿÂlþmˆÎ—Ê}¢£ð§ðÿ™ÒR…¿ôÜgfÏ)þÖV×Ì^~y(v¢ôû’Î?Wú+óWüBÁ ósÅŸ”q”y)òVÆQô¢øÒ*v©ÈM¡ßÜŒï¦æ|šÙŸòœéº>41k}(tMþB×?Qô¨ø­2ÿFf­r]Ñ“ 7Ìø2ÉWÑ—™]t0k{7é×Lî&;¥sW¹)z1ÉÁL>ŠÚQ?·¾6ãCG‘›bGõü ñü¨A÷kšÙm}…OóVñ[3û1÷Åß½(ç&¿5·¦Â›ðÞ̾>Ü3—§Éî½+vMý”xbÒ‹_¦øG×[)ü*v£Œgf×Ê<|Qô¡è§­¢?³sÅÿù(|›ü‹Æke¦O¥K³~J«ðan'æç9(¸hÆbŸÍÍÆ3ÇSÅo4cŠ]*þ¡ÌSч‚«µÍô®È[± ÅŽ[˜ÉÃ?L|›éQáWyÞ<¿Pô®œ›çÍÍæ©èYÑëæü(ò5§Ù<ûSðZ‰s ½ÿM/ÔOÁ;Em½Ðue|EŠÞ•¶;µæy¡‚³JÞ£èCñóø§œ›â€âgć2sÜSä£ð§ðmçûhhÖ*òRðLÁ ¯ý)þ£à½"?S@÷•ùw6“‡¹ß(vÚÐL>Š}*vdŠ'fóVðLJ=S«ä‘Š”ûŠý˜Û—y¼UΛÿ_ž3+x¦àŽ™Ý(~«Ø"G…OÅÞMøM­‚ÏŠœÌõ¯\Wä¥àz-EžJ3¾œRìN™¿"OE¾æøhZ(öMãµ5ë§Œk’‡":Wì@É?Lv«Ð1³S^J×ÍíU¡¯èCá_‘—"WSÜ¡þŠüRüO¿ºBßLnŠÝ+x¤èY™—Ò*8¢ØÒO9WðTá_‘ƒy^g®—ÏÍù0³W}:ocÖOñgE&>Ìô£ÜWìV¹¯èAGñEŽ  ž›ó£Ø}K3>|6ù µŠ¼”8¤Œ¯èKÁ±útß”ÿ(ü›Éµ©™¾•çÍ㔢%N›ÏSÁSÅ>LøjfÿŠ_*öª´ Íè+~¬èÛ\™¯ûy(|)rRüZ™§2ž¹](ý•ç•q•8ߎú)xnÊÇè¾)QôBÏ›¯çÌ㟢WÓ¼Ìü[Á?E>ŠÜ;6ÇÅžLu3{WžSô¤Øyþ¡à‚ Ç©¿ß”xb¾n0ÉCÁ}3;4Ù"E/ ß šÅSžfŽ—tÿË“•ût®ð¯äÛʹùzMÁe&¿WüÂl<óz¯¹_+òR䍨‡bwæñCi¿RÆWè*ò0­ÏÌüF‘«‚3¦õ¾Ù<Íã†)£ÖÏ©U®›êÀfóTä©àœÒßOÍ׃æõqEæv`ª)üQk^G6Ùõ7¯ó«¨íJ­yüSüÂ<¾™êcfv¢ÈÓ'Ì×/Š}šã˜â×J?ÅΘµŠ=(¸d²3þ”ë žU§VyÞ¼N¥à«ù> ÅaƬ+ÿ ƒ³f•/FV[8mÁ¬eüCåpu”‹Ë–O[>‹N¬×Ìš¶”>W_:ë÷9‹*wϘ¶˜>[ý±jòô*þ°ò„õŠåsæÓgËÅ3”Þ¿/3=8kò±ÚŠ…•'ÿ+ƒµ–.ZÕõ0iÕnXôP>¨”jåƒFù U>è”zåƒò¡§Â^î¦O=LŸT¦OjÓ'é“ÖôIgú¤7}²1}2ÑP™h¨L4T&* •‰†ÊDCe¢¡2ÑP™h¨L4Ô&j µ‰†ÚDCm¢¡6ÑP›h¨M4Ô&j ‰†ÆDCc¢¡1ÑИhhL44& ‰†ÆDCk¢¡5ÑКhhM4´&Z ­‰†ÖDCk¢¡5ÑЙhèL4t&: ‰†ÎDCg¢¡3ÑЙhèL4ô&z ½‰†ÞDCo¢¡7ÑЛhèM4ô&z          ž&=M4zšhô4Ñèi¢ÑÓD£§‰FOž&=V=ºw—{È*ùQ-?jäG­ü¨“õò£ü(©õÔzHj=$µ’ZI­‡¤ÖCRë!©õÔzHj*IM%©©$5•¤¦’ÔT’šJRSIj*IM%©©%5µ¤¦–ÔÔ’šZRSKjjIM-©©%5µ¤¦‘Ô4’šFRÓHjIM#©i$5¤¦‘Ô4’šVRÓJjZIM+©i%5­¤¦•Ô´’šVRÓJj:IM'©é$5¤¦“Ôt’šNRÓIj:IM'©é%5½¤¦—Ôô’š^RÓKjzIM/©é%5½¤f#©ÙHj6’š¤f#©ÙHj6’š¤f#©ÙHj=%µž’ZOI­§¤ÖSRë)©õ”ÔzJj=%5‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%*‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%j‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%Z‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%:‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%z‰%6Kl$–ØH,±‘Xb#±ÄFb‰Ä‰%6Kl$–ØH,±‘Xb#±ÄFb‰Ä‰%6KÄK,V^¬Q^f©=sÚòi]g/¶`?«üÁµÿCô“‚ plm/data/RiceFarms.rda0000644000176200001440000004133014124132276014321 0ustar liggesusersý7zXZi"Þ6!ÏXÌá¤æB›])TW"änRÊŸãXdA"#Ž&–'¨Æ®BgÑÐù+‘d«b…_Qö¤P'˜1Д•ȹy~À)Ÿ‡Çþ¢ŽíÅbL±8¯uCªq^ìù2‹°E90ÚÃ-)n…šÜ‚R$fê¾ ‚F1RÖ-nƒÝátbÑ;šy_Ö”Ï-©DÅþ¢aˆ³ê mÊ,”j-õ‚è@a|×Ír‡gbÀp i§r7“”{²R]ÇÚ‚-Ÿô•,®HšVü4ù›Y3mhÜ?<(f1Š šˆüc:‚s´€g;Â[%—æŠMJõK!(|?,Ê+KU ¦k³ï €KˆÔ>†dAϽӠ©ß ¿Ï` œÿ!ÕL2ØŒZ%Ê i£ígK‰æaÞ¥lްö—„=5wõ_kÜ‹j3úL9ïÆ[Ê!x#ìJL[7\tþ{³(Ü$÷ˆu‘e*mfÊ ç–zjAÉZo|¢{USyÉÊçÖX¤!Þ*ù¦Ÿ…§5f¿PJ#ST{ÐDŸð²@8P瘇Ô#°¡]£Õ:êÝÑÁ ¸.™[ÔÁ2–+¾k¡~î®û’šìFf3tgßOɯLjú¨‘Õktz”/(þ\gè¶Ç´%Ž[ÕбŠCr,—%>¼äá*9Ÿ !4P¯4·ÉLì¹×8¥›ºeŽÏSuDpu¥H}ãèiÅÅ(ø>ÚñjB%'C?ð½mÚ©ià²uzDQÈ$Þ÷ªIæš„éoA•½Ä¿ð:Å';d^ }½8¾ÉÂñásŒ´y·SG@¨†ã»Ô•asiÒÑ?„/ì*MtÚŒâa´ÙW^ƒ_Cr´þ51…8'Ó@™Ë†ÁJ\ÊXQMê¿!Ò…}Vxœ°¶ß©1±ÅvšYp&×îÚ괋Ý–¼¢Šó^…Š/¿ö=…|s»¤ô"ÝZ³´QH?Š?_»yKW Ä7‡`çGŽü¶oKý½¤¥Ó&\Q*õ3˜VÞáËÖš1è‘o-è%4Øï)Ѷ* x(:üñüä˜\"¹éš~Æ«£I£bZé|$ɽ‘6iasð¾)ª¸¡>zPËr ¦††>d¯Ÿ-hÈŸàžZßKϪlYì´1¶}-ׄ;ÜW›Nö£*㮣f‹è.»ê°ò6˜K;ƒ'cò(¢,†MC8üÖ8ˆ? Ã*y[+勎öÚHÃ4h€Dx+`…ï|0EÄ/ç=Æ4kà.1ö­ãiseáü[*;ŒÖPÿoÑ4tîé£À~ÿ‹nêȤËÏ|‹aý¡ª#ȉÌ<\B•Òn¬þ aײ|eµX×¥fûÓ¯üGËË®‰4ÄÝY~Q[l#S¯#æé,ƒÀ«}à¦3e F9é¿‹«u1V¾dØ×ĺH9œ·ÜEO¾•3H¾¸²kÁL@ ä¤$A†{ÍwZtL÷<èyù9]x?³Ì¯?ë ÷Ú™ˆÔt¤6 sBaC~®³p¹•B \N.ûÚ*³’g›Ç ¯F©Ó[C”^jaoeèxýFÖ\é~ËÙ 5òÍExe×°3öƒY()°‡wZb÷õY8ª+7s²•X8 Ï`&„ù⬡t•˜÷9'¼¡SsâsU‘c¡J³´tkšçˆ.$´×Ô?àž™Uâ˜Í5©cC4=ÜšäuãäÉ+{“œpüýMH„™;8\ ×ÿÙt‘ˆ7j;xÂï„-¨Pj3Á d¶ú»‚:2㜕ÐÛ28D>Ph;p£À>ç«jdŠ(lÅ ð³\ÎŽdTsI¸Š¬Õ‘õ¿6A< µÆI5ÆŽÃ˳R¶R1b®l-ÅZ3#¸%WØ7Wÿ~wÓ9¼„Ѷ˜×ØŸ¸¿öŠm`@D-Vœ%ªþ+üvÙÏDrEö7*µA1J´OÓÏG]GÆ>µ…ï)•Š™ÃÓ¬EcÖ]ú¤*’å±z™“YŽ5aâL‘Ôë͹l BË@¦7P¹ŒE1ÎgÛ- Ë)|× °Cß·9úôq¦\5v0€(bTÏT(ê„7øqŒaT1½ë8ìk ßý }¸,Yò‚«,@–ÒTF]¥mÃ[­jvò—øŽºZ ×ãg£4Žy’@Z +W(ên&­»WìÒûu>‡ oã¼v7ðºZFŽ!3EÛ×vúÆòçb¯ƒƒÒˆ©Òß„2Amé«Ä@$ž_e²ô¦£:\îvÆ“ãE–ð wn…+[ßEٌšÿê`XóÝ_×TI¸àò¡ òšÍQ",ÈK¸ÜªÊ•ò\d#wÌÙxê0»“óH÷¯Ò#óâ«ù|&½ûD ]eœ±rLq‚•gÀh&ø•ô^‚'æxé7|ˆŸD c`¨Љ‡§]¦ådåÞÓ7ór»#Å&ÏÙIÈ@o­¥„Lçá7üc¯ùõïƒÿ`5£•!ß«Ì Øò­óGn¢åhqTúûÆø¾Ûè1z{²ééÙ~…A³F.¶Èð A’žJ¨ß§œV¸'š¿cì¸"f(T’ñÜÆSÿÞ9çÞÂ÷{D¸Jt²hu2šñþÖÀ’êåoˆÆ†o@ÛL8nЖ¢pݲªO©ñ6É>Á×»&çã…+™¾Àýø²çY0OξrL Ô[Z¡u ƒSLaŒ $Wá-¿ù§¸#‚ ;ÞaÓù0·¡’*=¾ôO¨b*£¿ «q®l;8¨Ò#j‘`r\%¹‡ˆ¨~ižž•†$ã€aÕ™>»lÄcpëti)䂯@%¥««®“ó Õ‘!RIb¬¿»{KÖàŠ×nãÂÞ.™Œ·ƒ‡š"Hÿ Qh©¥(6Qˆ¤vm'7˜à¨L¹OÜË(búÎd²øƒUp´Ÿgø©µ?±ñ×匓yE?ˆÖ-e­­Ø…}ýÇÑc ¦÷Nvâݳ€½ -ù5¾árlY°®ô0Ý¢ô¸ËIùwö5¿ÔäH‹‹yjFb:w–Ï M¾T…ãí ¤·Ã <ï`V]ì¼&Á¬2á--–(m ¹qWÝ/U5ÔiµÇ=›<^û]pφ‘ÙyÂÜÅ<È%S¾˜ðGYÇ&‘lþ_“›¿ÜÕ6]¶F §¨,9±¢F!/++þxëãRß@™‹à: Ü㚇2I¤¯1Yòµ—»¡W£(Jæè^ÑŽ6“K$G³JÙêjUðp‡l´ðƒÅ]¹~§î^µï¶$ßBùéeÔ>h“8²B¢§³†\¼„çÎ9‹8»¤*«Ó,Mô桞.ç•cÀ4QˆZ·Pi7¯Ç‹­˜zG ìx¡W]ƒ”hq†% ¾”î𜲺°×uÍUØÞo…má0sø§îD*ù»ÎÏÔ /Ô8Vâ–ms2å ¯x›gI)B"µ‡™å}C’S&ßu °ëW\ü„D!3¨äζSw°êµ?YFj¦³»B8(#Ô·Ë,¬­iøî‡¯0¯a•‡-4)üÀä\±¢¡¡·&“G‘´„’N©OŠÝ~ƒÈ?ï<ëX¹ñÆEinm¨í­û³Î _¯qŒõÇ”9yF¤ï6T÷GO€g Qy£Öxµ­6p Ï”u¦.O:P]à²_xæ!5ËL´ëùT^ôoøÙ_ãàº" š6ƒÑPþ,«Aǵ}OëðòGšU…ÍÓr'iç‚ØZV%pú-v,¾s´ƒјËÀ®ëN-îOj|e„‚û¡˜ŒU3%7!!6¸\‡0<Ñp|ŸRÖÍx6Ÿ{•Äášô¨Ï »ÌƒXõlé«¶iLéͳ ª6Wö›R™2;J †…ÉœÇ\0 ajM‡C÷n¬ÇF¾¶n'"€`ª*|±eêWÑ|¥½-\ z:€Ížr›mÜ…rkfù™]HØ{+ÆÌ£Rí(Ä ?6öŸ|Ù;›Bðq¡˜~FýÀg*iGê¬[Éü»Á¡J™g?ûtÑÆó*ô}ä|z·ÌÌ.5Ùck}ú–è3RI_2ÜùÄž3L™ Œ*¼ª˜Ô1Û&¤­RÀ‰f‰DpÅ‹VêþÞÍOT¡%0']ÊIö¡´CU3G¹oÌ<9‡õB\sï kÏK œÐÃöÕ5·FÕêÇ’dÜ´ þ#Ñg›17€£];%³~*­‘î9Å®xamxšI2”•KUâ—‘мp÷RŸ   ׋«Ú_Bü}ú3”Ü@Þò¦ŸBª.í¯Ò.¼ˆ€ç}G÷—'úãÓeãá¹ØàUm6¸ÃŽRm ›qtÎȪW¿Û~?Ç?@F^RƒbÀdp„Ó0DRŽbb296 ôúl€áÙäÛo=*ŸµÍ~q½A}M¨¦˜kÁV¸ìî:Ù3— g üUînÙÝ] §€3æ°s^Òo£:Që~ _ÔGìH`m A¸öü®ÄG“îÌç¹¥S,‚ÖáÊûŸ5>íU*ÑýsÊ|lQ‹zØ^"e`ßÞÆ«fˆnahóWlÿ´Ð¯è¿÷'$4„I»’Tc{UrF{âg§ÉR4€>Õ‰‘È8C@ßæ ƒ("«µ[°CÀØ;`‘ÿ ’Ì¥íÅ*Ýòä"ðÁv®~˜ÅÝ‘íD0 jï@ýXU¼Ÿ´“mëO~t“./²C±=Äì팾vê›0xÂòÛßM«Þ9O±E47ÖݛЗ­7º/ØžD?I„þ¼ÿÙ;x·†þýÊ9ŧ88¿SÀo®Ë‘·oæÜ×ÏMt‹Pj!{ûŠ¤Ã° ÀÒîÏ®ävíÞjûç`Õ£Wüá‰sjÁîFcJÁfÞåÅ&Diï½)ÊK[ÕL™«²d´-Â=:©VÙRÂä`‹ 9{‰:ž¸\=|£þŽÓó¥eÑRÖO]¢´BŽ‘0?‹•÷ö¡½¹Íð#Y•˜˜Ù3†h +®ñÙE—RoªÞÿ$®µæ)Ãà3ØAòÛÌŒniÉØWØZ;ýļfŸðy?z$Ì3ZCíPG‰¤ASdùê8_}‚Ûd¾©+*±Ù4ÿê´×1ÈxKŽ5·Aa0eöX_Ï'dúåAÔrƒ oÖ×K™bÉUj>Yµ±Ž*ࡆÁD4Ñ#Û­øV°¿Ü¡Ù0ßD¶£ÀõÂ†ôrÖ›ø¯ 'Í™:3*s*õ ûÇê["7é€àS¶ºMXׯGRp’ÆëïÁrš¨ô+K/ÖÞ“¢˜Á,‰m¥¬©Ežxü†Ãמl“nΩ\P²t¢~£D÷Hf.a{¡ÛvD‚3Ì »#Zâ%ólÌç·¶qsCÀ¶í¡ª›RQ‰®…`§ú;6O¹|Ï€gëB•ÙÆN ØQ×<œ=£¸ïmÈ(7;ÁAÆàF Pá2Ðìà£YØÐ+Øæ‘1°øçÕ€áoýðsšiŸ²ø—@”°JCö‰Uy?½«Wï™·tÏôk[M[Sæ* –g®Å%2àæó5ø%À»ËÄý¦W(ÁT ÉëW-tù©PÓã™@E¿åÄ‹ ‘ñ%õkË®T‘ëûø½Õ±iÉ¥\sÏAx[ðA¥¼Q©Õ¾ÂL˜ìü`ƘØx"š,ÓvˆÆÜ^oˆÿ=ÚÔ©Æ7ű®î¸| €b!¼îY`µ€÷Š}‹{~Æ­š/é}dOKȧl&ÿ`Õ`IK’ñ×½mË+Ϻߙùþýˆ#'¢jVÍžQ¥Á7¦Ò<›ãðwMð,¿ûb_´¸½É;ç-ä?N£qŠI¤ŽDó4¹,Þ¦*×52£ßã©lƳØQÅ«½§qm?ûÈÝOʺ4x™À~­ §´58rÊ>Bî^ƒR1EK×|¨!D+úyÌ€;…XYF%—Wðw~9ô§WÉl©(4÷,Óq.á\±p¬º ÍͶùÜØÇÊŠE­á0¢Ôž‡ÌX# _? 1XB=OØ‚ÃvŠ×©ùÚÅxf ϰ¶@BàÒ !øe;=ÂI%Q/°ôˆ!6eŒdÁÊtî°-ºéýÚ›bÆžz€ÄÖ§u½f0­·§qØ ÿ ;VÁ`[.RfÖV`ðÂùOòÓš–çJ¹4*­ò¿ÐÏ„ƒ 9·$&W¬‚þÓä7ë'-…ò—§»Ì/»­Èœ¶ÍalJ‹ x9Éi¿‚¸ª• _6™†gxIa>ŽAït¸:üQ™Q¢ú£êR»)©E2ÈÏ7pSLŸOicçoWÊV¼§M¡:oÑ+ÉIö˜„Ä›cª¾§…,] YÖ)Âüë=;Ù0àþöL‰¯à=¨N¦ä|FdŠÓs¼ÓµÃ[‘R®Ökö‹ûLQÐGM q¬çøcTX^ñgm[+?£msL;tA%F¹s´sSùÙÊ­õ½‘¢Úë©«iԜܜ`Œ£ot“_‚KE¯]«6ô Þ±ó{Îí>v£í_`52‹gWÙ{]ÿJ†1åC¿0©@”üŽt&3-ñtkhJº‹Ô¡‚ƒÊdå¦HöÕ˜_ èeÑ„“¦l$× Õ‚n‘\I=:b³èËÓéï–SI`’â:ìq)Q±©e -BÝÙq ƒ‡Ä”<ˆÃp9–RYÔíœHÏu¨2ê­DYßþùoȪTæ„ϪÁøÂûÅB"Ùµwø«˜%Ê­l½y† ¼î²8QÛ…‡q§k•iäóŠ“wŸùÅÃÝ"C¢Zø‰HlŠ1µœûl¿}kÊoŸb'í­•˜¯õƒXïšf0÷ ¡Í5~i*ˆºÆÀËþÛ¶@=e5‚„(ƒ‘òc¢ 8Œ{VYXP˜™ñqß6úúSq t‡R ›|M¯áÛ\ãtäØ)ddßízbPÏ¡ÜÒø#ž°í½“ÒEZH€5·ªÿ9;BjI(JfgþKÊÅë"r2_ €eâôŠ¥'‚ÏfÄ—âf;sÚWއêŠU9ã·ÄÅôx¨_¯Ñ “,'6Ôž,W@íl^Læ2ê-w¬_±NãAÿ_ †¼ôÔS`§¬Ü“MÙ4 –Â×íZ;U¼!ë¤I맘) C›çú^Z DcÎøÄs;›étà+_n}—Ü=5ÞŽG“—b¢¶+*Xsȼ¾´lNLñõh¾öÃæ¿…¯Ç<— áŒaȦaÇŸC/3 Gà饚¶ Òág¡â°ˆž ÍÙº‰Jð‹Æé' Œ‡Ÿ ˜(ÝõøÜ=ñÇÛ|©q­“qÇØËÉ1Ë£‡7íláúõFè†ïC÷sìÖ¤³>²ä›¹Ù¸^¸òX§Æ-„“|éÔW| Sò‘œ¦2ð~Ú£Ö¾*í÷zy/>êiGèð ßcØ)R½J0]ÄÔòVÒ¯N†0¤ñLê~³J(î)îuÑ=¥ÆÁî`¬nK䦋¡Yq`€B¤G !WW2PmÚ/”¹RÞ°5T`‚{ƒ_w‰Q¹ÿìðAéÒnÃJ;K>ÚŠÌ~€ŒÞÆ…CLôý¤‘>ói¢?K”fÇT½¶Û(ÖrïôAŒøIÓCkä€Gá™ÖÛè“Iù~#6 ûav_af]'Q™ñƽÜG$Ùÿ,éï_bP‘ºlPìx×p5øPùÉ gí‚4!v‚z¡>"+ׇ€|c•Ç•õ+(Cj?ë)ì å ÀtXóÕ×/'~cÚgN %j!äùš)£ØNK·¤œc©¼ÌÉ(c¿á¶ÓÚ§€t`ÎIçQÑŸõxôûÝ‚þ‰Fí.q)ÒcÃ/¼ÛÈGäZ—T©&D.“GnªÕà¬YÚ/ã…»-ç…ºÞhÃ|Ö‘¯ßÈ“/°€=´‚¶VŒ}ÝÊqÄ…W´¿@^a‡i Í~4Á—Ï&®`_8±ÏBÅådZÚè6¬_Ë­:êK0¦l oG0åù|²ã&x[cFâC~’_ŠÿÞQFÓúPô´éÎû_·×r½/œ1W{B`ìt°²d-ó:~?X©ímE#£v‘a|pá:EEP¯7aÛ&BÕ!«Qþ\õÀÁ ›Ãàå‹'¿ "ÜLùÜx,V‡ÄÙ²¯ÎÀ”Á]U¡œ‘+)‰àjy®>Ý#GYûJÑMI9#‰°3&EÌ ±ƒì…l g°Åð/ò‚SG\^ >#ݤ7 šp™¨ËÒŒeYñÛi1gå¼&ÛÎ7Õ'Õ³÷Xïphß©éÿ€žÏ¨•Ã!üF˜‹®Ÿ £czó0>Ñßè¦që{»‘yú?Û#7Ü‘ÍbøD÷ÊëE]fŠÍ÷?üÿLÐNÅù^òí'  3åñ.ET„ümïŒàÛî=Z Ñ‚ªŽñ­‡2®/´ù“ß'­ÅRÁªíœ_ZR)dÀŒwQ@'ùvb±ÐôqmœjÀÝ7F4  ¿ÈÖ+Dr7nò'$ÜYÛxçh;8²Ã/€õ†/0¶o÷s\Òšó‘E+*•‘O'\'†ôõòáåóY S½®Çi¾ýY€lÑýê O«w“—͸á¨Ð,Û±ÏáÞoñ(Ô_ƒÆNdû?±h&Ðï”±§¾b3rÿ•Ê¢%è~Gdî„Óïç&›¸/Ña;…οYãÆêµ%=¸ZìÉzS‘gUHÆ%Ľ“Ço—±¨]ÂÁ½i♈‹¸Ñ¸CèîÝÕãïc0¶Q›TpWD:% ɪÒN{99wl'¹FJ?»óüT ª›èyS'uÛåOàI!Fmþt*òºùSiáJp}¦)ecÛúi¼zoÙ Dí©2BŸá¼‘rK~*²>nÙkº#yC[ó²±ð¼c¹ü¥Õ Fì›mÖèvñ*nVM"ÙƒÞÖçò°\_KëßÌ/2¼X»PðÄ•ãÔÁJ%髹¦vÆ ïd”)¾è5sÓ-$/ʼñTcš>-áÐÔè‹¥28/Å4H@ÇF7¶}ã¶ÄÊS>ÊhKm/YÄWãŸDütTæË rs.â;ü;ÊY8XË _ø¦-ÿ$†Š ¦ë©o:pË I“Riª RÈì…$™»}¼6›JRsçˆdø˦wo™Îv•µ±Ž éõŽú’åq~»êùe= »ôš©&‰b¸²°(·1#f^È(}p¼÷ª¤bérú¦©ÚÑ0RÀ|É|Äü÷ÖÌJ ;n»ü属0­¾Óñ¡ïtVÖö¾ãíaîíFÓ 0¨X¨#½Y$r‘"o¶dÀ<”³YZRk±0ÜúÍš¦¯ˆ´?~Â"Ë:°‰2E7å+½öpuW̬Ýä÷J®ÕÞs^t‹yætHoÿp #%eÉ äæÄ“‹LjåqÑ^^gB±sN Îà,sWænD䈴ÄÂÁ–!ʨŠ;/#F'EÞË Dn0•3}MMì/’•ËçË džä9HËxŸjk®JALèÞ±€(d{ŶS&÷ÿ]¹În• Û›¹ÓÅýIèܼ±*­W]ÃÙ¿åºçJ‘'j ÉÅ9­€Çq$ä<0AÏäÌã'¼)Ϋû%ž5=d!x„½Î‘™Išta§k8³ØýL‹0lª©€‹’úØ”»8S€s m¬Fw•ãø°€ßê™uØHG/Æe°8˜¼"¨'®9¹º[7½`±×Ãå¬Ë®ærྶð„úH]’¤ š‡âPÿ›ß㳚o=ãÈ“ýU/2{­ï• z^T]š^å¾ÏÖ'KØROH{/|LjÓ;T/Ý7ÿ6WÝ›}ìÿ-EB'™w–B)Gù ×P‚6KJùúÅXcÍKõÆrÁíáÇœ’®MTŒTۺʚé.ªHéã\€B•ŠÛ!õ¹?ñ.0˜Ç÷~‡Sˆ©)Ñ –7üèWšá&|ý)ú^’ø©¼i—ÙmΊõøýD9ÚÆÚ_Á_QB¤/“€'ÃjîÄ¿<ˆqÅ ¹èÒ$H @øG`ü'4¢Î;×ÊœA¦–>õN¾­¶ÞSƒ•‡å@2X@í‰H+r¿c±?jüG–k 9¬C.,½“…bjäAgýÅ×=°¥¨‡€~ ?ï’‰dûõ:§çŽ÷—\–ÄS_Z¤‹GÜ7“5ŒëlÔ¦r«š-k÷“n»cUØdÑ+û‚‘E²@S4úI s ë7‘ t«íü¡sŠòÿÒEáj2{Ù9pAÎ-Òü#¸7˶[š—²H$bÔÀÒ‚)Y¾d†B¬€ÐB"Û²2«Ò Ñ-ù˜¹ÌœÙÓo/i¥k1údz?I|S¬H  ¦Ï8—Qô€ßνB~¸!òœö¢- ȸ°W§&šæƒ¶{ËŒS äÑcœëRÒ#üdXûYˆ®Xˆ` [î’jË>÷Q$ˆ®Z…bE*"AÝÕ$0Pþ»mÕ* 4:ûõi'+áÐAÉôG @ws)NBžæc-îoÚ¦ åå<š7çªñyf«ÿí2 ø½ÅC7H«§ƒ+ ÜHRE¨GÝkè*›.ÀÉÉg]Þάôšž¡ƒ¾Õ¬[´áó$†!ôŸ«Ð áÎQ ΚD‘6^j¥TÃ÷„­£z®—Õf²¹à0)ù‘{)ø†>¼¥è¼bÄ“­çi÷“Kî¦!uÙg\žÙ`Xyµ¤êwáðè0àDfJy.|€½&:hMU:«‡êB¨ä kjc=¨ÉßáÍ!êæ \ëCE ¸¡è-Íhq™Ý--·|W»’#IÇv Õà ÞZKÃä¼?Â?ü_w%y˜ì®«å/ÔN‹}ï ½$gÀF20ò‘ùaûJn=êeô¡ø u~¶!+V؇0¹ç¡‰êgè„G³¶_çÙœ"_=-’6£Ýti½ƒ^c÷¸”‘|,¬j†6±W­=¬§Ù6EŠ/Ceê]í#(Nó gÝ÷Õv¾¦;twY“P—›yNZ¿CV#²`垯¨ ˜Œà]€ab|~N½=Zœ¢£ê˜Ð:${ìy­OD õ¤ÿçŸ`¢™ŸzÿÀ;κ¥°rŒ¦W;Á $é6¦Ý蛩SË»˜C¯ªÂ(hV±µA|ÇÑ®Úñ‹«$GÊ=¹Qõ-/£u<Ôròjé¼~Š€›Ôa휧ùŽEá÷Ÿ‰|Al$…VòyÃZ4 Õ¬õõ•q$‡¡”S ÊcÜlÁGöÝßUëÍØñc°Æÿ7²ð?T yÃxdú:¯ÝOóC3vÙ-ùäkâÐVwâúÔï¾Æƒ”B\Ö1…$„4)¥ ÿ°ÈÜ`œ'tH ù˜yTBGõ×~.: aö`o%‘ ÎÍ1lLhà$3µÎ8y%=Så–ƒbpö@öÊÂ\™v øÔiã®îák å!ÜCB6ް¹}@ˆtõßÈmÆÕ™J`AMü²  N"ŸŠHîS­ËÝýQëe†`e­Û•3œ,eó k*  §Õ%oXµ»Å9©…¬’{+P/ïè!HÀ%UË>0´i›õEécU«¾ìÒ³°¼jü2#©›šC¸ÄE·ï#‚1IªÜÏexJFÒdu³T×”ò.XÒ°I²y3–ðñÊÚ­EMÒ/oO>—h€'ÌÏÓ)AÒWæE´k:i$¿À¬'K…®»àgB§!ÀGF:{ ‡ã#G T:ØÄ›ôºÊâL càÊèg#)zx|üꨒtbôõ'v–µ¡ÚŠó\ìé*<;W¹aщÂ+¼í¢åIápâ?Å`a)ƺ®;â›xÉ÷k#XÛ·€ÆÂœ†$äFON:È> Uä&/‰|äœÓ?5Þài$/{{-Ñ=¯ ö±«÷§wì@íKî26¨}R,ï?„K¡ôší+ïyHÈjXT"jQ0#r™%ˆ ÏØƒ+ ŠFl3%¼iس0Ñ×áwºækø{ýþëuþä)$AŠÏx-¡•§ŽÇÃÊPOÂDÓ Êñµ®°Ú.ÛŽˆ#Ø Ý#bž¢áë4ùÃ@5¿,¨¼áÕtâNÊùÈ̽$aMnTð“-{»«¶ÚèC¤3æíKßoËŒ‘OU4/,¨We5ðP³ñp<.ù«\™ÑËí%?£"ØG\üˆK¤­”G¬Cµüæ$²P÷ç-Æ„w0¸ŸÝv©t,¿)1~AÚµ’övI«»GLßxO½q8ΚNþk ÉÄ¥ãZf¸”§j[Á ×ui¹>-¢Ôòš‘ Q S[‘W2”PsûGþæ²Q't_¶ïT™áµ*XDô^-\AÌ»šêp!ÀXõ¥·çumpó¦9khÓæd]|Î °èÍGRAYyÖ´ _P͹™ŽS‡IˆÕÎõAÇy®ÆY(ŠlÓ"ƒ3ñaT>eåGAì[°ÃÝ%Yž‡Ts ú}Ætÿ‘ê[ánoOÉä%€ò)ïéqY)& iB­kVeªéo̱IêùRÀSŒÕ©ˆ8õ§+åµCËO]ì5ewN¨gᵦƒĤN×42´=-3ž3&ì2o›CÂô´Nš&pu»K³T⾑Á±ˆ"®5ÚÝŸHHã:˜û5BW=€ÄêjAþܤj@ÒGF@‚­ãuýƒ—âþ1þ >nú£ßõ¯JòH‘Dh¬Tæ×ÆüÊŸÀ}ĢŖ§ëßõI‰ï0Má{émÕ=ã8XÌhä‘9’o7‚£°uê*]‚U ‚ÎJR|±>ê^Ÿïï¥ëËLäËÕ` ÷£9›õ¡;UÞ´=dùFJwZÚcjv‘͵ù#· ZÄä=vôÅ>àÉNïL‡$´]ì 70bùŽØ$S—j»)~ç,ZEš2 Xâ÷ñ”Ê»#¿G4­„¯½·Ý³åù’œVÎòëì]›´çkí0/Z’Á[½DòŸ.Ž£‘U»?¹¹ì¸ÉRUß;%îßE N¨œ¡¶Ze+"G€ÊE7W”c»ÿî9qëÙæ“‰‡ú+Ø*‚YU›Ÿ:p ¶KÅHö+ÛE<“UÁµŸ¡ü̼÷zf.²ƒ÷¯ OÙÏMQºBx>¾^5n´y~áÏ'ùÍ7 ûœŸËí»ò±ìKêï±äº¼Í‚–¯z)>vÃ,¶p¨‡‰NÝTr~¢}/¬û[€ø8¤çI%/út¦›«bÓJ ±¿¶Aýi•èÂ;·Áî­³ ,´!TëøøÖ7e5$ð¸ôê»0.ÁhÕ™ trëØƒÈСG–,!¯ñª3æ\L³ØÊ•4˜,·Z{mÄfwO{¸¥T* ˜ ‹îŠ‘ÖehÜ’ÚG9ì?_ãpD(,õÏÀž\eÐ(rípe¡Éy€ùRú[Pz²w#M³~+&7ÑQà_ú¦¡xrfÖ¯Å÷»_ƒê|6y_b—ïxkI© eþñ‰ª?ðÇÉÔXõ¢§ŠmkÀú¯c…mû‡Îœ&BÀ[¡›·‰ÐÆxœ)%Ã".G{( ×s-Y· '‘˜¸pA$ö‰§¦fšOÙ» ¦*çeþ„/Â…yö™ÝW0sŸÿä]ײ°ä”T¢ } ŽjÀ\Ô²c%&ÿ2 [­mÀù`=§as}B5å#5u¡Åãƒ7U•ýŒíJYfü—¤ù]nÀW %DgµÌZ‡4ÍÕ –Rp”j}@ŒÙ³~°C“—•Í%Ǩ7©Žƒø‰8‚Ü(>ЊÏ½ãËy”Á~õ!;½Nò¬+6“MõÆ­–{ª]<Èzt…¿Ü;]}¢°ÿõ Wi²óÛ ~ÿ;ÄÞÏð\к<Ù~ÙÜLò ­ÊLE·Ze ýë!Ñ{˜äUúÈ'DcÀ2=v®çŽÉ¯RfBM Xi5›ež[`Åïð9®{þ%ñõx<ƒNÖ¦ø]Ë9ªm&aÌ|³öÀ$vùym$¿×âOVÙwùƒ³–CkHñàŸ0-gù»§û¶ ÿ!K =ؼYš‚D;óügøD˜ªUÞßšŠ¾}$«lXÇJ?Ög¤{áì÷ .·› zÐg˜@0m³kÄJ¨®‚¢gšÖûÿ›L"gé²Ëë'–AsÉèÞ¹6o^ éVb~?ìí¿6½9EE“I‘•`r8C²³Ð¶Êm,å6A|?L¦L”¦c‡…H#ÛøÊ´†æå8ËgW¶RÝ㯳Gð ¿B ^CÇð–aÊ>Úf Q‘žYÿÝ¿ÉÒêUU¤ðîªn¦%˜óu(ÜSþŸë´s`íÉ2Ò`ÒWrº}9£˜"ý¬5ù kk;òn#½[ ¶/`lcC F«¦š¡ˆ0óot¬@­7 "å$C“~Àº#Ô„*a‘7“[i ¤KxvµåE 8`7ÓT>ew£mˆsœw82fép¬'˜Çf>.dÝ޾UºüœÝuuº:?_ὑiîVGÙà^Õs=žÀewøà4ºõŠ1ËL(‘?¶ä÷dìsÁI¦ú2¹õœPº`ÈœðÞg!ƒÞÍ@†òðD~ÓsH á.:àHWú+¦e Ü<ÿÐíýö†|´º8óÉɘ/'z eΙ32·å±jÚË6mÃL—0}ðõiÿÈyNp\ZyGpˆ â2­ÚßIaR?$ÿa†ï t¶1Ç×jìÄp¬ƒAU‹Œ/ôýKGD >àí1'Ø#Á¡ö¢”Px»îÇkäöïé‘¿èM£¡>›ø öþWÞ+i@H踕ž!½Æ³*ŠÔ&Á|r’·òœ+ŸÕß µi1 ÿŒv™ñ=¹óÏÍò)Y¥ l^gS çª%¿&»Có¬–kHðÀ^ã• €²1´œA¾ëa1ý— \9õrý}Ñ[ƒæ¿¶ð§¨$—;‹j;=`¾4D{W{ñÙTF·[) lÓU—›õ×yHBÖcÇOÆÚAd°N¹ã2øºõ±yˆð²ã m*8Ÿþ9„ß·L>Å‚be8^9[æâþ—mI±‘åRoìû»Ó™•¿„{ûº°k*éNCŸF/þã×-ŒS·­»<ùÄê¶íÀ¥åÓºT¼¦q1z-vDá>–õ{^îT#•:µÏ 0Ι7%8¯œ2—?Â_jÁBÁ §Î#Ò¥ºvì•;}åû$Ëwpl$Œ>ᦌ_šôè(ÓÒ¸u¸ Ü`oñ:Ié¥/-o%Á^Ök\?§.À¶ÞITÕ³kÑ«…žl­Â&3À¤Û—Éq}¢^Y/t]²(õ­ îÌCêùúžTá"*ËÔ»õ¢VìÜCx•«šcè aìG4K­½‡iäÓ篮ímæÊ‚Àh±"œpìn½ FRò•è—øòó‚ ß©S*ýðñM ?é&ØEPósºz+'zFàͽ/^¥¯bU(dÛbíÈ©‰$ ¯”ÌÈ@Ng+û€SHMûnóü“æƒÙ •Áâú0Å D±@Bà ûƒVHqkä yïGDPÖ'®rìV‰NMí8h1Ðß@?²¨äGíÄ"ëŒ+š¦.¹tPß¹½¬»ˆ‡$z޼Ÿ¥éæ\L¾ûÄVI×9=^ëßZŬg0ô‚Ÿ 4Ć»ÔeºoEf¶ Þ·$ÚÎ ™¢‰ƒàhÒlö‰žÜLT8Œ¹jã<eDœ]ÃA¿Ÿö·.¡èÁ¦«èÿpt$›ß®¥ŸQxÊþ¢Fk¯‰zùb=½´ãý-uîõ~| ®‚Á¡Õûò3Ì.¨J’FÃÀ„äTŠIï˜ßµKLãå#Ì™4ı×Ë|£sy›y”´N˜Tµ<¯O bº-_dÈÈ Ø¿§Î¯ËùBËÚi@м³ú¼ZÂõ°€¸VÇò:Ë~Yý˜~yc7/Ħ4ælñ ãTT¹7\Uv1³ÈtºÂŠKEVq¯¢G@µŠÅËATMôJùèX/1¥ÁÛò®~›•Òp…£(Ü ø1ˆN®D¦ãËN áÙi¨Ðd+ ,¤nœmö{“C»òê·€àZ|lµðÕ>iì,¸rŒ.EЈ¨ÓvM;¯|{~³¸Rüàüë?Öîþ¢öp6†Â{­ÀÏR*TBÎAÑ‹³…çÉ–âGÁ>0 ‹YZplm/data/Parity.rda0000644000176200001440000016334014124132276013724 0ustar liggesusers‹ìüwTÍ6* 9Ì Á¬˜EÅætKE1+‚˜*Ѝ`FDÄf   ¢äœs†"g,Y² ¢€`Be{ƪv÷ýö;{öŸ=¿³GÏ/==ÓÓ]uÃóÜ{«¶hlW“Ü.9`À¡BrÌÿÂÌŸ"B̈ `¤èf½ÓGÏš ,Ï1ïË0o¶ >ñïõ¿üú÷úŸ~ ÿ{ýO¿Dþ½þ§_ƒþ½þ§_¢ÿ^ÿÓ/ñ¯ÿé—Ä¿×ÿôKòßëú%õïõ?ý’þ÷úŸ~Éþ{ýO¿dþ½þ§_ܯÿé—Ü¿×ÿô‹óïõ?ýû÷ú_~ý¿VñŽëŸ×?~†Ì—¼+¼l«öß?uèŸËW®§®X¶‘þ©±’ýsÕ–eôOÍå[Ø?W²®ÙÂ^aûÙµË6Ó?7®Ô`ÿÜÄ~mãNökÚÛVþýs ýsç²Uÿy°Aë¡ÏÅ>ía½ƒgO3ý ÀJ¢mÐ9@ð RœH‘ D!r‘ÊDŽ%r<‘‰œLä"§9È™DÎ"RHu"g9‡È¹DÎ#r>‘ ˆ\Hä""¹„È¥D‘ˆÊ+ä2r¼Œ/'ÇËÉñ r¼‚kc r¼’¯$Ç«Èñ*r¬IŽ5Éñjr¼š¯!ÇkÈñZr¼–¯#ÇëÈñzr¼žo ÇÈñFr¼‘o"Ç›Èñfr¼IßOú#µÈy-r^‹œ×"ç·ó[Èù-äür^›œ×&çµÉymr^‡œ×!çuÈyr~+9¿•œßJÎo%çuÉy]r^—œ×%ç·‘óÛÈùmäü6r~;9¿œßNÎo'çwó;Èùäür~çŸóÿìçÊùÏ~ˆLú#ÿÙ‘äü?ûù#ÿÙϹ™ÿ³"ÉùöóGþ³"Éñ?û!’œÿg?ä?ûù#ÿÙ‘äü?ûù#ÿÙÏùÏ~ˆ$çÿÙÏùÏ~þÈöC$9ÿÏ~þÈöóGþ³"ÉùöóGþ³Ÿ?òŸýIÎÿ³Ÿ?òŸýü‘ÿì‡HrþŸýþý³Ÿ+ä?û!2éüg?D’óÿìçüg?äfrüÏ~ˆ$çÿÙÏùÏ~ˆ$Çÿì‡HrþŸýü‘ÿìçüg?D’óÿìçüg?ä?û!’œÿg?ä?ûù#ÿÙ‘äü?ûù#ÿÙÏùÏ~ˆ$çÿÿÄ~ut¸E.XrÆã~V¶úÍïRº‡[Õ+å`Òÿ!ï]¶é{¿Œ:,ôÊ7=ÛtĽönü1d®A%nP÷Lù´6 7,,v¨›„—4Y‡ë®*Y&ÝÂõÑiÌ\{q娧¾øŒ«†Ü ¹Þ‰«^J˜êyáª]‹§7öJáÍ„¥²×ÍpÍþÑöÇõ'à'îâi]¸Vù’ÜØ¸5¸&»âDÔ!\õuMéI;-\=&æâëÊv\í¼ß)g›®Z<~¥–Ü>\ñ!yØX­µ¸vºû[qøŒk_Íž¡|"×Þ{lö0m\›‘Sÿ6×xÎ>ž6îû»Õ–ùÜì𗸼çÃèÅkÇâ²…sMCä·âÂKú9‹+¦ââMý*^8-ùMR<ó\&'ß›ª€³=žÂ¯U\œc$Ôä û ¿3:¶PhN³’㎴A8i鯡7Šqbãüy¢A}à¾/tù¬ß~Ý×üýâßàj®qÇ2¦”Ý"æÙ Ç÷d—ˆ<…p«¸3oï~†4‰Ô*1–ƒjç­}t ÜZý|y?lÚ¶¯°îY g®þñ}w‚×»·8ØÁ¢|ÛSœêåÅ1~%Ž_™ŸwæÚOü2Àgß+éÝØ¿{1œÈ½†ÃrR&ý°Ù„_Ìxnñsð*út‚KÃúÏ8Ñlþ°±I½Ø·¥BïÊ…»ØÒe»+º½Øë”Ù—Wb'pÄ»_ÓÏ´a—†úSob/wß·J«îâÇ%ƒfŒ¸ o/Hò‚!p%wX¸ÕºqOŽ4‡Èc‡{öÍ…$㯪¶8Aøƒ£r9ê^àuÕô»ÖùÍ`Ú|¼1áîXl!¼{ñ$õZ0'qô¶­NpE¢à•ó”àRäþ²ò9~¹Ò²µÈ\?X|âaY=¬jy¼âÓ æþÇÿö«.Ãa!Ÿ˜ù¶ãÕ{SVnÄ!Y*²ö#lðÃC»¾ÎÚ¶Žûö+L‡„?›–@Lî ü5g ãmËï[ËÞAÎÇTߎÐËQ|gí]¡ãðö醳=ÐT´w‡×#h’ôÊLªº­›í´û8yJlVù0hŠ´˜u š_(v› „†g›¼z7êC»"r¼€zŸ¡•6›NB³gok­Ÿ64+ˆnMŠúMö“ MJ¡é­Gö¤"?hhõʱ1¸õï§·æö@ò‡¥ãT·AýÓš´ë Þ7ýùݯP½òã†ÏkwCEáwéaïB•}R‚³)”›Xü|:z<”hoŒòv ”6Öü–‡¡t{,d¨êCÁõ!e£w@þN[ý½ * ¬&®(Ù¾ò=«Ð|&…þ–1ŽUPv$d¬J¿TMî8Z£ ƒUTw+´@ý€O9ÍE nïŽË‚ a“ŽÍçíÐЕY"¹¶ îÅZ5B}ŠŸšôL h8óaÿž« Iºóõy/+hžhoªÚ® -fÙ-5†&g»²=•Z²Ó×½v=m—[Ö¬ínb‹3ŽAû‹)/69@[±ò¦Å²w ÙªZÍòçrh¨Û`öÁ›¶è‹£–÷AcÅÇ0 ^ïÊqÙhT¥]uã+àU»ãš«>ó¡°Ù¥í§”(-ˆ^— I¶Wb¦Z—CúT֮ͩ†Pèe°ËϨŠ_Z>ËèÏ‚‚˜¶êÓr¡Dq¾f÷(›0rµhžkfúíÿu 2*gï˜ YâÕIkÎYBƼÎå×?­…¸Û_fÏ1逰t±ŒÏium1Å5éMêŒéi˜–é—*Ëod@¸¬Çš"CH½°"µï#D˜LYW úŸŒ·4¾‹€ädñË“_U@rÙB?µªé&–à”vR&4Yž'9;/Œž ÇþnÒæS£4#‡Bt—çà 1ݰÒ̦H?˜§´v}m-¾Ÿ»¯£òýz¸® ¤å1ú$<þ˜¹|f¹™lš< ïŽü>"N­ Ïj*€XmûaÞœtÈh^ýuÞ„ß[<)É*FÂ.³, wÒ‚ÈpïñbÓ®@FÄ…F¡Šx(‰Ñx\ubÝ›jžºßŠ|yðê—!ÔÂ3“Aeð†ó¾Óç\54 <×ühù"x3ÆriûÙ¨¿‘sà‹.4ÎÚwi˜äyhJ­Ö{È«…–A“T­æO‚¦ëksúO¨CË‹ã·!Ð6yô¡à£?¡]by@û:Wh³·›1ÛÚ kÞ¢rÆÿÌîÍÓ¡¡tïÆ£Œý4½M™–ñ jöªmîZy^žòp]'”Ù¬.2†Âgz¿\@ÑK#9›Õ¡¨aþñIµœ_æ&ƒ!3VôåÍPÔ?SoÎc(éºflï…VŸ÷‰åë@鿯ÊZ‰P¾+]ù¾ã)(I8™},m ä^Î²Øæ`Y_~]sµ2Öû~í¾âÍüƒjeGC¨æ¼¨KÛí û•MùòI>PxGwÛ©ï ý»œõmi3w¿W•÷y¤-é{©îPá'kFì^WN:[ºvÊ@r»Ø´ø?!eüB¼HjdÖêoGåS!ëLÃ騝Z—Ði;¢w"dœ4V·ä$•èT–z$@ÌŒ¢Ÿ³Ó –oüœYŒÆ)JåÏïäpsØ×6^]ê ¶ÝŸJòìÁÇæã-½‹1VÕÏÍeD|[\ü ®A¬ý„£ã¢ØñÉ[¿©èdG.¬Ú²E¿F^=®l ›EEþ?ßÄÂsæw:Õ-!Syóà¡®ò9]¶~·þ9\ºÐ8)"½—jh¾ÐâŒKr×úüø¨…KXUB.ëyøZl .ûúíÔ¸é¸Laž×nM\[c§†qIoØÀ Ö¸xñ\ÕQ¸Øfuø)Õ(\2úFtò–a¸lú“=Öª¸|vÒ­v7\öVù؇3ÇqÉãS›\áBç·âïñ\x²ýîýiñ«ƒC8§¯ã¼¬9þGªeq–ñ/—óZpö¦ñŠâãÛpJÁí¾ä×E8å²–bûÓœ¾"ÊcõÆ 8Í”3t´ê‚¿Ç'=is²qrû¹SÏá í&Íž7pšêÁ`Ÿ+ö8ù~ñþ;–Ú8Å`þãkKÓqR§ò°žÎM8Iãå®ïן┫ Fb[3pܳÍgî¼ðñòä,»ÓlV}XŽË^ù5Æ–‡c+Kå#öwàø›Íä¤wâ¸éµ‹Ï€£¯8/Yô‡ª¶›'{»V›“‰ÝºvN>3tvuòÝs4C’‘ô5ï8ޝ^ÒäM’)PÍš1+}r2=µl» óe]ÜZ{èXÿðp§ûŠšTÓL¸¼Pòª×QØûÇݼbÝñøeàvçÛâØëèÉÑo ó±Ÿ\û5¹;pì«ÙÍv¹6¯qÐ;²ò*Nܽl‹Ì©»89=fjö×Q89ê׊‘§—àäi ÛÊrqªvR÷FNN·©íû™šˆÓæd÷žÌÆiÞyV73 pzTàóúÛ8}ýÌå÷ŸãtÓ#IªÒ8sëÈþ¡fqÖ•–çz8½hfÁ‰Âk8…—p×O|NÞr{QoFŽêšþÆxè) eJåVãH¹òÍ/ßÿÆ!6ˆÎjTÀÏ'ÊÅc%uìâ8h¦u]\¯jÿ~·O®fM?µjûl·ÅozÉý`ÿuQb¡í^x2sRÂä*80÷|‚Êšíø±xV‘¡ÝzlT±æGÇ’ßøÜ‰c‰ hˆOµUN¸¬‰/½}Ѳ{^ÖyÀgðÃ÷`™8»ÒìÆ¸2 ¼¡³#®êPè{º<./Zv œÇŸÄ»¡à?zÓËOwcó^ñäÅ¿îɘYkO_i;d·6¸æyœº{<8wÎÕxÉ·”-Ï„‡˜Í5#Gñ òGåƒßq³ þÚ–'îJÎà¸Ïræ<޾R2 ’Ä{n,{›· ’&>™–VtOY„Û^ ±2ýKo·C†aµ«CȾu†RQFàg±w†äg~xÜêÜ 3ˆ^¬i¨.Y 6[¯Ùžß¡Î#ç§€õÖÝæUëËÒ×­1­g±ýðA¸Öl8Sv<¾á¸.öŸ°¤*ÜÉ;ÛËžÒÙÀàö''U/ÚŒíœË+4Å„!ZiAÆ–¶|~ﯷëúÅÀ¦ï¶„lÅ ˆr¼´ìS³d å²aÁ#(¸¨+iˆ?k™|sXþ Н¿Ñî™1ª„N©5|ÔƒéåÞ’² ÎÏøhIi¨ž¼Ø¤Žã 5åÚ ë\‚z%Ó¶'@ƒ÷õß’sÐXøû¾‰t4D®x7Ò¡©y]Šv™#´O‘jέ€·"jG§Îž­›úÚÝ.æC똽/Ë7B£–…ÙøIÇàédzoAíº¿>™A¥±µ[ó g(›9Ÿm†b߯-e³ÎAnù¯Ÿ†}‚‚uz0ðñ7(Tí™xq߈ã\Q?ë;R[ŸeƧ<†üÛ—v ­|EV“FÔ¿p‚¼ãïï_0q¶êÍíuo¡´Ð¡LcsÏ9ŒÎÌ ™e©/ê®'AúH…½ö_å!å½Ì˜‘“/Aä”_†õ–yà{ѧr¸¤œrþ,¼²ä©Ý ©Ÿ ïˆT„°*/”jÝ U}”ÿÆ5ô.k`%ÂÇ̯îzÁeâÉÛ++d/L.¼0ÈÒãW> gpâË·Ã,ÈùõSô„{2dú=9¦Y› É£Ó§¿q˜Õ§X‹y™5‹>á 㦵þT„­«bó†®ö„S‹<µ>:7B-TÞ~nº6·*U…X½ á±Ù¡á áÏŠ‡K§ª@š÷®·~,†¬SÁö–!gOÇ¡ñÎZÛ_ N9×áÕñA÷!N«¾Aÿ ˜ò&y?\ï~¼Î°h ØTöëÄC°ISxU`W2„ç9ß*ƒ³ê]N Ó갫ôOâ-qðÔáÂêbQ8ÜIãĬÑ.8ñjr-ʶ©¹1Öº«qÒŠ±wÛ.œÂIŽéq˜;g nÅU½8+Çmì›}8âã÷ÂO¦¥8#`àú’þ8U}n£ú,–wu¯³Õ5xx¬áú°*_H[×Ðèû“Á Y^…Ýöc^ß”¥—áÕÍ–§7ªçA™å•¼Ú s¨Øñh˜Zo ”Þæzvì‚JK/o¡Œ{P¨úÈÄ ÞDµuÛþfðÜt;ÞÀ›KWjùü‚†“g™œÒ‚f»1îÂF1ÐâryIeœ%´Èï°¸½w 4‡©%¯õ'ŒW_’¸5âþ»'L…ŠõÒ7bëàõìç-Bɽ™1¹gCQ{8ÏêÚEÈÁc*ff6A^Øþ%%Õ÷åP¹‘žD _±ó§ª¤Ì9Zvü3䟊¹™EZ}#×fNƒÜèêE/ hÓ±%re P˜SøÄÓ £î sÕçAzí9W_çûZýñ‹lÍH®}§³)™ ¡Clôªý~1¸hÏG…}aöôRŒ¬ ä[2¹ô« R'j~LX n‹›ž;ARs¬Î¦y.àó>sæ†sðÓÅ–=ãBŽBâ×3/e×ABàøcCµ™ßÉ ˜±Râ8¤òÄûÇ€¬ù¦:úŸ„!M¹®`ɺó°õÑÌíZákvÔÞßs¢U?þ´â6Ý‹‚½ªƒð¹_Î:«_ßs{‰€FéKÁeÎ;ûÁÉÜòáÈ¡Šà×~»> MrûÖ€½„Ž*]&©·R\¦ä§ŸdüÅÁàCY-ž[U0KræM^>§è=l÷Ø—RÆø›ÏÓG–¨.‡áUi‰ò* î¼þ>Nh2´^ÝSex‹™o“'‡Œ­d aÛ‰·„Z¡¹Ó·ÚàÇhŒW~”°ÑšÆí·rÈhÖÍÞÛýñ 4¬iÎ÷ õ‡2ä·ä†BýNñ)•Ð|ê]‹ßŽWÐômÏL_YmhìðŠ;¹Cšö‡»í_ö·×_·ê]w&ªÿ€úŸbbÛwAýúÕ÷sW:Á›¤(µ–ù³ ²þѱ°öðzë#ª)÷ âkò‰‘ ò¡ÔaçÏÓ×@aEëµo±áP<_ÂÉÈM‡á-=q-;GAîCõ·£Œ 'És€u>J£æGÿfy‘ g†2ß[~Ëc¨ÑV([U«yþ TfºŸÈ+ì€a›%#Cn@½bÎïQ³Æ@ݪVÝ Ú"nö÷¡áÃÆãè^hÌ•ö»#ÚõÅŠKÃdž†Kžê“Ž…Æï+zjC󴀫¯«¡eÆù_׆@“MÙr®¦´4™’›mw/É~…ö¢©§F| ‡v”©×áôÚÞeæ§ûo‡æ»qÚ)ý¡¡kôÀÛÉP/2N㸕6ÔøìúÕuÃëåŽÿ8J:'©Çî‚BÉ]C¹V£¡°ý}²åóéP4»wݵ•ž¸1÷k­ü|H_ÿsé×ÀN(|Þé·dT»F=}í ›ôu7:C /Í`Ó eœ£»ªŸìƒâ¥ª¾£Â kñ³@›Mc!óG{}eŽd,+Smƒ8Ó”CuïBéѩà ž@v€â}î puí*Ùq^nß5ÿð÷p»³>½î¤ [NÛâò"tnÍÒ< Ž^¸˜7Gý"$'÷ éä,é+÷·ÌÌk91­UU²àÆ Hˇœ½ƒc&΀ŒU¥©i©Ý´jüÌA9]¿Oš¯ º÷Öè_* øêämóF]¤,•ϼRl2‡ÇŽk±¹ÂðQ鞺¢ÂMW_ºšü"Öu»HÙ{CL÷‡ŽX ½ÁóÌщ¸XCØgÈ_Ré’X`¯&ÕHûEWîì+›…Súœ"Ú ÃvZähù^ÈØy|ߪé"¸ZÍ·¢cK,®-_"jºæ<®´¼Ój\a‚_Ëg¶\NÎÆý.“ï¥y㊷Þ}¿lðkíÒO)Sñëô%¶åƸRÿëÊË qÉ­ ãsDηÙ|wÅÏ'8ÏÛ]ÌwÄé&ËZÃÑ›ž] PÀ.MeÕ§ê²°ñð5úÓöàÀØr›²_80åܤcyãpØ Çþï1A8­èꚃƒsp²qÌ:ý Qœ~¹1\!gOw“¹>8 çOÕ‘næ Ö‹Ÿö<_‡óÓ¤=â¾þÀEq"_«ã¢oKÖ}<ó g|VT‘s9Œ‹L£ƒ§yœÆ¯\.oSÜ3§T†ÊbQªÿ6;'‚TOJ½-ì—å÷ÝL{SáÙíS…NsÃ!ñq–ì˜)Ÿ!Åÿ¾ÆÅjÈ|øKrcP¤ü~,¥|%òäbÆfiCÑœ¡Ú×C©xÓÆ!2¡’c%Ô<¹Ÿ cFÍVã¨&H‚9¿O/}îWCÚÙ~ƒçzó}mbàúƒË—Îßkǃ9÷íÁQ›$=ó%À]êõ)éþˆJl^é3|7\V›Äßs‡á­·~‹·Ìã›5‡y­¾?lNþ\yÁtF36é‰ó™ÿù-„^}D"â%$œòL]9K…e ÿ> ÉÁ‰&“f™Vx ¼Äu,G )íŒ× §ÿª¯;ų¢¿ƒ.Lú´âŠ1¾³,Ñè£wŒ"ÿ|¯\[]{(«^:çøŽyòé¦dOs‡; .c föaןų7÷ùƒóÏLýdvãéÆª—g–ÖžËà \¹jAÊÃrÈP={eþ¤e:rÈËù3 BéõŠé†CDM©Lù¸jÜyÓ¼³þøTÜyiY ò‚]¸KJ;ükh*þÂ};Tßìž3tñ9Üá[¾wÛì+¸CrÌ› ¹Ÿp‡íw­6øãé'»ƒ–â7ç½Í¯’ÇïSƒ®N\;¿ï¼:í¡n!nÙj–·üW'nÑ^RŽ…^áf‡)‡xõKq³DXÅaëp“=oYKŠ.n L0x[37e —0˜*‚›§p¾L7ÀÍoFÈ/Ÿ¿7ç+‹ØžÅ-?\r~º/Æ-ñ!ÆS[ qËŽÁ§«"ôq‹“r²õ— ÜZ²£dMÅVÜšØ}³ÂznR«ë/›W†[å7 ¿7[joâpÇáFn[îL\sKã6ž|—nþ”961—ñì½µ—Ô\8råw)ÎÕ™íÿk•N¿5~¸íôSÌü¯ÿhGÎH½õ£42 ãÆ!“¶}5Çáï.Ílž„í¯r0$î:$Ö|߸q}oü0cð×Ù?—†Aò—jŸÛfÒ/K–Æ{1~^G: Ûú>dÓ­TG“ FXâHëº×ð¬Ê<Ö°÷8vÉÿü´O?·rQÏú8íÈ‚ŸzëfâÌúÀÛŽÛLpAúÜ+Æ^B8§õÉ“ßU‡q·”L—‹_p™UÖÕƒöe¸xѵó[Îᬋðz×)Eœú%¢p0Z‹óÚú26jnÆé Åêò“qJ©wx_ðWœ9§dÀ‰ûãpáœÑï»OÆâ¢µ‡ÚŠ-p±©Æp«b¸ì´ÖÚCˤñë0‰ü½Ë§â³6Gß|…³*½ö¥y˜á"óÝUýŸ{pù %Çâv\T4ZFÓõ.ßT¼Yã°.V^þ`ÎÕ]8n›cÝý‰Vø©¶µC¸Ùg8 ~NסTì²]dê£]­àî¶pÚºh}ü ÿ¦ÃæÊØy虇m ‡±OÈö³×üæãSºÃÆ«Äϧ?ÃÞ€ÃþýøÁ û†·ØùÚ™3f{`ïÎ9_Oáà«%§÷‰Cjïo ݇C&%‹Úˆƒ§ýIÛ›wƒ»ÜÙ#3åÚÀoë–A¹!Ô,V¶Þ†¸a~nOo΂ˆ%_Ü.„›®îJÚ´Áò¢•©ã™÷Ðé¯Pú):ÝÚFþ(¾òÍÇ…@×•ŠŒ¼ÎvAwÒà-+ ¡»aÄ„È 9è¶_‡¦^4€n“E«7‡ ëÃΟB®}Ð=¯éå¯Ù¡k·\’x«tfåjÌ} žó_µžøy9É='á½k}Á˧¶ÐÖgáùàæuh=»¦æÜãzx»û—j½ˆ%´‡Üë>èÿÞUZî;t] Þ§~Ùµu«|¿`¦{ >mÛk~A?¼ëÛÝ3¹ÞÕò¼Ê…¶¨éÇ_l«öÏEµ™wBáÃè)}oÎ@‡bÒ¸USÕáýª•³ ÜÀÇŽˆ!ïòtáSÓ’k¿o¥BgóÒÅ›gCÇá-8ç¹Ðñ{Íf²(ö÷:î=á~º:Dƨy…áýW•gI²Ð‘ TiÓíó ä¿$Ž‚OVSÛ3öo…O¡Ñ’z™wàÓÒØ¡3’¼ØçhÓò“9ê4çÖ«‹r Qqƒ[œó xóäe\Û8E¨/, 7¡°ÞǯêP“!5ÒÌuÔ˜'Íþ` E΃7DxzAñóEÑ]º \AmÆŒÜßðzÄHáDÍ.(.ý0BØ«ÊÚJ^ωé‡j ûå–múP©sgN‘ TϱüîP¥õ·ì#Ÿ˜—Ûµ™z5§îC…ÛäKÚvêðZ¢ÜÌ¢:ª†kN®;ɼ$5þáQ(_—ýx+Ã˯(´ž}±ÊÏ·L2œQ Å^ë”S×»CAä§Ä­o x¥ÒÞ+k!÷eÏÃ%5ôTm_›^*$l :q¦ŸáUN;=ù8¢ &ë þÒCflïO;ÎX@Ðó™ž#öaïhwMƒpìö]³N Þ“ªÖæ´xCÔ‹"]$æ°ÏÞ 59´rYÃH¿ïï+¹‹Ï¿WEmÍï/=\ÙgG¾õÙ…Zb v.ƒÒFÕ CͳãS%ñZöù_x}jÌ ‘›/ 'GªÏšÅíC×ü¨aø‡ìn¥7ÙPwáÆ®“‘FЖ8$ô¦4(éZ%)2¼6 ÷uœC94làŒþjõ jS®'~“ UeÖõJéÛ¡F¢7ý¥”&4ö84Z„†Ñf_Çwø@ÃЃë´[wCCÀ¹-þ F›-U»W¡ ¨1‹’QØýjž;Z¢©58Ωf7Ô\Ð;έeæ'4yúsUS(ÝvÊãÂý<(ßQ˜U<C±KÿûÇ\ Ïyðïú«§à•¥µÎØIÛ¡pŇéß¾IBΔZ†‡¬ïÄ_Ô<‡äï:.ýd·ò†Ì¼`yú¹·ÃµÞ@‰ö{Û¢× R|h€j‰ÔèÎ=,o¼ÊÖìX5Yó#rϽ†ú_-µ›ç7CÃ嶇Cg{A£Ðž—RwOAýΑà÷ö"4x™˜~«œÍðY³Y‰ ܰV'H Z6•¬t0š2>Ïó{% ­ w¸M€¶ØÞ{·FÃ;á£Ñ‹üõ¡ý°òSϲãÐÎSÍrÙ:š ,†]°>Ã$“.lõ‚ú¹ã²B¥@Íçwû'-×%rË7nƒ2ÕšúÕu£ Ðrwß«¹P4mKõÛ£ Žû­C3®õüuXµã®Ù›ñèXú`\ub^VœÍ\¹ÓêvŒ“"~íRl+¹WW¼¯óáÃ\Q¶s°ÿ˜X\)Ÿ÷Ãx®Q)’è7Â5ºiröW–ãšJ×}uÓẬÃxÆžOø¤ÝÊcb}¸nçMëÑ"kqµëæÁå/ìpUÏÍâŠÖ—¸JôvÒ7MyüzÊÁk¿Ÿuá*õ­“ÆUkáÊ»cß«7šãгö œmã²ÇJ'T^‰âˆ;Wò>‰á¼9öCaM.ÎÑ%W–hS_?¸;LsÆGÍ/†úãÈÊÙÍûá¸o"Mªf“àZêüi£zÃáí£ßŸ²×ÃZñWï-/†CEòo}Ÿ„ïÍ_iÍ+ç '^½U¿ÅEy=ÿ¦·"æÎËÑPn;$®Éá$”~{ûª´á0d‰ÖV»s;p»m»aÿqȉÜäÑ4ëd=rê±Û1ŠŸÚ¼Ò›×ùÂNï»—@êØWGW^ ±}ßþ´¸ Ö ƒ—`…¦ß-:€¯Xì=“r{¾5ïñš«3¿@p¿ßp• ðtÖ»º*¬‚ÏM ~®Çðøo&£_L†¸OVÒ"!zÓÔ4å K iöAŮͻ!þî­½u¡ÞlQx qÀˆßûþÖÆÔ›ß§vkvs$­“ÖU]T)kùYí,…ÞùÓ/@æÂÂN½ä)é´l{dç\Ø8^ ^­~!>`Ý7È1ë58<Û²/L›û8þ!d¤îþ«o=¤ùìÆó.…AjÑðŒ _ês`È€àÝ¡Q–œñèWØí<½mð¸QY2¤'ÛºÄÿv»}ô¿Ï*›ƒàÜÌßÛ—DmdlNV/¦/»×´ Õû?qð…ÊßàÐÛã·L¨‰­h÷Ä#ØE¬K§zÉ pššÕ¼äÎvÀ’OŠoÙ éÑóÝ)‚Âû7âL ð»åÔª}Ï o†yÏPÙÃ8 _òµ]^NÝ|:ÛeÔjŒíB®_Õ¿Š#ŸwWÇÔÁɼ†ãg=¾á”1ZÙy‹w`¼ËDÉrõ*œyOòÿ)\ÐøÐA.4  Ÿ2!·WG•ïí¸ià‰d‡—MD p’úž†•|*ŸLÄi.*ëš?Èá,ÉYM÷mqÆ«èCw½M«KÞ™rK'…kOß¼gO>™>˧KtúÖ¹¼Ä)i>fÅáì…=ÍӖἑO'Jyâì“ö*N8gv °ÆÒø•ûÅ;BÓpÁ³M—÷õᬣÊßà~ .4ÿðÅ›û¸Pj»BÃÎ.œ¥òjðßpêe•áNÃîéMJþ/±Ïô=B¢Òp˜LË2Ç?±Ý½‘óŠj$ð–þϯûÿ„8ätçW‰8$Æ,´SÞ—É}o»‚G×Bª±òNÓ HË¡ÇÓT‡œîé2½sÿö¤cl{.¼Úzcÿ^2”Ý/o,ÔЂ×M÷•<N†r“ §•PVÒ0Ï?ð ¼&"óbd½´¼9 R?$Ý2MÿtGÃÒb×TV»éæQjÚ3ó RåáéÉŒ!täõ¦%É+!¤ñãžKFc°ñä=ÕŠ¢p^âŒiqíaðϬü\”­1_¦k}Ú¾|dbí-«ç@ôð¹c­…;!©û~¹ã-ˆ..ùy#ƒ—îû¦2 ¼Õ† }ÿ{<Ù¨ý"B;帎°ß‹öÊ~Ùw( ¼tÏ/œ xÑÔñ«·o·†ü „½¢³Ô%‡ÜGç lûÞEôG¶ì‰þÝ[1?Úó­~zBTç:óD!EH4åý12€U—/õàYA¦åˆYƒÌ[!5eÌrã·C!Îðç‡i~Bø>ïß¶BX«cÕW1q0ñc­ã6ßý˜mqâg+>¨zQïyXžÔ?¿SHž†]ß¾|i7¸95Y0Ü'7œÓ8Ž’ªÆKðrßS`ø»RÕ«ž¿I«ýæ¤÷Ašèêgçß ‚ìyp9á¸/äÈ<+Zß<Ò—5zÛUAÖÛǾî›ðE–¥nåà>aùQ•~þßå(ÓÅWoà;kä§<íÅ?l›]xð†=ÿCD¸;w¦5þR·vÙ–Yÿ?“_7á{ _ñ×Uqаmþêž)W]Â_ým•Fä½ÃßFìIß.‹¿ 0 Ù¿«¼U]o½Te{u þ¶x Æ‘Kåø‹CMxíeQÜ»ïz|v°îÝôX^xþü*VËûEî6¾ý2îÞöúì‘ßóñç³/†Ç©ºãÏ3Ð£Æ¦Ýøóœ;·.õÁŸåŠlÄ]Ç¿m?¸° wÁTÏ:©/øÓÿ~»ÜVÅOàã&í£6žÝ;p³‡|­i‹=n²?¾þ§ï6\¾ýÇ6'SU\~¢kkÿúy¸áÔ,w·žo¸â¹â¿$üfçÖß5wKqý*·ŽÞ)¸1WÛ'äâgܸÛÍÛä¨ nhRšx¾H 7/¸ôÙ@Ö7Œ­ßZ³לPë[¿÷~ÝukiÌ=\=äв÷:¸üða‘àk¸hLÙ‡Þ¸DŪ@^ë,.ÿf*±øâ\*½7óâqM\Òy}tÕÃj\>/ÏÌâ s~#'Î. \<¯:ëêï¹8q¯òZãP\hÙ;Çb•>.êÎ]0®Iç7Ôþ ™´­ \%9×êŽvº;9gÌ:¡¾8÷Nž´¦wæy@SÌìì1ì騸­2 8DD.íÙìQïå4ñ›·y»ŠÍ¯à†ñå9Ñ!ޏþéûßêqzñ1›q¸BõÈ®¹qÕ~p´Œ«ÍësCWZãêcÙ+.›qÝè²÷–â7Ñ2RBqÝÓð"_tñ›žË_ŒÇ £ë݆œ9Šë-{Å»…kwEsûCŠp}oìÀó~sq}͆ب85\g[¶ð½ÓM\}ÒiÑà \úÞùäå$œ;sª†c4.˜<ûñäèœ)’ùô¾N‰ :8jýœ0_DrõøRpÑÕ"iÁÃßJ÷٠Ꭿ†]Útb.,y6’Tï ¼|DñägךÆA*ïñ¢Mž£!{šöA5±ÁðJ)²¡e”,ä‡Í-“3ñ†¼£’F* !yæ“»±[WCXdî»[à¶MSÛð¢\û0i—LJ$~û*ÙnÆFì2vRdÇ€ƒ8.¾rù'=³ZL}»Ç#µâû:óÛpf÷Ø¡Ñ6â̵盓 ²qb¬ 'D{4Ž:•«»þàäí[¤Äx8ªØ%ú|ÿa8­¨®gæu}òÓ¯Ë8Œ ?Eô„¾Á)B?ýE¾YáÔlÇË£‚pvÞüêL)8w¥}†7÷NILq˜hÎAâ*œºÄèí&»IøÕÈy~³äqú¤)~òªgð«+“®½\‡‹÷4>¿è¹o‰Z¡ÞqÙ¢¥'}k.‘©. ábTØk¸Ô³Ò:ìÔ|–õAlʵöu[%!rv]ãÕ—× 0¿orØ.ðÿ&5WoÏ>ð,Y´¹éó p6Û¸ê¨/~bôff±U6Ø)¦kX“=ç|4“Vq„v“-—͹оùÐ˳~Ð.6)þ¦ÕJxÿÃÌÕ±QÞ[ ô ÚóÈ6†¶j® ÍÓ¡mOà—GÕ? m澩g¡ýÒ¯;I=MÐvnÇ ‡Ä$hÑY²·zZ4©(ìyoV‹>àhG@ÝÇm§—t͇ñØlï8(ŸP7ãÁåKPÑì®së©!¼NÖ]óaa”8ü–ZTø JïÁèîêoP'R`3£_ Ê•‚ÓÏ̆×zµG¤&CõãÓÍõ¦@ýñ›áןÙCã&WßËjаëI|£ÝN¨)7¾&–qêñˆMõº¡Éȼf8Ê€æC9ßõ@CìsaµÑÙÐ4tâ’.¥ÐtúÀó¼eÂÐTÒrnáÒ$h~ù²:]ЬšûÈ|†´†÷œo;½Ú>> xa/ïĤë‹_„w'Ž Âý¯¡=~±ß«ÕNÐl×è2(¨šD|”BA}ù¾¹} &¡XþSè"(¯ió–=¶Ê×,œ~Íë#]ÜÖ9Päs»CæuÖBñiÿ‰5;§B\ãÇŸ‡wk@F˜a†¦É}(rÞ¿ýÃá«PúñüÍÄ[ è͵¯ð:ÂbWÝV s6î1¿*å\çr^Äe(QUîÙ5ºŠx¾’i©•;[µn£ÑbH»µHÜ£ð^€5ÕÁPðSݨ9ÄJânf írÁÇÚCúEÏ «ÑZP4ùn–öQȼ3wÎ5é;¡ènz \7yô†áçB‹Šö¾ZÄÞýÂmc¤w¨AÎmµgJ ÍØ3XsM$˜µlûZl É˶ïXR‚Mÿ>Y>n'œ2½<|þ{K¼ÿlÁÐC‹6ñÁ Ýg/µÁM§è”ʇci3SñâˆrjV±Õi´—ò‹¢ÇBÁÜ!ßìò®AAòÊÇ3M¡`õdîŒ]P`s÷t˦B(™×$2 Šç\lû²N_Û4w'‚ÌÓ†Ë÷Ã5®¿õwëá7«VOíÒÉðo;ɲûqÅõ‰¦w¡¸ÊØ}WÇC\µ-,GoâE\‘Z¯¸pŽ®œ³:fc´®*2h¸—~›¹fÆ \¸@ÝPl’:~µ£¬Á°þÎÚöñîκ÷8‘“7•»9šþÛa¢45‰«¹ GŒ´/òyä€#Æ™°övŽÎ}tÏfœbo£zÔ§mzõxæ€×8íñ“©—Ûá<ÙÝ GŸàÂA Ÿ«2ÍpÑ`¡šŽ.\:L:bo}!.íýaÚ¨\]½6RG —ÊôD¬{WÚª‰qÙŽ«V¿ì©\vWÍúr3dA6._ßÏó;tçŒ_x¥G™‡“Ž„žø>g–ô®ÚX&…G_Ÿ,?ÔG½Ú·æ[@¸ôë{îlû$HîVº&„Ü5Ø–9`¸<ëêT ÛFådØ ‘×N)Š4CÔ‡k3F:CšZÈ1³ÕPpí²Ás¹Pªœcsmå=x%*9zà# ÙiO$üðÀ†ã¯:y¢ìˆÌb9>ûzøó{àâbµeñ|ˆ|9kÝ(¡Õqz"ï*¢Ï>½Êøaì@#…Ñøåôqý1·Çáô]âö5aÞ8ýƒÄ.Ïo;qØ•Âû Ræ8¨$3cG“¥Kîñüƒ å/ 'vⳇ•XÆãç;Ö…¼ßµß¾_Œt¦c×à3Ÿe×ÃÑÚ³/ôÀé—ÅEÚálÏ[ë²q”~ÌÚŽãaø©pÓ3yÓlýÍÐt6Nß0è÷¶NÕµîè´ý%8sRÚÜ—O7âD ¸1ÿGxåWÔÝx¾»ómxw[Qj„Š x/RýmØo!*¿Û(à_©_rïÈà ïÈ~¥Ýk@¿tÞªÛp·¾!ãtÕ6lã*â:q¦"6í×›ý ­ìËêiœvSDS4©ÛÊOm£<ÝÀ~Rùzû1êpo¥õïàœû8¤`ô' 1ü¢#ÇÒR£ ûHtZ¼¿^mR¬”Ö~Şç†)dÀ3T_z8ÇÞUž+äd&ãWcŸ¡¡ïÂ=ÎÑutH,N댨ï\$Öê8-Ii-Ÿ"½Ôîš9×¼×ë‘>Þ«Ý’l‚$}Ï A§ã¿6$û.Þ™$ú¶pýêUäØÇÎK§É#I£vµ¾[HÒy…s¢ç'$Y£·÷’â¼ëò艤æ·õ?IŒâ-ù‚¤¢8ƒûF#©"óYß½‘TŸü€ u‘ôШj ½X$½êõ¶ŸZ7´Ñ˜O§ iמ´cj¢Hºš}î "’Yù Ï@2§õ§ÿˆdŠÄ猸d•ÒyÆaHÖdýÛû^"ÙG·.=Ó[d_+î€d¤9Hi´#¹ñ™~¡HNs¼}sÓs$gÐi ftÉ]Ñ(SÕ Criá'÷ݿ享جu@Åw3WMŒ8cÅ­6šä!Îüý(Õ#q6æ‡iy!Žnuù·e‹G_.>Òb:âœ\mrdâ\iò2ü„8êK”ÇÎñÙ³²8ÄñY1cáÛˆ“u¦Qèsý’¶ÛN;¦ NCüÛy©ë§}¶TsÿÄy(:·q¥tMõQD\åÐʵ"î,¡I·’â.qiÍöGÜÍuGÖ퉸öÙ"®™×»ò7÷öÍ ¨%ˆ«zÛLþ4âO*Îðþ?«ûV"nûïÆŸ—·/åŠvÝ]ÄýýÌo‡ÿ[Ä’ qWC ñ&¯©É5xò³ÌýX…xC½õÞý=? uß7ßx#u'‹ëïA¼Iz»ãWØ"žúèÖá9ˆ7{½ù ñæVü|ñ–Æo2ñ4>I.8Z‰xàôüéø Ä[RÑ4éÇÄ[YØ7Qñ4~ÞŒx›·[-“*A¼–£òš¬ïxòùr Ä;Ö¦¬üTñÎÜHw«ÿ+O<¯®ÖéF¼“¿§ ™õ"Þ¹¹«?µÞE¼‹Èöã›LÄ»”º#VvâÚîúyó{N›FkG<óÛÆ‡'ÜAÆ×Ç-EœËjƒC_G!Žƒ¯¶æËaˆãšx¦q"zT;tc'!»Á=æâ¼^Ðøbâ4>YÒ]»qÞž§3e<âtpIÍ}‰8?ô›ž—%!N_ÝŠÉ"\Ä×Ìÿ ýqå‡7>/´FÜÙ›ÝNŠ"îBëó!Ùë—¹òUIˆ»òÞ¹°‹3wûõ‘ßo2ŸÛ5kWÈICÄÝ£VÓÒÄØ…^íø[¹Ç×ðBÊbÕÈ¿ÒèØ³a¢~ˆ{b¸¢×嫈kü|ŸxÆIÄ5ϺîÁ|ÿjÞÍÃþßÈmK}žŒ¸wÓyy‰íˆûØg*¼‚¸£­ÜV îKÓOVêŒ}y€×¸p_Ä ø0}¨‹ñ_™ òQ¥Â qSŠ—nÎzޏ%YsKS·°ôð%̧åã°V ñvÛòÜæâmŸvrp#£ßG,Z†O©aìgmf¢:ß>4ŠDT‹Ï0ôlªhc –4F< Q£¤ù›ïŠô ÅÞDÄ»¡²p®h>âÝ™w|í† ˆww¡ŽsñŽ¿òáJiÞyŒx×pôžÿŸÒ~ÍÉÇ]#Tö–°7Ž‘ÔÛ“½×:+´ðÕ-›…¿#éy;~/þ2I_[Ò®‰¤«d.fìjÚ³Û‡& ½èŒ³»›Ì‹qi&‘\$“»¹Yñîx$Óßœ7ó’× ¥ ŒÜ»]¤kl ’½ŽUŸË!ÙˆO·-$d‘lþ±eÇo¼E²ŸZ›UÓå‘܈9ûZ đܼõÓ„ž"¹u§*xÓ‘Ü»é&–<$wd¸µ¤ 9K›¹nåHî©OÄl£»HÎ?j¼ŸÒV$—\Ðjh‰äêí>—]«ArýsÕ”0v3ØØ·6†ñû£Æºšt ŽºüÖëfŒ=®Òd©õqè%﹨…8‡cVæòíÂʧü÷寈ó|UðÆ‚ˆã=·iFéÄÉèèyºÎˆ‰ swþZ#‹8ïÊV~f칿@èÎ%SÄ•ôS?FqU^JúÄYbøqWm´Sy»q·Œ‹ß¶q÷Ægˆk1zwxòúwBÛ×Âx­KÎ/ĵôñ``+âÞÛ©\6CqïßyxûÅ'Ä} tÅËiâ>šu©bÝ!Ä}â”t-}4c·_^P¾€¸M³¸0ñÈuæ³Gœ×kò®öˆxÄu[Þ'ò•¹ŽGšâÇ~oÄõÿvõ7fâKØÑóŸ|Æ!ndº¢ôJÄM~2ä¶r×ùõ~2⾞b]˜< q«ú÷ÿ\Ÿ‹¸MYíw’D˜xdpFTlâþÔŒÚ×¼…‰GªËÇ×D<‘ïy¯¯0qD&ëýNFÏ3—áú Œ}lTʹ.„xÊ{Û¯¼¬fâÕ壋-íOuýwùy?OÍYqÃ-&Ž,yûÒäàeÄC6çr3ú¼&õÇ%#WÄÛÐÒYÂÄ­Z¢™·g"Þî[ºW·2ñÆES+¾ñö' ?v’±Ÿk¢•† ÞÑCŽ_ç%#žQ²ŠkoŒŸïém A<3ëJÕ¥÷ÿÊk±§§C¼ÛRk ]™¸wgwO¼QâY¯w·|rñl'<6çÇØI²ØªŒùåË3RerSÏáþõ2Ï2Ä{ž²èu¡’TðNÕ¬@’ëU-Ú1IZ¥}8Z³Iz˜ˆI!Îiw¿}ÛŸ#ÎCmÛ¾ÆÞœe.—VœDœ€iGnŸ¹Œ8±ÊE!ѽ þ’¿ú}Â4Ä)Z¹s† NÕgQ<¯ZÃ:N¹"NgaÄG%ß}=³JqÆmİHâ×1)Ä•YÞÓþ´q‡)÷ää®fpÙ•‡c9úˆ;M1zqƒ+âλ9&–±Ã¥)ö}Lœç®Ø„w ®î¸Õ›{˜¸¦7æÓQá>&.õÊ©>*GÜóS.¨0vi±Qoúa&îßVó݃¸v‡HŽˆA\§Ü¾_nŒ½y¡…‘‹»7:ህâlÆ~bÍ'œBÜR_Ïš{©ªŠr`âVǼÏ÷tæ!î—Èum#˜¸Ö¯¡µí"ƒ£¤ âÕžN@¼©g,ú08Lm¢h¢Ç_©–±#s<â-rŸT0÷c§¬&¾F¼åR¯¯-bðÕê£[?'k"ÞÆøTà —˜ø2ôâÝ—{…«ö6 >Šlk;úŽÁi›åªæÈü=¯k¯`9ü:cO236†i#Þá ±ý™ÌõûxÝ›Ái^R­ÕÿÊs&Ê›ïrûYý$á coæóÔVm\x×?‹ªz1ñåvÓ„àBÄ»w§OüÁØÑå± œX&Ùë´ÍbîßVuBõƒÃL¼¹>×m ó\GÕÖÉ2¸ïIÑaí}mHBë¾áÖ “‘„Ý¡à¨u²H"cP_ó›$9ª6É'ÅIîš$Õ:¬ IÆVñÎê¿@R—n}WÓ¤V®Kº÷è’Ú}ä³Y’º]rØ©I\ý±fá!$åóZä’–>çðkáG$=v•ôåD$}ð;7Ãq’¶—]o?IG¶K$"éÏ·æ¬P-F2*F²÷Þ#™kõ{ ª^!×s“‚-µ‘L’ð{M©mŒ¹È7ìÕA²MŸ )瑬jÚ§E†Ë‘¬AÇ\ƒ»ŽH¶x¹Y¡Õ;$Û«øÛoÒi$·àèO«cLü£]¥ÀØ“‹üªí¥H. ]P\xq$ç^ï}ÊÄ—™ŸÞµ• ŽF"šÙpqvé5Þ¾…á/-F >»S·'Ôë<⸫ 0CœPýó"Ãþ75K¤•‰s¯:BΔµ"N}ûèSLÜúÔ;Ì1> q…d.5º fð\™Ñ®uˆ;òÈ¡Œ0ÄØèw¿c â.°+Þ<Åq5¶K˪—ü•kOåìdâÚº^Eé‚6Ä=ž—T•Åà¨ÓÞµQoÔ×D|»¤Ç ¯MîÇÄ+)“úwéŒÜù<êõrÄuüvãþ*Ä ríé䆸qŸf=1`ðUš\äÞþ,ÄÍ?¿~dn?âÖ…4ÖþzÆÄ—É+‚2{ú|Ý:ñ9c?¿ÒÖõäeâ¹›ZÌVĪª/¼ÌÄî·EMë<Õ{ÊG ñLRÚo´‹·ö’¹ˆ7ÞúkÀeÆïO^´DGÄñ¦ëX)˜Œxó…Mk9 åÜ‚¦œ(&-<öÀÍ—áQè¨Ék»4Ä[ñ˪x1ƒ§Ví=Ó½ñÖ¯}÷¼”±«ÐwB^µ]¼iÖ°:Æ~B^q;Oÿó¥/¢<¯ÝÛöF”±«}7c¥;ù8nжUŒ=]¼8ÿ‘ù$Ļܗþh=ß,í¢·å2ø­xGKD4c'«Fˆ52¿clLài†ß9ä=/?8 ñ^4/ðhgâ˜ëÖº¨ƒ ¿ò.µJyø ñÆ)/y€xseµV¿CâïÞÿèøñ I ~,*}!’X_&wøâ$qµÐýtÜm$Qî#>æÞS$9ÑI盘=’ù†á5×.ü,fâŵ‹öû0vóE"tÐyÄ}:óXbÑH†Ï…v%ÝB\—.éÇV[×Û>Çse"â†f' [ãÁØQ°Ü†ÁmBA¡Nˆ›óÕ(òÃ[Ä-¿ocqæ7âÖž®Û:œ‰{Í5+üÍ÷cL_‡ƒ;{Ú;‹Ÿ1ü^xŽÄ×¾‹ˆ7h‘“þsÆŽ6¸…I,A¼!š¾%Ë{5¿HòR cGcfz-NgðZë“åK÷3ñ(é€÷ý1ˆ§-¤”„xóo¿¡ˆ§!š]Ù|ñVvØãnEÄ[ëëÂà»õ÷·¼JfpŸöøñ·B<o[Qè‚Æ>v¾|a²w-c?¦ùyZŒ]èÇÔG63ï\š8ˆËð-£æ$XÆÞO9ÇopcìÝüÝ4/†÷(%ŠY3vf1³yŸ Ë®e*~úŒx·Æî‹ºÁð¥Ûí ÇŠN1qÈÖ»{g âÝß¡¶Ç!Þ#ņñB ^|?ðÉ]ŽÛ4v ’»Û¦›<° ÉùMkžlÂðüÒq–d0üäwæ¾ÇÚßGxø}›«ˆ#«Äibpш¤ú‰í ?Ÿ¸ë¬zÖjÄ™œx}ÊÁÄ™%Ë-ÛÁø÷ån¹»»v ÎFµÅßþJíËAœ£ˆ£gÍãØÜgø¿á²±šˆs¨#¹ã2ÃWާé.{»q,îŸóà3âX‡Ž¹~XqžžlМSŒ8nòœ¶w|¥4swEâdžV«Âà­ìKš³¯ODœJï×¶í]ˆÓm´ÅHê+⪶Û.Éè»î5彈;Â)gÕÉf&N´ š^¿qË•Ídü?rÚYÀøóµÖC^M\„¸Ç­ÕÙÁðümÒù ·ì`ì 5áIØqÄÕŸh8Å1•‰ý3ë¶2üâŒlþ„¸'M8ß—!®©¢M3fø},·S›‰?w†wø_ý:þümÛÜ'ˆ{Ó¦ Qè âÞ:¶'âõ5ÆnÌ‚Â{;´è^úŒá[Vâ²æ×Îü¿ù>9~ r|߯^žˆž­¶»÷W>¯ê²?¿q}µ-'lcð`7èÖù–¿2.¾m­;ƒ/ÓhžÌ<NÜ[×E .,2vNøG†'nJ-2dpŸZqiÛQæx𕆠£»Ùø ©"î·âyT~!%Ý~”‰¼üô ü<˜¢¸FßÃy ?z2ÜÊÞ’‰C_K$K>¾ôâæCÛ|oY@—Tco„½/0¸NÛ5ܼŸÑû­·“ï ÞÉ3ƒ»oŸRèŠ ÿÑu¯úÌÄÃc'WîÈbøÏ ³ë°N—±£+‰Cæ Þy—åÅAµˆgê3¯A4ˆ‰G~»ÏÕ2¼Ëí7cö÷^—#žmÜmÕGL|243ºñì®I1<ïÉÒ± hõ\í„q4(ç©‘²±ôãè4MY}$ª6t¤«Ò $ú ñQªÐ$ú{ÞQ³p$¶NÏ|âxI$æYõ Pü_ù’Ó^jƒÄ§UVïŠAâZs~Ù´!ñ¬v)O Iœéó;ItŸ­ÐÚƒ$9ß}ÚÃð-ýSF’dè#<Ê\ Iþzúd^Ä8$%ÿ¡ÅÝÆIÍ íèAR:ã›ÓN4 © Æ<:4IEôe­Q BR%­×»Ê÷3|ëâÊ$}DÏöëº*$»ãüO»Œ°0ŽËð©Ó½Zs"™úÃ"ŠÍ+숩¶ûÖA²;:9lî"ÙR eI³ÕHnÜj—¤'©HÎö|QÞÆØ[]6,DœáK4*¿‡ ŽNjü㱈c¸Öt÷HGĹx(Æ}ÞRıy¯ÆàÀ ÃxCÑhÄÉSz1pã7ê =Ÿ©ƒ8_¦+ÿ`ôYæ·æBGK†çlÚo1‡‘cެùˆ‡òós:ß/ô"î²ý/¡Œ}l~÷íËÃ鈻嶆Âæs¦8H1øÍèÌþ’=<Æþ½‡‰Ÿo5OZ¸:“'w1xþž+´Oà ñD'O ù®…xòøáÉ—FŒ}ÜZ}ÿÐ,Ä7~_u(ƒË¦àdåˆ7ÓD®Ãà;µEN—ûlØÚ܈x³—þõP–±#Óùæ0ö´ ={³¶ñ4y1–Œ}lêÛѬÎàªí“r~e­cìiÈdhaâ¡žÚØ#âcûi<.ƒ‰k'•:Z1øíÔœ+/E0ü'pqƒÊjÆnÄ'¼ºþ’‰?mÏßNapÜÅŠf5 Æ~^8Ä|î^l̵sÌ}ÞOÑUÏð#ûן~ññ\ÿÐLüò 8™¯Êð7Ÿ¥J*ÌûÞ‘¶™øÚj±£ªs'z2ÐÃà …KÜGöÇ‘P¿ã4©Ð|$|UhÄSc$\Üy"m·ÑSþ24IñËp>v‰üÚ¥×wÚ škpFÖQ ÚÖ<|nyôlùè}¨‰Lßìÿ$‰5 }ª†DCŽ•úLþŒÄfê,y´å$»qèà+•d$–[ã9‰ähÌöRDâð|Ãû6[$~iMëUH<ès£Å”SH¼ýTø÷áwİs{ŸxîC¦ÃæìßÇA±£ýÌUe‘äà.9–%HÒ\ËkCÖ)$ùùwh|º’‚³ÉY¡HÊå¥|ÜHZ¼eï~‹wHú춃Ggv!é4_ÝÃ5Ì@ñI1ã:‘Ìî“ËÅôÎ ïn»ÕÌ‘LK§]¼Ÿ’]Åß8¡É>RÑ”ûdkÜz3ü'keug!’[|lmÕz$wõ¹ç÷§ŒL®œ®edäÞ?‰×>qµ¬ÿ²¥‚‰Ëõ*ç:¸D¬oÈM!ÄѺð¨QQqvÏ™ô1—±Ë3_”^N0Dœksºj©!Î]ÕI‡C/ ÎÃñÚ<é¨\Ø“xqü Ì…ñ.ĉVLX¹o4â¤ÍÃò"NÑa½­ZLÜ­OÝ›r7qÞ ó½^†§×Çè{(ƒÅš„Ý`øØÈkw†?M=tÄo çf+l݈¸«ÖŸI5°GÜ]Ú¦¶×Ÿ3¸2"x‚+÷L¤n‹îcìóæè¨ü@;Äu¨ì^幉Á‰¦± ‹þö«÷~T;â¦Ì™ŸÑùq‹­•Ä0¸p‚ȶûL³ýcÍ2uFŸÖù¹€Ám'­,fêe!žÙË!»sãïæãÉ"ÆŒ]=:åñÆMž‰'Çkç2vþtòò3Œ: ùüëdžç|qòçܛsnÃÄó{y êÌnÄ Ÿ5rú!†wEßÛ,ÒÇÄÁXIÉ^ˆúüâˆ*$£¶Na:áëW³UBÃÍLÅúu­¿"ÙÙ•ï¼ãÅ‘lÙˆçIûU‘Ü0}µ½yïܹŸõ+,b‘\¬œÅ*ígH®ùãM•1 ^[”—þK qÆØÞZ¿Cq¦=ÒèS¾‡8k6O_£9q÷+}yËøå+æeúÌ<Ûä¼Ýê¼ q<MI[5qâsrƒ¬T'§szÐjw¥ùWºÝGœ×;bÎ<=8M/犮_‹8=K,÷FG1þJ8®#n¸’—ôÝž,A\…pT3ç)⎿_}ИÁ]vsG bðÇκí¾*ß÷˜ÈðÒ€ßåÍü쯌_½[³rŒƒ—líbîåš0<|â۔Ă¿ÒõÍ¡¯š|œ£ºdü÷;ˆë4ÌT©qgJ¶­`xxä[®ÇFŸâ*MüĶþ•Y#z–Ä1|?çÞž}ÚŒ SJfðNù¥¬xÆÏ/ÎÁ³¹ˆÛh·bì»ÃŒ~e¨]®Ø€¸­„§´}Fܶk'äý¿‘ôóT~úXSÂàÉÎD£…+×!S-¹ /j~!|’¹þGý7’Ï™ûûò¤|ÞOF¿{TËJž´YiÒÒgMÕ‹œÅà,¹Ö1—¿M`∼ßé ï˜8"©²1 ‰á3bAÊïv!ÞœRÍéºÏ˜xa¨¼‹áá+¥·N½=ñVkF?£ÂÄ‹,µü¯{OëNŸ5£ÿ»-å¾[ùWî:÷Yís~¯ÓÙáæŒ=èqYž| ñŽÏ ›½€‰[GþÌVuþ{|lZèW'†O­iÎlô`p2:󎱟£ƒsbü=6ÖV:è[ý÷}Þ“(Ãÿó<•ôýë%‡}¼w³þÁ¢9Ìõ¯æ®¸¦ºàïû–¯¹‡ɺ{[Þ,9ÀøÛ²E÷K¿!9¹í9¤œ†õXÝàr$g´ÂÄT|+’óÒx×£–ËøÝÙ¹%Ç Ü×á·Ø ŽBfî õ'þ³¯=çö%Ä™­Þ^ÃðôScî»#Î6ݸçŒÔ«wý2˜áEG¾Ý3FœS—ÆZŒŽ@SõU5­¥ Ϲ>ćñæJMKbìô¥fwmÃÜ$Vh3x€þÎBehâ`Ý1Ëú2ö—Ú;c~/â4O\§sá âü˜ogå>…á;1œÄ‹Œ] N-î5gìnâöÝ#³³‰eD¹#îšÓËÇ1¼ewÅ3ãfæ}}釢š î?8TjÄ)Ä=»§¼Ùþ6ã;Årï1~úòäE¾Y;ÜU?7k<âÚè„ègD!®Óªâ!u ?r »ïx‘á+^E37ø^Í%ãøÑ¿²çøõýŸÞøÝèPÔwÄ“™?6&£‰#“œÒ»·1öW‘ëj<Œ‰'…óòn,fpœzÞ:&>LÚ6÷¥3ƒÏÔƒäKW/cð\®¢ìˆ·êàÂ'V Y–¸Ç0’Ñc­Ó!åU¹¥^Ñî³ô;<øö`c'Bö ƒ{›g!-Ám’®'·18ëÄÅÒÁe]ˆwY<{Òf†·\ÂékRý—ðš²ó¯|Ð}]z&ì¿}?œ¹ÿ—¾w<š"Þ‹Å6«¶#ž×N×èâ¡L\:Ç5ÈcpfDϮԙˆ¨Pa$b‰Dêí+¾p v4J2gxÐi¥””84èÎÀå†WР*¯¯~š)¬]â,©ã¼‰Njµíz/ÕmÚþ‰zv<Ù+gŒÄ–oÖŸPŒÄ¶=÷óŸ‰ÄÒî+ïEâ#FsÆdê!ñ+«-Rúf#ñ[Mm›Ú|øo·\•#sÄö;2£D\E¾|þ0$Q4ä`[Þy$ñÁÚ¾½x ’\,¬».^ I—¬6¾/…$oÃÕ dåaë]›#©§² Ž3¼(»ä’ꢷHzòìaÇOžEÒîßfD/ôCÒÔ?\܆df9º»}ÐC2V!jœ“H¦JoåÜè•HvˆFß×uOìås{¥çô#ÙÄ üÕ•9H¶{uß÷ Óí}Aá ’ÛÂ9ÅF+ò‘œÝ~›p k$ç¶?9³{ú_Y}w_€ âH˼¸¿qT®uÛ%2~ä°^êã£Uˆceþt²k â¸.1˜ÏV–íTFœÔü«÷3§`í8ÙüÄé,îz_…¸Z¿d!q÷ž{< DŸ±çºøß\†?Y4·½gñWºÜ:9i⨨ ^ÁØÕòArnŒýÜ\íÚ[‚¸ù %Ãd3öu{_?fŠ=š•Éà¥s3Ý~2ßÌd¬6Ã'6èÝ\½Ãð÷õ¾»1üF+¿µDá ÚvÕK”Šo‹‡DÍóÁˆ·m¢Þï¬É†Œ†lÄ[ë*Ká:â­7Z²ö ƒ›ö—<±¡ñv†&)‹ðó9»–zÂßëÐóÛüUÞI¬aì¥æÉ–ž)w%heëOfì¦U³Ð?ñ ?|88‘¹î‰~MiMæûúMgNMaøŠq§¢ãóiå…úÆ‹åŒ=[&vp¨#ÞãwvB•ˆgë>(3ö³iÔƒŸŒ=z¨7]ΗÁyž´mV1¼Ço7‹yNo‡½« ˜ïÇÏy§£Q`W:’°´PO߃$¦Kðò’D+FFþŠ$Œ†(¹cÂèóøÆw!‰Rµ•uöQHrÐá]n‘ä|C$6î’´Y›»>þ(’Œ?òlM×$ùͽ{X‡3’âd/ÌèÛ‚¤6œü´÷'’ºùþÐ÷‡RHÊ¡»}BR›³ö.ûˆ¤…ž×sIÏ|s\a{5’ÖÞ*_(óIïï±ÿÐ5Iûnøæ¤Œ¤S¦?lä @Ò_÷Šf!éþÒÁ·\l‘ŒäJå3HFe®áU$ñ‘›Ç"™=½—ê85H&ùŠÌIB$Ó£q0€Á¥ºó—l}Šd.P\¿ɾѪ25Fr¢áë¤JÜÜÙ'®/‘Ü:£±fbñH.òÙu›ÏH®Âé”SÙÄY|b…Ç*Ä|™ÍÄ»9Mþ!ÎòL³!ò ~Ý\ž†ƒ."Îý›ßÅ"މ®nAjÃc¦xnëŸÆÄÏk'<ŽoGœ§Ã}bëÇ N Úª„Z ~õÙwòÁ0ÄÉÜŸZcå„8… Ôævò§eÂÖñ£RçwäôÊ_w„h`ÂÄt4ža¼ˆ»öýœ–FCÄÝšgtK q ‚¿÷WÌFÜ“É#ɬåÇÁ´˜Ç#÷…™®e».ÃSŒ½W¯oad»ÎÀ&®¿«Écðknוד¾²sXÍ´Ng®pçÊ2qù]XÀq &ÎtJßÎ_ÃÄ™„WšI îûݿָ–ÑkÙiNÜœ>Ä“OV¯ËSf⌑©ŒÃ;†W/X?±—‰3òãV3~^u´ƒBh c—’íºo\¥6úðžö‰Lœ9`ýÂà âix%\ÚjÌàÀúþ öZ×}Y7…‰S›‰Ü¬gpŸnuÂmE†÷È™Á­Ä;œ~w·ž ƒï,NÉO;Åà;×îOµ;{ªÚpwåCæx©Ç¸Ð*Ä;{ùý‚ˆwi™cŠxâYÄbÐeø”µ²¼Câ<ÆnÖû?z‘±§™ŸýÝ>d¿m)ç©w"t«1÷é™R$êÃÄ%¿º•Òï3ñç½SMK5üêì[hù~/Ù¤ûLÕ~›þVøÒ¿;c¢Žð ÿÐÈAÍFÐ_ªÛñíØ=4`k_×®)Ñ€Ûei¢C¬Ñ¼›w7H vé*t \ÖZ-ê÷¼Ôú tÿ^bmîŽ6ŽÜ,P 4›•ññ ZxKlùþN$tæ¸Õ}-$䛩35‰‹„êTÏMŸ‚„g©­9…„§÷ -ùš‹„õnŒ_ºr®Jœ,®ì„»'*ºÛNG"só]Ô•„ÈAm÷š›Ï‘HÓ^­11ËÐ i ~{Ñ Ù—ÚÝÄ¢A×,gÜDƒê¥Ï ˜ƒD\NKX9‰îž3_â‹} ž¦m‹Ä¸«m/GbЉ³ÿ»ûxhµY'ê†dt„FâÒß$ æ ñŸã6Ž^Äoø‰~‰tCâiÇÖå"ñ¥¦v;$Á›[³Í,Ilt ?9ÛI<®–•ŠéCùöjÛÌD’r>ÓR[¤Ñ'N¾¤’,y½F&OIÉ*ôÌ5Ë@RÇ^Î Û¤ÊÍmDŽ#iÞN-Çîf$m®4¢nÈ~$Zy]Þa ’<¾òFþ`$³½fïò7Œç±õúÆ×L­Ä¸÷J±L\ͶHm‹dW)>[ÿe&’}t1št‘lÁ²}‹™x©|,?Jj,’36Ì*ݰÉgåýŒZˆäz·L×EœQÚ¢?Ü½àŠ½¡Â)Ä90–{Øñ6âX†¨ì/cü…çhýÐLÜ̉¿huˆá§êƒ¦nCÜÑŸ§Ÿ²õBÜ…•*3¦2ö¸Óîù¦‡Eˆ{./ÉÚ”Á×>ÝÖÌGܧ¿EÅ÷385>è½BäI&.+öõ bxá|–á—ÝzÚ/K"Þ …j~…L|l=ÕëÂàÃ…ëJGX0øl›‘š×~FþÒ샿Nöö™4=gpÛ›ŒÄ!ˆ÷ל,Îè½yTØ´;ˆ—*¾zœÃ_ª¤Ž|_ÃÄσ.HLBò£÷ëeM@ò<‡¯”ü`½íKæžCò*J³{ýxH~NÃ̵-+‘¼aAøÒ $o<óIJ=*H,hÿ2u-{}@=èÀ=$ö®2eÖÊŸH|\±®Dƒ·~>Ö¹8 ‰_:Y”ƒÄ};×u…# ‘Y*ç7>C#&Þ™;ð’Ø ½îÎèP$qíZAÕù($z:¬Èg*’øl»5µMINp¾®|ˆ·F¸Wv«2z3mU²b’ Vü(7II/7»èˆ¤hî«rI””Þü=IylÉÜšÅERØÄ¢>`=’*›S÷¨ Iõ„´ÎïcâÔÈøÂˆwHzéø½ssœ‘ô)§k]¾ é°ýÛƒWnG2£ÞŽÿ@É,‘ _ÿɵ H¶Ïò GO!¹™É¦¢^²HîˆÎÎß!eHîþ=($­pêL‘\Ëòá‹'"Ž”ûfÓ¹ÏGéÒ¦ÉÚ>ˆ3é™GƒåHÄYqå‡É£Áˆ³ã«òï Žž¨e†8GûŠÈE3¥J} ®;¯sUóâÜmþ6Àá âØ [ñ¨ý-â¼0:5åÄJÄñ;o1Ê‚‰gþá.­ë+'kÕÅžWŒÞ»Ù£¾qº^Þ–ÈCœ®Éú:ŽˆÓokwãâ;Ä•ºe5óÈ<ÄU.j*ÁC\5ƒÏá'f"îÒºå–Έ»¾¯Ô7]q­ŸFM‹öGÜG¶ Q7ØwÛ_ƒ‰kQ£LÛÜ™ó,Xq‚áSŸæbøÔ¯Z™'š ^ùé—„¶"ž˜zoà¹_ˆ'®tküÈÄSŒ°»¸u7â)ååXÍgð¡Iå#›sˆ77óôUÿ!ñÆQ G#¨í~_Ïèÿ§­º–LüY²%Âq=âí8ÚS6„‰?gn)Ú­F¼CK‡*nbøÔ±Ë»2ß3nÝ0ƒsœ‘CW~…xgÛMÒªaìjýsáOÃþ¾oœ<ù2#µ ]S"Îħ UO«˜øuyæŒ ú#Ïìø»µš{þ~ÿÜņŸ\Ä;½îªXñnöwdoCµAŒÞøoÆw‡!Ù¬åVBSÖ ¹EkwH -@r«6 ðÝ5Éìþ]g_ˆäÜWŽßµÉÖŒ Gríï5ß0ó)Tx»üÝÄ+¸¾Å‹Á-’ï†Ì›nˆ8²Âï&Jþ•Üa2#ÎLfðOí1“wOgÈE´sç=Ä-X¯„8c¦R›2qÆÃªÃ˜ùž¸ÆÔ`ÈBÄ™º÷¤ƒ"—á º%_çßø{ §‹RÂGgä 3Ÿ|F»Z ^ ÎÞL!×9÷½<¯£þÑß³Q1§«O#ŽEßš6æwîŽúàÞ;Äñ°þ™h;qÂ*û-M';ï ÷sý¼Ã6!#‡"N™˜Ô檆wüJ Ö„¸’N­IcôFøÉ õ_aˆ;HIã¦~-âÊÊOèéG\¹»ÓWµ,GÜ!ÇGy|]Èà,™¡r6oWås”¦Ž9âN=¼8eíÄcªÝ¢è‹¸nO6–ÁEëÇ>åJÿ•ÛV0Ýsè¯Ô™RÖ{€á=1Ûwð÷ýýŸ¬6¬›øWؤ³“áE†•Ê î™ïVê¿™xpnË|í‹=ˆ{Þ×äÒ$ç]½†¦s÷n׫gó/#®í«8Õ«Ìs<”׸ âO¼¼uj2šRùýté75'3ñ¢ÌæúˆõâˆÛ²ïîÖ7ƒ÷ëF§ßÉ ¿}v'~9£ß² Ï[kÊoèˆ~CU&.LjÙ'>ŽÁmïVª†<þ+Ëæ¬žÏð˜õ÷ÔÃä½ÝTxp^«âéLšº2äÙ_¹ÃZNµœÁKº›óBw}ü{¼Ýtű o:jkýì~,c®Y7fô0¸­ WÇËñŽ'YóU—ÑÞã y†¯œd[/ïÈØÉèMd{˜š*cÏð» ›Lu¦#žÉŠ ¡UKþÿߤéÎÒ÷»›ØÏz½P7B?‰®_.»{2]¸^ @¢ægts¾B¢åßÕÝ FbZš+;¶„"±óÒ‹#Lg ±zëèÜÞ‘H|ß×ãž~FÓ„äߺ{"‰÷‡2$ác=gaq’x÷~ÁÁÅeHrÆÙç±ê.Hò8ž%e¤…$sfžŒT¾¤&O|43ò’2·—™Ò~ IÙWd½óœ¤"å /<šŽ¤*dÌK&$2øeîï0[+$==xô '‘ôN‡†K¶#é§ÝQ¥“O#éO›\y-F2ÞCCL·!§=knª=@²â?®Ý=•‰'9‹¦ß@²vÝ—¾õF²Ize*w$ì¯~o‰ä6;\Ò|Åà˜3ù«OGX 9ï\95“¯H.}¦jëGÆ?œÐ˜éûWJ´ÆKÏYÁøƒ-º[;—ý>³ÛáCnjÞ¯3v=Üo8G qVM:6¹£ž±ëjo#a&ž·3|q✘é;ú*7®í»Óª…8Ž~JŸ¬ÂÿJ%—;¡:L\¹©òlåfĉ¡®Äø™„­ÃûûŸ1x){ÖéÕŒ}‹H,©8* Y“»ç­ªÈÞÆÿtŽýlþl1â|“Xc² ‰ßW±§iI0âŽ1«¾\l¸ê«JUO1øheÀ¡¿ö#®ÞƒJ뻌=Ÿ¡W«…¸ëfÙÊ!î‘gË~”<›~ˆ¸åƒâÆ®/aðUêî†k‡·ÕJIìF+âöíÙ,‹¸ý“_®z+ÁÄËKNeôLNèóÅýŒŒÝ(™¹9ðo|Ì£ìd ›¿ïO©ü¶¹ñæ,ÉÛœúW.xдÚù(‡ÐPç‡Â Ú'vûÛbyå@âí®_´ÿËMÆ^¢wUÈØÉ´ç»8]õb!¿?èªÛg|¸ˆwmϲŠa‹ïfø¾Ð]_ïnˆÌ C?ijÙp¸Už‰KÎÒS¬bŸ08/høÅìˆ<íJ]• âEhö*d1q1=<쉃s{FµHo¤’®£Ïã=£Ç¨š€7çÀ†â._8éöZrÉ)J<Ÿ¾`;„7¼ü½BÎÝc·%B™Oùô½…÷V£¢µ>@T ÂÅÍ@ˆ½p|¬DÄŒThŠ/ÙÑã¥.¯ªàD™ŽÉ÷ÞBøý;§êŽ@˜ºà´>/¶Ø BuöûJùQ×PÔ•ÙõeªáÛ²#%Õ.÷Âkg sJ4¨©BÒkb÷BTÜŒºe…q‘ÿƒ’Ê¿›ãw!Œ¹kæÖ!2eâ•—k¶@D{CðmçIÿï/þ”tè“öFH î6 ýI7v¬í鬀¤]IÃæ6¾‡TÁÏÎT©úºâ[”«²×q¸Ä•¤êÉ£M£?•ÿDÿܼZ©S ¢3^ë2¼>½ …xÁBÂâ¹ÜÙ"ï Nü¹Ð¹ « ~x•ÖÐ1H–Gݽ“!uí¸Iï?BÚŠiüo@æu3ædH?±û‡e$µì_v{ÞzHç¦p0¤F®tÉIºiÞÉ:ÙV´OôËãUg!!½|þë öžâú§ûÄ –?êËÓ qzHšZÎvHš5±ýBéoHÙùñàè;Æ|Ùø¨¤‡ªÊêŠ … ]‘!¶gã!ãÙµ ­þÜ—_cú!Up[c!ùuuÏÍŸ1¤Ô)j‰×›'¶ªAì³™ÌL«@tl&'WeD¶ÎúæüŸ`ƒê»þ§dÀÏÁ[úƒ @W xàÏ6ÑûàË<äÒå»À‹Ì¿÷¼pWõr%3YÌWÁO0lû „yxžÑS#÷ÆŒ^ÇÿóX0¼[ÙãnÞë3C~BP®ÍB•Ì‹HžÓß2¢&ÀÇâ@d ¹.øð?¾â7ø<ãÿ{>½; /YϽ˓Õo[¾aü€ÈÁÉ Ü—¢ÉW´Õü]âX̽Ëÿ‡Œ8ó.ìˆówåkù‰ }°{roÊŒÖâ[øóv«€·àp +]6.ÊŸã½%ZthçqðUÉ4õŒ/ëMo˜·X}äßå¢|ö¾ƒùÖwr;ÎaDÿÙqVNsðhÒF‹Õfý—ß¶¥~s/rÀÛtI¥Å(ðe~”1ð["–µnOx\_;c8¸ó½„‚xð§Ù2<·,\Ÿ ¸=òµq¤=q.3Zho½BùZµy5„úØ2ž¢¢‰¾FòÍ$6"^ùæ;^o†ˆùŸf—»€XÆ©2C ü§c,"A7(^¢œÑDï£GšãÕy%0»ñí5’ï9!’øípÚò Tý…lâwỳ†°ø Þm¾WÓ(oByŸ)3ÿ깾羊?']vÜlg"B 8/ì»ü°ßœ·ªé]^΂Çá‚3š¬cÀ™6|~‚3ãl·èè3ñ.Qƒ·7ÕÆé1.Ë”:\øÖk\ ΗÎdÞ7gîÀŸõ¡ü_ÓÆŽ_ô=ÂýñgµïÞį̂ t3OÛ2OþS~îDÿÃvZÝ´­}ÊÆ<}u›×È·Z7 (jððãë87„)ð&~œ~Þ‹oÞ/êÁøI¾E²óîÇñg!Œ¹C¥QùjßÃ@œ"ßâ ‰Üo¢£À`!z;_Bt›`"!V`~K šÄßøþ ×~#0ˆ'p\àç´Õa‰8Äò½ˆÄqˆâkïÁ.ˆ'þ9”½Nì€Ï|ÃH†Ð÷#ø– q}‚èÓ| ñ„Èùü×QüÙ™Z QÌdŒînp2ïáÐ’=R¡‚I¼ ež’±Lðå£ýà?N® øÊ=´‹{š‚á0?A¸¾¥üObÏS{óòºÁÌí”ÄÍo!ÒE®`ýt¸ZÎ6æ+É¢ª²¬¿Œ`¢騸ÅÌžë‹ µ…?a©õüØæàîK-‹ÆÎWäm!pøÍ(×&Kˆ$úAìÆ“Á4aç?È^ hìóùy4i-¨?ûšÁ“ø?¬^Ä>=ŽÞÜ#cLœ°â+ˆ_âÏ&ãÀ…žSsÀ™Œ·+™G×f>`2×?®‚á˜.E‚€Î|­Ó~že|ÇbÉÚy0_›NºC0sµuÞÌŠylˆl(„.8^ž}‚ ¤ù«þ¯;Õ!˜æ©9Šo5Ÿ¯ÀW ’Q²é«ÛÙq/wÑkþzÂøZ¿é<„L(`Ä[%ø"Œïî# bÂ*IÏõ3!Šïíå&ƒ&ìu„8bqOùÀ)¥^¦¼’/ ¤^åŽ_Kün<_›.”A:Á9éRr“HY‚éYYüÑÒþ)÷°¸ŠÄ«$Ù,ƒ¥› ¢\ËÞ+‰žFóáŠtÄ Ü¦à‰@V1|¸3ÙbÿL(‹_é8ÓëÄòGg_%DüºSÓ»"øÓ¼Ž‰C¦0ˆIB ø†ù‚ Qu×eç!‚ÿ˜k{!Jp¹5,žã;=ÒV8@H$83ʽaà"XéÂ)Dâc²‚ï&ú— €•KY;‰/Ú¬=ðµp÷e¢îÂ> ð˜±)ë7i¼aã7?ÌÊ=¯‚JþÈ‚oô?2¯!çú¿Hý{™¿'‚I¡qÀ‡;µ,þsgPÄëê^xAî‡Æ¥—k´®ùØJ³öEí‹ø9ê×Ù8Hüm¸ÀÌçC¤@—A,¶Hz²8=•àM‡“x—ÄH"¿ïÇGi¦KY?çIì%˜Ø} ùÝ ‚ƒ’îá$<“ºâ ‰@&ñ YÄ~ÓoJ„µåBâE*ñ?ñ&‡ÇêcÑ¿4¾9WÅB‰SY$^g®($ àÇ~H#ÏŸIì<‡ð»„G|ÅL‡t¾ÙθüÑ׳Òtp1¤’ù„ueHä[½Pü™$yI$x.ð Lp‹ÔN¢ >¡x‡ÅEäþh‹¨õdˆ°3sÖÏÇÈ}?­¹rDóŸR¯…ÔþØ8G$Õ÷(ft—u3<ޝî—A"ßkyÏÚ{£Ýíâ!ŽàIj÷1D?£ ¢¿Kï#¦ô cé³ NŽ/@‰C©7¤ ©|ú4ëû_\Ã'æ,¡8–òŠƒƒkgîBÿHY(p,¯¢<ƃ̓»¶ €Á)×Ò¸âJìÜU{ûMA`7â=ˆÿö!ãîÉwÿú¿ÿò,;@#p÷ %8 $ïL4$=¥zBýn(ùÝ‚)¾ ã{M²¬dù<'Š£"‰½GÀ¥ŽGg Šø¡2a|ojØÆâêBîï(„3ààúËo0ß+é–C’À1fP’!aø)~&âˆ_Hä»Ãí}üß@É?¤’¸—ÆGé³Bš®B ÁEIÿ&ñÑÆü‘DpQ’¼8¼}p·°ñ'Ÿ¾Øyƒƒq›ù¦b‰¦8çÏ0Nƒˆy7ä}_±ø)”{Z×!ì«`€XœEŸŸò6_Cã;ñ÷”O‡ÿâÍ\ˆà³0?ˆ ø"–à@j×Ô?±öÙ( ,~‹á» ©ˆ„½c#x9ˆ¨Ûxˆa¾5ÿÓH&Ÿ‹á›ý¥?ƒŸ(YaoQ=ú//dq?}ôÊåa$¯C㚆Àဧ 2{  ‚ÛD>ÑçýÅ_Gõ—ýGRÞþ“¿±úôöø]&°y¤DÀæs"ùÓvÍ—Å·Gx—ò'•µw–ÿ^äÊ÷ ƒSÀ“+°ìyšßðš%Þ¬}S»w&zïJð•.¯»üèIp"ÅRý‹„3ÖOÒü]”@ÍC"?Œf߀Dº­€D’ ü)†ÄIz½ð#‚@A|3? þ‚´Ú:ð„³å,N÷ç?…És6ŸàOòþülæØ"vž)_¢ç½®ðñ–÷ùœèÉwÿqÏXIóB糸à&VÈ8Rý¡¸ƒúQzŸÁ‚4Ë)ù€ Œÿî1-#8*\®ÜÃÚe„€Æl`ó¬~8ÉæHþ†ÆG6®žJã_¸~m`y/|X÷Ð|îî$x“ëÑqñ&ùRšïdó)|7euë¯ÞÞïäÎ'˜Šàħ_[Xþïħ¡ÍXüæò‚OlÇ‚‹ }¨.i|Guó¯ý?Iæ#”Ä1šoM"ùøiÓ †_,xfös1Do(ˆ#~‚â”HŒ9À'üx Ékƽ'ùÊ›CÈ}SÿEò[Ñ$ï‚Iþ‹ú}ª÷)ÒÍ.¸Á,žË v–Lü"ÅõI$ßœJâz&áóÏe½Ê"¸‰âÌT~úþ½¤\’=&¸‹òEŠ÷iþˆ‚‡i½ƒ­ó¿ñ_ÉևȸÐq¥x‘ÖÓ¨¿¥þœòsÊ3ظE®ÇÆ5ÁÛÌx\ðÇ@Ùû¦8ݽSàpX>ïBêò4¿ü”̧=É{Ù“û´#~ç)‰WO§ ¶ð„൛Ÿœ%÷E¥9ñ7‰]QyžàsâO®?p…øÅ+dþ- 1¸!m0!÷eFø³!±+š¯£õ­4‚ÏØ¼á9´^Kù'/;’¸G⦷^.Ç$žQ¼OñSˆÀ]¨CÁ£— þ"ቭú‘ü±» MÎðCòX>ÜœxBùî`6c—|˜îîÑ‚„¤ Òs“X;‰ç—ãE¿²<7’ÌG 6w³q”ƽ8>‹7õbó4ßNy*­Cz’¼%Íkhí¡¿}$»¥õRg¢85„ä/i×MÀw¿;Â!€ô-°ubOô˜æiéýPBíÃmˆà p$¸†òn–/’¼dá ¡‚4ºËohž<œŒg¸ =¸•å7Q„wÐ:!Ål½äi=6Šø=šW 'ýÔÑzÉy!Û@ò¾¤Ÿ„Ö=H›ú Ê)ßyAôÒø‰—ÄnœÈü8‘xCùå7®D¿IžÔ™øÓOÒß§y³AY ±õvÍOÒßM#ã“Fòd”?\@ê‰E¤ž“MðAÑ/š'O#8,Ÿž j ø©,Ò/‘Eòéüa³qƒ42Ïi‚ÃABph ÿdRïO&ö“Lpv Á±É¤ž™Lò )„g%‘ßM¤CýÅI„ïRüOy5Í““úˆˆ±õ¡`rß~¤O„âZ¡|$Œ'HÀB4éÇøo=ŸÍoüGû#bø€6õ—á$/'ˆšÇb!„äæXÿ7Lô?J F¢@xÅA”QÞLâõ+_Q}¦<ÿ¿yfÊéóSÜCCI—^—ƳpA{Ý8H þ†^/™ß¦õ«‡Í/Ðßÿo]>pŽàFØïExN¿GëUѤ_)‘|žÚ=åͧÇ{Ê$×£|?‰à+Z7bóää{l½‡Öw(îçßÎ0gH"ù|šç ×£ŸO"u[zô<õ+Édþ+SȸRû¥ï§’|[2±gö9HŒþͧÇ=¥ÏÅ>/ñlÿÉ·S÷§±üîž A,ï`ùÉ›Ñ~Ÿ’Ì'¼†ö_„»fù‰ÿí« ¼„æç¨~ý7oHâí‡bûÚH£y`§\I¿­¯R¼ãAôÜ›äë#tÛ‚­·P;wüOÛ%µjOÿí3ó#~>˜èA¿üéÕÉò¶^Gâ}ÿÿÛólœ#¿KíŸâ%š×ü¿âýÿHÊËh\£úMõ6›Œ7Ísd÷ÿ¼Oõ–gDRý¦Ç´ÿ†ÚWñ¯´Þ÷§m’ÇŽ›ÿ&q•Î;g´Ï’ÆjÇün‘óÙ¬ý°÷GâÕ·Ø<2É{S™Jðp*©wЖÜšÏòÚGúÈðµã[¯¥ý|‰øf ‰‚4à&öº)ÿÓzpÁ_)$Ï‚ ‹ý`!–ôéÑþÚOEãÝ;Ú‡Aò†l]ŽêÉóR¾EñíÓ ¿u`š—#ñ$’[>G²2¬K0àl„ò&Ú_KëEÿ‡˜ãð$xÔƒÔèyZo£vBõÞé?ú?Vpbû(cß ¢ þõ"uHÚÿà@ø)íË{Hð“éë³&xÁ–¬‹ }«”÷=%×}Bú}Ïsà1šÿØIò‡Iå>É;Ø’zŸ¿>`’_öLÛ\¶~,(Sìaû!cœ‰0¶o‰öuÑü˜¯ O˜­g»’:?}nÊki0Z÷¥8€Ö#|ˆ¿ ù_¢×lÔÝH^‹öqyÒsZàAò°î¤îH¥+©«Ñºµ }4œˆ¿ u@z¿D¿)¦ý(l?­'ñÛ®^×°õ"zLq<­+Ó>Zaûƒ/¡ù Š¿|Hßíð"Ÿ£ùGý¡õu’× yGZÿ¤úgKüõCÒ'ðŒŒŸ yN7l~»MÆã.™ÿ‡$`EìÆ†Ì·5ÉçQ=¦} OÈýݸ)(ˆÀiòyÚMü9Å™Aü6ᦶŽEãA 釡ucÚ‡J?Oñ¢;é‹q%óKíã ©§ß#}Í·i<"ùŠïh?½/'i¾šúñ ’WÏ ùž4’7M!þƒí7 øˆ7„O°|€à Ú÷Cóô˜â ÚÿEòµ´”Æiú=Šûi¾„ÅY$.Ñû¡uŠ×èõèy¯©žÓ8Elj®O¡x—>/ËÃÈïÒz,›Ç!y‚2_©‚á?Ì®ƒJ!}=tœh>‡úzÿÍÑç¦õš‡¤óGó‡TOèyŠ·ÙÏ‘û¦¸êA?ÚÌmbëd<ÿ[¥zLÏS?Iù »®†æÃèº"Éï±ëè(΢}¬4ÏqXÐh¤4š¬Ó¢yáÿ›¤óÊJþ²’âÛÿ‡Œ´×¬eë^ì1é3£×£ýŸ±~‘Ø;í;fö_ÿFó ‰dÜIý’í[#¼Jj¬$y…4’·O%ñ“µ7â×Rtv›Ïcõ‘ôE°u3ò;4O’LòØl¾€Óõ{ì}’<Í#²ß'ù/¶¿—ð“$Ò7Aó4_F%{=ÜYõ÷÷É1Í{Ðúû{¤Ž˜(X&7H]ŸòÚ¯@ë lÝ€à!ÚgG%íß¡õšÏ!yHŠçh}…ö‘SüÇöY‘þ;ŠcÃI~“öGSIqý=Š·BÉ<Ñzb ÉQ»£8Æ—ä'iÜdûŸ#[¡ëh?ͧÄñ¥zþ§êØ_;"ü…æ½i¿ÍûG<0+³ ,?¢ëOY;!ýñl‚Þ/Y/CëÈt=å´NEû#iž“­Ký‰%úήƒ ùjÊ[Ùz6Áy”ßÒq¡óDëD†¼Aë4?Jó§t¼Ù÷ùíÈß\ؼo¿}&éÃ_?Hì”ÖKèz>¶ï…ð]ºÎ’ÖÙØþ~zžð°à(A•í{£ëF¨ ¨ÛIê|t~Øù¤ë%hÞ‡àWº~‚®?¡}“ßÑþVºþˆö¿Q\Cëì:?ÒÏBë}l2ÁTÿi|£}}4¯õß¾TŠ—h]·Gâí[¥}lÿ5­_“üq(ÁËtýa˜€?fí”ê#í—£u0V¿Iÿ «¿ÿYÂÖ×Hœ ~‚æ£Èú¶˜¬3£ý.+ú—'Ó¾a2‘|XêØñ·ÿ—äá(þ¢ý¡ìº2/Id7ë_©_¸ÓQLú¹’‰ŸKÀö‹Dúü“n£ñâ˜ÒWEû2èº<[``Húrè:šç ëÌcÉzfjßt<à î¥}Ö4¿B×R?Ní˜ÚgØŸB=„“z:í ç«Õ×WAð;ÍÓPÿIy` é¿gûI\Œ!ë™ÙutT^ÌöñR^Oãá­‚aeæ–®¢öÃöõe´ïƒö9°vJûOÉs„i ˆûyŠçè:)*)Ÿ`ùY‡ÎÆÒWK×±ë·i½–à3Êki}†­·“y ýá$/Ní†öiSDý ÅS´¾}\€€hA^™í¿Ò¸ ’¬§aûxéºDéû´~ÅÖ½ÉüÐxÎîC@ÖŸÐþ¶Dòt½(ÛïEüS2éߣy¥t2?,~#u†T2´žH×ïP;I ù¶¯›àÚF×õѾ1Ö¾ˆ]Å‘uNÔîcȼ±ãIì•Ý'‚ôßи#$$ìþ ÔY¼@x ݯ€Öebíš×WÓõt=PÉûR^Oò0ìõ‰ŽÀ¨ìú$Êi¾’âZ§g×%‘¼Ëìú;Ú§FòTo¨¿¥zAy!µ#ŠÂo 'õcÖŸCû­Øu7$>ÑüÛAô†ÖiþkWñ¤ÿ¿’®£I!q)•à zœLx Íë³}‡t] 9¦}ÆÔŸÓó´¯=‰¬¢úF'Cž¤ÙüséW¡ýE™X8ÒHN:É‹ÐuwYDßÒI\¦õ‹LÒ?™Mì&ƒÄÕ Ò¿“S%Ð\È&þ+‡à¥\âïéùâçRHŽå94^Q^Aêw)$¿›BòP”?Ñz>Ý—â{Ê7i<¦¸‘ío&2Q¦ç²vAûlÙþg2îT¯£IÿX”`ïð¿ëò4‰4¶˜òRZoa×ý\CëQ¬Ý‘õ¹Ñd]í'¦vNóé4ÏMãíëüo| õ~Ú/FÖÛQ¼ÁÆMAÁ6ÂmÈ‹ÙõÑ~¤oös‘<ݿŸÔyi¾Â‡ðvý;y~vÂK¼H\¥û,D<ÇòñvA¡ŠÝ/€Ýƒä…)? óGúúi}¬„À²ëYÙc’GŠ#}\ì:2ÒwCû„Ù¾Z’7¡þ.NÐrˆõ›ìúGºÎžèa鳦ë“Sˆ^±uR—N!umÚOÃÚé¿I'ø“®7M'óœFü[‰Ë캂ÃS¨]{bíŠð'¶Dò”´¾’@úãhý‡ö•Ó¼ó'Ð:Û§Hêä4ßÅæç(N&q›ÅS$þ³ï>Gß§vÆ®7%qž­'‘yeûhˆÞ°q‚àŠ+è>,4Gñ=µ Šƒ‚ø£? ˜íC ë²i< 'ëÙ|9ÉŸS^D÷Ÿ üå=¤ßís%ãÍòÚ¿HòÉlÿ5©/к»‹ðõÿöSRÜÍòkÚNü•ôó×Rüüôü§ï‡öíÐýØ>lҟîÛ%~‚Í“<%å!$Dy5ÛŸ@òcôwi>ƒþ.•Ô_Ð:.»†ø 7‘ï³ý’dÜþß#×eŸŸŒû»$ŸAï‹­»¸Fëpì>t<È8üw\è1[_ y\2.´‹íÓúÏuÿÛWÂö³’cš÷fq6©ûD‘z<»>œò]²¯å§lÿ)í!yʯÙüéãxŠí+!ø‰Æš`÷¥"ý±”¿‡~Ê®ó&þ“æ#h_ýãk?$.Ð>eÚ¿Ì®×#ö@÷³¡û4мͧÑ~'Ì?Ìlbó©)¤^Bž›®kI"÷›Lò´_#…¬Ç¥ëžiÿu*Ù7'•죖DêDtŸ ÚIã&q7™àRÞOú:RùíOÞý]w])4Næ—½’'O#ñ;ä=躺N%“¬O§û‹d’}wØýH=<™Ô‹“I¿]“BpD ©s±8˜¬ïO%õuzžæ3h? í?‹%ë£èzNºîœîWGyí;‹ÿÓèËö°ùQ‚) ûR±¸ƒà[š‡¡¿GqíÃŒ#óG×a³y!²ÎîOÄòUšO%’ò¥AZo Dº0kO4Gúèû4ï@ã.Ë›IŸ(Íû±}Ý$Ióµt_6?GêŸ!DïØ¼­Ñý³hþ€Äs¶~Múäh>“®—£¸Œî—Èúgº¿Ñ{Zï£}!)„·ÓÏÑü?ÅcɤCù:Ý÷ê#µ£R?H&õ@º ­WÐïQ^žDâ2»^‰ŒK2Ù¿"…äùS ²|)ïö‚ïü]¯JúVèúº\Ò/™MpbÑGº/ åOY¤¾›Ipǯ“Fò^t¿Œ4’Ÿaq%yNv|¨"¼‰ŽŹ´ï†ê/ÕkZ?£~‡åId=:íúïzCLpRÁkI$Cù*kߔ璺>ÛŸMüoá3Id;_¤ŽAë^¬?¥ù2ž ü´Ê¹ûl¾‰æc£É¾t_†Dùê°}Xìú_ÂûÈúZ¢<Ý_‚øEŠ÷غÙŠâ<¶?„à/Z÷a×3‘¸¢_òÌØ{„Jn9ºcßGõrˆ­‘¸ á[àHOu=„“ºQ8‰kw¯Y¸8¿‚ÎüÝGê!‚ðˈg—Œ&A„³Ùœ)–ó!¢>¼ad¼DAúž"‰ÿŒ$û¾E$=•¯| Â&GV%[@H’Æä ?› Øpê`‘þ×—Éþ,Áà77^ŒÒeñIXHÐB…‚4ˆœWgëP?mÒ;2¢æ‹–¨1‰ë_¯™ôÂ{üo 2€HéÌûNǼÏé– áWB—‹ICø§[1&Vg Ê>oA¹„w¿zRÚÖa5« ‹kB òÏe ò`榈5ß!̦áÓ™$Ư5–³vKð»ïw©n@ó²$ÏJüJíG'ü(˜äØuwÄßu™´ßˆöõÐ}½‰žÓ¾"Òo@ñD€ Ü<’幞Ä?{“< »¯ñ7¾;W½<³ü#øÿà;øDUÁG9výMˆÎfJ ø$WRÞb„?¨ü5÷k3[…X­öI`ç#„äwƒÆš ÝùVüª%RþZö®«§±y,Ÿe±Z yð.Þ[;HexÞ¿ ¼SÜuê.{‚;¹¾ËÁÙ×ï&ƒgžkµ^œ(x¼]þ¬âz,x¥íŽK‰Ù^;g¹'ÄJ‚‡ì¯ì´ª‡àøu±ôè¬ÏìºÇ»ÉGS™‚s3'r¦"8{žWþhÍ…—}¶·#”Åá¹}ƒZÄÞnà_töŠRp0ëjkc׳ÙV}cžÌ lH>ðñ7ìZî¨õ¬û¦GrÞ½ÌâGš'¤ušŸ¡¼0†¬wa÷¤8˜öC‘uÛ”'Òý;h=‘½Á“,_"ýVt¿Ov¿ ÒÈâ\Rßgë4ÿBp½_º^—∢Olß]ODü­ŸÓuÏtýÍw³ûá’øLë,¿!ù>ÚçEñ[G¤uZ×¢yº?á,ï%ëc躿Hp]°À]ÿÝç‰òbú}º®†Ý•ìSLq »¾–ìëÃÖgI»/2­£Ó:­ïÐ>%Ú¿IñºÞ:‚ìÆò_’Gf÷÷¥ë} &û'‘ý6i'Lë²óÏJ²Ï]OÉæ£ >aóÔ$¿Gë±t=Ý¿“JºO%Ýß“í7 ø€õK$ïÆî Cú‡éü°×'õF6ÿG×a<0ËgÉ1»ž™ðB¶ŸHªW”‡G `Ç86Ãâ’ÿ[Á 1¤‚Jvý>á›I6Æû»ÿÉÏÒ÷“ˆ¿g÷£"ãšDòŽI$oð|žÔØ<=Á´žöÁ±ë H^’æ‘éz¸t²Ï\é£Í ó‘Iô=ì{J×ñ±û9ü—Fòt? Ê'ÓnOᛳY»î'‰ìÿI÷í£¼–â5НØ}É>5˜Ô 0™wZ7ÆÚ#Ââ}êiÞŽÍ·Q;#þ”­ÇÐ:#á”ç°~üõÔ~è~èÔni¿YY÷DíŠÍ+‘ßaóÞÄ_³~‚~žô·±û!ÿÅöwX,(X°ëÞi½ˆæ é~ul¾‡Œ#í“¡~#”ô¿Òuòì>ÿég yIÖ¿QIê&ìçþó=ÚwG×-±}ä}Zw£ü“í!x†æ·i›O'zEû‘èúí$Ò×C÷ë`÷“'¸‡Åó¤~Ìò/âÏéþo´Ýw‡ð@Z'e÷#"ëD“ŽK"zB÷y§zÎÚ-‘ɤ/Œ­3‘~±d²îŠòÚ§Fó2¬_ þ‚öA°|‰ìB÷;d÷O¤ëtÈz¹8bÇÿöî2ªª5ê8vw€Ý{åÞÖ´E±»Q±Å ±PTZº& ‚¨ Ø``Çõx÷ÚóïwŒûñ~àÃ.çøGÙó·êyæ¼¢]ï¬[¯¨} ¼ÇVÞ¿êú&kß)뤔¾«Ê{Nå:]9øjÝ ÔÞïèžÛkŸ‡ë®“•9Êï£}¾¤œG”uÊ~z]?í{¥?ˆî½ö~^÷ÜZë¢Ò¯L×LûãÿÑçCéãþÙצ¬«ý^?ª¸¬ý~ëî_•}3Ú÷¢º÷<Ê÷K{ß§»þ·|gº®t}ü”þËÊs ¥Ÿ®²ÞAY7¡]¡öíõtªv]RªvÿxŠöù“î|¨½ÞÕ½/Ó^ϧþ;ݘPJíõ¢îù£öï5Iû¼,Q»ŽBÙ_¤¸¡¼wNÕz—ª½.NÕ®sNÕ>?WÎÃIZ“µÏ»S´Ïá’µÏÏS´ët’µû¸•ïòõ%iŸ'è>Úó@ºv݃òP×_9¯h×ééúk??Êú+Ýû å~Eûûèö¡+ŸgeÝòsåù¦Òg\û>Zç”ÒÿUûœZ×÷R{Ý©[w«ìg×>_ÓÝ—)û”´÷í±Ú¿eŸ›rŸ£{Τ¬Óæè¼VÖU(뙵×ãº}ÐÊùGë©r¾RÖk(Ï…t}¥•>zÚë1Ýõ¥ö|£ËW~Ô¾¿Q¾>Ýz¥ÿ§özQÙŸ¥<¯VÖ•+ç eŸZœöó«\g)ëî”þöJqÝûjíúåúU·n\ûü*Q{¦Ü'*¿¿òÞL·®XÙ¢=ÿ*ë'tï…µ×Õʺ9åþP·>ZÙ/§]¿§ë[¬ýÿ•~±ÚçZÊsFå<¨»oÐ>çVÖË)÷ùÊ>iå½›®Oƒ²ÿA{ݬô«WÖ‘zkŸÿ*û›•¾ÜÊzå½’²/Bw©\_)õ¥]§¬}©ÜêÞëi÷*ý#•ó¤²ÏCé#¬¬ƒPúf+ó<µýþ”ýxç´ïÇ”>(Ês¥Ÿ®_¤öýŸ²ßMÙ·¦<·òÖÖ©².CYÇ¡ô Rî·•uNÊÜåzByž¥¼Ðõ×®SQæj(Ï9uÏÏ”>TÚëBoíùP×—\;?Gùº.i=Òå(û!µß7eý¢²ŸLÙw¦ì¯TÖ{iדþÏýw´çݾí÷GYw¬ëW¨½>Uúþ(×GÊþ¥ Òwಶo±nö|¬ý>*ï¿•÷+—´Ï•”>òÊ{}åëWöÿ(Ÿ#ݺíz"å¾^ùûUÖw*ý‡”Ïr¿ÿôÁÖ¾§Sæš(Ÿ³³Úçmº~¥Êí}Î)íº@÷ÚR¹×½ŸPÞ‹jWúÜ ¶ï»î:]¹?Õú¢sLûœ^wþÖ¾÷QîS•ýÁJ?@¥Ÿ‡²T×OZ¹¯Ð^/éÖS+÷Ú•õ4º>¡Úë¨DísVÝϵõŸ¤íƒ‘¢Í×õ#Ð>PÖõ/Ô:£Ûÿ¢œ´ó„”}ýÊý‚òß+çE¥o‡îü ü¹µ®*ÿ¿2—K·žæßi¾î<¡œß•ýÝÊyX¹ßнU®¯•ó¶öÏ¥|ß•u¤Êÿ¯¬ÓÁl+uû°•}ÞÊû$e½îÿô_™§¥¬sÓÍmÑ^‡(ÏeuÏ!µûS”y&ÊóDåºHY_¤[÷¯<ïSö·(ëεs”÷¥ÊûTÝ>íõ¨ÒU÷|Wy~ ¼OÐÖ vÿ”²>AqF[×Ê>:Ì7:äÛÒó…n¯Ü²vã]§—ÆZÄ»!3ëî4ﺲ|Xç~xûQý–¿—ùá-Ûà_†ÿƼ`»7Ï÷ÇÜŒ²É˜œ¹AÕßÍŽKÄ›ÛO|q­‡9¿¾½6­¿³»Ú%½v³nç*»Ñ ³„¦½íç/Ç̯&9÷Jõ1cy‘‰á"Ì46³šï¸3†iì˦DãÕÌ u÷/Öxuǫӡçr0#x|T_£Êxõ§Õ¤ug1=uLóÊ϶cjø¨E§^DcŠýI÷ÇQ¿1å܆_q8¦ÔÈáÆ¥­Áä%÷VÄZÿÄÔ‚J¶o;š`ò©q–Ç™bJÜÐëqç»bêâ">.?Óøã}OUÃôìŽgç{‡é³> kUŒÉY¡ËÛ· ”Ó,¦Ÿèˆ‰OŽ ÿÓLjŸÛŸ²¯À»c }"0zG–þ°‡Ë1¦àóS¿ÒßºÛØ•Ý0ºÝ¬÷µb`dFèQ‹ý0²[Sÿùë~`Ę !Á0ÃMr—æ›0ðXŒK-~úO®×®¦Kô)¯¹ly§…èU#=s¯…>^HÙ5Ç1z:ÕœS––[ï1ÉîmV““­jnzµŒ§-82¨U2ìØçýÌïr8¸î²+»_çgu¾ÿíaœëSÜsÔ+¾ô¼y7G#ˆè~IssÝßë‚Ø¨=ŽoïBÀ›Zš¾ƒ@K—!—†>„ Å­v~ß—Wž<™tÿ6ø7½Rô#ú>ì}¤îŸô$=dg}s8ïÓÄú U!œocqµ±Û98iÜ3yZè8y¦r£ ð6p4âH£ä3Áñ¤·y•®‡ë6Ö? N­ÚÜ5ïãÖ+¼¶¹Ù ßdUÿØÍyªŸ7Ì –Ûq½L>MFëA‡qKV½Ù·íúááîK–_IÀ›v¬×ë{ G?·kÇXXpøHsŸ%ñ¸:yæØE¯,`a¯Î< «¡mA‹T½À¾xüÅ€…“nvÆÓ—ëXßîžü4ÿ‚×Þjî3=vïwx—¡O“èCM7£ÅÄŸË$¼Øåõìc}õÑf]tüF‡T<ÕëþÇ)ø#b'e,ž!AÞ±ptOä l9³òãdÈ]¶cžxs/äÕ)û`ud0äfkÜÏþ=oäÞ8üpÕ—FpÓôó¥†9¶pÓ¹úùý;8È_èÕXµr$[›Ôƒ›¬gD¯‚›k“<yý²®å?u€¼nÇ–ülýr‹VÕ‹É»¹OëfŸþ@nŽ]üßλÁ¥Ö±ܼ_ànÚ±nw:5Ínö›”>ºBvêžc~î%•¹øc˜ ®÷ôÿ<Çúd.šVÅt©5¤Ó¼(£:$ßÝÁÛÝ„¤F-³œnvO›Tu,Ä®Ô ¯²bŒ?—/ŒÊ†ˆhó÷¹uÿÞ—,~ïÚÖÂ<ÞÝÌè|‚¢¥±îË (ôÓ¡å\„Ÿ¶¹þ`d2'ââøÜ´·ëÈ®š•r}è`û…o |ØÖ®«¦9BðцÃÎÁ»«ßª7p„¤”Lعú Dû Qïo #†.˜aOŸ]=m„[¤¥?x"ìÛ²çg7_nÝ¡ÿÌwÖ³þè•iÉZÏ®CýM1Á(èàl3Ë1“B«ÒàJ˾ !äça욯— ä]— _CÐØ1ÍŠ>‚·Ô5·ïQ¯B~Ì—Þvn4xÛð¼_´æ9x ÔO >n\ÑÅãú‚sêÝ£Þu»ž%CL8i‘¯ª›í®g`›ËÐgò>¼×ï8®)õ͹۵=ZOËÙè뻞O·p9Ô e¶nµñÜÿÁïðàRÜW¼fýðEÛÐ ›Ýú½Ñ×EÛVÍæþºðeI.®?É«r÷‰¸µØ°VßnÕ`Õ”Ñwãõancsÿö ?a½gÈóÇKnÀ”•Qe GƒõÆO“M¢†Ã¦C;Ǭ.…Íuûº´^ò;Ìj¿ËÌŸ›-Û¾‡™þ#óz”N„ñ¶‘F½KÏãÖ+Áÿ̰ŭ5)Jª‚;Þ¹ûs¿‚v0­¬á"'<¸`ŸÅ¹»ÑáÜ›ñxn(:j<¸Å²*x|Tâ²-«9tzxªàdkt9Ì_ñÝtOº|™àsç7ž™Ùy‚i½t×Ô8?é˜$Œ/°Øh0 QôúŸ­R!¶¨’ªõèM_z¥Ýa ˆ+líí0H´ö¾ÝÃ|$$^=}ZbsHº/ý\R¬0hf©½"Ä[ÚAZó]šécoBúÎ;­ÃÇU…«ß¢ÎËS!cÒÁÁwÿý¼Ÿž{ãe=ÈÌ-m¥·p+dv9²¡FF#ÈœÝdÍËö¹gF—5ªiTÆž82†TÉü³ÿ+¤Nè0?æ5¤¶™{«•ÇIHiªŽjâ´·&j’ø÷zÏ©†û‡B ˆÚ#ï™=Â~»×hú= ‚ºŸü±±;xލÁ·Þ L½.Ý-€ç²1×ö çͶ¿k™Ÿ ‡Ô–5‹ËÁ1êÈë)¡æpv¼GÒž´RðŒ<ðd‹ÞpárAKÁï'êιÿ¢BjV ïÃqʺxj• ˆ˜þÛ¡®UDß6­9vò\ˆQ]˜”hf ±‹º47„Øý“ö[^ ±Ç^¼®uæÄŒu±å ç '½ù˜ò~†steÀEÃ…܇xõóÃïü4‹Ó²w]ˆßyæþ@TC\N‹.õ!6¿oäÉü;ógr‡£¢—^8½Ö"WÝxá „[;^¾¡_BÃÚLOÞÚB\;0lX¸\’Tªª²Ï–ºnH¨ þæ»÷²0ŸìS±qo€½º9°j=ølkÒ¤³Ûlð\“-ñÇÃàÜöv »ÀCÏfóÜ6ÖpbÃÞNsÛF€[Ë-gNøU…ã³Êlרn³}yÿÊ\ýºÎ{ºì8.©Y©eûÞàôfüŒÃ_¯€}t;!ni8„[lXßÔì¯éOxÜììºõ¸er«,ZÐÚr:8H;δ¨wŽ„ÎØùêð:°_ÙáQŸ~kàà=×ýL`O½§w £¬Í©r)ÅàNsúD»ñVxt½Ã{œc®j[/&×»=[b1¦î{¹µíõÕcqßãRùìqc´9½dHõgè°}QÁ™I€ö›“Ví]¹ígY\ТM6ÞÅ0]šzáÓVÿx³¨{etktÏÐÛO$ 2?ãyôÿØ4¼†µ»?|¶†äÛÙy~ǰsR,öNÅðø{] ž]ÇÐFçv8ù¸bøÚ+u6ÁЗ;ô+}ï…¡Ë[ÙõXÿƒöôÜý92ôôû]hŒþûû›‹ѧm רšè=Å%»V\)z¼ákò/©—MxkÐkê“îù<ô|󱨠yOôõ{P5gDgÓ‡»ÔBǯ ÂöÐ5Y¸Ùþ|3tw™5aNõ2<©Y2c|N:ž:4î 7ÿ=z}Ò·Ñ/}Wäµè瀋 ¬†ÿÁÐÙ·Ÿ,À° <|&ÅbðéáüÁ¬\ ^­7À0r)$ê_ôq˜€>õjï:”} ý¾›ê3¦ zµè›n×°6n\4¡3î·œ‘Ów^"Z<ÝóDN€ý®wëÌx¹œî¶Û ŽkwÝ=SÅŽüh¸bÈà8óV{·W÷Á©}Øæ'¡?7iCgmñö½…UµÌ&ƒýŽË+-¯LJosÛ l ÎGÜÏ´½œÊßN»Õú+¸®KP×OÏNõLîuºž©× …”­páæH‡çï³}wpy57o÷?—oÔ_ >=o_Ê*ÿ ½Ü* ÛÞ|:Lªy· øÖød˜jd>½óêœÔ{ ÛU[ëú¹\|¸gõºíÙà]õÒ^§¬ßà[³k`<|3SÂrLSÁgyÌ ±îjðî»}Öu t(ÚŒI5;F¶B×öKëØ\ú‰çLJ¾™[:^H»¹ ßªKx.Ý£×Ç8Wô¹¹Ã™¯VŠçÜÝZÙÏÛ_®~¦zÛU‹ÖãÔm¿OÂ`½—]6-Aô+ù:ôø—¹xÙµN™Uç™ès±Cê¿u{¾]T϶[ù¥µoËvüóðsôÞ±­l7\>þ¬õô=]áò¢YæI+¶€ßó°ö?Rwƒï’+‹žZô€€± ×ü |©Ùýû5•àkp<ÇwJ­ÔõïÏ[܉êi™ž o¸Ú­œßu#_9öN™y4HáêËÓa¥gÓàЙÆùÞÓòÀNÓkyß™¹`kußhËî^`³`gÙµ‚ƒ°yB݃ ­LÀf΢÷=ã‹`qÕÇ…VC~ƒÅ;Ÿ\ÛšE°tå™öaãßc‡ÛW-ÿ•¦Æê_›íÅÉ·¯Ôø=¹Z>_ž·åÉÜÙbøŠK~çqOÏí~ãö¡mýÑMpA{§ÇzÎD«¥Í*Ÿ²OÀYo“Ï,lˆÛ¿E·>k| würq³^¶·ô¬’!?EËŸ“¾§Çl@+Õ%·¢ªs1ë„Cõ¢î»1ËÀîI˜¿^ÿ1µö¦½xݪ 6)NÇk³Úž½õ÷þ=ü|øÜi˜qûʳ~=7aF§Mz]ûÍÀôË×›%…½Ç´Ã+ÊÅ´m+ª‡G¾Ã´:—'Uo‡É§'¦¹§br3¯eÍ:8câú’1Uí;`Bµÿ >õo]þ2\ué5ÆO1¹;ào_qÚUÒ=a=ÆÜÖ6âîgŒÙ™ßÈeÆœë|ÿ‘AF»>¿à•€ÑÜDŸn7,0Æ©å÷éFN;TÕB>cõÞœÔd|ÄØ N—z5·ÀاÅsZ|n€ñ•­ŽÞ;±c}+óú|£Ï•¬OÃ(ë’y-Í;`D½²öI–O1´ï´G>'Ÿ£¿õìN½ôÛ¡{·sUÒø^xúë‚´ßxºJ5ûYû I—vQïã‚+Tù\à8În}³phÓMàuuP‡/·õÁçfõîg‡…C@çáȃÔÿ†ÝãæÞ<£Áë:»N@è±f>ÖÏ×@ø¼‚¸:gó!⢭oáói±oùíŒãÕ!<ßìó‡‘Ù²Kù¸GÉùg²Ë¾¶m!òjz”Óˆš¾Ñ«Ý¢Î™R}U·eí!âé°¯Òõp¯°ùÃíkÞG_ÿWÏÕ¶²¶µÑö‡z¹åÄNñ ¤–É•ø‡› ¸hÞÆÛ+ÿ@ýmg;Ó pyCÿ_Ö;;Âe•ØxÍS\™qËü(x?›aÞôzW¸4¨Ð©àÆðÜÜ;yEp/ðjº~N}8'w‹kXîçÖäë%톳×> ?jú÷ס}3uƒipöMhRÌ…>p¦Ï¨W›sàÖ¹ÎéÕÀÕ't‰“Ñ[p}=âüÑ=ª¿çéðC)†€ãëFÖªät8–0¸õê–~pp¦s¥[ áÀ©Ê“– ·§%;vˆ‹ú^±Í:öƒÅ§¯œ‘7ŽÁ…gÞÌ·^>‡|H»O/úœwÈe.±*ÎrE«€Ç.º˜ááò7s¢Ì§ }ãeßZ–9o< =Of %}¡ þï³ë^‚{q×ÇO.K„{ýj„V›YòW~RÜ ùu®½ßþ îzvp¼~íÜÿnÀ¾Ègp+ê›Izµfp«QÓfë_.„+Z»x6xo·ß^Rú}8 p˨b|z¨géX›|j»{ý¦‡ðéÜ.vö¿·ã“ê+ç[=Á' jø;7uÃâÇ©sÇ.;ˆÅ£ 3÷ã£×{¯ßíƒóFuØ0ôYϹ7l4ban›9Kž,‚Ô+ßꮈw ó®<Û×ï>¸X¯Ö°H¼}gÊ›ñÖÝbóƒ5˜—>ÇceÉ,Ì»—u¦Ë²§˜gi·9© ?æÝ²]að®>Þ²=|ÍàïŸ/ïyUÛ«œ5Þjõ«_›ü…˜·fO¹Á¼@ï€es#0¯Ñ¼6órÏ}¸|ê,bî·A#CVõÀœMMm¾õÂl£o‹Ç™7^­„™+–•î.ZƒW×O?sí ¦v­–ü»ÆåŸ·ÙÒÒ£yz†z>Àà_§Ë0¯±EtvzÆwPÏ{Û|?7ûVú ·”4?aäx lÜsßÞ®y\¯æˆ3-ÇG·i3Cáâ·—y{͇‹¯Ú4Ø7³xßú°äí ð/¿hþÛï7¶¯±´þ„`ƒfc¿‡Àõ]küÜ aRl‡¾xáÙúz=‹ÿžO<Ì¿ýÂ&¼Z/7ñ‡p¹oSûYw!ôÄDZ;“ 8áÈ{ÇöÏ/•&{É{&@Ð Ãíþá ÁÿNÄ”*[§IRy¨åSðYÔsÀW¼ÝŽùô|Ð.Nñ‹Q²|~.=Ú*pøl^[~ñ‘/x^òݹnTeðX}¦W«¾]Á¹Þæ‹'6u×㥠x€½i`³~#SÁ>¦ÿ#ht\¦{_®3\ŸÍhävÈ\zì§÷ó<¸<ÿ°ûŸáàôDj™ÒÕ–ôKéø ¬Ë3æ·yl Ó 'œ¨a–[‹ww:R«3l0rÝô}îT˜ºÚF¿ÆÊ80‹m%  ,þÙ~ÄSï@0m? ‡S© .8'=òs “Eãz›æù‚ñH—±«¯a—2áéêü¸×®W÷šõÑö㣂á.àá¬âç}%âá8Ãæ/ÌlÑe à½d#:Ô ˜mù£:Çᣯ–€¶.–ÆÃp=nx¨æÄ­{qcÚì¬z%qó“‚ÅÍ+ïÄnW‹*í‰Ä²Â:‹+}ŸˆeA#jÍ(¬„e9,ë5 Å2'[ïòÑ•±¬¹‹aWa–Æv6:í8ßJßòaòQ,ɬºþØç•X2'÷Å9·XR3¬×[ýfXÒrÑÝ+N€oOUþî}Ö ßð¼÷.ÝŒ¯~Ù>x‰ÇW«¾ÌoZµ!¾@Cÿèø¢õÅ ÖoãóÈ.ª»{ÆãsõÌ©†ï'á³SÝ÷ìõ©RÚ Ÿ-­³ðöÔø¬KO¯J¹øôcrï?þ2>5KJèò6 Ÿžýõ”o]|ÚØøüÌ.ødybôÌ£žXüܬw‡C÷°8>{üGÇ-ø86j⮈>gu)ؾµŒ \ºP¢>g:öö‹ºæMY–ü\oûbS:‡™A­|ËÚ`ÁÁùÆ3R:a~›Úùí×ÅÛΩ¶Ùv¡˜gþH/³´sŸ}XrJñæç/٫ۼŋ€3»ýlðƶ>uÜ&bÖ˜zÂ…Sx=÷GŸÔ˜9ûb§/KL÷;w¶Ði¦ÙÌð1ÑäaZíËÛÿº’"µî]²¯&>ç=ÝÃDëC̶/ÅÄd‹+Ã!&,¬,œ¹5ö¼[Þp&8yï­ÃïKQûªýÆør§ØVÂgŒ;Üpó…j±¿ÝwºÕìʈVíõw\†±+l7„Î\Ž1Ïœ,ÓÂÔx¥Ñiö3c°FTIŸ®e¦ºúadGŒZöiÞÊk&ùÎã±±©!FOÌ(9Ý#—%Úú{ŠaÖ3¶ÛÍÂÐÁ k­n>CNÅLœpf3Í^[²éÝßûϾ½Bô‹¬;ZX“‚þ{×óͬÐ{æö¦'Ÿ6Eï~WO­3=¿Ö± rü„ž‹Âßïɳ@ !VÕ>øáñÑ+Í<~‡§Œœš,­ZÝg z]~h :]±´yØHĽUòúYáÔ“/Æïz´¦L²üö“¹°wóºëË,wÃNkÓÁµ‚ß¾¢v+fDu7í˜>,ÓŽŒö€•?ŸÈ+ÓÀÆÌ;ÕÔ¦±`:Î°ÝØ73`Çë7á?†½‘!‡.86³ìýÌ\;À!Ù†Þ `÷‚‘‹çŒº yëúvè5n]è÷óõˆ p»Ð eýYcàîì+Sº6þ{½5zgÎÅáP<×þÀ®¸ï`<Åûþð [ÓâSUð`ÏÇ™ú‹$xPÚðAãéð°Ëän!àÁÕ_ó—%åCa»võ»~« …¿‚Z§- E½Ïi´ 5[ú#æÏ(ú–;<}H<ª;*jżþð¨å‹†ó"B¡Hß·Kþ]w(ü󶿝‘ð°¬mÂÕð0 |kß&¸ÿµy7Îk Àf׉÷©p/¾Q=ƒ¿÷·ùË[N\±iÜ=ú°Ý戗pgÎ1‹HƒæpGðx¼pïT¸Óãåžõ-ûímÛw:¼ØyþÆKìx„¼UyÛ› …ÜÚÓkü8 n†díÝÚ²%Üœö~ÔÙ…cÙØHš»rŠW¾k¾7 rN?~>¼õbÈ9¢÷gï,}ÈiÚð«æbdsj¯Ê×ö­=ƾÉY7Vž¨æí Yƃ¾ÌÏù×oªNš»¿€¬*ýíg™m‡kß¿Noý®yÌÝ™¾f3d¾XÇd·7d6H\’ù¶æßŸð½\Œ ³ÇZËJ¬!cä¢y…ç¶ÂÕ>þºú¶ƒ4ÓÚKMï„Ô‡ù÷}û@Ê˾Ýú¥ $‡©…JnO iúÙ5ck&@â¸FK[ý2†„?½îDÛAü·£6¡cãàJŸÛų—:Aœ°²þÇ!6íÊÂmþý ú‹æÂû³†idÐôרˆìºcíV¥ÖüÊþ‚°Ñ‹Æ %ÖËÕêa‹©úÂÕ±»ÔB6EXŒ^¡µŒ»ö¿ A?U¶Á?%àò¿÷W_[Õ½5}1Œòö ³¼7}hâ^ |œ‹Ž-(Ÿ¾ëÙÌÙî z<‘ãÓÎù›6^üÎv·¾eZEŽŸsÏu}—.‡Œîœyw 6^ÖÖÒù,±™¡?î–;Ö~•]Y\ˆ»nÕïòÝžc™gy+<1ìR¤ÝëÉxfF²¯IÓ&x.™õË^ƒ—Æotpè:O¼¯|ÏÜõž:»ÿz³v»ð\¯qýÍ[è©WVwɼt¼PåG×fÓGâÅÅ÷›Ú­Á‹ÆŸöŸ>Øò«üLZfYòÏïÍ­wUC1*îÚßyª7înÞyjÚØ‰p·Ù–ŽÅΣáÎÕ&šäSíáNŽÔ;2îîzÉ»&„»f™+FØAþè¡7,¢L!¿Ö±uÆm¦Ã=£÷YvFp¯`àœw&@Aç`uç壡`„:{ê²Cp/dÔV©à^âX³#nÀ=¯ÛKô­½ñ›÷®˜lùçŸ?ÃÁ]£®=Í£áî𚛬þ:rGÞµ¤åf¸Ý»{å£7 otá =_È]µ“딿 nœ¼ìƒÑÈi°zIæäUå8Ô îí7pcÀ‚Ùzß>Àµ,·Ó6­Sàša‡uš\‚Ì.=òË+åA†ÑÝ;“×4ƒŒìê¦õkppmAÂëÑ/ãÓø˜çá\:ãý²9éÔÌO§Cæ”J'ÆW󇌆cTÝ»M€ŒŽû·>[ñ÷÷±ß3"ö8d·œºª\֩ÜÚÕ!}•õàÁÒïowŸÛÒ]âþÞ>@Ú][m8i³:éZÉR¥ú­fô€Tïåu«·…”ìYß{öƒä%wf×[¢d¿„FÍׇ„aõK׎~q.÷ÊSôbàÊ« ­Vv 1›†>ÝéQc Ë;:ðª›7*†Ðàä=!sOCÈÆßç¯Ì+¿k…W¤¬1pqæf—#iSÀ›·=×{Åið’]|‚»Ôƒ“¶ƒ«lTÍ—JscŸ,±#w‹}÷z®«¢c3æï[…X¾EÀ¼Ò%·iN¿áˆë'Áuà`­yŽã¬‚ƒWnºçÛ?­ž»gÂ<°ƒç³;omV!&µ;OŸ[ÇJ0Ô®íþ)ŽŒ™S§qgØ8ÔËËgöGØ÷9Ðýpò°Œ©|cd§l°Ò+ÛlLØY§ÅÑÓKaÓ{Í«} mquJ§nën„Yç6,—î6A3aù®½Eƒp^K™÷ýAhûÛÿ]„^Zœ§©çj´;ëYðeD<åÓ,ʪ s}oá!&àfÓ>»ô‘pGjÀêžJqñí:Ž®œŠ{óÞ^6|ô×$U>±hyw´ŠØÕ¹ìt¾8Ñ5°KÞ#|q±q‰IlW|~iwºmL|þãQƒ Ÿ§9u®TÓ_¸î¨÷t>¾0¸ÖÝÞò0¾[5u¶Ä—Õ’Ú'ÇN£Ïzʉ¹ø¼ûë*•§Gá3Ôz›>Hø´Û M{ãC¯×_oÂâ~{C¥^+±xîÂ3s¾âã>5 ÊñÑæU,\ÿÞ7\·ÈÏIƒ…¾ L{W?E†ß(É܇…+OuÝêêÚ^2ž‡…ëÅ7k8àÇô;…ÝÆÔ.“s°ÀåÈÃ÷Uîã½-f÷âöÆüQ×o52Æ|}KO“axçÛ’f1‹<ñNÞYÎmðvµŽç¸†·ì¯~Ž9Þó®ôxÜTÄ›1¬®ºs¶Š¦á=|0»_ÖÞï-0{WÖ²ï†`ö´ß•vǪ0ûÐ×ïyÌ.èÔf¼·ˆ7ŠKº¶¸3ùïýÕ7ûVQÏ1G5óU‹ xÃðÄ—¨¹·ñz½ž_-šâÕôñ.æÛaÒîö‹Ô31¡rdáìŒcûiM­‰)—“n—õÀCçîßš3¡7† ”Ý:]ì…Süš ¯nÞ«š÷ —ÆäVŸ±üÛùÛ×»Þüøò×n]_€ÏÔÖÆ!‹ tvI‡—+!Ä\œªßå•è/îzÆBvï z¶é_`?©„×p•ž¸¾‚¤Ú¶éý³>Cb Ø^À ˆRGïwúH(ìi™ûÑÚãàá=¯Â•‘™êÈS“!zíãØ„9g rBrü‹JÑwÁõËþq|ÐéNÎ5+49þ#x^ð+±ïy&¯‚”ñ sëƒÿÓ79ŒÓׇ¡÷mðXòÓæ“kx´–—=1“¿Ê½·ÿЇSKd%L€“ÞÙU7¶Líe¼4£&8öïÔ‘Ë8;ON¹ß±¬ÚÚº€ß ÷|ï——í–ƒÓ›F8¦Õ“ѾJì‹DÞí†/_84a8Zß»÷ãà–t\é8Ó³ÓXܽvLGˆhoi8á]‰:”†ÝØ’C‡í³Nìt Ã.M«ÅÝÜ„Võ/<êôöØt[?Ëw:,q!¬?ׂj&íÙ#ãµâ‹iŒ­1Ë5ºÃjÿRÌ »XýA¸9f5Þñ<Ü¿Þx`áuñ?f?O7XïëÙ×{ö»5³&^ï<­ŽÛ¾x-©pÜ^ý0sîŽ2ÿâ˜ùñ¤ÐõN$¦¿{äQ;e<¦-½>ýÁ£DL¯²úBÓsß0½oÔ–Z—aJTƺ(~2¦Ì—óäa8&ÇL_;=SL­,Óë‚I£w9¼’0Å|ÏÙJòQLËŸÙS­:t¾ñ˯ú›8»®œ‚׆ÜÜXó³®Û:§TÆlçŒC?,Ɖ—ªMì{³¥Ï‘½~cVúÄOU>NÃÚœnÓû0fm’»ûçOÌpúq‹Þë0³4_ÓkžfzÏÏÈ3S./”ÿS_ä|Øù榴Ýî×Îï˜8é_£¼RT3úðŸJy.¾Ñ^CŒ3pCÎüŒñŽ«ú£f FÎ~Ý#ä -Fnþxã¹×CŒŒì{ùÌz ¹F5æ†Ö š¢Ÿ}Cì(­ñí Ýü£Äw4Ï^o±bA ¼Ø SÏOIx|w®cGó\”:Û¦ã„ó`UeÌ<ÐNUUâ}ÜNôivÓѰ?œåþiÔ  œK’æ_22‚€ Ǧ7ûº¿\ÉHoR5ð5¿jÏÓp)¤Áœ!f“ÁW­YáxÁ·“wÝZóWÞ´òñ«à‚»àünì¸X¬êgf^×—­ó:Ü7·½ãZ{œyx—íT=ðèzaÍú[«àŒ‰úÇ“ÛkÀ½ÒÉQflƒãjÃìYçÁ‰P•£«ã&8~xg»#Õö‚Óæ[–.¾BÊž›¦mÁyt¥ßÕ‡‚û3¦Ý݇‡ÞXthleØõ¼ó›Î{ÇæZ³ëÎ,æU&Üm¬Éyå 3³¢@šæ}lP•,Xý½af»¦ÏÁ¨$buÓZghq•K¸F}êi'µÑ!¼Ïä­VçбJ¯ÊQÍUè°jà¸ò)èÔ6.hÒ`?<²áÀg÷Ôåh[ºåIU;3´ŸÔqÖÅ ñ k^ÔûSÕp㎺eTp·zídþTnk·÷RìJÜ4{a`§õ¿ñËA“V;L—à—ÓŸÿ0¿`ÓíS.â—óuŒæ<ˆ_¶o‹L²Ã/—O7žçÚ ¿ÌHØ­.~1 üóÜß{®h\^g5~~õ¢q—ï¥ø9Ø!áYâ:üÖÚÚÐ}?~6Ù71µ•?LsÖŸ ËÎ)wê;˯­pPy‡åa#¼ÝiånV>%ã°|·»ž«vbyÇe[ö~.Çr°¹ü¢[0–OZØgÍÆ«øéòÏE¡ŸÃðSæîî îÀO±[m×ÚîÆOÓjåå·ÅO&dÝýmŸ\îâ§»ï.â§{†‰;}’ñÓÂK.TÂO-ùÔw?žã§Áï»â'ÉôZöÃ"üè£1ø³?®~5ºáêüðæK‹·=:â‡âa{㇭=kÕßÿ9mµááq|oÛ£Pä"|¿mЮËûêàû¾ï+ÏpŒe?B~žõ{„eá·œËoXc™©EŒô±:–5O²¿ÄRÝzüÉÕøNõ¯¡£ñíÃÁÎ^w~ãÛÞ•&øØ_ÿNzûhb¾êßÕyôÏøÒ|bJ‘¾7>ÿ}~îê6ÑøìÛãZ5ýⳎ§[\<ÉãS냞òñIÈ€ˆool°¸<áƒõÉ<,žº¹Ú·õÙX\³©æÞÏÓøØt¯WÓVoñ‘SgÕ¬º¶Xtà‰ÓÙ |øg|¢×|°*á~ÛÕîXp§òÀÛ¾SðÞ«x•åó¾˜ã[Jݲgx÷¼Q™wÔ#¼£wÂðËÏ(¼µí÷Ë5¾ƒ0×O8?!sÖj‡~^[ÛÕ¨8_¯õÚòÊT8¿#'¹àÕDð ”kÛ ƒàë[“V”]†ðk5SwU1‚¨Ÿ¿çø¹.€+iW?µvž±ÙþMk-k˜3Huð$<Õd#<„ôjnoz¼éÓâ϶¹Ñó}ºN™ž2ók„´Y½ïÙ.NÂ{½­MžÄ7ÂüYÖ‹¢vÎÄ‚–Æã£f‚ô¦#º,«‡÷<¼nž—‰÷’ǵvm÷f5rúÙ> ó‹rÏênˆùk¬'ÇýtÆ;÷ŒºOÔTÅ;£ˆÌñÃ;+‡­‹·íw¹?cÞú]S×/ó¦Ô[7åøÌ üöAô s[æ5º{åïuÔ¸&G[ÅÜ ßòÏ8vÃÜ·ü=+c^³ó­Ÿúëa^Üã~G^'á­¯Ž³W-߇·§÷›hÖ o·«÷üð´)xËòäÃÍâmïy ç›Øâ­Z&iÛ¼^à­>Á9}–^À¼&/-76À¼½# ìX æå_)0·Þª²û¤ƒ­Þüê»#úñ>̽1´”ß…¹ÓvåÕ»:sŽWùÖÒà-Þ¢›®Æ¬kå/#ÚœÄëé¥û¾`¦ÿ“O%Ñ+0£³Xtèõ.ÌP¥d­Hº‰WO›7¸uÇS®rx_cL©[–³í#&¨ÚçBétL™¼V}ªŸ&Oiût’IeL´ò.2hÐ W ë3£~KL¬y>o“õALp›Øçå÷š˜pä]›¹ ƒ0ñ׌!å[bBל^© 5]Tðã†îN«¶+c£î™i³ c»ž­{¯ìêÝ+¾=Œþº 5Na´ñ$AïS FÕ=lÖÝü"F$Ï<ÖªES¼ägT¦©ç„¾ë¼×¿œ‰—º8-Úð</ÞèX×l’ŒúyÎøj‹C¯—'ÙiŒÃ¾wú òo˜v*|l+¯u¸­ÕeÛÒn«Ñö[]¡é_p›U={ç7ñ¸w` ÿ;`ÄÅ;·Û9Ù­=/Wÿ6‡ÝöÎU²ŸyÃ’#3¸èe°n¿nÒô-˜?Ýo4¥K˜7µ‹^;+Æø¯yb¿ý\SãKo0ºVum‹Ý“ahÔ  » ÅEC®ßüƃQ[NE”VEWq{·îžqŶŸŠ^Mç>qr5ÁKßÛuu¯ù½Ù÷jÀãùKÍ?ä!zÍ*¼¹/¢ß¼;ß¿Uk€þ!‹û=Z‹AÍü_¥ÇànµÓ¦;FCa¯þõ.‡ßÖø'˜FÂùÅo:@ѱ!)}Ï…‡9þ|>è ùVåÇ##àaÇewö†÷2*·t© |ï-|›Âƒs:Øô„û+ùýt÷€‚ÀCNÝ< Vo^,€{k?üønùA&kGTnùÛ>iNžÏ»­øÓÝm>ÀÀâ7vïàö ¿ù?Ãí†9e?ç»@Þ»—5GuµÜ5*®ÞÔ£óçÐÆEÞk »|õ¦Zvóà†û%›“!“ázáÇzZC†å«Þz=€´%ñß«”õÄò޾½ÝVÞ 1³‡¸g Çå–@ô§àfv„˜ÊY“L.Œ„Hߨ}ï=†ðˆ´]fö6»}†°¥ „7Èú^ÕËÂg99†€ˆw'„¨µÝk$u[ ‘%Ž ÎI‡ˆ–­†µ²< ¡Æ…¯ƒõƒ0ƒŸSN¼†0‡´Eâ•ù²Õx…go¸¼ÑNÕàA^÷{†“û!˨µÛǯ{Îï\m\¾Þ|éëEz´Â¨ ÷i [·x0ù)|\÷Äføøÿi»­n(ø58ýbp‡ ðÞ›yî½Àùî #}Ï´‚ã7C†/µ½î#ºäÜ ÷jO í ÁaäÓŽƒ*ʧüt=Ÿª°1\e£^˜ +K¢[Nçkàº<ßH«îv¸¥§ûöa5¾Àîûïê± ;óæSßìÅ #2';ãÜšn²eàyÂ?xÔí°§ÐmåôMÀ¡×±×¶õÌÀÞ8¶í»õÛÁeký’…c·Á‰wÙ7LçtÓÓ»EéΦ«,­5Nuî¾¶ý _8k°-n×ßë¾*ÖMžÇFÁéeNª³ÁmËç_ #85 »Ôy?ì=!·í±-¯æ|¯>é{±dCßž8°ÃJ>NºúòkÔY,–[γ9ç„§l÷~œE^iúM '`Á’S“|ë‹í6F ›a€ù¡£7îÄ»mÕ1q<·?ŸÞñÊ$oý0¹ßìa_Ì š÷•¯\oöXôeÝ Ì>z·Þ Áìk¼rvÁìjÆÃ$½á˜½êŒžgŠÙf?Rê'$bNû…¹×Xþ½ÿªå>̳÷Üß]¸oš®›–€×ß|r¦<^Û9>1ûøeÌ4žñÅ?º=¦»,5›ØÓÝ]l]ö¯.^Ûóžq+LdøhÄùæ˜zºÇó1R}Lï0õÔ¬þ昒kÿ{á‹3˜œÜåû€}1¹s»ýÖîÓ^ÃOM±Â¤?†•ô¿¯Â$ë0—Œi1ñÃãVootÇDçc?gN¼Š‰mìÇ4ÑwÄļ܃ΕR0!õžWH”&ÖÑXîH ńɮõn/ÇøJó «oš‡Ñ1 Œ5Y‰W6?‘ûx=ÃØÎÍÎlÎNÅè~­·ô×`dš_ÉÍMç1jø1»å®ÖîöÖ(ð茈² t Øîÿ-ÈŸ‡QN¿»ï,cäh3®Ö¼÷ã’iµ'ÃJâvòÃöî[ñÒw:;¾fÛþ—”èéd×ýêõÚ¶Á¯}6Î7˰-A¯yñÙã£gl'ͧMqãóGmЪÊí– ž£Í»¤6^E]qÇŠoµ5Å­`³û7¥õºÀ˜ÍÙEMcÖ˜qßž¸±u»€¬ÇÞ`gy?-¤c9XÝRmßÂ0òéÏë_fã¾ÓŸã× h>¾}à•Ê1¸¤ùŠ©÷ pG¢šÎ6ǃ7Þí|Yi,.kåðÜS/p¯ã®¶#JÑRŒ²ðZ¾­ŽË#žV³‚Óšm„e ,z}ƒéN¡} ÓÆáÎðÎc3Ô=ÐÜiò„õe=qóÃWë<ÎÁíçâk– oŽ6ú~ü‹†´²É× vÏ«ýü—ó,°müÄqasØÿlaiÍ_Áõ¶ß³w·zÁ‰É¯¥Ö9ÀmýÅ€kç;êæÑ)ûµ•¾öJ¿e†Ò§C™«§í»­ôŸò×öQúb)ûyuýìµû)•ý»JÿûKÚ>çÊ>\eÿ´Ò7Ké¦ô[UúN+ý–ÿg_e_¤Ò×MÙoš¦íÇ¢ôPú©^Õö½QæÈ]ÕÎ%Hùowbõ£€ÿÚÌuÕõ¹PæÌ)óÖt}Ù•þgÚýèJÿL%OÙ÷«ý}•þ7º¹Úþ^ºùÚ>õÊÜ¥O“ÒçL™O ÌÁRöŸÿÛÖÚU×§I·¿_»[™;¥›kªí­Ý'¥íw¥ÌñÑõµVú)}û´}½•>L—µû‘µûU•¹ʾw/íþPOm_eÿ½»v¾¨2Ïô¬¶•²_Z™—{N»o\ÙÇ®ìwWr”}äÿs޵Ò^×wG»ßÖOÛ·A×Ç@û¹Sæ>ê>ÏÊ\zí¾_ݯkûò\ÒΕ©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸÿoëG·N™c¤ãôßT»õõtsí”9wÁ_ÿ nÔÍ©W¾OºÿÕ£ù©ÊÜÔÓÿ lî¨ûkçæ*ó[•9÷Áÿ•Ë¡ûüo€òÝÜûPíüé°c›C˜vt¸v³îû­¨Ì§ÒÎÿ﫨\QÚù’±Ú¹šñÿÆëéæþb俺ºÑͳ×Î=Væ3+slcþõ¬›ó}E;WV™3®Ôsü?.êB‚v®f¼vN»2ÿ1î@„íÜÕ+Úï»âW¨vntè¿ñ¬ƒtó Cÿ•a-û7>wÍ9ÔÎ?Tê$â?&÷øBDÙ¿Á™©?ù_9E—ëæ–+õ~àß HûÇ… ûýÂÿ~“G.WSiçn+ïŠÃÊשÌV\ÕÎ#ÕÍÙÕÎþ7FX¦y¾ÚzÒÎ_VæZ‡þó¸Â&ü„ aÚ¹àŠAÿýµšüõ·0÷ï'g þ÷Ç´w£Ïïß‹…ÁOÝç8øß˜ÔfbÙå¿Éå¼ÇǩΣ"²ùo`¸1jç3ëêsпÒÍÉõÓÎ묨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸŠú©¨ŸÿoëGO¯je==½JzUõjýý±Úº…k—Zü=hø÷ŸZÚYc±™åº¬´?­ºqåÚ¥ÚãÊk,tGæÊÑJÝ¿[¹F÷«K´GU,u¿ü÷pÍÿȯµÁls_æk¨þRû •TʧðÊ ˆÊ¤ÈÊZ9Ð(_‘ª¿îH¥;âtG¼îHЉº#Iw$ëŽÔº#]§Ëàtœ.ƒÓepº N—Áé28]§Ëàt¼.ƒ×eðº ^—Áë2x]¯Ëàu¼.ƒ×eº A—!è2]† Ët‚.CÐeº A—!ê2D]†¨Ëu¢.CÔeˆº Q—!ê2D]†¤Ët’.CÒeHº I—!é2$]†¤Ët².CÖeȺ Y—!ë2d]†¬Ëu².CÖe¨uj]†Z—¡Öe¨uj]†Z—¡Öe¨uj]†F—¡Ñeht]†F—¡Ñeht]†F—¡Q2ª¨ú÷§CrtÈÓ¡@‡"Jt(Ó¡š)MEi*JSQšŠÒT”¦¢4¥©(MEi*Jã(£4ŽÒ8Jã(£4ŽÒ8Jã(£4žÒxJã)§4žÒxJã)§4žÒxJ(M 4ÒJ(M 4ÒJ(M 4‘ÒDJ)M¤4‘ÒDJ)M¤4‘ÒDJ“(M¢4‰Ò$J“(M¢4‰Ò$J“(M¢4™ÒdJ“)M¦4™ÒdJ“)M¦4™ÒdJSSššÒÔ”¦¦45¥©)MMijJSSššÒ4”¦¡4 ¥i(MCiJÓPš†Ò4”F–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–pd G–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–ðd O–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–d‰@–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–ˆd‰H–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Hd‰D–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–Èd‰L–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰š,Q“%j²DM–¨É5Y¢&KÔd‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²DC–hÈ Y¢!K4d‰†,Ñ%²D£³¤ªª¿“ÿŽUÌ1Çó̱À‹Ì±ÄË̱š9frUL®ŠÉU1¹*&WÅ䪘\“«brUL®ŠÉå˜\ŽÉå˜\ŽÉå˜\ŽÉå˜\ŽÉå˜\ŽÉå™\žÉå™\žÉå™\žÉå™\žÉå™\žÉ˜\ɘ\ɘ\ɘ\ɘ\É™\‘É™\‘É™\‘É™\‘É™\‘É•˜\‰É•˜\‰É•˜\‰É•˜\‰É•˜\‰É•™\™É•™\™É•™\™É•™\™É•™\™ÉU3¹j&WÍ䪙\5“«frÕL®šÉU3¹j&WÃäj˜\ “«ar5L®†ÉÕ0¹&WÃä2^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+㕊ñJÅx¥b¼R1^©¯TŒW*Æ+ãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÇxÅ1^qŒWãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ãÏxÅ3^ñŒW<ã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Àx%0^ ŒWã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Èx%2^‰ŒW"ã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Äx%1^IŒWã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ã•Ìx%3^ÉŒW2ãÕ ¿ÿu««òGï7È«¤ýµÚKn\ØwÙ†…k—þýÙïÿþù_m÷ ­y&plm/data/SumHes.rda0000644000176200001440000003744414124132276013665 0ustar liggesusersý7zXZi"Þ6!ÏXÌâ3Þ>å])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷Æu¾îueíÑ<¨ôw›ý ÌäH"å= `väè»F°ÓòwðHƒÌ3IQpC/ˆ)’¾2VÝrþÂo“"*%ýÛÆj₌æöêι”P_îaHÀo.ª¢&Ô°6&@êh_~ð#–ß™A%0¥dÓ÷ˆså#tÍÓ/Gör‡*h¡Ä<š øÄ!`BLüžïÿHUÖRæîðä+—Žzƒj]Ãd³°QžèÚBµ&x‚^ÁMº°éï³”Û’ŸîXD¡cA5à—ýk’IN¸Óñ-Tãú¼-‹›ñ±‰bí¾Í©"rhÿrL¤_Œ2ê¡ÇðV'.Áë9Åð¯ºòŸÅ4Ip,ã4ð¦]†sc|À>àP¡…Ÿh‹ÿ3ú¬ûUmi@ÃÂÜF:ÑS#½ ¡Ú,G™"¯ÌS}óõ­ÆíP…„¦rÞlueÑ|Õ` ¨â4úa§[‡¥ -Ä1aß2§—ÎJ·¥Ök Ç?c§Èb(+¨Ê ¥ädIÆØÑÝÙ¯ˆ«´)œ¸ò½ü“yï*{½<ú£bÌ <]=ßíb?_)ŸXH¨^Ÿgù!æo_9Fò\_gqé» ëUej“<.Ľ;æ0x®!(úÙQ=,Ò¦8^¶·ênÖIè€ÎU‚œ1Þô}ˆúÅÖGõ!Ù¢<µŒ~ý¦E#ûí´+­ÇÆÆ·Mv¬yªÒã˜r­]1ñÅQ ²./R2d™Ör£åt$á ¤–©TT u`ô¿¦žjáwý¥±²&uLQí ¸ðÞ ^i_ŽàAÝ?P Ï„&VŸúÀÇþ"x'rý22ÕìþZ3ÏGœPA‚ü{wYसSÑ•âG GÅž”î ˆœO9Žæb ÄqTfˆ¨Þ ~ y*ü·ÿªÄd—Ñ-Ö•£ñfœ¨l×ïÝÅWÛ¨6B;05E‚,Ï®˜ú!äíD8A Ö½¤Nˆé'‘ûºÕs…Dãß>7[žzñW5‹§mpœÿ·q=©5Їt“Nû$¼é“ZCAÓúìDbÁu ?â>H /Ó¹=ðõMÑëÆèãòA¸‹Ðªî¥ŸNú MkXº™Î'Un™‚í5ûØ¿øíÀàŠJD4õSZ§<+¯èN‰·à×ï–CWjõ)^åã”8ÙFä˜_™ïÛæ-Õ=óMhÀœÌ'{‰qÈÄèíN7ÑN--&šÚk<‘R\aÔˆ3çÅÙ˜ È‘‡ÿ7;ïç,_×φ ")~XÛ·1‹½B6UÛB»¸tSܵ6ã Šl#M†ÞP(Ÿz³ÏlG±-^×8FÙG¤CéÖêzÓ YfEmNæÖôØtå¯&€t ”ã@’¾ê.Rµ ;)§†7»÷9€¥ª,•X'_Œ…ª_«TÈ/ ëô¦Ü{^{̱`ò_⇢ø¹«—Þ³ùl¯ 9 U-M J¯*‰Júïg’QfÜ™GÇè8úÔ\Ìsfñ1º¶¶c EUùÂÜÍ@à‰·ä#{2›bAgl×,¯À&Ð܉\VµZ#4Ϧ䣿7HÀÜŠÁ†¸åíœ.$«ÍuYOâ^ý ‹®y£h$+LÜ0Iáú¯òhm×ɳÙL(„w‚Fr?ï+€ÃWo-yt±«ÆŸÕ8Eqšú!ÇξVÄòÁâO®­7ˆvœC"ñ~Ñì8’nN<(‰-Âä¬ÌàI•„< t´¯f¯¥)AÑës–µ}ª ~ÂùŠ¿œÎx»lÖ íöɺ¤­õ$y—kÁ+þ¥ÏïWïtk¼tÛ1¦â0X&pp‘šƒ’G¢É¡ìÕè+*r•<QÁ¡ÂbuuîU¾¾z,^’“¯²-9ÓàÊ•NU]…R™{(ìõÑNAjòc5#åÐßk¸MíV<®¨ð5r#Æø…Íu@5ç¿ÆÏü±æïþªùM‘¤» Bm¾–ƒˆ£ªÞì]ÿöçC®ð†m·â³Ì†×pò# I›ñˆ•ÉÃhÍŸæ‹à:TpÉ2b¬K8ȱó§¯ëõRO lÛîsVT:QòÐQëg±3ºÞ{f'¡N"Ï>Ê3Ò$cƒí>körü+)è{uàCðh˜ÏÈЗJóÁmT$…¶`,ÂØÔùÛ±Ä èh2gÓq·‹~gOF›w†‚€Yñ4³ÁLyTJ2½–(G ïîi Qýä|ê/H+°%xÔ3PªWÛÌÞÒvv„÷÷ˆEUQ(%•ö(µ&dÑzÜ‚ê¾hɹžêµÉ<6QjŒ}·têBkºÃÆaÆÞuTö³¨¯påÃÑm`Miú¢%º"×7ðÏù=3e³·¨îþZ”»qJŸ³ çõœž¹Ï9.hé+ï­Â@óNn+û®ñSL×*åz“ñýßæGO¦Ôk•wW˜Í²Ú!Ï×Ñ{çS£‹ð¡d«6“Ь7èÂ4*é¡"oÓ58r¨j[ZKãü,g…JhìãÍd"[kôkȈ€¶'}@qœ<Ï7olÈò§”ÄÙÀ{Ô2géÝDצ\¿O4x~çÕß\jö%µb6qÕié´®ûüBSNŤ44ËM#ŒÙ¸{N¬‰Ø-&A>ê²n—(uïuø…BÇ«t›!I´á¤kœ|4™è¹ŠT‡eSOƒ|15 Â'z󸻬.µ{šª ô—õs)¿‹æÈqƒÞ}»Ïd«·^žoAJ5˜ <ÏãX-Ä ‡ÛNäók˜Ÿû’f·çe’› VĬ+i£€CiBïí¼PyžÁW ¬Ã1žk©ä¯pkð^|îØä…ˆH@[=2+t N¾Táà8—%ã®ZµÎÐn!¤ÿ=¨“Wcè† ¥€´:Jf'R¥¡T!k×m³o±CùÂåŠ+SEƒZh0Vü‹.Ù–Í&X“¥~g6¤ d„¹Š )QÞKšÉùLÕ‹öÍM'êfÂF;NåµÚ.7ÛS'Äà Î@ßy¥QX¿ÌЂÜëüŽR‹à¶D˜*ÿÛóWEH Œú©>.zý›~¢LÍ®=0½$ÊÚóT9÷ÞŒ\’DpUø¶Z°¶í³lh…ªÆâ¨|(–ìcéF2ÊnÅØwi:÷ö(ª¬gd• VkÔ_]öœ¬á±|‹ôm·cÏ(_Ù Tà.B× ¶yž´Ê^‘‡±³@Ú›Jo`º÷PšM ØÊv8}…·Úâø¼lÇ »'Ú-g—Ù§ž$ÅžU°*<3ZÜÈ!­ÎÙù6X#ÇíRPuð+³È×Fvi°¼TŸ„ò|)ôäCåßE^:s°R1ãNóÛç·¯NçþG·€ }·+ØŽ7ÿ‘§/·XWš ñyLhÓÇÂ;»4g—®Ðô!ßQZQ™aYâPz™¥nA1"Ks­RpÀBÁ˜tœ¹½êÓêÞ"ÆÄ4ôj‚ðþëÌdç;‘Q–,•r¯Xc/—¨Rc0ùÏÙäÄù°D?¬O ;(yðEB¤´ÉòÎÅV©*T»C5,לéE¿îø¾a1:ôÒ–^‚ÐÊß½+r°õôlrD4ÊeýOFKê=+ª7\†Cª|óЋëøv1ð7 Ûµg_Ü„f[Þ[™Ãˇœñ×ÉùLpù½hòÉì.MÄaqÑEÿ“¯kù ÑylåѯÐCï`yÝýjOaæ²¼0Oå[¤Øœº§ùóo‚€ 6êÆÇGÏÅõRí”%×Ñ!·Cäðž2­x„ÒÔ¦¡–N÷×;% Ò.RÿóÿõeYWÍ™( ]ÔxÀ)ïfùæ¯qÐâóÁjN91-Ѱ+Ëb²e°Íh%®5?Š?µ8¡®ƒ âd¬ot›8k/ÎLov“E@Àùʶð©š6̼¡Œ€ƒWÁÓÃ`DÎï+.’Ö6àüÝ\¯ëE½ ~5`²™7Þ­’) Xí”ÇOìq ôLO<ƹÓùEÀ[q—ä”m“tz3`_#ØŒz–ž¹\è=_ÇM«ZTVE¤ ÛIiMw–œ„]ɧù¸Ûnx! ŽS—J›ÙÙÌ„r¬3 `Ó²H–Sb´+18´3ïÛû–^?ùêÛÌ2w視e÷ÿzØàA 7””ûj§«h×wÄ6^¢g}4 \V)4ž@°#š#Ò`ˆ@ûÆ$<†$¦t¬œi?Q«=ˆ“Ùì[( S:Î óP©Xªg{ëå³}¥eI =G·¥Xǰ^FêwtÕÝV“"®¥âÂÑ54Î~ŒØÃ(7_˘Yb™ XEãbœ› „!fLR}ME`U)²qiy›Ïèµq¼€÷?ؼ·`ï¨j‰¾HW‚6(D ñä]ÿ\l8ÜÌkýá+(}ç½ßŒÇÇç` eÐoEwÍT'µº¡wQNwKß‘HÄ»o.–^Ô Á9 Ê$.IÂÓØî!)_`I’}b¯Þó¶¸ýALØuðùº{0ØËjHJYKéjK®<2o-Ú´•p“ÃC’Œ•Æ©D"…š+Å­rçðX_¿oDÓëAK2 zñéZ\ØÃ ^`‘Ú¼b];,6‘÷æNä)wkšŒ³Ñ^šëþÅtŠ’Ž%TÇ”*£¹±Ñ*d)Wù…~í¹Î:ivlrÏšQÓÈMï4áR®¥aæ‰î ‡òl¥²´Jop¬½¨××áK!åá( ãv›Ø!F«IÂrÓ¡Á«~jŽ EíWðÚPÓ Ú)ÏÕ yL”ú퇨ÎRƒ Ð!ô÷tåS)÷†‡¥©±ªwãX!e|ìXþP¬|ˆ[—hÜvƒòãå86¡…e8À€¼·f4ŠÓ~±Ptô"Ö6KؼÛw1µu#Ð¥IøãSPc_—^¿ÏŽå*àRœ£kûÅÕͯŸ¼•¯äåœþÛ¹§ÃùUéL‡c¢0dz†ÿé¦ç™ÛשŒÈzŒÝmq&ÁðŒËL°* µÈröŽ#Â2Þ~üj49VD-C¹Ò]û8 •ÂX'\¦ifpÆ4l5á¸!k\'l2K­Rù¤Kóúާ.#PñÇU"÷¦#É.܈Ð-{÷™xϲZYºAæ2ùý¨ìž©ét"4®:H¶æüÀp:MÈ×6€ýQ˜ÝCM[«”^t*R+9½^`Þ/VÜÊ9 Æ ´@q×U‹[ŠŒ¾Â$Ö¯ §Í±U¨&~~Bp“¬N$ç@"§DI'•ºÈ¡ÄÉß` f0¾y BƒqD—UÙ¼Á¤sŒÙmò* G¥eÄŽ9˜ßì.ÚÖ§aù’{¯"Xžä(§•×®ÎÄ•¢£¯6±ÔÉ]̹íFÊö0XfÄ4XÆ]_#&ך}² ÿÜ%Ö¸ù“%ÜLEîgG7|©3ª€²·åK"}(™ýãÊ7ìogœ«ò0˜é¨×ùgåˆ bÀ>3%à¥ñ[ Ì>,9â Cvù䡲q”ˆù(01v7 º,n "±¢0ì áÂîä{°{ãm«ˆ;¬×£4mDžyR³ß6›Þ%¼^í{«¸ÇKÐ‘äø«9ßg»±A]€Úÿؽä3wz žZ ƒÃôUøÑÙ?Ý.Üä‰'¸éªì–Gœ‘8‡¼]$ªQ‡åA}çç¢8^t¥µÍ`ï~²…εœÚr–o«‚ŠÜ»ÆßX•º$ zPÊ[=Gɘ5}Cplž,XòP Ãõ±æqçjIö5ŸÍ&]Wõ7”^ÀÓÍø/Ä`*ÁF ìîà0ÆbÏ5ÿ¡[ÓÎb¿£í <ï6ž8?C$©Š«JžTÍ&·º³¯aÈ‘'ÏÝŸË£ìŸ×È8O&éI‚(qø0»RF IâØë ¹tÛgÒ¤ãåµÇ=ŽÞ¹ûÏðÆÑ¦¾Óãý=t_iõ¦FëKì€Ç’ŒJdùßÉAÏ|—AÑ €Z¬7‡Ž_EÁ¨múðûLçj.²^°š‡`Ž)µ‰ÒÙÔf¶™•zLü&lËžoX€Ÿ%„§¬ ñ1Qœÿ#rytíó6‹RlÞÍÊîÙDðïål|`pg ã|ChÃ4™6ùzV8;êûe®tG+R\ Ú: Qu†qîà #/µF ç¼qœâ""Z‹F?SÉ–PËhé=Ëc‘vm áÓ Ìèøê@T8-¹)¯ù÷¤¬öÖã ÿn`³B/Qz±­oeá$´#íÏý…L°§3F'&*ª'¾$—]ÝÃI'A 2dZ‹`ð*+»_Å\¡äÜ¿[ô¡È¼#7«ü)=üëuέ¦Éhˆ† ¡£ìÉÙHì¾Z¿ qÄp)\^,+èwe/UÊÖn.U+iN6Ö¿ß@Hwþò )î*܉mõ¯7Æêd†\Ž2z_¹Í²£SO]йH£ KÀZ¨Dý¶'}Ñ¢›­rÅŽÒ~Ç/è|¼/nÜgç…¥%ôÅ;I[œ d@VR‚k—ôQ}¡%ÄXfÉæ+~¨2>[æÌàÕ"ã=[û1ø~=|/¼•É[褷n•(9^ÊxN¹QO.¼Á•¦áî0Eû`xÞ".“³œ”’?¦öŽÁ„‹÷‚Xjê׬çýÅy e9Qò£^f~ÒÜxWª{ß•“ ¶ê© n ç*Uj;‡JÆ&.XÅ"ï™2êŽYºÅí"%Ô–F÷KAjSÜ=CRŸ–A_qÖpþ˜€àcj.Œ­#~ ó„Ò5 jÀ¬î†¿x´|k§÷ª¼6¦‘àß?­5Ù‚þLcDMI#KH.õì§§G³uÃ#ûöÇmNæ‹Ë‹Çbäÿ–äßÝ ¾´1ö(«›ã,3fP¶¾È‡"ÐUß ›ûe0¯åÉ7N‘'‰6`AÔ—í[ùG×ô! 9Vê]ð×÷~ø¤9©ú±rt¡Ê›¬xZ™IU+Á\CG.„ÂàçOõh2NfÎñÙžíóUûü r•e½Š;#D~ìÑ슆v=ò™êJ[ŠzÚKÅœr¸mŠ^™çŠ1¤|þÃùíÁßÄóöøÛÚ{Ã_%1JM15í½Z9¥ v¢À9ÿ?º€éÍ~t:…²ã4ðc¸úµìôq÷²ý°MuE»ÌZ’T;yCๅ~eHoUðeZ9l\\åÀ zöJçGF ýÂY-¼2?“£(· ¾’¼JnÕ•½Ê‰i}ãc¥]$a•¥æª4~Vˆbîã1¢M Êãm.^QÕ8Q{JBª—þø=Îéª{gy@<‹èÚ-•hn׋¼j#oI(æ.'ýF©y,Ê1C³‰ö`joS]^J%=£ŠH5£‚töÓ¶K¸%V ÖW‘« (¿‚÷¯,ö$WÙáÅ(•æ½'£"ÛÈ¥¸žAYë.d(p³™‚ ͵Þý‚è]S …óU÷}c:ãwr†åøQÈGYôs?[‹ZòýŽ-Æ-iëÑÆ’K„Û¦é´ÍÄsáE¡8X}».ј}LZM |P܉0¦æ-®€¬Ýá,Öͧþ¿ /K`JÁµÝäÏP§Í'°¦Ã‚XÐòŒŠââ™j«ãݤ¨ÍÂËs KÒ®dú¨³~í‡þ÷£=K$-4R€YDŸÖüX“ºýhHù§†G4tT Ú®Yч•™:Ù¤çzÚ?¼ÞøDİMà:gq“ëÆì> ZO cŽÙüú x|eî¡oàæ îüÞ¾Ròizù>54#í]ÁÍÚO™”Ð…þ¨ùuCÒ†Þš`åu(Á ž¨Mn_ò)Pú¶ÂQ¯ò©AÀ!k î’)Ò“fϾ¤õq0_ëÍ?xEadœU±ŸI¢ÌÒcl–—ƒu¼'ô§u¯br®D#Ž|dýJêºÊþ½Y—düNñ\/‡&ÂäžYÁ4}‘HèÞ^M‰RXhW-sâˆPÄ×÷ yE'}b—VѾyu®JÍË’óH(”Üûœ’ÿèŽTCU*>|<`úàUp¢‰YÂÜx’ˆÏ±nýPÑëøK/¯Y”v16MΨñ{°3oÈ_b#u[ít-ðQq8`¯HoG}xp$¬èêi#¶¡Rû±wkQ°üJCørW”úm®#f†H;âËÒï)¦™I§Ïû&G+½VNPŒQ#-¢‹eßþÛŒß÷98Ð/±{úÞÎDáM© µR·àmÄ}ž¸=èh9€ØÐ+Áíµo*àà´›/™¢Æ/¾ Î&cj*ie®0…Z ¶1 ¬\sN7€ÙÌèCÿ×I-÷Ò±ì6ëq*’t¥ÏN6—äï¥Â Zšúð8ѵV÷™êj1jz³J[@ô°¡ Î=ñÛé¥:Yö%´Y™gÈxF×àºy£îçcÇÓ¹IÛ\W6|<•ÝDÙ‡U§{.ºñ9nð|ë|ÑëÜí.)KŽ•¨“Œ8 ÉѤ4,Þ«Ž,§v±+¤èý?8Ôùðˆ·˜¾Þé Uy%iâ<}‡´®§]&á‚ '!Ì3]"ª÷]^W[T/sN¾}M¦[7U¨œŸ#ÆßåÆ{*øæ1Â%y j öâN%*ÿ­vïQ+› Hôy¡þÀ`Ló€×P’k£”è¢ê‚I«œáÕ"îYdÞÆÐò•çÐCVIš¾‡j[tŒÇ£+±nDVfÃu±uöš¿3´"BØÉε7x Ü´0—¾Èm€.àb×^&_†¢G™#;ä"8|j’—í îQËÁ§ÒGò6ÁÅâÌJ ; A¿G†ªá6*o9ué %©A µ»á¢2U7 ½°7ìæWøÀ—á„úJάLाJY:[cÅ5R(Íi3~cçÊ1;ž,f­bo¹¹qäÿÉq"It“JqJ*m›¼õ ¢Ò(e%½;1ˆlùñD–º é¤@_Iµ?—`¥Æ`nÞ<’GÛ-Å8Ďغüz Íh“˜æÌJ«'95’ïÚ?ÞS'ÒdåªEЄé±T¯Tíú[5éö[…[4exCƒÂÈ8*D-ð°á†¯u׌ Fæñ9ÚÉ)Vݨ+oÔÑö –†ßÁ#ÇE5|žª$&³Ûr z6%LÇ­[aϲ,Åœ,6ª%¤×‡ DŠÐŠDêi1•žµt CçÀìäÍCQ°»–YSDÃÎ@ánþK¿ãôùôïS­œäþ0„|î÷jO€Ñ²›ÊÀ2¤0ç•ærðÕÙÀöþ2aw}É˦WÖû{¼®€æçØdÂ7k¼¾fÙg4Óñc%å±\¸ÓIB_¶½Ç÷˜‰ÃµNƒ¡®¨-Ð:g Ói`wofò†Cl¨rÐW!%[0©s1ãî‡"Œr‡ß8¦Þ_Y½Æýú­z&Yiö$Îp]LgYH ²ÓÜòÕ'{œ!­Â,3a1¨@dŒò]ä}àxÿ6xêÎI×£AAsºûqôa¿H}±è>ÌöFëÉ®¬¤º—F€ÁQS6à çs@Ú$8‡—öœXÂd…` °…ÞzüÖë(5ìvzØ¿Pò³}<ÁÃmH|©ä¶0Á;û¶ÔÝý`w<'ø|ƒ[ká î'Bý-;²‘;lûJ}_ƒT&ß#„‚î (žš•J¿^`¬¿Ï‹g™×0mØç°êÉS=a¼»Šª "-_qž-t怀dئ¶ªþ6õ­ÖË{ èñ²Q^5`nv×7˜]M:{À¢ MlÁó½ý‡¥‚9ÍÝ‹Cü"ø#«ÃM…®J÷…=Š‚²¶Ü籋寨l¿(ÇôŒÞ9zþ YjÁö {E§×£§0[tÅÁ>¶ t‹^õ“8m@H]ðþ5ˆzr° LG–Ëî’ä¼Z爛ÐûB$À¨ïÉÔÊ—ŽŠó†Ð~<ªœ¶€é…¿J"¨x­Í˜fTuVsëBö·=ä×®úÊéîÃäpIÏ…é á>áäõð‰Qò/_£j!$Êü GrsÌáæ6Œ1‡|½±QT[tQè&¼R·Àö«ã® j¡ã‹ð‡„0ì ÂÀB/î(<>ÿýúÕ.õó.r—“ñî2—ä1TýHjb<‹ê{àiØËÂpz p]ï¤*‘HãÒM{‹ج¥¤Î5›=9G^ÔŒ¥â»jÒý˜9YÒáa•Øš°w!éb41ûÔÙÖ ½°sò¥2ªÅ3¼AhÐdK¨D¶¥ƒ5­I± nßÜÊ{µò¶ºM s¸¤¬/àD²•¾¡ñ:6³}’]¿8¸íh Hî0/…Ìš ;O—ÛÔÐÕ-çÓà ÄIÇ0[T*›°8°=`1+QH~KA)Àª¨)è=OÈÔÃ<:6£x•khë ]Áaž5Ô¿c´C®%Ÿæ–\T%8ŽhɼPxòbÛUEŸ‡ ÖÊBs¿bÆOš¹ œQëb•sp‡žâq㌸F,>™8j…„pWä Äál¢#ë½Ldt£«OúeôÚj„ ‚UQÆž"©xX%¸s¿ ‰>PA!R£á¤ÅÐíY“Vrk™°ÅÒœ¹%¢ØIv¶Ö(W–ÈÍ‹ŠÄ€Á–z9-ô¬; ½±ÆÊ¤åæÌè>—ÙÌ®PUÂÅê/3Фr],бœ\ý¤Y™Xß_aó$:èàT‰GÄl-!ë­:¡¤yÌçˆmï(pÚÅ'r4Øõ,E_É1¹¼ï†¥0îàšÊ…x-ƒl¡‚]PïÉ“'‚éÛžu`Ê$›Í)æŒÎ¿±†C$~u9©‹oç«ÃÉ’w¢â½ËÓä{íTYÕGœMŸrÅý5Èí{ÆóŽò¼˜GÔºe}Ñ+«=;Ýçà9ã?9ï1ÿãȸºc»B*ÉQû›S§/®*|õN¦’õO/œµ$7õ>–†;™yÆŽßx g+ÜóÒåüèóï'ªCt¬±äÍ £yŽZÚ§Ú’œ ˆÿ2š€X>ï ÿ§½•øjŽ9JxÜ:ldd|wÀ£ $åÁbËrW™¦uïҫßf ‘°¾|nÙæè•\/¥»}ܳC¹fÊç6ÇTŸyÜoâå—³Ü[Ô˜_çÀKç6ð¨®Xb;5¯žWkiâ¨ûªNDTPR¹<ÅGÁå™Áó´êHº‡]æ5Ï;vl¼µ9&w0¸1ÇzfÜ* VÔúí@ .±bw¸üÓýÞtÕ3J¼¦¦SZ¿‹:°[逸L ª×:TƒäåæSîd_¿7×ôÏÛ‹X0®;-¤$#&¤“·“ÁÍEËÒAÅŸX¾ívÁIc( µµÎn8Õ ]Ü£XÇ4w 8¬&Q›ÍÍŽ“¡úH\4Ýà¶:ã_5yÝPRƒ÷kæÒ¤À²ý fÏ7¡5[‰äÉIìueb¯¨aÔªÆ5±¬ÝÀÒþÝõº²Úá^ݧZzQÕ¾¢ox°@kà„šsPJøTç o²¨¢ê–Ï&\ËM´š>,Fëéù8}Œ6_Æq!+ñÝ /žuëÀîߺ–8X†¸Øƒ÷ ±&÷Šù«Y%Š([ ±`Ôíì⊯0X‘'CW˜¬5$QÁ {bνÊäÿ>æÑJ«ný«`=.)9,kgÕU‡r æäê(iÒŒs¸†Ãô;%XвâW=Gœ®ðÚkƒù–Ï”£§qBW ¦•U¤ÆØ5ì­8;ŠÅ9Ký´Ç×Ú>…nôjAó!ûbðeÏCIS¯V¯¬%Ža´krX®íx„dKÖ¼ùÕmLd[wi½=Å4 Ø%fYQïÖÁÉÚ(#C Œ@[ _pï>X„íÄX‚Ð;Ò3g“ Dϯ9ÛgôNJòW µ{}âsbÝD<$®qt~mfg“•ÚÓÝYA ·ü¨o]á ot‹o<Ýü2Ì'eã@òH¾ä÷=.ÁïRxng!ù¤×F¼ÀÊÊ%D*jd˜ÃG¦‚I†lT_RÁ»>l‹Ƨì†ï¨ðì¡É¼.4V1°+%Øn ‰ð¨ÄSEmÍ\o,O€±ÕXí×èQhk.xðPvïIõËÁ˜P©I°9'÷‹„Ñ)[‹êj=R© è´ýÜl‹§iÙ^“Ê_ÕQD«ÐÝ3ya®þDrí záð Q•7a.„6[$GG'• :Ïž¸ëÖsA¿ €mû­¾Ó› šߟ*Æ+±¡m;§l“ù^ÞXcpgéjdN½¼´¡¬-1š•§nš‘#¯€¿à· 9D7ZÀÓÖcúúÒºTç+VðeäˆÜÂTÎc GÃ*Ä(S‹ÖUGŠV»F¯´ªN·V7gäÕ‹†QýÎÛ¡bÈMk ŸTÁ(A¥öˆ%Cç“§”Á¶P¯ÐªÈðž¯yŒbSî0¿jº³ ÂV,9xåcëܾì8Aˆ/¹çpE;êM¨ Ù'ܼ˜¥‘F|ŠŽ…ßÉŸL®€ø™ÇçÇ¢Ó2æÕ2M)²qý¿RŽavÞ±H•L¿n_³×·:ÞUáçûcì7«úám ÿü5 “°Eèã]~³ÜœŽQwævqhSsÑP£†HœrÐê"¨¨n‹;5€RUÇn¦x3%ÀÎàW‹Ó½Œ!®IZ3¿´}¾Û ôê¶¥hPBoQbŸpönŽ@*h_/‚ª`"÷rñÎØ‰m_Ôm…âË¢R2Ò6ÔKi{½äGyÅU±¸¹áK ±¨øêzŸ©4¹w[â ¾E/KèÝ —¢»9c§…·vhtBC hã= ×$ù:kwžøË§¤`þ9èæ³ã—Eì2 Y¼Cß@̱!ñ8J‘óÅ%mºû «oämõt†ïƒ‹uäiNz!nÌë€0IÝNwìÍŠ[9M”o…*ÙMÔ‘ï`,ÉßnÓ é\ï^æÉØ´‡É0Î×kÙÎ%ê´½·4òˆlþÚÜa^?¨R<£ÁƒºÁd·Ö'p”ä«¢ƒf1\êž *¤hPøêœo9òL&ŠÉúó¸@þZ`ê/°Ø,ÍÑé‘-PZ‰ÝŒ+GŸ)²T~®@yóuã$İCŽ‘]mB&ïDF†+í¸¿|Óž‘Ñ”¶€_áC‘ÀqŠ3óhÂqvMa²šõЦ’‚4Íe±Ã0È}vŽzÌ‹@›gØÊ±{Ùï%z·ÛtëOí“8ÍÏ4XzOvT0Qµ«î,w5¬æ¸Ùˆ•=\Ýèp‚ž=÷ñî€×¼¿0&ýå9˞㥭ítàf?1lWŽªIÑ`¤Ð˜’¾e×|Qn`„ßÊ68h˜Ué]òÖEÏMi‘Jùï$$Œ0&ç÷A9RâyJs$VuYŽy¬”†ƒFšqàRßÝ\´I›À:+€S¢ÿDžö ¼Å¯C[‹Û%2f_+g"¾“ÛcߌA°Ù¯òàÔ!>“¢>`à´{»ÝFCÜö@‘³5 Ö§ÒÓ“HXE0 v HHŠ\¬I^_K Ì<¤ûYTÇë6o} `Hÿü*Ä-¢îJbõóÞ€OT xG¢â;½¸lÙèÄ¡OÌn©>þu§jšÊäAÖ–¶-ÿÂ3|bw猀åsO[“#]Y+è—_s‘ —b‹6× 5— B·]ßœ‚Gš^{G‡—” nPSmÕÀ¥’¥+%¦P[rܾþö”˜Ô8ª™¯]zirEŒ’Õ3SJŸ…xEã*ÛÑIÅ`Ø?nÕŒ~é'tâ!åk:DìT0úÇl7ªà<ä1RÍ¿\O½e²ºe´:缎\ ôÆÜ{á×íTÈ–Q/ðN±àP&ä9eKjµâqÌÄU²s QÑ èäÙS[˜G¢Ûfqã¼I6m9ÜÜ`f‹œ<㔋+'E&J!°œ½ÉŽmH1’†°`fÙ ‘w‹;Mn)WuáØ æ±‰íÓ ?¦)7§µ0Y§sõ@’¸õ!éxᇋÒÞ¹ÏãÕ59¯1˜¢d»)yf“7°*ÛÝ-“TPk>–ߤ‡@2„A¼™¸ 7lTc2õ¨°ÜXŒ‰°è 9¹]¹¶'«Çú䊾c+î­+˜;Ï"Opn¸Áx¥‚uѹê@Ü,©üõïDO+»3¢n!=¹ßâý—»l¶ ,”Q£,nÓ¯/ͪ}µ6sçIêz¨ºô€F^ÒNRTsv¼ã£=£z#€<+;¶¶~>0#úuzvtžß0•U0бÎñ|yÙhì–ƒÒ‰Š ubÁX]‡š¾MÒöŽ[SÑ-=?†âù*àP 7þpÿÏÕ>=ÜÔóiz+ù~ò4â.9BBîlÁþ˜¨¶<\½N­ƒœGâÓãK( ¼Æ¥©ÂBÀ ;"¶yeö@ÜßQQ+Ã'#3ô©˜q þ6O†Üñ†î˜•xf-è!i&ÌUª Tô/ƒ~à'^1TUXÝŽ¥øní“äµVƒyž’Ôåx5WL¬`Â6æÌ Àâ^•Okbõ=·b²@ 3-±åŠ:%$é:{mFòRD©a‡Iöj©…Jè ¿às>*@‰äfбœ4ž¯·+Æ8.…$+J#&O'vëˆQ¨\ºL޾DƒþÂR¦Ùl÷ÛåÅ­Mƒƒê3Å'µ²-Áz€xßòâ3–Y°ò| Ä—Ú‰mª ºØ~ à`9Ýè8]]!†Ä@èM ·4Ù• EšS\µ› –r°Ž sІÁbJþÔ~nî$JGÉ`[îìrÝ[ít»²¡¼„ÛïkMeðhþjªªw0.SÛ`ýì7D¥K5æ6\ï îšez ƒ­>Žª¤65g¥¯¶‰ýÙ›çó€=G\í4¿$Œ²j?g¼¯ºÇI0F5dß!õ_y”= y:¼BŽKE©þÄB¯~B'‰Ú+žj¤@È@H9¹1]¦‡ˆ¹¸ìùœæ©ïê\®á[ç,Q­Äÿ"·ì’7 E•5PO˽ƒÐŒV};ÆR257¡Ð6ürƒþÙÅïê^Y¹AßZ¾¤^ÃúZÐ ­²"X²º¶&Ä+»ƒ·ÁàZ½º—§R‡ò]h†¤®›`1îoreO2…,Á@[è¸Bҟ팥ÎÂòŽ jåêžf/eÉâP.É— ïÐ<ª`M‡Á?èz°.k53¡[Êȯõ‡úàF•§>/ô`¬ˆº‹&É=úŽ%©¾Ü7“C:Q ”ø‘´¥½6íj}–m¤Äf­buЬ ¾RÍFÌ—sŽË=ÿ&‡Jûq!/ Ea4 iÂlòNð¥úœéÆ%£ÖÌ=1ÕÖ­£ø`ÔoÁ%ÏêÇp(ºþߌ êç_¯žÁ•Lö“«+6ôß©>€q¦H§¸Æ"Ét“2RŠB‚`úcu…S`¢èuŽÐu UMY€Tî ]ë&rcJï?Ö$ÁCŽù«ßØ~œ;ºÑõ¡‚¸ -n hØ¿ ¡·Ö`HF´•L7a ’í°· ˆþ4IYˆÀäÓ{v–bx¯}èÇ +úýèz <ˆüÌ*èç´)Á@­9jfJ)ôTÛøß0”éH >àg'^ Œdr1CE%{âú¿+Ô÷6W#ô¹ƒµÍy%5ÊzÈbfÚºµÆê‚á$Àš÷>It¢,j÷Ô ÓO‚Ê2x šºû81Ó–kÄŸaq`›ÆAùð7}¥D×uÂÃøñU%ÃUJÀþ7ƒèã­bÝO¢NvÆz*ó|â¤mØŠ-óª‰HòÝ´ ¼,ŽÒ(AŸþÅ5´ý…Å[žöñù4îÄ]mÀÀܾøXÂĺÍó„%ÛóØuin¢ä·j0T曤 Ó=‚|w½ÙƒlIÏeäþɃ¢7E#ºÒ€oÊ0@áÚìÁ@ “Z&pä—h¦•F@¼2“ ÊÛ®ÉrŸ=W¸þ8é_føÈßЃP˼ã¤èàFy?˜ì‚Vñ„–eÔ[þ*eK2í:)ˆnéaûö…ì!P²±[Ù½9Õõ~xL­ƒSXý¶e·=÷*½e &_¶ÕL!Ó!´û®'5 ‰}fx¿©„®q“¾È§W)r<ô4,$õôõÕõõßǤ\®OË]õ¬1r©Š_³Œkÿ¥‰QB#`¨w׎· I¹´öæŸB1€õ™:ˆëÊžn4B¿@±÷|ÅçYš»V … d;º9L§ÛÃ+ÃÎBi­  Yp¿­™ `¨êmܽ]]‘±;1Ãø)‰23 @=³âgôfñjÉ©ÞòÕµe#QeñdJ}ÚQÉ×J…"HÈÚ&–Áªô ±­’'dÎÓC¨:ÿ¤mÐKüÿß\ç3ø‡Õ3í³ö)`Õ í?‚~³ùC^v뇈‘UbÖgõÏ=Ù1NF¥8c6`$UÊäæºbZh“}•FÌdøÍ<(ûž…k“õ§y@>q`H$EÆ·g» ÁÞµlK̆4ß«Dc¤$ÊîÎ m[@èSdã/Ê߯±ÍN ×ø± úCŠ@cã/èLèXÈ”lBÂJ­’€­ë/W¹ýÀu§€øS’åÈá@^Åâ¤õûËSNøµãξsаüù&RãÑa)ùY@ÐcŸEYÖ¼`â>¤LïnÈO\+€¡÷c£Zraª{(X á–Ûi ‚5*ו”ˆÓT‡†ñrÙÔ>ýè¡3éÐØ2ŽBP¤¶ž{°¡Ž,Šï™Öþ 6`ÈûkFy]õÎbß÷`öñHçÊžcOL í< áWJÄO/"†Át:«o|/Q®ë L3]BS“ÅB "w[D¸¥ôuyV 3¡MǹƮúÇø®]Î4z'Ã2¿ 4—¹jZü?ô9Ñ%Kº7ÜÒÈt|®#°>à`ð–¾úÙé bY»Ët$â&CÛˆÅ:Þ‰4(nCR׬×vš®ŠªÕ#`ÿçÞÔ¤ÆÌõ10%M°ìçïü ³÷Š6ÿüK±6ÏÌ÷~Òˆ¦0[j•ÓãI@Ûþ‘G}HX}ÜÅtz™ÒP´á˜N(T2Wî=»™Eå jσï)||Íoý}ßç†Xq>0 ‹YZplm/data/Males.rda0000644000176200001440000014510314124132276013512 0ustar liggesusers‹ìœw@ïûøÏhiˆ #"²·ë.[DVv”¬¤Hdeo2šÈÎÈ(Z’Œ²¥HKûìý{>ßÏ»óþþÞ_º«ç'ŸÏùãEu÷<÷u_ë¾®ûy:“†Oï©9]“B¡Ð(4m:ñ¥ ø‡JЄ@uüüen^ ½ñ6…Ò\ãßÿ×Js z¬1¬À°ƒ?†c¢0œÁˆ!ÃK Y>``Ô•ŽAC Îæc؈ᆳ^`øV;´®l0 À0 à ‡1\ÄðÃ{ 1|ªº!†6Ì0Xcè‡a† &cpưƒ†½öcÄpC0†P '1\ÁpÃu w0¤cÈÇPQ;*m1tÂ0à Ã0ŒÄ0ÃX &cðÁ€!à qò0pkGÕC{ 1ØbðÆŒ! Ã; _1üÀP‰[;jz,1tÂ0à Ë0xcðÁá9†¾a¨ªõ^\1,ÂàŽa†ÝÎa¸€á†û^`ÈÁPŒ];Æú`ˆa†Á\1,Çà…a† ;0œÅpÃu ïj§ ƒM †L1tÀÐÃ$ ó1,Çàa†#’0<ÃPˆ¡´v47`8Ž! C$†Kn`ˆÇŒá †* ¢ÚÑjŽ¡5# =1ôÆ0à ;0œÂp à 1|ÆÀÀÀ®m m1ôÀ0Øb°Ã0ƒ/†õ6aØ‚a†vc8€á†` Ñb0<ÄðÃ+ ï1|Àð£vtT1b衆!ì0ŒÁ0 Ãl +1lðC0† ±Ò1<Àð à  B ¢ÚiªŠACS zZc耡+†ÖaððC8†T œÚi¦‚Aƒ+ ó1D`8…!C †ç¸µ£k„ÁƒÀ° Ã6 QNc8‹á&†ÇžcÈÃP„¡CEí4WÅ ƒÁƒ†0 ™^cxA€AR;z††c˜ƒa†•Žc¸…á)†OxøµÓ‚†¡9†– 0tÀÐÃP >‚0œÃp»vZÒ0èc0ÆÐƒ†EÜ1l€á†` o1äa¨ÀÀ­}*†¦º`„a_ G1aÁðC†/µÓJƒ s ì0 ÃàŠÁƒ†½ncHÆðC†oµÓz† »0œÅð¼v ¬0jǰ-†nC†p ‘.càÖŽÑI g1ÕŽq[ Vº`èÁƒ'†­1ÄÖŽÉH .cˆÅÀ¨6 ªÚb°ÁÐÃT ^µÓv†EcðÅpÃ= ™صc:Ãq A‚1D`8á†çŠ0”ÕŽ™†Ì0Lİ ÃJ 1\Èá>†7¾Ô޹ †>Fba†–aXa†Ýö`8ŠáEíXèa°Ä`¡/†Ù¶cØa?†P a®`¸‰á!†g21d×N;S 0ôÅÐÃ0 K1¬ÃpÃE ÷0<À[;í›bèá8†Ëb1<ÁðC!†b e„µÓ¡-s [1\À†á5† åØDµÓQƒ 1; “0ø`ØŠa/†@ !"1\ÂðCiíXÂ0ƒ;†va¸…!»v:b°À0 à ñcxá{ít6ÁÐà c1ÌÇp¾vºja@µc]P;ݬ18bðÀ° Ãj Žb¸!à ¥Êj§»†Özcèa&†#Ža¸‹!C6fíØÌǰC†C¢1$bÈÂÀ®*µSó9!ê„-Ô‰ùÔ“’ RR ˆA=M9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+Ç•ãÊqå¸r\9®WŽ+r¼æsB(M1è`Ж3šÈʧ…7?N8póãh†¬þqóËÛþò–¬ÿàì«hýÈ[¿òÎ8ýâ⓬ü¸û+Ú?ÈÊG6¿ÊÛþdóN>Eïdó—¼í»¾ ²ë—·}ÈÆ'Ùù50õ\|àæÇ!ïü%ïøStüàÖ§èú ç?dëW²ùìþ@¶~–wÿ!oý‘õy×ßdãKÑùAÞö%+¿¢÷O¸úBÑò“µ¯¢ý›,òî}þC¶¾•7dûc²ú#k²ñMÖ>¸ëå}¾&ïü)où}>"ïúYÞý¼õ‹[¿¼ó§:²ë'ëßdýOÑý#ÙþLÙøÂ¡èó7yç_y×÷ýùCcßäÿÈ^/oÿ!›?Èæw\ýE¶>'k_\~üÓÏÔ0È»?Uôúå¿d÷ÏÆžŸäÝß“µ¯¢![ÿwÿ?½þ‘wþ—·üºÿàâ·±×§òÖ¢÷7Üù…¼ûW\|’ÕYû(úü Yý’Í/dó'ÙóÜúÉú/Ùõ‘í_p¨b û|[ÞçÃd!k²ñ‰ËŸŠÖN~\Gv~²ë—·þåÝŸã®'»¿4öü¬hÿ!«\|àüŽlþÇÍ[ÙçWŠ>ÿ!+Ù÷å]“²þCÖ?åmEŸ‘EŸ?Èûù‡¼å'{d÷gy÷_8ÿÃõ¸ýMÞõ›¼!+Ÿ¼ß Ûáž?‘Í_ŠîŸÉêŸl~#k²þ)ïø“w~%kyŸË;?“õO²÷'{>Bö|”ìþ…Ón~y×WdŸ/‘½¿¼ãçòîÏqõ‰¼ãCÞù wœ|d÷²­äŸýù".~ä-¿ òÛÿ|N•€Fù÷™– åïÞâ_ïxiüâgMþò­:Œ×vï&˜kµëpýŸ>^Û˜¦ î³Ùùqד'»~²þ¥hÿ$_d¯ÿÓýOÑñ‰Ë¯ŠÎ?=¿É[¸ûãäÇù7ÙüA6~ÈÆ?N?µ­M§òá®'kŸÆžÿq÷Ç“/œüÊ.5g Šö²þAÖ>dãKÞûYý‘µ¼ã'¿¢÷_E×÷ò¾^Þë#ŸòÞå-¿¼å“wü(º¾Çé·>E÷dýCÞþ¯èùåŸqõ)Ùý¬~å-¿¼ýg_yŸ‘=Ut}-ïü­èó£Ú|£i®—·üŠ®ßÈžíßÈÖ/dïߨÏ}¾&ïó7²õ‘¼óoc¯Èúný¸üÙØó£¢û#²ãòŽ¿_ÙµæGyëŸl}Ž[#Cc?ŸÁ“µŸ¢÷'y×?ŠÎ?ò>ß÷þ¯èúˆl}@¶¿R´~ûù²¼Ç½?Ë»¿%;ÞØý[ÞúUtÿÓØÏÉúGmµ³ß°~yŸ¿)z’wþPt|4öþ×ß’Üý­y?À­_Þû Yû)ú|—Éæ²ùlߨŸË{’w~&ëdãGÞõ÷¯Î=šèýDÞþîzyŸÏ}¾‰³¼ÏÇäm_\þ#›_Èæ²ñ!ïçSdïOvœ¬}ÈÖ¸øSt«èóyŸÈ»ÿ!;?Ùú”lÿ‰óO²ýYýÊ»~‘·ýå½?‘Í¿d÷²þAV>²þ¯èúXÑû«¼ûoE÷·dã›ìþA¶¾Sôúå]_*Ú?äíÿò¾Wß’ÝäíŸdå«­vi^ý*º¾”wü(úïÉö?d׋E¿¿§èþMÎûýŸŸB•4Ìýå97YÙþ÷ïÐêøûò”UºÃ­íw¬¹.÷¯« ò´•,ïWß{áìSò´£¼ï__Ý(Zu±íÿ×fÓúøQCÖþ;òNžÆ NÖºè[‘²ÿ®9þ释ü²ö2×’ñyè_–zÁ­ÌºÉ®WŸâbŸìжO}íGvŽŸÙ]Vþ#kŸ©ï=Sþ'#÷Ïô[›~~6NVu­ê[+áêŸúú—,÷ÿŸÅJcª/j“¯.~ò«Ÿ5Äç*¿¬õGÆ>õɸï:¿,ýBVë¯mÏh¨\µù\]ó_Cò n8ûÿJ¯díÛXö§?AFy®½¶x©‹Êzÿ‘e~”E~ú•ÏË[¾_Ëk}õ¹ÿ?§¶{ý,ç5DOdt+«XùÕº*}l­¤n¶®]d=/Ξde¬oîý§5ýüJ®úømú®Ïúš;éßdò»,×(‹ý§®sPÿñ¿¼lôO¿T„]åiܼuµ<üïW÷l¨.d¥ÃÚtù;ü£®?¯«ýµ>Yëç?d!c{YÙ¯.2Ö7ëó;¿Z“¬òÙkeßpº’åüÿ¼¿<üG‘àü¬¾ö £YÄ«,mò»ò‡¢ìþ'Ëÿ;ìûÏß#ÿdb„LþªË=åò¨ ~ÇýåOµíu]·äµ6œÏ(ò^uу<ýJ^27–ýˆŒMåUKàäõ½~‡þëZáü£±úO}}».º¯oýñõ{ªÔ|ÿ?ŸÙ²ÌÍÇm™åïO¨ýŸO:Yáñ×Wt_7¯\¢êºl¾WÍÒû,œïºÚcñ•øŸD¢DIcåOßé”üwó§ûïŸ.¿%µAÇ@Öÿ•ñógƒ³_c·/οqÈ{þÆ~%J”ÈÆž?å½>eþjÜö‘÷õоÿŸÙøQêW‰’†#ïø‘÷þø§ÇÿŸ.ÿŸŽRÿJþ“Qú÷·þÝŸ*z~%J”(i(ò~þ¢ÌJ”4^ÈÆÿŸYý}þÞØQ´â÷úíŸdý¬ËÛ>ò^Ÿ¼åSôúå-cׯ¢ç—·üŠÎ/Ц±çgEÛï¿}ÿ'ÿŠÖYÿúÓí§èøU4Ý?ÿtÿ"»¾Æn?²ùãOGÞñ§èõ)Z?Šž_Ñüéë“·5öøiìùl~W´4vûËÛþÓ×ÿ§ÓØãG )þõ±"4 åߟ$ò/{üÏÇ‹x¬^춪æ—eó]ÝÿúFeñ¯•ÿ¾Š^s•"ÏÏ!“~6.‹üò;ò“¢åûÙõ8ý7¤ÿ"{Üܲ´™õý)ûNö†úWC×ÿ³9k“çwÄd]æj ùçõñºÊÒÛÊÚ&dö‡ºŒËÃ×d•Èä_œ‘É ‘ŸÌ¼²ˆÏúú]ç—¥}e%ÿ?uòÏÿ¢?Yù7Yÿªëõ ÉadUüà®ÿ1+ÿ¬m¾ú^ó;ìYËJ¿u½}íSWùëcdì÷»óGCíWW_¨«}äµþú¬¬ÕǨµ\_×ûÕÕ> Õ‡,ôŒ»_]ã£!ÔG®†úGCt\Ÿkeéß?[G]uø+»áîSWùd±¾úÚ­¾ö‘Åýê²ösyÍO&gÔ'þ~eg²ñU›¼²Z_Cu÷;®!«Y¬Oñ©ÿÆé³±ÊWWø]ö—•|ò—§~~å×ò¶w]ü·!ã8½54oÊ2þëbÿºÊYßyÉøÙ˜©Ïšê¢?Yæ7Yø‰,âO–þ//ûÿÌÿd­kYú•<üûW6ù•~e9ßÏæ¬žê¢Ç_ùL}ü£¶ùdµþúÈ/«qYÈ^Õ¶æ_ùYeßêc³úƯ"â¿!öièü ñÛúÌ/oÝÉ¿¦óŸ]_Ûý¢?YøV]t&K߬küצŸºú‡,Æë*_C|Œl.ª~åéC £>ññ«qYÛ·¡:o¨ýÉȯhä™#ÈèUóËÃdá ™³¾ö“•|õ‘_ökˆîê#ÿ«‹ uÑ]m-ÏøøÝñWWâôþ»}¬.>SWûÖå~²ÔCôñ;lü»Ö_×û×wþße§úú^]õKF~YÛlþ«ïü²Ð_Cý§>úiH~iˆüõW2öù1SùwÌÉBò´¿¬ã'{m~T_ÿ’¥¿ýûÈÿõµ<ü³¾÷’çúåM}õÓÐñºÆO]Æåe_Yé°>sÈ;6ôúúú|Cå'sÿ†\+K;“±±¼õ'‹ëë+7n~²úo¨}¨?™W–þ]_ý7Dõ±¼ôÛùêCŠZ›,tÒÉb õ_yÄYÿ$ã_?»—¼ü»¡~Q—ûÿû5TòÐO]×ûúèï'ãÿßçüëgÿú$Ú ¿¾¢ûºyýÖQògð»·§Ÿ¹²"äP¢¤±ÓØÊÇÆ$‹rýä×"KÿúOÒÍŸ®,V´|Š\¿¥M³LJ”ü“ŸµÿÊ^I¶úU´ ʵ)Qòs~uNô³±ºÞCÑkP¢Ô«’ÿþTýSåVòŸÅ¯ü°±‰+Qò3í£Šž_ÉﱯÒο_çò¾Fž÷QògÒXíÿ;äj¬kW¢´µ’Ƈ҇”¥1øÐÿ®ñÉÈÓÖòŸn«Æˆ¼ÏÊ”zWêâO@i%ÿiü§žÿý7ïWÊg[J”(QòûQæ]%ÿ-4_ÿÙÇ4t²X¢u¢èù•(©2ú¸JÓ}Ü0:›–xôÑ‹Ác3€µ¥|E»ÜÓx®ÑWàµÖœTÕ¼ =SÞ™¤Y$j/0jº>øqb×{ÿE"spÜ àÚÏ*¾8¸Õž7Ó2]@2*¤zÝMà12. ý2 xw6½y´x6„ø5€È¬Õ‚{ß‚këby½™'Iö¾q82z^nÒÃãnˆºöÓ*ßU¡ˆfašùm—¢šæ<ð9Rºb}z9ˆì·ì< œ]9ŽÔÊàYeÜM{><*sä7Q—¯íÃçÐ@¼sL[ïŠ ÈÓ]¿7§Qõó›3U¶¤[·Ý7¶ÆƒÄm‰x[Î,9W¾e’¢†¥´4‹¨-]¾kDè"*5ÖMkv{|ì=®µÝ%D)è¶~M5‚{;_ží¬¶ÁçõUßgÁõÝ)%GeúÝÚnßEØYä÷V ÚîGºC@X£™2•¨ÝgDå\ÁÓ9S£g‚${Ñ34QmçJ@Ëïy{ØBßs0?4 QÖóÍRûÎáÖïï×s‡ ºãð#ý?Æ4þë`=ž:çô ¨N0Íß©{ ª ëÿ:¼Š6dì™e U…;Uç¤@UQY‹Jv9”„Läêw @nËÁ£SŸò ªIÞ¾«oC£›ø):ÜhËí ¶ïp ‹Ùú x¦ûÈÖ¯7H^ÜjÉ–x!êp^Ïz ¨Ôµzø¬3”SwV ÷VÞÀÇ¡éêÀÖžT5VÕñzçw}‚3OwâÁ¬v™Ç–‚(ŒrÂ"ͪ[ÝŒKÚ4Jîíé·¤…+pÖ9Œ¾“ÞªÚ?£­+ïFèmýš3gKÏ|ÀŽCøÿðÉñAÇ@¨Oß_özðtôªÞV^FtÆêÂi‰ÛAÔ9<Ž“mŠèše‘s^uDÔ»—>ÏÓC4ë¶/'Äi"ZVàr=Ñ=¶nüœ!ñ•öm}gjC‘×P±>HΜNŸ¾ ë‘ùYD±Ï²í_Ä+«'Úê ’Þ W¿ATÿÊ®QË@¸¯§C_í2øù±/– q¿º¬(³UoŒè…(FNê߯˜ ʃ sDíø6~ï’݈ZÞqãbmŸ‡k©-é ’<žN°¢õÞ:ê:÷ ¢°©\ãyÑ—6¿kŠT=<žî„ÔïX‹çØê mÞ½xj_Åm‚ª_‘‘9ðž ´ÇÛÆ‰€¸\7p\ºôk1ú” ð“jC ð»tP‹\Âã+>øŽ(·÷Yæ¨(7íÝúh~æ´ñìy~W`–÷NvöÈ\›ð|¸±.F}îâeEæ­€3œ5ymð[¶=c9e ~âÖ$¾y™ÜKí%H0¢}÷ˆªþþ}Á—ˆÖávåÎö: ù’14üÈDwvªò~)á‘ûº&ÏB4  Oô0@´6ýB3"í =Xl Y€¨çm§ª<í…¨Aã¸D—#jÌë‹Æ#ú‹ð ™…À·Ÿ¨ W¬€5wW`øËJàÎñ<¬x °¯Ÿ\ 1JKy©œÞ î·_È™ø„»hÇó#ô¢™ÙÕó4ˆ–Ø®1_DzÉáþ͈õ$¯ºý=žÕĉèCÿãFjq‡fÀ›vÜl½„BçÅ—o]¢ü«Š>g‘ÈÃCÃx¦¡Í‹ÓVóÊÂ~•Òü'œy¯ä#QZ]Ÿ’*ž]“?@2((àÐò×À_!Ð|+N¶ETb³Ú_µª2#â]Ü!«ç}D/¶`——©"úªç©!7‘Êȇ'‹.#Êþ=÷Nçùirô1½Å'-ؽGÙU6¢7¿5ï˜XÑ®…Òžé‚èã^¤lÓ[€èzw >݉h/XmšÎùˆT‡~ØuÛ*LS B§FA¥ö­ñïb.BÕ £Â¸•Í€±¢²ml°-°ŒO«úÀìrR·\<ë¾=.Í ñ’áÆkÖ~©æ\¯¥?€l†«Ë’ ly&C{á_M-œ'í¼o³ûîæXnå…]¿ƒ ¢[úx;sD™E´Lø½ú6 ">! {\ÂqÍoâ ‡ØÓ¶I»¢Þ°ò¿Õ–ÈË…[úEα“ß—w-ŠAxÒªõ˜ Ë€§ê‘·'O÷RÓ?ôžÓøßXw“õ@øzÉ«©ˆ~t§_àP¢qÛŽi¨ó’›~ âyrE¤è•À[´6ô\—µÀK±åüè3¸æ[a-åp¿9ïߥ!õÞ§ïÉÛ[j¨_“(]S¼{5ÑÉþ;p à^n‡1ðQWtôð !ÜÉu¨üÞ Ê^œøÙ|HÑŽdªzç^–mŸË)O"ôî1¸×º&ÙI(ÉoßÇj¸õß·…e+)ÚÁK†ß5"A®kÜëEßîÁ÷¯ÁAÛÔ¹P!ªvòáx`³l¦µ?YÕÙí¿Ò< ¥£::Œ< ìgˆÕ!’ ¬‰Ï‹ír=|ÖÁâD^|Δ”’®]Ú³ySÍ8wÅ+¤ªÑ¶#3˜+5Q¢z¦zqOñº“CtTdX7¨(í6aØ1SÈ8È3¥¤O€ç;§¸®–@E×QW,§@î5mƒvP>ãxÛâá?€¹íçË3ÀÖJÌ×ß²DïÎóà"ª^ÕÞ¾Åb¨ŒÙÚÑ£¸?ªj/oœqÜë¬qňÖt­Ûc›·ˆò}”¨óà|Í>”>ªŸZRzØGÙ§n¿Þû÷W?/jÁÁ´Ã@âBL²lˆÝýœ«(6¶žw`¢ÙYlµž{x­Y­HŸì©ÞcKV[¿h¨¡i8pŠ;­ÕsѶãœ!'N~޶—ÊèIÀÛ}ÝÅp&x?¬­› ^ôçÇ—TF"ʨ³·cV˜ jÑM­©ÑɈšø$À«Õs"þ:­ÉÚ¥T²fm³\šhïV5õæHë¿gª­-_ ¥{#sÞ¬rƒ½v%Lµ _‹ØƒîL!ò#Ì«Xjû¸_nù%ìÔaöšé”…Í@`¯ãäíNôÂKµóõáýñÓ®}$ú’6 ƒ ê·Ì½Á—Ž!ÚÃxÞÑ”}ˆ>ñIŸâõ<87ñÝ´>†ŽHE8s¡‹”ô÷hσ¯ŸY'uvp€íæøbkŒ4þkö_^‚mw a.ðîUî<¯ãŒN)’¹B'¨ŒŸ¶zï{`¥ŠnY` Ì.*´[«ó+ãŠ]Dµ©Utë}½Éqk>ØÇèù¹úqÀ¶ÎÈ».@Ôüa;6}ƒèô513rm½udyd¢·¸õŽòA Ñ{= f™ò§»Ì×]„h&¹+6›]c?D9D›žÝª?H^¾t¨krMý(q9Ï^¶Ì•ÖÔs­wzè!zF4b¨öa%n¾eìËCŸ]%ê1Λ©]¶»“ßµí[€;ú1Ó9"Øo/|мV*µ?;ÉŠ¿l£Ó_ò_·ÔèÙ‡ÓÀ¹Ý¼½Æ…“À(š0á±{6§Ûm^Њ_nšxJ¦å žò*ª’B»D=?OøI¢¨sÄNàt¡¯Ž«¡æÂ–S‚€{¯sßU+eFöÈÁ‰: ßqSýŠ7ˆÖn˜•jÒ¤ÊßÿfYÉE¤¦»æàâ–Phãùr}öfÞw]'ɪÛÎ`l ÎÌm}’ ÒëXæcËùÁ·ï´øneOz¥{³zYç»AìÕÕ<±QºXŽÒöÔñ䋪ó'õ?¿Ô(Ì‘ÈTým‘{@’×]Ò*Ÿ’e§ ³îÞñɆT-ö˜óñõD`ý9§z®‘XGžlCÄÓKç¢Ù!PYøFÃÃÖ ˜mç:¬CänŒf÷8›¾¦À‰›p4·ÅM`øù´]žX…ÁýBÖ¤3ìERÆðEPeÝrŠiá+`µh×ë½Q,Jr§îkU΋( Ö]>'º**EÛÆï]ñª5w·TÓ_ µ¼c7 t€qðк½†#¡:jÝœo‰x?ºÿxq°ü¼ô¿X•{3½ù«Àõ=÷tYl2MÛ<}Añ†¸„þ3@â{üìÒWˆjzD+µÚ Qí9ræ¹#0œÝFͦ—J––ûy¨7}ÙÆÜÊóSx/ü[C¥÷ÀNKã'@eŸ!·+nîæÞ˜Û{¾÷ö޼ýóõü€›õ©çÎ5ľ¢6½Oz_¤Ö¬ô±íYàZÎ4š›Öħ 3™hý/·‹Î!ši7U3a{DÖJÜn]!”öx§7(”Š(“œÇõï=D“ E7>€ÐÕ4£Ôê6ˆ:u}r©Ú”6sDj==‚mv˜!µÞÆ­ÚÙ÷ªÛíÖ£þOÿñWý%ÝÿD•§2¶w1¸Z» %ê¨Ñïºö¿ ìPã3|û?¶—­y"‘¯S ã¼ü—àÓù‡òuˆ¾%2luËÈúøÅ‡—éˆrc^ŸÊŸ-A²×àô`¾sê_ò=XcO?:Ã̧j­3¶À7\½¾ ø{ò÷„Ä–ÖÿÜÏ=רe¸’hòÖmQÌ“#Z.Òú¥¦~äžàF”)-]ØÎ… ¾ýðMÊ4.¢]maeZÿ\«9F¡)CÛuíº!'—Jý‡ºK›»"«K©AgŸBõ£iAkvÌÖ*·'­µ×HãŸÇeVT4D¿bæ½À_ÛƒÐÛÌ5^Ø¿¿gž5p|MÿFÔÅ™ž×‡'"µŽšíàn¨lõÀà0°V†ºÍ. ü}'?‹ÎÛbcfôäGÀínn°©W6QßT]Ëc.Ž‘÷Ñ ÐމõÐSú|Ò÷dä´‘ã’×{ò&ÿÝ?mÝ$t)‚½³bJŽ•‚àNt]}[Ä‹¾ @¼mûšE—@ÞËöû¦<Ôn®QÊÖß/1|VÿYÀwÔ³éqƒÈS×ŸŽ­Š{bÇ¥Ë#>µáÙ‘S>´ì‡(k‡}¡ÚJýG a’uöëVkfÅŒ‰¤!•›OËG­AªEgÂw#=Nœž=ZÄMny«ÿ=%ó-³¬³püânä&ÛËㆂk€ùïë©>Àܵê°&^?10Šð#}C¦/0m ï,ó#ÖÓ»³ íJr¡•Ó[‡×ÃAŒ¾7‰ÝÜïïüÆ+ÞN|QGœj¹çxsDMï7g§—ðœÖø[PZp’]XA§È¿ë÷¿ò×_õŸ´ì°š|Ö„ÏNÍ^wÕ„ÖM™ŸFÀ“E'4àb4TU¼L<ýJªæÝ t\ë Ìñ¾'·.¼UÇÕ¯w œ ¬íÍ´ã>œñ£¾“CË Z«ºÄ"ÊØsFkZùkT;FôJ6°›ú\8þ…ôNP£iö†À>×úÎ’££Ã;Š´³.Ý_%dü[¨þàóÞ9ΪÜvôÒ\ç /媘ùC±ˆk«õD?sbýÕyvcê&3úÙÖÀásù¢¥ˆn7û|™Ýl¿uÉFôÛ;½»SM¡2o¹w¿TN»ïé÷*{÷Iº¹½TYAôÀ¶û ’u-`r“ëPvÎÅ’âz*wÏî½úB0/ŸEß™&ÀÒÐù1ýê`šŸ.Ï:!þ,´‚íÇ¡í|‹xa—¿õÇ=âaf lúø‰þà\ȈO1ý€uüóËO,°Â6Ûï0÷Viú•*ã­DýšÑQ?oLaïxíÀ·n¢9z *&›{ r¹Œœ¦Ç¾å¶¦å‹ÈîOÖAe@G“U' Ñ.ä‡V7B¿WöÏ«zã¬OO›ÅŒ¶ó†%éEåÀ->MEÄþÐĘã5°wߺ6ûÜ]àÙlî»îpì{†/7{"Éhw•Xu .WŸ]A¢S9;áðúmNŸ°r¾Œ?Ù¤Åú´h™ÓÆ’È—£ÚÍâytÓ‰sa}@¸c¬Å}¢^ X´<ËÎ$?òSN¥«_‹ÚX羓œ¥–D?r Mr5 ¡}/Õê ¢%—ûk<˜¢²Y«‹º¤CɲóFó2Ö€h+c”“C1T¿Ê}¼s0°l¬ºî0ìŒçGípÞúÂåIÂ@bøpÖÕ“ jû&¾|ì|ÍËö3¸³¸æü Qò“šdw¿…¨sÆúÙ9L#êÉŽAko$#Jà´Ñ£&ÝD”Éêi×§#JÇ×Áwú!ê´g!ÔicAÄ{ΈÓ] yŒÝ±ïT#›X¼÷s·7ÀÝ“eÈ0ÞÚ©Oc­Ÿ½ê\Êeiþæ5EK–ÜØ‚({Íõ­f—&¿ ¹(N±µSþR¢Ÿ6eæë$BžÖyO¾ç¾aN{[šÉcDÕÜ`ñ¼g2RÕ±Xœs©Mw°}þœÈ¿’œ1f~À˹iœ6b°¿Ü¾Ý v÷ºßÙ«‹4'}¸ ª”Ñ˪’küQ×î88LãsÍù+ˆY6­\S¥ßPЊè3rK†¾ÔL—Ö”Ô5_*î"šNšùðÈX¤>fû†¡}½ãòâä¡§éÀ/³þäÔÌDœÖÃ~Ÿ—Öo´ŒCÏÕÚMAtƒ¾›3ˆ8ãã7*³¢¿ÝU¢í |ý§ÁݯHÏ_…µõŽ^Xlãj­žA”¡·¾¶ùEÄKXÛ‡Cˆ}ÞÐõmz¹!¢X>ÑÖy0äß÷Òàq*”Þ©¤éººÓ›á¾(ÝXs$ÕÑÇëî¨Úg{°«7.gN —‹=B¼€=®PÒ'g0°–WíèG?{†°ŠB ÚAë»ÿVÂ}‡Nv²dKíÇšÒ÷øªHB¿™ÇÎì†h%Í5º«M@´ëžs­z#ú”œ+Æ;‘ŠÉÂ][Ц!ÕnN}-[ÍCª­8š:¦H5…ö x@1Rëè:jaî)(Méã|–•ãÍ[Œ yU?f„®Z%Y­n½=Ô•QZÓ-Þê$îøM7`êH’W/Ìæ«§´CýNmŒîàG€·âq„uZøÜ¨ð B"^ªøŒ¥»eÅËã̱ÏÜA,ß@D¹ððV”F†´ÿ«©¿kÖ_ÓÿU,0ríx︴ÿ«É?œâgþíG®Ö³ˆn [ Ò`·‰·"à÷Ìr>¹c*ðÌÏÏ_hGì+f7{­0!æí«âß±DÓfjž(Éý•Ïs7¬‰õt¾Äl9Tu·X[NɇòŠ›œm5¥qœWY¬¹ÒØSºÿˆ—dŸO;!}~Dµ9¢u[ªc$_·ñ@ô$çP†Ñ…hÞ¿DÓ÷WVŒñ‡3 »h ¢Ô*Ö~Ë`DÑc;«l~†h®‡7_ßÖ¸í&·©nKÔU†ížn<âhGÙ­&ùbúÖ]C²AÐZ§¨Tàg¨9ž_CÄõK–î~0'‰v±#ŠMß j/¢ž×xÚy˜ù "¯TLžDôe ýµœ’Ò¯¶_AòÅèÓø#,Déªiá,‰ g_õϞəç»ÎkFE´á—ň9˜·Zoãsc zá±#Óí¯8Z—\xß&Ä;®;ˆÂGÍ(-ÉÁÜu¯2¯ƒxݵ M¢îlî½ô íET.}ÝݲQ’ý×V‚( c•öJBïSÎz\!Ÿ¾ŸOÔM&ºŒa¹ Ú—™«ÃPß—¤¦¯öºÀ ¼máøhql›Ç€¥æ×zÊôD`v[W9ngþßûoÆä`ÊëKÀIRÓ1|òIK+|R®wÛ‰wºÛ¿ËÀ×eÖ 5ó5àu"êh³Ãjž¶êˆöÁnò5·›Àj®rMx’ ¥aß„?®˜=¹(XënŠ9Àä8´S‰…Ê^žÝô,VkTç{†{ˆõ/Ó/h»¹¦~E­¨–éEóˆõTwúÖdˆ¸×r›öZ"½iéc© *ŽW™Ò+QÖ\o;ô±5¢~¹›Æî¨-4/T J³ѽZ#šñÜGWçý@ÔÒÓ“ÖŸUC´ÇA­ç?êˆè…0q‘¯’µý—ŽÞŽhéãCú-CôÒ¯Þ]ìü×ýœ¾;µ^§+9[¸3‰zl öæ“i Òœr?rû»šç Ú5H²æ±ÿl?̽7Ù„‹YzÀLú²?£¯)ð²O~³â50iN” /àäÄþ ¢ß¿»iÊ5DÒß=pvUòÑc¶LÔ|“Ótœ#zg®‡‡æªÂ &'GmyK}9ç9¼_Ñ1?d,‘Lo† ^ñ¾ªägo}EcÇÛ½×΂k[7Æ'@VI·&+ú–OU4|é]'¨ÊŒâ-ï´ 3wNÌ7? ÕzŽ‹7qÖÅV7ÎW®ƒ/›J[xm¶BÔé¡nÇ¢ýóŽø_‚x‘cWÁý‘Ê«OWΡ#Zäœg-K†"jÀ¹±ç."jVóu]SÚ ÚÑ»âÚg¥ý+óN@7ƒn3‘è>ëŒû:` ×¶ÚDøQ)§g…¡pb4ÂVNéœ)o0|7oí¼NIÀP)Ož+LNú±ƒªùc€q¤e‘aÀ<¢ncШÍmAø¼cÿ‡Ì©ÒþO4ñÖ³•÷BAR¨nYRìžWš—ºuÒJo,æ¼íÇG޾œV·£»¾¾aèÛ&ÅvÒóWÊÆŽAwnš#ªêÙ¼‰¾ÎéÓú.•S¡*àèE¯ÁiDÜŽÙÝÉ& ؽ[Ï z×DÛ\{j銨ÎúM™çˆ}æîôÏ'"O»nùpâ•Í,@}Í'“nAø9rœÛy¢›n)8ùAˆè+;.³ïÿ©jôqz5c0¢%ÆŸ¸¬êŠè½f&EôyU>ºÏovó³†_ púø$ Omœ³í›ÎíöMzþ-Õß_ùŸ·¼Ýö¼¤ÇPYhõyƒ¨‹}'õIës„è Ç´YèOÔ”ŠÖ‘ŒÝ5çgÉß(v»‹ÅóÃÜn+Õ?ßmJea+óä÷Œv¥‘ŸŠ ²õÃÁÔQÛ ÚsEéÛ€}÷é—+_‰ýn^O“<³"`dúœ:~7ŽˆRö7#ö[­¶XlÁ–WÃç¿£8kïGÓ%¹D¾M_ÕÙ‰‚¨K‚?857 òqØú]ƒ#zŸÏS'˜†#Z’ýHë‡eÌØ±±Ä>‘“䵡k{Ï_¿ËoÆWiÿD±Ñ;ñ¹c¦´¥œ˜kÖ±1¢xšªhÀ `ë>Þm潄}-¯tB”ÏÙÓSZ€P°"9NÝù꣊¨‚¤“óž3¢›ã7üˆ¨áK'Vw^«æ?—7œ?óÜíËÀ<0Òÿ‘®TÂ^ÃÂ:À$þxˆ²]ªÿšý¿ôó6Šw_¨²ËøáÖqQ?ëV%D3@´ùF [êšóÂï’ŸôµCÔ)Å)¬’鈖÷ìEÇ“€D ã­÷€²¢C_ÎǧBÕå£%QF瀣åÕëä˜vDßd»mã(?6ýfØéù§ämhø·ÀèDÛ7ö¸5äw8Xä=ä|½¼­µÈú#”…²Ì˜GAÕ“{&gB›AUŸ›Wö$Öå}$¸ÞM^›=ÕÂË·/~&Ö]°ØbP·ç H·Qé·" ø%ë%˸D=yk™š§ ˆý‹Œ?_$ìØ×_'{×DщçT˜… êúwÌCˆ>w›åbþÑ9ˆºõÄgMSDy©vAÝú ¢v¾·G?QŠ›¶¢V¼@Ô/wr ”Ö?ìfŽöú½Ë ò™ÞèM)¹òn³s`Äx¬qÕö|¶GÔP`ŽîýFï T«j÷Šouªô‹ôW‹c€³pë’AÅDß|,FÛA X³ÝޤŸ ÆçÀ®ÞIDÜô.ˆÔíŽ(]Bççß‚ÔFÏ]|Ax¨Ée³w/j±=¯Ù]à[²NÚêƒ «ƒWÌsŸ6®]ÚÞªó¢6°¢Ö!Ê3ƒœi·e§ÅÑØ#¯@œw˜}­p:d'ßxYôz<ϼ︪'´KqOû .Q´NÀs¿²'?ÛDíÏ ™Ñ}HVŽO_í’×ë¾Xm=)}Ctð‰VBÿJn“¤£qQ2—˜¦Ñn#Êý/øžˆ’ÇÛšÐÄQ®í÷XmFøÿÉ5£ÎÁünÏŽ‰ˆ>wÄÔv•ã¤Ï߈>.+Õ„¨;ìæ„¿qîá7‚OGOeAšîpð —Fœ’èAù¬a®o$@UKúní÷û¹Ø‘¿o áw[%ÃËK¡ÊÄô#3%Cʸì8¨\Oyà×m6pt³¾öÑÊÌ€•ÇA˜Þßj{‹Dy²'¦xñD³ÈºwcÒ DcîYw{=¢w1¹:GôÑÃ=O¼Ñ^úüž±%Ä;iÃ"`Æ·. èá•‘¶1 ‚íPõÞÒFp}0ެxÙñ)°îŸ°Ü}:ž¨ozÇí(®ÉˆjÞ|Ï÷ž³º©®D4CZwç9­mÔÓú|DßèzåÁ D[GßÂÍ’¾?@Ûloïµ\z~Tóü‹«ÝÊ`ÂQ(µ¹Ô¿Ú92Ž©öp}“_œŒŸeƯ&÷Xù*§ùÂPîÛâ=Òþí¯þOúüúÿ¼¿ Ú,k¡(Hz~TãÿÒó×˦¿xX—vÎ-xÜqQ~Ô£¥ù¯æý‡š÷?$g½O­½OCÔ³ÌÒÓm~ܓҙ—%6¢b CÔ ©¡1ÓÿÎßÃÓN=õÖ’ž¿U¥\ó˜¨: ˜[2Ž]íÌf_ MtæÛSò:òˆº×}ùÔ‰w9€Uô”p`U/^W”\×€'ÏCÂ7®_»Ða˜Ý'Mî2øš ÍOÝ——ÃaÜ·UN@57ÞeØXCTœž…ñÜE0Ç${1°w}L^u£ª«2Î7sÁÆÓwrÂ@Ðþã®÷»Kß?’›èÛÛÊÛ›·~ˆôù߉ËMeCup@¼ l<0†­ÞÉùUö#Þ-YuJN¹ŒÎøöªK<Óµb/Kóë¦Ä&Ãr¡ôüœ~°~YÚ^`-\š¡¦5X¬ Ä¸¹áÀÊ[úáŸÙÔmSio@0EË;üâb¢e\•¿$κ–Gn{3÷³ß­Î§€¥5ö˜çÜØÀ zG䕚9‡ß€8¾ïÞv¯& ]¶´wF”…ûv\´Iûü»«‹í½ÈÖkl$‘¿é/÷ì¿ß†ˆ ɦSZSA0ê[4ïtˆ ®ôàíáœì” G±!Ðâ#Êô¯3© QO»Æ>ZÕ„GßÝ?€¨W–ëTUûÕ2·”™eDþ+ZzAÜ©÷m£½wÔi¤ÅZ´î­R‘¸Ìo²{>¢ìõ îݔȣÎ︠µ QC'9¯Ýè‡(‰©ÎýÅ]=£pZ\BÔ»®ºÃ¾G Z»Yר‹­ßÙx‰º&ˆ^]Þ1Bë 𾜿‘?D_š)©¶aÀÙ‡¡¯.¨ànï+¬@øaá0{ü3#­Oy‚`mÒN~çïüzËÖBÔUÕS%Ó‡J÷ºó•Kþ~ì‚Ý´åa½‘jOÔr¹ébà"‹,}÷5À¼>œñæ…%°¾ểûtø/ï'|šFô ¯\›¦5GÔæOlsÏžÿûùË_ço_KöÛ°õ„í^*#Gƒ÷Ó÷Æ[£å¡ï³ ¡üa§ù«ïσÒY=fµpq…JŠ_Vg]:aýÌþƒÃìpl)?Âm®½7× ¨øv]ôà{ØÒ3¾e!ÿÊŠ[MšIë·šýWz~ô×ùÛ_çÒú™÷#Þ0§òºtÿÿKþšü!í?%g¾º—ò–ƒ àôm"¯ædª°.Jß¿£µÉrˆÕî…¨ýŸI¦yhKV>îÚ[ºÿñN=Ýé[ލ'œ}Ù”‡À»3iØS¥ï¿Š.„d íöHó?ÿ˜Ž[@=¢I6ý`òÁÛê S]€è¬˜6H\âßµv]ø×ó&­¹sÌ×#ŠÅê~É¡Yˆâ||ðž¢þ-ZqîɳDå ñ°é](›tëLdxoàØèvÊ׬ÿïçÏ6‹Í÷Tß‘ö_ÔN³›˜FJëÇ¿ö©þDÍã‰üj´—ÑW¢ÏIüž“ Å2>k¢NHZåÞ˜Õš¨ß¿½M}WU³3=A¸ªâÚ)º3ˆ&%·(ÏHÉ¡!wOvÙ(}~Ê)xÛù›ƒôù›xQÄñÌU Œ)ÊqϺKì÷îuM}üoUÇu|6ƒÐ3îóˆ)Ä>dsMÝ„WC4?™Ä#ê®…)|máÆ^2âg ;=7/Âï$‘Ïþ:Þ…&Îcì7}ã'`W`~åU¼Óšçšß$âíÍêü§áA¬ºÝŸ·ºˆÌDˆ9¹³÷Ôœ?!šõ\zX¢ö«2½·C Q¿îغ¢¹íykðglÌÊkÑDÆ3’fÄ¿ªÙ?uæù eËjÎÃnŒ§¾ˆvÁiç8Ž ð8O:‚ÐjæœìØYÀîÓÿâãRàu£ë¹µ€²v/{”Mí!=?ãêMùê~x=F_²í[Üv­Â¤õ Ëtá±½ÌPà6¨Í—¥õ´~ij¸Ò¶¯ p²ëñáØGj½±ì¹9Z7ŒvÆ„]‹{Ç`~ų½¯ÞOëéÜ J‹Ô;m7QŒŸk"šûÚù¦=ó,ØÒ’øþBÆÂ™ÍÔ€qgâˆV’ÀÒÒ È<ìL÷I«"g¤7›ÖdùçcÀ í>7 ̘Ë?¨Œ‰{:3¶Ô' „c>ßs8ŸèÏÚ5a\_LýC…!Fg“_ö7>=žª …7œ•Û:õX’^o‹ü{Þ ’ðÅÓorˆz bûÐîˆÂoúÜvøVÈÿ뜒ç¸RsxDˆôù•8±¯ö@Ñ(Ú@ùØFt¸ÑÏ:QK¤û½®ÆÐdf§µ®No«¥ñ#}þ@392ÚNúþ}Íû{Ü[C'üíãdàYìÓâÏFÔi×ãç Qò–k!«+eìÔöWžûsÛH§ÖÔbDÝï¾¥·m/iÿÏ‹œ8\}_"~“»õ]™ ¬Ã9c^°†·óŽƒ³ŸS×þ@Ó¥úÀmucÛž€»"Á?ˆ»VK?6é儨Z×Îwÿ±QT[nlß+ªæýuÄ^Íõ”ð÷{ UV¥^ÏgKí¯²$=¸¾ øŸ£ŸYlù Üý6gn¯wþ};A¯#ìГÅÀyä}$y÷Kéóι•ZvÀMIÊï¡å%}ÿ¿æï7¨ô^m6d!ª¶†ýÁ¢ÀÿóüSzþ÷—þË^ÆŽUK ÉTî†éÝ›ƒàõƒi— @ܤÒòËö×HeH[~˜#­ö™Å^H­ èãB5Ò0Ÿ4J°sÎølj%}‡·Ž7ÓpŽ®Ô~½Äý¬#ÿ>®yþóïþQ6/𨾲Æÿÿ®Ÿw|ÜöÝ–èßN—¯ æ‚øi»/çoNBÔžŸ‡½¾¿…ð+ÊÉÓƒš?‘rð{ÓÒùEm›Ø«Ôä_ fê2IëüÎïtZ‚xÅÈÈÐ%/…v¢ëW« YžÁ÷Œè«ª¦¦õÿûùqÍùiÌÝ;$Uúþ!u“øy”§ôù§õlO(ì‹7GØòxÞŠÙ+$êsÃÁ±§l[JŸÿñ?PúÙnN7uúž `Kè*’U ZÕýaÅÇ)5ïß"êK˧݃#‰z-êÁc§5ÍÇûãÅ2Dõ:?¥÷µˆ¾µ“…«Ùp¤¢?½ÈR…S³~Dée””áp3ùKwž×Ì=ÊÝ=hB7´ñ©²¯Tÿ’‹6~)ýŠ(ÃטX ¾UçßvÑòíåÆŽ„~Fß;±$žè³ÇMX(v¼aaÆëusÖ¨7×W#Ú ó´Å]¿ýKBþéÁ >lN²„¯L„}¯›õëÒ½cþ]jjŽ9¤ùîï8x²óJkÿ™DÜܻݕùžÈ+¼É«÷û Ê‘7of¦ Zë4çÁÛ²5–_‘ÜQ+ªop·D”S4{z ¡w“Ýß³jqV0¢i Ê4Lm9pÝ\¿E—ý‘Ξ˜=ùÊM(ŸÖÄwþ‘ßõµÏ¿.…9>9›†~€|Ï/ÓÚYÿí‹mæÀµxîcêLÔ“¶+3ì¼kÄìv¿ÕxàÛ¹•[ùè¶ë„IϤï_ðGx Ú\ý5£ê¯Á! ò½åù¦¿ ®H{ã@ô S%w}¬Å Z|¨Ù;ãIˆór°ÏaD›¡ö]Å©´|°s†NoD¿¢Zxø ›¹¯¯‚D}Ôò C¿sÛû.Js&¡á“½§wG´ÿð"n»?3˜3¦HBµ§Œ]wDgœ|v­îü'.âQW;ƒð‚¿SOàŽgäUKûþ¼÷‹Ü$êé©ÏK9}¤¿ô×ó»äª3-7d÷H úÐA~Ûè èÁ‹ü Düv¡•±QNóþê„èýz¼;÷$Ñ«¾–‰F9#Õ,óõí,7õú ›ïÃÍ@€–«12Ô=¤‡Ý "ž;zŽp_ˆ(6ùWî['ö Õ÷ZD]Ý&¥pÚ—¯ÒøaªŽIôOù¦Çš'@°k¸*G{•mf”ù«›Ê¶ /†ˆrËzìöStDí.8Ç€ØoGGWuè³³æï7¥ùƒ²s@up÷L©ÿP.šV¥U̖ØÛÍaÔ5p¶‹ßòò :½ÍõÕSMeÔîòFÕSÀ‰=5ÖwêPà½,Òôà`oqïþmù iÿÀ<¿ïDûA—5)ãÒÔÞ/£UõÅ0}°Ã·%,9ùúï÷ÏÆ›N5Ḃpؘœ±Ç÷JãO0gÄÓ’ý€—&ˆépÞQÅW"m¨D\å¦öî0¸-¢ æŽØ0‰h‚‚Ÿ.ÌB4=ýK’þÖÿ_ñÿ×óObbA?¢Îg²DÑ t û.^ÙÕéË£½@RéµçnW¢NqZ?nóíW :zÎbi!Q‡ù¶S‹ëÁ€ojk¶u°¯†¼uÝ) ,ô¡|½_ëóCyPÛNïʶ¦ˆ2 jìÞ%~ ñ´^|pF$ˆ7ŒåE{}¬bš™oñßç¯p<¬)¼®‹Ê‰ìðÀ `u¼s¢¸(\ÀŸ ‚?®oL‚Ö}yÃnƒ$¡ å«{gà=|`:rÇ#éû—ü¤Qž¾^"}~Tóþ.ûQÒãƒz'@øé¤ã‡'Ýjöéóoéß_þóï7ÿÊßRû×üýî_ûß÷ÕâŠn„=+ŠJ3{ókû«'˳¤ÿÆàlÌ‹ïœÅÅE׳××ô¯D~Ëñ3ÎXšjýM†ñT•/hPšå6aFs¢ŸÑ;ø}»_`›M\šî,±šóïýe Zœ2¨G,¸5Ó8ôL{¾Ï3àžãÿjØ·Æ,²_àçõíy!ì&°8õ;±z°™ËĶc{·8uâéík“jE}a²Q£4âC½Ý^oá؃hîCÍÄ/‘Šî »p¤òĽÕP"^ƒç„äëh¢ÿGÛwÇåôþÿß«2²#BFH2^LjȈl‘´” Ù#Ê*É*I""IFF*+ŠŠ2’Jš÷žÝ÷ý;ïï·s:ïãÜ•Ïçûûãzœû>ç>×z­çëu½®ëV«ß}|ª5¢6ï~º¢ëq„µwÙk·!E¨^bÝ)܈°2,g…Õ ¬ ƒ,.wA˜iÜ1š§Þ ¬_üDÞ6ˆÚé·C;ãþG£Ïïs©^ XµÝòáÜ~bø¿üœò1ö Ò?Âò_Õ$ú}ÙÚëÞÓ€{bàÝ[ofBÝjçXQŸñPw-?FzÒD³ûöé£qŠ»1- D&ôï,Shx¹†öÜ<‚\ƒ«õÞ÷×WW¢zîÈu=g‚|IV÷—o‚تxÇÖÿ ?lê\ÿ.Õ_ƒg7rÝÆ‚úEhB¾jæv†F#ÏÏY¨ÞP_ìaódˆN±ßö¿>[ÿá¸Qí&ê¯$FìçµÃñƒ¸öŠÙåb?á­š5;:Ü¡±7>ß0ŒÆüºœ Ê/ËŒG̳@è}¿wï5|*æ?€¢qÖÕñ/¶€ä܃ïûG.™ã…imA~-J¹ù–%4þxwsxÆ |ýCye¹åþNÔŠÎq°DèA‡7tþ\áGwa÷Ðç/ñdg¯Œþ L6[¢ÍŽ¡Ýù»ý¢hÍ÷>À˹¥2sð”eçã'àyÐrÇžs€}„!?„â†Búëø×YÐx,åÎÈ'êŠítRW€‚¥žücò¤æü…&û+:›Í´ì= ßÞÜ*œ×õc>”Æ[‚Ð öª]¬ñÁ„7™Ö7@:öÇqkAÈFŽ‹X‘² $?Ž~I>6õ«ÇíäÎs™Õc×#Ñ'€-ÊÛú,ØÓ«´ÙU™øþnjßê7/'ÙÅ~æE!”»i†Ï³~îYµ¦¶G8ÈüR.h¦MÙ!OÞÒO LIä²j—oEFžeöm¥?6çMÆgOLBPcq¤^Ù4ç5ÅOeß“Ìï§ é>ì™ðc§$|ë¼3kg½Œò³k„åÊ‹€kô »Ñkcàäö¶ïã¶ø2dï ÓeP̸Öa&—+Ï&îk ÷<×{ùO‚R×"Óü'à—Ç£äBZÏÂüv™8ÿ":u8Vâ¯ßaë_¢Äâwþz4<þÄá_Õ£áûwÿ7?Óöz%çj\á¾>O¶ßÍAý–ìYgcÃ@<úmÊÎ9ŽøþCÙ­¸kNå€âœÅ¦Ž»+3bÔ×N¯~ ù§özkýøã†/wGýXq¦ðüé{zíð<§[µ{@TÜþÝÔð‹['yZÖoà2–Í´û'N( Œ<»ï(Ç—/ÐïS ÊØŽ' ‡nGh5=W:œ£!ôˆCç! ¡GŠ4ŽfDƒ’i´¹ñ1(Wë(iWbñãæýï}G/Pkè„ÐfL4œ¶é.f? ñ©ÓÛÌÃýOlýBÚugGv-H½êFÑ{‹0´_Ý þô·_2xËMHGçÉâЇe&Æ}Ýkƒ`„3ûæ9ˆÆFZªõ øOy׌‚A8Çó÷Ä#ZÀÖ?D›ñD_Sl $=GÌ;±B$'û 8ÔoÔîºÆR75Aõä®kÞ¹o€sé|ä½>…ÀÎ4X÷3;‡i¯üps.ð…výgŒ¯é gsŸò49-pìÛÙaô/¬‚úó´õG»¾ê‡ÐNîûö²£9ÿµAq¹#‚ÒYsÑ™@ŸEØú#f?ÚÆöB±³P2éFÿ4B›¿-N©‘‡ÐEuŸ÷”ïÆ}_èâÉ }k_@ß›~ÉðÂ'\¤[gŸË¨´Ê¾ºsJÈvW'¦¸åŽÞíQ½Ñ7*(qÈ×ï?m³Z’bý¼\wÔ_·«ï‘@¥ÉÖ·Ú–¨| Êrn?ü _È"/¥ Ñ ¬âoç@üÔ-ÒznÊߣ?ß·{â æ×ÔjAõ7‹ãÔñõcQ©ÝÒEQÿüqýÞùt¥¹o—ï‡úÇ.ônìAò}ùíìh¼µ¸Øx°¦¿Zƒ_ŒËûÓ q®Î•³³zI?ú‚°t¯v‘~EX¹v² 3Ý ¾¿ÏèŸÕWÞ§,sdóþEî”™Q?µNàû°ü%,þÉ-M­ë ËÌæýÛof^6?÷ˆUâ±]qÿËÆâq{ì.ŸrneaÅ÷DLý`3FHƒ9䔋 Ñuø©·SÃQ¿}äñ˶áûðõk'ÍǶ¡~Ì–N&¡}ÙÐ8Áü@Ÿxk<~Ñtïä%6:?Z»âòÓ@^ Ý û@£uÍp‰ ~yÝ]9ôy14LZ£¿5~íÊÙª lÁÃ(‘¢$p$¢ã6gTo8ì<Ó[¿ßdaêÁhˆ±ÙsÈiˆÕ†÷ÝŸý?ì.»¯œ£jýâë§9¦1kA¶vÆÔèS&À©ÕZ7cp'šüŽö§JÝž¾l[ 48^ÞÛ#¥8ƒ;›¿±¹ •ÄõÚK" B¢”‡w½âG̼M§6Ëÿ‰¬Ãõ/Ôa‚üçÏ©ÃaßÊ©–ñxþkè“÷æaõlì}ç²3Âz\²Ýuî5<C0¡\ëÈû_Àa,ü=üd-4T/Ý猞Q¤þéhFóú}Sþ®¿·(%3"¬ÿò!cuÀϯP|÷°¯é„úEÛµ'»Î¯B]Ì\"ßìÂ×ÿðüõ&ÿA î/ëjßÄ:‘G»éx¿kNl~ä.¼}°áyÈæÎÔít¤ÙÿÅè¯X\â«t[’±ÑgD–áùâUjzOñÓŽ[ÒŠn•wáûG0ûåOˆ6ŸI\~ýŠoÏ ^f™Ðzé¥TŠ“îN°ªÃà†°‡¾ì¢!ïîk ¸™Wbð*fª#º]?Q@î釽GíåÝ®–Q[½áɸ›¢ñõ7Ù*½Ü#‰/@¬¨Ù½K½$âœ,Eý”³ÚÑ TÏòFÍ“\Ûùj³®¸Þ£ìQþzy^÷µ‘ßbJ_ßž‰ Ò\^½Ûþ”ÅÔÜò2ãºÍ^¼¤ÞInÔz‚äàóŒO §@<½ÏýIÖÏ@J/<Ø«!Õ–#¦¬wamøçÏ3È___cÃ>üüZ¯ØIz´'O¡OÜXÊë¼ëfFÜ粚Q\!s›#pyëMVm«!ÒÉö¥¸a¬¾([a¸ï?#wçå䯚ﱳÅë ömŽOÅg„aqn{äXg„æíº}$ä_ù´¢_¨¿sã]!÷à^„…|Úl·l(Â|ØGo¼Þ{ÿd>nç3\þ$6C>UßFùîíb»î‰9í”÷¢ÇOÂQdϧÄÍûWÖ][å]wŠ·¾U·k>¿ÿ&ã_ì}FeNØ3_:>e[ýÊh—v=z”AcbÎüù’`ß\³R&ßû={ñA×ëÝa\ã é§•ˆZȱIËáËQQvø«Yxû²˜Y'¢ß[gX×G“Cë qqŸàŽ16mrêË‘;áùG\óèK €ã]7u©ál„6))êàZ°SƒÏ꼪nçƒQÖúÓP?iA ývH̺vàLÅÞ2ߤÆT(^˜ž¾¨]Ž?ù›ÏZ=ûçܘã•}$ô3ÀK_ŠØö9¢#;Ø'ÃŽoß¼áæ'C›ÏkZÿ—ì~r%ô®ßÿŠù_’øcÓ†YLi‰áƒCq¹xüY¼9duYWÔ¸òñq‰Ñ0×ÛuuÎÔ~ÅüÇ,—Ïïk‡8dÃù•t ÿL½ 6È…hïn¿’vÔ`ôÇöoŠ îš õQùç{Ú»Ø&áv>Їuz„Á5Ñ£HV®yˆ§:ÆæH Új ýÑCàwω-T뜧Ò.ýn¼iÞ¿’.½¾ÁDñíËñ:ÏP»»¾LÿcÍQx7qúç]©Àfft¶ÏZ ž–Ì(¶è GÛEøÜw„+p"_»®)4þîôðkO|Ãsò.ºœRé“Uï‡AUϘ;Š €ÿÎtjÖÔ¿žºÐmŠýwÞeÞ#t-ˆ^L_5é8H.¨½`Utq/[vÜ9?û~ñOª©AJùÊàù –ŸñÓ?Šu>Ýžâ÷ÛåWâù˜ý”œÜ\yý“Ãküg3¦ ~zÖö”Þë¯qLÙòkÈ‘ÄïC@²h_”Hß$Cd×'‚$ÍF1½ü”Y±e×C¨³ 9=ÁºÊ«‡.»ýs%ð «c³|8 eùÞÈCq¼·0MgáPÈBS· @hz|M_Ç àüöï]›‡êy©é8”O»mѲô%ð¦éõy½ „N—ª‹j«ßíÌèY&Àßñ2¦›S-ž"VŒ1¶î¢]Ó”OF9ÿ™«¥mí!àg\²va„âúm—ùQûºâvNŒ×d|Üc\Xºä6—§EXƒÀûæóC‹Q>zÕÅàFéM/þù­]¯å¨uÛªCĘýʸzÀ„æù®g͉ôð=¶£@kÍÍ œ]ë†Çh£z.*ƺç«AÀË X¶@÷ð_-3L,Iö¡øùJ@0ìHu÷%¨ßþÖ=eÓÐøù3ØþwWÆ[à ‹Jñ|^’c—ó æ ðóÚì7BÓzÆš’nŒÐfÏœµ‡âžÃ—ýñ±TØ”Þ;î¨ë¤ƒ|fÍt¥BÛ4"ÖÙjÿaÒ}úa t•SµÌ€nȵœ`›·‹ ëwøSv¾ŽÞ.jÆßþ½ï3sƒ†çi»—ž?MQܺ$»_îTPfЂ+¦Ø€4uÅ\ïÚ—À_âñÜGD'o_ô„,Ŭ×=w«'¢¶WëT ÓTô|ÛwG!?Å÷Ÿë%õcØCóù»7  ÑoÔž+ûA.°Ý×/s4îÚݯL rãòájÆÀ-1âù· ’ÆáÇÊÅ'¦ë€t—õï*GPtZnÕP&©¡Û1EP4†ú½–°A2÷‰§ȧT§sãÜ ñ¸­N_õM·ÞÑWû;(MïÜ4t{…Ðú2O[Ö”v'î_ZÐ ”ÛÕ­Gh°Ñáté –.Úïï ü»šÅK»‰ýãŒK~© ؼԢ ½ß£ éX¯ ÜŸ ¯ã{ônÜu׈Tà¯ï¶ÊrÅ;湿2šbfÍ Ýi^Íç7Ý=xhÿ$<þÔ´~ Š_ÅUcÖ!ôý]GÌõü²u‹’WÿBñÐ|cø¸xüü>ìüE™û“}|ö6çaëMëÏò;£-rìšóÞ•‹$ƒXHÓYmÕ%߯FOå]œéƒ"´Íýœî&Áㇼ™kz­yŒâ¡9Îq‚‹A y²®c6JïI©É¿^ƒÈðƳ>êo°øÂlß=çu¶yÿGÎÑŸ,¾Ÿÿ—ˆ®_AzaÛÝS—>‚tTLëZ/@¾Ï}ŸöÏ øù~ þyÓ‰Ÿ 1U!þÂîÀ æÂ—ðõG¥UXmîüþØû ÈÊ g®ÁìgF­[Íê6ÀKý2›»§yÿ´D‘XvåÁmv¶-{Ä‹0ž/cMÌX d‚QÅë@ÒýíÇ ¯ÏIz­Oâî^?ëòbçž ‘íG}åX[vúØÿYþ3àØ<åçè^ag[}W…hö¨ÔSáÀít>Þ•Õê??0¨`&ðûmîu«â&ÿÁäË_ÃôÏcøÔgõšœü±’ÀÐr«ÿ4êÜ÷÷eoFçÿ«È9ëäXîÊì;–O_Üö9ËøÆ¨šË¸ÿX’·Äîd?T.ìÀ?÷mÈÛzÕøõÅçËŸÃ×߯5ø6VMEOiÅ´y€wD’ÁBFÄ&·.‰]A^suåÎÅàÈÏÎÕØ ‚ü2æê‡Bhl´Ûþök,Èw­0¹pó34î¥kí3Vù]Of#êÇÈGS»; £|8®½Eqðîþ}Íëÿ›¿óGüºâ2{б}Õðc^çTƒ_ó!GØE£áÌyø´CsZ–#pµŽÓß œß–„)ƒ€7i bUêåGf“·u} UYùßÖŽùûRÝê=í Ž.ÐûÕ- R:ùUn}ÇÿÄZå]vx$ß[2?â¨CFޝĂýb8¾ÿ©Î×Vvbœ~þ~~_jvì†è³P\ËÜ5ås›å»=ìa×°‡ß¢¸fÄöäÃ~þ 8ctªcHˆ–«Ÿ-ÉA·®?|Ú¿êû}ÿs å'uMw+‚Æ>â^3'ÝqØûÚ6þÀk—ÛIÜg*Èdñü¤¬[ ˜ÿ´‹ñ©eÍë ŸeC£úýÍGXÁøú£òwmPG}KLÝg qIðöqa¾(>=%+cßǬ p¹êáô[áKóŽ2Ð.zbóù‰Mùß|£o’MŸÇƒðÖÜš™úW€û]ék0dü>-»["ó.jç†ùãü|ÿ¶Û*x\x§pºtŸ-~æ2·§oÞ¥âòÛÔ>B_y¬WÃ÷¸üó®¾vŒâö›]ÎÏ·Aõ$ö&ÙàvPþsßÛ36s n¶^áè+àûû¿÷Aà¼ý¸Ûf#¬Õ _òÆ¡‡èwf@hƒ•S3Úiüä9¾€båðkj§Í°ó[ðü úYéä9³›óeï¼U½„›úÌ0šBßY›§kù€ÂÆ}è*oÔ^(ö|šþäBKfi½1ÅßÇôocB¯EÒõ£šöÔ~›ewZbÏZÝ>!ô Œã%½Ç"ôwú$"ŒåC˜Ë·e# äj·Ð{ÅSP+;7 „Þzà\2ßÍÛ}öšßÑ~øú¹Ä| bÕ³ÒÓLYèø“ââ>=~í¯lf)Â(]ys(ƒâÏ ç!4ΗUò{xþkøµŽÕëß‚ô¬k×´GÙ ¸-=i[5Äíú¬ Û¬ŽïŸÄö`ökÇØù_~hÚ¿ÇN\±¢oìÚæøwÓûØùQøù‹Øù Mþæ¿×:fó` ®L1l¿¡•çåáûÇûÕ ÿØ5 ÞúxÓçšãçqwÓ}æ%lÜaÑçPàËì‚ò+Ýï™ö=Ë®ä¯ÇÍ|5L‚Ÿ_$Ûïþ|`ŸgxüDQÔ+“5‡ëOyfÞÀšbT/9)&@ç±ìJ¡·Ž Èåé"gŽޔвEÛuAR°øŽ_¿i\•гû™8àuþò«BïB¯ŸïÍ^`ˆ0v޶hÔOyûe¦6‹8¨ÿ–¡>ú-ÈÃÊãtÃAyI¼ÐÖ/íãx÷[¨} Ø6z Š_6U[ÒN¼pV޼b¿ßUnŠOb?Ïúù ñùÇÖo˜é,á°µ Ö"Ny©@ѼùÒßmñD«@~ *(a ï?ˆpQ; #ý0 a}þzø€‡¡—óø~dŽ5sª¾ zB™¸uSãöæõG9ÂÌø€Ð,¬Ì` KnùJÚ¼fùY–ô0®µ·½¯UýãüÜF³Ž%QÛµñýÏJË[¶šN¹øþL`ûÏðü'NJcŽrž‹Ÿ?CZ?Áâ_?òFÏ¨Ž›l?™óÝÓVÀîï½B=·ê­§”M¸ž¼>Ê'¼½ó€ó";f+ûðN¯8ÑÛµ'´Ó¸[šÏ¿šX}®Û Ý¼½w´j;9¥&K€SqTw^Ì8®s|è»89ƒ÷¸„ûïİ“aG'\~°øyÿ–‡ß€á'!Ën̹€JN^9àHêMiì躀’#•ZQRôtŒI× ¸üñŽ ìÆOBqÿ£XåiM..$Xn°áõœyK¾ƒäÔŇjÛ AÊivÅȤUG7zeƒôGÕàrëZPnýú¸ÿiPð®Í£Ïˆ®û¦ì[¹E êüÄgó¨1P»G×`‚Ëqàºí:®9åÿÒY¬PëzïÃéþ«AxäLbßi¡xÿù—ì‡.½¶„¾^äþÒDúì%~}íð„ÐóAa%¨QÖý@˜7ßç,zâûo™:4À”ê“3¼~™Ó¸åþ ¼/^p²ê1üxZ5àŸs,ï6­mYÅ¢X︉ Š_ûsáÁR¹F|ï£a4K+[OÛeùxÑ#µûr¾€2éàÍ—ÝraÃÄú`„–¾`QÜ÷Ò V¾ÑFñ´½~â(gèÀXdAÃ'>ÍD÷–ÇŽ´=Ýœ?ÙÄÂKSÓn%]Ñ.!}<žÿ ð¶PŒ[‚ãožƒØglÏ-PW}sUP‡ý uV4ô<*¯Ƀ¬Kþˆÿ ÷¾¹4vË)œÿ¥ƒcôF Öáö;N!qçŸï‡É_sü¨éü#n/˜!Øçܧ{.F¡v÷Ü…áÿ DíTLëÂ{ 9S†‚lħÜ~Á>¨ßå*™WÌ‚Æþ6Ùa^1 {–æqì0O, Ê¿ò [?Gh&—úÜËåŃŠM¥ œgóÒk¡…Ì_ôáÒ&ä<îÿî ðMb:>H@ÛÛþ0Î:aN¾ºlÖN<ÿ…ó!ºßÁ‰×@T»@¬á{ Ä“NÝ %…Æ”×¶'ì@4vÕ¾jLGtrzì51@4žGñ6]FÚŸ›Sz“èé™å`¶Ñ^Zúbyûˆæ K“+ù¡¶Þ$òçÉñÀUf>ÓÞñj/ NŸ²¾ƒÆ¼ÜÉß÷!Çûè5­î;ðýÓÂÚǯF^DõÉt‡H7 6¾0ãe­=H†|yõnþDà%mÜ /~J£çÆ#4ÖÂ'†6¯ß•Œ*ÚŒÐã^rTF!´ó>1@ã.üZ±µyÿéÍ÷Ž’¥ãG¯£—.|BX+œ<+¬ƨ«?7ÚÑyÍ4ág„~vò¬tå¨Ox{Á1ˆ J_ùò±Y|šò'›ª9ƒÔU=oè.¿u{û fbê×6îN«Ð³5ìo¤{ t¾½b速ÿŒåo1ž¸=Èÿ0wË_ž‰¯_0¾Œ‚ÒµýA¹f«Kž?„å`þ?Åì'f¿±óŸ„ËèOvC@²xåFëÔ¯H0¿ûòp(œgˆ¯¤!ô)w¿ùªoh^?s+tôi¨Ì¹Øô|óþû=or†÷rAèé­ {tOWu·ÿz¸DÃ…íû˜ ò³2Íýör>EÎ _’ë—?M™Ü$Ónß´Ýdƒú{¯;e¿²ë<ãTŸSЈTÌŒ<~üw §µ“«Õ Nƒ¼~Æùî¦ÃZÚà‰ù3^‚ìÅŠÞíËA2ÒùcèÅ® Ò˺Xá{a­É>?ÕÎѨ?hýêøZD³›ÏÓé«¢Í×¶!v!SPþî´>{ d} ¡=YÚÞ¢ 5ž ÚxïçJsþnÓþÉ<É.=-}àÔ©O«› ®ç‰sHÖ;9bu-ˆ³Ùk^/q®¬sz\(¤J¹öyÍçŸué·ÓºJ Bé3šÅ¸# öb^A pRêÌÊÈšÏïI=2 çñíxû’•9®oêrqÿS¸¦nåÈìKŸ|^ÿ{";÷¿EË4vøÛ/ÌÿMóîTrdw’}-8‚Ë?ë6øy€âÒ§¡:êUxþ‘l£±ù’ä$®¶Ôé·¥°ùü,vrœÑÂË C76Å4óýǃÝê¿I<}ÓéѹfüùuÖä*7}ÿÃuKwBè¿Ñâêùc¦oû›ƒû ´]Ói÷zƒ0 ¿ôß~w5Ngï8D«úËÿqs„MïêòD+ëÀƒ{ºt(þ8±kò u¡ë*Û B6]òr"„KN¸S6„³‘nA8pÍ‘]Ý´€Ï_¹êÇ3&4tûþE½ëdPŽõ}ä£Џ³ ƒË@©V:ÞȤ ¡Oêš<è¸ß”ëÏBíóJf™ëÀWШxtr»—B;±Çýæó›ÔP.å¡Avû<ôƵÞ~Ѿ8þ¢w¹¯0c,C¼AZÖ!ŒWº%ôåsÆS½sìjA¤ÏõÕXcÂqFy%Íñ§¦óK0ÿ«iþšî´³|†H³¿…²ÐBqçäù;#°õ#š]2èÜ/&NÔ;¢ùüþ°¢'2êçU®8û£䡴KÌX ÂËûø™ÿ“W·5/”f‚Ðä'Ür@pñwíœëÙxÜUø>¢È,m ˆ]In¸…ǯñüñI¯ÔeguÿÈŸÀóÇÿ½·ŸlßL…I4ìœ7öè&'ÍM2´›'–TtñICç%i^UUR ˆ«|Ö‹¯éìÍÑç¡tëß{ÔO å=N袪DÓÇ•.¨ýš%ÉÔ@q™›Ï©îG€èTõ¬ÎŸôQ¾;ZzDî;½Ô¾€DÿQðßüäô2­µíqûû?ÏoÛ?^Žâ¼láqQ7XŽ[ý Õ›sRöþü Ç¿Üg¦{6A‰]»½–,QÛ úñÉoåjîùä5†Õ]~bû÷þøÿÁ%­ [ÊLgTTÖÊ÷¹ú´rNIúøâú·Ð0x_þ‘ŸÀ5;3âôœ ÀþÔÎê­ó^ày;‹~Ý~ õoìÖY{Ø¡¯ý܇æCÍ’shUzÀ Ó÷š˜5NÓËmø'pÿ³®ÆâÜ;O`÷Ý9óhÈoßi?}ê\„¾±üÊ´ùÓ=gï%דC¶mNA‰¢v±:²"¶ÑXÓ®‡ÓÓÅ}Á£g~‡ÂtN‡{W‹áÇ£¸ÈKGS,-òP§>?´ð±|uF)ðo2Øhv%ƒ»íÂc›‚“À?×Éç ÂAɀà .»gÒqóïÌ"|ÿ‘Ø+eJªóKñëEGô±Å7ÚÒ‡BlÿZF¥srôÁí% ™=Ó“QÙ x ù¢à6°º‹óÆל±ùô‚|_»ucá+ÅNxl×ÄûŒmNí{<ý$ oƒ[øùØþ¹ÆûOëÞÙƒtÜòsaæ· qñÎUsŸ‚ò8W+Ë„6|…_ã³ Pd'-ÜËÛŠãÇßå%‘›ï¼þ€!® ¸nS¤= ¿bñHlýE|*b,÷wçæý;—oÏ,ž"îMϵcVBeâÅS>'A}æ9ɳüÃPn¾eŸ­=4ìr}yøj_ø5cò¼{›ŽÀ/[o̯ U[~_±¼RçõšƒÌñüEÉûµCÇ—TwÜï¡Qëñó3^|ø>á>Hó Ÿ Ó !£ÓÈ߇¿Cíãå'kï‚í¡gm‡ßéný-<¤Àÿé¹w™=jW.Nɾ¡™Ñàªnùmü¶- IïüÄKö~Ú¸÷$p—Þ{WêÐ|~kÓú#¿Äâ¿øùMü_#¸kºÌóA0ˆÏ0㎔惬ñÎÏL›- MÊýØyTwwj—i¥ì^æ»àð1æP½¼ï¦‰¼ ë?TÐo(ˆßæ±'Òw€´ÔÒåõÖëœ*MRßoÛäɶrG^Ä÷/H>Ç=(Î,FýÞ;åz‹A4À«w$|ãѧ”« 1¿+O` YSq‰3jˆŸÝ<”ºþ ˆ¿?¸rü†é]<üí'Æ1ãV.IÉ Ýg}Œ½ðø‹9öܰKŠWó¾.  ñ–ë«F‚Œ?äÊëöíA˜+è~qçKT¦kü ÓDõëϬsQ=ñû}Ç=·*@fß¹k|Q Ÿ¹éH'“^óê*Íx%Hzߨ:>Ø}R/'wŽEñ¼ÚÃýµ=rÛ‡‡"Œµƒ3¦ï9ÐWGfjNFýþ:VEÏÐn=_­Ôr¡gøgcˆw\!瀴Ð:êÉ}T¯ÇŒ_¨ ¢ûë|j À[r£ÝiÔŽ ˜E¿9ÆÞWuïƒÇxU¡‚{7¡:=1Ùùî<þÈ«ìvzÒ¹^xþŒÔ¨8¢Zß$»8-ÞP…çŸðŸN\”QX‚ _Õý¿«ÇÑ^ÓP¿~j´ñî¬~wáMK}Ø_0úŸÿË:ÛFûx Hu:F?Þ­û½=Ú_k~ÿè7Ahè<<•wq‘uÒ<6ž?ÂÝÑÔ$hpªè´EÐßOMÚŸ'ÔáªE÷úÇ'ƒ¸‹qîåÕêÍñ¯Á;•ý¶ÌÅ·Q~! q\ÑŒd=6v~?BÛ|Ã[ßY€0–j^¼Ë0EÎ C³â^!ÌqÎA÷ër¦a²pÖ§©ÙßÉyM6Â2Ö?öTø a™U&ª]ÿÂolý“ÌA8~‘LO‰®—¯Ñg§9¢®·¡ñÂàƒ"Ÿ€$æÇRŸßoA$bçëNŠÐx}߈¸Ðà^üºèeŒ73;&½Þ¾¸¢«Ï{·{ ÂåOÝu Gàç§I7î3´>æܳ٥õ!ðu]ºÃõÏÀ+)‹V{iü¥©6·‹ƒ0{VQæ]/à[ûcTÃ[à]Y•Ìõ„,b‹ÊÑû®v×ݧ7èä? ïÀ~vÅë‘ï#àÈΪé}Ããïu #Í_—GûMEκd7üü]N©kÞ€;#ðùWìýð¥¡Ñ»mÿÛ $µ{‹ @öéИ.?ü‹åâ¾Ê?Ð'Êž 4ô¥faÒ¤#I ²X±zÈׄ1f¡DOïBëúÓ2+õ«ò¦ÖvrõïÏÈâœÿØ¿†Å¯å´Èh—÷Z Ü¶ó®gþ+„vØt¾¯^åþvþOÓúžÿ­ß‰{»ÚÌz¢UÏ{¾«‹áKß…pÌ|N e Ûïs¿-æÝ%9 }õQüü@¡K”ßЇΠœ6zÿz Š[ô{lôUߌúg¯%% ÌA\uDÙe*w“ú¦¤êÒ̯Hê…AÀÿèzþÆs”_§ƒ$êÇ»Áo²æèONgkÌÆÏÐŽÞ߯ÈifÜDm„*yÅÏ(CX,$sëk„±%ʵ×CÍû?¿½g ³è¼À§«Ï;<NjŸÓ¶E€ÇvyòÐ$„ñóŽŽÑéžUï†LÅ6\/à/ϸýqqðAmàß²¬¾¿Ê¤ƒŽšö! c´‰VâçáçŸíê¾&}K?qî†ö>œìqâ°É¨|fÞØ„®ËwìÎÛ ïÒR÷ÛA úÚ`|ä!$Õ7¯Ê¥ Z.݂̳Æí¶\*‰” D 3àíõÂδOŠ_#¬ w]>¿EX“Þü¼¡¯Ê šõö*B?±pL§)·fl÷3‚À¾(_ØofôazývÁjÂÊëüãÝ=³VùkÇ©ƒ0`Ú2ßlo`7:” úÀ]ÑÙ#sÙ-àf¬ž~ezpÌ/Î<>%8ï_Š|58¡ü=š?÷ãùÓØù3ØùܬûoLb§ Ûš$WWàÂøÐñÖ àŒ×šö°#B{R–>ß8pJ²sÔ&§˜ïq±„ßIêWD¯KAʳŒ•`ܘqV}EýjÏRýñ;šÏÿÀÖo^„¸•®‚†ÚØÞ{:ÛƒÈ\ñjÅ*'WÛN³zÛG Ûãýzf–! ÝsãSF¿…;Nƒº÷Â÷§ÃïEI¯: vˆûð­ Tä•ÏpDIŸJ @úEÖ]/p9H"ØÜXP¤¯¹öô€'¾þ«¼½cõ‚yΠÜd²Q\“Ž0k@mÝøp„qÔÃ.jÏ „V¦Î¼ D˜ó/N,Ýꃃ£~Ÿ<,A¿Õ½âƒ“vå]ÊÔàs4iˆð¨åBíG¿<×Y»`ôÇýÉ«¢açï"t½^§+Ç!ôay»ºftBý´=)ž2 Âäì~0AŠÐÒÊÊN®ŸŽ0÷¹…ÖŸ€°Ö~È|ôá4¢®•T©kR×ÿÐé8pÇ 5­_áùïŠ%ï_FëÏî0m!˜Pê½^œì·ŸŸßÉGíOÐæµ®®Ú[ ~°™Â\n~øîÃ# ?%L˜ø{Ž(Ì9ÐèÎ>`L:OGû~6cÓ» ½+É •€Ø€¥ë”‰âîI¾ ½¼  p·=(ÖÛ7$½,¹áíƒçB3ÙÓ³ZóB[¦oh6,”†7Üv»yÿK¸GÂ9N9~~"½áúx]ƒmÀµ<«<„¶êÉÚÐå~¨ß:ŸS—ÒÛ×[L> „Íí{%wÉ”^[´ï‚ÂÄn]⯛mNîã$T¯^¼—¸ûÇZ„n[=ó‘ÐΜ›tk’9B+wþ ¹ Ê2ãSs?}G˜÷¥×iÆ¡ú’YÖÏ+ d6W»X؆xÂ…ô•k¦‚¤záËÒJM<‰3ÝшÍ~u£]Û®ÇÏOÇü'üü÷&ÿ©nÓœñc}€×N¼Á;«8½ýÎ9hÇ x"wIÀï϶Û´;Ïb:;5*8¥Î¹Ÿ¼µÑñû>Cã>ÿAúßPünÙw£ó1SP:ŽògÏ£Oxød{P®*áN›÷¤{z…ÝH…Æ4å˜Ü‰ öŽ»ô³ô*êwW­ hdŒkúײ¢šã•«w)¼ú#¬‡…³•"„õfÄá¾rDé[ÇXÞxDsŽnÀ©~ë r‡÷Ñ1ÅÉ ´:óö«µpC®?Øuϼê*£l .fþÑG…S!uûÇävízÉ “Y] QÖ8víšW ]wC|d‰!öÿ3Íû¿½¶,0(<„0vL.QópA®=ïKX„0Ö›˜¦ó±ó7AÞk<÷ü à|±T›Æ顤¸ˆ-—Aâ´ÖÂæÂÄŒr?×5ÊõWA暟θ×rëe·†?‰ÑµíÌ׋‘ÚÎòc jïy¬… ¨\ÔNþî0Sï Ûy/Âø1”§@í2Këšýœ“‡ñý·Øÿÿ°/"¹à‚ñëIË;‚ôxQ¾ß—(Ô÷œÑõßã-î%ô©0×±ß^M<ÿ³¿Øúwãòo.áû'å^Šƒâv‚²ç¥w» … ˜4µÜ{ü„nµt‚É{„VÈ÷­6Bè§³UÚ€2¬OxçÞïzÉ{¤iËgnî¼bDcbŠÓú¢0D#=2©“|¢QsgÍï鑈V»‹ž6o"QOxnû.ûB›÷ÿ_aÅX‡ G˜¬¥&íþ†ÐÅ×N|Ý%¥îUµ’ž¯þØ¿ ½ö´ÈvµÈ–¬Ð¶š_ò'½Ç,-Eý£5¯äêC@qÌz¤õ WŠbŒmƒâù®Ä%½Ú«=Ï`¨¨¥ØUé/’LœEqsLÅʼnŒ]¹ýDXdžûöˆÖFXw>ÛÎúqa9íZxæ Â2ªH=v¬Ä®“º÷¬ß¼þW}£ìÃÎD”¯´÷ÜÛ€¯“òߺ/ÄŠPûÇ’g.¶~EÆÇ½?´™ùå9Û…À™pÇñÜÕNÀÞöÒ¢Ol8°Ûm—¾,ІÚg£ÏFè²Aˆ¤.95°BË)úõU0a”z•œØu¡åIÝÏ<åPC¿Þi(>ïÆ®Yƒ0ܽ›¯ˆ¡îxròó­"„dôéè*3<~)’ ?h¨öËÿÍø=?Ów«Ök<~. þ2yW ;¿_¿äó28Ql ÜGCWÝ~ùáó‹y;ÎY¬*a/meÑ©aCQ{ßýÚœç~ øyø–Íô Ðèõn´?; äÓr3ÕA㑟ZŸ.oÅKù–/9‘-³WãWPjÐöW*Pü¸ÉdÍÆƒR„ÞésX¤Â;?"ãý«ˆmŽ=†»ï1'3 Óªú³Ñ笉9?¢Pyq+³››4a?õ5ßê‚0å™%Gfªáë·²‡kÎL:iâj¿ª“¨ïŸiÚO˼“6+ÕSQS¿¿ñRû¾ˆÚ̯ŒË‚zPÊ^-¾e¬©Û¦úø q ¸äù‹-{’;EÑ¢=ší—OMÀý«~¨=°Üdp׿B“rÔß=÷d݇µQÀï²Zë| Èfן»7ß¿ŒÿÉÚ§n4u6¢¶a²ÇPˆºM É逨٣©½é^î?qL«ûsµ#SG$ƒÜûMŸ÷VÐX¦¡ùl.âºmÏæî*Dû÷ì»ÎA'Eº~ÝÞ¹¾¼ïö…»Êîݸ=¯T"Ãc“Ï̘?}}útÛ»j:¶/˜0%Ø—· ûhâùc‚‚-±©ù#Aôì†T°fȲû.ë²@iëo%žŽÂí£8mqä¡Mí[»—ULbT¶ds8ˆ6>í\9ïÊ·!Ï¿Ä|YÖ¥…Fý»|¡ÙËÍ pþÃò~LœwG2Ÿ1î•æeäÚJ×+òVäØk ¼ÝéšV‰ú' BC7¡¸¯Ëqÿ=¿»âùËŠ…ºsô&Lø#þ‚ÍŸ˜Q{cXê¯Ñú¬UèwÉ·¾ P<½øèˆâGA´ !ð|à4PÌ9ª~eu.?äü}iøÕÁóá¾~‚Å?ñóOšòŸxYVc_ \ãsý‡´†:Ëî’¤àY晥œ?b×»!#u€û9wàÜ«Çñó¿…³ë7„¯=Ò¤©½ºØ‚dé÷Ý©½AöYÙ¿tQ¾þŠ·OÚƒáºzÇô £ü±üuÜþ6°¶-±IÛaŒý2_ám‹0¯{û\Œ0{üÎgtµ¿ü£´@ŠçO(Rô³†yvåÈÑu¿Q>y?zðïàD)˜ìgÕ¼ÿáÏÿøãÿ3°ø?†›âWíe휄¥yP&á×\ºêû¯eÑ…¬L¥d`ƒ?LóêŸgZAÝáI;>Ü\™Õü5Ƨ€-²ê’‘?xŸ'ºdÆ#Œéq=¾ßkl>¿²iÿ'kf‡µÉëO"ÌÈòA3ôé£@#G[ß¡×7ÿè0bS®^. F˜W®îÞÿ Ž?ùCæàrQ¹ÿ8qc?ó§ÍÿŸ¦ÚÞ!’Û¼·‰~ØþsIÙõ·ý¡ÔÖç¾§–D¸=ÏÆÏ‘ýZm¿ýÈ}lýƒ|þ+BwíšÂq‰@ècN¥ïç yõš=ÎÖ€øèLÓø¹<à»2«p\ Ƭ=²/ õÇ×ÿÌ•‹·ùŸXþ+'W›ÿ58¦“ë ƒ'xíæ>oì&ߺǩgLWí½Íêª;h;kïÜŸ/z‡|ˆž«á‰¼Ô¿’<¿ä°oÊ?ðó‚³4óõP •´f=à4@•3-Øôk.~þ/6ÿ¢ú½§ó•»@¼œ+²_ÚD°b诨,Ìlä¿…µ†Fö–,„0hèDP¼»i´2e<ÂèbÛ8&å+v~{†ðúÜõS3 3*62-hi/¡rûúÌÏ¡òý ‹7Ý¡zRí`¥ 8=ŽÜyKÅMƒŒNàmNés6*Ø_ò9Ù¦‘À×åß^õnoóúa¬6Ò]¸ øj¶.oÇàMåQá“ à²W„Þ^·8; Vô ] Ò`Ù `?uð™¼æ |)KHZZ¿oÅ­»¾p4TF[ôdæ³Îât² r‚K—@?g¨ÑcÚP‡Æ‹­Õ:ÌöüëÚñë³êÕ¦7)¡~ݳ÷¼¡Ùókæ(?‹ÙÑ«¶ÎÉÉûìd§AVÐÿÛ7‹CP»í»Þ¥%¥xþgœöCÍÇÙø~IBbý¼R‡æó+ØíF›×7L#Âr²'¾þ€¯ÿhYÇÒúyà€šÚyÓ Ü›sX=²È·MÝepõÅ©óü¹À½ìºIòá'(Í,7ÍêJ£±¯~å‚òmíÖºú­nŽÏ­SÆ&«DË a®Ì÷qGåÉÜ×v‰…H6OÞÀ2˜ˆÐ˜cö¼ØÞ Q½#tGç]ó|L:߃‡Ÿƶ·Éùg_w’Ò³½4”÷õ_í<½ö/ÞD]Á÷ÿaë/|d\äÝ{Ù [s]k¤ ¤üEs?¾á»{ 7“I ºê2dB¥ $HlùÓÜA v~Ugc†êõÈíòÃñ† ïZ0¿|±Bï5¿¯& Ì…–eº„â`›è«Y½ÖÒ°.Îףϯ™> 7Aè9‹øj¼Ùý×åa;‚°øµ°ˆ] âxš×Ò!#@üÜ®‹ÓÝN ÈQ[w;l'4Î]§ÿh~~0Q;´“­H‡h¥[-îýÜ)5Æg@Äí¾}€_—ͯPÒ¥U¡Ÿzóù·ú¤®{ ³”wf©“A®5ÿêá‰íሹíÏ ´ ðe —îØ 1îÀøcÞxþž`âîƒ7ìÑ~>ö:è0ø<ˆæýÙheÞ,¿MöÃOÍÿŸ¼rÕûè<¬‹Ø”…ú¿ d‘}Õ3ÞŽ±¸va¾~$²ÜÑôR<(⇞ݱa¬Ùr-ÀQëo®m¶ì¢6nÿ„Ó…fXãó¤S(žT×Cw…,>l—–—²^‘'ª§ƒ„‹è%꾉݅Qæ¥QÀ^x¤îºZ#–fõšõ¡Ÿ¸kú¡q>Bw–÷àœNŠ5#Ç,ÕÍÁö_#›Çv²0¶Ùá¨}þV&~GýpçG“³–6çO6ùOÜ_îgæçãúºù÷·èA’ÍT~D½9ß­ãñ7,@ÜPù¦Ì ä´¬›1Qþíœ;\m)J‰®ððM'Nב~¤W˜Ã¯?y»+èçzcùK]CkÁd´^…Ïà”Qt^Üçì?çÔ¡±EOÏ‚¼ïþü¹WÖ‚è°±É-SGhä=ŒX›x¡›IgNRz·ÁNµ¨¾±ç>6}‡âvŸ#s%Ý îñ³Q#Á¯Jጃ³½¡#ºj^³ß&Þqׯ`©!žÿ…¿~ÖǾ/ŸÎú~W-{·ñÜ ¥öùðûþ‚ES@ºìÑWëÚ8|×ÙÁ‰îPv?ì5âP ²° ËÌ{xƒ¸Çuñ×À?&›°Ç$x†…gÿà§³§ƒ¨Ão¦™«ˆ,ÆJçÙlAý熓ÜVƒ²Ûn.èý°A&'â·‚8OñÊÇØù›4WþñÍ“P\’×õ˘%'A™2º¡‡ÁE„|mã®»¾ ¾>¨Ûï)Æh}¾Ic¿æ÷‹± êÝ7áøÇZàŠí” nwË:‹0Gü¼·ËêÂ{t6C0»+?}ì ¯qÏ#7!ôÏkjn¶÷Dè\«32f%Â\ú-,íd|3þÅöoyÎ9.ÿøs®ÖnC­Ól‹õrP¨­ ÈŽògf ï6:®“‚“–ÄGo±[ƒÚP(-nœ6ŒÙÀ] ]PýÕïCøÂSp?š/¬+ÇãïÊÃ#òFt_ í:Ã\!ô»#\ϨW4ÿsÓù…øù}Möëó³Ï'›vÍK†ƒÚ~ #A`öÀ±ìÉ&¨ÏÝÅÜ9tÔèΩˆóßηßj„ÅëÐ;¾Ð€_µÎíuA>öÿ¨~*·TïŽò»Ì«›Öûìæó±ö±ÿOÆÖošâWÜ®©)wÛ¿Ñ®fðÆ…P{kÑŠ,ž…áW²ÿ Ú$¸~ÙcÆlG£uÔ¤ÑhhÁ®äÏÿEa vO[ÅoÕšŠvSÑhºª5½¯C*¬¦ß¨7r}ZMWõúG,­VS»Ú„Ï,ŠÏ[´ÛXTûÜÚûÄ¹Ó \±‚Í¿.EQSQ'‘®­§¥¹Õ&БXÔ}&α}"¯üÿ,ÿ-‰<ÞZÁhŠÑEKE{ÿ)/ FãÖúþßÌ Y0)êþçJ'í¦«fÇ¡ÙTX´fÝ„}ÆøH›P¯6©]²~ù›‚µEE'¢Ž ÿžJ61}‡ñ7³ ô!þ–Ik–*~¡j“J‘ß×RQ0zéJ¦5‘Þ-釖æ¸%'Ïï?…¬Kˆã¦Ò—máarÄöˆzH•ŽÃ®:ÿaû­Ù*mÂsb˜|y‘N*˜îÁ>ßWk/•¾'÷‹<ª{dþÂx¾¥Bî/VÔiÿ–_²-`R<#ÛuU*ýM¼Ré¡¶Ú.¬-Œ–˜®ÅôVGª?Ñ^¨ÑTó)ÖùÙfc㤷¡m*ÛК¥ÂGdý¦Nÿ矌ñZÓ{Z­´ßš¾$ÒQ•oI¯`ó¬Az“gUãžk¶ÒÙ†¨ÑþÔï-*½Ö’Ìiæ¿-u·ÄD\A5ÿD>Ve;þ›BEWUøœ(k˜ì0šh„áŠÖèEn {8^²]n©¨òUéUïb÷Èòõßð?F3¢ÏÕ…}'ëkb!ÒœXŸ.íÿžþäñmžª‚õ£%ûÛš|`”ÞB-á2ŒWtôÒ!|WeÚ¢×1Ÿ®¥9 Ž‘Œ{þ¹u,•= ê="6À¾·ÖW2®Ò¦µŒ#°6°ymë|PÅ0úcÚ´Ó‰J©úªM£¶ÁT>…:áªªÏØ8±v´ë,ì×aóFÆMd†ù·TÏþ†×Ú"Ÿdy"~Æì…á³*_‡ ‡·E‘ý"½Y´?åkO•L¬»­ó¤ê·X?È<ÒšîWÅ[T1"Ž!cÇÖôU‰ôQ%WX!úéTôk©}UqA2~$Ç´ãow[k³6é=LOù›h[Zó[©æV›týOäãé¶Ä?þ[ùní=*›K´½d]LU4 ô$Ú Uý!^©d›[- úµfÿ1_+DûŽáHìªC¸’m>Ù¾`«©žÖü/z óF¬ŸŒkÿ¯ð¹ïØØZë·:éý–t™êícó®IøNŒ·QñÑÿTåQñõÿ…ÿBœ3â|i®Ø˜¨ìÑ~q9¦ÿ·òÍPq_Õ8Ⱦ1‘ÇȾó:Oÿ-Ÿ¶T¿ªs[Ö·Zë[k8ÃÄ{DýAĉ;m‰ßÿ}j‰0ZkÓþ-ȼI¼GeUõ ‹-aëSOQÉ)vO‡Ö²^oÍ?$âj¢¾gÞÇèôϽ¶ÄàÈ6ƒ*~N¼×ýZÚ´ëEª¾uˆ*KÖKDþ× µ=~ôßb$r† ¿ÿM;m±Ym‘LÆÉþ;éÐþìù³ªØm[ì'¹*9úÛñQÍKcßÿ6~Fec[ŠG“ÇCŒ“´EÿµVÚjß[²q­­÷ukǬIúLÆ -µÝZœ›X0ìÕÇüŠÖèG–=&áJÅÓÏZÒmmŸ¬°ùÃð81Ѝ߱ßSÙB¬NrüZôÓd>&ÒHƒÔÕxTaV²¾lkÁæ*¶I¼§CúL´odZ¿×H¨ìæGhƆña[eëñJ–-UºQÕxÛ’„ñN[õqëW[âà›ßÔ’Ü´EfÈ}&·GþÞýMÿˆzR³ õ¨’÷¶ŽŒ¹ÉóTåu7Ù"Ê*¹ÏTrC…cTù/غö'ã?ÿ<'æI’y ­váoèGÔC˜LRõ›<·¦£Z¿ÿOõ?ñ7dŸ‘,ßä¸~[e¥-óÑÿ©*mÁnÖ QçXe¢¥Bõ®ªx‹ªøã7¯SÕGô1‰~¥*Üò·<«£blŒ¿¬K•~hí=2MÕHßUõ {ÖOµ¿!ÚDri‹ÿÐ_c´ÆèOŽ ¶”÷öŸ”ÖÆO¾÷Ÿè4"ö&ò3‘ÿÈø@•N Çð‰8…¸fÔÒxuuþÿÔVýØ·„mtH¿Ñ¦ýÙç¿á+²Oÿ7º—Œ­þF®‰¶Šê}L¿cïPÅ ˆú¡¥8Y>1þm«}Æì½*ùþ§¢>ÑlºÛj©´Åþ´fÃÈ>“*|¥MS½O„ª]mŠº©æÿ?-m‘)2¿¨âAâ@*þ¥Š?¶E†©°ægiCì/Ùîk“Ú%ûÌÿ<£Z‹l >ùù%Ó¶-…È£ê¤w[Ò_¯`þ~K¹Gª ÕúyÍ€œŸ£I£¶“mˆW¢|RµOÌiT•'ý–«!·IÔ%äBÖçäBŒ¡¨²:„±b:¡­r×݈þ4¹`sH´od¾h‹þûoôGK²‹ÅTÉ8ÖÿÖò`És‰ÕGŽMQ½«KxFÖ_T˜³)mYŸ£’=ò QÇ«ZOÆ|l¾þŽ„ŸhÌp÷vôvÂ~Ôkj€Ÿ»·‹ŸŸƒ£·³ÃB— Žî¾v.¾›ÜñŸèÙºøúùx;z’î·³òöwA+w÷örñöÇnÎuôputBûÝÜUC[_W´ ÷ÿ©åòtôwq6üwú¶k=ݦ8{¡#E×Ôñfˆ‰Í–¯þO+>¾è'­ù¬rnqý®%?–¼V…­÷‘‹ªx(Y°ºÉ¸GUŽ&öœç ŠÛ%îÝ#×Cå»SùØ‘m “tÅôCK…jläxMK±Zª˜‹ô~K´TµÖ¦FhOƒÔF±Ô(î«Ò¯ä5nâ»Tý!ÖEõ›Öl¾ªßש±¹%ò‘ÖØ<i@Äk Š+‘®LÂ}âo˜Wâo[ê[Ö X¤ß‘?“i†ñ;qŸqÈò='>#އ¸„ÕÑÚo"ÍÉg€`óG<·k_•¼S¬/TëØwLG0It$îÃS#=#¬Ïd|Eä7" ȱX*AìkK礨Ê!!ò—ª÷‰kY,Ú¿ùQUýľù¶%鯠x—j=èǶ¦_Ué">iIWeŽx\•.$ÛªÍÉz™Ì?T¿ÁäóGé´ŸMD%û,ÚŸý$Ò¥-:•hÕI߉ãR¥»ÔhÍùä-aíÖèKÖdùTUÈö–ì´Ä»T²ÕÍ)•}kË:1V7qM“]²¾ Ó˜¼Ùn Rd¾k‰¾Ä˜9Ÿ¥5›Kì+yœXÄ9Õ |&óýTáV2ý1ýLìyŒ g‘÷äç¸5þ ×Gî?¦Ç0½Jæ?òÜPÍ/f‡™¤ß¶†ã‰rBÖgÄ{Tqs¢œµÆ?-='ë!2©Ö&±9ÁÆßš|’eƒh;1›Æ"|Æd„lßZ¢¯ªö‰¾/™ï‰~Ùny–,3Tü­ “ß%Ú0&Ås" °~Ra2fTõ(cT}Ât,Ùß!Ë7Ù÷£Âä{d^R5GDœCæùÖð$Q¾[óï„ú±q«êYù†Šfªø‡H3²ïD¥—É}hM¿qÕø‰2L”eìsK6ˆ'TÑNÕ¼3hÒ_•|´ôœŒ7‰ô#ëIªBœ[â<`íb˜‹ê]íÏy"Æ~§FÑî?WòÚ¹yŸŠçZ³!d»DåcÑ W*ýNÆD›«IúLkø°5þ¢Ò[Tø„¬+Ú»m)UñÏßò,U‰þ ™¿ˆv—Œñˆ¸‡Je^-ÈúšˆqÈv8.rì £‹ô>†{ÈóC”Us‹‰AøY^[ã/bY„ÏÄï-éS☘õ·¤[ÈXŸ,OT4!ÇKÉm¨Â0Ä:ˆ¸—Š'0{@Æ£D}G\Ûh ŸmÕXÉ~=Ë©ÂÍD;½CŒÿ}'¢Ý%ËeKú/Ù~h¾ç„Ø?-µ%\B57}ZÃÞDž Îa[ô'F{²ß@¦‡ªþ‘± † êF*ìEï"óPKºµ¥‚ÍI[}¼–|z*­ÊöPéA¬*YQÕ?éwÄ:©â2ªb]ªÆŒÉ66æ–æ‡EºRabì3ÙFPñ+Õ>ÿŸ~vkÿœ^ƒkË­×òZÃx=sš÷þŽëÇ–ðu8v‹Ë½ý{›åÚ㟾;µîøosÇkÚÓó8>çsû‘ßñ8;þ{Ø­×çxÜ?—œö3Ïy§ãâxþ:w}wî3(¯]®ÏÇóôññqocø˜ÇÏÄ·®y.<î“ûÒùŸçÆKÇÈ¥Û\ºvâõñ­×ÿÚ{ûÜ>áuÖñs5ÿû)Ûyé½w:†xl\úÎÿÒònËýÂsý¹ï!Žß)ñ5<­óºãR_ŽûçÖþæ¾ã¾-§ëéӵ߹óñgøù¹ãœû•ßYñߤï9F8룇óû—ω-8¶ëøÝ_ó[MåöðÏsFŒÏûÖûòÒyëÒyáx®»öX·ÞÇïÇŽïáÓãó:øøï¼¾;¾_/=_žãŽË­ãûx|8mÓé;ŠãߞϹk©s¯é¹×ñÒ5¹s ׯ5æžÏ~¼v¹öyîR‹n½þÇßÓÌí½´þé™Û^Zî=¿÷ãµóÝé9ž»>9~®åyþÜõÛG¸Ý'‡ÛóòØA«§¹Çë¼Ïî;ñºïx®>sÏ]ëžç¥Ç¦¿9~&ûèá»ûéø¸×ÞWçZwî¼~OKo½?.}ÃïߎŸ½ØÂ[ûŸçU6Œ}ºuÿKûîÜõïS–KçÆkç»sŸ'¯5øx^þÙÃw_Ï£×ãréœw<§]ZNçŽÓëÌޞ˵ï׎ýþ wï>¾t~ãµîñß[ûöÖµÃggfïØ¥KÝ=7ÿ´¯®õåÒqwëýÅçp|n¹tpZ.õëÜg ž¹ý§Nòx8~Þ>~p¼¾9×ÙãyŠçˆO¾ÛÇKß]ó˜çŽãõÛ¥kÑ{®‹Îõ÷´œ¶‘ûõ´m¼>8~'v:¹N¯ÏÅ—¾;w.ã6}úðÝ×ÿÒûãÜùÿÜõ/ÛÇåžëÓ6¶ÿôZŸ¶óÚãWÏé½Åc÷Òûþžë·sï-~ÿÀ^}Œûó³Þµï/ÓNíãùåôyóÒþ?¾OÇëòÓãžf]:6>}øîñy©Ñ·^ßs×ø\Î]ÿò9œö#ßß|ìãëôÔã÷Z{ù¯•¯]‹ßßÇÛñºèØñÏ3×·–sŸ®Üþ;¿kå4ç?óדüâçÿýñó/žùùëßTòO_>ÿõËÇ_Ÿnú_Ÿ=ö/_ýâçÿð›ß|ùù—Ï~û§ßœòõCüþå—_½xùêõMÿÝ{öÛÇW¿ú/^þÓãþ—ów¿}|yá±ÿÓß½|ö›¯^ýîñù/~þ÷/^>~½ræVÿá~ÿøÍïEù_¯Îüôoþ˳ÿùõ]_þég¿yöòw™ýÿþëÿüÕwnðí˜g§_ óׯK¶ù ¿xåÚEÓÍå_ÿ¿kËÛ>þ^>¹ñó[Ë­}ôÿûríôo.|¸y|¼ÕãÿH–ýBçÌó»÷Ë«Kˇ~n·ž÷½·}/ﯧnß™×çM÷ãßYÞÍkô®ßû÷¼>ou|þñázßn-·ûm·ëMþc_ÞÕöŸçÜãöúç]ºýûzž÷nÿ=û]ÜÿÜ>¾µ\ºßÙãûMÿ_ÛòpaÿûÂ}o«o];¾í¹þÚý>~¸¼ïúõ ÖŸrþxê9ðM·íêü+¯ï­ûßóø~iîq¹¶ý§õ'ì—'?ÿ§>öÛ.bæÛìŸ7YîÜŽ‹çŒK·y¸}ü½«ã÷êcßzŽïbÿ÷ÅÛ>潜{ÇåÊ}?ô÷/z¹çüü¯y¹uœþûÿ}Ͼõú¾íÏÿ²ü°Ë»Øÿïò:úG·üñáÛÿ»ûüüúö\Ûóü­ëó§<îSþÉ…Û½Éu̇Z>ô¶þs¿÷ž¹ç~ßÜîÒò#xýÞxÛßÅößñø—Ž‹»®!Ÿrÿãc½é}ßv›ÛëüðÞ·ñÏm¹õšüËÃýMz§ÏåǶž°Ý; ºóö?Ä5àµ×ê)?g}Âýo/?ȹö]>÷KËÃ3w쟽\=nýœ·¹uÿ§,úþXîÙ‡÷oº\;ÖÞÅܧËOÞ¾ÓëðÔåá‰ÇÙ›<þ½3N·»c_|oyÓû]{¼§nÿ=ûáÆò6ý'Ï÷-Ÿã­~½×çð-g_—;öÍÝç÷[ûîMöíÛ÷Ôç}\¾wÍuxüýà‡^>ÔõÝ~_¾ÇåMÿÂýÏmÿ_>#_Mßäçït[N¯å›,g¶÷¯ÿÿ²üù-ïàóÑ{Þ¾OÞçrǬoϱ¯~õø:>Þ=ÏëÚó}ê¾úËÃí}ü¾¯©/vîÊüKËG¯ïwü÷¿Íò^ß¿z9·ßϼ|yÓí»õüÞåÂyïð¹èëï÷}mZ?ûz~~îïî]Žyx¬·íá?¶í9nÛwŽÇÓŸ§õkËñõúËòãZpmùð¯Ý½·{Ûÿk‡3Ïímý[ýy›~~ò–Ûö¤×êÂößõïoñøï»Ë·îsÏãßüþêÊó{/¯Ëöï]ï ûâžû¼Í{ûžýëû¹§<¿[ÏùÜ{üæ>9·ø»·½†ºùþá>âßß³®íÛb¹µ}žïÝï¿÷¿ýßùÅ+ßlÏ7¿Iä¯^þáå7¿ ååã³Óß<ñò«/~õøìÕW¯ÿ毟¿øê‹Ç—Ïõùã󯾾õë¿þôÕ‹?|õÅÿ¡ä›[ì?ùôù³ß=¾z}óûú/?~þòõÚ'ÿòøì´þÙ«Ï¿xñbŸ÷ø¿ÿxúѧxþå‹ÓoMùäñ«/Në?ýݳ—/¿ÜËg_<>ûí7[ù§þó³||½þo¾|þë?¼úê応ž÷‹Ï?ÿÃïŸ}•‡ýÙËÇW_þúñù燧ð³—/þùoñ4¾ýí+ßþŠ¢í´¢ÓŠO+uZi§•~Z§•yZY§ý²ýr_Ûö5íkÞ×j_kûZßׯ¾6÷µ}†öÚghŸ¡}†öÚghŸ¡}†öÚgxŸá}†÷ÞgxŸá}†÷ÞgxŸá}Fí3jŸQûŒÚgÔ>£öµÏ¨}Fí3jŸÑömŸÑömŸÑömŸÑömŸÑömŸÑ÷}ŸÑ÷}ŸÑ÷}ŸÑ÷}ŸÑ÷}Ÿ1öcŸ1öcŸ1öcŸ1öcŸ1öcŸ1÷sŸ1÷sŸ1÷sŸ1÷sŸ1÷sŸ±ökŸ±ökŸ±ökŸ±ökŸ±öë4ã'Û/™Õ-«Êª³ZYmYíYYYÍ´-Ó¶LÛ2mË´-Ó¶LÛ2mË´-Ó¶LS¦)Ó”iÊ4eš2M™¦LS¦)ÓœiÎ4gš3Í™æLs¦9Óœiδʴʴʴʴʴʴʴʴʴʴ–i-ÓZ¦µLk™Ö2­eZË´–i-Óz¦õLë™Ö3­gZÏ´ži=Óz¦õL™62mdÚÈ´‘i#ÓF¦L™62mfÚÌ´™i3Óf¦ÍL›™63mfÚÌ´•i+ÓV¦­L[™¶2meÚÊ´•ii‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–(-QZ¢´Di‰Ò¥%JK”–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´Äi‰Ó§%NKœ–8-qZâ´ÄiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiI¥%•–TZRiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––´´¤¥%--iiIKKZZÒÒ’––ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiIOKzZÒÓ’ž–ô´¤§%=-éiÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Œ´d¤%#-iÉHKFZ2Ò’‘–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉLKfZ2Ó’™–Ì´d¦%3-™iÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’•–¬´d¥%+-YiÉJKVZ²Ò’µ·ä“í—{L¾Yß°.¬ë…õ†õŽõõ‰uÌÝ0wÃÜ s7ÌÝ0wÃÜ s7ÌÝ0wÃ\a®0W˜+Ìæ s…¹Â\a®0טkÌ5æs¹Æ\c®1טkÌ-Ì-Ì-Ì-Ì-Ì-Ì-Ì-Ì-Ì-Ìm˜Û0·anÃ܆¹ sæ6Ìm˜Û0·cnÇÜŽ¹s;ævÌí˜Û1·cnÇܹsæÌ˜;0w`îÀܹs'æN̘;1wbîÄ܉¹s'æNÌ]˜»0waîÂÜ…¹ sæ.Ì]˜‹^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^mèÕ†^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^½2zeôÊè•Ñ+£WF¯Œ^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^zUèU¡W…^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUC¯zÕЫ†^5ôª¡W ½jèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^uôª£W½êèUG¯:zÕÑ«Ž^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕ@¯z5Ы^ ôj W½èÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^Môj¢W½šèÕD¯&z5Ñ«‰^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½ZèÕB¯zµÐ«…^-ôj¡W ½‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o7|»áÛ ßnøv÷¾Ýðí†o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o/øö‚o¯o}û'?<üäÿ~ýßÿþëå£×?û«_?ûêÙßþæå³ß=~ý_ÿç›åÿqQøÄ¢Cplm/data/Cigar.rda0000644000176200001440000005010014124132276013466 0ustar liggesusersý7zXZi"Þ6!ÏXÌá–·P])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷Åj„ðEz­ƒs¡”ìëÏ`©™Âˆ,™Fæ:ú ¶~¹èœ#€ÆIÕ>÷Y@²r;á¡ØqtýÕd ¸‚›w­¨E€âó;bÐR<  ×1…ÈÓwøiÚºþL±¨Nç¯4%|ÙkMQ¬xŸw/Ð$PÿtW*œŒj½¶1åÑíÑú0ùNˆ‰°oz ÈqÄ“ ôÆz5ퟞdÀö²~´ý+Í{íþcü X‡¦–‘# ,§±y¨™Q®Œ.5)ò·rok¨K‡˜¹5&ãFãØp?ÖƒP@š¹j’/œZ(¦Ä|¾ùZˆµ€óoo¬Å×";‰O³¨*é‹!.z9̾é1¡EQcÖnÚFÃâ ²–ºìaök¬Aѳž=ÌKŠaU<ÛtW{·S” ÊŽ É>KO}îDÀÉà¹6>ùmGQZ œo‹àAïŒéhíó#`œ­PL°Ùý °ç&­ü ^MvÛ€WåÕz¦RæöÈ–‘ºVÙÖ‡íß0“/ö¹Ÿ}Øä-U4ŒÉ9¤Ø6‘E¸>NÜÈÐ[-(T×eñv}ËçŒ E…I†rë¨C8 T=c4;¹JlD‰Šl¼Ìfp8BµKãy˜ÆÆ»{þ ¹x[yJ‡¦‚Φ OäONh¬aÈv$›ý ¶ÔЀx-Dê}p{T-š8¯ÙàW“Qt'ÙdU¡ì0߳˫Ãþ¾ð§À75¦ù¾é±{FÜâ,¡XBeë©Ù¹ɘ*£ýFvIö7Æ Dh+è b;©U¯Ãe×FgÊ1Z¯S;ï‰vv-¸*ç*{2g£ ¶´5/ *9ß›ð׉³ÜäÅ™ª³„ñ²Ba'‰=.züóèÑ|$ñ?'7È›–ô S"°§×üß½¡+4} ,ÓÌoÙ_wýˆìøÍÒçk[x•J$|úsƒ+[]ôëݰgó‘Ym•xý²·4{0ˆá„ü#2Ʀu>‹'ÏûüáÐRãlQî–X.{pσC7ûxTŦ8‹r™…Ü4ÀÏ¥3Ôº.Hg<;ƒ$Ž«2äýj ÑÑÌ_97±juØ€AÀWð8V¹p”ÆÜè q5eºiXèÊþ¹¬r_]­é•‡¯%©n>µ`«;8}!W ê{éH’¤‡«@ý¸ ðX¤XîcU·Bsô±TM·ÓIÇYí EB1Gô{³ë¦ÎýÆ$Ö†ÕBÀfAïTÛ€íà0Ji½Z*j.¦-B„¹ãÚ앵ºksŠáW#œmtÖÄ0žx+q‚’½«àLzЂˆ Ê tw¾ ~ÏR Ëôot.5@„”NSà‰?l2 ïÿSfBZEŒ‹Ó‘Á‰Bb›â~¡ pÖüª-v÷1NkŸ4ö3õKŽ]Oâ]ç@qžgªG?ÑB9²A¹§’þ¢­š;бŒÔ¦`ûîÖX´ÈÇêP™Ùðk·u‚Y*£iµ0XSÒ=ˆŸÓø‹äƒÕ-´]®”›çŒ·AN^nÐwЉ¶^³ Ö!q¶\(Ó>ªwƒ£i’Ÿå_Áï$5„´nòÔ»Lõutì°^Avs&¾øÊXà@œg·­ž5»òðµ%³­aˆŠ¤6zêËË·*ÿ£Ü‡¯¶âœ›cGõmƒ“o­°0𙕽{ékPZ>Ó¢Ó¤óÞ ´ü~­S7-Føµ¡²|7,&õï-©¨y¤~NåâX„£ÐÍãñFŒ¢#±n2HVüp,üý;½ª8i j”*e±Z 0US㟖I½LÑ»¿Ú„/U™¿ÝͶ'Ê·«ìSð힧»*©÷³@ª¾ù¿”‰·AmׂΉ’ÁÝ·B7GU¹5P`Æ\K‹‰AœQ*]²ôS"6£®³ï¶ý¦¹zÎAA@&#°µ™Ä¥QS`ðñd¸‹ƒËp‡¥ÅÑ’wñFÞ­›Dq¾Á=9„†k6ìÐΫ}¦Œ-í̬(M7Ö§rZÝ2sqFÔP§·&ßÄĺþ…ãÛöò£}‰»¨à«Õ»Æ1Àã×O‡B›â ¤ºèÎ{mÚŒ”7Ã?Ÿ Pðhü0C¦Ä0QqKÖ+ ß ê¥O9œ éSœïw@õ1ʉ‡¤½Xl¤ÖáŠT<£øéøG‹½¼ºÈ5$!hŠâ4RåU|#Äznûk| ÔÕqñœ¶Š;0òbF€Q•jË ‘~~ï¦Ü…¦ïœcêš{±¼"hò÷‹‹¤Ùn¶VšuUø–æÖÆ"Ìf…š޶ÁCš93ÅÒÆ¯uf’˜@:igò«!Ã;>ö^Ø?Ö–ö«Ä³;/^À&£’‰õ§ª#E*Ÿ®ª÷Ù2ql^ M^q*„s•R Â^«5Ç×ëKW tûnŒhlK¿1||3 „/Ÿ°9º"\$~Ón½€V+œåžÖ5= ¢ÿû¥šø"GÚ³I¯>£['œ«OºWÁ*`‡PKlä$)`z‘äÚ½w*ÄrRÈ‘PÃpR5… ÂÖ>åP¿ÌRØ¡oë¬SÜe†ƒ!7Kv¿)_ò‡–O*ƒP=׺Fì~hu›y}L[ĆÑ;ÀÁUè£ÃØ54‚;g©ï"!Ì}™­¬¿ ÎÜéþ±«EäE=b¾pî¦ s c‚ü®å$ßYþ™h´kÀÎSýôJc^x €S‰&¦¥wˆAñ¯›)G4Î|W†·/£’€á=Ÿ.x—rØZ'ü-Øg&ÃŒ–—v"”àó!Gý±>Þð>Ý·h,»Ñu–±ñ9E­ÁY¶¼.Ã÷S̃߬¦‡d#V ¸)e\¼Y%AeÀ)?<« ø’¨Ã–a_¦fïÍ'{hqØ Š?…lŸ#h”ñQAN¥ÞN(ñ´üâÛíq§âñràóT¶k ª&ÒDZ’"'ûeƒÀ‹æÃßèR3ÆŸO]…rv7²{qã$Ó¦Hù‡@#5dÀ/Œ=ãûK¡c>T“igꊛ=ƒ§.òRDŒ¦{küLŒ ý“”ÃŒç÷þ^FáRŽÜ/šUÂtÇÒ‘Úú<"›~(Eßþ·2À·¬$çJ pªyH‰´[³œ<- ¤Øª”v"|fX÷¥…Æá`€²ObŸ/±$œÜ)^ºoåÁ^9ÛÁ)ŽÙ¹QøÞGŠ´‘û22¢ ‰RМhö C]§Ih¸U¼%ì&ÀXO’j³DX¢#äïšp¹Zº"=óAÏÓÉŽŠº¨é”åŒ5ˆ}ÛÑ ÅE™IàØM{JžÊß‚Õ4ÕÄf¯~“’x»EFù¢‡§Ûxçpô6÷Á³išü}ÜÐoöƒOvÝk 5±Ò¾'%óÕ‡GduœžUê5Sj ½úÕ@_©ªF½ÞXR¹ @¦SÑ é~yZ–ŸŸŸ™qý¹m'@«Ú  ©¼Í–Ì@–"õÕ~S(šœÉ«Î!Moêçh3½ÞaQ‰³OjÜdZ™i„߇ko‡¸¤ÏBïj1A– B‹îÈnو꼇jj@D¾¬l°Q½£^âû/Vi‘!ÛñAz! õRà~öù©!¡ô*³ ¥”¡‹?éãÕN‡úK yZ=û#ÄÁÈ5 |‡ûùäÙÑÌ(~ñ(z¯ÌIW +‰ðÖœÕWƒ‹×Ž á[“O,ofi4š$†É•=Ú‚±°+ÖØ8b«ø»×ó=· ;¸îœÇÐAsþLXÙá u ¬AéC e¹× Ü£é8°¡÷lî_„AãÙø;­¼…XѪ,ˆÚ»¯¬~|{YRe´¡ý‰*ÝñdQfxJ@Ãçw{kº¬A(õÔæjƒì(Î k¼Gƒsó“¦"×Ñžtaø+¶a·“,†ó{ñ±ï2ì "\×u'ëÉ6e˜ek¸ëÖé‚ ¬FøË ÜÞèͧ‚Él¯r}bCšÿbA¤—_Y† ÉÝ}*›jà\¬´äøÈݾ0ipt3`"yÃìYS&at¸Å·"ôôrÖê*tüµEJ ô}ßÝ©ºPßÔ¶`Ö(¼áJC©›, óJâ¨E<»¤|‡ˆ™,yÓ‰nuen#²Š{lŠk¾Â )i kû¹×$£L¤ð»awâ]´ðÑòNPû0T€Ð÷K0²0ù7²ËO»e£üX±z¨Äõ%öÿ„@ÇÂç3¸Ãžpwú굿æ9’¶½Ìã=ñãRµÁI¹ÂPùôh¼e%ë¾CMICû¹Aíg¯üvDÈ-d²¸ ‚R=ÈG^zIŸ¹§¡ôÎðžÙöÓ% ?>6««Þ»Jpl¾Sø#¾×Xƃƒ.Y.ž\R㺇Ý1y;€0R娗Ñw#ÝÌ}z¹†-Òú¦ û€-‹ÈùÇRT¨§‘¼â2èƒRïÒ¡€&$ Ð8: È[t£&r+êÚA€²0áQÁØk’ ÙÞ¡I…Ë’÷ó·I zDÚ¨¡Bz_Ô·òÙXáJ)R²Á  ýå–ŠÎà ¦lá™k§%¶,í@/ÜGÖ­­€òGðX!íÈßé-ÉÙGð3¡ 6ä$óI*c49²cdâP§žS"H/aPúf‰‰ß«XßíÉÑÅ’S\«Aå»$¯às9‘£íEDæ/ªe]ñ,¯?I¯"žN“®6¤ßhØ"üòoìa™áÕ_ÆŠzN|ņê‹ÇGç3”¸°'5ž$žù•çý° mÀ'²yðœ2aéfòg„±[ÈÎÎ3ˆË!D˜|?âb¿þ¨#Ïl”ƒ h¶ç%ÿåC8%r“óºG}\$DÌéë9J*™ ÑâM E`YñLlÌpª HÿÆê¨ ¾÷¨œ¯Y«RpÎZʪnzSÒëfƒö©ô7 ÷…‹QÄòçuÓÊX’‡³fØ‹+%HSîè€ôWkSŸWà¦õÊ¿÷.ûÊÝw2q*œ,Ë#ðc<Úƒ v½çT+Ù`S>0©À–i2k%ô¹h¿ÁÂEZ©¾&|Jœ“(»Œà§»õý©ùçÑçТ%.ÿÑdUEÉ+A\˜8Ë„”±ö&a¡è^Ìi–4証ͨ†HÛŠÁƒUY“Ý¢ Mîd³ð?IQM­êú LÕ¨ Êãæ GOé²ÐŽ÷Ai‹Š'‘¡ÞøÙœ=ÒSœôd(DCƒA;ŸæWÜâ,w‚½ÝÊÕuS¬j@θk›l4#ßåýd±Ÿøè-lDO/>pDUò!«;âq‰œZÓÑûyƒÅCõï ¾ß,ÿд_Êø®YÑ åôyÎxL»¥˘Îí­Ö—ˆ¶½Í‚ƒ'ŽA8$8ÊçL°)yp ¨˜%[z‚¾þãù {µ(YÈ[ØD¦ ¡AŒïq:ïÄ9.¾Ï=Î6h)—ˆ¬ù0ÊðÚVZàŸ”H9_è5æ —@‡NÈ{3:¸Áp«·o±À¿!}ÜöáùØPxÅáŒÛFì[¨$;O±FÀQ¤ñ˜cG>c~ÈÜðÞkZ«‘v½·zã‰RŸ« ]½ùeàUQ~ö3=öëM¤MHÙg,–×£ÿñ¡Î}“­³¦²ÖÁ· ê-õÛm·9ÓÿÀÖG¢õÑ@2z8Põ ¿°+¬C‡¯;c0×$Q þbk[Õ¡zX¶ð|ٶ껃ÑízýêHÂ9^Z^´²<ÍaséŠ!€t)Â=ÿÓ›ÅÖoo^D‡‚#Ÿ¿*>IBó†yR,ÔŽëç¶wló»Eμ׊§t )¿joÚ}çr«Ø=³%‡=Š_wúHknh”'»“ MuøUÝ–ßyJS_„\Úžn/˜²¯ÄŠŸ| ˆOîQ'öe§â³g¸ÚÓæv|Ešq8ÍÃØœ‰²Y|™ûÇçR/þËå6oœ´Š÷ãÔQüº„Wºsw;ƒñð~÷Ì{U °Â]˜‚Í”÷cí‘&M³œ UÎÅÌØÚüVü(A¹¾ço4XëryÒñæð¾’eµp~ù´|¾gõ`8­¸×yÎÿ ¾!YÝ|œPó]‰e!õ\¯r”rÔ¨>Óèlyþ×[ O€)’'yå'ß n?jTòâÞlOÓàN#S ùþYÇX*ß-57­›‡‘ý΋c^¢»ywަ§¨VØôn@=9Ö»v­¹³ªUûÏ€Ä=éèV>Þû£)•Ãûceªmùn†¿­O|#Ч¶Yp'#ô<’õC×V†¬á³4ΰéå2¤âÊwªYêó”Þ1 ›Z(Ku a]ô™šÇ)BH©y2ÿ¨îz¯bGKK²ßˤ›¥'%'Sâ*ê›GÄIéßd{gÂÅ´Ñ\CLó­XC. E¨¯Èq²(`¿vyHr|ƒ›¬»Õ©† ±«ÞÀ°í8L鯧2ýø ¾u.F¦ý‘ÜÍ>+MSäü—#äO\)‡Âk3ÂŒþ?´h·ä Ú×m¾æÒÙ¯”7VI¶IG¡úîÖ†¬*]¢¬4ý~ªÐ] øF„“U– \,g+¡Wô¥ )oöªróV5"ÂÈ‘Û"ë¥[ð“_:ˆ]}a« ºõ ¿–4bêCs”Wãõ˜„ß{<8 t”Ä=O½Ëç‡à^PÌïþb ^óÛ^é1«>jSÃ}•MÌb¼4¯û2±v¸d•“B¼ïâÌjK›Åd%ÜÒnûƒp }|txcºvý½âº5ªù/4"šz 2Ù*(Òïç¡5m+úG7Ý“uŽªAc*Ež-^*æâ–g2-âšK‚¾¯wÉJ*WÊFd_AÖIáEHoä­’Oã÷À¦…¯•Ûì@þ8LÌpO?ÅÎÙQÑȨM yîÝ›r°ÿåó±Õ«÷ºU+C†TN¤çÁqÛBÑ-à‹î/Ãî逆ÀdöˉXi".¹}µÖJÀ<óÈ…À•üæáÈ&/Rƒ %êè"9Ã#ÿ¾;%ò­Ð¶?Ù;9ÿu£ ͤÆ]ó×ÄA&¯}^&“|6ú{q¹7èêzy~-¶’ØðÍoϼ«ÊÄÎB©Uæi4¨)ÐÞý pŽ©ö¨ÕCx8yš]¥S ²ÏGf­ª¸9PÑXïi_‚ƒïžbç^JÂUÚž—õ<²O× }©HÌäŸÇIðäÑòá æ¯ºû6-v¨=A² E g:Ή÷(48Ýbr-MÊèr[e9.’N|zü†Ð&aúΚr¬_uÙ„tu=gÿ®>Z)´kˆäEN꼇òšÛ”¾6¢þ<†l›‹Ýè]“J£¶¯"FÜ|í"çË;[OÛïרÿñ]–úbn^`V‘òL6²c.Õ 32ºèΡ{¯ï²Ê—dMÛpbsÄNhì|«&¶RÊá/ò5þZò$6f¦¼áì·Y¸L°ÃÄWà¨Ïqƒ:N¾PØ‚ÃÕãRd0' 56E¯p—´T{‡ìöm¾–:»²6i—:Í,€%¡Õ Ó‡:tîŽ&šb^p'ù8]ÁÒl¸ÜKî‚D†?„›XcÀßÌŒjF8:šÏ¬*Ó60Àˆé/hï$7ÔÉ¥{ *+TǺ۸L}­'MåHíÄ–LÄMŸÉÁ¸¸é ©ËKÒ3@ŸÓÔìmI[µ|eÐa¥ö3[(Šç\ÄJ"ÃCSrzÖ<;°¨y“®±Žof¼ËÜ`EÖE³Z¼È莰¡ œò®ÇîHSà^@kÒ}KŸ@ÉjÐGÛ]Ø—JPÛøŽêqoÓnâN˜ÄÙÅ `{xç5º´tÕ-‰Æ1°Q Åæß&×çh–ûÝI³¢ef¦, þoðPžÜg–ÓÚ5HÒ虉# £mÖctéd¦ê]¦ð… ÙØDàÏëbr£^¤]ñ˜Æ—™q‘e¥ýL{Þ•âZPª>²§Æ¹J}Ï\j.÷”?N°À)ËsI.Ýlám¸eãc>€büKB]ŠT[.[†Ï…<ê ¡*p:0}σ{æ¾ ž¸4íÚkÈ—âäß”ÅÕÅóÃ)(Z=öÛŽ”Æ¥v`9ê®ÅÆŠDúì ‰<Q…õiMŽAyÆä¯5¯°>O /©5[aJ™#rß|qp}û\>óƒÇz¹$\£ÛaAíÅr· îòܰû'ƒ³…çæ7âȫݮŒR~aPÅñv1ɘ—%‘U¨HɳêwÊD6¾Ã"¥øÜZs6LBtôå‡_ÓQóõŒo°âV‚¶œÝCQÏ×¶»Í¢\<ÌËþ– à[›ìÀðœq‡°§Øº€pRåäÊTBJx?}š ±+44zâi1´ß|VdV¢¾G œ$’We“Çwòk»”ï-ecKöKÂZ&ì¯Éœõ+уW¦Ž®Ìðƒ³8þ2yL†  eîPã#(Kƒ¤™¢tm»\âs”4-¨o‹«/ >7ÀêpZ‡ž²…YjÅ •Ý_Z¾ïV,ç.:½K+ä“ Õiá'f |tÂãóSi³Xiî£Ç*2‘‘’ˆpÔÁwtœÃ¢CMïQUµøSšƒÂ9•tö¤2òSÅ’îRç¿çÔ‘*Õ¯Íú<€|ðÙ]ýcÿ«í«\÷2ûüÆz«¡UÇAǰ˚³ì<¸2˜xA7£ky´£±\¢˜b¡pÎÆg}:ò”þí¢(æDjŠ(£UÇìWÜâíxµñÞ·˜å"O=𤟉—+Ç™(—{ónZèámæ—BL5/Ûe×­íÔƒRŽã¿"5ÎlK¦¡¾gS-Ê×JÄ\$/ºS(GaÙ·á$(“~hA4~b<ÜÍX™þ]ŒÌ¦Æ X3qm,$£‡fq“šßþhAXýáq'’—µ«PÐXºEà]PHÌå‚A¤&R)šåG¢Áç3tN6mBŸº ÂV˜CÅ+sz«ïNKü„\k[DÇ6Ã46Èw“6ÊfwÓ`9Pl•ÞfÿYA{ϤŸ=“U9æ¢7"´ˆë™¬+7!ÓíÕbiWí¸iîj§|·õ–IÉÔI3t†&µ>qË `WYSVèšhl†×v ç^ÏS]dwß¼Á¬Zâû©Ö`vÎòr^Nóî5vÄüÛF¸Ö‹*dír8‚ߦ„‰óéµ2Â/ß»›6CÓGÆ”²’ÝÄac9ê V»þ¢Èà]AWŒG¨lº.óºø.Ý·G–Р٣ ùÙ$ãé×ùÅÖ]_àÀÞÎ ÌúXåÊ_÷W@“UA_kp\×açyé'–å@œâÂW Ø+hLÐ!RìuÏ»”À¨x”Òt ™äØs;“ÓÁùÇUùÛM§Ìhx ¸.ß(XðÛ¹ì=|1dD°ïSæ/dí}>­Ïfýµ¾®/€Ñ<)â—}ßqŠÕ |8˜X1" Ü߫ ÈÃðr¨½È‘€`¶v–лöŽñ>_ã´¼yÒæx•_RJ@†Q'ЬOñS7|²êÉ­„];RÀ,T”Y·Þ7×h × ˆi3èêi8Íbç2ÃÚ«CUºèó 7RS–fs›“b*¹Hfôð!Ù©Ìcƒ¶U‹ëÑ£wmövùžG©èwʵÇ_Öx¦”9úùÜM¢+²3‹;ù-€‚à°&_2#dÆ:Æü­Ð³ÚŽV?rñLĨ5tÍšQ³ X¨ZF?y ªŸì¹büÝìRÃlçX‡I•Ò°·X®22"g(Ú‡œ‹ìÏÚɉ³l ¾ûMåHT:XÜó¼Û(†˜xA­Sñ÷ƒ_=@ÜÌÜB4]F÷º ó‚ìÍÇ Pâ'¯;$ò1üñ­<º¢5IœÝCHs=C(‹@¾4=ËS«*(؃X œØþ~ôbÒÑ„7V’´W¼Ül”>E’vZxKGÉ®Fô‡•ÞYñq¤^Y¾;ÃÌâ‘§ÁûäNþ††¤¼€R¹njf­ƒf7Ò‡a èûÕ;<Ô ï¥+S+\itðoL¸6[«]cf¶ðPWÉòMÜLô¨Ì[ç£Ê!†¯·’XNeØÕžì\†Œ¡ü¿yC S¨SÁò ×¼°>‰ÝûAÀxÍfïÈëöKõØ´’kŸÙ™Ò´”Ó`鿳Žy×j6ºŸï G¾ÄÓ¦ö1AïE‚(›qªâ·V’Y¿Ô@ðž8ˆÆú’eMà–L šE"œ „¨¢‹5°ÞÝSf‡÷¤9Š~Ï Yp 0Dð?Hêu{Å[%ràܽ'×ihSâºe^ê8 oõþÞ  ï"æO£þkÇe9~Bv.Kµ7Ú‰õÆì!ØàMK~CžŒ¨/)ÏÖÓ@YZ•w½ ›,¼QÁ-Å&ã@×¹ “,Æ `¼sCiÈf O_"•‰À0ÀSìÊ9ŸYUFÕŽeÑAþ}ðç•Àr‡0ü 7bƒ‚&xƒ¦_ç†ßñ<\@ÁqÃHŽ› VʇHc1ñ ùs7«æîJ9³b1v{21H³Ê‚ tŠ41~nffünãbË»Wűԛ;Ú8«~À»rܦYd3à^áÅ~PŠhtwt™F¨ ë^O%˜ý´+T0=€pt@¬ÁÞj¯ó=Ì2³Û’à|§{#@‹ñ ÛeTg‘%öhm^¯‹²òüV»µ7xå+g#+!Õ’ÌȨ<Œ¬££Õ=0R¸=-(s©É#ÁYJ±Þà ©ÓØDŸ_±W¬®U»É·. Z),€¢!.°øh\ÏÚvk’Øž $¹"È„Ùæ^Oõaj—!-gbJzìð®ì¨‚$)é»ïÇûlŽ,©4Ô Xše0©¯¶šÎ’—ñGW˜²¹D޲:ƒ‘w‘{~2@Ïa g2U$R:¯êÒÂÿWkâ.‰ jeËa?Øš%¯x ™6Ú—H2)«‰|†4!ˆ—•¢½C"YajÄÒ°òF›YDáö‹õgŽò5Y¶>÷1áCpß:MÝݹ­¦˜þÝM)êM¿8¢äQæº6D¶rÓ v§âºþM²Ïï|h;Ç6©èô¤ßæv×õJP8OØà êç¾C†|æsRñŽá`uGJ#¾j¥3xï2úì1Ýgf= ´üg\SÛtûb9Ù´Þ¦…¬Ó-îÀ @XX µíí ³ÇÆ´÷ :yv%~L†›PØ´.îbþD¼³ª?*©è]UÙYðó©-+ýöšª£> ¹ …” HÓt‚;¾a% Œ·Nù¹®[èP¿Až´»–RtuMEéeœ³=1P*•yµEr ÍüþŠæ@–ß±ÓÏÏ{çkeò•'ÜCÛC‚Îò„¦Ã¨u45¸:OÍ<3eA5:«hPïñsLeà €±]ê܈V¯6‘kr_Ë!¢1À; €ð'8­HDÐ)¸‹ ×Ü–4°çÝP~#¯¼:§F6¬YGf1¾³¦º~ÿbo ¼Z,oLÎCSèsJš­†ãÕ.1ØB½¹Ôu{Ûð¨Çô„ŽÑÀnúô´èX4®Fþ‡j:4Uwÿ®Cî/b:wTú!œ(Ë3â­å%ÛÒÚW»·Î7¡ÂT˜•ˆ8ÿÍJ}Ã@«TeË‚k!UÞTf}Y uä\KŸT!ƒZÈ­"WD@"R€bÛûCD¶Flè‹ÜâÿÁ ËØ^ƒ¡Òp-v–F3kÿ(»¢{_³žc•999ÌUÛªŒÔ¾¸|oziéòµ1еyÙÿWDiœñ¿§»»“€YäWÁÙ˜åìz¶ÛÖbΛ`zyt-ŽfiþÂaȇ¥“ËœTý‘ulgËù¸9¸¾Pv/ò±ëiMD?bø–’Ž’³9H ¼€”d\ýʲ°ÎVî4˜oŽeWðÆ ü ÷é]3w`X”#õòäöLÔÌ -ÊN`3Ÿw<ºøàÒ„îênÄᤔ%»–T-àXnb6%^éÌk¢I]—f¿6Š>š+©®†}üýóDRÄÅç7TB[€œ#NÂÒ³ËIº¦–Š”«‚´¥È=ƒ‡ÿâæAÓx†-®PñYÓ°LªÎ¥ºçÀ"€ñ{eºmQqÞWÝo½Œ(6ðâwŸg@¢«\xWxœPzX}M8›ÈH |Ýñ)\­ÆMŸœÝ£×N+n¢¤Ó6³]ר‡ß'j¦mûtó®ZK"#L+‚Øx¨]Âpb²kšŠ©™ED£Â±Åº‡„ ¤_Ú)äçP hr£@bÚ‰ðâ±·™=Ó ~ ÓJ –2ŒŽtÂävküSŸ¢‡®,ƒ_d"c­OÊ{¶‚›ÎÝ•Ý_#!½‹ãÏç^Ɔ!G°FÁ›»Á3Ÿ2¬E65ÆÄ±´I6oó*8K[ÈìxÎî¥æÄÎKXGãöî±7tD0Õ2_äS&7¶V®£dœ „UŽÃ¡­þjBS\45Ñ຦†™)‡ò|ÉS(å Ô¡`)÷‘œG›ÕjÒ$1=R,ÖÎ'liúƒÞ¡žt”‘bpo2Õ>ס°'šVSß»øœágçj4Ì`¤°t7R·¤T™6.Q¼ ¨2ŽÁˆÓDŸGO‰rH-j7\2ör¶ôcã³!¡M’Yxhæö¿!Z6ºàAªA‚©S»Û€¸Ós C*A!ïØ'¿i!œ¾ecYø9+T†n…ñ^éxµÌ%ËK\Èdƒ¬HTì($Bñp­Et¹?ñp¢M®µÒC:v|±i…eO%G%]Öu‰}ê v¯–§Ž· ­§çˆÑ2  äd-Eº7û‡y#Іº¹h`k¨i0íÀ´#Ù¬G¯‹Ð¬Š`2%ç÷yBµÄ0“»%_ÍïÔ‘/P^­q¯(âPÛâôbÀ{!¡9|J0ïr•éÁËá‘Sì#óÛÏÖ·Çâz»Õ~Ü Âá#Û†çÈ{5¨¦™×ŽL£4@•Øê‹ßVþi"PùOæ³p½« ñvë+º`øýywïÐ1vãqŒê¯“+X\§¦KÜRéžPôM5éióöIÂÛ3*L•Ÿ3wµÜÿ5™Û|U>%nû}›{˜“Ý–£|'l¾ ¡,«Ä~²ÞZxN0—Ï…è¨\}½#)س!BÂg©#Ñpg³U¨= ª|“¹‚&ß¾qñ–c?qÁ;µªÀÛ*ªlbÃ6ÂóÕ ÍŒ„¸¸;.¿õˆ¼¼õ3C–|ââ/·þêè/C[×Cà#Èc êpªy' yÞ»ª|:¿ØËÑNÂÛ?mMÍo¥øc1`\0’?»AÑ? Qæ>¯j1ÁŒ Òz)Á&O?—^WRâZ×ÔUZ‰*€I9ÍíHQ‰‚›L·!$‡Ù¨Îåÿ·’q›µî60ŸÄµR×l›oÒôÖ›¹áó…ì¬õÃÛnZeË,vV¹ÝsÍ^@¹‘?Qó[=0J‡Rt’Îq·Ìp÷rpæ¢òÑO²=\û%Pwù¼Úƒ¤oËôM©ó°{ç¡›*0lQ ï®¢@ª‚ÐôkI\G))ÛS˜/\q'úmþ–?Ãô§ÏÍÞ¢§T6Æ™ž&¹%¼8?#7šJbáòÙ¼Õ4Yî€dÝXÆ•¢#?»]  D##èéG?Äô‹ÑGnd°°v­Ìâs½´²¨–ßš3†·–s«&˜vë‚1”ùÅ’~·Ð`¡.¡Öû¸Ã Ew6Zm¯}¦åFWÃÈ& ‚CÔY¤Á£ÅºhÑž›úÈ&I/Å![莘8ÉÇ.ÿCñ¹ï$¡YAQÝð{ΰ´ã°RêbÐÎ÷7 S¼ËÄþK½H—uš²Ð¹ínøÿOŒ¿·ó”ñTÑ»‘wB§¾…]fëf]™5ÝÓž¶±ýÜÆúzÐ)ê7‘Mœ’:ùc¹œìF êEÁX ü ±¿`ã‰!ÜA0 ¦4jõüårlÍ.ëÖ!1DDÀ´—F Ûo>æ†ãdóÐI)rÿ¹ .\a°JÅì_¿Tmˆ"‡¡¤˜š‰“K$õAìœéu-ÜéðõáT7ª}ÞÎS0ÕЉGðÜ“G2éÑÈjó°ÈP~á…;cÌ€9=6 SUÙª¦Fc¥¡“8™J 0Ý^!4”ÿkT¨¦VqéI¬ÕZ?°ˆ§ƒì;¸¨|ù±*ûÅ:œÊüìšÍìÓ)JXH5Ýø!B!î÷®<¬¿YØ.èØýX§ Ô¾4¾]ÊËýªõ3ö%3€h>ý(ªf»†W@)¹ÖæjæðNÞ ÕonuG"üt5›3Õ8¤\ —H ¨Ôµ)V©t ¤Óxâb‘RfòrŸy°þÿŽ®‹tpè ~µð ì ñ=“RŸ³xw·nÇë,°ÒT>Œ¶~@:hÇì_¹kBƒ‡?KºÇ=‘>©Ve*¯¤¿Cd{¼RW‚Xóv‹å ñA€Òw¨@þV™»M­É•¡ë—ñĽ:&‹#ÈÙ ê*»èög$)åß~‹﫹1hPs^Hðšx™(œ!à@^¨à6að‰=ÊØŽ~ãÃM³¯OQ¡Pü“=?gªPß½M¿ÇÓ"9 Íñ4"Ñ 2SYüUùîÚ6¡Ä#I笈 —=)ºPüèNy ÙA†æëf?9ŸhP•Jh j§{¦ešÎ‘ÿZ˜‘¿g\^\@i@×/€9¤•ÛºÒ‚Ýï'9°B€i4f=e•°ÂìËk’®9]€(ëÕØ/ë×Ò+Š+S× ‰—Iv¶´¼ó#W¯=è—d8óϰ_#ýF·îÐ…¦i%ÎíýTU²p~ûÈ…óÖC?äú™yæ]§DªÜL—RÎþÓBµ»OÃlöM¥+jÑËÍÕšû‚ÄI7ÿÆ3a›´ˆ´Xn]8´C›]«« ¤ßW¥„ÁÃû±(bZyeoä gHðœ 6À GfÚ­©Zhïå#~멌Z!œ¨db×5?'Päðv)=ä¼>·±¹¦÷×È'® @͌뗢Ù|}cÄ^н´à{s[–ßíR—4–=w»çbµÓN¡7z…f|uêsêÝ*Á{áˆ|ÄþÇT¬^-ûòÏl©;ëŧk— íž·âdaUn Ö ñZ¥ö‚Œ)-åj•ÃäDoªî§GýÄ´æ.XøôÉÞÊj1[%@Åw nóýðâmÙv¶OƸ}pîüá«Z÷Wg‰ï,?ñY!×Äß¡B’.ÂvlgÏÁ-öÌù;SøÄwFÎ@s««Y^á'ÀyÚUqP¯N1«Øs·P[œ¯™q€aÊ@óps·Q“˜öX:9uS^ð`‰ @á  4÷àdsGa|ê^¤)ªú÷-yÛ¬µ³_ ÓEÚJ'iÌù]5% pNNÃþ†­y±I,™…7/P|Ò‚3‚Þ£øÆzî¡ċޅ6®7÷^5l ‹µô“¬¯vn#=Ôd‡U‚ý ¹¾79q>Ãfç`Xܯ–:V÷‘6G‹ïp–·º?¡ ª{¥;¯RÂ`‰[Ô—âþC °gçÕâà¼?ÍxúÌ&†À–ÿF>W´M‚ ¦÷_|4þiÞ€ fˆý˜ÐZm¬pº¹~úê[n\ƒ#Á¦ë8£ ½¹óÍQµo`ÜG1uò?~üu) תŸR6"1rº¢ÚvòxRr¼*®C¬#Æ£5CP2$ h—ÃËîí>›~gyp´ðþÉ]”*â©çgE[mvafý *%ðÙ=È’A—¯mW,ÚA#ÅBó™„‘…áÐìrFöôeèŸ ŠÚö5ý£8ŠŸû^þ#À¼")7*QW¬³u kµ¾mfªa|ÈV—ÏþúÄ3û¸Œ7ÏÿØ\îsè{£3E¯ç¼Púy™Ä¹ô'sG®Kÿö”p.ˆ‹_yÁÞ‚²Ä¬T]€ñÄnã—|í’jåX@éøó°Îz³s¿m´Ĭ2ÈtKv_ˆÅüä[íí5@uOo%4üÈ9’êì§/Ãuù¶Å¢{–œr$•ÕQ¶Ú|ãD6ÌjÌÓ| JfÌx>CõS@«âä4é nv^ f¸9P’Ôù¯…í …mÎÚ–€bE¤»ˆ1jl<|>ĨÍhâío­ÀDšÖ†3i¿‰t!vË ˜Ù¥qßGÚÈC—ñis{UŽÝa¡TõQdD¤¬üt¶­ÿÈ­¦WOΡYðru8鼷ϳ±ÿ6”ƒµš°]™›¿™3#MKœ™uRˆ<­ÕhVØ­sÃÎ𥠬Ìq[h'CF††Ìj”Tª· X¼F¶¤“’il#¹å(›nìô#iFÕ%»æj8ð ‹Ávz™Ðë/{.™¾g¬•*ŒÍf\‚;Ñ…úÕ$×ÛW»b¥ÿÎBRaÓT”ÊÍF‰HàÝ¥*84c¯½`Ç4*÷ËÏè^€'âC68ÂãÑŒ¤°g8ËùØ”¤¸¢Ü+ÜÿâDwCV^ÎG Tðcµö‚9ã_Dyá·_óØ øð©}ÄÞMFrž™oNtþOxn…;Fa!ùö° ¿-o§ËüñÕ*_¡E¯d©îòÔMP/±ÓÍþׯQþ&Ì|œ(gœÃU¦Óg(ø½ûe§ïº3›tÜ:BŸ×‚_xÀŠ:þ&€³žæš±JgF'›&ŵ8î8Î_ØçØ$,}¢üºBÈÇÜÀýH–é`0œ`iˆÛ²2N!æ=¢XÉÉ7`=FÉ—¨<åKp‰ÒôXpÈ3šÛÛÁ’™`K“] }9&Ë·æ+¹üÈ$”5 Oh÷ˆÊž ð.ޔ̀8ßž€42/¢*L~Õ_0ó7X½v±”Æ}uv^ž]@kAP¯¨\zšÈ{›y@öÞ„ Ð"#&§ÚÔ~\<Ã(ªÙ´‹¼–M#ZÊ¿¨J¬'pƒ¤:Óë³1Ü~]Â:Õ%j“ç»t]0ýsŽ6özß¶ôŠUGÁ•ö@æÎÿ‚wØÖ§û"}¼ÇЪy Ë“ëFI%Óµ«åwÿÓÝ-a±^F÷¿«a›ñ ·H†uµ_ˆÅð÷ÖsÂïþ´b48IKòÌ¿ã¹É?ï–’gF˜çƒ9£Li ê©SØs¡`Ûè¨R0[âàs%h—ƒ7sòÎ:"¾ÊvýÍóíú_yÃÚ`EÈ"Aýq{Â/iž,ö‘á>â›2µÏ£f¤güÃ)*a2Ja…3ÙÎo1ÂBÄMŽpÕ&üÈóXó4î{.E##[•B˜Öã°ò¦!ö»¨Ó¨‰Ð³¤Š÷‡Û”Ïy££Ir˜Üü¤zo+èÑ× *ïL=‹4#RB QÎ¥&¼—2…¬aòUãÞxhéXBÆjÉÕg‡\£•ʳ©QÕc>G—|ûmÌ‚‰ò˜8Š’𠍲øßc&Û$>qBIÀoB_³A7L¾kÏ1±]´>v£·npb2l“­©51J‘öb?–†®Ú4ù3ÒÑè0ˆ‹YƒÄé'í1yRþ¢êåS >ÊFÓb¿îI…/L=Ï4Óëï’±ÕÏ_Ãü1…u ©6Åˉ™T]xnúpáÓvªqŸ^)÷¶¯A%òµljÂ:Ë»‰¥8j*º™ v=^(šLCà”'ŸY+É+–†I2mv+òÀ`å:·lP_ä?CMÔ×ãÔYŸ9—¤OÏö÷¨M¬Þw",i"ʸh+{œ9ö)U`3¯óN¸8q¹r)?¦`k}&fz+U=Ño `ðþ•Èßðs§ÖJâ9³63‹•c)ˆ?Þ;dY* ðñé®Loп|òv‚à/먞× ŒzñnlhÞ_Ö.©¼¬ùR’ЄKá6TѤ”ýù‘¼£“`Wé ZØ]ë¡,,°þýõ+™+—ŸD"üàRW,Ê^5M!šƒÀ<8žüqËIXÄb„n'C ™Ó躿#¬ ôG€™·cë/í1Z,NDZ!O2-­ª%•bµq3þåžáGÕI)"X›ÞÆÍë–L—‘Ú ÓzigîmÆ|´ôH\üt´Ÿ…0£œÉÓ0ŸýÆÓò-ÄÿÃÇî³Ûcóè}ãŸ+à)Zã·;ì¦QòÌ0€ÓÓ«.>šÑ”½HéìÆ±û§Ž“o¯Õ‹›0h«\PøþSm£dÌZÑICêÆyº×”ºfÙŽ‘h«¤%BÁ…>:"6’Áö×oWØ'ào•pk¥/>“š“$‹``Ü/Ëk%‡†-et^V‘’¼Î,¨ê¯ÉŽp‹(6aïâ¿[MnŒ»¥4zn±š‰fÊ@ÍQÒûm\þ}gŒlšÜˆYÞ­“;n®7%SîT‰LãÔõSùܹ™þE½˜‘˜…7`"qø±­ÎµZÁb ‰Çö}TQóÐî ÍRÝ´ AŽ_é½ýYæý“äúÑÞÑbhúPKÕßD•0ËF½‰B8Åpwì†oâyý±·ÇÍœ8 ’ËALÈn­ùS¬ëZ3ùf#?›I',þ·ÌpÐrÝ7ð(.gý1Qòë‘ý…î%£Yôýf°fXhGÒ-†X4áÖƒ߯¾›šÏ{Õ™ž­ÿMBÂ"°;ÿyÑÔˆ¬·.Õ±Ùª#ìù•Cü·\@q>ú‡ª*V™”r;ãyN ¿¡³³P±ÍLÙsΓßzž<’‰ -øÿd P+éÉXÌBê•x¬]†e~ð¶ß“³]T4ðA"γ›tç²^1«[‹†¤ïÜ”=«-…¤5ÖΙš²_¢›—¤÷ð­'`#ê +(#Ñ—Zp®ÓHÿqÏ®–ÃLãù¡FóSQƲ_ò ’¹d‡—äVý= U¿;>vòÝå fØÖœz÷0Nï¯,Ñ ¦ÖÊÿ¡¹ (UG ¶A…ÖY?T!Kæ—zp´ŒT÷+Fø·Ú ,šêu¥DIíLÒãCU…¨˜nšF òCCM“_Xx¹…"Cpdà¹vVϥ儭å±_Œ.orf;A?Ð߉KyŒNˆ·R™Ò²Ÿny4~Ρ¡­J„4ÁÒa÷Ñäk¯ möiŽ€4>wKá¨bBpºŠ‰Öè¢:/Ÿ”&Œÿ_7:üÓÝø/Tä® Å PEð…uÐjÿÓDVŽ$**âàAt(À¬ È‘ “‚»g…áÍ€¸W“Ù/ ……£ÖL-Æç§2¿åÌ"ÓˆÌÁÅæ½áÊ£‡ß ¤×s7¯Ž#ÅžÄG[`C"0ÏÙÿáÇ@:̶³õÙ5Ê9 ‘™ Þ“mà·s¯€Ö½'@ó¨Ò\ØÆ¥lÏåZúãá›(ŽE<Â%¹êÜX¦Ã‹¬ÑñçˆÄq~\‚õ½ÉÔÏÛbÕšXg.Ûä½1bƒZ£k ÂK½»9:æÍkˆñ•kýÁ¨Xñ–9NŸÑüo“uAÅCª`ÇïÏ»X‡sÒ&«øC@[ë´º©bcotg}1 “¾ÓÅ ÔPØæPåø½ŽpgŒA§-¹öNxÏFñ¦ÊÈrKØoµ¥1X“D«Q¹W(äÍ #K»Ëï=`EÄkö[ñZXAQÄgÜîC8U©¶mÞÔ ²-U¦Ufð|Áwó bÜÊ^¡µ©Â`òáÚ5nH‹%fÝžDï#}R)þÉ{l0Bÿ½ý¡¦Šþæš‘EóÞ¢¡®¦§kÙËZ*~ò2d¶„>Ç{Ó¯ pgÝŸ{<Ñ œzï‚·ÕKÈ m òÊ ¹§TíŠÆ,_õ«êJõï2IáÄÌ¥\îw÷‡÷¬ï>w²ÞMú{6Ñ¿žŽï<4ƒ%*3 ^}ß_QŽK´¼?îø«ü_À±#Gu˜Ü²¸¯0N©É)Y´éçF,.Vý¿¤eÂÅêYŒ ãr¾Ö‹˜€³&˦RP¿ŒùIw»äçÁ"ùu°z@Ù‹ÌPL v,‰Da^æ*¢ÙÏ©t%„e¤™Ä%ڣⶠ~i0¯æíÂ_a«¦ŽïÜuzÅ®_ñÙZ¾' ˜.NnrÚŽÚÛÚíë·h3ªW?VéþŸü›2¼‰?£ZfS»=‡×+=zCSõŸJö Ïг­·x‡[Ï›0£Y&ç‹×§/¶*øçYäÊ_ ¶~aðâT»™‰Î«œ¡)9_ø;ÐÓ4,óþO{OU~W0ëšÄ¯"r;÷þ¾ŒVo¼³ìdÅæ]˜B›;“sÕÔ¯é³x2BFßWRX±wêaDæ&·q ¾ ¯Tv~³á­rgDüäç;pŠ´lpé`,†ð„™_¶-€~¾Ï•Ï%츫'Áù¹J?ÓÜÉKÀ©¿~èŒüêñúÒ¡b®AÀÑ=‚ö»Nü×g]RÎ5Qî]Å(Á^Îct”æ¥9þòv0Ù\÷ƒÓf\ÍLa´r28»œÑKk>µ/b䄤EÑ‚Ô Þxå©W¶¿þVxª—ô"=íM£ë~WsMh2cˆ‚¢R(­Þ˜2œÀ‘ „oíCr„…(V¢õ¹€Œ:ü„è"eöiuÿ§)[ WäŸ!%ò }]Qmàðsßc¥f¢ŸãJX‹íR@ T0‹Àdžm÷"iò1F;>X’‹(µÚÏÁÀŽmšŒ{3#0ðÐÎáÈ‚†A|j»r×Õ"ž«`Vf Oò´(DâxÈb³‹q¦8È´áU‘Ή‰ã‡…·­ü‡X2±ó‡CÍlyÊ3± ûÐ"øYš²…`ÙŒæeõuhÜ3`C[©@º4öCÆçpyŠó–‚ñV°îÜc[üw¨ XUFÎ0€ãZé+Mmìé.r°(³“Hiq,;#Rý>T”e™X:H JF‰YÄ#Y² ÞÑ¥°V9œùH *X×Úwßøà^“Óx×”4Y¨/ÞÓøV³’x.Ns™Žùø£¹Sw5a—3‚z>–¸èÞv+ßám£Ä*l(\ßú²mˆ$öt÷ÊT²‹¥‰ ¼óE o7¾éòØT@§ÜL岓5Àß©KâäÔ‡ o“»¸P±˜Èýâ¡Ñ“w ’¼Ž3GÑ+¢v¦Á?9UöÍå±fV躕â õPí9Û±½ñoòc°šJ?i—éë¡K¥w­ðØ:ÛWÆÌ@(. ”gsb3'º-¦%iX-ŒUskB¹é­™[ýnŠZӽ縓å‰8 ÊŽÄŠ´Ä=Â!™xtOÜU8'z²ƒç#Îaq«ÂLù$r,¼"Q19ìÁó;£/kß33¢ˆp "çÞøx•ç|ŸèÐr¤¾æøø4[Eäë=&åu<\ÔÕž…8Xíõ„ ¯•ìÇ â¢¤Ê—l0/ª³ûi«øÛ´¤»rçø63yž§g> Ëð-À‡ï‚aÏDíº=àø<Ï÷‘ G;È0ÎlF0Ûí OËÔ{>UºŽÈt8Á±™Þx@)<|^8ayÞh³sŒX-tBù)Œ‡î…Xƒšª9àà·)hˆ¡ë3}[½y¬,ˆ¦Ýyú=y/jˆÁéV¥VúÂGuDZ ’w¾ˆH.?Þ‹'Õ…=Óå¡ç”¶`×§†äF5Ô¼½ôiä—ò~ACR(œŽºÐ‚°À-îˆòÆ£ñ1”¡öw^Âöé!íHûÐGçr[r¤«aºžÐ–©£¾tD<ô–ÜL ;"•UíÑi°s0 ÄãX5wyju››±ªç«¡ ¢Xï™l¿Óëbĵ€M$4å¹”Ê8(Àh2X› ¸­—èE>0 ‹YZplm/data/Crime.rda0000644000176200001440000035707314124132276013523 0ustar liggesusers‹ìýTU_÷7Ž"ØJI· H×\¤JwˆÒ¢`‹‚(" ¥Hƒ"(Š‚ÒÝÝ-J)eܽÏÞ‡ï}¿ûz‡¿qŸg¼ïÿ>ޱœì³ÏÙ{ŌϜk­¹´U EW®¤¡¡¡¥¡[BKCK‡ý¹˜ûoÍbš]¢ìaïlMCCÇ€]lÇÊì»Ç)_øßº?”%(ËþPVü¡¬úCYó‡²öeý Ãʦ?Æ?æ?Ö?®?ž?¾??¡?”(»þPDþPvÿ¡ˆÿ¡Hþ¡Hÿ¡Èþ¡Èÿ¡ÀŠâŠòŠêÊž??”C(Z(:(z((F(&(f(–(GÿP¬ÿPìÿPÿPœÿP\ÿPÜÿP<ÿP¼þPNü¡œúC9ó‡rîåÂÊÅ?¿?”Ë(WþPÿP‚þP‚ÿPBÿPÂþP"þP¢þPný¡ÜþC‰ýC‰ÿCIüCIþC¹ó‡’ú‡’ö‡rÿ%ãåÑÊÓ?”¬?”ç(/ÿPrþPÞü¡¼ûCÉýCÉûCùø‡BÅw¸Îצ!ô». ¡Ëõi½ýŸ{ÿ¹÷Ÿ{ÿ¹÷Ÿ{ÿ¹÷Ÿ{ÿ¹÷Ÿ{ÿ÷Ü£Çñ¤8–l7Ë„äÄqý¯•í¿\êégÆXÕtg–’^>‘¯Ó¸‰%ëW+”C’LR˜¼ÅR)b¿›>a~e»çš4!xi ØéåÁ8×¹äz– ܹyßlÝi¸WÚ¡¨Áòë›Ô jà"‡åÇÍßúáŠÜ»ä¯fãpUF~È5:®i7å¦ÖÅÀ•kwÖN†Aûû,[¸zõË’m/F ÒC`õ3e-…å:7áfqþ³JýÙ%,¹û4ÜÚžû{X8nf­°¼z n[ ·¢vF8[ücƒXÖ0\è½å±ÝY ®-öûHw‚ èéÊs£!Pù]þÝëpÙåíÜiÑ à—›ŸèÇ aêwžÞxÂuÏ_­m~a Ç·g,‡Pqöoz«áÚpbÑPÞYu¸¡ºÞw ³ov<­ qŽn`_I·Žýj‘‡„T+³é¦×”¾µKŸÓ³ß}‰Û]NŠp@œñ.γóW°ç§»aòÂOoy¼îa 1g_ut†7‹Î<¼!Ö %;BL!l(ã!O¸1„çßÉn×ø aLÛÕ ¼‚ˆô[1l†^pàâµõ¬pÃ$¦½ðD „oò9¾&–?k¶}Oñ‚ï‡ìsü Šù…ä°6ܨzÍQoÁAï·ß7Ê: ×–ÙÖhŒ„«Zîož`íkæ)³JR„ÈL…éka38¶±Ò=f’ê7s¥{ Ioy^Ǧ'@òCƒÈwÅþpGHe§yÁݘÌ;›|á®Õ¹V#‘bH08a°ñÄ>ÏZfsb5â˜.™¨@ŒÄz±Åà Žî4íîhù£’m¯;àvbä[¶¥‰t"âHÍî¯ôóáço{ þ»ï½×êêÇj…&¤!^Þä>×cH0º²\«âæ¦~©(°A£Ã¹Ê輤¿¨|c ÄñåßË£…¸Üiÿg¯.C’pÞèVHúô#m·C($G˜²Iîu‚p?ÿp:CŠÌõ^uq'Û¾7¢±ê@Pìj¸#&|E¬ ÒÖ=þ5²c%Üa–9š¶%R^D>ë.‘ƒTí]'^WÒÀã ‘µ“2"º!1O "ëÏò¿†ñY¬Híõ#;!ìtFe€²0„oª®Ü²ú.DˆÞט¦k„[=»è»Tt Š·ß^ñWQÌutÍ0å´¤L#ªþ¨e^~‚¸Æ?º½®¾õ[åÌz . Þ¼s¦Æl™‡¯U‰AÒ³¡ R>ù¿KQb›¸DÞLݦÎ !jgnT×ÍÕ»û.„[û.µO{@ôÑâô§±Zxo•º•i"$˜¿,zU‰sLú¬ªL³«ò$ç\¬Ø>k tÉz‹ )ìÈžÉg7±q9/5Ö ñ(“ ÿAˆ­qðzÿâLöÎOèªAÜêû+vÜ݆ŸR¨×²aH !”zK’lN˜ƒ¤ÓߨyŠC’µlÞ¼Ó$$èùé|^qƒûÂï~†+Ù ó~{ Yôók}³ÅÉÿXåñŠYÈd¢>{ý<|woºÅEªØŠ*À¹¯|x²ŒgŘr1d'X]ÿV•á<ÁZвbî¹Þ5|õ ˆ¬\?i\s ë¯ …гw+V+í„kªo5E÷œ‚kåÇèÚZ ÅxÓ÷UW½!õËîƒ]}Gáþ޶€Ö'SVr†Ûá:d*¯þ¸òðxÊÃ[(aÍÏdìŒê±ö4Ä=ïÌøßçÏB" ļg íR€hÏÜ›¯y—Ctìú)öý.ãÑíuÿL!Ľ™÷~üÁnÔ}¼…=BN\I1Z'!úªþeƒb'sêGe"„´¼Ö]5aÅÌçv,ƒ¨^ÿŸYI}pË&ÝhñÙµÚlIxø ¸±=í„®&„Ú¨>’xY 7ÌŸåÊ«cíÞ˜Ö",×Q£O˸ü³J©Œ™á»ˆ²Ëð-xz’ã|y<ù2Ç®ðÈÿÖíг‚Ç_C'ŸŒÀ“Íù¶ÉgöÂýœAï¹7‰ÞÆcÊ©gâíÖ>­†{)ýµYÆð°½F¨2÷½c1M†Ì¶KéßVe£§[­ n:ãùP“¥Ïá¡]V?7¤cÌ+- ÷L5|éN„ ³“;£÷<òà]Q|‰ ®ÏkOl2yW^¯zf/ø®UzkOOÝ‚«f~ÔŸ‡+bµ“Ý9êº12x¶-BsdÓ+g}!#†‘ÛäØmx¬ÜEsØ{<’ÚÕÔm?¿Ë\:¬j½ï; sá³ñqV[¸ßÂVhÛ£ ÇÀé§‘$ŸKá[Sï ‰•ý’‹Ø×@Ò²E§ÑšCŠíÙpão¸Ë¿¬Êï–(ÜM¨Š›=&³‡'ý÷$„.s~H+×¶¼=:~.G]açÒ‘„SÑ]?§‚àòF“†¨m[!dAƒÃ~È7CƒGÃððæ<½àóGÞ¼§ãFÒ.¸W7X§¸6Ò?˜rß â[umÃÃIµgÌ' õ5»`&7˜Ò’¼·åž#Ï H¸}igñɈ½µni; ƒÛ7,Pô„;æÆ¿·2nƒ;RmW0ûã°ÓƒNŠÐè¬f„¤£› ?‚”/.í‹·gA"§k÷º­cÆÎqçy=„k¿Ê’é„à1¼£³àú»ëƒ5á(k¼ëÉ"[š]c£B ¡·ôÏälþñ†7÷\¥ÅÚ9ïà˱¬‡â:·B\™Oô÷HØ–m»ë-$T~ìýR¾s^Ü¡v2WeoNí…Œ{eÃt >pïżyfð9HâG­öÜtp·¶AmG7¦§Î…‹Õ•@ºcÝòw¸ ¢*ßÓ7CjóUÞÇ!¶òXùr ŒÏBTÍi€TÖYãbÍ H]˵d·ê=Hó¹è“²®'„¶XH@hMÇÚnæ²óq¾h1„0²cã„p§Áé+> õí‚§¿—BTªµ˜$ˆ@ÔcW±xˆg‘û ¸®&ŒåÏFÃU¦“û÷κ@вK¾9!Ô÷z³7Üx{VÏíX´=ž6w«€‹évSÙœ Gg´ü¿ÞÞñåP-\NuÞÝ×þ7|†SÓ ˆ)æátE&x•™mºTÎs¯‹9÷sƒÙC›L)Å0¯‰V3Ïäªm4æ%ày<þVP O›_÷à» \eWgµôÓ‡Ðo1›BP•“Ë[ž7f¨bõ´ýÜØz•Q5²¢\cÜÖ<Ú„ñ«½ÿƒUð¬^]Ž) ²Kh ELoAV7¯zÿ‘ÈVˆ™ÌÝa ÙV"´4ž[´_|¼ ^êÕîÑÚÉ8wûIÛÇx¶žƒÄµLáNCÜhu}õ ŒÜ7ç…ô B¢aŽïŒ³5fx_nùŒÉû0ûè¶õü§ª¥4ø¤ns'Žœxòn&ö»Š+-‚¨8[ó§Ãgá¦Æ;(²nSÄm¤Æj.;§ i=©Í)?Ràî… ¯6$ÃÝïQ‰îu» ÚuEòæ±6ˆŽQög•‚Ø&««ù ¹uª«c¯<í¿›§M2=mëï}…Ì‘IÚÜS‡á‰€ãÙZÖãðôÚ75»h6È:Ì£¯fö"ÍOeååBx¡<+Ã…7üîÅ ÃIa¸¦Tþ8͸‚b™Ï7ûMBð‡¬‰ˆg¢æöÞôô¢&¸cÜÃ-Rò­¿ýb? )œÂÓ_CÔ ùZ¥Ù©%Æî­o0÷íïd/»î¤k%yNC†ô€¯ñ‹§p?Ó™%+è3¤{ì+:‘ñÒk‘yxg¤_äí¡7x÷§Ô†L–eC´A>pu}¾FÒ~%Ÿ¦>ýièWà ~ÕrÞúÚ“à¯(c:ÉÉWBèëMo^†+c¯#Ùz!æÌïNŽàA¸Ý˜µè*7ÜÎäÙÛl…“F½ú½CIW›zÄóÛ!ö…X°ÎÇ“pó‹ãÅ%Mæëc­v?ëÜ>*(·ü#<—ª5í]z²žõ$ÎÛŽÀ#éçŸD@þL`”·ÁVL¿§þ釛)­y¯êt!d0Z¯wCäõà“&ý!*vþ×й@­ÍßÀ 0‡¿¿jí„Û’ãíukÖ@¬°ÀZ)_AHæäZöü’ ÄHïO±§ñ‚¨ÚmÖÃpû½l~õöˆ6gxôã«gA¶¦Âîp<ÒBû8dLlj<,Ï‚ôuÜùAúª²°¡(H>ÑxöñsHcˆÆ™à¬] ð "Žåzü8Þ7&g®¾ñB¬&ãã™à‰w;«l‚/l€z9Ú¾ ëÒ·‚îÙ{[¸™,a¿÷†c|71EÌB„©ºˆðÜ1ˆdnûb† š÷í¡ÇévëŽ!ø͸{v[¥$o>–¨8 ë]Þ¨ÿ\ Û5ßw?}qõOëMr !fvßö[9¿àöþì¶ ? AÉôv÷> Ì1²=y$’L7 j-ƒ˜ßí¢§ –ç}…]Àyˆm]¿Æå,$H®“ô»wâçÄz{Y ɽ+ÿ~$+$ìäœÂä”qeûyØó·\ÌWˆa?ÏVÊ Ñ;,y—©A¼ŽH½l—!$ÑŠ®°½\±£4{çY# öÄÛ3g3;!ö4ÊSx ª ».g,‡ø˜ž!ãºÄõzƒƒ Db¨tGâDÈl>­¼ç „o™ë¾Rv B"å—]‚ðC9BÆ» ÒiԞ׿ó/Ÿ¯Ì»g ·ì$ö+ zBäTÁ¾ú5¹´?…Þ6 ÂRE;4ÍÖAxQ½÷é“ú´èSÀÚɸ“ùËÛ`¸ç^òMÂûÜ) ÙfRwÂÄ‹\”¾’D$€»—û‡^ê”5&¢zo’ }é¨ñ*z-ˆãbóŸ½ØÑ©Â&ëã®ÃÂcÞ':»áFBR’~Ètx”ÊÍÍ?¦K0ýds.¤©á=›²›\ŽáÚ‰àÚ©—§àJá¸×ìKð¿´äiœ@øv˜-ŸøRGÙZ¯4A@Q¬óÑÌtL_œA±çA„ƒÂYóS•Wÿ"Úb~Ý››>¬àuƒˆ“Vû·{þ€›ó¬á™?‚ ð"çcM×Kp…ϯÄÿT&„¼ê|“Ï ~ ngÍ6‚çÕ%©'Á×Gn;ô*¸vïá€ÐùfšÐï’Ò©ësBcr‚VØÁ͆€AwÌ®»2‡üñ—c>1AHOÔ°ÓX>Ä®š[¡:ÛÑç^{ç>y·¤Âcèø úÐ#‡×g ÆNØqQ}4$p*¾ÆøSË¿EsŠ´Ê2ÏG Üûê{Ráá¯é{l àþQÇNîá¸Ç”>žù¸Ã³¢þÖ+àɃì Êð°Š‹ëÅsÈèüÚ£½Ò«LR?]„{Û‡xw½˜8áÆµœpŸŸ.¾àñbÈ`qe\»Nü—ø~×g×Ï_0¹~á‰=%¾B0Óïûj{á< åxä¯Y™~fü•·NÏ|‰º]´½Ùåÿ«Ã%„&"Óhó;¶À­Ý ètA5D¯¹ë(-7/r4‡4?„Ä :Ú¡wê°ålNAn $Èœ3(Ÿü·oOö®¸·vžY#ô n×Ëìn<–±Ž³æ)°\q´‹9Ãu}´/X óé6aþîÜ^a–“04·XþôH|º¦½¯v $>;üQ.+ R1ë䕪a÷gЗ¶[p3Þ®ßÓ–"Öîˆvú¡_\ÜËáÆe3ýÉm­6\û-DÆ Ã¯w¤vkˆA¦`ö¢GÛÓà!¿Vòá/ ÃdjÒôb0<â\ôkÙ"¸)þù£Þeˆ«’Vf|ð†š]ý7ö»ËýL‚d~ÑV¼…྄&Áù$œû¸#†å \-}ðÙ4k \5{´ìÝ@7­g3ÏŠú¹·«¾jÉè±:ê’c´šß @?Cðï׽а;†þmG ÔÖ¨^«^9µí»ùcgOAÍæ–5» hææö'kŸ@>©O Ä?>K‚Âoì‘y? øÔ­Z­ê7·>ÍëQ&¼ï×ñ®Š†æ%qw<6ŽA£Öˆû mèšç)Ä}zúË÷k™ANògÚ‰9èW*˜ðLZÝ?‚tÕSh‰Z{*né:蹉ACµqhnXÿ¸i4[gË+Äžgz·˜.ÿ1Ô<ËbðHC½/ W¼OèU¯3tó‹³}ù¥ üIÛ¤n|…ft4Ö|¿4íê™4ú­ m1i_µEk 3Ññt†{†>òMç EQÚwà^¨¿ÿuéSo;h½;šfÐùôMó^04=鋞†ÎâÕ‚Û]¦ ÖËJxúu?z6­yµm—wí.…ýæEvY¥PÃ-rqWqÔ/ûîâÿ L¥_¿Þm´;Òâ¡õø:7€Æ Å]ë žsG̸ÜWhávsÖ´ö„æ:WÑ7\ ‰ÉðµÑ ZhŸMppí…æžªÒuôŽÐ p_âäÚPhY®ý¬ñ•"´½Ì[\úÅšô.æü>•,¢wˆm†ÚNká%öA¡¬]`s¸”åx.7L…’Êw áqPþ`]xÒ+¨Ð—‰—‚ÕßxóÉPé ¨¬¾aÛòÊK˜¢îžÔŠBÛ÷‰ñCåò¾ Þ>Pé'ÙýÑ4*J6ZÞàƒòÕ±±b†ePØ>òT±Kª °dú¹@ÕÔ†ÀÉ·iPç ·ÜmýJ¨¶öä²(e‚š³Â—/ï5‡êóßÌú®[C¥eIéĵ“Pée"ºª“Õ>ø@©^ýk“ŠXÔhxøDsTAmíýûÃuP9\xXÿÂ(Ô¸ìi•Ln dá˜pdT¤9«ïÎ’†RëY£-U…PRm|â2¨›Ù¥Åt«yæ¯†Žµ ½†tePQy÷8ç— ¨Œ MV‘‡’^ŸÐ×zþP©Ãì°„ ª ð_ÕvƒœýBPÍ ·¥?ªU\oß:ÈÕë*L¶øïƒÊÇ÷—ë÷GA%Ÿ…8óUKC‡½)@yÈU~‹µÆP‹G½†@MjæÓÐVPcßSd® ÎëOi_†ºkš‹ç×_‚Ú[Þ«Ò wBõƒþ3'æz 2”)7ªû¾Û™w{ÏC éÇT›ìOs?3Åkn©f燚œWzUyÐ8äù²;¡……íʼnû¢Ðv/ê¨ù±­ ´+<ð,†:•€O«ßmƒš´ÎcÃסäÃKðeW ”±˜‹³kÊì6Û—W>…ò€V]f3(‰›Õaè„*ÜMô¯}x­†ÓH¬Gç¡.DB9`¤Š?ŸŽ8]k Ÿz'Å )ÊG-Ë¡p;Ï1Ÿƒ PàÀß·‡q3TéZµrß燚¶â4VB•E¡¶ãìy©x¬ÒE]Öë…A¥è×íz¡ò³b ×0忤ݘ!¥¸–Ñ^%®Í]ž C¡ž¨åiÖfø8¥—Z­x>*Ô.ý y[cœú•¼}7"ݘ¡ \º}/‡.6Îl,ã Œ¢ÎT ߌiÅ*Å3PwãiéþOåPc{JÚT‰>˜žyòT >Òþ¾þ~æ"ä Ï|:Ô² XîqMÜZ‹éIîœÏé/¡òÔèsAŽf(}#×½<Š•?¤è¶Cõ*Aí ?¡*†Ã¯Aå;TßZZšÔrj\Mí8Õw³V­ÈR‡à÷Õy—¡òŒXÇâ¶,(nƒ®(‹P6yäHIên¨Q;ñ4"ŸÊî¾q¹:³†NÎypù]ƒ2Úä½®K ðJ‚€¶®%T | UzJÍúV!Éš5ÐtøI¡Bat¼‘Z¬s ê~øÆü¬„¦“…l2É/àÙ}h¤ òpu­õ>ÐÕˆ”ƒ÷¾÷FÔÄáÞ ½Ëµ³àõ—wÖ-?F wÍ%E2Øý‡/è+îÆ@¾wá…^w¬Ÿƒ÷#ȵþän5“ 5¡«·CµQª¬R騦¨cQ(Àœb§õ‰P¼ˆïÖèi7(>˜r/W·JE6$|>¥§;ì|%Ejµ®°ƒ’²§§o=¼-spÚšÇNý:Ë íËÔTÍvCÇEúþ² 4¾¨5¶(„ß#ª®^ÍPÍ;!P)˜EÑû>ä>^ŸæÂ+üÖÇjæW¸ácdœ\ä(•Ö…Š/¶Z{Æ…¡‚Ýïç⤟PBQ7Pbq+/pñ}(kݼid.ªjö½ ž„b3Ç‘.k( 9ô˜Iö0ºÄ•<Š„:eó9KãëPÃ^¶?‘žÊ¨¾ãŸ€z\™==µ Oo}ëø åÓ/;ÿÚ‹Sòɼ‘3PÙwUtjTÔVTazô”ë×}PõÓÿÞ5Û¡¦´ë£¯^&T37ÇÜ4‰³El ™œiæøò¤2IÚ¸ƒŠ.¼}õVo?ù”zAÓùŠ8)«hãòþØ=mâÁ;—”A>šÞW ˜ä÷½×ÅÓ+žCYqªaÜÏËP¼.v©xŠîåÐñ5ßž[ç¹±ª¬å¢sA¥ÌŽYÉë˜~»eüÈû7TªÝ©ûª%¹êäÚ Š±yÉ÷!”ÜË ªêƒº–ÀB¿cJXaݘ†: ]34h@ýæ{/Æ5²¡ê·èÉ»Á >-w׊ƨ›ú|× êö0nú$Ó µ˜ô`ž ÔNÎZž×¸‰õ?[Y¡Ôäm ë›÷€Zíñ»‚¡.ó]2÷#¨ÎÑ:©Æ(UL‹›.†{A¦$hœ¡îÜê šP¥}ø¦: ¼FP8áñk¨1xÿX<ê¼Ýñ©û5|à{—!tKú ¨§×œ…·ìlXÏ_ƒ7'oaHé8¼­PœØÐà y¥‹Ù—À'T™žÚÞWÕÙ__Lƒܨ¨ÙBæK½é‹Æo"Äê+çá¡}¡  O„E¶‡JƒÈMô&Táìr ª6ív‰è‡šÝ”P%¬âhßbÕ±…F;|Ö@YÚY†mz_¡´Î‘æw3‚Šó‰§Ö:4`z&£›oûþàªÑc«¡&6c^Ó¹JïSùG??RK_~ú.GßòlúìåôKuh 7A©ýޛߗ܇ Êm¨üö!ØTòëbõú_Úë¯?}†ZÒ¿#(Zú¿^Ãg÷C¦Å ×ãÇÌW\ß =gØ¥I|‚*çšûÓPëqØõÁa5¨|½réÐï5PsŸè¡¢ËÀ.& ²Ã/lëƒO<‘Ëä»zàég~Z£z¤3~>® øúk«<äY?YuÞ&ò×o8>¿‚ò6]ä «Rƒ–p»EîÌ{¡mè{­‚¦»†ùov×`rÚ–€©Lh¹™î¯9à³²ï\ C”bè¡æ;EaAuì†â¶¨cÛ#•œuj·¾s”‚zW¶«{G 7Ã6ß JІ+è«"t'w8¿D¿¡~°j­V´.qóÝÇò£UCé »!¯¯ˆmcÏ(5›Ïq<ðéç=‰‘ƒ7¡ä½îWÕØ[P®ÕÕ40 •+“,ßIaöWÒ4(>JsB¬l÷CÙP“ÆšŠR(ß;¾òVöwè2aðÞŸsÎź®‡N¦9I{î&è.kÑã+U‚Ážë™"aÐ{å‡sÊÞ}пúôZUFKLþs¿ÎΜÃpåÒ¸sO0ý9Ãz‡ý ´èºÎˆt<”g¸õO ¾‡ŠýfØ\Æ‘?¼?éX?øè¼æÃ;Ì >„¹~™|:•~{_,-äY5ŒÊûCþ|ñ:£a袘hjŒéM}ÖÕþo¦>dmJÒ>tÎjW‹DCÍ3 ¡J?~ßR:¨ òãVƒügÏ·kEaü˜+é¬%‚á†Àõ(šêX__,³ߨ¿ÿ»ì>3;TJå®ÏHuÁüàÄO×?nÅ>שGCuPGÆ …ÒÙ¼LÊ t«˜ÿؾtøT±_ïzj9||bqT®_J/Ô¤KÄW@ñÉ ú;Y"ðé©·íX:7Pà¢|¢¨‰¥PäbwӵЖèð3æ¾…â3ß*x#º 7˜¯¡Ø[héÿŸPÌónæÞd:ôÛPþÁ8/†ÎP2L’8bÒ9Ǩ-wp¡?ªGç”™Þ€Â_>_hS1¿ý×WóÂÕÇ0ÿ ‡]>:û sy¡j_ˆSñŽl¨¬cdÊÆÚòú”êøi¨Ûï1Ü$p Èq)ZÓ¦³óTôî‘«ó´‚Jү΋£÷<¼oòÔmVrnô€|Š»% UšõO[1ÜSÖWu>ä”Úá ¼  2aìÎ×!Q¨TÄxóC»`ÿÍûðiõ%÷¯¡ñÛà¡ÚÎÛæ0PgSõöç8¢+æ nr[+k/Ô×t¾Q¹u5+k] Ï@Õ²U׿XCi"2XÎ{ª^4ò(ñÚAYx¡Ïùoæ¿Iw¾¹A*b²/Ž˜@ñóQÅçÆ^PTpø´â­_o€º&¡LÏKHõ”Ñ9Ŭ â†bn¼CžCÁ¯ ×L£áu£^Ôª}÷aܨµ·kÊ9¢(ÿ|Z²£Ïï³Îê`æ5ŒzŒÞã1è¾ÔÏT¾ƒ:­ð€\>tv¯_”Ig#ò˜ÅVƒÁ,ï-î‡ÊaÌ“ð?“ö`”QV©ÒÆ¢ž+îרÓÏx-Œ›0<Îrõc.‚pñW%ù¡«oÉ·=†ÖÄ +­—ÂP°ñÇ€ZI$Téé|u4Sƒ*ÞÐGïÕ¯AﺢuçÒC÷ÜO˃œaH„ˆƒt´;}= V¯Âsz÷@ÏcÙîf]ÐY©úký†ÐUÀvø(£ôžÉµ4—¥ø¿2èS´M3õ“ƒž¯_Ïëý€¦EÉê‰Ð~ž–©}ŠºšÕb=•¾@ÆÌgÅ^B=Ç*îÚópãÉ.h#ëUÂaòEþ0<¾ÀtKgö4´“v·åꦛŒ/¡ƒ”ŸÎ—™¼ß®C#)§¯¿¦ó^%m·ht“rÑ@öÓ°bÊɸm•Ð!Ö#q;öÞ>Ï“ ƒ±Wu}¥t¡íNŠ}ƒØ.h?±,Îh"ºN޶”ÑA÷­­žîëz¡&RûœÄzèiX)ï–Ü-_îÊÚ¶@ç.gÚ¾—`bÝ…= ¿aähÉOQ˂ӣ¡v0 y{öÓVy´Žç蘌a–•±{ÕwÃÎpô‚z ð‡š{4VieùPýË^`ÕÒ|¨òŽd¨a½ Õî/Òi˜·Bã›·rë´1œhœïþ̪reã7œ³€šôIs‘5ï †ô“«›èy‰`¸úþõëÉ1ÚÐDÆeÛ,.×*„–|ÑbƒÔËÐPÑç¿HšoZ,ý®m˜rØþ¹jý?3bU…æåç·>‚² š4Eº ñã¦/I+Ò“3 îe:Ða~\Ïtà©ÅP«tÐHÈ–ê##šX^ A§—R’ ´Ÿã) ê~#ƒ»Â•óá î†l ‡©j{#‹Ñ»0öJ¨Àçntž}hRxæ)T’ñàr÷²¤l¨¸1‘íh‰µwßësÙ˜^™r©V} Õxضpj«röm.Þýåg‡6n†¶¶<’ H6½°T+F‡Î,ƒzÒ¯jÎ)ÙRd˜Ó°koTÍAi\Z Ô¼wa~¹Zð°Êˆ´™Yè§>ð…¡vö2³Àø*^N·•ð•û¦jëE¨`{¦:ºŸš<ØtÊÚ\ ãƒ}Ì©R!èÚQ¡ÆSùz›q5pjA·â½ém.¿© [µ³øÈBYÿN]‚ÚP·úmãœP£»SïLg=´ÖožqXqHùï¬|ê×8èÍa[}^ãÏÀÄ©Ç_x¡—|O?ûçwM `ÐYZ§=Åjj^ýŒr‚º¢«Ü;´0ÿyÇÅOEg‚ cøÂ†WŒÐäc@7QSm‘òùþ;¡¡´-,ßù"T–¾^R·*OøyÜ\ U­ß&¼â€ÚØ;Qµ±˜ÿBQ£; êΦò8s^¨Ld‰2ž›Y°?ýL–ufÐ{coC'¿Œú¨ðnQ˜‡±áUx…¡“¬oîô¿“¿Rà‹Tw|Ì`t}»¶ü¹ù]è²Ú6{‘^êÎg¨} €ò1ü CP)b¤`ñœókÅð?tmÐÑ•~é)Ûk4:=Ðî“ó:^Vž„ö©}nÌ@ç ç ;1}IŒg"Ńº´N"ã@]ï­v=¹ &SÞ¼Z©m¹Î¦sš¡gäÞGÿË.0*ʛ޼û-ôrüö)Tšƒ®³Š›2ü¡ëÒýÃŽ'“ Õôtãͧ˜ž\9z«ä+t„ŸžÃXÓÃB¿hœƒÚõ?t}ê Þ’ëùIhÅzGè¼ý`ÇX-täÍIÜfm¤é,æ‘~?òº9)9h"õBoæÛ5£‚AKÚÉ d|| ï㦽6‰Pí3!f}Īƒ¦Sî{Auû¦b§9¨ÙÀÃ$ú#ª²#´»ç{ j©›éçj¨(ð])Üâ½,e]ñÒ``ðXáïO`lFIøÇ =´®¤LLÃh΢¢--0Ìw\í¡Œ, ¤±Ýfõi‚2nU£ªAPÏ>1v@µ×#l¡ŠŒ‹w¾ÜÐ’Òe˜×õ60º ‹0Wºy |8 ŠyYîlÐV{ê®ý5è+=öB*w4Ÿ»v9˜ :šnmå\˜—¢Æ†Èxé7{²‘øu4Ù¡øî×ë­Ë)î³T`(R:rªÄM›Ø‡S¡2‹˜—*Kº¨Á?‡ Ìþøköß P̶UXÓÆœmŸ˜u¡õ 1þmú¦;Î{CËÊÆÄÍ6нÃ|Ù)è™QÏ0x}Ú”F1Aøµ9ôæ¶áVÐæõè‘_8tõ¤M^ËÁìFBéÓÞÐÁÖ]»]Ú|5Ô1—ºBoX±ŠBý«XŽÃŒ˜??M™p÷x¬X ®àæbפ=ê¶"üÕ® "ŽÑ´ü|ã¢gâÐxˆ…ÙÿeÔjYq×ý+´¼WÔøÉÇð27‰¢\èPa}‘·ócó¬U~ITC›Œ—ZÍì 4¸~¼úrûRh¸Ýy;;]z«¾ú¶{ ºJ¥×ÓG@SL™‰ÝRèî<ïiÐïý“Oz¡û`>[Uô­ëb-em¬–J×õA§Û«Á¸WŽÐšÀþ¥1ät›½+pZ0£gý9:ú¯®»=]„4xì ; vÈù@ß›-¹4ý™Ð«<Ù)¹º zVv-¾!>½ÓÛTåaÌYÞ/æZüÂ@†$`˜ç‰÷x|d†¡Å©;3nxÁäû% ;ŽHÃ(ÃÅm·VAzÚtÖÃd^Z=ê-ÿúøºpo¹ }5>sQ]»¡"øãâ ®4нÏÛ"h'´ü"仓Ôïí*¼½ŸcrîÞ95ç¡#ŠÁüD|úÇ£´£N Bæ‰|`®Uß0 üjŒë¤0aßkyìÄ.¡Uw5-bv Ÿ Zõ´‚Jóí¡£¾&»¤)Ú…ÕËûîçBgoö‘Ÿ?X ÄÑQY‚ŽF¡¹l‡Jë½¢ë¼w šËñ ¥|h;| ×Èе¦$:öö}2nÓ½+dÝÅ–ЧLûl­Íè|n»bN÷#‘~Ô‡-Ó—OnwÖ'tØž©AiÇžÙ°:1(’Ðdç»ô Fr^»d>σR±õç.©Ä¡¥$Κ#ãv´;ƒÖ}c)FËÉq ~¾Ø½Èmúe'ÌŸ÷¶¬§/ñ‚Ñ';èõ3Ãç΂÷SZÇaÜsóüba4²ÔâÝE)LÄÕÆ:²Ÿ‰‚’Aº+3²ýPï6òªì ½2©·_µBé,´…Þ‚=Z傣БpJ|ë%èÌ^9dG¿:Ÿ®½fõÃÙYµGò”ŸÃÀÐÛ9w •ñkgùªPxÏ%.{@>Á¯É¿oP¸[3Øêš”^ÞmÀ² æ1©èM¾StMiºÜðânóAã­Ÿ^B 9¯ÛlÑôálÔÚëíÜõšö†çïÉ[µ­Ö‹% iGÆ ±`]¨'ßÓEÎÿt”›(©~{=õ;7y@Ë–ß#ËöŸ€Î™/‚¶Ðñü¼˜óÇz¨wk6{´ì=†ñ« á‰šT‘—Ô}d»ßí~ÊÇo:Æcö–À[U¶áG+žŠ@3¦UyŸ*@óÐ#“¤·K¡éP áu ÌO»ôŠþ’€´ªt6'÷CGf“eA{Ø—r†o0€Ï"Ë'C·A4$ÿLì¼\]ð"zHþ˜4×}$3ã,8|²€ZïÒèýP»mÿÄË?R¯Øç«åùxÏ@ƒ#®Ð¶ý`åÊ÷ê—€ž¼¼”]ìU0~Íü)Ã[´(ë&±›Hx?ZE¾·Ù>ãøp(¼Û³3YÐ^8üîGóÈý ÓT(ÉfÍ´xøzÁ¯ Êa-·ŸÍ’/˜§%:s² št|Í_‡NC)™¦±$¨w©?áæÓ-dܰF…âˆ@]q4®y¡Éi÷®E^ yñüú‹ÙtбMï+GÛgh7õ+ï: -lE IÕ¿0»Ãé³å@´hê>z·mO¿«¾ëâ)è«òœ?i¡îm¬þ”iUè­×)ºŸÉsW,åE^fØÂofÍÝìÐñ’<¡Þ˜n†ŽS­cÂçx¡±rÎpz+t8Ó<3îÇúcå·Ÿ{Þ¶@ÃêwÛx¢¥¡k.É,ȧ ““"¥Ú~h]Ò•«U}tèYdCßq«•Žae0€G=L·@gڽő¶ÙÐE§âЛª¾"¯œ útT¥Ïƒ®ß„=ïº W|K¸ ³ÿÏÆE]Ãë?‡^…Æ©WZ Kò¡y,;»³Zº\/]~« ]âÓ?~ è;q<ß÷”ôÄ¿N½§ ­3Æ 8¬š¨…†Ùàäã70ý}2 AOîº~¦5å1t}a.½±:®éâ3sД¶º–§‰šÛí3”òŠ¡ ]uèžÄ—Ax@7ÜmÿqR:ç³S,A§2¿q[Œ ’øv0iF²l3Ll+Ú³ô`´tEYlÏV„.mÝÃéÖÐI£ÎXf94eÈ>Èîͪ®^M ãÐnõy(é“ý‚Ýï>­Zòz[´ó™m-Ÿ¬jÞí‚¶öW-¡º¬IN­q;Ô3xÿXš…1g „:üqcw¡^²šå¬ÔUÆm¸Ã. µw¶è ,‡©tÌýˆ¬ZX×CÅE]ç6±{I¬a™÷Ÿvj°ÀXöÒçé|M0@ú9ã¤6–†“U0Á}wò›0LÆù؃髷+jß­„q®â÷7¸R㈆jH9/%ýuª]í%çï§HûP;_®ÄXíMTéõæžçÐHú+T=Ñ€»½æ~Ð×eޝ8æ=bîÓá\Peñ÷ŽØø²œf¼& £ú™k¦@›Â•{WË1ýJé¦õÐ tgä¹g<Ô-¯}ÕÐUÏ »™¡!ßðêâ*Nh7z½{Fo=´âÓ²/@{[õÃëlÖÐ^ª³uß¹»P7µùÍã» P=6îª|éT æŸdœb€Z‡%˜'‘uÏXç; Ñ‡@]ž¦úÞŒ¯Ðè¾ùm;ˆ˜yC…‚ýÑò€«{>ÿºV’úh7¾¼é(R:OöÛ>nõ«ÍŒÜDEDt!Â/¡ŽÛ‚ßüPƒÅzéF˜ÆWí0œƒnʲ™£Ðj2W}+ÂjNº-¿õúɸnÛ•úŒiöLh3ORÿä ß?›, ƒ*Ù¶ñ³P#wÿ¬}/Ô‘q£:Rß6LK6[vA®«Aý©¼o衆ùYëȯ\h%ãA-:ö»Ðhü7¹¦;P'_:,ø‹zÏ^ï!lÝnž·iÙ@%Œ²º¾Ôš‡úC5n}W\€ŠÜ¥O“Œ ¦ëÇò¹“~Pwë[ÇH/Ì.kSaÐÛÓë[Š#CSaî•çŽoKª`löÓVVÓ3ÐEÎ ¶¿}»Y3Å ¾S™[`8â^{æ\¢%ûmbtï¢i­% q»vÒïì”Þwd_¢´S–/‚ΔǼ•·º ƒ2]{ZùŸó|a­†–añ0‹¼,hÃÐÙûž«ÐÈuƒó·î h%çW©~mà ï6K×ËÐDÆ·¨ýC½Oý¼ê˜É„+ÛGh66‰,©ZhG•ìÆ´Ån÷ ‡ìÿ–Û±çŽ-ØŸrÊ4´R†i;´S¦¼ ýË(& ÐÒ>³÷Ô­Zh ¸Ìâõ%VŒ4e~Ð✵õ%C“V˜ÛÕQÐÌ2™¨þ³ÛäºCêóJÉx5~RûìÉ\Ø#¯…y¯*R_QïSÛE¥MÓc¶K¡ƒ‰ßÖ£®óŸõMŒÊCG[÷BË5P s+‡f²¾Ã—J •Œ{özª _²¶ÚÝ(ŠšVÈGÅðà†GÚ¼( ð ±üèÜO+ …ÄÙM]Ýí—Wƒ¶%{¥ÎBÓ~-Ó¡¾nhùNOŸ}Zš0&`«-ݯgYDC}EãXÁ™Æ…÷Õ—Ï¥wrÝ,W[‡.Í{×w§,Ä{„ä×m+€®«Dhß°ÙwV…šOòØÉ -^öƒjw¡•c9ÝûsÐŽ)µ<‡ ¾Ž²ášv9`Èó+ä)†Æ”½ûTFÝ0<ƒO‹ž/ZõhÖ@ï*ÅÓI衇»#Ìû‹ tåÊ?÷ô‚.§Â јr÷¤ö/è qV×Åc¿ýÍ0\th g•0Öÿ¸[f÷šHÜÛ)Trß*VšHþ«¥®£$ǯ2Ýw:“ñ€g 4ãÝxæ;´ÿÔä6Pjƒf׃âíÐþ‚²ptÁÏi£¸S'¡ÓdɱgËè  ŸæÐÖ†m%}ÊÐZ0¹OÊPbëjõw®øu¯>Ñvî×µ¢e |ÙEÖ'/2a µj³/ûRÚÑ*'£4>Êõ:†N÷â  Ó~YÄ÷ãÃPLÊy) v„º~²Œ§wá­ãÈ]×ÖÖɢ衅öSãݤ¿Ø"–Àò†åt­_g¾eÓ èÜäa¸Z8:ý6ÊN 0,Ô³‹\—Õ~ÔÓ©ƒß ÚŒ¶T´kACñÓÑÆìµP·Ì’ÐøîéÐÝh|tåcÿï³POÎóWQ¦—0¾Á—wý€fr~¶¹ðuLMçhƹ§¡‰WîÐH`øÛ+ êÉõ&ím"] Í9+ñ ÐüÂÓçØa^h->ø¦Fš}踶dÊ@‹ènÉN3hÞ†ïO‘Ñx Êñe£Þ/ °çêYÏdhøx–gB#% Mºîñ/ô5®Ù@òU®ë>› ~˃J|6þ”8ï/|Ÿjš½|;‹š¡‘œmd½^õîdÔó}µýÉ’÷VÏAе\ÚëPKîßî^&~Ö–~;4~=Û¨!¶PŸZʲá…uZ-‘kÍžJC‹ìphÓã ~Jkü¢6½²Ð^»ïf¥ê¯>jZëÐ@ïºk¯7ðsòI{9Cc'[·ýfhRá~þjšÉu£mdœ sâ¸Þ«B‹ þaó>û}ØN®³è"õx[hÕAÙ2 èó»x„³¿÷ñ•ÉТAYMM-iË“l ó[šÕàó>èT˜¹,º3îÇëÝÆðoð ×=ÙÞÐOW¥Ú¨Ìx8ÃïJœ\Ë^@;‰³êïØ?>vá T’ë ;…ñ Š‹Ðè윛r2na=VsîšSC~Ð"²~,Ouá÷íãYÞØx~c)zÔÕ £AÏ &¡õÅ̳TƒF[|e+4ÏR6 B›¾€ãGY °.ðA§U·3fi¡›²\:pS;-{ŒERÞ¼‚Nr]OwävLô¡Žœé¤,–ƒŽ}ß6GÏýó<2NÑ‘[_á·fÃu:\ýtu óµ+ˆu)Í áwGBŸAKDíà<Íh9$éõ‚atòçá+¡=ár±•Ü{è4¥’¡ùM†Sf4 è®äuƒf|¹ŒäKhÝãºÕX-:.Q i_Þ•¥âåLÐüÊ\N&<¬ â¢O;ìjãÓ»Ì)›¡ºcg§ïBüº‘ãÂËkî.ð[%æ%”Go‡ºæË U é»ž©öÀNhh۫ʰ+`aÊOM¯Í†Þó@“üþ^¡NLG}ÇgF¡Ÿ-•3…v²ÿ;ÃWá+± _ÍÅŠéo¡ÃÙ³?Cã–„;ü‘ ýÙpþÕß–A¨»(µS%{hA¿7‘ëhÚ²[ÎÙ B+Ó ûÕyбøù·;»·A=9ÔÚáßó̵j)Ë-¡!5Ìà°4?4žï} kéC^ŸRƒfÊ49#O\Ú|2¢>Æ(2|ò?yëô^Ü’æ^À£T|Q\lçröH+tU'Îô{zÌÚu×ͪ_¾ me"Ç£C×AçS?uÆ´ãtàË;Ç[1?øÈµ7T¡#Ó»i×ã8h´_r†Ñ·ºÉxbÆÙ•í®¾.Íi;¡m1žèbtd §m’L€FªŸR©ÿqùÓÐ|aÊy<ÍÇV+êw[/ܧÚê>…v|ÚípßÞköû Žö{B—?ÓžoG¡#yÊÆ¥¨:/`ÀøÆ‚\Qù ËbSʃIèÌ[#ì°ªÈuj5äúDj|„º^qA.É~¦®k¥^—“ö»›´sÔÏ©ú›j[?G¼S]ð/z–ó„í”åœG å}M£Q4âáÁØw ø´a⛞ï†ph8òðÀ"ÿ Psð“Df¤8´ÎdôØCçVÊB8èØ+ýk§+t°ÅkHæJ.à±Æ{¯.™„–Ñ£ªû²·Cëå,ÇË’QТµ5ü7 ?T5=~­Æ¯é¥R Þ_èùêøÄ•Þ?‰ù)_o‡¶Ów•K—݇²=õaUŒ“z¡Éµšc¢:_:ŒIu'@·äíï·þ‚.bA tËR:,Ä[; £K 1Üp2'€fÓ\GÖo„¦Š§øJOè|•½¯& ma|[g>¯ Ø ¥ëpãåŒ?B'Z·Ñ'Ak^Ô­>¦)h ×Ùw“ëXk>?>š}Úq¹ …´oM¤´šâ@ÎB¾Üs¸jÁ¯«pÛòb_Àó ©x¬Œq/+Wþqhªf ¶{» êÈ<í™JÚWýƒËk)š¬ Ž–oa¾·…ŒŸµZ„^+¦ í;§:×k삎b/º¬ÖÐ2…Oô½„–^êµÛF¡ì÷f2.ÖfQÐÿôW´ëÄZ.óW´ Âêóä]‹ú¨Çw£íZ oxVÅ~˜‚N±æŽ2>èì4ÏkΆN\ZÕh¡ývíÒÓãyйÈaöÛÙ°ðËxÎÂz±®ç™mvÐ%^Pv%ÃíÞ&&nöÐõ­{±ÓñІGs·šCÇ >Aí²°¾¤½½ƒ}¹`ô’~|©¯[ðÕ-²ÎÐÆ®sí}ËB?µÈH˜>µX°ïTÿ¡„Ô/maG¿y´cxáxÝ>ÏõÐäÈnºêV(´áËÉŒ@ƒM"{S´=»kmôý34ßMÚå€á±r¿Ý—ƒVqË•­ÕµÐIÆZð] t‡¡uýÔ·•´/â‚MŒóB£Ì…Ö5OÜ Åä1CóÓçÚëUJp7Ï.ø×'ÔkíÓÚÓL®£iO¶.Ÿl\˜—è [Qð»ÝZÉýhdœ¹k³…¶×—hèÚA¬Ëí^µ§@á‹ö¸×Sq 9^ET¼B¾Ÿ¿£Ú‡<’©ú …¿`¸ïuÀB¼bÁ éwzL§¼ð|*~o&ý²¦~5¹ùÝЬÁ?¥ñ ñ·z<º»é4ÝY²ìî×ð#µ?45O:ÖAÇÝÉo»>XC+¾{AÆZC’5«Ï;BKÑjÏ[Ø ëŠíåòˆyh©9,´”å+‡Ú íø¬ØîÍÐrIÏ*ûÈ/ ·¨2ZªF@æ]r;2^@eû>Ô‘qözr$/W‘ëtÛl?½ÈŽÐYèGjƒªÇª«k5Нï„ÚöZ¡;Ÿ¡{L—o‚vT‡Dêg®ƒf|lÂ[hy0¯¨ƒê}<ço1AkÑëÅô`ËMå&L úŒŠ3ª á+G¡3`‚q…È¢…õ&-ûCö¬<É«Ü ¿™h÷’XC»‡Cñ…:/ø¨Û$îÚžÄsн8æ‰v9´>è>ðjC6´UmÏh›ÂüÕ3úNSм¶æI4+¦0eg0¹t!®ÕG¬¯n}ctC)H:î5Ÿ“›^íq±ô·8¦¡ûYßZhG}Ù\±óÍ\CÅÏ Í ë.m[è·Š}c½Í+0y`Ì}sg},5n‡6ãÑCyw´Ù”Âxˆ‘àCÄLù±P¯‰~B,ĺ-ÄI,œD›Ék.KŠü Î%”u?ˆk'"&Ê%b&ç‰6“×<ä53ùÞÍ„ü!^7"‚œB¬D|1‘qp&²¾Ìä}®«Ä}~¾".ò9[Èúo!ä ñõÝBÈâ#ÛÅí…;Úß a—'ù|BÑzÊãö¢­Ôç’¿ç ë¿í åh+Y?²>›Èß±’¿ã* ®ÙÈÏùÈþäc&(×=¢žÜ߈úð‘õe'ûCø!ÑŸ‚ä{øÈçpíÞL~N­÷òsr\Øå‰zRßÏCŽ'±N ñ’íà$ö//´…¬/ù~nêóÉq¡¶‹“:®DÜñ“|ÀG¾—›l3ù>’2‘õÙLöë²Þ[ÈϹ©õ²¾ëIyå"Ÿ#H¶o¡ý$?ó“rÎC•²$?o%ŸÃFÖ“õ¿Œ##uI}'@Þ§ŽïNRßQßËG• òûd¿mã!ÛE}Y_>ò>µ}lÿEÏðŽý¯í¤Ê9Ur“í¤ò1É,Tþ'ßÇNÕ³JDû9©z‚äcA²_©zU˜l—©/yÈÏÈúñ’÷©úW€”?ª¾!¿ÇNð?Ù^N²~Ôçñú…—ü='ÉT=F• *?q‘õç#ûs+ÉwÔq ¿¿…¬7IyÉñä&¯ÈçqPåœ|;)7Ô~å&Ç“Ÿlù»-ä}.ê÷Ÿ’ö’|•ïyÈ÷±‘ú”‡¬'µLdû™ÈñÜBÊ ɧbÔöIÏ$ß#H¶‡j„Èzn'ù”—ü;ù\.RïqÏ]°;Tù£Ê#9n dûبõ"ŸK•S&jûÉzðPùžÔ¼äóy©ýHö/ɧüd{ø¨ýF>‡:läï¨øZïͤ~¢ò1ÕSõ0)ÏT<ÁOåêø‘íÙH²][HþßD¶“¬ß&R_òQõ:ù=ª>g¥Ö“|3ù{rE–‘üEŽûéGêó7õÙAê=N*Qíõ=äõ§êEÒ.²“ý°ìv²ÿ¨x†•_f’©|ÁM¶‹›¼¦ö?U±’rMåª=¥ÊÉòyÔûT|°•ÔßB¤æ&ŸCÕ£T=ÂMÊ3),äøm"û‹Ÿìª}ßHê3ªÝe!Ÿ»`ǨãA~_º–ÄSMD;…דüKåoRX©rGò%U³’ßÛJŽÏ6*ž"Ç‘ìW’ï·‘×Ôvó“õ êfò>u<¶üÄGò37Ùï[Èþ âp&òû<ä}ê8î$û›‘¼ êy*#ñ&'u|IþØF•*Þ"í ?W’õâ'ûe)ßT½GÕ ìT=JŽ#;Ù/T>à¡Ú?ª>&ù•“ªÏÉ~c#'@ò·Q¿GÅsä8På’j÷بv‚¬'7É_T¾¤Ê9.T{ÄG}/ÙžÝT<¡þ¿â%AR®×‘ü·‰êŸPíù=N²=TBÕ'T;ÌM¾w;9d¿l¡ÚiRŽ©üKÅÝT>ÛJ•{²½T¼Jµ\$Påêwp“õ¤öµT|Jêç…~$ÛA•wNªüSù…¤,d½É÷põe'ås7©÷I~æ$ù”™üž Ù!òþ²ÞÛÉq§Úevò>3ù>*>æ&ûWˆä3~’ϹÈq Ö—´ vì~ª=¤êiªþ¥â~*ž%ù„ú9•ïø¨~ ÙêxQëI~ÎDêo6ªßIõÿ‹_¶ÐÿT¹¥â)²^¼ä8pSñ(µ¿©üHµßT——ªW©õ#ûoÿ’”ÊÇT9a&ëÍN¶c#ù\ªþ§Ê=/Õ¾“r¹£Š´#$ŸQù} µ½äûx¨ãN•Gò½T}KCPëÍEö'ù^ª¡Ú*³ýL_*þd§ö3Uÿ“ãÉCöU¯q“|ÃF'RÉûTÎB>—™äfªÜ“|#DÒMdÿm¢êC’ß6‘í&åEˆŠOÈvRý®T<@ö‹ð+âw,ä¸RíÕo úËTýÁKÖú}j\Šêg“ýAÅá¨ñ.ªÞ"ûêPã,Œdý©øò¿èª!åAjÈöRñ)?‰+Xþ  >‘jOÉç |EÛ™še/ç]{0¿wÐN©Ìð„àËÀ¼ųg÷Àâò¥|Žs\`±fÕy_%0›ÈÈbÌÊ^¿®´Ë<…=Œž¯VýÕˆ°“·SCAy²º„!XTéb•=To‚šàaw£WØë¾nM¸¼4ìï׉ëñ}2.¯7¿qÙTîrÐkS?^؆{K¹p‹‚ö̀˻k@WzYÀÕ3±`à³ch~P¦eÁ òÛIG!0¼ûn¢(û&qŸÒ[9¥ ¬2LBÜÁh][lÝ8`±ˆÑ@,öJ¤w½? ê"׿¨|¾ãüBSš@#Øôw–5˜_¾ïd¬¨ïêreEå`!¿çʶ ÐW–::Ç¥~ž¾ V½¿&^~: V{õ3ûßHƒ-~PC,ØÞþ9=Hwt>ù[>tË}º?²þCá5ôKN+‚NϪ&Y¬Ý¥©ò Ût¿ñðÙO 7üÂýø8$Z²Ó–õ&ÈKïcõÞ‹nú㄃·K}Þg+€ÿ…cËûà`VÙƒO±ËAó»éÐZî§ ÷ö!?ÓÍ3 ¿Bÿ}ý7UÐÛÃ{á]€"èf$^7N”}›Ñ­ìÏúOOé²Õê¯5`·u¦š^,^lßÖð,ËÞ…ß»ƒ5a!Žl`NæŸ5“I¶ÿ1Ù ‡#”‹.:‰€Ùo¦óCQíÁäüœÍÑUv`¶‚OéQê,X~—5áèóûZÚ´ÛtÀl¶eà1y00<þ2ú}è“ùGõÏSì¾ñ¾÷HU0X$ÕÇÓ’ úï,øiTŠÀ`L}GÝN0úž}ŸÛŒèCÃdZÀ$v£·Ùò10ÙhxúfC ì|õË«ç¹E¶«à0¿ŽfÇg+и½<‚gôtÖº­ƒ ¡ÖŒËÀ ™C׈- t3ñŒ _´8wWçM0ø ´¸uY ¨¨µw%© €jšý¨c ªä¾Sź·†gD`ž]TÏöïIÃW*ÂÞü‰žçÅm`úø4½‹A)˜RÒÆ:©”ÊðÈí`Z”4¢5 fÊmwŽð¾‹>ïy†Ë`±"ÓwxëЪ1:W¾tÖùáÇ%ÚÖfZÃ-@ׯˆVnœtɼkºMßiz–¡ƒ›~‚væ’Ïi«@ϺÍ_:ìzz1×AÓ¾9xÇ®5 ­`âgY+ šÖòî'#ãA_æô¨LµÕØÆ}ƒÁ”æ4ÿ‡Ui`:+¾2¹`L&¤;œÀ˜’žˆL“S²ô¯û‚!%=øfÐþ&“Î1{´ßî½V ï×1ΑôaXÿ½¤¨ôÞe t†ôݱy…¢Ï†W…`A³ràÕõ6°xHI$ ÊüŸämÂà°ŸNè‰kB`q6kðÒK)Ðý%d³µAt. wí3 ýuÞl{×Ã9ïÅéëÁðe|‘ùEe0`òxsí- ž×*šÞ†z¥9»6EqðÍë ñ`xÄrj n\ç«”A`P¿®r“˜/ÛYè` †hTØÁB)ÇÆc>4–Èóû±ÝpÂw>ƒºÝ¦°µ²mpP@ÔsìÆ8ðóZ€4Ç8xnϲù }¤‰aûöGàpÓ_h _›¿”ŸÓGuý±ÔX;°;;`ó`é%pö»ð,ÁŸ ÜJÃr‡TÀÍɼl$ó-臦šV渂þòó‹”8,@ïˆm-ï£Ð'õ¥Þ¬M@É&yÐOa­¹Í&úš¸ºZ¬%\´6ƒ¦ò#_é­ù uDAåüQÐJüšæ– ê/b:ÜG@k«Å!–15Љ&ÖßëžROõ>çzyÙÉ·ÛÁˆKZüþSoЦlÀ}ÓrIaÆï`è2½3ÿ4PÒ:…#ªƒŠ±FJ`ÅõmjÍÅã`-'W |ÿØlõÑÔø¾ŽÒºMpûÀÑ(MþÔ5Œ®œ5TÛš5\'SV­ͤ“F"Ö‚æ6“rÓ¯AKï—´þ‘Põ?IËëªê” ï`îr~IT=˜zÖ®ý‚É1×ù‹{ÙÏÀaÅÈdÕKáð¢asg8ì~¦²_{(¬üyu1XÖ_³ßår´ÚVg Šƒæõ¼Ó¹gAóKåöšØDÐ*Òç(PMmYÇþÆ ÐÌQº¹m h]»ÔÎùDÌtŽœI¾U‡—sâÔà°Z<çF[°P»òãËC9¿¿}]_ö¸54¹Ááo9M¾{àˆˆñH{g)XÆ}ã¼7 GðÝ$ÒWá(ÉÿGïã-Ü‚£i!±º`%Þ-³Åä<èÊK«yÜÇô_L0£ÅMLî—D*~W‰=Cý¦­i\ ÝKIL š”4ß Y"dǺÓÏ[Îô-ß–ì µÓò¯àˆßLuß&8Rõ[öYס¤u‚#GÓ&/ŽÃQÒ=ÁŸà ºöÇU˜\ -Yÿü…=9S€±Z 8ìô;0·ôŸ˜_;£…éÏŠCæ«y«0;ÖÝì?w’Ãã@¿ÊNžF6 Ä*F¬ö‚ßž¢Ý`p͇ãîu/0~ÿÓþGÁ q©—õÒ082¹ÑB4 ½cŠ*>𦠗É3þÕÍt›Áäùg‡éñpðÄ«ï Ÿ‚–ÿDúÆ.Њ}.X³ tmÞi½Z: :_ÌGK9ë@W?ØAtŸ?¹¢›:5Ÿ^¯» †øîñ`0r½·óru!è§v‹¼èÈëî'ƒÒ`0£²¯å3ßxÓ¦ú¾ôE[KÙµxAo"ó¯ÍzÐ{Q>´ô$è‘|©cÃëÛüGÀð}._Eì00ÏÕ?±„Œ¼uÛðŒì) ²Á \»½˜O º}Ñóó`d´h¶N9 g§]§; Ftî)+ùÀ aWV¥Æwø²0xùñʪ­`ø|b¿Xƒ7½íŸ)ø ¦)§ŽXÙ¹W¢Séão ó›¯Ï©>t#çîm ÝÃÇžµ}x ºï/X}uî^[ý=¯3Æñ ?Ááô ÊÌÅv¯ñô_ ¦¿7îÉJ”³ë,ú›ƒÀìÁKúˆ`¾v?Gû‡[`š)ýuíæ)8¼T^¸û{ åüÚëÚb Fsƒö+ý"ÀøÂ÷¾;+ÀؘÝè²1fooм Ú%Ƴ#C…þØøÝéÑ™.oÍ´ÛxFNкÅÂØ$s ´93}}( c€ÖÛ¦´5˜]°–¼!éh=õOO»¦êgè÷ÞäPƒýF{nM\…ýsûnŒ¯ ­}q.®ƒCnË*Y–ÃÁã«K£¶ ‚ŽçÉ/éÀä»ã¶ÂÅ`xºüòó¯ŸÀôs|圣L(W,£wvή¯ÃfýÙUÌÒ`XO™Ø‡ 51Åw/tÀUÙóËË[nÃÕþ5kŸÌ;Àõ§Ù_æ!CgÚN¹½‚P<›Éuð \Æ2gè¸kaßós °Úø‚^Ý7P;ÈÉ~Ñû uL§¦ y@‘Ûv÷&%ØWuÄ,O(tâ™ÅM¶%€ùË𕽡`®´Ò&ð.XFá@§Ì*®À#%o0K+ºá—Æ æ­ŠÏê%àÈžÃëº*ÂÀH‡ûužƒj·m¹+8…ážsžÝ`¼êÑáû²Áô»ªKËA0g‰•‘Z¹L›ÞÍé{Ô€ ~lÈøU0÷˜v±\fÑ*¯TÄVƒEéË ‘Î`>¹ò ämo° ûõðñ;ÞÅŸgaÏìxÑ’¨¯°—ìÏ=cσl`Ï^ÊÆMÐ]uèñ”&}–_—[‚ÑW¡/ý5ØïÉs'w ¯²ËÆæ™å¯^ÁQÃÆå"e`µ}é×eW¥ÀÚêüS¦O `…gõV«]ŸÝ…—ì2A}kãxœ¼3èÖïè¼ ûú´×½Mý`òiWØG9ÞËt†wìê™4ÝWæÞóq€Î ¦ÛR² óª`àê[qм?öL4 ŒÈ¼¸F‹òùÌÍ1>>è¿®ª,)Ë}Áìô!Ϋ˜þ<;ÉÇ¿UŽj\ú²nx7éÛﱑùÝ{?‰ Ž Æà ”2.d _9ª¾ç*@Y} {©g(KŽ6Ú˜ƒ žÀê&¨ô+n`^&û6|…·¦`Ü|¼é”ð,}y¼Ån3¦gmóÌ^(ÍøÝ„!Ðóñ±KL_Ú³ Õ7V€ ™ÏVóuÿœþ8”¶áéááà¯+¾êäeˆRÑ+’$÷4.„Ø%‘šçÉ [c){I&FEç4äÁÿ¾Åûå@ãkÝÚPçSpék½¹h<’w-côu×ø-³ìHq%èz m»Ç{ô]þ܃é¿Ä7ºW>®½«è°’Å4èïE]îñçA_Œ}äLèÐ÷ì(ÉØ°ŒŸß-n¾¤ ¦;Ì„Mß±ƒÅqm§gæŠ`¹”Ñ]¼ £#̘F›…#V¯•d×L‚å—fÇkbàì~çn“ô`Â^Û`¶ï27°¶4í‘ú1³R0* ó\ý…oµèVâŠn e?Ȫ_ðï ðT;ƒþ#ºëB³ [ͱ…w6 ô‚vý*Qý¯xub,ÀðÐèY69-0¤¨ÁÕ`Ÿ¡}å ꮯ\½ÌCz߉4EY}z §)F_¬>`Ûfš¨ÿƒ#–çº&z‚…cýú¯ŸƒÀÄÇ9]Àçú¢²¯]ƒ‰U§®ýš.0,âMŒŸ1s2?›é•d_ÍTÌþü\´çWŒè'gzV>ýMç£?nÈÇèÈ\ð™ç oYÿ,ƒÕt—,Ñ=n‹˜[?û,èuþz2Óx:ˆÛ ?¶4èÅ«Ðî£ü@ 78îÔkôXNlêÚPû¥Ž7•¼¨Œô/ò\ §’=¡Á+ØÀ&|Ûí`y°žþu' l}·G‚Y£{{ðüpŠ<Òø€jÎI“«b‰…r*`üíÕ¶NÃÛ˜ý:*0z ß>q_OP#¡Ü“Ãb›÷¿¥EÀÐ+c›Z]*ÖŸ"]<1`(µdë*'U0ÊÈ JeË̼ểÉþ®£Œ˜ÿ¶ü$÷z0¾˜bUžýŒ7Ŭs²S}J‚P0gõœ-ídÂì€×CÚ¥`ñF,Mwæ<¾âwÈâe Ž*ÄOx€ÃOêÒs;W‚¥sf›ïÏã ½gŸC\å[{iÑ…N¸Òú.óÒMpݰôF®\£¡3þ¥c¤½Ñ]ÒÒÍà‡Ùÿàp3æì« ½O$~´Óûú|ÀüÇ+ÍYKÛ@÷Œµ¿Sä6Paœe]á:Á¡´¬GÁ²Rßá &Ûñ¿pøÑZõ¶ `yhõⳠ`1™scO>Þ;úZ8ޤó?Šéíûvåß=^‚vñ2އãc kæ·Y·žt┼>齯`—A'èÔY¾ø2Ðe½o òpЀ²áõ”lf°} š:bÆ'ã›àÐö¢¯I9 iU½>sÛЩ;i²vt4ÓåέÖÄüûYÚ¬×ý q3Õ@ÞÀÊ‹`qµãƒGýsp¿§õz?¸§®ÞÛ—ÊGÒ”.ÁiE‡·Uààž¡äXÁhÐ _m*)Ú[¥ƒ?e€–ª¤bÖƒï U=ÿê{—'è8ïz¨|¬xa½­×Z|'¢M¡ä›A´¯iñÔˆöã‰&=wuD;rð&ÃåD· ß®+†è,ƒìW<¬ƒ¯JÒ‡=ÛÙáëû7ÅUûWÂØZb?í(‰ïÌúcg/9˜9~†±ëºÓiÌö0öæSü5®nhvÈM7jQ€æÌ“¬‡ÖuüwJ½ÿ_h{Ëœ­tñOè]µié tèS4„¯º—Q5t„Û?Sšú‡’ŸwÎþ¼|.' º8==Þ=]jC‚ü¼ÐålÁXöºÂj‹XBîüs}þÖ]ÚÐ=,ÇðÀoô¬²¹ ×–AÏöPîêÐãÒ/2“òßiȺ—©öÐѨ«;2÷ïoÜd ‡ ô·æBç :‰Ï|†ÐùÉ8h£&3t^mZ}\xù­QN,bX 5Ƹû j®d„H|5óâ½ÿ\Sï“߯7Þ›­-ùÿF÷ÜQWó…z§Ï7¬Æ'þ·´å惪í"жdJ¼àÈVh÷céy¼ :ùYT ƒÎét¾Æ†Xè*’qß´ytËDwV½Et™ïñ 'ˆ®Û§MöQ¢›×Çw"¢Åøizh±;åÜ&´8WGÒhqÕÇî×_´Üdë’ƒS0M>3g~é·óS‹òÀ é7Ïp^8Wpø4Ì穳\ý„èÐÓÚ‡Jqˆ.ú¥+×÷DWýSôß0Z¼ù‚MÌè*´XùÒîún´Ø‚’-¦¤›Õ€in&û‹Z0½O0 ÓËùÓ¯?; Ó”tËK`º+{ãLWn+Ø)`ÓówíŸÕAÇS7×ÚQ¬önÊ€NuâܤN¿yžè|g3èd} :«¯>Žß×F¥hÉu©Ô ´¤”²á-Ýø¨NUQ-µ¥¬GGKóýñŒµhÙf\££eV?MŸ‡B;žŽmst,ò0±ÝÙ»^9|Žñï«0Ÿüÿ¬‡Vuò—eZ vÜE†)K¡E§ºoäB>´Äh¹š›f@Ëû¡‚GЪEñ@ 5zM!ÄkCë[u|)´Eeå2A¿À‘“{oŸü‡êZïñõ …þçGÂtµ0 î¹/ùÅ"öa.Ð: ¯O=ÖRSw÷oN¹¼~ùÌÇ—ŽíK‹R€ñ˧Ké|D`‚ÃîCLLä¯=ÏáE¥ˆ^nQ²ËÎ'ÿÐ+_‚sýè£*†‹Žhí÷ú¥"híA-üD´Ö‡ÈCЊhÄõ‰CI;HÚÉIÃÒ0qûúž.òºaã Žýи6;·ðZ)4­â®ÞÕÍ—rJ›`ã±+s ý6~ÃäßWÔBˆæé‘!:+iDS·ÏЂhF<ºÞp E” ãh‘¦Ñ°×!´è6“îÕÛ•ˆ–îu±_|qç¹~òÂ]øºòÚ&õ›ðõCò†wÖ0Æþ°›FæŒÝ²Óâ¹c;—”Þ^ cŽG.EƒŽ®_\M.1й„rPt®¥ùʰ÷ t*.^õKvñ?ôÀâû‡OQ¯ÑÆlöº‡[ÚÑÆ–<ñÚ´ö¸EcÆ´Éßà?6=£ìE›÷}št™A›Ÿ<2p§aƒñ¾Ìßë>?‡‰¥ëñø`‚8‡sâà(m™t3Lœ;3GÓ}&RgíøixV%;íii _OĤÌjx€å1bº   $| 1½Æ·‰BÌÜ”s³ö≇Ëús–ëõfßñ¼¦«\ŠVAÏdKxýkèïZù[ zoçöÔܤæÇø¾LbøDã9´áÄŠclË¡ )_¤w²O£ ”cMv¡ ß(@ 1¨^O-_›‡ý…ôó}O¹ö@ïƒܳ>ÆŸÙ\nèÃOÞ°úÞ¿àRa³¾_›è/ýZýQÄ9Úý“WvîoÄ÷1}ÙÅÆûmº°N¼QèÿE q”<¿ˆáU±sÔÄÐÀ‚Ÿàƒf³8—µ© Œ7×굡JëNy«EÏÙ/:`tÝù7¼D‚0x¹àXœäuŒ³K¨Ù÷³V”-7ù ƒïoVË/Ð¡ÅøÜÅ0Fæ}SP ²Ç컌é–ÃW`ìžnoŒ•ùÝÇW”ŠÄcr©1é)”·FVycF¹´®X„À³ùýË‹`ÄýKpÄî&‰“8ðÙ6F¾²N?›#fâÒOÁlýèèÃü˜ó¢Ç8æWD¤O…y2ÏÓm^Þ¤ã/àÇ»ÔÇ)Uø¹Z›­yI4ô-O䩊< })+Å{¡O#­þ×Ùiè³zpùÉÀ^è;õÈ…Q¬úÒ²d:*:®»v•ÄßåÙ]7ƒ,*<Ý0ýc‡ŸÐ ÝÛ$N® ‰‚îs‹ƒvœ ‚î/玈h@Oð‘ö {€iÝ×cÙÙ]0T=ž6?Óéæø†&˜ÙèÿØâ ̘æó‹³}…™N·ïav­P-}§ tñÌ6«¯×‚.Uà ¹Ðe“íÛî$н?¯ÿ˜ü»¨þ2Lt@WÀÆ[Ið™Ρ…ÑyxXžÃèñêàKNÝðEXCFõøvø2µ©bÃ"øzrå¤Ï øÚµy×èŽø>Oä'œ6¸ãŽL¿¨ý9™­3{¶Ñ®Þ÷ fÉü§³aj·ý–.Ðé|[úò:ÃN䫚ÌÕ-òƒ™‡Ó­>`v›’Æú,ÌàÙ%Ù}1ûÙÆÿœ¦)džéôqŽítïÅE©ñ£0sÅsÝÍZo˜iaZïòfÏ·îö`Ó…aÉõôªò\0lJı‡]5J¬FßÃpxIí¹½YÿPßÕÃÅkê®›Ž¶¥Bó€Ó2½´ÐýÃMðòrh•v³Ú¼•ZoúfäýC_ìÖ³‘†F;w—EÖ&ÐÈOÿl††y/ý|‘©>§ÒÇÌgÎ]NX ÝŠþƒ¯GM¡{Wn¾ ½Ê?×·OªØ¿þï4úpÜݽuˆCqì¼°ÜrÄQAqw'£jç³.vÄ阄'ü@œÅéñ§Œ‡—à+Žì݈+õÍû1Nh»Ës^²0Ú ÂäÔ¡ÝåƒÞI¿FhŸºðdËsèØ4îâô‘ïz;³„Þÿ XhººÎÁÀ——㿲`o®òóf|"ñt|÷3ZûlYÓÐ&ºýu¸ci C ðþý©0Å®_æ´ó'LhÆwpÂT@À.ú•~0õQ¢^¯;¾-ê;û*¾1¥âNá›Z"™Ðæ ÊþCĨ\Îy¥G1úË0Óø.EŒíEݹfˆiÏTKGðÄT |wÏÏOˆ™ÈËÙl÷h3mBþ§—y¼4éÅ¡ùN”½ücYhÎ_e¶MWiáþtëN£Gñ0³«­rÌ498,⋆Ù]‡ð‘`öU·.Ûu˜“ òuÏÙçÜþ&qÔobýü&×SÐëEhÈõ!4äz²EÄz"¨¹ÔµN3s ÔôÎ2œ~vyÖª®ÇO¾Ú;B̵oL¡Ö‹MãK‚éÂçSäûèúé5ƒß+`ʱXÇ«°¦È<ˆSó¾ޜӆozDóÊËïß&†t@eõÝÈEæw jeÍiö]Peç‘É™U%žÂ>ªPít¨Cjä‚köÈháûw¯ýLë] Mr&•];/ASnð…Á¤ÏÐ\2ýê9g´hmk`·°…–z‹I¿8¸NÄ]º8WI)ÙÂÀ·,£ ïË`p·×ê ýb$À0mÁß°Ø?? eúßM( áûŸW›_~ƒïx:Žçq0Mîן6ÆÓLœÂôŽÆË‰@˜Q<—“¥{3¾äˆÁ”åÀ ˜Úk‹ïL‡)íwz›–€)[Wü$(hyƒ{ÏNUßÑ…Aã¸'˦aøE~§ù‹-˜>kIÏæ !1V>Žc20”Ðnâ$ ãïM¤1õZ€‡=•`ü'¿ðg‘Í0Á0rÿÆOŠš[_½ƒ WÞµi¹» è`C­mI.ñ"-Á(*q­;9.ÅdÜñG{eoþ¼a{zOÇ®I: ½o(|x }µø®]¸}–œRý}£+.Jœÿý´Y—Ň `‚“¨ïÄɨ.Ñ, ŒÏ/nNÐó‚ÉŽÐêDÁd8±ÿ{ržràL](ÃOBƒéOÎ’2¿3azú“Wtv%Ìq"z׋§öóÈ µ™”sQк(ü€R´ž÷†øÌŠP´þúæúV–½Ð¸güöË”¼hÓoÛÿ¹Ø“ñ²ûš³frYÑ,4v9EÑ®½­ú¦7/ïï†V>Ú/E† ´e’rÊ¿&¿?sŹÚÑƆËâ.öòÃøú¯x¦×!òr;CÜ©óé0n™]+¿ÆñD8§à‡0ý¸X 7üôŒ[s~h$¦‰†aøÑçç›] ð# /ŽC~p©Fˆû—ÀSÇ%"7…`ˆŸóÓ>¾50¤õôµñõ0tFí‰ãÌ z›|lÍ—zêЪm^ CµNµ 1œ²²·xL'æ9Nã'Áüýø *0ï»F_¨QæI~ŸZ$s#yÉ?×_o©Àp°sö„딌d·˜^vF*ä†"ŒÝ`d îXq†|&íÆgá¼ÍwBà³ÏÀ‹•±C q;é'~ARåM›/oC2žxâ¶ÝH¦!úŠØϨöYíMHþ %îŠ~YVüÊôB;8¶¥U}_„«)篡ÝÊ+Cu|摸5ž†ÏI­ ä±B2·(‰‘L/žŽÁ‰&ºÒص\C»ý( ´[OSºI Øjl޽ɞß.pW©–ÝŒgÜ…íŽé\ŸÔ@Ê:š+¶W ¿˜_Ò§ 5šÓÂ5K“‘òë°c¯Ρ=¥︆”íÚ㺩úàÇõq!áfÇ™ãqyHDŒgmÅùV$2›ôÉ~É$œ~ýö!éí¦9^D²{›{úó?!9z¢=Úûz%h!‰®ãâJÑHên«ÙÑ$ŸC4ñ¾5—ŽO"Ô@Éð„cíð‘ ~Œíi$á×rüiÎ%$Eì‹F²O ¦O~GH^]éRG¹’Uð"¤î.Rx¢±mÛÏ,$žxs¼fTIÒ—&µXæ éO”|?HæöbºèwbH³OÊýp„B‰øÁ¹‘" åF$õ놤ÇHj=žÆÕ IŸW> ƒä¶wz}ÿÉrÎ(SˆDèÃ"«KôHñ圴ÿ žøþ R·y+Ù ä[E&‹(|†´¯ŒˆÈvïD¹ÌåË,ÜÐÁ0Jž$}–’?I]X™£Ò·ɹQ ù‡=7º¾Cj£|£•ÚaHe1~àPÚ¯¹UUc`‰d í»c}‰*ïõ팴C»{\ÏÊoÉEbC>§óâ")MJÞp$¿‰rþ'[Ò7Ií~ÕN¡‰×qfŒ*E2Þ«=ïíAòöÙ®aâÕÏÿ°F¥X;“.ŸííF¢ñúx&k$úÅÊu“e(}G9¿I;(Ýj¼„¤¹ñƒ¬®"YmE ÕÎ,¤À&ÔêaŠ$Ô,3îÇ#¹9÷vû e$³düíTÌ7$ÙsNꣲ’yÝo2¼* ÉÌÐ;ü(ß‚d-) Á‘ŒQ/9­ ¬tŒí‘ll葼hÝ©‚éSRžöyÉB;GÂEN!u£¸†O?è+âZl®ø·óîH¼ÐaãâßH¦Û]"…æ’›¡œÿ„,,µ·º"E£á6£Õ«8"Þ¿»3;UÖæ²ø=Æ×øqÇäQbÜåx(ù{‘¬ZˆA•÷$§~¾@æu8’{”4fìŽd{Ÿ×2*!…ogÞí=WŠ€ŒÏ(ÿ*¦ËÏŒG*ÝÞL˜+†Ä×I™Úvô ée”8÷:€Ÿ‰$}ý?3!™o¾?½º#ÙAÎüÛwzB“áº#5Hb/1NRãÉ.;ç#©h³ ŸÊ»HTB…B¼ %ï(‚“Êú‘}WÒ Tޏ°‰//w“™?‡ÄCÕU0IGR°ÑõF2eTîr+ Ùµ{1Î@hW>.ÀH9ö¼¹…ð ’êÄú½@’‚7øDÖcãÂ4`†d³(yº¨žaÄ$!i/·CSb,eZ‡?:DT®ˆëz%³ ‰µõôá_¤‘¸™B@’à=L¿ù1’þ7,y ³}k·RÀµ“f Bê”ÄøHå(%’ï¡ä-C0åŸpˆ÷x¾ÏýŒTfBß‹]$âҬˣi½ø„Ýêñt$å>=S|á’±¤œ[‰ä×빈yŽðD¿‘¼%%Rब·FÀû¥s²D)nÁvÛ‚T®ëäÞ(€”Ee}´«Å‘Úäα‡:ÖHÔ†’í–Ȩ yŸ¤iûÚ7;#©8ŒëD‹19Å…sAò”¼¸H1OüÉVTâæ~zÅUG‘ ®ä¿ Ù„<Èñáìr)ðzÿŠÙÁàÌÕHäÔ‡õ—ޣݬ”s³ÑnÂnJ`Þ·²BþÞx"uv<2’ö,H¦ßI°E´~›ˆ¤â¯® m_„¤ yŽ>1 A2D?*ZaÃÇ܃PaO”ÞËñfBH"‡Ð?Š7ìÊpÊBrq¸¹¦E [0+¥üí©\ÍQ8ɃTT(O!5Lk¹d …Öxo„ªa 6“ïÞ²c7|r§œÃ‚PžHOjóÌ~eDÞMØ€T7`¡&S¢Ì{ ±,L›ï/Aâô+~ù_ÄøS.1°þˆ7’ºtRÚwQ’ ßíÁ¦SŽd…tðôjâ}R#”„ØHÊçÚYAÞUH&kí`wn$¯‹'æ]ŠdÒ†‚ÊžžAȾiÛ¹Î@$ÚØ†+$+kƧ2‡Ù-ÊÁ9H†—ÐËr͔󗬧ä£Ç )!×Ía8ÇôQ̵0Îf$U±¯B¸Éü®³©PœÀÆ—’ɧǹŒ¸ñ#h6í{ÆkDŸãÁ$¶/Cb²”s ‘ølÎ’¹LOvHú¢6Í™ZE${’ˆ ïX†$âkêÿA‰¦Q¾Câ« 9”4œäñ¾¿ÉDz¯» H~ƉÛnERäJòðßeŒdYûñŒû˜Üã-¯²ºàz¼#B]^PÚwiêS3R.ÂÓgŸÅìž¡IRÂã{‘âuœL%¡?Rh£äÉDHéìé¥ÝHÑõ(ÄN¢½½Ö›[è‘WTÒÞð|$ߨÍl½­Á£Oôç"EVʹH‰GÃa3û!¤ù7Ó‡‘Ä8%ß#‚Õ„¾•ŽH]>ÚwÉ0Ÿ,=8s ÉM|}’Þ…àùÞs%7dÐþÈ«Œß¾h÷ÊJyLS!±Û½|ûE‘lµÒÃ*ie$¥NìÿqÆÐݶ!$;Gô›,žöÜ*‰^!phnHÑî· NêF^Hüó´õÏ«-Hê8a¿\7¯Ð߀ä#y”PÇ oDz‡:d­Œ‘ø—ê€r7Y„Ö‰¿ÑÚY€$PòÇ! Ǥbƒi¿Hâ·] ÆÁH2 WóœH†?¶ÐÉÃ÷áp6¤`@Éÿ‰ö¶¸PN„À«òJœÑé2ÕHÁ_–ÏõÇz¤JIßêýHÍáþUŒ£ÐÞÁB\"åµx÷nFÊv„\*m£œ3‰Td(q$¤|·ï´—ïöãh_¡ÿ´W_™Z)è´GV0Ög› ‰Ì»±KGx%¦eE¥r ¦õ9—#†'t[Fr îÇd±7¸ADÊ2ž¯ÄÌnõ’ÞLè=iqBÈkÔwª/¹-ûP2%5ÚËðªuÅù'h·LrSµo].Â?äƒ$+_¬+BÒ³”¦HŽƒ’)Ü$ê…è¼/Û}j‚`ƒåý_1¾gP¤Æ™‹MSHËX R0±iDaì|æ<ÒÁ#É@ÂnJõ¦ã ÉÌŠ-Þ )¨Óèt×ó"4I9P ):PžDJM·C†ã\‘è|ÂþˆH$ÂHà‰À\û²h÷ԯۧƇD„d|ÚY$sî·¡Œ¦ß½¹pà„ÄaVnQ2f„ 4B2¡_Jæ7e!™ùer…íH^€r¾%Røø3ØoâoB?È®¦¬G@CäcW°ã§-Z¾!¨Á€+R$÷})ëà‰ê_!5¾È9ßÁ3HT•À™â;pøÙÛ‰ä%:üLH*Ç"ïÙ÷ÍH6“Æ „6RÎKFòç ˜•Z!qo¦I!ñß×ðŽ@f§]ßÈ#e9ÊÏHžçàËÄŽß}yó ¤øã^®n‘?þ4-·š£‰²cl¼ÅIûæ|NqI}¤Ã| ¥$hEÊÓ”¼ d(y¢ÊSkü$$÷7˜]Ø«)Ÿaýn÷e¤8Ä|’÷Š:RZ'züXÕQ¤¦¹I£äküØ{$mŽuû`?’¾FÚ´ó+Oç#ÄC9?)*]vtß)¤ÄH\ 3Rò¸#‘ó³+_b~ îî,ERö”„§H&ú;Â<$ƒÁ®­H~9!ÇÛ£‡ðàÑŽ³ç޲/°d!®h‘è[çÛ½e˜¾`ÆZ× IF+!éÇ£w-‘$=nÙ‘$ç!uç$¹9(H¾–°Ë²/ãÀÉ•¼šY„”b¥q€à“ R½h‚œ’z6äw/öÆÝ½5h·*fþá7"ì¤SÈ…=€dó*jß­ˆD¢‚„¿¼{ýR¼†Ã*$ãT§U ã37ü˜DV$ ¯b!’ßAàwĶ 7xåSÎqBJÍѵÛåâÑî⾘$åü$¾/wˆ‘ÔJÞb$[G9Éý&ÖU€#%óKù–qú#¹<¼áƒ$\.â I76Ëq1Er_dËÄï"¤@9G)µÑÿ,ÊoAÒ–ø„ R81´vÖcBV„¼*{íV±¡äÿCjˆƒkÇ Q´Gœ°³’Ú ïwíº‰ÔVá¹cþâ b?©ü!¯QLm‹Ë¨GŠQÛgÍ!e)Ì ÛºópxA‡ÄŽãîï~$^%ßtîÈs$e$i…¤0oDãÍ,’~ýàÑ÷$E9 Éoñ3ÃR˜ÿg¬EÈÛoÅ»˜£HQNwŠa´‰ ×h¯%åm´g Ÿ®“BŠ ”„˜Hæ@5~B R¼yúaê^„¶SòA"Åh™3释‘ŠýUÿ $îBú5.l©™Oo )qÊAH:€ð_•’£xé#-fÁ#ßnÆ!E“Ï´³—‘øóëñaظÅÈ&« ‰èúÍH¦‡°ƒò"‹w\ÛªŠ@in×’Ôt¯`Ž¢½±Õ´ Ýó1ôo;RøN!ÏÈÊP O„»Y}F’I‚'¾@2k‹p‚…Íìn3>$â¹iÍC'´»‰â 1<ìáZ$.(bIàËR¶#é¶Û8€Fr—9”J Ìg"™Ï ÚöÉúß‹:j~ ÉUS"%:|zÅ óWÖÊ=íóBûë̾ë™ê áä¯ãt¢H$O?¿‰à¶÷"‰g¸{ȃ¤8ðcù°qœ'ðœôdë^‡ê6º5xÜcºÿa¡ýCùŸþîOeÑ¿¹üOëù¯è³Åý©ízæ¿{þ§õüŸ¶á_ñ»Eùwß¿[nÿOâë…>ûW´á_ÁKÿn¹ý¿¥.ÿ ]þ¯÷·lþ»eå_©cÿÉÿæß-&~»˜fF—:Y·vòÄþZGiñé×cvÖäÅâÖžÇÈ¿—µv9æaéô_ž²ä¨“¥'õ! ¶±Å·æ¯)ó.¦³§—ý5åûYzt\‘óïé›;ëc:ÿ5U<÷5öÉú¿¦Ê[ˆ5œK÷5kNþ–J§†µE}ßö×TU?¬öì_Ó­‰DÜ¿¥j/óE‹ îý=Í!rðþ-•±ÂÕÿ¯é¾½4ø¿¿¦Ò §žüúø×tIÔ<¾Hã¯éz ÖPþ-U·==jçù×TceÄPWæÕ¿¦¢6„ÿ[º=”Xò·Tl"-lUgÇ_SÉkï›À_SeöCÇ-šþšòX¬˽÷à¯éfÖ§@åÈ¿¦t®ö˜ÿ-…©+µø"­¿¥H-ûxá3iÿ¦rŸR1Mú×Tú[EzYÜ¥¿¦áÄZË¿¥Š<5y– 诩äªý<Òï?ÿ5=8™s³ ç¯©Œ%±÷àoénìçݾM‘ßëEÉ.»þš*/÷žèÿ=ýüs2[5éï©–õ6lDþš"bmÌßRÅêµ!‘9·þšòÒã›/þš²œV-y½ý¯©ÜeU©¯b M¾$öý-ö»Övó¯©ðÏõRþFM·nx#'±^쯩ÒvbïÊßRU<Fä뿦B‚øó­MÙ-Á+þ5Ý|ã+ž”诩´ÓR/ÿ5eâ&ö¨ü-éÎ+úR2ÿ×TM“Ø‹ð·TÒàÓ¿¥š›÷¦² ü5Uc%ôý_Rø³ë³~]åßR¤(AøÇK_kŽÿ–*=߉5”ý¯é¦b-è_Ò…¸}…yëòhäpÖÚäèMØqÇQb¼\¼ ¾tc§älAî‘•§/eµ!Û›޵5'âv»ùÔVÞUGŽGð­kQ’èzýÅÈEÄ›N­Õ ¹öàî:r敹8œY Öâ¸Ûåˆl~íÃ?@ö±øÒauäàïy¡¡år2רOûÜ‹˜až+òTËäÌ¿}¹ËÇ]ìå{„¬LÈVßR̓ìĈ½ö=ÄÞ!'±úDË>äÌ?¼ÿÚ& ä´†_¤Œ\')9Ý‘Ëqí¦$~ÏÐG9ýôÃ0r‘=€Ì8äBîÑp³S¸/qrrs øÀc=¾5’yF…?:´æ²Ó%ÖÆÛÑ_Ìæ…œ±ÚHç"—Š—øf0äÂAìup̳Bî”HÈi±÷Ïyžð{ÝD‰ûnmø6äž¼úIÄP7r'úß3û•S rL"ô¾cáŸ;êPr_ W<¥ˆ1rMdž3b¹aèóàäq€8“‡:v³ÄøÛEçð üÁÈu®ž6 ׋DûÝ_ec‹lßüd–Øc¼0Tþ+$Öø;_'äÑ-•/‡?:‰øà‘{äd(÷ùÝc䉻m˜<܈9í¨…<œˆ\@ž†øv-ääG̸-&âUÎ÷15ñ ¹œ{‹;|ÈÝ—nAž*„¼ÛG À!ëøc »ËÄ4ÇÉ$üÈÅWk&È-„؃çΆoõ2Dî×1ö³þ…lÖà†­~AØ\Áš»å²-!ô¿ÓAb\í·ß9éí„\ü‰ï¹Ð{ÚÜT‰þrËÂÕ¹r÷'䣅ؓìVÍc¯‘W&>©È5®U]È#ïî¥ÈÃgs äy«ÎÏ@äÑGèm/|+¨7:žäîu+eñ‘o:wtÁ>X}ùÍèiå‚>\bï°}Õ£çCkg‘k2ž¢I¹Íréî„I…ó'äQ‹§.ÐAž­ôxG¢ã2øV'[tB‰Ðߎ—‰8?Õî9yöÈç>ì¹ø–Qä¾Ð‡’”nȦ–ˆX߯ØxõSd«¬‡+ d¿’Èq@}ž³(¡÷]›ˆ³¯lÎQΤGY„~YÐ'äïì7Ùb‚å„>¿£Ê£{ V™DäñØKîŽw·:v°ßlƒ¼Â‰qö®ÁÍ 'òÑ öjØeHá=†˜{í@æ…œ„ >u1˜IÀ$¹úaÖjf« {gÕAìY±ž$ô˜3Áo¶û þ·—ÅÞ~v9%b(ƹ¼Æ¸Pó1r`Àa ²CØ—7¼x²äºg· DÜÌ5æ4¾É¹úùÁ'NN„>s2Å¿N‡œ¥»ïFîÍs_‰i%ù&äaб£Ñ3dÏCøŸW¾pâó~j›ˆ\Îcµ°kEnáÄÞEw5â½ „>³ìOÅ(:*‹ou§EÖ7(I9]¾5] Yñób¶Û½æÔKâ‘A<%ïN亜سéÆJàS·YÂþº¯!ð§G€öƒVt¬ g:/èÛÂnÛ¯%ôŽÃÕ5£ gVÂ8Wónr_YEv3[oGÖt¸»µÙ({õìÓ¶ ë‰"âÚù4Áï.ÏHý_FØWZÂ/tÓ'úÕ-Q\ä6BÊï;Box&`ê.±9Øg(å}EN—‰ñs¾CØ×-D»ÝñÔÜÈýÑîÇ1v BöÒ„~²õ|?2:§‚ì5ˆø…#-!'ÎWqóï€\S‰8˜[Q/›1/0 ;‚?ìr›ÎÉ~¸ ‡~{˜œ¸(9ØKJ#®8ÞCÅUT½F¥n DÎ’ýxߊF¬W|rô1^ÖK2¯$h#+2§«M!Þ±Èî1Oiƒ{»>#›f‚_mTñÃD*ÝY‚¿50´µw9³vÍ%gŸUÈe#<.üáyÓb§ýç4!7Ç„¸"µßÈ!¯W„þõf'äø”ºò/ÓÐ*䢇ÁÀãE zØIÍýßûrœýÏ!÷FË!ÆÓë¡ìöáfq²5ûñÌ~q¨'Î6tŠ!ô¼«1±GÉÍßr‰ÉŸ'ud¤ä\CΈØsäÒ…‡ç!WW»~¿ÇN‚?ƒ ¼î¦„w£.¦G>p{ºª³½ú rûŒÃ¼|àù3ß©cèH+LhãDÖ¾±ýBà‡ãD®Gë0ìA5ÈIö>î€ NR~rÜìp‘°£ÎÕDÿ9ŸÚF (ºê8Ëíü]<™r¨ýÀ>vr0"øÝq†ðw\æ$ºG¶(#·Ÿ„þö˜Ç¬·òÌÅžÎ1¹ÐT>sÓ&ÚI½v/'ôµkO<žÎ)ÿ2[àG6bÞ…Ê¿®ÅX·rW!·s„tÃÔfær·$~4’Ƚ±€ÛáêOÙ)~]¥É{‰äXJØw7¬;.4.øQT»IűTüB­/Un¨ão7÷Ü öȹ^ÈåKÜø1íe:<- ý﹉¨¿ý."—‹ƒS.¨È1O²yÏ»]'ô£{v÷l(òð ü *®¶Õ¿ ÒÌ.±“ âÿTüê°’Ø[H•_çË>rS#r ¸Ù~µÿ=Éþñ"Æßkñ=ÛF å,Aެ„ý·§!øË^ŸgÇ»Xwþ‚œc0µ{9ó_ps¸fSq¶½1~‘„}tô ñÑQi¼Côš“<1þ‡_ábh4m‰OÎÿ/²Þ: ª'è& ¤±ìîνvw'H^n÷%»[¿¶`wÑ`œkww‚J—tˆÂ{vgÏó{^ÿ¹Þ8çìÎÎ|fæ3³K"|N©¦C_=ê¢Ú°P¹Þš*ªHU õÕ_^+»ž©‹—5¨—«álÝJïw‰€¿{ÃY¾7çÃýå7~`êp?÷xˆÛÜ•`ßþàG½ŽÓp+Xä3Ö]\ó“¶£nŒ×ëÎð\¹=ú›ö‡)\ ÿR5æÍ~ýs‘R ù”v&ð"²bxžr<_ùýÒ4Èó4]×R©?C_‰f>œ­åk„º¬b,à‡ê?v8¥Hë qŸ¡ص¡?ä7ú0^UÄûêu–<µ{Á~us¨Ztésa²_¯{#êŽkˆ<‚AO}[Ð0ÙJ´¬ Ø©`g‚ÝyšÏS¸¿d…Åw³W±"ICv†¦HºönËžÁŠÎàg”ç¾ÑD_¤j yšò+؃² ømU}ˆ7ÕÿAœ§5£î[!Òž÷Xù¦çq§·ä+n¼³ï\hƒ©¯Q9)Íá,Rõb8ËJƒg2évÐ鉌]ÁŒ{vPà¶ãoØOä>‡ÙEn¥0ÏáÀ'¸Ÿ‡uðNƼ©;mŸpÉ‚^xM†¸NÀ3A®ÕøÔ®SU ý­}öYy’Oèµø7ð ’5" d"ÉOà{d 0ùSö·RDÒ ð7leUÀ;(J!NRˆ/Ôù`§Úšj“@ߥßxë¼K$ý¼—¼Ä9Š“­yÇ2R¤ª7«}£[üz%C¼¨þ8)}@—=@¤¨ ú£¼{ÍUy5‘ðvnäÝþê‘fäÚª~ËþG^ãAªù˜Ð ºHˆ; Fà; ¸~î¦P€­Æ…ðcÃoP}Ýtð›ºmç ü¤:Ä‘þÕD‘Æ ò±ÝÇì˜ж?ª¹†×O„8G–†‰¢ 6ty¦ˆ–o‡:Ø2%øó"-ÃÕ•ý3¿½rW;#qU§Ìoé/@-Ó\©^ÝtÈ“ôYÀ…|ÆÎ"2¿ëwü§%àVÀCˆ_<ñ=Ñ”t¢…˜G#oªj|¹â2ô“ 묻 g¸Ü`¾»Éhã‘ÈOqM 5èK[mìÏ‚yiTkŸ$ÒC1E+«8·é'A¾bȾ1Ðâ× 4ä'¢÷<õôLg¨A?ý¾ÛR"\0pÐÏó×<¨»h"‡öNžÉü¦>x&݈» {!Ÿ1^¡Gn,é>òÙÄT>Ï8õ—šè?ÓwïCa8ã÷ëúìßxZùˆ‹Tc ??> ”ÅCÚO—kÏ@>£«ª÷ýV­†¿ý­ú½%ò¿‹Eºt Ö"ƒ-ص__ȯüÅð;µ'œ…§yùÏŽùpf Þº‚:P‘a.à—ñ&ÄWþ`ÞEÈãØNeg– ñ¬ Ê€7B^*[¼±Ææ³l'Æ3ŒÀ?ú ¿í_Ϊ | þQSü·î&äYÛÍAýƒô›ŸûÐùêˆ3˜—†¼ƒ:†Ö™†'ÒtÁx°ôQW ÷UÊ Q½ðþxêpàQ¿µ‹!nÖE€^iÇÿ©¿y¦qàÈúŽ_ÿ°|ÃÃÀD࿃~Á™†+:$³8GáGóË Îò“ P¸.ømu(¢Ð^õX\šôi"o"¹%ÄךSÀÏj¯-à ý¿a&ÔYŒq´Lbºï<plyÔu‚ß_| ò°à•4¬j$ ¹€G‰Z[EÔq´© ÆDÈÏW½„ºqàRàߪýh ÄS/!Ž’Ãkð(˜OÐAà[B–^¤‰¼H½úIu~?xÄâýĆ'0¯êû"¿€u8¡¶ì?È÷=?\Ϳޢ‡ÙßûŸzæ»: ¨gèÞaÐA_•Q õãSôc;x5_÷O°¨›±×¶{|ÜÖ šGj‘nåTZôÀ[cçüÀYÈKÔƒü\5Ÿšó\‘êÄé‚kÇÁü«íÁâNã1˜·Öü»î,à«Á úéŒ/¡`ü~È¿>|ï_ÎR¯<ÐHÁoh}à:íðºxàƒõ¿¿Ð€V¤ÿ ×i?C~¦mGÍxŒH[ùú8¨Ÿi=êÜPÜ€Ÿúó[~xÿÐ~À+…r«á}îÆk®t†øeÅW¯ºâ]!ž¬Ž“Bþ$è¹ ðþ·@Nºæ‡Û¡…Óêz®ýãÜ¥¼A<´ü\¢å—5êÅaïP~XÇ3\„ú’î~J0ˆü#èÑÖ D›€_ö» u»À&€ãA!¾Y^ô!ä#ðn¡ÚG¬n½¢õ^JÔŠt!TmjŠô³ ÿ2|»ÑçBžkÄz¹ßB¨wûÝü58Ò#HmDưn~ÓÀ>ü¾ý1ªj{ôVàŸ„¸­:~뼓Á¼¯ßgàíÎÿxâ~¿€gÂ:<§j9Ø¡:Ö[3âQíFÈÃtû¡ÿÁ°ú%TŸ!_ÕÞC;w…z¡î3ðºB¨ƒúß5|€:‹1ü‚ÿ5à7ÿ@] èäÁ€ß ÙxºÚŸå¹Bœ«:z­éù‡ÀÓ¯º1P÷©ŽÖ‚]þðâÙõ½š?1b=TÀ£'üMˆ€9´ÌÞ^¤UC=HÐýšÎM­æ34MÏü¤I‘¡-ÄšÀ¯ë¼Ÿºñ‡A<”áÆA˜7øÛAýT·ò3C#ÈÓ ®FT‰üšà—u¨ÀxÈ—[hZÀý47tÛw@¿­Ÿuã—ñøA~ºÁ”†.Ò&‚þhí!ŸTÇÐêãjy"NVóvÞ!¯ò¹ y¼x7Ä¡¾u!óý õétàï¤gÏÜs€Ÿó8q˜Ç‰¶¼‚‡‹<ÇÃï¼N‚÷ŽÆ¾žP¨«-CÞÀ³1Ä©ž7éѳÝDž¸~¾5¡î/É¿$;ñ­×è“ú…||hz«ùøAÿ˜xôEˆÂ}|Rh»[‘G#¦L¹Ÿ;öhù°÷ ÈóÄsa_‰ï¨çø~p}"÷Pwôjq«WW¬»b}Å;›¦…‹E>ø»Ãàǽ¶Bþá=öóø´AÜêƒêµGù^…¼Æs蟷œ±è=ôÂû8ðUâÁ€§¾Pwú½§BÞã…ùŠ×:ìë<©ÏKÈ?}ëCœî»úu„ºÂ²Ø_á^ <“‡‰W›WEžc¡OÈ3ò4Ÿ4À[ïRè‹ßw>ö½Á>i_ð§Rà§l ¥ÓZñ÷ýÞ>”¦#ò>󫀇_=ñí¸/¡eíçŸDÞ nÏÜóI?ç{ë1ëyØ:’#’xA^'ÝIaP%òº¯Þ…à/|®ƒŸñÝ}c¾'}å7I.oå9 pÎó(ðÞ-pý°_ÂylŸ™Ô­Î¬îû‘Xƒ=J»‚ýÊ.¶§ g"y X_ÅOØG¦üõzõl¨ x"¿ïÏ/û¯"ŸËð<ñèò]þJ²p\æ÷s¿ëï.þÑãÄ#žc!/ñ|öîUÖÓ{%ħÒÑÏI\!Nð‰‚~P_%ðòâÀ éFð‹òW —â–‹·B}÷-öÓ%>ÊìÀŸÈ+ /WÙÖÅó,ÈÁË“ºåf"ï;ÀÛxí‡<Ûë)è™OÚ~ПŸ7ðV^Èz/Í{U‡F"ŸÓÔÎãõû<Œà$Û€ó ¿àÝ ûµ¨¿ÿh¹®…Hüd?ÿï€H2 ÖS‚ü¼§«3|µ_öL„¾Ÿ×X÷öÞôÿöS- †ºî²À“.û¿óèƒu»št™–Š<‡Aÿ„O,ðŒÞZØ÷êÓìS,…z¬o9œu/)‚øQÖâ/YOÐñvJ£¸‰|U/úúB¾ ùHa¨“Hòò#Éà›$iú1[äyìÊ[¾•6zˆ| Ø_Ôêc¾®P×\†ºƒäèO}8‹Yì u>ß Ö(EG×,gú"Cž''ßÉ¿AœèµôÃÛq¼Oðû>^X^*nΛ¯×‘¯ñ¾à²{.Ÿåéf‹<.ÑtO'rõgOOÀ]/Ðwï4ˆ7|N"@œ)é ã‘¶‡ü[.‚:â"ö|…xDuø_ŸTȳÅiП"© üˆô0èÌú dO OPaüWôG'5´ )ò^ ~_¼â ‰úA…¾Mq à„k,ÔÿÜðo«¸aÿƲq ç‚_õîuF¯eÀÓ+,À)=€OQõ~RõRˆWÔ逯5à°vÔï<{/áY~Çë艷ø]¡ÏÝç詯-Äž·¡ÈKõ$ï:h_O Ïñi ý[>÷¡Hüâ'Àó{´ã>€3^ùÐGîc]—H¤ …>Hñvà ½6Ö§yOùû”B¿¦ï"ðó¾—±~by¿ä>ÔÝ<~¢_ïþØ£!Äáîw€çðº õYŸ™P¿› ÞsG~Ûý|ïþ ìų7ðœ' ¾ï±â|Ï®èO;ƒ|ÅÇÄáÇú~†ßKþ¿'ù ý·Òï0že=€ßX†¼¹{[ˆËÜBƒ{ô%zN„¾^/+ècö4‚¼½ºÂ}¼»C^ïäMÿñÏÞÖw)äe¾ž´\×R$nõw_Ãùþ;D’ón;ˆ¤ÛàoZK§@~ ½q¨üدçð£^« nëÝðÞ§ðž>'û@Ðw ä?Þý/ó|»xÔ …þÉ ‹t6¼—M?ëQvçùâ=¯Pì›ã¯½1>ön‚ãQ9ÓZä6øÂe÷àyË ÀÜõ0£xêû4<‡ÀYÞ"ܯ€|­÷%¨[ˆg@¼"ñnB',’ö€xʳ&ÈÓs?Þ÷ðÒž ¾çyö“,œy¢çèRU@¾ ~ù›æ\§UÀuºUÐϪ˃º±¡3ôGy|=ó<vâ=ìÐG~Pxì“„ý×­¡níqðßã3Äaž¿_½Ú€y„<Êg;äGâØ#n}ˆ¾uÀI2 /FqÒ[óDʵÿ(?¿§j}˜Þ ?ó6¥Ÿn‘zPäó ú¢ÅïA~’öð7Ó¥³±b+ôkyN‚¿=æ5ò7¯œú ñ@àÅÉÀwJÃ ÏØ£â%rˆƒ|ÿò~ }/Þ§ßñ~Oéó:"ïô¬´lø3÷IÀßy´‚uò˜þÖs<-37IºŸìí z¶t8ð®X¯sÃþÝjûý ¼§G¸¿×"È=wƒ{ͽòn~Ê÷‹Š›aä+èwöíþÆë:ô{ï€zˆOðÿ>ûA/}÷9d3Iäýü·žïùõtô%zb}ß«îkºýÃÞ Né= â/'ŒO¦Àz{¹AŸ¹÷À=ŸÑ ñ/À_ßF0O#ð,ºy«ÁÞ}z@=IœREÎÏ û–.ƒŸ\Ö ò{÷þÀǹ„~T¯bX/ÌÇûÄC¾.¯AO{Ï‚~ï`؇!q–¯ø‰?ð©Òyð7½<–Ã:xZ€?ö|¸ïõôÝ[ öá³úØÄÍéîh>:ùw<æeãqŸÂzàÙ}&CÜ,î„}hµ¡Óƒƒ<É+þ¦¢W ôÛx@»ï}Ž€}Ší OöÙqŽ´Ô“%/ge'¡®(¿u$Å\ÐsîÃðtƒú§W#Œï†B<écΧöI‰‹ÞSBLäÛòU¯±ÀKx݆xË[ }m># îä3 úÆ|vAÝN¼ø¯­¼:äýtÀoïL¨Cø$@¢'ð¾Ç°ŸÓ ø>/oÈû½~ÿ!V@&éþGòúq¤»q_Ïqˆ<@¼ç‰u ¯ÐwâÝ ö«ùØCÏ'úk}^Aäåù÷WÀ/Ÿ5à×|­ ?ŒþTÚâ,Y#ð3BÿŒ{à”{ÈW=§nz|ôRoᕼì2Ø£{<ðuöPwsCŸºÖ³<c<´ø1ñ2ˆ÷ÄÙ€«âOÀû¾’nƒþdyô¥*\@}MØïÕü‘Ìþ–˜â<ôG(Á}TÓÁ¯ªµʰ¾£xûmTS¡?Oõêê·hîÂü´­@Ï–õƒº”ûø¬Ë®¾z&@žæ!<ô\öé™û=Gïæùpë6ôxµ†> g”ŽÿO¿ütè?\Önx¨-ûy„‡Äßž©q⟠q£gäÞ‡a¾Þ pÚ ÀaŸ]ÐGîë v$9 ¼¸l,äë²DŸ¯ ô gâ¥ë¢-ÛD²‘pÎŒüÄç*{ðkª¹à¿U¸¿QÜü„oWð»¾ȳ%{ Gj¼—Ìê3Š[Ð'ìžy½{ æ‹Á®½fAß‚—üœ÷JÈ3½?1¼«æíÔµa_°æ9ø­+ŒOÿâ\c>ÄïþGσf¢= ý&Bÿ7ú5Uôå(ÇàþÊÉà¿UÀ¿ you î÷úߥ3 îú„ú²ÐG(Yy£b ð*Êtðïª{0^MwØ¥Þñ­p_ù2Èó„ýºª¹À7«ç¿£Á~OMìÆ>iß3€çÞÈ[+‚½hþN }DÂüdw°¯·5 §¦Vÿ^=ž«þL¨jÝ¡>*ì{úç«ëæ wò5#ö— u½êý(Øÿ! |˜Ð£¿úÄ9I” ß5دb7ìP¶|U>BÍA½TÓû­ îU¿‚x]óx|M<ÈKËA|¡K 4gS‘á:ÄÑÊ:Ð#è‡: ì^ãùöØyR¡¿P‘}* ô5«s_ÐŽ€}:)øeý\è/6HÀŽª÷s>†¼¦z¿i(Ö À'h²°¿þðdBEõþiŒÓ„zpuýë®B}°z߉ijêdÀo­âöêzé0Àaƒòèêý ÓÁ*ŠÁ? û1T2諬ÖÜG(ì#mƒú³r;ø½ê}}Ј±ûw„}¾áoÄ û®e àÁ„ï…þ]¡Yöxh¹øýj{oú§v|R¤ù|°âÔMÔžÀ‹ }Tº¦¿ëU ÿÝпa¨ƒû].ΪìA¿Tnà·ªëÉ'¡¿Ssâí&ˆëäAÿ•sgTG€—W/„8R³xqíSئ›þýÿòq‚] v¨ò€~åZˆ\òyGõþ0 ØÇåÛêÙÂ~Dµû3A}Q†¼«â ¬«jðMêØ?° ÖEûž¶½ºŠô þôEè'Î-PŸ€}ùÕúâ8–Û"í[ðŸ²ùØÿ˜ ÷Q¼¹ª!NÒLǾ¥6Øï †óU3—ÔI€/Úºp~¨Îúô a_¡±È#°ij²cð¹b$à¿"ûácÁiêâþmà_„º¯|øµ5Áß ûÑ壠·ÏpŸÚ ìT7úÌôr°ã,Ÿßkxn@3ìwüqx° ä‘ò7P?®¶wÄ5šÞ°M{ø]2èÞ„õVoÈ/ä `ý•÷GU͆y«RAîêR¯V|¹Ð/ð²#Ø7„z-ŒCXW¡©þ ç-iGB¿²î4ð¿ú{P×0†oá?ô:`*üMLé|Üg‡v¡XùªjôͨÏá~Éýßhv¥Ò@S$é õ;i4è™â®l‰)3¿U?RKÿ_ÿ/Ãø@v ÷Óü€8OYü…º~>!x-ÒXB'àš$ðJ†ü¹bö7OGÿ‰õ%mÚíOàí¤rø|ÒLàäÝpßâ©€#òMÀûS¼•àǼ?Šû2ý“~G{A>CØ ð¾EÕêFB¼¡ùü¨Öâ~]ÈAßìI’ýÂýªõ ý´Z |êÄùšO°_ÝWû¥oÁ?Ëë@ÿhuÜ#ì³{}˜Ú¾Ð_" ñ½| Ô5”ÏqŸHôgCa=µCp_¾@¥5Ô_U;GѶȆ"MúR‘6xMÝB¨·è¾ƒ_”©pŸO.à¹Jý™š0ØÏ¢½ƒöý¸ÿ]– þ_iܨ– ÆUjà›4Øo'ô¡yEBýÁ;øDᜟ `Gâg gaßp_Yw¨s ¸¤Ú ýÈ‚kdÐ7¢=û§„~vÁH’@^²€Õö*Øï‡úð:gà õ¡?Ío*ðÎP‡<üÌr àïB>€IÀ¾wù8»°«úœì{ª>7¦îç¼€òë üŒ€“ªMÀ³*GÁ¸TéÇ^ƒúµnu=ÑÔgEz ÔüÆ‚žkÿ`| y™ÿMØï¸ü€<ðOqÖWÓðUuû°ÁNõ]‡5Džx5„xN°?!îªîG^çͯ‚žŠAœ-±<—ŠßñÀ&’Ú@ÝCÞúe«ãÝÀ‹©fC|©ÎÇ}sþ€_ÚÝ×>Ï8ôÊo ð®Âþ¡¯@çüÓÇ›NúrôÎýöË,…ºš,ôEîˆxñƒz:ðêhW`?°&ú«„üUìz#3‚½È•PÏ킾6ɧ?£*ï©gâ‚ÿ¿~¦ÿÏ«o ~HÀ?a?‰`ÇÕö}5Ѝƒ«TÀûþJ“qšv ¬—þ+ôSÂub ä3ÂyHB¾¤º }B¿¡_ ûŠ!îU†€ŸP¾€>=õhèËÐ^Jû â]{¨{ú¦Á|$a_¿ü¬‡2ü§rîï´Á}!1`ò. _÷Õ«Á~5G Dëüš®ì'Ö·{“õ†>PÅwèCSMt¥ #R/€üGýКХɀøCšŠñõ9àÑU6Ðï©v¾I çeh½!nÑíƒx]ÈÛ½·ªÏ»X <‹jæ§ÈËhÁ?ún¹J\'ÁsRâ /RŒ£a±N¤¼†ûU`Š•ßWçÏB<^ê¦ê+À¿ª7@_¤ÆðN†ü·¢Ì[~ø•ê’j%ÈS‹ñxÇÿÛ×V½¯Áq© 'B-ôyÉÕ¯+±IUz¡¾þT“ut[—æïÊñy6þƒêøLÀ{|®Ð/äyB« ·’¦P·§C\ ¶„ú˜Ç©›£Ù‹úóú€å÷a]T ¡N]}®Ç5Üh8 ³ƒ¾o½ø ßLÜzâ|YÄMª†Àÿª#!ïÕv}òiõ2ð3ÚzOé¶ñ¨3c•Èà}?~Rˆ†@¿|ÀJ»„VÏ_Úž/ä‰ÕûðÓ÷ªãsÌOªq ù‰êó|Æþ½j= $ü±bä%ŠýàW”ÇñܧýÐW¨ñª±!ä²}Ð7)/‚ýwªžÀ ýËšáÀïjÊ /×™Ý*žâ¹˜ïjæbå<màA5.½„:™fæÙÔtwaœþ.ð,†o—ù >Û?Æ%à­Bý;Ê/Àÿ ~B‡°/ûΫy;I)à‰¬ò`EMè»Vn…üE5ìYõ ôYÝâ Ÿ,ÀuISà=…síd;Áªš‚_•­øSðw ŸÓóýÿÛwêy»Ï[J'(DâMx~Tðs{ðÏòb<MÈwg…üS5yèßòžu¦ ç>Mß$f”Þh_}þŠàï$©P_övÞI ñ“¯?ô]HÚAÿÌ ú쥃Ð?Ÿ€8ÚûðóâÇÀËJ(LÍI+ðü2è[RÈ ¿RÕy{Œ|6yc_«ç_ä¡7Â9ƒ’Ùx¾Ç#¨‡çðxކ<Ãû!à”x5ôûû…}Â>}‰è¡×-ÀñXäí§ï+̓þi4ð¤Šç3èÁ"ÕQà鸞?A~úŽ•b¨ÿ©b_Ô‘àO5m¯Ö¦#½ z)ßõ5åxØ7¯zƒ}Û'!¿Ñ,œÐ^óñ¤ !R\|PµÇ:B9ÔÔÑP—Ñ„þmðBõiø?ùu¨Ç)åP§SÕF^ì9àf ô7WÇMÂþ(áü9Ì|¾Ã|}$`w^Û î+³€8Fáù©Ò®€í+PÕzšzðáÖWO½ßWé+Òl;÷l q×…zmy›ÿæSç~|Ás:B_«, xÑe¯a¿ŽÖ½@|*ëŽ}¡?If‚>=… Þû £ax+‘øì/‡ú®Ð§*1‡~mi'¨‹Éë q‚?¦jýªd8w]=ê¶êW¸otìsöž„ç7nøÍ÷ä’iÐîûÏ›©Ä:¢_eB~¨|‚÷|¡ú7ô…jÖÃ~MÀ%m aßœ¯ âhÁ ûæªùN-ÌK°g÷öÐÿë~ú=æÀybžÏ ÞãõD_샔^€<È÷?ŒKvß)œWS?ׂ~ÅBàTs {ä[ˆý2n wÕ¼q(äEêxà‰´¡_Ç»6ÄÉÕçgþùy—½ù,;¬î?‚~8UÄÕOÐOívèûÕ¾Dÿúx eà—ütyÎ…¼Í³ Ͽؼ–˜Ãsƒ·‘Ô‚¸Vjãõt9zm@û ÄóìB nA¾ïûæG/h˜ÏÃ~Œ!C¶NZwã…H}ü¾ÖÏ•0@?—nð7ú<7i&ÄíòÅ€7Šlð#Ê2ŒWC|§JÁó´Ð§è9ðÓÓúÓ¼nïåõÎ?õ¼ ñ²ÏT°Sq.ô[»#è›x2žëµ â]ßï ú¦A=Dq ö¨@Þ¬zy¸ú3è©Æx+5üF[ö=yš Ôñ¼Ï@~(Þvçõ ÖA:ü< ðÌ;êš>Qp.™ø*œË!1B%ë ûnm¡Î£ÚýP^…Ї!Þ|O%ð…+¸Ÿ$ ä(ÝŠ×+¡¾!ž û‹$ÀHNC-³„8^ê|–¢à±÷y¿„ø_|òW© x#é$xŽâ1ð™Ê@8/FuôD8·Î÷WýmûŽveusÏ X÷Ä>oÜÿâ}æá» û»§ƒ_w€> EcØŸ ¼…}V—ï|–@}L<ì\jq»pN¨´â=Y[ˆ£EØïxÍDM‘ì£óɇ¾ q#ˆÄ? n—®¸J^â3ß° Ùlè‡âÙ¬+ª•o!>Pw^Úwœ/'9ù³ô)øIYoä‚çî¨Gƒ} }ÉâÙÏJ.ï#ý ú, ~Næqƒìà£×uèGõ~Ò·>ÄG’ñåt#HÖxQy ðЂÿ®æiσ|dr<§3ú±/¬7ö½í}wO‡¼ÝãÔS¼~AÝÚ«ð§¾Ý±ÄusÅ)À¯ÐîýúO|¢AŸ|£Oó ³Bä»x(é(8ÿRrRM>RÝ ÖY}òC­5ðßÚ‹錸º-äSÞß!ö.¡p8R¤øù”$ò+á<E ô‰*¦¢?—Bü%kçkÉq¸òì'Tÿ„Í$ˆcÜßÃ>yw%ègXÏÛ༞㾉ÍÐïíµâ/ÔÃ…ø¸gR!OÇÀ}%bÀÙ;ÀI ðJ2Wè_Tœƒ<@Õö¡©k¿­~ ~Z3 ã=¬“W×õð¼µêúYÆÇ°OÁû8À}}ûC}ZòqÉê2)ä²k¯ªÆCáÞü£‡ ÏÏi÷÷~çw‰Ca_¶x,à¼x5ð( AÃä„÷ÂëÒ$à{–bÞìvì­z_ÁJ«€‹B\èÛ ôI2ÏÔÑÇMɧà9Äc T´~Aecȧ•x¨"ö}¨;oâ> xvòÏËp”Ð_î³âOßõ_Ip¿²¤ÖãïB?™|$ðÕŠ°ß[iÄ~ŒØ¾ ö3xý†ºvÿ-^ky\äëyŒoæcõð<ÇZ`?ò“pþƒ¸&ì‘$KÐÏ$ïvªÃy,Êñ/ª”àW½o`¶#ì‹õ­û:ÎC]Wê€ù¢à™"pXÒ ü’«ü‡ìÜO~ôRû{%ç©þƒxç öÍún{”Z@¾/m ϗο,Í|VÊ¡ïÑ7 âeI'è’Œ¸YºÏ£»†|ülðò·Ð§W³ —æAž)ÿõC¥ Ï‹t‚q©0_= }ÂyñÒ+ÏÊC¶믊!€Êp<·t$‹7É¿Ðîm:–óy<žáã‡ýiò Év8çÝ÷ä]â ð+’M€›ÒžPO—~„¾gyc¬ßWúLÆý˜wy©ð\à:÷ûö„sU%+¡,×É›Ñrö‘ò4ði>ÞàïÄ?¡n [j‹ñå!ØŸ!•)q”÷úªáï"ÊÁß«#o®†þ õZÈk4ËA¯þXGÝýÓ*žþ ä¦v‡ü\3úK4[ oÐã0Ô1¼T¸ßg+ÔÄ ŽôM‡øD¨÷J0ÿSÍÛÉŽCœ§°†þÕÀ#õAø\s óÎÀ‹èÒQÏæãyöá½|7ðtÊ4Ðs•ìÇQc¾¤¹¯§qà.¸¿÷È?Ä5ñµ<_Ú~/‚>lIž7¯ÿ%û ñ¨"ö½)¯Â«šàøá¾®pΟïˆOäF³â:à* Æ¡ž óÓt‡çøxÃ{¯sð^ü~/ÙÏõ½Œýƒ¿àyªN¸ÿîÔäWá¹ +ôë2—* î£.sê5øê‚ûNAn¾Åð^¢„çH]à>²tø^¾ ž'×Â>Oe!Î#~¯ÙrÖtñi Ì[?ž0Þ܆u~ ¯ËÂ÷¡Ýà>¡—`}WÄÁúª‡Â<4 `´(OÝ'¯~5|oør0^9*7|}ðCÿîþ:ðÆ Çq=ÐŽ”ˆkÊç õhô·•¸žw°_'í6ýèjør>ÜGa†ñKs˜·æÜW~_ýÐÿ8 |¿¢^_Aÿåú ?ƒû’Á|<ŸÂ{qŒ8Œûºa|rýS¸¯<ã úŸŽø}êúYmg¯n:âf;xžê8þ®ÏýŒ„Wúm½ñ×q q\3ñ#>¯Æí.0.ýRÐ}&Æiv`_r¼N…8¤úŠò¿òÑöñè,Wå¨ïÝaüÒŽØ'ƒñ–¬1®+ÞG5ä&=ñE?*m÷ó•ÁïÂú qƺԯ}0Oÿ¡°¾x®Tà"Рw0Ÿ ôor?´÷¥ˆq`·jŒw4ˆ³Ú= wõà:¼>ƒ<ŒXò÷…ûüÀç¼Çsï’1nÝ‚}U1.1¡^¢þ©ÚÂR=ãž_ _)Æ)НRß«Þú©Wa\³yÝ ¸ŸãI•q­\§¹ z¢]…qÌaœ'Æ+ú§è‡q¾ñ¬ƒß¸.h+¬GpmÐñä {à>ŒK¤s`Üò~èPj)®/æ¾i0¹Hð»0nÅP´ÿyð½ª-Êÿ.·ãâ³aöNCŸÃo2\çzÆézäá:æçö~çŽúãz!n ú"ŽÇ¼£+ÈAŠú* ÇõÜ,Èã3Ô#¯qø÷‹æÂ<Åõ`Ü ÛÀ«dæ/øw¿•ù°h/žÃ@n^ïa^‹öÁïÝ1^ô¸óRàsTûPÎ 0îMÀ8âú /¸¯.õ_„zX‚ùÝgŒÃÛÂüô»Qïsà~~nÈû,Æ|ÎÆ#ß ë¡pÄüíPåŠç7„qÈVáß÷À¼Cñã\”_1â×#ÔW/üÝuÄë݈ã˜Wjúa¼XŒø9Æ«y ¯â`'’Ž˜oá:Ê+PÏ„çûbüŒ8¦NÁ|&ž«ÃßéG£<€ñ€¼: žbÜ¢>ùÚ ”÷BÄu̯ ˆŸF¡ß?õa2âA"úçXÄ{ÔípŒ¿sgÇ ¡?VH‘ø„~ÃîgD}רq]§bü£Ý€þ¡-Îo$|o˜÷1zÂóe0®Åù&`<¿ 棵‚ßéPõùÿáüä§ÊÐn”àþjŒ´“0Ïj÷•`>,ù×!.÷L‚ùxO€q{7Æ}x¨â†h瘗¢ß ž€q&úÁп°N+-à~+ÏÃüWíC}BœTæ!N@ý•c\,äcZ¸Nÿý-Úµb!æ#Ñ.k#ÿ"ÆûÝD}ï‚óòÓ¢?Ñÿ…qÕð\ÿ@Л̇Q_}–"O‘ãpÛ7ãTŒå½1^)E¾_ųá¹òYp?!ÿd£Þ yËNôëá¸ßý–ñHq×ß ã-”‹ÖôHæŒyÕÔcÁ.w¢Þ¢ªñ|3 ò’ ð{é´ƒQ˜Ç½D\ A»’a|€rEÞGóík<ßà‚ahŽ8‚þÌù0ä¯\qüˆóª¶˜§»b½Âó±Ë˜ç"~éŸb<3ó2ÁøD‡ü…ãk>ψvü‹‡ò·ÁñìA?ùîŒþ"¸7èIþ(ã ¼ÿM˜aÜ×èˆv[×w|€¸¡ÏE}CžÑˆq»_ò,hçoQþ9ˆˆ‹A˜·c&D‚zú¿ùšGPO`½‚Æà:e¡}~„õ íÏ_žã -C<>‡qßÔÔ;#â·?æ—GAŸza¾Ýõµ ¼Æ:fˆ;Œ/´6È!dÌ'Ôç|I æGÁãažËÑ~Bü`>Ë1¾Áü:€Cù£þãz.OÆçfb$íÝýú~´‹iÏ‹a>ú ˆÛ'_0.4 _tÆŒqyhoø|…-\¿¢=ØQh®Ça¼_%úô£þ‹WvÀ8ñ¹`P¢àNxÆ9†AèïãQ_FûF\ò€ïƒ=@?–†û/ßú‚v¯wÁ8`7úÝɈ/&øÜÿ7λ1>yæFÎÇ ¿ÇzXÀÖ›‚1®õCÞÊû ýh7ˆóAèWƒ°>°ÜŸ‡~Åãn¬»øø`â.úÇ@Œç /W˜ òñsD9#Ÿˆþ<Ј|úy òÄíà9gÈ@.Õ…ñåúøâ+Ê1ó–àúˆGwp]ÿB'˜û¡_ô“¢ÜÇásŸã<±Þ´ùcŒ+4XGÑnC^ï#ƽŸá:ãAx®Ú‘jò¥ý‘_:qü+Ìs0OÑãýôøw»ôÑèðwFÌ×ý0î@~6àÈ'ya½íö.òŽ6Â8ããôÈ/Ç:oÈÇ ¬­ð‡ñ¬@œMÇ:ÊWñ´ý¹¦ò xž”뎺ˆï;à~<çÔ¯)ÜÏ/õ óÉÀmè÷0oü‡öŠyCÀ|ÆÏÁÈ«,G¾l9ú…G¨'ÈMuƸ:Ôär =‡õ’6È÷õEÿùùãyO÷DûEÞÑùè@[äZ£\0ŽÓ¬AÞ¤.|®E¦Ž<Ú³sÔçí¨ÇC`\!¨Ç¡u±ÎÓ^C‘ºŒùÚ"Œ·mðUñV Ì1Ï4lÁux…ø‚¸æWrôOÅøhúUä¿‚p}´–¸Þo1žYyR ÌLjr6A?Žy¤6 ãüÜ0åÙ Ç#ämí1Žv±ãdg˜—±ơد Bû@¿í<}Ð0\輦¢ ‚q„"ÿ‚úZŽÏA{0"ÏR'aÊëÕþ“Б6¦ ÿñ…×€&‚þ¡ìƒq¼ ýÖ?ŒñþΰžÕ|9æcAÍñü Ä­à^('ôWÆé8äÆàó‘W ØŠú¹ýB ÄÁ(ô+BÞgx‚üW`ÚòÏ~XïÀx5ûc–w=Z޼õò-0¾åˆ‹Ç0®öC^ßû[¡œ0?òýqŒK§#^ ü*æ1þèßÐNÞ‚\XÇ3ÎAœ/@†yFÆ£ÈßbÝÙpëoè—ü1ŽÀþ @¬ë õÆ ´í[Ïø·1ú{»ÿÃCèç|ß+Ñ^0ÞõC¾Ó_òC_a=W‹ýjÄ5ÀW vc†¼òQº4¬k üÓ=ä]0NÖ4Ã<×A‡}&zä=Gú ùØ”÷WÄ+¬¯>ÃúN4êÚ·?Æ?þUÈ  >A¹¢¾ÍG=߀ïÑ,÷ù„^ƒq®Â}WÌ€û­¼ŒuãÉ(äôq]}Pðü!î2b¾©ÇüZù ã]c/Ì{QßüPOü°OɰùÔ#ò«Æ2´+Œëý¢Ý`ž Æºˆú3ú ¬SW×Ó>á:!¾¦ãx0~òsD;*Âû"ŸˆýAX' Æz°Ÿåox‰uœÀ§ç Ÿtý(úEíôß·¬a¼ú#˜÷,AÜ[ã¾ jÞN¾÷×"/ œ„yÿRä'Ño«sANäƒÈW—!ÿå„}ZäÅu˜—°^'ï ÷QÀý•Ø¡BG= ñíV‡}^¾·±ïqT>ëÔk‘·ŸãÑÅ`_òšrì TýÄ:#öEh°OC‹<ˆ¾ÈÁPˆ}K˜o(°ž$Çþ7UK‡ú$úÙy˜×/ºG%Ú=òÞÕõzìÓС_Ò#ÞèQ>JŒU(oæ‡jôKZ¬ÿ ¼º±öbÞ,E½“–¢\ç„z·&ùGÌ¿åÂýþƒùIp¾¾ß±s×éÞ§ֳПi°¯M‚q òÍBüeľE#ÆÊöÈ+£=©1ŽÖu’rÄe¬Ãva_]'ŒW‘ÖœF\‰y-òŸ~Èãù_Å:§P¯F\‘,Åu¬‡õ²8/äqÕè·UkÐþ±n­™Žx_´KÖ‘Ÿ6`Üjĺ«Ê ý³ëYþè'0ŸÔa¾®Ç~!ö»ùb<+C À: ù7õäc'¡¾cŸ¡²âíKÔgìÃxU›ˆ|ò~˜ïË;ÀïTȃ+‘_Q!Ÿ®‘ _ýgºhˆ£âÐ.Äe¶Eþõ#úÓ²ÿ·.­D{TuÀ|ýªn=ú ÌôØ£ŠAÜC¾IÈËt×êñ½q$úí:ˆcað<Á_iÏÓ¶Åþ4äå ;Ð~_bý5qý° y öOhÞõÛ ÆßcÝD=í`;Ê)å'ê™ ¯¨Ä>:5Ú‰ ý æê'Ö/ gøÕÃù`ÿ«VÀñº? õ&œ¿ö§œFùcߣj%âÍ”ÖÕµ/‘7ÄüÈPˆzøçÓíg þý‹ût y¿|ĺk?ì[…¸õD5Öq´Èûi±^ ?‰ýVÈ++‘?úŠäé°îªhè7´"ìÇÚˆþycy´|®¦'>wú© |Äù-ÄõÆñê°?Ô€ýµFô3þæ g…â×oÄ¡+Ôí?aœ{ãÕŒO°î¨Áº‰ë€:ôoä#Œç0ÏGþ@¼šyaêÚqãò?úd¸Îû!¼z…úø@Ü'’5ƒyÊï•cü£úR°ßG!Øï” Ê©Êñ$Žÿ^ãCäc5uÐocK_ùìçòC}S"þªÑOª—£=U¡œ°®­[ ã0´Ç:õ[Œ—0Sù Þb?³f/â&úu#ò$²pœÏ°ÿ7žR?Áç!žèÇõhßr¬»¨Ðî„~Õy|^ÄEä¡ ¨—Êãˆ#QÐNÔØ?­é€8íë¬ Ì“”B?&ö)¨1îմƸùU](â‹+â6ú_¡/F“‚y òKŒ+Ð.”ca<ªah?wjÑ`Zv"ÔÕ‹Ð.û¢=#_ KÀ¼Nà›Ñ? Ÿ£xúŒzªÆþTÍQÔ+7äG±/ߨÆ#ÝŸ+0nU¤"{ë®]1^ë†~ã?ú;Ãrì3ÀüÓÏäˆ|epkäY1¾•"(½ßˬ`? ® ÖaÕÈ£¨‘7WúÃó«÷y ¦úã;"¸a=ó]¥ ŸBü/ðx}ÇÞcÞŸ"Ôea|ÊrìûÀú„úÞû”´Wë;b?!Î_‚ýBWŒ“œÀ}?J”·úê+æ):ÌôØçg@Ø/ y‡ÕÈ¡ŸƼV†õ9Æ™ êò.j¬êú¢¿G~T² óŒ¥0~¹ gì£Rc]U#ä/د¥Âþ$ÕìÓBÞF‹oKo…<Á/Äì/QcLƒuí@îk2 ½1^’!²ûmTè¿UÈ‹©k¡ÝbŸ…ÞýÞ)”òu*ìçÔ`µy{]?Ä¥ 0oÄa‰ §Xg“-Gû@ÞC…õ 5öÈ_cy{u<ƒq¶æ%Æ{k°ž‚û”æxÚ?â¬y2=ö¹›aø>W(ð9Èg©°^£ÂøV÷×¢¿Õbÿì3â­5Êñ\}õ±å(ô½Üþ)Œ3„¸W~Æ¡Â>ÍŒ;âu‹áù*Ô# ö3k°Q+ðèUÈ ^øcEŽû;Tˆ;ªÖ÷ÌFžF౞kÀ¾nö[kú¡ý®x>佄:ö“úõÆ>PÔ{Å&Œ—°n¦Ä¼Uñ«ý“ö úUȇbÞaÀ}Uþ¸Ÿ.ãû ï ¥Âz¦ÚÇö£C>J‡};†"¸b5ú1Ä=•àçg¡=ø\gÄqLEû°B¼Ãø@‡y’á?ŒÇ°_7óß ¬¿¨0.T#©¾ˆrÅ8[‡uZCO¯ýQ œUXOU ùÑ]!/Ç:Ö³õ-‘OÀ}>JÜϦÂ}hjìÇPÇ þb¼¡Áú¨ û‚ÔÈSêwc~Ùç‰÷1 Æú[SvŸjÞN†ñ§û"•u1Î_‹qo´[a¿årÔä­¤^ð|)®³bê-ö7ªuØ·òÖǧ Æå³ ^}G¸$3ðúY¸¾Øï§ÆüE‚}ª²ÏˆXßTyò¢jŒÃ4èÇ¥ÂþZäJÄq”—fÚå~ä°¯R‚}`2ÄiejÔcŒû•È‹¨‘£]J°ž'ÅøX*è1úì+P#_ꃸå‹q›÷ÿÊWU!/©>‡óÛ ãc]ßw ÈÁã) ê…ë4jô{jo‡o \ïƒë$ý‡òÁ~z5âˆíJƒ¼±Ì~/Çx]‰ýDÂ~ ê‰Zˆ—Š1^ù{ÔçkÈ ñîKРýh…õ¾az ê?òZì§×aÊ0ljy¸7ÆÙ2ŒŸ0/h‚úY„~ûL}±~(A~Øûcdˆ×JŒ[åô'ðyˆ+rÌ»•èTëaœê±È‹4ÃøþòPV¨_¨OÂ>n%¾WcߣÏaÖ5†WôSb¬ójþC½ÓÃ}eO)0ÏöUJ—äõQ/q¿\¨ û:µX§“aþ/ŸŠù1î3S)Pžiˆè'uØÇ)­ã• ¯!Ǿ^§VoA\mˆqÔaŸ°×ãMöó ýîªþøÜ¥˜Obþ#ö¹¡>*}Ð~ʱ/÷j±J‡ûxįú ßçë ×IÐß(’ñ¹Ñ×lDÜBQ†þTrøSÅ\?-òÈ[Jqÿ— ù…êýî_¹às0xÙ|”#ö#)nãs±î«Â¾SM;äû¢ž`ÿ»ãe_ä—å£0^ÃúªF‚ÏÃ:’ã/•п_ŽãB~N‡¼¯ñ×€ûk刓ªIÈO­@¼@9« t;a¾^¤ ÿƒ|‚ò0ƽP__ÕâþÖÕXWÔ`_ŽíKu[æå~8âƒñ[óöh„ýn“1¾Ç¸X|ãõ(G乕߉u‚êý.hwÒÅ(W¬?¨p߬ ãp-ö«ê; NôBy^ļoêU ƽØ¡A\׆"/Š~R‚u )Æ Ü×¢#¾`~¯ÁººyiIŒÿq¿yõ~\'uwÁÏb܆|€ïô?Ø% C\|ƒz€<™º/ÆÅ˜7K‘Ç—c=PŽÏQb›Zàß-0®Ç:¶/öeIqŽý¸ãlÕVŒ ^¡þ ç \Áë°n#EFŽû*Uˆ'jŒ5¸Nöy5ß/ðVXO×aÿŸîú¬_Èp_‹¢#æçÈS(~ üÆ]`ý}M÷ ,G{RîÅñ!ŽT׿^¡¿øE” ëH*Œ5â5þÝj½q¨=âfu=åˆú¦AÓžÅøêö…Éðw2Á?`_»Z+🹠)Ƨò¡¸îè?Uèçª÷¥`¿»Öäç…ó÷É‚yø"Oæ‹<—/®—Ô õõA‚ù¨ý÷¯Èñs%æ™*¬WúµÂø3^åXÇS6Åq`ÿ•ë Z!ŽIüæÇج™‚u ô_º äwq…÷K÷ þás„¼Syó=Ì5ÂþhÌ;¥ÊÒÑOÌÁ¼ýƒ÷ýj/5Ø Áº¤õ^‰ñŒ*ý+î×ÓâþÖ×d(Âp\Bûm«yIìoÔæÃü½‚>x£_Î lB¿ÖJÈ1Áý¯b®#â¬/ž‡"ꀨçj¬Û û7%cï@EŽýJ!^ÎËÁ8O‡õ )Ö¿å‡0žÂ¾Å6´?ì×"O­kŸ‹§=”`Ž ûž¸/P™‹ùæG¾Ø#A;’¢üäx>Šën*Ì#5x?ñxÐ_q%ò\Âþ/ô72ìKQ DÜÂ8F†}P ÜG,Ä­Ê<ämÑ/jj!.a¾/Å0 â„ ÏMQÍB;ºŠZðÏèdØÿ¦@ÞE1ý'ž3!à½ϵc¼/ÁýRGôÓˆs/£F¢íŒ~ãn9ž“$Çù*‘WW]úY°.$‚õõÁù{aŸ…§îç…ñŒë‹Üg¨­ ëçý¾£x#¿*ÆüZŽ8ªÂ}A𓍗B>Šü´ íFƒrÓ¡~ umã:ôw£±_Tzý>öÕVû 䃄üL…ýP*¡ßI8Oy(-âýŸá2¬§¤âE$ê·æ©BÝãe5ò4šÛ¨'A g_ä{%˜—H±KÑíŽï*Æ×/QoÏ¥¹Ø ä=¸§:.Á~)âºã"Æåª¯ˆK¸ÏJ‹õYö‡HÑ?Ë!®`T8ŸCƒ¼›û—ôØÏ(ï„uƒBÖÑ5Wkgà+ö'ê…|¸ ŒC†q¾<Æ©ò¿žø\¬G"ßj†¼‰ß=°çÃâ3$a™ÜbÙgGuzQyÅgsÕøy7çæIlb›4¯wãH\f»ãbß‘¨5ùc;~F.\¯7¢çprfh—¢–‚\Z»w霒‹äRßÏoœŸµ#Ñw=²’MÎéb6H· G ¹o=òIôœÙ÷;4'»S~µ—q‚@:eFî¦$¨Ó¥5yõúhÙ¯ ¶ä³óü’!‹\È·»ÆŽs6„‘wV¾÷å†'Ëÿt]!&ß.ªY’@ \àMžþèØfó3ò®Y鈬Å_È«U5?-yû€Ä¼)O‹³>B>œ÷UT{‰þð|ýÖË‹Hô¡‘·Æ\±#±ÊûËüL_É•5.Úež —îlÿ•®CìëѪêy­Œ+Ñ’!~kÛt$çT†;;‡’—_oŽ-³mHXÙ"ày«uŽ˜œ{ŸÜ¯>È%¢’Ü ÑØìô}Â=;gjj.¹;cŒ,ÿÀO߸å瘋ȭýcbîlÉÐßËÏm"/Îv\ùÞ*†¼Q®T|>Û<žšý¬Åì“äÁ· ;ô!¯'´=V6Ÿ¼Ô~ç³uäy½º]/ñó=¾ÐöÚËvä5;nq¹Û.»|g¥ž¼Ü_µyhyoã–áêA^dÝ‹™ßp$y’³lïãÍ+Èc‰*¶µè0¹6|tb·VGÉ©z®ë¦Õ''7;ÈMéNÎï½Ý©ÆW+Ýê˸ >äüô¹ Τß&ùÅ#¸›äб³¥Õÿ$2çÆ÷桾$*ÊÁûäôu$ææ·Óõ$j@Ê„ƒ³×+Mî8ŸH*&1KÕ'—>J ÑfÇwå.Í%cŸ7=wª‰-š¸UEâ†ïè7®Î9û©MsÏ„=$z…¶wû;ñäª8Ö¹Ú™DæÞÓÄþ¹Úï_úóMõHDZÅ¿¡fËH„ÇÈ{Fy ‰$—GúMÜMbN½­Ï;InyøcÍ-¹e½Àyn­ÃÄÔÑØhëŽ*bj5øWçomÈÍ–-Ÿ—¹ $7†ÏÑ/"1¹M¦\J "?R´›¹ÿV‘ÛáK%¿ÝIBÃ7+šͬÖÛ߾˭F4"Üå‚£šó¿ÉùõnLn?<ø8±¼|.¹ksrÚ•Aä±zPeÕ43òàÖ z;¹[«I˨’òÀ| ½çØWäAïÑ%çdsã‹Ñ†™$²þWE…¹±¨Qð“ZÈ͹êvßê,"÷м~ × '¦|p}N¢nÔZÛ¥r3yñ/÷âÃväþvñ>å³\roë+.àm¹·ï¶å˜îßÉ­€œZv#wö®·½°žÜÚ{¦r‡¤”\“Çî 9ÑŽÜHëêf{…Dvsü<òCÛÞ¥Ý ½œDA“\½Üiʇ6b?¶EÓÛå)äy›ŸKæ=Ê"÷<ñË?–ÄYÞš>f ‰~ê>êVÉ»qrËë«Î’˜–}¶»ObÌ·q &ñ—_Õ[%YE¢§,>×΢1‰žÑçÅ`¯y$~a§#2.ÓD¿Ç u \n vXÊpÂÝÖþUÅù719e&;X]%׆[Ð!™pŒ ¬g‰H‚ôºãõÔS$®ûŠæOœ~’k®Óò/iKnÌ—T¸îNêžÛÝô\û(þ9âlcrc]Ø¡ºM¾“¸~Wo¯!·~>Hz{k+Ix©`ÜCδ?þ1öúr…óÙÔ -Ù=c\SÕÝ­dÿøÈgecJÉñ™ÍæÜÿR@"VlZó9¬ˆDí·TŸXoMνÛÿ'Ý׆ìÛkëGN›û!¸S)¹:Þ5«uk ‰oSôêùî)ÄôeɆñuo’èýZË®_:“øŒâ×!»û‘ˆ8s‹SW’+Ë:ªÑm3¹”/ÿ¯ævruÔŸÎo2Z‘«]o¾ÉÝ%‘½"Í4ÙëHô{“tOÀtrQœûþçËÑ$¢dM× k^/ÚºG¸ÁÛç°§†5´!W¡_ܸ~w„ãF’°F}W0ŒpöÛ¯Ž%·f™?fˆ–˜Ö|1D^[MLÁ'ÇM¾wžÜ–ï<·ÓÁÜs?½§F¢¹Ô¶–rÍ£OäÒ›×;¥-$Wtÿ,ZÞìE®²ctgèV£Æžº¸œDjç9\’E"¥þ›på·_´¨ÓŽ\?²áŽ»‰#q~£¾µJ 7šþ™7ag>áÚÝè˜ùùá¶ løàö1[VÑÉìÜDrËý\žeïroòœQµ7Ƚ?ü2Ÿù’ûeÃv%ŽÑ“§æê&ã^#/ͼ·¼ÙEžvürkñÜ‘äÎ+Wúïv"·Í·—Ǧ¹“û6nkgî.#÷ö”2Gv"W¤~Eß=ž“kž fM]t‰DÉ&ž/¾ÎëƒM+CŽ%g>®Þ^øñ¹¨(™—´ã¹Z¥ö|Щ„DnxQúÇ$4gs›m$¡Þæ7·?&¦±Ëì–9í"74;Õo|\·ÿhÝèJ)¹ÿÕ«;Eäþíƒùî—&‘§w¦é74iBîgu^“²î29s41~àÁ™äèîÙ1ƒÉÉAÖ¶†:“›ÐÏIâ¦7R®ŸÚ˜Ä5n4åÏÒ÷äU™²n­·HÂöô¦=»æ’kíÇ^;Õç+¹¦m›ðXúˆ\;ÿMüwäWrÝâc«Ý'‡“›½Œêé'û’Ñ¿R§QÅä®Aº·Ã‹™äž§Ýý.Èm½xYF§¶$fèÆÇnL%׿ôß5¸†¹1Ñ{N˜â>‰.ÚØçIbªü¾÷¥ô&yPÿ¯ãºþ·Èmï ßF ýÜxïƒÃ˜\rg`ê«…¯j“{Ýï¥v¼éEîØÛ, ~ÇÛ·ëB‹sïº;&›Çß_Òš[ÊÈ­Ï}ýWO'7SÖt6XÛñ¹q׸+z¶5¹Y롺…ÿVbR ?úwø9r{»wý^rr3¤Ç&«Z®äna³¬ÜW5ÈíöýZäVN'·f693.b,¹=¡mQ·òø±¤àF«¥$b]ÊЋó÷dk‡4æîœGûj¼¿ÞmGïÛ³ÈÙ¶Û?™ÅÆSyIg&%× —–yI­M®NwoÜÆVOîþíi¶f¹··U^ý—rwXæØ…ó<ÉKŒ'Ëê ûÏc5‰y°ïŠ×–rrnıeÜ€xòlÃÇE†ñ‹«ÇõÔŠo^ýš„×›ðU׻ϦäW,$±Í–ÌÚ×m95òÑÙ.ßÞ’Ýo¬¼kMâÞ~X2a]^ÿk?›õe‰ìäqjßšÃä†;÷žÜâ•»sûÑäv™÷¥·½Éíå{VFž w&?·ÏîjOî/ÎÚµLÝ—ŸO΃ßÈ›µ+þˆŽ/%¯õ§'×¹óœ¼\^ôú䬟äÓ˜úêÓ¶È«3ç›~J>¶ÚYz3ý;y“3üÁµ¬·$.¬Oÿ­½Ö‘ˆ~]–^D®~?ßìXóS¢‰[-’‘¨¯^jôË#ïêSûwæ×£oˬàI¼éÎ9ûE¿Hôï…™ÇIDÂÍ‹ÓÔ QÛ?_ꟸ\ˆt߸YL.z§ÞL]8Œ\i»Ìjþî†$áT߈m}RHB£f'EÝHÄ¿—úG’ˆ-e§E“È•ù‰{ÚËg’«+«Ú,ëÞ˜Dµ?ÜúZƒ,òÁ¾ÆàV•äçïÈIc?“/c,ÄÛmg’_?Ô²‰¸Ntþ:ùÐö{äú@Õ†w’{â»)Æ›Áäî”­û~ïNÌ?ðä¡éyð§ÝéqÞOl÷cHr;cçûžå‡ÉÍECsõ ×%qÅ—þ…$b›ÍÑ H„gÙ+–í&Wìnv?19ç1ZS²—ÍÏ.tHÎݯsñÔ^rÎégè®óªó‚¨n^»>nó''ÞÏîg°žDñуØ2rêôÉ',ù¸w×Ó_Zsrõ?ÿYgŠBɫҗ®ù>'¯ '‘ýZòt¹}ù¾ZäÙʘªšÝ‡‘çƒNÊmùÏfN‡cû“÷3O·–l­Æµ;õ'x¸¸="·‚BW·ü^·:Oôúù:¸ÃwéÂÛä³ûóÿ^‰‡‘×çÎ=×ò'ŸÆ_ù¾à† Ijs¸jAÚòñÛ­´ÿ‚.“'ííóLí[ŸÇ­ÛÇJZ‡¼þ$‘\ï?çŸûÏÉ ÏÐÈÆ÷ÃIÄ“¨#_# }¯‡wOt"×hÔÒq/‰7>É0Vò~ò«Û͵qÙäŽïØ,×*r£òÀÉÞ³ÉÝäW§¦/AnÜœ¿çΤÑ$^”6ýëorsDX-Sò2r­…ü…£–«>w^µl|¹ÑíýTãbbª¹5zpÞ¯Ø9Œi´ŒÄ¿Ú1ï|\(‰¿ô<ºÆ‚.$~dëÒ…º}8v´1vÁb&á2kmêDn•íÿÜkÐR>϶ð‰Ÿ|ƒ\Þ3®bÄì¥$úÒ·çA/ù8Q}Yy7ò¹:¼îƱ$„ÄJ¤—NÜÙO®žŽodçΑ“õÝ’êŸáó¶öëçWÈ¥O ù‹_VëSˆ×yñö”ßÀ5™DyuŽŸ‰üîzhÜ£;$æýÎñ²ÐÅ䯔fCîÉ&1S“}®žHâäŠ}ž:r³Ê8ºÆ$º^ÕŽ1F’ 3Z¾_ýUK.Ü ~—ENøwxZO93Û¦©ƒž#WBÍx^u‘Ämwë[øo‰KñÉñ4ï'»ÔôoC¢;W¿vH®¬=äýF{…DMnáP#ä6‰;*>Pd{‘\+“$?ÇÛi¿³=¾¾LâO̼ N"¤ÿBš“×Õ~#vAþ¯o7’˜sç½³K&·¶%~ÕÕ¹A®${]S2\ùn»½×Ñ­C¨qà relÓÿVñ$ç{ì¸iYSA¢æÉž»êjh‹;›/"ÐFÓ‰ìpª7%áp 9·/çXÉ rmHæŽOWãÈÁ ¥£•÷WÛáçoC› !!§›ÔZ6ʱ”è>Nýa¼ÙqèðÂÆÉ5û¾”|ž½»~ñÂÛIì‘âòlÓz’ÐSë5SÒ“<¼Úöåþ¤4Â=ýz£ÆÇ‹$2#"æ¨ÓÂ%üÛ«,¼DnW”[ôoEîÿZxñI(¹5" Å›iGÈÅĵ¿¢”‰$âÔ¦{’;ßmŸ°\>ðÍÛ¯FKr}»rªLÇÇ íkNûù ¹‘oÕÀoÀ>»æòú»+‰ôütDæÃç[“›Y½O–Äh'w(áHLó‡[ŽeÍ$ÑW‹/gß&ц&Ë^¾S‘èºur¸M‡HTh§µ6ã“Èß ÿ›ºi9‰“[º¿Š_—6Ö,]{òyúœís¦ "ѿƚíI¢ãµ³¢"*H´ïPËëSÚèvñϲדˆ´ªùƒgÅ“ˆä~a-‡}"¾×Ö] éW»ÿØý…D|½z÷Ô$âDë {ïð¯†'6Äžàï3A}`‰®³ç\é¶ß$êd§¼Ý3{“¨ac#¤eFù¶‹Wâ¼L9k.×ÉÐŒD¼™×yƒh-ÿ}»¶A±6$2wö×Wí_ÈÝžû|%‘cÎרHE"r–V¤p|á{AVƒÇÇ&CÓÒ¾Œ%מ£™IH˜Ôlig’°óÍ…„ï|ž?¤uý7k‘ø¬w§¶·nMâÿkæúá}6‰Ÿy÷aÁäx5mgÊDM}Y²§EŸ†—Hä>ÍÌ®…|^K–tÜÙ’Ÿ÷99—àõ·¾˜óÏo¶gÝõV«Il·—ÍyýGbÜ–¦ˆOÖ$Ñ[ÏnÍÞ˯ßÉKL'ITý_£ýš“ȵçÎnž“L"k^–ùFŸâå^qf¥ä,‰Þ»cÅá6;Itç¶ÿÅ ãí˜[â·¢YK^?‡ËË?†‘¨ÖÏ—µZeE"í»ÕuÍÝrrA«¦¼_µ™2¤y¿[$ª¼ôÌȳHÔ/÷Áë®M"QQ:Gmý'$ªßÁ;dÍ y3Di³9$jéÖÎ/·¶&QýïÆu™ÃÇaŠœKsx¼)0®}#‘ġøº ‘ŽÓ¯4»ÎÏ7pMÄb+BbÚÔ™%±ušõŠºX@bþUŽނlje¶gT’˜x—qGÚŽâõpj}·:sHtÈñõ7´%Ñš‘C¯iz‘èn“vžÜ°“D¥«æ^‹øõÏèÓ7)‚D-Ü­|À6Y¸ñTì¶©$r[ñùŒ¼^_S¼7ªxÏ,<·®Ãi{íþ¨u‘Ë g—ñlë® $ÖßÞêiDb2KÇX³0lýý_!$ú…Ôöæl^¿]VÎ][<“D-ŸpõO¼’DWÄÜk³É…Dß|^ký•a$zÕ’F½']$ÑV}Ø®ïN¢-}GØâ×e_ÔÞI?BITŸ Æ7ÅËÿ‰Ãium,¹;ïHÖ-™[Ø•Dµ\Ô÷Ó_7_·FÊHin5ìz›^$bzˆn¶ ‰ð¹ÏÛÍ~,î’eŒZõ—D,¨ôo4ª/}6õ%6c¾ ¹úÙ2»hã ùÏsô”þ¼ÌëQãåqfñ¹Š[I„…¥ÃòòäªLq³Íõ#äÊÛM5äÊ˜Ž•ß"1ÆJ‹†‹HLŸeswëH¢óC ùÍëÑ%ï+Gl'ÑËî5,Náõ¥`’Í^ÛRµÊ”) lJ¢ËßÚõf‰º7%hãõw—G±æ;‰Záù[þc ‰2o“­˜y—Dêþ¼×€D¤ :ßÜïŸçÅÅ|Mny1M¬½‰˜ŠÖNT^JLë–Û·þ¨!¦ö5 ëÆ|&Üã$•kçn’RÒ¬ý3r÷ÑSŸÉDGîNÿæ’x)¹óÜwu凟äά3þµ~Onÿ\¼ÂzîAr{ÓØ&Ÿßîû©]øq;õ±X±ÜƒÄÚ3Åòæ+ÛÆ™‹K¯GbŠÇ7l2¶œÄv9>° ‰i°-j؆ç$zI@÷ãø¸êÑA.y-}½…Ó>\:Cb§ŸÏ¨ìWAbVǸ»SF¢ßͯ=<žÏÿ‡r¼ÃëÏÕm NÄ’XZN}‹S¥\Váõs`f×mILÎV;ÝâG¼œ;Ùì¬@¢s v¬Ôòù÷ØEÝÛT%˜ƒ#Ój.@b¨˜góó:Nú>êçû?ó;¹ïüÇ ?ªÝöÈHäˆm ×\An´SþuZRB®¿ÕDÞþM®¯ŽÝ8Flâã~«5u¸CäZÖ–•}[ó~òă'5'«È5·õfõ[•ð~#aÝ´Ì?$*>¿2:¸‰º{þÍ|sÞ ÿãøš×î?š°q+‰²°Ãû^/Þîg\‹2ì!Óvï|tÐD"f¶þ¹ª‘‘y»°Ç1+àÕ¸—÷WGB7tXL¢Þµþzü³‰škÙ?»‰¼eæ7Ÿ+£t&;N^ž±ƒ·Ã„åÙÊN<¾nΉ¿°t‰r£…l^Žý\—,9˯{ÍóƒÏ?ó'‘÷¢Îím”H"7<ñïÕLKj=µô'1·O}j1ŒÄì³i뢊'1ãϤ‹mF¢?Ïm=iµ4Mí7‹ÓFwœò÷WÞßÚï­±›ÄôMürx"ïosæ­}±“—ë±gÎmèÅç_¯E¢­SúOoٞljYÇgðòƒzwt׃¾Ášæ$êÆØq¶ÝmIÔŒšœ¤î$2µkå<Þ*†=zö-‰¨ˆÎõ(áåò¬gØç¿ƒIô‚á®±Î×ITÊëyÓÇç’(?ñߘ`ÞOß?{¸9¯×þ£â®ë¶“ˆüÏǧµ3'1U«,–»® 1GëYáøî‡¨Õ|òr|—ôë ‘—MìV†­t"/Þ=léä^En©%§|j“Û¢Û>¹‘Ûµ{ÿé8í¹õ2çÎ;É­=CBë&‘[“•·k*#·j7.+žp—D)êYÖµH¢Z(N¾´ºE"—¿rzO"ûÔi³§çÿäsýv{Ïâõ¶Ë_ÊëfS-÷×%×¶.<Ú¬¹æøóÔÌ”P’°'!íÁŸ÷$ÁvBÂÒ~„Äω½í¿9ŠÄè[i¿u ‰i|[q¢|‰¾ß*6éÂr­º0‡[9Œ½ÊljýžìJ;K¢¬Žnëåö„Dº¿ø˜÷`9oWïSf¯r QãܼØÅç ;B'¿!›ìnw}&‰èºëë­þ{ÉÕÛò烢摫³]ßœìÞšÄÌÑ@Ws‰Ž°lžYÀçMJ˯ØÏǵãkn»C"Ú¾(h6„DßãS#ŸÏÇ0ÎàV;G½ê¶†p_îhlLn^̱‹*ò%7ÇN–Uø™ÜH^~`ÐëäÆÖeózg_'7†MÞqÖz:¹ú<°uŒ‚\]³çýÉÕ^·f5¯M®”+¬›~›\¹ô[Ö·æ-re´G-×=;Éå7­gx„ñþlåÊ¿a­ù|T–™œòp,‰ž½Vâ”ÍëÅpqÓƒ›yiu§0i€‰R/Úœ»÷c¬¾sôý¼­[õõäºd/>Ž;<Ë=øø^Ö–hHdòSÅ÷Þ|œ<Íæý³$úˆÏÒÈL~ÝG÷òŠ&Q9M'voH¢¶w^cÿ°)‰j; aÎÊi|^pÕ§AÜ 57ïôa1µË›½cÆSY¾= KùxѧÑçf“Èí™GY*Ù÷¼…ñìññçê»%„WßnO•ñúô~¼aÇÜw$JÚÌÜnì`Þo ®íþø%‰ ;Ìí¯}œ—GÿÀ&ÙÊõicu‰ w¶ïˆé$&·ªýõ®2³ôôœQU}Hô›#~íÎózô÷\RF‰¾ükÝŸ¾)$úgë0ŸE$ú˽­õ;/ ÑÈ+F· °³÷D=·c[|<[ãÀ~íge»uÕµ¼Þ]²öMršD·h=-Æ…__«Éïž!ÑÇ='}ÁçŠÓ§ÕáãJÜ$úð‰[ ¬N‘èÞovüÌ*äqìß±y—ø<¬5ûû¢|¼™ôé±Í uõù¨{3.‘(í¿Ê#f¼ÿv.!›¿="‘Ï\÷ßÙÄëI¼ßâÞ=*y¼zô/E»…û ÎÕt–xqÒyÈ­¨ÿ‘Ö¼ý—Îø²;D6厤&éHÜ’„ûƒmöØÒIç½}Cb7uÚ=Õl8‰íog1΂Ïsï·Þ>b6‰iÿúuø$/½ßö|bÎûn1m"±®½¯±ªÄŠ®]-˜SHbþ®žTÁÇ×.íö‡×¿m>¿<Äãë™~Ã^(Ht†·âÜøxžwóEU|¾¹Ù©ég#ïg/ÔZuÚD¢ûìýfVj$Q¯ü-K¿Žáã’†g·]ùE®¥^wo¶Ü†\ÛuéˆÝ¡£äÚ˜3¯œúK*:ÌêâBHÂáÝ/¿þ½O,Ì—U½X@â•ËbÏýÝG¢«Z¬È¯%&ÑÓsæ/ÙÖn‹ï]ÀÇc¾-øù˜DNLzþsúq´~\‹ gr5/½Ÿ•ó>^4Ë6g*‰ÙbœìÆû³¨¡‘ö1$ú“â gÇû1Ÿ»}ï_‘¨³Óò,UÈ"M·Ñ53ÈÝa=mŒI#w[ÿþíxWKîRÖ|¸¹“ýƒLÜwžÜyÄ  äÎÖK½Û‘;3¶Šízì" gî/gQÄ¿’vDøÅ‰oÓ¦¬$qñL?j‰HœÃ잟®‡‘ØÙ7&ñyýÛµ."'c=tòȾ$úú(§g뾓h齉e“>èæï_.zÆç]&¶öàãXÏ.¼æãºX–˜´ˆ.nï?“˜Ð¿™Ge’˜f!qã,ŸèØ)V¦&’èIN†‰uøüìåŽ`©×9Þ^lm›ÏëáñŠÂ.5}x½v2èïy58l ±¹L¢jÛ§ý™vƒDÞ}bUt·¿–•."•e©=' ¼©ÎýŽ¡üLÖ Ÿ¹VU•šlÊHUÕ?“õw"3³Z&kãÕ*þŸÉ:i ÿy…ÉúR ÿû&Gõ‘ªªJ“ÃÅoü×%&ÇÛ‹Môs§®ÙõN—lÃé}\»òßÿ59^[B¯¯{5›Ð÷N{žÓÎU““‹¿ÎÒää|ÎŒ]¿a`8{5ÿäffVÓääÞÙ™^g¿Ý/‘Þ×±ßiþwæ&»»¡nt|öâtgz?»“Î{}²–£¿³-³ä_ËMõ¶}fã©[\ÆæéÔù‰ˆ¾:Vl g÷;7‘ÎÏéÇCvŸºÝÑR«ÉមÃaáw6N‡ce‡ãü^nlÜÖÚPúê8‰6´Ö29¦E…Ñëm­øïmLÖkv»˜™Y›l|žð·/3ÙÖ¸SÅäúº"Œ¾ÚtæLŸkÛ¾‘‰g~ —äyL®N–Å!ô{G]h{ݰٌÊÉaͼ$6®ýøçX™¾LtarøÌÖÁ¡{OBçíØ '”ÎÏAÚ'‰~ï€ó³Éƒu°Ÿ·Žÿ¾ŽÉ¡¼‡cÎl7¶éôøùIÞ²÷޽׳yÛ4r¥×[¿¸Fïo-=ÀÖÅZó³vºÅäU'xBU±’ÐûÖ©ãëLÇe³uc—í W&/[E+ö{ÛkfT^¶ÃZ²yÙMÃæm›J7X[™¬w·q£r´^ø9”ÊÇæz&wÛ>7ésm²ê¹ÒûÚlÙÆÞÿmÏôØúæ *6ÎyžUô½mŸbö<ë¬P¦×‘¶ì:kM-[¯f¿Ùxƽcru,È`zส!è‡Õ¶îŽ©nl½"=™|·fò«ãã·jâB¯¯³jÓ×:g&¹±Ïc`½êH"˜^×ÙýIDåk/;BÇé0Ü bzvõ`Óí¥DöyÍ‘®ôÕNZÌ®·Ÿ±ìí?¬ï£öìzÇ™ ‰Ì®,Þ€.”2=sÊyÃôÎ)n8³kÿLÏlr¯˜è«ýJ9³ÇƒØxœÖ p¡¯v·'±×ÑûB˜<óê1{¶ÙdÆßïÉúÉŽáÂÐ,X[°›¸ðýz—D¶[å`™}ÙzÚNÈáå\l²m÷ ^‡‹Øu[.²÷6.l=nscãÝñ‚gm“õ¡¦ÌŽm¶­b8akVJ?·Y?Ù‡õèM‰T.µš™›èúÖj=šéo­¢:žZGº±u¬ÙzP"OÍA‰®ô÷–â­UTÙº9LM\Q¤2¹85ó£zâ8nèA«ÕLîNöKØû:Ïš1{²ZáÆ®«tžéW픕lkÙYú¼Ü† 5¦Öfr±–‚ÞÆ²õ²bÏÖÛŽÜfëf×g*[/Ûs×ݨÚÚq oK§0ýv\3 ìsËBWf¿ëKÙº9n›ÀÖÑaÇMf¯öŽ0o»ÏÙýì|3Ñû9ºô|™ü–á–cƒft^öW#˜ííš3¼©Q/Œájƒ\èõ5®c÷©ñ.8‰Î§æ°¹UtÝj.ûÀô¿fïý¼ö¬ñ ojïÞÁü‡ÕéÅ"º^Vcz¹Ð×Z†!lkÕiEè¼jÞöd÷«5b[([·¾gúy­½¿“èxk_8Ê~gµ8™Ù[­ïÃÂÙ}fÖq¥ëëxç»ÎiŦ§Nö€ Nî0§½Ž ×]Ž dú[ëÙxþNŽé›'Ü7¢Æ—ì#¢r©í’Àð®öÄÉ`¡«îZ·{³þvÊ…ŽÓú^ˆˆê{àê8â¨|¬ Ë™Ý;<³czîèþá¾S‡9&6¾Ï ?§+vSþlf§ŽaK˜Ö²ÈäPk£ Gí=RfwVýæ3½­½q³“ZÖ"ú¾–f›§Ís†[6Ç]Âé¸ì,¿3½°ÍýË1¿´à8³';›ÑL®6'Â.6Âô×êýy¦uÖ˜˜ZG6>ëY3˜¨ãzhÕâ,¡÷³[³Šáµmß›ÌÙŽ<™Dçmkw‰cñEÕ@&»ª©ì½­o{o[0Ý™½Ÿ:ŠÉÕößî$:n{yÿêñJ’™þÚ.ÿJ×Çfž„£ëo㸒ٙíBE(»ß°ITv5â˜þÙœQ2ý°®«g8j½à0»M\o;*Ê•áU«hö›«7˜>Z;ì±ùnR:3<÷kFå\§ÿ9&gëÕÃÁ/æLbëb}(ÚŒ®k]‡˜ÞÙt×WÑï>>ezã°hÇŽ8>ÙÊôËi\&Ão‡Ÿ‡ßG@\f“ÜÆCàzÛÀŒ¶~µsîÛœhÊÖeP¶þu¶Ÿ7Ñù×ê(=xôšá¤Õpð'Ö±€³V?N‡3;MÙêF¿¯}³1ø«†'X­cÕ6ˆ=ßjRjù‡¿Ùë³y„ÞÏÊ|“«ã‹}l¼Ž="N8ÄîañÈ®‰L¾3&°q;6™L.µå˜žÙ·ZÄðÎÁ|³#§¥r¦ONZÀǼ`¯c0\s4;(bvs⯠•[Ý+=™];]ëÇäìTöó±ÈõßLvSæì¹õ3óÎ5T×aãi2¢û¼IÓáôù /evÙÀëó7õÅ2=vÒœgëëØâUÇ,K†/¦CL>Ž.™½Úˆraú— ëYÃ:…Ðñ[.ØÄìÕòBÃ[ËMr3*_Ë`ÀuËvEì:‹Pˆ­'¬gò´ŽºÆôߦ¿†ÍæjS8½Îf¥-“—Mý9.ÌØvM¢ó¶÷öËþpªgv6›Ü˜}¿ºÆìþÃc6.»œq¡ì{óÌŽ­lγßÕN"!l½«3¿bõî;Ã%»=™Ÿµë³™ÍÛvüLÕË×™ÖPJÁÿÚ=aã«y üwÍ.?ÔØõŒù!ËoÖ ì÷º0 /ûFf·v51Î6€?¶žŒqrB%§}ƒ³Ì¯Ú~ÛÏðÃnìl¦¯¶ö¶µc-˜^ÖŠºàLWû5ØYí7IÌÖÞ~ ‰áNË:Ì/ÔîzaŸíçJñÇ!s“¿ã†;lý:‚ý9õHaãrºñ·¤‚Ù»Ýý·!LN;?‡³yÑûÛ_žò›÷”Ù±íÑ­L®vö`ÖÓÕ ‡l®¶b¸fsüQÃÑšëÙól×Lp¦ßÛVþÙì|µ*ÞÊÖÕ:¼ø¥Uk˜Ûúïcøbss©3Ãå#¡,ž¾6–Ùõ™ýÚûÅð׿Ò\†Ï¶UyLî¶·0»²›XÀôÀ&%8œÉÿÁQfï¶£êVœ cv¶LÅÖÝf/擯_°õ´Þøš­»½r$Ó/ ÌTï˜ÿ]ÆôÜa1çÊ~·£”­«Ã¤f ìvÎQû·w¯ÅÆms•éCø`†{ÝúÁ}†tbò²¿òˆÇjÎ'†+uD2¶nuæÐ“åx÷_&›¯ÕßgLOêd-'L/Þ¹…2½é×ÓÄòöž£˜ÿpø[RÅâ ZU¡l=wÎföi?’Ý×.¥“‹cî{ŽéµÏC&§7lêZŸfv[—ƒ<̉Ëaúítf Ó{‡˜#ìùöyž ÷Í:˜1|¾y£]ÄÙö™K¾ÛE•„3üùÓþåìþŽz ö»ºc{1ûo°ìx{ÿn,çz™ü»X0ýwTt÷“Ú1\¶3y°ñ:Äö aócÆÖÓQ:p!´›—Ýж ·íŽ‚ÿ±›q¸íEôíìm†K6; lœµÍoƒý…ñ×RÕ;”•2=³ÒfzY«ãxЦù— Ã@ÈÇk]œ©}g¡‰ÊÏJÞ6‰â¥Õ¸ŸfTÏj/‡¸«VÞìwu[-scöøô nÿF칎Ü_†ƒõÄ` 6þa÷«ÛòM›†Í™Ú$4ydvdw,ß>Ïnic†v_Lá,ÏÏyËôÇæ|8ÃC›C÷Ú¦7;?± ìüÃhÀ+/Œ£#“Xœ¶x¡:§>²õ²öqcqÔxgæW³»°¸-3„ÉÕêäaGì^otcþi=Æ5#rAlU"æ¯Vÿ`r°«jÍì¨VSó$gÎô­Ö÷Ó¡,_éq;‰­gqS&ÛZ‡Ú\éíÂâú&ª˜³üsäN¾æ‰Lk2ý0CÞŽ+|ÍäÃå/ãŸSŸËeq7—7Ôžÿ]M.¿„é)—Ÿ;‚—{W¸¨W¾fµ;î_“¯ü¸¸ŠI,NæþtQ¹qåý<øßýæþÅ>˜õ>MñœË~:›úU.·DCõ“û©±£øÉ}*le¢×%µ~Bõ›û0è#].£°=?VK.3»”ÊKô(¢øÀe=ïFõ†ËžgNí€ËM§qd%Wð>“¿#—×ú»ï7ñj?ÜÏv7¨¿å~÷8ÀÚâ—óÁÈÆ‘~öµ.¥N]ŠïÜïç)qY3èúüåòDòÏÉæ2žŸ ¸Î%ö§ëÊåô¾Jõ–K>þÊ™=Ÿ0¿Æåï—‡ÒqäçÞ3Ñß¶K¤úÂÎ8BåRðà<Åg.Ï¥-WÆÌqìúŒÜ™ìù¹gíṕøû7à²ô‹™²^^dãÍ^ŒK˜ÃÞgqÙsòú*©žsY»P¿À¥oÌæŸYÆÆ]R¿Y>—Ÿ½“ŸO÷çh/þµœ+]4—É£L6ÙêAaÌgþ÷Y\Éê:‰tÞÿê°¸Ÿ+vKq¡ë]ò$’_Ï\®D;"‘Þ¯¤¡ï‹Ï3œçJƳ¸„+íñ‹éÏŸþaüøêr…• øßåqEsUü}ì¸üÕ½ùÏm¸Â‚0þ¹¶\aM-“sáç»LNÅχ°ûš:3¹ÞèFõ®h ËK¸"ÑĪW…Ý΄Ðë ìŠÙs‹'”¸°yÔ]Çô®d[W6ŸØû²Fó©=peRWöÜb§~LNi=ú˜¨ÒZ[¸±yŒ5ÑûïºäJçYæÆü Wü¥ÒŒŽ¿(ùõ\áïÕgIŠÈDïWäó+šÎ_—ɇÎ3£Ÿ—Ôq¡vT܃Ú+ÿ>s8»O~ùcþwE\Á¯u®T>… ÛSÿÁý¾t­ŠêE¾ä?ïR® Í¤p¦GQùlüÅa˜þ·0z}á”Æ¼| ¹Â Ÿqå~ž&ªoDw¸Ü^ÁnLBº3½K?Dó‚Õ¯¿:_¤¸Â凯gzTð#–Ù]™Î•éoÙ¨c.tÜ¥ëÕÎtœ%¹žì>ejUÑyùýÇô¸|ãs¦÷­\_|*ùç;qeùT¼f\ņ'.ôµÔåC(•ïŸóÜè÷Ýn†R}/JÃô¹ 6>‘λ艄áR~ÎH꿸‚†39:ßâŠÿÂ)NßNõ²ü¤»¾´ðF8oËNø2}ü³½ ½ÿß~!!t<ãXÜËý{v³ŠÍ£Î:þõWáÔˆ£zR¶¬+Ås®to[¶¾ÿ|÷Š˜={·ãÇQ+lÜšoÏUÕíÂôôoÆhþ÷¼-:aöXá)¯¢÷)_³Ï•éKT6ÞÒd–7påó^‡0;xUtr¬ã}Æóq…N'(Ns… `_eõï0}/ŽÈa÷-ûó’áXé°ù!ì÷}4lÝJ½—³ù?ë¤dò*½`ήÿ#O¤~Š+Z6&œþ.ÛwÓŸœý4^³àRÕ3غå7öe8‘ã÷óß.–grÿî¼dúT庙ÿ½£ÉÌ}ÃÛª¶#øŸšÌÕŽIÔÏ™¹`6¥]“›¡½3ÕÇτʩ*»/¡öWpÊŒÙIá_À“Â"Æçp*K™üÊCmB™™~‚ékY_–ßqeÖf×åçîñ÷©àÊvìþ™•®ÌnÓ½ÿ cú< /GÇ—z¾”áO®2ž½/´°H¢ó/êÒ‚Ðõ/çXœÀUD‹èóþÕbü?÷7À•§lðg:?®dõ ™\Iøn7:Þ²c?ùç5äÊ.¦¹Q=+ð‚áK‘–ùk®œ¼¤òà* 1‰ôú?!«Øúåõ%ôþ…³éÉÕu¹Ò}œéúåùÏ0Qý,ˆ«¨ž”DíbóÍöÌæS| ¾ˆáÊ’Ç„âLaâ~†›ESk29Ü[Æô©/Œ§P´ÙSö‹. G²/Ôaþ,£;ø¯¼g#®å¨'‡RûÎèñ–éEF“'&¦GXüÁ•wÐ&Òû–E^H¢ò)Õ‰¿Ü°1‘ÞçÏ>°óÊ{Ôòãù`bëZ\Ìì¦x´ðròÀýfŒç抷°u+ÛSF_ó{ú%1œuÊãŽäJ™]åÁäTX*qaÏ_Ëê\¡z­ÃÍ^•‰Ô?äµ£›_ô3úûüš”ÿ±çŠ&oàÇÓˆË;4,‰Ž/¿Ež{=rØŒÚqÁ” †ùßöV1¿,)t£öSðl"Óƒ‚…»™Üó§Û¹2;;s(œ>·ØÙ›½/ -a랯›B˜_ÊhÈü̃Õ.T? Û¹P¿h2oéLñ¥jÄþ~¦Z;{8Óx̼å*“ùÄ[¡4¾4Ë›ÃÑçþ+H3ÑçTTÂý*½71=µ;Éæ[AèÚNÜ?)‹‹ùxÈ/Œêwåâ…à¯>üdøT¤a<4WܺN8Wá(ÂüÕ]&¯Âíåì}îÇ™áTJ½À>J?Y1ü/Qh’è8J‡õgr_¹'ŒÙoÖæßÊL4ßjÄ|c¼ýšçÅð)kv=†gɽiÝ”Ç3‡®ìûÒ±»Ù}+4¸¾‡Fó÷Í2Ã$¯ÇjªgÂ{îf‡šôùÕßÇŒ¥<°9—˜PÁô½èÅ«pjÿ#îVÑõ/6€=$5 §ó)Âxhî÷}¹ˆÚÅßz€CÏ›Àû6K\éxþþZïFŸWÙózÃד€•Z ó™y¶"†gsCE,~9‡áIF/ö»Ì¬fìûÜ}Céç©•ÔZp' n(¼½–ùãü›àÇ ¦TQ?wïØÏ÷-L‹Í!ü1©û]ÆhâBŸ—)ÿÍÆ»÷){ο‡Œ—ãÊTº~~Û8æ—ô¦Pª—¥6àKÚÖ`z_ZøÝ™Ê¥4Õ=¸Ò‘ª*ª·¥É ~íJ‚u±…ù‘”¿zWº^?,†Ñ×— hÜVÅ}u£õãZ܇÷ ÇK×jBÞöìFåXÎÑq•&†™Ñß•|i“Hñ¥dc†Å­Äüxê™ÌloÏU=¾ÀÌÃ&œæ[æ—Xüb2ÿÍðßdÙ¯k8µCËšì>Åù{Øú”o•Ä~¿>4‘áßcÑÆûrE«Y=›+ï¹Æ•Žó[Dv]rH’3_òjOf\òÌH7:Žì»Ìè:fÝLaë™|û€ˆÊ£t*ëàJÿît¥ò*\ò"„ÙçBv]y{Š·&s‡kÌ/”dCðcÖi]·Ô‡ ˜œÒ>Òz)Ç 6žôñ*fO%³k†P¹Ì=Fõ£,ë:ÛüÍ4/Êâr{×`~"[{‘ékî³ †+¿¯9±õÈÛcFÇ÷'¥ Ó‡²»)fÊÉò*j§å±9Šs¶±q—îûÀ좬Ä µÎÉ ñ_A¡Î Ï0îâí’³,žâŠÞQÿ—ůfù8W¬ÜÊäVÒ†Õ‹¹R3[ö}I‡=!,¾Ê}MXþ0•æÙ\ÑfÈg³Cï˜QùäÝcü1—/?Åô¿`ètB×-ÿ~7Ày ˆ7ŠŽ~t¥¸ThùAÞ«Æwnó%áL>ã0»È(ZÂì&ûB &ßâÕ']èsóÎo £öPÔ_ÇÖ½À eó)ø\ƒÙI¡¿G‹k ÇE &3ûÌï¸ÂÊ«xÉ<†W%À7q¥!íî—ŒW÷v£vwç3Çî×s¦Ã÷¥à?rkObx‘ð´°ô ói³<Ùz–àœY¾²¶;a¸ØñÝ\þ—e&*ç‚“ @/2µ Ï ®´c뜷~—s«>¼Úcœ_ü|þ‚AÎt=²?tdú“?ø˜ųœú ™½ç\ŠfvžÛ§ÐÄðíqÍp¦§±Ô/UqÙ$.‰þ.oøo7ÿ.g|4Wš-Kbö'¥øÍåMfü0÷»Ã_†e;››¨Üó›ö᨜þý>£rx[×*+f'&3ïeá”1?‹qÞµ– §*ÞZ³÷•½Ô®TþæÞ¡ëý«Ï&ÿËoÌÎ ßÝs¦úRÒ}$³¿ä‰}˜< RXŽû}Ô§ŠéWrmÂÆÑnø‹çÏBXþÜ2=„ù¹U‰ o‘ßÈ;p†âW\ŒñpÍFn4ŽÉ;¼HþVVçâ~wù/”åcƒÀVì+föú× âÔ²Ú—é¸Êû1¾‹«¸°ºŠêYE¿É.t*Ö_c8þü’3ÕÇ?-*9:žò>%"ªw"}Â)n–0&Ñç”K^pT/ß¿¹C׃\={ œúÅs§óïíÈÃÏÙ: ò( ÞáBõòOk7¶>Åý Âé8ŠÇ÷fúPtË#„ÅIùBÙ|—‚ŸÊ»˜—HÇ‘¨!ÃËŠ‰—Mì>×&±øah;ÕßâLŽÊ±Òb%ãÊ1 ·=l™ýen5±¸ÇïѲ·˜\Š·û„²qä0þ“ÏCYÝ÷ÇLßr[Á|ó#ýC˜Ÿ|ô…ár¾ó†yË!¾Íï¼Gqlž¥% \é:m‚y—ªz³ùþ;¶$„ñ#nýØú”;?*?~“Ùñ?…¿F\éÎÓà9ˆSÊ‘¨ð`vi27²:1‡ïåŸ_ßLàír:¶fz™ùÆÛ–\ò®CÎT?“_ ¡¯?B ÌîS¼YŸ—lèÌôâVif§/73þŠÒ39sNë˜~Äy§×‘caøïk’Oö2œ-ÊeõîÍ&7¶>?1.ȸ!gr«³ú+W” ùcq½óÌN¿}ϧ÷ÿ1îG(Çóƒ™>¥N»'b|Ä·ëÌ~ën6Ñ8"y/åo̹Ÿ/€ûºö/›ò‘½ÿçÇ|Ÿ8Ú1—´úósi±¬>Éý¼Ïpã5ëàígavQ¼\FW»oÙçµüõN¦š†¡"zÿ4·6!t^™­Üè¼R£Äì}òûpæŸRÉûóÛ-™Ýÿ›è8~DÏa~ì÷ÃzÿG3ç‡Q|N­øÍäýsضDzÝ·\V‡â^>ÞÉì==,“}Ÿf*ÑñþZ d÷ÿ±d5›_AþU†Cß÷á¸Ö›±û¤¼È ã'œã÷¹;´¯®’œêBõÄ‚Ó×ì&oØkÆŒ[Ln½h^^Ìe?ÜÎÞ—jÿ1}øãìô“ì>ùcÚT±|@;ŸákÏv°Ë³¬ÈÚÃóÓâtTÜ­ÕØ:_™Æú<ÉË/ï(þ“S·^0½Mé qwIíaô9¥]G2{/ñêÀð¯(¿_8ã'F¯d~ ÈÅ–Ú—_úšÙû‹´n_Æ¥{¨Ùxò–tNbxÝc ógyA¬?‘Ëugëžú’éyÑtÖ‡Äå©XŸ'—eþŒéqzî$f§/ºWQü"WºžbzxÈ>ÙwÉQ37z¿œU¬ÞÄ¥Êê³Ï¥} ¥¿ûâñ²€Ã k0;Ê0‡ßçšGñƒ+ÒwtexÛâ­‚N¬?€+ìXß®Æ*f—¿÷b¯¿Þ÷búþå¡^DŸÿC÷ŽÙÙ÷úÍès?éF¯5þ"ÓÓî“kþ0Ú—âÈøYŠèúäM~6'øëô+Çý>-I¢÷)öp¥ã/Žƒx£ãÚàw >°ºWtxÇâíÃùyeVûŸQý˜ž~û/‘êE´Ý:j·ä‚v"[¿ÔýWIò Åë‹£r]ŽþMbr\Õ—}Ÿo ¸jÍ•ÄéBèýŠÿõeã+oçFí!¹øûä½´¿ç/—öÖ7õøÝ´áP×H¾çÇìà͆ŸI¬®1bg"ßÛ^ÿ>QÎÖÿç—BŠ—äñÈÌ«Ò$¡Tï¾Ï¹N¯‹ èÏôþÛ%_Ur¿fezôkÿ5Çý7±ñÝ@ûVJ¹ÔALŠR·»2^hË¿$ªÏy/²Ù8²3­™~&ÿ½Ì敲KãJÇ‘ž6™ÙEòñ“ ?ö¬Ëð6'0ŒÍãKú Žê{•4·ŠÞ·j¦¿3ÕŸ?Ÿ±ß&½c~°ðã7¸ÂM5™~ºÒ<½„+ÚrЕÅ?=~&²x}âŽÚÝ·›ÿÜèï^Ÿ¡}5É%—.Ôþ3ÅMؼ#ÞV±ù>ú úüffÓÃBË)L/JüF~­gõz®¨)ëäŠ.³ú9û/—njNíîÇ“) ~vÚH_ß.ÛèÊò#ùR*PîãŽÃ"*×ì7Ž$Kû±ßa]Ê ÿqO¾/âÇmCL5 û>z-­§šW_ðül©ðó%§ŒÎ,ß®QËÄâž  U,žß§zUº.BÄò;Ýù0ŠÏ™vØ}3ÎÛ:Ó×ôbZ÷ÿÇ%­Œ azÓÄ…­ÿ÷n}DÌÎm:1¼+¨3‘ÙÇïØç?B|“òb Ó¿´z]˜ýݧ¼ì_îWÏFì5oûÂ*æ'ç¶e8æ´pƒÔ ¥ëù;¿~"óOq?àº9ÌÞsë°þ.÷Äûy_û2»É¼1ÝÄüò{6Ôìy grÝCè82êƒΫ óÿ±™á××_¬?„ûy¯À…ù‹’ÿ¯ËÌ^>,¥üB îÇ÷ L>s]>¥ïñfãJ™ñ@×…}ÿã.Ô'²œ9f¯©ã üùÇ•Éç‡G.“çÇ›ñlÜ߆®a8›t¨›×GÖÏFÞæ_ËHr7æ'ï¢ó/&?Ã0ý|±bÕgò¸0Ë…úÕøØõïé>?Ö,à¨þ^õÕ…®ÛÇ`Ký¼Äûމâäô%&Æ»š°ñ'G,ƒõŠ>M˜}~Éf8Ÿºw“C~GˆWsc8–ÿ2-”êwr‡¶Ìž [³>.¿'ò‡@®EEŸL ×M8žns€áz²ø£´ŒLN)5f³õÊú¼žÙÍ‹°žY/°ç¦g~cãNn¸§Ëäó³ÁÈPúùçΠŸÉLÎåû «#L˜@åd2{Dy>³ÙKyå£pïßžÑҌՋú0 ?Nën㯯 ™c©½‘ü]™ü}jUž[kÕ#ò©x /ÞÎ.tÞ‘­šQ¹$ŒÛFïu¢;Ó×(»5̾^rO µÏg§f&±ç.?]Z |uÑ;ëVgLÕ3ý+è üA^ì†y)©!t^E[µntüÅ}Ø_&áòÖîgÏ)ÞëçÆê}ƒ¯…Òû§N¬ÏäZzøÍ/ÇòÃèõ)V´—ç×aöžü‚öÝðör*ÏŒÊ÷õ‰ O2ç0cõ–ݬÿ‡«¨„:ÙŸS®”Õ8ïJç™tö¹X’—â@j¿äÍ^1Óƒ\ ØcæÑ©&†wól˜½æKGsâ:²yåNÊgÏËù<Žù‡¼´}lœ¿&Ý`¸’êfÏôàûÁÁIŒ‡¼ŸÄÆ?®K56aqÛÝC&æ¶£ãüý„„³¸N”ÃÆS‚u¾â¿½Ûöx¨¬8Ö·Æå\^Àp'_µ–áRf»LSƒŸ²uL;ëóæâ;öùË ú|’Z¶‰¾'¦Å7Bé|“.˜<êö;S»½Z·ˆéoÁ,ZoåóóýÌN¾¼(”õ¯òŸgº±þˆŸ]X]Bàê±þ?îû{Z7#±'i»ÉXhÆË矨†E• )4P~3‡Ëž9ŒéÇŸ…ï]ÿ4©³£OfÆk‚~ y…`‡¡7LÌ­0²uÏ97—É+%„í¯âòîÛrôþYkï2ü+ì7 ða(ð 9› ~É~Ö‚áIZÍë":ï´ÏQ„ÙyâçyG¦YDBñFTs2ë;ç>®,4£øøPâLííV£ã¡¿¾èÎP|#I=YÝ’lÙÏ™úùTðy·é:q©‘þ ¿r§2\H½Mûàøu¾Gëá¼ÿ˜›ïLåñS“Ãô/uÂðÑ 6îÏY. _>mB×ã­ã7ú»ä¾ÿª þýkMÅîƒ3äƒ?%=Øü~ S1üJV€¿ú¹ÝàÊꃭ+˜e]éïBåñK±éí¯o˜\?mºBâ$ˆÃ2ͱûæ-¥qxî·”íKâ²ì› ½éFýü¯~‘ÌN~nÊä™zì{Í^bbz}ïŒ;?™É#énfç?ʪ˜}$‰fë˜rÖŽá×Ë´¯ /_Þ¤<Û?bšà›Hõ/ó¿? /~æ±ëR:39ç ºÅp={9ô¤½µ`v,øýÛX?—ÕˆõÅré^W™<ÒG>fr(Üuß<Í{‹¸¬°;Ó§Ð¥®,nÈ¡ûƒò¹üÌþ š2; /—Ñ} µ…¾3üÇýšñžÉñ‘¶Ð™âô©Q.lüooGP¹‘„á=øë›‘OQ?D^¶ôv¡qáã&´Ÿ¼|Œu2£ï¯†T²q|Æ÷$ót/öœ2Ç(g:^Á¯~Í™Îìï…ÛàD–ß~8âÌxÒú™~e„•$²¾ŸöÁTϪq"¯ÿzÇÇÙ³ý>;¨.“W^$Ôi’m²™þ¦ŠòÙs2à>¹G[ƒ=ޤý9õ¹üg¡ô>¹ÓªØzÿŽ`ý_\Z"ò(o®°ÏÓæD±uHóùæÂð±åfÙ@G¦EnkM¬n9žíWâò¯^æF„3»ÈIÂh“ûŒòÍUûH~ë!…£üøûZ‘’l"Û_Ìh›©kMÇOÒÇ2}ùuŸîgûŸ:˜7'Lt£rü0c*Ó³Ÿ6´ßΜ˴¡õÍ*®Ð âÿ÷[=9Š_é7þ0{Ëí¸“é[®KgfçEo Ž\8ú7òweVG½¸£v›íùÉï i §r-€'.œýT[ +kÈ ¦§éc~†Ó×ü“ªhûu5Ôgû.¹´™¼“ 1»(ŒÇºäÉl¶nQ ’X=Ùí.ÕgòõDCWŠg¤6ÿ$é~¦×—¦n eøà¥g÷OÓ³ü‘¼7ór¡óxpm ?®Ú$£° ûý½PšÏØ› ¼]ºÅŠ*§^‡88mE rÖ¬D–×/ÝËìü^˜Wõël¨C¤5þGèoÊbÇž›Y¾†áBVÄ&¿ÔŸ3AÎŽZ6ß$ç¿Ì¾2,ÿÒä³×ìiÀ[¥\íÅì9ýÍ%}Ÿ;{³×¬>Îì}v™G»~ªsÃÝèö¼ÌµìyÙEÙºgî9Ë~Ÿ·BEí®úyy+mDLn­¡N#ØÃ¯Ó=Ø:iAØ:yNzåÞDú>%üvNÞWfŸ+¾²õÍØIû,ªõ8¿ß­VçltŽÐë~¿)`rô2™n¤}K¿¾¹²~B¤ÊkóÈìqЭӧ(6”¥ŸØuÅǽ8ÖŠ~DèŸü|‰î;©Åý\cÉÖKX׌À-áÿ[¾;9ñ3Ó—,W{r‹ oˆ£)ç0=ÆùsK"“[Ú»m Ó @¾¿ÏÍ<|#seø»¼c{ êÎô$ßøÌ¢4Ê3ds™¯(_ÁÇ…—F±qf%¾31½ÎIc÷É)´bzó{Ú~†;yAƒ3Ó<{2ùfå €u+œv´êÙäÓ›,w¶_ˆËŽ e¯¦Ì$ºþ%7͘¾þéÃö‘q¿¯Bêï&Ál^‚¼^3Ï‚õ‘WÛuþÈç"Ög’ëLǃñþÿÔ£ÐeÊbzò{俇Odø[ØtšëB9äGý"Œï}?ï2±<{é7†Âx ¬ ]¨ }Z™¹.ìyYó .ò” “ôÖuè?êQ®Ä•B¼ž7òôÜaZ½_έÕL_³*Ô Ò—Û†2~˜'KuFÓü¡ÞûëðéÑó˜|~ø aßçö|-kd,³§‹™ÌN’g4cöûµÛÇý<éѯ>öšLË‚TÏÿ@Ü—šÛ’Í+í5Ôµó¦2ù—Ôfû¹”ç:¦Ï¹¯ç0}ú±²2j²uÎòtfv+\Ÿ6b=³Óô‰{™½'»ÉØü2ŽC>÷ÛJÄÆŸuì<=± üDù,fW‚¤xç1yýèr’=?µðaø<p†Pœß p?;±=Ø3ÝNNyd¬ã ú”“]ƒÉ%ç>ôåd7…þÐÔë7˜]¦7€þôÀå¼Ðßžò%‹cùT¥ä…òÌ«Ý?„êy¾ú„‰õ§#¾ç Þ¤oýËœÇÎïàÒºA= ï å%¬¹ ?È ¬¡/ö÷'È‹r㙾çÍ™çBñ,{s³ƒ²\gÚr Ð_^i¤þк:â‹òZ`?”`§ñ. 2e«Gï׆÷&àKS&ç2ýÍ ‚q§¥@Hº~[‡äÓŸ?îl¼iuÒÙ¼Rõ€»©Ë»1}Éýv÷sŒ=û]Ñ9ÖÄ¥=dñ5—1-™Í+Õìü·{!»>cƒ:œ­_?ºšÇç1À× ß ~Dا6%žSˆ÷²{6¾_c (u#àPJ]ÌOv%èÁ¯Í;®%_íÄÆUÜ.=ŒòK_î»±ú!ò#B¿¢p½ g¡¯Ux_òÎÈæÿƒ0þ¥úójüF˜rò‹¤cPJ¯3‘ù©,+Ðûß“N3;âÓߺŠoÍâL,oêÊö%s‹¡¿=å3ô ¤¦÷ª}ÅB<ö{\“Wæ-Èñ3ÄÝYÃUÌ.‹–&ÖŸg×´Š=çñÜp–¿Äuq¡ý¹*¦—éODZõÉ:RÏ…ñ ^Ê9¯ÉwÀ¾Ö†>ÆŸ?Ó.ÿ¨ÚÇÖAà[s‡uta~ÇXÂQ¿”eØÇÆ›cŸÆ®K¾}…Âúf,aãÌÜ u±ìVlÿ!—±÷ÃϼìüîGë&ׂóÐW’¥drÏ´É9§Û-6?¡Ï1ûðñ¿‡ b~ ÏVobõÐ5ÅáÔÎ~߇:H~(ô½åž½Ìí–Èx³ôÚÍ;~Ödë—pŒÍ?o Ôçs—›ØçB|W´Ô)œúíÜæl%—9êin~ù.»r%ÃEÇsnÞbóÈ«Íöãs©€Kÿkbxšo~È…õ‘âý¿žÞ2É+eOkfgEY´ï ¨:~L³t01ûG~-É âFì+å¾_epc÷Á¼®ÄÀöûýÿòB!+¢ëV˱É9nFŸ¶¦è¥—» £ãÌÙ þK¨÷f®9Îä‘Y›Õݹt»ZL©`癡ÀÿdîzÏÖ)½Ô‘Ý'»ã,6Žô,Ú7ÂûUrì°JÅð*Ǧ'{Í»kby‹d¬Ó=¶¿œKöÈô$eðiiÄl©-f†2~à+ıB¿Ø/Ñm6Ž_Ÿ,™’ƒ ¿÷g »úrxNêðßBIÚlï7ו&ºŽ‰ÛÌX¾s.‰>/£Ï6AN*G¶‚ò‡²E_Ø:¤Gweó«8ËÖ?gó6fÝ_sL_š@5}Û5†ûM:†!ÞËu¬”,O¶¾™O ßËt=ÍÖKà ~wýÅæó»Á4ÀÏî´¯žWÊ þ-ÄÝB<+èGÊ(èûæ“uâç´!LÎB]"Åöße,‚ýB)óϳñ'׃úȯtÀ³Ÿs ¿WX÷¼§°¯BX¯rë­¶¿üCåBèS­Æðè_!äÙ­_1ýî/ÄïÙ–ïàû¨£fë N ðoy—b̨䌪<Äø±ZÛ O]÷„?ãÂ+&ŸŒ—ËÙ癑ÀüŽú~ºèñEÌÇ»-aë—eËæ›7úáóf4 g~·&íKÈçòo•—BãÞœêx¹è›˜£yBúOÈ39 <†€c…»w›±ý&9ÐW—ô0•ÙA᳑„áùÌ2ß0^‹+²ºCE§ä$êÌL(à™g&Ãþ™—OL…~“¬±ÐwŸóô2í6ìÃÌ=Þ$äãLJ_ÿ\Ö“éOÆè‡Ê´‡ø%7ö—dsÀOd…Ö5ûß¼_ê¶Š&÷#ÛD ÷×@ŸuÚÞ†iww0;æ‘·ö• q?ÿÞ}›]WgnœáÆê£Ó¦ò¿·6þ.EÅ^Ö7H*6°s†È_ØçD*P^3“TÖ@åL*Ó¯E*õlŸ­È¼î=ú¹¿Èì$;LdÞWNhù/çÏÑ×»Øy ¤b1Ów‘E·é®´Îòoó+3Ê{W¤M¦cYh™~?­hÝ»TîÚœHëXϳ}Säo1˻ȿpç‹Ì—Ò>óš"KÕþ}¹È|-ËH•ê«UƒñãuY,SP;!U!5\ÙóÕæÇY[dþ€ÕýHåŠÙüu DfŸaüK¦Ñu#¥¾Ë]èõ5õpûß×›æŠèskÂþQQ5–U´f¯s¥õô?7i…—½ãgþû|‘yÀ5Ч¤êíÏÈYÖ™Fï'²øDûêøqËØ>m‘yålþyÖ"Ëv[Ù}ÍÚ”óò¨#ªµ*”ÿÞJdù£aýÞ"“¿#2ÛJ׫b,Û?S=îª*ö‹.}(^ŠÌº¿¯¢ë <ßÂÖ¬DfÉ,YÄ4寫™=±çàüHå:¶ÏPdq¥ Õk‘y!ÃGRÕ‘â´­0/‘Y„™“ÛLº·TdÙÓä®Kýűù•²}>äß)†Ã¤r´e8íûûy[ÏŠëM9ºÎeWY¾Dª&õáÇ™'2?ºÖ…ÝÿëÏ&UþP»™=dû Iå£xþóß"³Uì<¯jý33cç$‰ÌŽ1ùˆÌ;ú±q™7:L¯YœÎ~—Á·YžguPQ-··Il|¶µùu)™GÒþQK‘ù‡X“ÊwŒ$U­5LîÕë¹%È®ï¿1Îü<ëŠÌÖ²óDf Ù¹M"óŔǪý?ò6æS<Õ°eü©ÈüÈŸ#ªaÆ£&ËïHe«›VÛ™EYWþ¾È?W§‹¬ ¡øGþ…÷æÅìœ5‘™ïWD–û\ØzÔØpêù»žÅ¿äßS†äŸ#Å+R–Ð¨Š®CUì[6ŽZ_X"²ìVÛŒÉ=õ"ûܬåšöùŒbÿ!ÖG)²”ïÂä½ñqÕ;”;©t§xWO°[RaÉÎ$•½Ø~‘Ù2¶Od&cq¯¨Öa7úÞâ;Cd¾~àÊu?f/#gð÷-!¥Û†sTþæSiXm‘e*;ÿðæoˆâè8,°>J‘…ÅIWf§eáT–ïØy¢§Ý)¾‰Ìlfˆ˜6L=ƒu$ÿ£ý«õEæ+޲qX~fçT¯o͘¹nÌ>ð¹–MΊ̞1|pATã+;7Odq' p³½ÓKËÃnLÏp~f5Ÿ¦Ïˆ3h}µVõ<;Gü™Ç™;Óß zl>í­€K%à¢Èl·xý[ÛŽÉÁìïê¿D.Aõ΄Sù ¸Zk Ûg%ª1†íŸY ¥¾£†Èòvkx¿œñûÕøk¹‰ñÇ"‹æ »?ÎÃÜc;|ß×ãøÀôºú~φÐßYÈoTQ=2‹eçuTã˜`Õv< ôÌâÛ †5.îdvn¹?™Ù·ùßÎTÿHaýò"óþÏ«ØúŸ`ùœÈüÜ&X§ìœ+‘™®!•—È\ûp·=ÛY-WóLÐgKO¶O_dæ]dFå[5½2”ú ónlÿ¶Èü';wŠTƲ}(‚Þ‹,7IªÄ´ž‘Mþuœ·êòÆÄä~˜+#ªÑŒW#ªáÈøðjPCËÎÛÕ\Àú#Dሃý Ùõæâfìý®q€k‚ßÙ•ÉQ}ôÍl;'–”÷fy"©JFü=¸ôì”üý1™úg‘ù²! Wÿ_gÿUõý “̤'´Üsî$€H!3 Uæ‚PŠˆt$¡‹ô"E)鈢 ‚RDi‚(à\šˆÒ‘&ôŽôys÷gß¹~ÿõÖ[y®åºL2¹§íý9ûì³÷g· x"=$©.ÉùdOè¡“³ÿ® /ÙN°ì ÝY—î ‚rèF|L¾‡—œ$‡Žxâùò壸oߣEæ¹ì²îøm©9¾Ç%ë¾_Tw†Å÷¤¿Œç¾géÊ÷ô(ñ%øžöê”iÞO?{éoÝÜ'Ã$þ*=Dí·"¾Ðà<òû}^ºk˜ã ¿íüN|œö>`µÃï:€ò­õÑCKýšGûLIÂ'߃Ù:½§Æ·9¦ýÂöŒïÙ5Šïö=½JùòA¹9\”ð'ä(á¥5ÿŽùž­\oÄrbí§¬'¾üeã“M} þžíןk]mé¾EYKxÅ8jáHȺÏÖ‘Ä;ê{šoÆw]ö=.GüŠº³&é‡Îû»ïQ?Ê“´ö]ß3âĬ},¸®O—=5çIv>\›ý*ÉMx5­CHCÊÇ îëÏò«dšëùÒÚ<²ÇØ®{¶…xÂtײpÂU×…~´ž¡­’²Í~<éM÷wºs ñHêa¡ ³ ?yÜÎNÄ‹ħ¿?Fp=ò{ïË$½tNÐC~%d_þG’ÍqYvøSy8—ìØ2Rè=¼Žaà×ñ=YH~iÝ™C|£ºcSÚ§B²)®Xwܘýú÷D`üqºëñæç7$ÎôëìÍÊÄÏÜ׃ˆ/L¯džS[¸gãBÕIÉ´¯½¸ˆðÅñvÏs=-9-ú#ý<4«X.Ù Ž-g¡§Ù{EöÏ¿#Þ]=´+å_õ=ô0åsYvaP/­}/£é‡½­‡L';=<Ã6¾AôÐÇÏhÿ³ö#gúã<@÷ÞzÄgߣÿk¶šrnÙKº+j¡‰_¾ûQî{4!!…Î%¥KPB†¯¯î¸û!í«–Âx܇C¶”Í4Û «½ŽôÎÑçph>Û‰}wøL¹cùµìî œ¹æ’Ãûše¯bÿÓCê÷È õ°ôÏ!g_"Ü ÚQ YôóÝÀeÆg{­}‚õÝq¸mÙýüô=ûð%êç“nÞdÓ~vt¡xÝѾS²¹oFÌ}æÅÙ»V­Kö»§­w%›í8ó?E8Þ“òÇô°÷‰¯E{‘ü/Á}Ùшò&}OsoçÓ>kÙÇËLž‡Îè8—:»ï¦ý:¤ÞãüŒòüuÇ•ì ’sk_·ì—žÄ;œG–g Ç}ù•K¥˜Ïg}Ño ßYîôÐüÝ~¯­ýòéCÓ/,ûÑÂß“ßYÝ”w¬‡¸*§Ð¹g åã÷•àüW8Ië⸖LóÆûHègz á×#3êAÐngû<¸?[í8¾&<´íàß¾'ܵÎCÎFƒ ï,;ßõ9ñªèÎöo¯;öoÞÃþò=ûò«l:ïgýàó]þ,Ê—±p\w¥PžeßZz<ç9*á\ãü çпˆ—,xNwí|Mã´åöWâ)×C‰Ls>]ʼnŸW]F|,vÿ–‚þYö/Ûß–³žøž`;£.Öï‘›âìmûz¯‡§üß³×a_Sü}PÎXÞ}ù-O¡saOI.Cã÷çÜÈ"»ðñòZxkù!‚ý™Jü–º#úÂûLpßa9ö=kÿŸðëkÙŸº£©æ0õ$ÿUâ êGh\WZÆ5=d6ñIëŽBÅH¿BN¯î|dæÅXv¸ïY‰ßóÍýøéjâ#ò=íJ|¾gÏîjBüé¾GW_÷™zù¸ìåÇòLùxt–ø’õðη¯»ZãæÈ {*xî ëß³¿AÿäÙA-³òÈÁþ<7ðy9ˆ¡‹a:oží—âóVH-âo·ìp߃)Ut²‹Þ¤x¹ }l ,?Ë“¯)Õ÷„ò4¥:ÆMóeáMh“}¤¿Ö¹Øå‰EúÊ8Ïö©îìeêSP~ذÞç{2õ;è+ÖOwE_ÅaÕ¥p7¥¼cÃMqÖ ·gT}V͸ÍÀÓ ÞTw1“ÇÎe¸«]É4ŸÅolñâ#2Š7NòÑç¯'Ñ÷Š¿kòp„ÅSÍ{]—‘´k«©7FRO“Îe$¼WÄÜAàéLø@¤ÐÏ M3ñßHL¾@—°ãQ2}¯*x^ EŸ+5Φþæ{ÌýÕp_/tBÝ!)Ôïëà‹Oj³×Ä5#ép+SϤZf|a¾‘;3—~MqžFÒËo¾øý6ê‡;v©‰çFB÷ϲÍßkçrM<0ÔÓ¿d›O-<êSéïծċ`$ä¡yHÆ„bËh>Žƒ=á=Óf$,ýßò¥¹NFâð~'½>ý¤ƒ¨ÝÄ ]è™änHýK»Û€·Ó=<¸îVä2ÜQ”Wb¸“§\¸Ó)ÿÞHH¿•gö?!ãKhùOèlæ“úý*¯s³±YÔÏâàñuÿ™dâ–á^7œúëþÔÌ! |ÎõS?דb¸ë@¯]Kóþ¶ÉKd¶—†ö_<‡g…Úôž„jXׄ¦û ¥‰?Ñ(>¹¨Ïü}ñF{ óï‹·Dý-QäSÈSv{𗤱 /FZwçŸÑß.ïçPýAræÎEóмÊÚý6$?îø¦~‰¯Ó}²‘nâE¨‘Xá2äî×Ë>Ç.3_3 K7S{ Ó(OÂHLØy(ÞÚD'íÓFb6ä(ÑÓ‹ô61çµ›põ5Üý%ôfø Ò3w¬¯{$ø•Ü+›C>º.ƒ¼†Ó½Š‘[Žä'Qý“ô51|± ÷N£_÷îeÒü^o‹þe¼ˆ- }T(¿ÄО5!9uÇÜ&½Õ >‹Ûõ&éi‚ïµ½À‡~kh> •€<=©y¸ü%ä&¼å ±f^hà{éà3OˆÎ¤yIxaÖ½ä,š÷WW!_aí!O1h½“Šã}‰ÛÐÏ“<i$Þ[Kó•Tï$7ñJqê_bÅ~Ô_ye5Sþó É·Üû”¾§úè^ÅYà–áàß–ñA.Û€÷8a@ Òÿ„i›H®zõÁÏÝÀø[6G»‚ÿ?ñ}ðI'.ÑHn»\¡yM| ¼áI倉ýÿ"ýH¸ò„ &OÂHð2»¯°žµ¹†þtBÝ–„ÈøÞK©ô÷Z/'Ö)r+á–º¿2ɹú/™~þ2äW«X‡ôG«H÷1F⸎„K‰3Àßž¸üï‰Ý)oÀ(ÞtÍkñ¶_CËŽÑINze’ÞiWV¡ý3dWÚíE$7ÚÑW€Ç‡ÇÚGà1NlH÷ÀFâç+!§£6Ó¼&6¾$zKÑû'¦ íj`cŸÒn9I¯µÓã¡1Ã!¿Ño’žh÷œhëÀƒ¬õMr§M›ö5­1xýµr”Ïfh)¨K ¥Ü%ùÕ\Ðׄà!Nh^ÚÄHðæ&̯}baÈ[âØÇ„7H®´qhþ´· ŸïšñVf»;Iϵ6¨ƒ¡µÝH¯}œù{ýûÁ÷´¹ï|CóœÛpĽõ~ê ®SBsð'4ù•¾—00†ÚO(ÿä¢I+ÈçK¼_ûÀ¿›P¹(ÉcB‘ª_…éÀᴲؗÂדœ&„ö¦qºÇÿDòì_’ä>ñj ží§Ñú'¶2ùðòo°\9Hë›ð{àÎʺh¯Ö-¡0öCw.ø Z ŽI‚—ì#!ñ&~¿ªáHÂ{¯ƒ+¢_YñÞ‰/ЋHÎÜ)4î4ðйς§Ûm¾–ºHrà~hæwæ÷ôJ¿ûfžNòs£)æµô;±/êP%”yûÓ®4N÷~ȱ»ëÇ„Wî2¨W‘pp,öÉŸÁ󟰹ÉeÂr3>*ðì žë„–ä0 ¾—ûEÔor·¦UÃýêZ'wÝh×kò£Úé|A‡üqÐïT„œìJóçþ‰øi ÷¯¨¯à^9óøÍ5š/÷'ÉQâ´W©ß‰­ag$Vo‰y¿ÜrÝtý<áÎàÀ[°?’ªüMøŸ”µ•æ;éÝ_“â?!}Iüë:äâj=ÈÙ̓Àñ‘•!‡áŰ.íF¸¾r_BÝ ÷=Ô‘rßÿ€p¤ØCŠ3ŠöI£ñ}uvŠüñ€äµH«¤—EÞ"¿ŽQlê;•èԓ𨄞èâÁ‹VâCðÔ—¨úâ}Èï`$ „ë^ÄûÚ_°ëÜÉ¿À£ÚÏ$Ô·JŒ)ýœ¾”p8ñÓèÓÖm4ÞbñØ×cvG>zÅ ÄÇÞ箄ïO`½p†úŸtõΟ&ÜI|°€ÆŸnо—Tv{R=ì¯ ¿} ¼ÿ¬­wÂGi¿Lø¤~ß õsÞ{Ïyô÷2ð…¹cr‡Ç´Ÿp¾Ò²4 ­ë$¿Ú¨÷hþâs–çü=œô̽¼¸‰…JCo÷±}þÑê·û.ù#ŒD¶“ÞêDýJ|ù}èY¾8¸ôákÂòçðyôešÏ„Eh'aµ™'À£eŸb\>ÚMè> ¿¯wô"áí÷rèçË’Ð ‡h}Þ<‡ßÇAOŠu¤q&”æsD‰IзRàéw×¹Ïíƒâ.–‘LöeGÜÄ{Ý&Ý…ùœVx<« Ó=“òqûÊRÈq¹É„7îk;JÑ{Z¾›ErÐ×ä½ èUßß»`§&¬~ã|Äç°ß†cûLÆ÷¾A]„Ieð¹¯Në›0öo´<ü}'Ô­r·Áþîú.áž{Ã7À¯a_>~F¸ìÎãï?¸ƒç¿/CïK¯Á<†}Brç¾yúzê6æmûr±_$e­¤uMZ…óBRñæIßJ¦ýcÙVzâØ=‰¯ôB¿Ûwź6ýøÐ¶Ö¿ô6¡Áj7¡pνu”½¨Ã©¬…]¤l¹DÄ<$½’_µ1ÌPg✣†§Ðü¸ï¿}?ÿ€úí>ô2­¿"*B?6º“¡÷¸L¢q&„ãüœPº*É…ûò‹Yôû‡¨3’zî¼ç WÑ–ÉØçxœ®§˜÷ÏŸ8¿uÇüÿ4O'¹Û†}ÏÝoö‘Ô!ÀoIqH†ö„øÈ muèëîÝôüã5jG›;”ÆSÔznEûãœSôC3ž2ðóµÿέ؇p3) õÐþ.GãI¸Z„ä;1íOÒ«DuØK=ÃzløWiÉkbÈ$’m\2pbÝóÚ̃¶ú«ÝýœpA»x?oÙŒú™˜ÈçSñô|3ìæ„K‘4¾„“5¡ßWa%ìÁ¸oàü’¸±}/~>#ñW¶kr.’¼'œd?ÆÃ(èiæPÈï›ä¯ œóAïCwÓ<‹¨ó(vÌ¡uß-§õMÊè@ë“x û\bŒ3±Úià[OÔóK|£­[Âm“·ÞŒ¹D¼Ýeã;s¾|WŠ™uâB}Wjâ>àÊë§ðóO‰ÿÎwe?Å_ú®¾¹^7ãùf;̺¡!þQ†Y—ÕåëKù-¡¾©kç™÷ãÙefšòì›?â5³Ÿ¾EUZù)?âͳ£(.óI®©oÿÏÓúýÿ}^heÞó„ú™_Âþ(ò~Îÿ²5—ò7¾B^^ðÉ??Ûügˆ#?óKõ<ŠG`î'Oýg*>4åÏþÜ´p†ùÌ;`Þžs:(®»óoô½Ü+¦\æÿ¿Ï‘à;ß2"‹âWsÁpnº–eþݹ—éá?»ô~^¼¢)_Áçí4Ô÷¸]Êä{¸å¿õÄäß‹ñß.\=ËŒÿ~æß[ß¿ñ÷ú\Ⳟ§É_뿱|üÿßž—×›<ð!þKMŠÓü\ø©}>wñÁg›õ þÓ™ö÷Sÿ©¹”×뻺ˆn®óµRæ>éô]{ÝÔÇßµy&ŸÝ3ßõ0Ê_ó]onú»C}×礚8à;|Ú”‡pß‘¥f›þù#Ÿ-5LÿõÑWëæóXäN_}Ç~é3ýîǘçâ*ò¿|Wü<Ú‰ºBrvm0ñæø®m¤üßµKèÏõºÄ‹â;<ûh–ùÞÃ+ˆïÁwøMâóñékžc\¾£ó·ùÍvޤ|YßÑ à§:ÿ¡y?XŸÓ…°nŸƒÏé\™Ï3IŽÖ•¤Ïggr}<}ÿþ|ÄÄߨõ™¦ßþFʧðÝø p¶¿vcƒY?åšïÆ-:÷ùnVdþŸ¡ûH.T9–m¾÷BHM’·ó“žã¡Î4虉ü¬+µwzù|.­Ûå àß¿¬‚¯èÒ¶;™´¾_#Où⧨½ÃÌ{Í'ö3‚ê ùN_çßSG~`ví|ó÷JPœŠïôBŸ©?¾Ó?ºðäÏg +´þg>nâ¼ï̘B†y_pfâ¥Ï$Ÿ…¾ùÇk}>}£;ãôÞs¤g§WŽÎ#y{»ˆ©ß¾ÙŸ˜~¸(ßbß%ZŸåÇLžŽßÏêžøÏ¾Hr¶©&ù½ƒÏ»¯B¾‚Ï>¨ÿw¿1y‹ùîþJùs¾»SÜ€ïîå:ñÛT¿ä¥Bà>üg ÈÁuäÏ[ϳkÁ£v6< 7šQýHÿ¿M"H>®‡7I¡<¡TG`=Î]øªôk Ù¾ “»e™rpaÅIø.<(n®¯ïâ»} sü2ïÁœ¾K/Qþ„ïÒCÓoâô/™ÆWÿÈ‘æþà9=äü›íM|ñ;NúøU–YGí¶ÿ|£æ4ßçK¿’BrU¤)ÉÅ9Ó]dʹõüÒäG}f}ö=jJ|ä¾G½ˆßÖ÷hæÉÀ<Üð=ÚOy;Dž)ŽÁ÷ø}ÊOñ=þøU}–ïÌ3ãƒ~Ñ,ÃÔcÿAÓ_RÒ·IeÆ—lžNü޾-‹WÓzlÉKu˜ñFO–ŸˆïÉáO gž:ˆßÌ÷´¬’eþþé»tÿì{:Žêøžn0óRùÿ©ÝÙijQ6ñVA~ß±4äƒXrp­ŸïÁ0“Fñ=È!߃•7Lyð=8§æšúú°œY'è²ïaI§ŸÓÍsò-ÿñ»¦<ú-£¸ÿÑ/Úšãðù‰îgüGS¨ýC ðÕn„ûyEÁWb=ÿ™V•ÖáÿÇÓ÷°ÿð\¯N ÿ¿ïa¶É›zÕ÷p<Ú÷ðñûÞ¡óžïQés¿ØW¼ýûœ>S/ý{ÿ ¿ªïdäwï퇼bë¹g,ñVû>¬ø+éõ´s×’Íx’/ë˜u?b|Ù¹nZ×Å7̼Èpß ÍäµÈ÷ýTd’Ïœ‡m“òi?Û2…ðs[}ð mY4!ÃÌgÜ|”âMü›ê‚/gó,âóýóCÙds|y•6›‚çËÛýàÔÊ;ñ~u­9ϾÓñùûκ§õ;všú}l–é_~è?]žG·U&|>šeúërÿ¶ùžàç3gŸ§y9ó\'zÏé•å?„|áSçÓ:æ­_Qn–éÏÉ÷yî®Nû˜ß¬_é;Gõ|Ç| }>v‘òª|Ç1ÛñX»‘Ææó"mHÆç‘f=w—ÿL)³ž^ˆýüú•\ú}]äýÚwI ù’þŸg`êM©M&îù8hêåSÿüðÆ)¦N;mêc„¿ÏƒÕ¹Ä§R‰ò}GRMÞ÷û¾£Þº¤GÇ–ƒ§ìÄ6—ÙŽïÕK >nX“Mû"?½bò¬9}Ç2ˆÉw¬|Ò×£‡‰oÚw¬PCzÏáfdú_Ú‘iþþHÛ‹¹¦Ü]ò=}>þÎ|Ò÷óþ4Âwòé×}àßññ­d“Ÿò=fÝ¿Xÿf™tG1ÿvÿ |3ÿÆzþáÆþh}¾:náÔ•o0¯—/šû…Ó9•pÓi;øC‚Ï…„SþëGÀ£÷oõh¿ü·GhÖ|~PŽ~o=OÝ]KrpZ¹âûïçS ?ûÿy¶#^Ý1`^Å }nÖGq莩µî8LqzHØWYïQõz6Å%ôßõÅlð^üüÃv,ɤ}¤ì¶ ‰¿R?¬çù™ÈÛû;‘ì,ÿö«’ÍùÝï/ÂÞÏ.f’~7 ¹õïüȼŸ‰õïhÿ™)÷¾]ÍÌ8™(ßîþÄÇíÛsݬ7RÈ·wuuç|ûzÓ}¬oߪfù¦\ìÿÁô·Eø£ú¾'©®˜ïIâ‘õ=ùÌ´‡ÏcTÎ÷ô…í¹7öêf]mÞðáÿyVF]««Q×I_¯œëÿßßûŽÎ2ëhæûŽÉ3æ¼úNT:›aöçd$ÕãôýÓý“Qf;¹_ì!üÊ §:[¾s^À“÷ßs7ˆÿÇw¾ç0ÂÓ ^Ó/â»B|ø¾‹s^"ü¸•OqÍþ[+Ág|víHx~+¡†ƒê«øæç˜rÃ?÷íœz?Óœ?ë¹+ô7÷|{jšu·ÿõí}5ƒæe_èÇþf|Î#ÿÝÅk ÓÞ¿›Iu;ýw+¢~Ì¿wfSÝ£>\wá2xåo×2y~ÿõ¤OH¬çµí ?®¥ "ý¸rü!áÆ•:}èç—œð›ß;ð•’gÊÅþõW G÷Dv³_ê¡íTËÔkÿÞý&?ý#ÿž'ÄKé;ø.åaú½D<¼¾CÏÜ$ýÕœß/ųûަÈ6ñèXÎvSnü§.Ò¸ýyÆ—$×Á§B~Ïà3wmá?}[G’û¶ýÓÙaîÛß®íȬjê“ïÏ{øý®XÓΉöí~ˆüèÅ/˜yDO‚xùý´Š¤ÖÏsÚÝõÿ÷¹`¥îûih{Âûµ«s²M<_w‰ü^¾õ‰°‡7LU3Ìö­§ß˜'Íw´ÜÛ>ÂϦeIŸŽÎ5ï8xÈŒ ì…/7­g{ò3ûΉ×RÌù<×Ä—a¶{®Ú=7Ò¼wvøÎ—<Êüùù®o‘|Žú î7L}ÿ,Ü<¿ÜòÏ:Iñþ÷W˜çÞ0_¯¿êÓ³ý~“4Î÷þÌ$g³¦Ð>s¶_Yš—à³2Î Á§ç”3Ï^¦ùýòb)¦ðÍÅRÔïoŸþbÊoYÂvƒ¥³^%=²>¯~Ó̇zêû3}u¾9~€óÁ_/¿‘mÚ•»¾ ^&ßîö‰YfÿvmòDúö$›õ•Býûÿ¤ùôï[bæo>õïfú£öK1s àò!wOE¾æÎžæýÛ}߯_L£÷[ÏõaEf6>žeÚ¡þzÉ„WÆiªáÛœ2(×Ì×|ø¯9ÿ÷üÿˆEufæ×ȧç[òÌ}éÿÛódKóë¡ÿÄÄÉæ:û+IoŽýÜÎ ûãf ú=ïÇþ÷Wå`ò6Jßæ¾füC¬okÕ9òm÷&æ˜r¸ã¨‡rÓ·³?å·úölmCxr´õiÈ×ɪf;¾c™Ä·èãö|ǧ,ÖiŸ¯Nëè;qª]†©‡wf†ïΙ1Éf<àÝLÄ›Ý ÏJ1åûÞæœdÓ®¼ß€ê\øî/¥¼.ÿ¿ÎYy”¿œŽsƒõùz¶ŸÿÔ~ö~5…ÎAµPwàr1ó~3°/7„~Ÿc^&\ú>ãû¾žß©_Ë&V£q¯˜±ÆñÓ;S©ŸkNšñ+¡¾u MMœò­;üŒäètr}ïtÙ,Ò—Óú<ÂýÓ¨^ ïôØê„»§ 5¡ù:ݬõ{÷¡a´Î»b¿ÙUçÔ¿›÷Fqþ¿ÒÒ}¦ÝüWϲ٦œýÙê"øòÎü˜m¾ç”Jþ"ß©V”ïë;5¢¡>w>Mxü|p¦aÎË–õi~sÜÜup6ݯ™iòwloÆçÆú7©8?5ºešò¾ñäµ@?ÜöÛéâ-ÊÕE¿íæ¸t1ÃÜwóuñ ÅéâI¼ÙŽ.ÓΘýÑåTŠSЕ{¯çš¿W®’Ÿ@E*˜ýÒÅò×êÉ!-rL{DÜ"¾ ]V {`=þ ÅMŸÊ'f}ÓÀóø_yôýב_%ú”H1ãÅ*ºÏÖåWT·S—×(ÎJ—= Ëg¡ËUåLÖÕ!çÌõÓÕ5{¨]‘„øXõêvôs4âÅÅBªW¬ËÏçÒ{šwÃsm<õS¼€8J‘EþA] H÷Ósëô˘ú/Œ@?Tº_ÓEÌ;ÔOјêè¢Ð€lú;Äé2üWjW<3ãüº8{5…>GÑùTWî"oKÙež‹Ât¥É<´×]Á{·Òý¿.K“}£+ïì0Ì÷(éܬ+ýL>ŠÇºÒ'ï[Dö¸®œí‡þé†q´ðкŠï“²¨»y¾uÌ¢u®Du¶uMõÏuYçGôw¯ËXÈE¬É—˜Çúù¦Üê²ÁûÔo¹ñ®òéâ|jWüJýu©~´.~¢{]]FdQ?Å ª;¦ËZ¦hnæeù<¯Ì!ù57äšñ¨²K}zœAõîuÙÃaþ§«a¨‹ÙJ6­Ï|ºOÐŤ1øû"ä?×åsä‡ÑeÆ»ïÏÓÑO^Qeô yhʉ)4Ÿ§ÊbüoQü‰.&/¨.òÏB>Kž$9Õ¿ ù#£Ý­T\W“>£ï©]Fb]rÇbþ]¹>jOÙ”Cýÿ£8­“T(R—ï’ÿN——è^Deç¬\§{A]Ô0ÏkùGq¢ºøá’Ný<Š:ý=Bñ$ºÚ$Þ§N+|Üàþ0¢"pñ0¨'Ú—ï·†c¼¥(?C—=áùñÈÇßÀy5æSz¯:’êéêt_¨‹Ï(îÈÞ÷Ö ]\Dó Õ„²ßÈÙê¢4åïЧ¹Ï“<*6`]=%hÞƒïÛ›I¸$Ë÷Ä8¶}ŠöÞ÷êÿƒ'Ößy)®I#ÞÁ:Xú8m*ðõø]Ò{ùä6é«Z ¸©f~EøªÞ@Þ±æ }.¼2ñÎ{Àßw%–u¡}QÜ?ù,± óØ‘îÏue(òŠ•eä‡Ö•͇©+/_jò¢õ”N^ŸÍ÷èg<ðêeØ_²òÂdwŠ÷Õå^ŠS×eþ jGô |ƒ>ñ¾9–E;bݼloDÞ”O÷Ðy º)ºr#øôÒ!ìYßâ}'º:°ïVnt}ž>+G;cÿ*š ¼)û!ÍW‡³*ùh]–¾ < ¹‚ù´Úa»*ˆkü”/!ÒÂGéÀ>¨Œ.Fò¥¼´ë‘…ñ(­/÷¿ùKy}|íÆuâite}y¬WÒ§X‡O¿Ã¾°Ë¼§ Œ/t6ú}÷!ÚÝrŒðG>Bž¯Z4–äVM 8]íN÷dººÿ3Â#­p[ÜŸúÄá•À Ù§1äk^ZOµÚ'™Ðÿ†èWü%jW¹Z“~oÙ/âƒò$Ÿb}úéîJë"_i€þN'¾.Æþ째x]FQ]@O±OËɬO+ù}'c¡—u`?ÈØ?dÛb´N²;ôH®‡Þ©.ð](1€'bú;•âîøþ=ä°'ìC1y²âG'ô¥Ã*Ì;ç‰ÞÀq¾¤ŸžÇš0®Ì$¹‘¯c>‡‘?2`Gë=–ql?ö\‹y=Ù ‹ö‡ðrô Οe¿×[õ°>Ï¡ø]–eûu÷mÈ+ËøhúoÉoÙɘŸÆ³H>å»È”cž@Ϊ}•ÿ_9V.íFÿ‹-%<åàýóØîIOüó9ÊÚ7ƒv¬e¿XzÂzc­¿h°Œöck?çY~gc¿©vŸÚ—·>Åzž6 '5L¾ùÀú¿çÁºÌÊ!ù¶ìyÙ¬-ðfïW†FënÙÕÊÈe—ˆ"‹H΂ök»ú4ŸAûæøƒ,Ø!¦?( o (¿Âžÿ«n’GµÅ+éê[ Ð^H ä飆xOUìCÂWò2{äì–Û31Ë.f;[T§{èÀ9™Ï èïÃfô ×ÄO¤ÇAëWdC3ŒïÂ>ô¿ïçYXG5çH™\ŽäYöÂþ-{²ž-\€Ï›Öcþî¢~ªu®bÿ+bžçíj?¢ý6—¥—˜ ;Yœñ`|OJaßÖ‹ÚU¢(_D8ŸÆ©TEþ±òõj¿r¾1Þûb¼÷ãcX—êõ!_ Ç<ÝäÏ7&b¼ƒ!Ï|ΑÿŽ#½ÛïGÄû„/²ìnÈa=³^U`|+Öaüó¦c>åv_1ýÌvî~Lã•ÍSiåmŠƒÑÕq~VGR\§®v\Žý¸-x«ä§;FÑß’|JqJºúÜBÚ/Õþ­§º<ñç)>\WRÍx¤@ûé¯Ç¯ xð žõ†ÏiJ>xˆDïF$×âØ+bJ4ïÇã°OÜÜŒuxnô%ý.­“,ý-Özíyë>•÷•̼Ӏ}íÀ9Iñ–ΣgoŠ?Øgl×ÅäŸ|e¡OkÓ>'_a}â`_ÊÑ|N=¹V_ìGz­.YHãT×OÃç)‚¾Ëäû àËBìwJ›V„ Jø$šåp[ƒæ«°Yg-°^«0e2ÎA<³æÕ§%E0=ÛÓ|ɦ=/•›Ð å±Bx!*SÞP`~)¾ONæèñ¹êÐ÷Ï>¤õ;ßc—Ñ|É:N< ß^æ%yScÙnÌ¡º7'ö=±óÌO¯G!y‘]±ËìdŒãëwüðïàœ"ËRœ³.ß$~F]N>Ëíà«RŒÿ™¯xœ+‚þ˜MÀYª%ú?Éäß ÌK>ÅÝ;,¿úRÈí·TgQOºû\½ƒ¿SÇS…®~W‰æU‹k›Cïù™òzrôÀ=oôá-ÊËÓÕFO/õ«8è{ëØÁ8«¶‹¥y,ñµ¹y|/²\kì£GpnUo†¼»I- »'üŠêºg´êxØ©êW8W«7ߦxT=ú<Þ—¸ ùìòöùô,ÖƒŸêzð/©.œ·U~„Äú=i~ÕÉ¡À‡/`¯«{Xïý€uîNñÁºœOñõzÒgÇSþû5½þþøMÔ¯)®[WTØ.”X{6øw¥Ö‘|ª•©~tÐ?)?¡<<].ïJÒoµ ?ç(ÞW—{¾Ãß—œKó v½¤õ£ü[]Û {!ÞÀ<»ë¾@ëîú á¸{2ÅQëîeijª«])O$ /:­kRœÛ´b•ð||Z9ø%´×ãjâÌSýº´¾I1W­«þª×,Ê¿ÐÕCµ×Ô‡eXnq®Q‹¼@ó›t÷ÓêØŸ¨_êŠLÒ#uæ!¸¥pîTûQ>ŠîN€Ý¤.K§÷¨—èþX×’+h/ý¦ÿž¼Añ`º»Ç±dÂö›Êj”·8ed‘ð:«i7­«S~¢žô>òÜÕ<Êѵú8‡hÃ¨Ž‘®}µòîÇùH„ýì^prñÖèϼßð÷ 2HÞ´O)ïD—o㜫¶&>=%:ƒpL«‚uWoî¥õÑ*œ€žœür¾þ¹ öWñšó±®íáGV«ú ×SqŽS ØêKØ'Ô.1$¿Å-Ál“o °ŽÓžK!Ü8X“ðH͇ŸPœÊÎùúÐz$×òÐü©Ñ÷ _! ÆùŠyÏ“ÖàÃMþ¡ñÈŸ(¾[Oì=‘pGÕkbžã/“ñ;äeìw„¿ò`’›¤Ø¾„£êk{ð ^u3Õ¡Õ5IùiA¿‹uŽ/á£z ¶=Ër! 5§qÏ¥?ï¤ù•‹à'/>ù)äëøíÕÃ#€‹:и´®¼Oý~8µzm’ƒÄ_qRS¼¼®;Bø¤^ÀyW{žò4tY;Œ>[çRí:åëòìöÏçÀíb“4_/ƒ¯B&f'&Â_šÜá&ɧ\X”æ]ÞÄý‚š¶ ¸q­áÚc1Öe=æ#á«pjOKżiݸŸÂî®Åø™v8±³VÞÏ'ÚÈ‹¶ ÷,nÇK4_î Ä£Øoá–á~Hî§<{gáóØôdš§M¨¿ÚÛ_‘|h_Ö$|ÐövÄÏ—u¦ùÕ¾í:Š>Ï/Eú©]ß™Væ æ÷#ìkÚ¶rø»‹sñû'8oº_½Aíº§ï[ÀŽå}~Q…¬ÿúdƒï1^öwkm%ú}ê äÆ:ïñ¾dÉ—5>ëçrs_à™5î-!Gp.Uïߣñk%¡/Ú¸×÷ðïhÛP{òü)¬CßyÐ×o)@W/ÿNú§5¥¼R]‰s‹¶z6á¬Yëp‡òˆuyü ð¦ï‡$'Z8åOéš Þ­×-¼W‡}§¶ã}}BàCÜlàá…3 W÷´·a·[¸­•pR;šû¬öxr´ÙÄK k£!OZ.ï·“Ñ{Ô à9Q»BÞÕÙ8‡÷ƒ'i<Ú«ðÛZ÷añ;€;JOʵý¯MïA¿­û4>ïªñħ¡«µá÷T?i}]KãR·âžQ=Gù)ýí¥íð©•àT?yŸÚQ7Á¯®9"i´Ò`?*eùU°ËVèçA=¿Vþ.¨C^H¦qnÜ<ºyS½”Ϭ«ãVO¶}üÛŽûHõî¯ÔGei|rbkàÁoðKÉÛG1Þ˜·ÕŠc^û÷̤÷ö¹„ùŽaùùByÔ¿Ó•±Ïìáû•ýë°ÏÿMýZõQ­Ç'ØÏ´¿FÓ<ºCp^t—"¾xÝ]9”úç¸ Ï.Àùm3É¥eOZzRú´Ãr®'¾]&ßO`œÚPü~1ÛC|Ÿ«%~ y‡ó•¶òðuít{ȽõþÚÓ4ßà|©Î$^]­±æ_‹ï ùõâü¨^ÿšÖz¡M¢ý„û]í_Ö‡"_ü¹kšy ÷W¤¼n]}›ò¡tuŽ óÖŸ¿Jש_'€k굥л!¼K<ü}çwõŸõ+äð°)ãqÆ©&R<‘®VÁ½ Ú†êÃpöšuæ,p~­úã¶­1Ÿ?ÃO¢…¯ˆ®)ƒùú׬3x>­Š÷¦|rç¬ó#ã¼üøœï8X÷ð²!Ÿ²ŽæÑ÷Sü±.7Œ#<“×a_ÊÓnÚ¯ÔÂý€?}ÍüŽ€œvÆù_íë>­Û½X÷ú¹q1ý½V1òbõÃgæ?„Ï-êkíñ´ì%ö›ªY¯“žË% IÄÛ¡«-úa½~ >›À<¢¿ZüHZ{>Ç·ZýíUúscôùýx¬®eÃo©ÆŽÄ¸Á3oãØáò)ôyÉñLúÞÄGheþÑI;ôB?úæ`æâ¾]Ûqû…ÜF¸ä® Þ}÷˜Çôù ø¸åõ¹$7U^B?›¡êÜ»©Ûà§Óä~Ú_,vrÓ:è'ë‹%·–ÿ)x.°ì·âŒ¿Ÿ#þH½‰û=­FeÌ_‡u—Oh<Áu°üœaoËoøžìWðýÉÇlUyy¥4†ÀÏ;w^E8±¾-ÙÞy ~hµ^sŒ{daàÏWû ·›Ì:ðþ(;HÞ´÷àg×&|Aë£-…?\;÷/áŸ[Y@r´s[²þ¬ÚEòlùi‚þšâ·í„ØwÔœ_‚þ“%Ý0. V×¢uÓ*±ßÿîßÿ»ß½ý€äÕògÈeðÿª!U€kœ¦y—'qÙ¹ëÑóÅý˜;Þ:7¨bþª†`}†â\¨NK0h<ûàgUoáï´ŽÈ㪠ÒCùxåÞhïÅç|ÿ³o¿?ªº’ê4öܳZó§–€ŸDÅý¸É£1–Æ/6R½]Yû8/tí!ÉŸrãɳ(ñNý.Å÷$&m¤ùûâ—Žs¥RüÇÊ/°“…„=$j#9Í‘¿ ">+]y%íC<‹2žø—te§Y'0ðž#8)7+dÐïç²~ {TÙ@/ßÓéÄÛ¼WˆßšŠv¥Y×8ЮþÆÙŽxät¥ß—$7‰xGåîíE)ÜoÕCÑE«S4obB$žÓ9Îi]Ì{?ă)›pNTvâ<+P/@”Lû€¨¾šú-­Âú Áë ¾E]4¼‹vë?Gz'zP½y]ÌO¿’M|sºrôäû ü&¢!ß'¾ÁñXõØ/7øª¼3òÝkæõuüÜŠ—Ø\Ÿ/ó=µ÷Ó<ðb¯×Æû´b×Ð,™(âÐå à“—Y¼>CbÞç#>Qy„ó—Ä¥‹×>Ç<õÅ>$Ö®€\sü[üƒeÔ®Rãe<Û…@~ã¼¢Œ]®lùZL|ëó.î••Ç…IÿÄËÈcå~˜ÇϾÁ÷Ïã}"vä.9ä\T« y^1þ‹¡øý³^xÇ‹Ü&9Qú/‘®L7ùÖòºq!ÊâãÒ•o«7NÃï!âI”yàÓWü°c”픫+ˆ/$ð=Ž/|~Ñwx ý~äBùqjÊ¿7ѯˆ:Xò8WŠ®u°NïÏ@ÿ2pß¼ºëéï­rí6ôïÿÄSÅoYC¸ÿû'$ñGàTžkŽ÷¹§@Û¤@Oã¾VÙ‚ýQ9ÃñznÄc‰ÖshŸ#‰wF‹áWËF¢ÿɬW/#îBÔóŸ?ŽþyŒ¿ïã¢y]ãѾÄ'_œ‹•ÄãÀ£5˜?ï»!ÎG !^P]ÉEü•ÐZ¢½–Ðß'r '‡yžö—~^@ü‡2õ.éµ²%xyÚœ»Æ÷¯±ÀñJ$Éè€óœ¢À^Sjã¼#"…Ö1“ý-³vÒ:(‡wæ#~ üÑâÅ ’sÑú >FüŒØxJé$²ü ú;ÙþáÌðÓ|¾ÀxÜö}Ì÷­3i<‹`ŠÍ>èɵ˜¿,ŽÓÚ‰xåwÄ‹dø)Dgø“‚q›Ïã~8>ûQüô#~8úÿ3îɃûêø—•é¨w!®Ž'¹• ˆ×“µ÷,ÇÔ$ü’óá×þÝÀ™kG¥åjâÿJ¡y›û.KÙ=·âÜ•ü±$'ƒs¿2ø¢|ZœÆ¯¬À=¤òm(Ö÷4êc(fX’9OÞóÑúÕƒ_[iƒ8eÂ6Òå{Ø/ÊÉ#Ɉƒ9€ùNîCýUfï¦lϺ¯‡yÔ¡¢qàt;ø!ÅWýXèýsÐ#¥8î1”˜üÔŸø‡•ËoAÏÊÂ/yJÑ$ê‡÷7ÆÙö•R|ÈJâW•ÄOÐ×aп˜YЛRŒ'ÍãÙþr1â É›ÈAüZüJÄÙÇo½D‰ó \ï㉇5€ßˆ;P²>#yRºà¼¢Œg;aí%ƒæéñšÚ‡ÜøžtQ~q‡ûBñ ì1~+1‹çáÓ¡ÿsŽb<§‰ç3°îõ0_lÀü® ü8»XyГž¢HzWG¹²öšrnöÊéÌÿƈ°·Å¤mø¼âä«ãÃ0øg”/g¯|³ë²üûÊjäLÙ þïøaÏÄÿsKüÉGøù£ýèg œk•Ö¿,üùJkø­”28çýµ»6Ñ÷„¨ <é½ã߯:4qA®zÂ/¤ÔZ<ûeà ÚÇŠewø†Á.‘=Ák.çòýÕÄ)ɻī«•6¼¨uùžqxq´÷*üeJoÖ¿BŸn4Â<_Ï¢öD(îÝEâ߯ùÔþ«iT>dýÿçFe.î-•;ðûˆ[óß3.{p/+F`^eÇ“–¸Kò.ËÃN–^ÄQ*ë&øé}û"BàÇ— 28>|ê‰Y˜_¥ÝMjG™jæiú5qûÖ>!Š¢Nšx¸-¾€ª¼N|ºòÆÈwC¶ëŽìœJýUþ>ƒù:Œó^ü/ˆóŠ¿ùä)y(ú]¾w.}¿âD&dzÈoޝ¼ rÖ`"ôwñ+Úú[÷¬J)Ä+Ó^§ï)ïµÂ8§ÂO ¬ïåÏF`ÿã8¥ œÇP½Öåœ_”? Z_åì+èï=Ž[a“ò7Ç+ná8Ñ!ˆ×UÞy€u2õX”…¥³©¿ë9~tCC¾Ÿ”Ò~ á¬2]E¿W‡œ_ ~Q]T:‹ý- ñ Jœ#‚ë¶Å9=ËqZ/4¡ùÕ9nª1âQâDGüµ0àâ5øa•e°'”™@. Ý`^×'¸P6"CÙF<Ǻ(Ær\•xuÑ‹ãÞ&#OCI+Y/ÃÏ«,LÅþºéðþn#¼/÷)Ê׸—Vö­‡?WÙÎöà%ĉB|>J‹þé8‡(¦Äœ§%dQ×q~Ô¹ ˜ïû—…û=å.âYÅ8âŸÕŰ0ê‡Ø|gêBîÏ¥ŸKŸr‘™œEϱÐß_¨®x'à'ai}Ä‹+§D ØéʤfÀŨ  lºq]IýP.cÝ”»°SEòR¬ó—+1žÕl÷yóù÷ ʵôY¼ûg¡#^T™Áñ΋qžnŽgîäÀøFá^]|¿¯˜ ;@)Íçõnå ¯ŸÀ?¦ü<û÷?°Û”[•0ÿù7¡?ÓGCŽ>n܈TØA¢ Ç÷E<©X ¿]0~F"^2þ*ìC¥}¬ØÊLœC”%°3â7aS¢ÞÅü&_âï?A¿RXojÀO©|…ºEB…"*³=_q¢9üUbVàñÕçHnÄ ø­ESøÝÄÇÈo?‡e(üÁÒ ë¢xÆçi?–ã«â=›ð”áWh¼².ü2³­‹œ‚ó¿Ü½<‡8‰øUOH>âÿ%^P=~?äSéý^©Œ|C%c äûCÊÇÕ•¶…H?•‘a_Ëj‡Ÿüð£Þ?ÐgëÜ5÷øñ+SH^ãTÆÏ+#ÎJôþ¾ÿ~/æQùóúóò"”˵S ¿°ãD:ëÕ@ÄUŠå¨ß&¶b\¢)ìÊð9eóÉ¿°<*›~ž÷3é¬ {F¾Œ8 Ùá›Q8Çp~huÜkŠz E?^§1Ý©ÿbâæeØÏkEf‘œËK¡ñ—…_^™²ú8‹qø÷â„§ÊÁî¦\8,¿ìAr" >YÞ*“…{Tį¨R½]+R—ôUR„ä!obÅsŠl»_JŽó­ »XV‡ÿ"xîµüÕV¾—ÿ>©äØŠKàûå`aoθ ?Œ¬ØžôBvÀ=Ÿ\ÉqQ“aßß{hä‘óuåËðÃȬ6XÄ/®ËïÇ£Vœt£u¨/"n ܾÁïåÉ­»A†_ÉŠ/”1ó:Ç£|óru…xBó¿²Ú‚xÍuuü°LìۜϹøÌ7mÌùšp_'7ÔHÞÿ­¸*+Úʳ²â~¬ûJëÞ•ïƒy'op\Dâå]â?·ïKßDœ€ú âÁ‚zð7ü(2¶æ‰ó1dÃHÈ©%/gþ‚<[y¿ K¦À¾ æÔj…yßÈzÄñ;Á¼‰j¼opÞµXSúbýžãw­øeñ‡øw¤7æÃÒw/ò>e¿w±ÌÃ>%;!©y4ž±°Ç¬8*UE¼ÚõÜ´B¯;ç4q y0²*ìEùñÚ÷É3°_˽¥¡ïq¿#NôÀüiûñl8M9zæñ÷?±‘œ?_ õßþŸüFÖ«`Ôk—1ÿ%`X¸¤üò­G0o«*Û%Õ‰¿5˜(?býúj9æqÇk†".LÖCÝ=9v½ÜN<ã}@|“Úq–¼Xñäoœüø ¼,å¿‹ND?Vñ½Ë%Ø%2b#Þó òÊå:Ü?¨n&áOyŽŸ©÷½Gfÿ‹þž.FïS%ñ”ëjCøեȣÓÿtÀÞ„ý'î oH†ð<´{ zõ=üÖòwŽ·å{_qò†Ãü»(ñ¸Á|ôýð;ñŒóìäÈ·Zü×\ĉdÒ~¢®`=»»Pï»®uãx»™|pñÁA}~P¹ ÷jXÒ ÕÇy¶ï2ÏA¶»r^cÙ(¬ÇË©¤×²îýåBØòß#Xññ–?c=ç[rmõƒ×Õº”óàÿ•W ¿ž?¨]µÕ“ÑÕðki¡È Ð*"ÞCLfûônïéëh¯ÙCôs&â´åÈ×—ÛM>«À÷3©.¾:‰þ„âKVœ }늸-ù1îƒq¨+ëcÝ{ëwñ9¬WáÂ+Ù?&“¾¿h-Í¿…k¢îÅjĈ|âGÈ_IèÇ'|~ŸÇë«Dr%¦½~~¿–؃û@ O-'F£ŸœŸ¢lFÞ™ò+ìû`^&ËŸÈÁ½¿ØÍy‰œ ®ÞÖà<5ËÞ8‚ü|y~5½!Ö¯±‚q Ç}wð}Ö:[ûôG3g­q^’‡pnàÅÕE6ñ…ëâOàpÐî±òìæ°^]BÜœøÏ'Çá_’åx¿c¾ùÓsË˸wR“! ãG¾…| þs]îN¡yQ {¨Ÿjé_h}Ô:ð‹‹5ð§ÈJÌïÐðôgG6ð$|Z ͇³$µ£Öƒ‹m°[eÒ½,jߚˮ‹ýSþprÏqhJòJ•­§Ë<ÊCÎ+{^+ï.È÷° úÄ¥77ÿ¯ÿ†s©|†ûY+ž=hg}ø)É¡Xò+ÖÛꯥ¿™`îTã†â¼ ƒßWKFÞ¦–Áñ)«pª]Ç<ˆÉýiœâ@:Úå|¬ OJyÄKyczÀ3ôæ¿:ûÇ-œ|ñêR²|uÛˆïíA¼¡Zé0ý\m|8õ(îÔl×ýÎy ö€Ön ÖÝŠ« +θŽ{2ùâ ä©)ôÞÆÈ×W?Ãú(cqÔ?+ÏÁ²û?]šü?O–SQ‰óxÛM~L…_RŒF{bïŸø¾eï¾…{VùòËÀ¡+iä¦yô÷ò)ò¦Õf ©?êrÌ£zâý<ÈãcÅp?‹½ó~ ù,>ë¼?x®uáç{†¿—´F!~J~×볓ù:ŽÂoŒçÑ`_еì9Â÷Ù¿"o^|ûB6b»Ì²#ÿýÜg,<ü¿Oë¼Åû…Á|K-ý°âkœ8¯Ë×Kb–r¸'ôé!Õ¯ÐÕÞ' ÿÔ ÌÛÀþa‹‰ÏK² òg‚ñ†|¾²òŠÄMÄyÉ*Ö³\ æqx+ÈߟÀ 5ú¨&ð=F Ä ‰¡œÿ‘‹ó¸¬žY’ãòªºI/eÛ§=Ë`þ×Äghgüáòü8jüÑêëã°o-ƒ]!£¿"õÀ·ÑÌÃöãAܧˣÈGó¯aŸÈC¼·¬Š{Ù¼ òØËò6îoÕ*T÷-xn·p/ä»hŠ{/©#.Mv#þ~]އÿHÔgûÿ]øÃÄÌOp¸*îÂ)Ÿ§úZº‡¸Hñ”qÆ:?[¸×ñÔrâJä¤Ñï,¯?".XÜ~ 럋x\Ù÷ÅrÏónÎSâ¸Îÿ×Ìkx÷IÁs8Ÿ£­8/q”q2…óô{5B?¿|›ôS¥ø_ßâ9f=[õMÈ_Ð>³ôÇjŸãïƒç<+¾•åV¼³ rzIÐ8eoÄKÏqvcý·ß¢uQ£)ÎöÂz½¿pð¼ùÅ,ü„}US˜gÌÂÛGÈ’å×bÝ­}Âꇕ¸sGßnTäm;ò«ÄUæ³Hæù¯‡û`ÙùMèý ÑÐsÛËï,1èɼvâWä}Hï ¬ëºÌŒÿúC”ºÈ¿S†°¿Öò³þUxé_€(Á¼2QOW´»ù¹Ìþ#ë¼Ë8<Öf^†ªœÿýûÿàûô¼åÀñ6¸¿ ò¯XûÝpð)+‰o^Ï3ß+?a¼wòÇQLؼÍåûÃÈcåà?íÀ×…œýGw<Í€\Õâ{3Ë>¸sšrqkÊȺ$_Êìëø»nˆÿÍx|OÛ¥>jgÒQœùÁjñ½%çé‹¶§ð¾ÀMÞ)1‰ãøðýëW8·ÈäÉ'0_ã2Ñþöß%2ïP;ŽKž…ø¹< 87ûÁ—È›'Ÿ%Uè¥ì 9÷‰r=òWÕPÄýŠÉÌ[åT¡wÕÀ #ßC|ƒüœÛÿƒê êjìàZgÜ#‰¸'gÀ£!qÿ#«°=›Iut¹–êÌØv“%¯Ì?<„†“ž(×aÏ(_"ÿW|{ó~} úUxR½· ò÷ähŠõÝ®¸W¹ ¼Á8Õ6ðŠq,;©N£m÷ܽ,=¿_ºž×i}>¯ˆœÛ r½îœxP䥋ˆ+¯#nHte¾Œæo¡ýoqÿ<_ý>øSú)‡#Þ[.Àý‹ÜЏ'¹y02÷èçsà}™¯Éâ;æ£ù¸3x+§C<°›ƒ<’õÀCgíßÁ¼9kŸz™õšõ9þÒBèaÌmz¯Rã}ÞoMïWv#>\Ô†ßF|Éû^CÄí‹~ˆ³±øj‚xþgcüþA5èÇËÈÇÕµÂùCLaž<Ëžh œ”|ß«F"žMYÎ÷âæñèï±uÀ­+ÌoiÅ¿ÊvWŽ³Ø€<ù„ê˜êjU¼O}/ä[Í¡úºšÇ÷â 7ÊÈS>ÜSãX”eÔWß…\µÅ½©ó>íCJsÜ*³aï+7ao‰$Ä“‰‘‡*r¼ÏfŽ/+Aõõè¾ý³Íºëò3äɼeXï{;iÞÔ’T§TW»£n¼X qþƒ}H¾Àö|“­˜ßn±ø¹Áñ£íÛS¿”æÈWP _^ù®ô±/òÒ•KŒ×•q?½7(o òEqÄõˆúÈ‹ÚC‚í|žM=«Í÷§±ïÈys¹”ùP>dÒiØJcð%ïñvî†þ%ûh½•%} —Áã!.‚KÙCu¾tå1ó•f~¨žïƼ ⦋ä_¾Ù‘ðCYƼA%Ÿ,"øž¨-p[ô?‰ç,}½çÕ]Õ…ß‚è»N d¼ù6ŸÖELAž™¸Éü$l÷)òðžr/3yŒ>¥ºƒº Gܲ,Îùu­A>™·NY?¨ßV|àDšGå]øƒq ûœø»}àm 6@'!nJìïšø—yrË0Ÿßglw\n ÿºƒ<2‹'T,äq/¥:ºŒ¥zðºòŠ~\CžÃySİÝR‰ó­gÂO#þ|™ä]´DÞ‘X ž¡ ³ ö„xL<×s)ËÑœ7D¶ã0Ó<ö÷/c~[ÞOD>Ÿc‡ÃbÅ% »Z Ÿ‘˜ÿäf&ÇM­†ÿTlB<ºò ì=å¢ê ß{þua^¯%T‡;`÷¬ý;è§Íc>Ÿ5¸¯?3TŸ[k²ðóPÆ3Nmäm)K°ÿ(㇑ž‰ê·!·ƒw%CG¬L…?N9³òñÓ¢I)Æ£ñïDŽkØÀ÷Uu©wÀnæ|ÂϘŸ%|“j(üj…6Ô/õCÞÏq<̱¡<øÄÜsY|â ì q~(áî€uZ?©ø‡ùqÊqQîIäßç3é<œý™ßöüWâðAÆ!ŽQVÇzÉžˆ/‘gÁc"š¯Í¢yXt8ö;ò+e(Ûea7É’TÇV—?#¿I) ý‰~¥~¯ D~¾òíWÀ¡/a×(_a•o8Þ”íã Î8»b÷Í¢Ç7З-TŸY½Øo´:úºýª…üÙ§ɵœÞS¹†ùŒ™‡-x¯gñ­Y~„-·ä릸ؼqÊ?87‹šU!—ð9"‹ý#?­‡Üø`}uàVüìoÊ‹TgR?ùPöKø%’À'-âÙ¿Pë_l.ô®ØÐB£þç3?ã_æ8Ár°â§áœjå(·Fo,>OË.¬Î÷]†þ‰éœ·ò7Ÿ÷#HÜ8 ¼åøCYx,]TŸ5p.GâkDû‘>Âý‘˜„¼ñ ûÕÇø›€oEd /Bt© ܵ‡öá¿ã§¿¿|8q¾i.âB»1éØ?â ÕaÖeûqSGÈvœwôüJA¾ø¯8o3xcÄ!ð8ˆ;ì‡+Åç±O‰wÅwæ³b¤'ÊÊ.À;2oÉüü}—!šÃ>I0}àÏã!ß"›í…ÈßÈ£,ÍqÉíʤÁÀ•ß“*ç·Òº)›ð|óþV1ɹÂq? ç¿‹$äí‰êˆWS.Ð÷e}ðáÈ4ÞçÞù:*‹æó[æ§Ì‹x£ æµxœd7Ž¿ÿ¼(JίJ>Û½Ï@nßþƒý.1n Ù[õ•eaÏÊ*MiåÇ8§É“%h¾Ônáòû¸7Už˜uŸØ¼ï¿_âëJü†ód0¿2"ô$hWmB~…pÂÿ¦\Bœ]ðÜõÇŸdœ¬Që×›ïÍ&ò¾· v‘|. ûó5ÄkˆJˆs½À»/Æ0ß}ÿÞÐiÌ›Çñ¯ÁsïË#±®[eÑ¼Ôæ{¿qì7ø|‹rójèÕÄñËØ¿²!âCe¶ÃÇ"®Yþ¼äKn¥Rƒã÷?ŸƒHNË¡~Ç0Om ØýÁûÞþt¯àúí60è5øÙeçoIå´¸‚OMôÒ¸Uqc¢»„þO@þ¤8¹ôYVÏ•| ¼Srü&jWîãøíZˆ#QÞC¤²žóp#?ND#Ÿ^ŒŒy=ͼô#qÿ+¦‡C/·õ%Ü’1ð_ÈÒ°ƒä‡à9—Ó€‹¢ò®DÃ"ú|”êð’Ï£-?G±Ÿe%øF•k|~ŸÇ÷ÖýF¾‡oœHú%Z°}Vñ£âC_|U ý½†|DÙù1² ß-¤:Áºß¡øï+ñ½ãQä™ÊJŒë¦Û—â&°ÿɽKWà¯V߼¨V¼…Zmøçµïaj; å#.Ð]yiîö|¿÷A{¼÷WöÝG¿Ô—¨Þ½®¾ÞIu.ì.Õ¼‡Cn“Øÿ2‹ï»ö9©}yüGò ÚU+ð~³ùzbïs½À—$ggcý¿E^fP>Gú!O£Üÿÿâ{Ió±õùœüKéçx“Á$N¾Ûû2õ_~‚ün™ƒøÙùy7#/HMÁ<Š'° åsïÜÊÁf]À¸V#AžIeþ\-84õmøÄ&Ä#‹cˆw“5À›"ë"X¾ >N9q=ª†xn‘‚ûO!¸^Éη`}–iì?­ {HvgÿÓü—!ÇëÁ[ Û2kVô}3òìÕDðЍÕÁ7.=\¥ÇͬX“AïÏE¶þWµîûÔä¹Êq¸–ûÏP»ªþ~õ ø“ÕQTß:ø}uç/?cœkŒ|{ÙyËA=½nÖ] ôóœ Ôµ1˜¯Ã¨_¡¾8ŒðRn>¨§ Wê-Ø“ZÆ­µGž´ ù+6| ñýá¯V~E~°ryW²'óz«+éû¢9ç Oe’5ÿ%³ _oÜMÁ}‚Züâ ûgòÀ?.ß~…äWNg|ØXóè€}ª–~'qþ Yšïé>äzëtüüΫjÄ/$ïÊc܇‹’쿎|^±ñêâ_Øç²øu’KÙ ñkZ4ø’µ¾­i¼Úæá³¿nΓs븧pªÓ¼¸ÏÀ¿(UðyË„6À½VðcÊ‘¥ýð»¾Fã’yoANŸ±ÿ¨ÜMìS¯¶ÍÂ=ç«n…P\àxóʸϒ IÝŒs¦V~0óæµ=‰4^m}%àXxýÞÝ <š2qÒÃ÷þ«®¢ßgp>W#PWFmÃüX'!Ž#ÿN¾P8qd' —ó±?É£¸—×Q{ê§ÈWê"ïÝÚW”ð“*7kÊ䛊ÔãÐóOKB~. ÎX­=ê±<“úõí:½ÿ(îo´ˆ7IÞµÞVauüý ŽÛÓ ë¼—ùE"ÒhÿP?†ÿEÄùÁ£'º"n\–BÜŒ,Œ×å: s1?_¬ƒ>\b¾žxÎ ¼~.þ®:ÇKã8‚6±4b ûYÊoƒ<û8Ÿ;ñ¨Nxà <œôVÔý–ŒwÐÎZÉ÷zÕZC:¶‡<9¿§UĹ[kŽ|5íæ»ìÅó ç éÆ}´l>+9ó)÷ÏsPÿž"þZ-óSmæqx²Õ8GjÈÓêŽçö&Óïµ½ÌoPŸóM;!Ž^œáü‡žÏj×dÙ•¦x®#_T| >jéÂy p^‡žuúò1ç/9šë±Ì@\xŒóª|}(ðmÈE|oçå?ŸZq¸j"ó'¿¿º<%ª¿3ͧz<`Ú¨wiýµiÀ{Qq"BôDü¾ø¼÷â:ó;Õkí »ñUæ7þþ&æs]¬û*ÞÇ"9n®*ä]öo…ü õäFγêÔÜNz&¿ÇyD®‰<yý‹ùž:y/ɉÈ΋=0ïW8ŽÀj¿AsÒsùñjà^ÎàìQÜC©µq^S›1ÿXæ)ÛIó§=¿¥lμÌ3ç)ÿÅý¯Zû™ZßWGüHãUWƒGDœ?«¸×íva»üsÞ~D­¼‚ü,µn/àìÄé˜×£\éß“GÀ8R‘W®®d;ÉÿSüœ§;±põÎýjòäÕfÈ»PǾQW'ûHO7Æ8]ˆã‘í¸Þä¤EX—Ü+¤ç*糨ý9nf×3ù‹ÇùKü]2çoLÂ}­¼¾<ߎðMŒD>€±ëy™ù~Ë"ZzÁ!Çr~Óbà»2‡ù‹†"NZYÏõ\Vq}›Bìá<ä8ìSZ³«Ú/¾Dþ™;t1õÓ]õMZwo¬§{ê@º·L#½yˆ••€oòÃlÒéç8ê˜gµ<Îkjo>.‰Ì[~@Yñ ²>ø¶älŽ_Á| k¡ÿj8óÌ Ä=¨ºæ=Â-÷±Z:îU´ÎåiQ®‚'\9>Ï n·âûÖ/Àµ½ËuþÂ9o]Àž#¾-xþÑ7÷ì…ßù^÷u¾GªÇqs8þ%åp®7ñ ÷Óx'“ô¨ xÄ\޳¸ûµ+˱œ7^ ¼ûx2þ~óa®à¼¡ÃO°>•S±¯|À<­ÓÁg§nß@ýRÏpÞ¦Áí]`¿ñ‹ˆŸ“½RHÆ=Áóî·Õ¤"ü¿V¼&Z9œËµ–/®i!_TÛþ€pT[Ž<[mççlGŸzû§ºç_õœ ´xðþj5ÈAÄ««…ש† ‡êažË·PïF]Žóº“ùp' ¡qª=Òü¨#°ê|ĉ©_!?[=½8qû¨&ÎC^»qÜþ‚ Ô5bTµgå{¼ÇüÊ_2OàzÎ{lÅñ%?"~J}¾žÍyæ2¿å|Äc«§øóàºùBê Ü_¨gàßÔj±ÝÖ ÷gZ_Ô×R‹mƸº#îMíÀu1&ïEÝ’Mz£…Á/¥¥äž¨Å˜¶êÈ©#9s4øöÔõÕHoÔÍCð<> õgœ—Ô…8—«?£9€óZ Ì“Çùùà™P·ÁŽRÏã¾VSZð8PGV›~=mç¥À}¾j0Ïs4çÓ•åüëF¸ßÐÆÂ®Ö¦Àï¡M ܈G}­ô9ÒW­ÝAÒ+mîc4®ƒ¦-Aü›æG^¯ºà"äô;΋¼‚üQ­4ê€hí8?ómæeïÇ÷C'(¯ƒïQÞF ÉþWµòžÕîÌ3>¶É­Öu´qžÖöÌÇå]4ÏîHØÚmä » !.Vý v¦zé'š'ÍzºšDü„VçíÚǼ.ãÙÞÞ œ•7Ûe£Ÿð«ªVœmWð¨[PÿS½Áç†XO-ìô¤ø—´·G£µXÏ×P/C ¼¹:™æW=¿‚V÷BZæ3nS™ôCk‚¸Tm2øOUæaPƒ?N þõÄ«Wpï¡•æsK ÄUj…qo¢…Ão­%0¯| äwjƒߪMÅ9JûüVÁóݹè÷íñ¼ø<ä'q„Ú ˆgÔ^çºÉÕØ4†óÖ–L ÷Ë]Ìë^õ7èAOœÕeðC¨nð;Ê ¬åPÏHíÀuÍ’ÁªÎE^‡Úy†êÕË_ö£i\¯Fëê ïißãMû÷XÚΓ_ž÷¾‹}HÍFßS‚'\KAÜË<é/ñy»?ûG¿bžl?óC_-â ö½оþG-i~®Aîµ~À%í Ä_i§*Ò÷Ü‘¨gäö .™»%×+Žs¦ö¾¸µ~!m7øZµ§¬{Q_È]…ë%taèœ ’çÏkcýþB¾»ƒûX­öI­ xY´×·¨õÁ~¤}‹¼9-¯ý½vv¤vë§=IÊ¡ï—A½­!çÓ~É|{°¯h§a·kûÓ1îëg¡§µ»’¼h¯ ïGëöö`}´›ìØ‹û3íâ2ÕªðªÍ™'¸õHŒ³îÔlŸ7Œ¦yU‡ÂnÒ>ήüûÍí@>–; y‡îZî<òG¦à\än ÿ :Ÿíü5àÐÂx¾Ò°^Z[œ+´Öð7hŸ!¯W‚8Lu$ó)oÂyEýÚPäÙËU¨-î‘Oœ¤§êKˆÛRç JÝÿ‡º þlÉiãÀ{ª-@]mg$äzÛO×^Âü¤ã^IÌõ –ƒïE»½r—Dž•»8xjÜ5Á·¥g\¯‰8µE½úùÜ£¨[`©ÏPgF«¼—?r>öìŸÙÊùÞý¸~™‹ëK$—"ùTËh‡Çl7¶cžø/àŸÔŽ#ÎY{¾#mîe´Q·P¶á:s£9¿ ÷`ò.ðB}õÿÔNäi2òpÔ/ÿ&¼S·NÄxîá£%¢>„6 <Ú ð.iï£þ˜üv±<È<ê•O¨ÖãsÑòÏF¶C~‚ªÎUÜ+¨#Ù9œëÎáø™ÅàÁR·§ÕŽ\§mçÍ-ÆùN+†|­ çÙݸœK?OÏ6¨(poËÕbðëkgÀsãŽB|‡ö/ðÈ]|Éê/~ÂõÇ#Ðkëœt-7‹æÊ>Þç„W«Äutþ¸þÿž í9ðaqsò©µPDû÷<ê® ¶ñÆA¹÷òZ_Äj=$_Úç.ÈÝ"ðݨËá÷Wo‡\WpdP;‘߯¥!ŽWkÏõv³_‰ƒÞÄN#}ÔJ"¯Xk ÜÑzÀϦý?›zu«´òX/­;âµuˆKÓ Ä·j[Q_LÛÁu~DܹúG5ÈýEÔÒâ¡'Úà-Ó<8÷Yçµ3xÛÔ1°£Õ?‘'§îE|—‚¼%­,òc5ïÿËá¿TW ÎL½ ~MÂOª•G>›VšÏW:¢½/¥ž)AýÔŠq jà¡Ò:Ì5°q]Ã)œÅõb“¿ò>3x›ƒ>[~ˆ¼#¼…\ÏGjõwصê!øåÔ§q˜ÇvÈÔÞæóÊûs ä…dèýTŽ;)Ãç˜ðJ«óçs¸•õ|dEä#È|ß1lÉ›\vrëAãU_Æ9^mÏõ47#nN5i'é|~%M‡ZkÃvYðWh´²ˆÛRŸ oZKF|¡VñäZgÖ“7ëbœCrñ÷m+cþÇêùqÎu—ÄyÓýòŒÝ¯B~Ý3Àë-¯ÃþUS“þ¨`ªãØøÇ<ÈÛ]êïÌ+ՒϸNËxðÓ«K?&½±äM½ˆú"j.ïÏ“Á_§v|ŒùY…ºÔêNÔ§Ñ£Iø{µÚÈ÷–Óq#ç!¿5xOmݧ½ÄëXû”ªÃnP×f^©{O¤Þnh©5C¼¢6„ëÛÍþrq¸¡>€?R+·ú×8¬}ŒsŸ6¼LÚjœËÔhäGªð©ƒÁëªvÿ‚ú1ß§ÿÂçÌS”ßåÆÛàû’ç™?H…L¾ >f9uƒä7ìÏXÓrÃu§VcžÜ7U’s±âqŠ9Oâ òfd ¾ß55|Øj¥3Ôqyt»"4ñ×a‰­Ú°ô<{}&µ³ò.c‡ˆË¸'“iìžþiyƒí¾Òœ'‡8NÙ›ëOX÷õ~¾ï(Åy½¢ùTû!G>žÙñB²xqåÔµØw¢±¿Z~uu êdˆ•ˆ¯Ó!÷b!ó ð$ï»w#¯Îº7ç?Î4O¢ù=9ÿm΃þ<ì2—Eã¬ûCZ÷ò«§Ð|ËÍgé}j,ø ƒöמ×ßQ'F㼄Î_Ù|kò瘢ˆËP3ê’<©S¸Nøû\ÿÝà|¿¸Ži¥™X¿OÎÔÎáã¤ßZ<üUÁûêœ7ò®“ú#v2?GXÒW™þ!ùâòeSäëÈ®;¾Žëÿ…!¾VíûUÝŒx'Ë)«Àß/³†âsà”\‹¸`ÜT ij¨“Áß+ßì@r.—'äwˆ'çp~PuÄg¨c‘‡«žû—æM,_‚ÈzY˜ù‰ê0t#ΚZrü„ãgrÜZoæ/Z|‘ûØŸó îÕ5ßsüÂ2‚ãꡎŒGœ´ü–y銡žŒÚ÷êû¨ó+*„“ÜŠ6\—è]®ðþ3Y ñJê>¾Gµâ®Á—/}BòdÅ?Šù8‡ËPŽC¬;\þ\•¯qÜô7ˆsß×öÑ÷ŽqÈ4øÕØ_’ƒz¹²ÇÖǹKv‡<Êlÿ§#_H‡û]u'ãceø¡¤{E¹‰y7.!.Oeµó¥MÃ9C4Gþ¾XÁ÷aØ—d*â§äæå»öˆÆ­>|—ر#Çy d>¦ß¸îP,×í\ý=ÆñE»‘_#Ûœ^§À*Ûr½æ#“w"i~ÕÚð;ÈOù\½7øüd=öÑ:|/ºíÜ'INµÈë ÞK—F½YÝ ¹ã}U}üòj,ø‡ÕžÌÏÕö)ÆýÇÓò¹LMa¾ˆw`©? ¯E}ûM¶àýÚÚ¯¸€<Ççè#GÁ¿Ãõ·çdqØeÒWrÓ~(¹ž÷‘Pè³ú xUÔ ˆË•UPw^Gœ½œÌü…Çà_SË!ÎJÈ<±ßqÞk!Ì“œÀ÷©¦™eþý!Ä«^Ä!¨S‘ç§îÅýŒ\‰úbªy£ªD^žÚþ_u#âÕ›·÷´êyx¯÷Øû˜ì€úœrÛíQðרo#.]Íß²ì °\1·.šôM-Š<+•ù±Ôlæ½Áq’i½ÅqÄeÊ(Ƨqài–·YŽóa_ª™·©%óó¼ðɃW$.1WðG[uÓåæøñˆb4âÄNÆÓ.oã{+?‡<=AÞ¾Âñ¬˜/èWðøË-Àµ ×Ìqë_®ÞŸHûª¸Îóƒ¸òà=¬uoˆÏÇŽƒÞ×þù%û÷ÿFÞ¬¼¹ƒäNM€ž©€oVõÃ_¦D=Zqíª2\g¬pQöå8««8÷¨/ nPí ûJÙyW¾–´NÊMŽ_]ÂùB‹˜_êì ÈIû·I.ÅŽOŒ«Ü,ÍuîÚr]ÆU\§Î1™Þ¯V‡ÿU¶G½¹šù»ŸóѼïùøÐ€ý3k8û8êîÈJà—ï?žün ðâ>ì õŽSÿyÏã>Dzqþõ·'{ þ«ÜÎõ髱]· þV±yÎ^‚ÿ-§0¼ª2üŽj;È—úìDq~[™ÊöˆÏк&úñ#üàje𸫓Ù~*õÖûCŽÏœ‡¸T9âwÈßòï°_†^Ã|¾È¼÷˜7¸ ò¾¤Æ¼tYŒ÷?²}rû¸Z þ[éfÈÞlXq1G çj…xšuêË©Sp!%ê„È—˜¿¶ùnèÑ2äYËÃØÏÕwÀëbÝÊÑ‹ð½U]I¾Õn'TùEÇ ¼šËñ‹•˜g6bæ'÷ƲïÈÏŸôïyœËÔà?P—€R|ŽùùOóÑý!¯mpÞ+X_. ¯F­‚8YõEÔéQ?Eþ•ú#ãéÉÓ„Zóç¨]í3ä­kÇpãqß-æp^ò"ëËù'/ LÎﺜ¸0YçÄ`žG Žcuâ~Z¾Ï|¿ëùžä]¶×J!1hÿ÷f^™U\§=šq»/êr¨[>B^ຆ˰ïËi¸‘KYs=èFìÏ;ê¥þŠˆŸï"Aôâ|ÞE7¡%9è³o¡_w¬VHÄ>>p1öÇY›ßÕ+ÀcÍ~xm$ûѦqþürì‹â ðW<Æ}±|# 8ó5ï›ÅÁ¯«¶ÿ†èËõ¸Æ°=?ø.ŽñùÊŠ£šƒz¥r'î¤ þdù*ëG3æ[¼.·‘Ÿ§¾Ö„þNíË<}ï2ßp6ó¡¯äøõËå¨=5íNõïcä…©¿£ž¹Ø´„äÌ]ƒó2<¼Ïw?C㑽9îìÂëÀ‰Vµ³Ï±}Ý ueçÛ)¤Ë7a~Îñ=pqðΪ]¹ŽÕN®oÒ÷²bó7üÌùAö·e¾ˆÑœwçGYûzОùÔÊ£GÞ¶|xr˼äq¸—”ãøœ;ùj1¾qêwŒkÛ· !~BÖf^ìš,ÿúuàZ6ó<ìBú)1ÏÍVÔc”UpO!Û¡^ªœ 9‘Ç?¡õR_›Úù¤b*ìRËî_JÚlŒóç 'ç§«¶ä:Ÿ™ðÃÊåø{ùÛÔLZ§hð<¨¯`}Õ¹-‰yy.ãþJÖàxÔtŽûÏâû¥§ð‹©:øjÕ¶ÓºI3­žöUÄcZ÷m*çÛ«ˆ×Ss`·©fCO™?øôLä#CVX…uÃ<í;W¢Fñ}—…‹å8¾±òÕÏ9nÃ:KZwÄ+kƒÿ/î0ïs«,ô·×)4?‘§£ È‹Z«-ᯚ ûFú{y/"|SÊÎï®Í¼SÝ&ÌkڇᯗSÀ3ï4§qˆ­µIÿÄu–Û'àc ÆY~¿»ÜÕŽpE,€ßVLä:pW&.B¿~ç<’gÅ ßmŽŠ ðŠæ“\X8(ÖÌÂ|GÎÞ¤pÞåPä݋ʈ“ç/Æp}²™ñxïSÈ¡ô¡ž°ü‚ùöB™¿¤Á^¿Éõ×1ßM=®¯0ó{ÈÓïÀwQ‰y_ƒ¦u xZÔ?æQ{GX~t®+Ò÷l²ø´NF<ޏÄü'?€<Æc_•ýØÏ¶e;âÒDéÙÏ×ð犩ð·‹ËgSþzùÏó:æEÙÁûòmö£Yþ~Ëouù¨ê‹Ÿ•V–ôF CܸXÅûüM–ßW1Ѹ?“nËý×¹iŠø!±ùKp¾WIÜÿÈÉ™Ô?ëþ+* ø°ˆë7EÎÄ:{˜§ñ]®“²ßS‹à>Ym‹ú€b7âŠe2ãèó Wïqý õÔæ‰,51—äy4üíâÄ ‹mˆ“”oqõñ|O6ùyòXpiܱ,êï>àqpÿôrÞ—•—²–ýâ§À—§ÌO¤pÏE}ÔEMáu˜—o*ŸÇXÄ0ܯ‹NÌWœÃûù¹SÀ‘rˆŸ•™i=ÕØçÅH俈¿Á«'‹¢ž¥2üeòsÜÉëàÙ‘‡÷,k1K)>þÌqÄÅÙïù2ÇGYù›™Wýs®Ï´‹ëQXçÎçø|ø.×\ÁqÏó~3“ï+g¾•ƒ¥R¨_)°ƒdoö®C\µ<À(ù5ü¦¢)ø:ÄHœ#Å8ä ˆ] ±î¥q'{"ÞFú‘/(â¹®{Uø—DOøµEwæGÚþY›y\,¾Rã­‹tÁ?´[+!¿Y®âø…Åà-•~ÄÕ‰Y—H®ÄÅY4>Y—ïÛÆ0×Aıˋœ§ãåüæQ34§9îÀâ'ˆã¸¥Lä=Ëàw“ƒWRôaž ¥Ì´÷­âßÓ¼zZòä}Èß°Š÷Á?/v#^P¬cû3|71|Cb ó£>‰ÅºÞ¹yì y âý}>ß¼AÑŸ÷‹1ˆÿÇÃû-¿ÌŽW¸€<1! òv ¼Ž"÷ Èw¶“[£.ºÜ=…äGMf^Ésœ÷>ëó½¢2W|ŠÌO³ùª2~Je?âÌ„ÂõQ×5Ƽ¸¹Nùé¿ÿ-™7èOÈ»ø‡ë3Œcž›N¨Ï.r\uuŽ×à{mõÄŠÚltÀ½ºø‚yܘO&¸O¼µœp(x>ë ¾Ù”qkßwE5ŒùWzBÔ™ˆ¯ág¿ñyì/®ƒQyÃA{¹ÿZ/¹íÆ$䋈ªÌ‡œÑrð%öq‹ý%wÚ|,Ïçp‹/mêjÏ=1°÷‚vÉvðv‹9\7ø_Ô)o@odœ+äz>_ÝÂùU­€xñç×þÿ¯83ÍAódñsü„}_M€Ý§¾þj±‡ëÍXÆpοø~”á\öI ùžxJ çÑ÷Ý5œ·ÃóýÐp1ïÇb ×±˜Àûî®Ãäg ü¼L†Ù®ëÊW6\w)Žß‹¢øÚÀ{èþÉp>]˜—ÃUºŽ)G†«Ñy}œèO´áúþc´sÊë£÷7ºl¾ÇÕ‹ò\ ×´q£è÷+_Ì3ûë:TÜ0ŸaÎA÷DaUûÌ~„\»–b¾/4²S†ùýÐdŠ3Bk0åÛ}«,ÍGh¯Ùæ¼…Žæv^%ÿ¤áêAùN†kj’Ný[M~fÃu”âÐŒ°0ÊÃ1ªìeöÓYø” 稷²Ìï;ÿú ýwS}ÃÕ±7æçóNç_Whþœó×øÍ~8ÿè–Bó“ø WBR6ýýK“1ÞV3éïú-Ê7ûé¼KqüùŒÆÏ ²éý±¯Ž¢öJ4Çxšb½]£0?.ñ˜~>4Ÿ¾×ÎS†«ñ{® ä/6\Ûe˜ý ?™OýôQþá|ù$ä¥Áõ» ù« gÕ ÈáNš_ç¾&:­û¡Wi=70?®èYÔßçÈon¸êï½ázëãš13ä6ƒÎá†3ó“ o'òŸÎ.ÅM}6œB“I.¿›â'y?Aq¢Fè•Ú˜ÏâÄè_{Z?çèLZoçê½êÿò+.O{šg炜,s~œ¿\¦ùtî9ŸMnäÓAþ#ÃU>óú¦‘Cß{B÷†+q:æ³–4hžÛþ®Ñ©?®]'e„¹ / ×ýí´Ža¡æ¾c„ÅP>¼&úd›ã +Eþ4#¬zDÉwã|‡9/®n˜WײZ’ÿÛ“h¾ÂjS¢6jÉUØï{|fÂc çŠÐ÷©äÇ0œ‹ZgÓºøïbÝNôI!¹ '?ƒáªZ3æm!ñÎý˜OW(ù­xbž8Ðe7äëë/óIN~mê£?ÿ#ŠÇôç_Ÿ@zê¨x“ÚsdÆä›óá˜J|=†c…+ß\?Ç^ÒoÿSaâc!ÿÓ!sÌõö?=^ÏÔgÿ3âÈüÏæ |ÿ²ÿÙŧ&þûó½uï¹l8+¢NúWóh&õ< †³õ.Âç”߀C¿Qþ§áZï¶ŒS_…CO¿?ç/ã!çfÚ¨©Ó½¹á¼òþ.…⪠W‹÷!÷uÿ€Ôpáç•‹øhÞÊT"½qUø‹æÇÕxžOž9çî‚c„¶ à}t%æ×yxã’”—f8Ý£Îrå›5)ßÎp6†ž;ßc9]Lü†óüÚúü^Æ(úþçm±î[ã7È> ì£Å ÒÃ÷:ºV#¼ éD÷FÈÐ6~óç!Sf“þ…,¬>ŠöÇ_±Ÿ‡ìîj˜ï 9Mq?}£z½'É;ŠÖ)±äÉÝûK™Ö:É[Gг è}V&á›òÃŒ0íD&á•y Ó^.•Žð.½Ý3‡öé1Ÿh„¶¡ûf#tÕ32BAûMèâÛ7œñä¯è1Å—Î1Ø—CŸoh˜?íó>áW躯±O…ߣá¬Kq.†³'ÝÎÙÀ5çß3 '×2²i|a°›\%Ózºj’Äpum¹žBv¡?Ø×>wòçüÝþN³_ÒŸ;7Å£X"é©£&ÝóŽÎá‡JÉAÑ#ô=Wyг3\õ¦äÒûÛó~?¼8é©kNUàõ2ªƒè/åíÞSø\ü]ƒôü ò£®™W'÷d‘||vÉAr¸õÈÙ]è¿«,äÂÕöô` Ö˵êQÎ]£Ñή¿h}œ{‰‡+ðl˜LózŒât WˆéOÈ[Ù•:é×,â 5\¿vGÿþÁïÃäo1ž£<#ìuâ0ÂúP]z#tMg’÷Ð?ùhýÿYHúzóeàNÛŸE‰¯+ Ÿ¿A?—ÿK`¿Nræ*ºÏúO/\#çAŽ7À¼>ÅþåJ|šEÏ`?¹ê˜~•À8Þ žtâýu8ÕiŒ+Á \¯ZƒôÇÙd;ɯ³çXèóø½À«å<ïOa—¸^¯ ÜB|×ýæ:ú»˜îIë»×ùOKƒÆù´*æO¶ƒœnû(ŸþþFOð=á ž¯ߊáê› ýËé‘G?ß["™Öuö gn6á…+¦e>éqÚbà`—ÉçØ!®¿ë£_õ=À“wg' çüýsá¼óæxì/·ÐÙ³²È¾Þ´•úzû¿³ÈšWg]ÞO'ÃÎr§ø'ÿ•fžMaÿÝ'£L=ºÛì’‰Ÿþ»9ƒÍþúïž_gŽÏO40õÞïeªOæv—âýùåÿ ÌÓ~{3/ÖŸ?9ÔÔ;þæ+Ÿß4¡Ä3b8žK%=wÕXMãsµ1y;ë=öžkÑ6èÃ.à^˜£;ð©ü,ú}Èrªc`„üMçb#ä!ùŒÐ ’Û2iü£]9´ŸüB:žQèÞÏ©\ð*äUÊ+3BÚÁ® °6èÅLs~¾Zï ¼_Cuž°#sIÃc±þá5Æ8h>öV£q;°~Ÿ"QÃyé§úý3öËê§b¸¤“ü:rÒ<;ó~p~jHû­ë¥„o®w)ÿÖpãsè·s¨?Î’5 ¯"½vJ¦ñ8¿^ýÝFþØ€}ëÎöîâK 쿽}Ôþcâ9 ´{,8Zý|ƒõ«~ï\˜E?wn#~wÃyä×pENΠ}³RÒWËÀëÑÄØppµ,Mräê~ïý€Ï 3^~­#>¾²]{‘Ï}E‘\¸j_\]gä¾O¢ø¾À|°½iPœƒáLàþ5‚Ýè…}عŠÏiû_#=qú{œ8—ÝM¡ùZÞÀ ùÙ»™ö9çíâhOŒ#9tÕxû\¦ø3Žüa†óÞk)´ÇçQ{FZ/ç¢a)„?_›õ0íüÿóz1Œ/—êuôëæŠÂ9Ý•Üë\ çzWë ï0ªb8×çåP;7?ÄïŸ'¿Z`ߣxEÃ5y4ðoÑ'ÀÏ-äÏ3B÷b?½E~é²ßÂÛléo»º¤÷ΙùÙ„‡Û¡ï¡Ï(î7ð}º—1œUˆ_*p>f»±ÃuÚçƒÒ0^ 9v®§|†À~`Æ9Æ¿‡üHy¢øÔ€}²r_:‹Ö¿æ0Â×õÝÇCPü½r¹3ÔAüZFhùߌÐ7š~„½–Mýù¦3úuz#ÞWöÌ(’³÷Ú“¾º–‡cï-£¿ {™íÑ&”Ço8û¾ ½™ò ãZ~9UI&¹.õ É…«Ç™À{úŸŽÙ@øþô 3Ïï†ÿéù¦\øŸn¾?Í <‹ùŸÚ˜·¢þguÍzˆEŒPêÍúÏã y ]E~{#ôòVì£å·øi^ßãsѼ6›_Y?Ž˜uRóz¯Ó(ZA|qÜÀ>çê »ÑÙö«sàJ¬÷lr·áèÇÙ›ø~üèg½]˜§Ò« ÂïìÇj| 8Ñ©?É‹kD<ðûÛý„C®Ý'ã5k"Þ.2q%}:&—7÷‡‚>}·z˜÷¤7 úÔ ÝY`âuAŸ¾Óÿ üýÓ?/ÙjÊIAŸzÌ6ðôYdøh úŒû|¡‰ç~FÇýAAŸ¡¿^ЧczZ6ÉAŸa?/Í6çµ€OßÓ#ÍL½+èS/T¯L »~†ÿ#€ãQ~F…¼¤>}wïÈRЧ^( yƒ}F.ÀýfAŸ±E×¥˜úXÐgÌ‹Mr]àg\Üásž úŒsÌv øô=½ñQ/®ô©;+Ëó¯ÀOI~«?cû¿•oêGAŸqÏÓ¾Wàgái„k}FÝ­JzXÐgÜ=òGøéZK~º? M û¬‚??AäsôÑ(ÇoîK}†½†¸Ì‚>#["Þ¼ Ï¨WÉXàg\3ðgôZÎ÷}ú·¥x‚?¯ä× ô7´ÀÏ=÷z&›_À§^h·ÀÏØ×Pg² Ï(÷{™æ¾[Ðg‘ш/è3ºr÷\s_*è3âwðÈôóñÂ}Ƨû‘‚??D]Ý?kÑ9´ÀϘ»ˆƒ*è3ösÄ¥ôÚ ùÅ|úò•÷ã /èSÞ½0ÇÄ›‚>‹ _dAŸ‘³7WÐgø’ Âß‚>]×Mû§ ÏØßÀ÷XÐgÜ㮦]QЧ«îÜlg út4B=×>}W<‡ý¢`O=*¯áaŸ¾'›éþ¿ O=¢ÝøY¨s!¿igôUûë<²› ø,²|\}jŠ|Ü>}ç.•3q¦ O=¶)ø øô=ùÐäG+\Чûˆâ úô=.ßnÉ]ÁžËoe¦çp#jÍõÚ=à1‰n†:ÉÑ«À×óÜY³˜¡u/ÂzSœOQW!b©¾9u¢ún¢ŸGû^Ë0å%ºÅ÷ù´vs¤˜ïØö»Ã|_Äbò§ëQÃü¦DE^h!ê[Åv›šgþ>® êüq#ÞºÐk©YtþêN÷(z¡]t/¢Ç½^<ß|O!¥}/|ö‡ÙÏðÍàO‰HB>xä>ð­Gíæý} ø¶¢—&òâ;£¢q®Z€|¸˜ç¼Ô^Ì|ðÅ>~ÀØ‘†Ÿì -™¦]yyªaö/껃öïçšçç˜0äÍÄ0_UL—Eø»/NE%|Cëõ ù®Ñ¾õô¹È1ðÂÅFÞõÓ¹:¼QK)~QÐ…Ö'ê"ŵèÑkP×7¦;øcíÏ1ç1¶/â¾ Ÿ¥¸½À9<µE>?|±_‘‡P´ÆhŸÙ^‘ÖÈ£,2H%½ˆºˆ¼Š¨/P§+úÄÓÇ$ƒw¬ÐW¨o÷öéÂ?ÁŸþ˜âWôˆZÈ»hMñœzÄ•]£ÌñE¾5+“Îã‘—}ü]ãé^E8öádäRð%D§¡~^LÜ ~ÞÕc>oYÌcÔÙ‰èêÎ7ß1n­Ää—EAò¨¿êÓ¼GF]ÓBî;>zÿ3´~Ñ×WøÌ¿.ö.õ;ª3òÖ¢žË q·ûˆð,úƒÏèM2iß÷ƒ¼W?/úÅé1߀Ç6f_Ù|SŠ”G}œˆ~ÈOˆlC÷zäwȉn>åèëôÞ˜¦È×‹Íø‡Ö!r`¿Qf?"®Ðý½Y®jŠù½È}Ðèj»s©ÿ«Ï=zýø¢¢¯Ð½‡óiÉÉ`¬oÌ º—ÒãÆ´¢ñÇBÏÈŽ?¢Gm^”eŽ'r<øÄ¢ê!o9º-ä>z>Å_é1}Àù7xm£Ö#/*u^£û}’lÎ[Lì;À•ÙÐÛ˜3¨KÙaÍwätð”F}û6æ¹ Å‹éÑ`ÄìCj\»h¿9ž¨µ°ï£žCü{Ôä?FÏÀxc&Rü€sõ‡yÌ|ÞGëß¼ØÑ¼Ïk Ò“O»&Ózì€DÿIqvzLCÈOlèYܺ'ÔïHÛaþ>rd7’ËÈí_8ï}<ûöáiLkÔËÉ=’Mã^Z”ð%¦²‚ï­¥¸G=¶òYâVP¬^¨|Ò³ÂÍïC^*‚G8êÄùGæ!¿7jÆ$oÑ•Á‹}‡îÑô˜LÔ ‰‰ <ީӔð5f ò¬c_Æ÷ ¹WyÍs¡¹³SÈÚˆâôˆo4›*çÓ>”³6ßćèV'ÓúW½›eÎoìxÔ/Žþê[ÂËÈ›¬oÅ{ÒzD1}=W]øëÐ=©3y¸ág0?_¢{ÄOÈ׊üc%ý<æñc’‹è²¨¯SrÍoä6ÌSÔü²„?Q?¢~wtÉ7“ÍõˆíؤRÉf¿cŸñ¾ò”Ï?m±¿FEÌKt_©ºX‰ä2nêüjº“>ÇôýãMßnÌŠí¤¿1Ìgë®Hë;ø÷ ò"‹Î"½¬ƒz/‘™¤ ¿Q³)nNþ¤öÍ÷À'µõ-ƒÆ÷‹É¿x~ö;ð°þ$š·˜ðÁG¿‚z<1וQæ¼FŒXª>õí<Šð¼;ò¢—bα|ŽÀøcŽ€?>*²­säø,ÂÕ¨°¢ß9Üû õZcJl2çV€W8¢o=íÓ‘¨Y<‘ë(n5€W¯Ó¾uéXáøè$‡á¯€Ï+ü<òÌ"z€?023*ƒÚ÷¦Bͺ½ñ€Ï&öU¬ct·dàKöØPÔëŒ-kdÒ:üEqCz\/ŠkìÈKŠª!°ŽC¶oëvÌ#¹ì >‹˜37€W=?T¸øïbêÇb*"¿/fì†Ø—Q72ö×h}Šüó!áYTðkÆ wäŸåßÙ£hý´î4¿ÑW¿^/šNxUøÏ°<±àшô¢Nwôð®E}LqjztUs¹öàw¨=<ˆíÀ1¼ë'vЛ!9ÑnR»‘‡Òè=‘Gë~EþÄó¾é2íEbQï²H#ä£Å}?0öE<±¨æX÷è$ÔÍŒ ù“þ.¦ê±Ö;CîÖ‚/+&´“ÚoóáfÜÕ×G õCóð ø×ãR2iœq¯RÜuà¼;œä î«HƒìÕȧ.ì‚þûVÑàã*Ú|‘w~F.ñ¦Ð}T¿GæïcÞ 8=®ù<ÌËÛϦǥ‚§2r1üÙQÛ[.FíßgLØ,ä=ò·b£€O…žíH¦ýç;äsEþÐ"›p©=òb£ Ÿ-z%Ïo‡0Z—˜õ¨Ë=ÿyÚ‡bϰÃQg±PsðN¹‹úÓEÞ_o‘ãÈŠzu:ÍÔχ°§ O1 qO[~ëØîÈ󊋚Dú1 ù¹ákï¾ç–ˆ[ϤGÞîVƒÜGFþnä8Š ìÈç‹®ŸAúØ|IÑUèIŠßÒc—ÎË ñw¤8ÀÀ¹üý1ÍÀ÷s|ð±}Q—1®6êðjŽ{ñˆ:à#ˆìû8ªÈ!ƒÖc)êDOÂ>³•í®xØ‘ ÷‘¿¾Nxy÷„qžB¤ÿÑ\_2¶/ò¿c—€+|*ò³"^(=¾ô½Aúûò#û€/)nÔšŸ˜ñ°‡ãv´sÐýñåõï“ßÐxbŽÎ¢ñÄæq.­¢¼ŸÀùúÕR#\ˆúûtÔÕ™Ô¿©àI‰ùki.ÍO ðßÄ®™ë§s@ÍHêwøyŠóÑ#êÀí©×¾ŸIÏ£?]M8}+›Ö)¬ìì°OþÅxÞ§ïE è=é^Ȩšàÿ‹âyŠ’?’þF¥ >MTqœ“bÊÃîŽþ¬.ö…°;X÷7c~~¡<=.’ò/ô(_^­_%Ø1'dãNñEzÌtàHÔ‡>èÝùö¤÷ÑÍ(¿HÞIqÄüæ ssÅéêq­Nž„_`xÖ)¼ê¶F|?MäpðåDÕ¤xÊ€}Bñ¬zDUŠƒ×#fm¥qEö #}‹] ò;bá^L ÔŒ™: üì€s@Tœó£V‚/*úzR&íKCÇç’¾÷¬­›ïMßB¸Õd.}Žûr/ÍÜ}¶'²cþ¢þvÐýûŠù4¯qu±¯GÎÝLã‹ yLòÕõF¢‡Cü¨ÛSêÎ(’»!NÈSÕ„oQgÀóuë»’×'ॉùçÑX7ê)ÅE=ÐÍ¿‹ØY•æ%2®r&ÍËÔûŠêÓ–Þ=·‰ŸäìêôÄŒNTëý¤‡Ñ—ÁëyZ÷ÓgÅUÎM8ŸÆùÅO8ã¤}"*·2½/¦øb®ô¦yˆk¾Í¸ï{ÓzzvO¡Õ°[¢ª¢~f¡×Ÿ1¥ 71áIÚŸÇŽEçýái¤ÿqU;ûi½‚_+²ŒFã\¯¨IŒ7C¡çQÙ0û@ôƒbÀñ!à㈹ ¿qì[àKŒËFžsÑ’“ÍgaíK’¿B·qžŽõ)„ïÑe)~\qòµ‡òŸÁ?· ~×ÈVÑßGÕ‚?&j$êaG]¡xS=öp´Èùhb3Á[™<õÈïÀKyËá }mÑ×Gãx }Ž™ˆ:i1SPo%"¿¸›EúÙk%ékäjž—Æ%I.£¾sñ1á_xn.ÍsÄŠWÕ#C¦Ð|G^¼–A8÷ÃÂÃè0äGï:Lú0ŸòÕôèÖà}ˆþ¸3äö̲²ë–Á?WçÁÂ' §á#¡á·×“D|û1òqd2éùJôÞ¨ß(žVŽ=ø¾™„<ÙÐÞ™9¯]™ó(žë¢SK¡xëTWÒp¾³×AñŸM7^’ÎÁ†3 óë ÑÌýÕ+Žï…Þ¬›ï =N¼{Fèâ31œ{çÒ:…漞^üç?û¨ŸÞsd@>åáí ¹\½ÌGëÙü±þü•ÕWÌp”DÜ®cÊ4’WÇ äg†” ó˜ÒêbÎÆf½ÃÿéÙd×ùŸZèO¼ú 穰܆¼ø,™ò4×R^¥ÿY-“/èV`œy¦ü>]jÖ‹,äX‹äËÿèÖ[~Š÷ý‘νþǃ}ÿñÛIÃùÈGrm£¸ #¤ysƒòÓ “ýí’9ùy—ÆHõ¶ý÷ŽÔ ü½ð?ÞFùYþ'YeóÌü‘'Cw~ïÏ?ö8ðã«þgÇH¯ò­¦^!ÿpÞ Äëd¸Ö¯á¬Aû°áò">8¬#ÙFèÇÄ›î¿ÿÜG¤*ž¡×É®5œ?‘?Ýpª·ýù‘ Òóù»2(>¹ËèýYä{9O/ðS\ö(ä_9FŽáX¤@_V¥ê”—Ù“ü†ãËÍš÷«ïëf»Ž“ß“<…V,”m¾74öG#ä4íFÈÛ…2)ïä5ªßg„ø‰¿Ã©|¥Ð•Y&ÞùóG½m„Æ"~>²ùŒ°½¿’\nO8lÄÍ%>&#p üs!ÞÛUŽøKˆÏIÿŒ¸ƒõH¾#o_©6 y)¡ÓþJ1åÚQíh.ÅñoGÞMè[Ð/×Uäy†=Ó WÂ? lò1þ&=7\¿ŒÈC%ûpÖ×~ä/¸Z"Ž? “mæ·=ùãz|’x üOCˆ_ÊéI÷0þü®”/ê’¨.…Ž£û#tì‚gsL~Ä;†c&ãòzý;Ñý»ÿɵïÌŸû=¬HûMx¡o°ÿEõÉ¥<šdº?0\ßËx‹$Üpîªü¬"5Åo {ÝТ³Ìy*|‰üïFÌ7‡ ‡ ";Ü}L÷ŽFH§Gد~¥ºKFØ+GÑ<ÞtN;_Hhå·û/DžxHÔ§é[]ο]C¼^†ã/äß…Üi¹.Iq †Ë ùÙJ~ #$ü!ÏÉ6îèÕ˜æãÙÙéu-l„„‘=àr·s _ÿúóë"ïÇá ¿¸?Ÿí¼‡á$FXÈGYf?"Þ¤zÙþg»žïCÑ}œ ^#ò0kðÙ9&na“È_åò E²©ÿO†=%=:¦<½ï^eŸÿaª—d8ÛO¦±…ò¶ü÷›|q·‚ýzÐyËÖó|eà»ã›U$oÜ/ÿͪf]° çKد£ð8êªßl„.M…<{Æë wIBÞ¤{rþ¹)æ¾äö©Y—ò¶ÿÙxO¦¹?{ÕŒ7½ì|‰Ö70ªûî¿õŒìzÿí³“Íuöß]Y+×üÞµ _˜óë¿óKýÿ¦75÷ ÿ­ïͼi„®ÿûÉó“h]ÃÞ¸h ßΫ†«iìôÍÈó+Cy¢FhòË‹ãH®\WÈßo¸*!3"ú~ù\áIe3i~ÜàÇ}…ü;†kÕ‡1\Ïè~ÓmDß{ÿL:_Àà¿Ñ²°9Ÿþ¼÷F™ûÍ•F+ ÷ïùòF‘}Ô¦F`^®! )Üÿd®YÏê†ÿéû˲Ìñ?®aÖo-ä´sL†9O¼ÇrÍóÀ³Ù”k„¢zš†ãHïÇ3èkXä;‡—¥y6"~y‘æ'ê…ˆ|óûstnÙOçñà¹À՜¹œ¯ÞîGŒÈ›S1¿£Él„õ¢{kÿø…ýw¶¿…ÿAÙoþûÃç˜öÙ½ã&á ÿƒ¸-¦þúoKË3ó¼,\{6ˆâ'ýùG?É5í8>'å.ÂGqÑþ‡FÝ|SžnÿC~=ÿÕ¶&ï†Ã{-öŸkëÂæçsZä™xw]nê—ÿÁž:~s?²ìóÐ#Ä é¿=…ü’þ;ú³é9m ôªÉ§VØÿ°Yâ_#ü‡ê:Íëä6\߀¯ÄÕi"Í›«ó Ü…„r¾YxeÂ…€]Dù|þG›L¾Ù;FL'ºŸ1"Óé>Ýÿhj3àË õ€GÝ~e®OÈ‘Ú$‡¡{‰Ÿ.p~C¾aÈÂÕ$g!oÒ|®³HÎCk‘_ÉyFþf#tpCÒ_ÇÕëÐÇv_ËR¾šÿ©ƒü2» ¼@¡ã¿Ì¡¿T¯×¹ ý ©bÖ7<3°Ÿ8²±/…^¡{/#´-ø*B»ÆS¿Bǧ¡ß/ïÃ1¦iñ¿,z¢ÓþØã“@;"pÎ~ÓGöVÃâ9$W~äG‡Å¤d‘}:‹óþK‘ßÜÃ=Ÿõ1x„"º4§}(|Xål²Ï OFh5:÷! ˆ×Îp.:ŠÖkìkg ÈUH+ðM8?ƹ.ô/ŒÇqüQ·dOåˆ܈ˆÄ|F ¯HdòœÃ®S#ÔhŒ÷,•Kç ä?2\5ÈÏb„] ÌiÇÖErø+ìØµÄm„Ç#o9´;é½÷¥ßÔ#kßp–5ëTž]èœæÏßNv‰æ'ÿŒ¶ã +} AÞuÄð Ôž«Þç¤ï.GÃ<šŸÅÄoɤû?#b1ù燴þ±gÊ“¼°ú¯lïH8¹ü"¹kžù½":ñÍ!0޵Sè<]d½'ô%â5ó?zÛä ½i8–ƒßÀÕü"ŽŸH^ýÏ&œÎ4ÏûÏ’L^«€-q'ƒìõÀcתÛa¸:ƒ‡ ô,ù/ÐŽäw2B?J…¼Gu¹ŒpG?’/WWºw7œf·ÌgfKÈEæ*Â|Z«"Íuõ½¸ÄÓ{L>¥ŸµÏÞ~y˜ÏÌ#º9󲩿þ'× ’ÓHxTœÌË2“îÓ ÇA:Oùõ¢šÅ|^© ½ K„}àyŠ5\/qÞî\Šñ?“Õ³ÌýäY™º„o¡FïlsÝ#ŠÜÊOó!”¢ú+FH6ñÚŽísǹÀ1]§~LK¸~çèYæú=Z¤›óâºö'¿)áõq ù<!é^Ç©1—ü®…È/OM iÓwâp9¢L½ÐwHå>{wøPÄtèñ/BªZÿHµþá±þáµþ‘fý#ÝúG5ëÕ­Ôà„V­üWÕà¿Rƒÿòÿå þ+-ø¯ô࿪ÿU=ø¯`©Á6Rƒm¤ÛH ¶‘l#5ØFj°Ô`©Á6Rƒmx‚mx‚mx‚mx‚mx‚mx‚mx‚mx‚mx‚mx‚mxƒmxƒmxƒmxƒmxƒmxƒmxƒmxƒmxƒmxƒm¤ÛH ¶‘l#-ØFZ°´`iÁ6Ò‚m¤ÛH ¶‘l#=ØFz°ô`éÁ6Òƒm¤ÛH¶‘l#=ØFµ`Õ‚mT ¶Q-ØFµ`Õ‚mT ¶Q-ØFµ`Õ‚mT¶Q=ØFõ`ÕƒmT¶Q=ØFõ`ÕƒmT¶Q=ØF`5‚mÔ¶Q#ØF`5‚mÔ¶Q#ØF`5¬6œU«T±ÿYÕþgªýOýO¯ýÏ4ûŸéö?«Ùÿ¬nÿÓn­ªÝZU»µªvkUíÖªÚ­Uµ[«j·VÕn­ªÝZU»µT»µT»µT»µT»µT»µT»µT»µT»µT»µT»5ÝšÇnÍc·æ±[óØ­yìÖuîÛgð>öÐc õÝŽƒ»ìÚÇj¶_ß^ý:[ßìÒµÏÀÁöÂuü]ø€®Ý{ôµþÌ5°÷ÀŽÁÆ;êÝ#ø›!ío ô~gûߺÿÝ­Ç€à¿vµÿÝ»[wû;]íïÔ1øï^}­w:{÷dçAÃz÷²&$¢×ÿÌOD¯ÿ™ È^ÿ;Côù?SÑëæ(¼×')²×ÿ™¥^ÿqàƒ=dóCpÌö ìQ>ØÃ6¿Öõ?c<ðÁy Çÿg¼ÿ³á½þ»t®^æ<‘¸9óYÂ,±‹îÒqPÇÊÝ„/ðé™ùÿÿ\û8ÚŒZplm/data/Hedonic.rda0000644000176200001440000005033414124132276014023 0ustar liggesusersý7zXZi"Þ6!ÏXÌàìïP ])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷dzàW³mX$ÙÛt6–«Eã‡QSs‘ð»ï¤¾çkÍû³¤ÔãÛ0̆µ4¨zZ<ø®%Ÿ0u™÷›–ã†6¤(Á@,|mÙQ?ôŽšJáÆãŽydn„#ƒùÖš)ã vÉjOö¦•·[Aù‘V’®É_c/d§àbŠ2`Iòåƒf12qõ¤Cð»˜O†½¿,ý{äüÊ]¬tµmÚZ4ÑYIoãCE™aÁú Ä Ü<ÊÒñÀTç3¶¡kúÀÖëáËlı»Ôb„¸òÖò6‘/Ù|nÉã žrljàDïGµÑ"†ÿ"Ñs…4-R:ì:HjÍ¢BLÊç=–XævÃv >™–ã„H‡0G‘a/`"p`NÐÁ8Ð×DíŽØýY²|~Ðc€fÚ÷'ä`¢“³¼UoçÖ_‹_QÑÆ:£n°îM陥ñzà[4p\^Ÿ*ÛrNƒù/ÓS¼,ÃÞ:pîÉ=‡ó6ñ„jÛ—,p®5§s5¹ëk‡vG°¸h|/dÊ©<lÒónâHÞPëJ¨#¾5@’ý2ÎÑÚ ,.ñÃyùs„ü œ5 TɹïYÞ0ªæ SÕ9WA ʦ¼ÁÚæsècíe”ß½2Åú/¹ÔÇ ï/7ÁØó½Å2Œxó¦4‹´¥¿ÿƒüdÑvFi=Ý·_e•üöz,€/—<Ð+‡}ÿÈ1¹þ/?õLóHÂCä+ýþuiçÙ ö’Éy3À¹Ø%%ÓS?W¹q™YIàЮUþÒQWÝF¦ãâ8"ö?>‚ý&Wk“Áƒ+4‰rÛ¿Ç=îþ'•Ý–pM ß<È.(ó@°hÿ“›é®1É1KsøC‰iYÕdŸî‚øtð“éVÌIÛ&ëã $2o ½ü5<ýË´ö¹ÍS‹=£kPƒ×fhÌ%wÌ)è©é¸ã#Ч.$àìAm$$]ÛeãƒúK¡kø–#0ˆý©™‡$ãPÜBT©´‘w0ž3õƒÊåí<Ôॷ˜smäè5§¢™¾£w)1‘×i´Ž¡æ×Ò̽ªCaó/{:ZÀ[°‘ȶsàæ­#ž¢µ­t‰ôCjôSõbu먶f­@ ;.£Dh–í.ÊOjÓ—‘¾_ÀëŸHãšè9Ó#¿eaÔÚêê³îm$DM ;ã×6§ÄŒ*‡e]q¦];>åšf6,Õlæ%¦ñµúÐä×9,{ãRÓú4sŽ™â>ñ¢¦q¶‚k/ÕäÂñ®öÿ„Þ`Ìær“þǯÇr]æŠI,ð.í)h5…,µ{2À±ÉJ‘õöžnñߺÐÔŸÀ­ Fž’}Ï©/ÁÍŽ6›¥>–,ež¬BºG P8BéëhN’Ào'‹àF†2¿…s£-†¨¯6`Ô$Ý+TŸÙÖ þ‰“à$xÓ£ím×ê_ÑUÛ`ÎOÌU4™Ä>=Wk*ÃgмÏHŽh¼Ì[ŒMÚ‹þ©O¢8ÍYè´­hGo8‡Ú0¯¦y°Ž*–RÎöXôî † ˆýj90æ*]•´¶XQ‘h+ò ˜•«9{… A[²²+Þc ó†Š`þv‘£ÉÈcÒ¹ÌÂèçgMß(²fñÔ~ú7á”\|Ÿr‚ÝT×ÐÄ—ÞÌB‘¾8@cÒÕùp f¥³-yÓ)‘›ÈQg§ÊWŸÝÓ Š“ùCòÈFó ݺ>ƒh=Ö™Ÿý‘Ï]Ý€J>§‘u­!2ÄÕ Vp5‘?(ÚF,˜w_GÆßTÓ¹[Š5H{¬–"¬TÕØb­ì¼‚Ò¹¥—|3)æe •:úËØšõ”º¿M¬]–š²cÝ¡h&dÝA>"#À’ßßܦž’E ¦9ÁnYmÞmà÷=ë-‚È\¾XEË\qa…ögÅÈ”Cébš‘öÑ–'\éH‡6¢†Dò¨ï9L­f­; ‡8G/ò ¯þE&t1O´,÷9cÙtœ4ŠS!~*Àä• , ’az3bž¨u’ã>Á$ÀÜ)d™Á €—’{è|}¹%œëšh±!'D±ù¢mÄž¿ƒ×eZä5ÒÂл6ú%§ vÜs¼ _ºÔZhò•Á¡ƒüù¨Óok•»PÂÿ´ Õ­—ÆB¦,|ŠÖXÀÛøQ?Ez(^é ʽìɩɓ+ð ±”úÑ\~–²‘Êê|Ô…*Là ¶±(èÎ@ ‰…MçaP4´d5œS{Ç’= )‘KFÏ#ŒÖ¯G5žSÈr´£Ó°*EíçUÍ;úø{?•¦#]Ëȳ3jÇÞË<úÐ}òLG]îGÏzgH àøì¤£¥¨òèô7@äAì’m µÀ¼ðhûbá«äŽnc¡­hÙÀ"Mù‚À¯¦ÍJãÐ4a\qe{ÔÍ™¡äúƒ yC#ö¸„0öy‡< ¿©&2™µü £¹Õ õ½)1í5Ô“\¤“4œyd Y‚^ò Bžuœ_°‚#ÿ2L=_¹ øG¶ÖuÇÜ8h|˜.RA~jêÉ7$\5{vv7™m}5so3ÚÊî¿£ê&PFÝ0§"Uó Žñ]>;ÂÕï({RÊì)ÁèßÚýŸtÝË%ÖW¡]ê¦?×MÑi:Ó²«<áÞ5šS"™j€ W ”­ê)íœÔkö37kÒwœ£*#ChìñæÃïYwä ­×xο ƒ}ÕO‘­œ†ô)mka¤$›PÕ>,›ä®jnb³‹w—_löŒ}ét˜Tÿ"Ä¡³Vï+¶œG9ù±iªáŽãÙÎ äÛÆeùƒyŸ]Ö¾“ ‘Ã(ìe1gqN€¢_®¥kr”w!®n>1ÞoêÀ«œ5~cñäÆY¯}M…;ÉÑ7ÊÞq½_%+WXrA+ip @«À²©{ëX^®q!J^|6P+`ô|½~Sx¯hιd®¹ìùêM˜X Ee‘è{µb¶ñ?m¼và³! üÍyNÀÖŠÎ…–?ݤèT],àB‰'™mùÜa§·ïÂ1ŸÌj*?Öé-ëwÄÌ$Sòú¦ùì\J‡â—†'Ù‰7ÃÉm¾¢!µô‡qpغaoÊßݵH½^ýç¬ëBxìdÉ’4j\Ћ¶uèjHúµ}0̨Âò·}{–=jc‘ª±ùØL( dã‰g¨wký~còH-PD€>‹ˆ.“±LC8ÇNçE=ü ßàC”&ÏPŠ=ʨÇâ<ÂÅéwª™QÜeáÎ[Yféi48ÿ¨–$ [Ðï=[†+-ÓÚ\ݵyAuô~GìÂ×>€ÐÜ4©½Íå¨4&±;™qu©¡—­¶…µ+Àlwì§Ô–ÎrpR¾½«q'H3 ŠrvƒE‚4‡¹¨kbWŸò¬É99 >QíŸ9ó"!]NRŒN|Á:Œ@Ýò‹9€dcíæŠrôiîÀ#ïrEœø—ÓJøãC‘@ð¬à¦w~)ÏrŸÁÌ•îáÀfªmúéÂ*Ac¡×%;4NvŽxÊžäÖ+šhoþ!&RñZóÓÌ1e=X-û#`@»bA'–ðkZ¡är`N@ûájîÖ®Îé3œe‚= LM½^ê]&CÁÜö2·}O'^ûpäE‡Õ HO‚Úû¤óA‹qQ× 8²(¡Ý®¤‘Ç<“;Ó¼Ø*9‚»Ú‹þ}vP<à“9´Ø5e”©0Qyô§žá(³ÒZ bq–^èè­J¨C¨dƒ_Q…z–4¢ª/´<+}ý>J²“ö,oû¥Þ[<PeøyáR“ ôë“ô±ðÆ©ç‚{lÔý@ébYê`Amï?  {§¿;èúDË>`5Ø«b…$¨–æ=b÷07o¯¥¢âÏXÖMy’mêû $póNåS£)E ìðZXâ¼ qVà”¯ö`-½áÁ]„=йÞlðð×rÆy˜'´.Xe7ƒFÓM¤ŸÏñ!Æ£b)7¦Ÿlæ;ù«T1Ëmr] ªAâcPLöãÖÇN%P­!ZÖdO&qEV'±y±‰#ŸôÜî7&€z-°˜ÓÇbý1ò¯p\í¤ðÜ5ä—ú øY§åõóJ½<µ“{ §mÇÈ«v7GLCÁH5#sOÞ-ätƒN+pXê'G ôš”©ëéŸXÇcY§]΢ŒŠ@KèìN^ôR³*§Vb®5ᕃ“íH$$ÕþkRm¼à£†±cðÈy¶5>ÇÔ?ö0«A¦ï7âcó=˜Äé­à.vHàž”Ã <{Ca²¼@XàúþK¹¶l½èW å‘°¾ÜýB ‰¥¨m'Ì0ÄçD-Ö¢÷éD}ÐuiåžÚÙóIT>uº¢Îõüð–\»¢™Ø…Î%~M#]›ÜL/ uB–†d€ g4‹ÀÄÃwõ!‡Ôõä–ʉ‡½Z±U²t+õÎÂ-ö[ÛdP’.f ƒkJÝMê2ÜxFz`öpðVqÎ)·I¤ËŠ6ÅèÍýB§¨œHjØ»žòDßÌ®DmS99³EšƒÏb<ëÿP 4˜0¨d’¹m»ùšï0ÒÝÉßCTŸe§LžÖuÊÆÜyQ_]2þö%5ykÉÈÑZ¨f ¡” _Žjÿ|Àƶ=¿‡ýÍæ¾–dƒ%Ðý¤°r)®Hržê~^l&Ðô 쎮³IÖE/°]þRû*'Žº››#9·Ù±®zu£»T·Áü¥èŠz†º[ÝË’C=í”D'BÂq7͉ºo~ޝÄö"mßJÓÊcÕ,ÿc ÚÛHžèÎ ÔDŽY…Ñ4“ö l¦«Ú?ðòæ1%ñ&ž ü¾“7þ„ ìà´òº4Xƒ#ýæ'Qíè ¹¡¾¤1³}tŒ›…´œE›þú­§ .ñ`©°*øÃ‡!õ•So•Ø „½ x€3î--Å =SšWvúy%®U’kµ:¨Ã½nÚ(,¿¹(ôòdè«åDÝÙu‹nôÈ9Ø‘Û@BŠqÀôGïaÉP9®žøgª:9û‘Ôüˆ6’šèöÚyL÷ŸÛ#`”uÃðæoR5ü%Þö\À!â”GªXÀåÀn–1ø¬É&ÉôÑŒsé—ªþ^ëBzi‡¼•îý›žÏ뛜Š}L¹üÙRÞ×&]ub‰ˆÐ°WÄX"¯ ŒJï8œC=e4(Åuäo=ÍÏ鬋óNŸH«ùÂ/V¯ÙÕkÿ!Eâ^Ï ŠAö|NÛê:“ÌGAcÖ*â#·`0å%‰áD¦ð¾Ç½%r¡$ÆyYÂ6~ßM-xŽ«@¾ÔBiÈ.a“¡çËœ"ÍÚJ¸Ž˜â³UßãA:08·Ì/CQ·µ1U ¼Db^ùÇ•7˜’%6ÆaéåMM4ª Ú%å:ÄÕ–¸2ñPuº; í¨Ý§kŽåÇä ½ÃH|ˆáò.¦Ê­.jåMEÝ ·.¬Å Yß§ k¾9W1JxoÊ cÄcX¾‘Ÿ­<5Œˆ¾%¶k<[é0֓߃è‡÷ÌTlÉA< —e Pþ 7×2ѽ8Ýhk°†2½«„ Ä·?/iq t³Å܇{ñÉqæó_ÌäÈ?×µ½‚\Z ‰]lhKÚn ^–šзÒLî :Q¥7³Æb#­V³Žç2ñ€~~¿\çåÎe {ÆòVg…ž2áú§¼§å3¬z÷ÿL\åJ ðxŽ*r‡=^®Ž*2æOƒíëG#dœ+oôFay¬^êùnÍDÝ/2´KD²­2Á! ^?äzR‹%!¡ŸA4túZÛ76Tü~™ÍX¬Slÿv}‡2‚øöÛoÊAÝŠtÈGH{Agl(MOy/—¶î¤ë'^½Ÿsóø80dý¶«Î)Ãàw07(ÍÑÔ|e…AÂÿH"Oƒ_õ^ÑXå+¢¸_úÿ”Ç¿ŒT20a ûxÛÿì$R¤]ƒ9Q—Ó` ÍnÚ=H³C)å¦ö¾Û]‹{;ïŒñD“êLÜR)A"'—ÛÎ~ø!ý…©æ8¤‚g^°…|ïÙôxL@)‘GH­±¿}àóÃI&÷‹»Tl§ø ràsýd[W·}êyù,  i.PR¹jôè×õªWc8¾¦0vl Ÿv÷£'ð!®7÷}¢T$«!r!à?lñéÏ6WºþÄÀábO®Ú㇠”3IàÐ4ƒ(‹¼ßÌPï ,ÿ¶¡}&çM£>¢Wsîæò–{~2ô£¨Š ÿ%ì¡)‰`I‰ñZõ­Ìì_ µÒa†ÕúZ[B ‰#ÖæÁÏ–Y4ÍM ޤžTn,J(W ô'#˜êY¶áVkFc¶²pÃMˆê‘„]}ÒÛ?£%4ÁpêœÔ–sÅœ?G ‚d-i¯R©À,íÐ{ÛC‰„‘ž+âø†eûŒªo0ÅÇ^ W¦BdðïêIÎi¿×ÏÎ!ôž.Véûî6é_8ëD7"EïM«ÒÅ8Ö<«H{kn„¦+ˆ¡² ¿,'¥(©ÙµTìÙOÏß2e¤;°*²!†“ƹF&<ÿ-š‡-=ÅG)¥–m§ÙJ¶[y Uüto"îmGÎ'CíÅå,S ƒxºƒ ê72@ yéß<žà¡Ã=dËf:k,uÉŽ,:3*ÓŠ¥¶BtIJ/Ÿ„Œ„E%ýÖ+‚» ÙÓE!ÝMÄ„›w©érÁlûfû\ÂáÏ™ÉífÄkIÄIÑ.9®ŠøôR²Š(n„b±{ a¬±ï­#}BãMVx^À”£¯„mð—MSâJ³V·A$šKE‰.S-²ãuoi“/l>ã ]aLS()ï\«‚[Mg,³êÈŽîüaÆÜ·IK9à¤^;ç‰ßTß6<é¥ëìµîHÌeò¼ ·z±´F Ìà-œyd©ù512Íí‡ÓTL4Æw‡[øZ0þšT£ÇXÐÚq…º«y¹†[Úœåòìå1´Æ²Ádðû1ÛÁÿÍÜ”¿xP‰êNd8´ËçNNŠH“È{ÍÓÒ˜R“Ú‘p”)&æwÝíÊ÷[!Æy Kf“v…¶·­¿›uÎ6nô…›Ë”1V~+»„¹^ÖSî®Ðþ\?êùæšÎ%¦$w1g¢ÈÈÙ\”ܽ*å3ji¬Ü%N†¯ÿ™Þµµ:±Y›Ûxs^G¥eÞE=, ­¥1ø·½% ʬI AŒ#ô:´Âs+Oì"rîÓ"Ï=5T)L¥ö”¸ás#{Íš/=c Áv#.|æ×aAM è¦áhüó“C&×Ê™†ZÁÚïÆ<[=¦Hñu°Ýw‚±ªÔÉ|±†'ÃÞ Â!æºìO¸ñ^É$XÞø\¡ÿÁ)Wx?ø›Úvk+'€u¸Ê$É|› c¨!ˆ¡·fŽä|\´^ÈAÒõIóÿZÔ“‚õ wjÚ­&`¹dêˉ$‘[üÆá1³D@j¹ÃʰejåmFêõÔ¶K/Š…ûcnçg£7&´ò&Vš¿8teArhRÍpþý²æ¼wñ¡¨°ñÿ¯•5ÂL”À¶æáQ-ÎYúVÒA÷K*¬ÊXACùØ{ƒUtJJíý8ê .ȵ,NÂÁ4¿6²k´¯·ïƒÃ)ñGÉô4Š:sÛ.²qOG4ãì”qU‚ÓÚ` &Îz[¶;Ä;ðú,R—×,]ƒ+q¡â ‚“ä:à–í\øþR¤Çl¦M«aÞwL´±•–E;’n­²ÄMì Mû](jÉÓªÈ5ššß.Ù4û”hÖóƒÄZJr9a`®!}#¡ì/”ëÇúв€Nçæþ7µÊàÎåVk2­±f·ÞN''gæ¢wÜk„²Þ;pÐ…_g>{ã„Ou'© "ÚlàP‚²ÞqߊûÆW½yǗ¨ìæPë2ü.hË@ïxRd‡œÙ N$ ±¤Ö¥’môŒ=ØÅÕÏ|¸Ø½Ÿñû‚‘ë C?oÃÛ–vó´ÿ,SK‘a÷§[s…dfïÝfMÎËäÃêáÔL ÿydÐÎO7¦ò|xîáäD cTÉ ­¦µߨ¡ö¶OïÕ¹¤~ˆjVþ™Tª¯)?}lB-gêÝäª\ý¢u4l xÈc”›"†STóÒPê}X1a©>ÿce…Ë5‘òØIÛûäEj·ÔþãSÑÈÖI­: ¦° (Úâ£ÄŠ™EÆè­Úê>”S œfX9|üœUs5ù{_øÍcRÒE¨âÿò«™Š½m/7±&jYcC‚e”!Á{Dƒ¨‹HªnÉÉìˆG1ÌòN3Rñ.á=—nÃ/GÞc7QPáØË—ÒÈzS !TTÂgßúƒYE¦4alêw>6´e7ÙÉcñ¿·§ûûÛ«$‘Í)̺ÜñÔå¥k0Ζy@\n»ƒ9S«pEÑßï¥GºsÒ;ü œv,v#É” #’E¦TÚЫsCxÉßH<ç0·+Q„ ªîëxGÓ"ý@Ûn(÷–â ]±vš‘þ÷¨2Í߉I—ÌÚÚ-©{‡^zD&a…E¤™µ?C´õå#š3 ;ú¢jô®›*¶¥a–ºKR žHÚµ˜8Ðgw݇ÌË5³¡kOÏ>Tõ`Š\Áç?¼Í8@5dk z^ÃR5vè[d™LëO—G§1vuôõVkF}l‰_•ÎȵÞLøÏSqè¢b¯°,mñµ^òG>¬}oóvÑ}7BuQ'1ý8Ãp±,À„}˜|œÿ¶“¿oâÈ3JsšîÏ•]œ}aµñÕ¸”¦ Ì_fû•6ã×É«èPGý»R+Ûjë±Hã7v R¥¶Òµ–ÔÜ–\(k–ð·öè F5‰|gà“­¯Ï¦˜Š¼ ìòΜ{E/3äYÕuiÆ?²MÖ‘×ò~M¾Ó1Ð4  NswúÁ±ðô+löáb“Gé`¤-²‚9™&»fë¦Aø×®V æ¨` ÿ5ÙŠ³ÁލÁXä­õýö…PŒï†â-K´ÔÀØn2=È¡¢ÊK…¢`5Ù^¦ˆŒ¾yÛÔÙÇvM …ê.Tû*", ÆnxÁ…¥vä÷:VþT’ú›`“9®õï^ÂP‚wÄ÷CÍ »»Ñ 3ÁŸM`¢ÛÖÛ›ì|”Jà¢ûÆ›/« .$Mµ^ÿEÜm@”¨\k½ÃÕc'{{ÊŠ8ö…-ó'xo–ÓÃdÙ Æ 2ÝlÑ´Y¶WqMQ8ç&·Ff¿{õ<à=Sµ– ¼ÝÔï¨$«ŽÒÓÖi¡âñš#(á©´“dU÷î¦Eb1z ,Õ"Zýݼ†këž'>¯éÎÇXÎþ%0½L=1•´ ’E¤ù8IÕ{‹Vi9{T› æk¥tËòóê‹{ËU_Œk>ôZ® mÐ/ŸÜþ ³çhÜ ßУ€w8ré%8ó5̆þoå»·>ð<)Ò¤jÞL‘œêXSEÞ°=‹HÄý‡}à´‰ó#éémÜ¡¦ó…oºàÊøpc&.%zù'ˆávWBø?òCíÆ3!ä—¡§Ú這:TZüËó´u×]<·ñ¬ðÒ—5sª XËg–c܉5ËF“âšYfyˆ¦›?KS޳²·bÛ‹6pW,-ªúwAÅqÆ‘8JQÙ²©¸ƒqê ¾^³‹T"ç¥ÖRÝÊd Â½P¹™òƒ³Ð¦°41½ãÙ휚aS+IìLÖ~’¥ _ä^'–þ])7 Ú¦;Òeîó<ë%±pEgìë_»rþì€}[Ü­ý§_ÔãûK=^Ü1ãSÕ^SÀ#¶¯„‡éêOL+gÖÐD¹…Üÿ±ÍIBjt‚ƒ­™a”8Râcíž°*ÿäÝÁ´Yøõ~b’M·8RºnÄò’ƒW,\ó4Áò¥E¹À4nÖ ýEâA“®ž\vE-­¦>|C]ï¦G}«Çe⟯¤Ü8-¸ùI8u3{ ‹ø¢åQM²7îì„5t8Ÿ—1á›u¶µpUôŒ-ªÑæ[* åCjpÛ9šX†¼>‚AÿŽvqSqˆó¤[þ§ˆççß ¦ô¦t‰ä{| St'ùï ÐÀ‚UX ºTê±f¤MŸ·\m=]"‚ ±Ž”çÅËM0¹2O¡©¯x_55•›þDk½Åi7ÌŠá™@€Lâïï[±ŸûŠ „|gAzû9–ßœv EEø2d>*Ox«ŽÐé¼(PÑwg=߇›Óâ Y®&ÿ›œk-’ïyÅ_$ÛÔnÙ’r@#&‰ú(Û Ž¥êßû·±ÐÀ¯ls¬ít¢|2{XýOß½ŠŽÉû³ÅìÝ´fÜÞSÊ¿ó¤•lqààïA¾J8 imw¤ ÉT‚¦Lv%}€ä8ê3•ð‚±RÊ”}Üp(M|¨ñê¿É£™ßhñú; ({‚è,]o¹Ô]Ò÷Ñ:¸¥/Â+äÀž‹¼Nƒ¸i_Û¢pâÅ;ƒ—™dglðîàÛ«¿q;P-Qœ?‹Þ½F¶$˜RÄ2…0QW½Üü2ßÄõoÏ5žDîÎË,½wŠ¿Ç5ªÐA0µlk-*YÈn†fg(o— “AÙ°Ï”Ò`|m!~%oºóä/%7üs¬EÅ%ß³`rÑyCÓ¤0+ÇyÉ#5t{W‚À†8ÌàÅEcyI§ƒ?µÞ}±Hÿï||æÁT‘ív[+(‡`Ô«¢aÎ0$˺; Ù[ëO¢2 1õ‹ðx—Ý…œÉ\—<¹ñ8–ÏÒ›|œ(Á V;˜U˜59\ª[¾"“9ƒôöÙ肸 ™¶¢ÉĘ9 ž¦!ºþ?Š;½Ü¾ëz3<€ãîpñÊ žœ¯Y>%œÆ1ȯ[àLçoMÀQ„Æp b¬je’ÁÿLV¿ƒÛ—°ýÆ¥»z#‡±“`ßt~o€×ŸÚïÞø ÏLœ,øˆÐ披E>sõÇ$ GÇ]• *VC·g–¥ïò÷囜zX›K+Aà†•ƒ’ ®7 oÞ¶9„B×a~QíÙ\ʹ›º'“nÎr‹öSØÂÛM˜n1å>hiD“õDG/z8 ·N+Å}-·4­Ãã9Sgj@–º"0ÆaZ®gMçôwÓ[BhŒ†zÄsË«)²'ê™7«òÊ÷ €ê"G|Øy<³ñE1‹·cõ°%·&¡-œÿæACFĹŸÕMaW‚µ1Dw‘´rn«ª—/ü ú=s³¬# `ÀÀ+eó"bú¾û¹Ûv_¿w'÷‹U“;ü"Œ˜¹-“ƯfKpÖDFǹr‘XŠ…#«;"Ì¥9—ëIMÝVÇÅ‚ñÃ6êÉëFÝ’;ÛŒ‚ÆCd$(áLg!ͼ“=—ÝçúUJw³…ØOr¿âeµ L+d6?EÍÍ™H…òr¨âÒÜäøàÎEÝž?â µ|#ʵǶ²â€òjîÚ}RK3Í„y‹B¹T“çU…?Ãôë•ÍžÜâEê6û×¶|V,ØÒ`ŠMmÊÈz¥ œ·ŠQݼôשxO È °©ÅçbüvcGÐñ Vú· |÷ÎÃ/rI>GŠšp°9bBï(ïvI8¯Üêkäíª´aÎÏhóDè ¢ÍN¼:À wY˜+H¹èçóÿòˆ"°ŒJÚ³‡9ÌÊÛ2rPæUÄ7¾+Up(snØÏH’/})ü»u)MK«šT÷ >ä-Y¦Î–” ‹>fÙzƒ £u§·3ü¹(˸Cââ ã¶,-a<÷XíáDøÒ€}ÊÖû¨&¤=Ï­gÿÎÌ6‚‰]n/uåC]õl^H a¸éŽ› _m @ï›B”Z{²}Ëöóí7½ÓÔÛEs­ˆã½…jƸ¸fe è‡þŠT•PýkX_Á¿Ú6ö^üñ[6ƒ¼Ýï9WD´êÒÆÈ·BµN®ÐK‘or£d6¢z*ð²…¿×&Î9<òTl'“pˆºH„¾;ýHr×/±ÏA÷ÚØR,"Zå“Fnϸ´”lrýæg¿¡»r›Ôºv÷¥ë•Ûî¡Ï½†j‚j7×’Gˆ›„ÏnëT,óļFÍá!w\bî–¹p$_e›Åa®Ø |nB:F‹B"XK@„{“‘k6áVI Ôã$Ëb%ŸËíÙx¬I5úwRx*ôBNõÎ_ùÅ-Íû#[^¨åLMŒœàZƒŽ?Í|»Ãð†™Z“j©ûQ%×…Íe€a³þÍ<©#K®Üô–×ËKÂÖyô]@.èFqGx#ZCù9¬¦ÁÃl“]$Ÿ‹¦ú^ß½Õ ž¢˜ƒXêžd¡TÖ'€’üËuqqøt>¹ßõƒèb" ¿‹véuðZâdïnHÚLøf÷ŽäCþÃÔž2±Fùº3ÏÖчü@V«Š–¸wŒ«Ë—x…Ö.PøΟÚ$µ^pºá_’8;FKx,”´QæÅôz’uì#¼X¼F#ʇ G°Æ§Ã‘•¸’p+ÝB…‹ßv6mžh ` “GF@vô#R†»<âáV•*ª¶ê•Jú•©mOyPî¡ßŠ ,𶔠šޢ}1%_•-\·Ô¯c¸±PE§VÜýsÄõ~Ëy“9t¬æ³BâÐÑDj¿8ßÏ '|ÿbÎ6ˆ$¸Mæ­Áå.ðž-æì8÷`^³T]qÍr¹_ò‡<¢ô¬Z–lüOƒdM»2Jü,΢"ư' *b5y¢¦SWÂ[p¨Ž ‡k¨’Û©«Ñ[B©’¤.E§ì>yŸ^—eb“³~r*æ¹]¶8±”'á¸~6øú 듈r_‘Û…V¥é³jA¹åRÒcó¤eÑuÝݲ ™¬o.\9Å1w¨ÉìkL‰rNv DÑ©NlgÎïNîuþñ@TÒë$ÉÕPÿëbj|ת†°à?™]-Ž˜ßöéÁe&cŸÌ^¹ê8&h š÷CˆÂEZRh ©mª»W^$Ê¡:\+7}¡è§iéþ(WžDÕq võZëGq¡Ò»ì®‰ßØGmªl˜RRÌ»³K&µ€‘¯JA^ϬËMl‹?={Ð¯ó æ”ŸD 0d£ê†F¯:ºÅ§eeÂèB{'œ|}¾íæË]7/T§˜!mQ§ 6lžºØ$ô”\Ã…×K%³ í=;ËÒU»ªiÌ3)©ž¨†Ñ>"Ø0!t6É?yËTߺ½A"\´Èëé9Õ$f¸ü*è‡Ò±7 _˜k(<Õ‚µhœC`W¨UR#Ë*Ó2‹vF ^"äï$[‚Òâvâ—–…Ÿ³ÒQ¼×®I äJ¿ =mÿßqÝÀiý¾°ô)Ý,xÅ¥ ª±JÝ³í ¶:`8…Zkæé|¨³³Ý¦{¨3Þà Ÿ+Åÿ*̵‹Ó¤pm§½Þ†§Ô½7GÂóqq‰]&ʡٺV‚©Ž#õºBY/Äê–LW N„S"šju£Ç÷ÖC.NI‰škw’IŽÜ¶¡øyx¥«ëp]æm£jYsÿ0ifâú¤ÒE±&¬¹$ð'²÷¨sÇ|UO¾~ }!ètz+T8EÚÜÙkЮɶ ›yëµÏ:@bŽnã„ŧ1’gµb äE²Þým™YU¨ßnÀ4é¶vµTýE¹bU„V|’¥s„?_i(ž’ˆL¬ú‰ØPýì—ÏpÃêñØHÁ§GT›TYË^0U•õmÿÞ›çÑ‚’×5¯ç¨áÕ ·p1EZ:ѤEðŠ8µù±MB%„…¡H;™›˜]ÊMUw8œ°ræ#÷î´—þ —Oû"õxªópÉ]È'Lûã¸)ù$M¹üÀU¥×Ž÷ô]7Oµ4o§8X6j„¼ž´ñ²7"oÄÍ‘+.im3V$Uðò>ÝÄ4_åèŠ%jåV,'ËÖó”pÊb!½DMÞ@Ÿ«:©ò¯'­V¯ä‚e#EºÏcþ€”²z–*ÞžåCC§©ƒ0Ìß@.~‚›¯_õ»LŠ, mAØïð 1‚ʳDêRP-oÛåû/"mÓsÊ$UpoȹX\B曈€•9E*Ä•ÂÛ@s½uÙhY¸[S0:\›Kw[Ÿ«W•úRILR…J³t³á„a1¾:ÚÈ)G܈Y_Lõ”À ´à¾Ð#£Ÿæ¤Kz8aÙ:e+¬`_ gý® iv\.¸ˆõ¹ßtÖ<Þå‘íXï ãR_ÍJ39W™çaË2¨ö²›B˜ ÙUü‘唄ЉÿVÖ ˜•Êù}Š•2 KØ’ÆJ]MŒRÀã>LkÜDΈizD¯08ùÔÞÐŽ r2¶òZÉQƒr‘NiÏÊK%s•^}wÛfƒ³ ¤ùzËö8›=±¯¿Ù@‡?î]+µË¤9Þ('I‚×;¿qÔ+@îêï¤ ï_¼ ¿â·2*?#–zשjèÇ|Yþ˜q2tɤxN=â¡£#`7óðä`ŠØ%òñœnÈáœ5éÚí²/à[aÅj“°Šï­;ìûGì[àc3,¹v~¬ûâ;í7l\¿ÞÑÃ@Ow¶†Œ™ýÿwÅ_AG³ØÑþÚ.DäýìWÙ­³¯,íÎ ÿ]=¿AîBÍK |êè1ŸÕ“E9¹û´ŽlH˜×}e³´%ŽH „*Å/á_ZKÎÎ4@’ÃK=<6Ç#èDÅÀ\;ñœÛ™‹ [Š6b%ììÓ¢²ÀÓÑu]GƒášÒ‹W:„Z¯£JËÆT¡ÿý›%P#z¼ö²NJGJOcèÞ€Fy§qõüï ko´:½Ýg€¿¾àN‹€ý?wãrMQ‹ÜÊ7+9,>càz]¹jp@$JáM&ŽÍ;ŧiI/ô0ÉjthùiTËe26(©ÃÙçC ʱ½ƒ·¯³ùÅ«aMS©Ë?ñ)ô¨¾c¥1‚ß NˆÍ-ö+Ë!8»›æÄµ7×°<ŽtX–%榱Z†°ÿÞVƒlÊ IüXj ”9A¤¥¬ÛVè»ÇøÀRz埀è4?µ+¶- è’ãN…ÿÀîtífÃþ`óƒÔ­½ Wø’ƒòPôeÂd–ŠÈƒü±/àÏǧÓ?G<ð¬0ÿX0~C¶èõ7àí…73Š9la:ÀÀ`Ê÷Û£"c0C?Óï&P¡Øè¥ýTí\ù…‘EODå ±9(OÑS¾ÀCx$ö¹ïm:~”1eïY˜ç§ß àx×{6µ§Áøœ•)`Fý.<%ßž×}¹Awƒx±Ì†DY-’PVZãBht]ÿ#?¢nôÕ$;{3E‹†…2ž<ÚÒFü`ƒð¹‹å_ìôïª×1Æ-‚ëÀ”&B“ííB^A"Ξþ¤]J6Yèq­«zúSäðŹ¾œMÜ\‚¦Ôw¦÷‘`~­ª—íW–.RšMeMîp‰€Áw‡»÷.ÒEÌ×5QƒÄp$Uýk0ã'_íeúýúûÕöuÈõ¦1áZ†Áu–i‚duo¼;dËø¼¿lQ[â©~xt¦‚rÛð˜[.„ À{Ò®*ŽRˆœÔSßl7—Ðiâw¹Ç%#ÚœÂ<¿~`z@‘€ýƒº5ŽÑcåj˜øŽUxrY?æ¢má~¶ÕÞ°2Áz&B¨Û¯ź»á(Vu‚W·¹¤ò©e¿¾†g¹€ß:ð2\o½QJK¥W‹; q]('úv÷[£«ãF@?ø¶è¬œss?é9ýú‘`ÛÈ­³îO`bѵb¥0É :ÖX`ÀðàSØû¬Y Ÿ•Çm{ÿ®—#Ãäz:XŠZøœ£¹zQNãË ¥9BÔÈxJ7¿è,Ñܯj~[%ÃWƒñ8$­Èµ8È|‚Ù³F (ÑÕyÈï±¥Q&nÉBË!MÕúu?-€þqx%ÿ‡’"MÛÄ/ýÎò‘Óª³¦ÉœÛC%à·ûÍžê÷MYºpÆ×ÄÙìÆ¤M˜léöÅÛ&À™SýÃõmè©Ä2,xê×{8a†—±PŸ0gÃè5²:ËÔçÁ÷“ ô²…@÷½3îKÔÍSÚè—Ö˜mÞ€5Œñ\³ Ùä›QuŠÿ$½F ‹~ûpïJ¿`µÄÜ}Ù°ñóÛø, m†`ÂúÓËÀVQFKóÓe [EÆhÔ±îô t-c’Û…ÕÛ€ä~}S¯TÝØžGøØe‹¯<_(ÿåµ6Ú >* % ŠÖ~âWâc¼JõÚ'°,}\¶= ç%?Ø‹ÄÃZ­&ŒñiÖKÍÖ¡þìÿYËþZ„÷à¹ìjƒj•ÝÍ^Çí0šÚo0ù @‹ôN¼Œ›“]i»2ü±b!F?[œÊí5;‚† pÈ2µÇDzóxíÁúÛD)C§åè²DôöÉyêÔ³¼ý­‰þ0CsK»ÛHÄuâKé6/‘«ùÃDxN˜{CCâ/ÝWÔܺs|·U©æ—QuÒM§îïÙÍ¥g2”û‡q’ „£é|íä".ÚÙÂØ?Ë ùI‹pîÄ×dfDž‘ îL²•m¸}ÚÌ8Ÿî^ÞW_Ë&Ãk×:GÌò©ë('¨’:â±ÿús÷ÃoA޾Eö"*¹¾z³ÙÙ(øhñx½Q‹ ð <¨rʯ €¿g FÁÓe šEà L À ÿˆIÚç%ófÞ¥ö+?Ô²,AuÌøD¾Ïv †¾‹²~ TC/õ!áŒÊ$1`Æ?™]Ò-·<É0"e§{P“JZ¨¬EGåÌn;–;wñ«P¦0çd‡ PÍß}=>¹þÅõàιŸÎ$ý¹U«>Ú’;ãeULÑ °ú.ÀÁùN)$ èÔ[ý»—X'g0Üÿ„V³e7²µùÚJGút*Ó¦µYä¾¾|‘ÀOK’ฯx´Øë Wß@"‘™™´fÜ'øÙCšÄ° GqIüG 9¨šJ]áUžþ"ìFU ØHU˜47µE_¥ôD^GÚ¸¼*{ë×~ðrÌŠ= uïÙLfcêtí´eYµ>{DîÐX£Iηӟ¥§„>Z®1{ ù‹O&†ëkŒk†É#OÀwC‚kɬÀæA• À–«ŒÂt›Aø03=Cü4D:r›ß˜-m^Ј‹¸ï×”Å~}n‡{¦ËÜ•ñ޹¨–¤±¶YƸR qfÝrî õ!2åïêÃ>RDzPšÎ„qW•Ë!àÃ"„}ÇHc`Dü¥ƒKýâ¹DµVùÙ•õÖ#0šÖ¯|aL(H“Èÿ ‹ixÑã©ß\î8C‹ÇÛ­úaæOô< Ÿ0õ9ä+žt­€ié¾å˜\"yLG”Ë%·ÏX+Z”BüâÙͤ£SIŒpj&…®ødûb^£Zÿ¨‚p༬÷!êoô@“˜§B ßlüG.sÅ„“|†²ÆJö5c2é•Ytï‡5m hÑãȃe¿.SÃìDN³Ùù ý…¸t;>]Ã݆¯`Òö\ˆ~“v긖y–¢ZjIä‰X£s`ÛZ\‡`!½ຠx¶Æ‹¨ÁTtú¾Ýâ‹0L«®¼kSööÒ‡d[ ¹â –6§µ9×¥ø½‘]¢¦ÔÑy2×eŒuó•Ž€>מŸ2B¿’&¸§û1%þÜ3(ʨÊ]ÑzÇÉo:Lé`<ÉC©ÑÚÃúæñèdÅãéö9צÓAT[4«r¸õ)pxº5Í7¤B%*ã¢Ò–¡?;É‚¼SôC]&òÒ™ÓDx\¥ˆOǘê <"âíîþϫϜ€L¦vå¾YÖç{¤Z_^§óJˆâÈ‘Ún… DsäS> … ¶tèÂ?ä=¥ÐbÍKœ$‹1XYD &3¢ø³ìþru‚}g?[–4Pˆ ~º$ÆLHõ”•™ºŒ*ÿúrûéŠ ÿÙœ'Ú €ŒšïN{{nðÖQiLmÖæ‡¤¯˜×mH™‹w 2Ÿ ëAôú1Q}Õ[»Õ*¡W´÷åÈ¿ƒáõ“ŸEÑÝЛÀüåZ C¯[’ÞêkY<ôy ?t2¤nà—nn¶Ë× Õ\v Åf5”¸KxClÉ`¸Á5_qE Ñ[‹qì!1öŽMò¶Y ÚŒ\ÝÓ?k¹†“%2ù ~]*µŒMšáHœÂŸÊD,Ê:º*ú!Ñoç€Ï­-ï|»Z|€Ú©Úÿ%Tsír·.»2 l6›×ZF‰ÛšO”\Aì誠ELIXòm‰Q‘ ž…‡Nø˜N&ˆ]=ò¯ç¢Ù|DjEöÌúø4ñg½ìÎKÖ®DN¯ñk—Ãàî¹§W= aÌ5²ø´oŠ´1%œ@ðRTÆ~üok« “3^²Èúýq(±ÀSÿåSÓ„_·uˆ$øçC5žœï¤!¦LUF¥EF‚>Þª±e÷EsG\rX±žϳ;Íʹtî4¯ZB›_ õÉN395‡p欘n”¦œ_WB÷¥³Þ”7wý¤²h áøÁ¸áã;›*Æëîã÷ MúÛõß5âvúÖKÃî’:Sÿ)„ç¸ÂSÏXbѯ¯Æ+x$dú8ç}MTOßýaþâüîó!a?#>ÅØ2íצ“Ãÿ Ýð3·àdŸé6~×jøCÿ_3Lb?ŠÁá.¡QÙI*§ºÔ÷ùa΀¥´}1†¤âçø¦ì¤QÏ:-Þn)&$øo²ÃöÎ5ëÙ…ÄxN ˜âØÐ˜È’fMŽVq©„c?ÇÉÓ½4]þv¥ ŒbÞ9ë³TÇ£î1M¨ƒ{ùÜñÑ¡¼•Vþ:iDV¨·rÆ8ÛMáI)b7á«nrQœuµ³ÜŶq¡vRJÝ|6І(̈qÞQ~×WŸóöäŸëª[EÔ”¥>P¦;¢·QÎ$Ëà'O±@ÿ^;£̓^‹¼ø ¢ÛÃÂÐEr?<ª^¹ƒwVô #™#ŸÞåq¸6è¡PYlùï¸%N»û?Ò¸l V| ÖýŽ4½>†·…"rÕŠ}ò@@ ô?‚Ü~ͦ—S—T!€6÷[Ÿ…€ÒhEͨwàg‘” T«µSÍ÷Uqެ$Óo€L^´Ó-à(Ç@EzF|¹nûq–äqƒŽÓOvƒ­[4YLöÚ04—´¹“->rrÏö+ü¿'6ñÚu†³Ë/Ÿ—€[*Î* Q):xq‰Ü‘ç /€Þ;'mŽtÑ¡1?ùÓÀ} «HY7(MQµ>÷I4+Ñ+°… ©œí“¦Ý1 ã§Št_Ćlæ[%ƒÇpT,÷„rPù=·7tJwu ÷ìuvz•8­¯ŒpÛ@2y¹jo F OîîÁ¦Z|^üªªâÍm@qH%°ë]ÏFç7c‘†Ðqõìó¤åôù*D©V=@¢.†•X_ùäI·;€ÅyÜÆ4Ÿª¹ß‚ÀVnQåšiŸàv©'g!NX½0ó‰:Ö:¢xqÑm®äÞìŽóžw”u©{÷‘–@é}ˆîÇŸªÌÏdHS·”,¿øy(%@%‹?S™‹ÕDþ\Æþ¡Røå/A|åƒÈááþ¶å7‚ð­h3,h˜Ôè½¼°ªˆd¿jøç=]zóȺáálþµ»ŠÀ…Ñ«ÃoÞ²‹dÇÛ$ä8Ê2°NšHu«ëúÖ0"¤¢dc¢Õ/Ö2®V ÿL‚–eóÜáÈ„nùädå¿ê‹ ®oƬ<ÄûU lp ¸}GÁÉœ¢šCT¥ ËK²…M²5ޤÀ|Ä^ `L<ýlÒÓr€ŸÄïótá}1ÿ2¾®Y«2$iHïäå]±9Ñy£ª×Þ“úÌ7ó¸®s满CÔÓÒó{æ—í áñ¤ö»Z)ØœHëÿæ­—|ga@ƒu~b7ºµ–>*«´‡éî‚æXx®¤CQ¦q;™„çïÜ vRú…†õ?x•‰™ÖMÓ?¸ÐZÌUk´ ÂmÑ3mõfï=b”̈7EÃL½¬¿ Ñ4vF?"!KWNŽ<‰æG,P k„’Âé@É?~Ëd„ 6cátÙàZR»¨Ú¼~+]~úà*XùYV_K³‹cš¤7é¢Ä2¦þ~k¤9ÅØñ¬ñdh•£&;¶k7!,LÇ Ö8²A7ü΋²·—¬k9_þ³ÛŸá'ØÉ{¹ØÝºeÍ´oAmÊ·ê£ ½èÿ~bê'ˆ°Bb¤q–P—ï#mKáîÎ2x(À(÷6¤øð|€w¹*’@‘ŠmjÝîÇGõèîx•§â ÔRÄgMI”ÆÂZ)ê>èÆüÂû/9N(š^OéiH{·¨1ª%¹C$ªI{o­ÑœÄò€%ˆÙv…^j!ýÛ½´Ã¢Íz‚¨®täYâ`Ô94ÈLÒ©‰Ùç -8:€9[˜©+w¹Š÷4D;Âó¸¸Òq,"öÈn[÷Úm{r•·ñÅ…™¿Í—`ÿ£ˆTÀ-Ò÷€ï»ÚT¬˜ SÇå`¥Tsj0[‰Ø€[µ·WÖ™Öj­] –·Ë®§9 Á‹¸|¼-üø©iD•æ˜ç ¼Ôté"¯êÞw÷0C§tB#§ÕÑæÓ þËë†v“€›Z ¯P´ÉÞØç¶€RÆ=îÜ„–7Öö¡ž¨D 2åz<ÆHÐŒÚiˤY ÞWˆa2P¥× weû¿Öt„EfK°„bÊk›ËCbÍ®±Xæúf b€ÞŠ×A™|$˜(ß“ üv£&—–°¸åfqÚŽûa|S9nˆlù½oú%XÃêo§Ž¢îÊÅ LåBÊd%á: i{h|/0MXsö—ŠÌ¿sv[Ë£K'é“ rÿ ‹[Bß‚)WùNÎÔ ¿Lx&ó¨èà8v`ä՚¥©­¯†ì ÓF&:"}2æ,sœá9M æiV&WÖÂÝXtÙwÀ¹,ét­WÑuºQÃÂMT|J(ƒ%ˆ¹@ª¦9ü\¢EQqjà~ (Xý]18†iuGêê$gv.[lv{#e¨ùZå*Ì×>ÍÚ\(ð¤¦Î£f@†'¬n®­)¦6^±ÂÿfÓºâÞµKRКۿ]<²£’­J§NxÑ*ª`]wiXt5¨±6ÚÊ}_ îq#P %óF_šøýO[’r4ÓÁ¥nPðµáæ„iä§dˈ)SÌglj}ÿ„ï±ö6®Èºë>m#_ö¤>h±•̽+÷òû‘ƹ´Ï¿Cjgñuž_?=¥³d ºTÁ[è»è–góŸ‘.+I¶ºý¯Ø¬÷ŽéjiÌ€³G žZˆ#]AL_¸°€ßWåAàJ¤išoœ7>Fæ2å}?ä§L™¶¿ä”fÕÌæ ¶ñ—<Ì>OžÃŸ™ÒÍ€™cHÕ8_‘Ü„û”VãbRsñL0\:¿²z,¸ë¸jšB=øKæõ›ë¼„*†FÙ“JQ18!&N4'‡säÝ1t¶Æ'H†¦ DŸä‡ºL7HÈP¿w´)} ¶ÞX~U?iÉ–&H«”SyKUR#OßBžƒ¹ß·j¨æõ/i Èî1ße~±Õ+É£¥¶uÈbä}M;³N²+hÔ8Ìè£,¤Ï°œP5ÄO¦¥$Ûÿï÷«XȨåðæ@,f‘õáùK¿9îãüwÁS”[»•¿+iU¹Wþ¢àÒêÞ¬A^ÉúK_q†–!Ü@Û×£)OªÑ_ç¨ÿ«c„Ž_Œs2¡~´XÛ’p Ôj”³G¹›iïO{šnÚS®w‚q×oÝ«…nÞ]ú¶T¶¡BPªÃB§Iæ®+¥,–#ƒ“ã“(+¼—ËY<ÙSY©s…†®ôÂW€’ÇÛ[­©¢pC£fØúwÝúDw Ñ cf:°ß—·ë>a éx´ÁkÝFÔ]<ƒ>}Mz™‡Vþªßv¸ÒM‰.»-tY“”ø¸Î°Õ“âч>fÉÙñ2­Óˆö‚J½üßk˜ý¾Ü`Ù¶Ü57ÎËCŠßz€x8@uFôÔð,ÏÜèÁC†äU™d®Í…û67Ú ø¥-~ƒ3¶ ¬b[2+i(á91ÿg¿+=dr{ í&»Ü}3) ô“ˆLØÇïüûª€ >ñZñxœ÷ÅòG;†Ö¬¦a·YÍ­ØœÃÁ w½‘Ë$ÜtmK¿oúˆ¦±XÊÀÚÑAºä’}dˆ@ÏQ]8©eõL9Ç]Ï•;Á™%„ÔPu®5x{ñÊñÛf=ƒŠ2¤¯ý [ Ǫ,bWu“¾•Ôm[¾üÀõ„L}ÎÌÆàˆ{ù‹D Øîc…ºè©î÷–KN±°æÖŠN¸¡ðٺȼ>0 ‹YZplm/data/Gasoline.rda0000644000176200001440000002307014124132276014210 0ustar liggesusersý7zXZi"Þ6!ÏXÌàF%%û])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷ÈýîÃr> äMO| ¦5&4ç¾6^á¯3Í€À¿À1¬Ê­&sª( ½GÐöâ‘{í»W”ØŸßH¬¾¶ÐøšSaç˜%?_Û¬v"’)kí9UÜ—)Å‚‚±¼t À‰©G2µ–ÑËS’qîAt]VìŒQ(ü­£â›Ñh…uðY¹{þjcÀâ’µLZÞ>·Dv)©°NÖ B¹RNrwño;•äŸÛ÷]: ¢¬YCóRê2„p “AÃFiH¨X-šðÏ6ã Ã}ówõÚü¿5!‚ëg…KZ˜vQ«Þn¤( r¸Ó183ü`Ä„,WÎDX‡­¬ÐÛ?¢„GV†„£ïÛØ#C8<'VàüX¿¡$ã½J&«¿X‹_[™c¶zBê‘S'nÓÄž<,ÿðæ‘}6¯ W¿Q¬Ü:WKxSNŒþ¡€‡æõ|No.B ^WÞöÌ6™ð>Wy¿O0Pƒ/¿8ØÚ²3ðÛêV ¸¿.Èî«{/µ`ÁƪÔôšôÁnš1L¾íéÓU°w›ùà ‡DUgµ€já)ë1àG^‚_*@šLêuµšÊfgïÿëz㤭Þ§‰ìž§Ï¡«\…ý?™O„Œ¾ÖÆß;Z]DÉwʆºO¾Oµ­«äSÚ ÍŽ…&'cÐò3¥Ñ²Ã/øcnÄ]»g<àgõ5¥RòE3Òþ—´×O?˜2ÇeäÅb¦ÿÑ”˜Š{hÑD˜= ÂNãÇ Kü†Qƒ«˜âÉ…•{^š?^¥FB±È=ü=e¯¯·B¥ØeqçŽË5²HÊÿ±FÆ´£.~º8(†ŠÖIíÆ^Î9ô·®8zÌ$Ì|ÎçÏ»: ú`H_Õ3‡Ûйê`G.—€C @žå`ÚûACaüWl÷¾‚h»n‹püäe.”8ÑŠ-. ÍHy@þ–EPû¶Z‘Pâ%ËG¥õ_ö'-j®Íç«Ä˜‚D~§êUBW™¸`Ì·d,ÕSÁr®K’{TI_JM$ÛÒ҉ʛçèAìu<`tV5xE÷¿aÿVD$T#eéy­tI¾js:"É› Ö~ytä1ºS9ÜESù€çpù\ž3jûò‹þ)èFøþì§ýÒ?©>1ØK Ò8Ls±Nâ9¥öªWæž‚Û%ê9 GFj9hÿD»Oã°ôÑÑBöª—"Ï“ãBŠòç³°?2Ͳþ#Ƀ¼‰ÆJ'ÈY™´»&}ˆyá{ÂOKŸ"ó›Zp¥¶b½ã´r/ƒªÁ¡;£O:/|Ϫ™Ó< §¶^mkÕšã½(þDç®›¢{¦qS\äî‘•ú,|ýž©mi"kÊãž±z,äôMà“W;Šc@b8Á5>´”Öö<°—Xµìû»óÓæ†kÖx.$š» tƒ:7·¾H“ ìø§ÜšP©S‚Fï|´‘Á‘Iò0r|{úÊý²™‰¯ÀÀNJ ö#Ê™8ÒïÒÎÑœvG Oñ 5•ün¾ª¼ÎÒ1ó÷ƒfCâ2½÷—x*ØSoø­ôîʆƒ‚É",°R^A \—³œHÈ@ö{ªRwæK΄NþnÑw§0"Ç]‚¡ôÜ>€kZNé«÷ÎÏJ`×>!‡}wbù~Q3‡W‹jqŽüâí$öäîw" /^T—+°ìÔ^ 8öUߘiS0¬0©7BYÞÆ.Z™¸9lÊÆßD`ØxØ5¦å—å½ W8Û@¤³5²ôOºIõj—|iÇÍ׸„iz·7ù¼ò¥1ÿ¸š¹Ñ)µCnp<£:ÇQ„x9ƒ»YÎV"‘‹RÆÂü)ÈD’@k]Ä#á¬üô'¬Ø=cÜ'&ÉÃï¡°“Ul†)MÀÇs2@‡$ƒ ~e“%–tÿˈôŽ~÷µÈ:`Ãm£ê©–Qe+øjnÞ"ªú®K1Ѫ2@~û|ÿ<àRdK®óõ(ÐRö3‘A;09¨Ñe‡Ág%;€ª4nðˆ,4-æÅÍ0:ŒjeV¡v@Z2SÐê ý¢+œ‘Üum¶Ëë*a*¿çÙ#ÏÏ“Æ@ïó»k·µ¦T„®£8Éß‘!@Zî 0•Ú¡²™z@„‹6K5Îjp4ÝöÞº#çôœÂ뽕ÇÅHçìç?WÍR8_PÍ[¶%‡Ò6Ž2Kµ@‹øaóÓ0ç eÇÏíµ!µVømÅfrpghÆ$б˜Ðï\`pëqà¢ZÍ󅪦Éà㤯F%Kªøgë9ß甫 ßPþÆV‹>6èÁîIyl!2<4¾7+èø_™®Ä²Yè®J‚_kS$2F "ù¼l<Ö“à‘''d®E“òyÖü—™š þö` ö1H4A6̳„Ç|0§·\Ů Г)øDùÕ¡vÙƒ¬—»SëƒZ5–·á+@5ö”s4ÃN]ŒçmŠà¼ly½=Sû8‚HPÙ‹“Ÿ ÉH7 !n‚Ü Ö5ŒÖzH„ú„¥Ð˜¨†2ä/¸!Žl}à{ÑV¢:8hfè6Q]ðúB0°Í8 …Ì—'«ðÕ „4 /'Üežø¹ }òë,š'ôn4SUÃ#k‡(·18b5Ææ]²Õ’dc¨¿­5;˜A€wgk›ߎµæëyc ' 鱯C·V‘{é M×Þ”îâ–QÜ‹u”{Nî Ñ÷í·biàíg2$xN@éhZaVÝ5ŽíÇY«iÝH}}’T{’Èež‰dÔŸ ‰Ò:òÚŠß©è@¤«½Þ=ôü1>y–ziñŽd²tywL³T_X`cOý‚ýRWMŽ8~–¼åó䣶³%è'>‚…`K7+˜kkRÊ€Ý_v+Â¥Yµ§ž6 bOFã}ú¡®o‹˜cn_Æ2:Áeë••]X¹Â ÏälY*æ4‹«#ÄØË¥qšc D¯È0žé[B%6ÅV0Zü±{µƒk¾ëÌþ4gÙgõr]Ÿ+‡“œžáž…7·OÍ*&³+zÑe€ zê'´!ú[½¡k[0Š6µÝšío€ƒHJ˜ƒ-͉ÍûñÆîÀ,óâV®Ÿ»È¿œ•ÀôñcX@0'É® €ÚLWtp"éÖñs@»¶Âä —™†Vq`u»³@àz– KDyò]û%(±ÿï™kc¨q³ö®hQÇ¼ÄæáŒ2úÚ(‰®D+˜E Jš•\F€på²Tûc¾}[ïŒö:æ!Ad¬¼á÷./§Ò@„$ÿ{÷æ:¯¶”3”ÁøàD]–»Ý“ì7$Þu¼{ ¨Òú?ØB€öÐ}^Ù¬FT¶FÅÐ}k(]˜€ìvéÂ|FUsIþIù­ÎÀ ê&ð(*~F¶…wkàÖ 1“[¯¦:–Mvà@×ÅêA:“¨‡ŒŒ†²ºæ7¼.„Þ‚=˜a¹¼|¿9ÙÏQ©›ŽÜqv‹ÆÜ/ @êìŽÂ¸½>2!›Wëvÿut‘ܖб43hqxUCïîð~(`-ùuw7©2ÏÙá@—xfÖiGqmL×hȸ”¨æ]¨ 5²˜{Ý¥QÂã…¢%{C¾KP§Ž(ÜÒEáÜê…%€f'^Ò±Ù§®ÐÏÿ·tYíi¤C¥{¸Ö1´Ó,ê¡ï)lvã÷ó¼þV¼¤îÒ3\h\»©†Õ´¤† E ª…“«Rà„ Déç¾åiØ$„! îéï’#›…înTè*íò×kë+R* Ý Žp¬6ôVT͈ "üjŸ‡8vµ-£xç žÄ_ •xŽˆS®VÙY¤œe ;¾®pùXNûÈåŒ7]ïðÓMÌá»ÝMÒØrذÌ7|‡Œ€¼7Ô$Ò]O ™éóÁÅåž×`kÍ1W5[ÜéŸhz¯´R±^µòÚO’:ë Çøê÷ÌÆ[·*ËqŸ®îxA)ºaËÁ]aîm¢´y¼žòʉÌ,ËÛÄ»`éXå!>n/ÕÈIEŒýe’%ðf»Œð7ÎîÆè¦ldÛ{<õ^µµøñ3£7üÊ~•†»,Íð8¼Œ½Ö½‡¬þcCÕ¢zŸ(ãïÒdŽ«\](œ…Þbö€³ü©tS¡aMEë1 ù?”…[Å<$­D«°KF1úœHäæêPÇŸw§¤çÍO›ÿ^j zÑȺo¨o;üoX#‹ëÕ.–zàòÛÝ\¨êQIce½–Ȳn`™?H6Ï“ ÛÌÃBX^s1è&ûjU"L1ôm±°°åL,E]Fˆq½SÍÐÒîšµUæÐöA÷´'òЬTƒ° ê÷NL£7/Vk”›¨ÝB‡à9_¾\ ~&M\š&Uó‹hìMV2ø;M•¢èvpÍËvS"œÜ{d‡”Œé¥^Çxž»%Ëù ð…çÍ?ß9PȲù&´³¦{+B¤ t0;v˜‚J÷.qŽPõYl¥„ºÓ‰3EY¥"_Î# ¼t²·žÖ†€ûq-Áª+pdLYžŸoãZø¥p#JÈëé [ÈÃF~œã9Sï¨*Y\ð2yý¥h9aR®”h »¦´ @f&0ÿÉ“«þE%1£N5¿¹\›îçÃ0jÒAE1­X_Ì/«V›âhûÖŠ°Àr´Æ$$­¡˜>ºhj»b0O¡¹j¦r0ÞóWú.,U¿C‚9ùF ÝË1'½þÜ]žýCѾE$ÍÐÀ k;¿D„~qÇ„Ÿ€|$VŽ»èHçñEŵsþïÜ“I›Ë¥Ô`ûªTÆs:xüJÒaæGvÜä(þÞÿ@ |¦2,MÄ ±ÉsÔ¾I uÃ=¤ç>ßx‰ÀÊ#þ_OÜË<–žsîb]LX, ìèý©q“×OIG½N„ÉÊi¶YÆHQÓVt¼È7Ê0KG_c›²dé‰ulJULwX~®•óè3Ÿ^©n|@Xm®)ýYË8;¸5ˆ5Üý`že‡d³(Xð†ÚÙë­kˆñÍ™h5p1Ñ͉àgCd¼eex¥"Ì«{̳CC\©øh&šÑc.üšK^ FjCžÙ3¢ý¢q·dœÈ»ð'&|DÑóE?ØPn1NRÜë4ØqYÐ!ï:ÃnnPbO-·nu(WQðÞ`…(‘¼ïB½FÏ5<±qEÛ!ßyÍô:±Y.XN›°ÅT ÓSœåôõqѨÃ.õ šš“ºú|ø;`zpÞÝßæ‹,©ju¦š–Ö}œ[-‡}ñš…^„à†Ù,Y(ÁI´Ã4>Laº_σ|F-àCóæø£ôPYÎDG—žiÈ¿@?~/Ešl;Ê$,ö«ªõ‹·e¬šêÃRÖ–ÝD?’$ßêo)êejÐ]_y:Ê3$M ]œå.£ã¾ÿ96I¯Y…C‚ŸÃ†AJTî#Ùýy"tíg$äU­hî#kl¾!SÔÝÁäæêÈ4ÌCáåxÆÈGÉZ_F¤åÞÄì“+ê¶Véz$µ”¥ªªWÐs½ñ(U%ã 80Hé\~³®H±oRž†q±bgb^¨À/tÁ£Œ Œðƒ~C}Žyw ±SÄ7Wƈ¸]Í–0Üʨ¢VÃÀ]ô—Hyz^V»-ø>“¤Ú”?U¼¼/[«ùÅeyÏ®il«ÌªN2ÙÇgc3 :^R°¦d¹Ãcì—~â’eÖhK„V*°×‘ò™Ã÷ ßåÎh­¡­á`]NŒšG@ÌRF4Ú¾ÎZÿ k3:ûj?†g‹—{Bê4‡¸S£·¿»CÈtKÁ·€ö´Õhbh’ðí–¾# Ó·ù%Ïľ›Š—ðMÖœ!î˜0xÔ {Mù d ª9GX[…=¬Ô8ÌüÁAdd‹[:é4›Ž{nq”BX˜IúZ³[›¯\ O+âÜÓ³&«aÈ„ |õûr.ϸúÒT7œ‡øJÚÇ´&”F?mk¦®²Œœß8ø>r/>k7,» y_ªHÆ|P‰ }!™}¾Yß@gž»j¸1î~8»YˆïÔ¼p:“ŒrÆAâó8iÆÎJIx#SÎm{ÍFuðd“B_gn£Ðõ­¹Ð-Ûlñ˜|o%ôÔ(#È̃SAÍ!„]ì:Jp ÛÑîrAõá n ý¤ð¶X¨*DF–ƒT›_w¶»lFv¢la¹Ùzb ÁBÚøE¼p“ÒXˬŒ¡¤G¤Rw³Ê”øÀò6‡ þ«5}ËèAl/¼Ð6%úË[~3Öv)¶Põ‘ûko6­ñ4ZJoæû©]࣒×pÓ‹;l6Ó•8]9èí½ã2°ÿÙË^éO«Ò20‡kñ¹k±ŠÍ«‚l=þÏ»G° ®öŠC·ëŸeKúÎChkÎ.-h»ñ~$ˆz_éªs>9Zqº9®kOs¼ÖŠà,Mùw„7X«ÜLŸTÀ‡oòè$Ó®"Çüþ°ÔÊ´þÀܦfÿÆlpnw0>Û¨]ÄþMŒÑ ¡_å3ê›ø*Ø '—Þ<^rwiäH·V dçK·Tô8Õ‡ÔÛ Oz†2(ÙõÐj²_X}‘ümÇ£öì$á*Σ² ÉçE*C9¦Y°¶Š?´) Ù|F—“i]òãm×WÚÿ´B²+rÛùBÚ‹\¦ÙŠ·”öÎ*@s‚ÄÕu ‘³+Íß*;㡉©Y<Áû™ïÉ2ƒÒÜ,$›\Òu¯ÔΚ¤»Ú­Ûæç§®ÁK–ð8ײÏÒC[ûw&}¿õS°“:ÏØ0£¥Øé×(ƒÆàí{ˇÂò8‚Ç?€•€H®1·µ`%šFð.‘›DéLž9eåW#ôTÉÑ S›»—„ÌÕ4,EøÎ†Mñ€…’+ÕQM¯ÍF¿(´V}Ÿ9Æ_FüFzp(òÿü/¶ÜüöiÏã`ã6~½(ê²%Ò"gÎ÷‹i\ZŠm>Vå´ÿ&9âM ûU£šÌŽ×D<ôG§¼öÎ r„ÖÖÁ}qÁ6G+CW’ÚÖäÈð_ K²X¸}Sœƒ°´™†OÊŸëB†ËYàdt•ãª[]§…îaEqàgMå‚ö»¼²±"LNðPÆk7ÜÕ¯W|K$âªw1BPY¸ù;ê?©_RñÔ4NÅ #f0¼Ô¸7 ¿TæÞŸï‡“v6} V—'Rõ¡š¸&Ûb…øûÀÄã±IªuÑp¥öX?>a›‹7ã©ïÙ–£R²ùRªL&¸½çmcá“­Ìu-ã¯Öv®„þ/iüv”øÄMZ¯8¯ûæ«D•ŽÆ¥+RŽZ달M¼SüsVëUpB\yŽËÜø 1ÓÎÓØ|å¨Ä¤–åÊ2³eeàü͉¿N:•E}bÙÒzšòëÕËÝéRÚ€òÆ„Z³÷UÚÂñ––µœ¸iÑÞÜ •iÁ…¦vÏû"†»œ ÛEu?·æ‚w ÿnÑç÷‚ØgMŒ‚î›UÂm´`œ§ÙÔ‡æ ûQNø¬”OñV•Iå²;ƒ"ºµœÂ§ö²@&¾ÛwŽÖ,ÈõàF²LÓxAAlÝšäléë]è:lVÞ”–Û#¢CDÎ9ùÁz•I¾¦-Œ½ü¿­è¬ª©]gYDÓ¯VÁ Qxa„ïy“ëKsÝ¥b4#^ò³’œá~ÕÍ_ä‡OÞlDLBfyNª“Úè¨ÓrÄãUã9«õ-ÊMÏéFaCÙÒO¥¦.öR}âó=¢ÏXëE;ˆ`úpMè=»t¿V© ×k±çO\‡ñˆû¥&)X!ǵ™;pÆç“xEè~Ãü¡µ›ìtaQÿCÿk²‘3¸B¼Q»×¨V«öí Ýñlá²Rþ¼„¸i¨×ç[±ôi˜6ëOÎ0ƒÏ›CT b°Z̦ŽX«Ç­ä·0Ãê·›‘,^Ï»ÞÐC'5ª´sÕKgo`És!Ü7Úm–$]CãßêµëOVâÔ‘ÊU¾ÆÍ(qâ?>\2€}Ú†ËQ¿ˆjy ¨¾ögÇJÌ ÃÖs•BP%å’1§…,ó8Î_#ÓŒ"d"3yYà“°)PY¶N­v΀u£\@/~º¾fn@x2³z?ãy\ãA^Cš* Rú-­­TߢÀå›gQôu-!Þ•ä ëØ‰Ê¡Ò$¾¸~dãõ×§±ŸÈô5~·;ä¸}—Ú…ñMA+À0œ3\˜âÚµˆÀb®ªèdg~µÁnÁ•5pÜÆ>"j†-%Cíjë«­¨ Ÿ-­#°Ç©<4™™ ãž íAÎϹ›¤x©ÅE§ZñE œÓAýÄ~!…ÍñÔ>¡—`xà ;ÿ¼$öù¸'°F2n»;k™š¸è Î—ûån­bgéx2ÃÝMÆn3KvÔ,ÙTe’0¡Í× žÑ' _OÑ¡±þ>p©šôù„óƒÛ”ÿ){¯mÿ‹}.ÓmlàäܘfbE‹euù‰µ²Æ7G·NÔ÷b‡¡“òÊSAž«ê:s¥µÐ”1OXÓj—Ç”¥ªpVƒ$ƒòq.+{•ÈášÛw£ƒém}‘­×aŸ¿rï`û:3<’GËëmo8&·ó‰hNôŸ«ì:½~@wzŸ>s²"´Èá3‚ÉÐBZdÿÎH°Äk¡7׬zÞÀ±–x—$–+­ ÏÉV ‘I?J\9Ë…Ua’™YÄ读Lj윒èÿlñŽèÕ ú¡%ËI ¢Zt&Bq®;¡%ßIH7ë»'G4\YÚ'iº7tàªà¯õQcÄ€‘xøSÀ8çæêêE« š¾Få›ú.€uY8ÜwÛã ¥°C¾2ˆ–kE­¯nç‹Í˼ËçãôÁµ¿Ûça«äÝ.nbŸ<ôÉÊ79C…q'·†7ˆð…\ï#"Á®ÂÄÕ›wŽ:Gv2cwØbÿµš`D˜uÁ«Y^Ì’"Pm«Ž¦»Ûtx&~ìgמÌÀV\öCW½Z^Ô*ˈ|TŽœXèa\c&‘¡L 奇먢ª`ïJ¿©Ôf?,‡}C´So×=5䃉~ñ±U+)c'UôZÓùß}÷v.WeF_Á(…V9ÓiŽÆ“GöÇœùѸR{Ü5ͤ *Ê}ÆÌ¯Y,_©°FKë_S.K{QÜX7¥ÀXžvïžòó¥:è}Ó9ûIx;¬ÔÍK¡“(‚숄ͣ@SM‘s%ÓkIrÚ±.E g ޹!…9Ïã°Ú剑ÛÀ´7°’<ì¤Kµ?J8X”ÌçĺöÁçኤ‚íÖël:³lcè$6;úÙ]DQ2L'X$d~ØOͧÒÇ»l S^Š m/ªám×£Z$e'¨ b9Tó…hRð³`€¬MVé›GvtWMÊpÉ¿žŽ¸¶¾¸è“<12?Ò‹wJH®¥HøN"i³áò4Œän¨i«C>LÒ}÷oȆìòSÄUâ"i¤h—\¦KPåi^£^syZN¦Ë]¸­cŸ…XV¼h<_ô-ÙØ,²2e@=’i6Y´*Vž˜±4ÑkÍ rÓéÝG¾ ü•p¤oM»Ë.‚B!fc ï9ƒdpê®[ì=Kãé)"*Ř#¤±þ,öŸáy¥;%ú’ü¢ƒ”ÊA‡Š“;}YÀ«®dOJe`ï´úÅYBÖ©È£>ìÀp¤iJˆbƒ'ÔÒ7 B}P…R—*fW™néù†‡¡u%ÙZy#™fXã#Yñ0ÍÖwéÐÔw´8âç½vÔÝ;4M…UÒEû+< Œ¢©¤Ùû€7«„~´Ô›òO¤edúwpªËEpÔlHÉph¸ÁûÚEŸÓ—‹ï­®Ý5T)(_÷PÉ#Ëþ6ߌ8*hçéÑ­Teçóa‚b£K•Ÿ™Qí/ñA4}yØçätˆY¾k£a–Oë±Úý:èãu¦ƒ}¹yÔ™n/*üýú¥áª²˜µtýöÜ«9Ãd' ùüȅуfµ:Cló<ì?Í+fh§¬Œ_á¯T!ì.É媸ô?b@TŽjgUÇ.'AfqY‰íŒÐý%òMNåÚfû÷ÞËÛ¾_š‚……ËWÎb|ã+&:˜˜~¼=”á¿¢”c–‚ÌõøX¨;4÷ùnž’®¨‰¶¡#(Á5L74þlS<Ù‡M>Ùz¢–¨kÝap’Aôké“¢†æ^D—"DÐÁÄM|ƒÍ¶iNEMQdýp¶ª™qFòcky^Éäg°"Kðí^Þù±â;ZªEsɘÝ>K¾¦ÃEuö«ðÂÜÄÝéøó+¬LÁæëwŸ)qKT‚¼ýmjhµyëGv8ᬦVÆ:÷í6Ö}"crÌÏ, ÛïFZ@ëЋUÀ?:¤ƒ–gšp,›]à¥@}¥s0ò}Áœì_À7ºe_ÈϤ‚|×ÙÝ?¸m’ü¤‹Ù§ÅôÐZä¬È…³õ€Àu|ëƒE>;˜¨Ãà^TyŒ´?ùg7äLºH%ÞÓ}HéÃKT¢Bnb_4JT”EX>Ùÿ¢·”Y…ùV'é"í±J]㬇Íäf¬‰Lo‘›Ì‘ÿÉçn—‘)s1H$~ ÌiOHv¼å[,;F‰uè¶„”U=Šnœü £øÓ7™.ÖÆù圼M}WÖzÇq¦GrÔÇàR¸ãOóyfåH&'íéfYßRsÿæÓØ¡±)æbÔuž„¤:Y—Œ6„“T:ºŠ|ÅëlwÀÚ “äjj±Ÿ'ÁeižZ¥ƒ†¤X&_h6Öej¡ J.í …¿¹Hhî€×Ù#.63„ÐY1J1ÅÁÀÒÛZ}”ºæºÙÖì‘!)/ëSy§Îj¸ â‚Ý´¢—ý ŸEJ«A¹bìyfg Òfo ¼ºC6¹:_«œV¡ÙöJl–\Ež<ÖpùlMGgƒV†ÄXʬ ä-ÐâößúóžCA/Étg‘Û ãE‰ÓP&EJsxv£ŸS:}f†ùøHëÃ&[ÿ:íùÈ‚9ŽŽ‚Ï6åxUÑ™F!O„¼_% d8<ÃtÔ Ã±lÎø’-àƒ;&CÅSçFÑ!•ùH¼9TQŸ9¼ûeâ¥ÕÞ©v‡v>«A<×;Á)Ãÿþ¶|v@3A™Û,É„ZøK[£Í4µæ’TJÇx1 E}Yz–«Ñ/é Ì ±¥¨MT)¾-Ja ÊnMÔ9„x+$ø 0{Ï<úàG3(•¢Ká š8*¨¦‡±¯9j¶“–ˆÊVy—…p9æZ¾f˜Zÿ(<Ð Åf¤¬:XÌí»¾7õ RðT£«5³VeĨ:“¥œ]?ó=YàÓ‘÷œ¦€¹NÔK%öxÉöêËòîµà‘jDPY—DÈp_§ÁŽWrò!Òæ˜uï½±s/GkN‚ÉE¸5ÿì!74{“+ô.:Ü}ßm @8dc}ötòYücç÷Ch”w:°¿.—rå ³åŽh:ÑÀ)áÏd|K‡øyhM·ºØ‡•üìÉÚèÞ›Ý4 V¡ÛÚã”Ϫ£a9ó«GØã" n+kØþ>‰ˆ&@|L2„]¿ýbQ'>®{`´“L¦Œ\>0 ‹YZplm/data/Wages.rda0000644000176200001440000010316714124132276013523 0ustar liggesusers‹í˜ÕÕ†åBï`{wµÅ¦¹aãÕ9S!ÀÐ ½B€PM ˜ÞCO¡‡ÞIB „„ÞIè !ô ùi¡w~ ͹çó•tmWZízý0H»«™ÛßÛÞm¸ÊiîÏËåç† ’+þ—Ë \üß ÜÐÜ\Å×Ù6ÝfÇÉ{çrC)þ0oñ˜/—[pÕâë÷Ÿ,} xÌ^<æ(sÒI]ÅcdñU<-‹Å‹ÇU>[ |žôÚµÎYÒú\1¹ù‹ÇÅcÁâ‘/íÅ££xtZáËg* R:†áÅ£¥x´¶*×p¥Ïõ·Z×ëJÃQ#ܬi°óÐΛj猘ÆßjÅ¿Ÿ±Åc\ñ_<–*ŠÇÄâ±ô4Ϋ–.)g ÛÎWºªå¿äEµú%×påë×ßj…5ºJ¹`¸.ÖÉùcr•ÇU]ip•ƒ‹9®ºëj¸ŸiïŸe ÏÕߺÒçÛ¸˜ë*],ÏÚ6³îoºÚ´+?]ã%WtqÞž«ïŸ‘ýUÌ'×ß\Ìr•Ÿë𮸹êu=æ”YûÔ¬}€‹ƒ®9ÐŒŽ«gví©sæé«Ù{Y®Ï¹Îs]Û•Ÿ®ð\å—•‘®òtýÍž«®¸ÊÁÕ¦]s5c\õÅÅ W\\u×UŸ\ó#{²Î\åઠ:òÔõ7WϺæèâRÖýŽjù(ñv1+뵫ßtçj+3ÂaÌ‹íŸ]i–¸¹Îq¥;ëxÉŸ¬k‡Yǃ®üs•³«rå§+_²®Ÿ¹Òâ*¿jq°³ÎE]ùëj®ó\mÍU†®rpåYÖ=W[s±£ÚøCæu®öàŠ§kîëb«ÿså§«l]ñÌ:q±×Õ¾]õ:k;ʺ¯–uM5ëüÁ•gY×ü³Î-²–_Ö½—¬caWÛÌêyTK—\#këê\yí*;W9ºò3k\\õ,똫Nd{ÏèþÔW{pÕ3WpÕ]W~ºÂs­+ºÚ·+_\í!ËÞßÂ9÷˜È5ÆÌ:¶qÕW\\ãsW\\ùáú›+<»\¦wÌçÊOW;pÕAW\¬sÕ‰Zë9aÍïÈ“1U˜Þyª‹ YÛ´«oÌ:^ʺ®‘µ?ʺ§è*w_\\vÅÅuM×8$Ëx¨¾«N¸ÚŸ‹=®µ‹¬û©®ô¸æ®kfÝså³+íY÷‹]ç¹Ê;+˳öU®úéÊ3W]ÊZ~.&»êRVž¹â:Ï•Ÿ®kºê¼«Íg]£¶¯ƒåäâ‹‹ƒ®>ÜU®6æ#»òÓUw]á¹Æ´®4¸æq®ú’µ.emG®7u=-ý,<•2[ ÒŽ×ï†p¤O•°Æä”™Â‹Qo»lð°ûµju¾Ú9r^)ìÒ|f,œ»TnjÆNLãZ:w!8w±ÜÔcªR\G¦ù¶DzŽ¼Žƒ¼*¬ãÕÚl7ijVÚì±eµëc¥Ï‘òƺL‘8-‘Æç‰xíîÜÔñY<=dœ8>§óL¬ïÕ®!e#?KÞà8§Úø@òtbN絓Ҳ6‹×Ç>E~‡uÂî+åoö˜OâåY¿CöH»“æ%ŽOÇä¦.×i±ª•;Y?Ë{©{2W)½¶§å cBIû¸œŽÃpü)}=&µy^ÈMÝvÃßí6hÿû3Égaaµ>YÊgt•ßË1âƒu[êŸÄEê0©ô^æl8&uW Kê©ô‹ö!㚉ðÇs˜§2'±óœsUËójã<°ãçì4aÛ}¯ä›Ý7âu…/x^wšvéÛ„'v½šd…‡‹íÕê‹ý÷Zm©Öaç#2Y(y!á/aÒþ¥ž•^Gå”+¥z6\ÇèÝ9­’§¥z4{z,ž›º_-ý}œ+çI ÜÇú[+íÕÆ_rØcgŒ»}.òUCK»•õ™¿ŽIÓg÷q¸†B¹©y€ãzl÷vÝ–´c¼¥©ÖîºsZæ˜GKA¾—ÖËJ YâÙ™›z¬‰í¢;7u8Øž$®c ï$=vZq¬Rú{‡U†öX²;W¹öÔ¦¥#k§už}¾ÝïTã•´‰k7ü΃Ïàµ97u;ôÛñÁü³ÇbùÜÔe]:Få*™…çÛíµT÷„×µêtµy1Žp=K¸W:º mÓøŽHÏo]¯;7u9ÊQqvÚì²ÁôOÈé˜IÎ/½_ §ëŒ¸ˆe/åWmLUmü€áã:§=ž[åùŒ´ɉÖ!Ÿï®rmé{‘˲¾Üm]·ÚÚŒäÆUdŸ%ÝÝ9?tätŽ-ù5>Géýb9#T J³x®’…¥ß°ò´ô*e[HóUÆåãrÊ£1¹Êz†sûnˆƒgýÿ†|Çßs•Ïãßí¾¸VÞVv禮›Tåó¥ëÌ[#nÝ9]w’C®#ù$ó˜q¹©Û°œoýäçÒyKä´a¼ì×ÒuJ<Èç´ÿ.W›_ØŽm%îÒ6½*iÄtVkkc­CæãçÙ,Ç×Ò±Xnê²C–- ¿—kMÌéËZÚÎýqÝll®²œmNJû—2’tJ¿M¹©Ù%çMϸ¦VÎËxAÖ[¤½•â.s3I»Ô£±9-S¹¦0»;§ók\›´çëÈÖR=kÍéÚ‹p ÇŠv¹J}Ÿ›šqX’Gøj¿Çþ¶=>ÃkrS—û(øÖ­Za¶¦¯¥½?Y7“ùTéý‚¹Êù8†YëÀõKa®;”Þwä¦f“´iL«Ä³ñ“÷¸nScøÙEsåúPm¬´xNëyG®rì(ŸÇ2”1‚ð×vªµ/ɇjsC{ È^‡'x_-¯§Åžœo{p/UâŠëÝÕ˜ÕU%‚p$þÒ6íü«6Âø!º­kTc<îCH^—Αµ%;Ív½Â>K«¶&‡}gµ>³Z/‡Ý/c^ãúœ|Næ}ÕÒ,u©ZÜl¶Úc^LCµ¶Ü]ågy­UîxÜÛ²Ó-éµë.~Æ^Ó-ýn±*׫6þ\­Üq,Zk>…yˆk•öØXÖt—ÈUæ/ÖE;L»ýc˜˜µêžÄ×îg¤ Ù{eÒ÷K¿(ÜZ4ý¼¬ J8Käª×%Jϑ߷>o÷I®6‡ë8r•å&{,òÚÓù®-Ûe¼TN縮œÏéZˆŒÚá|)Û! ×0„5µö‹%ýÝð³Ý®ªõíÒ.M^2ÍãQ¹êu¢Z¸µúb/ŽK¯»dNës76;l†á1®±xnêö y#ãkl»]–¤ûda‚=§Çv„e-uQÚÂD¸6¦EòÈn7¸?T‹•vÞb{Áx—Þ·ä¦f¹½Òm‡¯ÝÖçägGÙkèÈrÉ;¼n-Ž”ÚÄœ>LÖvÄ•ÁµÙ1ð³ÄÉ?µå¦¯ØñëbdÌ„ù,\¶¹àÊ+Ü'G–O‚s°ß¶×/„Ùµöä÷rS×-ýèÜÔuLÒŒuÒ³~×–sp]UÖ-ìCÆ"’n™¿.•«l˜oíæj{rØéÅ= Ù3|¯ÆmìÇ»¡\ºs:>_®‡ ›ºÞVËSÜOÀv/×z(eÞÓ½f‰;¾v¦ñ•¾¹tŽœòSÖ|%ß«õÇè¤vCþUËg›‘x”ÖæKcå68Ë}\N×B%,Ùç>b½GNcJëí9eœ'‡ìûbžâ8[ò¶Úøi¬õ·jk_؇áZ[­±+î×/(7õþÍ8d†×•¹®»Ø{Gö¼ ;7u"íÙ!qÆu/Çb™Të3Jñ\,7õ¸óýdrûëjõ ÏU®!‡]gí²—›zýSÚ¶°Û¢ý^ÖK%ߤ,]mBú%™gÈg¥l‘žä®`8ï“›º¡\%×J¯]¹©×«˜‡˜ï¥üY<§÷$`ý´Ç„ØFðšRN²_><7õš³¬aT˹>:"vXÂ{_¯SHã=gnê=–Òßò¹©ë‘ÔSÌ{ ¤»Æsml'rÏHw•¿I¾c{´Ë„¬ßã¼PΛ¿“ú7­òF^T«Ï˜.é×Å¡•›Úÿªv¯ –“ðçò^ǓRwpüÙ çÚœÂCÆF‹W)'t%ì½ Ç`š‘_vÞtç*ù&Ÿ‘õ¥Ùás2W@Ætç*ÓЫdQé רvŒËé*Ž;%~Xwäs{~(¿Ã|Â=a‹ìƒŽ±>+é²Ûfµ¾ìÖç`[ë–âÖï)7uýÂ<®ÕQNy*kLâ ȸ¯Ú\BâcÏõ1ͶËÑmýÝ`ˆý£¼Ús¹áÖgk›ä|œÃ.ž›züˆçIÚ÷‡`µÛœŒû'äÔg”¼±çÎÕÊ_úœQiY,n½ÚëݶÛ#e€÷ä-m]ßî›ÄQÆ|·óˬ>ßm•UyO¹©óÌ.c»Ï¬•7ÝpI5 ë:’ö<Ãö¬ªõ9K[çL‚ßcû¯–®ZÆÃæ•|Fú—Ž\e[*ý^x,q­¶V$aTë‡Kçc^Éš(Þ·Œã­%á32“2¶Çó2v¼ż ávWy_­aú87u>T[ëwõ[øj;#%¶Â¹RgdއsŽQpžo)o\ñ°ÇvÈñ0ì¿·AØù†õRÖ¹ež‹yR«°ë±œgì6k·ÅÒ!{Ð’Ö±97 l`|±L«Õ ¼ŽÌ½0/ºr•óDÌ'û:Òöí~o’u>ÞS†c|æÆbŽÔù‘pýBnê<”ð¥Í û«Íí¼ëÎMÝÆ¥ «ÍéѨÖFªõuvSmœ†ëÂKY¯ò™ñ9Ýc’±ÚöxFúiñºÇÂÏv¼q>€ób+¿†Ì—>aã\çc¼Ö+S¯¸4S^÷•¸4#Cš¡î”_¶ó²ü›ÑðMÇyÍ”Ÿþ×Lu¢×l¶ü–=Y—e¸n=âÝèk6ºî6Ó5³„7­¸ôtx=qíþúoFÊezó¶¯ä£ãYv›õ¼¬é™úQ‹Õ˜ÙÎë¹fÖ󚩾ô7êñ¯?„×›í{F˜ÙkNo8ÍT—r¹Æ†—%}ƒ¬÷=}ôÄ¿Þ*Óéù7=qšÑøfMgO•W½ã™õ_Öp\é«GÎrn³s¢YãR2lt<ûJ\êñ¯?¤¯§Ê6Kxöï³ÆsV.‡þ^_kッ™ý7³qÎÚ6{²NôD:šéßôÔ¯Fp0Ë¿fm›Ó{^.7sièïýQ£Úôtœ7DžP§}4úpÅ»¯<}#kxõ8¯Ñ×ì+qé+á5S<›©¾ô‡£y×WÊoV®×fy½ØÓò¬¯p·™Ê½?Ä¥Ñiè+é8êD#ÒÞÛñî‰ôõvÜšõ¨G˜•Ë¡¯´±¾Ͼr ô+Í‘¾þPõàn3¥¯™Žfʳz„×L×ìõmVnGõàR£ãÙLih&Î7S5S9ô•öÞ×âÛLùÒ u°?äˬÏz¤¯·ãÖ›å×è¶™å¼f«ƒõH{£ËoV>úJ[™Ñköv¾ödþ7:.¿zä]_9¯™ò³iÈšÆþÊ¥f,ÛfJ_ϳfJ{3åu_ar3åY_9͉Y¹üš©ÿëïÇôæÙŒäc(¿z´ÍþЦϾ’/õ¨c½¿f=ÝÏL6KÙ6—ú C•/ÍX'š©üšõèí´×£~Ö³~7{úC5:ž½‡õNC3¥½qZ÷ím¬Ùçjƒ^_;]ç›é¼fʳF†73ùYïú2h®×L m¦vTð—Þä±+MõÈ—þÀºZq°ã“5ÿz³=Ï ‡]^Ó›ß}¥Œ¦·žövìk|驼¬WúúKýìÏG(¿F–m½ò¥Ñ|™‘8õvöFÚ™†ù}=òjZyÖ,ht_ÕÛõ`zâ]¯4LïõëÅ—é½VÖºÛÛå—%?j¥op•×é=¯·ûªzåYµrîɺëÊÇé «žŒlDùeeqOÔ³ž®»®×3sM×y,‡FçYÖðêQ?›)}}åš.‡žºæô†Sro¦r츾+ÜfJ{–óz³²¦¯'ÛC½òfzó¯že;3ih ª]«^aôD}èí}FÒàj£=•†Fç5^{FøRÏòËR.Ó“wÍ’×ÍÐŽêQ?{3?Õ1œÞʳ¾X3^Ö8ÍlxÍ/3¬z‡×è5ë|3kW¹E£Yç*ÛF÷ýYzÌ-\ù’µmfgÕcçÊ3WTzÝè}û¬ìÉÊ—¬sìõ³Ñ{=.ö¸Â«Ç<Çu¸æYó³ž\›Ñzµmf-‡¬m̕׮xfõ ²2¹ÑeëÊ—¬ý{=ÆÐY×Q\×ÌÚÇem›YçYûÆzðÌÅÖ¬óÔzÄ3둵ݺÎsYËvAÇ‘5íY×i³r×5F©ÇÜ¢ŒÌÊ%×5ë‘ö¬GV~Ö£MgmYÓ—u½¼sû¬}œË]®#³Ö—¬qÉÚV=¾Îêé,è8²îõ¸âéj·î§³®dm·õ¨®>.k›^Ðqdg=æxYãY¹S3'²î˸ò%kú\e[u›zägÖ±·ëÈ:·wÅ3ëºFÖvÛLeT¸duò]krYËÖu^VW³yæjïõاÌ:.¯G{Èš†zìIegÖ™´÷OÝêÞ’ö•ÃEÿùƒ—’çÞ䊗’¤íŽß¶ÏyÎà$_Øúô]çÛ=Éï<ßO6?c\’à°‡OYf|ÒÞyÀí§&í{®ÿÜëoþ5iýý[“´~<÷Øýß[7ió¯ÅÏ}‘´íÁ]ËryÒöÊQ O9ó„$¿Â«îÿì’üÏ7|kâ‹'mw­xL¸ÖýIþ .Xû•’üÑ¿œëÎó¶KÚßÛë¹…']•ttÿqxø»?&ÉmwlóøwIçÒOï¿Ço&í¿ûù»'ï´·¾^pÜÓÛî_Ò1d‰‚É-IÇjWM|xØI×°'lpæ…Içæ³}ù÷Í•´}Îà}—\MóëÙ¿ì~ªÿdÒ¶â"ɺÿ1i;|¶å'n'mìòä ×®–äGüöžÇV[3iÛhŸÛv9ôˤíü÷YþŒå5%=[¾tûI­o%í«î»ÌòwMJÚOžcŸ~ýÇ$ï­»þ_ÿ¯`^ÛýKnÞöøÛ5¾[,÷Þ­IÒq5¿ÿ¿Ó‡$ÿx69àŒaIÛû<±w”ÉûUâ•ß§íõܰ/’ü'Ã;ò° “ünuö½Ç%ù·.{zè oìy¥wIÇ‘w&ÿrÒñeËnÏ=öžÆóû}xÉÅ»$ù׿èÚ~÷áIþýÜNÏw¥ù¹ý±ó>dÅ}’ÿëe×ÛfGÍÿs~üÙÂùL::xäÕ¿¹IÒ9×&w=ýɪIçÐïV^ñ·ÝIçÙçEZó//yýóßþ‹^ÔòûÕÜX{ÒQIÇaû_³ýìË$‡8iÿà'{œøÒ’Že×\<¾ë¤ãÉS×|è»Ý’Ž=~±Ít$ -ûÚÒ[¾š´þà˜b‹= iõ7vóÃ;%-Ÿ­¸æ:KMPn¬½ä£~y]Òö×qÞ•×|f^ó;¬²á ;~¢¯·Ï½ã¶óÿ'É¿ýúNübÛ¤ý׿ÝìÃ[ÎOÚŸ:â_Ï|´iÇv¾t~5¥Ø Jº.Ù©ëÑ5/HFîýÍ|³pW2jؼ÷Ÿø»Ÿ%#O:äœ;½dø]gͳĨ=“ÿ(V µ’\|û-so˜Œ¸ê“ÙþþåfɈWØñãç_IZ¶zà£Å¸Â”o¾kÔj÷ou’ß`ôøÇ·Iþ…ãOõìi&¾†o>ñêœ÷~lÚ‰ÔÓn÷¿­T“ö݆<ûÇK:»f_àOIºè‘"^N:÷ý‰Gœ?i]ðø–²§IŸá×¼áÖwny ©/íÏ­{Л¬l¸fÚYÊe“Ÿi=Ë¿sÒ÷¼¾‚i/ò{;?;V¸ú¶ä„ß$]ëlÿ¯Þ]>麶ÌïÎ7ŠÕìåÏ“®å~yÞñ§.š´>8æäåX5i£‘¾qâ±Ê·½ï(v8#’¶w_÷æ öOòëÝrôèË“äO]îš>»¤²üÒø G:ßÿöOû\º—É—®}Êõ¶â¼—ÎXî¾_]•t^ø£?ù·otí:e·sßx4ÕúUî¶;¶Mº>-ayÍÊô _Òüïøt×G.:1é<ò©"¹þ`®Û2Wç°×o{J9±æ£¿=êÑIËCl½Éï&­ß|K¿ßáIëSÇÜ0jŽ“–÷Oøìâ·®Hò ,¸øv×mšä÷Ü|Óå¯ ‡Ûo´ÐÈyý¤ý¸ÇJ+é˜wçISŽ<=éÈ»í'gN´·>:êš ?Pü¤˜}'^¯\ß´ýª‹z˜I—´ë þ²ÒóÿuÒ¹hù¼Î ?9ëüÿµ˜öj¿¶8û#>¿­ößô¯½[¿^_û1©×?þÁ‡ŸþOý9m'†Ç)çÚ—Ý0wÈ?VLÚ¾/ž}“¶ïÊí+¿ÑwWvŽ{!Éß_g´¾ó×;¿3Ѥ¯sʃ›7tÓÊr—rúô•µg;eA­§ƒíüê´¤ëËWW¿zØÁIëËÏ\uÅï6IÚ¾8»øïœ$¿a™_ù{F~þ7LÚ'µÃ»]›´_W®g¦¤]o+ý«¤ù*õ®ó®7¯yäÕ¿UÖ³´6ãŽôs_Œ}åÁgŸ2Oê×[5ªãiÍ+½5û±ë—ýlÌ"»$]}´Î.#º’®þo5ïÌ“‘k»ú;ßž›´ ?tÇù',’´5æËü¼&mï]¿Ý.òx™%ŽY{•Ÿ'ùß-õÇ'>”俽僃b=›¼×¹cXdšýæÈµžºw›EÓOŒ¼j×üÜ©•éKydÒ•rÁ¾ž´s~Ú_™~«”}+œ¢ùš¾æç³0ú?&ù-ö?çgë_[Áëö3‹ô8hÁ¤c½-Æ~rÏo’ަ¬|ù·%ùóŸ=lÛ¿ÛÙGtÂöϘþ¤ýÚbï±Ë7IÇøâeÞ~"é8º<ΖðZwyÙíÒiÆõ¦¾É«Œ Óv_ììgŽºÅKZÇ…kýíÒ’¶±Wn±È7ó™þÉp]Æ}‹¶wžrã·fl~/é’ù‚ÝžJ¹{ðš5Ç=Û®¿×œ›·jûy·«ƒŠrhyëµ¶|d{ߊ׃'½³É?ÿn¸Ðz͓Ŏë7Iû{^ÀJÅvq¿×Zã©b¾ÿìÛ˯´yÒþJ>xíÿ:Lþæ?zñÌO—ú™‰§ð¤}Óx·¹Zþ•´ÿá’õ=h¡¤ýŸ{Vèxô£ŸŸ}õ)ë%#>˜ý„›n­=~‘þ.¿âV«¾rCÒõߟ¬vþÞÅþ}ÿr=hÛõ²¶ßt®´]sû˜""”Kž²`´ÅNùmúùÒhyö›’ü!Åî÷â·u.|¾ë‘þói±ý/^ž¿u,ýÊG/¿iÒ¶ì¡'}wæ¦ÿÊ/Ü:ü÷û¦_ËßYœ% ½"iþÃ/Š%`ò©åÅMJjÒÚñÉ”+5[ÒzÞää‘þ«ãAáÛS¯ÛþYîò¥iÏeO'ùUÿrï~ó|šä¯\åçÝOÍ‘´Ïöö)KÖþ%m_m¿ýø¼O¦\¥\y ¼þ}¡¹9,ÖrºéÉŸ¾8Û¸Šñ½é­ùŽ©¯é¸ÁÔcù\ÚNM{.ÊxæÜƒÿ÷ö›sV„c^¥¼¤[í£í™ãÎ<`ÓñÊ»¢-v|ùõ¤=ùt—͹GÒ~ÙÕ_¿z\Ò¾óýþá†y’޽ŸûüåƒÖM†_>¢k½ý¶ÖñîöÅËx>ñ÷+®_wý¿%- ßsÐv{ï–´·å#ÛýoE3Þ•ñ°Çÿ¸ÜÈ|·m¶×7úì±gu>™–ã°Ëî¸áºü#qäÕOÄ+·ê8ú™Emÿ‹ù+ëÃ×CWúÅËiüÒxµ>qÀÄhõÝu^Q¬Œ]ôNÒzɰR‡‘´kûNÒtÈ|,}µ×-ìz7üÆKuÏè#’ᯟs'ÿzD2â´žYåïÃ’w–ç‰óºt\d¸¼Ê¦‡œ¾iq^{QÇ?Üàí77ö›g¿ ͼIÆëm»¼üùb·¾›´ý¸ØÊV§ù–¶«Ž÷ËãÅÎÝ÷\ôеŠýε?¾©ØãiýøãeCÏØ±8ß]iÄ߆/v©rê•:Iû­OîýÏ[®K:Vž´ÊÉãŽIZ™2ô®ÍŠíoó‰ë$Kü9iòF~y–®|zØ:·þq’ßîàâÄîî$¿b±tZòÊ}«~¶{Ò;åÿ̸T¸–´4Ñ|[óû­b7ý¿Ã“¶5Š£õÑÅqá“åyËuÓö,å"ó)Óÿü¾8Zô76ùÛ¾ï¹ËÍñÀZfÜcæ³²žôuyH>'üí˜Åy¶›ûä¤c¿ŸœsøwHÚºÁ‡Çm¥<[®ÔýϦó¢ôüŽßn|ý ˼exmÆÇ­CV{aËí•_¿\~â¶Ñs&ž¦ŸK×QjÕ? ßü^ⓦ¯mëņþv¯¤íÒR7¾€Î‡Ø¡ÔÁN˜þ3å’=.—ù áÄ3[ÍþéiÅ¿~~›[gû*É?öØ9v8IÛù_ü·V:ûYójâ5hÃñ»¯°‘G.ʼwÛ¥·|u‹b½üâ×+|•´­÷øá/ð^ï¡ÛŸ=û#%ùÍŠ[`¬¦w¹ÓKPs\ ã›®–b³v‹Wʺˆ÷Hý”uº«zþ¡3NÑúyTZßÒu“ïÂ÷÷Ëñ‘vnÖÛÎlûìó‡ŽL:÷ýßÅž(iyPibž´¬óäÿþøÕ[I˶åu²–'ï¿é¤ù´òu›|w÷ˆ¤õž×—ÿ®mý¤õù¿œ4Û¥Zi|M{•W»¿’þ^ú£IÅØÞHÚO[b«Ÿ<»‹Ž_d’Î;þtâKÅ^1N0ýŽÌìuÓtü%õØæ…©/z?~tÔŸÌú©Ô³¾²âkíõ×¶¤åìÒ0ö³×ú«mÆÆC—Ö×4ò{ÁË7ûuÄQ_t%í[ܼø…ç ýå—7²ÙŸÿžtÄ¿^áË»ŸJ:»Ëý£Y‡üZsÈ}úíÙÊm¾àþ«}pÒ¾piš¿~íyŽ=¿Ù Xº»gÆoÒŸ™v-åõõµ«ýô˜âøq߃ïÿì OuÝOƑүH;MÛQÇnK-õÍõè8‚¾ýën[|eæ¿fœ$óº#òÞv#5?›õ²MF½w‚Ÿ˜pLý’vð÷#J5±r=KÆK//þÈ ¯]Y™/é8°sPq¸zý«:N—×4¾5×_ž\fÜý^jÖ“:)óxd:ΓùFÛžŸÿþ¤‰¯˜yVÛm_^Y¡'m—\_ªèÊu™ïÊz‚”§½nÎó;þ3òÏ_îöAÒñl±,¼j’ÿtÍbG}[Ò¾Aq:Ðý¶‹KË;«$sŸXš€&Ç~¸Áݧ^Ÿt¬úØæ+­ú©Y4¼”~îé oÿA°Æãöòú³”‹i?Òo¤ý ég¥~_~Ó%Å’öïŠÍçåßTäç¨ åñǨ},-H$#/*óeÔråq¢ —0´›Ù×1ëQÖø¶}Äþ{øïßé:¥ü¾Æº›á­ÌÃæxùõñ³ooæc&ž_o›/ÖïÕNùôíqk&íé<­ýúb4޼Sû1ï _„o+¥õ]ÚÉÝÝuÔ»k?“žg8m×3i¯²n”¶WÓn_}íÇë­=E÷›Žøk1#í÷„oKžýîÏw¿Ý”GÛå·®òïy‹õîãòø1@xý…|^’O×É¥üd\3âëöç6h{LÛ•Äs£+\}öõ’ŽíKËÑ;kß\-Oÿeó¤u=J ]/>}•´þÛCE@þÎŒÍzKÛû½xåûI~Ê™'¬÷ò²ZO…ï.xAøÑñ¦^›óÂr:Íú¾´©×)Wd½¹¢žIúe~,ë|²ÿÑÝúÖ¦§œX9Ž°Û•píÞû×»á‡_˜xšýÐî:ßÿU1¢;iþȸùçé¸L8™ŽÓÌ:­¬ g¦”÷;:^Ù÷Óo3õϬӦ¼è¸õˆîk¬¨õSÖ»ã¡+ŽÝ2é:s“•__ÿ_ÚHZ\×)d!Ýß4í`‘Ò²ÖzIç.ºg¡£k·Û!ï]8×å']›>û£=×:?éºôï¥Öü½b?µÖºô9ÅÚ<ÇV¦j}gpq`—èzÒ¾G̾ċ“’¶G×ôÙ³™þ·ý‹¤ùŠü}eÜÿ~¶Ðý:ÿ”yœ=’ù„Äk¶ÿ+,ûÚÒIþµ;Ž»{çâ¸ûæî;æ{wœîW¦ý yMǽ»—úiyÖ¨/¦–óÓñŒIŸ5Ž·ó'ÿÝ»(Ž`  Ï­ý©×í—^±ïöÝKé¾Ú™7¿²õ·kԇȸSÆVý1é’}Ý4ŸlÎv<ôþu—¿vfÒñ¯‘Áè ·$-ƒ/¸áþG5¯­Ì5áñŸ½^¹>"ë›i?!ëOí[–û7“ÂéG¬õ YßÍ-¯÷æW) O×MòÛ§?{—´§ûí÷<8gÇÒ^Ò<¼ÑúsMÔü¿uãßöËŸê>“¬sËz¹ôëº\Ç݃ÌzÈð§ËûòjöÓõûÕ¬ÏK¸òzìî+løõh3©Xï”}7{?ó†'øÆz¿OÚÏ^Ÿ»–94éhÿ~º¢ãAÙ—·ÆçvùÉþ•Z\2ã{¾(ëéø<¿ôË|uèÉÊ7Y×½îÎç×¾§8ni¹pÓî+ÖÇ_¼û­31å—O×!Lze¾)é”y‡¬G§åiòIÚÌ{-î˜ñ¹\ß^Ÿ³ê“á ¤/å“™ÿYóñü²gÝÿÚ‘+êúÊ^Û·ÓqS’ö׿˜çø¯¾NF|þo>úËj:ÿßàÙ¥{帊öoÚG:4ëÍ·üĺË>Z9ÿ—u)ç“ß.uðIkiÔÀs%­÷k÷&m«ý~áÍ~ûL…`ÖmŠ4=ë…çu¾¾Ê_Ï\wò:.>ÉüVxð—4\éÇ¥_9¦4|ئ²žÈ8jB±›\ëºdXi4Û5Ú¼šõ;{]æyé«ìS™}tYÏIÛ‰ðpÔ†“J NF_êFUöcÒOZãPós:NqíA¬ûùñfÜÕ²~q˜¶ÈM9J?cú›Êã%óû&–Àb>oÊ?õ L}­µ¯–Î/$ß:¿ö¤¤k­RvǟúdÙ×®½ß‘r½+*-‡Ž7¾‡ì“µn\(&°Xžó•×áćÊ?òÃ[~꯴/]^ßi?£\?Ú¿.mCÀúü^Kúà^õ˜d,ó®´ÿ~™ý`Yï¾ÚëÖ²ï”öï†G묺í+¿{Ûä£|Þ´Çt=1ÿýt²+iÝá–þà˜Õ û|ÎØ“¶£ÿòÌ”»KÚþ¼ÐÈy½{t\1Gëe»íù‘–·”_º_eöíeŸ[öIeþ(é–v“rQÖeßÖ¬¦ã¯ ¿C¸·Rº>%ëéx¶ãÔWÂy_øµ®3ËøGꡬ“[ûu’OïþÝ.§~xr2b¡—v¾j¥û’a¥fÇÉðíöxô}×KFœ\öéF\TLý~/™þÜŒÇÅ_9l^ïîËŠ¼ÞðñÓÿñöWÚ¯[à‹½V_Õ´ÃkÊüÆÚ7똣<¯ëØ{ö ¯ÝcýJNÿß9ÅËãIǶÝ_>ß½IçÇåùVçcåu¸ÎÿF´ß>OT¶£ý—þàê&'k½ÙñÝÿÍ¡>R{yݦsÞ÷JV•ãÕqôãÏ´öÜÇÿ™t$'M|e¾v3þžæ~¸ìK¦óïŽÆ—6æ’Öm¿ß@Óy‚ìCI<^Yeì:_¿nê}û',ùîß72õÚœgÏ3ÄÛ’ù\º?ÜVlŒùßÇÕO—×¥—qz±y?ó ]gHÇaíýécW·’/é:eçuÿp᳎QfÔ^îšµž§×7óÕBK© ’vïÈâ€r—¤ýâs/y}£Ï“ü½¥èê:›ñ%d}RÖUdü ~à«GüdŽ?o¤ý¬ô—ö~´½?ž^gÄbåúÔ²ú½óuï²”®+Ê~°\÷K^ýfá ãkVÌ…Séz¶Y'²üÇEΛÿŽ—/Nò»”Dz?lÖ)-?ÓìŸÉ>ì ¥ý{Åø1åŒiÿ¿ýKzáêÑÍ}Di"kÚ³´ï–â¤.:wCåàngüá÷ ÇóÜ7ç3¯2nHyj÷wÒ/¶Þõýšy5ýHÊ׊ýh)7Y¿ÜùXaýçÞÐu0©çRR?dOÆw²O](·£Šz½Õ ›vxcÙ¤ó­b3Úüˆ¤kPÙGèxé²3·ûé>ÉÈC¼ï¹“†ÖôϺž:ù”íÛÙp]Ú…ø!ÃO]¤´ ¬ë0Ö|ÉŒwì}C)×4d¼i~–q˜µŸ\±Ol®Æø×žoŸê v]l§¹“ÎÇŸý&øì ]GI½ƒ Z>ñôýîÈ¥îxجûUœgeÞ*ë\é¼ÕðLÚí)Ûû髌¿Ì¸EúIY/HÇÙöþšÉ/›óÖ~½ì'H¾Txrr]Ë›i½ïËÙ†-û™z0+½{ëf/Þ£ŸK÷QóãÓ}©÷g‡åŸëÃ]/=yôc{èúƒå9‡:÷]û¬­fÿÌŒ—;þõ*ÝðÓ“¶ÿ|û«£~°µöóGYã´”¿¦\¼à¦/®­2n•ò–qk:¿4û¢£žþd•[ÛÍüXÊC8cÚ‡ŒgÄ7JËÙ”—¬G/ZÚ¦ÝHçÓ²žšúõYâ9æ†bGv¾ñºÍ«ÌWâr¾š}Û!åSÒ_¥ë†Ûçnsël_¾Sá›ý¼ÃÊë;ÒϘô¤å_kŸÄÌï¯.m¿-[±þ.þø4=kݧb½¡Æ¸Ü~m¹t×ãV>ýˆ¤õÓy>ù×Ñ ›ý2ÓÞlÞÔØ0^ݯ¾ê÷MP¿îõÇ'|±åzɨÖq?¼dòáf^l{r ŽX#yu¯J^¤ëf=Gâc# o6þõ×7/~‘9ßx‘þkCwÝo­¤m›÷÷¾ëîo’¶×¯¹ñ? |‘´}´í¶_Ê:NóMê±á¸”ïÉeØpÇz­(÷»‹ÝÂ1Ç%ýMIìÐu}yýð…ÒÆ öï©cæ#©_ ý³™7§ó#SÎ;ž{Ë sQ¹ÿšú\íWß×ùÄ…#“Ž%:K ¤"ž¦¼Î¹pË|ÂøÞ£†”öR2ª£†ÿyhÙëø¸ÔÝv'×Þö£_­²¡Î×yv—]ÇEc柰ðUGVÜb|#Š˜XêÛ¤}Î5î¸áº&íÃ:Žñ·á•ýë/KçNIËKóû&­KlüÒ¡—|ž´æ¹|½‡VNZÿXíòTe¯ëé|ÛŒ¿å>£Õ—¼÷¥·ŽTOSö¡Òñ¶¬wU¬Ùó%é復û †?Òÿ¥¯f_WÖy.--GM6×3÷1È}]Â)Yw¯KÖ]Òv'óbùœY}îÓd»ójú5™—šy¹¤CÒ%õÎîŸd¼œ¶Ç֔ߦý¤ëaÆÿ°×§Ö~µ´ñfæÃ¦ŸOP>/~=ß³¹$>¥ìO¦õÚü,ë(r¿YzŽY—Kǯã­4½Æ'±÷ä~‘½n9äÖ­Iþ‰ò|\ö'Ì8BÆÍåöj¼{ñ å¾°_–¦± ëþƒÔñèeÜ,ókkü%÷]ä¿øï‹›Í;OÒN?xà¥ñ÷&í§¶Ÿ»Ã¬ëϲ^ñè2oþòùýM½oûjìÅ*eö¡Ìºo:>Ï?<Çšûwœiöu̺†UÌzhº¯`~¾âØ-þ}ýZ¿ìõ{»~¥ëºÒÿ™ù‹x7•çIfFü¡ô¾3Y0û ;]{Ί[­–´_rAicÙ¼v.ÿ§}.ÝóAÃqá¶©Ï©§h¸!å/é?M<:©'2ß—}nY•úœ®g™ùQº^kî‘ù½µÿ-㳎v,mÄWr°+M=®O=EÙO0^ÜŽåúš÷}× ÷S/ÄîwÓëɾ´Y_}§|£oµýäš¾}ß䛹DÖ ¤¼Å¨µo‘Æ»¢Kçi£VÞôÍ=^»;5ÏÍÇ:v‰d䟷\â·«|™ŒÜfíwV|1¯ãKYÿ—ýŽ´/SöuÓu=ÓîÒøVÜh÷¿éùm+”¶×öÖõDñ-K·þð=_ÊUæé¾@û_þíoYï ß×?m]æ¢io²Þ ýŠÌŸÒ}ùœôÿyÿ¯Kg¾^rþߥf¼sÒ¾ö˜?„ÁcõÎøè’¯ézŽôã&}²ŸúU©ÚÏYÛ ’û”öú~*éÜôû?“Î7Ë÷å¿_>/ŽsK£¸½VOÚw/3×=IÇïâÈ8²ÔîZegí ™u}y•ö9òw¥…mr‘䋌_Òûÿ$_*Æã2¯KÇk†gi=‘ö'ù!ñ²ïû2û½²n'Cöñ†wîô·S>3ë÷r±Y§JçUÆ×Hç­†3¼Õ½×:"iŸëà}†]ü”ú„^Ú0ó;ãÁÊøHîC”t§ëi&?RÏÓ¬s¦í¡}ШÍïʇzÿ…x}›”†'kêxQê‹Õ˜ùûÓéý|÷––É~VÛƒHû?äµmô}ÅŽeõÑe¾šú&÷]Øû“2O‘ûh¥^üsáw~öØ/—Ðþ¯ÉßûÜ-I~¿çç{fRq޾ÿqøHmŸßpôë;ý/éXrè»çvN:Ú–{ö°mo4÷]Ÿ4]—3¼‘û!ÒõS®×Ü_<±Sïß\àòÒêkÜýÆg“¿9NïOoñÅòú™ðÜü^îGyº”Sºj¼ ÇI ãfÙ¿—ú™ÎoäùÒŸ·Ý\Ú¾:$Éo}U©cHòÏ”ïã0õLø’濌çÌ8VÚA:·×‰*öik¼VŒïÅ«LçïfAÎÛ±¤­¡÷qˆ-ã{»‰Ÿ*õÇwšù­í%ÈüCÆ rOø×,¸¸ÞwlæS2>[gìño ùS²èœ©¿"ãqY¿MïŸ1ë8ÂG{ÝΚÿ´¥ó«Šö'¾hújÆ)&|CãÝ›q§¬¯Ëþ Œ®Üá¤MŸ8 bžb|#Y_•þVüuÙÏH÷û;V?>·ÑkOk=”õ³ÏøòÈ·1ûІóŸÎ~ãåK>›t¬}OiÀœ´ùêöƒG‘ö'2¾•ùé~W¼´Â­Ïè¾¾Ü×(÷KŸ:׊,ºkÒöýpOwÊ}Ké~œ„/ûû†·â×¥û0Æ»‘uö”2¿ÊŸëÿE4—ÞO%Ÿÿ}:ï½5íw–tÍ æœ´¾žÖgY?‘ö(ó¥ã‚ƒ8éL½FöIdÝE<Å?–ÓaΓýGÙ§NûÏÿvñ“×ÝUá¿çya¯bWYyß”´{þ—Î÷F:ª´àŒ\íà­Úß_Syþåë=´Ò5ºßÞZsýç„Ç´þ¦ó+S¿Òð '¤þ¿=õøÕ^¿“u³¯!^©ŒcÒûºÌ8oû-Š%°nÒþ×»Wøûßw2ë6­[þÓ­ºß6÷ ˜z$á§Þ”Ÿ¦íßø(é}êÆû”ü}­mòROÝ«ãS¹Ï8½¿¯b=ÑzCÇV¯ðï;u}³ÖóJäüt/íjÝ⨮!Ê)™'¥í·â~ñ ­ý‘”ïùÞµ÷ÑC?Öû%§rà"oSßF“ûLeLÖßSîÉ}R¯å~êŠùEiô¶å2z®Œ?ãùÿøæ{7&íçïqÑ¿æ^.i§¼+÷Mȸ̌ÛeŸHø)ýBZŸÄÓ2áÈy’N™Ÿ¦ù/¾Qû§Ÿ•PdÖõäµbeŽç.þúâ¥Ô¯K=íZÏרXÇLï–zmö)Þ™ðÆögë}Ãfž•Þ/k¼øÿÿ÷ÅÍtþrÉmƒ.š2I륌ûSÿÙ<_#ݧ5÷O§ûI­/>>dŽ—Óñ¶ôSýäª3þð{oZ÷u›q•ŒŸ¤]Ëx^^­|VœD.uØ«Ï#2?oTº¾¥r_&}mIï£3ëÜé}´f\—–·Ü$ó3Ž[ö¤ÿ“û뤿‘qYºžg8ÆSö_Úº—;çô•:´Ÿ•ü¨ñ|/3Ž”õsËk’u>³þóÆewoüà¯t¿CÊIæÑò\¡]ž»ù“Í®×ñÕùåûå¾{ßÇ¬Ë g:Ö_cÄsh{JŸ#aö¹ä~ )ynMûx 'd>úþí¯úîHãi™q’ìc/t^醢dÄ­ÅNò‘“ï•Çi¦Ÿ—}Ñùç=ÿ|o3ã=ïKò_ê‹5ήØ×“ñº=¿²ï–õøGÊóÞt~ÔñƒÒtã@mézºY7µóMÆÍ²înySÆ«‘ù›<ŸöÚ}O\ôŒô>hyŽBÚ.ós–Ÿ+hú%éÿeÝF¼hiO‹•ë›éOîØpø~Çd}×î÷d_ø$^C:ÿöXkœhï3™yñ÷.6näõêá[þ³¹ŽølÖs˜ZÿU~–Y7½xHéXî§Ý·ú½ó%ù6Þ÷¢üÚ†‹ÆK÷̾ƒxiø²®ÙÑ™z÷ö~–}ߦíy¤Þñèíy‡Ì§¤ÝÉ~cš¯f¾b×KûyM’¯ÒÿTÜ0_ûžûžXyŸþY¥åñI×áçÿpƒ#/¯ð€ÍüT^eßÄ^/Jýg"}>ª=—|¬x¾[ZÏÍótV[ø¨“V‚ç9¥û¼#n:ô糿zžñG¼ññßÞ|ö}ŽùQGÙqzŸ‘ìÏ×ò¯å95éý~†¿«³Ír…[tü-¯/–×#`{|²o"ž¼p邏ùÙäËõ9-âmIýI÷ñÌ}®©bæR¾v?&óÛZÏWÞØÏ/KŸómîS0]l›ü‹bÆ>§û{2NLÇÆ'}µ4*ö_¥Lý³ï”zík<±ÀWž«Ï©Y³¤3Ž1¯R¦~Êý<ÒÙë›Ö~²=ެØ'·9•æOÅsÑ¿ûòî'Ï¿¿â<3/K¹böW¤þÊüWÆÝéóÿ̾búœJ_U´k¹/¦Æ}â†Ëµî_‘u¥Ô‹˜} ¹Ï!ÝÏh9µì×´=4Ï_ûžÎ ÓôV<·Ð¾Yž·(ó¹ôÕ¬OH{H=b3>Xë)¦°®kžkš®ûËó'L{ýp©‡é8ßx]Þo•`‘tü¨ô‹O“¶Ÿ–=ÄŠû뇖ŸÿfÖ•e¾’®Gšçò‹ÿ»byŸTîc“çm‹?!|7|”yP굿UÖgÅ/KŸK•oÕñÏ/ÎÓý~ñdÒçà›õ Yg²Ÿ£+^ìëË},¶Ÿ+ù í:ݧ5ëÝé~—ÉÏÇÏÚ»H~SŽ-wÍýóŸÜ·—ù~ó}v{”ýöZ÷ý e¿Ñ~®~º>fî7ïéH¿×£â¹dò|¿´]˜ôŠg#áÉ÷|ÈskRþšu"y~øAâ¯YóT³~›Ö[{ÜlöÉRŸÅì Kû¾þÅz¾†ŒGìûØåùw)?í} ³n'ãWû¾Õô¹»æ÷2ï´¼óyñÆÅ3ÈØ?˜uHGK¿+ÏA—çÃÉs³j=_ÑZg©xŽVú*÷EÊ} ÿìÚk–öx2l£Ÿüò×§ßR¦o¯ãï¶n9ó‘e4½²–Ž7 e~›Îß:Î*{pf]VünWJ¿.íÕš'›û$dÝTÖ_Óñ¾ñè$ÿä{4$ÿÒïu1÷¤ëçæùã¡ôùdö}Eëê2?–çܰʭù.Ðzž~Þ~ÎgÇ_Ê÷k™óe¿ø q¥«äc«ýð$]_6Þ”øÀò³ô§ÒþÒù¸_Ë÷„ØÏ%–q­¬£ÈzŒŒR/ÈxÖý—¦¿}?ýžy¾¡Ô³tÿ¶+Ý“ù´ážÌwdÿÚöM乓ò<yÞ—ô³öýœ–÷[q_ޤOÖSÅ'“y`ºmøcå³|¾«Ísä9‹æùøR¯¤ý×z^bÊŠuv©¿éódþb<ÉOYï|.õgÅÿ¾êäöúÓ¢IþòÏ~óÞ'À™ôÕ<§Dê¥ô;麯<×6_º»|×b;œz|¶OšzŽfRÖ d¼šÖûy&Æ3¼iÓq×þ¿¤m®Ç7ùï[ë}ÈéýEë²–g\ëþãJï¢<èóâ*‹ühõ¤óûÇjì™t~Xz¼ÕI×òó½[l µï+~íòâfóÎý÷¤sÜ÷7bésè¤=ʺŒíu¥ã*Sþéó©Ì:ûS·õø„/tü“zæóÖ:{Íç²Ë¸LüÙâ ~ g³ŽdÂ{ìÍÂç¿?Iû5yN·„#í#mÇfÅ®Çö÷GÈ÷F¤ë!ëŸ;}rÏo¶§ßÇ%ëÈ»”ÕïË2ûý©Ç`æÙ)dO>'M­ç2šûÿÓxw\no™Œ·Â¸¹o]µÂ®ù|4k½¹b~Yëþ*ë>e³Žb$eþ,ޑ܇)>˜äŒÏÓõ“ßW–¦+¯¥æý+²þa—&ŸWŒÈs:_°¼Eyîqż5­Ÿöx׌/d<"íÖê§Í¾rú}æùÊòÊß[$õZúÇšýƒ´_k¿¾sÛ/Ÿ~x£õ“ƒÊž²yM¿Ð|’Ü7/ÜJï«6û@žìßÈ}zò|6y~lêÁ˜uvy•ç?ɼWÖy¥^¥ãiYghyíä¯VøÃËIë÷ÓuÔ_±÷“eßÞž·§÷½µlTöÍó¥¤|åyÅ2~¿[Æòü7Y?J?'óךϽ“qdꉯ6å„ߦûòs~û—+¬ÿ¼Y3ýJú½o­·ì=ñ“ÙžÐøËúÕ½GO>íšõ´}¥ž ì3ØÏÛ0õTöÄß—u ñ&Òçf^æ…²þ ÷]É} éz»YG‘çÛȼ\¾¯Fú]ñ¸ÒýYÛÓ0óLëytö>Vëöe±m‘K_X”´m‘rIž#`yÆ5Ç»ò}@és°äûlϧâ¼_ìur§r&õ!;Ÿþð’‹wþWÒùTú}Zéz޽>^qß§†pUÆqés’·’~oš¼Ê÷}´ŒMïÏž§|°ìGW|oŸµ¿fÆ÷ÿ”/æ~e¿¦ß—"ÏÇ3ûË©g)÷Ó ?M#‹5.3÷W§÷­ÙÏ…µý_3M=¾Ž ÓçÈ|_öý­ç®¿õ„ÒcH†Ö|Oײå瘟ÕzGçn˜;T¿ÈÞ·Jý{ˤWžÛ*“} ùÞ4©wÒO¤õÞÌOäóòÜ\ëùOâ™ïÝ‘uºôsæ¹*×ñ·Â¥&?ÛK={ç;õ~íç‚Ûûçò\#™·ˆ-^¬ì§Žyë®)m7ëüÉÞ·úéCW»Å›Æ£5é’yœ|¿¦¬‡Iÿ–Þ—mÖck=WQ¼8?½Yþ>0Sÿ­udûÕÞ_n_¾ôu=ƒÍóŠMÿ’î+šï»OëæK40|•õ{ÝKÆÏm’ù°ð¿=ÿÉ}Zv?—îóÉsjìç$Ú÷¡™ðÒë›ñ†ôÏÏ]ã„ ÎÒç+Š·Ai:0ýoÍu0ñ äû&幣}Ó^ÄKû¨û´Ž#[ôybÁ^´öQ;$§–n\¸Äülæ)–ò·é¼E|ñÆN/÷sí+ûŒf•î7¶.š>¿S¾?Fös…Ëé|Ö¬ þê«bÇS‡>\ºýè@}ލŒOÒïnŸ?øÍœ«ªÜ²9oï[Ë:¦ôËé:é¨cÊë92Žýió|ÁôùÈfÞ Ï»±ÖkM–ÎÌó Ä}ÂÏ?2ë²o/÷q§e}Æ^IïGî8/½oN>gñEú玠ü=•âñÉóL½•|u,áÛ©åûH„c21ýœý*ß·%õBîû’ö™Þ—b|¹]òUîïH¿GPÚ¿ì×VìÓÚëäé÷4‹ÏÙ²ÊM¿ðA·¶[ùžeYg=õǵ]ò}v¦]¤¤û«RÌý8éz»ñ–dÜ#Ï—û€,ßßqãùÅ-`öÌ|Læ÷i?+õXÖ«ÍúSÚ^Ìýfâ^̶ÿœ˜´?zÁb_>ý°†+ßw–®¯Ê÷”>Éúz:¾1ë"•0—ñÈL=ܽ¤Sź`}Ÿ¥ùÙß\ð´Ò¸Þ'%>’¬S~OFzÿôðBù9äæ>ëµâ{®ÿ棿¬za%¯å¾'7ËúyÚîÌ÷šÔúC)ïêßo’Ë \¶Ê ÍÍU|mÊ6»MÞ»øfÁâ1oúË!“ØCÞîÿ³½Ó·sl»ë¾“·Û}WùËÎS¶—‹ì½û¾ûì”þ0tïÝöÞFNÙm›½öÚy²|nÈÞ“Sö²óîSÒ›O̶í®Ûl÷3ùa×ý·Ùq²á¹öÚ}ÿ¥!Ò ®šþaPAÞ¼ayãÉ_Þò&”7‘¼‰%V…nó®`Þ‘yÇægÞùæ]`Þ…æ]dÞ™0È„A& 2a ƒLd ™0È„A& 6a° ƒMlÂ`›0Ø„Á& 6a° Ã3ax& Ï„á™0<†gÂðLž Ã3ax& ß„á›0|†oÂðM¾ Ã7aø& ß„á›0F`ÂL #0a&ŒÀ„˜0F`ÂM¡ #4a„&ŒÐ„š0BFhÂM¡ #2aD&ŒÈ„™0"FdˆL‘ #2aD&ŒØ„›0bFlˆM± #6aÄ&ŒØ„KC ÝÝú¶ oIß²¾õô­¯o}êÛHßjh ­ ¡4´‚†VÐÐ ZAC+hh ­ ¡‘†Fih¤¡‘†Fih¤¡‘†Fkh¬¡±†Ækh¬¡±†Ækh¬¡yš§¡yš§¡yš§¡yš§¡yš§¡ùš¯¡ùš¯¡ùš¯¡ùš¯¡ùš¯¡Z ¡Z ¡Z ¡Z ¡Z ¡…Z¨¡…Z¨¡…Z¨¡…Z¨¡…Z¨¡EZ¤¡EZ¤¡EZ¤¡EZ¤¡EZ¤¡ÅZ¬¡ÅZ¬¡ÅZ¬¡ÅZ¬¡Å𲄔%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KHYBÊR–²„”%¤,!e )KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²„•%¬,ae +KXYÂÊV–°²ÄS–xÊOYâ)K„÷¼‡p nÂ-@¸·á Ü„[€p nÂ%— \‚p Â%— \‚p Â%— \†pÂe—!\†pÂe—!\†pÂõ \Âõ \Âõ \Âõ \Âõ \Âõ!\Âõ!\Âõ!\Âõ!\Âõ!\ Ü Ü Ü Ü Ü !Ü !Ü !Ü !Ü !Ü Ü Ü Ü Ü ÜÂ!ÜÂ!ÜÂ!ÜÂ!ÜÂ!\àUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€WàUxU^€Wà¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^ðŠ€W¼"à¯xEÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà¯xÅÀ+^1ðŠW ¼bà•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^yÀ+xå¯<à•¼ò€WðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|à•¼òW>ðÊ^ùÀ+xå¯|àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^À«x¯àU¼ €Wð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼ W!ð*^…À«x¯BàU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^EÀ«x¯"àU¼Š€Wð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯bàU ¼ŠW1ð*^ÅÀ«x¯Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿Ào'ðÛ üv¿ÀogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿ÁogðÛüv¿Áo÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷Ào÷J~{nèà\nÈwÅŸ,ƒÒ¿Í½ý6ûl³ô{m³ÛäâOß–Žÿ©´ íŠplm/data/Grunfeld.rda0000644000176200001440000000535114124132276014217 0ustar liggesusers‹í™kpUÕÇ/"ÒŠJ[Qe(÷¼/r „<€ /ÉÍ“„nn^$HÈKÀ/A)$€ l‡Úѱj+Ó¡Sf:õÑZ+eÆÒñ1R‹Zj{nþÿ³Wõs>u¼3;k¯½×^¿½×~È™Ÿ¯%æ'Á„ﯗC{†FxrxZ¬nCiIeq 0ÎÓ‡zév/]ê·Ø4x€S§!œ†pºm€Ó°NÃ8à”8À‰ûdØn/íñÒ^/íóÒ~/=é¥^:襧¼ô´—º½Ôã¥g¼tÈK?ôÒa/ñR¯—ú¼tôßøûÿòß'nÍ;ÝÞ¯ÇÝ´å²÷ûµÛx zô=þskÏ |Ëo¡·úîÊm!Ø·Þ ½uôŽ´k}ƒíXÞšòöo¡¼ëä.öãÉäS3aW‘Yo@6?Vÿ¹Ñbè•—YßvÍO@ßL~y,œè£Móa×”Ž~o½Ù†}Ó4ÔogÚ§¡¾}8Çÿê]ò 0îÒEÔ)ÓGAæ°«]Ø-ÿ'ô¬Ï¢RÈ<Ê¢[hWH½0öùûÑÿ¼ø)ø€öœ·Ò(ÊË.Ànþƒ“.†?ìpsf{+qvµ›½2ƒqË4š®¦ï†WÎŽz5nxü¥‘›F?‹/Ý|u÷ê©îòà‡“.æ¸9]gÇ7]Mw—ä%ƺË)—¾Ç}Ç]ñüópÑãnáwѯ’?znþÜ-Ùö)o¡]Æš¸ùl7Ç«õHnæÏÓânêRðÓf£>‹ýIùü,™^æÃèß’žøp6»‹ŸƒŸÅƒã_sÃ`Ÿý{Ô/|í–ƒ¿ÜˆŸ?/ËVyà äýnV»¡/Ð.ô)â7‹ãw8¯I;1ÞÔÏÔ2ÔÏâø\®‡”6Ä#ã.ô'ã#”gB\Éð³4õyÜwùÂxÖ^E\ þ¿Î†ñq k›°w‹àßMżÏäúr9îÔW0sgB_0öaÆuÁà¤7#ÞésÁËà~ÏXˆ¸¤¦ ]võ9¢<§ë¡qšú.ãÇu:·Òº†öã“´ã÷y©§áoÞvÌß¼¿p½…žù"çñ ”§SºC1n—ëb!×}øü/ï@}ø!ôcfx6ã6‡ñ2Ø¿$úù âìr~܉àÏ};wì.IÂ8ýu¸¨ëb!õù)_—Ô—ßEsÐÏì­”]ˆG:Ç?$Œ~ÿAèò·öEò­›˜ÿAwò¿_íSòÇ”úI¾ Ýí_nžÿÑMÇ„cèßúÉu?ö,Æýmò'2®ãÑNÝ#'oGýy³!¹?ywÿøŸ½‚xž{ëëüäþ…à>Ï{áT>äs§a÷ü=‹ú÷Ãùë°»ðäéÀÿ©*عù£<ú½Šú I°¿a?xàùy( íŽ_§>òðøé3±vÃ_ï ”‚v‡òØî:ìz§°|,ôî2Ø÷ŒBûö}×èï=Øy v½](ß— ?G¶¡üÙÐîíûzQß{’<ʧ¯ ý3¹°ïYMÿ±‹òî?³wB?¸œîGÐþPÊ{“á÷hû±›÷$€»s:êwñÞÞÌû¸c6Úw¾ ½ý^¾'ÎBß^ûžg;kxïÂzúïེ=F¿gP¾ƒ÷tçEÈÝ‹hÏóºè'°/æ½¹Žü¢ƒ(/ã9[6íÖ}~Ù9è…<ŸÊê!+Þ„¬¢Ÿ¼¿*Ç@Vñ¾ÝÀwEm-ß!l¿‰þêÿ€úu½hWÁu¸þÊ×ó¾­¦}ŒvÕY,ûêϡקvôÆI”ä6ò}°u2ã=šqœBýSøü2ä_ >ÂwI9ÇS‘YüãjAÒïªÐó;!Wé(_Ã÷ÐZŽÃÿîö/ áýYÊ÷L)¹e¼×1>eìw ç¡ódkì[’!ÛŽÓîߟ|w¶1îm »×®×a¿ïÂöó\s ÛØÏÎÃ\÷øÝw‚ûv?ß—S)ƒµìï†W ë9®×Sô5ƙ먎z÷É&ƳŽë:ÆþÄ8¿j}[Çúf¾×·ñ¼n> ~÷Vî-œëË8O‹yÎ/»÷Bîaœ÷K×ã~X‚ƒ^½³²®ã>Ëæz ¢]ö´ “þ ÞaŽ{ï¾Ï–ð}·ï€ÜV ¿™|/âw×ay%ôrî—þ¾ù8ÑVÄ£œñ‹îA¹îºüuÏsh÷ûð·—ïû}ô˳ÿ…\'¹œï|ÊUŒc!×K1yåQ´ó÷k]d#ï¡Rö£œq«¢Œq|µÜßu,¯g÷&îçfžgÛØŸÞk­þýÖÃóåg_=w:x/wþ úãäžß¿ïóÜœuå)ÔÓLÆ'‹çÏ2ž›y´Ëã~Êc¼ó¯UŒóZÊBާ˜õ¥þ>d?*Ϫ7Q¾bÏò#œ¿âcà¬ã|¯ç>ØØÆóŒßã±×¹î®ñüK ü ²í7q_5®gÜßæúä¼6sÿl-Bý¶¿÷ûM¾…þ$ÿ•q¸Rã~±9¯3)ç±<‹ë'—úrŽ+z.íWq}pE¸¿#XnA΀} ã\qz1ãVÂy+}rõ Æ}=Ë«h¿‘åÕœçjî×¶‹Ñ¾ö ×-ç­ö ìÿ&–7Ò~3ûÕLÎXrÆò;al¾ÆòûüN~_ùßcø}1šß£(G²]"ëGÐþî—»èç>þ{À÷hw?¿W'ó»r ï¯i'û說ý?ÊÐ ‘ª’/3&®°pHiy¬ÊÏ7–DbÌ'”o¨÷ÛÕG*ëJ¨ +ŠDËk#•_ó="¶±aúÿú¿ÄŠAA?£ùÝÏ~Æô3–Ÿ±ýŒãgBÌ ÎP¹ Êi*§«œ¡r¦ÊY*g«œ£rŠ¡)†¦šbhŠ¡)†¦šbhŠ¡)†¦ºb芡+†®ºb芡+†®ºbèŠa(†¡†bŠa(†¡†bŠa(†¡¦b˜Ša*†©¦b˜Ša*†©¦b˜Ša)†¥–bXŠa)†¥–bXŠa)†¥¶bØŠa+†­¶bØŠa+†­¶bØŠá(†£Žb8Šá(†£Žb8Šá(†£!Å)FH1BŠRŒb„#¤!ÅùŒ„àŒ’ JV“¬.YC²¦d-ÉÚ’u$+´ Ð‚B -(´ Ð‚B -(´ Ð‚BÓ„¦ Mš&4MhšÐ4¡iBÓ„¦ Mš.4]hºÐt¡éBÓ…¦ Mš.4Ch†Ð ¡B3„fÍš!4Ch†ÐL¡™B3…f Íš)4Sh¦ÐL¡™B³„f Íš%4Kh–Ð,¡YB³„f Íš-4[h¶Ðl¡ÙB³…f Íš-4GhŽÐ¡9Bs„æÍš#4GhŽÐBB -$´ÐBB -$´ÐBB“³DóÎ’¯=TŠ*#5þCÂ/L,ŽÔF¦—Ƽ7†§}Oÿ”ÏÛÖ;"plm/data/Snmesp.rda0000644000176200001440000050032014124132276013712 0ustar liggesusersý7zXZi"Þ6!ÏXÌãNïþ])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷ÆuìžYt]ŠteøEy¸VjlpÌvè8!íßtT7M½9ĸ‹I†™3ê5f>Rxä«ë°\#Ï_Åï çôÓø½¶ÊŒ•†Àæ“xÇ”WÀè@m3kXÙj#º+(äPž#Ô.lÏ\¤P@õC¯»…ìyxê_ö$W‚Ü[ÚÂa…¤­†pA c£žebè,_á}MÈôo «[øQ(eÚ´Û:5¼Xþîbô@tÀ%([&Ùä‹…„§Õº‚ 1ü|ìZ`¸Í+r,V]4¥‰óe¶¦U’µŸrð×Ç2»¡š•¼Ý²–qprŽº¤þøpýC„3Ù§öì×;oƒõ’û䥙D3%PKeù¾T Óñgf_«|†Šãâvðžå•o3î‡> ¦ª=5#ïÜ_}ÕukøogÆ>Åñnµ½ƒO•®üpø¥rj2&ûˆã»JɆ|v¶RŒ ÷|"”QpŽ7Cž«¹-eÏeò‰’Ö 2<l*ƒ~4Q¤ûÔŒ7}`ˆ¦ zMnKWë¼—Ÿ ø¡è(*f]<`Æã@»S1Fg•ÄõLL<¤°æ¢¦=t"ôf‡êˆ5SÃôÏË€àl¢»1ˆ¸ÏóLx¾ŸË}@N!·ñ Búðý_ÝjÇ\×ïïQ™ÀPàN²­[£SñuNýžªê­‡fÆ”°ùòCŸ$L®á CÚ_%ÁWÞÀ!•°ÍçÚ&ÄÅ]’NÝöØÿåÚªèâ’Ó ôÅ[ƒpS¿Ä–·³îcˆ7P0d2uÊ{±~ú­€ù¡ã|èw!©õâiýXwp`šó®ê^ÍåF£åÖM`öƒ‚#K箆¾œÙµCªÎ¤÷9'1p|µÏU"æÌ&îÏ;€8HíÉr$_‹Ì¢$krQ¨‚ˆˆú7l*ä=æ†>#=ôu c â&ƒ°ýy"ªkOå­Œ‡J=¬ê…8 ´$û %ÛÊh=}ž¯ÌŸÖWB’ã B?våðÌþxg¬޽Úi$¬¯D=™zDÔÂøÐmC_šY䥭 ;I/àq> ÜÔðÉüÄ„ða²!ÝJlq™™Ô9¸¹Gª«ûØ·þžŒ—?ró-b÷DÐ(êc¨7ÕXx™ü7Ëã×äŠ âXúTìI…~-cÛ-S•?Hô‘6–fŒ¥TékY ÉXò”¡d‘?Ízí·ŸÚN:AI·3ŒF¼äá~¦5þ;ñ‰7T´Úè|h*i=¢_>¹ þgíNeÚëÄâàD}b½ÑÒYšVVB²qŠ‘ÊÆN, 1À*’ÂÆÕ`IÂ0§ýÿ˜‰¥6¶ª†—o‚4ÊácÊÒš#g‡Ú=ÈNMŒ`‘ogðâ,;A™Ëö¨¬ÁCoõékvv·+â­°òÜo d§fš!&šÆÿ®?É0iÏÿr‘úEâ!ßtß3²FSzξ!µøB½ØöÒÃ'|OYz>ªzƒîˆ¨‘J_‰üCÃ$›`SöŽùÐ’P×=7Á3gÒw;勨)?Udîî£sëno㩾¥R¶ F—•îÖž­AŸûöïµ(Ä€#ÃõÎv&Úwö×›­8|L‰œ'aãô»RV9™œ0|BÑ ‡VÔÝx O0å`®ŸÑ5]sq ôÛ,ûù©Ôí«šÁûͱéÚLÏPøÜ¢ÝÛÑÞ0å‹·ýþ5ÐÛà(ˆ´!Ê·Óõ§o`£\t†WU_2>Ü;æðxøäy*Y¦üܱ¡(oÉÓ;˜öK9¹¯ÑoJ?"ž¹Y° Gy ‘Ùá­ïºqêÜ+ïN‹˜–oäEƒ\èŠ}üziÅ=úî\cªý,ðÌ„b#ë«ÍŠoN ½Ç:®¿ô(dÚšU—y™ƒv°y}°N`O’Å¡¨+P{Ùå— J)O ‡[%@¿œËS+t9M-1ëv¤Q Üô/fÖÅ2NZmŽ…ø9%ÞéD«“ؤñ.âå¼ d>þˆ²­8Å\›–@g'oãˆ_)wØÇ‰‹µ„¹_UÖ¯n¸j¼hz}õÓw0DhˆÙ|ÍÛ`þi»ËˆS¥ {ècZçU;t9. 6ø“ɼ›à˜˜WÕÅņc³v¨8@T“ÑÙYž@©)Ñ7[›Rû€*RÑÔÚíêèõ{”:´àÒÉ vª‘wl{ ®Û‰4Š„’';|_þäõŽv2ïÇ})Ñw.KàŸ{ãVɃ•žÚ «—ï‘ …'0‘Ò»Íÿyâ#H­AS Ó2Gäs¹tøèŒÿug‘—Öƒ#ÑMÍ?0毤Ë肨X¥‹§\%6GÅÖñcÃSb½VÖB°hyá¾!þ`8ýeí ª:’¿­ ]Þ×5pî‚”EžaÕóîpÉáqM?»WLZÉþ´†ÔÉÐVøÄ¡®%a_þWú×Hx mÑÄÊõtµ€-*_Þb;Vûû¥ñüÄÊÙ /K‹Áo÷ƒ<4£­–l‡x>Vl¼¿žù³’‘Á÷+kuÜ’„¢g(Eãëqñ bWè¸í±ºßƒ±F *¨bn…Væ˜ßÊI-½w¹`Uùëð†õ¨ Ïtt%ØêTël´¤“A=¥?¬m8cðmP›-‰úTûA§._«ó¡Üu6¨])‘©Æ0†¸uÓ­œOXýÒ[Â}©€Ú2k³±;VY°¢ýãOù¼ä÷ݳo/©«(Í×Á¾:tÚs_pëbõ«ƒ·Ì™Ü9mžØÁý¡–ÍËWbF†1j;ôt4 ¯ƒ8M.ly¬:ÄKÂB£ñ´Ôh8šóFþo±º§Hœç,›ö§ÂpoiùY ‚Ôš bþ0´ÄÌ^Ñ»eÇ4š‰½î•z×G^¨Xs—ÈuýÕÞ´-ænfããÙ9ð†µ›Vä{ŽZ_Èå'’#Û +yóë;eöù á[]²‹Ë•ª'Ü":’¬0ã =þn.Ì`Ö^Ä_B›6¤…ʺÌóf¹ìû=~޵(4Îk£`>ÏUIÚYT”OcÐCô°#é‘ …¦6ƒÛ¥eì%+:" ³WyÎQ¿2þæ³Pà”I4]¨ìD0›Ay³Så65‡ƒ¶Ã>žmuâ,P{5èU‘ žÓ]5v1½—¥žj»°Ö7r OÄ‚ij•?¢ y÷÷‚îÃÏV¨¡æØCk h9tiº¬a¬§5ص°—Ç)jxn™ú¹T^9€®ßíióGöÙzÛ ¶Xd‹`¥+ÙÓô¬Ø’ ~F´lÓqÑ jÓ0{êò~ÀmEþnQV[à2{æ‹Êá,¦~–a„É2ý¹ß©f+ƒk8™3GçÇDÍ,ø™qGèõ¶§\«ï†>ñ¶Š¯lT¤Š‚nI]Îhû£ÀÑ|è4šÇ6¶žÔy cxë-8P>^lrx–ᮿ@ã«'³µ@íFã˜_oéÜ-µ]9Oâ‹ã`”!Xz2TÄ«Sv%v 0›²ÊÝÖ5œ Ðò$Ð&ôÕ— Æš¶:«‰¾ö#b3}_Ï^ä·sAíï¶o€­>{º®ÌkÜ!œ>0>÷BÅ‘kBËÞK0ù)?OAM7£0@è;LÒÞµn8ÝÙ{8É;™>JÇM&2Û³Ì|D¶^29]¹g°šp=kÕìO-ñ%éçó úþ­AŽ£ºuc–³ä…áˬ¯RлO™«þ½wCÿw÷«×š¨”HØös5òÅdѹž>ÔÖN†=2¸B™N‚e>¿ªnÚ¥Ö¹CWþ×Öñþém6Ãeõ¡K]å¹ð?­éq]œ 'æŒDßÖˆ‹êñ²&-"³;,“³Æ+¯SôÄ® Tr$†aÎáU~ñzÀ8ùUâÎàÿWîËHÝddŸ¼ å i¢ßéÆ4pXØœä‹ÿ®Ô½ëâÕwl¬¸3Ä› —unlõ›`¾ØK¢¡Ct|þ`áPkŽ—|8(‰á7Ðt~ަ²ìñ¬G†ÿx¶AÐf®ÿÀÑ«zr{hàž¢ü`c¥õ︪û4¤Bs(•ø§¦8;왞ì2ñ{^ª†%CBÿ v)ãTïÎH‡q@1;k. Äú‹@™DØdgJr?´TV÷aÆá@?Y´ ’ÃëJ#@•w¯¤‰Té”q Ô®FOùäå×2Q, 4òáæµGúuîP>KCv6÷†Íî,ïÄloÑ¡ýG¾çƒtƒýÞ)¦_>oƤãë¯àÝ+¾û%ñ(Å116¤*\Èü=Âwò¦íÑ&œ\صð2`ÉÇÁ–Èx¢ù'ÙÇf¦$ ·Í2cÔüh”{¾Fñk¹d‡ƒ Zð˜®=Ó4d½¢nàØÚUS´PtjëM°>zbkG8{•Yg`–YM|g]iêáVÂÆÌŠtù]rfôá]ϳ…¾$¬?ŽGx;WëÅ\óŽÛ0¼YE{2x^λ–b¼€E)ðnØÌ‹>ÖÊ`¨w葎šUPak.‚è‹‘tâê˜N»õÉvdˆm¡%¯˜‡óÏÈÕMÛȵd%ÂÅûʺ^³C ¬ßØÇ±õ“pÁÄ«¼ð¥—ÐPù¤bNt»ÊBÛ×6í$^AiІÇs»Y•U—\¡¶ vnB¢œ .’*zЮˆ#±V/ëü*,3 à1“¾Ãuªã°³Æ…B]NšoÜK¥_”¦ã N_ )Çÿ¥>¿å»ç=Æ^O†…ósœè“+ ¦"‚!å)uÀ{屭̦°§9j‚œ=fù‡º¿KœŒÙLEkòY±]U¤èÌ3^áÚ|}äÙ sØ+zœÓ”Iº[Û G•ˆ þÕ£Èz1#Áb*ÒÏŽáO£hx”÷L¨C™h¦Q²¦pÒ¾ï²pL.þE‰Oü˜L–á…Ò¦”u£ÂÛ†® 5cäÞs)Ì…Ž#$ä¾Ãꦇfb’À¦Sæ?y%œQµ_2Îxë5ès©^Ðiäö(Ú…‚ÎañD‡’:Ê¥ÿþÅP=q´‹‘×$ö ßGG Ü:l‹_ G]¸EjÀD|up°cÂí¤’…Û¦t”¿éºæÃ½r‡@Í’’¯×Ó£ZÐ`­ªöRt/-Œ5¸R÷8ôô]ÍÙÚJ8z,”/ªà·7¨Ç*åU :¨‚]veâÀ>ÍVM’üO—$Ý=ÑížhÈ0ÙÞrÖ*îÈ ¸×}½¯E÷á¶/è&0Í.ºz š+¯¨È{„5¸Ù¾ÇâY98Æ5<Ì·@/]VÄɨäƒè+œŠ]‹2ˆ¡Éãb  ¦Z2¿N"ï]pN=›–³Càâý´ˆÍ}T³â©³H{Ô°ˆ¾·I$aç[Úk©™ÛJ\c ZËnz’›ûŸ’ÀwÖ¬¥©x u/Êï—ÄêêMRJ8|xeôõÖlÒ/R,{˜aÑ!›ÍÍÖ$Q˜uJ±PÉ‘ð;ÒÜÑV.t?˜0 öSûL¸Üä¨Dˆ+[€Ú@Ø’¾z ÜÉ?÷Ä›iöçÕnÙÃÅXÅŠ®ø­0–e‡0¯‹X?¹ïNÈ} ׫¢“œ” ©{‰­‚Ôf:ù–Lx›:3ÝÏ(çl‡Œ3È껽¶.¹t/ÍEÉ$–fõòQÓ‚mm"ùq©7å· ‡wž›Ì¶”f' k¢ |ôg2¿>¨L6Pòú¾~ùmŸÇ×Ôá– z‡º¹Fë qÄEÊwé(™¥z}‰2­ûúQGÉÆ}Ý.¢¯b]PÛ{; Þ,†€Ê¤4û.´©úºY"`ô,ÞÌNÜJìIÜL°À "Û×í¡Ï‰vkµœI Bå<…®ÓåË 5ÌÍ+C¶­ ¢˜©‹ÝœbŽ`@ 24 gªž_4}£u—£ïK²aâÒHŒØq&/Œ“}¥ ÝÞ(åÀÜt!#™ÁR&ü ìÇNà,]þ CüÁ]++å>*úªÃ†ÅÄëûÖUÍ<ò†jf«j ôUk•Â#"TeEV÷i$L’«[E¥3cà,â/$u³ëýyÏﵤÞiPÜbkõB !‘c@ƒ¼(2çxAøù#2ö¯ ZSôÐFné âÝ«ŽGv|ÄóI &Žn¶Z-“š«$øÓÄ)Zwºî¼Rl¸QÀ±~xØÂ)ÕŸhšè¹P—xæ×ˆy{·*;Y¿9÷ñKv“‚ÔáÿcëÀ:î"á'µ$‘¥*XЪ~`Bqq ±. ÉV}¢…ƒÇGwÞ°÷åf’ÍêüHÌí>þµõH†ÂJÆn0¦PjdzèK%v_BßÉ5ª‹žnì',F´›Øêó ¢ À0t³½³ê`3÷O“!zñ$MvmÒ¤+•\ª>¤^ RZ†Šb­Y$&p¡ü]îòQ!5ìhÓqzüà(â\J ÷[¾ó×NÆŠd ]¨|€?FMÀAšGé}A"ü)3C‹üÝñ\èïf>'%q,FN™ŠÃ{ ü,ŠÈO0=c[ Ô0jq[ä¼n>åRØÿc· 3ZÛð8^ñÏ­ îr»Ê¿UïOu@›)†ëߪ´@ – ÅÏÓK+¾@çÓ)1O ó€ø^#¬ø —Ù.دòìI`o¦Ë «)2@ŠoÌ @Sc$zûGã B?“))ûÚà ¨¡Â¢‹öêu©ã•ðC\œäNª‰·Eg¤Hcr 8]-x¼ÐÓÌ‚/‡ªžLœn‹f@JyÏ7»o)ëñ¤¶€MØÉ:‚}”Æ:0%ù ’Æ2jcŒù‰Ül HŒÏÞ­Ø>TRí=Ì Þ,I¸QË_Ê.…½ëëh…)ÛT¤nk½ „Ìû\…àЕä<оF}7þØvKrã=LIw¥øx4X¤†V “áNNž˜p¯TEr^‘-”äk^¡´ë4Nq‚£…o¸?= Ãï_ô?»Ê¬l¼ø…åâZ»—Ÿqbš‚›´$Ü÷1‰tºÞ÷ƒ{-T ˜ =Gw+Þ#PlHæªòœ¶Q–oª"8ÈH%ùÏzN-†¼å'áZyI¡ÿ~EZmn+a×@.ÙBxµÀ¹ãÞM²º‰ é융 }$“‰W†t^4÷ãL‹ÎÀŒÜ¥»O  P`¦_ºb‹e8æÿšwoAa‡<ž”š@po[Ò¢Ä{ê°¶<×›V8ö¾0Eëèˆcßãªõ;¿ÏgQä´Yò }£—ÖäNÐ$‹@Îè8ëž7·Q¨ÚæÐ=klyW]ù‹ßòS?Ö§ª+y¶Ðë{²"-ÙjlÁçøÆf5»GÙý«tþ€%½b#˜‘<¥ÖߡРˆö<ãÓËS†¬ô¢Dz·í¼Ýft„Jq(¸hÀzc5^•Y<¿ðˆü\—œƒ0»BÛŠú¼ˆt3÷Vcmî•í.2‚ªr:GWVw4HÐ9ÓÆU»§Ç'Ù‹»qdŠÕ$8Kæls—=ŽÿY°mOCnØ:&Ó *áÖFåzH6¨†ãOdWCÔ_ Ã5LLµCWéáö£b~5Î&ÁÕÅ0*a¥çðÖ6 ÃJã¼U¬¬YÓU²Öì¾ývFç2M×gSãd`‘m©´xÐa»iÕ2ÕqÂòíB ÎÁàØéÉ`¡Ž÷]‹ÎÜ·ÓCá4aieäv›W®'\XÊì$µ&rè‡Î%†nbåp*©Õîä?ŸdBÔâø‰¬Yׄ–Õzð¨9³_i}2ÂRê)`X¥DB(û"ûÍu)lƒnµ!:Ø‚ýs1`Ø^æ#×3ŠŽCJµÅHv\z sa#¶ªñ¸UñÔà?»öKé“böDiƒs¼9é,Àò{“™ãt@¾/;©ÂIã7xœ‡©õ?g§3Øõv0N"K÷HTFæµÐ G;/6‹AŽ)`¼1‹¾V¨VfêVóuò¶±³¢uñ+˜éØð­ô’éùÚ©E¡åÁl§ó‹ÒjeB+/j‡£ÿ,þ‚‘Ù·E[ï#ÅGë]ój…¹uuG'ðSm•‹ëäzó?\/Èb‹Õ‹zhañmË?Úür*ÛºxHà>ÓG^¾ WAzG¿ˆ€ÖWi´õO¸qÞíÍ%õûÈÌÓô«­bAs6ÿZ¬Çg\vSz „ YÈnÐ¤Ö ¯óçkÍ¥ï¿õîóüÕ}È®—¹APBG¬,Á¼õP-áÿéžU ì>³L`Çwë]§aSR©jó¬î䌺`XÔš31ѵSÓÅå¶…B îTÁ)œZ2¤rCUް1}ì|C’ýTkˆúdë#C¦ 9’º7°Þo‹bHÄRC18fÒ^„× x Xªä•mNÒª›{Ç`+— nêÎ,îd'´~=ˆÁU/4Z½ c³{÷™m¯Ê³âmñÜ1Z#σ½ŽëòF<Ÿ¦€5rç-C3ìê¡gmbé¢% ÓU¿¹ð¿ÕL¨ÖC:Èî7Z—mà7½ ò¹%h´+ŽÇ íe ÌcŸDïiøç­§ù“ÆâŽ}¥ m5‚…“ŒŠ;ž¶ü~>Fžº=¥*ö5íÛD÷Óí9‚dúdlɪJi%Udÿ¼Óv˜xÛFÛz {¶r)‘¼ä?² χ¨9êùzïg&‡f8r§`p4´¨7<Ϋ¼rͳÂõ=²ªsP[TdX8£µ…JG£žJed\$é}Elï9ÏEFmó¥#êݘ,N‹`L-…Ö0ÇLÝ›¡‰ÎlÃ,u&}SöŽ8;[Öº9|­iõ6S#ÄLðUOL¿Å{„»NáAÛ:Þ}8…ŽxY»ÒC¬a~³ç-'!Qˆ 0Î\³«ÑÞ°Ñöâ®@$ûà\z±æ»ãˆTm¥³·M ðŒFÞ‹æ²ÂÑnÓ &ž %, Æ‘Ü‚EöG¯WQ |•õVŠ„”™· áV÷Nœ &j~þg霓QP*ï…Ka5)Ÿ?æüæ«åˆŽ­Œ\ rE\ŒùðºÎ™nœºÊ[ÚhfÇao4ÂÙþ^wEjîQ1t»‰‰!4Îs ýãïäü‹ÑAáÁñQ¨Ö*aЉísö£‘{\WÚxdHF.ží’ͺ}Dî:­i‘3uô+ "C\z Õ §h"'l$,vUY¥šÏ²ºéšßzùmQPì§‹®<º¯M€{®·Ýök-;™3·æ@K¯Ÿ‘ÿå@åÖHŸ’\žóÇ·éµKÝ¿œ¿„×Í4Qt+{0ªj‘eÃi'‡ÚÂø“£íê#êáÈchïú_—”GÍdªKpÚ踕V{Fâlj™AÍI j½^ â°à(K‹àÀlo õW!G’fxˆÝ@ÑÔ´#Ý|¡ÃâÿyŽoæ"ñó(3¿»›ü#TN íi««C›ïnn‡P–¥Ë$¼ÀX?ô€Uç"NŒ¯d£vøç~0ì\¼'ÏO  0KšxÖ/´ól=xÀ+‹ ­pàFH‹¦G&æ\}/( ñêS ÈàbBøŒ›Pn’¿ŽJXq~©È™ ª`ÎïûÌG¶Ž¼Ç>Ö3¬:­Y¾ yÇÂRr6¼.ÄuÓ6µGr•^„úu‘¤‰HD'j¢çÕgñûIØý¸FeŸH”@GòL.Ž8$íØÖÖ†Hl6=˜K)L§sô ¬ã!©/ƒóí‹ÜÛ¡¾[ÝÙ:Œ‹’{HæM j.ö‹ŽäÒol2L’ó°¸Ö$%f2ÙØ±^aÃÑ®ÑWؼBʧ˜¶X¹nß õ:’ ì?Üõ )¸½'Ý2І¸¢º[ƒj{Ýœ tÒ{¤ øì»§x²#Bàã á»RÓ©ÑF0JØ«næÙ…‡WɘR!t5~,Œ„Zñ6Åâß’I óHþGåCኡí;„U2m›¸å¨Õþ€€Ë:“Ѱ†8îî$‡UhêgÒg÷@«Âm‹)ÀMl‰‹VzY•tI›kÃûäFÃ&U›Ž¬HožKÈîD4¨HÅô—í!¶e*L†ÓŽ#Ÿö”}ª dœÖ*篗ª˜(?7Uéz‚äíÒøJÜxô ìÊ—j©¶’¿†¥VÑ>ÔõÓØ8¹øãÏ™ kàˆ%J!Œtµ}še>7t\a ~Äc´Ç씾rLú‡;Á{Á–+»î1#ÆÄù¶È+µ¯§\BšZ‡­ŒÎ÷B<HMï¥dzîµM‡òè%pÄ+¬Ú¼H˘—÷¶™¹M"Í͸° §ç”Úÿ7 ± =ï@8'jü…ÄN‚y)ƒ¤ÊÌID Ã¢Ìfο³M®¼µJüþõîónn¼l oúeíÁ'$ )=ãÊú‘ýžB³Kê@ÏF„,'@Q’Í´È,]žW±gÙ*tm-óÑÙÆË_ò¿_&P–¶M&¢ÊOñ#·õÖâžé?˜ ô½,ë8÷ÒÔ Àµ„º°Vù_÷#ì÷kÈ­ÖÇP[¬aHäúLGnTï«êx ̾K˜ÿÌ—Z¡ éZϼÖlØ! Å±sŒ›C±ìZ{8gæweûSï/K¡•ÌhDöõ;t,Jª½hù­@ñÿbS"êwãEfÖöÝkÄ.˜TôÐÂٲ̔˜[¨ŒAÄ èG5çFÍKgZJõ X”B¹ŽÏJ×"KÆe€I±ú‡Jþ7¤e5°~MÍ®õÎŽ % ç¿ Æàä×ʦÔWTÓ?<+Ž}oXiF ‚Ž'ÝÌwÙÔ[¹ ‹EÿeoG/ì…tZËÊ+ùY.Ý¡°ÎuvuÑûáUî¥#†mõV(1’hGåwl9‡üX¬|~¸Ü¼€oÐûá†Ù Êɸےƒ÷ÁþŒ[6x*År¤¦Ë&®œTM¶‘FÀ@¸”Eå>)«f p/¤žò„êh,‚ú¥ä~,xרkBÂÿ±XÕ&Éšuý Ùä­dÞ]Ýcöé§s ÷ÖTºQˤ‚\ ]*ºfiŽj;!ÈEjiic-LAN `Ôiˆd7p›mâChÖ¯Ëõ;ây°Ï}‰k¨Ée¾ P`mÖe…À¦½°v *{¨€ü_¡’Âÿ¶ŽÿÍ’X¸¨ð%×WITSOðXk_5é3—ÚX%b Ϋ•@¸ñc—Æ;ÈT·æœˆŽ‰g¸k/D¸+…PéîÿˆaÀLÞEQ”–jA?áK Õ"Ó*%Â¥×Ïd_@ŽñYк¬…>—¢¤Ù{µÄá%[–s·GêyظŸÈi `doÚ–¼Y¥G›hC~FÌ(¯yÄ8õ¼»Ž4‘+I9È£1máÅIÅ ¶Y£lµ‚¢Ç#‚÷¦3z Ím RD½=t ºáçEo3¢*¼ÉHœ,v͵„‚w5Š#k¡òš{kžG d´¿0üÜñÆm0\a\F¼Øv?hû®9J‰µ´E„Ht¿XI~6ˆõŠû ƒ´~IAÇpƒS¥òrŽ$Ý=ô-1×Ü`0güY±Lå¹̤šUôñøX+e‚ÕAv‘IU>AߵŮÍ@Þ,ìãgåb¯Øü"–ÚÄÀ ïa /W—•^îg86,è“ÔÙéÕî@î"ý€àµ%ô˜³Ê"=…¿!(î €msX–g°j¬ó~•à×\ê- ‡Ždx Y„¯Xoââ„7^s3m«ÅΧÿ öyг^ P ¿.Mâƒi‘ÒpÔJ÷5›Ø$Û7Ò„„}{_m³ÿûõÁ¤Ñ\› œ;GkQˆRg³ëÎIõ& v…iY¾!"‚ã­Ýµ¯ú»Ÿ<ÛSÜ—Fý¬~Üñ08ªêQ„ú˜©‹¦êšéà·ô-´ŠèCc±)ufÑÇ) HÅáÆ•ëÝÿêÂÉ.) ÞC0¼JGû¢¹=ù6É£=W¬ˆæÌq¢0‹Ó ³j¥âye<̰ÉêG€Ó¿$­ Ñ‘pH6ë¡Ó7ܧtœáµCê hâ~‚E¿P7àýôÌ™Ó²í± +×èH¹)0RÅNÿlðåJZL1·u‘aY 0®>ïujº ÇiP±»7á›bÝU¨ïÕnÅ iÄä\u^d½ºšhÌþu/Ò}“§!Â8ÊñI3!J s~“i íi]\ØÜ©ðu¥öªf%tÁå²³Æ+.0ZQÎãf¹ÝaÖ‹%ô;Ô¥ :²âžP¶l4;©+˜ÞœN”“_îɪPCC¿`l„'’_4H˜ ¼çÐ?j9t°Ôv9óG³"˜×­òS^èºÕf긃\óôz p¥#oßJfHxGXOGhñö;2mR&ï+!¥Å)ÅrN;Ð’…s¨›ó^F©¤¸ÙGÞ~Z׿÷#ÒæpœÄAêIž‰†#ÒúÏG5¥½7oG?S:ºå Üuj!ÿ«0-Îal LÜöˆ¦X>¢¨zqÓ¢5]þ— ñ9ý0L¢h¨–SõAž¦QYš>¡O/à×fwc+âĬFæÿAJž¾Ÿ_Y)Å;a`¼ óX¥4Fh¿pïhD47• ý-L'¦•×°©S@`·|²\ÆM¼YCò's jb1¿3-…²T¼*ªZË,ûëƒù_§"&ôvß´+)¶¯ög%þQ’„)4VÜ{zËáû½±£C½Ævu9£À½mÁEw^æ·çåÓU±ë¯ðN³g!q0 $bZ-+COB…n;l·0Ómæ*°W§ØH9k])ê3C^S7ê¨>åûfG¾ô(Š7!fÉí餉¯c™>+ˆœú”-Œ~K.Æ, XjŸB1㳃êé )ÀZ,$ùXJ0•ŒeíÒ'mm³‘jUÉÚä°xÄ%¦ˆdÊAö£€èÈY¸n„8Ìå}u†RCX(„g"8”wäÈoIh¿p»‘œƒ[mCEË/Œ|•Rç¯ñE_ÞV¥¦óa»:¾"7'aw°82UGâ#±¤B*g6ƒ÷« ë³R–=ˤ]¾áœmÙK®B-W i2fý+…“cøF2!õ \[ÊaOG«€ÿDVçj ý9=d¯£@''n`Þ¥B‡#z”Ø[s‘9Ò€m>Ç{è — …XÇ'*¾|,nvŸ ¦ò“M¸ö!o>/{1q7‚‚á·LfG»éãnw'Ý9Šu.ðº/œ€&Ìä­ÄèšàwcÊ’å·)+ʬ#¼…6t^kÛ¯éß^ ÒÛµ¸ÙJAˆþ¶Ù(Ñp@%uðí9AìeèLQZ;qÃWšCB׷騯«ñŸkï)…kµŽµÕ,ãšE˜ªšÂF BkRõÞ;Õ7DõÄ[Ì8‚¬~ÿïç,%¯^"kbŠ#íQ ±4~¾‰kÞA-[y®\dB¼ðsð¨bKgw:`x$eÍ;º –å°%Â,vÛ—ÝòYï.…ÛQFžÇ_ÊE˜8¸§nàMªõ0zlÅ1ÞWÏã*XѪò-üà­$æ†o{ÓBôƒ›¥ã˜Mö¬½¿Xr:º6âµ¶6±ž(æwù9ˆ”-­Üχ¿1Xˆ´ËRáò§æÜ3™à{fEµ€ Í0"…_鎾Ò='å¾»dÜšV|[%ŽDÄHG›ù¥;{&ÉF‰KC^Ú¯Í;×µæ­a)¾±ÐœEøkWQ'“χÚ{¾»´oͲe½µ{i1‰B¦}ûävÊŠ6žž$áQ…ž­P‡@ V’4뫦áupÈœ Y}F±7¦œðÁúkýû™´6AůeðEQƬ‡íýLÏ=óð© X`6’µºÈî-<•C[7Õ9²Œ‰Òë]d–‹þÓÉÙsp|ؤ+Á&{léÓøìwî—Òüd•4øS­ë?e'¹TíSÌŠ-ky™¥†1B=¹íºRnÀ‘¡¬¤O"n%žuÈŒ^·)1µí‰ô=Ä ªãf€·äÿoÐQê¾Ïޤ…RÂ\+¦-³õ‡6ú³ÆèÕa{eÜDP9Uw2ŠKücmðŽÊŠ$Ë6púYʘÙ8š0®Å,uAmš@¥-Ý|™þüóÅØ–HdÔ4¯U󰀌ç‡iT!2 ¨îÚ­ÕF¾XA¼`dÐ`Î’IÍDl\›©Ñð|¯ÃÃÝþý× 7R'Jÿ=™P=A8…îpø Ü ‰¾j‚£MüŒL…©[848ftØáÕã5“èÒììÐêäBöBY©0zß\j®B™Ž¾{Ƴ5.U³î^ Á†63šÙ{  †“üG~ ¤6ØùÍSµéÿ9hà?G>QÁïþI7ð¡ D0Ê®–œºuºéC NÚ¶š%SÝKì&.à(ƒ4æ¹àgê+"7)-º}ŽÝ“¼ãÆ™ 5–]‡âUkµ~D–YòZÉbç¶c®‰^|èü¿˜ÀP ž*ù.Ÿö3 ,{ˆûõs¿%M—0ÎS|8ÑsòŸM®op b GNÞ@ÞŒ”L½ü0›¤KtN ìE“• Ú@mí£Kù\“Ÿ+"ò-½™Ú®[^7v#ŸõbX/ô^§ÉN¥kVèÖ+óɾšƒI‰TpëÃèq]$£k(ûoȯþäÂY»Ì¯g¬ZMøÌV”QÞ'„‚µ!°.p¿2ÌJ­TˆüÎ!ŠØ3h>±ϼóu´'8z˜kÉCnT–Ý™¥6¤‡lµ;ê?ðáçEÌÍCžxLrfdJ45ïðôo8ÔY$zI9òѦý`w÷N£Ó÷UBº€J”±ê¡à„ÞÕaw, ä¡Ì:¾HúñU‡ãrïwณ˜Lù—Ú±·ùªá´c•m½ •“ï‰9êõõ;D×Ln`¹Ç Õyí»mÏ7óòàž»©×é°ãÆîä TÀ$Uv£K*àÀŽ€Ê¿ ž^ û”„bꈇy€÷-e­Ìâ]’´· ªzÙ4Ö±^ŠrÅQRU9ø¥'<-±rûÌ[FH3‹q](Nr'©–>Y.8Áš[v×ÌâØÃfA%MZ)#sI¤FLûTnRYìÈ*Oßsõ,'8H%¬61cìLåo‡ Hdˆ1Poá{…CNhn¤]M/¡cb­X¨±óÇÉðV{Nômo€›s›ççö"žÑnì –ÏxŒxÇW½"Úc¥ mMpsPábÄY?Å!Р…6·¾þ- ÓczÁÎ¥X)*ÀÖ§ç#'á( °5­®”“LÒôÏÃ=S»“¡Œ%ÓTÞÐkêØë5wŒ ¹no4¤¸"#T“Z?™`Wd:Eu<’´—ý°—u~ÿrºæŽi>ämQ[¦²´©ÊèþÒÇêz=›+‡N:“*^ tÿÿCÍô ß´û”ðJäÔO‹Qðƒ·%x²c)%«¼©‘ð3àð#¶Ìƈyç_Qz G#*?§+Få6‘h™ÊûØf5qû%s¶î2–óìê·‹>8YÓ7ôçV¿^ØŠú{ˆ€~¯¬Ü]·l êtµDýñâ½Íx+•Ñw#ôÎÓ7g¯(úøLT“ÿ¹·¤›“@9Y Ÿøeíõi»·®›•‰Ïôa´4ïÔ×Ì–·qrÞ)s§ÌÜÞ^Î[=^e¡䓤wù»Ú-Üi(šhÕÏO\º¡êž°èV;H†%`lÁJ³µÙ‹à¢o²!ü^×XÆ*róØnΣfWpÔ?{p#íœ1®°HþõÐua7H-gÍ^½5IÓ‹]£»ƒP~ajÄÖ6\ó%iFöý¼å¥8£ _øGmòN˜ÿ¢^*¾Ó8ÿ‡Gš53ÍàLBbŒ½1h¦¹!Á6°ä%SÕ¿3â¥NC°A¬ƒÓûû­Ç03…èˆp/,ªæŸfÖ1€|ÆV.»*[l¤º7kQÁBã1møÓ{&Ý3 „ŠìVïo†«}úáœ5ø¸E7ŽØŽ%ï’ éoù±ïR0Àtç8Æã.Þ»•ÅŒgˆØñ.]â{f6‹Ò:Äß,ADûéa™;`ëlL#Ääâ­¢Á¦Âð™E×…àËÛ¨úM¤7%‰ô|è#5Q(õè*> ÚÔ % ¾;çty„ûm¾©Èw‰£|@ÝÆÚ_ €›;Åzú ö­hFB¶ì±~ ›Ž'Ý—ôÒZV´¥z*©¢Õ­âsJž½m¦_ð]ùL x=2µ÷œ9Tè!ò-/…ùžcÍ`^–VÚ7’ð…âÔÎh]Ù !Å  þ~h cæ‹’7À`j¼NœñAWl6էшµ¦ ætÞÓG&¦^t¶zóÕž¢Q|Û¡ªkÀjVL&¹è©ÙÏ݉w6®hiWqa¤}dúÝssX>5L1‹Ïݺ¿Vq7´æA«î«Jç„5À7 ÉÀ8Jºq2ÚÎ "5`·²è§dO›3gišÁ)é0­Ê§Œ>Ž™´üœ‹üB˧&”ÂÏèpÚª8PŠ>Œâæ CùtàÇ•ü½^<º QY`Ø5a—Y°)6ãú—/'92¯EE£#²úö@à›ç{ +ÀélŽè?1%x0%u”îf#4àIÒ×ÙŽmÎMµÈ`êê,xdæS'&ùÔ² :›¬ ªDœA\77÷ßœÕåõg¸|ÜÃÙd>`ÓðÃ’Üî²YŽ<ÃC#Š]Ýdï‹å…óµ+9@^,—½ßq7­/} ^o“çû‰óîÜj… "Ž‘H•ÑtlXüeÁìþáÕ0ü€ä@ã¶ì % Tñ‰+6Ž  9é]¡>Á³Oîaaѳ|¦TFh/ûÊ('že;¡G2Í\Ï5ž a R3¥ÍCçé]aá}ceîÍýÈoôÝñˆ+›ÄN=„É3 rb–óä˜<%ó…8àåO˜¨Zõe–Qõá-•Ý¥Ò¨FK4"²D×›Òú‘¦`¿ÅÄOíS+µÐˆ™ùß9±ìB@ˆÖ«Û‡Û; R˵„·Šx’¸àßÙ6¹¢¸jºû¤N='G‘m׌q²žE*Þ`÷Uºn˜ý­ÀóÌ(âØ­n/&ÉFÇWáú59„ÎÊh+K†l½z½àŽuèC‘‹ƒû ÷€ ‚êÒ­G%H0RpíŸ ®ÃCŸ×Ë=â>x/9,Þ3eQÆÎ1º²A¹uÕ¿!UK"ŽGA¯KFjŠãÀýûF^º2´Î\޹~ȾêM\[±_«Ò}Úê‹G‘Qlð~ÎSɾÂbÖQudñ¬äÖÛÛ<ã ¿õÞÃ~Ÿ—uäY³4žÑŸ«7HçÄ µ"F±:‰h”#ßÝèÃ5rgÒw/æ;íµ( Ç‚v©ËÖUÔd“õIÝ»e˜gäs ¯1c=RïÖÍô£Zd &«•ÞÄV€µæ¸u¾”^t‘piŸ%‘˜?ošûüà\P2b੟ó‹Móòp­ûã*û é^~;8¦Ùèj8ßÇ‚Õ,Ë™Õ4ÛãÙÅR tÏn&RÕ 4~³öÐ¥¼v%Ë>¯Í÷ߨáÍ›e@1Ù2û^É"TSmQ³(²\Å®Ì;qVƒ¶r“Ý!ëS %sÌ¿7|¨Žw@EÇ™'7§ M“_1Ç®&ÄP¬„³kV{ ?+##7ùþk™§”Ü.‹Úªúß¼ˆ®š$`³„¨:º]·&,h—§.©ÞF³äóÞ•˜«.­i˜&Qƒ±”]ò™"“¹Ù¯ÈOÅKòUü!ã/Ñ6à‰ôI|óáÆq ô &ÙlÐ ¹ü–Æ-¯žuTLÏ•v@]p—åå((A þgRí–‘aõUœ6ýŸ1å6¨0Ûç»vSYg¹°µ™Ë³F=M¸÷*Py-âО@ ƒóõ Ñx‹ 3ˆϹç³-êFuœá-© ¾êTíÊèÝç:UÏæk^Ç9E2Ë"¬M“ÄÆ}Jí’ñ¦Ç±<>v´öÙk²ƒ=wwLϺEv˜Z†©ÌáÌz¬9èúFêw”MBÞÛ&E_@­l öüª#|üXýN€Q#”äÁ6ü—i»þ¦~^õ <3<l<Ýf·×^G£|;Wõ§3L¸fe§¬¬ÉM%g§ìÔÁk#ÀÓçW&.Ot1!™Äàl¢„ÛB=°†“®f“rœ¬œ”"¸q1Èlå|êZHÁ5m¤ó âã=b[#–‘eð“w‚e£™uRMÿ9ý ±5µçhÈÒø¡xTO³'hô7ªÙ\ç¶­;?¸“?ÍÉï;\Ì_§EŠtÔÐÂ`õ”x6ó%²µ 6W:Zœ=¿#…ÑP8Ý#!yqßèX3ábDÅ*·FN˜úëQ¥IgX;ós}kYðãj«ÂaŸßæØj4ÊÑÆôN‡Öõü Wy43¤«T>þ®1y}Г´Ã)Í /®¢Ã‡Rmeþ¸[Åʹ0*V×qd!‰'ãþTæ+¾@*-H½A§aNl0²¦}¶éa¼V-…@jÉhHMÊ…§ƒ·õ®3hÂEß[ÃvR&³UPÎ>¢eÀZº½®ï äĩ×&¼Ñæa©Á2J–•¡€—"ðžVx¡ÑÜ!™¾]þ_¬âÅ܇M¨ö78ãTºw¤ß:÷ûê¿Ýº;iˆTcæ"%·¹€} b€i/ŒNšàíïóÀ;UÇSV¼-à 74C´éwyåQüráØë¹;qzgœn5rmý8 Lu(æY.¼ÙajÉ-Û3­&ŽŸlšëŽéqEßd7!0¿Þ°ƒŽ3¤edœü~ÅÓ+Æ»l ®—'ïûO\¤òÙ¥m˜?Ô#³Ê‡¿uÊ·õ˜µj‰0NêDqRW ›‚õP‰tø=E /…¡$ no¨°©òT%lS–™ˆE¦/fåâ;Å!­¶”Û‚Ÿ8‘ÇWó|ÍãIÿå?h÷µ œ¥Äü„—Â~ÖÈ|“!²Üªz´À«••$·HëY%!¨½F‘¦ð ¼ëH5ù˜õCyâêõ‘Œ9É1«þi•xˆW5Áy€mú¨>\YÄ•¢<3Ö @›ýÄYjüÊ(dШ”lQ¨¦”yÌ×&>æ>]È© Gm•#9¶f2'|WÌ.C¬Ýiøª¤µXï’%âˆ]¶Ú—äÇ•Û9Ú³/Ù)£t¿gâ‘#'Hwza25rKv—|HCv°„ê=¹EÎËéÕµëÁÑ"×`“³8\l¤YÅK¬îÕß–‘âÓ÷?4Ëd„/˜ª<Àïÿ\ôÊ»¤é@4Š w¨2MÎæ]”ú‚÷e8ú-¨2]ᇹÎÛÅh_çB‡J0þõÅëEëg(Ñí_Ðô7”±C(huä è¨²Š±}Ú8‡WÜ›‡ &†$ÄSëÁΖwåXp|NfÒÓLÃA³ø$¡JvÑ™Càê~n’gŠbÁ^iCXpË>ÿàÜc?u“ºÔ¡xx—±/Þ+’Üö¦*b&—è/òŒ1œç=Ö‰‚&ðö%óo^кˆ¨ù^ýΜ¨&GñLùŽ{4‘'AÔÆYQp ‘¿NÏÉë/‹‹r)”Öé«MªÑ…ò{ÆÇÝ@û’’ý†ÝþsUÃò¤íA%x·—/³Jôiößqì yp ð¦ŸõEï[¥Â €Ùæö7vAxˆ ©U)™ù&ªs ä°Í§pO…³ÓQ¶¿.ç7<\âWç´UØÂ~ÅwP DÌ‘@Ž æ y»¸#’Ãn¥üâÁõØ®íÂFùhúÎð»ëÂc8'öÛFf”Fâ{THOÇÉ';¸{LºuŽ‚¼@p¶Ã+æNæƒk̹‡_£;‹ˆ­¼ øæN¼ÄYùLu¾ÏºšXåá.öàÎC&ç Ý\'<`¿Û&¶Ë*ïø_MÀÞIc¸íVü«sBÒØmíÅ Ïhm®Í 4 3I¼Ň–b’»ìuG‡u›u*!ù%T¸ð§}h:e½’DˆÀr›£Eº®ºà÷­šÚk°§A&^×¥êªqù…g5õ’+XTÌl™Iaðp9ÑÓ±ƒv‚|Nå­B¨òÉDVÔÙó`š®_¡I„`È?)–Ç“¾Þ’š‚I=b­¿ìóø¬nàp/;€àí[4÷5°Ë‘X̓š~Φr¹¯ð´”y‘(ð$ÍTžÕ È¾dÃ9I ŒÉÑÈë®ÖPÇÖqÈìÂpꑽg «&]o¾¢»Vi~ÁEdUÆ9Ç;rÿ­¢ ¨d>¡’59¡3“€€Ioä?·ùÆeÍžGVÊѳa†ŸçØìGAO¦W×gJ ôDlli(!šÎöKÉBÌ`ª±€?[Ø£q©\æT(l9œ€ª@BgL÷Šq¶%_·‹n,¶>–¾$Ž4¾°Ùsú”âÐÞ&¬J+X¯|Ti¨ø5IœSÚ7HáVßO ’»*Â_y½ÈP "øw‹ª Ç@… ‘ÇsnOÙ†ctD7þ†GŠS÷ÝÉçpVºÒÆMå{ÏËG£6oÉ?ž[ecÓõ¨’N¤îB£ <ᯠC mùÉ.ZA! fñ–-¼0bí 8úxæ_8½V«D'ÜŠý𹑕YÝnƒƒ‹€Qz}¡F4DY™­Û–F°k2·þMrÍÖ˪2%ýï`+ª¨‰i Ð+D4{Š‚’TÅÙZè}ÿ…£qz8ÝÁÅJ‡ð†/ %Ø6š4`U|JÑ–Œ4ü¸ÑEƒÁvúbxŠ|ÿÖC~wº)çè"0óÉE×Êâ¢D|fÍéGÜ~)¨¡­0öþ´å±ZÔqùk¥šùN&ÇZlH¹E[p)vGÖ&ïAþ½Kq<8ž¡ãÈA=ù®›ß£L“Òï\øé>M‘yè°M/ð)D¹ÉõÆ}ÁÀÅŸÉêWç8n7‘6òÅÂK?N¢ÿg 2Ò¡}ޢЂöò@‡&zÒÅqÂA å97„ª9OÈŽw¼[ŠÀð³Äå“ÉØí¯òNðùb (Å}äGC2®—$«ùÉ;öCaNœWg±+ébÜU0¥›¹Q4G_™=™J€YõºN˜™çPÊV-$Pÿê¿‹æR_qد`ÃÚjr¼˜Hí°ß®v“rwBLv±á "’v¸?Q®«ç*2vî¡ Ò8¸ìÙÂ¥ ýŸ['¢a©¡{m%äÏÕã5-pÞPµüßOV±æö¨¸1w™ðv#‹Áã¡G/ü„RôÐb©Ö)o¡ËQSÎz§f”T߰ιH^GYÝ·Xg$Ü Ž¼üŠºh´Üé^jŒ6ä,™¨8bÝq ïèÕ'¬ÊõnmAmIoÒQXè ”ð©â¬• ¦‘w%µ·íðъ䨓1ˆ™›p¿yîñ¥{Dûæ+=ê2£ülx2éÓL–i¿«½v ñ˜óч‚€é»=´G ²{î–Ü"}UMV1·ëü Á¢¦L‹]°ùð+à¶Ö2åÒÇkÔ,+ªF¹À¨š•/ Þé{dpðÎî€A×AŠ-›4žþ‹l.h\avS@@ÁÄ’ª~ßœtðK<æØ9íÛýÕ;—ä©§_ ˆ™‰=óuÒ|„Å{l|ºEý0Uíç! ‡ix!yŸ^ò¦ŽO …øÊæðGk{ÃH+$TVlºƒï'¦y@'ácÅÀrßZ,c»wÑÉÌm(ù„èœ-½fhÞáú¢êqTvyµÝ£7ûørê±½£!¼³Ó¿¶PýoÎì‰Çç "Ù?2ÏÔþ'³<7XÜFæí²Š… &b,Ê€sO,¼7©Œ}f8¿U9ú>XùLþ ©|iK… g'õ Ú²Nc{¤aßñÉ‘­°´’'–x¤ÀŠpö¥ù"뮳͟­4lÞw±ÎŸ26Æ?òO× &ðѤÛeØw.C‹ލµ4Í)À}Ó‚Ws©a6‡… øq ³Ì ¹ÝÀŠe¦}ZýU ‹:VÞûWd嶈&!‡D^¬Z¾º°Ì§$V¾ÿóZý¨„ÛªO°uë|.—EÆbIìÊt‹o·)È7H¸Äòt„À\º6*Æ™ß0˜ìÏœ Ž;’z<ì|ÔßKÚÊMûaÚWWàȯi•õíf©Üˆ'j6”¼$x“K†¶„Tt#̳›$és|˜Y7´©ÌD?¯q²"ªsTeºÚÔ¢PÙi]õ …mÎLCÜN(iìZ“¤‹Ð.ÃÝë㟀­Cg •“ºh¾ð,òmx/‚u ê6Xcâ+¶b›5/œ|×ï¼eþÚ¬RBª?RøpElr;èÈr±ñùú=iælHe^Rè;^}”¤s¸“ú´éï‘ü:Zã@>>’wžr’¤œ^h-B•ùu ²z”z/ny>^ i¬žÝc°-–4 Î?µ’ª¿îŽm (PžËÈîöäù¤Z¼Åç4 —úêeÖ&Æ/Hú¦këËB"Ì<Ô Ã5ãcGÁ…}[å—t€3>æE.ÒE™¢²á!<¿DS7?®´ß¹›íŠÕóÞaϵ¬´¢9ßÏ[ˆw|(™ú=öÍïŒÑXè^8‚³çO¯,5ëâúþ&½+L‰}yó%Éî UŽ”Šådâš‘:|+0Àúì§%]2oBÑe1åKK¬ÝŒ„gæFÿ¶2Â~ðÖ®ô¦ÝÜ \žø™ý7ÇöUi:ý¥åzÊÙ³úõªl‚ s8 äKwçº.X²üÿzd´ë£ãŒ±é [o{Í‹e .Ký´Oh_· t2F‹«‘*ôá4spGDÔa¶†PØõy½ýˆxÝŠ¡²f*>¤!Ï’ßíׯÜ" þ°ÐÏGåWw¬ýè!C¹VÖðÆOž‹Ý›³úvâ{ûÌ<½~A›ŽV¦„Ç>MÌIl9Ò߀ðª Ân–ÎI‰ü>àâAéHµÌ]îgUÿúCÿ2™apœIhuŸZª÷nã+RK,×,*­íðë-²ºø³Wé!Bð®Ñc*£¯~;¨T »$æ´FjË2Ÿ~®É’žLâ†($:'BÕedï€x¬$Mëð_'ÐRrHGüâ: Ä£œEÄË÷lA¬ÜdŸb¨Ä†29$ÙaPg½9¢¬'§œ‡ß”£*|¤KÁ<®Ûòá:¡|ØVc²ŽïQè-È^˱ú,` •@, ølR¦|R’ûŒöíÃ8nâà««—”C,@"-ÀxËV$—÷°Gk(UµíF÷!Ö•I××6„›¡@CƒÒóYÐN݆ÇrtJs8åXPʧân]¿DhýøƒM‡cD2ðÇógÐ(iî^„ô…Äó «;?ƒêÕ”ųd ¦üø¡Êwšü¤]'4Fùå #Z4Ÿ”6Dfg®m±3Æ®’![TרCÛ’fùÙ(¾ˆ6–ìLAÏØéØ_úÆõŠ"àOÒBè§àÐl´Ïþð žå¨yæÎFÃç¤7aÈ›t‘Û»;Å| ô;Â4€Í=¶ËNfÃß#5€ˆìP¾.Û0b»Xô&ôÑS¤8+ó)ìöZv 7¬ ±‚½G6*ût:Ia…Íaf}X~y‹,¤A8yÍÝ}®…('ñÎÕÖÌĺ-£B)ˆi`µp$Å!æÝ³Ãô¨»J%ïoTº|Uw,ÿDj쟮3(^©±¾?RÕù¹ÿU«á©Ž·Ú‘,è=<+ªø~쀋=™±Tœ%ÄV9è]98ËŸóQ”0µÑ‹Å—ˆ |Öj‚p<7×íÏÅO‰S´bå)/3¨M¿*¥c1°p©ÌŒ«>‘M§§3ÄøçhGc«ÔÚ˜ì÷e¢…:äg¿®“eнıPó&6 Sv} Äúâþ£ŽNaÁj³äh 8錓 ï÷†¯g4•r%Ìš71¦c¶–ð¹o3‰½LÖ`ãk&×Î?lqyµV#iSùlùrÃÒÆ9“kŠ/…µ ½?\ëÿÍÜ8ÖÏ8hÿÙ!ÚTà*Íû"úÿ?{¼VkÍ`ѪÍ$¤0&w˜jl3Ú+Gfd lèB?¸’±=.F¶¼Ôé‚ktë ëÐM]‘ïÊR=ãáká ªÖÑè*FÁ%çýÕ„ÆÀf®e„ëç®íé9y ¢ÑàÄ<\ة꧓U‚Ä0¥5œ€›\ŒTšPêoÂãòD·À9š\ÂälêQÏUßš .éИ2ÅîÃã½hÆ üã"Rã“á eåB¬^ Ô»ÀèÛ»µšÿûIX¼sUX–Í}6ž–³uÞh1UuG"ÐãÙc¾áiñ×%"åB̲Ÿ¯/Y-{«à>}ųB5¥AÛ8“Ú¿¥3Ã÷®bB ×€(eykqGƒÌ¹áÎá‡Íæ¡öƒÌ–Ùüª6lgp÷y!ûì<Š^Æ÷JWeתç»<n™I(ŠœPg¿v lJQLCÚ¼Ë|p¥e!{ÍðÇÊŽûu¾s^ËJìKµn!ö÷7GB྘Ž0´ð:& 2¶þ!IÕ±=‡Š^ÿö®\ÀDν`TÀ¦õvLJ¾æùt”RInÍ2z}’†9ÿØ òua¢‡œúáKq€ê0K®8[u:RµŠðp»lºÑOؼ«?ãÖô¬1x¦²ØQ®ô'‹Ӧ¼pç¿ûï$7žx°i×Y+õ<;hÏ™t)ÀG–Ýmrç’ZTîg¡Ù?­›dm êm.΢¢sî[¸³4›zíäx‡í§,è/ö©iÈu¿ê»‹¦âF_é°Lÿ@h iØÀ|+¾}M0CM™x¢aJRë¹*¡Qxº~Á»CFìyËž ±(fa"Ü×?–Aø”™àþ·Ó>¤H :ÆhWì4;ŸòÑàr¼ôIÚ‚É€שØÅÏtÐTª_Ä,ð…ƒq4»¼ò¾×Þi”̉‰ ÌJpT€¾dºìxÓ»îÇ×Å“.?çpRÙŒx· ?å¯R~jHË»÷¢7æ$×6_ÖV¢íXŒ@pĉÐ-E5Š…¯ö<#ýTÑ•–èäFÿsŠ5‡¥«zÌ:ñ\+¦ý\B4\]ôƒ¹}hžŒ–;~A¥ÉtþÃÀyº²”ƒ·-—'°º]ý¬|”H‹ (mL–=ic4kÐ(ø(n€š@IóG   Ô/3”2¹`tHͦðŸ~&àR·Õ;þwLîæ“øúï³1¿n¿Ý!ï%ª÷­[ÅHè~Gå ,0Èxuß‘ÉQ¶%åô¿øVÃ=§4ÅŠ÷‘N-±?×Ok·bUœôí9}xú“„ CˆJÄÄ¢<ýçSNa<Ýršù-Ú ¨†¨>’ž}á Åj=”tØU‹›T¦[£ºS¸CÁ¯Ý=.ñÅf4¦Nô o I÷IøÂöŒçZø£ÚX¿–“¤qhõQ9ÕÊZãΖ+OäÁô0OÀ!3»tý¼8Ã[!`8¤éH$ |WùlkWÑ” ã3xì¤9ï ÎRV+ªšqŸ~nvPÄ Zˆ©+/ð~v*1·hÏߥšâ±H„ébXGJXö&LYlX?å „@MCÜy Ÿtì0Í6qôM&°¦ÔÅÀãÆ=ÇRg×s õ¤PaJ>¿,Ò#Ýçä ùBqî‡ýhšíPêý•í%ŽÏŒ˜êÀŠu{*!:ʉ×\ļ_4{§ (ªFB€Ѭk· O—MÒú½6=T™ñã°÷•ÝмPI-ÍgŸøY&÷Ê„š)TßË5ªégäœSKœs;­ážºäЕCQ;Üg¾»¼Òà^Œ1†å•ûÛ>mðÏ ¦‹ `{‘®¬©àã…ô‰ÜÁ: ³/½n›¾ìPÄQ†,eñ_ çù{œU î=4ŽjÐ P¢ÖÆ'ã Xÿr~šKfAªµN¿Iæøãž“Ær±S8tE·}[”Õ£“k½ßÈuܬ;q1ßÍâs^?Inñ€¥:D¾-j[ŠÃx}ÐánÁ£ÕÎʱÞ,Åjp‘Wç-8• &k­9ŽÆ¥ÌãTõÌwË'ç Û°êÒ¨xò¿©•塎þ[„ãØè$yI1äd™XØ$jÙß äÑ鞨ÝÎ*=+Ó;—݆auS±nôÿÊRÔ*˜ód”Õ«¡M –Ì,/4U{Ý’é Ðú4ènÈóíæA…²E”œ%DÍéì³YèX–[ç¤e0YjõcìÎÌÖ`šD°±à «¥2ݺå=a.=ƯZ$â¬ÈÍbáΨͬpñyK­3¸!)êFúš/iwÎA±¿'0€ä ¿sÖp‚a—I›Ù·wœú5'¯¥¸½Ô€VP ¬Cpî\²ýíØ:š]³±Ý-‡e]û’|®1Ëëxå¡ÛI¹Ðõ½º®CI"`{'öo><Ëlއ<¸0C®¦ìýn[j<ÚÔ‹ÙŒžÐ𓵰›ÀäYyŤà+¥VìÙBýc½@šjMbk!~/ ÁSãOCUð§VÂN”st‚­žø·7ÕãI­ö`*@?'J aÛ°ùV1ˆÇaòäºÐnó þá=Õ)îß››±ÿWÊSU«¥¢Co¹º+šO© ÖX|ë„{qþÅù¶ð¤³³p#nntƒXë{8ᜦH‡ÓÛÚ¾ÝUFW Ec4RýÝh)iöP ®í s*—z[:åï=ÈÓ¨eÈ”wG¤‚J¶e@ƒta$D¯‰Í‘-í•òx¡…>RªD‹ï'Ýë çÞð+dGÄIïÌQ˜‘.%à —ó”üM¨¯¢Ïïí¸,RŽ ©ê¤h ÎÚÂý[Ù0—³2^“5S1ÁQ,ZkÛ`DôøŸÅhoc¼à bg;À¶Ô±áÙ6š™Ô¾Wc NQI\4ß;ùô-‚9ºH˜ M›ÜY>ÛöÿLêMÍ cÌ<p§uîMò›uŒ¢’V/bE[ ¦¯% é•„¼6§©oÜÀ<Úøç‰Þ´‰i¢u A‹â’¿)þKóÞ›ÀÛ°qV?ûÝN·:Ùa„4¼ŒUZô>iî(Úȶµ}«N]÷ü }õ“Ǻ>ß$yºe NjƅÙÉ¿ß("ô°ÝY;Š€kí—üWùªÆü@¾¬¥¿â3ïlà/AKæIG”t4Á{ÿAjá^ûÆõÐia’\Þ‹CÛøÁ@¹Íy¨OÓ%èT½¬“Ÿ|^q‡h„OP= Ê,ú†mw­²›o—‚µeù`¤[ë#7Ü/›âQ¡˜g¼«ö?ÃJF¸%`®ãŽ7NP—Ëczgßq£;·Š¤{±jæÒ[æpà#Æ£:­Õ Sr‰õþzF„“÷˜Ä™ÏÛK•×™™8Ùá§ÝTªßpÊT Ï]¿É¡0³]&“—aF÷´X?6‘+ RÂE†» ‹š”h3ö‡lòœÒ4ß3‰‹HiK¿‘÷;Vr€‚•1ååIcFî ú ´ÒÜߨ¤sèÔ¹‹b½>Hm17vzrjèÝ®½#Á»ËOiqK•<ýÑ¥²Kü­Ý^‡8ñýjšOÛ–?‚{i¾ŸtԺȉPw¢»£ÓRàF(<‹1± sÖ$:Q7îþ4&ЄÈÓ–ßLØœ»ö,û ]øò&fi1­‰cskífÑuÓ –cðÎdM^ÄS<7gQ&/ù‰ i@—›%o?8|”þÙ –‰†Aù¢` Mµ*ôöl!n>>»´Í•]6qá•áèëÁåÝö“ž§·V Æ5¤ÿ2È–­éUsFë?ÊkDIÊÊJ5§8®ŠJÍñ•¤0–#³ÙÉþvÔ/îÓéñä :ƒNÚU0´ÒH6H`ÔÍœeg0†>\»Ò+­‚ý}ŸP©ÒQ>—0°˜æý´BJÚ ÞÑ4÷Mf™ç°"€Œ‘ø¹ êÒgÊVÚs~îx§¯§á /Ñ‚šdH=EÁ–Pš#…ÅÜÅ´¸/Üã삘3·QO˜•à\hB˽US³Ò>±Yôµf ðmN¥ áµbx»üyYO÷¬§Œ‘x´¦‹ÂsVDÏ ¯?m °ŽŠÿ2ú™¢Ôùõ-e6ðê0[PJ"!ú#è“É6š–¨MVÔ‡šúéŠ;sÈd0ŒB‹·ïÒDO‘ƒ¡ öÄH î{+¬ 9+Éó &_ƒ@àwT8p’»‘:{£–N.,Š“çÉò[ó‡ŸÌ“»ÒŸòõ²Ka«šßò—^‹æ›©‹â3Õµµ&ë,Ð^Þ…‰ El?±ÐäØ[£PoØ›åx¤{T'”¨B¨1eƦ͢™²„)f7Š«€ Jõn–ZqAI°¥Â˜ÊðÎ.¥Ã›<°H_ÉCa›“€ž s?ªOJ3Ò¤Àå#~NŠÙA« êΦ.jYüq×VY¤¥ºÌÉŒ9>$Îb Í{àœúzÓ[k=GHˆiq²?iaùïoß˜íªØè­÷r$JïbJSóÕJ[PÌž̪(J oîøºE0äB«‰"yÝâÖ Oµ&^‡ûqs;†‰¯à2 ¬…–ëÙ»€Ëð¶Î°%¯µ µl5v6ù9Šï¥›’öqÐù;3WÔ'úùeÆGŸ`Ö)™»†H¢_jßêßj*D)":!lŸJæÎ¾½œÃOú–uHÄÈCª·ˆŠ‡žzPƒ.í%f¤}©s·×É7æg¦¡²ÑwþØ¿Lq06"ä%%mú2HüFS;©;ïmZÀl7êcä„£¯_iŒÎÌJToZµ˜ ¯ÚVÍ\’ó²ÚGù¼¯•,6â2?aöœñH°"~ß±)Æ <´Êâ1ׯØÉà°Qp¥k *=£4n˳Y:žâUT —‹æ‡LMñùYdìÿ_Ñ‚\{FmýùÚ•¹L,tû‚–äo÷”…º»*ÆàybÆíïs· ´èŽbÒƒè”Xñ¢ºSaŠ×5.ª6Œ«(…¸¼¥cµ½ôçq扲„ïêFQ˜/MU ‡c/áš.œÇ—9 u Ù(“ǘٴ¸Þê:H¬!¥çf!ÖÌ–æ¥áTæÅª ßaFŽ¢5i„gõáýZ^aDT0qn‡ânyVÿ…þºÏ…Ù´Û‹F{º”œüj÷„œ[Ñú̪|ÓÆŊÄnm¦8„DáÀn°™wÛ—%òïlÕô‚'¹T 9!e†£JºÇ•¶¥üòn1OTÞ/9“Æ;œÛq¡í±šJ+λ"ÍË]̲ÿkþeÛã#&,',FÝ@änÌ1òcŽ+šK‚Ï?9t¢ñÈMåúÑÑßä“]½ 3ˆÉgÿsÉó -Kôɦ;AüJû+ÅüÔH’ï0îÐý¸D·â,ǘå™âbDÅ›n8Ã-V¤±6m ø°¨Cì¶>Þÿ8ÇBÞ]e0-}(÷&V”s‰ÒصþtŧúA^}Š"/S™‘=O…•Ös;U@•*Vé)•»·\Ùd“¤ó­!4Õ9ˆñ?7è;˜â»ù­†Òü3†oGþô”Ú”ÑožíI9/§µQ’ú±;Ý Z8C!“Ýi1–²šJîÊø©~î´!”Ìš½†D¹l åg_É/DjN^³îÙ¿\YÔO•5(RµyMÓ¿ª% ¶ÙÍ¡cÅzx¯e5»=B"€x 8¨0ö¬újuQ×·Ú3¹-š¶Áf¾t£Whì»`—žñg]£²õ>ʾŠþgïf‡ò Š×-_¹Uf¨LåÅð§/‰8×76j l ™©L=f5Éh‡ZñgÃþb›:fMï¸l °Ã@:î ”ƒ6zÖ)04ƒñ€ã(&ÐL£i‘—èz1g|è¿«&ÁÑkaÄ¿­™h_v»³´. ÁöMsĸê‘9ƒº˜ê–²+ßkŸ`QóÿúÄ ›””þb‚YmY–ä)¿½dº°¬EE8 E”|ïƒð¡Óø×Xâ²ܤTH!\‡u Ÿ‰ yO<â3{¿[FrcÃbÚZ5«s/}‹auñðWQËù7™R|-”.Ô}_œ[y#ñ–PûÞx2t¾ (èi‹÷¿žÒCÚZ »¨)ÁªKЪç”D¹º>~ÆáÕÍ—FNlõ÷¯3º^1]…M‚}ø®ß5òq'¤»t<Ê ‰µD>“"¬•ÂÔµ|ª“x° 0‡.| ö7(úÍòlÀ“ ˜Ù€FŒ¾v/ W=˜8Mó…ï‘ûàêK ®÷öÂàÔ·_iá©î0û\øeî»úIyÆè?Ž,]¾sü­Áùe¢KzÓõâÐf(ÙÞ¥|CŸî¦_5ð:5x=›Úšïg§Ü¹TŒƒ:àäi´‚ÄíÆ "—ÃDZ,¸Ù覦²Í“ )PjÀö]ò’Œ€”«SHFßý TIÄf*™V@b¥š#ðµÙÕn¹î9àù·ÔJYuNufÁfBû.IcÝvBÍÈŠ¹Iå µèò‰nê¤ÇMâ2Üdñlàb\kE,;ñí‰?A‘ô¨‡ŠZ°'vZD¯+ »Í™Ö/Ÿ‹]Rù®\•JN€W@…Î#ÅÓ¥ùN´œ0~Ø*¿Ø»Š€o¸câDQ}"’—SqƒÖk¼+ì¯.ÄQÙ~Og}²îG£¶K“èXˆ}­ÎßÃW=rcïç‰ r9š·Ø»¼è÷ ÍnP0 9'ò³1ƒ„Âuñf"›Âè‰S'Ö·µh‹z+Y%‹™<ílÙ¡ µ•¨º•7V¨~úäq|î°øfêaÈÑ/–GJf7öl6š½ q龞jÙYÊÜ4eCèMr½Z(àw¯ŸáȯäQR!H-Z®ÀöÀ]8s3)•‘»ÕÒUÖZyàÚ —\«>7 „ΙÝ=’»K¼·y¢F¯DÙY×äXωuð9dtÄHdØ ðiÂz“X¯=ã‰Å tQAzè®ZÕÌŒ¶çe 5 h73…Û(ˆu¡#2Æ+.À ±.f&¢Ö™åqêÜ'ͺ!ä­ ë+¡ ùÏ%!зïßoÌebB ­Ž+E&*h¨|ƒs·!¡\ÌË(ÖOfjai<ðm\y‹un¿câÙ’ÆÌÊ.x¸ÝÖ1¾DRà±H ¶U"ÞÍ+s• ´pÁý)L!²#¾ln“®ã×Ùh Ó•Z䥟ÙÉMFKƒÁ—A’/¼qgîT„b­{,ø.¹æÍ,/€£mÌ4ù*‘Kš¿ãæºZûbµ»¤^þT)$n³%à Ð^o` ´¼ƒîu¾kÔÅâ fKƒ”tYŒhÈÔÕAKqTv¯L±ÄÝ9«4’QÿØ-Êí0NÄtYk=Óq6Õ°Ò”¹Ï);˜–/ÚÂåCyTÖh딩\ýn¿DÛ­7™ )gã}DHÞdáLp‚›´‡<þp÷¥+h¯ ø °)!»lq$€Èª=K¼0 ›ÕÝìÿˆŒÐµ(Hç)`,­CF_)ÆŸkÝWÇ >¾~P˜õ0€:¡ Å ÒÞX¨çz9fäÚ´’<àõýd¾€pxš%*`,ä¡MNÍÅx̧f£kU£ŠCX‹–ÙÜâASvüBë{à3a“U¿[oðâ|Iœ˜‡à ím¥ÙäËq{7,Ÿg S—xN@¹\ä]mnd]Û6ë¢ìųçm¹T7—Nc·öÂ0“·€ç…² š›f¼ŸZ7`KñY;ïȾÞn׺=©q$ÏøÓà –¬Ñ¸05K[‹kk]tIŽË4»©•]—2’E=è$å|–æàq*°Ñ»è7ÓeÖHZDlwðWc¯ÊN…‡.¿Öܧ|2{þ¡„n*«R»úcëñCîj³(‚£8¢+t¬ÍJÅwÓªÊ3\¸£m˜ØäßòÏ:|út¥¬l¹UÐUé Äf`ú ›uË?ÀW°šÈº8_0ž—U‡ÌM$Þ,Qm^tD×·N¹6ÅNW*ø@ô%Æi Þð3/ă  ³M×—ùÈÀ~·ít™ãzý¤ŒkÿЗ¤Cã§ó•»®Š¨¬ãk/ÁiA›åû¦‘¡ôû> ÁAS=|Öõ_º:t”ô'g=·#CjÚvž®³uüA"aO¯d=í/P58亡-A 7ÆáާÇ!aŸhW°Û3Žøysý‰² ±œ‚ $¹±»MÖ^P=t.h—èõSzšöy„â^ øi¯LÃdr¬o³”*¶ºÝ%ü+ª&qÄúÀ¨ôÕÇo>©ÚQb™YýCü‹¿ªPÈ0GS,°îj©tõ·›N—Ý +öyíNšÇa*²~÷§žlíøÊ›˜ȽÁûÈ ºuUÒVÊ0Eð¥»0î›ì)B'Šç,èÚ·¥ö¡ Ĩ]%Ÿ‚Û2niíRª*ËÛ1~@ hØgЉyhµDõXã²WTIäõÑ·ƒ\4KÚÙÛáðÛΰt‚ˆdªÉÝN0Σ£ËVÈF^}¹Ö7ñ@ºihÃʼž£8 †3ÇYæ‚Ýæ 0O7"ÑÇh3W†ÂðÂç¶áR§~IÉ#4æ- Ÿ\8AÅÖÿ㺟¢ÃÈì^-tŠúiá…R{—IE‰W¹{˜Ø_$q°í2L9ú(©ˆ­@ /éT ñ‹Cyf„æÔžÞÞ† ¤ÿú¹~¢Õjòì«–×2s+UÃv}e|¥wÜq…½â¥IN;‚øÅ˜RW¬ýºPËMÜ»Œ“ÊÝ™$†Æ°ô sž÷ž)¨$V¿24áÃASã<[S´€''5›ºkómV°S,'pHt†p!N²÷œ/1ÔW«6æp:¶+|?hôTóî+²%¸fŽ{§ÞÉôÛ¹iÖÙçvm C©_E—‰”‰3ÏŽ7B‘vS–Ô®ã˜(™âÈC8&Ú…žùÆh›|K‰ñY>JBíÒŠŒBxJÓò¬î^3š»œj„HØÄ~wÐ!Ç7ß°fÏ#Áj<ù‹éÏI–hW}kïÙœÕÝlÇ’}¥ù·¸ÒÏCÃtÛ hém0rA[ž“öÎÃæêš2]Z÷*MÚ?DÞRosöIŠ>¹çŸŸ­·^í æèZOº*ùÆ.¬?aL%ÿÕKWī܉h²]È.*ámHÍÍÁ‘¼*AŸêÃëÞ|‡=XBÆ,Z2¦–Z³{ Ó¨q„_æ ßuj¾YYËçñ5ÈÒž‡¯EóA*D–“fúguOwmlVÓA^ 1¸éu#¢wYÎŽK_å÷öÐWnc‰~Ëë²O%<Ú¡`¼ÿ9l[C3Û9âJD ¶ÖÕ±7a Ø÷ÒcÛ¨¦ Už,uÙC­ÀÞŒo¢Æ:´IçÏY·Ö¿z˜ÈF”_Ô­® qÀ”JÞhéÉm¼:±¶Â~†4º.~u>«\ç¿8üGBdI3! ïÊqਹo!ŸTÝÒ``šn…@× £B[^ïŽÿ«0Ò*ó¸jwú“þ})Š™roj”lêXœØîÌÏ”,_蘑0Â{伂Ó.´#K½¦×J üz¹ê‚t¡EÃ_SÏ<Ð@1]*lº; Ñ:{†*h_©û’ú¦ìfËÞìÏ&±uãõÐØ@0i÷8cäA+ˆE^ÔÜJN”\x,Æ ýWôüä'àí–æ¥ÓÜôÙ/0ÊÍk4 ZŽÀ<7!Öù§^#¤Ðå¯ð4õ*Õ¶u*ÙpiÌBìuìOùæp©¥B¯@rž'O¸…IQ¾Rq²Õß§gŠ–Ò&‚–N7¹ÏÊò™äšS¼Aòçþ¿‰˜‡Ð=~lÑ8ÞÍm˜õ'¶Aê?è´¿ó;<¤¹ŠLE¬V]o`x²ÅùsøÇˆ­Ïë6çqu[´P²6ÄÒ›¿jdÇ%>ö¬šä,»¢h¨p—%í.y6î/†×•–_®è9¯°-wÛâðÉ\xáWŽ®‰ÎoY÷EÄOX(ó:ƒ'#›ï5lsñ¡Õ\ÌB|viNoâJ_=((¬évB úc·Zoj5Èeã_›Sާ`:ìá ”´zc ¼ß;eôFe'oï›\GÌs¬VN9Ù÷Ía9Ö4é/*¢Í$b8EÞ¤aå*²e+¯æ –8o6#M :Ä„A#3g;[¡Ä‰<&"c÷&­?Çz©$ÙX÷ÏæÉ~µKš 4‡0Ê€X“âð!h,QS&VÓëm£áƒë$l÷–×f+•AþP&£ 㺯1^éÔäHÐÖØMP¯‡ vó̲YÕʰ« o`‚'ú¿ôï­,¾C|8ïåž1©Ž&éÀ\½8¢%ü›ÚUù~>*xw:ÉÖˆFô¦¾p&QmÏ„ÑêTM«k¹ †Î!'L?ðÍVüà….:“„·ß‹S#z‰SıîÒˆ)žû9ž§ÈÒ@?О·ÜÒ5—Ú Éc°æÛ7!—JvÁÑ÷ò¢]´Þ")ëç{91ËÀ[áÙ¤P©u&v0¦'ÿnÁîêcîµ®Dð‰%ƒõ±“‚ c¢{Îȹ(ÿçó¯qæèçg[ùkÒ(°i‚Ÿ}{çbªŸvSe8 9]:ÿM ×µ^†,Ô¶ÅaC¶¢;ã¹pì&Hb«äª¤!uÙ®Ÿ©«T'…Þ˜Eßî -Œf߀—_³hš9yHaÚÅ`Rº¹¥ ¡Ê%2¨ögÈoz½#±Š9±¸vpÑØÅ]Ÿ8wäÇ…„3¾dâ£äþ+MxXt9mPìR>W³’Â=¿ÐM°¯X‰2'YzD>>ê’n#Ð}SêSȤS‚‰8oµbíª.”Þê@ê’¡ü‚»é9Jv#ßEME•uóö˜>FÑpÐ垃!tC·!E \·Ÿ•¾j-qBd'çÇ›Nß$\†C âÔÇ4ëö­Pb7Æz¼R2çÕúË/¼µ,nR{…§Ùղ噿–åbÚ$„ŸZGµ9BnŒú û'[¨V¹ò– CºÅþ$†q1J¨áà)R Ê*ßýêqet£òS¿»yF¹Vó€Ìq¸ý†Æñ¼&.ôk‹0oh ¨ïÅ]y%Qo(Oþ€¥«ò«§ÅTþYC ˜e,z Ëé ë+_Â0‘µÌþ¾à  컌æ*,2»Æ4^l&YÑ+ÛLõí%=^eÿ¸¬þ7`™Yb ÿü˃¼M©:E‹¬ °â®îJæÓ*á ï -ýÍ¢€^C¹¿Ó¥K'”†LÄ8¤oG±¾æQó [yæOæOÔ“^± -BŽù•Wß9Þ#7Dhe{5–°PÛœ„Zk.„lIÞ?P?o&$QšÓjZªó«rLi7nF(›®å6]œAðb¿ø8Ë”þ¡½|àUÄ_ᇉ9UÕÓê^«¾{¦=k€QöÇÚ> hƒÀõÚ]U^MÀ`(õ:廢PGQñ<ÎøPzj}ÊǤŒn6:ê0ñœ¼Üï$YJÏ .ç@ÁŠ”%1ÚìÑÉ-Wò9ÇB’ï@Ñk¦%Ðb%^¼„ã°ÁVõn'ÆÏ¹&Ÿ“Q¬€3ã+àD°Thi¥>9–Ç‘,‰Æ»ô‡¾Æ¢KXG0VZy~˜Qâx+ Ü.ISwM;Í%&ÉAq—¾%QÞÑ}m?µ‹g7Vô3§ü.ü( u2:å!mþàX¤Ü¼Íê4D=sª„Ž<ÁC4j¶à…c8µpwV<Ð{Ÿ)‡?…#yýi@á”ùÝEøáÓh!k¦fu=^ÞO Ô1ùV¸V[2‡¡›®BY‚¢Î[&Ii12ç-Ë  ɤ:%%éì3÷9Ovªß}rå'þ¬éÌqúŒpóä*c®ßŒÛž¦2na]ô hËKòH[Йôºø„LK@hpÓ6>Ï@\¦X&nÿ|ê“÷\x_:ë[±õ@V5†ÐA1¤cœ\šðô®.{àF8Q5²¶B¡ ’Gßq‘ž= ÊÕ@>úô Û°WJ¢”ñO^·¢CÑ«†¢ÔÜ«°3hq¼èÁçèF/8È"íü®YìÇÀ¼E$ãÀu æq´ ¾£Á~ß›GÛFÁ¿ØŽ(}ÛD@Ü´%I>ä©gð^€®N^غcg^ aájR.JW¡Ö²¹*ž¿´ÊÆêe|±ä÷BXUç;ª"{ÎRFR1^Hf€r1˜To Ül›ÏßBA£vÞ¢ñ/‰<ß9k2kU Jž9ÚU¶â©x²p¡Ð¤„廉OAC> ”‘"ð·@ZS‰Þ_¨lx »!»Qµ-‚¸èÊ(ÐdœÄ!²BÖJ–d)úônýEÔ IXPj~ħ ‹ n•œøbeÊÀe¾ˆ÷Ÿ³ümÕ÷/õ\[VÈÜ]Gt=Y¯U&™ÆcØÂržûãßà Ÿ‡0èùÕ2X+“P, ÛÎr°Ï¥GÝ› •p¢èÒ”Å$yJlþ¾>ò›¡àFÁ.‘Ÿÿ‹¦WÃâI³‰é„‡Hô=~;-a àO*©!6ü/É3ÿ˜ª+*ú N‹â>Æ¢‡ßýêF~Û¯±éÇM=wýÔd.@Ó" Œ§)(Ìœá¢4m Œçã¼ÆÑ/NEz½ÕÙ¬³RZT¼å€è5·RÔw7烆b<°#4Ý£‚‰…¾uÅ9·"Ç´LxÝó´ EiÈawèÛïsì¹Ýi±9e@#dÿš!µyÕ#˜`/aoo϶dþÚ¯¯’²½WÕ‘S~é ¡œª.f&…ùÊCx4F~ÈL)Wž¤ƒgÛŽ±•„‚eÊÉ6¦p†Ð´Âùÿç—¢c`êT ˜ôå«QضxÒ`ÃWQP­ÉD=Ì×äâa~J”ÅÜ_ÿ#à³ÆW |ü¦]t+xÚ˜$qL ÖÂY˜¦v>µO‡l)(€˜ûøRY4ÙŽK kp¸8ŒÙ"b>h€îçõFŒ2…ŠBý7Åwdb••]îË©¥ö¸{ÅpL¢ÐJ8£ h­në§®­ž~ÓáX±»ÐŽ;é¿Ë$¢iá{—t)BÛâFãÝ в5ýWÜ4£é`3W;qjà¯d|¯Ð|Ã>1Ï((ºøm {î‚c¸ÌCDH§>n™&F6mv B;^èʂ=ThË?u>ÝMÕ¬ßñ Š"Òž¶qE” V’YŸXQ1/¤¢ }$¸XÊÎí¶ÄÒÀî½Æ•»ë‰ ^í›öY€-^+åàkR‹,=» KóDÝó3æãÚÂIG퇻RòƒH {³p!t|~5PM#´>ƒÈw ¶5£d°‰»‡8÷¥ŽmÀ:h5j‰†ÆEÚ)¸‰޽¬«k@mÁÓ®‰º}§Hù9©ÛýÜYºšÔ`Mo’¿Wh¼H1"ÿpc%P ÚU.hr–îWô¤9’yÊàŸÏž üøÜ¤Ñ •ÓúTª¬­Ã}sl¿ÞµÕ¶ó"·xp:¼XÝ¢š±™ù%°eá/ñ†XŽ›Y‹@"1“ØKE‡¢´•¤Û3_S9®MY^¤eâN¸nDþ¦ Ì=Îçq¼™ZU1Á«EE`ý|úN _œŽ.CÄ[„¯€µ{§ª 妃g²:ô±B KÓkI£æ”W;Ž$5ˆÊ 4Q²YþZ^{ƒBw=Σ ¦€EµïΗt™=,û×As¬zZ0€vº¢®3¤ٚДÐäK m¹5qòÛÉáûH¬°±ZÀn–“R)¨ÉÇ¯ÈøÍf>Ða`6FØÐjnV×àëfþÚ/Ù·´Áï;YwàÓ²+„Q¯GöWè•V~Ò0^A-ª’K¿‘¼XZ)9g|<-K:ˆ¬¬ÞVK”Á#þôTAö>Hýlf?iŒ Ib˜-:îE+þmòSRÊÊ‘|¥=ϼõñ¹å¨2 Œ—G]&MN”¹(i3‚²@æÁw´³¢ì-¸¤µu€h…çp”ê€Ú6‘N#ÂhPòô„µ‡E·†0¾Kj(#üïNæ99uìýK½¿¼5§zyÚT7-ì{1­ra}XŠd–н¯IQ"ì¡£áûš~ åJÕ·†Å—|DKÛfÅfÊ”„gMÉ5€3pŸ$‰+묣ȧÑâôÑYe·Sèó_çÙVÐWËóz¨Vý3jD¹‰³ç¾OµJ ò0Ó3¯/ݬþ’ÖS5I]üªÛFä›…N—nqNï(ÕÒyR ¶Û³Š@Ö¢|Ò˜«aÉ’¶kO$hRfW)î0a xkQê]„íÜòùã!ÃBޤ5»c’\€ò±®2dE!_%o³YÌÐ }{Pùƒ‚&I…^nÈý9AÎ$;ÚêVãÏ »*4EAdúûŸï4‚V×Ù¾õGk >èâŸÍ(7¦t0»G>—„ÿ®2ýò¢ÄŒN/Õö?T’o Ï|·ZÙ ™ Ɔö61Bsj|â ª÷û­;(8glWfk©ÌVqÏž¦á hˆü¡¥ÛÍ]ï}l„ä–yr^¡w– ÿïÄåR™pN:£=û¯€@ sé¼lFó«îxùãðTðµœK™&_¡(JQS-À׉ÍøÑ¦ÑbÎk’Hà5$bœ}Ùs«¡ÓŸsý.ªnɹ˜¶…ÝN´vž¯FÏ­¦ž7d@æš /É3îå­@þ²$›å”!NïpòÝB kŸÀ!°èD“ùÖåÖ# 1 Îyžù-&Š3‘ToAAÀ4òã>B^c¿ë>):ë ùJþ¤EÕJK¤$Ìÿ%,v9¸Šèm«²e½‰/q,Ø–á"¡u êÚqJ¨¿ïgpG8INfÁé›hè¥&½¤/otÖÊ–g…´!Q0Ö Þ•zôñË$v‘a Â0Þ5"ìмzŠŽ…M2§ù)ýÿÞ«ÜhËûá‹&\þÂð6ZT:ÿÍÌUøüç ì5„çªt6Ì+öä¾¾ö•MÐy #U%'¢gi!W_¼4í+T¯k<”ÞëžSç±/ñŒÑ6 ìå¡¡|lÞµàù½,Ôè‰1BGFêˆ~½ŒŠŸŠs¯ î0ËLœ¼¶¨þ(‡ÙÆòêßÂ\lg(;ÿën¤l ³ÜWMœ›1ã]”¹`6+z$d­ï~¬áÓC^\9ÿ>0BÝg£( Ìë ‰Fƒêœb¹q´FìQ“ZF~is¡‘ ¡?Ÿ6ediJ %}À¬V|ò¿ñäšw5|Á¬)ãi¦K’næŽq_ðŠ˜BccS+Ýþ‘u¡Þ”›9na=ïåµ€¥âI °ü<)5=ü=H‹6l5ίñ$8YÊ2(]Èaäÿ®DrŒÓõ˜Æ V¾sÄÿ-çnê c:ž×r†bV†¢ˆÂ¢.75w¿ÊJ¢=@¼)Œ¢Hòh*+í¡Sµ|=MšÙw×.uî–0ïó€žïÒ­¶0Å•7¿Ÿ°$¼óÊÊN6Ü6p ­bœ5q CWÖÑv÷‚-"$o'æiÞe£ù–|ÊM{´]1mÜ&m ˆ¶Y(}¾Çuº^^d¨W±ížØ¸ü×ñžfd‰y“üTî?A´á%æñÔ%ÓgÐtæû.³n2ð¦âÙ÷ß™[MQKÿfñ¢ç GyæyÞ÷ÅnoVeü^!Mn&­K(/ŽÜÿ-qw/Él‘î©ßפN3äô·:t¦«k÷`˜þ(7ŒîBá…È™:]1,N”{,jêÌðúã'¢ñ(ËÄC]ìú4ÞÊÚÇšS;XC˜£E³ Û»i*µR¼ì›l”,!4³áƒtÃYJÍåD¼…~ ðb­P†"½\Õ!’QÎÑßõã±Å_ß‚à_Šš4¤¹™V¿÷@% ïe·¼0Ф!€µ”sÿ†”ö.ºóÖ§AhÚ­É’Ý\ƒò#„€dý‡l¯6£2xåcÝ$¦bdM±Ä¬/Á×]–v{0¿pÁìïÆÔ~´ ÿz Îà»bHÂLP<Ÿöl«v^V®¾>€T¤„x¨å¦ðm#FfBó8å/3µÃ{0NÆu¦ Ñ. ½tñ¹ªwIÇ[¸æ‡Î5<¶ç—àV$2žó&L`P’`0Lx^qÍàš+Ÿî.È€(`ñ4ÓúÛV ¨× »òÜM¨I¢³¹O¿èô,E i,ôÞp¦‘_ùkIÍ÷BÇ^Ñ,0, ¤ƒ–¯aïç¬9ºLw}T–*j %™žž×Í]ÇWP§[Ûc’#ý›ì€Ü”æÖR}“âƒÐ¦ñ ÈpÍLz—ê[áå´<¥*t·×}ÛQÓ–V0ŠŽw:»‰ó¥îú¥]þ³ÓHòíƒHì›+¸‘È%Ž>T‰Ñ›P†wËhLN¶B­†ÒîÌ—±Àe8À…é‰ùšÈH#ý˜÷ñ°ªL3·€I²À{¡_™üŒR¡¬‚!’<øÌ6έ3„5ˆ†ÖØ@v_,«#}~†›ϨX䟜ƒ¡-QÅÖÐCÇïôò£Œ/e–ßo¤NGq¼²—Àf\,2[ž*¸,“ÆQ®»P£Ü»JH–K¦¼ °Í¶M‰ û¥¢kaȺ§ÌzP—&ì+[ó’áýÖè9`)--·íK‘ó$+Aö’¿x%Cñ)ACU¤]|¿Ž˜Z=O‚Ò¥ÓŽ£ÝŸç.º¾SølG 䲸*”Ieët¸ËzóVgÊv Çx·rë™(å_ùƒBf:ùôÇW§ ÌŒîßÑ€¶A4ð¯s¿ÔŠ×ÂD°â "_ûôàA¯âò¬ù5lˆíÏmZ¨‹’ô®MÐûöàës:ˆÑ_€WuÉ»–•þPhew ´3ÿš rO9ôLlw÷ÓÃk> ¢\É6ºD¦¬o’ãIðYˆ9š_ó ò1ÄÐ??“'‹{ÜOåCk»åƒÂq1êÈ+>œ´cÄEQk3ÅÔ†"frwßú”å\Ѹ‹Öv]6ݷК'5Û bÊVÄëâ1Ë ó¾³­™XùœÉ>äMà©*+®…x6¯h¼J›¤qÿ„*1Ì(|ÄÕ›õ?|¢Ôî†ïMýÁ,Ês¾q¤fûeÔ•ÑÔæŸA×ÅÝœ1vkå4¸Â !Ï·xöpvÓ&ž†é]äh=±±3YÏ(Øx«ÙcCû2¿5õ+V£‹sdN°&Hú_ráw 8Äl‹nœì¼‹ %s1„ –Q:{䎅”O`a} L÷·yÿ)aã[åÙµÎ(Z!¤¯h°•ÙGT½ú¸öˆ…çb͆/ ¶–Rwò,1=4¢¯”—Ýî³8F´‡Þ5΂¤^ÐI÷‰'›p›(²;˜b•OOæSÀl}¾éâÓ˜Ò~lÕFà'¥¥MOf°ïÅeß<º:€@Iý ó8»ÝÁ9ézíS±ÿצ^ỳ·Âï½Z¥9»¢¢Ï|X”Õùˆ|¶X[žˆˆ¨ÛSò5éü«V™(å62ê´Kt§ƒ‚Ѷ’ú€ödÂ#šçþH…$^tQPà=€ÿí‚ôGmJÞ,RÎÕ›âߌþ¡yMgû9W޲uàk*uª£uF YÎô´ªÅmÕ0WFÂ^µ©¶ÓèÈ„ ï l³bõMôø¶t¹Pjñâ Þ˜ˆ*i=7×âÊA$ãT¸ÇÒùð€¯ ¾ùv^öÕÛZ¼H,M,YûCÙŠë«î¶–’ö9pú†-§¥¶´7 [ €0",ݯB,Ä}˜Ë8’àaÌçXžS…$¯Tmw]ýž«è-‡n° …¯ÜEXzÕñíW`tÉfV¹çÀLK@ÒÓa:¼X§¦ûâ—lß$­¡ÔüE.qòàÇ5èÀÌT"äv}¹/Þôßd"!×,?‘òA#µéäþ&}Ÿ¦DþÿËX0>²§‰C^òÀŠ´ñ¬¨Ĩƒ§Šûÿ‚˜ßéô÷í „¶’B¨qíIŸ4ÒÄ)‘“÷NêEi2#–Jö¯ðΘí•ÎìlBIíÈ«öêÏŽáaÝ?n.dýùÈMoÏ—Ûýšêh þÛ5uZÓ³gËšÕ¤ž=»tüAï1 x}j΃DúÔßã“•')«7§þLv¸_hâ…C‹´ƒw3ºíi•Ô}]%ö¬ãÔ[ûz6î!‡91ëç*vN¡‰UD4îÞ"kv¢1Hx7œ²Ð·u¦²õW´¦ià'éøã0+'ˆþwà-fcó.š¥Üt ï×™lIõnFã™MqG¾œï††7N&ÀÐr_Õ9} ”Ø'…SVÒâŒFŠø‰ÂÌ&G‚y2°› %ꚃr]ÃJ$Ѱ³]W‰¦«æÙñ–Á®×püÜàðSY#%7ð( «Y’Q¯ éFéú3ÛJy~zl7ÓQû<¢.e2!ÉUÐjS;ŒR53A15>ó‚(Kꎭò›ûkI–êì=ƒ¥…¤¹³•¨ØUˆÌž'åˆå›2´L Ó¹±gˆ^w)'š¼Î­@ÐÓ!ónËÉ‚ï»B¿±í-›¸˜ù^<½§;¥Ò[œ¶~ï¤#2ÄUÔm¬)†ó¦ÑØŒìä*"Ûh{J&>‰ˆŠmkB~X]×ìKi¼‡8‚Û‡,¡,Å’üéæG&…Àýhçü^o`5ËSoþÞ%×_g¥Zìv¤ýš¹]vI‹Q;6©AO±vø¼ëºR‰Ä‹¹Ãeå–·zÎAEçp«Ï²ª¨s`øf±Ýà·N·»•u™{|%y{\/€¤ß;Œ!½êNùJvû—÷ Bé|eŽ`’̬+tF̬ü(ÓN~®¥>â»!ÐÍê9~¨¬ßö'|±Kþõ!þ°>†i0#ðÓ£Á¯C›ÞRàÜÃÚI(+gé?Π±m¶I~‰`vspVÍWçW2ŽâRÁÓijÎÅj»ú­žƒšü`!¥Dð]“˜üÅ•wç¢5VjoEå' ÷“P+L°ücÞh–‹{à‚úäFAÍL4œxؽ5Z9–±z«3ˆTݬ· …ï‘—†qÀãBUEˆË²i‘Í‘ÂÞ_[çˆÌµ2üLíyÝÕ×r#ÎÇâŽD4—+“§ËBl¼R®úOî+G•s‡HнªåÈ"–ñ¢/šSxÆ^$3ð ‰ÿß‚üà¶ÓWV@DmZ<ªp€;Ú ZKeo· ګ鄸6Ì ì¨¡Óã¥Àm ¬N¾n 1 G¼M!‰;’£ˆ.I|ï|ä‚(>>gæbVq>Ÿ‡oÎtÉZ$ËøT;|¥ä+¶iÈo Ô/Ò(ÛƒÞ¦–dHi¡g8­&¶Á“%ס¤yïðËî2w%KïGDþÔú²òö­´IS.ýõÈÀ&IBn, DÇžçqE·J€Æ6K¡ɯm£€Eöi¶XF0ueï“„ÇñI “Z1"@(×ì[x˜}úØHéF €#$ÇìÔOÎ_³+ª_X‘j®•­LÙgÀÅ€†àõ…o væðøgVÓ‰MÖAˆ@ñæºéÿç‰!X]+ Êú¤Ê±Âö²Ìßn|a¶)½öáÊ¦È ÷ú^BK;+vëÎWß®AûIøwÉmyBÉíçÎH Y€¼þ¼À·(Uü貫E­Æå°ëGÙ¨ƒù/ãsÙeMve1»ìD‡=îcu©'y-¬³ó+½Øp l™=­Ê'=m<ö©T±%.â}‚ÑfaïߎClœ,¬[àñà™nsº¢yÀW¡ÃÑL¢Ÿ>û±Æ‰i¸¸ô]h-ã~<¿ü¡EñÄ‘^~Ô6‹ÀÑ⦒9cóXÀø¥ï@á–ÇÍ$£¹ž¦"û¥0ó7ŸmŸ_=·Q¾«[º…B·Ç”…£Íèš°ËøR&Q@ŸjFñ° žÄ‡^“51¹ü ¢yò^¨ß£;ºe}ki—ÍT–—¡ Whñ‘°z¤0nÙ q—¬ì4LYbú‘§äõ@,ÆkÚ(¯\–ÛzŒ”B%´q€a"‚EÔÛŸk–Ï[îÿráòXÓC~¯£ã¨ð\ñ±]ÍvL¦ÔªìÙEŒ¼ŠæÛ.±ZS @N?ÀŽšµãœàêcî(håðÎ}•%ÞÝ u¯dÝÏ«›ˆu¶‚Ð_9—çD!+ùýþ‡¶W‹âÅ“-¾*«g'‚´Œt+R•‡†/P óYEPôð“aª‚†lMžá Í€ŒZyú°;?+‘¨ÿ¢$i$;”P‹»j‚Féuš’ìÿ¬sÌÛ-_/ á zy.?TîÎç¸A"É,dzýG¹r­"~Ñwéžc²¾´è  ž´÷í¬Œ¹ ÚŒy&-WšSq]|Øã÷\bZík—":°ãVæCµlÓͨQÝü^¯üáß|žš øNÛ§žÈá..~Ç+4+è|_•¿Þã×ðÎy+âÓ°Vœ„õ¼ÍæÐ`râ¯u‚›ná>à·0Û<—‡ &ܘ•$¯V¤Y៤ª\ê ØÿP:2(†­Qhû^?’λ÷УöF¥ÍØÇ¼UèΉ(c늄{CGe  ÃMQŒoÅ<ml“Á¤  ööÍ!u ùÖúìÛú%D.F{ÐÒòMB¿ñ¯}ÐÇßÕ/V~Ks¡A‘ÈӘЎ­ËÀaÆC%ÉU¦›h5½Hn)ƒûø¿/Ý êßýË@">”ˆÑ,Ê©¹…¹ö¹þ€×cYuS¼—pŽ$AM,ÜéÌ[ç~!`oýðÝ® g>‹©QËËkD“àã×iü%³ÁÙQXæ@€þ%Û•Ï’©»05W^¸÷Ãb§j wCªŠ\7á^‡[Ò¢E¾ß4n¢.ãH!GßAid^;¨±ö'T Ûœüf $>>6Ž%ÇÊ4â$×µÒżR„ä5ÛýjDŒâ 0Úújþ¥‰ í‹¿‚á€u(Æi§%”—ˆAì_˜çå²É˜¾íÝŠ’˜è‚ƒïS$jI/²æ²ÇóWÌpå¸îæ“}?Ú.v@Yr0í«‡ç8 ¥ÔC.-ëÃÞhOÔAÇÓ%µ‰ÒákË– Íñj+Ÿsˆæ® Í-+AêÙPÊÅ/×LÑ¥ÀÓ¾Ä]õæq p´s8!¾­âH„1qMg2 ™PNJ|¦ÔB<~kìÒ¼1Zä0ë ¡RæH0ZVð81»?Óuì’›Öe”7|2-ÜÚœÝÄPS˜}´°æC™Æ¬j(~lÓO"뽤©¾æ1®]w0¬¶{ˆt ¤ëJå˜*æNð'5ˆb풮²/"ÝÕ…8h9Ï[Ïþ/Ná[LU}]ÉœRŒ¨û KRÞ,lZਣP3mÂæìo ø’â¯Ë¹O½Iݾ® ±Î0íÍ̲}Ê´ÊF%/T­žF\éC (áÉo¿´Ÿ±/W9Jþ}“ëïäÌ·y½½rŠ“èÿ™-àÂ’› WÞÙViÁ S¤g^u`"žVåZ“Vád»„C¾"\ Ö± §ë9È{âß½’ŸVSbÚ<~Êðt]b0ƒ& |*e—w”žãï‘òŒaîuq€3‰Μ¨O"~÷ëNx`ßå‘¡( ‘v^¿ô\ :HÀÃ¥:&]Ãgœú»Í^k“‘|phD¼ýNbN®uýoŒƒ²~ø»-¨¶¨Ô‹ÁÖœ'[ÓâÕò¶ƒò©ÑûQìw}AïPš6–ijr]άkÃ:¥=ôØ•ùÑÂRk•B¸B;?ÒãÝï-rªR_éçÐã‘…NI/EÆ3…]{"«§ÛòX` xA·×nne1ÇóY¼eÿg¨ëÁ&¥Ò“Ab• Ä0‘kv¾ ÊHx÷œ~-脨YjADqÏ‘3¢!©y/H'yƒ¡B(Õݼ›Æ?p޼ÙÖßy²% {ͧà@уÂxn~s4y§:0µ5nv*dÆÕQ7n¹¿~Ôr~þü¾"UùT0îí"¡UéjmdCÊVàÞøü{?(-’ëj@3YŽ €JˆŽ@ŸÐ˜ê³ïá›VGÔS`™¿9,baåmh¨’â£æ—?iªÊK›TËv ¯97JÁU´vâù᣸R<¡¾™‘¾LÎ1/–í£¢É¤nf|6—{š 1ô ^¶ÆR fœ pYxé9ãC9l¼>Œòã".)C Œ ½ÇYByv ¡\ËY”Ú3‚˜Íš÷ÎÎé>nl™ómÙ`bã£Ã}‡î/aE å#Üš u}>AÎôMwìT6^ŠJÎÞî?E™€Q»y’õ óÁ„ež¶ò™GLTë7…¤Üþëôà0§6-p¤DDNíûwÅÍ7õh\yGµ OÛÎjUVß…kÐRàX?a°—=ÿa­V¥:Ç’éÇýJSl‚ñi³…ƒ›:ëz,ªÐWŠ$û>ZA;ŠùT{ºý«ÎPáûxåj%lPûE6ˆªÕ.u¨MCÞ¤ìä´Ž£%$å_$g ´Dîl,™ÖÛ¯zžƒ‡ì/{)âý&®¡’Ï­àC<3-…ÞÖDcÚôwIØbsÏ¢Éŧ&^6ó=PÔIš·ÇÓì@„’œ© DtÝÅN¨Ñ¿€?oÜ~†%§ŽØU{Ë@åb©9@ÉgŸ:=šËpaëôGyLÙ ð UÉ÷#d.o °n¤‹JÑ>QÀÐ+¶Ñ´ð=Vy¿7R’ÖJ.Íd'Ê 8º _o„»Hc–’ƒ·hð8à¯(تù³¢ôC…7è}æéšüx!ko80FrV‰»‘D kcið¬I©¢«!Ø1¿k[j\žØ¾‚.»áȾƒóÃÐÝ9ªŒ¿EÓH mÑ¥žAÑ}èe"Wš¹õk¢9ƒóõ¾Æq[ªÝ¶¦±Ï¥Âh³È®=¶ÓëÝYãÙÝ °·h•ÛIñÅý º‹ò‰Pe9·#²$“ %—Ø„‘E á…þ@*·ñ)jÔUÇhYuKœÒ&1¢ˆªêi•Ë! Ù°µ2§ô:yú! J A Š0ÕÒÂÞ’Áp¾¦ž¶a>T†Á†:Üì@î+,²‘ø!Ë5³mè±ÞÐJïÖ€·IY;Ì7g­±¹è¬A5JDxøD‘¦?Ê’3D;´ PSw¾Ž0 £ ¸G=ŽÌ=‚€ðöÞ/¦äGéúvº6` MÎ`3–IeO3S·«ãïy±º/d¼þ%÷?çåØAŒ÷¿gÇó Bò0?ÓÝV´™êC—7Ê8œ-FŠ}üà"ª‚¢±d–w>ŸüÀfìJµÊñÐrêJRG¦¾:ý EØyƒù€ÀÚŒ<.x‚¤ê77šñPW¶ƒZ¼,øÉñZð³6?7j·ýþá\×¶„{NÄüŽÍc6*]ÝI&tØb9¦+DZ¨ª`Z#ÿ‡íÅlfX]rw¶¼ayy`fÄÏ:„‹’·¥6ó&ˆnиøä·Ã\ß!Ëwn’»[¿xRÓ™†ü¥1çcH”ï°r$–œ¥¾c?5±± Uë›ø½8å`ArQ7Bž^Se¢?Çd´Ôy$Ïâ¢<°wgCû›B¸( |«7ƒ6ÅaªcË¡`¼C壠>ÏéVcúM†7ì<&­]«¦p.ÍiØ@”U¸ËX‚¤Xú ¨‰ˆùI“TÜÊ%Ú`;j·ÖkßæpÜŸÜ„kªÛsÌiÄ_‡OØ„ÿáz‚ßýŽ äWkÖ><üÒÁ9©ž¨Ÿ‰ƒ9Zê¹_Cr E­ŠëÓ7f—ò ¾\O¢—Zkè¡ !¦u+=üà ÁÍ `Å9þŸuÎìq@ƒc|®?TQ9KNv¦ö〃5%V”ÝÜðg òÙ̲1払ˆG­Ì)ξ˸pùhKù:t³gwa×ï!4¤uŒK…qkôJ N2›Âx6ÄûjÖIï¢éæb¾ª9ÏòáRN&¸šmVì¢B×€ªéN÷|aj;aÿ¤ùŸ›Wí±oÍÇÆ‰Çuµºq¤!‹üÔ6×– U1äzÒ1'Lfâ“]y'\¾¢¼ó,¨«Uåð0ÖA<"¯«E¿^³”àAW3þ~û„õF¨[åÄJ¡‚bPOûk¨Ø†Gv<1Ç~¼ÆéBªG›Ìú6WÒw¿°ö¡K=a;¦ü“‹Bôƒ q#K€ÈX$Þ8Çì.)Å)ÙRÑ!¤ȼĦ^¦! ø3«©ìf(¡¼Xá€iF+-T“†¤šÓºŠ;é¡õ1A‹Ç ýæ¨í‡6)á••U‘˜Kr|¢s×t^=ÛïÛ´©5\Ú²ÏÞ*€ó6¼C[-ÏAüŒUˆ‰|5O~×Rs1ïf?I§A±bÑÝŠêqîÎ ˆ+âÞw7J:ö¤éºÛÀ@já¦O¶Åj 7Yæ!¥ŠÙr„Bø©¢â"RâYòˆT÷ì‰@DhŠ(™\èÇùÂ×l02Q/â¶ÿï^ã·2÷¡Zâøã^‰z0Ò~owšU&¸«"Ôl†\)@›R¯Õ¯äw/h4·ß (‘ÒÅ^ª¢b Çäg´p²E# ÆnÓÖÖ]Ñ ŽDé\~Ï• ß·1Hxa“[%œæ6w—´È»*Cû#sVêŠÜ]+ì ò×¢>ky2onÚMƒP¨:7`rÙÄv¶¿;ë ȬèNº¥—“ æ #BëQ óX'þ"°”-[܃xvìæ}a Ð{fç×»Kü¸‰ZÕ}J%zÅïÆìc&ÅH¦¼pêÈPýlzAOØ‚;¬üÇG^2ë"|ÊFV”2u áHõ^k´ £À’Œ«DäÅ'ð@7ÞÐÅq8šji¿\ñ ‘ i ¯‡W·ÂÒ,îýCË¡¹s>* 3Sm„º<ºÔ‡U#Ù•ºÂ)'—½g‹ ùìjµ4Jµç@¬—Í z7Ÿ‰ : ^š=m«¾ÕÀ=Xz"@BrúšBòóË¿¸5 ÁÐVöþtìï p¥–yÞb²sYNf1ôÑ£GG wzt(7ÈOæf BΞ?wnc›þ¶} Óû]úL1‹Â:"qòçxHÓ' ,ÞÑÛaP>4íáâl¢¶ÈPÝxç—NÙ¸u H4ê:߇Âë}ÑSø|ËÅ+ U°‚ç!Ìdüù"R]ܦ¸†ïø®´¹6"KÂá! ¼Ýa*qFûâ N®÷0í !6¼¹¶EÄÓ·ô ;Åßbxbí;¼ÀwõÆbàq¬û}å½7Pï7þƒfkT€*Ñ¥gt»ñ\ÔT‚ª;)’…æýµXr“···¯ÜÀ6üõ‚b‰0_Bb„­²°‚(n¥ðÛZiMAúÅý)‰«ü²a#)´® GF²zõ*7QdÅ/©µN€€ŒrϺ÷$¢¥šÚ*V~a2%UHXNJ l4r@øÏ¸ªy®+9b'ö#áí¤®¾vª£¼’|I¨WßÞnÔ½õ·~'¼Ö²K þƒS©âýu)¤K'ïG7y!cPA»«1ŽŽž°Fá¦P¶¦É"‘Rål({„Ùî¨:ùõ ”ÿ,[©ê>éB3`rå±RMw>dcö®Ét¿áÒ„aBÐü~…´¡å½‚ ~f¸dI†ón3~NËw ø¸½·ŸßE9ü¬õ¢’¤Y^šoµó~ÇA‰1ŒnËéšš!ÄOÚŒ @ðˆUüaMèº_~®òÞlºî‘ÿàÆoÈÊ-ÒÁVk|„•Kz#çp`Ø/”P­ÙóÉÆ f•—:Þ³eÌ„GJRÎI½žçzºÁZ½¢“äM¡‰½Ö†cÞÀ²Mˆr}ØÏÊÜ—‡ /àUHçxI z&Ò? `ôNjúw•ì醤8dæO¥›Ü™/ÔS¾CŽRñƒ6³!†ºB9âÁ¹¸êšÜ5‡Ç+.(ßvlò³ÅˆÐZÁê *ç¹äs ‡ä ’ ‚LNiÞYô‚œ¯ëAäæc†^«©ðÚrÆvob7wØ’q7!3ÒED_¼²” —È“ÚãFœÙ)€ˆ·œG+Ou9+ðäŠrmo`‹ê´¿õl¢ìlæ· ¥íÐI—¯e ²ñíŠ8ÁŠê9™­ßŸ&à‰išî(¨:ó/dê‘"$ŠÄkÅÔŸÛ0‘8À°àz ÊGZI *¦y  ˜=m­Ö`k!ã¬dÕ84#¶{6Q<€²/ޝøD`ò~Ä Ûž¸kƒˆZÐñ0F4W6÷77¯9§0`]CšK²‡óÖKu=ÓÙSæÍZñJx¬(Â>4M¿Ñ—^ÅLÁ×!!^¸,4‹¨ÊÿËuÁ¯%ƒÂŽðRµ“PMòa{¼~äFg’—ÝU£H}0BÕ*w¨ÜŠŠÑãã/ t8à– !þ´'**ÿâ£jfqüZ®q@ê~‡~˜Kï1nHP#—ÒÉZåª9˜IE›°¾ù‘aaßÖ åiµÆB©ïÁâA)Y°O-@Àû«¥´+¾bLyz—‡QŒ4ÔEl®pU1–Ý h—“PQ=â߉§Ðl1¢ý—&ŸCÔyÉ«ë—F¬ŽÿìåÓ¯„¡Î8ð”$o Öz@|ÄœvBÚAYædúNœ¹Ôk &3Õù寽í'¼ûQYc^ÜÛ)žQÿ?¡ .Êâü2Â.ÂMù`O‡º¤ †KJãiuè›Èçvª¡IÎAŸëY.دBÆV¾¤×Åþµ¹Åît¹ €øÑ/ЛÉÂ;%­¯e_ 7Á`4p©'1gç¦èCI¾øzãOz䯡#›ž7*ÒJ‰¦)òL'¤óL?ׇ~[ë‰xù39'É”ßK‘“n(>yŒa … 7Ä3¾â¾O»Q~Ç]ñÑý¸§è†Ë´PeàOR½Ü &‘#9;:Ö=(@µ!·ç©X"”Ö&Þ„ƒjú²{[/ø‚Á¶Ë­©ü/Cë—~5Á¿˜cç)4ã´¦>kù’Ø?‡éf +«ÇRh/}gg–Š©Ý‡¿µ¸¢;'.M9Ï=T-îÊ€].Ã~íóIIÖºÐÙ:?¡Wk%O 5«t$Øëêý±CZn/UPÞ¤Oƒ# z2õùE˱i› 0êØ•WeîmÚE“õ áIÓȸ;¬+dÓK$=‚—¬âñ²ÈñÙË͹„Ë*‰!‡>GÍͺ‰ç2ã²›×Õ y·Z:…ón¶0#swb6ŠJÀw[¥‘Ø'ãÀ驾g"Uëõ$Ó—B"w)Dt;1M“‡¡p6ó¡€®N¼nAÚ̦êªÀHÂKÄz¸iì74(…€˜ÀÔnÂè)ô½¥ïêM|ÌŽ„ËË3aÚÝjœ|=xêÉpînŒ¾©Ñ\+<_ù'V²Å ïŸPÑgzy|ƒ{«4´m3Ï9ZBŠ ¤ƒxòÓ_QÛ¥ÌËçw“"6®UQ[ܹ'W@$Ô¥Úª´¬ØC;<Äí¿¸ôVÔÙ3Ï‘Aœ¯(çw 3©†k;¿@ãÝhN×tד+¹~»sd!b9jEåk;–£ð›cö¥ftÔ=Šb­Ë¡Ùüwºj‡’Ü¿%8–Bôž”£œü‹I|Ž[uP*u‹m§ôér ¿BÏè@{ÛUF7guô yáÔ<¡á04_ËÄ:; ÿQhP¨bˆOt‘×s™ÑcÛ¹lá’Ÿ)?pÝR€TÏ?û?0Hë%g£xqhHÔIçòVtÞ£AÉÄ^†ÄæÞñ¬R§Fc@å™B”¨1Ä­ÊÝ×´â®Rö]Üeò¤- ¬Ñ+2ñ?RÔ Ž¿â a[£Ó©7ýÄŒ•äÐJ?ñ:šÔܰnùkSîxÊC$“ñ:Ÿ½b-òôMèn´ ó ʱ(ê 5ØG%_^w¶°+6$cÎÌEÏÝÌDÑ‚Æ:„tB(Õ™DJÝùŒíÃ4>».üØ—ÌÏ[¿Þv«Õßâfï6\öï @&÷®Ü°¦§Eò/XbžÙâo·ßqHÚ{·äÄ­p¹ %–þ“Æ5ª~2ÅË)¶%§,0.™4££qÂ¥½å\†OÓ-êÿOÏutL´‰”‡ü•e°E£ª”n——1AŸœ4õküUÌe›4ŸÁ­h4ApÐXWèý05ŒÎYy…:$²GWôaIsê»Ü?™ÑthÐÐ8Ƨ^lc”Á:¥ˆâé:Q5-O‚Ob‚«ö èUÿ=_W 2üZ¶£$9>ƒEß|tê–H‚*1Òzñ*‹s§Òt3ƒ_ýkkªùIª¯ƒ"UÀ4”h’ Ê`À}LøxKaöWÖ©¤ ŸÛŠCÕ/ºY®k¨EÎËê ­ÐX›í=Þ;´I—òí­£ˆÖmÑDJ~À¸`7n`nÌ?¹ñ QÑŸ~2ml¦õöJƒhtvå7¼ aéW©êÊŽÕ$­ûê6}°OŒ56 úèHuÿ‹ÇŒÑnâŒà}&ÁÓµk×÷‹´ß:ûä+`Cãè(žƒžáózEÖÕª© !Îi6 çn?ƒRgÃÕ‘¶šÀŒà×—aÒWá dñþY±¼‚ÎÓ²ßVTK:Op¾Ÿ ¢ÁÁê6‘™IŒm°7Ï/½:»Ç¤<Ž ýDhßì|ü#lÑcpr=_,B™b£Õ:BÔ$ÊTÕºwDÎ…ªRѶr¯áÍBŠŸÓ7H¿£÷xæîkgGmª¬>‡CgIúÇ&šv&Ù®›´êÚ±¸ö¼ÌdÌ›×ÀÞ«½Л£€Æ TfÓðŠè±E)ø"3=¸$žcKTºÖÉÞ6 öhÃï̈+ ±»þ’Z)Ñ…µØ Ψ•mŒÉ\è»|Và/ßæÐ‰qFÔT˜¯ôÜãGçü­òƒäìÝÕìšÐ h_ä~ÌÇv¦GãFÔ‘õÉižX_Ù»n(ÜŸ•Ê®V¿X/”È1 C_ ebk;YÑÜ‘ Õ]dŒCæÁ²ÉþD|R~¬øPèoX*!9 ¿ø É8sP½VY-2¥3 €2ÆKŒ]çòÝ5ݦ ™Ÿ-‘©cžõZ/L‡/…˜ÓJw× Ô*=Œ{ W­#ƒZ%¤Ë+; •Fñ&e;>À“:B?ãáF<„UL3i»‰=€òQ½°ó ¿‰“£ö4oFSm¼ê ¢ê›(L~ÜkRXÝÇ'ÔFؤ4ÂÂ=Ô‘G‰E¸<@¶Lÿ3¤¤€óS¥œÎ²Àˆ®„¥À\cÃï9NöMj-Ë7…±ÓZž†Oò…n¥r>z—ÓŽ®-6­þ áaSPêH%ßÅ\‰Ç0-/Th‡üÄKmùRf”Á]WM¡ «Ì|9‘ˆÌ¿…›´+òêÓ²FVAÕ8[!ð¹’!"Ú ®5¾VF“{ù×üê ¼Möðëb^v#àrHÁš}öH-²àK¥”vèÕ,›õM`ݹ/«5ç¨+ЏOõýí^¶ÉÓEµÚÈÌêØPè4„yÚ—8¶Æ=RÛ›KpƒÉIÙuÀÇjçu‡´›¢È¨zU©Ï‘¨‘‘½Ô…úóÿ“ø¨]P{01>µÄàû,kÂ%÷6²iE¶r(è»ïcüX«N?®üPÔ)@c!±ÇÉyí<‘åî¶»¹âÙ½Ÿ½·Ù•÷aš-SF›#ÉåŽB¨þšYoƒ?ÙGIóÖ[žh¦5 [wסô>Às€mãMW!2®6[ç ŠjV%0Ð,ôø#E‘>à!$'zfCÓˆ‚eê*š’žã^ (b!·rULò䲲˯ßÞµˆe57[uUðÌN ½›æ=R”e×óÛ–ZKyÇ@À;ê „y…Æ{C$GQ–›ëÿ.>ÒZ¥ !Ü; O{9„dé ,YzQ` Äy–Íòd¶D&U¾/9Ì^]»ze³KK«C9ý Þƒ¼r# VÝ£~®Wx\I“<ÆÏHšaQÈI©¹…ÒºJÊ'Üábû%ûZÁU;Ø——%`iæê)ò††c4˜C(®8Õ{ÎŽÑóõ]½lDHbçÍígZ‰•<×[Ø¡6°D®Ý¿¢ãsÅsØ,ÂÏÖü}zlwè#þn3_ðáé-Aü1ÎWú,w!F\ÉHó{©¿Ã6AÓqÛaþ…Óvà¹"ž7ÂE×V7Rîl?ã²h)„Q7P¡T%=ð©1ÆJùÒŠ ³Ç'-{³m0µ„úÆÜ´9ž Ì3xGÂß"í²ÌñÔˆ_ä¼ÖÌPfIû_‹-\*6åœI ,½ÓCÕlš™BÛœ~a}_X•ïïjººñ’™ÐŒì{H zcESÊé­qÏO’¾îCð¸N™ót€~ƒ@ÜsWãÏí¶… ØzÅ&KNT*ÞΩøZîÎð¥SB)éïÉð‰”cùr癓|œ]|XQc%­øPf© )=êl°õz”Ô«m¢ÆFœðè¾—•éŠAçn¨gh!h,Ð BâÉùN"²É9RAÄCÀ¸0L—½Ã_=Z ½~Ü-Ö xPÕÔ™ÁBý†óõäšH#©Û9´Iј,iªTÐW]ÛnºS\+÷vÕNWÄÕQÅ”Š{õÖÅG?aB,±§YhrÛ¢}³V%Ìññ¥q„XU…RFèïfï÷‹OøíãA3±ªˆÀIo[Y¬Á&_ÄïµÎ9ѳäɧӲÛ,Ùs¶ßeÓÃ¥öl€,}B6µžý:Ÿ†[®æµ {ÔIÔ œ{]íi¥Q·X|=Ñ~Lr^¢ÄRM®âüü˜Õ7nÒ>~EHQEdÄŠ^p6Š!S›¯{ZÃpnဘ´Põ¿ÆçûÀÁ¡c&™ ø9tŠÑ…ª„H¬—bÏ+T#"Fe‡ã2§é4b ±œµRêˆ*éfÚÍŽ‡b¶UÀ0¯l×`­È.Ž[®~^5Ìù½J.ž¨‰@Üöw‘¶$Y¹ØÅM¸¸ z3¢vWweÖÖþî¦Åî÷„lZ£e`x"ÚŠ3:"§ÎGÁ«—ê»s_oíæO“1ÞaHNƒh“áËŽÌÛ8såî-Àc1Oj°a\ ™G`]­1•§GÏ ek¿ýàmË-ìÂ,†SÒãPÒÝÕr$Ò›Ž¬êF_ñc†VÏ0{ë§ÃnqÜ=d¯«Êc‰&fbn°Xw½à@½¢&Þ¥c£¶Øüå€B+d•Kø¥Ô¹¦”rå9Ÿ†ó¦Ë™wéüðƒß¼¿"ü¶a=¶ÍgazX0ë¥4(1 #Ìœ2¢bnõÇ×Ö»ôHóXDÛBà²Íš÷  ©K26šY†‹³´~ñÉ\¡\ÑŠ.N¥ðù†–ëôüÌ5?¨Ft]A›ÎÖÛÅ çîL)t«Í¡ä¶úD?„0o4I¡6>@ä|¼§ C[2¾`èœ&-º-§_§Þ˜¥.4ve`5>ñð•Ž]Š“4-I-xѵzöRÖ%~”dÆkU—üà{ôÝ«–Û~ü2†D²VáÕHHÔÊ?YL”]ø–Z}n0¼liC§ð\¸bS×F>íëýþ¸ù–60?´ c•îœ+ß]#Hƒµi‚\«‰ö˜,®UÎô8á›>˜>™ ÇЃ÷M\"/ ›M%çmqŒÅÒG—ÅqVp-;nÐU´nJå²ôùŽ ”è×·™’S#èø)]Íhžk‡˜5f5ù{HäÇ- Y8Eà:ðædÆîÃݸÛþ ë;sœ¶.ÜNnÎ%äNj6îW‡H¶ÎòžÓnã¨l&g ˜•Þy¬YH(ÂW9ŸLy‹þ†xXܦnÒM_r‰FAJ!‚4„ÃÏóFJ„u‰;aN® )Ÿ^›³O¯Y ›:ûE_dþJ·üÉ.$'Fˆ;0wÝÛÍsJU!ïÓ‹é dDÍÏ•|¥ 9Išæù®ŸÕF.!™qïÈ õ‡ ª(64Ó£ðpUÀÊï ÈJ e à±.ÀÑCäùlYäeKK O’òFB'?Z©bøMÐ7‚ÆÇr‚¼Mƈ[y¦ˆrä^h³w‚w0 åF½bÙ!‰³'·hW¹ðï3Òa ñt`„­uŸ®Ž“šÔð“Yý& «Wˆ5›­§ÃP]釫—˜¼ÊeÔ.R,ŒfB^/ÒÄ‹¸kµAI²²jfÚÉý|pÄ߯ÍTBË@;µDR‹B ‘C;Ð%°zhøxÅ(I..Å³Ìø~oÖ ©à#ßÕìËî•áyvŠWÔæ˜âˆ~ˆ.͓ڡ„v)²”O"¨Ð}‹a²X ©5ë‹#ënKWw‰S?TvB÷fãã럃0$ó÷¾zÄÎU×â\'8{×ê»Ý°‹åò š“ á—8É®óúÚN#Ö÷+BjéÛšù¢hÅU:f˜*Yõm:º‘º$½P ¼ƒ-¸H'FÊÕbà¡ðú_ŒJÔ¢Ø\ÒýðVEú‡SušlbšjOYçÍêõÈ`ÄxÖ¥ŽAš- _þ¾¢ÖŠ!.1Î[¤„Рÿ2¨r ³˜Í!/šŠVÙ¿ßyîXÇ@¿ëÛ’ÞþˆKh´æ.P²ÒÙÃ>^Û/ëãN{×<ò]ÅF$Dü+\·×°º06°ÖÑɯ®‹èuD˜”å :œŠbê{íÿ’B/ÊyvxÔõvÜMØò2 ©‰ZgjŠv÷äÉlÃI£Õa–ëˆ#Ò¢¬¢|Ù —ƒükçSùO÷ëÕêÁܲ¿RAÆNQÊ<¨ÔâÖ@.2;_/b•>î©~Àt¸<öowâd9X ÿd±fßÀoâPBG诸B8C,fŸ_¶M~îsñÔ‚ìÖÔŸsÁÊ×mE³$áWÿ£ï¦H¦¢zT*:eJ œ&:ùLæÉཽPMçbº{j¤½‚<" ¿”ûs‰ÞÌ´Ž5vÛâæjøˆ­ûØÝ0<<Öÿ™^[Ì!û‚p½'Ç`7¨U/[âU4LEn©Á-Â"{‰ð$„óÆY¦>«é™ª0{O©ë¾d¨ó¦FŸ"¶m²¦aGôìF„4å“Iôµ×~ßÅó4/ óXK-¦Öþ„¿“é3ä—4<Ç ÅX'Qœy:¥6ñrµœÈ„’sÕÉòªÿ~€š³ÅëLJ½'IÛ×ÌfœE[ضÇ!E•í[áÔ?SIÇÌAzØ”™O\g£•êQõ¥o®+þÁ ¹ ŸäHðN2N¾Þîòa[Øá‚D~ljy»…^4„<‰ó˹Rƒu 3RHäCQl>îÁ¨ ²v9…Êk),–„íŠóŒÑJ2+‚&DwH—35`Þ j#²3Xm9fßppmQÓ­â¥FÃe§9<®ô}‘ˆ¤°÷œìÎã°Ü5枇0@4Ê$gýwŽE«ä­zzÉÇå¹~H·JŽÓ#"±º¿`ŸO5ælФú?Í~SkÁÐ%uÿ ™ý³AØ÷ΞŽÄ$Œ£å Ã]StB[7(B2šs^I°Ú|DüЬÒ5ñnð±õÎEvì4ÄÐûJÏfV¶*eO:™t‹¢›´W…Ϙmƒ…æMIšYã~Ž´Éªäœø0ÑÈf:Kqà}/ áðÈ@€C@~jn`U›J?‚¤øpt^Q±Æ‹s~yÏ¡]ÖoŒ ˆùŽg¥øø%<@ô’v›‹ÈP/áW8’ñú2¶XJ¶—:e}·Ûd’×`ÛËb&QˆYQ6Ÿ(Á™¥TluBo¬Qq¿ß9(_…ß÷ÒŠrdvË—sd¾pi“9(÷-Þ¥jÎ-¦1Yß&_/KÜ×ûP“ý¨±.—§6•*5¯áôËa½+ƒ¡Žz¦cYFÅeÌY’pȱ#”y*LeÝ £Gg+6.SáÔ©\]€ {º‘VkLÄ:B3Ù‡ËuÍ‘šžnxïGº·ËVlTäÙ Ïo+â¤%zÛ×Q 4üy%–š zHþe§¹3/ÁÁ®zóüIÆ/K§CèˆÏÛ;f|" O€¤žxåõ„k”çýMª5Ï«†K.@£šìά²{uÙÙ‚¬@³èL 0C¶wÈ£ÿ䑉a9òçÈÄ’-&Œ{Þ÷=v¬b ¯îç& ƒóýïH5˜¶eË •o4(çÔ{vôágz‰<æÊÿï\Œ‹·yèt‰ÂgÂù˜Þ ÒŽ¢ÆÁÛ÷-µÕR Þ§ DšBÚiy¯àD?m3 ôµvbÒ®*ceªŠ+nI‡zz—&©*ƒ]z—´žáj”?¶þ¦ˆj™| ¶ôÎ0ªãÚjƒ1ç":“pŠ2¾‘±[•–BÁ–vãÒýJøÿÞ(Yq e91™¸J»³‰Ãâ³ùPª÷î&ð'·ü×7¼aÃ¥Å}jŸ&¹~òíâaÆÜíh®¢¦­Ü<[¦oÊ×fyCr8úno²(dÒž¾¦ÍskšÚÉÕ§¹úUœäü5ü|ŸøIáÚÄê¢Ä°¤B~ÎcOã/°µk—å÷:Ï¢k”‚È} Ì­-…oí±©çŽ î…"âƒ"©ª. öǾ1Q›åô—âHJ4ÑŠëïZù'hµÎ©”dw´  ³àõUlý<tÿw1ŽqEÂTÍ ¼ÉÀ¡¿]N¸F‘¿,h+I¤)ŒX Þc‹€¿z-þ]u»=ˆ;mt8‚”¯@è?…ø=í÷¾›ôm¬;VutâBç+=tÜîenIF÷ ¼Àƒ‹z^L™Êª€ÿ*”cï+ ÷yèÜ< ¡ö£›I pBݸe`oV„k•–Þl„‰ù¥ÉL˰^àÊyj̸ÍGݙڤ ÅädÎÖ)û`ÊèZ1Nv¡Åô–àâÖÌñQÕç§Yfo®ê[Ê8°/¿ï*ÊT0ù«ö˜`ÕÂ(ÓûYýOÔ9 !¹ÂI0¢¹ Œ·¸ìE~^AE3„c „.úŸã!V38°ÁóU¢Ô:Ê´D³+ÆjØ%Õ¥ìYN%êÍÛ9ºµU¦3^)nJç3¼¯[\~³ô`T8‚»ò³×àÈÆÊ«Ï!ðÆtæ’ :îÅ!1Ý’z£{ij‰®ù½>>•ÌÆÖÉ Dh>vk<Óð6Úud F#&ÁFÞ#4eÌ£µõÀ+„pT«‚¡FÕ™øÔ&â ^¯XÝc¡áDå°E…ƹoUo÷…¯Î×üúð‹l¸!]]ìS±„°4ϯû¸¨Ôö-ü¨ÒPÚó:'ÞÒjxÒùÁmΤ¥è=Ë. ’>`l4±^Þ¡;Ûhb•pˆ”ÐÇ»Ñ×Þ:”6z;R XA³¡1ª¯·{¢þ²](pÀLkí†vÍe}Òɲ xš‚ ¡Ü ±4r®c"ÑùápãOÔjÑ,¼Uªhǽfš9öïÙÎkŠubsa"¸s;«+;­^é €¤‰%Pá3ýÚà¶a2ͪÝéb<|§g-vÀÖ1f#RÓ½*†±Od@\¥’DŸÜ /9ߟi J?È!€§(ΚówÔ1Q="аqÓy‡D¦‡…, \ t]>ÕVŒ’zÄTTùW[]"*¥Wï ÔEžuÝ žíÇjô‚ô,éz•(4Ãu¾K!ÿÞ<ÂHàIr:þãRwl½UÕðÛê±OúÍ·Ö7.W(¥.äfŠÞEGà ¢ròg; £'òb‘¦˜AZ%•8á„Ö[ çqÔªO wd§?|ä`W¿·ãI ¿73ü2<´:K»õý#>X·.å"F Ðvâ#©ã1´nˆè9*ºÌ©U2•žï‡ä\½~]ØŸ=Y:j•x”Íu80ʦ¹ŸGUÙ;3 愇pj·ŽÖU`qûÁxæA![7ߟ E›ø2+süwõïTÿR}h7—aî–DÃÌÎp ŸC}û=W2éu´i´±qó¢?™µ*`]C(E—úSÑépÍO‡†w¬½«¨¶‹ u¨;z]‡{_¦æ@ ‹T¢&d“Á°Mrp¸ÙÛz@ò¸š³d]ýïeâWe 3b\Òäø([—öKuŒÞÖW£‹ad¯rÍ:~8¸U<¢t~1,×ÝÐöC \NžÂE+©.LH c»Šdh‘χJõÇäÈ;S“Cb6Žm÷Ûœ ¤%.b]æÛšPˆ!ðçy1b§»>x—7Ra_”´¹nzh©@zîKÊDU,™ú÷bWofksê§Ö_(,é9:2¬ía§ebÜáJKÂ0g–Y±?D<£ƒº“B5¢›’áˆ"×g‹iº0%þ«¼ð%T^—³ïðvñ«Æcäúº;0³¾(ˆþMJzÀK4q1—4Fšd΃rŒ ± )HØ{ÖPhÏìLrOøÏvMÚaïÀ»ëS‹-$oÆYû€øÙл}—þx´ôu8œ¯ÕFd´Ñ ÔMõ¶•bPž"3’J¶öH—'ƒp?1¬ÜK] 2x 6 9 ’òŽÉ#gñcÉy[òÇØDðöMüG5\¼µâ•ã(‚}åòÄf·ìJ”).µf:ôšŸ¸“?ìYìKõÊ”{ìK„O–™‹;³˜6Ú­ãdÀ¤®eÉD· uæK9ÄØ„ð³ΜÕÕ/½äm¾'ˆ– Öö¯C•kuÇçß —̺6#§ÎØŠÊKùð*íÖaíu–rAÆŽït}¥b]Æ—%j“Qÿn‰Ø ëV §X ?Ùó'ôÍ-œƒy+-ìPׄ/+x_AþÞ Õàÿ[¢\ŒÂ| Wâà &}±|CðÍ pÜåa„ ¯B3aªð7~S/Ê4ƒq‰)¡^ESÑÿÄ÷‚à/Å»TøzÞÕ- %t·ðÁ¹}R’‹Ž}{¹‚XÖþ´À›‚Ó´‘΀Œûyüj­®Á%ß°#­¢çU§û$,\t´À†Ï½ú k? ™CŠàä#M §¨o¿$i!éMí±?úœ†ò<´ú|Þr‡k }/ç:…57_zeT\ü\“KºÉ…gñý廂 áÔh™¸ôc\ÖŽ?ÉvÉ%iEøIAi–”ï‚4E­G†ÿ¥R =ã*¯ÏÅ#*,n)ò{pR¹ÐL¡bãC$§ïÙíÇ–)«j’SrÆ ‘~\‹‚“ù>@qTÜT±^›ÉôVcÄ·¶ —$:ˆBn}× ö˜žYÅâ°8áƒ;„°. çpeyâhý1wÚé*¢ÕË>Ø6(¬éÁptë†-(Ÿƒ?׎ÿïÆ‘øo;¬Œ!$ع֫Í,³´LÀþg~Uzç|ÙgNûÖ\ñÓì’'¹4–ÏB«å_õ7õ¨¥ˆ°Ñ¹Nfjþ'çÏ:Ï´ÖEz\k½K{øðí, %äƒôÓ£?X¹&3nè¶2Àkm¥•0O;º² mNP§\È«ûcâW$é£=\jíá»·cþG'ô-ÔŸ\ìýk®÷V?²ïÂzåQ'E'3’¶Úë®3L&ý¦;ÈG·b|@0M3t<§4ˆ™À’唂0³fÞvÏpÆñX’/+d&&¯Í ê´AC [vë›w¬wöO8µÁöhÐw“¿7t' [¤K\4 ä=¾[|öãÄ€²û_<ÓVcrˆªDÛ+謮$mØtZ£E:™k{Ü$/ho¤Œå¿–;¤à%㢼08´ÊÖðû–OZ6gvñöwwßÎYY?gÐsŒwÊi/æ£(Y2¨zT•Ž5ONĤ†l4/ДÇ&ôúƒ«À†/Èœ ñ`G ð7nåT€+¨¼#="Ѽ|⦇‘ÜZ}€õ3ð0÷J §ÛâD^L`’ˆ’zóØ­ ½zhDÐâÊwfkžæÅX^–ð·È•RÅ3X];¯*Opħ‘{¼­ñÒ°3šs,ÆS Çú0¡«õK‚™bUjÀÔe¿7û|™Ñ‘E \¢"$Wèô^žtÕ¹ääñþ¬v:‘‚ê DÛ¬*°­—øeh\Z¤ój ‡™2ñ àæ—¶tcÝVÊ1Áæô…—¾Ò³Ä‹ôÒ}%IcÕ1Á†›MPfÏúû¶„[\3$å»ßbHõI®ãЬê45u‚ã[ðú¥Á&þ²9yO– ±£Œ¸*:Ù•mœÌŽVÁJSqQoΛÎs€lšk¢ž*;L}ó9ãWšÇa.°¤Iö*: vÆ«q5g-ó°Ö5AüM{§sàßoNmÖJ; ëb‘‹4eºû£’ÈÑUq±“ÊSmï ;T¿°(D€¡"õϬ^®>ÖMx¡í1Ú™Ôúƒ9°£i:­æf¡š[vÂÔéU†;T½WÙu„û³·<¢Î™NÞ®¯ŠVò&.­õQëñ•[c),ÆÁöNÁ<‡”ºÖ•$­ôéÌ ˆ<ùL†;R2¬ÃXvöB‘êí2<÷ðM‡¡xgXæûp€zQbpÉxbVö¿!ÚTcµ¨öœã²·~—÷9tã…ç±›ÿ)d¡ªçÆ{hŠ^éëø±Z5Œ†3›®G/³è»'Ñ«T†kp>·æ"p¤ÿœéï^ݸ]ç:t*™¬Ê&…O×î«´¦×í~ŸÔ¾xš‰‡ç˜::.4V­83¸jŠh5¿!œB—›L«×ùüüôpoÿ˜4U©Zô·ã¦±ëgeÛïXN-˶BÁÓÃh‚îƒW" /EítYvgÁx¹ƒq’×õs_¶E¡4ß܉ðhí*cζSiI®:T·»] ˆM"€ýብžµ“ÍÙwô¬!ZcæHtÆzVy—!3‹‰C>ÖÍHÎÍÔØü€Yn8IŸp] ¶Ä)ªÆpjs]Ö¼C GŽr $mFÀmêýÕâÊQ›ßÚƒõc}Å×xb[Þþ(„ë67Î`éRˆoDã9 ªZ C+×ÏÌJbà7®šU&ÈesŒRÇ‹“4ôô:´Ñ!Öo![ãþ¤ÑP² Mœ?ÒI$P\—O®ùV51MlS€v‰·Æ .#ô뤋0ÍG–¯9úg—ábê˜\˜õâ±€`ÓÇ/û>csUÆ94̸2º6 qŸ6zAV‹TUg›ìš³†ðnF„¾Â@ z¸‡YŸØÑQAYš’:iÙë„‚‰bÔÕº=Rwoe²§‘0âBÜ•°*7úÝŠWp[&núfÝüzæ6~޹Œëfíc™Éºò}µ4BŠl‡,2_=¶ŽDÉ¿`rï¤ÌŒ®µ™ŠuØnDÜRbUý«6’j[{tUò”®nœJzbã®l-*E [ȇbQÎ:ˆÅS&#y\¾Öb«æxLQ]‚J;Qx?߬S¡€;F/pǹBá°ÈYÈF%M_ãÄ_€pÍ4ˆk¤âtŸï@dž#‚øŒ{ºåC›'tÎŒ¿2±x~†eΰ  ˆ;ôxMÚÒµ¤Kyÿ¬³V¬ YýJF¸â.6Ú¨X`¤¸‰ü'1/ȼ~@ÞsÛ3fL- ?6µëõ™”°(¬ðÀlYÈ@ÇÒU8Nsp°¹úÀŠÖâªRÓC¥¿˜Zå-õ((KË4Â÷ 'ü{J¦¹ÂÙê÷;ã³î ðáõ:Œ‹‚Äåø†…Ϭ×ÀðK{vyÕÇb5jè”$Xÿ¶Ü§,âà Aa˜˜EŸáÊÛdø-ªêæ ’=TsëóA8nî¦}|(ˆ´]† >Ýц;( ì®ÞýÛ²ÑÉcü]"I*;¸5÷”`PóëÓ•˜*lÕ¤Vz?œçM”Îîéçï88#åßk½,. ¯hGÍ7¡³EäOh؃íP¡MÛ8–ÊéS²&OÄ|‘N’c×ÌPbeˆ)^ÒËV¼Èû1šö¾Òu€÷éO1ã»Èz—ÜmÍÎ4^`êŽÈHý>ÍìÈ(1Ø|cI™Bµ$tJ"O{¸×Œ}Ôçî;ò¶;LÍãv.‡aË#LHù,úûw¤h∌ÿž½pGd¡¸ôMÍ?^Õ{T ’M™\, 3-,v&öz2ó„Æi3k@L©à«T×»À¢™<Ýr\ïÒO mÿ„‡‘Æ£Xý2fã¹é¡ åqÙ9Œ`œˆ,i Æ£X† I«Î.+/e*Í|yV‹ûñÛ2óÔxG¹ìÿ%7±—18Ó‘ÇCƒ ±à.Ý1¬|ÜÂKŸ“ý¯Y\xŠ1þ=¥ß˜Ê±º¦¤NŽðk 3à6jnWV&õSÖ!GΣ"ð™«ìlœí‰P$7 ¨Ý¯‡J~î™y3‹&žgÿk5{YðåºÀÿ†žÜlFß+c¼WyUov<åƒóìÜhÓcômUÇ–v†õŒøÔæ9 äÀÆâ²ƒ7>D^´f~Ë¿ó8¡ŽQ*2X6zªÿb,£…¾i*Ñ‚gg»Uä#p0‚Î(¨*·ÔÙ8Ÿc¼²ú1‘Òº7Œ6*?§ÆañR5;01gÉËgCe’Õã#ó¶éôš“ œËõT”YÐØ5=п³i¶&ÒŠÿ•›t)ëÙ$͇s$M ðT+•…Ú@q›y&óô*ˆK‘ÅØ¥2»›Q@æí£ÀW²³Û ¡ÿ&ú¤€ÿô}ïãÒÉS2;?ß¼ˆP¬“겞VÙì@üd)ò}+³²Û0ètvƒ±&VÚ 1Ÿï Z\‰‰/ÔAl¼ñ4Á\ד[=½®¸O›ÝÆp+~t»±ívë+¾åwÖ2WVÄm8Y—ž–lïΓ5-¢46wuP= {g·ùmJðUÒ#ìöb¡H¶¹HŠjÉ(£‘Aȳ¾oïÀ¿FÒt:3ÜdƒdÆ•}Pó ®×€O[àÊØr˜¼”HÆ]ÑËLÈÙ´s^@΄õ~̘j¦úÑMC¶¨h”›¢ †#_)Îd©*M/—ø‚˜Õ½.Ý`<íƒz¶w[²{鮜u–:¾a}[vvìcD+™Ïøz,éí¥÷Íq¼ðõžÐѶM…EnÉ+1eÆh“lÿŸä¬WuñEG$¤' È")…z¢Ôì_Pk1R‹sŸrÙŠ-¤ÀKxÁýºd²ë5!ðV˜¶Ó±ò;ùH>EÜ÷ wÏÃ"% œNSŸV“1bƒƒ¸ÁˆŒÆ±h³ìÐ}È Ó!%fî1 Ê_d{ ^D½ÿªq¯{=z–Ç©š pž-¹^¼ˆø—ŠI)ò½ÑËŸ¤9]®`Ç •9)&Ú{1 NßNƧ"íëîÓ±Ømó)2k< —Å¢m šËô:>ª}›¥Ç¥”nÀ¡±P_frœaÚ$͘ƒT ãO·æy+²A´c,¤+› ·i§=I‰-*HaXÙÃIA9ðƒÎæ;€ 3§Ë‹ly”ýÎ=ÆN™n¥Î< 'WiÌž¹èh¤ýqß«<ãÜkÍz”‚Èœ€M¹WOÌõ¤¬ô…S9µ=Ì5eÑ3m”`@}0È4 e+ï$Ä'{È-éÚ/ÁÉ!}ldà¼âœþˆV:eL QójšjLn/Ë}GÙ®Á°) å|)Ò¥ùÉšžG r“ÖˆFÛ |-jÿ| OJ,»Dǯ@KºY(¡>ðLo“– žÓ!8û•—Ùµ…ž¶i¤L&4nâÜÜÁŽïãDk2IpX™$ïþn ¬FØä€çˆuwé£ÎÿrÍq‘ÛKnß.Ȗ؇³„´õÎlµ©ŠG»§ù?˜ªZnOÿŽåµß$ßÛS§ Šî Ó÷e³/³WÍ kû©Ð <Ø“r÷^—‘´à„NÖÎ÷•l¬øWKŸÝJ¥Øèýq¥U³ìËYYKk js’p.ŸÌŽWí­¦ ¬r›c· Ú ttFÅz¹&)yK*pB‘Q+ßO~ºE.3š‘•ÛÎ nâýzììæÍ*iþâùÓCâò”BB¬aW)PÏÓÙK8Jb0¡T@ufÝ\5c3’ؼæ$|ôã)xä蹊|qW©3¸<|ƒ±:S8bK¢ÀU8Uë–o²-J·¯~ŠCÑâàÝ/M„¨c qlÎÿL½ú&¬•@_c¨4¬·J²œWí²I8Ú|Ö¨V`ýûìâñ“¸N¸üÄáåiÍŽžmçHþèBÏoÁa›šUÒ…¢™¼¦¯,xÓ®óGÉ.ÀòÙS¾Î84’¹MÅëbFo@úR2+ò/l„Á²²cK¹€ºËZšÚLh&J8ÍÁI•îç…È.‡èDœ×¨;-Ò#8h“N'Ñ®›O~~·ï?~þÀ‰ ¾PË‹Ã8øæÃ€b)0,™îGµUã²Ì_Jè-ÕO-¡ roÙú@œT$;÷aR2üDç@”ÓXχ…©•4½‘¥FßÞD& :x{*qlÙHBÂK"lz=¿êM]Õ0`§°íº8“©—¦Ýäà[} Üq®¸«Ì†£ÑG)GöØ»2tòœ©Mš)ú³¤,&yJG/’×ÖÒÕl ›"hç…6-ðœœ}‡³+†ÃPÞA¥ß_º‰>å+ç»ÖÀþèCQVŸT1Ãd†7‹6ˆ‚^«ÇE»úJŒ¸| ãˆ`Ë)²Y3ªRØòÜÈI®L}sŠSs õrçZŠ€y‡4`Žuæ –°ƒ=âd5¢ˆ˜YdN—Púo§í^¥ÎÓéŽdE} ÐyÜV¹!œ5vŽ"<™6‹ÔÚÔ ŒyAýp1 1k%ÕÉ@~Ý.»t“GkIL*ÕáP+Iuþ³…è×—ÚL±…b}r~0‘@‚ñàP;]»Èid)ŽÙb‘ÔC\F6ÁÿË7ÿ«Å߈}œ¢þ„RŠ4KpXY¶;—-½Åì46Eޥ‹›Ò¡²œñàňúWá=ØÄB\ÖNºøììñ8ë…_œ¢ðË%<ªK"»D2ûEígÝÁ?­K‡³Ö /9ßÈGËî=¾£M&¡äæ&†I22°Þ>>ÃDîL’5Cý“åJJ„}y^ª |éžôØáKYœä-ÿ‚¢,ᜎ‘+ämb“T éX‘ðU—¥VªînF7užÂ>ž?ÈÕ( Ð.‹§m©àeNþ`òäzIðOe&¢àó6ý;ÑU¨£ªgâFn“ëê È€$çñ²$‡£E¡UEK½±éÐB=ÒÂw=#ô‡UíÖÐ,Y)ó&°EñxÚ[{@ÅþŠd*£¸Û“€vÐX»­ê»]û(ÿý E÷u¦è¡ZÊ8>ÂX¨5'ñ“ —oJÕ^9ö¢:xb$€zd S6!{çÅ…(Ö3g¬1{3³iy2F¤%L„Ýb“ι}0UêWHm‰·sªÿüº äæ×üüJ~ÄÜ1„rJoƒ7d)Ù r‘|°D¸/Ê8HÂv+µ±¿½Ûvkú’gwÖ£´Q ¹{«€Ÿ¸¢-•ý¤cß×·Â`M IýD¯%†%Gäݦ"a&¢c÷œgÅK¶»!7  DüÇdýŠJ‡5óî|}#¶•ùË £CÎöë£ih3GMgCž\!¹Óõ¶Rç•Î ’ОNú0.‹ÂßçîyàÜl=ê5õéE+6\òä4Oûd%œãÀ%ô¯ ÷gV~¯zŽS º(W@aAìçµ^øjŒtºxã°à Ö÷-t<ª n0ý^tQ~úâ’§Õc!&‚ñ„i¨MË—·ù2‚¯ŒØuM¯ˆ+9äËì-û3wû.ºöëTV¡®¨ W kv”>˜Ã-€`$kÕÂ'ú£Óƒ/œM Ó{ÁÅi¿ðçHJæQ©¢®K"óÁöÏGN™S¶` ç°…þø«¾‹If³Íá´÷Ü:qšO¿.LÄîð¦úéÇoZý_¢õ³Ì‚ÆŒo²¢Qm#-t^Þ³y¤!Œj èdÈ ,`÷M.F½21Æõ!,ÝlÚÖ™³è¥¡"!™¤ÎSÞ¢ g·S|Û}¦ ù~‘[ú*ã-rOokpÈ›µeyý ŠÌQZ|°¼ÌRÚçȔРƒäëLprE”ܲ‡…\Sˆ³©3<ýè™ååb‘ö$ñd…ŸAþÿ ubú¡4^ùI2jè?kZ2gÒ*&ý g©ç¾VÅóa‰è3G]•13[Úmù^Ek a$€éŠ)˜:L4h”uRÊȽ}™ãñd0RÑ–›9iu‰’rN¾õÏÙ&Kò\‚1‹ÇŒøÜI>×*/_¼1öZÈïï?äÏqàÊçøí±“½qçwq•~L-´·€o-÷ÄŸg5sý¯ƒ¸• Ÿß*å˜CŸ˜ËåÛ Ÿÿ¾Áj °ÓPU©_ýuf'îØŸù[$D •ò3øø”£‹ëÙ’°ß±>ELÝ4 š´æ zÚ5ÛÁÐYqdÜNM ðŠ=ÆãÜOºR”âú¸Ö •MÓ'âÉŸ•ІRǨVF3.‹O4Óå®Ö{ {ðUÃ-ï¹nÁøÖÚ+­“ Øé9*y= YBwÔ}šïÜÇ!ÿøñÔZ‚ÂWkõe$3Òuƒ|ÎçÚú–ô<Õ=¢Í¼ ]¨Ý¡„Úg:Ù$}\·.óF¼û£©î³)!§°F>ú‹GP·P«wEÍ•|xïa Rtî¦ûª6Ó)šðf¾¤:Yñ ¶ödÑZÃÄ=AÝ®¯îGW';yx©†ô{‰…ž1GôF‚h½9ÌJ-T5ÇÖ‚a)e0HfšŠ™®‡l‘‹<Ê_aï›mmlóí¿æŠ°Õ·Çµ3Ñ·/¿Æ¬‰ÃÄ·Fî’ZÓuÎþñ ü_yørìÕ§8˜`uê„u+qÌ]'mQ²ØO”püð1Ó!?íd­:ŒÉ)K\+±áŸÃÒ™”Öm"~å¬ÈzäsîN Ø)â ¸m€-ªJ7€iP~ð²¥áXæéIf¶z/- */ÙÛã>4˜ Õ×ÌNõг Mjê¹’|Ve»Œâ <êÎõrúF-w‘‚›<Žg¼ûJ…KÅÙžöþlŸLÓ]…ï3¨;üVÑ´?>Ûj8ÆÈØ[Úê­Në#µb-d˜È¦G0Rm¬e£v-´XÅ; »ä¿T#¿ï~"‘ƽ,U!a>gç©É%73æ ~ŸT9™†¸ûYbƒ¾&À9%OíâuU3à´Aâ0h‚d›2Jb±ƒ ºrb¥j÷Žû)ù›¡þtƒ4ýñ£ƒ`ðÎLm- ¤íÐh¾õÿ¿Ê©nCv•ew!ÎvòÂ<µo^+̪a…Iä*ðx±1\ Ñ@F¦ÕÌ@q ÒkÆíLÿ‹êZ.ÆÛl‹ë_¡Å:n½_ÒtÕ쨞ž~pVÓS&g¸˜•#.ÝÎuèsuF{Ƨ<£)‘iÏ1íÂð)°ÍàgBÞo'CS݆ÙMαçG|€ËÚd§(²º@XâE¸Æ™^ßÌÌì¯ðp;¨St‰ ޏeÇóÀ#§•{¹ü„-ó@€òw\>œÇœélä6‰°rŽýt& ”Iñw äì^%c Mx)αÈÀÂõ ã3v™0ª98æ¨ÕrP‡F#ŽãþP‚÷eNAåèòšÿ]Ïé8•ˆ!]Q¢ΡWœOÖý"mâœN5–Œ¤2l[vøT /}Ý™¡æþ.¾„2ßn:Ú‚^n Í5Kjëoà¯ÝRͽ2Pý@¤ò¼Ç0éâîÿo/«W¬¹ºgôÒMa*÷É'÷ À/¬•‰Ö<Šê§ÌNuËeµ‡B?Ëô‘%ˆHIðúÞüCp““†Ý’*º¦Æ7¶‡xÇ âÖ+ !ØJ.œù »eYTom/­UÛ³y©¢^GïtáTõÉÜšg}‚ûωԶU±=Ís°áÙÓñP û\úƒ÷LCÄU×kŽ.íÕÎãÀˆôÇgœÈœéÞѶ áÕMða-öX£÷2=Ô;«Ž»uÅ{¸@êc:”œ| ÷µ–;¬R]‘Ëð׫T`~oöÀ—F>W´tH;ia5Uøñz±ªý¢›Öª‚‘wLÐ-¯M(âÆm]äußÜ j;¸ÞWN3–·53t£,¶ÁyžUUÕîÏ—`‚Y9˜Õë^l$’˜îÊ]qí²½×:âxc$_9ûŽ€9Ôº0$%V`H{¥‹®þ¨gàÞþrba·7.H/cIâ>Š|4ãÍâ;¯Hk*ÛøœJåïm{ïw5"NøVºé¤ß¼C§ˆVVó¾Ol³€hLd†QjÇé(qÙ-¥@¼y˜i^L˜b`R-ü[ 7:E“±ý2ÐÂÇÀkûàr£éòÅeY‡:[!Âü¯UÒKÎép‹X œáÙmÖ‚+Ž'(×¢«=Ù,´3 ÊN¤Wù—·Š/¢ÜëQ¿Àj*4:•Y7×§I©¥£]ã0Z(½CøÌﻉ8¹üg¨E/^¼P~\tF×vÛ6žM 1>€U»¥J2 Ùß H¶ÒDÂìâæcjëð‘ÔãA.¸Ú¨¯~ˆå˜ö’5>'ž ²ZñPéú®6 ÄÖQ•~$ êþŸ‚þ»&ê÷ÞaÝÇAí¤8¯« ’hdÉF‰çæf¥‰;µý ’¦" ùýõÁ0ºèr-o†^Ñ9ðŒN—Ý äÆ÷¬‰²†ïðižýš³T½×Ò¨ô‚,à3±ÅÚèºù85¾-×þ¨\•-JuœøŠÛhIYýÇ;Ê_„vK$7as÷´ë;ù…0óŠlØ·‰Å,‹š -îq´|ëTAŒÓ ÍËÛÀÉ’½·°TñT= AVåÙÙ"©_.áÒÒéd®Ôõœ%8rS‰?‚J ¸ñÌJÇÁ¢ó–Ç‚—ó‰\Ê7‡ÍNô‹ùäj€_|Vï‡}ìoÑ·SS¡ E-›Ü!Øb“û~5ˆ%‹3ÕLý¾ú+Ú"6xðN–¾$/Ï’Û›P /Å;\tA*TcJÍ43±(PõÐZëØˆ¼\„ú¾éÌ¢§WE]3Y“ç|.jýþÌN|ŸÜ®·>ÉÅQtcÊ'!¥_®æ]!goeO½õò ïðù­£º`OY+Y£pκU©ïЙnrÝåfî‰2^È)±?Á¢˜fti²9V& Zƒ.˜.žˆ0a”ÎUjƒ®K^[m~:M¥Â%µn[VwŠì¸·Îq_‚EŠñ2äøS6ýÿ¡`kå "#óUQâ?ÖG…nD/‹®K5´.žÛ½Oj¥sÝiìÁÛ(“‡0焆ÒåR`–k tÄ-„ÝÚ–ëm*{7õ½˜hÛ]ýÆîÄåyœ»Ð‰D þA¨fï9ŽÆC÷7™Hçøxƒy\þ^Xšu ½‹¶Ð@“낾Õ즚áù€`ÈkskÕÌÕ‡K5Dón 2ˆÛMEðˆÐ… Ñ&8G3³3ŽgePz÷täX*Y²™SYµ¯ÃÚ6E\RH_âçè@+\«9mþg{Þž|bÛ¯PkwÒä†ð¯ê}ÿEÚÃ(¯û1é8Ë´"¨ŸÎ¤™‰Fjφ'ý:'kÈÆVÒHNLm3&Ïlï; …{ÛÎôáÕóUcóˆaé$éW}:Ä2€îvÙØSáÊ ûšûP‹èœÿ"åºWN{w+D…ÀkÔäÍèVsòø·&·`iIÕ~¯­²ç_ ÊøLmúЫ7¤&Áö_'••‡‚qtÿ„nÎ{‘úñ¤—€?r!úzºè|½ø²:î!ØÑÙHd]Ç+[öµzvñ(ÈÁfÚd!Cö Ÿì[ì3I*IÚ%~1QëX3Ì XI1Q±;¬ýLÚ÷†Ÿ`œW$Õu0l¥3´|é„p™Ø^6°^!üµGgéˆ4YÜ[¹é¿ è¿à€õ5RåšÑÏ ùzƒLج*(½¯DιË…w‘žØ&癣%_3,£*!Ã_€žÁ4Ga;äÙFœ„ˆ\÷Äâ*ï¹í‡Ö¯ØW¿Šÿ©7ª"¡Ç%rl4²ã¯j&bÊOh™xö¬‹Õ¥Æ{8¢Íþe¾öß+ §vBú’ÉYâ¹$>ù¼WÀ'±ÛÁÎJ“úr¸ÓÆdüZBüÙ—ÅsCv—J`ùÐüs±ÑíZ%9ƒÎþÙàìÈ ÞºG4/ócâDFä$xaõ‘Ô¼‘ŸÓœõpü²ÝeÀûïxz0^ÇÕ„%äÒšøý:·´h£ÎU_6Âe¢qÙc&fo5q—äRùÓMÑ ݤ¯·A Âíë]ÚýQQÞ‘Ë‚¤sTšV™™…%†üme†eS¾L”yž…e?h;†á¼›S:¾Õö;^¸åŽHGI{¤ËÜùømJÜ´]c¯_cþÒ¥l|á¢ÔåWݱµóô¿Qz¡qñùî®%m¢°mOFr?Áñ…Ÿ¨ÖÂ|!õwmÂùJX‚TÜ(: â Þ€8W½Í‘9×` \Œû¸†2µ‹LŽ‹ a{¾º´ëJ/ädÓÞ…4j²Gëš±Dõ§þãV‚Ó…‘ž\ØÎŒ¤º‰ûìz ’cn누íŠÃ;ðo¿=÷“†Í©a'|ÞœEC–ÚÖjlžƒª²˜³Z¯z¥hŸTç3™ØW—a¦;K°%hêMPý§gm«¬Â1ï)ýnÔü¼ 7tB‰•¦ÁŠ÷¶:Á¦DDþA'»èÿv€~DAh¢-7WÜ–Ÿß[ž5n¶ }*þ®öóÙßEÈ‹°¸þÑ —¼JvFp…òï=½ù“´u.ösħ²wv¢ÒØèçPÐæ±†-cÊ`ÚLéøúëÍj. ¬õÚ»ÆÖÍÙ¼»$­ëµV×ʯ.{»³Öº 0hûL„ªK™\(Í^q$ð\C¨Ë[\{Nq`¼à˜¤“hyÁX·:v“;Q÷ÓÂ9è<ì@—‡þy{ÂÖx߬Gc¤A»Û·œm­ELý[-!¼M*Jö÷Q3vjï™=%h´|Oj!!ØG$Hºj¼®Ý2l•ˆe‰yÇû3‘OØX\—ù¶°xÒ~)Ì“a¸Ê×êš¾›º¯Ìœ2ûJšäÜÑ @1¨šàCoQž€Êšô7LNT²§…÷iw»³èžÂ+˜•ƒÃ£îkU9,e#g汯k‚]“ÌÕiÈÄÌ~yY”".£Å“Möá[ò è@Œ<âéPXßqw<¦*N|WV $óA-‚Û3Ùà®î)NVK¼ÝÃ6©¢:G’¨ÑÏœw,Ȩ»EÍàf@N™[ †°>µ•Y ûÜê?IAÑìÕ3)¤)¢$ó¹Ò —2«ãåNƒþ™ŒøU¾ òœÎ-Í%¶†µ>à |ûY‚‚ÅàBXgŒ¦&h3ñ B€!ø0òÕñüæOrgÃ݈:Ä\ÓÌ;œƒU6+ŠŸ(WÞW@ÕU¡¨ »È Ť«2¶}¯Ci ›ØimÜŸåôóUñŽkPÒÚÎaMXnÄe¼55 õ¿?HìÓVêüÇ^V†¤«ö_q'ü—÷¡q—ðÊÆ„þ_Dz&‚ŠË(1N3ŽuMkñ¬ÚäÓŠI™Ž–Ãóš@iR]F8½îa±€gߌökþ"1 N¡’›<.|Å6ͦéÊ]QíWÎâ¬hF-ÕeÛy&ƒçhç3ÏòT•dijûÛE‘EðxÞüË÷>?fÞ•,»—ÆèER¹¹º_ô$˜›oz³úõOŹ4Ütü¯­¯ø bQ@¨D5òŽ7þh«³¦ë¤jÀÍñ‘N d76yÊÔºâ©xêmm)Hzn^UyTÒ²B§r:Û˜ÿ¢€~¬SMIrì_ÇGJŸEZ]tØíR§¬›©¼ÉßžuÍçX„lW€¦ˆ´zB Sǰ–'c·uªÔh¥m' *I†×ß9h©¡è!X¼²}ù4r~‰7¤NAG¤ølEI¹È²_…´\,R>tÑ: ŽoEl&fUp(ãÁH,LMrš!¡0üŽ×VË·=xößXs5'ODDœøLhÈ§à’­…ö%R!Ƴ€‰e‡ÉW¾ýÂ8àuŒ9Æ‘¹:~öÁL«ð}x޳ î(®@¥ÖLdàÒtê «ÍCtýn@m•I_|d$Ÿ ã8ÇJÔjÆÊòg^›ûöÑa²ü¤,拺Oëù­ö aÞ#ÉÈŽýL 4äàtñŠüñr?a»ZÞØ+U‚æ+Lu*aîäu²!‚Ðád%¶ÿ<¸˜9ž#^µ$‹&þ×)óXT(ø%oiÖh½ áj¼z£õÌøô½ý•$ëA@öõ“i;t¹@ôf¨ _&EûºÝÍ7Å üÁÏ‘ˆÊ˜¼1§íòÝv÷E”Tù@S3K^›é x|÷3üFà e㱪 À!è<¢éç¿*pdÅÎ~½·þuD‹IY»„=oÏ-ÛÄùOA0øú'óÉ~føONLA±-£rÎ6!Äòz‘;ãk^nšÒš§>ß ÄZæ|mX8Š/ûÙ ¥waØ i6Æ•ôoH°Ê£pRlh­Á[,U‰>ÿÚÉ¿á@7@÷…d,é¸V¡ýPÙYê¬s$:ÊJä àÏ(EBÓ…kŒÔV’iž¥]¸ Š{oüÛ™ ;Vé´zBJs…&€œO¾ ø²ƒ­Ü„óZ"/!…Ÿ–f¹¡î™n§Ä¨ ;¸û 0õ,¡BïN_‰b§Oب;€ï¸NóÌÀmn.#Þ8©š½Ün=儈V§šş”Ò‡ÃH…\$³ÐàÉjbBîDè˜Ú¢Ÿ '°Ü×0r3$-"„e§í9aY•>Ã/ÿÕz¨8¹r>—"{>Ê£Aûá¡\M#c)²C—$®&ò§Ž“B̯¥:ŸóX.µQ,L)¯ýÞGî <0p7+.¨Wƒ—†–s¢üÈp³…/a-¡‡¤y:Õ¸Õ4çòwõ½ÿZ7ªr“‡o¥XóGÑCžû×jòb|‘gÅ}×G˜Ä~X®ž¼»iÈ-×Þé$[ñ_’~K&Bãýj&–›¯€*λ‰4D*3vUôe™ÃàhJ "¤ øûµEéoø¶TÂËEÖÌrFKyâ™P½(¡iç­ñ lË¿•| ¶Ivk`\w=€z°ËÈÃôøÊ÷Öû"”~îEM®Éà_=œ/!•5k?Á•î¼ÜŸgÁs^`£¯¢-ê™õ •ë@@¢é—ȉB¨*ºïÃÉ»R-Ç8ÔÒöȆeè‚mßÑ̦÷ mi õ÷‘'Z¬»•Æ XŒ cˆ •ïSzá–”{±ó7ÔïLˆɆžµÚ ßKV%Y¤ï©¥¶‰º:L¦ýÞd,ÏØ)Ø­c:±&ÐW!c×Ì–±ƒS𮨄/³õ%'X­}ÿzswQWa…¨•‹Ÿâšƒâ[l[;CÇZMæ²¶M‰hYY ³›n¶Ç†±²pNÅÆ™¼JIe{Ff:]ëÜYV’©lÌûf ÒM¤ëèñ‘¾©G:IÍàöªÙž9.jU’ÑÙ·ýb¤ð@Æ ªžä%û –›œÎQiKLˆfêÊjï­i2 p€v_97gf?Û.j>2…ŸòÃj®Ñ¼Ö…|êf–úñí å^#HÀÊá' Û‘PAE¢)I@ 7­¼°$ða ¿`ì½uW\A3B7³„9Úí­‘"ÙÙ›B*°é%¿“(ˆWuJ¨ ˜VÛ¯l²¤þà€«ëÔjÕÓ#q¢W»ýc#IÌì}ê×spì5\ÊúªÆVJ §Vôˆ˜[XF•Ÿ7æ2-qUú‘ƒÐPac<›OÜ\ÈoÒNœWÙ8AÅS\"çòrGÔO1??õ4gt&nül½<“.B(øLÙUÜŒ[¿<ì0>引’ìËer)µùëmà¨xcÄ“vf™Íõ*nSÖI"Þ7Ãdöhc’rÄØúsuÿ«>rT­!™ŸBp¼<½·÷e/y£–˪È75©Ò¤ ^gA¼¨;-éËÔ•úÝÍAË[>7ÄÕùsÊ×z¡Õ¾qâ^ƒ¬E‘&’ͽŽ~égÈ%û«/¨aÜ{8&«lB/X±£`Ûˆ}¬7¥ÀþL¸.®Mq/†ÉókYtžÇø˜®ZƉ´¬•d´/¾M!¦â‰ˆs©4:jœ Í­;ÚM·V½¿–²æ³¡Õ0š 0ê³èhºøýÓÌÁLË꽓8Æxˆ\¸Fúžâ•¿­úB§ÒB¥£Ç!Ô8ÝÉfrEßd‘íü%(}¢ª–À£±À[¢InW8?J`"‰š´ºš¡ƒ^“¨ë €«gµ…r<…³lù¦‘¥<¯Çjb˜0ȹle¼¢‚'ʵ¬”}°öS‹—}|h'ð¬†eÜg›F#\Ë€~Ø1O•ë£ã]ÙMÄSdú…ð»GîÜ‚iVÏÎüHf=r°›Ýõuó¬‹í.g}a|ßm6»äβ èÏdŽ+ò§èå(ÿ.øÕmu…„ u9ÿ’Ÿ“ï«“»c ¸Üo'„šÂŽÍ‚äL§ž :e4ULÖÞ ^’r™ySw»q»pJPàæûÃö@irÈ!µÐß™q"‡cÔCîë—|Ž€„RØ Éölì—) «¿ÄëôP€¯´½·Î¦‚öm‡_Câv­pD„SuIi–é.<š0½ž· 9§ù³ÈΡéX+³p§ôÌ|Ã$œó1R›¦²&¥Õ¤4Äû‰Úof1–˜¦ÑÞÌWº=Çzý â*mÈ–HC¥k°pj«æµçKèþ Xë·—VYš·â=õÞßtë}‚•ú‡“Yc.bl*|àk¥ÿЫÎ.‹?1‰’Ì(7Ò4ß =ææR·”—uó¨-QseÖîaЛ=·&#YàÕäA#ês@oÇ”M?«äaó`ÐKß lªÏW€jøÔ%Ͼ{'QxM_Š ‘ç®Ú46b¹0èέkήNWÝ‘†<¥æ~#¸e´¶˜t_ðŸÁÚîp7~ªHÐÊB>ÅEØãPù¥«vÇsÌdÞ€­´ùnÈÉ"óž¢l ³ŽçÐ=ŽÒJº#²³ÑC0t[ö$®A¡rR]±î«‘q0ÖÚJúþFÍíÒ¬'˜a Ë¶ÑwM•/ÉÖub¨ÛÁÏ÷ûæòv¯ÛuNm™¹ZA)vPC RûFD±CýÀÚMŠSÅ%)àýn~ñ-¿Þå–¤‹ß2>}í>7qh@'­ÿ™}lŽÓ(ÄUÓêjÌ»ÞcÑCªÎA‘L£¯ãì¤=ŠEÇ"d`Ô=}ÚúÉ×}ç¯c´g²¬gI‘a ³ŽœW:߇ÆO îA_&?]Êha?a¯ï ¨5\‡ÀYû‡ª÷ëfâ–¸"I b„Ó–?vßVêüÂcí,»¢Ã«[5ØPÉ—ƒ…ñ]ã•N9få|õV ‹QW§ÂÂDäá8@†Û<&Î ¤Ó)Kó‡XÈÎò¦xË™Ëù“#NuOkåi{ t©ïH/÷ Ž~â]{Â¥à‹Ô€|òE®Øµoöïe§ ·õñ×õ3Õ¾:N»ŠÜ§#ã'´¬zñ4{ÖñÂó3î|ÞGõ ‡FktS7³þÝ8©!¢­•}»&†ÇÆ}¿Ðïì úÕš;‹‰³/ iÙá&‘õUijN˳ƒ™‹’  õõ×e­p'^&;‘³˜¹rå²±‡¹­ÜÇËŸñã)Ãrï!ðî±õ<…nC—øÓÎSÚd¤¾ö”NC’Æ¿…ˆOp&ûÉÅWÛà[‘i•gÔ…Ý Ä´÷afÄü-ËÉ3ÒÓÕGžn†¯èÇ™sÉûÉZŸÚ¯·ŸzóxÝGÑNµX‡™ÿÀR½fS­=ùÀsl²Zø+‡‘gØÒ3P0xÇÿx"•õpù†h<ÌÛ¤ð` ®)–{?U?]ë…{\w&) õÔæjÒ ¥¥:N™œS+™˜º~˜¨ÁÙ%4\ò0”çU&F Ð¯I˜H€}yÅ4 4ØùžwX£¼ÁÃ¸î£ džóf‹ŸtO0I¬õWÊÉ¿#q‰•¥ln«ã”ø¿úW.Tõ¿ž+ð™*´Gyq:È芛¥àÏ™a{e.ù´‹£Íèz»zÉlZ÷@ÑÍR³Õ¦¢r&GªŸÕm@à¯ý÷}%–Öܨ0 æ,ͧw4ºÀ®h~Ð0ÿDKÆŠR+´SŸ|#áÔhÉ_c/mY–©šøPë¤ô¸¤x3êJæþÀ?Ћ¸Žß5¿ÂÁÝÑÅ©JŸÍg…%1 %gY- kJÁ®ÿ-|¶î~s²›džÎ’NŸÏ šþEWqlõ(¯l€E”Ñþßjþywµz‹@ ­‰-:Y(qtñiܳ[×oxG<³ÐßZ¢‚é#:CøÚ‘ˆK5†±ÂͬípÊáf@lµöÃî²8Y)½â¬§L¤Ì9µä^†jŽˆ|Jžµ°õ´€É¦(/P0V»ÃêÇð½1G§˜ÊãÈ€/¶DÂÉÆ±sIø«Q2ü×,þ««6ï]è~G¼·›g˱+ʱ~RE%;|qaR¦G‰Ì'HÍšõ"/ï‰}ªò UÓ‹ŠI-ÀƸ üÎëÛhÞ×;þoto埵º _Ïפ@įåwcÂ5š,ñ~y`Ò‘³ºݪ;F Yh{5÷Œ1ÝR"8TÝGûm§LX;¡(Ÿ7ËäÌÇ¿“¦÷˜í’;nAL!ŒÍ³Â žÏËÆ|Ž{n¦PnIUürdhX¬”gœò(Âá­M„‰ÚÛ²Œ…×âÿcžô6ž 6UŒñäXyKnˤ Ki³¾­VDÒl=¶$›};ÂfP'|/mÚÔpÔ AÓà¨Å,Û§S9ˆG¹G¸«èÄù:s¸*uW:œ 8.]²˜¢iœò àÕº¥]rˆü¢ùÀŒbàå¥ëdÜ‘Æ<&Oh…¸’ᇡát[=I½xUf Œr~SCˆñâŠb0ªpT@R)z@!"óÚgÚa§ê¡†Múý]æzFÙ©¬ä€p÷LX+w½¶Qj³óÈ›ç®,±¤ªa˜LAÏÚÚŒw¿ãc(. \ë¾BáMvX·"¨ $¼5‡åv‰ÑÎØtdëJD z¯Ma+ʤiãô–5®>éWë5}¯Kt¯ ¾„u¯PÒV|ORÿÖu¿Jêäa¾ r° ÔO™xZf%ÂÄ ƒïȤCîq‰ûÆ4VXûo†‰w‹““dȱ#ï*Vìc"ô/¾èãB=½íœàXHxð#L… J`­’¼ìß„îZúyh’ÂvÞ…‘;´V-OI6¨”èÄêõaøãlnàO2C© %ùx5Îw™wcÁˆ­¾lN%ÀÁNœc!‡œÍ5ß¡´²ZÝ€5Á_}à€ñY¨Ålµôo,zІz§Wá òxIé®DAyUÝÛùÝbuÓ.0l¾ò ¬ÆùýæÙ±6Î$Ïååg¢Lâo³1íacŽ(ÇŸóàG÷×&þÆÆbuÛ gyhþ¯fþS5<WÕlÞºî:¯2!ñ—9?"'‘!{Ñ颰G)›¤–‰›àyµàè¹ëÔ"‘h´!½}jyá—mB±HñR·u\ê?ÆÝÀ‡Þ>ñbl‘K.hmõ·óÿªWÀ_¯Ÿ´¨#O ?èÕôí3ë}r–ƒÙ%OUeóÔù6 XÑ“)\Ulì^gpæûÒû­^ªÀÞbô¹»jƒ¼=¢ý2ÇŽôô£oJئk¾·j,avûÚïÕ{¢ªJtýR¿‚ i#, ááèY®<øk¤E³Å p¿¦Õ¥ X¹hئQnôÕ¡å`Ȥ½'šgzµ?:f¤¹úZ–ó˜ƒ<þ¤y¯lˆ»Ð̘1AøŠ&Ó!mŸÙ6Ò·ˆ~€–-ò¡sû6Ûy?lKîù“¹\«¬;ê‘hš’¼+ÄÞmV^Ú`‡ùØ8ëïïõUßÏ\ÖŒµ¹ìw'vÒ/_YêòSa~ûã¶èõrIgC’3?µ3¬ h“„Ê%‹ _zÀJK· ޏ•¡8Ò?#SäÅ#ÖÁV`–=£ôæþ,JÒq1ã­ù­Ü1—DîªD¹Sõ‡õº ŒØ¬F:ðÿÒÓ xË™/B>!¾aˆvuee%±‰fåýÍ]æ.°®‘´'Ñ©l‰œçq.ñ9mÃ<]¯X½Q>ñÐãï”z^ ,'’¬€ª±ßæ«(±w œ j××ãšæ…ž,®»¤ez1>?Ÿ«‚ŽÑjè+ï…1nud%FL¬e”tŒY âMXÖ³NÛzT’°@Y›¼pœ`& ßWF=›â€Ëà¡r…´œAÛìZk4¾ÑJ¹¿à±oRIÉ–´›T°”a¨@2,öê* î°Ï—;¶Ÿå0ßjñ5Í~˜õu5Â5¯Ÿ´cè°(O¸êã`¾›H ¹9èð£' «iŽ‚â1À=—«džà#¨£~¤3À)Pð4Í›|·–&Š8Ï eÆjÏòŠ×ƒµeljkè|_ÊÉ”ƒjüKNúóÑíî,mƒN#ö8Â%Øn- â)ª Çfd]òÎýØýIÑÐ2’~šôÜ%Ò\R?H½&– œƒ€“‚Þ®ÁZ¼C¬‡Ù›%tص°-Ù_û²|»rÙØç’&ÈÿAl¡9[`›$‡ÃÛæ‚&qÈ Q[Sòq/ñðÄ­´¹Ïn¸kà ¦Ót;·(*ì9¨w ÿ¸‘ÍA16´éÒúÓcXB*x-|`뫳¬Ü>\ÍÄÝíÄR¦<± M;–_Óè¦È²\zœÙ[và+ÈYÖËo8u¤›ŒÞý^‚ÔW@7©4gc2-÷ªà³@Ååtư5Ä=ÃÔØ®‹Éd:ˆ¹JCù‰/—‚.ð:U,½ïÅ¿‘°‘)_ÙÏLòõèÈõ‰ü77½hYפN΢ÑA]ñ]ó´¿»´x‰ò<'ä_E'ï‰xQ‘ã½?êÔºQ†ˆ!RÙbHuÕ¨«.>0¨Öåh,Vï­Ú¤RœÓ Ï£ôI«{4JàþFðÀ¸€x‚`€Šµ–¹³Ç¿ÅˆÊ×GO‹BÖm¯ßVB:¨–í (wBþcIÕqû]R\û:±åÒ @}yhÚÁçS4¡ù9hFz‹5” zŸ<<}:iµ§u(‚=ƒ{ƒ Œÿ·o×öö1µž™}ÍøöÜÂQ=°0r¨ÉÀáe~no¦èa‰ìÕù½8IEB¡$…Ï¢÷PЧ8ïÙÅšÞÞk)ȇ‘kswÍ:êö·Éí tr`yö<åYÑVª…Á%·Âx‘mt4è ê}'[Ö-œgãÇmilOJýu~q1¦°¦ùóäü5è_Ós"ïUÉûŠTqP…¦KjåÇRä¹ ôMÆ¢Lòš¸v ¬¤˜AS#’>S‡ÃîœC‰“ÅpšÛó×Gƒ"žwÜ(+ÈN³ó.îBü­PÉOuè2Ÿ¬r}çJ½³òÛ@LQäF„Íð+ƒÕ©˜‹ñë •Wì ¦=J‹%¬-´1‚ƒÍˆu»¢#ä5–mPÆxçÌ+V¶C¿˜@ºÜßžò¯†È„Ë $T:c×sŠ?ßbèôÒCÇTá;¡ÝJI‘D!—Âq±Kk­j¶ÈAuA¥Ë@1 ÷nÅÁÒÊ#µiçKø—’µ¯™Ã‡ó–÷Ü¥ú¸Œ˜uØæmûÑð7€q§L Úx ë}"Jå¨î; >Ât`1ÿ$óy^ÂdY”ŠÜ~Þ±3ìhÃãaàñªÏ z»4bô𢂳&#EšW ;úbÊÜc2§éè=Íz=K/”ËyAF ¤ÜYt(ÌD|mõ½:ôÎÚ$h[ì]Áî°‡eE!eѸla:Σ}œIeM#Nûži­³‚P’ç ¦÷ñ‹Vë1cËDܳ?¦ë±A>Ÿš"cÞ×£%X®×I;_\-—M®v’.¸Ÿ†g`øÒe•µÕËë »ˆ ÝZÛ‰Æ!åÒˆù)FÿöØœ½dôZ¯ƒi “/Lf¦†¼åœOèЛ §O˜Í¸&,¸£†èׯß-È–Gsº[k2ñ5"ó±ÒæÒúãÄt%¿&nÍÕÛ&Dð{»Ð°Ûݯ+HP@qÚWù`’sóæH6ÊÁk§%Ô™*}’|¸êæ¼P.ñä³Ãr|}Ð'äd;jâß·`èÃÅjý%'ƒ­¸OE‰+É¢Î%>¥gÚpÞääÞ6®?t«‡3~†˜šØöƒÌ̆ÇÛ¹$ÔÛ&ÑVv9¹”%£IòÌ®¹’‹£å§úQ|>}Ïìfœôg2˜üMR¶L‚ÛÚSLlµX0L¿s¾{ì%^ퟯiê2êÕ®z ±mEåV“· †Û&¶p0ÁyžŠ™×ëÃ%m¶¥â™ÀŽÁµûþK­”–¶±ºr@¥9•åm¨ÁC"M1OHl#Eª{Œ>ÌBw½Ê+ör‰J¬o­Söo ñ?¸'Jiûq)À­Ý†häe NpݾÕñš¸ ³E¨b3C1æWõÚ<3/e,GÉ3À_pø:2MÕKS—8ý!$}b)ÕÒ¡ì~‹0’?Oú ¨¦²äêïÂHmZÇÂ௳ÔpÐ'Aùc† 5È7ýÖ ,?›¶¯TMï^1PdŒj[‡rf§¡ýÅá÷iðR.ó,ZúÉíD8*qšÑU½K“ÿJ˜cɰ™ÓŒIÌ爑ôDg…ˆäBÎv½š·¶Éà4\0µ¤T³Ón«YnÉ…•ÝAäS‡­Ê® ÜYæ8*2«»] þ™ö8áÚŽkíÄ]„I^BI ôaõº Rx›)°®N'i|LÓÈ%‡©Iû qï^νJ£XÖ[€[\öôüÝ#6.¢HÏŸ\ùÓˆ°8ãap˜ÙœN2ìGiTÔSrkÅMºì)%êXƇÑÊû}å¡k™ÙlOïøFÌQ7…rú#Ñ{dˆMÖúÂhÄQp2k3ÍšNZ¡ð¼²™ƒþPÕW½¸Ömz¼ƒæ¬_€0ú"-ðºQ+Lm;ñoØ7!û£5±Î«#B±Þ+a1ÒáçOó¦cìa¯ŸÇ¾›UÊƒà„›ÁÒ©tñÒ¥‚Ðwë×lCº9šRõ'ó#䇹æ'Z§-+¦BH¤zPèî…±=í2.‹ZnR>òf|„ÿã0RÒ”ªÿ'´<‹@íl´Mž«"iLú0Qÿ ÿè–L9n;š$²ª§"®t¸ò &[N2q’xEWå€E—x<¦¶Ã‹¹JbW®¸Æ-ªbVÀé‚oq­o“• Gh1ˆHÚÙòÆh£ÑM+£ H ³pÌSÒÑwµG£vŸ†îºåP$¾0᜾|:6Œªæå¸Ù¢Tw0ØüÀëÄt`÷Ûµr»Û\Œ}…»úîöAÖÒ«EÏp±¿[ã|òö‡øål"zQ©fS#$ãÚÜAã£%‘-¦:˜ãAÿ“Ö@—T#ÿGõ´$˜ÅwxѶ6Ö¸^W¶9'Ö9’*Q¼ÉýH< 3ÿ³‘n‰ø®FWÚKÒD%FCß œŸ¯_:¶6#ÆÚMd‰v$dáI­ãìsÃŽtF¥BC84 ¿ºSö¥ 'ØÌæKtÂ*Õ°õMTÝî}µ«OÊ1M0ŸZÁN6¡¾ˆKr|3ì·®ÃßN°‡~}ðá…šhœ,4g\\Åôÿ­ñ½‚ÏžÛ:™ž;5, ©mðeHg›óË6T»WñOdal®GÖþ ž½’y0@»Á¡Ô ©©Õ@>òsÏÖ(ñÑô n&7”Ûˆ/¾²³³3+}DäÝÂBÛ9–ƒEÄ‘G“³Ôrnµ’9@r^g·½N½ ´ëE´°K¤´EÿFB½U:¤\4ßF‰*üú Ãg_ÇÃfŸÆ!2탬¦†8ÝíÆÞuï…öF­ DÂÐ BÃ@–9é'²/È8˽©ôZPÄåÐ.[z<Âm©Cü‰òEð~HßÁS@’" Ö: Ž{è»lt*EHº}½Elã†d}«¡¹uTŒ¹}YtÏi>ÑbJuÞO5ž£¶+(_op¼ÜI¹lô›. <ËL"ž`¨ðŽîJµqnF+Š.<¿Vk·Ô9‰ç]qgK?+Ï_š¿©´ Jc¬2´×ÚŠÔ͸»^ëºJžC»ŠÚâg‡_Èã9уâ|ÞÆÀ–UKKiÄ1“˜Uø—ëXöüÏ bÕ®2€µ¥,µ½_@~ò²o(•=›G¸CpoÖ/k þ#Ø¢W„dˆ¶4µ´±EÅíb ïý²0'Õ¿úšâßNþªËƒÀiÌ¢)T†d‚0 :! ËÌu +å(c ®õjB˜^éÒ+~¶IáK|1Ì.Ðäìÿlè®8Íx’t(µÙý­îêú±þ‚ÚÎñd}xV=|§Ôƒ²Är ™dÚ(Œ ã´4@7áJ”£3WÏó‹É-ZÇ+j[²¥ããm5tì…V#Šc)G÷`ªÁp`3›V¢.q‹§ýqÀ¿~3@“8:¿&ó¥slnÑ== Ùôad×=Ãi¿h.²4uˆÕ¸Ç…ÜÛ½°/õéâ¬hmñèŽ0Ýõ ÐÕ~7ëî¬ïCK䀽a(*–ZèÊØéÆãE ÙÇ)zêvÑn8±’ŸiÔ–ß[!Vt·ËbTˆŠÁ+'OÇ>ý2™ÄŽÛà·$>í<µÒÍ¿šÿ5•cz<ÿ`ý’Çpcwš°ÑD!aF± í5?Qïe4½˜£ûq7,5-²d >ì¢Si/_)Ñ¿†ü…-Îݰ¶é±»xí°µ)ŸfeGâØ1á ßQ‰©Íÿì}€^%ãäaZ\»sZ·(”i¯>pù²Çèñù¾e¤Ës"pb[ ?Ž_Û‚—†-ÙÎß/ªŠ)<òÎD÷VïS/Eq6æÞCK¤?J^Zœ~Ð~ѱ˜ýDùÍßK>ÑqËFßç!ÖàxXyÇöÚaÜr •xåýß.#f,kiB0­Ç;‹üb3*¯”ŒpZ™‚l¨â_´ŽdÆ*ÐfÐ_ö5/j‰ã2Ì< qmÊ€[OÿÓMw‚I-!˜äÝÎ˰ctäiŒ6u¨~±WÀ<Êœ£ƒN±côZ\ˆHÊcïëÜ(ÈfQ·®W¨³ÂLuNO=@t¨ùEü¨y¤Ö†™uBÜþS•9ŠÓÈŸÌâ~w‚I¤$,!þññí•êÌSòe6l#[á9–^Šè3ĉRâ,gÆÜfrv¥.¥Ñ’¾U”¤´“¹-0K7 ˜EÀÖØævášÍY…èô‚ž3«êO*àÞC TØ®NÖ»ZLgrº+àŸx ÆóN+/Žd6¼Ÿ¯¾qâ.ÔŽƒ®bx\¾ÏÓ”¦Å>ænº³ÇˆðôÇ:°ß»ÝÌ‹­1Y?ìZ«7~MÑ/¼ ÉEÊ­pÎèÐ걤‹ù –a¤>^Ð c`€qryØÁ} nËKóú3森 õ!^ǯY‚ÌN é´éóåR!ÒIø!¤¤óƒ@޼n] ·Ø)m6R‘Þ‘é:Þ›°-±‹q‘+KærúLÊw”• B—B\b‘záôNfÞejȖׄLòxþOF˜^É „…­m],ÒÞ4gŠŽ@“‡•™"ÓÌ Ä3¹[ÈVùq/Þ6êÝÌLPø®Ë1'µ“ýu¶´V‚ÉÒ‘w¾¸?%/ lO>ƒe³·È¯+UéCp/ºœ€º•j3Ä'Ñ‘ó$mp}œKJ̘å¦ãË·!3©uO®˜Û¾ƒ¿¤¸BöÁ=õ¼Š1ì–¦áêÿÓ úŒí6­Â~g Ë8ûWÓ’I†Œ)˜AÆ5"u½jÁ0[k\øeFHì‹]é‡I5ÿÇIyÑ=A. ˜4@ÄŒ¨¿eiô ŸÀ6X7:RלE6\‚ºxWð¼C_‘Oì…¶»¾öq–ÿÐfŽ jø-qIs´© P­‚‘ßzY‡@;p¥ØäEÀFxÝ9èŸ÷šüQКËþnÃv‹¯è´qÉà2Þ»HüGÈĘÑl2\WzÁ,²Oô¡k£AªA|CŸúå¯õáÅv7Õ]M•eôÜèPÅùiêÎB\~þcÆY ó3±"tDçëòÚþT7š—dÆt¥¸ðÆÝgèõ¢>NH¹ éÂÚ0ß\,Ié¼eˆ0C5üýpÒ÷‘zØävçj”ˆ›°qçŸc6!¶Y*”F½7,œLçy±SmYÍUín÷·a@€\ß8+ÅÛ-ù#”•K12l"Ýù„-N p\²(o‡4|¿“ 9¨» JQ½:—žåÓKjQR8`nÖÙqR›ê!GGz^q½"ë t’¨,Ì=F`X*)h&;A]R³4G˜ß÷Ue='ÒIÿ /Íë”IYš#ñáñ¢ ìoço¬<}p;ÞÿHMµI\챊¦–áò‰vésÃ*è¦AÂÖl]K }Qïøˆv‰eöPÌ›Èõ+¸²IWr¬l“ÇÍºÐøÙð_XS|‹+ÇvšG^õ74%‰Í›„Ù´u°G,{½ÿ4 Њ›øñÕò}Ç/q!Quù.ðf.í…Ý8~ãš`2jGo"Å\Ò&Â’mzè•ÄG*QcðKRǶž¿vÞRvŸ©X_VZ—;FŽí`eÊå̵üwvˆ<_œ"Âb¡Áh8Ôÿ4ÛÌ6½ZÝÂ\BÐÉ2òy1BóÂxÇ8ü)Öѹ™¸xÞDŠvñEû­‹Ã¤ÙãW¬K3¶Ê ¡ÃaJ£Znñßµ¿ÈÚ ºCæ~<#Us¡‰?ù‹º|¸*(dxSÒÏ`D 0¬Q:wzˆ°E–2&°xK){*У–höö®ÁkBšSˆá5"é¼êSUOŽçÑw"Xæßþ×¢v¥ Ûv5»gËÕÆ3jEäÏ^H—‹½h áeW15ªç|Ð=$5l…ZœíÝC¬•ÌàèakœêÅå-&«Rïê|T»²˜1%iÖY™8yÛmØÅ 4¾‡yÃоð)î†íê9’egžÇØ[¹¢‘…Ëø:Ä€l8ßç6R98ÖåFÐ0Ñv—þ6—T­'©'þù/¹_Ä#šÀbeMÑeZY¢C*ŠW6}|éP*Ÿ9’‚®{0¡[îÊøû/ Ëñù¨eÑdaìM‰ÿÖ(l$$P G‰1ð˜œinINÝuK¹SO…îr¾ tŽïÖE.õîf÷_çh¸Ê«¬VµFË~@ä| ‰tŸC;Ÿˆô)f+g”æb5õ—޽/!{Øü•<u#N3{=Æj&CÉk”ÁQÍ?×ûr6›U)h¶ï9ÁijݩµÈÚcÅOQ *R` óÿYã]bÔû *ê±:o@»u3xà>†ÓéÄÀ6~„’Š×Ëß_ûÁý̨²ÛÙI>!@\™DoÉé…爿Q ÆÐÿ§íäš«ó8‹Ìÿæ]¸š!y£ûT¸èé-3Xɼ+áÒ½Þ˜ÑXG÷\hË„ÝBÞŽV‰–³cÐðeAž–½T5èéŽ ±…(¸[МjŒ+ …SÀÈ'Î/I€c ¶JÁ>wì¤ä%ùµu‰]ØöL–ÇrLû1;(ôÔ½­3Oha9¹ú2‰2Qo0䚣ix}ÄCAÊFFìãÅA½ðñMdŒO RzÊœäåpõ ªäp¯ûŽ%tñc“¤ãÉ‘…ñ§g23¶#P pv‚]`WË™TÔQpã([ñ’©ßDíûR¬úÏ›†ÒSÜÝ|ÞDf¯L:¨•«Eëã» íŸ`ÍÎŽŽ­A5Jȹpî‹ö¢ Ãðy²Å“òä,Äù\j?Œá0ºjËÝ…3E]ø%<ìnëf¿+æ•8XïÑ ¨,´q†Ü¶ñÜU”§c6Y¨!y­¿˜óçcѹæÚóbmQæ&ٓʌȵ—¼z¦=-B’­)ói†nßúw^†™µnþfbˆýQ÷ èŠÄž7¥Ï]­ºÚ©ÏÙ‹:«° Ü xx  :ùrIv§%¼Y´½hŒÚëåû=„Æ5g]öoxiܽ=?äk¡7©­?·šÏÁóqE¼¤¯kƒ VÙLGƒ‘©ä\‘IM“wÔñ°Ø¯Hù˜†?–\Ø u[Óc—‡"¢i(ŠÈ9rÅžäAÝûóTHù¶Gû¡a'7Þ†8QpᣠÀdf`N¥Øv€Ëˆ|@ˆ  ê”Øv`!8¬’‰ÙlØjL¯;Ëx ¥ôªã à• Õ~/@Cú"{„ ˆ¤[é'l¢bëŸS¼«ÉpðŽCwÒn*,Ù—þ¡1ÕºˆiSÒ`bê =!nhô¹íJÉ_ÊõžS¢ñ¢2@¾sõ®5U ¹„9…Å-¶¦W H ˜>Ã8‚S'QÃß~¾PEÿ.n¸†f(³Ý8JXÑÖr>ƒé±䎢}{Cµï^Õ’ëf±Â»®YYåŸ üŸA£m3cC¨äC ”­Žz„vp©–)K"YƒA®³™Þ¥@s2I<[-›9Šä7;§±Üwws²"jp½¼@ª\ò"úã=YîÚÚ-Ç ãëš¡ ̉@¸‡õÛý˜Æv"·Vwö©EçéX5a;×7~–µa™æz4A~ÿIŸ ʹí<Ý$~| î`ûq?·¿Eã¶¥°´9õ®†%ôÎ<}’Mž›\ …úÞ^?ÖŸÏäñÝËÛœtdö©Í©Y{;®µ:†ª„|bßâ ê´!:äž Ÿj”Jrƒüöẕ *N)f†÷À’ðx’øó,ù´l ކBÀ E ·)À pN'uÃáw,4‡þV5œI'CZ ¬ÎÎ ö'Ð¥ÊïÅdA=…Ø£›¾³Ð…7d†ÕŠV•È3£‘’„ê®Yj},@UÁKi½vìQ.éPi‰Ufb;DŒô1­Æ*¤Y‘É l ¿£n@kÍÿ ѽä6ø8Âép­\oÞd”I!sxÒ¿%§ýqÔ§{wöÓ·° ­4#°Õ¥BïµQ¼Ízï´„Vsß¾Ó†¥ä4$wâ U,[ÖŸÀƒ4ãŒÅB’«BÔ‹Wã‘/VÃónüáÈS÷ÔP«,AS[E0Þˆe0ºb1àQJŠX®Zº„ Û;|ì»@e,9~Nׯ\àßÏA"~>ù}ìfÌûc_VeZWƒnaº}$:Þù‰¶t¿k\#$R³EæÅ:Ÿ>·JÞaø®÷ Ì¡ûÌDÆ•}Ï…Ãñ“̘‹Ü#ö™Ik ÿ ¼­zÖžœ;µ]}ÉíXPCw›u'PêI^sWp†þX eü-¿`@.ò‚³ˆ×)TÒñNöAÕªÖj¨xE–3J(ì’Rí`buCÀ¸_|»¹®Èíg”lZÇÞæ®‹ÄDø_NÛ¥£‚pŠÍ6ú”^/SRÛ‹q6&WÝIœjÏã»dLæ k`ZE¥Ö¬8OòX‡ªq­`‹CÓ¢ûdý£ÚèyBíŽÜçV¶{Jk¤¼Ì–³×5ÛSbQüëT9ðº—hCž¼ Ó²/¥Æ.Ut÷àÑÜÛQÂP¬aÔÑ´µ‡F*ªc·ÿ÷]xEŽ9ÞA±øyq‚¦¡¢h»]ŽœQ;5M¹—ìÆ®‚Kv)¼¬jóêÜU}NÖQ!•ãîK<ÓÜšPnr“ÇhÆCFbHÕh²={ê ƒ2y%’¦'ËKÔƒX¬û.MÝ«ˆNzu|OÃßëEÆ…bø$š±Å“¡Ð–nÐ:íÿB¹²Œoï}0¥{ûY~.{xÓ¡/˦kùß½Äs͈rä¨n#Í]8ϤšpaÕNAÛ×DV GxöU…èX? Y”⋱ꨮïœ:3•˜¾:‘«–‚ã²42€ËÊ!#}ÖÅç’¨9ã³½Ug¹kó ©”qÌŽÔ®nÈ1޵&qÛÇ¢rÞò3>šdÓLç"R}ã³\¢}_¼}åk·µS{õã›z‰+ »1`ë$óG0 Ä”`MÏÀ nU –{=âWØ‚³+¹rØ¡ž à­i‹F]?H¼?«Ïï&Öªþ$ c¸ßÈèœ!óÄÉKÿ?bžS()x¢ œJD!ô'¡<>±ñêr3 `ÖkZg ç Q|pêõ—Îæ=fX¬I :ÉÜ-ÚÒìxŸ$yê \«sQ‰%óïyŸÉ¢–ÈÞˆF<¤™a£pwŸd.C ЂI¶ –‚ò­T½oAjÓ‘ËfÜŒávFðË©H™RcÀTân §Ú¶Z5 éÉeödó×Þ„,Å/R+‡ ì]©‘ŠšVO`2ËÙ·%4:­!ücTSbÝ÷[CøÔÀ×m[aßG4aT8>ìÒMÑ+>álBo<ˆ=¸¸ ™]ÆÇÍ3Ž6CÓ1Y@V—­&b §¯,ÓŽŽ 7£È”q€¾à.:‘O—ã›$€ÒšštÒÆ/UðúŒ&ï¯ð'ÇÙmY¾iäáás Bø¢2FÀ–\¡ã–{wùÌAKÑiEñ ŠÝŸso™Vê yš³Ž—q ?ˆæ1ÛA¤Æ:íûí¡o¢÷¸‡ŒêïaBDyÀþà¿WônŒy”2vxäéÆÓ‡Ù'•\d*¿+ôÙøh%ª(tªüÚIŒ „K;-ÈäU‰QšA‡Ž¥,ãe&Þt±XЈõ5ïO¦›uåÏVS§•‘‰z½–•wì1œMÝíp¦…-Ï=« ÃZËè…2›ã¦ó9Ö®Úù¦éøzrÏZ¯œbîæ|ßÜpw„*XÏøÓØ‰}DK@±;‰J1X(ñP¿òƒLqóƒ ìÑÃIéëiZ‚¾Ï(Ñ:ZÂ*”p41󌲳ƎóQ øŸ’«÷¬|ò„gp6=sŸq‡ÂÔîfo#š•NÓmZ¶Àšƒ‹ãÊàÇþ»ùþŒ¿ûvo äuLbWª(ð0œÃÉzPk¾6s xd®‰¾ úÊQ%ÏßÈRG)^-h´p‚•rø ÞÚ?쀡v‘5ÛEˆ!"i«¶kÁ)/'G\@È7[/‘z*å?'÷¶VI<ô„:,¯”ÖƒoŒ•óÓ¬»”3Ýà ©%ÆHG‘eîö7B£ÎM„â=Ó[T6¥woRLTâJᨘ °­ `ÙþsíÉ=cîO7k»½!õ@pÐ(Gù;£1ËñiÞNQš’1ä,úbz]„1GZ‘ø–ôS¹‹íÙÈ¢ÀÓ¥ ±®zJM?Ç‹)ËfÅKÀ’áÿHU;æÏ SH‚~ȶÌmû|2:«øëIWÔi¨—x†¬¯4 €Ùn©ÌNŠOò#&uê ͂㈹OÈ›š£O—úÐ##2ë‘äÒV]Ý5㩚}ÊlaËlKªRƒº|ô²žÒPéæã˜Z™,Ú?o7;½Óûf"kÖ3–d„K1ØaWTWF>ˆ¥Z‰3H7uV¶aú>at·òQðÆqI²€«»bÐÊ,gl1ôtý1Æk äGÐcS_ïƒ9V­…’ÈEMï†ÑÙ‡ jˆÀUš#ì‚¡ ¸»ðš›®êL}öß"´ÔÈÓ " ±>DxäÈeÕ'fj+, ªÜ(7Âjÿ,É_TVÈök  "dí4¥Iîd>=Ö@–W‚ߦ Ã1]Jö¶@–âº"[ ‰s÷ÞàNCi˜ÈãÔÂ@ô—¥²÷š\h:]õ©»ô2 Á;®§5AŸ¥¯xzƒ¹¢<Ïz\?Íjµ°exÆOú“ç@…½Û="Ó"5ͯàÏCÁúT„×P'’ñ`—WXÙãʾrŸs£M¬~¿*²Cc|¢¸j·Ä¥×Dï!´»i_Þ~ë‚’¨>ö’«È½$]ßžøn¡äœÖC¬•Å^D¾ZË©v]!–ð¾ü¬úˆyRð*zëøì,â¢%Õ ­gU ÐoKzGÜѬë‘ÚuBÞÛB"OÅŽ‡&¤ â¢Ñ)"•×.¿«K-w=H\mVáÚ-P%ÜÚîøJ"·[¬s7©e°°ÅŒÇ!ûR»_ºžãjÉàùk$ØzÞ—ýŸk_ö# ‰uCžYí¸Aæò€Ã>}ÃN°YX ,ÔÎ×;¦»èÊ©­ôs°&nÞ%, Ø:[-vWÈéîU³.ç±íÏBâà\Tuq#%&;!¨·-שÎ$˜Ñ,ª4íìè®Ó1Jݦ*¹ÇÒt¡ÃžÝTŠõè½sƒyŠ^‹‚ÕñiÅØÃ™ö@îÚ÷`•,¸µ#"lƒ¬º2ß>-% ÕérK7ojyÌâõSl¯%¤ÑŸÛãÃ3Lnð‘‰ó½¾#ì)N·Ox e p‚‰:TöÌ· GgkTŠîR<ÐU’n™np‡l·Îo«a2"˜ ¬ºÉ¨Ï¡arÅ‚>çÉD’³HRF˜•ü©Ù¯¡ÐÂ#$¥/*‰-âöß¼ý™8ÚÈwÛŽ)tl:.È8æd{4‹$`Ų’”ÿþA|C¿io¯¬*©›Ãêbû³XDZϑ“úcWØö²ë]@>†‚4 ™$ßÌòܯ¸XNÂV8@äSQþ­2øzX÷¿Y|n=EýŠæå§oª»V‡â‹ÖˆïlÚG¾uGÈe•nðÆ<ü²ßUz€ûª(4 €<›Ý¡0^\¯n’´Y„¯ !ƒ€Õ"qvêú`ô€ˆÂ‹Ü˜•í+¿½²GK±,}N›¿¸awÓÇ«zNJb©1«³*·ìE]?CpcBœ ŽfÈ>öþ’gNr»Ê’†˜»û4ÆXD:0ÖãÀ†–c;…Ÿ2­l]s’~˜,Ïì{¦ŠÓ·áH9s¨Å®8£Áÿ­½²ð¬ÝÌ2´ë¤[ç—L#…ÃWÎ*_·‘x安³Ám35 m`Y‡Ág“È˹7™½±qâd¸¢˜=Œ-^Èaèî<‡U1ÎV—uÑ€‰-&ÅÐ{Õø ³<»Ï#~îñ§>W'(š”Yiw#!ƒÃ¼8ò½Æfä 犊AÝ×þþ½æW¸v&½ö‘Š\e+è ¯u@à»î¥ÿ¡;b‚t¤½†½)6áŽ_Â[]íªšm§!.·,ë(£D6l4Lo¢m³,y:öd»UR¤­ØÒñHl ÜŒ±˜‡2çÂ@Îú\HA*ÔóOß«êþ4‚žðœ0¿+º¯}º” uS½yoažÊæÛFÃôFOʼnÜÝÆ¸bé$o¸ÔÉ{üûÇf¤J=±»i­ÿ¤Š1ëŽë\nˆ]²‡P OyÆO‰v)†vY\Ë1Ïô¬êb>½©™˜!Ôß^ľE¼ÓD›á IL¿ècHé¬N=*6ÐX«}åÀhc:´žCKNÎ$F[P r 9µÇ«2gèŽÞʶ€ÐxIø)eÉ6§zU¦yQî…»´.4öc‡™ÖQÍ1@A˜47Àpꕃ‰Å€†¨.÷ ì%¨pÑõ@æÕ#Zpœ¦‚”mZÙ+x/P°8Š{”,9À’’gøu¶ö¯(?KŒ²©b|Oá›­þ­‰9=ð5[X3M0àÍ•R•ª÷ùÓcµ”ºqEXŠ‘Ênê™fÓ«Ýå5 íMMLõW‘W\šEþx“ÐÇØO7µþ¡‘úâΔø‹ßº­¸x­7%Àþòe³-cCjÿº'fœ‡¯KOs6f©—§¯õ=1ˆŸœ•ÜR/·¶ooöhŒA-jLBMªwMï®÷P“·Ü¡ŽÝ™¶ÍíêýÏd(IF½–…{µ‹™°Õš§=l9º[óðœQF¾¨èmØ×Þxºœús7uÇT!RC*R`w³«‡˜AS:ÿ¼( ´†G´û ';œº¬ä–’"üd‹@¥4C=€i§ ¾#æ·,8úѳšYjšÊu „ñõÙ°9ØÄ¡]SfTɰã:±ŠË> µˆmòår½‹$ÜxW8/6„$X±s:nÄ£¾ååZú)V8dLôИ©ç±.Åè¥KšòѪu·Ýý.å9/ÝæÊÁ`­[fä—Äðã§ ¨ Œ:Àò¯p¿aÞ¼ŠÆ –Bõ•À™JÉöRÀb!áŸJÁïz™Oíô&Pë“ÿhe˜v*Ç%ãxƹ¸Ÿª)ÚŠ˜nÊBwˆzƒ°'1(_B¢yaüV  exìôЮJÆfÊ3ÔÊc™õ{o­p"Ý^UÌÅ/L‹‚ÜŽÍxm܈µv2Âçv½_®Üµ¥‰»ãÐéÞ©@µP 'M"[Aq|PW*†Ùz; áz, 6/tfšBHÀÞ©ºO@$™º¢xô§¬ëÇgØÎ´w„¼»þx©]#Ë•´Î¦ZçÑ’*mõm2nófÖ>]h‡) ȯÇM‰ÿ§¨ÙŸÆAÿÛÒr÷FVo>œ­f|Õ¢e^q )ÒáËé„e®o^j‹ 'Ö"À‰œ¡B­c˜sÈ”7¦ÔBu¥\lN\>ì“Î<Óƒ•í(oãEůZ…û”@uáÁ#*Lôg7ë¡ÄÀÿpT5êŵ-¤‚ĆV‹sÀ·ŠD€Âfë¨Qñ ü¦‚ÕÇá0uVûÌd8F†@QŸöB2}G÷Ãï8ÏßzQF Ck™…W\2­XΙ¡Rê‹e˜Å§YT]&ýÒ ›i^N·‡¯ÙÇ^€“à± Š½ ŒêG•§Ÿ ¼ªW¯j5)E0¥Væ¯KÒžl`&kþíË•x$B©üˆ-ºæD@K‰\×Ë ¡m%ãòì{¯ÂËiu$Ç´½±ã¹îíeDTòPÊè4YÂ=•€D>µ¡™:…G¼nTô!Áwé#‡u¿RÞW1-Ëéê4vW“ÜPHôç0W¯_tñpýZóm³W-æ˜dBn2Õ„z°×¼á{éýë¿ën¹lטî?ö¿[°t éÚÅmë2O ÃÐÖ7®Eßg˜bç_Òû¥r«½ã>1¥ÏNêjŸ°eJPXSÏç&žœØÈkñãfÚIyK¢¾âÅq¿ˆAFC8oç\þgê+UÐúz06¿£1v~ÒViðD2†³©3b­ˆÔ %‹×SßEë æõèR1v¼1Ï ­¼ƒ”á ÓÀ"a~=îFÇ:¥Fá™òãb, +Õç$Ú¤ü*TiŠHuÂ,ÑVØk'LªYìBꕳF·v ¬WPmáž·~ø£[¬™h,ßPüLüדþ‰Pã.O¾q®Þ6 hf;=gƒÔ§*K<ÇÒéäàUï’9ñÚi "=r¤Vl%ÂMpÔø`r+¾%{t-5¿>ôî:g`rã ¿¡Iù¨U·=ïô¤E•»ÚÂÇx9.«N×úå¢deD(1'±æ¢HÉ‹9‹j¾Ûù®¦'¥ùÓ¹{[…Ž·2¦ÙõµÆûÔªŠ¯¤÷«øIÝ:1íþÀëÕ€¯½ÚþVéžqÊ-ë²à24Ã*£æKa8Pªù ×5øJ¾K:Êm@ÕÕ ©$1F¾ö|ˆ6ê-SΈ:¼ÚþýAe â@ß‚ýîat .(2‰Y–P×þ<29;¬bß2ªQf¯N>Ø®Ñ)ò~YdµÞ†¥)›*®(Lü1Yé„°iªMWì $|iÍÏm§€ªMïýö|PPÔ"6u>ý l 4+¯‚¹«—Ì$m¼Dµæ{è?"EböW‡b!'Pé®%õ9ƒ?]Ë4·„n7]N¶š0±vHè¸NNßn^O”»nè/¿<ˆÑâ¸Ú¦¥Ò·ÌÁE#E@•Z³úÁ!;±_:HhîH›9nWFë*ìvCÔðàÑžW7ýé1´áB> ÛÇ}ÂP¸P”â̇¾G{ˆŽÆhA!úXP†Yl•壹êî¥@ãgÛÙðý©ÛBrŽ¾Ê ÂÄ]]ìˆWŠÒ©›Þ8VN'Où‹ïh(Êåè :÷¶ÏuTÛfkz†gÝQ4«AVÒ"¶L¸€’Ư˜XídÁ&KET• ©Š%4ü#‚°u‘)‚>ìfÔLo˜™EÈb æ¡hÂ…ï¯ °·O VÐþà{—[Ë$z’;P/øµ< Ý±à¶­µÂ²Üq6or)b Üþg». SòtHQIÜ€´?£Yn¤ÓÏÚ‹Y\n68ˆÔ:˸›¢˜?ÑëºÙƒÏîFˆ¼ ðAué–ËbêQÁyÒ,(» ÌfOë+áC{c~MúýN†wÆ]„”ÏܹÊÆócÛ÷ÞóýÈ‘¸ayÌLý ¤ÛÓÜiŒ£h÷g°3TÔâ%¹áÓE CË€+'Z…¬ßËt‰<£Ã%E´Á ¦jG¨°Ë}Åta”¡ -‘Jš¨ðv,¢ñA_žq½0Bb)Ÿ}¸€_3€§oõk>û^é3-0e¡•é)Ë ±Fpâ‘¢ðÕŒB˜Y@Öñ^NYëÐLj×¢*²¢ 9òú…®-ûÄ­é—W¹R^|øé¾3Þ—èVf;¡'Gx¥~ÊVN!bZo¥_û¤zäYÕ€;˜W.‰Ï{Éz5éE2lG„¹^Ô˜ÃÍš|4cÉŠ«„ ì~>§¡h!.ÚÈçJ‚ ÿ»(­K¶T¿Ç/‘™‚Š…ŽŸ­çIf ŸŸÆþð“Ôy|F{Ü?±ïú£×ö^A_”³µk"—°à†Ç7A@„„y¢mÍ'ºÃZ¾åXÙ.5Š_Ó9õu?Ów8˜Êç¯ }MéÆÙ@w´vC<6#¶¢ZÙµ‰I»iݱ܋üHàÒá8#S”8ÝÛËgJãÕ#ðšžèÕÏ-<ˆwL÷Á^¦/S¡—Ÿ†k'O g+ ØÉµeEI³!I~.f¥Ïo”ÔlM&‰†jç[–Ó‘M5“£¤× a]ÄŒí:´ÂÍ–w\&T¹É'ôµ¢$x}Sfüš*ýó(Ä= „½hÅäòØ,*ÔJ«‹4-A¾O4eÈn"²Û‰Rö:ŽfB``²Æ~9 èù×ß®„Bõ}Þ¶‰ûš&Óýª }PG¾Öþ#G—œ×x„ܲC†‡…@TÊ”2×ôÈ Y£ãÝŸ‡V³0ÿ_ŸÔ×xÊëEØeи¢ü«‚ü5æïæO¨35Ùy™y TÍöÝ ¤Ý¬Æœ–bÕK Ó1ôšW›ä‰.”1€^ÑÂûš5Ì“ô_]:º³ÂYÑSÛÓÄŽ»f¨˜Áó1xjR.vf™ 0XKƒ¾‹õ`l­þÞ¾·x›?Ϫš_…vÐ'—o0÷%€ (&}mBUXtï,TxàoG¡:ª‡©hVøÎ›ƒÏÒkÝŒ ŸÆÈIøÑâ©Y’%{ h^–ƒÊÙhÞNìmh¡à™é&[˜â…ñRüŌųõâqâ]͕ݎ™NÈÞv¼¼½¼Y'È]z\[ÐjýϽ æ^ùcCæ_æŽ &ãÚØ:T‘©Ë°Þû³\¢BÝob— C Ã)J)‹”ÕDû:ÜÇ~„õ‰(¤ú[ÎïÖ–‘š`ÀÌk84¹æß¾ ß:OWR…í›áßvì5DÕNä£e »ê±»ÅÝÈ}ôÅÍ&MZu޼1 á«i"Ãm4¾ngºD@,’Åí†îìåÈ–™Z‡×æ|èq6D\ yz´ƒ;Â0 ÝýÍe9*ˆ§~1=äY£ÖVRÇ)kíWZ¡»rÐï s¡ÄÜ„÷ø±â–ùeÏ¡oªl/ÔýÆ& “8&²‰¬çûæÒ•ZͧÄIEq6¥Bl¯FàAfGï¸Ý¯žSÅŽÏ2ò¦a÷–ŸlÜn ½Ì+¹]ªf_]55Qe‹­±Å» ½‚üŠ ©„áW…B[íÚZ–ÄKعÃÐÏÜÍOÃ,P9`¨¶¢@F¾^7‡EÛ=Þ OQˆ,ZH>œwA¼¨Q¶Lö3Ãr¤¯¾ýÆåm Ózr˜_*S7‘wÐBÞL%rÔv<=e½¬mj×T:¿²À€«“O÷íŠ OÆÊœfúëɱÄ;H¡ЊæÌ U•V—(9_µíüp¦¶{ïÀÐl ¦]žW Dáé'N#Zð6l­E0»¶$€z+(gÜ=ßŶ$õ£¾ _2¬©Þ1-èe?^ËR½ µÈÿD­O‰€/I.1.b-vM‰f4ÕÛÈÊ[uå8óXfk"¦óZTà£ÀÙG«þÚZÜè†cáˆÒU“S<û¥‡JPb©„"räÒ åüš-¡2ºÊ e…`Š8zäQçÓê:.Í0\’¥òÔˆÕ×’ç¼Ó1<à²S×Ki·d÷˜ÔîÎÎÒ4©ð£}€æÜa ÑKc€uÚÓ™N¦c¾—îˆ~6¨ôÛ'Ͻ÷:Ë8=,gþ¢¦A,^nôϧªÚ:§À+õG¡û•ŽýN±ˆæEpY_.“Ö M„ž)u[í·ójögyóBö´Â(‘gq·žÎñÄ–EÃΩqºÁhà?Ùø"’º‡­<Ï#ºÌ.àþTÜ ~ZL–# 4×ïyOó’z"ž•‡&Âåä ZIJÌ£¸øKè…x¬÷Z]Ññh Äåš þgŸœ'XÕÜæ}¡ÒcÈî@8¢^GP®Å3ÙmY†•tâÓðó 3î3ñáaßD£÷?ïG#aàÎFUÖ±³ Ðù±Ü›­ª¾:Yäx1ümåÔKÚn½øÈEÒo=»LÎò”G`æ¿^£kr‡êÝÀdÔ˜Œ –³A0ÜÁ©YÛ‰þï¤ØÃ#OZÀ2ö²¦Ð*Dý ùìöONÀ`á´£Ò«wÕ_ÝŽÕÓvµ}<‹¸œëHÆ›}1ï-ò,–"?çÉaö¸/ç1u‚aek€£=f(]xG'PÄßkø 'Z?äQÇ1^úžfrÞü'Y”Ü™©udú>Æ±Í 2¿å^ÜÌc[OLä†q|gÓ‹–¨ÐÃo?Å.ð««jN¡´;e¹2Ó`ø/+~#@PR8‚mb+"1UCØ8<1kWoÉWŠÁÍÈß×¼€ÍútœPÔe£˜]µ }IÉ â/«—¿Ýœß|³¶¯qÂÛ\=&ϲ©ƒR]÷Æ1w;½7Ñê‘ (±<ÂS<"£ïv~þ¸;†ŠjI§»¬æà‚© w Z‹¬¨¾ÈEäŽnË!ÌðYæ»÷ýûšdÙFžW¤W«ø“z'÷ÃÐ&Qå÷›BŽ›ÿÍÄøþ'ê\~xœxDÉ»§£pˆrÜk Z‰™¨ª½ŸX7ì&Às^CI©½¿{ °ªËûu·#sΠOÛoq‘"O€„ÞŽŠ¥ÌXG ß®J>-ÝŸ<_d/âŸx>,¼ÜgH¹~íŸÿ°òÎ5èû×K5÷d:¨zÑçôlœ#MwzÜL_‚%_ ÆN)”úöû“ÜW•š{Õ(¯¶|ÅEý]kÖ^³èÝ ®8Ï lêô¡Ì%HÏË‘~4ÃqJ[¼âýÙB˜Ið»õî;~©õQGgµ„­”©"¾øqË\pè$›¨ö¡G)Í.ØÔ 1óS¿÷§E£íÆ» ’ðz ¼¬é+[HIxz«Ë»ßWˆ•/R™Êƒ2Ïe|o߬‘à'íæ,|ù‰ZXÁ Ç/…ט\ó ð•ÃQ¡v³G×Ãø°‘£s‹rÚŒb•¨)ã…Æ‚£Û ^ðÜþè½<À6Õ,V0ÔË7´Wð;o_UéQF=1©uéšMdÁ§½…w[#96Ì!jÜuÖU»q»váž.x@F§ÀÄ¢ñøÊX»q@*Ž!] —SÅ ƒ$£„¿¬ç:¯'õÑõ¥%ûTüš¡¥h3Û‹Ø(üÙê/}FÇmâW‹JRwÿ ú~øëÈýwHµ›X ·¯ã˜’Z^Ö/ügè¬Þ6ÃËæßÁG¡a/vGÓ¥¨öôRƒ&=ÍêÀø´êþwÌ!½Z‚tÌ jñ[ÙN4ØÁ.(£&ˆìl“p[à 3¯›¤‰§¹ù£/¶hú;`VPý:[tt]Á±í‘—!}ôrç\´ñºIwZõN æ,‰üâýšUA¨5Ò¿¯<Êòï¶ôÙHîÎÄéuÜx*d£r¶ðªÇ§:Ú+ 5ll_$=Ùúf¡³vÞ]û[ÍÜ…¯³É›Q]miΪ[Øz†]8ýZËÚ™_1mó—ybÎ%G¿*«PA^‹ÅX ã J…xf¬¢r4®)y¤ óËo°;Žæyý[é] Ÿë’ïÖ#ðÄ›|I¢M÷r¸‡ƒQ¿Mcлåó&àe”qðÄðûÛ Á¥…£HÇ/ü¹5ço.gêÓh˜6ñ3¨_<$ÏJž@°¸©ÃÿÓVÑÿ,­bðy<¾3´1Àsü‘BYlû›¨¿‚hÄÙŠ9©ÿ’Nì¢ù7þ ÁL+¡ÓE8öÌÕ& Û*O"Œ?äÊÿ>^ñÈ}÷-G3Ñ~YWÞHÜo%d 5üîllÈᛟ#˜Ž¾U-"€MÃ^¨=[³ç*vŧ#Á‡»R•5"j$CîÖ@!Ë$-‰ü%uàS! †«à´P­¬,t’ÅlÍ`z«ÓEÑôsøÉ[D´¶Ô%”+Ŋƃ“| õùÞ&è„ å,0wÚÖ·R6æëµÃjaÀ ‚3ìз5®öÝP$£Üäÿ¦Žaõ¸Ù[çemÄ—ónÜ•Á—Wr, gD•Zšø¿ÒÓº’ÔšŒ›aÕIð ByÚÐŒÄÚfý•¨<¼aí˩հœWç­üz}zƒ{–W¡¾çÆ’´^ÞPnoÞêQÛ…ùÙ¾Û`£,?ý…ýææÎñÔh˜¶ýôýŸÚðͨÊG°¤”k{×8…©SŽÏ`ÿ“Ƥ÷RwÊùÒª÷ä…O4Ü*ªÄâa‡ˆ„üññ_>ÚÒYÖ_m6 æOi}}8ßÐK÷h;¹Â…ä}•}<ãóçÓ0hʉò~ï×*8°y ä÷øãŽØ¿¥Hd±‚þh »ÏN "±Ú|)RÚ@ûDX@\>8J³âvuk¤Ww2€o‚èñÂg)SÛâ×f·˜m×Éç)Ìåù^þîj#ÛPÚÚ¸ó+r¡'E­]ëŠqÁ¯-hþjæVê«äÝK4ô¿œÞ‚¦hv&lVÉžDwÈÔpP'TÎ-ÛÒ Õ”õªUiqwÉíµ­7a*êФˆÅüc³y×k_sWZÁÈWu-S¹»bÃ>õG_H A¤Êr+qKý^L[·þ¶ÿû”!„æR.Õ >èi£ÌE¶Ü„G¼æ[Ça”ï&&Â)§[ÆüÝBRÕq»A‹–a€m'R--d§ù‰U÷¹58+–õ=Ú“|‘¦È»t¿5÷'åýK"kÞêeÿµ› Õ8´íKÌ/÷™—…öômìÆ<¥’éOJÙ•ïeÆÏfÙ“á†v–:Pf ùÇ(ºSïÅVÅVYõV/ƒD(!¨ÁÝþæºkl1 ´ ¦ãªg¯ë¾ÅÄCŠmq䎃XÉ2µ×ÅÕß÷;*ñ÷YgÛ c‡QšÍ6Êz [°¤du; y®LÄ‘:n€¼lλE.‚ gëz’“Þƒ Âлm¢H–1dl’êÄ\fñYœm{â#°¯nÛ]ë.Ô„Ïjp°Büï|¿G*»¦IË`t™@Ípä°œ]uKо=m.éó¤7>÷lKš­síM¥î쉖û|ì¼YÌM’ób]+ †(c«zÈÇбѹ'd&`ìþN:ƒù#äD–â'VbÞ¸ÚF½òç] 4KO8ô%A7›é\õɈtvd©ŠÐVÿòĤ®|)Wx ~ù‚?X°0¬ 8­c;ñÛØžUàÍ—¹va B[ÍňvˆréõÊËk‹²#mw žiCoŽáò%¦©çšZWÚr ,ŠÀ”…ø4ÇNé¸~‹jq½Ï6ónÅ N¸ÿ ¢>³ÊõòCUÉH”à%†'ЈnN½¿j3Oê¼2ø¦ 8·4Yù3ÉbÆë\¬©=W®Ô ˜™s[¯ÝúDìµGtn›°‰È¸KÓóÀæÍíÿf†±*ÈÞOã½é/y淼š¤Ãoº¾ÍpE gŒÃ/‹u—´l3öóqWØ ’¨ÚI €¢63Žž’R Õ_þžð U¹ƒªð1ì»z/%²Eœ©Ù›ß3‡°€0²è,ËI3èß¡'¬woc‰OãC³Šq¶º"ÄÆLIvÃ޳«®x´Õ„á\4@×P–¸×±L7|YPó‘6©6he<éaƒ÷äèí=R­¢09o)Ñã)_6éü/Ç*¢È›NDR´P­µ8'Ê~Û¡Ký8íÐ(ô´Íæ‘ÿ}Q³.%¼àç1ý›kù¯h²iÀY>þÂÕøûú+s!Qå¤r@%p)i­åEèÀdχ‘$®~#æ,ÐÈF@=óÓ4‘˜P'@{—Xš«ƒÍ …¡e&g¢ÕIÑ–yZ2¯œ–¾LŸ¦÷§iz3ë;NFÏCE "Õ"ä³"©Ù¹ÒÎ/Ð~š¿]'³½]d¡wÙm=͸Ÿ‘îXO‘0Õ°þNB¨c¯矿^6wúŸÄK²ò®XmBÂUÍ´ž mȇ w‰˜Ð ”IÕˆ›þRÇïË^mà!•ÆŒ»;ií6‰×œ8»àv¥ÖíÞ*ñµÅ=Ø ƒ•8V4º§z>ÈVw¼ª ¢ý6ï¼jÈ™ÓERšèË4Y£qU@Ã2/í¾_V.çóT—$´A™È÷§¢,ò§idðšc ª}œ9tsPòÐÚ4‰¬«Ær$õWŽf Áoªü„(Jœu4ã´›¶WŸø)ÑjN½ ıL pˆ µ*DШrnƒH¨Y]Ú˜÷´ðT¨ƒ ^X>¡58°‰˜[v ]ïó/\¤“·ûîÈÞÈÔК# wñä1É h·}ðD°‚Œ¯mïP‰^äâ}<û±êp¡Îòœâ|ŸÇN¥×0a¥aÒ£î;M¹ËÛ‰8é=^GjÌóŽ ¶ÿq¨¼ºP?õõ!|dùýY`ô–äx–šc ð(#'û¥˜Å ûšƒºßnzó²¡@Å-YV@Bt„|kÞn“ügü T™u‰£Hɤûpß½Œ(a$<_<Ëï€G|BðÛFšÇWáÁ5uï!#ì œµn‹Óæãu ¿Î£ ±hL/YR˜^µ…å-°iŒhOw$0ç]ícY ïÒÉw„‚E¯‹%LaĨ ”½3h«JÚPköTå‹1¿ëöËJßÊp§SNV*K¢Õ¤€$ ©è{[7ž®Ù‰C¼ÙäWË2™{Œƒ–·±ÃÞ?ä¢ÏîRaFFiÃ+ˆË¸Åm Ìgk-Äkžóò†‘×7¾2¥U{NÿÅæM~IªLu  :’èôø»ºÎtžƒ&`UÕ<þ«‚ÌDåè´I±;¹bʶIÈõcPO¾ÿ´²çò댺3ÍC¼Úªód¸ÿϬÖéŠû5±G¦µ gäà%\c» ~ÿ3UsÅ|A ¶bä©)•ø6Í•ç2®Z‹a=Ûÿ14µ®œs…vZµ]}êju‘8nÚÒiU¦èuw£—…«ÝÛ¯`Ä*û1Ã4‰dq˜¤V7“bsõ#Í5­Ë‡×ªtýÏï…|ÿNaVૺ¡uZ¸ o•Íœ®g9íza¬PŽ»ÎåÖá‹кqp@¡(†^¿ '‰›Ó¡WùiÚà–Œ¡ ü’6ý0U×F]˜a8yãk*Ô¨{¨Ýtv:™¿ƒ¶aSa*MƵäqxô{ˆâý‡èý55èctÁ‰8ÍŽ<'¢¼"q¡G?'+òÈQm¦›IZB¬ÑûYÀ$ë$óçñÑâlzb‚æ2âÓåœMIˆhcϯSÅwteé+FŠ¥M1Æ3ÑdÌ?jrDn.MÄ¥’vž† u„8,üµû#³«Š ðir§B9õd\¢ÝΕ»¹Lµjc¸ ÙËü†t4°ñ%yu£0 )d‰T–ÖÕô1¨3ø““&®°n –î8e2¸QÝ™“—ЦE^>1ž†¸USéç¸ ;kƒWÝ6?½¿°?`HȇgLðÅ™}‡±ý“¶(Õ‡1.=ÉB‡ôÙIøLªD~§ù¨àÆÁƒº¥Ûý/Bì[:1hÙ•À©·Œ}Ôp¡9^öT%ÎNô|ðfž¾Ù‚Ýçµ–36 (qéåeȧ ­5ã·åbò¸ö´˜+µ¯'Œ ÁYKã3hbV‘xA¤œâsS{å¸ÝA ͘ӡsìýo{]Ó4ìÅã´oWà–z‘ßB‚oèˆSè«+“Ñn¿Æ4ìíW¤^zp‚õÔ"IbÅ¥*«˜SXmƒ46½Êíg‚HN»oGö‹P‚C¼ÅU¸[:RÈñ©ô7ØYÔ¶¾šdŠó¼­VÑüÜ¥Ø>o¼uiXA²“¼Þ5=žØÁ€1äqO§æñýé¼òƒHý¥„DÜo ®›—E×c¹iÓË4°öï%h¯ðÏOc-ÿЂą¢mH=5ÑBÆÂ¨ kЀrVÉ_zÄ{)þ€‡ajY ªª‹‡èdŒ-þFP. ‡T[ï-hgL ûjré–XI-ÅÝ  ׂÀ;êÒD¥WÏ ¶K®·+#ûr šŽýÍñÏ!ø ÉÜÒ¯Ç1âÃÁˆ‘„ëÇÕí6üVþ· T‚ ÖíX8w,6Žõ­‚š$Å[½g}l¿'åw^åMZs D´—G:{¡V#'ý’„‘=cšwŸ~r†ÎÍ,e>“¡¯Ow~!BRöD…Hƒ‡àT„âDøh–ÆÔâÿ£]úÝQ·þï?©3[ùÄ ª ‰¸á‹ØN)ØȬǧ'†Ä\åƒà»OÑœ¬‰vä´Ša™yïÚ Òõ·Sà" òÇk8Ø9…’ƒ²(*«v ¶PCô¦äCìóã !¢yª4™é+>ª«Aƒ7gE‘òÚksŽ9ß«"Ûy«ð:"Îg1ÄÅ¿Ž<êü9ïDÈ‹*6Q|~qzÒ­ÖcϤ«2öÁ…±0™+VtàŒ‹ /a!|Nr« …g4ˆ¨g¦ò¼Ú´&ßÉ#V$°r•^°#¶ñЀï>G08 üÊÕî‚'¦ìÉ|˜3ÀÆ`ç‹5Î$GÄ È`H3qZŸØpÜ)*k^n– ç÷u×Ïõ ÂÿZÆ.{¢¦þ F"ð/Ù07ÓÆ_$dÜ/:ðšóÎÝ f¿Nf½ŸÇad‘PCþ Þ2nrzÍmV¼É`|T¦¥ºÝž'¦¯ÌÕnÙÅ‘K |Rܤc_Ö™Äò\| ¸BÜ„¡uäÛ8úhÏØO'ÒXDŽmŽÑ?pÒ.&LäŒ~f_¬i¶Èÿûò‹ñRІã^&ó<‰?ÂÖ‘|\”,ÞB—a\Œô‹ÂNä-PªŸÝÊr›+¹¶lËH7„^Ð|ÚÃþ¥”q¿H߀­ ˜Ì@­=ÎK±áb—€¼ ÷Sè­kµtjWƒHѨÿÍ a{Õáè3ñ_wþ‚Állx q¸ËŒÇïúØSÔ®ìq±ËtNUVçò‘K…À"¿g”mÝxR(Ätö˜wò¬1K`Ö1/Ðhó°—=X’4¨OšÙÕ•tyÇUʓɳ™ƒì™Ce€|Ϊ`¦¿‚F¢kjÔ¨*> :÷Á1c>ô¿hÖ1Œ•…på^+Õ\.Ïj Ê °áã.—@ëÀìÀ$;ùÑ-ì ]Sà[ý¸×¢¸.A‘¹æ_>‚UüÍ@L‹.¬v»ó ãöèíÓE¼2M l.–r´7m|âdÏ[Ó’ÉîÇ»ƒ?0MŒ´á»°Ž O(Ft, nÖ·‡±‡JàyaȆM…Ï…0ðnQÉPÓ@h±½BýqJX&]r‰Ò'Ý Ì¯£®­êÐñ/èœ8xÞ‹¶^BåË÷e²Ç“ÊCÁb_x¦CûSO{,; $ò‘O TP*íŸpç’BT's=ûú‚ G¯ •nb-ÅèU¦òÀ~;Éú$Ck.Mà®ã½`ð" u9úôuý¡ø&€ñªU•üz.Ç·ˆ¢PüƒõÆž#hèÔ²¥«Ü)xC’Qx™Rç=ž~Î฽Ҵmø'ô”j.»TÆÕŸ»ÙxˬOwè•à^×0MÊS"àUOhr‡|’ Ro/_ 'X¸ï‘ænð¼E"y=Ï'ƒ~/UÞºk7y®šN¿‘G d?÷×y •¡.Òᣦ ×{;Üuýø´"ž³wgéI¦¶¸z9K¼Âi×]{×1åKm¥ G;F"ì×®g ™*JŒÛ#jÓÛ*̃v'9WÞmICãÉ=™é.k G—÷ÔɶÀ½¥‚ÄQÖDL÷}§u-P`vÕm‰©L;kôXxÓ+ 2„}XϽæqY¤å×}#Lï^Иí‹ãêóuy ópúô‘qgL¡ImÛÈÕTÏ¿Pî/9´æüǼõÀ‹]®;íZׄ„oPÁDü¹T¢æƒ´:”|݈3+8îC(¾4ÖÙóßEw§­DŸEyöØdaˆzï¸.ð•)é"#‡±6DšÈ´“gt©·ã¥‰üj]‚o%.ØöÑü+/¥dÁcñ%c0ËÒ‡2‡ƒ¾Á+˜µ<Â&(Ö"î\Á¥9›ÌȸLÀ”ÿ1š=Àò€EI¦ðõÜ©çö6ìÐݰI9üM]ˆ-!¬H;9³ø s\­^ë¾»¯¨Ùr}M¥ƒ®"髪êÐÏI£Ð‚BB>nV–Ò7Ié`ý¸Jâ>GYXö0*§¶Ã§Å˜1"qYrXê†JVߖLJ ¿Þù}‡)â̾›†‹„˜Íð)]@°ó &~ÞÎÁ_“‡‡BDcÍs}ÃfÌz+e°iâÌÁš³#ôà(Þ"€¸C Ÿce$*éWð©ׂ©s|!{‘Ïš {kÄx)i¿»¤/j¥­‡V$æ…égxFÍ/+áýÊ9oÿ“ùØYwEøÑUô䇾 •—Ñ”$¨ž;9!üæWýe@!A` ËqÅMçã ‡AW¥÷þ¶‹ÿ'‚i3õAÑv>Lµ¢è@¸ÞE‹Õ£@Ò©—·CþWÿ¬ú_ûx úµÜÍj¬Ó9?ÔñÔ5Tx Éí„4œ4ËÄkÍ òcºß_B/Þ×n×AU;HÊß…Rulƒ›ý @}F是+îj/³Õ_ç·5rJ¿9Ö”4¾–2‡¡¡q¡{xQÞFâþÍ=#¯7™10A÷À#ršŽMø»‡’H›ó‰“Y˧æÏ›ºçȬ/çålì/ °î=ãv¤âÕƒ_¿ö qÆ%ÝhA â)ÇzS°.%c[má̆=Ÿï‹ºøPMVx4ü7Y-5ûvF棱Ü#MUrâ|‘·;Ñ2U"ðí/èi‹zÈ~¬‹IÄPî<¼­›.Ñ(LÊärý]±Õë=j ²Ù{-a証Eåi‹¥ðÐ ”ý4Óø7nþâ°mÊü….ódV¬!‘›ºƒ_hùÖq÷¡ÅüJfÆ•0½>êlu²"4OÜÕÂŒØ>eŠé{²ø‰ÅG¼§´ÛÞÕ9e6Tô”¼Q²g‹š–㶨gŒ€sÏ)·ðÊGn´Hò '»‚>×Wë%ë‚_îÖ…Q)ÕpFnÕù¶ô|vèúYìÀ W^ÕÌÉâôyŽ¢ ê¿DñøÿúC;^G )C€T ;3½ŠÜŽÏNjÌà Òê@ÜÖ©ðפ5Ót³ËüYÆù °ö4zYxØJOîäÊÞfé¢[~[:£©ŸyËzÕ ¿eؤaA\åOüÝ.N­ziƈó¯¾Ã—)v—iógÆf¯($Kã’Ýëü…ŸÑ—Ì'wÛ|É·?n㼌pšYÁÞ]V-ø…¿Ë'þ#^Þ=¡¹Ñ÷>Â`œ Axžo_’ÄÖdàôøI*ž®Lt;¶Òó^ÖMj´G‹qØ'â´°`[òV´Tƒš0O¬ô¤;?uÒŒLºü(§ôWhNä8—â¤ÖÏâjX»?­ =2j¾fñk4%mlˆ"j˜àõP˜nmJRjI-–bx#dcu”·›Ñ÷ž«lIã(ZL’¸šAô[’ú)ç°2Å‹cš»ãëÔah­ž³4x¦`¸ûe“õc¼ðÐå»AU&bÃmö²²Ð´ãˆwñÈwMá @‘VQíùAV@g•mÇ—ÑŸðMKl0%ÕïŒ ™,3G^üpL`JÚmk;…•æ®2$h“»“é©pËÆÌIH3Hzî ´¿Œ€¤z—K*Jz-ïië¹’~Þý;žl²êï8doÁzqƒAÑ’‡`Í(/ýíWê„£U¯ÔñÏþlà]a~~__ÄÑX4÷.ŒÉ jL ³}ëë=T$WCºþ)DNŸâø4p»Z¹ñP3.åsúh¼V–p»ÜC°-ã&Ñ‘ãýk3Ì)ÊŸ¥\leè5äÖ¶ùzʡԱò:Ÿ#Ò‡Z·½(n…tësžIM+uuÁó6ûWty#ž¦F7ÙªØÉ +=«§5ˆr«r€á(ýê=ìRÅRe#ÙÕ_Ó¡PÌPQ9‹ê$CçVýŸ¥2s$žrÜHH¤]Õó¤PAuzOÑccÁ½4!6ƒ ãZŒž+³hÕå•F¯ÊÄ?ßhGkØi¿Áíi)Ÿ…¸×p†Ó‚‹šn×Ëx[´ÎÓß 6·ÍM)‡øžž Þ.M†%ºW!uÔbù6º)!Ô‹RqFl9^19pö˜ÜUøR ,†àhåK°ÏÍ,vªøÌßééR ã ½œøý?—¸9«GœÕL!î3”2 èˆo<{½Hå6µ+]PؘˆO&¸#EåW¹œ@ò‘÷GFÒµ´ß#ZN0·|U ý¬ù˜]”ƒfRŠý"óKxô%2oDí€ûmD|ùi÷~y~’q\=C)Ÿ1¿0™¾ß¬õvÍÇ0ÞŸ9êˆa™r*%v¤Ÿ÷ïϲ ¶Òf¾UáÃÆ&B¼}¨=ËÞN$qCP>ä+mú ;`Ž‘°öR¢Óå…dÍ&#GÑÁrçÙU4)¾—1.GƒU rž>#ÖÜ–d×l°‚ùç—¾Nâh)ŽÇò’gž'*¼´ì‚'¹ƒK­ù&T³·Tç·-‡PÞtÖ`ók@ïVîuËô9˜ôoè×îBaØËÀ õP-¼¸ÚǪ”‘»ÐT^¹ÄOŸè€CPi¿Qò.ŒXIéâ·–¥¡«‚à]Xg§­Cºú—%76¤á ¸ò*ÎÄÞNZ¦sá/Ùû@bËlHØ0j*R0öKÄ0f:wª)gÚŠ[dW!qJ3ïå¢ë-å-(6ætw™Ü—DØ!ôªÑKµ.‡Z :V‚ÐƯ’âJÓI›O ½Ïx©Ué¹U MqŒ êãPõ— (îhõjнö 6ö›ôÔOf†tõ-—ëH<#³Ú»-«Ñ bÐFÐ~$ÜåÂäh˜¹Ò²qÂj£ÛæY(â¹ÒªêhK—ÁÅ™S}, ZèeHq»Ž… ضßoÒÖê*´FQ"¶ÎÚÛ­{}”Yu’ƒ–~»M±êû¬>Éœú¨QUºm©ñóÓ%{€çGÇî =ã7‰Œ1žtõÌ@å¼é>ìdem'ßRŸ4syªç ïÒÒþ)B]ö*í}ü;ʦ+šFNš¸Þ5'\>L¼¸dd=zÒ]f åaú*-‹Ž ¿µˆWR­Y*™³óYÞ©ÍG;‘»t¤ér9g&‘V›Éñ'jtYÍkÖWP>º á6@pÙÍw=nì8°÷.ë­e–À­ƒbèýft§í"²¹²Ì¼§Û«çݲ]ÓËÓïºLÖ4úäôÇ¢lKê©u&uóyÇI\àÜ&??ýIãfËæÞö«gpS^¸J÷I2t ‰µPjæõ˜ÿH¾Šµ˜)ÞƒãªÑ*ßìý«ÿ ï0ÅòøŽBG#£¾[ eDBù ¼Ý¸ À¹žMé|f0ˆÌn°4Sîz¢+é 9õÙrWýM=B …H ¡¢+ò<][þÕå ‚Ô"óz\¶zaž«ºrq¨7?:ôÒy£ŒZk³›J{ˆ÷ì íÓ”3lhuYŠÅ"'ÓýhÚÒå¼4¬ ;¿ ðZó?TÌÖy¾S!fSjGEˆÂøÅV4ûÆÈÊE_LãðЏ9ˆ<ÖÁ–+`ª¬­ñצ%>¸Ê¬¨g[ïËTëUĬQÉ×¥-‹¬\9…¸Âë j[H^M—#(õ³ ݺAû×þ;UsSÃî(Üó"yª4'‚•؉ñ¡TÜåRcŸc´ifIÄ7êà¾í¯rx431!(– /ÑÍLAo«ý^ó=f²€”õ2Õ ŒDM g5 Ž“!Wù UÇ·äb&ᵘú”ØN¸q¡0fžå3ö¨åBY«¦Å†$Û¶¬ˆß q‹ÿnÆ_,|âìÑGäú´`îÖnÜ[ÁýÞ㛜®\Ú¨P&†ÿf]MþrT9iÕß਀UµHânN[n‡:[-U¶ãÈbûœ!:3þÎzè(™f/0)J¬C§9®ó ŒKa©ƒÚ6"¸ƒ}êk(ªç8ÛòÓDD  §nÁ ,Õ€‡z#¯&X}™ûôc\ ŠZ4ZО’a{Q‚}OãÒ÷ORL!QEl¹“ý¦$hLµÕh¡ç°Æ0iÅuVZ¶`…ìàwYǔƎֻ7@ÓXçSCå¿æLàér¥¢ƒDg&$ì !<©*áÃnnu,€Uqè—rꀋ÷±chU€Én g±ùyR¾YÃlÓÉ$}œæÖ)wRsz=y–³ÿI™†ÞÝ”³1Ea™þ¡€]Ž ó«µªZ ÒX]…5 |Å/3¯¶}ÎP?ëÁò»µ92Ý­!V7®°í}Óó”#>æ‚é…I°F{LßÌ›•„ €\:òÜ)á‚W$ñ|#Â@ÊÅ‹Ój|/=”@61˜¯¡**ÄÖ¼NêÎ8‹ ¹¦êÃ’/¢y&„sÉ]|)3Zo-~ilxÎbÊ™êžÊ8°ÑnÄ¡¤<¯ûéÞi=À»õX±¨V4æ’7%Ý0Uý…Ül‹q4βʛ÷ÆS_‹nêéÆ)!=~C ¥$ \ÿ²Y©¿Và‚–qHvÔ}Dˆ»QÚ’J>Ä‚í ‘’w×PDü z hÛOýuŒý®ChžîñQ%<ó9kô'ÈÂC•º´V›%àXMÁMØgé^?Ø «¼Á:ÚrY„§‰…¬g§Ša…é¬óh”}®Yè‘Sg»íãÔWvêTyz\àr«éÔ±ã¶øÖ¥¦OZ06í.4.±ŒÂå#0 H:Ì6÷;øµd•|!Óí¸8bçqö¿{sd™SêáÓiÐ>žW’ÙÎJsZ½r3d7¯1EÅU¯Sóˆà)Jº6Æó/[Čڂ \sŠaG³Z†2~Å4 õ’ÔÑë¡{?»m‚u¼¿¿LÅ“ÉÕÉ>ì>Û|Ô&;<‚ËQðNWx|ûºV­NŠ?fŒ³'RŒ>Vµ ˆÍÚC"%ÆTȶuehâ(ôb¨Ù&tõ$1 €Ú<È$7´ãÇ49ìÞ·©lDŒâ[_‡U#Ô¸Zð!8¢”Ì)±Jd 3 ~ ¡þÊ/ësž® *'æ©g¹0üLÄ>ÓÄó°êjàvø© ãÞ°XÉ:<–Y Á›G%özˆL˜âåL¸F­™¦hÏ6'ýû¦¿‹‘ ZƒZþŒ2kiB0yeÛ$lwòOÍŠl$ýƒmÇ$ç[hƒk{"õåfÐBsªÛ¡Ð¢»°9žb¬†s†4%¢j¹¯…nUùÜ×2`…£Y÷ð]ˆØ´_áQaýÒÚ)ñà\¼¼Ýh…{^è–aR^ø‹Í­Ã`yvšÀál÷ô—@:o æÄíþ¢³¸Šˆ*Y§]¾¯AUº½lJ`¯Ë!>^(†åàÌ/rŒf¤#ŒV¤E>r_êˆY N¿Ó8-Ýøoe³'$¦ÀÓ>>“B§ÿB›Ïøï4WÈЊ|žWÐ+õj`rBiÞÙ ›~Ü ¢£Ô>bFä«òˆ`àù•¹aÏX_€§OêÄA4&µ¸"ÒÕÍ®IÕLV&>•º_ª_IÊ{`x2½Mا1þHåPêͽZ^[п§X€Afç›&â8üv#4Ìíûeˆ½Aîû;$Ÿàò;mL±öŠ—Agá4U1f ŽqlÆí/à×Áì€Óᢰ´µ¡L5ô9aHÁCk l±PEÛÇTR­Æ¹l·³_"2OÉIIÊ+åÛ5á¶@tÁ)óˆsµhb‚Ï*Ð_u Û‰³¹Ô‘‡ÒÈjÓ‹xˆ]v$¦kþï’v|“R ƒª3Ó|˜‚áþ„ϸ¾¡ @Y%çï·£çŠX”¨3²¾á ­°>ña¼x†ñ!VµU© )c"Ô}¯a*R2‹ËÛ£¦ÌÐÅKñ°ë€ºóE${>.Þs|싵ñÁAvØM‘颴?·<>_%OàhäÖïWDîáocÖ¾Y‡­õD,ÅŠV¤‚©'£ô&í¾<6Ö6~äû2³D“çµÆçò1ý/²DÑdµ¨Ù¶½H_ÈÖ*Ë(÷Trš&²)î? ¹±f•ìåÀ¢ ìb.šjƒ¯¨ÌT±!$oÒ1.Ÿö‡áwÖ¿\M˜;1?É¢YàJÇ“%ýæ°ˆ Ú.!5ÒFs˧É݉‹aÜjb.>”šQñy2û£³@c“ôõ¦ˆÞ»ï>(‰´Ó¯3uvhÞ—ËðfÕÅGí3E3îëüe,ðÖÿ?&$ÆCÐö´T(<ƒ–"s¹þŽ;UCW@½]tTúAó5kãL=[ë4‘ uÒa µe(¦éDòwyxË‹±«IÆ6*ÌÑâÖBQ8/urÆ'XØÁöÔ~·¯¬¨-fúˆ¤ŒhÐ|Ïš–ýନ?W(²–ú·*rv;@PØO{F¾Ê€Ša8«> &ãwèøZ€F³ž‚ˆ ›ïB`zl=SE‰qÁ±kά¹Vì˜4×=u¬vWëY6½¡fO±ãêÍ>¢s~ãšw€½w]øÇœ* -5Oã,ÏòÊ7B>(¿~R d$Ôøë·»ddØ~]³ –ÕU÷Ö“ñùë&àVº$úóø H¥¾R¼­^ð© 6}¾³œ—Ѧ¦Ð»ôX|Ú’E\ÉaU9­Çܪò¶À ¶JsŽ&@p~ãzGç‘á´Í+c™ÅÇhO+Jàu÷â›ô*ïWÊ=$ZM,7KÙ éÐòbJg¢=ˆì:+8¶àÚàã–M”Ú}ÿ#åí_jºWÀæÐRx©äzkÅD6Ìa…,Ý´d鬨6§žîßy\GŸ÷ÆØÈ"þYš¢b7-e¶Þý½ÐNìý--*"OEËŒ=ÝðGq»ßòb“ò%0-8kÝžZ8B‰,çøÃVÃÛ®ï¹ÈUæýïüw=&¸ÍJ¤ãQ5LE¶Äuòá•Cï÷&©ÀëÒÙ-B€cMá8²yÿ¦be}ýÁß Hï}%‰ÞÝ©o|$¨aæ²/÷ä6ëD(¼ÐÒS¯UÂn—ù¬’ýĵ1á¶Âݔ겪Ënl–úç»^[:få%L3"³æqÄn+÷G¸ca2=¶rø„rˆïb¸'ØøTDÿÖÀ»*|[¤AœQíŽ:/yÊxUÞŠ˜Ýd¬‚@ÍPU5÷éÐl‘güõÌÑÂtÏøï´¤s\'Œ6_©Ý×§÷§†¨OÇ0G²õ’¯É–ÞÂgcIâ6EÉß7åbá]*'¡º&‡‘”üïz˜i1E[@¹ãŠv€¦ææ)!Ìy…¬ÍÊаîÃp{ТǓ)í™éŽÚîÖä ?¯³+ Ï,EÃiQEtÔ R§àV›Nc|"æ4¡@+º8²˜ƒ *t²¼+ ‘éPÙdí^][ÍO`Åó¾êp¨núãIÌ@¢wàdœ`ÒùLኗ¦ÍRjªb=Í~™Å´èõçÀî®PÎ]P[ $0ï%/ðoÎeå·íÜW…ƒÀ6”¿ªíÅž´¸{Aö„öwÕ6焟VÉ•Á¥×oP¤hÌ—¬>Ï ´Ö1É/¶º0‡­ ØëüGñå!h,ü6.{²új~É–V ©˜g~’KÑ©åæ×("Í`,5€ ¤?Zís§[Ð3Ü÷¤ SR=‡æe.ÏcÿMí¾§æþ³’5¸e¾Íý zä(%!̸ËI‘Ö!‚ ¸6äü¬Jÿq?l¬)ÑiY)ª/$Ê_g_yÄ\ ó<ýÂR/ãÛ¢`Ωr!î @¼7ÂÀ(Mß-˜|p!Üâ¯Õb•B+p¯êÕí6[Ïõ¸âÖ†xn—ê繸ñKï=Î^i^^–ê#åûX1B¦èæ×(¿—ßPýœP?é™t±“)&5 ×˜„:uñXJë\BQÍr:餯…ŸV?’ªï®I É…!ÿ…ANÉ–<öê'Ìx@ç|t· sß  ýNsaÄËqÊwlvïÝñrØå;’'¨ÞïVN¶DÉð^[ÒCoÖ²…¿ë «Ÿ|ËSiÂ…õá .™dQºg‘í‰êÑt‡‡Ã©Sé_u  ™Ïê/8R_÷ò‚–GyãlF0®Ax^£ç¼÷¥º*æcËÑ¢3íBÄ(ÇJ ôÜYc±wnÐÇ­àêf±(·'v}¯ì=®ÖB tœ½Ði§0YD,¬ü0¢²ˆËq†Ž*xº¨aÙµÝ\8šûXJ–ÁÁ?n úH S ˜XGQÎè5äQÿ ëT[¦–¿^äýlÔÊï[ø¶?{ÛÃjØvz8ò_­$* ꘲íOü×ÍŽ‘ì´ÿgxV¹,©®Á6ß›RÆ¡CþDÓ¦Xå-ÈVŒúaú$ \wÊÕšæ–ÃãÝ Ë#²ÐÔ S(ÿ‰Ua Õ\Ö(„º!Ð0Òe{ËZÐe§„Ê’:¬L]Ñ>IÇ«H²r²K?,¤-Lm7ã“Èym9(âÔÔ¹öÿ¸8ž2‹øá,©9 2ü̦bF´Ð\”*N¾4ê§æ¬Bã@/W)€ÁªÇ)x•±gËêpܽæÖ~Ðv*éZ&`Ñ.w–/‡÷þˆ/íðH¡¹’bdø$M¥cÿ ‰Ãn‹E‹#ÍL.à}ÕÖSd¸tuâW'®yjØhêã×!ÚsÚCŽ/Ø„4g ¬Ú,oMO•¤ŸÂ.ÅRØ*Å(¶‘Yz.€ñZ¥w)œ`–䬖­yN‚EÒú¡KflÒ"Òž§'-œ"Á¦bšÊ“hWàÄðTÚ’ó $WÑžÆf3^&{„ÀiZÓÔh@ÉE”d®"kÓ>ýÿó+ý}¬_ªÔùlø:|OÚ)ÄÎ¥~~„J˜mf‹¤µ;gj©w÷"Wy (ós½[ÀˆàŽ\`¨J¶«.½Û„ðh…zÌ}ØHghÃãú³ÍòrF°òD Šë"(cDƒÁ“ÓWkÍ:uÔŸ}YD= ÑérüÃôc-ÌÑÖ\ªØ•Ðì¥ @j‹ úZÃÀEÑkÔþËiøDÖ£<|ØáÅåéÖЋ3Æ‘’Ãü¨ëB¡g±qîì҉뭬ÿw?Z# ž·Éõ”ÇMéZO¾À úØÌ—£õàŽ±Êóß_,ïM¶ŒÝ¡îâÙ®êÃ/}‡Â95½Ò¤gþØ-²Å 9õm%í’¥»fôqE/TªÓÔÉðžìt5(À»ÝÇŽ^eã:ÕŸ p±Œ‹›c[)Ÿþ7J{¿êÍá=i<‚´§vxº–­®SHfŸ;jÈÍK†"ß*æâÔᦀtóX òmê£ôK‡½BßkËJ€ß0Kdz JÑ7H^à‘«•žŸ|&ÿ¼@§®pcI|Ɔ@r,}¦ÉW—}ºŒ°/Uûß8hÎî²ÀMÞí¥fmÊ”Oê6G;ƒ1W—º±ož@Ëb®^(Œ¥4–]©Ø[ûüã[mUåhfVô¨(WÛaFå]«.~ÔAë=¹kïN5ÌhÇèÖ=L«qQ#mr­¸ZÆLˆßÃÚÌm*å~„»âžj~è4 ’Œ+GJ¼w»ËÙ´÷ *Tg|àhÆ Ï]3«Ž{«ú{M «§’©¼>• XG]H²~ ¹2“R†æ/ûÿ•E+hüs˜.ˆÃ°\‡~·Áå–™àíµf«Â¤‘·Î•ÀûîiWÖ°µïÐH°QP‚;ÑÞVtuWDxv!E®ÞöK9ÝKÑN|«a»¼ãjÃt¬a«OÁã­ÖXóòV$¢³hÕΕ¨Ñ"êÁ‘Sk74s\M–vb'½…O[Ö©ãx¡Êܘ”BÅžŽ'ùïQçïÛÊÖ©‰ÀŽYr¦Užˆ3ORô·ˆ;´4Î I”‹U^™e|cŽ—VŸÂÈ¡ç¨ñí% ^ÛrNUI”T%\qºxçòœY£ QiýoPZ¢`ºm]JîÉ¥-À|8{Å%6J?ˆ;¿¼JÚ0JS¨(⃿9'WK{Â%çÅjÕ e*éé (G¢§¸$ŒVìI=]Ò€á‹yŒô,Ø0d±gR5”Ò¤bžÛ5:ùÜÓÛɪ™ZÚ[µq!çÕµ1­»ø ¦46ÌH@ñM•ð–¯ÝÍUdHºäŸs¶QüäSŠßO°j<üYÀö–è`‡‡)zaC‰Ç×2Õ4ôŠå“Œ.^·k(€(iÁ– mßX6**©D„k @±4cí4%l6ò?'/¹AåëL™H¨8r_6`F:éòÃ廎õ¢Q1b+cj˜÷ÕñÐçµG‰›t+&Kpæ’[ýä…áA‹}¸F;Y"£¶ Bd“þ ¼ÐkPƒg±Ù¢á!½eš#¶ù3U³5i¦]ðìFŠS\BÖ¾êp „_Æ&Õ{¯—2t¶­ç`Õ@Ê€â×”AÝŸ…¸—üï‚{>wÀã%ÿ¤½+°Ø°ºúi„\´æŠø¯aýô{øÎaLq*x7)ô°˜éL@¸š¿¾ãŸá'!2~ÈO­Þ‚Þ:4àÉwµ\†}EBÖÅN~æ)ŸÙæ³0Sý•q}Ò5Zíg^éì+…õÛ°œÄO©Å€ë|5…» § (†ê£ëóçhMÁ­çqï¢W¿…FŒC0–¸[À¨ž‡¢øÀËgUb8+;„!È:÷ìk6”-;*y¤+26÷€½ÌžbA©à|Єªi¯^vý~ª-‹úºjB…’®ä¼—;xu%ÒŸ\˜ƒ Ó˜QѰ¹Ými¡Äê°kù;n›Àù×£ B!!PPÓutËh¯OÛhݺÃ_ü¨é5‡bpªÎ›à|¨‡Ìh®@€Ñ‡68y¶~¹úû–¬gIEãË| Ðßzæ·|÷s­ŒOòFÆ-éà¡{«WÊ©I&j·ÞtN®Ÿ7?÷é¸s1Œ……¡. Õdœ_'©ÿ L7ƲoÎÕ s¹ÕÊx­ÆýÈߤßå¶É˜£Ù„G'n~€]\ ¢ûÁb«O°{/==á›x+÷M†‡ \§Åv7·zìÊóºÁ防£d’s»”éiA\×#ÿ»ÉJzq3û ß«1×Iý4 “V4ýcia‹Iÿ®úÂŪp`çÁî§™ 1ε (RÑï ¿.yg¥¬¹8˦¶ƒ[QiqëhÆ)Œ;Yê*ºËÆåY—6â‚[0¾6LÙŒׯ…£CÏÝ‘=n*èæÍÆÔ+Ï-Z™z‰ üpøV‰ž¬®ÓßVÂdV´g¬YÒJ)˜ã†N“Ÿ&sÅÞû=;È­K’B°ýÒr33o芄wÄJbzd´ê¼ë1´ÍæÝåsÀêwˆ(^<.…& á (çþ µlo}°y9Ísªmƒ2óI|­ÝÒÁ$ÄÖJ&Mªgqþóûýºê!`¾þ{~×¢ÃKa•죲kEÏ5hà.R}'&ó߀½úèÆ |7xlÁ‹'p(nãýeúD äî0ÁZí3¡&Ôt>s²±\†kÀ=Kjáíï4i¯3NÒÁí¢fÄçPÃÝy3}~#r‚¯í¾ž£+¿Ý5•ŠKlÈMå'øe(¥Û48*rã~cK ® þûžVò1¶¿?Ð#$s£°°[ÿå ÆIH•ª¡¥çDö3#!f&bŠÓ2ЀKÇÌœé:n±°.¤W«¦fØÈ¿ì’GãÃlÅò"ø š!J…ÃT>ßvÌqÆ’@¦£.úºŽ”½~¼9P˜/Ýum%}†›gF3?þê-L®§„ÕÃWáè!;ˆÒÀƒ˜—jq&CwR:PÔm:,8‘ F“ÍrË]a%£ê#Ô~“3Ô:«m>6vëqðê&Â^,>.;¶ÝîXÉWm½à8zÖ«7ìk¾‰1ø;óÇA0—mÝmôt+:ü ½gsÂ*öö¸g¨±¥ÄbSÿ⡞Äà ÏÈÌáœCk>œ]1`5ÇîHÇÍ §‹qÓT>~uè×`åÃ=V|žq´*¤$xƒŒþ°œöA¾(†J²B —oØÅï>3h ©Û8!MFD6»TóÚ|´3QçSï/ ÈçîHÊY?'uGd+ñf:éŒÏ”»?¯ßdd_ƒ œî^ž¸AùP–MÛÅß’x6}l¿$•d¶Ò²yâ\”!ìŒO# HÅbÑò#£c†ÐMh¢Íœ]QAƒòlˬY «™bcAZKx¤ðÏ5Ï1”:’»ô(¯Ž/µÒj—ÒÐMz„’WD>q'Dñ<ðcT ãb© rã˜î,àäל7[Ü|> ô™f’L¢ù˜yñw¢?XÅz7…'‰d¸"xC¦ÅÂ¥˜%n½°wžr Šœ1Û¾…ÃÛ~xáz­Wµ¯œ¯]L¢úÜW \Á/­.8Dór_¸CÔtóN;£·ŸñN€IeóZÝù@;–ÃÎg ÅIÁñÝLšÐ$¦h/e ³>ª€`Rý„è¹°ûû*YœfB,éº`éÞ¡U<úF€u%ÿ÷朅$‹¥³yð€K^^±´»~zÇ àbÏoú4–³±ˆqï¤ùbÛvø0!øÁ°µÃqF<¦¾ée»yûJÓyÇF2§ t ±#ö„’˜mëæË1´5ŽNSÅTÀ7-¾Êé bKl{C¡k@Ì ô£2ŠßÀQm‘N|žyóž:gí¾Ðâf ïÕ Ëv<¿¾R‹Ž+[7}C#Šõ°£4Þ8hê3«+{Xm¥^Ìï¸.ÚÜ4îA¾[#¶h¥ÿ™Ubíã½w×JTSw{¢Y+­ŒúÇêÕoù±†Wâ"k ·zç3ìOw«‘ðåÿ¦€&2x_¦-ª<÷÷©Ès‰Óš/Ð%–jÝ[âè0ƒ;“Ù|ž&ص(@pylHç4‹-s}À|¸ãµ1¦Ðâ5–"t.-"õübR“€V–)«È ‹į†µÏ±š®4Ô‘ß–ô%!Œ¶Cñì*ÿlzðwùJEK¼.£¬fI FØu< 2E€ôÑÐůºÀÞ~­M–ºÔãn:®#L>°³~ŸøtD?iÖ’û¡RŒt7* ïÏë8D8©ô‡° à~U³8BžŒÊe%ˆ_ o»ãæÜ†ÝѲÔjš3“—Ü'àláÙd6qÜØºØcþc”›¬ƒ°®»£5–¸ ¿7‹•äìD(´z¿Þssh»/¡Å‡Éåô[ì‹3_£eÂŒO©z¤ôl‰}ªËFüÒØ†–­)ãè3Ñy @V Âdú*±/^‚ÑtŽ{€>?ˆfxväbíªŠVäJò$:¹WÖöèK±už4pxîùéG¶‘„4¡×A£°É@“l!¯,ÞåÐ,iP’X˜2!â0½ãš•*ýëPBµ—™"  -Ë"5é«Cvº9)}ÙŽô÷żªˆØ7èÈgƒ¤ã[x"x„ŒfÙ¨j†Óß úÓ:"Û"¥åaw‚¢¦ôE ¼Ã£ ¾¦^üæ€Òý¬š¼÷Cì€ù7f2|€š±sŠ0ô<Êzͽ_½ZÿÊRå#À½üáw_÷¯æå¾ƒPþ`Ò¥âs¬Øm¶Ðõkè _0[r*UÖŠ„«"$EʘM LºM¤=d -rÅë4ç’â.ºð‹bòûÁÅ—ÛnX¤¾ô<'WðË鑹aÈ[.+@¸$1ñâëöåÊQæQ ÞÚYȦryú!Ø£Ž1Ran—€ýu…aá¯»Š‡<  ]0¯ºHdO »·Nϧ#ÃáÉñÙ°Þ>ÌÁ“ c„ªAó#¹4xì:á/‘_ðù”3N:(/ä¨lõk1Ý‹ÖdEŸAü~8¶’5µÔðu×z=²'©1ñútkY:Gp¥m¶n½_½#ÂY¹ú\Ï€˜UéÐ\2ýÜG´êƒ|ðÎ H01žð7¹Yì –Œ)… Ú–(LQ³ƒDÊg="?æ¦eL‰MæÅš7" î4¦GÒM¼ß0è„þ_h.y6WÓmqéå§gqPú;… õ3¼áž½Ta ¢V"ðQúc æµ YØ8¥1{&çCaêîøøÒw˜&w›YS¤œA]î ø´C ®›i]IÎÜñÖÍÙ¯wO0-ï Œ4”ßW$`8½b‘\&îÖ¡·=8yD£s4ÆÀÂÒÉHŒïž¾ú&‚ÔÍ®œpÞåÒÇö3+ ÙN& "=Í®$°ð¢®¬_¬þ‰P—“_8®JkÙeùØ9÷š›}ÿ\oKÍ5¶ØNמåhÄ0L‘8õ;ÄÅjú½ëª¬ˆª”w´šÜÚxT’»I6æÖf›ÑòìÝE¸í“|®& ô%^v%LÙ#gp¡SEŘŠsdY/a¸+†IpxaŸÅY~Z9¢fî#؆M;k¬éÿpàÑPÜê¶+ÞÉRòÚê·bøÇgš|ki¥4庪OÑV˜qè›&ˆÖ‰wb]íŒ^Smjx/"@²'sø*46[ge[%Åí2Q´x…t†üö‡Õ³v¨ö,;ZÒ«â‡ÌÓ ó׈ÆGÏ£ý/¨üb¥Æ!°yü}±ÿoGî-X'C]&©ý‰Vo÷à<þ%–3ÑKç(£^ž¹g•:ùàiÜäÔ“¹¡…¦&uÎäïî„/×[QlÒöD·Üé%ñ!8i2Ê·h8qz`3#rš«ËçàX…–§"A¹ï }âc v…,“%Žˆâ¾&\ªfÅþÓ#Ôªˆ“z-¸–ã4³iÅAË2fcÏÅŒ¬eDfie˜ÝδDJgPâ—Qå*DI ÛL±® •Âøµ©ÖR$ô›d΄N†±*£É˜zÑjÞŽ’E”%ÔGýõ\eúbU”R}ÖŽ †+6è+3¶yø,¦½·AÖ"'gDk‡ð=–Î;tLHƒÂ¶afÈwîg¶‹ 3à82[}0¯Ü‡ŸÁàÙUùi+’Pï¾è™jƬ}èÝ´f]lŸü‘ëÀ_ÁÁ|ÀÈ©²‚aÞÏË­§â¦áªÇPoÜVÁŸ3F@O}ÍiÄ /~¿ ‰—·@vƒ’Kƒ’šB™nô lÿ¨›Y#q6³§/#ñWqÞÂÂ:::;ºì*i Œéa2Á9tËœR|4\žwí îRìÐk+Ôó‚pz¤C,,½—¬„ç6ìZŒÅê9}b0ñ)fn¼ uQË[…žzîð>Ë©2nr£ÖÓ+-†(_Éb׋MšÈCý¿ëA™M´é|ÄPôéµ¥´nèÈ"ˆ4GŠšÑñv( ü~Ë{–á´?о_>Õæ[¹zWÿÄ‹ áÒf'•´ÚÈy%ôÑô³ IÓs~Îÿ5ÇŽÀ$P£8ãà óÕ,ÉQ°æl xº.ÊLXâ;¹˜Îg VŠ \½^ãŠL|×Y†I1Ðñ¿¸y ÙCÝ*-±hRî·†reõš·äÊÀç¿fAßK¿˜¾r>±.Ár ¹ïHqOb,†[ÉZ†Sþ•Š?¦«ç±°#ȽYìãô —Ùkêêù­]Ø€6†Ï Æ<3}æñ"ƒhø#à9ÇÔÄÁ”4BGÑ[nÇ$¹ã›¯ùêÚûÆo¨i£Êµl×uäè–v̪ÇÆ\ã”#Pî`!Ò¥ªùœ»£9i‰+?ú{yâHÿ+çP 1‹AËý‡L´†¢¬˜‹Ú Çéô£AÎ{Ÿ½‰‚ÑŒ½+÷Þ4¹IãÜŠñÉqó]ýdÃâr©ÁI:Ž_¯Ó%<äi„”¬Üôø|—à9°y©3è'vdñoT5É…‚.k´iºBý­Õ½¢fÄ%&Çóc×0ßðD¥€»ìþðÕ µ½·R¢Ma´U…Oíã°˜•¬ÿì£ô™.…éŠÚ?Ži­~Ó©» HE+3]U`S0›“5³¬%(´'y‡Í í¢G¬ŸÚ9 rú hRŒæžv]4Ul9¢§‰a”¨·ÔËáÛPðRF \äMVãóP:ùëö’gíüá¹zP(¶ÈÊ'ÄÀ.^›%E·ÉáT©Â:SµÕjÿX>î©€à„î›´ ÃŒÒ©¥¼Í3-±¬ª!hhÓçF`eFÅ’¯knÁ$ N9laL0gtŸg©Lä&Ua¦ùšÕñ`VW®‡^’_ä~3=;öÏ"ð6×Bb^oöVý@QÇxìaË;¡¥…!›Þêvêoà…º}‡ìi›È{Ú•ŒsŽe·VC¡ÃXÄœFœ¦f±‚3¸d`8"739‚l÷QØ®Û2ÀÕ…÷WÊÄââ×½Àž¨!uu•]ÏØ ‡mÊíáÑP‰¼õ¿£,‰\ê¯VÝý&^UvÍëÆå:QH]Hl·[M,‰¢ŸhÐl†f?ó6jËfh<øÝ^°ãSåùûWnĆzÙhšÀ-ó.ÉÕlP2m0ÇÝÅ\ v> € ¯¶Ó+ð‚9½p¼Ø0ò¬CŽc.8À ­œÏFägõF fKf)CT§ö±3~„º:ÜØ^¹†Îò@u .¡­×l<ιä¥&UyŸ™‰| åäS¾óâŽ9/‡¹WïFb£„‚`¦û ¸ù:¿C#6ˆP§-ú‡ÌÕ†o˜W€—×âK¢ Q (‡z³žªr3þåÛPU(ÒÔœþ?RF’9Œ†uàÓ› „r#¹UÊH žÓž{RhYï›d»¢Ü9z–¦­è ¤7Y¬«Ö‰nãÁîë8ùš{ær(3|¯ê´ƒÚq°7€ N¨ŒöÞ»u2köÇrç–Ð÷TŒwÃ7´þÙ±[¸‘;iüü£AÒ£eP±S¾ù¤ÖäJßLȃ® þZ[-{Ìé²PÅ÷"»>û1À´ŠÔVH‘Ǒݥ7VüSöî¬À3Ú|ÿº}V\®‹Z·fÑ.=ŠZu¬&ì…Ñ`Þ›ÈË’mÊ3T¿XÔyë˜pZ¸ó`•JrŸ{Û•Éfi Õ5fÿ>bk­ªØnÍ4îòñ îÌ!<5@·¥µ¶Œ±RäȨð l¿ë€„è¡Ï”Š©Ée¯ÞhGó9D~‡Ï¿S¥£ãØüA•‹ Å'Œçõ÷¸p²Üp¯d%‘ÙÆm‡ÍcBäIÊÃ{Ô‘û™2!ªË Ñ[¿7þå X}ZRV÷DOÀc’”sÈ6aE´°u:áÝ‹.¶’™D‰¿§5ÑæAµ¦Äc˜Ù.ÌÛ:Ð÷É  }Ë ð@ˆn–Ê̪츫áú]÷z©ìÆQÈlïR&bí*ûœ»§:¢Ê äÆðîlfsÜ]è0{À ½@˜ j¯ äQX×kÃIÑæ^¶ÔŒÙ ýÔ³›tø‰Š|deg§KwGSP—’Ì!Úý&nZwXÐ×¶ëÎÌháTAÖ¤ÇÝ;o¶ï^°`‡} ^ﳩ1®WsbÛ= Þà‚XƒUÙ"Æá¼ÇoTÇ ­¶³¯Ò胈/i¾i PÜfc{_ïŠñ,&ï¾R5ƒÆÒ:Di1CRD4…óôºã?|϶eÞ‚Ù½ˆ¹äœ Ÿ;<[zT'rz}-8áj’ãáëÔ1eØDk»ò‚3þùWaÅ5ßë:ë‹ð3çAöo 3Ì¿÷“òGÄN³g’ÒWæ<ÿ…ÓJÁ7㎰¹´ŒÎ#,"‡¿aÄ#´Ø”úd,¦Ì̯pÙ~éÎ ê§ 8N¥¤û®Â. ºù:>B“UÒüˆ * ï)7•8NÖüSå¡ây­(0Õñ×½ýÉ X]é¶Gå3tÁ9±%ÏÉ{Þœç$iJ–µ[Y;Àí©øÚ2#ö›¹~‹'ó‹f+¬œ!݈¸ `½'ÉG×ÅA¡ÜÓò†x^ãÅIuá% C@’­Òçs_(N’›UƒÛÞÐM°9›EuU'dž!*s…2ü€Øù«|–#Qˆ]`ÇDž€Ÿ+&{ zŸ$ óGß Üœá×nXüªûµG4vA»%ÇGctTgø|P««nÑßãltï·ûF¬ƒ'Ü´Ys8m’žµÿï+ojü“ ÓópÜŸÁ”¹ÄÔ,x¾õ°TZÈ™#õÃaÿ÷ðJiڜ֧º?Ûlj]²“ÝfÜ«Fzœü0µùû¥<S–¶F镼½Fâjø³Óú„lX;`âž4÷lëþ#˸60[köK´ëFE2¾)¥ê‚~Ô)õPB­¼UT]lÀê±ê\.^«,ù˜ŽDÂq2iA`-ÿêŽOúYPÃÔñ¤æaÂV”šŒ]rü1(cÃpšþï{Ê´°XòÆÓwå2I ØZÑ^ÊZë'Ô@°ô÷.ô0%BûHžÏ.º:º0âh{ ˆ/ÞXã ñ½€_ÌCçÜ<’mi>^ JÂ-” ËYi¡!×8÷hüBh»°ˆ1‘9QA™ ô’ï‘ô\Ú™dË¿íÔ½Jî¸tÕF‹<í@fqð½?Õ/4ÒAWÿ &÷ÿ,¸º„^.Ý7oá¸25'VºàÌ1 Ë´…ìÏ™=j([.<Ò­0ÀVÈ• o6)j‘ý#×-Z¦Äm5:*0à¸|ÀÃø°P¨2A€¡)EË#¡lp¦J„áX™7ñDÍ¥î²ê„©ZöÏÅ›átAÈ™ö²Ñµâ ‹ý¼81À¨r™Ø½}¡ÕYîŸ3Q7YS+±ˆÆ•€Áw£;×å4¹¡ŽÎˆ.A$qTÏœ6° ©P(þߣÚüòô’¼µ£ßXš Š;žÀG±ñÀÀ¦'¬ CÁ×ñdãª:éâõçéV& "wNBmAS ÏÏÏŽdðvC›ÊŽg´s²$ŠÐš{ô×C\ èÑ gÄ%Óç¾ÁZܽ©Ü†¸’UÑUV%Á¹áäüÂÎnÛ}ý$‰¤Âü\îG ƒÀrStÅ Q+×”1ât…;.Fîíå/°Î¦9Á‰ Lu)&¢èyƒ²Âú¯aùú½g"K´â±ÉËÙÃõ¤ ©ò »ŽM¡Š ¹¶é8µr3˜¬hwLbŒšµÅ7-2ÚjrÊ'nß± *é¦ó¿ëJ2ÂðRÉqÝ÷у3P…O}hàØ]v§)€bva‡ÆóÇþ÷ •(I0iíBŽû•¹›órqËc?ú…-õõs4€Ÿ;Y½òµ|ÛÄèl¹Ê©Õ†œÔ+¿h“üeUoß§(.}B À¾«¤œ'šbkÖ¯@ÖÛo"RÙñ.Üù£„/¡fŸlóq“â.}ççá=$8æ{vÙSÝ)ÀŸÏ2'#Ê;éwÑØ0èÚ `5*Ÿ~û,Þ" y1)ucTeEÇm×j ¡Áå‚ÄÒÖ6@rpü9‡¨º ¢ sדЏä¯Ü!‹|©ãOà:§=@1zE‘å…–`ÈšÒè¡ \ò‘ˆÐ.¾9ö{èÙh, ‘mti -êðnâ©óê €UÓ0I¨)Pfœ ô²ªc457òñ0͵yíW…}Y¶8ø8rŸ‘ dQ£pªÛpàõ~¤ÔD6´ÌÆÑâz³Ñ0úÀž´-®š óår}QÊŽË*£çPmÂC¶¿3¤ª×±|2/N© 3ÀwÆ*Ó›˜Þm¬«bâ[Àm»RxY̫ذ4X¾ —–L ýT­ž¢qÊŽ#¦¤R¾ùÜ - uL÷aú¨)°A $¦ð …ôÕYt éþOÄ~U-–“‘“ëvþ=¨Š0¿Ò§Ýòƒ••¤lbc_}6" ”Þ[èYÃÌ(n´#‹ŠWá2|å;èkmæÂ’"±Fº_8seFíÇ~ݹi;œ¥ Ž7ŽW@bFÚ­®q›ÐýbŽÕ&”öîäCRƒý)áòF>2æ»!@ ‹|\5,bæ^¬Žc‚[Ö¸jÈa¯Ñªò㞸²8 DËúÛL§ ’ÖïP]©oåþC;UÔ¥eJ·k2P,nÚJÿZƒ¤3L{’ƒe¹~n­‰2t·›¨âÝCÒ©›Š”Jð†G(¸õ<În÷Ááò@HŸâι?»(6]UùK7AÏóL¿løÝ™‚iÃâTQ-WAÛÔ-ŒñG]ƒÒ2RAzÁL ÇŠàÛõª)ŠFŸÚmè—Iܓԋƒävp¨Þ#‚¶ÞnâÄØP‰º^Cv¸gíUdG0ûY®{ö¼œY~D?Œ>¸AvBNtôŽ{ÃΡß/:¼²4fy¸þèñnÏ;JÛ*ËX-Kº€ø,”Èy>Š@Ñúý£«`¸md¤Hû‹™£²—¡$ §¾^5’ ËÛùcÊü%^2¢ÄðkB–Àõ¹yVf@=³*Ù5½y²C%}AéÕN{’’é•á‰%þÓ€z*t!©J˾7§œá}øïaˆÛïá–úÍ‹ÝMIÍµÏ‘é‘ ­`uЉTs£ ˜á#—›¿øbô׿Ü$å7.뛂¯‰m MíDw/ñ{—I›Â6AѶ°êe®c ƒ¼ZØúßb[Ø–†¤m ‰mX`¥a‰¯Ú©‡ð×Ë[Ÿt°GE—Ó *¶ôî.gç‹—ßyŸ[Þ¬‘Õ !Õ­Omº-m›á·§ñ.¥Ô>>vVCíG•Ö *U‘O¸,1GáÊUØ…¡IèçºFZý¹Ô4\B`Òy Ë"~º^>@ä[ݳ}{ƒt[ ùK˜ì±%š,=êUdiZY—)–ç‘ÞÍPÿ5õÝÿöŽÇfoǤ/H°y?Îñ®n6¶i…‚Æ“~7ÕǯÜ!˜ úȱŽ&Y'{´_–­Uê´Qô•¹Ü»-«Ù>@LaurÝ:Æ~fù¢À+#T©C4Ý™r¹Š89"â¼’o&xdÅdÿ7lej.2ée‰{.¥áÉ"%tÄEœŽŒooJÇu…Œ®·=eÁÌÐØïÆ¾ßO´™…w{¸èè\J£ŠË3ô;}X‰ª ëçøü$Ê#àʬŒh‚!~4Ÿò\VÙF@…s¡8€jIá¬4¯m‘¨{±ÎX\íš]AM´` V/:™ Æ£H~Ÿ³ÏnǨ©%×üŠ8eÞ¿òô?·kÍâÿsv¤i\ä¸ÒÉ~ €?4èAXæ*‡7ÚÙuøpÖÍÒr Ð=_‚å•û«åmÊï+‡/À‰*êk`2‡ŽTx/ÞÛZð«%3ÉPͶ:ÃE FO_º¼–zê½²¹Ž¿Ï?Ÿ –`†â"áE\î™bèAJhÕ»5MJw»éd|”óE§ áaoE36Wõ4•F\Ý7.YBˆ2Ò?ÑÔðå¯îÙ%§ò!‰ÑÜÃ#N‹˜½z[Ó‹ã¦(u‘¾‚ƒflÌ™¦±ù¡¿uâXëî™=¬ÀÛéx“éGæ±·//ì/È©ûë®JC-¤[vC¼¶g•:—1¥ÂMoâ8©cSq°ÆßW7²´4M®ú~ö¬­–"©àCãþÉî8Hê­s˜“Úg5Gµ?½oûºµQúh‹"í XDc¹esic=Å{OìÀºïSþ X$ ž°ÁÓçÚ]œ„-v@}0s’ œ³c™À¼Ð8X³Õýò‹¨]~#·plÏÁõ˳ƓŠ×š7ø¢Úˆ«nnp,ëÙ)Þ5-óK¦ìHÙ]&äìT੼º¸¿‡ñcåcç×øä—¶é¼ÃÛͬʾX²¼Üx óóê¨Ç࢚Êó¢t –,ö‹ª'‚é~‘Ò†$o£n˜¹ š?ðB1 Påg{bqËæÇ¥yaùùrì: °G«áŠfu¿ðŒ¸öR©-8ø.¸‹Á~³úùàÁPJ‘¯Ðòý°úÎlÛËpÎÏ‚I£•e+ËÆDÄ91øþìœY\‡¸–ˆîfk‡ÆˆÿEs OEëÎÙ¼ÐÝFšqý‹gRÑOt@¾ßþ·À ¸÷«jö"N«Ïæ’·,©ÿáÞ»I­pnái@cs|/{Œ‡+ô´g…òM?ž|ë2¨.è^¼çŸÅTjón 5Í Ds§ D ÌOì(Öx¿®þÙ×F©ø?…½”ÝW@¿„äý«2 ¼ôÿ¦XQ.¦ðX<“ٱ̎b%ì àzH¿BÀÅ?ú}•Q,2¡A¡7Ö=^Á]–;å¦<ÞÄÂVƒûÇìLGzÈÙ ˜nAþ3òæ&üØh„Àó² 6%ÝØ(É:íWpûAÌ)R¹4ÁGϸ#ØŽ{?Ë1vë K³.ŽýœAqqv”£Ý]ÊÜá~z®7¬ÚÐóyvy¸Ø,u™ÞäUigñ¶hz†eéNU“ż%&'ÏñA\ô¯öIQ–Ó<†/öíuLx€õ«hÝÏV†·ñìd&á²C€c¼Õëôóÿ[¸,HßEÞ§áúÝ{$­ò>¯D Pl½µµœ36&ÌçVÄR3ø³§9ðwöjÓ›œ{Yeý.èrôÕŒjÀ[¼Ú$*\g1i‰\³¥ÝàçÿßcÉC|¿V ]øÃiP%+¸Nùšýxj¾hX~ζyž9X¿µÁËŽõzo4Ìj }D J6àa8ÎnòÚþƯžá‡olc‚Ih2‘,`m(IÌV>¡ØÞŠå –êÝtÍPoÛ¼û¿À”™X¶–.(A›»ã3ñ”D›0(¸ ±«ìS1pö˜"ì&»Ó¹Xk °ý“.©)Ë)N‘0„¬§?·¸§a¾?©è-²0§&¬wt˜»ž_—œçÑÂ¥Ë#3­Iëõþú¶Z“ ³éÛ\VÒƒ½‚¤ýZò'A‰ÎË~¡ÏÜýû_&èÈ$¿Ê? „Xú÷×U±2}{ñ÷BËÊWRE# äX·)LÇ~8±D“*W½|Ã,’“.ï®8ÁcVhÛ\ϳ·J)xO»º©ß§;rK7¹ž•A5ÙÙqˆîMyË…É/Ó‚m:M8ʰê}U;ú¹ô@Ùg\N¼àÓk#1çòéNYãƒô øOÆË9nIäÚy… ŸÂ1€ïJwØF[=Cê}ÿ\Àuƒ,Ó‰˜›wt·E¯OH]A¤h/«(! u¸dÜ:ñVC]Q(|'³ÈL­ÈCGö†[nJ€—pMÁµŸJ¾"ØE­/7&Ý…ÅN'9_‚xÎ]üQõ­(àH^ŒÒUòXÐêYN wÌ’KÓÖ¯Í 1Åj`1T¢»~b”œÂ­¾ëŒb·´M,‘TW¯NëÑô²ECF¾åç¦Ù¶{N¾‡2¿§ÈpÉÝphÀ„Èí_ÖÇT]M›ÓYM™€È2”ûþ‡ÂÂ/5È+N3ö©k‰U’ÙD•óʦ0"„kT4ë‘ÿK/?̯›‰A¶mtåPŽÏ§ ! à¾*|‰Ïíæ#çÕå3‘7ã_V¦"²Ìyûkßd^ÁV.T ßò¬(ó4†òY¥tØ|®N›Pª2Ýý¶&qóLóìÑʃ‚("žŠW UCºÊÎÂûIª¥7Pµo²®dÈ0ÐPS’¤¿ˆ _-¥4±ï¿¶ð­Öz„†u®Ÿ÷ŠÊ6Bh¤¾åLt}³ÍóaÂo\x/Ø+¡{Snò[4Îlˆ¡½\âv¶ ?-Y9ÛTJ×4M 2Á:æ0ƒå’°Y;×'úò7™\B³–Ÿ“£¦±BÆSgä¦QùÜ^ò`w¸è`Xš¨t´©µî³ƒ_§¶ìñ‘–Ò¹±L©9}¯;"_ÑœGƒ·ŽàS–5ï·l4'~?0[¥CкͧÔw„°¢–ƹ+÷`*¡BOkòH·rÛv:· „Ýzþt§ü„ÌÆP7À¥l%öX  %—ÿÑ¥Ov£Ê*(aœ%4G¼zts-¨ò“<…™Ä02>Xuš;L$˜Àæà߆ÊËAKC´ÿSp¦ß©[­5öyd Û3:q룼Ü)¿@ÚÏ/œ˜– æ1"jS¦&ˆÔòµ°• ¡øµ|µyû×{è±¼ÈÜæ«§.ø.€ˆ Èô>\ϰ_ T"+ A›šùwO€zDÖÂñµ××_ü‡ÏXV Él= â`ÃX³Á{Õ\yÏÊ6ã‰O]Ä–šeä9’ÚŸ4Ûã 9¥èrf ÿD Ýërn±í¶ eÌö³‰uÈï™ÐOµY޹S‹E±„N–ÓÁïz—8ŠI"‚L"ÌúnïçûÀÿÝò°FXÀQ¯`ίßàX-Ø$,£ÓúD¹Lµi”PÝ›àýMLß:Íx)w²#9äµ14ª¾]ŠNŽ"ÀmD3½¦+9fÍ™T¿óç»`ó´àÄ¡ÆyÅîŠYÙú7Œ $4€)hÄ÷Á8w‹yàö˜/a±õŒ˜rÊÀîA÷Çï•­>¦亨××ûº÷Q78ævqžÄGY2—*T,•r¦¿š÷ïÙ ËgÕghû>W˜Æt€†ÖBl9JŸaïÿ× øé!)£Ì3v“)ÓY5Ú!•¨VÏ ò†ØŸƒeC[Ź®ÂÚÌ&¤€«¸ÁMïå°ÍoÔK/ž€,²J‡ W™r™³<ùlÆš í6“Ü劭PW7À¦uwã‡beBSê»ÜËVp®kø%Ö$Ät[¶ alY÷¬¿‹ˆ4,QxµmѬtšˆ ò­â8l–“ËöÜ=zÄd¦Áë3[¯[Þ— N²;ÿEœÍ¨|áÛÜR|èÈì†>£Æî4о~"›Ù"œìërÊp!$úF|š¡ˆITeHŠ/r›9L|X'åm”GRb}ŒèµHŠPX-+=y4ñETx‡pÍñ%;uT;@Iûj„pÃŽ-kFð B›d°Ì~ôFé!]ˆ;¶B_Ô~Yüwí›_ R7O#‡|77{‰K»~5F‡În-Ü?¿mCò-®8ÉUç£ÛèeürèÌñ—Ï\ß<à'ChÉ60 a^p?ޏ’€;+’»Ò…)oæÆE8ÕO¸IØ÷Bã]KģоÙ-ÇsÓ&*àÁ/‹‰®ãW/ú=jVeuR+·P1¸¤•Ùg@ X?gª¸íØð1 Þb÷„h5§°uºìu ¤`wÜã.—†îb’XÍ鱄 DÝÕF/5¥ºõ-iËÍC5dÿõã'VÇsßIÍ—I Ëmî+»]ÒvŒ|PŸ›M1tžç¾BWbêÁh§Á5¥~ßý¿w"¾ ©†ÿÔ8gò©Eà‹Ys ®(ÇI¦=µ(™ò…þÇsܦ«›cæ|À–*B¿kDY2(`¦ë›…iˆÖ™™¡ª›«Rà7´ò1€¡2“ß gÈì‘òàiuͳߌÔÝ}ĶtWÿƒþaño›sïòeÂÌ›R<ûË!òÎ{×õîAKÝeŸ9)5›éÎGHˆÇÕ«ß~'z"4 Oõ_᪵•ÆÈc.K<44xŠéa0à(Pocä–héüž àq«ð‚ñ@Ú·ÖdO¬°f»¤¤«»u5eªi}RëZ 2Ü€‡1øHlŽËä–°„kxáŠyÅ;’!hTðY¶Â5¨@’c0£3»päø Æ©D2'LýU©][‚ÙTòüÒÄí Ç'%ÑÒmÑxͼxt¨ ¹IÒ‡gð?ò=ZGûÔgœd]®ëÐ4q°ÃJJ>غ€ö üÑ­û°eè…ð‡ótú¤îÞ50쮾zý&[8GÑUJJÉǀꈴŸL^çàâ†ÚP“íÈá¡ ‘ÒÇ: Šûóô^Õ§‘á‡Ã*¸-LcšÉv÷(žw:‘\ëYñÃÛ(w {OT3 ˆ Ý4$Ñ(¯A’g^ÄÐo/[AA׫$TG)_ªb9hº‚cJ€±÷îõŒað°¨r¬$‰P©þ 9¿—³±<ÉLW†öƒþu¦uªxS ði7Iû Ä.‹^.’ã L8>TYaÆlÿÀ˜þ4þmGû2J_ªWöÄ´­”¾ÉjF»?õ|ˆõ–0Ñ Ü÷êC¬ÝÛÙÙjD R×Vdˆ—•ÿ«ObʦuûÐ}Ã2å&Ê_¤ãvÝkjˆ‹¶BHLtæoâî &+Ó2¤~=ƒQXš](ŒÆK0z”ܾFñÁÚ}!£õß—þ5¶"À á±2cƶؕk^—k‡çck=‘Œ]uYlÛð†–³‡ë±fœ6—Ø þÖáGQ»ðÇMIò»nÁý#Hýø‡V•ð8¨%°mÂ>{%ɇ \/ª[ØÍÇB.ÎÕ‰L³£[.¼«ÌâŠh2Ç֚G´y%0Ô~GI%йì²p<ÃõDÞçfK`rïŒA)ôlªZiس˜L*UR•Û DoÄžŠ%üt‰×O±rJ¥*;Ëoy†>aX€W¥qx4¢ýLôšëèmC6!ÏCzûÃׯ – M”A’ÏÞeÂ&7ºYÑ}t+\Æs޽ ]2› O†JJ¦3«QüI&ä“Qu‘ò ‰W–»Â‘?Ø¢îO¹È¥YdÅÉç©WÜCñOHZ˜/Š3!kÄWÆvÝ'#ÚtñË[,]CÓ¾ØwGׇƒ?rò6©¿Ï+ ËîêZiK èilZJ%2 ²Î^+ã({Ï2LI`+?ODô –ø ´¶ÔN1BoE”ÉjØFøŸaûúP¡G^F§Ùú¥›Š7G‹`ć qVÿ¥¾g1Åd2a øõŠÐÁÂò„_ÚGN!®BòÍbªW]…†oó˜d”%²˜%C—üú¹·I—«¤ “‡0”ç™dÊR²í`ÿ¦Åajè€öl•dbØc1=NVßu\Eo«ÙbŒhËqÓ (Ç¡ ´;6oåæNz«Péƒ3ó·‚‚÷¿HʲEòBÏj›˜ åa6¿0ð~Hvå‚ôJ*r.‹Ad1‘œéhpH–÷Þ× ÈÛ¨C¶€ažÍÃh ò!£v·Â§4ú:¿•µF¬QyÞhÎ÷ÿ¢Õ–èu–\ø¨Z²ñPÙ²<Œ3kONÇ÷¢ÀÎ#“Œ—útÛŠñ1#’ ÌU6'Nyç­¯{ɣûÿç)è²lÓ=Ò À2*ÿ°ªÆè:oõt™ûU9þŒl’+¹œOóÄ ‚8ö(8 ¶çÜD‚¹ÜókÊ‚F`~`ó†|3?]ùot …ŠŠ0ú‰§ù5:7YŠPªE¸¾.·Jµh£.ã`""Þf†…›ráÒ–fß¾3syÒ O‘"Ú&Z^æîq€Ç”Àñ‘–³Q´¨ã¬ _Ý­4·ï>‘KúÌÙzafê4r‰a%7oLà)Ð<ƒTRØZ±Ä¢ó¿ðhThO0*³ïœÏØJ…9÷º·ûçJ\nøaë†CþÖa +›–ôüSÜPм¶½É沈JýR§#ƒ˜Á:)&âjPÛß Rò¿…ÂÒ0sÃJpZU³KA?Äó±ï;ÈAÿŠÞ¡9£­7p¼BÕËÌ@F=±M­ùøýb¡åç+”u Žwºä©UÇ™¢kh ¬é¬YÈáBÂWÊÔÅ~ÜC °åYîÊ£³# ½i€;×aœIC‰fÉ:°Ók•º®Èûöýë2ч<~2¶¦y¹€Û¸ÕÊw^u‹¬¾ÍŸñŸÃµ»þNÏ®¡êgF~®Ø¬•‡Áí½¨ÍÑilÖÝ®|âÃålZ”)\,£UÀ% …” ¼OC4Úè«X'8êKâòñª^µMmy/°¸½UÿéQæÚ: qÙ„k…iùî~ϼ]^ö«Ð‹žÂÂG±óCЯø‘JÊBÍÅÅåÞ·}çC%öR¦¶DÕÜ1’ƒÛã i¶@/꿎 Ùÿƒ,‹Â숺'"RÝ©ãë½Ëã<ÁG†;¸ VuÙi ¢LÑdlgÓ-—™£cQŽ­ q““v¶J¤4ìX¿%ê§€Ú“ÌÔV´‘5ßK˜úY…B Ø^ƒv™ò)¤“×ë ⢉††Æ[¹uBŠóƒ9>>Û‚qßôª§ÑR èåÇ£ÛàýpÃZ§Éük(×Ú)ÏzBÿ¡V¢¯³Â ²,p=ë±JöôúÕf`,âRº2‰¥žþ޲sEb¨Ù‡rpé{ñúW RâýdÊbVM1Ó^l±uÉ:\ç^)¶%#Kè[6;³¨&<5Œ‘Á*QRIÝ2#AyHh¨TÙ×^ÃV—Ð!Ÿ›_ìï5˜lìïØoóŸÕ‡.†0§ìÂn¾ÝÉãKZ­¬"MÃRnæ/ø@‚<, ŠðSVXÝ{pαXT„ͦ‘Ða‚ckÈlÀÎw ÛÜ;©¥K aýÐs[Ø=à$Ô q{îRœÊÅtlw‡™;ûcK¥Í¿Ï@…Ý;ü ó|~WmÙv¯~z¤™5ë"´wÛBÞб[Â{ê©dŽ¢‘óTU¦„KÏQ2×R´Ùêë}kú…H÷›ü Aš±uL“å6ÇáOQVâöÝ’]4¢öÜ”Yy‡?ÎRtŽÁvíƒæYgOjÒ¬ìlgœ)ç¶•S|ú’]f`Iž Q1Ž¥?—G[lrºîfÁ¹ñTÉ{µË• Y½&6Â̈¦‹”÷·E¬ÿ¼Üâü…›þÝ`_ ‰ƒöc®Çš÷²àe¼^˜3GýtŠ„\Y6lU‰`²þÊA9?0>yC\ºŒMÅ•x¸É{õw¸Ï#ÈV¦:¬Âi@89ë-±þO^‰rÄÎ÷‘×;/r‹À{°Ö ©ª©”Ž˜X©&ë\m­ÞvØÔX´3Ñè,¦†Ó.e@¡æIšßYžuìÝ’ódËOYf¸Ý¨•“b4ɦD!?e©ÄAtØøhð;®UZqŠÎˆôübˆ3¶¾ós˜s.pjfç»9Zêâ/g‚ð«î_>½Ÿ­6ŽÚ§}F%X3˹¼HÒÁ_S4ƒç³ü£‹×vÁB}¶¡Î”«!X³c¸ð<ΩáfÇkš8KÛõ⟠‘Áó:"’¶bvÏêRÑá3ª¥YGBpú^-f.©ZzÃÈ?ÿ;"‘äÁ©Èì”4É,lŒ©Ú› ¾D_z Õ,S™Zo®Àå èñ–‰ÐŒCõí`×YЇåÂW¸•xCí¦ÛíáÌB„_A7ïù4a¼HOl‚¶£‹¿¬0ë3ÃTq)‚Ýúiº¥c©Å ŠzN[ÄÿE–³‚Þ7õ `˜f»KNªŠ­^’Jª*éƒXû™ˆc5®Ñã_kê·;%Øž]–ÑêEÐyˆVk^ö!‡…3¡o¢B \zt$Æžï@ŠÂP:UÄ@üYE׫&(#*8kEÍNñ¾Ã2þZÒž•à†CA®§'/6Î9Ô´¸CÜ¿î7{/šÔ9G²œá<²LÄ"a9Æößúø˜¦;#h:£¶ET§ãŽ=Èè0¡wdéX³p{=‰T}Hr•ŒèðºBéMÚU|…09òtOoqÕP´Æš*Ðw£G¤îÔ>ýÛÇ݈t/ÈEœe?ÙœG Zð6^¼Y—´3êë6[_¾Ý5ç0Âö—囘{–¸³ÄBAÒS&i½ ?iᶇ (Š÷§Bâ·s܉‘6ÞãŠB3`%ÒDAj¡úܶœíB+3ymòÑ{ X¢ÖVéw»I½Ìˆ/ÎÂÏÌòL#Á‡nù±ú½lù4€ƒ°ìy*Á£Pî„K˜_ÈÅÐܘÿ‡,ÈšOóµ#Ð ¹Uô÷òÖ!;øöÔ¤1 F‚[·ç˜sŒ˜áÖ‡x…%X ðàX¥'ç‡9ªm\+èÃG@à`Y4§„Ç­4%Ûñää³E!ÓøZÝꢹrAZslØwã›Ó_c§ï>”•OÀæCi]êÜZžŒ3ÎËVÓ~áÎMLŽ1 g?Aa™ÅýPÇn…CÓÍ¡QSúA̬ H_CßÀ¢ÓÐO 2¨”µcÅÁbŸVT«¥v6ïˆÏW298‹ ypoú\a¿(Uœð¼!†ªŸ´«E2&ñCAm9b°x¸íÞŒš$m$ÛçÝ[Ç^ÉÌnÛ •îq¥É5­ñwŠE÷‰ õͰ‹Q_N´ˆûÿOCƒMâŠoÄÌb#ÐÏlè{ñïé5³^ÝÁt«m£ke™§÷/q’FõB*pþÞÁCÈØâS¡ÜÚzÃîË,çÕV„iq¸nÌJù$mt‹ `1(T¯hþaÙwyLŸÑ¸räC©MYd&|Èä´î²)WS!œ< J‹Vy)›Ý~!ëž§CT›tŸ˜ëÖ\Å3MBß•Þ ¹d8P¼D ðQ£Ëfå ‹ðVèBÑÎÁÌšú¯cö(9lk<Ƚ?îï‹]ó¢0&x²åº£‘?~gÊÜ÷¼A W¾ÔÌ‘°7+þ p´u;E>"ðgkÞ,ë°'‰ÓÜ~ Wß´X 4¥˜òߥXaŠ„G–‹óÒGÝ–ö:ɪ mhrõB³¢*4-pNÑØ¹£3ë3^ Ùi0&áëëiå¡~²­£ù[ wÍ‚`*¿t’!õho§­Ñ•ü¼ña'T€rxFŠ) a›™!»‹Bæ+nèX0(#²É­þ³…BŸŒÄŸ4v{ÿ<'߆ɂXw)ÿIÕíG®x±ß 3)BZ_°êí ®„ z½=Ÿ– ×hÛ<)þ1zðIôæVpB¡àšv’èéƒM$o9‹¶šÀ, 0*yëPÝÛÙ+ÚñH™¡}O¶gÏÛÊŽ·)¶A^ìÝq¾Fè(‘ÌPôÅ í-Sƪœ9…–,Z “`†ÍFÀì ôrgº½ÁKŒ×ã õ¼F÷Xâ4ûKL1p‰òÌTYŸ ÊaÂfUnP&ÖÕz…CžJ.ýÍ;Ú¼¹Ç‡lF Eª¦eUáSCQ´Ê¹‚,„ïå~’xBu1cÀ(à×ð¹\»Mê5/²E(7\ELr[uË};^é-ƒ¢#ˆÚ)ªÙ½%Ã>#¸•WÑS`ÐB¯šê;…—ÒÍßDWæÇ¨~¨aÏ£ÓSÇh’|tµU%_¤)/y:ø8¿NB„êÀs¥20½V‡ÙÓˆÕ°—&)%Fª¸’°W°cö‹p~3ú×zñLïrê¼÷GÙÚȺÈö†°‹ —]¿@ÙÃóŒp×£m4_›#)?º´‡WÄ’õ”º«ìk]§ü¸:̬dôVÐDÃU4³™Þ}³öó-­5b|"9p¥šf5!Úåï ©O »Î•Õ³ê$bÛšŸé–b;ÚlÃ猉ÅÀŽï!ïÈnžpãD-Á†]KäkjÝ0êùˆm–-÷ßmœh‹iä¶Ù@\0†¾Nyw\€@µnßSõFÖ!ÒéÜ.èÄ¥¶² dë‘n“¸²Xj„ )tÐßÓ‘px"‡Á +%‰Æâ°=w·zÇ„jú=ŒÅñÏ)ÇP\K®|¨¡¦û.fÈk2[Cžî€Œ¦-À™ü½ ¯¹a—APÒw÷a©G"&Ð`+ÑößCVU ¹ÂcFu{Ü ñ¡¬w€òa²Œ…‚0„•<I„<ŸéLâü·Zp¦]‡ÖòÞ=Ü¥’è÷Y‰A` ˆlМ;¼Ky62-”äUnÒ:§ÙÁëÕmõšÊóÔ¡8Ÿš–÷ þ·óI<ßN£náÖDÂYLàñ_ Kºn¶)|†oŠ!vYNã^€åoÆ]19Çuc:¼0ƒŸ7Åq¬ &ÙŠm¼"ÌeóÐÍ>%{8,(Ìàç(§Lãßw R„ÒjÇyNÃò]t±†$?ÏGw+íº\éÁ”w9ým&ÓšŠ{ú¶W¾Åë­üe¨+tޓΧ('õÕád÷mÕ¾VÆ%| 1T`W„,z w-ž%>£ažµs w¿ô•uåçF¡^ªON² ¬E&ù>à Ù‰¬Ã)âóô Hâ¶cc¼øûCQ´Wq½íÚajuÖuwà>¾\5DvÙ OŠìŽA‘ø-%Šé£»QNðôð I WÚ4g¡Y’V^ˆðô`ý+ù0"7YWƒÚë9>Ç{À jRý^6Kºü †þ÷¸p(Ãׄb_«S¼LdÓ™Ùð]z0Å\ÿGÕö™w.»Ñ X£Îê‹r”ü¯:H\l•]OYñЦæÏÜïþOµë‰íÔ|è‚ÒÇ\zx’¡½C ¯kÒ¥|Ëi¾Ä³åÚX}61îBÈÃ-q÷yEµü8E-Pmw²4?í× Ð(¢­ö–ÏýÁÏ’U8 ^FbX¦c£Õ°Ë‹^8pšŽ:¸Yœ\o^€iµï.>çu§Ù®º¶CüÂY›sÂBv`ì‚z 8\ѯa\‚Œ%bšû²<AsŠ£¾«]Åó@Ñ‹÷’ÐST‘l ÚÍmèZô«¨—hƒJfË’CÔÀE'æj¬ra;¡eúv${Ðí£ZÕ@Ë¢ž–ïd"ÉÊ \ tl&=ôÑÛ#aWП¥)\¹P_£©áßrÎXdqЙg*6TÐi>5ÀÈôœ¼Ç‹4fh(›hý)Ýès1—ŸFæÖôÝ" /zBÖ"‡ð žwõ˜ˆŠ,ž÷BTsêhãÄž¼nq¼o²ÉÑ¥­ãc™Ÿ!O瀪«rv´€•ÌLÈ]†=iÖ#72í½+6žúâ&í;EØÓm‡[¸É¼[âÝ»žü¼Ê×W‚ Œ0é ¶ãº¬ãª^lnЬyM·èåt&O¼ë•êõ`– alÀ~ßÁ ­kAò ö&‚Ä–R?“¦–¡6`¹—ÓN…—M:#̧íd\l(Îv+¡ŽR>d w¥ëˆŒ”öeþ¶“Ôê© Ê«oeûÉ”¨Ÿæ%*ÝÏÀlçr¹ñ Ñ^Ýìà×éøwEL6ÿ.ž@”}ËØßâÖÙzØ¥VRƒ“ø~>G9 dY΋ی¢\.Ž‚–ˆñ—<éA\d¦ìL¤›ñw ­gD ¶HP¡hŽ [h•ÄCÝA~®q>U]efM @kÁ¾§%¿°§óÍái9¢ªñÉq%zÓM£:—¦Bs 1ÿ“@®ùAX½÷ÛŽ1!WB˜üHùæÚ¼ª2¡ß"äÔ{*®÷X\ÎY¼¨`Ø£oоFÎ!y EæSýȨCû‘®ž’ÜP¬Iïòî'Ü/1h¨[­> ’7’ŒõÛçg­;y k9ôŒ–ÕxðÍT9§=#òÞ{Yóe§{î+UŒñ^œì+Ç5ÿûôZ¥/xg‹ÕËØs„ñZuˆû½‘fmL¶EzQNKFõÉ9)¹  K­ËÊ&ªh®‡ùˆ|?¸=µº\nŽ Áè™98¿øÒhºJh2 ÊIÈØÏG&}-„=èÁ.xžó6ÚµûÖCW5~í¾&8C#l¿¶‰*¹ÕÚ"•Ö»üËäO’Áá˜õú€äjZŽ,ú¹½Mó-«L¥FºÏ9„ÓLJÓ!T‡ÃcV¸/1šÍpø…b…Ô0ß Â´ÿÌòWeÍû™ÈʽuFh·É˜îèðQuB|C£ êxæÄXmv#ªÅÿË€{„o ~Ø,3¥‚%pP©¦–Mß—0f¿`PÚíNßÖ€}Ä$hÛ‰8öØnT§FAÓÕW­<6ÈÇ@ô\:k玥¨ Õ}¥;Ÿ+àìÄæ[ÒÄtòSzöâä#—˜¹ÿõ¢•)šX'b>»yvø¢Xèx`´8(CÂ×—ʘ2gxS^«·c‚·4™wærVC­yè ­\¸g„hú_I«w~ëh&q#×9Ùy1ßð4u¬(2Õ—¾M——|ôa–Œ­±P‰&ù Hn?x‚†Y¸"ƒø‰C€…E5®)¤jAzâÜV—ò}ì\IBÜÌõ¬‰KÛÉ1G‡HÃ@ÙüëH”Ü™YÍíÍM~{å±·èÊÀÉy‚JÂPûxõäÈ®Þw÷ãšÑ0{Ù.³R…bö4^_5©rüd¢^^Á]7 zÌÒ%rÏ1Øm ²­ÎBrë‰<þÆ[+Ù+«¬l~U,':\£DI^ !5Ð>† nÏü'Љ¦ê;ÑEñÙ®œ2¾(Qxfª÷D:= GùVÖä oÂ|v+ݵa&èÌ#ÆV‡HÓ!)ÎÛÎp5Ûúk½6ñ¦¤D-uÅ:Ø?aCI²: GÔéXKþ&²$˜šÛ,f9[ëyà B—°Zkh T§Ã±¨z´³±‰o¢‚Å–pѬkõoã R™Ð¯ËK™P9ëbùý†a+£n®J£Òå¬ôëE‡NM5EäÛ9•§Zxsò“o¥&zgL‚œ¼V÷}’T“dòÄ'…  òñÌ3)04Ÿ¯Ô1ï;6Ý-æ6¼¿ Œ¨í‚h.b•€ZªLòòNí™ Uºk‹HÛÚo¸w>G0INTTµðÅ™›Nw!+˜o<-¨oPƒ´.)¦ßœ‹¾ßʪï®̾çë¥0j×øü}2(b¹´¤ h9ãÖߚІ ÷è`nj ¼ƒ†ažÍŒI."‡ÍÂqÈ\õ›]”NíwÙŸ‹‡6Ú&²ÄwIRÅ V¡F²ß¯Y ‹í̾…¿ú ¼MÆŠ *|ö‚ˆPžW{"t– ¢ ›‰.½ç™¹g¶F*áÐ\ m3ÌYÔ°ó¼Ñ%|'mĨ'¿ðŽA6:ŸÖxˆ <'šó«o M·ÓºH~` ÷ëñãr’ÀùÃþÊèüQ=ìÉRA¡À.üÆ›Àv)Å >„8Ü [{3ß……u©ó’ÈQ»@RíåÄŒ6ÇMáð¨>F!µÏÅß‹ÑMY2ÝÁ2#PƒµJïËb+jñ)^c¶ó“"&)=[Õ{õ81Ö5íÅÛõÕ%¢E1j€ (£^æ´„ûÛüHÚl~…3À×Z¡^–£þ:£}ª‰Ç…èÆ ‹Vþý[¥$;*Þ·<ò.»<ÄØÒ<}M.s†uôZ_û5B¤ú¸¨•îˆ3ÐS Ít2Õä[ ñ)oßDñyqR½5ô¸BëlÞE °é¨~óÑ×%™ù¶sàÞ€Ÿ¨!ÎÀA':‰cÚ}-1‹Oœ|ÚÄn6x¿í—Œô…^¯Å>Œ§‰Øˆ+džuUk‘#¾ Mï ¤ë ÛãÛ.ÃuÕÎx» ß¡e£žlÆ ¤ˆ·\t}ÉëX|Ù)&/ÃÓ~¤‚{an‹J°jÂÖ&A³J[*ïê±)&J‡³5/½Øâ¬ÿÊŸiMê¥ÿÅ"¡Þ[9Ùy,à²Òò`ÀürÉp‘:ÌJP¢¼î¿’Žì‘ºàÉ‘,s6#n¬vÌNÒY&µÜ\£0Àæä±“Ùrõˆ©#Y õ#)›µ?¹Ø’Oï13Áñïâð(¦Ƨ-0 X¤——Åéªì!Ä>>üÓäcƒ"už`Òü;‘f ™mÀæé“p^ÎéU­Zý¸ÏÔ×îýÎ1û0vÔk ;“fÎ *¾Wù¦Aá²¶:Ÿš_?_«š ·™ïz$‡ÍÉzÒMîFAB¡ý6Ž>·»½êÁQœ†XÖ£Dxܞǔ‚ˆëÙªÎ3ÂER×%îcS¾ºÚ‚4ñ_“OžŠE]™ ÖeøAû1ê3£dýÉŽ €Õ#,:4hžÿ LÍ’Ö`Ò&7¼šŽBGo •|m´ƒ4µ?Æ=pU²Zhw x˜™Ç”¼©¹“j¼W0ð ‹KμejàÐû»5Ï`ÃXÚø}¢†? ±d,h½B…°¬¡'λU£&YŽOt¶Ø¤,²îI°¤hÒl «²M  ­lÑM±¨R-a' ?nØ“]Ùc‹Þ.°De|ö\¤  Ç¤Ä± R ÙG$þèuj}ŠI]Ücð6|¡îR„ÌQ„‹Ä¼©*öÉcxFœEº˜SF[(—~!“‰*³ãϱÁ—5&rôý9ìÿÒ¸ó Æ3þñ 9>’± å–ôîcz+kàºÀD Ö=O8Sñålê6uɃùä!M¯xÏM04XžpZ:F†‰E 3Øë»n.‹›6mÌH±~È) :»'³Œ¥;ñ”Øã¯+›Û7}®„½õ´Âê®Ýi¼\ZœK Ø„cý³?šuœ-<ƒ}Q†¹ž>bî]_ÄeÝÑã>·/Ånö‚ ÓID‘š’Pph36‘µ5Õ¿‹ÿ…ˆ²ÎÛË3EE4”×Sýz:ja:V¤'±Fßko'*¹çXJ]£c=\f„KUäÖR"áY©?wƒ6ÿÁSa›UI·rFGÑÎ ü©>ƒ/µ°TéAÛþ:Þ÷ä É&·p&K-Ê¡Q¸—Òƒo·÷§äÌÐW|ŸOÓþŽFncMêß[›ºµŸÀÞ^è¦øŸ®î+‚Ô«[š´…ˆ%º¾õ”úyGÌqÜ58Á¶¶0$ÞÎ[ÎÌ¢RCÃüÚ$=w†­Ÿºˆ7¤©OåHMžO5å6³ôÏ%»- æv¶¥hBI°"ìŸ=ÛóU—6B[ª»'%+M  Šfh2òé}͹qìxç2Zí ®E;ÙÁNÔv;cì£!g!%$áœæ WtÊùÊâ+* ò’pÔ<¸ªaI÷ÜJÕ©ë½'<›Ì­e#ÏrM(ºl]¹Ž&É©ˆ²ìFô€Æ:òVµGFÃ(• Ò©õ™¥IztL}ÁI}WÇÍC Ý~“|çýþD@áÄÃÐél¾I²ì&; ·wr*S°¨;Þ¾êb%±"kבÑOAbç¥M|æf~ìp—¨1Æz˜‡åèîeû²·Ò-*稚0ºQ$]Yd3©4óÏ À"¹ðCÀLXSCdz²@îˆd­Þi Ô‹¥©LíŠÉ„PÍgS³Ï¿‹¦Ðo®¡6h »¤ÙýB!dƳ¿ Îóʘ—½¶ƒ¥–ô-Î[Ñ1.kLÖ)F×ô÷Ü”gì·zARì[ôw«p»MãN §×}TË%ö˜Wž•;›Gý½ú &¹öÖ?Ÿ?ºÊnÑ9«Ù)®`Â(à S¡0 «t*¢xZ÷ê@xÀoD ú¢m(bç«ê7 þ0PSåâ)§ï(¯_3 Z¥ØƒEð©ƒÿEH.f°>¹ÑpÏE˜‰ƒZœ¶Á¤à‚Åa&Ÿ¸ËüÜæ Z}CÌd=èõMﱘaM權íÓ&†Ì»4ΚÄÀìì•VbÆýÃw$³å*t2ðÔì²ÞOlã])›Ÿ¬b8¿!†2É*¶œf1jy7$Ñ€›ÎÝáî!uªÿzg¤ƒ@âÚb>á‹ÊGÀrŠﵪ £,ñ¥gyXvP ʼP5§/&–&%PTz¯¾ßᜇ1YmNC~ŠåÓº1Ô¾ìàøÎ\,7Š=v‚ìF˜eü7¥Š ‡wöã9ÓG[p&$ÖSÄŸoÖ½ˆnbr¶aáí=&ò2C3ÊÍÈ?[ïzáÕ]4ÙY0×o=$ÂÎÄ<ºL¦ÐƒÐ¡¨éCç•òšŸŠöÖHr- iOn…}#ÛÕÆÛïŸ~TS¸×Ó¦[ú,W‰¥à_p_ºÏ^Ð×ê¬*s{¦–UC³o?àè!§ÓPGפÝG^›J&nÿë¹MŒNº¸Wø’´Äƒ²/éËQ rçZ ËèÕ¸;osÅ/ò¿·8IÂRŽàXòìk fÄ¥÷­g…^sÍm6M€òa-„Z1)¿®§ÙtÚ<9Àø8ëäL{âàæ× /Z ƒ:gËF»-Œù?³ ÈÞÀ9ÈÛR†%yöÇÜj¦é Zè¬\ñ–Yx€xF…gFh-}Ѓ٠é7EÎ]ñЊÄC³ïœMÏÛã4`«d0Ù—L4E§fq{«Š±Âw_>;ß“‘äôlÃî¨æèºå'g0Û‚HP+ †¹{Yí8…<î2qßmÒ.! OM’õ»EG5Ñ?=F63•z7ò~~ø æ>%á³±†ú”àGâ$zvX``Û {p;ÐIÓè/»«l”Ã'4ö]X/ñeÒXу¶¢ÛkIZïÅ58Ñ5 Â+=ÊÒ½ò“øÎ¦ÖÏ)!Õ üÆ> /jè?~‘@stŽNz|g±Ê€Â“2wÛ@ÍŸg²Ÿ>þÜò Å-Ë—4QZJhÜu3Ñ9àË”Gć0§3²­9nu=íy#œC¤`,Bëù¦&êt7¶<öD uaY0­©±²æ¹÷þŒ£Ôˆç }Õœg‡éžWî0“ZAnjKÏЂþb #óº~ù"‡"ÍOø¬™½#½]LGúUwѬUÖTxß·×F2Ö?ÑÖÁÓÒ! ŒbQ‹äÑÖ0µÚŠ’P»±øÇrâ¸Fñ:Ü3ˆÜ€NLì#â¼µ*vò¶¤ÚýÐp+çªðº¯ 9•´Ès‡®ôôj†¨-ȼ¯ uR75GÐXƒ±¨01 ¢;›pÞñþ·w• ŒEzüójÏWÆOÂú‚ObêØ.Ó§úžßÛÕ 8±~[4R™R2á|»Ùõ|ÌÖ—ˆûÞ²ˆQ‚Ô÷†Œmd˜%ͨè¥ÙÌõ&Ì-ç_3úy¶Lá»#J¯ýº¥FXO5|Zî„ʬÅtü)à™ô¿4ø_ÓúŠÖØþÓvæOg0·PóLm–…MD ¡dYy‹ ¼ùe`þì—õßWkÝr—®µþprÇÙ%gÎÒ—²Ië¬pÞ÷âöY”ÑEn‹?AMÔ·©ûÎÙ … £Ætfúõ ”—iï¶hÕ(Ô', Zž.2EÿþÓaYm³ 2ßsá*_‰•¹éH© €×w=d;áu¢“¦¬Õð³îîWy°æãàB*Œem‚ˆ]ÁQt…7}çL3Îàý;òj=þVs¥·Öu-eÍ]§<äÍÜHc£“ hÅEé>Ææˆc=m7£$¢ê põR}+Ýè»`—ªh³±,jûCSÑï ‡!wåÚ8ãlÃæòŒ[u—³<¿5_ÇŠ¦3Nµà6GÝ¡Ã,%Â}"ð4Çdî Ç+A“û&ŒÿË›?¢Ã‰<˜¥t R¼XDmR^U„.U~ñ—Nó+ ‘MÒšþÆ_d~anM[ß{Þúôa¹ûw(ßI_C*`¦VÎÆÌ‰ªÞOs.íIŒŒ¨¿Œ‘ƒR‚ßðq™;QžS2ÀƒZ N7ó1¤]´½Àm^9ôà´ÖÆ <Äà~fAô=´ð—Pª¶¹¯N.Ç‘z"m·‡Ä»ùô…!ŽD²NÈfvÒnŸN˜d‘ÿïiu(3ɧ ’1Wš7žðŽˆi&é×¾^]]ºþ lSÇ9¡t0;¶æ_ ‡,¹p- ò%ÒÓ:Š©µ—v–½d†“ŒõlÞ´Z_|âÓËDIzý‚É8¨’ÅÙo ½ÿFª[%ÝÙX$ÎF_ºn,ú;wk; ’Œc=…ïÃÆH'ÝcÛA;ª¾¡³ÓIÇ‘øŽô3-“¦ ‹àxr¬!–mšR—š‚×)W±…Tà—åGs ¨ÑÊå3¹å¥AÒ×ôfì!Ùt\º¶(„µ.fccò®’:ϯF¥„š“ÀR¦îóÚlú~öþL÷à„ÞMÂS9lL†Ò1…£ÖÊÁÄó,÷dtu,(;±Àu¿îôüÓÌ2¤ðH£Ï>Ôƒþq-|ޏ$3Áêãü´8ˆ^8ß«¤‘’s>–-Í›¡º„#·õŠðú*šD­¢²e”–|LÈ£¸Ufäe%èC‰± þå-³æA;G£? P•óW'‰@vL”»3!†O5+a\¤$ÎÕ¡C‹ C§_¨Hà´.ˆê2Ã#}šFlTRgúx¶Ù¤fTÎdʆ¤5ª«nu ‚‹ öfì4ƒþ3ËX.„O뉯oέ_;©«0þ™äRþ3^ c)—åì‚I Ú±eÊß$Yßq/àÑ×:£1K@……—F¦þr¨ª ·1&N:Îù #/ziL‰ËO_oÉg¸Ðê ÷/ÒR–ü³Àó_«;g¾ç0ï‘ÞÑQ*…™6+‡¢ êU¹ÒyÌ`‚ßÛÊî *Fc‘¶Á † ¶;¶hÔ/‡½È¬0 ÞqÐ-Yí1†“}QªlÊ«ÚáN#¤ä½§ûžèÊIûÄî%7¶w™@+ï&6¿kÁoG¡@=AçËÀ©š6IàãCa”ɯ£’6>nu’„bträJ£¨K0¬ÝòÚBŠS嘔Ÿ2ej›Í¡Ô¶ùRqüðï̪®÷؃Zýïƒìµ?RIS¥1±xP¤Çk·ÛG¤Q;çpéÂtãíýöìuÍ?¡ðaè1ÂWÓàsžðjÙÃÈËïiOÕ8t۔䊭@ /¥P ‡>lä/ñ3^ÄueîÀ/$š „ßä³Ü7«×«"`},h¸‡Ä;äåe“V÷¦A…ÑúNpHìG½–ìÑ4vŸYœî_ø¨ yÍmÖ—âÌ‚é§lf"t{GÀm'ŸeÄ¢Ñl_AI÷­cÈ]g¦m»Nt çéEt™mÒêG¥ã ž `ÇJ˜ˆµVèÓ9&^ 9iëµïAž÷Ef퇓X‹QpKpts/^÷³IשjFˆ–^„ÎlEìsz9÷Ôw,q”.uc-½ûd’f;ó·’Ç-°`uO–xâÇ.åÃåW@dŽ0U±-†‡nDþò:hP‰Î -:ÔÎxÿ*Ù‘0³ÆÐ{ï ¤ ÞI´N11Ã,5Ч,›ùà‘¡Óä·sŠ'™ã ¼Ô«H½hu6DÀ Â~Ê7Dr([NAœ >T’û€½µfB8ÒL* ¼X ®b›úÁÏàãP{‹-©ù¥lìzSî]¢¾³ºjeLìA’äÌ]€Ÿw M>cÃóÓ:“1ƒîe0Gù¾'õŒûá/Ó]ø^$÷$ñe܆GX’ Î(fKÅÌ*°Äå`ö;~ÁÅé':8¶©Œ7Ȭ™Ñ•ˆ:öãÕ \ó?w͘àŒ?ãõè>äª{@¹¸H 9 ,3‹ò —€‰xÍ—ÜUšˆÈ©å€1ªOAé6–>9û¿š÷)óÚªˆsGé€~ÜsTñ¾iªÀeº¿âÍœ1‹ž«.©â2Ô”¹±C˜ÃOÕ*x›Ç FK݈ºTc*.á:î,¿žáKÕ=¤Ù~LÐÌik5@¨1óÝ÷¨Üo†°–~²QsiåþO¯0âè"?ÄØÞ¢y/R…@¶xœehT:"×Ñ[/†%³Â#ÉúM‚¡rÊjûÑ“h¤-Š˜ÿžU]t/M~Xù)&ü} =î”’gó S—`ükö¤Ê^¯]Eз€É¤ºˆY·EùÊ”âÞ†±#½³;WTî²&í_‚‡–%úÛÎ è‰ç$¡%‰s<’õ]è›% @ãeoS³å¼?ÛåÂö¸_·'HnE«ê)À2‰ö{ë»î(]ÛN¸ÔðÀBäúãÇÝ[hŽ:3ë˜ïJ£ÿÛÝ/Q0ÇbüHYšÐð—›ÜhžӕŸê¼œó¬ ïØbCdç>Â¥¯ àcí'ma˜D@ª3´†yÖŽY[ "C!,Bu¨Z–âû´D¼1ï¸+àw­ÏÊó¥™ËKã tÿ ”=ÿÕ' îF9ö ²$¸4kå¶#ѲC+‘/ZKz˜“=gYŽ ÐÃØSL2B0ÒU¡ÏìMà”¢€˜ûsM"Õl»Î$6(Øìâ~õ‰ÿ9%ù-wfä„0ÊjUµ,\úzóÀqO _]'±M~æk¹,Ìô¼y×RP²Àí.âŸã#ÙÚS®L3¼b¨v_©J;&v=¨›±°ÝñÑ©48íŠÏ ô ¤!!”³ßZåòê~ø€³Äw†çØûÎRµM‹ÌÒ$‚ÄÝ éÄ3¦òÚ?ì{72‹ì؉ÜA>3àü3b]ýQj@Ðæ\ñ F!*¯êÝ·1Ic_š¸Þt¡*èohÖéËqbUƒ´–…Õâ±î=…S%±ÿ]RÉÙÆ?X¥Ð-ÙÔ }#އ÷Õ·È{'\o÷öçô¦ˆ~êÊHw zˆ–1f0¼ßÛÅÝûœ;Îä”uYwÝ­~Hã“+·CÔ7n#mÏ8¦î :Ë^§ë·á-}KIv×ÂPû‰L¡Ÿá¯ÜS‘¼.á ”Á”çE±ñ¥ Ó_žDòL]P<—·GJ\ëÆÞò—bN^ßÔ¬ØS¥âxTê[=Ez„XP ø®´A/z£ I'¤j3pºá 8íB‡‡Ów½sóYK_Ì(¹ ‚AmÑép:F7C†GmP„¯0¿e³–\DÁÿ;dªçþf‚K}Ø¿žhQå÷Pƒ8´™ù=:…¼‡ÿuÍŠ¬zjÿª:)Js…/«€ bõ>ù/—˜E76”טÊnUÕàOb(UQ½Eû¥?†èë}€š*^é4¤kÑGΊârÃ,sêÚ¼ñŒ¶*¶[ ²ÂIë¢ß3veU®µØ·lgË6iquøú]MòÕ~×Q(µmàÈš7oœ5®_Œ¯×©¨ºj}ó„¶:|gNÕËâ#ÒnçA J‹º÷Ûç¢×1ð/MÐ<4RTë•©H‹\0©6'vpªµû…ß-X­«qeM’Ø/ú0ßšzRF \¸ÅPÃ/o ·Vo¡(Gš-Hkxhê“(øxÔšdÌœ1ÜzÔ‚DX¸·´KNé}Sž $t%yY«Gc#XX³R‘y^S•“E9Eq„Ž  ëË)§‰SŽŒÞÞp¤ŠkŒ‚Àô%…þÒõ[/õçü¿ìî4³ )F~…p–§…FÆþkŸAyç,ˆÙW?+a#€…X£¨Ÿ®‘¤ß-+Ó$1ÌuˆžÍšº«>»·µ½o¨9ñ8ôb‡Ë÷ Ð×gû=Ç‹¬µŠØ¾Î…·È(‹&A»íAmÉkÐ ‰5%Ùò!¿ ¹ TtJ\*Ƶ2¡›ûZ÷IôñnÆ›.Û°;²ßh-•¡_7ç¦ÙÉv¥²Æ€ùüÈéD´Ÿ‰4BÚD/Úƒ; Kþ)zóuÉE¦·VçÕYs3©íuÿêu%!na`W6˜#6½òŸ=Š„’롟¬„f¨¿Aœ>©@ò…]P×*ÂEm²Lä†Á!© (v„DßÃŽÃVˆLÆW:„h+µþò÷Ñû€-RÿýÒâA×ä±³¬•€ñýžƒ!Ø£3ü2ž-K¢m"k÷{ñ›„™Ãª`bJ¤•¯^L"œ¹Þůþ•TÚ äMýàQúbuò¶ÛÖ{•M&©)û¢44 V€›€MG'8?ÅhD>ž8EÜÎmH”³ia¡=j\3лïf–êRœ†÷`ÓlËÜúóÝ‘þdŸ:)5Þnš‚2¤3Loü_þÅ«²7ªà_@wæpôá ô›”B‹·ÔÁMÕÌÙS=&¬_°!g­¹]¹ý«ñëÉ{.|ÉkÜǤª Ð/,ÔsKÓV%&jü³Šë w ›óU\]µø.pf’ŽF¬É@¯êù)þ~«É#ÃâÀq?l®R§ \íD…1Œ4¼ ¨y¬†ª0ý& ˜«((Fñ¼½=‚wªÉèõŠU|"J±|Î\s¡þsõîœv•<óÊtXÕHuÎ7ª3.5ip+Z„P ׬)ÆÿÞ,ØE­vƒ°Þ–áD+â«Ë*ºÑ#%~,ÝÆiyQÒž«¨™åõ²³³‚V¢nå#È•ZR-Úì}ƒu˜úøL¸ÌÏF€tîà¶w¸WyL ¢‚/PÕ1ñä¾ i§#С/f,”ª>Z8/cœ g¢°AÏMmM¢L*‡·«~ õß ö¿•:~[ý•Á>Ó„:à­hj/…:TöíÐÞ Ý›Šæç Ôqu07…- D´Â‰« ˆÅ„D3•È›A‹mÒêåavhUðɦ²Ô±¯ðšf‚F!ÚÄms@ ÒÂsú*d2Ùñ_rB ±õÞXm¸ƒ.•ï9||TÚ1/Lˆ·S÷ÞÚEÊ~y¹Ña(HÖ¥Ð?H–{}áÍaì™Âh€jLQùn™PsoŒË»ñ4îä‚:œŽŸ &„·E³tþFS¡p–1-%< „¤xCe¼¥®ÉHô~@ª‹<³ü›1|ˆ¼Ô)½ÎfWå¿AÇëÙUêüLF¬¤× «(_ðsôÐ}î1—Ý­¤;Ç9ݳš®óz8H6šå 1á[`¿UÑùúÕ~ I4•‘>uNÁN”äaAû{êY òáø†ò¶¦ázÝ ÄÿÄ¥òY°dÙ²jÖ£âæúîI½þõ«3<ÐBˆ,›0àL£íñ]o{oò¢94â{'•ô•÷côÈÏÞþ/möÆ­6¯š{}Ÿ©ÊW Ýš‚¥öøÓ°î&˜‚³±5@€I ~"·üQXûsCA­¬4ê}!b®­ÐV jæ\Èç~’i’ŽÚÃT^K:û @Ë Ù¡é³ûÿ€eT"ä‚i¬ÿ.Ø WòB’=¶Ù¿9q"iÛÿé¥Áóv%ìšÀ€cSÈMæø&cì¥2¡>ø¢kú'"6¼0 ªy®Ö‰È!’.üÒÐQš$ zmôܼŸŸ'”ÖB‘žÓ…5 òzÑocTÈ“ñ9ÕÈw÷Øð$Ï@õ<•¾@øxµHøRæìJª[õÃÅ2¨ÂT!¤f‡¯Ãæÿ”‘ëÓE{Aœ 9K˜4qHW~ó9N˜g€í²’6''e…ñj9Éwâh¦pkq/ TX †Žó:—òrx]JFÎ;ö *ËÒxžËoîÐ1æ}ž%·‘\DS¢Ñä®âeV_—©&6&Îÿ[¤”<79‡v©™ûUáf4ÁôÉ&ûšÅÓ‡¢ëI˜«5Ê2 zBóú G)ôY©:QÎ×§²Pz¦!êê–«gvw72~$Ü'¿±¦F¾¡fê#Sm ÏUöß·«n;.¥zßź›Ï$­wN'|ˆ{ZdÆÅ+˪Î.zŒLQhž:F£zŸ¹”¬',¶†–÷ßKà.×øCj1O:¦©ÖFÿ¸Ž¥äk·¾fÅkŸC_zsb 3)RsQÁìVcoër\_“¯\ôX0¿'jJRv1Q¡XKï;5CŠÂþ‰ƒ ýtP R÷6ØŽ™×ïÉè¶S8ÜÌIί³@:9&ýzðSæ(¿ÿnÂRT\æCü@k*<‘øfá °‹ý½q¶Ç“:½¨êß¡¶b)NùÓ¥Eõð90-€®ö®/ü>° •ÛÑx÷HÒÖ­¢éGú:EåÜê@¥¯Ñ>”I ™Æ—“‡RÃò:`œ¹gý‹¨‘¬|¼Ú,R¶8 #)¨S¼ÚDû =êÓ2ŽBÇÂÈ«òLh%¨‰sõ q30PŠdÑ­ÝÒIíÐz9`ä©x\E¨,ý’ô.ë0È[ɺ# ¬«•&ÃÙüÛ8(oÊä_«¦Iubj9cçÝÈx¡´sý®¢þ9hNå*pŬË #jÑy8ùË>\ÅjT—m&1Wn r¹Qb$^bv,¤.;Äó?•Ñœ÷bùC.‡ïˆ|÷Á+ö¹Uª#á`!öÎU,Í>¥¢u‹íëíwû¡½Á“øÊÝ\Aîï™B`£‚¸ó£_”é˜öT&ÛX;44˜´f¤ qPÛ²™ ­ßö£ú_ár*H æsr¯T“ÅÒJ*OT ÿ7Ö+H—Žæu{ýìÔ5v=M¿»Þçz5¦@õÄ÷a ˜;)æ§/6 Š»§¨j»$Ìy?! xÑÑØXcMOU1…?:‹BüIÎ m&º œZ„â®Ãõ°òVEHÝóHÓÐ?…¢oªÅƒ¸°ÈøåÇ~8|+aVÀèY [Ž_ÛÔžŽŸL‰ÑXEü¥†ÿÂÜâˆ8³Îr¯G7ºMЗÐὊIìÿì“f˜¸^/6í)šãkÏ™Ï_¦tßgä© úc—òÓ’wa4õf{T Áâ]9›&·l£ŒÍI[NG €^?s%ÏÞYáG̵m©:ØTJ¾ž„·«2R+lH¯ˆˆÅ:e Xø ”eùœqµzcã'W Ý´{'­kWÀÒ;û¦Ç0ì‹4t¤kgÿŽ˜º˜ÑB$ÑsU¼XÆmAr=¯*žþq‡§dZkÒƒáö+úð m•ÌKŽíM"§áöþ|Êøsï æÿâ8¯®§÷üŽ‘Êˆ\É'Ò°\Ûí„Ê[}”šN#÷—ÄZ6ìAÓÚâ+U1!Õ lŠË»™¬‰ƒsq¯ûÔ M)C¥ºÍÚî<ä%ÇýC_A”u,í‡:ÒuB> ŸášÒüÁbôanL`µí–GÖV爛FXš;-íF½ûTaxÕOŽ&³Cgòʉœƒ¦o!‹ýÈTá›ò†ÌûsUˋњ@8ïÝtG‹L!üuE7Ìà#3“3Ȇ„ôe ­-ëWEÖ…½0WŽ)Ô»¿«‚$ŠNÂ]Ì÷@X´jWû$Å;ý}u¬­ÌÄŠXVt Þ¶¹î¾ÀÏVO-ú$e˜ÆÏÐÇPï V^mÅצÑÈ!ÜSǬ1èÐ2g$ò¡[øiþ"»·r$—zçÐQÿóg8¯ì7( áìaNEÛºà†‰Y¤$çjëN4൫aô!P^÷¹é0U·ÍºM%[…“±ñ‹b±CÑä@¶©¦Òªa=™säÎ1ÙÇ…ò³”BXE˹yˆùÿ¤ïѵ}#ÙãíÙŠÌìGâ„<7f¼ê|òSÉŒ«›•­Øn5LµŒÉ'¾nB²3ZtHçWy“I«ƒÃÅu©‚@ejOvpCj—‹nÅn©ÈUjµ{°aáf*Ÿÿ‹w1#`ë—Jp"Í›¯lÈÅÊj_]ò~kyhÁþ®ˆßZ2àå¶þœÃ9‹h(!ß h33œ2±›ÜÜF¢ã&a©!Kcx8ÂÃâûÜfJíe·,|:^Œ°^±0»yeœËéEŽÅ^ 3Ci£Ìá~rNôKšfÐü™D‰è4_ r©üE˜mÑAûâ|¥+Ì^ tð_“þ€QýUç/wF<³…5*âUoJô²—EÃùc#"E®r'•Rå—Þ û2‘•$!~œíppô7Y®Ud¡ô^°Ñû%Q¬ßfM:vn±d˜î[¹T¨PÁèZ' ÒÕ Çäø¬=y[|‡Ê¥Ã|ðâÒÓB^*¯¡ÕŸè—zT$)ƒñD¥ˆ~Ö8àƒZ$Îçßö<Øõ—tçÈqÑ*¬¾AØé©“¶Sm’] \×Ì`- / §XoLt‰9Ý_¼)én—ÜçéŒ=1Qξ]4g}XT±ñ8QÐÿ­UWMB.^óŠDfÑð(!h-Rx çÛ[•ÜE§¢\´e6°– 6[ªô€Õn*ò¨¼Ò—ò÷wÞg˚͡8Е÷”\õŠ×ÞȤ}V‹Îƒ¢ò*dA5Ý,Ã5OaLøØì^•vD¹WÑ\$¹‡ó¨ßÑ+lsÚߊoÁÈ Âü%=°#‰^À$#Öš¹œ9ÞÆMy""}{Œa¬ü³¯ì¦?òF+üWÖwØÈhþJÌMS¦¡„PT¬\ÂEÕl[:[ø#é³Í=‰æ,AݾRÜñ.vúy~z±0Ix{p4{ö™n8Õ ž¨MÕa`!¸ñÛí™kof,ß’nÒ×lð㘴šÌ4Ÿ_úž¶%ê+èy½{EbI©ŠrªÐ„!Ǿ|mz 609”h…XCË8XxjÝpÈäU&LþÝÝÔØ4Ô_hÔ”$¿”à#T‹.|>‹ñ?aâÝþ'‹Ú€Á'vvê·Î ­iT”WM/íÒ‹¬÷]6â#*ƒÈ›û#ªzãʰ‰A ²bØîõ·Î=†7©iö"ÅEï0ÈNUŠr9©=P¦æ³¡“pNÓêkûFøX¯2ÍWã¡)}hËi¡€‹Â WPçx©ùÜ™@œLÒÿs„Æ'+ÒýTòš˜«)ÂÊ @?W/ÍÄ¥™Ìl—½ÑÆýîä’UÑ·/6Ù ÒX¥Úäw9h;I¹ ìyã9ƒ Éÿ´[n3Þµó’+§·¹Žu>ÄÂvÌZ˜™jjçšÿ¥W÷ã‘Vâ3›ˆn¢7„òpÓãÚ’N.ÉÀjkXGR<‡ùI'ºêï1NÏSsßt·z¸H½³Ò}{a—¬×šQÐõýtí͉ù^lêùYªÖ&A¸ëJXŒ±§LÏoè3cù…)Aù9$ئ¥üÃòœ> pâ¨ä<æç'Œ®•êµÉ=ÓN0§2)KØ¿ñÁ®¿iÔIüþ'Ùq݆mÙE5Éæ¾! šß™è}Ô[ØdOmwÝNw’ãt›º«ÿsHz!†ŒÔ‹áµY©¢#¯§íŰAe’$q¼ ²pŸZ¦Žô²™IÛXq´ð/i‹ÖÀ€}…D„ÁǤ+é‡ õûÌ_ÖGŽ Ë­HÄîbÉ@ÐÎÛ%21-#³#kèèYt#’–(1¦ÖÉ“ù•Ÿ/[çpM·FöðÝPƒ ™ñU³„;éݺÕLH¶˜Ûrl\©g ‘™¨¾¥27AÐo› á…vo½G«‘Õæþ¼¼ú/+~T¤Žô@8?§ËÆ1ËEaÇË7¿#Þ²éQ„E”¢n4¬Lš3„d$-¸­ ‚{ý¤„{ÆKDØÍTÑi´ÚV‹œJÛz VŽõÀ4:ß.Fdæ=ì×(Øï%ÿÑK€¯ë{!/_–MD»è²éµ®‹¾´ÈØ™± ~j•R‹wš1I¡™¡!/±„w÷üÉzÒ½"ÆzeÛ+†Õ;_5¯KTžÜJÚè¶)µ‘™Â¹u½\Ž–VRÔzsÃÑÀZ0e÷Ρ§#“$xÅ£A*²öyDT0’ö¨áPÙˆIj ]Ñ¢Ú?Ç_ôPöº É乇€eKìÐòfE5t*e¿¸þçs éŸË̹!²(¸£1ô8`8Ñ;„ÂOÚR¤eÀRVr¼ÇW|Š>-Nª-oq·e¯†UäoὡZŸ’–T9ÔV°$×Þ>ãòÂŒ'CÜ3FÓeŸtŒ§—·6½d«Rź[ᦕ¾$žŠ‡>0!‡áG" („ú¹Œú^ÅH”ñüª…S•°ûºM"Ôí›Küäè6æDã)æÔ­”œ©fµ€ÿŽáø"ð“)Ô£ê¸Bìï…/»¢k¸š©_00ãFUÛ O¼IÈÜöh%Sº¤ƒ2ø2K€›™¦âFQ~²gs°YN Þ±¸h,KÞÅ›/ÅÇ1°vJÅKékf úî>o©tbŒKݰR)òxçÃA¿Ä½LºÒ±†™ÔÒC,Í|¡j_ÆU¿lªòaãÁŠõØMÀ/˸òçfFS»ºútÚƒ~ÆóÒE‘X‰Ä4Œà†äî’‚†Z` 9jAO!ïרFŠéáÞ%l‘ÎÜ*˜˜¶z8|YC ®’C¶$z"½Y5P Jõy8•gÐY.FŒ’S«¢fdãKÓýÀÎ:äIt/–-P| /ªçˆé#¡L‡º‚ïçPV¥SåÿØbÙˆ,?“ŸmɃ®¥sœeåºÚ1 s•Ïo;×3ï‹b7­Ú`ú'•@s¼ÒúçÀ/!?æ<‰Ê§3„”*‡¼œüÖÕ3hÍäó«T‹ciU£n/6Ö¡P´Juæ¼`t[,ÍÀ3·RÕ³0¶Ù7õã줣’ ‰²i[¶qÁJ‹§‰Ý ¤˜…,žC ‡íçk2màWžýfˆ‹G0•w~› z:ÀoBQ·B[†/—t%2…eäU(. :&úŸ”Ú$Ð3çd€1ëJ¢§{:Œ*bb %쵟Ϋtº<4CúÌ,;f<êòèÍÁO]€O*hŽ|*¾.lÆÓ¸`rl‚œà+±8ñw—.ÎäÛôä†hÓ?øÏJÓ´c¨zîÍr²º5ÙÑ¿^ùNµ4$бTOÕ·×ÛÈ#@9óX¬øþ•¾.…ßó®MÀ«6œÈ¿èÒžœûš‹X¸j]È´’Ç&PW)ΣP}ËÚ[^¶ý£)º-ì4>pdݳ‹K*©ôæà§% Šqó²Vó¤'=Æû|PÇUæTÔ÷âCf qH §¡ƒÐ3N?ãmrWޤ C3L½YiD çÜ«˜J&Í<‚ÍClvzüe,1ò$ôœ;¦ƒñÐ ,zYŸ+3ÿ꥓œtùqq„(«o¢dÚ—xG­ÿN^ÖÃAl˜Ž”ÞvÂ1̼«÷ùÒÀªCº\žÚ¾ÿæñþΉKž §u)YIþ¡òT {t3ÿÆÍhÙSïfà­‡»>M©•¯Œ”`KŒW'YwvÖǨ‰=SÓUvÝ<ïÃ‰ŠƒÊ°ð;6Úó½—ñnMG’ÈÑ“Û6÷´ Fy ï¬k8…Ñ}¤Ï²¼ÞùÍO©(¶Öïv(Å=¾L^,ÃïÆí&ƒƒYàyŠí?õá³v•Ž"æ—Šðš’r&3IpçMì[Jâó®¼Ò‹}M¦ ÝÄ-[Ø?Þ±‹P©/GXà¯Y¥æý6½ºpy=µvÚ“^û ´&HN÷ x&NFЗÊPP9æHÔ ¢ìÄ€N×m…@Õb›ñƒ£ÈÕ "µ?E»Äçr´ÇU”a¿X\ýB`ì^Íp`ñ¿yþOøaÇPxÞ(Ù¶ž‘‡{rÔ°E¢¿e1ùø3“ÍÑ'Ed€8NV6 Ú…-Uî´fâdn¤˜tùrðÖV˜ÀNÉ(ßÊ`Qå5 P*3µS»8°¹­ºùàeÑ·\ÞÈÂôz>ÓÒ‚^ýMõm%æsj„dп'ãnV= [Û-Q¬¤Š¦$WÄ£ãƒð´¼g½û’½mµY}îû 0è·ìc÷y‹møN6°¢H¥„¾Ò}¦ô$šô¢‚î(ä\7Iƒ2žpS«t6q]ŠüÍ&–[+'˜à$<ÀãrY½ùUΡKïka#û•oTx;}›RÃjiì[­}BĹ=š€üÆ\ˆE¯©\#iÁµ—1–ƒ©]išP_ÍéÛSôËø•üro¼Û¢Žý$6סú[ —ºø{À4¤¡ªX$®òök[`ÈN6)oN¹÷uï1b1¨Y¨mSð³Xq ú z…lÜ*¶ Jë}oKVµ¶ëˆ$ÓØÁp⦉TÉNÝåËW¬Ë›ß|«B#WX[1ôS##6]z¿¤ˆÕáÎŒáÔwqÅÝœ¿’Eºþ3§·£±ÐøhH­ÆѶÇì²åt¿åw]oÁEXz˜°³R·þ¸#yÀ~_;= šÐ¯“X-°õ·Oˆ:œ¬O[OF޶cê®ã*Ô8CÖA‚Эzªu!N)ΞþY÷57>.qR w-ç¿Æï”äžqØ›“T¿…d 7ü½T×´>èÚ,œ5dzïݱí¡ñµO…÷ÔÞ"Ë ‰>ƒµ7„bÝ‹1È)gá[,C›0Ûhäß^‹Ê|î¼Aë6Ï )ô²!ëØ®§~ŒýYKžÿl@mØiŒKÁ-ôköŸÛËË%É+ŠN‘Fñù׊«>”i•Í2]@½†,\é» Έˆ9ûÃ8åTìɘöM•û™N¼lˆ¼^âç_#spÅøÔ]Ÿ(oñÉMCQ14_ĺþš¢~YMFï¶×V> 2œG»>±Ÿt}ôÇŸ ·ZIožvMk«×€Ü‹]ò·Œ ^õZ*º’þøˆ_-—® €0³«[GQÐ;¨Ëƒ¿e@¿ÞHÓ·ÛÔƒ[mg" ¸žµO׸â›ÓG(ŽùÑ„œ§Ëße’ñ&¡Ý„µ‚‰RlöùÙ˜aÐXÜFEã4C©mÜí€ZÌþžÕ9oWKY]ܘ¢›¾Óv«íŸêQŠDßµI €ÑíðÜçŸ!¼Â¼3V7±u4TÑÝ.¦SrGŸŸ‚nþé“~%™¨¬îa;ÕŠýÝ%cb„»×[ƒšlZ·í¹+B:ðñ?¾¯n¿àÙš«f,a µþy­Ìh.ÿ¸ oÁo§Žô lÏS¢UôVO·UÃ'Ðÿ}iÒ­™¿Çœ1OåB°º@àP:kè$zj?ó¢§É·ò<(.nvXP°ñSrk€rRZØêDDb)ªñ§´¦?-µÍTpœ¾®™{þ"Ð.*ŠRäû+IÆ "­znx¯õþ¿d¿:~{€hº' õháÿ¹¤›TÙ’hîªZ!ŸÆ`ŸÒwTŠ›z‡[QTFæälŽ9‡÷9¥*$ÝËfÖ9wµúLéâ:œæ8ùˆË_ôURLÔÊçXŒ ™`wá'}I ¤¡ ø¡hÃ)~‘¨ìïÜ`oµj€ç>“à­9¸~¹®Rò,þXÒ^½pŸ]ö•ÿ¡h£î$p6ÏÃe8¿'lÿÁØÓXª{K‘ˆALdY¬f¢´R¢ b€šé,-ý·÷)†·bÖÕœ×õ–\È0^M"Œ~ë›e™´ÏÁO±.Zàcþ¨j„ÍTØ`ùÍ mFgÈùÐ(¶²8Êÿà7ð.6Ú)pƒWB•VØ`dP…¤†%vØ5øü¸3©´^„G_)á_j6­Ä­aÄ(Î @Õ½8½d¶Ê·´ys/¶Í5©Eì“ ‹³­5ú@~Z‡q€¿µðaýˆL+5ݺ7Ot¤¬a$x&‡G±@(VdÁЮ§zfåŸiÅç*  Õ¬¶tij¨ê&¡‹‚ëq=•)­¸úÔÉõkñL¼„Ò„lÒRUºÿ@‰¶ÀôV‘‹¤è©½ # ÄܽɂŒœ®HÿBhµÄÒ¯ó¡ãì† ô â6ÿ/ïpëpR›_múk)<[lãì¹3ôˆîD9µ½w:Šà©K¸.QÚdášäà4@\¥ üÓêêÒSY–½Mñ²Ý#ì­ gÒäÏåÔ¤|rô6µ`‰“Ù ¹†L §oó<š… dÀÜ?«ú.b°ãY:·y¶kº™\}bñÿÊ®ÿD ê”vÈbð*ÀXYöÌØ÷iÌtC<¡¡êŒCg¹ˆ_h8ô¯ šŒÝÒY]}<¸»XÚ^eÊ"É‹¸y©€óC`žPÁöCÝ¡‰å!º3“ܶ)øX›G ¿TÊ-’QÞÖ¦&@¥Í+9öÙf×­7¸´Øøú4›SRØ@-½iÄ©:³*>Q%ɹÚùî/?>Çú^Sµ{y©Æ†7òjîÝ⣤7¿!êTa<>KÔïxCr?Åë3òÂT^emãÝöXºdºr•T‹dd®-<5b=jô‰3µ¯d&øqÕh_’ú†/¸ƒð`"‰•P•5ój¨ÿ;>X†b«ÔÔ|Ÿ Åã U ×ÎêÅ ]ϼ_æ4øµ²*§K\¸†Ü£Å7¯Ð‚r_ù5¢›>‚á“‚!ÐÑÃE‘uP™xoC«s§:.‰$mJŸâ[†âÀ’!å &X1]u^®ò€‚¦!\Hƒ‡|#âí@ësü:¾ogBÙØÖS¢L¸KCvô‡3 —ÏÅkA¤Jw}n¡6äqžt€®"†œ[~Tjú)wh,ﲊ¥1ér…xÇ‚ˆçŠ#`@éWŽÑÞÅ»bsq:L—¹s¯«kaÓ|õð"A!8Õ<Õœ²D¾?“Z~RÁB_Z'J….‘¿R%~.QÂ?8ÈöRáD”ĺƺ͢ÎzŽTò¢ç@ ¿(‡Üßy"žÌË‹¿ô,<‰TT‡˜ŒÆ&Í¿ ƒÙ ‰‘RC*ã^Æ_ˆt³ÿ9ø¿‰[)ƒ„Å`Æd 9âêJ!Óìzù,¼Òп, äãµteƒFí¯kuT3všÚ¥± úÆXšO¨ÀâÈAD­úU ~‘^_¼ÃšJ9 Ñ‘ṄvxÉÇ¡r‹„—;oÔ:ikÝ#ú<Ý›»GëŸXî]u•³Nåþó׊„í”»æ2Tʵ$$"ðV)þïtoæR^MÓßfŠ Ûb:¡>ØVNZ‚~mØWÁ;±Vǯ†Ì²+;Ám¡MÚ)ƒË›3}ø(0 —QŠ5;[éò¹¡ìêî««²@¸Yã+°52, ÓhzÉIµþ‚[§Ò¥Ù3 hƉn¹’œ¨;ž˜’R-ö YÉÍ$L‹wö¤`áiS‡ÿKÞ³•Fop%"­·˜à¢íÓc¯ÖOÇæ½ŸQU(¸Z#k@~ÅQ"ÔT<ë/´¬0å?mýÎÑÚ Í騞ßÖ‡‹o½ã1ë5V¶O—‹:=Ôpý©|ˆ†ÖoÀÊÑ/›3ÇÇñÃïÕ¸­þYøÎ¿CísÝal‰4Aë,ôwõV³#ÒçàÿG mç”" "ŽHaö9^¬B:»J„Òì-xŒÈ¨ü­ùOçs"À ‚2Q€‡o#ðgkD(Í,=žDëu¸  4ÙöókGI÷<`ÒæÅ¾V{9» öW%wÍq°ë.š¿/aŠ”6I/ƒ´î‰ÐN©â°Â'´È.ɹãå:ì×îÕG"‡­¬T=éÉ0Yš‹­ÞŠøv|‰ ·ù‹_¿%×¢Œq‘ÿ1&ÏnÛXþˆ'ód9Ì_²,vCÚDËr.mÉ!ZÊníïÓOžiæ¤Tßëûà ü5aO¾QÜR$>L¿æí²SJO‚“8¤÷TÐBŸ¾Å“Õö±ïpÓíñ£T@¡WH ­0™¨Äà·#5vµ@È;>uͽ˜Ê¢‹¾SOuÍ›Þçû—̽Z¬æ EËθlAzsFX†’‘ü¹ºÝá¡Ú2m¶d#Y¬1°÷ÝçÌý¤{önQͧAß.D^’#µï~\hfêŽ|ØÚ»C!q:h¼gc{¸ü¶ùŠ`•8뎌QǦÃA’ì Ú—¨óOvŠâ×EµûÁó¤åéd6[‡…@òŸ@˜êcÚ8Eø€Sy¿Ýè½åšN’žïò_ßv>r¥‚…ηü‰!—aKÄ×­°x¸ö¸³4GžÃGU¬]ë°êò&Pa—Kõ)H<~HûeIqAo*üVX–$úª“ݸʘǙZ¯19.vÜ€”/Q@CÿLbÀѦ9ãá^¢i¬%ì«?Á¯ ,1L‰Ëxå=;$£lHˆõ°O7óÇ›*:GZÿßGÜoµúq5‡ÿܪ½"‰ï´ÇýŽÖøêW<½¹Ü‡rb1þ¦8tå6‡fɇ±MிEß›ËlŸjÌL>bY‰­Ö`%bƒSvȃh(“æÕú4Ü:àb·B8’æL©“ô†|Ág¸oë-’³ÏRÚ¥ª$™Œ# àb±{ö«‘Gn”Ÿ»¨$«ñ°ÿ ÍÔɧ'Û2Oü\ú±2ù4âͱ¸ß ›køëóUVD +šžq–ÉvÝG#aÏACv èÈ–)tªâfe\yöŸülñ[I¢cÇ÷ã£aCJˆ#=Ik§®žèªDÔòr°•öŒ´b¶+ÿ-JË¡I¼ç»V˜ñ’Ÿ54Í„ÌßœžÍ$;ë™ÍN‹´ šr“,'«åÑò.H»ùÒJÆeãLå>1iÃöí=ƒ^Ê,tiu„\˜¡-g‹l©œ„¡:·“~`rC‡^ ܆at=gôñŸxAh:KÑ 7óÔü±)ŸN/š²ÕZ.g…I«™ÒÿŒ¬Îý—rU"]hÑ '›€u*¡À ¹V˜Å‹ª f•#*ü3ïÐ1A¹2äyïYhf6c¡•KWžðîlÍâå<0¢ì|)1§µ"$2ÕÒðÌ0ÇÇÛ ý±'ñ'L GA´Ëò˜_Ðâù59ÓÌK]&åðÚ¢VðwÔ[„ÖGê«ß¦ÊJ»Â?Úç€ ûžªÃNªeé+‹r¹ÝúTÝ£¯NæCÁAž@’ù˜ ¿^ ˜a£ÂU/ñ´×c³öž(;¼<îŠ½šÆæ¢LöX8ÔI£$ÐëCw“9‰‰±É^¥Iij aÆÀÖÏáÐü`1œú¾$¿ûSv#(f¾žÛ#š–›ü¼eNEá@ ½Š±xhl sw"¹häéâ Å\qÆlm ^X‡4K‡ü祲ý&hàrqwZì/$r뿜äIyò gŒ'¼ªwy¤g§¥i$B«6‰pâbÙ}n^'@Ø–¢s• ‰Ê£EÒèºQXz‡^ˆùáã{Z)e­K彟ÄÀæè•o@Au}ĨIÌë:2¹v ‡ø ª©À;#g+­S@×E”çZ Â}}—š…÷*ôþÃõÏt<‰ö_Âx·ÂX868[6`·ŸëùŒ£ Š~ƒ°Dr¬'‚½tî¸M0૊2øÂÙ l1…˜­Bø'§-R›Pã…¶ÆPFM7öaï©SY²Âs÷‘’â²NØðN‡¥¸Š }†Ïræw:ýõý¬*ÿyþÆÇ¸‘¨ð<¸ ¿mrxG~B5CÁêõó‚ÌSN«õeijqþ‹™Ûã‡Vñ;Þ*SŠw’9«±>>NT}! }Ox×¹°ÇAkÉÝ£[Wüë Í+WéûßZÕîÃÄݯÿ/œ&±§&ƒ.1餢óè1ºqmf|Ñ™»™‡^~ ‚¼³ªÄ†jX¥€bfýäg÷õùÐh«V­+Žaã÷YNÅHcEË6G>ìæ­TK©‚sÙ?'T Á“¦läEN‰ß5’¸Ý7`wPI \=MöE«ä³“9±5êµØC Jž!NŠ-!ç=­D±O[‡¤Ît‘بÔ*nè à„• ¿’–?nh;SÓSüÂ´Å Ó §‡‘v ®XݹxgÎ.¥h6PäW»2º±lÂãÉP;'âkGCQþT •ú߸²À›Oì„K\ÓLÚàñáöf,â·¶‚Uací*ƒÓ!{ yjb®¦(€D€Á»Ÿ<­gè·\°há³ZÕõ0);6ì©69Œœ”h…_ÜFbi| 'nb‘)ý àßPq· Ù¥Ô9ddÿäQ³d¨¹žì& ù» Ÿ{2¼m6¯ÅX#ŽîÄïm•òÛaoXGhDÿ(>m¡¬´·¸'ɉaÀ—3€üJDz5–x¯9 —¨ðö{wA º2ö-z×úr¨ ߇Ó3Ú…Üp;(ŒÂõôŠÈZ¿²u2,F m%ËÔž‰œ-¹G›[ìϰYƒ¢qÝ)¢LæÇ‡O¼ëeR‘$À›k9Ñ]ŒŸ™—ĤîÃæ®ì†®,l ´}I%4)™¸.5órøGô,Øå`*k€”™H  'n27ù³¹çÎt¢àñ¸2êX' ] 숯½9íÿÌ_e¬‰$‘ ާ¼ETу ô†ŠÓU`^Ëi‚ÞÂÌ2vÅÓçÄ–D°þÐ(žÉè®B)P‹'Mh¨Ì &9¹à •ïåÆåTø²ôíãëfÿí0&DMMÅÐRÑçd› ûõ @¸¥ ÷¿è†–zÎöä© ÔdM|â«Ô»M=E‡UàdŽ zto'—ž éøûk üßr,Q|%.'ôÝ*­dþüršÈGº¼të[.GA„²¬U«Ëf)MW ÎQغòÚ| žŒ,ò“ÐÛl_¡gé vŸ&§k-)mb_XlÜÍ%]©&3…®dÝÎDhÁ8韮¾@Ü^upLP$DEètÓ§”Î`ê6’: }UËÍËsÖ.š°GZžb´¨‰T ˜òŒ?äa_‡DF1“æz‡­P#çÑw¬uýÁ þ¹^¸‰˜0ÃJõuêrÕ.åѸ^€å Ñ‹cÿþ³»C°¡–½óáäÓÁ²ÖêvÐuú¦?‚ÚÏÅÙ&¯ª›3V¨6)ƦI™{yâkÁuwt!¥>.yÒÉÆÍÚdX\3'Ÿ'hÕª¨7ÇžKäø«¶ÆzB\âu{`Ë ÉÐ:&uðHÂ<Û^¶_±8h/q»‚Òãø,~ 6…»ë™×$‹{ç9`ÐȘ¾ÆXÆu}ŸfSŒŠnˆ´L2I„l7@ªøw¸Œ ²¨FAê1¤>ÜØ oŠÝ0eBúßîçºëý(VUÈ{Á âü4X6Î%⟫ìÅ»¬ÂÅ„K "TìÞ¤-†¼aa;%Üv Úpbj:ßËЀ¤„Ö?‘<YR^Îu+)JÖA@.9ЊË­\áÁoÐr"—p"ªµ_‹V5V@ퟛ¯@Xšõ²Aè2s ÷%:f7äó„½Üü±¼íó0ÑN˜Ñ·4pT]ñgµ‰Úè‹Â!Ùâû$^u/W…,臞ÈBÓÒ]4Ó*Ñ~ ’vjó)Ghi•{øíÓ6­åÁ™ÂÝ¢_^L7 ·Ï:ÀõfœrPÌéx‡ptq<ߤ\1Gìï.I]ÏOýô¸÷mŽ`yÒR¶ùºö|ƒò4[̇³ìyß®·Ðé`ÍS¿–¡Ÿè¶·v”«‚!1¯Xâ¸/Ä«‘€vOn¼F¾¦™CMº,fÓ%ÚsÕ÷†äì&3YKš1ÃV6Áëq@I·e:täGðâ“b0Ï!ôlw¸q¾È‡p*È&€W<7úß‹óöºaÖÔ, »@VoÎ{´}?ÿ4¨¢WQ àS/¿tpZŸa}Qó*ƒlÓu<1gu“~uUêP,¤M]Èé5Q\g ˜D )ò¿÷Éù"ÒÍϨMÞ‘³Ú(Œæm°‘ö͆¬ž4ä }|™ñKûbâ8IÊÞ7–~]4Ó¸õ_n[œ4ˆðR‘#˜Ó«Â×^2®+ (Jäš’kusÿŽæiãN%¥eè Ñ¥OßVXåÃ4wRÑüºk‡:D—®Œ-ú•F{ XͶbŒH_YÓ‘ÜÐb§Òr"vLì»°‡Ê*Ò( Yª«¢QÃ\‘‚zY3á»kP`82¹ùÍì£!¯¥Ùd|Üh:·â:Ók÷ÊÜòTã°5q¾‘´#¼x˶µD6^ú×1Ä·Öf«`VD^H·)ÿ›Û™µÀÓ"§È‡~þm{ÅhÒ)0qÉv™í€- eðCV½ãñØÉüþb0¢qY¨ý«*¸±`»+ö»ý­V\áýÃf²V¦|L¬hu$áýc½fF5¡-!g}=R¯mž=rTÕ»‚¨ó*Ãàný™7J9×(*˜2Ä¥at;~cwûúïzÕjµ„«ñJXñíÌñ‚rR@­¶¤ñ¦ñ4^§¯À6?kk¾Ðiܧšqî-ÑvˆÞª·Å¯ êź¥°ÿ3±EªÝÏ{9o1문>—`!Mg~ÕŠlNXö –ý–&Ö˜qàè5éç’À‚†¬PAçê ´§ï›˜q\Nh×è;D=%€šlO½¬Ôì’X—㎉Ï™ÿ×ÌRÊJÍjLH¨_ô¿™²½`xËRÁŠ_w0˜Â2ˆCm^Üæ ‡Ãc]âó‹}”ô²þ45¹GHìDÈ÷P~p`Êáí¢$²½ +­_f~ZD©*)V„V¼~ß“nèûÉÑhRvGZµO‚WŸ¿}n´°RTu­þ•Л¯‰hˆE'ô·U·{Ò€® Ç åj`wLÔ*Ë‚¨\œy¤ÇñɶÏB+Ïú‚-b)zM÷Æ}½¦Þµ6$còwA>]µÝÃ!V—¥µêX w­mÈŽ0›²‹Šë8ÂT*‚ã>J>à©„<Úx uôh&|㞊 -h ¶™H¸Ö ¢^Ž@,œ…N®_GY«-Œ~±ŽÛ6pO#SQJÑŸ?–oþË ‰©ÔX˜Â2±1ÉÁwòX€†},,ºïSªÜ.Ú¬Ìáõ„û<ÔÂï2vm?ö㩪üÖ[‡]âëݤû4¸`ãžÊmÆðè@{gRFµ½§…c™síqhû@…´U¨{¥#˜'Ü„çºo'Ñ^ÍÝÍþ‰³û¯@Üù*üá@j:®l—BåZú Êœƒ†{-Šü'ÝÅ6•ƒÇbÉ|ããy0Mt$®^ç¼—wΆ}:†JºÅñ¹:ÍÙ /|Ã+¦¹Ì¢È¹@ÿ,nGªÓV‰–#7uõxfÅ^qdJËÙ;Ýkô³[âƒß3X™qùê@äP’:Õñ×[†ÏÀ«â…iˆZÇë‚éYskú+¶7îä M½•éqÓXJ5‰Å±žJ·ßÐ ê€|À¨C+ÎÎdrè2jl!-_ò„îÛƒ ;"°» ÷Ê%Ÿ}‹¾ú¼c3¶fE5p‹-ÿ°pǼ“-T¿e¾Îk‹3ÎPÚ‚ä$úÚgÂýÝÂ`__ñ•çK.ûgþö¦´»½µŠˆnÇ‚«ÑÉ|ýé°Þ»LaÂÆQñûKV’˜PVXbÍÛçƒÃ–Ù¾J¾àB›4ÙŒö0íFŸš ¯ßžôæèÐ_÷‹¬”M™nÔFF5<Ì@ÞºnF3Aé¶<ë"270ÿ›ñ³sò…ù:/È*-AèåZšÂ‘9ºiBfzC6¬ýì×kBÖ|«‚€¥t†µªB0Òe¹/2‘_Äx·{žL¬X¤Y«ìëhÇ̸Ÿr¬KnÎ*À…QCª"•,€¤D¡"÷òîjƧšf\¯™vºÆáCyÞ¸÷d%³`ü™©×nöXGè‘W½7‘›y‡€ºänÍDÊ]>å4 –N23ãïÄÈ ÕôCöÛ¿AÆOÙÒéD„¬ÈFm‘NykÏ—¤a,x,ßQ²—µ/tÑaÈ&¬‡'05{ÐÖªý–"Ü) D˜ò{ ÿ‡Kž½¤Þ*¦èze¥T3™CWˆ³>ƒ¢Í! âpËY43%Û›Y] ?æl(c#Ji*ûï§òåX ²ŒQÚ uÉaÁeFcG“à ƮWÃP"ºwð u›À|7޽ˆÜC[[ש2ÅËO^òdýFû `t€§ ŠNlþ†~4—ªkÛ˜6lrW£Äç’€±EÏùokdêxñ¿‰P‹.£æZfÁÜ1xb”œï! (Ï£dz¯B†¶öD9È òjŸÇràã-´j`¿ª|@ê¦Sl¬ô{ê3æ_•òÐ/ŽùW;O@‘]äafµp¦jSzJÁPèÒ»|…²)ÂR0B¦<»Ôêx[YP¯¥à¢«Ó¤v¡ç¬_Ê¢XŸœ±Šr!/¨ðÜçI!:Ébiå$vŠ5)Ïkª0úpÁ¯h[SŠg®B¿ÐNÒ$™LÕÖÆØÐ®Æáµ4 ªwöŒ ,Ê=P¢©…„ Ô••"Î6Õã&Pný0L/»É4—ù·Î9Ñkx_{e™»"˜F‹ëÂÏ¥ÊÿL(¸+º@EŒ= &b‚»Ú›w?ž©9O!1*xÜR9óhHÜ^cÎ\a±‚6w%E)6NnÊ֌ۢßùMÁå}Tqj—Å Ïéê]ÚÉl I‹?œÇúd*DÓžýׄ‘©óèR"H–ƒs…U¸½lØûä sÃmûBKJP§Ñ¥ï”)“«vâ­ ûøgHL øpSɯªg$Ù­Çr6[ü`½(cKRõâ]ÈI+ ’ݸU3Ô-Þ´3Ùz¥)hþå®}Ϻ“Žj™|w.¿mÓê³Íž-ƒyì䪆A~õ¬G8L¶-ßUÀ©ì"NÓÎ-† ñž˜0™Á£xY)ÊFžI\5ÖÄÊ*X¯æ‡`ŽCDOíå–'m«îiöüá$\ K|¶øB’"7âm­RœÀÍÿ>ôÝ¥>„ß»»8ñr$¿ºhËÃÇUŸXMï“Ô4x‹™9¸l&ìz¶\€M€µÜǃI}¦»«)LLò  ìÉc¶Ç‡ÔÆð΋Âà.§k WŽÎi§[ÉœÀGZZšGz;1vN¢,ö×î€~bBºÃ¹ë@Τ‰Y[†{¢3õâY¨ƒ <¤nX?dàz›ÅiåïD¦=ôá‚úsä6Óq, .¸÷ݪØuî©X3Q-XƒÛwÀ€Ý&`(¿]06Ë÷p¯Ø°`*І6ÉøÖ£ÿŠðÅøP<š‹\~pÕ$Èæ‹’}Y¦¼jFØW¸¢ùjh(4 çî_#}$,ˆ9dkS@Ï\VW³t7±H«àk}A¹Áä.2ÍIsZ +½wÃĈ…ËÞi8‰R-¼©fh²X~p`ÿœ-öý„—®–grXèõ *fÃ[‚;!ò“Ó9å¤ÿžQ:¾oÁ¥„:@ae ÛV· Õ+©JQ]ärzÁq=åYuáÔ|ÃÓD§_³S•–Êû¤^&C.bƒ¨ÍPª´`¶²‡Û/sªjôkàù¸™áàÂܸžpñR-¥—|X°MôÌÛ1ƒ¤]rº·?Š%m9õý2Hë­8 _Æûíb5ìxŠEäé&µ,ÂÁÄß{RqƒâåæÁ2v¨K›a5\Är:,1†ü›ápY©§æ’8 ¶`£JxñT9l6ñ«@°º\Ý© ¤yÓ½’•¾î~ Ö‰÷ãrï¸[X8¥V]²ZážÎ|µ"صݡLT%>w\ð k!¸ó±EÝi2 Ý:q‘g@ױ糱hEdš¼È 4a:å„sù‘£š×+Ñç¥ò6?dåà Žá¯*ÔÈqßhI€u7^寘¨É©¤nOHÁó߇¶Dlè‡rfk54¨ä·M>fed‘¢Q PÚ¬‚_­“#d‚G%dÆŽÐIö÷¨{Ë5ŠƒaÉ#Ú@0VÈ›=›,?EÓèNoMD.Ÿ§ù+ÙŸ’°z‘=9Œ½ÇpCgÐ>Ú¯Ne“¬o^’¾+:u–‘Ì´U„u$‹ÿz j&…'v“î»í’é%ͬG¹Žœ)¼:øËÀq}b¨0#žSÛì={8d2ñÃô¾â´RÂΚÃͬ*¨Ó”>8)Ù¬*CX½×¾^†Û¢–ôD’´û'¢¥Í²ýNâLŒxvöü˜=ô¤¶1;Ö;há¡Ö |1ÏæïàpÅjÝó5—P·(Ìl_'iA`ˆ¦ ¶@ÕÒ¿µß¼]¤y©ÿ1Å1ã$TË凅˜*C†nN«Ë©ªs¿†«»a›‰}.¸±(‰†;ßgkÁ µL(ã7b¨›™W­ª.'ÇÚöb;Å(Dng­'”¥/„3„½[–L·pSÙJh¹ç+YmˆeÏÚù‚ÂV ù›ƒKÖ÷Ð%—¤0Otèc,æ×!­ODp2!hç%®øãœËï\ú*¾Ù‰8Qí½s€6¸mq¢íBÄRá=Nþ¡d±póJ$7u¬l ˜ØYT÷kõ³#¼Öë{Óö%£’4˜uǤ0:ÿÝ! ~9ºE`dÚÜãÆú€E? €â”Éæ Û|ÏÍ>Èo]Pž©@í6<µ¨­ëdA´}iš² G÷TäÃO²†íüÓÇã¢>2„P‚>û•L{¯€™0·È³Í¶Çí'Ú‰*¡A—•—ÀÈ9!Å$ž1héÅŒ€ìçFR˜Vß7=ëUd ô™8µ¹ (Õƒ½ñ¤:wER’oñA§[™½"ÿÎØæd"±#S-ݲ%У¸/rÎXqHmQ¾@Ú)c=pEaÜÉb¤îÁ°’Í Q"¤(Ú,Ñ¥ vLö­„ fÆ7½”k©žÒZjÏN_˹¿>òó½FÞÐ×±#Þßݪ£3¤¾±Æ^q¬usþÍó/÷•¡¾ç–yLµ_œR@¾-‰¹·Ó!·; @&…#™¤œòTDÔ€½ïWã•zrÉšW*F†™#Ä)⨢D+RºÕ²tW:°#òßoÎâ^ðž‰&¨u{È5¯¬•…ká½Nì†^@‡g'&?}Bö6h+½·j¤o™XùÈXô@ø§t«Ä$©F.·~Ú^·J¬fýÌ( µ¨ÅAÍg]OQœ"fÃJ%ƒVBÜ¿ ØWta3¿>VCà]õ6²bŽÉÐþÚ¹XsõÑî@yÝ´õµawr?QÂÊÔšçjAe–„Êã¼¸âø©¼£(y –éýú×X’5€¬âsl¹~Ž:‹ï¥wymœ.Ç&òˆÛÁ ¾»BtwH.KŽ{,Jh)ahº7MQþË·Eƒ‰IÃäÌÉ4œAäq# Ö]ÄìÜ|]‹¤…£äkÖ9æž§`åEÍ¢H3MLöÒí®ƒÂXúå<§¤©öNe‰I9 ‡ +VT…A¸Âù(=!q$J7|C«y•)Mœ³ÄºRJçgÇ02xïzµ)D|— kE(ÌÂHø ¬è4WHàµß…K—±†º¦ƒÑmEˆijÞM[5DBƒ>‚L¾ âß‚GuQ:"K Éã)MìL¬ Ñ…‰®Ð Gb!£±‰_g¯`s¹D‰b‹6äŠ~E¬ŠœÄÙ5º?åuˆ¦·2Ã#ÄrSßEŸHÑêýß_´y-–ذ>Nï÷~E£h?uìV†uU}·´2É‹ZŽÉã v×3š‡Š( 9Z 5‰SR©øQèfÿîò³¢GêÚØþqVVA|bìäÍÎå ìɦãSdy1<^ØáäÂ~œ<É-Û/(PøPk¦º@rS£›9~™A¬?飷ÕAFìÓð­K(”pégìâð7í5Ã0o^F¡zâw`†ª-Í¢Ië´Z•õcµFB+õI+£XËÆgë©QšÛymÃ`²-`#º¶É„Œ_‡ù>c3÷tòüë_xÙÌw r–„5PQ—äqj’¡öó£·‘%™ÑÚztÞƒ9O“XNyä$çVÔFÉçßÛîÖ˜ Ãô» 5»*mü¨ÿÿŒÞÓ¤-’J»(Aa„³DãfiûöÑJ¸Ã’ßé‰H¢o'ãÞÁblîž¿G/N¤yÍ ‚ÜteîMú¶Ú‡xG†®6@vo4¼ªg—^zdÃz¼–Ì„Ä/<ðþ£Álõ+aìß4£'„%¼«``+Åýp—W±¨¥ I®_ÜŒÊl([åh¸è}›p"·DîëÊQWG®ÉR‰{­LEÈŽ„YÈr©c?çM€€RüoÏ@6ÁËQ­c•ƒ úhò“Ã}Z<îÁ¾d§ð¤‚õî¦ÝUƒ–ì¥m ´z"6<ãwÛ–±9übåÖâÞb,~~Ó]GÛÖÐó/A9=»ÃèÑs |–yÞ´õLÀì8§Élô€±-ý¹àÈŽq¸µÁëð„QŒà¦Ë¤“•Oóï¾Å¤.r(¸]Û`ë–Í«„{ª…¼âæ3 ­Âï܃-SÒÓk`øª ’zÚ›!4}δ.Èj(rGˆÀ`åõC'>§#eæ;\Ÿ¹G ÆCSÀþ*–ºø©tlʤ‘ì¥î¼z»¥’!·!Zf-iõ\oa-Ùœ sD+²1~F"‘ÞŽ)ðmÌó{8 7“ÎÆdŠh¸åeéRûh^GãðžÜ4Ôˆ }XpÅZæÿ¹fµým‰©ôð‹]7œ°M™—J,zÉŒiûúZ æÈä…[ه͆Ð-«¤ÐÒ|Ë£Àšvoqú}®êç0¹1(}:Ű2ËZ^sÉY?ÿ„ö{*÷F$§C?\ýÔNoÙ"¬ <ù´­\£”LÊ„0_ßVõ|ùŒ¤Í’Û–ìFÀ;bƒºäx}ד"-OgˆZÀHÓËïê”:Ø“¿ÖAéÈù¥µÎñ°u×\_ßn[ËlÚrj Àœu,ï’Åâ>2ÕB!§¤a¡Ä%Í÷I¥–$¸Ég~íJþ2›c”ØËVú‘¬a~ŠgÂRpbß))RõVÖŒó^ú7Éýî2PGÉU‘ɬ4YFÀŒælAq¸¨Hmª™¹™ªf#Œ)A ª/)ųGë.I‚8޽;騉T§¼±{VÚ¯öb;™£äˆ8`×4µÅŒìA“í2ùå®ùmž®$ÔáDKv ”(- H°¦aT¾ <¾C‚«ó¹e•¦G+`w¦™í­xQ| Eå²Õ[ƒBþNOÓÓdMÊÎ|Œ±ŒU¤1ü& 9ükýf¯M_õá½×§ÏÑQ ï ¹®lfÆL+º,­x"â¿ÿÂrü£Ñïª{‡ó."‘_ a]umS¨£ƒÊÞg6_mž »ID7Эïë]%S|*¨Uq„9CùÝðÒ‘Vsq ‰] œœ:æ¦åóWRp Âø¨gÇékˆÈ=ž.2x…£ê¹ €Jè„0È_5ÈdrþH¬!~;5„Ó­;rH×ùEc$ ï¶´|‰£ú‰Ðfv¥ݤÈùY)‚º.ŽW6+ÁC5&ÎsÉé¹Ëü5¢Ö ®=÷éÈÙsÊv%š9´Å/ºV'y$Áù¼¥7γÝ*¸&¥dJ®íÁ%8XÌÑ XÍ£hÉõ'…Ýí^ÊK›ø^K=f§Ž8/ðú˜¹üû¼iå{~TÑ`ŸX)µQÙ„ý.æƒ'§®½&<»Ù:–Ͷ­¢ù—É®(ºÉ}Œ±ÚôÝõ_Á¿6–®´¥ª)ií·µ¶±¢¿Ï)NÚ8Ítd„jCAú¬‰s× ƒ²«®ºž‰$1ÎHª2M6D!$Y¢V<£—©ZìzsÂ"–Iýz×ÇK<ù7<À@CÓzrº+21žmqõÂ@yú‹bNþÚlv¯ãËÌ?w”´†§•@tå@Á:´ @Dì;%¶$èͽéú®ð†”àŸƒÑ"SKƒ<6™oHõ%æê&âèÆ(PØ}}J„ô ä£ x±9Hzáp*³È¾ªƒÇwb¸:i”V(ý+ÓbØþsËÇ=¸ ½xÉ”Z¶è@µDÏX\2<Ó;ì\GwÛZî ÚŸÂ/ͺ¼®åM#ʉS‘HA$ÛcByŒúf}‹nÞå7»?9ÇN áuz*ÇI¼¦±ßº=+¼Ýš¢Ïû œ&MІReñÆ+À›8²pÌîj©ÌEqˆ9厄³f4G«µ¸oE`‡ô/3rxpøUi^ÕßMßWÄ•0ó8Rx“}‹ìÂ(5>ñŒ ¶R$áCë„W1›)5ˆ€"ŽÏË]—¸é78`Ò´ ÷¢Å¢ƒæÙ´ì˜Ð=iÍÒþ1S9cPz.žehn×Qƒt]sPvxB]¨ÿ©ÏÜ›ð±‚iú€¢>a(quø/Ýî ëùÝ Ù0C¥Kòd'ûL·Ð(¬Uév=óÕ ½Ý½úWWEáµi€§ÞüâûCaG-µÞ«Í.õ5ëQc$W„—Us¶·KœjÈÅí‘)^^æûñÁ/¾Æª“»Èƒ­å†¦`‹]átC|F—)Y´å%D›Rœ¸ªÊP ¹ÈÊORÒB@p³ö쉔÷œoG‹¶7½Aßí~< Có;ê«:WOÓÄWÿŠ Ö(ãÐ<Ù¿¸Á®1ߢBDþ6ÎÐÿB¸,¼$Mþ AÌî2Ï]t= ìa¢éå%úX®›1wG×GZ”¦‘Ë=ÂzÔCè„p˜]YC-MöC”q¤›JÏ[\ô);Nðïê(àØº KeNtºDÖË`ŠDêu2Çjb¢f)5D`·d¢,3ŒÒGæFK̳Ù,²d0jµ„=ýbΦµØÁƒd>²îprñ*M5žþ„¢ŸOºZÝQ¡ýA˜ƒCËwá6“ÜC=>;c2©Yó¡6:JG@¶ñCoŠe,×b« åë;þð??³Šºìï°in#ß´æp<× ¬qq'VÇFSŒkƒðÀBKµØvhÓpzÚjÁ.L -%$&Z\Žuwše‡ï“ïJâÞÁ&Xrí«Ñ/œQò~ÔåÑbSî݃‘²LÎâfòÆË¯ª¢, 0€Ë Ûl¸š)­#åðÁÔ ø€ðº‹1À^é4ƒ:·ÈÓìéðû#YrÔyÓWÝ–ƒ„$Ç ØE«ËìKþÔÉú¼ g óÀ—C±6¼˜žBÕsˆ× ÙOÿbœÐ9vÞbêÈóþ­–)¢¯U¿32‡äu,©EDÉ”Ö2Q'_qº1K(Y³? ”©ÛŸ¬1À ëœçIÓ„,e³•a^U­w­gdÉág]Ú ÑïÔ|Ñ5jåkoC¸^–2¯„üé"€è—abäŸA™Íy™ k ·-èû'†¬Ò‘® |p=õ>ϯiuÅ5(Û¤+CÀZȸ$t‰½´\&cCÚæ“²D“!¤‘Û˜å,~¯uu—13™Ú»«ÖÐÃk2Œø×2"•o†åÛ€œÌùÛºÃKÙIf6€7mžâ\„Až ¬*$s ÷+¦­i¯¦ý(ÐLlÁ\:½B•SforÑé">Ö„ ÆKÎ<6A7iÄ@WXÇšADÓé3F4ZûR= Þþv×G7Ñûèß=ØZ(U#Ä|îD  °"EÁ檷p<¬‹ ¿ùÈVVw!¡Œqy±ô®kίO*e ~WXöîÔ$AcIjd+¥V_UˆP ôw©°2¦°®ÃÒ¨P{5žƒ)GÆ^q×PÂ2Oq+âºgVtÏ­nëôÓŠ§æ#n&vuA:;‹ÞÛÓýL¦Þ1«žÃ>êf/Œóg-ŇÓ¦F‚›½ãô÷·³‡´¯ÆLÑ¡„¸=ù•“3ðÐDO±ò»½Û 5nš^žÝ£¥?4ÁEeSl¸±sBZ­¤>¬·»Ÿ?är• ù ü^ª{^UghŒJ›ðÝ´ÐsÁL…{V!A<R„G,Üèõ@B7T'J˜U§ˆSšÉºË `åx?ç!ÏPÕä\4öâôqrü—Úâ~•¢’ò›·a?ýí«~@KJ]0;´lþ—£Hˆ¶Ôòä4b–9¦üV8 ¦’DÈÎ禰¶Í? kÖsš›@룰†¯Ïtq?276V „1š«ŠáYX2r®ûì©éÊäSßõ¯U/ƒ8íG0‹¼üCå’ðW4ŽÌâíîá9nÑn,­ €©Hý.€Ô!öø91L{Xg®ÔŒ÷¸$~Zœð´.JO‡A´© \ÃïÁÿgTf” H3²Æ$ðÕ£ÈWÿ^ÌY½È¦œ)4ÿRèöPÚ•è“Wx§œ´BP?.x†K¯Jm!üÖx»¼{~úóƧDxî#:F4ïëq¹É[ªa7ZñKÓà¿E7ƒ.ùïÄu\™®‡Äu6BC4VÕG뎫öͨ ÑoÔÉŽ³V)`rϹ¡ûÜÇ_~z)€C!QìXP¸`I×sçvãW~¢½¾´8à„än$H²+7¿Q³Ì:à [CHòé0l¯]Ä(±é{aTÅeÒOnØ”dÄ(Å 4I6ÏC¼| ÐJzGBÖú³¼%Á‚ƒsž¢,ûŸï4»bÖ”iÍz 3YŤ®ÂUx›. {¸\”yý2íÔA2>?P7q¬±i:f´&7;ÕôŸ¡m§ ã;ÆLœW»ÿG Ÿ®íVÇ­–Å µ¦ùb8¯l\7ˆ· ¡ÅK´'uµGÒgŸr˜°ø%ŸŠG&}¬‘¿øŸ*ÌÛë_ë^Ñš¾rI £LWd,\œ˜ŠïœætDVgöJÍ :'í ñ¤œ_ø“›À‡øê•ú"À&ÿŠ£`Å*rںߗ:~°‹ûgR¡(Æ´×%®dû´>ÁŸì ?Ò%ÂUF|íç²¶USA: pMßûN$”` ö|2íD×5Ný3/\ÏëDgÞ/ãB¨ÑæãÒ;eÑraá½Ä„7Ôq/mÔtž%%^:{lœºØHHúêé6ãyª m‚.v¯t^@€wfUd¾‰0ß?i*Ìp›¹žº0äª&FöÊoÈ!vcG~ ˆ¢J-úBÿT´AE¾1€q†RßñrB{ý!÷¿W 讲XDÇÿ-ù9²"¢ÅYÉù±id>ù{ö­Œ‰\ýÒ„¹äÆ{{³ØøˆØï2¡áÀÅDŸæã:Hî¡‹çê¦}ß'Bt>~Ú»U¡…­þŠvÒ´P¨â£&³Î ŸGÏ…T"«ªöKŒo‡òó<#3.(y&`k÷^¦€ÙTn«Ò;âÞŒ¼ÿwéøÆÈ'±Y#ûÁa/ãa©7² ŒŠûÊg˜É€fÕ×YXè9ZTµC§±Ïˆ›@¼‡“Â+]ÀAb%Ï9+§ °äÁ2æs¤è*ÏņIì©`r Ý››ÿ¿Ñå°àa“„Di$ä$‘¼«Ï¶—"%á§7´ÐHøbЮš¥ÿÝzØnà›¤pCÁ¹ôPµ‹{}«¦t‡¡¯ÎãyÐ!€/7ÇCÙ9D"Pj·+9<Ãó´ã§}Œ³V‡A§PL7¶d¸î€CÑC:XhºNÑŸiõNËë ‰ÌœoÖ”Æ~ êòCɱ{R¡ÕÜzkK åP˜Ô(š& Rª ¡«ŠŇ>0 ‹YZplm/data/LaborSupply.rda0000644000176200001440000004227014124132276014726 0ustar liggesusersý7zXZi"Þ6!ÏXÌå‚D|])TW"änRÊŸãXHµ#Ž&–'¨Æ¯Nï÷Í?³òùÄ,øê&%j%â÷j—XÂÀ†7ö/î_ õ!ðë+¥ö“ jÅ•Äɦ¥Íušf)â#J‡ÏtT*Ñ;£Ð{fµ¡"w9#ö]ÄPªöÇÛ#É N½8):I§!¤xšl×p;Iªˆ¿cž”P Ÿ¨=¸Wö»€ÄïY§§o Jä\ÿ[$›ºŠÞ7ùÜ(;w€_µÆQ ·© –J Ý–ï‘u.F‚wò§†ª%i{lZðE‚å²üƒ}Ç1-ݲ©$d3¨Xö»âó«ˆ')a‹h(Ÿ÷³Üa°(·d‚ŸÅg/’ ®•øÓiß—‰ÛxÄ™BØ£ð*ɦ[‰˜Þ¢M–ðªDg<ˆãïÛŠ0/ì7<±w*/õX¡yUç="¡ABæ-#1s*ýjåîgò.Œ]¿s e¬MÏ™fqçH€Àoà]¤„}'BŸôBO{V¥ð³™7 ºP ÚMæA•¼Ô_!êE¨ÑÖš©Ü*)XÅîo† |œVïßö‘²cãɼŒ­e_œa-óô®ëJ²¸#Q:¶é ‹iY©†Î_¦lQÒÖrêÓº*ÀaãÇúÙZÐt å½ßGnÝT–äD=k£4}©¸s0T¦¶vOV‰‚\‹ŠR:ºBêÄw䌂×öXJÚa3rjíâuãŒÉÚßo¥=Ó £ÊT'”Rµ&/vJµ<àÔCCw³\7U¡íMSCõ3èZ‘Çð­$ý·”§“–Oë)mà2l˜.IÁšBx9} ñŸÈ@0Bd©k ­aä/% 8…©Á£j©©Þ3x%¸ìkx¡PÂrø!Î:K†É¡æ|vº ‚|+Hè\üFôÖ"3û(*§Ä8w”b¿3†¯º7ù÷ÛaQ<`Lí®_¯+a<öw –{‰ÂŠ×nïоGÈÀƒlªñVdÖv¾Ê•{Ù̶©—¶'å·Ò’M•¦”áý>AK¦^³ôWjß ì¢þÜs—Žw‹8Œ5³ óÜAo2cÁØXÈœû;DïÍ«–¯Ñö¤gÀî,Fèà á·Ô&Ÿp,>×Îôæ¾Ú÷̱IAêÐðAj„Öw—ÐË70p(bwl3³„””*´¤´ò¸iY%pŠ•ë°öÍ0¾³éWÍk Ʋ¸"™UL&=Å9p5ó:Ü£†@Q} Çgìqæ3•ïm*&Ç*O¤‡]}ÚÁ$pû—:lžpQÕ)&OÊ ?¯sübF¸áñRoò²>vÛ±T>ûò#ýM±&ýŒ&vuÝGe…%ë|‹mx5Ó¦FvKZ’ÇžŠìUÓô¼üÀá¹ûò®¯ó 3Ò_•Ó edÿäe§v{5qÇð¡9Ñy‡´¼¾~1›Žõ*ï{öiFí}J¢Àf{‡)âÑÌ)gx["Q’»¼ñ¼ y?Òé£dÆcÖ×l >«t+ƒ¢­c§ÄÐG÷¯Ù›Hß ;°U}ªMI¯P^ìÜ ðIvUº{N]8"üùis¯gR :^ôtÑumÉJ:¾@ m²äñÐ*àš¢™œÀÜÓ °^—¤ã[šâC6NS)q[BëºÕãT(þu»¼Opÿ+rKÈK[š¦œ~€dú¦*Ö°j–—¦1¶Qº`xhþÒ’WòÆPéôY4žìjÁT7™NŽCî}16 ó¸ŸGþ@|ïWš!ûOñe6ð¼"H ün§Â†dd]@±› TùX¥öÎÆ³X±tì¨ËaÏ öIš ,Å ¯mAsµcÄ•óx­ÄZ&ÌÝ·ÄwâV­YØOpýÞüê /«è.C nã(Bæ0µªÌò\îËMMæJL‰;‚‘kN*"È¡z1è®D$Å2o‘Št~èøO}" ÑŒŠÚò¥Ø$ÊFOíPÔOñtöñ<žíÚ/ÃÅt-³(0C\çÁ˜i>avQùÑÂ96Jw4ÓýÑbs¼ŸV¸ “añšØÐ¹%WK˜!>lPð‘%’è4¡ +vÜ2p,Ž×Tº§—rnºD…ÕW¦ÊΠа󢼦Ÿ\#>~NÃm™§Œ;r²K›ÎšáÀÈJ€iHöª„·Ñmh ¦¤Fº©Ät-ÞGÜ(ƒh Ì}N¸QnƒåÚºšI R±x¯š‚´dØšÕirÿ,d‘ [øŠbqm!ÁëºòÚÝØ [` â>4» ‹G˜ÎHG>Óè hœ Ê>açô#—<~`ƒ=¤Ç58vJjêï’5«ü^®¸˜ìæªê¤U¢úzì jC¿ÍÝ£fÒúâõRýr yÛÔ+$mZ=¿° &Ò½[WÜ`å³§ªÑç«–#¤^ë2 bïÛeL(Xì‰ÊÇwzÊâbƆâGqØ÷·„€Éw¿žqagU×á€íüSÕ^T>ïãÓ0°Óïö¬Ië\üL ø¿÷m¬¯æ³ ¶kË7|Ìë%ûXÒtÁyò„éòeD;÷W˜À”Äõ”ù5zØÁé/~úG˜É§‹K'iüñJÓªF`‚ο½Ì].ÚÚ ™"ãGŽ@¶_¿S[Ì-"øKc':Àgž$û „ΗVûð#aN&n´jfõ^}£ú|ꢯ+ã¸Ñ"w-?­/ÔÑØ=žÆ…VñhêïÀˆÚT%( ( VÓøå %Âx-V¯¹ƒ)w–> G“>1؇Œöö)|%ßù“aÝ –í(0Ú> ½ÊìÃm`ªIÉq¶-(e²© LoJ² EWáKOmÕ ’[_¶’ Ñ4^pN"Ä=&hÅíG=±¨Ý*¯Ýà·îŽs²ëà³WŽþ/3j^¯Üˆ,ÞâSÓ'ˆ7ð9^Ý@©îêíúøÜhÅ(›ó3Ù`Õo¸Ùˆè7ֵƽܮ„%ðü§í,Î^2nÈß¹/ˆùÅQ´"íTGš¡‡òÃ.OŒ'Émª>‡¾"²†‚4€ƒpA3ÒŸ‡ CÒË^cU1U^R“uO}‰©)Ð*îO˰>¢ Ôo+ef“ŠÖÎÍÿ«J;‡¹4Ùj²¶3a…Œ0XœS¾Oʘ,ãÔ4ã…µ¸™ù6hnao×;O.ЦÕûT¶ -–Ër)ƒJxöˆ OBk©5]Ú¯*¤da_þUÕ:{Á¶ƒÐõÄ*½3&†h”¥Ð#Ìßd&ž¢¶A3*™Y0 ¤’ö÷qð² öôÂK½<XmøŠ„ <1y‘^å%ÅÆ–¼‰—û']Y%a‹lÖ ˆ¾Fû š•Ð>Ì¢-éz" tÉX”í2žSŽú3‚5w})KHÝ[ÀbüQ‘ϹœÈßÁ êÚöu» •¬å«™£Ígù0|æ4bZ§€ß¡„dd/z€ÑßÄz ·Hˆôu¢ÉÈÛ}~+Sxfeú¦¾a@%IŒÙ• 8-i]‡$ÎM鯉r·¥ÚÊ(²˜2Úzõ=ÍL/i)§·£NîCÀ .Ùmæ‘…ü±S2ž¡X<4¾£Ì¤ßÕÀ?©ïÆYmodob"K±<ÎËfE6òäÐòuË!×ëãsAÂOàgjÌâ×7EÓÜj´ëWMAø<³b‹$1NÈ2‰*L ©4ÖËÉFkûÓÞÂþ÷¥[/qú§ˆ´jXD‡q§÷§%ï‚' )™ùòŽ"€9ûºãÈû0ŸÅé™ÖšÆÊpþšjö¿KÉÀhJ(Iü¯ºŽWVøÖ§DÊ®ãêÔ¥¥à}†^ðkàSi}dÈxO®ò+b­½aó¿^ö;USÄig'kc׃µ„~Ï#²ÎçÊeÄ_ÿí´ääY.® !ÿÎÀkªuܳ¡ ˆi!x l[4¿pâÚt"?f³«]V@õ7ç®ø¸Gßáì·Ò†jWzS®"Wdcs0^Øl¯]hï%q’díÔÍum6æ^L^GnÌ{c b”ÍV YÈ`ë¬Ì­ۿ‰Ç;ÄâšíkP·(">š|Â)×2÷{½ÛaMÙ«|Ñ}J*]“·w }ìPÃ߯øË³Œ¿èŠÞíœèm×®ÀˆKáx–ÅÐâ$Ïõ€t¶ð¨îá\æpÐÚjU†rN c(E5·0>ö 1d{ƒxÏÐ!S8<'^üØõ< Ó(ï¤ÎÍF§܆L νò Á¦TÒi¯Ë ¶5Ϋ¾ˆ¯ˆî"²(GR¢Ùå'²'›ra¬!Û±òºY42ÃÖÌÕ¦} kw°Í!ˆI‚Y”‚(Þ>ØB(UtÞzè—ÂsƒV™V䤑Ûó™+”´Ýÿ=#JýyêÁR²=›rA´%DJY¾|6ىƩÍx0xµŽFÆñV–(Y³ÿEŸ>—,ï‡Þ:ï*,Ø,[ät—Ñ3ëIñ¡âíB-ïnxÔÕbõM¦z\¾ËÍ{<ß™TÇooD¿u„’3%+ÖaT¡,›‡ºÌŽÚGVÕ:3TU"Z0—Âeí¼Ï÷b•ZÃ&“|’ÓÁ«ëúŒ•tÝš·ž}XÑË æ–ví S’‡qp,¯ÐsùÍ›”ʰj™èþó&‚›Žžo+ëÃÇE%†oQÇZFð®ðŸi B¾Öëâ˜)'Í´¶ï(²èMÌs⌒– ^¡ÇÅ é6I>šôÚ[d»9:Œj(NÒ€¯ÄÎ…4üÂém „¬'.ÓÂ`hÎø7§Èùš v»8DHSÑ?8Iq7ɱ E±R\¨’«htÛÎ¥1x³ÏÞçÙ=6ûzb¿›îëE×£ë¸;`z¸`|J¦¨qyoôäͨøî2W«2í ‡¹71LŠ%ñË,•41è|Vý³+¢­¢‡#«0«—Ù)µJ/R•lvÔqݼµãôjAŠu¯bH¸»™“6TÏbÖ… 9„ÀMk…½ËB¦èáXo4³â}389b¿þu%¤ƒ!eþÇ,ˆû]B¯¾Zk^ÌHsyUQ~íï]t–ÕkÚja‡\|ùˆ6NÉÏw´c³C¯³ENÊ ùBìÝäN‡½rÙ˜C\0÷%‘Ç©ÿR¶Dª+Djš—?§½*˜Ûì˜8ñµ³°rËÑ“þ#¾s:Ćš\C¾¸”w)»¸~)CúHŽà•FÀ¥üËgâ©ttå,þ|x†ŠÿÛ$¼\oÆœZ 1‚ ذ#zïh#îßßGâ‚”,‘Å Ãlb„kË\3Àû3{Ê` D¤T[!¸š¥\âAs§Æ$Þ³2Ø5,uL̾&@ßi”X±“ý,{Nšî*ÀØeÐ% ]²:‡Z”üzîtåòÝ%Zã¤âåìs.C¦-“ð.ñÑ·{žWÙ> Pt†gc5Â(`GáfÏ6d:ðáLÈ/AEG}÷©Üoª®O½®y5M@—ù”´}=PYᯠ/ò2ʼըÐ@ QJ!ÒË7ö‡ËÚ§ÖaÞPÂ:ØDŠ) j'­=f^Íc©oVã<îÍuƒç<ö%™óöÍÕKFÍ;'dRz>ŸÕFîã#K‘®ió(©e)ˆ,*šÇ8Ç.“@äEOüð° ¬w%±²SGO¼‰ŽïžÛàÊó6ÕbêžhýÍ@4' /PÌÄD1¤&N“-9¹'Ò°rߜÙíjx e9|³Z}@Ï"mŠØoÛ ÿ@´áž½Ò³]ô*|oãKÊýÊÍãp¡ƒuÙ OZÎ]ÞF—u˜~ X“¢Ö]Ÿrš`wÿ~cªx$L2rTÇèúØqä¾I­X=RM3ÑÏ·¨Ì½³Ìƒfˆ}VÇIÛ"Œ{žo§º”n¨Uê¯ß½ôA•ºž«Þ€–G ó/zñ\tÊ Mš©ŸB%¹„&2öê›å'ʦ”{—e.ùŒ JÖw¹n™¢Â6øÿY[U9,5ŽYÚó±ñëø|]Y|íO&&Ãja-ꥃ~èBbÐ*4C$’ê˜;í˜>»bºŠŒ¹¿ZC÷RAÔ•UÓObú›2ƒärk’i¨ðWNe™ÇÒì6|ÔBg„Žþ®ã}³Ó\v¨É=á{z›6‹†x¼F„ϨFîβ †‘‚HÔW/•J[ȶ| ³¿ú$-O¯O`ÂÉBìÏóA~T¦Õ¤„ÍqlO˜ÿêN™æOû¢¾ ” &W%õ†Q!i¹Œ6d½8Gïçºr±/#ÞòIY#” CG¼,ý¾@—‚¢3g¦8¬Ž.®èa¦XÞ2Múcbö¢ˆª­‰îiòÛÙâwCäÅô¸MÄÐ „xÄѱZzñßΕª×&)ã?JÛsJšR Pño½2lV»—Så$ì‡Ï Ê›y^xȲ¿šF$/¨¡žRzUx'_7¸TB¾Ë#?Ñ?²ˆÌ ød™Ž£"àÂoÅÄxå_‡ ¨ƒØ0Ž·‰®ðÁÈ/ÚÑŸ?"!ëD%çäðF.v²l'8ï×fÈ."¤©‘_A9¢ÉzW1?ÞñAP`¤;í«Dœ+sýÕ7SðHýž”ù²ØBNË~)¤(û¡DgÈôÅ8[›v|“›×)×v‡Ll ™¦'ûqöĈ%;@ÉÇ ¾™ø(ÄѳµGãÌ—YgÏÆ¢”ÕLÎîAdVø” ©÷z@r‘ôQ¨>l’ëÚðk§Ö¬ÊùÅ^3ƒ|M9ƒ“K´æE¯Gzg‡<œûV6­¼Nݧþ`\¢-•¹ßÅÖ?ö–&d1É’TUIw2&ÐaÍàÜ»Í)|’´WÄ•À[úë' &e„±ûª§Aoüb^JC531V:aO“@bÈÓ;ÓÜTêëÏzn´GÂÁg]•GçÄl—%³™º·>@…1È]¦´%{<¹›êÔK‰GvKó ׺$¤õKV)è¸[ò :@ [„5&·^>ÿ/5•;1õq$Î¥°t@’Gó: 3IuѨÙõka ã¯v†a“ÄñnÇyéY¼Àõ»\ew!3;\m´EðYËÍ(Bî”ÈB<Í5Q¢Ù\%$áOQÄêÕJÂßRø8û‡ŠHÄŸÑÝiBˆ6#QÜþ.é‰Óˆ·÷A«9&@­Âï 4|£@4Ij«ÎL'IÖºÏ~̹ Ø~kgH‹l´œ['@z©ålfµTáËðP—]R)]J œ!x³Y²¼Šñ«ˆÁÆDbrœC0e³¼Ôq ¸Ä /L qs‚‘­IB–žÂ‡çŠ­pã±ú]"ñm,"šaE#F%öèYêì(S\ L}¯ç@mb|ïwóÞ™fo¾'Çnµ~ê¿xày ˆ¥ƒÔgHˈõB–‹.aòsÕ}¸ì–ÄZC9›†y“ÒOÒÊï¹À§¸æâêDïrx=±}/.ßcÜ9j믿(Þ;Ð Í8ÄðÑ’Â(§[J,[‘/V\’ñ 7вH´Ÿ¼;q y»¼(ùr_3¬W[ˆÊ5µôÚ­•ÁÆR‹Ûà dcæÊäõÝé°As-<Ò0ŠÆ£?Gþ1é.‘íd2`ÔJ ~ÍNc÷^^M zº œ”ñ³«_p2ñ˜§næÉš™„òêÄ’ÕûµåÿqYŸWYë"•Ÿ‰1žš¸Ýé7ÝþüOÎp=-Ï@ERl¦}kÞnqPÐ^ìNãæ>ØÉ¼6X Ö9Š úl0nU ¹ôi”ÿ€·”vT"gÍ€ïÈ+ð·ñÂ…5é^GXG îØ bå1s™Cäwb%øçlnöWo @Zˆ(xñÃÓ>¤ÊÞS aSõûÌ·EÝCŠÅì±f]`ÇúÀ£ F°‘‚Ô_ãˆ*€ôs®¿‚)·=ÙÖXà=ò&Žw¸O½Wµ~»_È ¶} ÏÕRâGÃYwððÿ­Êñ6w±À™çÅFš/á"`ŸúöõfZ;dôöfe;cmGII…±½uäl¸¶C²C,¯xF1OL‰lðË ÷¸èªÊr^,æê«cî4§Vª XHS³€±œú•çx¯³|´ñ0_&Ñî³22îÚcC‘ù¤öG8^áËœ}F«Ptœå'8që‚z­,òÄÆ"Kxdný‡.Ÿs6`+ŒIÚófs†ì§{ åfÙéµvFù´ÁÖ“Yñ™ÉÂ(åLÈq;ŸIâÛ§¯£ Ê][Ü—^cv­‚ÄQѱ„­Ånßï }q_¶æ¬3ÊøÅɈó/FŽ—rߥ œÌ³szyJö‡7÷¼”L~5³ 5…Q Žc%;í–¶—¸1gš˜ËPSO/¿ŠFã:ËRJtÿ nzqšáxï)KèÑNªää«HýÙ­p°…²qŽœ'¸:9Ö]Y'?aã 1ï1IåP) OÔÕÙ«‘ÇNŒöòSÉÄάmBÅñÞ'‡bW“æÇÞ{-ë¡‹…ºð-óG”öéLñHB¹h·îK„hû±†lÅ•š›m²:ƒÜ]!³}bËb_ŠY>¸Û—öé±ö2tÜ‚ŠE‚¼c»®÷ÉjFŠ­ö™˜úm¹×醢÷`þ3’ˆ%^ìI÷ë‚™­ìí Ï(Œ–àOüî#øP»klÿæ±?éÐ3ÃB‘ßšçkp—:òÇû«dð¾º÷{ÈEl¦1%tL¢c¼“ZN;J?zØ|¿5Z×}×°÷ G×h}2è7b8‰{d`0ÎÇé»[ÉÀކ Ô…G~A*|r‚,ã&I——þ±Å… óÀ—* åT9/i.YûgM®ƒPº‘›M‚Ž@Í”† þ`æûÍ(à«ÏL‡Ñ;8%ë«·¦UNX*ñÊ-ª²ƒ-vˆéAxîÞåPºQ%ÿæ#Û°ô´NzÙA^sR¦ÌQ:‚Wí¢§sRû Û,+Kå ·VF~- µÜ"&„ uvÏánŠY(Ök+­²j•ÿee³›Á¬ånTø…³ÂVóßô^ÐßCVmiÍ;p¼]$çŽ5'¶¶)ØçëïlûE±ÄMTcäšZ}J¿Z¾9 fÀ‰€ÜGÒÄ ËŠ­Èü‰·w —.†w[Ìö«p­QÉ™¦aºÇ›S#”;–pE«áóöÝÿRåLÚ1÷jƒ†Ù^ÅCµÈ€Ch¦ýË]Œúz úîOˆqs¤Í ¿×ío©¼-ºÇ‚/h§°Z¦Z@f÷Õµµ³{NÚ¿Ú¼si3ú¼òoŸÀÅE¢\)a¹¼ûL°½°Uœ6_°VŽû·Ù½îÆHžq×êÕ.¶E¥²Ù=ˆ:Wºe‰X*‘/ëmâ34> º]rY_L–2ÉÁv¤–9Ñ(6Ž ÄÅ5Gÿï#ŠIo‰°­$~âVäD'Vÿ“Üê$5=v± ‚B2Øg¯o!÷#é/–¼ƒT •_‚˜ÁÂJ$¯n å¸ÜtÑÒ¨,xŒŸøunñ«*\Ò#Zzg£ø0¾ï|‚Õ³¡²!N>’ ¥·Æ†õ÷BÏ]~Ù€Å|_[6ò—Hë¾­jr€Ê¹Yq1§`“Ífî†Ò<íavaÒrüˆù¸€®ÞÊ*‹Ö±•ûÕí±Ê«%á¡?d­Çàü݉•Í›®¨#zð>ω4»Ä^ßÞ;ØW c­?]¿F¾J Wȃ¢P]ãJ}Ìç§A%úàœ(‹|vƒrˆG²ìmƒN¦pY’!’RèÀm–¼%Xƒ9Mép¨õ¡NKæ®Î“Ø)»Jqç‰e> `›nÊ!¦wc²ÉëÒ)DŸôUÀ¸ýÄ輪s"1¢o²etÃ,{ÄÙ9ŸtOB Гv);ÅÄÐým™I£˜qä î ·èïj»9"V¤Ê4UKj£núÀ/ÓYš8ôk°  Ia(£¢½6¦HXÏù>™iJW?[S JœF%7â Ùm$õ²9“r#Sév[ÿ̺L?Âdú =‹htk>€SÚUÝW>†ƒæÀ"(Ž=0$™Ø=´U¯”,ÙTŽhoM/ktE6¾W}é0™Ê—„E7ª¬‹#õa•–ç‡K,+TôÆ[ Zt‹×£¤»;ͪÜfø^#%~§tüÈF šhì’¼¦ïuÊÉT¤³(ª‚¢¼‘q>X™mb€óúSÉ1|dd‘†âë8áwöVêQ@·y€¬ƒÀߤ àBŸ 6hµ4Fë¼@ žü’,c”.ó¥ž[żT¨^TA} „ÃHrNLyçæß¸I…;¦›Nª{¨û±‰9Ó§'÷æ÷~Ù¼ÊøÚHƒÊar@®EŒ­QÔö¸QTñl„(7˜aôvùpŠ^ kÿ®ÌÏ4ýÌ`wWÑ}¬ð3N+¡ü„ƒ^öh_;ï­m35íg\ii¨P<ƒŽ¤I äê"]qîÅÔ¶H§’68@t{oæŸ<Ä“Ý_(ÏɾRI”S€bcÜÃÏ_ÛÂÑaì‡d&œs*.‚ˆ2¢n 2.$̘ßPéÚJ«š÷œ„Ì:f1ûw„ÜîðĘbâg&k­ßÏððPU‚£ 1ÝPض/"¢‰ÈONcVœèÏUòt ERûÄ̦IÄ:-xD¾=À9KlEVæí±ÐäSÌp2iGlT¨—é Áêð‘C BR…¬°Ê> Rý<€O¹.LtI4ÊÂr$,çR»gî_‹>µ5;µÈ™š½v16DâÿÑ -Ûu&«“/H‰ð~·ßö]«Ûi‰>B‹»õ€uH2X”Ô_v Õe¯d׿Ž>”¹ gKްpãwpjµ”±©7ª¬Ý-I’q´Dîip|ØAÉ sì&:¬a £û,¬Ù>,ŒÍãTKŸqÈ Æ†Œv€î>ÈL7¸K¬40H`2{W!+ÅÊ’±¿v€ó“>ç5â[2x]z©ôÑŽäìgÜ—Z–/ó­ÕcÀ¯*£”Æñ«cžÁ%£=ྻ'áåz?ËO ñ1bƒ¾S1*ôJl9ή·c¿9¿÷Ä)æ(¢ã9EMJS /‰{oë‚é9¾$ÿÓ¸]^ô=пHÎÇ+º²ÿö\òà·V&3}.,OMÉß ö WáŸo'¶Ë2&!Ý5ÌsžôõŽÎóœ›NˆU°¶fuSGÁ(ü>—úw¥Ûº¿G(×¢¿~T7ò‚—Y“ =T°êGjÎfº£þÆ©y£¥Vþéãy±>b`7¹Êù*Ïy_€1ë­tüÖƒ㎶¨÷ø¤ü´bG$áÌØzžÇâYI›×ÃÁ˜ ÛŠøëÙ}œdîÆ=ðº„A­Ö Y®üô–1=¡D‚ÄCq~b°–N†UDÆqÉ×>ñóˆ…Gí!Š£äc8F1)¥þ©©MS°ý*[æ’)YªÀ]èþ°æ„V8üÏùÌkC˱̎tzÐûÄ|l¡3OùR¤FÇzmÂÖ±E¾gÂÿµé× aû’Û+g¢v£qeý“Oú¡Ç /˜AöUS`C¿“‘'q>[Ã^ž‘¾ÿw Úñ‰'¤³¶WéëËONùŽ_šòÜ3N¤ÐBŠGl7ä,ý ÞãëÛpeC1åRk˜†Í³|CxÉ‹o­£OÙFòK‰-EøYÈÊrÎ6ÄvÝ~í²!^…4v«Ç ©ú7U6ûâ¡{âùJœöGÌîÑßo#ÞêYM*¨P«$â£À‹¤¨k¨L¢;ÊE;ï%IŸ«ØÕýšx/žLfæcëß³Gk‡£M¥ aN“ë°ˆ/ˆNè¡NVqMz‹lÍ?UÅl‹;>E¬Ñ)ó³} Âˆ²g,>¦¤Úëù[ßáÊD¬ëS­bo¡ÇXIó¾HnéƒÜ8sѤÈÀì©>¿uqNRs¹ˆH¢ÃMÛŠxrUüú<­Ø†0„á*Nùh-£N¶Ýì8ÅçGåV¨öMlÆsãÚšê·ëL€zJ³ykŒj*C)ÈÆ»9Y½¿|b° !(f’ l`m…9„ÙéW£zú7¹L·¥Úzó‹Ö¯Òqä™ZÔEÿ‡Ü} jNcŒ«ÑoÇ-Œbüƒ^‡ ¹]МllÔNsÖ+:ìt:Bq)"ÚáΫ˜>ò}¾A®‘ë+B/aú…ŽÚÐà¦øðÊ¿ŠCý @Ì‹:}»7Q°A»¶×Œ ‚#±ý÷E8¡:âs¸ïjâbQµ NBÇÝ+Ó¶(;¹ƒìVLý²ZЊ\¿™Š#vá°ºF{òõ}zWQ]ZÀƒÉôb9!ˆp¨oâëÆ›ó=– ±ŠPìÖ¯K’‰õø"úŽä³åS9¼•'K8‡Ý9@ ,£¬#cíïË\¼úsÄÊpU}x§0‡"üDí¬šæÊ1$ìÓó [:ŠœÓ=ñóýæÿ'5lŒX7C/2TÔ[™ßDâ|•x‰ã¬k€¦·Ù£ÊûµVš¼9z¦?4”Ä{oG?(1Í鿦¬x:S´‚.ÙÃØ‰ßl7]è…cDM]yåIvQžG‹Á´É]ò}h¤pH"—>Þ|±˜Žˆx¸ÒóØ«U)H dN"9;è¹xï½^àÀ"Ûty #$dErXPfi.õt\a<¸RÕ©Ìã$"¨²Â¶ÕÑV<¸Â€K̦)†µ.>]‰ÌËì"¼Þ¤ýŒRÃNæ¼z–äx…Ý í¿†_À¼N@â²Ã£&ÝØÑ€™2ó»lôæÅ`fJn"Oˆ¡ _Q`Ž7ֿƇÍû:4æ8 ›}q‚oÃl4Ví¤-ðŽÛö5¯…´Ê ðj)P5¶ÏAwg|Wh}h“ˆûhåJ wý›ÙDÐïõwû‡g¡è¶Úÿ&ŽxöÆ* ÅÚ°#sÒ-lÌÌ¥‰xÙ,«Óâ}3K˰ͤRîÀleñó”kùÞ&ª70‘‹®+ö12}ý"Ñ( KŽÙ±Œ î+®ó ÒÙ·'V MßÉpp¤CÃO6g ü:²üjB‰ðxý£³XÑH¯¡7çal'úÎïš_ˆÛ¥Ô^V5²rtWÎ5² ®HS‘±¤Ê±² a!ÖζkÑ®È}JQ•Ì&Åu÷ŠËÓþ:YyÁ­»ålhÀ‘¨7]¢ðõd:–ª:ÓÀíMcè½Ú9w’›üJœ Mï®R<#•ׇgª2°ÿÀŽ_Gšº&ÚF FtØBÆb2…Yß¹±@œ•‘ Æ›ìyÁE/ºd5£OôŽAUíã¿ÉdoUË;.®ËœÐiÑ%. YÕNƹº¥×‚Oɳ;íÞ½Yùk†vYU^¯3ÖÀX˜c@¸L~0*øaÑL‹‰xù1Ù?+Ñ·ÑRÖ2Kîÿü{­¢ECë/½Ú½!é8-l”ÓÝ\³j{&nÿÎOؽ><Ú"+ ÔSÒ×nþM¶ °¢f#uf¥ªC2þG“’ñ JØTÀPÒ¬žòÔbí»®ýRÊ.Þ¼u›Z‰By,‰ýk•1¦4 Ì_}¸ž›]Ä•þ @…8}š³g'n8Á¹Î_ªUê' òJ<ßÓgY®ÎGu Žm²(õ [з°`eúÂYp[É·½¬r·ôgÅÖá‹&h¢×tbˆæk¡á)ü`3¾ ¯4ÌÒÚc*ënÿÍö2} q‰o¸U²ö"§žJ ÒYZ7í*˜ÑÅ+Üq¤õÒ›çhÕe=`µš¥ª-YfCÖui:pbçB^d¿·ðì>WË¢eè×4LÃÿ!¥l³nÌ­¥öݯîuŠs>uœ`SÓáQ5ø="ŠýÒ¼FW&¤Í–O˜5I/åßÃmÀÂ'aqºK{ß¾€ ‰hee¤€d"Ø 7þüIœvü»¾ Á"Rm¤@8w·ºø|…Božn‡UçtZ·*™ÿ2…£ù>£bßEò$ã¶úböòUŒ"RçU^ÿï}Sýí£^ ¢Ùš¿‹qZ-Çê aõy `„'¾ÇÄ!û°Y2] ¶Ñ@þ^Îz{¹Ä´&íà €Þ‡qÎK{®Y‹Œ1ÌìCàGÒÇó-ÙÊÛ°?¢ªÀ­zuÖjFÌ¢f²kÒgXÌÓ$“5ªí¶sÔ$¹pòxßcFKÞŸ¢Ò`¥ãC‚8»¹MÖ `Ö–àC{‡Ð#q!»:î¯Ñ–J`µ‚°>†7£Ï§×ó@cOiiQúpx•ÃóѲA£²ß÷©ì»4\º‚vü†TB¼¸]\ x#ÚQ`ùâ*më+¤ñBãÁ¿Y ) Í9z2ˆ-lƘ VÔÅÁ’ëºÔÚ† Î¦Õ /]zí7(vƒdmäéÊáÈ`€—.oR:äYýÆÄ5rÎkÒCÞ².ʹèjÔÎÂÔì”X¢q>úѓӧ}jQ¶„‰à½¶¦××ÁÕ:+Ás¥Æy1ÑlVÃǰhëÈeNâ?Œ¢È°§rx@ÖÙ<2µï‰ùÓ¸Û¯ƒœw­X’'áÝdë÷û¡uY0°F‹=gA5cé«YÈ›Ðo@ZO×5…U¡ôìÙ¶€!›ƒ ­m YþH*A¶ûèfèXñ¸oäŠ5§×úJ®ïžb-sAšÌ²X£eYHb_ÂØs Ì(n²vÚeÞXÿé‰K@Q&’4â¼P"tW…˜JVM!Y 5@‹eZÓÏX¨¶®âǨ‡ ¤ U3´)…Ëm×¹ó`én4zŸ¥@Èa&ÝÁi¼žå(÷Ûÿ€‹k‹•YkóÂ.5Äùm²¿²üáÕÀ$潆啪úÔó¡(Müºâ¶¶}Ñ÷kßáÏ Ó'aAì œ? _ê~†v9pÜ}‰¬= tÏ»3í^’ßÅFP¯Ø šKmU¼ØR+ž’Ùð\=¿Vqg:zÂ\Ÿ\w!‹ªx¶‰ÕÍ3 5‡J‡<Œ_‹*†|cŠ óÍÀŸzL.žèü¾¯é4\ø‘ŽÜϳ›ÐFJOD·œ“/&è)ôý}ÝêlÚ´¨˜êQ,&æDè)ë°?×ÍS0,›äsöÛMˆ²ÖüóƧ{ÕÜåQV/Rh!xU•*°xÝ‘ˆHä±h® ®zº*ú›ž‹èÔVÑ«:Ëê`¾Ïÿìà¦G“©"zó(kH} Ý!qmóú’ŸùϾ=Fd½œ1_æê„d—ò‡ 1Û‚¼3£Ü·ó,;Xi±Â¤'%0S¹½’‘6G.ñý‘Â\“w;æñÙA\òçYf‰_ãúVãkÈϬ+hè!h^µ!8ZzfÚÞKÀQGS_ßQè´;Ý©u{¤å„Ç+"‚hã\„£æè˱Ðx­\îï¾W–vÕ•Ní„T…Bjª4=ô5KÕY’⢷M3 z‰bÔä“ä’ÃE‹â`S:¢Ê)±Ž^ujÇÍf`…\4ª8º?…`}ßwÆTûÁmÀÏéšáÓÀÝŒå{lÅ:ÀÁCõ§ÍÅwù3ÿQD´¹WåòqÓ¿á¸jjP‰O1q-±©²Ý\¿z<îO+˜Õ{6Dn¤ðËD¦Å9$óxÎ=¹(e¼½Î}´6ñ£ ÌólQcБ¥ÒOõSžòŽ´‹Þ¯{¦ZÀ ¯´Ñ<,²¿!c¯Z ú¾HÒZ $Ùì¹£œ²!˜Ënî©LhaD9u±(øLÝÜý’K{Wrž—² =ª«âfNÈÄò Œ°—×JcMhX‚ îY3@+ZãÚvs2h™Qí­INª†ªæ:Ø?ÄML‘"¦©EËo×6AHý“ôÌõëG*EWÓU£°ª_TlÙb®|a ŽÙÔúåè,.­(*ö)/ÃRlÎxçôO•Æî“bW«ú #½ŒŽO•±ñÆ¿G8á"GWÔúNCÚ¶@eb6'Z í,ó*JìèÚÈÎå7d÷â@·üگˀŽíó½Åw’¡ »?käjWÄYh ½ùŒKÑSEbuh$Y,òˆAɲ·tdc ,´TeÿR¶Q]Îm&|FClèzmà%¸ñzáÛ©¢6k6;Äl±¼xRÃ)sÆÏèqÊÍJµå‰u|àÿC18-žíz$Œ48m½7_'Gú52‰¶†eý%WääZbYn ­üz&¨éî±­'7“Í ùBQ5Dê·ë»Ú¶\Žbp Ôk) ?åÒܸ`}wìJ§ÔëøêL~3kì¦ÜS³ó‚|`º&EðÎ@Æ>D5øh¯çÔW­dY•¨IÀÊ&!·Ÿ?p…©àpïq5·‰: 0ܾYŒP½Ké/—ÂTåÄÐí`‰§ÉI›BVÞÐÒÒ[ƒ,c´üØ^{\6EWôœ¸e“ç»É}‰•Ķ˜_KÑG#kë:<êehëòð5ß6ìyˆ¢´…ºÔ·°RIùÿkKæ íià»4+…S»êÍzqõ„}J¥—'‡§æDÞz%‚ÃOÓ±T7ÚBÀYZRÁœ|4uiR~³²§yÜ)Ü6Ih1»,„Ê%_Þ*Ô,ž;Ûm«¨Û³’G’‰bXteää),îL*=޽D™LïŸWÀuÓ3í Ë$YÍ‚µ*‹Ç%tpCɽŠ>€·`Ó4éæp‡¯½îGh|3¨‹u¤ü‡+xH>3OÖy˜&k )o™÷è9WÍh F2©b÷Î1æU-nMσÆé@0±0ŠÑo„²‚Ö©ŒD9±=‰û¢x™%"PÔâ3#ê”ß{bUYôNˆD^+ñýž;ÓQnÐ2@Whs_êé" & èCNÜœHqØô™¦J"òx# 5A‚HöÌOG.À±¿”‰‚„þb>0 ‹YZplm/NAMESPACE0000644000176200001440000002164714642231271012275 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method("$",pdata.frame) S3method("$<-",pdata.frame) S3method("[",pdata.frame) S3method("[[",pdata.frame) S3method(Between,default) S3method(Between,matrix) S3method(Between,pseries) S3method(Complex,pseries) S3method(Math,pseries) S3method(Ops,pseries) S3method(Sum,default) S3method(Sum,matrix) S3method(Sum,pseries) S3method(Within,default) S3method(Within,matrix) S3method(Within,pseries) S3method(alias,pdata.frame) S3method(alias,plm) S3method(as.data.frame,pdata.frame) S3method(as.list,pdata.frame) S3method(as.matrix,pseries) S3method(between,default) S3method(between,matrix) S3method(between,pseries) S3method(coef,panelmodel) S3method(coef,pgmm) S3method(coef,summary.plm.list) S3method(detect.lindep,data.frame) S3method(detect.lindep,matrix) S3method(detect.lindep,plm) S3method(deviance,panelmodel) S3method(df.residual,panelmodel) S3method(diff,pseries) S3method(ercomp,formula) S3method(ercomp,pdata.frame) S3method(ercomp,plm) S3method(fitted,panelmodel) S3method(fitted,plm) S3method(fixef,pggls) S3method(fixef,plm) S3method(formula,dynformula) S3method(formula,pdata.frame) S3method(formula,plm) S3method(has.intercept,Formula) S3method(has.intercept,default) S3method(has.intercept,formula) S3method(has.intercept,panelmodel) S3method(has.intercept,plm) S3method(index,panelmodel) S3method(index,pdata.frame) S3method(index,pindex) S3method(index,pseries) S3method(is.pbalanced,data.frame) S3method(is.pbalanced,default) S3method(is.pbalanced,panelmodel) S3method(is.pbalanced,pcce) S3method(is.pbalanced,pdata.frame) S3method(is.pbalanced,pggls) S3method(is.pbalanced,pgmm) S3method(is.pbalanced,pmg) S3method(is.pbalanced,pseries) S3method(is.pconsecutive,data.frame) S3method(is.pconsecutive,default) S3method(is.pconsecutive,panelmodel) S3method(is.pconsecutive,pdata.frame) S3method(is.pconsecutive,pseries) S3method(lag,pseries) S3method(lead,pseries) S3method(make.dummies,data.frame) S3method(make.dummies,default) S3method(make.dummies,pdata.frame) S3method(make.pbalanced,data.frame) S3method(make.pbalanced,pdata.frame) S3method(make.pbalanced,pseries) S3method(make.pconsecutive,data.frame) S3method(make.pconsecutive,pdata.frame) S3method(make.pconsecutive,pseries) S3method(model.frame,pdata.frame) S3method(model.matrix,pcce) S3method(model.matrix,pdata.frame) S3method(model.matrix,plm) S3method(mtest,pgmm) S3method(nobs,panelmodel) S3method(nobs,pgmm) S3method(pFtest,formula) S3method(pFtest,plm) S3method(pbgtest,formula) S3method(pbgtest,panelmodel) S3method(pbltest,formula) S3method(pbltest,plm) S3method(pbnftest,formula) S3method(pbnftest,panelmodel) S3method(pbsytest,formula) S3method(pbsytest,panelmodel) S3method(pcdtest,formula) S3method(pcdtest,panelmodel) S3method(pcdtest,pseries) S3method(pdim,data.frame) S3method(pdim,default) S3method(pdim,panelmodel) S3method(pdim,pcce) S3method(pdim,pdata.frame) S3method(pdim,pggls) S3method(pdim,pgmm) S3method(pdim,pmg) S3method(pdim,pseries) S3method(pdwtest,formula) S3method(pdwtest,panelmodel) S3method(phtest,formula) S3method(phtest,panelmodel) S3method(plmtest,formula) S3method(plmtest,plm) S3method(plot,plm) S3method(plot,pseries) S3method(plot,summary.pseries) S3method(pmodel.response,data.frame) S3method(pmodel.response,formula) S3method(pmodel.response,pcce) S3method(pmodel.response,plm) S3method(pooltest,formula) S3method(pooltest,plm) S3method(predict,plm) S3method(print,dynformula) S3method(print,ercomp) S3method(print,fixef) S3method(print,panelmodel) S3method(print,pdata.frame) S3method(print,pdim) S3method(print,phansitest) S3method(print,piest) S3method(print,plm.list) S3method(print,pseries) S3method(print,purtest) S3method(print,pvar) S3method(print,summary.fixef) S3method(print,summary.pcce) S3method(print,summary.pggls) S3method(print,summary.pgmm) S3method(print,summary.pht) S3method(print,summary.piest) S3method(print,summary.plm) S3method(print,summary.plm.list) S3method(print,summary.pmg) S3method(print,summary.pseries) S3method(print,summary.purtest) S3method(print,summary.pvcm) S3method(punbalancedness,data.frame) S3method(punbalancedness,default) S3method(punbalancedness,panelmodel) S3method(punbalancedness,pdata.frame) S3method(pvar,data.frame) S3method(pvar,default) S3method(pvar,matrix) S3method(pvar,pdata.frame) S3method(pvar,pseries) S3method(pwaldtest,default) S3method(pwaldtest,pgmm) S3method(pwaldtest,plm) S3method(pwaldtest,pvcm) S3method(pwartest,formula) S3method(pwartest,panelmodel) S3method(pwfdtest,formula) S3method(pwfdtest,panelmodel) S3method(pwtest,formula) S3method(pwtest,panelmodel) S3method(ranef,plm) S3method(residuals,panelmodel) S3method(residuals,pcce) S3method(residuals,pggls) S3method(residuals,plm) S3method(residuals,pmg) S3method(summary,fixef) S3method(summary,pcce) S3method(summary,pggls) S3method(summary,pgmm) S3method(summary,pht) S3method(summary,piest) S3method(summary,plm) S3method(summary,plm.list) S3method(summary,pmg) S3method(summary,pseries) S3method(summary,purtest) S3method(summary,pvcm) S3method(terms,panelmodel) S3method(tss, default) S3method(tss, plm) S3method(update,panelmodel) S3method(vcov,panelmodel) S3method(vcovBK,pcce) S3method(vcovBK,pggls) S3method(vcovBK,plm) S3method(vcovDC,pcce) S3method(vcovDC,pggls) S3method(vcovDC,plm) S3method(vcovG,pcce) S3method(vcovG,pggls) S3method(vcovG,plm) S3method(vcovHC,pcce) S3method(vcovHC,pggls) S3method(vcovHC,pgmm) S3method(vcovHC,plm) S3method(vcovNW,pcce) S3method(vcovNW,pggls) S3method(vcovNW,plm) S3method(vcovSCC,pcce) S3method(vcovSCC,pggls) S3method(vcovSCC,plm) S3method(within_intercept,plm) export(Between) export(Sum) export(Within) export(aneweytest) export(between) export(cipstest) export(cortab) export(detect.lindep) export(dynformula) export(ercomp) export(fixef) export(has.intercept) export(index) export(is.pbalanced) export(is.pconsecutive) export(is.pseries) export(lag) export(lead) export(make.dummies) export(make.pbalanced) export(make.pconsecutive) export(maxLik) export(mtest) export(nobs) export(pFtest) export(pbgtest) export(pbltest) export(pbnftest) export(pbsytest) export(pcce) export(pcdtest) export(pdata.frame) export(pdim) export(pdwtest) export(pggls) export(pgmm) export(pgrangertest) export(phansitest) export(pht) export(phtest) export(piest) export(pldv) export(plm) export(plm.data) export(plmtest) export(pmg) export(pmodel.response) export(pooltest) export(pseriesfy) export(punbalancedness) export(purtest) export(pvar) export(pvcm) export(pvcovHC) export(pwaldtest) export(pwartest) export(pwfdtest) export(pwtest) export(r.squared) export(ranef) export(sargan) export(vcovBK) export(vcovDC) export(vcovG) export(vcovHC) export(vcovNW) export(vcovSCC) export(within_intercept) if(getRversion() >= "3.6.0") {S3method(dplyr::arrange, pdata.frame)} if(getRversion() >= "3.6.0") {S3method(dplyr::arrange, pindex)} import(Formula) importFrom(MASS,ginv) importFrom(Rdpack,reprompt) importFrom(bdsmatrix,bdsmatrix) importFrom(collapse,GRP) importFrom(collapse,GRPN) importFrom(collapse,dapply) importFrom(collapse,fbetween) importFrom(collapse,fdroplevels) importFrom(collapse,fhdwithin) importFrom(collapse,fwithin) importFrom(collapse,gsplit) importFrom(collapse,rsplit) importFrom(grDevices,heat.colors) importFrom(grDevices,rainbow) importFrom(graphics,abline) importFrom(graphics,axis) importFrom(graphics,barplot) importFrom(graphics,legend) importFrom(graphics,lines) importFrom(graphics,plot) importFrom(graphics,points) importFrom(lattice,xyplot) importFrom(lmtest,bgtest) importFrom(lmtest,dwtest) importFrom(maxLik,maxLik) importFrom(nlme,fixef) importFrom(nlme,lme) importFrom(nlme,ranef) importFrom(sandwich,vcovHC) importFrom(stats,.lm.fit) importFrom(stats,alias) importFrom(stats,approx) importFrom(stats,as.formula) importFrom(stats,ave) importFrom(stats,coef) importFrom(stats,coefficients) importFrom(stats,contr.treatment) importFrom(stats,cor) importFrom(stats,delete.response) importFrom(stats,deviance) importFrom(stats,df.residual) importFrom(stats,dnorm) importFrom(stats,fitted) importFrom(stats,formula) importFrom(stats,lag) importFrom(stats,lm) importFrom(stats,lm.fit) importFrom(stats,model.frame) importFrom(stats,model.matrix) importFrom(stats,model.response) importFrom(stats,model.weights) importFrom(stats,na.omit) importFrom(stats,nobs) importFrom(stats,p.adjust) importFrom(stats,pchisq) importFrom(stats,pf) importFrom(stats,pnorm) importFrom(stats,printCoefmat) importFrom(stats,pt) importFrom(stats,qnorm) importFrom(stats,reshape) importFrom(stats,resid) importFrom(stats,residuals) importFrom(stats,sd) importFrom(stats,setNames) importFrom(stats,terms) importFrom(stats,update) importFrom(stats,var) importFrom(stats,vcov) importFrom(stats,weighted.mean) importFrom(zoo,index) plm/NEWS.md0000644000176200001440000022453114742163531012155 0ustar liggesusers--- title: NEWS/Changelog for package plm subtitle: plm - Linear Models for Panel Data - A set of estimators and tests for panel data econometrics - (development repository ) --- # 2.6-5 ### Fixes: * `pgmm`: argument `fsm` can now be set to influence the first step's weighting matrix. * `mtest`: * fix test for one-step models with robust covariance matrix and two-steps models. * result object's statistic is now a numeric (was 1x1 matrix). * `vcovXX`: FD models with only one observation per group prior to first-differencing errored ([#58](https://github.com/ycroissant/plm/issues/58)). * `pggls`: FD models errored with the data constellation as described above for `vcovXX`. * `is.pdata.frame` (non-exported helper function): fix part of the check if object does not have an index. ### Documentation: * `?mtest` now has more explanation with replication examples. * First vignette: improved description of `pgmm`'s `effect` argument. *** # plm 2.6-4 ### Features: * `pvcm`: * implemented parameter homogeneity test for variable coefficients model (`model = "random"`), printed when summary is printed. * implemented estimation of single unbiased coefficients (incl. variance/std. error) for `model = "random"`, can be extracted via `return_value$single.coef`, `return_value$single.vcov`, `return_value$single.std.error`, respectively. ### Speed-up: * Replaced base R's `duplicated` with faster `collapse::fduplicated(x, all = FALSE)`. * `pvcm`: faster due to improved code path. ### Fixes: * `phtest(<.>, method = "aux")` (regression-based Hausman test): errored in case of `NA`s and one independent variable (reported by Kurt Schmidheiny). * `pvcm`: * return value now always has a single valid value in `$args$model`. * tiny fix for coefficient estimation in case of NA coefficients. * `pdata.frame`: fix in detection of 3rd index variable (relevant only in quite specific circumstances) ([#50](https://github.com/ycroissant/plm/pull/50), thanks to @MichaelChirico). ### Others: * Compatibility for `dplyr::arange` by supplying a `pdata.frame` method for `arrange` which takes care of pdata.frame's index attribute ([#46](https://github.com/ycroissant/plm/issues/46) , thanks to @ssoyounglee for reporting and @zeileis for prompt analysis and hints). * Estimation functions (e.g., `plm()`, `pcce()`) now warn if a data input claims to be a pdata.frame but has non-compliant properties. This can happen due to data manipulation by non-pdata.frame-aware functions (e.g., `dplyr`'s row-filtering on pdata.frame does not take care of pdata.frame's index attribute). * `pdata.frame()`: * does not stop anymore when a pdata.frame is input, just continues to create a new pdata.frame from input. * warns if pdata.frame with non-compliant features is input. * `plm()` passes on ellipsis ("dots" (`...`)) to internal pdata.frame creation, further passed on to internal usage of `data.frame` (if pdata.frame is to be created internally due to non-pdata.frame passed in `plm()`'s `data` argument). * `pvar.pseries`: when printed, original variable's name is printed (not always `x` anymore). * `pvcm`: more informative about non-estimable models: * `model = "random"`: implemented stopping control for non-estimable model if only one group. * improved error message if too few observations. * `model = "within"`: be less strict about required number of observations for pure coefficient estimation (#obs = #coefs now allowed, errored before, variance cannot be estimated then, though). Note: this relaxation is not possible for the `model = "random"` case (Swamy (1970)). *** # plm 2.6-3 ### Speed-up: * `lag`, `lead`, and `diff` on panel data (pseries, pdata.frame) are now faster due to usage of the fast collapse functions internally (`collapse::flag`, `collapse::fdiff`), on large data sets approx. 10x to 20x faster. * `plm/pggls(., model = "fd")`: faster first-difference model estimation (due to using `collapse::fdiff`). NB: FD models are based on row-wise differences, not (yet) time-wise. * Usages of `split()` substituted with `collapse`'s fast `rsplit()`/`gsplit()`. ### Minors: * `ciptstest`: error gracefully when argument `lags = 0L` (partly addresses [#39](https://github.com/ycroissant/plm/issues/39)). * model estimation with dot (`.`) in formula now possible, e.g., `plm(y ~ ., data = )`. This needs dependency package `Formula` in version >= 1.2-5, on CRAN since 2023-02-24 (addresses [#35](https://github.com/ycroissant/plm/issues/35)). * `has.intercept`: gained new argument `data` to support formulae containing a `.` (dot) (partly addresses [#35](https://github.com/ycroissant/plm/issues/35)). * `vcovXX.pggls`: stopping break for `vcovHC`, `vcovNW`, `vcovBK`, `vcovSCC`, `vcovDC`, and `vcovG` applied to `pggls` objects implemented via newly introduced methods giving an informative error message. (P)GGLS models estimate a parametric covariance, hence it does not make much sense to robustify them. ### Clean-ups: * `phansitest`: deprecated working alias `phansi` for `phansitest` is now an error (see also NEWS entry for 2.6-0 when `phansi` was renamed to `phansitest`). * `pFormula`: removed long deprecated class, function, and associated methods (see deprecation note in plm 2.0-0 (2019-05-14)). *** # plm 2.6-2 ### Features: * `predict.plm`: * prediction implemented for fixed effects models incl. support for argument `newdata` and out-of-sample prediction. Help page (`?predict.plm`) added to specifically explain the prediction for fixed effects models and the out-of-sample case. * change: case without supplied non-`NULL` `newdata` now gives the predicted values of the outer model (before: inner model). ### Speed-up: * Many functions which split data by an index dimension are now faster on large data sets due to more efficient splitting approach, esp. `pcce`, `pggls`, `pmg`, `cipstest`, `pcdtest`. ### Fixes: * `mtest`: error gracefully if argument `order` specifies a value larger than or equal to the number of available observations ([#23](https://github.com/ycroissant/plm/issues/23)). * `summary.pgmm` (and associated print method): does not execute `mtest` with `order = 2L` in case there are too few observations ([#23](https://github.com/ycroissant/plm/issues/23)). * `plm` for IV estimation: respect suppressed intercept in formula's 2nd part of RHS. * `vcovXX` functions: fix vcov output for first-difference models in case of `cluster = "time"`. * `pggls`: unbalanced first-difference models do not error anymore. * `pldv`: variance-covariance fixed for case `model = "fd"` when `objfun == "lsq"` and `sample == "cens"`. * `fixef(., type = "dfirst"`): for models with `length(fixef()) == 2`, `fixef` does not error anymore and for `length(fixef()) == 1`, the result is more sane (`numeric(0)`). ### Others/Minors/Admin: * `purtest`: errors more informatively when no non-NA cases are left after lagging. * `plmtest` and `pbsytest`: text in result object's `method` does not contain information about balanced/unbalanced panel anymore and is, thus, not printed anymore. * `print.pseries`: return input object invisibly (prevents double printing when print() is called explicitly on a pseries). * Package's maintainer changed (for technical reasons only). *** # plm 2.6-1 ### Fixes: * pmodel.response: `I()` in LHS of formula led to error in estimation with plm ([#17](https://github.com/ycroissant/plm/issues/17)). ### Changes: * summary.pseries: returned object is class "summary.pseries" for all inputs and now has added as attribute "SummaryDefault" the summary of the base object (e.g., summary(your_numeric)) if the base object is not a factor, logical, or character. For factors, logicals, and characters in a pseries, the summary.pseries object is simply the summary of the base object. Printing of the summary object now gives the pseries-specific output as before (if applicable) and additionally summary printing of the base object. ### Clean-ups: * pdata.frame: argument `stringsAsFactors` set to `FALSE` (was previously `default.stringsAsFactors()` to determine value from options, but that will be deprecated as of R 4.2.0). * make.pbalanced: for argument `balance.type` the value `"shared"` is not accepted anymore, it was allowed for back-compatibility for some time. Use `balance.type = "shared.times"` for the same result (see also NEWS entry for version 1.6-6). * Adjust example benchmark in `?plm.fast` to new behaviour from version 1.4.8 onwards of package `microbenchmark` (). ### Dependencies: * Minimum required R version corrected to R 3.2. *** # plm 2.6-0 ### Speed-up: * Fast mode is now the default for the package: when the package is attached, `options("plm.fast" = TRUE)` is set (by R's .onAttach mechanism), requiring package `collapse` as a hard dependency. * *Recommendation*: Install suggest-dependency package `fixest` or `lfe` as a further significant speed up for the two-ways within transformation (as in two-ways fixed effects models) is gained. * See `?plm.fast` for more information and a benchmark. ### Features: * make.dummies: new simple function to conveniently create contrast-coded dummies from a factor. ### Clean-ups: * phansi: function renamed to phansitest for name consistency, with a *temporary* back-compatible solution. * phtest: for formula method, argument 'effect' is now explicit as 4th argument (previously, it was extracted from ellipsis (...)). * detect_lin_dep/detect.lindep: alias detect_lin_dep removed, thus this functionality is now only accessible via detect.lindep (function was renamed from detect_lin_dep to detect.lindep in CRAN version 1.7-0 (2019-01-04), detect_lin_dep was originally introduced in CRAN version 1.6-4 (2016-11-30)). * has.intercept.plm: removed temporary back-compatible solution for ill-introduced argument 'part', use argument 'rhs' instead (see also NEWS for 2.4-2). * Within (only matrix method): removed matrix-specific argument 'rm.null' (has been defunct since August 2018 anyways). * plm: * error informatively if argument effect = "nested" and model != "random" (previously, this was a warning incl. argument adjustment, see also NEWS for 2.4-2). * (as well as pht) for argument 'inst.method', standard R argument matching and error message are used (so no more dedicated message if misspelled value "bmc" instead of "bms" is used, "bmc" was a long-standing typo, then accepted with a warning and later errored with an informative error message, see also NEWS for 2.4-0, 1.6-6). * pggls: * argument model: removed "random" from the list of official argument's values as its use is deprecated (model = "pooling" does the same; however, value "random" is still accepted and adapted to "pooling" for back-compatibility with a warning). * print.summary.pggls: fix printed model name in case default model was selected (print only one model name, previously all three model names possible for the function were printed). ### Documentation: * DESCRIPTION file: more comprehensive description of the package, so displayed on CRAN. * First vignette gained an example for the auxiliary-regression-based Hausman test (`phtest(. , method = "aux")`). ### Dependencies: * Shifted package `collapse` from 'Suggests' to 'Imports'. * Removed from 'Suggests' as not needed: `bookdown`, `clusterSEs`, `Ecdat`, `foreign`, `pcse`, `pglm`, `spdep`, `splm`, and `stargazer`. This safeguards package `plm` shall the previously suggested packages be removed from CRAN. *** # plm 2.4-3 * Release to pacify CRAN additional checks with various BLAS implementations/platforms: Checks moaned about neglectable small numerical differences vs. (at times) platform-specific reference output (`.Rout.save` files). Moved almost all test files to directory `inst/tests` so they are not run on CRAN. Tests can be run manually and by `R CMD check --test-dir=inst/tests plm_VERSION.tar.gz`. ### Admin: * Source code repository for development is now on GitHub , not on R-Forge anymore. * Added a REAMDE file to the package giving basic information about package, displayed on CRAN (as on GitHub repository). * Update one author's e-mail address. *** # plm 2.4-2 ### Speed-up: * "Fast mode" is not yet the default. To enable, set `options("plm.fast" = TRUE)` manually or in your `.Rprofile` file (see `?plm.fast`, also for benchmarks), option introduced in plm version 2.4-0. It is planned to default to "fast mode" for the next CRAN release of plm (then making package `collapse` a hard dependency). * Further speed-up if `options("plm.fast" = TRUE)` is set: In case package `fixest` or `lfe` is available locally *in addition* to package `collapse`, the two-ways fixed effect transformation is significantly faster compared to the case if only `collapse` is available due to specialised algorithms in these two packages, all being fully integrated into the usual plm functions/user interfaces (`fixest` is preferred over `lfe`, in this case, plm uses internally `collapse::fhdwithin` which in turn uses `fixest::demean`). Thanks to Sebastian Krantz for guidance on this. * various efficiency gains throughout the package by using more vapply(), crossprod(), lm.fit(), better branching, rowSums(., dims = 2L) (instead of apply(., 1:2, sum)), etc., e.g., in plm for non-default random IV cases (cases with `inst.method = "baltagi"` / `"am"` / `"bms"`), pmg, pcce, purtest. ### Features: * phansi: new function for Simes (1986) test applied to panels for panel unit root testing, as suggested in Hanck (2013) [later renamed to phansitest in plm 2.6]. * pseriesfy: new function to make each column of a pdata.frame a pseries, see `?pseriesfy` for background and useful examples. (Faster version is executed if `options("plm.fast" = TRUE)` is set, see `?plm.fast` (then internally using `collapse::dapply`)). Thanks to Sebastian Krantz for inspiration. ### Fixes: * between (and hence fixef, ranef): order of output is order of *factor levels* again (this reverts a change introduced in 2.4-0, there called a fix introducing the order of the appearance in the data which is actually not desirable). Change is relevant in specific unbalanced data constellations. * fixef: for two-ways FE models, fixef does not error anymore if factor is in model and not anymore in IV case ([#10](https://github.com/ycroissant/plm/issues/10)). * vcovG (hence vcovHC, vcovDC, vcovNW, vcovSCC) and vcovBK: fix bug in case of IV estimation with only one regressor (errored previously) ([#4](https://github.com/ycroissant/plm/issues/4)). * within_intercept: * fix bug which caused an error for FE models with only one regressor ([#4](https://github.com/ycroissant/plm/issues/4)). * error informatively for IV models as not suitable. * between.matrix: do not coerce result to numeric vector for n x 1 matrix input (by using drop = FALSE in extraction) (prior to this fix, estimation of the between model with only an intercept errored). * pvcm: intercept-only models are now estimable. * detect.lindep: argument 'suppressPrint' now correctly passed on/respected (methods for data frame and matrix) ([#11](https://github.com/ycroissant/plm/issues/11)). * has.intercept.plm: argument 'part' renamed to 'rhs', argument values (integer or NULL) aligned with and correctly passed on to has.intercept.Formula (with a *temporary* back-compatible solution). * pcdtest: for formula method, the formula is evaluated in the parent environment. * groupGenerics: no more warning in arithmetic operations on pseries when index of both operands have same length but different content (e.g., something like this does not warn anymore: `your_pseries[1:(length(your_pseries)-1)] + your_pseries[2:length(your_pseries)]`). ### Others: * plm: for the nested random effect model (`effect = "nested"`), check if argument `model = "random"` is set, if not, plm now warns and adjusts accordingly (will become an error in the future). * pgmm: printing of summary gives more information about the model estimated (print.summary.pgmm). * purtest: now checks for NA-values, drops any, and warns about dropping. * piest: better printing (handling of 'digits' and 'subset' argument) (print.piest, print.summary.piest). * pwaldtest: error informatively if executed on intercept-only model (also for such models: do not execute pwaldtest in summary.plm/pvcm and do not print pwaldtest in print.summary.plm/pvcm). * mtest: * switched to combination of generic and a method for pgmm. * has information about user-supplied vcov in its return value's method slot (vcov information thus printed as well). * various print methods now return the input object invisible (before returned NULL). * piest, aneweytest: now use demeaning framework by Within() [thus benefiting from fast mode]. ### Vignettes and Other Documentation: * 1st vignette: * In section about panel unit root testing: * added short intro with overview of available functions/tests and added two example cases. * added sub-section about new function phansi [later renamed to phansitest in plm 2.6]. * added a little more information on the use of vcovXX. * 2nd vignette: added formula for nested error component model. * all vignettes: references updated to include Baltagi (2021), the 6th edition of the textbook; fixed a few typos. * pldv: man page extended a little, esp. with examples. * vcovXX: man pages extended with examples how to use with plm's own summary method. ### Dependencies: * Added packages `fixest` and `lfe` to 'Suggests'. *** # plm 2.4-1 * lag: fix export of generic for lag (lost in 2.4-0; the panel-specific lag method was executed anyway if base R's lag() encountered a pseries) ([#3](https://github.com/ycroissant/plm/issues/3)). * model.frame.pdata.frame: errors informatively if any index dimension has NA values. * pdata.frame: warns if NA in index dimension is encountered (before, only a plain message was printed). * Between/between/Sum/Within: Methods which rely on the index attribute (\*.pseries and (if with index attribute) \*.matrix) now error informatively if NA in any index dimension is encountered. * Vignettes: files renamed to start with "A_", "B_", "C_" so that the Vignettes are sorted on CRAN's plm page in an order better suited for new package users. * checkNA.index: new non-exported helper function to check for NA in index of a pdata.frame or pseries (all dimensions or a specific one). *** # plm 2.4-0 ### Speed up: Significant speed improvement (optional, for the time being): A significant speed-up of the package is available by a newly introduced **option** called 'plm.fast' such that panel model estimations and others run faster. Set option 'plm.fast' to 'TRUE' by `options("plm.fast" = TRUE)` for speed up, switch off by `options("plm.fast" = FALSE)` (switched off speed up is current default). To have it always switched on, put `options("plm.fast" = TRUE)` in your .Rprofile file. See documentation `?plm.fast` for more information and a benchmarked example. Technically, the speed gains are achieved by weaving in the fast data transformation functions provided in Sebastian Krantz' package 'collapse', which needs to be installed ('Suggests' dependency). Basic functions benefiting from speed-up are currently (used heavily in, e.g., plm()): Between, between, Sum, Within. ### Features: * within_intercept: gains argument 'return.model' (default is FALSE and the functions works as previously). If set to TRUE, a full model object is returned which is the input's within model with an intercept (see documentation for more details). * fixef: gained new argument value 'effect = "twoways"' to extract the sum of individual and time effect (for two-way models). * plm/ercomp: random effect model estimation with Nerlove's method extended to unbalanced panels by weighting of the fixed effects (Cottrell (2017)). * Sum: is now exported. * DESCRIPTION file: added line BugReports pointing to a GitHub repository which is currently only used for GitHub's issue tracker feature (). [Since version 2.4-3, GitHub is also used as the development platform hosting the package's source code.] ### Fixes: * fixef: calculation for two-way models fixed; type = "dmean" for unbalanced models fixed (by using weighted.mean()). * between.default: keeps original sequence of elements' occurrence (before, compressed output was sorted by the factor's *level* order) [NB: this was reverted again in plm 2.4-2]. * Between.matrix and (internal) Tapply.matrix: ellipsis (three dots) is passed on, allowing for, e.g., na.rm = TRUE (like already possible for between.matrix etc.). * Within.pseries/matrix: now handle na.rm argument in ellipsis. * index: gives warning if argument 'which' contains "confusing" values. "confusing": an index variable called by user 'id', 'time', or 'group' if it does not refer to the respective index (e.g., time index variable is called 'id' in the user's data frame). * pdata.frame: input 'x' is always pruned by data.frame(x) as a clean data frame is needed. * Access to documentation with a generic defined in another package fixed (such as lag, diff, nobs, ...), so that the help systems offers to access the plm-specific documentation (regression introduced when pkg plm 2.0-0 adopted roxygen2 for documentation). * ercomp: (cosmetic) if one of theta\$id, theta\$time is 0 => theta\$total must be 0 and is set to 0 (before, for some data and platforms, theta$total could be a very small positive or negative number, due to limited computational precision). This leads to nicer printing for summary outputs as well. * plm: fix error when fed with a data frame with one (or more) column(s) having a 'names' attribute (data frames do not have names attribute for columns!), stemming from, e.g., a conversion from a tibble. * as.data.frame.pdata.frame: clarify argument 'row.names' a bit: FALSE will give an integer sequence as row names, TRUE "fancy" row names, and (new) a character will gives row names set to the character's elements (character's length is required to match the number of rows). ### Internals: * Between.\*, between.\*, and Within.\* methods: now use ave() instead of tapply(). * between.matrix and Sum.matrix allow for non-character 'effect' argument in non-index case. * pmg, pcce, cipstest: now use the general Between()/Within() functions of the package (instead of "own" between/within transformation implemented inside the respective function). * ercomp: now faster by saving and re-using intermediate results. * dhat (non-exported function used in vcovXX/vcovG with type = "HC2" to "HC4"): now faster as diagonal of the quadratic form is calculated more efficiently. * pht(., model ="bmc") and plm(., inst.method = "bmc") now error informatively (previously gave warnings) as "bms" is to be used for Breusch-Mizon-Schmidt IV transformation. ### Dependencies: * Added package 'collapse' to 'Suggests'. *** # plm 2.2-5 * Removed duplicated entries in REFERENCES.bib (dependency Rdpack 2.0 warned). *** # plm 2.2-4 * ptransform (internal function): check balancedness before pseries index is removed (fixes some spurious bug, e.g., when package tibble is used). * exported/registered again in NAMESPACE after export/registration lost in plm 2.0-0: fixef.pggls, Math.pseries, Ops.pseries, Complex.pseries and deprecated methods/function formula.dynformula, print.dynformula, pvcovHC. * Ops.pseries: use of is.vector() was too strict, now uses is.atomic() with taking care for additional data types. * pwaldtest: * non-exported function wald() now exported as method pwaldtest.pgmm. * for all plm models use approach via crossprod(solve(vcov(x), coefs), coefs)), not (tss-ssr)/(ssr/df2) anymore. * method for pvcm models now allows for pvcm's "within" specification, returning a data.frame with test results for each regression. * pcdtest.pseries: NA values in input variable are now removed before any further processing. A warning is issued in case of NA removal. * mtest, sargan, pwaldtest, piest, aneweytest: added for each a string for alternative hypothesis. ### Dependencies: * Removed package 'clubSandwich' from 'Suggests' as it was removed from CRAN (archived) [the package was re-added to CRAN at a later point in time but not made a 'Suggests' dependency for plm again]. *** # plm 2.2-3 * IGNORE_RDIFF_BEGIN/END added on tests and man pages. *** # plm 2.2-1 * purtest: * tests now support unbalanced panel data, where applicable. * gained argument 'ips.stat' to select statistic for IPS test, default is "Wtbar" (as before), added "Ztbar" and "tbar". * if package 'urca' is available, p-values used in individual (augmented) Dicker-Fuller regressions are (for applicable tests) based on MacKinnon (1996) instead of MacKinnon (1994) yielding better p-value approximations for tau distribution (via urca::punitroot). * return value's element 'idres' contains p-values of individual ADF-regressions (p.trho) and p-values printed in summary (where applicable). * for Levin/Lin/Chu test, object and summary contain short-run and long-run variance. * for Hadri's test, summary is now applicable. * index.pindex: fixed bug when individual index variable is called "group". ### Minor items: * print.fixef: respects / forwards arguments supplied to generic print method. * Grunfeld data doc: URL for overview of various Grunfeld data sets updated to . ### Dependencies: * Package 'urca' added to "Suggests". *** # plm 2.2-0 * Methods for plm.list were not exported, now exported. * lagt is changed so that it can deal with time factors which cannot be coerced to numeric (ex "1950-54", "1955-59", ...). * cortab was not exported, now exported. * pvcm failed for random effect models when there are some NA coefficients for some individual level OLS regressions, fixed. *** # plm 2.1-0 * Problems with vignettes fixed (full text was in italics). * In test file 'test_Estimators.R', L256, tolerance lowered to 1E-04. *** # plm 2.0-2 * vcovXX.pcce functions exported again (export was lost in plm 2.0-0). * summary.pcce gained argument 'vcov', summary.pcce object carries robust vcov in element 'rvcov'. * Vignettes switched from bookdown::html_document2 to html_vignette. *** # plm 2.0-1 * Minor update: tests updated to pacify CRAN's testing procedure with OpenBLAS. * Bug fix in model.frame.pdata.frame: dot previously set to "separate" now set to "previous". *** # plm 2.0-0 * class 'pFormula' is deprecated and will be removed soon. * model.frame now has a pdata.frame method (instead of a pFormula method) and model.matrix has a pdata.frame method (takes as input a model frame as a pdata.frame with a terms attribute and a formula attribute). 'formula' as an argument in model.matrix was unnecessary as the formula can be retrieved from the pdata.frame. * A third vignette was added describing the plm model components (plmModelComponents.Rmd). * plm: the informative error message about the deprecated argument 'instruments' is removed and this argument is no longer supported. * Man pages and NAMESPACE file are now generated using roxygen2. *** # plm 1.7-0 * lag, lead, diff for pseries objects: functions now take care of the time dimension when shifting observations within each individual. Previously, shifting was performed row-wise within each individual (neglecting the time dimension). The argument 'shift' is introduced to control shifting behaviour, possible values are "time" (default) and "row" (behaviour up until and incl. plm 1.6-6). Note that, however, the diff-ing performed in first-difference model estimation by plm(..., model = "fd") is based on row-wise differences of the model matrix per individual. * pbnftest: new function for (modified) BNF statistic (Durbin-Watson test generalised to panels) and Baltagi/Wu's LBI statistic (Bhargava/Franzini/Narendranathan (1982), Baltagi/Wu (1999)). * pcdtest: bias-corrected scaled LM test implemented (test = "bcsclm") as in Baltagi/Feng/Kao (2012). * summary.plm: for all random models and for all instrumental variable models, single coefficient tests are based on std. normal distribution and joint coefficient (Wald) test on Chi-square distribution. * pwaldtest: now handles IV models correctly (Wooldridge (1990)); method for random pvcm models added (and used in summary.pvcm). * pht: fixed estimation (plm 1.6-6 introduced a slight regression). * summary.pht: waldtest now uses Chi-square distribution (was F distribution). * Fixed first-difference models (plm(., model = "fd"), pggls(., model = "fd")) to have an intercept by default again (disappeared in plm 1.6-6). * Between.matrix: bug fixed, so that the transformation can be correctly performed for a matrix without index attribute. * make.pconsecutive for pseries: for consecutive pseries, the argument 'balanced' was not respected. * pwfdtest: fixed error when one individual has one observation only. * pmodel.response, fitted.plm, residuals.plm: for "between" and "fd" models, a pure numeric is returned, not an 'illegal' pseries anymore (these models compress data where having an index/pseries is useless and misleading). * Between and Within methods for matrices are now exported. * plm object: gained element 'weights' if weighted estimation was performed. * groupGenerics now used for 'pseries' objects, implemented as a wrapper for methods in groups 'Math', 'Ops' and 'Complex' (see ?groupGeneric). Thus, propagation to a higher or lower data type works correctly when performed on pseries, e.g., c("pseries", "integer") is propagated to c("pseries", "numeric") if an operation returns a decimal. * Vignettes: translated package's original vignette to Rmd format and renamed to plmPackage.Rmd; added vignette plmFunction.Rmd for further explanation about the estimation of error components models with the plm function; in plmPackage.Rmd fixed typo in formula for cross-sectional dependence scaled LM test. ### Deprecated/renamed: * pht, plm(., model = "ht"/"am"/"bms"): both uses deprecated, better use instead plm(., model="random", random.method ="ht", inst.method="baltagi"/"am"/"bms") to estimate Hausman-Taylor-type models. * summary.plm: removed support for ill-named argument '.vcov', instead use 'vcov'. '.vcov' has been deprecated in plm 1.6-4 on CRAN since 2016-11-30. * pvcovHC: function deprecated, use vcovHC for same functionality. * plm: using the 'instruments' argument errors now (gave deprecation warning). * dynformula: the long deprecated function now gives a deprecation warning. * detect.lindep: previously named detect_lin_dep; renamed for consistency in function naming (back-compatible solution implemented) [back compatibility removed in plm 2.6-0]. ### Minor items: * pvar: added method for pseries. * pgrangertest: better detection of infeasibility if a series is too short. * pdata.frame: fixed bug so that pdata.frames with only one column can be created if drop.index = TRUE is set. * pgmm object: removed element 'df.residual' for now as it contained the function of the same name rather than a number; fixed handling of argument 'lost.ts''s second element. * as.data.frame.pdata.frame gained argument 'keep.attributes'. * [.pdata.frame: in case a single column, i.e., a pseries is returned, this pseries now has names (now consistent to extraction by \$.pdata.frame and [[.pdata.frame). * is.pseries: added function to check if an object qualifies as a pseries. * (internal) is.index, has.index: new non-exported functions to check if an object is or has a proper index (in the sense of the plm package). * pvcm object: element 'residuals' is now of class c("pseries", "numeric") (was: "numeric" for within model); element 'coefficients' is numeric for random model (was "matrix" with one column); element 'df.residuals' renamed to 'df.residual' (as is standard, cf. lm, plm, ...). * print.pseries: prettier printing for c("pseries", "complex"). * print.summary.plm: more informative for perfect fits (all residuals are 0). * plm/ercomp: informative error messages for non-estimable 'swar' and 'amemiya' models when between model lacks observations ('swar') and individual or time dimension lacks within variation ('amemiya'). * plm/model.matrix.pFormula: informative error message for non-finite values. * summary.purtest: give informative error message when run on purtest object containing result for Hadri's test. * pcce, pht, pmg, pggls models: proper names in printed summary's topline. * pcce models: pooled model's element 'coefficients' is numeric (was 1x1 matrix). * pwaldtest: in all cases, htest object's 'statistic' element is a numeric (was 1x1 matrix for some cases). * Data set 'Crime' extended with pre-computed log values as in original data. ### Dependencies: * Added to 'Suggests': knitr, rmarkdown, bookdown. *** # plm 1.6-6 * ercomp: * re-written to be a more general framework. * (internal) returned ercomp object: component 'sigma2' is now a numeric; component 'theta' is now either a numeric (balanced models) or a list with numerics (unbalanced models), the numerics being of length 1 (one-way models) or of length equal to the number of observations (two-ways models). * model.matrix.*: gained new argument 'cstcovar.rm' to remove specific columns. * pmodel.response: now returns object of class c("pseries", "numeric") [was "numeric"]. * plm: * random effect models: some random methods extended to unbalanced two-ways case (Nerlove's method only supports balanced one-way, two-ways), thanks to the more general ercomp framework. * nested random effects model implemented (Baltagi/Song/Jung (2001)), use effect = "nested", see example in ?plm. * two-way fixed effects model for unbalanced panels is faster. * new argument 'weights' added. * fix backward compatibility for the (deprecated!) argument 'instruments' to estimate IV models (but rather use 2-part formulae for IV models). * plm gives an informative error message if all terms are dropped in an estimation due to aliasing. * argument 'inst.method': value "bmc" renamed to "bms" for the Breusch-Mizon-Schmidt method ("bmc" was a typo, back-compatible solution implemented). * pht: argument 'model': value "bmc" renamed to "bms" (cf. plm). * purtest: * for test = * "madwu": Maddala-Wu test statistic used to be computed using p-values from the normal distribution, fixed now, by using approximated p-values for the tau distribution described by MacKinnon (1994). * "hadri": * fixed p-value (now based on one-sided test). * fixed statistic in non-heteroskedasticity case (Hcons = FALSE). * degrees of freedom correction implemented (set dfcor = TRUE). * "ips", "levinlin": p-values fixed (now one-sided to the left). * new tests: Choi (2001) modified P ("Pm"), inverse normal ("invnormal"), logit ("logit"). * cosmetic: when argument 'lags' is not specified by user, the returned object does not contain all three possible values in 'args\$lags' anymore. * cipstest: for the truncated version of the test, the constants used in the calculation were mixed up for type = "none" and "trend". * pldv: new function to compute fixed and random effects models for truncated or censored dependent variable. * pgrangertest: added Granger causality test for panels (Dumitrescu/Hurlin (2012)). * pbsytest: * test = "j": [joint test by Baltagi/Li(1991)]: fixed degrees of freedom (now df = 2 instead of df = 1). * unbalanced version of all statistics implemented (Sosa-Escudero/Bera (2008)). * new argument 're.normal' (only relevant for test = "re"): allows to compute the two-sided RE test when set to FALSE (default is TRUE which gives the one-sided RE test as before). * plm.data: * use discouraged now (gives warning), use pdata.frame instead. * function internally uses pdata.frame now and then adjusts to get a "plm.dim" object as before. This way, plm.data benefits from bug fixes made previously to pdata.frame. * pdata.frame: * by default, the resulting pdata.frame is now closer to the original data: * columns with constant values and all-NA values are not removed anymore, * non-finite values are not substituted with NAs anymore, * unused factor levels are not dropped anymore (except for those variables serving to construct the index). * arguments 'drop.NA.series', 'drop.const.series', 'replace.non.finite', 'drop.unused.levels' introduced to remove/replace columns/values as described before (all default to FALSE). * warning issued if an index variable is to be constructed that subsequently overwrites an already present column of the same name ('id' and/or 'time'). * pacified warning in subsetting with non-existent rows and columns due to deprecation of 'structure(NULL, *)' in R >= 3.4.0. * \$<-.pdata.frame: preserves storage mode and sets correct class if propagation to higher class occurred for a pseries prior to assignment (in plm 1.7-0 this was replaced by the more general approach using groupGenerics). * ranef: new function to calculate random effects from RE model objects, like fixef for FE models. * aneweytest: changed to use the residuals of the one-way individual within model (was: two-ways within model). * cortab: new function to compute cross-sectional correlation matrix. * pwartest, pwfdtest: * statistics are labelled as F statistics. * calculations now done without car::linearHypothesis(). * diff.pseries: * logicals can now be diff'ed (result is integer, mimics base::diff). * does not warn anymore if argument 'lag' has length > 1. * difft.pseries (note the "t") implemented (non-exported), diff-ing with taking the value of the time dimension into account, analogous to already implemented (non-exported) functions lagt.pseries/leadt.pseries. * punbalancedness: extended to calculate unbalancedness measures of nested panel structures as in Baltagi/Song/Jung (2001). * mtest, sargan: return values gained data.name element. * pbltest: now accepts pdata.frames with index not in first two columns. * pwartest.formula (only formula interface): fixed: ellipsis ("dots") was not passed on. * pwaldtest: fix detection of vcovs generated by package 'clubSandwich' for models with an intercept. * summary.pseries: better handling of characters, logicals, factors (use base methods). * summary.piest, summary.pht: table headings now have "z-value" and "Pr(>|z|)" as the numbers are based on standard normal distribution. * make.pbalanced: argument 'balanced.type': * 'shared' renamed to 'shared.times' (with a back-compatible solution), * 'shared.individuals' added as additional option (symmetric case). * print.pseries: prettier printing for integers. * print.summary.plm: prints information about dropped coefficients due to singularities (mimics print.summary.lm). * cosmetic: some print functions now have better aligned whitespacing. ### Dependencies: * R version >= 3.1.0 required now. * 'Imports': maxLik added, function maxLik::maxLik is re-exported by plm. * moved from 'Imports' to 'Suggests': car. * 'Suggests': added pcse, clusterSEs, clubSandwich, pglm, spdep, splm, statmod, Ecdat, pder, stargazer, texreg, foreign. *** # plm 1.6-5 * pFtest: disable input model check due to reverse dependency of package AER (and to allow arbitrary model comparisons); check was erroneously enabled in plm version 1.6-4. *** # plm 1.6-4 * Argument for supplying a variance-covariance matrix is now consistently named 'vcov' across all functions. The old argument '.vcov' of summary.plm is marked as deprecated. Deprecation warnings are only issued for those functions which where on CRAN with the now deprecated argument '.vcov' (i.e., just for summary.plm, no warnings for functions pwaldtest, fixef, within_intercept). * Snesp.Rd, LaborSupply.Rd: broken links fixed. * Vignette: updated contact details. *** # plm 1.6-3 * Function Ftest renamed to pwaldtest (there was never a CRAN release with Ftest exported, thus no deprecation warning). * summary.plm: F statistic uses adjusted df2 parameter in case of robust vcov. *** # plm 1.6-2 * pcdtest optimized for speed. 'preshape()' added to pcdtest.R to take care of reshaping in wide form prior to applying 'cor()'. *** # plm 1.6-1 * vcovG and vcovBK: added compliance with instrumental variables models (through two-parts formulae). * plm.Rd: added note on the intercept in 'fd' models, and how to eliminate it. * make.pbalanced: gained argument 'balance.type' which allows to select whether to balance by filling in NA values ("fill", like before) or (now new) also by keeping only time periods shared among all individuals ("shared" [in v1.6-6 renamed to "shared.times"]). * pbsytest: issue warning when applied to an unbalanced model (unbalanced tests still in preparation). * print.summary.plm: for "between" models: print the no. of obs used in estimation (like for "fd" models since 1.5-24). * pcdtest: * returned htest object has correct data.name value now. * NaN stemming from non-intersecting periods or only one shared period of pairs of individuals avoided by omission from calculation. * pcdtest(some_var ~ 1, data) does not error anymore. * NEWS file: order of entries changed: latest entries now at top of file. * pdim.pseries: added method. * is.pbalanced.*: methods added to determine balancedness for convenience. Same as pdim()\$balanced, but avoids calculations performed by pdim() which are not necessary to determine (just) the balancedness. * some functions little more efficient by using is.pbalanced() instead of pdim()\$balanced. *** # plm 1.5-35 * pbltest.plm: plm interface now respects the 'alternative' argument. * summary.plm: summary.plm objects gained new component 'df' to mimic summary.lm objects more closely. * gettvalue() added as (internal) function to quickly extract one or more t values from an estimated model (so one can avoid a call to summary() with all the other unnecessary computations). *** # plm 1.5-34 * Ftest: support for vcovs from package clubSandwich to allow df2 adjustment in robust F test (new func trans_clubSandwich_vcov added for this purpose). * (internal) model.matrix.pFormula: case "pooling" added to twoways/unbalanced condition; for unknown cases, give meaningful error. * alias.plm, alias.pFormula: added functions to complement the generic stats::alias to detect linear dependence (much like detect_lin_dep). * detect_lin_dep.plm: added (complementing previously added detect_lin_dep methods from version 1.5-15). [function was renamed to detect.lindep in version 1.7-0]. * plm objects gained element 'aliased' (a named logical) to indicate any aliased coefficients that are silently dropped during estimation by plm (cf. summary.lm objects). * fix: vcovXX.plm / vcovG framework now handle plm models with aliased coefficients (linear dependent columns in model matrix). * phtest: * better support for between models. * for method="aux", argument 'effect' is now extracted from dots. *** # plm 1.5-33 * (internal) pdiff gained 'effect' argument and thus is more general. * plm: trying to estimate first-difference (FD) models with effect="time" or "twoways" is now prevented with meaningful error messages; footnote 3 in vignette slightly adapted to reflect this. *** # plm 1.5-32 * pcdtest: fixed p-value for cross-sectional dependence scaled LM test (pcdtest(..., test = "sclm")). *** # plm 1.5-31 * fixef: return value is now class c("fixef", "numeric") ("numeric" added). * summary.fixef: return value is now of class c("summary.fixef", "matrix") ("matrix" added); type and df.residual added as attributes. Both class additions allow easier further processing of the return values. *** # plm 1.5-30 * lagt.pseries (experimental, non exported function): now handles NA values in time index. * pdata.frame: warning about NA in time index turned into a note being printed. *** # plm 1.5-29 * print.pdata.frame: workaround to prevent error when printing pdata.frames with duplicated row names (original row names are suppressed for printing in this case). *** # plm 1.5-28 * phtest (regression based): if only one regressor in formula, the test does not stop anymore. *** # plm 1.5-27 * model.matrix.pFormula: little speed up of within transformation in the two-ways unbalanced case. * model.matrix.pFormula: little speed up for some more transformations by using .colMeans instead of apply(X, 2, mean). *** # plm 1.5-26 * residuals.plm: residuals extracted by residuals(plm_object) now have class c("pseries", "numeric") (was just "pseries" before). *** # plm 1.5-25 * fixef: * summary.fixef: t distribution is used for p-value calculation (like the heading states). * fixef: for the t distribution to be applied for p-value calculation, objects of class "fixef" gained a "df.residual" element. *** # plm 1.5-24 * print.summary.plm: for FD models: now also prints number of observations used during estimation, because these differ from the number of observations (rows) in the model frame due to diff-ing. * pres: fixed handling of pggls' FD models and, thus, summary on pggls' FD models does not error anymore. * pbltest: now has a plm interface (besides the formula interface). *** # plm 1.5-23 * make.pconsecutive: new function to make a (p)data.frame or pseries consecutive, meaning having consecutive time periods, t, t+1, t+2, ..., where t is an integer (fills in missing time periods). Optionally, by argument 'balanced', (p)data.frames or pseries can be made consecutive and at the same time also balanced. * make.pbalanced: new function to make a (p)data.frame or pseries balanced (but not consecutive) (fills in missing time periods). *** # plm 1.5-22 * pdata.frames are now more consistent after subsetting: => identical(pdataframe, pdataframe[1:nrow(pdataframe), ]) yields TRUE now * fixed: after subsetting unnecessary information was added to the resulting pdata.frame. * fixed: mode of index attribute was changed (unintentionally "simplified"). * pdata.frame is now a little more informative about NA values in either individual or time index (a warning is issued when such a pdata.frame is created). * [.pdata.frame: indexing a pdata.frame is now fully consistent to indexing a data.frame (as documented): * fixed: special case of indexing by [i] (missing j) which erroneously returned rows instead of columns. * pdata.frame's warnings: * if duplicate couples or NA values in the index variables are found while creating a pdata.frame, the warning now gives users a hint how to find those (table(index(your_pdataframe), useNA = "ifany"). * printed is now "id-time" (was: "time-id") to be consistent with order of index variables. *** # plm 1.5-21 * new function as.list.pdata.frame: Default behaviour is to act identical to as.list.data.frame (some code relies on this, do not change!). By setting arg 'keep.attributes = TRUE', one gets a list of pseries and can operate (e.g., 'lapply') over this list as one would expect for operations on the columns of a pdata.frame, e.g., to lag over more than one column and get a list of lagged columns back, use: lapply(as.list(pdataframe[ , your_cols], keep.attributes = TRUE), lag). *** # plm 1.5-20 * vcovXX.pcce methods added by copying the vcovXX.plm ones; work just the same, sandwiching the appropriate "meat" in transformed data. General reference is Wooldridge, Ch. 7. *** # plm 1.5-19 * pcce now supports model.matrix and pmodel.response methods, extracting the transformed data so that the estimator can be replicated by lm(pmodel.response(model) ~ model.matrix(model)); this is needed both for vcovXX functions and for cluster bootstrapping. * summary.pcce outputs the R2 calculated according to Holly, Pesaran and Yamagata instead of RSS/TSS. *** # plm 1.5-18 * pcdtest: small efficiency enhancement (calc only lower.tri of rhos). * pos.index (internal, not exported): new function to determine column numbers of index vars in a pdata.frame. * cosmetics: * some extraction/subsetting functions doubled 'pseries' in the class of returned value (fixed now). * extraction methods for pdata.frame and pseries now preserve order of attributes. * class "pindex" for attribute index not lost anymore after subsetting a pdata.frame. *** # plm 1.5-17 * lagt.pseries: new method respecting "content" of time periods [not yet exported due to testing]. * is.pconsecutive: default method exported so it can be used for arbitrary vectors. *** # plm 1.5-16 * plmtest: * fixed p-values [for type="kw" and "ghm"], * unbalanced version of all test statistics implemented, * doc update with literature references to unbalanced tests, * if requested, the "kw" statistic is now also calculated as one-way ("individual" or "time"), albeit it coincides with the respective "bp" statistic. * pwtest: formula interface respects 'effect' argument, 'effect' argument now mentioned in doc. * data set 'Wages': factor 'sex' re-leveled to c("male", "female") to match use in original paper. * print.summary.plm: suppress printing of 'effects' argument in top line in case of 'pooling' model. * doc for between, Between, Within extended; doc for lag, lead, diff in separate file now (lag_lead_diff.Rd) * pdata.frame: * fixed bug: do not assume a specific order of data when only individual index is supplied, * resulting pdata.frame is ordered by individual, then time index, * when duplicate couples (id-time) are created, a warning is issued, * new argument 'stringAsFactors'. * pvar: * fixed warning about var on factor variable (var on factors is deprecated as of R 3.2.3), * fixed corner case with one group being all NA and other non-varying, * print.pvar: better handling of NA values. * lag/lead: fixed bug with dropped factor levels, added testfile tests/test_lag_lead_factor_levels.R. * is.pconsecutive: * new function to check if time periods are consecutive per individual, * better NA handling by added argument 'rm.na.tindex'. * pgmm: fixed bugs affecting the instrument matrix in the following cases: * GMM instruments are collapsed and restricted in lag length; * first lags are used as GMM instruments; * GMM instruments are collapsed in system GMM; * GMM instruments are restricted in lag length in system GMM. * punbalancedness: data frame interface gains 'index' argument. * within_intercept: new function to calculate an overall intercept along its standard error for FE models a la Stata and gretl, accepts argument '.vcov' for user defined vcov. * added help topic on package as a whole (?`plm-package`) for sake of completeness. * summary.plm: * argument '.vcov' can also be a function (before, only matrix was possible). * internal: the furnished vcov is saved in the summary.plm object in object\$rvcov (vcov function name in attr(object\$rvcov, which="rvcov.name"). * Ftest: * gained '.vcov' argument, which enables robust F test and chi-sq test computations [robust versions not yet weaved in summary.plm]. * now exported and has documentation (.Rd file). * returned htest object has vcov's name in 'method' element (if vcov was supplied). * Ftest later renamed to pwaldtest (in version 1.6-3). * (internal) vcovXX functions: furnished vcovs gain attribute "cluster" which give info about clustering, e.g., "group" or "time". * fixef: gains new argument '.vcov'. *** # plm 1.5-15 * punbalancedness: new function for unbalancedness measures for panel data as in Ahrens/Pincus (1981); added doc and testfile for punbalancedness. * DESCRIPTION: added URLs for package on CRAN and package on R-Forge. * model.matrix.pFormula and plm.fit: include 'assign' and 'contrasts' attributes (if any) in model fit * Vignette: summary(lme_mod)\$coef\$fixed -> summary(lme_mod)\$coefficients\$fixed to avoid partial matching of 'coef' to 'coefficients' by "\$" operator. * r.squared: adjusted R squared fixed (at least for models with intercept). * model.matrix.pFormula and pmodel.response: ensured that 'data' gets reduced to the corresponding model frame if not already a model frame (now mimics stats::model.matrix in this regard); fixes corner cases with specific NA patterns when model.matrix.pFormula or pmodel.response are called directly and 'data' not being a model frame (despite being required so) [see tests/test_model.matrix_pmodel.response_NA.R]. * detect_lin_dep: new function as a little helper function to detect linear dependent columns, esp. in model matrices; incl. doc with two examples about how linear dependent columns can be induced by the within transformation [function was renamed to detect.lindep in version 1.7-0]. * doc pFormula.Rd extended (especially examples) and split up in two files to better accommodate different return values and input values in the documentation (new file added: man/model.frame_model.matrix.Rd). *** # plm 1.5-14 * lag.pseries: modified to handle negative lags (=leading values). * lead.pseries: added function as a wrapper for lag.pseries(x, k = -1) for convenience, i.e., lag(x, k = -1) == lead(x, k = 1). * pmodel.response.pFormula: make sure supplied formula is a pFormula before we continue (coerce to pFormula), fixes "bugs" (rather unexpected, but documented behaviour) like: pmodel.response.pFormula(regular_formula, data = dat, model = "pooling") # Error in names(y) <- namesy : # 'names' attribute [482] must be the same length as the vector [0] * diff.pseries: prevented negative lags as input to avoid confusion. * doc for pseries functions are made available under their name, e.g., ?lag now displays helpfile for lag.pseries in the help overview (besides, e.g., stats::lag). * pdim.default: make error message "duplicate couples (time-id)" printed as proper error message (removed cat() around the message in stop(), was printed as regular string on screen before). * plm.data: slight improvement for printed outputs (spelling and spacing). * indexes: fixed return value (was always NULL). * doc updates: ?pdim: added section about possible different return values for pdim(pdata.frame) and pdim(panelmodel_object); others: linkage to base functions enabled, spelling. * mylm: added commented (i.e., inactive) warning about dropped coefficients in estimation. * fitted.plm: added commented (i.e., inactive) warning in about dropped coefficients in estimated model compared to specified model.matrix. * added testfile tests/test_fitted.plm.R (some of those test currently do not run (commented, i.e., inactive)). * some testfiles: fixed wired encodings. *** # plm 1.5-13 * fixed bug in vcovHC(..., method="white") from degenerating diag() if any group has only 1 element. * vcovG framework: reintroduced "white2" method. *** # plm 1.5-12 * dataset Produc: added variable 'region' as 3rd column and fixed variable descriptions: 'pcap' is public capital (not private) while 'pc' is private capital (not public). * added importFrom as per CRAN check for submission. *** # plm 1.5-11 * added RiceFarms to datasets to eliminate non-CRAN dependencies, (temporarily) removed 'pder' from suggested, uncommented (fixed) example in pdwtest.Rd. *** # plm 1.5-9 * fixed bug in vcovG for lagged White terms (make pseudo-diagonal in E(u,v)); affected vcovNW. * documentation updates (mostly text books of Baltagi and Wooldridge to latest editions, references are also more specific now). * pbgtest: fixed/enabled type="F" (F test of lmtest::bgtest) in wrapper pbgtest() and fixed/enabled passing of argument 'order.by' [additional argument in lmtest::bgtest] [tests/testpbgtest.R added, docs updated and extended]. * phtest(., method="aux") [Hausman regression-based test]: fixed bug when data contain more cases than there are used in model estimation (due to NA values); avoid calc. of RE model a second time; phtest now also works with between model correctly (fixed degrees of freedom) tests/test_phtest_Hausman_regression.R added. * plm(): original row names of input data are preserved in plm_object\$model, so functions like pmodel.response(), model.frame(), model.matrix(), residuals() return the original row names (and thus fancy row names if those were to be computed by pdata.frame) * as.data.frame.pdata.frame(): respects 'row.names' argument. *** # plm 1.5-8 * phtest (Hausman test): introduced new regression-based test, allowing for robust vcov (via argument method = "aux"). * fixed bugs in pdwtest. *** # plm 1.5-6 * pruned 'require' calls to 'lmtest', 'car', 'lattice' and substituted them with proper entries in NAMESPACE. * temporarily commented problematic examples in pbgtest and pdwtest. *** # plm 1.5-5 * fixed bug affecting vcovG on unbalanced datasets (thx Liviu Andronic) from propagation of NAs in final by-group matrix multiplication. *** # plm 1.5-4 * fixed testErrors.R with plm.data instead of pdata.frame. *** # plm 1.5-3 * reintroduced plm.data eliminated by mistake. *** # plm 1.5-1 * fixed "already a pdata.frame" bug in pcdtest.formula. * implemented fixef() method for objects estimated by pggls(). *** # plm 1.5-0 * added generic building block and high-level wrappers vcovNW and vcovDC to the namespace. * dataset Parity added to /data. *** # plm 1.4-0 * substituted vcovHC, vcovSCC with the new framework based on vcovG and wrapper functions. *** # plm 1.3-1 * a 'subset' argument is added to print.summary.plm and summary.pht so that a subset of coefficients may be selected. * fixed a small problem on the printing of the typology of the variables for pht models. * the "name" of the tests is now the formula truncated so that it prints on only one line. * 'restrict.matrix' argument added to deal with linear restrictions. * a 'vcov' argument is added to summary.plm so that a variance matrix can be supplied. * the deviance method for panelmodel objects is now exported (12/02). * the Hausman-Taylor now supports the Amemiya-MaCurdy and the Breusch-Mizon-Schmidt version. * a small bug is fixed on the var2lev function to deal the case when there are no factors. *** # plm 1.3-0 * an update method for panelmodel objects is provided. * the Wages example is removed from the pvar man page because it's time consuming. *** # plm 1.2-10 * for unbalanced Hausman-Taylor model, the printing of the error components was wrong, it is now fixed. * the printing of the removed variables (cst or NA) is improved. * the pgmm function has been improved to deal correctly with holes in the cross-sections ; a 'collapse' argument is added to limit the number of GMM instruments. * the CoefTable element of summary.pgmm objects is renamed to coefficients, so that it can easily be extracted using the coef method. * the default value for robust is now TRUE in the summary.pgmm method. * a new argument 'lost.ts' is added to pgmm to select manually the number of lost time series. * almost null columns of instruments are removed (this happens when within/between transformation is performed on between/within series. * plm now accepts three part formulas, the last part being for instruments introduced only in the within form. * the predict method for panelmodel objects is now exported. * plm now estimates systems of equations if a list of formulas is provided as the first argument. *** # plm 1.2-9 * the pccep function, estimating CCEP models a la Pesaran, has been added together with summary and print.summary methods. The function generates objects of a class of their own ("pccep"), much like 'pggls', together with 'panelmodel' ['pccep' was later renamed to 'pcce'.] * the pmg function, estimating MG, DMG and CCEMG models a la Pesaran, has been added together with summary and print.summary methods. The function generates objects of a class of their own ("pmg"), much like 'pggls', together with 'panelmodel'. In the future must consider possible merger with 'pvcm'. * the new cipstest function performs a second-generation CIPS test for unit roots on pseries objects. * the new (non-exported) function pmerge is used internally by cipstest to merge lags and differences of a pseries into the original pdata.frame. Will possibly be added to the user space in the future. *** # plm 1.2-8 * an index method is added for panelmodel, pdata.frame and pseries. * a bug in the typology of the variables in pht is fixed. * a bug in vcovBK (matrices degenerating into vectors) is fixed (thx to David Hugh-Jones for bug report). * the Between function now returns a pseries object. * the resid and fitted method now return a pseries object. * the pgmm method has been rewritten; the data frame is first balanced and NAs are then overwritten by 0s. *** # plm 1.2-7 * a typo is corrected in the man page of plm.data. * package AER is now suggested. *** # plm 1.2-6 * a bug in mtest for pgmm models with effect="individual" and transformation="ld" *and* for the wald test for time.dummies for model with effect="twoways" and transformation="ld" is fixed by modifying namest in pgmm. * there was a bug in pgmm for models with different lags for GMM instruments. The number of time series lost is now the min (and not the max) of the first lags for GMM instruments. * some parts of summary.pgmm only worked correctly for models with time-dummies. It now deals correctly for models with 'individual' effects. * the *.rda files are now compressed. * p-values for the two-tailed versions of plmtest() were wrong and have been fixed. They were divided by 2 instead of multiplied. *** # plm 1.2-5 * fixed error in pggls, model="within" (FEGLS). Added model="fd" (FDGLS). * changed dependency from package 'kinship' to 'bdsmatrix' (as suggested by Terry Therneau after his reorganization of the packages). * fixed DESCRIPTION and NAMESPACE accordingly. * fixed the example in pggls.Rd. *** # plm 1.2-4 * bug corrected in pgmm: ud <- cbind(ud, td.gmm.level) is relevant only for twoways models. * in fitted.plm, the extraction of the index is updated. * the residuals.plm method now has a 'model' argument. * new function r.squared introduced. * pmodel.response.plm is modified: no explicit 'effect' and 'model' arguments anymore (like in model.matrix.plm). *** # plm 1.2-3 * lag.pseries now returns relevant names for the returned factor. * pFormula is modified so that it can handle correctly Formula objects, and not only formula. * pgmm has been completely rewritten with a new 'Formula' interface. Old formula and dynformula interfaces are kept for backward compatibility but won't be maintained in the future. * 'subset' and 'na.action' are added to the list of arguments of pgmm and oldpgmm. * lag.pseries is now able to deal with vector arguments for lags, e.g., lag(x, c(1,3)). * suml(x) is replaced by Reduce("+", x). *** # plm 1.2-2 * the documentation has been improved. * the pvalue for purtest(..., type = "madwu") was in error (by a factor of 2). * in formula(dynformula), a bug is fixed so that the endog variable doesn't appear on the RHS if there are no lags. * in pgmm, the extract.data has been rewritten and is *much* faster. * two new functions vcovBK and vcovSCC have been added. * a 'model' argument is added to pgmm.sys and pgmm.diff (previously, the model name was extracted from the call). * in pgmm, Kt is fixed to 0 when effect="individual". *** # plm 1.2-1 * a new purtest function to perform panel unit root tests. * [[.pdata.frame is modified so that NULL (and not an error message) is returned if an unknown column is selected. *** # plm 1.2-0 * the as.matrix and print methods for pserie objects are now exported. * in summary.plm, the p-value is now computed using a Student distribution and not a normal one. * 'pserie' is renamed 'pseries'. * the lag.pseries method is modified so that it deals correctly with factors, and not only with numeric vectors. The diff.pseries method returns an error if its argument is not numeric. * the instruments-"backward compatibility" stuff in plm is simplified thanks to the new features of Formula. * a THANKS file is added. * the `[.pdata.frame` function is modified so that [, j] returns a pseries and not a pdata.frame when j is a single integer, and a backward compatibility feature is added for the "index" attribute. *** # Change since version 1-1.4 * an 'args' argument is added to plm objects, and the internal function relies now on it (and not on the call as previously). * more attention is paid when one of the estimated components of the variance is negative (warning or error messages result). * pdata.frame objects are re-introduced. They are used to compute model.frames. Extraction from pdata.frames results in 'pserie' objects which have an index attribute. * the print method of ercomp is now exported. * the first argument of pgmm may now be a formula. A lag.form must be provided in this case. * Hausman-Taylor estimation is now performed by the pht function. For backward compatibility reasons, it is still possible to estimate this model with plm. *** # plm 1-1.3 * a relevant error message is added when a within model is estimated with no time-varying variable. * the formula method for dynformula objects is now exported. * a misleading notation was corrected for plm.ht model. * the definition of sigma2\$id for unbalanced ht model is corrected, a harmonic mean of Ti being used. * the definition of tss.default is simplified. * the fitted.values element was missing for plm objects and has been added. *** # plm 1-1.2 * the /inst directory was missing, it has been added again. *** # plm 1-1.1 * part of the "details" section of the fixef.plm man page is removed. * a fitted.value method is now available for plm objects. It returns the fitted values of the untransformed response. * in pdiff, a drop=FALSE is added. This omission was responsible for a bug while estimating a model like plm(inv~value-1, data = Grunfeld, model = "fd"). * the lev2var is changed so that it doesn't result in an error when the data.frame contains no factor: this was responsible for a bug in plm.ht. *** # plm 1-1.0 * in fixef, the 'effect' argument default is now NULL: fixef(model_with_time_effect) now works correctly. * in pFtest, the error message "the arguments should be a within and a pooling model" is removed so that two within models may be provided. * for backward compatibility reasons, function pvcovHC is reintroduced. * for backward compatibility reasons, argument 'test' of pbsytest may be indicated in upper case. * we switched back to old names for two arguments of plm ercomp -> random.methods ivar -> inst.method -> ivar. * amemiya method is not implemented for unbalanced panels: an error message is now returned. *** # plm 1-0.1 * the plm function has been completely rewritten. * the names of some arguments have changed (random.methods -> ercomp, inst.method -> ivar), the old names are accepted with a warning. * the 'instruments' argument is removed, instrumental variable estimation is performed using extended formula. The 'instruments' argument is still accepted with a warning. * the 'model' element of plm objects are now ordinary data.frame, and not data.frame with elements y and X. Moreover, this data.frame contains untransformed data. * the data sets which are relevant for panel data estimation that where previously in the 'Ecdat' package are now in the plm package. * in pvcm a bug when the estimation was made on a subset is fixed. * ercomp is a stand alone function which returns the estimation of the components of the variance of the errors. * the estimation of two-ways within model is now implemented for unbalanced panels. * the fixef method is much improved, the fixed effects may be computed in levels, in deviation from the first level, and in deviation from the overall mean. * in pbsytest, the arguments test are now in lowercase. * the pvcovHC function is replaced by suitable vcovHC methods for panelmodel and pgmm models. *** # plm 1-0.0 * lag and diff methods for pseries are now exported and therefore behave correctly. * for two-ways within models with instrumental variables, K is replaced by K+1 for the computation of the overall mean matrix of the instruments. Time fixef are now computed. The error message "impossible ..." is removed. * a bug in the time random effect model is corrected. * a model.matrix method for panelmodel is provided. * models without intercept (-1 in the formula) should now be consistently estimated with plm, pggls and pvcm. * plm depends now on the 'Formula' package which provides useful tools for formula with two parts. *** # plm 0-3.2 * a lot of typos of the man pages have been fixed. * functions pcdtest, pcdres have been added. * for Hausman-Taylor model, summary now prints the variables and not the effects. * the estimation of a model with only one explanatory variable using plm with method = "fd" is now working correctly. *** # plm 0-3.1 * in plm.formula, [int.row.names] is replaced by [as.character(int.row.names)]. * the degrees of freedom for a within time effect model was wrong and has been corrected. * the arguments 'type' and 'weights' in pvcovHC.panelmodel are renamed to 'method' and 'type', respectively. The default method (type in previous versions) is "arellano"" and not "white1". * honda is now the default option for plmtest. *** # plm 0-2.2 * the coefficients method for objects of class pgmm is now exported. * a bug in the plm method of plmtest has been fixed. * in plmtest, for argument 'effect' value "id" is renamed "individual". * three testing functions are added : pbsytest (Bera, Sosa-Escudero and Yoon test), pARtest (Breusch-Godfrey test) and pDWtest (Durbin-Watson test) (later renamed to pdwtest), pwartest, pBGtest (later renamed to pbgtest), pwtest, and pbltest. * plm, pvcm and pggls now have arguments "subset" and "na.action". * phtest, pFtest, plmtest now have a formula method. * a bug is fixed for the vcov of the within model. * the pdata.frame function and class is suppressed. The package now use ordinary data.frames. *** # plm 0-2.1 * pdata.frame is much faster thanks to a modification of the pvar function. * series with only NA values or with constants values are now removed by pdata.frame. * observations are ordered by id and time by pdata.frame. * a pfix function is added to edit a pdata.frame [at some later point this function was removed from the package]. * a as.data.frame function is provided to coerce a pdata.frame to a data.frame. * the dependency to the 'Matrix' package has been removed and pgmm is much faster now. * phtest has been fixed to return only positive values of the statistic. * pgmm objects now inherit from panelmodel like other estimators and print correctly. * a bug in summary.pgmm has been fixed. *** # plm 0-1.2 * Models with only one explanatory variable resulted in an error. This has been fixed. * Estimation methods are now available with these four functions : plm, pvcm, pggls, and pgmm instead of one (plm) in the previous version. * pvcm is a new function which estimates variable coefficients models. The "nopool" model is now part of it. * pggls is a new function which enables the estimation of general FGLS. * pgmm is a new function for general method of moments estimator. * for all estimation functions, the first four arguments are now 'formula', 'data', 'effect', 'model'. * robust inference is now provided by the pvcovHC function. plm/inst/0000755000176200001440000000000014742231577012033 5ustar liggesusersplm/inst/DPD98.R0000644000176200001440000000612714736532272012753 0ustar liggesusers# @---------------------------- one-step estimates -----------------------------@ vc=s*inxmx; @ covariance matrix @ stderr=sqrt(diag(vc)); @ standard errors @ trat=b./stderr; @ t-ratios @ pvt=2*cdfnc(abs(trat)); @ p-values @ if m0125; if sc2; @ serial correlation tests @ v2v=y2y+b'x2x*b-y2x*b-b'x2y; v2x=y2x-b'x2x; vhat2=(yky2+b'xkx2*b-2*ykx2*b-2*v2x*inxmx*xz*inzkz*(zky2-zkx2*b)+ v2x*inxmx*v2x')*s; m2=v2v./sqrt(vhat2); pvm2=2*cdfnc(abs(m2)); endif; if sc1; v1v=y1y+b'x1x*b-y1x*b-b'x1y; v1x=y1x-b'x1x; vhat1=(yky1+b'xkx1*b-2*ykx1*b-2*v1x*inxmx*xz*inzkz*(zky1-zkx1*b)+ v1x*inxmx*v1x')*s; m1=v1v./sqrt(vhat1); pvm1=2*cdfnc(abs(m1)); endif; # @------------------ robust statistics for one-step estimates -----------------@ xax2=xzinzkz*zkz2*xzinzkz'; vc2=inxmx*xax2*inxmx; @ covariance matrix @ stderr2=sqrt(diag(vc2)); @ standard errors @ trat2=b./stderr2; @ t-values @ pvt2=2*cdfnc(abs(trat2)); @ p-values @ if sc2; @ serial correlation tests @ if m34; v2v=y2y+b'x2x*b-y2x*b-b'x2y; v2x=y2x-b'x2x; endif; vhat2w=vomv2w-(2.*v2x*inxmx*xzinzkz*zomv2w)+(v2x*vc2*v2x'); m2w=v2v./sqrt(vhat2w); pvm2w=2*cdfnc(abs(m2w)); endif; if sc1; if m34; v1v=y1y+b'x1x*b-y1x*b-b'x1y; v1x=y1x-b'x1x; endif; vhat1w=vomv1w-(2.*v1x*inxmx*xzinzkz*zomv1w)+(v1x*vc2*v1x'); m1w=v1v./sqrt(vhat1w); pvm1w=2*cdfnc(abs(m1w)); endif; # @---------------------------- Two-step estimates -----------------------------@ if (iiv==1 and ijus==0); if imike==0; inzkz2=invpd(zkz2); else; inzkz2=pinv(zkz2); endif; clear zkz2; bxmx=xz*inzkz2*zx; bxmy=xz*inzkz2*zy; bvc=invpd(bxmx); @ covariance matrix @ bb=bvc*bxmy; @ coefficient vector @ bstderr=sqrt(diag(bvc)); @ standard errors @ btrat=bb./bstderr; @ t-values @ bpvt=2*cdfnc(abs(btrat)); @ p-values @ if sc2; @ serial correlation tests @ bv2v=y2y+bb'x2x*bb-y2x*bb-bb'x2y; bvhat2w=vomv2w-(2.*v2x*bvc*xz*inzkz2*zomv2w)+(v2x*bvc*v2x'); bm2w=bv2v./sqrt(bvhat2w); pvbm2w=2*cdfnc(abs(bm2w)); endif; if sc1; bv1v=y1y+bb'x1x*bb-y1x*bb-bb'x1y; bvhat1w=vomv1w-(2.*v1x*bvc*xz*inzkz2*zomv1w)+(v1x*bvc*v1x'); bm1w=bv1v./sqrt(bvhat1w); pvbm1w=2*cdfnc(abs(bm1w)); endif; plm/inst/CITATION0000644000176200001440000000363614124132276013166 0ustar liggesusersbibentry(bibtype = "Book", title = "Panel Data Econometrics with {R}", author = c(person(given = "Yves", family = "Croissant", email = "yves.croissant@univ-reunion.fr"), person(given = "Giovanni", family = "Millo", email = "giovanni.millo@deams.units.it")), publisher = "Wiley", year = "2018", header = "To cite plm in publications use:" ) bibentry(bibtype = "Article", title = "Panel Data Econometrics in {R}: The {plm} Package", author = c(person(given = "Yves", family = "Croissant", email = "yves.croissant@univ-reunion.fr"), person(given = "Giovanni", family = "Millo", email = "giovanni.millo@deams.units.it")), journal = "Journal of Statistical Software", year = "2008", volume = "27", number = "2", pages = "1--43", doi = "10.18637/jss.v027.i02", header = "To cite plm in publications use:" ) bibentry(bibtype = "Article", title = "Robust Standard Error Estimators for Panel Models: A Unifying Approach", author = person(given = "Giovanni", family = "Millo", email = "giovanni.millo@deams.units.it"), journal = "Journal of Statistical Software", year = "2017", volume = "82", number = "3", pages = "1--27", doi = "10.18637/jss.v082.i03", header = "For the covariance matrix estimators in plm, please cite:" ) plm/inst/REFERENCES.bib0000644000176200001440000041045614741302315014130 0ustar liggesusers@article{AMEM:71, author={T. Amemiya}, title={The Estimation of the Variances in a Variance--Components Model}, journal={International Economic Review}, volume={12}, year={1971}, pages={1--13} } @article{ANDE:HSIA:81, author={T.W. Anderson and C. Hsiao}, title={Estimation of Dynamic Models With Error Components}, journal={Journal of the American Statistical Association}, volume={76}, year={1981}, pages={598--606} } @Article{ANDE:HSIA:82, author = {T.W. Anderson and C. Hsiao}, title = {Formulation and estimation of dynamic models using panel data}, journal = {Journal of Econometrics}, year = {1982}, OPTkey = {}, volume = {18}, OPTnumber = {}, pages = {47-82}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{AREL:BOND:91, author={M. Arellano and S. Bond}, title={Some Tests of Specification for Panel Data : Monte Carlo Evidence and an Application to Employment Equations}, journal={Review of Economic Studies}, volume={58}, year={1991}, pages={277--297} } @book{AREL:03, author={M. Arellano}, title={Panel Data Econometrics}, publisher={Oxford University press}, year={2003} } @article{BALE:VARA:87, author={P. Balestra and J. Varadharajan--Krishnakumar}, title={Full Information Estimations of a System of Simultaneous Equations With Error Components}, journal={Econometric Theory}, volume={3}, year={1987}, pages={223--246} } @article{BALT:81, author={B.H Baltagi}, title={Simultaneous Equations With Error Components}, journal={Journal of Econometrics}, volume={17}, year={1981}, pages={21--49} } @book{BALT:01, author={B.H. Baltagi}, title={Econometric Analysis of Panel Data}, publisher={John Wiley and Sons ltd}, year={2001}, edition={3rd} } @book{BALT:03, author={B.H. Baltagi}, title={Econometric Analysis of Panel Data}, publisher={John Wiley and Sons ltd}, year={2003}, edition={4th} } @Book{PFAFF:08, title = {Analysis of Integrated and Cointegrated Time Series with R}, author = {Bernhard Pfaff}, publisher = {Springer}, edition = {Second}, address = {New York}, year = {2008}, note = {ISBN 0-387-27960-1}, url = {https://CRAN.r-project.org/package=urca}, } @Book{SEVE:02, author = {Patrick Sevestre}, ALTeditor = {}, title = {Econom\'etrie des donn\'ees de panel}, publisher = {Dunod}, year = {2002}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Book{PIRO:11, author = {Alain Pirotte}, ALTeditor = {}, title = {Econom\'etrie des donn\'ees de panel}, publisher = {Economica}, year = {2011}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Book{HSIA:03, author = {C. Hsiao}, ALTeditor = {}, title = {Analysis of Panel Data}, publisher = {Cambridge University Press}, year = {2003}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, address = {Cambridge}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @book{HSIA:14, place={Cambridge}, edition={3}, series={Econometric Society Monographs}, title={Analysis of Panel Data}, DOI={10.1017/CBO9781139839327}, publisher={Cambridge University Press}, author={Hsiao, Cheng}, year={2014}, collection={Econometric Society Monographs} } @article{BLUN:BOND:98, author={R. Blundell and S. Bond}, title={Initial Conditions and Moment Restrictions in Dynamic Panel Data Models}, journal={Journal of Econometrics}, volume={87}, year={1998}, pages={115--143} } @article{BREU:PAGA:80, author={T.S. Breusch and A.R. Pagan}, title={The Lagrange Multiplier Test and Its Applications to Model Specification in Econometrics}, journal={Review of Economic Studies}, volume={47}, year={1980}, pages={239--253} } @article{CRIB:04, author={F. Cribari--Neto}, title={Asymptotic Inference Under Heteroskedasticity of Unknown Form}, journal={Computational Statistics & Data Analysis}, volume={45}, year={2004}, pages={215--233} } @article{GOUR:HOLL:MONF:82, author={C. Gourieroux and A. Holly and A. Monfort}, title={Likelihood Ratio Test, Wald Test, and Kuhn--Tucker Test in Linear Models With Inequality Constraints on the Regression Parameters}, journal={Econometrica}, volume={50}, year={1982}, pages={63--80} } @book{GREE:03, author={W.H. Greene}, title={Econometric Analysis}, publisher={Prentice Hall}, year={2003}, edition={5th} } @book{GREE:12, author={W.H. Greene}, title={Econometric Analysis}, publisher={Prentice Hall}, year={2012}, edition={7th} } @book{GREE:18, author={W.H. Greene}, title={Econometric Analysis}, publisher={Prentice Hall}, year={2018}, edition={8th} } @article{HAUS:78, author={J.A. Hausman}, title={Specification Tests in Econometrics}, journal={Econometrica}, volume={46}, year={1978}, pages={1251--1271} } @article{HAUS:TAYL:81, author={J.A. Hausman and W.E. Taylor}, title={Panel Data and Unobservable Individual Effects}, journal={Econometrica}, volume={49}, year={1981}, pages={1377--1398} } @article{HOLT:NEWE:ROSE:88, author={D. Holtz--Eakin and W. Newey and H.S. Rosen}, title={Estimating Vector Autoregressions With Panel Data}, journal={Econometrica}, volume={56}, year={1988}, pages={1371--1395} } @article{HOND:85, author={Y. Honda}, title={Testing the Error Components Model With Non--Normal Disturbances}, journal={Review of Economic Studies}, volume={52}, year={1985}, pages={681--690} } @article{KING:WU:97, author={M.L. King and P.X. Wu}, title={Locally Optimal One--Sided Tests for Multiparameter Hypothese}, journal={Econometric Reviews}, volume={33}, year={1997}, pages={523--529} } @article{MACK:WHIT:85, author={J.G. MacKinnon and H. White}, title={Some Heteroskedasticity--Consistent Covariance Matrix Estimators With Improved Finite Sample Properties}, journal={Journal of Econometrics}, volume={29}, year={1985}, pages={305--325} } @article{NERLO:71, author={M. Nerlove}, title={Further Evidence on the Estimation of Dynamic Economic Relations from a Time--Series of Cross--Sections}, journal={Econometrica}, volume={39}, year={1971}, pages={359--382} } @book{STOC:WATS:07, title={Introduction to econometrics}, author={Stock, James H and Watson, Mark W}, year={2007}, publisher={Pearson/Addison Wesley Boston} } @article{SWAM:70, author={P.A.V.B. Swamy}, title={Efficient Inference in a Random Coefficient Regression Model}, journal={Econometrica}, volume={38}, year={1970}, pages={311--323} } @book{SWAM:71, author={P.A.V.B. Swamy}, title={Statistical Inference in Random Coefficient Regression Models}, year={1971}, publisher={Springer} } @article{SWAM:AROR:72, author={P.A.V.B. Swamy and S.S Arora}, title={The Exact Finite Sample Properties of the Estimators of Coefficients in the Error Components Regression Models}, journal={Econometrica}, volume={40}, year={1972}, pages={261--275} } @article{WALL:HUSS:69, author={T.D. Wallace and A. Hussain}, title={The Use of Error Components Models in Combining Cross Section With Time Series Data}, journal={Econometrica}, volume={37}, year={1969}, pages={55--72}, number={1} } @book{WOOL:02, author={J.M. Wooldridge}, title={Econometric Analysis of Cross--Section and Panel Data}, year={2002}, publisher={MIT Press} } @book{WOOL:10, author={J.M. Wooldridge}, title={Econometric Analysis of Cross--Section and Panel Data}, year={2010}, edition={2nd}, publisher={MIT Press}, } @book{WOOL:13, author={J.M. Wooldridge}, title={Introductory Econometrics: a modern approach}, publisher={South-Western (Cengage Learning)}, edition={5th}, year={2013} } @article{ZEIL:04, author={A. Zeileis}, title={Econometric Computing With {HC} and {HAC} Covariance Matrix Estimators}, journal={Journal of Statistical Software}, volume={11}, year={2004}, pages={1--17}, number={10}, url={https://www.jstatsoft.org/article/view/v011i10} } @article{WHIT:80, title={A heteroskedasticity-consistent covariance matrix estimator and a direct test for heteroskedasticity}, author={White, Halbert}, journal={Econometrica}, volume={48}, number={4}, pages={817--838}, year={1980}, publisher={JSTOR} } @article{WIND:05, author={F. Windmeijer}, title={A Finite Sample Correction for the Variance of Linear Efficient Two--Steps {GMM} Estimators}, journal={Journal of Econometrics}, year={2005}, volume={126}, pages={25--51} } @article{MUNN:90, author={A. Munnell}, title={Why Has Productivity Growth Declined? Productivity and Public Investment}, journal={New England Economic Review}, year={1990}, pages={3--22} } @article{BERA:SOSA:YOON:01, author={A.K. Bera and W. Sosa--Escudero and M. Yoon}, title={Tests for the Error Component Model in the Presence of Local Misspecification}, journal={Journal of Econometrics}, volume={101}, year={2001}, pages={1--23} } @article{BALT:LI:91, author={B. Baltagi and Q. Li}, title={A Joint Test for Serial Correlation and Random Individual Effects}, journal={Statistics and Probability Letters}, volume={11}, year={1991}, pages={277--280} } @article{BALT:LI:95, author={B. Baltagi and Q. Li}, title={Testing {AR}(1) Against {MA}(1) Disturbances in an Error Component Model}, journal={Journal of Econometrics}, volume={68}, year={1995}, pages={133--151} } @article{BALT:LI:97, author={B. Baltagi and Q. Li}, title={Monte Carlo Results on Pure and Pretest Estimators of an Error Components Model With Autocorrelated Disturbances}, journal={Annales d'Economie et de Statistique}, volume={48}, year={1997}, pages={69--82} } @article{LAIR:WARE:82, author={N.M. Laird and J.H. Ware}, title={Random--Effects Models for Longitudinal Data}, journal={Biometrics}, volume={38}, year={1982}, pages={963--974} } @article{BATE:04, author={Douglas Bates}, title={Least Squares Calculations in \proglang{R}}, journal={\proglang{R}--news}, volume={4}, year={2004}, pages={17--20}, number={1} } @article{MUND:78, author={Yair Mundlak}, title={On the Pooling of Time Series and Cross Section Data}, journal={Econometrica}, volume={46}, year={1978}, pages={69--85}, number={1} } @book{FOX:02, author={John Fox}, title={An \proglang{R} and \proglang{S--plus} Companion to Applied Regression}, publisher={Sage}, year={2002} } @booklet{STOC:WATS:06, author={James Stock and Mark Watson}, title={Heteroskedasticity--Robust Standard Errors for Fixed Effects Panel Data Regression}, howpublished={NBER WP 0323}, year={2006} } @article{STOC:WATS:08, author={James H. Stock and Mark W. Watson}, title={Heteroskedasticity--Robust Standard Errors for Fixed Effects Panel Data Regression }, journal={Econometrica }, volume={76}, year={2008}, pages={155--174}, number={1} } @manual{ATKI:THER:07, author={Beth Atkinson and Terry Therneau}, title={\pkg{kinship}: Mixed--Effects Cox Models, Sparse Matrices, and Modeling Data from Large Pedigrees}, year={2007}, note={\proglang{R} package version 1.1.0-18}, url={https://CRAN.R-project.org} } @manual{KOEN:NG:2016, author={Roger Koenker and Pin Ng}, title={\pkg{SparseM}: Sparse Linear Algebra }, year={2016}, note={\proglang{R} package version 1.72}, url={https://CRAN.R-project.org/package=SparseM} } @manual{BATE:MAEC:2016, author={Douglas Bates and Martin Maechler}, title={\pkg{Matrix}: Sparse and Dense Matrix Classes and Methods }, year={2016}, note={\proglang{R} package version 1.2-7.1}, url={https://CRAN.R-project.org/package=Matrix} } @manual{BATE:MAEC:07, author={Douglas Bates and Martin Maechler}, title={\pkg{matrix}: A Matrix Package for \proglang{R}}, year={2007}, note={\proglang{R} package version 0.99875-2}, url={https://CRAN.R-project.org/package=Matrix} } @manual{KOEN:NG:07, author={Roger Koenker and Pin Ng}, title={\pkg{SparseM}: Sparse Linear Algebra}, year={2007}, note={\proglang{R} package version 0.74}, url={https://CRAN.r-project.org/package=SparseM} } @manual{CROI:06, author={Yves Croissant}, title={\pkg{Ecdat}: Data Sets for Econometrics}, year={2006}, note={\proglang{R} package version 0.1-5}, url={https://CRAN.r-project.org/package=Ecdat} } @manual{FOX:06, author={John Fox}, title={\pkg{car}: Companion to Applied Regression}, year={2007}, note={\proglang{R} package version 1.2-5}, url={https://CRAN.r-project.org/package=car, http://socserv.socsci.mcmaster.ca/jfox/} } @manual{FOX:2016, author={John Fox}, title={\pkg{car}: Companion to Applied Regression }, year={2016}, note={\proglang{R} package version 2.1-3}, url={https://CRAN.R-project.org/package=car} } @article{ZEIL:HOTH:02, author={Achim Zeileis and Torsten Hothorn}, title={Diagnostic Checking in Regression Relationships}, journal={\proglang{R} News}, volume={2}, year={2002}, pages={7--10}, number={3}, url={https://CRAN.R-project.org/doc/Rnews/} } @misc{HOTH:ZEIL:MILL:MITC:07, author={T. Hothorn and A. Zeileis and G. Millo and D. Mitchell}, title={\pkg{lmtest}: Testing Linear Regression Models}, year={2007}, howpublished={\proglang{R} package version 0.9-19}, url={https://CRAN.R-project.org/package=lmtest} } @manual{HOTH:ZEIL:FARE:CUMM:MILL:MITC:2015, author={T. Hothorn and A. Zeileis and R. W. Farebrother and C. Cummins and G. Millo and D. Mitchell}, title={\pkg{lmtest}: Testing Linear Regression Models }, year={2015}, note={\proglang{R} package version 0.9-34}, url={https://CRAN.R-project.org/package=lmtest} } @misc{LUML:ZEIL:07, author={T. Lumley and A. Zeileis}, title={\pkg{sandwich}: Model--Robust Standard Error Estimation for Cross--Sectional, Time Series and Longitudinal Data}, year={2007}, howpublished={\proglang{R} package version 2.0-2}, url={https://CRAN.R-project.org} } @manual{LUML:ZEIL:2015, author={T. Lumley and A. Zeileis}, title={\pkg{sandwich}: Robust Covariance Matrix Estimators }, year={2015}, note={\proglang{R} package version 2.3-4}, url={https://CRAN.R-project.org/package=sandwich} } @manual{PINH:BATE:DEBR:SARK:07, author={Jose Pinheiro and Douglas Bates and Saikat DebRoy and Deepayan Sarkar the \proglang{R} Core team}, title={\pkg{nlme}: Linear and Nonlinear Mixed Effects Models}, year={2007}, note={\proglang{R} package version 3.1-86}, url={https://CRAN.r-project.org/package=nlme} } @manual{BATE:07, author={Douglas Bates}, title={\pkg{lme4}: Linear Mixed--Effects Models Using \proglang{S4} Classes}, year={2007}, note={\proglang{R} package version 0.99875-9}, url={https://CRAN.r-project.org/package=lme4} } @article{CORN:RUPE:88, author={C. Cornwell and P. Rupert}, title={Efficient Estimation With Panel Data: an Empirical Comparison of Instrumental Variables Estimators}, journal={Journal of Applied Econometrics}, volume={3}, year={1988}, pages={149--155} } @article{DRUK:03, author={D.M. Drukker}, title={Testing for Serial Correlation in Linear Panel--Data Models}, journal={The Stata Journal}, volume={3}, year={2003}, pages={168-177}, number={2} } @book{PINH:BATE:00, author={J.C. Pinheiro and D. Bates}, title={Mixed--Effects Models in \proglang{S} and \proglang{S-plus}}, publisher={Springer-Verlag}, year={2000} } @unpublished{PESA:04, author={Pesaran, M.H.}, title={General Diagnostic Tests for Cross Section Dependence in Panels}, note={CESifo Working Paper Series, 1229}, year={2004}, } @article{DEHO:SARA:06, author={De Hoyos, R.E. and Sarafidis, V.}, title={Testing for Cross--Sectional Dependence in Panel--Data Models}, journal={The Stata Journal}, volume={6}, year={2006}, pages={482-496}, number={4} } @Manual{BIVA:08, title = {spdep: Spatial Dependence: Weighting Schemes, Statistics and Models}, author = {Roger Bivand}, year = {2008}, note = {R package version 0.4-17}, } @Manual{R:2008, title = {\proglang{R}: {A} Language and Environment for Statistical Computing}, author = {{\proglang{R} Development Core Team}}, organization = {\proglang{R} Foundation for Statistical Computing}, address = {Vienna, Austria}, year = {2008}, note = {{ISBN} 3-900051-07-0}, url = {https://www.r-project.org/} } @Book{KLEI:ZEIL:08, title = {Applied Econometrics with {R}}, author = {Christian Kleiber and Achim Zeileis}, year = {2008}, publisher = {Springer-Verlag}, address = {New York}, note = {{ISBN} 978-0-387-77316-2}, url = {https://CRAN.R-project.org/package=AER}, } @Article{HARR:RUBI:78, author = {Harrison, D. and Rubinfeld, D.L.}, title = {Hedonic housing prices and the demand for clean air}, journal = {Journal of Environmental Economics and Management}, year = {1978}, OPTkey = {}, volume = {5}, OPTnumber = {}, pages = {81-102}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:CHAN:94, author = {Baltagi, B.H. and Chang, Y.J.}, title = {Incomplete panels: a comparative study of alternative estimators for the unbalanced one-way error component regression model}, journal = {Journal of Econometrics}, year = {1994}, OPTkey = {}, volume = {62}, OPTnumber = {2}, pages = {67-89}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ACEMO:JOHNO:ROBIN:YARED:08, author = {A Daron Acemoglu and Simon Johnson and James A. Robinson and Pierre Yared}, title = {Income and democracy}, journal = {American Economic Review}, year = {2008}, OPTkey = {}, volume = {98(3)}, OPTnumber = {}, pages = {808-842}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{EGGER:PFAFF:04, author = {Peter Egger and Michael Pfaffermayr}, title = {Distance, Trade, and {FDI}: A {H}ausman-{T}aylor {SUR} Approach}, journal = {Journal of Applied Econometrics}, year = {2004}, OPTkey = {}, volume = {19(2)}, OPTnumber = {}, pages = {227-46}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KESSL:HANSE:LESSM:11, author = {Anke S. Kessler and Nico A. Hansen and Christian Lessman}, title = {Interregional redistribution and mobility in federations : a positive approach}, journal = {The Review of Economic Studies}, year = {2011}, OPTkey = {}, volume = {78}, OPTnumber = {}, pages = {1345-78}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BREND:DRAZE:08, author = {Adi Brender and Allan Drazen}, title = {Budget deficits and economic growth affect reelection prospects? Evidence froma large panel of countries}, journal = {American Economic Review}, year = {2008}, OPTkey = {}, volume = {98(5)}, OPTnumber = {}, pages = {2203-2220}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{Croissant:Millo:2008, author = {Yves Croissant and Giovanni Millo}, title = {Panel Data Econometrics in \proglang{R}: The \pkg{plm} Package}, journal = {Journal of Statistical Software}, year = {2008}, volume = {27}, number = {2}, pages = {1-43}, url = {https://www.jstatsoft.org/article/view/v027i02} } @Article{RAUX:SOUCH:CROIS:09, author = {Charles Raux and St\'ephanie Souche and Yves Croissant}, title = {How fair is pricing perceived to be? An empirical study}, journal = {Public Choice}, year = {2009}, OPTkey = {}, volume = {139(1)}, OPTnumber = {}, pages = {227-240}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KESSL:HANSE:12, author = {Anke S. Kessler and Nico A. Hansen}, title = {Interregional redistribution and mobility in federations: a positive approach}, journal = {Review of Economic Studies}, year = {2012}, OPTkey = {}, volume = {78(4)}, OPTnumber = {}, pages = {1345-1378}, month = {march}, OPTnote = {}, OPTannote = {} } @Article{DRAK:07, author = {Konstantinos Drakos}, title = {The size of under-reporting bias in recorded transational terrorist activity}, journal = {Journal of the Royal Statistical Society, Series A (Statistics in Society)}, year = {2007}, OPTkey = {}, volume = {170(4)}, OPTnumber = {}, pages = {909-921}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{PORTO:REVEL:12, author = {Edoardo Di Porto and Federico Revelli}, title = {Tax limited reaction functions}, journal = {Journal of applied econometrics}, year = {2012}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTpages = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{MADDA:WU:99, author = {G.S. Maddala and S. Wu}, title = {A comparative study of unit root tests with panel data and a new simple test}, journal = {Oxford Bulletin of Economics and Statistics}, year = {1999}, OPTkey = {}, volume = {61}, OPTnumber = {}, pages = {631-52}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{LEVIN:LIN:CHU:02, author = {A. Levin and C.F. Lin and C.S.J. Chu}, title = {Unit root tests in panel data : asymptotic and finite-sample properties}, journal = {Journal of Econometrics}, year = {2002}, OPTkey = {}, volume = {108}, OPTnumber = {}, pages = {1-24}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{IM:PESAR:SHIN:03, author = {K.S. Im and M.H. Pesaran and Y. Shin}, title = {Testing for unit roots in heterogenous panels}, journal = {Journal of Econometrics}, year = {2003}, OPTkey = {}, volume = {115(1)}, OPTnumber = {}, pages = {53-74}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HANS:82, author = {L.P. Hansen}, title = {Large sample properties of generalized method moments estimators}, journal = {Econometrica}, year = {1982}, OPTkey = {}, volume = {50}, OPTnumber = {}, pages = {1029-1054}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ROOD:09, author = {David Roodman}, title = {How to do xtabond2: An introduction to difference and system {GMM} in Stata}, journal = {The Stata Journal}, year = {2009}, OPTkey = {}, volume = {9}, OPTnumber = {1}, pages = {86-136}, OPTmonth = {}, OPTnote = {}, OPTannote = {}, url = {https://www.stata-journal.com/article.html?article=st0159} } @Article{AREL:BOVE:95, author = {M. Arellano and O. Bover}, title = {Another look at the at the instrumental variables estimation of error components}, journal = {Journal of Econometrics}, year = {1995}, OPTkey = {}, volume = {68}, OPTnumber = {}, pages = {29-51}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{SARG:58, author = {J.D. Sargan}, title = {The estimation of economic relationships using instrumental variables}, journal = {Econometrica}, year = {1958}, OPTkey = {}, volume = {26}, OPTnumber = {}, pages = {393-415}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ROOD:09b, author = {David Roodman}, title = {A note on the theme of too many instruments}, journal = {Oxford Bulletin of Economics and Statistics}, year = {2009}, OPTkey = {}, volume = {71}, OPTnumber = {}, pages = {135-158}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{CASEL:ESQU:LEFO:96, author = {Francesco Caselli and Gerardo Esquivel and Fernando Lefort}, title = {Reopening the convergence debate: a new look at cross-country growth empirics}, journal = {Journal of Economic Growth}, year = {1996}, OPTkey = {}, volume = {1}, OPTnumber = {}, pages = {363-389}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BOND:HOEF:TEMP:01, author = {Stephen R. Bond and Anke Hoeffler and Jonathan Temple}, title = {{GMM} estimation of empirical growth model}, journal = {CEPR Discussion Paper}, year = {2001}, OPTkey = {}, volume = {3048}, OPTnumber = {}, OPTpages = {1-33}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BOND:02, author = {Stephen R. Bond}, title = {Dynamic panel data models: a guide to micro data methods and practice}, journal = {Portugese Economic Journal}, year = {2002}, OPTkey = {}, volume = {1}, OPTnumber = {}, pages = {141-162}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BLUN:BOND:00, author = {Richard Blundell and Stephen Bond}, title = {{GMM} estimation with persistent panel data: an application to production functions}, journal = {Econometric Reviews}, year = {2000}, OPTkey = {}, volume = {19}, number = {3}, pages = {321-340}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ALON:AREL:99, author = {C. Alonso-Borrego and M. Arellano}, title = {Symmetrically Normalized Instrumental-Variable Estimation Using Panel Data}, journal = {Journal of Business and Economic Statistics}, year = {1999}, OPTkey = {}, volume = {17}, number = {1}, pages = {36-49}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{LEVI:LOAY:BECK:00, author = {Ross Levine and Norman Loayza and Thorsten Beck}, title = {Financial intermediation and growth: causalty and causes}, journal = {Journal of Monetary Economics}, year = {2000}, OPTkey = {}, volume = {46}, OPTnumber = {}, pages = {31-77}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{FORB:00, author = {Kristin J. Forbes}, title = {A reassessment of the relation between inequality and growth}, journal = {American Economic Review}, year = {2000}, OPTkey = {}, volume = {90}, number = {4}, pages = {869-887}, month = {september}, OPTnote = {}, OPTannote = {} } @InCollection{MAIR:HALL:96, author = {J. Mairesse and B.H Hall}, title = {Estimating the productivity of research and development in French and US manufacturing firms: an exploration of simultaneity issues with {GMM} methods}, booktitle = {International productivity differences and their explanations}, OPTcrossref = {}, OPTkey = {}, pages = {285-315}, publisher = {Elsevier Science}, year = {1996}, editor = {K. Wagner and B. Van-Ark}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTchapter = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{NICK:81, author = {S.J. Nickel}, title = {Biaises in dynamic models with fixed effects}, journal = {Econometrica}, year = {1981}, OPTkey = {}, volume = {49}, OPTnumber = {}, pages = {1417-1426}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALE:NERL:66, author = {Pietro Balestra and Marc Nerlove}, title = {Pooling cross-section and time-series data in the estimation of dynamic models: The demand for natural gas}, journal = {Econometrica}, year = {1966}, OPTkey = {}, volume = {34}, OPTnumber = {}, pages = {585-612}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KIVI:95, author = {Jan F. Kiviet}, title = {On bias, inconsistency, and efficiency of various estimators in dynamic panel data models}, journal = {Journal of Econometrics}, year = {1995}, OPTkey = {}, volume = {68}, OPTnumber = {}, pages = {53-78}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ZEIL:CROI:10, title = {Extended Model Formulas in {R}: Multiple Parts and Multiple Responses}, author = {Achim Zeileis and Yves Croissant}, journal = {Journal of Statistical Software}, year = {2010}, volume = {34}, number = {XYZ}, pages = {1--12}, url = {https://www.jstatsoft.org/article/view/v034i01}, } @InCollection{HARR:MATY:SEVE:08, author = {Mark N. Harris and Laszlo Matyas and Patrick Sevestre}, title = {Dynamic models for short panels}, booktitle = {The Econometrics of Panel Data}, OPTcrossref = {}, OPTkey = {}, pages = {249-278}, editor = {Laszlo Matyas and Patrick Sevestre}, year = {2008}, publisher = {Springer}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTchapter = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KINA:LAHI:93, author = {Kinal, T. and Lahiri, K.}, title = {On the estimation of simultaneous-equations error-components models with an application to a model of developing country foreign trade}, journal = {Journal of Applied Econometrics}, year = {1993}, OPTkey = {}, volume = {8}, OPTnumber = {}, pages = {81-92}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KHAN:KNIG:88, author = {Khan, M. S. and Knight, M. D.}, title = {Import compression and export performance in developing countries}, journal = {Review of Economics and Statistics}, year = {1988}, OPTkey = {}, volume = {70}, number = {2}, pages = {315-321}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{COHE:EINA:03, author={Alma Cohen and Liran Einav}, title={The Effects of Mandatory Seat Belt Laws on Driving Behavior and Traffic Fatalities}, journal={The Review of Economics and Statistics}, year=2003, volume={85}, number={4}, pages={828-843}, month={November}, keywords={} } @Article{PELT:75, author={Peltzman, Sam}, title={The Effects of Automobile Safety Regulation}, journal={Journal of Political Economy}, year=1975, volume={83}, number={4}, pages={677-725}, month={August}, keywords={}, abstract={No abstract is available for this item.} } @Article{AMEM:MACU:86, author={Amemiya, Takeshi and MaCurdy, Thomas E}, title={Instrumental-Variable Estimation of an Error-Components Model}, journal={Econometrica}, year=1986, volume={54}, number={4}, pages={869-80}, month={July} } @Article{BREU:MIZO:SCHM:89, author={Breusch, Trevor S and Mizon, Grayham E and Schmidt, Peter}, title={Efficient Estimation Using Panel Data}, journal={Econometrica}, year=1989, volume={57}, number={3}, pages={695-700}, month={May} } @Article{CORN:SCHM:WYHO:92, author={Cornwell, Christopher and Schmidt, Peter and Wyhowski, Donald}, title={Simultaneous equations and panel data}, journal={Journal of Econometrics}, year=1992, volume={51}, number={1-2}, pages={151-181} } @Article{BALT:LIU:09, author={Baltagi, Badi H. and Liu, Long}, title={A note on the application of EC2SLS and EC3SLS estimators in panel data models}, journal={Statistics & Probability Letters}, year=2009, volume={79}, number={20}, pages={2189-2192}, month={October} } @InBook{WHIT:86, author = {White, H.}, ALTeditor = {}, title = {Advances in statistical analysis and statistical computing, vol. 1}, chapter = {Instrumental variables analogs of generalized least squares estimators}, publisher = {Mariano, R.S.}, year = {1986}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTpages = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:LI:92, author={Baltagi, Badi H. and Li, Qi}, title={A Note on the Estimation of Simultaneous Equations with Error Components}, journal={Econometric Theory}, year=1992, volume={8}, number={01}, pages={113-119}, month={March} } @Article{ZELL:62, author = {Zellner, A.}, title = {An efficient method of estimating seemingly unrelated regressions and tests of aggregation bias}, journal = {Journal of the American Statistical Association}, year = {1962}, OPTkey = {}, volume = {57}, OPTnumber = {}, pages = {500-509}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:80, author = {Baltagi, B.H.}, title = {On seemingly unrelated regressions with error components}, journal = {Econometrica}, year = {1980}, OPTkey = {}, volume = {48}, OPTnumber = {}, pages = {1547-1551}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{AVER:77, author = {Avery, R.B.}, title = {Error components and seemingly unrelated regressions}, journal = {Econometrica}, year = {1977}, OPTkey = {}, volume = {45}, OPTnumber = {}, pages = {199-209}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KINA:LAHI:90, author = {Kinal, T. and Lahiri, K.}, title = {A computational algorithm for multiple equation models with panel data}, journal = {Economic Letters}, year = {1990}, OPTkey = {}, volume = {34}, OPTnumber = {}, pages = {143-146}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{KUMB:96, author = {Kumbhakar, S.C.}, title = {Estimation of cost efficiency with heteroscedasticity: an application to electric utilities}, journal = {Journal of the Royal Statistical Society, series D}, year = {1996}, OPTkey = {}, volume = {45}, OPTnumber = {}, pages = {319-335}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HORRA:SCHMI:96, author = {Horrace, W.C. and Schmidt, P.}, title = {Confidence statements for efficiency estimates from stochastic frontier models}, journal = {Journal of Productivity Analysis}, year = {1996}, OPTkey = {}, volume = {7}, OPTnumber = {}, pages = {257-282}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HORRA:SCHMI:00, author = {Horrace, W.C. and Schmidt, P.}, title = {Multiple Comparisons with the Best, with Economic Applications}, journal = {Journal of Applied Econometrics}, year = {2000}, OPTkey = {}, volume = {15}, number = {1}, pages = {1-26}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ELGA:INAN:05, author = {El-Gamal, Mahmoud and Inanoglu, Hulusi}, title = {Inefficiency and heterogeneity in Turkish banking: 1990-2000}, journal = {Journal of Applied Econometrics}, year = {2005}, OPTkey = {}, volume = {20}, number = {5}, pages = {641-664}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{SCHA/90, author = {Schaller, Huntley}, title = {A re-examination of the Q theory of investment using {US} firm data}, journal = {Journal of Applied Econometrics}, year = {1990}, OPTkey = {}, volume = {5(4)}, OPTnumber = {}, pages = {309--325}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{TOBI/69, author = {Tobin, James}, title = {A general equilibrium approach to monetary theory}, journal = {Journal of Money, Credit and Banking}, year = {1969}, OPTkey = {}, volume = {1}, OPTnumber = {1}, pages = {15--29}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Manual{HLAV:13, title = {stargazer: LaTeX code for well-formatted regression and summary statistics tables}, author = {Marek Hlavac}, year = {2013}, note = {R package version 3.0.1}, organization = {Harvard University}, address = {Cambridge, USA}, url = {https://CRAN.R-project.org/package=stargazer}, } @Article{VELL:VERB:98, author = {Vella, F. and Verbeek, M.}, title = {Whose wages do unions raise? A dynamic model of unionism and wage rate determination for young men}, journal = {Journal of Applied Econometrics}, year = {1998}, OPTkey = {}, volume = {13}, OPTnumber = {}, pages = {163--183}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{CHAM:82, author = {Chamberlain, Gary}, title = {Multivariate regression models for panel data}, journal = {Journal of Econometrics}, year = {1982}, OPTkey = {}, volume = {18}, OPTnumber = {}, pages = {5--46}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{BALT:SONG:KOH:03, title={Testing panel data regression models with spatial error correlation}, author={Baltagi, Badi H and Song, Seuck Heun and Koh, Won}, journal={Journal of Econometrics}, volume={117}, number={1}, pages={123--150}, year={2003}, publisher={Elsevier} } @article{BALT:SONG:JUNG:KOH:07, title={Testing for serial correlation, spatial autocorrelation and random effects using panel data}, author={Baltagi, Badi H and Heun Song, Seuck and Cheol Jung, Byoung and Koh, Won}, journal={Journal of Econometrics}, volume={140}, number={1}, pages={5--51}, year={2007}, publisher={Elsevier} } @article{GODF:78, title={Testing against general autoregressive and moving average error models when the regressors include lagged dependent variables}, author={Godfrey, Leslie G}, journal={Econometrica}, pages={1293--1301}, volume = {46}, number = {6}, year={1978}, publisher={JSTOR} } @article{BREU:78, title={Testing for autocorrelation in dynamic linear models}, author={Breusch, Trevor S}, journal={Australian Economic Papers}, volume={17}, number={31}, pages={334--355}, year={1978}, publisher={Wiley Online Library} } @article{FRAN:HAYS:07, title={Spatial econometric models of cross-sectional interdependence in political science panel and time-series-cross-section data}, author={Franzese, Robert J and Hays, Jude C}, journal={Political Analysis}, volume={15}, number={2}, pages={140--164}, year={2007}, publisher={SPM-PMSAPSA} } @article{FRAN:HAYS:06, title={Strategic Interaction among EU Governments in Active Labor Market Policy-making Subsidiarity and Policy Coordination under the European Employment Strategy}, author={Franzese, Robert J and Hays, Jude C}, journal={European Union Politics}, volume={7}, number={2}, pages={167--189}, year={2006}, publisher={SAGE Publications} } @article{FRAN:HAYS:08, title={Interdependence in Comparative Politics Substance, Theory, Empirics, Substance}, author={Franzese, Robert J and Hays, Jude C}, journal={Comparative Political Studies}, volume={41}, number={4-5}, pages={742--780}, year={2008}, publisher={Sage Publications} } @article{HOLL:PESA:YAMA:10, title={A spatio-temporal model of house prices in the USA}, author={Holly, Sean and Pesaran, M Hashem and Yamagata, Takashi}, journal={Journal of Econometrics}, volume={158}, number={1}, pages={160--173}, year={2010}, publisher={Elsevier} } @book{LESA:PACE:10, title={Introduction to spatial econometrics}, author={LeSage, James and Pace, Robert Kelley}, year={2010}, publisher={CRC press} } @article{ELHO:10, title={Applied spatial econometrics: raising the bar}, author={Elhorst, J Paul}, journal={Spatial Economic Analysis}, volume={5}, number={1}, pages={9--28}, year={2010}, publisher={Taylor & Francis} } @inproceedings{HALL:ELHO:13, title={On spatial econometric models, spillover effects, and W}, author={Vega, Solmaria Halleck and Elhorst, J Paul}, booktitle={53rd ERSA conference, Palermo}, year={2013} } @article{MANS:93, title={Identification of endogenous social effects: The reflection problem}, author={Manski, Charles F}, journal={The review of economic studies}, volume={60}, number={3}, pages={531--542}, year={1993}, publisher={Oxford University Press} } @article{GIBB:OVER:12, title={MOSTLY POINTLESS SPATIAL ECONOMETRICS?}, author={Gibbons, Stephen and Overman, Henry G}, journal={Journal of Regional Science}, volume={52}, number={2}, pages={172--191}, year={2012}, publisher={Wiley Online Library} } @article{CHEN:LIN:REED:09, title={A Monte Carlo Evaluation of the Efficiency of the PCSE Estimator}, author={Chen, Xiujian and Lin, Shu and Reed, W Robert}, journal={Applied Economics Letters}, volume={17}, number={1}, pages={7--10}, year={2009}, publisher={Taylor & Francis} } @article{PARK:67, title={Efficient Estimation of a System of Regression Equations when Disturbances are both Serially and Contemporaneously Correlated}, author={Parks, Richard W}, journal={Journal of the American Statistical Association}, volume={62}, number={318}, pages={500--509}, year={1967}, publisher={Taylor & Francis} } @article{DRIS:KRAA:98, title={Consistent covariance matrix estimation with spatially dependent panel data}, author={Driscoll, John C and Kraay, Aart C}, journal={Review of economics and statistics}, volume={80}, number={4}, pages={549--560}, year={1998}, publisher={MIT Press} } @article{BECK:KATZ:95, title={What to do (and not to do) with time-series cross-section data}, author={Beck, Nathaniel and Katz, Jonathan N}, journal={American Political Science Review}, volume={89}, number={03}, pages={634--647}, year={1995}, publisher={Cambridge Univ Press} } @article{ALVA:GARR:LANG:91, title={Government partisanship, labor organization, and macroeconomic performance}, author={Alvarez, R Michael and Garrett, Geoffrey and Lange, Peter}, journal={The American Political Science Review}, volume = {85}, number = {2}, pages={539--556}, year={1991}, publisher={JSTOR} } @article{KIEF:80, title={Estimation of fixed effect models for time series of cross-sections with arbitrary intertemporal covariance}, author={Kiefer, Nicholas M}, journal={Journal of Econometrics}, volume={14}, number={2}, pages={195--202}, year={1980}, publisher={Elsevier} } @article{DRUS:HORR:04, title={Generalized moments estimation for spatial panel data: Indonesian rice farming}, author={Druska, Viliam and Horrace, William C}, journal={American Journal of Agricultural Economics}, volume={86}, number={1}, pages={185--198}, year={2004}, publisher={Oxford University Press} } @article{EBER:HELM:STRA:13, title={Do spillovers matter when estimating private returns to R\&D?}, author={Eberhardt, Markus and Helmers, Christian and Strauss, Hubert}, journal={Review of Economics and Statistics}, volume={95}, number={2}, pages={436--448}, year={2013}, publisher={MIT Press} } @article{ANGR:NEWE:91, title={Over-identification tests in earnings functions with fixed effects}, author={Angrist, Joshua D and Newey, Whitney K}, journal={Journal of Business & Economic Statistics}, volume={9}, number={3}, pages={317--323}, year={1991}, publisher={Taylor & Francis} } @article{HOTH:HORN:VAND:ZEIL:06, title={A Lego system for conditional inference}, author={Hothorn, Torsten and Hornik, Kurt and Van De Wiel, Mark A and Zeileis, Achim}, journal={The American Statistician}, volume={60}, number={3}, year={2006} } @article{MOUL:86, title={Random group effects and the precision of regression estimates}, author={Moulton, Brent R}, journal={Journal of Econometrics}, volume={32}, number={3}, pages={385--397}, year={1986}, publisher={Elsevier} } @article{THOM:11, title={Simple formulas for standard errors that cluster by both firm and time}, author={Thompson, Samuel B}, journal={Journal of Financial Economics}, volume={99}, number={1}, pages={1--10}, year={2011}, publisher={Elsevier} } @misc{NEWE:WEST:86, title={A simple, positive semi-definite, heteroskedasticity and autocorrelationconsistent covariance matrix}, author={Newey, Whitney K and West, Kenneth D}, year={1986}, publisher={National Bureau of Economic Research Cambridge, Mass., USA} } @article{NEWE:WEST:87, title={A Simple, Positive Semi-definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix}, author={Newey, Whitney K and West, Kenneth D}, journal={Econometrica}, volume={55}, number={3}, pages={703--08}, year={1987}, publisher={Econometric Society} } @article{FROO:89, title={Consistent covariance matrix estimation with cross-sectional dependence and heteroskedasticity in financial data}, author={Froot, Kenneth A}, journal={Journal of Financial and Quantitative Analysis}, volume={24}, number={03}, pages={333--355}, year={1989}, publisher={Cambridge Univ Press} } @article{AREL:87, title={Computing Robust Standard Errors for Within-groups Estimators}, author={Arellano, Manuel}, journal={Oxford bulletin of Economics and Statistics}, volume={49}, number={4}, pages={431--434}, year={1987}, publisher={Wiley Online Library} } @article{LIAN:ZEGE:86, title={Longitudinal data analysis using generalized linear models}, author={Liang, Kung-Yee and Zeger, Scott L}, journal={Biometrika}, volume={73}, number={1}, pages={13--22}, year={1986}, publisher={Biometrika Trust} } @article{MOUL:90, title={An illustration of a pitfall in estimating the effects of aggregate variables on micro units}, author={Moulton, Brent R}, journal={The Review of Economics and Statistics}, pages={334--338}, year={1990}, volume = {72}, number = {2}, publisher={JSTOR} } @article{ZEIL:06, author = {Achim Zeileis}, title = {Object-Oriented Computation of Sandwich Estimators}, year = {2006}, journal = {Journal of Statistical Software}, volume = {16}, number = {9}, pages = {1--16}, url = {https://www.jstatsoft.org/article/view/v016i09} } @article{ZEIL:06b, title={Implementing a class of structural change tests: An econometric computing approach}, author={Zeileis, Achim}, journal={Computational Statistics & Data Analysis}, volume={50}, number={11}, pages={2987--3008}, year={2006}, publisher={Elsevier} } @article{ROGE:93, title={Regression standard errors in clustered samples}, author={Rogers, W.H.}, journal={Stata Technical Bulletin}, volume={13}, pages={19--23}, year={1993}, publisher={Stata Corporation} } @article{PETE:09, title={Estimating standard errors in finance panel data sets: Comparing approaches}, author={Petersen, Mitchell A}, journal={Review of financial studies}, volume={22}, number={1}, pages={435--480}, year={2009}, publisher={Soc Financial Studies} } @article{CAME:GELB:MILL:11, title={Robust inference with multiway clustering}, author={Cameron, A Colin and Gelbach, Jonah B and Miller, Douglas L}, journal={Journal of Business & Economic Statistics}, volume={29}, number={2}, year={2011} } @article{PESA:06, title={Estimation and inference in large heterogeneous panels with a multifactor error structure}, author={Pesaran, M Hashem}, journal={Econometrica}, volume={74}, number={4}, pages={967--1012}, year={2006}, publisher={Wiley Online Library} } @article{BECK:KATZ:96, title={Nuisance vs. substance: Specifying and estimating time-series-cross-section models}, author={Beck, Nathaniel and Katz, Jonathan N}, journal={Political analysis}, volume={6}, number={1}, pages={1--36}, year={1996}, publisher={SPM-PMSAPSA} } @article{CHUD:PESA:TOSE:11, title={Weak and strong cross-section dependence and estimation of large panels}, author={Chudik, Alexander and Pesaran, M Hashem and Tosetti, Elisa}, journal={The Econometrics Journal}, volume={14}, number={1}, pages={C45--C90}, year={2011}, publisher={Wiley Online Library} } @article{CROI:MILL:08, title={Panel data econometrics in R: The plm package}, author={Croissant, Yves and Millo, Giovanni}, journal={Journal of Statistical Software}, volume={27}, number={2}, pages={1--43}, year={2008} } @article{BECK:KATZ:ALVA:GARR:LANG:93, title={Government Partisanship, Labor Organization, and Macroeconomic Performance: A Corrigendum.}, author={Beck, Nathaniel and Katz, Jonathan N and Alvarez, R Michael and Garrett, Geoffrey and Lange, Peter}, journal={American Political Science Review}, volume={87}, number={04}, pages={945--948}, year={1993}, publisher={Cambridge Univ Press} } @article{BAIL:KATZ:11, title={Implementing Panel-Corrected Standard Errors in R: The pcse Package}, author={Bailey, Delia and Katz, Jonathan N}, journal={Journal of Statistical Software}, volume={42}, number={CS1}, pages={1--11}, year={2011}, publisher={University of California, Los Angeles} } @article{GOLD:PICC:08, title={Pork-Barrel Politics in Postwar Italy, 1953--94}, author={Golden, Miriam A and Picci, Lucio}, journal={American Journal of Political Science}, volume={52}, number={2}, pages={268--289}, year={2008}, publisher={Wiley Online Library} } @article{COAK:FUER:SMIT:06, title={Unobserved heterogeneity in panel time series models}, author={Coakley, Jerry and Fuertes, Ana-Maria and Smith, Ron}, journal={Computational Statistics & Data Analysis}, volume={50}, number={9}, pages={2361--2380}, year={2006}, publisher={Elsevier} } @Book{CAR:11, title = {An {R} Companion to Applied Regression}, edition = {2nd}, author = {John Fox and Sanford Weisberg}, year = {2011}, publisher = {Sage}, address = {Thousand Oaks {CA}}, url = {http://socserv.socsci.mcmaster.ca/jfox/Books/Companion} } @book{CHAM:98, title={Programming with data: A guide to the S language}, author={Chambers, John M}, year={1998}, publisher={Springer} } @article{MUND:61, title={Empirical production function free of management bias}, author={Mundlak, Yair}, journal={Journal of Farm Economics}, volume={43}, number={1}, pages={44--56}, year={1961}, publisher={Oxford University Press} } @inproceedings{LEIS:02, title={Sweave: Dynamic generation of statistical reports using literate data analysis}, author={Leisch, Friedrich}, booktitle={Compstat}, pages={575--580}, year={2002}, organization={Springer} } @Article{SERL:SHIN:07, author = {Serlenga, Laura and Shin, Yongcheol}, title = {Gravity models of intra-EU trade: application of the CCEP-HT estimation in heterogeneous panels with unobserved common time-specific factors}, journal = {Journal of Applied Econometrics}, year = {2007}, OPTkey = {}, volume = {22}, OPTnumber = {}, pages = {361--381}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:10, author = {Baltagi, Badi}, title = {Narrow replication of Serlenga and Shin (2007) Gravity models of intra-EU trade: application of the CCEP-HT estimation in heterogeneous panels within unobserved common time-specific factors}, journal = {Journal of Applied Econometrics}, year = {2012}, OPTkey = {}, volume = {25}, OPTnumber = {}, pages = {505--506}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HUTC:NOY:05, author = {Hutchison, Michael M. and Noy, Ilan}, title = {How bad are twins? Output costs of currency and banking crises}, journal = {Journal of Money, Credit and Banking}, year = {2005}, OPTkey = {}, volume = {4}, OPTnumber = {}, pages = {725--752}, month = {august}, OPTnote = {}, OPTannote = {} } @Article{LEIF:13, title = {{texreg}: Conversion of Statistical Model Output in {R} to {\LaTeX} and HTML Tables}, author = {Philip Leifeld}, journal = {Journal of Statistical Software}, year = {2013}, volume = {55}, number = {8}, pages = {1--24}, url = {https://www.jstatsoft.org/article/view/v055i08}, } @article{SARA:WANS:12, title={Cross-sectional dependence in panel data analysis}, author={Sarafidis, Vasilis and Wansbeek, Tom}, journal={Econometric Reviews}, volume={31}, number={5}, pages={483--531}, year={2012}, publisher={Taylor & Francis} } @Article{BALT:KHAN:90, title = {On efficient estimation with panel data: an empirical comparison of instrumental variables estimators}, author = {Baltagi, Badi H. and Khanti-Akom, Sophon}, journal = {Journal of Applied Econometrics}, year = {1990}, OPTkey = {}, volume = {5}, number = {4}, OPTpages = {401--406}, month = {Oct. - Dec.}, OPTnote = {}, OPTannote = {} } @Article{CORN:TRUM:94, author = {Cornwell, C. and Trumbull, W.N.}, title = {Estimating the economic model of crime with panel data}, journal = {Review of Economics and Statistics}, year = {1994}, OPTkey = {}, volume = {76}, OPTnumber = {}, pages = {360--366}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:06, author = {Baltagi, B.H.}, title = {Estmating an economic model of crime using panel data from North Carolina}, journal = {Journal of Applied Econometrics}, year = {2006}, OPTkey = {}, volume = {21}, number = {4}, OPTpages = {543--547}, month = {May - June}, OPTnote = {}, OPTannote = {} } @Article{BALT:LI:93, author = {Baltagi, Badi H. and Li, Qi}, title = {A note on the estimation of simultaneous equations with error components}, journal = {Econometric Theory}, year = {1992}, OPTkey = {}, volume = {8}, number = {1}, pages = {113--119}, month = {March}, OPTnote = {}, OPTannote = {} } @Book{WHIT:84b, author = {White, H.}, ALTeditor = {}, title = {Asymptotic Theory for Econometricians}, publisher = {New York: Academic press}, year = {1984}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @book{BALT:05, author={B.H. Baltagi}, title={Econometric Analysis of Panel Data }, publisher={John Wiley and Sons ltd}, year={2005}, edition={3rd} } @book{BALT:13, author={B.H. Baltagi}, title={Econometric Analysis of Panel Data}, publisher={John Wiley and Sons ltd}, year={2013}, edition={5th} } @book{BALT:21, author={B.H. Baltagi}, title={Econometric Analysis of Panel Data}, publisher={Springer}, year={2021}, edition={6th} } @book{BALT:09, author={B.H. Baltagi}, title={A Companion to Econometric Analysis of Panel Data}, publisher={John Wiley and Sons ltd}, year={2009}, edition={} } @Article{BALT:SONG:JUNG:01, author = {Baltagi, B.H. and Song, S.H. and Jung, B.C.}, title = {The unbalanced nested error component regression model}, journal = {Journal of Econometrics}, year = {2001}, OPTkey = {}, volume = {101}, OPTnumber = {}, pages = {357-381}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:PINN:95, author = {Baltagi, Badi H. and Pinnoi, Nat}, title = {Public capital stock and state productivity growth: further evidence from an error components model}, journal = {Empirical Economics}, year = {1995}, OPTkey = {}, volume = {20}, OPTnumber = {}, pages = {351-359}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{CECC:86, author = {Cecchetti, Stephen G.}, title = {The frequency of price adjustment, a study of the newsstand prices of magazines}, journal = {Journal of Econometrics}, year = {1986}, OPTkey = {}, volume = {31}, OPTnumber = {}, pages = {255-274}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{WILL:06, author = {Willis, Jonathan L.}, title = {Magazine prices revisited}, journal = {Journal of Applied Econometrics}, year = {2006}, OPTkey = {}, volume = {21}, number = {3}, pages = {337-344}, month = {april}, OPTnote = {}, OPTannote = {} } @Article{CHAM:80, author = {Chamberlain, G.}, title = {Analysis of covariance with qualitative data}, journal = {Review of Economic Studies}, year = {1980}, OPTkey = {}, volume = {47}, OPTnumber = {}, pages = {225-238}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{FURM:STER:11, author = {Furman, Jeffrey L. and Stern, Scott}, title = {Climbing atop the shoulders of giants: the impact of institutions on cumulative research}, journal = {American Economic Review}, year = {2011}, OPTkey = {}, volume = {101}, number = {5}, pages = {1933-1963}, month = {august}, OPTnote = {}, OPTannote = {} } @Book{CAME:TRIV:98, author = {Cameron, A. Colin and Trivedi, Pravin K.}, ALTeditor = {}, title = {Regression analysis of count data}, publisher = {Cambridge}, year = {1998}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HAUS:HALL:GRIL:84, author = {Hausman, J.A. and Hall, B.H. and Griliches, Z.}, title = {Econometric models for count data with and application to the patents--{R} and {D} relationship}, journal = {Econometrica}, year = {1984}, OPTkey = {}, volume = {52}, OPTnumber = {}, pages = {909-938}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{POWE:86, author = {Powell, J.}, title = {Symmetrically trimmed least squares estimation for tobit models}, journal = {Econometrica}, year = {1986}, OPTkey = {}, volume = {54}, OPTnumber = {}, pages = {1435--1460}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HONO:92, author = {Honor\'e, Bo E.}, title = {Trimmed LAD and least squares estimation of truncated and censored regression models with fixed effects}, journal = {Econometrica}, year = {1992}, OPTkey = {}, volume = {60}, number = {3}, OPTpages = {533-565}, month = {may}, OPTnote = {}, OPTannote = {} } @Article{HONO:02, author="Honor{\'e}, Bo E.", title="Nonlinear models with panel data", journal="Portuguese Economic Journal", year="2002", volume="1", number="2", pages="163--179", issn="1617-9838", doi="10.1007/s10258-002-0007-y", url="http://dx.doi.org/10.1007/s10258-002-0007-y" } @Article{TOBI:58, author = {Tobin, James}, title = {Estimation of Relationships for Limited Dependent Variables}, journal = {Econometrica}, year = {1958}, optkey = {}, volume = {26}, number = {1}, pages = {24-36}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HAUS:WISE:76, author = {Hausman, J.A. and Wise, D.A.}, title = {Social experimentation, truncated distributions, and efficient estimation}, journal = {Econometrica}, year = {1976}, OPTkey = {}, volume = {45}, number = {4}, pages = {919--938}, month = {may}, OPTnote = {}, OPTannote = {} } @Article{ANDE:LASS:NIEL:12, author = {Andersen, Asger Lau and Lassen, David Dreyer and Nielsen, Lasse Holboll Westh}, title = {Late budgets}, journal = {American Economic Journal, Economic Policy}, year = {2012}, OPTkey = {}, volume = {4}, number = {4}, pages = {1-40}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{LAND:LANG:LIST:PRIC:RUPP:10, author = {Landry, Craig E. and Lange, Andreas an List, John A. and Price, Michael K. and Rupp, Nicholas G.}, title = {Is a donor in hand better than two in the bush? Evidence from a natural field experiment}, journal = {American Economic Review}, year = {2012}, OPTkey = {}, volume = {100}, number = {3}, pages = {958-983}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{rac12, title={RStudio: A Platform-Independent {IDE} for {R} and {S}weave}, author={Racine, Jeffrey S}, journal={Journal of Applied Econometrics}, volume={27}, number={1}, pages={167--172}, year={2012}, publisher={Wiley Online Library} } @article{koezei09, title={On reproducible econometric research}, author={Koenker, Roger and Zeileis, Achim}, journal={Journal of Applied Econometrics}, volume={24}, number={5}, pages={833--847}, year={2009}, publisher={Wiley Online Library} } @article{pen11, title={Reproducible research in computational science}, author={Peng, Roger D}, journal={Science (New York, Ny)}, volume={334}, number={6060}, pages={1226--1227}, year={2011}, publisher={NIH Public Access} } @article{thezei08, author = {Stefan Theu{\ss}l and Achim Zeileis}, title = {Collaborative Software Development Using {R}-{F}orge}, journal = {The {R} Journal}, year = {2009}, volume = {1}, number = {1}, pages = {9--14}, month = {May} } @article{yalyal10, title={Should Economists Use Open Source Software for Doing Research?}, author={Yalta, A Talha and Yalta, A Yasemin}, journal={Computational Economics}, volume={35}, number={4}, pages={371--394}, year={2010}, publisher={Springer} } @article{yalluc08, title={The {GNU/L}inux platform and freedom respecting software for economists}, author={Yalta, A Talha and Lucchetti, Riccardo}, journal={Journal of Applied Econometrics}, volume={23}, number={2}, pages={279--286}, year={2008}, publisher={Wiley Online Library} } @article{yalyal07, title={GRETL 1.6. 0 and its numerical accuracy}, author={Yalta, A Talha and Yalta, A Yasemin}, journal={Journal of Applied Econometrics}, volume={22}, number={4}, pages={849--854}, year={2007}, publisher={Wiley Online Library} } @misc{GRETL:2021, title = {Gretl User’s Guide}, author = {Cottrell, Allin and Lucchetti, Riccardo}, month = {September}, year = {2021}, url = {https://gretl.sourceforge.net/} } @article{RACI:HYND:02, title={Using {R} to teach econometrics}, author={Racine, Jeff and Hyndman, Rob}, journal={Journal of Applied Econometrics}, volume={17}, number={2}, pages={175--189}, year={2002}, publisher={Wiley Online Library} } @book{mur09, title={Introduction to Data Technologies}, author={Murrell, Paul}, year={2010}, publisher={CRC Press} } @article{mil14, title={Maximum likelihood estimation of spatially and serially correlated panels with random effects}, author={Millo, Giovanni}, journal={Computational Statistics & Data Analysis}, volume={71}, pages={914--933}, year={2014}, publisher={Elsevier} } @article{kappesyam11, title={Panels with non-stationary multifactor error structures}, author={Kapetanios, George and Pesaran, M Hashem and Yamagata, Takashi}, journal={Journal of Econometrics}, volume={160}, number={2}, pages={326--348}, year={2011}, publisher={Elsevier} } @Manual{spdep, title = {spdep: Spatial dependence: weighting schemes, statistics and models}, author = {Roger Bivand and with contributions by Micah Altman and Luc Anselin and Renato Assunção and Olaf Berke and Andrew Bernat and Guillaume Blanchet and Eric Blankmeyer and Marilia Carvalho and Bjarke Christensen and Yongwan Chun and Carsten Dormann and Stéphane Dray and Rein Halbersma and Elias Krainski and Pierre Legendre and Nicholas Lewin-Koh and Hongfei Li and Jielai Ma and Giovanni Millo and Werner Mueller and Hisaji Ono and Pedro Peres-Neto and Gianfranco Piras and Markus Reder and Michael Tiefelsdorf and Danlin Yu.}, year = {2012}, note = {R package version 0.5-46}, url = {https://CRAN.R-project.org/package=spdep}, } @article{ebe12, title={Estimating panel time-series models with heterogeneous slopes}, author={Eberhardt, Markus}, journal={Stata Journal}, volume={12}, number={1}, pages={61--71}, year={2012}, publisher={StataCorp LP} } @article{ebe11, title={XTCD: Stata module to investigate Variable/Residual Cross-Section Dependence}, author={Eberhardt, Markus}, journal={Statistical Software Components}, year={2011}, publisher={Boston College Department of Economics} } @article{lew07, title={PESCADF: Stata module to perform Pesaran's CADF panel unit root test in presence of cross section dependence}, author={Lewandowski, Piotr}, journal={Statistical Software Components}, year={2007}, publisher={Boston College Department of Economics} } @article{pes06, title={Estimation and inference in large heterogeneous panels with a multifactor error structure}, author={Pesaran, M Hashem}, journal={Econometrica}, volume={74}, number={4}, pages={967--1012}, year={2006}, publisher={Wiley Online Library} } @article{merrac09, title={Towards reproducible econometric research: the Sweave framework}, author={Meredith, Evan and Racine, Jeffrey S}, journal={Journal of Applied Econometrics}, volume={24}, number={2}, pages={366--374}, year={2009}, publisher={Wiley Online Library} } @article{arebon91, title={Some tests of specification for panel data: Monte Carlo evidence and an application to employment equations}, author={Arellano, Manuel and Bond, Stephen}, journal={The Review of Economic Studies}, volume={58}, number={2}, pages={277--297}, year={1991}, publisher={Oxford University Press} } @TechReport{pes04, title={General diagnostic tests for cross section dependence in panels}, author={Pesaran, M Hashem}, year={2004}, institution={CESifo working paper series} } @Manual{Rsoft, title = {R: A Language and Environment for Statistical Computing}, author = {{R Core Team}}, organization = {R Foundation for Statistical Computing}, address = {Vienna, Austria}, year = {2014}, url = {http://www.R-project.org/}, } @article{dru03, title={Testing for serial correlation in linear panel-data models}, author={Drukker, David M}, journal={Stata Journal}, volume={3}, number={2}, pages={168--177}, year={2003} } @article{blubon98, title={Initial conditions and moment restrictions in dynamic panel data models}, author={Blundell, Richard and Bond, Stephen}, journal={Journal of econometrics}, volume={87}, number={1}, pages={115--143}, year={1998}, publisher={Elsevier} } @article{ebe13, title={Estimating panel time-series models with heterogeneous slopes}, author={Eberhardt, Markus}, journal={Stata Journal}, volume={12}, number={1}, pages={61--71}, year={2012}, publisher={StataCorp LP} } @Manual{xtable, title = {xtable: Export tables to LaTeX or HTML}, author = {David B. Dahl}, year = {2014}, note = {R package version 1.7-4}, url = {https://CRAN.R-project.org/package=xtable}, } @Article{lmtest, title = {Diagnostic Checking in Regression Relationships}, author = {Achim Zeileis and Torsten Hothorn}, journal = {R News}, year = {2002}, volume = {2}, number = {3}, pages = {7--10}, url = {https://CRAN.R-project.org/doc/Rnews/}, } @article{are87, title={Computing Robust Standard Errors for Within Estimators}, author={Arellano, Manuel}, journal={Oxford bulletin of Economics and Statistics}, volume={49}, number = {4}, pages={431--434}, year={1987} } @article{pes07, title={A simple panel unit root test in the presence of cross-section dependence}, author={Pesaran, M Hashem}, journal={Journal of Applied Econometrics}, volume={22}, number={2}, pages={265--312}, year={2007}, publisher={Wiley Online Library} } @article{pessmi95, title={Estimating long-run relationships from dynamic heterogeneous panels}, author={Pesaran, M Hashem and Smith, Ron}, journal={Journal of Econometrics}, volume={68}, number={1}, pages={79--113}, year={1995}, publisher={Elsevier} } @article{saryamrob09, title={A test of cross section dependence for a linear dynamic panel model with regressors}, author={Sarafidis, Vasilis and Yamagata, Takashi and Robertson, Donald}, journal={Journal of econometrics}, volume={148}, number={2}, pages={149--161}, year={2009}, publisher={Elsevier} } @article{fre95, title={Assessing cross-sectional correlation in panel data}, author={Frees, Edward W}, journal={Journal of econometrics}, volume={69}, number={2}, pages={393--414}, year={1995}, publisher={Elsevier} } @article{mil15, title={Narrow Replication of 'A Spatio-Temporal Model of House Prices in the USA' Using R}, author={Millo, Giovanni}, journal={Journal of Applied Econometrics}, volume={30}, number={4}, pages={703--704}, year={2015}, publisher={Wiley Online Library} } @article{phimoo99, title={Linear regression limit theory for nonstationary panel data}, author={Phillips, Peter CB and Moon, Hyungsik R}, journal={Econometrica}, volume={67}, number={5}, pages={1057--1111}, year={1999}, publisher={Wiley Online Library} } @incollection{balbrepir08, title={To pool or not to pool?}, author={Baltagi, Badi H and Bresson, Georges and Pirotte, Alain}, booktitle={The econometrics of panel data}, pages={517--546}, year={2008}, publisher={Springer} } @article{balgrixio00, title={To pool or not to pool: Homogeneous versus heterogeneous estimators applied to cigarette demand}, author={Baltagi, Badi H and Griffin, James M and Xiong, Weiwen}, journal={The Review of Economics and Statistics}, volume={82}, number={1}, pages={117--126}, year={2000}, publisher={MIT Press} } @article{balgri97, title={Pooled estimators vs. their heterogeneous counterparts in the context of dynamic demand for gasoline}, author={Baltagi, Badi H and Griffin, James M}, journal={Journal of Econometrics}, volume={77}, number={2}, pages={303--327}, year={1997}, publisher={Elsevier} } @article{balgripir02, title={Homogeneous, heterogeneous or shrinkage estimators? Some empirical evidence from French regional gasoline consumption}, author={Baltagi, Badi H and Bresson, Georges and Griffin, James M and Pirotte, Alain}, journal={Empirical Economics}, volume={28}, number={4}, pages={795--811}, year={2003}, publisher={Springer} } @incollection{hsipes08, title={Random coefficient models}, author={Hsiao, Cheng and Pesaran, M Hashem}, booktitle={The econometrics of panel data}, pages={185--213}, year={2008}, publisher={Springer} } @article{pestos11, title={Large panels with common factors and spatial correlation}, author={Pesaran, M Hashem and Tosetti, Elisa}, journal={Journal of Econometrics}, volume={161}, number={2}, pages={182--202}, year={2011}, publisher={Elsevier} } @article{sto87, title={Asymptotic properties of least squares estimators of cointegrating vectors}, author={Stock, James H}, journal={Econometrica}, pages={1035--1056}, volume = {55}, number = {5}, year={1987}, publisher={JSTOR} } @article{granew74, title={Spurious regressions in econometrics}, author={Granger, Clive WJ and Newbold, Paul}, journal={Journal of Econometrics}, volume={2}, number={2}, pages={111--120}, year={1974}, publisher={Elsevier} } @article{phisul03, title={Dynamic panel estimation and homogeneity testing under cross section dependence}, author={Phillips, Peter CB and Sul, Donggyu}, journal={The Econometrics Journal}, volume={6}, number={1}, pages={217--259}, year={2003}, publisher={Wiley Online Library} } @article{mil17, title={A simple randomization test for spatial correlation in the presence of common factors and serial correlation}, author={Millo, Giovanni}, journal={Regional Science and Urban Economics}, volume={66}, number={}, pages={28--38}, year={2017}, publisher={Elsevier} } @article{griarb10, title={Detecting negative spatial autocorrelation in georeferenced random variables}, author={Griffith, Daniel A and Arbia, Giuseppe}, journal={International Journal of Geographical Information Science}, volume={24}, number={3}, pages={417--437}, year={2010}, publisher={Taylor & Francis} } @article{elhzig14, title={Competition in research activity among economic departments: Evidence by negative spatial autocorrelation}, author={Elhorst, J Paul and Zigova, Katarina}, journal={Geographical Analysis}, volume={46}, number={2}, pages={104--125}, year={2014}, publisher={Wiley Online Library} } @article{balgri01, title={The econometrics of rational addiction: the case of cigarettes}, author={Baltagi, Badi H and Griffin, James M}, journal={Journal of Business & Economic Statistics}, volume={19}, number={4}, pages={449--454}, year={2001}, publisher={Taylor & Francis} } @article{elh09, title={Evidence of political yardstick competition in France using a two-regime spatial Durbin model with fixed effects}, author={Elhorst, J Paul and Fr{\'e}ret, Sandy}, journal={Journal of Regional Science}, volume={49}, number={5}, pages={931--951}, year={2009}, publisher={Wiley Online Library} } @article{belboc00, title={Applying the generalized-moments estimation approach to spatial problems involving micro-level data}, author={Bell, Kathleen P and Bockstael, Nancy E}, journal={The review of economics and statistics}, volume={82}, number={1}, pages={72--82}, year={2000}, publisher={MIT Press} } @inproceedings{Anselinetal:08, author={Anselin, L. and Le Gallo, J. and Jayet, H.}, title={Spatial Panel Econometrics}, booktitle={The Econometrics of Panel Data, Fundamentals and Recent Developments in Theory and Practice (3rd Edition)}, year={2008}, publisher={Springer-Verlag, Berlin Heidelberg}, editor={Matyas, L. and Sevestre, P.}, pages={624 -- 660} } @article{Elhorst:03, author={Elhorst, J.P.}, title={Specification and estimation of spatial panel data models}, journal={International Regional Sciences Review}, volume={26}, year={2003}, pages={244--268}, number={3} } @article{LeeYu:10b, author={Lee, L.F. and Yu, J.}, title={Estimation of spatial autoregressive panel data models with fixed effects}, journal={Journal of Econometrics}, volume={154}, year={2010}, pages={165--185}, number={2} } @article{LeeYu:10c, author={Lee, L.F. and Yu, J.}, title={Some recent developments in spatial panel data models}, journal={Regional Science and Urban Economics}, volume={40}, year={2010}, pages={255--271}, number={5} } @article{LeeYu:12, author={Lee,L. and Yu,J.}, title={Spatial panels: random components versus fixed effects}, journal={International Economic Review}, volume={53}, year={2012}, pages={1369--1412}, month={November}, number={4} } @article{milpir12, title={splm: Spatial Panel Data Models in {R}}, author={Millo, Giovanni and Piras, Gianfranco}, journal={Journal of Statistical Software}, volume={47}, number={1}, pages={1--38}, year={2012} } @article{Case:91, author={Case, A.C.}, title={Spatial Patterns in household demand}, journal={Econometrica}, volume={59}, year={1991}, pages={953--965}, number={4} } @article{Kapooretal:07, author={Kapoor, M. and Kelejian, H.H. and Prucha, I.R.}, title={Panel data model with spatially correlated error components}, journal={Journal of Econometrics}, volume={140}, year={2007}, pages={97--130}, number={1} } @article{MutlPfaffermayr:11, author={Mutl, J. and Pfaffermayr, M.}, title={The {H}ausman test in a Cliff and Ord panel model}, journal={Econometrics Journal}, volume={14}, year={2011}, pages={48--76}, number={1} } @book{ANSE:88, title={Spatial econometrics: methods and models}, author={Anselin, Luc}, volume={4}, year={1988}, publisher={Springer} } @article{Magnus:78, author={Magnus, J.}, title={Maximum likelihood estimation of the GLS model with unknown parameters in the disturbance covariance matrix}, journal={Journal of Econometrics}, volume={7}, year={1978}, pages={281-- 312} } @article{Elhorst:08, author={Elhorst, J.P.}, title={Serial and Spatial error correlation}, journal={Economics Letters}, volume={100}, year={2008}, pages={422--424}, number={3} } @article{OberhoferKmenta:74, author={Oberhofer, W. and Kmenta, J.}, title={A general procedure for obtaining maximum likelihood estimates in generalized regression models}, journal={Econometrica}, volume={42}, year={1974}, pages={579--590}, number={3} } @article{KelejianPrucha:98, author={Kelejian, H.H. and Prucha, I.R.}, title={A Generalized Spatial Two Stages Least Square Procedure for Estimating a Spatial Autoregressive Model with Autoregressive Disturbances}, journal={Journal of Real Estate Finance and Economics}, volume={17}, year={1998}, pages={99--121}, number={1} } @article{KelejianPrucha:99, author={Kelejian, H.H. and Prucha, I.R.}, title={A Generalized Moments Estimator for the Autoregressive Parameter in a Spatial Model}, journal={International Economic Review}, volume={40}, year={1999}, pages={509--533}, number={2} } @article{bur80, title={On the Cliff-Ord test for spatial correlation}, author={Burridge, Peter}, journal={Journal of the Royal Statistical Society. Series B (Methodological)}, pages={107--108}, volume = {42}, number = {1}, year={1980}, publisher={JSTOR} } @article{Fingleton:08, author={Fingleton, B.}, title={A Generalized Method of Moments estimator for a spatial panel model with an endogenous spatial lag and spatial moving average errors}, journal={Spatial Economic Analysis}, volume={3}, year={2008}, pages={27--44}, number={1} } @article{Baltagietal:13, author={Baltagi, B.H. and Egger, P. and Pfaffermayr, M.}, title={A generalized spatial panel data model with random effects}, journal={Econometric Reviews}, volume={32}, year={2013}, pages={650--685}, issue={5-6} } @article{ans88a, title={Lagrange multiplier test diagnostics for spatial dependence and spatial heterogeneity}, author={Anselin, Luc}, journal={Geographical analysis}, volume={20}, number={1}, pages={1--17}, year={1988}, publisher={Wiley Online Library} } @article{beryoo93, title={Specification testing with locally misspecified alternatives}, author={Bera, Anil K and Yoon, Mann J}, journal={Econometric theory}, volume={9}, number={04}, pages={649--658}, year={1993}, publisher={Cambridge Univ Press} } @article{ansberfloyoo96, title={Simple diagnostic tests for spatial dependence}, author={Anselin, Luc and Bera, Anil K and Florax, Raymond and Yoon, Mann J}, journal={Regional Science and Urban Economics}, volume={26}, number={1}, pages={77--104}, year={1996}, publisher={Elsevier} } @article{flofolrey03, title={Specification searches in spatial econometrics: the relevance of Hendry's methodology}, author={Florax, Raymond JGM and Folmer, Hendrik and Rey, Sergio J}, journal={Regional Science and Urban Economics}, volume={33}, number={5}, pages={557--579}, year={2003}, publisher={Elsevier} } @article{elh10, title={Applied spatial econometrics: raising the bar}, author={Elhorst, J Paul}, journal={Spatial Economic Analysis}, volume={5}, number={1}, pages={9--28}, year={2010}, publisher={Taylor & Francis} } @incollection{elh14a, title={Spatial panel data models}, author={Elhorst, J Paul}, booktitle={Spatial Econometrics}, pages={37--93}, year={2014}, publisher={Springer} } @article{bermonsos09, title={Testing under local misspecification and artificial regressions}, author={Bera, Anil K and Montes-Rojas, Gabriel and Sosa-Escudero, Walter}, journal={Economics Letters}, volume={104}, number={2}, pages={66--68}, year={2009}, publisher={Elsevier} } @article{debert10, title={Testing for spatial autocorrelation in a fixed effects panel data model}, author={Debarsy, Nicolas and Ertur, Cem}, journal={Regional Science and Urban Economics}, volume={40}, number={6}, pages={453--470}, year={2010}, publisher={Elsevier} } @article{balsonjunkoh07, author={Baltagi, B.H. and Song, S.H. and Jung,B.C. and Koh,W.}, title={Testing for serial correlation, spatial autocorrelation and random effects using panel data}, journal={Journal of Econometrics}, volume={140}, year={2007}, pages={5--51}, number={1} } @article{mil17b, author={Millo, G.}, title={Robust standard error estimators for panel models: A unifying approach}, journal={Journal of Statistical Software}, volume={82}, year={2017}, pages={1--27}, number={3} } @Article{BALT:LI:90, author = {Baltagi, B.H. and Li, Q.}, title = {A Lagrange multiplier test for the error components model with incomplete panels}, journal = {Econometric Reviews}, year = {1990}, OPTkey = {}, volume = {9}, OPTnumber = {}, pages = {103--107}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BALT:CHAN:LI:92, author = {Baltagi, B.H. and Chang, Y.J. and Li, Q.}, title = {Monte Carlo results on several new and existing tests for the error components model}, journal = {Journal of Econometrics}, year = {1992}, OPTkey = {}, volume = {54}, OPTnumber = {}, pages = {95--120}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{OBOJ:ETAL:15, title={Vegetation effects on the water balance of mountain grasslands depend on climatic conditions}, author={Obojes, N and Bahn, M and Tasser, E and Walde, J and Inauen, Nicole and Hiltbrunner, Erika and Saccone, P and Lochet, J and Cl{\'e}ment, JC and Lavorel, S and others}, journal={Ecohydrology}, volume={8}, number={4}, pages={552--569}, year={2015}, publisher={Wiley Online Library} } @Article{CAUD:FORD:KASE:95, author = {Caudill, Steven B. and Ford, Jon M. and Kaserman, David L.}, title = {Certificate-of-need regulation and the diffusion of innovations: a random coefficient model}, journal = {Journal of Applied Econometrics}, year = {1995}, OPTkey = {}, volume = {10}, number = {1}, OPTpages = {73--78}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{HALL:94, title={Testing for a unit root in time series with pretest data-based model selection}, author={Hall, Alastair}, journal={Journal of Business & Economic Statistics}, volume={12}, number={4}, pages={461--470}, year={1994}, publisher={Taylor & Francis} } @Manual{foreign, title = {foreign: Read Data Stored by 'Minitab', 'S', 'SAS', 'SPSS', 'Stata', 'Systat', 'Weka', 'dBase', ...}, author = {{R Core Team}}, year = {2017}, note = {R package version 0.8-69}, url = {https://CRAN.R-project.org/package=foreign}, } @Book{XIE:15, 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 = {http://yihui.name/knitr/}, } @Book{WICK:09, author = {Hadley Wickham}, title = {ggplot2: Elegant Graphics for Data Analysis}, publisher = {Springer-Verlag New York}, year = {2009}, isbn = {978-0-387-98140-6}, url = {http://ggplot2.org}, } @manual{tantau:2013a, author = {Till Tantau}, year = {2013}, title = {The TikZ and PGF Packages}, subtitle = {Manual for version 3.0.0}, url = {http://sourceforge.net/projects/pgf/}, date = {2013-12-20}, } @Article{ROSS:HEIL:04, author = {Rossini, A.J. and Heiberger, R.M. and Sparapani, R.A. and Maechler, M. and Hornik, K.}, title = {Emacs Speaks Statistics: a multiplatform, multipackage development environment for statistical analysis}, journal = {Journal of Computational and Graphical Statistics}, year = {2004}, OPTkey = {}, OPTvolume = {13}, OPTnumber = {1}, OPTpages = {247-261}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Manual{fiftystater, title = {fiftystater: Map Data to Visualize the Fifty U.S. States with Alaska and Hawaii Insets}, author = {William Murphy}, year = {2016}, note = {R package version 1.0.1}, url = {https://CRAN.R-project.org/package=fiftystater}, } @Article{MICH:PAPA:16, author = {Michalopoulos, Stelios and Papaioannou, Elias}, title = {The long-run effects of the scramble for Africa}, journal = {American Economic Review}, year = {2016}, OPTkey = {}, volume = {106}, number = {7}, pages = {1802-1848}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{CHAR:VILL:09, author = {Charness, Gary and Villeval, Marie-Claire}, title = {Cooperation and competition in intergenerational experiments in the field and the laboratory}, journal = {American Economic Review}, year = {2009}, OPTkey = {}, volume = {99}, number = {3}, pages = {956-978}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BARD:MOOK:10, author = {Bardhan, Pranab and Mookherjee, Dilip}, title = {Determinants of redistributive politics: an empirical analysis of land reform in west Bengal, India}, journal = {American Economic Review}, year = {2010}, OPTkey = {}, volume = {100}, number = {4}, pages = {1572-1600}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{REIN:REIN:TREB:16, author = {Reinhart, Carmen M. and Reinhart, Vincent and Trebesch, Christoph}, title = {Global cycles: capital flows, commodities, and sovereign defaults, 1815-2015}, journal = {American Economic Review}, year = {2016}, OPTkey = {}, volume = {106}, number = {5}, pages = {574-580}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BRAN:COOP:06, author = {Brandts, Jordi and Cooper, David J.}, title = {A change would do you good... An experimental study on how to overcome coordination failure in organizations}, journal = {American Economic Review}, year = {2006}, OPTkey = {}, volume = {96}, number = {3}, pages = {669-693}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{BAZZI:17, author = {Bazzi, Samuel}, title = {Wealth heterogeneity and the income elasticity of migration}, journal = {American Economic Journal, Applied Economics}, year = {2017}, OPTkey = {}, volume = {9}, number = {2}, pages = {219-255}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{FARB:SILV:WACH:16, author = {Farber, Henry S. and Silverman, Dan and von Wachter, Till}, title = {Determinants of callbacks to job applications: an audit study}, journal = {American Economic Review}, year = {2016}, OPTkey = {}, volume = {106}, number = {5}, pages = {314-318}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ALAN:HONO:HU:LETH:13, author = {Alan, Sule and Honor\'e, Bo E. and Hu, Luojia and Leth-Petersen, Soren}, title = {Estimation of panel data regression model with two-sided censoring or truncation}, journal = {Journal of Econometric Methods}, year = {2013}, OPTkey = {}, volume = {3}, number = {1}, pages = {1-20}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HAUS:HALL:GRIL:86, author = {Hausman, J. and Hall, B.H. and Griliches, Z.}, title = {Patents and R&D: is there a lag?}, journal = {International Economic Review}, year = {1986}, OPTkey = {}, OPTvolume = {27}, OPTnumber = {}, pages = {265-283}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{CINC:97, author = {Cincer, Michele}, title = {Patents, R&D, and technological spillovers at the firm level: some evidence from econometric count models for panel data}, journal = {Journal of Applied Econometrics}, year = {1997}, OPTkey = {}, volume = {12}, number = {3}, OPTpages = {265-280}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{ACCO:CORS:SIMO:14, author = {Acconcia, Antonio and Corsetti, Giancarlo and Simonelli, Saverio}, title = {Mafia and public spending: evidence on the fiscal multiplier from a quasi-experiment}, journal = {American Economic Review}, year = {2014}, OPTkey = {}, volume = {104}, OPTnumber = {7}, pages = {2185-2209}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Manual{CROI:MILL:17, title = {pder: Panel Data Econometrics with R}, author = {Yves Croissant and Giovanni Millo}, year = {2017}, note = {R package version 1.0-0}, url = {http://www.r-project.org}, } @Manual{CROI:17, title = {pglm: panel generalized linear model}, author = {Yves Croissant}, year = {2017}, note = {R package version 0.2-0}, url = {http://www.r-project.org}, } @Manual{CROI:ZEIL:16, title = {truncreg: Truncated Gaussian Regression Models}, author = {Yves Croissant and Achim Zeileis}, year = {2016}, note = {R package version 0.2-4}, url = {https://CRAN.R-project.org/package=truncreg}, } @Book{survival-book, title = {Modeling Survival Data: Extending the {C}ox Model}, author = {Therneau, Terry M. and Grambsch, Patricia M.}, year = {2000}, publisher = {Springer}, address = {New York}, isbn = {0-387-98784-3}, } @Manual{HENN:17, title = {censReg: Censored Regression (Tobit) Models}, author = {Arne Henningsen}, year = {2017}, note = {R package version 0.5-26}, url = {https://CRAN.R-project.org/package=censReg}, } @Book{VENA:RIPL:02, title = {Modern Applied Statistics with S}, author = {W. N. Venables and B. D. Ripley}, publisher = {Springer}, edition = {4th}, address = {New York}, year = {2002}, note = {ISBN 0-387-95457-0}, url = {http://www.stats.ox.ac.uk/pub/MASS4}, } @Manual{PINH:17, title = {{nlme}: Linear and Nonlinear Mixed Effects Models}, author = {Jose Pinheiro and Douglas Bates and Saikat DebRoy and Deepayan Sarkar and {R Core Team}}, year = {2017}, note = {R package version 3.1-131}, url = {https://CRAN.R-project.org/package=nlme}, } @Article{JACK:11, title = {Multi-State Models for Panel Data: The {msm} Package for {R}}, author = {Christopher H. Jackson}, journal = {Journal of Statistical Software}, year = {2011}, volume = {38}, number = {8}, pages = {1--29}, url = {https://www.jstatsoft.org/article/view/v038i08}, } @Manual{WICK:FRAN:16, title = {dplyr: A Grammar of Data Manipulation}, author = {Hadley Wickham and Romain Francois}, year = {2016}, note = {R package version 0.5.0}, url = {https://CRAN.R-project.org/package=dplyr}, } @Manual{BDSM:14, title = {bdsmatrix: Routines for Block Diagonal Symmetric matrices}, author = {Terry Therneau}, year = {2014}, note = {R package version 1.3-2}, url = {https://CRAN.R-project.org/package=bdsmatrix}, } @Article{SPAM:10, title = {{spam}: A Sparse Matrix {R} Package with Emphasis on {MCMC} Methods for {G}aussian {M}arkov Random Fields}, author = {Reinhard Furrer and Stephan R. Sain}, journal = {Journal of Statistical Software}, year = {2010}, volume = {36}, number = {10}, pages = {1--25}, url = {https://www.jstatsoft.org/article/view/v036i10}, } @Manual{MATR:16, title = {Matrix: Sparse and Dense Matrix Classes and Methods}, author = {Douglas Bates and Martin Maechler}, year = {2016}, note = {R package version 1.2-4}, url = {https://CRAN.R-project.org/package=Matrix}, } @Article{MAXL:11, title = {maxLik: A package for maximum likelihood estimation in {R}}, author = {Arne Henningsen and Ott Toomet}, journal = {Computational Statistics}, year = {2011}, volume = {26}, number = {3}, pages = {443-458}, doi = {10.1007/s00180-010-0217-1}, url = {http://dx.doi.org/10.1007/s00180-010-0217-1}, } @article{BALT:GRIF:83, title = "Gasoline demand in the OECD: An application of pooling and testing procedures", journal = "European Economic Review", volume = "22", number = "2", pages = "117 - 137", year = "1983", issn = "0014-2921", OPTdoi = "https://doi.org/10.1016/0014-2921(83)90077-6", url = "https://doi.org/10.1016/0014-2921(83)90077-6", author = "Badi H. Baltagi and James M. Griffin", abstract = "This study utilizes a pooled inter-country data set, finding the long-run price-elasticity falls in the range −0.55 to −0.9, depending on the choice of pooled estimators. The estimators included the OLS, within-, and between-country estimators, plus five feasible GLS estimators. Even allowing for a ten-year distributed lag on price to reflect changes in auto-efficiency characteristics, the within-country estimator yields appreciably more inelastic estimates than did the O:S estimator, which was heavily influenced by the between- or inter-country variation. This difference raises intriguing questions for future research." } @PhdThesis{GRUN:58, title = {The determinants of corporate investment}, year = {1958}, school = {Department of Economics, University of Chicago}, author = {Grunfeld, Yehuda} } @ARTICLE{KLEI:ZEIL:10, title = {The Grunfeld Data at 50}, author = {Kleiber, Christian and Zeileis, Achim}, year = {2010}, journal = {German Economic Review}, volume = {11}, pages = {404-417}, abstract = {This paper revisits Grunfeld's well-known investment data, one of the most widely used datasets in all of applied econometrics, on the occasion of their 50th anniversary. It presents, apparently for the first time after the publication of the original Chicago Ph.D. thesis, the full dataset, points out errors and inconsistencies in several currently available versions, and also revisits a number of empirical studies from the literature of the last five decades. Our findings provide a cautionary tale on the use of widely known data and underline the need for mandatory data and code archives. Copyright 2010 The Author. German Economic Review 2010 Verein für Socialpolitik.}, url = {https://doi.org/10.1111/j.1468-0475.2010.00513.x} } @book{BESL:KUH:WELS:80, title = {Regression diagnostics: identifying influential data and sources of collinearity}, author= {Besley, David A. and Kuh, Edwin and Welsch, Roy E.}, year = {1980}, publisher={John Wiley and Sons ltd}, note = {Wiley series in probability and statistics} } @book{CAME:TRIV:05, author = {Colin Cameron, Adrian and K. Trivedi, Pravin}, year = {2005}, title = {Microeconometrics: Methods and Applications}, publisher = {Cambridge University Press}, isbn = {0521848059}, doi = {10.1017/CBO9780511811241} } @article{ZILI:97, ISSN = {07350015}, OPTURL = {https://www.jstor.org/stable/1392488}, abstract = {I examine the empirical performance of instrumental variables estimators with predetermined instruments in an application to life-cycle labor supply under uncertainty. The estimators studied are two-stage least squares, generalized method-of-moments (GMM), forward filter, independently weighted GMM, and split-sample instrumental variables. I compare the bias/efficiency trade-off for the estimators using bootstrap algorithms suggested by Freedman and by Brown and Newey. Results indicate that the downward bias in GMM is quite severe as the number of moment conditions expands, outweighing the gains in efficiency. The forward-filter estimator, however, has lower bias and is more efficient than two-stage least squares.}, author = {James P. Ziliak}, journal = {Journal of Business & Economic Statistics}, number = {4}, pages = {419--431}, publisher = {[American Statistical Association, Taylor & Francis, Ltd.]}, title = {Efficient Estimation with Panel Data When Instruments Are Predetermined: An Empirical Comparison of Moment-Condition Estimators}, volume = {15}, year = {1997} } @book{VERB:04, author = {Verbeek, Marno}, year = {2004}, title = {A Guide to Modern Econometrics}, edition = {2nd}, publisher = {Wiley} } @article{FENG:HORR:12, author = {Feng, Qu and Horrace, William C.}, title = {Alternative technical efficiency measures: Skew, bias and scale}, journal = {Journal of Applied Econometrics}, volume = {27}, number = {2}, pages = {253-268}, doi = {10.1002/jae.1190}, abstract = {SUMMARY In the fixed-effects stochastic frontier model an efficiency measure relative to the best firm in the sample is universally employed. This paper considers a new measure relative to the worst firm in the sample. We find that estimates of this measure have smaller bias than those of the traditional measure when the sample consists of many firms near the efficient frontier. Moreover, a two-sided measure relative to both the best and the worst firms is proposed. Simulations suggest that the new measures may be preferred depending on the skewness of the inefficiency distribution and the scale of efficiency differences. Copyright 2010 John Wiley \& Sons, Ltd.}, year = {2012} } @book{HAYA:00, author = {Hayashi, F.}, year = 2000, publisher = {Princeton University Press}, title = Econometrics } @article{SUMM:HEST:91, author = {Summers, Robert and Heston, Alan}, year = {1991}, month = {02}, pages = {327-68}, title = {The Penn World Table (Mark 5): An Expanded Set of International Comparisons, 1950–1988}, volume = {106}, journal = {The Quarterly Journal of Economics}, doi = {10.2307/2937941} } @ARTICLE{BALT:LEVI:92, title = {Cigarette taxation: Raising revenues and reducing consumption}, author = {Baltagi, Badi and Levin, Dan}, year = {1992}, journal = {Structural Change and Economic Dynamics}, volume = {3}, number = {2}, pages = {321-335}, url = {https://EconPapers.repec.org/RePEc:eee:streco:v:3:y:1992:i:2:p:321-335} } @article{BALT:GRIF:XION:00, author = {Baltagi, Badi H. and Griffin, James M. and Xiong, Weiwen}, title = {To Pool or Not to Pool: Homogeneous Versus Heterogeneous Estimators Applied to Cigarette Demand}, journal = {The Review of Economics and Statistics}, volume = {82}, number = {1}, pages = {117-126}, year = {2000}, doi = {10.1162/003465300558551}, URL = {https://doi.org/10.1162/003465300558551}, eprint = {https://doi.org/10.1162/003465300558551}, abstract = { This paper reexamines the benefits of pooling and, in addition, contrasts the performance of newly proposed heterogeneous estimators. The analysis utilizes a panel data set from 46 American states over the period 1963 to 1992 and a dynamic demand specification for cigarettes. Also, the forecast performance of the various estimators is compared.} } @article{IM:SEUN:SCHM:WOOL:99, title = "Efficient estimation of panel data models with strictly exogenous explanatory variables", journal = "Journal of Econometrics", volume = "93", number = "1", pages = "177 - 201", year = "1999", issn = "0304-4076", OPTdoi = "https://doi.org/10.1016/S0304-4076(99)00008-1", url = "https://doi.org/10.1016/S0304-4076(99)00008-1", author = "Kyung So Im and Seung C. Ahn and Peter Schmidt and Jeffrey M. Wooldridge", keywords = "Panel data, Strict exogeneity, Efficiency, Redundancy", abstract = "With panel data, exogeneity assumptions imply many more moment conditions than standard estimators use. However, many of the moment conditions may be redundant, in the sense that they do not increase efficiency; if so, we may establish the standard estimators’ efficiency. We prove efficiency results for GLS in a model with unrestricted error covariance matrix, and for 3SLS in models where regressors and errors are correlated, such as the Hausman–Taylor model. For models with correlation between regressors and errors, and with unrestricted error covariance structure, we provide a simple estimator based on a GLS generalization of deviations from means." } @unpublished{AREL:BOND:98, author={Arellano, M. and Bond, S.}, title={Dynamic panel data estimation using DPD98 for GAUSS: a guide for users}, year={1998}, url = {https://ifs.org.uk/publications/dpd-gauss}, note = {unpublished} } @unpublished{DOOR:AREL:BOND:12, author={Arellano, M. and Bond, S.}, title={Panel data estimation using DPD for Ox}, year={2012}, url = {https://www.doornik.com/download/oxmetrics7/Ox_Packages/dpd.pdf}, note = {unpublished} } @article{BALT:FENG:KAO:12, title = "A Lagrange Multiplier test for cross-sectional dependence in a fixed effects panel data model", journal = "Journal of Econometrics", volume = "170", number = "1", pages = "164 - 177", year = "2012", issn = "0304-4076", OPTdoi = "https://doi.org/10.1016/j.jeconom.2012.04.004", url = "https://doi.org/10.1016/j.jeconom.2012.04.004", author = "Badi H. Baltagi and Qu Feng and Chihwa Kao", keywords = " test, Cross-sectional dependence, Fixed effects, High dimensional inference, John test, Panel data", abstract = "It is well known that the standard Breusch and Pagan (1980) LM test for cross-equation correlation in a SUR model is not appropriate for testing cross-sectional dependence in panel data models when the number of cross-sectional units (n) is large and the number of time periods (T) is small. In fact, a scaled version of this LM test was proposed by Pesaran (2004) and its finite sample bias was corrected by Pesaran et al. (2008). This was done in the context of a heterogeneous panel data model. This paper derives the asymptotic bias of this scaled version of the LM test in the context of a fixed effects homogeneous panel data model. This asymptotic bias is found to be a constant related to n and T, which suggests a simple bias corrected LM test for the null hypothesis. Additionally, the paper carries out some Monte Carlo experiments to compare the finite sample properties of this proposed test with existing tests for cross-sectional dependence." } @article{PESA:15, author = { M. Hashem Pesaran}, title = {Testing Weak Cross-Sectional Dependence in Large Panels}, journal = {Econometric Reviews}, volume = {34}, number = {6-10}, pages = {1089-1117}, year = {2015}, publisher = {Taylor & Francis}, doi = {10.1080/07474938.2014.956623}, URL = {https://doi.org/10.1080/07474938.2014.956623}, eprint = {https://doi.org/10.1080/07474938.2014.956623} } @article{KANG:85, title = "A note on the equivalence of specification tests in the two-factor multivariate variance components model", journal = "Journal of Econometrics", volume = "28", number = "2", pages = "193 - 203", year = "1985", issn = "0304-4076", OPTdoi = "https://doi.org/10.1016/0304-4076(85)90119-8", url = "https://doi.org/10.1016/0304-4076(85)90119-8", author = "Suk Kang", abstract = "This note offers a generalization of Hausman and Taylor's equivalence of specification tests in the single-equation variance (error) components model to the two-factor multivariate variance components case. The relationship between the specification tests and the hypothesis test in the model proposed by Mundlak is also discussed." } @article{BALT:CHAN:LI:98, author = {Baltagi, Badi and Chang, YA and Li, Q}, year = {1998}, month = {01}, pages = {1-20}, journal = "Advances in econometrics", title = {Testing for random individual and time effects using unbalanced panel data}, volume = {13} } @book{ANDR:GOLS:SCMI:13, author = {Andre\ss, Hans-Jürgen and Golsch, Katrin and Schmidt-Catran, Alexander}, year = {2013}, month = {01}, publisher = {Springer}, title = {Applied Panel Data Analysis for Economic and Social Surveys}, doi = {10.1007/978-3-642-32914-2} } @Article{CAME:MILL:15, author={A. Colin Cameron and Douglas L. Miller}, title={A Practitioner's Guide to Cluster-Robust Inference}, journal={Journal of Human Resources}, year=2015, volume={50}, number={2}, pages={317-372}, month={}, keywords={}, doi={}, abstract={We consider statistical inference for regression when data are grouped into clusters, with regression model errors independent across clusters but correlated within clusters. Examples include data on individuals with clustering on village or region or other category such as industry, and state-year differences-in-differences studies with clustering on state. In such settings, default standard errors can greatly overstate estimator precision. Instead, if the number of clusters is large, statistical inference after OLS should be based on cluster-robust standard errors. We outline the basic method as well as many complications that can arise in practice. These include cluster-specific fixed effects, few clusters, multiway clustering, and estimators other than OLS.}, url={https://ideas.repec.org/a/uwp/jhriss/v50y2015i2p317-372.html} } @article{GRAN:69, ISSN = {00129682, 14680262}, OPTURL = {https://www.jstor.org/stable/1912791}, abstract = {There occurs on some occasions a difficulty in deciding the direction of causality between two related variables and also whether or not feedback is occurring. Testable definitions of causality and feedback are proposed and illustrated by use of simple two-variable models. The important problem of apparent instantaneous causality is discussed and it is suggested that the problem often arises due to slowness in recording information or because a sufficiently wide class of possible causal variables has not been used. It can be shown that the cross spectrum between two variables can be decomposed into two parts, each relating to a single causal arm of a feedback situation. Measures of causal lag and causal strength can then be constructed. A generalisation of this result with the partial cross spectrum is suggested.}, author = {C. W. J. Granger}, journal = {Econometrica}, number = {3}, pages = {424--438}, publisher = {[Wiley, Econometric Society]}, title = {Investigating Causal Relations by Econometric Models and Cross-spectral Methods}, volume = {37}, year = {1969} } @Article{LOPE:WEBE:17, author={Luciano Lopez and Sylvain Weber}, title={{Testing for Granger causality in panel data}}, journal={Stata Journal}, year=2017, volume={17}, number={4}, pages={972-984}, month={December}, keywords={xtgcause; Granger causality; panel datasets; bootstrap}, doi={}, abstract={With the development of large and long panel databases, the theory surrounding panel causality evolves quickly, and empirical researchers might find it difficult to run the most recent techniques developed in the literature. In this article, we present the community-contributed command xtgcause, which imple- ments a procedure proposed by Dumitrescu and Hurlin (2012, Economic Modelling 29: 1450–1460) for detecting Granger causality in panel datasets. Thus, it con- stitutes an effort to help practitioners understand and apply the test. xtgcause offers the possibility of selecting the number of lags to include in the model by minimizing the Akaike information criterion, Bayesian information criterion, or Hannan–Quinn information criterion, and it offers the possibility to implement a bootstrap procedure to compute p-values and critical values.}, url={https://www.stata-journal.com/article.html?article=st0507} } @article{DUMI:HURL:12, title = "Testing for Granger non-causality in heterogeneous panels", journal = "Economic Modelling", volume = "29", number = "4", pages = "1450 - 1460", year = "2012", issn = "0264-9993", OPTdoi = "https://doi.org/10.1016/j.econmod.2012.02.014", url = "https://doi.org/10.1016/j.econmod.2012.02.014", author = "Elena-Ivona Dumitrescu and Christophe Hurlin", keywords = "Granger non-causality, Panel data, Wald test", abstract = "This paper proposes a very simple test of Granger (1969) non-causality for heterogeneous panel data models. Our test statistic is based on the individual Wald statistics of Granger non causality averaged across the cross-section units. First, this statistic is shown to converge sequentially to a standard normal distribution. Second, the semi-asymptotic distribution of the average statistic is characterized for a fixed T sample. A standardized statistic based on an approximation of the moments of Wald statistics is hence proposed. Third, Monte Carlo experiments show that our standardized panel statistics have very good small sample properties, even in the presence of cross-sectional dependence." } @article{SOSA:BERA:08, author = {Walter Sosa-Escudero and Anil K. Bera}, title ={Tests for Unbalanced Error-Components Models under Local Misspecification}, journal = {The Stata Journal}, volume = {8}, number = {1}, pages = {68-78}, year = {2008}, doi = {10.1177/1536867X0800800105}, URL = {https://doi.org/10.1177/1536867X0800800105}, eprint = {https://doi.org/10.1177/1536867X0800800105}, abstract = { This paper derives unbalanced versions of the test statistics for first-order serial correlation and random individual effects summarized in Sosa-Escudero and Bera (2001, Stata Technical Bulletin Reprints, vol. 10, pp. 307–311), and updates their xttest1 routine. The derived test statistics should be useful for applied researchers faced with the increasing availability of panel information where not every individual or country is observed for the full time span. The test statistics proposed here are based on ordinary least-squares residuals and hence are computationally very simple.} } @article{DURB:WATS:50, ISSN = {00063444}, OPTURL = {https://www.jstor.org/stable/2332391}, author = {J. Durbin and G. S. Watson}, journal = {Biometrika}, number = {3/4}, pages = {409--428}, publisher = {[Oxford University Press, Biometrika Trust]}, title = {Testing for Serial Correlation in Least Squares Regression: I}, volume = {37}, year = {1950} } @article{DURB:WATS:71, ISSN = {00063444}, OPTURL = {https://www.jstor.org/stable/2334313}, abstract = {The paper considers a number of problems arising from the test of serial correlation based on the d statistic proposed earlier by the authors (Durbin & Watson, 1950, 1951). Methods of computing the exact distribution of d are investigated and the exact distribution is compared with six approximations to it for four sets of published data. It is found that approximations suggested by Theil and Nagar and by Hannan are too inaccurate for practical use but that the beta approximation proposed in the 1950 and 1951 papers and a new approximation, called by us the a + bdU approximation and based, like the beta approximation, on the exact first two moments of d, both perform well. The power of the d test is compared with that of certain exact tests proposed by Theil, Durbin, Koerts and Abrahamse from the standpoint of invariance theory. It is shown that the d test is locally most powerful invariant but that the other tests are not. There are three appendices. The first gives an account of the exact distribution of d. The second derives the mean and variance to a second order of approximation of a modified maximum likelihood statistic closely related to d. The third sets out details of the computations required for the a + bdU approximation.}, author = {J. Durbin and G. S. Watson}, journal = {Biometrika}, number = {1}, pages = {1--19}, publisher = {[Oxford University Press, Biometrika Trust]}, title = {Testing for Serial Correlation in Least Squares Regression. III}, volume = {58}, year = {1971} } @article{DURB:WATS:51, author = {Durbin, J. and Watson, G. S.}, title = "{Testing for serial correlation in least squares regression. II}", journal = {Biometrika}, volume = {38}, number = {1-2}, pages = {159-178}, year = {1951}, month = {06}, issn = {0006-3444}, doi = {10.1093/biomet/38.1-2.159}, url = {https://doi.org/10.1093/biomet/38.1-2.159} } @article{BALT:WU:99, ISSN = {02664666, 14694360}, OPTURL = {https://www.jstor.org/stable/3533276}, abstract = {This paper deals with the estimation of unequally spaced panel data regression models with AR(1) remainder disturbances. A feasible generalized least squares (GLS) procedure is proposed as a weighted least squares that can handle a wide range of unequally spaced panel data patterns. This procedure is simple to compute and provides natural estimates of the serial correlation and variance components parameters. The paper also provides a locally best invariant test for zero first-order serial correlation against positive or negative serial correlation in case of unequally spaced panel data.}, author = {Badi H. Baltagi and Ping X. Wu}, journal = {Econometric Theory}, number = {6}, pages = {814--823}, publisher = {Cambridge University Press}, title = {Unequally Spaced Panel Data Regressions with AR(1) Disturbances}, volume = {15}, year = {1999} } @article{BHAR:FRAN:NARE:82, ISSN = {00346527, 1467937X}, OPTURL = {https://www.jstor.org/stable/2297285}, abstract = {This paper generalizes the Durbin-Watson type statistics to test the OLS residuals from the fixed effects model for serial independence. Also generalized are the tests proposed by Sargan and Bhargava for the hypothesis that the residuals form a random walk. A method for efficient estimation of the parameters is also developed. Finally, an earnings function is estimated using the Michigan Survey of Income Dynamics in order to illustrate the uses of the tests and the estimation procedures developed in this paper.}, author = {A. Bhargava and L. Franzini and W. Narendranathan}, journal = {The Review of Economic Studies}, number = {4}, pages = {533--549}, publisher = {[Oxford University Press, Review of Economic Studies, Ltd.]}, title = {Serial Correlation and the Fixed Effects Model}, volume = {49}, year = {1982} } @article{MACK:94, ISSN = {07350015}, OPTURL = {https://www.jstor.org/stable/1391481}, abstract = {This article uses Monte Carlo experiments and response surface regressions in a novel way to calculate approximate asymptotic distribution functions for several well-known unit-root and cointegration test statistics. These allow empirical workers to calculate approximate P values for these tests. The results of the article are based on an extensive set of Monte Carlo experiments, which yield finite-sample quantiles for several sample sizes. Based on these, response surface regressions are used to obtain asymptotic quantiles for many different test sizes. Then approximate distribution functions with simple functional forms are estimated from these asymptotic quantiles.}, author = {James G. MacKinnon}, journal = {Journal of Business & Economic Statistics}, number = {2}, pages = {167--176}, publisher = {[American Statistical Association, Taylor & Francis, Ltd.]}, title = {Approximate Asymptotic Distribution Functions for Unit-Root and Cointegration Tests}, volume = {12}, year = {1994} } @article{MACK:96, ISSN = {08837252}, OPTURL = {https://www.jstor.org/stable/2285154}, author = {James G. MacKinnon}, journal = {Journal of Applied Econometrics}, number = {6}, pages = {601--618}, title = {Numerical Distribution Functions for Unit Root and Cointegration Tests}, volume = {11}, year = {1996} } @article{KWIA:PHIL:SCHM:SHIN:92, title = "Testing the null hypothesis of stationarity against the alternative of a unit root: How sure are we that economic time series have a unit root?", journal = "Journal of Econometrics", volume = "54", number = "1", pages = "159 - 178", year = "1992", issn = "0304-4076", OPTdoi = "https://doi.org/10.1016/0304-4076(92)90104-Y", url = "https://doi.org/10.1016/0304-4076(92)90104-Y", author = "Denis Kwiatkowski and Peter C.B. Phillips and Peter Schmidt and Yongcheol Shin", abstract = "We propose a test of the null hypothesis that an observable series is stationary around a deterministic trend. The series is expressed as the sum of deterministic trend, random walk, and stationary error, and the test is the LM test of the hypothesis that the random walk has zero variance. The asymptotic distribution of the statistic is derived under the null and under the alternative that the series is difference-stationary. Finite sample size and power are considered in a Monte Carlo experiment. The test is applied to the Nelson-Plosser data, and for many of these series the hypothesis of trend stationarity cannot be rejected." } @article{AHRE:PINC:81, author = {Ahrens, H. and Pincus, R.}, title = {On Two Measures of Unbalancedness in a One-Way Model and Their Relation to Efficiency}, journal = {Biometrical Journal}, volume = {23}, number = {3}, pages = {227-235}, doi = {10.1002/bimj.4710230302}, abstract = {Abstract This paper discusses two measures of unbalancedness in a one-way model and shows that for a given statistical procedure they may serve as measures of efficiency of a design. They also allow to compare for example estimation methods for variance components in designs with a fixed level of unbalancedness.}, year = {1981} } @article{BALT:SONG:JUNG:02, ISSN = {13684221, 1368423X}, OPTURL = {https://www.jstor.org/stable/23114905}, abstract = {This paper considers the unbalanced two-way error component model studied by Wansbeek and Kapteyn (1989). Alternative analysis of variance (ANOVA), minimum norm quadratic unbiased and restricted maximum likelihood (REML) estimation procedures are proposed. The mean squared error performance of these estimators are compared using Monte Carlo experiments. Results show that for the estimates of the variance components, the computationally more demanding maximum likelihood (ML) and minimum variance quadratic unbiased (MIVQUE) estimators are recommended, especially if the unbalanced pattern is severe. However, focusing on the regression coefficient estimates, the simple ANOVA methods perform just as well as the computationally demanding ML and MIVQUE methods and are recommended.}, author = {Badi H. Baltagi and Seuck H. Song and Byoung C. Jung}, journal = {The Econometrics Journal}, number = {2}, pages = {480--493}, publisher = {[Royal Economic Society, Wiley]}, title = {A comparative study of alternative estimators for the unbalanced two-way error component regression model}, volume = {5}, year = {2002} } @misc{GOUL:13, author = "Gould, W.", year = 2013, url = {https://www.stata.com/support/faqs/statistics/intercept-in-fixed-effects-model/}, title = {How can there be an intercept in the fixed-effects model estimated by xtreg, fe?} } @Article{HOEC:07, author={Daniel Hoechle}, title={{Robust standard errors for panel regressions with cross-sectional dependence}}, journal={Stata Journal}, year=2007, volume={7}, number={3}, pages={281-312}, month={September}, keywords={xtscc; robust standard errors; nonparametric covariance estimation}, doi={}, abstract={I present a new Stata program, xtscc, that estimates pooled ordinary least-squares/weighted least-squares regression and fixed-effects (within) regression models with Driscoll and Kraay (Review of Economics and Statistics 80: 549–560) standard errors. By running Monte Carlo simulations, I compare the finite-sample properties of the cross-sectional dependence-consistent Driscoll-Kraay estimator with the properties of other, more commonly used covariance matrix estimators that do not account for cross-sectional dependence. The results indicate that Driscol-Kraay standard errors are well calibrated when cross-sectional dependence is present. However, erroneously ignoring cross-sectional correlation in the estimation of panel models can lead to severely biased statistical results. I illustrate the xtscc program by considering an application from empirical finance. Thereby, I also propose a Hausman-type test for fixed effects that is robust to general forms of cross-sectional and temporal dependence. Copyright 2007 by StataCorp LP.}, url={https://ideas.repec.org/a/tsj/stataj/v7y2007i3p281-312.html} } @manual{THER:14, author={Terry Therneau}, title={\pkg{bdsmatrix}: Routines for Block Diagonal Symmetric matrices}, year={2014}, note={\proglang{R} package version 1.3-2}, url={https://CRAN.R-project.org/package=bdsmatrix} } @Article{COTT:2017, author = {Cottrell, A.}, title = {Random effects estimators for unbalanced panel data: a Monte Carlo analysis}, journal = {gretl working papers}, year = {2017}, number = {4}, url = {https://EconPapers.repec.org/RePEc:anc:wgretl:4} } @article{CHOI:01, title = "Unit root tests for panel data", journal = "Journal of International Money and Finance", volume = "20", number = "2", pages = "249 - 272", year = "2001", issn = "0261-5606", OPTdoi = "https://doi.org/10.1016/S0261-5606(00)00048-6", url = "https://doi.org/10.1016/S0261-5606(00)00048-6", author = "In Choi", keywords = "Unit root test, Panel data, Meta-analysis, Purchasing power parity", abstract = "This paper develops unit root tests for panel data. These tests are devised under more general assumptions than the tests previously proposed. First, the number of groups in the panel data is assumed to be either finite or infinite. Second, each group is assumed to have different types of nonstochastic and stochastic components. Third, the time series spans for the groups are assumed to be all different. Fourth, the alternative where some groups have a unit root and others do not can be dealt with by the tests. The tests can also be used for the null of stationarity and for cointegration, once relevant changes are made in the model, hypotheses, assumptions and underlying tests. The main idea for our unit root tests is to combine p-values from a unit root test applied to each group in the panel data. Combining p-values to formulate tests is a common practice in meta-analysis. This paper also reports the finite sample performance of our combination unit root tests and Im et al.'s [Mimeo (1995)] t-bar test. The results show that most of the combination tests are more powerful than the t-bar test in finite samples. Application of the combination unit root tests to the post-Bretton Woods US real exchange rate data provides some evidence in favor of the PPP hypothesis." } @article{HADR:00, ISSN = {13684221, 1368423X}, OPTURL = {https://www.jstor.org/stable/23114886}, abstract = {This paper proposes a residual-based Lagrange multiplier (LM) test for a null that the individual observed series are stationary around a deterministic level or around a deterministic trend against the alternative of a unit root in panel data. The tests which are asymptotically similar under the null, belong to the locally best invariant (LBI) test statistics. The asymptotic distributions of the statistics are derived under the null and are shown to be normally distributed. Finite sample sizes and powers are considered in a Monte Carlo experiment. The empirical sizes of the tests are close to the true size even in small samples. The testing procedure is easy to apply, including, to panel data models with fixed effects, individual deterministic trends and heterogeneous errors across cross-sections. It is also shown how to apply the tests to the more general case of serially correlated disturbance terms.}, author = {Kaddour Hadri}, journal = {The Econometrics Journal}, number = {2}, pages = {148--161}, publisher = {[Royal Economic Society, Wiley]}, title = {Testing for stationarity in heterogeneous panel data}, volume = {3}, year = {2000} } @book{CROI:MILL:18, title = {Panel Data Econometrics with R}, author={Croissant, Yves and Millo, Giovanni}, publisher={John Wiley and Sons ltd}, year={2018}, edition={1st} } @Article{HANCK:13, author = {Christoph Hanck}, title = {An Intersection Test for Panel Unit Roots}, journal = {Econometric Reviews}, year = {2013}, OPTkey = {}, volume = {32}, OPTnumber = {2}, pages = {183-203}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{SIMES:86, author = {R. J. Simes}, title = {An improved Bonferroni procedure for multiple tests of significance}, journal = {Biometrika}, year = {1986}, OPTkey = {}, volume = {73}, OPTnumber = {3}, pages = {751-754}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @Article{HOMM:88, author = {G. Hommel}, title = {A stage wise rejective multiple test procedure based on a modified Bonferroni test}, journal = {Biometrika}, year = {1988}, OPTkey = {}, volume = {75}, OPTnumber = {2}, pages = {383-386}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } @article{POI:03, title={From the help desk: Swamy’s random-coefficients model}, author={Poi, Brian P.}, journal={Stata Journal}, volume={3}, number={3}, pages={302--308}, year={2003}, publisher={StataCorp LP} }plm/inst/doc/0000755000176200001440000000000014742231571012572 5ustar liggesusersplm/inst/doc/A_plmPackage.Rmd0000644000176200001440000032572014741261755015561 0ustar liggesusers--- output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib abstract: | This introduction to the `plm` package is a modified and extended version of @Croissant:Millo:2008, published in the *Journal of Statistical Software*. Panel data econometrics is obviously one of the main fields in the statistics profession, but most of the models used are difficult to estimate with only plain `R`. `plm` is a package for `R` which intends to make the estimation of linear panel models straightforward. `plm` provides functions to estimate a wide variety of models and to make (robust) inference. title: 'Panel data econometrics in R:' subtitle: 'the plm package' author: - name: Yves Croissant - name: Giovanni Millo vignette: > %\VignetteIndexEntry{Panel data econometrics in R: the plm package} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # Introduction Panel data econometrics is a continuously developing field. The increasing availability of data observed on cross-sections of units (like households, firms, countries etc.) *and* over time has given rise to a number of estimation approaches exploiting this double dimensionality to cope with some of the typical problems associated with economic data, first of all that of unobserved heterogeneity. Timewise observation of data from different observational units has long been common in other fields of statistics (where they are often termed *longitudinal* data). In the panel data field as well as in others, the econometric approach is nevertheless peculiar with respect to experimental contexts, as it is emphasizing model specification and testing and tackling a number of issues arising from the particular statistical problems associated with economic data. Thus, while a very comprehensive software framework for (among many other features) maximum likelihood estimation of linear regression models for longitudinal data, packages `nlme` [@PINH:BATE:DEBR:SARK:07] and `lme4` [@BATE:07], is available in the `R` (@R:2008) environment and can be used, e.g., for estimation of random effects panel models, its use is not intuitive for a practicing econometrician, and maximum likelihood estimation is only one of the possible approaches to panel data econometrics. Moreover, economic panel data sets often happen to be *unbalanced* (i.e., they have a different number of observations between groups), which case needs some adaptation to the methods and is not compatible with those in `nlme`. Hence the need for a package doing panel data "from the econometrician's viewpoint" and featuring at a minimum the basic techniques econometricians are used to: random and fixed effects estimation of static linear panel data models, variable coefficients models, generalized method of moments estimation of dynamic models; and the basic toolbox of specification and misspecification diagnostics. Furthermore, we felt there was a need for automation of some basic data management tasks such as lagging, summing and, more in general, `apply`ing (in the `R` sense) functions to the data, which, although conceptually simple, become cumbersome and error-prone on two-dimensional data, especially in the case of unbalanced panels. This paper is organized as follows: Section [linear panel model](#linear-panel-model) presents a very short overview of the typical model taxonomy^[Comprehensive treatments are to be found in many econometrics textbooks, e.g., @BALT:05, @BALT:13, @BALT:21 or @WOOL:02, @WOOL:10: the reader is referred to these, especially to the first 9 chapters of @BALT:05, @BALT:13, @BALT:21.]. Section [software approach](#software-approach) discusses the software approach used in the package. The next three sections present the functionalities of the package in more detail: data management (Section [managing data and formulae](#managing-data-and-formulae)), estimation (Section [model estimation](#model-estimation)) and testing (Section [tests](#tests)), giving a short description and illustrating them with examples. Section [plm vs nlme and lme4](#nlme) compares the approach in `plm` to that of `nlme` and `lme4`, highlighting the features of the latter two that an econometrician might find most useful. Section [conclusion](#conclusions) concludes the paper. # The linear panel model{#linear-panel-model} The basic linear panel models used in econometrics can be described through suitable restrictions of the following general model: \begin{equation*} y_{it}=\alpha_{it} + \beta_{it}^\top x_{it} + u_{it} \end{equation*} where $i=1, ..., n$ is the individual (group, country ...) index, $t=1, ..., T$ is the time index and $u_{it}$ a random disturbance term of mean $0$. Of course $u_{it}$ is not estimable with $N = n \times T$ data points. A number of assumptions are usually made about the parameters, the errors and the exogeneity of the regressors, giving rise to a taxonomy of feasible models for panel data. The most common one is parameter homogeneity, which means that $\alpha_{it}=\alpha$ for all $i,t$ and $\beta_{it}=\beta$ for all $i,t$. The resulting model \begin{equation*} y_{it}=\alpha + \beta^\top x_{it} + u_{it} \end{equation*} is a standard linear model pooling all the data across $i$ and $t$. To model individual heterogeneity, one often assumes that the error term has two separate components, one of which is specific to the individual and doesn't change over time^[For the sake of exposition we are considering only the individual effects case here. There may also be time effects, which is a symmetric case, or both of them, so that the error has three components: $u_{it}=\mu_{i}+\lambda_{t}+\epsilon_{it}$.]. This is called the unobserved effects model: \begin{equation} (\#eq:errcomp) y_{it}=\alpha + \beta^\top x_{it} + \mu_i + \epsilon_{it} \end{equation} The appropriate estimation method for this model depends on the properties of the two error components. The idiosyncratic error $\epsilon_{it}$ is usually assumed well-behaved and independent of both the regressors $x_{it}$ and the individual error component $\mu_i$. The individual component may be in turn either independent of the regressors or correlated. If it is correlated, the ordinary least squares (OLS) estimator of $\beta$ would be inconsistent, so it is customary to treat the $\mu_i$ as a further set of $n$ parameters to be estimated, as if in the general model $\alpha_{it}=\alpha_{i}$ for all $t$. This is called the fixed effects (a.k.a. *within* or *least squares dummy variables*) model, usually estimated by OLS on transformed data, and gives consistent estimates for $\beta$. If the individual-specific component $\mu_i$ is uncorrelated with the regressors, a situation which is usually termed *random effects*, the overall error $u_{it}$ also is, so the OLS estimator is consistent. Nevertheless, the common error component over individuals induces correlation across the composite error terms, making OLS estimation inefficient, so one has to resort to some form of feasible generalized least squares (GLS) estimators. This is based on the estimation of the variance of the two error components, for which there are a number of different procedures available. If the individual component is missing altogether, pooled OLS is the most efficient estimator for $\beta$. This set of assumptions is usually labelled *pooling* model, although this actually refers to the errors' properties and the appropriate estimation method rather than the model itself. If one relaxes the usual hypotheses of well-behaved, white noise errors and allows for the idiosyncratic error $\epsilon_{it}$ to be arbitrarily heteroskedastic and serially correlated over time, a more general kind of feasible GLS is needed, called the *unrestricted* or *general* GLS. This specification can also be augmented with individual-specific error components possibly correlated with the regressors, in which case it is termed *fixed effects* GLS. Another way of estimating unobserved effects models through removing time-invariant individual components is by first-differencing the data: lagging the model and subtracting, the time-invariant components (the intercept and the individual error component) are eliminated, and the model \begin{equation*} \Delta y_{it}= \beta^\top \Delta x_{it} + \Delta u_{it} \end{equation*} (where $\Delta y_{it}=y_{it}-y_{i,t-1}$, $\Delta x_{it}=x_{it}-x_{i,t-1}$ and, from \@ref(eq:errcomp), $\Delta u_{it}=u_{it}-u_{i,t-1}=\Delta \epsilon_{it}$ for $t=2,...,T$) can be consistently estimated by pooled OLS. This is called the *first-difference* or FD estimator. Its relative efficiency, and so reasons for choosing it against other consistent alternatives, depends on the properties of the error term. The FD estimator is usually preferred if the errors $u_{it}$ are strongly persistent in time, because then the $\Delta u_{it}$ will tend to be serially uncorrelated. Lastly, the *between* model, which is computed on time (group) averages of the data, discards all the information due to intragroup variability but is consistent in some settings (e.g., non-stationarity) where the others are not, and is often preferred to estimate long-run relationships. Variable coefficients models relax the assumption that $\beta_{it}=\beta$ for all $i,t$. Fixed coefficients models allow the coefficients to vary along one dimension, like $\beta_{it}=\beta_i$ for all $t$. Random coefficients models instead assume that coefficients vary randomly around a common average, as $\beta_{it}=\beta+\eta_{i}$ for all $t$, where $\eta_{i}$ is a group-- (time--) specific effect with mean zero. The hypotheses on parameters and error terms (and hence the choice of the most appropriate estimator) are usually tested by means of: - *pooling* tests to check poolability, i.e., the hypothesis that the same coefficients apply across all individuals, - if the homogeneity assumption over the coefficients is established, the next step is to establish the presence of unobserved effects, comparing the null of spherical residuals with the alternative of group (time) specific effects in the error term, - the choice between fixed and random effects specifications is based on Hausman-type tests, comparing the two estimators under the null of no significant difference: if this is not rejected, the more efficient random effects estimator is chosen, - even after this step, departures of the error structure from sphericity can further affect inference, so that either screening tests or robust diagnostics are needed. Dynamic models and in general lack of strict exogeneity of the regressors, pose further problems to estimation which are usually dealt with in the generalized method of moments (GMM) framework. These were, in our opinion, the basic requirements of a panel data econometrics package for the `R` language and environment. Some, as often happens with `R`, were already fulfilled by packages developed for other branches of computational statistics, while others (like the fixed effects or the between estimators) were straightforward to compute after transforming the data, but in every case there were either language inconsistencies w.r.t. the standard econometric toolbox or subtleties to be dealt with (like, for example, appropriate computation of standard errors for the demeaned model, a common pitfall), so we felt there was need for an "all in one" econometrics-oriented package allowing to make specification searches, estimation and inference in a natural way. # Software approach{#software-approach} ## Data structure Panel data have a special structure: each row of the data corresponds to a specific individual and time period. In `plm` the `data` argument may be an ordinary `data.frame` but, in this case, an argument called `index` has to be added to indicate the structure of the data. This can be: - `NULL` (the default value), it is then assumed that the first two columns contain the individual and the time index and that observations are ordered by individual and by time period, - a character string, which should be the name of the individual index, - a character vector of length two containing the names of the individual and the time index, - an integer which is the number of individuals (only in case of a balanced panel with observations ordered by individual). The `pdata.frame` function is then called internally, which returns a `pdata.frame` which is a `data.frame` with an attribute called index. This attribute is a `data.frame` that contains the individual and the time indexes. It is also possible to use directly the `pdata.frame` function and then to use the `pdata.frame` in the estimation functions. ## Interface ### Estimation interface Package `plm` provides various functions for panel data estimation, among them: - `plm`: estimation of the basic panel models and instrumental variable panel models, *i.e.*, between and first-difference models and within and random effect models. Models are estimated internally using the `lm` function on transformed data, - `pvcm`: estimation of models with variable coefficients, - `pgmm`: estimation of generalized method of moments models, - `pggls`: estimation of general feasible generalized least squares models, - `pmg`: estimators for mean groups (MG), demeaned MG (DMG) and common correlated effects MG (CCEMG) for heterogeneous panel models, - `pcce`: estimators for common correlated effects mean groups (CCEMG) and pooled (CCEP) for panel data with common factors, - `pldv`: panel estimators for limited dependent variables. The interface of these functions is consistent with the `lm()` function. Namely, their first two arguments are `formula` and `data` (which should be a `data.frame` and is mandatory). Three additional arguments are common to these functions: - `index`: this argument enables the estimation functions to identify the structure of the data, *i.e.*, the individual and the time period for each observation, - `effect`: the kind of effects to include in the model, *i.e.*, individual effects, time effects or both^[Although in most models the individual and time effects cases are symmetric, there are exceptions: estimating the *first-difference* model on time effects is meaningless because cross-sections do not generally have a natural ordering, so trying `effect = "time"` stops with an error message as does `effect = "twoways"` which is not defined for first-difference models.], - `model`: the kind of model to be estimated, most of the time a model with fixed effects or a model with random effects. The results of these four functions are stored in an object which class has the same name of the function. They all inherit from class `panelmodel`. A `panelmodel` object contains: `coefficients`, `residuals`, `fitted.values`, `vcov`, `df.residual` and `call` and functions that extract these elements are provided. ### Testing interface The diagnostic testing interface provides both `formula` and `panelmodel` methods for most functions, with some exceptions. The user may thus choose whether to employ results stored in a previously estimated `panelmodel` object or to re-estimate it for the sake of testing. Although the first strategy is the most efficient one, diagnostic testing on panel models mostly employs OLS residuals from pooling model objects, whose estimation is computationally inexpensive. Therefore most examples in the following are based on `formula` methods, which are perhaps the cleanest for illustrative purposes. ## Computational approach to estimation The feasible GLS methods needed for efficient estimation of unobserved effects models have a simple closed-form solution: once the variance components have been estimated and hence the covariance matrix of errors $\hat{V}$, model parameters can be estimated as \begin{equation} (\#eq:naive) \hat{\beta}=(X^\top \hat{V}^{-1} X)^{-1} (X^\top \hat{V}^{-1} y) \end{equation} Nevertheless, in practice plain computation of $\hat{\beta}$ has long been an intractable problem even for moderate-sized data sets because of the need to invert the $N\times N$ $\hat{V}$ matrix. With the advances in computer power, this is no more so, and it is possible to program the "naive" estimator \@ref(eq:naive) in `R` with standard matrix algebra operators and have it working seamlessly for the standard "guinea pigs", e.g., the Grunfeld data. Estimation with a couple of thousands of data points also becomes feasible on a modern machine, although excruciatingly slow and definitely not suitable for everyday econometric practice. Memory limits would also be very near because of the storage needs related to the huge $\hat{V}$ matrix. An established solution exists for the random effects model which reduces the problem to an ordinary least squares computation. ### The (quasi--)demeaning framework The estimation methods for the basic models in panel data econometrics, the pooled OLS, random effects and fixed effects (or within) models, can all be described inside the OLS estimation framework. In fact, while pooled OLS simply pools data, the standard way of estimating fixed effects models with, say, group (time) effects entails transforming the data by subtracting the average over time (group) to every variable, which is usually termed *time-demeaning*. In the random effects case, the various feasible GLS estimators which have been put forth to tackle the issue of serial correlation induced by the group-invariant random effect have been proven to be equivalent (as far as estimation of $\beta$s is concerned) to OLS on *partially demeaned* data, where partial demeaning is defined as: \begin{equation} (\#eq:ldemmodel) y_{it} - \theta \bar{y}_i = ( X_{it} - \theta \bar{X}_{i} ) \beta + ( u_{it} - \theta \bar{u}_i ) \end{equation} where $\theta=1-[\sigma_u^2 / (\sigma_u^2 + T \sigma_e^2)]^{1/2}$, $\bar{y}$ and $\bar{X}$ denote time means of $y$ and $X$, and the disturbance $v_{it} - \theta \bar{v}_i$ is homoskedastic and serially uncorrelated. Thus the feasible RE estimate for $\beta$ may be obtained estimating $\hat{\theta}$ and running an OLS regression on the transformed data with `lm()`. The other estimators can be computed as special cases: for $\theta=1$ one gets the fixed effects estimator, for $\theta=0$ the pooled OLS one. Moreover, instrumental variable estimators of all these models may also be obtained using several calls to `lm()`. For this reason the three above estimators have been grouped inside the same function. On the output side, a number of diagnostics and a very general coefficients' covariance matrix estimator also benefits from this framework, as they can be readily calculated applying the standard OLS formulas to the demeaned data, which are contained inside `plm` objects. This will be the subject of subsection [inference in the panel model](#inference). ### The object-oriented approach to general GLS computations The covariance matrix of errors in general GLS models is too generic to fit the quasi-demeaning framework, so this method calls for a full-blown application of GLS as in \@ref(eq:naive). On the other hand, this estimator relies heavily on $n$--asymptotics, making it theoretically most suitable for situations which forbid it computationally: e.g., "short" micropanels with thousands of individuals observed over few time periods. `R` has general facilities for fast matrix computation based on object orientation: particular types of matrices (symmetric, sparse, dense etc.) are assigned the relevant class and the additional information on structure is used in the computations, sometimes with dramatic effects on performance (see @BATE:04) and packages `Matrix` (see @BATE:MAEC:2016) and `SparseM` (see @KOEN:NG:2016). Some optimized linear algebra routines are available in the `R` package `bdsmatrix` (see @THER:14) which exploit the particular block-diagonal and symmetric structure of $\hat{V}$ making it possible to implement a fast and reliable full-matrix solution to problems of any practically relevant size. The $\hat{V}$ matrix is constructed as an object of class `bdsmatrix`. The peculiar properties of this matrix class are used for efficiently storing the object in memory and then by ad-hoc versions of the `solve` and `crossprod` methods, dramatically reducing computing times and memory usage. The resulting matrix is then used "the naive way" as in \@ref(eq:naive) to compute $\hat{\beta}$, resulting in speed comparable to that of the demeaning solution. ## Inference in the panel model{#inference} General frameworks for restrictions and linear hypotheses testing are available in the `R` environment^[See packages `lmtest` (@HOTH:ZEIL:FARE:CUMM:MILL:MITC:2015) and `car` (@FOX:2016).]. These are based on the Wald test, constructed as $\hat{\beta}^\top \hat{V}^{-1} \hat{\beta}$, where $\hat{\beta}$ and $\hat{V}$ are consistent estimates of $\beta$ and $V(\beta)$, The Wald test may be used for zero-restriction (i.e., significance) testing and, more generally, for linear hypotheses in the form $(R \hat{\beta} - r)^\top [R \hat{V} R^\top ]^{-1} (R \hat{\beta} - r)$^[Moreover, `coeftest()` provides a compact way of looking at coefficient estimates and significance diagnostics.]. To be applicable, the test functions require extractor methods for coefficients' and covariance matrix estimates to be defined for the model object to be tested. Model objects in `plm` all have `coef()` and `vcov()` methods and are therefore compatible with the above functions. In the same framework, robust inference is accomplished substituting ("plugging in") a robust estimate of the coefficient covariance matrix into the Wald statistic formula. In the panel context, the estimator of choice is the White system estimator. This called for a flexible method for computing robust coefficient covariance matrices *à la White* for `plm` objects. A general White system estimator for panel data is: \begin{equation*} \hat{V}_R(\beta)=(X^\top X)^{-1} \sum_{i=1}^n{X_i^\top E_i X_i} (X^\top X)^{-1} \end{equation*} where $E_i$ is a function of the residuals $\hat{e}_{it}, \; t=1, \dots T$ chosen according to the relevant heteroskedasticity and correlation structure. Moreover, it turns out that the White covariance matrix calculated on the demeaned model's regressors and residuals (both part of `plm` objects) is a consistent estimator of the relevant model's parameters' covariance matrix, thus the method is readily applicable to models estimated by random or fixed effects, first difference or pooled OLS methods. Different pre-weighting schemes taken from package `sandwich` (see @ZEIL:04; @LUML:ZEIL:2015) are also implemented to improve small-sample performance. Robust estimators with any combination of covariance structures and weighting schemes can be passed on to the testing functions. # Managing data and formulae{#dataformula} The package is now illustrated by application to some well-known examples. It is loaded using ```{r echo=FALSE,results='hide'} options(prompt= "R> ", useFancyQuotes = FALSE, scipen = 999) library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` ```{r echo=TRUE, results='hide'} library("plm") ``` The four data sets used are `EmplUK` which was used by @AREL:BOND:91, the `Grunfeld` data [@KLEI:ZEIL:08] which is used in several econometric books, the `Produc` data used by @MUNN:90 and the `Wages` used by @CORN:RUPE:88. ```{r } data("EmplUK", package="plm") data("Produc", package="plm") data("Grunfeld", package="plm") data("Wages", package="plm") ``` ## Data structure As observed above, the current version of `plm` is capable of working with a regular `data.frame` without any further transformation, provided that the individual and time indexes are in the first two columns, as in all the example data sets but `Wages`. If this weren't the case, an `index` optional argument would have to be passed on to the estimating and testing functions. ```{r setdata1} head(Grunfeld) E <- pdata.frame(EmplUK, index=c("firm","year"), drop.index=TRUE, row.names=TRUE) head(E) head(attr(E, "index")) ``` Two further arguments are logical: `drop.index = TRUE` drops the indexes from the `data.frame` and `row.names = TRUE` computes "fancy" row names by pasting the individual and the time indexes. While extracting a series from a `pdata.frame`, a `pseries` is created, which is the original series with the index attribute. This object has specific methods, like `summary` and `as.matrix`. The former indicates the total variation of the variable and the shares of this variation due to the individual and the time dimensions. The latter gives the matrix representation of the series, with, by default, individuals as rows and times as columns. ```{r } summary(E$emp) head(as.matrix(E$emp)) ``` ## Data transformation Panel data estimation requires to apply different transformations to raw series. If $x$ is a series of length $nT$ (where $n$ is the number of individuals and $T$ is the number of time periods), the transformed series $\tilde{x}$ is obtained as $\tilde{x}=Mx$ where $M$ is a transformation matrix. Denoting $j$ a vector of one of length $T$ and $I_n$ the identity matrix of dimension $n$, we get: - the between transformation: $P=\frac{1}{T}I_n\otimes jj'$ returns a vector containing the individual means. The `Between` and `between` functions perform this operation, the first one returning a vector of length $nT$, the second one a vector of length $n$, - the within transformation: $Q=I_{nT}-P$ returns a vector containing the values in deviation from the individual means. The `Within` function performs this operation. - the first difference transformation $D=I_n \otimes d$ where $d=\left( \begin{array}{ccccccc} 1 & -1 & 0 & 0 & ... & 0 & 0 \\ 0 & 1 & -1 & 0 & ... & 0 & 0 \\ 0 & 0 & 1 & -1 & ... & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & 1 & -1 \\ \end{array} \right)$ is of dimension $(T-1,T)$. Note that `R`'s `diff()` and `lag()` functions don't compute correctly these transformations for panel data because they are unable to identify when there is a change in individual in the data. Therefore, specific methods for `pseries` objects have been written in order to handle correctly panel data. Note that compared to the `lag()` method for `ts` objects, the order of lags are indicated by a positive integer. Moreover, 0 is a relevant value and a vector argument may be provided: ```{r } head(lag(E$emp, 0:2)) ``` Further functions called `Between`, `between` and `Within` are also provided to compute the between and the within transformation. The `between` returns unique values, whereas `Between` duplicates the values and returns a vector which length is the number of observations. ```{r } head(diff(E$emp), 10) head(lag(E$emp, 2), 10) head(Within(E$emp)) head(between(E$emp), 4) head(Between(E$emp), 10) ``` ## Formulas In some circumstances, standard `formula`s are not very useful to describe a model, notably while using instrumental variable like estimators: to deal with these situations, we use the `Formula` package. The `Formula` package provides a class which enables to construct multi-part formula, each part being separated by a pipe sign (`|`). The two formulas below are identical: ```{r results='hide'} emp ~ wage + capital | lag(wage, 1) + capital emp ~ wage + capital | . -wage + lag(wage, 1) ``` In the second case, the `.` means the previous parts which describes the covariates and this part is "updated". This is particularly interesting when there are a few external instruments. # Model estimation{#modelestimation} ## Estimation of the basic models with plm Several models can be estimated with `plm` by filling the `model` argument: - the fixed effects model (`"within"`), the default, - the pooling model (`"pooling"`), - the first-difference model (`"fd"`), - the between model (`"between"`), - the error components model (`"random"`). The basic use of `plm` is to indicate the model formula, the data and the model to be estimated. For example, the fixed effects model and the random effects model are estimated using: ```{r fe_re} grun.fe <- plm(inv~value+capital, data = Grunfeld, model = "within") grun.re <- plm(inv~value+capital, data = Grunfeld, model = "random") ``` Methods to display a summary of the model estimation are available via `summary`. For example, for a `random` model, the `summary` method gives information about the variance of the components of the errors and some test statistics. Random effects of the estimated model can be extracted via `ranef`. ```{r summary_re} summary(grun.re) ranef(grun.re) ``` The fixed effects of a fixed effects model may be extracted easily using `fixef`. An argument `type` indicates how fixed effects should be computed: in levels by `type = "level"` (the default), in deviations from the overall mean by `type = "dmean"` or in deviations from the first individual by `type = "dfirst"`. ```{r } fixef(grun.fe, type = "dmean") ``` The `fixef` function returns an object of class `fixef`. A summary method is provided, which prints the effects (in deviation from the overall intercept), their standard errors and the test of equality to the overall intercept. ```{r } summary(fixef(grun.fe, type = "dmean")) ``` In case of a two-ways fixed effect model, argument `effect` is relevant in function `fixef` to extract specific effect fixed effects with possible values `"individual"` for individual fixed effects (default for two-ways fixed effect models), `"time"` for time fixed effects, and `"twoways"` for the sum of individual and time fixed effects. Example to extract the time fixed effects from a two-ways model: ```{r } grun.twfe <- plm(inv~value+capital, data=Grunfeld, model="within", effect="twoways") fixef(grun.twfe, effect = "time") ``` ## More advanced use of plm ### Random effects estimators As observed above, the random effect model is obtained as a linear estimation on quasi-demeaned data. The parameter of this transformation is obtained using preliminary estimations. Four estimators of this parameter are available, depending on the value of the argument `random.method`: - `"swar"`: from @SWAM:AROR:72, the default value, - `"walhus"`: from @WALL:HUSS:69, - `"amemiya"`: from @AMEM:71, - `"nerlove"`: from @NERLO:71. - `"ht"`: for Hausman-Taylor-type instrumental variable (IV) estimation, discussed later, see Section [Instrumental variable estimator](#instrumental-variable-est). For example, to use the `amemiya` estimator: ```{r } grun.amem <- plm(inv~value+capital, data=Grunfeld, model="random", random.method="amemiya") ``` The estimation of the variance of the error components are performed using the `ercomp` function, which has a `method` and an `effect` argument, and can be used by itself: ```{r } ercomp(inv~value+capital, data=Grunfeld, method = "amemiya", effect = "twoways") ``` ### Introducing time or two-ways effects The default behavior of `plm` is to introduce individual effects. Using the `effect` argument, one may also introduce: - time effects (`effect = "time"`), - individual and time effects (`effect = "twoways"`). For example, to estimate a two-ways effect model for the `Grunfeld` data: ```{r 2RE-amemiya} grun.tways <- plm(inv~value+capital, data = Grunfeld, effect = "twoways", model = "random", random.method = "amemiya") summary(grun.tways) ``` In the "effects" section of the printed summary of the result, the variance of the three elements of the error term and the three parameters used in the transformation are printed. ### Unbalanced panels Estimations by `plm` support unbalanced panel models. The following example is using data used by @HARR:RUBI:78 to estimate an hedonic housing prices function. It is reproduced in @BALT:CHAN:94, table 2 (and in @BALT:05, pp. 172/4; @BALT:13, pp. 195/7 tables 9.1/3). ```{r hedonic} data("Hedonic", package = "plm") Hed <- plm(mv~crim+zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+blacks+lstat, data = Hedonic, model = "random", index = "townid") summary(Hed) ``` Measures for the unbalancedness of a panel data set or the data used in estimated models are provided by function `punbalancedness`. It gives the measures $\gamma$ and $\nu$ from @AHRE:PINC:81 where for both 1 represents balanced data and the more unbalanced the data the lower the value. ```{r hedonic-punbal} punbalancedness(Hed) ``` ### Instrumental variable estimators{#instrumental-variable-est} All of the models presented above may be estimated using instrumental variables. The instruments are specified at the end of the formula after a `|` sign (pipe). The instrumental variables estimator used is indicated with the `inst.method` argument: - `"bvk"`, from @BALE:VARA:87, the default value, - `"baltagi"`, from @BALT:81, - `"am"`, from @AMEM:MACU:86, - `"bms"`, from @BREU:MIZO:SCHM:89. An illustration is in the following example from @BALT:05, p. 120; @BALT:13, p. 137; @BALT:21, p. 165, table 7.3 ("G2SLS"). ```{r G2SLS} data("Crime", package = "plm") cr <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random") summary(cr) ``` The Hausman-Taylor model (see @HAUS:TAYL:81) may be estimated with the `plm`^[Function `pht` is a deprecated way to estimate this type of model: `ht <- pht(lwage~wks+south+smsa+married+exp+I(exp^2)+ bluecol+ind+union+sex+black+ed | sex+black+bluecol+south+smsa+ind, data=Wages,index=595)`.] function by setting parameters `random.method = "ht"` and `inst.method = "baltagi"` like in the example below. The following replicates @BALT:05, pp. 129/30; @BALT:13, pp. 145/6, tables 7.4/5; @BALT:21, pp. 174/5 tables 7.5/6: ```{r hausman-taylor} ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, model = "random", random.method = "ht", inst.method = "baltagi") summary(ht) ``` ## Variable coefficients model The `pvcm` function enables the estimation of variable coefficients models. Time or individual effects are introduced if argument `effect` is fixed to `"time"` or `"individual"` (the default value). Coefficients are assumed to be fixed if `model="within"` or random if `model="random"`. In the first case, a separate OLS model is estimated for each individual (or time period). In the second case, Swamy's random coefficients model (see @SWAM:70) model is estimated. It is a generalized least squares model which uses the results of separate OLS models. Denoting $\hat{\beta}_i$ the vectors of coefficients obtained for each individual, we get: \begin{equation*} \hat{\beta}=\left(\sum_{i=1}^n \left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\right)\left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\hat{\beta}_i \end{equation*} where $\hat{\sigma}_i^2$ is the unbiased estimator of the variance of the errors for individual $i$ obtained from the preliminary estimation and: \begin{equation*} \hat{\Delta}=\frac{1}{n-1}\sum_{i=1}^n\left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right) \left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right)^\top -\frac{1}{n}\sum_{i=1}^n\hat{\sigma}_i^2(X_i^\top X_i)^{-1} \end{equation*} If this matrix is not positive-definite, the second term is dropped. With the `Grunfeld` data, we get: ```{r grunfeld.within} grun.varw <- pvcm(inv~value+capital, data=Grunfeld, model="within") grun.varr <- pvcm(inv~value+capital, data=Grunfeld, model="random") summary(grun.varr) ``` A $\chi^2$ test of homogeneous parameters of the random coefficients model is printed in the last line of the summary output. The unconditioned best linear unbiased single estimations for the coefficient of the single panel-effect specific regressions associated with the random coefficients model can be extracted from the returned object, for the example in `grun.varr$single.coefs`, while single variance-covariance matrices and standard errors are available in `grun.varr$single.vcov` and `grunvarr$single.std.error`, respectively. ## Generalized method of moments estimator The generalized method of moments is mainly used in panel data econometrics to estimate dynamic models [@AREL:BOND:91; @HOLT:NEWE:ROSE:88]. \begin{equation*} y_{it}=\rho y_{it-1}+\beta^\top x_{it}+\mu_i+\epsilon_{it} \end{equation*} The model is first differenced to get rid of the individual effect: \begin{equation*} \Delta y_{it}=\rho \Delta y_{it-1}+\beta^\top \Delta x_{it}+\Delta \epsilon_{it} \end{equation*} Least squares are inconsistent because $\Delta \epsilon_{it}$ is correlated with $\Delta y_{it-1}$. $y_{it-2}$ is a valid, but weak instrument (see @ANDE:HSIA:81). The GMM estimator uses the fact that the number of valid instruments is growing with $t$: - $t=3$: $y_1$, - $t=4$: $y_1,y_2$, - $t=5$: $y_1,y_2,y_3$. For individual $i$, the matrix of instruments is then: \begin{equation*} W_i=\left( \begin{array}{ccccccccccccc} y_1 & 0 & 0 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i3} \\ 0 & y_1 & y_2 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i4} \\ 0 & 0 & 0 & y_1 & y_2 & y_3 & ... & 0 & 0 & 0 & 0 & x_{i5} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & ... & ... & y_1 & y_2 & ... & y_{t-2} & x_{iT-2} &\\ \end{array} \right) \end{equation*} The moment conditions are: $\sum_{i=1}^n W_i^\top e_i(\beta)$ where $e_i(\beta)$ is the vector of residuals for individual $i$. The GMM estimator minimizes: \begin{equation*} \left(\sum_{i=1}^n e_i(\beta)^\top W_i\right) A \left(\sum_{i=1}^n W_i^\top e_i(\beta)\right) \end{equation*} where $A$ is the weighting matrix of the moments. One-step estimators are computed using a known weighting matrix. For the model in first differences, one uses: \begin{equation*} A^{(1)}=\left(\sum_{i=1}^n W_i^\top H^{(1)}W_i\right)^{-1} \end{equation*} with: \begin{equation*} H^{(1)}=d^\top d=\left( \begin{array}{ccccc} 2 & -1 & 0 & ... & 0\\ -1 & 2 & -1 & ... & 0\\ 0 & -1 & 2 & ... & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & 0 & -1 & 2\\ \end{array} \right) \end{equation*} Two-steps estimators are obtained using $H^{(2)}_i=\sum_{i=1}^n e^{(1)}_i e^{(1)\top }_i$ where $e_i^{(1)}$ are the residuals of the one step estimate. @BLUN:BOND:98 show that with weak hypothesis on the data generating process, supplementary moment conditions exist for the equation in level: $$ y_{it} = \gamma y_{it-1}+\mu_i+\eta_{it} $$ More precisely, they show that $\Delta y_{it-2}=y_{it-2}-y_{it-3}$ is a valid instrument. The estimator is obtained using the residual vector in difference and in level: $$ e^+_i=(\Delta e_i, e_i) $$ and the matrix of augmented moments: $$ Z_i^+=\left( \begin{array}{ccccc} Z_i & 0 & 0 & ... & 0 \\ 0 & \Delta y_{i2} & 0 & ... & 0 \\ 0 & 0 & \Delta y_{i3} & ... & 0 \\ 0 & 0 & 0 & ... & \Delta y_{iT-1} \end{array} \right) $$ The moment conditions are then \begin{eqnarray*} \left(\sum_{i=1}^n Z_i^{+\top} \left(\begin{array}{c}\bar{e}_i(\beta)\\ e_i(\beta)\end{array}\right)\right)^\top = \left(\sum_{i=1}^n y_{i1} \bar{e}_{i3},\sum_{i=1}^n y_{i1}\bar{e}_{i4},\sum_{i=1}^n y_{i2}\bar{e}_{i4}, ..., \right.\\ \left. \sum_{i=1}^n y_{i1} \bar{e}_{iT}, \sum_{i=1}^n y_{i2} \bar{e}_{iT}, ...,\sum_{i=1}^n y_{iT-2} \bar{e}_{iT}, \sum_{i=1}^n \sum_{t=3}^T x_{it} \bar{e}_{it}\right.\\ \left.\sum_{i=1}^n e_{i3} \Delta y_{i2}, \sum_{i=1}^n e_{i4} \Delta y_{i3}, ... , \sum_{i=1}^n e_{iT} \Delta y_{iT-1} \right)^\top \end{eqnarray*} The GMM estimator is provided by the `pgmm` function. By using a multi-part formula, the variables of the model and the lag structure are described. In a GMM estimation, there are "normal instruments" and "GMM instruments". GMM instruments are indicated in the second part of the formula. By default, all the variables of the model that are not used as GMM instruments are used as normal instruments, with the same lag structure; "normal" instruments may also be indicated in the third part of the formula. The `effect` argument is either `"individual"` or `"twoways"` (the default). In the first case, the model is the model is estimated in first differences to get rid of the individuals effects. In the last case, the model is estimated in first differences and time dummies are included. The `model` argument specifies whether a one-step or a two-steps model is requested (`"onestep"` or `"twosteps"`). The following example is from @AREL:BOND:91, table 4, column b. Employment is explained by past values of employment (two lags), current and first lag of wages and output and current value of capital. ```{r gmm} emp.gmm <- pgmm(log(emp)~lag(log(emp), 1:2)+lag(log(wage), 0:1)+log(capital)+ lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") summary(emp.gmm, robust = FALSE) ``` The following example is from @BLUN:BOND:98. The "sys" estimator is obtained using `transformation = "ld"` for level and difference. The `robust` argument of the `summary` method enables to use the robust covariance matrix, in case of a two-steps model with the small-sample correction proposed by @WIND:05. For all pgmm models, `robust = TRUE` is the default (but set in this example explicitly). ```{r gmm2} z2 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) + lag(log(capital), 0:1) | lag(log(emp), 2:99) + lag(log(wage), 2:99) + lag(log(capital), 2:99), data = EmplUK, effect = "twoways", model = "onestep", transformation = "ld") summary(z2, robust = TRUE) ``` ## General FGLS models General FGLS estimators are based on a two-step estimation process: first an OLS model is estimated, then its residuals $\hat{u}_{it}$ are used to estimate an error covariance matrix more general than the random effects one for use in a feasible-GLS analysis. Formally, the estimated error covariance matrix is $\hat{V}=I_n \otimes \hat{\Omega}$, with $$\hat{\Omega}=\sum_{i=1}^n \frac{\hat{u}_{it} \hat{u}_{it}^\top }{n} $$ (see @WOOL:02 10.4.3 and 10.5.5). This framework allows the error covariance structure inside every group (if `effect = "individual"`) of observations to be fully unrestricted and is therefore robust against any type of intragroup heteroskedasticity and serial correlation. This structure, by converse, is assumed identical across groups and thus general FGLS is inefficient under groupwise heteroskedasticity. Cross-sectional correlation is excluded a priori. Moreover, the number of variance parameters to be estimated with $N=n\times T$ data points is $T(T+1)/2$, which makes these estimators particularly suited for situations where $n>>T$, as e.g., in labour or household income surveys, while problematic for "long" panels, where $\hat{V}$ tends to become singular and standard errors therefore become biased downwards. In a pooled time series context (`effect = "time"`), symmetrically, this estimator is able to account for arbitrary cross-sectional correlation, provided that the latter is time-invariant (see @GREE:03 13.9.1--2, pp. 321--2). In this case serial correlation has to be assumed away and the estimator is consistent with respect to the time dimension, keeping $n$ fixed. The function `pggls` estimates general FGLS models, with either fixed or "random" effects^[The "random effect" is better termed "general FGLS" model, as in fact it does not have a proper random effects structure, but we keep this terminology for general language consistency.]. The "random effect" general FGLS is estimated by: ```{r pggls} zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="pooling") summary(zz) ``` The fixed effects `pggls` (see @WOOL:02, p. 276) is based on the estimation of a within model in the first step; the rest follows as above. It is estimated by: ```{r } zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="within") ``` The `pggls` function is similar to `plm` in many respects. An exception is that the estimate of the group covariance matrix of errors (`zz$sigma`, a matrix, not shown) is reported in the model objects instead of the usual estimated variances of the two error components. # Tests{#tests} As sketched in Section [linear panel model](#linear-panel-model), specification testing in panel models involves essentially testing for poolability, for individual or time unobserved effects and for correlation between these latter and the regressors (Hausman-type tests). As for the other usual diagnostic checks, we provide a suite of serial correlation tests, while not touching on the issue of heteroskedasticity testing. Instead, we provide heteroskedasticity-robust covariance estimators, to be described in subsection [robust covariance matrix estimation](#robust). ## Tests of poolability `pooltest` tests the hypothesis that the same coefficients apply to each individual. It is a standard F test, based on the comparison of a model obtained for the full sample and a model based on the estimation of an equation for each individual. The first argument of `pooltest` is a `plm` object. The second argument is a `pvcm` object obtained with `model="within"`. If the first argument is a pooling model, the test applies to all the coefficients (including the intercepts), if it is a within model, different intercepts are assumed. To test the hypothesis that all the coefficients in the `Grunfeld` example, excluding the intercepts, are equal, we use : ```{r } znp <- pvcm(inv ~ value + capital, data = Grunfeld, model = "within") zplm <- plm(inv ~ value + capital, data = Grunfeld, model = "within") pooltest(zplm, znp) ``` The same test can be computed using a formula as first argument of the `pooltest` function: ```{r results='hide'} pooltest(inv ~ value + capital, data = Grunfeld, model = "within") ``` ## Tests for individual and time effects `plmtest` implements Lagrange multiplier tests of individual or/and time effects based on the results of the pooling model. Its main argument is a `plm` object (the result of a pooling model) or a formula. Two additional arguments can be added to indicate the kind of test to be computed. The argument `type` is one of: - `"honda"`: @HOND:85, the default value, - `"bp"`: @BREU:PAGA:80, - `"kw"`: @KING:WU:97^[NB: Oneway King-Wu (`"kw"`) statistics (`"individual"` and `"time"`) coincide with the respective Honda statistics (`"honda"`); however, the twoway statistics of `"kw"` and `"honda"` differ.], - `"ghm"`: @GOUR:HOLL:MONF:82. The effects tested are indicated with the `effect` argument (one of `"individual"`, `"time"`, or `"twoways"`). The test statistics implemented are also suitable for unbalanced panels.^[The `"bp"` test for unbalanced panels was derived in @BALT:LI:90, the `"kw"` test for unbalanced panels in @BALT:CHAN:LI:98. The `"ghm"` test and the `"kw"` test were extended to two--way effects in @BALT:CHAN:LI:92. For a concise overview of all these statistics see @BALT:13 Sec. 4.2, pp. 68--76 (for balanced panels) and Sec. 9.5, pp. 200--203 (for unbalanced panels) or @BALT:21, Sec. 4.2, pp. 81-84 (balanced), Sec. 9.6, pp. 243-246 (unbalanced).] To test the presence of individual and time effects in the `Grunfeld` example, using the @GOUR:HOLL:MONF:82 test, we use: ```{r } g <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") plmtest(g, effect="twoways", type="ghm") ``` or ```{r results='hide'} plmtest(inv~value+capital, data=Grunfeld, effect="twoways", type="ghm") ``` `pFtest` computes F tests of effects based on the comparison of the within and the pooling model. Its main arguments are either two `plm` objects (a pooling and a within model) or a formula. ```{r } gw <- plm(inv ~ value + capital, data=Grunfeld, effect="twoways", model="within") gp <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") pFtest(gw, gp) ``` ```{r results='hide'} pFtest(inv~value+capital, data=Grunfeld, effect="twoways") ``` ## Hausman test `phtest` computes the Hausman test (at times also called Durbin--Wu--Hausman test) which is based on the comparison of two sets of estimates (see @HAUS:78). Its main arguments are two `panelmodel` objects or a formula. A classical application of the Hausman test for panel data is to compare the fixed and the random effects models: ```{r } gw <- plm(inv ~ value + capital, data = Grunfeld, model="within") gr <- plm(inv ~ value + capital, data = Grunfeld, model="random") phtest(gw, gr) ``` The command also supports the auxiliary-regression-based version as described in, e.g., @WOOL:10 Sec.10.7.3 by using the formula interface and setting argument `test = "aux"`. This auxiliary-regression-based version can be robustified by specifying a robust covariance estimator as a function through the argument `vcov`: ```{r } phtest(inv ~ value + capital, data = Grunfeld, method = "aux", vcov = vcovHC) ``` ## Tests of serial correlation{#serialcor} A model with individual effects has composite errors that are serially correlated by definition. The presence of the time-invariant error component^[Here we treat fixed and random effects alike, as components of the error term, according with the modern approach in econometrics (see @WOOL:02, @WOOL:10).] gives rise to serial correlation which does not die out over time, thus standard tests applied on pooled data always end up rejecting the null of spherical residuals^[Neglecting time effects may also lead to serial correlation in residuals (as observed in @WOOL:02 10.4.1).]. There may also be serial correlation of the "usual" kind in the idiosyncratic error terms, e.g., as an AR(1) process. By "testing for serial correlation" we mean testing for this latter kind of dependence. For these reasons, the subjects of testing for individual error components and for serially correlated idiosyncratic errors are closely related. In particular, simple (*marginal*) tests for one direction of departure from the hypothesis of spherical errors usually have power against the other one: in case it is present, they are substantially biased towards rejection. *Joint* tests are correctly sized and have power against both directions, but usually do not give any information about which one actually caused rejection. *Conditional* tests for serial correlation that take into account the error components are correctly sized under presence of both departures from sphericity and have power only against the alternative of interest. While most powerful if correctly specified, the latter, based on the likelihood framework, are crucially dependent on normality and homoskedasticity of the errors. In `plm` we provide a number of joint, marginal and conditional ML-based tests, plus some semiparametric alternatives which are robust vs. heteroskedasticity and free from distributional assumptions. ### Unobserved effects test The unobserved effects test *à la Wooldridge* (see @WOOL:02 10.4.4), is a semiparametric test for the null hypothesis that $\sigma^2_{\mu}=0$, i.e. that there are no unobserved effects in the residuals. Given that under the null the covariance matrix of the residuals for each individual is diagonal, the test statistic is based on the average of elements in the upper (or lower) triangle of its estimate, diagonal excluded: $n^{-1/2} \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is}$ (where $\hat{u}$ are the pooled OLS residuals), which must be "statistically close" to zero under the null, scaled by its standard deviation: $$W=\frac{ \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} }{ [{ \sum_{i=1}^n ( \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} } )^2 ]^{1/2} }$$ This test is ($n$-) asymptotically distributed as a standard normal regardless of the distribution of the errors. It does also not rely on homoskedasticity. It has power both against the standard random effects specification, where the unobserved effects are constant within every group, as well as against any kind of serial correlation. As such, it "nests" both random effects and serial correlation tests, trading some power against more specific alternatives in exchange for robustness. While not rejecting the null favours the use of pooled OLS, rejection may follow from serial correlation of different kinds, and in particular, quoting @WOOL:02, "should not be interpreted as implying that the random effects error structure *must* be true". Below, the test is applied to the data and model in @MUNN:90: ```{r wtest} pwtest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ``` ### Locally robust tests for serial correlation or random effects The presence of random effects may affect tests for residual serial correlation, and the opposite. One solution is to use a joint test, which has power against both alternatives. A joint LM test for random effects *and* serial correlation under normality and homoskedasticity of the idiosyncratic errors has been derived by @BALT:LI:91 and @BALT:LI:95 and is implemented as an option in `pbsytest`: ```{r pbsytestJoint} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="j") ``` Rejection of the joint test, though, gives no information on the direction of the departure from the null hypothesis, i.e.: is rejection due to the presence of serial correlation, of random effects or of both? @BERA:SOSA:YOON:01 (hereafter BSY) derive locally robust tests both for individual random effects and for first-order serial correlation in residuals as "corrected" versions of the standard LM test (see `plmtest`). While still dependent on normality and homoskedasticity, these are robust to *local* departures from the hypotheses of, respectively, no serial correlation or no random effects. The authors observe that, although suboptimal, these tests may help detecting the right direction of the departure from the null, thus complementing the use of joint tests. Moreover, being based on pooled OLS residuals, the BSY tests are computationally far less demanding than likelihood-based conditional tests. On the other hand, the statistical properties of these "locally corrected" tests are inferior to those of the non-corrected counterparts when the latter are correctly specified. If there is no serial correlation, then the optimal test for random effects is the likelihood-based LM test of Breusch and Godfrey (with refinements by Honda, see `plmtest`), while if there are no random effects the optimal test for serial correlation is, again, Breusch-Godfrey's test^[$LM_3$ in @BALT:LI:95.]. If the presence of a random effect is taken for granted, then the optimal test for serial correlation is the likelihood-based conditional LM test of @BALT:LI:95 (see `pbltest`). The serial correlation version is the default: ```{r pbsytestAR} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ``` The BSY test for random effects is implemented in the one-sided version^[Corresponding to $RSO^*_{\mu}$ in the original paper.], which takes heed that the variance of the random effect must be non-negative: ```{r pbsytestRE} pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="re") ``` ### Conditional LM test for AR(1) or MA(1) errors under random effects @BALT:LI:91 and @BALT:LI:95 derive a Lagrange multiplier test for serial correlation in the idiosyncratic component of the errors under (normal, heteroskedastic) random effects. Under the null of serially uncorrelated errors, the test turns out to be identical for both the alternative of AR(1) and MA(1) processes. One- and two-sided versions are provided, the one-sided having power against positive serial correlation only. The two-sided is the default, while for the other one must specify the `alternative` option to `"onesided"`: ```{r pbltest} pbltest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, alternative="onesided") ``` As usual, the LM test statistic is based on residuals from the maximum likelihood estimate of the restricted model (random effects with serially uncorrelated errors). In this case, though, the restricted model cannot be estimated by OLS anymore, therefore the testing function depends on `lme()` in the `nlme` package for estimation of a random effects model by maximum likelihood. For this reason, the test is applicable only to balanced panels. No test has been implemented to date for the symmetric hypothesis of no random effects in a model with errors following an AR(1) process, but an asymptotically equivalent likelihood ratio test is available in the `nlme` package (see Section [plm versus nlme and lme4](#nlme)). ### General serial correlation tests A general testing procedure for serial correlation in fixed effects (FE), random effects (RE) and pooled-OLS panel models alike can be based on considerations in @WOOL:02, 10.7.2. Recall that `plm` model objects are the result of OLS estimation performed on "demeaned" data, where, in the case of individual effects (else symmetric), this means time-demeaning for the FE (`within`) model, quasi-time-demeaning for the RE (`random`) model and original data, with no demeaning at all, for the pooled OLS (`pooling`) model (see Section [software approach](#software-approach)). For the random effects model, @WOOL:02 observes that under the null of homoskedasticity and no serial correlation in the idiosyncratic errors, the residuals from the quasi-demeaned regression must be spherical as well. Else, as the individual effects are wiped out in the demeaning, any remaining serial correlation must be due to the idiosyncratic component. Hence, a simple way of testing for serial correlation is to apply a standard serial correlation test to the quasi-demeaned model. The same applies in a pooled model, w.r.t. the original data. The FE case needs some qualification. It is well-known that if the original model's errors are uncorrelated then FE residuals are negatively serially correlated, with $cor(\hat{u}_{it}, \hat{u}_{is})=-1/(T-1)$ for each $t,s$ (see @WOOL:02 10.5.4). This correlation clearly dies out as T increases, so this kind of AR test is applicable to `within` model objects only for T "sufficiently large"^[Baltagi and Li derive a basically analogous T-asymptotic test for first-order serial correlation in a FE panel model as a Breusch-Godfrey LM test on within residuals (see @BALT:LI:95 par. 2.3 and formula 12). They also observe that the test on within residuals can be used for testing on the RE model, as "the within transformation [time-demeaning, in our terminology] wipes out the individual effects, whether fixed or random". Generalizing the Durbin-Watson test to FE models by applying it to fixed effects residuals is documented in @BHAR:FRAN:NARE:82, a (modified) version for unbalanced and/or non-consecutive panels is implemented in `pbnftest` as is Baltagi-Wu's LBI statistic (for both see @BALT:WU:99).]. On the converse, in short panels the test gets severely biased towards rejection (or, as the induced correlation is negative, towards acceptance in the case of the one-sided DW test with `alternative="greater"`). See below for a serial correlation test applicable to "short" FE panel models. `plm` objects retain the "demeaned" data, so the procedure is straightforward for them. The wrapper functions `pbgtest` and `pdwtest` re-estimate the relevant quasi-demeaned model by OLS and apply, respectively, standard Breusch-Godfrey and Durbin-Watson tests from package `lmtest`: ```{r generalAR} pbgtest(grun.fe, order = 2) ``` The tests share the features of their OLS counterparts, in particular the `pbgtest` allows testing for higher-order serial correlation, which might turn useful, e.g., on quarterly data. Analogously, from the point of view of software, as the functions are simple wrappers towards `bgtest` and `dwtest`, all arguments from the latter two apply and may be passed on through the ellipsis (the `...` argument). ### Wooldridge's test for serial correlation in "short" FE panels For the reasons reported above, under the null of no serial correlation in the errors, the residuals of a FE model must be negatively serially correlated, with $cor(\hat{\epsilon}_{it}, \hat{\epsilon}_{is})=-1/(T-1)$ for each $t,s$. Wooldridge suggests basing a test for this null hypothesis on a pooled regression of FE residuals on themselves, lagged one period: $$\hat{\epsilon}_{i,t}=\alpha + \delta \hat{\epsilon}_{i,t-1} + \eta_{i,t}$$ Rejecting the restriction $\delta = -1/(T-1)$ makes us conclude against the original null of no serial correlation. The building blocks available in `plm` make it easy to construct a function carrying out this procedure: first the FE model is estimated and the residuals retrieved, then they are lagged and a `pooling` AR(1) model is estimated. The test statistic is obtained by applying the above restriction on $\delta$ and supplying a heteroskedasticity- and autocorrelation-consistent covariance matrix (`vcovHC` with the appropriate options, in particular `method="arellano"`)^[see subsection [robust covariance matrix estimation](#robust).]. ```{r pwartest} pwartest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ``` The test is applicable to any FE panel model, and in particular to "short" panels with small $T$ and large $n$. ### Wooldridge's first-difference-based test In the context of the first difference model, @WOOL:02, 10.6.3 proposes a serial correlation test that can also be seen as a specification test to choose the most efficient estimator between fixed effects (`within`) and first difference (`fd`). The starting point is the observation that if the idiosyncratic errors of the original model $u_{it}$ are uncorrelated, the errors of the (first) differenced model^[Here, $e_{it}$ for notational simplicity (and as in Wooldridge): equivalent to $\Delta \epsilon_{it}$ in the general notation of the paper.] $e_{it} \equiv u_{it}-u_{i,t-1}$ will be correlated, with $cor(e_{it}, e_{i,t-1})=-0.5$, while any time-invariant effect, "fixed" or "random", is wiped out in the differencing. So a serial correlation test for models with individual effects of any kind can be based on estimating the model $$\hat{u}_{i,t}= \delta \hat{u}_{i,t-1} + \eta_{i,t}$$ and testing the restriction $\delta = -0.5$, corresponding to the null of no serial correlation. @DRUK:03 provides Monte Carlo evidence of the good empirical properties of the test. On the other extreme (see @WOOL:02 10.6.1), if the differenced errors $e_{it}$ are uncorrelated, as by definition $u_{it} = u_{i,t-1} + e_{it}$, then $u_{it}$ is a random walk. In this latter case, the most efficient estimator is the first difference (`fd`) one; in the former case, it is the fixed effects one (`within`). The function `pwfdtest` allows testing either hypothesis: the default behaviour `h0="fd"` is to test for serial correlation in *first-differenced* errors: ```{r pwfdtest1} pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ``` while specifying `h0="fe"` the null hypothesis becomes no serial correlation in *original* errors, which is similar to the `pwartest`. ```{r pwfdtest2} pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK, h0="fe") ``` Not rejecting one of the two is evidence in favour of using the estimator corresponding to `h0`. Should the truth lie in the middle (both rejected), whichever estimator is chosen will have serially correlated errors: therefore it will be advisable to use the autocorrelation-robust covariance estimators from the subsection [robust covariance matrix estimation](#robust) in inference. ## Tests for cross-sectional dependence Next to the more familiar issue of serial correlation, over the last years a growing body of literature has been dealing with cross-sectional dependence (henceforth: XSD) in panels, which can arise, e.g., if individuals respond to common shocks (as in the literature on *factor models*) or if spatial diffusion processes are present, relating individuals in a way depending on a measure of distance (*spatial models*). The subject is huge, and here we touch only some general aspects of misspecification testing and valid inference. If XSD is present, the consequence is, at a minimum, inefficiency of the usual estimators and invalid inference when using the standard covariance matrix^[This is the case, e.g., if in an unobserved effects model when XSD is due to an unobservable factor structure, with factors that are uncorrelated with the regressors. In this case the within or random estimators are still consistent, although inefficient (see @DEHO:SARA:06).]. The plan is to have in `plm` both misspecification tests to detect XSD and robust covariance matrices to perform valid inference in its presence, like in the serial dependence case. For now, though, only misspecification tests are included. ### CD and LM-type tests for global cross-sectional dependence The function `pcdtest` implements a family of XSD tests which can be applied in different settings, ranging from those where $T$ grows large with $n$ fixed to "short" panels with a big $n$ dimension and a few time periods. All are based on (transformations of--) the product-moment correlation coefficient of a model's residuals, defined as $$ \hat{\rho}_{ij}=\frac{\sum_{t=1}^T \hat{u}_{it} \hat{u}_{jt}}{(\sum_{t=1}^T \hat{u}^2_{it})^{1/2} (\sum_{t=1}^T \hat{u}^2_{jt})^{1/2} } $$ i.e., as averages over the time dimension of pairwise correlation coefficients for each pair of cross-sectional units. The Breusch-Pagan [@BREU:PAGA:80] LM test, based on the squares of $\rho_{ij}$, is valid for $T \rightarrow \infty$ with $n$ fixed; defined as $$LM=\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2$$ where in the case of an unbalanced panel only pairwise complete observations are considered, and $T_{ij}=min(T_i,T_j)$ with $T_i$ being the number of observations for individual $i$; else, if the panel is balanced, $T_{ij}=T$ for each $i,j$. The test is distributed as $\chi^2_{n(n-1)/2}$. It is inappropriate whenever the $n$ dimension is "large". A scaled version, applicable also if $T \rightarrow \infty$ and *then* $n \rightarrow \infty$ (as in some pooled time series contexts), is defined as $$SCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1 )$$ and distributed as a standard normal (see @PESA:04). A bias-corrected scaled version, $BCSCLM$, for the *fixed effect model with individual effects* only is also available which is simply the $SCLM$ with a term correcting for the bias (@BALT:FENG:KAO:12)^[The unbalanced version of this statistic uses max(Tij) for T in the bias-correction term.]. This statistic is also asymptotically distributed as standard normal. $$BCSCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1)-\frac{n}{2(T-1)}$$ Pesaran's (@PESA:04, @PESA:15) $CD$ test $$CD=\sqrt{\frac{2}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \sqrt{T_{ij}} \hat{\rho}_{ij} )$$ based on $\rho_{ij}$ without squaring (also distributed as a standard normal) is appropriate both in $n$-- and in $T$--asymptotic settings. It has remarkable properties in samples of any practically relevant size and is robust to a variety of settings. The only big drawback is that the test loses power against the alternative of cross-sectional dependence if the latter is due to a factor structure with factor loadings averaging zero, that is, some units react positively to common shocks, others negatively. The default version of the test is `"cd"` yielding Pesaran's $CD$ test. These tests are originally meant to use the residuals of separate estimation of one time-series regression for each cross-sectional unit, so this is the default behaviour of `pcdtest`. ```{r pcdtest1} pcdtest(inv~value+capital, data=Grunfeld) ``` If a different model specification (`within`, `random`, ...) is assumed consistent, one can resort to its residuals for testing^[This is also the only solution when the time dimension's length is insufficient for estimating the heterogeneous model.] by specifying the relevant `model` type. The main argument of this function may be either a model of class `panelmodel` or a `formula` and a `data.frame`; in the second case, unless `model` is set to `NULL`, all usual parameters relative to the estimation of a `plm` model may be passed on. The test is compatible with any consistent `panelmodel` for the data at hand, with any specification of `effect`. E.g., specifying `effect = "time"` or `effect = "twoways"` allows to test for residual cross-sectional dependence after the introduction of time fixed effects to account for common shocks. ```{r pcdtest2} pcdtest(inv~value+capital, data=Grunfeld, model="within") ``` If the time dimension is insufficient and `model=NULL`, the function defaults to estimation of a `within` model and issues a warning. ### CD(p) test for local cross-sectional dependence A *local* variant of the $CD$ test, called $CD(p)$ test [@PESA:04], takes into account an appropriate subset of *neighbouring* cross-sectional units to check the null of no XSD against the alternative of *local* XSD, i.e. dependence between neighbours only. To do so, the pairs of neighbouring units are selected by means of a binary proximity matrix like those used in spatial models. In the original paper, a regular ordering of observations is assumed, so that the $m$-th cross-sectional observation is a neighbour to the $(m-1)$-th and to the $(m+1)$-th. Extending the $CD(p)$ test to irregular lattices, we employ the binary proximity matrix as a selector for discarding the correlation coefficients relative to pairs of observations that are not neighbours in computing the $CD$ statistic. The test is then defined as $$CD=\sqrt{\frac{1}{\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} w(p)_{ij}}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} [w(p)]_{ij} \sqrt{T_{ij}}\hat{\rho}_{ij} )$$ where $[w(p)]_{ij}$ is the $(i,j)$-th element of the $p$-th order proximity matrix, so that if $h,k$ are not neighbours, $[w(p)]_{hk}=0$ and $\hat{\rho}_{hk}$ gets "killed"; this is easily seen to reduce to formula (14) in Pesaran [@PESA:04] for the special case considered in that paper. The same can be applied to the $LM$, $SCLM$, and $BCSCLM$ tests. Therefore, the *local* version of either test can be computed supplying an $n \times n$ matrix (of any kind coercible to `logical`), providing information on whether any pair of observations are neighbours or not, to the `w` argument. If `w` is supplied, only neighbouring pairs will be used in computing the test; else, `w` will default to `NULL` and all observations will be used. The matrix needs not really be binary, so commonly used "row-standardized" matrices can be employed as well: it is enough that neighbouring pairs correspond to nonzero elements in `w` ^[The very comprehensive package `spdep` for spatial dependence analysis (see @BIVA:08) contains features for creating, lagging and manipulating *neighbour list* objects of class `nb`, that can be readily converted to and from proximity matrices by means of the `nb2mat` function. Higher orders of the $CD(p)$ test can be obtained by lagging the corresponding `nb`s through `nblag`.]. ## Panel unit root tests ### Overview of functions for panel unit root testing Below, first an overview is provided which tests are implemented per functions. A theoretical treatment is given for a few of those tests later on. The package `plm` offers several panel unit root tests contained in three functions: - `purtest` (Levin-Lin-Chu test, IPS test, several Fisher-type tests, Hadri's test), - `cipstest` (cross-sectionally augmented IPS test), and - `phansitest` (Simes' test). While `purtest` implements various tests which can be selected via its `test` argument, `cipstest` and `phansitest` are functions for a specific test each. Function `purtest` offers the following tests by setting argument `test` to: - `"levinlin"` (default), for the Levin-Lin-Chu test (@LEVIN:LIN:CHU:02), see below for a theoretical exposition ([Levin-Lin-Chu test](#levinlin))), - `"ips"`, for Im-Pesaran-Shin (IPS) test by @IM:PESAR:SHIN:03, see below for a theoretical exposition ([Im-Pesaran-Shin test](#ips))), - `"madwu"`, is the inverse $\chi^2$ test by @MADDA:WU:99, also called P test by @CHOI:01, - `"Pm"`, is the modified P test proposed by @CHOI:01 for large N, - `"invnormal"`, is the inverse normal test (@CHOI:01), - `"logit"`, is the logit test (@CHOI:01), - `"hadri"`, for Hadri's test (@HADR:00). The tests in `purtest` are often called first generation panel unit root tests as they do assume absence of cross-sectional correlation; all these, except Hadri's test, are based on the estimation of augmented Dickey-Fuller (ADF) regressions for each time series. A statistic is then computed using the t-statistics associated with the lagged variable. I a different manner, the Hadri residual-based LM statistic is the cross-sectional average of individual KPSS statistics (@KWIA:PHIL:SCHM:SHIN:92), standardized by their asymptotic mean and standard deviation. Among the tests in `purtest`, `"madwu"`, `"Pm"`, `"invormal"`, and `"logit"` are Fisher-type tests.^[The individual p-values for the Fisher-type tests are approximated as described in @MACK:96 if the package `urca` (@PFAFF:08) is available, otherwise as described in @MACK:94.] `purtest` returns an object of class `"purtest"` which contains details about the test performed, among them details about the individual regressions/statistics for the test. Associated `summary` and `print.summary` methods can be used to extract/display the additional information. Function `cipstest` implements Pesaran's (@pes07) cross-sectionally augmented version of the Im-Pesaran-Shin panel unit root test and is a so-called second-generation panel unit root test. Function `phansitest` implements the idea of @HANCK:13 to apply Simes' testing approach for intersection of individual hypothesis tests to panel unit root testing, see below for a more thorough treatment of [Simes’ approach for intersecting hypotheses](#phansitest). ### Preliminary results We consider the following model: $$ y_{it} = \delta y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} $$ The unit root hypothesis is $\rho = 1$. The model can be rewritten in difference: $$ \Delta y_{it} = \rho y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} $$ So that the unit-root hypothesis is now $\rho = 0$. Some of the unit-root tests for panel data are based on preliminary results obtained by running the above Augmented Dickey-Fuller (ADF) regression. First, we have to determine the optimal number of lags $p_i$ for each time-series. Several possibilities are available. They all have in common that the maximum number of lags have to be chosen first. Then, $p_i$ can be chosen by using: - the Schwarz information criterion (SIC) (also known as Bayesian information criterion (BIC)), - the Akaike information criterion (AIC), - the Hall's method, which consist in removing the higher lags while they are not significant. The ADF regression is run on $T-p_i-1$ observations for each individual, so that the total number of observations is $n\times \tilde{T}$ where $\tilde{T}=T-p_i-1$ $\bar{p}$ is the average number of lags. Call $e_{i}$ the vector of residuals. Estimate the variance of the $\epsilon_i$ as: $$ \hat{\sigma}_{\epsilon_i}^2 = \frac{\sum_{t=p_i+1}^{T} e_{it}^2}{df_i} $$ ### Levin-Lin-Chu model{#levinlin} Then, as per @LEVIN:LIN:CHU:02, compute artificial regressions of $\Delta y_{it}$ and $y_{it-1}$ on $\Delta y_{it-L}$ and $d_{mt}$ and get the two vectors of residuals $z_{it}$ and $v_{it}$. Standardize these two residuals and run the pooled regression of $z_{it}/\hat{\sigma}_i$ on $v_{it}/\hat{\sigma}_i$ to get $\hat{\rho}$, its standard deviation $\hat{\sigma}({\hat{\rho}})$ and the t-statistic $t_{\hat{\rho}}=\hat{\rho}/\hat{\sigma}({\hat{\rho}})$. Compute the long run variance of $y_i$ : $$ \hat{\sigma}_{yi}^2 = \frac{1}{T-1}\sum_{t=2}^T \Delta y_{it}^2 + 2 \sum_{L=1}^{\bar{K}}w_{\bar{K}L}\left[\frac{1}{T-1}\sum_{t=2+L}^T \Delta y_{it} \Delta y_{it-L}\right] $$ Define $\bar{s}_i$ as the ratio of the long and short term variance and $\bar{s}$ the mean for all the individuals of the sample $$ s_i = \frac{\hat{\sigma}_{yi}}{\hat{\sigma}_{\epsilon_i}} $$ $$ \bar{s} = \frac{\sum_{i=1}^n s_i}{n} $$ $$ t^*_{\rho}=\frac{t_{\rho}- n \bar{T} \bar{s} \hat{\sigma}_{\tilde{\epsilon}}^{-2} \hat{\sigma}({\hat{\rho}}) \mu^*_{m\tilde{T}}}{\sigma^*_{m\tilde{T}}} $$ follows a normal distribution under the null hypothesis of stationarity. $\mu^*_{m\tilde{T}}$ and $\sigma^*_{m\tilde{T}}$ are given in table 2 of the original paper and are also available in the package. An example how the Levin-Lin-Chu test is performed with `purtest` using a lag of 2 and intercept and a time trend as exogenous variables in the ADF regressions is: ```{r levinlin} data("HousePricesUS", package = "pder") lprice <- log(pdata.frame(HousePricesUS)$price) (lev <- purtest(lprice, test = "levinlin", lags = 2, exo = "trend")) summary(lev) ### gives details ``` ### Im-Pesaran-Shin (IPS) test{#ips} This test by @IM:PESAR:SHIN:03 does not require that $\rho$ is the same for all the individuals. The null hypothesis is still that all the series have an unit root, but the alternative is that some may have a unit root and others have different values of $\rho_i <0$. The test is based on the average of the student statistic of the $\rho$ obtained for each individual: $$ \bar{t}=\frac{1}{n}\sum_{i=1}^n t_{\rho i} $$ The statistic is then: $$ z = \frac{\sqrt{n}\left(\bar{t}- E(\bar{t})\right)}{\sqrt{V(\bar{t})}} $$ $\mu^*_{m\tilde{T}}$ and $\sigma^*_{m\tilde{T}}$ are given in table 2 of the original paper and are also available in the package. An example of the IPS test with `purtest` with the same settings as in the previously performed Levin-Lin-Chu test is: ```{r ips} purtest(lprice, test = "ips", lags = 2, exo = "trend") ``` ### Simes' approach: intersecting hypotheses{#phansitest} A different approach to panel unit root testing can be drawn from the general Simes' test for intersection of individual hypothesis tests [@SIMES:86]. @HANCK:13 suggests to apply the approach for panel unit root testing: The tests works by combining p-values from single hypothesis tests (individual unit root tests) with a global (intersected) hypothesis and controls for the multiplicity in testing. Thus, it works "on top" of any panel unit root test which yield a p-value for each individual series. Unlike most other panel unit root tests, this approach allows to discriminate between individuals for which the individual H0 (unit root present for individual series) is rejected/is not rejected and requires a pre-specified significance level. Further, the test is robust versus general patterns of cross-sectional dependence. The function `phansitest` for this test takes as main input object either a numeric containing p-values of individual tests or a `"purtest"` object as produced by function `purtest` which holds a suitable pre-computed panel unit root test (one that produces p-values per individual series). The significance level is set by argument `alpha` (default 5 %). The function's return value is a list with detailed evaluation of the applied Simes test. The associated print method gives a verbal evaluation. The following examples shows both accepted ways of input, the first example replicates @HANCK:13, table 11 (left side), who applied some panel unit root test for a Purchasing Power Parity analysis per country (individual H0 hypotheses per series) to get the individual p-values and then used Simes' approach for testing the global (intersecting) hypothesis for the whole panel. ```{r phansitest1} ### input is numeric (p-values), replicates Hanck (2013), Table 11 (left side) pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050, 0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475) countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France", "Germany","Belgium","U.K.","Brazil","Australia","Netherlands", "Portugal","Canada", "Spain","Denmark","Switzerland","Japan") names(pvals) <- countries h <- phansitest(pvals) print(h) h$rejected # logical indicating the individuals with rejected individual H0 ``` ```{r phansitest2, results='hide'} ### input is a (suitable) purtest object / different example y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu") phansitest(obj, alpha = 0.06) # test with significance level set to 6 % ``` ## Robust covariance matrix estimation{#robust} Robust estimators of the covariance matrix of coefficients are provided, mostly for use in Wald-type tests, and this section provides some basics and examples. A more comprehensive exposition of the theory and the capabilities that come with the plm package is given in @mil17b. `vcovHC` estimates three "flavours" of White's heteroskedasticity-consistent covariance matrix^[See @WHIT:80 and @WHIT:84b.] (known as the *sandwich* estimator). Interestingly, in the context of panel data the most general version also proves consistent vs. serial correlation. All types assume no correlation between errors of different groups while allowing for heteroskedasticity across groups, so that the full covariance matrix of errors is $V=I_n \otimes \Omega_i; i=1,..,n$. As for the *intragroup* error covariance matrix of every single group of observations, `"white1"` allows for general heteroskedasticity but no serial correlation, *i.e.* \begin{equation} (\#eq:omegaW1) \Omega_i= \left[ \begin{array}{c c c c} \sigma_{i1}^2 & \dots & \dots & 0 \\ 0 & \sigma_{i2}^2 & & \vdots \\ \vdots & & \ddots & 0 \\ 0 & ... & ... & \sigma_{iT}^2 \\ \end{array} \right] \end{equation} while `"white2"` is `"white1"` restricted to a common variance inside every group, estimated as $\sigma_i^2=\sum_{t=1}^T{\hat{u}_{it}^2}/T$, so that $\Omega_i=I_T \otimes \sigma_i^2$ (see @GREE:03, 13.7.1--2 and @WOOL:02, 10.7.2; `"arellano"` (see ibid. and the original ref. @AREL:87) allows a fully general structure w.r.t. heteroskedasticity and serial correlation: \begin{equation} (\#eq:omegaArellano) \Omega_i= \left[ \begin{array}{c c c c c} \sigma_{i1}^2 & \sigma_{i1,i2} & \dots & \dots & \sigma_{i1,iT} \\ \sigma_{i2,i1} & \sigma_{i2}^2 & & & \vdots \\ \vdots & & \ddots & & \vdots \\ \vdots & & & \sigma_{iT-1}^2 & \sigma_{iT-1,iT} \\ \sigma_{iT,i1} & \dots & \dots & \sigma_{iT,iT-1} & \sigma_{iT}^2 \\ \end{array} \right] \end{equation} The latter is, as already observed, consistent w.r.t. timewise correlation of the errors, but on the converse, unlike the White 1 and 2 methods, it relies on large $n$ asymptotics with small $T$. The fixed effects case, as already observed in Section [tests of serial correlation](#serialcor) on serial correlation, is complicated by the fact that the demeaning induces serial correlation in the errors. The original White estimator (`"white1"`) turns out to be inconsistent for fixed $T$ as $n$ grows, so in this case it is advisable to use the `"arellano"` version (see @STOC:WATS:08). The errors may be weighted according to the schemes proposed by @MACK:WHIT:85 and @CRIB:04 to improve small-sample performance^[The HC3 and HC4 weighting schemes are computationally expensive and may hit memory limits for $nT$ in the thousands, where on the other hand it makes little sense to apply small sample corrections.]. The main use of `vcovHC` (and the other variance-covariance estimators provided in the package `vcovBK`, `vcovNW`, `vcovDC`, `vcovSCC`) is to pass it to plm's own functions like `summary`, `pwaldtest`, and `phtest` or together with testing functions from the `lmtest` and `car` packages. All of these typically allow passing the `vcov` or `vcov.` parameter either as a matrix or as a function (see also @ZEIL:04). If one is happy with the defaults, it is easiest to pass the function itself^[For `coeftest` set `df = Inf` to have the coefficients' tests be performed with standard normal distribution instead of t distribution as we deal with a random effects model here. For these types of models, the precise distribution of the coefficients estimates is unknown.]: ```{r vcovHC1} re <- plm(inv~value+capital, data = Grunfeld, model = "random") summary(re, vcov = vcovHC) # gives usual summary output but with robust test statistics library("lmtest") coeftest(re, vcovHC, df = Inf) ``` Another approach is to compute the covariance matrix inside the call and pass it on: ```{r vcovHC2, results='hide'} summary(re, vcov = vcovHC(re, method="white2", type="HC3")) coeftest(re, vcovHC(re, method="white2", type="HC3"), df = Inf) ``` For some tests, e.g., for multiple model comparisons by `waldtest`, one should always provide a function^[Joint zero-restriction testing still allows providing the `vcov` of the unrestricted model as a matrix, see the documentation of package `lmtest`.]. In this case, optional parameters are provided as shown below (see also @ZEIL:04, p. 12): ```{r waldtest-vcovHC} waldtest(re, update(re, . ~ . -capital), vcov=function(x) vcovHC(x, method="white2", type="HC3")) ``` Moreover, `linearHypothesis` from package `car` may be used to test for linear restrictions: ```{r car-vcovHC} library("car") linearHypothesis(re, "2*value=capital", vcov. = vcovHC) ``` A specific methods are also provided for `pcce` and `pgmm` objects, for the latter `vcovHC` provides the robust covariance matrix proposed by @WIND:05 for generalized method of moments estimators. # plm versus nlme and lme4{#nlme} The models termed *panel* by the econometricians have counterparts in the statistics literature on *mixed* models (or *hierarchical models*, or *models for longitudinal data*), although there are both differences in jargon and more substantial distinctions. This language inconsistency between the two communities, together with the more complicated general structure of statistical models for longitudinal data and the associated notation in the software, is likely to scare some practicing econometricians away from some potentially useful features of the `R` environment, so it may be useful to provide here a brief reconciliation between the typical panel data specifications used in econometrics and the general framework used in statistics for mixed models^[This discussion does not consider GMM models. One of the basic reasons for econometricians not to choose maximum likelihood methods in estimation is that the strict exogeneity of regressors assumption required for consistency of the ML models reported in the following is often inappropriate in economic settings.]. `R` is particularly strong on mixed models' estimation, thanks to the long-standing `nlme` package (see @PINH:BATE:DEBR:SARK:07) and the more recent `lme4` package, based on S4 classes (see @BATE:07)^[The standard reference on the subject of mixed models in `S`/`R` is @PINH:BATE:00.]. In the following we will refer to the more established `nlme` to give some examples of "econometric" panel models that can be estimated in a likelihood framework, also including some likelihood ratio tests. Some of them are not feasible in `plm` and make a useful complement to the econometric "toolbox" available in `R`. ## Fundamental differences between the two approaches Econometrics deal mostly with non-experimental data. Great emphasis is put on specification procedures and misspecification testing. Model specifications tend therefore to be very simple, while great attention is put on the issues of endogeneity of the regressors, dependence structures in the errors and robustness of the estimators under deviations from normality. The preferred approach is often semi- or non-parametric, and heteroskedasticity-consistent techniques are becoming standard practice both in estimation and testing. For all these reasons, although the maximum likelihood framework is important in testing^[Lagrange Multiplier tests based on the likelihood principle are suitable for testing against more general alternatives on the basis of a maintained model with spherical residuals and find therefore application in testing for departures from the classical hypotheses on the error term. The seminal reference is @BREU:PAGA:80.] and sometimes used in estimation as well, panel model estimation in econometrics is mostly accomplished in the generalized least squares framework based on Aitken's Theorem and, when possible, in its special case OLS, which are free from distributional assumptions (although these kick in at the diagnostic testing stage). On the contrary, longitudinal data models in `nlme` and `lme4` are estimated by (restricted or unrestricted) maximum likelihood. While under normality, homoskedasticity and no serial correlation of the errors OLS are also the maximum likelihood estimator, in all the other cases there are important differences. The econometric GLS approach has closed-form analytical solutions computable by standard linear algebra and, although the latter can sometimes get computationally heavy on the machine, the expressions for the estimators are usually rather simple. ML estimation of longitudinal models, on the contrary, is based on numerical optimization of nonlinear functions without closed-form solutions and is thus dependent on approximations and convergence criteria. For example, the "GLS" functionality in `nlme` is rather different from its "econometric" counterpart. "Feasible GLS" estimation in `plm` is based on a single two-step procedure, in which an inefficient but consistent estimation method (typically OLS) is employed first in order to get a consistent estimate of the errors' covariance matrix, to be used in GLS at the second step; on the converse, "GLS" estimators in `nlme` are based on iteration until convergence of two-step optimization of the relevant likelihood. ## Some false friends The *fixed/random effects* terminology in econometrics is often recognized to be misleading, as both are treated as random variates in modern econometrics (see, e.g., @WOOL:02 10.2.1). It has been recognized since Mundlak's classic paper (@MUND:78) that the fundamental issue is whether the unobserved effects are correlated with the regressors or not. In this last case, they can safely be left in the error term, and the serial correlation they induce is cared for by means of appropriate GLS transformations. On the contrary, in the case of correlation, "fixed effects" methods such as least squares dummy variables or time-demeaning are needed, which explicitly, although inconsistently^[For fixed effects estimation, as the sample grows (on the dimension on which the fixed effects are specified) so does the number of parameters to be estimated. Estimation of individual fixed effects is $T$-- (but not $n$--) consistent, and the opposite.], estimate a group-- (or time--) invariant additional parameter for each group (or time period). Thus, from the point of view of model specification, having *fixed effects* in an econometric model has the meaning of allowing the intercept to vary with group, or time, or both, while the other parameters are generally still assumed to be homogeneous. Having *random effects* means having a group-- (or time--, or both) specific component in the error term. In the mixed models literature, on the contrary, *fixed effect* indicates a parameter that is assumed constant, while *random effects* are parameters that vary randomly around zero according to a joint multivariate normal distribution. So, the FE model in econometrics has no counterpart in the mixed models framework, unless reducing it to OLS on a specification with one dummy for each group (often termed *least squares dummy variables*, or LSDV model) which can trivially be estimated by OLS. The RE model is instead a special case of a mixed model where only the intercept is specified as a random effect, while the "random" type variable coefficients model can be seen as one that has the same regressors in the fixed and random sets. The unrestricted generalized least squares can in turn be seen, in the `nlme` framework, as a standard linear model with a general error covariance structure within the groups and errors uncorrelated across groups. ## A common taxonomy To reconcile the two terminologies, in the following we report the specification of the panel models in `plm` according to the general expression of a mixed model in Laird-Ware form [see the web appendix to @FOX:02] and the `nlme` estimation commands for maximum likelihood estimation of an equivalent specification^[In doing so, we stress that "equivalence" concerns only the specification of the model, and neither the appropriateness nor the relative efficiency of the relevant estimation techniques, which will of course be dependent on the context. Unlike their mixed model counterparts, the specifications in `plm` are, strictly speaking, distribution-free. Nevertheless, for the sake of exposition, in the following we present them in the setting which ensures consistency and efficiency (e.g., we consider the hypothesis of spherical errors part of the specification of pooled OLS and so forth).]. ### The Laird-Ware representation for mixed models A general representation for the linear mixed effects model is given in @LAIR:WARE:82. $$ \begin{array}{rcl} y_{it} & = & \beta_1 x_{1ij} + \dots + \beta_p x_{pij} \\ & & b_1 z_{1ij} + \dots + b_p z_{pij} + \epsilon_{ij} \\ b_{ik} & \sim & N(0,\psi^2_k), \phantom{p} Cov(b_k,b_{k'}) = \psi_{kk'} \\ \epsilon_{ij} & \sim & N(0,\sigma^2 \lambda_{ijj}), \phantom{p} Cov(\epsilon_{ij},\epsilon_{ij'}) = \sigma^2 \lambda_{ijj'} \\ \end{array} $$ where the $x_1, \dots x_p$ are the fixed effects regressors and the $z_1, \dots z_p$ are the random effects regressors, assumed to be normally distributed across groups. The covariance of the random effects coefficients $\psi_{kk'}$ is assumed constant across groups and the covariances between the errors in group $i$, $\sigma^2 \lambda_{ijj'}$, are described by the term $\lambda_{ijj'}$ representing the correlation structure of the errors within each group (e.g., serial correlation over time) scaled by the common error variance $\sigma^2$. ### Pooling and Within The *pooling* specification in `plm` is equivalent to a classical linear model (i.e., no random effects regressor and spherical errors: $b_{iq}=0 \phantom{p} \forall i,q, \phantom{p} \lambda_{ijj}=\sigma^2$ for $j=j'$, $0$ else). The *within* one is the same with the regressors' set augmented by $n-1$ group dummies. There is no point in using `nlme` as parameters can be estimated by OLS which is also ML. ### Random effects In the Laird and Ware notation, the RE specification is a model with only one random effects regressor: the intercept. Formally, $z_{1ij}=1 \phantom{p}\forall i,j, \phantom{p} z_{qij}=0 \phantom{p} \forall i, \forall j, \forall q \neq 1$ $\lambda_{ij}=1$ for $i=j$, $0$ else). The composite error is therefore $u_{ij}=1b_{i1} + \epsilon_{ij}$. Below we report coefficients of Grunfeld's model estimated by GLS and then by ML: ```{r re2} library(nlme) reGLS <- plm(inv~value+capital, data=Grunfeld, model="random") reML <- lme(inv~value+capital, data=Grunfeld, random=~1|firm) coef(reGLS) summary(reML)$coefficients$fixed ``` ### Variable coefficients, "random" Swamy's variable coefficients model [@SWAM:70] has coefficients varying randomly (and independently of each other) around a set of fixed values, so the equivalent specification is $z_{q}=x_{q} \phantom{p} \forall q$, i.e. the fixed effects and the random effects regressors are the same, and $\psi_{kk'}=\sigma_\mu^2 I_N$, and $\lambda_{ijj}=1$, $\lambda_{ijj'}=0$ for $j \neq j'$, that's to say they are not correlated. Estimation of a mixed model with random coefficients on all regressors is rather demanding from the computational side. Some models from our examples fail to converge. The below example is estimated on the Grunfeld data and model with time effects. ```{r vcmrand} vcm <- pvcm(inv~value+capital, data=Grunfeld, model="random", effect="time") vcmML <- lme(inv~value+capital, data=Grunfeld, random=~value+capital|year) coef(vcm) summary(vcmML)$coefficients$fixed ``` ### Variable coefficients, "within" This specification actually entails separate estimation of $T$ different standard linear models, one for each group in the data, so the estimation approach is the same: OLS. In `nlme` this is done by creating an `lmList` object, so that the two models below are equivalent (output suppressed): ```{r vcmfixed} vcmf <- pvcm(inv~value+capital, data=Grunfeld, model="within", effect="time") vcmfML <- lmList(inv~value+capital|year, data=Grunfeld) ``` ### General FGLS The general, or unrestricted, feasible GLS (FGLS), `pggls` in the `plm` nomenclature, is equivalent to a model with no random effects regressors ($b_{iq}=0 \phantom{p} \forall i,q$) and an error covariance structure which is unrestricted within groups apart from the usual requirements. The function for estimating such models with correlation in the errors but no random effects is `gls()`. This very general serial correlation and heteroskedasticity structure is not estimable for the original Grunfeld data, which have more time periods than firms, therefore we restrict them to firms 4 to 6. ```{r gglsre} sGrunfeld <- Grunfeld[Grunfeld$firm %in% 4:6, ] ggls <- pggls(inv~value+capital, data=sGrunfeld, model="pooling") gglsML <- gls(inv~value+capital, data=sGrunfeld, correlation=corSymm(form=~1|year)) coef(ggls) summary(gglsML)$coefficients ``` The *within* case is analogous, with the regressor set augmented by $n-1$ group dummies. ## Some useful "econometric" models in nlme Finally, amongst the many possible specifications estimable with `nlme`, we report a couple cases that might be especially interesting to applied econometricians. ### AR(1) pooling or random effects panel Linear models with groupwise structures of time-dependence^[Take heed that here, in contrast to the usual meaning of serial correlation in time series, we always speak of serial correlation *between the errors of each group*.] may be fitted by `gls()`, specifying the correlation structure in the `correlation` option^[note that the time index is coerced to numeric before the estimation.]: ```{r lmAR1} Grunfeld$year <- as.numeric(as.character(Grunfeld$year)) lmAR1ML <- gls(inv~value+capital,data=Grunfeld, correlation=corAR1(0,form=~year|firm)) ``` and analogously the random effects panel with, e.g., AR(1) errors (see @BALT:05; @BALT:13; @BALT:21, ch. 5), which is a very common specification in econometrics, may be fit by `lme` specifying an additional random intercept: ```{r reAR1} reAR1ML <- lme(inv~value+capital, data=Grunfeld,random=~1|firm, correlation=corAR1(0,form=~year|firm)) ``` The regressors' coefficients and the error's serial correlation coefficient may be retrieved this way: ```{r fetchcoefs} summary(reAR1ML)$coefficients$fixed coef(reAR1ML$modelStruct$corStruct, unconstrained=FALSE) ``` Significance statistics for the regressors' coefficients are to be found in the usual `summary` object, while to get the significance test of the serial correlation coefficient one can do a likelihood ratio test as shown in the following. ### An LR test for serial correlation and one for random effects A likelihood ratio test for serial correlation in the idiosyncratic residuals can be done as a nested models test, by `anova()`, comparing the model with spherical idiosyncratic residuals with the more general alternative featuring AR(1) residuals. The test takes the form of a zero restriction test on the autoregressive parameter. This can be done on pooled or random effects models alike. First we report the simpler case. We already estimated the pooling AR(1) model above. The GLS model without correlation in the residuals is the same as OLS, and one could well use `lm()` for the restricted model. Here we estimate it by `gls()`. ```{r LRar} lmML <- gls(inv~value+capital, data=Grunfeld) anova(lmML, lmAR1ML) ``` The AR(1) test on the random effects model is to be done in much the same way, using the random effects model objects estimated above: ```{r LRarsubRE} anova(reML, reAR1ML) ``` A likelihood ratio test for random effects compares the specifications with and without random effects and spherical idiosyncratic errors: ```{r LRre} anova(lmML, reML) ``` The random effects, AR(1) errors model in turn nests the AR(1) pooling model, therefore a likelihood ratio test for random effects sub AR(1) errors may be carried out, again, by comparing the two autoregressive specifications: ```{r LRresubAR} anova(lmAR1ML, reAR1ML) ``` whence we see that the Grunfeld model specification doesn't seem to need any random effects once we control for serial correlation in the data. # Conclusions{#conclusions} With `plm` we aim at providing a comprehensive package containing the standard functionalities that are needed for the management and the econometric analysis of panel data. In particular, we provide: functions for data transformation; estimators for pooled, random and fixed effects static panel models and variable coefficients models, general GLS for general covariance structures, and generalized method of moments estimators for dynamic panels; specification and diagnostic tests. Instrumental variables estimation is supported. Most estimators allow working with unbalanced panels. While among the different approaches to longitudinal data analysis we take the perspective of the econometrician, the syntax is consistent with the basic linear modeling tools, like the `lm` function. On the input side, `formula` and `data` arguments are used to specify the model to be estimated. Special functions are provided to make writing formulas easier, and the structure of the data is indicated with an `index` argument. On the output side, the model objects (of the new class `panelmodel`) are compatible with the general restriction testing frameworks of packages `lmtest` and `car`. Specialized methods are also provided for the calculation of robust covariance matrices; heteroskedasticity- and correlation-consistent testing is accomplished by passing these on to testing functions, together with a `panelmodel` object. The main functionalities of the package have been illustrated here by applying them on some well-known data sets from the econometric literature. The similarities and differences with the maximum likelihood approach to longitudinal data have also been briefly discussed. # Acknowledgments {-} While retaining responsibility for any error, we thank Jeffrey Wooldridge, Achim Zeileis and three anonymous referees for useful comments. We also acknowledge kind editing assistance by Lisa Benedetti. # Bibliography {-} plm/inst/doc/A_plmPackage.R0000644000176200001440000003137014742231562015225 0ustar liggesusers## ----echo=FALSE,results='hide'------------------------------------------------ options(prompt= "R> ", useFancyQuotes = FALSE, scipen = 999) library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ## ----echo=TRUE, results='hide'------------------------------------------------ library("plm") ## ----------------------------------------------------------------------------- data("EmplUK", package="plm") data("Produc", package="plm") data("Grunfeld", package="plm") data("Wages", package="plm") ## ----setdata1----------------------------------------------------------------- head(Grunfeld) E <- pdata.frame(EmplUK, index=c("firm","year"), drop.index=TRUE, row.names=TRUE) head(E) head(attr(E, "index")) ## ----------------------------------------------------------------------------- summary(E$emp) head(as.matrix(E$emp)) ## ----------------------------------------------------------------------------- head(lag(E$emp, 0:2)) ## ----------------------------------------------------------------------------- head(diff(E$emp), 10) head(lag(E$emp, 2), 10) head(Within(E$emp)) head(between(E$emp), 4) head(Between(E$emp), 10) ## ----results='hide'----------------------------------------------------------- emp ~ wage + capital | lag(wage, 1) + capital emp ~ wage + capital | . -wage + lag(wage, 1) ## ----fe_re-------------------------------------------------------------------- grun.fe <- plm(inv~value+capital, data = Grunfeld, model = "within") grun.re <- plm(inv~value+capital, data = Grunfeld, model = "random") ## ----summary_re--------------------------------------------------------------- summary(grun.re) ranef(grun.re) ## ----------------------------------------------------------------------------- fixef(grun.fe, type = "dmean") ## ----------------------------------------------------------------------------- summary(fixef(grun.fe, type = "dmean")) ## ----------------------------------------------------------------------------- grun.twfe <- plm(inv~value+capital, data=Grunfeld, model="within", effect="twoways") fixef(grun.twfe, effect = "time") ## ----------------------------------------------------------------------------- grun.amem <- plm(inv~value+capital, data=Grunfeld, model="random", random.method="amemiya") ## ----------------------------------------------------------------------------- ercomp(inv~value+capital, data=Grunfeld, method = "amemiya", effect = "twoways") ## ----2RE-amemiya-------------------------------------------------------------- grun.tways <- plm(inv~value+capital, data = Grunfeld, effect = "twoways", model = "random", random.method = "amemiya") summary(grun.tways) ## ----hedonic------------------------------------------------------------------ data("Hedonic", package = "plm") Hed <- plm(mv~crim+zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+blacks+lstat, data = Hedonic, model = "random", index = "townid") summary(Hed) ## ----hedonic-punbal----------------------------------------------------------- punbalancedness(Hed) ## ----G2SLS-------------------------------------------------------------------- data("Crime", package = "plm") cr <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random") summary(cr) ## ----hausman-taylor----------------------------------------------------------- ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, model = "random", random.method = "ht", inst.method = "baltagi") summary(ht) ## ----grunfeld.within---------------------------------------------------------- grun.varw <- pvcm(inv~value+capital, data=Grunfeld, model="within") grun.varr <- pvcm(inv~value+capital, data=Grunfeld, model="random") summary(grun.varr) ## ----gmm---------------------------------------------------------------------- emp.gmm <- pgmm(log(emp)~lag(log(emp), 1:2)+lag(log(wage), 0:1)+log(capital)+ lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") summary(emp.gmm, robust = FALSE) ## ----gmm2--------------------------------------------------------------------- z2 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) + lag(log(capital), 0:1) | lag(log(emp), 2:99) + lag(log(wage), 2:99) + lag(log(capital), 2:99), data = EmplUK, effect = "twoways", model = "onestep", transformation = "ld") summary(z2, robust = TRUE) ## ----pggls-------------------------------------------------------------------- zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="pooling") summary(zz) ## ----------------------------------------------------------------------------- zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="within") ## ----------------------------------------------------------------------------- znp <- pvcm(inv ~ value + capital, data = Grunfeld, model = "within") zplm <- plm(inv ~ value + capital, data = Grunfeld, model = "within") pooltest(zplm, znp) ## ----results='hide'----------------------------------------------------------- pooltest(inv ~ value + capital, data = Grunfeld, model = "within") ## ----------------------------------------------------------------------------- g <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") plmtest(g, effect="twoways", type="ghm") ## ----results='hide'----------------------------------------------------------- plmtest(inv~value+capital, data=Grunfeld, effect="twoways", type="ghm") ## ----------------------------------------------------------------------------- gw <- plm(inv ~ value + capital, data=Grunfeld, effect="twoways", model="within") gp <- plm(inv ~ value + capital, data=Grunfeld, model="pooling") pFtest(gw, gp) ## ----results='hide'----------------------------------------------------------- pFtest(inv~value+capital, data=Grunfeld, effect="twoways") ## ----------------------------------------------------------------------------- gw <- plm(inv ~ value + capital, data = Grunfeld, model="within") gr <- plm(inv ~ value + capital, data = Grunfeld, model="random") phtest(gw, gr) ## ----------------------------------------------------------------------------- phtest(inv ~ value + capital, data = Grunfeld, method = "aux", vcov = vcovHC) ## ----wtest-------------------------------------------------------------------- pwtest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ## ----pbsytestJoint------------------------------------------------------------ pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="j") ## ----pbsytestAR--------------------------------------------------------------- pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc) ## ----pbsytestRE--------------------------------------------------------------- pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="re") ## ----pbltest------------------------------------------------------------------ pbltest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, alternative="onesided") ## ----generalAR---------------------------------------------------------------- pbgtest(grun.fe, order = 2) ## ----pwartest----------------------------------------------------------------- pwartest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ## ----pwfdtest1---------------------------------------------------------------- pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK) ## ----pwfdtest2---------------------------------------------------------------- pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK, h0="fe") ## ----pcdtest1----------------------------------------------------------------- pcdtest(inv~value+capital, data=Grunfeld) ## ----pcdtest2----------------------------------------------------------------- pcdtest(inv~value+capital, data=Grunfeld, model="within") ## ----levinlin----------------------------------------------------------------- data("HousePricesUS", package = "pder") lprice <- log(pdata.frame(HousePricesUS)$price) (lev <- purtest(lprice, test = "levinlin", lags = 2, exo = "trend")) summary(lev) ### gives details ## ----ips---------------------------------------------------------------------- purtest(lprice, test = "ips", lags = 2, exo = "trend") ## ----phansitest1-------------------------------------------------------------- ### input is numeric (p-values), replicates Hanck (2013), Table 11 (left side) pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050, 0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475) countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France", "Germany","Belgium","U.K.","Brazil","Australia","Netherlands", "Portugal","Canada", "Spain","Denmark","Switzerland","Japan") names(pvals) <- countries h <- phansitest(pvals) print(h) h$rejected # logical indicating the individuals with rejected individual H0 ## ----phansitest2, results='hide'---------------------------------------------- ### input is a (suitable) purtest object / different example y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu") phansitest(obj, alpha = 0.06) # test with significance level set to 6 % ## ----vcovHC1------------------------------------------------------------------ re <- plm(inv~value+capital, data = Grunfeld, model = "random") summary(re, vcov = vcovHC) # gives usual summary output but with robust test statistics library("lmtest") coeftest(re, vcovHC, df = Inf) ## ----vcovHC2, results='hide'-------------------------------------------------- summary(re, vcov = vcovHC(re, method="white2", type="HC3")) coeftest(re, vcovHC(re, method="white2", type="HC3"), df = Inf) ## ----waldtest-vcovHC---------------------------------------------------------- waldtest(re, update(re, . ~ . -capital), vcov=function(x) vcovHC(x, method="white2", type="HC3")) ## ----car-vcovHC--------------------------------------------------------------- library("car") linearHypothesis(re, "2*value=capital", vcov. = vcovHC) ## ----re2---------------------------------------------------------------------- library(nlme) reGLS <- plm(inv~value+capital, data=Grunfeld, model="random") reML <- lme(inv~value+capital, data=Grunfeld, random=~1|firm) coef(reGLS) summary(reML)$coefficients$fixed ## ----vcmrand------------------------------------------------------------------ vcm <- pvcm(inv~value+capital, data=Grunfeld, model="random", effect="time") vcmML <- lme(inv~value+capital, data=Grunfeld, random=~value+capital|year) coef(vcm) summary(vcmML)$coefficients$fixed ## ----vcmfixed----------------------------------------------------------------- vcmf <- pvcm(inv~value+capital, data=Grunfeld, model="within", effect="time") vcmfML <- lmList(inv~value+capital|year, data=Grunfeld) ## ----gglsre------------------------------------------------------------------- sGrunfeld <- Grunfeld[Grunfeld$firm %in% 4:6, ] ggls <- pggls(inv~value+capital, data=sGrunfeld, model="pooling") gglsML <- gls(inv~value+capital, data=sGrunfeld, correlation=corSymm(form=~1|year)) coef(ggls) summary(gglsML)$coefficients ## ----lmAR1-------------------------------------------------------------------- Grunfeld$year <- as.numeric(as.character(Grunfeld$year)) lmAR1ML <- gls(inv~value+capital,data=Grunfeld, correlation=corAR1(0,form=~year|firm)) ## ----reAR1-------------------------------------------------------------------- reAR1ML <- lme(inv~value+capital, data=Grunfeld,random=~1|firm, correlation=corAR1(0,form=~year|firm)) ## ----fetchcoefs--------------------------------------------------------------- summary(reAR1ML)$coefficients$fixed coef(reAR1ML$modelStruct$corStruct, unconstrained=FALSE) ## ----LRar--------------------------------------------------------------------- lmML <- gls(inv~value+capital, data=Grunfeld) anova(lmML, lmAR1ML) ## ----LRarsubRE---------------------------------------------------------------- anova(reML, reAR1ML) ## ----LRre--------------------------------------------------------------------- anova(lmML, reML) ## ----LRresubAR---------------------------------------------------------------- anova(lmAR1ML, reAR1ML) plm/inst/doc/B_plmFunction.html0000644000176200001440000017626714742231570016241 0ustar liggesusers Estimation of error components models with the plm function

Estimation of error components models with the plm function

Yves Croissant

2025-01-16

plm is a very versatile function which enable the estimation of a wide range of error component models. Those models can be written as follows :

\[ y_{nt}=\alpha + \beta^\top x_{nt} + \epsilon_{nt} = \alpha + \beta^\top x_{nt} + \eta_n + \mu_t + \nu_{nt} \]

where \(n\) and \(t\) are the individual and time indexes, \(y\) the response, \(x\) a vector of covariates, \(\alpha\) the overall intercept and \(\beta\) the vector of parameters of interest that we are willing to estimate. The error term \(\epsilon_{nt}\) is composed of three elements (in the two-way case):

  • \(\eta_n\) is the individual effect,
  • \(\mu_t\) is the time effect,
  • \(\nu_{nt}\) is the idiosyncratic error.

Basic use of plm

The first two arguments of plm are, like for most of the estimation functions of R a formula which describes the model to be estimated and a data.frame. subset, weights, and na.action are also available and have the same behavior as in the lm function. Three more main arguments can be set :

  • index helps plm to understand the structure of the data : if NULL, the first two columns of the data are assumed to contain the individual or the time index. Otherwise, supply the column names of the individual and time index as a character, e.g., use something like c("firm", "year") or just "firm" if there is no explicit time index.
  • effect indicates the effects that should be taken into account ; this is one of "individual", "time", and "twoways".
  • model indicates the model to be estimated :
    • "pooling" is the OLS estimation (equivalent to a call to lm),
    • "between" performs the estimation on the individual or time means,
    • "within" (fixed-effects model) on the deviations from the individual or/and time mean,
    • "fd" on the first differences, and
    • "random" (random-effects model) perform a feasible generalized least squares estimation which takes into account the correlation induced by the presence of individual and/or time effects.

The estimation of all but the last model is straightforward, as it requires only the estimation by OLS of obvious transformations of the data. The GLS model requires more explanation. In most of the cases, the estimation is obtained by quasi-differencing the data from the individual and/or the time means. The coefficients used to perform this quasi-difference depends on estimators of the variance of the components of the error, namely \(\sigma^2_\nu\), \(\sigma^2_\eta\) in case of individual effects and \(\sigma^2_\mu\) in case of time effects.

The most common technique used to estimate these variance is to use the following result :

\[ \frac{\mbox{E}(\epsilon^\top W \epsilon)}{N(T-1)} = \sigma_\nu^2 \]

and

\[ \frac{\mbox{E}(\epsilon^\top B \epsilon)}{N} = T \sigma_\eta^2 + \sigma_\nu^2 \]

where \(B\) and \(W\) are respectively the matrices that performs the individual (or time) means and the deviations from these means. Consistent estimators can be obtained by replacing the unknown errors by the residuals of a consistent preliminary estimation and by dropping the expecting value operator. Some degree of freedom correction can also be introduced. plm calls the general function ercomp to estimate the variances. Important arguments to ercomp are:

  • models indicates which models are estimated in order to calculate the two quadratic forms ; for example c("within", "Between"). Note that when only one model is provided in models, this means that the same residuals are used to compute the two quadratic forms.
  • dfcor indicates what kind of degrees of freedom correction is used : if 0, the quadratic forms are divided by the number of observations, respectively \(N\times T\) and \(N\) ; if 1, the numerators of the previous expressions are used (\(N\times (T-1)\) and \(N\)) ; if 2, the number of estimated parameters in the preliminary estimate \(K\) is deducted. Finally, if 3, the unbiased version is computed, which is based on much more complex computations, which relies on the calculus of the trace of different cross-products which depends on the preliminary models used.
  • method is an alternative to the models argument; it is one of :
    • "walhus" (equivalent to setting models = c("pooling")), Wallace and Hussain (1969),
    • "swar" (equivalent to models = c("within", "Between")), Swamy and Arora (1972),
    • "amemiya" (equivalent to models = c("within")), T. Amemiya (1971),
    • "nerlove", which is a specific method which doesn’t fit to the quadratic form methodology described above (Nerlove (1971)) and uses an within model for the variance estimation as well,
    • "ht" is an slightly modified version of "amemiya": when there are time-invariant covariates, the T. Amemiya (1971) estimator of the individual component of the variance under-estimates as the time-invariant covariates disappear in the within regression. In this case, Hausman and Taylor (1981) proposed to regress the estimation of the individual effects on the time-invariant covariates and use the residuals in order to estimate the components of the variance.

Note that for plm, the arguments are random.models, random.dfcor, and random.method and correspond to arguments models, method, and random.dfcor of function ercomp with the same values as above, respectively.

To illustrate the use of plm, we use examples reproduced in B. H. Baltagi (2013), p. 21; B. H. Baltagi (2021), p. 31, table 2.1 presents EViews’ results of the estimation on the Grunfeld data set :

library("plm")
data("Grunfeld", package = "plm")
ols <- plm(inv ~ value + capital, Grunfeld, model = "pooling")
between <- update(ols, model = "between")
within <- update(ols, model = "within")
walhus <- update(ols, model = "random", random.method = "walhus", random.dfcor = 3)
amemiya <- update(walhus, random.method = "amemiya")
swar <- update(amemiya, random.method = "swar")

Note that the random.dfcor argument is set to 3, which means that the unbiased version of the estimation of the error components is used. We use the texreg package to present the results :

library("texreg")
screenreg(list(ols = ols, between = between, within = within, 
            walhus = walhus, amemiya = amemiya, swar = swar),
        digits = 5, omit.coef = "(Intercept)")
## 
## =================================================================================================
##            ols            between      within         walhus         amemiya        swar         
## -------------------------------------------------------------------------------------------------
## value        0.11556 ***   0.13465 **    0.11012 ***    0.10979 ***    0.10978 ***    0.10978 ***
##             (0.00584)     (0.02875)     (0.01186)      (0.01052)      (0.01048)      (0.01049)   
## capital      0.23068 ***   0.03203       0.31007 ***    0.30818 ***    0.30808 ***    0.30811 ***
##             (0.02548)     (0.19094)     (0.01735)      (0.01717)      (0.01718)      (0.01718)   
## -------------------------------------------------------------------------------------------------
## R^2          0.81241       0.85777       0.76676        0.76941        0.76954        0.76950    
## Adj. R^2     0.81050       0.81713       0.75311        0.76707        0.76720        0.76716    
## Num. obs.  200            10           200            200            200            200          
## s_idios                                                53.74518       52.76797       52.76797    
## s_id                                                   87.35803       83.52354       84.20095    
## =================================================================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

The estimated variance can be extracted using the ercomp function. For example, for the amemiya model :

ercomp(amemiya)
##                   var std.dev share
## idiosyncratic 2784.46   52.77 0.285
## individual    6976.18   83.52 0.715
## theta: 0.8601

B. H. Baltagi (2013), p. 27; B. H. Baltagi (2021), p. 31 presents the Stata estimation of the Swamy-Arora estimator ; the Swamy-Arora estimator is the same if random.dfcor is set to 3 or 2 (the quadratic forms are divided by \(\sum_n T_n - K - N\) and by \(N - K - 1\)), so I don’t know what is the behaviour of Stata for the other estimators for which the unbiased estimators differs from the simple one.

data("Produc", package = "plm")
PrSwar <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, 
           model = "random", random.method = "swar", random.dfcor = 3)
summary(PrSwar)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, 
##     data = Produc, model = "random", random.method = "swar", 
##     random.dfcor = 3)
## 
## Balanced Panel: n = 48, T = 17, N = 816
## 
## Effects:
##                    var  std.dev share
## idiosyncratic 0.001454 0.038137 0.175
## individual    0.006838 0.082691 0.825
## theta: 0.8888
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -0.1067230 -0.0245520 -0.0023694  0.0217333  0.1996307 
## 
## Coefficients:
##                Estimate  Std. Error z-value              Pr(>|z|)    
## (Intercept)  2.13541100  0.13346149 16.0002 < 0.00000000000000022 ***
## log(pcap)    0.00443859  0.02341732  0.1895                0.8497    
## log(pc)      0.31054843  0.01980475 15.6805 < 0.00000000000000022 ***
## log(emp)     0.72967053  0.02492022 29.2803 < 0.00000000000000022 ***
## unemp       -0.00617247  0.00090728 -6.8033      0.00000000001023 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    29.209
## Residual Sum of Squares: 1.1879
## R-Squared:      0.95933
## Adj. R-Squared: 0.95913
## Chisq: 19131.1 on 4 DF, p-value: < 0.000000000000000222

The twoways effect model

The two-ways effect model is obtained by setting the effect argument to "twoways". B. H. Baltagi (2013) pp. 51-53; B. H. Baltagi (2021), pp. 61-62, tables 3.1-3.3, presents EViews’ output for the Grunfeld data set.

Grw <- plm(inv ~ value + capital, Grunfeld, model = "random", effect = "twoways", 
           random.method = "walhus", random.dfcor = 3)
Grs <- update(Grw, random.method = "swar")
Gra <- update(Grw, random.method = "amemiya")
screenreg(list("Wallace-Hussain" = Grw, "Swamy-Arora" = Grs, "Amemiya" = Gra), digits = 5)
## 
## ==========================================================
##              Wallace-Hussain  Swamy-Arora    Amemiya      
## ----------------------------------------------------------
## (Intercept)  -57.81705 *      -57.86538 *    -63.89217 *  
##              (28.63258)       (29.39336)     (30.53284)   
## value          0.10978 ***      0.10979 ***    0.11145 ***
##               (0.01047)        (0.01053)      (0.01096)   
## capital        0.30807 ***      0.30819 ***    0.32353 ***
##               (0.01719)        (0.01717)      (0.01877)   
## ----------------------------------------------------------
## s_idios       55.33298         51.72452       51.72452    
## s_id          87.31428         84.23332       89.26257    
## s_time         0.00000          0.00000       15.77783    
## R^2            0.76956          0.76940        0.74898    
## Adj. R^2       0.76722          0.76706        0.74643    
## Num. obs.    200              200            200          
## ==========================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

The estimated variance of the time component is negative for the Wallace-Hussain as well as the Swamy-Arora models and plm sets it to 0.

B. H. Baltagi (2009) pp. 60-62, presents EViews’ output for the Produc data.

data("Produc", package = "plm")
Prw <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, 
           model = "random", random.method = "walhus", 
           effect = "twoways", random.dfcor = 3)
Prs <- update(Prw, random.method = "swar")
Pra <- update(Prw, random.method = "amemiya")
screenreg(list("Wallace-Hussain" = Prw, "Swamy-Arora" = Prs, "Amemiya" = Pra), digits = 5)
## 
## ==========================================================
##              Wallace-Hussain  Swamy-Arora    Amemiya      
## ----------------------------------------------------------
## (Intercept)    2.39200 ***      2.36350 ***    2.85210 ***
##               (0.13833)        (0.13891)      (0.18502)   
## log(pcap)      0.02562          0.01785        0.00221    
##               (0.02336)        (0.02332)      (0.02469)   
## log(pc)        0.25781 ***      0.26559 ***    0.21666 ***
##               (0.02128)        (0.02098)      (0.02438)   
## log(emp)       0.74180 ***      0.74490 ***    0.77005 ***
##               (0.02371)        (0.02411)      (0.02584)   
## unemp         -0.00455 ***     -0.00458 ***   -0.00398 ***
##               (0.00106)        (0.00102)      (0.00108)   
## ----------------------------------------------------------
## s_idios        0.03571          0.03429        0.03429    
## s_id           0.08244          0.08279        0.15390    
## s_time         0.01595          0.00984        0.02608    
## R^2            0.92915          0.93212        0.85826    
## Adj. R^2       0.92880          0.93178        0.85756    
## Num. obs.    816              816            816          
## ==========================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

Unbalanced panels

Two difficulties arise with unbalanced panels :

  • There are no obvious denominators for the quadratic forms of the residuals that are used to estimate the components of the variance. The strategy is then to compute the expected value and equate it to the actual quadratic forms. Detailed formula are omitted here, they depend on the preliminary estimator.
  • For the one-way effect model, the estimator is still obtained by applying OLS on demeaned data (the individual and the time means are now deducted) for the within model and on quasi-demeaned data for the random effects model ; this is not the case for the two-ways effects model.

B. H. Baltagi (2021), B. H. Baltagi (2013), and B. H. Baltagi (2009) present results of the estimation of the Swamy and Arora (1972) model with the Hedonic data set. B. H. Baltagi (2013), p. 195; B. H. Baltagi (2021), p. 237, table 9.1, presents the Stata output and B. H. Baltagi (2009), p. 211 presents EViews’ output. EViews’ Wallace-Hussain estimator is reported in B. H. Baltagi (2009), p. 210.

data("Hedonic", package = "plm")
form <- mv ~ crim + zn + indus + chas + nox + rm + 
    age + dis + rad + tax + ptratio + blacks + lstat
HedStata <- plm(form, Hedonic, model = "random", index = "townid", 
                random.models = c("within", "between"))
HedEviews <- plm(form, Hedonic, model = "random", index = "townid", 
                 random.models = c("within", "Between"))
HedEviewsWH <- update(HedEviews, random.models = "pooling")
screenreg(list(EViews = HedEviews, Stata = HedStata, "Wallace-Hussain" = HedEviewsWH), 
          digits = 5, single.row = TRUE)
## 
## ======================================================================================
##              EViews                   Stata                    Wallace-Hussain        
## --------------------------------------------------------------------------------------
## (Intercept)    9.68587 (0.19751) ***    9.67780 (0.20714) ***    9.68443 (0.19922) ***
## crim          -0.00741 (0.00105) ***   -0.00723 (0.00103) ***   -0.00738 (0.00105) ***
## zn             0.00008 (0.00065)        0.00004 (0.00069)        0.00007 (0.00066)    
## indus          0.00156 (0.00403)        0.00208 (0.00434)        0.00165 (0.00409)    
## chasyes       -0.00442 (0.02921)       -0.01059 (0.02896)       -0.00565 (0.02916)    
## nox           -0.00584 (0.00125) ***   -0.00586 (0.00125) ***   -0.00585 (0.00125) ***
## rm             0.00906 (0.00119) ***    0.00918 (0.00118) ***    0.00908 (0.00119) ***
## age           -0.00086 (0.00047)       -0.00093 (0.00046) *     -0.00087 (0.00047)    
## dis           -0.14442 (0.04409) **    -0.13288 (0.04568) **    -0.14236 (0.04439) ** 
## rad            0.09598 (0.02661) ***    0.09686 (0.02835) ***    0.09614 (0.02692) ***
## tax           -0.00038 (0.00018) *     -0.00037 (0.00019) *     -0.00038 (0.00018) *  
## ptratio       -0.02948 (0.00907) **    -0.02972 (0.00975) **    -0.02951 (0.00919) ** 
## blacks         0.56278 (0.10197) ***    0.57506 (0.10103) ***    0.56520 (0.10179) ***
## lstat         -0.29107 (0.02393) ***   -0.28514 (0.02385) ***   -0.28991 (0.02391) ***
## --------------------------------------------------------------------------------------
## s_idios        0.13025                  0.13025                  0.14050              
## s_id           0.11505                  0.12974                  0.12698              
## R^2            0.99091                  0.99029                  0.99081              
## Adj. R^2       0.99067                  0.99004                  0.99057              
## Num. obs.    506                      506                      506                    
## ======================================================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

The difference is due to the fact that Stata uses a between regression on \(N\) observations while EViews uses a between regression on \(\sum_n T_n\) observations, which are not the same on unbalanced panels. Note the use of between with or without the B capitalized ("Between" and "between") in the random.models argument. plm’s default is to use the between regression with \(\sum_n T_n\) observations when setting model = "random", random.method = "swar". The default employed is what the original paper for the unbalanced one-way Swamy-Arora estimator defined (in B. H. Baltagi and Chang (1994), p. 73). A more detailed analysis of Stata’s Swamy-Arora estimation procedure is given by Cottrell (2017).

Instrumental variable estimators

All of the models presented above may be estimated using instrumental variables (IV). The instruments are specified using two- or three-part formulas, each part being separated by a | sign :

  • the first part contains the covariates,
  • the second part contains the “double-exogenous†instruments, i.e., variables that can be used twice as instruments, using their within and the between transformation,
  • the third part contains the “single-exogenous†instruments, i.e., variables for which only the within transformation can be used as instruments, those variables being correlated with the individual effects.

The instrumental variables estimator used is indicated with the inst.method argument:

  • "bvk", from Balestra and Varadharajan–Krishnakumar (1987), the default value : in this case, all the instruments are introduced in quasi-differences, using the same transformation as for the response and the covariates,
  • "baltagi", from B. H. Baltagi (1981), the instruments of the second part are introduced twice by using the between and the within transformation and instruments of the third part are introduced with only the within transformation,
  • "am", from Takeshi Amemiya and MaCurdy (1986), in addition to the instrument set of "baltagi", the within transformation of the variables of the second part for each period are also included as instruments,
  • "bms", from Breusch, Mizon, and Schmidt (1989), in addition to the instrument set of "baltagi", the within transformation of the variables of the second and the third part for each period are included as instruments.

The various possible values of the inst.method argument are not relevant for fixed effect IV models as there is only one method for this type of IV models but many for random effect IV models.

The instrumental variable estimators are illustrated in the following example from B. H. Baltagi (2005), pp. 117/120; B. H. Baltagi (2013), pp. 133/137; B. H. Baltagi (2021), pp. 162/165, tables 7.1, 7.3.

data("Crime", package = "plm")
crbalt <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen +
              ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed +
              lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year)
              | . - lprbarr - lpolpc + ltaxpc + lmix,
              data = Crime, model = "random", inst.method = "baltagi")
crbvk <- update(crbalt, inst.method = "bvk")
crwth <- update(crbalt, model = "within")
crbe  <- update(crbalt, model = "between")
screenreg(list(FE2SLS = crwth, BE2SLS = crbe, EC2SLS = crbalt, G2SLS = crbvk), 
          single.row = FALSE, digits = 5, omit.coef = "(region)|(year)",
          reorder.coef = c(1:16, 19, 18, 17))
## 
## ===================================================================
##              FE2SLS      BE2SLS        EC2SLS         G2SLS        
## -------------------------------------------------------------------
## lprbarr       -0.57551   -0.50294 *     -0.41293 ***   -0.41414    
##               (0.80218)  (0.24062)      (0.09740)      (0.22105)   
## lpolpc         0.65753    0.40844 *      0.43475 ***    0.50495 *  
##               (0.84687)  (0.19300)      (0.08970)      (0.22778)   
## lprbconv      -0.42314   -0.52477 ***   -0.32289 ***   -0.34325 ** 
##               (0.50194)  (0.09995)      (0.05355)      (0.13246)   
## lprbpris      -0.25026    0.18718       -0.18632 ***   -0.19005 ** 
##               (0.27946)  (0.31829)      (0.04194)      (0.07334)   
## lavgsen        0.00910   -0.22723       -0.01018       -0.00644    
##               (0.04899)  (0.17851)      (0.02702)      (0.02894)   
## ldensity       0.13941    0.22562 *      0.42903 ***    0.43434 ***
##               (1.02124)  (0.10247)      (0.05485)      (0.07115)   
## lwcon         -0.02873    0.31400       -0.00748       -0.00430    
##               (0.05351)  (0.25910)      (0.03958)      (0.04142)   
## lwtuc          0.03913   -0.19894        0.04545 *      0.04446 *  
##               (0.03086)  (0.19712)      (0.01979)      (0.02154)   
## lwtrd         -0.01775    0.05356       -0.00814       -0.00856    
##               (0.04531)  (0.29600)      (0.04138)      (0.04198)   
## lwfir         -0.00934    0.04170       -0.00364       -0.00403    
##               (0.03655)  (0.30562)      (0.02892)      (0.02946)   
## lwser          0.01859   -0.13543        0.00561        0.01056    
##               (0.03882)  (0.17365)      (0.02013)      (0.02158)   
## lwmfg         -0.24317   -0.04200       -0.20414 *     -0.20180 *  
##               (0.41955)  (0.15627)      (0.08044)      (0.08394)   
## lwfed         -0.45134    0.14803       -0.16351       -0.21346    
##               (0.52712)  (0.32565)      (0.15945)      (0.21510)   
## lwsta         -0.01875   -0.20309       -0.05405       -0.06012    
##               (0.28082)  (0.29815)      (0.10568)      (0.12031)   
## lwloc          0.26326    0.04444        0.16305        0.18354    
##               (0.31239)  (0.49436)      (0.11964)      (0.13968)   
## lpctymle       0.35112   -0.09472       -0.10811       -0.14587    
##               (1.01103)  (0.19180)      (0.13969)      (0.22681)   
## smsayes                  -0.08050       -0.22515       -0.25955    
##                          (0.14423)      (0.11563)      (0.14997)   
## lpctmin                   0.16890 **     0.18904 ***    0.19488 ***
##                          (0.05270)      (0.04150)      (0.04594)   
## (Intercept)              -1.97714       -0.95380       -0.45385    
##                          (4.00081)      (1.28397)      (1.70298)   
## -------------------------------------------------------------------
## R^2            0.44364    0.87385        0.59847        0.59230    
## Adj. R^2       0.32442    0.83729        0.58115        0.57472    
## Num. obs.    630         90            630            630          
## s_idios                                  0.14924        0.14924    
## s_id                                     0.21456        0.21456    
## ===================================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

The Hausman-Taylor model (Hausman and Taylor (1981)) may be estimated with the plm function by setting argument random.method = "ht" and inst.method = "baltagi". The following example is from B. H. Baltagi (2005), p. 130; B. H. Baltagi (2013), pp. 145-7, tables 7.4-7.6; B. H. Baltagi (2021), pp. 174-6 , tables 7.5-7.7.

data("Wages", package = "plm")
ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp^2) + 
            bluecol + ind + union + sex + black + ed | 
            bluecol + south + smsa + ind + sex + black | 
            wks + married + exp + I(exp^2) + union, 
          data = Wages, index = 595, 
          inst.method = "baltagi", model = "random", 
          random.method = "ht")

am  <- update(ht, inst.method = "am")
bms <- update(ht, inst.method = "bms")
screenreg(list("Hausman-Taylor" = ht, "Amemiya-MaCurdy" = am,
               "Breusch-Mizon-Schmidt" = bms),
          digits = 5, single.row = FALSE)
## 
## ===================================================================
##              Hausman-Taylor  Amemiya-MaCurdy  Breusch-Mizon-Schmidt
## -------------------------------------------------------------------
## (Intercept)     2.91273 ***     2.92734 ***      1.97944 ***       
##                (0.28365)       (0.27513)        (0.26724)          
## wks             0.00084         0.00084          0.00080           
##                (0.00060)       (0.00060)        (0.00060)          
## southyes        0.00744         0.00728          0.01467           
##                (0.03196)       (0.03194)        (0.03188)          
## smsayes        -0.04183 *      -0.04195 *       -0.05204 **        
##                (0.01896)       (0.01895)        (0.01891)          
## marriedyes     -0.02985        -0.03009         -0.03926 *         
##                (0.01898)       (0.01897)        (0.01892)          
## exp             0.11313 ***     0.11297 ***      0.10867 ***       
##                (0.00247)       (0.00247)        (0.00246)          
## exp^2          -0.00042 ***    -0.00042 ***     -0.00049 ***       
##                (0.00005)       (0.00005)        (0.00005)          
## bluecolyes     -0.02070        -0.02085         -0.01539           
##                (0.01378)       (0.01377)        (0.01374)          
## ind             0.01360         0.01363          0.01902           
##                (0.01524)       (0.01523)        (0.01520)          
## unionyes        0.03277 *       0.03248 *        0.03786 *         
##                (0.01491)       (0.01489)        (0.01486)          
## sexfemale      -0.13092        -0.13201         -0.18027           
##                (0.12666)       (0.12660)        (0.12639)          
## blackyes       -0.28575        -0.28590         -0.15636           
##                (0.15570)       (0.15549)        (0.15506)          
## ed              0.13794 ***     0.13720 ***      0.22066 ***       
##                (0.02125)       (0.02057)        (0.01985)          
## -------------------------------------------------------------------
## s_idios         0.15180         0.15180          0.15180           
## s_id            0.94180         0.94180          0.94180           
## R^2             0.60945         0.60948          0.60686           
## Adj. R^2        0.60833         0.60835          0.60572           
## Num. obs.    4165            4165             4165                 
## ===================================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

Nested error component model

This section shows how the nested error component model as per B. H. Baltagi, Song, and Jung (2001) can be estimated. The model is given by :

\[ y_{nt}=\alpha + \beta^\top x_{jnt} + u_{jnt} = \alpha + \beta^\top x_{jnt} + \mu_{j} + \nu_{jn} + \epsilon_{jnt} \] where \(n\) and \(t\) are the individual and time indexes and \(j\) is the group index in which the individuals are nested. The error \(u_{jnt}\) consists of three components :

  • \(\mu_j\) is the group effect,
  • \(\nu_{jn}\) the nested effect of the individual nested in group \(j\)
  • \(\epsilon_{jnt}\) is the idiosyncratic error.

In the estimated examples below (replication of B. H. Baltagi, Song, and Jung (2001), p. 378, table 6; B. H. Baltagi (2021), p. 248, table 9.1), states are nested within regions. The group index is given in the 3rd position of the index argument to pdata.frame or to plm directly and plm’s argument effect is set to "nested":

data("Produc", package = "plm")
swar <- plm(form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp, 
            Produc, index = c("state", "year", "region"), model = "random", effect = "nested", random.method = "swar")
walhus <- update(swar, random.method = "walhus")
amem <- update(swar, random.method = "amemiya")
screenreg(list("Swamy-Arora" = swar, "Wallace-Hussain" = walhus, "Amemiya" = amem), digits = 5)
## 
## ==========================================================
##              Swamy-Arora    Wallace-Hussain  Amemiya      
## ----------------------------------------------------------
## (Intercept)    2.08921 ***    2.08165 ***      2.13133 ***
##               (0.14570)      (0.15035)        (0.16014)   
## log(pc)        0.27412 ***    0.27256 ***      0.26448 ***
##               (0.02054)      (0.02093)        (0.02176)   
## log(emp)       0.73984 ***    0.74164 ***      0.75811 ***
##               (0.02575)      (0.02607)        (0.02661)   
## log(hwy)       0.07274 ***    0.07493 ***      0.07211 ** 
##               (0.02203)      (0.02235)        (0.02363)   
## log(water)     0.07645 ***    0.07639 ***      0.07616 ***
##               (0.01386)      (0.01387)        (0.01402)   
## log(util)     -0.09437 ***   -0.09523 ***     -0.10151 ***
##               (0.01677)      (0.01677)        (0.01705)   
## unemp         -0.00616 ***   -0.00615 ***     -0.00584 ***
##               (0.00090)      (0.00091)        (0.00091)   
## ----------------------------------------------------------
## s_idios        0.03676        0.03762          0.03676    
## s_id           0.06541        0.06713          0.08306    
## s_gp           0.03815        0.05239          0.04659    
## R^2            0.97387        0.97231          0.96799    
## Adj. R^2       0.97368        0.97210          0.96776    
## Num. obs.    816            816              816          
## ==========================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05

Bibliography

Amemiya, T. 1971. “The Estimation of the Variances in a Variance–Components Model.†International Economic Review 12: 1–13.
Amemiya, Takeshi, and Thomas E MaCurdy. 1986. “Instrumental-Variable Estimation of an Error-Components Model.†Econometrica 54 (4): 869–80.
Balestra, P., and J. Varadharajan–Krishnakumar. 1987. “Full Information Estimations of a System of Simultaneous Equations with Error Components.†Econometric Theory 3: 223–46.
Baltagi, B. H. 1981. “Simultaneous Equations with Error Components.†Journal of Econometrics 17: 21–49.
Baltagi, B. H. 2005. Econometric Analysis of Panel Data. 3rd ed. John Wiley; Sons ltd.
———. 2009. A Companion to Econometric Analysis of Panel Data. John Wiley; Sons ltd.
———. 2013. Econometric Analysis of Panel Data. 5th ed. John Wiley; Sons ltd.
———. 2021. Econometric Analysis of Panel Data. 6th ed. Springer.
Baltagi, B. H., and Y. J. Chang. 1994. “Incomplete Panels: A Comparative Study of Alternative Estimators for the Unbalanced One-Way Error Component Regression Model.†Journal of Econometrics 62: 67–89.
Baltagi, B. H., S. H. Song, and B. C. Jung. 2001. “The Unbalanced Nested Error Component Regression Model.†Journal of Econometrics 101: 357–81.
Breusch, Trevor S, Grayham E Mizon, and Peter Schmidt. 1989. “Efficient Estimation Using Panel Data.†Econometrica 57 (3): 695–700.
Cottrell, A. 2017. “Random Effects Estimators for Unbalanced Panel Data: A Monte Carlo Analysis.†Gretl Working Papers, no. 4. https://EconPapers.repec.org/RePEc:anc:wgretl:4.
Hausman, J. A., and W. E. Taylor. 1981. “Panel Data and Unobservable Individual Effects.†Econometrica 49: 1377–98.
Nerlove, M. 1971. “Further Evidence on the Estimation of Dynamic Economic Relations from a Time–Series of Cross–Sections.†Econometrica 39: 359–82.
Swamy, P. A. V. B., and S. S Arora. 1972. “The Exact Finite Sample Properties of the Estimators of Coefficients in the Error Components Regression Models.†Econometrica 40: 261–75.
Wallace, T. D., and A. Hussain. 1969. “The Use of Error Components Models in Combining Cross Section with Time Series Data.†Econometrica 37 (1): 55–72.
plm/inst/doc/C_plmModelComponents.R0000644000176200001440000000602514742231571017001 0ustar liggesusers## ----setup, echo=FALSE-------------------------------------------------------- library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ## ----------------------------------------------------------------------------- library("plm") data("SeatBelt", package = "pder") SeatBelt$occfat <- with(SeatBelt, log(farsocc / (vmtrural + vmturban))) pSB <- pdata.frame(SeatBelt) ## ----------------------------------------------------------------------------- formols <- occfat ~ log(usage) + log(percapin) mfols <- model.frame(pSB, formols) Xols <- model.matrix(mfols) y <- pmodel.response(mfols) coef(lm.fit(Xols, y)) ## ----------------------------------------------------------------------------- coef(plm(formols, SeatBelt, model = "pooling")) ## ----------------------------------------------------------------------------- formiv1 <- occfat ~ log(usage) + log(percapin) | log(percapin) + ds + dp + dsp formiv2 <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp ## ----------------------------------------------------------------------------- mfSB1 <- model.frame(pSB, formiv1) X1 <- model.matrix(mfSB1, rhs = 1) W1 <- model.matrix(mfSB1, rhs = 2) head(X1, 3) ; head(W1, 3) ## ----------------------------------------------------------------------------- library("Formula") head(model.frame(Formula(formiv2), SeatBelt), 3) head(model.frame(Formula(formiv2), SeatBelt, dot = "previous"), 3) ## ----------------------------------------------------------------------------- mfSB2 <- model.frame(pSB, formiv2) X2 <- model.matrix(mfSB2, rhs = 1) W2 <- model.matrix(mfSB2, rhs = 2) head(X2, 3) ; head(W2, 3) ## ----------------------------------------------------------------------------- HX1 <- lm.fit(W1, X1)$fitted.values head(HX1, 3) ## ----------------------------------------------------------------------------- coef(lm.fit(HX1, y)) ## ----------------------------------------------------------------------------- coef(plm(formiv1, SeatBelt, model = "pooling")) ## ----------------------------------------------------------------------------- coef(AER::ivreg(formiv1, data = SeatBelt)) ## ----eval = FALSE, include = FALSE-------------------------------------------- # X2 <- model.matrix(Formula(form1), mfSB, rhs = 2, dot = "previous") # # formols <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp # # form1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + # log(precentb) + log(precenth) + log(densrur) + log(densurb) + # log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + # log(fueltax) + lim65 + lim70p + mlda21 + bac08 # form2 <- . ~ . | . - log(usage) + ds + dp +dsp # # jorm1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + # log(precentb) + log(precenth) + log(densrur) + log(densurb) + # log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + # log(fueltax) + lim65 + lim70p + mlda21 + bac08 | . - log(usage) + # ds + dp + dsp # jorm2 <- noccfat ~ . | . plm/inst/doc/A_plmPackage.html0000644000176200001440000073053114742231564015777 0ustar liggesusers Panel data econometrics in R:

Panel data econometrics in R:

the plm package

Yves Croissant

Giovanni Millo

Abstract

This introduction to the plm package is a modified and extended version of Croissant and Millo (2008), published in the Journal of Statistical Software.

Panel data econometrics is obviously one of the main fields in the statistics profession, but most of the models used are difficult to estimate with only plain R. plm is a package for R which intends to make the estimation of linear panel models straightforward. plm provides functions to estimate a wide variety of models and to make (robust) inference.

Introduction

Panel data econometrics is a continuously developing field. The increasing availability of data observed on cross-sections of units (like households, firms, countries etc.) and over time has given rise to a number of estimation approaches exploiting this double dimensionality to cope with some of the typical problems associated with economic data, first of all that of unobserved heterogeneity.

Timewise observation of data from different observational units has long been common in other fields of statistics (where they are often termed longitudinal data). In the panel data field as well as in others, the econometric approach is nevertheless peculiar with respect to experimental contexts, as it is emphasizing model specification and testing and tackling a number of issues arising from the particular statistical problems associated with economic data.

Thus, while a very comprehensive software framework for (among many other features) maximum likelihood estimation of linear regression models for longitudinal data, packages nlme (J. Pinheiro et al. 2007) and lme4 (Bates 2007), is available in the R ( Development Core Team (2008)) environment and can be used, e.g., for estimation of random effects panel models, its use is not intuitive for a practicing econometrician, and maximum likelihood estimation is only one of the possible approaches to panel data econometrics. Moreover, economic panel data sets often happen to be unbalanced (i.e., they have a different number of observations between groups), which case needs some adaptation to the methods and is not compatible with those in nlme. Hence the need for a package doing panel data “from the econometrician’s viewpoint†and featuring at a minimum the basic techniques econometricians are used to: random and fixed effects estimation of static linear panel data models, variable coefficients models, generalized method of moments estimation of dynamic models; and the basic toolbox of specification and misspecification diagnostics.

Furthermore, we felt there was a need for automation of some basic data management tasks such as lagging, summing and, more in general, applying (in the R sense) functions to the data, which, although conceptually simple, become cumbersome and error-prone on two-dimensional data, especially in the case of unbalanced panels.

This paper is organized as follows: Section linear panel model presents a very short overview of the typical model taxonomy1. Section software approach discusses the software approach used in the package. The next three sections present the functionalities of the package in more detail: data management (Section managing data and formulae), estimation (Section model estimation) and testing (Section tests), giving a short description and illustrating them with examples. Section plm vs nlme and lme4 compares the approach in plm to that of nlme and lme4, highlighting the features of the latter two that an econometrician might find most useful. Section conclusion concludes the paper.

The linear panel model

The basic linear panel models used in econometrics can be described through suitable restrictions of the following general model:

\[\begin{equation*} y_{it}=\alpha_{it} + \beta_{it}^\top x_{it} + u_{it} \end{equation*}\]

where \(i=1, ..., n\) is the individual (group, country …) index, \(t=1, ..., T\) is the time index and \(u_{it}\) a random disturbance term of mean \(0\).

Of course \(u_{it}\) is not estimable with \(N = n \times T\) data points. A number of assumptions are usually made about the parameters, the errors and the exogeneity of the regressors, giving rise to a taxonomy of feasible models for panel data.

The most common one is parameter homogeneity, which means that \(\alpha_{it}=\alpha\) for all \(i,t\) and \(\beta_{it}=\beta\) for all \(i,t\). The resulting model

\[\begin{equation*} y_{it}=\alpha + \beta^\top x_{it} + u_{it} \end{equation*}\]

is a standard linear model pooling all the data across \(i\) and \(t\).

To model individual heterogeneity, one often assumes that the error term has two separate components, one of which is specific to the individual and doesn’t change over time2. This is called the unobserved effects model:

\[\begin{equation} (\#eq:errcomp) y_{it}=\alpha + \beta^\top x_{it} + \mu_i + \epsilon_{it} \end{equation}\]

The appropriate estimation method for this model depends on the properties of the two error components. The idiosyncratic error \(\epsilon_{it}\) is usually assumed well-behaved and independent of both the regressors \(x_{it}\) and the individual error component \(\mu_i\). The individual component may be in turn either independent of the regressors or correlated.

If it is correlated, the ordinary least squares (OLS) estimator of \(\beta\) would be inconsistent, so it is customary to treat the \(\mu_i\) as a further set of \(n\) parameters to be estimated, as if in the general model \(\alpha_{it}=\alpha_{i}\) for all \(t\). This is called the fixed effects (a.k.a. within or least squares dummy variables) model, usually estimated by OLS on transformed data, and gives consistent estimates for \(\beta\).

If the individual-specific component \(\mu_i\) is uncorrelated with the regressors, a situation which is usually termed random effects, the overall error \(u_{it}\) also is, so the OLS estimator is consistent. Nevertheless, the common error component over individuals induces correlation across the composite error terms, making OLS estimation inefficient, so one has to resort to some form of feasible generalized least squares (GLS) estimators. This is based on the estimation of the variance of the two error components, for which there are a number of different procedures available.

If the individual component is missing altogether, pooled OLS is the most efficient estimator for \(\beta\). This set of assumptions is usually labelled pooling model, although this actually refers to the errors’ properties and the appropriate estimation method rather than the model itself. If one relaxes the usual hypotheses of well-behaved, white noise errors and allows for the idiosyncratic error \(\epsilon_{it}\) to be arbitrarily heteroskedastic and serially correlated over time, a more general kind of feasible GLS is needed, called the unrestricted or general GLS. This specification can also be augmented with individual-specific error components possibly correlated with the regressors, in which case it is termed fixed effects GLS.

Another way of estimating unobserved effects models through removing time-invariant individual components is by first-differencing the data: lagging the model and subtracting, the time-invariant components (the intercept and the individual error component) are eliminated, and the model

\[\begin{equation*} \Delta y_{it}= \beta^\top \Delta x_{it} + \Delta u_{it} \end{equation*}\]

(where \(\Delta y_{it}=y_{it}-y_{i,t-1}\), \(\Delta x_{it}=x_{it}-x_{i,t-1}\) and, from @ref(eq:errcomp), \(\Delta u_{it}=u_{it}-u_{i,t-1}=\Delta \epsilon_{it}\) for \(t=2,...,T\)) can be consistently estimated by pooled OLS. This is called the first-difference or FD estimator. Its relative efficiency, and so reasons for choosing it against other consistent alternatives, depends on the properties of the error term. The FD estimator is usually preferred if the errors \(u_{it}\) are strongly persistent in time, because then the \(\Delta u_{it}\) will tend to be serially uncorrelated.

Lastly, the between model, which is computed on time (group) averages of the data, discards all the information due to intragroup variability but is consistent in some settings (e.g., non-stationarity) where the others are not, and is often preferred to estimate long-run relationships.

Variable coefficients models relax the assumption that \(\beta_{it}=\beta\) for all \(i,t\). Fixed coefficients models allow the coefficients to vary along one dimension, like \(\beta_{it}=\beta_i\) for all \(t\). Random coefficients models instead assume that coefficients vary randomly around a common average, as \(\beta_{it}=\beta+\eta_{i}\) for all \(t\), where \(\eta_{i}\) is a group– (time–) specific effect with mean zero.

The hypotheses on parameters and error terms (and hence the choice of the most appropriate estimator) are usually tested by means of:

  • pooling tests to check poolability, i.e., the hypothesis that the same coefficients apply across all individuals,
  • if the homogeneity assumption over the coefficients is established, the next step is to establish the presence of unobserved effects, comparing the null of spherical residuals with the alternative of group (time) specific effects in the error term,
  • the choice between fixed and random effects specifications is based on Hausman-type tests, comparing the two estimators under the null of no significant difference: if this is not rejected, the more efficient random effects estimator is chosen,
  • even after this step, departures of the error structure from sphericity can further affect inference, so that either screening tests or robust diagnostics are needed.

Dynamic models and in general lack of strict exogeneity of the regressors, pose further problems to estimation which are usually dealt with in the generalized method of moments (GMM) framework.

These were, in our opinion, the basic requirements of a panel data econometrics package for the R language and environment. Some, as often happens with R, were already fulfilled by packages developed for other branches of computational statistics, while others (like the fixed effects or the between estimators) were straightforward to compute after transforming the data, but in every case there were either language inconsistencies w.r.t. the standard econometric toolbox or subtleties to be dealt with (like, for example, appropriate computation of standard errors for the demeaned model, a common pitfall), so we felt there was need for an “all in one†econometrics-oriented package allowing to make specification searches, estimation and inference in a natural way.

Software approach

Data structure

Panel data have a special structure: each row of the data corresponds to a specific individual and time period. In plm the data argument may be an ordinary data.frame but, in this case, an argument called index has to be added to indicate the structure of the data. This can be:

  • NULL (the default value), it is then assumed that the first two columns contain the individual and the time index and that observations are ordered by individual and by time period,
  • a character string, which should be the name of the individual index,
  • a character vector of length two containing the names of the individual and the time index,
  • an integer which is the number of individuals (only in case of a balanced panel with observations ordered by individual).

The pdata.frame function is then called internally, which returns a pdata.frame which is a data.frame with an attribute called index. This attribute is a data.frame that contains the individual and the time indexes.

It is also possible to use directly the pdata.frame function and then to use the pdata.frame in the estimation functions.

Interface

Estimation interface

Package plm provides various functions for panel data estimation, among them:

  • plm: estimation of the basic panel models and instrumental variable panel models, i.e., between and first-difference models and within and random effect models. Models are estimated internally using the lm function on transformed data,
  • pvcm: estimation of models with variable coefficients,
  • pgmm: estimation of generalized method of moments models,
  • pggls: estimation of general feasible generalized least squares models,
  • pmg: estimators for mean groups (MG), demeaned MG (DMG) and common correlated effects MG (CCEMG) for heterogeneous panel models,
  • pcce: estimators for common correlated effects mean groups (CCEMG) and pooled (CCEP) for panel data with common factors,
  • pldv: panel estimators for limited dependent variables.

The interface of these functions is consistent with the lm() function. Namely, their first two arguments are formula and data (which should be a data.frame and is mandatory). Three additional arguments are common to these functions:

  • index: this argument enables the estimation functions to identify the structure of the data, i.e., the individual and the time period for each observation,
  • effect: the kind of effects to include in the model, i.e., individual effects, time effects or both3,
  • model: the kind of model to be estimated, most of the time a model with fixed effects or a model with random effects.

The results of these four functions are stored in an object which class has the same name of the function. They all inherit from class panelmodel. A panelmodel object contains: coefficients, residuals, fitted.values, vcov, df.residual and call and functions that extract these elements are provided.

Testing interface

The diagnostic testing interface provides both formula and panelmodel methods for most functions, with some exceptions. The user may thus choose whether to employ results stored in a previously estimated panelmodel object or to re-estimate it for the sake of testing.

Although the first strategy is the most efficient one, diagnostic testing on panel models mostly employs OLS residuals from pooling model objects, whose estimation is computationally inexpensive. Therefore most examples in the following are based on formula methods, which are perhaps the cleanest for illustrative purposes.

Computational approach to estimation

The feasible GLS methods needed for efficient estimation of unobserved effects models have a simple closed-form solution: once the variance components have been estimated and hence the covariance matrix of errors \(\hat{V}\), model parameters can be estimated as

\[\begin{equation} (\#eq:naive) \hat{\beta}=(X^\top \hat{V}^{-1} X)^{-1} (X^\top \hat{V}^{-1} y) \end{equation}\]

Nevertheless, in practice plain computation of \(\hat{\beta}\) has long been an intractable problem even for moderate-sized data sets because of the need to invert the \(N\times N\) \(\hat{V}\) matrix. With the advances in computer power, this is no more so, and it is possible to program the “naive†estimator @ref(eq:naive) in R with standard matrix algebra operators and have it working seamlessly for the standard “guinea pigsâ€, e.g., the Grunfeld data. Estimation with a couple of thousands of data points also becomes feasible on a modern machine, although excruciatingly slow and definitely not suitable for everyday econometric practice. Memory limits would also be very near because of the storage needs related to the huge \(\hat{V}\) matrix. An established solution exists for the random effects model which reduces the problem to an ordinary least squares computation.

The (quasi–)demeaning framework

The estimation methods for the basic models in panel data econometrics, the pooled OLS, random effects and fixed effects (or within) models, can all be described inside the OLS estimation framework. In fact, while pooled OLS simply pools data, the standard way of estimating fixed effects models with, say, group (time) effects entails transforming the data by subtracting the average over time (group) to every variable, which is usually termed time-demeaning. In the random effects case, the various feasible GLS estimators which have been put forth to tackle the issue of serial correlation induced by the group-invariant random effect have been proven to be equivalent (as far as estimation of \(\beta\)s is concerned) to OLS on partially demeaned data, where partial demeaning is defined as:

\[\begin{equation} (\#eq:ldemmodel) y_{it} - \theta \bar{y}_i = ( X_{it} - \theta \bar{X}_{i} ) \beta + ( u_{it} - \theta \bar{u}_i ) \end{equation}\]

where \(\theta=1-[\sigma_u^2 / (\sigma_u^2 + T \sigma_e^2)]^{1/2}\), \(\bar{y}\) and \(\bar{X}\) denote time means of \(y\) and \(X\), and the disturbance \(v_{it} - \theta \bar{v}_i\) is homoskedastic and serially uncorrelated. Thus the feasible RE estimate for \(\beta\) may be obtained estimating \(\hat{\theta}\) and running an OLS regression on the transformed data with lm(). The other estimators can be computed as special cases: for \(\theta=1\) one gets the fixed effects estimator, for \(\theta=0\) the pooled OLS one.

Moreover, instrumental variable estimators of all these models may also be obtained using several calls to lm().

For this reason the three above estimators have been grouped inside the same function.

On the output side, a number of diagnostics and a very general coefficients’ covariance matrix estimator also benefits from this framework, as they can be readily calculated applying the standard OLS formulas to the demeaned data, which are contained inside plm objects. This will be the subject of subsection inference in the panel model.

The object-oriented approach to general GLS computations

The covariance matrix of errors in general GLS models is too generic to fit the quasi-demeaning framework, so this method calls for a full-blown application of GLS as in @ref(eq:naive). On the other hand, this estimator relies heavily on \(n\)–asymptotics, making it theoretically most suitable for situations which forbid it computationally: e.g., “short†micropanels with thousands of individuals observed over few time periods.

R has general facilities for fast matrix computation based on object orientation: particular types of matrices (symmetric, sparse, dense etc.) are assigned the relevant class and the additional information on structure is used in the computations, sometimes with dramatic effects on performance (see Bates (2004)) and packages Matrix (see Bates and Maechler (2016)) and SparseM (see Koenker and Ng (2016)). Some optimized linear algebra routines are available in the R package bdsmatrix (see Therneau (2014)) which exploit the particular block-diagonal and symmetric structure of \(\hat{V}\) making it possible to implement a fast and reliable full-matrix solution to problems of any practically relevant size.

The \(\hat{V}\) matrix is constructed as an object of class bdsmatrix. The peculiar properties of this matrix class are used for efficiently storing the object in memory and then by ad-hoc versions of the solve and crossprod methods, dramatically reducing computing times and memory usage. The resulting matrix is then used “the naive way†as in @ref(eq:naive) to compute \(\hat{\beta}\), resulting in speed comparable to that of the demeaning solution.

Inference in the panel model

General frameworks for restrictions and linear hypotheses testing are available in the R environment4. These are based on the Wald test, constructed as \(\hat{\beta}^\top \hat{V}^{-1} \hat{\beta}\), where \(\hat{\beta}\) and \(\hat{V}\) are consistent estimates of \(\beta\) and \(V(\beta)\), The Wald test may be used for zero-restriction (i.e., significance) testing and, more generally, for linear hypotheses in the form \((R \hat{\beta} - r)^\top [R \hat{V} R^\top ]^{-1} (R \hat{\beta} - r)\)5. To be applicable, the test functions require extractor methods for coefficients’ and covariance matrix estimates to be defined for the model object to be tested. Model objects in plm all have coef() and vcov() methods and are therefore compatible with the above functions.

In the same framework, robust inference is accomplished substituting (“plugging inâ€) a robust estimate of the coefficient covariance matrix into the Wald statistic formula. In the panel context, the estimator of choice is the White system estimator. This called for a flexible method for computing robust coefficient covariance matrices à la White for plm objects.

A general White system estimator for panel data is:

\[\begin{equation*} \hat{V}_R(\beta)=(X^\top X)^{-1} \sum_{i=1}^n{X_i^\top E_i X_i} (X^\top X)^{-1} \end{equation*}\]

where \(E_i\) is a function of the residuals \(\hat{e}_{it}, \; t=1, \dots T\) chosen according to the relevant heteroskedasticity and correlation structure. Moreover, it turns out that the White covariance matrix calculated on the demeaned model’s regressors and residuals (both part of plm objects) is a consistent estimator of the relevant model’s parameters’ covariance matrix, thus the method is readily applicable to models estimated by random or fixed effects, first difference or pooled OLS methods. Different pre-weighting schemes taken from package sandwich (see Zeileis (2004); Lumley and Zeileis (2015)) are also implemented to improve small-sample performance. Robust estimators with any combination of covariance structures and weighting schemes can be passed on to the testing functions.

Managing data and formulae

The package is now illustrated by application to some well-known examples. It is loaded using

library("plm")

The four data sets used are EmplUK which was used by M. Arellano and Bond (1991), the Grunfeld data (Kleiber and Zeileis 2008) which is used in several econometric books, the Produc data used by Munnell (1990) and the Wages used by Cornwell and Rupert (1988).

data("EmplUK", package="plm")
data("Produc", package="plm")
data("Grunfeld", package="plm")
data("Wages", package="plm")

Data structure

As observed above, the current version of plm is capable of working with a regular data.frame without any further transformation, provided that the individual and time indexes are in the first two columns, as in all the example data sets but Wages. If this weren’t the case, an index optional argument would have to be passed on to the estimating and testing functions.

head(Grunfeld)
##   firm year   inv  value capital
## 1    1 1935 317.6 3078.5     2.8
## 2    1 1936 391.8 4661.7    52.6
## 3    1 1937 410.6 5387.1   156.9
## 4    1 1938 257.7 2792.2   209.2
## 5    1 1939 330.8 4313.2   203.4
## 6    1 1940 461.2 4643.9   207.2
E <- pdata.frame(EmplUK, index=c("firm","year"), drop.index=TRUE, row.names=TRUE)
head(E)
##        sector   emp    wage capital   output
## 1-1977      7 5.041 13.1516  0.5894  95.7072
## 1-1978      7 5.600 12.3018  0.6318  97.3569
## 1-1979      7 5.015 12.8395  0.6771  99.6083
## 1-1980      7 4.715 13.8039  0.6171 100.5501
## 1-1981      7 4.093 14.2897  0.5076  99.5581
## 1-1982      7 3.166 14.8681  0.4229  98.6151
head(attr(E, "index"))
##   firm year
## 1    1 1977
## 2    1 1978
## 3    1 1979
## 4    1 1980
## 5    1 1981
## 6    1 1982

Two further arguments are logical: drop.index = TRUE drops the indexes from the data.frame and row.names = TRUE computes “fancy†row names by pasting the individual and the time indexes. While extracting a series from a pdata.frame, a pseries is created, which is the original series with the index attribute. This object has specific methods, like summary and as.matrix. The former indicates the total variation of the variable and the shares of this variation due to the individual and the time dimensions. The latter gives the matrix representation of the series, with, by default, individuals as rows and times as columns.

summary(E$emp)
## total sum of squares: 261539.4 
##          id        time 
## 0.980765381 0.009108488 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.104   1.181   2.287   7.892   7.020 108.562
head(as.matrix(E$emp))
##     1976   1977   1978   1979   1980   1981   1982   1983 1984
## 1     NA  5.041  5.600  5.015  4.715  4.093  3.166  2.936   NA
## 2     NA 71.319 70.643 70.918 72.031 73.689 72.419 68.518   NA
## 3     NA 19.156 19.440 19.900 20.240 19.570 18.125 16.850   NA
## 4     NA 26.160 26.740 27.280 27.830 27.169 24.504 22.562   NA
## 5 86.677 87.100 87.000 90.400 89.200 82.700 73.700     NA   NA
## 6  0.748  0.766  0.762  0.729  0.731  0.779  0.782     NA   NA

Data transformation

Panel data estimation requires to apply different transformations to raw series. If \(x\) is a series of length \(nT\) (where \(n\) is the number of individuals and \(T\) is the number of time periods), the transformed series \(\tilde{x}\) is obtained as \(\tilde{x}=Mx\) where \(M\) is a transformation matrix. Denoting \(j\) a vector of one of length \(T\) and \(I_n\) the identity matrix of dimension \(n\), we get:

  • the between transformation: \(P=\frac{1}{T}I_n\otimes jj'\) returns a vector containing the individual means. The Between and between functions perform this operation, the first one returning a vector of length \(nT\), the second one a vector of length \(n\),
  • the within transformation: \(Q=I_{nT}-P\) returns a vector containing the values in deviation from the individual means. The Within function performs this operation.
  • the first difference transformation \(D=I_n \otimes d\) where

\(d=\left( \begin{array}{ccccccc} 1 & -1 & 0 & 0 & ... & 0 & 0 \\ 0 & 1 & -1 & 0 & ... & 0 & 0 \\ 0 & 0 & 1 & -1 & ... & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & 1 & -1 \\ \end{array} \right)\)

is of dimension \((T-1,T)\).

Note that R’s diff() and lag() functions don’t compute correctly these transformations for panel data because they are unable to identify when there is a change in individual in the data. Therefore, specific methods for pseries objects have been written in order to handle correctly panel data. Note that compared to the lag() method for ts objects, the order of lags are indicated by a positive integer. Moreover, 0 is a relevant value and a vector argument may be provided:

head(lag(E$emp, 0:2))
##            0     1     2
## 1-1977 5.041    NA    NA
## 1-1978 5.600 5.041    NA
## 1-1979 5.015 5.600 5.041
## 1-1980 4.715 5.015 5.600
## 1-1981 4.093 4.715 5.015
## 1-1982 3.166 4.093 4.715

Further functions called Between, between and Within are also provided to compute the between and the within transformation. The between returns unique values, whereas Between duplicates the values and returns a vector which length is the number of observations.

head(diff(E$emp), 10)
##     1-1977     1-1978     1-1979     1-1980     1-1981     1-1982     1-1983 
##         NA  0.5590000 -0.5850000 -0.2999997 -0.6220003 -0.9270000 -0.2299998 
##     2-1977     2-1978     2-1979 
##         NA -0.6760020  0.2750010
head(lag(E$emp, 2), 10)
## 1-1977 1-1978 1-1979 1-1980 1-1981 1-1982 1-1983 2-1977 2-1978 2-1979 
##     NA     NA  5.041  5.600  5.015  4.715  4.093     NA     NA 71.319
head(Within(E$emp))
##     1-1977     1-1978     1-1979     1-1980     1-1981     1-1982 
##  0.6744285  1.2334285  0.6484285  0.3484288 -0.2735715 -1.2005715
head(between(E$emp), 4)
##         1         2         3         4 
##  4.366571 71.362428 19.040143 26.035000
head(Between(E$emp), 10)
##         1         1         1         1         1         1         1         2 
##  4.366571  4.366571  4.366571  4.366571  4.366571  4.366571  4.366571 71.362428 
##         2         2 
## 71.362428 71.362428

Formulas

In some circumstances, standard formulas are not very useful to describe a model, notably while using instrumental variable like estimators: to deal with these situations, we use the Formula package.

The Formula package provides a class which enables to construct multi-part formula, each part being separated by a pipe sign (|).

The two formulas below are identical:

emp ~ wage + capital | lag(wage, 1) + capital
emp ~ wage + capital | . -wage + lag(wage, 1)

In the second case, the . means the previous parts which describes the covariates and this part is “updatedâ€. This is particularly interesting when there are a few external instruments.

Model estimation

Estimation of the basic models with plm

Several models can be estimated with plm by filling the model argument:

  • the fixed effects model ("within"), the default,
  • the pooling model ("pooling"),
  • the first-difference model ("fd"),
  • the between model ("between"),
  • the error components model ("random").

The basic use of plm is to indicate the model formula, the data and the model to be estimated. For example, the fixed effects model and the random effects model are estimated using:

grun.fe <- plm(inv~value+capital, data = Grunfeld, model = "within")
grun.re <- plm(inv~value+capital, data = Grunfeld, model = "random")

Methods to display a summary of the model estimation are available via summary. For example, for a random model, the summary method gives information about the variance of the components of the errors and some test statistics. Random effects of the estimated model can be extracted via ranef.

summary(grun.re)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, model = "random")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Effects:
##                   var std.dev share
## idiosyncratic 2784.46   52.77 0.282
## individual    7089.80   84.20 0.718
## theta: 0.8612
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -177.6063  -19.7350    4.6851   19.5105  252.8743 
## 
## Coefficients:
##               Estimate Std. Error z-value             Pr(>|z|)    
## (Intercept) -57.834415  28.898935 -2.0013              0.04536 *  
## value         0.109781   0.010493 10.4627 < 0.0000000000000002 ***
## capital       0.308113   0.017180 17.9339 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    2381400
## Residual Sum of Squares: 548900
## R-Squared:      0.7695
## Adj. R-Squared: 0.76716
## Chisq: 657.674 on 2 DF, p-value: < 0.000000000000000222
ranef(grun.re)
##            1            2            3            4            5            6 
##   -9.5242955  157.8910235 -172.8958044   29.9119801  -54.6790089   34.3461316 
##            7            8            9           10 
##   -7.8977584    0.6726376  -28.1393497   50.3144442

The fixed effects of a fixed effects model may be extracted easily using fixef. An argument type indicates how fixed effects should be computed: in levels by type = "level" (the default), in deviations from the overall mean by type = "dmean" or in deviations from the first individual by type = "dfirst".

fixef(grun.fe, type = "dmean")
##         1         2         3         4         5         6         7         8 
##  -11.5528  160.6498 -176.8279   30.9346  -55.8729   35.5826   -7.8095    1.1983 
##         9        10 
##  -28.4783   52.1761

The fixef function returns an object of class fixef. A summary method is provided, which prints the effects (in deviation from the overall intercept), their standard errors and the test of equality to the overall intercept.

summary(fixef(grun.fe, type = "dmean"))
##     Estimate Std. Error t-value        Pr(>|t|)    
## 1   -11.5528    49.7080 -0.2324       0.8164700    
## 2   160.6498    24.9383  6.4419 0.0000000009627 ***
## 3  -176.8279    24.4316 -7.2377 0.0000000000113 ***
## 4    30.9346    14.0778  2.1974       0.0292129 *  
## 5   -55.8729    14.1654 -3.9443       0.0001129 ***
## 6    35.5826    12.6687  2.8087       0.0054998 ** 
## 7    -7.8095    12.8430 -0.6081       0.5438694    
## 8     1.1983    13.9931  0.0856       0.9318489    
## 9   -28.4783    12.8919 -2.2090       0.0283821 *  
## 10   52.1761    11.8269  4.4116 0.0000172511647 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In case of a two-ways fixed effect model, argument effect is relevant in function fixef to extract specific effect fixed effects with possible values "individual" for individual fixed effects (default for two-ways fixed effect models), "time" for time fixed effects, and "twoways" for the sum of individual and time fixed effects. Example to extract the time fixed effects from a two-ways model:

grun.twfe <- plm(inv~value+capital, data=Grunfeld, model="within", effect="twoways")
fixef(grun.twfe, effect = "time")
##    1935    1936    1937    1938    1939    1940    1941    1942    1943    1944 
##  -86.90 -106.10 -127.59 -126.13 -156.37 -131.14 -105.70 -108.04 -129.88 -130.00 
##    1945    1946    1947    1948    1949    1950    1951    1952    1953    1954 
## -142.58 -118.07 -126.29 -130.62 -160.40 -162.80 -149.38 -151.53 -154.62 -180.43

More advanced use of plm

Random effects estimators

As observed above, the random effect model is obtained as a linear estimation on quasi-demeaned data. The parameter of this transformation is obtained using preliminary estimations.

Four estimators of this parameter are available, depending on the value of the argument random.method:

  • "swar": from Swamy and Arora (1972), the default value,
  • "walhus": from Wallace and Hussain (1969),
  • "amemiya": from T. Amemiya (1971),
  • "nerlove": from Nerlove (1971).
  • "ht": for Hausman-Taylor-type instrumental variable (IV) estimation, discussed later, see Section Instrumental variable estimator.

For example, to use the amemiya estimator:

grun.amem <- plm(inv~value+capital, data=Grunfeld,
                 model="random", random.method="amemiya")

The estimation of the variance of the error components are performed using the ercomp function, which has a method and an effect argument, and can be used by itself:

ercomp(inv~value+capital, data=Grunfeld, method = "amemiya", effect = "twoways")
##                   var std.dev share
## idiosyncratic 2644.13   51.42 0.256
## individual    7452.02   86.33 0.721
## time           243.78   15.61 0.024
## theta: 0.868 (id) 0.2787 (time) 0.2776 (total)

Introducing time or two-ways effects

The default behavior of plm is to introduce individual effects. Using the effect argument, one may also introduce:

  • time effects (effect = "time"),
  • individual and time effects (effect = "twoways").

For example, to estimate a two-ways effect model for the Grunfeld data:

grun.tways <- plm(inv~value+capital, data = Grunfeld, effect = "twoways",
                  model = "random", random.method = "amemiya")
summary(grun.tways)
## Twoways effects Random Effect Model 
##    (Amemiya's transformation)
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, effect = "twoways", 
##     model = "random", random.method = "amemiya")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Effects:
##                   var std.dev share
## idiosyncratic 2644.13   51.42 0.256
## individual    7452.02   86.33 0.721
## time           243.78   15.61 0.024
## theta: 0.868 (id) 0.2787 (time) 0.2776 (total)
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -176.9062  -18.0431    3.2697   17.1719  234.1735 
## 
## Coefficients:
##               Estimate Std. Error z-value             Pr(>|z|)    
## (Intercept) -63.767791  29.851537 -2.1362              0.03267 *  
## value         0.111386   0.010909 10.2102 < 0.0000000000000002 ***
## capital       0.323321   0.018772 17.2232 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    2066800
## Residual Sum of Squares: 518200
## R-Squared:      0.74927
## Adj. R-Squared: 0.74673
## Chisq: 588.717 on 2 DF, p-value: < 0.000000000000000222

In the “effects†section of the printed summary of the result, the variance of the three elements of the error term and the three parameters used in the transformation are printed.

Unbalanced panels

Estimations by plm support unbalanced panel models.

The following example is using data used by Harrison and Rubinfeld (1978) to estimate an hedonic housing prices function. It is reproduced in B. H. Baltagi and Chang (1994), table 2 (and in B. H. Baltagi (2005), pp. 172/4; B. H. Baltagi (2013), pp. 195/7 tables 9.1/3).

data("Hedonic", package = "plm")
Hed <- plm(mv~crim+zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+blacks+lstat,
           data = Hedonic, model = "random", index = "townid")
summary(Hed)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = mv ~ crim + zn + indus + chas + nox + rm + age + 
##     dis + rad + tax + ptratio + blacks + lstat, data = Hedonic, 
##     model = "random", index = "townid")
## 
## Unbalanced Panel: n = 92, T = 1-30, N = 506
## 
## Effects:
##                   var std.dev share
## idiosyncratic 0.01696 0.13025 0.562
## individual    0.01324 0.11505 0.438
## theta:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2505  0.5483  0.6284  0.6141  0.7147  0.7976 
## 
## Residuals:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.62902 -0.06712 -0.00156 -0.00216  0.06858  0.54973 
## 
## Coefficients:
##                 Estimate   Std. Error  z-value              Pr(>|z|)    
## (Intercept)  9.685866695  0.197510264  49.0398 < 0.00000000000000022 ***
## crim        -0.007411967  0.001047812  -7.0738   0.00000000000150795 ***
## zn           0.000078877  0.000650012   0.1213             0.9034166    
## indus        0.001556340  0.004034911   0.3857             0.6997051    
## chasyes     -0.004424737  0.029211764  -0.1515             0.8796041    
## nox         -0.005842506  0.001245183  -4.6921   0.00000270431168602 ***
## rm           0.009055167  0.001188629   7.6182   0.00000000000002573 ***
## age         -0.000857873  0.000467933  -1.8333             0.0667541 .  
## dis         -0.144418433  0.044093739  -3.2753             0.0010557 ** 
## rad          0.095983935  0.026610945   3.6069             0.0003098 ***
## tax         -0.000377396  0.000176926  -2.1331             0.0329190 *  
## ptratio     -0.029475776  0.009069842  -3.2499             0.0011546 ** 
## blacks       0.562775469  0.101973789   5.5188   0.00000003412743874 ***
## lstat       -0.291074917  0.023927306 -12.1650 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    987.94
## Residual Sum of Squares: 8.9988
## R-Squared:      0.99091
## Adj. R-Squared: 0.99067
## Chisq: 1199.5 on 13 DF, p-value: < 0.000000000000000222

Measures for the unbalancedness of a panel data set or the data used in estimated models are provided by function punbalancedness. It gives the measures \(\gamma\) and \(\nu\) from Ahrens and Pincus (1981) where for both 1 represents balanced data and the more unbalanced the data the lower the value.

punbalancedness(Hed)
##     gamma        nu 
## 0.4715336 0.5188292

Instrumental variable estimators

All of the models presented above may be estimated using instrumental variables. The instruments are specified at the end of the formula after a | sign (pipe).

The instrumental variables estimator used is indicated with the inst.method argument:

  • "bvk", from Balestra and Varadharajan–Krishnakumar (1987), the default value,
  • "baltagi", from B. H. Baltagi (1981),
  • "am", from Takeshi Amemiya and MaCurdy (1986),
  • "bms", from Trevor S. Breusch, Mizon, and Schmidt (1989).

An illustration is in the following example from B. H. Baltagi (2005), p. 120; B. H. Baltagi (2013), p. 137; B. H. Baltagi (2021), p. 165, table 7.3 (“G2SLSâ€).

data("Crime", package = "plm")
cr <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen +
          ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed +
          lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year)
          | . - lprbarr - lpolpc + ltaxpc + lmix,
          data = Crime, model = "random")
summary(cr)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## Instrumental variable estimation
##    (Balestra-Varadharajan-Krishnakumar's transformation)
## 
## Call:
## plm(formula = lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + 
##     lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + 
##     lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + 
##     smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, 
##     data = Crime, model = "random")
## 
## Balanced Panel: n = 90, T = 7, N = 630
## 
## Effects:
##                   var std.dev share
## idiosyncratic 0.02227 0.14924 0.326
## individual    0.04604 0.21456 0.674
## theta: 0.7457
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -0.7485357 -0.0709883  0.0040648  0.0784455  0.4756273 
## 
## Coefficients:
##                  Estimate Std. Error z-value      Pr(>|z|)    
## (Intercept)    -0.4538501  1.7029831 -0.2665      0.789852    
## lprbarr        -0.4141383  0.2210496 -1.8735      0.060998 .  
## lpolpc          0.5049461  0.2277778  2.2168      0.026634 *  
## lprbconv       -0.3432506  0.1324648 -2.5913      0.009563 ** 
## lprbpris       -0.1900467  0.0733392 -2.5913      0.009560 ** 
## lavgsen        -0.0064389  0.0289407 -0.2225      0.823935    
## ldensity        0.4343449  0.0711496  6.1047 0.00000000103 ***
## lwcon          -0.0042958  0.0414226 -0.1037      0.917403    
## lwtuc           0.0444589  0.0215448  2.0636      0.039060 *  
## lwtrd          -0.0085579  0.0419829 -0.2038      0.838476    
## lwfir          -0.0040305  0.0294569 -0.1368      0.891166    
## lwser           0.0105602  0.0215823  0.4893      0.624630    
## lwmfg          -0.2018020  0.0839373 -2.4042      0.016208 *  
## lwfed          -0.2134579  0.2151046 -0.9923      0.321029    
## lwsta          -0.0601232  0.1203149 -0.4997      0.617275    
## lwloc           0.1835363  0.1396775  1.3140      0.188846    
## lpctymle       -0.1458703  0.2268086 -0.6431      0.520131    
## lpctmin         0.1948763  0.0459385  4.2421 0.00002214292 ***
## regionwest     -0.2281821  0.1010260 -2.2586      0.023905 *  
## regioncentral  -0.1987703  0.0607475 -3.2721      0.001068 ** 
## smsayes        -0.2595451  0.1499718 -1.7306      0.083518 .  
## factor(year)82  0.0132147  0.0299924  0.4406      0.659500    
## factor(year)83 -0.0847693  0.0320010 -2.6490      0.008074 ** 
## factor(year)84 -0.1062027  0.0387893 -2.7379      0.006183 ** 
## factor(year)85 -0.0977457  0.0511681 -1.9103      0.056097 .  
## factor(year)86 -0.0719451  0.0605819 -1.1876      0.235004    
## factor(year)87 -0.0396595  0.0758531 -0.5228      0.601081    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    30.169
## Residual Sum of Squares: 12.419
## R-Squared:      0.5923
## Adj. R-Squared: 0.57472
## Chisq: 542.478 on 26 DF, p-value: < 0.000000000000000222

The Hausman-Taylor model (see Hausman and Taylor (1981)) may be estimated with the plm6 function by setting parameters random.method = "ht" and inst.method = "baltagi" like in the example below. The following replicates B. H. Baltagi (2005), pp. 129/30; B. H. Baltagi (2013), pp. 145/6, tables 7.4/5; B. H. Baltagi (2021), pp. 174/5 tables 7.5/6:

ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + 
              bluecol + ind + union + sex + black + ed |
              bluecol + south + smsa + ind + sex + black |
              wks + married + union + exp + I(exp ^ 2), 
          data = Wages, index = 595,
          model = "random", random.method = "ht", inst.method = "baltagi")
summary(ht)
## Oneway (individual) effect Random Effect Model 
##    (Hausman-Taylor's transformation)
## Instrumental variable estimation
##    (Baltagi's transformation)
## 
## Call:
## plm(formula = lwage ~ wks + south + smsa + married + exp + I(exp^2) + 
##     bluecol + ind + union + sex + black + ed | bluecol + south + 
##     smsa + ind + sex + black | wks + married + union + exp + 
##     I(exp^2), data = Wages, model = "random", random.method = "ht", 
##     inst.method = "baltagi", index = 595)
## 
## Balanced Panel: n = 595, T = 7, N = 4165
## 
## Effects:
##                   var std.dev share
## idiosyncratic 0.02304 0.15180 0.025
## individual    0.88699 0.94180 0.975
## theta: 0.9392
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -12.643736  -0.466002   0.043285   0.524739  13.340263 
## 
## Coefficients:
##                 Estimate   Std. Error z-value              Pr(>|z|)    
## (Intercept)  2.912726279  0.283652215 10.2687 < 0.00000000000000022 ***
## wks          0.000837403  0.000599732  1.3963               0.16263    
## southyes     0.007439837  0.031955005  0.2328               0.81590    
## smsayes     -0.041833367  0.018958129 -2.2066               0.02734 *  
## marriedyes  -0.029850749  0.018979963 -1.5728               0.11578    
## exp          0.113132791  0.002470954 45.7851 < 0.00000000000000022 ***
## I(exp^2)    -0.000418865  0.000054598 -7.6718   0.00000000000001696 ***
## bluecolyes  -0.020704707  0.013780948 -1.5024               0.13299    
## ind          0.013603930  0.015237366  0.8928               0.37196    
## unionyes     0.032771447  0.014908437  2.1982               0.02794 *  
## sexfemale   -0.130923610  0.126658988 -1.0337               0.30129    
## blackyes    -0.285747871  0.155701854 -1.8352               0.06647 .  
## ed           0.137943957  0.021248489  6.4919   0.00000000008473689 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    243.04
## Residual Sum of Squares: 4163.6
## R-Squared:      0.60945
## Adj. R-Squared: 0.60833
## Chisq: 6891.87 on 12 DF, p-value: < 0.000000000000000222

Variable coefficients model

The pvcm function enables the estimation of variable coefficients models. Time or individual effects are introduced if argument effect is fixed to "time" or "individual" (the default value).

Coefficients are assumed to be fixed if model="within" or random if model="random". In the first case, a separate OLS model is estimated for each individual (or time period). In the second case, Swamy’s random coefficients model (see Swamy (1970)) model is estimated. It is a generalized least squares model which uses the results of separate OLS models. Denoting \(\hat{\beta}_i\) the vectors of coefficients obtained for each individual, we get:

\[\begin{equation*} \hat{\beta}=\left(\sum_{i=1}^n \left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\right)\left(\hat{\Delta}+\hat{\sigma}_i^2(X_i^\top X_i)^{-1}\right)^{-1}\hat{\beta}_i \end{equation*}\]

where \(\hat{\sigma}_i^2\) is the unbiased estimator of the variance of the errors for individual \(i\) obtained from the preliminary estimation and:

\[\begin{equation*} \hat{\Delta}=\frac{1}{n-1}\sum_{i=1}^n\left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right) \left(\hat{\beta}_i-\frac{1}{n}\sum_{i=1}^n\hat{\beta}_i\right)^\top -\frac{1}{n}\sum_{i=1}^n\hat{\sigma}_i^2(X_i^\top X_i)^{-1} \end{equation*}\]

If this matrix is not positive-definite, the second term is dropped.

With the Grunfeld data, we get:

grun.varw <- pvcm(inv~value+capital, data=Grunfeld, model="within")
grun.varr <- pvcm(inv~value+capital, data=Grunfeld, model="random")
summary(grun.varr)
## Oneway (individual) effect Random coefficients model
## 
## Call:
## pvcm(formula = inv ~ value + capital, data = Grunfeld, model = "random")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Residuals:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -211.486  -32.321   -4.283    9.048   12.714  579.216 
## 
## Estimated mean of the coefficients:
##              Estimate Std. Error z-value   Pr(>|z|)    
## (Intercept) -9.629285  17.035040 -0.5653  0.5718946    
## value        0.084587   0.019956  4.2387 0.00002248 ***
## capital      0.199418   0.052653  3.7874  0.0001522 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Estimated variance of the coefficients:
##             (Intercept)      value    capital
## (Intercept)  2344.24402 -0.6852340 -4.0276612
## value          -0.68523  0.0031182 -0.0011847
## capital        -4.02766 -0.0011847  0.0244824
## 
## Total Sum of Squares: 474010000
## Residual Sum of Squares: 2194300
## Multiple R-Squared: 0.99537
## Chisq: 38.8364 on 2 DF, p-value: 0.0000000036878
## Test for parameter homogeneity: Chisq = 901.43 on 27 DF, p-value: < 0.000000000000000222

A \(\chi^2\) test of homogeneous parameters of the random coefficients model is printed in the last line of the summary output.

The unconditioned best linear unbiased single estimations for the coefficient of the single panel-effect specific regressions associated with the random coefficients model can be extracted from the returned object, for the example in grun.varr$single.coefs, while single variance-covariance matrices and standard errors are available in grun.varr$single.vcov and grunvarr$single.std.error, respectively.

Generalized method of moments estimator

The generalized method of moments is mainly used in panel data econometrics to estimate dynamic models (M. Arellano and Bond 1991; Holtz–Eakin, Newey, and Rosen 1988).

\[\begin{equation*} y_{it}=\rho y_{it-1}+\beta^\top x_{it}+\mu_i+\epsilon_{it} \end{equation*}\]

The model is first differenced to get rid of the individual effect:

\[\begin{equation*} \Delta y_{it}=\rho \Delta y_{it-1}+\beta^\top \Delta x_{it}+\Delta \epsilon_{it} \end{equation*}\]

Least squares are inconsistent because \(\Delta \epsilon_{it}\) is correlated with \(\Delta y_{it-1}\). \(y_{it-2}\) is a valid, but weak instrument (see Anderson and Hsiao (1981)). The GMM estimator uses the fact that the number of valid instruments is growing with \(t\):

  • \(t=3\): \(y_1\),
  • \(t=4\): \(y_1,y_2\),
  • \(t=5\): \(y_1,y_2,y_3\).

For individual \(i\), the matrix of instruments is then:

\[\begin{equation*} W_i=\left( \begin{array}{ccccccccccccc} y_1 & 0 & 0 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i3} \\ 0 & y_1 & y_2 & 0 & 0 & 0 & ... & 0 & 0 & 0 & 0 & x_{i4} \\ 0 & 0 & 0 & y_1 & y_2 & y_3 & ... & 0 & 0 & 0 & 0 & x_{i5} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & ... & ... & ... & y_1 & y_2 & ... & y_{t-2} & x_{iT-2} &\\ \end{array} \right) \end{equation*}\]

The moment conditions are: \(\sum_{i=1}^n W_i^\top e_i(\beta)\) where \(e_i(\beta)\) is the vector of residuals for individual \(i\). The GMM estimator minimizes:

\[\begin{equation*} \left(\sum_{i=1}^n e_i(\beta)^\top W_i\right) A \left(\sum_{i=1}^n W_i^\top e_i(\beta)\right) \end{equation*}\]

where \(A\) is the weighting matrix of the moments.

One-step estimators are computed using a known weighting matrix. For the model in first differences, one uses:

\[\begin{equation*} A^{(1)}=\left(\sum_{i=1}^n W_i^\top H^{(1)}W_i\right)^{-1} \end{equation*}\]

with:

\[\begin{equation*} H^{(1)}=d^\top d=\left( \begin{array}{ccccc} 2 & -1 & 0 & ... & 0\\ -1 & 2 & -1 & ... & 0\\ 0 & -1 & 2 & ... & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & 0 & -1 & 2\\ \end{array} \right) \end{equation*}\]

Two-steps estimators are obtained using \(H^{(2)}_i=\sum_{i=1}^n e^{(1)}_i e^{(1)\top }_i\) where \(e_i^{(1)}\) are the residuals of the one step estimate.

Blundell and Bond (1998) show that with weak hypothesis on the data generating process, supplementary moment conditions exist for the equation in level:

\[ y_{it} = \gamma y_{it-1}+\mu_i+\eta_{it} \]

More precisely, they show that \(\Delta y_{it-2}=y_{it-2}-y_{it-3}\) is a valid instrument. The estimator is obtained using the residual vector in difference and in level:

\[ e^+_i=(\Delta e_i, e_i) \]

and the matrix of augmented moments:

\[ Z_i^+=\left( \begin{array}{ccccc} Z_i & 0 & 0 & ... & 0 \\ 0 & \Delta y_{i2} & 0 & ... & 0 \\ 0 & 0 & \Delta y_{i3} & ... & 0 \\ 0 & 0 & 0 & ... & \Delta y_{iT-1} \end{array} \right) \]

The moment conditions are then

\[\begin{eqnarray*} \left(\sum_{i=1}^n Z_i^{+\top} \left(\begin{array}{c}\bar{e}_i(\beta)\\ e_i(\beta)\end{array}\right)\right)^\top = \left(\sum_{i=1}^n y_{i1} \bar{e}_{i3},\sum_{i=1}^n y_{i1}\bar{e}_{i4},\sum_{i=1}^n y_{i2}\bar{e}_{i4}, ..., \right.\\ \left. \sum_{i=1}^n y_{i1} \bar{e}_{iT}, \sum_{i=1}^n y_{i2} \bar{e}_{iT}, ...,\sum_{i=1}^n y_{iT-2} \bar{e}_{iT}, \sum_{i=1}^n \sum_{t=3}^T x_{it} \bar{e}_{it}\right.\\ \left.\sum_{i=1}^n e_{i3} \Delta y_{i2}, \sum_{i=1}^n e_{i4} \Delta y_{i3}, ... , \sum_{i=1}^n e_{iT} \Delta y_{iT-1} \right)^\top \end{eqnarray*}\]

The GMM estimator is provided by the pgmm function. By using a multi-part formula, the variables of the model and the lag structure are described.

In a GMM estimation, there are “normal instruments†and “GMM instrumentsâ€. GMM instruments are indicated in the second part of the formula. By default, all the variables of the model that are not used as GMM instruments are used as normal instruments, with the same lag structure; “normal†instruments may also be indicated in the third part of the formula.

The effect argument is either "individual" or "twoways" (the default). In the first case, the model is the model is estimated in first differences to get rid of the individuals effects. In the last case, the model is estimated in first differences and time dummies are included.

The model argument specifies whether a one-step or a two-steps model is requested ("onestep" or "twosteps").

The following example is from M. Arellano and Bond (1991), table 4, column b. Employment is explained by past values of employment (two lags), current and first lag of wages and output and current value of capital.

emp.gmm <- pgmm(log(emp)~lag(log(emp), 1:2)+lag(log(wage), 0:1)+log(capital)+
                lag(log(output), 0:1) | lag(log(emp), 2:99),
                data = EmplUK, effect = "twoways", model = "twosteps")
summary(emp.gmm, robust = FALSE)
## Twoways effects Two-steps model Difference GMM 
## 
## Call:
## pgmm(formula = log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 
##     0:1) + log(capital) + lag(log(output), 0:1) | lag(log(emp), 
##     2:99), data = EmplUK, effect = "twoways", model = "twosteps")
## 
## Unbalanced Panel: n = 140, T = 7-9, N = 1031
## 
## Number of Observations Used: 611
## Residuals:
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -0.6190677 -0.0255683  0.0000000 -0.0001339  0.0332013  0.6410272 
## 
## Coefficients:
##                         Estimate Std. Error  z-value              Pr(>|z|)    
## lag(log(emp), 1:2)1     0.474151   0.085303   5.5584    0.0000000272221654 ***
## lag(log(emp), 1:2)2    -0.052967   0.027284  -1.9413             0.0522200 .  
## lag(log(wage), 0:1)0   -0.513205   0.049345 -10.4003 < 0.00000000000000022 ***
## lag(log(wage), 0:1)1    0.224640   0.080063   2.8058             0.0050192 ** 
## log(capital)            0.292723   0.039463   7.4177    0.0000000000001191 ***
## lag(log(output), 0:1)0  0.609775   0.108524   5.6188    0.0000000192269973 ***
## lag(log(output), 0:1)1 -0.446373   0.124815  -3.5763             0.0003485 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sargan test: chisq(25) = 30.11247 (p-value = 0.22011)
## Autocorrelation test (1): normal = -2.427829 (p-value = 0.01519)
## Autocorrelation test (2): normal = -0.3325401 (p-value = 0.73948)
## Wald test for coefficients: chisq(7) = 371.9877 (p-value = < 0.000000000000000222)
## Wald test for time dummies: chisq(6) = 26.9045 (p-value = 0.0001509)

The following example is from Blundell and Bond (1998). The “sys†estimator is obtained using transformation = "ld" for level and difference. The robust argument of the summary method enables to use the robust covariance matrix, in case of a two-steps model with the small-sample correction proposed by Windmeijer (2005). For all pgmm models, robust = TRUE is the default (but set in this example explicitly).

z2 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) +
           lag(log(capital), 0:1) | lag(log(emp), 2:99) +
           lag(log(wage), 2:99) + lag(log(capital), 2:99),        
           data = EmplUK, effect = "twoways", model = "onestep", 
           transformation = "ld")
summary(z2, robust = TRUE)
## Twoways effects One-step model System GMM 
## 
## Call:
## pgmm(formula = log(emp) ~ lag(log(emp), 1) + lag(log(wage), 0:1) + 
##     lag(log(capital), 0:1) | lag(log(emp), 2:99) + lag(log(wage), 
##     2:99) + lag(log(capital), 2:99), data = EmplUK, effect = "twoways", 
##     model = "onestep", transformation = "ld")
## 
## Unbalanced Panel: n = 140, T = 7-9, N = 1031
## 
## Number of Observations Used: 1642
## Residuals:
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -0.7530341 -0.0369030  0.0000000  0.0002882  0.0466069  0.6001503 
## 
## Coefficients:
##                          Estimate Std. Error z-value              Pr(>|z|)    
## lag(log(emp), 1)         0.935605   0.026295 35.5810 < 0.00000000000000022 ***
## lag(log(wage), 0:1)0    -0.630976   0.118054 -5.3448    0.0000000905012861 ***
## lag(log(wage), 0:1)1     0.482620   0.136887  3.5257             0.0004224 ***
## lag(log(capital), 0:1)0  0.483930   0.053867  8.9838 < 0.00000000000000022 ***
## lag(log(capital), 0:1)1 -0.424393   0.058479 -7.2572    0.0000000000003952 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sargan test: chisq(100) = 118.763 (p-value = 0.097096)
## Autocorrelation test (1): normal = -4.808434 (p-value = 0.0000015212)
## Autocorrelation test (2): normal = -0.2800133 (p-value = 0.77947)
## Wald test for coefficients: chisq(5) = 11174.82 (p-value = < 0.000000000000000222)
## Wald test for time dummies: chisq(7) = 14.71138 (p-value = 0.039882)

General FGLS models

General FGLS estimators are based on a two-step estimation process: first an OLS model is estimated, then its residuals \(\hat{u}_{it}\) are used to estimate an error covariance matrix more general than the random effects one for use in a feasible-GLS analysis. Formally, the estimated error covariance matrix is \(\hat{V}=I_n \otimes \hat{\Omega}\), with \[\hat{\Omega}=\sum_{i=1}^n \frac{\hat{u}_{it} \hat{u}_{it}^\top }{n} \] (see Wooldridge (2002) 10.4.3 and 10.5.5).

This framework allows the error covariance structure inside every group (if effect = "individual") of observations to be fully unrestricted and is therefore robust against any type of intragroup heteroskedasticity and serial correlation. This structure, by converse, is assumed identical across groups and thus general FGLS is inefficient under groupwise heteroskedasticity. Cross-sectional correlation is excluded a priori.

Moreover, the number of variance parameters to be estimated with \(N=n\times T\) data points is \(T(T+1)/2\), which makes these estimators particularly suited for situations where \(n>>T\), as e.g., in labour or household income surveys, while problematic for “long†panels, where \(\hat{V}\) tends to become singular and standard errors therefore become biased downwards.

In a pooled time series context (effect = "time"), symmetrically, this estimator is able to account for arbitrary cross-sectional correlation, provided that the latter is time-invariant (see Greene (2003) 13.9.1–2, pp. 321–2). In this case serial correlation has to be assumed away and the estimator is consistent with respect to the time dimension, keeping \(n\) fixed.

The function pggls estimates general FGLS models, with either fixed or “random†effects7.

The “random effect†general FGLS is estimated by:

zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="pooling")
summary(zz)
## Oneway (individual) effect General FGLS model
## 
## Call:
## pggls(formula = log(emp) ~ log(wage) + log(capital), data = EmplUK, 
##     model = "pooling")
## 
## Unbalanced Panel: n = 140, T = 7-9, N = 1031
## 
## Residuals:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -1.80696 -0.36552  0.06181  0.03230  0.44279  1.58719 
## 
## Coefficients:
##               Estimate Std. Error z-value              Pr(>|z|)    
## (Intercept)   2.023480   0.158468 12.7690 < 0.00000000000000022 ***
## log(wage)    -0.232329   0.048001 -4.8401           0.000001298 ***
## log(capital)  0.610484   0.017434 35.0174 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Total Sum of Squares: 1853.6
## Residual Sum of Squares: 402.55
## Multiple R-squared: 0.78283

The fixed effects pggls (see Wooldridge (2002), p. 276) is based on the estimation of a within model in the first step; the rest follows as above. It is estimated by:

zz <- pggls(log(emp)~log(wage)+log(capital), data=EmplUK, model="within")

The pggls function is similar to plm in many respects. An exception is that the estimate of the group covariance matrix of errors (zz$sigma, a matrix, not shown) is reported in the model objects instead of the usual estimated variances of the two error components.

Tests

As sketched in Section linear panel model, specification testing in panel models involves essentially testing for poolability, for individual or time unobserved effects and for correlation between these latter and the regressors (Hausman-type tests). As for the other usual diagnostic checks, we provide a suite of serial correlation tests, while not touching on the issue of heteroskedasticity testing. Instead, we provide heteroskedasticity-robust covariance estimators, to be described in subsection robust covariance matrix estimation.

Tests of poolability

pooltest tests the hypothesis that the same coefficients apply to each individual. It is a standard F test, based on the comparison of a model obtained for the full sample and a model based on the estimation of an equation for each individual. The first argument of pooltest is a plm object. The second argument is a pvcm object obtained with model="within". If the first argument is a pooling model, the test applies to all the coefficients (including the intercepts), if it is a within model, different intercepts are assumed.

To test the hypothesis that all the coefficients in the Grunfeld example, excluding the intercepts, are equal, we use :

znp <- pvcm(inv ~ value + capital, data = Grunfeld, model = "within")
zplm <- plm(inv ~ value + capital, data = Grunfeld, model = "within")
pooltest(zplm, znp)
## 
##  F statistic
## 
## data:  inv ~ value + capital
## F = 5.7805, df1 = 18, df2 = 170, p-value = 0.0000000001219
## alternative hypothesis: unstability

The same test can be computed using a formula as first argument of the pooltest function:

pooltest(inv ~ value + capital, data = Grunfeld, model = "within")

Tests for individual and time effects

plmtest implements Lagrange multiplier tests of individual or/and time effects based on the results of the pooling model. Its main argument is a plm object (the result of a pooling model) or a formula.

Two additional arguments can be added to indicate the kind of test to be computed. The argument type is one of:

  • "honda": Honda (1985), the default value,
  • "bp": T. S. Breusch and Pagan (1980),
  • "kw": King and Wu (1997)8,
  • "ghm": Gourieroux, Holly, and Monfort (1982).

The effects tested are indicated with the effect argument (one of "individual", "time", or "twoways"). The test statistics implemented are also suitable for unbalanced panels.9

To test the presence of individual and time effects in the Grunfeld example, using the Gourieroux, Holly, and Monfort (1982) test, we use:

g <- plm(inv ~ value + capital, data=Grunfeld, model="pooling")
plmtest(g, effect="twoways", type="ghm")
## 
##  Lagrange Multiplier Test - two-ways effects (Gourieroux, Holly and
##  Monfort)
## 
## data:  inv ~ value + capital
## chibarsq = 798.16, df0 = 0.00, df1 = 1.00, df2 = 2.00, w0 = 0.25, w1 =
## 0.50, w2 = 0.25, p-value < 0.00000000000000022
## alternative hypothesis: significant effects

or

plmtest(inv~value+capital, data=Grunfeld, effect="twoways", type="ghm")

pFtest computes F tests of effects based on the comparison of the within and the pooling model. Its main arguments are either two plm objects (a pooling and a within model) or a formula.

gw <- plm(inv ~ value + capital, data=Grunfeld, effect="twoways", model="within")
gp <- plm(inv ~ value + capital, data=Grunfeld, model="pooling")
pFtest(gw, gp)
## 
##  F test for twoways effects
## 
## data:  inv ~ value + capital
## F = 17.403, df1 = 28, df2 = 169, p-value < 0.00000000000000022
## alternative hypothesis: significant effects
pFtest(inv~value+capital, data=Grunfeld, effect="twoways")

Hausman test

phtest computes the Hausman test (at times also called Durbin–Wu–Hausman test) which is based on the comparison of two sets of estimates (see Hausman (1978)).

Its main arguments are two panelmodel objects or a formula. A classical application of the Hausman test for panel data is to compare the fixed and the random effects models:

gw <- plm(inv ~ value + capital, data = Grunfeld, model="within")
gr <- plm(inv ~ value + capital, data = Grunfeld, model="random")
phtest(gw, gr)
## 
##  Hausman Test
## 
## data:  inv ~ value + capital
## chisq = 2.3304, df = 2, p-value = 0.3119
## alternative hypothesis: one model is inconsistent

The command also supports the auxiliary-regression-based version as described in, e.g., Wooldridge (2010) Sec.10.7.3 by using the formula interface and setting argument test = "aux". This auxiliary-regression-based version can be robustified by specifying a robust covariance estimator as a function through the argument vcov:

phtest(inv ~ value + capital, data = Grunfeld, method = "aux", vcov = vcovHC)
## 
##  Regression-based Hausman test, vcov: vcovHC
## 
## data:  inv ~ value + capital
## chisq = 8.2998, df = 2, p-value = 0.01577
## alternative hypothesis: one model is inconsistent

Tests of serial correlation

A model with individual effects has composite errors that are serially correlated by definition. The presence of the time-invariant error component10 gives rise to serial correlation which does not die out over time, thus standard tests applied on pooled data always end up rejecting the null of spherical residuals11. There may also be serial correlation of the “usual†kind in the idiosyncratic error terms, e.g., as an AR(1) process. By “testing for serial correlation†we mean testing for this latter kind of dependence.

For these reasons, the subjects of testing for individual error components and for serially correlated idiosyncratic errors are closely related. In particular, simple (marginal) tests for one direction of departure from the hypothesis of spherical errors usually have power against the other one: in case it is present, they are substantially biased towards rejection. Joint tests are correctly sized and have power against both directions, but usually do not give any information about which one actually caused rejection. Conditional tests for serial correlation that take into account the error components are correctly sized under presence of both departures from sphericity and have power only against the alternative of interest. While most powerful if correctly specified, the latter, based on the likelihood framework, are crucially dependent on normality and homoskedasticity of the errors.

In plm we provide a number of joint, marginal and conditional ML-based tests, plus some semiparametric alternatives which are robust vs. heteroskedasticity and free from distributional assumptions.

Unobserved effects test

The unobserved effects test à la Wooldridge (see Wooldridge (2002) 10.4.4), is a semiparametric test for the null hypothesis that \(\sigma^2_{\mu}=0\), i.e. that there are no unobserved effects in the residuals. Given that under the null the covariance matrix of the residuals for each individual is diagonal, the test statistic is based on the average of elements in the upper (or lower) triangle of its estimate, diagonal excluded: \(n^{-1/2} \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is}\) (where \(\hat{u}\) are the pooled OLS residuals), which must be “statistically close†to zero under the null, scaled by its standard deviation: \[W=\frac{ \sum_{i=1}^n \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} }{ [{ \sum_{i=1}^n ( \sum_{t=1}^{T-1} \sum_{s=t+1}^T \hat{u}_{it} \hat{u}_{is} } )^2 ]^{1/2} }\]

This test is (\(n\)-) asymptotically distributed as a standard normal regardless of the distribution of the errors. It does also not rely on homoskedasticity.

It has power both against the standard random effects specification, where the unobserved effects are constant within every group, as well as against any kind of serial correlation. As such, it “nests†both random effects and serial correlation tests, trading some power against more specific alternatives in exchange for robustness.

While not rejecting the null favours the use of pooled OLS, rejection may follow from serial correlation of different kinds, and in particular, quoting Wooldridge (2002), “should not be interpreted as implying that the random effects error structure must be trueâ€.

Below, the test is applied to the data and model in Munnell (1990):

pwtest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc)
## 
##  Wooldridge's test for unobserved individual effects
## 
## data:  formula
## z = 3.9383, p-value = 0.00008207
## alternative hypothesis: unobserved effect

Locally robust tests for serial correlation or random effects

The presence of random effects may affect tests for residual serial correlation, and the opposite. One solution is to use a joint test, which has power against both alternatives. A joint LM test for random effects and serial correlation under normality and homoskedasticity of the idiosyncratic errors has been derived by B. Baltagi and Li (1991) and B. Baltagi and Li (1995) and is implemented as an option in pbsytest:

pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="j")
## 
##  Baltagi and Li AR-RE joint test
## 
## data:  formula
## chisq = 4187.6, df = 2, p-value < 0.00000000000000022
## alternative hypothesis: AR(1) errors or random effects

Rejection of the joint test, though, gives no information on the direction of the departure from the null hypothesis, i.e.: is rejection due to the presence of serial correlation, of random effects or of both?

Bera, Sosa–Escudero, and Yoon (2001) (hereafter BSY) derive locally robust tests both for individual random effects and for first-order serial correlation in residuals as “corrected†versions of the standard LM test (see plmtest). While still dependent on normality and homoskedasticity, these are robust to local departures from the hypotheses of, respectively, no serial correlation or no random effects. The authors observe that, although suboptimal, these tests may help detecting the right direction of the departure from the null, thus complementing the use of joint tests. Moreover, being based on pooled OLS residuals, the BSY tests are computationally far less demanding than likelihood-based conditional tests.

On the other hand, the statistical properties of these “locally corrected†tests are inferior to those of the non-corrected counterparts when the latter are correctly specified. If there is no serial correlation, then the optimal test for random effects is the likelihood-based LM test of Breusch and Godfrey (with refinements by Honda, see plmtest), while if there are no random effects the optimal test for serial correlation is, again, Breusch-Godfrey’s test12. If the presence of a random effect is taken for granted, then the optimal test for serial correlation is the likelihood-based conditional LM test of B. Baltagi and Li (1995) (see pbltest).

The serial correlation version is the default:

pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc)
## 
##  Bera, Sosa-Escudero and Yoon locally robust test
## 
## data:  formula
## chisq = 52.636, df = 1, p-value = 0.0000000000004015
## alternative hypothesis: AR(1) errors sub random effects

The BSY test for random effects is implemented in the one-sided version13, which takes heed that the variance of the random effect must be non-negative:

pbsytest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, test="re")
## 
##  Bera, Sosa-Escudero and Yoon locally robust test (one-sided)
## 
## data:  formula
## z = 57.914, p-value < 0.00000000000000022
## alternative hypothesis: random effects sub AR(1) errors

Conditional LM test for AR(1) or MA(1) errors under random effects

B. Baltagi and Li (1991) and B. Baltagi and Li (1995) derive a Lagrange multiplier test for serial correlation in the idiosyncratic component of the errors under (normal, heteroskedastic) random effects. Under the null of serially uncorrelated errors, the test turns out to be identical for both the alternative of AR(1) and MA(1) processes. One- and two-sided versions are provided, the one-sided having power against positive serial correlation only. The two-sided is the default, while for the other one must specify the alternative option to "onesided":

pbltest(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, 
        data=Produc, alternative="onesided")
## 
##  Baltagi and Li one-sided LM test
## 
## data:  log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp
## z = 21.69, p-value < 0.00000000000000022
## alternative hypothesis: AR(1)/MA(1) errors in RE panel model

As usual, the LM test statistic is based on residuals from the maximum likelihood estimate of the restricted model (random effects with serially uncorrelated errors). In this case, though, the restricted model cannot be estimated by OLS anymore, therefore the testing function depends on lme() in the nlme package for estimation of a random effects model by maximum likelihood. For this reason, the test is applicable only to balanced panels.

No test has been implemented to date for the symmetric hypothesis of no random effects in a model with errors following an AR(1) process, but an asymptotically equivalent likelihood ratio test is available in the nlme package (see Section plm versus nlme and lme4).

General serial correlation tests

A general testing procedure for serial correlation in fixed effects (FE), random effects (RE) and pooled-OLS panel models alike can be based on considerations in Wooldridge (2002), 10.7.2.

Recall that plm model objects are the result of OLS estimation performed on “demeaned†data, where, in the case of individual effects (else symmetric), this means time-demeaning for the FE (within) model, quasi-time-demeaning for the RE (random) model and original data, with no demeaning at all, for the pooled OLS (pooling) model (see Section software approach).

For the random effects model, Wooldridge (2002) observes that under the null of homoskedasticity and no serial correlation in the idiosyncratic errors, the residuals from the quasi-demeaned regression must be spherical as well. Else, as the individual effects are wiped out in the demeaning, any remaining serial correlation must be due to the idiosyncratic component. Hence, a simple way of testing for serial correlation is to apply a standard serial correlation test to the quasi-demeaned model. The same applies in a pooled model, w.r.t. the original data.

The FE case needs some qualification. It is well-known that if the original model’s errors are uncorrelated then FE residuals are negatively serially correlated, with \(cor(\hat{u}_{it}, \hat{u}_{is})=-1/(T-1)\) for each \(t,s\) (see Wooldridge (2002) 10.5.4). This correlation clearly dies out as T increases, so this kind of AR test is applicable to within model objects only for T “sufficiently largeâ€14. On the converse, in short panels the test gets severely biased towards rejection (or, as the induced correlation is negative, towards acceptance in the case of the one-sided DW test with alternative="greater"). See below for a serial correlation test applicable to “short†FE panel models.

plm objects retain the “demeaned†data, so the procedure is straightforward for them. The wrapper functions pbgtest and pdwtest re-estimate the relevant quasi-demeaned model by OLS and apply, respectively, standard Breusch-Godfrey and Durbin-Watson tests from package lmtest:

pbgtest(grun.fe, order = 2)
## 
##  Breusch-Godfrey/Wooldridge test for serial correlation in panel models
## 
## data:  inv ~ value + capital
## chisq = 42.587, df = 2, p-value = 0.0000000005655
## alternative hypothesis: serial correlation in idiosyncratic errors

The tests share the features of their OLS counterparts, in particular the pbgtest allows testing for higher-order serial correlation, which might turn useful, e.g., on quarterly data. Analogously, from the point of view of software, as the functions are simple wrappers towards bgtest and dwtest, all arguments from the latter two apply and may be passed on through the ellipsis (the ... argument).

Wooldridge’s test for serial correlation in “short†FE panels

For the reasons reported above, under the null of no serial correlation in the errors, the residuals of a FE model must be negatively serially correlated, with \(cor(\hat{\epsilon}_{it}, \hat{\epsilon}_{is})=-1/(T-1)\) for each \(t,s\). Wooldridge suggests basing a test for this null hypothesis on a pooled regression of FE residuals on themselves, lagged one period: \[\hat{\epsilon}_{i,t}=\alpha + \delta \hat{\epsilon}_{i,t-1} + \eta_{i,t}\] Rejecting the restriction \(\delta = -1/(T-1)\) makes us conclude against the original null of no serial correlation.

The building blocks available in plm make it easy to construct a function carrying out this procedure: first the FE model is estimated and the residuals retrieved, then they are lagged and a pooling AR(1) model is estimated. The test statistic is obtained by applying the above restriction on \(\delta\) and supplying a heteroskedasticity- and autocorrelation-consistent covariance matrix (vcovHC with the appropriate options, in particular method="arellano")15.

pwartest(log(emp) ~ log(wage) + log(capital), data=EmplUK)
## 
##  Wooldridge's test for serial correlation in FE panels
## 
## data:  plm.model
## F = 312.3, df1 = 1, df2 = 889, p-value < 0.00000000000000022
## alternative hypothesis: serial correlation

The test is applicable to any FE panel model, and in particular to “short†panels with small \(T\) and large \(n\).

Wooldridge’s first-difference-based test

In the context of the first difference model, Wooldridge (2002), 10.6.3 proposes a serial correlation test that can also be seen as a specification test to choose the most efficient estimator between fixed effects (within) and first difference (fd).

The starting point is the observation that if the idiosyncratic errors of the original model \(u_{it}\) are uncorrelated, the errors of the (first) differenced model16 \(e_{it} \equiv u_{it}-u_{i,t-1}\) will be correlated, with \(cor(e_{it}, e_{i,t-1})=-0.5\), while any time-invariant effect, “fixed†or “randomâ€, is wiped out in the differencing. So a serial correlation test for models with individual effects of any kind can be based on estimating the model \[\hat{u}_{i,t}= \delta \hat{u}_{i,t-1} + \eta_{i,t}\] and testing the restriction \(\delta = -0.5\), corresponding to the null of no serial correlation. Drukker (2003) provides Monte Carlo evidence of the good empirical properties of the test.

On the other extreme (see Wooldridge (2002) 10.6.1), if the differenced errors \(e_{it}\) are uncorrelated, as by definition \(u_{it} = u_{i,t-1} + e_{it}\), then \(u_{it}\) is a random walk. In this latter case, the most efficient estimator is the first difference (fd) one; in the former case, it is the fixed effects one (within).

The function pwfdtest allows testing either hypothesis: the default behaviour h0="fd" is to test for serial correlation in first-differenced errors:

pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK)
## 
##  Wooldridge's first-difference test for serial correlation in panels
## 
## data:  plm.model
## F = 1.5251, df1 = 1, df2 = 749, p-value = 0.2172
## alternative hypothesis: serial correlation in differenced errors

while specifying h0="fe" the null hypothesis becomes no serial correlation in original errors, which is similar to the pwartest.

pwfdtest(log(emp) ~ log(wage) + log(capital), data=EmplUK, h0="fe")
## 
##  Wooldridge's first-difference test for serial correlation in panels
## 
## data:  plm.model
## F = 131.55, df1 = 1, df2 = 749, p-value < 0.00000000000000022
## alternative hypothesis: serial correlation in original errors

Not rejecting one of the two is evidence in favour of using the estimator corresponding to h0. Should the truth lie in the middle (both rejected), whichever estimator is chosen will have serially correlated errors: therefore it will be advisable to use the autocorrelation-robust covariance estimators from the subsection robust covariance matrix estimation in inference.

Tests for cross-sectional dependence

Next to the more familiar issue of serial correlation, over the last years a growing body of literature has been dealing with cross-sectional dependence (henceforth: XSD) in panels, which can arise, e.g., if individuals respond to common shocks (as in the literature on factor models) or if spatial diffusion processes are present, relating individuals in a way depending on a measure of distance (spatial models).

The subject is huge, and here we touch only some general aspects of misspecification testing and valid inference. If XSD is present, the consequence is, at a minimum, inefficiency of the usual estimators and invalid inference when using the standard covariance matrix17. The plan is to have in plm both misspecification tests to detect XSD and robust covariance matrices to perform valid inference in its presence, like in the serial dependence case. For now, though, only misspecification tests are included.

CD and LM-type tests for global cross-sectional dependence

The function pcdtest implements a family of XSD tests which can be applied in different settings, ranging from those where \(T\) grows large with \(n\) fixed to “short†panels with a big \(n\) dimension and a few time periods. All are based on (transformations of–) the product-moment correlation coefficient of a model’s residuals, defined as

\[ \hat{\rho}_{ij}=\frac{\sum_{t=1}^T \hat{u}_{it} \hat{u}_{jt}}{(\sum_{t=1}^T \hat{u}^2_{it})^{1/2} (\sum_{t=1}^T \hat{u}^2_{jt})^{1/2} } \]

i.e., as averages over the time dimension of pairwise correlation coefficients for each pair of cross-sectional units.

The Breusch-Pagan (T. S. Breusch and Pagan 1980) LM test, based on the squares of \(\rho_{ij}\), is valid for \(T \rightarrow \infty\) with \(n\) fixed; defined as

\[LM=\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2\]

where in the case of an unbalanced panel only pairwise complete observations are considered, and \(T_{ij}=min(T_i,T_j)\) with \(T_i\) being the number of observations for individual \(i\); else, if the panel is balanced, \(T_{ij}=T\) for each \(i,j\). The test is distributed as \(\chi^2_{n(n-1)/2}\). It is inappropriate whenever the \(n\) dimension is “largeâ€. A scaled version, applicable also if \(T \rightarrow \infty\) and then \(n \rightarrow \infty\) (as in some pooled time series contexts), is defined as

\[SCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1 )\]

and distributed as a standard normal (see M. H. Pesaran (2004)).

A bias-corrected scaled version, \(BCSCLM\), for the fixed effect model with individual effects only is also available which is simply the \(SCLM\) with a term correcting for the bias (Badi H. Baltagi, Feng, and Kao (2012))18. This statistic is also asymptotically distributed as standard normal. \[BCSCLM=\sqrt{\frac{1}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} T_{ij} \hat{\rho}_{ij}^2 -1)-\frac{n}{2(T-1)}\]

Pesaran’s (M. H. Pesaran (2004), M. Hashem Pesaran (2015)) \(CD\) test

\[CD=\sqrt{\frac{2}{n(n-1)}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \sqrt{T_{ij}} \hat{\rho}_{ij} )\]

based on \(\rho_{ij}\) without squaring (also distributed as a standard normal) is appropriate both in \(n\)– and in \(T\)–asymptotic settings. It has remarkable properties in samples of any practically relevant size and is robust to a variety of settings. The only big drawback is that the test loses power against the alternative of cross-sectional dependence if the latter is due to a factor structure with factor loadings averaging zero, that is, some units react positively to common shocks, others negatively.

The default version of the test is "cd" yielding Pesaran’s \(CD\) test. These tests are originally meant to use the residuals of separate estimation of one time-series regression for each cross-sectional unit, so this is the default behaviour of pcdtest.

pcdtest(inv~value+capital, data=Grunfeld)
## 
##  Pesaran CD test for cross-sectional dependence in panels
## 
## data:  inv ~ value + capital
## z = 5.3401, p-value = 0.00000009292
## alternative hypothesis: cross-sectional dependence

If a different model specification (within, random, …) is assumed consistent, one can resort to its residuals for testing19 by specifying the relevant model type. The main argument of this function may be either a model of class panelmodel or a formula and a data.frame; in the second case, unless model is set to NULL, all usual parameters relative to the estimation of a plm model may be passed on. The test is compatible with any consistent panelmodel for the data at hand, with any specification of effect. E.g., specifying effect = "time" or effect = "twoways" allows to test for residual cross-sectional dependence after the introduction of time fixed effects to account for common shocks.

pcdtest(inv~value+capital, data=Grunfeld, model="within")
## 
##  Pesaran CD test for cross-sectional dependence in panels
## 
## data:  inv ~ value + capital
## z = 4.6612, p-value = 0.000003144
## alternative hypothesis: cross-sectional dependence

If the time dimension is insufficient and model=NULL, the function defaults to estimation of a within model and issues a warning.

CD(p) test for local cross-sectional dependence

A local variant of the \(CD\) test, called \(CD(p)\) test (M. H. Pesaran 2004), takes into account an appropriate subset of neighbouring cross-sectional units to check the null of no XSD against the alternative of local XSD, i.e. dependence between neighbours only. To do so, the pairs of neighbouring units are selected by means of a binary proximity matrix like those used in spatial models. In the original paper, a regular ordering of observations is assumed, so that the \(m\)-th cross-sectional observation is a neighbour to the \((m-1)\)-th and to the \((m+1)\)-th. Extending the \(CD(p)\) test to irregular lattices, we employ the binary proximity matrix as a selector for discarding the correlation coefficients relative to pairs of observations that are not neighbours in computing the \(CD\) statistic. The test is then defined as

\[CD=\sqrt{\frac{1}{\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} w(p)_{ij}}} ( \sum_{i=1}^{n-1} \sum_{j=i+1}^{n} [w(p)]_{ij} \sqrt{T_{ij}}\hat{\rho}_{ij} )\]

where \([w(p)]_{ij}\) is the \((i,j)\)-th element of the \(p\)-th order proximity matrix, so that if \(h,k\) are not neighbours, \([w(p)]_{hk}=0\) and \(\hat{\rho}_{hk}\) gets “killedâ€; this is easily seen to reduce to formula (14) in Pesaran (M. H. Pesaran 2004) for the special case considered in that paper. The same can be applied to the \(LM\), \(SCLM\), and \(BCSCLM\) tests.

Therefore, the local version of either test can be computed supplying an \(n \times n\) matrix (of any kind coercible to logical), providing information on whether any pair of observations are neighbours or not, to the w argument. If w is supplied, only neighbouring pairs will be used in computing the test; else, w will default to NULL and all observations will be used. The matrix needs not really be binary, so commonly used “row-standardized†matrices can be employed as well: it is enough that neighbouring pairs correspond to nonzero elements in w 20.

Panel unit root tests

Overview of functions for panel unit root testing

Below, first an overview is provided which tests are implemented per functions. A theoretical treatment is given for a few of those tests later on. The package plm offers several panel unit root tests contained in three functions:

  • purtest (Levin-Lin-Chu test, IPS test, several Fisher-type tests, Hadri’s test),
  • cipstest (cross-sectionally augmented IPS test), and
  • phansitest (Simes’ test).

While purtest implements various tests which can be selected via its test argument, cipstest and phansitest are functions for a specific test each.

Function purtest offers the following tests by setting argument test to:

  • "levinlin" (default), for the Levin-Lin-Chu test (Levin, Lin, and Chu (2002)), see below for a theoretical exposition (Levin-Lin-Chu test)),
  • "ips", for Im-Pesaran-Shin (IPS) test by Im, Pesaran, and Shin (2003), see below for a theoretical exposition (Im-Pesaran-Shin test)),
  • "madwu", is the inverse \(\chi^2\) test by Maddala and Wu (1999), also called P test by Choi (2001),
  • "Pm", is the modified P test proposed by Choi (2001) for large N,
  • "invnormal", is the inverse normal test (Choi (2001)),
  • "logit", is the logit test (Choi (2001)),
  • "hadri", for Hadri’s test (Hadri (2000)).

The tests in purtest are often called first generation panel unit root tests as they do assume absence of cross-sectional correlation; all these, except Hadri’s test, are based on the estimation of augmented Dickey-Fuller (ADF) regressions for each time series. A statistic is then computed using the t-statistics associated with the lagged variable. I a different manner, the Hadri residual-based LM statistic is the cross-sectional average of individual KPSS statistics (Kwiatkowski et al. (1992)), standardized by their asymptotic mean and standard deviation. Among the tests in purtest, "madwu", "Pm", "invormal", and "logit" are Fisher-type tests.21

purtest returns an object of class "purtest" which contains details about the test performed, among them details about the individual regressions/statistics for the test. Associated summary and print.summary methods can be used to extract/display the additional information.

Function cipstest implements Pesaran’s (M. Hashem Pesaran (2007)) cross-sectionally augmented version of the Im-Pesaran-Shin panel unit root test and is a so-called second-generation panel unit root test.

Function phansitest implements the idea of Hanck (2013) to apply Simes’ testing approach for intersection of individual hypothesis tests to panel unit root testing, see below for a more thorough treatment of Simes’ approach for intersecting hypotheses.

Preliminary results

We consider the following model:

\[ y_{it} = \delta y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} \]

The unit root hypothesis is \(\rho = 1\). The model can be rewritten in difference:

\[ \Delta y_{it} = \rho y_{it-1} + \sum_{L=1}^{p_i} \theta_i \Delta y_{it-L}+\alpha_{mi} d_{mt}+\epsilon_{it} \]

So that the unit-root hypothesis is now \(\rho = 0\).

Some of the unit-root tests for panel data are based on preliminary results obtained by running the above Augmented Dickey-Fuller (ADF) regression.

First, we have to determine the optimal number of lags \(p_i\) for each time-series. Several possibilities are available. They all have in common that the maximum number of lags have to be chosen first. Then, \(p_i\) can be chosen by using:

  • the Schwarz information criterion (SIC) (also known as Bayesian information criterion (BIC)),
  • the Akaike information criterion (AIC),
  • the Hall’s method, which consist in removing the higher lags while they are not significant.

The ADF regression is run on \(T-p_i-1\) observations for each individual, so that the total number of observations is \(n\times \tilde{T}\) where \(\tilde{T}=T-p_i-1\)

\(\bar{p}\) is the average number of lags. Call \(e_{i}\) the vector of residuals.

Estimate the variance of the \(\epsilon_i\) as:

\[ \hat{\sigma}_{\epsilon_i}^2 = \frac{\sum_{t=p_i+1}^{T} e_{it}^2}{df_i} \]

Levin-Lin-Chu model

Then, as per Levin, Lin, and Chu (2002), compute artificial regressions of \(\Delta y_{it}\) and \(y_{it-1}\) on \(\Delta y_{it-L}\) and \(d_{mt}\) and get the two vectors of residuals \(z_{it}\) and \(v_{it}\).

Standardize these two residuals and run the pooled regression of \(z_{it}/\hat{\sigma}_i\) on \(v_{it}/\hat{\sigma}_i\) to get \(\hat{\rho}\), its standard deviation \(\hat{\sigma}({\hat{\rho}})\) and the t-statistic \(t_{\hat{\rho}}=\hat{\rho}/\hat{\sigma}({\hat{\rho}})\).

Compute the long run variance of \(y_i\) :

\[ \hat{\sigma}_{yi}^2 = \frac{1}{T-1}\sum_{t=2}^T \Delta y_{it}^2 + 2 \sum_{L=1}^{\bar{K}}w_{\bar{K}L}\left[\frac{1}{T-1}\sum_{t=2+L}^T \Delta y_{it} \Delta y_{it-L}\right] \]

Define \(\bar{s}_i\) as the ratio of the long and short term variance and \(\bar{s}\) the mean for all the individuals of the sample

\[ s_i = \frac{\hat{\sigma}_{yi}}{\hat{\sigma}_{\epsilon_i}} \]

\[ \bar{s} = \frac{\sum_{i=1}^n s_i}{n} \]

\[ t^*_{\rho}=\frac{t_{\rho}- n \bar{T} \bar{s} \hat{\sigma}_{\tilde{\epsilon}}^{-2} \hat{\sigma}({\hat{\rho}}) \mu^*_{m\tilde{T}}}{\sigma^*_{m\tilde{T}}} \]

follows a normal distribution under the null hypothesis of stationarity. \(\mu^*_{m\tilde{T}}\) and \(\sigma^*_{m\tilde{T}}\) are given in table 2 of the original paper and are also available in the package.

An example how the Levin-Lin-Chu test is performed with purtest using a lag of 2 and intercept and a time trend as exogenous variables in the ADF regressions is:

data("HousePricesUS", package = "pder")
lprice <- log(pdata.frame(HousePricesUS)$price)
(lev <- purtest(lprice, test = "levinlin", lags = 2, exo = "trend"))
## 
##  Levin-Lin-Chu Unit-Root Test (ex. var.: Individual Intercepts and
##  Trend)
## 
## data:  lprice
## z = -1.2573, p-value = 0.1043
## alternative hypothesis: stationarity
summary(lev) ### gives details
## Levin-Lin-Chu Unit-Root Test 
## Exogenous variables: Individual Intercepts and Trend 
## User-provided lags
## statistic: -1.257 
## p-value: 0.104 
## 
##    lags obs          rho        trho      p.trho     sigma2ST     sigma2LT
## 1     2  26 -0.092065357 -1.66309731 0.767613204 0.0003143120 0.0004013788
## 4     2  26 -0.124093984 -1.29563385 0.888755668 0.0010950144 0.0014736172
## 5     2  26 -0.104647566 -1.10814627 0.926357866 0.0007296044 0.0007451534
## 6     2  26 -0.219022744 -2.94312106 0.148774635 0.0007716609 0.0048254402
## 8     2  26 -0.052471794 -0.95375744 0.948405601 0.0006375257 0.0028152736
## 9     2  26 -0.181914333 -2.73331072 0.222919642 0.0021489671 0.0064455696
## 10    2  26 -0.232215125 -3.37321191 0.054989191 0.0005566400 0.0024147067
## 11    2  26 -0.356452679 -4.35943612 0.002479709 0.0008542529 0.0045574510
## 12    2  26  0.279936991  1.83482002 0.999998365 0.0004172617 0.0012951914
## 13    2  26 -0.062610441 -0.84216587 0.960499065 0.0003168316 0.0002981994
## 16    2  26 -0.159254884 -2.29683734 0.435109226 0.0007437190 0.0010203969
## 17    2  26 -0.237065476 -4.05050006 0.007367490 0.0005512405 0.0009463645
## 18    2  26 -0.140788644 -2.08598977 0.553093684 0.0005079423 0.0005697978
## 19    2  26 -0.099218199 -1.83853581 0.686000079 0.0008756343 0.0020399374
## 20    2  26 -0.046049208 -0.85174237 0.959567857 0.0003914722 0.0011128571
## 21    2  26 -0.102633777 -1.81503721 0.697696805 0.0004063481 0.0002345858
## 22    2  26 -0.115700485 -1.72146553 0.741996511 0.0010094113 0.0047169602
## 23    2  26 -0.218251170 -2.90863990 0.159598845 0.0010530905 0.0031254005
## 24    2  26 -0.293126134 -3.65827755 0.025157448 0.0004297907 0.0012860757
## 25    2  26 -0.107476475 -2.33427946 0.414643019 0.0008718077 0.0083545213
## 26    2  26 -0.135655633 -2.06664416 0.563904448 0.0009443422 0.0007705242
## 27    2  26 -0.005168776 -0.06565125 0.995432637 0.0007059964 0.0017093982
## 28    2  26 -0.101736562 -1.02991147 0.938382427 0.0008552994 0.0003212357
## 29    2  26 -0.106917037 -1.44344289 0.848353136 0.0004659842 0.0004528307
## 30    2  26 -0.143955051 -1.60594256 0.791068910 0.0016589513 0.0022706981
## 31    2  26 -0.093688191 -1.92279670 0.642427798 0.0004025885 0.0009260538
## 32    2  26 -0.313691108 -2.30732500 0.429359754 0.0009640889 0.0019245305
## 33    2  26 -0.151599029 -2.54586869 0.305755540 0.0011446680 0.0072973098
## 34    2  26 -0.113830637 -2.06152082 0.566761534 0.0008514932 0.0055913854
## 35    2  26 -0.220363663 -1.72391205 0.740887358 0.0005138068 0.0007015982
## 36    2  26 -0.211779244 -3.98522621 0.009148144 0.0011004960 0.0062947120
## 37    2  26 -0.161851244 -2.19906397 0.489557509 0.0002334460 0.0001298656
## 38    2  26 -0.222507555 -1.45762738 0.843900682 0.0048242337 0.0019584921
## 39    2  26 -0.119405321 -2.41405422 0.372087172 0.0004737829 0.0009459741
## 40    2  26 -0.066956522 -0.94176615 0.949844273 0.0011477969 0.0044950987
## 41    2  26 -0.107420235 -2.09998836 0.545259606 0.0009669881 0.0033414294
## 42    2  26 -0.211640785 -3.51839705 0.037371037 0.0004302930 0.0020971822
## 44    2  26 -0.160491538 -2.32116399 0.421790841 0.0016866384 0.0067053791
## 45    2  26  0.013957358  0.21048073 0.998138553 0.0002474183 0.0001310960
## 46    2  26 -0.125206819 -1.36523187 0.871040437 0.0014782610 0.0005893232
## 47    2  26 -0.146576570 -2.35613125 0.402831448 0.0002851628 0.0001796349
## 48    2  26 -0.106184312 -1.41243370 0.857717409 0.0006722417 0.0029218865
## 49    2  26 -0.110328029 -2.31986075 0.422503260 0.0007413810 0.0032547907
## 50    2  26 -0.336849990 -3.07534065 0.112195130 0.0015064070 0.0017150678
## 51    2  26 -0.219041498 -2.26882562 0.450564573 0.0004175437 0.0010455238
## 53    2  26 -0.249921002 -2.67545341 0.246874228 0.0008780514 0.0016600448
## 54    2  26 -0.092856496 -1.36610183 0.870804641 0.0011141161 0.0011656778
## 55    2  26 -0.119379994 -2.19438511 0.492186948 0.0008204933 0.0007526503
## 56    2  26 -0.094196887 -1.53868461 0.816472629 0.0016308380 0.0062631397

Im-Pesaran-Shin (IPS) test

This test by Im, Pesaran, and Shin (2003) does not require that \(\rho\) is the same for all the individuals. The null hypothesis is still that all the series have an unit root, but the alternative is that some may have a unit root and others have different values of \(\rho_i <0\).

The test is based on the average of the student statistic of the \(\rho\) obtained for each individual:

\[ \bar{t}=\frac{1}{n}\sum_{i=1}^n t_{\rho i} \]

The statistic is then:

\[ z = \frac{\sqrt{n}\left(\bar{t}- E(\bar{t})\right)}{\sqrt{V(\bar{t})}} \]

\(\mu^*_{m\tilde{T}}\) and \(\sigma^*_{m\tilde{T}}\) are given in table 2 of the original paper and are also available in the package.

An example of the IPS test with purtest with the same settings as in the previously performed Levin-Lin-Chu test is:

purtest(lprice, test = "ips", lags = 2, exo = "trend")
## 
##  Im-Pesaran-Shin Unit-Root Test (ex. var.: Individual Intercepts and
##  Trend)
## 
## data:  lprice
## Wtbar = 0.76622, p-value = 0.7782
## alternative hypothesis: stationarity

Simes’ approach: intersecting hypotheses

A different approach to panel unit root testing can be drawn from the general Simes’ test for intersection of individual hypothesis tests (Simes 1986). Hanck (2013) suggests to apply the approach for panel unit root testing: The tests works by combining p-values from single hypothesis tests (individual unit root tests) with a global (intersected) hypothesis and controls for the multiplicity in testing. Thus, it works “on top†of any panel unit root test which yield a p-value for each individual series. Unlike most other panel unit root tests, this approach allows to discriminate between individuals for which the individual H0 (unit root present for individual series) is rejected/is not rejected and requires a pre-specified significance level. Further, the test is robust versus general patterns of cross-sectional dependence.

The function phansitest for this test takes as main input object either a numeric containing p-values of individual tests or a "purtest" object as produced by function purtest which holds a suitable pre-computed panel unit root test (one that produces p-values per individual series). The significance level is set by argument alpha (default 5 %). The function’s return value is a list with detailed evaluation of the applied Simes test. The associated print method gives a verbal evaluation.

The following examples shows both accepted ways of input, the first example replicates Hanck (2013), table 11 (left side), who applied some panel unit root test for a Purchasing Power Parity analysis per country (individual H0 hypotheses per series) to get the individual p-values and then used Simes’ approach for testing the global (intersecting) hypothesis for the whole panel.

### input is numeric (p-values), replicates Hanck (2013), Table 11 (left side)
pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050,
           0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475)
countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France",
              "Germany","Belgium","U.K.","Brazil","Australia","Netherlands",
              "Portugal","Canada", "Spain","Denmark","Switzerland","Japan")
names(pvals) <- countries
h <- phansitest(pvals)
print(h)
## 
##         Simes Test as Panel Unit Root Test (Hanck (2013))
## 
## H0: All individual series have a unit root
## HA: Stationarity for at least some individuals
## 
## Alpha: 0.05
## Number of individuals: 19
## 
## Evaluation:
##  H0 rejected (globally)
## 
##  Individual H0 rejected for 10 individual(s) (integer id(s)):
##   1, 2, 3, 4, 5, 6, 7, 8, 9, 10
h$rejected # logical indicating the individuals with rejected individual H0
##   Argentina      Sweden      Norway      Mexico       Italy     Finland 
##        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
##      France     Germany     Belgium        U.K.      Brazil   Australia 
##        TRUE        TRUE        TRUE        TRUE       FALSE       FALSE 
## Netherlands    Portugal      Canada       Spain     Denmark Switzerland 
##       FALSE       FALSE       FALSE       FALSE       FALSE       FALSE 
##       Japan 
##       FALSE
### input is a (suitable) purtest object / different example
y <- data.frame(split(Grunfeld$inv, Grunfeld$firm))
obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu")
phansitest(obj, alpha = 0.06) # test with significance level set to 6 %

Robust covariance matrix estimation

Robust estimators of the covariance matrix of coefficients are provided, mostly for use in Wald-type tests, and this section provides some basics and examples. A more comprehensive exposition of the theory and the capabilities that come with the plm package is given in Millo (2017).

vcovHC estimates three “flavours†of White’s heteroskedasticity-consistent covariance matrix22 (known as the sandwich estimator). Interestingly, in the context of panel data the most general version also proves consistent vs. serial correlation.

All types assume no correlation between errors of different groups while allowing for heteroskedasticity across groups, so that the full covariance matrix of errors is \(V=I_n \otimes \Omega_i; i=1,..,n\). As for the intragroup error covariance matrix of every single group of observations, "white1" allows for general heteroskedasticity but no serial correlation, i.e.

\[\begin{equation} (\#eq:omegaW1) \Omega_i= \left[ \begin{array}{c c c c} \sigma_{i1}^2 & \dots & \dots & 0 \\ 0 & \sigma_{i2}^2 & & \vdots \\ \vdots & & \ddots & 0 \\ 0 & ... & ... & \sigma_{iT}^2 \\ \end{array} \right] \end{equation}\]

while "white2" is "white1" restricted to a common variance inside every group, estimated as \(\sigma_i^2=\sum_{t=1}^T{\hat{u}_{it}^2}/T\), so that \(\Omega_i=I_T \otimes \sigma_i^2\) (see Greene (2003), 13.7.1–2 and Wooldridge (2002), 10.7.2; "arellano" (see ibid. and the original ref. Manuel Arellano (1987)) allows a fully general structure w.r.t. heteroskedasticity and serial correlation:

\[\begin{equation} (\#eq:omegaArellano) \Omega_i= \left[ \begin{array}{c c c c c} \sigma_{i1}^2 & \sigma_{i1,i2} & \dots & \dots & \sigma_{i1,iT} \\ \sigma_{i2,i1} & \sigma_{i2}^2 & & & \vdots \\ \vdots & & \ddots & & \vdots \\ \vdots & & & \sigma_{iT-1}^2 & \sigma_{iT-1,iT} \\ \sigma_{iT,i1} & \dots & \dots & \sigma_{iT,iT-1} & \sigma_{iT}^2 \\ \end{array} \right] \end{equation}\]

The latter is, as already observed, consistent w.r.t. timewise correlation of the errors, but on the converse, unlike the White 1 and 2 methods, it relies on large \(n\) asymptotics with small \(T\).

The fixed effects case, as already observed in Section tests of serial correlation on serial correlation, is complicated by the fact that the demeaning induces serial correlation in the errors. The original White estimator ("white1") turns out to be inconsistent for fixed \(T\) as \(n\) grows, so in this case it is advisable to use the "arellano" version (see Stock and Watson (2008)).

The errors may be weighted according to the schemes proposed by J. G. MacKinnon and White (1985) and Cribari–Neto (2004) to improve small-sample performance23.

The main use of vcovHC (and the other variance-covariance estimators provided in the package vcovBK, vcovNW, vcovDC, vcovSCC) is to pass it to plm’s own functions like summary, pwaldtest, and phtest or together with testing functions from the lmtest and car packages. All of these typically allow passing the vcov or vcov. parameter either as a matrix or as a function (see also Zeileis (2004)). If one is happy with the defaults, it is easiest to pass the function itself24:

re <- plm(inv~value+capital, data = Grunfeld, model = "random")
summary(re, vcov = vcovHC) # gives usual summary output but with robust test statistics
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Note: Coefficient variance-covariance matrix supplied: vcovHC
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, model = "random")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Effects:
##                   var std.dev share
## idiosyncratic 2784.46   52.77 0.282
## individual    7089.80   84.20 0.718
## theta: 0.8612
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -177.6063  -19.7350    4.6851   19.5105  252.8743 
## 
## Coefficients:
##               Estimate Std. Error z-value              Pr(>|z|)    
## (Intercept) -57.834415  23.449626 -2.4663               0.01365 *  
## value         0.109781   0.012984  8.4551 < 0.00000000000000022 ***
## capital       0.308113   0.051889  5.9379        0.000000002887 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    2381400
## Residual Sum of Squares: 548900
## R-Squared:      0.7695
## Adj. R-Squared: 0.76716
## Chisq: 78.7096 on 2 DF, p-value: < 0.000000000000000222
library("lmtest")
coeftest(re, vcovHC, df = Inf)
## 
## z test of coefficients:
## 
##               Estimate Std. Error z value              Pr(>|z|)    
## (Intercept) -57.834415  23.449626 -2.4663               0.01365 *  
## value         0.109781   0.012984  8.4551 < 0.00000000000000022 ***
## capital       0.308113   0.051889  5.9379        0.000000002887 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Another approach is to compute the covariance matrix inside the call and pass it on:

summary(re, vcov = vcovHC(re, method="white2", type="HC3"))
coeftest(re, vcovHC(re, method="white2", type="HC3"), df = Inf)

For some tests, e.g., for multiple model comparisons by waldtest, one should always provide a function25. In this case, optional parameters are provided as shown below (see also Zeileis (2004), p. 12):

waldtest(re, update(re, . ~ . -capital),
         vcov=function(x) vcovHC(x, method="white2", type="HC3"))
## Wald test
## 
## Model 1: inv ~ value + capital
## Model 2: inv ~ value
##   Res.Df Df  Chisq            Pr(>Chisq)    
## 1    197                                    
## 2    198 -1 87.828 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Moreover, linearHypothesis from package car may be used to test for linear restrictions:

library("car")
linearHypothesis(re, "2*value=capital", vcov. = vcovHC)
## 
## Linear hypothesis test:
## 2 value - capital = 0
## 
## Model 1: restricted model
## Model 2: inv ~ value + capital
## 
## Note: Coefficient covariance matrix supplied.
## 
##   Res.Df Df  Chisq Pr(>Chisq)  
## 1    198                       
## 2    197  1 3.4783    0.06218 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

A specific methods are also provided for pcce and pgmm objects, for the latter vcovHC provides the robust covariance matrix proposed by Windmeijer (2005) for generalized method of moments estimators.

plm versus nlme and lme4

The models termed panel by the econometricians have counterparts in the statistics literature on mixed models (or hierarchical models, or models for longitudinal data), although there are both differences in jargon and more substantial distinctions. This language inconsistency between the two communities, together with the more complicated general structure of statistical models for longitudinal data and the associated notation in the software, is likely to scare some practicing econometricians away from some potentially useful features of the R environment, so it may be useful to provide here a brief reconciliation between the typical panel data specifications used in econometrics and the general framework used in statistics for mixed models26.

R is particularly strong on mixed models’ estimation, thanks to the long-standing nlme package (see J. Pinheiro et al. (2007)) and the more recent lme4 package, based on S4 classes (see Bates (2007))27. In the following we will refer to the more established nlme to give some examples of “econometric†panel models that can be estimated in a likelihood framework, also including some likelihood ratio tests. Some of them are not feasible in plm and make a useful complement to the econometric “toolbox†available in R.

Fundamental differences between the two approaches

Econometrics deal mostly with non-experimental data. Great emphasis is put on specification procedures and misspecification testing. Model specifications tend therefore to be very simple, while great attention is put on the issues of endogeneity of the regressors, dependence structures in the errors and robustness of the estimators under deviations from normality. The preferred approach is often semi- or non-parametric, and heteroskedasticity-consistent techniques are becoming standard practice both in estimation and testing.

For all these reasons, although the maximum likelihood framework is important in testing28 and sometimes used in estimation as well, panel model estimation in econometrics is mostly accomplished in the generalized least squares framework based on Aitken’s Theorem and, when possible, in its special case OLS, which are free from distributional assumptions (although these kick in at the diagnostic testing stage). On the contrary, longitudinal data models in nlme and lme4 are estimated by (restricted or unrestricted) maximum likelihood. While under normality, homoskedasticity and no serial correlation of the errors OLS are also the maximum likelihood estimator, in all the other cases there are important differences.

The econometric GLS approach has closed-form analytical solutions computable by standard linear algebra and, although the latter can sometimes get computationally heavy on the machine, the expressions for the estimators are usually rather simple. ML estimation of longitudinal models, on the contrary, is based on numerical optimization of nonlinear functions without closed-form solutions and is thus dependent on approximations and convergence criteria. For example, the “GLS†functionality in nlme is rather different from its “econometric†counterpart. “Feasible GLS†estimation in plm is based on a single two-step procedure, in which an inefficient but consistent estimation method (typically OLS) is employed first in order to get a consistent estimate of the errors’ covariance matrix, to be used in GLS at the second step; on the converse, “GLS†estimators in nlme are based on iteration until convergence of two-step optimization of the relevant likelihood.

Some false friends

The fixed/random effects terminology in econometrics is often recognized to be misleading, as both are treated as random variates in modern econometrics (see, e.g., Wooldridge (2002) 10.2.1). It has been recognized since Mundlak’s classic paper (Mundlak (1978)) that the fundamental issue is whether the unobserved effects are correlated with the regressors or not. In this last case, they can safely be left in the error term, and the serial correlation they induce is cared for by means of appropriate GLS transformations. On the contrary, in the case of correlation, “fixed effects†methods such as least squares dummy variables or time-demeaning are needed, which explicitly, although inconsistently29, estimate a group– (or time–) invariant additional parameter for each group (or time period).

Thus, from the point of view of model specification, having fixed effects in an econometric model has the meaning of allowing the intercept to vary with group, or time, or both, while the other parameters are generally still assumed to be homogeneous. Having random effects means having a group– (or time–, or both) specific component in the error term.

In the mixed models literature, on the contrary, fixed effect indicates a parameter that is assumed constant, while random effects are parameters that vary randomly around zero according to a joint multivariate normal distribution.

So, the FE model in econometrics has no counterpart in the mixed models framework, unless reducing it to OLS on a specification with one dummy for each group (often termed least squares dummy variables, or LSDV model) which can trivially be estimated by OLS. The RE model is instead a special case of a mixed model where only the intercept is specified as a random effect, while the “random†type variable coefficients model can be seen as one that has the same regressors in the fixed and random sets. The unrestricted generalized least squares can in turn be seen, in the nlme framework, as a standard linear model with a general error covariance structure within the groups and errors uncorrelated across groups.

A common taxonomy

To reconcile the two terminologies, in the following we report the specification of the panel models in plm according to the general expression of a mixed model in Laird-Ware form (see the web appendix to Fox 2002) and the nlme estimation commands for maximum likelihood estimation of an equivalent specification30.

The Laird-Ware representation for mixed models

A general representation for the linear mixed effects model is given in Laird and Ware (1982).

\[ \begin{array}{rcl} y_{it} & = & \beta_1 x_{1ij} + \dots + \beta_p x_{pij} \\ & & b_1 z_{1ij} + \dots + b_p z_{pij} + \epsilon_{ij} \\ b_{ik} & \sim & N(0,\psi^2_k), \phantom{p} Cov(b_k,b_{k'}) = \psi_{kk'} \\ \epsilon_{ij} & \sim & N(0,\sigma^2 \lambda_{ijj}), \phantom{p} Cov(\epsilon_{ij},\epsilon_{ij'}) = \sigma^2 \lambda_{ijj'} \\ \end{array} \]

where the \(x_1, \dots x_p\) are the fixed effects regressors and the \(z_1, \dots z_p\) are the random effects regressors, assumed to be normally distributed across groups. The covariance of the random effects coefficients \(\psi_{kk'}\) is assumed constant across groups and the covariances between the errors in group \(i\), \(\sigma^2 \lambda_{ijj'}\), are described by the term \(\lambda_{ijj'}\) representing the correlation structure of the errors within each group (e.g., serial correlation over time) scaled by the common error variance \(\sigma^2\).

Pooling and Within

The pooling specification in plm is equivalent to a classical linear model (i.e., no random effects regressor and spherical errors: \(b_{iq}=0 \phantom{p} \forall i,q, \phantom{p} \lambda_{ijj}=\sigma^2\) for \(j=j'\), \(0\) else). The within one is the same with the regressors’ set augmented by \(n-1\) group dummies. There is no point in using nlme as parameters can be estimated by OLS which is also ML.

Random effects

In the Laird and Ware notation, the RE specification is a model with only one random effects regressor: the intercept. Formally, \(z_{1ij}=1 \phantom{p}\forall i,j, \phantom{p} z_{qij}=0 \phantom{p} \forall i, \forall j, \forall q \neq 1\) \(\lambda_{ij}=1\) for \(i=j\), \(0\) else). The composite error is therefore \(u_{ij}=1b_{i1} + \epsilon_{ij}\). Below we report coefficients of Grunfeld’s model estimated by GLS and then by ML:

library(nlme)
reGLS <- plm(inv~value+capital, data=Grunfeld, model="random")

reML <- lme(inv~value+capital, data=Grunfeld, random=~1|firm)

coef(reGLS)
## (Intercept)       value     capital 
## -57.8344149   0.1097812   0.3081130
summary(reML)$coefficients$fixed
## (Intercept)       value     capital 
## -57.8644245   0.1097897   0.3081881

Variable coefficients, “randomâ€

Swamy’s variable coefficients model (Swamy 1970) has coefficients varying randomly (and independently of each other) around a set of fixed values, so the equivalent specification is \(z_{q}=x_{q} \phantom{p} \forall q\), i.e. the fixed effects and the random effects regressors are the same, and \(\psi_{kk'}=\sigma_\mu^2 I_N\), and \(\lambda_{ijj}=1\), \(\lambda_{ijj'}=0\) for \(j \neq j'\), that’s to say they are not correlated.

Estimation of a mixed model with random coefficients on all regressors is rather demanding from the computational side. Some models from our examples fail to converge. The below example is estimated on the Grunfeld data and model with time effects.

vcm <- pvcm(inv~value+capital, data=Grunfeld, model="random", effect="time")

vcmML <- lme(inv~value+capital, data=Grunfeld, random=~value+capital|year)

coef(vcm)
## (Intercept)       value     capital 
## -18.5538638   0.1239595   0.1114579
summary(vcmML)$coefficients$fixed
## (Intercept)       value     capital 
## -26.3558395   0.1241982   0.1381782

Variable coefficients, “withinâ€

This specification actually entails separate estimation of \(T\) different standard linear models, one for each group in the data, so the estimation approach is the same: OLS. In nlme this is done by creating an lmList object, so that the two models below are equivalent (output suppressed):

vcmf <- pvcm(inv~value+capital, data=Grunfeld, model="within", effect="time")

vcmfML <- lmList(inv~value+capital|year, data=Grunfeld)

General FGLS

The general, or unrestricted, feasible GLS (FGLS), pggls in the plm nomenclature, is equivalent to a model with no random effects regressors (\(b_{iq}=0 \phantom{p} \forall i,q\)) and an error covariance structure which is unrestricted within groups apart from the usual requirements. The function for estimating such models with correlation in the errors but no random effects is gls().

This very general serial correlation and heteroskedasticity structure is not estimable for the original Grunfeld data, which have more time periods than firms, therefore we restrict them to firms 4 to 6.

sGrunfeld <- Grunfeld[Grunfeld$firm %in% 4:6, ]

ggls <- pggls(inv~value+capital, data=sGrunfeld, model="pooling")

gglsML <- gls(inv~value+capital, data=sGrunfeld,
              correlation=corSymm(form=~1|year))

coef(ggls)
## (Intercept)       value     capital 
##  1.19679342  0.10555908  0.06600166
summary(gglsML)$coefficients
## (Intercept)       value     capital 
##  -2.4156266   0.1163550   0.0735837

The within case is analogous, with the regressor set augmented by \(n-1\) group dummies.

Some useful “econometric†models in nlme

Finally, amongst the many possible specifications estimable with nlme, we report a couple cases that might be especially interesting to applied econometricians.

AR(1) pooling or random effects panel

Linear models with groupwise structures of time-dependence31 may be fitted by gls(), specifying the correlation structure in the correlation option32:

Grunfeld$year <- as.numeric(as.character(Grunfeld$year))
lmAR1ML <- gls(inv~value+capital,data=Grunfeld,
               correlation=corAR1(0,form=~year|firm))

and analogously the random effects panel with, e.g., AR(1) errors (see B. H. Baltagi (2005); B. H. Baltagi (2013); B. H. Baltagi (2021), ch. 5), which is a very common specification in econometrics, may be fit by lme specifying an additional random intercept:

reAR1ML <- lme(inv~value+capital, data=Grunfeld,random=~1|firm,
               correlation=corAR1(0,form=~year|firm))

The regressors’ coefficients and the error’s serial correlation coefficient may be retrieved this way:

summary(reAR1ML)$coefficients$fixed
##  (Intercept)        value      capital 
## -40.27650822   0.09336672   0.31323330
coef(reAR1ML$modelStruct$corStruct, unconstrained=FALSE)
##      Phi 
## 0.823845

Significance statistics for the regressors’ coefficients are to be found in the usual summary object, while to get the significance test of the serial correlation coefficient one can do a likelihood ratio test as shown in the following.

An LR test for serial correlation and one for random effects

A likelihood ratio test for serial correlation in the idiosyncratic residuals can be done as a nested models test, by anova(), comparing the model with spherical idiosyncratic residuals with the more general alternative featuring AR(1) residuals. The test takes the form of a zero restriction test on the autoregressive parameter.

This can be done on pooled or random effects models alike. First we report the simpler case.

We already estimated the pooling AR(1) model above. The GLS model without correlation in the residuals is the same as OLS, and one could well use lm() for the restricted model. Here we estimate it by gls().

lmML <- gls(inv~value+capital, data=Grunfeld)
anova(lmML, lmAR1ML)
##         Model df      AIC      BIC    logLik   Test  L.Ratio p-value
## lmML        1  4 2400.217 2413.350 -1196.109                        
## lmAR1ML     2  5 2094.936 2111.352 -1042.468 1 vs 2 307.2813  <.0001

The AR(1) test on the random effects model is to be done in much the same way, using the random effects model objects estimated above:

anova(reML, reAR1ML)
##         Model df      AIC      BIC    logLik   Test  L.Ratio p-value
## reML        1  5 2205.851 2222.267 -1097.926                        
## reAR1ML     2  6 2094.802 2114.501 -1041.401 1 vs 2 113.0496  <.0001

A likelihood ratio test for random effects compares the specifications with and without random effects and spherical idiosyncratic errors:

anova(lmML, reML)
##      Model df      AIC      BIC    logLik   Test L.Ratio p-value
## lmML     1  4 2400.217 2413.350 -1196.109                       
## reML     2  5 2205.851 2222.267 -1097.926 1 vs 2 196.366  <.0001

The random effects, AR(1) errors model in turn nests the AR(1) pooling model, therefore a likelihood ratio test for random effects sub AR(1) errors may be carried out, again, by comparing the two autoregressive specifications:

anova(lmAR1ML, reAR1ML)
##         Model df      AIC      BIC    logLik   Test  L.Ratio p-value
## lmAR1ML     1  5 2094.936 2111.352 -1042.468                        
## reAR1ML     2  6 2094.802 2114.501 -1041.401 1 vs 2 2.134349   0.144

whence we see that the Grunfeld model specification doesn’t seem to need any random effects once we control for serial correlation in the data.

Conclusions

With plm we aim at providing a comprehensive package containing the standard functionalities that are needed for the management and the econometric analysis of panel data. In particular, we provide: functions for data transformation; estimators for pooled, random and fixed effects static panel models and variable coefficients models, general GLS for general covariance structures, and generalized method of moments estimators for dynamic panels; specification and diagnostic tests. Instrumental variables estimation is supported. Most estimators allow working with unbalanced panels. While among the different approaches to longitudinal data analysis we take the perspective of the econometrician, the syntax is consistent with the basic linear modeling tools, like the lm function.

On the input side, formula and data arguments are used to specify the model to be estimated. Special functions are provided to make writing formulas easier, and the structure of the data is indicated with an index argument.

On the output side, the model objects (of the new class panelmodel) are compatible with the general restriction testing frameworks of packages lmtest and car. Specialized methods are also provided for the calculation of robust covariance matrices; heteroskedasticity- and correlation-consistent testing is accomplished by passing these on to testing functions, together with a panelmodel object.

The main functionalities of the package have been illustrated here by applying them on some well-known data sets from the econometric literature. The similarities and differences with the maximum likelihood approach to longitudinal data have also been briefly discussed.

Acknowledgments

While retaining responsibility for any error, we thank Jeffrey Wooldridge, Achim Zeileis and three anonymous referees for useful comments. We also acknowledge kind editing assistance by Lisa Benedetti.

Bibliography

Ahrens, H., and R. Pincus. 1981. “On Two Measures of Unbalancedness in a One-Way Model and Their Relation to Efficiency.†Biometrical Journal 23 (3): 227–35. https://doi.org/10.1002/bimj.4710230302.
Amemiya, T. 1971. “The Estimation of the Variances in a Variance–Components Model.†International Economic Review 12: 1–13.
Amemiya, Takeshi, and Thomas E MaCurdy. 1986. “Instrumental-Variable Estimation of an Error-Components Model.†Econometrica 54 (4): 869–80.
Anderson, T. W., and C. Hsiao. 1981. “Estimation of Dynamic Models with Error Components.†Journal of the American Statistical Association 76: 598–606.
Arellano, Manuel. 1987. “Computing Robust Standard Errors for Within-Groups Estimators.†Oxford Bulletin of Economics and Statistics 49 (4): 431–34.
Arellano, M., and S. Bond. 1991. “Some Tests of Specification for Panel Data : Monte Carlo Evidence and an Application to Employment Equations.†Review of Economic Studies 58: 277–97.
Balestra, P., and J. Varadharajan–Krishnakumar. 1987. “Full Information Estimations of a System of Simultaneous Equations with Error Components.†Econometric Theory 3: 223–46.
Baltagi, B. H. 1981. “Simultaneous Equations with Error Components.†Journal of Econometrics 17: 21–49.
Baltagi, B. H. 2005. Econometric Analysis of Panel Data. 3rd ed. John Wiley; Sons ltd.
———. 2013. Econometric Analysis of Panel Data. 5th ed. John Wiley; Sons ltd.
———. 2021. Econometric Analysis of Panel Data. 6th ed. Springer.
Baltagi, B. H., and Y. J. Chang. 1994. “Incomplete Panels: A Comparative Study of Alternative Estimators for the Unbalanced One-Way Error Component Regression Model.†Journal of Econometrics 62: 67–89.
Baltagi, B. H., Y. J. Chang, and Q. Li. 1992. “Monte Carlo Results on Several New and Existing Tests for the Error Components Model.†Journal of Econometrics 54: 95–120.
Baltagi, B. H., and Q. Li. 1990. “A Lagrange Multiplier Test for the Error Components Model with Incomplete Panels.†Econometric Reviews 9: 103–7.
Baltagi, Badi H., Qu Feng, and Chihwa Kao. 2012. “A Lagrange Multiplier Test for Cross-Sectional Dependence in a Fixed Effects Panel Data Model.†Journal of Econometrics 170 (1): 164–77. https://doi.org/10.1016/j.jeconom.2012.04.004.
Baltagi, Badi H., and Ping X. Wu. 1999. “Unequally Spaced Panel Data Regressions with AR(1) Disturbances.†Econometric Theory 15 (6): 814–23.
Baltagi, Badi, YA Chang, and Q Li. 1998. “Testing for Random Individual and Time Effects Using Unbalanced Panel Data.†Advances in Econometrics 13 (January): 1–20.
Baltagi, B., and Q. Li. 1991. “A Joint Test for Serial Correlation and Random Individual Effects.†Statistics and Probability Letters 11: 277–80.
———. 1995. “Testing AR(1) Against MA(1) Disturbances in an Error Component Model.†Journal of Econometrics 68: 133–51.
Bates, Douglas. 2004. “Least Squares Calculations in .†–News 4 (1): 17–20.
———. 2007. : Linear Mixed–Effects Models Using Classes. https://CRAN.r-project.org/package=lme4.
Bates, Douglas, and Martin Maechler. 2016. : Sparse and Dense Matrix Classes and Methods. https://CRAN.R-project.org/package=Matrix.
Bera, A. K., W. Sosa–Escudero, and M. Yoon. 2001. “Tests for the Error Component Model in the Presence of Local Misspecification.†Journal of Econometrics 101: 1–23.
Bhargava, A., L. Franzini, and W. Narendranathan. 1982. “Serial Correlation and the Fixed Effects Model.†The Review of Economic Studies 49 (4): 533–49.
Bivand, Roger. 2008. Spdep: Spatial Dependence: Weighting Schemes, Statistics and Models.
Blundell, R., and S. Bond. 1998. “Initial Conditions and Moment Restrictions in Dynamic Panel Data Models.†Journal of Econometrics 87: 115–43.
Breusch, T. S., and A. R. Pagan. 1980. “The Lagrange Multiplier Test and Its Applications to Model Specification in Econometrics.†Review of Economic Studies 47: 239–53.
Breusch, Trevor S, Grayham E Mizon, and Peter Schmidt. 1989. “Efficient Estimation Using Panel Data.†Econometrica 57 (3): 695–700.
Choi, In. 2001. “Unit Root Tests for Panel Data.†Journal of International Money and Finance 20 (2): 249–72. https://doi.org/10.1016/S0261-5606(00)00048-6.
Cornwell, C., and P. Rupert. 1988. “Efficient Estimation with Panel Data: An Empirical Comparison of Instrumental Variables Estimators.†Journal of Applied Econometrics 3: 149–55.
Cribari–Neto, F. 2004. “Asymptotic Inference Under Heteroskedasticity of Unknown Form.†Computational Statistics & Data Analysis 45: 215–33.
Croissant, Yves, and Giovanni Millo. 2008. “Panel Data Econometrics in : The Package.†Journal of Statistical Software 27 (2): 1–43. https://www.jstatsoft.org/article/view/v027i02.
De Hoyos, R. E., and V. Sarafidis. 2006. “Testing for Cross–Sectional Dependence in Panel–Data Models.†The Stata Journal 6 (4): 482–96.
Development Core Team. 2008. : A Language and Environment for Statistical Computing. Vienna, Austria: Foundation for Statistical Computing. https://www.r-project.org/.
Drukker, D. M. 2003. “Testing for Serial Correlation in Linear Panel–Data Models.†The Stata Journal 3 (2): 168–77.
Fox, John. 2002. An and Companion to Applied Regression. Sage.
———. 2016. : Companion to Applied Regression. https://CRAN.R-project.org/package=car.
Gourieroux, C., A. Holly, and A. Monfort. 1982. “Likelihood Ratio Test, Wald Test, and Kuhn–Tucker Test in Linear Models with Inequality Constraints on the Regression Parameters.†Econometrica 50: 63–80.
Greene, W. H. 2003. Econometric Analysis. 5th ed. Prentice Hall.
Hadri, Kaddour. 2000. “Testing for Stationarity in Heterogeneous Panel Data.†The Econometrics Journal 3 (2): 148–61.
Hanck, Christoph. 2013. “An Intersection Test for Panel Unit Roots.†Econometric Reviews 32: 183–203.
Harrison, D., and D. L. Rubinfeld. 1978. “Hedonic Housing Prices and the Demand for Clean Air.†Journal of Environmental Economics and Management 5: 81–102.
Hausman, J. A. 1978. “Specification Tests in Econometrics.†Econometrica 46: 1251–71.
Hausman, J. A., and W. E. Taylor. 1981. “Panel Data and Unobservable Individual Effects.†Econometrica 49: 1377–98.
Holtz–Eakin, D., W. Newey, and H. S. Rosen. 1988. “Estimating Vector Autoregressions with Panel Data.†Econometrica 56: 1371–95.
Honda, Y. 1985. “Testing the Error Components Model with Non–Normal Disturbances.†Review of Economic Studies 52: 681–90.
Hothorn, T., A. Zeileis, R. W. Farebrother, C. Cummins, G. Millo, and D. Mitchell. 2015. : Testing Linear Regression Models. https://CRAN.R-project.org/package=lmtest.
Im, K. S., M. H. Pesaran, and Y. Shin. 2003. “Testing for Unit Roots in Heterogenous Panels.†Journal of Econometrics 115(1): 53–74.
King, M. L., and P. X. Wu. 1997. “Locally Optimal One–Sided Tests for Multiparameter Hypothese.†Econometric Reviews 33: 523–29.
Kleiber, Christian, and Achim Zeileis. 2008. Applied Econometrics with R. New York: Springer-Verlag. https://CRAN.R-project.org/package=AER.
Koenker, Roger, and Pin Ng. 2016. : Sparse Linear Algebra. https://CRAN.R-project.org/package=SparseM.
Kwiatkowski, Denis, Peter C. B. Phillips, Peter Schmidt, and Yongcheol Shin. 1992. “Testing the Null Hypothesis of Stationarity Against the Alternative of a Unit Root: How Sure Are We That Economic Time Series Have a Unit Root?†Journal of Econometrics 54 (1): 159–78. https://doi.org/10.1016/0304-4076(92)90104-Y.
Laird, N. M., and J. H. Ware. 1982. “Random–Effects Models for Longitudinal Data.†Biometrics 38: 963–74.
Levin, A., C. F. Lin, and C. S. J. Chu. 2002. “Unit Root Tests in Panel Data : Asymptotic and Finite-Sample Properties.†Journal of Econometrics 108: 1–24.
Lumley, T., and A. Zeileis. 2015. : Robust Covariance Matrix Estimators. https://CRAN.R-project.org/package=sandwich.
MacKinnon, J. G., and H. White. 1985. “Some Heteroskedasticity–Consistent Covariance Matrix Estimators with Improved Finite Sample Properties.†Journal of Econometrics 29: 305–25.
MacKinnon, James G. 1994. “Approximate Asymptotic Distribution Functions for Unit-Root and Cointegration Tests.†Journal of Business & Economic Statistics 12 (2): 167–76.
———. 1996. “Numerical Distribution Functions for Unit Root and Cointegration Tests.†Journal of Applied Econometrics 11 (6): 601–18.
Maddala, G. S., and S. Wu. 1999. “A Comparative Study of Unit Root Tests with Panel Data and a New Simple Test.†Oxford Bulletin of Economics and Statistics 61: 631–52.
Millo, G. 2017. “Robust Standard Error Estimators for Panel Models: A Unifying Approach.†Journal of Statistical Software 82 (3): 1–27.
Mundlak, Yair. 1978. “On the Pooling of Time Series and Cross Section Data.†Econometrica 46 (1): 69–85.
Munnell, A. 1990. “Why Has Productivity Growth Declined? Productivity and Public Investment.†New England Economic Review, 3–22.
Nerlove, M. 1971. “Further Evidence on the Estimation of Dynamic Economic Relations from a Time–Series of Cross–Sections.†Econometrica 39: 359–82.
Pesaran, M Hashem. 2007. “A Simple Panel Unit Root Test in the Presence of Cross-Section Dependence.†Journal of Applied Econometrics 22 (2): 265–312.
Pesaran, M. H. 2004. “General Diagnostic Tests for Cross Section Dependence in Panels.â€
Pesaran, M. Hashem. 2015. “Testing Weak Cross-Sectional Dependence in Large Panels.†Econometric Reviews 34 (6-10): 1089–1117. https://doi.org/10.1080/07474938.2014.956623.
Pfaff, Bernhard. 2008. Analysis of Integrated and Cointegrated Time Series with r. Second. New York: Springer. https://CRAN.r-project.org/package=urca.
Pinheiro, J. C., and D. Bates. 2000. Mixed–Effects Models in and . Springer-Verlag.
Pinheiro, Jose, Douglas Bates, Saikat DebRoy, and Deepayan Sarkar the Core team. 2007. : Linear and Nonlinear Mixed Effects Models. https://CRAN.r-project.org/package=nlme.
Simes, R. J. 1986. “An Improved Bonferroni Procedure for Multiple Tests of Significance.†Biometrika 73: 751–54.
Stock, James H., and Mark W. Watson. 2008. “Heteroskedasticity–Robust Standard Errors for Fixed Effects Panel Data Regression.†Econometrica 76 (1): 155–74.
Swamy, P. A. V. B. 1970. “Efficient Inference in a Random Coefficient Regression Model.†Econometrica 38: 311–23.
Swamy, P. A. V. B., and S. S Arora. 1972. “The Exact Finite Sample Properties of the Estimators of Coefficients in the Error Components Regression Models.†Econometrica 40: 261–75.
Therneau, Terry. 2014. : Routines for Block Diagonal Symmetric Matrices. https://CRAN.R-project.org/package=bdsmatrix.
Wallace, T. D., and A. Hussain. 1969. “The Use of Error Components Models in Combining Cross Section with Time Series Data.†Econometrica 37 (1): 55–72.
White, H. 1984. Asymptotic Theory for Econometricians. New York: Academic press.
White, Halbert. 1980. “A Heteroskedasticity-Consistent Covariance Matrix Estimator and a Direct Test for Heteroskedasticity.†Econometrica 48 (4): 817–38.
Windmeijer, F. 2005. “A Finite Sample Correction for the Variance of Linear Efficient Two–Steps GMM Estimators.†Journal of Econometrics 126: 25–51.
Wooldridge, J. M. 2002. Econometric Analysis of Cross–Section and Panel Data. MIT Press.
———. 2010. Econometric Analysis of Cross–Section and Panel Data. 2nd ed. MIT Press.
Zeileis, A. 2004. “Econometric Computing with HC and HAC Covariance Matrix Estimators.†Journal of Statistical Software 11 (10): 1–17. https://www.jstatsoft.org/article/view/v011i10.

  1. Comprehensive treatments are to be found in many econometrics textbooks, e.g., B. H. Baltagi (2005), B. H. Baltagi (2013), B. H. Baltagi (2021) or Wooldridge (2002), Wooldridge (2010): the reader is referred to these, especially to the first 9 chapters of B. H. Baltagi (2005), B. H. Baltagi (2013), B. H. Baltagi (2021).↩︎

  2. For the sake of exposition we are considering only the individual effects case here. There may also be time effects, which is a symmetric case, or both of them, so that the error has three components: \(u_{it}=\mu_{i}+\lambda_{t}+\epsilon_{it}\).↩︎

  3. Although in most models the individual and time effects cases are symmetric, there are exceptions: estimating the first-difference model on time effects is meaningless because cross-sections do not generally have a natural ordering, so trying effect = "time" stops with an error message as does effect = "twoways" which is not defined for first-difference models.↩︎

  4. See packages lmtest (Hothorn et al. (2015)) and car (Fox (2016)).↩︎

  5. Moreover, coeftest() provides a compact way of looking at coefficient estimates and significance diagnostics.↩︎

  6. Function pht is a deprecated way to estimate this type of model: ht <- pht(lwage~wks+south+smsa+married+exp+I(exp^2)+ bluecol+ind+union+sex+black+ed | sex+black+bluecol+south+smsa+ind, data=Wages,index=595).↩︎

  7. The “random effect†is better termed “general FGLS†model, as in fact it does not have a proper random effects structure, but we keep this terminology for general language consistency.↩︎

  8. NB: Oneway King-Wu ("kw") statistics ("individual" and "time") coincide with the respective Honda statistics ("honda"); however, the twoway statistics of "kw" and "honda" differ.↩︎

  9. The "bp" test for unbalanced panels was derived in B. H. Baltagi and Li (1990), the "kw" test for unbalanced panels in Badi Baltagi, Chang, and Li (1998). The "ghm" test and the "kw" test were extended to two–way effects in B. H. Baltagi, Chang, and Li (1992). For a concise overview of all these statistics see B. H. Baltagi (2013) Sec. 4.2, pp. 68–76 (for balanced panels) and Sec. 9.5, pp. 200–203 (for unbalanced panels) or B. H. Baltagi (2021), Sec. 4.2, pp. 81-84 (balanced), Sec. 9.6, pp. 243-246 (unbalanced).↩︎

  10. Here we treat fixed and random effects alike, as components of the error term, according with the modern approach in econometrics (see Wooldridge (2002), Wooldridge (2010)).↩︎

  11. Neglecting time effects may also lead to serial correlation in residuals (as observed in Wooldridge (2002) 10.4.1).↩︎

  12. \(LM_3\) in B. Baltagi and Li (1995).↩︎

  13. Corresponding to \(RSO^*_{\mu}\) in the original paper.↩︎

  14. Baltagi and Li derive a basically analogous T-asymptotic test for first-order serial correlation in a FE panel model as a Breusch-Godfrey LM test on within residuals (see B. Baltagi and Li (1995) par. 2.3 and formula 12). They also observe that the test on within residuals can be used for testing on the RE model, as “the within transformation [time-demeaning, in our terminology] wipes out the individual effects, whether fixed or randomâ€. Generalizing the Durbin-Watson test to FE models by applying it to fixed effects residuals is documented in Bhargava, Franzini, and Narendranathan (1982), a (modified) version for unbalanced and/or non-consecutive panels is implemented in pbnftest as is Baltagi-Wu’s LBI statistic (for both see Badi H. Baltagi and Wu (1999)).↩︎

  15. see subsection robust covariance matrix estimation.↩︎

  16. Here, \(e_{it}\) for notational simplicity (and as in Wooldridge): equivalent to \(\Delta \epsilon_{it}\) in the general notation of the paper.↩︎

  17. This is the case, e.g., if in an unobserved effects model when XSD is due to an unobservable factor structure, with factors that are uncorrelated with the regressors. In this case the within or random estimators are still consistent, although inefficient (see De Hoyos and Sarafidis (2006)).↩︎

  18. The unbalanced version of this statistic uses max(Tij) for T in the bias-correction term.↩︎

  19. This is also the only solution when the time dimension’s length is insufficient for estimating the heterogeneous model.↩︎

  20. The very comprehensive package spdep for spatial dependence analysis (see Bivand (2008)) contains features for creating, lagging and manipulating neighbour list objects of class nb, that can be readily converted to and from proximity matrices by means of the nb2mat function. Higher orders of the \(CD(p)\) test can be obtained by lagging the corresponding nbs through nblag.↩︎

  21. The individual p-values for the Fisher-type tests are approximated as described in James G. MacKinnon (1996) if the package urca (Pfaff (2008)) is available, otherwise as described in James G. MacKinnon (1994).↩︎

  22. See Halbert White (1980) and H. White (1984).↩︎

  23. The HC3 and HC4 weighting schemes are computationally expensive and may hit memory limits for \(nT\) in the thousands, where on the other hand it makes little sense to apply small sample corrections.↩︎

  24. For coeftest set df = Inf to have the coefficients’ tests be performed with standard normal distribution instead of t distribution as we deal with a random effects model here. For these types of models, the precise distribution of the coefficients estimates is unknown.↩︎

  25. Joint zero-restriction testing still allows providing the vcov of the unrestricted model as a matrix, see the documentation of package lmtest.↩︎

  26. This discussion does not consider GMM models. One of the basic reasons for econometricians not to choose maximum likelihood methods in estimation is that the strict exogeneity of regressors assumption required for consistency of the ML models reported in the following is often inappropriate in economic settings.↩︎

  27. The standard reference on the subject of mixed models in S/R is J. C. Pinheiro and Bates (2000).↩︎

  28. Lagrange Multiplier tests based on the likelihood principle are suitable for testing against more general alternatives on the basis of a maintained model with spherical residuals and find therefore application in testing for departures from the classical hypotheses on the error term. The seminal reference is T. S. Breusch and Pagan (1980).↩︎

  29. For fixed effects estimation, as the sample grows (on the dimension on which the fixed effects are specified) so does the number of parameters to be estimated. Estimation of individual fixed effects is \(T\)– (but not \(n\)–) consistent, and the opposite.↩︎

  30. In doing so, we stress that “equivalence†concerns only the specification of the model, and neither the appropriateness nor the relative efficiency of the relevant estimation techniques, which will of course be dependent on the context. Unlike their mixed model counterparts, the specifications in plm are, strictly speaking, distribution-free. Nevertheless, for the sake of exposition, in the following we present them in the setting which ensures consistency and efficiency (e.g., we consider the hypothesis of spherical errors part of the specification of pooled OLS and so forth).↩︎

  31. Take heed that here, in contrast to the usual meaning of serial correlation in time series, we always speak of serial correlation between the errors of each group.↩︎

  32. note that the time index is coerced to numeric before the estimation.↩︎

plm/inst/doc/B_plmFunction.Rmd0000644000176200001440000004330114340404505015767 0ustar liggesusers--- title: "Estimation of error components models with the plm function" author: - name: Yves Croissant date: '`r Sys.Date()`' output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib vignette: > %\VignetteIndexEntry{Estimation of error components models with the plm function} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo=FALSE} library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` ```{r texreg, echo = FALSE, results = "hide"} library("texreg") extract.plm <- function(model, include.rsquared = TRUE, include.adjrs = TRUE, include.nobs = TRUE, include.ercomp = TRUE, ...) { s <- summary(model, ...) coefficient.names <- rownames(coef(s)) coefficients <- coef(s)[ , 1L] standard.errors <- coef(s)[ , 2L] significance <- coef(s)[ , 4L] rs <- s$r.squared[1L] adj <- s$r.squared[2L] n <- length(model$residuals) gof <- numeric() gof.names <- character() gof.decimal <- logical() if (include.ercomp == TRUE){ if (model$args$model == "random"){ se <- sqrt(ercomp(model)$sigma) gof <- c(gof, se) gof.names <- c(gof.names, paste("s_", names(se), sep = "")) gof.decimal <- c(gof.decimal, rep(TRUE, length(se))) } } if (include.rsquared == TRUE) { gof <- c(gof, rs) gof.names <- c(gof.names, "R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.adjrs == TRUE) { gof <- c(gof, adj) gof.names <- c(gof.names, "Adj.\ R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.nobs == TRUE) { gof <- c(gof, n) gof.names <- c(gof.names, "Num.\ obs.") gof.decimal <- c(gof.decimal, FALSE) } tr <- createTexreg( coef.names = coefficient.names, coef = coefficients, se = standard.errors, pvalues = significance, gof.names = gof.names, gof = gof, gof.decimal = gof.decimal ) return(tr) } setMethod("extract", signature = className("plm", "plm"), definition = extract.plm) ``` `plm` is a very versatile function which enable the estimation of a wide range of error component models. Those models can be written as follows : $$ y_{nt}=\alpha + \beta^\top x_{nt} + \epsilon_{nt} = \alpha + \beta^\top x_{nt} + \eta_n + \mu_t + \nu_{nt} $$ where $n$ and $t$ are the individual and time indexes, $y$ the response, $x$ a vector of covariates, $\alpha$ the overall intercept and $\beta$ the vector of parameters of interest that we are willing to estimate. The error term $\epsilon_{nt}$ is composed of three elements (in the two-way case): - $\eta_n$ is the individual effect, - $\mu_t$ is the time effect, - $\nu_{nt}$ is the idiosyncratic error. # Basic use of `plm` The first two arguments of `plm` are, like for most of the estimation functions of `R` a `formula` which describes the model to be estimated and a `data.frame`. `subset`, `weights`, and `na.action` are also available and have the same behavior as in the `lm` function. Three more main arguments can be set : - `index` helps `plm` to understand the structure of the data : if `NULL`, the first two columns of the data are assumed to contain the individual or the time index. Otherwise, supply the column names of the individual and time index as a character, e.g., use something like `c("firm", "year")` or just `"firm"` if there is no explicit time index. - `effect` indicates the effects that should be taken into account ; this is one of `"individual"`, `"time"`, and `"twoways"`. - `model` indicates the model to be estimated : + `"pooling"` is the OLS estimation (equivalent to a call to `lm`), + `"between"` performs the estimation on the individual or time means, + `"within"` (fixed-effects model) on the deviations from the individual or/and time mean, + `"fd"` on the first differences, and + `"random"` (random-effects model) perform a feasible generalized least squares estimation which takes into account the correlation induced by the presence of individual and/or time effects. The estimation of all but the last model is straightforward, as it requires only the estimation by *OLS* of obvious transformations of the data. The *GLS* model requires more explanation. In most of the cases, the estimation is obtained by quasi-differencing the data from the individual and/or the time means. The coefficients used to perform this quasi-difference depends on estimators of the variance of the components of the error, namely $\sigma^2_\nu$, $\sigma^2_\eta$ in case of individual effects and $\sigma^2_\mu$ in case of time effects. The most common technique used to estimate these variance is to use the following result : $$ \frac{\mbox{E}(\epsilon^\top W \epsilon)}{N(T-1)} = \sigma_\nu^2 $$ and $$ \frac{\mbox{E}(\epsilon^\top B \epsilon)}{N} = T \sigma_\eta^2 + \sigma_\nu^2 $$ where $B$ and $W$ are respectively the matrices that performs the individual (or time) means and the deviations from these means. Consistent estimators can be obtained by replacing the unknown errors by the residuals of a consistent preliminary estimation and by dropping the expecting value operator. Some degree of freedom correction can also be introduced. `plm` calls the general function `ercomp` to estimate the variances. Important arguments to `ercomp` are: - `models` indicates which models are estimated in order to calculate the two quadratic forms ; for example `c("within", "Between")`. Note that when only one model is provided in `models`, this means that the same residuals are used to compute the two quadratic forms. - `dfcor` indicates what kind of degrees of freedom correction is used : if `0`, the quadratic forms are divided by the number of observations, respectively $N\times T$ and $N$ ; if `1`, the numerators of the previous expressions are used ($N\times (T-1)$ and $N$) ; if `2`, the number of estimated parameters in the preliminary estimate $K$ is deducted. Finally, if `3`, the unbiased version is computed, which is based on much more complex computations, which relies on the calculus of the trace of different cross-products which depends on the preliminary models used. - `method` is an alternative to the `models` argument; it is one of : * `"walhus"` (equivalent to setting `models = c("pooling")`), @WALL:HUSS:69, * `"swar"` (equivalent to `models = c("within", "Between")`), @SWAM:AROR:72, * `"amemiya"` (equivalent to `models = c("within")`), @AMEM:71, * `"nerlove"`, which is a specific method which doesn't fit to the quadratic form methodology described above (@NERLO:71) and uses an within model for the variance estimation as well, * `"ht"` is an slightly modified version of `"amemiya"`: when there are time-invariant covariates, the @AMEM:71 estimator of the individual component of the variance under-estimates as the time-invariant covariates disappear in the within regression. In this case, @HAUS:TAYL:81 proposed to regress the estimation of the individual effects on the time-invariant covariates and use the residuals in order to estimate the components of the variance. Note that for `plm`, the arguments are `random.models`, `random.dfcor`, and `random.method` and correspond to arguments `models`, `method`, and `random.dfcor` of function `ercomp` with the same values as above, respectively. To illustrate the use of `plm`, we use examples reproduced in @BALT:13, p. 21; @BALT:21, p. 31, table 2.1 presents EViews' results of the estimation on the `Grunfeld` data set : ```{r grunfeld} library("plm") data("Grunfeld", package = "plm") ols <- plm(inv ~ value + capital, Grunfeld, model = "pooling") between <- update(ols, model = "between") within <- update(ols, model = "within") walhus <- update(ols, model = "random", random.method = "walhus", random.dfcor = 3) amemiya <- update(walhus, random.method = "amemiya") swar <- update(amemiya, random.method = "swar") ``` Note that the `random.dfcor` argument is set to `3`, which means that the unbiased version of the estimation of the error components is used. We use the `texreg` package to present the results : ```{r grunfeldresults, echo = TRUE} library("texreg") screenreg(list(ols = ols, between = between, within = within, walhus = walhus, amemiya = amemiya, swar = swar), digits = 5, omit.coef = "(Intercept)") ``` The estimated variance can be extracted using the `ercomp` function. For example, for the `amemiya` model : ```{r ercompamemiya} ercomp(amemiya) ``` @BALT:13, p. 27; @BALT:21, p. 31 presents the Stata estimation of the Swamy-Arora estimator ; the Swamy-Arora estimator is the same if `random.dfcor` is set to `3` or `2` (the quadratic forms are divided by $\sum_n T_n - K - N$ and by $N - K - 1$), so I don't know what is the behaviour of Stata for the other estimators for which the unbiased estimators differs from the simple one. ```{r produc} data("Produc", package = "plm") PrSwar <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "swar", random.dfcor = 3) summary(PrSwar) ``` # The twoways effect model The two-ways effect model is obtained by setting the `effect` argument to `"twoways"`. @BALT:13 pp. 51-53; @BALT:21, pp. 61-62, tables 3.1-3.3, presents EViews' output for the Grunfeld data set. ```{r grunfeld2ways} Grw <- plm(inv ~ value + capital, Grunfeld, model = "random", effect = "twoways", random.method = "walhus", random.dfcor = 3) Grs <- update(Grw, random.method = "swar") Gra <- update(Grw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Grw, "Swamy-Arora" = Grs, "Amemiya" = Gra), digits = 5) ``` The estimated variance of the time component is negative for the Wallace-Hussain as well as the Swamy-Arora models and `plm` sets it to 0. @BALT:09 pp. 60-62, presents EViews' output for the `Produc` data. ```{r produc2ways} data("Produc", package = "plm") Prw <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "walhus", effect = "twoways", random.dfcor = 3) Prs <- update(Prw, random.method = "swar") Pra <- update(Prw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Prw, "Swamy-Arora" = Prs, "Amemiya" = Pra), digits = 5) ``` # Unbalanced panels Two difficulties arise with unbalanced panels : - There are no obvious denominators for the quadratic forms of the residuals that are used to estimate the components of the variance. The strategy is then to compute the expected value and equate it to the actual quadratic forms. Detailed formula are omitted here, they depend on the preliminary estimator. - For the one-way effect model, the estimator is still obtained by applying *OLS* on demeaned data (the individual **and** the time means are now deducted) for the within model and on quasi-demeaned data for the random effects model ; this is not the case for the two-ways effects model. @BALT:21, @BALT:13, and @BALT:09 present results of the estimation of the @SWAM:AROR:72 model with the `Hedonic` data set. @BALT:13, p. 195; @BALT:21, p. 237, table 9.1, presents the Stata output and @BALT:09, p. 211 presents EViews' output. EViews' Wallace-Hussain estimator is reported in @BALT:09, p. 210. ```{r hedonic} data("Hedonic", package = "plm") form <- mv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + tax + ptratio + blacks + lstat HedStata <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "between")) HedEviews <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "Between")) HedEviewsWH <- update(HedEviews, random.models = "pooling") screenreg(list(EViews = HedEviews, Stata = HedStata, "Wallace-Hussain" = HedEviewsWH), digits = 5, single.row = TRUE) ``` The difference is due to the fact that Stata uses a between regression on $N$ observations while EViews uses a between regression on $\sum_n T_n$ observations, which are not the same on unbalanced panels. Note the use of between with or without the B capitalized (`"Between"` and `"between"`) in the `random.models` argument. `plm`'s default is to use the between regression with $\sum_n T_n$ observations when setting `model = "random", random.method = "swar"`. The default employed is what the original paper for the unbalanced one-way Swamy-Arora estimator defined (in @BALT:CHAN:94, p. 73). A more detailed analysis of Stata's Swamy-Arora estimation procedure is given by @COTT:2017. # Instrumental variable estimators All of the models presented above may be estimated using instrumental variables (IV). The instruments are specified using two- or three-part formulas, each part being separated by a `|` sign : - the first part contains the covariates, - the second part contains the "double-exogenous" instruments, *i.e.*, variables that can be used twice as instruments, using their within and the between transformation, - the third part contains the "single-exogenous" instruments, *i.e.*, variables for which only the within transformation can be used as instruments, those variables being correlated with the individual effects. The instrumental variables estimator used is indicated with the `inst.method` argument: - `"bvk"`, from @BALE:VARA:87, the default value : in this case, all the instruments are introduced in quasi-differences, using the same transformation as for the response and the covariates, - `"baltagi"`, from @BALT:81, the instruments of the *second* part are introduced twice by using the between and the within transformation and instruments of the *third* part are introduced with only the within transformation, - `"am"`, from @AMEM:MACU:86, in addition to the instrument set of `"baltagi"`, the within transformation of the variables of the *second* part for each period are also included as instruments, - `"bms"`, from @BREU:MIZO:SCHM:89, in addition to the instrument set of `"baltagi"`, the within transformation of the variables of the *second* and the *third* part for each period are included as instruments. The various possible values of the `inst.method` argument are not relevant for fixed effect IV models as there is only one method for this type of IV models but many for random effect IV models. The instrumental variable estimators are illustrated in the following example from @BALT:05, pp. 117/120; @BALT:13, pp. 133/137; @BALT:21, pp. 162/165, tables 7.1, 7.3. ```{r IV} data("Crime", package = "plm") crbalt <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random", inst.method = "baltagi") crbvk <- update(crbalt, inst.method = "bvk") crwth <- update(crbalt, model = "within") crbe <- update(crbalt, model = "between") screenreg(list(FE2SLS = crwth, BE2SLS = crbe, EC2SLS = crbalt, G2SLS = crbvk), single.row = FALSE, digits = 5, omit.coef = "(region)|(year)", reorder.coef = c(1:16, 19, 18, 17)) ``` The Hausman-Taylor model (@HAUS:TAYL:81) may be estimated with the `plm` function by setting argument `random.method = "ht"` and `inst.method = "baltagi"`. The following example is from @BALT:05, p. 130; @BALT:13, pp. 145-7, tables 7.4-7.6; @BALT:21, pp. 174-6 , tables 7.5-7.7. ```{r IV-HT} data("Wages", package = "plm") ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp^2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + exp + I(exp^2) + union, data = Wages, index = 595, inst.method = "baltagi", model = "random", random.method = "ht") am <- update(ht, inst.method = "am") bms <- update(ht, inst.method = "bms") screenreg(list("Hausman-Taylor" = ht, "Amemiya-MaCurdy" = am, "Breusch-Mizon-Schmidt" = bms), digits = 5, single.row = FALSE) ``` # Nested error component model This section shows how the nested error component model as per @BALT:SONG:JUNG:01 can be estimated. The model is given by : $$ y_{nt}=\alpha + \beta^\top x_{jnt} + u_{jnt} = \alpha + \beta^\top x_{jnt} + \mu_{j} + \nu_{jn} + \epsilon_{jnt} $$ where $n$ and $t$ are the individual and time indexes and $j$ is the group index in which the individuals are nested. The error $u_{jnt}$ consists of three components : - $\mu_j$ is the group effect, - $\nu_{jn}$ the nested effect of the individual nested in group $j$ - $\epsilon_{jnt}$ is the idiosyncratic error. In the estimated examples below (replication of @BALT:SONG:JUNG:01, p. 378, table 6; @BALT:21, p. 248, table 9.1), states are nested within regions. The group index is given in the 3rd position of the `index` argument to `pdata.frame` or to `plm` directly and `plm`'s argument `effect` is set to `"nested"`: ```{r nestedRE} data("Produc", package = "plm") swar <- plm(form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp, Produc, index = c("state", "year", "region"), model = "random", effect = "nested", random.method = "swar") walhus <- update(swar, random.method = "walhus") amem <- update(swar, random.method = "amemiya") screenreg(list("Swamy-Arora" = swar, "Wallace-Hussain" = walhus, "Amemiya" = amem), digits = 5) ``` # Bibliography plm/inst/doc/B_plmFunction.R0000644000176200001440000001466014742231567015470 0ustar liggesusers## ----setup, echo=FALSE-------------------------------------------------------- library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ## ----texreg, echo = FALSE, results = "hide"----------------------------------- library("texreg") extract.plm <- function(model, include.rsquared = TRUE, include.adjrs = TRUE, include.nobs = TRUE, include.ercomp = TRUE, ...) { s <- summary(model, ...) coefficient.names <- rownames(coef(s)) coefficients <- coef(s)[ , 1L] standard.errors <- coef(s)[ , 2L] significance <- coef(s)[ , 4L] rs <- s$r.squared[1L] adj <- s$r.squared[2L] n <- length(model$residuals) gof <- numeric() gof.names <- character() gof.decimal <- logical() if (include.ercomp == TRUE){ if (model$args$model == "random"){ se <- sqrt(ercomp(model)$sigma) gof <- c(gof, se) gof.names <- c(gof.names, paste("s_", names(se), sep = "")) gof.decimal <- c(gof.decimal, rep(TRUE, length(se))) } } if (include.rsquared == TRUE) { gof <- c(gof, rs) gof.names <- c(gof.names, "R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.adjrs == TRUE) { gof <- c(gof, adj) gof.names <- c(gof.names, "Adj.\ R$^2$") gof.decimal <- c(gof.decimal, TRUE) } if (include.nobs == TRUE) { gof <- c(gof, n) gof.names <- c(gof.names, "Num.\ obs.") gof.decimal <- c(gof.decimal, FALSE) } tr <- createTexreg( coef.names = coefficient.names, coef = coefficients, se = standard.errors, pvalues = significance, gof.names = gof.names, gof = gof, gof.decimal = gof.decimal ) return(tr) } setMethod("extract", signature = className("plm", "plm"), definition = extract.plm) ## ----grunfeld----------------------------------------------------------------- library("plm") data("Grunfeld", package = "plm") ols <- plm(inv ~ value + capital, Grunfeld, model = "pooling") between <- update(ols, model = "between") within <- update(ols, model = "within") walhus <- update(ols, model = "random", random.method = "walhus", random.dfcor = 3) amemiya <- update(walhus, random.method = "amemiya") swar <- update(amemiya, random.method = "swar") ## ----grunfeldresults, echo = TRUE--------------------------------------------- library("texreg") screenreg(list(ols = ols, between = between, within = within, walhus = walhus, amemiya = amemiya, swar = swar), digits = 5, omit.coef = "(Intercept)") ## ----ercompamemiya------------------------------------------------------------ ercomp(amemiya) ## ----produc------------------------------------------------------------------- data("Produc", package = "plm") PrSwar <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "swar", random.dfcor = 3) summary(PrSwar) ## ----grunfeld2ways------------------------------------------------------------ Grw <- plm(inv ~ value + capital, Grunfeld, model = "random", effect = "twoways", random.method = "walhus", random.dfcor = 3) Grs <- update(Grw, random.method = "swar") Gra <- update(Grw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Grw, "Swamy-Arora" = Grs, "Amemiya" = Gra), digits = 5) ## ----produc2ways-------------------------------------------------------------- data("Produc", package = "plm") Prw <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, Produc, model = "random", random.method = "walhus", effect = "twoways", random.dfcor = 3) Prs <- update(Prw, random.method = "swar") Pra <- update(Prw, random.method = "amemiya") screenreg(list("Wallace-Hussain" = Prw, "Swamy-Arora" = Prs, "Amemiya" = Pra), digits = 5) ## ----hedonic------------------------------------------------------------------ data("Hedonic", package = "plm") form <- mv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + tax + ptratio + blacks + lstat HedStata <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "between")) HedEviews <- plm(form, Hedonic, model = "random", index = "townid", random.models = c("within", "Between")) HedEviewsWH <- update(HedEviews, random.models = "pooling") screenreg(list(EViews = HedEviews, Stata = HedStata, "Wallace-Hussain" = HedEviewsWH), digits = 5, single.row = TRUE) ## ----IV----------------------------------------------------------------------- data("Crime", package = "plm") crbalt <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "random", inst.method = "baltagi") crbvk <- update(crbalt, inst.method = "bvk") crwth <- update(crbalt, model = "within") crbe <- update(crbalt, model = "between") screenreg(list(FE2SLS = crwth, BE2SLS = crbe, EC2SLS = crbalt, G2SLS = crbvk), single.row = FALSE, digits = 5, omit.coef = "(region)|(year)", reorder.coef = c(1:16, 19, 18, 17)) ## ----IV-HT-------------------------------------------------------------------- data("Wages", package = "plm") ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp^2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + exp + I(exp^2) + union, data = Wages, index = 595, inst.method = "baltagi", model = "random", random.method = "ht") am <- update(ht, inst.method = "am") bms <- update(ht, inst.method = "bms") screenreg(list("Hausman-Taylor" = ht, "Amemiya-MaCurdy" = am, "Breusch-Mizon-Schmidt" = bms), digits = 5, single.row = FALSE) ## ----nestedRE----------------------------------------------------------------- data("Produc", package = "plm") swar <- plm(form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp, Produc, index = c("state", "year", "region"), model = "random", effect = "nested", random.method = "swar") walhus <- update(swar, random.method = "walhus") amem <- update(swar, random.method = "amemiya") screenreg(list("Swamy-Arora" = swar, "Wallace-Hussain" = walhus, "Amemiya" = amem), digits = 5) plm/inst/doc/C_plmModelComponents.html0000644000176200001440000005725314742231571017555 0ustar liggesusers Model components for fitted models with plm

Model components for fitted models with plm

Yves Croissant

2025-01-16

plm tries to follow as close as possible the way models are fitted using lm. This relies on the following steps, using the formula-data with some modifications:

  • compute internally the model.frame by getting the relevant arguments (formula, data, subset, weights, na.action and offset) and the supplementary argument,
  • extract from the model.frame the response y (with pmodel.response) and the model matrix X (with model.matrix),
  • call the (non-exported) estimation function plm.fit with X and y as arguments.

Panel data has a special structure which is described by an index argument. This argument can be used in the pdata.frame function which returns a pdata.frame object. A pdata.frame can be used as input to the data argument of plm. If the data argument of plm is an ordinary data.frame, the index argument can also be supplied as an argument of plm. In this case, the pdata.frame function is called internally to transform the data.

Next, the formula, which is the first and mandatory argument of plm is coerced to a Formula object.

model.frame is then called, but with the data argument in the first position (a pdata.frame object) and the formula in the second position. This unusual order of the arguments enables to use a specific model.frame.pdata.frame method defined in plm.

As for the model.frame.formula method, a data.frame is returned, with a terms attribute.

Next, the X matrix is extracted using model.matrix. The usual way to do so is to feed the function with two arguments, a formula or a terms object and a data.frame created with model.frame. lm uses something like model.matrix(terms(mf), mf) where mf is a data.frame created with model.frame. Therefore, model.matrix needs actually one argument and not two and we therefore wrote a model.matrix.pdata.frame which does the job ; the method first checks that the argument has a term attribute, extracts the terms (actually the formula) and then computes the model’s matrix X.

The response y is usually extracted using model.response, with a data.frame created with model.frame as first argument, but it is not generic. We therefore created a generic called pmodel.response and provide a pmodel.response.pdata.frame method. We illustrate these features using a simplified (in terms of covariates) example with the SeatBelt data set:

library("plm")
data("SeatBelt", package = "pder")
SeatBelt$occfat <- with(SeatBelt, log(farsocc / (vmtrural + vmturban)))
pSB <- pdata.frame(SeatBelt)

We start with an OLS (pooling) specification:

formols <- occfat ~ log(usage) + log(percapin)
mfols <- model.frame(pSB, formols)
Xols <- model.matrix(mfols)
y <- pmodel.response(mfols)
coef(lm.fit(Xols, y))
##   (Intercept)    log(usage) log(percapin) 
##     7.4193570     0.1657293    -1.1583712

which is equivalent to:

coef(plm(formols, SeatBelt, model = "pooling"))
##   (Intercept)    log(usage) log(percapin) 
##     7.4193570     0.1657293    -1.1583712

Next, we use an instrumental variables specification. Variable usage is endogenous and instrumented by three variables indicating the law context: ds, dp, and dsp.

The model is described using a two-parts formula, the first part of the RHS describing the covariates and the second part the instruments. The following two formulations can be used:

formiv1 <- occfat ~ log(usage) + log(percapin) | log(percapin) + ds + dp + dsp
formiv2 <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp

The second formulation has two advantages:

  • in the common case when a lot of covariates are instruments, these covariates don’t need to be indicated in the second RHS part of the formula,
  • the endogenous variables clearly appear as they are proceeded by a - sign in the second RHS part of the formula.

The formula is coerced to a Formula, using the Formula package. model.matrix.pdata.frame then internally calls model.matrix.Formula in order to extract the covariates and instruments model matrices:

mfSB1 <- model.frame(pSB, formiv1)
X1 <- model.matrix(mfSB1, rhs = 1)
W1 <- model.matrix(mfSB1, rhs = 2)
head(X1, 3) ; head(W1, 3)
##    (Intercept) log(usage) log(percapin)
## 8            1 -0.7985077      9.955748
## 9            1 -0.4155154      9.975622
## 10           1 -0.4155154     10.002110
##    (Intercept) log(percapin) ds dp dsp
## 8            1      9.955748  0  0   0
## 9            1      9.975622  1  0   0
## 10           1     10.002110  1  0   0

For the second (and preferred formulation), the dot argument should be set and is passed to the Formula methods. . has actually two meanings:

  • all available covariates,
  • the previous covariates used while updating a formula.

which correspond respectively to dot = "seperate" (the default) and dot = "previous". See the difference between the following two examples:

library("Formula")
head(model.frame(Formula(formiv2), SeatBelt), 3)
##       occfat log(usage) log(percapin) state year farsocc farsnocc usage
## 8  -3.788976 -0.7985077      9.955748    AK 1990      90        8  0.45
## 9  -3.904837 -0.4155154      9.975622    AK 1991      81       20  0.66
## 10 -3.699611 -0.4155154     10.002110    AK 1992      95       13  0.66
##    percapin unemp  meanage   precentb   precenth  densurb   densrur
## 8     21073  7.05 29.58628 0.04157167 0.03252657 1.099419 0.1906836
## 9     21496  8.75 29.82771 0.04077293 0.03280357 1.114670 0.1906712
## 10    22073  9.24 30.21070 0.04192957 0.03331731 1.114078 0.1672785
##         viopcap    proppcap vmtrural vmturban fueltax lim65 lim70p mlda21 bac08
## 8  0.0009482704 0.008367458     2276     1703       8     0      0      1     0
## 9  0.0010787370 0.008940661     2281     1740       8     0      0      1     0
## 10 0.0011257068 0.008366873     2005     1836       8     1      0      1     0
##    ds dp dsp
## 8   0  0   0
## 9   1  0   0
## 10  1  0   0
head(model.frame(Formula(formiv2), SeatBelt, dot = "previous"), 3)
##       occfat log(usage) log(percapin) ds dp dsp
## 8  -3.788976 -0.7985077      9.955748  0  0   0
## 9  -3.904837 -0.4155154      9.975622  1  0   0
## 10 -3.699611 -0.4155154     10.002110  1  0   0

In the first case, all the covariates are returned by model.frame as the . is understood by default as “everythingâ€.

In plm, the dot argument is internally set to previous so that the end-user doesn’t have to worry about these subtleties.

mfSB2 <- model.frame(pSB, formiv2)
X2 <- model.matrix(mfSB2, rhs = 1)
W2 <- model.matrix(mfSB2, rhs = 2)
head(X2, 3) ; head(W2, 3)
##    (Intercept) log(usage) log(percapin)
## 8            1 -0.7985077      9.955748
## 9            1 -0.4155154      9.975622
## 10           1 -0.4155154     10.002110
##    (Intercept) log(percapin) ds dp dsp
## 8            1      9.955748  0  0   0
## 9            1      9.975622  1  0   0
## 10           1     10.002110  1  0   0

The IV estimator can then be obtained as a 2SLS estimator: First, regress the covariates on the instruments and get the fitted values:

HX1 <- lm.fit(W1, X1)$fitted.values
head(HX1, 3)
##    (Intercept) log(usage) log(percapin)
## 8            1 -1.0224257      9.955748
## 9            1 -0.5435055      9.975622
## 10           1 -0.5213364     10.002110

Next, regress the response on these fitted values:

coef(lm.fit(HX1, y))
##   (Intercept)    log(usage) log(percapin) 
##     7.5641209     0.1768576    -1.1722590

The same can be achieved in one command by using the formula-data interface with plm:

coef(plm(formiv1, SeatBelt, model = "pooling"))
##   (Intercept)    log(usage) log(percapin) 
##     7.5641209     0.1768576    -1.1722590

or with the ivreg function from package AER (or with the newer function ivreg in package ivreg superseding AER::ivreg()):

coef(AER::ivreg(formiv1, data = SeatBelt))
##   (Intercept)    log(usage) log(percapin) 
##     7.5641209     0.1768576    -1.1722590
plm/inst/doc/C_plmModelComponents.Rmd0000644000176200001440000001574314340404505017322 0ustar liggesusers--- title: Model components for fitted models with plm author: - name: Yves Croissant date: '`r Sys.Date()`' output: rmarkdown::html_vignette bibliography: ../inst/REFERENCES.bib vignette: > %\VignetteIndexEntry{Model components for fitted models with plm} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo=FALSE} library("knitr") opts_chunk$set(message = FALSE, warning = FALSE) ``` plm tries to follow as close as possible the way models are fitted using `lm`. This relies on the following steps, using the `formula`-`data` with some modifications: - compute internally the `model.frame` by getting the relevant arguments (`formula`, `data`, `subset`, `weights`, `na.action` and `offset`) and the supplementary argument, - extract from the `model.frame` the response `y` (with `pmodel.response`) and the model matrix `X` (with `model.matrix`), - call the (non-exported) estimation function `plm.fit` with `X` and `y` as arguments. Panel data has a special structure which is described by an `index` argument. This argument can be used in the `pdata.frame` function which returns a `pdata.frame` object. A `pdata.frame` can be used as input to the `data` argument of `plm`. If the `data` argument of `plm` is an ordinary `data.frame`, the `index` argument can also be supplied as an argument of `plm`. In this case, the `pdata.frame` function is called internally to transform the data. Next, the `formula`, which is the first and mandatory argument of `plm` is coerced to a `Formula` object. `model.frame` is then called, but with the `data` argument in the first position (a `pdata.frame` object) and the `formula` in the second position. This unusual order of the arguments enables to use a specific `model.frame.pdata.frame` method defined in `plm`. As for the `model.frame.formula` method, a `data.frame` is returned, with a `terms` attribute. Next, the `X` matrix is extracted using `model.matrix`. The usual way to do so is to feed the function with two arguments, a `formula` or a `terms` object and a `data.frame` created with `model.frame`. `lm` uses something like `model.matrix(terms(mf), mf)` where `mf` is a `data.frame` created with `model.frame`. Therefore, `model.matrix` needs actually one argument and not two and we therefore wrote a `model.matrix.pdata.frame` which does the job ; the method first checks that the argument has a `term` attribute, extracts the `terms` (actually the `formula`) and then computes the model's matrix `X`. The response `y` is usually extracted using `model.response`, with a `data.frame` created with `model.frame` as first argument, but it is not generic. We therefore created a generic called `pmodel.response` and provide a `pmodel.response.pdata.frame` method. We illustrate these features using a simplified (in terms of covariates) example with the `SeatBelt` data set: ```{r } library("plm") data("SeatBelt", package = "pder") SeatBelt$occfat <- with(SeatBelt, log(farsocc / (vmtrural + vmturban))) pSB <- pdata.frame(SeatBelt) ``` We start with an OLS (pooling) specification: ```{r } formols <- occfat ~ log(usage) + log(percapin) mfols <- model.frame(pSB, formols) Xols <- model.matrix(mfols) y <- pmodel.response(mfols) coef(lm.fit(Xols, y)) ``` which is equivalent to: ```{r } coef(plm(formols, SeatBelt, model = "pooling")) ``` Next, we use an instrumental variables specification. Variable `usage` is endogenous and instrumented by three variables indicating the law context: `ds`, `dp`, and `dsp`. The model is described using a two-parts formula, the first part of the RHS describing the covariates and the second part the instruments. The following two formulations can be used: ```{r } formiv1 <- occfat ~ log(usage) + log(percapin) | log(percapin) + ds + dp + dsp formiv2 <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp ``` The second formulation has two advantages: - in the common case when a lot of covariates are instruments, these covariates don't need to be indicated in the second RHS part of the formula, - the endogenous variables clearly appear as they are proceeded by a `-` sign in the second RHS part of the formula. The formula is coerced to a `Formula`, using the `Formula` package. `model.matrix.pdata.frame` then internally calls `model.matrix.Formula` in order to extract the covariates and instruments model matrices: ```{r } mfSB1 <- model.frame(pSB, formiv1) X1 <- model.matrix(mfSB1, rhs = 1) W1 <- model.matrix(mfSB1, rhs = 2) head(X1, 3) ; head(W1, 3) ``` For the second (and preferred formulation), the `dot` argument should be set and is passed to the `Formula` methods. `.` has actually two meanings: - all available covariates, - the previous covariates used while updating a formula. which correspond respectively to `dot = "seperate"` (the default) and `dot = "previous"`. See the difference between the following two examples: ```{r } library("Formula") head(model.frame(Formula(formiv2), SeatBelt), 3) head(model.frame(Formula(formiv2), SeatBelt, dot = "previous"), 3) ``` In the first case, all the covariates are returned by `model.frame` as the `.` is understood by default as "everything". In `plm`, the `dot` argument is internally set to `previous` so that the end-user doesn't have to worry about these subtleties. ```{r } mfSB2 <- model.frame(pSB, formiv2) X2 <- model.matrix(mfSB2, rhs = 1) W2 <- model.matrix(mfSB2, rhs = 2) head(X2, 3) ; head(W2, 3) ``` The IV estimator can then be obtained as a 2SLS estimator: First, regress the covariates on the instruments and get the fitted values: ```{r } HX1 <- lm.fit(W1, X1)$fitted.values head(HX1, 3) ``` Next, regress the response on these fitted values: ```{r } coef(lm.fit(HX1, y)) ``` The same can be achieved in one command by using the `formula`-`data` interface with `plm`: ```{r } coef(plm(formiv1, SeatBelt, model = "pooling")) ``` or with the `ivreg` function from package `AER` (or with the newer function `ivreg` in package `ivreg` superseding `AER::ivreg()`): ```{r } coef(AER::ivreg(formiv1, data = SeatBelt)) ``` ```{r eval = FALSE, include = FALSE} X2 <- model.matrix(Formula(form1), mfSB, rhs = 2, dot = "previous") formols <- occfat ~ log(usage) + log(percapin) | . - log(usage) + ds + dp + dsp form1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + log(precentb) + log(precenth) + log(densrur) + log(densurb) + log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + log(fueltax) + lim65 + lim70p + mlda21 + bac08 form2 <- . ~ . | . - log(usage) + ds + dp +dsp jorm1 <- occfat ~ log(usage) + log(percapin) + log(unemp) + log(meanage) + log(precentb) + log(precenth) + log(densrur) + log(densurb) + log(viopcap) + log(proppcap) + log(vmtrural) + log(vmturban) + log(fueltax) + lim65 + lim70p + mlda21 + bac08 | . - log(usage) + ds + dp + dsp jorm2 <- noccfat ~ . | . ``` plm/inst/DPD98.txt0000644000176200001440000000576714736532326013402 0ustar liggesusers# @---------------------------- one-step estimates -----------------------------@ vc=s*inxmx; @ covariance matrix @ stderr=sqrt(diag(vc)); @ standard errors @ trat=b./stderr; @ t-ratios @ pvt=2*cdfnc(abs(trat)); @ p-values @ if m0125; if sc2; @ serial correlation tests @ v2v=y2y+b'x2x*b-y2x*b-b'x2y; v2x=y2x-b'x2x; vhat2=(yky2+b'xkx2*b-2*ykx2*b-2*v2x*inxmx*xz*inzkz*(zky2-zkx2*b)+ v2x*inxmx*v2x')*s; m2=v2v./sqrt(vhat2); pvm2=2*cdfnc(abs(m2)); endif; if sc1; v1v=y1y+b'x1x*b-y1x*b-b'x1y; v1x=y1x-b'x1x; vhat1=(yky1+b'xkx1*b-2*ykx1*b-2*v1x*inxmx*xz*inzkz*(zky1-zkx1*b)+ v1x*inxmx*v1x')*s; m1=v1v./sqrt(vhat1); pvm1=2*cdfnc(abs(m1)); endif; # @------------------ robust statistics for one-step estimates -----------------@ xax2=xzinzkz*zkz2*xzinzkz'; vc2=inxmx*xax2*inxmx; @ covariance matrix @ stderr2=sqrt(diag(vc2)); @ standard errors @ trat2=b./stderr2; @ t-values @ pvt2=2*cdfnc(abs(trat2)); @ p-values @ if sc2; @ serial correlation tests @ if m34; v2v=y2y+b'x2x*b-y2x*b-b'x2y; v2x=y2x-b'x2x; endif; vhat2w=vomv2w-(2.*v2x*inxmx*xzinzkz*zomv2w)+(v2x*vc2*v2x'); m2w=v2v./sqrt(vhat2w); pvm2w=2*cdfnc(abs(m2w)); endif; if sc1; if m34; v1v=y1y+b'x1x*b-y1x*b-b'x1y; v1x=y1x-b'x1x; endif; vhat1w=vomv1w-(2.*v1x*inxmx*xzinzkz*zomv1w)+(v1x*vc2*v1x'); m1w=v1v./sqrt(vhat1w); pvm1w=2*cdfnc(abs(m1w)); endif; # @---------------------------- Two-step estimates -----------------------------@ if (iiv==1 and ijus==0); if imike==0; inzkz2=invpd(zkz2); else; inzkz2=pinv(zkz2); endif; clear zkz2; bxmx=xz*inzkz2*zx; bxmy=xz*inzkz2*zy; bvc=invpd(bxmx); @ covariance matrix @ bb=bvc*bxmy; @ coefficient vector @ bstderr=sqrt(diag(bvc)); @ standard errors @ btrat=bb./bstderr; @ t-values @ bpvt=2*cdfnc(abs(btrat)); @ p-values @ if sc2; @ serial correlation tests @ bv2v=y2y+bb'x2x*bb-y2x*bb-bb'x2y; bvhat2w=vomv2w-(2.*v2x*bvc*xz*inzkz2*zomv2w)+(v2x*bvc*v2x'); bm2w=bv2v./sqrt(bvhat2w); pvbm2w=2*cdfnc(abs(bm2w)); endif; if sc1; bv1v=y1y+bb'x1x*bb-y1x*bb-bb'x1y; bvhat1w=vomv1w-(2.*v1x*bvc*xz*inzkz2*zomv1w)+(v1x*bvc*v1x'); bm1w=bv1v./sqrt(bvhat1w); pvbm1w=2*cdfnc(abs(bm1w)); endif; plm/inst/WORDLIST0000644000176200001440000000772014340404505013216 0ustar liggesusersADF AER Ahrens Aitken's Amemiya Angrist Arellano Arora BCSCLM BLAS BNF BSY Baltagi Benedetti Bera Bhargava Breusch BugReports CBO CCE CCEMG CCEP CIPS CRAN's Changelog Choi Chu CoefTable Cottrell Cov DMG DPD DW Driscoll Dumitrescu Durbin Düsseldorf EViews Ecdat Escudero FDGLS FEGLS FGLS FWER Feng Franzini Ftest GLS GMM Godfrey Godfrey's Granger Grunfeld Grunfeld's HC Hadri Hadri's Hanck Hausman Hayashi Hcons Hedonic Heiss Hoboken Hoechle's Hommel's Hsiao Hurlin Hussain IHS IPS Im KPSS Kao Katz Kraay Krantz LBI LM LSDV LSQ LaborSupply Levin MaCurdy MacKinnon Maddala Mizon Mundlak's Mx NaN Narendranathan Nerlove's Newey Newey's Oneway OpenBLAS Overidentifying PCSE PSID Panelmodel Pesaran Pesaran's Poolability Produc RDIFF REAMDE RSO Rdpack RiceFarms Rmd Rprofile SCC SCLM SLS SMSA Sargan Schmelzer Schwarz Simes Simes’ Snesp Springer Stata Stata's StataCorp SummaryDefault Swamy Swamy's TSS Tapply Therneau Tij Timewise Unbalancedness Wbar Wooldridge Wooldridge's Wtbar XSD Yoon Zbar Ziliak Ztbar adjrsq al alia amemiya ames amongst aneweytest arellano arg args artifactual asymptotics attr bIMAS balancedness baltagi bcsclm bdsmatrix behaviour benchmarked benchmarking bgtest bimas bmc bms bookdown bp bugfixes calc cbind ccccc ccccccc ccccccccccccc checkNA cipstest clubSandwich clusterSEs coef coefs coercible colMeans computable consecutiveness const cortab cquad cran crossprod cst cstcovar dat ddots defactored dep dev df dfcor dhat diag diff'ed differencing difft dmean doi dynformula econometrician econometrician's econometricians endog endogeneity eq eqnarray ercomp errcomp errored et exogeneity exogenous favour favours fd fixef flavours forall frac fravale func generalised gettvalue ghm github gmm gretl groupGeneric groupGenerics groupwise grunfeld hadri hedonic helpfile heteroskedastic heteroskedasticity hk homoskedastic homoskedasticity honda htest http https iT idres ifany ij ijj ik importFrom infeasibility infty ing interpretable intragroup inv invnormal ips iq ivar jj jn jnt joshuaulrich jt kk knitr labelled labour lagt lapply lcrmrte ld ldemmodel leadt lev levinlin lin lindep linearHypothesis lm lme lmtest loadings lprbarr madwu maxLik mbox microbenchmark micropanels minimise misspecification mtest mylm nT na namest namesy nd neglectable neighbour neighbouring neighbours neq newdata nlme nondiagonal nopool notational nrow nt offence oldpgmm omegaArellano omegaW onAttach oneway onwards otimes overidentifying pARtest pBGtest pDWtest pFormula pFtest panelmodel pbalanced pbgtest pbltest pbnftest pbsytest pc pcap pcce pccep pcdres pcdtest pconsecutive pcse pdata pdataframe pder pdiff pdim pdwtest pfix pggls pglm pgmm pgmm's pgrangertest phansi phansitest pht phtest piest pij pindex pldv plm's plmFunction plmModelComponents plmPackage plmtest pmerge pmg pmodel poolability pos pre preshape priori pserie pseries pseriesfy ptransform punbalancedness punitroot purtest pvalue pvar pvcm pvcm's pvcovHC pwaldtest pwartest pwfdtest pwtest qij ranef rcl rda resid rightarrow rmarkdown robustified rowSums rown roxygen rsq rvcov sargan sclm se sectionally spdep specialised sphericity splm ssr standardised statmod stringAsFactors suboptimal suml suppressPrint swar sys tapply tbar td testErrors testfile testfiles testpbgtest texreg th thx tibble timewise tindex tobit topline trho tri tss twoway twoways ud unbalancedness uncommented unobservable untransformed urca urfie useNA vapply variates vcov vcov's vcovBK vcovDC vcovG vcovHC vcovNW vcovSCC vcovXX vcovs vdots wald waldtest whitespacing www xtabond ycroissant yi zeileis à plm/README.md0000644000176200001440000001155514741261755012344 0ustar liggesusers# The `plm` Package - Linear Models and Tests for Panel Data [![CRAN status](https://www.r-pkg.org/badges/version/plm)](https://CRAN.R-project.org/package=plm) [![Downloads](https://cranlogs.r-pkg.org/badges/plm)](https://CRAN.R-project.org/package=plm) ## About `plm` is a package for panel data econometrics for the **R** statistical computing environment. The package includes functions for model estimation, testing, robust covariance matrix estimation, panel data manipulation and information. It was first published on **CRAN** in 2006. Be sure to read the NEWS on [CRAN](https://cran.r-project.org/package=plm) (or in the [development repository](https://github.com/ycroissant/plm/blob/main/NEWS.md)) for any changes in new releases (new features, bugfixes, other improvements, ...). Non-exhaustive function overview: - Functions to estimate models: - `plm`: panel data estimators (within/fixed effects, random effects, between, first-difference, nested random effects), incl. instrumental-variable estimation techniques (IV) and Hausman-Taylor-style models, - `pgmm`: generalized method of moments (GMM) estimation for panel data, - `pggls`: estimation of general feasible generalized least squares models, - `pmg`: mean groups (MG), demeaned MG and common correlated effects (CCEMG) estimators, - `pcce`: estimators for common correlated effects mean groups (CCEMG) and pooled (CCEP) for panel data with common factors, - `pvcm`: variable coefficients models, - `pldv`: panel estimators for limited dependent variables. - Testing functions: - model specification (`phtest`, `pFtest`, `pooltest`, `plmtest`, `pwaldtest`, `piest`, `aneweytest`, `mtest`, `sargan`), - serial correlation (`pbgtest`, `pwfdtest`, `pbnftest`, `pdwtest`, `pwartest`, `pbsytest`, `pbltest`), - cross-sectional dependence (`pcdtest`), - panel unit root (`purtest`, `cipstest`, `phansitest`), - panel Granger (non-)causality (`pgrangertest`). - Robust covariance matrix estimators (incl. various weighting schemes for small sample adjustment): - `vcovHC`: Arellano (1987), White (1980), - `vcovBK`: Beck and Katz (1995) (PCSE), - `vcovNW`: Newey and West (1987), - `vcovDC`: double-clustering robust (Thompson (2011), Cameron et al. (2011)), - `vcovSCC`: Driscoll and Kraay (1998). - An enhanced data frame, called `pdata.frame`, to deal with data sets for which observations are identified by a combination of two indexes. - Panel data transformation functions (e.g., `Within`, `Between`, `between`, `lag`, `lead`, `diff`). - Other functions relating to panel data sets, e.g.: - checks for panel data dimensions (individual, time, group) and balancedness (`pdim`), - checks for panel balancedness (`is.pbalanced`) and consecutiveness (regularity) (`is.pconsecutive`) as well as functions to change data to conform to these properties (`make.pbalanced`, `make.pconsecutive`), - measures for unbalancedness of data (`punbalancedness`) (Ahrens/Pincus (1981)). ## Installation To install the released version from **CRAN**: ```{r} install.packages("plm") ``` The package's CRAN website is . The development of package `plm` takes place on GitHub at . To install the development version from **GitHub**, use, e.g.: ```{r} # install.packages("remotes") # remove '#' if pkg 'remotes' is not installed remotes::install_github("ycroissant/plm") ``` ## Documentation Package plm comes with documentation: Besides the usual help pages for each function, the vignettes provide a gentle introduction to the package and some functions. Vignettes are available at the package's CRAN website and can be browsed from within R by `browseVignettes("plm")`. New package users are advised to start with the first vignette *Panel data econometrics in R: the plm package* for an overview of the package. A more in-depth treatment of estimation of error component models and instrument variable models is in the second vignette *Estimation of error component models with the plm function*. Further, many textbooks treat package `plm` and/or use it in their examples: * Croissant/Millo, *Panel Data Econometrics with R*, 2019, John Wiley & Sons, Hoboken. * Kleiber/Zeileis, *Applied Econometrics with R*, 2008, Springer, New York. Esp. chapter 3.6. * Hanck/Arnold/Gerber/Schmelzer, *Econometrics with R*, online book . Esp. chapter 10. * Heiss, *Using R for Introductory Econometrics*, 2nd edition, 2020, Independent Publishing, Düsseldorf, also available online at . A companion book using R to Wooldridge, *Introductory Econometrics*, esp. chapters 13-14. plm/build/0000755000176200001440000000000014742231571012147 5ustar liggesusersplm/build/vignette.rds0000644000176200001440000000052014742231571014503 0ustar liggesusers‹…RËNÃ0tÛ´ÐJçX[–ÇcYY>’f<öHg,KcK¾h޼ü:/~öZÖòh^üàW¿œu^¼–½–¶óÏü³*PÈ—ÌBët¯ûû‰* þˆÿ‹ˆ?nü¬[Q”6åܹ6¥í,ˆ—Üÿ›Q”³€×Ý÷»xF9§t¹˜¹O^j†f©ŽV"›ûÄ2?ïokÆd”Lb˜ÑJºì¨FIQÜ¿ÙøÝöµÒ÷ŽºíJô_ìX~÷æÍÊÛÍ_¶­¢¥m¹jôÀ¿¼O)ÓÀ¿ÕáþÖ–^Ö\ñœâÿ÷×M_9»b›T8ÿñËñù¦ïujFÑ,éÆvS „~ù¼¡V4»éÏv®Ôÿ‚òï›~¡ËÑÝ_pÔJÕÕ¨>XúwÆsþçÿ¸ù/˪üå¶ ˜ïß­¯þ¬èuåýÓ É¦*tkRíýr!÷ÑÖ,;÷IÛÕÜRµú\uÔÜk³¨–s´J5·æTª?ÿvIÿ2·¶YÓË¥éb±89ŸÍÏÎÎäªåJ®¢¹e}[µ²kͦnÛ+5å¸,!G¿€A!»þÐ̤†ñ£¾RgUð‡˜öL·ÿkgší܇•Ÿ!AÛþÐDÉq 1Á÷κß;÷.5²÷Éû²¦Úšß˜Jf±VÑ GutÓ ºAÖ .Æ«jñ“º­e×"t>Ø®¨Ý†*fQÎ «Í\{}ŽBLj\ò q@s%—^ŒA÷רƒrF¡¹vn¸¦ü°_Õ"r>ƒØ‹roò&ìû(Ä$É$ç½Þ"J¥oWÖž…¨ýxâ”/H³Éù ¿w Íö âE”/&osÈÄ{x)Ï çʈQ檙Ð\Û7Ô²®ÚùžAìA™¯*„,Ù÷RˆI’E®xÑG#˦a×*UèõUlG«ÞBù–D 9ºSk3ÁxåÛÉ[Ò0…˜8-tNTè°º(Ä$X+7– pdËrû/R4]ÿ@7\_“XõëDKÞ@ùwu]­.øì…˜8ÕióU:Üó¹¾·£1ªÖVìV‡¢P•=•ˆº¹i¹²ÊÑîA¯^Ä”G$•º£U"²=ƒHP&É7{Èþ…˜$çܾ=bFhFq…æ$Þt:;áÔªñ2Ê—ãgËdà”¯$ÏÈþ*…˜dw3UK/²v3‘"•8º™[žJ¤ªY¦ÄÜ"ÅÀç°94íECy,~ Qþ¸òå‡ÉS²D!&É:[5«ŒŠõ i)ÏCº]…ježñ©+ ð Ê\MŸ.ÔdÁkægÞ¦.DÀkb’Þã˜Õü,£j½H@ù=Îpƒ0®wcîjF,u[ƒ¾‡K× =j`Ü$¢ešWŸ“$d?N!ÿŠã‘}N±ª3*Ö‡´”ß猽É0ŒYÞè¥%í3Içæ§ócÊ^D|¨Ô’¸9Ô‡¼éCêžá¥®‡úÂf¸©|$‡Œ+‡ú‘7ý±pè¸@ùAüêGÒ¦QN'O øÎ…˜¤OÑÕ2³G:€´”?’Ý­{ÊÄSvcÀ‰¶Iƒ[ ÷"N <?“=€y”óÉ3 ²Ÿ¤“tŸH¯è¬Îê ²g0&Í» é•Z¥>žµôǦ¿‚ç­ÙrfhƒH)À”Wâ§× R ðÊ/’§dÿ’BL’JßµQÒ좥o†­…wa©ÑøAJºèfÑÖH’j ccË´*ª’q–ùrkËË wù½¦[T+ÈŒ1 ÖÊè;£¬° P©–58+`Ç$ÏÔ²£në$=91‘cÞ ¦ÊÊ(Ê£É[ðf ?‘ÂúáìŽãTíB.···—ÝÓËÚ~Ö­Å\YÛV‹û9ïÅ=·éWe.J÷ˆ­ÒëN¡<%­õÛ¨Yåˆ\Ï N£<¼á û 1%­ÆÖ@€r:¢ã›\~нÉQÛo­lr71ëå6¹_Mn³hSMnGw{fšŸì'jV‹-Í6kVQu?Y--NOMÍ‚ÇáÊù|~~vnrj2?| ~:5=3ÉØHoQ¨¡¬ÅÞHoa½n¡¼•¼©!ûm 1Ió|ËDŒ„x> •þdßF¡˜Ð&ªÎ°â»èb¬•qÕHZfÓ³ÄÜ´5k×[µÉ–eVH~av º¯üÂÂ$«Ê#h<@ê,¤$]D›:s¨Âp¿¹•4"HÅhÔ%ª½ ÞÝH’:ð[Žé¨ebÔ*›îÕåM(FMSŠ?UH”¥ÍOµJu'"Û3ˆwQ¾+L›NR ù©ù Vs÷¡Ü‚uaª"bö/P,aTìZà‹›$÷°Q6ËE—$–¶íÖ‚Zfµhr qåáä‰r+#@¹Dé(š5ñö•EbRàq“„rÓ%ÜpIòÑÐá’ͺ·Èj"P§qåiµÑéŽÊŽª—ÃŽéÞÁJx L!ŽBömŠÈý¢ê¤‘•òŸã†OÏâ§«ëÚçªõKwT+;ö¢UÊØîüS[ô®Ïüꇵ,  ºáv½Î÷îJÒöSwó© Þqÿ1™û]Ðöž-½þP˜Èã?Ïz—nB Úõq}eíÍÒòÚ»ÒŽ¡Ý©Õ¶ÒÂ7í¯¢-³éëÝ~ÁÖ‚_9v`÷R0)ö —²¬Öƒr Qåâ)Od‡—Z)š†YÑK/’%wXØ·uüª÷žÓþœý‹4}ÙúByÕDÚ—!SVÉ» åš-´ýéõ¯Ìƒ|«D5Ü^æRe§”=U–:÷zuýCÄ_hƒK{âý,]€¡FJº»§ŽJubî_óS‚ý+uxD¬½Øü ®.5?ÅÞ¥>B®E8í]ª4}ÙºTyÕDêv©3Îw—R²ºÔx-•@—J …]*uÊñ4w©½.õõÊ·«……IÁ~•Z¿ä¿ÀÆÐ¯v5Ùèf½_Í×pMž<‡CŽ “ìý+a˜*Ê0OQ"û×/×õ³·¦S kªnÃùKÛÕŒšf{­ØÒJµ"ü´Ø¸ÎÈÚ¢¥•%4׎Ò75Ó Û¤W‰B-1^[>Xw¬ZÑ©Yj™,ï¨Æ¶æÎAÝáóù¾¡ºÈº²¯Ñ"ÌxLÖ–!§Êfg¦N™56Ír)1kô¦'ÇÜIád~|jjæ”õŒ/‚Ýmh?ïÕªfÙYK«jŬimçÖ´÷+Å‚¦iÛ±´¢YØ-Lö ÐÅôÂd¡ZÀRE•)b;^óFíaÇÔ=ž®á!‡.Àp#%=Ìd}:×ñ”:|žÃ÷rmõEág«ïÞ&&½¾–0…r*F¯¯ùaº1›Î—–¾µå:~_½ÉŸ¹¾Ò6ùÎ[µœ`w¡?;™›˜˜šž™š˜˜™™Ÿ™ÉóuÂÅ êÎm¸ŠÁÆlh9#Š–‹âÐÚò»ç+‰S·Ý·›ÿi£¦Ý¢˜x0íà ù†}ia¾†C\Yïçðß_û?;¨~¨à”íG}Ø ¹ö‡úWð;þ¢©‚Nj²»9—‹Ý±Áм¼_úß¹ÐüS 2¾æRÿäBÉ_MyQö¡öø-Å; ×Ü=Ì`.é¶oúÑ\N—«DM˜úþp°ŒqN¢èBÝm$I…º°á~G³4£\Á;t¼Ê8¡LÕX¯Œz™PüÃ/b’ädtB2[sX=¿<’peyGú:7Ü)äži…yÔmW‰§ú˜ÍÙ_¢_„·©CyÿMb±Y,=Ðŵ{Gu dq0ZEá_c) ìEåpgynÃQ79é ùN—ëwp1Ö¡¾ØÙ¬RT²þöÐ?Õù\ÿ⹦/QA\éïÐÖ &[úvÍ¢¿z¹é+g7ŠÖÁ6—®~Å´þ¥¦/ß0¼™i³>M_*i¿1jªô… »¶iûã7õõK¯‡üŠ¡íÍJÅ‹ù]ÿ•kGüJÇFà9Õ¿~1TëŸxÁ—®ü›Ñÿ®¾e”üjêPÝkL£¼9GþÝóèT¿p!ôKþL§ùK!µ oie›þ{Wi¹>]Ñœ“þ{—"ÿžíXæþFgöW|¥ÛmsE=@®þ?Ö¹áú|E­J·Áæ†ã¶®Ï*\–£›áùC uW-×èìúõ š¿=JésÕO!å?˜Ë]Í(é47îú+»ªuÌ_9ïºD«ÚZ3¶¦©eÛ<¦yö¸þET#j²›Zsíf)Ñ5ݾQ³ÕmZ³ó$hß(—L‡6HX ehî:"þbÓ}HÝÊÓv2x{t/Òÿ»Ö¤Íf ·XæC e÷ØŠ³w̽c*®cc­ô®z@ÿî#t;·QÚ¢-!d5«f¡[ÏFÕíö½ÐŽV:â‹Ðñ4·˜°¶ÚX¾=–põðÆÇïàèû•c2owÇ¢CCѶ…®úoCúÜïÖýÜcµmÛX;‚üç7lï-Š0ú5;þsGyRî8tDu‡ùIFâÆ6RÿÒ`xÖxåôØ9¿±vO¨ãù]Í¢Ñ0w¥Ûm*î×ìƒ}_X µohU/‡gÞÜ^‚»GÖÎŲn|ZŸÞ ‰jç½ïQ_è ùc]ö¾aVm½Égn*®ŠÕ¿Ñò§Îni›Çë`‘þÁ§Í£º‚ƒ3ô#«Êí£\á#tò·#Ô»´›•Ïéñ¯-Èb(bzxÐu>H&·ÏÐ Rú—ž³¥J-µ¢RßS£r°º|x~8ì+ëáÊ[ù¡Øê£âÿ¼±ð¸ôßýÙ¿ýÿþYðsñ…ljåBîýÚ»—kK’Ï­åÖÆ§§ÿ$ŸÌÙ;ª¥åÖJ9^š³÷m·©¿YócYœ iXï׸¶Ýü•‡'Ø–x¿–¾›e ÄYyŒòãkvN¼’1¿V?h?£ z¿ ÷q¾õCÙÓ|þÝàrýðƒŸÃï~÷»|!¤ŒX.ÀÊieìÜØÔ7}OL†9ÛîæCаˆj¡<ÄS„¦¢j™ÛeÕ{&K‚î¡r'êŸ{뇻y0’ûÿ!Å›Å"Í,*Ÿ…[ÇŸ­ÄgªáH´NÛÆjœJ/ ¢€Aœ³KÂJwn,¯-½õfñ2TŸõ–~¶Ràogׯ]Öþ±;©õvU‚SF.±~€Õg!ÅÄ"¾AùйN«íj¡Ééån„µ¡?q[ +-jB©wsü][ÈÚÖðb%ê_²»@Þ´.Úù¡ƒýå_ˆÖÉÖ*û‚úY5Jºç½Ê¨¡§ì5¤ûùG×}ËîPþ#iÃ`Ã…^Y_^[}ÿaõÝ[9uÁá0S:D×GpÇ0Äaæì{ƒzX•>Uð„½ ü…ÆèÒßÁn ¼!¥?ÄÃ$2ÊÍxäæp)DZd€OQ~*lãÁÀÆoTÝ{ºI“dçev;Wê*D× ¥„rIzïˆì¦5ÿ í vnò×ЋHN$oéÛ^½dàr†ü@îN‘ß…V=”~ò÷1Οÿï·ó÷3OeÍŸß9ï]ËíéÆxYß´Tk?7Îùõ”ÛÑÊÕ`jíZÚ—~ü³ë H»åƒŽÿ ~Þýócx§o¥ïhŸuÛqà¬_¹ÙbÍrÕ´Scc¤éGäñ8q³ÌjÆnz싦Cô0[yg”÷á$½}ø(}†ÕâŽæö~ÆîbÓß %6ýD܃òÓ ögþž¾«y©\†š.Éñ€Ÿ\U«å²wgá$ÕH?}õOQþ§¼Õxdu.#ä0÷ÿü£`n~÷{ØÏ_ü°öq%ÔATjÀ‹ò¿µ@¤5.RÖÄìÔrfgˆÛG;ûž¥Jd‘DÖ5–ÖÃò¿©ë¦ºµjÆJýD ×éÙI7çïƒÃ éßÀFWÖ ÆB«a‹ø+”%¥ï„]R×sÃJS÷˜:È u\Úè–iÀî6EŸÈêÉ2 ò.gê%CÖJx¸ÀýqŠÞõ ÷C/c þ ”ÿ…¤ÚôyÿÖ”7äÿ_šjsG/i§²ë„-yïDw]XÛ]²ºÎ¦E¿ŠúI“æã{lÅŸÈËÏÿÓÅK¯×ë…Z¬U*(W¤òÀåAl”xóp=œÅ²n¢¼)sdeÙ™M:°[ûZ gt9ßK˜÷¸Ó,#çÝ“¬Ï¯ Èí;«ªå–ñ¦‡OþJ þû÷xñôzÓ¡åÌ}òR3¼~%²¹O,óóþ¶fLHÉ$†éx‚àƒ:©_Œ\~÷æÍÊÛ°#Îg¨òdót¸-êÃŽæßì\iäý÷‡æÍÿîÃxîÏÿüËš7˳¬¥W´ÝÌYì|°² ¦€#ûÄÝÆÁËf÷Éû²¦ÚšÏà’YôŽàùOPêYƒºÇ>-»ÆNí6T0‹rVXmæÚƒìsbâP#ìnǹ{˜4èþ»{PîáÑ(4Wêðý‘P/ʽɛ²ï£“$“œ÷úˆ(•"‚ƒ@?Ûò’™ M‚¡ÙžA¤^lNÚ ç‰öð2RžAà8v'âE”¹j&4×úe—Ð|Ï R³ó¤-Ù÷RˆI’E®y^þ­i9;dYµÌ²n°vdÁ²gp.®S9“EØFxÈ84ß3ˆ#($o#H„BLœ6:'ª¾[GL‚µrc‰ÀG¶,·ƒu° ±ê˜n¢È©Gœ8«ëg¢ÕåM)ÄÄ©xa-­Ý ԿϨ[7šð"Ê\_¨N¾NÄï޾¥Ã¶*³z}ˆ#Ê¡Àùƒeă™ÝHšn¥ñ– _{"ýhÌF’LœsûšÊjÊq¡)$‰6WA£à-¤ù¼ÿÒü‡Ž=ˆ)”Sñs‡ÞV yÌ&)î@ö÷(Ä$½Ó±*–éqEèFu41t:7‹àrØð`E‡µkÿí^wªÎüÔMð*=àÊcñSˆòÏéC^IS²D!&ÙªZ›ªÅÚõ(õ7eb ÐµUËÜT7õ²îì?€[®†Þ¥vf%ûï£|?~úÐ[}£(&OÀb’LŸ—>®¯¸Ë¨\/r¦÷ —duA‡ø*êEŽ×¶zñ{€Qæê Ø8D­ÙÐï$Í!È>C!¦8TµtÖ¨)}È› ‰Ëå9Ä!PÑ4ˆíúÒp¯ŽCÛ~Äʹø‰Ô‡äœ@y"y"Aöy 1ÉËÔÝm×<Œºõ#wåeWÕ]ÍR·µ:o2î4{Ÿ•ësï¡ÌåN²±§H½s—4{à;£b’ÌžóU³\-2ª6 Ô_`[NŸÀ»*éEÍó ‹jUgÞµz‡•úsºqó†>æ3‚òHò¼ì …˜d_%Ͱu楟Ad  üáëjU3«eŸ9öojª¥‘Š^f´ñ{€÷•z?7}‘2€-ô !ûÆãAŸwÔÏÌÝÎ%$  ün窫Rðp ß¹ñ.Ê\+1lä¡î^Ò5’&Ï%l2Þçm:G{<þ㹌º]FÆÊ÷x2[jÑ1­,yghà7?0Íz!öÜ9ü‘þ è:C–Z~åм±€r!~NÑ-¿@ù‹ä9Ù?¦“dN³+6k[¿‚,”¿ ] •^*Û¦Û•ËZ‰¤jÖ¦j¤²c乩ÙÄ%;›»z©¦–ÝîËÖKÞΧJÖ߬/‘´í¨FIµJ^Â3Á³r@ì \»û;î(©Ž=á(zâ>ÊûñS’4ñ[”›<%!û(Ä$»›«ŠÎÚÍ]E"ưÎíŒÐÁÜÎÕÍ´tØi3`«d‚CÑ>Ä×¹¯"m[¸Î Ù?¢0žuîs{Eæqò’P~¯vsOÓ>•÷É0È%¼ ç=>Æ> ƒ‚=ˆÔšoܺ†¤ ‚>§“'Ð5l6Žñ6ŸcäÔXÝôëHšë±h¾‰@®GeØUÓòvfHÍÅK]³3Þf\Íp9ø„uñé:2 ð9ÊÏãg}xå•äÙÙ¿ “|v1¿0„ŒŠ…]cMìÚÛ1Ëš­–5|ÉÂðåJ¬‹ CH!À”gâ§ÓRpåÙäéÙÏQˆI:¶t‹Q³H¡±Ð)ßD§-ÝP½ÕpݰkˆÈ+××À)g¥Õ ¤à"Ê‹ñÓŠ:à¦|‰ò—ÉÓ ²B!&é´²™ÏÝD*ÝŒ…V#M´rõÛ…sw&Xs½)ÖEÙ›HÀG(sù¢l$¢Ã-…\JŠDý8…˜¤“¨²µÍ¨Ù-$έXHt«‰DÕ¨Á’CÍònM1kÚƒ˜F™Ë'fcÐ-d àÊ|>°ƒ û‡b’?ºi¬ÎÒmdÍíXt§ytÓJG!&É4ê,ó];¹‡ÜìUêWP$wIònŸ€žˆ“(sõ l\¢ŽÍyýÀ…·/âd?M!¦8¸Äqýä>òç~,\zÅ%±[(÷‘D€s(sí>±Šº; Ì£<Ÿ<¡ û 1I㸮¡Œ"‡åq·‘ORn£Œâ÷3(sMhØX4ŠÌG™o..Ä"È>K!&É,j/ó\Gy€Ä”äí:’HôV hׇ8Šòhüü¡¨ ä¤ùY§)Ä$}Xã»–’FÖÊÖ‚nHÊíPqqåGa<žv{™çzÊP~7HÊ-P±ñÊ ,o!q[¸¼=†M'Àx–·ÝY?Ïùí‡ÈÀøäã¦â$¹€D¿C5‰2×$QŒJý…ñ, /sœã~„ä”[. ’¼ãÜ g/be®®HÔI+c<Âæ`ž·G$öóÜ$O&"= 'R\ǺéÀ¯Q~?˨Ñ.ìáȤXÙ¿¥S ,c>×=ŽÌ…eá,“v¼{©¸ˆòbü´¢Zy²B!&ù´b?ßE*ec¡Õ|8­¤óÎ"¥WPæºÂF/j¢çÝ9£ðÞ¢dÿ’BLòéÅ~Î;‡”ÊÅB¯Ñpz ÷¦œ+Ï_íU8}V62å@€Ó(óml‘ ²Ÿ¡“|2±Ÿ÷ž@MÄB¦»ád9ö=ì™8(Çͤ ¥î¦{~ò…×Wbd?I!¦F=æsßydO>&¥#F=Ñãßy¤à Ê Ü‘£(ÔÊ;rý…ñÜ‘ƒQŽy¹p)4 ¢F9±cà“H ÀG¹I$` G¹IlBÆ6ʱŸŸBM%I&Áãà’$u ¥•dšB™Î•ÙσO#åß)¸$÷X8èÚƒ8‰2—ÛÀÆ%Š?­<Þ4ž$s©³Ìw.|9xr÷ço¾Är<´@|…ò«ø6ƒ¬\EyUZ¶]%Í.ZúfØ“9]TÖ_¡üUòä†ì¿¦“¤èØð_Æ É¸C©»­bJºü³Ø$ÄÄÙ¸¯ˆª3‡Ì“`­<ûʬY†ëM¸mw©Z-ëZ‰¬MÄkzÑ&ð$#Y²Š;ú®FÒE^AŸÃ&ÏÔ²ÛêuÖrP‡½ËgÞ TzrbbvlŒù¥£TajxâÕÊlÝf ?çÃúêÉÇ©r¹ßh¥¬æZ7û›šÛ/ÛµlQÍý±ªå îÆw'óÙéܦoÕ\”þOÀ}Aá\ƒ±’:‹s5«‘ëÄJýù ¦¤ÕxŒ5 œ~sôQÖ xN¬ÑôÝ[?v—gov‹¨à(Ê£ÉWµÍC³ËB³³Ýv···—ÝÓËÚ~Ö­Å\YÛV‹û9ïn¿ÊÛäžP8¥Ô'717¹'XK€-œÅAö3òÏâ„ÔxŠ5`RM.?ÅÞä–P¿¥Ö69jÌ¡Éý:hr›E›jr;Ú¸ûƒÜ3Óüd?Q½=‹–f»¾OQu?Y--NOMÍÂdÀ•óùüüìÜäÔd~4øütjzf’±‘.S¨¡¬ÅÞH—±^·PÞJÞÔý6…˜’Vã9Ö@€réÓuM#*3>Î…öÞäTÑ…†¨ÙûÄû°–‚ŠŸHw;‚¥¤ÇñÙ1¢:¬zQ[étÔÿçú’Âä<×—XS€ò<×¶,«õ ÿÄÊò¢±wløgÄt ýJj£dî û6 Å&ùm¢êÀJS/…˜kå‰Jªª¡y=ÔÂ17áÌ…wàÐíµj†îºiïY]³Ç¿ÊZjÍŠv%qê".U§rU!äøuk‰õ5’)@1bõ‰ª§C»)Ä$©—¾å˜ŽK%£VÙÔ,o“¡A1Ö3­p ´1¥ÔãOHbÏù ­R݉ÈϱJ|t¶ƒÈìÔ«µ@‰{ˆQnAX÷·XÊuÕ/P$aTìòp@©?ß7GÞaй:ô§]ŽøoÀ¨eV &—‡QNž(ï±2”K”olb>ø PèîI¾Áòö¢,>„¸$ùèŽÔîÜbŽ’Ø¬&uúGwàŘ²†5 œÑù͇쪖®nÂÆcù!IcÀ£ Áp5’ÍfÇàJ£Â ÷ª–6K,5¨Õ²¹íþ¾³Sa®Ùu, ¼Û«p;ÒUrSµé¢©¶;w¬%‚e0-}[7ΛdÚš“%oMGs?Sø‚­±ç0ð¥V…‹ójW-×\ýí²¾½ã”÷IIßÚÒð‰ú=Pví FH»hÍðVhȾ®•KP`«^¬¥ùˆ% ¦\»ÇJó¼n,!«†k…’[×]¶´ªe–jEwžÿY…Å;Û/!¨_v[¯¥:5Ë%¥ûoÖ’|‹ÚR+‚%ùª¹ØÄÐ\É-˦Fj¶VÊï\Èžnk^1,Í®•Ý00(óÌó;, Ð.wh®î,î¿Ø¾0äö3©}sWÙ·Q(6CèUççŠ?Lˆ‰³VÎÝØÆºö¹jýY³h•26œYܬéåÒ¯~X+UÕâ§BA7\_ÐùÞýCéOÚþbên>•Oà«©»“©±ßÞÒò»µ·…kߦñgg«åJDi»>®¯¬½YZ^{Rä_ ño£|›µÈð‹ÍßèÞð ´|ë,ب£ÉFdÙ´Œ=­\&ËòÁrgO5Wþî-Iç¦Ç˜›”c˜*Ï0Oy"ݰ¹ÛÑ+®»nl{æ­qêER1KþÚ‚Èì¹£(®7À ”mU!"V¤JßÔL'lEJ^í µÃx˜ZÓvum¬µ‚ö³½ë\ëÁ#z¬óõxíéfÇc­¶ 9Uæj››=eæØ4Ë¥ÄÌq!C¦f'ÆÇ§fgOW7rîõêú‡ˆ¿Ð¶V )ŠP?0ÜHIwG¿ôYYG1g)6· ãÙÒë…‰YA`KH=^–˜Gp)ØŽ{ö wä˜P}ˆ*ÂO";¤¯\'}Õˆtj6|¡áø“ ·¦åz˪e–Ý)+kƒ–V.V¿@^… 5Äxí:rÌ&ö©2V¤S©Ø‚xmÕ6™?eæˆp â1ǹ´;5:U€7@`¨‘’î„~åӱާÛÈ z„%ü#%oàÜ1Þ@žÝø#äJP¹=QŠ"È’;|ìÛº CÈ{o臻­Ò—màWMô§}îôÅ*­¤Ãrv mGzý+sÇ ßÁÑHâo6);%Ö.5^K%Ð¥Òha—ú½ß®êxª»Ôü”`—úk,ᯕSÑ¥æ§Ø»Ô_#W‚"œö.Uš¾l]ª¼j¢?u»ÔwÉۥƣ”¬.5^K%Ð¥ÒêRCs½°á~G³àözضÞÏýÖ¤¨Š@G ßèƒoôà_h—Q/ R…˜$u°Äbkë$}SñÏ ,ïUç†; ì™VØÄp+påÁä‡^Èþ…˜ø* ¼MÊ3ø¯ˆÅVd±~Ö?;çÿÑÁ? ~PªÛ ]“N ×ßj.ÍûåBî£;ZÛ¹OÚ®nä–ªUÙr¯!²Iîƒ;¤äÖœJõçß.éï_æÖ<§eºX,NNçgó³³39×ýÈUT#· ëÙ ¦ùôB>Oþª^Ó+pµ‰.™ûä¥fÀ‘ ­D6÷‰e~ÞßÖŒÉ)™Ä0ovÜ>=‚YËïÞ¼YyF.ª ˜Iùkÿgç ¬?¼Ç+íhÒþ°ãPË[1ŠfÉ € 4ó*féß}Ïýù?û«&šµzÿn}õgE'`÷O§ñ‡º›3ûF–%W*Õòǯ림МѲ„Œ²òPëpÛØ–÷ˆAäW$÷@@Šq 1$ù;|aö>y_Öàà˜Gá’Y¬Á%Bï¤-[ƒºG7?»ÆÎí6T0‹rVXmæÚƒìsbâP#4„O‰Ý×>«øÃ(`Ê=<E ©®)?ìWÃv)΢{QîMÞ$}…˜$™¤Ýï$¢tЏá=mbÈS‚F9¿a¨•0‹œC+œSã4Ä,r `/71äYä<±eyͤ}C-ëjØá<šá|kÉylÊm$Á$æ>ôøÞlô;/üžÆ3ä_»ÞAÉŒZÁ‰Ò»M˜G9/ÑlŽî”ÃZR0RN¢<™¼Ù QšŸÇ`4[óʳ:ø\x1 ÖÊ¥`ÇÞíÕ‚ãò°›Ïo -xåÜÕÕ'Z]Þ …˜8Õ—#ÔiØÒ-ÖfEÅú ‹ûwrÍB5ê º¶Æ¯¢|Uâ¸y­¹x åkÉ·vÈþ:…˜dóe_S-Fͨ8£1ð…W£Ä~”ûãgÊdàÊÉ3²¤“d¦´ÛZÑ1Y-Cù»b¾o¨NWÁ¥ðõò^&-:ú.û{… Wâ=”ïÅÏž‹È@êuÛ¤ÙÙRˆI2{Îj•*£b=JýÎ$ígÈ–´º—Ê¡×EÄ+(_‰Ÿ.ÔÎ Ï(œ£¡]¯QˆIö°¡¦5ëUê!fc–΃F¬;½XQ€(s lT¡¦–aÛIQ¥«2À¦í ITéðßì,3*ׇ éSBog ²E@©~Ä«('àñö!G[èñBö×)ŒÇãm7kNµÆÚé÷#Eåû1ü:Œ¹ŒòåøÙÒ ¼‚2×ø'Æ–þƒm$H’J¢ÙÏß´ÓŸT ËÄ$©N ;[ZTþA,s€Üå—³v ™ ØzX|˜—ÖV^ž½{û¼°¼sÎÓt—Ñø€·Q¾ÍZdøçu¥›K–V.«†IÞdÈ3Ž>yw—9*C†©¢ ó%rM¼²nV4òA³ï,ÝzU+ê[øèª_¢qºŽÈÓp4¸¨T6ÉÊ®^Ò‚7Uÿƒ¿è¸7ÖÚW~Só^e[Uôˆ~$òf“¼:j¸ñšþÆáÏdÝ©•tæÙD¼vФÔB’ÎÍbHÒiVý©Y5ýÔ†$Š’4X. .<´È_¿Ž< PŒS]¢ê )þ:a€M!IÇ™!Ia÷º1¥ I×ÀOmš‡…$å¤M§ëàæ'¦ò¬æ-î!>BùQò$¾‰ [’“ôp@9“4.’ÜÂ:DyPØ,].IàÜs0DPãâM”o&Ïj2K8’#+…–¼Ù2Œå¤v&M2ØHЇÉXmúô!”‰´ê8*àÖˆ0;„H Ù·Q(6˺¦èF ¹$l–è[AM(¯+c6 d‰Bîm³è9Ó¡<ƒÿî`±F†ÍDàg?š[AqÝ%9òZÐõ&¾üt-HƵ uY¦|©Ú.Jûéb}1è?âë [}1ˆSmÙƒÔHèbÐÉ5Šrvx/%e’c. š¤3è&¢´:ÁÕ ^åÐÙ‚f9ÑÕ >”ù*CÈ&çð{bj±MèËA}(sUNh®'»Ô2_m² “$£\ŒB–MîUª+íJãÐM”oJ4ÐI®QËI(X_§â¾ÄY+‰]b¬®ÑêòVù(lºĨ8Wˆè›@!+D'W.T©k®9Uמּ¢=?OÊÚ®Vf] èÆïŽ¢<*qÌ<Áµ (?H¾õCöi 1IæO ׂÉÓ W=¯]Fùrül¡¯…’LŠ-ýU 1IfKgy[µ«EfÛЗƒ„¼ßP­rõ'•`û­bBdzxņ÷AªšEø”@|‚ò“ø‰EßzŠòÓä‰Ù/QˆI:±t£hV´*£vÔØ±î –¥©e Ð¸äŸøs(\™By*~2 µ€Ó(O'O&À 1I&Óù²U­l3ªF±‡à$1iô0“šú©ª¥y.Biªq“‰ZÜi%™z‘@ÆC¦Î²;b¸C^•Q»>¥qíH~Ï4v€OÞåXÇ,~òFP-G:è¦8Ô@\@y!~Jõ!CŽM%E)Èþ 1I*ý‰®šô#6m'UýØÄ$©NpÕ$âªMRå?æª c§Ò-ªÎ 2#@9k.£ï ôáåHؘ±á¼c±ØÏ¼þrE™kº.~È÷ …üD ëx³;ŽSµ ¹ÜÞÞ^vñfÝZÌ•µmµ¸Ÿó~PÜÑs›~Uæ¢tX‘¾B!HRë;·Q³Ê¹§“[8žCö3òçBj\ÅPNGt|“ËO±79ú´q ›_=†&÷ë ÉmmªÉíhãîrÏLó“ýDõÞñ]´4ÿþ¨ûÉjiqzjj~<WÎçóó³s“S“ùÑà[ðÓ©é™IÆF:D¡†²{#ÂzÜBy+ySCöÛb’æD^¡Ä2+û-ò û6 Åüƒ6Qu`W¬—BL‚µ2¾D]‘˜½!1;áߘ›ç9¸œ#¦žHbÐq7$‚ÓÜçu“¢Ñm¤N€b4êUgXñWòlº!!ØË¼!1¢øSÀ”r膄ðü4âhóR0ä†'m:HLMOò罇øå‡És˜`=(wÔ¸ qy8 º G‚#µ€Áh5(l– .Gp—Õ@ È%ÄÛJý$nÒŠ1Lg˜§8‘}ìÛúÍ’V‹/ÂÀ µàvºD¥"Û¹]oÕ„oo{mÛÑläªeµRÍ%k+—V¶Ð\ˆq'¯R…Zg¼¶½¾R³Ìª¦w~Ô»Se¥ÈQ3±G¸‹×Hm““§Ìîâ1Gzr,Còù92NòSs-ìhµº¾þ–LLä§Ç'&ó§Œ2™`½dêYÓÚÎå'²ù‰ül®®pÚh&&ææÆg£4Ø/—\Qûå1uǧk8JÀé¤ 0ÜH’ pÌKÛÁk)W¾!?n"¨ÔF!&Ií‘7¦úèFPÅÔ^ÑŽ©C…‘¸ûÅlÈþ…M1uØ*€1¦NpšA‘ÅRøÙ&¦N|XŽŒª3Ü<’ý ŽªóoþIÓNAT«fliåÒOQuèCNÿ1_oØê¨:œjËŽªÃ FBQuN®QĸÊU')“UGÐ$A7Á8µ8&ªŽ Yx£ê$e“c¢ê´È&ÇDÕ´ wT¤ŒrLTA£ÜŒòÀ&«Æ®f;Þ‹ ûVíJ#¶Î”ïH4ÓIbë¤PN%o&Hw)ÄÄi¦¸cëpÖJb±u«ë‚huu)GÆÖaTÜŒPGAþÛ'×,T#C±A¤@êYOiCå ‚é„œHHª¹CöCb’MùÁt ¾.kTcÞØŽ‹)Ǽ±SŽyc[SÎêÆ.£bt j¨D”þmË´iŸ‚C» Ýl`ܤ¡ƒä„DêKŠ4ým 1I&Íù]µ\ã 8DÈ ‰k"H›O¥ Çx Ø‹8Œòpü¼ YGPIž7€„BL’yÃùF15¡»"!Èœ[õ€%Õ²êNaàô‡ö›š^åè|zñ{€P~?‰¨å˜°µ`^ŽÒSȽ֚뉂–@Ö-\/„ìsb’T'Z҇ش?™Tù!û6 1qv#=¢êô#3”3™'h åi†EPHÊ‚ƒ˜u€üDJ>hÉ% C‚–¶¾¨ót´™ %I²Ÿ¡°)hIRjôF?OØøc×ªÕÆÆß–éxœ Îs”ŸÇN(: Î Ê+É[²A!¦¤Õ¸Š5 œ‘­%Qp’ª²c¢à¶ÁYœ˜éÖ+àÊ[É›²?" ްçË'©ò‡}ÞkÎZYY"!/x0X-“š¡»XÚ{Ãr,ˆŽ35ãGÇ™a~?˜ŽŽ#4 …æ*')zÝFJ(F¯.Qu`]êˆè8‚{‚Ñq„Bø¢ãpҢ㸓:ÉÑq’â0ÁzP®7_tœ¸8rëší šå²Ë‘ªe–jžçãwÆ"arF•züÒ¤ “ÂJ P.aâ “YŽ “Ãi’ÆKÂëŽêhÌL¡ã匠<"­6âå$ÅÑcâå0rt@TûÈÈ1 ÖÊØ‡ËþÕ†^fW/iÞmV°Ñ§?øè½ÌˆbPG¼§Ï(ž[ä,FŠxÚ¤Sr© ©Ír –ŠÛ#ôœAÝS(§„õüŠÔ«ï{ Aþç(Ä”¸_`È=†fÛµ¡X–9ä@vE³ó“#󓮈ªóƒ 1qÖÊi¥þ%Úûš|£u±ÔAõ!ªCÊÌñE<æ¸!ÓÓãÓyö×'âµËDØ;î¹?Îæ§gçÇ'¦çf²Ð3g'&fòSÙÏQÚGlHÅkŨ[¡1õz§«×OÀG£ 0ÜHIÔ½G >ZðéãàèÖó\pPÐ;LHötg§~x 0˜qœµ{ZÛr…KÐw£%J½DEûPî“ֳܡcDüÖwó¼f•Î1v%¯(Ey4ö®äV uÒ>ñ)+äŸFCyLZéyv%8[¹*ÒáòŸ]•Ú(ÄÄIâvQuà¨P7…rNå^˜–×3ùq2œæ£åé|žøν$¬JÌ¡œ“Öô,­¬ ÇPíµâG>¼ƒò‰^`Y7>ùöü¡Iï‹ ·€Úˆƒ(òª}è/ŸAL¡œ&XW&x”‘£ w¡Ìi/ü ›k‚(ÓE¼M&§Qž–Șˆ+l]qeñ¸OÝÁ©Læñô˜E|‚òiÕйáv3p5$¢ V¾QdzkÌ=1dßF¡ØÀÐÌLÞ÷¸Þ*þ˜8 zKØ,Ñïq½ES¢ÌÕ%‰™²¿DaÓ{\l>ï9”gðß;,¶ÂÃÈ0÷~ö7ð=®æ'œ~YõBV!ïq]obÌOïqQLã~kM–1_i%ÓЋ?=ÇE‡Èý»|a«ŸãâT[ös\ j$ô×É5ŠV¹ŸãJÊ$Ç<Ç%h’ì%¢”:Ák\=Ê¡`1‚V9Ñk\-4É94C€§Â$ôc\½(sÕMh®'{Œ«e¾Ê²IðX€˜$ÙdmBÞ[zQóÖŠ—5îÙ䃥ýû¶0Ç~fÚŽ;",Yk?×®4éZ@yA¢ùNòHWÈEå¤Ìé 1qš¯ù4˜ìGº8kåºÿHWó]BOt…®c¬¬ÑÊò–™)lº¦Ì¨¸¡ûÌ•]F½º•Æ](wòèªÏýŠë ª©?‹bî¹sŸñq³X¬Uuw´cV˜cët+ç¡r(sù_ãê žîš@y"ùN²ÏSˆI2‘Î-=êtçÓ]‚Tê4b‰=àuå«ñó…~À‹ É4_ ûëb’ÝñüÖ`Ô‹~¿K~Ç“¯ZfÕ´¼©§ÛíLÎd&&&ˆý›„.ØÒ4‡Xš­—Üé©®–IÙd^ɼˆU øÊ\c1©è¾BvÒ“"d¿H!&ɤ:¯¥«a¨™VØ_‚¼zpW†9>nyQ*ÉfÍÖ Í†ø8óØ‹8òtül Ör©I³ p–BLÒ‡´•Õ.½JãÍ/ùCÚ¨ ‘80="›fÍ(ù?XÞQ­²;ƒZƒ“òO8tø4‰òdü\¢–êѦ’çRïÁ$É\:k˜‘Gx”ª‘š5I¢Ò+Õ0jîH¦º„P¬†îXæ¶ævRŸÝQæQEw¬³êk±p7Ã&pÎkÇeDQ«èå2{ôl(ÍEÄu”×ã'[ ðÊ’'dÿ‘BL²}+æW$û‘_€ò}«ku’Õcô[¦Yaí[á;Á›ºwP¾?uú‘.€)”SÉS¾s—BL²û)×LŒŠ (õø1ôSãý'o9ß ­3‡T-{Ák!Óª_DœGy>~F ‹PæZ•cd_ “lF•tÖ†>¨ÔO€ÅÀ¨§{š¾½»é®f‘gH=xþpåÑä-H¿,F¤°î5K_T~@ ˆÚ¥{ÄÛÛN¡,oJuký6Ö` g¤ý …ü3R!5¨áGbGt|“ËO±7¹Ôo¤µMŽ(õñ*†&÷ë ÉmmªÉíhãîrÏàõ±'ª÷‚ÙfÍ*j£î'«¥Åé©©ùQð8\9ŸÏÏÏÎMNMæGƒoÁO§¦g&é 5”µØé¬WÀ-”·’75d¿M!&iþo™ˆ‘7[é@ömŠùm¢êÀ"P/…˜k¥‰-Ó¶ÇmÍkW¬ZÝCûÜ«ßCI$¹ˆntµ±Òr¨N Çà°1å>²#@1¦t‰ªÃC7…M±Fûè«Ã ÔÛò¬k2§ñÊ·$N>#‚êÑoâR¾ a:HÌLÌ²Ú ”F¼‡2ßÚª]ŽyV.(’0*6¦4Þ7¥_ÄÍ‘1¬ÀA”…ÍrÑ別m»µ –Y-š\BFYÂ’ «±2”K”Ž¢Y3kŸQ©GH @¡ý#6’нö¢,>¸$ùhèpfcÝQÍf5¨Ó‡8‚òˆ´Úèt‡c8Òv‘3˜“±Z4CömŠ Åý¢êŒ#+ìáegÌaûå<.•E»rß,„o´îq)P}ˆ*ÂO"û8ù/¡HÓ—­û“WMô§‚KÅ£”¬—PâµTA_é )‡ó'ÕÃçüvUG±æ´?.5%œPNE—Êó¸Ôr%(ÂiïR¥éË֥ʫ&úSÁÇ¥âQJV—¯¥èRé´°KÍûíªŽ§´Kí¶²þºðõÇW…ïV^¯æ'ûÖI,* µæ[ßz¾ÉN÷ži64çKòum‡¬dÈwZÙ.îµxvjžãÙ(KŠ*SЧL‘íû5mÛ‚SÞ¦AJººm˜¶£íBpÅ‹”®[åÞ÷¢C÷ûñ™ª2ì©–î°Nö¥•Ž­k–W©ô§ì±¾ãÑc(ª7>ê=ò5s›“®yç/«–¹©â5ZHÏã!ëø/?è¤)éñƒºÕ|šÇ‹¯–ÖÖ kŸ­æD_(¤Oðo$0ŒM6ºóJµ,Ývûáç²VÛÔñ%ª×0pÌq¼W¦ 4ÌS Èc:ˆ€¶cB4ˆm¸Íô_Ç{ʰâ–i‘bYS ¢êkk–V‚Ð\xKK^Õ µÂx-˜ÿÊÁÝé•÷f¡±«[¦áÅ0-7^0ô¬ùF5܆Çñôd¼æ‹Ûã1û3[ñZïÌÌ)³FÄ+[ñX£+Cæóãù‰ÉÓÕ¥$à ÐV=Ô$X€c^‡÷‰X¿pÂåÀ7ä¿*µQˆIRkã}`Vñk(‡Þ½‹~`+påÁä‡0Èž¾úЉ¯ÂÛÔ¡<ƒÿæ°ØŠ,–ÂÏ~4Ä7þ÷S/äôÓG¾ðh"÷ßʲåkuÓ´ÖkÕjyÿ§wèwþ_Øêw8Õ–ýƒ¡áêä¿pr"FVîw’2Iÿ?@L’Lrê)¢;Á[!‡ü-s¢·Bž¤ÌÙ_¢°ÉáiYè÷Q檟Ð\Oö‹%i»@ö—)Ä$É.W¿sûw¹ä•Y³lòi}ÒX/·+˜ÿ·Q¾-ÑD'‰ù?Œòpò&‚4B!&N5Ÿ{óŸ³Vnø1ÿIsÐ"õ?¸`sƒ»ºúD«Ëëž(lŠúϨ8¡®BÙØ±5£ãþ‡D¶=¹f¡Ý(›Û^´,?*éŽ×ü÷xš?º0õ›=Ê Âç ‚ý‡¼{œTë‡ìÓb’ÏŸ½mFÍŽ ö/ÈŸAä§¼OöØÃXÒAÿ‡Qæê¾ÙxCýA™¯»â dO(Ä$›7Ÿôëâö?Þ4nmwܸ¥úõ &È:® ys¹`<¼áˆJÛ£4¢úSþ‡$Úp*p¥e® /O‚…WÀ>”û’çI~/@L’yr¾¤Ûê&£j½J#dH„+A¦toª%²£©eg‡C¯ Q¡¬â& µv²:)Â@öCb’L˜6æÐU}J#*H¤tA¶ðésAiÄÕÇ'fâf Õ•Ð]LÒ,éC†ˆI¶Û²¯©¬Ó¥~¥Q_¾Û«Ýý¢7Sú‘€(s-dЇÏ¤“¤ÒŸ(®YPú¦ýþ¤j` &I5p‚¸fƒ­-ÿ –9@îò{}E»¨:AÜñå,ŒÝ²ô ½¬«Ÿà äÂûÈËh4À ¤Èýä H‡þ•Ç£9êß³àI®ƒg÷Öë'©Éž¶Il·§c^g¼Š G*æ¸Ù×<< D©8öu\µ·L ~p6SÏÕ65{r"¥wĆÇ5 s(ç¤õQ¡žèª(O›šýfäŸGœDyRbŸë)Øã <ðõ™}…b}f›¨:ô„@ÌÝ£?Í.‘ªw)Òíf¦&„ï![–Y!ù…¹ÿ‰™ùyžø•¸© vö 4×ã"A aŽAdÊñè&r'@1U"+uSØ JtSJ$(غì@ ‰%ì®Gœû¾$¹­„^àà$L'D‚ššœà ˆ9Œxe.Ï#4ףⶱS‡[Ûp†±±(Öp:EÕQüyc€˜8k%¾MËKoV ÖV¿-LÌK¶œ7šŸˆ4øÆ o45ÛhtÙtÝ8²¬V4Ë4܉͒–¾«•tòÞ‹ç2ÃîÒäTPªažREö€ÞèEËÔìy£9;fÉw¨—ªÕ²^äê¥)ÎÖ-Ê«/úSv‡4=n¹ìÚ´ôÒ¶a¶v5ˆK¤ïáJó)Ñp`uýÙ[213™ŸŸžŸ˜Y`¾G$W­à òø¡žëW?8¦Y¶ …ÂZé{øìû’©§¡«ª÷N×óÙüD~.·üìÝœ[š|~>ŸŸœÎóvOÂå ížÎm¸š+Ñ<ZШ²¥Æ¢šÜÚò»ç+‰·ôvßrþ§=hÞµi”‘gpbq1‡r®¡µÂz–>òÃÆ9ù?ý+øƒÑTÜçä/>v;nÃ{û¥ÿËéöøšÇ[,ÝJˆk—=U#u‰®Yõп*éb]¨áFJÚm¾ƒ¥ PÌ{/Ö/V_¯æ]Ô–{ËVÀEÄåå¯Þó®0ƒæCT †xJ9RýÙÊÖ–^ÔáU×ÛÑ+þÅ’=ÝÙ¡¢a‘ïv4ƒ¬¶cÕüuó%KÈ#jVE7´R,d¥RÕ]V-“e³RUý`îTÿ ¿5¾l~L© +ÓbŽ¿!­6Bs=âÆ¾<3µÞxÙ0¶à?Z_ò§VûO•Ù"§&ñý¦~¼Vk˳^ÕÛWõã1G_zz,C¦ó ããÓSùö¯ô§½«ëëî¤lnjfb"?sºz¹‚ÐRŽ(…æzL¿ÔŸzàòpy‡½2êTj£“¤Ž€7ˆÀ=Å÷ÛC‚/%G¸‡• 8ˆò`ò£*d‰Bî;uÑmêPžÁÁ©EKág?š ±^<ÿ)€×þ’ $ð^–=ߨeÍþ)„Bàïóõ†­!À©¶ì j$BàäEŒ«Ü!’2É1!MrÞë#¢T:Að€+ ‚69Qðê~RÒ9‡L °i“º¡Ã\D™«fBs=YØ€À{â« !‹@ö½b’d‘T#lÀJ©æo+ÃâÎÏÍš±MŽ4× BŒ¡<&Ñ\' !@½*•´¹ =¢§¹â!ÀY+‰…`¬®!Ñêò(l !À¨8¡ëq†Å¨@ äæÔÉõ ¿g‡¡ÖuG¯àRúe”/óè1Xž `u²=é¶Ù_¥“d¶ðÜW:&`€ _x5êAìWÝ Š‹)tˆ€TI1²¤“d¦´ÛÅÓ,3êF  dI\®xo4øÊyË Ìúõ)kò}Êkòq1‡@m‰'ÍÈ>E!&ÉÌ9¯}®2wþ=J#L€ÐLI ;˜~§NO7óIîfÕ`Nµ ‡º½ˆY”ùV!Âjð¢ëGÏŽÙ#kÎ >Eù©DŠÍR˜Ë ˜C\ByIœâc†yF!¦¸85§S–Q^N¾>§“ì^3ØK†rDtÁ‘!†ˆ­ykæð€œšÛÕȦjmûÓ‰'ú)×À¸‰D­Ÿ…]¸KŠH}žBL²½QÍÙaåQŸÒˆû î¶5itŇªEÇ´üSIemW+3 Zâ”ùFûP'h³¬?eÈŽnW3Ätv¢ÇÚˆE0Ð+¸€ò‚DjïjÖfD¶)ÄÊ…ø[T¶"À/Pþ"ùÙ?¦“äÕQgw˜cõõ+ ”'&©sîD¥X»à~*]k`Ü„éG’†œâLŠ0ð! 1Éžæq…DPêc˜æõù:y©•µ +m@©>ÄÛ(ߎŸ6ÔŠ@XØÙ¤hÙPˆIöÈÍØq‰(I<ð$èÕƒ8¬ o‘+ƒJhÁ¤xÙ 1IæM§n”j¶cí3jw ùHÍ$$qçÚA¯/?‰Ž‡’ˆP~?¨0äž+wF9j6)Aöcb’L n³X¬UU‡}zisY9àïH¢ÐÕƒZàcÐeüë—Ñ”—xMÉÆ :®ÐÊ|¦bdÿBL’Ôei6ìQYLJ+HÀ>¥> =M3OPmqåQi3ÏœU³Ôò÷ª¥©b˜–³ó½¦ÚÊše|_Ô ÇýJžSŽv*#¦¥ ô8â/QþeüÓRÈîâÊñ·9:ˆÖ¯PþUòm²ÿ# 1I*ý‰Âñ]El:9ŸT \õc1Iª„ã blµ¨ü×°Ìr—_Î!“ëÈŒ1 ÖÊ8u×Ì z¡•𢙂·Š;ú®Æ ë â8Ê|'iÃzÝy)WÈå~£•²É#û›š¦v-[Ts¬j¹üÂÂüøn~*;™s‡Œ²:ýœ¦}Ê1v¿7(\DyQZ;ˆ 0GGåúå/…ÍÍÏò‚øå§{ÈsÁ SD`°¤zcƒ±û^âÁz)Ä$X+ÌMÏ„˜›ŸÀss<1²Î fQÎJ£Ðq掉“•†‘;Šñ¨KTÅ_k °)Àœ`×|Ë1áq)aæˆâ{€)”SÝÐ#â)A ®0Þ¦ „™›žše3ZÜC|„2ßW!ÖPGtÛRk.P,aTŒ"FØc„q‘$…u8ˆò °Yú\’èFIßÕK5µlóÜú½„x圩¢M \é(š5ƒ}¹ôrPh?'ôÛ^”ÅGí—' jAH™) NâÊ#Òjã¨à•#X ÁµÛ Ê}…bƒ²pðÊQ¥þœà½ ø4¾à•ß®¼~]€ÙRaaƈz‰.,xåÉŠ ß8ad Ž&Ýü¦†äE†|ëÏÉ/DÐ<{ˆ (Â0U”až¢DvxÅïvL[ó¶ïl¸ í5³‰¥ê¶ö„,‘Ò¾¡Bp˜ŠYòýxï º]ñ®y§ÀàR5 ‚ù—¶L‹ì{·*š‘mU#¦†‘Q€äÕ´Ps×à#Ǭ̜*cEŽ|ñ˜Š=öO¼¶jËO2sDÄþ‰Ç2$?;5>žŸŸ:]}H1vè +‡â &ÕQûÛªøâ z^ÃÄ´ ×0†%ä>‰Æà54/ÞRÎÂäÄÄ4»³šQ%â)Ad4¼D^Öô’+vo\‡À2D†iº² òªˆþ´/C&]‡Hóc ¶Ðn>ýN/kû¬}g¼vI ï¤ 0¤œä Íõ˜ød£~»©_cçê1á"?µË¨P©B±ié¡£fœñÉ`ݱq@9ŸLxµ :>Ù#¬\ÀA”“c!ûK6Å'c«€ð6u(Ïà¿ X•"‹¥ð³M|²˜âYýòñÖã~ŠLvdd²ÿöÿÖD3îÈdßȲä{ÕÒýŸB“Ñ*þ_GØêÐdœjËMÆ FB¡ÉN®QÄÊš,)“šLÐ$í~'¥Ó b“…Üá4ʉb“ã4Äc“õRØËM y¡ƒ“õ ,¯™œ,8Y ÉylÊm$³ïkVqGµ!²Ô{sO³ˆo#oßÀ»EKªþ,­ìŸàØÑ«"ËQ^”h“,ûå/“7!¤'bâ4¡ðYÒc–qÖJbË«ë’huy« 6,cT§M‰¸¢Ìw¤ŽZr¤áäÊ…*5ŠJˆnbHÓ…°9¾ë<Ýø=À”g$±'ˆh6‹òlòd?G!&Ét:çèÖ›<ÇD4äqò›šj9%ís.žú&?;îßLshÛƒ˜A9?‹èhgÔd,iAöY 1IfQsÛ¦#…DQäÐ0Üf¶«°ÜòÙõZŒàXî%ןsèz1r:~ÑQÏÆPKžAýC ›®JcP•Q/j‹A}À ª¥5ìâP.èx†PŠŸ2ÔŒPÐ#¢ àM 1ɦŒÎÚéô* Zò)sÝÞ1-‡ÀÁ)wÜrA³¯ÛáÐòb åTüÜ¡¦®aGÙ“âdBLÒ¹ÃÚ¢û”Fà,ùܹV6Ý0uú.€wP¾?uú.}ÊÃîIS§™à]n=REíÛœ$Û‘T‚ìQØôl‡` œ ¢Dªé¬WRå§~[#qv!»—‘b⬕ØÎ ,¿[úºðâãÊZaýÍê‡ÂÄlÐWrž¦#Ìp;µð Î;G£Ë¦ú©¬í“¯2äEÍýºf“¥ Y¯À’úšw¢x–ýD1”æ.Uª»<¥ŠÜ%œùhø·sµÙ+Dæ¶fh°+¨;Ö›‰ Aämÿó³âÒŠÑ?D^(’WwB 2^¦—½°þÞ®;‹h¼"NFý÷å—ÜïÛÌl¼V‹<ÍØoÅk´¶™‰SfŽˆ›Eñ˜£?½0–!“S³ùññÉ©ù‰ÓÕ£$pDž.€ÐÊGD—~ç²Oƨ d'$å•Ú”ÈÀdì31ñ8a½bdþc*$O~b:Ø7-ï‡çMT?<ì£ò„Ã+T^øõ3Êì‚$;.@OæmH„iâ¬B&(ƪ.Qu`“§›Â¦=‚ÊÌ=°Ô˜Rè‰küâ‚ÊÛÕ€=ù¹Ùyž0a÷Cô$Eâ ØU€ümIr€žÛH @jÉ3n’ÜÆ:DyPØ,\’à¹(žXhÁ JNš'ÃXÊå çI¶ä ÐI66ŽŒ`ù©­R É»•åç<Ùú¯¢|UZ%“'8V@„9!DMȾB±qX8&Ï¥þNQXLžÿ`ÉRÈ€”òÒ"5ü±.’I+BÄŒ0r‘L^Ý 5ÈxM×"Y¼V;2@¡|›±/’Åk4öE²¸Í±H9DÉâ­ŒÉèˆRƒš…Jp â ß÷|mu½ðõÚÒ’xø¾{XL@j®•˜—0üÜÒmxÖ”|µœ!_[ªºO––y#øA)†©Ò ó”&²—z½lîÀáh†ãÎwUKWáµåŠêXúg¢¹£LÅ¿rí]­±á-µ\Þ'%­ª%ø-ß…€;V¬M\ZÉXyU*Ô4ãµljMÛÕµ=ïm/Ìø p}Ò®»§Ê^GÆ©•o-vw!^sµÍOœ2sD¸ ñ˜£7=íº 3Ó ãã3³ÌÎB¼U‘€³@`X9°O°ÇºãÓ1*îq+wÕŽ‰…,ØæxƒN*þÖà€r(è”ðrXtЩQ¬\ÀA”“¹ ûKbâ«€ð6u(Ïà¿ 8³"‹¥ð³MЩ¸Bý2ê…Œ~Š:õ£‹:e™¥Zñ§¨Sô…ç?çë [uŠSmÙQ§Ô½å/?êÔÉ5ŠS¹£N%eȾBL’LÒîwQ:ñE4 oÔ©¤,rN92êTK,rLÔ)A‹pGJÊ$ÇD4Éåëøh ñÃq¦¤]iÄ”º‰òM‰:IL)êÀMÒ Ž“ˆ‰Ó@·Iމ)ÅY+‰Å”b¬®k¢Õå-PØSŠQp.šÙyXd½¦GG”¢"±«þÌ8DâU«ñ*ÊWyÔŠ!O4*8ªz-ùÖÙ_§“d¾œÛ×T‹Q³c‚F Ò¥è©Uâe”/ÇÏ:8uÏ,i¶\À6àUÞ¶r$[Ú-m›}ئD yº¡:u_¸õêC¼Ž2W cc  jå¡äÙß “ìþ¥ZT«ŒšQGAcè_.Wk›e½H\½t8o;fñ‡†A" Œ›9Ô|~™5iæ¦(Ä$™9gwööëUA¡(ÏTq.íèÛ;{ê>nôZûæ(vqåáøyCM*éÃÏIó¦[K€„·Õí﹞&«óЧ4BBÉ÷€ox*ù¼Ñ àò–ZÔ˺£k¬êÃê|€òƒø Ô‡¤ ¨‘ û1 1ɲjsH–~¥Jþu£rû—·‡àΈƒ'V­èÔ,f*Áwzó(çã§R?ÒpåÉä©ß™¢“d*µU#× O*$À˜ ‘®T-}¢§Š8? ÚÄ”¹F6â Y Ê$yâ@öw(Ä$ÛùÙ¶«ŒŠ *GF…u~¶-Ó¶ýeRõp9 ‚A%èü "W•–:?ƒHÛ 7}äVaå ž²U.Å›çeuÓ„àßÕšC*šj»#•w®fí®²es6aÿ×0ñquÛÒ‹µ²; ¹½SUÝ·Ì2s@êKH.Àw(¿‹ŸhX|ߣü>y¢AößPˆI¶—]3Ø©vé(ß˾æwNžb­8bÖr½ˆ÷”zôÚ¸Ùs¼/ÎÂQúQ 1I*ý‰bÖAÖÁA4®¹x´4…˜$ÕÀ bÖ«ÈMGE“*?dßF!&Îþ£[T«ÈŒ1 ÖÊè;£¬°¿èöt6DSy¦–u[÷.›æÇ˜w©Ý"ú4iÒ¤£»ˆ)¬›Íî8NÕ.är{{{Ù=ïc·sem[-îç¼wôܦ_•¹(Ý#Î` Q8…2×¼,<ךUŽÈ—á•i”§“7d?C!¦¤Õ 6Ë%vDÇ7¹ü{“£ƒÂ´°É†E°Éý:hr›E›jr;Ú¸ûƒÜ3Óüd?Q½5‹–æøu?Y--NOMÍ‚ÇáÊù|~~vnrj2?| ~:5=3ÉØHéC(ÊZìô6Ö+àÊ[É›²ß¦“4ÿ 2@ÛU,ó°ÔfÉI¦B1ÿ MT¥±¯Ñ«ˆ$¤?§‚±MχG`›ðã¯ÍÏò<ÁÕ«°÷¤t\ôµÌ1Ø@lî u£Q—¨:)Å_¸°)úš`.3ú\6ïP÷ß›¢¯ ÏO#nŠÒwÝ)Y6¤@æóÌ-¸‡øå‡ÉsøÖC€rG}àk÷‘€ÔŽBÜ¡Ö-ÂnÐqšå¢Ëÿ|Zæ¹ãx qe®5gñ;}g(”KÎèk€Ô‘›¸IB-íH<í>à’䣡å9ÿ”9«‰@>Ä¥’MRm†-…•l¬·h@†ìÛ(ûEÕCVØÃËÎxc«t<[zý¡0‘ö_8êPotÐË7l¥…oœ0¬JóáÿKÁ4üÙ+\übŽ¥ªQEâ)Bd—ZñâlhŽ¥ë!¹À“zï¹éÏÙ/ÅIÓ—­û“WMô§}2e•¼‹•î8ÙBÛÑŸ^ÿÊÜ1Èw°^áUY‡ÙSÙ)eO•¥ˆ@A`¨‘’îáùíªŽbMÌ]j~J°K¥n·Ÿ†.5?ÅÞ¥f+AN{—*M_¶.U^5ÑŸº]ꌳÃݥƣ”¬.5^K%Ð¥Òha—J-ßæ.õ¢×¥¾_}û¶°0#دf±˜€Ô’|lýjsÀÛ~5CÞë†aêä­p†½‡…B S…æ)Ld[zrÕ¤'®~ŽNß…ˆÁÛ–¹çìÈVÍòNûj»z ¢JùëͪA4Ë2-oûÌ4¼Ý3/œ0kË—VâÐ\ (¯ª…Zl¼¿´R©êîxê{% xª 9ˆÆcöH€ñÚ§mrâ”™#"`<æèv§‰3ùñ©™…ÓÕm$à0Ðn¤¤»ŸœOÊ:žR‡¡ãÍGð&}… ,!`s°óMæ|S3ܹL™,y»ƒšQ%;[ýngŸ¼R!Q>9yºØšÀàC@h¶šë1!hÇ|†z—ü¸‡ø†ü´ R…˜$5CÞ´“Šþp@9‚Vx+0:í$V.à ʃÉ÷Žý% ›BвU@x›:”gðß[‘ÅRøÙßÀ´ã–þ2ê…ŒBBÐ^mâËO!h)žq‡ ý Ë”kzQ{¡Zû§(´ô1ÉÄ×¶: -§Ú²£Ð2¨‘PÚ“k1¬rG¡MÊ$ÇD¡4IW½ŸˆRëhû”zIv9Q Ú~”û“7 d?@!¦V…ŽEÛ2Wí„æz²X´(óU‡U ûA 1I²ÊH#-ìwƒ ë_5J¦¡Ù:kÇÖ®4ÂÒŽ¢<*ÑV' Kra6)[AJSØta–ÑVÍÇ(d‡¥å¬•!?,­Ü¨´C(q×Ö¢hmyë6E¥eTœÐm=jžp’´!qpN®Wx4ˆ>±åvËöX}KgŽÄʼòm#FͧFyX˜Ý\ÁiG(Ä”´tðÕ¥-Iì=gë¿e"AÇ< &Èß௧Hµ4•@Ä/°SÉKÐrG´L#ÜŠ;¶íhEGeê÷ ® ¼?Ëé©/P~‘<½ û—bJZ`1+ÀxXÞgRj<-ƒ›!±}yÞÕÜO—ƒÃ25;C|oCÁ>Ä;(ß‘æIv<0÷ ÍzEðµåwÏW"´J#fQæZ$ˆhWE³æ1Bv)ÄÊ9aB_!iõ½ãv0EˬV5ËÎð@|ŽòsaÕzæ!fV3MË&¦E¼ÕŸ³\ÒüošÎÎó9•>lˆ€Ôí i¼òj“™W Mqå¹øyÙ=BœGy>ù޲_ “ éÌf§J?ÒPlNN•ŠþY+1S¾tqe.O’*ð¥AÄ¥–OÐFwIÚ« <ßhÏ$UKÛÕÍšãLJÕâ3”ŸÅïúë“ðåe”—“oJðçbJZ ª¹ÄèútÁÛÜG8f os³OX:õÔêlnÙ¦¡qx<ƒTºÞ@IÝMûÇRÙ{læÞCù^ü½ d7„xåûÂ4¾AÒP ÞÅw Vgϳ×z">Aù‰D[AÈzf[ÑA…|z6[Ññ3©) ­FH*ìëš5›²–w”ŽÑ` \/båŒ4ƒñŽåð·¦Pær|Ø-6ŽX@¹ l±NËyŸ~ø e®ûà‘é_õ¹Œ¤–íâv ©l©õ±¤GnÈþ"…˜’Vƒz’)Fâü¦^QY‡«Šßµ^UB£á :™ÍÕ7KëD‡Wˆn8šaë[zÑ?çPµÌmK­|A|ƒ'&g/âÊ|ó¬ÐåÖ†ÉÜ^à ¼¦®·²õ€tÄOyÍ_P÷HåmShû¬ó6:@‚2‘f¤óö5›ËJ¡ü(+ÝAÌ Ì7hÓŸ^"é"¦Å0vñ ÊòÜ?^oâ:¶ÀåP` ¸¬D‡­ fÁ½ÂVš%éªj9d³æxgÕ²ÔÏ·Ù›x+Ì{®!Ä”íh°_â˜]¾¾éK€ ŸiØo³z"CX›CJè5œ¸<‘«T¶” I»õ ›ºKJc¢êJÛ«Ô4Ö½vˆÛ(¯²4ÒË{9´ëA¼…ò­øÉK¾2×þ¾k ûa 1%­Æ1ñe‘·fi¬‡¯n#aoÇC^ÐH€¼·‘°·“%/EØV’÷¶R¿(ÜJòc Ó"ruÇ´«;쎌 kûÑEäfµ®ÔÕ 1¨6ˆ,WŽÆOã4` 8Böi ù8 ©A°Œ‹ÆšíèE½ÄJã;HÝà…\_¯«EЦí½µV«êꇖƒˆc(ÅÏä;h/@±ÓB‚ìQˆ)i5RXÆ´(Wåð…éèÚâ‹rÍ* WádÌ?§Ø'1©jù´Í¡k/â#”e®¦Dp™Žr/)AöãbJZ{XÆÅeטŽ'—Y„Ë÷‘¿÷“å2±¼…\¾ü °E\Å0.wT}—”Q¹c• ²ùnÍüeJ?ÀïN¢<?¥éøêÁeú©ä¹ÙOSˆ)i5¨×Êc¤t÷Žni%ï©SFýÆÉcø}|D\«/{z‘à V²cÖ,ÖmÊ1üÛ€£('0÷Cc)-û!wlÑÜŽ;·Ô ‰!qƒ/ÈZÁpµÒËûb,ÕƒWQ¸‚±±˜¹M®IÓ‡ÚkõðAk’;F;¦ÃÃâqdîx,,¾ï_×òIœÖ>Ë5ï8ÚŽjA7ÿƒ1•gPž‰ŸÕãh;ÀY”g“§d?G!¦¤ÕÈb ÓÞÈžºÍº$—CÊß¹ísôjr•¡ƒæPµqL©?ý7“sh/À®ËAö(lѺÜÖ@€1Íÿ¶ÍšS­9ŒÊå‘Ày%ŽùßmË´mâkÓ@ ƒB0Oûòø½¼Òðê`rí•o-“óÈÞ[ÄäI¬cb²ÁÅä)dï”&·5)5chò8C°º¢5;p8À÷ðvRÒUUg>k=…ߤ® šy;iVÅ «?4¦@y þ¶7Ee;ˆò`ò¤ŸFFض1)5f°ŒkE¨Ú,¶6@ù+â÷êkˆ–YÛÞ©!"‹ˆ i/bå|üŒ¦¼zº/MšJ³Ø¸Ä”´sXÆÃèvÿ‘SFÝæ‘Æ€â.6p|WA™>Ä+(_á®°æŠê{°§ZÛê¦n¨ÆvÍ`>ß ZÝB|ˆ2—«Ѧ"Î7CvW•Æù«Š ׈ý… È?ƒ8Ž2ßfSèê˃²k•Ï*Óˆ_ üE2VÉ">Fù±«°ö1ÿ"â—()Í*=܆R3¶÷\Ûè̦YPü~º·iü‚xH]¦K¼Á@þW¯¢|UšiºTÔ²Z³+*—]n#Ž¢,skæ»\C nóˆ¯&óÙ%8¦Ô÷i$Ùå»öIU+›ºÃe˜ ÄÊ\cÙ óñ ”¹ºPÁ¾ òŒ¸ˆò¢4Ãt=(ê|ý˜¢±O‘é6Â,¿ö£Ü¿?Oe+4sž!ûA 1%­ÆXrûð¡¹vm”4»hé›aöïÂì‹f-V}…˜$Õ@ÇÆ–iUT'$ã,óbkË¿ˆe»ürâÔ~‰Ìg­Ä÷tè‹•·/ ¯Þ­­ò“ø3ÞçÀž ño£|›µÈð>ÖÝd£›/4c›|“!¯LËR‹ùnÙ{šy’ý]0(Â0U”až¢DqO—ÊŽfª£ïjÄÑŠ;†÷¤¤¶µ¥uÍ(î±=íYÿ¤íeȦ®ÚþË¢îµl«JÑ5D>&¯…Úb¼ÖùʬY(ÈÜ"KÕjYׂWÁ¼··Y²Äk¬È'Áâ1»×¯­Ú&çN™9"ǽéɱ ™œ™Ÿœoa§Ÿ/ïŒÒ~õƒcše»P(¬•¾‡Ï¾/™zưú°ÕŸŸÈæ'&&s¬jÙ|~a‚w¼.OèxunÃÕø>-`s™Rc¬3 xÉÚî[Êÿ´çÍ  2òÊõµ¼EÀ«(S 0ÞÏá¿¿övì‹Q‘6^ƒúÓ¿‚?ØñMõÁýÔÅÇn‡ohÞ›¸¬÷cyÅ)¾fqà©¶n%d ?]Ž õRd³ê¡UÒë‘t¡†Išwf»îI1Ì;ûË÷T˜¸ª­^uòTñ'pŠMæÚDÕYÂrˆIp4¾¥’ªjhžã˜ŸËsÓív½^6«†Ï°ö©h’Ht×?ªN}óPý@ŽADÛ-,#ScM—¨:pr¦›BL’\Ù«F­² ÁÏ·‡QGxõ¡ñÊ2#XDÌ6V$€ÜK‡ÓI $?19Ëj(Ðbñ>Êâad™ùò+"@±s‡6<(–0*ö‰8€²ÌsW$y‰u8ˆò °Yº\’@x0æ.Ô¸„xå›É³äÖD€rYÒQ4k†cí3*µŠ¬:óÈÆU,?`¯R÷?MÒã2¤þX«y@•>Ä›(s±$4×Nw vT½lG 7P_ CˆŸ}…bƒð¡ó'œ~­øã/à€rèÑoa³D?úý5šP^/ÆlÈþ…ܧG£§B‡ò þ{ÅVx6Á€ŸýhýŽñ¥èßÿA‰~÷ûzeþ&¿ûýÿ&MTã^é‘ö„ûºQÑìêO~Ó‡ÿ3¾Î°Õ~sª-ûÑo5B¯ ÊôûäEy;¼~'eȾBL’LÒîwQ:àÅï3ã‚F9Ñ‹ßÁXÍÅ1‹œCBØ´V׋ÐÏ}÷ ,¯™œì¹ï6’óØ0”ÛHn¯Tªesz|ïˆÄwn'oC·¿^UuÖ¥Žv¥ñØ÷=”ïI´ÔIû¦¢V%m)H£bâ´ÔyQu çꢓ`­àcߤùµoÙ}'e´.Ì:À¦‰?£ÑDÕà…MoŽ3ª¾N¨·²¥[Q§Ô¢4£î†L8¹fáQ¢@#·ß)iŸ9ôêA¼ŠòU½"ìˆÄôóÚÔK'IÓ²¿N!&Ù|Ù×T‹Q³c^ùä ¯F=ˆý(÷ÇÏúÁî³æI1²¤“d¦œaõ¨o1I¢É@Ù܆M>­îåp¨‡ó2ïuŠnåÀqq†šЯ-$Í@*4dsfQ­^¥ñ°º|Î\DÎ@ðÖ•ò^¤à”¯ÄOjzRY†k £ dBL²é²Ï¨VŸR¿Î]‘.–§˜ybžô!Qƒwf¸;iú(€!§^’" d›BL²I£3ªÕ¯ÔŽÆ@šHx|Ъh%Ý©ër‡µÇéGÂÞEùnüäéGÂÞC™kª/FøÎ} 1É&Ï'Fµ¨s1gˆîqŠjU‡à‰¶cyÔĽ\ï½nãæåÓó“æÎR7À{Ü>’;[Œj *wÓås§Icï­²Éêx "I¯¡Ì5À³fIòF/aGé‡(Ä$©ôG^“í¦jàÊ\Ó±&Ùߤ“¤8Á5Y¤t’.?ÝÐÛ‰³Ë^á…À]ÊYáý‚º’÷¬fë†fÛx'O/ú)×a{Þ²ýÅ`Õ*îè»ó0ý5u =i³RS&Av…u¹w§jr9µb»õ–uÜÜ2²[±Ù¢YÉ•M=WÛÔìɉ\”Þ;c×(Ì¡œ“ÖÏmÔ¬rD®¸ÚIGE4Zó:È?8‰ò¤ÄÎ(òêGo'ŠZÔAömŠuFm¢êÀhØK!ÿÖ1ýiv©qÍcnjþÀi}²e™’_˜Ÿ"Žéâ«ÎÔP*v4%4×ã.~ aŽÁ_‹xt¹ ºDÕ¥ˆn ›.~vÆ·üPóR®ÀJEb e™Ó§ˆsÛ·‘*€ò¦O2³01Íj-PââC”&Ïáa¬‡åŽà·?F”Ʀ!·?ââÈÖ 5{4KgÀ6-óåÐââ ”[0{!XÊ% çå;JãiPj/,n‚ÜÁòR»âñÎ ±Z´èC¼Š²¼=ü£î} ß)aNQ²o£Pl Ž¿tÉ`/)cŽ¿´ôúÝÛÂÒÚÊëÂÂþŒ7þµˆv©òdE†oœ0þRG“î/•]ÄfZ–¶m’å Y²´rY5Lò†¤]ïv=f˜*Ô0O¡"{¼¯×÷+~˜µ\Þ'oañ¦¬ÿV+‘UÃv,ÿyyü[ÕÒÕͲFVlG¯øçÊ?Úcÿ½çÙÃÁül« 1÷‹ Ê$¯F…h¼†}¶ë>Á*µtª 9ÜÅc6öMñÚ­-Ï )nsDhŠÇÒù± ™šŸ^8]ý %®8(t†•CqP paÃýŽfiFQ s¢‚YhpöšË‰‚o¸ªØ.£^@¥6 Å«æÇ{¡vTñ×5©MXiþnô…ÚQ¬\@yC®×”/QØt¡–­/Ô/¦*²X ?ûÑ\¨ë æO·i½¦÷ã¼M[«¼ÒìŸnÓÒ·iÿs¾ž°Õ·i9Õ–}›–A„nÓž\£¨5$ÞÛ´I™ä˜Û´‚&i÷;‰(ønÓ …÷6mR9æ6mK,rÌmZA‹pߦMÊ$Çܦ4É;y¯ùδÊ%òÖ½2d7KfõlWWiï |G¢™Nr•6…r*y3³Ê1qšIx=ü˜«´œµr#â*-ºKr<±ºzE«Ë[2 °é+£:àbȺH]D »”xrÍB5êtÜæÏ©Uà²\Fù²ÄQ2âXmp¨/))x/é¶Ù_¥“d¶pnÏÒ·žC¶g 3„AÅø2$½¥ÓãP³1r:~Ñ— ÇPKžAýC 1Éîo̪VdÔì˜KЂô¹øîýÊ2©hp–é ‡f=ˆ×Q¾?cèËÐC(%ÏÈþ…˜$3ælьڋ>ÉuhÊãD˜AW¡JÍÐm‡Àƒºí áÐ/ Îm”oÇOjGŸõJš6€#b’M›ªYeT¬Wi܈–O›»8D=°‰«Z­ì¯f¥áEú³f«FÉf°z‘;€Y”¹–±ØxDÍ<½%«3 ﲕ û 1ÉæÑv‰•G}J㪴|¥½Ëg/Ÿ¿÷Þ{÷o.z4Ê/ÌÏë¤d–˪ÅL¦>$àÊSñ“© 8òtòd‚ìg(Ä$™Lm6묦_iÜ îD¹S—®Ûê.Ì•aÉãK©¢f8¬ÜïÞs åTüÜéG¾†âÌöDOnÂ/P§Þ’¦-|爫ۂ5p‚»„ˆM§’*?dßF!&Îf+|—p™ œ%®ÑwÞ=7bתղ;a6ÜÕy¥î«öŽLNL°k n'ð@CÒ îÈO¤°î\,är[;~ee·Š“{Ú¦we08v’Ýq"'ëÿW(Ì œ‘Öì¢î Ò=©Mפ-Ùg)Ä$­Ï‰¼28ˆe¾*L¡òCömŠõ9m¢êб‚ÄöÇèOé+ƒùÉ™Ð+ƒ³þ•Áùž[—g³(Ë£ÐqWƒ»·ÁÒI‹x4„Ü PŒG]¢êPÙ® vÄ2¯ ÂËÄ”rèÊ °·qü™ !'æmÜî 259Ã|ë´¸‡øåGÉ“˜ŠyÃð-pgð¶Ò¸Wrg0.’ÜÆ: Æ«Aa³\pI‚ËGÆ2L£_ðN¤Aó!ªC<%ˆìÚ.ú׿‚¬Ž’4ÍØú7yBÊÛ&=n¾·t£¨9pÓÐw5ËÖ}òÞmWvöTÙ' St†”CÁÜ’êÀ)o\Â8ßMëõoÞ^­¬(,ä»ÍcnZKï6»›çsëµJÅå>YËWš ­aÉ»`—~Áš»Uþ ¾õó°ã¤$ýFµ>‘™±Y2ÈÊçªj”´Yט›®B@YÛu¸sÖe³RU-Ýv'ª’_˜™øýÙ?È/Ìϳ¶viÅ Í•ÿºuR­4.3ûßJ™¿©©–kºò>¡._×£î*{ñÞ²æ=eß²4×ÙüÄì)³ß5kN{tgÈÔäÜøì| {Kø4¸77~h°ûÕŽi–íB¡°Vú>û¾dêiÝêZ_~";951—›\˜š[˜ÎódÂÅ ÈÎm¸ AÁÑÐò5)5Å—µåwÏW§i»o'ÿÓž?4³ªa>FVÁíš«ˆWP¦Ž1+¬·=#?lÜäüÓ¿‚?ØñMõÁ}“óâc·£7´" Û_úßù±\ÂŒ¯U¸fÝ­„ ã§Ë¡&-ͪÇ9‘¡ 5ÜH’ uLä‡;XƈÈœÆî•Q/ÇD~tbŠü ¼bÉù!)W²?"ò[ȉüÀÏRøÙßÀÈÃùáF_þ&G~øÿý'²ü…÷²Lé=÷úSàú,ÒÁ×¶:ð§Ú²?0¨‘Pà‡“k1¤r~HÊ$Ç~4ÉùïŽzïq¨+”’lr¢¸ÔM³¤ r™`Ó6h+ B‡}¸ˆ2WÍDLíOö!pœøªBÈ"AÔ‰1I²Èp#©¿_ÒwõRM-“#Mu‚Ð÷Q¾/ÑT' ý@M’6¤bâ4Uóž¹ìМµ’Ô+ꌵ5$Z[Þ’…M‘Õ#t^û\eTŒü@™“]±ð ’ôÁ†¶¿U+—ÇÝ5ª; ÿD\E5K‡ÕÖµ*P4¸5žU]AO"‡2Ÿ{'Ä#È~‚BL²y´÷‰µs¦ãAÈçQ}²‰Ç­ÄJ™ HÀ!¥~Ç>nÊÐA B‚Ï$EÈþ&…MoÓI¢LÇf¹¦Í2£rtˆãš‚´¹J¹£\ž}¡Y?âM”¹ª4tˆÇ‡“" †/¨#&ÙýŒ¹–ÅB0)è`lX–PIE5jt¦fÁuZWÓšíXû¬4ê¡È=Ž2×¢ ¨)E+Esb’L£ó¶YsvUëU‘!„fâ¡*]±4[/i• –‘§!+w¨ ™w1nîP+6a—b’âdBL’¹sήج k}J#DHð"AêLSÔQ‰ ¯bªV‰Àqa³j–u÷ðSÿ™ w*­ZšÊʬ>l“€OQ~?³úM€K(/%Ï,Èþ…˜d{DÕr§8¬\¿Òˆ!ß#êD¥X ÓO¥k Œ›0ýHÀ›I¾3D!&ÙÞ­}fTŒº'Áj^º¢?êÙÓRÖvµ²M8T¼ˆHP&Üu×\gí©ŠZÖRQ¼Š:ÐÊ<@Ì œ‘Hç¢Y [I„ìî Ž£,¾ÃvÞ{‚ˆÃ,YÄI”'¥™¥3µ¥qfñ)ÊO“1ÌâÊ\[÷6àW‡ÏPæˆèO¹"®,SˆI¶—^3دü*~§(ßK¨×w$ØdOÝvuÍ;e¡O[oÚrû@ÖñôíEœCy.~B "‰çQžOžPý…˜$ªÙ·º„ Â;Í‘·Ùt©¾Ø­•jEï€ëJå%¤ypLꂹìÂF:nÐ0ÊÃÉÓ²¡“ì~h³¬?1ªvÙrY‰£º®ÛÞ*A£;"ž’¬½h׋xey;¤‘ô¹Œ”lá)dÿ€B± ÒHú”aœ`Tí RæJ,ô,›Ûªåºèè|@=Ö~ç ’åŠÒaÀÕò؈CG¿"(qâŽÒß¡“¤ÒŸ(æ dB9•|ÓìïRˆIR œ æàUĦsòI•²oS"ã1vÍk¹âuQˆI°V‚˜ƒE³BÇ|¦–uÛ9˜c>hAÇýjaç?„YÈO¤°6 1íB.···—ÝÓËÚ¾n°¬m«Åýœ÷ƒâŽžÛô«2¥{Ä´N¡<%­õE…¤¶¤Ã¢ô&e8È~†Â¦(½I©AG“×ßäòSìMŽÐÕÂ&w³Pn“ûuÐä6‹6Õäv´q÷¹g¦ùÉ~¢z-Í/9ê~²ZZœžššÕóùüüìÜäÔd~4øütjzf’±‘S¨¡¬ÅÞH©Ù˜²…òVò¦†ì·)Ä$Í?ˆŒÄu‘Ú,™ËÙ·Q(æ\U‡(¾‹ &ÁZyMÅY˜¡f£õð s³t2Cõ“føÀÜÕ?ê»îÔJûîà uñ5ʯ…KtmÕpû <ß7TˆAÒï×WŸ±ÎŽ(ǼNH®Í/ÏúJDîg7ŠVDæ×o ÌwŠŒ3ó $çm”ùŽÑŸ>$ØÃ;ç«Z1­mÕЫ•ˆjû;ÞÅOî?à°(Oð¢aÄ—(¿Ö÷¦ gUmpïT£èªæ5“ ±50*H‡5¢\IcfçÊg ÖÛ Í=ÄÀ£âÝ»c™ÆvDÆ·3(síÃ\N#¦AvÌ=諊¦±«Yˆ*O ªqÄç(?—f¬ UhYï¤{„bG¤è@¤ö€¥­×Dl“ÝCÆ¢<(l.ö(pÿ%ÄË(_–VüãbM,yÄÝþ¤|’cîñ3²³KT˜ˆtSØkZ°±ÈŒ5ý `J9kZ¸ñD .ÙÊ;V±¦§ó³ÌáÚ`óêòÅX“ÆŠPîR Öô0Ž6‚$cX€òzØ>—$”7Ïj$Pæâ”¹ÖÇŸòë#@¹\áŒ7ý¹(t\'°ü€½(‹Ï\ž|4tA±î¨ŽÆÌP§qD©Ç –TGÅÖÁ‚à-”!û6 Ååö“ªé(‚ËzBþ{‡bzdÑ$Ê1Ï«»þ,í<ð®? º}Ô„’„N嘋“Ã"¾Bù•pqF 0é”WT†`L ²HRÕr%5Ƭåj6¡P/¨å}W?òxœPÓ—´§rÆíóâÌ »®yÔ0p¬¹Ž.u󛨡Ùvmhfè‡Ú*d7%µ0wa}…b]ØEQu`kª‡BLœµ_èügK¯?&òÁzg è´; ÷wøgèüKÁÖÔ³W¸!Ì<9Õ‡¨" ñ!ÒMKQ±óÉ’¡–÷mÝ;s×5Ñ*}Ù<8yÕDÚ—!SVÉ µÇ[g;úÓë_™;ùöð¼£êëðàXÙa¾Ç¯¥ˆ­O`H¹G"¤Æ¬ß®ê(6ÐÄܥ槻Ô9,áœr*ºÔü{—:‡\ ŠpÚ»Tiú²u©òª‰þÔíRgœî.5¥du©ñZ*.•.@ »Tê²ÅiîR/.¿[{[Xûø~¥0?/د.`1©£@±õ«M6º½lZÆžV.“å Y«Ua—ï=¼W2?ÏÞÃB!†©Â ó&²‡-®lméE]3²b;zÅ~ù\ªlô±·!“•JU·¼kÝ'JüÐi¶cù3Ëä[÷çðâ‰ü5Ób~§HZCs=âåy5-Ô`ã5øõVÉRµZÖµxô+^cEާñ˜ŠýÙ’xmufê”Y#âÑ’x¬q!CòÓ ããù™™ÓÕ…$à;Ðn$I8æ…€àÈuAðà}ðü í2êTj£“¤öÆûBÀЍp@9ôB€ðÞRô _`å¢<˜üÙ_¢_„·©Cyÿ=Æb+²X ?ûѼSXùßC>½OÈÃMtùéŠfÜ|”eI×mßÓöÍv~z%€ŽaòOù:ñc_ pkúûª.ú@ÀÊcÂs=ðBLj„ªÝ BFéq±¢ãw ö+õàSìzE¸³!éÏ¢%PHÞ*ý …˜Znèo;P檞Ð\£ãÒŸCSœSB}¤ÌÙ_¢°É×4ËÒ’±mé¶ã-¾ =°‰÷쳿ڲ¼£Â9Ó² Ñ]Û‘-Ó"[úgwäÕ¶¶´"³ïJ¿2ð åW­ºž~e`åÕä­ ÙE!&Nk¶ òhW/ t6’`µ)CìÚ¦;ãÉCÍúwñ¬ Y$o?¾~!Ùl–ýÌLpyð)ÊO%²ªf×#]ª¾3J#Æ~ÓÔ5)Vuú\¨cÓ4•‘Uƒ¢êÀg)ÄÄOòð¨’È,Fåè0ÿ!ÇTO®\¨R3*±÷+›fY/êî„×mÂÝÀŠYÒÊpgÓõïü%k­”á(B?âs”ŸKcû‰ÿ¯ ¼’<Ù!ûbJZ :¦½XÓ?2(/ÇkWt$ù ¼Œ ?Û¼h­}z{Qî•çXòß…® £<,±E܃ìúG”CGÃy ÌÚ‹`øÑ:bŠ»¡ÃúßAùŽxéyÂú§(Ä”´Á:`€ñô"í¾×Ũ´Õ .<Õ§HêGÎqÜîÅÖ8ˆ²Ø5´Ï-WÒcšÝC¤.”IkLeÝÀ@}‡žE?»yjá(mGï ÌÕCÿòbåtü]j/’ pL©ßÑJºK…ìRȽ°ÅÖ¥öú$öº•t_Ùg(Ä”´}XÆÓ¥vÕ'°ŒêÁw‚¨ö}Jýù„öªðAÄ+(_9½*|çâC”e¶'¹½*|'…xå{RzUøö-ÄG(s5p¶^¾t1ƒ²„ÍÚ«ÂwÆ)äÞgaëUý/ù˜E9›|wßÉQˆ)i5¨‰{ÕóÞZ £jÐ_]pEç"†#Ö>k6+sA£ÀW ¼¢¡ø™;ˆö yn/)Ê@ö7)lzn/)5èÞr™{T©ó%3Ø9 ÎeåÈøÙ‚lܪY.a-¢ZÛÞ¾1óqØËJ#rv0G‰Ÿ³—Ñ2€e’FÀm¦¿Õ‘Úí³TT;ŠZÓmn ”¹Ú›«x Û̵ƒíGÐJìñ° ÿâ]”ïJ+~ûÆ®Z®…•ÿ* ¸V×¢¶ Ù·Q(ÖvÛDÕ¡|ž°èœœµ2}Ì™pØšÏ-ðÄbF·),$´ Ž‹«6„9F„`NŠM7‘A¶x$€Yo7…MqÕ8kåy›¼£.ºM6U[+A EàÞ= (¦ZŽî½Š«FFM9I¼èç(smà<ËciÛ®Žt3€×êÜལéE¯Å¢Í]¸9åÓÛ™VËeø1O,ä3ˆK(/ £«ªYºY²™ûþT0𥺤µÙ£B.aÈIkÛ+Á6 X{=Ru"}p.PØrIvµDê‘B“(Ç仯áÚøG¬#(Ä0U˜ažÂDΆ—ß¹þý¸^Ò ×çÒý='Í{\S-C7¶]_¦fx[r¶ÿLïsʬë`Ò šë×ÂåÕ¤PƒŒ× cÔµðg5[7\¿•ŒâÍp½èÝôžug=_¯Ù"/ˆÇc4ö âñZíÌÂ)³FÄñx¬Ñ›žr]¡©üÜøøÔäÔéêO¸#N`X9tG\°ÇÜB†)N|CþqP©B1Gªù@Wlèn ùWIŽ:ÍÑQÕa61ƨ^¸‚xe®-Áˆþàˆ틞Ê ÷ ¢<ȫ𡿄˾…ò-‰U±PO‡Ëæv:5šëÞ2µèŠkhp»°2mì§[z1s@ʧ•6Œ†(ðÓš¦’Fú°Ø¶ñ_N¢~äg€MaˆÕ„^Wg©ƒBLìj…^¾¤ _lÅ0¤0}æV’wוªú/¦X[èsñ‘R£]ÚD(bDz»˜AYÂä”õ.!d?N!÷ä4¢ô÷²|zH-¼'ݵ@ö9 1%­Æ Ö@€üí‘AŸÀcÔ xyô‰±WiÖhRw'_Ûš•'‘˜VI³¼ Øs½øIÛQ+—áΡ?KóV…Xé ¹ö ~‰ò—ñÓ›¾úå'Éó ²J!¦¤Õ /aÆHopê5»‚”¾"…ÞÍ'!;Ü™ —Jõ Rü•4Pvà”‡u˜mn åÐ À¸†É+ÈÀ;Ê¡€œ¾HÒ%mK­•1æ³p I qey˹8å1Ï4båB2æÉ"~òâs$.£JêGÎ{ x¬Ýèrq呸»‘kÈÞàÊ?ü-yƒ(€”ù¦Ì¡þcŠÓ6Sˆ³(Ï&c›qÄ9”çZ0ìBþóˆ (/Hl.%N“Fùqü d÷qe¾•!JCö_RˆIPëiÃ4ƵÏUÓ‚Á)¸ˆ>–eÔî662@Ê9‰»×»Eeô€CÉÛ²¿A!&I¥?:úb?{Xíꄪ²o£gÇ!–cDñš(ç$ž„è‹M}QxqŸ/ú"Qêû-Iî½@V—åí½°G_„üSˆ!Ñ‹}q œ’kQÛ…ìÛ(k»Â7Á¡ö{)Ä$X+OŸÎV§³+ò^³UK5¼xzë}.½ú~}¬þz$k)èXOQ~*\Š[58:nGÇ«ÞÑqoqœ=îÓ*H¹ÎK…æz\¬ÈæÉ*)îßG¾(Æý›¢êŒ*ó½!Q8k¥¹ý€y¸ âWæÁ®¯@tæð'c>5<”wgð½î9ÂÐÚUo³±·U·å:ÍC )iUÍ(A¤® ©Zæ®^‚%ÒÕñ6bp †'lÕÄ÷(¿—Öt.x®ý"ש:Puw#îæCjDyPØÌyài}c¯”%+e[#p§è]q¼€ù®ݱÏ(©V‰'‚Ó%Äe”—Å[}šQ *Š€à¬(ŒNÝH'6Bˆ('À&:®Ô Êâlº3FL+Ä-iÍííJ„Çl—§PæÚó<²à9¬Ÿ£œÀaÈnqeñÃ*ÑW2Ì Ä—(‹¹3”ú› 09ð‚¶ð*;ƒHmæ'íld1ëå,Æt-á¾aT'‡*v¡Ü%­9u#²åð‹€—PæZ·gkG]7âe”ùŽ‹ÒŸÞ#®“çXfÙ&;æ^ãŠ;ÆjŸµbÍa <ÑÝ® Σ̷óÕ+ج›Bþ…´£wü#6&óÈZ@yÁΰ6¤|b’Ô8o-€2=ˆƒÊ¡Ø¤q5%È®‘ºu(Ú” Ä0 \3´ŠZÕÉÀ¿¼ûO$½ q§VavÂaµËˆs(óŸåù‘.IYt…œG|‹2ó$šguHlÑÔ}G©ýŽGíC:ŽåqE¾Aù›äzÑIÅï9[Ø‹N6¡Ü^”÷BhÓƒ(t‹“­…ì:/+õ7am2ZðŸ¾8¢#]e§/èx± Ôï.&Eß)¤ìTké;Õ„²éËwÝw )L—¢ïRvJ*}§—ŽÙû÷A*¯²?T3…ü|‰2×L64×NÃúoêl©;­Láòß0•Ú(Ä$­R¢ŸÎÅbÌœ¾J™ÁŠ»RÚÂî=²GÅ›UüÝӓ½Æ©u,^â"ñŸÓ{o™¥ZQÆ[zó¨ A™«9ï+n{4ÎnYjEKû?Å×ñ‹é”;%p4þ¶¯©–ë÷3«¿€*/,Š úËwïwÊPüԸ賣‘mXÁ%žÊ°£ã–Ä!ém»êíjy=î¸í‡uQ­}æ’P{Àe”Å·î×£9úuÏÕ7Ä Ä±”½Ö¿@ýƒU÷[ÐÆcÞr·±ð¹ÞQïÎbv‹R›7sï Ù·Q(ÖûžUçK¥“(ì}BÎZù}rk j¹ì½oxx€c=à ò°å>)ë}¸°T.Ã’@ÉÿêÙ°µÌÔj…|½Þ8púæUÆ?pús’öN’0û†Oð{A±úyŠéág!n1ܱ„ÈYÏŸº}±f™ÛšaÖlÿ ó{…ÒtÍõˆ÷ åUšP×vר÷ ýG 5Çb0^#E¾N‰Ø£Äk£ö|~&g]#ŒÛ$OÆc’Î ™™Ÿ›nYçqäÏÙ¢õnæô§—©AÉŒæNÛ`ôÕ±upCÏ¥<Tu8èå]Ó¢yP‡À~¨N“]G¨j©Z-ëZé§ë”Xm““§Ì‰V½éɱ ™œŸÊOž®nädïé5ÞP!RŠ÷Bƒb’T}Ǽæû¥ßê÷ùNÑ¢/¨ÔFa‹—–ÿÈM€bÇoÎDtD]Õšåð¼çûLñ¯àŽ(õÈwÒú£#Þóí\D¥9TîA¼Œ2ׯUè_î@$(‰•±÷ éxeñ›eìc%äŸBºü}$U/VwTÃÖ¹Ùºˆø e® cìl½°ØÐ›Cë ÄÊ܃ý凈«(¯&CØ{ˆ_¡,!ì-k× ÙM¡Ü°·G½5½äóº¾Ò¢vȾB±¡®MT8UßE!&ÁZé{©›»ªaèä^.›¬J­ yûP–çeñÖôsÌìEk9òy Gš;s®·¦áÐF7b¯rè­iávýÖ4/³•Ob¾Ä¯Âg7‡ò þ{…ÅVxèæ±ÃÏ~4oMÇ÷8ñïÿ D¿4ibÌßЗ¦ÿ»¿xý¯¾ø¼jb÷KÓ?“eÌ’æhE'[†³ÕŸž›¦ßØøg|]âܱÏMûuþ½[çß»•þ½÷^®èËÓ!á>9õçzyzžÂ¦pŸ j„†‹<ÀÐ(ÕNðütÈu“«1I8ÁóÓ—Q¾œ¼a û+b: †n8xƒú2Ê\5šëÉÞ yú3)Ë@öW)Ä$É2—vêÕ±ôȇ# t^i<Ò{å› ˆ:",)Aö·)Ä$É@רq“ÑHíJã©é¥ì2v#ƒ' A™$o$Hw(Ä$ÉH}ù,Ê:hÀë(_OÀ:ô{ßC(%oÈþ…Mñp­Óå{MìV¡ÁzßGŒÝ*ôËç($oÈ~BL²Ú Z…»GëBÕºn3]h‘®Ö¶™.l'Êm3÷_`do‚ÂûÝq»7Mµ¨#1Œ*w£•©ø0Ò,æèN9ÌǦQÒ“¸¤-Ùg)ÄÄi±«'U'òìý4A€M1¯9«åæ±0퇿ÎÀ{÷ì·.¢±©'â2\¤Á:^€M‹ÔŒ–ƒÉ/ÿ,)‚\°tÔ…xe®ÙJ¨jíGO ŽÐé:âm”¹<ãðÕŽŠæì˜a«¸½h#Àa”‡…ys¿Nf»V…ƒö{K7²H¼wo89:Ž .£¼ÜŽ÷a=x 9Þ¼î…ãÝÇ{"GèuñÊ\“ Vž÷£S(§N)ÏáKw•ÆŽÎ]åÀ}äÄxN9Ô§•çƒÈíÁXx~Dl”£ºŽxe._“•àƒh @y@<o!>Eùi N½#ÁÏSÓ£óè2’98Ö¥¸\˜<±/ã÷.£ÝúÎ).+±©¥þ°g]8ÉÒ+æn_¦ÒåÐó*‰1˜~1û”1ø*²öj, ¾p‚Õ#ëG¼r"]ôU4 ¼.º-ÍÌPàâm”ùÖáéO» ¾àLèÈwÏ †¼…Á©Ð{â¿ßâŽVÅtªj𮋱  lŒn€ôLsö4Í7"„ª´T£dV@Ú*¥¢c$E‹~Kö=Êï…‹•#DÛÚ‚U&¯\®Û¤ï꥚ZE½âŘpöÌ=ußæÑšZ©£Ã… jÝN §eV†ŠÜJoˆ¶öŸ~÷² å6i½FûFÍV·ÃVä.`^Á¶OÊõFb…m¼Å÷š>Qu ×ºH!&Éã^»ßŸ1êË(ˆQæÒÍÓi I§s*€C£>ÄA”¹|7þ# ‘í tB¼ò}ií*òÄù0V/à(Ê£ÂÍê^¨õw ÷vôâ±wÌZ¹D65?ÈŽÆ>4|€øÊ_ kêEœ8´KAÒ¼/ŽøÄð L¤Q¬3寪¦XÙ5‚˜E™k#]ÝÄÊâC(ûÈ1r^šU.¦>8—eæ•ú"®'s-æ²[fñ9ÊÏ…-s>CØŸ1VWQ^•fœó^Œ4V«¸ .©…=§—UˆRï1è,A«tŒ}A8FKP¢Gi¼#Û£ð.80Ï¥OôŠì0Ê\Û4ìv¹Œ8‚òˆ°]ûϪ U¼cëþ\-€X[¡Òó¶´5ÝÁtGI´5ÝÁtGjkj‡‡]TÖÆtà r("½¨ë™ª A Ób‚®'dw Qžë9š%í¼µ“ñoÚS Ç;‘¢ÕšãÎk^¬­ t Þ§|òka]§}oޏ]€æ=ä…Ÿ„‚Ë–¦–ö©NÁmv¾æFÍSH|À ¼î´DãF¦¦² ØÎ$?]‡ìg)Ä”´w±”·<}tÔð’é„GƒkňBýqèjÁàVÍòG5|›‡9`èÕ‹8¢Ô<ÄÍÙ{h@¢ˆÌÝ„ÈÙß¡ÿà±TŒWÉœ¥¿Ýs`?•QÅQän0zp_À ~[x… 4¹Š8„ò¼a^h…ii ˜AYÞYÊÈa²»8޲øQÊîà^Þ/²¹­Õ2D—vbˆ²òôÊ"¾DYü”É› ˆ´ëp¸ì†pÝöŽë•ÀX¨®•¾õÜËá¯dˆž%Z–ùQ úIõ7(¿.ÒYWKFEè÷¨©kk’šÃ•г¬ÍtëFF9)%dwqe®1î`/ÏêBö„BLqµ£1¨iZÒcdŸ¢SÒjŒa ÓéoþÀ¨¾é@wÏ6«”¶5p¨Ô‹8ˆ²¼©ôG‚"»Ðdñ&Êò®3Fv!±Vo¡,~›±mŒµüo#£,³èCbKAYBÊÚx!{B!¦¤Õ Åޝi÷O\0êÞf¢øN°”NTéSÏ*÷)2·y:Ðäâ-”¹Z3['Ù]F¼²ø(öNòFA™«5³u"ôkèe’|ë…ìïPÈ=ç͵{£¾’÷m,ö¸"ÚsUdßF!&ÎÙ|\„ë½êN å\u;÷‚}M!‡6¤"LœŠ5Ðéâ5”¯ÅßiAv篣Ìu‘÷@U<*%AWJÄp[‹¥É®[5°0oŽª0=/šåZÅ`e(:„¸Œ²ø•­%WÍMͪ¿ßtŽÅAeí f=ÈQ·Íòc-ÆÒp å%ábÜs,Õ°·L«â…1Ê}‹¨Æ>Q­ ̾“em4yÔZוÔhνýøú5k[U!fQÎÆßV »ûˆ9”sÂ6»F2ÌC”ceuÇ[}›Pd¬¾] ˆò;8­ÄüÌÄ$òð*ÊW“§0ëåŒÏ<#µÃHÄw"t¹€Ø‡r_ü­ ²;Ør¿°Q ÄÒœše]µ\óÞá0Ñb 唉B#qÀ›‡v¡àä(W˜ãMƒz_£ÌµŸaµ£âMûºó\åmsˆ (/ðj}è/!¾A™kÅžÅwߢüV˜Å‰U3ˆéù¬hòñ(ÿBX£çéßÔT[+ip§%8dì¯xΑnÔ=bÖœjÍsª÷P ìа–„:õPY,~ÂrT­ûKõÓbþA’ŒâÔóô,}[‡·n¼cA¬ªÏ¢º³ŠàáÐ\Û7¼Î-bÎyE<Ÿ›Ô€ Ù·Q(6='ªœî¥“`­¼y­;NY#;Z¹êζèà=ª^"5ˆÇÉçÀÜ‚y±€Æ”·AùÆÙ3ÇKzE3lx×'?±«VtÇT-C4»ªu8æiMÒTC;Ð’È8k‘ XŒ‚Ô"=sö«°¿íjìd«ÝþÃïªk®]ÍSš”jLMýxÑqáŸÕÕÖ˜Û>ýÌï3”ŸIkû7Jš]´ô*p-‚ëcÄã¾Iõ±Õ(Ö¼UgQñ·¥Ä$X+«¯]{CÇ~³Îíª–®n–Ý¡O·Iºæ©#p.QwÙ¨îšzÉ~öv4æÅ/Ѱ€«(¯ çë:ñMC{`û­!KÈ+sOÛÕ¬LÈ-·d6¼þæv¶7tš›»ºYc>sý ø5Ê_ è•j”ÈŽj•à)òz?ìÝWÒl›hŸÝ~[‡r^JÉ{§\·Ýíä ;K>¸ž€Íì¸<ÅU°P!ª;‹÷œ’ªi;dÇ,2»ñÔŠƒÄfÏ•~$Jž?ÿÕ>]EßÞql›±–‡ò!Ç¡Œ§—Q?ôÐåM=æy-¨ññ5Êâw8ßhh˜ F.’úƒS福z¾‚;›Ï’|d4¦¨"Q‹ 炯›÷kA;ê®æo0T]×Dw4bëÛîڪ£Y_x¥™ãéÆ_c)^”Kt?¼4p:@;Á+³‹EU8}Y.ië-f «ã¹¿¦Ì¨Ì;Tz)¤…3NФ±åþø`È®q@©?Ì!:×g x3Ü;.ÝëxC°¦3O‚@ëAÄU”ÅýÂÕ¢i¹nCÕ4JþI:× Ô‹:K Ü[ß«ðqñ¬š]LÙýL,·ÛqçG¬ÅyL|¯Èts_îíèe¿7GYü€@‡o•U Ä â×(‹oa<Æk¹0ÖûþLt°ùo·ôoô2ÇëÈ'À`ûðqòÃñÌ:@9Ãqÿ3׳jlÒ3@ûˆš|¬ŸsŒá 9èt ñ.Êwão~Ýâ=”ùNÈÎëñ9¬sq e®Uq‰ç*A— Äi”§“±ÊCÄ”ÅãÆtg¼s.§¸@YÄ'(?Ög!êy,=j±hºSJ݆β+ÀàcØnïX`Uÿ[Ÿ. ¼pJÚýwŠ?GŠÞÁưï°/£|YØ¢ü-lÛñ X†Ù°ËÇ™=o‘Õ~ äÄ/PæÛ"‘×3ü m˜`4·Ÿ¡­åEs»âÛmÏR«U/d‘Y3˜CÓ‚J=ˆw”z 7+Årèú犿øe®]ÐÃÅsèúçX¡€×Pæ¾bvè/w >BùQüDþ9’º~*ê!fˆöÙÑü(ŒÕ<Žøe>÷Y^Oº,#¾D™kªËn EÄW(‹€bžI@ö«bTãÒ¶fxWaŒj̇~¤”Ї/Ä(èrqXI,0,dwqD‘–k*Ä{(Ë»ñ(atz„8‡ò\2Ö¹8ò¼°uÚ˜—& ÿÄÊ\çk$ö­¿Tü0A/î—~<”çÅ=";î°{pþ2²º«êeuS/ëÎ~p9ºª?©ÛÌ8(Úƒ8‡2u=…Û‚åÖ÷Ãv§jr¹åµ¥·ÙµñªeÂJkÖ´¶s¨îâÝüï~ب~ÚþÁ~èúfi}=¢]×WÖÞ,-¯½ )ÌÖ8`/Ȩ̂à›¿Ñ¹epõ¤ˆê~/4ˆÌƒûˆF½î …ê£ ×ÇS8/å…U÷Q’¦Yx®^µ'œëyÁqf{p7hÚö¾íh•,ykÂ)¯r#È,ÇeYZÕ)”§¤õËÁDµku ˆK(sÝcëš!»iÄg(?KÞí…ì—)Ä$¨Æ o#±V­š„ äwÅ“ƒ4¿òMíá ”o´x0]î ÞWê‘Üãf dwqåQaSÝ„%™ŠiQWrwÝ!Ý&:st PìâÊâ§`¿Üv²éˆ+E³²©xwx+d'>Ísåc€_¢ü¥pæšÎÂÖ¯BûŠú÷¥ÇÆýûÒ®o5Æ·~ù=* Üêåóžä¯?ÿZñ½^ÀןÕ(oýù‘™øÌl\ÍÝ5Ë»õ#µœ'âAÑ+ˆOP~"¬ðóƒ'âUb{ëåħ$I;;5›ljþy ¯ïÖátœýSkŽ ´-²–DÅê”w%éƒ[ÔlÛ;»²ÕQ`Œyθ‰úŽ¢ÌÕ·†æÚ¹á6wŽns+"ÊÙÁfö û6 1qvÍÁÝ™Õ)ù¤Ž˜k¥+ØÒ'ŒêhhÀ.”»NIǪáo¡œ@$KÈ®ñ6Ê·…-t‘ì¹®^^à0Ò0âÊcÒŒÔëé{×HßsZiqåÅd¬ôñK”ÅÝææ Ù?¡“ Óº¡;~€‰Mwraiþ‘&´\É?ôhغ;ƒ5Šû¤¬º®óÀ°åSÁC* —4»¦f·fµ­´tT€ìÛ(žœTÈV´£øË§bŠ«Z"õÐÑ$Ê1ÏàÝ»w ^;!yâþ‹Y±?FeQVìÒ]¸W…I}pwŽY³O¨  Ø6ý©§K:µ¬o«VŠd‚eg²H¼}-ö·Ë¨ A™«yËSð—ÞtW‹N>õ+òxœÓ™è[(‘*VP-Àà}nñïM*N*æ3ì*¨–!UÅaOÅl£öÇÒÞÙ•4Q1Àa”¹61;“*æ œÎäÞ]bkN­êÎõ`^T+«þi7ú¼<³ª¿Aõï¡,~Š3 zFµtw~ú'd‚<"Ūîþ¿×Z'™ÕµPE@êqAuïT¶@Yÿâ"ÅÀl5ãU5;mÔ ðÊ|'šèO¿¸2ÖŸÿ{;t~ô¿õ›.þ½ æ8¨5 ÓJtÕâ.I{±Q¼\E­Z¿˜”öb º£Ò^ðÚù¡Ò²£†êÊ[¶˜:0ÇKûäñ+;]ÙÊ`íðå›%5Æ®ù.j H…±ÔüÉÝ5Ý“±%‘¹{¨9à”Åç ®N®Bß»šÖÛnXõãÅsöÊÿŒªN ýé¦_@/Ô–îí½¨‘ÏÁG–àï ÖGjËyz׬ÔM³æ€ ˆ£5 ßö&Jûà÷æ¦fHÚ-¥ 1KmÍÚõúZæbüQuÀ§(?.Æë»î`Öœ18mîN†Ü#b~Â+‡¡`j~43ãÿ(1ªšݸ¼¹:Y¤ÿ‹(/€ÈKÏÙi²üÓ·Šû›®›·˜á–>Þ~”÷­‹@ˆÞŽ,ÍÿK(ï²Ê_£ qJÂ*åŒÊ¦PN +Úãr'kkZ)==É®ÓÿõìA¹GX§+w‰Z*5ú¾.ðï¢>€WP¾"¬ÛÇÀ¤÷\n"S½5SK«–=¯6Ÿ€X´¿IoYfeÑ~Æ»˜ý?GMs(焵^ [Ì>ð,ÆGXrV·™Ëðç¨7`p@‹ë´Æ2äq" ºE¯B.6–€™õþ‡¨+`å¼°Þ7C!AKv ÿjxe®(á4,À*YP­‡Ö¢ýØáUvæücT°€2ßí2úÓþÆb_½þ§¨ÊZÿË#ì½í†y(§·}~—êOq2N‰j…<ñ4Æ\”ÿª(o#èö]’®Ÿóö&+°º«—j*‡ÙÿsÔ ð6Êâ§ð²'Ø,Yä_Íÿ_¢¢€Y”³ÂJËÛ*ù_¡N€ò¶JæŽØ* 顸k÷¿@å-÷\ Ý+aVB€WQ¾*¬\ï­f¥þ)*Ø‹ro úοÀ¼”Ów¾=8Ëhh½•ÐèqIþ!§û_bAåíÍ\>¸À7Cù_£:€òî†,Fm)Ôë¶}äÖ-ϦÂ?C½åyªìÜýß`Þrs74Û® í@4îC‡B!».µÙ0Ÿ•…ìÛ(ÄÄ¡†”w ÿ…â/ȉ³VÎâ§«ëÚçªõK?r¬½h•2¶7Ƚˆî¿úa­k›…‚nØšå|ïþ¡ô'm1u7ŸÊ—ÍSw'ScÁåúŽïÞ½{]ÈOá?ˆ9|äUûÿ íxeæ'êᇮÚwoøeY ¾u6ÌDùaòæ‚ÏQˆ‰Ó\#'U'rÓ»M &Áj¹ì·ä´¹ ¯:eH6›e?E~­t!™©µ¨M¯/pš ¦MnvzJ€½(s¹»¡:qŠâ(…/¡,¯7îØ¨hÎŽ¶ÔGÍ¿$²¥WŒÂ€WS(§Z@aj&tê(܇´í‹…ÂNàŒ¡ØâM”¹¼QV*÷¡…Cs²¦-ÍLPà6â0ÊÊt‚ŠY¡~¬ À³Rœ -¢mm¹ ‘ERL§W_S’‚¨Qî™{ê¾ ¢ÇÝK©1výPgÀ”„õ Äç’«ÿÛ¯_³ëEMÉi%è':ln½¨õê'¤´UtX^µ¨ñ…¦¤¸Z°±ò™[-*ˆDµÚ Œ}ÌÊPsÕ°³N¼ûL?¥—Ѓ©`§n †µ¦.DùcpÇ1+.G(5€x e®%Öñw­3¤„ÞÛKnü¢Ò¶nü¥Ö%Ž¿Ä»ôÍ®«…^ŽùѸ”swªÜÛ¨Ëmåt¹è˰T½„ÝTeD‘9î »U!RÕâtî w”»)̰•îÀ]Ì;ÀxÜóÞÂ:ãÀ ¨t!R L’¼>å~0ðoåm¿á P/ÊHÜ™JÎ’¾­;ÐVÔÏé© ÙÖœwUXjO§üRcdœLq.>Æ×WQ^•Veí5[Ý[iƒ ’??³OÔ¢s›E€˜8ذ¨:£Š¿‚ &Ùî¿ïÙ1ê·‹;…ŽÏ›ë;i•pèÓ‡Ør?w]1NG"ÛÓlC€·Q¾-­=EÞìÇG|®À+Ê<†A¼‡ò=i†á¹´ šAJš,ý 1%­u"ÆIH»¿œÂ¨Û#$- ¸SÒkÌ;ÊâéšýTZ)xµÂ[¨€HòáP»qe¾Nñ¨;¾ç!Zç‡j_!¾Eù­Ä&wÄÝÞs‹ìG @Íçˆ/Q~ɫü%â;”ßÅï4@vóˆïQ~/ÜèÏÃyÖ†*|ƒøåªt–4GÕË6«ÿBÝÔ[Çe QÙv¡Ü•|' ÙwSØ‹*)5è11ŽôBˉu»Q|,8Û¤Ó,.—›[Dkw ’ÚU-]…çEG½µ~A÷>Äç(??C+ðÊòvÚ¤  fb?ÊýR†œR´àíüu(œ;lC›àÊCÂ=@GaÎ.T¹8ª XW—œ¥j‚š^&ÝBöi 1%­ÆÖ@€quÉÞ®£nyl€â]r[“NÓu'Ü&5xœÕ1ƒ¾Y‹ê•Yk4ïC|†ò3a#?L«QËU…ì@sïesKÛÕÍš]Ÿ1±6ÉId Ð v¶&™§² <&¾ëBm²ÏPˆ)i5¨'bl’ç½ iFÕ¦±Нø4·È•.o-½Hv5ˆÖ îRY3¶2¼˜ ¯‡ìíèÅwØÙ¶Ø}$P½ñÊâMò†«é–«Mɬ{Ǭ•Kð%t+¬Mp-(tOŽ­ NSÙ†¼O”÷!û[bJZY¬cj‚Þá FÕæ°ÙÍIi‚Í*]„qÄSKcöçæ°5¡Ìåb²1—ÚhåÅÒ9l8ò_,Rck Àx˜{Ó1j¶€dìF™k "t‚; zô ö*õûM“eú[ÝÇÞ ‰Üo…® £ÌµË6C„ìúGP'0k/Ù 1ÅÝ‹,`[¤’%Ý|!û…˜’V£€5`<½ÈÖ±Þ@ï “¤.ä¬;«âP¨ñ"Êü'nØŽ±Eö_`ù¯£œÀ d׃8„²ø ïyÐâ┹Ú3[7ò6ÀÊ-h¿ý] 1%­Æc¬cZ\òO22궨øý øâÒ¡`¾N¬¬eú¯ ,ïj$kÑ6€WQ¾š<] ûkr ͵{£~$$ïQ,ö—ÂTª‚/‘çbâl1í¢êCNYù\U5´2k¾FÓ~}P,P‡ÿj«2¯Q@*Æ®$®_Ü(ivÑÒ½ëܶ…ß´–ñoåŠ1¾ï¤êDºÃoÿÜD€˜âª–H=Þ¡I”c/ÊM:õÞ»k”ʸ¨ø ^K_$©j¹’b¿áÿU$(a5ïÞW@û¬Vªe-è ðÎ4F–aÖôÔŠ|!¨é*†™-›Ûém»:Fþ„€X-ª®üå@Ò*Þk†+d>5?yº:ŒüºB›âbjlú¬¬ã)õ.®·ô¦°´ön­07)è#±˜€·Qf>'à#Ü^ßS+ûäýÒ·Ï2dÉ2-•¬¯{îÂ$»»…¦ 3ÌS˜ÈþÉô >«E‡¼Ð ÝÑȺ¿}÷Þ2«nAõƱVt LËwLmkK/êÞú?\ñ^ø¤ÖÖ ˜ƒmƒÏá-10{ Ò Ïê5È«u¡Æ¯ñE¼†x-é5Äcv¯!^ôMOœ2sDx ñ˜Ãõ&góãã“s3§«ÃHÀk  0ÜHIw<%Ÿ•u<­^ÃwK¯_^}\_/Ì.z SSZã5 §–˪;aÿð>Ǽ¤oE$àÐrBs½°á~G³`Ñ8ì ÆùdT¶—¾ÑßèÁ¿Ð.£^à·Qˆ‰³ÅUg[ñrȘ[zÄf·ßôNrþ"6ï Svðû=>ò©{è/w &±yi8„²ø2ë4ÙÛq.}ãðudú.†j1_Áo ¾Aù°æï~§WCüõ·5üƒžº]/PäÁà(u¬_@¡ƒž¡¹vnØš¦–m3¢€ÜþX‘1{âî‡ û6 źÅ6QuÜŽÁû<@L‚µÒ÷ó]—ëîüBwgL†ÃªTÍ؇rŸÄY„Zsv‚ˆ¼‡j2«´–#äE€bi£º­ú 0£^†â›€—Pæ:zÑx?iû{¦æ·h ÀË(_NÞ0ý 1ñU@¸Cz(Ïà?‹­ðp2ÌŃŸõÃÏÎùtð¨˜övCפèõ·šKóÍr!÷ÑÖ,;÷IÛÕÜRµ ë¹×fQ-ç>¸³ÏÜšS©þüÛ%ýýËÜš·v5],'§ó³ùÙÙ™œëçä*ª‘óϹgƒªþ=dÔ =ù«zU«Aéæñ>y©šÙÜ'–ùy[3& ¤dÃtˆVÒø`Ç6£zŸåwoÞ¬¼ cÕã„”¿övþƒóñËq¼ ßÞìéÑvjz+†ëéÆvà™W1KÿîÃxî>úÇMO!&5†׮:-£ÔúveíYˆZgÆ؇rZ³£!ùP¶gûQîOÞ(ý…˜Zmès;ûQæªÐ\Û7Ô²®†-ìœCKœÃª8Ã]BVì)Ä$É*ç=«0ZäÔëœawô“²d‹Â¦—hD{4ù··£_E‹°K*˜dÖ…¶ð襴¬GƒÏ.S(·GZùìXpÄ–Ã_¸6*‘•™QÍn´ A™H´’£;å0¿™Š öŽERV‚ìSbâ´Òý“ªy!ýš À¦@ÖŒú´):ÙÏFTÕE$3`Ê\\¨JGq:J¡~ÄA”åu0ôó¼‡2>ƒ(¯‡iK3³¸Œxeq¡›oY0+Dyöaq?8 ‚¦¼ýøú5»^½¨  ¼ù`šg¿ A«ŠéTYÛÕÊ© I•¶tËv<©¢©FjŒ]Ý>T0rZXÝ>Bv‹æ.w%ö£&ýJè¾§Ví„d³‘g#•¡¬HÏaDÛ {(“A̰ å¶ø²H=¨ŽH Ù|“5rxþ:cGM»AòG®Áì2~ïòA9þ±ƒÚ~“8«ã;@«ˆ×P¾&¬ÈyB>³÷,TE„½7À©K†ÿu·Ç«¨ŸÓS²­9ï¼8”é”ÿQjŒŒ“IŽ.ú*ª ²ÛÄ©ò0!{zÉÙq5¦Tõ~Ä3Ž\CŇQnUM¸im=„™¶²Ç¾yOÝk+Œ$¬ht!ö¡Ì5ØËë³A•AÄ«(s­D±öÙÔêݤ Ó›F/Z;‹obS¼òý°øVH€§È︼”ïwœlQùÕúo¡ÌµjÇÊåÛh¢ÛJè• äüê´º÷’Űrà×Dýjlü±ø#¨&à©õ?*F”SàP«Œ­õ?R˜9`+ý*øtœ=7O÷xOñ{kÀfŒGng¡R?b¢3Æ{hÀ–ÎA«ˆòfŒ«÷±6OÓjã(êø#Xm|€*žžÕFJ“Ö¯6Ž¡cJ‹Çއ˜9 ÐØšmûFÍV·Ã¶ë.`^A¸|þ±‚þ”y»î;À6Þâ{CÖQuÀñºH!&É#h»ß1êÇZ;CÞfB»›WLû)Ï¡TbȻт›âS·ÝR¬- Tº…øåÒZVäí9Èî*beñΗý†7ä?†øå‡Ò,Óî¿uÀc“<â,Ê³ÉØäâÊsâSÓ 1-³Ì#>Fù±4³tÕCøóXfñk”¿NÆ2‹ˆ¯Q~-l™K®eŒò>±4×­R ‡èëH ½Aüåï…› žR„G/üW/Ü%µIÚ¿% 7´-"ÐÀ»—ŒÊg}jx8‡2ߥ÷Ê Ò—ˆ«(¯ÆÏ³,65À¯PþJ‚¿—á°Ì׈¯Qæâ{Dñ#^)§ñå7É{{ý[ 1%­Fk ÀxÖIÎÁäŽQ³ Å÷ë»QæšOŠËðñ@™ÄK(óŽ ÝΩ/kGÚÜ@$(“ø;Èî2â”Å9²»w ñ.Êw¥¥3X†à±ÊCÄ<Êùd¬rqåÉÖ8x ÂâÊòÆÞ\â±Ë—ˆÏQ~žŒ]æWP^ïðYG]Èþ…˜âu'|zH½ôpÙ¿¢SÒj䱌iÔ…5JFÍ Çè@u›C3Í©õð6ãã®rA¨›ŠêXúg²U³ ÝÞñoÐÃáÿš Ï}3?dÊ÷ .£¼,lå;jã9ewRTËÅZYuàŤmM#ŒjN¡åÅ® „Ž[+ÞgcÒê!¢üa«cÃv,¢ „fœBœDY|àbŸ—LQiºq÷“fPžI¾k‚ìg)Ä”´ÓXÊë!•Hã”Ìà–ÑuÀ ˆP¾À£NhG=¸…À¨Ö¶Y9ð:èÕ‹8‚òHüœ¥xö0uRdìïPˆ)i5f±ŒgTïúœÁMeFõæ·€}Š@ O­®æuFÕ@µ`Z],«¶M8D¼‡ò=iãáyïñuÖɵDî­‘D¡Ó&l¬- m¯¢|5yº@ö×(Ä”´_` Ó)cïŒ:£j‘¨€òg¬Ó0VÔÏz¥V!eÍØvv‚øÕeÝÐêOŒy1kNµæ°24ïE\By)~†?F;>C™k8£d¿L!&I¥ïÞ¨/5„äܹX¦µP,b›gëz$ªìuRȾ„þ´ç…ëê×וUz‚ÆìA™kÖÃ/Ò§].#^GùºÄfáSBv½ˆC(Å3cæ±Ò Ä,ÊYiVºRLãœ9CR†Û¦-½˜ã±Ú â*Ê«ÉX-‡øÊâg‘˜›6dÿ5…˜ÕÈé6±4§fZ©@VxA%h"²ëRÊmúEÓpTïÑ-V¥Ÿúdð0‡rNXé;0loyA·‚ãx{ðü—ê8–¾Ys˜g¾K¨ ü]®6;ê\Q$ÕA‘4âÊcñS²K!>D™ï2ýée²·£wÙàu± 4z„ø%Ê_ k¶h;ªQR-—Gðâœ%¼ãœ*<|²g’úžG@,»ÐY‹@9ju¯eQÉŽ:¾I3pØ:…vÒÙhF-%Ô/¶pùýj €`¤¸cÚšá_ÙJûÖ”kÞyºÀ­$Œu/* —÷¢"ó,8·ƒô¢Ipñ%Ê-8)Ù¿¢PÎI™›* Åâ;jÖØüãÊs$7 XˆÒÐØ ¥­¬¥ÙÞÁnVâ€F)Ä Ê\k½lÄìn!Ž+õ ?ÂÌŽY.ùÍ>¨V.FYÄ%”¹fò4{R‚Çjü‡³¶\^£J놣m»Ärâþó°/ã?S•®–+¬…XAŽ>Qêó.ÁB øs‹1âNþü‘œQ­¨ àÊ-ž‚.×o¡,/Hd€ìo£|[ØBdÏí´¬š‘%/pWn¬ì©û¤flªe8ÀV"p™Å¿iÃÊ+Ðvñ Êâ÷º¹ûUêt¦àÅsi#ñKä6àe”å…'ˆädwñ ÊâÁ .xÓÀRI+1? Š\E$(“ä]ƒWÈŠå, -„­¢€òÂN )’½«ÈÚU´Úe^«±±²ëE¼ƒ²ø¡()GH@¥â,ʳҬu«˜N0,Œù'ŒÙ×Å`Qª1…r*~ã}…¤BÙï ]‘ÂÓ×Þ2Ï–Yc>n JÞC¤dAe—‹f¹V1p+ÉUÔ´JšU8ðhjé w—u‹+¬ùk:¸ô+gK>ç¯x'GÜÆbuOsg|Ü›5ûTƒ1 ¯QQÀÊ9a¥¿jòuìÃÎŽ¿èQ§¾8à]5>ð¬-syÞ`Þl¢«Q ,°^Û”§Á©ž¦5+ÜÆd-Â[TPl5Šþtþ@§ôÁEÓr§eU `ú®ªö—G@1Ü„eÔþj HokéŒty‚¸Œ²¼ÝÐÈn²[@|Žr Ç@ö+bTãjÝÙÚÜoœè• á>ŽØ § Ç·µeß’J„”{ß×fê«Tœ#7aFÅwqˆGÒ<÷ªÒYHù££ñ(¾•Üî° Îe4j<¼yJ R^„òS-ù^cjà[䫉lßÄd8YjL'Ö¾©¸<ðVªqÍ‹¢îÑ•ë{E­‰˜ÜN§û{åFˆ±ÝYØù¼½*-œ„–zh©¬Û¥šá]¯Ñبķ©muAT|‡j.hR•Î×)²5@<ŠoåÀÉé´o Âlóà|‘ðä&¿6CVŸm·#†£þ<Ýœnµ)b|8 yVݦdwÁ} ;ú¶#6Ï.¸oñEÂ+¥N ŠÙØ·°+Âà¾_õtGòìѳuÇ1ÌU™‰¢s 89¾iZ©¡Q™>„ü0ÝNAV_À>ØuGÞ ¼•jç «ß˜ Y/×6زޘ4¦)%ïŽ*›e)çÛ€‡ñ‡¬²Wg›Qàd©£hbEÅåw!ßUÖß¾Á,Ó„WcˆÃ=àTªqÞB‘K¾¬pÃU7ø°ù½5Ûin£?fYÿ$lL?ý$ÕrÃcLÆ$}åÑÞƒ,µ‹MÌš¨¸p²ú|óAïÎ/qƒ"÷O ?Q¦“3(ëƒ^Ó*F Ñ÷0Â4ätŒIîz2b3,@.tÞ†¨¸ËÀ!ÈCÊJ;:˜g³~Cú:Qk"BEà4d¹ñtls™K)!˜0Á­½K°QÂø¶öÞ÷h2ÓX1ôr6t,c;VM§õKnÃfÚÖÓ¢Ú$³Õ%±Òå‡)~3èï4÷·-bª–Õ¬åºÛµoM­Åxû„!?T®Å oÍ{˼0,‡dþ…ÈYéÝÕ?GB.ËBLmhë;ü#[ÑOј ÇS‰]€NÅÝÆwúao ¼f¹±·SÔ¢ˆÍmàSÈ껾o„/vS»°(¬Ç´4mäûVô®#¥t­ö;Øá=È aï`K„“Õƒ0ñÛp©üûÀÄ×Öå’™'À¸RŸŠ{œƒ¬>LöîÂmàDaø䯔©x‡oìú:¦šMÆßÎâê©ÑäECãŸùª÷P-mR¼©ˆO\É%å¼Å숊Þ†,·%†ÿt÷ pàAîïBVŸ7ØÿòÑ[¿ÀTƒeî‡,w">Î L‰Íà)Èñ@ßâS*ðð4äÓÊÊ™ð.[³>2®­íºä{Ý~Ü®V ÊìA‹M7 j\Äû pò¢2ÿÞ¾Gß•¬õªeº¬°á/üO@>¡Ìmš"n—qA¶·}ïñ“jˆâ¦FÄl­H ä ãÛcz@vdP…rª«2’#ƒ2¾HxrœwExy*®x²º Ð&ë²ac*qìƒøœf «§Ñ^£ÖaƳrßOs¹Í ‚¤V@„°rlö+{¯Þ ,ˆðäÀ­à‹„ç!«€Ëb£ ¿"íºAÝ,»êR< Be^ÎB–›êøIÕ”?ÑG˜N%vdFMßI«þiu‹òk™n€±îͬû×ØÛº·iDX™Dñ ðd¹#ã¡»F¾nnjübJk)¿[#ì…,u.L4\ƒªû ÷©*Ã|­>´ ¡üX~D¸å𜦠«oœºP¥† ïýScm›ßšáèÃi Mü5Ô„0¾~¾10i³$Š VnHÑvûN7,ÎÐ.¦œÚ°ä¯£„óç·Á)þ ”`Ñ»‰ÏX¦N›Áü^Ðï'„IÿM%ÌCÎÇÐ4ɤmÞ¸¿÷ÎOzfî_í²QvG©Âœÿxþ­X›æ¬ÿ‚ß-o¼[#{ ¸Ûnt´j\)Y®ñ%ƒ÷÷iO éÜhä}è½ü+ˆ¥„ëó·QÂYȳêõaÑÿlªÂ?·F\}ðGáúüÔáïÄZñùwQv€ñ4È™–is Ò>ùÕa¾m²†8@ñvú÷ÀŸ»ß]±._­:ßÕÅFß熇†²ì‡xÂ~ù+õùÑ5Í¡kvWld¼ªú–M³fÅXŽù ’ØÔ]Õ‚ÝÂUù Oßüèëjœ’îê µ>N©fÙvµf•3Ô–ýúyÇêó~dÜ^ã\ñ‡A‰á¢*„¯!¿V„¼j¹d·U ýQÏr†EªižÙtlD¸Vÿ5!Œ/Ê7g]šõ»É*Ì22Léy• ¢„ñuÖâŽõŸ ìãq¬#—Ù"ð|)E”®­W·:,$îFÿ)ØŽ@V_œ½|™Õm²ÖùaúwÜÏ ÌôÀŽ0¾iÁÃ[8B(æyŒï¿/ÎýðÃ]f8›?v?fþÏÀöŸÅúŽç\¿3Êïü÷ITK™¡l´çàŽefZpýß÷†!^¥ÿ Õ ŒoBÓ«’c|q•¼I£,B¸–*9âUúç¨Æ?µJw¡¥Æò×èGR)ÿ5XréU'I¡”Ï×ÀŸÃ“{ûÿ øÆ7I*îÉÿ[”`<žünH7è…‹MÓp{Åë—îÿXÿ‹X­`Ë ½6jàÕhÉÖà_‚õ¿Œµâ¶ðß¡ì¥m!´ØKzËöëMÛJ¨¸« ï¶¡â»8Ä#A#–Û~ÿuÊßM Å·òÛäöºèû¥Ìæ=ƒ6²ÕŽÀ» ì‡Ü/ú6è›vöcGàT¥B›ËþWw“{Ú7‹boí7ϰ½Vx›Û¿Á÷‚j–©FÃÆvµñ;6S²Lk]w(oU6lCô¼Cl ÃÝÏ’¾^]ëè‹iÑm–Ýr֘l£¶øOû^×tÓ1J:{Fý̶ZP*¢ôÝK¥Úÿq ç?=ɸ-¿Ïç±ëw‡5ì±°†MåišÊåý“pÞ¸óµfºÖcÍÑþœ·üa÷e쬖ß3?û†¹­ß¶·­Õ‡—:7»ø&âºÊ©Ï7Yî"y|$ùÐŽŠàOL¯ïàRcÚ8,¼ý×)?\ù·)…ð–¾ÿs¢ÔÅ¡ZÈÛ. Óùïýi üíò s¦›6î òüw)?aa²ÔކOY1Ì÷þ‡½¿k#d²½÷^àyÈRgïC¹8 y8Æ·qðüß¡AÆ7áx¥qîsÓ>_/3mh5ob8 üò7ÊL3-w/2­b™«ŒæÑ[/>ú?à]ÆsµVèiyZzmDé.ðäÉ´¿=“ÑGÚ¶¢;¼ YêV®Ð_.B~Øù&GÅ § O)ò¯É¹¯—ußë@t /(ÓºKA5¿”o³ÌdX¶v{6¯ê&ù‹<ÝS&Z?F3ûã”ê\àVM®»æŽV„Ý¿Où—ž…_:ž-ݾI²á^àdé oÓ/wÏANàÚœ“ <Yªën[¶çýrßuÙZoOüÕúWQË&Ê€ Õ›f·×î„wÿ#ÞÝÿÕíò1&õí_²u]«ØVD€K¥ý‡”ÂP@=ì§â»8T û»TéüÇ”áM€xTg¾£§Ó5˰mMü:÷ÿõöCîÍHº—´º³fÕ"ÞöŸ·×Fþ3ì"@5iïƒzjú*̓4r¯}1¯ÿ)å 1è”;\Ñxßë­Z9¢ä]Àc¥{©)†Š?Î!¹>ݳ©ÌàŸÿÕNÉØdØýí0ýmÿ£¿?Ríù&פâõ›öÚ¼™ž(¼µõš]x¯0ÌÂTµJÓ¬…9«¤U oôõjaÁY¯~÷õ”ñúiaÁ[Q-•JãÅñâøøXÁm ëšYðväÝËoû·TV•õàOoû¿`е™Lö*{êE™´#|yƒÕ¬OnØ9<ÁÊ3-Ç›õ¤h's”š~5??ó2ÌÀ8§ã] ”¨*õgþßönŠ_Þ¾y’Ãøf_{(Çؽ©õ͘nècÐuXö3ïÅLý¯ÿïoÿó?Ë´™ZWP¡×¯g¿-9åyÿê4¨§½°×qisÝÑm§¡ÉƒíåLÇPN«anjfÝn3[1*ú_‰Ù aÓ}ñ6òå|á«ìuE×lÝ·à²UòŽJùWþ¹c«…‚û¦ß­®»íFܬ»@—0$€$eá7GÅßäÐéÏ£(}=³ð(„Ò|P†RÄpÆÔÖÆ3»¡ÂC%¯*¾—ö}Û¡ò°û‡ K½™ÐR÷-iC [©Ø-ìI5;i¹W¡¤*¾C<1i¤Ç÷×Uתe/TAxò‘Ô²ª €<¼Z¨ø£â‰I-ƒS5½RÑL+—{d™eöÆUÍ´/ê5C«°i«ÜÏ!H{4E8y(F­9†S soA7IX„\L^kô sˆGRk_¼«-rŸa7T Å×rÔkÔâ8Ëòù¼øQ.3Dص=q+,’Ç”`Û€ Æºšµè˜"Œ©´{!Ku¡”ölå“·`t8Õ˜ðd)¥ELÓøÇ®# Þ ™ ´–ë ¶je½Æ&Yq®q0üåÛ¹9IÛ&–Çw!ßí5í[ªÛÚj˜ ¦Wƒkeåmù‹ÚT”•DCd“:¤JçPøs ßç›’ ·^h­¼ºe¹yœv·ûéF–x&›Ÿ°x ò¥ØÂ}irBiÑöE˜æ K‡#†P+B„i`r^½ye%TRàOlµ7}=¢X QÂ.íIʹ9Ä“4>¼ã ¶Úø·w©l9aƒj–Ý@¥I…Pßvu¥^sÖܲqËxç L§Bgðë¶^Ì ¾Á~¼=ÂaÈR¡²˜÷CY„!˜’²*~”Cºñú 3$¼ 9¾ :[Î"c¢2 ƒ<&CI,¡â²ÀqÈãêC©Æœp0BDn§ O%ïÃ/Á*Œ§+éyi¹ãK‡®®ä“BnY2&‹Ýr¡8Òd‰ËàqÈÇ;o²TÜAà È'”U3 ÿ®Û¬b¼×Ùã×½ÀèÕ'ïÆ…O޶L]\ÙÊ2#¯ç³t íOo|´r¶£W…Ì17áw¿S®ÈWå¼FS÷¨ùáÝu›ëvýš?ê5jR¦B%Ë´ZG„ý„hµ¸» Ã.|•¬ÖéÆknvVYF)¢é]% `<-Mï÷4—ã‘ǯ^-LL-ÌÌMwŠŠÍ‡^d/ðdáëq5Ÿâ;EÑæCÄor¸)SM쮲ŒÛ|†oúC°ug9®%‚Õ4ZmN<ÕW_©w»+×6—+º÷1PqdžŒS4sÃëb]ún¯J³+ܰËïŽýLÒ>ˆVëÚáµTœÝîE8ÝêØ8¥‘eËu?D  Ñ *4{c½êX¤VµÜ­wU7Ëv0ØoTóºÝ+JÂCƒë¨áä¥?xy¯Ã]ù–ljç{"~‘«ÀE™ lbwže(®t-ר5ûí;ƒ^ ,j´<Ż՗ǸÓ;·½áÇS­nÛ,#Hkê&äVðÿü¶¥ÛŠm‰^ä°¹°mé¶h["âC\†d*°‰ÝAJäV6„Û Oç6äÛÞ ´û›Y×6‡Æm“; )?䕱Í#™o ³¼®?wƒ‚á¡¡1Q£$Æg8ægd˜o¢•ñ|õ‡U–5\»¹fOèðl§ «Ï]>áæÁ½õ”¢0Ë *ýÈ’Ùcu¶E–ïšB§-h¶¸iñ&N>£™m­{K@Ô½7/HŽ;²Îo)ØÖÙPâr˜†œîül(w x²Ôâ}Ë+ÅÒ æÜ‚åá²;>©­êþ}AVÍX5(ÝeU«ê5;29çVJ¼üò7ÊÌQË.¢wÇ`룰íç`R„Jç~BKÝ¿TÖͨ„mg:‡Òò@©eúFü÷ˆ¥.ñH¶¹_J'²½QŒrC<ŠæãåBˤg\óyûÂí¤ÑeS 4·ó•H62ÈL™æÍ˵÷Bcô”eo4š€uc «R_7YF+Š3.‚%¡Úâ(ÿé#m9¯y‰géðM¦b­fôõê û5«h«ͲâÄð »ÙøãG÷廚¨È0È>‚üH¹"_·&ZlRE:=mK¬ºS­;ÁßÿB[…‡'îÜÏlÌ"H} ùkåÊ=n­ú­!,`¶™«Û2uê*$šÈ(è>†üX}ˆìöÌÎ5«9q^\ÚžÆÈ ÓÂkxN9ñ8¨ÇêaÄ2·ßK¾ïÚÄãþeÆ!2Þ "ËÏÑ g¬ÎWëef;å<݉+\‰Û Nxò}åJ̺Ú^Î\“ôwPÂYȳÊõY Í9ë2æÜ`¸,Ææ'PÂEÈ‹Ê5{Z³dü wz&Æ}m×þ¦aYþĹ¬Û¹†„ÜÌ|'ØÆà$'Áp2V¶âN’ó)1:É/‡Åßܰ$Œ9NÔ>yÂøÂÁ·;"œB}ßB~s4(âÝ?y{u$¼ §šÎDƒÃrÑà4¸Æ N´ðž£,‰× ZFv-£­Ug¼52–ÊŽŒ W€{™|çӬƖÙÿ (.Èk¾Mó©ø.Õ¦0”³ÿÑ´j/‡ÒçæZhü¾fÿ{ » ì‡Ü/3õ%’ýµ½¼³µ´ù¬¿”¶ˆV'<‰øß êsX¦>‘sÔë‹4…N‡z¼ÅŠÅª^2VŒRó@O3E›`ó–éèlZ«U,6óÁ({“ðš—eMÑ^zü‡Žå¹wkƒÖ ØÌuïÏ™¬b«zh©ÝKå¯ê–6ß;WjØUý™ýƒ¡$µû)ãŒ[têe#p½;DO‘Ùà:£¥.áì7USרí¦Že«vËYgÔqÐfnÝÊå†ïÜÚ6÷!“òÿ …óŸžc½ÚíÖ«=}¼ajäϪ^ïå8šGòXÝ6ÌUÆm}šz»¸8áFÊ«u·OóþT§[¸ÿÐ_m—RùO{ëfµ¾\1ì5½¼Ã|óàšãTí‰BÁX±óVm5__ð¸úq](W˹UÚXE;âúàÎZÒž¥z­’œýÁoïD¿-—”¼³íéúë­ý5NÒýÁ/ÿÁ/oiG¿üñãÇ|Ù²j¦ñ>_²Ö eë£Y±´rÁúägȶo^}z÷Úßáùë|µ¼òoýodáü§'øuê'X©Þa~ú'Sì‰aŽÎ½¹ZÿÊýRcÒˆ6À~ì5µVØœaêZÍGÙ›V.·èÂ¥óK3ÁÁž?„Ü;JÏ'Ÿ[õmÍlÌùNsG)éÏùüÐîâðøÓG¢D²lx,—+î,×±gnvñMÄ/x‰ó>Ûëp¿ÉûdõD)Ï3À!ž˜^ßÁ%÷;t¡ºøÄo©gÀ´¿™(uqˆG²µ+/Φü‹^”¿µk«<Ñû¼Ýƒ‚Üž§ü}ñ„§!ŸŽÑm‘&zï¤D‘ç°•çhy½²-/ô—»g Ÿ‰ñMDúxÃ' .»;+eü§â=$•xòùØ´×ßô•—¶ÕÛÀÇ¥¶“ˆÛê¡IޏíÀ1ÈÒ×múå+ÀÈ3ɘìà“T㻤{?*þ)‡xbªýVyÁg}Ënììܦ=0T|‡jÝ\—*9÷9À!Å·¢˜|ê!ì‡_„¹E^ð9ör{mä%ì"@5Ùt¼rM"+Ù«”öAÝF§=¼R55¼Â÷Ä#÷ÂG6›Ê þyj§dÌ1,Z§¿ýÞ¤ïPéßþ.üJ›¹ü9Mþ'or…?úþ/mf&|!.MV—Wÿ¼=!ø–ó„ùÏ&§Wýο·\5)xr^™¶TRð‡x$h„¦>€IF‘ú‚´à½©FV@qRƒ/H Þ¹/y•PñýâÙ^•¯ ƒ÷A–z7¡¥~Ybð8')ìÁ÷Ä“NÏím0󎫪‡O~òéÔÃ'ç²,$­*þ,‡xbRO ž«¶^¯h‚ºÙ—j¦?‘j¤Àé¸n‚Α0ä:š¤tCÏ)ñĤ›kjzÝ.­årO­òJMßðÓ·7ÏÌ{wÄrîN5S…ç KÅ*‹ÊÜÞ 5ncP@Å8T ú¿”ΖùÑCÅ×rÍ:óI2µõhè@ã?íÔ^wó~ØüŒ º(” ¶H€}ØYª%Õóùs ^À³¥ºŒðÀ?:};—‰¯q±Ò9e«)™ÛýtíÎF•n*eÒÓk†ýc:ËÒOÒƒ’¶NlÏ_¤Yn·uî^ïgë½°ïÞŽØz÷gÂ-H OA–êE =˜Y#< Y*&m]ÌÛ áàYÈrÑaKqŒ}?Ï+ùàYµ+c­m_˜Vª1´Š±+;âœ0AŽTŒýþýât¸£ö^4²+GD’e» ÜVµ¬Ša®Ò+«ifÙZ'‰n2L™78š„!³©’”÷1êO„ÉpY6ùqŠªoï׸‹ù)¹Ø"ýº­­†EúÑDdˆM*ÒÿL†XÁît@• qˆ'æÞ}×'AZ4zîæd¿Þ¾ ë¨KÛ —X1¦1ö¡t3ÊN‹60¢t˜‡,5¤ /v«,¶çÈåöÕËü\„ÒJÞƒ|/6%H#<”ÒÐ4ðd©Ð^\C“À9ÈsêP4I:?Ï!žØj‘$›kì«x™¼ÿ§â_qˆ'iA®åˆœË ~«-Ñ{—ÊVhúv­tB>(CÇ£±»ííœ\©×(CP#¥í_ü.øÎˆ\ð ä+Jî$Ì­®xû&&0W6(Áò!ðd)‹Ðà{A]j(O|‹ÀIÈ“²¼7ýòMàkȯ;ïn©¸«À¯ CÄ—x± ÀEÈ‹1V?Âßr©7ß$ïè¨ø·âIš7‚ŽÙß¶(Û“¤F4Ý@ußÛÝFi\£Ý޾êº_Ã,{7+˜«~VRo%4½èë%î}ÀiÈÓÊZp,ÊÞFÎL/Ó Wž ò⦛ù逘"Ð=4õ$|žCc8×*wÚžƒ}àh@°ÃOQC×X¹ÙýD¼^v@Ã4Öëë̬¯/{&jMÄñp²º5ݲ–]Cÿàß,¬ºÎÖ1ÖuVvÿÏ´i§“˜ÐÖq·U”dšÂy˜á-È·b3¹îÇ|Ί/&Eoð°?¥0OZj÷’íÔ,Ú;Zð.àaȇ•U¹ßO(2(:ô!G€§ Ç·2ÙGƒ¨X®[Nº¤âÏpˆ'iñìLW¼‡æá™±”ßûö@î‘aÌò¶0òVÜî–ú3.ªßÉ•´J©^¡}Åw™nÈäS%Ö½À{ã›méÆr†hww ïñRª3;#º»K0,BnJÑÖ‹\wÜÓྖœýc]«QòöVÍŠ'Ô"ºýÀĦÃÝé'Rú{|ùY2ú{œ…<›¼¯¢âŸsˆG‘ÆéÀvž´YŒh–†e*u,býãŠÝÆ=TüYå÷@*ѸŒ7`‡ú3Z¶dF“dÝ@õþlO£Û–YÙ`îˆQÿ ™þDLÈ{ÎÚŠVÒ'ü»ÈlÝÿÜË®-ú~‰}/ð1äÇÊjöÚ_M·«åÐqÓ¥¿-39yš¿š Íþ£è¹÷nµá+Òw—ë©f¦õë©–”òÝTÜ%`²úºûñAJ5ïK®ÅUê+‰:L¢”NAžê¼Ã¼ÂÇ#È’÷TTü4‡x’¦q o ÀÍÅÉ쑤Ò TŸ‹ëk£4üE³d­WëŽ?í%új¯û¥zø²\üÈz¬ÒgßI 2ãsÜs[Pâ`먇$6g— _꼇¤âŽÓÓÊj:Ôß BL.ó)…M á×ÛøÛ¹d´3œ€<‘Œv À»ï*kgoVbÈû’!PñÝJo? -µg©±)¤ì¨vcq›ö)Sñ]â‘ôís7Âth¿ŸÃx$RÞœƒŠ¹=öq+ÒÞ%IiQ7KlÎdÖy7KÅ^‚,5œQ ‘¨ü4ð2ä˱UßMÿ„Õ?8å‘OmkÛ¥â»8Tk»í»)…éÐø¥C<Šoå±wì…üT™ÐÞeÊ”,He†Aÿô…ìœ0±9€<ÐyCç08$*ÈòŸ¦sÂáË â3ÅÄïp òXlJ“œ)Gë"œ‚çºÞ: žGMTÔÙf oþ¢’§O ?‰O+rÅ´ýµx²ÔáV1­p»nù+µ2â÷ˆy6ë°ªÛxÜ–d».oÓmL^ñS® *‘÷B~Ÿ·<´¥Ÿœí§â¦€ñÍö ÇTüKñ(Òèõb¬ªŸ5MÔJnäoÇbÞÁ%®ãKk ¿M/L½Ì/äª5‹fg(7gt'/õË¥êûÕ_ºÂ¯‚ßöOžEÔdË|ó·aè„ç! L olÊ7¿‰já2å G¶ÌDºEÅ·¬cÔ]xT­ \õ.ÈT¯±£`WTÛÞšÛ– ·ðR—¼WŸp©{=;îd±­[9Ý1]°•Ì(×µŠííðŸÚàéCW¦÷xÓ@ÏëIJ>ØkV½R¦5§²Áêf0‘ã~¹n–Å÷¡ßñíÓÃø&iîÓK6ëoHjZa³N†Ù6ßäÏëd%V‚¸¡vê>äûÊuè7*•ºíø·‡«½wA„°r¿4©Ýøô—õOÕÚ÷®»£{²VÎÚ¹;ï2ì~i¬d.éŸ Û±3éüB™œa¾TwßúŠdmb÷rÌÔ?æuóCfð®ÿÙÄ„aºêrÞ• GeV62ïõ {2}¹˜Î¾5}y8e%­´¦—ß¹ÿñdÛï=Mÿ7¯^ÍM‡î:ú'ÇmoŸŸز÷¹‹/AŠ¥÷9¸ä×zÚpô[8ò;:-׌²P.á¡A k(rÌ‹2Ì7›hž½qÚŠëd¿ñ¤@~ LêMLù3j-VÙ ÉqpðЛ²rtš¦",7®å?LÂŒgr}ú­Y1Þ“ÝÒJŠwC™ˆíMÕ„wpÞ…M»Q 7Ò0…à ®3óÌi—¬9µ6P·¹Y½ý¥5˲õÖóå|ܯ8¸¯XØ€ðÕZêþ¥2¶vÓ2•öPEÿôøó%¥.ñHz­ªthœÞÍ¡ôÖÖ3uJÍ>‚”áu?J©˜…ï|ˆtëÄåðä8O"G¸u*®x:Õ¸NGQ;—æ˜=ËDð ðdõe“¡/¹ÀUtòP¢¬9ʯUÇdi}­7‰šÜc´ÆÇ0·î”ä|1“ㆀ»+kò0£5œÕ jŠØœ^…|56Mí*Ê('Ë!ž$”s ˜ƒœÛ†0ÊÏ 1Vß OB?{œIÅÖ ÷™T|‡j]øá/¥iŒhäO§^K$§PI€ñ¨'MCÇLúi­n®è•r:Û˜ˆŸdéje=-~§nF›0 9­>Y¼&³`Oßø@\õÏQv€ñ¨þäeּص¹.Ì.ÈK_¢™ƒAzŽUq½KçR-ùh0j¦Z'7B„' ŸØ£z‰²ŒÇ¨Ž]Þ¼­B˜Ú+Ð!T;Éú(Ð_rä5Èr¯ÄuýÊ0]]Þtgs_®íèZ™f:‚½6tÕÏ$ṅ àKÈm¤Sä~œkÌ>¿'ÜÁ‡0¾pþ¥ª¡6’¿HUŠ»3‰»‰#y¼EÙJmh±–ôOÚzµ¢‡Íp=Aq_ÇÚ^„Ca*¾‹CµPø¸*oRþ”Q€x$ßJ°ä6û™%·¶e3÷‡hÅló‚YcQ¬ûÑÂÌÛ‰[·ñ¯²‹aßBï„ÒØé›Ãz°¶|kwØ]¥G±™Š½Yd™â[·…’Dý4W…Ó2Uˆ×Ñ™ÚØEôZݱÚfç˦¶îv ÃÔµZpŽ`»ªZj÷Rù«zøh8¾w§Ôæ:«Â3SÞ |ÅÐL6S²L‹ôõZ«ê5Ñ;5;«§½Kúzu-1-u ïºŠ·v˜:–­J91uôgFŠƒY622šËŒí,²gnvñMÄ/tQ*öx}Àéæ“´+úη̪EëþŸ¾züD½ûÿ jø“Ô6uÿÁê¹§²ÝÿO`+AâuJ¿ºmU£A[ÕMÝíK¼P ¦¯º µé.9Ú²n}ð¾ùÁýªîoEC@À>ÒUþ¦Aï¿ñ–*õ²Î*Úê*moÑ«ºY¦ÅÎZÍЖݠ]Ô Äö.Dãˆø” Ôx;k ‡üàAwjFIÛQš‰Œ:£ñÈ¡³Šéßaꈈ:£ŽÃ™q7p(ßÉåŠ#CÅå5ø lcèð½oš Ü©¡ƒ·vhX1tXB —RÉ„í÷™œàvÓ>Ÿ§ µCÃâÑÃÌ%¨E¼ŽiŒë1Ø”©U6lÃ;-0]³l;—[ôóMxÑÃkï‚ÇâWþÆV±®%¾7Ç*¾ 3„ü°ó-ŒþÃKÀ)ÈSʆ,¾Ïƒ~ép²ÜY­Lµ§ºloHÛê÷À2är2¶z`2`-Áù5ð[È߯f¬Ï:d=c} ädecõþôK«À5ÈrÞkcý¨Õ¤Œ•øœ^‚,5®—2V°–àÜ <Yê¬Xè/wÓÓ7ÖU_¥riŸ•G‰´H)ñn¯33°×•²´½>ÎBžMÎ^}֜ǀ“©ÆUù1Ùkø²Tf1q{¾€üBÙ^/x±¶_Ùæ[ÊD/q› eާš©)åtYó…‡Òë…‘ŠÛ¿dëºV±­’K(ÍnÓL*¾‹C<’~¦K•ÎÏÝç‡xßJÿSÃú ™¦ÁæJÅ%õê!ì‡Ü›‘t/iugͪE¼ *¬²½6R]¨f#í}ÐÞ5 W¾žòWhû ÷ÅØnßë­Zضîuèa]ÕÔt²ŽïˆGÌn*3øÇDµS2æHßh_L¤¿¦¿íñtàw©æªÇù&פâõ›öÚ,LOÞºý¢]x¯0ÌÂTµJ[Ï sVI«ÞèëÕ‚³^ýîë)ãõÓ‚·!f´T* Ç‹ããc…je½°®™܉ÞõocÞõàOïú¿`£IºÍ`²WÙSïtÝ5½¼ÁjÖ§UÝž`e‹™–ãíZ ÖÜà3ÊóL¿šŸŸyf^œ·idÝã&»E¥þÌÿÛÞM!ËÛ7Or·ý÷µpü‡Ý›ÚÞŒéF;^^Ÿ@û‰™÷b¦þäÍâÿçÿû—OµZ°ŒÙýúÕâì·%'°;ï_æõtP—•]l/i:†’Z sS3ëv›ÙŠQÑ·øJÌNk ÄXÉÿ,ç óWÙ늮ٺoÃe«ä] Ú8…¿P WýÎMó âÆÝÊ„yÈyeÚÂoŠ/pˆG‚Fxz¬­gK#V¬w§üÑ6a/ä^R#S[Éì†û ÷%¯*¾ŸC<Û«òµû}¥ÞMh©û–貄°½C{ ‡=©ÐH')ìÁ÷Ä“NúÏ;¾u³ú <ùDºáÒé…ÝP—”n¨øSâ‰I7ÝDoŽÒË>è‚pò@z zEÂtÕIé…žcâ‰I/iG[5¼yÍ9ƒ-ú“Dq¦½¤3/w0m}[ð®ïb3++zɱټ7K#X™nèð ä'1êÒ1œJXŸÔ ýrW•&­K*þ‡x$u¹ÿKéD^b¶?üQ|-‡ƒéOY–ÏçÅïx; hü²Ý„ÚëéAÙ¶ÍÙª‹bC™P"–âöC–êÒÃI}¦Ý‚Ôðd©N$|°´®;kVØ|w‘jØÎlI“yB&짯qݤ^3Ý˺º°”I;-Û(ët)qÚ2u_̺£š²þÉýÊË·ss’öO•8|ùÝ6Øÿ!¼Èw”ý÷Âæ{;bÿ[ZÚŠÐðd©ŽZÔöƒÙ7¬Ùzòqes&Ûÿb«—²sÂÀ§¥zåˆh nk«aÑÀ~¼¤`t*o×_Ô¾¢ ¦"@<’Í«_•5¢C≹µïú$H‹¾ÓÍa[–ÁvÞ~Èûiƒ{¡é¶H³‘¬¬ÌüKks9a¯ÿmñ,)ôà#È”mn_©¢ÙÂÙÓŽÀæ¤ZF91 )¶p‘ž€˜ôûS §“'ˆ\t?{:ÒjgŠJébY …Ï@c«¾áèë6ØÁ6Žp©øcÊp•h à _´C˜ŠTNÙr¦p힇!”¡ê†Vê5oWH©KøP?ýjð"ä‹·YÎNÃ6U'e,Tü%ñ$MãÞ@€‰Ð÷”Åïã8“%ìÜ#m¾»Û¥ƒ#›Ò90ˬlÐáw ¾A‡,·º9Þ`~¥ÖX1ùò®‘ïC¾ßù®‘Š+@~ nà¢=#ÿC<ö2Ü0ª‘yjJ½ö¢Í›ŠÄ!ž¤iœÀ°3^æ 7Ø$HË&Ý@.¦“t6=íî@—®+’ u xò™ø¥êJ”^ßÅ!ÉvÙ¾¨$L‡\Ã~ãÙ‡stÊí{—éö+ò^R+E¡"Bµ(&tå?í(›3@™uÞyQqÇ€— «ÏùŠßœNå§—!_Ž­úû–¼”žVŠéöíl»T|‡jmwŸ*²„>ñH¾•àRÞ?þÌ¥¼ÆJæ’þɰ;“Îû7ôæKõšûƒvzpµý‰’“›úǼn~È Þm»Ð·äöV¯ÌÊÝêko¾Ö7ËJZiM/¿sÿãɶßm\ù;ðhjîÍÄÜìı»ŽþÉ©k|"{ûoFxòÑ×Jߨt›àAÜþ;m8zˆ=oÛ›)Þ¹36(hÄú*Çþª ûMÔØu›Íi«5Í\ÕÙºkFµbè5ÿÊñÁ;Ïò1äÇÊ,N-dŠƒ4,Ÿ"Á(–½a–j¥`ö²kÙþ­™ÍÃÞì£á¬a¯…h-¸Û¼å]>*Öâ6|{gÎX}‡’j9ö¬è-•u»T3ªt‚*Âí‚*¥}4}#þKb‰R‡j~û°*k)a2À¶Kb%ÍfòÍšáZ·Í´-[ª7–4ëÚIÄL w3ˆVá:ÔC8 yR¹ ÓÜ ÙFþ<ï¾6n7 ËóºšÉ-^óÛ¼hE2 O8 yZ¹"ª5«¤Û6íÉõø·z¢’µ^µLÊÛ‡±½ŸøÏ­â:ýšh%AœðäêÞÔwŠ,ØÆyM–ÑìÆ=zn•´ £ R6¦ÝDkqÌ ¦âò¦·<Ãwê5ÓfVÝ•,¶¬{Ümm]gu³ìÒ²åöœÙÂK;7A˜ðd©ÙøßçXŒ=´u=lFd^$Óü÷[Š‘w†Ü›:Ø•’˜>‰ÌŠªX[xFÑ™'oþû-Ѩj4ÂÕlD¦f›hï˳7âíçr²ÜäZ{äè›ÖL»J‹íb£ïLpò€²rN76ÀeYY_Ѩ«6WÉ? ê‹hÞ„,·º¦¯ýÁb¿Œ²†w ßIFYXWOM@žPVÖ:P±>Ú^åêI´Q»À_(Óò®®rõãF›¯Ùò¶¤¹AÈŠû™#aZyX;á䡸L+د jZDçð>äû7-*®|Y=ÌŸ…£ò§ Km -u¿;Îs4£6‡~ 6PHí¸1QêâPmŒwèKéDÚ(5—ƒâéÔ”e$nµG^e›x¤iý/“~Z«›+z…Îd™H&YÚîÒâG²¸€ŽŸ‚Kü… ìãyaÇ.oÞ0,Lmt¹ýתHphÚ0?°_3ožÝtãýªáhÿª«Ö@×âšÕ±”j/¢¦Ùq”`<š=|™¹¯ Un¸ˆÿÀCEZÏjú;w¬Nc>—Þê6‹á½ÛˆýÁ¿D;¾*>ƒ,wÓ@Ë[ŒÔ¯–8­; r'Ö·|£•Vû±Uî ª0á $ä¦Fo5wQv€Ò­&|¼¿¤ÒÖ«•мcC(î^¬ V8´ â»8T -¾øîŒ(:4ßÚË!Å©¦Øsqö4§§}îCõ„܆°¦}ÂÓqv·ièT0Áó(Kó;_aaN8n'þç¸zœ“©Gähjæ?2Å”øfÏý•°Ç†íÔkË%øó¦˜M6ãÍ9O7¦¢½[uòÛU¥ÐR»—Ê_Õ-'l,ß»Tj‹UéÉçV½Féþ¬•– «;JI‘éT;£"ñ #ÕQ×øí¦Že«vWGgÔq0ËŠ##¹\q¬¸³|G)cù œk>Iû ¾U6P-JJ P]zˆJ>Lí xà–x<ð6Ô#^Çôã¼åIÙ´V«XlÁ×"³Löº^Ó½¥ª×5Ý[ño¡½1n?³92À…{ìÚ(3Uw¬`‚Y/·Ä¢í?¶ê‹Æñ½w¥vÛYõ_™2ÝÈÁöÊ×ýÐÁЙÎédWç?Ö£à¶Gc‘Dgô%HtVa]£¢D§ÕHtF²lüN.w{xg¹‘¾JaDh©ŸIílÞšJ)ôøWtˆR‡jÓ.}ªt¥Wg)îÚëHÖZÚ¼vxòÅA²ÖNÃb¥×ÊQÞôËÝ@™Åø2"ˆ¹ „í°—¶¡£¢òÓ@¥cŸË©i®HÛê]àcÈR»¿Åm•rjú¬%8oC–ÚúË7€3g’1Ö+À'Ÿl“±>>ƒ,3u´_•LaO´ÞW!¯&æW¥²×Õ·À%ÈK±™ê+àäµdLuh@6b0UÑ€Êÿ9ð=ä÷ð«’¹ŠÉ—ž^JmJÿÚi¿*•«˜¸öCÒ¿*+ýb70Ú”þµSÆúØW©‡Ü¡Äý*•%Õ<^…Ã`±«l®bâ5 |Yªÿ‘2V¹\ÅÄu8Yjsiè/gO!Çw!õ–Æz ø ²úf /W±¨s% ³ÀyÈó°WÉ\Åš&ï\år×^`¼Î•~±˜ sñUêa|Î5³e®bÖÈ,jÒÄò ðdõMß}J¹ŠŸà­öAî‹Mq[å*~„Ò‚,8Û´›‡Šï⤟éR¥C^÷‡xߊb®âY¨‡°rlF²E®â`Ãàóíµ‘ç°‹Õl¤½’ÊULþ£Ø—Ú”«X¹ÝFç*~=¼P55¼À÷Ä#÷Âçò7•ü3‡j§dÌ‘¾Ñ>;Nû󘫸5¿ío—úC®âÏæ*Îþèÿ÷m†&«x1>]úÓ¨HVÌ_áû–s†Û¬X’vÜÉŠh„ž'üÜÔþd+îƒÜ'Ã*b,óÙŠCúÕ¤t²ß Ï6ë„Üm®¸²ÔË -õËÒ†,÷6””BÅáOLJ9ÚpÞÞPÒI ê‡OY|ò™ôç,Ùû—”~¨øs¶íÙPÔÏá†~äòIïK5óŸ„|2å$!w·{ÒÊ¡ç4‡x$•Ó>Â:ïk+†„>zù$—{\¯-f.÷æØngíå,æ.q?¨ÓÝifýh¢é55:™¾Aþâ—_*¿Û}R¹”ƒ,†qƒšXìës¹”÷srwòöõ™ÜÅ‚öÕ÷¥t¶LZ¼ŸCy>ü§GÛ;d“)óIŒ@–ëÄÔÞŸ¡7dRIÜ„^"þÙH'šAs‡ðý)Ɉ#”UÏç{ø-xá*¯{;š’ìâÂÇ*ÑIeùÜ¿ç!ŸW6›KdÆÞ~w/›¬«+J$[Y6¤sÈ¿ ÀûïoƒyÓJî,óîƒI÷uļ%“…÷¥šYOC–ŠDm»ú!äL(ÚLWFØhˆÀÙT3EvN+ÙËØ§È]5‘\úñ"¹ø^‘Ë~æçO¦s¹HG‘Îå}„ r}iŒF”eË\†U˪æ*±¤ r “¤àNqÊ I2»*½2òÜÂdø|?Jákk#ïA¸;\øºØâè¨,äPVÖF¾Çà?•Ê1ØÅa—lõãÉB~"å÷å¶e!©ÎBÎg ÉB.ØîmŸ Ò”35±à9ÈñÍ…J7#Ø´h#J—yÈRÓÞáÅn•oð<°¹ Ü¾zéšc% ïA¾›’¤‡Ii(8ºòò‹d44 œƒ<§îE³Qñó≭öŸÉ1Fø²ú\’°Ã¥â_qˆ'i|ÊxÇO„©HåDd_§ñH70$¯˜¢¿¿E7‚²š^Ñ?h¦?¹é^º ¶)E»L^¿`põòceÕN:³«zÉXÙðnðöãU÷^di°eU×Cêe:íî~Hן FǬ_’ÿoò¤zȪçWóÂ{¹ù4xjk˜÷Þçßð.꺉L/pò@ç]÷Y´‰³°ðîTKb(Y¯‘—PÉ1ñtÚuŸæ,!$+eR>“Š?Á!ž¤iðií:7õµGbÚë<,“°r ³`”ÚÂè¶ÆJkZM+¹›²D%Í¿<ÉN‘å êús×¹ëå,2fÈ$«ërubò;{½yQ·so“P©s;`^ÁŒ/f¨-ž3A¥\€".àû½)Ù- áJ¡Y)¥œ™Ö¥–åÅ•rx²ú,æÕFžœÌ:Özi±—Ù¸9¥$‘®úšáä)eª76/37HfÝ0¢%º‹´²!:4¹' ¹~´SýÛy®X.§JÒ ŸåOÒ4Þ@€êßhž\Ù¥”ïy Õû·Ýís©“àÓ›jæBìMIîá‹;Ý1:¼ùBç=#×¼ù¢²_g™/? §Z¿'|ùIç}Í%´(ÂàPÒSåw$•Æó‡x’¦‘ư3¾f¯ÌVš¶íªO‰hŸ‰¦-“}\3JkÌÙ¨zYç0Ý€[&Yd0¾)‘cöšV©´û,#Èì ´MÈ-IÅä;4ÖE]'ñ9 ¼ ù² /1×IÅr²¢¢ÄðãÀ¾‡× _‹M-ûƒu]­ä€£G“ÑÊuàä±mÒÊ8ðä[1jkì2Z¹Ÿj7¾Ÿj¹D¨“Z¹j\äÉR=w뮞¬—¸J&ÿíSàW®ÏTR£ÄÜn(*n1A6jÂÈRAZSäÎ$ÄØ¹M±šófaý&çß"Ìýгp£æÍÖŒåºY°ÙÞwBõ1Rðé‘ënOçr[q}ŠDä™ ­ Bxò‘?o‘ÍéGϦ&ž,L½œx9µ03q{8¦Ü´\;>Ž(èœ&3(¢VÉcîBÂ8&9ú“2ô7qÛÏìzµ*¾îͳyœjdUPíÂm¹îgù\¶Ü>Ê_¨ºC©¡üÐXÃ#4fSJt}eÛÌ–L*¼]Àøº°}DMØÍsó}1Þ •vn‡ñ¸ù^š­¸-Ag/¥26aFNqjž>ý=uG6¹FE—Ho³/ÕL4Öçc.1Óîe\"Ñ.rô‹2ô7qëw]âêª7äs$b žÔÈ”IMÚuŠ* Šà‹¹¦RzïŽAuïÈ,ùÄÖ³"nD| ÇTeÒ¢À Æx õª¶ª¹Fá°ªeÞ¬÷æ¼Â“OÎÁírŠi¶lÿRYwÜá_ØÎžJ{’Rp’ôø³˜¥.ñHÎnö})È)MÚwC<êÖ"y™Œ§_KÓALúi­n®è•²ëÊáØiØuÌiñKzfAŽ0 9½ /ŒÇøÂž]Þ¼¥‘ŽU+´ ^æŠ ÅŽ¬;¢§ ˜"nÓó¾© áêðY%8[P¬ÎéÿÝõþ |©!}ŸÞеZú‡ØUüJ×\ÐÍV.ŽÒE€?׃›3Šq©rªqù¦a~`¿fÞ€œÝtßvÕp´JÖ»Ú̵i¿ºÙÆÍ]Á¦nq3ŸwÂø–º_ Öƒ_¬‰£V/QÂW_mCãåÊŽ±ñ.on©,3´³[‘ _µ¬cJ4~â·›îÐH%öÚïQWÂ4ät‚K±±N;•eÁY6—emÇq¾ äˆ*–*v™«àe™ FºÖ¢¿Ä8Ý\bô´búÄøäÆ53þÆGæ%%mݱ‘ [â{kJ­²³Ê»@g»ô†þ‘Æõ~ãF0‹N½lg;DW‘!Lg4%ÂtVU]£wv˜:"B˜Î¨£?3ê†0c##¹ÜØèmôü§a†FFÇdžoy!Ì­;#·¾ÝYN.†¯ÀåæS.5ŽÏ†Íåí·–ÔRJ!p¡oÄ¿M„(uqˆGÒ%|ñ6‘(:?¤üK”¿€Ï…Ðî©T˽•ªAAz?MùW ^„|1F‡U1Ì÷þ‡½¿k㼤%(÷A>&KyÓ/wdãˈ8¤øS˜?á%È—”e¶±±Øª«†éÆ‹mv½ͺm˜«¢FMLÓÀyÈóÊŒ'3?Ö5ÛÈ –õu]3Ý0¶q´G˜øûR¼I:«îà\ŒhÞáEÆ·0Ý$i;µzÉ©×tÚd1­T²ê¦øé‰ŸÛÏRª›¦¶öË)ÿA´î§ Kmv‘ò>i Êà8äñXüýâ ðäG÷TÜeà4dõSâÁ8•ÿ8YêæÄ-Mµ§ºloHÛêÀÈ+ÉØêÉ€µçàO ÿ$6c®B^MÆXŸ× ¯Å`¬¢þŸÊ7€?‡üóëG­&e¬ZÊ_&¼Y*(2V°–àÜ <Y*¥Nè/wÓã­E«æ«ÔÃàÚO©1VëÍÝÞdÄ»½Ì@–;¶þ{])KÛëCà,äÙäìÕg-Áy 8 Y* ýåð9d©×âö:|Y*d댥7’°¼C9›·ˆ:^â64 ÊO9›•îT\ö…‡ÒÔ"·ÉÖuºª ¤äPZ ¸MÛ#©ø.ñHú™.U:4Uv€C<ŠoåÐ ýƒa²7Zµ*|²V‡n•ÒW…–Ú½¤ÕÝam-âUPa+Ûk +0ŠÕ ¤½Ú»&áÇ)|íöAѾ×7>Zµ°‰÷Uè°rò:YÅ÷Ä#÷Â'¬7•ü³†j§dÌ‘¾Ñ>L;LÛãÿèÀïÀìå|“kÒñúM{m§' oÝNÑ.¼'—R˜ªVi7YaŽ.Y*¼Ñ׫…g½úÝ×SÆë§…o~´T* Ç‹ããc…je½°®™…à¬A>xÙ¿ý¬y׃?m¼ìÿ‚ítûdßUöÔ»ÍÓñYŸ6Vusx‚•-fZŽ·c–>XsCÏ(×3ýj~~æe˜}qî¦qß/—Ä+ÐTêÏü¿íݰ¼}ó$wÛÿp_{øÆؽ©ñ͘n¬c˜«Mì'fÞ‹™ú“7¹Âýïÿ¾ÍÒº‚ ½~µ8ûmÉ ÏûW§ùC=T¦?Øo(ó`{QÓ1Õjš›Z·ÛÐVŒŠ¾ÅWbvCd9ñfò‘ó†ù«ìuE§Ã‘ž—­’——Àßöàöâ zÕïüÈ4¿ nÝ] L˜‡œW¦-üö¨ø‡x$h„æCùÜÔ×3 BXíNù£mÂ>È}2¬"F2f#ܦbwC:Ö¤t²ß Ï6ë„Üí~`?d©—Zê¾%­bha«¾{ ˆ=ÿBöm()…Š?Â!ž˜”r¸á¼qœ[P9{¡“O& œ½PaÈÈ5)åPñ§9Ä“rŽ6”ãò·L¡Ÿ}Ð áÈgÐOÐA†ÒHJ?ôœã°mç« ~ÚÇ÷SÜ4Ë-[ËÍØ¥zY¯YÞlçw–ÛYÏù7ær ÖrÝvØœ¶ZÓÌUÍ×+ŽQ­âyµ»¡AÂgŸ)¿Õ[ͼþ ‘yÿJFªÉsË0F_ xš¿ìuÎ$¿f@È]K›):†S ë\»¹r¹{H“6E*þ‡x$Mñè—Ò‰<}\lËß$ùZŽ4Ö+?eY>Ÿ?;Þ,×ß©½Ÿƒ(;À¶ (qך×ô³AQ„5‚æáûR’ÁI(«îÏ[Â1q¯'<š’ì ÃÇ4K뺳f…ÍÎp3“^/·+%Ù˵.³f„†œ☈dÓRcŸ"—|#¹“L„\¸¤Èe?ó®Ù§Ó „\W H§›‘—gòD·2›ó,¸8£”Ik5º!¨¦Óÿÿ<=(Îñpª1èhä·?¯Ì±ÀXMÏ›n×èjc…e|ΓÙAöfáí sû½|;7'ÌšóÙa—¿È¶EñŽd…vAîÚ†Ž„Ëİ;ÚSzx8wGÒóù˼ŽÏA–ò¤¢}É1¨èX¬­N¢/!R4až|q›ú’ãx„ñõ%ñºËàu"VÅ ‰¹KqÚ'A•pò2í}^¿(L†›Já‡ðÉ;ïÓ(œPÉyG ë¶¶6X"txò…Î÷|T\?ð"d©æ«Öó±ð§Ó^„¥ž#ìLnRÍ—ŠOsˆ'iÜ褑˜¬£‚Ã@1x‘mŒÆ4VZÓjZÉ¡£Nòïf™® 'ÑË–éOØ8V¬/òrð­ªÐ œ‚<¥¬ãK+FÍvr9«V=¶Á2‚4¹óOŠ-"T÷4Û%ê‰JxòÍÎ{F\âarVYaG³mi+¥T”>€ü FÕt)=ÎBŽsಅŠŸCV¸DÏÚm¥‘À9ÈsÊ<ÒîÿçÞ6”FQÝð‚uÿš„ua˹âëÛÃ4d¹~&Ìrv§.l8Ädxrmû ”E˜M5Ú¸²áˆ†=T~˜‡œï|Ø螊-@.$oPñCâIš—z«ƒaÏÆjŠ ½k)?Þ!ì‡Ü/ûô·Ñ:[±VÝ@§’e–YÙ`nÜ  <áäm$ˆ³åUØû;dæèžˆÑpòdç½ —Þ‡|_ÝËLÈ(æð!ä‡ñ ´(£‘§Àç¥znqL_@Þ†)F*~ŽC<ªcLY_ÑêgЬWënƒñ/†2õœm”uáË®ûÚö°c‰–LT2ÀÇT\ßX Û ì„/à!9àä‘ØÔ²÷ÉÔÜ¢p{&.Àû¥\¸^F ?PÖË^j6¢mš(<>†üX™Êc磅Æëõ[×]-ÀûÉ=ïz?[úmÿ䤷VDk’ñ­ÂÃÇåj":ýi^4,è*Íÿˆ™× jOÈm‹VÔé :Fum¬ng™½fÕ+e¶¬3A-§CÀKctδ§GFK™Tc—”s¦âÒÀøœ³ð6ŸãO§Çr×8ÍC–Bª…4T|C<1Õ¾g©±>RvpÎêFJu§ô ¨ø.ñH¶È=ªt¨îç0žs.G§”7qW ð{„cò\ÝiïnáÈ’Øœ2Ȭó΋Š;¼Y}ªKøF$Îqò3ß1Uß’DX)@.µ­m—ŠïâP­í¶ï¨¦C޼C<ªÁä›`9¸q7tÅÈýœV¿>øßh]¬ž/@§„jÁ$ÿ飊Æ”Õü#¦ì|4g šÛk)\!p'|ù‘r=î·ßdæ0å&ý]¢"d­C¼ ïCVŸ*´¼mfWõ’±â­ºL7vLà :œRœ«-õÐRY·K5£Jl#"•8’ÚV÷DÅwq¨æžî©Ò¡av‡m·ÝK¾•±7kº­7‹¯7Ž‹3ÿÚ?­¦ó Þó¢ÔǠıVYÕ³®v«áã&s×öõšéþéƒÎÖ6ª42· wØgäõ< õ l,oÍã`OŸg6ë•JÓí¸.¶n®§åªvmU3L—¹Ÿ?±ùwCøªHîL¼w±õ®TËÅÖ²ÑXÕ²*´Ãs­YWë#ý;9]ÏxXY¯j5º½Ýf+5ׇy*³íúzUæÎKî}Œ™r•aZm}Ú]æßúß4(nÓwE«qÔ § «ïTy üúQßE+1â„ ?Pï¯ù^Ø0›fŸg”›Òm,¶î/¤QUÚóˆÖá.xÆ×_?¦fá6åWs‹H±@=³W±’Ã)g“KÓÜzÔ·EéeÑšÜû{±úªÝ®‰L¢pBîò)I"A*¾?þL*>c%sIÿd¸}X&÷óòåKu÷…¯ØéÁAÖö'v/ÇLýc^7?dï¶¥ñ+ŽþÊ50ÊågoNæ—e%­´¦—ß¹ÿñdÛï6ý~4³05±øjqjâ»W¯^N ï:ú'ǵÔàÅJ&ü£·º˜‡,<Eߨ”ðï þMŽb t! Ó×Çç)ãûPqPÂ0 õ‚ õÆáÂ~ÈR.)üth0Ø?'A„N/B¾ØùF÷_$d™²’yl¹îv‡–¨Ù“KÀ`Í\~³ÏïéÎÀ£©¹7s³wâš¹y c'äN u~ææxëò ËïÜž¼!ÖW9öWeØo¢vÌ Ïh§%Å\®3qc6ñµ žÙmÈòwðþÞ›ëXLæú &úl'˜ë˜¨¹>ƒ!ìã1×óYV­æYqd,—+ŽŒz]?«•Ëâö<Å)Èêk@7(*.YæÝ4(ç<«›tlÙYsiÚÚºÎVêf‰ÚšpTÆkÛÕïXŽÊ¸ÛsbŒÊF(*«›ËZEs_Z™}Ðk6ÖÇhˆÑ\w_¦;Þ•ñS/@–0Øë w¦à÷ØOó–D¼Å‘¡Û1yª9¼Ìà¸Ï.;ï©Îo¾ß[$¡Õ‘Û¢‹Ø_çjq]¦›(žËÓ¢i£Ñ»ãçõjE§îVÜañ AVNQ«²ë†£-WtoLßh„šÍ>ênës‘kšþ^.ºÆ89â‰)ça"„ñ­½ û±—(:ÀxüØ£)rþ%Ãvÿš®9¤é`£ŒM™žlÇ(ùù¼5ôַꚇðLÞ+p•Šs×ÞšUôÖÿé¼Âüyó²ý^4X‰ÉÁÒ»ìÞ€,ÜóË8ؾ t=jqDԣݛí›2´7qêqc@7º-ìxx>£G“w<_¡Uã{¦»~œba7hr£§†þ‘ÏšõÑs>´šaÕmnš–þ*H}t ÕvÆ6UKTî@~ÐùY#*nøòÃäm‰ŠŸâ"ËÁI$æï‰¤ÅL²–Šë%jmf¾jÖBÈÝ¿”ôûzƒ¢”o{dÀÚ鈶§·)ß™(¿Éxë{7#ÎÕQ±ýûÕ•"ósˆ'&¯ÒØþ"q-1: ¼ùRç w˜†œVÖ‹ø¥Tþe w¤bÇa'yñ$ÙZ ÀÈòóJoa”C<ò­%<¹ÇÂâw¿\ª­Y¿Šâ‘•xM§!KíX /uIÿÑŒ(u ø²ú’åÑ”‚h?C4f€óÕ·W\lÙýéÅÁwX&BŠZÒ×Ð?áEÈ“kOT,^¬>E,Üž¨ø«≻=ÍÍK¶'âu¨4jjOTÚ5àdõ3D'½öÔ2¦$+m]Dj8Y}w_¿;¦ThMß@û„ýå‚)©Öô ¾Hx ò±ä[œC<1·¦^¿wªhëËeM´Aµ³Àë¯w¼AQi'€Èeý\¥Õ2 ^àfÀ½âÖˆhó"ŠƒÀyÈêWo¦9‡,ܸ¾…1öBîMgû½Feü"*¿Š’û ÷%?p¥âû9Ä“4ïðîT?§DÜOP$á^È{“wr?iC<1 XÏsç5²ì D9»Ÿ ÁBŒ­áì]ú ×–#ŠíÞ€¬>õ{Ž5¯ÿË´îÄÌͶ•oŸ@~¢ÌðÊç÷Õ Â¿‡¡JoiXÛAUã'y…S±à6ŽÂ©øQ;6 EÎz]4È!^ÀäFáTÚpŒÂ‰Æ 0¾Q8Û< /K0B™%× ¨ØKÀ«åÆ¿J ŠŠ¿Æ!žÓ ˆW8Yj@,Ô ¨´ëÀqÈãÊÊ9>jm^Dêp²zó:Ë]ƘʨáXapÞÙDF ߣ1QÉç «çŠשøóâIšÆOñîLxÔðEnã¨á]Æ;j¸9jØêŒd”·#޽À¥âw±a× ¼ YêvÕÖKÃY¦õLb–µ†é¢öLô²À9Èêóç·8)-­—Sq˜Éeñ$ÙX®3Õ·‰H½…AñÄ ZXô‚™mqĬœ€<Ññ€€J»¼ YýFÕÁ*±¹|Y=åßi~kHa´º < Y¾… 7)ú3À 冉JMŠ~è"‡xbnR]só‚ ‰~ù*ðd©…7¡†Dÿ^‡,7!Èz¦æ ~‰vøÖÑfE¥d€3ÕCj…‘ê*O¸ #U*öðpjÛFªTü;3RÝ77ÿî—EÑ^‰8žƒ,µî'Ô˜¨´àyÈêóq~Χå.˜Ö[XD›±¼œ¼­Íj f°¶=Íj Mim{›ÕšR€iV»çæ‹‚mj íˆð4d©ðA¨M­¡ž|FY+×¢çQ,âxøòÃd x 8“jÜ«›ô4ÿ„C<1ðaoÌâŸ<·‡,u@BÈš Ôˆðd©9†–w1ü™£J;xˆïIà3ÈR‹¡¥n5…Hc©3(yòlò^™ŠÎ!ž^À[Îd¸«³’nÕTü‡Òyä#^@ÙÏ1Rò(*ýs Ô´)}£Ÿ¾L€ï‹ã¥¥.ñHººã_J'r ó}ÊœÄÓ)[‰äQÁKP~¦›ÿôÆåËÁìLži•–¿#Yæ_œU¤¼H„×A’0¾;ý®º„5f×—m½qù”U3V Óeÿ´V7WôJäíc‘\Mð#¼ Y}£ð}—«w—˜ŸJ¡d™%]s9×t鵚U³Yî>}`;µzÉÁUŠ^å"¯!‰¬„â„÷!ßW®DšjI¯6íÚ†e­T+ëéÈ\œ‘D« G˜†œV&z—(Â0îåXmÙ0Ë™€ö÷ʼnÛCYöC–5ÿ2Zœ(ŽÓÅkð#XÆwûu¹Yƒï›â•£¶Î&'Ù0»Æ¸?oèZ]5Ì«¬ä]GÝŠïŒ »m÷‡ï¿Oæ‡ô?Ð{(e†Ç‹ùñ,Ë‹Wµ†êr³ŠU]¯ªûg·šã~ýJZÕp´ ê8<2œ«GÖÌFm¹;|÷ìÊ0Ïž#çƒt@®S™Zð¶‡Rʓ̊U[¯W47ÂuôÚŠVÒÅ­¢ž„9Èê[q^V—í ¢™qí—ýڿЋÝdÐvÖ÷¦“œid)o°þÉý[)“&ëqýSšÌ%=(^©¨áKÈ/•+õ}œ•Ê2n/´x ?¢V„ÜÙ;žз†Âµú„š¾‚üJ½ãclë}çâ¯äãëø~Òû¹„}ý•"ä4'îR‰²ŒÇ¥q]ªñ4ý¦0¯¿.„G ËMDòŸ>[·ÊÔ ºÜLÀOJAœŸgWBÝ¿B¹;Ý«Ó×°g—¢8©_ƒaä¾m°Á¿ˆ²”¶ÁÐb,éŸ4ºo9lxÿÅý¥XÍ_x(OÅwq¨6”?¦Jç/§ü©ŠñH¾•àúÞÙÏ\ßÛv¯ûCtûîæËwìÙ”Þ5X_¼b÷7°Bé^‡¾±éŠÝ\±»|k7)ª»}ŽÁ›`˜z‘õçS›—š“eßY–Éæ1í ¼9„jt™«Ùe™šEî{{ùÆ»™ÅOÕÍfh¼Î¦­õªeÒý¡óžÿ4LïÃ×®ú½”Ö ›óò/Ï·å_ÎoWÝBKí^*U·œ°ÉÑø^ªRkí¬nO>·ê5š2rõ5S²Lk]wjFÉÞQJÚ»¤¯W×SQW–í(í.E®§n“>–­J91}ìϲb.7<²³<Çž¹ÙÅ7¿ÐµP©‡RÓWÛ§ªDã·¾M6P-ŠêX¼Ð ù£„¿‚JŸ»ˆö´©çh°uàÑ3ìˆúi® §eªéŽÒ\?Á¦Ü¾cÃ6¼Ëæ_{IC»#¬íâ+Ö{Ä÷šøOû³lÌYczÙÊÕR§ž[k&ûƨèÞ6¯EJSSqÊ¢.µ³šJÀ¥ò8Ý|’v©ÕoW Ü¡.µ§™ QÑ«þ5T’Púš…±×©†WÍÒǯ Q¸yÿs\=ÎÉÔ#Òµ>šbϽ¬µ4âò\‹~ÚÚé¶´µ ~ÊÚY³l|0Êu÷3^öZ[´AÇVÑÑU|/R©!vVŸéÅf:(RÛëšµ¬-ÃÙ`sºãè5ÑVgõÙUvF[â­Îª««(:Îê´:"ÆYQÇÁ,¾uËiÝÚYn$¸€¯À¹æ“´;úë¾U6pÇÇcŠqÁß@%ÿFjÅcâqÁ߀Íõˆ×1ͼÁ–…©…LqM­Òö)‡ÍOÑ¿=v;˜zm™6ßÚ4 «™áS´¢m:¶*‰†ñ½K¥¶ØY•Æ4ñÚY%EÆQ‘x<ÐYußÞaꈈ:£7(ŽŒärűâÎò Ä|¶1ø›¾U6p‡Æ‡øŒÓŠÁßB5 ÏC>è(ô´éèRkÂéo² ˶8ò"PE.pº S¡Hõ¼¹8û¶™¿Ù rÀö#‰êãY˜­^¢ñA|/T©mvV¯G(¥8Mh ‘ÂŽROddÐåˆGÕÎ.ÑÀ ÓÚˆ :£C:3~;wKúð/þ)ý`÷¿i{v¿~µ8ûmÉ *îý«Ó|5=í¥ºçŽ M½Dô}ÿ;Û¿3==Qxë6vá½þÁ0 SÕ*-¼n¾ðÆuÔ…g½úÝ×SÆë§…/È-•JãÅñâøøXÁ‹Ôx mÒc·«Ç£¢oñ•PUw¦´¶ìImvP¹,[sœª=Q(¸M!oÕV Ñ­agÅ=ÜØ¦½šïð•ºÐ|bªÔÁ%÷;z6†mÓý˨ãßN)Œr6½±¾8ÞËßöoñH†›3‰Òù;0ø{R*ÉÄwEô'\‡àí;ê'¢èýÝ”|Ÿðb*î\÷.U ó}D/±¤%(÷A>&KyÓ/wdãˈ¸óñïÂü /A¾¤òÝôF˜Fs½Y3ËÚl¬ë¬æ¯Fëþ´¨MÑ4p²ú5ìYÇ/k¶;¦UsV¢5ô’SÙ`öºxg?î2AƯ•0 Y.ÕÀÖ­p¹"Õ ‰Ö4ðd©[¤Z¡OZ‚òàCÈci…ô‹#À9ÈñÝ-Ù ©¸pò| Ã`ÑÆE忾‚üª¦º*eª?åw„Éw>i ʽÀx; úÅn K%Öaü}_¡Æ×aìõ6¼H¼Û4ðäk°ÖòGikÎ@–ºKÊZ}Ò”G€¥¯ÐÝôË9àÈO’±ÖëÀ§Ÿ*[ë/¼±ýÍv%n³Eˆ:]âö ¨CÖ•9ž1̶HË_lá9¸à7 Ï@–º÷.´ÔýK¶®kÛŠ¿Piÿ0¥0ÒSÕQñ]ªêv«ÒùGîs€C<ŠoåñSÃú ™¦ÁæJÅbÃ4²oƒŽË®ë¦ã™ø »Æ^м{£U«:ËèŸÝ´=ã·Dkò¡SÂÇ+×ähóv9V¥Cväiè(bÿd¹«ÿb2ùî%­î¬YµÝRaÿt{-þŸÂÊT³øöuïšD×ôG)þ‚°r_Œ^è½¾ñÑ æŒ7•¼ ع?yü¾ ¹>1¸©ÌàŸ†j§dÌ‘¾Ñ>ÕF;LäúÀïÀìå|“kÒñúM{mc˜1/¬kf!¸¡!¼ìßþÖ¼ëÁŸ6^öÁVƒkísWÙSÝÔkšã:¶å V³>m¬êæð+[Ì´ï}°ævûQ®gúÕüüÌË0ûâÜMØ4…ðòGWԇݛߌé†o†¹ÚÔAs‰dêOþ·ß|õóõj³4é%’W±)³TÒŠü}YeQsAd9ñ&ò•ó„7®²×]³u߀ËV©Þ7h‡êBÁm2ï¼·-nÕ] Kr¢$eá7GÅßä°uÙb£ˆ[‡w§ü)ÂÈ=2Œ"d¦¶6 Û †Ü¬ž”>¨øCâÙF}{Ý<YêÅ„–ºoI«ZØjÚ(aÞÂ.é7¡¤*¾—C<1)ä]__×jy Åì…2B>š€b¸ÄhÞÌá®TËÌaRŠ¡âsˆ'&Å Tk†éäÔ³*!< ùtê úCÂY‘¤ÔCÏYñĤž¾šn{ x¶Œjº¡Žn˜Í~YÓTM7ÔAxò‰äUƒôy Ä“jŽx³yùuÍ©Ÿd´³Ÿ{N5±ãÚÙ ¡z²TƒUÓ†C<1içXÕWÛ~ª–ië2 :v„g!K5mA€RÏA>—¼‚è³óâ‰IAW¦­õuw|•§]ð˜&§Ãsn³²„O[÷@I„7!Kù s §S÷@I„!#÷¤FÅç8”’Â.~)È]¨\Í;;ÅײZrF˜ Zó¡ƒ"™ƒŒáVêÈ¥þHFÁl\o*ΑØ~æ]š*N§úR-]„"†¼â„úA¢¿µ…)êeÌÔòš·CWœÓað8œ ÍŸ-ÉékÜj[ʤ×WéZãjzPœÞP" ¹ K’ÞaÖ¸wùåÛ¹9qZ 2ÐúiaÌ©éf9¸×ZœŸTŠ{uªб|>r‘7’ 7ÄŒÑAu‰_D|…vAîê\oɃ9¤B–⻳®Txò°n }ûZKöCî—!JjËù«- CŽo°×½´®;kVØÕIèæd*ÎÑÞÙŒµüs7̲%ëCàz¨e‰[47øK›˜¸Es.¹ƒ½×›Ò´žÓ°aÂ^ÈR[xVñ/™_Ú‚ÙaàYÈñ¶°knlã0¬KegÍeÌQõþ$¹qæéxW,:– E΃ÀùÔ6‡"Ü›ØÖPä"ʰ3Žû@c²WÐE²”ï° @–Šcc FˆÉ1àIÈRS¯¢N›A;„ñ€†Áˆ³QÕýa%©*9VM§ÜriÛÑ̲V+S&©…Ÿ>‡ü|LÛRÞAS?ÄOž ÚVž†]HI®ËÅfíiX9áÈRSÙ¢Öž†‚C®c“4𾆵KY2‘9„<¸ –|/$ÀÎXrÛBƒ é\_IµŒ)·Ñ˜¯Àˆ ÏC–šö5æ+Ða|!¢1™‹À,d©à1´Ø}Ku[[ [R&„ƒ¬®òÆûE(Ê®ÂòÄ#Ù†®«Ò¹–ò'ðTÛ5Õ¤»1¥/HŽŽ¶t{!Ç7„Õ˜½±¾lUŒ+ëv©fxCŽ —°?ìXlYÖÏôrV¢‡Ó§c3ö½^fóˆbwCN!$eëTü ‡x’¦‘Á°3ÝÖž²xÞ‡A5¡ÒŽÅTØ1œ.IðéöAî“~Sío¨‡ÞP~¥ÖØFùå:¼Yª'‹hGgí¨¸~àEÈÕ XÔ‹PñŒC<ö"ƒh+„Ü &éæKŧ9Ä“4 n«u½È>mWmÍè‚,Õ‹‡ú‘=¶®3 FýÀȱy’®È›5#=9 <9¾e¤¹‰wJx²úxR؃Pñç8l»ÍµSä&Ú !7štÓ¥â/pˆ'iÜTy=ÈÆf Az´¹©Ø¹[1*-ÀÆåDrh:9Øó9Y{s"TÜ àÈ1د¨¡â/rˆ§ÓN$‡¦BÈ ³ä[/‰Cü¤ówøòS)Sá?Žû©øgâé´ÃöÍÚÃYȳÉ{:*þ9‡x’¦1‚7`‡®·ÿ_ÚhÊw²„ê·«ÒpÅZ5(]‹iíeû¸¦»n¸F™Þš7òæ‚d.¢¯–x÷@~ ¬áÓþQŠ5ÍÆ"¢a–*õ²øâ´MxòéÎ7¿Q®Øm< NÅŸåPþ4¸q¼ãk~„©Hå”-'ì@ë-4³[±4¹v/0°R¯ùí«¶ê]\#œUùšáEÈ;o³· B™%o,Tü%·iªè6Þ@€šov‰Æéw`·„ý©¸ç›º}ƒÏŒ&JͶ™ÁàÈW”"õ–o¥i+Y:ÊÄ£æ*ˆÌMàä¡Î‡¢TÜU`r1ùP4•ˆ§Ó~åZ!ˆ%Ý ©øQñ$Mco Àí§¡Sj‚Ìî¦|7B¨¾Ÿ¦Ñ‚Æ>h5ƒ®aÍ¹Ü 2Ë5sûLÓ°×ü‹ i’ n»=¨åv¢îGfÉ¿LÙbn$[ªÓí Ì2uQó§zõ ù§7ÿ»P2á;Èï’·;*þgâIšÆ=¼;´Ä?£%ÈmFO¨¾dÓ6NŸ“¨Õ™~àqÈñ£´ÚIè†ðäÉ› ’Cù;“”hÜǰCóÞq=Aj`¨„ñfF½Í¼Ú'c½¾Î*º¹ê¬[|+†égŒ§ñÎø2«îT뎨…s̤¦ OuÞÂ@„ ?JÞ´¨øiñ$Mã!Þ@€ K輚 ³)5¡zX²7ž…q"Ó < YêÈðë)ùÓ|¢c¢txòÕÎq¨¸cÀk¯)ÛñŠ%tsx²Ü¿¡û°›g+e4SN@žHF37w!ßM~ôIÅßãO§Ýü”¯C¹ &iÿJÅßçOLµïYjL6†”}-ÕèÝ}»Ò+ â»8Ä#Ù.ϨҡŽv?‡ñ\wtJyæŒ;s–lDÑ,eü¹3ºÔ‹²¡xÛHÄs:?öuàáä¡Î;3*î°Y}*­—•,ÓÑ Ó0W'D ‰¨ ïC–jÚ[Q/YúÊŠQ2šü‹Ò6„nà䨯giðA§pųyާhA ©ÆŽ»N÷3he3©– RI;ÈØt€EiÛîȵO`9„ý)Õ%‡vZW[­(ÓŒ€Yƒ±¨==ÁŽCï¼== r«jIÛ›C<1ÛÓ>Û)×tQcz "Œ®íB›1Õ´ VôO˜…ß¡ûH+z Ë!ä¶ñ'mET|žC<1[Ñ~§–—Ù6ÿ ¶Cع/6;ºIväÔ4Ó¦3øzٻ˖i+Ž^cÕšEažwèÝdÏDŠÞ…,5*3ªg0$Bn.>i£¢â'9ijQõ®Ž£—ó´J]ØCÍšfñãÝ)É0<”Ú¹Våe>QQS"†'€EÈRqƒ˜)ÍÂ|‡!'oJTü‡xb6%™Õç°ÂøTom^IÅì¼JN|{㈚žÃ†·1j¢âosØ™¨é`y%$‚_À”@>›Y])ë«5]·=¯ä ”06%@ÓcÀ[¥4+fP/`D/R-Û¹’6(*þ‡xb6(©C‡s0Âø7h¬y›añŒÉó[Ë×Ðê¶ÛóQm÷Ϣ÷B~¨¬âƒ¸²ˆîä$4;›O)t3õ9®ØmÌÚFÅ÷rˆ'¤UD-ý%¬›0þ¾ø€×庬DÍå%^áqÈ ìîx !<ùDòæBÅŸäP-#V”¹tf™Â!Ar¯`%¯RqÜŸÖîoú+‚­y£%rs{`k]ô­¾Â÷' K-3¶žŒµõªF¹†™ëufë5ÃõÝ5 lJ÷.¼†Ý^‚|©ó¦ÿŠ+6 9¼éSñ—9ijé¨åíëZM=•ô ž°?÷\ïI³¾îÚO)ëE ó$€È™Î[ÐW°ÂAȃÉ[ƒC<1Õ~ß’7Rî4ª¼Ü¦Õä˜}€x$ÐU:‹)?ø â[y•Ž¿ž 3==3ÿtif×xzy¿lT-Þ@Ÿ„!?T®ÅÝf=/Î÷–ý©Ô†³æöx^%ýõ·6ËZ…f4Ê̪‰Và-Hr¯+p¨nœ„_é×`A¨™‡–zh‰»|5Â,©Äo¶·±~ƒ Zc= JçÛ”?$MÓ-n¹ŽÜNñ]Êïd¿Ku&ýzÄvŠï`„ñÝËq6rƒ{ÖVSÌKˆµÀx³6[ÞÕåwhW„Áb¢ú1ÿD÷Ëœ¯[7øÜ†›‹Ì·U‰ŸàÕ>€ü@¹S%7,7lÇI°ºYÖ}%¬mT-ÝH uÓZvcù.ý67ìv&¢ÕøÔ ¹}wŠÕ˜0ʆeo˜%wôa”ÀU,­l˜«vž½!UMÏ4_?ûhÕÞËØÒ8rç´ù?Òê«´5/˜ùòïÆ^Þ`¥šeÛ9Û_DtG~Ú½¦­úS¯ôŲ^Õ]µ™Žh=~wÂG)×ãq0eçÅù‘¥ns®yæe1­T²ê®½M¾Õ¨„ÆOÁžÛ§X“qª€V&ûáGÞ†éèµ’^u<ãgUW;ÆreÃOëhGæ-Šâþ| Ç!Ç·Œ²ßíùÍvñlêߨ´Ÿ¥¶µ×§â»8Tëõ{¾”Nd«¥üN.@´Ãô±lUʉé£/3<˜e#Ãã¹ÜÈèíå?öÌÍ.¾‰ø…®…rHm”Àùæ“´2}Ël ZÈÔ±ààȳWss¯g§&¾›šŸš()†êJ˜†œN0DÈ<³*• ¶¸et0$P}.sõº,S¯HŸ52Åì*Å9ÇõÝVMÃòõ3kp«n7Ó¼¼äíâ”hÃŽ­¢A|oN©AvV1URd`ЉÕÑîâØí¦ˆÀ 3úèËÝÀÀŽr¹â­‘å? ø (í_ -õà’û½¦›¥Ð”Šo©jJ! oôÓ7zñ ûâx/D©‹C<’®K•Î)o»Dñ(Ú~ÿSÃú ™¦ÁæJÅ%Uà 'ì‡Ücç©Õ5«ñ6¨0[ÅnÔmĆ]¨f#펹§¹'W—“ò÷žbÅMîÄch©û—Üàù£U sÑ”Ax ò±äCÅçÜ ÷¼›Ê þ©£Ú)› óeô·Ãô·=þüüHµç›\“~ˆ×oÚkójz¢ðÖØ…÷úÃ,LU«ÝFaÎ*i•Â7Ò*,8ëÕ゙2^?-,x´ÑR©4*æÁŸ6^t0ÖamÖ’½Êžê¦^ó6ú,o°šõicU7‡'XÙb¦å0½l8ôÁš™ä¡{úÕüüÌË0Ûâü ŸË2Ðs ¥ÔŸùÛ»)¼yûæI׾ߵqç?ìÞÔðfÌ’E{šï?1ó^ÌÔÿzöÑȉÿ×þ6+ë *ôúÕâì·%'0:ï_æõ´¶Ÿ"ËŽn; ]l/i:†’Z­rSëvÛØŠQÑ·øJ̈¬"Ç!žÀJþ9Gxã*{]Ñ5wàëÙpÙ*yë»þNÈRï&´Ô}KZÅÐÂÆ,{ ‡=©Ð 7)ìÁ÷Ä“Nú¯M×¥Ô+š nöB„' ŸH@7{¡“O&¯*þ‡xbÒÍ@ ›æ­‚êÙ•ž†|:õ#aH2¥¤ÔCÏYÛ’)ÅÕtªþÑJAÝtCÝ 7nè£{{›N7šK€ñ6á7®b¼mÙ-[¶´K:w®É?É ÈŸ»€Ô»›úé„E û¡2ÂïI©Š¿Ë!IõÿR:‘»Ã€K€mwÃJ¾–Ãhâ™OY–ÏçÅ7Ïõ@C=ÿ@¶óV{=ÜI¡°y4AuQÄ.àEØÒ!è°²T Nê3‘ͤ€§ Kù§ðÑÙÒºî¬YaÓKܑðü‡’&Ó•¶"px²\ïÙRcŸ"•Dr fɹØO‘Ë~æíà§Ã Ñx‡¬êm˜Ÿi™M²—oçæÄiq£”½KË_Œ—¥ÅQ‰‘Ö]ÆÈ׸¬J™t©L·cÛ¥Ê:ár)üÿ¯­YÚ²MÒ x ¸ ýa‡”%kpˆ±Ò/u4—¡Hi£~N˜ ü®‡\ì¯ê³Äû[n)‚ŸæJ¼¿=޲ÜQý-6ãïo{>?ZÝ‚×ð,d©G´Ë= †ìëN®Ë%ç _ئ.—ÆØå&éµO5áñÚ\@·ý^››™Ù^¯}…n§×æÚþÎóÚä ;0JúÌ$Ö¤€‰Ž’ÎC=çSÛµý£¤ x„¿Ÿ.û"Xî—Í@ƒpÛ]ö%¸”Úf—Fá„J.;´Ø}Ku[[ ›þ<€².§T]4ÿ©ðôçeT;À.Ùê{=ÅqU:W`›’¶Ñ­:®]¢)ï)™a7‡x$»¬mtbHyOÄz€ç Ëþ3‘më* ‹pò`lm+òf)*î<ðdõm!â»à©ü›À,ällJùüðtK½ŒïA¾—Œ^rÀIÈ“êFV"Q'Q¸|ùQ|íeëtK½Ì_A~•Œ^¦¯!¿N¾+¢â¿â"‡©”.\²Ì ™@•–Q?èþ½K+ZIdþm†Ë­We9Â;̯ùöàáCÈ•kѳ¬{±«^½ëø:8r‹x±ÙTÄMµW¹bCn÷Kʦ¨øCÊÇJ42xÆ7'LE*§l…fe¥¾¸’{A0œi¿cb¥^s[P­q™M·³¹\uºZÕ¿•Ño`ܽŒî—_+ñï>…üTúµ¶{ñ-NÎFzpbòøòëÎ{p*îð+ÈꮳKøÎ<*¸yQ™Ç~»^ZcšpPÌm V\Ü 3}ºw#§¨…™~à1ÈÇ:o!TÜàqÈÇ•5#“#œž†,7ᦕޚf–­õšŠâOÒ4nâ Ø™©û=´]D5ˆn`È=Ñ‚QÃîöÎFc|z}ûbs$=ÍüQ¢^„^€,µø)æE¸ü°Þ´s¿ª,:ààü¦‡x:íE¸ƒma9]’j¾T|šC;"TŠqÅ|ûWìPª%íT©ø"‡x’¦1Ž7`‡&%6ÓÀµ¨>™ØÕÆh˜š¶¿çÓ»¥Ý¦$^~ ^ÓzÍÔËyöÊ”qëÄ»xò}é7{¡]ÑLÎm¼Æ{d_çg”#Z{ع_ÝÜeÞÂañÄÕÑžaÑ~Œ¨œž,u„X?FÅž…¬¾™û¼7TEÇpÝfÓ›íJxwQ;ää$Möp²úf4)“½Ï!žØL¶².e²3Àg¥¦ÔÄMöpòlò]&ÿœC<ªÁ5œG5½nÓNÊ•¬­zM(ˆ ÙܼB[ºãëÞC¥`K®-Q±CÀQȣɷ%*~ŒC<1µ¥}þaÑÖDdî§ Ou¾5qs¸Þ×ñ”ìW¥ÖDÅOsˆG‘ƽ ŧ]Ò(ûí½fcÔÖÆZš–h ¸«i<ÝíJIî•–kZÜDnŒ'¡„›ÖÝ6ÄSÓÚœ¿m\D§x r›©¨¸nàqÈꛩn42×.š+QîçÝ»ÉÊEm˜xžH5–4<ù2ßôgÛš¨•qí+,çH§Û{x²Ôê„Z[£â3≩­íõÎ6Š64âRH5O‹|ìtC£âÁ”œz`q¤ÑÐöZ´=1à äeZ§KÈöN¼dé++FÉÐMG¸M¢éž†|:¹fDÅž^€,7›¬ÔŒ¨ø‹≭ËÂÙ`Ñ–Dt®¥š ®¥$7”ˆµ$*ŽóóÛß’ˆNø ÕX|W¤uÉÕU©;”>¼I Ò¼VD¨´¹,´Ôý^K2~5*JVêÅÚð-®Øà„òeõ6,jTüñ$MãÞ@€™FßõQÖÔz¨v*ùJnÝðv¤HêN5.ŒŒÉíJ­%•“Àç`©¸#Àøæ`ó,SÖW´zÅl8ßÕŠµ¬U¼…šQb¹\𑨥×sÀYÈê“p×*”!À4vÕ5 61Þÿ=åÛ‡‡× _‹/N6Ù'fFQЏ ™¨ä€EÈRË~–æ¾Áåˆb¯‡!'qQñ#â‰I!ûÖ5§fDí6ŽlüDfø²T„!Öø©¸QàCÈ“﹦ÂEî¬tµf}2Ö gƒ-ëÎG]7½3Œr]«ØY?M¶ éG¾ö=,@.¨ØQhw»ÿã;ãçl’Em•jãÄj È c2¨=KúfD©CÀIÈ1,W‰ÚŸCù媖O?º†.j&ÓPî4þ}WJqN2<*µ¢sˆCé#çBöA¥u{S é^Z§$h÷fnÐIŠeÚGq5MxÇ;·óÍë«ûRqöÕG5;_±Vé¤GFœœ|³ðvF´Ÿ f9àÈ ôTÜuàCÈ•õ¶—Žºˆ¶m¢0œ,7«µU{Úmd.Ø¢s$‘:Ç-Ô¢£„ PÖÌ:šÀLÝX][¶ê5[xrèôÏ@–Ìlíõ†$tÄ8Ä“€ŽÎ/A–š—iÝ®Ic(ÎëIh( ‚<¿†–%44Î!ž4TÞ‚,uX­íÒAê‰Dq¸ œL5¶þ¨úZ™þpš%T[Ö ³c\¸ìö‡O¦æ…;D¢vxòÅÎwˆ32ÈLYIg™^±u/̤Ÿ• o¢b}Ôk¢VDÄ.ïBV¿Ùóš;¶ÕÌÕzE£d>5‡ehädÕV6´U:¢0HÓ&‚\ŸÀ´ãŸ"‰œ°Œ´)â‘ãO§mŠŠ»ÌCV_ü8Ê´:0R²ôZ‰†ÂË¢¶D„ À)ÈrÃó0ýâÜÀ ¨ªè>¥nàäΫê)¬”ëþU5DãýƒV©{)vir´‚ù‡}è†K™(³\wDõHl§!ËmsЧ=ƒÂ”^SÞ3(Œ0¾l2çYI3iϾ½±¾®»~²4˜g‹ºÎ´Š-|Ô‰¨^…|56Mu?öïJʃ“ýRÛBKí^²šE9˜C ¾ƒ,·c²Å>hGh" ãÀ Èr'ÁC'ûf>iëÕŠðµð³0‘Y|ÿ@Jr5KT3³h>„G QÖŒð ]*~€C<±9’ˆåç‡\íãë„g;©øc≩ö=K Cʾ‚j?ʯ9+½*¾‹C<’Ír*)¿g 0žìˆG§”/àžƒŠæ”-6´_I¯ÑânZ4 6g€ 2ë|0‡¶Bx ²ú´LWd–­”’^†,µ‹%´Ô}KP†Õÿ `>µ­m—ŠïâP­í¶_Ø&LçeÊŸ÷â[yÒr­yÊ&—ã¶$gü î§þV‰Aì• €—WW´.¯ UBn­X—«ÈîëRåòûfKz_Qª¯A0¸•Y*â -õÐ’¿ìÝ£¡t*ñ«ím _ÁüTk ¿Q¥³ò'î”?®ËúèÍšnë0mZf—U6غ®™ÞÕu[.A÷×è©Ë³õªÛ†áíB‹Ð(á#È”ë1Í] í’³L—±±®çrþ­ú.õU—½w‚°®•ÖZ³c‹_±ðä ¹ueÅŠÜ®›†Cíת•õ½ýÒš^zßt;¹\h‹Ï² Æ„Á†Qù£´›¦‘ø¤©¢Qz|Yê8¥XBÅݾ€üBYŸ»…C"0| ù¥2‘+³+LceceE¯Ñýs¾†Z¯ð5¢¯a8„ÁàCn¯m˜Œ(MóÚ†)Ê­›À ÈRób†DÅ]Þ…¬>Û/žK†Ê¿œ„,·v~šÁ¿6[J+/ Kµ3q­ÜÎAž‹A+¢­›ÊŸ¾„,׺·:i³o©‘Èá_—/öò÷ÌÍ.†ÕžJí>Ÿô6áÚÄ’eÚ†íxÇ ( ©`·ó·j^0c86ȸݪ¨‰úà dõ“\)£u…Œu˜[Ÿ’µ¾n™Y¦çWóYöqM÷SÑP\ãúñuݤpƬTtsÕ¡ÿB´&ßBýߦZ¶®(ÖdÜ0ízpjƶ›!MNë%Rž“ï$¿_ÂqÈãÉ~‚¢Œg¬rhv¥¡jQF߃a|)/4 Ž,³EÃt”Wãx^€|agŸDé*pòPç{'*î"°Yê@Ë›8…›’ë¦7b`8"ì(ˆÕ0pò¬2»£Í«1l>ÏñŒ‡0þ)Ô}~Ü)jBDæ ð"ä‹7!*îAfÊJº†µrÃí`ݱ´Æ>j5Óõæyö†²ži†)jPÄñð dõ¹°;˵½ÓB®£jXþºF‡ Χi¨T0s/Jÿ§05Â;ïÄfv YߥüêþƒîTœk‘¦÷ï€0¾•Ç}ÞžJ&¨â0< ùdlº‘MkJl.¯@–)‹+æð*d¹­ -ÅÉôùDáðd©‹›£S¯°-/êŽØãJ|ŠÀ ÈqNDœ¿£ânïBVŸ$8q—¦½ƒ’º; rÇBš­ Q‰Ó=àW¿RæÖ]7+ºø*éÏ|m{Ø Yj_Rø‘M)7K\ú€:ßš©¸ýÀ£Õ·8¤ˆÞÖe.&"Ç€ ÇÇKÜ&*W ^MÅ]¦âºúr–i• «Ûu­B[|]ïæiþ‚î§ø Käš%‚7€sÕ§ÁŽ‘ËQŒå5ß<<YjçLl™9‰ÉYàyÈç;oKTÜqà…”B.°Ö…bļˆ„‰Uý Þ»ðX|Iƒ©NCV_»X²Ö«®!-Wtÿ00¬iÎê‰Ö2Œiw¥â¼ÕG!Z'B׀ȅÎÛÇ€C‡”•v²qµ„Ši[s£DáØƒHO!Ëåçå?=Ó0£MwÖ ò+Á€Ï@V:K×:ä‘KKd.¯A¾ÖyC¢âΕR󴼃^–Ñ?•ôª?w,¡ž p²Üíoaêé÷Üä$“½{’XÝÎB–šG×Óð9dõû‰»ý$'¢ œH¼~Y}pñ¸¦ÿX7jþì”7k‡îÎkø˜öiÞ2A3 ÎG+÷QÛ°™ßæÄ— ʾ…xßòÉÀŒ·Üãû© Z3m:¸@–„·ÿuQ+ å á6@¬N¯CŽ3ŸWD âŽ3ånÈlQD2kb0ÌB–ËᦞN=-²o) C–²kq å€3Õ×U÷ÓÊú(Ù‹'ÀyÈóÊlžºcl¯¡®-X…n߈Æoëò ú)šU®{ß­ÌŠo(r§å+3J³ì´½b|r‡¾áÙ4 •JV‹¿þ*6³×¬Ò{[ØÇ®‚-á(d¹þœÿTx™w EÏ2o×äa lÂ.È]±ùŽ½Þ–g Jý)…<.¡¥nq܉ Ü < ù°²Nnñ7Ã#nðZ,ÒдNB—ݱD½Z­x]´&jPDúð)dõ™iÞ¬åß|æ†ÒÝ;.„#Ç4¤Ÿçû9L09¾ë¥»qàX´Ÿ"6àd©“ˆbý7‡<®¬ºÃƒ˜êÀ¦¨A›[À'åVTã9Nü>åOטÐqâ÷°NÂøŽ?@>G$r¶[»ÿû¸¦ûëÊæ«jF|w¥¨.‰üàSÈ1Ì´Þ"D‘«i9y6+<RÁ‹%ŒDÜÖˆÇ%ñtÚÖ¨¸³À4ä´²š®yË1Ô³z™60V6Z/ 6)âxø ²zÎóJ…zEÊöH+~ïlô£~ó®w‹ŠðÞåu˜á Èñ­‹›ñ(rˆ§Ó&FÅÝCVVÛæé »Á$‘ˆÎp:ÕHT“v¤ÖýÌ”ßÇ*%‡S Û$<Y*Ýp˸ëm° ¥?kÙÖk¼ŽÆf|k ö^yQž©»ÍÏuæî‡¢ª$⇀O ËÅ ü§“ˆ©Õ6²Ì¶0t½˜ç$Ò5ëc.g;nµZÙø…^Nûµ(¹Ýªc‹VÁÂ{'œ„,wÎÿt@_¯V¬ —²æ¾y½RÉ3A^Up!€<[+é2—EÛ9 <9KÍ©¸£À³Õ/5ïÃñ{›­Ô¬uÝœB”æÔ…OÇ—Öܹæ8U{¢P˜^˜z™_ȹQ#Í[µÕBU+½×VõÉËÅ_ýr©ú~õ—®ð«àÚÕ²^¨È·‹3 óSÓ ¯"js(홾q¨ýû—¨.QλRá× f¾ Þ[U1j‡ÕêW»;2µóž€uèäÇ–Ô¶0£X¨…—ºä½ø„KÝëq'‹m FÖë´÷À´]+K¸žÖ,äYeZçšfÚ4Êó"[ÇjöRËLâ¾½yx²ÔF’ám¨€YÈ ;ÖÛP­r\ír2µëŒ·‰š·él©‘Þ&¶b[Ï]ç(¼þÛã;2¿Ï\v]ŒhLGdCN`±ŽŠ»œ¬¾X'¼.CÅ?ájh¹¬»ŽŸÆYtÈE”SÍW®‡}û’56Š0ž%«)oÔ©;kVÙf]G“Õ4Hrß—]7V¼[iñ¯n.kÍ,¹_ð¶É‰/: N8y*ù·YGÑÆó6¶\Dä-3‰^Áðdã?w€8M¦Kå´¨_">g€iÈéÎû%*îð2d©ë»Z7¤f£²DÓ 5&"wøò#u›50—åmz Ó‘Ø%G|öC>Üyӡ⺀G QÖÊY×t¼³“ŽÝž”YF_À,äø6ôõ%µ¯‘'!KÍÀ‰k,¼ù¾²Æz½ÎL«ßE<ŸAV_déEæ,…EÒ'_ÓöB´ŸþñÒ¢þ©Zû¾¦Ûtœ|²VÎÚ ¸–ëF¥üÃ/•Ì%ý“a;v&_(Óp,_ª×Ü´Óƒƒ¬íOì^Ž™úǼn~È Þõ?›˜0L[¯9ïJ†£Óåû™÷ú†=™¾\LgƒÑ]úòp:ËJZiM/¿sÿãɶß †ºý¯g§&†Fï:ú'§®Uðç-Ž„l9þ¥wÙÌCÎÇ2þ=¸ä×zÚ­tˆ%ô!\`™á¡¡ÑA S(p´ 2´7q:Á2äÞhᯠŠ_jÏs{ Y}+m‘_cƒƒþšÉ²¡Ù9/Éo‰ÈÂ)K_hQ„EÈR«‚¡¹×÷È’{͉ÓmàãT#‹I§}27 œ¬>0ìµ(*ÿ ð)dõ==†ÍÊu™-T¿€yö@–¿¾ñ÷Ô~45÷fâÉÌ˧/¦^M‡=1½ÌƒÀ,äxf"?ã‰gi÷ELwÜH!φ‡ŠÃ¢™Xç8öñÌpóÂMoÁõƒV1Ê2W\ñÌB~¨Ìì0ƒöP•*õr°W„;›ìÃq‡XÍÑJü­ŒðäÊ•¸Dïu[·Ùºö)óÆø¹ŸVùÍ`pøžïb軎^[?_ò@šð.dù+~O]ƱG 3o'^O=š¸=S÷+¼LÂk¯%á6NmšD`™âÛC¢žƒˆ_ç*p]¦›Ø£gd¾ÁÀ̶굒.ãAx† «Oqô;Lº7§_CÓ„êC!é™Ä¿ˆ¢Œg&±¯qˆÛu7ÂGïÿxªMY‡îï®ú—0‹F°Äæ8ð,d©}#b,×<ùœ²‚.ËÖÖuÚR¤qêªZVE¼ƒ#‚ç «wp·¸«²·dyù ?h5ÛÞ÷8Óy|G£;6¼ž>çý—af„· Ë%y 3¹ãÕR™^oƶÖõw°¿(/i€¿IùûìNƃ×ñà®X pÀËgöcÝp£BÝ”¹íå7°1µGâžbð8 yV™ÉÅ^Ù¤ÀP¯5ùg–¼a¨]µÌ²-áóÿ LšpòHluˆïžEŠ(Mg KiW̨¨¸QàÈê[NÄUQùOÏ K-6…–º©Ì§¥l)yvðWS #úF?}#Ší y+ƒ+¢ÔÅ!Is=÷¥t"mô¯¥üIÉñtjÌÉã¯ã%Ï 3Mn&“~Z«›+z¥œÎ2Lïx!Ye=9kIôo€arZ™è£Ë—£­ÛçY&Hfäßg°)g-^‘¿ ò„ ?R®ÈP<æ7nò’ɱ›¬¤U G«4¢¨@#‘£²HÚ T ‡ Å0øÅ?†YÖ?¹K™ôŠQ[w-&½¡kµô ø þÛ`Gx²úNñ¦õwPv€ñ4­ÎbqQQÛ5kÖz« 3ÿ»`K¨Ö··´5AeíY~Äöïüß‹µ­Ý Œvó:Ù8 ùïƒ1¡ÚLˆš!ÿ”`<†|ž3äæM‰8»%Ìñ‚¡úAŠàÓ¹UZÆ y‡/µÙÕÿP B.#¬b•­pUœÑ? ÂøÎ´Šä?AÙÆc®AbÏÇg¶oFû§ C8y@™Ø™†Ê²,¸gÐÛù!®Á?)Bµ Ô4øÏPv€1íšæ]Š« 3û¯À†0¾lá—«‹ðJsª2ü]\—ÿìã‹sN7f[fW<¯'Îï¿'ÂÓOoƒ­ý7(;À˜ÖÕ\[óKyŠÿDÕÖøOç]Re}Å0[îs¡-Ü.Šá šVɲÑ,£y¡Šõ‘š¹Z¯h5\ \§zÎCžWK~¤&ãSÊ e™Y²*“¬HRÍú8Y·Ì r„ñ%o|ü~8[üØ~ü~$; i´!A* þï@’PíÒþÓ®_ùèv*Åßä¿Âø:<ñ6þ¯Qv€Òm<´ØKú'¶±†Mzý5÷oT‹V›à¢â»8Ä#9ÁuX•οMùxâ‘|+Á¥ÙÏlQjÛfäþí0Ú¼Á¨cûÿ{á%È—D«Mߨ´¨ˆ‚oí&=õ´;Ë`÷á£gYöD7WÙWYöB³Ø4mu.‹ï5£š¤¹¥ej9ÏÿÓ)6§­ÖÜŽGgó®J ºÜªÖ¼ u‹ P ÚkÐ:óág¶÷ÆdÞ`2¿]u -µ{©üUÝr–â{ÉJ¶³º>ùÜFH‰Ö ›)Y¦µ®Ó½ QË;Û£¤½Kúzu-1‰çnvo í0},[•rbú8œ)fYq|”¹aÚ­[Ûè-[XÍ..¾dC#C£¹Ñ¡[ã;ÌfrÁ}eËð.Ù(å‹CÅñÂÏó?×½vž§®'?4𢱧³Öµg©^«$çwVÄeâÞô ] å° ¨4‡tóIº_ûw¾Õ6P-DïX0zˆßÑ®ˆþ¨&¡ô|¸@ ÚÝ>»lh³˜Å†ö©ìiöªT‰ \e.ÈT&Ò}G;¤Ã¢Ð7…ÒιY7¶œ¢{WK¸oѱؼ·Z±Ø’4È IùÀF´¹ÇVMÑð3¾÷«ÔL;«æ3 úCÿØŒ>[têåè FÛ£§È´3Z@;«¦®Ñ[;LhgÔq0ˆGîärÃc#;Ë}$-ð¸Ð|’vCì[ewh´Ð» …ž‚|ªƒÂžö5»à(þü3Ü^ õÓ\NËT!Ò!=|ª›zM«°Ç†¶jZ¶ãöøë*Ó4AÅqœóqËôÔkÿb«íªhßkTj~¡‘žžY4V,öU{O'‹_kU7Â[ôÖˆÝÿðð¥§Ü-_ÓÍ'i}ÿ~›kàŽv·Å1EwûPÃÿJÆÝ¶/´¹Û☸»ý°•  ñºÛÛä[©…~£kï}÷š[lÌÿ·:Ø9­æŽØäÜllµu³ñ½>¥f×Y-åÆÁÌx‰Ž²:« ÈQVgÔ#>Êê¬~ºF"'b·I£¬Î¨ãhfB>(C'Ö+^]©×œ5½Æ´Úª·:à®[ÖYÕu*zÙ»æRørj*¨8 y86ç²oËø7Ò³ÐOÝÞ‡|¿óž…Š>€ü@Ù¨»„ózPùS§”yìÓó«yáÍ•ÇÐªŽ¥Zføb²ƒZÅÑk¦ætQ#!F½À“¥æÅŒ„Šëž‚,7¿Øòi–Ùºpªâpxò%å„)épeñÄf°%XNg!ÏÆ¨¨Ša¾÷?Ü´‰°Ô¥†áÄ÷&ðä[²¼7ýòUàsÈÏ“1Ý‹À_(›î^™ÜfDaøòke*‡ƒïçY÷­ßÃÃ)…ÐR,¦;ÊËE·ISTü‡x’¦qo ÀÎLÍí¡¹AfÔËt{ ÷H‡w»Ûãá”s\¯çÅm½)Ù ¡³ÝÍ«WE»æ“°" ¥ú%1ÿFÅõ/B¾˜üÈŠgâé´áÖ\Ã.ÔKªùRñiñÄTûž¥Æà'¤ì~T;8.¸M“£T|‡x$Ûeû1pa:îç0žÍ£SʳÜް ¤Uw¥½MÖiQçu†{X;í¼¨˜cÀKÕ›¯xN$*? ÄÉþ®lå… ïŠì+%8›ÚÖ¶KÅwq¨ÖvÛûxa:4)ßÇ!Å·òÂÛ¶â6[?©Ÿß¬âo6¥Í,/›xÙ°ì ³TÓ臒µ^µLJ†h­ zùÑôZͪ OfŸ‡j _@Vƒ1‰Ñ…­þ¨*…à¡¥Z*ëv©fTé Gh™J¼¸½¶ö šíqæ¯(:,å‡ÙâQ|+coÖ ›µmãònÑõ²Ñ“ekõOFÅÐjAò^S”:yùPwù¨H}8óc]³Ü`Y_×]k/ûø:Ú{Ým·5kiÍtÃR=r\ ‡!ÇÖ#oqDdoLLîïB¾ÛùÞ˜ŠÞƒ,·æÆzù$×µ Q‹""“À§Ÿ*Ú»¬‹g:ç2hðrã Û‡XÔPˆÍ!àäÎÊe¦ó9Šz9ìwÁe}E«WœAáY{bs ÈÉ1©h_M3Ë–pS&"7€È…d4t8yHYC{hE_B+Eà(äÑø´âç~“ÑÊ]àCÈ“ÑÊp ²ú×AÜfÏf#óÌl¥œGÀ9ÈsÊ„®Uõí¯°]7sdê6Ýà#ÈõН~¯A¾Ÿ!É-Ú™p²Tì fHTÜuàäe½õùñî·µ%â2 œ‚,oÜÁIÏñ¥5÷Ã_WL/L½Ì/äª5‹&a¼Û‚ë¸.õË¥êûÕ_ºBpõÉ>),¢&[^rr&vµñI,‹Ð76]r²‰já2åÌ‘Faf9øß²ŽQf¨ZG¸ê‘©^cZ?juë÷eI±q /uÉ{õ —º×³ãNÛòâ‹ÞÆ7šªé¶—Ö˦áýaÓpÊë<„·kð´§ «weü¡‚½fÕ+eÚåãÏÕT6XÝ æk\Êu³LY`ÜÚ˜õŠ7ð3-|U´\O–V²÷øÉ%Ãl›Vò'‘òŒ._q+æ}‹´ÞH\´×ÁšðdõQ[®e¸etëÞºûòýÉÀMwŸ—\í¸3 I˜ƒ,ú)¦®œÈŒï@¾Óù®œŠË' O(«¯—¬«ng]mÂÓ•Då.ð)dõa÷¤û•-ׄèÚ ²wÏ–ü)LÛ©ÕKN½¦~ªé¸ Ó±D«0«"œ„<©^…’eº¬è2·ÉÞe†ãº*·xr½•ûñJv%ҨīŪ9°ñ ½,Z… }#Ö*\B@ÎÇã4ûíiÞµh[¾ j„j+°amyuÙ\‘iÍ7a¿„ȅηf*. ‚<¤¬4ñ-*¿†߸dÿö…”Ì`ÁáÚmšÖ§â»8Ä#i–¾”N¤=R7wC„ÜJEn÷ƒ×¸…}NÆg£ NxòýmpKÜz¡š[ ŸèÙ*Ao0W-Z­Ã¢â»8Të°Ž©Ò¡½ß½â‘|+ˉöøí£‰o¦Þ,NŒ áo²wï߆ò ¹bU¦o|áÝûí·vœóCsö<Ë?]¤”hc)Ѩ¸º\©KdT~?¸„ŸF‹þvšéÖ9]sG‹?Ö5W×lA_uÁv?›`³ùíªKh©[\ÅßKTjŠÕeÏ#ÿˆÿ½èÎðÎê%òþÎhEüþΪ¥kD4ÏY§ÕqgÔq$3R̲ѡ;¹Üèðímt€ü§}~¦Ý¡¡ñ‘ÑÑÑåÈH ÄWàBjS¶¤â¿½4P-bK$6)*Æ&¨æD*™Øäà—Æ&EñØd–Ô%^Çù€MB¶úº•¨x±‰Ø¤ÖˆMòlV88‰­2¢ÁI|oQ©-vV™òÁIgõœtF+âÁIgÕÒ5r{‡©#"8éŒ:gйaÊ4v'W¼%›tˆU#6ÉQp²&CŸ*e,:íe0¹3RXöšaävÞ}ãy÷}ËöÊ í;?—®h(:]QXåÄsu¶Yu2WѰ¹Ðdíýþù3ÿoÈUÐØ¤ÇXrÅÖ>>›«h×Ί®¶)û_©mEÝEmÜù£¨[ª£(n{ÔŽšá½%1ŠºË êo„÷P~†—FQÂèØj#:ŒŠï5*5ÆÎjS~ÕY½D£:£ñaTgÕÒ5&:Œê´:"†QQÇ¡L‘Q¹\ñÎ6z?þSµéÝÎ*'é]¾Û˜LúM¥;40éþæÕ«¹‰¡aŘä>jH’ñ=ö˜¤ýf•߸cÔrÍ(¯êìù<%}Fˆýi®§ejé(ÇøtáS¦VÙ° ï@ƒŸÿ=HïmH÷s’<¿è*¶*ˆuuñ½9þSñ£áÑ3?û†½¦ÈPÔ›vV xS¾§S›’Ì&åMøí©;Ú›‡½éCÔðaj§xÓ¢Äî‡0— ¿‡Þ4¶*ˆyÓøÞÿi– »/ƒ²TÒwûÔÙbÒ®µ³ºIÀµòPr­¡¥~&÷-¿I56sK9TúFüù»‰R‡x$ýÆU:Rþ4p€òwuò¦æé”áMÈñe¢ëÜMÍÓ°ži4€^•F°é—»ÙT#W^lo$âìÔ4šarNÙMž÷¦0é,^ÈU¢MÔòÀç¥î°n½"JüÔÝc¼ÂÝwKÙö˨{€«Ä/ ÛvÄe T­c\õŽÉTÏ{â¿l!6ná¥F\¶ÐÙR#/[ˆ­XÅyežÇqÈrg‡¶2ˆÕåU©.‘he£G“é÷O‚´å4pò`,½!ýâ9àd©k ÅzC*îpò¸²©mô†š;ð³V­ºðíDèpò¬2±Ì£š^·Kk¹ÜS«¼RÓ7ÚŽ¦ãŽSá{Jfüvá!wíD§bPÉ÷vE¸M1¨T«#¾½ÀxcPúÅn`‚1è˜a|1èåF«‹´rQ»&‚yàkȯÕ[aø†ibՂ«æÙ>Å«|ÚÑVèöw©æG´99©þ®"Ñòˆæðd©[B¹|ùYç[7œ…¬Þ­ˆç!£òŸ_@–»«{+Sí©.ÛR¶J*9¼Yê¾q[=0°–àÜ <Y*Ü ýån`rºóÆúÌW©‡ÜÍÀ‰#¨ü+À«å2‹om¬µš´±NŸ@~’˜±‚µçaàd© ¹B9 | 9Înf c½ädEcÝKëC¢Î•ŠŸÎCžï„½®”¥ì•øœ&ï\ÁZ‚s/0^çJ¿Ø LйÎú*õ0>çšñbpËË”åÒ‹·eqbyø²zn>¥ÄÏñÖû ÷)s^ÿáR¤â»Yåá“Öù|þ&;îº=J ì¿DïJ'ÿMR¾QÑZÌ9áCÈ;úÝ û,ò£§€Ûny=ßVœ{ñú,úÅn`‚>k†Ac@(Üò©ü+@¥€0´ÔýKnûÑ*¶Rò#Ôúe*ÎÆ.ìs¨ø.ñH¶Ö.U:¯¨•pˆGñ­ô?5¬šilÞ¨T„/G} õöCîÍHº—´º³fÕ"ÞöÕöÚÈW°‹Õl¤Ý“ï]“pˆ ){ad©;¢Ý¾×7>ZÁAÍM%ï*ƒšNð½ñȽ€ð}G›Ê þYDµS2æHßhßÉC;LÛãÿèÀïRÍåÛóM®I?Äë7íµYˆá˜ja]3 ¸¹0¼ëßþƼëÁŸ6ÞµËÂÛ8™n3˜ìUöÔ Þè~÷å V³>m¸ÑÜð+[ÞõÊ´ùŽ>Xs‡QžgúÕüüÌË0óâ¼MãfZn9!PÔ9îŠú°{SÛ›1ݘÁËí¨ y,yêOþ·ß|õóÿÇŸ´šô±ä×±éruÕwšü}9ڬ悰ÖÓ@<üßå<áÍ«ì5]8£û\¶J^&߯ÚÊBÁm3ïü×-n×]àKÈÝÄ­ÈYøÕu¥Zo\ζ6/¡=ªgQ”"öÜЮ¨nàAÈe(E ÌFŠðMÅb3–—m—I+„ŠïåÏv*„\ì~à!ÈRo&´Ô}Kî°_ Û¯»ZØ“jöÑr¯BI#T|‡xbÒH¯]__×jyÍì…6A>–€f¸<Ša7('¥*þ‡xbÒÌÑjÍ0¼Š~öA'„g ŸI@?A§Hd¨>›¼~è9Ç!ž˜ôÓßH4"¥›n裆³_ÖxuÓ }ž„|2yÝPñ§8Ä“nNúC‚ {òtn‘Íø)ˆ¬Z¤Ž"Hîçž MŒMGŽáTÂbýÐ áEÈ“×Ï8Ä#©£Ó_J'òÒªà Å×ÒíµÞŒ0›(¦§µQ)²9È‚ ‘P"q9Âò3H2ÚÏüL^Ât¸(–·hE:=ŒÙõe[wÄ qA¯=EB½Œ™Z^óŽ>Šsê¾TœAæÆô•½ä°IVʤ ³l|ðúªt–¥]g¨§Å©öƒáÈW”©f’ÂyLý¬¼Ä‰­I\)ËÐ= Š„![%éfîØ»¬ré¾|;7'Në¨i¥¨Hkcù|ä¢O$™HµmŠdºÄÓ‰ O§l05Ñ©/’Ç1”`ÛBƒ`—ו ?/Ô ^°?¦¡Î`?ä~r¡¤¶›oAixr|Ql÷Òºî¬YaSðܰ/Æ0¶/c-ÓÉ­,µ&q+&2§€W!_Ý+>`g¬x¯7@4˜“°[Â^ÈRý](¥/›ÍØ‚Úaà9ÈRÃEQ[æì7ìvAY/,Ò À‹ÕÇ{û$ÞOr—pðó=Š\²n0k¬ŽíößëÚ§ÌH–­êΫ*o™´ÿQz娰DÄq4 CÖŠ$)_`ì£QvÖ\ÆUïO2aÑ;ýîJIŽiãˆ?¸É¡í?ΡpÂíŒ?¸æßAÏ} 1u%è"É`@>²½Q9<Yj"IÔks‡oùÛ™ e_‡|=¶·±o©nk«a3Vð.*ÛíµŸ(c¸£dó¹¤J‡¥üÙñÄ=šÀ„‘ 9ÚòÙ ì…_$6ª1{c}Ù×XY·K5Ã븂$Ýþß±(ùu!¾œ•¨Áaà4äéØŒ}ï’áèëÅî>†ü8y[§âg8Ä“44Þ@€é±ö”Åo» £& &i¥¦ûÚØ%êE¨xÆ!žN{n³7ïQ’n¾T|šCSÂðâÏ+©8ãÏ-ϔ잌¼ùs+¶— KµÁÐ_> Ì@–Z|s©Wad„ƒ“w©Tü ñtÚ¥^õØÃmÜÓHÅg9”ßÓ¨DãÞ@€šJh¬} Ò#ïÐ ì‡Ü¿­^•˜ ¹uàU¯sÏ&îP¯JìÒ©¦ÿO§$׉Cù0ä¶£NyU*î0 9†-êU©ø‡ÒÛÌżêu߈=ÌCÎ'ïΨø‡x’¦Áí$èd êïÞäF=~7P=PÝÛ¾tBó6>/›¦S³Êõ’^®yòft²Ì2uf­ˆ¾UbÜœ€à1ÈR‡EBýÈþ`ë ¨'!:giÈéÎ{*î8›U4bñ‹À¨ü+©æ€µíÞE­hlã”QKðŒ61 µ\ŽAÛ&µŒoA¾›ZöЖZÜNAžJF#· ?J¾Ë¥â§9ÄÓé.—ÛF´kTü ‡Û´Ö˜Ã°C]®·Á[Œ»ê]nûtÖay´t;Ë$消Vðd©%¾-ç¶z«ÍEHáI.¢v8YÊÆ"ZØ“\‡&«Ÿ]=ÝŠöMà8äqYÚ›~ùjªy[óÕT˘r¸TÜEàSÈO¥L…ÿTØáRñÏ8ÄÓi‡ËÍpñ÷ &íé¨x.OLð$M£€7`|—0©œ²å„]JùŽ•PÝɶ{¯•zÍ»åQ«­zWmçG#^}À‹/vÞf‡ B™%o,Tü%ñ$M£ˆ7`‡Ö½‚mš¢Â0ì–°?÷º×QÍd>3¡—*šm3 ‚À+忏„÷øFŽ=ˆËM`r¡ó]!w8y(ù®pÖ žN»•a4žáV9éöLEpˆ'i#xvháÇ?‚"È&Hºê ?›öûœD­–Èôƒ‹RËébV; Ýž€|"ys¡âOrˆ'icxvhÄìF¤6C%Œ?˜õÖ$µOÆz}UtsÕY öžSB;X¶ôÎ02«îT뎨…ó>àä8gÄ",|z$|ùQò¦EÅOsïŒXÏR# )›¡ÚAJÝm:nr m"@<’­ë˜*šÝÏa<÷£R)ï@E„j‹Ù¡—ý”2i/ªLgÓÞÅíÞ’Y:jþ)2È$vg€C‡:dÞñUïa²Tt×v+IÉ2Í0 suBÔˆÊ0ð>äû±÷‡J–¾²b”Œf#ÿb†´I¤8RØ•Êì,õ \‹§Ä®Ís2›„ÕªUlgtƒ,È%¥Õ Í,ѰȩŸ‚áJïF|{㥿¾Üž&aC„Á@nw„’=Qñ·9ij=,¯äƒ¾Cà}˜áÈGb3«+e}µ¦»CiòJ®P¶Ö›’îëˆé1à-ÈRš3¨û0¢ûÐâ.iM*‡C wC%½V³jÂ1Ò4ìŸ09×yOðˆ{'yÈùä=_àOLµß·ä ¬CÊ ÂÂ`î6-9Pñ]â‘w„jth£f‡xßÊÖëûõÆõý^ìÇåfÍ,kjKe:ÖV7ƒ‹¼6-ªO O‡©F|“MZâ.ÀŠx‡TâÓíµ¬§°¦Õ,+«J‡ö{öpˆ'¦~InÒlª™×º©¡¾ ¯u|!û=fØLc+uÓ‹‚qkŽh¨‹¢År-htÈ…¼¼!ªLbÞ›j¦pïMInæm©Á4²6³]³ w„Ø’Æ™r§9Ìþ±®ÕhÓ¼nx{;é”y B«îˆVä9^?!$(VäþŠñÉeŒÃÕyÖâþ\--k4ðu¢1磕³½Ê©I´|vmnâC±ÙjÍ*é¶=ÁVŒšûâ‘9›è7Ã×å öÊ­RF1ŸI[íbÝ0_p$È? }Xx§!Çy8(Â/Pq9àcÈꇃvG_*¼•~f€O!«èoiÂF3C!ì‡Ü›Ñnä¹S¢u"ÕL¸}"ïî-ò^ƒ|-Ž‘ëSý†_6\…Õt7³EíˆH]NBžT„D-ç%¬%@µMs›¶=4,Gâ&QÚ< Yj©QÌj¨¸.à1Èrg·ùOG³q˜Œîco,0·¿ögz«Ñu0ÍôGË¢&EŒŸAV<æ6¯¦Qøä²¦}…Z# ÉQ®™ZeÃ6Ü~ýÍšÛzsÜ­Ú{¦U*ÖGáFò IÈuŒŠ5öB?zÃü…íÔê%§^£j¹êq¿ñA¯m0oJ”÷kp%†<¬Ì{Oƾ‰à+”N¸òžØÚ÷ñ攗µ3Äí ð"ä‹oèTÜ^ ƒÌ”•”wÃïŠÛ6ìõuÝm-¥AZX˶^ûà…°6®‚^©W*ƒ âz øòKeÎë¦ë’ˆ,®šY¦H–†ºÛÒuV³–ëå®jnËpÑÜ`ÎFÕ›ÕkÎÑŠÖdÆHßiï{kº£×,û½^vGDFÉp6¼ú¸oßp%«VÓ+žòlÚ2Ýnë• r͆°sZkBnׇê@óCnÿ`Ûõuš /ë¦[· š7î»%Û«›³V·ƒÑ 7Œ­È'Œo 7Í ® ÚƒÞØzÁêfÙžzUøh¸me³Òòì¥å¯{¾ù·±V$çvÔ–û–5Ç3ægIp;ñë†ÛlÚ&) š„9ÈRÜ]ìÙÿ&óæfq°0Å."q+±N@–º«,¼Ô%ýǰIB*-¼ ù®zh,jM_£]x/–ö=Ö8ªEG®åÛY¿  ¤´Ñ4®—ìþ}öF”ú7°BîXÌ6Äߢt·ƒÀã*n/¥âŠ?N þ תV-ÛpôÁÈlE[©ípòxòMð;XL€ñ,ìž6㟠pÂÝwÇfÆÊ,D«xòéÎ[0·xòõ¡2Ëñ–õ­^qýa³ÆžÌÐ3Ó:QæþÉ»#FÔ°ˆñYàKÈêqôõo,«R®åU=˦×ò¬8”l™¾ËÄ}è÷08Bî†Ú0GC”òÀ;©ÆÅ66<*.œ€,w‡*ÿé²²Ç4Ѹ œ†¬w’­×l'לd$s̳EÝqhà Ë%˜!ƒÌb3#õ•…%˜7á-Èq%*îð6dõý°gXÕ¿4˜ÆhŒ_‹×šáäe~§¼õ6_gºdËX6ÊùAᕇ`H„\ËØ;Æš;ÒµÖ…mŠh]æSËž:mSTÜi`rAYgWYÙÒ½‰f»#‡,[®»ciÛß;ìv2ÞvQó"ŠCÀ7ß(Své”õjM/i)%³T©—½µÝʆ7…\Óš•Ë•¬õª;|^6*4[SÓ5Û2mñõ§°>B¥Áh©û—ʺ£Á>ŠMÛ7¨´w©8£Tá`™ŠïâdS<ü¥t"ÛÞÏRþP*@uGó¥÷Úªîu€•õ´x:ËeP#d)•î™ÿôÑ/~ñî£Áî嘷 (S±V3«vuýš‘X-i®|r éëÞë¦+ˆgÝ-<á#È”+2ÄZÿñ6ÅM2ÿýgYûJüý—A•pò2í~déÎxzg¥ƒ a?äþmhD+(;ÀxÑc÷­P¸˜¨}®‚>a|+#¬ýŸ( âcqcX[BîŽ&EæG8%nâ¼ p!<ùÈ6éÏQv€ñ)¹Ð•r¢&úä ãs¡Ù/4Е²„mV@“0¾„ð¼û\‰ÞìÉjL·Ó}š(;À‡ˆ‘<,”m©ò-öÀ’þI[¯Vô°(ùg(®šÌ+ˆŠ’©ø.Š’£èü˜òwˆGò­ìƧ³K‹ú§jíûšn×+Ž=Y+gmÇN'—ëF¥üÃ/Ê®NL¦­×œwîeÞë“éËÅt¬û/ÃéÁ_áÍÎO,μ}9±8ýl~â›W¯æ&îÜ ¦Ó«‘iÓ¼]œY˜Ÿš^xRõŒ€Kg(VuúÆ¡öoô,ù[¾µ›tÕÓQή³‹Y6µf²Åé,[,­­e‡½Î²æ<.{>Ï2Å;wîˆH©^׸ú]“©_äÔÈ·3åôÖhîÌö°{ûÀýé'wä­²VuÓ¢õÆOÕŠfÒi“æÁãüvÕ2´Ôî¥òWuË ›c‰ïõ*5àÎjùäs«^3µ )v¦d™–¿§HôÖ–Î*iï’ä¬%¦"ñ #ÕQב¦Že×{%¦ŽÃ™â`–oÝb96¦´³JŠ @;£"ñ´³:ê*Žî0uD QG_f˜Ð;c¹ÜðÐðÎr  |N7Ÿ¤ÝPÝ7ÌîÔ€Á›»V > †RÉ {ÚÔs¢m†jxhhX¡†ŸR;Å›%†`Ÿ`.A-~½ilUó¦ñ½9þÓþ,v_†^6¼óžÛ§Îƒ”v­ÕM®•¯€’k -õàRMîâ)üG¿I¥6R •¾ÑOßèÅ/ì‹ã½¥.ñHú.U:¿pŸâQmŒO ëƒfš›7*K”Ô/ñ û!ÿÿÙûð8–l= ,‚ À‰Ë}‚.²P… $$q/Aòä½}»Ñ}_¢*d³ª²:3‹º_·žºµëɲ¥§Å²Û’ü´Ø–-[–d˶¬]²,ɳJ3ãylÇû›'{öQOžÌ?«…L\FDV­îûuô€*"þˆsâĉ½;6Ûi_ÖjκiEÔeöó*v£n#?»PÍFšû–cÝnnÛõ;û>˜×÷Sþa3B¬±ÇxGKDz~l˜VØ\Â÷¡ ÂÓÕ¯iV e†C$¹ ÷¼;ò þûŠ’±É0_F¿;I¿;äÿÑžƒ©öJƒkÒ‰xý°¹4¯g'óoÝØÎοÓß•ütµJOþ…YÐJù7n¨‘_tÊÕ/>›6^?Ë/z!îX¡P¿“wƒÕ|Y«ä½]}¹ ¦DùtQ>~¥^ÓAàx­É\²×q.|³ÌÍ­5½22ÉŠ&«˜Ž|ÐënXå|f_-,̽ 3.Îá„í© Ô”úUÿw‡w\oß<ÄY¦#?nâÎؾ£åÍU fѨ¬5ÐAÌ¼Š™þÿùê·þúûMMfÖèõ«¥ù¯œÀê¼Æ:֜٫ø4Y.×y¼9›Ù²Ùn“;ZX»ÛÂV’¾ËWbö?dƒ"&òåÜà­ëì5Ý)©û\4 Þó„¸Ì£Âóºí|éÕ¶¸U·.aÈcK’”…k޲¿ÍaÓcK4Boã'[Œb±pOËÛ!·ñ8£ˆÑWE+‡­cqçÙÃgHJ”ý ‘öPä^;€Ç!KULh®G–µ’¡…U¸{2ÂîÀMJ!”}'‡M[Sr”ÞbÊIhå04qßïð±åZ9 M†rHJ+”}‡H1iåöÛË(æ”Ar_cËtƒ„!#¤Cé ‡M#EÅôx7çÔÓ•^€|!õ´C%„!_L^=”ý%‘bRÏÔ3î6îÿ‚0s•-˜Þ«Î,ólaa€q›hh·Œô,-÷Þ±w€ ›&Ã)… Ðap‘ÿ\òš¤ìŸrˆ$©É+J'òLÍQp °é)jÉj9BM<#Læôr,µÍ1*’9ÎÈb˵’&~– )c /;üãkât¸€Š7hE:dzk+¶îˆ æ_:·kO‘P'c-§ykB✺À£k;?EN7«ß×VȤ sCÛ²ÓÙm—·EßÈɶ CîG’d{ÕODºdÍŠNOY—7‰¶ Õ“ Gx ò5eª§+˜¥’Vµéþ§Ó/–æÄ©q1mŒaTc%·ºrn'8Å^¾}ñBœXÈôl—‰]e̱´ŠM~Íï“==IÃ¥¢Œnù 8¯B¾ªÌsÜu½vÙ%goNa=³t–éÄî3—uÉ“èVaòœÆ½ ÿ¤¶]ø'Iþ$cnÓÖ7¥uTÎlo;ª}+c¹\ä‚p$™³ p6gßÚ&~ªù2'lƒÜÖº@,’·W#²8&‰µ¥¢¶4é»B1" pŽO@–šB g´ÛðkFÝÀÈR^,4×öeÿV∌9¥h,]såÛnWž¥–$nÁDæ4ð*du_)nÁÜ€´…ÜŽa» É\‚á^‚¹Mm[ôÞ#¾ã%<YjŽCÔˆ/A7„œV´—ѺãŠû)öfñí\Ö;È’+ºJ£“,AD%géÄøpòüXúeÔZ€­±ôÃÞ4• U]mvB–m„Rú )Í]˜^‚,5i$jïW ¡+Û5§jˆÏ'\áRo‰flS<ìEEr³ñŠ\²Œ5à”µÍÌh–­éÎ+ïKw<à}” ÃÍauh†¬àKRîelÃ(:ë.cŽª÷+™ØŸÛ^Ç{ds#§½ ²ÓÈœP)ÈÍöÈrÍÖÖÂfY"¯þ”ª£æ?žeíG±l“-¾×_ŒªÒ¡É’ª­Gj˜å$GÍÛå;°ÃM¤nkô˜ÐŠY2 Œ{]·þˆ©?Kå=*$Z«×ñ=ÂIȓʶv¯~Û9=¦³ª·3×òŸt×­U­à½mS17ˆ5Íý¼gÏDÙß@ë ž¬¾§ÎÞ5Ǭj–SŸõö*ÚóÏÙ0éédž2Vüûw…ëž›©Œ‘ý#¤vôàq =[X 7Í«æ¯F¹¿ÏÒ5ôZeË/˜³nXE¯P¢…È€8á#È” qHݬÐ$Wé&O]ôùøP"äÆÁ1ùðÈçã¯sÙîá’'e‰Cù%O%ܯŽ<ÅRiËW;PiÕÇèHsÌ¡1 >À`é¥Kº¦vìò¦ÊyO2ŠÆBDè °²T„ÑŽ"®Q§ìº}û” 8Ã2¼ívEŽiQWd±Âºf¹?º¿}¯{¿µsbÉ€Ï ?Sf{zÃ(•è½@­PЫŽ×‰ŠÚ7òP\Ú‰Ù®ˆÐ%à5ÈRËabv•… ^‡|]YSm¢Ýåx²ÔÂ¥X÷t›3®Oº_ ì8DJš¿{ºuÝÓ{€ ·\Êï”O@–_Æ8ØÜeÒ»Œº=)…eŒº+ íÌKåÌ€³kÀ›ãlL%£òÎÿ°óÇMtNEž{Þmð*d©п|˜,ÕºÅ|jFF89†Ö,êR)û["µÚ¥æ|#ö0p¯r‡ ¶•^Ô—QöY‘’¦‘G Ø—z´¾ÁIÞPÊ÷¤„Ý»÷Ô«“ ÒºZì^•ÝÞ‚g{Š×«Ë4ðdéxrÇ_¾ ¼ Yª‹yUÊî,0 9†-êU)ûA‘ZíU‡|#öó°I»3Ê>Ï!RÒ4†Q¶(Põ·h rIùn”P=PmžÏÒ|`ðä'=9ャç„ëàYfVèIzÑZ%ÆÝÀIÈrSà¡}T}—k”íG GQ‹£)ÅNJÌápÏÊàx¨hë=MOºšTñ9LCNǦ¦*ÏG¥àä±d4Õ¼ùNò]e?Î!R«»†ÎNïB¾«^zQïAÙßã)ic¨[´¹Çs´‚ÔÈ4ÛÇ!KÿíÚ}§Ï$HuOCŽoBôhý´€¨+!>—Rö|ÉÇV»Êî ðdõS êNŸø\ŽC–ò-áóÖ“2zš>…ü4=Ý>ƒ¬¾Â ìò)ûç"µÚåßñuèá<äùä}-eÿ1‡HIÓG Ø—ßœ+dG–Ùì‚Ü›×?h{|"r ød¹]ð¡3+´mXÔ‰•‹À+¯´Þ‰Pv§½{•íw(¾ÕÄÒëGÓŠ,ƒ¾€‹«Ä¶øòËØôwØÛá-ªÀ{0lB¥ÐFLÜf¡¯_½¤ü;])…Ý bÝ@íS¶Ý»“÷¿÷𽑒¦1°EXp†SÜ$Åd*Ž}‘M¤úÉáTjåÝ¢!Qä_ ™dâ½·Òažô1®^‚Î@Š:™I(—ðä­w2”Ý(p ò”²y£^°%ü?ñx|Y=ô} Õ“NÒ´RiËí©ÊÕš·mõmÚ0l=Ë ‡´ íÀq{/£â_ô'±ßó>Zç}(ò€¬"·•àq͵v¦¹=-5.‡ö·/yMB¯¬9ël˜†^#þ^\«^Ò©–ÐÇ<õòcåR<Ú½)o›è¥ŠÆ*îúÍʨb Ä A~¤\ˆû¶^0+Eoº™pI¯—rl~Õû5¾(¯…‡ ýp»]) W6lÛ¨¬y6ï¶R[whƒvcë3•¬lTj6I¢áWÑj‹9báÂ$—mr>ù~š²â)i\“ma¸Ðµý’AŽÓ)?R < Yjr.öÔÚm2çwFÅ»Ÿ©éרµjÕí|«­\"|ÈÉŠ:îòœÈ$ÖUAN3P2ad© =4¢9˜.¦Ebrxò¹Ö4”]7ð<äóÊʹ²mŽ“½×J5} 8™#j?Díðdõ‹éFoIãó4z%ñéØYءڱ†Ð蘮]5&¢rx rˆ)»KÀëÕ7_®éJÛ[¶Ûqêím‰Ù à4d)_$ÖÛNs&¹ž¤»¹Ùð”4'¨[ÓÛ\µE÷IÑí}íÀ£Jw±çšM6ŽRðƒ·Sµ«zÁXuû×­ª·l·¡kë s{`ËØ­`âÈÉŠz>4C?ê¥%"–§ŸÙ=…Ê Cž5Ú³UFâÓ¼ 9ÎÒN“²»TÚ˜¼­>b8mjZ“Ln5˜ ïC–M…ÇHóRš>ß Ÿ»jèp²zs:Î2FÑçΖhû~Ê¥× T%ä;™ég¾‚=T»Ì2ÜTž › 1鞆,5Z3Êîð d¹Ëü§m,#¡³Às¥FB—N=¹ù$ŠYÄ}ËÄèJªqðŠ1)æÐ²þJD®çW!K+Ù>ÿÏ6ܱ§pH$ÒÀ d9¿›rÈh&Ç!Ršæ!çÕGw4QWUc=Q_K¼†€óç•ùu™UzÇ´²ë1Ï¡vÂøg/z¶OÿLILf±3Ào´ÞûRvÝÀ›©úÍ·Šº:š•  ˆF8y(65J? ˆÊ]à$d©mÝâŠÞ‡¬>1H"R!€ ?ŠM'Gü‹fe´òø äO’ÑÊcà È/”µ"<@Ù/pˆ¤HCb3Ô¼¯QB>›m|ÔìV%æõˆÙ1àeÈR÷߉ ewx²Ô–,µ –”}/‡H±•>bònŽ3‹>È}É7Êžqˆ”4Q¶hO½w?¶ 5rí@õ=õ;ÃP8éÑÒ…/\"F]À /´Þr?~÷ðÂ%Êþ‡{táÒ Ô@€ñY.a*R9E3Ø!¶Î,t¡%ÖÚ³Z³¼…QÍZó7æ«kvJØYÊí‰Ùì4CÈ ³ä…²¿Ê!RÒ4^¢l·=Ü÷,êq_Án »Sq_ð‘Va>3|Jšm3 ‚=ÀkåŽð„‡ûty²pGdn‡ µ>Š£ì®‡!'ÅQö#"µÚ¯¼Bë!äNó&Ý )û1‘’¦ñ5`küÊÿþxAnŸ¦|GB¨th¾-l{t/­bR³½i3\ÎüûÆevFÇn`²ÜE±ŸùN8žªŸ@nµw¡ìw!«Ÿ<¾R?3PÀ¨HNåµ{À7ß(S|`جª[4°oܽËÊz[W4ºwÐ;R‰MF†³.³jM•0¾ÍÒ—ì²V* ÚZ¹Z¢sI–¥{÷ÑŽnA‚K EÈ=N!Ið >ýåå%}³j}ÃÒm×ì)«˜µmMŸò#ÿæ÷ŒÕÌU}Ó°;“Î-«Zá]®Ps‹±j§Xӯ؃AVÑ7rzå}fà¾ÿÙä¤Q±uËù²àv¯*¥­Ì;}ËžJ÷§³ô9e–îIgYA+¬ëÅ/Ý<Õôw¾ºÝŸÏ¿|29tç¾£o:5­ÌHU#/î9úvinqazvñUD^>€,¬túƉæo_öK=ë:Ä.N}îw˺ñmw‘º3 a Só©XÌU8âàiL5’œGì¦ou´¤$"‘O¹6òòC}†QQ ˆÒ#‘’ŽNÞ L¶&:9Á?g#ÈðmÊK{ ÷H|Ž·4F!Žg€#¥îøb¢2Lðôe7 œJÅuzë¤Æ·~»¿¨µ›‡ÀÈêëÏèy¸U£`xŽiS? o¢ÈU·;õÎÙø!‹£­”¼UNþÞ-Ìgh®„Ü® ÅÂoœµþÏAâóT+¶&É&.=À³Ï¶Þü)»Àså6ñŸNù×ìöU´ÌjÕ‰áÄ\wÆ—¨iíóÀ×_+ÓÿÄ·ûL0OJ&fº ëpµŠQY[­•Èç:ÞF*Ö¶rn»jM´@_ƒ9rSõŠê6rz.ë—aU|ü !ì†Ü[{é©¿t,}Üh4„7!'°M÷ |‘0Y}›®øõ”ÿðänò}Ë™ÅÞäKÙg9Ü£›|¿Ž°EÓgþ+k‚ܾ‘òÃQBõ;'›9µûœD­–ÈtÏ@–Ú+fµß€nÏB–êhÕÌ…²?Ç!RÒ4–Q¶héÞ{pOÚ7a¨„ñ/†Žy}´¶i”kåààéŸ9/•F7î½ÒÉÌšS­9¢Ë¥Ä¼ 8 9“eß„ g Ï$oZ”ý,‡Ò'ËBs=¶\_ÅÉûŠý-³nÍ|Ê·ÐND’lqiU:_¦¼õ:")ËGÓÊË´?‡J'äö´Çtž-dü…ÚlºªUô’­§£&3#O"w˜‡œo}àIÙARVÚÉ,ÛX7 ël]³eV"ˆÍ0ð1äÇʬN¯š¥’¹A'q ˆ=)ÊLƒýh)ÕWøO…ÛÚ ²°Es˜üd ÃBÊïg {Rªs˜mMÌrÔ¡âÎ Ž– Û{;’­›z1¸º|@âzrâ|8“ªßœ ¨äN¾6ECÜ"”Lt"­ \¶]»’7wʾ›C¤˜Íý¨¥ÛÞm䢶®Ã¾õT•šiݪ·ÛÖ)z–®k®mÜ¢.jT:Ú&á}ÈR'ÄŒJ‡!Æ·Î,lT”ý‡Ò w»?‘ù¾`¾d¶ "T"3Ôžðb-]OâÌ †,*NŠrîŽCo½=­Â†÷ðZzúC÷8”¿–~7{ê\5º-Ï»õFÔQ­Á˜ÖRõ{šä"áPj—¹NÙµ&Ÿ¨=°)óÀaÈRÛ ÅLi æC8y$yS¢ìG9DŠÙ”ŽWsA"HpÆCx ò©Ø éZQ_³tÝ[X\u…¢YÜS½ÿ5(bzÈÝÆÜjƒZ‡Æ÷ะAQö"ÅlPRoU0BõɹæÂ æ‡N³âhFÏÆ3¯ó[)¹&V£;²%ï#Ê]ÀIÈrÏñŸöa­ŸöÈÅä}VGع¯õ†opÙ2È,yçì¯r(Òb7Ã?ð¹ ­w0ô‘b2ú'áFÏßbX,£±`U·D+šJr ¸Y}ŸIÞ+fkXÆÙ0½¢y“êÍö¶”4îmm%&ar¾õmã—íä¡äÛe?Ì!RÌm£mzXW ‚°²ÔDr(Ÿaj Íw Õ/4+ú ·™ºqÕ¨QíãÀûU—aH„{8ª¦ì§8lͨºmzDW†Ti‰QìjT´A;ô¥­ªKª@½ÇeÕ+fUXR%µíï¤­Š²È!RÜs5t#½ 3¶Dÿ\ÍQoJÆe%º`Lt:g '°%„‰ž…|6ys¡ìÏq¸G["ª¨åWiøOÛço]MÌw@à;0Ò)É3|«ª·»!Ê\¢=‰K°rOŒV±èIÙuqŠOrA˜ÿ´-+£’ÓÀ3åîó ÝL…}±2J¹ LCN'£”³À~ÈýÊJ9Ì´JQF/×€ÈJWèmŸÁõšJNA;yà}ÈqF—»hgø²zty O율k%SÀ§©¸ƒ<²ìÍZ‡äû¥¯Ð”•ŠÓ¥ ÷,”}‡H’Ú|5‚0;åûî‘kåÑ3½¢[ZÉø®^„¡Ðp¿lúSMÓd¶CO Ñ¥mÅ­ŠV6 ¢…p NÂG)â¼7'jû‡r½ B¬¨9š°Á×ÀˆPé^ëÐ\O,u»`ÕÆÓ!;L9¾ß[³SPÍìï¨ÒÙHù1€H1õ‡hW™h÷°™ò£»Í”âpD¬{Ø„Mªƒâ?}P?öFOmù‡Û½Ã‹õfä7+­íð¢º$æ'€Ü=˪%àüUæÙÂÂ@cÀŒkvÁ—_NÇ-Áê0¾  Ù@tt©j™ï¢[Ǩör­äƒƒUÍòv^¹?jØøç~™öey?ˆä» O8 Yj»ïöóæ†w>Ì*¸ôsÀe/Hë{ Bx ²Ôšgx´þÔ¯?ÑOlÎ{!÷¶¾ÁSv=À>È}Ê:ÀV_þÙ<‹&Õ×)Ž·]ãcdm¢&E4ð9d©×³·Ñ}è·ÞÝfÜž×[ùüOÓe­¢ì–ƒšÿ–𾟇Í>„,7Æ:½½ Mo ûqÖ «¹¦ç³4ñs‰ßuÂiÈÓÊŘÙ^Œ›º µts{Yf¶‚G£²L+•¶¯‹–ãàN8yF=æÝÖ øµMçB+¦ã/Ukvè{ÏøL´¿Ä ã‹yŸøµ¿dp) ³µ²ÎJÚ£Ï N¾ÚÁÚ «1ÄϹÿØ>üD¹$]ü\á˜ýׂadõa‘p˜úCd |ðÖqoýÀÕff+ˆ'Gn“¼9œeC“Ãøa„~`?Ïð½‘ɉ‰Ñ~îG)?˜%|9K~„ú"Œoý£Û{éÓ(%Í’ˆôˆÌCà È{pµö¯C}¯]-ÊÙ~ ýª¨ÍýzØá× ­õ6÷ëQ—„_@þ"yõRö_ç)i¿5`M,fÄ¿õ@x²úc[£œÓY77¸Xß^7k¥"=y_¯.gª¨2‰ðYàsÈêcÝ“Ü-T®sLÕoEþÖú÷=ŒÉÄdÞD&&ç€ _h½]Qv§€!«_›ŸfkÆ{ ~Ãß5#âw ø²ütâOèe›=m]g§ç^Lμzùdrb8°8Éû6¶OÜ-pM´Zé¢÷m^ÎPQ¦-½TÒ*¦·,>CÓSÃÃQ‘q”mùë\!®Ë"† <ã‹·¤Ç&*ƒÀ!ÈC­÷*”ÝMà0d¹½¼ü§ç#Æõ%Äj8yþ§Ô—̼xû¾äž¢/ùmð¿mo|ÉL©Vq¡´Í—Üõ%¿ í6(DL¾D8çy¨ùþSáPüŸŒ7—ZSþí)?è&LpMù·£ô„q®)¶k°Ls\—Vuèt­¨¹ åꋳîWÞkFÉ»¼‘f®ýi`Q]óÀøÖ”Ï>yý„•Œ‹.î¥åðgÓo—–˜ ·5JxòÙŸR—Ì…wª.™ªóp²ð‘À˜Ã;a—Läïs…¸/Sˆ ;íá{€%‡öB òúÐ7a䞟¶vÕé·«ÅW¯žLM(¶&ªÉ€Ã…a2­©ÇkM‹¦Y,»¡ÍÈÐPäúênÆ0ÂQ‘¡CÎó…,uóEh®ËEÝq㺰‹7Ð~gJ!ð¦oÄÑ#QjãIrLþP:‘‚_Jùy€H­*Eòø]¨äãYô6–fÒsåjéí'®O¡[Å]¿¦ù»AAf{P]¿yOu=è¯wãùú„b–½ñÆNc®6Kµr…e´á–¡skxhkiίÊß Ú„ñíqÑVrÚ0õ54<Δ̵Œ;6`?ð¶?úØíú/7\«ð·äŸyÂÈêAÁ[Æÿ×`ZЪ†£•°c¢ññÀ¶òz*"7øE–í÷¡<„ÁÍîo•Ë6»­lÞæï)æ7Ò,ÛyñËjî¯ÌŠN‡¯%Zî¿ö„ñíDîÅѯŒgvõ—ç¦=v#Nò÷ƒa/äÞ=p/y{yü¡îeî¥bVU\ÌuÂÇÇãbFu1äÿP¬.æ3¶/|Ì¿ˆ~ù3åÂÍ1i'ãþÊ»áAÂËüKàO8yN¹,}¼—Ἄ÷¨8ËÌû ÷í›ùÃÈ;ÀxÜÌÛþɈŒ·6šÅãUcäkrl…åY?Ûñxað-·¦m§˜cºeEž@Œ,ÛAyãë9§] XIÔõüQp'Œoÿ'Íž‡ó:áþf86ó¯ „ñ½¦ôd/ÜÍ/ƒ>a|;åsœ»YÙámXS/.Lú(a²ú–ÂÛ¤½@ŒmkæÂŒÿ8X&ð¦Q$?¼ŒÇ_Îô÷‡¬ÿf¼Õ†º¿ÌVsŒV«hŽòÕ×X5džG|/:&n·ä ã‹g¯¬äÆ>À9„zFv[¸ÿ*¨>NÅ_Nr~$,"‹ò„ø×@šp²úêÐý ¢A4¤\’Îü_kÂû¥îÐØÞ$‡§Y&\?ò*Ö&‘æ ²}ë.Ñ-%úœäÓÓÊD¯î›Ú°ò8úß/Â+¯ìÃþÓÈ;@µ Ý<ùüÙÜâL+åïúPþ’þÓ;nÿ±D'ëçÍR±~†Ü¿Ä#øÉ¨8ºµª¢÷_DPÿ·Q{„w ßQtú?`¬  ¢œÿ xÆè<Žn6$žæbiÑRü;`Nø8W'7ζw9²·½Ó°™‘ìpv(K*hr¾¢Üÿ,øŽCWæ>Æsÿ°Ð^¸ÖÿØŽA‹µgf®ùäèÀ‹KôP‚tá~¨¢à*Ãí˜"}pTþB³=º¬oj®·ÑÃvÎü²û+ɨ"j—Ì_Aí(¯ 7V¥óWSþ. ‘kåGÉm¯ÓJ¥/Ý/evn‹°‘ݶÆý5Øa7änÑÚ oìØ×­qÓ¥íŽ+ú_=H:kª¼KõaÛBÖl–0nÞ§ö×ð½ <'eÊS7¶MDËK¦;4~£ÓCæ*[ò/Å)4.»|íÝ€÷„€I¶à:IÍjVÉdst?ü¤àM«°éjµüCÇô"s‹Îª³¹ïÔ¼_Û¹½*zh®íËÅOk¦v $¾:WjØ­UýÅEý½¡oÚç fÅ,¶äÔŠ†ðco­ÕÓáe7V[OLKâgC[«¦¶;÷ö™:VÌR11uϲ‘»wG&îî™ûðô’ŠÈýàrÁú§7sþÓË,¢W»·ßzµgOü‹™ùû[¹Kœk6=òäõ“‰{cm“t¹k®}¤_ÕÜŽþgýÕž)•ÿ´³V©ÖVJ†½®÷™oXwœª=™Ï«vδÖrµwy«Ùùbµ8¸¦ÕìÈ5b´ÛZK:´\³JÉ™ÑÏüö~ôÛÞù·}æ·o¾ÞÝ_ûóÀ›?óË?óË»ÚÑ£À/oll䊦iUŒw¹‚YÎÍJÉÔŠys³¬;–Q°ïæ_m~ùÚ?xãùë\µ¸ú3oý3odæü§—Ëb‹û;Ê~>_1C+±Y—¤á<ÞdЂ÷ [t=¸ÛÂüßÄä܌҂÷bÉÏÜù~Òê¹ÍšUqµZŸòå¾RÒOûœÐ½»ûLIÏ ßýYoµ·½ÕGõ»žxÇS&ö['õñsºûÔdE³~­Æ$›®ÐV?Ë,Ö Ázw“¥÷þGý":꺼[/~ÖMí'½ž¢çBüÛHÐaí+õü”wP&ö™6ퟎeÙ½ñÁáÑñ}æ 'øa1½b¨ ~Ûo;ÞàX³£PÒsëN¹ô?LÙÎÐðHmþl@üOm/¿oBŒ³üا8»ÏZÖ×§ÙSà ëtÔ ZÒÝ!±eé…ú. :vð½ÿDñ…;°zaTtÍbs««FÁ Áò› spp‰6c{1Ç\ýzÈŸEûIÏ?ïÿØãàðÈø>ÓG¢ÑÇÑ,qÇw†÷—ë8ôb~éMÄ_h[,¦¾º×áþB$ïSOíçéá)¦ê;¾ì~Ç †íŒý«~CHýu ÔÎXúFüwÊ¥6‘$[ûQU:#åŸ, Pþ”aà|œP‡­YkZ%3 Èîo¦üK’ ¯@Žo›ûáå’QyçØùã&ÊíS>g ÆÀ $ËxÇ_nöBî±."nÿ›0~Â>È}Êîäj=|®Ul½âF{^m3G·oÊI¢Þð1äDZÛq{™øI™ñ[à7 #3>2åQ– ¼\„¼›?.C^NÆŠ§ß„üMe+>,óLQøpòŠ2•Á`SËà -’Þ´ý–äæ¶nѪd†`%¹7¤þ–ß<„<[„zü}Á|ÿ|6·Ë »>„ü°% kG¶9à#È”Ux²îý³a¢†El_A~¥Ìê¸QA %<ÉðÃT•’͵cÙÖu­d›Q åö·S ñŸz¬GÙ·q¨뵩ÒùOR^ÀXG$ÅZéþ‚Þ?›µLöµŠ°Õþ¨‡°rwlFÒ¾¬ÕœuÓŠ¨ Êìïî­ü]ØE€j6Òì[Yúš¥ÛvôóQ¼þ^Ê ~Y: i¼ïô­ Ó ›ø{Pá¾ÍIÙŸáI®ÂÇø;ò þûOQ씌M†[éw'éw‡ü?Úócð#Õ^ipM:¯6—æÕìdþ-8È¿Óß•ütµJû£ò/Ì‚VÊ¿ÑËÕü¢S®~ñÙ´ñúY~Ñ;9V(FƆLJÇÇïä«¥r¾¬UòQ䂊þeÓEÙ<ú•zE»¼‹½MÖ’½ÎžéÝÒ½ÈV¶ÜyskM¯ŒLÒÊyÅt˜^4ú`Ý«DùžÙW s/Ãl‹ó7©l=ZJýªÿ»Ã;"“·ožâ Ô‘æŸÿ°}GÛ«¸!²QYkÔ1ó*fúïÿÃ~úíÿꚬ¬-(ÐëWKó_+8Ñy?:?t¬9³ÏãS¤¥UÖt‹bÚºB7g7CvÛMsGCkwÚªQÒwùJÌn±v‘SùKrÞ0½.éš­û†\4 ÞCÊþs£ÂóTÕ_¢Ús‹â&Þ΄yÈyeÞÂÕGÙqˆ$A#¬{=Áf³ˆUáƒ)‡°r ³ˆ±KE+‡„B„(߯'¥Êþ4‡Hû@/ä{;€A–ª Ð\,k%C ›³>eJ…†=I)†²?ÃaSØ£¨˜)»ó3_;,óÒ¬ Ìj5Û­gË;yÏ2OjeÃq£ÖB-ÿ¼f¹cpÏv; í>ü$FM:†S kb‡¡=Â{Å“Ò$eÿ”C$IMv|(È›RŽ@")VKßÔ3¤ڡÂ.È]Ê¤Ž³àJEñKR;À‚0dÖD’Q‡y•8£ pt;5E:7˜??Iw7¥¿î¸˜žÎ²ô×W4‹ðsB‰ f á È7ÔMŒ1w¤êº«)6üBœ§ÄM¬›¹qZQßtI½|ûâ…0«`BØ ¹[™U›øõ¯Á(• cóÒnß²楃à:PIÓüOR^º ŰM¶ø‚·ÎFÐéæLâD#Iҡ„®£Á; ’£ï´;!wÊóHj¶]á—Or)d«…b¬ô•Ù èKç½{cXD,±Ñ—z€}û”ÛÓ3W¾M—,Ò¡7$´ŒÝ[#)ÁŽBsUæhú>‡ü\™nßúVÕtÙØÆwõb=Ì-P€K\³‚$Oùfáad©:P¥áè刺 ²eYò®‘²¿Ê!RÒ4zPÊw»¹ÄCž 2£¿ÓžjÌÏ7=/è›oÞ÷‡Ü†¯?ëLÉF:¡ëÄUª¢ÜªUŸØøpŸHï °rœ )Â'¢KöAVoHGèžv)å\Þ€,‡.4©éf8y<ÝÜÞ…|WÝ»ˆºxÊþ‡H­vñÜÔ_jòDò¾•²Ÿä)iÜ|[+]¼ÄN,rTí@uß<‰sGc…uÍÒ Ž¥¸–¥§FÃr °èD”a;F>pƒ.KwjVE/Fߎ¿K:Ó§•uÜ®.K‹ ’9 ížMm›û‰É vs¢>ètÏ@–šuóg}›ð“•çK2E}U«•œ¬)¥¡sÀk¯Å¦¡#þ“Œ~n‡ %£ŸëÀaÈÃÊú9ŸeZÉmñ·¿×K[Yfë4ÀmØÄj8y>FM}.£)2—và ÈRbš:ç—ÀCnFKQSƒÞ–@­â?ÅSÖ‹†æðž9cë:{¢;šQ²D#¢Úœ„,Õ÷ŠEg¸š yk$©.Ÿ²À!RÒ4ΣlMäqØ›¿¤v­‡ð8d©…ˆÐÙ¶»dÒkº•±Øšñž®´£¨£R+¯¸½º¹JÏ;Øz•B©VÔiW‚Ä4Ï6áÈRk€ÛÈOR$wÓfZmÓ(šµÅûìì¬W’^YsÖ© þÚA™^{Xæ6q1úèŸ$ÿ‡ž†]B¹u šž¿)•hmÁUJ±¦¹Ž…†›n`¨•H:¸Þ„!?T/CÃT8²,ãr´½{Û·Ü1r£`U75¾'ì,/ƒ÷eÕ2ˆ9Ë \¶ ?JÞKQö9DJšÆÔ@€-r–Þºš 5šhlj¬œeg¥Sf¥D>¦¤¿×*3V™½. 'Ǫí6w¨ëÀ äLë5Ê®8y@Ù”1ÖÑÉ-à d¹}1OÈ¡1àä©d4“>„¬ÞM÷NÒ–]MÔÝ‘GÀyÈñoT¦³ÉhÛ§ K-<Ši¨Ï/F}y«"Š:|_¡…`2ÿäsñ94ÚR!£”À»\…,µ\%®”óÀ4ä´²Rúü(vÕ°h:pägkåŠ-¹ÚJäúÓÕç6ZÓ,7ÙvÍ$cÂ’øû[dÞÓ]3+%Ý Í)¾]­YýŠ–Áâ ã cOýá;£¡¼ £«`AÈíçQha¡“sTÂGŸ‰ÚMà(äÑÅ.GŸOL}µ‡Ýöà5ÈR“¡9XŠƒ<Öz/AÙuï@¾£l¼Â·Qöã"µzÕË5”»cXëõ ”ý=ã]ë;¶¬YkÞ1ްíåÝ(v:¥:vRªʾC$I—uB•õCƳ'ù£éJ°mÉí. %·_b‚Ä®AE„jÇ4B;+dÒü¾iÚs»î Qþ=2ê!‚£ãtðþŒ²; ƒ,åF·šrlF·¢n‹ñ¸|Y=88O1Lͦ©7wìï5m²(á½×aA„ÜŒsLÖtx}—…íHÃ!.}À 4ìo½áPv€J=û¶*èE{Ï2ÃqCåŠÒ¹±²·OÑ ADé:—f¨Èñˆ( r¹s¹Ÿø×,… Ã‰Úêž…,µv-f?”];[kTÔÍm¶±nÖYA³,C÷-'Ø=ꔨ¯ù {&"z8Yݘ&¶Ï§3­dbÇíì̂ᜮ¾×J5viyD'ç%Jÿ&lŽpò„2ý«.¢YÎz³CÞvÿ­W—u}Í@øÂ“ øeRŠÇOBs=²ìÕfDCy ¤ö4¶£ìÛ8T‹íÚTéÐ|j‡Hе2äQôÞI 1Vèc¡~ˆÑ¨p- ÛÐmè;L!:9HtG›ÉÐÞÁé­õÓÙ)Š@¶E)9FMެU´áðLg!«7œ“nÓ.êïõ’Yõ¯™d5”ª÷ø¾‡?]Mèô“· ó“Ïß.¾˜¹ï蛎«iÅöDz 8YxšR¦=]nÜ}àE¦Ûî?°Ž»\!îÊbçz…23{Ý´ñî‡g4Y}(rεVÓ6ü«klÚL¦{wØ’F"ävsþ”5¦¯^ÏM~>7379|7¦ÆDz8Yx;Lc:ûÂõ«ßõÚÑç:m£ftW´í‡ý‡2ôwpkð<A~”|h>‚¦`<#„Ô1ã¼³hà ÂxVAùoÉžÂ&6/@¾Û8.rzвëL5¦â;}TôÖÏ^Û¡‡¯YÆÇ ÈŽKˆí%àÇ?V¯êç®Ùƺn O}ŽÁ˜ÆRªáUè¬ùû‹ÚfiVÄåðäK­7+Êîð2äËÊ ºÎʺV±Yz³Ù€¼#ó®±m¥…ý$Q¼œ†¬¾ÕDØOÞÁŸ<=³E‡uÚ.¬öŠšõ8ت]4&zÈ1ÒªÇaÍ„½{[oÕ”Ý`_JáTxÓŽCÇdr§‰Þ‚|+6ÕHŸN$:ÃÀ{ã<£¼‹zn' «Oýs§™øíýÄeø ò³Ø4$y:‘ÆQíÀϼq;iâ<ó–õö/ÐòK_n¯Pñ"{Ç”õ¢ðKDµ ¨tæ-ÞFt¦Ï!K]F#®ÀûÀyÈóÉw•”ýÇ")ÒX ‰;8Ê^)jVѰõ"wzÒaͲۃýÉ·¨k'eù¸‡æ@¸yA¹H—VM—ëf{Ï*Ú96¿Š³»¢ a¤¹óY±ù1©³»D& ¼ ùfë›ew˜,ue[¤³ØÌÜ¥Zi ¨Q¿àÇch'í½nikúö“tH|Ý´¿S£ýÕ O<Иió7.¸?º{Q´HÜ‘ÆÛÉï²0Ë¥ç©ÀôB1·SKpç“ëGñ¤ñjò²0ž±Ä3šsùú6‹$5ÒQ»f8´aÞ[ç®UV´=ÕZôW+]·óÕ=‹f  |Y.‚â?½V/CÖ-A°óÄ[;}¯%*Œ°ö‚!·3ií?BÖÆ£ýó¤}ƒº‘ÆÅïÞ[Ýc0"ŒgkaX‡r¦ä=c69É_ö+:“K'€ ¥œMD÷²ËY„ðÿ€kÉw!8Yj5'ô/÷_B~Ùú^—²»|ù•²Ya«–YmbÄá5ð-ä·Ê\:°üÂÙL£ª_¹¼Þ1¾¼î~ø½àÑûÙÅé—¹ÅÁªeÒ¾Õœi­åƒÕ¢þáïo¹úní{®, )íöŽà®ë?TŒ£Àó…=}cÇúOÇ2•ÂešÚ¶m,ôT÷À|×2F½0 Û ŠwA¦x^ÚÍî^ÿ»YR,ÜÂs]öª>á\{vÜÊl·Uü-\aCIp¤°9Döö? ‡<ßÈ3±USÇ2†ä<蘗«tDA߈ÿyd¢ÔÆ!’d8Ñý¡t"‡¤´Ùç8‡H­Š#yNÕ£ÝÄM€,ÅhiÚ¥œI?³j•U½TLgYµL±tµTN‹ßèÿäÓÓÊDoo{èÃU(ûóL ëm´véeg<–„ÜlEÆw?˜q¶þÀÄÈ qöƒq0‡Š9yEöO¥Øgƒw=ü• ñÂ|‚|²½å%ÞÚ^ ïãimOûé2‚-Z¾m\M•)i´Í»W4>Íú³W6÷»ñJå¦Öb¬Ô××DÚ“&a*…Œ¥W3d0Y6úb`@¼X/QÂ×_«{Ä~šó´¿Ã/´‡^ÿôäüÒÒK642>68111ºÏŒf0˜è.š†7»=<”Ï;§»­½lsÔ¥ä†Üÿ EQ˜ìn­}Zv{½ä|ñþꋽ˜_zñÚèÍóx;“ÞFJºO{ë[mÕbî–E—1Íý %$”^ ,›ßx9Äg³ŸÌ2Þ1]a?JÜ/pe¸ S†Hõz¾òžâÉ5Í‹)ýç Ù¢^òv%Ø´7ÏStÇ BÛ;Ö5k™¶=HWw8–ûOtgÝ, ǘ±•N4ÆŒ¯Z•Úckµ{‚Ó¶¯4]¶F/âÑekÓ6zwŸ©#"ºl:º3£nt9626886zo]"ÿéy?´t㳉ñ{#üŽßsÍ‘ýåÒUø\h¤¤]ãç~»©ã> UNðǶ㕯¡˜„IL„mÒÑÿÔö‹,m/áØ¶p ¥ôr‰w˜• ›‹ºj¯˜‹$ñU™R«k­æ:—Z”úجY­´¯T‘´F1âIk5Ó6,‘´ZIkÔÑåÍwMÜœ¸7¶ÏÜÝD0«´±±‘£…QmðÛ~ÊÌr^³£PÒsëN¹ô?LÙÎСHFÌ0µV£Q3L-r|ûËñ'¶ñPša Íõø²û:Z]Ë]òí6õEJ!X£oÄ¿­‘(µqˆ$Ù8ÛUé|=å_b ü…†-?´ñ”_>áTýƒØ<|Km|vô 4…N•æ°ã/·Ç!ÇX-‡6¾FAßV³^/ˆöŽêYÆšáv*þM˜þ ¢ÆMÜîßBV?ÌqqgŒïßÎ)|ÑØ2ê{ÞQ’ßžï b\Þ‚,|gEèxq_ï bÝæŠw[¦x^ŠÿxGlÜ"b¥ðã­Í5òxGlÙ*ÞÃÆóÈBÎÆVüŽe[×µ’mFôÚä,¾™RˆoÔc™o¢¨Ë´©ÒùVÊ?R ’b­œøDïºö7Zµ*üØÙ—Ð ¡Ò…t¡¹¶/k5gÝ´"ª‚2û¹½5ŸƒQ¨f Í®r××F¢(i)?È%ì‚Üc£}§om˜VØT=vCîN^'¾ ’\„wäü·‚b§dÌ1lŸÌ¿µuËο#—’Ÿ®VŸhŽ–a´Rþ^®ærõ‹Ï¦×Ïò‹ÞÀX¡P¿“¯–Êù²VÉó›ìsA…ÿèǰè~¥^áÿSë¬yÎú:{¦WtË{œce‹YææÖš^™dEÓ;B¥ ‡>X×*Å(÷3ûjaaîe˜q.§þ€×3ÚJýªÿ»Ã;ºþ·ožâ^±#̓1þÃö p®âX¼Ý‹:ˆ™W1ÓÿÀüüigMÖÎí¯_-Í­àÆçýè4þбæÌÞÆ¦P·šmc›:7g6CfÛ tGskw›ÛªQÒwùJÌÎëˆÊ_‘ó‰ƒ×Ùë’®ÙºoÆE³Pk\máöå‹yªê/k–iº.nÞm`Ü– =Î(ÉZ¸ò(û‡H4Bdj¥à@é`ÊŸ…8ˆï·§¶õ0Î+bXP©¿â¹#ÛÀSO%¯ʾ‡C¤=× ùÜà)ÈRÕšë‘e­dhas±‡ ŠC©Ð§¢“R eÿ‡H1©ådÕ2*NNZ9‡¡ÂsÏ% œÃPaȖĤ”CÙ_à)&åÜ\2ʺÍêÏ5Õ*n§@¾ßÞ¾8/HúôD˜ƒ,å~#tæN)ÌÏý&ar>yQâIRg‡?”NäÑÁv¨ À¦\%«åj£Ig‚‡µ’ûK6ņrCwĪr÷øðÏv·J}‘<Ž"õG1HèÝsŒ‚¦u ´;!wÊP ¥ô]è.¼N/@–rSÓ9eo×rDÆ€! ’6s.³™e…šc®®ºÖ<<ô"Ër¹œ¸E«KÀaÈÃ1:BïΑˆO5q\Ù‚?¨%EYÅq˜€H’ ©[•Ήðs»>â;CAnÐZg*ôzjÁ†Ý|pv W­k¬âŽ÷è€ÞߥÍyÁ ¤Mw›ÖcÑjîôuåá'?Q6¾{ÞJ"vƒ²LýF›Š®é*žÙôàR‘n,§ç—‚ë9Ùw¡¹r7ÇpµWk»­‘G:bó8y.ÆcÄR6e7| ù©²*;ð´¨a‹gÀ—_*³9™ÑlVµÌb­ õÀ\7Œ¤»þ}É1}¨Á…ÁDî ‰4âsع¯õ&CÙ2ÈLYIcþ-Uþvÿ6eÿêrÞym¿yNøhb|øòeæ§2ϵ¢eÜ´e·Bp6¥8y§C¢/öBîm½uÑ—z€}¥Œz[%|Ô|§óÀ@VBK 8y$ÆúpƒòrD_÷ÆWÒ}gŒC¤¤ipÍ£•7o”+H µxòqj¥ƒM”î#¬ó¯Ó¯Zú`ã©vÛX«¸Rn'g%zIµþ¸‹-ñ(  øòsé:n®ÛC4s ꋈÊ+à"äÅÖû"Ên¸yIÙèÛ„]åÿøòÛ‹ázzÐÀ?ƒüYòmž²ÿœC¤¤iÀ˜ëØ×s ê-¼(Z§S¾« IÒí4OE~¤UÊSøU(i¶ðÕøDìð2äËÒõÖ\_ç ™tcN+eé’á¢p,Mìú'Zïa(»+ÀIȓʶ}’mðˆš:±¹üòDZ©ì«ç #µt~&ÕšÕÕ-ñKáa|««Ý˜Ôðf‰õ¢h§@dz€ 2k}§p𫋦ðw+}šC¤¤iœE ØšNáˆ?Q-Èí¡ú„c[§i2Ú5ݪϢûOÍÐ Þ3hšwt» Ý‹[µà•\…Á{0ÓAø ò+enÎ:³têâ\_ÉÍŽ>Ê6JÃüå fVJ[¢ •[[VÁ‰5Ôs\¶c÷`ÄFÙßá)iPÆ×P S‘Ê)šNØÞƒ‹h„êƒÅ‹þ«5Ë_ Àã¸6ËxoÜWœÒ–7 B¯” äëÈvÇ KY”˜!s‹~ü{ÂI[e?Î!RL¥?¶\×UHÞÁþùàÂ=Zí»ÓI²U¥C£‰ãÙõpˆžudr:!äö|í}ÀL„ާcŒã©m¯\·*`¦ìÏ@>£¬™3Y¦>%Jg· ߊMUq G‰Ý0ðägÉèí6ð9d¹©?þÓv=G´y‰yà+Èêßz ‘‘V˜úÑtªî?ÿgOŠRìõM ¸¡ ð’Æ”Quˆ})z%À¦í‚tR¢5C r›+U{)&X ¬ ‘bjámFÔ™ÈÆLD:]»Zߘ)»v`7äneu|2Éê#?o9¶è¶Z‡°v.в ¾Êlz«œ–'¼«+,:¦¨y³Tcîë¿®\ ÓUÓõÖ8aTª5g +ÊŒ›©OHu³r /,Ó©=mxé&Œ·áj}øð¦—FsKãt¦™0L£¹ž‚¬>aøh’Ö5K+8Ôø¨:MÎ5Û›öö¦·Ê ‡­kÔÝÑw…šÈ÷_C~­\ˆ>ï%Ÿ ÃÖYz˜¤ú¿Ñ´¿ÿR˜d?̰r_r-ï²¼¶·-ïZÆÛòTE›Ý54µ‘ZÝ쮡©vA–êh·v’Õß뛑4Ûot,ƒ—Ô ƒ­—îRßt¼†Z”z‰— Ð üò§êã'o뀿Ã(ñwVNÈ­‹$Õàn Ë{Ûàn4a¼ ®£š[7Ëe=êZÆÈvwmð4ä†û7ÐÖn¤¶-Ñ)*e4´Ý­º{îÕí¸³Ü±6=Jë­03> |Y~«‹°1ß„ßÜ[c¾Ù„1s°¸"jÌ7aÀ7“5æ›0à›±³»•Ì5£ •²^”VÐê׿ú›]¹Ð­iU©•"ßÚÛM¥go «ït=¿¾U¥ðÍ6lÚOY_5˲ËÀÖ ÕN^†Þ,¾56¢ÒLCN·ÞØ(» À~ÈýÊz:9§‹ã”ôs 8 YnÏièîʧÓ/–¤4 |ùa2 >‚üH=`¿'£S:–é½9&ÚÆ‰ÒcàÈêmü#rIåZÉ1ª%£`8[â! t¹]sIõª·%áöª·š0Þ^õxиsS´)£Nà9Èñ¸lJ”];ðÞ„|sh)<’Œ–2ÀÑT=¸QÔ’øÍ™”ÿðd©í,¡¹vxnÃønX ôù*¬ßJ¶G»H(û6‘bª€#ËÞLAH¾—QäÁ½-þ Š tñÛÂÎ Ó¡Ö×Å!’b­Ü÷®¹éŸˆôö}ºÁ®íöÀ;ö2nLIßÞš‡* ïC¾¯®VÑ1Ó²Pͺ‚7’~ù+ÞH2V3WõMí¶L:ç?˜”óvú­ÚéÖô+ö`Uôœ^yŸ¸ßô¾’ëë¯*¥-zdÉÞùÊR–´Âº^üÒýÇSM·þÓÉ¥ù…¹¥É{ã÷}Óqµ‹ß˾Â4„öAØYxxLߨq«öq¼Â4k8zˆúOø×&e†'îHXÂ5Žô5Ò;Ý`ZÕ’ùw!ø7Õ/pð[Ó„Ïuò¼2×N»¶¶æ2’:m?ŒÆCØ Yjíè'º!=Ÿ~9ûÉäðhL ‰*³ ˜‡œO¤!=×*…wÞãe£¢ i†’!CÄÆóà䘖ËEÝ.XF•úƈšÚÀHJ¡c¡oÄÿž QjãP-”¹¥J‡¢úcÊoã?}‰PÆõ¾–é¶\r¿^½sc–‚Y^iºe‡V|™íþª¤+G7ÜÉ ïF”©8nDÉx[5¶V2W‚mZ^xF—ë4(ç˜ [n{>?Éÿ3߭⻩2€C>™´ï&²Ÿp¤?‘!­î¡xŸ4’ªK ÝÂÞ£ÜnüUÐ*tŠ“ δÊVh€†•¾-C/iW†h™ÆÑ°Æcu —iÞ_×¶¯Dú3¤Â&÷&R}Ô-wä›ÿôã74¯ë]±c»•ºRs¥÷®ÛªÙlͻϽäÖºã:²ŠwWPÁÝsºŸõª^)Ò&Táòp·„yÆ|`oŒyYÏÆ‹§þa1še¤½ñA7§•Jæ†wHÑ ø¤lT4GwMÝÙÐõ ’³±Š-Z¢I”‚ðäÊ%ú¤iýùË4ZbÕíFÜæë‘ÞaêüºvÞ Ï׈Åß\£#{õ wHUßÿâꪠk–.¼Æûì¹]Œ?]]u÷óW “÷îÅÔSS]^ÎA¾ÃO¦§îô ›¯¸'ÚUÛ§ë§2¬wP:2@-L´ýð\>¬Þ~^¬je£´5èí:Ö-ËmùôúG°øÎ2O?Ÿ[`šCòW\­$Z¢)´­)e×tÍöÚ^Þõʪˆ›×rx²Ô)äð\—õï„ h¢„!CI긋½7´úg&¨%âÒ ¼Yî’áøÖɈËUàuÈ×cÓNä:ew xò eõœ¬_IæŸý‘QÐMà8äñØ$u)Q™>†ü8ýÜNCžVÖÏ™,3rz.ë i|¿(ý¥àg?S¦v5x•ß•D‡µ0 #Î?ò-ÀCîäVÒáücd`<á|'’Vk©MÒ4hªÍ½Ç|Ž^IÕïÍju[£ìº€½{ÕÛs´wþ’²:”QUpr|{4w¿â|W5MA~”ŒšÆ€!?VVÓyV¿S½Z"=a;Žh;ŸæÒרÈnð«ïw÷½[•)Ïø&áa°]b06ã’½‘xªe¥$/˳.Ê.¼Y}ƒÁéà" RpÝ,…û[bôø ò+ef ÜÕú4*˜e×?¹ƒ¡Ð9ÍŒYÑÝÞYs‚ ¹»«ºðpÖF¸yA½²wNôG OÀ†PíŒ7ÿ©pÔ0‡¬Œ'jxÎG 7i Ì©YÜé–±u›w>£_yÓdü-EÝõE%½(Zš§(ásÈêŽÜЉxýÒ9Šƒéy_‡÷Ú¤(×gàGx²úÀHظjŠÑºÉ4Û6 †÷.ª ©y!ì†Üßøy·‡”"» ârx²Ô˜^¬»˜Ç /A¾¤¬ŸkÁ „^UPã{¯[´vÛ0uaƒ&†— Ç­u,ûN!ì>³àÄ`1eíi Jm"IZò…¥iÅ4 zœC¤VyHÜÜeŒn‡õ÷÷cüC4àü|&ˆ Äßãâbþ>"Ešwú‰§¾©•«nPäíïàׯ³ì- ³LI_u˜muqîÜbnŒ~R}OktY!3”Î~ Üjá½B)^¥â\[dÿ‡ïÞá`dÈûåˆÿÙ˜ÿÓ€÷•‘QÆîJ‚,5— ØÂ4ä`<-ìäö—ÐÅ«gTVêÿÀÃÄ«§€¼”®žÐl.cˆ6çŒÿбjFx~‡²oãPm~ç°*ÚÍ×É!’b­ü(¹m˜Z©ô¥û¥ÌÎ-–6²ÛÊUØa7än™yÁ(»±rºT¢=”Eÿ«ÃæèNúS;³˜ÜžV]Å÷‚Bœ”)Dä\ø­é ›çOS¿!ÏM[d^{ËsoiynÑ4;·W¼Csm_.~Z3°óø*L©)¶VoÍÌŠYÖšà\Ôßú†½¯txY/W×SO[–í+ý´Žì3u¬˜¥bbê8–eÃ÷FG†F÷ÌmìzÒÁå‚õOoæü§=8ÝÁža;ÿ>뀖¦™K0o7½?Q`¼¯ïÎÄ­ÆÁ”ÍÖéá4w`Z6‹þ¶ú³BϘÃ_ŠßW-ï§½§:6cøýÔ;m_éå§½ƒºµCý§¥ƒu;¨Ñ{ã?ë öºƒò7Q-~ŒûqöYõÄ!e·z¿½§itIܧz°KvuÛY¯ŸõHûI£?ë‘öi4ºÏÔ‘tt÷ÎðàÝ;cûË[z1¿ô&â/´-S_Ýp!’÷)ȧöÆÙôpˆSõ_¶è2º("l[÷Bj ¸¶.¥6‘$[»òÔözÊ¿‚)@µ×D8¡£Á ×€ =#åïu ìƒÜ£/*•wþ‡?nâÜ1µû ˜Ý(wO§_ÄØñ—Û,U70¶ÊˆØ+mÀü ¯B¾ºý$åŸöC–»²q7S=V0ª¶´­Þ>ü$[=:°–à<¼ù^lÆz 8Yê qc½| ùiò½eÿŒC¤˜Jß±lëºV²Í‡N-ôÛ)…®O½(û6Õº¹6U:﨑pˆ¤X+'>ÑßöF«V…/+A7„JlD Fµš³nZUA™•÷Ö@Ê0ŠÕ dÇa¤u gXIùñaä®í;}kÃ´ÂÆ>è°²ÔXCM'|/@$¹ ÖìÈ3øÏD±S2æªÓïNÒïù´çÇàGör¥Á5éD¼~Ø\𷳓ù·¶nÙùwäRòÓÕêÍÑò/Ì‚VÊ¿ÑËÕü¢S®~ñÙ´ñúY~ÑÛ!2V(FƆLJÇÇïä«¥r¾¬Uò=P¹ ºôcØóG¿R¯î‚}é&›É^gϼ{úp‰™enn­é•‘IV4Ýp¦ ‡>pó)F9ŸÙW s/Ã,Œs8õ² mºJýªÿ»Ã;úý·ož"@9Òñ¶ïh~s7d0*k -t3¯b¦ÿþ›Áüïyõ›l­-(ÐëWKó_+8éy?:?t¬9³—ñ©³¡ÇãÍ¹ÌÆËv»ÜÑÊÚÝV¶j”ô]¾³"‹ä)°¿&ç ¯³×%]£›ÅÈ~‹fÁ»J ž_Ìõª¥Èìs‹âvÝÆm©Ð»$Y WeŸãI‚FX§zеÆ(B——LùÃT£ÊŠ4žß‘íà1ÈÇ’WeœÃ¦c¡É«ƒÜkðd©z Í•î·3´°ù¸CÐÁ!TÂéŠPÒe‚C¤˜ôqÜ®•Ëšµ•×Ëaè‚°rOzáž& {0)½Pö§9DŠI/§¼C@9yíFÏC>Ÿ€v‚îðä Ék‡ÒE‘bÒNæ¹V³ÝPgpð¶U2-6g;FYs\©±_–ÂAÖíPar>F¥9†S ëzÚ¡(Â!ÈCÉ+²æIRig?”N䙆Žð¤X-‡ÝÆœærjñ¾”ª{@E.Çl¹VÒÄs1JŒýcóŽE‰Óá(xŠ:‹²Ž1f×VlÝ'ÄMÅÏu2VÑrZa×Wé#9S ©Ðk%91F0]—7EGú×éÔWZ+Óÿ¯”ítô3¿‘4»@AfÊ4O2:tªÓQµ—o_¼§Õ *Ýõ°mªI’ÖÆr¹ÈN‘d8|§«H¦MüÚ)dNÈ )[ÕyDòèAÞ6Í öT’Ð+’ vmô§Ž»!wË %µÛ¨jB=ÀÓ¥Â×ðY‡eÿR©ˆŒ²§Î@>£l.]ÿ r–Ú’¸ #^ð°rÿØ0wý_ mx×[Ï¢ æ ¬–°²T×JéCÆ¡»; ¼Y*ÔµdÎz½ûؤ¶ÝÇ&ëÅcC"pxòõ8•±Mñ>ò,*‚0¾85ëF…ÆšáØnß]Ö63£Y¶¦;¯¼—í2iÿ£ôd#Ñw/IØü¾$å^Æ6Œ¢³î2æ¨z¿’ ‰Îƒa/ä^e’§‚ðV:&âÆø|$°71wÏÞÆDœ;P‹‰"ò5[[ ÈŸàm,ùþƒÿTx ŰM¶ø^7Ö«J‡|â Õ¦P##CŒ¤ÉQcnvB–ïWÛšHÝÖ˜½U^1KFq¯²úËÞ¸Í1ÙŠðf^|pò¤²­Óý©4½˜äÓ{'To‡7õeÃÑËÕd»‡Ë}°ëåm\‰C ØšöPQ|nõ*ÚÖU˜G»¬yxŒ6÷Â7áN`ä.éšÚ±#´q·hßE„Î{!KEí(b$e× ìƒÜ§nÀ¢^ä*Œ7@¤V{nrØ~多/eæ)iiÔ@€­ñ"GüÐWM´O@–r´ÁœÐvÏF7âK0êö@îQò$¡>·TÞ]NŒ®oB¾ccÚewùÁ©È—wcÛ ¼T ýˀșë!Â¥ö§3Z”[óa/x”¨Û[Àä\l½Ýaïr?ÑŽŽ¸ÜN@žHF+yà$dõ¸ùT–i¬°®YZÁÑ-&þ@&ѹü$UhV‘Ö£àæõ÷zÁÁ»¸¸T ¦ð†ÿ. ½¯lê««FÁÐ+‘÷JFâšo>‚üH¹=ÞøÈ¿—U/ʘÿup!ì¬æ¢ùo}”nÚ-"шÙàmÈ·[ß(»€YÈêsoÂQe?È¡ôN±¨¯Ÿ3‹d9¯¸­ô¢­†²Ïsˆ”4¨[õ­/Ÿ Ò£¦Ø ¹;¶¤LàGLz€g Ë-¥ÅøÝäÒ­îÓÀØ¥S5Úöb¹BàGñ2ð6ä¼*ew˜…¼^•²ä0!¯zÓ7b÷ЫRöy÷È«fP¶hIÙ›H¤Fc’vàqÈRS§¡Cévz?Ð '%HuOCŽo_ï!Ú%›•KÀ^È ÌÈQvg€}û” ø¬?7m >WOœðä;1jI ‰Êà#È’ÑÒ8ð1äÇÉ»Ê~šC$EÈV¦ËzÙØÒ´ÙšUÜbZEøÁ[¾–=¼ùBlörØÛè(j0·`·„× K‡n0”ÝEàuÈו5åÍ ‰ Q¸ädE*çg,½fÖ]ƒ1¾kº>f©°^6ŠŽhørvBÈm¿huø2Àe«fªü§Â ú6L#@ùJ4¸ 9­ _¼Á‚Ô(œmª‡/Í”Nàù}S·E-—u/@–2!1Ë„~S¡Ob%e2”ý%‘’¦Á =b¶ÜÝnX;¼\4°ƒYùTã\QüÖÚ³Z³ü'í­5ð#yØ)ad©hSÌfóÐ !ƒÌ’7Êþ*‡HIÓB Ø¢)¸`¯¶¨ÇN5‡u§âž‚ûH«à9+o¢¤Ù6“ ؼY*¤‹q™‹¸Üæ!ç[fRv×C‡Ô-Z´+O­v+Ãh<„#G’oÏ”ý(‡HIÓàj …n刿\UI;P}?ÇŽM¡>'Q«%2ÝÀ3¥föŬvº!< ùlòæBÙŸã)ic¨[4ôðŽR»C%Œ?˜óvk›F¹Vf%½²æ¬‹ô%£¢Ûtù ý€‡JkNµ&<¸&æ]ÀiÈRóEb~z$œ<“¼iQö³"ÅTúcËõ(<$ï+(ö¸²Y+UÁ8ÚD€H’­«G•ÎÝ”z"ÀxÎú4­RÞƒŠÕ®; kêW ™tÕ?±M±%]^á­æ¤DCMâx8y¼õ¡&ewxò]eݵ ¿>qK LºeMÀJŒ§·M‹Zî$ò&lƒ,ßÂCCKiÄå(°3¥pŠUÌB)»ƒÀ.È]Ê*¹ø–‚Yq4£b{½²­•u¦—tÏÿ3MØáÇnà䱨Ôv°¹=cW¥ÝNAžJFiw€!?L¾9Sö8DR¤q3˜ƒñ^e×Xóü+h¥’.¼ÎvßW¹‡Ü>Œ˜Œ§ý½f•ŒÈ;r# ˆØä€c¥LZÌ€(» ðd¹Eêm•À6Öº¨‰qàÈ”É ù‡ Wtß÷8[U³d®mÃW_mëµslÞaëâÎèlˆpòP|ö´ûe‘öDlî§ 'à(»aàCÈêé0­§‹Z67x8 Yjª—Îmû™EµCi~Y*bÓÎÌ“»ÇCQ;ǘÿ„-3ÀÞTÜçøŽ,¿×Jµ°z¸‹²?Líéø’²oãPm|Ù¼V L‡H‡Hеòâëd›/#Ôë—nüGWÛŽå_\ª{dî[˜5᳡[Â_(—(«o:ºUq™6hÛ,³Z«ø’7®<p, •.úÍõÄ2wÀ>Â0Ý´—íbm!@µvÑ¡J‡:c"Å6Úˆ¼N(²ûx’ò» £©ø¯Žè>žÀ$ž¤â¼.ðaÐÎÝ͛ٱý+lV³é–³›ÿˆ¼ &J™Äý8ð9äçêNnÇÀCæòØîÅËõz….Ò-Ñ4AŸ“;iúèõÁ– «§`ò´þ}ãšYÙm/wd³!.瀗 Kíºk6”Ý)àeÈ—•4œcoê·£¸½¨]Õ þãîFcΆ98XÕ,ç+oOÝMƒW€ ”i{ 7¶^0+EæÑÃÄPÐÒõMsM¯˜5›˜‰2{#äVÈbÒs‡Û‰ºŒKa ³ÈíyjO;PʾCµ´[•Î|Êï¢DR¬•N2ÿzÐ%Héc(‡°²Ô$kl}:19 < Yja[Ì9Qv]ÀsÕ²¯‘Gâžþ^ ©Ùj*;¼ù~Œ*Ÿô%&3À'Ÿ$£²À9ÈsÊ*nÕ”ýS‘i)È’ ëw€î¶/÷àrÁŠÈü*0¸w$†‹g™D\ã)¦æÿÊmþ™PÛÃ,³´JÑ,çü‰-6Åü+Ã+ÄÓþÇîoh€ûÖŠVr´5#rY:ê) *Ômàä­=É{ÝZ‰Èö:𻿫¬Ú?2y§£Üæ ÚX‰æ÷€òV¦ûà+gÔ™ÌrµFWkóÙ0Ü~Œ|h Ðx ¹uƒ=ìÃ^¦üxŒ0Á©„—(IÒGwLfÒŸkkºíöÖU­ðΩ§¦­dâ,߀aä>e–së{0èU\iƒøý€m¼³Ùmf›5·B],Ûš eͲh‚ç¶GVÝÿŸÏ~‹ ¸?—å-ørsˆŠe™`Ûþ[)Õô‚Yrù"^«ÐÈÏ-‘¾éþÿJÉU§È~^˜ÿgàL8yB™ÿý(þMºð‹ÃC¼Ÿƒ5!·+%^ ø–Ô0@Í&”· ¯ó×bÕÀõwj½ncõšo¶þ2Ή;â—À~„ÜUgŠ\?ipU1—èë(!7ŒU,Ñ ìhȬ;┾„!¯'Ö/#ïãé¿ç´ò¸éo‚?áO¢›þ8+V'‘¤›þ¬ ÝôÏóÏŪָi üãsÓO•Ý´&-® „Üzh\Z+‹S*€á^zè"ò0}Í‘4V¸!ɺ“ð/uz#LU=BîòVEª³ýú]jâ½É·¨/.É*Ø+•r;"ùOïöËô#ânl Œ ƒ |êGhxöÛYîÖ§ˆ;¶u0^•ýX”®{4Ï¿q>YÜg K¨´œ¾}ù¶_%Òü6xª­ßòŸ~¥û˜^fúìƒËtÕ—OfûŒ&è>J`_ú‰te0.ÿDº W’vZYÕ}˜ k¶È}È„AUð¨Æê>Äàï ï[¼ÉÃBÞ–*Ðl.cÝ;lËÔkdg'SQK!”}‡H4>ò¿¡FÇaØ©d ñé///¹Þßú†¥Ûµ’cOYÅ¬í¸ ~j¥f”Šßüž±š¹ªo¶cgÒ¹Å"M—ç 5Ëýƒvz`€5ýŠúŸŠ¾‘Ó+ï3÷ýÏ&'Ý“n9_ GU)meÞé[öTº8Åì»ûÈëS Za]/~éþ㩦¿;ðý`¤3½0·0¹0=ûvòÞøW¯q}»4·è~{ñUH…Ö`Z„½{E+”¾q¢ùÇ—ý"Ï´Ô·Ã/f°î­zkáÃ÷Æm‚¨÷qEè“)‚zKáiô5RÒ4ÞC‰ªùŸÐÒ>3ýâÍäð¨bãØ@ý^€|!‰ÆÑ• 9½åOA º9Úeh«["OãbjÏ®!Ý„âü©l§fçÞN.ÌýÕäÒìó…É{ŠMc 5I(=|“ig2Ø—Ät‡i¥u¢-„X_ãØ_“a¯nš< µ½{J4¾ ýøSÙBN<Ÿ~»4ùfú‹“÷†Ç÷P‰„‰U2Á–` ªp(Ìm â „˜÷q%Ø£˜Š§¡S…æz|ÙÛ¥£W ¡#0šûy•fAßè¦oÃé#qÔ QjãPmTÖ¦Jçû)“d€HŠÖÒýÅ{Ýf³–iض&þ ÜPá„Ý»c³öe­æ¬›VDmPf¿FÅnÔmä×À.T³‘æ=µÇ,}Íõì¶øc\¿ò·¶~9¾;:–Ý>`ôŠ9Æw̓°b(û3"ÉUÀŽoµ-†=øï×¢Ø)› óeô»“ô»Cþíù1ø‘j¯4¸&ˆ×›Kórv2ÿÖí>íü;ý½QÉOW«O4GË¿0 Z)ÿF/Wó‹N¹úÅgÓÆëgùE/P+ #cÃãÃããwòn:EL³¨ÞM¶5Q×Xa]³´‚ãv•ïÝA‘q7=¨@[Zlï±» h‹V/qïÎBVB/füw»3©V®Ùõð#¢mAå„\”Ôê6ØÇeß °ñSö—9DJšç…ZØø ‚ÜÒhx„JÛÆRaJÍòІe«þœ‰¿~âÇ®FűÌb­àƯô ÓYGƒ~›… Ò üò§Ê:owÃhò‚d¸cqüž…ØæS¸u'ÑØ„(u¥s*])ÉÍ.b±I¿o%^„¬¾¢Ú–•ÑÌ%àeÈñÍtñ×et¤L“ÐÉàäeÎJLr…[©úìž'KÍòELrK²2š¹œ‚<•ŒfòÀ‡*kæ˘•Ò–·ù+xŽÃ_lŽ/ˆØ#à¿h}|‘N5ü*wÙkÒ;eÿ ‘’¦Á]½×Êø‚_û`n´;/Ø¥§_4/yHvËD¦x²Ôößðw©±±BÔÇ›ËÀ4d©£˜¡ìÎû!÷+±Ì ÇuØ0áMÈ7cSËao›‹ŒRrÀÈ#É(%…,·ØÃ*<…CÙqˆÔj÷ÎméõzÚ>&íW)ûq‘’¦q5`‹¦p¼MW‚Ô¨•¶ã_é¸A ÚÞƒÌôôµ?…ã:{wXý LQ›&®]ÀQÈRMK̦oBs7S¡wý%eL7Ѥ¼³7M+ƒ°E‹´cOÙ̘P}q£™ãMÚ%GF\)4^~5fbÙ ÌBζޘ 2ÂAȃÉ[eŸã)i·P¶Æ˜Û6Gy݆ù§t¤¶h‡®ÓŰ݈ˆ^|%¶€Oi»QºÌCη>î£ìzC‡”-:à øu‚1Þ¨8ºµªtáÑ?±~ ò×Zï}n£~YjÒA­ÙSö_ç)¦Ò[®ïïÉ;8Üð°GÛ>)û6‘$ð!U:ÔupÏù·¦•]*"äöÞÇ6áàm+öqÄæ"Af­÷q”ÝiàUÈê ôâ\RþéTc7i:%9ñšë‘å÷Z©Vþ `ʧö´íRömªµÝ6U:C)( ’b­\_òé]Iº„Ä Î<{½ –… gJ#T:}šë‰å¢n,Ã%DTå8²·æ3“ PÍ|îªÒ¡‘ü1‘ke†^kÌ{Æ“±M7l2hãˆV²MVÐJ%½ÈžÔ¬£28øy­ñ$;}?ò IT9¸©oãáT›§ ›­hØJ‹ïEc×zû_Üßøó+Þv˜‚©¯ºMÆðö–úÛcD‹ÁÍÚŸ•ó\@Û š.óÞÓ$7B„Á¹™ø®¿øêU‘2êÞ„,5.Ö!SvçÈRËÎM‡MqÖïƒÛž™™–±fT´’¨A·àSÈO•9æÞëÝ_4¯‰×ŠÆ¾SÓŠ–Ûu¼uRQÎÜk$|(Éù'ôRÝvïRÝ»÷ð£ì}º÷P„ _­Kú†ø=ì?ž¸{o@ЈîEŽöEÚ;8Éɸ=žKä¾ø!»ß1éóˆÍ `rœ3˜>²cÀAÈê3˜'àó²ÌXõ÷à%' OĦž“åV§‰R;ð,ä³­×Ó„_ÕújþÓa–)꫚ë?²áýÛÞ3ˆ*“èž>‡ü\™vÿîýÓ}×ê˜ ÑIÔ)!·[1&«ë ¬Njí8ÝŽC–Z39Êîð.ä»Êº;FfT‘±%âq8 Y=–p5b” ÍÚlÜã<èÛV`ûšM×v ÒåÞæ×‰~º¢žîÏ_½z19-Ë´*§ÕÇB÷¸åh·›1Êí·p]€V_vKg™µµu¯”Áò„¨˜ã©Ô¶¨>¦g·%ÿÈŽ†¨<Î@–štëh(» à,dõÃCGXÆÖ…;âð8y>6­tÌm{åðƒY=Lù×Ý<Ä÷ú“bÚ—mÇ2é¾òÐŒOA>¥¬šƒÂsÍD xòie"ÂÓ«PÆ3é|Hbû¹‚|(6CÝýU¤!2Ç'!Çg§‘„²; <YÝJ7\»a3o〥—ô÷ZÅ_;!ç¿ýØ@c =:$j[aÖ„ŸBV?±õÒ°ýˆ[«VKÆŽse9öEÙeCD¶>)(Z&nÎ;õòKå2M¸e²jÿéíÆ:;˜¾ÔJ–®·‚îÛ-´ä × (r#ð¤½Î,²0¯s™¼Žþšñ^+‘‘“~½Ž#!waC\sjfEÜж$H]Þ†|;‰^“2¼ÌB–šËÛV gÝHÚÖYÍöcæÝÙÐõЍ-§Aà d©o·¾ãÈè†w% n,eï]ÿži:ûK·ý^xi»ç‡üt ¬o)³¬oÛµcxAÙiªY«º(û6ÕF]§U鬤üQe€HŠS‚ó_1%Ø4­çþ!šÑÛ9¡÷i§ôN(ýjèÄÜ1LÌ-ß:HêioRÏGA_öñ4Ëxçž„§2ˆú®dŠ9½tmû¹î7Á޹‚Y¡º–Q°s{Å84×öåâ§5Ó ›}Нª”šXk5v‚S¶¯4sxY/W×Ó‹ø]Õ­ULÛØø>SÇŠY*&¦ŽÎ,¹3<88È}±ÙRû²VsÖM+¢v(3SÅŽÔmÆ„¨f3ÍÝÌáÝNFQª¦ü·"» wŦ’Že7Ù0­°©ª*ô@Ø ¹;yTñ½‘ä* Ü ïÈ3øï;(vJÆÃÜýî$ýîÿG{~ ~d/W\“NÄë‡Í¥ùtv2ÿÖ ïìü;ý½QÉOW« å_˜­”ãÆ ùE§\ýâ³iãõ³ü¢åŽ …‘±áñáññ;y7^Í—µ Îè䂪þÑaËýJ½ªƒàñZó4ÝuöL¯è–†CÄ–¹¹µ¦WF&ë÷¸a }°îFQŽgöÕÂÂÜË0ëâœMý­2î@k §Ô¯ú¿;¼#{ûæi0=xäÇÍ žû°}GÓ›«Ì¢A÷Tè f^ÅLÿýøÃOßeþ~“µzýjiþk'0;ïG§ñ‡Ž5gö:6U¼&7ç3C>Û­rGkwÛØªöíò•˜=ÙÄ ‡Hü-9G8p½.étq˜gÁE³à]i诶˜wkú˪‘[·ê6°%€< ÌX¸â(û["IÐíN=[Œ¢130å¿ @ò ô‡SŠ˜U´rØBéA(ðäÉ+„²ïä°éÂ^(„lðd©š ÍõȲV2´°‘ w5k½ƒ–« %Pö]"Ť‘ãU˨89½†.{ ÷$ —ÃÐaÈK”Ié…²?Í!RLzé´kå²fmIiæ´q´:d© j&è Ï@>“¼f(å)&Í|ä·ýàk/B¾˜€~Ú¡ÂK/%¯Êþ2‡H1éghv]+¯èVIsC$î€J±ñv檱éŽpõ° û.Ým`lÊs § t@a„!z&¥<Ê~‚C$IåúP:‘Ç\‚K€HŠÕò±×¬3¸#Ü?éœevmÅÖ,«h9Í[GͺaxQßdSìåÛ/²Á1ú)öfñí\–år9ñóÃÇ [Bî¹Vé9’Çqä`Ó„› ¢)ÀÉ› Úà è›°²TdAi7—¾ ¥“ÀÓãërÛ—ý3êc¬cŸ{”ÎÅK™/ñ8 ì…Ü»æËEì-4ßv„‚ÖÒ£%ì†Ü½·LTz€g!KM¢Üå†<'i0]ÿ½{I+&2ç×!_ß+îF…¸œðIØíÉT+œð‡v¡¤Ë l½-Ÿ„Н@¾¢l6ma»¡/õû ÷)9ÌØ¦ø¥.§P„ÜØ]‘K–±¢±f8¶m•µÍÌh–­éÎ+ïÉùLÚÿ(=@»Ä)÷€&aÈœ¿$å^Æ6Œ¢³î2æ¨z¿JKäæ>®K“$yŠ!Ì ‚Za^§Áåt*ôá)I^Gyra2\HÄOO¨¶Hñå,2'lƒÜã°±fkkaÃÆ£©z—ªØƒðŸ ϡضɿ æ®F‡úó"Åîþ t¹ )n„°r|=ëÙ[å³dXQ· –á9¢ú»Xþ˜ôÔ”Þx…)+Q„“À'ŸÄf퇗 G/Gd{Ƚ5“´±SöO9DJšÆEÔ@€­ Å7?^J5&!A>&m᛽³Æ$øt» Ç·ÆrŒj(·jÕþ>¼× Bg€½¥úøˆvq™8e× ìƒ¬>õ"”=ã©Õ^„›O]…|5ùæKÙ§9DJš÷&\ ½È?èäFc¬và ÈRÝx¨9D/·TÎ H0»¼ ùfŒ©dTÞùvþ¸‰îÁ©Èc »±í^…,ÕCÿò`r¦õ.õJª±…oò@ò.•²¿Å¡ô†1—ÊM†x/BHm{Ï1)_FÙs¯:)iÜh½….õh}™JµµöT£çoO©ÌNÇáU‰Ið d¹Eޏ½*1º ¼9Îö¯W%–ià5È×bñªô/oC–jàb^•²; ÌBŽ¡A‹zUÊ~CéýŸb^µÏ7bssÉ»3Ê>Ï!RÒ4j À­•x+þ‚Ô(‚i*í) ¥t‚¦mÄ:Òlº%sÍ(h¥,3V™³nàEÈr6ÚΟN¿Xš‹²ë¨ùš~áuÈRëÆbÝ`?l—ðäÊvœÉúטY–i1Ãfšm×è!bnØ®®ë–§;Qs'–7/!¿Tf{PÜ‚®¡­rûïc² C´ LÔ€ˆÊ1`'d©¹1¢ì» ËM€òŸÞÏ2-؇¥Zi0W=»*˜õëíÜ,c“lŒ.º«I,8ñnà<äùÖ÷cýœ%°Yo·ÒÂ!RÒ4®£Œ¯#LE*§h»x·Ñ!OØŒ?êêY­YÞ[ÁšµæË¾«åaä¾ÖÛì h†¥ê1sÒÆBÙ_å)i7Q¶h.&Ø&:rÈÀn »Sªs1Íá×Gšë=fä” %·‡g{€× KM)„ö¡íioÿWZ´%6·Ã‡[ßRv×#G”mºË;¼ ¢ QàcÈcSPwzÛF=)E=¾…ü6EM?ƒüYò·²ÿœC$E#ÁVo[gð(Ý@ì«ÊÛêá© _xÖ`À·G KÙ¹Xϕᲅ<š¼Ö(û1‘’¦q 5`‹f ü­”‚ÜÈß¶Õg š9]«Ôè„™4ö€zMÖîOÍšã!DMš˜vG '`ÒÜbØ^šôm˜q€{dÒÜ^ÛšôaoË­ µAX1aüƒ‰qoç¶i”keVÒ+kÎz0L¦—5ëÅ«Ù8qïÎBžm½B“„O KmT3.Ê~ŽC¤˜Jl¹> É;¸T1X¥Ù£]¸9´Š‘$Û×!U:ù”^3ÀxÎn~4­<¨‚ŠÕ®ˆsPCl.dÖúX™²; ¼ Y} Þ&|K$åŸöCî­øG–ßk¥ZXùó0€áÔž¶]ʾCµ¶Û¦J‡b¤.‘kå¡“W‰;¸_³õÕZÉßžN¿­¬y=!=÷ívŠÛU-p¥B~›EXæ¶×GÔ å8¶·v5[ PÍ®šwûÓ¹“ò=DR¬•Ù7®ÉðC`P\0+¶‡xjv`[X™pÍz­T¢ßŠd*%œ…,lm/HU· ³H‹qÌÒ×èŠpÓ²slÞ!žæ†M«sÞ=QDØïÞù»ª ͵Ãm%Žf”¢¦;È-¸îbZÈ=´ŠÕZHó¬ø¡à‰”? ©UÕÉc* 0õôÓi‰LzÑ(èO5«l§³ WŸ³)–®–ÊiñÃw÷ÁŽ0X²“ ¶1ý²jX.Kö`ПM˔̵̚?4`?`ô£­ëÅvÛ“Ó)i+¦ülßÕ²¬^ÒÆm"i£(QÊ(á—¿T.åIÌfüÒŠÓš•©ú?ð0qsåzx5s Íöè²¾©•«¥ÐK°'Ý£X[а#£ìÛ8Üãáß㔿Ç!@$ÉZiÝ ³Ï§&ïàGÙ7¦¡wÂ7>¬´ô É×’ÏòáÏ3ïÅñgˆý®dJ92Î-ð¯"¾¡-#Þ¡TLóz/.xGêöŠ{h®»<‚_¥)µ·Öê.¦G[«¤Èw1Z£"ñG[«£¶aÑG[­ŽˆG[£ŽŽ,»3886¾¿G/€ð¸ÐH1à+^yìbj&¥üÐ7â„(µq¨)Ï}Ðèú‡òs»s:áv úMw¢å›‹ÀëãÜß¼Ëq§ãS Þ¬;ç K]1ú—Û7Rõ톱ÕGÄ”<·ŠÆo`K:  ì3"ÅTúŽewð¬•l3¢¥P¡ƒK>öh@EÙ·q¨æ?ÚTé‡ñ/º”F†Ä uƒDw¬ÆïÖ“íh–üíì\ÝÄXOn (™ºåÒ’¨ªSàq*ÖàVU­Zõ8Ýž¯¬ª½_U]ft:aµVñ[fÉþ5È’VT}€»¨U‘bŸkdÞ^&ŸbA¯Ð.¼´cÕ*–§ÁŒ°rŸzÑ’$ÉÄÿ"€r¬õ"@P舒Šu¿âEÁX÷–*¯x@&¹>œ\*léö‡¿ sþIà$äIõ^Yú]þJ|¥N9b²æ+Þ% l÷p²æ"ì:@yW¢Á߯®æ€â~—€•Ti./¦w ˆG'°+µã]ÅÉ…w ˆÐ`ojÇ»Êí(bße×jÜ4ÛŠ#¾î•²g"µÚ‹ð7ñ_…|5ùæKÙ§9DJšÆÔ@€­ñ"rïP“h†\¡èGdnÐîEk!ìIíx—@Ñ“´En‰ô Däð"ä‹1¶¡Ò›j<˜v ò%uãõ ½©†ï y»U¤í¤7ú>aRM·7<%M£5`kà3È1¸Q‡KÙ?çPÚåˆ9ܾY{8y>yOGÙÌ!RÒ4¾â¥˜îEAZü í$él›é “³m\W^5 ®+§Ö´šmZ…}§¦-Í©Yº¨iícÀIÈR;,ÄL›ÛùÉß®–´MQö8DJšÆj ÀÅÞÎOAj·`Ò„ê±D3¥Ë{¯èšVz^‚èÑšÞMºÂJÃ.àäÖ[2w˜m/¶QÖ·9”?ئDƒ …–ìm¤–…õfc±ä¶&Jw¼»ö½=Ì+f­R¬ûhÚýjZz1ïmÕ¶s­Ý,ÌšpòŒ²’§­dÞ8< ùhë[\–Ë6¾ñRïç°éÕ¤häP¶¨Åy[á©åÑÊò­kqþýÖµ¸@swE£XÓJv䙸ÝÔyø)äO•ËpˆžOd<=AÈÝìŸaiâýq9ì†ÜÝzâìOB>©¬”Çœai+¶Yª9ºæ¿7¼ëŠBŒ¬þ%¿o5-b øòkåRôì0yÑÁ8Œ‹°rœÞ"bD0ÂeòÂYR¡8ešC¤¤iðOÜ´ò,‰w¨Z]GÓTŠðHGüSÞ¢.‰H^„œÀ)Ê®x ²ú)ŽëžKÒêó,ã˜+†3X2Þé8/uÅËÀÇÇÖ‘´ãP¾¨Þ&`H„J§ Äô6¶EعKYoç¡·Ætt%¨ª Xá È7Zû¦(ÛËœ“ò”}†Ã¦Ëœ“¢1‰0>WL˜ŠTNÑ }¸õ>aüËg=«5Ë/×ßŽÍ V×}´$Â>È}­·YþA-™%o,”ýU¥7p‡æúaOú¯nɪR<€•ˆ$Ù^N¨Ò™Jù#Ïã¹1îÐSñ­¯¡ÂøGpJ‘Dé8ð,ä³­ï})»ÃÀsÏ)ëæL–iÊ.?Dƒ"ÌBÎÆ¦¬³…Œ÷p ]|F÷WzºKȨmørœ»ÈvQÛ pò¼²ÚŽd)jmÞÄácà+ȯbÓÓÉz£’Üðÿ(å÷ÐаړiXü²xܪ¤Þ°3‰y«Gh<„—!ËN SЩº‚d7þ¯~`0¿?šŒ†®Ç )kèt žÝ>‡,·>La§]ÏWÖ6_ïÈù¹’Q÷{DípòJ2:› ”u&þî<å_êõØŠýîü”¯OoÖ`LʾCµSù,ZSîâI±V>õV¾Éáú]Áíæ«®s îÁD‘hf MB.LU,Ã¥èk¸E Ï+r·uÅdò'–¹[æ"TL9>Ù[ÃcPÍðϨҡc,Ç8DŠ©£Øí¦ýÈŽáiʱž¦ZóôADÇð6Aßmz÷YÁ,WkŽn3gÃdïŒJÑ[ÑôŸžd{±ôiþÅô“†Kö͈ª’ˆŸH5ÎþAV,ÀùUòÁ¢±ŠÇ%wððv…SÇŠY*&¦ŽC™Ñýå)½˜_zñÚ‹!ePjê)¦_v¿ãoª ’¾ô0¥¥‚$úF7}£áHõB”Ú8T œÚT鬸é(‡HªÓd_¼w»ÙYË4l[¿#®€ 'ì†Üc7©ÕÜÁ¡Q”YQÅnÔm¤»PÍFš½ñ±Fd#È‹6Û~Yꎊˆ¨»Â!RL :[\Í:’W©yü:d9 ªˆ‹œ½'¤¶=ɘ”Š(û>‘âê} ¦¾*¯›ãÐnÛJ¬÷á¢è½ì}(ûóÆÛûœDD-«œPȉT²aÛ (äDjOÃ6Êþ‡ñ†m§j´OW—×N'4Ò™J64¦;S{^ä0ÞÐà#ïÖóJAA?]ÐIWj[ ÓrýtA'„!÷Ä$¥Êþ2‡H1éçøªi•k%-'>‰Ó ]ö@îI@/ÝÐaÈíîIé…²?ÍaÓíîŠz騖LGB)'¡ˆ“ÛÔr¥œ„"Nn—“V }ç‡H1)¥“çkæ´q ¶Ò!k/‚š9mž,5¡§¦Êþ,‡H1iæX0? ¬Îsñ*j¹Zz ŠžTèÓI©…²þˆC¤˜Ôræ5uúŒ– Ù\ý®9AŠÜ{?^çב’ì#4äN)lñ†ë[¼áî”ì\IC”}/‡H’zý¡t"÷ës¾+ìlÉj9ì¶ÜŒ0Οñ Š\Ž3†¨(ò|N$#né"Ʀæ§Ã Éù©HE:dzk+¶îˆ↡1®ˆºÛеu'úDU$#nè£Æ:«h9Í»‡EœÓEðÆe&*rš`Áë—S¬I7®2£ësé´µ‡憶EdžÓÝvûÔô€8n¸Ä?‹¢È¶q8Í¥O'Œ ñ¬TK¯;ôÿ+º³¡ëÞGÁ-WYïF>‰’pSÂüÅ¡Š%9Ïpk®~¶îåÛ/ÄéqýRŒ3<=ÿ´†,=n¶6FzçêôЫӒf×F„ñÍ]Ž0fTl§¡Y×VWÞ{WT¯h%G[3HÔ<{])Û2FÉ@–pòˆ2ñ‹Œ^z£.yÍÅMéš½ R„œ/‹AïAk]Þ*Ó`”ŽUï'Yýr9Zý Ò_ÿq ¡0–ËE)‹$ÃÝÔÆ¯þ+’i‹<§Iä:2'lƒÜÖº(<’Ç ä`ÓvvÁ0œJúv¦·Ò 8B wµŽ;!KE ¡”:¾j#Ñ.¬NÏAŽoÑ£}Ù÷¯Æ×é´‰NˆÀàEÈê^ð0c›âÎ%ƒŠ Œo¤”uÇ%Æšá/.k›™Ñ,[ÓWÞÝç™´ÿQz€ ²‰^n4 C6qKRîu‡ FÑYwsT½_ÉtÅ·@Œ0¾µiI§}n§öØisêÚS§Íïðn¡Óövõ ºÇ\ÊwÔ„ñ;íc_½Ú¶ ¯“À /$á¶sÐa|1ãÑÌf–Ú’¸ KÀ~Èý{`ÃyÔE€­±áC´ùQÐT†`¶„' KmcŽÙ„‰O7ð<äøôw1á!¨g(çŠ~WÆ…IÒŽ‡ÐžƒH俨ñ0*$ÀÖØñ!HÐbF`½„]»ö%ŸSÀ‹ãÛú°‹%@A„ñí}P´d"s8y`,y`k,ùh}±YÐhÆ`Àc0˜£)É͘™øœN5ž¨;Šsûè.Æ<Æ£+3‘éf!«nÄù*$ÀÖóqn² ÙŒÃ„Çñ§¦$W¨c6gâsع/ s‡–d¶×æLd®ss{`ÎwQ!¶(Z¦ÍÚ‚ör¶K¸Ÿ¢eâÓ L4Z¾õî›h™È\îe´< pM7OÂx ÷ÓÌÅ$¾7™Jxæbú™LÅ9s!1áL./CV?Ë$7á|Aø2áü4 ÷í„óˆîù„óCx˜Úã çGÈœ° rÛ¸íÇÈ;ÀMrøG^ýãtÊ÷Õ„ûi’ƒøœ&:É1 Æ7É1P@‚£^(’e:½…M—ãO±7‹oçÄœx^>üdŒ|u`kŒ¼#89$hN³0íY|ÿhJrEÌf>‹¿8 Ía;së͜۶ã>æËu3öäy»^ä¢n¢Ö œ€<±–ýÕ`k,»ŽAЀæ`̄ݻc3ìÝnñÙ…Pð4äøN´ìbÑÁSM„ñi‘_*$g½Õc2qó}Šº°E“t4MÐTžÁ^ ãŸü°ÝghD„§ KM’‹Ú.ÿyäž½,>Cež†,w~q[vRƒEþMìø‹'ÜÁ"mÇʈSšùÔ¶sôê”^Joý4>Ž›’­ë´QyXœÿ¸o|”N1æïîG¨,΋›ôd©æ½Wc8P Mldãkþ1†C.±§Ó/–$˜½ÂøŽU÷{õ剽™W±V™äŒÇkxÚãO‘9aä¶=ˆ9‘w€ûl1|)å„ñ/†KDä4ð,ä³IKPa|§nG ëÍF…ÄôCcI²Y}ªJ‡Þ¬<Á¡Ú¥¼Q­\rlvB–_smk6rÙ[å7²-°¢n,Ã[¥¢ lzt¦ï˜n)Z«_Ã÷¹ZE[;†WÇôbVϰwB¥óçáM}ÙpôrD5ÙîáÅÓ_À®”·q%_G Ø¢y*º2AÙ7ж¾óh—5ÑÁæ0_c|:SgJ;S’Ý{ø­9®Eû."tØ YjÊ3¢\—‘m7°rŸº‹zÊžqˆÔj/Â?Z{òÕä›/eŸæ)iÁºéÆ–û7rûfÊ÷„' ËÏw7û‘C¶®3 FÝÀžTýÖ>OºÏ×v4Çžœ,•3€£GclS%£òÎÿ°óÇÍKÍ>ká±QíÞ€|C–òŽ¿|8y¬õîõ›08Â;ï$ï^)ûq‘Zí^¿é´‡Ü>â¤ýeC¤¤i| 5`‹ÖÂqo“ ¹/S¾O%TÅá_¿Ä÷¾Äß<™R½H/fÿJÄnÇ ÇéRZà_‰*Þ„,µ;ô/_Þ,åèÄü+ew8Yʱ©ùWÊþ.‡H­ö¯_úí!·ù?iÇFÙOpˆ”4ŸC Ø¢…“ú-t‚ôÜ‘³çU »!wK{ØC1xXbÒ<Yn×O‹<,ËÇ!Ƕ´ÀÃÕ4pò@,–þâeà]Èqú˜KÙÞƒ¬îcÎÝg…šeé§´•õÞ']­•J[¢MžHM_A~¥Lî˜]«VMKb2tÅ·œ Õ¸l÷p2”²?ÁáM†P¶hÃ_°äVLùŽ¿˜Šcãh§,­-ø¼lfTË,Ö z‘J­¯:d™YÑ™¹*Z«Ä¸8 YnÝ!¬6Oð—§F™ÔÔ©ŽŠ$ìÜÓzϨöôTœû{Ú²LP3”ÿéTãÝïÓ)Õn|Û·ü‹letrx²Ô̪¸NÎÓÓ{¤“~à5È×bÓÉÑú¥Â2j¹ …çœà.j¹ƒ,5TÞ¾5Öõe–¨# w€å+¡gl‚;žEC¸ØYj]JL1«~<ì†,5(Q?¯â{"µ:n*r¥oS«pÀB¨‡C¤¤i¬¡lMÜtXæ¨×:ZáqÈR®G©³yÊÔˆ˜©.àiÈrû£Â}|pÕº¨+!>—€J÷쉹Êî ðd¹.ÿT¼ë¥ü¯o@–ZCŠpð¸&_F+ƒÀ1È ,@Qv7w «/@µEn:ßM+ãÀ»å–‚ÂKðD¨ZŒ”ïM»S ³rbj1üBxxòÉ=h,”ÿ)`d¹®'¼±à% ­\2È,­|¼ 9†í 2JIsˆ“RÑÃ2 fSõ+¤“PH?pò`<ã¥ä€#GbTʺ#¥” àÈ’QÊ(p òTòcÊþ!‡H­3¬§žûäGÉë”ýc‘’¦ñmÔ@€­3tn{ÛG⻔߫¿ÃoO©\wØÕDí^¥q‡ØBÍïó~¯YÞ¢ÕJ\ÏïC¾¯¬Ý|Á,WݱNÅ›öâ(a0g¼m†˜ ’.Aÿ„yÈùØ<ä‘´½¡YÂ>’ÈŒïC–ªI1IÙ @–rÍjÍ“²ŸâI‘ÆñLQ_Õj%g@8Þ,Ã.ÕVªÂ‡ZY/[š°™ŸàEÈñ]™i&”Ý à%Èê&‰(ÿËÀ+¯Ä9fÖJë5ñÙj¢s xòíd´Ò ÌBV¿¶NN+ƒÀä\Œ¥¢[%ó½øÚñ¹œ‚,åUÄÕ’>„,ðmïWîSo-êX‰Ã#àÈê7‡]}®Õì²V|£m•Ü‚‹(lÝ¡ób‚4+¾Þ=T;ßÛ …¨d€·!'Ц)»40 Y½M_fÚwõDw4£d37˜bs›Z¹ZÒíÑñ 1>‡ü¼õã™wœ‰ÌCžO>R¡ì?æ)i&j Àg¼Ç@)VSþ¦šŠc<Ó¼S{P«0­äèVÅõ;ïuò94N¨Zú{ì¹&n­ÕÊî"K¿­]¢|8yFYÉð¦jÍÖ‹Ä—F95Gß6cÜЧáU©8Â…øÌ‚ðäGÊ…8Fû_ 2p-p LpÏY•Ëv÷œQö'8Ü£=g6j ÀÖøü+½‚ ”ï*{R ›¤B¼ç4Vqý‚eØ{½à¸±‹¹ÊJzeÍYg# ¶M×—mr:yë§ìû9Ü£©„_ƒ°E"ŒJQí÷~-ŽPý@Ä¿àO"¸´taË%F]À /´Þrú!ŒïÉ@a“¡ì/qˆ”4_‹0>Ë%LE*§hm£óCXè[b­=«5Ë5X«¾6eç«ë‡°SÂ>È}­·ÙB3„ 2KÞX(û«"%MãG¨[ãmnf™µ ½_»%ìN©^ßÒ¼ìú‘V- o %Ͷ™Áà5Èñ9>œ®–Ä盈Ëm`r>Ɔ1³AÙ]AR·hÑ®²æ©ÕnåסñŽ@I¾=Sö£"%Mã×£l[9â¿”+Èí7¤|?B¨~H3§k•ZyE÷ÆKxâ—¶¥{TëEfÖœjÍ5ibÚ ,e[b&ý ¸ß;:°7¶DÙqˆ”4߈°EãïEeAj¿ VL¤7îÝb£måZ9Ø]ÀÍÔO5¨Ù8qïÎBžm½ÿ&h’ð dõ-¥ÂÆEÙÏqˆ”4ߌ°56Þ¼(,Èî·À´KJñ¶ŽpÇ­±Š¾¼v\?Lä¿QÍüM¢FMLOÇ Çyü<¨ TGxr ÷‹Ze?Î!RÒ4~+j Àuð.¶ »_„!ÿb,F}d§Q¯˜fI×*Í ág¿CþEU£_a§ EGð!䇭ñü"Úá#È” ü°Ì&_¢ðø²z?ÖëKOç6³t§fUt)Ãùmh|„½{ã+{ï2ŠZq¹€<ÐzË¡ìú€· Km ÙVgý­´]Ujº | ùqë;­_ä¬còtò½e?Ã!RÒ4þÔ@€­é´ÚŠ¢K ¿=åwQ„;¤»«¶°¡ÆºVZÜ>ÐhÜS‰1GЛÑ#Þ¢uKÜC–2ðmܯàLzÆÒKõS›tÖ{MÞ‹óÏBå„W ǹ‰/¢ þv.[5­dü”}‡HIÓøçP¶¦ x)Hëw ÙˆÓ0è*µªÆ×ð\s¦Ö&jÊDóðä8w?F˜òï€ÂoCVßý(lC”}–C¤¤iüNÔ@€­1eº_tcþ/Á‚)ÇSuÍŒ¼ùÞ»ðþ^² ÃÜáwd³m[/éÞ>Që&ÚÀ)ÈR;[Ĭû— C‡¥dõ«„6eÿ€C¤¤iüÔ@€­ñ/í¸zVÜïMùN…°3÷bæ÷â{¿Mêd*ÎÛ-¥ Q¹¼ Yª¥‹9˜ß‹J%¼Yj·­ú|kQö0D®ørœ÷Fx˜ß‹vD8Y}K°pÓ¦ìrˆ”45`‹< îë$÷ûR¾W!Üæ÷á{„ûÄÕ À=ÌïC¥Æîa`-ʆÈõô0¿íˆp= eÿÃ=ò0ÿj À‘ü»2¹ýþ”ïT÷ʼnˆt÷ɉ¨œ&8F¢ìz€ñ‘®gwÞƒªìfˆâà4d©$17óûјg Ï$ß¾)ûY‘b*ý±åú6ÿ¼?G±ÿ@JÕ·(Ue߯!’d«Í©Òùƒ)‰,@$ÅZùhZyÏú‚ŠáŸßxÞÖP¤ö¬—‹À^ÈR+Obî²; ìƒÜ§¬£¶œ¨­Pþ xòÕä[пk0ž†Ü6-j¡ÿò&lƒ,ß’ã±PârØ Yj$f¡”ÝA`ä.õ8ð!ëšíuÅ«f©dnÐ|‚^Ò=?Ï&E­‡(vG!ïÁ~ñ`k"ÝüAcA†8åǸ„=)ÕSÜÍÌ.yW0ÖOm«ˆ&‚g€yÈùÖ‡TZ#‚<”¼!QöÃ"ÅlH‡ÞÌ÷‚ÌþŒ†0þEÓ1þÏÁA—^pŸ'îåÀ¦Ë"æÀÇ·Þ²þ¬‰p7™Qö3"ÅlYG-Ýö–·EýÓ…Iv§TO]¶5ÑÞîŸê$YÆýÀÖévXt| Z»D»8Y}DÖ«Ï|§¦ÙÆà@Ñí&µJ°7Vx‡×¿ë#ìƒ,yŠ5€?ÊeË ³äe•C¤˜@û†N—™ˆšÿ/Ãä Õç»›ÍÿvƬ”¶¼ Œ>=ׄ¸Ë‘ð[›i†ÿËøá$d¹×ÂùOÙU½`¬â32 F˜à%É¿Ìe»‡—$Sö'8”¿$y×;Q‹«¹ÀS üã°mÂS)Õ;Q›‰]ó/úµù›~áBëž]Ô ˆéià]ÈRïYŠÔ‡Þƒ|/yƒ¢ì'8DŠÛi✠¹?"Œ‘0†›þ¾G˜†œ–®½±Vú©_mé(㊚W >ÀaÈR£ ±yÊ®8yD٦ϲ¢n,c…f¼sÃÞÛfª>‡œÀ£Â׫‡óç“oæ”ýÇ"ÅÜÌ¥^ÿ“)¿aª4ïh¢t¦n0n‡¡•Ý‘€1 Š]À4äøšygšÄi9ŸpS'NÀ;¥ÎåŠ5uÊ®8y\Ù®OºãÿŠ£4uQ3'6wO!?UfõIpñ:^&YÝö Ód~TÝH[§µF£ÂV ËvÜ”jå æAݸ²%Z Õ·?ü‰ržcÓ»i«^´ló™(º¬Ñ-cýú8o knz¿»)Zš % |YÊoo?šã¸½=#þÔå¿„¥BŒðUÝbd“&.§ç!Ÿo}“¦ìº€R ÷ý©ÝµDÙ_ä©ÕõŸä áä=¸ï²¿Ì!RÌõÝ¢g”¹ý©”ß;ªo©98NĺW!ËÏ5WZGÚ¯5á.šèd€yÈùÖ·gÊ. ‚<¤lÑݬj™n!ÙC™aà#È”I=âÞW¬/$ÔŸ ÃotË2-›e¨ûÞþZ²h!þ ß:<|Y½xýŒ¦ò„§~ÿMÐ TêÇļæŸâ²í‚¬¾’,ì5)ûn‘âžÅÐJ†f ŸFüÓ)ßUþéT³íM¤²wÔPd%sÍ(ÐAþ÷N—VÙb .Z­ß#¼YýÄÎm~g()¶´’û›Ò+Zfµê…ËLð¿$T; ¦ÿƒÕRÔ.ÔHßOLF€cã¼­)Â÷SvYàÈê·5u°b® µ#b1œ‚¬¾kºß¿7ž F¯êâ0G·Ê6÷n‰ Ñ6Cع_É~Â쨻¨;n3Í•hUÍ H| | ùeŒ&åÒzçØùã&æ]SÛ¨KNA–2ƒÐ¿| ø ò«Ö·2Êîð5ä×ÊvÝ&ÜùSþŸ!/¶¾óÿÓ\kY‚¼”|çOÙ¿á)æÎÿ]$ÈìϤüÞž0þ-5Gƒ‹™r´:g K=Ð"f.&BxòÙäÍ…²?Ç!RÒ4þÔ@€ñl‹mŸ÷·_ ’ù³ ðga¤R’׿„Ï‚y·¸ŠFNÄ¥ ع§õ>²ëbAAr#;ÿ©ø›ƒ”ÿiàÈr¯(…eìZ¹¬Y[2J¹ LCN'£”³À~ÈrqÙ¶ì¼9n ½\f gbÓK§×Tr ÚÉïCNàùAÊnø²ú ]¸NÔα7âóLÄe ø1dùϸšÏŸKùþ•Pi*@LAÎ/‚‡ñÍÒôCAÌýŽæÐ‘ò.ìC–ß½s¡jËÉœÕ N÷€O ?IFw#À9Èê·xaκ&|É!qx ü²újäS}Óq‡ïþ™áx·Ö*ô]{ÃŒJýÁk¦­˜5‡eèjxË›Û`OEËòçÑþ<Êq ÇRñ‚í¸mÇ(x}KF+~»f;zq€-Úß©iÝe¿Š,Ìýr¥¨YELMg™38H7>Ój¬û‰h‘þ]ƒpò‚r‘¦«©'?\¬2»V­– *¢wæ§fU {Ý-&AÈÒ=i¢Åø÷@Pm?ýn“0œ/ž‚ù )‘ð&ä›1ú‚]¦`NLqÄ%hwÏC–^XÞñ—ÛÈRQ‘˜sü 0ÂÈÊÖÛá¼EVôŸ>>~IœnA~[•YöÚdH¾õðï§âX o)û6‘$[qób±0ÿ å‡>")ÖÊð ÿý`¬Üy¯òh½ÄhCW°GÈõ…5;Ø»(Hû?„ ‡!ǵ‰¯g‘{À È­oè”Ýp²ú)„N·‘W þªqEÔ¢ˆÊ}à3ÈÏ”)õ8–V±)ÔqÍÆÛ(Êë/ÂL{ ÷Ħ¡ËþfÜ*ÕZD;£ÿ£ÔžzʾC5ïSQ¥ó—Rþp€H15c™uÉ¿œò;i£¶¾ÿe˜Ä_N)žÞÙV“4XÐØš^Ñ-­ÔhÔÁ…îÛw‡àÍwÏQ‹*’x>,5ÜÆÆï?rŒÍ;^©¬”s^“¶lgp°h¸Öbé•‚.Þ®‰Ô)àMÈRÓáWÓ¥W‹Rjʇ!'p‚²ËG («©{À›Ï .¿mÐDf8 YnBŒÿT¸Aÿu_·uŒ·AM£v„M…øtOB–jZb¦BÙµOA>¥¬•ñܶ °VYÑJtOJÑXmÿ\Ά98¸¡mÉvĹø ²úØõjF+¹‘immULÇŸ¶§wïeÿ¬Œð*d¹ýüÛ _”ÆßDÖÆ3¦~ºc:æ‘\ŸnÖêGÌhÏ:v°×ç¼q€h1þ¨ªÍ«óŸöW5:·è­ÄX:ÓÞkF‰”Ñî][w¼-È‚Dÿc#Œg&ÿ­N¿Îs¾UŠ:ât 8y¼õΆ²»¼ Yê’‚í÷<Ћ5f…Î͉¹œ,7€ =Ÿ”¶74K¸'øÛ)"ƒP递˜rþ6l”PéìÅv7%Úl(û.Õ¦¸âÓ_^^Ò7«Ö7,Ý®•{Ê*fmG[Ó§VjF©øÍï«™«ú¦a;v&[,VµÂ»\¡f¹ÐN °¦_±ƒô"rN¯¼Ï Ü÷?›œ4*¶n9_ GU)meÞé[öTº8¥Ï)³tÿH:Ë Za]/~éþ㩦¿;ðý`~réóé…ÉéÅW‹“wG¾z~ìèÛ¥¹Å…éÙÅWÚ ÌB~g‹¾q¢ùÇ—ý"Ïô¶ïΨÌÒ†VÞòºúiË´46®}2EØÁïp–¹cb*ýã-MWt«d¾¿˜çï ÕŽ@i½Ó ì®G!ïÁ…Ù”ý‡H?]N£ãåÜâ‹WêQÅß…“ ¼YøJ¹¨â¥oýRQѽÄѾ$C{§¬¼wE/™Þ ÿs­f—µÊàm«ä}·Ë{VD^Þç?…üT™ñÉà’%×fl]|ôïAå¯þý8ÖŽ„›ôЬŒg”w¸­6I‡¾Ý#ºJñ¿3B™ý´9žS3Ó/ÞL.½zùlòã·îÿ ©z ªÍ«ÀYÈÂ/Éx 3™­äÖ´Át‡i¥vDÄú Çþ‰ ûÛÑÄ󘃬~–ã¼as[Må§Ýÿ—h-„ç!Kmv ¤NÖ7ãH.Ü­>`r®õñew˜‡œWteŽ…!àd¹˜*t·Ü®«!ßKiè>ðÈRǃÄ5tø²ú~—¶¬hë¦ü€/!¿Tæ±`éß©V°ÜÛXî˜nøƒ{½ïþjݰŠþ¯ÝÒè_«Cÿ"ݸÓ1-Z¤ÿ•o'Æw¢èjÑpÃ3›¶2º® }¿ÔÙº¿qSæÿÔÕÖ‰C§æ6µrµ¤‹^ùOl2À|*þkßôru="Û4p(×µo=þ¾zeÃX«¸Œð±.â3 œ<£ÌëqznÛæ^ï$ùŽfx›¼'®KåúátN¸ ÿßÀ¼C~œ|,þ¿EÖƸ%aÇ~²ú®ÿ‚XG· zÕ;ŸYÖ ï¶^j¾žÃ-ÆßuÂø¶$̬Zî(Bcxc¢àÇ{Cߨš.a¦•Í™†ëFµ`{5 $]/꘼¨h9þ¸ÿƒTœÛ©R…—ô÷d¿þƒ0ÞQxº„Ø5q­ÂôÍB©VÔé´¬Wdn¯»øeoÿ;ð&|ù¡rnlW‚ãѧë…i÷õ\Å¢D¨ú¿?ÂoÄæð¥‡…ƒ¢2‚<Ôúà‡²» †,w@Œÿôµ îætÿበ"5|y8ÿ°ãq–繉¦Æ=ÚüA ×Eš+p8H÷ªš%|ôþ?ïÿ,ÖÖùš…swÃ/³B -‡¿AÒ÷ûa…-ÅÿÌ §âê=gèVvrn}“[tccÍ Jºã:PÃö.¤/-8hÂþþÿî„ñùû{5z@vûùwÈ“2rl~5ë_;Y®q·lüC0&T{z&t ¿Å~À6‡Ùm¶9Bÿ7*êI‰Ö#àKÈRã(1OJÙM_A~¥¬Óö¬zJ¨è5ð3ȟŦ¢¶Ía¥|ø-ÈßJF)Ÿ¿„ü¥²R¤f_ˆÂÏ‹‹1ªdDF%ï€%È¥dT¢ËËÊ*9ÉÜÈÛ\Ó+fÍ–ÕNø}ÈßO;ß•j0¿øë!ÿúd´óào€üö®ÁüFào…ü[cT‰TƒùÀß ùw&£’_þä_RVÉ1F×&YñENâñ»€òTæ“kÄW6ž k,PPw(ü øî[€‡9ÈR“ÿj#‰ÿ3²PíÔQU:ÿEÊ?E Úµ©HÃŽ¸Ðõ¿D †|X])L°þË&DŠÉÏôaˆÄ¦ØÖ6‡ooŽÜÞe?ïÆµ·¿;|[Ü ËNàmÈR»éÄœe×ÌBVß .¾HBùså²”Éþ#˜é?Ú[“ýGM¯É^0ÙÜt’2Üc%†œÀ‰Üc%<¢n¸ÂsY”ÿ(p ²Ôâkh®žÁß «ÿvúI©v:ÛlV´(û6‘’¦ñ_¡Œ§6̯Òõ¥¦>CÔ4ŸG«±Þ‚e–iÖš÷UÑü_Ášðd¹ërCßn¦2Hnü¯Ñ¾O¥okâÿ5*°r²J‡˜­—¼SµÛç/šU;NKl?Î@žQfÝákN8@þoPo„;¤êŠj+ýoS~4`‘é‡ ÜÃnþ¿kÂx»ùÃé•÷ïÒ¢mœ¸tOAN SvíÀÈêm¼»qÑ›—ÐÏGÀ«åöЧ?¡{EOÏL¿˜›ülzqzòÞÝû޾éÔ´>“Ý.Jš>ƒ,| ’¾!º]47£•ÜîÙÒ¼ «Ï4K+®»ÿ÷m­28ø‰eØëí]­¬Y,3¹Lá­÷DwŠ£=%C;—Éóxùar.óHùn’p]æÿЄñºÌCiM|[?Qéž„|²õÞ’²k* uÕ½%Qèž…,ï¸B½åiïþ×ù½¼7“ˤ =|9—y1¸‹‚Ðm¶f·<÷9.ê>‰úW„½rŸ<=pŸÿcÊw™„{è>ÿÇ&Œ}<_¿›‚¸tÏSvíÀøÆóRþ“(|<YþAÇŸPÿyafqîíäÂü×_M.Í>_˜¼7“¥Z=œ<“„=3cé5»°ü$ÿ)|O±žåØÏʰaõˆçÓ§1>¶ÛêÑ›òÝ寥ÖKèÝôNü…#!µ"Å• žÐð3„wõóLC~¬Ìä<íà¯;Æê«­Â»Ýÿ1š aüÇÚOo»M–O¯;Â1Ü?†Ž@i} GÙ]ŽBV¿*HüÖ7Ê xòØ4¤|ñÀ?F#ürÇÚ)»qà È{q¬ò_¾L©kÓÎ9n»éHvÒýJùcÂ+¯´^Iÿ“_$ÕûåúüËxo¡zïÒAIÏšn÷)Ú´ˆWðäøŽúœ¨7- §G”?†,õB³¸Æ&€Ÿ@VÃV8è¤ì_pˆ¤Hã¤a³¢^µômµ¿iê† ÿÏõïKNƪUÎÿYODþrI×Ý‘¤mn»ÆÀµÑ¨8–Y¬y·xÃ}Ënìý²Y†âµ²ié^s-Óÿå | YÎòŸÃ@ñçIÿŸà@¨ô[ĈϦ†äü—ÛÿKE»­‘¥6åG¤ä.?þP:‘>òÿòŸ˜ ©Uí1’Çÿ•`< Ò»Ì&“~íµF1Ç1ÐrI׆úùr¿@yŠEƒ~ÒJõÅJqs8þ„ñ ´êcè CœÒYP"Œo Ý× ”õÕ?åÁóY")ÎòXöeŸ2ËK‘,ÅbñÙÃK`(*¢>;Â0°ËÌæ@P§n[â¼êºáè#S<.  „ñÍN‰{+¼‚`LÞJœô`LCibx»ºŸMMí˜0«VéÁ‰±Á‘¡;ÂÔÀ ÓÃøÒM~ 5.’¨ûk`KxloîAωaf€q Ýž3ô^f~)_˜+&q<Œox|7¤õ{žüÈÐúÎáÑÑüðøH°vsWbíZöð.Ø«¿ßçwD³–QÖãè‡2`I_üþÉÓ¹‘¥KõõÛ‚U¶ÜÚvxÕZÑ,‹¼sÕ,U ž`­ÌÊ{ˆU˰IÔÞ¯Ùz…Ý.ÑJDßÄRÓ”+é-g‹¸n¸ü=tj­¢‡«†WÔ z9€°¼ºæÿÞ 1ÅKv %#\BÉ–ÔûÙ%ÛpcfÉôTp¶Ê%bÙ ²úÑ‚+Øe›¾¼ªÓÊP0!n„·Q0ÂøúÙñíÅò.b«à g€Ž¶é ecS¼Ê‚<á8È+“Ï…NâyÍ~ç‚“xc!ÑÃHç”I?z´zÿJõŒï€æý§ïßI”Ì=|„RHé1¿À•à‚L êæs yWÝ-²ýÝc:Òø­uT ºM€kõgÏ!/+ÍíUiBsm_.~Z3ú1V£Rëk­6¯ÌW¼‡œ°wl®`V̲Q`‹:=Y¼¯Tõèx‹%|•D‹5Õ6<²ÏÔ±b–Љ©£#ˆ‡G÷—û8ôb~éMÄ_h[,†”C©ý_h¤¤Ý&^T Zœà¯òTŒ°;ÄClü¿ÖC!è­GÙúEžoæp—§pT@¥èåJÓ+SšHï´íAêÁÏ‚Ûã­Âæ,Ë´”c‚ØÊ"ÄW‰J±µº<áGºcm_i&2h^ÄC€Ö*¦íÎØ>SGDÐuœÈŒ dÙ½ñ‰Á{CûËc$ðèm¤¤=ϼo–îÛ0€WF1 øEþ8µ7aÀpýY™×ÙÝ^•ùïÊGô‚Æë´¾xZ+•Ø|¥þÖØ^TÀ–¶lG/“¼d”]Ð*:½Ä=÷¾õ9qòBÖD]@lÅ â«_¥¦ÛZ5÷pA{³®›ÖÖ¾ÒOdèÐ툇­UÏÑ}¦ˆÈ¡5Ú8že##£ƒƒ#cãûËk$8ðØÃÀÛܯC;NRŒ^ ´„{±ˆðQ°ûnæ9žNŽ ˆú®ñÎf¶²§ºhO_)µµÖªîÜÇfÍ¢Å7^ã:}{_))²»oŠÄ»ûÖê¨møî>SGDßuuûûáÁÁ±‰ýå9èíù\HíÙjÁ‚o“î×Þþ”×Û/½zùlòã·îÿ ©öû/QnÂ4ÊN°ß¿Þè÷³ŒÎó%WðÎÄÏÌâX¼p$@…éç Õ/S¨HWu—öÔ*+Z‰ö ƒ»t/(1µrÕnÓüAYfÉ ¶BˆÆñÕžR‹l­cŠ Z«¤È˜ 5* Z«£ƒÃ®{Û_úˆ Z£cY6zçîàè½áýå;ˆ øô7RÒ>è•o•îרÀŸUŒ^£´„IÌÚmÀ;Ÿ'Üóõ \⤤ù)ãi·÷ز oEàµVÑKì‰æˆ®>ÇÆW¬ÿˆ¯šøO»³ì޳Îtÿb·=ÔÿéùÍõ ûÜ(éþ¥zK4iSrŠ¢.µµšJÀ¥òØÃÖ§~» p¿ºÔS;^Ut®‹(7á^ ´2Á¡o–²lÁø®;,y6ç¹ ëe£è°×x1T¸ÕRyú¹rÅÞ˜[]5 §¸YomÃ6œ®h[޳èÐ*¾ÊRjƒ­Õ™Ên¬Öj&²?l^ÄÇS­ULÛÑ9ÖV«#b8Õutfè‡ñ‰;ƒw‡„·cµ¶&èþùìሠ ¸_»ÿÏ=ðE&Ü“]ÙÁºOgƒ't?Ÿ“]e¥Rôr¥é•)M¤‹Ê7:u/Z[1Wܾ÷öfÏWŠÆ{£X£c?ÞE„Â묱‘íøã«5¥Ö×Zå©tü­ÕLdÇß½ˆwü­ULÛØÄ>SGDÇßutfÙðèÝ»tkâÞþr tü|zS{¶ê­o—î׎¿ãåÜâ‹Wꇲ?Cq / ¸Â³- ~ÏKÝ*™ïu¶ {(›˜_äJpQ¦‘.iýiÍòlžs{t½RЙ;®wvÔ~²UÑèt/wÌ·„WÞ›}{c”õÁÁ%Ý2to*vÖ2m›~á¿N+ÚÜc+µh„_u+5ÓÖj]%Bh­f"#„ÖèEòeBE3>ËÓ;{[st¯IR] { âôøÖ— ¹ýÿÙû·à6–4M„¨ %J"%Ý..èHH%R¢$Š"%J¤ÄCIç’ÉLe’‘Ȉ%fVfUgvWu×µ»º§»ºçÒ—½ÔÞfwgvgv¦÷q_öqmmͶÆÖl­m÷©¬žöirãøp‚ðG¾LØéHÙìË„ŠV¾ŸÌ[´Á…wÀ’/*R釲Ýfµ®Uº-<+¥¡5ö£5õǦ™ƒK¶®kÛŒˆÉ)çeäª6¡)=4 ì»Z¨8RéR¥C¶q¨…AR¬•¾oÖu›¦ü ÛÖjŽ(©2TEØUõÅf$ÝKZà 2­ˆÚ Œõµ6¢Çb#í]MOëþ A^ô—{€Ÿù2al÷½¾ñÁ´Â¦’V ÂP̉äCèd ƒ$WásDíyÿíYE±S266ëB¿;F¿ÛçÿÑþß‚©öB‹kÒ‰xýº½4/§ÆÞÚºe¼××ÚÀd½NKsfI« ¼Ñ«õE§ZÿæËIcáéÀ¢·œ4R*•†FŠ£ÅÑÑÛnx2PÕj„… žC¹ôR.ÿ¶YÑÿ#Vg®¶Kî{ª×t‹ÍlyƒYæÇU½64ÎÊ&«™Žw:›>Xs‡|Q®gêÕüüôËÓâÝM*×Â@Í’Rçÿnÿ– äí›™ü]ÿÃíQÿa÷–v7]s㣶ڪþƒÄÌ«˜É¿ù¿þâýüÿÚŒ¬+(Ы׳_—œÀæ¼ÖêiÏl1F=Ò°º©ËÃí9MÅÓf£ÜÒĺÝ&¶bTôm¾¯ò¬"Ï!R`%ÿ79?8p-TtÍÖ}.›%ÿõo©Î¨±Åªêw«žùW ‹âÖÝ΄”y We?È!’ЙØd©/§‡Ú›ò' B>*C*b°RÓª!ƒ/»=À^Ƚɫ„²ïãigUBÎö °²TÝ„æz`I«ZØ£ƒû ‡}©ÐÀ7)ìÃ÷DŠI'‡׽͌A„^öC„ýûÐË~è‚EâߤôBÙŸà)&½ôz¡ëù•È5ÿÝ€>OA>•€n‚n‘ð4äÓÉë†Ò‘bÒM~N[µ´ÚªÎffØ|£âõŠ¡[ì·²@ÓŸþñ^ç õnh‹pòHŒšs §ÖuC[„!3«Ii޲åIRsŸ}*¨Go½êIŠÕr ­;ó1Ç …‚ð›À~a€Ç 뜶"yô ïÛæhÕÕ•jzt¡À!–£‚û Kuࡤ¶Ùظ¡~à ÈR]FxÄ¿ä¯×Fd¼xòIeséÊÛ 8< Y½ØÏØGáwËù·´ù˜BuøÆ°ÈÅ&X)“6š—9¤s,íUÝÃæmÃNgÅYsF„”Ygs6êºÏyͬ•5¢¹\§ÿ_]£ÇÕÓï?ÈÐå3ÞFŽ=©M9$é`ä6…ÉpQ<©¨6q÷},ÕtÙühZÌ£Pv7w ßQ7æ‚„NîrˆÔirí†p òXòM™²ç)i—Pvf’æ€?ªäÆR¾K!<Y*Ðõ8jã4¨±½©^r\c;]§gIsHôG 4K­YbÝ|ù²‚Ï;ÞKiã¬56n’Ì2¼ }rQFLNñ?|õŒDé °¹ÐyÏHÙ]@PÖÙ±lŽÑäE (QK"6ƒÀ‡åbþÓ=¢æ’†‰¨æ*¶¸~GÔPˆÌAàQÈqn©Š0Ê® Ø ¹WY%‡³4‚ò=Ê(§x²Ü nø )˜t“Ñf K4Åõs˜…,ïñŸveEGM”ÿMà-È·:ã°T«©†l1N*¸ ìóƳ‡U˜ÆÔ@€‰qöѰ ³«)?ª!ìÜ£Âl£»ÛG8tÄ“¢ N-묮[43âÆ¢õKìŸ@~"]ŠKªê¾†Ê °íJA:)ѶwFß²Ñ&X ×Û)®/Ö9D»ƒë0ëhDGS’ó(bÝÁu´-Âå¶SòŸö±LY_Ñ'ëmÌ“ÐÐIàÈW¤I÷®ýõ·Ü»f¬d.ë Û±3é‚ [¡Ô°Ü?h§³YÖö+v?Ïjú‡‚^[ÏdïµÝÙVr[À«Zeƒ.n³·ÞÜ–c%­´¦—ß¹ÿx¢íï6ouë{öêå“ñ»·ï9úGÇ)à×’»yuyø$ÕtIbuJߨr±Ûa\ì6e8zˆ-yFíÁ{ævV¦9ÒÓ2¤·+‘Ë£ŸÂcòLrŽ“[âÜIÇy£ ãuœûh]XÔk•£ÀcuÞkRvÝÀ㥦ü·r—QJ?ðäS¿k¾ò„÷žæÂäÓÉñ»ƒ19LªÐ`Á}È÷“p˜g‚·4éÚœmU«yÎsPÔyñ ®2ˆÁyò<@–›î“ržÜöÇtž™6ŒÛy¾ÿ ì<‰ÊQà±TbΓ»Xl§'QèþÎ:Ïþ³/ŸŽõv|ìNL®“ªó4p²ð ŽŒëìAÃwò›_5ÈiŽÝušDùGýž õ­Æ™cÂ××l¢òòÃäüf6åûJÂô›Ù6Œ×oî÷¶!Š:Nârxrœ;>"'e× ì‡Ü¿3Ž“(|< Yþ@ÉwÔqž}úêíâø³Wssãó¯^ΌߊÉR­ž>†ü8‘Ðó©Ù° Ý2™î0­RðBÏ!Q/Jħ¸LÉ ÜRE½(Oå)ä§ÊT4jËZE«•ô2«{§Nië:³uÇÎyÓÇ® ×éž÷uq_]×-ºrH´ 7S¾û%|Y}ÁüsG½åV×CoE£*¬XÍËR>=$"B'!_ì|HDÙõ/A¾¤nÀ¢‹Ù”=ã)¶ÒGx–Ú !·e)éæKÙ§9DŠ©ô=KÍ]®!yŸC±RðÿjÕB”º8D’l«ûTé ¦ü=@Æs¥Âg“ʧOЍtBµ‹e"Öc)Àãa\„ 2ë¼C£ìN/CVoÒ]¢wÔzù§W K-Á†æz`É»:7ÂJɆRª¡€Rc¡ì»8Tk»]ªt†S~w ’b­ŒÑÍ9Ôl¹³Z­<`Z›6ezóþ Ç¿?\ؘF HÂ1Èc±Ó‘¥²n—,£î4osÝRy”cp½Î™Ôm˜Q€j&•U¥3šò#Úå÷ñŸ>x³¦Û:kÞÔTm]Óä3ô\Z­² ’=« ^W-Ãh“0¾qñ“ºiVhÙ³öco¼ÿ-·­‘ˆÏ×p›F£æ?æVÕ6h«˜nøçrDKrì Ÿ@VßèpzSI¤;h®É*Þ.&x¡OdçLL.dÖùΙ²;¼ Y½sö‡*‡QD* ¼ YêÐPÄ‹(ÛÞÛ±­¦§!O'£© Í´0iŸOÙ>åI‘Ƥßß-[Uá§f\32jõ†ÃüW@XfÓãÞz×+—ͪh1Æ}ƒðpò¤z_±ùUÞ´dZ4ujÖè2f¶Ù¹þ¶¤UJ®Š¿Ùä­žíÆ×W<2jŽnÕ´ŠÛ£¡‹°Û&U—5:˜iÖbéñîƒ9á#È”KÑ·¹Ç%5"„}û’olœVcŒóöQï/Èä!r'䮳ÉKm”#*‡½¥Fb~˜²Û샬n·üÝù4.i_‡±Ù·–uËXwe/µ<Ä÷Ç!˯ÿG6ûOνŸ›‹k3Ý£TÓW5×C®ŠV+}CtEóäc­âÖ´ám ™3¼M!Â;éˆõ5Žý5öêާq­•iñ«Äï~qÁ¯clŽNbSQù x ò©Î;:Êî(ð4dõ6/mçèÄ‘;…<ú»æÜN{ÎmêÙäKÏÃÝÉÃ=†ùf!gõp­ cwE=±¾É±¿)Ã>†igž‡Ò©P5O;¸s¡$7ÔPRnûq9 ìK5/zî´‹¥ìöA>¦¬”^ßÅíJ¨ç8ð"d©eïø:@¢r ˜œÀ¹rÊî0 Y݃ ü »i×M뵲ɑóÁÌÐ6DÛ5‘» |ù™2ÉÃÁD†QµŸi_ër·…ÿN÷Èqí¢¤:=<²S=²ðJb}›c[†} =2Ïc²|Ì(Ý#Ï qO<<ãÝËX2k%ƒ¦ÖukÝÐ?ÐäœV©P‡àþÖ¦GÀlÇ(ÙÌÖ…gìž‚,a°9ü»ÖÂû¼>8SË~†z$”Þ÷$Ó²{ƒ–mÒD7ÍÑNËÐÞÂéZ޽ÖK6Rʱz½ÀFïæówFY†FÁ˜QÔjyª3Õ×Oîû#׬my¤Ç ·}Òn}æóCƒÃ>í-ƒÝ¬°ßš…]r³æ1…A—ʺ£•°-i£Èí¹Š«¢oÄ¿%(uqˆ$®S¥ó"åï¨ PúbäÍÁ‘S§Xžƒå¿jð\ôò¨9Ô>aüÁIÅ÷Då ð:äëï)» ÀÕ¯\?‹yGÓí~´ NS¢¦D´2ÀG©‡)¢ö2 Pm'{»½(]H”?ƒœÀ3”]ðdõ fö{]ˆ„rNÏB>›r$¯é#2 x ²Ô¤¾¸ZίC–ò"›‡ëY7–6Ü`º¬{›ÚŽB‰6j"w8 YjóÈæCÂþ…4 ½ÂK_ýöCîÍdoz ³&¼ùRç-‰²û È 3e%ÉÞcþÍŠ¼¢Üq™„ª.ïBŽoW”TNTC~œŒžÆ€S§âqÄ¢íš(<>K5§ãv¸ý¼Jù(áÑTüoPGèå•_{!KíÌØ|/)+++º%Þ‚mó±Q4Tˆ¯n•ÚjgU|ú¹Ù ËCh`ÍE ¢áBg•.tFEâáBguÔu{d—©#"^èŒ:zrlì¶. î.ב@¸Ààr+%í‚Ö|£lâw#\¸«.(©‘Ú™p!Ý šÑÂ$-Ü ˜PP¢xÝÔ ºË“¢€•æ-_m×zn¾Ó³aÓ—C×þDzlâ«Q¥ÚYÅž™,¯“†¼Óź|ÐY-E Ñ‘xÐY%u‡w™:"‚„Ψ£;ÇŠyñ¡³u@„À`#„ŸúÙÄ]!áéT Þ£˜„ _H0<¸¼ÑùæuotN.â™NáÈ€ q‘+ÌE™ÂDú¦oèÖ™æ‚Ã|kÁáMpïɬLÖÝ_–4Zδé‚yo½áu]/+ø=u@ü(U´¹ÇVLÑ8!¾úUj¦Uó9©¡5•`”Øk§Q6tÑH¡³zŠŒ:£%ñH¡³jê¹³ËÔ)tF‡slhx,Ÿº=¼»ÜGÑ_€‹­”´ªøVÙÄ]-ßò¸¢bÈPEY ÓÓ † YîmÅ©{fÒÑ“9·§­¹cv‡Mâ©Eáð t…+Ø™‚E:¬_Ïïõбfše¶Hq€7äØWZ¥ ‘bˆµZ>ÿ¦QzDn´0gÔtÍòc ›}E›fkúÏZÅp6Ø”j8–fÔüu Z´XÔW]ò6¾.hô ™£[ÂqFlõ!għ¥ÞY{8Â…€¢{;«™ÈÈ¢3z,:«˜®Ûƒ»L‘EgÔq(ÇF‡óù»Â³­…â ¾WZ)i·Sóm²‰»4®è~öêå“ñ»·£ %$Lby{4qÌ¿Äâ/h¸-4ï³ÿ³2ü#}Ñd°Aú´·aªµÁŸ[ð—¦5¼4­ªVaO ÛiXËÞd·h#Ž­8¢}~|õ¨Ôø:«Îøæ:«§È 3Z:«¦®ÛC»L@gÔqØîóùÑ1á ³õ@ ÀàljÇŽ<Ô}«lâ.z^̾|:þÕÛñ±;ŠaÀÏPHÂ8òpšî8dósîx¼Á¾öö&܈þy®ñî¸~0g–¼²^ÕƒzúW5=ŸmÐ]Þoš›ý•‰`ÔÏžmÔMïþ]Ѷ[YDCø*Q© vV—1œn謂"c€Î¨G<è¬~º†Ew"tZ1@gÔáÆ·‡†óùÛCc»Ëo$ðP:Þšëá%÷;º¥Óè,$óeßSVJ¡ç§oÄé1QêâI²Áµå¦ãÖž÷Ør€ò/í?̬Ïx·KdÙ9)ÿÙ, ã\m¬µ÷þ‡GÛF¹{Âç,Áø(ð3ÈÒ÷ÚnùËÝÀ‹¥ì"ê"âB@ÆOx ò%eÏ8èYßòÒ»„Ä{±TÔ¬‰-¾‚üJ™õI, áE[¹÷I¨D“OƦǃK¶®kÛŒhë”Ûz*Žñ´Ë¡ì»8Tó€{Ué|pÓ!‘kåö7ëºÍ¦,Ó°m­æ°ŒQ3Ã5tƒKÓ«íÞ.¦l޽pÃÖ{£ÕëÂ7„ oC¾­LýzfU¯Ñ¡.ãçþN+Ç yA”ëø^‡|=ÆÖpÖL+B¿”ÙÏwÖêKPÍêÛ;Øýk}Õ/R~OØ ¹7FOô^ßø`Zaáö/ Â>È}Éëäø^€HrHoÉ3øï÷P씌9†…¦ô»cô»}þíÿ-ø‘½\hqM:¯_·—fqj|à­­[öÀ{r“õ:Ýâ3àÍÍ ¼qÍ‹NµþÍ—“ÆÂÓEojm¤T* G‹££·ê•ê@U« àÞ²BP׿ù-ŒyÏÿmÖu0_•n3˜Ü5öÔsutÙò³Ì®ïge“ÕLÇ»R‡>XsÓ(Ï3õj~~úe˜yqÞ&•ka ê@Q©¿ó·KLööÍL׃hOù»·´½éšÎµÕ– 3¯b&ÿæM~à_ü· m†ÖháÕëÙ¯KN`wÞNëõ´gö26]VW›z<ÜžËT ¹l6Ê-M¬Ûmb+FEßæ+1; ²ˆ<‡H…üßåü`ö[¨ènØìÛoÙ,5šm„Zp[Ì;ªlq›î[Â,ä¬2cኣìorˆ$A#¬7ÝëZb¡/§‡Ú›òGd„‡ ’!1:«iÕ°ÑÙ^¨€°rOòê ìsØv1xòê ×zØYª^Bs=°äÇZØÄÓ>è`_*ôNê¤ôAÙá)&}¶ÕªfmÄõ²º ì‡ÜŸ€^öC„(?-“”^(û"Ť—ãu˨9yí€FÏ@>“€v‚®ð,ä³Ék‡Ò9‘bÒÎQK·½¹.[B3ÝÐF7Œæ ¬áj¦Ú ™¬JJ3”ý)‘bÒÌð¼®ÕØSËlÔm–™šÍ±'zÕý;*˜êm(Ÿšš&‘ö‘U5Ç´DWri¼…±éÏ1œJX|p:#¼ù^òú£ìïsˆ$©¿³ŸJ'òÂçCà ’bµìwÛuF˜ ¶ñÝ”"—ÃŒfØ«Š–fÄ.11™wŸƒ8# pd³=+ÒéaÌn,Ûº#N(˜t9šŠ3è>ÊXM+h%¥‰sêÞÍü9]fÍ+ëK™tu5cé’e²â<ûÀð2äËÊ<1ZKÒ?º<_¾›§u TŽm–ig̱t·û˜`3“s¯§Åy—ã›eE^+"®"Éôƒ@jSȦH¦Kü .‚ç'$:Õ«Eò8¼l[ZìÖºZ%Û¼€^°Ï¥pí°rŸ ¹PRÛÉ·!Ô<9¾¶{©ª;kfØ”;¸ÆÄöfÌåŸê%'GmI܆‰È)àÈWvÀ†O¡BìŒ ï÷†¦‚sVKx²TŸJéSf1¶!v x²Ô@QÔ’OCA„!|e=°xÐJÎ/@¾ Ld?cÅûHîÀSŒtÎ WUñÝλª}Ì çØªîОa³–Iû¥³,φ$¢ n’#leH’òEÆ>egÍeÌQõ~%ªqOÖyŽö¤6m8J6öà¬}gcóÈœp'c È;ÀÎøíCÍI+AIsx²TàWôADNOA–šBõÙ\Óáý÷ÎFDæ ðäk±ÕÆ¥†­­†ÍGB\R¶ÚOj=QÆp & ’d㹬J‡¥üÙÕ–k"ǘ$G£ônàÑÔ–‡¨[òˆÆìê²Y1J¬¬Û%Ëðº-凉5³ŽÉ–õ`òU/ç$Jp 8y*6cß¿d8z5"[Lo„½˜›”­SöÓ"%M#°3ýÕ¾²ø[`W`Ô„=¥¦óRaûQ»4&Áç(0˜Îë•®©öêñ.Õ]±šû >½Ó BÁpõ"d©€0¢Eì@§ìú€— _R7`Q/BÙ3‘:íE® ­Æ7a*Ü|qI‘’¦q5`g¼Èe@ÅQÝÀ#¥zñP?²ÏÖu&Á¨Ø¹_É“„úÜJUø`Ï5èðä16¦möìˆ<\½ÛKÀË¥Ú`è_> Ì@ÎtÞ¥^ƒ‘f!g“w©”ýM¥wñ‰¹Ôk¾{x ò­ä}eŸã)i×Qvh"¡¹¶)H¼C7°rߎzUbÒäÖ4vW½Á¥›-Ü¥^•Ø¥S-ÿŸö1¯Jñ<ðd©.æU)»SÀä´¨W¥ìóJo*óª7|#ö°¹¼;£ì8DJšF5`‡–Õ¼ùAjÔáwC–ÚÞ“ »¦Û¬é4{#Aªxr|;c÷ÑÞ•(ƒŽî•Ï!'0Ü¥ìN/A¾¤lÀâ7ƒPþ x9Õ|#&ì÷öɨ$ÌA–ò°â*IóÕéìÏ1Ó’ÑJ8y(F­”%µ2œ€<‘ŒV† ?H¾»¥ìrˆÔéî6ë«ÏÃG%ßÏQö“"%Mã&j Àu·Þ&CAj€vÕ»ÛöÌqZ%ñhévŽIŒfˆV/ð"d©^nÛÑÌÑzkÚYxXCÔÆ€Ó¥V0ć5G&êß:_¾í ¶0†ñ ý¥`òbòLç.ew øòÓä.eÿŒC¤N;\n¦(5 y6yOGÙ?ç)iÜ®¥N:\oû´ 5ŠÐºê·«ÒPÅ\5JZ…ÙÞkTtãå‡5ÝuÃÓjÜ•FyÏU‰V-ñî>„,Plâ}Ö߉¾¦ÙXN7j¥J£,¾šÎíÕë‰5¿<—-·3-i»§ì?ç)i¨ãk~„©Hå”M'ì˜à šÙ`,M®Ý ô¯4,¿}Y«ÞM²¢^‚|©ó6;Í2È,yc¡ì/sˆ”4"j À-4ûâDãô!Ø-a_*î…†ÏܾÁgF“c¥ŠfÛL‚`?ð*d©ùrÑK"þÄä09Ιæˆ8”²»–jÍ\KÅ2Ó,ÚRö"uÚ© ¡é¦š&éÖLÙ9DJšÆ0j Àmñ÷û rIù^„P}CÈ–íœ>'Q«%2}Ààh˜Ô꥘Վ@7„§ ŸJÞ\(ûÓ"%Mƒ»¬±“£'ïè‡ µQ*aü¡Üˆ·©WûhTUVÑk«ÎZ°Õ·bÔügåéï¸3N½áˆZ81ïNB–š’³ðQè‘ð1äÇÉ›e?Å!RL¥ïYjÆà!y3û޲Y+UÁ´‰‘$[×)U:wSþ½ÆsÙÄg“ÊåTD¨v)RXS?Uʤëþ]Þ•±ÞRu:jî72Æ$rç€㌲"bLÊîpò ²Ò޲’Ys4£fÔVÇE툨SÍå5O–ZfÛ¶Ó8R2õ•£d´Úø'3¤›mºýûcë;>§ŽaÝ5xÓòLžã)ÚEÁ“ÀÈ „îãhdã© ÝÇa<ʇî9:x–CØ—Rˆ·Ó:³ÙŠš$EMèlœ0 9Ûyâ.qâ=“6!Êþ‡H1›ÐÑÃqôra]«4„÷»Ó¹ŸjnT’ëÝB©ßlF>Qæ5%bx X„,ÕÅLé>̇pòPò¦DÙsˆ³)í[/™ë‚Ì&`5„êÃÚÝ$ rIi–A뻣"Ç2>£!•ÞøŽB–^xþt{š€ #€;ÉÛe—C¤˜íépy¥ô‚À”C>›Y]-Ó«õîHš¼’+”Íj`SÒ}1=¼YJ³bõFôZÜ#­I%ƒ¢ìÇ8DŠ{²Ff+ïC˜aüKÝÃkm~áF.ž1y~k¹âZÃv{>zÎÇýµhÝñ^à#È”U|GÅé&=AB`gRŠwŠ™úC.[î¾Ã¤M²?Ê!Rì#ƒ‚ý³†fé¢;;&aâ„ñ N×UÝ2J9Ͼ8ŠZ‘ëf Çy¤/‚&a5ÁfLì MÚ‚(û›ª]ÌÍÑ ®‚ÌÃ`ãæyA›ËJÔ\£™ž„œÀzÌc˜á®ÇPö§9”_Ùöæ£V¦€Zܬd*ÇÍ'í½ë-)$ú¹·ðøØßá̪h­r—œx“<ÇR’·Mo¾ ÖÖéAdG÷_é³]_éöþ…›¶ívµÂ»r¸KQÔ®63ý).Û4ätò¦OÙ_á)¦ÒXòæ"Bò "éià-ÒLûM¢‰H’-Ÿ*™”|ˆ¤X+·¿Y>óÄý•¿¼Y­š5,K¯xÏQMû`Š–ã)4JÈùxÅrRÜXÄ´<{2™V*™ ÷»’» ¾oÂøâ¾›­(ç@+“Áð£#£æèVI¯;¾s ¢eø¼¿Žµ ½[láþé0 Tzƒ14׃KeÝÑŒ`§ð–Y=ÊíÀšë¤ì»8D’ìû>•NdøÃ”ß/(ÿâ:ÿ©74ˤ,Óá¤sôžÆÿnG]¯TÓâïŒ,Ac„ 2S¦yöÊ•ðIa~?'³Ï*ó{U]uÝ3»Ÿgô"lÅ\ͬÚõ,û#±^Ò\ùä@rûY5WÈù#ä æëA¼ÖŒ’¾‚üJ¹T}x0-ã•NœÕ;0y—Úô h§Zr$Ÿ ïãñ(g\›lÎgpÆ)LO%Bîi3Ez˪6)\e'| ù±rAn1þ¿M %Ç6Í÷‰[h , ã»üXÐnÊ’ § *åæ?ð0ñ†£#ïãi8Y·áD.+µ¤p$ÌBÎ*ó}R*鉷¥UÐ'Œoþ¯ÀÚþ‹jN%©æ´¢„ÈeÒýAs ô NÌÂ~Èý±E³‡–ôš;lÖÃÂÙ"»ŸÆÚ†„ÃYʾ‹CµpVy÷Íû”¿Ã.@ù}Çôé^|:»ôZÿX·~èŽ0Çž°Ê9ÛqÃÙ‰å†Q)ÿè‹eŠoÇÇš­[Î;÷eÞëé+Åt‘¯ûÃP:ûKüÁî…éדャÁ<_=òÎûCo_O/ÎON-¾ )mz'”îáéGڿѳä—e1øÖÞ°+º?[ÐmÍrýêü3–Ÿ¯$êg¹"œ•)Bäôà¦[{ ¼¹šÚŠny«,FU4Ë‘„l;ò70U]m˜ÑÑ-ËýÛ±%§aé…*gh®ÝKå/¦6Ù_+5ÌÎêùÈtɬ™UݱŒ’¶«4³Éí§×Ó‹øíìULב]¦Že³RNL}™‘lŽÞÉ狃šÝå4öÍ;~ñºË!ÅQjõg[)¦^r¿ãûó°é½o©jJ!B¢oôÑ7Žâ/ˆ£^ˆR‡jQS—*ZÊßÀ ’ªñ?5Ìu­V3ؼQ©ï¹0Qá„}ûbì1µ†³fZµA™ÕUìFÝFê°‹Õl¤Ý1÷´ö[ òúYÊß×Fød©ëBs=¸äFÎL+ÌGÿ Ê <ùDòŠ¡ìOrˆ$WážwKžÁŠ’±É0_F¿;F¿ÛçÿÑþß‚©öB‹kÒ‰xýº½4/§ÆÞºÃ{ཾnÔ&ëõ'š£ Ì™%­2ðÆ´jý›/'…§‹Þèl¤T* G‹££·ÜqÖ@U« Ô««… žC¹ôR.ÿ¶YÏÁˆçz›±ä®±§îPÁò¦––7˜e~ÜpÇCã¬l²šé0½l8ôÁšyÝx÷Ô«ùùé—a¦Å¹þbô@Í’Rçÿnÿ–ðæí›™!·7åñ < ù¤ ¹ˆ1P­ùÉ–l÷OA>•¼j(ûÓ¶åÝYÕ><YªŽBs=°¤U -l0³úØ— ='–”n(û3"Ť›ÏÛýù'¼™¡§ýÐ ar:=í‡n¯@¾’¼ž(û«"Ť§síz’VÓ¨†ð2äË ¨)è>¤Bn'¥¦°’ÛŽnÇ­¦Öõ©‚jê†jºVS7TÓ½³jê†jŒWMÙy7Új¸ƒqo—âÛM*£½— ÞH Wisw{·„cÓšc8•°8‚Û×ǿՑ´Ö(û!‘$µvXy×Ã!p °íúfÉj9ÓÖÈ3s¬P(ˆ¯es|ÃãÖZ$î@Øô› Ú(¾W #lëôHx²T8~' ü[Dèð*d©Ž?|\·TÕ53l†Š»lÌ{GeŠæsHÚœ‰Çu`raÌ9˜k pWšs/L¸·#æÜ#mͽ°`Â+¥:^Qkî…¦zÑŒöÈ6£Íw†5{o¬² öòíÜœ¤m÷¢Þƒ|ol»5à®´íc°çc±ío©·áu˜¨mƒ¦ŽÅjÛòžú,˜0Yj*."LmØÚjX˜ze?®l½ŸÔŠ¢ìà8L?@$ÉFtH•NÊï3DйMï}T»xÝC$ÉVܾ‘­Kc|°òéEª=©MÇf‡„ßîU"[ÓgÐáç?­5Ežiý ¦Bxòy寴/Ǥ4sÈ ³ø4ó­±Ì¶š¹„<˜Œf.‹ÕGãÝ9fZrÊÞ…|76å|¸i[í<ÎBžMF;cÀçŸ+kç ^t½C–X¼.B^Œ±".Ò„.=äî Hº'¦ìßpˆ”4 nkKÌQ5a*R9O2s aWÃ+ÆÏêO2¯^à¥Ô–'™;e³'¡B™%o,”ýe‘’¦Á-wp$¸ß; R; ›=‹ýh·_³VÙ`–^Ñ×5Ü3 Á/˜wQ²ß¸ã"t8y ó=âi4(ÂAȃÊ}Æ¿NaE+é9OK¸(@ÔЉUø ò3evûl]µnŽ>ÅíP°›Ð v¸*“• x x ò­-¨bÔÞûýmï#òsèD÷8ð ÌA–Úü$Ö¤(»ýÀ§¬’.a_Mù<Ynv\Ê×0X#a|¾fÔó5«é6†ùD#jÊŒÃ{åÖºCM¹T5e"ò8yªó¦LÙÝ>ü$S–ÑÇ4pr|¿«4$£yàKÈ/“ÑÇSà«TóŠóÄ] å¿üò1êcXT4ÉïÆÞáNëã²ÏÞÃC©ëCøBÊ¿¨´0šëAÏÅ?« (u:µ£ƒ<ʾ‹CéA^h®ÑÏ‘C‘ƒS;Tü+(r€jcÜCªthƒO/‡HеòèÍša·^ð±ôºi96Û¼O‹Uù}í~xà¿Ø <ëÊm(M=‚üH¹‡ËúŠA·,¯\ Â[Í ÷Lýõ·Ü3e¬d.ë Û±3é‚éT¡Ô°Ü?h§³YÖö+ºV®¦(èµõLö^ÛU%×¼ªU6è¢*{ëMU97Z+­éåwî?žhû»Í[¬NL>[œ_˜}95~·xÏÑ?:ô†¹ÿ™ì•VT¡ÁÖÝ"dáÝ ô-WZÆ•VS†£‡ÙÉ5Ë,{£­£VjØ,S»[ó&âC\†d > m5<•QÈ£¿kFzöñäÜ›ñׯ^>þÖý¿Á¸,õš=¡ôt–Œ¥ž|¬UÜ 7˜î0­Rðn^6SbãØçdØÇ.ñ<òãÛüùmïÛ_3)…˜¾ÿAD©‹Cµ8â*×¾¼P6@µÙRÉ-Þ‘cŽ›)œA؉ócŽ›P8á)ȧ”QÁ§œ†Uk  h:¥±åp &ªHâzø²ú<Â1.¼³uGØ pß÷PÒ¼ŽªZ{`ÂkyÔ@°VÏ|Ý9m m]€T6.X=y/¥šSœ1WÏÞ¥’‘9¦!§•+ç${ã/š´øû3Dé ðä;ÒÔ¾£W'F4BnèõÝñ\nÈ dSæÕK ï²óœä"ÏîäÊ쥽ջ4ËÒ€† Õ¦òøÅí1Ç¥í£nB N}ÀOÈp ÏuIÿYXœJ¹õOB–Šo6ï‘òŸŒO×r::¼ Ynßév:Ú»¹Ô¸‚n³³‰(( ¼ ù¦²‚$Þÿ#·€yÈñ§¶›~.óLíº±QêâP~,¥D£ˆ2Ï õ£ÙnŸNóIÜ` c˦³ÖŠjôŸÑÛbÅ‚ïTMKøM´!0'|ù‘r)¦Ò­±Mº­<þRrÅü€7›eÉ,7ö€ f½Òˆdä § K-än*È•F½NÇ\Çê3^6µ²AØlÕX×k“Í# G¨~§Ô÷a妊½ œ…<û] +‰øs®Ïe  îØxÏ[I‘Æ>׉ŽL¹W?Sê›âSb#SÊt?°²Ôe5mPö9”ßÖº]hvrÝg~cn˜Æ–*:‹ÚL¬rx.Õ\Çíp°6Šb†<1.©§ÿO‰@Äã<ðd¹«sbŽ¥‰Ð-`üÁävê –¬‚ñrAY=Ǽ`‡Õ-½dغø3ªÄfø²Üy»n§—V,­ô‹â/Qû%µ/Évu‡Ãó¥ö†_ÈR¨)’» f;oUwÐ4î¤Bß“?ï½$hLw`@„·!ß–6¦¨¿§&¡™{"% ™Qà}È÷Õ5Öu£¶*Ú̉Äp ²ú à2 [jê²;0W¸GžÝ¸O³%†Ü~盼mžª—jæcöjíÍÕ(Š\‹#Jà0äáØŒ(r-޲KG (+Nb†Üí[n€TÓ« Ž¥üéÂ^ʇqÆ·”õÐ[ÊÚ´ñÜ›øÈг¹þ3ê¥JÃ;Ť±Uzô“ÄàÁø¬è¨bœÃ'åÖL%F”é4ð)ä§É*(ûg")Ò¸A³PîXÞ_Ž$ßHžR[6×¹ižeá`í,Û§ó»5cÒ±O÷Q£„ß½OÄ:DZgçSoŽÕ lxônŽf_Eí•ç4yL™ÓáÖÊ ¨Ç›€Z Õö·Jx<Êô°roò²ïãI²Ú¯œ¦CƒÎîÈ ã6“½>‡^‡|= {=Ø+u`SkZm•6kŒˆš,¿Á ž=Àç|“½s7Ÿ¿{'Ç>¬étG“ãz_QËåù=‚üH™ßTÃvû~§¹¯>â ÍÍš þqó0‰pA^À:ãÛØ5é„–÷çÍš£³)ͪ˜î¡J3,Ô ÚN£lèv5ßó*¹.¤4ä¦a™I¡9P'äFªaN³.u£¢Y¬Þ°ê¦­Ó2”(ÅyÐ"Ts¾£Î®c=ôKÔ(áw¯‡&Ö9ŽýN0åyäS 'LÕBñWP`€ñ„âfk¡·½•4[¾Úg´”[s'Îx««À!ÈC±Í+D®+SvÃ¥–³Ûv#5Èãš §Þp$Nš›àd¹.n»ËxûDþ)ÿh áYÈgcTÔ6·þîŸ Æ|§.Ë ýËÝÀsãÛÞi²_øªô0¾ý÷)ˆk®(^'êΗ³MÿªPÛýw¢æMÌÏ¿‚üÕ®ñD‹P%a‚§Í¡JÂSO)«õ¸«Ó[ÖÝ‘ƒ«Öu]x÷*Ñ9 ¼Yn­=LWû¶iÐÛ*¨,B.&£  p²Tµy—}0­÷n_Q+Ȩf8ybçUóø²ÔnqÕ<>ƒ¬¾{åPpSƒ¨#³À/ ¡Lçÿ¦w¡•;À«úÃRmÙ2XôDšÕ ¥CÑ2põ4—žä'º‚OûÍew`²îQ·YFâ]„7àBع—„FÄé:ðä„D ˆç%àÈR'ÏBÿòY`r/!PvÁóNyÈêƒA‰]¢D „<[ù.áy“œ³hoS QúFü«¤D©‹C$ɦ{N•Η)?¶ PúÍÉM4Ni• mGdójšð d¥c]±ÆÄĪx²ÔÜX{¦ì/B¾CLLýfé¶Û1Òö9]]@ˆMW ¯ƒ¡QàCÈ“QÓ ðäGê- ¯жkb1 |Y=‡"÷²©Û¬f:¬¦—\—¬YFeƒmz¥ì™íêùk$,ãX áþ×7©M{ºUEî Â”9ûP <ùÐÎŽV€/~ù³Î»KÊ®x²Ô%C›jàR¶À¾ZÓkÁC Š}‘; †,71sG„ÆSx ²>¬~±âœÌ9â0 |YýB†û­ „Í£ôÖtBΛJÈ2­D럮» \¬h ~èÛ„‡ñù¦qÏ çci‡¢£½÷îeqL—wÉlÔœ­ E”ÿ8/¥6Û øRþP†'bujøP „' «;µ~ÿr Ëüà£%YPSÄç$ð:äë»GSyàä±d4u8YÎv7e'³†(Ü>„,5^Ù¼j^rÝ–QÖ-º«lØ–¾ªYþiÑÚ†¨ýü¶Lÿªy×ËIÑþˆ\^ƒ,uˆXÿGÙ]^‡,׎øOϳus9·ÿ<¡^s˜xŸòcØ2ácÈÕ{Ez”: 1ÎØYöaÍ(­±f£BûÞYÙ2ëuÚÖÖ°ÈÒ¼žH´ï`_„ñõŠGZý¡ð<æOÀ‚PéÑ»cs‡?aÆö%²Ò€;tÖ…²ïâI²í³O¥Ùô]oî× ©SÕÉ£•z^aO­Fm…À†Í´ÖÑo°cÏô²Y3JÞ‡5~+©÷¹p)Ê`Nø²zç3Lá@¦bØÎD)“ ”α4è§³9ÖÜ„X¯TÓYaæ:Ør×&n+È;ÀxìàgkÞõ)Á𣹘I¿Ó?R§±bX¶ãíT)™•F5z­6²« NßBçý¶ ÷LP¤,»ÂJ™b®˜õ VrÇæ6S´ä5Ð&Œ¯ß¸ì­6y_m’dnÞ,¾æi€áeÈ—wÀnмŒÇn§®4=T›Ù6­Õ·Q–vÌ5£œ¦¡5«h®ûˆ{‚÷`Oß^ø{íÆ‹råü’Lü}[,ŒÜʱÁÂíâ˜x *`MÈÝë¡X‚¢g»Q´7›òÌäÜkq[®‚+a²Ô&$E[®!ïã±åëWX½ý?™è…·â¾ÖAÂëÕ÷Ý^ôËè]Ý4+tÀýÙmYëìWþè‚Ýb%­n84å:™hv0âöZmÂø|íÅöÇIœäÏ@Œð"dõuSqã´w€ñç› rVt1mÿ°8>6–c?Êùöë~’¦ëýŒšD f£8„Üž$Õñp”¬èâÐ"<YîYj5+h ï㱂…+ô0¥wJ9X'ÛòeY·Õ«™:¹^cþ½Ì›îdönö.Ö:ŠB¸yA¹Xܾê]¹ÈȲ½8Ñýß÷¿áæÿF6ýï6ÿ?q+ùê„ ?R/…éTƒèóÿO´[ÒhîÎæŸÄ‹ñÔ?ÆZŒ±ò ÑšååÖC\â«Ë_qD±Åùo€3ád©ÉàMü³íþÄ+O·Ý¥û¬\¸+Qß?GÂ,äì8—_ ïc‹åõZµ^Ñ=—¢m¾ŒÐv¬FɡӮÞí°m0°Êóƒ9Bá’üØÆËÏ^av]/+Üu‰,c;ÞÀ“ÖǼ߸e[ÞpÝèªaÖüwc¨h´µ8¸_Q¸<¿Dg!Ï*—Çkˆ™ô‚e–¥ts*…úr¹É”_!ƒÌÔ'1ÚžOC—m)“öt@3Cºfú՟Ίâ÷Aœ0¾IŒÛÂ…Èf™0÷?_Bî‚ÿÄ=ÉßCÞJ{’Ðl-Á¡„mÚ]Fv¿VÍZm¾›²ïâI‚vÓ¨ÑùMÊ߀ ’d­ÇÏg¿åøyÛr÷Ñéñ­‡Ç›ÄðO—àw²gÂÿ>”O(½ÚHߨr&¼gƒoí%õ´éès¼\ò,<\²ˆ0Yx鈊p‘+ÊE™¢D.œ~ùªÆÞ|0[—1˜+ìíæ 7Þר«šžÿJÛ`óÞ€úµ7kºa±E×:8&›^Y1J†^+mvªŒ¡¹v/•¿h„/ÅW¹J-´³:þì±aVuÇr‡xöÜlX5-j·ØÎ(hÿ’^­¯%¦ž.á#ÿÕO×Ðð.SDzY)'¦ŽÞÌp6dž†î䇆oï {¤O»ði~Kçö£_8¦Y±ÇÇÇËïè³weÓÈPoÖìÀN ÅÁÁ¡e£úÓÂÈâàÐðàðàl¦\¬Ðlß’K|k,„–3¢hé¬htØYÓ=àëÍÿtËᾞ–:­l˜î gíýžþû;ÿwû·TÇÛ73y\Êw`»R®½ôáïÿ-ýÁî×V…v/¼z=ûuÉ îýè´ª¦§=—#÷Kf­¦—¨·Ææpûw¦¦ÆÞºÑ=ð^_7j“õúw˜80gº]ÇÀ×K,:Õú7_N O½Ho¤T* G‹££·¼p×Ð=v»z\1*ú6_ùöc‘±µŽM‡ózR!]ùî eöÍ;~N=ô¯v-–à ¥âd/¶RÒaÒ?@iTÞun Ã_ë§8ùCóSÉ dÚï_¿ÜqõØÊø·ú}óû ÷ÕÓ oõËÙZɤ™¯¢ÚãîÀ…~¥Yîe]÷®žÛ Ž[&Ý‚½_b1Ö´lœqâïÝc¦;îùàŽ{tËr?¤?æþ¦æÐ Ÿk/ÞkÞ˜¨›ˆ­*DG<ñé@©)wÖNc”Cºžv»= ¢Žë"G=Q‘ø¨§³:ê ŒwJ£žÎ¨ã`ŽÞÉßÛ]Žƒ‹/:KðØÁXâ|“lâ.%Žo¹5S1 ø‡(+ar:Á€âP¼6Ýxâµ+"b‚Îè£'džoßÉß-î.ß‘@TÀàJ+%íƒþ‘o•Mü®DCŠQÁ£¬œJ&*8( ‰G ; ¯³úé¤êÜÝF݉¹…ØÊ-HÄWáJ¸³z?CÑ AH.©vVK‘‘Dgt$ItVI{nï2mDÄÑF_f(›c#wóù‘±áô››ÚÍìë×/YqxôîÈÐP1iøëÝåÝuø(…:¡¹^r¿£[ºÛÄíûßXR’Rpè›–Ÿz㨢ÔÅ!’¤GP~HöOSþŠ`€H *ô‚Üš¹l _ûg)ÿr³©„ß Æ|§â|;àÏ|U{x.•ØÛÃ'Œïíñ^”ò?¼YmŠ>¾[œ‰S8 y4)#•¸Å™xÞ b3Ò«À;ï$c¤w!Ë? ©f¤cÀqÈj—|…^!UçŽÉØê[ YKÆVLÔ¿ýæ«mh?.B^ŒÍd'Ë—“1Ù{ÀäRò#HʾÌ!RL¥?¸dë:]ÿuPgòç)…øL½(û.Õb±.U:á¦C")ÖÊ‘´É½Ñêuá×þ1tCÿ…NÝKZÃY3­ˆª ÌþÉÎÈ?Q¨f í¾üæ8–±ÜpDâ_¦ü@°rŒ ÷½¾ñÁ´ÂFò ]¢Hr×Eªé…²?Á!’\„€·äü÷OQ씌I†)éwÇèwØ^Ûÿ[𣠾Ðâšt"^¿n/ÍbØ;;PÕjm‡ Aÿæ·~­¤ö<üÛfêWÛ 'w=ÕkºåÝ2B'RÍ«zmhœ•Mï²l½l8ôÁšV‹Ú Ý=õj~~úe˜™qžÇ»á¨æhóÈXü§óÌs<þÝGòVŒ]dÔm‚ªVþÐ a¡êý¶¶^£§z+ôCÅ\5Ö´²e¤³âeâÆ©yÈóÊeÊ2¦4ý"ÕÌšîwt«¤×=¾Ž¥×Ê2|9s»$N’oš±Š¶jû„_ÏNÅIži•Š QÎ@Âö‘J=ÊX½ª‘ Å9`ãŒY½]=£÷Q\Rt‡·8­~Péµ]aìgÒM›·[Ô¤tÜõ‹+%7¾˜ð¯ˆçu\NlÖ¦:¯ã£^~#­Bnp#¯Ï\]· t!œ´&OÍ©Tèj„$³Œ ‘Û #Épã~ü£H¦Küv¿3Èœ° rWçâÅHg‘w€mkx‚cWKÇ›§Ñ½Q˜`,K{¨B–r–¡”¾mŠkRÇ€§ Ç7Xï^ªêΚ¶²uÊ9—Šs´~(ó1G IÜ€ÏÁx d¶Ìmyë wcAÐZÎÃl û KÅÑqš0‘éž,5á"jÂÜ…åaÏ$KšLoc/9;>&¼YnĬfÇÜüÎnsÄa¹„ñ;âO=݆ܱTkb rç­ù"”Dx ò¥tÈă33±UÄ¥†­­†Í|Ó(AÈî'5 (;¸«I²ýÜP¥Cµ„C¤˜›ó¡Àõ}¤w9åOçöA–Ӛ6œ5îX— Õ<ùœt­µ×Ö‘tkwkZ´y]æR®…15¯È]¨”ÍçÀ,C-”Ò ½œÙ/Ó©…ÀÇKS ®Åûëo¹ÏXÉ\Ö?¶cgÒÿ޼B©a¹ЦòÚ~E‹Öô½¶žÉÞk»R¯äz²WµÊÝ«go½X/ÇJZiM/¿sÿñDÛßm^ºwfnúËÙ—ãsnšzöv|p螣tZŸËÞ½w >ã*xb•Kߨr÷Þaܽ7e8zˆ)|6çÖÝ1¥€Kö ã—n¶PuÂHøŠ žG®…1ùŽýÞ®DQ·q ®‚ðäfoÁUÞ…¬>»(å6ˆÂp²¼û®ºÙùñ…éד‹ã¯Ÿ¹®cp8&·Á»MÖm›­ò>cXÔgpísG}Ï#~ŸÑ-Ì¢^#O‘C{Nmz¿ºS^#OA8Yj&CÝk…{À‡þ®yÏæ'Ÿ<™ÿêíøØXLƒ›ÚhÎ=ŸÒ‘q'çµrY«hÞ,ÍW ïõ 1Q¯A¬¯sì¯Ë°ÁkðpòL2š>…ü4†¶"êÉ)ÿgÀYȳêbZ¢ÂM¯òw ÄÖÕû'’D­ƒØôA>Öyë ìöCV?µpÖ[F^×,ÃlØ8TªÑãÑ¢FC´úS­+ûS*ááw´ûï›zöjv|°S×?›' VÉ…×ódºþÃSk¦W}퀸¦9ÎiÎ[#Òw<•ë¯Çè>üsŒ¢îƒØäA÷7Üy÷AÙÝŽ@Ù™‘Q¸ ƒ,5VúN»Šg“OÇcrƒpƒI»Š#Ϩx¾bPÔW ¢Q¤ãñ½›Ö˜E׿xNœ‘kž›nÆ;°m³X³ ¦ˆ7ëX\¯aTÔЈN‘C$Eí Ó(¢Lvfo¯þÑ$Fƒ«nà!ȇdˆy„zÚÒ2žKjU¯QäFœ¶\ÑmZÕ3jŽe–%Z ö–û´Æ*ݵ¦—E+—¸NBžTÖñ'FÉuùüL£RÑ-–™|2“åÞϱsX‹g5³UHQòðÌà{²ÔLþæØ¨UÕAB# AÈ]fS@rÀ¿½@4!2ýÀÓ¥KŠÅ##°&Â3å®2â?=—ͱÖxÖ¼ÆANWgC‡bn˜QØp òT2 >üDYa²Ù‹¶lâ0 |ù¹2—t¸åÐô§wˆ¸ÝöUïar:ƈ3‰¨›lªƒgS !Χew8yPYiŸ¹´ÜpTB>"TNA޳AE„vCœq<¬Þ „ã§Ûh?"%Mc5`‡¶cÑÍ9‚Ì(tèªoÇêoc4HñY­Q]vã sÅ¿ÙÇߘհý­¼j±> ¼YjÔ&ÖÏÁ!€ãB·q¦m£¶ZÑÝдÒÐ=‡ºJ±Þ¦òŠ–æ.,ƒðägÊ¥yàÕ:UµV©0î4wjn]/9¦§”Áí(<¥ïëî@_´ càMøòå2ÜÞLÛÛ²_ZÓ,­ävdÌv,:²è±æ“cV5Ç(‰RÝñÔ¦¾M‘úˆ¿Ñ¿ Ú­æ­-ÂuñµÓÎLÎN‰2¿¶„\®êåD‚ûÈ:@5/·uÃÝ&—ƒÀ#¥Ž_‹…”]Wªå”ºRqÜïuĵ}2‘׳SÂÑ1éžM)lËŽPÎkIå0àUÈW“QιTëHȹTËö§}Ç„VìŸRdË¢m™H]r²$¹ïîüñÜÜøØHLóǾÅz˜ìRÝYèí->&®iŽsZ†óÖõra¿ÁóÀ³¦üË ÊÓ:Þ­Ž¢ŽƒÈ[Ð '0È£ì®!*ëä\öÓ¬UïÁfØÌpÛBE_×jލï ^EàsÈê3ûVÄW'¹Ð/µò¾Ø¬¦×´J.R©ÃÀ3ã»÷*Òz(»ýÀ³åz`þÓ=¢”ý9‘äJ¯¾Ì]WKwr ˆ(ç)éɃ‡(S€š< Ûl™=Jù„ê‡æ÷¶1ºá2ªjûB¦å ™„kz3!†,µE¡®‰HŸB–Ú%'æš(»à3Èê3]§ž)ÿYàsÈR˜˜zä+ÒÃ_$ßÐ)û9‘’¦1‰°3þf¿wSµ µÇ)ßÉ*z}ŽýsÚ2YÒ*´@[Ù`*N†ö¹Ñ»ÃÉ©à}È œ¥ì²À ÈêNFx0åÿøòCe´¾VÒš‰ü°¦{³Ä4àŠºeÚïõ²f;†;8ÞÈ“á»Cm ÷=EŠÏO¡YN¥â¸Uè»;Iç&3n•껳ɌȦ9ÒiÒ[`öšÙ¨”ùô¢]9Ï,X!–šMg˜ñ˜Ó.··†Dé‡HIwûÓ(S€éö÷üLÖLÊïæD’c´wùã䢗µZùƒQvÖš ’®W6ª›–l*fm5o5jþ^´ZIøvLâßœ‚,µ¿yƒ@F9Ty ]?M©>˦ïãA¨"}Óñ:¼ Yêì…X´BÙÞ‚|KY_}þNY_ÑÜ.Vx2–ÈäR­¡!NÆÆ¤«ƒÁ+-2*š>ƒ,5|WÑ=à,äÙF­¢M›ò|Y}ø8³j¬ÓŽ×µ`“f3»±ºê¶'ÿùl焳fZÞ©&ËlÔÊ™áÂP‘Ýdo~œ) g³Â#pnßçªö¤â=Ñ=ÏpÙr)é>ðYxJšÆ,j ÀÀ½©‘mwÕïkŸòmŽÀ#FSîx¤VÖ¬²ëA× ƒ­^âÞ œ‚¬ÞO?n¯-ål¾„Š5hÓÓ\òî·t;o®äW\¡lVE‹ÀÍRÅx­ìa×,½DÕ*ê7æ@b.¥¸û[Ìo<ç²ïu0áKÙå)ió¨;ã7ø/” r{™òÅKhª[VS§ýmœ¾Íqp»Ÿ'ŸÌˆV,‘îN@Vonwyo¡Yz¸»ðÜžVUØWø ¦@Èí1TdÁ\¶ukÝsÂÊ‹2  Exò…Ø[ÅùR"uX„\ì|xKÙ]AŠ!¼uí”ÿ0;'Ñi×þ’3‰ø¶c ûTÊ~”C¤¤i|°3®ý`ðÈ£ »Å”ïÐ {!÷J;÷ÃÍxŸÌØ”(žƒ,½ÝáÓ/ewø9dõ{`i‡akã3­ˆëµUg©ï +²ÉÑiÌ®ë%cE| 4±=|Y}${jvá5EîŽA+ 9É«X_Ãê OA>[ÑþÊYÖ,á¾Ø\^,µ=N̼^Ã’ ¯B–Ú9»©úYF«ØfszÊRÒ5à(d9o¦¤¾¶7he”5 FNRæ-®¬;À9Èêëú{£ŸÂÞN;óÀW_ÅØ„~ Õ„Þ¤üƒð(d©Á“˜VÞøEð°²TŸ¥xyåß<ùXlJ9–ÖÉiàyÈR[ßÄurx²Ü0€ÿTx‹$e‘C¤NG¼‹œE^‚|)ùP“²g"%Mã-j Àø"^ÂT¤rʦc‡Ðù2å{&Bõ‰Ï#mµsu¥aù ±ÜQ—´³éRÛ`o¸`Ó^`²Ô°5|±¨^ÐêuËŒÚ3éZˆÎ]àCÈ;ïZ(»!à#È”­ú8ælêšíáµr¢3 üòʴκ¬jf-¯¬›M%­4jÞ´®¨ }…†GxòÙØlh_]+¯ˆÚQaÀ+ˆ¸)»sÀ«Õ#îÃd?8S,¡škÀÈñ…Úéy­ô¨¹VD§—„b5 öÜHÿ×Ò p²úyÿ}÷óƒà,äÙ©gTJ= ÀCþq2êy|ù]ò¡eÿ‘i̹MyÅ´J:7œ¥)ñzëø^·‰ýEþ~Šæxó9´—gY7j«¢%úÚ·¹¥8Åeë¦mËf°?“ÝhX%í†wP­æŽÅ+½œ-Òý ³³°¿ä²•~ž@Ýü(û["ÅTúž¥f ’7C±Rˆªéñïƒ$J]"IzÌö~Ât~˜òo IÑXØ yÿ©ßq6Y Þ74WX©â‘Lå4°Äé–ÅÖÍÈ¿JL|nRÍÛY;ÝÁPv—ƒ••öù¸ëÒ+†í°n¨æï­è^µ*"V¾€¬>ÃÞ]Óªzy\”Ì`0?òÛ‹'Kí­õŒç†j‹£@¤‡C$I:)ÑÞáj€p?äý꽬…wmˆS‹>œn.Ä·ibtxr—)¾ƒuž¬~™â>–~ö—œž‡,w 8âÎm)WKl®³ã ¦¶QËàMÈêÁT:DñÅ âq 8Yî$)ïñ_£î ÷øIÆë=¤K2×u™£À~Èý·PÊ®ˆPòdÿ©øCÊÿð$ä“ÉY¦kÔvÖ2µ6ŒÛ2ÝQø{ˆ¬QKÖ25X£¶Ã–©Áµ±ÌeXãòÎZærÆk™Ýi£lé⦹ s\†•µ1Ó\†9.ú}TÔÉ–)™5G3j´¥ŒÙŠeVÛwçr{bÅc€eØ1á Èr£+){.Á†K;kÏ¥6Œ×ž¦µòO×%+ÁˆK°¬£²–%fÐ%q öÐ’õqü§“› ÚÛ£mTÛªºVóoÖ‹Ú¬¦ëe÷#Ç ¶w‹š6Ñ?üò—ÊÅø ‡j‚­y[·Ë0tÂÝx~”x&x~´ +'Œïüè~Ϭ$4”BŒMCrQ—;À{ï%£•"ð>dõ £ä˜IK¸ [—QÎðd¹#‡±m™&*¯€‹“ÑÍ,ð5ä×ʺ‘Ø&IÞ¿„,çj¥¢Ý×£‡;Eèmwa«UmHØq£À£Ê®_qeì5Ór¼›%ȳo¹fB¦G&ާ€÷ KùÖõÈÄë1prþ…²»| YÝ¿ˆº)ÿ7À·ß*óè‘îV|%{ØY~Ù%–ˆþèqà È 4rú‡‡'!«7ò½Ù‚¨‰ÐŸ:<9¾jz=ñó°*ø1 `(¿ë–ÿTx)²ïâ)¦ 8°äíÄ É÷‡(òÚÎ EPºø^“ܧJÇHù»‡DŠÉCtc¨“øiÊï† <7òS˜ÅOSqžyÈŒj{ ˜­¯ë–Vñn¤é…ºe–ôrÃò®ƒÑ¶¦­ëlY×kôIÝ´ÅÎ!ò}ÀyÈóÊ…(8¦£a£f8Ì2M—êF:&Û¥îí¨k5½ÂÊš£ ;Å÷¨lÂäBlú>²TÖí’eÔiW^D +©õ ”}‡jžá¾*wüâÅ ÊoÙà?==I/‘ÕàÑvý#½VÇÉÕ &ÂÓ¥ö+ÄúD6±¹¼ Yj#¹˜Û¢ìίAVô„y÷Vlz¿hÓÝy¢öDì®§!«ïß~Ü|`Œm~ÚkËÛ¬Íw¯ø‡² lR´&Ìð1äÇêåhÎÔz— ­¹@Èe!N¾ù5ºÌ6K†7-MþW´up¯Ç[Ïóêª^n¾í[`oÜ_úW¡ºÚðƒò¾aÍͳö‚‹–ãgàþ³XË1^²LÛÎÛþ•In‡­Q¿½ª—FrËZ/^sgà…· ZàLȽS&Éÿ;záïÅ_ÍNŽ/<›=õl~üõ³Ù—ãcC1Ýÿk£Z !ŠV1}Côþß³/>¸ ô½ùÁ~o0:ïW)xO e„˜¹eJ°…Þ™\óÖ5wÈÜ,u lóˆÃíÀ7õßu·WçÜ.E'ÚºfT¨‹Þý< •F^ÉTácʰLxôj€p×%6Ú0Þu‰îtU+hGõÄæ(0ÁÝ:”]70¾Ý:—e¹-Éõî(¬´fäíŸ5ÜÖTöÜ€¨å½“ÀÛåïòúކ/ŸÍO>y29þÕÛñ±±˜b–Ÿ£^ƒ,<¨“‰YNÎkå²VѼîö«†¯Œ‰Æ+Äú:Çþº û°xŻĨäMd þŒ”øCœ<» È¿k6Û7õìÕìø`1&{ýl”ð2äËIØëá©5Ób£(j¥Ä5ÍqNËpÞºl(‘ò<®¤TâL‰öþ¿uî`ïÿ{moï¿/½Pîú‰ÊQà1ÈÇ:ßõSvÝÀã++äjÐõWͲ±b´h°Ò áI‰a?ð6äß¹Þ?fOúK4AÂïŠ'%®iŽs<ž´×›³­hÖªÎ^ oÆà9 @HΫþ ª#ÜA¯ú«6Œ×«N»ãˆšiU%6££ÀÏœRvÝÀøÎœ^jWù•D¨2Z; ¼Yþá¨ïýjP§w_Cþz—ûUâú ÇùÎ[ÈÑàNÔŸò\~ ùÇÉùÓßOù>”pýéï·aÜsTôÚøAqbs˜àe× ŒoŽêTàK½ºu¡Äé$ð&dùCì߻РNo_@>„—° %®sç9Î1 òyó¥öe…æºÝÆÏ)ß[þPj¥‰¾ÿÅPD©‹C$U§.Jãï¡LƳ7õfóFÖšޢܺFç-j5/‘ßü÷k'œ‚¬þþÕ1Ífþºe½ì–ˆ ²ú ˜ü¦ù}Éi”ï´+vê‹ñ±Ñ˜\1Õåq`r1 W|¬y=¥·40*ê‰ðG|H†øVVt!µ©à.CV“'¥YuáÓÑ¥5÷Ã_¬9NݘZœ|YX̻͛îÁ)˜Öê@`FWŠ¿üÅRýýê/\!°˜}t£¬m<¾‚ü*Û8¸Depy¦Z1,ùì°XöÆ'{›îûrzñqDá¸Â-ÈÎKü¥á[¦‹·c¶ ÅÂ,<×%¯ÚÎu¿gÁÌV­çæi,´’* Ñ×{ÿ¾oBMT ¾£=ܱ…™É™™ñÁ»1uqT™]À+…—Ådº¸# +ÚÊŠ7ܸ+Ú½Ù«é«2¤·0º™¥1qs»(½-6m@<ßyÈòÇE¾£–‹Øl$&Ãýð„‰®à´Åf#¢ÆK„Óñ´ ñÆÊ<µqþSáÎå¡»ã>žÁðÏ›Øjm§×|‚íåÞG®<[XÐmÍÒj¯×ܹ¤aáWÌÿÜ C~œ|'ù‘u€òÕzx{ALîe$âuxr|Gs#'Q)».àYÈg•µ3’ͱšÙ¼™Þí=èÑù[n8¬x-Çn_óXqðs;‡žØµ+b|¸yA™ù Ì’Ð\ˆQst«nú—/y[•ëZ]·nØÌÑ–q'¾¾nhÍÅ·²AûÄKÂgIþ¬’{‡[±@“tcuÍ;[†wX‰ª·LùS*þãNêEr ‰«¨E‹ñÇ N8 Yn0ÖÐN7]ÖUjrÔÔ dA¢ÍíORþ‚áÈ:ßÜþBxòEeKÜ@./CVïl…;¹?EÓܧw܋کۓå6õist¹ÈÀœ›¦Ö¾ò>¦î¯ÕŠ0ü3'Œoîs®½ &·T3𦭏N“žÐpLÖ¨-kr9eÿ´}/¤P¢%ús”‚0¾§?N»}A[>ÐyCArB„ñÁ=XÑVmö€ Šz•¿@³&¼Yj籘W¡ìίC¾®¬ªÃÍ~[Ø»‘À"dõiVaïòaÆã]^ÐÊŠþÑ\ÕkfíÆÂÛz\m³ŒkØþŠ ,=Ëèé½e=xÅG|…埠„ñ…î ­y5ÄmÃιcúº^+SÌàæÖÌ^©èr2‰5×iÒQ-÷ó¡‚gà„OBý% ñ—ÊúÌ·y5ƒù§)ÿôS€ Ÿ„úg¨Âøv™bÁ˜O°6þ‡½{cs²Ý+¦E7›ŠúXbsø9d©ÐÅ|,e×<Yî†M: ¡“ "Ť“}ÔÆerxòdr˜¬~’¶Ïõ­h%eÄß)'2YàÈr['cUÏà$d©ñ˜¸zîCVŸö9àÍDËhe ø r|w¡öx·­XZU—ÑÍ+à×¥vXŠëfø äo”u#~c!åÿà!ÿP™G/Ö/— Ü!Èé?ñ5ìa/äø:½ý†; ?mL\NÏB–š¤3Ê®xò9eõäZOÛkf£RÞgý¡+bQƒ"¦Ÿg ϨY[<à½qQËúç°&ÂøÇ¬û7دĬÄå"0 9ÝyË¢ìί@V_béÊɨä*ðd¹“‘*)ʨ$L)ܪ.®’ëÀ"dõ!ûþœÄÇDa8 y46­"­8–;¾•ÑÌp²Ô%bâš¹œ¬îÔŽxA5©kˆÉSà"äEeFSÞEŽ5“›[ .ñ²sþ-nÏî…çtkŸgYÞo[»\E ò/|ûð0¾YÛ|“£ÿZ‡wå›gq9º‚¬N×z­ë• ÿj2AÊš„yÈùØÇ^·îE›1ŽB–j®bÍ‚²+ï@–?¥|z´·©•»À'Õï":e¬ÖL+X¨sÇ?%ÍÖ…§dÿ%l…ðäSÒv“ŠÔVÄÔÖ¿B–„»`jë_qÿԖˆ^„,µ@(Ö˜(»>à%È—v £üð2d¹eÉÐÇüªšcÂÃ/"“æ!K¹\q¤ÈeøÇ/eô2<›^ºëþ…¨2йœ„œÀÔewøòceÅkÍ<Úã{)‰Íp²zP6á_—L]Ží¯¤‡DgÞ²tsÏ]+X„ÿÔ· ' OìhlCLžg KÅÞbFÙ=>…üTY—ÂËa”ý3‘iô–p óŸÁ&•^ Íu»SŒÿ¹ýçÀxV’…BÙwqˆ”4ÿ5`<µqâ+Ì‘Ûà.—dö¯Á†ðd¹3á¡ý”ݨV5kCÔ‹›Ï—!KE5b^„²; LCN+«Iê©@¢px²ÔaøD›·±QF+àä¡d´’CVÖÊIVÕ5³ìvÒ­µÑvM”F€Ï «ûû1£FóåþÕýØ£t,­ä6ð²a×+Ú†ÛÔ3¶®ûW,~I;PÅ÷4þß4<ƒ<c÷PÖͨØ!9W‘Û¿M)8DúFü‡Ü‰R‡ò]µ¼ÞO¥Ùêþ]Êÿ*@¤Nua‘<þ'¨äãéÃÒ4òϤŸZÚŠ^)§sÍ#Á,]¯TÓ‘Ç'"‰þOAŽ0 YÝ‹Ïoй¦Ö¨„ÚSkPÁïsÌ[ówõ\ʤ©!¹ŠOo蚕Ίküâ„ ?P.Ä“À`ë›ÛG÷ ú„O «O–‹ïÿyØãÅnãý/A쿌Õx¿ ôîj›–ªsþß ö ¶Ë[‡ª)üoQ"¯ µ¦ð¿CÞJ›Bh¶‡–ô=ÆAþ;d÷¿Õ …£Eʾ‹Cµhq¿*ÿ*åGÃ")ÖÊo’;®U*ïÜ/e¶žýް‘íNvÿ×° Â>È}2£Œ-'»ûp²{²R¡ÃÝeÿ«{I‡Z[åõy—¡Íâ:4á1Úïe8&S†È‰€Ko›Dúg0h÷4äN‘ ͵{©üEÃtÂæâ«%¥æ×YeÝ|n6,Ú¡IGÍ©g¬iز9oÖô ošiƨѹ¶]¥·ýKzµ¾–˜ÖÄQ;«¶®¡Á]¦Že³RNLÇ2Cnì342ÆòlèÎÐ:ÀM¬f_¿~ɇF‹ùÛ£ƒ£»ÌdòÁe\eÓðnà*ŠƒÅÑ×MÆ™ÁÁìàààÈÝühõˆ+¹:k]û–V%9½c=Ô¶»zö.•¬ÿx3ç?=Ž—B_xñÍàn‹on¿ÁËÝ×x'»ÝþÒ2œ šŒ[ÓÝ>”ÖæuZœÿ>êÙQÏÚó9]2kfUw,zJaЮÒÒïxŒ³gx—i#Ñ§Ï qŠn_œ/ŽwI„sÆ‹pŠÃ£wG††Š9HÃ_ßcîlyÌí1+6‰;ßvY‡ùŠï05ÖhNÐ^êÖKìþ9‚º¥{3™Ôiâ‰ðªYv{Q[¯øOqß•î&åf¹ „Ç´éP·mv«Qb¯›Ï¢ï*µýŽ÷­]Å¡]¦ŽD;×Þ ]Ž7â{ó#w¿ï½v¶÷ºÂf«ìÅëÃ-[lþYŽy7m}ƒë.wY‡Và;´fwfoÿ5‡ö÷ýÕnÒÝi®¿âG€»JI¿ã½ÓbñvFø™Ÿÿ¨z¨ƒ9v{8gäû¾igû¦;ìÅCsÞ›ì÷{âöQkF¥bÔm¶0åvR¥µªQvØB«¿r`C»­¿ú‹ ¿¢}ýµ†;R\Û¨Óýñ¶á]—·iS[Õè6=ÿ @+‚ëÞ­ÜØmœ=3?0»Awë¹éƒî~_s˜„ýü¸nMsÿ9÷oý}‡ø}‡¸Û;Ä®Û#»L /÷i.ô6-÷ïÜÝ%“¡XîÉ ÞÙm˽¹¨åÞ&áŒÛQ ÝŸ¾‰bþýjï´Aή‰°Òþuàl2Çæ\˜šÉ±©µ›zýÜüïº`êYûö6—tk—3ÍÞ¨Ö“®0§ÝS+†û}=o{»NYÝ2ëºå¸aÑ÷Ó»I«ßGA»? Ú[¼»Ëô‘hÔíÆ@ù¡ï§v¸Ã:ÅZol=º;—\ßL¶žf“­é‰a»nm¹ážÁ…ñþmêÖò‹Ô­Q¯5eÒ9™UË?0LóßwX»JÃ߯»~»°ßñuWlj½“ÏïŒî’q|¯?Ž¿3|{p°xûûÞu×õ®£»­w}ú²QÕ-z/ïÛ:Tö}‡ú]éP/qê$=¤—¿ îÚn4êFïß‘ntÔíFG‹ùühq·L‡£½{wøÎÐí¡ï»ÑíFϹÝh¹¬U4öôuŽ}Õ`¯½®tl·u¥ó“¬dVëšå/2ÛN£¼A¸Ñ6Éêï nM³R—ªÑ‘ofÞÄ*}íûu7©öÖ«nTvG§•ŠîµÖÔ*¸!~?FÝ•ëèïtçzÈíY‡‹ùï»°îÂŽ³…me…=öÖïî¶žk|Ò,l`Õ,Ævx×»5Øsñ†¶B½æŽ¸,î²æ•¨·ëϹuáöe¦û7dî’ðõÄkº¿tU·rì¥U|cZïw ³Ù×ÝÀ:?|÷N~èÎØè`¾¸ËzŒÁ^“©ÅÉ—+_·ÌŸê%ÇÛv‚«'VI‹"ýý6“Ä ?7ûúMÄ_èZ,§¾½+àþB$ïãïLhÛÏ!RLÕwxÉýŽnéµRè=bÿ•ßFRÿà.º‰–(uqˆ$é”ïû?¦üKäT{ëyO„ê)uÛ»c/+Èï¿Iùïâ^†ç¥á£öÞÿðèoÛãЉ€µç£À“OÊrÞò—»iÈék#â²îÿ €ð äx¨ò¿ Œç¡Â0c=R_Ój¶!m®Ï!?OÆ\O´xK°Þ‡|?6ƒÍ_@–zÙ^Ü`¯ç Ï%ßRöó"ÅTúƒK¶®ÓMñnZé›RèÕ+€²ïâP­³ëR¥órÓ!‘kåñ7ëîÀrÊ2 ÛÖjþb#-?¦¼‹bÚz.þ¯¤ý7§ÒsÕpÒì…·éöV¯G^„UŽÿ%| ùqlvÕ½¤5œ5ÓŠ¨@Êì¿ßY³úïaJª™Õ–w4Ö$\è¿Où±a/äÞ›ú{}ãƒi…MÂý{è°²Ô8EM'ÿß I®‡D[ò þû?£Ø)s óéwÇèwûü?Úÿ[ð#{¹Ðâšt"^¿n/ÍâÔøÀ[[·ì÷äR&ëõ'š£ Ì™%­2ðF¯Öjý›/'…§‹Þõ¾#¥Rih¤8Z½=P¯TªZm÷`‚ºþÍoaÌ{þm³®]Þ¸¬Í`rרS½¦û3nËÌ2?n¬êµ¡qV6YÍt¼Ù&úÀ RÊQžgêÕüüôË0óâ¼DUŠJýÿ»ý[B…·ofòؼ| =tâ?ìÞÒö¦kn”aÔV[*8HÌ¼Š™üOøòÿÚfh]A^½žýºävçýè´þPO{f¯bÓåz©ÚTäáöl¦bÈf³UnicÝn[1*ú6_‰Ù‘Iä9D Läs„7¯±…Š®ÙºoÀe³ä½Úæï"r;ðŷɼój[ܪ»@—ð&ä›Ê”…k޲¿Å!’°þtÙb£ˆ™Ç½)pKعG†Qĸ¡Ö|”vK¶{€‡!N^”ý‘vPä^C–ª˜Ð\,iC ›ÈÛ%ìC-ì‘® %…PöG9DŠI!Gð ^AB1û¡ ÂÏ –€b¸×«ÃžLJ1”ýI‘bRL¿÷¢^AA= ³Ï& ž ?$<ù\òê¡ô9‡H1©çÖ—xz—M™úÊŠQ2ÜŽÙfót[¡¿xÁÛ¯D¡ ñnèŠpòPŒzs §ÖuCW„Ç“×e?Â!’¤ÞN}*È'i†'Åj9@ :#Læôrhs;S$s˜$å„q¯Ç¶dÞN?q:OS{bÑVcvcÙÖqB\äöb²$¡£ŒÕ´‚æ8çÌ6Ý,+rºÊ˜ë õ’ã?VÕz¨f"éJ tVœj/è^…|U™êe†{e=¦´/ǨKK«•ͪ Ï>p#¼ ù²2Ïc¬ùü×Ë·ssⴎʱͲªób¬PˆÜ Iæ8OÅ鼺Ä_;ëGæ„Ü0¸S=]$Ml›ÒìêºZióÉñíßÌŽê‡)²>ìƒÜ'C.”Ô¶ÁmõOB– ¸Ã§J–ü÷›#2Æ ƒ O>¥l/½s™vJå¨1‰1‘9 ¼ YÝ3ŠñITH€1âm2˜S0[£¥ú¹PJŸ4tÞ†Ù1àç¥'¢¦Ì™oê<äóê>X<’%€!_T&²Ÿ±â½äiT!7¹ È%çÆ°ÆªáŽ 'XUû˜αUÝyU§˜-“ö?Jgé+‰xã h†¬IHR¾Èأ쬹Œ9ªÞ¯d‚¢³ v6úfj²Ñ7±³ÑÇçÈœP)úˆß7lm5l| ‡‚f/ï¨ùO…Ç÷çQì»d‹ïõ—Uéß9¡Ú|wd †ñµ 9j4ÝÀ£ãëÀnkÌÞ¨.›£Äʺ]² ¯Á{³Wt¬?DrL¶¬3ºC–î“)ç$Šp øò“ج}ÿ’áèÕˆlánRÓ§“7vÊ~†C¤¤i\B Ø™m_Y|²“Áª •ÛÎ̽×"Z«Ä¸8y<6Os„_õ97P‘„ý¥")1Ÿs¶u#µi¥NÑÜÅORþ'€'SÍ寘4sÀ_š—ÑÉyàeÈR¾@\'§€iÈ1Œ„DûÊþ ‡Hî®sßfaLÙ_ã)iÔ@€Zxô¼ª µlÊ÷R„‡!KmŠ íº}Ï$HõO@–Û6VOƒm4¢ž„è| ƈRMZÌ“Pv'W K5aEïNù_†œ+WÖ ¶4Éh%†,µT\+×#å6òŸ ûwÊþ6‡HöïY_ƒŽBMÞ±Röw8DJšw(©“þÝÛ`'H)uÕý{ûDÁq æ=Zºc³D«x²Ühy»»*ŽÖ[«—Uµ1à4d©õ¹ˆ¶ÍeG&êߺ ³í ¶PŽö–¿| 8Yj¥PÌáRv—€O!?MÞáRöÏ8Dê´Ã½å›µ‡³g“÷t”ýs‘’¦Áí#ŠÙánw—Øþ¥²é„#ʧ|ÇJ¨îdÛ½WÿJÃrý¬Å4kÕ;U+|#?ñê^‚|©ó6›‡fd–¼±Pö—9Ü¡ÉÀj À­(;uE…Ø-a_*î…Ï´ó™Ñp°TÑl›Iìr‹ 1 ?¤io¬ðàƒÈÜBì|_HÙ]!“ï )û!‘:íWÐzwðøe?¡üñ?%ƒ¨;´ÈàïäF¶Ù T_dزUÑç$jµD¦xr|‡3"­¶Ýž‚|*ys¡ìOsˆ”4!Ô@€2{© §Z'‹ãæF¼õ/í£QmTYE¯­:kÔ%Òo+ô:^°Dæ"afé7Q 'æ½ÀIÈ“·p·]¸–”iQöS"ÅTúž¥f’w°qfDÙ¬•ª`m"@$ÉÖUT¥C“’9Œç`úg“Ê1%7u©¸pÖÔO—2~T™ciïMo&5d»sÀAȃ2)»À"dõ óXŽ}X3JklM³ÉщÚ±NB–òm›/¯_1+óƒQ[ezE÷Z÷¸(³;0 ;©½ìå.²°3=ë‘w™ˆ CšAíö§vI¤Âî;½K½çºëL‹ejþ ˆYÏCðןdÜO½š¼¹U:H"ZÏÄþ$pòœ²ºûVŒz9Ø:“íùÇ¡ð`_Ìž”ä(^¬çã²=ùXò¦OÙç)i÷Pvh¦ÇÒmo—’hó»&w?ÇLO;­tTókÒµiâÙ†ço„M߇æƒpn†÷”ým¥xÕhL ìŒM]1G/ÖµJCµë°åøãÝ)É`.”Úyή]kö‰2Ÿ¨¨EÃSÀ`:@*²³èÐ!7þNÚ”(ûa‘’¦ñ5`g,zßzÉ\döÆK¨~Òp_£Q2d—Ý W+Ñ\„cƒ9ˆÍA’Æ*†íÈDGÄý(ð1äÇÊJ>¹):±ߌ µI(›»$¦Aß±àº&Ù]fDë<ðd©kfÅF{”Ý)`²ú5 {³Â!,È tÞ9>â¬bò`ò^‰²/rˆ”4Ǩ;ã—W AX(H&õºÇ!K…ú¡Ä®–õUK×½7W\¡lV)ÆÓÀ`Š@j¯š˜]OA{„ÜÔ@ÒEÙqˆ”4'¨;´ì ³{VL¨¾ìÐÕFiXã§;JfÍÑŒMwya-nˆµYÃÖËÁ­¢uKÄ{ ?RVñaÜçA×G š‚gRŠ~е¸i.Û¼›²?Ê!RÒ4ž¢ìP˜]Ò*¢ î¡z˜½ezÆ‹¦]V¢Vû º"<™Úò.^§¬ötC¸ƒËÓ”ýiwhyz5`‡¬V³VEg9žÃRŸwÄjÏ‘Õ68›ƒB 3~Ó%¼ùzçÍø9”EÈ‹LÚ~(û ‡HIÓx0žåhæŸÔÙf„ 2“nlÑrÉFs0%ÂQÈ£1ZrÄ€œ²» ¼YýlËÞ¬ðº&¸ ‡,Þ:2f~¢W„ïäšOù0þ­:÷½CìÍð³5Eö sg¢î’JÐ œ…<Ûyw9æFȹΤýeÿ‚C¤˜Mìˆíx*zô$Úí¾„uö§T׬ۙ¶ ©Q[64…mò®î>yÎ…mŒ¸Ÿ>‡,¥l1{ »z™ÚÔ!%mc”ý‡H1ÛØaؘĴÿ+˜¡ú”Vûü¬7“ïÚQà¼òí~¬¤ûÏÁHÐ>¼ù¾t½Ê´ÙÈž›(M_B~Ùùž›²›r²ªÁ‹6wÊzC¤N7÷W¾=üòÉ7wÊ~‘C¤˜›û1˜§í” ºeÏ2KÒI7ðd©Qwh›¿ÐêVlÇ ~5«Ì<–¶Ä¥ Dñ,ð6d¹±·s¢tø²ÔÑP±vNÙŸA–: ªÖÎ)ûY‘:ÝÎ|-z¸ƒ¡#eÿ‚Ã΄Ž=¥5ÃþYAâÉkrÝÀcI·ð®6^#Þ+ÜØ=ÎêMï;ºEí}Ù¨Îó¾Y3«æª^Ó͆-ZÃ_ oÂÈ3ÊŠîåã[áEâEa/äÞÎÛü\¶}û’·ùE|/Àc²6¥Fã5j Àxf—.Ù:™±£³Ws¯ùáŽÜäÒ#¼ùRlÝ–òn¢uxrœ÷·Dt]”ŽB–šÓR\"w€cÇbw߇dã³·)ßcö¥T÷ʶ{ïÁ¨EÙöh†eZ¥"Z¹Äº8 yRYË™M3DM×JkÁü„E;'lÛm°A¶_¢ur7¦uÚ§¿å²ÍBÎ&ïL)û›"ÅTúKÞNÕ|o£È_¥âtâÂÅÿ ­7@$y? Fçë”Wˆ¤X+/¦ýÞ,hÒXGqÿŸ…ll´õ)ÍÍ›&#Š*Ð7P-¡Ò$\h®G–¸WY"ª“rüÁÎÙ`XªÙ *¦ü%Ü‘b M¶{·02YJù}ÜRJquY,Y‚MÆ÷4ïýæ[@vx+B;+°Ùæ•¿Œö>UáÍOÄüð)dõÛ©²CÐ,»F9G»ëîƺ^ÙÈ1Cx2çG¨dBµN/ÌôN6_×U¹LùG~óð ä'·EÊî&pò¼ÇDÙÏpˆ¤Hãh¦¬¯hŠ“eâ3ý?†¡…,·£,ÌhúZF#uÏ3±:LCNwÞ\(»^àÈW”õÔ%ÜÁSþWj·³*™í;ØE€ñôô™)Þk“3Ôl»Qu#&ÿÍ7?zwƒ?CB¥!Gg&ˆÖðä7iÊ. |ù¡²»ýTA/Ð5¡þüލiGÀÈ Ê´ë¦Yq‡&›v“}5_duÝb­^LxþIƒYBÜe=-q»|9¾ÁA¤QvEàdõôÑïœn§¢yàKÈRËÄ›¯”p;X²êÌH0̲°ñ,Ã`Õ®”èDK¬>fSÍ»Ñ;m6”ÝIàMÈR3%›Ï­g lû^FÔ¬ˆß-àduóîÁ¤xgW‚ö@Žo¸©¼Í’h2ȬóÖDÙ^†|YYKýÞ¤NëiÚå Që!>ià0dùSÒ{ñé_/½Ö?Ö­ºãGw`OXåœíh«úÄrè”ô c%sYÿhØŽIËu­ô¾PjXî´ÓÙ,kû»Ÿg5ýCA¯­g²÷üÏÆÇš­[λ’áè¯j•Ì{}ÞH_)¦sô9e–¾2”α’VZÓËïÜ<Ñöw³¿ <Ôë¯&çÇï ÞsôÄ:C=ò9°Co_O/ÎON-¾ ©Ó2¬¾œRx$“¾q¤ý‡—üRO¹…1‡#¯?hÕ –)ŽÝÌ BÊH§c1Ð,3ìVsýBc´Fliãç®×«èšíˆÚ-O÷9dõmÓöÏ®C¶™û7H5lÝÎd’5ûp¹PnS'Z&BßËÌ/[Ú€”Ýÿ«Ñ‚ ãWV¸¹+ê‰>èÆê•C[wõ³ª…-Ó ÊAø²z¬ó‹?ÜŠ­ŽékŸ8]kè·õÊ«[fÝ´h¦XóÞì–(Å*˜>‚üH¹¯¶Ûé†o¼=Þͽ™®k«­Íº(ÿ¦ࢅZCA_A~¥\¨ùí •óº©½a^«ÚzÊC´HŠAÈm5W²ùNÀ ÐÖ5£âÍëâÚLKwVÍÕnÌHd¹½½ü§{³Â³[D`øòCe"³[ïa Æ3»õlÒߤEK‚a;¸øÍ[›šcvsS-M% 䎪:œcanháÝgÛöä ›¹ã«ªfmx~ˆ¶ö,Z¤*ŠAŸÃ9‡W©aü×ÎHy¢rÈ ³Î{Êîð2dõˆV«4ð*ä«É{Ö ¼W‰m¸žò×~ \®£ô„ñ­÷¢ÙÚlÍž™ vˆËàYÈgãk·ž_”Q^…,e¸âê9¼Y}Iü%BÊÿ:ðd¹CÞ¡Ï  O’QJ8y$¥d€·!«_¹ßë‘%ô2 ‡,R¸]/G½¦RPÐÎ$p²Td ®{À—ÕÇÛ=Ì×̲ø>0âñ ø5ä¯c«†ƒKeÝq#¸°«ñè«4õ³”B/Gßè£oû„ÔŽpL”º8D’´ÛsŸJ'ÒV­”ßýˆÔ©¸$’‡J0žáŽ·ç9“^ð63¥s ³Â´tP¯TÓ‘Ëw‘4P#d™2Íw?ÿ@óÛ=e*æjfÕ®gÙ¯‰õ’æÊ· ’í’Ø¨¹BÎߨ=ÁüRæXûVñR6P2ÂwßÅPJ«¥Äx)×Q²õXK)núw€ñ˜þÜ•+ÌÒë£Dç[žZº;¨g™¡ÁâݬÛ läöPŽ9Þø·X, ÐgCø¬8Æ}V.ÒGƒ»rE±Hß ?΄›P`6k6ñƒ[v+ø¡á•pÓ.ßÊDø äo”Ë7Àøÿ¾ÍÞÅ þç`J8y †!ÿŸ0©_€a/ä^eRó›¬Á4Èô‡³,SÓõ²_·Zù§ Û¡Û§h“k5¸¤Ð¨m°²±²â/†”ºx™~å Œojèµ[&·$7lŸ¾­;4È$ÎU“˜ú/”±šé0*˜±b¸%]ÞðæÀLËý”AžZÚŠ^ñ«@Ü„~‰ÒrgòKvËë¦jYv…yZZ1¬ªkñÅɱá»›cCÂŒ–„ÜË¶ŠŒ'ŸZW2*êÔî?,eŠãCƒ96Z¿ëÂHq|Ô…¢‹E†Šã#ƒ®“ý‘p9~Ü '!O*—#ÕãªWßna܆ã–âvÎ?l5Á†Å å@‘Pm»#ÿi‘£ëVõÝÑ£þ,mÔÖÓ?"î¥ÌÐh±àþ~tävaHœ÷ßWÂ"ä¢2ï››yQ?›vcÃÑ*MÞÃC…Qq¿I›շ(‰G1¿AÞÆÅÌ»Ý^¡îºï ptívøÞ 3·ÿF6ƒC®šãˆÿ>ÊAŸ?„1(›8¯.„Ç!WæuÞ›ôX]åoɧø‡ ExòyeŠC)âÄ­8É?1‹/î@Ûù‡È;@µYùîOž£ørzñq”ògâ”?,Æšã#²Ö&¥¢?ä(ŽŽC×o‹2þcT!÷`»"ã…MaɦكÉéÅ4Å)Å¢¥l «¼è…âˬ6ÿ‘û/DKõ'( áäåR}±ú÷¦´¼C oÔÊúG÷7¥LšJL nèšµÍ8$ªXŠ¢~ù ue]a¥ŠiëM#Ã5Šüv¸ËÜ)ŒdÙ[á¾éWŒ÷´]ˆ‚}Çdݶ#ƒþ¨RýJòg±*ëË+¬né%Ã-¸rcxLÈëÛT´Óh»^7máûEE7–ukàºáJ¶7òô›ÚXdðU¶?Gy¿„ü¥rÙJ«V¬†(ÐãGô/P8Bn³xACs=¸T6kŽ[ŸK¹ýãTœá“xWDùwqˆ”8‚:Pº>B³=´¤Ôªõжz`!»¿LFQ+‰ÚP^œT¥óOSþJH€Hеò›ä6‰k•Ê;÷K™­À#ld»íÝÿ vAعO´6è[¶w÷a{÷d¥B;¼ËþW÷†vŸù}ÛÂä—ÑÁ ¯Ñý3|/(Ç1™rD.£NL7·ϺÞÛÒiC¨Û9ilÑßðÉ‚a‹ÍÛ\Ø<ùñÂN%4×î¥ò Ó [w¯•hgUydºdÖL7ò dWi&rïWgô"¾…¤³Šé¾»ËÔ±lVʉ©ãpŽ ‹ùüðÐðîrûæf_¿‰ø ]‹eN£©oÿ ‘¼CVŸý‘ò7ý"%Mã?ñÛDÕ¢µàðÚì·Ä%m±Åïõ­GÏšÇ˺ýãeEü({¬ìŸ£„„g Ÿ‰%îèAܱ|koØ‹ží!GQ<ä êg¹"œ•)BtÈñÚq‡þ¶ã ”7ŸrˆÞÔ[QÄ:¶øjÿTüÎð8ôš&yWuKÔŸwVŸæÏùß »2¾g[)iú/üfÕÄÝêQŸ.NOï*zÔ¿B ÿ*µ3µ[s¾z†Ý9ÂÍð¯`*A âu¨'¸ÀŸMִʆmˆúÉØŠùÉø*†ÿ´/Çî:kL/4żƒÚâ?í]pû9·ÓÓÙ3­"QÀq¶Ï~õÑ®®Ç ØØ%Üÿl= F†~ˆ×Lý}ëî ­ýÑêÌš^©³²n¿÷—¢þ?ð/m¢Ìo=¾(Úrc+Eh®ÛLzÅW}J-®SZô¿u”{n6¬šð³áUMd§×ňÏzuV3{†w™6"&½:£ÞÌp6dž‡òùáÁ»»Ëg$ÐÛó8ÓJIûžÿÔ·Ë&îÒÞþÈ‹¹éÙñLÏÎûüÿ Å$¼ùBûüCm:º€m l*Ç‚ “ØÛ P!.r…¹(S˜Hu†®pin zâm8wØíAÑÖKÑ>¾êQjeÕÒ©§ºUÕjÌäº#ÜE}ÝÐ?ì*EvõÑxWßYu‹»L}}gÔq8ÇFGò#Å;»ÌÁ ®9NÝ(›FÁ´VŠƒ…¢ûßÀO őѻùÁ‘;· ä™ ƒƒ·‹Ã…Qì#öbuV‹û–V%9¯·»¼~1_€‹­S/¹ßñ—vÂvpýSß\SÿyJ!2£oÄþ›(uqˆ$Ù&»Téü)/Èj"’¢¹Ÿÿf]·Ù”e¶­Ññºn¯Zco´z]øš¥Ú'T:Hÿh g-x«kKÕPfÿFÅˆÔ æßÀHT3˜v'ÞÓzCK׿Mù?ƒüYlz9¸äj>˜VX?ûo¡ ÂO$¯Êþ$‡Hräü÷ïP씌M†96úÝ1úÝ>ÿöÿüHµZ\“NÄë×í¥y55>ðÖ,Úïɯ LÖë4¾˜3KZeà-,:Õú7_N O½óH©T)ŽGGo¸£ß7ê ­ç… ¢CÙôR6ÿ¶YÑÁ@ôj›µä®±§ÞõµŽÆÖ2?n¬êµ¡qV6½¸´ˆì"Ï!R`'ÿ/9W8p-Ѕ̺oÅe³Ô Sòþ‘ÚI3@Uý÷7Åí» œ  (ó®>Ê~C$ ¡/6­Rpä³7åß‚GØ—Úòè§ÓŠ¿Ö´jØ„Ï^(boóx˜´R(ûã"í´RÈåƒ,U;¡¹XÒ*†6–ÙMìK…žõMJ+”}?‡H1iåhËGÏLGif?´Axò‰4³Ú ¹e5)ÍPö§8DŠI3½œf¢/÷ŒRͨãªè l ª&è >öH׉’j(橪Y­Šª¦êèNX5ÝPG÷Ϊ¦ê0^Õ\ûÊÕLÞv6*:›Z3òþ“ì q¥Ë.gF¾É%˜#ä"=E.ç˜ÿþ‚w}Û3Ø?£û fÒYq‚½ Exò9e‚}Œ­—Ìu—àË·ssâ¬úÀ¤/z0Z’Õcå•!­üS—WƯÀ ª6vý:»lØ…Z£RÉï,ý¦jØt3P¦àþ›¬DÍo ÈÊe8ȘK¨(N‡õñ}q,t†Äép]JŒt0êì„ÉÀõzÈýª®K¼Óå"øÙ­Ä;]n º;]ê×ãït·{b;Fèi½ÎïDJ²óíu¹ÁOØÁ#I‹9$6³©æ)ž|y,˜‹@v£ŸÕžéo3’߆щTsorÌYmŒ|—,Ø{›Ê’èIÞ»Á.j• ÝõÄG)rÏtònì:›Útc—òxºak«aãéC¨ª³ÊþI -Êl΢uˆ$ÙÎΨҡö‡H17û=‘»Ð"hÑCÓÝ"I6÷ƒmtîh5îÝPÿú2soŽ:k›_ydöšÙ¨”%ž‡&ò=ÀG)[ÜYòž.íLÃn¸rƒ˜—*šm3Azܶžf£ö…>{ä=õ êð>™‡WS[ž=R^ƒ‹xÃå†üXYÉ=./ÝðZ£ ŸËÐðåԦ庘:ón¬,ˆöæÄæ8ð4äø&"{sÊî0ð dõi„}Ì”R ¦½šƒ‘ó±©eozFJ%W€× KÄUrx²\üÏzÂ{vœvk{„hK&F7€ãÇ•™e¸MžÓqyÎx= e×õ’c¬ë• Ñø0훇!¯àtªke\¶YÈÙäû4Êþ&‡HIÓ¸‚°C]+MH 2£‰…n z×ÚáwöÑ©¨ã¹Š?Jx ò©Î;Êî(ð4dõ­}t£¬¯hŠsiLBMg€×!Ç8RÕˈš—ÜVAyàP*±ÙÊî0¾Ù¶jx/Ùi¢›xŒ' «¯Õ?\×,C«•ô|ÞmÕ™¯(ê4¶Ò¨•¼óþ\mɬÖnÁìFiížh!®ùfááCÈ• qÜXñž©Ð;€wh(j÷×A…Û„“ÝK¹%®ùy³ g|ì´ÕSvý©ÖœhJ60ä?½œÍµ†9†ÍJše‘®Ì†Ã´ƒEÔŽ¸PÍk bi ˆãv £6—¹i 5dï–Ë\nØŽh)nÀÔA~¤\Šý^4'H…‹ÙÔ6‰ÅoW¹l@>|àDÙws(½ö¥Fƒ‹`;¿ð7˜ r»‰j!<YjÕÒãt¤Óçs•.²Î1³VÙp[WE_×jŽ7Œ’ ÚÌB–„#ǦF‰.ŽAë¼GçÆ#Þ8¨hÛ]‘Ûé¶ÓË=à}È÷Õ]67‘öaM÷¦¨È‹·ž<öl¨TqÒ-×qÛŽV+kV™é–eZ¶h)¸‡uctÙ‚é[/™µ²Á¯Zºc™+lÅÊÞëz–VÕÝ2´Ç[S…¢¥àNZÇÙñdl]m®Ü9 ÅÝÇ¡„OtG3„¯»'2½Àã;h×½d;–IÏC3ð$dõ“v7sL«Ø¦×‚UKÿYðtaÅÒWÝ&!‡ÏSÀ‡Õãù+߇‰šY¦EÈM“Äáo3%Ù•›À<ä|çûÊîjªu²²¢Ê3ž¢D€w ßQ¦sžóÿmË*YÑÐxæBr/O§Bã›\¶ÜÂoÒ1)e‘C¤¤i ¢ìÐÔ&[dF+ºÝ@õ©Í½mŒF´à9Ôœ;R¦OWÜYg4òÛ®i›ëºõÁrmÈ‹V K|JÌA~¤ÓlÄàE×f«ô§šìj¦p)†`C©8cšTéÂ.cù§‡µb.£ÈeË>Nº­Rö9Œç¼¨0Ô@€sC‚ÌnC?„ê.£«Ñm1—á9D+—¨M57¤y²úÆ´‡ÛúŒ`4³ÕY0©f: « |Y*zk¦·¹l¥âòTÂícª p2 Ó¸ƒ°3Ít¿gF‚Ôî¢mªopÛßFé~† šv£âsoî+;î¶ÈŠ^rüþ10~a¬¿}\´’©½ÀYȳ± øGWD@c¨RB¥)E±ÐŒŒð(ä£Êv/~™ôô@ع/FxLjdtr ø9ä–ÆðEÂóÕ—zs´„ùï ÕO~RÐÏàMÈR›:Äz‡»œyr³I»eÊ>Ç!RL¥ïYjîê É;8ä?žR픪€²ïâI²P¥Cæ9Œ'¬þl²ÆÌåŸR‡#{ªé>TDÈSÉ‘u§×¨Óöd÷aH„ 2ë¼'£ìN/C¾¬¬¥[9¦,éu5ƒݰÙÃYsÇÑþa:ú½·CCÔ¬ˆh8yN™ðS•5G+¬Püâ1Å’¹Û;#YiónDwFùr]·D 3ó#| ù©raÎ´îŽ¦Ý –î4¬š^~¦à*#ÍõÀÒºVi„Ùä½Tsl³“þ”²ïâPÍŸ¶Ï” Óy”òc®‘kåqø…hNëB4Ûí ³+f½íÜë².±3 >†üX¹£?×-“ýÔ4è¸ W(U´B„­.lÝ“¸í¡Ùœ½&+Ü"8¾üh<¦qd©¬Û%˨;Í[ß·Xå8µ³íb m!@µv1§J‡Ž÷õpˆSwþ­×QDvètþ¯Ø—Šÿ²àˆ;vˆà¡¢‘Üg%­Fzo†ÎÛ”ÏkožŽ:KÕ+Uf9úÉíòƒEJÌç «÷ð/È›iþüÈLœà¶¿›‡Üà ÿ!ÐÌÙpžÛ‰º}•Qöd©%¡9üòw/”]¸yQÙ²û\K¶¼}T¥÷Úªps#2¯dùž(x@otiÍýðÁÃÊS‹“/ ‹y7|¥yïeиRüå/–êïWá ¿ þ¶o8%9ôöõôâüäÔâ«â¼BS|•Rpáô#íß8¸D¥p™rÍÖý^èn¤ì'|Û2F½uCÅ:Îï¸Lñš;–¢¼ÎöõeI±q ÏuÉ«ú„sÝïÙq'³Ý<§—•¸ë‡§r²Ü™¢ílâtI³ÆÇ]o¯kÖ³ºé†/¶a wGDò.ð%d©8ñîè• ½ôÓÀÛoÇÒ'Ñ_<ääN÷I”Õ)àä…ÌÀwßípŸ´×µ™iÁoKJïFTî®B©£ ÕQ™z¹²õÊ”í[{£mj>Ê€b#&Ôu6×È®(¶l7/!d³Â³<“ã+3žÕøÂ7¢&Ƴìÿd–Fæ ›Nh×õ’±Bœ4±n9Ã:мWǰéN ½&±ê°ö„O ?Q.É¡`E“ Òy „‡ RŠ46å*³hõ_$ü ²ÔÞD±n“²ëž€,u€|S û·èlÞ³iŽ7ÃÝ®#ÜD‰ðIàSÈêènÎÒq?Íq©Ñt f·fš÷Ñat\±/È÷ ÌŒ081+wó^Ì·}¡"p²Ôµb†GÙÝÞƒ|OÝ#d%wjûÀ'ÕÔ“àíGƒùÊÍMO›Y¾X÷-Œëm*NW{»¶lû.pº¢MàK°!<YÎ׈žoŒ4~¢ò9ð"ä‹7~Êî$ðäKÊ:Êfq{w§@¨Ñ‰šÑdÀgÕ'äŸD™~ë¬uëŽÈ{ÖvDKòÌî«XÇãÐbøZ ãþ8—­Q]v?t Þ¨nOÂôб‰h9¾wÂÇ+—ã)¬—ùAárEgyVÌ1½ÀV ¹¶rЭFëF¹¡UlV5j ›…»òoPÂøöÂ?šÁB}ˆ§ÝÚ@‚.¾¬úo^ü˜>‚üH¹=´¢ãÕ<äóCp T»Ðœ>Ý‹Oÿzéµþ±nýg$&¬rÎvhнÜ0*åýÂXÉ\Ö?n„—IË4$/x!¬Øél–µýŠÝϳšþ¡ ×Ö3Ù{þgããFÍ›8ïJ†£¿ªU62ïõ {"}¥˜Î#üô•¡tÎÑJkzùû'Úþn6˜ì8159?=>?;77^¼}ÏÑ?:®¥Ãñè->ÛN„P…BŒe"äð’_ô)·ä!¶pvÊu.-_º>pÞ¨TÜ&˜,Þ»$æE®E™l+£åG¤øåì¬ð«<©‡þ®ÙëñÉ—OÇŸ¾š{=þzj~v¼8¬h¬Khù„Ò×I‰kêèã“™ÉZÙÒÿ/ÿšéÓ*æê°¨¡ë«û«2ì·êé«× ¬84šc+¦éÔLGg#ÂÝOn²ú}…“D?‚VŒi’èÍ·öœ¸˜Íß â½ýˆÝõÁ Ç¢%ù1ØÆœ=¤[-Ý» ×'µÖÌ͉-7@£©÷C×·:Že,7šp=¬p!Þø»”âU›Õ‘FL–N]¼¯™jA¤FÃ2ÿѲ[.Í=[O¸øûCÜo‹–ä'`ÿ“XÕqÒY£{•ƒ›!åkÑ@‡{^9¦‘dwzÕ2uá™bs˜†œîü`’²;¼YÝIÊ<ÖB ®ƒé¥6nÇyQ‘)‡!K]/®• p²Ün^þÓ3Y Lîö믛LxüH¬nç «Ÿ´êÃ` a¨ù,ûJ÷°r_læ³Mµ¡“ÀÓã{})jõmß#<Yýñ¥k´çÞ©ëÞ{›{:li7„O±ųÀ ÈêÓ)Á¹õm®V-év½4ùxÄíVÊt,Ñ-h9J°6Âø¦S7j~/Íîm-¡ù3uM´:xï~½&sGiÜËñ–#Œ¥½²nèV~-b­§ÚÒîIw=Örå·r0AJ+ A(½ý!æ­G\m,¿ÖjåFiMftH´zW Ç3:ÙÓ1ð){:¾½¤Q›;ˆæU®ÒƒÈm7w|Š.¶³­X õ3Í5r—GlÙn¾ˆ}0­÷4ô1jõ†}¤‚F!Æ~ÈŸ!¡¿<œ†,õ´°XKÿðpòŒ²žöÞî èO=ÎBžU&2…ÿe½¤5l·'¦þvÃÛ–àXZÍ®xFÍíìjÞå®A¹‘‡:y º^.Ȫo7yL)ä87ð_6×uáy¬5P!<Yj³Sh®—ÊüË[.ð Ü  ÔÔ}£¾ôÊB*IxV(uqˆ$é N|*H'ðÓ”¿Ð ’¢íˆóxJ0žÙÆ4]Á•I?µµ½RNçšQÚK»ã¶tV˜häÓÓÊDŸUÍò»Öèd»Q[g¿bÞmVì+iu᧨4.ó 89Ü|æ–Å¿ M¢8U»r!ŽâXòÅñïJ‘(N E¨ÅZœ‹Í>6ãë)ÇZû¢ÄIš Fx²ÔæÍ¶¾™¤Å‘ô߈'Z¹z¬¶.î~†¼ŒÇ9\¿‚kù¸fÆß›šk΀‰Wš‚„×!_W&›Ýj‚á žMá·Yq¾68f!g•ù>ˆäÔlæc6àîÖ·w+’kªÏ¦†Ó…p@œðä;`© ä`<–úò•ïºTïe;÷ƒ™É¹×ÓYæšø€I¿å&´„ µŽ‚¾„ür*÷ò0žÊºÂôZµ^ñ/£9Cç¥jÍõHaâA–pò2ñωË;×aQ7»Ù„n€áç¥n½Þ|…"Ud& ™kÕf–(Ó£°ÌµPK¯ºÃ‹V¥ “ÿ9ŽB–`óŸNnÛè¨@Ô¼jí­ëÛߤ‹,Ç/Àpòä´³ßCÞÆÓÎÄyüyÿR•Gh¶‡–ÐìÃF?Ev¿J¦ ¢F‹”}‡j£Åö7G…éü~Ê ˆ$Y+ÁVªÙoÙJÕ¶ÊýC´jëF¨æf§î¯^½š/~ûݶ“ؽJ_VLߨ2‰Ýƒ-N‹Á·ö’zöµ©çÔW¦Y)[FÙ®>Ÿ÷vä Š9#ög¹Rœ•)Eäìãíé’Y3«:­œ±ÉšVÙ° o_Ï”eÚv>ÿ÷hgáÝÙž¸ƒ¾*B¸ûYÒ«õµŽÖÿi_Ž ¹•¡— ª˜Tç&ƒœŸ}Ãè›Â®Ò;¹Ù×o"þB×b9¤$Â>/ÀÙVJÚÓÿ=¿q5Q­Ãé˜k}é¯QVÂ4ätlwSQþvÒB°›ôYŽ=5+vi½È±×¥µªQvòSÍÙ³IÏù‹;_*Õ®tWdJé|ïMbÃa˳¶|0í½ð3®?|m– ­Â^7¬u}CôZ‡Ø "æ‚ã«?þSñÛè:ãçuvXêÖó 6 ä·x‹ýÂqc{|||±üŽ>{W6 ¹‡¦G8[,ï ŒÝ¹›ÎŽ 凇Ɗ#ù!Yw \°Pw°oÉ¥¾Mc -idáÒYÑÑLg›Ð_wþ§[nvéi©TÐÒÜ Ô;–Gx ò¥kï÷ôßßù¿Û¿¥:Þ¾™Éßõ?<°Ý‡)WÚ'²ç÷ÿ–þ`÷¿k«ÀJ»^½žýºä÷~tZUÓӞˑû®¬ù(æ·gjj|à­Û[Øïõu£6àzVr§sfI« ¼qÝÓÀ¢S­ó失ðt`Ñë>GJ¥ÒÐHq´8:z{Àëþx mÑc·«Ç£¢oó•o¿'¶ö±ie³'ÁˆF‚µo.l§ÞÉè/Ô•VJ::ü Jà.ð§âÿb^€|¡ƒá¡ö5¿àPÜäT.8÷dçâ„;l*ÅE®4eJÙw Oºƒ7Íupäâtë†Íž6hG®c²)Æ5m”³µÝÒk%]´uÇV€Ð\»—Ê_4L'l»P|5§Ô;«ÀsÏÍm¢™“gª;äXÔm÷W%]4Pﬞ"õÎhIüIÑΪ©ëöà.SDzY)'¦ŽÞÌP6dž‹wòÃw†v™ ¼ìõuýžf,½®—¼¾Ú@ãC}à§k–aÛë·7ÈCõ kNµU’ˆ¿Uê¾¥†UIÎ ?¾[)¦^r¿ãw±aëJ¿ï›nꤹ-ApoõB”º8D’lŸTéüaÊ—¨þ[˜Û8ˆuó¨Ñ|»?Jùç!ÿ­àT¬­`Û[Z»'|ÎŒ?ƒ,}Ü–¿Ü ¼9¾¹ü`ü„— _Rö‡CÞÄ©€{Bpô°ý`$=Iço5lâË€_@þB™÷ n;FUóÛ‚—d¢O¹}¼ÇYÿCÔ0á äÁØ›£ÒóNDíð+È_%Ó&Užw"ºÀg¥¶¬†þå;À¯!K=Y$Ö0)»"ðÈß$?b£ìÀ!RL¥?¸dë:½—ÑuQûøG)…N^½(û.Õ:tå׆ÿ8åM²4I±Vî~³®Û´ÛÀ ï5º;Ш­sä½iC–çýë_ÐÜ.{£ÕëÂ'`ÿz$¼ ù®:ûŒþÑÑkÞ;Âãþö²æ-ˆ­·’oØm{Ì"÷÷E±ÿS0þSUö¡¹v/i gÍ´"”N™ýÙÎ6…?ƒù¨ÖÚ{­ýkAüyÊi {!÷ÆèžÞëÌ`¹gKÎ{€}û’×ÉŸã{"ÉU@ø`qKžÁb§dÌ1løE¿;F¿ÃzXÿoÁìåB‹kÒ‰xýº½4obXì¨jµæÙBPÛ¿ù-ÌyÏÿmÖöÿˆ)öt›Éä®±§Þ¥ˆ¸BÉ2?n¬êµ¡qV6½Kh“}°æúÂ(ß3õj~~úe˜qþ&•ka ì@UŸ¼tÙõa÷–Ö7]sc#£¶ÚRBkysòoÞäþj”µ™šôòæëµimRæwe•TÍ‘Yä9D Ìäÿ-ç רBE×lÝ7â²Yj4ƒ:K°8@UýέL7X),Š[w( ”i ×e?À!’Ðé™À&£XEÌÐîMùÓ„½{eXEŒ|jZ5lä³z éY“ÒÉ^|/@¤Ö ¹ÛƒÀ>ÈR•šë%­bhaS®û ˆ}Í![JJ¡ìsˆ“RŽ57=iT"·XG(g?Bxò锳 ! ÙcŸ”r(û³"ŤœÏšÊñž-õN9 êçtBxò¹ôt„!çÂ’Ò¥ó"ŤŸaî Å:2M¨“‹™b–M[–iÑÝ/lfÛlçI}¢ËòÝÐá8äñõçN%¬Gê†ÎïA¾—¼þ(ûû"Iêïà§Ò‰Ü‹y0<)VËñ ÓæB¡ ~ óTäý5Èr„Zýp÷º‡MÛê‹bC©H"š£†ãû‡R’=z(«îoéA·!õð,d©.$| °TÕ53lNã0ôCx²T×°ù˜Ù0]Ð!iÉÄæs`rv,ùj$ÀÝeÉGa½G;bÉ=ßnlÃ+X$>Yª¿5æ`J0d×§¤Ù’vÈ„×!_±ßnØÚjX¿}eïU6ÛOj>QvÐ ›I²õR¥Ó—òr€H17æ=iÑwº9D’lÅûÛGZ-¸ß\a¥ŠfÛL‚`ð<äøÂçoé0#Û}é 0 Yª‹ˆ˜¤‰Xž¦/]Þ„|S¹i¥ëuUôs xòØôóíÝÀ¶*z| ùi2*º |ù™²Šöä$Ô2Ë!Rl¥7½‘-&©RÏ!?OÞ÷Ów^pˆ”4 nsG˜ŠTNÙtÂ&DúS¾'< ù° TØ•×V–÷nE° ÀÆ#ou׫Ѓ¦5‰ûg‰j/pòPlÞåÀ¶»#= ‘>€ü óž…²>„üPÙ¨°Œ­ o)!€Ó§•¹œzâ_‹êí™Æ 7Ù‚ 7hÚÃSOuÞõõsÙž†,5 ­æs(û3"%Mãj ÀÎŒ]÷•Åod¡+º={d˜¥Â¶–uiL‚ÏQ`oªùÊ{\ÕPaÅj.ú}º›;É¥‹-ì´›£lúRÍ÷_=ùRòeÏ8Dê´á^nJ]†|9ùæKÙ§9DŠ©ô=KÍ!$ï¾TÓgïäüeßÅ!’d»l–„ép+›1Nû6©<@ç–>ù®7®zÚÛ ˜u^ÄæAfw^”Ý àeÈêÍWüÒÊ? ÄeüÙå¹?ï>ì+%8›ÚѶKÙwq¨Öv•·“ñõrˆ¤X+/¼õ^·Ùú±XÉ´,½Ò:F“¡s4FÙ0íZÉr_r¿R­›5ÿ‰ç¬wÎF÷‰E Ä-§{cë=©8Æ×´T½b|ÔËù¼¾²B¯%1oúÇ¿[ÝnçÁŒAf±5‚#KÜVJÇÀN6… 0ÿÕšÂ-U:HöpØv4R²VöN w[— Bnï›$‘ïèÓÊ}¸m4¦WÀ©.÷¯B¾*Z§ô ÑWÀs»`ü»F%¬áÇüš ó-´.æØk½T`ÅÁÂíˆh¹EX×íkÔʺðƒ|<ÇÇ+s|â=ÝÓ¨x÷wÔ̰Îׇû]EΓ]û6Ê®Áx÷¥j¢%a©¦3{EW²$£3Óx…£Úð1rÛΪ[‚u½²b¹BP0½œóîLåÎ ÊÂ.ìwC'62.ÍÌÒšæü¢ñËw¿0œ_æXë'û—Ù‰|q ó&_Œ´óˆ½xió¥6Œ‡çº¤ÿ,¬+L£¤„Èe}÷xQŽîz9Qà]Èwc×á^'¹Õ.B=W8 ¶LJ ò„Ôs… <ù²zÆ ì=¬ººê†©6[Ölz‘[óvñyÓ{™äyÖ6ê¦ëU¼ë—kâî„x÷§ O©»“ºÛ§èe×Õ­ÒåÂä]_çúÎ÷Õü'bݨÕr UÑVÇE¹_E}ÆçNºÚÊ2Ôr9ç—l‚-i•úšÆn17ˆ­8ã?ÏÉnE–#Âr¯qx²Ü2ð¦&¾¤;šOZÏuÔÆõÔ¦nI׸\¹½mеp¾Àuš£¡„Þ—.-÷:gA{#fG€7 ßP¶·v×wf5Á$û)¢—N@žè¸ú(· ðd©…=µ1eÿC$EcUí½n³†í†@µR¥QÖ™¶ª¹aµãÙ”i«]ã¶%¥†A8yL™þQ."ž È€!·M/iÅf‘u€j‹b¢9#çJi'Q7°7ÿ‰³ˆ¹Ò›¨Â>È}ÊJéc¸MƵu²kAÝÄ÷/B–Zô ßpà¿u(£ k@NNBA—€· ßRVÃ Öø-z|C§[0šAUN´Q»ðdõ¹È3=7ß2%ºIß;U#Èî ›PíXèêŨÞYm1ƒâ´ÙœR¸Öyƒ¢ìίC¾®¬ª+0(?¯Ø·Ù{£ ›Î,»*,‰Ú¼œ…<«Lt’Æ7ËŽÛçúwhõzeÃááeÇô|–ÛË9º…bÑït¿“-ws@Ø£\’Å8é=©¼)Có CÈ­yLJðãPÁà“8}dYǃOÊíð2dõ¥Ã+97Šsš#‡-—©¹æ%jUD0 |Ynö.Æ=y4­Ô <Yj{½˜Gãf³b ,û»zay]f”Gtz!ÇÅ÷ÀL¤57 ¯h53-£­kÀÛo'£­KÀQÈr“-ü§§ÉE»c*Ç2+ÞĖܰ‰HÝÎCžßÙaÓ,z Vë6 "ëãYI=ü¶V1Þë2ƒ„"HªMólw¡ä¡úòªw"7ròdziàMÈq¶¹LòàHKP>¼ù’,å-¹x ²Ô FÌÕPvG€9È9e›Ýïš$ê6ä䨭µüAÚZŸ /$f­>i Ê€Ó¥v¿‡þå»À/ ‘Œµ!/ª‡19Ǿ”M]x›Ñy ,A.)Óš¡ëÙ,Zv«Šf­êùü¦ÙÕºcºƒEÿøÁšæÍ¹Æ´t¶jšeV·Ìºn9†N—jˆ–eÈo3Î@žQ.ËÜO~b¯™–sㆿUÊ.06ãŸÃ©º¼sÌp˜«ÿ¶gŠSV½Kë*lMwG˜¦ý^/k4@6œ áè`¥ œƒ<›­t‡nÞaœ/"·‘”B@@ߨtâúŽUˆR‡H’ÎöЧ҉Œ´)º>Ì!R§B¸HÜÚfŒ1œwËC&=]­WÞ¾Hç6@± –®Wªiñ3ów@AfÊ4'š—«TÌÕŒ^­gÙ¯‰\²YvË“KZÝp´JÖ¿ºÂ-‚_*ñ2p—äzkg{R’kgŠ*CÞÆ£òÂï@aë®áÎF]¿A¾ÍŸ9` :mH{–ôè î#Iƒ(!7¸W$ýBÁÜNÔ- ™ô³©a “æ®NŠq¯®¸9ÜGÞvx?l$®I¨ñÍöÐ_ë·n#»ÉTATEÙwq¨ÖG}òVQt¦ü>8@$ÉZéØÝÞ^ÙÁ!ü(»GöôN(½ DßøÄ·Ûâ¶Ê>Ÿ§Ý²ƒCâoû³\)ÎÊ”"r‚ñ¶ÿø3-–Z¯B›+tW¾mçó¯ýQ½8½õ~ôN!b¨ñÚ\|5Ç*~B¨3†¹¥øzÓØŠ æMã«9þÓ¾r+ƒn?—Y6é )y×ÚYÝ$àZù(¹ÖÐ\¿åÙÇ~“òv–ï²É&¢ÔÅ¡Z X•mèáPþlßv =õ+e©•†iØ?áåTóvl>j›•†Ck ÎGÜM!rœ·üån`r:ÆÚˆXj˜F 䞨ƿ¯-SþW8í'·®3«bDë>ð d©M6â¶*»*FT‡€cÇb3Õ““0ÕëÀÈêK6r¦úø ²Ü•‚Ùn@´ÞW!¯&fªRÛ ˆê[à䥨Lõp òZ2¦: 4 ;dª?¾‡ü¾¦Z‘6Õ_ÿò'gªISýü}È¿›©ZÀ?ü'ɘjø§ÿ4SV)ÿ?þ9ä?ï@´ºloHÙ*õ8g€ÉG«`-Áù(0Þh•þb70ÁhuÆW©‡1F«ÂS ”ÿU R´šëv÷3¿¬Ñ®ñæÝtþ]zóÝŠ¾®W„Ï/ñ/ç¾€üB¹bÓ¦µµåMW% ò ^ì#LCNÇhxßöÂ/å2»–”áQöW9D’4<õ~K€mWýKVËñæ¾ Ù%¹{ôÂ^ø[]۾Ϻ‡Ã¶é&qGõ.ªÔŽ#ÐÜ|ÿPJ2‰ó…ß#øs„gS[^øUláÛ<ŠÊ¿a܈.Õ§m¾ÕdÓ ¿9¶6È&X)“^)§s,½¢§³âÖM ?N@žØëæ›Ü]ÖÝ ‹îíˆuË¿úÛ‹¿Hòêoç ¼*"¼ù‚²Ù\€“ŽÇ´‰ÛEà8äñû÷¨—€¡>ú”Mù“šÔvOïvqˆ$Ù¢Ž¨Ò9–ju!/ÇÔÀ…_¦½›Ã¶—€[ööá‘úKÀD,=B^V¿É¾Ll®³©-/+ÏBE,LSv€7S[^–lZè%`áìˆÃ-à äÁس\ŸŒVîÇ!Ççñ¶ÕJxò=e­Éû7fꕪ¨³!&÷O!?UftÐoÊYÑGõú}ýzÈ :cSKÄ£zǹlƒ>éPòýeßÃaÛþø¤h´]˜c€I˜ŠTNÄ«Ä'R~_Cò*±`¿Ó~@«#¯Õ^àPj˫ĊOòD"3|Úò*q§\e7 |˜Úò*±¤Q÷z¯3¼,jáÄåpò¼:'¥W‰¹KNù1C§]ß .Û ïKÞçœÄ÷DJšÆ)Ô@€[˼JLë1ÝÀžÔ–W‰½`û‹…⯣ÀÞÔ–W‰]œÂ«Ä§aE„S[^%î”›;öCx)µåUbY  ({Æ!R§½÷žyØ«ÄI5_Ê>Í!RÒ4øo;çEºÖyÑÄn70Xv’Š®=>ûÛøœo>×z®iÜŸtÐK0=œj^ïÉ×wvÄHTòÀAȃ÷+”Ý `rQÙ¤ÅîPþCÀaÈÃqjD—ÒÈ8p²Ô„¼¸FF€ KÅÑjžž²È!R§=ýY_{Í›Löø˜´‹¥ì'9DŠ©ôÛ¿? Å–«vhÖš²ïâI²E¶‹…éÐrØAãY”Žáýyþ•gnj#&Ï%ûþüyh.x{ú\*Þ@-ÂyQv'€—S[ÞŸ—íN¤žÞN¯¤¶¼?¯¼âõþ|°})X‰Û¡¶KÙw¥"ÝNºík")ÖÊüLÛ&$£¶ºi#•ÈÓô¢EºåÎCVŸâ™)™ÕºÒÖˆ|–{õ˜ö€é†7‘èocÛlÂ- ÂÈ3Êe9èonºÜø®sôG–ʺ]² ïY“SÅö³lÀi4ÚÕð[U:ü ·ñ­ìîl¯B%„ÜFxI"Áírý-·Ë+™ËúGÃvìLºí)ût6ËÚ~ÅîçYMÿPÐkë™ì½¶›éJnÜûªVÙ ëéì­÷ÓåXI+­éåwî?žhû»Í»ëúpwÝ=Gÿè4´JP’wØQ]îKµ¶B«SúÆ–;ìã»)·Ð!ú?Îm‰õo®“°†kók2̷к”c¯õR £…a7ƒüL™îP+$²YfæI–Uéù‰eñ`eƒqÞ:åÍ¿1<yHÅàB§`¯»,3ÞÓè:=îü2ÇZ?Ù¿ÌÒûÖƒ…ÛQÜ#Žyd8¼ùVl–õ¼ ÿrÈAYIM÷xá¼îö™LPƒÄ#…<»÷:¹ÈÃÛ¨ç~ªùø·'KÍÿ «çð!ä‡ÊêÙ_`³+¢m‹(<>¬ÞÍ<öŸgõÊÓ¬ ÿ¡S¿ô|Ø ;ðlÔ]jÌÒje³Ê>h•÷¾ó-GvAøòcårLz5Zó•ôMc\Ä3O‚"eZ}«h1n‚:á$d©©ÐøÖJÈku•«ÅúVþ-åg÷$:ž-°Ç&žÛ\1>º=’îö^%‡º®é¬w-²ÿQûh_T“Äûpò´2ÿ)¯ƒÅKÕdk–^Õ\tškmÍe4jeÝ æ/4ÛnT½áwŽ-7”ß®ÅU©ïúÍg]§ú7J†[Çnœ°¦ÕVu{œÍLÓCVô¨Uóã `‚ìó`LȽ•³“Á*Qy| YÊU‰5(Ên 8Y]ûs®ã5)¢ðø ²z z@Ê@ 0Š~ÞããNz\¢rx ò±Îe¼ªÌPÔŠøråßü ²Üÿ©ð4ÜŒ!Àx&'§øicÙ(²Ìn¬º^Ïí‚–5Û!¾y4nœ¬›Â¡Ñ ÈÆèÀ5Vw‹âv –¾JÕ{OïPäþd”Í›{¡‘ÙsVÑVÇEÙÁ˜0ž ;0^h õrÎ/'–´J}Mc·Ø’µf2þ³|ñ—ìVd"FCC–ÛoÁÚ³¤;šOXÿ˜#wηãž!.×ø"ºó¶¨Óšrðê½k}ôø…ÌKêÄìðä±S{F%5›@ÄòÀ;ït\q”[x²\Üd¾¬ª½×mÖ$1àcÈêc½'n ]ª4ÊîptÕ ©m/Xö÷À¹n-rè·i‚N´$#0Âø&yc¤­ÿ¬áÓÌÒ ž®# ŽÓÈE±ÍDå ðsÈR×–ˆÅD”]?ðð1dõXbÏ  þg¥Á¦°…ÜA®]»” 4Ë‡ä‚ÆBTöû ÷ílèATNÏB>ÛùÞá.¾Hx²úe:·ØŠ¶n6Ü~›¼nÃÖƒ¥å-3ÞÂa9ý8 Y}Æ{²9ÙÝœœV•rL«8kfcuuzuÓ¶åŠî~Ksûšç_ŽÉÇÐüÕ–`øO{,¯Eèeáé°qp T¬«M‡ñ/‹«Ÿƒjo˜ßvCѶw{Sñß Ñ8ù÷Íû ˹)þÓ¾`eG÷›§ Šîã{„!_ŒME]+eå\^‡|=å\Þ€,7Ãz»o2®'r¼™ M8D ¶ÜGCʤd¯ ‰QCAØ3YjnX\CAz’ÚòàüŒ’§!M¸ë ß#| ù¥z×eÔê ŸZsëº3wXæèÖŠVÒýg‹žëÕ×]“2»5}.üÊÑ„oÆ×uñ6£µ<“köþ©‚쀡ÚÍÀ¡gwh5» _¬›KÀk¯u¾Pvg×SÍñªÓ5hþ ºêÏ2y‹I6]ToKœ½ ‚7€³gch63—ͨùEhõzeÃ_ûšñ ;¦¿iHsܦ‚bÑït[jÃCÜÃx›†¥Wôu­æ(N]<£Gq5ئ.ˆÑEàeÈRgÌ„¦R­C©iÈiem±³u§¹PT2×5ËÐÜ¡s›e|µ)bwø²úÜÁ^ñ+Š8ƒV<¨ãED¦ØY*Ds¬”Ý>à1ÈÇ”•rÜÛ¸ì™Y—YZ$:Ç—!Kµ£P÷o,Hk®Cªh5Sx’ƒxe€Jk|âÚJÇ )këõÞ,Y¡ðK´a›qà,dõ>ïÄÖDáɀǾò=T;{Á*õýãÙsøm­b¼×e†¾Üâ©âÞ‚ðØrÛ‡‡#±éž,Õ­‹5*Êîðlªy¸¢vö{C ½œ^„ß”D÷öo—o«—à\Õ-ÈñÊØV/—€9Èê§2.Іy¬ø±²éÐè¡5×ÃlHì veÎBV÷|O*šµªçóoÜ¡ùFµî˜î8ÄöÌiMófºÜJ{}WM³Ìê–Y×-Çнv7nØk¦åܸ!Z’iß^<Œok…ÿÞ‹]`lÆ¿j’ö(ç0ýl™Ë ä²ê=‚'¼†?ž„Èê ÂgÖtweÚïõ²F#@ÃÙð†‚ì‚Ga ã¿K-Íï¿¡½UµUo£Økpjó±«9£¦k[ ^=ŸBâ¼áçN•$4×î¥ò Ó ›2¯ •š^g5yœfÕ_;¤žçfêi¢›vV=û—ÜXk-1刿KÐYíìÞeÚX6+åÄ´q43äÆÒÅÑ»ùâ;»Ëmì››}ý&â/t-–C £Ôî϶RÒîç'¾Y6Q-ê\ÏïÝy;8¤Øók(¡–J¦çßצžSÜ]+ÏýÎH¼ó×`.A)âuJ·§KfͬÒð›t{Œ Ÿ²LÛÎç_ëþžRZ,÷ºöDü½±ØŠ Ö­ÄWsü§â+ áÑ3?û†-ÐÍ7¢Þ´³êHÀ›òˆÏ›~Î]cõz ÝÊç‡î k|Ùoi¯DHÝ¡VO%dà®v÷ÅAEw_F Ë©Ýââî¾ {Jñt÷±AÌÝÇWsü§}96äV†^6¤6Ìv†”¼ïï¬nðý|âóýç¶øþáâX>?<4(ÊO÷[‡Á£^RÇæCs=¼ä~çãC2ÿ12\I)8|úFü;èwqˆ$é×Ú'ل鬦ü!Ê?rçÆà5¿h…,53á9#ö®AÑ„ñ­ÿˆÏ¿Pþ}ÀcŨ¹]ôÄæ4ðä É(å8ð"ä‹;¤”K@–jî%‹I)ë4KV+7€ÈR;ĵr8y ­ˆú/ÊX„\Œ­ø—l]×*¶á9ÉA©8Òœ²ïâP­?éR¥óS7âI5ø|j˜ëZ­f°y£R1EI½‡zû ÷Åf$ÝKZÃY3­ˆÚ Ì*;k#ØE€j6Òîºö¯mã·¢(¹#[/Ö ì…,ÕÕF´[w¤ýÁ´Â¦õ«ÐCUÕÔtRÅ÷D’«€ðAÆ–<ƒÿj(vJÆÃÂbúÝ1úÝ>ÿöÿüÈ^.´¸&ˆ×¯ÛKózj|à­­[öÀ{}ݨ LÖë4¸˜3KZeà;ªXtªõo¾œ4ž,z³9#¥Rih¤8Z½=P¯TªZm Ø7S*û7¿…5ïyø·ÍʦIÒm“»ÆžzÇ“ÿêËü¸±ª×†ÆYÙôŽŽÑP›>XÓjQ÷ÉtO½šŸŸ~f_œ» {z(ÐTêïüßíßÒó¿}3“ÇÉã¿moò܇Ý[ßtÍ ¼+@$f^ÅLþÍ›üÀ_Í¿j¨ø³ âQ¤šPMk <§vB#„ç Ÿ‹A;þÀHxòùøµCÏñ(ÒÎíÖKºë¶öÆ¿çæm7ÿµEÜÇæ ØÞ0o§#g-z¡8Â(Tbݬ—‚¤^(Žpò\üJ¤âçÄ#¨ÄC_K'tµðPð#Ù,^WO}Êh¹\Žÿ¤Àa(Èý[ÅÆ¹ÖaÒú-×pj‹ÂB0"Ä’Ž }AÎ9õ~aíBêð,d¡$x°æ¥Ó )x0`ƒ ÅŒ‘Ó1§ 2h³Z!•4+Eó£› 4™Ñ’u³l$Ó‚–N|Ï—!/ï‚¥E›ù¸—,½Ö݉¥÷}9éÂëðd¡™×Ø™ UÐ.*A£¹IÆ‘™^>†üXá¨ß°õ QÿP¢9Ï‘4ë¯ê^a–r }ÂG<‚½ë¨,ï4âξï'-úN/ƒxûù6:'õŠf½§\ÿ´­«P¢Cãû€!_n·öö:œÄ˜›äí]ô¥àMÈ7•õ®ÐW¾ô¥KÀ äŒt纜ÑÜ+%š‰­‹~îdh×Úé;Yà È/”iíËÃG¨ÚN$šw¹²¶µÚNxµp‘‘e}b†S-Tô ƒx”ÕÞ¬åkðkÏädŽ{D âO1ˆ'nƒhÕ…}„‰På­zÐJ v°¹xò:î_ø¦­u.®{©›¹Bl7uˆ—˳ápÞØÅ4ä´2§Òe§w¨7¡¿3 ‡<½7¡ân' OÈrN@“ â‰Ú›°YÝ™Ë9ãîÆTü4ƒxâ¦q -àc4“ÈýEþ÷´˜ß ìƒÜ'Â,бô蚟~à±Dsj«*&¡ʭך¯æ¾Þ‹œfž¡FíE¨˜à0äáøc*^cOÔ^ä4ú áeÈ—ãï¾T|’A‚ü(z_CÅM!/ÆoæTücñHÒèOu½Qª§iÍI‰Y8—Ü´Øã¼%D^+!2§­CY§‚o_ù¬„Š;¼Yìmë+ᑨxæZuÿ‰zD:ËXÂEÈb+]R}„Š¿Ä Eµï[kNÊ@µÏ'd‡!©& â{Ä#Ø'ÛærÓ¡®pˆA5ï‹OÎK¯Í2ïA$×u_‡&Ý=íÜÎë[4¡Y‹ÞyQq§€—!Ë”ü ¨ü$pòˆ²ê\û¨—Aõ÷Ï—ú®k—ú.ßà\ßmŸurÓ!ïyŒA<’­²¼j”ÍlU§Ù¦{zÞ¿Á»[³fØt(—úuª+RpBÑ@Zk47ñVgŠ%\†¼,]óFk›“»´ï½}°¹m”ý1D]Ürt­hØ…šéÞy¢k*QÛÝ Áê}”ë§dé/ìc°íp³`«Ì¾¡k~ì nPØ4 ¼;£+RIÛÜ®ZÎÈ-ñÙ¨q]KB™„³g¥«0ÇÞòÞ¨ot³,Ý'bû÷л9Œ7jV£ê^RSsoroØÙä¿×׿À¿¥QÍn¼GUk˨y÷ËëºYq4Àø¿gë•"e+¦{¼ë€Jtc}e[ûà|™·&WÀžðd¡I쎚œu]Á­tWAˆÐéÅ6ôJu»k(ÚG5Îh®y‡®Ó>t+•cºÞ}V/Ùë¬rÚ²{ ”+˜Eg¸):âZ6o-˜”Å mv¼ó(7ÉLÑp|I½á ŸÚzÍ*k«VvjPßæ6‚¸ŽCßÒ(ÚG5Fp†Œ@o}4Z:6¹Én€!³ü¨hòpÒs<³2keÄì09ýD‚Š; …<*­´SmkÓ,l’ÊÜ‹¨¬ð›º©l ø²¼ß=A÷\–¶5w?™ã9¸-é&¬‡PnsE%õû–$´’FœÎ¯@¾½ Qqƒ‰Ö…Žƒ‰¹ jêJFs|¼ky#x½c8àµ)bx ¸ Y~F1ï JÁw,z‹¬Z;ÃÞj0§{ƒ®T¬Æ(,oÁMŽf{¹Ñ$c•,˜ŽB˜Ê¡hÕ SO—½ :èúò‚tGgÁf¥Ú¨·6½•éâÊ÷ÎçXŠU2+¼õÉ£„O!?•®O¯ËŽ[ÇŒ^Ù9ŠÊÙH»“ºa‚É>à±DÇ ƒÒý6ü†ÁWÐÃ+YcÓÉ+|ÏGà.ãpRaæ:lÀu¯;Êëïã7wÆŠ‚n‡“¬}÷\ЇÍ)ÍnF5Ǽ®v go?å"tà!ÕDÇ rA‡ŠrAKF ¢¹ éK€Z¢#tT!}éðr¢#´ –ø"Òw’À€mƒÒ3’°\Ð0€‰]í»T|ƒr}·}@ºøíƒâ‹Wì§æ½<NǵÚEjÌ¢ˆ;<{»H˜[ßokK/^pÛ{sPP‘]})Ïò J<µ»Öu 壜uIÏwýk¶|l;#$Ø*¯(×gÛœkn©äSWH¦µ‚^*4JŽ=y™%ÿ¼¡kNøWp¤ø©ŒË ô¼•:õ¾‚üJºR/vtŒú¦î&«-›³l~vzÅÖ¦YòãXêGÄßé&~¿±jn~Ûu«T²¶¸Ó039Ù ’UzÖJtHé5]+lšYÛÑEÍЊ&U÷}à ɷÌú¦Vi”ß5ÒMÑØ¨†{juÝŠV™·Bì 6þ.™gÒzbü9åvæÔúEs ›™²½üÞ~5<órtVñŽ–zÙæçQBf÷¿dmε˜,c}Ý,˜ör;Þ `t!x*[ÒñvKæç§7óïüØ%§KÅ÷0(çt¿:ÃJh€I×La°-™Ÿêf åq *ñQzÌo±\-½}¦"™ß¨j5išózÍÍ_µQ.§š¹¶~§•ôæmlfÜÍÅ…_n9õp~;:3æü–»ÃàN8y^ºßi­ÿ|ž½jÖõ’KuG¬FÝžüßÿE[mÇgîÜI‡n†­£“Äw¿“®×C¦^H-æ™ÔŽŒ~[Ö–¾Mï`šéÆšïeø ÙÉÊ&’¬È¼EÒküŒ’`‘LìXFŒÝS°×@HyŠÀb»féò¯º"[´ÜBÅ÷0ÓÒíˆ~ñ¶ŠŸW毿WÆ\O]6>9¡Jæ¼$3¹B£æüA§»¥µ¶_‘{­[9£ò1•¾Û–“¦`ÖW•Ò6%¦±;3Ódœ BaÓ(þèüãÙ¶¿ÛÊZódþåêÌmÙ`×`U„L$Ç×–ôެ5GµfÁ©l€ö§¼I’6vçöxšÓˆí†õÖòý‚¥q¡õÄMƒ½óCÞKü\ûÃêüÊÒÌÔmÉþÀÞCsÀbÁةۼý!ãóYïR`iHõ‡ÀR¿Ç¿F(-Ó èê“ã¥åÆOé+öhƒhƒâ _Ýθtg¼–L;FOÏ':.Ò•~ÿÐå€ÛYb,À·?ѺJ¥?±ã*>¾¹x²ºÎÔõ"”}@æºÒ¸] ‘A<ÊÖmÂϯùÛ§ýã»sSñ= ÊùŒY:´}è0ƒx$[eà ›’ÿ™¶­ó/vç ÂÈÊŒ¤Ëù5ÿt@~wm$»ðQÎFÚ¸ÐùµÑDkçÓ±DÇù5é~~~mz•59Œâ{>âkÎókc¨vBăBúÝŸÞùµ¶CO]ϯimöò'z~íoþö÷ß•>þ¦ÍÎvÿüÚÇ‚õñá³<¿ÆnûýŠyÂìϯÕé†jñ%Ù#l {IÖBGØr â 8)ò 2Œ“ض¯ç2;—F¾p„mW4ò…#l’>—J¾p„MR%}ðÚáKxajaO¦€|"µ°'Ó!Ư*þ$ƒx©eì¡Qøàîy¦×?k+Ö{ºöqÁú¨×L6š¼ðv¸/ú›~x·ãL´²Ý†|[¡öÂÎúc&áÈwâ×=3 âÔÞé÷ž½Pm;§›eÀëÜ©O-—Ëñ¿öÏìù{ºÛ¦yª•Êã0Êö±m €S[=‰ÓrÝG§.g'š“oW%9uyµÒÐ àIÈBŽ)d¡¦lÔ7­ ™1{ËßýzJÚZzRÜæÂn4=ùŒ4‘šö‰Ï {&+àˆŽ —¼¦Õ·«†w@øÉÂ( ~²0æÁ¸L&vÚø'|óóÒ¬5M+”œq̨yÄ7jV£J,½«åøi²çŸ4Èš4ÍSšV4õ ÷þêYíñüóÕE~jLÀ¨°3ÔÈ‘s“a|wÐ-ÑžÉ? Gá„ÌTYÔvÝ?ü~"!;€°Ÿª>òÁ9Ž ÈÒ¡èù(ƒm‡Ð «û>qÒ: …ùØv®sDàü9ýYt½ù¢p»u¼ pw¯òö,úK#Àë¯+ëY¡o0ýµiÂä”|Çâ=~NŧÄ£¬ö!aÙ“Fþ«Ìñ»*þ&ƒm™ â¢Á sŠ£tÂD¨rŠVà]ŠúzG ¡èÕ×µú¦É4O ç8›‹xCŽÞf™›àÆLBÂ.3ˆ'ngÐ>F3³ÜOÁ:'³³0YB&#‹ ù¶¯P$wæK° ›FÙ˔ѬŠAC£ß~`²ºµüî,‡wP$.SÀ;…›øE*.œ,¶¸Ä~ÊÕ•xò=¥*RÉB¢u#Û‚‡q¨d6Ѻ²h6±ãàœ°JDÎW.'Zyå—;’‡(PÉ8·Jè¨^/Pj äS {2“Yoˆ½—PùýÀcÕ½ò:à®Äˆ¨ät¢umçéÄŽ™Qªdxò…]RÉ·À‹UN°hULD%#À'XTÜ% º Ö±Œf†öÈ;PË;Û".ià4äéè#Wÿl:{ ò-é¦à©øÛ ≛Æy´€ÑD®½X°å$Çì¡Jöżh'%¡ú©vÏ@{-œÈ[Îæõ+ÄæpòˆÂÎâW. C^|e\=•5Ñ:ÚuÕCEJ9è½ZÑI8y<\N@žÖ ÷b?É ž¨Ý;›=b òTü~•ŠŸfOÜ4˜ã º÷Cþ‹.Nv”õAéÝÓÆ*£k%kƒrÅhn/Í®dÚÚ4Üe·ºE | ÜTˆñ à=ÈbsböÓ¡ŠUÉ6_%Ã]$’ŸšÅÛ/Aß„C‡¢ï€™b‡!ÇoùT¼Æ EµïžÖq°ÕÚ’½Nª †¼NÑD<‚¿=|â¦CÆpˆA5›“¤uÔ "€´Ž’ÁᤗF–;| :€—! ­mó…TÜ)`rRZM)m•3M¬ø¹Æüü|ŽÖx ‰˜ïC¾/Íðº—×·¹5Ée³Y]†A2§þi1<=¥ïz“‰]õAT|ƒ»ìƒÈTŽ1ˆG²UÆßVšIÙœÛl;m©™[ÛEùÙdÇ! M%–ö9‘’®Ñ^a‘43w€!?”nÏCþŽeN6~>BfÓ©2i”«›!0bC>,Ý3n6Söf\-¥ç>äôœöÚýåÝ¡[ Ck«u§ÁôZQ[¬ÕãIÎÓ\€¼ ÍÿpêõÂêb:Íí1¯As×;¶ì*Òâ—¯ú)£B2³Äå7¯{Ý´‰r~s]–Ž%…mù'"=Ð Ñ‚q/0Š3V!RVAÈl•´{”žU×Ö7e«Ûù1^PȤkµ°Q…?€"æÇ€Ë—¥k«ê5½lÔš—ˆYg—¦ V­èF–HÎRfc›D@óÏ4cÒ©‡‹ ÏfžÍ¿ùåÌ©»uãS½¡—ð™hú$6{ãzù–¾Á›>éÔÎÃI©±;w¦ÒœVA¤¯3䯋ï`vFóN'd4vÀɇâs»Y~è~è°¯yn†R;6i%Öll*’Òdð>dù©Ö}fòçM©¬kÓ 5Ë™ÈÓ²»V5j¦Utªç¾±C·‹w˃²¨®Ƕ͢áÒ·}EP2ð†J¯»µiÎe’¤¤ d<Ùjßœöê½Ó3?ê^é²¾M7Üà%cY†é®Ž¾ßÖ8™çÁ–p²Ð¢¿Ò—cÄæ.pò|ô7|Y~r´ß@E²Î,C~,Íä!éJÝ»Ééª[¦mh›Xö£¨;½Üõ¶]éÌ ä½J¸8©&’©eð!dùý†ßÎÇP8!sæ^U<,ö¾‘ÈôÍ î¢6s*n?ð8äãÒJ¹Eq"k`VY‚íŒ×¢ˆô àd¡„;ÈÏ2fîÞ£P¦ÐÝq±ï­ZÅ ÔeÓMݯ×ÝdG$Ä[f=ÈݸÏCÉ*<òÇ2gZò^§»Ïœû2«¥ÞdÓZë"ï‚-³TrSå8UÔ«ÕšUu:{;ÆŸ{ÂGI×äˆQ²-g<3¸—"˜!,(Ÿu\‹Ì{l…kûéÚN&Ó(}ý|Ÿ‡ŠüÞ—Þ#‡z¾iè‡pò`ôžŠ;d’8Hê%Ý|mí¿ct¦†ÿ ÂŒf®;ƒi] š§€÷ «ÛȽÿÍÊÛE^ÅѼ^ Ôñ>Å1ûþöëÉLs?ÿÎ^Ó]ÇôV߬ˆ,ƒã£ÀÈ;ûÖmYíS1û®CÓhuªåÙÉß[õM?¬yo£Ý Õ9û»^˜ÀÄ lÄIé¶ít*g8kÔ3îàµm%gz©óVàHÜm.Xy?ÎbÂëÊé€p'›u&ö¶éLÙѺ¶‰·3 N8Yhr$7Æ1-¨pŒ~×v8ÉÆ. ÓËõÇIòˆCVçA»œï õ Då0 9½¥â4à ÈògV¿õz¨Óm­ «a{KÅ–M3¯=1åmò¢”ªÏoÚŽÙ2 ›33ôãÉwölŠØ‡€yÈy…úë’={ IÞã.À¼ø-äoE™wüå^à(äÑèmš™<±|I›>J#½©”@ûÓ:Fdäçöœ^Ût>üíf½^µgòù…•ù—¹•¬3¶Ó.ªœUÛÈû/&FÆþò·kÕ¿uÿÄ!ßjBêÒõeUâ>ðäW¼¢ot¼l8´Fõp¸2½Öù^à~Õ›_Qõ/Ô2,Uì5SÁ×"tŸnnçK:èfOJØ—ºæ6Ì¥p­9ÊbwnkpcFg˜âX:?@þA>\ü©áD~n8ãÌ&¬šá_Ž™ÒKÎÐÙØØÄDÃÝg|ªû¯\üw¼Õ`Þ ( O8Ô¡ãòÞ´@döTO@>!LëçúzØq»ÏfÞ=Y~3s[ÕëajÐAà-ÈÜÇå=ö^_x¡ž™• MÛœ÷nÓù½$¾Íý’˜¨ßfªp[¤ üˆLzY*÷ ‹¿þ™šéÀÂÊòÙÑIE:‡îNÈì¶ÞBO-ÔÌ÷zÍÌf_ÎL%5>::Ék›D:ÉOŠïœ}k4’­çOË.ûçè4óÜ/—Ÿ;Ö©À*G€ó¹ÇI«LQ-~i˜%ô5Q›|ÈP(B½ƒW÷ÊËc²ü¾Tî•)&ÊQ¸2uœÞ¾”u'8kØ"Ç‚ÉÃæ÷Eߺ*Ü‘IdÎ/BʸÀ7q§âN/A¾$­¡¼C{÷«k–»Æ_Ï2•Z[úyÍŠÈŸC~.Múœ3—ýhéÂ~Á•‡˜aÀ%ì*Ì+tÁ)Ô¼ˆÌ0ð d¡Óæ|æEÅ^…|UÞrr§ò¯±ÑQì(Q¸N^¾ÑI8Yè´9¿NRÀIÈbÍäu2œ†<­V'„úÉl¢5hÎ&·Iñëä‘wE'€‹å–þÙoõ’NV„”ò¸y%¥<®B^•VJš^;“žªns|Då ð7#Miج»„Jåë¶fmUšG)l­d~à™WÒ¼êëµå²^Ûæ5"bs ˜,´3˜Ïˆ¨8 ˜…œÝ…žMåç€yÈyeJ9\ÝÒKÅ.7(vUË4ð>äûñ¨eøòiµô¶E¨f.Ñt¶®¬Îé¬v»Ù²«^ž¿ƒü]öÔïbrR™!í§Èœ×’ˆJ˜CDEųå#*"Dt’ŽAÛõ˜%•t’QÊm Ôk2~¥Œå·ÛøŸžÕš£ýƒuºÀvS"uøòirsþ!rTs ÏhFn#—qOÞ¼s¢âlÖ½) CýLkk:g-–<qqòÜ.[Ûó^ûŠZ‡W0l ¤:噺åEêöŰKËw3 %ĸFÁhK •¼ð«¹{6‚Z–×ä9i^Æ'½\-vÚ»à‡“Ô3ÏÀ\€< Lêgº™xÐÝL¬—lKÕŽâgø2ádî>ÐË}aGñÙT³*2ÛŠ‰÷$ÃR„¹Km27–÷^Zû†«½7JÖ÷Žc–âkȯ•y—CkE怜€’Sè'ÏB›Œéô~ü…ƒ ƽÿ™(õ0ˆG0ž;÷µtBÃ7Z< I;âçñ죚}áCE½®§’¯kV±Qp\MÓñÐuÞ¡¹CI¾1Â!ÈCÒ$W>&êPJ•¬Ô†]MÿŽ„jA¯¦oz’‡FÙùE£â@F£šÍzËx'ýf“5§×Z"{Ê®@^‘®Ø·Ø—•úü9£ÑôO›Õ¼­ðü ¿+BæI†Ó ý—6©Oi°M}ÊÐ{[ÇlèvÕ4?y¦IÙ¤O±w²U”í£šNvcd¤•´“IÔ©ÙæFÅt~p÷öÓÒ7á7 IÈä,–$|¼d¾¯‘Ö½+~}¾•·Í b§¿ùjçóg~N߃¡?bõKsÊ9ºE®ìmfü§tÂØÍ®ÃMúˆæ ËϦÒ)°þhç²e:¡xÑX×зuW<7ù@ø¥½ú[Æ <Ÿ”›uš¿+BuNsÆi^³h”½ýj­<åw3‹çFw¼þn¶1w~ Ò„Lj%Yûhâ¼þ¯@øWJíCCëïè}Ljgnšk F¨AÖ¤ifÚú`{ÂQ¶3rSþ5hªKéüXÀ,šZ˜õ²Ì ˜ÉŸ¡„!?–®Ìí¯í¤Ø²"ÜEeB& $ý›¡^Ðý…T¿ü X2ùú%_pü'ËtžšC»fzžO(êÑAйSÖm7_‚S 6ªÎÂpÅÜïrYv‘ugi¯É…Ç÷ M(ç¶i’»ÿ«çÜ!«¾…„—ÓGñûVØO¯8 §æ¤ãÆ›ÛÕÜŒ6~“µY¿9y™ÑX„W ÉÜXúñnA¯qS2@ƒP]\y§ãÅYb²³“_…Ñ_eÂ;ï¨\„²*õZ£buTÚFBåd‹ÒGå÷0(¼âXìá5•0dq‰ª½O„­¹m¢Ö> ·€ëŽNÉÒ1Ñ“|ì—êQþŠþòVôÛVå?D òëñÍ5÷£ìõ8’«í?Aù„— _â­2}£cµ½«í+þ·¾!õ¶é蜛þeÆ»çéKÜý¤Mü‡˜z ‰Ô#ômüƒwn {K+Z^¶Jïþ˜ÆÙ 'ÄÌÒlÖ°wÔîj`ØæŠÈ+XjïZñ»†Uzw¯®¥úa´Ê¼<_vE¹Æ_[%ÓM$§­ÒºXÁÐVŒ¦±µ§Ôzc4Êâ?­­¶znßÙcêxo•б©c 5:áýÓ“Ùìôä­½åIö?_^}òzVŠÕ‘rC­'nôÁ³Ì&ÊÅK‘E½H9'”PCBá¬82AÁÎŒs‘sŽ;( þç™zœ©G¨gº?ß¼F[®¬5wy[)5íIç­=ÎdômåC…R6<¶jeÞž¬¬.¼1ºF”êÑê2µ`•«ºŽ5ÐU’l÷ÞŸkÚ#'‚Óæ_o;³á=¥µÐÐ ñ‡Ñ*­grj©#$4ˆFG2ÚøØT6;>1±·œI a[ó­'n§Tö¬²‰{5,XZY\œ *¨a%OXо¼<¸T3ŒŠ¡½{âüA¦â×@­?:µX°*VÙ w ¢†2†|†º†a?ÈhSõMÍð®åÝEm±Ÿ{íjÎÐnhOôR‰×sF«Ÿ<'[]ôœ–ך¸G=çQ6Õ¼¤û¬¢š„»±Ô:ÔÊ4ÿt)ƒLóOkž»sR-†˜Ú¨]õÙ\uühÀ,*›]h]¶ÐÊOûÂ{W¾ØLS«½£eÙå2å‰5ŠÚc³Bµ]u_ˆh¯kVÕi.Ó°y»¿²ZóÎÂÔ5·T·VëgŸZÍ¿œ¹23–òŽ¡Ñ*)t FEü“®huÔ3~g©#dÒ:œI×Ĩ3隟Ú[¾#†Ð­À.®Åþ¹g•MÜ£¡C¯šãP5Ô0ŽI×áöI—j^t–˜Ÿgj vÒµÀNº¼U<ÊÚæÿOÜÓROæºÆ ¼YY…xƒu-)Õ£Uè04×aiMÖZ¯oéµ°›CwGY¡Á@4ªâ¢ÕUÏØØSGH0:úSc£éŒ6–ÍŽÝÚcn1çŸÒßÚÚÊýäŒduÛé?î!}Ý™ùJFžv:ä?ŽŽ™c£aÜCöîE«ÅýkZ)>÷··Ü q[©% ÀR¬9ßñ^†í<4=cMØ ‰è¾¡þ0Qêa`l¤¸éÔÞ†hÅ7GG{µs#áMó‰ŸÓÕÎ X¡Ú«é/öG±]íÜ@w ƒ<&í!û„q TŽ>…Ùw¤.v¦ŠÜ¾€üBÉll\ìL{ÉTð¥HÝ'Š‹•± ‰;‚“ñD[jh2eÅÊ C,—­G’ưŸˆ2/oæÆ¦;m· ›FÙ°µ'Éž‘¹8 yXY0½ŸNµ…©/ìtQ¹LCNG?PqðdùƒùG›Çù׈ÉMà4äie qhÍ6 JÚA‘%l%$bMùDÅ÷0(WöÈÒù”pƒÓ&â‘l•%Óú¨W*¦öÂ,•¸³)nC=„”IïšÞ¨oZµÖ Â>ï®|†]ø(g#í¬¯flÔ Û6­ '¯ß&¼‰áIÈ'vÞÆö–U Z²ù-”Ax ò©øCÅŸfXÏè;Êôÿû T;!b“AsdúÝqúÝ~ïþ1Ñ Ö.µ¸Æý¯ß·×æ»…™ü[Û¨ÙùÆG³’Ÿ¯Vi+nþ¹UÐKù7F¹š_©—«¿ø~Þ|½”_qßÓL …ñɱé±éé©|µTΗõJÞ; šó›úTÐ1*èÁß5›úðúCk³—ÌUmɨ5½n)ŸCÍú´½aTÆgè(£ÍMôÁ¦цyŸ…W/^,¾ ².ÆãåKðõ”ø{ïw:€·ogq¨ÿàÛ¸³övt½ÅŠA81WK‡ˆ™Û0óó·¿ÿ®ô͵ٙ?ë}ýjuù‡BÝ7;÷ÇzëõEªÊG MUi/hAAA;Ͳ£“õ:lÝ,]¾¢Ø‘QdÄãÉÿKÌf¯j¯K†nž ­‚ß¹[à)ÙîJ¾nY¥©Å—r+ü¦ÝÆ=;ÙK²æn<*>Ç ü7׆M²¿Ix+B„G!á25¨èå ©Á7С?(ôǯ*þƒxvU#ägû! 5M`©×ô’©­†ï‡ö£ö ·…”J¨øñ(RI¼vøˆ0µ€*O@>ƒZ@„ƒãW ’A<ŠÔ2ùÈj¼/Ù/O-¿¬xi¡ºl–à¬ÁA(ð.ä» X7ë¥ W盄÷ ß‹_ôÌ2ˆGP¾–NèšT/Tà#Éfðú7åßÊårüI‰AA„ż\ëFÙ>¶-pj«'¼xÿ…*Ä’úÀ‹ðd¡"S—ÍiÝH4\YÈ7…,Øx· …¼°. h-³~ö8mV+¤’OF“-iÛ6—OÎq&<˜L¦-ž¸Ÿ~ù;…n±aëAn±íuDÚ¿ª§…ÙÎtñv´Ã²tŽ?Šûý¾Oœ´ú¡0ñvùöÃt'õŠf½§×†´Ñ®P¢Üƒû€!_n·öö:à¦çíY„#Àë¯+ëY¡o]/SSÒKäž[Â40à¢_ÙÙU²Z(BZ™Þ†|;­dw ßQX¬Y7Ê!Åbn”d1./Kx—A• /@¾°K*ù6ѼÞ•UN7i]GD%#À§›TÜ% ºé¦˜JÒÀo(UɤJÆ€S§âQÉMàt¢c—£ JŽy7S>ò.Ô˨çðäGÑO&N$Z>|òbüQ<ÿ˜A<Šjß·Ö6ÅëXR¤jì%fRMÀN?zZ`ÿüê÷Oath¹þƒj^?œ—^É< fT¦îE롤w• ·+#:€——WGåÊNCE„IÈIi5]Ô VÅqcšZÒDÓðÞ)Ó´’׈Ùð>äûÒ ¯«BëÝ7.à!£jÝgsï?ƒ"¼Y]Œppí£^j©Ñ9v6±«>ˆŠïaPΑ¥C'v1ˆG²Uî=176³%ã£AhU>/ŸüVM¯Vš{Ê¥èm·(´¶[x·pñÖàÛÒgDºÍ%«q¦ ½æMNÓ‘Y Tý='„iýL—[O±7ú(Zi¥úûmn)ñØ_Xi½ÐºÒ‡zœw¥w¡€mÜfªp[¤ jÞ °TîA¿ù35ÓÜä«ÈBÓè¾¬:µó*_ï Nƒ ÒI†|R„|çì[“ ‘l=ZvÙ?GûçÔÜmB-9œ‡Ì=NŠXå`Šjáßl"j“êE¨wðêá^™by,@^ï¼4nÀ§ø¨feê8­f—u'8kØ"§˜·žø¾‹Š–¢_™³À‹…¶±óMÜ©¸ÀKŶ䰟æºâ†Õšåž{ôé³Ìz}k¯YÙ!àsÈò‹ÀçèR@³èLö ®<0 û‚®fRa^¡ N¡æEd†W _‰Þ¼¨¸óÀ«¯ÊûCî Tþ5àuÈBû¼Âuòð™ˆNrÀ Èñè$œ„<¹K:™NCžV«“—ïDt2 |ùa<:¹\€,?^‹éäp²ÜÒ?û­^ÒÉê‚óz\¼RW!¯J+¥?M/àIOU·¹G>¢òøÈ¿‘¦4lÖ]B¥òu[³¶*Í­¶V2?p€YOõ.CVgD´=A¯mó±¹d†ƒ¨ˆŠÓ­ ­cïÙTv˜‡œW¦”ÃÕ-½T¬;!ˆZ¦÷!ßG-£ÀH«å`Æ]pPÍp²:§{°º)ª—çÀï ^W ¹úŽŒI¼®–¬¿‡ü½4“tÝÚ0Ü)‘»Œ4C;,ZWôN¥œ§z™e=UFT*‹Q=‹p r ‡n©¸ÀiÈb‘åŽâDú6Q¸¼ Y,ÛR`‚Æ‚^ÑÉCà#È*OÿvÑÉ=à"dùÓ¿ƒþ$ÝÎió¥’ÀRâóøò;i^”2Ç6(s$Þ):ÿ³¶ÜÏ?çÈÉ3ï©ßÅ$ä¤2CÚO‘9¯%•4P*§Ÿ%Qq#À,dùˆJ$©G¹»^r Ñ]/yH'9¥ÜJ½&ãWÊ8P~»ÿéY­¹[3L/ƒšÍ¿™HݾüFšÜœ¿kÝ#ÕÃ3š‘ÛÈeÜã8›uÈb¨Ÿiæ€ãµ¶QÏF\œƒ<·ËÖF\–€Ï í æ³6*nø²üð~gÌkZÄàð5ä×Ê”ÒG'ÌÉpB÷F†j†üQ/ð8äãÑk†Ùü§`3‰ÿ鑌p¯!"ƒÀ‹‰fš Ý7‰Êðäkñ¨æð:d±5ðöN#¢“ð&d±C|Æ_Šë4ãÀ€‹i£ÔLx²üÑý î|Å{ÿæ¥M·ñf‹×ɯYà÷ŧÂjöÒvŸ‘vÝ_0î‹Ç!ç­}Cj'mú+*ÞµŽaûh©Z'˜ê©žûtÛGÛ½ýÃ,I·àRCvÑF[jè.ZeÅvÄÄ®uÜÅvZ±q‘%w²º7¢bÑ$qÉ9j÷KE¥€…ÞÃJG“Ä`x ²ØvËÀ7ÞNá'ÛUlÓæ ©yzç ímàÓЄWÏC>/­¡CþFN-‹ ÀË ‰ü[ ‡Ã.+]ÇBªC2ÑÚLdb– ¯}E­Ã+6RòLÝò"uûâ@Ø¥å»b\£`´¥†Ž‚ÊŠ ^øÕÜ=›A-Ëkòœ4¯ã“^®– ;í¥èä$5阋„IýL7º›‰éòvU;Š'ñåIèûxB`„ôr_ØQ|6Õ¬ŠÌ¶âIæ™h¡¤­^Êh“¹±ì¸÷ÒÚ7\í½Q²¶¸w³_·P‘w9´VôrÝ”<„~2ÚdLßPŸû†(õ0ˆG0žüZ:¡á½ = I;âçq 죚}áCE½®§’¯kV±Qp\MÓñÐQü·±Ý±ÛŒ I“\ýü™¨C)U²6Rv5ý;ª½š¾éIeçŠj6ëU,ãôsjeYN@¿!P³;¨ á*dùmߌЋVš™JµÁì+ö-,Ei)wÿ9,ç›z±hÒ?ÔK­krÒ3Ü•c®Vr«ö%TìÛøôSŸ?g4šÜj³š·ÑŸ¿ùï‚!“.P’á\C_©Oi­u'½ŽšÅí…eýSIߘLóWƒI2*ù>Šýô†cEþ[6Á®f›ÓùÁ=;@KOÜ„gA’9™"IøxÉ|_£v÷ÄøÛñ>¨ÜoþËDýÍWGŸ?ósz„þˆØ/Í)åèöÑ‚Ÿÿ«C¡Ž›3Öu'Bå¦Ë˜{œY¶Ï3Mèu©Ü¬hŸŸ«y¥}~ÆiP³h”½Íd­¬ew§‰çv¼›nzVî <iBu·×Í4q¤NkÔvZd5.8zøÉ2/åL±ê5Ókk!'ŤJcó%ËJóµs£êĆ+æ~—ËúÁFÖ 6Òž„-¹ÚAÒP‚î' ÁC'¼>Šç{d?½â(œš“NnnWs3Úø Än³~sò2]Bc2)½dÇx*è5nJO@ƒPÝ0p§cš,1Ùقɯôºaô—A™‰yÕÍI­J½Ö¨„X•ö4¡r‚Ã?Ñ¢ò{ž€¯¹¬ù‹!sMª¶ŸÅ2â&›‚?C­}”›‚Ÿ’¥ó=ÉÇ~©å/ð-a¯m‘ÎùC´>×¹<×\‚;Ñ‘}Zrî,€0 9)²HÓ±ׇ¸ÿ[ߢzÛ§~òéù…Œ¶d”Þë…MíéÃŒöÂ,•Œšöè9òQs/|QF˜šˆÔ,ôÝ/X6+ëFÍKÖJ¡^ÙQ³¹¥o3 hÃÞ¶FÎ;°ÔÞµâw «ô2O]ƒIõÄhõ–~j5jnÎÙuíaÃv<'¿¦-¬ŠU6 Új]¯›vÝ,Ø{Jm¡é_£Qÿ1¶hµÖ3~g©ã½U*ƦŽý©ñôÞr#ûŸ/¯¾ ù =+Å€:Hù‘Ö·;zé™cå¥ȃ^$ ’ ^¡†„Â92$Âs;óO=F*îÁŸøŸgêq^¤¡îèþ¼½]®Ö-g˜Ð–›ÀÛJÑ XžÐBe0Š: #f}›†š·•:Àýت•y{²²ºðêQªF«ËÔ‚U®6hÔwßp´Æ'*x¤×umÞùõ¶3ÞSZ ¢Ñ<­Òz&§ö˜:BâhÔq$£Me³ã{˙İ8ßzâvJ¯=«lâ ޲éS%cƒïPMÂK/Å µ²§>]Ê {êäO厨CLm†Djê 6W­² d³ VÅLêôæt¡•sí…wdq±u…ã;ZNX.Sî3£¨=6+TÛUwUO{]³ªNs™†ÍÛý•Õš7–P×ÜRÝ6Z­Ÿe¼ƒ^:ñ†Ñ*)4tˆFEü¡C´:â_JˆZ!¡C4êpB‡‰Q't˜ŸÚ[¾#†Ð­ÀPë‰Û­xVÙÄ=:ôâþUɨÙǶ++ §š×¯®>}•@ÜÏ3uP;™YZ5ÝQ}ݪ•%ݻڮ¹Õ ÚÕ7õºÿRîpï³[7kew«]¾ÆÛ•UŠ7PךRÝ0Z¥1¡€¼9Ažéüà¿fà¢ÕUhD¦ø#‚hUÕs‡7"ˆZ!A4ê8’Kg´±lvlto¹"¶»¸˜ðƳÊ&îÕˆ@Í¡Ÿ·¨áÛD<Áá6õ ú'~æEß.¼…©ø5P똩£æ­NSn2wAàÉ‚;Þ?™_èºzÀÛ‘•Uˆ7P×’R0Z…3±@óý½k°Öë[z-ì~ÌÝQVh0ªøƒhuÕãLxö–:B‚hÔÑŸE4pk¹Åœ}kk+÷“3’Õm§ÿ¸GÑõšÓ¡JFþ£ilå?:S¿b¨øÓ âk€à}G™þ?¢Ú › š#ÓïŽÓïö{tð‰V°v©Å5î‡xý¾½6ß-ÌäßÚFÍÎ0>š•ü|µJ[ÌóÏ­‚^Ê¿1ÊÕüJ½\ýÅ÷óæë¥üŠûžf²P(ŒOŽMMOOå«¥r¾¬WòÞ¹ëœßÔ ‚ŽQAþ®ÙÔÿ€×É6{É\Õ–ŒŠQÓëF‘vÔ¬OÛFe|F+ZZŪkFѬÓ›NDæ}^½x±ø2ȺÃÞ¸êkÚ×Sâï½ßèÞ¾yœ½í}xðmÜÙ{;ºÞbʼn œ˜«¥CÄÌm˜ù¿y“ÍÿgÿámvæOÀz_¿Z]þ¡P÷ÍÎý±ÞúC}í…½V©Ê¥¦&´—³  œVÙÑÇz>¶n–Œ._QìÈ&² âñmäÿ-æ³Wµ×%C· Ï‚‹VÁ ït$½ÒVòuË*ýˆç·ì0îÙÉ^’5wãQñ9ñÐM½Ä9Åþ&á­|D„RÈÄ ¢—ƒ&ß@ „G!_!T|?ƒxvS!ädBj™ÀR®é%SZ ß-ìOæ%‰K#Tü1ñ(ÒÈaσ„ï~ÓÊhâ¾ÈÃȵrš <ùDüZ¡âÄ£H+}ÐJ¡ú>=D-¡ŠƒhžC¢Íé$<ˆ¶Ø'ÜRj¡ç$ƒx©eÁ5Í‚öÜØ°47<¡U±÷%«ðÁ])Cn»Y8+Ô >…üT¡>ëf½4õB‡„~rgñ듊Î A}žùZ:¡«†‡‚Éf9ævwJ@—Ëåø“¡†~Ü?Yl„kœ>”ícÛZ §²zÁoWºÇ!vtÍCØYh,¤Ôeó`7Bǃ…üepà¿æ%À )xuôì§=)nk!§€§!Ÿ–&r@Ó>e¸¹07`Hr™ÖÜ„’Ú¬VH%Ÿ,Œ&3ZÒ¶m/ŤãLx0™Ló“gbÓf>´iiòšÖ<¡áòߨY*±¤ã"4Ïä¾õØç¡$ÍÚVrŽòóBƃJòÉhÎì¼â7Zšm‹Nø’P4õ ýã†HM€å(AÊ5v¸É0Á7ýÉ:þá 7Ùe؇?Æ›îµáïlœPýð·¿Û<¥ £ãÀ“…†!ÞñyWôÞ"¾ñã‹g ŸÙ¥ñï4‚ðg7þaÂ=<þ5B-±ûãsZåç2þMÂ]ÿ˜¼Ù»;þ1™ÞåÆ¿%‚†­o-BY²ãû)÷ÁETÛÇÑêó]F‡^Óeâ(`ß'NZC oÅG<‚Àþ6:'õŠf½§MŽt,¨P¢{ö/B¾(ÜnQ“{=oÏ".#Àë¯+ëY¡{Ć­œ)È)鎵_³j"JI3ÅnR&)pÒÊð6äÛñh% ¼ùŽÂbá±Rì>`ÀMqyY*þ.ƒxâ¦1ŒðQÝ‹0ªœ¢Uzëáô'דJ½+tò'Ö5÷bõæMUœ­E´üå–!ÈCÑ›¬–hF·A»}ã²-ø‰›Æe´€Ñ, tÛÆ, ‹%ìƒÜ'l½ýmŒ’t ¥}ë¸Ö°bF³* |ûÍëƒ]9§0D )*ï`D\¦€w «B#*.œ,?*ô„Nɺ©ä.ðä{ UB˼*)F±'D%#^\T·‡ÿHùzá1ÈboÃzɘJNÏC>J€ _Ø%•| ¼Yå܆–ÑDTâ?1Îm¨˜K@us1•¤7 ßPª’ !•Œ§ OÅ£’›ÀéDÇ ØÆ*ÿð6d¡y]¨J&¹Ur%á„1Ž%W¼ ¸¨p3h†S#T|?ƒÂ›AùæI¦öÇ ‹`;jÏkTüƒxâ¦q-àc4ó‡^,Õs’»†>q ÖÑ+j!.©í¤Äæ ×ð=Â3ÅÞ¬¶^ñºbs ÈŒ‚Q»*î,ð ä+»0à^ƒ _Û)+RÊAﵜˆN²ÀqÈãñèä:pòDüdOÔîýš§?§ …9r~•ŠŸfOÜ4®£|ŒÆ½ï+qҢؼ—A¹÷Eít.—ô Z²jE£Ö¼’›~S·´ÏFÍ Û¼Y(œç3åFxòÍømˆŠÏ0ˆ'ni´€m€r÷pR»&”_¨?ÔFé-u6o?w,ø½¡éÕjÉ4Šô}Z3l³ØÐK¶fVÉ _ò¶/‘?|ù‘´šO4“4 .Ë2†/y"'ð€Rs ïàN|Î5ÈZôƒ;7¼ ù²´–DÞÞƒ$ð*ä« ã`oKˆZ2ÀqÈ1Ä\TÜ5àD¢{)P o7&“À[o)ì/þ+^Å"z¢W ³‘ ÿÀŸƒa*þƒx¢Ž n0µ„<ÿÐMÅŸdPøÜ\`©}kmo°;vLQµ³ Ù°Aª ¨øñvËö¥ n:ô‚óƒjNšœ—Þ¨•‡Šò ÙD©ç’e÷Ä$·÷":€—! »|Þ‹Š;•h½Œ=•Øq3± šÎk«R×ÍŠ;#rÂGÃ;?Ê2­à]ÈòÛvn8¶C¬ ­s®žÖ\£²Œõu³`RoçNF6 ƒ"ô]£ºyÜÁµz©¤ÆÊK쪢â{”óAßÈÒ¡ðìƒx$[åÑ—NQ×¼SÔÖe4OQóÖd:%|Y~êtý€ŽäüðƒöÁ¬Ý TõŠQÒÊŽÇ(ñwIÐ#dÖþu£kEÃ.ÔÌj½™l¬CåXÛÍŽ0ã÷Q®# ÊÒ¡µÁ>Ûr=G™%tÀ£©C/0ÆW“·`„ê^MÞÖLÛíJð n¡an&/scÓ¨e³%ã£QâU$±î>‚,ïoÕôjÕ¨qÇR·Ñ€„‡!–²«À˜J0s8±^ƒ,ôÊ&ĺdïÊNLÏ/BÚhø—¯CŽa» ×dÖ¸%í•ÿ핟ªÙ.šŒhuAÌRçË—ã±ÔC³ -@;\÷!ßWfªcÀ§Õ¥Œéjª7Ï ËgŒ3ÕçÀ_DãS‰YjøäŸâô©D õ—Àß@þ2C}üùC<†úX‚\’6Ôƒ÷23Æ-kkÑëËwBÆúÏ€ÿò?ÓX_¾`üïÿ)äªÌX·ù¯â1Vø/ ÿ ycÍioøß?‡ ü×ÿµ4—£eݬ¸Á=ÿ«Ç;ž±»(7Q7/#.'g!ŸÞP¨¸~à9È礕3êÎËÜÚtrG3+uƒnÿ+mÓTÌ}ímÕÊ´…ã}£®™u^“"¶çO ?‘f=ë.ëECÓ?êfI_2(e.±u*QÓìª^0šSJ瓊UÉfýKªy«ÀÊLÌBž•®Â\Á*¿7+n¾_;§=vÈ–­š±3pF³ Ã}0mnBà^ » æ„sç¤kq„¨:tŒ"÷2Ø= dr–)êF‡ÖŠFݱ ÷QÓ-%îæßà Aßvüké„úµûP„GD"ÉãTâ£õ õºžJ¾®YÅF!™ÑšwSÞþœLbOpK’|øù³v/«9”R%k#µaWÓ¿#¡ZЫ雞ä¡Qv~Ѩ8Ѩf³^ÅøS®Ìƒ<áCÈ¥+rÂ]wײœpC . ÓßÑjFÕm+C›¯¥’^±®Ûï"¸ /€$¡Ô›­„Ǽ̡Ÿ?gülE³ÍLEî>¹Y&Oiv”¿¡™·%AwÖ‰¾9qºh¬›C+8ô¬2ÛÂþ ÆÍuü¥^tpM¹ñƒVŸôrµd8#¯^vâ [óÖ)ùÛõ1ø=VÊõqy›‘—ð[1õ)­5óËFd$K¨ÀÒΊIVæ[»Q.ëµm×¼ÝjÍj^ýø>+B&a’$Ôcˆ!™×ÞšmnTLçך놇Ò]EBf“±$Ýã%ó}´T&Vü­øTž6ÿ‹’´.’×õÞùÊ·“¬º™™Jì¬-ûé%R/ñiÚbNÂýKv ýÝO—v!”z²}¥‹=¼gdßGq/e‹– ²©øå‚ìö´XÜt^%¼‰»x[å|º¼¶j|ªÖ~U3ìF©nÏÖŠg²ë·îKÖ_ÿv¥HÑîÌŒYqfÇõ?”ú`lÏ&GÆ’™f<2žLûw´,›¥±[ïñS—ì×]/k} µ2Éù*Kß踬µoͫʊÿ-÷î¨ÞvoèÞ„§-i©ñѱ[ü'ïs ÿs"üCŸ–p—€¿,¡µšUc¶Àtì4™Ñ浆ã=·éµ¹^u¢X½°™Û­J–Ú»Vü®aÕƒÖ¯Ôµ¦TŒV©ÃO­-ŸÑRç*­á8Ú,8?®Zëõ-½Æ›À'ZeXs¦›±©ŠÿM_´ºê¹=¾ÇÔñÞ*e4ŽFGRéŒ6–ÍŽßÚ[>dÿóåÕ7!Á½¯Q­8×zUàÈšó£f8!nPdôʳÅÄw ‰Èˆ¾Ñ~»¤|»¥墥£²tVÞ†åwå©Ü=µšðö^‚,ä‡xõ»§Va/„Èè&~¤ã/÷‡ÍL´ÊÚ"äØ*ŒŸpòð. TT¾¼ YèlB4»§ˆÖmàä¹x,Ut÷Qͧ §JêøË)à<äùxL5 |ù¡Såõ©Tþðd± ²Q잢Bg€»âS¹wOÓ~ ZŸJ±£O}ã©ÓÅÝô©T¾ŒÎ§Šîœ"V·€÷’»;cÙ9ELsÀIÈÂÉ`:þr øòƒx 5 œƒ<'m¨Þ6?^¯Jæ!‹½ù¢±>|Æm¬ož'%ܯúð™ã~ Z¯J±£W}ë©ÓEu^5¥é¥÷†Yw·>•ô:]fS´ [«Xu­¬0°íŽ×œ‰¥\‚¼$Ͷ׻ô–—Ì÷h®ï;n-U¤±Ck¶aè%Û (y¥½îÒ; *¾‡A<‚Î¥G–Î ï,“x$[e`É´>ꕊ©¹«ö¼¤~õ@Pf$½kz£¾iÕBZƒ ûåîÚÈ/a>ÊÙHûÀÓW36j†m7”~5¯_%¼e“Õå8´öÁØÞ²jA«¦¿‚2OA>¿b¨øÓ âk€àõÐŽ2ýÿÖP턈MÒ7ÚWéwÇéwû½?:øGð#Õ^jqû!^¿o¯Íë…™ü[Û¨ÙùÆG³’Ÿ¯Véu=ÿÜ*è¥ü£\ͯÔËÕ_|?o¾^ʯ¸ïJ' …ÂøäØôØôôT¾Z*çËz%ï [~KÿÊ9Få<ø»fKÿ^A^k3—ÌUÍ= ¯×"m¨®YŸ¶7ŒÊøŒ3L»ƒ´QtFo:ôêaÎgáÕ‹‹/ƒŒ‹q8A÷¥ùjJü½÷»áÊÛ7³HÁ|°=tc?ìíèy‹'Ò1+-"fnÃÌÿ»ÿá‡ÿéÅÿm´ÍÌzü ½~µºüC¡î[ûc½õ‡úÚ {«R“OrÎMui/lAAa;-³£Ÿõ:ýlݤkÙC¿¢Ø ‘adÄãÊÿGÌf¯j¯K†î„˜®ïغN[¦VòuË*ýˆþÃoÞ=`ܳ“½$kîÆ£âs â 8¶¶Œ2Œ×÷‹+x}“ðâoðý^ùy…Le*z9h*ó 4A°37.­Pñƒ âÙu­Ï=<Y¨yK=¸¦—L=èµâ~¨b"0ÑX\j¡âO2Ø–hLR-»¿÷ Qɨ°r *anÚ Ês—J¨øñ(RÉ¿§t¹#:D/¡‹ƒ0ÙC¢&Ë©D<˜Ìp—^è9Å ÕzÙ(óº°^è¢7f½0«;»©—^èÂGµzÁ¾¿…Öyˆ^ö«ÅæÖ?NÂLú@÷è P™¾êf½Ôí‚`€ìØq鋊Ï0Ø–›S_§¿–Nè®ëÃàâc[fGN>=‰à4Ù_ CÚª¼A’9uÙ)ÜЉDsaÈ•…ú|ðäb­lÔ7­ E’>,aÀú ñö¤¸Í¥Ï3:Ï@>#M䀦}â? ÈÄe£I.9MóÔà]¯ãØ]óÖø±¦4.rk<“ ™çQl~Æ~:­itå¦G™nŽt8Òm…Ð y.Œ{0áÁ¤yupò´4yMóO‚yüýÓ`Þ-*4™ð•½þU’æAMËåB_…’ÄŽXN¶ëòŸó9ŽÂ { ÷D7†ò`¦á‰€—»:âPy¨~ÄÙßmÚÑ…Ñ à)ÈBžŸwÈ„jOC>-o·üC8< ù¬4±!‡ ô>C0üü†ÆôöòsÔµÄ.9ÌùµÝrΡpÂÝrΣl÷ÒC©á£rº¬¨tatësª!T7ä¦TN7â7_âq8yHáREÃÖ7‚–*£î~jqsýªnfßÂÖ}Ä#ØkdéÐùù£ âQ܉÷}â¤E; zl»›Ž³ÿn£sR—¾"ƒˆõ/B¾(ÜnííuÀÍIÄÛ³ˆË0à¾oé·!/1O*Ñqß·`Ǻ¬9±YaS³7­F©HÙépÇZ£äjMçµt¢•.C^–¦9UÓ+E«¬ëëŽ9Ùt…—®m™õM³âÙö~QÐØ†<q1à:MÙ7jIθ­ÈÜÎCžÞÚ¨¸iàCÈãwãTüƒx$iœ!c‘öMÃ0B&„Vg.΄›Û\†Ñõ““Ñ› w8yDÞ\x¯£â¯0ˆGYíC®»ÄXB@ª¸: AF4aa#ñ¯æv9á9„G! Åa‰ <(‚·¬™àiÈbS‡À 6­5^gB„.¯B²k>gBÅ^ƒ,oÇüã¨üëÀd±ˆ+ðŒ‘¿>&¢•ŸŠ›>,ïóù3\PùËÀ§Å¼oX/áŽhÆ× ¸Ë/*•\ñ*àbÀõ±õ*¿x ²Ð ™P•ðGFÄå4ð<äóñ¨dxò…]RÉ·À‹U.aÓ+j•Œc\¦â.Õ-a‹©$ ¸ƒOJ&…T2œ‚,´øÌ¯’›ÀiÈB“ÉMpÌ»Oå‘w3ïd‚¸Ü>J4¯z21’hùp&ÿ}ÜQ<ÿ˜A^¿Bl.ý·–B+ó|~…Š; ¼Yh%^ÒÕ_ƒ _Û)+RÊAoÏ•ˆN²ÀqÈãñèä:pò„¼gáuïTü$ƒx¢vï×<ý¹(÷vwGíyý*?Í ž¸i\G ø¨Î½&B•S´êAÒ(ìJMÛG™ÁõF­¾iÔ4½¶áœ·sœÍE¼Ž‡!Go³Ì…% wfr ™A<Šjß·ÖTK@ÙþÍ#iiC•j‚4¬ÜG<‚ý¥=âà¦Ã>”<ùÆ~zr^zSs:QòdiðÛïÎ0î—è\^†¬Î‚CG\*î0 9)­¦‹ZÁª83« ­vÓÚ7®²I@GÌF€÷!ß—f8N¬t{»\­[u³Ðyé›k_­{žlî\uL7„Ú—PB\û¨—Aõ/œË&vÕQñ= î²;¢w$ÇÄ#Ù*Wp€»Óz˜»[8™æ¡3BfÑV‘êÓµ’®½£7ȼn'!« ŠC. ¡â®§ ËÅGZ7êðZ™ÎAž“&tȻׇÛËŒÂB™3øŠ´rt­hØ…šY­7Óýuô**q,±«¾†ŠïaPÎ×ü…,òö} ¶ÝU!;£ïz&4¾ ét/Pj__|1« ì‡,´¶£ îÑUåzóÚK·3ÃãºbùW ê¼Ú$æÇ€Ë—¥k0[ÕkzÙ¨¸ÜË©ŒùÉ(²ÛÇÛ6”3×ñVa O8 yVº Cz¡`ÕŠnˆg¹Qž;¬à°%/GfÁ#èeNŽþuxý…ëðÌõÔeã“i×íT2çÝ—+4jδ“é´Öö+ºjµblåŒÊÇTúnÛUz§î¯*¥mºOÏî¼P/£ô¦QüÑùdzm·yÙÞ¹wO–ßÌÜÍx8ù>3¿²ø|æö-|.zýÞ4”й_'Ñ7޶ã®ß[pйœòlbìŽS)úÿäÝæUËôã­4§™0o€ÜšÜ©IÍ39íÕ{§Ý|…¶ã,¶µ÷¯ ³Üæ ÏIsëÇ /k('¥[P6¡œûU¹âOlNýcB/¾ùÆ"*îð[ÈßJë§GK (å"ðäKêâ±ÿu¦¿qo ãÐÉðdùþ|.MCOJÝ_ÎmêÜ'±º |ù¡4»áT¡fÙvÖ6ÜèE/¥@ÅJ®÷ážÜöŒÀÅaÈÃñáwP´jæ ó¥’› Á‰÷l»Q64gà0+õšîº-å)vG :®»¾eïU›·"3 O¸YþD×C'šÓôRÉÚríq“B?Ëþ`uºÔ¬o;æJV¡¹õ²µõb­êÔÎ*Úéœ6Ï]»à~Æ»O‰ñÞ!öî’ž{GmນñѨmk¶– ¯>q÷=P¾·Ó¶$鳘qžû]-ÌCÎ+Ô_—[«šä…òÏã~à·…Þ9þå^à(äÑèmzÉS°‹þ¶/¡¨|G+¥;jM<œ…,¾»Å¿™rzmÓùð·›õzÕžÉçVæ_æV²ÕšE›ÏsVm#ïG³#cùÛµê‡ß:‚¸ò­F$¥ŠÜ¾‚üJI0zhêápez­ó½À#)7¿¢ê_¨eØ¥RT±×L_‹TÐ}º¹/é ›=)a\êšÛü1—zÀµæ(‹Ý™Ú aŠw@béüùi:ó?5œ@Õ gœ©„U3œ¨U§@;¥—œ¡³±±Iî‡ftlÁøä.¡¹q¥¨×¸7³=ñÌÑEùE\ÿÓÎ0eè5o`Z 2[ÂOü©­)œrÜî³oƒÝÔ]ÒvC/I.PƒoAæÎ<÷•Ë;Lâ ½ð̬T¬ŠÛã¼Ív)gR<ÅbõÛLn‹T¡ƒß¢ÅÛ{X*÷ ‹%Rú›éÀÂÊòÙÑIEÊäžcsÒEo¡§jæ{½ff³/ g¦’äµM"dÈ'EÈËϾYÉÖó§e—½¿\\~îØ¥¤=>ƒ ž‡|>{<–ú¥a– ÓÖD,‘è^`h_¡ÝùÒ&§Iðø²ØVÖ Èù(®J9÷ =ƒ0 9ý¼”Š»ÌAÎIkæ‚f”«%kÛöÂÁ²5j¶îüŠ;²%^yàÈò{.¹‹šÞ!Ýv3JR\¸Z×ë:÷"çsôCÂKå÷sq»Ù(ÚG5‹œÇßlÒE'ÎwI wÎK0yÙü¾‹Šzœà¡."sxr ÿ¨¸ÀKå %ïLÇü—=n. M–ÙdÚ:WËkVDvø²ü6¥sÕšõÑ,:Ý3HÁE¬W0)Bæ^/•æõð¯y™aà•DóÒ‚¨Í‹Š;¼ Yþ²þÌLTþ5 Ÿ•H(a¸N^¾ÑI8Yh_¿NRÀIÈB§¿èd 8 yZ­Nq»a"3 |ùa<:¹\€,PAL'€‹åÞ"±ßê%¬.)å9pòJ8é~ç©ÞÅ4ä´:#*•EŒˆÈŒ§ ÇgšŠ»œ†,Yî(N¤o…[À»ï*SË7½&¢“‡ÀGÅ£“{ÀEÈò ¯ýIºÓèx1ÿÙTâóøò;i^tKŒmÐig¼žöŽ SÈççÑãä¹â©ßÅ$ä¤2CÚO‘9¯%•409†ˆŠŠf!ËGT4Dˆè$ƒ,¶*0µ?é$'¢”Û@©7®üJÊïÜò?=«5s+i†éeÕµù¯ &R÷o ¿‘&7矒÷H5ÇðŒfä6r÷Ðó;'*ÎfÝw0êgšyy­mÕ³ç Ïí²µ—%à3È1œS¥âæÏ!Ë/ïw&Á¼¦E ^$Z‘â )¥Ò–’á„n³ Õ Ùy/ð8äãÑkæ “P~_’ÿ鑌p¯!"ƒÀ‹Õ݈#4n•à5È×âQÍ%àõDóJyFD')àMÈ7Õu)B¬ÓŒïBŠÖù5“Þƒ,¾KÊÿô‚;_ñÞ¿y‰ül¼ÙâurÄkø=dñ©°šmÙÝg¤]7¬¼õŒÆÅãóV‡¾!µ);ýïZǰ-ÙT­LõNˆTÏ}ºmÉîÞþa–¤Œ[p©!²£-5tC¶²b;bb×:îbg¶Ø¸È’»YÝQ±h’¸ä€ãÇ£w¿T\ 8Yþª‘h’LoAÛ¹xxËÛtþd»Jƒ‚mÚü$yÿ^à9ÈB{ø4ô½WÏC>/­¡CþFN-‹ ÀË ‰û‡]V»Ž…T‡$09ûXxí+j^Á°ê”gê–©ÛÂ.-ßÍ€”ã£-5tTVlð¯ææÓjY^s‰æ%’¼ŒOîžR;íÝJÉIêg`.@&õ3Ý—>覌ÒK¶¥Í©Ù¢þ_&œ€Ì=Âz¹/lQ?›jVEf¯:ñždøOŠðï w)£Mz)§(ô W{o”¬-îÇ,Å×_KSäÞqü:jv÷Ïcí.êrRúhöCîWÔí¯n”ÃúDhGTNÏB>}GÅžƒ,¶3–ý´׈ñç€%çIÈIeš9âmω*( œ€ÃÖP*n8 Y~kh*ãÞñAN°¹Åš<ΆùÑðNcxw|ðöub9\ƒ¼&ÍöEÀ^u‘34c(èÞ©]«oYY»nTý=–^¼ðNôbsPòKÏŽ\dOHVéŠ{Ú%ëvјs&Ž:ª–-”æW`Gx²Ð†òŸs¤2ðnù壙QUg©-¯!sï‘ SN¼3+ŲaþdÔÜcÜGމñc†ùcæ´z¸£–Çä%e~óÐZÑ»d> äqôµ„DàAß oøqÂÁ€VᎉˆRƒx‡¹^Y:¿öþHñȆht(¬y‹'¥?CsÿY"’»UªbGˆÍ)`Œw«PqÇ€êîV9E1@Ѩ:C^7Š9í­Í=;&FyÈyej<¸Gd¦w!ÇðΊÞƒ,ÿÎð°†;!x;5ј.B–N9!K«Wë%³¾Í=$üè©ÚÅSO)ÔOŪéç×(ê7 •QngKÅ÷0(çûS_K'´·è ïÎuñDÕ,¡<ÞC%>ªQVÔëz*ùºf'„ô×(gµ¤&CÓg†Ò,€¡Y“¦9ûù3…Æ¥TÉÚHmØÕ´ö;ÄjAwä›}É(»¿lT!Ã]‡"xÎB–ßxSkþGî4±×êÌÀœ&÷n]hu, ™;Æ%?2B›1ŠY©6˜sW8Öä/4¥Ü)$M“I°œoêÅ¢é¹ÁæK_;=Ã]¹uTˆy¯&Y¹oA?õùsF£ÔQ€7žò7ÿX~ Y>Y`èë"õ) ¶)gŽïi`¶•î<ã^[5›|²0æÌ2¹ë³‰:.C^ÞŸg¢lÕø¼ŽYûÉÕØkÖ5Ûܨ˜ÎîaÚ+ÂMø'$”»4‡ýôxÉ|_#Cðv°ðëó¨|hþû:ú›{=?æçTB¹ ûiÎÑ-îßíÐfFÃm–´xäÞ–ÂMº ¢„9Èò¯GÒ)°þhçüdÖLÎhþæ­€áäy§É¨ÜóI¹YQ§i¡:§9ã´¥Y4ÊÞ‚fë¢ãŒ{”Ås£;6¿7‡&î TAš¹·OÖë4q<^ÿÏQBu^_ƒBvô>æ’"nš5P#Ôª"ÌL[l»%S®3Ú I˜,tîhå{–Â]…:h2·#JVa˜±Ø¦Ìâf_n€á0äai–·¿Ö§à|°GùÊ„Ìͪ’ôï‡:m÷ªÝȈއ|_ºüd™N”æ_ŠF¾[(HûR„ ­Rîx𛸩QUgŽg¸bîw¹¬?'ͺ3Ò´§á‘s¤ åZ"ÙÿÕ+6!»Ö>;Oƒx$ÛóŠ£pjNzq¹¹]ÍÍhã70ÉŸõ›“—éoÑX„ò¯›q°žô7¥¿ Buað޳d‰ÉÎL~eFÿ/A™ðä;"ôK=´V´*õZ£buTÚï*ç†üsT*¿‡A< ¦+^4bVÖšA“Zé^XXôÖ‹B3ñ„2ý÷ÐJ„ê¦ÊWÿ ¨j Uñݯ £ê4œ»ŒèÈëˆËv³Éª@ÿg¨¡¿îþkyUø F¨«ôºÖïAí÷JUÁßÇþ€²}TÓ×CûXsW û÷ÁîßWÚdž¼>¶X®–Þ>kõ±YÁöOAŒpò4ÉzÍí\eo‘Þí;NçÒ7š?f´±™q·oá—[N-œßŽÎŒñ×âæ„ ?¯Ek•>Àq fnÓnÑö•ÑÆ}Oa5êÕ†ÀÒÜæÿÒZÜÚY ÐÇŒCú/Úô2>sçNšVøÏÀ˜ðdùÄý {ßéz¶ŸÑŒõugNN£K}ËÚÒ·í$óþÄù•»»M Oü‡`OÈÜ'Y“µÔ'0Ûê†òúÀ…ðäò#…»ìÊhV­hÔœÆo޵ü4ÿ F¨%$FŠÀb¯ù{½ŠÖQÜÿ2K öÞšŠïaP<¤IYZ–Μðæ>âl·ãòv;¶íXtþmVìÜ«ØÊè¯æ Õÿz'Î`LßèØ‡Ø‡}ˆ+þ·¾ ÚRv²y'è ÷”[iî]DýÛ×£†^è…gf¥bU´§KíݦYwú€ûÊjŠß•R-†˜Ú ‰Ô&Ô•n®:~4`ý)›]°*ŽW­Ó‘­…Öí¬/¼Í×­·Vîë,m¹L)|Œ¢öجPmW½œ2¯kVÕi.Óà~¹¥¬Ö¼ëWêš[ªÛF«õ³O­FV®š/µÜ±”w VI¡ch4*â_®ŠVG=ãwö˜:B–«¢QÇ‘Œ61:•ÍNŒOí-ßCèÀV`¨õÄíƒþµg•MÜ£¡C/²mIF ÿjH¸o±N3ɶ#Ýw°@äÏ3•P;ïúå|Ûø¾Ðʇ1Ú÷~¤à -ÏÝóÚbóì÷›-+›]uSãÑö_ñ½/Êêɨk`©®­ž…Ñ*)4<ˆFEüáA´:úfl|zé#$>ˆF‡3Ú¸Lí-×CtÀV`þsÏ(›¸G£ƒCÞšÂä{Éðà¿@ÿ‹„Ä]áAûšìqvA`s ñ¾Àð¿ l5AÞè*³¹åͦaÕ¶Ý€€<œ €wüPF™oüP×Rì§üIK£áqþ¥±¥ýª}˜Ñæ zÑ(;«:½;‹V;1øQ¶Zdû*lêÕœ6ÍËæãõ*A>¿Wÿߢh÷¨Wïõ¼ú¨¤Sÿ/QCÂݘóípê£üNý¿Dßóù« 1ym³sa¸ÐZneB÷“rþŒÎ»„L+š4?ôR ЀÐù÷xÝŽ²*óÎüÔµµTVåG™[ßSš ®£Ñ ÿt/ZÅôLÞÞcê™íE£ïXÃí±[Ùìí‰Û{ËgΰØÅ)ßÿÎ3Ì&îÙààÕ«ç3£²»pþ jøo»³ çÌ;Ëéb5³¸ahO_¸+Â;qþ Ìů…Z·4´‡– ÜÌnÙU¬S4ðÚ½ …¶ÇïVøu-Ç~Ê?Œ†Gß‹å7Úk‘‰_´êˆÁ›²ØEoú_yý©‰{Õ›ª¹kïߢ†ÿ67=ܦžAÿ¢½yÑãaÿ¦â×@­']`=ië¹»»æÉ‚ë@ŸÌ/tÝŠÃÛ‘•Uˆw*¥®%¥:`´ f^¢5ˆÑa1k½¾¥×Œ=¥¬ÐA0UñÏ®¢ÕUÏØØSGÈì*uô§ÆF)mT6;vk¹ÅœôÖÖVî'g$«ÛNÿqo€ÖkN‡*ù¦±•ÿ8:6fކqI¬­÷¯5j¥øÜßÞrÿ1Äql¤â¸ÀR¬9ßñNi%Dú=cMü× ‰è¾¡þb7¢Ôà ÁÙHqÓùß'¼lµ>Šg®ívßú í„H[fasf‰ÀÒœ<ÿ›„·ÓŽ09¯Ð¥—ÌÊïÃþ?¶‘h’ïzÙX7æýÀo! %ùü˽ÀQÈ£ Û$ä³ÿÝp ò˜ü”W[¯Yew—š@ïBºÌÍåÓƒO§×6ëp +ó/s+ÙjÍ¢k‹Ý!ΟŒýåoת6~ëÍ ¾ÍˆÌƨ"÷€/ ¿P2;´Fõp¸2}–P`Ž¥¯¨új6²SÅ^2|)RA÷éæt¾¤ƒnö¤„]HÜá6Ì¥p­9Êbå†!–ÆËÖ#IcØÏÄLo7· scÓ¶Û…M£lØZŠ“äÿÁ32‡!+ ¦÷Ó•aê K:IT®ÓÓÑTœ¼Yþ’§£Ík#ø×ˆÉMà4äie qhÍ6 º =$‚"Kø?&$bMùDÅ÷0(WöÈÒù넜6d«hK¦õQ¯TLí…Y*YÚ5ítýBÍ2mÇÛsßFÿßB_ÿm"Šœ­½kz£¾iÕBš‡ ûïv×hþ;ŠrFÓîÑújƽÃ0­ '¯ÿ>áÍDOB>©°70¶·¬ZÐÎež‚|*~ÅPñ§Ä#ÖÁSüŽ2ýÿþO¨vBÄ&ƒ&Íô»ãô»ýÞüc¢½]jqû!^¿o¯ÍÛ…™ü[Û¨ÙùÆG³’Ÿ¯Vé­hþ¹UÐKù7F¹š_©—«¿ø~Þ|½”_q_ÜL …ñɱé±éé©|µTΗõJÞ›,æœs~sÿ ;F…=ø»fsÿÞ‰$Ûl&sU[2*FnÞ¦ ÃjÖ§í £2>£-­bÕÝ„ôÁ¦æ†y …W/^,¾ ²0Æë]Èåë*ñ÷ÞïtÄoß<ÎbÛËÁ?¶qg?ìíè~‹'¬p±–3·aæÿæoÿ]éÿò·m¶æÏÊz_¿Z]þ¡P÷MÏý±ÞúC}í…}§R/ß5Uy¤½ í4ÍŽŽÖët´u³dtùŠb7DF‘eo$ÿ_1o˜½ª½.ºmx&\´ nЧã†]m%_·¬ÒÔâK¹~Óîãžì%Ys7Ÿc Áõ gœ3ïoÞ2áQÈGE8…Ì*z9h¾ð ´@è ýñk„Š?Æ ž]ÕùÙCÀ~ÈBMXêÁ5½dêAKäû¡†ýh‡}Âm!¥*~€A<ŠTÒ¯¾-"L-  ÂOÄ –Pá äÁøÕBÅŸd"µñÕR(„¾iÑËAèâ ÚçhûpêÅ &š‹Ž‚ "¥zN1ˆG‘^n¿4¶Œmw;Ë;:àÝãà_—Ðew g-z¡8Â(Tbݬ—‚†¡^(Žpò\üJ¤âçÄ#¨ÄS_K'tñPð#Ù,^'§Ëws¹ÿ}:‡¡ ÷oAäZ§eûضTé- ‚‡K:‚ö!<YhäÔe7a7B'€'! ¹Éà˜Í»©7¤à}À€uAkéIq› 8 <ùŒ4‘šö‰ÿn²£hB&°ä2­¹·#k³Z!•|²0šÌhIÛ¦[Èp‰µãLx0™¸X™'¸+úû;Vôɟд²þ©¤o8ô_¾}þœŸ,]G&È+¯i[?9œš·—ÿ”Ñ´6¦eµŸò)𾩠´&ãAÝýû;öO²>¨‘oç&sŽ'vV²•ŒaôÇ®Ä>Æ0‘þžc°ÍÈEõcÌþns€.Œ0°¸¾þDBÐ×ó2Làïúõ}‰«òñ 2Dà ð,ä³»4È0£íÏoa´¸§™3àr&ñsd΂)á®2Ì9–ÝdΣpB©A&d¶Û°õ Ù®Ÿ¨âBBvPa?åží^@µ}ì­¾;¶ ÈÒ¡-˜GÄ£x¨Ý÷‰“ÖÅ„·à#ÁQ¶ý´êI½¢Yïiûx)”tÛÖöYÑÊÓ÷oÞžE|òbüQ<ÿ˜A£vŠ#L± …¸½}•AÑ>¼ Yhɗ϶¯Aƒ„÷ ‹-)H?Ë Eµï[k[Óíx‡HÕ¾.mÐRMp½ÁG<‚ýê€,º‘j¶Ÿœ—~u™†Šåöî¦Izéõ¹ç.DçB¢5§ºàaÔqw ˜„œ”VÓE­`UœyK…Ù­#ó1Þ‡|_šáubÕy)•eø—àÙ܉'nÀ n$Zþ@Ý¢ÀÁµz©¤Æʺ™ØUDÅ÷0(çƒÚ'Ütè%ø1ñH¶ÊøK«RÕk:ÀÖ¼ó0].ØàvQYhpò¸Lˆ´ó¼•îš{¸‡·AñÝÅÈ Ò zÈ?bÄÉ&‡¦! ¸‡GÚe†äY¥ÊO ØÃK7ÂM7-QÕM¼^v|uÉÖ¶(¡°m8VUrÌ«V3JÛ)Ñ>à$äIeítt­hØ…šYmMÈ::!¶þí¦kÊ{=¡‰r®é{Y:£Ðƒm™#=|ƒÐzi/0Šóà!1Ȭ‚9ç!i!÷4ÓÖôÖl‹º\2E%z¸ãæQˆù1à2äeéä0Êβî-ܴ܃¦ŸPt,KdÕ†XXO*ÈÙÏiÿ×_Èio®§.ŸL»n§’9/Á}®Ðp|ÛºL§µ¶_i÷²ZÅØÊ•©ôݶ|øgJúªRÚ¦¤øvgVüŒVÐ ›FñGç϶ýÝfÆüS/ß-μ[\}3sûÖݺñ©ÞÐKøL4}þ“™ó5,}£#aã¤Ï_0ëF€½œ<°ËiÄú:Ãþºûj—4ïEN£;'[r˪}°y-—¥¸Y> 9§“»pì–¢:—œ3H@: •Üžð'Ò¯­,¯Î<[™ŸŸ¹s[Q¿¢=¼™{"(Ò¯Î?ª™vÁ*•Ü®õ¬¦ëÛÔ·îÜæí[ÄüSƒ"5è w‚ÂR¶Á=°´^A~%‹Å$‡)&Y]àOöLorχ!+ŒJº${>4 Ò”û§ ŸIëøË½‰Ö.6ìŒ:D›òê"³OGÒr¯¥)v©XZÁ»‚Êö® ’œîÇ$p ²ÐŽ2¹Í䣚yÏð»ŽÄµÞË;ÓË ÇIòˆÝJÈnþU–Ä–¨\¦Il£²ð[èP„IlÕõ­¦× gØÐKÖ†Õ°½PݲéÍ+¯=±›ÀEÈb[+¢ÍÍO‡<†€ùDGnþ(ݵdn~bÜ ÈÍ/áµé/öG¹ù£²éÛž‚]d&Ù’6}”²òù¹´šx8 Yè=Ý^ÉÎO¹|™;v J÷Hv~ªØk¦‚¯E*¸ãµ¸ÊìüÊØ—’?ÚRC³ó++vg\îÝÿ]ãž6°t~€üƒ4ùŸvÝ gœÉ·U3Ü«ØJÎŒK/9Cgcc“Ü÷ö®BKšîL‡+E½Vä­ÆÏ]œ‡d¨?¡ÞÁ‹ÿzp–ÇdùÜ+SÌ>M…+SÇéÅNYw‚³†-r^xLf›ßwQÑR”àq"sx²ÐÁ3¾‰;wx ò%i åºâ†ÕšåžÎðßd™­]K¼fEd‡€Ï!?—&}ΙË~4‹Îta¿àÊÃ}˜¡Ük¹Pó ]p 5/"3 ¼YèdŸy1oÏÜmøç*NðŸ!¤ò¯ñžYl·d¸N>ÑIèoóšˆG')à$d¡MZ t2œ†<­V'„úÉ,ð!ä‡ñèäp²üx-¦“GÀEÈrKÿì·z»¿ã쪔çÀÈ+ñ(å1pòª´RúÓ´]Ì™ôTu›{ä#*o€¿üiJÃfÝ%T*_·5k«ÒÜ5ck%ó÷øÀS½‹Ã‡Õ‘Ý(—õÚ6¯›kÀ d¡œe|FDÅiÀ,äì.ôl*?ÌCÎ+SÊáê–^*ÖÃwVwUËt¢¹CÅ•ïÇ£–Q #Kªå`Æ]pPÍp²:§{°º)ª—çÀï ^W ¹úއ¼®–¬¿‡ü½4“tÝÚ0Ü)‘»çž4ÞԴ…o#ŸóTïbrZ•Ê"F4‡žE89†4TÜ à4d±ÈrGq"}›(ÜÞ…,–1𦌂^ÑÉCà#È*óutÑɽDÓ¹¹²|¾ŽA’nç´ùRI`C=ñy |ù4/Jrg”JïÿY[nÈçTääɼ0d³}(2¤ý™óZQI¥²ÀòY³$ìFT# •H\bŽAÛõ˜™ˆt’QÊm Ôk2~¥Œå·ÛøŸžÕšS4äy¡½ó¼}œHÝú³§7ÒäæüC<©æžÑŒÜF.ã¤yçDÅÙ¬{£†ú™fÖV^k{èÙHÓyc´ßUk#.KÀgŸEom­×+Ï!Ë/ïw&Á¼¦E ^_C~­L)}tDœ 'tod¨fh©xòñè5³Ã$”ßLâz$#ÜkˆÈ ð"du ý„ÆM¢2¼ùZ<ª¹”hdº”]oï4":IoB¾©®ÓøKbfx²ÊÔ6]4“Þƒ,ŸÚæ‚;_ñÞ¿ygâl¼ÙâurÄkø=dñ©°š½´Ýg¤]÷<òŒÆÅãóV‡¾!µ“6ýïZǰ}´T­LõNˆTÏ}ºí£íÞþa–¤Œ[p©!»h£-5t­²b;bb×:îb;­Ø¸È’»YÝQ±h’¸ä€ãÇ£w¿T\ 8Yè=¬t4I &­<ª“ Ñí–'n¼ÂO¶«4(ئÍ?@ÒÊM/ðd¡½ |b¼²×ZIjè¿ÑƒSKÄâðrB"–Âá°ËJ`×±êæ çb ¯}E­Ã+6RòLÝò"uûâ@Ø¥å»b\£`´¥†Ž‚ÊŠ ^øuÏ¡‹µ,¯9ÈsÒ¼ŒOz¹Z2ì´—T›“ÔcÏÀ\€< Lêgº™xÐÝL¬—lKÕŽâÇø2ádî>ÐË}aGñÙT³*2ÛŠ‰÷$ÃR„¹Km27–÷^Zû†«½7JÖ÷Žc–âkȯ•y—CkE/;}@É£è'K@¡MÆôúF?þÂÁ€ãÞÿL”zÄ#Ï ~-ÐðîŸ9 I;â籌FöQ;ð¡¢^×SÉ×5«Ø(8®¦éxèŽGþûSŸ‚áä!i’«Ÿ?“u(¥JÖFjî¦GBµ WÓ7=ÉC£ìü¢Qq £QÍf½Še¼“~N­,Ë è7jö µ!\…,¿±íû‘zÒ̸dVª f_¶ma)JK¹ûÈñ`9ßÔ‹EI9šIÓ3Ü•{Ž ~Y|±Êÿô[ÐO}þœÑhr«ÍjÞFþæV„~Jg¡Óÿ;.0l^¸ü) ¶©Oh`6©×ŒRI¯XNW¡7T³îNiþú¼D^îìÙ’õ¹á˜“Ò–M•«ÙæFÅt~pÐ7áW IÈäÑ•$|¼d¾¯‘¼•1þv| *¯›ÿ@ÅzQóÒçÏüœ¾Bhì—æ”rtûòŸ±C¡Ž¿3Öu'T妻Š„~¦bù;‹¾ešÐë[¹YÑÎÏø[…ÆiP³h”½]e­lŽwˉçv¼¤nºXî ¼iBuÏÎ4q°÷j¹*ÿùÙI§õÔ ç ÏIWã‚£‡Ÿ,ÓñRlz?!'ÅŒ]Í«ÔåoD›i¾£vnTÀÂpÅÜïrY?êȺQGÚÓƒ°¥¿éw҆—¢;d5ˆGô1(ž—ýôŠ£pjN:†¸¹]ÍÍhã7ÄÍúÍÉËôh,Â+…Îjíü᩠׸)ý4Õ w:¤É“-˜üJ¯FÿW Lxò•“S«BW…X•¶–P9ÓáŸqQù= ÏDƒ_ÖüÕƒI'Uû×ñ4AØ\üרµrsñS²tþ =ÉÇ~©å¯ô-a¥¯mµÎùC´P×¹N×\‹ëE É¸¡wBá3± p}X€[ñ¿õ ©§·M=çvæ›xŒŒÜ«\Äÿ7ëÛ4ä¼­|¨Ð­ÇV­öº5òº–Ú»Vü®aÕƒÞæ©kD©­.S V¹Ú¨ëXÑX%‰gk×´Gz]׿_o;cÞžÒZèUÑèŒÿ[´J뙜Úcêxo•б©ãHF›ÊfÇ'&ö–3Ùÿ|yõMÈ_èY)TEÊœo=q;¥ßxVÙD¹`)²°à(›u]26ÐQMÂK/Å 5“®?]È éúüò®sGT‹!¦6C"µ uPϬŠ3fÔi4ô(÷º÷FŸªóƒ{ü¨hT 'Œpþ•w±½OàíâÊjÆ/¨kR©®­f“+ÆGÓØ¢ Î(X«L¡½±›‘ÞÒWh¤¶ø#…hÕÕs{t©#$RˆFÇR“éŒ65y'›šÝ[ž$†`­ÀPë‰Û#½÷ ³‰{5X`s«J T³Ø¥`¡•ZõéR©UŸ ¹*w°P€íøµQë£6W­²°pÍ2QÄB+ŠxáE‹­Û$ßQ±\¦ÄhFQ{lV¨¶«îJŸöºfUæ2 ›·û+«5o ¡®¹¥ºm´Z?ûÔjÔhÉÁ‰$ÝH½=”7zˆVI¡ÑC4*â¢ÕQÏø=¦Žè!uÉh£SÙìÄøÔÞò1„lv1t(zVÙĽ:°·&J†ªi$v't¸à]šøîYÆ»4ñÙ#Ü›È6°¿&jÓú¼¶jÒŸÑ^[¶Y7?:c¾Q6³EcÝ2A/#hª:ߨ[Ì}ZZ·0ƒ·ã+«3oР®±¥:l´:?ÊD úžÒLh¤^ø#…hÓ3ÅûF"ju„D Ѩ£?5‘Îh·F'²ÙÑÛ{ËeÄ+°ØÅXaݳË&îÑX¡WÍY¡ Ô0Ž­ ‡ÛÔ3èšݤ@ÌÏ358/RƒP´À š÷’›Rš¹KOÜ8àÉüB×uÞŽ¬¬B¼c¿º–”ê€Ñ*t˜Y0hnS - Öz}K¯…]«¹;Ê ¢Q8­®zÆÆö˜:BÂhÔÑŸuâ±lvìÖs‹9ÿûÖÖVî'zig;ýÇ=Á®×œU2òô~/ÿqtlÌ ã²5Z-î_kÔJñ¹¿½åþcˆãØ œOHì- ,õÈšóo¯`ÐöÛ?óŒ5±™ˆÞèêÇ¥ñöÈö@ЛޙðNø(~B [¾ù{JxSÂ|âçtïñO° Bµ÷Ó_ìŽ&b»÷ø'tÂ1ÈcÒ²O8 8ñJ%°S˜šFêÖcªÈ=à È/”ÌÆöÈ­ÇT±—L_ŠTÐ}º9Ñ[•± ‰;‚3ÕD[jh¦eÅî¼ÃÏCÀ;±t¾‡ü½4³”–xË076Ýi»]Ø4ʆ­¥8É}ðŒÌųÏ* ¦÷Ó!Ï0õ…q"*CÀË/G?Pqç€IÈIi5mÐå_ÿ!&#À䜲†8´fe´ ‰ ÈJ ‰XS>®¤â{”‹+{dé”npÚD<’­2°dZõJÅÔ^˜¥wªÁ ÔC8y@™‘ô®éú¦U i *ÌÚ]±`>ÊÙH»ë«5öM«ÂÉ«šð&„'!ŸTØy?Û[V-hɦ ež‚|*~ÅPñ§Ä#ÖÁ3úŽ2ýÿþÕNˆØdЙ~wœ~·ßû£ƒL´‚µK-®q?Äë÷íµùna&ÿÖ6jvþƒñѬäç«U:©–nôRþQ®æWêåê/¾Ÿ7_/åWÜ÷4“…Ba|rlzlzz*_-•óe½’÷Niçü¦þtŒ zðwͦþ¼þH¶ÙK檶dTŒš^7ŠÚûm­f}ÚÞ0*ã3ZÑÒ*V]3Šf>Øt"Ú0ï³ðêŋŗAÖÅx7Í6Ð×´¯§Äß{¿;м}ó8{ÛûðàÛ¸³övt½ÅŠA81WK‡ˆ™Û0óó·¿ÿ®ôÿ¿¶Ù™?ë}ýjuù‡BÝ7;÷Çzëõµ¶¢R•« M]i/iAAI;í²£—õ:½lÝ,]¾¢Ø‘UdÄã[É߉¹ÂìUíuÉÐmóá¢Up<Ù²´•|ݲJ?R“/åVøm»Œ{v²—dÍÝxT|ŽA<4¯ì~‡hØ4û›„·&Dع_„TÈä ¢—ƒ&ß@ „Ç ‹_%TüƒxvW%äjAj›ÀR®é%SZß=ìOF¾qéd?¾ç#E:9â;îð]az9]BŒA/  BT‰|ãÒ ŠA<Šôr´©—B!ôÍzˆbBÑ@‡DˆS1þˆx081ˆK1ôœf°mb ©˜{ÍSÀ´ƒÅ;ìÖV¼4u]v´pÖ¤Êóïg:”ØqÛ·´"ëf½4õBy„ ?Š_‘þ>âT乯¥ºpx(ø‘l–ãè锳.—ËñçO; nþÑB®yúP¶m 6œê¢¨P$ˆ±¥#h ÂÈBƒy ©.{»ž‚,ä,ƒ£ÿ5/ykHÁû€§!‹¹GöÓž·½3À³ÏJ9 iŸ2Ü\Ž¢!™øB’Ë´æf¡ÔfµB*ùda4™Ñ’¶mxy)÷`ƒÉdšŸ¼¿ŽD8 yZšü)M+”œñ̨9ü“Îf$ù©1s…!Á =f/ß>ÎÏ‹‰çƒ®ä•ÑœéyÅm0Gáh=Rìÿ%¡hêúÇ -O4]{Њ” 弦mýÄf€þÉÏ–šÖÆ´¬öS>…¦¾© °f×݃²/±cŠ ëƒ •ÜdA`0±#X•u}üC63maWcb²™.¹÷†lœÕÙû»M¬º0L´f£³™qÚ&÷yÿ˜MÎÏA>'MDlÌfâç7f3{!öÚ˜ÍfÙScöyp!ü™ŒÙL>îŸÑ˜Í¤›ßý1û"\Lìò˜} …JÙ!‹1 [ßZŒ9„²†²c4û)÷b̪íchõÝPá´,á„7YóâÈeß'NZZÂ[®ò`̲¿ÎI½¢YïiG)Á*”èÊ‚}À‹/ ·[{{p¯PâíYÄexòue=+tCw ˜‚œ’îXû5«&¢”40Yl˜¼9I¡®V&€·!ߎG+YàÈwë êåb÷.¡ˆËËRñwÄ7ËhÕÍ ¡Ê)Zõ KŽíºž”ðä#"tü‰õF­¾éD€ÍÛÄ8[‹hAŠÞd“P á0äáøm% sõOÜ4FÐ>F³”ÑmÃy³+°XÂ>È}ÂÖÛ߯(I§Ú÷ék Û(f4«bP  À·˜ƒœS"Фšw0".SÀ;UŽ !ƒ—Î@–ø‹Sùw÷ ßS¨ZàQÉp òR<*™>üDJxý •¿ | ù©Ò^2Æ­’« Ï»J“|*¹êUÀEæEZ콄Êïƒ|L©JÆ…TrxòùxT2¼ùÂ.©ä[àEÈ*§›´+¢’`ŒÓM*îPÝtSL%ià È7”ªdRH%cÀ)ÈSñ¨ä&p²ü"ü±ŒF—¹?ò."Ϩçðd¡½W|“‰+‰–_„,¶×Šý”;Чâ3ˆ'n×Ð>Fô^o8É‘ÏêJmQwI}ÓFê¼½eÖ ›ÿuOÜu¬¹®éuM€æq` ²˜¿ ^Ôrßnñ:"“NBžŒÞÑPqiàd!ÿÖöFeÓ¨¼†8LïBZbâs0×ÑïA›Â°Ÿr÷l*~–AYè˜9< È§nnæáuìÄçð<äÖl²°- å×lúÜH~ua{¡€x| ¼YÌ9N~°ÁJD97cÇâQÎUà8äqiåœp•ãÞ÷¥»¸W¡‰Îp²Ð ±ž›7ËSÎSpåc­wÕáØodÔÊÜ ¨Dûð.äÖ7F¡AÂ]\ß âg^ß,µo­mLÇžLªö˜´AK5ÁzƒxûÕY:ãèF>ª95|r^z+èTD(—G!0“hÒ»lš{Ì&:€—!_Ž~̦âN““ÒjºèŒ×•ºnV°€â_½Mûrx ‰˜ïC¾/Íð:±ê¼"œŒÊ2Ö×Í‚I½;·ä$ ŠYúU¤ÅƒkõR#Hã(k*±«>ˆŠïaPΔ¥CküÇÄ#Ù*ã/­JU¯é¸ã¥æ¥¿½nž.Šåä} ¼ÅhVlÖ” ó€î¼MITîg!Ë¿@ìÌ*ÂÉë6š‡pò B·r 5v†»ƒY§äNuªzÅ(ieÇ_—lm‹î *Ô,ÛÎÚ†6ê%^ÝÉSÀÈbÛù“@„' #DÆÓ < ùpôJ»û ”[xc?=­Ù†ÓñKsµ#÷¸A”އ!+k‘£kEÃ.ÔÌjëA‡ŸÄÎÿÝ=¨øåFUY:wa&>ö ›‹ÀéðÐ8ñú ¡Ô6¾8‘™Û)ÌÔwG3mMo͈ÉýaؤÈQ\yuI´€K…víîœÔ;á""Ãå×½w‰-÷­éÇ)Ý Øyu1‹–&ô§—B«¾.mÿjÁ¿þÂÕ‚æzê²ñÉ´ëv*™óîÌŽs[·“é´Öö+í^V«[9£ò1•¾Ûv-aÁ¬¯*¥mº›Ð0£ô¦QüÑùdzm·yqá©G+Ë«3ÏVæçgîܾ[7>ÕzÉ|o1¼Æ$¼ùoÃÒ7:îÍ8‚[ Lº2¯Ãd·æQã4 b~©Áu‘tл¤yÉ2ÚÖ¦YؤîYhÞRÌk½,ÅÈò«ô˜¨¹ÍÙ9SÞX]{“ÕíírµnÕÍo%À:ì”%+1ouÏÅ9´M‡.m8pw 8.…¦¦/µ¢Y6*”!=§½Ùt¶xÁ`Íù'V™·s N8y^ºš3UvxÛ~´ê˜K£â'î5ŠÜaÃŒ=šw òEû¨&~×q­ˆ·ÍÄôRys’\1ÂaÈB!£º+FˆÊ5`r:úØdÖBx²ØÖnöÓo5½f8ýS/YVÃöFp˦=B¼öDÄn!‹gtÜ¢2ù›ÓhwÄ0Ÿè¸9MZÑÝœFŒû7§ñ1ïøË~BÐÑDÇÍiQÙô#OÁ.ÊG~͉ ‡À4&ÎB_Úw§QEî_A~¥$Ü#w§QÅ^3|-RÁo4ßxÞ¦Œ]p©!w§E[jèÝiʊݹCÄ aŠw@béüùù ö'g®î…3NkÕ ÷¢ì’3ÁÑKÎÐÙØØ$÷ã½x©Ð<ÎvÙg¥¨×мÕ`Nì( jO8Ô¡×¼˜6-™=ÂÅ÷Áü\gíŽÛ}6óîÉò›™ÛSŠfíÔ ƒÀ[oÅ1k¿ðB/<3+gBI=îmá£iûí)Þ‹¨ßfªp[¤ ü-ÞÞÃR¹Y|ëÆÏÔLV–ÎŒN*²Ð%twÂ˹ßâ‹Xè©…šù^¯™ÙìKÙ©¤ÆGG'ym“H'òIò³oM‚F²õüiÙeÿ¦ûåâòsÇ:Xåp2÷8)b•ƒ)ªÅ/ ³d˜¶&j“êE¨wðú†ÿÖP–È#Èò§¸—¦žÀ©ø¨fiê8­0–u':£eFþÜ9Ë`²Üü¾‹ŠÖ¢D_•›³ÀK/E?u§âN‡ I«(ïDÑ7°Ö,÷$¡ÿF,˼km9áµ+"; |ù…4ésÎlö£Yt&üמ¦™<½Šìë`×%§PózŠf"¼Yè ŸyQqç~zùSkü 5¨ük@¼|Ûꮓ‡ÏDt’N@žˆG')à$d¡óõ t2œ†<­V'/߉èdøòÃxtr ¸Yþí£˜N!Ë-þwèä‘ïzüòwñèä1pòŠ´NúÓôâÑ™õTu›{à#*«À!ÿ(Miج»„Jåë¶fmUš[\l­d~àÿžyšwqò°ºøÊn”Ëzm›×ˆˆÍ5`²ÊãT!FDÅiÀl¢™:7öŽMåç€yÈyeJ9\ÝÒKźщ¨exòýxÔ2 |ù´ZfÜ7ÕÌ!+ô¹ÕMQ½<Æès©¸Ç@u>—ò}óºZb° üò÷ÒLÒukÃpgDîöÒ {ÊÎÖÖkVÙ|pÒ}î©ÞÅ4ä´:#*•EŒè9záäRÆQq7€ÓÅËʼnôm¢p x²X®ðÀÝì½&¢“‡@©¥!~Ü.B–Ï]7èÏÑíœ6_* Ø">ï ¿“æE Ÿmƒ.)ÂKEçÖ–òù‡Ì8y¾ðÔïbrR™!í§Àœ×’ˆJ(u#Ÿ%Qq#À,dùˆJäJbŽAÛö˜‡t’QÊm Ô{2~¥Œå÷ÛøŸžmmX×’L·5îã`Dê>ð ä7ÒäæüS˜©æžÑŒÜF.ãn°çDÅÙ¬{W†ú™æ ¼ÖöÒ³ç Ïí²µ—%à3ÈÏ¢·6*nøòs. nñšÖK˜ákȯ•)¥Ž÷’á„nŽ ÕÌ«„·ûïþAoBð%Ÿf^Á0 åw“øŸÉ÷"2¼Y]rk¡q“¨Œ¯A¾j.¯C[oï4":IoB¾©®ÓøKbfx²Ê´$]4“Þƒ,Ÿ–ä‚;_ñ^¿yçdl¼ØâurÄkø=dñ©°šÍ´Ýg¤]7¼öŒÆÅãóV‡¾!µ•6ýïZǰ´T­LõNˆTÏ}ºm¤íÞþa–¤Œ[p©!Ûh£-5t­²b;bb×:îb?­Ø¸È’»YÝ Q±h’¸ä€ãÇ£w¿T\ 8Yè5¬t4I &· ‹í· ÊMÉOÉÒù ]ÉÇ~©.å/ø-aÁ¯mÑÎùC´^×¹\×\’ëEÒ Éu¸Ð;¡ð©ØÀu¸>¬Ã­øßú†ÔÓÛ¦žs;sNšÆuFÁªXe ÜLñÍÈaOé+4RˆF[ü‘B´êê¹=ºÇÔ)D£Žc©ÉtF›š¼“ÍNMî-OC°ÀV`¨õÄí‘*ža6q ½O^-.̌ޒŒ,Ô0Ž5„Ãmê|b…Í’¡=rWnñÇÄü·;£Z 1µQ;áÜ\µÊFÀ[ l–YZh- ½ð–„[7;¿£ˆo¹Lyn¢öجPmWÝ×¶ÚëšUušË4lÞּŸºæ–ê¶Ñjý,B>ZZt—…Ü›¼y—‚¢URhŠøCÀhuÔ3~g©#$ŒFG2ÚÄèT6;1>µ·|G ¡[]\ªyVÙÄ=:ôª9Óe£†„»²äèšÝEBÌÏ35P;ñY` ÍÛ…@içÜáÿÉ‚ûNáÉüB×X·#+«o ®%¥:`´ f‚€æ>ÚSb­×·ôZØÝ§»£¬Ð` UñÑêªgll©#$ˆFý©±ÑtFËfÇní1·˜ó׃¶¶¶r?ÑòíôoEÈ™ùJFž^Àæ?ŽŽ™c£aÜC–€¢ÕbØPDîoo¹ÿâ8¶RK@¥Ys¾ãmæ Úý“g¬‰zB"z£o¨?ÆL”zÄ#Ø#Û)n:„wnÃGñ3Ñ^Ný1áMó‰ŸÓåÔaA„j/§¦¿Ø MÄv9õGtÂ1ÈcÒ²O8S;ñJ%T˜>HêjjªÈ=à È/”ÌÆöÈÕÔT±—L_ŠTÐ}¢¸šZ»¸#8›P´¥†fRV¬Ü0ÄÒxÙz$i û9h¿Æ–anlºÓv»°i” [Kq’ÜòŒÌÅaÈÃÊ‚éýt7L}agЈÊ5`r:ú!€ŠÓ€7 Ëù?Úꕊ©½0K%‹Nã×°»jÕêFÑ "éÓ(iØ\vûV°ÏP#á-Èò×tz[Ü4oãõ,^^¿ÂAȃʌ¼wMoÔ7­Zˆ6©°¿Ø]ÿ صr6Þî€ûZ{ù8yýe›8ž„|R¡óù`loYµ %§¿„2OA>¿b¨øÓ âk€à‰Ž2ýÿ~‡j'Dl2hŽO¿;N¿ÛïýÑÁ?&ZÁæ¥׸âõûöÚ¬,ÌäßÚFÍÎ0>š•ü|µJG!óÏ­‚^Ê¿1ÊÕüJ½\ýÅ÷óæë¥üŠûži²P(ŒOŽMMOOå«¥r¾¬WòÈóÛúTÒ1*éÁß5ÛúðþFk3˜ÌUmɨ5\ðûm­f}ÚÞ0*ã3ZÑÒ*V]3Šf>ØtBò0÷³ðêŋŗAæÅ¸7—;ÐWµ¯¨Äß{¿;ÐǼ}ó8{ÛûðàÛ¸³övô½ÅŠã¨ ±¥‚CÄÌm˜ù÷_?ÿ?¿yò_µš?ƒì}ýjuù‡BÝ·;÷Çzëõµö+Uº¤ÈfåG³R7j£Zo*õH{‘ ŠÜi¡ý­×éoëfÉèòÅÞˆÌ#Ë ß\þ^Ì)Ž^Õ^— Ý6îôE8y(:Ý…ò8Œ²}l[MàTE)RcYˆ‰õ!á9ÈBcJ ».;õºúx ²ó YýñÙ†¼¨Înƚƌüº/ß>žÑjF½Q«äܼÌÎ/Ï?_]´wâ; |ù•BÙ°õ Ù‹6ò/·ï¯êgaörÃG<‚Ýì¨,£Áâ^Ð3*NnýÐZ?xõŠrK%Ö<îq¢½†…¥`7‚,Öÿ8=QhÏ"¼ ¼ùº²žúÚ‰p˜‚œ’îXç´­M³°©•é¤÷{CÓ5oäà5pÂ4pòœ4»‹ž'LÑ¢BQ3Ö×K²½´õé 'Ãcžú]”ŠÂCÔfÖrHÃøÅ^‚,u³Ÿr; cè>> w#)hÕE?„‰På­zÐÌŒ¾„»lÝ‘¢7±ã É0gd½Qó®™öo!ÐRî5•zi[«X#ãl¿ãP!á(äÑèø8TE°ë).ë¡ïŒ3ˆ'n'Ð>FÂw» 8ŒÙ l˜°rŸ°=·oí5×Ý÷¤ú'!Ÿn®Žf¢È™w'*€— «›M„áTÜ)àdy'|MKኃt†MÊ_·´‚^*4JzÝà¿æž8A–_ë¸ß°èÐ5+΀îÊf;sÏ¥šõ e$ïvÞ:À^\¼ù¾tNQÇtšÚª8^Ü©OQsú'3æuuЫkÙÅÒ y$o!ZßssÑ÷*î409/ïãy£E*~”Aê¥FYžGYZbW£z*¾‡A¹¨^úÜãå„7ÂùˆG²UÞlšÌmðæGƒn2 ìØîë]xâtÞŠ$¡RÂÈBLwTdY/¬rU¯l»±wfîbL ï‘_ÞA—!/+ë%G׊†]¨™Õzóð`‡UP‰Wv·¯\AÿðQ®¯äeéЮ¡>Ûr϶Ê,E)Û*[›z]£Ât×½^Jwí&ÞÞ*\ƒ2 g!Ë/wÝÚ±ÍÇNk[ÎVÖ‹†3ŠU%½FGé¼cÄÈ_§/Xµ*/ùë LpÌ™“¼Ÿãò¯¿ãÒ\O]6>™vÝN%s^ÂËœ»%dÝN¦ÓZÛ¯´{Y­blåŒÊÇTún[~Ì‚Y7^UJÛ”$ÓîÌ’™Ñ zaÓ(þèüãÙ¶¿ÛÌ Ù?g†6·ôêíó™± ?|Ì£™B+ú›Ó0.óµ(}£#sËäÑ\0ëF€ÅOQ-–¬F©¨ŽM¤9Mk qM„x«o3Úâ÷¦±e“™.?Y͸ƒÑ†ŠsO»X‚3…Ö~ζz¶º²øæùÌøè¸ÃWs޾G³ŽÎ3Z‰²X:ÃêøDnLÒÓ0^Â{¹ßˆò]×,g"l8ã=ÙËóFÁi™zÝÔºW™×æ©n³LgEêØQ¾ŒF5p^gù<†üXšÏ%§!õº»ì vK•œ–¯éÎlØàžÝ€)ªÛÉyÐŒiœ\n¢ü›ø§’þ´<€ã gÆÆïÖOõ†^’ìöÔ–½Àë¹÷u‹tûþ¥šaT Êþ<6ÎÛ‘‰mŠaaÝÙq2ÚÂfNËMæ&]¯31=™Ó–ëŽ^¸÷†³A–ßJ6ÿÞ ÕAÛ,5£ðVƒI¾˜‡Š– T—‰Ak¾¢ÕbgÐö— Üw0&÷ú±;¼Y|rÝ\Ü(¸—èÞå’¥m‡dÍЊFY÷Þù×7¯ùdªë¼_´|*o˜Ý— 7N‘gÏiO¬-ì2Þ'³q°!T¿wXºc­o7 ߈¾cPq§7!ß”Ö×Iz·ªQòCmèÛ">že€÷!ß—&ö@·m«`ºotÛV’½5oŠ)ª–m›ïKmsè31o%&`g„ Ø;³ì¶½§Þ²²[úöލ«€ÜƒØ$HN&vL–âĦP´j־ϺY«(w¦ÛuáNÓ D(7–ðž_ uDexòåèw˜„œ”VÓõ;erˆÛpòœ4Ç»jè–òÎØ¤»žÊq—0“ðƒÌ"»»ˆ¹/!³ˆéz¿fP êæG£Uƒ}"óCî% ÛàMx²¼/?é-y;`+œÄî€ !sêI¢+N÷ï/ Vià(äQ…½ºËý½³B÷S x ò5QÆùp ²Ð >GÅú㸼åzë½VD~‰Ðp²X2#öÓ nz’œöÒªckœè ɸ*vgðn’Då2ð ä+Ñ›÷-ð*ä«Òšú–I=á{¿Œ{̘{„œAg%œƒ<'MpÞú2łް f·ÕŽ=p„éwae„êÖïu,„ÒQ sݽH¨ÞºdçWÜ=dÜÁ7óÒLüš|ðÍLÛßG—×… 34†ˆ§Šb›'1óK_…,ÔÉù| ×¼Yh¼Ý™™™lÜ™!…ìö¤O›ªx‹˜^®@^‘Ç·6Í’á¿·À>|ÇÉ8n§yÚ“y½ÑâÏÝGÀü¥ÂñÀR­ºn–‚ND]Eis2Ý’¾¡þ~2¢Ôà Áþ9òµtB{#¹ÿ# â‘4²ËE½®§’OŒ¢U1 IºH»)fVKVKå$²¹‡P¡¿ÝOhÚÞ6òZÅ× zìÐJ•?j¿ÓˆæM­P3˪ápF=2t@ÚøD•¨[[³(Pf¯§Â¡÷:§ãR]:òZzÕägˤ e·³I²MÑ9ŒT‹rÆ=Ž‘ÖFÚ¦ÕÜtA‘Ù+UTÊã1ÊöQMX0?ôþù«ÞëzÞž»KྤÔXFhÉÛ]‡¥a‡›Õ0!€< ÍjÂoÂ5¡»]uÝï7Žÿ*šeÿ§+oœæwþÇß–Á–YïŽÝ>™ƒH íóÁÈȈƾ&;¤[·f“EjSgH–ŒF)é.òµ;)îZ<sB&Ö¬Åù‘–y¾×K´4Y³ÓçàDxòyi~Ioh]ª5*ëF©¨bleÎÚ°ç$‰>Ú0ýqÕ¬ÐÀêžt¡¡U¯šu½Ô]ýªd4Z‘ôlC */AŸP]þìkëŸ~t-—*äy† 3ãÚ6±õŒšŸì+$¼Y~JBdÝþLÖëŠüd_ƒàk¥dG¾¸lxÙïÀŽ9—"Éô¹Ã2güyC/1‘‹cÍ~kg4ßH2ZaÓ(|È5O›Ú~‚, qhÊÌ]¥Tce§[‘¬ÒEÇÕᨭ5*rÞn´Õ]AðÝF}ëÇŸùUv|t4£ý:ã¿à¥x}Ë¢Z ØýÔåÍNË’¬×Çx~ô«Öiõô ?Õ· Gè…ZµÝAõW¾…_Óc ·B4Û= Ûê”Oê£YtúL2ý+wýêWcÏýë_s×ð{ÔŠðW%]÷l ë\5¬›e££nãBu{‡ú¼Û©IɺÝ÷½RÓÚt;‡ì©•lö‘f˜–æ7Á@œPÝëË;*1NµhöŸ–öísço}r×â`N¨.²|ÚAvÔ§5rxÕ‹`üø%*A¨. ÿÄƒé³ '£#A3cwã›÷¾^v]a T G!JÓ^ ˆvš·5ø/ªRŸÒÞ‰rd÷‰Ù¤N§wôŠ•Ì`‚õdaT¤»þ•!dbŒØíâÏP¶j삦r›úGzïçÍ,ü¥ln~?‚¡º©ÜmoAáÇðà·ã¾êýüjþ (2L$éŸò³*´ªÁOMB¹­¦ì§¯h!¢Zr“YÚÞ Þëv°3°ioAÒ¥ëvëµ¥ë<Ä—&Þ£&„Ì,Ov°³Á¿à/üÀŶÝãSÜõ(€;¡Ô``±‡×Œ‡;:^LPqE¥.û} ßà \7a…Ñ¡Ã]ý â‘l•?Äw*Ï£t¾”êÆ8fßó+u\¤Roðÿ„¾uz‰Ž‡k´½÷ü'ÿ¹­-5Ì¢‘Û-Š¥ö®¿kXõ —øêÚFªF¥"ï[C›õzÕžÉçÝ“ü9Ûj8ƒÐºUÛ0r£žãr%e´ºÚ¿Ö¨•âSÔ®j×Ë_¾Y+Ôþÿ·pöÓÈñÎ=I<±wœ›÷­×O¬-÷Ì%/7Ü•γºî«ÑìŽ0LòÂ÷ÛÚ'Ço8³rãÁ?úÅ=¤ÝW¾_ÜÚÚÊÙÓç V9o7ªU«Vϯënçé×”³¢`ç›zÏš•ìg]ÿ£#ýGGkáì§'5ddx÷Iö˜+=µX°*VÙ¨×Ì‚6_ÑKÛ¶É{?Ús`Í(W7cÓØ@F»UßÔŒ¢IÓì]Ôûé±×´µÚ,ÚZ\ÞSúÙÿ|yõMÈ_èY)&¾Ü#™¿Êûä»3Ú 2ˆGQóYs¾C;ç Ë#F›în$$–Gèê·¸¥ñ:&锡ދpSú(ž±ÛÁµ^ï]Zš“œ™ðΑ~ ù[….²Ë¹µƒ³.eÂýÀÁDóÚ=1¹xr éŸM˜>á%È—¤ÉÜ1œ‰„^¨·&Íý˜Öz[*Vîñ„è_&$Ò?–zhÍ6 ÊIÒŸ¨‘~JHxy/CÅ÷0(çezdé8½ÌýÜG<’­rô™ñÑ1‘7zµÊ}ºÝJ ™Œêú¦1@aåÝ52ŒÂG9i÷÷‡›oç9iUÞD8Y]Ôph탱½eÕŠ!%ïÊà–Ò ŠA96=6==•¯–Êù²^É·¿©Îùþ*òùàïš:½>)ßVÌ ½FÿÖÿ¹f–ÖχËÕÒÛg­_YÒmºeÀ`…M­_õá´Në7Çžëï­Új£Z-m3ŽÐK†Í÷Z¯™õmö5«Ø`þÎÑg¦õX¯•ÙµZ)v•ýE£ü„ý»‡ÞéìÏýzÅØ2¶ë†]gêQ0«öÎ_/u'XÈ•hs[€ÓæV™ùÅQ7ŽË9Êa -ïüc}Õ÷¿)µq¨¾¯¬wüÊncÚ[- öÏŠí¸¸µó7‡ª%›ýe†ë@u£¦W6ŒÚÎÕ_ÝÔ+¶¹ó—«›ÌO‡ŸÚJ2ÛÈ–ŠÙͶQŸóSû_/o´~¬¶öÄV Ûfÿe£ÖÞ* ÌŸ>ZÝÒKÅö¶ÜÒk¿ZoûÖáj[ã¶õÚ†^a~A¯÷>kûÅ£¦èKLKzvZˆû¯^¾c*E¿X]`þÎÉÀ~žø‡ÿà¼k$MÔ"plm/man/0000755000176200001440000000000014741314573011626 5ustar liggesusersplm/man/plm-package.Rd0000644000176200001440000000646714602600665014307 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{package} \name{plm-package} \alias{plm-package} \title{plm package: linear models for panel data} \description{ plm is a package for R which intends to make the estimation of linear panel models straightforward. plm provides functions to estimate a wide variety of models and to make (robust) inference. } \details{ For a gentle and comprehensive introduction to the package, please see the package's vignette. The main functions to estimate models are: \itemize{ \item \code{plm}: panel data estimators using \code{lm} on transformed data, \item \code{pvcm}: variable coefficients models \item \code{pgmm}: generalized method of moments (GMM) estimation for panel data, \item \code{pggls}: estimation of general feasible generalized least squares models, \item \code{pmg}: mean groups (MG), demeaned MG and common correlated effects (CCEMG) estimators, \item \code{pcce}: estimators for common correlated effects mean groups (CCEMG) and pooled (CCEP) for panel data with common factors, \item \code{pldv}: panel estimators for limited dependent variables. } Next to the model estimation functions, the package offers several functions for statistical tests related to panel data/models. Multiple functions for (robust) variance--covariance matrices are at hand as well. The package also provides data sets to demonstrate functions and to replicate some text book/paper results. Use \code{data(package="plm")} to view a list of available data sets in the package. } \examples{ data("Produc", package = "plm") zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, index = c("state","year")) summary(zz) # replicates some results from Baltagi (2013), table 3.1 data("Grunfeld", package = "plm") p <- plm(inv ~ value + capital, data = Grunfeld, model="pooling") wi <- plm(inv ~ value + capital, data = Grunfeld, model="within", effect = "twoways") swar <- plm(inv ~ value + capital, data = Grunfeld, model="random", effect = "twoways") amemiya <- plm(inv ~ value + capital, data = Grunfeld, model = "random", random.method = "amemiya", effect = "twoways") walhus <- plm(inv ~ value + capital, data = Grunfeld, model = "random", random.method = "walhus", effect = "twoways") } \seealso{ Useful links: \itemize{ \item \url{https://cran.r-project.org/package=plm} \item \url{https://github.com/ycroissant/plm} \item Report bugs at \url{https://github.com/ycroissant/plm/issues} } } \author{ \strong{Maintainer}: Kevin Tappe \email{kevin.tappe@bwi.uni-stuttgart.de} Authors: \itemize{ \item Yves Croissant \email{yves.croissant@univ-reunion.fr} \item Giovanni Millo \email{giovanni.millo@deams.units.it} } Other contributors: \itemize{ \item Ott Toomet \email{otoomet@gmail.com} [contributor] \item Christian Kleiber \email{Christian.Kleiber@unibas.ch} [contributor] \item Achim Zeileis \email{Achim.Zeileis@R-project.org} [contributor] \item Arne Henningsen \email{arne.henningsen@googlemail.com} [contributor] \item Liviu Andronic [contributor] \item Nina Schoenfelder [contributor] } } \keyword{package} plm/man/phtest.Rd0000644000176200001440000000710214340404505013412 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_general.R \name{phtest} \alias{phtest} \alias{phtest.formula} \alias{phtest.panelmodel} \title{Hausman Test for Panel Models} \usage{ phtest(x, ...) \method{phtest}{formula}( x, data, model = c("within", "random"), effect = c("individual", "time", "twoways"), method = c("chisq", "aux"), index = NULL, vcov = NULL, ... ) \method{phtest}{panelmodel}(x, x2, ...) } \arguments{ \item{x}{an object of class \code{"panelmodel"} or \code{"formula"},} \item{\dots}{further arguments to be passed on (currently none).} \item{data}{a \code{data.frame},} \item{model}{a character vector containing the names of two models (length(model) must be 2),} \item{effect}{a character specifying the effect to be introduced to both models, one of \code{"individual"}, \code{"time"}, or \code{"twoways"} (only for formula method),} \item{method}{one of \code{"chisq"} or \code{"aux"},} \item{index}{an optional vector of index variables,} \item{vcov}{an optional covariance function,} \item{x2}{an object of class \code{"panelmodel"} (only for panelmodel method/interface),} } \value{ An object of class \code{"htest"}. } \description{ Specification test for panel models. } \details{ The Hausman test (sometimes also called Durbin--Wu--Hausman test) is based on the difference of the vectors of coefficients of two different models. The \code{panelmodel} method computes the original version of the test based on a quadratic form \insertCite{HAUS:78}{plm}. The \code{formula} method, if \code{method = "chisq"} (default), computes the original version of the test based on a quadratic form; if \code{method ="aux"} then the auxiliary-regression-based version as in \insertCite{WOOL:10;textual}{plm}, Sec.10.7.3. Only the latter can be robustified by specifying a robust covariance estimator as a function through the argument \code{vcov} (see \strong{Examples}). The \code{effect} argument is only relevant for the formula method/interface and is then applied to both models. For the panelmodel method/interface, the test is run with the effects of the already estimated models. The equivalent tests in the \strong{one-way} case using a between model (either "within vs. between" or "random vs. between") \insertCite{@see @HAUS:TAYL:81 or @BALT:13 Sec.4.3}{plm} can also be performed by \code{phtest}, but only for \code{test = "chisq"}, not for the regression-based test. NB: These equivalent tests using the between model do not extend to the two-ways case. There are, however, some other equivalent tests, \insertCite{@see @KANG:85 or @BALT:13 Sec.4.3.7}{plm}, but those are unsupported by \code{phtest}. } \examples{ data("Gasoline", package = "plm") form <- lgaspcar ~ lincomep + lrpmg + lcarpcap wi <- plm(form, data = Gasoline, model = "within") re <- plm(form, data = Gasoline, model = "random") phtest(wi, re) phtest(form, data = Gasoline) phtest(form, data = Gasoline, effect = "time") # Regression-based Hausman test phtest(form, data = Gasoline, method = "aux") # robust Hausman test with vcov supplied as a function and # with additional parameters phtest(form, data = Gasoline, method = "aux", vcov = vcovHC) phtest(form, data = Gasoline, method = "aux", vcov = function(x) vcovHC(x, method="white2", type="HC3")) } \references{ \insertRef{HAUS:78}{plm} \insertRef{HAUS:TAYL:81}{plm} \insertRef{KANG:85}{plm} \insertRef{WOOL:10}{plm} \insertRef{BALT:13}{plm} } \author{ Yves Croissant, Giovanni Millo } \keyword{htest} plm/man/pcdtest.Rd0000644000176200001440000001521614433204314013555 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_cd.R \name{pcdtest} \alias{pcdtest} \alias{pcdtest.formula} \alias{pcdtest.panelmodel} \alias{pcdtest.pseries} \title{Tests of cross-section dependence for panel models} \usage{ pcdtest(x, ...) \method{pcdtest}{formula}( x, data, index = NULL, model = NULL, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... ) \method{pcdtest}{panelmodel}( x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... ) \method{pcdtest}{pseries}( x, test = c("cd", "sclm", "bcsclm", "lm", "rho", "absrho"), w = NULL, ... ) } \arguments{ \item{x}{an object of class \code{formula}, \code{panelmodel}, or \code{pseries} (depending on the respective interface) describing the model to be tested,} \item{\dots}{further arguments to be passed on for model estimation to \code{plm}, such as \code{effect} or \code{random.method}.} \item{data}{a \code{data.frame},} \item{index}{an optional numerical index, if \code{NULL}, the first two columns of the data.frame provided in argument \code{data} are assumed to be the index variables; for further details see \code{\link[=pdata.frame]{pdata.frame()}},} \item{model}{an optional character string indicating which type of model to estimate; if left to \code{NULL}, the original heterogeneous specification of Pesaran is used,} \item{test}{the type of test statistic to be returned. One of \itemize{ \item \code{"cd"} for Pesaran's CD statistic, \item \code{"lm"} for Breusch and Pagan's original LM statistic, \item \code{"sclm"} for the scaled version of Breusch and Pagan's LM statistic, \item \code{"bcsclm"} for the bias-corrected scaled version of Breusch and Pagan's LM statistic, \item \code{"rho"} for the average correlation coefficient, \item \code{"absrho"} for the average absolute correlation coefficient,}} \item{w}{either \code{NULL} (default) for the global tests or -- for the local versions of the statistics -- a \verb{n x n} \code{matrix} describing proximity between individuals, with \eqn{w_ij = a} where \eqn{a} is any number such that \code{as.logical(a)==TRUE}, if \eqn{i,j} are neighbours, \eqn{0} or any number \eqn{b} such that \code{as.logical(b)==FALSE} elsewhere. Only the lower triangular part (without diagonal) of \code{w} after coercing by \code{as.logical()} is evaluated for neighbouring information (but \code{w} can be symmetric). See also \strong{Details} and \strong{Examples},} } \value{ An object of class \code{"htest"}. } \description{ Pesaran's CD or Breusch--Pagan's LM (local or global) tests for cross sectional dependence in panel models } \details{ These tests are originally meant to use the residuals of separate estimation of one time--series regression for each cross-sectional unit in order to check for cross--sectional dependence (\code{model = NULL}). If a different model specification (\code{model = "within"}, \code{"random"}, \ldots{}) is assumed consistent, one can resort to its residuals for testing (which is common, e.g., when the time dimension's length is insufficient for estimating the heterogeneous model). If the time dimension is insufficient and \code{model = NULL}, the function defaults to estimation of a \code{within} model and issues a warning. The main argument of this function may be either a model of class \code{panelmodel} or a \code{formula} and \verb{data frame}; in the second case, unless \code{model} is set to \code{NULL}, all usual parameters relative to the estimation of a \code{plm} model may be passed on. The test is compatible with any consistent \code{panelmodel} for the data at hand, with any specification of \code{effect} (except for \code{test = "bcsclm"} which requires a within model with either individual or two-ways effect). E.g., specifying \code{effect = "time"} or \code{effect = "twoways"} allows to test for residual cross-sectional dependence after the introduction of time fixed effects to account for common shocks. A \strong{local} version of either test can be computed by supplying a proximity matrix (elements coercible to \code{logical}) with argument \code{w} which provides information on whether any pair of individuals are neighbours or not. If \code{w} is supplied, only neighbouring pairs will be used in computing the test; else, \code{w} will default to \code{NULL} and all observations will be used. The matrix need not be binary, so commonly used "row--standardized" matrices can be employed as well. \code{nb} objects from \CRANpkg{spdep} must instead be transformed into matrices by \CRANpkg{spdep}'s function \code{nb2mat} before using. The methods implemented are suitable also for unbalanced panels. Pesaran's CD test (\code{test="cd"}), Breusch and Pagan's LM test (\code{test="lm"}), and its scaled version (\code{test="sclm"}) are all described in \insertCite{PESA:04;textual}{plm} (and complemented by Pesaran (2005)). The bias-corrected scaled test (\code{test="bcsclm"}) is due to \insertCite{BALT:FENG:KAO:12}{plm} and only valid for within models including the individual effect (it's unbalanced version uses max(Tij) for T) in the bias-correction term). \insertCite{BREU:PAGA:80;textual}{plm} is the original source for the LM test. The test on a \code{pseries} is the same as a test on a pooled regression model of that variable on a constant, i.e., \code{pcdtest(some_pseries)} is equivalent to \verb{pcdtest(plm(some_var ~ 1, data = some_pdata.frame, model = "pooling")} and also equivalent to \code{pcdtest(some_var ~ 1, data = some_data)}, where \code{some_var} is the variable name in the data which corresponds to \code{some_pseries}. } \examples{ data("Grunfeld", package = "plm") ## test on heterogeneous model (separate time series regressions) pcdtest(inv ~ value + capital, data = Grunfeld, index = c("firm", "year")) ## test on two-way fixed effects homogeneous model pcdtest(inv ~ value + capital, data = Grunfeld, model = "within", effect = "twoways", index = c("firm", "year")) ## test on panelmodel object g <- plm(inv ~ value + capital, data = Grunfeld, index = c("firm", "year")) pcdtest(g) ## scaled LM test pcdtest(g, test = "sclm") ## test on pseries pGrunfeld <- pdata.frame(Grunfeld) pcdtest(pGrunfeld$value) ## local test ## define neighbours for individual 2: 1, 3, 4, 5 in lower triangular matrix w <- matrix(0, ncol= 10, nrow=10) w[2,1] <- w[3,2] <- w[4,2] <- w[5,2] <- 1 pcdtest(g, w = w) } \references{ \insertRef{BALT:FENG:KAO:12}{plm} \insertRef{BREU:PAGA:80}{plm} \insertRef{PESA:04}{plm} \insertRef{PESA:15}{plm} } \keyword{htest} plm/man/Snmesp.Rd0000644000176200001440000000143314124132276013354 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Snmesp} \alias{Snmesp} \title{Employment and Wages in Spain} \format{ A data frame containing: \describe{ \item{firm}{firm index} \item{year}{year} \item{n}{log of employment} \item{w}{log of wages} \item{y}{log of real output} \item{i}{log of intermediate inputs} \item{k}{log of real capital stock} \item{f}{real cash flow} } } \source{ Journal of Business Economics and Statistics data archive: \url{https://amstat.tandfonline.com/loi/ubes20/}. } \description{ A panel of 738 observations from 1983 to 1990 } \details{ \emph{total number of observations}: 5904 \emph{observation}: firms \emph{country}: Spain } \references{ \insertRef{ALON:AREL:99}{plm} } \keyword{datasets} plm/man/re-export_functions.Rd0000644000176200001440000000066114124132276016126 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \name{re-export_functions} \alias{re-export_functions} \alias{maxLik} \title{Functions exported from other packages} \description{ These functions are imported from other packages and re-exported by \pkg{plm} to enable smooth use within \pkg{plm}. Please follow the links to view the function's original documentation. } \keyword{internal} plm/man/LaborSupply.Rd0000644000176200001440000000136714124132276014371 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{LaborSupply} \alias{LaborSupply} \title{Wages and Hours Worked} \format{ A data frame containing : \describe{ \item{lnhr}{log of annual hours worked} \item{lnwg}{log of hourly wage} \item{kids}{number of children} \item{age}{age} \item{disab}{bad health} \item{id}{id} \item{year}{year} } } \source{ Online complements to Ziliak (1997). Journal of Business Economics and Statistics web site: \url{https://amstat.tandfonline.com/loi/ubes20/}. } \description{ A panel of 532 observations from 1979 to 1988 } \details{ \emph{number of observations} : 5320 } \references{ \insertRef{CAME:TRIV:05}{plm} \insertRef{ZILI:97}{plm} } \keyword{datasets} plm/man/Grunfeld.Rd0000644000176200001440000000422314124132276013655 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Grunfeld} \alias{Grunfeld} \title{Grunfeld's Investment Data} \format{ A data frame containing : \describe{ \item{firm}{observation} \item{year}{date} \item{inv}{gross Investment} \item{value}{value of the firm} \item{capital}{stock of plant and equipment} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} \url{https://www.wiley.com/legacy/wileychi/baltagi/supp/Grunfeld.fil} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ A balanced panel of 10 observational units (firms) from 1935 to 1954 } \details{ \emph{total number of observations} : 200 \emph{observation} : production units \emph{country} : United States } \note{ The Grunfeld data as provided in package \code{plm} is the same data as used in Baltagi (2001), see \strong{Examples} below. NB:\cr Various versions of the Grunfeld data circulate online. Also, various text books (and also varying among editions) and papers use different subsets of the original Grunfeld data, some of which contain errors in a few data points compared to the original data used by Grunfeld (1958) in his PhD thesis. See Kleiber/Zeileis (2010) and its accompanying website for a comparison of various Grunfeld data sets in use. } \examples{ \dontrun{ # Compare plm's Grunfeld data to Baltagi's (2001) Grunfeld data: data("Grunfeld", package="plm") Grunfeld_baltagi2001 <- read.csv("http://www.wiley.com/legacy/wileychi/ baltagi/supp/Grunfeld.fil", sep="", header = FALSE) library(compare) compare::compare(Grunfeld, Grunfeld_baltagi2001, allowAll = T) # same data set } } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{GRUN:58}{plm} \insertRef{KLEI:ZEIL:10}{plm} website accompanying the paper with various variants of the Grunfeld data: \url{https://www.zeileis.org/grunfeld/}. } \seealso{ For the complete Grunfeld data (11 firms), see \link[AER:Grunfeld]{AER::Grunfeld}, in the \code{AER} package. } \keyword{datasets} plm/man/pwaldtest.Rd0000644000176200001440000001267014124132276014123 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_general.R \name{pwaldtest} \alias{pwaldtest} \alias{pwaldtest.plm} \alias{pwaldtest.pvcm} \alias{pwaldtest.pgmm} \title{Wald-style Chi-square Test and F Test} \usage{ pwaldtest(x, ...) \method{pwaldtest}{plm}( x, test = c("Chisq", "F"), vcov = NULL, df2adj = (test == "F" && !is.null(vcov) && missing(.df2)), .df1, .df2, ... ) \method{pwaldtest}{pvcm}(x, ...) \method{pwaldtest}{pgmm}(x, param = c("coef", "time", "all"), vcov = NULL, ...) } \arguments{ \item{x}{an estimated model of which the coefficients should be tested (usually of class \code{"plm"}/\code{"pvcm"}/\code{"pgmm"})`,} \item{\dots}{further arguments (currently none).} \item{test}{a character, indicating the test to be performed, may be either \code{"Chisq"} or \code{"F"} for the Wald-style Chi-square test or F test, respectively,} \item{vcov}{\code{NULL} by default; a \code{matrix} giving a variance--covariance matrix or a function which computes such; if supplied (non \code{NULL}), the test is carried out using the variance--covariance matrix indicated resulting in a robust test,} \item{df2adj}{logical, only relevant for \code{test = "F"}, indicating whether the adjustment for clustered standard errors for the second degrees of freedom parameter should be performed (see \strong{Details}, also for further requirements regarding the variance--covariance matrix in \code{vcov} for the adjustment to be performed),} \item{.df1}{a numeric, used if one wants to overwrite the first degrees of freedom parameter in the performed test (usually not used),} \item{.df2}{a numeric, used if one wants to overwrite the second degrees of freedom parameter for the F test (usually not used),} \item{param}{(for pgmm method only): select the parameters to be tested: \code{"coef"}, \code{"time"}, or `"all"``.} } \value{ An object of class \code{"htest"}, except for pvcm's within model for which a data.frame with results of the Wald chi-square tests and F tests per regression is returned. } \description{ Wald-style Chi-square test and F test of slope coefficients being zero jointly, including robust versions of the tests. } \details{ \code{pwaldtest} can be used stand--alone with a plm object, a pvcm object, and a pgmm object (for pvcm objects only the 'random' type is valid and no further arguments are processed; for pgmm objects only arguments \code{param} and \code{vcov} are valid). It is also used in \code{\link[=summary.plm]{summary.plm()}} to produce the F statistic and the Chi-square statistic for the joint test of coefficients and in \code{\link[=summary.pgmm]{summary.pgmm()}}. \code{pwaldtest} performs the test if the slope coefficients of a panel regression are jointly zero. It does not perform general purpose Wald-style tests (for those, see \code{\link[lmtest:waldtest]{lmtest::waldtest()}} (from package \CRANpkg{lmtest}) or \code{\link[car:linearHypothesis]{car::linearHypothesis()}} (from package \CRANpkg{car})). If a user specified variance-covariance matrix/function is given in argument \code{vcov}, the robust version of the tests are carried out. In that case, if the F test is requested (\code{test = "F"}) and no overwriting of the second degrees of freedom parameter is given (by supplying argument (\code{.df2})), the adjustment of the second degrees of freedom parameter is performed by default. The second degrees of freedom parameter is adjusted to be the number of unique elements of the cluster variable - 1, e. g., the number of individuals minus 1. For the degrees of freedom adjustment of the F test in general, see e. g. \insertCite{CAME:MILL:15;textual}{plm}, section VII; \insertCite{ANDR:GOLS:SCMI:13}{plm}, pp. 126, footnote 4. The degrees of freedom adjustment requires the vcov object supplied or created by a supplied function to carry an attribute called "cluster" with a known clustering described as a character (for now this could be either \code{"group"} or \code{"time"}). The vcovXX functions of the package \pkg{plm} provide such an attribute for their returned variance--covariance matrices. No adjustment is done for unknown descriptions given in the attribute "cluster" or when the attribute "cluster" is not present. Robust vcov objects/functions from package \CRANpkg{clubSandwich} work as inputs to \code{pwaldtest}'s F test because a they are translated internally to match the needs described above. } \examples{ data("Grunfeld", package = "plm") mod_fe <- plm(inv ~ value + capital, data = Grunfeld, model = "within") mod_re <- plm(inv ~ value + capital, data = Grunfeld, model = "random") pwaldtest(mod_fe, test = "F") pwaldtest(mod_re, test = "Chisq") # with robust vcov (matrix, function) pwaldtest(mod_fe, vcov = vcovHC(mod_fe)) pwaldtest(mod_fe, vcov = function(x) vcovHC(x, type = "HC3")) pwaldtest(mod_fe, vcov = vcovHC(mod_fe), df2adj = FALSE) # w/o df2 adjustment # example without attribute "cluster" in the vcov vcov_mat <- vcovHC(mod_fe) attr(vcov_mat, "cluster") <- NULL # remove attribute pwaldtest(mod_fe, vcov = vcov_mat) # no df2 adjustment performed } \references{ \insertRef{WOOL:10}{plm} \insertRef{ANDR:GOLS:SCMI:13}{plm} \insertRef{CAME:MILL:15}{plm} } \seealso{ \code{\link[=vcovHC]{vcovHC()}} for an example of the vcovXX functions, a robust estimation for the variance--covariance matrix; \code{\link[=summary.plm]{summary.plm()}} } \author{ Yves Croissant (initial implementation) and Kevin Tappe (extensions: vcov argument and F test's df2 adjustment) } \keyword{htest} plm/man/mtest.Rd0000644000176200001440000000603714741261755013262 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_gmm.R \name{mtest} \alias{mtest} \alias{mtest.pgmm} \title{Arellano--Bond Test of Serial Correlation} \usage{ mtest(object, ...) \method{mtest}{pgmm}(object, order = 1L, vcov = NULL, ...) } \arguments{ \item{object}{an object of class \code{"pgmm"},} \item{\dots}{further arguments (currently unused).} \item{order}{integer: the order of the serial correlation,} \item{vcov}{a matrix of covariance for the coefficients or a function to compute it,} } \value{ An object of class \code{"htest"}. } \description{ Test of serial correlation for models estimated by GMM } \details{ The Arellano--Bond test is a test of correlation based on the residuals of the estimation. By default, the computation is done with the standard covariance matrix of the coefficients. A robust estimator of a covariance matrix can be supplied with the \code{vcov} argument. Note that \code{mtest} computes like DPD for Ox and xtabond do, i.e., uses for two-steps models the one-step model's residuals which were used to construct the efficient two-steps estimator, see \insertCite{DOOR:AREL:BOND:12}{plm}, p. 32, footnote 7; As noted by \insertCite{AREL:BOND:91}{plm} (p. 282), the m statistic is rather flexible and can be defined with any consistent GMM estimator which gives leeway for implementation, but the test's asymptotic power depends on the estimator's efficiency. \insertCite{AREL:BOND:91}{plm} (see their footnote 9) used DPD98 for Gauss (\insertCite{AREL:BOND:98}{plm}) as did \insertCite{WIND:05}{plm} (see footnote 10) for the basis of his covariance correction, both with a slightly different implementation. Hence some results for \code{mtest} with two-step models diverge from original papers, see examples below. } \examples{ data("EmplUK", package = "plm") # Arellano/Bond 1991, Table 4, column (a1) ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "onestep") mtest(ab.a1, 1L) mtest(ab.a1, 2L, vcov = vcovHC) # Windmeijer (2005), table 2, onestep with corrected std. err ab.b.onestep <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "onestep") mtest(ab.b.onestep, 1L, vcov = vcovHC) mtest(ab.b.onestep, 2L, vcov = vcovHC) # Arellano/Bond 1991, Table 4, column (a2) ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") mtest(ab.a2, 1L) mtest(ab.a2, 2L) # while a la Arellano/Bond (1991) -0.434 } \references{ \insertAllCited{} } \seealso{ \code{\link[=pgmm]{pgmm()}}, \code{\link[=vcovHC.pgmm]{vcovHC.pgmm()}} } \author{ Yves Croissant } \keyword{htest} plm/man/purtest.Rd0000644000176200001440000001672514340404505013624 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_uroot.R \name{purtest} \alias{purtest} \alias{print.purtest} \alias{summary.purtest} \alias{print.summary.purtest} \title{Unit root tests for panel data} \usage{ purtest( object, data = NULL, index = NULL, test = c("levinlin", "ips", "madwu", "Pm", "invnormal", "logit", "hadri"), exo = c("none", "intercept", "trend"), lags = c("SIC", "AIC", "Hall"), pmax = 10, Hcons = TRUE, q = NULL, dfcor = FALSE, fixedT = TRUE, ips.stat = NULL, ... ) \method{print}{purtest}(x, ...) \method{summary}{purtest}(object, ...) \method{print}{summary.purtest}(x, ...) } \arguments{ \item{object, x}{Either a \code{"data.frame"} or a matrix containing the time series (individuals as columns), a \code{"pseries"} object, a formula; a \code{"purtest"} object for the print and summary methods,} \item{data}{a \code{"data.frame"} or a \code{"pdata.frame"} object (required for formula interface, see Details and Examples),} \item{index}{the indexes,} \item{test}{the test to be computed: one of \code{"levinlin"} for \insertCite{LEVIN:LIN:CHU:02;textual}{plm}, \code{"ips"} for \insertCite{IM:PESAR:SHIN:03;textual}{plm}, \code{"madwu"} for \insertCite{MADDA:WU:99;textual}{plm}, \code{"Pm"} , \code{"invnormal"}, or \code{"logit"} for various tests as in \insertCite{CHOI:01;textual}{plm}, or \code{"hadri"} for \insertCite{HADR:00;textual}{plm}, see Details,} \item{exo}{the exogenous variables to introduce in the augmented Dickey--Fuller (ADF) regressions, one of: no exogenous variables (\code{"none"}), individual intercepts (\code{"intercept"}), or individual intercepts and trends (\code{"trend"}), but see Details,} \item{lags}{the number of lags to be used for the augmented Dickey-Fuller regressions: either a single value integer (the number of lags for all time series), a vector of integers (one for each time series), or a character string for an automatic computation of the number of lags, based on the AIC (\code{"AIC"}), the SIC (\code{"SIC"}), or on the method by \insertCite{HALL:94;textual}{plm} (\code{"Hall"}); argument is irrelevant for \code{test = "hadri"},} \item{pmax}{maximum number of lags (irrelevant for \code{test = "hadri"}),} \item{Hcons}{logical, only relevant for \code{test = "hadri"}, indicating whether the heteroskedasticity-consistent test of \insertCite{HADR:00;textual}{plm} should be computed,} \item{q}{the bandwidth for the estimation of the long-run variance (only relevant for \code{test = "levinlin"}, the default (\code{q = NULL}) gives the value as suggested by the authors as round(3.21 * T^(1/3))),} \item{dfcor}{logical, indicating whether the standard deviation of the regressions is to be computed using a degrees-of-freedom correction,} \item{fixedT}{logical, indicating whether the individual ADF regressions are to be computed using the same number of observations (irrelevant for \code{test = "hadri"}),} \item{ips.stat}{\code{NULL} or character of length 1 to request a specific IPS statistic, one of \code{"Wtbar"} (also default if \code{ips.stat = NULL}), \code{"Ztbar"}, \code{"tbar"},} \item{\dots}{further arguments (can set argument \code{p.approx} to be passed on to non-exported function \code{padf} to either \code{"MacKinnon1994"} or \code{"MacKinnon1996"} to force a specific method for p-value approximation, the latter only being possible if package 'urca' is installed).} } \value{ For purtest: An object of class \code{"purtest"}: a list with the elements named: \itemize{ \item \code{"statistic"} (a \code{"htest"} object), \item \code{"call"}, \item \code{"args"}, \item \code{"idres"} (containing results from the individual regressions), \item \code{"adjval"} (containing the simulated means and variances needed to compute the statistic, for \code{test = "levinlin"} and \code{"ips"}, otherwise \code{NULL}), \item \code{"sigma2"} (short-run and long-run variance for \code{test = "levinlin"}, otherwise \code{NULL}). } } \description{ \code{purtest} implements several testing procedures that have been proposed to test unit root hypotheses with panel data. } \details{ All these tests except \code{"hadri"} are based on the estimation of augmented Dickey-Fuller (ADF) regressions for each time series. A statistic is then computed using the t-statistics associated with the lagged variable. The Hadri residual-based LM statistic is the cross-sectional average of the individual KPSS statistics \insertCite{KWIA:PHIL:SCHM:SHIN:92;textual}{plm}, standardized by their asymptotic mean and standard deviation. Several Fisher-type tests that combine p-values from tests based on ADF regressions per individual are available: \itemize{ \item \code{"madwu"} is the inverse chi-squared test \insertCite{MADDA:WU:99;textual}{plm}, also called P test by \insertCite{CHOI:01;textual}{plm}. \item \code{"Pm"} is the modified P test proposed by \insertCite{CHOI:01;textual}{plm} for large N, \item \code{"invnormal"} is the inverse normal test by \insertCite{CHOI:01;textual}{plm}, and \item \code{"logit"} is the logit test by \insertCite{CHOI:01;textual}{plm}. } The individual p-values for the Fisher-type tests are approximated as described in \insertCite{MACK:96;textual}{plm} if the package \CRANpkg{urca} (\insertCite{PFAFF:08;textual}{plm}) is available, otherwise as described in \insertCite{MACK:94;textual}{plm}. For the test statistic tbar of the test of Im/Pesaran/Shin (2003) (\code{ips.stat = "tbar"}), no p-value is given but 1\%, 5\%, and 10\% critical values are interpolated from paper's tabulated values via inverse distance weighting (printed and contained in the returned value's element \code{statistic$ips.tbar.crit}). Hadri's test, the test of Levin/Lin/Chu, and the tbar statistic of Im/Pesaran/Shin are not applicable to unbalanced panels; the tbar statistic is not applicable when \code{lags > 0} is given. The exogenous instruments of the tests (where applicable) can be specified in several ways, depending on how the data is handed over to the function: \itemize{ \item For the \code{formula}/\code{data} interface (if \code{data} is a \code{data.frame}, an additional \code{index} argument should be specified); the formula should be of the form: \code{y ~ 0}, \code{y ~ 1}, or \code{y ~ trend} for a test with no exogenous variables, with an intercept, or with individual intercepts and time trend, respectively. The \code{exo} argument is ignored in this case. \item For the \code{data.frame}, \code{matrix}, and \code{pseries} interfaces: in these cases, the exogenous variables are specified using the \code{exo} argument. } With the associated \code{summary} and \code{print} methods, additional information can be extracted/displayed (see also Value). } \examples{ data("Grunfeld", package = "plm") y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) # individuals in columns purtest(y, pmax = 4, exo = "intercept", test = "madwu") ## same via pseries interface pGrunfeld <- pdata.frame(Grunfeld, index = c("firm", "year")) purtest(pGrunfeld$inv, pmax = 4, exo = "intercept", test = "madwu") ## same via formula interface purtest(inv ~ 1, data = Grunfeld, index = c("firm", "year"), pmax = 4, test = "madwu") } \references{ \insertAllCited{} } \seealso{ \code{\link[=cipstest]{cipstest()}}, \code{\link[=phansitest]{phansitest()}} } \author{ Yves Croissant and for "Pm", "invnormal", and "logit" Kevin Tappe } \keyword{htest} plm/man/vcovDC.Rd0000644000176200001440000000674014340404505013276 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovDC} \alias{vcovDC} \alias{vcovDC.plm} \title{Double-Clustering Robust Covariance Matrix Estimator} \usage{ vcovDC(x, ...) \method{vcovDC}{plm}(x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), ...) } \arguments{ \item{x}{an object of class \code{"plm"} or \code{"pcce"}} \item{\dots}{further arguments} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"sss"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"}, see Details,} } \value{ An object of class \code{"matrix"} containing the estimate of the covariance matrix of coefficients. } \description{ High-level convenience wrapper for double-clustering robust covariance matrix estimators \emph{a la} \insertCite{THOM:11;textual}{plm} and \insertCite{CAME:GELB:MILL:11;textual}{plm} for panel models. } \details{ \code{vcovDC} is a function for estimating a robust covariance matrix of parameters for a panel model with errors clustering along both dimensions. The function is a convenience wrapper simply summing a group- and a time-clustered covariance matrix and subtracting a diagonal one \emph{a la} White. Weighting schemes specified by \code{type} are analogous to those in \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} in package \CRANpkg{sandwich} and are justified theoretically (although in the context of the standard linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. The main use of \code{vcovDC} (and the other variance-covariance estimators provided in the package \code{vcovHC}, \code{vcovBK}, \code{vcovNW}, \code{vcovSCC}) is to pass it to plm's own functions like \code{summary}, \code{pwaldtest}, and \code{phtest} or together with testing functions from the \code{lmtest} and \code{car} packages. All of these typically allow passing the \code{vcov} or \code{vcov.} parameter either as a matrix or as a function, e.g., for Wald--type testing: argument \code{vcov.} to \code{coeftest()}, argument \code{vcov} to \code{waldtest()} and other methods in the \CRANpkg{lmtest} package; and argument \code{vcov.} to \code{linearHypothesis()} in the \CRANpkg{car} package (see the examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. } \examples{ data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") ## as function input to plm's summary method (with and without additional arguments): summary(zz, vcov = vcovDC) summary(zz, vcov = function(x) vcovDC(x, type="HC1", maxlag=4)) ## standard coefficient significance test library(lmtest) coeftest(zz) ## DC robust significance test, default coeftest(zz, vcov.=vcovDC) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovDC(x, type="HC1", maxlag=4)) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovDC) \dontrun{ ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovDC) } } \references{ \insertRef{CAME:GELB:MILL:11}{plm} \insertRef{CRIB:04}{plm} \insertRef{MACK:WHIT:85}{plm} \insertRef{THOM:11}{plm} \insertRef{ZEIL:04}{plm} } \seealso{ \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} from the \CRANpkg{sandwich} package for weighting schemes (\code{type} argument). } \author{ Giovanni Millo } \keyword{regression} plm/man/is.pbalanced.Rd0000644000176200001440000000655014340404505014434 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{is.pbalanced} \alias{is.pbalanced} \alias{is.pbalanced.default} \alias{is.pbalanced.data.frame} \alias{is.pbalanced.pdata.frame} \alias{is.pbalanced.pseries} \alias{is.pbalanced.pggls} \alias{is.pbalanced.pcce} \alias{is.pbalanced.pmg} \alias{is.pbalanced.pgmm} \alias{is.pbalanced.panelmodel} \title{Check if data are balanced} \usage{ is.pbalanced(x, ...) \method{is.pbalanced}{default}(x, y, ...) \method{is.pbalanced}{data.frame}(x, index = NULL, ...) \method{is.pbalanced}{pdata.frame}(x, ...) \method{is.pbalanced}{pseries}(x, ...) \method{is.pbalanced}{pggls}(x, ...) \method{is.pbalanced}{pcce}(x, ...) \method{is.pbalanced}{pmg}(x, ...) \method{is.pbalanced}{pgmm}(x, ...) \method{is.pbalanced}{panelmodel}(x, ...) } \arguments{ \item{x}{an object of class \code{pdata.frame}, \code{data.frame}, \code{pseries}, \code{panelmodel}, or \code{pgmm},} \item{\dots}{further arguments.} \item{y}{(only in default method) the time index variable (2nd index variable),} \item{index}{only relevant for \code{data.frame} interface; if \code{NULL}, the first two columns of the data.frame are assumed to be the index variables; if not \code{NULL}, both dimensions ('individual', 'time') need to be specified by \code{index} as character of length 2 for data frames, for further details see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ A logical indicating whether the data associated with object \code{x} are balanced (\code{TRUE}) or not (\code{FALSE}). } \description{ This function checks if the data are balanced, i.e., if each individual has the same time periods } \details{ Balanced data are data for which each individual has the same time periods. The returned values of the \code{is.pbalanced(object)} methods are identical to \code{pdim(object)$balanced}. \code{is.pbalanced} is provided as a short cut and is faster than \code{pdim(object)$balanced} because it avoids those computations performed by \code{pdim} which are unnecessary to determine the balancedness of the data. } \examples{ # take balanced data and make it unbalanced # by deletion of 2nd row (2nd time period for first individual) data("Grunfeld", package = "plm") Grunfeld_missing_period <- Grunfeld[-2, ] is.pbalanced(Grunfeld_missing_period) # check if balanced: FALSE pdim(Grunfeld_missing_period)$balanced # same # pdata.frame interface pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) is.pbalanced(Grunfeld_missing_period) # pseries interface is.pbalanced(pGrunfeld_missing_period$inv) } \seealso{ \code{\link[=punbalancedness]{punbalancedness()}} for two measures of unbalancedness, \code{\link[=make.pbalanced]{make.pbalanced()}} to make data balanced; \code{\link[=is.pconsecutive]{is.pconsecutive()}} to check if data are consecutive; \code{\link[=make.pconsecutive]{make.pconsecutive()}} to make data consecutive (and, optionally, also balanced).\cr \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), \code{\link[=pvar]{pvar()}} to check for individual and time variation of a 'pdata.frame' (and other objects), \code{\link[=pseries]{pseries()}}, \code{\link[=data.frame]{data.frame()}}, \code{\link[=pdata.frame]{pdata.frame()}}. } \keyword{attribute} plm/man/vcovSCC.Rd0000644000176200001440000001054214340404505013413 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovSCC} \alias{vcovSCC} \alias{vcovSCC.plm} \alias{vcovSCC.pcce} \title{Driscoll and Kraay (1998) Robust Covariance Matrix Estimator} \usage{ vcovSCC(x, ...) \method{vcovSCC}{plm}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = "time", maxlag = NULL, inner = c("cluster", "white", "diagavg"), wj = function(j, maxlag) 1 - j/(maxlag + 1), ... ) \method{vcovSCC}{pcce}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = "time", maxlag = NULL, inner = c("cluster", "white", "diagavg"), wj = function(j, maxlag) 1 - j/(maxlag + 1), ... ) } \arguments{ \item{x}{an object of class \code{"plm"} or \code{"pcce"}} \item{\dots}{further arguments} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"sss"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"}, see Details,} \item{cluster}{switch for vcovG; set at \code{"time"} here,} \item{maxlag}{either \code{NULL} or a positive integer specifying the maximum lag order before truncation} \item{inner}{the function to be applied to the residuals inside the sandwich: \code{"cluster"} for SCC, \code{"white"} for Newey-West, (\code{"diagavg"} for compatibility reasons)} \item{wj}{weighting function to be applied to lagged terms,} } \value{ An object of class \code{"matrix"} containing the estimate of the covariance matrix of coefficients. } \description{ Nonparametric robust covariance matrix estimators \emph{a la Driscoll and Kraay} for panel models with cross-sectional \emph{and} serial correlation. } \details{ \code{vcovSCC} is a function for estimating a robust covariance matrix of parameters for a panel model according to the \insertCite{DRIS:KRAA:98;textual}{plm} method, which is consistent with cross--sectional and serial correlation in a T-asymptotic setting and irrespective of the N dimension. The use with random effects models is undocumented. Weighting schemes specified by \code{type} are analogous to those in \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} in package \CRANpkg{sandwich} and are justified theoretically (although in the context of the standard linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}). The main use of \code{vcovSCC} (and the other variance-covariance estimators provided in the package \code{vcovHC}, \code{vcovBK}, \code{vcovNW}, \code{vcovDC}) is to pass it to plm's own functions like \code{summary}, \code{pwaldtest}, and \code{phtest} or together with testing functions from the \code{lmtest} and \code{car} packages. All of these typically allow passing the \code{vcov} or \code{vcov.} parameter either as a matrix or as a function, e.g., for Wald--type testing: argument \code{vcov.} to \code{coeftest()}, argument \code{vcov} to \code{waldtest()} and other methods in the \CRANpkg{lmtest} package; and argument \code{vcov.} to \code{linearHypothesis()} in the \CRANpkg{car} package (see the examples), \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. } \examples{ data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") ## as function input to plm's summary method (with and without additional arguments): summary(zz, vcov = vcovSCC) summary(zz, vcov = function(x) vcovSCC(x, method="arellano", type="HC1")) ## standard coefficient significance test library(lmtest) coeftest(zz) ## SCC robust significance test, default coeftest(zz, vcov.=vcovSCC) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovSCC(x, type="HC1", maxlag=4)) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovSCC) \dontrun{ ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovSCC) } } \references{ \insertRef{CRIB:04}{plm} \insertRef{DRIS:KRAA:98}{plm} \insertRef{HOEC:07}{plm} \insertRef{MACK:WHIT:85}{plm} \insertRef{ZEIL:04}{plm} } \seealso{ \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} from the \CRANpkg{sandwich} package for weighting schemes (\code{type} argument). } \author{ Giovanni Millo, partially ported from Daniel Hoechle's (2007) Stata code } \keyword{regression} plm/man/pseriesfy.Rd0000644000176200001440000000327614124132276014127 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{pseriesfy} \alias{pseriesfy} \title{Turn all columns of a pdata.frame into class pseries.} \usage{ pseriesfy(x, ...) } \arguments{ \item{x}{an object of class \code{"pdata.frame"},} \item{\dots}{further arguments (currently not used).} } \value{ A pdata.frame like the input pdata.frame but with all columns turned into pseries. } \description{ This function takes a pdata.frame and turns all of its columns into objects of class pseries. } \details{ Background: Initially created pdata.frames have as columns the pure/basic class (e.g., numeric, factor, character). When extracting a column from such a pdata.frame, the extracted column is turned into a pseries. At times, it can be convenient to apply data transformation operations on such a \code{pseriesfy}-ed pdata.frame, see Examples. } \examples{ library("plm") data("Grunfeld", package = "plm") pGrun <- pdata.frame(Grunfeld[ , 1:4], drop.index = TRUE) pGrun2 <- pseriesfy(pGrun) # pseriesfy-ed pdata.frame # compare classes of columns lapply(pGrun, class) lapply(pGrun2, class) # When using with() with(pGrun, lag(value)) # dispatches to base R's lag() with(pGrun2, lag(value)) # dispatches to plm's lag() respect. panel structure # When lapply()-ing lapply(pGrun, lag) # dispatches to base R's lag() lapply(pGrun2, lag) # dispatches to plm's lag() respect. panel structure # as.list(., keep.attributes = TRUE) on a non-pseriesfy-ed # pdata.frame is similar and dispatches to plm's lag lapply(as.list(pGrun, keep.attributes = TRUE), lag) } \seealso{ \code{\link[=pdata.frame]{pdata.frame()}}, \code{\link[=as.list]{as.list()}} } \keyword{attribute} plm/man/vcovNW.Rd0000644000176200001440000000756314340404505013340 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovNW} \alias{vcovNW} \alias{vcovNW.plm} \alias{vcovNW.pcce} \title{Newey and West (1987) Robust Covariance Matrix Estimator} \usage{ vcovNW(x, ...) \method{vcovNW}{plm}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), maxlag = NULL, wj = function(j, maxlag) 1 - j/(maxlag + 1), ... ) \method{vcovNW}{pcce}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), maxlag = NULL, wj = function(j, maxlag) 1 - j/(maxlag + 1), ... ) } \arguments{ \item{x}{an object of class \code{"plm"} or \code{"pcce"}} \item{\dots}{further arguments} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"sss"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"}, see Details,} \item{maxlag}{either \code{NULL} or a positive integer specifying the maximum lag order before truncation} \item{wj}{weighting function to be applied to lagged terms,} } \value{ An object of class \code{"matrix"} containing the estimate of the covariance matrix of coefficients. } \description{ Nonparametric robust covariance matrix estimators \emph{a la Newey and West} for panel models with serial correlation. } \details{ \code{vcovNW} is a function for estimating a robust covariance matrix of parameters for a panel model according to the \insertCite{NEWE:WEST:87;textual}{plm} method. The function works as a restriction of the \insertCite{DRIS:KRAA:98;textual}{plm} covariance (see \code{\link[=vcovSCC]{vcovSCC()}}) to no cross--sectional correlation. Weighting schemes specified by \code{type} are analogous to those in \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} in package \CRANpkg{sandwich} and are justified theoretically (although in the context of the standard linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. The main use of \code{vcovNW} (and the other variance-covariance estimators provided in the package \code{vcovHC}, \code{vcovBK}, \code{vcovDC}, \code{vcovSCC}) is to pass it to plm's own functions like \code{summary}, \code{pwaldtest}, and \code{phtest} or together with testing functions from the \code{lmtest} and \code{car} packages. All of these typically allow passing the \code{vcov} or \code{vcov.} parameter either as a matrix or as a function, e.g., for Wald--type testing: argument \code{vcov.} to \code{coeftest()}, argument \code{vcov} to \code{waldtest()} and other methods in the \CRANpkg{lmtest} package; and argument \code{vcov.} to \code{linearHypothesis()} in the \CRANpkg{car} package (see the examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. } \examples{ data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") ## as function input to plm's summary method (with and without additional arguments): summary(zz, vcov = vcovNW) summary(zz, vcov = function(x) vcovNW(x, method="arellano", type="HC1")) ## standard coefficient significance test library(lmtest) coeftest(zz) ## NW robust significance test, default coeftest(zz, vcov.=vcovNW) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovNW(x, type="HC1", maxlag=4)) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovNW) \dontrun{ ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovNW) } } \references{ \insertRef{CRIB:04}{plm} \insertRef{DRIS:KRAA:98}{plm} \insertRef{MACK:WHIT:85}{plm} \insertRef{NEWE:WEST:87}{plm} \insertRef{ZEIL:04}{plm} } \seealso{ \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} from the \CRANpkg{sandwich} package for weighting schemes (\code{type} argument). } \author{ Giovanni Millo } \keyword{regression} plm/man/pvcm.Rd0000644000176200001440000001265214460026404013057 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_vcm.R \name{pvcm} \alias{pvcm} \alias{summary.pvcm} \alias{print.summary.pvcm} \title{Variable Coefficients Models for Panel Data} \usage{ pvcm( formula, data, subset, na.action, effect = c("individual", "time"), model = c("within", "random"), index = NULL, ... ) \method{summary}{pvcm}(object, ...) \method{print}{summary.pvcm}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{lm},} \item{na.action}{see \code{lm},} \item{effect}{the effects introduced in the model: one of \code{"individual"}, \code{"time"},} \item{model}{one of \code{"within"}, \code{"random"},} \item{index}{the indexes, see \code{\link[=pdata.frame]{pdata.frame()}},} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{"pvcm"},} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} } \value{ An object of class \code{c("pvcm", "panelmodel")}, which has the following elements: \item{coefficients}{the vector (numeric) of coefficients (or data frame for fixed effects),} \item{residuals}{the vector (numeric) of residuals,} \item{fitted.values}{the vector of fitted values,} \item{vcov}{the covariance matrix of the coefficients (a list for fixed effects model (\code{model = "within"})),} \item{df.residual}{degrees of freedom of the residuals,} \item{model}{a data frame containing the variables used for the estimation,} \item{call}{the call,} \item{args}{the arguments of the call,} random coefficients model only (\code{model = "random"}): \item{Delta}{the estimation of the covariance matrix of the coefficients,} \item{single.coefs}{matrix of unbiased coefficients of single estimations,} \item{single.vcov}{list of variance-covariance matrices for \code{single.coefs},} \item{single.std.error}{matrix of standard errors of \code{single.coefs},} \item{chisq.test}{htest object: parameter stability test (homogeneous coefficients),} separate OLS estimations only (\code{model = "within"}): \item{std.error}{a data frame containing standard errors for all coefficients for each single regression.} } \description{ Estimators for random and fixed effects models with variable coefficients. } \details{ \code{pvcm} estimates variable coefficients models. Individual or time effects are introduced, respectively, if \code{effect = "individual"} (default) or \code{effect = "time"}. Coefficients are assumed to be fixed if \code{model = "within"}, i.e., separate pooled OLS models are estimated per individual (\code{effect = "individual"}) or per time period (\code{effect = "time"}). Coefficients are assumed to be random if \code{model = "random"} and the model by \insertCite{SWAM:70;textual}{plm} is estimated; it is a generalized least squares model which uses the results of the OLS models estimated per individual/time dimension (coefficient estimates are weighted averages of the single OLS estimates with weights inversely proportional to the variance-covariance matrices). The corresponding unbiased single coefficients, variance-covariance matrices, and standard errors of the random coefficients model are available in the returned object (see \emph{Value}). A test for parameter stability (homogeneous coefficients) of the random coefficients model is printed in the model's summary and is available in the returned object (see \emph{Value}). \code{pvcm} objects have \code{print}, \code{summary} and \code{print.summary} methods. } \examples{ data("Produc", package = "plm") zw <- pvcm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "within") zr <- pvcm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "random") ## replicate Greene (2018), p. 452, table 11.22/(2012), p. 419, table 11.14 summary(pvcm(log(gsp) ~ log(pc) + log(hwy) + log(water) + log(util) + log(emp) + unemp, data = Produc, model = "random")) ## replicate Poi (2003) (need data adjustment, remaining tiny diffs are due ## Poi's data set having more digits, not justified by the original Grunfeld data) data(Grunfeld) # need firm = 1, 4, 3, 8, 2 Gr.Poi.2003 <- Grunfeld[c(1:20, 61:80, 41:60, 141:160, 21:40), ] Gr.Poi.2003$firm <- rep(1:5, each = 20) Gr.Poi.2003[c(86, 98), "inv"] <- c(261.6, 645.2) Gr.Poi.2003[c(92), "capital"] <- c(232.6) mod.poi <- pvcm(inv ~ value + capital, data = Gr.Poi.2003, model = "random") summary(mod.poi) print(mod.poi$single.coefs) print(mod.poi$single.std.err) \dontrun{ # replicate Swamy (1971), p. 166, table 5.2 data(Grunfeld, package = "AER") # 11 firm Grunfeld data needed from package AER gw <- pvcm(invest ~ value + capital, data = Grunfeld, index = c("firm", "year")) # close replication of Swamy (1970), (7.4) [remaining diffs likely due to less # precise numerical methods in the 1970, as supposed in Kleiber/Zeileis (2010), p. 9] gr <- pvcm(invest ~ value + capital, data = Grunfeld, index = c("firm", "year"), model = "random") } } \references{ \insertAllCited{} \insertRef{SWAM:71}{plm} \insertRef{GREE:18}{plm} \insertRef{POI:03}{plm} \insertRef{KLEI:ZEIL:10}{plm} } \author{ Yves Croissant, Kevin Tappe } \keyword{regression} plm/man/phansitest.Rd0000644000176200001440000001054514557257164014313 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_uroot.R \name{phansitest} \alias{phansitest} \alias{print.phansitest} \title{Simes Test for unit roots in panel data} \usage{ phansitest(object, alpha = 0.05) \method{print}{phansitest}(x, cutoff = 10L, ...) } \arguments{ \item{object}{either a numeric containing p-values of individual unit root test results (does not need to be sorted) or a suitable \code{purtest} object (as produced by \code{purtest()} for a test which gives p-values of the individuals (Hadri's test in \code{purtest} is not suitable)),} \item{alpha}{numeric, the pre-specified significance level (defaults to \code{0.05}),} \item{x}{an object of class \code{c("phansitest", "list")} as produced by \code{phansitest} to be printed,} \item{cutoff}{integer, cutoff value for printing of enumeration of individuals with rejected individual H0, for print method only,} \item{\dots}{further arguments (currently not used).} } \value{ For \code{phansitest}, an object of class \code{c("phansitest", "list")} which is a list with the elements: \itemize{ \item \code{id}: integer, the identifier of the individual (integer sequence referring to position in input), \item \code{name}: character, name of the input's individual (if it has a name, otherwise "1", "2", "3", ...), \item \code{p}: numeric, p-values as input (either the numeric or extracted from the purtest object), \item \code{p.hommel}: numeric, p-values after Hommel's transformation, \item \code{rejected}: logical, indicating for which individual the individual null hypothesis is rejected (\code{TRUE})/non-rejected (\code{FALSE}) (after controlling for multiplicity), \item \code{rejected.no}: integer, giving the total number of rejected individual series, \item \code{alpha}: numeric, the input \code{alpha}. } } \description{ Simes' test of intersection of individual hypothesis tests (\insertCite{SIMES:86;textual}{plm}) applied to panel unit root tests as suggested by \insertCite{HANCK:13;textual}{plm}. } \details{ Simes' approach to testing is combining p-values from single hypothesis tests with a global (intersected) hypothesis. \insertCite{HANCK:13;textual}{plm} mentions it can be applied to any panel unit root test which yields a p-value for each individual series. The test is robust versus general patterns of cross-sectional dependence. Further, this approach allows to discriminate between individuals for which the individual H0 (unit root present for individual series) is rejected/is not rejected by Hommel's procedure (\insertCite{HOMM:88;textual}{plm}) for family-wise error rate control (FWER) at a pre-specified significance level \eqn{\alpha} via argument \code{alpha} (defaulting to \code{0.05}), i.e., it controls for the multiplicity in testing. The function \code{phansitest} takes as main input \code{object} either a plain numeric containing p-values of individual tests or a \code{purtest} object which holds a suitable pre-computed panel unit root test (one that produces p-values per individual series). The function's return value (see section Value) is a list with detailed evaluation of the applied Simes test. The associated \code{print} method prints a verbal evaluation. } \examples{ ### input is numeric (p-values) #### example from Hanck (2013), Table 11 (left side) pvals <- c(0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0050,0.0050,0.0050, 0.0050,0.0175,0.0175,0.0200,0.0250,0.0400,0.0500,0.0575,0.2375,0.2475) countries <- c("Argentina","Sweden","Norway","Mexico","Italy","Finland","France", "Germany","Belgium","U.K.","Brazil","Australia","Netherlands", "Portugal","Canada", "Spain","Denmark","Switzerland","Japan") names(pvals) <- countries h <- phansitest(pvals) print(h) # (explicitly) prints test's evaluation print(h, cutoff = 3L) # print only first 3 rejected ids h$rejected # logical indicating the individuals with rejected individual H0 ### input is a (suitable) purtest object data("Grunfeld", package = "plm") y <- data.frame(split(Grunfeld$inv, Grunfeld$firm)) obj <- purtest(y, pmax = 4, exo = "intercept", test = "madwu") phansitest(obj) } \references{ \insertAllCited{} } \seealso{ \code{\link[=purtest]{purtest()}}, \code{\link[=cipstest]{cipstest()}} } \author{ Kevin Tappe } \keyword{htest} plm/man/lag.plm.Rd0000644000176200001440000001136614124132276013447 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_transformations.R \name{lag.plm} \alias{lag.plm} \alias{lag} \alias{lead} \alias{diff} \alias{lag.pseries} \alias{lead.pseries} \alias{diff.pseries} \title{lag, lead, and diff for panel data} \usage{ lead(x, k = 1L, ...) \method{lag}{pseries}(x, k = 1L, shift = c("time", "row"), ...) \method{lead}{pseries}(x, k = 1L, shift = c("time", "row"), ...) \method{diff}{pseries}(x, lag = 1L, shift = c("time", "row"), ...) } \arguments{ \item{x}{a \code{pseries} object,} \item{k}{an integer, the number of lags for the \code{lag} and \code{lead} methods (can also be negative). For the \code{lag} method, a positive (negative) \code{k} gives lagged (leading) values. For the \code{lead} method, a positive (negative) \code{k} gives leading (lagged) values, thus, \code{lag(x, k = -1L)} yields the same as \code{lead(x, k = 1L)}. If \code{k} is an integer with length > 1 (\code{k = c(k1, k2, ...)}), a \code{matrix} with multiple lagged \code{pseries} is returned,} \item{...}{further arguments (currently none evaluated).} \item{shift}{character, either \code{"time"} (default) or \code{"row"} determining how the shifting in the \code{lag}/\code{lead}/\code{diff} functions is performed (see Details and Examples).} \item{lag}{integer, the number of lags for the \code{diff} method, can also be of length > 1 (see argument \code{k}) (only non--negative values in argument \code{lag} are allowed for \code{diff}),} } \value{ \itemize{ \item An object of class \code{pseries}, if the argument specifying the lag has length 1 (argument \code{k} in functions \code{lag} and \code{lead}, argument \code{lag} in function \code{diff}). \item A matrix containing the various series in its columns, if the argument specifying the lag has length > 1. } } \description{ lag, lead, and diff functions for class pseries. } \details{ This set of functions perform lagging, leading (lagging in the opposite direction), and differencing operations on \code{pseries} objects, i. e., they take the panel structure of the data into account by performing the operations per individual. Argument \code{shift} controls the shifting of observations to be used by methods \code{lag}, \code{lead}, and \code{diff}: \itemize{ \item \code{shift = "time"} (default): Methods respect the numerical value in the time dimension of the index. The time dimension needs to be interpretable as a sequence t, t+1, t+2, \ldots{} where t is an integer (from a technical viewpoint, \code{as.numeric(as.character(index(your_pdata.frame)[[2]]))} needs to result in a meaningful integer). \item \verb{shift = "row": }Methods perform the shifting operation based solely on the "physical position" of the observations, i.e., neighbouring rows are shifted per individual. The value in the time index is not relevant in this case. } For consecutive time periods per individual, a switch of shifting behaviour results in no difference. Different return values will occur for non-consecutive time periods per individual ("holes in time"), see also Examples. } \note{ The sign of \code{k} in \code{lag.pseries} results in inverse behaviour compared to \code{\link[stats:lag]{stats::lag()}} and \code{\link[zoo:lag.zoo]{zoo::lag.zoo()}}. } \examples{ # First, create a pdata.frame data("EmplUK", package = "plm") Em <- pdata.frame(EmplUK) # Then extract a series, which becomes additionally a pseries z <- Em$output class(z) # compute the first and third lag, and the difference lagged twice lag(z) lag(z, 3L) diff(z, 2L) # compute negative lags (= leading values) lag(z, -1L) lead(z, 1L) # same as line above identical(lead(z, 1L), lag(z, -1L)) # TRUE # compute more than one lag and diff at once (matrix returned) lag(z, c(1L,2L)) diff(z, c(1L,2L)) ## demonstrate behaviour of shift = "time" vs. shift = "row" # delete 2nd time period for first individual (1978 is missing (not NA)): Em_hole <- Em[-2L, ] is.pconsecutive(Em_hole) # check: non-consecutive for 1st individual now # original non-consecutive data: head(Em_hole$emp, 10) # for shift = "time", 1-1979 contains the value of former 1-1977 (2 periods lagged): head(lag(Em_hole$emp, k = 2L, shift = "time"), 10L) # for shift = "row", 1-1979 contains NA (2 rows lagged (and no entry for 1976): head(lag(Em_hole$emp, k = 2L, shift = "row"), 10L) } \seealso{ To check if the time periods are consecutive per individual, see \code{\link[=is.pconsecutive]{is.pconsecutive()}}. For further function for 'pseries' objects: \code{\link[=between]{between()}}, \link[=between]{Between()}, \code{\link[=Within]{Within()}}, \code{\link[=summary.pseries]{summary.pseries()}}, \code{\link[=print.summary.pseries]{print.summary.pseries()}}, \code{\link[=as.matrix.pseries]{as.matrix.pseries()}}. } \author{ Yves Croissant and Kevin Tappe } \keyword{classes} plm/man/pooltest.Rd0000644000176200001440000000300614124132276013756 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_general.R \name{pooltest} \alias{pooltest} \alias{pooltest.plm} \alias{pooltest.formula} \title{Test of Poolability} \usage{ pooltest(x, ...) \method{pooltest}{plm}(x, z, ...) \method{pooltest}{formula}(x, data, ...) } \arguments{ \item{x}{an object of class \code{"plm"} for the plm method; an object of class \code{"formula"} for the formula interface,} \item{\dots}{further arguments passed to plm.} \item{z}{an object of class \code{"pvcm"} obtained with \code{model="within"},} \item{data}{a \code{data.frame},} } \value{ An object of class \code{"htest"}. } \description{ A Chow test for the poolability of the data. } \details{ \code{pooltest} is a \emph{F} test of stability (or Chow test) for the coefficients of a panel model. For argument \code{x}, the estimated \code{plm} object should be a \code{"pooling"} model or a \code{"within"} model (the default); intercepts are assumed to be identical in the first case and different in the second case. } \examples{ data("Gasoline", package = "plm") form <- lgaspcar ~ lincomep + lrpmg + lcarpcap gasw <- plm(form, data = Gasoline, model = "within") gasp <- plm(form, data = Gasoline, model = "pooling") gasnp <- pvcm(form, data = Gasoline, model = "within") pooltest(gasw, gasnp) pooltest(gasp, gasnp) pooltest(form, data = Gasoline, effect = "individual", model = "within") pooltest(form, data = Gasoline, effect = "individual", model = "pooling") } \author{ Yves Croissant } \keyword{htest} plm/man/fixef.plm.Rd0000644000176200001440000001462514124132276014006 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_ranfixef.R \name{fixef.plm} \alias{fixef.plm} \alias{fixef} \alias{print.fixef} \alias{summary.fixef} \alias{print.summary.fixef} \alias{fixef.pggls} \title{Extract the Fixed Effects} \usage{ \method{fixef}{plm}( object, effect = NULL, type = c("level", "dfirst", "dmean"), vcov = NULL, ... ) \method{print}{fixef}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{summary}{fixef}(object, ...) \method{print}{summary.fixef}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{fixef}{pggls}( object, effect = NULL, type = c("level", "dfirst", "dmean"), vcov = NULL, ... ) } \arguments{ \item{effect}{one of \code{"individual"}, \code{"time"}, or \code{"twoways"}, only relevant in case of two--ways effects models (where it defaults to \code{"individual"}),} \item{type}{one of \code{"level"}, \code{"dfirst"}, or \code{"dmean"},} \item{vcov}{a variance--covariance matrix furnished by the user or a function to calculate one (see \strong{Examples}),} \item{\dots}{further arguments.} \item{x, object}{an object of class \code{"plm"}, an object of class \code{"fixef"} for the \code{print} and the \code{summary} method,} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} } \value{ For function \code{fixef}, an object of class \code{c("fixef", "numeric")} is returned: It is a numeric vector containing the fixed effects with attribute \code{se} which contains the standard errors. There are two further attributes: attribute \code{type} contains the chosen type (the value of argument \code{type} as a character); attribute \code{df.residual} holds the residual degrees of freedom (integer) from the fixed effects model (plm object) on which \code{fixef} was run. For the two-way unbalanced case, only attribute \code{type} is added. For function \code{summary.fixef}, an object of class \code{c("summary.fixef", "matrix")} is returned: It is a matrix with four columns in this order: the estimated fixed effects, their standard errors and associated t--values and p--values. For the two-ways unbalanced case, the matrix contains only the estimates. The type of the fixed effects and the standard errors in the summary.fixef object correspond to was requested in the \code{fixef} function by arguments \code{type} and \code{vcov}, respectively. } \description{ Function to extract the fixed effects from a \code{plm} object and associated summary method. } \details{ Function \code{fixef} calculates the fixed effects and returns an object of class \code{c("fixef", "numeric")}. By setting the \code{type} argument, the fixed effects may be returned in levels (\code{"level"}), as deviations from the first value of the index (\code{"dfirst"}), or as deviations from the overall mean (\code{"dmean"}). If the argument \code{vcov} was specified, the standard errors (stored as attribute "se" in the return value) are the respective robust standard errors. For two-way fixed-effect models, argument \code{effect} controls which of the fixed effects are to be extracted: \code{"individual"}, \code{"time"}, or the sum of individual and time effects (\code{"twoways"}). NB: See \strong{Examples} for how the sum of effects can be split in an individual and a time component. For one-way models, the effects of the model are extracted and the argument \code{effect} is disrespected. The associated \code{summary} method returns an extended object of class \code{c("summary.fixef", "matrix")} with more information (see sections \strong{Value} and \strong{Examples}). References with formulae (except for the two-ways unbalanced case) are, e.g., \insertCite{GREE:12;textual}{plm}, Ch. 11.4.4, p. 364, formulae (11-25); \insertCite{WOOL:10;textual}{plm}, Ch. 10.5.3, pp. 308-309, formula (10.58). } \examples{ data("Grunfeld", package = "plm") gi <- plm(inv ~ value + capital, data = Grunfeld, model = "within") fixef(gi) summary(fixef(gi)) summary(fixef(gi))[ , c("Estimate", "Pr(>|t|)")] # only estimates and p-values # relationship of type = "dmean" and "level" and overall intercept fx_level <- fixef(gi, type = "level") fx_dmean <- fixef(gi, type = "dmean") overallint <- within_intercept(gi) all.equal(overallint + fx_dmean, fx_level, check.attributes = FALSE) # TRUE # extract time effects in a twoways effects model gi_tw <- plm(inv ~ value + capital, data = Grunfeld, model = "within", effect = "twoways") fixef(gi_tw, effect = "time") # with supplied variance-covariance matrix as matrix, function, # and function with additional arguments fx_level_robust1 <- fixef(gi, vcov = vcovHC(gi)) fx_level_robust2 <- fixef(gi, vcov = vcovHC) fx_level_robust3 <- fixef(gi, vcov = function(x) vcovHC(x, method = "white2")) summary(fx_level_robust1) # gives fixed effects, robust SEs, t- and p-values # calc. fitted values of oneway within model: fixefs <- fixef(gi)[index(gi, which = "id")] fitted_by_hand <- fixefs + gi$coefficients["value"] * gi$model$value + gi$coefficients["capital"] * gi$model$capital # calc. fittes values of twoway unbalanced within model via effects: gtw_u <- plm(inv ~ value + capital, data = Grunfeld[-200, ], effect = "twoways") yhat <- as.numeric(gtw_u$model[ , 1] - gtw_u$residuals) # reference pred_beta <- as.numeric(tcrossprod(coef(gtw_u), as.matrix(gtw_u$model[ , -1]))) pred_effs <- as.numeric(fixef(gtw_u, "twoways")) # sum of ind and time effects all.equal(pred_effs + pred_beta, yhat) # TRUE # Splits of summed up individual and time effects: # use one "level" and one "dfirst" ii <- index(gtw_u)[[1L]]; it <- index(gtw_u)[[2L]] eff_id_dfirst <- c(0, as.numeric(fixef(gtw_u, "individual", "dfirst")))[ii] eff_ti_dfirst <- c(0, as.numeric(fixef(gtw_u, "time", "dfirst")))[it] eff_id_level <- as.numeric(fixef(gtw_u, "individual"))[ii] eff_ti_level <- as.numeric(fixef(gtw_u, "time"))[it] all.equal(pred_effs, eff_id_level + eff_ti_dfirst) # TRUE all.equal(pred_effs, eff_id_dfirst + eff_ti_level) # TRUE } \references{ \insertAllCited{} } \seealso{ \code{\link[=within_intercept]{within_intercept()}} for the overall intercept of fixed effect models along its standard error, \code{\link[=plm]{plm()}} for plm objects and within models (= fixed effects models) in general. See \code{\link[=ranef]{ranef()}} to extract the random effects from a random effects model. } \author{ Yves Croissant } \keyword{regression} plm/man/pmg.Rd0000644000176200001440000000646514124132276012704 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_mg.R \name{pmg} \alias{pmg} \alias{summary.pmg} \alias{print.summary.pmg} \alias{residuals.pmg} \title{Mean Groups (MG), Demeaned MG and CCE MG estimators} \usage{ pmg( formula, data, subset, na.action, model = c("mg", "cmg", "dmg"), index = NULL, trend = FALSE, ... ) \method{summary}{pmg}(object, ...) \method{print}{summary.pmg}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{residuals}{pmg}(object, ...) } \arguments{ \item{formula}{a symbolic description of the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[=lm]{lm()}},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{model}{one of \code{"mg"}, \code{"cmg"}, or \code{"dmg"},} \item{index}{the indexes, see \code{\link[=pdata.frame]{pdata.frame()}},} \item{trend}{logical specifying whether an individual-specific trend has to be included,} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{pmg},} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} } \value{ An object of class \code{c("pmg", "panelmodel")} containing: \item{coefficients}{the vector of coefficients,} \item{residuals}{the vector of residuals,} \item{fitted.values}{the vector of fitted values,} \item{vcov}{the covariance matrix of the coefficients,} \item{df.residual}{degrees of freedom of the residuals,} \item{model}{a data.frame containing the variables used for the estimation,} \item{r.squared}{numeric, the R squared,} \item{call}{the call,} \item{indcoef}{the matrix of individual coefficients from separate time series regressions.} } \description{ Mean Groups (MG), Demeaned MG (DMG) and Common Correlated Effects MG (CCEMG) estimators for heterogeneous panel models, possibly with common factors (CCEMG) } \details{ \code{pmg} is a function for the estimation of linear panel models with heterogeneous coefficients by various Mean Groups estimators. Setting argument \code{model = "mg"} specifies the standard Mean Groups estimator, based on the average of individual time series regressions. If \code{model = "dmg"} the data are demeaned cross-sectionally, which is believed to reduce the influence of common factors (and is akin to what is done in homogeneous panels when \code{model = "within"} and \code{effect = "time"}). Lastly, if \code{model = "cmg"} the CCEMG estimator is employed which is consistent under the hypothesis of unobserved common factors and idiosyncratic factor loadings; it works by augmenting the model by cross-sectional averages of the dependent variable and regressors in order to account for the common factors, and adding individual intercepts and possibly trends. } \examples{ data("Produc", package = "plm") ## Mean Groups estimator mgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc) summary(mgmod) ## demeaned Mean Groups dmgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "dmg") summary(dmgmod) ## Common Correlated Effects Mean Groups ccemgmod <- pmg(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "cmg") summary(ccemgmod) } \references{ \insertRef{PESA:06}{plm} } \author{ Giovanni Millo } \keyword{regression} plm/man/RiceFarms.Rd0000644000176200001440000000354614124132276013771 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{RiceFarms} \alias{RiceFarms} \title{Production of Rice in Indonesia} \format{ A dataframe containing : \describe{ \item{id}{the farm identifier} \item{size}{the total area cultivated with rice, measured in hectares} \item{status}{land status, on of \code{'owner'} (non sharecroppers, owner operators or leaseholders or both), \code{'share'} (sharecroppers), \code{'mixed'} (mixed of the two previous status)} \item{varieties}{one of \code{'trad'} (traditional varieties), \code{'high'} (high yielding varieties) and \code{'mixed'} (mixed varieties)} \item{bimas}{bIMAS is an intensification program; one of \code{'no'} (non-bimas farmer), \code{'yes'} (bimas farmer) or \code{'mixed'} (part but not all of farmer's land was registered to be in the bimas program)} \item{seed}{seed in kilogram} \item{urea}{urea in kilogram} \item{phosphate}{phosphate in kilogram} \item{pesticide}{pesticide cost in Rupiah} \item{pseed}{price of seed in Rupiah per kg} \item{purea}{price of urea in Rupiah per kg} \item{pphosph}{price of phosphate in Rupiah per kg} \item{hiredlabor}{hired labor in hours} \item{famlabor}{family labor in hours} \item{totlabor}{total labor (excluding harvest labor)} \item{wage}{labor wage in Rupiah per hour} \item{goutput}{gross output of rice in kg} \item{noutput}{net output, gross output minus harvesting cost (paid in terms of rice)} \item{price}{price of rough rice in Rupiah per kg} \item{region}{one of \code{'wargabinangun'}, \code{'langan'}, \code{'gunungwangi'}, \code{'malausma'}, \code{'sukaambit'}, \code{'ciwangi'}} } } \source{ \insertRef{FENG:HORR:12}{plm} } \description{ a panel of 171 observations } \details{ \emph{number of observations} : 1026 \emph{observation} : farms \emph{country} : Indonesia } \keyword{datasets} plm/man/vcovBK.Rd0000644000176200001440000001076414340404505013305 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovBK} \alias{vcovBK} \alias{vcovBK.plm} \title{Beck and Katz Robust Covariance Matrix Estimators} \usage{ vcovBK(x, ...) \method{vcovBK}{plm}( x, type = c("HC0", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), diagonal = FALSE, ... ) } \arguments{ \item{x}{an object of class \code{"plm"},} \item{\dots}{further arguments.} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"}, see Details,} \item{cluster}{one of \code{"group"}, \code{"time"},} \item{diagonal}{a logical value specifying whether to force non-diagonal elements to zero,} } \value{ An object of class \code{"matrix"} containing the estimate of the covariance matrix of coefficients. } \description{ Unconditional Robust covariance matrix estimators \emph{a la Beck and Katz} for panel models (a.k.a. Panel Corrected Standard Errors (PCSE)). } \details{ \code{vcovBK} is a function for estimating a robust covariance matrix of parameters for a panel model according to the \insertCite{BECK:KATZ:95;textual}{plm} method, a.k.a. Panel Corrected Standard Errors (PCSE), which uses an unconditional estimate of the error covariance across time periods (groups) inside the standard formula for coefficient covariance. Observations may be clustered either by \code{"group"} to account for timewise heteroskedasticity and serial correlation or by \code{"time"} to account for cross-sectional heteroskedasticity and correlation. It must be borne in mind that the Beck and Katz formula is based on N- (T-) asymptotics and will not be appropriate elsewhere. The \code{diagonal} logical argument can be used, if set to \code{TRUE}, to force to zero all non-diagonal elements in the estimated error covariances; this is appropriate if both serial and cross--sectional correlation are assumed out, and yields a timewise- (groupwise-) heteroskedasticity--consistent estimator. Weighting schemes specified by \code{type} are analogous to those in \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} in package \CRANpkg{sandwich} and are justified theoretically (although in the context of the standard linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and \insertCite{CRIB:04;textual}{plm} \insertCite{@see @ZEIL:04}{plm}. The main use of \code{vcovBK} (and the other variance-covariance estimators provided in the package \code{vcovHC}, \code{vcovNW}, \code{vcovDC}, \code{vcovSCC}) is to pass it to plm's own functions like \code{summary}, \code{pwaldtest}, and \code{phtest} or together with testing functions from the \code{lmtest} and \code{car} packages. All of these typically allow passing the \code{vcov} or \code{vcov.} parameter either as a matrix or as a function, e.g., for Wald--type testing: argument \code{vcov.} to \code{coeftest()}, argument \code{vcov} to \code{waldtest()} and other methods in the \CRANpkg{lmtest} package; and argument \code{vcov.} to \code{linearHypothesis()} in the \CRANpkg{car} package (see the examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. } \examples{ data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="random") summary(zz, vcov = vcovBK) summary(zz, vcov = function(x) vcovBK(x, type="HC1")) ## standard coefficient significance test library(lmtest) coeftest(zz) ## robust significance test, cluster by group ## (robust vs. serial correlation), default arguments coeftest(zz, vcov.=vcovBK) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1")) ## idem, cluster by time period ## (robust vs. cross-sectional correlation) coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1", cluster="time")) ## idem with parameters, pass vcov as a matrix argument coeftest(zz, vcov.=vcovBK(zz, type="HC1")) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovBK) \dontrun{ ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovBK) } } \references{ \insertRef{BECK:KATZ:95}{plm} \insertRef{CRIB:04}{plm} \insertRef{GREE:03}{plm} \insertRef{MACK:WHIT:85}{plm} \insertRef{ZEIL:04}{plm} } \seealso{ \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} from the \CRANpkg{sandwich} package for weighting schemes (\code{type} argument). } \author{ Giovanni Millo } \keyword{regression} plm/man/make.pconsecutive.Rd0000644000176200001440000001542314340404505015533 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/make.pconsecutive_pbalanced.R \name{make.pconsecutive} \alias{make.pconsecutive} \alias{make.pconsecutive.data.frame} \alias{make.pconsecutive.pdata.frame} \alias{make.pconsecutive.pseries} \title{Make data consecutive (and, optionally, also balanced)} \usage{ make.pconsecutive(x, ...) \method{make.pconsecutive}{data.frame}(x, balanced = FALSE, index = NULL, ...) \method{make.pconsecutive}{pdata.frame}(x, balanced = FALSE, ...) \method{make.pconsecutive}{pseries}(x, balanced = FALSE, ...) } \arguments{ \item{x}{an object of class \code{pdata.frame}, \code{data.frame}, or \code{pseries},} \item{\dots}{further arguments.} \item{balanced}{logical, indicating whether the data should \emph{additionally} be made balanced (default: FALSE),} \item{index}{only relevant for \code{data.frame} interface; if \code{NULL}, the first two columns of the data.frame are assumed to be the index variables; if not \code{NULL}, both dimensions ('individual', 'time') need to be specified by \code{index} as character of length 2 for data frames, for further details see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ An object of the same class as the input \code{x}, i.e., a pdata.frame, data.frame or a pseries which is made time--consecutive based on the index variables. The returned data are sorted as a stacked time series. } \description{ This function makes the data consecutive for each individual (no "gaps" in time dimension per individual) and, optionally, also balanced } \details{ (p)data.frame and pseries objects are made consecutive, meaning their time periods are made consecutive per individual. For consecutiveness, the time dimension is interpreted to be numeric, and the data are extended to a regularly spaced sequence with distance 1 between the time periods for each individual (for each individual the time dimension become a sequence t, t+1, t+2, \ldots{}, where t is an integer). Non--index variables are filled with \code{NA} for the inserted elements (rows for (p)data.frames, vector elements for pseries). With argument \code{balanced = TRUE}, additionally to be made consecutive, the data also can be made a balanced panel/pseries. Note: This means consecutive AND balanced; balancedness does not imply consecutiveness. In the result, each individual will have the same time periods in their time dimension by taking the min and max of the time index variable over all individuals (w/o \code{NA} values) and inserting the missing time periods. Looking at the number of rows of the resulting (pdata.frame) (elements for pseries), this results in \verb{nrow(make.pconsecutive(<.>, balanced = FALSE))} <= \verb{nrow(make.pconsecutive(<.>, balanced = TRUE))}. For making the data only balanced, i.e., not demanding consecutiveness at the same time, use \code{\link[=make.pbalanced]{make.pbalanced()}} (see \strong{Examples} for a comparison)). Note: rows of (p)data.frames (elements for pseries) with \code{NA} values in individual or time index are not examined but silently dropped before the data are made consecutive. In this case, it is not clear which individual or time period is meant by the missing value(s). Especially, this means: If there are \code{NA} values in the first/last position of the original time periods for an individual, which usually depicts the beginning and ending of the time series for that individual, the beginning/end of the resulting time series is taken to be the min and max (w/o \code{NA} values) of the original time series for that individual, see also \strong{Examples}. Thus, one might want to check if there are any \code{NA} values in the index variables before applying \code{make.pconsecutive}, and especially check for \code{NA} values in the first and last position for each individual in original data and, if so, maybe set those to some meaningful begin/end value for the time series. } \examples{ # take data and make it non-consecutive # by deletion of 2nd row (2nd time period for first individual) data("Grunfeld", package = "plm") nrow(Grunfeld) # 200 rows Grunfeld_missing_period <- Grunfeld[-2, ] is.pconsecutive(Grunfeld_missing_period) # check for consecutiveness make.pconsecutive(Grunfeld_missing_period) # make it consecutiveness # argument balanced: # First, make data non-consecutive and unbalanced # by deletion of 2nd time period (year 1936) for all individuals # and more time periods for first individual only Grunfeld_unbalanced <- Grunfeld[Grunfeld$year != 1936, ] Grunfeld_unbalanced <- Grunfeld_unbalanced[-c(1,4), ] all(is.pconsecutive(Grunfeld_unbalanced)) # FALSE pdim(Grunfeld_unbalanced)$balanced # FALSE g_consec_bal <- make.pconsecutive(Grunfeld_unbalanced, balanced = TRUE) all(is.pconsecutive(g_consec_bal)) # TRUE pdim(g_consec_bal)$balanced # TRUE nrow(g_consec_bal) # 200 rows head(g_consec_bal) # 1st individual: years 1935, 1936, 1939 are NA g_consec <- make.pconsecutive(Grunfeld_unbalanced) # default: balanced = FALSE all(is.pconsecutive(g_consec)) # TRUE pdim(g_consec)$balanced # FALSE nrow(g_consec) # 198 rows head(g_consec) # 1st individual: years 1935, 1936 dropped, 1939 is NA # NA in 1st, 3rd time period (years 1935, 1937) for first individual Grunfeld_NA <- Grunfeld Grunfeld_NA[c(1, 3), "year"] <- NA g_NA <- make.pconsecutive(Grunfeld_NA) head(g_NA) # 1936 is begin for 1st individual, 1937: NA for non-index vars nrow(g_NA) # 199, year 1935 from original data is dropped # pdata.frame interface pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) make.pconsecutive(Grunfeld_missing_period) # pseries interface make.pconsecutive(pGrunfeld_missing_period$inv) # comparison to make.pbalanced (makes the data only balanced, not consecutive) g_bal <- make.pbalanced(Grunfeld_unbalanced) all(is.pconsecutive(g_bal)) # FALSE pdim(g_bal)$balanced # TRUE nrow(g_bal) # 190 rows } \seealso{ \code{\link[=is.pconsecutive]{is.pconsecutive()}} to check if data are consecutive; \code{\link[=make.pbalanced]{make.pbalanced()}} to make data only balanced (not consecutive).\cr \code{\link[=punbalancedness]{punbalancedness()}} for two measures of unbalancedness, \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), \code{\link[=pvar]{pvar()}} to check for individual and time variation of a 'pdata.frame' (and other objects), \code{\link[=lag]{lag()}} for lagged (and leading) values of a 'pseries' object.\cr \code{\link[=pseries]{pseries()}}, \code{\link[=data.frame]{data.frame()}}, \code{\link[=pdata.frame]{pdata.frame()}}. } \author{ Kevin Tappe } \keyword{attribute} plm/man/pFtest.Rd0000644000176200001440000000314214124132276013353 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_general.R \name{pFtest} \alias{pFtest} \alias{pFtest.formula} \alias{pFtest.plm} \title{F Test for Individual and/or Time Effects} \usage{ pFtest(x, ...) \method{pFtest}{formula}(x, data, ...) \method{pFtest}{plm}(x, z, ...) } \arguments{ \item{x}{an object of class \code{"plm"} or of class \code{"formula"},} \item{\dots}{further arguments.} \item{data}{a \code{data.frame},} \item{z}{an object of class \code{"plm"},} } \value{ An object of class \code{"htest"}. } \description{ Test of individual and/or time effects based on the comparison of the \code{within} and the \code{pooling} model. } \details{ For the \code{plm} method, the argument of this function is two \code{plm} objects, the first being a within model, the second a pooling model. The effects tested are either individual, time or twoways, depending on the effects introduced in the within model. } \examples{ data("Grunfeld", package="plm") gp <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") gi <- plm(inv ~ value + capital, data = Grunfeld, effect = "individual", model = "within") gt <- plm(inv ~ value + capital, data = Grunfeld, effect = "time", model = "within") gd <- plm(inv ~ value + capital, data = Grunfeld, effect = "twoways", model = "within") pFtest(gi, gp) pFtest(gt, gp) pFtest(gd, gp) pFtest(inv ~ value + capital, data = Grunfeld, effect = "twoways") } \seealso{ \code{\link[=plmtest]{plmtest()}} for Lagrange multiplier tests of individuals and/or time effects. } \author{ Yves Croissant } \keyword{htest} plm/man/vcovG.Rd0000644000176200001440000000501514124132276013173 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovG} \alias{vcovG} \alias{vcovG.plm} \alias{vcovG.pcce} \title{Generic Lego building block for Robust Covariance Matrix Estimators} \usage{ vcovG(x, ...) \method{vcovG}{plm}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), l = 0, inner = c("cluster", "white", "diagavg"), ... ) \method{vcovG}{pcce}( x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), l = 0, inner = c("cluster", "white", "diagavg"), ... ) } \arguments{ \item{x}{an object of class \code{"plm"} or \code{"pcce"}} \item{\dots}{further arguments} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"sss"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"},} \item{cluster}{one of \code{"group"}, \code{"time"},} \item{l}{lagging order, defaulting to zero} \item{inner}{the function to be applied to the residuals inside the sandwich: one of \code{"cluster"} or \code{"white"} or \code{"diagavg"},} } \value{ An object of class \code{"matrix"} containing the estimate of the covariance matrix of coefficients. } \description{ Generic Lego building block for robust covariance matrix estimators of the vcovXX kind for panel models. } \details{ \code{vcovG} is the generic building block for use by higher--level wrappers \code{\link[=vcovHC]{vcovHC()}}, \code{\link[=vcovSCC]{vcovSCC()}}, \code{\link[=vcovDC]{vcovDC()}}, and \code{\link[=vcovNW]{vcovNW()}}. The main use of \code{vcovG} is to be used internally by the former, but it is made available in the user space for use in non--standard combinations. For more documentation, see see wrapper functions mentioned. } \examples{ data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") ## reproduce Arellano's covariance matrix vcovG(zz, cluster="group", inner="cluster", l=0) ## define custom covariance function ## (in this example, same as vcovHC) myvcov <- function(x) vcovG(x, cluster="group", inner="cluster", l=0) summary(zz, vcov = myvcov) ## use in coefficient significance test library(lmtest) ## robust significance test coeftest(zz, vcov. = myvcov) } \references{ \insertRef{mil17b}{plm} } \seealso{ \code{\link[=vcovHC]{vcovHC()}}, \code{\link[=vcovSCC]{vcovSCC()}}, \code{\link[=vcovDC]{vcovDC()}}, \code{\link[=vcovNW]{vcovNW()}}, and \code{\link[=vcovBK]{vcovBK()}} albeit the latter does not make use of vcovG. } \author{ Giovanni Millo } \keyword{regression} plm/man/pht.Rd0000644000176200001440000000767014124132276012713 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/deprecated.R \name{pht} \alias{pht} \alias{summary.pht} \alias{print.summary.pht} \title{Hausman--Taylor Estimator for Panel Data} \usage{ pht( formula, data, subset, na.action, model = c("ht", "am", "bms"), index = NULL, ... ) \method{summary}{pht}(object, ...) \method{print}{summary.pht}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ... ) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[=lm]{lm()}} for \code{"plm"}, a character or numeric vector indicating a subset of the table of coefficient to be printed for \code{"print.summary.plm"},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{model}{one of \code{"ht"} for Hausman--Taylor, \code{"am"} for Amemiya--MaCurdy and \code{"bms"} for Breusch--Mizon--Schmidt,} \item{index}{the indexes,} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{"plm"},} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} } \value{ An object of class \code{c("pht", "plm", "panelmodel")}. A \code{"pht"} object contains the same elements as \code{plm} object, with a further argument called \code{varlist} which describes the typology of the variables. It has \code{summary} and \code{print.summary} methods. } \description{ The Hausman--Taylor estimator is an instrumental variable estimator without external instruments (function deprecated). } \details{ \code{pht} estimates panels models using the Hausman--Taylor estimator, Amemiya--MaCurdy estimator, or Breusch--Mizon--Schmidt estimator, depending on the argument \code{model}. The model is specified as a two--part formula, the second part containing the exogenous variables. } \note{ The function \code{pht} is deprecated. Please use function \code{plm} to estimate Taylor--Hausman models like this with a three-part formula as shown in the example:\cr \verb{plm(, random.method = "ht", model = "random", inst.method = "baltagi")}. The Amemiya--MaCurdy estimator and the Breusch--Mizon--Schmidt estimator is computed likewise with \code{plm}. } \examples{ ## replicates Baltagi (2005, 2013), table 7.4; Baltagi (2021), table 7.5 ## preferred way with plm() data("Wages", package = "plm") ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, random.method = "ht", model = "random", inst.method = "baltagi") summary(ht) am <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, random.method = "ht", model = "random", inst.method = "am") summary(am) ## deprecated way with pht() for HT #ht <- pht(lwage ~ wks + south + smsa + married + exp + I(exp^2) + # bluecol + ind + union + sex + black + ed | # sex + black + bluecol + south + smsa + ind, # data = Wages, model = "ht", index = 595) #summary(ht) # deprecated way with pht() for AM #am <- pht(lwage ~ wks + south + smsa + married + exp + I(exp^2) + # bluecol + ind + union + sex + black + ed | # sex + black + bluecol + south + smsa + ind, # data = Wages, model = "am", index = 595) #summary(am) } \references{ \insertCite{AMEM:MACU:86}{plm} \insertCite{BALT:13}{plm} \insertCite{BREU:MIZO:SCHM:89}{plm} \insertCite{HAUS:TAYL:81}{plm} } \author{ Yves Croissant } \keyword{regression} plm/man/pmodel.response.Rd0000644000176200001440000000472114377436332015241 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_model.extract.R \name{pmodel.response} \alias{pmodel.response} \alias{pmodel.response.plm} \alias{pmodel.response.data.frame} \alias{pmodel.response.formula} \title{A function to extract the model.response} \usage{ pmodel.response(object, ...) \method{pmodel.response}{plm}(object, ...) \method{pmodel.response}{data.frame}(object, ...) \method{pmodel.response}{formula}(object, data, ...) } \arguments{ \item{object}{an object of class \code{"plm"}, or a formula of class \code{"Formula"},} \item{\dots}{further arguments.} \item{data}{a \code{data.frame}} } \value{ A pseries except if model responses' of a \code{"between"} or \code{"fd"} model as these models "compress" the data (the number of observations used in estimation is smaller than the original data due to the specific transformation). A numeric is returned for the \code{"between"} and \code{"fd"} model. } \description{ pmodel.response has several methods to conveniently extract the response of several objects. } \details{ The model response is extracted from a \code{pdata.frame} (where the response must reside in the first column; this is the case for a model frame), a \code{Formula} + \code{data} (being a model frame) or a \code{plm} object, and the transformation specified by \code{effect} and \code{model} is applied to it.\cr Constructing the model frame first ensures proper \code{NA} handling and the response being placed in the first column, see also \strong{Examples} for usage. } \examples{ # First, make a pdata.frame data("Grunfeld", package = "plm") pGrunfeld <- pdata.frame(Grunfeld) # then make a model frame from a Formula and a pdata.frame form <- inv ~ value + capital mf <- model.frame(pGrunfeld, form) # retrieve (transformed) response directly from model frame resp_mf <- pmodel.response(mf, model = "within", effect = "individual") # retrieve (transformed) response from a plm object, i.e., an estimated model fe_model <- plm(form, data = pGrunfeld, model = "within") pmodel.response(fe_model) # same as constructed before all.equal(resp_mf, pmodel.response(fe_model), check.attributes = FALSE) # TRUE } \seealso{ \code{plm}'s \code{\link[=model.matrix]{model.matrix()}} for (transformed) model matrix and the corresponding \code{\link[=model.frame]{model.frame()}} method to construct a model frame. } \author{ Yves Croissant } \keyword{manip} plm/man/summary.plm.Rd0000644000176200001440000001123114340404505014365 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_plm.list.R, R/tool_methods.R \name{summary.plm.list} \alias{summary.plm.list} \alias{coef.summary.plm.list} \alias{print.summary.plm.list} \alias{summary.plm} \alias{print.summary.plm} \title{Summary for plm objects} \usage{ \method{summary}{plm.list}(object, ...) \method{coef}{summary.plm.list}(object, eq = NULL, ...) \method{print}{summary.plm.list}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{summary}{plm}(object, vcov = NULL, ...) \method{print}{summary.plm}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ... ) } \arguments{ \item{object}{an object of class \code{"plm"},} \item{\dots}{further arguments.} \item{eq}{the selected equation for list objects} \item{x}{an object of class \code{"summary.plm"},} \item{digits}{number of digits for printed output,} \item{width}{the maximum length of the lines in the printed output,} \item{vcov}{a variance--covariance matrix furnished by the user or a function to calculate one (see \strong{Examples}),} \item{subset}{a character or numeric vector indicating a subset of the table of coefficients to be printed for \code{"print.summary.plm"},} } \value{ An object of class \code{c("summary.plm", "plm", "panelmodel")}. Some of its elements are carried over from the associated plm object and described there (\code{\link[=plm]{plm()}}). The following elements are new or changed relative to the elements of a plm object: \item{fstatistic}{'htest' object: joint test of significance of coefficients (F or Chi-square test) (robust statistic in case of supplied argument \code{vcov}, see \code{\link[=pwaldtest]{pwaldtest()}} for details),} \item{coefficients}{a matrix with the estimated coefficients, standard errors, t--values, and p--values, if argument \code{vcov} was set to non-\code{NULL} the standard errors (and t-- and p--values) in their respective robust variant,} \item{vcov}{the "regular" variance--covariance matrix of the coefficients (class "matrix"),} \item{rvcov}{only present if argument \code{vcov} was set to non-\code{NULL}: the furnished variance--covariance matrix of the coefficients (class "matrix"),} \item{r.squared}{a named numeric containing the R-squared ("rsq") and the adjusted R-squared ("adjrsq") of the model,} \item{df}{an integer vector with 3 components, (p, n-p, p*), where p is the number of estimated (non-aliased) coefficients of the model, n-p are the residual degrees of freedom (n being number of observations), and p* is the total number of coefficients (incl. any aliased ones).} } \description{ The summary method for plm objects generates some more information about estimated plm models. } \details{ The \code{summary} method for plm objects (\code{summary.plm}) creates an object of class \code{c("summary.plm", "plm", "panelmodel")} that extends the plm object it is run on with various information about the estimated model like (inferential) statistics, see \strong{Value}. It has an associated print method (\code{print.summary.plm}). } \examples{ data("Produc", package = "plm") zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, index = c("state","year")) summary(zz) # summary with a furnished vcov, passed as matrix, as function, and # as function with additional argument data("Grunfeld", package = "plm") wi <- plm(inv ~ value + capital, data = Grunfeld, model="within", effect = "individual") summary(wi, vcov = vcovHC(wi)) summary(wi, vcov = vcovHC) summary(wi, vcov = function(x) vcovHC(x, method = "white2")) # extract F statistic wi_summary <- summary(wi) Fstat <- wi_summary[["fstatistic"]] # extract estimates and p-values est <- wi_summary[["coefficients"]][ , "Estimate"] pval <- wi_summary[["coefficients"]][ , "Pr(>|t|)"] # print summary only for coefficient "value" print(wi_summary, subset = "value") } \seealso{ \code{\link[=plm]{plm()}} for estimation of various models; \code{\link[=vcovHC]{vcovHC()}} for an example of a robust estimation of variance--covariance matrix; \code{\link[=r.squared]{r.squared()}} for the function to calculate R-squared; \code{\link[stats:print.power.htest]{stats::print.power.htest()}} for some information about class "htest"; \code{\link[=fixef]{fixef()}} to compute the fixed effects for "within" (=fixed effects) models and \code{\link[=within_intercept]{within_intercept()}} for an "overall intercept" for such models; \code{\link[=pwaldtest]{pwaldtest()}} } \author{ Yves Croissant } \keyword{regression} plm/man/plm.Rd0000644000176200001440000003051714457253044012712 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_plm.R, R/est_plm.list.R, R/tool_methods.R \name{plm} \alias{plm} \alias{print.plm.list} \alias{terms.panelmodel} \alias{vcov.panelmodel} \alias{fitted.panelmodel} \alias{residuals.panelmodel} \alias{df.residual.panelmodel} \alias{coef.panelmodel} \alias{print.panelmodel} \alias{update.panelmodel} \alias{deviance.panelmodel} \alias{formula.plm} \alias{plot.plm} \alias{residuals.plm} \alias{fitted.plm} \title{Panel Data Estimators} \usage{ plm( formula, data, subset, weights, na.action, effect = c("individual", "time", "twoways", "nested"), model = c("within", "random", "ht", "between", "pooling", "fd"), random.method = NULL, random.models = NULL, random.dfcor = NULL, inst.method = c("bvk", "baltagi", "am", "bms"), restrict.matrix = NULL, restrict.rhs = NULL, index = NULL, ... ) \method{print}{plm.list}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{terms}{panelmodel}(x, ...) \method{vcov}{panelmodel}(object, ...) \method{fitted}{panelmodel}(object, ...) \method{residuals}{panelmodel}(object, ...) \method{df.residual}{panelmodel}(object, ...) \method{coef}{panelmodel}(object, ...) \method{print}{panelmodel}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{update}{panelmodel}(object, formula., ..., evaluate = TRUE) \method{deviance}{panelmodel}(object, model = NULL, ...) \method{formula}{plm}(x, ...) \method{plot}{plm}( x, dx = 0.2, N = NULL, seed = 1, within = TRUE, pooling = TRUE, between = FALSE, random = FALSE, ... ) \method{residuals}{plm}(object, model = NULL, effect = NULL, ...) \method{fitted}{plm}(object, model = NULL, effect = NULL, ...) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[stats:lm]{stats::lm()}},} \item{weights}{see \code{\link[stats:lm]{stats::lm()}},} \item{na.action}{see \code{\link[stats:lm]{stats::lm()}}; currently, not fully supported,} \item{effect}{the effects introduced in the model, one of \code{"individual"}, \code{"time"}, \code{"twoways"}, or \code{"nested"},} \item{model}{one of \code{"pooling"}, \code{"within"}, \code{"between"}, \code{"random"} \code{"fd"}, or \code{"ht"},} \item{random.method}{method of estimation for the variance components in the random effects model, one of \code{"swar"} (default), \code{"amemiya"}, \code{"walhus"}, \code{"nerlove"}; for Hausman-Taylor estimation set to \code{"ht"} (see Details and Examples),} \item{random.models}{an alternative to the previous argument, the models used to compute the variance components estimations are indicated,} \item{random.dfcor}{a numeric vector of length 2 indicating which degree of freedom should be used,} \item{inst.method}{the instrumental variable transformation: one of \code{"bvk"}, \code{"baltagi"}, \code{"am"}, or \code{"bms"} (see also Details),} \item{restrict.matrix}{a matrix which defines linear restrictions on the coefficients,} \item{restrict.rhs}{the right hand side vector of the linear restrictions on the coefficients,} \item{index}{the indexes,} \item{\dots}{further arguments.} \item{x, object}{an object of class \code{"plm"},} \item{digits}{number of digits for printed output,} \item{width}{the maximum length of the lines in the printed output,} \item{formula.}{a new formula for the update method,} \item{evaluate}{a boolean for the update method, if \code{TRUE} the updated model is returned, if \code{FALSE} the call is returned,} \item{dx}{the half--length of the individual lines for the plot method (relative to x range),} \item{N}{the number of individual to plot,} \item{seed}{the seed which will lead to individual selection,} \item{within}{if \code{TRUE}, the within model is plotted,} \item{pooling}{if \code{TRUE}, the pooling model is plotted,} \item{between}{if \code{TRUE}, the between model is plotted,} \item{random}{if \code{TRUE}, the random effect model is plotted,} } \value{ An object of class \code{"plm"}. A \code{"plm"} object has the following elements : \item{coefficients}{the vector of coefficients,} \item{vcov}{the variance--covariance matrix of the coefficients,} \item{residuals}{the vector of residuals (these are the residuals of the (quasi-)demeaned model),} \item{weights}{(only for weighted estimations) weights as specified,} \item{df.residual}{degrees of freedom of the residuals,} \item{formula}{an object of class \code{"Formula"} describing the model,} \item{model}{the model frame as a \code{"pdata.frame"} containing the variables used for estimation: the response is in first column followed by the other variables, the individual and time indexes are in the 'index' attribute of \code{model},} \item{ercomp}{an object of class \code{"ercomp"} providing the estimation of the components of the errors (for random effects models only),} \item{aliased}{named logical vector indicating any aliased coefficients which are silently dropped by \code{plm} due to linearly dependent terms (see also \code{\link[=detect.lindep]{detect.lindep()}}),} \item{call}{the call.} It has \code{print}, \code{summary} and \code{print.summary} methods. The \code{summary} method creates an object of class \code{"summary.plm"} that extends the object it is run on with information about (inter alia) F statistic and (adjusted) R-squared of model, standard errors, t--values, and p--values of coefficients, (if supplied) the furnished vcov, see \code{\link[=summary.plm]{summary.plm()}} for further details. } \description{ Linear models for panel data estimated using the \code{lm} function on transformed data. } \details{ \code{plm} is a general function for the estimation of linear panel models. It supports the following estimation methods: pooled OLS (\code{model = "pooling"}), fixed effects (\code{"within"}), random effects (\code{"random"}), first--differences (\code{"fd"}), and between (\code{"between"}). It supports unbalanced panels and two--way effects (although not with all methods). For random effects models, four estimators of the transformation parameter are available by setting \code{random.method} to one of \code{"swar"} \insertCite{SWAM:AROR:72}{plm} (default), \code{"amemiya"} \insertCite{AMEM:71}{plm}, \code{"walhus"} \insertCite{WALL:HUSS:69}{plm}, or \code{"nerlove"} \insertCite{NERLO:71}{plm} (see below for Hausman-Taylor instrumental variable case). The nested random effect model (\insertCite{BALT:SONG:JUNG:01}{plm}) is estimated by setting \code{model = "random"} and \code{effect = "nested"}, requiring the data to be indexed by a third index in which the "individual" dimension is nested (see section \emph{Examples} and the vignette "Estimation of error components models with the plm function".) For first--difference models, the intercept is maintained (which from a specification viewpoint amounts to allowing for a trend in the levels model). The user can exclude it from the estimated specification the usual way by adding \code{"-1"} to the model formula. Instrumental variables estimation is obtained using two--part formulas, the second part indicating the instrumental variables used. This can be a complete list of instrumental variables or an update of the first part. If, for example, the model is \code{y ~ x1 + x2 + x3}, with \code{x1} and \code{x2} endogenous and \code{z1} and \code{z2} external instruments, the model can be estimated with: \itemize{ \item \code{formula = y~x1+x2+x3 | x3+z1+z2}, \item \code{formula = y~x1+x2+x3 | . -x1-x2+z1+z2}. } If an instrument variable estimation is requested, argument \code{inst.method} selects the instrument variable transformation method: \itemize{ \item \code{"bvk"} (default) for \insertCite{BALE:VARA:87;textual}{plm}, \item \code{"baltagi"} for \insertCite{BALT:81;textual}{plm}, \item \code{"am"} for \insertCite{AMEM:MACU:86;textual}{plm}, \item \code{"bms"} for \insertCite{BREU:MIZO:SCHM:89;textual}{plm}. } The Hausman--Taylor estimator \insertCite{HAUS:TAYL:81}{plm} is computed with arguments \code{random.method = "ht"}, \code{model = "random"}, \code{inst.method = "baltagi"} (the other way with only \code{model = "ht"} is deprecated). See also the vignettes for introductions to model estimations (and more) with examples. } \examples{ data("Produc", package = "plm") zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, index = c("state","year")) summary(zz) # replicates some results from Baltagi (2013), table 3.1 data("Grunfeld", package = "plm") p <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") wi <- plm(inv ~ value + capital, data = Grunfeld, model = "within", effect = "twoways") swar <- plm(inv ~ value + capital, data = Grunfeld, model = "random", effect = "twoways") amemiya <- plm(inv ~ value + capital, data = Grunfeld, model = "random", random.method = "amemiya", effect = "twoways") walhus <- plm(inv ~ value + capital, data = Grunfeld, model = "random", random.method = "walhus", effect = "twoways") # summary and summary with a furnished vcov (passed as matrix, # as function, and as function with additional argument) summary(wi) summary(wi, vcov = vcovHC(wi)) summary(wi, vcov = vcovHC) summary(wi, vcov = function(x) vcovHC(x, method = "white2")) ## nested random effect model # replicate Baltagi/Song/Jung (2001), p. 378 (table 6), columns SA, WH # == Baltagi (2013), pp. 204-205 data("Produc", package = "plm") pProduc <- pdata.frame(Produc, index = c("state", "year", "region")) form <- log(gsp) ~ log(pc) + log(emp) + log(hwy) + log(water) + log(util) + unemp summary(plm(form, data = pProduc, model = "random", effect = "nested")) summary(plm(form, data = pProduc, model = "random", effect = "nested", random.method = "walhus")) ## Instrumental variable estimations # replicate Baltagi (2013/2021), p. 133/162, table 7.1 data("Crime", package = "plm") FE2SLS <- plm(lcrmrte ~ lprbarr + lpolpc + lprbconv + lprbpris + lavgsen + ldensity + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta + lwloc + lpctymle + lpctmin + region + smsa + factor(year) | . - lprbarr - lpolpc + ltaxpc + lmix, data = Crime, model = "within") G2SLS <- update(FE2SLS, model = "random", inst.method = "bvk") EC2SLS <- update(G2SLS, model = "random", inst.method = "baltagi") ## Hausman-Taylor estimator and Amemiya-MaCurdy estimator # replicate Baltagi (2005, 2013), table 7.4; Baltagi (2021), table 7.5 data("Wages", package = "plm") ht <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, random.method = "ht", model = "random", inst.method = "baltagi") summary(ht) am <- plm(lwage ~ wks + south + smsa + married + exp + I(exp ^ 2) + bluecol + ind + union + sex + black + ed | bluecol + south + smsa + ind + sex + black | wks + married + union + exp + I(exp ^ 2), data = Wages, index = 595, random.method = "ht", model = "random", inst.method = "am") summary(am) } \references{ \insertRef{AMEM:71}{plm} \insertRef{AMEM:MACU:86}{plm} \insertRef{BALE:VARA:87}{plm} \insertRef{BALT:81}{plm} \insertRef{BALT:SONG:JUNG:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BREU:MIZO:SCHM:89}{plm} \insertRef{HAUS:TAYL:81}{plm} \insertRef{NERLO:71}{plm} \insertRef{SWAM:AROR:72}{plm} \insertRef{WALL:HUSS:69}{plm} } \seealso{ \code{\link[=summary.plm]{summary.plm()}} for further details about the associated summary method and the "summary.plm" object both of which provide some model tests and tests of coefficients. \code{\link[=fixef]{fixef()}} to compute the fixed effects for "within" models (=fixed effects models). \code{\link[=predict.plm]{predict.plm()}} for predicted values. } \author{ Yves Croissant } \keyword{regression} plm/man/pgmm.Rd0000644000176200001440000001766614741314573013075 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_gmm.R \name{pgmm} \alias{pgmm} \alias{coef.pgmm} \alias{summary.pgmm} \alias{print.summary.pgmm} \title{Generalized Method of Moments (GMM) Estimation for Panel Data} \usage{ pgmm( formula, data, subset, na.action, effect = c("twoways", "individual"), model = c("onestep", "twosteps"), collapse = FALSE, lost.ts = NULL, transformation = c("d", "ld"), fsm = switch(transformation, d = "G", ld = "full"), index = NULL, ... ) \method{coef}{pgmm}(object, ...) \method{summary}{pgmm}(object, robust = TRUE, time.dummies = FALSE, ...) \method{print}{summary.pgmm}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) } \arguments{ \item{formula}{a symbolic description for the model to be estimated. The preferred interface is now to indicate a multi--part formula, the first two parts describing the covariates and the GMM instruments and, if any, the third part the 'normal' instruments,} \item{data}{a \code{data.frame} (neither factors nor character vectors will be accepted in \code{data.frame}),} \item{subset}{see \code{\link[=lm]{lm()}},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{effect}{the effects introduced in the model, one of \code{"twoways"} (the default) or \code{"individual"},} \item{model}{one of \code{"onestep"} (the default) or \code{"twosteps"},} \item{collapse}{if \code{TRUE}, the GMM instruments are collapsed (default is \code{FALSE}),} \item{lost.ts}{the number of lost time series: if \code{NULL}, this is automatically computed. Otherwise, it can be defined by the user as a numeric vector of length 1 or 2. The first element is the number of lost time series in the model in difference, the second one in the model in level. If the second element is missing, it is set to the first one minus one,} \item{transformation}{the kind of transformation to apply to the model: either \code{"d"} (the default value) for the "difference GMM" model or \code{"ld"} for the "system GMM" model,} \item{fsm}{character of length 1 to specify type of weighting matrix for the first step /the \code{"onestep"} estimator: one of \code{"I"} (identity matrix) or \code{"G"} (\eqn{=D'D} where \eqn{D} is the first--difference operator), if \code{transformation="d"}, one of \code{"GI"} or \code{"full"} if \code{transformation="ld"},} \item{index}{the indexes,} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{"pgmm"},} \item{robust}{for pgmm's summary method: if \code{TRUE} (default), robust inference is performed in the summary, for a two-steps model with the small-sample correction by \insertCite{WIND:05;textual}{plm},} \item{time.dummies}{for pgmm's summary method: if \code{TRUE}, the estimated coefficients of time dummies are present in the table of coefficients; default is \code{FALSE}, thus time dummies are dropped in summary's coefficient table (argument is only meaningful if there are time dummies in the model, i.e., only for \code{effect = "twoways"}),} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output.} } \value{ An object of class \code{c("pgmm","panelmodel")}, which has the following elements: \item{coefficients}{the vector (or the list for fixed effects) of coefficients,} \item{residuals}{the list of residuals for each individual,} \item{vcov}{the covariance matrix of the coefficients,} \item{fitted.values}{the vector of fitted values,} \item{df.residual}{degrees of freedom of the residuals,} \item{model}{a list containing the variables used for the estimation for each individual,} \item{W}{a list containing the instruments for each individual (a matrix per list element) (two lists in case of system GMM,} \item{A1}{the weighting matrix for the one--step estimator,} \item{A2}{the weighting matrix for the two--steps estimator,} \item{call}{the call.} It has \code{print}, \code{summary} and \code{print.summary} methods. } \description{ Generalized method of moments estimation for static or dynamic models with panel data. } \details{ \code{pgmm} estimates a model for panel data with a generalized method of moments (GMM) estimator. The description of the model to estimate is provided with a multi--part formula which is (or which is coerced to) a \code{Formula} object. The first right--hand side part describes the covariates. The second one, which is mandatory, describes the GMM instruments. The third one, which is optional, describes the 'normal' instruments. By default, all the variables of the model which are not used as GMM instruments are used as normal instruments with the same lag structure as the one specified in the model. \code{y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99)} is similar to \code{y~lag(y, 1:2)+lag(x1, 0:1)+lag(x2, 0:2) | lag(y, 2:99) | lag(x1, 0:1)+lag(x2, 0:2)} and indicates that all lags from 2 of \code{y} are used as GMM instruments. \code{transformation} indicates how the model should be transformed for the estimation. \code{"d"} gives the "difference GMM" model \insertCite{@see @AREL:BOND:91}{plm}, \code{"ld"} the "system GMM" model \insertCite{@see @BLUN:BOND:98}{plm}. \code{pgmm} is an attempt to adapt GMM estimators available within the DPD library for GAUSS \insertCite{@see @AREL:BOND:98}{plm} and Ox \insertCite{@see @DOOR:AREL:BOND:12}{plm} and within the xtabond2 library for Stata \insertCite{@see @ROOD:09}{plm}. } \examples{ data("EmplUK", package = "plm") # Arellano/Bond 1991, Table 4, column (a1) (has robust SEs) ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "onestep") summary(ab.a1, robust = TRUE) # Arellano/Bond 1991, Table 4, column (a2) (has non-robust SEs) ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") summary(ab.a2, robust = FALSE) # Arellano and Bond (1991), table 4 col. b / # Windmeijer (2005), table 2, std. errc ab.b <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") summary(ab.b, robust = FALSE) # Arellano/Bond summary(ab.b, robust = TRUE) # Windmeijer ## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4) bb.4 <- pgmm(log(emp) ~ lag(log(emp), 1)+ lag(log(wage), 0:1) + lag(log(capital), 0:1) | lag(log(emp), 2:99) + lag(log(wage), 2:99) + lag(log(capital), 2:99), data = EmplUK, effect = "twoways", model = "onestep", transformation = "ld") summary(bb.4, robust = TRUE) \dontrun{ ## Same with the old formula or dynformula interface ## Arellano and Bond (1991), table 4, col. b ab.b <- pgmm(log(emp) ~ log(wage) + log(capital) + log(output), lag.form = list(2,1,0,1), data = EmplUK, effect = "twoways", model = "twosteps", gmm.inst = ~log(emp), lag.gmm = list(c(2,99))) summary(ab.b, robust = FALSE) ## Blundell and Bond (1998) table 4 (cf. DPD for OX p. 12 col. 4) bb.4 <- pgmm(dynformula(log(emp) ~ log(wage) + log(capital), list(1,1,1)), data = EmplUK, effect = "twoways", model = "onestep", gmm.inst = ~log(emp) + log(wage) + log(capital), lag.gmm = c(2,99), transformation = "ld") summary(bb.4, robust = TRUE) } } \references{ \insertAllCited{} } \seealso{ \code{\link[=sargan]{sargan()}} for the Hansen--Sargan test and \code{\link[=mtest]{mtest()}} for Arellano--Bond's test of serial correlation. \link{vcovHC.pgmm} for the robust inference. } \author{ Yves Croissant } \keyword{regression} plm/man/pbltest.Rd0000644000176200001440000000431714124247623013573 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pbltest} \alias{pbltest} \alias{pbltest.formula} \alias{pbltest.plm} \title{Baltagi and Li Serial Dependence Test For Random Effects Models} \usage{ pbltest(x, ...) \method{pbltest}{formula}(x, data, alternative = c("twosided", "onesided"), index = NULL, ...) \method{pbltest}{plm}(x, alternative = c("twosided", "onesided"), ...) } \arguments{ \item{x}{a model formula or an estimated random--effects model of class \code{plm} ,} \item{\dots}{further arguments.} \item{data}{for the formula interface only: a \code{data.frame},} \item{alternative}{one of \code{"twosided"}, \code{"onesided"}. Selects either \eqn{H_A: \rho \neq 0} or \eqn{H_A: \rho = 0} (i.e., the Normal or the Chi-squared version of the test),} \item{index}{the index of the \code{data.frame},} } \value{ An object of class \code{"htest"}. } \description{ \insertCite{BALT:LI:95;textual}{plm}'s Lagrange multiplier test for AR(1) or MA(1) idiosyncratic errors in panel models with random effects. } \details{ This is a Lagrange multiplier test for the null of no serial correlation, against the alternative of either an AR(1) or a MA(1) process, in the idiosyncratic component of the error term in a random effects panel model (as the analytical expression of the test turns out to be the same under both alternatives, \insertCite{@see @BALT:LI:95 and @BALT:LI:97}{plm}. The \code{alternative} argument, defaulting to \code{twosided}, allows testing for positive serial correlation only, if set to \code{onesided}. } \examples{ data("Grunfeld", package = "plm") # formula interface pbltest(inv ~ value + capital, data = Grunfeld) # plm interface re_mod <- plm(inv ~ value + capital, data = Grunfeld, model = "random") pbltest(re_mod) pbltest(re_mod, alternative = "onesided") } \references{ \insertRef{BALT:LI:95}{plm} \insertRef{BALT:LI:97}{plm} } \seealso{ \code{\link[=pdwtest]{pdwtest()}}, \code{\link[=pbnftest]{pbnftest()}}, \code{\link[=pbgtest]{pbgtest()}}, \code{\link[=pbsytest]{pbsytest()}}, \code{\link[=pwartest]{pwartest()}} and \code{\link[=pwfdtest]{pwfdtest()}} for other serial correlation tests for panel models. } \author{ Giovanni Millo } \keyword{htest} plm/man/is.pconsecutive.Rd0000644000176200001440000001637514340404505015240 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/is.pconsecutive.R \name{is.pconsecutive} \alias{is.pconsecutive} \alias{is.pconsecutive.default} \alias{is.pconsecutive.data.frame} \alias{is.pconsecutive.pseries} \alias{is.pconsecutive.pdata.frame} \alias{is.pconsecutive.panelmodel} \title{Check if time periods are consecutive} \usage{ is.pconsecutive(x, ...) \method{is.pconsecutive}{default}(x, id, time, na.rm.tindex = FALSE, ...) \method{is.pconsecutive}{data.frame}(x, index = NULL, na.rm.tindex = FALSE, ...) \method{is.pconsecutive}{pseries}(x, na.rm.tindex = FALSE, ...) \method{is.pconsecutive}{pdata.frame}(x, na.rm.tindex = FALSE, ...) \method{is.pconsecutive}{panelmodel}(x, na.rm.tindex = FALSE, ...) } \arguments{ \item{x}{usually, an object of class \code{pdata.frame}, \code{data.frame}, \code{pseries}, or an estimated \code{panelmodel}; for the default method \code{x} can also be an arbitrary vector or \code{NULL}, see \strong{Details},} \item{\dots}{further arguments.} \item{id, time}{only relevant for default method: vectors specifying the id and time dimensions, i. e., a sequence of individual and time identifiers, each as stacked time series,} \item{na.rm.tindex}{logical indicating whether any \code{NA} values in the time index are removed before consecutiveness is evaluated (defaults to \code{FALSE}),} \item{index}{only relevant for \code{data.frame} interface; if \code{NULL}, the first two columns of the data.frame are assumed to be the index variables; if not \code{NULL}, both dimensions ('individual', 'time') need to be specified by \code{index} for \code{is.pconsecutive} on data frames, for further details see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ A named \code{logical} vector (names are those of the individuals). The i-th element of the returned vector corresponds to the i-th individual. The values of the i-th element can be: \item{TRUE}{if the i-th individual has consecutive time periods,} \item{FALSE}{if the i-th individual has non-consecutive time periods,} \item{"NA"}{if there are any NA values in time index of the i-th the individual; see also argument \code{na.rm.tindex} to remove those.} } \description{ This function checks for each individual if its associated time periods are consecutive (no "gaps" in time dimension per individual) } \details{ (p)data.frame, pseries and estimated panelmodel objects can be tested if their time periods are consecutive per individual. For evaluation of consecutiveness, the time dimension is interpreted to be numeric, and the data are tested for being a regularly spaced sequence with distance 1 between the time periods for each individual (for each individual the time dimension can be interpreted as sequence t, t+1, t+2, \ldots{} where t is an integer). As such, the "numerical content" of the time index variable is considered for consecutiveness, not the "physical position" of the various observations for an individuals in the (p)data.frame/pseries (it is not about "neighbouring" rows). If the object to be evaluated is a pseries or a pdata.frame, the time index is coerced from factor via as.character to numeric, i.e., the series \verb{as.numeric(as.character(index()[[2]]))]} is evaluated for gaps. The default method also works for argument \code{x} being an arbitrary vector (see \strong{Examples}), provided one can supply arguments \code{id} and \code{time}, which need to ordered as stacked time series. As only \code{id} and \code{time} are really necessary for the default method to evaluate the consecutiveness, \code{x = NULL} is also possible. However, if the vector \code{x} is also supplied, additional input checking for equality of the lengths of \code{x}, \code{id} and \code{time} is performed, which is safer. For the data.frame interface, the data is ordered in the appropriate way (stacked time series) before the consecutiveness is evaluated. For the pdata.frame and pseries interface, ordering is not performed because both data types are already ordered in the appropriate way when created. Note: Only the presence of the time period itself in the object is tested, not if there are any other variables. \code{NA} values in individual index are not examined but silently dropped - In this case, it is not clear which individual is meant by id value \code{NA}, thus no statement about consecutiveness of time periods for those "\code{NA}-individuals" is possible. } \examples{ data("Grunfeld", package = "plm") is.pconsecutive(Grunfeld) is.pconsecutive(Grunfeld, index=c("firm", "year")) # delete 2nd row (2nd time period for first individual) # -> non consecutive Grunfeld_missing_period <- Grunfeld[-2, ] is.pconsecutive(Grunfeld_missing_period) all(is.pconsecutive(Grunfeld_missing_period)) # FALSE # delete rows 1 and 2 (1st and 2nd time period for first individual) # -> consecutive Grunfeld_missing_period_other <- Grunfeld[-c(1,2), ] is.pconsecutive(Grunfeld_missing_period_other) # all TRUE # delete year 1937 (3rd period) for _all_ individuals Grunfeld_wo_1937 <- Grunfeld[Grunfeld$year != 1937, ] is.pconsecutive(Grunfeld_wo_1937) # all FALSE # pdata.frame interface pGrunfeld <- pdata.frame(Grunfeld) pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) is.pconsecutive(pGrunfeld) # all TRUE is.pconsecutive(pGrunfeld_missing_period) # first FALSE, others TRUE # panelmodel interface (first, estimate some models) mod_pGrunfeld <- plm(inv ~ value + capital, data = Grunfeld) mod_pGrunfeld_missing_period <- plm(inv ~ value + capital, data = Grunfeld_missing_period) is.pconsecutive(mod_pGrunfeld) is.pconsecutive(mod_pGrunfeld_missing_period) nobs(mod_pGrunfeld) # 200 nobs(mod_pGrunfeld_missing_period) # 199 # pseries interface pinv <- pGrunfeld$inv pinv_missing_period <- pGrunfeld_missing_period$inv is.pconsecutive(pinv) is.pconsecutive(pinv_missing_period) # default method for arbitrary vectors or NULL inv <- Grunfeld$inv inv_missing_period <- Grunfeld_missing_period$inv is.pconsecutive(inv, id = Grunfeld$firm, time = Grunfeld$year) is.pconsecutive(inv_missing_period, id = Grunfeld_missing_period$firm, time = Grunfeld_missing_period$year) # (not run) demonstrate mismatch lengths of x, id, time # is.pconsecutive(x = inv_missing_period, id = Grunfeld$firm, time = Grunfeld$year) # only id and time are needed for evaluation is.pconsecutive(NULL, id = Grunfeld$firm, time = Grunfeld$year) } \seealso{ \code{\link[=make.pconsecutive]{make.pconsecutive()}} to make data consecutive (and, as an option, balanced at the same time) and \code{\link[=make.pbalanced]{make.pbalanced()}} to make data balanced.\cr \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), \code{\link[=pvar]{pvar()}} to check for individual and time variation of a 'pdata.frame' (and other objects), \code{\link[=lag]{lag()}} for lagged (and leading) values of a 'pseries' object.\cr \code{\link[=pseries]{pseries()}}, \code{\link[=data.frame]{data.frame()}}, \code{\link[=pdata.frame]{pdata.frame()}}, for class 'panelmodel' see \code{\link[=plm]{plm()}} and \code{\link[=pgmm]{pgmm()}}. } \author{ Kevin Tappe } \keyword{attribute} plm/man/has.intercept.Rd0000644000176200001440000000273714352266132014670 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_misc.R \name{has.intercept} \alias{has.intercept} \alias{has.intercept.default} \alias{has.intercept.formula} \alias{has.intercept.Formula} \alias{has.intercept.panelmodel} \alias{has.intercept.plm} \title{Check for the presence of an intercept in a formula or in a fitted model} \usage{ has.intercept(object, ...) \method{has.intercept}{default}(object, data = NULL, ...) \method{has.intercept}{formula}(object, data = NULL, ...) \method{has.intercept}{Formula}(object, rhs = NULL, data = NULL, ...) \method{has.intercept}{panelmodel}(object, ...) \method{has.intercept}{plm}(object, rhs = 1L, ...) } \arguments{ \item{object}{a \code{formula}, a \code{Formula} or a fitted model (of class \code{plm} or \code{panelmodel}),} \item{\dots}{further arguments.} \item{data}{default is \code{NULL} and only needs to be changes to a data set if the formula contains a dot (\code{.}) to allow evaluation of the dot,} \item{rhs}{an integer (length > 1 is possible), indicating the parts of right hand sides of the formula to be evaluated for the presence of an intercept or \code{NULL} for all parts of the right hand side (relevant for the \code{Formula} and the \code{plm} methods),} } \value{ a logical } \description{ The presence of an intercept is checked using the formula which is either provided as the argument of the function or extracted from a fitted model. } plm/man/pwartest.Rd0000644000176200001440000000461514124132276013765 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pwartest} \alias{pwartest} \alias{pwartest.formula} \alias{pwartest.panelmodel} \title{Wooldridge Test for AR(1) Errors in FE Panel Models} \usage{ pwartest(x, ...) \method{pwartest}{formula}(x, data, ...) \method{pwartest}{panelmodel}(x, ...) } \arguments{ \item{x}{an object of class \code{formula} or of class \code{panelmodel},} \item{\dots}{further arguments to be passed on to \code{vcovHC} (see Details and Examples).} \item{data}{a \code{data.frame},} } \value{ An object of class \code{"htest"}. } \description{ Test of serial correlation for (the idiosyncratic component of) the errors in fixed--effects panel models. } \details{ As \insertCite{WOOL:10;textual}{plm}, Sec. 10.5.4 observes, under the null of no serial correlation in the errors, the residuals of a FE model must be negatively serially correlated, with \eqn{cor(\hat{u}_{it}, \hat{u}_{is})=-1/(T-1)} for each \eqn{t,s}. He suggests basing a test for this null hypothesis on a pooled regression of FE residuals on their first lag: \eqn{\hat{u}_{i,t} = \alpha + \delta \hat{u}_{i,t-1} + \eta_{i,t}}. Rejecting the restriction \eqn{\delta = -1/(T-1)} makes us conclude against the original null of no serial correlation. \code{pwartest} estimates the \code{within} model and retrieves residuals, then estimates an AR(1) \code{pooling} model on them. The test statistic is obtained by applying a F test to the latter model to test the above restriction on \eqn{\delta}, setting the covariance matrix to \code{vcovHC} with the option \code{method="arellano"} to control for serial correlation. Unlike the \code{\link[=pbgtest]{pbgtest()}} and \code{\link[=pdwtest]{pdwtest()}}, this test does not rely on large--T asymptotics and has therefore good properties in ``short'' panels. Furthermore, it is robust to general heteroskedasticity. } \examples{ data("EmplUK", package = "plm") pwartest(log(emp) ~ log(wage) + log(capital), data = EmplUK) # pass argument 'type' to vcovHC used in test pwartest(log(emp) ~ log(wage) + log(capital), data = EmplUK, type = "HC3") } \references{ \insertRef{WOOL:02}{plm} \insertRef{WOOL:10}{plm} } \seealso{ \code{\link[=pwfdtest]{pwfdtest()}}, \code{\link[=pdwtest]{pdwtest()}}, \code{\link[=pbgtest]{pbgtest()}}, \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbsytest]{pbsytest()}}. } \author{ Giovanni Millo } \keyword{htest} plm/man/is.pseries.Rd0000644000176200001440000000260414124132276014174 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{is.pseries} \alias{is.pseries} \title{Check if an object is a pseries} \usage{ is.pseries(object) } \arguments{ \item{object}{object to be checked for pseries features} } \value{ A logical indicating whether the object is a pseries (\code{TRUE}) or not (\code{FALSE}). } \description{ This function checks if an object qualifies as a pseries } \details{ A \code{"pseries"} is a wrapper around a "basic class" (numeric, factor, logical, character, or complex). To qualify as a pseries, an object needs to have the following features: \itemize{ \item class contains \code{"pseries"} and there are at least two classes (\code{"pseries"} and the basic class), \item have an appropriate index attribute (defines the panel structure), \item any of \code{is.numeric}, \code{is.factor}, \code{is.logical}, \code{is.character}, \code{is.complex} is \code{TRUE}. } } \examples{ # Create a pdata.frame and extract a series, which becomes a pseries data("EmplUK", package = "plm") Em <- pdata.frame(EmplUK) z <- Em$output class(z) # pseries as indicated by class is.pseries(z) # and confirmed by check # destroy index of pseries and re-check attr(z, "index") <- NA is.pseries(z) # now FALSE } \seealso{ \code{\link[=pseries]{pseries()}} for some computations on pseries and some further links. } \keyword{attribute} plm/man/sargan.Rd0000644000176200001440000000244714741261755013402 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_gmm.R \name{sargan} \alias{sargan} \title{Hansen--Sargan Test of Overidentifying Restrictions} \usage{ sargan(object, weights = c("twosteps", "onestep")) } \arguments{ \item{object}{an object of class \code{"pgmm"},} \item{weights}{the weighting matrix to be used for the computation of the test.} } \value{ An object of class \code{"htest"}. } \description{ A test of overidentifying restrictions for models estimated by GMM. } \details{ The Hansen--Sargan test ("J test") calculates the quadratic form of the moment restrictions that is minimized while computing the GMM estimator. It follows asymptotically a chi-square distribution with number of degrees of freedom equal to the difference between the number of moment conditions and the number of coefficients. } \examples{ data("EmplUK", package = "plm") ar <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") sargan(ar) } \references{ \insertCite{HANS:82}{plm} \insertCite{SARG:58}{plm} } \seealso{ \code{\link[=pgmm]{pgmm()}} } \author{ Yves Croissant } \keyword{htest} plm/man/pvar.Rd0000644000176200001440000000526714352266132013072 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_misc.R \name{pvar} \alias{pvar} \alias{pvar.matrix} \alias{pvar.data.frame} \alias{pvar.pdata.frame} \alias{pvar.pseries} \alias{print.pvar} \title{Check for Cross-Sectional and Time Variation} \usage{ pvar(x, ...) \method{pvar}{matrix}(x, index = NULL, ...) \method{pvar}{data.frame}(x, index = NULL, ...) \method{pvar}{pdata.frame}(x, ...) \method{pvar}{pseries}(x, ...) \method{print}{pvar}(x, ...) } \arguments{ \item{x}{a \verb{(p)data.frame} or a \code{matrix},} \item{\dots}{further arguments.} \item{index}{see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ An object of class \code{pvar} containing the following elements: \item{id.variation}{a logical vector with \code{TRUE} values if the variable has individual variation, \code{FALSE} if not,} \item{time.variation}{a logical vector with \code{TRUE} values if the variable has time variation, \code{FALSE} if not,} \item{id.variation_anyNA}{a logical vector with \code{TRUE} values if the variable has at least one individual-time combination with all \code{NA} values in the individual dimension for at least one time period, \code{FALSE} if not,} \item{time.variation_anyNA}{a logical vector with \code{TRUE} values if the variable has at least one individual-time combination with all \code{NA} values in the time dimension for at least one individual, \code{FALSE} if not.} } \description{ This function checks for each variable of a panel if it varies cross-sectionally and over time. } \details{ For (p)data.frame and matrix interface: All-\code{NA} columns are removed prior to calculation of variation due to coercing to pdata.frame first. } \note{ \code{pvar} can be time consuming for ``big'' panels. As a fast alternative \code{\link[collapse:varying]{collapse::varying()}} from package \CRANpkg{collapse} could be used. } \examples{ # Gasoline contains two variables which are individual and time # indexes and are the first two variables data("Gasoline", package = "plm") pvar(Gasoline) # Hedonic is an unbalanced panel, townid is the individual index; # the drop.index argument is passed to pdata.frame data("Hedonic", package = "plm") pvar(Hedonic, "townid", drop.index = TRUE) # same using pdata.frame Hed <- pdata.frame(Hedonic, "townid", drop.index = TRUE) pvar(Hed) # Gasoline with pvar's matrix interface Gasoline_mat <- as.matrix(Gasoline) pvar(Gasoline_mat) pvar(Gasoline_mat, index=c("country", "year")) } \seealso{ \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), } \author{ Yves Croissant } \keyword{attribute} plm/man/pggls.Rd0000644000176200001440000000763714340404505013234 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_ggls.R \name{pggls} \alias{pggls} \alias{summary.pggls} \alias{print.summary.pggls} \alias{residuals.pggls} \title{General FGLS Estimators} \usage{ pggls( formula, data, subset, na.action, effect = c("individual", "time"), model = c("within", "pooling", "fd"), index = NULL, ... ) \method{summary}{pggls}(object, ...) \method{print}{summary.pggls}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{residuals}{pggls}(object, ...) } \arguments{ \item{formula}{a symbolic description of the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[=lm]{lm()}},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{effect}{the effects introduced in the model, one of \code{"individual"} or \code{"time"},} \item{model}{one of \code{"within"}, \code{"pooling"}, \code{"fd"},} \item{index}{the indexes, see \code{\link[=pdata.frame]{pdata.frame()}},} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{pggls},} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} } \value{ An object of class \code{c("pggls","panelmodel")} containing: \item{coefficients}{the vector of coefficients,} \item{residuals}{the vector of residuals,} \item{fitted.values}{the vector of fitted values,} \item{vcov}{the covariance matrix of the coefficients,} \item{df.residual}{degrees of freedom of the residuals,} \item{model}{a data.frame containing the variables used for the estimation,} \item{call}{the call,} \item{sigma}{the estimated intragroup (or cross-sectional, if \code{effect = "time"}) covariance of errors,} } \description{ General FGLS estimators for panel data (balanced or unbalanced) } \details{ \code{pggls} is a function for the estimation of linear panel models by general feasible generalized least squares, either with or without fixed effects. General FGLS is based on a two-step estimation process: first a model is estimated by OLS (\code{model = "pooling"}), fixed effects (\code{model = "within"}) or first differences (\code{model = "fd"}), then its residuals are used to estimate an error covariance matrix for use in a feasible-GLS analysis. This framework allows the error covariance structure inside every group (if \code{effect = "individual"}, else symmetric) of observations to be fully unrestricted and is therefore robust against any type of intragroup heteroskedasticity and serial correlation. Conversely, this structure is assumed identical across groups and thus general FGLS estimation is inefficient under groupwise heteroskedasticity. Note also that this method requires estimation of \eqn{T(T+1)/2} variance parameters, thus efficiency requires N >> T (if \code{effect = "individual"}, else the opposite). If \code{model = "within"} (the default) then a FEGLS (fixed effects GLS, see Wooldridge, Ch. 10.5) is estimated; if \code{model = "fd"} a FDGLS (first-difference GLS). Setting \code{model = "pooling"} produces an unrestricted FGLS model (see ibid.) (\code{model = "random"} does the same, but using this value is deprecated and included only for retro--compatibility reasons). } \examples{ data("Produc", package = "plm") zz_wi <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "within") summary(zz_wi) zz_pool <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "pooling") summary(zz_pool) zz_fd <- pggls(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "fd") summary(zz_fd) } \references{ \insertRef{IM:SEUN:SCHM:WOOL:99}{plm} \insertRef{KIEF:80}{plm} \insertRef{WOOL:02}{plm} \insertRef{WOOL:10}{plm} } \author{ Giovanni Millo } \keyword{regression} plm/man/pwfdtest.Rd0000644000176200001440000000744414124132276013757 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pwfdtest} \alias{pwfdtest} \alias{pwfdtest.formula} \alias{pwfdtest.panelmodel} \title{Wooldridge first--difference--based test for AR(1) errors in levels or first--differenced panel models} \usage{ pwfdtest(x, ...) \method{pwfdtest}{formula}(x, data, ..., h0 = c("fd", "fe")) \method{pwfdtest}{panelmodel}(x, ..., h0 = c("fd", "fe")) } \arguments{ \item{x}{an object of class \code{formula} or a \code{"fd"}-model (plm object),} \item{\dots}{further arguments to be passed on to \code{vcovHC} (see Details and Examples).} \item{data}{a \code{data.frame},} \item{h0}{the null hypothesis: one of \code{"fd"}, \code{"fe"},} } \value{ An object of class \code{"htest"}. } \description{ First--differencing--based test of serial correlation for (the idiosyncratic component of) the errors in either levels or first--differenced panel models. } \details{ As \insertCite{WOOL:10;textual}{plm}, Sec. 10.6.3 observes, if the idiosyncratic errors in the model in levels are uncorrelated (which we label hypothesis \code{"fe"}), then the errors of the model in first differences (FD) must be serially correlated with \eqn{cor(\hat{e}_{it}, \hat{e}_{is}) = -0.5} for each \eqn{t,s}. If on the contrary the levels model's errors are a random walk, then there must be no serial correlation in the FD errors (hypothesis \code{"fd"}). Both the fixed effects (FE) and the first--differenced (FD) estimators remain consistent under either assumption, but the relative efficiency changes: FE is more efficient under \code{"fe"}, FD under \code{"fd"}. Wooldridge (ibid.) suggests basing a test for either hypothesis on a pooled regression of FD residuals on their first lag: \eqn{\hat{e}_{i,t}=\alpha + \rho \hat{e}_{i,t-1} + \eta_{i,t}}. Rejecting the restriction \eqn{\rho = -0.5} makes us conclude against the null of no serial correlation in errors of the levels equation (\code{"fe"}). The null hypothesis of no serial correlation in differenced errors (\code{"fd"}) is tested in a similar way, but based on the zero restriction on \eqn{\rho} (\eqn{\rho = 0}). Rejecting \code{"fe"} favours the use of the first--differences estimator and the contrary, although it is possible that both be rejected. \code{pwfdtest} estimates the \code{fd} model (or takes an \code{fd} model as input for the panelmodel interface) and retrieves its residuals, then estimates an AR(1) \code{pooling} model on them. The test statistic is obtained by applying a F test to the latter model to test the relevant restriction on \eqn{\rho}, setting the covariance matrix to \code{vcovHC} with the option \code{method="arellano"} to control for serial correlation. Unlike the \code{pbgtest} and \code{pdwtest}, this test does not rely on large--T asymptotics and has therefore good properties in ''short'' panels. Furthermore, it is robust to general heteroskedasticity. The \code{"fe"} version can be used to test for error autocorrelation regardless of whether the maintained specification has fixed or random effects \insertCite{@see @DRUK:03}{plm}. } \examples{ data("EmplUK" , package = "plm") pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK) pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK, h0 = "fe") # pass argument 'type' to vcovHC used in test pwfdtest(log(emp) ~ log(wage) + log(capital), data = EmplUK, type = "HC3", h0 = "fe") # same with panelmodel interface mod <- plm(log(emp) ~ log(wage) + log(capital), data = EmplUK, model = "fd") pwfdtest(mod) pwfdtest(mod, h0 = "fe") pwfdtest(mod, type = "HC3", h0 = "fe") } \references{ \insertRef{DRUK:03}{plm} \insertRef{WOOL:02}{plm} Sec. 10.6.3, pp. 282--283. \insertRef{WOOL:10}{plm} Sec. 10.6.3, pp. 319--320 } \seealso{ \code{pdwtest}, \code{pbgtest}, \code{pwartest}, } \author{ Giovanni Millo } \keyword{htest} plm/man/make.dummies.Rd0000644000176200001440000001002214352266132014462 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_misc.R \name{make.dummies} \alias{make.dummies} \alias{make.dummies.default} \alias{make.dummies.data.frame} \alias{make.dummies.pdata.frame} \title{Create a Dummy Matrix} \usage{ make.dummies(x, ...) \method{make.dummies}{default}(x, base = 1L, base.add = TRUE, ...) \method{make.dummies}{data.frame}(x, col, base = 1L, base.add = TRUE, ...) \method{make.dummies}{pdata.frame}(x, col, base = 1L, base.add = TRUE, ...) } \arguments{ \item{x}{a factor from which the dummies are created (x is coerced to factor if not yet a factor) for the default method or a data data frame/pdata.frame for the respective method.} \item{\dots}{further arguments.} \item{base}{integer or character, specifies the reference level (base), if integer it refers to position in \code{levels(x)}, if character the name of a level,} \item{base.add}{logical, if \code{TRUE} the reference level (base) is added to the return value as first column, if \code{FALSE} the reference level is not included.} \item{col}{character (only for the data frame and pdata.frame methods), to specify the column which is used to derive the dummies from,} } \value{ For the default method, a matrix containing the contrast-coded dummies (treatment coding), dimensions are n x n where \code{n = length(levels(x))} if argument \code{base.add = TRUE} or \code{n = length(levels(x)-1)} if \code{base.add = FALSE}; for the data frame and pdata.frame method, a data frame or pdata.frame, respectively, with the dummies appropriately merged to the input as last columns (column names are derived from the name of the column used to create the dummies and its levels). } \description{ Contrast-coded dummy matrix (treatment coding) created from a factor } \details{ This function creates a matrix of dummies from the levels of a factor in treatment coding. In model estimations, it is usually preferable to not create the dummy matrix prior to estimation but to simply specify a factor in the formula and let the estimation function handle the creation of the dummies. This function is merely a convenience wrapper around \code{stats::contr.treatment} to ease the dummy matrix creation process shall the dummy matrix be explicitly required. See Examples for a use case in LSDV (least squares dummy variable) model estimation. The default method uses a factor as main input (or something coercible to a factor) to derive the dummy matrix from. Methods for data frame and pdata.frame are available as well and have the additional argument \code{col} to specify the the column from which the dummies are created; both methods merge the dummy matrix to the data frame/pdata.frame yielding a ready-to-use data set. See also Examples for use cases. } \examples{ library(plm) data("Grunfeld", package = "plm") Grunfeld <- Grunfeld[1:100, ] # reduce data set (down to 5 firms) ## default method make.dummies(Grunfeld$firm) # gives 5 x 5 matrix (5 firms, base level incl.) make.dummies(Grunfeld$firm, base = 2L, base.add = FALSE) # gives 5 x 4 matrix ## data frame method Grun.dummies <- make.dummies(Grunfeld, col = "firm") ## pdata.frame method pGrun <- pdata.frame(Grunfeld) pGrun.dummies <- make.dummies(pGrun, col = "firm") ## Model estimation: ## estimate within model (individual/firm effects) and LSDV models (firm dummies) # within model: plm(inv ~ value + capital, data = pGrun, model = "within") ## LSDV with user-created dummies by make.dummies: form_dummies <- paste0("firm", c(1:5), collapse = "+") form_dummies <- formula(paste0("inv ~ value + capital + ", form_dummies)) plm(form_dummies, data = pGrun.dummies, model = "pooling") # last dummy is dropped # LSDV via factor(year) -> let estimation function generate dummies: plm(inv ~ value + capital + factor(firm), data = pGrun, model = "pooling") } \seealso{ \code{\link[stats:contrast]{stats::contr.treatment()}}, \code{\link[stats:contrasts]{stats::contrasts()}} } \author{ Kevin Tappe } \keyword{manip} plm/man/ranef.plm.Rd0000644000176200001440000000373114124132276013774 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_ranfixef.R \name{ranef.plm} \alias{ranef.plm} \alias{ranef} \title{Extract the Random Effects} \usage{ \method{ranef}{plm}(object, effect = NULL, ...) } \arguments{ \item{object}{an object of class \code{"plm"}, needs to be a fitted random effects model,} \item{effect}{\code{NULL}, \code{"individual"}, or \code{"time"}, the effects to be extracted, see \strong{Details},} \item{\dots}{further arguments (currently not used).} } \value{ A named numeric with the random effects per dimension (individual or time). } \description{ Function to calculate the random effects from a \code{plm} object (random effects model). } \details{ Function \code{ranef} calculates the random effects of a fitted random effects model. For one-way models, the effects of the estimated model are extracted (either individual or time effects). For two-way models, extracting the individual effects is the default (both, argument \code{effect = NULL} and \code{effect = "individual"} will give individual effects). Time effects can be extracted by setting \code{effect = "time"}. Not all random effect model types are supported (yet?). } \examples{ data("Grunfeld", package = "plm") m1 <- plm(inv ~ value + capital, data = Grunfeld, model = "random") ranef(m1) # individual random effects # compare to random effects by ML estimation via lme from package nlme library(nlme) m2 <- lme(inv ~ value + capital, random = ~1|firm, data = Grunfeld) cbind("plm" = ranef(m1), "lme" = unname(ranef(m2))) # two-ways RE model, calculate individual and time random effects data("Cigar", package = "plm") tw <- plm(sales ~ pop + price, data = Cigar, model = "random", effect = "twoways") ranef(tw) # individual random effects ranef(tw, effect = "time") # time random effects } \seealso{ \code{\link[=fixef]{fixef()}} to extract the fixed effects from a fixed effects model (within model). } \author{ Kevin Tappe } \keyword{regression} plm/man/plmtest.Rd0000644000176200001440000000756614340404505013611 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_general.R \name{plmtest} \alias{plmtest} \alias{plmtest.plm} \alias{plmtest.formula} \title{Lagrange FF Multiplier Tests for Panel Models} \usage{ plmtest(x, ...) \method{plmtest}{plm}( x, effect = c("individual", "time", "twoways"), type = c("honda", "bp", "ghm", "kw"), ... ) \method{plmtest}{formula}( x, data, ..., effect = c("individual", "time", "twoways"), type = c("honda", "bp", "ghm", "kw") ) } \arguments{ \item{x}{an object of class \code{"plm"} or a formula of class \code{"formula"},} \item{\dots}{further arguments passed to \code{plmtest}.} \item{effect}{a character string indicating which effects are tested: individual effects (\code{"individual"}), time effects (\code{"time"}) or both (\code{"twoways"}),} \item{type}{a character string indicating the test to be performed: \itemize{ \item \code{"honda"} (default) for \insertCite{HOND:85;textual}{plm}, \item \code{"bp"} for \insertCite{BREU:PAGA:80;textual}{plm}, \item \code{"kw"} for \insertCite{KING:WU:97;textual}{plm}, or \item \code{"ghm"} for \insertCite{GOUR:HOLL:MONF:82;textual}{plm} for unbalanced panel data sets, the respective unbalanced version of the tests are computed, }} \item{data}{a \code{data.frame},} } \value{ An object of class \code{"htest"}. } \description{ Test of individual and/or time effects for panel models. } \details{ These Lagrange multiplier tests use only the residuals of the pooling model. The first argument of this function may be either a pooling model of class \code{plm} or an object of class \code{formula} describing the model. For input within (fixed effects) or random effects models, the corresponding pooling model is calculated internally first as the tests are based on the residuals of the pooling model. The \code{"bp"} test for unbalanced panels was derived in \insertCite{BALT:LI:90;textual}{plm} (1990), the \code{"kw"} test for unbalanced panels in \insertCite{BALT:CHAN:LI:98;textual}{plm}. The \code{"ghm"} test and the \code{"kw"} test were extended to two-way effects in \insertCite{BALT:CHAN:LI:92;textual}{plm}. For a concise overview of all these statistics see \insertCite{BALT:03;textual}{plm}, Sec. 4.2, pp. 68--76 (for balanced panels) and Sec. 9.5, pp. 200--203 (for unbalanced panels). } \note{ For the King-Wu statistics (\code{"kw"}), the oneway statistics (\code{"individual"} and \code{"time"}) coincide with the respective Honda statistics (\code{"honda"}); twoway statistics of \code{"kw"} and \code{"honda"} differ. } \examples{ data("Grunfeld", package = "plm") g <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") plmtest(g) plmtest(g, effect="time") plmtest(inv ~ value + capital, data = Grunfeld, type = "honda") plmtest(inv ~ value + capital, data = Grunfeld, type = "bp") plmtest(inv ~ value + capital, data = Grunfeld, type = "bp", effect = "twoways") plmtest(inv ~ value + capital, data = Grunfeld, type = "ghm", effect = "twoways") plmtest(inv ~ value + capital, data = Grunfeld, type = "kw", effect = "twoways") Grunfeld_unbal <- Grunfeld[1:(nrow(Grunfeld)-1), ] # create an unbalanced panel data set g_unbal <- plm(inv ~ value + capital, data = Grunfeld_unbal, model = "pooling") plmtest(g_unbal) # unbalanced version of test is indicated in output } \references{ \insertRef{BALT:13}{plm} \insertRef{BALT:LI:90}{plm} \insertRef{BALT:CHAN:LI:92}{plm} \insertRef{BALT:CHAN:LI:98}{plm} \insertRef{BREU:PAGA:80}{plm} \insertRef{GOUR:HOLL:MONF:82}{plm} \insertRef{HOND:85}{plm} \insertRef{KING:WU:97}{plm} } \seealso{ \code{\link[=pFtest]{pFtest()}} for individual and/or time effects tests based on the within model. } \author{ Yves Croissant (initial implementation), Kevin Tappe (generalization to unbalanced panels) } \keyword{htest} plm/man/piest.Rd0000644000176200001440000000350214340404505013227 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_pi.R \name{piest} \alias{piest} \alias{print.piest} \alias{summary.piest} \alias{print.summary.piest} \title{Chamberlain estimator and test for fixed effects} \usage{ piest(formula, data, subset, na.action, index = NULL, robust = TRUE, ...) \method{print}{piest}(x, ...) \method{summary}{piest}(object, ...) \method{print}{summary.piest}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), subset = NULL, ... ) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[=lm]{lm()}},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{index}{the indexes,} \item{robust}{logical, if \code{FALSE}, the error is assumed to be spherical, if \code{TRUE}, a robust estimation of the covariance matrix is computed,} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{"piest"} and of class \code{"summary.piest"} for the print method of summary for piest objects,} \item{digits}{number of digits for printed output,} \item{width}{the maximum length of the lines in the printed output,} } \value{ An object of class \code{"piest"}. } \description{ General estimator useful for testing the within specification } \details{ The Chamberlain method consists in using the covariates of all the periods as regressors. It allows to test the within specification. } \examples{ data("RiceFarms", package = "plm") pirice <- piest(log(goutput) ~ log(seed) + log(totlabor) + log(size), RiceFarms, index = "id") summary(pirice) } \references{ \insertRef{CHAM:82}{plm} } \seealso{ \code{\link[=aneweytest]{aneweytest()}} } \author{ Yves Croissant } \keyword{htest} plm/man/Parity.Rd0000644000176200001440000000166114124132276013362 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Parity} \alias{Parity} \title{Purchasing Power Parity and other parity relationships} \format{ A data frame containing : \describe{ \item{country}{country codes: a factor with 17 levels} \item{time}{the quarter index, 1973Q1-1998Q4} \item{ls}{log spot exchange rate vs. USD} \item{lp}{log price level} \item{is}{short term interest rate} \item{il}{long term interest rate} \item{ld}{log price differential vs. USA} \item{uis}{U.S. short term interest rate} \item{uil}{U.S. long term interest rate} } } \source{ \insertRef{COAK:FUER:SMIT:06}{plm} } \description{ A panel of 104 quarterly observations from 1973Q1 to 1998Q4 } \details{ \emph{total number of observations} : 1768 \emph{observation} : country \emph{country} : OECD } \references{ \insertRef{COAK:FUER:SMIT:06}{plm} \insertRef{DRIS:KRAA:98}{plm} } \keyword{datasets} plm/man/Cigar.Rd0000644000176200001440000000221314124132276013131 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Cigar} \alias{Cigar} \title{Cigarette Consumption} \format{ A data frame containing : \describe{ \item{state}{state abbreviation} \item{year}{the year} \item{price}{price per pack of cigarettes} \item{pop}{population} \item{pop16}{population above the age of 16} \item{cpi}{consumer price index (1983=100)} \item{ndi}{per capita disposable income} \item{sales}{cigarette sales in packs per capita} \item{pimin}{minimum price in adjoining states per pack of cigarettes} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ a panel of 46 observations from 1963 to 1992 } \details{ \emph{total number of observations} : 1380 \emph{observation} : regional \emph{country} : United States } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BALT:LEVI:92}{plm} \insertRef{BALT:GRIF:XION:00}{plm} } \keyword{datasets} plm/man/ercomp.Rd0000644000176200001440000000544314124132276013401 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_ercomp.R \name{ercomp} \alias{ercomp} \alias{ercomp.plm} \alias{ercomp.pdata.frame} \alias{ercomp.formula} \alias{print.ercomp} \title{Estimation of the error components} \usage{ ercomp(object, ...) \method{ercomp}{plm}(object, ...) \method{ercomp}{pdata.frame}( object, effect = c("individual", "time", "twoways", "nested"), method = NULL, models = NULL, dfcor = NULL, index = NULL, ... ) \method{ercomp}{formula}( object, data, effect = c("individual", "time", "twoways", "nested"), method = NULL, models = NULL, dfcor = NULL, index = NULL, ... ) \method{print}{ercomp}(x, digits = max(3, getOption("digits") - 3), ...) } \arguments{ \item{object}{a \code{formula} or a \code{plm} object,} \item{\dots}{further arguments.} \item{effect}{the effects introduced in the model, see \code{\link[=plm]{plm()}} for details,} \item{method}{method of estimation for the variance components, see \code{\link[=plm]{plm()}} for details,} \item{models}{the models used to estimate the variance components (an alternative to the previous argument),} \item{dfcor}{a numeric vector of length 2 indicating which degree of freedom should be used,} \item{index}{the indexes,} \item{data}{a \code{data.frame},} \item{x}{an \code{ercomp} object,} \item{digits}{digits,} } \value{ An object of class \code{"ercomp"}: a list containing \itemize{ \item \code{sigma2} a named numeric with estimates of the variance components, \item \code{theta} contains the parameter(s) used for the transformation of the variables: For a one-way model, a numeric corresponding to the selected effect (individual or time); for a two-ways model a list of length 3 with the parameters. In case of a balanced model, the numeric has length 1 while for an unbalanced model, the numerics' length equal the number of observations. } } \description{ This function enables the estimation of the variance components of a panel model. } \examples{ data("Produc", package = "plm") # an example of the formula method ercomp(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, method = "walhus", effect = "time") # same with the plm method z <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, random.method = "walhus", effect = "time", model = "random") ercomp(z) # a two-ways model ercomp(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, method = "amemiya", effect = "twoways") } \references{ \insertRef{AMEM:71}{plm} \insertRef{NERLO:71}{plm} \insertRef{SWAM:AROR:72}{plm} \insertRef{WALL:HUSS:69}{plm} } \seealso{ \code{\link[=plm]{plm()}} where the estimates of the variance components are used if a random effects model is estimated } \author{ Yves Croissant } \keyword{regression} plm/man/Wages.Rd0000644000176200001440000000312014124132276013150 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Wages} \alias{Wages} \title{Panel Data of Individual Wages} \format{ A data frame containing: \describe{ \item{exp}{years of full-time work experience.} \item{wks}{weeks worked.} \item{bluecol}{blue collar?} \item{ind}{works in a manufacturing industry?} \item{south}{resides in the south?} \item{smsa}{resides in a standard metropolitan statistical area?} \item{married}{married?} \item{sex}{a factor with levels \code{"male"} and \code{"female"}} \item{union}{individual's wage set by a union contract?} \item{ed}{years of education.} \item{black}{is the individual black?} \item{lwage}{logarithm of wage.} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ A panel of 595 individuals from 1976 to 1982, taken from the Panel Study of Income Dynamics (PSID).\cr\cr The data are organized as a stacked time series/balanced panel, see \strong{Examples} on how to convert to a \code{pdata.frame}. } \details{ \emph{total number of observations} : 4165 \emph{observation} : individuals \emph{country} : United States } \examples{ # data set 'Wages' is organized as a stacked time series/balanced panel data("Wages", package = "plm") Wag <- pdata.frame(Wages, index=595) } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{CORN:RUPE:88}{plm} } \keyword{datasets} plm/man/pwtest.Rd0000644000176200001440000000472514124132276013444 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pwtest} \alias{pwtest} \alias{pwtest.formula} \alias{pwtest.panelmodel} \title{Wooldridge's Test for Unobserved Effects in Panel Models} \usage{ pwtest(x, ...) \method{pwtest}{formula}(x, data, effect = c("individual", "time"), ...) \method{pwtest}{panelmodel}(x, effect = c("individual", "time"), ...) } \arguments{ \item{x}{an object of class \code{"formula"}, or an estimated model of class \code{panelmodel},} \item{\dots}{further arguments passed to \code{plm}.} \item{data}{a \code{data.frame},} \item{effect}{the effect to be tested for, one of \code{"individual"} (default) or \code{"time"},} } \value{ An object of class \code{"htest"}. } \description{ Semi-parametric test for the presence of (individual or time) unobserved effects in panel models. } \details{ This semi-parametric test checks the null hypothesis of zero correlation between errors of the same group. Therefore, it has power both against individual effects and, more generally, any kind of serial correlation. The test relies on large-N asymptotics. It is valid under error heteroskedasticity and departures from normality. The above is valid if \code{effect="individual"}, which is the most likely usage. If \code{effect="time"}, symmetrically, the test relies on large-T asymptotics and has power against time effects and, more generally, against cross-sectional correlation. If the panelmodel interface is used, the inputted model must be a pooling model. } \examples{ data("Produc", package = "plm") ## formula interface pwtest(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc) pwtest(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, effect = "time") ## panelmodel interface # first, estimate a pooling model, than compute test statistics form <- formula(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp) pool_prodc <- plm(form, data = Produc, model = "pooling") pwtest(pool_prodc) # == effect="individual" pwtest(pool_prodc, effect="time") } \references{ \insertRef{WOOL:02}{plm} \insertRef{WOOL:10}{plm} } \seealso{ \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbgtest]{pbgtest()}}, \code{\link[=pdwtest]{pdwtest()}}, \code{\link[=pbsytest]{pbsytest()}}, \code{\link[=pwartest]{pwartest()}}, \code{\link[=pwfdtest]{pwfdtest()}} for tests for serial correlation in panel models. \code{\link[=plmtest]{plmtest()}} for tests for random effects. } \author{ Giovanni Millo } \keyword{htest} plm/man/aneweytest.Rd0000644000176200001440000000212114124132276014272 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_pi.R \name{aneweytest} \alias{aneweytest} \title{Angrist and Newey's version of Chamberlain test for fixed effects} \usage{ aneweytest(formula, data, subset, na.action, index = NULL, ...) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{\link[=lm]{lm()}},} \item{na.action}{see \code{\link[=lm]{lm()}},} \item{index}{the indexes,} \item{\dots}{further arguments.} } \value{ An object of class \code{"htest"}. } \description{ Angrist and Newey's version of the Chamberlain test } \details{ Angrist and Newey's test is based on the results of the artifactual regression of the within residuals on the covariates for all the periods. } \examples{ data("RiceFarms", package = "plm") aneweytest(log(goutput) ~ log(seed) + log(totlabor) + log(size), RiceFarms, index = "id") } \references{ \insertRef{ANGR:NEWE:91}{plm} } \seealso{ \code{\link[=piest]{piest()}} for Chamberlain's test } \author{ Yves Croissant } \keyword{htest} plm/man/within_intercept.Rd0000644000176200001440000001111214642231265015464 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_ranfixef.R \name{within_intercept} \alias{within_intercept} \alias{within_intercept.plm} \title{Overall Intercept for Within Models Along its Standard Error} \usage{ within_intercept(object, ...) \method{within_intercept}{plm}(object, vcov = NULL, return.model = FALSE, ...) } \arguments{ \item{object}{object of class \code{plm} which must be a within model (fixed effects model),} \item{\dots}{further arguments (currently none).} \item{vcov}{if not \code{NULL} (default), a function to calculate a user defined variance--covariance matrix (function for robust vcov), only used if \code{return.model = FALSE},} \item{return.model}{a logical to indicate whether only the overall intercept (\code{FALSE} is default) or a full model object (\code{TRUE}) is to be returned,} } \value{ Depending on argument \code{return.model}: If \code{FALSE} (default), a named \code{numeric} of length one: The overall intercept for the estimated within model along attribute "se" which contains the standard error for the intercept. If \code{return.model = TRUE}, the full model object, a within model with the overall intercept (NB: the model identifies itself as a pooling model, e.g., in summary()). } \description{ This function gives an overall intercept for within models and its accompanying standard error or a within model with the overall intercept } \details{ The (somewhat artificial) intercept for within models (fixed effects models) was made popular by Stata of StataCorp \insertCite{@see @GOUL:13}{plm}, EViews of IHS, and gretl \insertCite{@see @GRETL:2021, p. 200-201, listing 23.1}{plm}, see for treatment in the literature, e.g., \insertCite{GREE:12;textual}{plm}, Ch. 11.4.4, p. 364. It can be considered an overall intercept in the within model framework and is the weighted mean of fixed effects (see \strong{Examples} for the relationship). \code{within_intercept} estimates a new model which is computationally more demanding than just taking the weighted mean. However, with \code{within_intercept} one also gets the associated standard error and it is possible to get an overall intercept for two-way fixed effect models. Users can set argument \code{vcov} to a function to calculate a specific (robust) variance--covariance matrix and get the respective (robust) standard error for the overall intercept, e.g., the function \code{\link[=vcovHC]{vcovHC()}}, see examples for usage. Note: The argument \code{vcov} must be a function, not a matrix, because the model to calculate the overall intercept for the within model is different from the within model itself. If argument \code{return.model = TRUE} is set, the full model object is returned, while in the default case only the intercept is returned. } \examples{ data("Hedonic", package = "plm") mod_fe <- plm(mv ~ age + crim, data = Hedonic, index = "townid") overallint <- within_intercept(mod_fe) attr(overallint, "se") # standard error # overall intercept is the weighted mean of fixed effects in the # one-way case weighted.mean(fixef(mod_fe), pdim(mod_fe)$Tint$Ti) ### relationship of type="dmean", "level" and within_intercept ## one-way balanced case data("Grunfeld", package = "plm") gi <- plm(inv ~ value + capital, data = Grunfeld, model = "within") fx_level <- fixef(gi, type = "level") fx_dmean <- fixef(gi, type = "dmean") overallint <- within_intercept(gi) all.equal(overallint + fx_dmean, fx_level, check.attributes = FALSE) # TRUE ## two-ways unbalanced case gtw_u <- plm(inv ~ value + capital, data = Grunfeld[-200, ], effect = "twoways") int_tw_u <- within_intercept(gtw_u) fx_dmean_tw_i_u <- fixef(gtw_u, type = "dmean", effect = "individual")[index(gtw_u)[[1L]]] fx_dmean_tw_t_u <- fixef(gtw_u, type = "dmean", effect = "time")[index(gtw_u)[[2L]]] fx_level_tw_u <- as.numeric(fixef(gtw_u, "twoways", "level")) fx_level_tw_u2 <- int_tw_u + fx_dmean_tw_i_u + fx_dmean_tw_t_u all.equal(fx_level_tw_u, fx_level_tw_u2, check.attributes = FALSE) # TRUE ## overall intercept with robust standard error within_intercept(gi, vcov = function(x) vcovHC(x, method="arellano", type="HC0")) ## have a model returned mod_fe_int <- within_intercept(gi, return.model = TRUE) summary(mod_fe_int) # replicates Stata's robust standard errors exactly as model is with intercept summary(mod_fe_int, vcov = function(x) vcovHC(x, type = "sss")) } \references{ \insertAllCited{} } \seealso{ \code{\link[=fixef]{fixef()}} to extract the fixed effects of a within model. } \author{ Kevin Tappe } \keyword{attribute} plm/man/predict.plm.Rd0000644000176200001440000001007214340404505014324 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_methods.R \name{predict.plm} \alias{predict.plm} \title{Model Prediction for plm Objects} \usage{ \method{predict}{plm}( object, newdata = NULL, na.fill = !inherits(newdata, "pdata.frame"), ... ) } \arguments{ \item{object}{An object of class \code{"plm"},} \item{newdata}{An optional pdata.frame in which to look for variables to be used for prediction. If \code{NULL}, the fitted values are returned. For fixed effects models, supplying a pdata.frame is recommended.} \item{na.fill}{A logical, only relevant if \code{object} is a pdata.frame, indicating whether for any supplied out-of-sample indexes (individual, time, combination of both), the missing fixed effect estimate is filled with the weighted mean of the model's present fixed effect estimates or not.} \item{\dots}{further arguments.} } \value{ A numeric (or a pseries if \code{newdata} is a pdata.frame) carrying the predicted values with length equal to the number of rows as the data supplied in \code{newdata} and with names the row names of \code{newdata} or, if \code{newdata = NULL}, the fitted values the original model given in \code{object}. } \description{ Predicted values of response based on plm models. } \details{ \code{predict}calculates predicted values by evaluating the regression function of a plm model for \code{newdata} or, if \code{newdata = NULL}, it returns the fitted values the plm model. The fixed effects (within) model is somewhat special in prediction as it has fixed effects estimated per individual, time period (one-way) or both (two-ways model) which should to be respected when predicting values relating to these fixed effects in the model: To do so, it is recommended to supply a pdata.frame (and not a plain data.frame) in \code{newdata} as it describes the relationship between the data supplied to the individual. and/or time periods. In case the \code{newdata}´'s pdata.frame has out-of-sample data (data contains individuals and/or time periods not contained in the original model), it is not clear how values are to be predicted and the result will contain \code{NA} values for these out-of-sample data. Argument \code{na.fill} can be set to \code{TRUE} to apply the original model's weighted mean of fixed effects for the out-of-sample data to derive a prediction. If a plain data.frame is given in \code{newdata} for a fixed effects model, the weighted mean is used for all fixed effects as \code{newdata} for prediction as a plain data.frame cannot describe any relation to individuals/time periods (\code{na.fill} is automatically set to \code{TRUE} and the function warns). See also \strong{Examples}. } \examples{ library(plm) data("Grunfeld", package = "plm") # fit a fixed effect model fit.fe <- plm(inv ~ value + capital, data = Grunfeld, model = "within") # generate 55 new observations of three firms used for prediction: # * firm 1 with years 1935:1964 (has out-of-sample years 1955:1964), # * firm 2 with years 1935:1949 (all in sample), # * firm 11 with years 1935:1944 (firm 11 is out-of-sample) set.seed(42L) new.value2 <- runif(55, min = min(Grunfeld$value), max = max(Grunfeld$value)) new.capital2 <- runif(55, min = min(Grunfeld$capital), max = max(Grunfeld$capital)) newdata <- data.frame(firm = c(rep(1, 30), rep(2, 15), rep(11, 10)), year = c(1935:(1935+29), 1935:(1935+14), 1935:(1935+9)), value = new.value2, capital = new.capital2) # make pdata.frame newdata.p <- pdata.frame(newdata, index = c("firm", "year")) ## predict from fixed effect model with new data as pdata.frame predict(fit.fe, newdata = newdata.p) ## set na.fill = TRUE to have the weighted mean used to for fixed effects -> no NA values predict(fit.fe, newdata = newdata.p, na.fill = TRUE) ## predict with plain data.frame from fixed effect model: uses mean fixed effects ## for prediction and, thus, yields different result with a warning predict(fit.fe, newdata = newdata) } \keyword{regression} plm/man/pdata.frame.Rd0000644000176200001440000001542314463274764014314 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{pdata.frame} \alias{pdata.frame} \alias{$<-.pdata.frame} \alias{[.pdata.frame} \alias{[[.pdata.frame} \alias{$.pdata.frame} \alias{print.pdata.frame} \alias{as.list.pdata.frame} \alias{as.data.frame.pdata.frame} \title{pdata.frame: a data.frame for panel data} \usage{ pdata.frame( x, index = NULL, drop.index = FALSE, row.names = TRUE, stringsAsFactors = FALSE, replace.non.finite = FALSE, drop.NA.series = FALSE, drop.const.series = FALSE, drop.unused.levels = FALSE, ... ) \method{$}{pdata.frame}(x, name) <- value \method{[}{pdata.frame}(x, i, j, drop) \method{[[}{pdata.frame}(x, y) \method{$}{pdata.frame}(x, y) \method{print}{pdata.frame}(x, ...) \method{as.list}{pdata.frame}(x, keep.attributes = FALSE, ...) \method{as.data.frame}{pdata.frame}( x, row.names = NULL, optional = FALSE, keep.attributes = TRUE, ... ) } \arguments{ \item{x}{a \code{data.frame} for the \code{pdata.frame} function and a \code{pdata.frame} for the methods,} \item{index}{this argument indicates the individual and time indexes. See \strong{Details},} \item{drop.index}{logical, indicates whether the indexes are to be excluded from the resulting pdata.frame,} \item{row.names}{\code{NULL} or logical, indicates whether "fancy" row names (combination of individual index and time index) are to be added to the returned (p)data.frame (\code{NULL} and \code{FALSE} have the same meaning for \code{pdata.frame}; for \code{as.data.frame.pdata.frame} see Details),} \item{stringsAsFactors}{logical, indicating whether character vectors are to be converted to factors,} \item{replace.non.finite}{logical, indicating whether values for which \code{is.finite()} yields \code{TRUE} are to be replaced by \code{NA} values, except for character variables (defaults to \code{FALSE}),} \item{drop.NA.series}{logical, indicating whether all-\code{NA} columns are to be removed from the pdata.frame (defaults to \code{FALSE}),} \item{drop.const.series}{logical, indicating whether constant columns are to be removed from the pdata.frame (defaults to \code{FALSE}),} \item{drop.unused.levels}{logical, indicating whether unused levels of factors are to be dropped (defaults to \code{FALSE}) (unused levels are always dropped from variables serving to construct the index variables),} \item{\dots}{further arguments passed on to internal usage of \code{data.frame}.} \item{name}{the name of the \code{data.frame},} \item{value}{the name of the variable to include,} \item{i}{see \code{\link[=Extract]{Extract()}},} \item{j}{see \code{\link[=Extract]{Extract()}},} \item{drop}{see \code{\link[=Extract]{Extract()}},} \item{y}{one of the columns of the \code{data.frame},} \item{keep.attributes}{logical, only for as.list and as.data.frame methods, indicating whether the elements of the returned list/columns of the data.frame should have the pdata.frame's attributes added (default: FALSE for as.list, TRUE for as.data.frame),} \item{optional}{see \code{\link[=as.data.frame]{as.data.frame()}},} } \value{ a \code{pdata.frame} object: this is a \code{data.frame} with an \code{index} attribute which is a \code{data.frame} with two variables, the individual and the time indexes, both being factors. The resulting pdata.frame is sorted by the individual index, then by the time index. } \description{ An object of class 'pdata.frame' is a data.frame with an index attribute that describes its individual and time dimensions. } \details{ The \code{index} argument indicates the dimensions of the panel. It can be: \itemize{ \item a vector of two character strings which contains the names of the individual and of the time indexes, \item a character string which is the name of the individual index variable. In this case, the time index is created automatically and a new variable called "time" is added, assuming consecutive and ascending time periods in the order of the original data, \item an integer, the number of individuals. In this case, the data need to be a balanced panel and be organized as a stacked time series (successive blocks of individuals, each block being a time series for the respective individual) assuming consecutive and ascending time periods in the order of the original data. Two new variables are added: "id" and "time" which contain the individual and the time indexes. } The \code{"[["} and \code{"$"} extract a series from the \code{pdata.frame}. The \code{"index"} attribute is then added to the series and a class attribute \code{"pseries"} is added. The \code{"["} method behaves as for \code{data.frame}, except that the extraction is also applied to the \code{index} attribute. A safe way to extract the index attribute is to use the function \code{\link[=index]{index()}} for 'pdata.frames' (and other objects). \code{as.data.frame} removes the index attribute from the \code{pdata.frame} and adds it to each column. For its argument \code{row.names} set to \code{FALSE} row names are an integer series, \code{TRUE} gives "fancy" row names; if a character (with length of the resulting data frame), the row names will be the character's elements. \code{as.list} behaves by default identical to \code{\link[base:list]{base::as.list.data.frame()}} which means it drops the attributes specific to a pdata.frame; if a list of pseries is wanted, the attribute \code{keep.attributes} can to be set to \code{TRUE}. This also makes \code{lapply} work as expected on a pdata.frame (see also \strong{Examples}). } \examples{ # Gasoline contains two variables which are individual and time # indexes data("Gasoline", package = "plm") Gas <- pdata.frame(Gasoline, index = c("country", "year"), drop.index = TRUE) # Hedonic is an unbalanced panel, townid is the individual index data("Hedonic", package = "plm") Hed <- pdata.frame(Hedonic, index = "townid", row.names = FALSE) # In case of balanced panel, it is sufficient to give number of # individuals data set 'Wages' is organized as a stacked time # series data("Wages", package = "plm") Wag <- pdata.frame(Wages, 595) # lapply on a pdata.frame by making it a list of pseries first lapply(as.list(Wag[ , c("ed", "lwage")], keep.attributes = TRUE), lag) } \seealso{ \code{\link[=index]{index()}} to extract the index variables from a 'pdata.frame' (and other objects), \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), \code{\link[=pvar]{pvar()}} to check for each variable if it varies cross-sectionally and over time. To check if the time periods are consecutive per individual, see \code{\link[=is.pconsecutive]{is.pconsecutive()}}. } \author{ Yves Croissant } \keyword{classes} plm/man/pbsytest.Rd0000644000176200001440000001324614124132276013771 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pbsytest} \alias{pbsytest} \alias{pbsytest.formula} \alias{pbsytest.panelmodel} \title{Bera, Sosa-Escudero and Yoon Locally--Robust Lagrange Multiplier Tests for Panel Models and Joint Test by Baltagi and Li} \usage{ pbsytest(x, ...) \method{pbsytest}{formula}( x, data, ..., test = c("ar", "re", "j"), re.normal = if (test == "re") TRUE else NULL ) \method{pbsytest}{panelmodel}( x, test = c("ar", "re", "j"), re.normal = if (test == "re") TRUE else NULL, ... ) } \arguments{ \item{x}{an object of class \code{formula} or of class \code{panelmodel},} \item{\dots}{further arguments.} \item{data}{a \code{data.frame},} \item{test}{a character string indicating which test to perform: first--order serial correlation (\code{"ar"}), random effects (\code{"re"}) or joint test for either of them (\code{"j"}),} \item{re.normal}{logical, only relevant for \code{test = "re"}: \code{TRUE} (default) computes the one-sided \code{"re"} test, \code{FALSE} the two-sided test (see also Details); not relevant for other values of \code{test} and, thus, should be \code{NULL},} } \value{ An object of class \code{"htest"}. } \description{ Test for residual serial correlation (or individual random effects) locally robust vs. individual random effects (serial correlation) for panel models and joint test of serial correlation and the random effect specification by Baltagi and Li. } \details{ These Lagrange multiplier tests are robust vs. local misspecification of the alternative hypothesis, i.e., they test the null of serially uncorrelated residuals against AR(1) residuals in a pooling model, allowing for local departures from the assumption of no random effects; or they test the null of no random effects allowing for local departures from the assumption of no serial correlation in residuals. They use only the residuals of the pooled OLS model and correct for local misspecification as outlined in \insertCite{BERA:SOSA:YOON:01;textual}{plm}. For \code{test = "re"}, the default (\code{re.normal = TRUE}) is to compute a one-sided test which is expected to lead to a more powerful test (asymptotically N(0,1) distributed). Setting \code{re.normal = FALSE} gives the two-sided test (asymptotically chi-squared(2) distributed). Argument \code{re.normal} is irrelevant for all other values of \code{test}. The joint test of serial correlation and the random effect specification (\code{test = "j"}) is due to \insertCite{BALT:LI:91;textual}{plm} (also mentioned in \insertCite{BALT:LI:95;textual}{plm}, pp. 135--136) and is added for convenience under this same function. The unbalanced version of all tests are derived in \insertCite{SOSA:BERA:08;textual}{plm}. The functions implemented are suitable for balanced as well as unbalanced panel data sets. A concise treatment of the statistics for only balanced panels is given in \insertCite{BALT:13;textual}{plm}, p. 108. Here is an overview of how the various values of the \code{test} argument relate to the literature: \itemize{ \item \code{test = "ar"}: \itemize{ \item \eqn{RS*_{\rho}} in Bera et al. (2001), p. 9 (balanced) \item \eqn{LM*_{\rho}} in Baltagi (2013), p. 108 (balanced) \item \eqn{RS*_{\lambda}} in Sosa-Escudero/Bera (2008), p. 73 (unbalanced) } \item \verb{test = "re", re.normal = TRUE} (default) (one-sided test, asymptotically N(0,1) distributed): \itemize{ \item \eqn{RSO*_{\mu}} in Bera et al. (2001), p. 11 (balanced) \item \eqn{RSO*_{\mu}} in Sosa-Escudero/Bera (2008), p. 75 (unbalanced) } \item \verb{test = "re", re.normal = FALSE} (two-sided test, asymptotically chi-squared(2) distributed): \itemize{ \item \eqn{RS*_{\mu}} in Bera et al. (2001), p. 7 (balanced) \item \eqn{LM*_{\mu}} in Baltagi (2013), p. 108 (balanced) \item \eqn{RS*_{\mu}} in Sosa-Escudero/Bera (2008), p. 73 (unbalanced) } \item \code{test = "j"}: \itemize{ \item \eqn{RS_{\mu\rho}} in Bera et al. (2001), p. 10 (balanced) \item \eqn{LM} in Baltagi/Li (2001), p. 279 (balanced) \item \eqn{LM_{1}} in Baltagi and Li (1995), pp. 135--136 (balanced) \item \eqn{LM1} in Baltagi (2013), p. 108 (balanced) \item \eqn{RS_{\lambda\rho}} in Sosa-Escudero/Bera (2008), p. 74 (unbalanced) } } } \examples{ ## Bera et. al (2001), p. 13, table 1 use ## a subset of the original Grunfeld ## data which contains three errors -> construct this subset: data("Grunfeld", package = "plm") Grunsubset <- rbind(Grunfeld[1:80, ], Grunfeld[141:160, ]) Grunsubset[Grunsubset$firm == 2 & Grunsubset$year \%in\% c(1940, 1952), ][["inv"]] <- c(261.6, 645.2) Grunsubset[Grunsubset$firm == 2 & Grunsubset$year == 1946, ][["capital"]] <- 232.6 ## default is AR testing (formula interface) pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year")) pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), test = "re") pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), test = "re", re.normal = FALSE) pbsytest(inv ~ value + capital, data = Grunsubset, index = c("firm", "year"), test = "j") ## plm interface mod <- plm(inv ~ value + capital, data = Grunsubset, model = "pooling") pbsytest(mod) } \references{ \insertRef{BERA:SOSA:YOON:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BALT:LI:91}{plm} \insertRef{BALT:LI:95}{plm} \insertRef{SOSA:BERA:08}{plm} } \seealso{ \code{\link[=plmtest]{plmtest()}} for individual and/or time random effects tests based on a correctly specified model; \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbgtest]{pbgtest()}} and \code{\link[=pdwtest]{pdwtest()}} for serial correlation tests in random effects models. } \author{ Giovanni Millo (initial implementation) & Kevin Tappe (extension to unbalanced panels) } \keyword{htest} plm/man/detect.lindep.Rd0000644000176200001440000001620314642231264014634 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/detect_lin_dep_alias.R \name{detect.lindep} \alias{detect.lindep} \alias{detect.lindep.matrix} \alias{detect.lindep.data.frame} \alias{detect.lindep.plm} \alias{alias.plm} \alias{alias.pdata.frame} \title{Functions to detect linear dependence} \usage{ detect.lindep(object, ...) \method{detect.lindep}{matrix}(object, suppressPrint = FALSE, ...) \method{detect.lindep}{data.frame}(object, suppressPrint = FALSE, ...) \method{detect.lindep}{plm}(object, suppressPrint = FALSE, ...) \method{alias}{plm}(object, ...) \method{alias}{pdata.frame}( object, model = c("pooling", "within", "Between", "between", "mean", "random", "fd"), effect = c("individual", "time", "twoways"), ... ) } \arguments{ \item{object}{for \code{detect.lindep}: an object which should be checked for linear dependence (of class \code{"matrix"}, \code{"data.frame"}, or \code{"plm"}); for \code{alias}: either an estimated model of class \code{"plm"} or a \code{"pdata.frame"}. Usually, one wants to input a model matrix here or check an already estimated plm model,} \item{\dots}{further arguments.} \item{suppressPrint}{for \code{detect.lindep} only: logical indicating whether a message shall be printed; defaults to printing the message, i. e., to \code{suppressPrint = FALSE},} \item{model}{(see \code{plm}),} \item{effect}{(see \code{plm}),} } \value{ For \code{detect.lindep}: A named numeric vector containing column numbers of the linear dependent columns in the object after data transformation, if any are present. \code{NULL} if no linear dependent columns are detected. For \code{alias}: return value of \code{\link[stats:alias]{stats::alias.lm()}} run on the (quasi-)demeaned model, i. e., the information outputted applies to the transformed model matrix, not the original data. } \description{ Little helper functions to aid users to detect linear dependent columns in a two-dimensional data structure, especially in a (transformed) model matrix - typically useful in interactive mode during model building phase. } \details{ Linear dependence of columns/variables is (usually) readily avoided when building one's model. However, linear dependence is sometimes not obvious and harder to detect for less experienced applied statisticians. The so called "dummy variable trap" is a common and probably the best--known fallacy of this kind (see e. g. Wooldridge (2016), sec. 7-2.). When building linear models with \code{lm} or \code{plm}'s \code{pooling} model, linear dependence in one's model is easily detected, at times post hoc. However, linear dependence might also occur after some transformations of the data, albeit it is not present in the untransformed data. The within transformation (also called fixed effect transformation) used in the \code{"within"} model can result in such linear dependence and this is harder to come to mind when building a model. See \strong{Examples} for two examples of linear dependent columns after the within transformation: ex. 1) the transformed variables have the opposite sign of one another; ex. 2) the transformed variables are identical. During \code{plm}'s model estimation, linear dependent columns and their corresponding coefficients in the resulting object are silently dropped, while the corresponding model frame and model matrix still contain the affected columns. The plm object contains an element \code{aliased} which indicates any such aliased coefficients by a named logical. Both functions, \code{detect.lindep} and \code{alias}, help to detect linear dependence and accomplish almost the same: \code{detect.lindep} is a stand alone implementation while \code{alias} is a wrapper around \code{\link[stats:alias]{stats::alias.lm()}}, extending the \code{alias} generic to classes \code{"plm"} and \code{"pdata.frame"}. \code{alias} hinges on the availability of the package \CRANpkg{MASS} on the system. Not all arguments of \code{alias.lm} are supported. Output of \code{alias} is more informative as it gives the linear combination of dependent columns (after data transformations, i. e., after (quasi)-demeaning) while \code{detect.lindep} only gives columns involved in the linear dependence in a simple format (thus being more suited for automatic post--processing of the information). } \note{ function \code{detect.lindep} was called \code{detect_lin_dep} initially but renamed for naming consistency later. } \examples{ ### Example 1 ### # prepare the data data("Cigar" , package = "plm") Cigar[ , "fact1"] <- c(0,1) Cigar[ , "fact2"] <- c(1,0) Cigar.p <- pdata.frame(Cigar) # setup a formula and a model frame form <- price ~ 0 + cpi + fact1 + fact2 mf <- model.frame(Cigar.p, form) # no linear dependence in the pooling model's model matrix # (with intercept in the formula, there would be linear dependence) detect.lindep(model.matrix(mf, model = "pooling")) # linear dependence present in the FE transformed model matrix modmat_FE <- model.matrix(mf, model = "within") detect.lindep(modmat_FE) mod_FE <- plm(form, data = Cigar.p, model = "within") detect.lindep(mod_FE) alias(mod_FE) # => fact1 == -1*fact2 plm(form, data = mf, model = "within")$aliased # "fact2" indicated as aliased # look at the data: after FE transformation fact1 == -1*fact2 head(modmat_FE) all.equal(modmat_FE[ , "fact1"], -1*modmat_FE[ , "fact2"]) ### Example 2 ### # Setup the data: # Assume CEOs stay with the firms of the Grunfeld data # for the firm's entire lifetime and assume some fictional # data about CEO tenure and age in year 1935 (first observation # in the data set) to be at 1 to 10 years and 38 to 55 years, respectively. # => CEO tenure and CEO age increase by same value (+1 year per year). data("Grunfeld", package = "plm") set.seed(42) # add fictional data Grunfeld$CEOtenure <- c(replicate(10, seq(from=s<-sample(1:10, 1), to=s+19, by=1))) Grunfeld$CEOage <- c(replicate(10, seq(from=s<-sample(38:65, 1), to=s+19, by=1))) # look at the data head(Grunfeld, 50) form <- inv ~ value + capital + CEOtenure + CEOage mf <- model.frame(pdata.frame(Grunfeld), form) # no linear dependent columns in original data/pooling model modmat_pool <- model.matrix(mf, model="pooling") detect.lindep(modmat_pool) mod_pool <- plm(form, data = Grunfeld, model = "pooling") alias(mod_pool) # CEOtenure and CEOage are linear dependent after FE transformation # (demeaning per individual) modmat_FE <- model.matrix(mf, model="within") detect.lindep(modmat_FE) mod_FE <- plm(form, data = Grunfeld, model = "within") detect.lindep(mod_FE) alias(mod_FE) # look at the transformed data: after FE transformation CEOtenure == 1*CEOage head(modmat_FE, 50) all.equal(modmat_FE[ , "CEOtenure"], modmat_FE[ , "CEOage"]) } \references{ \insertRef{WOOL:13}{plm} } \seealso{ \code{\link[stats:alias]{stats::alias()}}, \code{\link[stats:model.matrix]{stats::model.matrix()}} and especially \code{plm}'s \code{\link[=model.matrix]{model.matrix()}} for (transformed) model matrices, plm's \code{\link[=model.frame]{model.frame()}}. } \author{ Kevin Tappe } \keyword{array} \keyword{manip} plm/man/Males.Rd0000644000176200001440000000216014124132276013146 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Males} \alias{Males} \title{Wages and Education of Young Males} \format{ A data frame containing : \describe{ \item{nr}{identifier} \item{year}{year} \item{school}{years of schooling} \item{exper}{years of experience (computed as \code{age-6-school})} \item{union}{wage set by collective bargaining?} \item{ethn}{a factor with levels \verb{black, hisp, other}} \item{married}{married?} \item{health}{health problem?} \item{wage}{log of hourly wage} \item{industry}{a factor with 12 levels} \item{occupation}{a factor with 9 levels} \item{residence}{a factor with levels \verb{rural_area, north_east, northern_central, south}} } } \source{ Journal of Applied Econometrics data archive \url{http://qed.econ.queensu.ca/jae/1998-v13.2/vella-verbeek/}. } \description{ A panel of 545 observations from 1980 to 1987 } \details{ \emph{total number of observations} : 4360 \emph{observation} : individuals \emph{country} : United States } \references{ \insertRef{VELL:VERB:98}{plm} \insertRef{VERB:04}{plm} } \keyword{datasets} plm/man/Hedonic.Rd0000644000176200001440000000304014124132276013454 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Hedonic} \alias{Hedonic} \title{Hedonic Prices of Census Tracts in the Boston Area} \format{ A dataframe containing: \describe{ \item{mv}{median value of owner--occupied homes} \item{crim}{crime rate} \item{zn}{proportion of 25,000 square feet residential lots} \item{indus}{proportion of no--retail business acres} \item{chas}{is the tract bounds the Charles River?} \item{nox}{annual average nitrogen oxide concentration in parts per hundred million} \item{rm}{average number of rooms} \item{age}{proportion of owner units built prior to 1940} \item{dis}{weighted distances to five employment centers in the Boston area} \item{rad}{index of accessibility to radial highways} \item{tax}{full value property tax rate ($/$10,000)} \item{ptratio}{pupil/teacher ratio} \item{blacks}{proportion of blacks in the population} \item{lstat}{proportion of population that is lower status} \item{townid}{town identifier} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ A cross-section } \details{ \emph{number of observations} : 506 \emph{observation} : regional \emph{country} : United States } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BESL:KUH:WELS:80}{plm} \insertRef{HARR:RUBI:78}{plm} } \keyword{datasets} plm/man/nobs.plm.Rd0000644000176200001440000000355614340404505013644 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_methods.R \name{nobs.plm} \alias{nobs.plm} \alias{nobs} \alias{nobs.panelmodel} \alias{nobs.pgmm} \title{Extract Total Number of Observations Used in Estimated Panelmodel} \usage{ \method{nobs}{panelmodel}(object, ...) \method{nobs}{pgmm}(object, ...) } \arguments{ \item{object}{a \code{panelmodel} object for which the number of total observations is to be extracted,} \item{\dots}{further arguments.} } \value{ A single number, normally an integer. } \description{ This function extracts the total number of 'observations' from a fitted panel model. } \details{ The number of observations is usually the length of the residuals vector. Thus, \code{nobs} gives the number of observations actually used by the estimation procedure. It is not necessarily the number of observations of the model frame (number of rows in the model frame), because sometimes the model frame is further reduced by the estimation procedure. This is, e.g., the case for first--difference models estimated by \code{plm(..., model = "fd")} where the model frame does not yet contain the differences (see also \strong{Examples}). } \examples{ # estimate a panelmodel data("Produc", package = "plm") z <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp,data=Produc, model="random", subset = gsp > 5000) nobs(z) # total observations used in estimation pdim(z)$nT$N # same information pdim(z) # more information about the dimensions (no. of individuals and time periods) # illustrate difference between nobs and pdim for first-difference model data("Grunfeld", package = "plm") fdmod <- plm(inv ~ value + capital, data = Grunfeld, model = "fd") nobs(fdmod) # 190 pdim(fdmod)$nT$N # 200 } \seealso{ \code{\link[=pdim]{pdim()}} } \keyword{attribute} plm/man/index.plm.Rd0000644000176200001440000000522114124132276014004 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{index.plm} \alias{index.plm} \alias{index} \alias{index.pindex} \alias{index.pdata.frame} \alias{index.pseries} \alias{index.panelmodel} \title{Extract the indexes of panel data} \usage{ \method{index}{pindex}(x, which = NULL, ...) \method{index}{pdata.frame}(x, which = NULL, ...) \method{index}{pseries}(x, which = NULL, ...) \method{index}{panelmodel}(x, which = NULL, ...) } \arguments{ \item{x}{an object of class \code{"pindex"}, \code{"pdata.frame"}, \code{"pseries"} or \code{"panelmodel"},} \item{which}{the index(es) to be extracted (see details),} \item{\dots}{further arguments.} } \value{ A vector or an object of class \code{c("pindex","data.frame")} containing either one index, individual and time index, or (any combination of) individual, time and group indexes. } \description{ This function extracts the information about the structure of the individual and time dimensions of panel data. Grouping information can also be extracted if the panel data were created with a grouping variable. } \details{ Panel data are stored in a \code{"pdata.frame"} which has an \code{"index"} attribute. Fitted models in \code{"plm"} have a \code{"model"} element which is also a \code{"pdata.frame"} and therefore also has an \code{"index"} attribute. Finally, each series, once extracted from a \code{"pdata.frame"}, becomes of class \code{"pseries"}, which also has this \code{"index"} attribute. \code{"index"} methods are available for all these objects. The argument \code{"which"} indicates which index should be extracted. If \code{which = NULL}, all indexes are extracted. \code{"which"} can also be a vector of length 1, 2, or 3 (3 only if the pdata frame was constructed with an additional group index) containing either characters (the names of the individual variable and/or of the time variable and/or the group variable or \code{"id"} and \code{"time"}) and \code{"group"} or integers (1 for the individual index, 2 for the time index, and 3 for the group index (the latter only if the pdata frame was constructed with such).) } \examples{ data("Grunfeld", package = "plm") Gr <- pdata.frame(Grunfeld, index = c("firm", "year")) m <- plm(inv ~ value + capital, data = Gr) index(Gr, "firm") index(Gr, "time") index(Gr$inv, c(2, 1)) index(m, "id") # with additional group index data("Produc", package = "plm") pProduc <- pdata.frame(Produc, index = c("state", "year", "region")) index(pProduc, 3) index(pProduc, "region") index(pProduc, "group") } \seealso{ \code{\link[=pdata.frame]{pdata.frame()}}, \code{\link[=plm]{plm()}} } \author{ Yves Croissant } \keyword{attribute} plm/man/pseries.Rd0000644000176200001440000001363314433471316013572 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_transformations.R \name{pseries} \alias{pseries} \alias{print.pseries} \alias{as.matrix.pseries} \alias{plot.pseries} \alias{summary.pseries} \alias{plot.summary.pseries} \alias{print.summary.pseries} \alias{Sum} \alias{Sum.default} \alias{Sum.pseries} \alias{Sum.matrix} \alias{Between} \alias{Between.default} \alias{Between.pseries} \alias{Between.matrix} \alias{between} \alias{between.default} \alias{between.pseries} \alias{between.matrix} \alias{Within} \alias{Within.default} \alias{Within.pseries} \alias{Within.matrix} \title{panel series} \usage{ \method{print}{pseries}(x, ...) \method{as.matrix}{pseries}(x, idbyrow = TRUE, ...) \method{plot}{pseries}( x, plot = c("lattice", "superposed"), scale = FALSE, transparency = TRUE, col = "blue", lwd = 1, ... ) \method{summary}{pseries}(object, ...) \method{plot}{summary.pseries}(x, ...) \method{print}{summary.pseries}(x, ...) Sum(x, ...) \method{Sum}{default}(x, effect, ...) \method{Sum}{pseries}(x, effect = c("individual", "time", "group"), ...) \method{Sum}{matrix}(x, effect, ...) Between(x, ...) \method{Between}{default}(x, effect, ...) \method{Between}{pseries}(x, effect = c("individual", "time", "group"), ...) \method{Between}{matrix}(x, effect, ...) between(x, ...) \method{between}{default}(x, effect, ...) \method{between}{pseries}(x, effect = c("individual", "time", "group"), ...) \method{between}{matrix}(x, effect, ...) Within(x, ...) \method{Within}{default}(x, effect, ...) \method{Within}{pseries}(x, effect = c("individual", "time", "group", "twoways"), ...) \method{Within}{matrix}(x, effect, ...) } \arguments{ \item{x, object}{a \code{pseries} or a matrix; or a \code{summary.pseries} object,} \item{\dots}{further arguments, e. g., \code{na.rm = TRUE} for transformation functions like \code{between}, see \strong{Details} and \strong{Examples}.} \item{idbyrow}{if \code{TRUE} in the \code{as.matrix} method, the lines of the matrix are the individuals,} \item{plot, scale, transparency, col, lwd}{plot arguments,} \item{effect}{for the pseries methods: character string indicating the \code{"individual"}, \code{"time"}, or \code{"group"} effect, for \code{Within} \code{"twoways"} additionally; for non-pseries methods, \code{effect} is a factor specifying the dimension (\code{"twoways"} is not possible),} } \value{ All these functions return an object of class \code{pseries} or a matrix, except:\cr \code{between}, which returns a numeric vector or a matrix; \code{as.matrix}, which returns a matrix. } \description{ A class for panel series for which several useful computations and data transformations are available. } \details{ The functions \code{between}, \code{Between}, \code{Within}, and \code{Sum} perform specific data transformations, i. e., the between, within, and sum transformation, respectively. \code{between} returns a vector/matrix containing the individual means (over time) with the length of the vector equal to the number of individuals (if \code{effect = "individual"} (default); if \code{effect = "time"}, it returns the time means (over individuals)). \code{Between} duplicates the values and returns a vector/matrix which length/number of rows is the number of total observations. \code{Within} returns a vector/matrix containing the values in deviation from the individual means (if \code{effect = "individual"}, from time means if \code{effect = "time"}), the so called demeaned data. \code{Sum} returns a vector/matrix with sum per individual (over time) or the sum per time period (over individuals) with \code{effect = "individual"} or \code{effect = "time"}, respectively, and has length/ number of rows of the total observations (like \code{Between}). For \code{between}, \code{Between}, \code{Within}, and \code{Sum} in presence of NA values it can be useful to supply \code{na.rm = TRUE} as an additional argument to keep as many observations as possible in the resulting transformation. na.rm is passed on to the mean()/sum() function used by these transformations (i.e., it does not remove NAs prior to any processing!), see also \strong{Examples}. } \examples{ # First, create a pdata.frame data("EmplUK", package = "plm") Em <- pdata.frame(EmplUK) # Then extract a series, which becomes additionally a pseries z <- Em$output class(z) # obtain the matrix representation as.matrix(z) # compute the between and within transformations between(z) Within(z) # Between and Sum replicate the values for each time observation Between(z) Sum(z) # between, Between, Within, and Sum transformations on other dimension between(z, effect = "time") Between(z, effect = "time") Within(z, effect = "time") Sum(z, effect = "time") # NA treatment for between, Between, Within, and Sum z2 <- z z2[length(z2)] <- NA # set last value to NA between(z2, na.rm = TRUE) # non-NA value for last individual Between(z2, na.rm = TRUE) # only the NA observation is lost Within(z2, na.rm = TRUE) # only the NA observation is lost Sum(z2, na.rm = TRUE) # only the NA observation is lost sum(is.na(Between(z2))) # 9 observations lost due to one NA value sum(is.na(Between(z2, na.rm = TRUE))) # only the NA observation is lost sum(is.na(Within(z2))) # 9 observations lost due to one NA value sum(is.na(Within(z2, na.rm = TRUE))) # only the NA observation is lost sum(is.na(Sum(z2))) # 9 observations lost due to one NA value sum(is.na(Sum(z2, na.rm = TRUE))) # only the NA observation is lost } \seealso{ \code{\link[=is.pseries]{is.pseries()}} to check if an object is a pseries. For more functions on class 'pseries' see \code{\link[=lag]{lag()}}, \code{\link[=lead]{lead()}}, \code{\link[=diff]{diff()}} for lagging values, leading values (negative lags) and differencing. } \author{ Yves Croissant } \keyword{classes} plm/man/pbgtest.Rd0000644000176200001440000000657014124132276013566 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pbgtest} \alias{pbgtest} \alias{pbgtest.panelmodel} \alias{pbgtest.formula} \title{Breusch--Godfrey Test for Panel Models} \usage{ pbgtest(x, ...) \method{pbgtest}{panelmodel}(x, order = NULL, type = c("Chisq", "F"), ...) \method{pbgtest}{formula}( x, order = NULL, type = c("Chisq", "F"), data, model = c("pooling", "random", "within"), ... ) } \arguments{ \item{x}{an object of class \code{"panelmodel"} or of class \code{"formula"},} \item{\dots}{further arguments (see \code{\link[lmtest:bgtest]{lmtest::bgtest()}}).} \item{order}{an integer indicating the order of serial correlation to be tested for. \code{NULL} (default) uses the minimum number of observations over the time dimension (see also section \strong{Details} below),} \item{type}{type of test statistic to be calculated; either \code{"Chisq"} (default) for the Chi-squared test statistic or \code{"F"} for the F test statistic,} \item{data}{only relevant for formula interface: data set for which the respective panel model (see \code{model}) is to be evaluated,} \item{model}{only relevant for formula interface: compute test statistic for model \code{pooling} (default), \code{random}, or \code{within}. When \code{model} is used, the \code{data} argument needs to be passed as well,} } \value{ An object of class \code{"htest"}. } \description{ Test of serial correlation for (the idiosyncratic component of) the errors in panel models. } \details{ This Lagrange multiplier test uses the auxiliary model on (quasi-)demeaned data taken from a model of class \code{plm} which may be a \code{pooling} (default for formula interface), \code{random} or \code{within} model. It performs a Breusch--Godfrey test (using \code{bgtest} from package \CRANpkg{lmtest} on the residuals of the (quasi-)demeaned model, which should be serially uncorrelated under the null of no serial correlation in idiosyncratic errors, as illustrated in \insertCite{WOOL:10;textual}{plm}. The function takes the demeaned data, estimates the model and calls \code{bgtest}. Unlike most other tests for serial correlation in panels, this one allows to choose the order of correlation to test for. } \note{ The argument \code{order} defaults to the minimum number of observations over the time dimension, while for \code{lmtest::bgtest} it defaults to \code{1}. } \examples{ data("Grunfeld", package = "plm") g <- plm(inv ~ value + capital, data = Grunfeld, model = "random") # panelmodel interface pbgtest(g) pbgtest(g, order = 4) # formula interface pbgtest(inv ~ value + capital, data = Grunfeld, model = "random") # F test statistic (instead of default type="Chisq") pbgtest(g, type="F") pbgtest(inv ~ value + capital, data = Grunfeld, model = "random", type = "F") } \references{ \insertRef{BREU:78}{plm} \insertRef{GODF:78}{plm} \insertRef{WOOL:02}{plm} \insertRef{WOOL:10}{plm} \insertRef{WOOL:13}{plm} Sec. 12.2, pp. 421--422. } \seealso{ For the original test in package \CRANpkg{lmtest} see \code{\link[lmtest:bgtest]{lmtest::bgtest()}}. See \code{\link[=pdwtest]{pdwtest()}} for the analogous panel Durbin--Watson test. See \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbsytest]{pbsytest()}}, \code{\link[=pwartest]{pwartest()}} and \code{\link[=pwfdtest]{pwfdtest()}} for other serial correlation tests for panel models. } \author{ Giovanni Millo } \keyword{htest} plm/man/pgrangertest.Rd0000644000176200001440000000673314340404505014621 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_granger.R \name{pgrangertest} \alias{pgrangertest} \title{Panel Granger (Non-)Causality Test (Dumitrescu/Hurlin (2012))} \usage{ pgrangertest( formula, data, test = c("Ztilde", "Zbar", "Wbar"), order = 1L, index = NULL ) } \arguments{ \item{formula}{a \code{formula} object to describe the direction of the hypothesized Granger causation,} \item{data}{a \code{pdata.frame} or a \code{data.frame},} \item{test}{a character to request the statistic to be returned, either \code{"Ztilde"} (default),or \code{"Zbar"}, alternatively, set to \code{"Wbar"} for an intermediate statistic (see Details),} \item{order}{integer(s) giving the number of lags to include in the test's auxiliary regressions, the length of order must be either 1 (same lag order for all individuals) or equal to the number of individuals (to specify a lag order per individual),} \item{index}{only relevant if \code{data} is \code{data.frame} and not a \code{pdata.frame}; if \code{NULL}, the first two columns of the data.frame are assumed to be the index variables, for further details see \code{\link[=pdata.frame]{pdata.frame()}}.} } \value{ An object of class \code{c("pgrangertest", "htest")}. Besides the usual elements of a \code{htest} object, it contains the data frame \code{indgranger} which carries the Granger test statistics per individual along the associated p-values, degrees of freedom, and the specified lag order. } \description{ Test for Granger (non-)causality in panel data. } \details{ The panel Granger (non-)causality test is a combination of Granger tests \insertCite{GRAN:69}{plm} performed per individual. The test is developed by \insertCite{DUMI:HURL:12;textual}{plm}, a shorter exposition is given in \insertCite{LOPE:WEBE:17;textual}{plm}. The formula \code{formula} describes the direction of the (panel) Granger causation where \code{y ~ x} means "x (panel) Granger causes y". By setting argument \code{test} to either \code{"Ztilde"} (default) or \code{"Zbar"}, two different statistics can be requested. \code{"Ztilde"} gives the standardised statistic recommended by Dumitrescu/Hurlin (2012) for fixed T samples. If set to \code{"Wbar"}, the intermediate Wbar statistic (average of individual Granger chi-square statistics) is given which is used to derive the other two. The Zbar statistic is not suitable for unbalanced panels. For the Wbar statistic, no p-value is available. The implementation uses \code{\link[lmtest:grangertest]{lmtest::grangertest()}} from package \CRANpkg{lmtest} to perform the individual Granger tests. } \examples{ ## not meaningful, just to demonstrate usage ## H0: 'value' does not Granger cause 'inv' for all invididuals data("Grunfeld", package = "plm") pgrangertest(inv ~ value, data = Grunfeld) pgrangertest(inv ~ value, data = Grunfeld, order = 2L) pgrangertest(inv ~ value, data = Grunfeld, order = 2L, test = "Zbar") # varying lag order (last individual lag order 3, others lag order 2) (pgrt <- pgrangertest(inv ~ value, data = Grunfeld, order = c(rep(2L, 9), 3L))) # chisq statistics per individual pgrt$indgranger } \references{ \insertRef{DUMI:HURL:12}{plm} \insertRef{GRAN:69}{plm} \insertRef{LOPE:WEBE:17}{plm} } \seealso{ \code{\link[lmtest:grangertest]{lmtest::grangertest()}} for the original (non-panel) Granger causality test in \CRANpkg{lmtest}. } \author{ Kevin Tappe } \keyword{htest} plm/man/make.pbalanced.Rd0000644000176200001440000001671314340404505014740 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/make.pconsecutive_pbalanced.R \name{make.pbalanced} \alias{make.pbalanced} \alias{make.pbalanced.pdata.frame} \alias{make.pbalanced.pseries} \alias{make.pbalanced.data.frame} \title{Make data balanced} \usage{ make.pbalanced( x, balance.type = c("fill", "shared.times", "shared.individuals"), ... ) \method{make.pbalanced}{pdata.frame}( x, balance.type = c("fill", "shared.times", "shared.individuals"), ... ) \method{make.pbalanced}{pseries}( x, balance.type = c("fill", "shared.times", "shared.individuals"), ... ) \method{make.pbalanced}{data.frame}( x, balance.type = c("fill", "shared.times", "shared.individuals"), index = NULL, ... ) } \arguments{ \item{x}{an object of class \code{pdata.frame}, \code{data.frame}, or \code{pseries};} \item{balance.type}{character, one of \code{"fill"}, \code{"shared.times"}, or \code{"shared.individuals"}, see \strong{Details},} \item{\dots}{further arguments.} \item{index}{only relevant for \code{data.frame} interface; if \code{NULL}, the first two columns of the data.frame are assumed to be the index variables; if not \code{NULL}, both dimensions ('individual', 'time') need to be specified by \code{index} as character of length 2 for data frames, for further details see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ An object of the same class as the input \code{x}, i.e., a pdata.frame, data.frame or a pseries which is made balanced based on the index variables. The returned data are sorted as a stacked time series. } \description{ This function makes the data balanced, i.e., each individual has the same time periods, by filling in or dropping observations } \details{ (p)data.frame and pseries objects are made balanced, meaning each individual has the same time periods. Depending on the value of \code{balance.type}, the balancing is done in different ways: \itemize{ \item \code{balance.type = "fill"} (default): The union of available time periods over all individuals is taken (w/o \code{NA} values). Missing time periods for an individual are identified and corresponding rows (elements for pseries) are inserted and filled with \code{NA} for the non--index variables (elements for a pseries). This means, only time periods present for at least one individual are inserted, if missing. \item \code{balance.type = "shared.times"}: The intersect of available time periods over all individuals is taken (w/o \code{NA} values). Thus, time periods not available for all individuals are discarded, i. e., only time periods shared by all individuals are left in the result). \item \code{balance.type = "shared.individuals"}: All available time periods are kept and those individuals are dropped for which not all time periods are available, i. e., only individuals shared by all time periods are left in the result (symmetric to \code{"shared.times"}). } The data are not necessarily made consecutive (regular time series with distance 1), because balancedness does not imply consecutiveness. For making the data consecutive, use \code{\link[=make.pconsecutive]{make.pconsecutive()}} (and, optionally, set argument \code{balanced = TRUE} to make consecutive and balanced, see also \strong{Examples} for a comparison of the two functions. Note: Rows of (p)data.frames (elements for pseries) with \code{NA} values in individual or time index are not examined but silently dropped before the data are made balanced. In this case, it cannot be inferred which individual or time period is meant by the missing value(s) (see also \strong{Examples}). Especially, this means: \code{NA} values in the first/last position of the original time periods for an individual are dropped, which are usually meant to depict the beginning and ending of the time series for that individual. Thus, one might want to check if there are any \code{NA} values in the index variables before applying \code{make.pbalanced}, and especially check for \code{NA} values in the first and last position for each individual in original data and, if so, maybe set those to some meaningful begin/end value for the time series. } \examples{ # take data and make it unbalanced # by deletion of 2nd row (2nd time period for first individual) data("Grunfeld", package = "plm") nrow(Grunfeld) # 200 rows Grunfeld_missing_period <- Grunfeld[-2, ] pdim(Grunfeld_missing_period)$balanced # check if balanced: FALSE make.pbalanced(Grunfeld_missing_period) # make it balanced (by filling) make.pbalanced(Grunfeld_missing_period, balance.type = "shared.times") # (shared periods) nrow(make.pbalanced(Grunfeld_missing_period)) nrow(make.pbalanced(Grunfeld_missing_period, balance.type = "shared.times")) # more complex data: # First, make data unbalanced (and non-consecutive) # by deletion of 2nd time period (year 1936) for all individuals # and more time periods for first individual only Grunfeld_unbalanced <- Grunfeld[Grunfeld$year != 1936, ] Grunfeld_unbalanced <- Grunfeld_unbalanced[-c(1,4), ] pdim(Grunfeld_unbalanced)$balanced # FALSE all(is.pconsecutive(Grunfeld_unbalanced)) # FALSE g_bal <- make.pbalanced(Grunfeld_unbalanced) pdim(g_bal)$balanced # TRUE unique(g_bal$year) # all years but 1936 nrow(g_bal) # 190 rows head(g_bal) # 1st individual: years 1935, 1939 are NA # NA in 1st, 3rd time period (years 1935, 1937) for first individual Grunfeld_NA <- Grunfeld Grunfeld_NA[c(1, 3), "year"] <- NA g_bal_NA <- make.pbalanced(Grunfeld_NA) head(g_bal_NA) # years 1935, 1937: NA for non-index vars nrow(g_bal_NA) # 200 # pdata.frame interface pGrunfeld_missing_period <- pdata.frame(Grunfeld_missing_period) make.pbalanced(Grunfeld_missing_period) # pseries interface make.pbalanced(pGrunfeld_missing_period$inv) # comparison to make.pconsecutive g_consec <- make.pconsecutive(Grunfeld_unbalanced) all(is.pconsecutive(g_consec)) # TRUE pdim(g_consec)$balanced # FALSE head(g_consec, 22) # 1st individual: no years 1935/6; 1939 is NA; # other indviduals: years 1935-1954, 1936 is NA nrow(g_consec) # 198 rows g_consec_bal <- make.pconsecutive(Grunfeld_unbalanced, balanced = TRUE) all(is.pconsecutive(g_consec_bal)) # TRUE pdim(g_consec_bal)$balanced # TRUE head(g_consec_bal) # year 1936 is NA for all individuals nrow(g_consec_bal) # 200 rows head(g_bal) # no year 1936 at all nrow(g_bal) # 190 rows } \seealso{ \code{\link[=is.pbalanced]{is.pbalanced()}} to check if data are balanced; \code{\link[=is.pconsecutive]{is.pconsecutive()}} to check if data are consecutive; \code{\link[=make.pconsecutive]{make.pconsecutive()}} to make data consecutive (and, optionally, also balanced).\cr \code{\link[=punbalancedness]{punbalancedness()}} for two measures of unbalancedness, \code{\link[=pdim]{pdim()}} to check the dimensions of a 'pdata.frame' (and other objects), \code{\link[=pvar]{pvar()}} to check for individual and time variation of a 'pdata.frame' (and other objects), \code{\link[=lag]{lag()}} for lagging (and leading) values of a 'pseries' object.\cr \code{\link[=pseries]{pseries()}}, \code{\link[=data.frame]{data.frame()}}, \code{\link[=pdata.frame]{pdata.frame()}}. } \author{ Kevin Tappe } \keyword{attribute} plm/man/Gasoline.Rd0000644000176200001440000000202114124132276013642 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Gasoline} \alias{Gasoline} \title{Gasoline Consumption} \format{ A data frame containing : \describe{ \item{country}{a factor with 18 levels} \item{year}{the year} \item{lgaspcar}{logarithm of motor gasoline consumption per car} \item{lincomep}{logarithm of real per-capita income} \item{lrpmg}{logarithm of real motor gasoline price} \item{lcarpcap}{logarithm of the stock of cars per capita} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ A panel of 18 observations from 1960 to 1978 } \details{ \emph{total number of observations} : 342 \emph{observation} : country \emph{country} : OECD } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BALT:GRIF:83}{plm} } \keyword{datasets} plm/man/cortab.Rd0000644000176200001440000000154014124132276013360 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_cd.R \name{cortab} \alias{cortab} \title{Cross--sectional correlation matrix} \usage{ cortab(x, grouping, groupnames = NULL, value = "statistic", ...) } \arguments{ \item{x}{an object of class \code{pseries}} \item{grouping}{grouping variable,} \item{groupnames}{a character vector of group names,} \item{value}{to complete,} \item{\dots}{further arguments.} } \value{ A matrix with average correlation coefficients within a group (diagonal) and between groups (off-diagonal). } \description{ Computes the cross--sectional correlation matrix } \examples{ data("Grunfeld", package = "plm") pGrunfeld <- pdata.frame(Grunfeld) grp <- c(rep(1, 100), rep(2, 50), rep(3, 50)) # make 3 groups cortab(pGrunfeld$value, grouping = grp, groupnames = c("A", "B", "C")) } \keyword{htest} plm/man/r.squared.Rd0000644000176200001440000000304414124132276014013 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_plm.R \name{r.squared} \alias{r.squared} \title{R squared and adjusted R squared for panel models} \usage{ r.squared(object, model = NULL, type = c("cor", "rss", "ess"), dfcor = FALSE) } \arguments{ \item{object}{an object of class \code{"plm"},} \item{model}{on which transformation of the data the R-squared is to be computed. If \code{NULL}, the transformation used to estimate the model is also used for the computation of R squared,} \item{type}{indicates method which is used to compute R squared. One of\cr \code{"rss"} (residual sum of squares),\cr \code{"ess"} (explained sum of squares), or\cr \code{"cor"} (coefficient of correlation between the fitted values and the response),} \item{dfcor}{if \code{TRUE}, the adjusted R squared is computed.} } \value{ A numerical value. The R squared or adjusted R squared of the model estimated on the transformed data, e. g., for the within model the so called "within R squared". } \description{ This function computes R squared or adjusted R squared for plm objects. It allows to define on which transformation of the data the (adjusted) R squared is to be computed and which method for calculation is used. } \examples{ data("Grunfeld", package = "plm") p <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling") r.squared(p) r.squared(p, dfcor = TRUE) } \seealso{ \code{\link[=plm]{plm()}} for estimation of various models; \code{\link[=summary.plm]{summary.plm()}} which makes use of \code{r.squared}. } \keyword{htest} plm/man/pldv.Rd0000644000176200001440000000544514124132276013063 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_ldv.R \name{pldv} \alias{pldv} \title{Panel estimators for limited dependent variables} \usage{ pldv( formula, data, subset, weights, na.action, model = c("fd", "random", "pooling"), index = NULL, R = 20, start = NULL, lower = 0, upper = +Inf, objfun = c("lsq", "lad"), sample = c("cens", "trunc"), ... ) } \arguments{ \item{formula}{a symbolic description for the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{lm},} \item{weights}{see \code{lm},} \item{na.action}{see \code{lm},} \item{model}{one of \code{"fd"}, \code{"random"}, or \code{"pooling"},} \item{index}{the indexes, see \code{\link[=pdata.frame]{pdata.frame()}},} \item{R}{the number of points for the gaussian quadrature,} \item{start}{a vector of starting values,} \item{lower}{the lower bound for the censored/truncated dependent variable,} \item{upper}{the upper bound for the censored/truncated dependent variable,} \item{objfun}{the objective function for the fixed effect model (\code{model = "fd"}, irrelevant for other values of the \code{model} argument ): one of \code{"lsq"} for least squares (minimise sum of squares of the residuals) and \code{"lad"} for least absolute deviations (minimise sum of absolute values of the residuals),} \item{sample}{\code{"cens"} for a censored (tobit-like) sample, \code{"trunc"} for a truncated sample,} \item{\dots}{further arguments.} } \value{ For \code{model = "fd"}, an object of class \code{c("plm", "panelmodel")}, for \code{model = "random"} and \code{model = "pooling"} an object of class \code{c("maxLik", "maxim")}. } \description{ Fixed and random effects estimators for truncated or censored limited dependent variable } \details{ \code{pldv} computes two kinds of models: a LSQ/LAD estimator for the first-difference model (\code{model = "fd"}) and a maximum likelihood estimator with an assumed normal distribution for the individual effects (\code{model = "random"} or \code{"pooling"}). For maximum-likelihood estimations, \code{pldv} uses internally function \code{\link[maxLik:maxLik]{maxLik::maxLik()}} (from package \CRANpkg{maxLik}). } \examples{ ## as these examples take a bit of time, do not run them automatically \dontrun{ data("Donors", package = "pder") library("plm") pDonors <- pdata.frame(Donors, index = "id") # replicate Landry/Lange/List/Price/Rupp (2010), online appendix, table 5a, models A and B modA <- pldv(donation ~ treatment + prcontr, data = pDonors, model = "random", method = "bfgs") summary(modA) modB <- pldv(donation ~ treatment * prcontr - prcontr, data = pDonors, model = "random", method = "bfgs") summary(modB) } } \references{ \insertRef{HONO:92}{plm} } \author{ Yves Croissant } \keyword{regression} plm/man/model.frame.pdata.frame.Rd0000644000176200001440000000732614340404505016465 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_model.extract.R \name{model.frame.pdata.frame} \alias{model.frame.pdata.frame} \alias{formula.pdata.frame} \alias{model.matrix.plm} \alias{model.matrix.pdata.frame} \title{model.frame and model.matrix for panel data} \usage{ \method{model.frame}{pdata.frame}( formula, data = NULL, ..., lhs = NULL, rhs = NULL, dot = "previous" ) \method{formula}{pdata.frame}(x, ...) \method{model.matrix}{plm}(object, ...) \method{model.matrix}{pdata.frame}( object, model = c("pooling", "within", "Between", "Sum", "between", "mean", "random", "fd"), effect = c("individual", "time", "twoways", "nested"), rhs = 1, theta = NULL, cstcovar.rm = NULL, ... ) } \arguments{ \item{data}{a \code{formula}, see \strong{Details},} \item{\dots}{further arguments.} \item{lhs}{inherited from package \code{\link[Formula:Formula]{Formula::Formula()}} (see there),} \item{rhs}{inherited from package \code{\link[Formula:Formula]{Formula::Formula()}} (see there),} \item{dot}{inherited from package \code{\link[Formula:Formula]{Formula::Formula()}} (see there),} \item{x}{a \code{model.frame}} \item{object, formula}{an object of class \code{"pdata.frame"} or an estimated model object of class \code{"plm"},} \item{model}{one of \code{"pooling"}, \code{"within"}, \code{"Sum"}, \code{"Between"}, \code{"between"}, \verb{"random",} \code{"fd"} and \code{"ht"},} \item{effect}{the effects introduced in the model, one of \code{"individual"}, \code{"time"}, \code{"twoways"} or \code{"nested"},} \item{theta}{the parameter for the transformation if \code{model = "random"},} \item{cstcovar.rm}{remove the constant columns, one of \verb{"none", "intercept", "covariates", "all")},} } \value{ The \code{model.frame} methods return a \code{pdata.frame}.\cr The \code{model.matrix} methods return a \code{matrix}. } \description{ Methods to create model frame and model matrix for panel data. } \details{ The \code{lhs} and \code{rhs} arguments are inherited from \code{Formula}, see there for more details.\cr The \code{model.frame} methods return a \code{pdata.frame} object suitable as an input to plm's \code{model.matrix}.\cr The \code{model.matrix} methods builds a model matrix with transformations performed as specified by the \code{model} and \code{effect} arguments (and \code{theta} if \code{model = "random"} is requested), in this case the supplied \code{data} argument should be a model frame created by plm's \code{model.frame} method. If not, it is tried to construct the model frame from the data. Constructing the model frame first ensures proper \code{NA} handling, see \strong{Examples}. } \examples{ # First, make a pdata.frame data("Grunfeld", package = "plm") pGrunfeld <- pdata.frame(Grunfeld) # then make a model frame from a formula and a pdata.frame form <- inv ~ value mf <- model.frame(pGrunfeld, form) # then construct the (transformed) model matrix (design matrix) # from model frame modmat <- model.matrix(mf, model = "within") ## retrieve model frame and model matrix from an estimated plm object fe_model <- plm(form, data = pGrunfeld, model = "within") model.frame(fe_model) model.matrix(fe_model) # same as constructed before all.equal(mf, model.frame(fe_model), check.attributes = FALSE) # TRUE all.equal(modmat, model.matrix(fe_model), check.attributes = FALSE) # TRUE } \seealso{ \code{\link[=pmodel.response]{pmodel.response()}} for (transformed) response variable.\cr \code{\link[Formula:Formula]{Formula::Formula()}} from package \code{Formula}, especially for the \code{lhs} and \code{rhs} arguments. } \author{ Yves Croissant } \keyword{classes} plm/man/pbnftest.Rd0000644000176200001440000000666614124132276013751 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pbnftest} \alias{pbnftest} \alias{pbnftest.panelmodel} \alias{pbnftest.formula} \title{Modified BNF--Durbin--Watson Test and Baltagi--Wu's LBI Test for Panel Models} \usage{ pbnftest(x, ...) \method{pbnftest}{panelmodel}(x, test = c("bnf", "lbi"), ...) \method{pbnftest}{formula}( x, data, test = c("bnf", "lbi"), model = c("pooling", "within", "random"), ... ) } \arguments{ \item{x}{an object of class \code{"panelmodel"} or of class \code{"formula"},} \item{\dots}{only relevant for formula interface: further arguments to specify the model to test (arguments passed on to plm()), e.g., \code{effect}.} \item{test}{a character indicating the test to be performed, either \code{"bnf"} or \code{"lbi"} for the (modified) BNF statistic or Baltagi--Wu's LBI statistic, respectively,} \item{data}{a \code{data.frame} (only relevant for formula interface),} \item{model}{a character indicating on which type of model the test shall be performed (\code{"pooling"}, \code{"within"}, \code{"random"}, only relevant for formula interface),} } \value{ An object of class \code{"htest"}. } \description{ Tests for AR(1) disturbances in panel models. } \details{ The default, \code{test = "bnf"}, gives the (modified) BNF statistic, the generalised Durbin-Watson statistic for panels. For balanced and consecutive panels, the reference is Bhargava/Franzini/Narendranathan (1982). The modified BNF is given for unbalanced and/or non-consecutive panels (d1 in formula 16 of \insertCite{BALT:WU:99;textual}{plm}). \code{test = "lbi"} yields Baltagi--Wu's LBI statistic \insertCite{BALT:WU:99}{plm}, the locally best invariant test which is based on the modified BNF statistic. No specific variants of these tests are available for random effect models. As the within estimator is consistent also under the random effects assumptions, the test for random effect models is performed by taking the within residuals. No p-values are given for the statistics as their distribution is quite difficult. \insertCite{BHAR:FRAN:NARE:82;textual}{plm} supply tabulated bounds for p = 0.05 for the balanced case and consecutive case. For large N, \insertCite{BHAR:FRAN:NARE:82}{plm} suggest it is sufficient to check whether the BNF statistic is < 2 to test against positive serial correlation. } \examples{ data("Grunfeld", package = "plm") # formula interface, replicate Baltagi/Wu (1999), table 1, test case A: data_A <- Grunfeld[!Grunfeld[["year"]] \%in\% c("1943", "1944"), ] pbnftest(inv ~ value + capital, data = data_A, model = "within") pbnftest(inv ~ value + capital, data = data_A, test = "lbi", model = "within") # replicate Baltagi (2013), p. 101, table 5.1: re <- plm(inv ~ value + capital, data = Grunfeld, model = "random") pbnftest(re) pbnftest(re, test = "lbi") } \references{ \insertRef{BALT:13}{plm} \insertRef{BALT:WU:99}{plm} \insertRef{BHAR:FRAN:NARE:82}{plm} } \seealso{ \code{\link[=pdwtest]{pdwtest()}} for the original Durbin--Watson test using (quasi-)demeaned residuals of the panel model without taking the panel structure into account. \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbsytest]{pbsytest()}}, \code{\link[=pwartest]{pwartest()}} and \code{\link[=pwfdtest]{pwfdtest()}} for other serial correlation tests for panel models. } \author{ Kevin Tappe } \keyword{htest} plm/man/vcovHC.plm.Rd0000644000176200001440000001414414741261755014103 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_vcovG.R \name{vcovHC.plm} \alias{vcovHC.plm} \alias{vcovHC} \alias{vcovHC.pcce} \alias{vcovHC.pgmm} \title{Robust Covariance Matrix Estimators} \usage{ \method{vcovHC}{plm}( x, method = c("arellano", "white1", "white2"), type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), ... ) \method{vcovHC}{pcce}( x, method = c("arellano", "white1", "white2"), type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), cluster = c("group", "time"), ... ) \method{vcovHC}{pgmm}(x, ...) } \arguments{ \item{x}{an object of class \code{"plm"} which should be the result of a random effects or a within model or a model of class \code{"pgmm"} or an object of class \code{"pcce"},} \item{method}{one of \code{"arellano"}, \code{"white1"}, \code{"white2"},} \item{type}{the weighting scheme used, one of \code{"HC0"}, \code{"sss"}, \code{"HC1"}, \code{"HC2"}, \code{"HC3"}, \code{"HC4"}, see Details,} \item{cluster}{one of \code{"group"}, \code{"time"},} \item{\dots}{further arguments.} } \value{ An object of class \code{"matrix"} containing the estimate of the asymptotic covariance matrix of coefficients. } \description{ Robust covariance matrix estimators \emph{a la White} for panel models. } \details{ \code{vcovHC} is a function for estimating a robust covariance matrix of parameters for a fixed effects or random effects panel model according to the White method \insertCite{WHIT:80,WHIT:84b,AREL:87}{plm}. Observations may be clustered by \code{"group"} (\code{"time"}) to account for serial (cross-sectional) correlation. All types assume no intragroup (serial) correlation between errors and allow for heteroskedasticity across groups (time periods). As for the error covariance matrix of every single group of observations, \code{"white1"} allows for general heteroskedasticity but no serial (cross--sectional) correlation; \code{"white2"} is \code{"white1"} restricted to a common variance inside every group (time period) \insertCite{@see @GREE:03, Sec. 13.7.1-2, @GREE:12, Sec. 11.6.1-2 and @WOOL:02, Sec. 10.7.2}{plm}; \code{"arellano"} \insertCite{@see ibid. and the original ref. @AREL:87}{plm} allows a fully general structure w.r.t. heteroskedasticity and serial (cross--sectional) correlation. Weighting schemes specified by \code{type} are analogous to those in \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} in package \CRANpkg{sandwich} and are justified theoretically (although in the context of the standard linear model) by \insertCite{MACK:WHIT:85;textual}{plm} and \insertCite{CRIB:04;textual}{plm} \insertCite{ZEIL:04}{plm}. \code{type = "sss"} employs the small sample correction as used by Stata. The main use of \code{vcovHC} (and the other variance-covariance estimators provided in the package \code{vcovBK}, \code{vcovNW}, \code{vcovDC}, \code{vcovSCC}) is to pass it to plm's own functions like \code{summary}, \code{pwaldtest}, and \code{phtest} or together with testing functions from the \code{lmtest} and \code{car} packages. All of these typically allow passing the \code{vcov} or \code{vcov.} parameter either as a matrix or as a function, e.g., for Wald--type testing: argument \code{vcov.} to \code{coeftest()}, argument \code{vcov} to \code{waldtest()} and other methods in the \CRANpkg{lmtest} package; and argument \code{vcov.} to \code{linearHypothesis()} in the \CRANpkg{car} package (see the examples), see \insertCite{@see also @ZEIL:04}{plm}, 4.1-2, and examples below. A method for \code{pgmm} objects, \code{vcovHC.pgmm}, is also provided and gives the robust variance-covariances matrix, in case of a two-steps panel GMM model with the small-sample correction proposed by \insertCite{WIND:05;textual}{plm}. } \note{ The function \code{pvcovHC} is deprecated. Use \code{vcovHC} for the same functionality. } \examples{ data("Produc", package = "plm") zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model = "random") ## as function input to plm's summary method (with and without additional arguments): summary(zz, vcov = vcovHC) summary(zz, vcov = function(x) vcovHC(x, method="arellano", type="HC1")) ## standard coefficient significance test library(lmtest) coeftest(zz) ## robust significance test, cluster by group ## (robust vs. serial correlation) coeftest(zz, vcov.=vcovHC) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovHC(x, method="arellano", type="HC1")) ## idem, cluster by time period ## (robust vs. cross-sectional correlation) coeftest(zz, vcov.=function(x) vcovHC(x, method="arellano", type="HC1", cluster="group")) ## idem with parameters, pass vcov as a matrix argument coeftest(zz, vcov.=vcovHC(zz, method="arellano", type="HC1")) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovHC) \dontrun{ ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovHC) } ## Robust inference for CCE models data("Produc", package = "plm") ccepmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="p") summary(ccepmod, vcov = vcovHC) ## Robust inference for GMM models data("EmplUK", package="plm") ar <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital) + lag(log(capital), 2) + log(output) + lag(log(output),2) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps") rv <- vcovHC(ar) mtest(ar, order = 2, vcov = rv) } \references{ \insertRef{AREL:87}{plm} \insertRef{CRIB:04}{plm} \insertRef{GREE:03}{plm} \insertRef{GREE:12}{plm} \insertRef{MACK:WHIT:85}{plm} \insertRef{WIND:05}{plm} \insertRef{WHIT:84b}{plm} chap. 6 \insertRef{WHIT:80}{plm} \insertRef{WOOL:02}{plm} \insertRef{ZEIL:04}{plm} } \seealso{ \code{\link[sandwich:vcovHC]{sandwich::vcovHC()}} from the \CRANpkg{sandwich} package for weighting schemes (\code{type} argument). } \author{ Giovanni Millo & Yves Croissant } \keyword{regression} plm/man/EmplUK.Rd0000644000176200001440000000121714124132276013244 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{EmplUK} \alias{EmplUK} \title{Employment and Wages in the United Kingdom} \format{ A data frame containing : \describe{ \item{firm}{firm index} \item{year}{year} \item{sector}{the sector of activity} \item{emp}{employment} \item{wage}{wages} \item{capital}{capital} \item{output}{output} } } \source{ \insertRef{AREL:BOND:91}{plm} } \description{ An unbalanced panel of 140 observations from 1976 to 1984 } \details{ \emph{total number of observations} : 1031 \emph{observation} : firms \emph{country} : United Kingdom } \keyword{datasets} plm/man/cipstest.Rd0000644000176200001440000000420014367674747013767 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_cips.R \name{cipstest} \alias{cipstest} \title{Cross-sectionally Augmented IPS Test for Unit Roots in Panel Models} \usage{ cipstest( x, lags = 2L, type = c("trend", "drift", "none"), model = c("cmg", "mg", "dmg"), truncated = FALSE, ... ) } \arguments{ \item{x}{an object of class \code{"pseries"},} \item{lags}{integer, lag order for Dickey-Fuller augmentation,} \item{type}{one of \code{"trend"} (default), \code{"drift"}, \code{"none"},} \item{model}{one of \code{"cmg"} (default), \code{"mg"}, \code{"dmg"},} \item{truncated}{logical, specifying whether to calculate the truncated version of the test (default: \code{FALSE}),} \item{\dots}{further arguments passed to \code{critvals.cips} (non-exported function).} } \value{ An object of class \code{"htest"}. } \description{ Cross-sectionally augmented Im, Pesaran and Shin (IPS) test for unit roots in panel models. } \details{ Pesaran's \insertCite{pes07}{plm} cross-sectionally augmented version of the IPS unit root test \insertCite{IM:PESAR:SHIN:03}{plm} (H0: \code{pseries} has a unit root) is a so-called second-generation panel unit root test: it is in fact robust against cross-sectional dependence, provided that the default \code{model="cmg"} is calculated. Else one can obtain the standard (\code{model="mg"}) or cross-sectionally demeaned (\code{model="dmg"}) versions of the IPS test. Argument \code{type} controls how the test is executed: \itemize{ \item \code{"none"}: no intercept, no trend (Case I in \insertCite{pes07}{plm}), \item \code{"drift"}: with intercept, no trend (Case II), \item \code{"trend"} (default): with intercept, with trend (Case III). } } \examples{ data("Produc", package = "plm") Produc <- pdata.frame(Produc, index=c("state", "year")) ## check whether the gross state product (gsp) is trend-stationary cipstest(Produc$gsp, type = "trend") } \references{ \insertAllCited{} } \seealso{ \code{\link[=purtest]{purtest()}}, \code{\link[=phansitest]{phansitest()}} } \author{ Giovanni Millo } \keyword{htest} plm/man/pdwtest.Rd0000644000176200001440000000510514124132276013601 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_serial.R \name{pdwtest} \alias{pdwtest} \alias{pdwtest.panelmodel} \alias{pdwtest.formula} \title{Durbin--Watson Test for Panel Models} \usage{ pdwtest(x, ...) \method{pdwtest}{panelmodel}(x, ...) \method{pdwtest}{formula}(x, data, ...) } \arguments{ \item{x}{an object of class \code{"panelmodel"} or of class \code{"formula"},} \item{\dots}{further arguments to be passed on to \code{dwtest}, e.g., \code{alternative}, see \code{\link[lmtest:dwtest]{lmtest::dwtest()}} for further details.} \item{data}{a \code{data.frame},} } \value{ An object of class \code{"htest"}. } \description{ Test of serial correlation for (the idiosyncratic component of) the errors in panel models. } \details{ This Durbin--Watson test uses the auxiliary model on (quasi-)demeaned data taken from a model of class \code{plm} which may be a \code{pooling} (the default), \code{random} or \code{within} model. It performs a Durbin--Watson test (using \code{dwtest} from package \CRANpkg{lmtest} on the residuals of the (quasi-)demeaned model, which should be serially uncorrelated under the null of no serial correlation in idiosyncratic errors. The function takes the demeaned data, estimates the model and calls \code{dwtest}. Thus, this test does not take the panel structure of the residuals into consideration; it shall not be confused with the generalized Durbin-Watson test for panels in \code{pbnftest}. } \examples{ data("Grunfeld", package = "plm") g <- plm(inv ~ value + capital, data = Grunfeld, model="random") pdwtest(g) pdwtest(g, alternative="two.sided") ## formula interface pdwtest(inv ~ value + capital, data=Grunfeld, model="random") } \references{ \insertRef{DURB:WATS:50}{plm} \insertRef{DURB:WATS:51}{plm} \insertRef{DURB:WATS:71}{plm} \insertRef{WOOL:02}{plm} \insertRef{WOOL:10}{plm} } \seealso{ \code{\link[lmtest:dwtest]{lmtest::dwtest()}} for the Durbin--Watson test in \CRANpkg{lmtest}, \code{\link[=pbgtest]{pbgtest()}} for the analogous Breusch--Godfrey test for panel models, \code{\link[lmtest:bgtest]{lmtest::bgtest()}} for the Breusch--Godfrey test for serial correlation in the linear model. \code{\link[=pbltest]{pbltest()}}, \code{\link[=pbsytest]{pbsytest()}}, \code{\link[=pwartest]{pwartest()}} and \code{\link[=pwfdtest]{pwfdtest()}} for other serial correlation tests for panel models. For the Durbin-Watson test generalized to panel data models see \code{\link[=pbnftest]{pbnftest()}}. } \author{ Giovanni Millo } \keyword{htest} plm/man/punbalancedness.Rd0000644000176200001440000001247314352266132015264 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_misc.R \name{punbalancedness} \alias{punbalancedness} \alias{punbalancedness.pdata.frame} \alias{punbalancedness.data.frame} \alias{punbalancedness.panelmodel} \title{Measures for Unbalancedness of Panel Data} \usage{ punbalancedness(x, ...) \method{punbalancedness}{pdata.frame}(x, ...) \method{punbalancedness}{data.frame}(x, index = NULL, ...) \method{punbalancedness}{panelmodel}(x, ...) } \arguments{ \item{x}{a \code{panelmodel}, a \code{data.frame}, or a \code{pdata.frame} object,} \item{\dots}{further arguments.} \item{index}{only relevant for \code{data.frame} interface, for details see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ A named numeric containing either two or three entries, depending on the panel structure inputted: \itemize{ \item For the two-dimensional panel structure, the entries are called \code{gamma} and \code{nu}, \item For a nested panel structure, the entries are called \code{c1}, \code{c2}, \code{c3}. } } \description{ This function reports unbalancedness measures for panel data as defined in \insertCite{AHRE:PINC:81;textual}{plm} and \insertCite{BALT:SONG:JUNG:01;textual}{plm}. } \details{ \code{punbalancedness} returns measures for the unbalancedness of a panel data set. \itemize{ \item For two-dimensional data:\cr The two measures of \insertCite{AHRE:PINC:81;textual}{plm} are calculated, called "gamma" (\eqn{\gamma}) and "nu" (\eqn{\nu}). } If the panel data are balanced, both measures equal 1. The more "unbalanced" the panel data, the lower the measures (but > 0). The upper and lower bounds as given in \insertCite{AHRE:PINC:81;textual}{plm} are:\cr \eqn{0 < \gamma, \nu \le 1}, and for \eqn{\nu} more precisely \eqn{\frac{1}{n} < \nu \le 1}{1/n < \nu \le 1}, with \eqn{n} being the number of individuals (as in \code{pdim(x)$nT$n}). \itemize{ \item For nested panel data (meaning including a grouping variable):\cr The extension of the above measures by \insertCite{BALT:SONG:JUNG:01;textual}{plm}, p. 368, are calculated:\cr \itemize{ \item c1: measure of subgroup (individual) unbalancedness, \item c2: measure of time unbalancedness, \item c3: measure of group unbalancedness due to each group size. } } Values are 1 if the data are balanced and become smaller as the data become more unbalanced. An application of the measure "gamma" is found in e. g. \insertCite{BALT:SONG:JUNG:01;textual}{plm}, pp. 488-491, and \insertCite{BALT:CHAN:94;textual}{plm}, pp. 78--87, where it is used to measure the unbalancedness of various unbalanced data sets used for Monte Carlo simulation studies. Measures c1, c2, c3 are used for similar purposes in \insertCite{BALT:SONG:JUNG:01;textual}{plm}. In the two-dimensional case, \code{punbalancedness} uses output of \code{\link[=pdim]{pdim()}} to calculate the two unbalancedness measures, so inputs to \code{punbalancedness} can be whatever \code{pdim} works on. \code{pdim} returns detailed information about the number of individuals and time observations (see \code{\link[=pdim]{pdim()}}). } \note{ Calling \code{punbalancedness} on an estimated \code{panelmodel} object and on the corresponding \verb{(p)data.frame} used for this estimation does not necessarily yield the same result (true also for \code{pdim}). When called on an estimated \code{panelmodel}, the number of observations (individual, time) actually used for model estimation are taken into account. When called on a \verb{(p)data.frame}, the rows in the \verb{(p)data.frame} are considered, disregarding any \code{NA} values in the dependent or independent variable(s) which would be dropped during model estimation. } \examples{ # Grunfeld is a balanced panel, Hedonic is an unbalanced panel data(list=c("Grunfeld", "Hedonic"), package="plm") # Grunfeld has individual and time index in first two columns punbalancedness(Grunfeld) # c(1,1) indicates balanced panel pdim(Grunfeld)$balanced # TRUE # Hedonic has individual index in column "townid" (in last column) punbalancedness(Hedonic, index="townid") # c(0.472, 0.519) pdim(Hedonic, index="townid")$balanced # FALSE # punbalancedness on estimated models plm_mod_pool <- plm(inv ~ value + capital, data = Grunfeld) punbalancedness(plm_mod_pool) plm_mod_fe <- plm(inv ~ value + capital, data = Grunfeld[1:99, ], model = "within") punbalancedness(plm_mod_fe) # replicate results for panel data design no. 1 in Ahrens/Pincus (1981), p. 234 ind_d1 <- c(1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5) time_d1 <- c(1,2,3,1,2,3,1,2,3,4,5,1,2,3,4,5,6,7,1,2,3,4,5,6,7) df_d1 <- data.frame(individual = ind_d1, time = time_d1) punbalancedness(df_d1) # c(0.868, 0.887) # example for a nested panel structure with a third index variable # specifying a group (states are grouped by region) and without grouping data("Produc", package = "plm") punbalancedness(Produc, index = c("state", "year", "region")) punbalancedness(Produc, index = c("state", "year")) } \references{ \insertRef{AHRE:PINC:81}{plm} \insertRef{BALT:CHAN:94}{plm} \insertRef{BALT:SONG:JUNG:01}{plm} \insertRef{BALT:SONG:JUNG:02}{plm} } \seealso{ \code{\link[=nobs]{nobs()}}, \code{\link[=pdim]{pdim()}}, \code{\link[=pdata.frame]{pdata.frame()}} } \author{ Kevin Tappe } \keyword{attribute} plm/man/plm.fast.Rd0000644000176200001440000001215714340404505013635 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_transformations_collapse.R \name{plm.fast} \alias{plm.fast} \title{Option to Switch On/Off Fast Data Transformations} \description{ A significant speed up can be gained by using fast (panel) data transformation functions from package \code{collapse}. An additional significant speed up for the two-way fixed effects case can be achieved if package \code{fixest} or \code{lfe} is installed (package \code{collapse} needs to be installed for the fast mode in any case). } \details{ By default, this speed up is enabled. Option \code{plm.fast} can be used to enable/disable the speed up. The option is evaluated prior to execution of supported transformations (see below), so \code{option("plm.fast" = TRUE)} enables the speed up while \code{option("plm.fast" = FALSE)} disables the speed up. To have it always switched off, put \code{options("plm.fast" = FALSE)} in your .Rprofile file. See \strong{Examples} for how to use the option and for a benchmarking example. For long, package \code{plm} used base R implementations and R-based code. The package \code{collapse} provides fast data transformation functions written in C/C++, among them some especially suitable for panel data. Having package \code{collapse} installed is a requirement for the speed up, so this package is a hard dependency for package \code{plm}. Availability of packages \code{fixest} and \code{lfe} is checked for once when package plm is attached and the additional speed up for the two-way fixed effect case is enabled automatically (\code{fixest} wins over \code{lfe}), given one of the packages is detected and \code{options("plm.fast" = TRUE)} (default) is set. If so, the packages' fast algorithms to partial out fixed effects are used (\code{fixest::demean} (via \code{collapse::fhdwithin}), \code{lfe::demeanlist}). Both packages are 'Suggests' dependencies. Users might experience neglectable numerical differences between enabled and disabled fast mode and base R implementation, depending on the platform and the additional packages installed. Currently, these basic functions benefit from the speed-up, used as building blocks in most model estimation functions, e.g., in \code{plm} (more functions are under investigation): \itemize{ \item between, \item Between, \item Sum, \item Within, \item lag, lead, and diff, \item pseriesfy, \item pdiff (internal function). } } \examples{ \dontrun{ ### A benchmark of plm without and with speed-up library("plm") library("collapse") library("microbenchmark") rm(list = ls()) data("wlddev", package = "collapse") form <- LIFEEX ~ PCGDP + GINI # produce big data set (taken from collapse's vignette) wlddevsmall <- get_vars(wlddev, c("iso3c","year","OECD","PCGDP","LIFEEX","GINI","ODA")) wlddevsmall$iso3c <- as.character(wlddevsmall$iso3c) data <- replicate(100, wlddevsmall, simplify = FALSE) rm(wlddevsmall) uniquify <- function(x, i) { x$iso3c <- paste0(x$iso3c, i) x } data <- unlist2d(Map(uniquify, data, as.list(1:100)), idcols = FALSE) data <- pdata.frame(data, index = c("iso3c", "year")) pdim(data) # Balanced Panel: n = 21600, T = 59, N = 1274400 // but many NAs # data <- na.omit(data) # pdim(data) # Unbalanced Panel: n = 13300, T = 1-31, N = 93900 times <- 1 # no. of repetitions for benchmark - this takes quite long! onewayFE <- microbenchmark( {options("plm.fast" = FALSE); plm(form, data = data, model = "within")}, {options("plm.fast" = TRUE); plm(form, data = data, model = "within")}, times = times) summary(onewayFE, unit = "relative") ## two-ways FE benchmark requires pkg fixest and lfe ## (End-users shall only set option plm.fast. Option plm.fast.pkg.FE.tw shall ## _not_ be set by the end-user, it is determined automatically when pkg plm ## is attached; however, it needs to be set explicitly in this example for the ## benchmark.) if(requireNamespace("fixest", quietly = TRUE) && requireNamespace("lfe", quietly = TRUE)) { twowayFE <- microbenchmark( {options("plm.fast" = FALSE); plm(form, data = data, model = "within", effect = "twoways")}, {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "collapse"); plm(form, data = data, model = "within", effect = "twoways")}, {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "fixest"); plm(form, data = data, model = "within", effect = "twoways")}, {options("plm.fast" = TRUE, "plm.fast.pkg.FE.tw" = "lfe"); plm(form, data = data, model = "within", effect = "twoways")}, times = times) summary(twowayFE, unit = "relative") } onewayRE <- microbenchmark( {options("plm.fast" = FALSE); plm(form, data = data, model = "random")}, {options("plm.fast" = TRUE); plm(form, data = data, model = "random")}, times = times) summary(onewayRE, unit = "relative") twowayRE <- microbenchmark( {options("plm.fast" = FALSE); plm(form, data = data, model = "random", effect = "twoways")}, {options("plm.fast" = TRUE); plm(form, data = data, model = "random", effect = "twoways")}, times = times) summary(twowayRE, unit = "relative") } } \keyword{manip} \keyword{sysdata} plm/man/SumHes.Rd0000644000176200001440000000150314124132276013311 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{SumHes} \alias{SumHes} \title{The Penn World Table, v. 5} \format{ A data frame containing : \describe{ \item{year}{the year} \item{country}{the country name (factor)} \item{opec}{OPEC member?} \item{com}{communist regime? } \item{pop}{country's population (in thousands)} \item{gdp}{real GDP per capita (in 1985 US dollars)} \item{sr}{saving rate (in percent)}} } \source{ Online supplements to Hayashi (2000). \url{http://fhayashi.fc2web.com/datasets.htm} } \description{ A panel of 125 observations from 1960 to 1985 } \details{ \emph{total number of observations} : 3250 \emph{observation} : country \emph{country} : World } \references{ \insertRef{HAYA:00}{plm} \insertRef{SUMM:HEST:91}{plm} } \keyword{datasets} plm/man/Produc.Rd0000644000176200001440000000225314124132276013344 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Produc} \alias{Produc} \title{US States Production} \format{ A data frame containing : \describe{ \item{state}{the state} \item{year}{the year} \item{region}{the region} \item{pcap}{public capital stock} \item{hwy}{highway and streets} \item{water}{water and sewer facilities} \item{util}{other public buildings and structures} \item{pc}{private capital stock} \item{gsp}{gross state product} \item{emp}{labor input measured by the employment in non--agricultural payrolls} \item{unemp}{state unemployment rate} } } \source{ Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} } \description{ A panel of 48 observations from 1970 to 1986 } \details{ \emph{total number of observations} : 816 \emph{observation} : regional \emph{country} : United States } \references{ \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} \insertRef{BALT:PINN:95}{plm} \insertRef{MUNN:90}{plm} } \keyword{datasets} plm/man/plm-deprecated.Rd0000644000176200001440000000330214377621345015004 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/deprecated.R \name{plm-deprecated} \alias{plm-deprecated} \alias{detect_lin_dep} \alias{pvcovHC} \alias{plm.data} \alias{dynformula} \alias{formula.dynformula} \alias{print.dynformula} \title{Deprecated functions of plm} \usage{ pvcovHC(x, ...) plm.data(x, indexes = NULL) dynformula(formula, lag.form = NULL, diff.form = NULL, log.form = NULL) \method{formula}{dynformula}(x, ...) \method{print}{dynformula}(x, ...) } \arguments{ \item{x}{an object of class \code{"plm"},} \item{\dots}{further arguments.} \item{indexes}{a vector (of length one or two) indicating the (individual and time) indexes (see Details);} \item{formula}{a formula,} \item{lag.form}{a list containing the lag structure of each variable in the formula,} \item{diff.form}{a vector (or a list) of logical values indicating whether variables should be differenced,} \item{log.form}{a vector (or a list) of logical values indicating whether variables should be in logarithms.} \item{data}{a \code{data.frame},} } \description{ \code{dynformula}, \code{pht}, \code{plm.data}, and \code{pvcovHC} are deprecated functions which could be removed from \pkg{plm} in a near future. } \details{ \code{dynformula} was used to construct a dynamic formula which was the first argument of \code{pgmm}. \code{pgmm} uses now multi-part formulas. \code{pht} estimates the Hausman-Taylor model, which can now be estimated using the more general \code{plm} function. \code{plm.data} is replaced by \code{pdata.frame}. \code{pvcovHC} is replaced by \code{vcovHC}. \code{detect_lin_dep} was renamed to \code{detect.lindep}. } plm/man/pdim.Rd0000644000176200001440000000677114340404505013047 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tool_pdata.frame.R \name{pdim} \alias{pdim} \alias{pdim.default} \alias{pdim.data.frame} \alias{pdim.pdata.frame} \alias{pdim.pseries} \alias{pdim.pggls} \alias{pdim.pcce} \alias{pdim.pmg} \alias{pdim.pgmm} \alias{pdim.panelmodel} \alias{print.pdim} \title{Check for the Dimensions of the Panel} \usage{ pdim(x, ...) \method{pdim}{default}(x, y, ...) \method{pdim}{data.frame}(x, index = NULL, ...) \method{pdim}{pdata.frame}(x, ...) \method{pdim}{pseries}(x, ...) \method{pdim}{pggls}(x, ...) \method{pdim}{pcce}(x, ...) \method{pdim}{pmg}(x, ...) \method{pdim}{pgmm}(x, ...) \method{pdim}{panelmodel}(x, ...) \method{print}{pdim}(x, ...) } \arguments{ \item{x}{a \code{data.frame}, a \code{pdata.frame}, a \code{pseries}, a \code{panelmodel}, or a \code{pgmm} object,} \item{\dots}{further arguments.} \item{y}{a vector,} \item{index}{see \code{\link[=pdata.frame]{pdata.frame()}},} } \value{ An object of class \code{pdim} containing the following elements: \item{nT}{a list containing \code{n}, the number of individuals, \code{T}, the number of time observations, \code{N} the total number of observations,} \item{Tint}{a list containing two vectors (of type integer): \code{Ti} gives the number of observations for each individual and \code{nt} gives the number of individuals observed for each period,} \item{balanced}{a logical value: \code{TRUE} for a balanced panel, \code{FALSE} for an unbalanced panel,} \item{panel.names}{a list of character vectors: \code{id.names} contains the names of each individual and \code{time.names} contains the names of each period.} } \description{ This function checks the number of individuals and time observations in the panel and whether it is balanced or not. } \details{ \code{pdim} is called by the estimation functions and can be also used stand-alone. } \note{ Calling \code{pdim} on an estimated \code{panelmodel} object and on the corresponding \verb{(p)data.frame} used for this estimation does not necessarily yield the same result. When called on an estimated \code{panelmodel}, the number of observations (individual, time) actually used for model estimation are taken into account. When called on a \verb{(p)data.frame}, the rows in the \verb{(p)data.frame} are considered, disregarding any \code{NA} values in the dependent or independent variable(s) which would be dropped during model estimation. } \examples{ # There are 595 individuals data("Wages", package = "plm") pdim(Wages, 595) # Gasoline contains two variables which are individual and time # indexes and are the first two variables data("Gasoline", package="plm") pdim(Gasoline) # Hedonic is an unbalanced panel, townid is the individual index data("Hedonic", package = "plm") pdim(Hedonic, "townid") # An example of the panelmodel method data("Produc", package = "plm") z <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp,data=Produc, model="random", subset = gsp > 5000) pdim(z) } \seealso{ \code{\link[=is.pbalanced]{is.pbalanced()}} to just determine balancedness of data (slightly faster than \code{pdim}),\cr \code{\link[=punbalancedness]{punbalancedness()}} for measures of unbalancedness,\cr \code{\link[=nobs]{nobs()}}, \code{\link[=pdata.frame]{pdata.frame()}},\cr \code{\link[=pvar]{pvar()}} to check for each variable if it varies cross-sectionally and over time. } \author{ Yves Croissant } \keyword{attribute} plm/man/Crime.Rd0000644000176200001440000000717114124132276013153 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plm-package.R \docType{data} \name{Crime} \alias{Crime} \title{Crime in North Carolina} \format{ A data frame containing : \describe{ \item{county}{county identifier} \item{year}{year from 1981 to 1987} \item{crmrte}{crimes committed per person} \item{prbarr}{'probability' of arrest} \item{prbconv}{'probability' of conviction} \item{prbpris}{'probability' of prison sentence} \item{avgsen}{average sentence, days} \item{polpc}{police per capita} \item{density}{people per square mile} \item{taxpc}{tax revenue per capita} \item{region}{factor. One of 'other', 'west' or 'central'.} \item{smsa}{factor. (Also called "urban".) Does the individual reside in a SMSA (standard metropolitan statistical area)?} \item{pctmin}{percentage minority in 1980} \item{wcon}{weekly wage in construction} \item{wtuc}{weekly wage in transportation, utilities, communications} \item{wtrd}{weekly wage in wholesale and retail trade} \item{wfir}{weekly wage in finance, insurance and real estate} \item{wser}{weekly wage in service industry} \item{wmfg}{weekly wage in manufacturing} \item{wfed}{weekly wage in federal government} \item{wsta}{weekly wage in state government} \item{wloc}{weekly wage in local government} \item{mix}{offence mix: face-to-face/other} \item{pctymle}{percentage of young males (between ages 15 to 24)} \item{lcrmrte}{log of crimes committed per person} \item{lprbarr}{log of 'probability' of arrest} \item{lprbconv}{log of 'probability' of conviction} \item{lprbpris}{log of 'probability' of prison sentence} \item{lavgsen}{log of average sentence, days} \item{lpolpc}{log of police per capita} \item{ldensity}{log of people per square mile} \item{ltaxpc}{log of tax revenue per capita} \item{lpctmin}{log of percentage minority in 1980} \item{lwcon}{log of weekly wage in construction} \item{lwtuc}{log of weekly wage in transportation, utilities, communications} \item{lwtrd}{log of weekly wage in wholesale and retail trade} \item{lwfir}{log of weekly wage in finance, insurance and real estate} \item{lwser}{log of weekly wage in service industry} \item{lwmfg}{log of weekly wage in manufacturing} \item{lwfed}{log of weekly wage in federal government} \item{lwsta}{log of weekly wage in state government} \item{lwloc}{log of weekly wage in local government} \item{lmix}{log of offence mix: face-to-face/other} \item{lpctymle}{log of percentage of young males (between ages 15 to 24)}} } \source{ Journal of Applied Econometrics Data Archive (complements Baltagi (2006)): \url{http://qed.econ.queensu.ca/jae/2006-v21.4/baltagi/} Online complements to Baltagi (2001): \url{https://www.wiley.com/legacy/wileychi/baltagi/} Online complements to Baltagi (2013): \url{https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=4338&itemId=1118672321&resourceId=13452} See also Journal of Applied Econometrics data archive entry for Baltagi (2006) at \url{http://qed.econ.queensu.ca/jae/2006-v21.4/baltagi/}. } \description{ a panel of 90 observational units (counties) from 1981 to 1987 } \details{ \emph{total number of observations} : 630 \emph{observation} : regional \emph{country} : United States The variables l* (lcrmrte, lprbarr, ...) contain the pre-computed logarithms of the base variables as found in the original data set. Note that these values slightly differ from what R's log() function yields for the base variables. In order to reproduce examples from the literature, the pre-computed logs need to be used, otherwise the results differ slightly. } \references{ \insertRef{CORN:TRUM:94}{plm} \insertRef{BALT:06}{plm} \insertRef{BALT:01}{plm} \insertRef{BALT:13}{plm} } \keyword{datasets} plm/man/pcce.Rd0000644000176200001440000000650214340404505013020 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/est_cce.R \name{pcce} \alias{pcce} \alias{summary.pcce} \alias{print.summary.pcce} \alias{residuals.pcce} \alias{model.matrix.pcce} \alias{pmodel.response.pcce} \title{Common Correlated Effects estimators} \usage{ pcce( formula, data, subset, na.action, model = c("mg", "p"), index = NULL, trend = FALSE, ... ) \method{summary}{pcce}(object, vcov = NULL, ...) \method{print}{summary.pcce}( x, digits = max(3, getOption("digits") - 2), width = getOption("width"), ... ) \method{residuals}{pcce}(object, type = c("defactored", "standard"), ...) \method{model.matrix}{pcce}(object, ...) \method{pmodel.response}{pcce}(object, ...) } \arguments{ \item{formula}{a symbolic description of the model to be estimated,} \item{data}{a \code{data.frame},} \item{subset}{see \code{lm},} \item{na.action}{see \code{lm},} \item{model}{one of \code{"mg"}, \code{"p"}, selects Mean Groups vs. Pooled CCE model,} \item{index}{the indexes, see \code{\link[=pdata.frame]{pdata.frame()}},} \item{trend}{logical specifying whether an individual-specific trend has to be included,} \item{\dots}{further arguments.} \item{object, x}{an object of class \code{"pcce"},} \item{vcov}{a variance-covariance matrix furnished by the user or a function to calculate one,} \item{digits}{digits,} \item{width}{the maximum length of the lines in the print output,} \item{type}{one of \code{"defactored"} or \code{"standard"},} } \value{ An object of class \code{c("pcce", "panelmodel")} containing: \item{coefficients}{the vector of coefficients,} \item{residuals}{the vector of (defactored) residuals,} \item{stdres}{the vector of (raw) residuals,} \item{tr.model}{the transformed data after projection on H,} \item{fitted.values}{the vector of fitted values,} \item{vcov}{the covariance matrix of the coefficients,} \item{df.residual}{degrees of freedom of the residuals,} \item{model}{a data.frame containing the variables used for the estimation,} \item{call}{the call,} \item{indcoef}{the matrix of individual coefficients from separate time series regressions,} \item{r.squared}{numeric, the R squared.} } \description{ Common Correlated Effects Mean Groups (CCEMG) and Pooled (CCEP) estimators for panel data with common factors (balanced or unbalanced) } \details{ \code{pcce} is a function for the estimation of linear panel models by the Common Correlated Effects Mean Groups or Pooled estimator, consistent under the hypothesis of unobserved common factors and idiosyncratic factor loadings. The CCE estimator works by augmenting the model by cross-sectional averages of the dependent variable and regressors in order to account for the common factors, and adding individual intercepts and possibly trends. } \examples{ data("Produc", package = "plm") ccepmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="p") summary(ccepmod) summary(ccepmod, vcov = vcovHC) # use argument vcov for robust std. errors ccemgmod <- pcce(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, model="mg") summary(ccemgmod) } \references{ \insertRef{kappesyam11}{plm} \insertRef{HOLL:PESA:YAMA:10}{plm} } \author{ Giovanni Millo } \keyword{regression} plm/DESCRIPTION0000644000176200001440000000603314742464565012573 0ustar liggesusersPackage: plm Version: 2.6-5 Date: 2025-01-16 Title: Linear Models for Panel Data Authors@R: c(person(given = "Yves", family = "Croissant", role = c("aut"), email = "yves.croissant@univ-reunion.fr"), person(given = "Giovanni", family = "Millo", role = c("aut"), email = "giovanni.millo@deams.units.it"), person(given = "Kevin", family = "Tappe", role = c("aut", "cre"), email = "kevin.tappe@bwi.uni-stuttgart.de"), person(given = "Ott", family = "Toomet", role = "ctb", email = "otoomet@gmail.com"), person(given = "Christian", family = "Kleiber", role = "ctb", email = "Christian.Kleiber@unibas.ch"), person(given = "Achim", family = "Zeileis", role = "ctb", email = "Achim.Zeileis@R-project.org"), person(given = "Arne", family = "Henningsen", role = "ctb", email = "arne.henningsen@googlemail.com"), person(given = "Liviu", family = "Andronic", role = "ctb"), person(given = "Nina", family = "Schoenfelder", role = "ctb")) Depends: R (>= 3.2.0) Imports: MASS, bdsmatrix, collapse (>= 1.8.9), zoo, nlme, sandwich, lattice, lmtest, maxLik, Rdpack, Formula, stats Suggests: AER, car, statmod, urca, pder, texreg, knitr, rmarkdown, fixest, lfe Description: A set of estimators for models and (robust) covariance matrices, and tests for panel data econometrics, including within/fixed effects, random effects, between, first-difference, nested random effects as well as instrumental-variable (IV) and Hausman-Taylor-style models, panel generalized method of moments (GMM) and general FGLS models, mean groups (MG), demeaned MG, and common correlated effects (CCEMG) and pooled (CCEP) estimators with common factors, variable coefficients and limited dependent variables models. Test functions include model specification, serial correlation, cross-sectional dependence, panel unit root and panel Granger (non-)causality. Typical references are general econometrics text books such as Baltagi (2021), Econometric Analysis of Panel Data (), Hsiao (2014), Analysis of Panel Data (), and Croissant and Millo (2018), Panel Data Econometrics with R (). License: GPL (>= 2) VignetteBuilder: knitr URL: https://cran.r-project.org/package=plm, https://github.com/ycroissant/plm BugReports: https://github.com/ycroissant/plm/issues RoxygenNote: 7.3.2 RdMacros: Rdpack Encoding: UTF-8 NeedsCompilation: no Packaged: 2025-01-16 16:27:55 UTC; kevin Author: Yves Croissant [aut], Giovanni Millo [aut], Kevin Tappe [aut, cre], Ott Toomet [ctb], Christian Kleiber [ctb], Achim Zeileis [ctb], Arne Henningsen [ctb], Liviu Andronic [ctb], Nina Schoenfelder [ctb] Maintainer: Kevin Tappe Repository: CRAN Date/Publication: 2025-01-17 14:30:12 UTC